export interface ModelTarget { readonly model: string; readonly variant?: string; } export interface RoleModelRoute { readonly preferred: ModelTarget; readonly fallback?: readonly ModelTarget[]; } export type ModelRoutingConfig = Readonly>; /** The stable serial implementation route stays on Sol when Luna fan-out is unsafe or unavailable. */ export declare const DEDICATED_WORKER_MODEL = "openai/gpt-5.6-sol"; export declare const DEDICATED_WORKER_VARIANT = "medium"; /** Luna executes only units admitted to the fabric; it is not the serial worker's fallback target. */ export declare const LUNA_FABRIC_WORKER_MODEL = "openai/gpt-5.6-luna"; export declare const LUNA_FABRIC_WORKER_VARIANT = "max"; export declare const LUNA_FABRIC_WORKER_ROLE = "dog-luna-worker"; /** The coordinator uses Terra High so routing and progress decisions do not bottleneck the workflow. */ export declare const DEFAULT_COORDINATOR_MODEL = "openai/gpt-5.6-terra"; export declare const DEFAULT_COORDINATOR_VARIANT = "high"; /** Compatibility names retained for the pre-v0.8 explicit Sol target. */ export declare const ESCALATION_WORKER_MODEL = "openai/gpt-5.6-sol"; export declare const ESCALATION_WORKER_VARIANT = "medium"; export declare const DEDICATED_WORKER_ROLES: readonly ["implementation", "remediation", "blocker-resolution", "sol-worker-mk2a2", "dog-worker"]; /** Ordered last-resort targets used only when the host proves a policy target unavailable. */ export declare const DEFAULT_FREE_TIER_FALLBACK_MODELS: readonly string[]; /** The dedicated worker target this build ships with when a host declares no target of its own. */ export declare const DEFAULT_DEDICATED_WORKER_TARGET: ModelTarget; /** Compatibility target retained for existing consumers of the explicit Sol declaration. */ export declare const ESCALATION_WORKER_TARGET: ModelTarget; /** * Fixed serial worker routes for one dedicated target. Which target is dedicated is a host decision, * but every serial worker role resolves to that single target and never to a fallback. */ export declare function dedicatedWorkerRouting(target?: ModelTarget): ModelRoutingConfig; export declare const DEDICATED_WORKER_ROUTING: ModelRoutingConfig; export declare const LUNA_FABRIC_WORKER_TARGET: ModelTarget; export declare const LUNA_FABRIC_WORKER_ROUTING: ModelRoutingConfig; export declare function fixedWorkerRouting(dedicatedTarget?: ModelTarget): ModelRoutingConfig; export declare const FIXED_MODEL_ROUTING: ModelRoutingConfig; export declare const RECOMMENDED_LUNA_MODEL = "openai/gpt-5.6-luna"; /** Coordinator state and routing use Terra High; bounded evidence retrieval uses Luna High. */ export declare const DEFAULT_COORDINATOR_ROUTING: ModelRoutingConfig; /** Evidence gathering is retrieval rather than reasoning, so the scout stays one effort tier lower. */ export declare const RECOMMENDED_SCOUT_VARIANT = "high"; export declare const RECOMMENDED_LUNA_ROLE_VARIANTS: Readonly<{ readonly "dog-scout": "high"; }>; export declare const RECOMMENDED_LUNA_ROLES: readonly string[]; /** Configurable MkII defaults. Project-local and global configuration may override these routes. */ export declare const RECOMMENDED_LUNA_ROUTING: ModelRoutingConfig; /** * Consultation must not inherit the caller's model. The preferred consultation model is the * strongest reasoning model a host declares; it stays out of the built-in catalog so an undeclared * host falls back to the shipped high-effort Sol target instead of an unavailable route. */ export declare const RECOMMENDED_CONSULTATION_MODEL = "anthropic/claude-opus-5"; export declare const RECOMMENDED_CONSULTATION_ROLES: readonly string[]; /** Review and advice carry the reasoning effort the worker target intentionally does not spend. */ export declare const CONSULTATION_FALLBACK_VARIANT = "xhigh"; /** * The shipped consultation fallback. Review has to be able to reject work the worker just produced, so * it stays at higher reasoning effort than the stable Sol worker. Matching the worker variant would * review that work with exactly the capability that produced it. */ export declare const DEFAULT_CONSULTATION_FALLBACK_TARGET: ModelTarget; /** * Consultation prefers the strongest declared reasoning model. A host that relocated the dedicated * worker target does not alter consultation policy: every default route ends at the shipped * high-effort target, so review effort cannot silently collapse to the worker's effort or variant. * Every consultation route stays configurable, so a host without the preferred model may declare any * role model it can actually serve. */ export declare function recommendedConsultationRouting(_fallbackTarget?: ModelTarget): ModelRoutingConfig; export declare const RECOMMENDED_CONSULTATION_ROUTING: ModelRoutingConfig; /** Every configurable role route this build recommends before host configuration is applied. */ export declare function recommendedRoleRouting(fallbackTarget?: ModelTarget): ModelRoutingConfig; export declare const RECOMMENDED_ROLE_ROUTING: ModelRoutingConfig; export declare function isDedicatedWorkerRole(role: string): boolean; export declare function isFixedModelRole(role: string): boolean; export interface CatalogModel { readonly model: string; /** Omit only when the model has no named variants. */ readonly variants?: readonly string[]; } export interface ModelCatalog { readonly project?: readonly CatalogModel[]; readonly global?: readonly CatalogModel[]; } /** Built-in availability metadata for source-level recommendations; no provider probing required. */ export declare const BUILT_IN_MODEL_CATALOG: ModelCatalog; export interface ResolveModelRouteInput { readonly role: string; /** Project-local routing. A resolvable local route takes priority. */ readonly local?: ModelRoutingConfig; /** Global routing is consulted only after the local route candidates fail. */ readonly global?: ModelRoutingConfig; readonly catalog: ModelCatalog; /** The serial target every dedicated worker role resolves to. The Luna fabric route ignores it. */ readonly dedicated?: ModelTarget; /** Consultation retry only: ignore each configured preferred target and begin at its fallback. */ readonly skipPreferred?: boolean; } export interface ResolvedModelRoute { readonly ok: true; readonly role: string; readonly source: "fixed" | "local" | "global"; readonly catalog: "project" | "global"; readonly model: string; readonly variant?: string; } export interface ModelResolutionAttempt { readonly source: "fixed" | "local" | "global"; readonly target: ModelTarget; readonly reason: "model-unavailable" | "variant-unavailable"; } export interface UnresolvedModelRoute { readonly ok: false; readonly role: string; readonly reason: "unresolved-role"; readonly attempts: readonly ModelResolutionAttempt[]; } export type ModelRouteResolution = ResolvedModelRoute | UnresolvedModelRoute; export declare function parseModelTarget(value: unknown): ModelTarget | undefined; /** Strict runtime parser for project, environment, and host routing layers. */ export declare function parseModelRoutingConfig(value: unknown): ModelRoutingConfig | undefined; /** Resolve a role deterministically without provider calls or implicit model guesses. */ export declare function resolveModelRoute(input: ResolveModelRouteInput): ModelRouteResolution;