import type { HandoffInput, PhaseStructuredOutput, Role, Task } from "./types.js"; export type QualityContractValidationMode = "advisory" | "warn" | "block" | "human_approval"; export interface QualityContractRequirement { id: string; label: string; match: string[]; severity: "warn" | "block"; } export interface QualityContractDomainOverride { signals: string[]; validationMode: QualityContractValidationMode; requiresHumanApproval?: boolean; } export interface QualityContractOverride { validationMode?: QualityContractValidationMode; allowedTransitions?: string[]; returnToPhase?: string; } export interface QualityContractTransitionOverride extends QualityContractOverride { allowed?: boolean; } export interface QualityContractPolicyConfig { validationMode?: QualityContractValidationMode; unknownRoleMode?: QualityContractValidationMode; roleOverrides?: Record; phaseOverrides?: Record; capabilityOverrides?: Record; transitionOverrides?: Record; domainOverrides?: QualityContractDomainOverride[]; } export interface QualityContract { id: string; appliesToRoles: string[]; capabilities: string[]; requiredInputs: string[]; requiredContextFiles: string[]; requiredOutputs: QualityContractRequirement[]; requiredEvidence: QualityContractRequirement[]; blockingConditions: string[]; allowedTransitions: string[]; returnToPhase?: string; validationMode: QualityContractValidationMode; domainOverrides: QualityContractDomainOverride[]; } export interface QualityContractResolutionInput { role: Role | string; phase?: string; nextPhase?: string; task?: Task; qualityMode?: QualityContractValidationMode; qualityContracts?: QualityContractPolicyConfig; } export interface QualityContractEvaluationInput extends QualityContractResolutionInput { nextPhase?: string; output?: PhaseStructuredOutput; handoff?: Pick; handoffContent?: string; contextAcknowledgement?: { status?: "pass" | "missing" | "not_checked" | string; missingRequired?: string[]; }; } export interface QualityContractRequirementAssessment { id: string; label: string; status: "covered" | "gap"; severity: "warn" | "block"; detail: string; } export interface QualityContractEvaluation { contract: QualityContract; status: "pass" | "warn" | "block"; mode: QualityContractValidationMode; requiresHumanApproval: boolean; transitionAllowed: boolean; allowedTransitions: string[]; returnToPhase?: string; assessments: QualityContractRequirementAssessment[]; missingRequirements: string[]; } export declare const QUALITY_CONTRACT_REGISTRY: QualityContract[]; export declare function resolveQualityContract(input: QualityContractResolutionInput): QualityContract; export declare function evaluateQualityContract(input: QualityContractEvaluationInput): QualityContractEvaluation;