import type { BoberConfig } from "./schema.js"; /** * All six logical roles the orchestrator routes to. * Tool roles require a non-claude-code provider (claude-code cannot drive tools). * Prompt roles (planner, researcher) are allowed on claude-code unconditionally. */ export type RoleName = "planner" | "researcher" | "curator" | "generator" | "evaluator" | "codeReview" | "chat"; export type RoleProviderMap = Record; /** * Returns true when role is a TOOL_ROLE (curator/generator/evaluator/codeReview). * Derived from the authoritative TOOL_ROLES constant — not a re-declaration. */ export declare function isToolRole(role: RoleName): boolean; /** * Compute the raw effective provider for a single role from the config. * * Resolution: * - researcher → use planner's section (no dedicated researcher section) * - codeReview absent → mirror code-reviewer-agent.ts:63/75: fall back to evaluator * - For the resolved section: resolveProviderModel(model, provider).provider * (explicitProvider wins; otherwise model shorthand → provider) */ export declare function effectiveProvider(role: RoleName, config: BoberConfig): string; /** * Resolve the finally-effective provider for every role in the config. * * Rules (PRD US-006): * 1. Compute raw effective provider per role via resolveProviderModel. * 2. Determine the fallback target: the first non-claude-code provider found * across ALL roles in stable iteration order (prompt roles first, then tool roles). * 3. For each role: * - PROMPT_ROLES: use raw provider (claude-code is allowed). * - TOOL_ROLES: * - If raw provider !== "claude-code": use it directly. * - Else if a fallback exists: redirect to fallback. * - Else: THROW — naming the role — because claude-code cannot drive tools * and no alternative provider is configured. * 4. Log one line per role (role name + finally-resolved provider) for auditability. * * @throws Error naming the first offending tool role when claude-code is the sole * provider option for that role and no alternative exists. */ export declare function resolveRoleProviders(config: BoberConfig): RoleProviderMap; //# sourceMappingURL=role-providers.d.ts.map