/** * Per-agent model fallback chains. * * Mirrors the design of oh-my-opencode's `src/shared/model-requirements.ts`: * each agent has an ordered list of chain entries. Each entry declares a set * of acceptable providers for the SAME model name — the first provider in * the user's available set wins. The overall chain is walked top-to-bottom * until an entry matches; subsequent matches form the `fallback_models` * array. * * The provider set is derived either from: * - the interactive `setup-models install` CLI (user answers yes/no to * "do you have a subscription?"), OR * - the opencode server's `/provider` response (`connected` list) at * plugin startup. */ export interface ChainEntry { /** * Providers that carry this model (ordered by preference). The first * provider from this list that is in the user's set is picked. */ providers: string[]; /** Model id (without provider prefix). */ model: string; /** Optional variant name (e.g. "high", "max"). */ variant?: string; /** Optional notes, surfaced in CLI output. */ notes?: string; } export interface AgentChain { /** Short role description — shown in CLI. */ rationale: string; /** Ordered fallback entries. */ chain: ChainEntry[]; } /** * Known opencode provider ids. Kept as a closed enum here to prevent typos * in chain definitions — unknown ids would silently never match. */ export declare const SUPPORTED_PROVIDERS: readonly ["anthropic", "openai", "google", "github-copilot", "opencode", "opencode-go", "zai-coding-plan", "ollama-cloud"]; export type SupportedProvider = (typeof SUPPORTED_PROVIDERS)[number]; /** * Subscription questions asked by the interactive installer. Order is the * order the user sees. */ export interface SubscriptionQuestion { id: SupportedProvider; label: string; hint?: string; } export declare const SUBSCRIPTION_QUESTIONS: SubscriptionQuestion[]; /** * Per-agent chains. Keyed by agent `displayName` (matches the `agents` * object exported from `src/agents`). * * Design notes: * - `forge` is the coding primary — optimized for top-tier code generation. * - `muse`/`oracle`/`sage` need reasoning — prefer Opus/o-series. * - `explore`/`librarian` are retrieval — prefer fast + cheap. * - Model ids use concrete version numbers (e.g. `claude-opus-4-7`, `gpt-5.4`, * `gemini-3.1-pro-preview`) and are matched as a prefix against the provider's * model catalog, so minor version bumps (e.g. `-8`) are tolerated via * prefix matching. */ export declare const AGENT_CHAINS: Record; //# sourceMappingURL=model-requirements.d.ts.map