/** * FU-4 โ€” selective invocation policy. Fusion is opt-in and the classifier is * DETERMINISTIC CONFIG FIRST (E016 ยง3.2): priority, task class, and blast * radius decide โ€” never a model call on the dispatch hot path. * * Default is the cheap single-model path; fusion fires for architecture * decisions, ambiguous requirements, and high-blast-radius work. */ export type FusionPriority = "low" | "medium" | "high" | "urgent"; /** Task classes that justify fusion at high priority or above. */ export type FusionTaskClass = "architecture" | "ambiguous" | "high-blast-radius" | "routine"; export interface FusionPolicyInput { priority?: FusionPriority; taskClass?: FusionTaskClass; /** Distinct files the task is expected to touch. */ filesBreadth?: number; /** Explicit operator override (`openkai fuse` passes force=true). */ force?: boolean; } export interface FusionPolicyConfig { /** Priorities that always fuse. Default: ["urgent"]. */ fusePriorities: FusionPriority[]; /** Classes that fuse at high priority or above. Default: all but routine. */ fuseClasses: FusionTaskClass[]; /** Files-breadth at or above which any task fuses. Default: 10. */ breadthThreshold: number; } export interface FusionPolicyDecision { fuse: boolean; reason: string; } export declare const DEFAULT_FUSION_POLICY: FusionPolicyConfig; /** * Evaluate the policy. Rule order is the audit order โ€” the first matching * rule is the reason returned: * 1. explicit force (operator opt-in) wins over everything; * 2. urgent-class priorities fuse; * 3. high-priority work in a fusion class fuses; * 4. breadth at/over the threshold fuses (high blast radius); * 5. otherwise the cheap single-model path. */ export declare function shouldFuse(input: FusionPolicyInput, config?: FusionPolicyConfig): FusionPolicyDecision; //# sourceMappingURL=policy.d.ts.map