import { type AgentTierResolution, type CodaliGatewayAgentAssignment } from "../gateway/AgentTierResolver.js"; import type { RunContextAgentRoles } from "../runcontext/RunContextResolver.js"; import type { AgentInventoryEntry } from "./AgentInventory.js"; /** * Codali's configurable model roles. * * `AgentTierResolver` knows twelve internal roles, each with a working default. * Requiring an operator to configure twelve agents to ask one question is a * burden with no payoff, so only three are exposed: * * orchestrator — routes, plans, assesses completeness, repairs * synthesizer — produces multi-source answers * media — generates images and other artifacts * * "Classifier", "planner", "verifier" and "repair" remain distinct *prompts*, * but they run against the orchestrator model. The internal roles are still * available for advanced tuning; they simply are not part of configuration. */ export type CodaliConfigurableRole = "orchestrator" | "worker" | "synthesizer" | "media"; /** Phase 1 resolves only these; media arrives with image generation. */ export declare const PHASE_ONE_ROLES: CodaliConfigurableRole[]; export interface RoleResolutionInput { inventory: AgentInventoryEntry[]; /** Explicit slug bindings from run context, e.g. `synthesizer = "suku-large"`. */ bindings?: RunContextAgentRoles; roles?: CodaliConfigurableRole[]; allowImageWorker?: boolean; } export interface RoleResolutionResult { resolution: AgentTierResolution; /** Configurable role -> the assignment that will serve it. */ assignments: Partial>; /** Configurable role -> agent slug, for display in `codali doctor`. */ bindings: Partial>; /** * An assignment whose agent can actually emit tool calls. * * The orchestrator model is chosen for planning quality, and plenty of * capable small models report `supportsTools: false`. Running worker tasks on * one of those produces a plan full of correct tool tasks and then zero tool * calls — the run "succeeds" having gathered nothing. So tool execution gets * its own assignment, and its absence is reported rather than discovered * through an empty answer. */ toolCapable?: CodaliGatewayAgentAssignment; warnings: string[]; } export declare const resolveConfigurableRoles: (input: RoleResolutionInput) => RoleResolutionResult; //# sourceMappingURL=RoleResolution.d.ts.map