Files
oh-my-opencode/src/cli/__snapshots__/model-fallback.test.ts.snap
T
YeonGyu-Kim 5583021518 feat(model-requirements): add k2p5, kimi-k2.5, gpt-5.4 medium to Sisyphus fallback chain
Sisyphus can now fall back through Kimi and OpenAI models when Claude
is unavailable, enabling OpenAI-only users to use Sisyphus directly
instead of being redirected to Hephaestus.

Runtime chain: claude-opus-4-6 max → k2p5 → kimi-k2.5 → gpt-5.4 medium → glm-5 → big-pickle
CLI chain: claude-opus-4-6 max → k2p5 → gpt-5.4 medium → glm-5
2026-03-08 01:41:45 +09:00

1504 lines
35 KiB
Plaintext

// Bun Snapshot v1, https://bun.sh/docs/test/snapshots
exports[`generateModelConfig no providers available returns ULTIMATE_FALLBACK for all agents and categories when no providers 1`] = `
{
"$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/dev/assets/oh-my-opencode.schema.json",
"agents": {
"atlas": {
"model": "opencode/glm-4.7-free",
},
"explore": {
"model": "opencode/glm-4.7-free",
},
"hephaestus": {
"model": "opencode/glm-4.7-free",
},
"librarian": {
"model": "opencode/glm-4.7-free",
},
"metis": {
"model": "opencode/glm-4.7-free",
},
"momus": {
"model": "opencode/glm-4.7-free",
},
"multimodal-looker": {
"model": "opencode/glm-4.7-free",
},
"oracle": {
"model": "opencode/glm-4.7-free",
},
"prometheus": {
"model": "opencode/glm-4.7-free",
},
},
"categories": {
"artistry": {
"model": "opencode/glm-4.7-free",
},
"deep": {
"model": "opencode/glm-4.7-free",
},
"quick": {
"model": "opencode/glm-4.7-free",
},
"ultrabrain": {
"model": "opencode/glm-4.7-free",
},
"unspecified-high": {
"model": "opencode/glm-4.7-free",
},
"unspecified-low": {
"model": "opencode/glm-4.7-free",
},
"visual-engineering": {
"model": "opencode/glm-4.7-free",
},
"writing": {
"model": "opencode/glm-4.7-free",
},
},
}
`;
exports[`generateModelConfig single native provider uses Claude models when only Claude is available 1`] = `
{
"$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/dev/assets/oh-my-opencode.schema.json",
"agents": {
"atlas": {
"model": "anthropic/claude-sonnet-4-5",
},
"explore": {
"model": "anthropic/claude-haiku-4-5",
},
"librarian": {
"model": "anthropic/claude-sonnet-4-5",
},
"metis": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
"momus": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
"multimodal-looker": {
"model": "opencode/glm-4.7-free",
},
"oracle": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
"prometheus": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
"sisyphus": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
},
"categories": {
"quick": {
"model": "anthropic/claude-haiku-4-5",
},
"ultrabrain": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
"unspecified-high": {
"model": "anthropic/claude-sonnet-4-5",
},
"unspecified-low": {
"model": "anthropic/claude-sonnet-4-5",
},
"visual-engineering": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
"writing": {
"model": "anthropic/claude-sonnet-4-5",
},
},
}
`;
exports[`generateModelConfig single native provider uses Claude models with isMax20 flag 1`] = `
{
"$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/dev/assets/oh-my-opencode.schema.json",
"agents": {
"atlas": {
"model": "anthropic/claude-sonnet-4-5",
},
"explore": {
"model": "anthropic/claude-haiku-4-5",
},
"librarian": {
"model": "anthropic/claude-sonnet-4-5",
},
"metis": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
"momus": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
"multimodal-looker": {
"model": "opencode/glm-4.7-free",
},
"oracle": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
"prometheus": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
"sisyphus": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
},
"categories": {
"quick": {
"model": "anthropic/claude-haiku-4-5",
},
"ultrabrain": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
"unspecified-high": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
"unspecified-low": {
"model": "anthropic/claude-sonnet-4-5",
},
"visual-engineering": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
"writing": {
"model": "anthropic/claude-sonnet-4-5",
},
},
}
`;
exports[`generateModelConfig single native provider uses OpenAI models when only OpenAI is available 1`] = `
{
"$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/dev/assets/oh-my-opencode.schema.json",
"agents": {
"atlas": {
"model": "openai/gpt-5.4",
"variant": "medium",
},
"explore": {
"model": "opencode/gpt-5-nano",
},
"hephaestus": {
"model": "openai/gpt-5.3-codex",
"variant": "medium",
},
"librarian": {
"model": "opencode/glm-4.7-free",
},
"metis": {
"model": "openai/gpt-5.4",
"variant": "high",
},
"momus": {
"model": "openai/gpt-5.4",
"variant": "xhigh",
},
"multimodal-looker": {
"model": "openai/gpt-5.3-codex",
"variant": "medium",
},
"oracle": {
"model": "openai/gpt-5.4",
"variant": "high",
},
"prometheus": {
"model": "openai/gpt-5.4",
"variant": "high",
},
"sisyphus": {
"model": "openai/gpt-5.4",
"variant": "medium",
},
},
"categories": {
"deep": {
"model": "openai/gpt-5.3-codex",
"variant": "medium",
},
"quick": {
"model": "opencode/glm-4.7-free",
},
"ultrabrain": {
"model": "openai/gpt-5.3-codex",
"variant": "xhigh",
},
"unspecified-high": {
"model": "openai/gpt-5.3-codex",
"variant": "medium",
},
"unspecified-low": {
"model": "openai/gpt-5.3-codex",
"variant": "medium",
},
"visual-engineering": {
"model": "opencode/glm-4.7-free",
},
"writing": {
"model": "opencode/glm-4.7-free",
},
},
}
`;
exports[`generateModelConfig single native provider uses OpenAI models with isMax20 flag 1`] = `
{
"$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/dev/assets/oh-my-opencode.schema.json",
"agents": {
"atlas": {
"model": "openai/gpt-5.4",
"variant": "medium",
},
"explore": {
"model": "opencode/gpt-5-nano",
},
"hephaestus": {
"model": "openai/gpt-5.3-codex",
"variant": "medium",
},
"librarian": {
"model": "opencode/glm-4.7-free",
},
"metis": {
"model": "openai/gpt-5.4",
"variant": "high",
},
"momus": {
"model": "openai/gpt-5.4",
"variant": "xhigh",
},
"multimodal-looker": {
"model": "openai/gpt-5.3-codex",
"variant": "medium",
},
"oracle": {
"model": "openai/gpt-5.4",
"variant": "high",
},
"prometheus": {
"model": "openai/gpt-5.4",
"variant": "high",
},
"sisyphus": {
"model": "openai/gpt-5.4",
"variant": "medium",
},
},
"categories": {
"deep": {
"model": "openai/gpt-5.3-codex",
"variant": "medium",
},
"quick": {
"model": "opencode/glm-4.7-free",
},
"ultrabrain": {
"model": "openai/gpt-5.3-codex",
"variant": "xhigh",
},
"unspecified-high": {
"model": "openai/gpt-5.4",
"variant": "high",
},
"unspecified-low": {
"model": "openai/gpt-5.3-codex",
"variant": "medium",
},
"visual-engineering": {
"model": "opencode/glm-4.7-free",
},
"writing": {
"model": "opencode/glm-4.7-free",
},
},
}
`;
exports[`generateModelConfig single native provider uses Gemini models when only Gemini is available 1`] = `
{
"$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/dev/assets/oh-my-opencode.schema.json",
"agents": {
"atlas": {
"model": "google/gemini-3.1-pro-preview",
},
"explore": {
"model": "opencode/gpt-5-nano",
},
"librarian": {
"model": "opencode/glm-4.7-free",
},
"metis": {
"model": "google/gemini-3.1-pro-preview",
"variant": "high",
},
"momus": {
"model": "google/gemini-3.1-pro-preview",
"variant": "high",
},
"multimodal-looker": {
"model": "google/gemini-3-flash-preview",
},
"oracle": {
"model": "google/gemini-3.1-pro-preview",
"variant": "high",
},
"prometheus": {
"model": "google/gemini-3.1-pro-preview",
},
},
"categories": {
"artistry": {
"model": "google/gemini-3.1-pro-preview",
"variant": "high",
},
"quick": {
"model": "google/gemini-3-flash-preview",
},
"ultrabrain": {
"model": "google/gemini-3.1-pro-preview",
"variant": "high",
},
"unspecified-high": {
"model": "google/gemini-3-flash-preview",
},
"unspecified-low": {
"model": "google/gemini-3-flash-preview",
},
"visual-engineering": {
"model": "google/gemini-3.1-pro-preview",
"variant": "high",
},
"writing": {
"model": "google/gemini-3-flash-preview",
},
},
}
`;
exports[`generateModelConfig single native provider uses Gemini models with isMax20 flag 1`] = `
{
"$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/dev/assets/oh-my-opencode.schema.json",
"agents": {
"atlas": {
"model": "google/gemini-3.1-pro-preview",
},
"explore": {
"model": "opencode/gpt-5-nano",
},
"librarian": {
"model": "opencode/glm-4.7-free",
},
"metis": {
"model": "google/gemini-3.1-pro-preview",
"variant": "high",
},
"momus": {
"model": "google/gemini-3.1-pro-preview",
"variant": "high",
},
"multimodal-looker": {
"model": "google/gemini-3-flash-preview",
},
"oracle": {
"model": "google/gemini-3.1-pro-preview",
"variant": "high",
},
"prometheus": {
"model": "google/gemini-3.1-pro-preview",
},
},
"categories": {
"artistry": {
"model": "google/gemini-3.1-pro-preview",
"variant": "high",
},
"quick": {
"model": "google/gemini-3-flash-preview",
},
"ultrabrain": {
"model": "google/gemini-3.1-pro-preview",
"variant": "high",
},
"unspecified-high": {
"model": "opencode/glm-4.7-free",
},
"unspecified-low": {
"model": "google/gemini-3-flash-preview",
},
"visual-engineering": {
"model": "google/gemini-3.1-pro-preview",
"variant": "high",
},
"writing": {
"model": "google/gemini-3-flash-preview",
},
},
}
`;
exports[`generateModelConfig all native providers uses preferred models from fallback chains when all natives available 1`] = `
{
"$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/dev/assets/oh-my-opencode.schema.json",
"agents": {
"atlas": {
"model": "anthropic/claude-sonnet-4-5",
},
"explore": {
"model": "anthropic/claude-haiku-4-5",
},
"hephaestus": {
"model": "openai/gpt-5.3-codex",
"variant": "medium",
},
"librarian": {
"model": "anthropic/claude-sonnet-4-5",
},
"metis": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
"momus": {
"model": "openai/gpt-5.4",
"variant": "xhigh",
},
"multimodal-looker": {
"model": "openai/gpt-5.3-codex",
"variant": "medium",
},
"oracle": {
"model": "openai/gpt-5.4",
"variant": "high",
},
"prometheus": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
"sisyphus": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
},
"categories": {
"artistry": {
"model": "google/gemini-3.1-pro-preview",
"variant": "high",
},
"deep": {
"model": "openai/gpt-5.3-codex",
"variant": "medium",
},
"quick": {
"model": "anthropic/claude-haiku-4-5",
},
"ultrabrain": {
"model": "openai/gpt-5.3-codex",
"variant": "xhigh",
},
"unspecified-high": {
"model": "anthropic/claude-sonnet-4-5",
},
"unspecified-low": {
"model": "anthropic/claude-sonnet-4-5",
},
"visual-engineering": {
"model": "google/gemini-3.1-pro-preview",
"variant": "high",
},
"writing": {
"model": "google/gemini-3-flash-preview",
},
},
}
`;
exports[`generateModelConfig all native providers uses preferred models with isMax20 flag when all natives available 1`] = `
{
"$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/dev/assets/oh-my-opencode.schema.json",
"agents": {
"atlas": {
"model": "anthropic/claude-sonnet-4-5",
},
"explore": {
"model": "anthropic/claude-haiku-4-5",
},
"hephaestus": {
"model": "openai/gpt-5.3-codex",
"variant": "medium",
},
"librarian": {
"model": "anthropic/claude-sonnet-4-5",
},
"metis": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
"momus": {
"model": "openai/gpt-5.4",
"variant": "xhigh",
},
"multimodal-looker": {
"model": "openai/gpt-5.3-codex",
"variant": "medium",
},
"oracle": {
"model": "openai/gpt-5.4",
"variant": "high",
},
"prometheus": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
"sisyphus": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
},
"categories": {
"artistry": {
"model": "google/gemini-3.1-pro-preview",
"variant": "high",
},
"deep": {
"model": "openai/gpt-5.3-codex",
"variant": "medium",
},
"quick": {
"model": "anthropic/claude-haiku-4-5",
},
"ultrabrain": {
"model": "openai/gpt-5.3-codex",
"variant": "xhigh",
},
"unspecified-high": {
"model": "openai/gpt-5.4",
"variant": "high",
},
"unspecified-low": {
"model": "anthropic/claude-sonnet-4-5",
},
"visual-engineering": {
"model": "google/gemini-3.1-pro-preview",
"variant": "high",
},
"writing": {
"model": "google/gemini-3-flash-preview",
},
},
}
`;
exports[`generateModelConfig fallback providers uses OpenCode Zen models when only OpenCode Zen is available 1`] = `
{
"$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/dev/assets/oh-my-opencode.schema.json",
"agents": {
"atlas": {
"model": "opencode/claude-sonnet-4-5",
},
"explore": {
"model": "opencode/claude-haiku-4-5",
},
"hephaestus": {
"model": "opencode/gpt-5.3-codex",
"variant": "medium",
},
"librarian": {
"model": "opencode/glm-4.7-free",
},
"metis": {
"model": "opencode/claude-opus-4-6",
"variant": "max",
},
"momus": {
"model": "opencode/gpt-5.4",
"variant": "xhigh",
},
"multimodal-looker": {
"model": "opencode/gpt-5.3-codex",
"variant": "medium",
},
"oracle": {
"model": "opencode/gpt-5.4",
"variant": "high",
},
"prometheus": {
"model": "opencode/claude-opus-4-6",
"variant": "max",
},
"sisyphus": {
"model": "opencode/claude-opus-4-6",
"variant": "max",
},
},
"categories": {
"artistry": {
"model": "opencode/gemini-3.1-pro",
"variant": "high",
},
"deep": {
"model": "opencode/gpt-5.3-codex",
"variant": "medium",
},
"quick": {
"model": "opencode/claude-haiku-4-5",
},
"ultrabrain": {
"model": "opencode/gpt-5.3-codex",
"variant": "xhigh",
},
"unspecified-high": {
"model": "opencode/claude-sonnet-4-5",
},
"unspecified-low": {
"model": "opencode/claude-sonnet-4-5",
},
"visual-engineering": {
"model": "opencode/gemini-3.1-pro",
"variant": "high",
},
"writing": {
"model": "opencode/gemini-3-flash",
},
},
}
`;
exports[`generateModelConfig fallback providers uses OpenCode Zen models with isMax20 flag 1`] = `
{
"$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/dev/assets/oh-my-opencode.schema.json",
"agents": {
"atlas": {
"model": "opencode/claude-sonnet-4-5",
},
"explore": {
"model": "opencode/claude-haiku-4-5",
},
"hephaestus": {
"model": "opencode/gpt-5.3-codex",
"variant": "medium",
},
"librarian": {
"model": "opencode/glm-4.7-free",
},
"metis": {
"model": "opencode/claude-opus-4-6",
"variant": "max",
},
"momus": {
"model": "opencode/gpt-5.4",
"variant": "xhigh",
},
"multimodal-looker": {
"model": "opencode/gpt-5.3-codex",
"variant": "medium",
},
"oracle": {
"model": "opencode/gpt-5.4",
"variant": "high",
},
"prometheus": {
"model": "opencode/claude-opus-4-6",
"variant": "max",
},
"sisyphus": {
"model": "opencode/claude-opus-4-6",
"variant": "max",
},
},
"categories": {
"artistry": {
"model": "opencode/gemini-3.1-pro",
"variant": "high",
},
"deep": {
"model": "opencode/gpt-5.3-codex",
"variant": "medium",
},
"quick": {
"model": "opencode/claude-haiku-4-5",
},
"ultrabrain": {
"model": "opencode/gpt-5.3-codex",
"variant": "xhigh",
},
"unspecified-high": {
"model": "opencode/gpt-5.4",
"variant": "high",
},
"unspecified-low": {
"model": "opencode/claude-sonnet-4-5",
},
"visual-engineering": {
"model": "opencode/gemini-3.1-pro",
"variant": "high",
},
"writing": {
"model": "opencode/gemini-3-flash",
},
},
}
`;
exports[`generateModelConfig fallback providers uses GitHub Copilot models when only Copilot is available 1`] = `
{
"$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/dev/assets/oh-my-opencode.schema.json",
"agents": {
"atlas": {
"model": "github-copilot/claude-sonnet-4.5",
},
"explore": {
"model": "github-copilot/gpt-5-mini",
},
"librarian": {
"model": "github-copilot/claude-sonnet-4.5",
},
"metis": {
"model": "github-copilot/claude-opus-4.6",
"variant": "max",
},
"momus": {
"model": "github-copilot/gpt-5.4",
"variant": "xhigh",
},
"multimodal-looker": {
"model": "github-copilot/gemini-3-flash-preview",
},
"oracle": {
"model": "github-copilot/gpt-5.4",
"variant": "high",
},
"prometheus": {
"model": "github-copilot/claude-opus-4.6",
"variant": "max",
},
"sisyphus": {
"model": "github-copilot/claude-opus-4.6",
"variant": "max",
},
},
"categories": {
"artistry": {
"model": "github-copilot/gemini-3.1-pro-preview",
"variant": "high",
},
"quick": {
"model": "github-copilot/claude-haiku-4.5",
},
"ultrabrain": {
"model": "github-copilot/gemini-3.1-pro-preview",
"variant": "high",
},
"unspecified-high": {
"model": "github-copilot/claude-sonnet-4.5",
},
"unspecified-low": {
"model": "github-copilot/claude-sonnet-4.5",
},
"visual-engineering": {
"model": "github-copilot/gemini-3.1-pro-preview",
"variant": "high",
},
"writing": {
"model": "github-copilot/gemini-3-flash-preview",
},
},
}
`;
exports[`generateModelConfig fallback providers uses GitHub Copilot models with isMax20 flag 1`] = `
{
"$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/dev/assets/oh-my-opencode.schema.json",
"agents": {
"atlas": {
"model": "github-copilot/claude-sonnet-4.5",
},
"explore": {
"model": "github-copilot/gpt-5-mini",
},
"librarian": {
"model": "github-copilot/claude-sonnet-4.5",
},
"metis": {
"model": "github-copilot/claude-opus-4.6",
"variant": "max",
},
"momus": {
"model": "github-copilot/gpt-5.4",
"variant": "xhigh",
},
"multimodal-looker": {
"model": "github-copilot/gemini-3-flash-preview",
},
"oracle": {
"model": "github-copilot/gpt-5.4",
"variant": "high",
},
"prometheus": {
"model": "github-copilot/claude-opus-4.6",
"variant": "max",
},
"sisyphus": {
"model": "github-copilot/claude-opus-4.6",
"variant": "max",
},
},
"categories": {
"artistry": {
"model": "github-copilot/gemini-3.1-pro-preview",
"variant": "high",
},
"quick": {
"model": "github-copilot/claude-haiku-4.5",
},
"ultrabrain": {
"model": "github-copilot/gemini-3.1-pro-preview",
"variant": "high",
},
"unspecified-high": {
"model": "github-copilot/gpt-5.4",
"variant": "high",
},
"unspecified-low": {
"model": "github-copilot/claude-sonnet-4.5",
},
"visual-engineering": {
"model": "github-copilot/gemini-3.1-pro-preview",
"variant": "high",
},
"writing": {
"model": "github-copilot/gemini-3-flash-preview",
},
},
}
`;
exports[`generateModelConfig fallback providers uses ZAI model for librarian when only ZAI is available 1`] = `
{
"$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/dev/assets/oh-my-opencode.schema.json",
"agents": {
"atlas": {
"model": "opencode/glm-4.7-free",
},
"explore": {
"model": "opencode/gpt-5-nano",
},
"librarian": {
"model": "zai-coding-plan/glm-4.7",
},
"metis": {
"model": "opencode/glm-4.7-free",
},
"momus": {
"model": "opencode/glm-4.7-free",
},
"multimodal-looker": {
"model": "zai-coding-plan/glm-4.6v",
},
"oracle": {
"model": "opencode/glm-4.7-free",
},
"prometheus": {
"model": "opencode/glm-4.7-free",
},
"sisyphus": {
"model": "zai-coding-plan/glm-5",
},
},
"categories": {
"quick": {
"model": "opencode/glm-4.7-free",
},
"ultrabrain": {
"model": "opencode/glm-4.7-free",
},
"unspecified-high": {
"model": "opencode/glm-4.7-free",
},
"unspecified-low": {
"model": "opencode/glm-4.7-free",
},
"visual-engineering": {
"model": "zai-coding-plan/glm-5",
},
"writing": {
"model": "opencode/glm-4.7-free",
},
},
}
`;
exports[`generateModelConfig fallback providers uses ZAI model for librarian with isMax20 flag 1`] = `
{
"$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/dev/assets/oh-my-opencode.schema.json",
"agents": {
"atlas": {
"model": "opencode/glm-4.7-free",
},
"explore": {
"model": "opencode/gpt-5-nano",
},
"librarian": {
"model": "zai-coding-plan/glm-4.7",
},
"metis": {
"model": "opencode/glm-4.7-free",
},
"momus": {
"model": "opencode/glm-4.7-free",
},
"multimodal-looker": {
"model": "zai-coding-plan/glm-4.6v",
},
"oracle": {
"model": "opencode/glm-4.7-free",
},
"prometheus": {
"model": "opencode/glm-4.7-free",
},
"sisyphus": {
"model": "zai-coding-plan/glm-5",
},
},
"categories": {
"quick": {
"model": "opencode/glm-4.7-free",
},
"ultrabrain": {
"model": "opencode/glm-4.7-free",
},
"unspecified-high": {
"model": "zai-coding-plan/glm-5",
},
"unspecified-low": {
"model": "opencode/glm-4.7-free",
},
"visual-engineering": {
"model": "zai-coding-plan/glm-5",
},
"writing": {
"model": "opencode/glm-4.7-free",
},
},
}
`;
exports[`generateModelConfig mixed provider scenarios uses Claude + OpenCode Zen combination 1`] = `
{
"$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/dev/assets/oh-my-opencode.schema.json",
"agents": {
"atlas": {
"model": "anthropic/claude-sonnet-4-5",
},
"explore": {
"model": "anthropic/claude-haiku-4-5",
},
"hephaestus": {
"model": "opencode/gpt-5.3-codex",
"variant": "medium",
},
"librarian": {
"model": "opencode/glm-4.7-free",
},
"metis": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
"momus": {
"model": "opencode/gpt-5.4",
"variant": "xhigh",
},
"multimodal-looker": {
"model": "opencode/gpt-5.3-codex",
"variant": "medium",
},
"oracle": {
"model": "opencode/gpt-5.4",
"variant": "high",
},
"prometheus": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
"sisyphus": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
},
"categories": {
"artistry": {
"model": "opencode/gemini-3.1-pro",
"variant": "high",
},
"deep": {
"model": "opencode/gpt-5.3-codex",
"variant": "medium",
},
"quick": {
"model": "anthropic/claude-haiku-4-5",
},
"ultrabrain": {
"model": "opencode/gpt-5.3-codex",
"variant": "xhigh",
},
"unspecified-high": {
"model": "anthropic/claude-sonnet-4-5",
},
"unspecified-low": {
"model": "anthropic/claude-sonnet-4-5",
},
"visual-engineering": {
"model": "opencode/gemini-3.1-pro",
"variant": "high",
},
"writing": {
"model": "opencode/gemini-3-flash",
},
},
}
`;
exports[`generateModelConfig mixed provider scenarios uses OpenAI + Copilot combination 1`] = `
{
"$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/dev/assets/oh-my-opencode.schema.json",
"agents": {
"atlas": {
"model": "github-copilot/claude-sonnet-4.5",
},
"explore": {
"model": "github-copilot/gpt-5-mini",
},
"hephaestus": {
"model": "openai/gpt-5.3-codex",
"variant": "medium",
},
"librarian": {
"model": "github-copilot/claude-sonnet-4.5",
},
"metis": {
"model": "github-copilot/claude-opus-4.6",
"variant": "max",
},
"momus": {
"model": "openai/gpt-5.4",
"variant": "xhigh",
},
"multimodal-looker": {
"model": "openai/gpt-5.3-codex",
"variant": "medium",
},
"oracle": {
"model": "openai/gpt-5.4",
"variant": "high",
},
"prometheus": {
"model": "github-copilot/claude-opus-4.6",
"variant": "max",
},
"sisyphus": {
"model": "github-copilot/claude-opus-4.6",
"variant": "max",
},
},
"categories": {
"artistry": {
"model": "github-copilot/gemini-3.1-pro-preview",
"variant": "high",
},
"deep": {
"model": "openai/gpt-5.3-codex",
"variant": "medium",
},
"quick": {
"model": "github-copilot/claude-haiku-4.5",
},
"ultrabrain": {
"model": "openai/gpt-5.3-codex",
"variant": "xhigh",
},
"unspecified-high": {
"model": "github-copilot/claude-sonnet-4.5",
},
"unspecified-low": {
"model": "github-copilot/claude-sonnet-4.5",
},
"visual-engineering": {
"model": "github-copilot/gemini-3.1-pro-preview",
"variant": "high",
},
"writing": {
"model": "github-copilot/gemini-3-flash-preview",
},
},
}
`;
exports[`generateModelConfig mixed provider scenarios uses Claude + ZAI combination (librarian uses ZAI) 1`] = `
{
"$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/dev/assets/oh-my-opencode.schema.json",
"agents": {
"atlas": {
"model": "anthropic/claude-sonnet-4-5",
},
"explore": {
"model": "anthropic/claude-haiku-4-5",
},
"librarian": {
"model": "zai-coding-plan/glm-4.7",
},
"metis": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
"momus": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
"multimodal-looker": {
"model": "zai-coding-plan/glm-4.6v",
},
"oracle": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
"prometheus": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
"sisyphus": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
},
"categories": {
"quick": {
"model": "anthropic/claude-haiku-4-5",
},
"ultrabrain": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
"unspecified-high": {
"model": "anthropic/claude-sonnet-4-5",
},
"unspecified-low": {
"model": "anthropic/claude-sonnet-4-5",
},
"visual-engineering": {
"model": "zai-coding-plan/glm-5",
},
"writing": {
"model": "anthropic/claude-sonnet-4-5",
},
},
}
`;
exports[`generateModelConfig mixed provider scenarios uses Gemini + Claude combination (explore uses Gemini) 1`] = `
{
"$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/dev/assets/oh-my-opencode.schema.json",
"agents": {
"atlas": {
"model": "anthropic/claude-sonnet-4-5",
},
"explore": {
"model": "anthropic/claude-haiku-4-5",
},
"librarian": {
"model": "anthropic/claude-sonnet-4-5",
},
"metis": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
"momus": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
"multimodal-looker": {
"model": "google/gemini-3-flash-preview",
},
"oracle": {
"model": "google/gemini-3.1-pro-preview",
"variant": "high",
},
"prometheus": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
"sisyphus": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
},
"categories": {
"artistry": {
"model": "google/gemini-3.1-pro-preview",
"variant": "high",
},
"quick": {
"model": "anthropic/claude-haiku-4-5",
},
"ultrabrain": {
"model": "google/gemini-3.1-pro-preview",
"variant": "high",
},
"unspecified-high": {
"model": "anthropic/claude-sonnet-4-5",
},
"unspecified-low": {
"model": "anthropic/claude-sonnet-4-5",
},
"visual-engineering": {
"model": "google/gemini-3.1-pro-preview",
"variant": "high",
},
"writing": {
"model": "google/gemini-3-flash-preview",
},
},
}
`;
exports[`generateModelConfig mixed provider scenarios uses all fallback providers together 1`] = `
{
"$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/dev/assets/oh-my-opencode.schema.json",
"agents": {
"atlas": {
"model": "github-copilot/claude-sonnet-4.5",
},
"explore": {
"model": "opencode/claude-haiku-4-5",
},
"hephaestus": {
"model": "opencode/gpt-5.3-codex",
"variant": "medium",
},
"librarian": {
"model": "zai-coding-plan/glm-4.7",
},
"metis": {
"model": "github-copilot/claude-opus-4.6",
"variant": "max",
},
"momus": {
"model": "github-copilot/gpt-5.4",
"variant": "xhigh",
},
"multimodal-looker": {
"model": "opencode/gpt-5.3-codex",
"variant": "medium",
},
"oracle": {
"model": "github-copilot/gpt-5.4",
"variant": "high",
},
"prometheus": {
"model": "github-copilot/claude-opus-4.6",
"variant": "max",
},
"sisyphus": {
"model": "github-copilot/claude-opus-4.6",
"variant": "max",
},
},
"categories": {
"artistry": {
"model": "github-copilot/gemini-3.1-pro-preview",
"variant": "high",
},
"deep": {
"model": "opencode/gpt-5.3-codex",
"variant": "medium",
},
"quick": {
"model": "github-copilot/claude-haiku-4.5",
},
"ultrabrain": {
"model": "opencode/gpt-5.3-codex",
"variant": "xhigh",
},
"unspecified-high": {
"model": "github-copilot/claude-sonnet-4.5",
},
"unspecified-low": {
"model": "github-copilot/claude-sonnet-4.5",
},
"visual-engineering": {
"model": "github-copilot/gemini-3.1-pro-preview",
"variant": "high",
},
"writing": {
"model": "github-copilot/gemini-3-flash-preview",
},
},
}
`;
exports[`generateModelConfig mixed provider scenarios uses all providers together 1`] = `
{
"$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/dev/assets/oh-my-opencode.schema.json",
"agents": {
"atlas": {
"model": "anthropic/claude-sonnet-4-5",
},
"explore": {
"model": "anthropic/claude-haiku-4-5",
},
"hephaestus": {
"model": "openai/gpt-5.3-codex",
"variant": "medium",
},
"librarian": {
"model": "zai-coding-plan/glm-4.7",
},
"metis": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
"momus": {
"model": "openai/gpt-5.4",
"variant": "xhigh",
},
"multimodal-looker": {
"model": "openai/gpt-5.3-codex",
"variant": "medium",
},
"oracle": {
"model": "openai/gpt-5.4",
"variant": "high",
},
"prometheus": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
"sisyphus": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
},
"categories": {
"artistry": {
"model": "google/gemini-3.1-pro-preview",
"variant": "high",
},
"deep": {
"model": "openai/gpt-5.3-codex",
"variant": "medium",
},
"quick": {
"model": "anthropic/claude-haiku-4-5",
},
"ultrabrain": {
"model": "openai/gpt-5.3-codex",
"variant": "xhigh",
},
"unspecified-high": {
"model": "anthropic/claude-sonnet-4-5",
},
"unspecified-low": {
"model": "anthropic/claude-sonnet-4-5",
},
"visual-engineering": {
"model": "google/gemini-3.1-pro-preview",
"variant": "high",
},
"writing": {
"model": "google/gemini-3-flash-preview",
},
},
}
`;
exports[`generateModelConfig mixed provider scenarios uses all providers with isMax20 flag 1`] = `
{
"$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/dev/assets/oh-my-opencode.schema.json",
"agents": {
"atlas": {
"model": "anthropic/claude-sonnet-4-5",
},
"explore": {
"model": "anthropic/claude-haiku-4-5",
},
"hephaestus": {
"model": "openai/gpt-5.3-codex",
"variant": "medium",
},
"librarian": {
"model": "zai-coding-plan/glm-4.7",
},
"metis": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
"momus": {
"model": "openai/gpt-5.4",
"variant": "xhigh",
},
"multimodal-looker": {
"model": "openai/gpt-5.3-codex",
"variant": "medium",
},
"oracle": {
"model": "openai/gpt-5.4",
"variant": "high",
},
"prometheus": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
"sisyphus": {
"model": "anthropic/claude-opus-4-6",
"variant": "max",
},
},
"categories": {
"artistry": {
"model": "google/gemini-3.1-pro-preview",
"variant": "high",
},
"deep": {
"model": "openai/gpt-5.3-codex",
"variant": "medium",
},
"quick": {
"model": "anthropic/claude-haiku-4-5",
},
"ultrabrain": {
"model": "openai/gpt-5.3-codex",
"variant": "xhigh",
},
"unspecified-high": {
"model": "openai/gpt-5.4",
"variant": "high",
},
"unspecified-low": {
"model": "anthropic/claude-sonnet-4-5",
},
"visual-engineering": {
"model": "google/gemini-3.1-pro-preview",
"variant": "high",
},
"writing": {
"model": "google/gemini-3-flash-preview",
},
},
}
`;