import type { TransitionCommand } from '../state-machine/types.js'; export type WorkItemStatus = 'missing' | 'draft' | 'ready' | 'in_progress' | 'verify' | 'blocked' | 'waiting_external' | 'deferred' | 'done' | 'cancelled'; export interface WorkItemProvenance { readonly kind: string; readonly ref: string; } export interface WorkItemCreatePayload { readonly title: string; readonly problem: string; readonly desiredOutcome: string; readonly audience: readonly string[]; readonly scope: readonly string[]; readonly outOfScope: readonly string[]; readonly requirements: readonly string[]; readonly acceptanceCriteria: readonly string[]; readonly dependencies: readonly string[]; readonly openQuestions: readonly string[]; readonly links: readonly string[]; readonly analyticsEvents: readonly string[]; readonly qaVerification: readonly string[]; readonly provenance: readonly WorkItemProvenance[]; readonly workstreamId?: string; } export interface WorkItemState extends WorkItemCreatePayload { readonly schemaVersion: 1; readonly status: WorkItemStatus; readonly interruption?: { readonly kind: 'blocked' | 'waiting_external' | 'deferred'; readonly reason: string; readonly resumeStatus: 'ready' | 'in_progress' | 'verify'; }; } export type WorkItemEvent = 'create' | 'mark_ready' | 'start' | 'submit_for_verification' | 'block' | 'wait_external' | 'defer' | 'resume' | 'complete' | 'cancel'; export type WorkItemPayload = WorkItemCreatePayload | { readonly reason?: string; readonly status?: string; } | Record; export type WorkItemCommand = TransitionCommand;