import type { AiModelSelection, AiModelSlot, CaseLevelModelTuning, GraphModelFallbackPolicy, ModelFallbackTrigger } from "./model-config.js"; export interface AiModelAvailabilityResult { available: boolean; trigger?: ModelFallbackTrigger; reason?: string; } export interface ResolveNodeModelSlotArgs { slot: AiModelSlot; graphSelection: AiModelSelection; nodeSelection?: AiModelSelection; fallbackPolicy: GraphModelFallbackPolicy; availabilityResult?: AiModelAvailabilityResult; } export interface ResolvedAiModelSlot { slot: AiModelSlot; selected: AiModelSelection; source: "graphDefault" | "nodeOverride" | "nodeCaseOverride" | "fallbackToGraphDefault"; inherited: boolean; fallback?: { attempted: boolean; from?: AiModelSelection; to: AiModelSelection; trigger: ModelFallbackTrigger; reason?: string; }; provenance: { graphPath: string; nodePath?: string; graphCaseId: string; nodeCaseId?: string; }; } export interface ResolvedNodeAiPlan { graphId: string; graphRevision?: string; nodeId: string; graphCaseId: string; nodeCaseId?: string; /** Resolved case-level tuning after graph ⊕ node merge (for MAIN run modelConfig). */ modelConfigTuning?: CaseLevelModelTuning; slots: { preActionModel: ResolvedAiModelSlot; skillModel: ResolvedAiModelSlot; postActionModel: ResolvedAiModelSlot; }; caseSelection: { graph: { selectedCaseId: string; matchedConditions: string[]; }; node?: { selectedCaseId: string; matchedConditions: string[]; }; }; } //# sourceMappingURL=resolution.d.ts.map