export type FallbackEntry = { providers: string[] model: string variant?: string // Entry-specific variant (e.g., GPT→high, Opus→max) } export type ModelRequirement = { fallbackChain: FallbackEntry[] variant?: string // Default variant (used when entry doesn't specify one) requiresModel?: string // If set, only activates when this model is available (fuzzy match) requiresAnyModel?: boolean // If true, requires at least ONE model in fallbackChain to be available (or empty availability treated as unavailable) requiresProvider?: string[] // If set, only activates when any of these providers is connected } export const AGENT_MODEL_REQUIREMENTS: Record = { sisyphus: { fallbackChain: [ { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, { providers: ["zai-coding-plan", "opencode"], model: "glm-5" }, { providers: ["opencode"], model: "big-pickle" }, ], requiresAnyModel: true, }, hephaestus: { fallbackChain: [ { providers: ["openai", "venice", "opencode"], model: "gpt-5.3-codex", variant: "medium" }, { providers: ["github-copilot"], model: "gpt-5.2", variant: "medium" }, ], requiresProvider: ["openai", "github-copilot", "venice", "opencode"], }, oracle: { fallbackChain: [ { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" }, { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro", variant: "high" }, { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, ], }, librarian: { fallbackChain: [ { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-flash" }, { providers: ["opencode"], model: "minimax-m2.5-free" }, { providers: ["opencode"], model: "big-pickle" }, ], }, explore: { fallbackChain: [ { providers: ["github-copilot"], model: "grok-code-fast-1" }, { providers: ["opencode"], model: "minimax-m2.5-free" }, { providers: ["anthropic", "opencode"], model: "claude-haiku-4-5" }, { providers: ["opencode"], model: "gpt-5-nano" }, ], }, "multimodal-looker": { fallbackChain: [ { providers: ["openai", "opencode"], model: "gpt-5.3-codex", variant: "medium" }, { providers: ["kimi-for-coding"], model: "k2p5" }, { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-flash" }, { providers: ["zai-coding-plan"], model: "glm-4.6v" }, { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5-nano" }, ], }, prometheus: { fallbackChain: [ { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" }, { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro" }, ], }, metis: { fallbackChain: [ { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" }, { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro", variant: "high" }, ], }, momus: { fallbackChain: [ { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "medium" }, { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro", variant: "high" }, ], }, atlas: { fallbackChain: [ { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-4-6" }, { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2" }, ], }, } export const CATEGORY_MODEL_REQUIREMENTS: Record = { "visual-engineering": { fallbackChain: [ { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro", variant: "high" }, { providers: ["zai-coding-plan", "opencode"], model: "glm-5" }, { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, ], }, ultrabrain: { fallbackChain: [ { providers: ["openai", "opencode"], model: "gpt-5.3-codex", variant: "xhigh" }, { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro", variant: "high" }, { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, ], }, deep: { fallbackChain: [ { providers: ["openai", "opencode"], model: "gpt-5.3-codex", variant: "medium" }, { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro", variant: "high" }, ], requiresModel: "gpt-5.3-codex", }, artistry: { fallbackChain: [ { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro", variant: "high" }, { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2" }, ], requiresModel: "gemini-3.1-pro", }, quick: { fallbackChain: [ { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-haiku-4-5" }, { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-flash" }, { providers: ["opencode"], model: "gpt-5-nano" }, ], }, "unspecified-low": { fallbackChain: [ { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-4-6" }, { providers: ["openai", "opencode"], model: "gpt-5.3-codex", variant: "medium" }, { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-flash" }, ], }, "unspecified-high": { fallbackChain: [ { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" }, { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro" }, ], }, writing: { fallbackChain: [ { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-flash" }, { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-4-6" }, ], }, }