diff --git a/docs/VISUAL_MODEL.md b/docs/VISUAL_MODEL.md index 76db566..5965cd6 100644 --- a/docs/VISUAL_MODEL.md +++ b/docs/VISUAL_MODEL.md @@ -5,6 +5,9 @@ The Campaign review flow is the reference for runtime workflow progress: - a compact stage rail communicates order, current state, completion, warning, failure, partial progress, and locks; - the active handoff owns the detailed controls; +- unknown module-action outcomes expose evidence fields plus **Effect + confirmed** and **Effect absent** actions; Retry stays hidden until absence is + verified; - evidence remains visible without turning every stage into a permanent card; - unavailable stages stay visibly unavailable while non-blocking optional stages do not interrupt the connector state. diff --git a/webui/src/api/workflow.ts b/webui/src/api/workflow.ts index 81aae9e..75d510c 100644 --- a/webui/src/api/workflow.ts +++ b/webui/src/api/workflow.ts @@ -640,7 +640,7 @@ export function resolveWorkflowStep( instanceId: string, stepId: string, payload: { - action: "complete" | "approve" | "changes" | "reject" | "resume" | "retry" | "cancel"; + action: "complete" | "approve" | "changes" | "reject" | "resume" | "retry" | "confirm_effect" | "confirm_absent" | "cancel"; output?: Record; evidence?: string[]; comment?: string | null; diff --git a/webui/src/features/workflow/WorkflowRunsDialog.tsx b/webui/src/features/workflow/WorkflowRunsDialog.tsx index 9bc4ae7..79ffb69 100644 --- a/webui/src/features/workflow/WorkflowRunsDialog.tsx +++ b/webui/src/features/workflow/WorkflowRunsDialog.tsx @@ -49,6 +49,8 @@ type WorkflowAction = | "reject" | "resume" | "retry" + | "confirm_effect" + | "confirm_absent" | "cancel"; export default function WorkflowRunsDialog({ @@ -452,6 +454,7 @@ export default function WorkflowRunsDialog({ : action === "approve" || action === "complete" || action === "resume" + || action === "confirm_effect" ? "primary" : undefined } @@ -549,6 +552,8 @@ function handoffActions(step: WorkflowInstanceStep | null): WorkflowAction[] { "reject", "resume", "retry", + "confirm_effect", + "confirm_absent", "cancel" ].includes(action) )); @@ -562,6 +567,8 @@ function actionLabel(action: WorkflowAction): string { reject: "Reject", resume: "Resume", retry: "Retry", + confirm_effect: "Effect confirmed", + confirm_absent: "Effect absent", cancel: "Cancel" }[action]; }