/** * Role-based model routing. * * Deterministic, policy-constrained selection of a provider/model for a role. * Routing consumes structured evidence (risk, type, phase, remaining budget, * health, failures, stall, required independence) and returns a structured, * explainable `reasonCodes` decision. A model may *recommend* escalation but * never self-authorizes it — escalation requires its own bounded, evidence- * backed policy evaluation (see `escalation.ts`). */ import { type CapabilityRegistry, type costTierOf } from "./capability-registry.js"; import type { HealthLevel as ProviderHealthLevel } from "./provider-health.js"; import type { ModelCapabilities, ModelRole, ModelRolePolicy, ModelRouteDecision, RoutingInput } from "./types.js"; /** A candidate model registered for routing. */ export interface RouteCandidate { provider: string; model: string; profile: ModelCapabilities | null; costTier: ReturnType; health: ProviderHealthLevel; } export interface RouterConfig { registry: CapabilityRegistry; rolePolicies: Record; candidates: RouteCandidate[]; healthState: Record; maxEscalationLevel: number; } export interface RouteOptions { escalationLevel?: number; deniedModels?: string[]; forceModel?: { provider: string; model: string; }; } /** * Compute the capability requirements for a routing input by combining the * role policy's required capabilities with task-type requirements. */ export declare function requiredCapabilitiesFor(policy: ModelRolePolicy, input: RoutingInput): string[]; export interface RouteResult { decision: ModelRouteDecision | null; rejections: string[]; } /** * Deterministic routing. Returns a decision or a list of rejections (reason * codes) when no candidate satisfies policy. */ export declare function routeForRole(config: RouterConfig, input: RoutingInput, policy: ModelRolePolicy, options?: RouteOptions): RouteResult; export { hasAllCapabilities } from "./capability-registry.js"; //# sourceMappingURL=model-router.d.ts.map