import { type CommandBatchItem, type CommandBatchResult } from "../workflows/command-batch.js"; import { type PreparedWorkspace } from "./workspace-preparation.workflow.js"; export declare const CHANGE_VERIFICATION_SCHEMA = "pi-workflows.change-verification.v1"; export type FindingFormat = "text" | "json"; export type MechanicalFix = { command: string; args: string[]; files: string[]; timeoutMs: number; maxOutputChars: number; expectedDiff: string; }; export type VerificationCheck = CommandBatchItem & { readOnly: boolean; baseEligible: boolean; changedFileScope: boolean; findingFormat: FindingFormat; mechanicalFix?: MechanicalFix; }; export type VerificationFinding = { checkId: string; kind: "related" | "unrelated" | "fixedBaseline" | "unknown" | "untested"; summary: string; fingerprint: string; candidateOutputRef?: string; baseOutputRef?: string; }; export type RepairAttempt = { attempt: number; kind: "mechanical" | "semantic" | "judgment"; fingerprint: string; changedFiles: string[]; result: string; }; export type ChangeVerificationResult = { schema: typeof CHANGE_VERIFICATION_SCHEMA; route: "ready" | "repairable" | "needsJudgment" | "blocked"; originatingWorkflow: string; qualifiedNode: string; workspace: PreparedWorkspace; changedFiles: string[]; candidateCommands: CommandBatchResult | null; baseCommands: CommandBatchResult | null; relatedFailures: VerificationFinding[]; unrelatedFailures: VerificationFinding[]; fixedBaselineFailures: VerificationFinding[]; unknownFailures: VerificationFinding[]; untestedChecks: VerificationFinding[]; repairAttempts: RepairAttempt[]; failureFingerprint: string; outputReferences: string[]; reason: string; evidence: string[]; }; export type ChangeVerificationInput = { originatingWorkflow: string; qualifiedNode: string; workspace: PreparedWorkspace; checks?: VerificationCheck[]; changedFiles?: string[]; untested?: string[]; plan?: unknown; maxConcurrency?: number; }; type ExecutionState = { checks: VerificationCheck[]; candidate: CommandBatchResult; base: CommandBatchResult; baseEvidence: string[]; cleanupEvidence: string[]; repairAttempts: RepairAttempt[]; }; export declare function parseChangeVerificationInput(value: unknown): ChangeVerificationInput; export declare function classifyVerification(input: ChangeVerificationInput, state: ExecutionState): ChangeVerificationResult; export declare const changeVerificationWorkflow: import("../workflows/types.js").WorkflowDefinition ChangeVerificationResult; }; readonly blocked: { readonly from: "blocked"; readonly validate: (value: unknown) => ChangeVerificationResult; }; }, import("../workflows/types.js").WorkflowIncludeMap> & { nodes: { readonly selectChecks: import("../workflows/types.js").ComputeNodeDefinition; readonly planChecks: import("../workflows/types.js").SubmittedAgentNodeDefinition; readonly runCandidate: import("../workflows/types.js").FunctionActionNodeDefinition; readonly runBase: import("../workflows/types.js").FunctionActionNodeDefinition; readonly classify: import("../workflows/types.js").ComputeNodeDefinition; readonly repairGuard: import("../workflows/types.js").ComputeNodeDefinition; readonly mechanicalRepair: import("../workflows/types.js").FunctionActionNodeDefinition; readonly semanticRepair: import("../workflows/types.js").SubmittedAgentNodeDefinition; readonly judge: import("../workflows/types.js").SubmittedAgentNodeDefinition; readonly ready: import("../workflows/types.js").ComputeNodeDefinition; readonly blocked: import("../workflows/types.js").ComputeNodeDefinition; }; includes?: import("../workflows/types.js").WorkflowIncludeMap; exits?: { readonly ready: { readonly from: "ready"; readonly validate: (value: unknown) => ChangeVerificationResult; }; readonly blocked: { readonly from: "blocked"; readonly validate: (value: unknown) => ChangeVerificationResult; }; }; }; export default changeVerificationWorkflow;