import type { AiModelSelection } from "./model-config.js"; import type { GraphenixLlmRuntimeConfig } from "./llm-runtime.js"; import type { ExecutionMapping, ModelSelectionSource, ResolvedInvocationSnapshot, ResolvedModelSlots, ResolvedNodePolicies, RetryPolicy, UnitInputContract, UnitInvokeContract, UnitOutputContract } from "./invoke-contract.js"; import type { ModelFallbackPolicy, TracePolicy } from "./plan-policies.js"; import type { NodeInvokeContract } from "./invoke-contract.js"; export type ExecutionUnitKindV2 = "externalPreUtility" | "mainSkill" | "pipelinePhase" | "externalPostUtility" | "narrativePreprocessor" | "narrativeHandler" | "executionStrategyPlanner" | "localSkill" | "finalizer" | "callGraph" | "validation" | "mapping"; export type InvokeMode = "externalRunTask" | "mainRunTask" | "pipelinePhase" | "narrativePreprocessor" | "narrativeHandler" | "executionStrategyPlanner" | "local" | "finalizer" | "none"; export interface OptimizerPolicy { maxIterations?: number; strategyKey?: string; } export interface ExecutionUnitPlanV2 { unitId: string; nodeId: string; unitKind: ExecutionUnitKindV2; invokeMode: InvokeMode; order: number; actionKey?: string; strategyKey?: string; skillKey?: string; finalizerType?: string; modelSlot?: "preActionModel" | "skillModel" | "postActionModel" | "finalizerModel"; modelSelection?: AiModelSelection; modelSource?: ModelSelectionSource; resolvedInvocationSnapshot?: ResolvedInvocationSnapshot; invokeContract?: UnitInvokeContract; inputContract?: UnitInputContract; outputContract?: UnitOutputContract; retryPolicy?: RetryPolicy; fallbackPolicy?: ModelFallbackPolicy; tracePolicy?: TracePolicy; /** When true, node may complete without a mainSkill unit (narrative handler mode). */ terminal?: boolean; optimizerPolicy?: OptimizerPolicy; unitParams?: Record; /** * Optional LLM runtime extensions for this unit's skill invocation. * Phase 1: only on mainSkill. Absent = skill runs without server-tool config. */ llmRuntime?: GraphenixLlmRuntimeConfig; sourcePath: string; } export interface NodeExecutionPlan { nodeId: string; nodeType: "task" | "finalizer" | "callGraph" | "special" | string; executionClass: "aiTask" | "localTask" | "finalizer" | "callGraph" | "special" | string; skillKey?: string; selectedCases?: { graphModelCaseId?: string; nodeModelCaseId?: string; }; /** Resolved request-level MAIN tuning (temperature / reasoningEffort). */ modelConfigTuning?: import("./model-config.js").CaseLevelModelTuning; modelSlots?: ResolvedModelSlots | null; invokeContract: NodeInvokeContract; executionUnits: ExecutionUnitPlanV2[]; deferredGateIds?: string[]; outputMapping?: ExecutionMapping; executionMapping?: ExecutionMapping; policies?: ResolvedNodePolicies; planVersion?: string; compiledAt?: string; compilerVersion?: string; aiProfilesCatalogVersion?: string; sourcePath: string; } export interface FinalizerExecutionPlan { nodeId: string; finalizerType: "aggregate" | "compose" | "select" | "bundle" | "synthesize" | string; executionClass: "finalizer"; config: Record; modelSlots?: ResolvedModelSlots | null; executionUnits: ExecutionUnitPlanV2[]; outputContractRef?: string; responseShapePath?: string; sourcePath: string; } /** @deprecated v1 unit kinds — use ExecutionUnitKindV2 for v2 plans. */ export type ExecutionUnitKind = "preAction" | "skill" | "postAction" | "finalizer"; /** @deprecated v1 model source — use ModelSelectionSource for v2 plans. */ export type ExecutionUnitModelSource = "graphDefault" | "graphCase" | "nodeOverride" | "nodeCaseOverride" | "actionOverride" | "fallbackToGraphDefault"; /** @deprecated v1 execution unit — use ExecutionUnitPlanV2 for v2 plans. */ export interface ExecutionUnitPlan { unitId: string; nodeId: string; unitKind: ExecutionUnitKind; order: number; actionKey?: string; skillKey?: string; modelSlot?: import("./model-config.js").AiModelSlot; modelSelection?: AiModelSelection; modelSource?: ExecutionUnitModelSource; inherited?: boolean; config?: Record; inputsConfig?: Record; outputMapping?: Record; } //# sourceMappingURL=execution-unit.d.ts.map