32 lines
1.0 KiB
TypeScript
32 lines
1.0 KiB
TypeScript
import type { ErrorCode } from "./error";
|
|
|
|
export interface CapabilityIssue {
|
|
code: ErrorCode;
|
|
message: string;
|
|
path?: string;
|
|
recoverable: boolean;
|
|
}
|
|
|
|
export interface CapabilityGateResult {
|
|
taskId: "M6-02" | "N-011" | "N-012" | "N-013" | "N-014" | "N-015" | "N-017" | "N-018" | "N-020" | "N-021" | "N-022" | "N-023" | "N-024" | "N-025" | "N-026" | "PBR-007" | "PBR-008" | "PBR-009" | "PBR-010" | "PBR-011" | "PBR-012";
|
|
capability: string;
|
|
status: "READY" | "BLOCKED";
|
|
issues: CapabilityIssue[];
|
|
}
|
|
|
|
export function readyGate(taskId: CapabilityGateResult["taskId"], capability: string): CapabilityGateResult {
|
|
return { taskId, capability, status: "READY", issues: [] };
|
|
}
|
|
|
|
export function blockedGate(
|
|
taskId: CapabilityGateResult["taskId"],
|
|
capability: string,
|
|
issues: CapabilityIssue[],
|
|
): CapabilityGateResult {
|
|
return { taskId, capability, status: "BLOCKED", issues };
|
|
}
|
|
|
|
export function capabilityIssue(code: ErrorCode, message: string, path?: string, recoverable = true): CapabilityIssue {
|
|
return { code, message, path, recoverable };
|
|
}
|