2026-01-22 22:42:53 +09:00
|
|
|
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)
|
2026-01-30 15:11:19 +09:00
|
|
|
requiresModel?: string // If set, only activates when this model is available (fuzzy match)
|
2026-02-01 19:26:57 +09:00
|
|
|
requiresAnyModel?: boolean // If true, requires at least ONE model in fallbackChain to be available (or empty availability treated as unavailable)
|
2026-01-22 22:42:53 +09:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const AGENT_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
|
2026-01-23 21:41:55 +09:00
|
|
|
sisyphus: {
|
2026-01-22 22:42:53 +09:00
|
|
|
fallbackChain: [
|
|
|
|
|
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-5", variant: "max" },
|
2026-01-30 15:10:38 +09:00
|
|
|
{ providers: ["kimi-for-coding"], model: "k2p5" },
|
|
|
|
|
{ providers: ["opencode"], model: "kimi-k2.5-free" },
|
2026-01-23 15:07:58 +09:00
|
|
|
{ providers: ["zai-coding-plan"], model: "glm-4.7" },
|
2026-02-01 19:26:57 +09:00
|
|
|
{ providers: ["opencode"], model: "glm-4.7-free" },
|
|
|
|
|
],
|
|
|
|
|
requiresAnyModel: true,
|
|
|
|
|
},
|
|
|
|
|
hephaestus: {
|
|
|
|
|
fallbackChain: [
|
2026-01-23 15:07:58 +09:00
|
|
|
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2-codex", variant: "medium" },
|
2026-01-22 22:42:53 +09:00
|
|
|
],
|
2026-02-01 19:26:57 +09:00
|
|
|
requiresModel: "gpt-5.2-codex",
|
2026-01-22 22:42:53 +09:00
|
|
|
},
|
|
|
|
|
oracle: {
|
|
|
|
|
fallbackChain: [
|
|
|
|
|
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" },
|
2026-01-30 13:56:39 +09:00
|
|
|
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "max" },
|
2026-01-22 22:42:53 +09:00
|
|
|
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-5", variant: "max" },
|
|
|
|
|
],
|
|
|
|
|
},
|
2026-01-24 15:30:35 +09:00
|
|
|
librarian: {
|
|
|
|
|
fallbackChain: [
|
|
|
|
|
{ providers: ["zai-coding-plan"], model: "glm-4.7" },
|
2026-01-30 13:44:04 +09:00
|
|
|
{ providers: ["opencode"], model: "glm-4.7-free" },
|
2026-01-24 15:30:35 +09:00
|
|
|
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-4-5" },
|
|
|
|
|
],
|
|
|
|
|
},
|
2026-01-22 22:42:53 +09:00
|
|
|
explore: {
|
|
|
|
|
fallbackChain: [
|
2026-02-02 21:13:45 +09:00
|
|
|
{ providers: ["github-copilot"], model: "grok-code-fast-1" },
|
2026-01-23 15:07:58 +09:00
|
|
|
{ providers: ["anthropic", "opencode"], model: "claude-haiku-4-5" },
|
2026-01-24 15:30:35 +09:00
|
|
|
{ providers: ["opencode"], model: "gpt-5-nano" },
|
2026-01-22 22:42:53 +09:00
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
"multimodal-looker": {
|
|
|
|
|
fallbackChain: [
|
2026-01-24 15:30:35 +09:00
|
|
|
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-flash" },
|
2026-01-24 15:40:24 +09:00
|
|
|
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2" },
|
2026-01-23 16:58:33 +09:00
|
|
|
{ providers: ["zai-coding-plan"], model: "glm-4.6v" },
|
2026-01-30 15:10:38 +09:00
|
|
|
{ providers: ["kimi-for-coding"], model: "k2p5" },
|
|
|
|
|
{ providers: ["opencode"], model: "kimi-k2.5-free" },
|
2026-01-24 15:40:24 +09:00
|
|
|
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-haiku-4-5" },
|
2026-01-24 15:30:35 +09:00
|
|
|
{ providers: ["opencode"], model: "gpt-5-nano" },
|
2026-01-22 22:42:53 +09:00
|
|
|
],
|
|
|
|
|
},
|
2026-01-23 21:41:55 +09:00
|
|
|
prometheus: {
|
2026-01-22 22:42:53 +09:00
|
|
|
fallbackChain: [
|
|
|
|
|
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-5", variant: "max" },
|
2026-01-30 15:10:38 +09:00
|
|
|
{ providers: ["kimi-for-coding"], model: "k2p5" },
|
|
|
|
|
{ providers: ["opencode"], model: "kimi-k2.5-free" },
|
2026-01-22 22:42:53 +09:00
|
|
|
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" },
|
2026-01-24 15:30:35 +09:00
|
|
|
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro" },
|
2026-01-22 22:42:53 +09:00
|
|
|
],
|
|
|
|
|
},
|
2026-01-23 21:41:55 +09:00
|
|
|
metis: {
|
2026-01-22 22:42:53 +09:00
|
|
|
fallbackChain: [
|
|
|
|
|
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-5", variant: "max" },
|
2026-01-30 15:10:38 +09:00
|
|
|
{ providers: ["kimi-for-coding"], model: "k2p5" },
|
|
|
|
|
{ providers: ["opencode"], model: "kimi-k2.5-free" },
|
2026-01-22 22:42:53 +09:00
|
|
|
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" },
|
2026-01-24 15:30:35 +09:00
|
|
|
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "max" },
|
2026-01-22 22:42:53 +09:00
|
|
|
],
|
|
|
|
|
},
|
2026-01-23 21:41:55 +09:00
|
|
|
momus: {
|
2026-01-22 22:42:53 +09:00
|
|
|
fallbackChain: [
|
|
|
|
|
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "medium" },
|
2026-01-30 13:59:09 +09:00
|
|
|
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-5", variant: "max" },
|
2026-01-24 15:30:35 +09:00
|
|
|
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "max" },
|
2026-01-22 22:42:53 +09:00
|
|
|
],
|
|
|
|
|
},
|
2026-01-23 21:41:55 +09:00
|
|
|
atlas: {
|
2026-01-22 22:42:53 +09:00
|
|
|
fallbackChain: [
|
2026-01-30 15:08:26 +09:00
|
|
|
{ providers: ["kimi-for-coding"], model: "k2p5" },
|
2026-01-30 15:10:38 +09:00
|
|
|
{ providers: ["opencode"], model: "kimi-k2.5-free" },
|
|
|
|
|
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-4-5" },
|
2026-01-22 22:42:53 +09:00
|
|
|
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2" },
|
2026-01-24 15:30:35 +09:00
|
|
|
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro" },
|
2026-01-22 22:42:53 +09:00
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const CATEGORY_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
|
|
|
|
|
"visual-engineering": {
|
|
|
|
|
fallbackChain: [
|
2026-01-24 15:30:35 +09:00
|
|
|
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro" },
|
2026-01-22 22:42:53 +09:00
|
|
|
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-5", variant: "max" },
|
2026-01-30 14:15:43 +09:00
|
|
|
{ providers: ["zai-coding-plan"], model: "glm-4.7" },
|
2026-01-22 22:42:53 +09:00
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
ultrabrain: {
|
|
|
|
|
fallbackChain: [
|
|
|
|
|
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2-codex", variant: "xhigh" },
|
2026-01-30 14:05:47 +09:00
|
|
|
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "max" },
|
2026-01-30 14:52:45 +09:00
|
|
|
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-5", variant: "max" },
|
2026-01-22 22:42:53 +09:00
|
|
|
],
|
|
|
|
|
},
|
2026-01-30 15:11:19 +09:00
|
|
|
deep: {
|
|
|
|
|
fallbackChain: [
|
|
|
|
|
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2-codex", variant: "medium" },
|
|
|
|
|
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-5", variant: "max" },
|
|
|
|
|
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "max" },
|
|
|
|
|
],
|
|
|
|
|
requiresModel: "gpt-5.2-codex",
|
|
|
|
|
},
|
|
|
|
|
artistry: {
|
|
|
|
|
fallbackChain: [
|
|
|
|
|
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "max" },
|
|
|
|
|
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-5", variant: "max" },
|
|
|
|
|
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2" },
|
|
|
|
|
],
|
|
|
|
|
requiresModel: "gemini-3-pro",
|
|
|
|
|
},
|
2026-01-22 22:42:53 +09:00
|
|
|
quick: {
|
|
|
|
|
fallbackChain: [
|
|
|
|
|
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-haiku-4-5" },
|
2026-01-24 15:30:35 +09:00
|
|
|
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-flash" },
|
|
|
|
|
{ providers: ["opencode"], model: "gpt-5-nano" },
|
2026-01-22 22:42:53 +09:00
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
"unspecified-low": {
|
|
|
|
|
fallbackChain: [
|
|
|
|
|
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-4-5" },
|
2026-01-23 15:07:58 +09:00
|
|
|
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2-codex", variant: "medium" },
|
2026-01-24 15:30:35 +09:00
|
|
|
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-flash" },
|
2026-01-22 22:42:53 +09:00
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
"unspecified-high": {
|
|
|
|
|
fallbackChain: [
|
|
|
|
|
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-5", variant: "max" },
|
|
|
|
|
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" },
|
2026-01-24 15:30:35 +09:00
|
|
|
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro" },
|
2026-01-22 22:42:53 +09:00
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
writing: {
|
|
|
|
|
fallbackChain: [
|
2026-01-24 15:30:35 +09:00
|
|
|
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-flash" },
|
2026-01-22 22:42:53 +09:00
|
|
|
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-4-5" },
|
2026-01-23 15:07:58 +09:00
|
|
|
{ providers: ["zai-coding-plan"], model: "glm-4.7" },
|
2026-01-22 22:42:53 +09:00
|
|
|
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2" },
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
}
|