/** * @fileoverview Abstract Dependency Constraint (C-ABS-1) * * C-ABS-1: Non-Abstract nodes MUST NOT depend on Abstract nodes. * * Per SPEC Section 11.5: * "If node `a` has resolution.status = "Abstract", then no non-Abstract node * may include `a.id` in its dependsOn array." * * This ensures that when Abstract nodes are excluded from execution steps, * no executable step loses its dependency. */ import type { IntentGraph, IntentNodeId } from "../core/types/intent-graph.js"; /** * Result of abstract dependency check. */ export type AbstractDependencyCheckResult = { readonly valid: true; } | { readonly valid: false; readonly error: "ABSTRACT_DEPENDENCY"; readonly nodeId: IntentNodeId; readonly details: string; }; /** * Check the C-ABS-1 constraint. * * Per SPEC Section 11.5: * - Non-Abstract nodes (Resolved or Ambiguous) MUST NOT depend on Abstract nodes * - Abstract nodes MAY depend on other Abstract nodes (hierarchy among abstract goals) * - Abstract nodes MAY depend on non-Abstract nodes (high-level goal depends on subtasks) * * @param graph - The Intent Graph to check * @returns Result with validity and optional error details */ export declare function checkAbstractDependency(graph: IntentGraph): AbstractDependencyCheckResult; /** * Check if graph passes C-ABS-1 constraint. * * Convenience wrapper that returns a boolean. */ export declare function isAbstractDependencyValid(graph: IntentGraph): boolean; //# sourceMappingURL=abstract-dependency.d.ts.map