feat: add mdtodo web-probe commands (#898)
Co-authored-by: Codex <codex@noreply.local>
This commit is contained in:
@@ -779,6 +779,11 @@ function compactProjectManagementSample(value) {
|
||||
selectedFileRef: value.selectedFileRef ?? null,
|
||||
selectedTaskRef: value.selectedTaskRef ?? null,
|
||||
selectedTaskStatus: value.selectedTaskStatus ?? null,
|
||||
sourceSelectVisible: value.sourceSelectVisible === true,
|
||||
fileSelectVisible: value.fileSelectVisible === true,
|
||||
sourceConfigVisible: value.sourceConfigVisible === true,
|
||||
taskEditorVisible: value.taskEditorVisible === true,
|
||||
newTaskDraftVisible: value.newTaskDraftVisible === true,
|
||||
taskStatusCounts: value.taskStatusCounts && typeof value.taskStatusCounts === "object" ? value.taskStatusCounts : {},
|
||||
launchButtonVisible: value.launchButtonVisible === true,
|
||||
launchButtonEnabled: value.launchButtonEnabled === true,
|
||||
@@ -999,7 +1004,7 @@ function buildProjectManagementReport(samples, control, network, pagePerformance
|
||||
const pageKindCounts = countBy(projectSamples.map((sample) => sample.projectManagement?.pageKind).filter(Boolean));
|
||||
const latestTaskStatusCounts = latestProject?.taskStatusCounts && typeof latestProject.taskStatusCounts === "object" ? latestProject.taskStatusCounts : {};
|
||||
const commandRows = projectManagementCommandRows(control, config);
|
||||
const launchCommands = commandRows.filter((item) => item.type === "launchWorkbenchFromTask");
|
||||
const launchCommands = commandRows.filter((item) => item.type === "launchWorkbenchFromTask" || item.type === "launchWorkbenchFromMdtodo");
|
||||
const launchSuccess = launchCommands.filter((item) => item.phase === "completed" && Number(item.launchStatus ?? 0) >= 200 && Number(item.launchStatus ?? 0) < 300);
|
||||
const launchFailed = launchCommands.filter((item) => item.phase === "failed" || Number(item.launchStatus ?? 200) >= 400);
|
||||
const projectApiEvents = projectManagementNetworkRows(network, config);
|
||||
@@ -1155,8 +1160,9 @@ function compactProjectManagementForOutput(report) {
|
||||
|
||||
function projectManagementCommandRows(control, config) {
|
||||
const allowed = new Set(config?.commandAllowlist || []);
|
||||
const mdtodoCommandTypes = new Set(["gotoProjectMdtodo", "openMdtodoSourceConfig", "configureMdtodoHwpodSource", "probeMdtodoSource", "reindexMdtodoSource", "expandMdtodoTask", "editMdtodoTaskTitle", "editMdtodoTaskBody", "toggleMdtodoTaskStatus", "addMdtodoRootTask", "addMdtodoSubTask", "continueMdtodoTask", "deleteMdtodoTask", "launchWorkbenchFromMdtodo"]);
|
||||
return (control || [])
|
||||
.filter((item) => allowed.has(item?.type) || String(item?.type || "").startsWith("selectMdtodo") || item?.type === "selectProjectSource" || item?.type === "launchWorkbenchFromTask")
|
||||
.filter((item) => allowed.has(item?.type) || mdtodoCommandTypes.has(item?.type) || String(item?.type || "").startsWith("selectMdtodo") || item?.type === "selectProjectSource" || item?.type === "launchWorkbenchFromTask")
|
||||
.filter((item) => item.phase === "completed" || item.phase === "failed")
|
||||
.map((item) => {
|
||||
const detail = item.detail && typeof item.detail === "object" ? item.detail : {};
|
||||
@@ -1238,7 +1244,7 @@ function buildProjectManagementFindings(report) {
|
||||
findings.push({ id: "project-management-api-slow", severity: "red", summary: "project-management API resource timing exceeded YAML projectManagement.slowApiBudgetMs", count: summary.projectApiSlowPathCount, budgetMs: summary.slowApiBudgetMs, groups: report.slowProjectApiPerformance.slice(0, 12), valuesRedacted: true });
|
||||
}
|
||||
if (Number(summary.launchFailureCount ?? 0) > 0) {
|
||||
findings.push({ id: "mdtodo-workbench-launch-failed", severity: "red", summary: "launchWorkbenchFromTask command failed or returned an HTTP error", count: summary.launchFailureCount, commands: report.launchCommands.filter((item) => item.phase === "failed" || Number(item.launchStatus ?? 200) >= 400).slice(0, 12), valuesRedacted: true });
|
||||
findings.push({ id: "mdtodo-workbench-launch-failed", severity: "red", summary: "MDTODO Workbench launch command failed or returned an HTTP error", count: summary.launchFailureCount, commands: report.launchCommands.filter((item) => item.phase === "failed" || Number(item.launchStatus ?? 200) >= 400).slice(0, 12), valuesRedacted: true });
|
||||
}
|
||||
if (Number(summary.launchSuccessCount ?? 0) > 0 && Number(summary.launchWithOtelTraceHeaderCount ?? 0) === 0) {
|
||||
findings.push({ id: "mdtodo-workbench-launch-otel-trace-missing", severity: "amber", summary: "Workbench launch succeeded but no x-hwlab-otel-trace-id header was captured for Tempo drill-down", count: summary.launchSuccessCount, commands: report.launchCommands.slice(0, 12), valuesRedacted: true });
|
||||
|
||||
Reference in New Issue
Block a user