2dfa6336f5
Source code change: - src/shared/model-requirements.ts: prepend claude-sonnet-4-6 to metis fallback chain so Sonnet becomes the default. Opus 4.7 max remains as the immediate fallback for callers who want extra reasoning. - src/shared/model-requirements.test.ts: update assertion to expect Sonnet primary + Opus secondary. AGENTS.md accuracy fixes (verified against source): - Agent modes: Sisyphus/Hephaestus are 'primary' (not 'all'); Sisyphus-Junior is 'subagent' (not 'all'). Confirmed via 'const MODE: AgentMode = ...' in each agent file. Also clarified Prometheus has no agentSources factory and is built via buildPrometheusAgentConfig. - Sisyphus fallback chain: corrected order to kimi-k2.6 → k2p5 → kimi-k2.5 → gpt-5.5 medium → glm-5 → big-pickle (was missing kimi-k2.5). - Librarian/Explore: added missing minimax-m2.7 step between -highspeed and claude-haiku-4-5. - Metis chain: removed fictitious gemini-3.1-pro entry. - Sisyphus-Junior chain: spelled out the actual fallback (was 'user-configurable'). - Temperatures: Sisyphus/Hephaestus do not set explicit temperature (model default); Sisyphus-Junior is 0.1 via SISYPHUS_JUNIOR_DEFAULTS. - Quick category default: gpt-5.4-mini (not gpt-5.4-mini-fast). Team-mode corrections: - Eligibility registry has 3 verdicts: eligible (sisyphus, atlas, sisyphus-junior), conditional (hephaestus — needs D-36 teammate permission), hard-reject (oracle, librarian, explore, multimodal-looker, metis, momus, prometheus). - Schema has 11 fields, not 4: added max_messages_per_run, max_wall_clock_minutes, max_member_turns, base_dir, message_payload_max_bytes, recipient_unread_max_bytes, mailbox_poll_interval_ms. - Hooks: 'team-session-events' is 4 sub-handlers in src/plugin/event.ts (team-idle-wake-hint, team-lead-orphan-handler, team-member-error-handler, team-member-status-handler), not a single Continuation-tier hook. - Tier counts now show base + team-mode: ToolGuard 14/15, Transform 5/7. - Total: 52 base hooks, 59 with team-mode. Doc cascade for the Metis change: - docs/guide/orchestration.md, agent-model-matching.md, installation.md - docs/reference/configuration.md, features.md
346 lines
11 KiB
TypeScript
346 lines
11 KiB
TypeScript
export type FallbackEntry = {
|
|
providers: string[];
|
|
model: string;
|
|
variant?: string; // Entry-specific variant (e.g., GPT→high, Opus→max)
|
|
reasoningEffort?: string;
|
|
temperature?: number;
|
|
top_p?: number;
|
|
maxTokens?: number;
|
|
thinking?: { type: "enabled" | "disabled"; budgetTokens?: number };
|
|
};
|
|
|
|
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<string, ModelRequirement> = {
|
|
sisyphus: {
|
|
fallbackChain: [
|
|
{
|
|
providers: ["anthropic", "github-copilot", "opencode", "vercel"],
|
|
model: "claude-opus-4-7",
|
|
variant: "max",
|
|
},
|
|
{ providers: ["opencode-go", "vercel"], model: "kimi-k2.6" },
|
|
{ providers: ["kimi-for-coding"], model: "k2p5" },
|
|
{
|
|
providers: [
|
|
"opencode",
|
|
"moonshotai",
|
|
"moonshotai-cn",
|
|
"firmware",
|
|
"ollama-cloud",
|
|
"aihubmix",
|
|
"vercel",
|
|
],
|
|
model: "kimi-k2.5",
|
|
},
|
|
{ providers: ["openai", "github-copilot", "opencode", "vercel"], model: "gpt-5.5", variant: "medium" },
|
|
{ providers: ["zai-coding-plan", "opencode", "vercel"], model: "glm-5" },
|
|
{ providers: ["opencode"], model: "big-pickle" },
|
|
],
|
|
requiresAnyModel: true,
|
|
},
|
|
hephaestus: {
|
|
fallbackChain: [
|
|
{
|
|
providers: ["openai", "github-copilot", "venice", "opencode", "vercel"],
|
|
model: "gpt-5.5",
|
|
variant: "medium",
|
|
},
|
|
],
|
|
requiresProvider: ["openai", "github-copilot", "venice", "opencode", "vercel"],
|
|
},
|
|
oracle: {
|
|
fallbackChain: [
|
|
{
|
|
providers: ["openai", "github-copilot", "opencode", "vercel"],
|
|
model: "gpt-5.5",
|
|
variant: "high",
|
|
},
|
|
{
|
|
providers: ["google", "github-copilot", "opencode", "vercel"],
|
|
model: "gemini-3.1-pro",
|
|
variant: "high",
|
|
},
|
|
{
|
|
providers: ["anthropic", "github-copilot", "opencode", "vercel"],
|
|
model: "claude-opus-4-7",
|
|
variant: "max",
|
|
},
|
|
{ providers: ["opencode-go", "vercel"], model: "glm-5.1" },
|
|
],
|
|
},
|
|
librarian: {
|
|
fallbackChain: [
|
|
{ providers: ["openai"], model: "gpt-5.4-mini-fast" },
|
|
{ providers: ["opencode-go"], model: "qwen3.5-plus" },
|
|
{ providers: ["vercel"], model: "minimax-m2.7-highspeed" },
|
|
{ providers: ["opencode-go", "vercel"], model: "minimax-m2.7" },
|
|
{ providers: ["anthropic", "opencode", "vercel"], model: "claude-haiku-4-5" },
|
|
{ providers: ["openai", "opencode", "vercel"], model: "gpt-5.4-nano" },
|
|
],
|
|
},
|
|
explore: {
|
|
fallbackChain: [
|
|
{ providers: ["openai"], model: "gpt-5.4-mini-fast" },
|
|
{ providers: ["opencode-go"], model: "qwen3.5-plus" },
|
|
{ providers: ["vercel"], model: "minimax-m2.7-highspeed" },
|
|
{ providers: ["opencode-go", "vercel"], model: "minimax-m2.7" },
|
|
{ providers: ["anthropic", "opencode", "vercel"], model: "claude-haiku-4-5" },
|
|
{ providers: ["openai", "opencode", "vercel"], model: "gpt-5.4-nano" },
|
|
],
|
|
},
|
|
"multimodal-looker": {
|
|
fallbackChain: [
|
|
{ providers: ["openai", "opencode", "vercel"], model: "gpt-5.5", variant: "medium" },
|
|
{ providers: ["opencode-go", "vercel"], model: "kimi-k2.6" },
|
|
{ providers: ["zai-coding-plan", "vercel"], model: "glm-4.6v" },
|
|
{ providers: ["openai", "github-copilot", "opencode", "vercel"], model: "gpt-5-nano" },
|
|
],
|
|
},
|
|
prometheus: {
|
|
fallbackChain: [
|
|
{
|
|
providers: ["anthropic", "github-copilot", "opencode", "vercel"],
|
|
model: "claude-opus-4-7",
|
|
variant: "max",
|
|
},
|
|
{
|
|
providers: ["openai", "github-copilot", "opencode", "vercel"],
|
|
model: "gpt-5.5",
|
|
variant: "high",
|
|
},
|
|
{ providers: ["opencode-go", "vercel"], model: "glm-5.1" },
|
|
{
|
|
providers: ["google", "github-copilot", "opencode", "vercel"],
|
|
model: "gemini-3.1-pro",
|
|
},
|
|
],
|
|
},
|
|
metis: {
|
|
fallbackChain: [
|
|
{
|
|
providers: ["anthropic", "github-copilot", "opencode", "vercel"],
|
|
model: "claude-sonnet-4-6",
|
|
},
|
|
{
|
|
providers: ["anthropic", "github-copilot", "opencode", "vercel"],
|
|
model: "claude-opus-4-7",
|
|
variant: "max",
|
|
},
|
|
{
|
|
providers: ["openai", "github-copilot", "opencode", "vercel"],
|
|
model: "gpt-5.5",
|
|
variant: "high",
|
|
},
|
|
{ providers: ["opencode-go", "vercel"], model: "glm-5.1" },
|
|
{ providers: ["kimi-for-coding"], model: "k2p5" },
|
|
],
|
|
},
|
|
momus: {
|
|
fallbackChain: [
|
|
{
|
|
providers: ["openai", "github-copilot", "opencode", "vercel"],
|
|
model: "gpt-5.5",
|
|
variant: "xhigh",
|
|
},
|
|
{
|
|
providers: ["anthropic", "github-copilot", "opencode", "vercel"],
|
|
model: "claude-opus-4-7",
|
|
variant: "max",
|
|
},
|
|
{
|
|
providers: ["google", "github-copilot", "opencode", "vercel"],
|
|
model: "gemini-3.1-pro",
|
|
variant: "high",
|
|
},
|
|
{ providers: ["opencode-go", "vercel"], model: "glm-5.1" },
|
|
],
|
|
},
|
|
atlas: {
|
|
fallbackChain: [
|
|
{ providers: ["anthropic", "github-copilot", "opencode", "vercel"], model: "claude-sonnet-4-6" },
|
|
{ providers: ["opencode-go", "vercel"], model: "kimi-k2.6" },
|
|
{
|
|
providers: ["openai", "github-copilot", "opencode", "vercel"],
|
|
model: "gpt-5.5",
|
|
variant: "medium",
|
|
},
|
|
{ providers: ["opencode-go", "vercel"], model: "minimax-m2.7" },
|
|
],
|
|
},
|
|
"sisyphus-junior": {
|
|
fallbackChain: [
|
|
{ providers: ["anthropic", "github-copilot", "opencode", "vercel"], model: "claude-sonnet-4-6" },
|
|
{ providers: ["opencode-go", "vercel"], model: "kimi-k2.6" },
|
|
{
|
|
providers: ["openai", "github-copilot", "opencode", "vercel"],
|
|
model: "gpt-5.5",
|
|
variant: "medium",
|
|
},
|
|
{ providers: ["opencode-go", "vercel"], model: "minimax-m2.7" },
|
|
{ providers: ["opencode"], model: "big-pickle" },
|
|
],
|
|
},
|
|
};
|
|
|
|
export const CATEGORY_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
|
|
"visual-engineering": {
|
|
fallbackChain: [
|
|
{
|
|
providers: ["google", "github-copilot", "opencode", "vercel"],
|
|
model: "gemini-3.1-pro",
|
|
variant: "high",
|
|
},
|
|
{ providers: ["zai-coding-plan", "opencode", "vercel"], model: "glm-5" },
|
|
{
|
|
providers: ["anthropic", "github-copilot", "opencode", "vercel"],
|
|
model: "claude-opus-4-7",
|
|
variant: "max",
|
|
},
|
|
{ providers: ["opencode-go", "vercel"], model: "glm-5.1" },
|
|
{ providers: ["kimi-for-coding"], model: "k2p5" },
|
|
],
|
|
},
|
|
ultrabrain: {
|
|
fallbackChain: [
|
|
{
|
|
providers: ["openai", "opencode", "vercel"],
|
|
model: "gpt-5.5",
|
|
variant: "xhigh",
|
|
},
|
|
{
|
|
providers: ["google", "github-copilot", "opencode", "vercel"],
|
|
model: "gemini-3.1-pro",
|
|
variant: "high",
|
|
},
|
|
{
|
|
providers: ["anthropic", "github-copilot", "opencode", "vercel"],
|
|
model: "claude-opus-4-7",
|
|
variant: "max",
|
|
},
|
|
{ providers: ["opencode-go", "vercel"], model: "glm-5.1" },
|
|
],
|
|
},
|
|
deep: {
|
|
fallbackChain: [
|
|
{
|
|
providers: ["openai", "github-copilot", "venice", "opencode", "vercel"],
|
|
model: "gpt-5.5",
|
|
variant: "medium",
|
|
},
|
|
{
|
|
providers: ["anthropic", "github-copilot", "opencode", "vercel"],
|
|
model: "claude-opus-4-7",
|
|
variant: "max",
|
|
},
|
|
{
|
|
providers: ["google", "github-copilot", "opencode", "vercel"],
|
|
model: "gemini-3.1-pro",
|
|
variant: "high",
|
|
},
|
|
],
|
|
},
|
|
artistry: {
|
|
fallbackChain: [
|
|
{
|
|
providers: ["google", "github-copilot", "opencode", "vercel"],
|
|
model: "gemini-3.1-pro",
|
|
variant: "high",
|
|
},
|
|
{
|
|
providers: ["anthropic", "github-copilot", "opencode", "vercel"],
|
|
model: "claude-opus-4-7",
|
|
variant: "max",
|
|
},
|
|
{ providers: ["openai", "github-copilot", "opencode", "vercel"], model: "gpt-5.5" },
|
|
],
|
|
},
|
|
quick: {
|
|
fallbackChain: [
|
|
{
|
|
providers: ["openai", "github-copilot", "opencode", "vercel"],
|
|
model: "gpt-5.4-mini",
|
|
},
|
|
{
|
|
providers: ["anthropic", "github-copilot", "opencode", "vercel"],
|
|
model: "claude-haiku-4-5",
|
|
},
|
|
{
|
|
providers: ["google", "github-copilot", "opencode", "vercel"],
|
|
model: "gemini-3-flash",
|
|
},
|
|
{ providers: ["opencode-go", "vercel"], model: "minimax-m2.7" },
|
|
{ providers: ["opencode", "vercel"], model: "gpt-5-nano" },
|
|
],
|
|
},
|
|
"unspecified-low": {
|
|
fallbackChain: [
|
|
{
|
|
providers: ["anthropic", "github-copilot", "opencode", "vercel"],
|
|
model: "claude-sonnet-4-6",
|
|
},
|
|
{
|
|
providers: ["openai", "opencode", "vercel"],
|
|
model: "gpt-5.3-codex",
|
|
variant: "medium",
|
|
},
|
|
{ providers: ["opencode-go", "vercel"], model: "kimi-k2.6" },
|
|
{
|
|
providers: ["google", "github-copilot", "opencode", "vercel"],
|
|
model: "gemini-3-flash",
|
|
},
|
|
{ providers: ["opencode-go", "vercel"], model: "minimax-m2.7" },
|
|
],
|
|
},
|
|
"unspecified-high": {
|
|
fallbackChain: [
|
|
{
|
|
providers: ["anthropic", "github-copilot", "opencode", "vercel"],
|
|
model: "claude-opus-4-7",
|
|
variant: "max",
|
|
},
|
|
{
|
|
providers: ["openai", "github-copilot", "opencode", "vercel"],
|
|
model: "gpt-5.5",
|
|
variant: "high",
|
|
},
|
|
{ providers: ["zai-coding-plan", "opencode", "vercel"], model: "glm-5" },
|
|
{ providers: ["kimi-for-coding"], model: "k2p5" },
|
|
{ providers: ["opencode-go", "vercel"], model: "glm-5.1" },
|
|
{ providers: ["opencode", "vercel"], model: "kimi-k2.5" },
|
|
{
|
|
providers: [
|
|
"opencode",
|
|
"moonshotai",
|
|
"moonshotai-cn",
|
|
"firmware",
|
|
"ollama-cloud",
|
|
"aihubmix",
|
|
"vercel",
|
|
],
|
|
model: "kimi-k2.5",
|
|
},
|
|
],
|
|
},
|
|
writing: {
|
|
fallbackChain: [
|
|
{
|
|
providers: ["google", "github-copilot", "opencode", "vercel"],
|
|
model: "gemini-3-flash",
|
|
},
|
|
{ providers: ["opencode-go", "vercel"], model: "kimi-k2.6" },
|
|
{
|
|
providers: ["anthropic", "github-copilot", "opencode", "vercel"],
|
|
model: "claude-sonnet-4-6",
|
|
},
|
|
{ providers: ["opencode-go", "vercel"], model: "minimax-m2.7" },
|
|
],
|
|
},
|
|
};
|