/** * TypeScript is the authoritative source of truth for GJC workflow manifests. * Any JSON manifest projection is derived from this module and must never be * hand-edited. */ import { type CanonicalGjcWorkflowSkill } from "../skill-state/canonical-skills"; export interface WorkflowState { id: string; initial?: boolean; terminal?: boolean; } export interface WorkflowTransition { from: string; to: string; verb: string; } export interface WorkflowVerb { name: string; planned?: boolean; /** Invocation surface that exposes this verb in the real CLI parser. */ surface?: "state-action" | "command-positional" | "command-flag"; } export interface TypedArgSpec { name: string; type: "string" | "number" | "boolean" | "enum" | "object"; enumValues?: string[]; required?: boolean; appliesToVerbs?: string[]; planned?: boolean; } export interface RetentionPolicy { category: string; keep?: number; maxAgeDays?: number; } export interface SkillManifest { skill: CanonicalGjcWorkflowSkill; states: WorkflowState[]; initialState: string; terminalStates: string[]; transitions: WorkflowTransition[]; verbs: WorkflowVerb[]; typedArgs: TypedArgSpec[]; retention: RetentionPolicy[]; hudFields: string[]; graphLabel: string; stopReleasingPhases: readonly string[]; phaseLock: readonly string[]; canonicalOverrides: readonly string[]; } export declare const WORKFLOW_MANIFEST: Record; export declare function getSkillManifest(skill: CanonicalGjcWorkflowSkill): SkillManifest; export declare function isKnownWorkflowState(skill: CanonicalGjcWorkflowSkill, state: string): boolean; export declare function isValidTransition(skill: CanonicalGjcWorkflowSkill, from: string, to: string): boolean; export declare function listVerbs(skill: CanonicalGjcWorkflowSkill): string[]; export declare function typedArgsFor(skill: CanonicalGjcWorkflowSkill, verb: string): TypedArgSpec[]; export declare function serializeManifestProjection(): string;