Spaces:
Runtime error
Runtime error
| // CLI Tools configuration | |
| import { getClaudeCodeDefaultModels } from "@omniroute/open-sse/config/providerRegistry"; | |
| import type { CliCatalogEntry } from "@/shared/schemas/cliCatalog"; | |
| const _cc = getClaudeCodeDefaultModels(); | |
| export const CLI_TOOLS: Record<string, CliCatalogEntry> = { | |
| claude: { | |
| id: "claude", | |
| name: "Claude Code", | |
| icon: "terminal", | |
| color: "#D97757", | |
| description: "Anthropic Claude Code CLI β ANTHROPIC_BASE_URL points to OmniRoute", | |
| docsUrl: "https://docs.anthropic.com/en/docs/claude-code/overview", | |
| configType: "env", | |
| category: "code", | |
| vendor: "Anthropic", | |
| acpSpawnable: true, | |
| baseUrlSupport: "full", | |
| envVars: { | |
| baseUrl: "ANTHROPIC_BASE_URL", | |
| model: "ANTHROPIC_MODEL", | |
| opusModel: "ANTHROPIC_DEFAULT_OPUS_MODEL", | |
| sonnetModel: "ANTHROPIC_DEFAULT_SONNET_MODEL", | |
| haikuModel: "ANTHROPIC_DEFAULT_HAIKU_MODEL", | |
| }, | |
| modelAliases: ["default", "sonnet", "opus", "haiku", "opusplan"], | |
| settingsFile: "~/.claude/settings.json", | |
| defaultCommand: "claude", | |
| defaultModels: [ | |
| { | |
| id: "model", | |
| name: "Default Model", | |
| alias: "model", | |
| envKey: "ANTHROPIC_MODEL", | |
| defaultValue: _cc.sonnet ? `cc/${_cc.sonnet}` : "cc/claude-sonnet-4-5-20250929", | |
| isTopLevel: true, | |
| }, | |
| { | |
| id: "smallFast", | |
| name: "Small Fast Model", | |
| alias: "smallFast", | |
| envKey: "ANTHROPIC_SMALL_FAST_MODEL", | |
| defaultValue: _cc.haiku ? `cc/${_cc.haiku}` : "cc/claude-haiku-4-5-20251001", | |
| isTopLevel: true, | |
| }, | |
| { | |
| id: "opus", | |
| name: "Claude Opus", | |
| alias: "opus", | |
| envKey: "ANTHROPIC_DEFAULT_OPUS_MODEL", | |
| defaultValue: _cc.opus ? `cc/${_cc.opus}` : "cc/claude-opus-4-5-20251101", | |
| }, | |
| { | |
| id: "sonnet", | |
| name: "Claude Sonnet", | |
| alias: "sonnet", | |
| envKey: "ANTHROPIC_DEFAULT_SONNET_MODEL", | |
| defaultValue: _cc.sonnet ? `cc/${_cc.sonnet}` : "cc/claude-sonnet-4-5-20250929", | |
| }, | |
| { | |
| id: "haiku", | |
| name: "Claude Haiku", | |
| alias: "haiku", | |
| envKey: "ANTHROPIC_DEFAULT_HAIKU_MODEL", | |
| defaultValue: _cc.haiku ? `cc/${_cc.haiku}` : "cc/claude-haiku-4-5-20251001", | |
| }, | |
| ], | |
| }, | |
| codex: { | |
| id: "codex", | |
| name: "OpenAI Codex CLI", | |
| color: "#10A37F", | |
| description: "OpenAI Codex CLI β OpenAI-compatible base URL targets OmniRoute", | |
| docsUrl: "https://github.com/openai/codex", | |
| configType: "custom", | |
| category: "code", | |
| vendor: "OpenAI", | |
| acpSpawnable: true, | |
| baseUrlSupport: "full", | |
| defaultCommand: "codex", | |
| }, | |
| droid: { | |
| id: "droid", | |
| name: "Factory Droid", | |
| image: "/providers/droid.svg", | |
| color: "#00D4FF", | |
| description: "Factory AI Droid β BYOK assistant with configurable endpoint", | |
| docsUrl: "/docs?section=cli-tools&tool=droid", | |
| configType: "custom", | |
| category: "code", | |
| vendor: "Factory AI", | |
| acpSpawnable: false, | |
| baseUrlSupport: "partial", | |
| defaultCommand: "droid", | |
| }, | |
| openclaw: { | |
| id: "openclaw", | |
| name: "Open Claw", | |
| image: "/providers/openclaw.png", | |
| color: "#FF6B35", | |
| description: "Open Claw β open-source multi-backend agent CLI (OSS, P. Steinberger)", | |
| docsUrl: "/docs?section=cli-tools&tool=openclaw", | |
| configType: "custom", | |
| category: "agent", | |
| vendor: "OSS (P. Steinberger)", | |
| acpSpawnable: true, | |
| baseUrlSupport: "full", | |
| defaultCommand: "openclaw", | |
| }, | |
| cursor: { | |
| id: "cursor", | |
| name: "Cursor", | |
| image: "/providers/cursor.png", | |
| color: "#000000", | |
| // Cursor App routes via its own cloud server β local base URL not supported. | |
| // Use cursor-cli entry for headless/agent CLI mode with custom endpoint. | |
| description: "Cursor AI Code Editor β Cloud Endpoint required (use cursor-cli for CLI mode)", | |
| docsUrl: "https://docs.cursor.com/settings/models", | |
| configType: "guide", | |
| category: "code", | |
| vendor: "Anysphere", | |
| acpSpawnable: false, | |
| baseUrlSupport: "none", | |
| requiresCloud: true, | |
| defaultCommands: ["agent", "cursor"], | |
| notes: [ | |
| { type: "warning", text: "Requires Cursor Pro account to use this feature." }, | |
| { | |
| type: "cloudCheck", | |
| text: "Cursor routes requests through its own server, so local endpoint is not supported. Please enable Cloud Endpoint in Settings.", | |
| }, | |
| ], | |
| guideSteps: [ | |
| { step: 1, title: "Open Settings", desc: "Go to Settings β Models" }, | |
| { step: 2, title: "Enable OpenAI API", desc: 'Enable "OpenAI API key" option' }, | |
| { step: 3, title: "Base URL", value: "{{baseUrl}}", copyable: true }, | |
| { step: 4, title: "API Key", type: "apiKeySelector" }, | |
| { step: 5, title: "Add Custom Model", desc: 'Click "View All Model" β "Add Custom Model"' }, | |
| { step: 6, title: "Select Model", type: "modelSelector" }, | |
| ], | |
| }, | |
| cline: { | |
| id: "cline", | |
| name: "Cline", | |
| color: "#00D1B2", | |
| description: "Cline β open-source VS Code coding agent with OpenAI-compatible base URL", | |
| docsUrl: "https://docs.cline.bot/", | |
| configType: "custom", | |
| category: "code", | |
| vendor: "OSS", | |
| acpSpawnable: true, | |
| baseUrlSupport: "full", | |
| defaultCommand: "cline", | |
| }, | |
| kilo: { | |
| id: "kilo", | |
| name: "Kilo Code", | |
| image: "/providers/kilocode.svg", | |
| color: "#FF6B6B", | |
| description: "Kilo Code β VS Code AI assistant with custom base URL support", | |
| docsUrl: "/docs?section=cli-tools&tool=kilocode", | |
| configType: "custom", | |
| category: "code", | |
| vendor: "Kilo-Org", | |
| acpSpawnable: false, | |
| baseUrlSupport: "full", | |
| defaultCommand: "kilocode", | |
| }, | |
| continue: { | |
| id: "continue", | |
| name: "Continue", | |
| image: "/providers/continue.png", | |
| color: "#7C3AED", | |
| description: "Continue β open-source AI coding assistant with full provider config", | |
| docsUrl: "https://docs.continue.dev/", | |
| configType: "guide", | |
| category: "code", | |
| vendor: "continue.dev", | |
| acpSpawnable: false, | |
| baseUrlSupport: "full", | |
| guideSteps: [ | |
| { step: 1, title: "Open Config", desc: "Open Continue configuration file" }, | |
| { step: 2, title: "API Key", type: "apiKeySelector" }, | |
| { step: 3, title: "Select Model", type: "modelSelector" }, | |
| { | |
| step: 4, | |
| title: "Add Model Config", | |
| desc: "Add the following configuration to your models array:", | |
| }, | |
| ], | |
| codeBlock: { | |
| language: "json", | |
| code: `{ | |
| "apiBase": "{{baseUrl}}", | |
| "title": "{{model}}", | |
| "model": "{{model}}", | |
| "provider": "openai", | |
| "apiKey": "{{apiKey}}" | |
| }`, | |
| }, | |
| }, | |
| antigravity: { | |
| id: "antigravity", | |
| name: "Antigravity", | |
| color: "#4285F4", | |
| description: "Google Antigravity IDE β MITM intercept required (plan 11 backlog)", | |
| docsUrl: "/docs?section=cli-tools&tool=antigravity", | |
| // configType:"mitm" β fluxo MITM; baseUrlSupport:"none" β excluΓdo das listas, | |
| // acessΓvel sΓ³ via legacy /[id] route apΓ³s F8 | |
| configType: "mitm", | |
| category: "code", | |
| vendor: "Google", | |
| acpSpawnable: false, | |
| baseUrlSupport: "none", | |
| modelAliases: [ | |
| "claude-opus-4-6-thinking", | |
| "claude-sonnet-4-6", | |
| "gemini-3-flash", | |
| "gpt-oss-120b-medium", | |
| "gemini-3.1-pro-high", | |
| "gemini-3.1-pro-low", | |
| ], | |
| defaultModels: [ | |
| { id: "gemini-3.1-pro-high", name: "Gemini 3.1 Pro High", alias: "gemini-3.1-pro-high" }, | |
| { id: "gemini-3.1-pro-low", name: "Gemini 3.1 Pro Low", alias: "gemini-3.1-pro-low" }, | |
| { id: "gemini-3-flash", name: "Gemini 3 Flash", alias: "gemini-3-flash" }, | |
| { | |
| id: "claude-sonnet-4-6", | |
| name: "Claude Sonnet 4.6", | |
| alias: "claude-sonnet-4-6", | |
| }, | |
| { | |
| id: "claude-opus-4-6-thinking", | |
| name: "Claude Opus 4.6 Thinking", | |
| alias: "claude-opus-4-6-thinking", | |
| }, | |
| { id: "gpt-oss-120b-medium", name: "GPT OSS 120B Medium", alias: "gpt-oss-120b-medium" }, | |
| ], | |
| }, | |
| copilot: { | |
| id: "copilot", | |
| name: "GitHub Copilot", | |
| image: "/providers/copilot.png", | |
| color: "#1F6FEB", | |
| // D-nota: copilot suporta COPILOT_PROVIDER_BASE_URL desde v1.0.19+ | |
| description: "GitHub Copilot Chat β VS Code extension with COPILOT_PROVIDER_BASE_URL support", | |
| docsUrl: "https://code.visualstudio.com/docs/copilot/overview", | |
| configType: "custom", | |
| category: "code", | |
| vendor: "GitHub / Microsoft", | |
| acpSpawnable: false, | |
| baseUrlSupport: "full", | |
| }, | |
| opencode: { | |
| id: "opencode", | |
| name: "OpenCode", | |
| imageLight: "/providers/opencode-light.svg", | |
| imageDark: "/providers/opencode-dark.svg", | |
| icon: "terminal", | |
| color: "#FF6B35", | |
| description: "OpenCode β AI coding agent CLI by Anomaly (terminal, multi-provider)", | |
| docsUrl: "/docs?section=cli-tools&tool=opencode", | |
| configType: "guide", | |
| category: "code", | |
| vendor: "Anomaly", | |
| acpSpawnable: true, | |
| baseUrlSupport: "full", | |
| defaultCommand: "opencode", | |
| modelSelectionMode: "multiple", | |
| hideComboModels: true, | |
| previewConfigMode: "opencode", | |
| notes: [ | |
| { | |
| type: "warning", | |
| text: "Config path: ~/.config/opencode/opencode.json on all platforms (Windows: %USERPROFILE%\\\\.config\\\\opencode\\\\opencode.json)", | |
| }, | |
| { | |
| type: "warning", | |
| text: 'Thinking variant example: opencode run "implement this feature" --model omniroute/claude-sonnet-4-5-thinking --variant high', | |
| }, | |
| ], | |
| guideSteps: [ | |
| { step: 1, title: "Install OpenCode", desc: "Install via npm: npm install -g opencode-ai" }, | |
| { step: 2, title: "API Key", type: "apiKeySelector" }, | |
| { step: 3, title: "Set Base URL", desc: "opencode config set baseUrl {{baseUrl}}" }, | |
| { step: 4, title: "Select Model", type: "modelSelector" }, | |
| { | |
| step: 5, | |
| title: "Use Thinking Variant", | |
| desc: "For thinking models, run with --variant high/low/max (example command below).", | |
| }, | |
| ], | |
| codeBlock: { | |
| language: "json", | |
| code: `{ | |
| "$schema": "https://opencode.ai/config.json", | |
| "provider": { | |
| "omniroute": { | |
| "npm": "@ai-sdk/openai-compatible", | |
| "name": "OmniRoute", | |
| "options": { | |
| "baseURL": "{{baseUrl}}", | |
| "apiKey": "{{apiKey}}" | |
| }, | |
| "models": { | |
| "{{model}}": { "name": "{{model}}" }, | |
| "claude-sonnet-4-5-thinking": { "name": "claude-sonnet-4-5-thinking" }, | |
| "gemini-3.1-pro-high": { "name": "gemini-3.1-pro-high" }, | |
| "gemini-3-flash": { "name": "gemini-3-flash" } | |
| } | |
| } | |
| } | |
| }`, | |
| }, | |
| }, | |
| // hermes (simple guide) β category: "code", baseUrlSupport: "none" | |
| // Excluded from the CLI Code's list (not in D15 19-entry list). | |
| // The advanced multi-role agent is "hermes-agent" (category: "agent", baseUrlSupport: "full"). | |
| // Legacy /[id] route still renders this card after F8. | |
| hermes: { | |
| id: "hermes", | |
| name: "Hermes", | |
| icon: "terminal", | |
| color: "#8B5CF6", | |
| description: "Nous Research Hermes β generic OpenAI-compatible setup (use hermes-agent for full agent)", | |
| docsUrl: "/docs?section=cli-tools&tool=hermes", | |
| configType: "guide", | |
| category: "code", | |
| vendor: "Nous Research", | |
| acpSpawnable: false, | |
| baseUrlSupport: "none", | |
| defaultCommand: "hermes", | |
| guideSteps: [ | |
| { | |
| step: 1, | |
| title: "Open Hermes Config", | |
| desc: "Open your Hermes configuration file or create one if this is the first run.", | |
| }, | |
| { step: 2, title: "API Key", type: "apiKeySelector" }, | |
| { step: 3, title: "Base URL", value: "{{baseUrl}}", copyable: true }, | |
| { step: 4, title: "Select Model", type: "modelSelector" }, | |
| { | |
| step: 5, | |
| title: "Save Provider Block", | |
| desc: "Use the JSON block below as the OpenAI-compatible provider definition for OmniRoute.", | |
| }, | |
| ], | |
| codeBlock: { | |
| language: "json", | |
| code: `{ | |
| "provider": { | |
| "type": "openai", | |
| "baseURL": "{{baseUrl}}", | |
| "apiKey": "{{apiKey}}", | |
| "model": "{{model}}" | |
| } | |
| }`, | |
| }, | |
| }, | |
| // Rich, first-class support for the real advanced Hermes Agent (Nous Research) | |
| // Separate from the original simple "Hermes" guide above. | |
| "hermes-agent": { | |
| id: "hermes-agent", | |
| name: "Hermes Agent", | |
| icon: "terminal", | |
| color: "#8B5CF6", | |
| description: "Hermes Agent (Nous Research) β advanced multi-role autonomous terminal AI", | |
| docsUrl: "/docs?section=cli-tools&tool=hermes-agent", | |
| configType: "custom", | |
| category: "agent", | |
| vendor: "Nous Research", | |
| acpSpawnable: false, | |
| baseUrlSupport: "full", | |
| defaultCommand: "hermes", | |
| }, | |
| kiro: { | |
| id: "kiro", | |
| name: "Kiro AI", | |
| image: "/providers/kiro.svg", | |
| icon: "psychology_alt", | |
| color: "#FF6B35", | |
| description: "Amazon Kiro β AI-powered IDE with MITM intercept (plan 11 backlog)", | |
| docsUrl: "/docs?section=cli-tools&tool=kiro", | |
| // configType:"mitm" β fluxo MITM; baseUrlSupport:"none" β excluΓdo das listas, | |
| // acessΓvel sΓ³ via legacy /[id] route apΓ³s F8 | |
| configType: "mitm", | |
| category: "code", | |
| vendor: "Amazon", | |
| acpSpawnable: false, | |
| baseUrlSupport: "none", | |
| guideSteps: [ | |
| { step: 1, title: "Open Kiro Settings", desc: "Go to Settings β AI Provider" }, | |
| { step: 2, title: "Base URL", value: "{{baseUrl}}", copyable: true }, | |
| { step: 3, title: "API Key", type: "apiKeySelector" }, | |
| { step: 4, title: "Select Model", type: "modelSelector" }, | |
| ], | |
| }, | |
| qwen: { | |
| id: "qwen", | |
| name: "Qwen Code", | |
| icon: "psychology", | |
| color: "#10B981", | |
| description: | |
| "Alibaba Qwen Code CLI β supports OpenAI, Anthropic & Gemini providers via OmniRoute", | |
| docsUrl: "https://qwenlm.github.io/qwen-code-docs/en/users/configuration/model-providers/", | |
| configType: "guide", | |
| category: "code", | |
| vendor: "Alibaba", | |
| acpSpawnable: true, | |
| baseUrlSupport: "full", | |
| defaultCommand: "qwen", | |
| notes: [ | |
| { | |
| type: "info", | |
| text: "Qwen Code supports multiple provider types (openai, anthropic, gemini) via modelProviders in settings.json. OmniRoute works as an OpenAI-compatible endpoint.", | |
| }, | |
| { | |
| type: "info", | |
| text: "Any model available in OmniRoute can be used β not just Qwen models. Select from Qwen, Claude, Gemini, GPT, and more.", | |
| }, | |
| { | |
| type: "warning", | |
| text: "Config path: Linux/macOS ~/.qwen/settings.json β’ Windows %USERPROFILE%\\.qwen\\settings.json", | |
| }, | |
| { | |
| type: "error", | |
| text: "Qwen OAuth free tier was discontinued on 2026-04-15. Use OmniRoute with bailian-coding-plan/alibaba/alibaba-cn/openrouter/anthropic/gemini providers instead.", | |
| }, | |
| ], | |
| modelAliases: [ | |
| "coder-model", | |
| "qwen3-coder-plus", | |
| "qwen3-coder-flash", | |
| "vision-model", | |
| "claude-sonnet-4-6", | |
| "claude-opus-4-6-thinking", | |
| "gemini-3-flash", | |
| "gemini-3.1-pro-high", | |
| ], | |
| defaultModels: [ | |
| { | |
| id: "coder-model", | |
| name: "Coder Model (Qwen 3.6 Plus)", | |
| alias: "coder-model", | |
| envKey: "OPENAI_MODEL", | |
| defaultValue: "coder-model", | |
| isTopLevel: true, | |
| }, | |
| { | |
| id: "qwen3-coder-plus", | |
| name: "Qwen 3 Coder Plus", | |
| alias: "qwen3-coder-plus", | |
| envKey: "OPENAI_MODEL", | |
| defaultValue: "qwen3-coder-plus", | |
| }, | |
| { | |
| id: "qwen3-coder-flash", | |
| name: "Qwen 3 Coder Flash", | |
| alias: "qwen3-coder-flash", | |
| envKey: "OPENAI_MODEL", | |
| defaultValue: "qwen3-coder-flash", | |
| }, | |
| { | |
| id: "vision-model", | |
| name: "Vision Model (Multimodal)", | |
| alias: "vision-model", | |
| envKey: "OPENAI_MODEL", | |
| defaultValue: "vision-model", | |
| }, | |
| { | |
| id: "claude-sonnet-4-6", | |
| name: "Claude Sonnet 4.6", | |
| alias: "claude-sonnet-4-6", | |
| envKey: "OPENAI_MODEL", | |
| defaultValue: "claude-sonnet-4-6", | |
| }, | |
| { | |
| id: "claude-opus-4-6-thinking", | |
| name: "Claude Opus 4.6 Thinking", | |
| alias: "claude-opus-4-6-thinking", | |
| envKey: "OPENAI_MODEL", | |
| defaultValue: "claude-opus-4-6-thinking", | |
| }, | |
| { | |
| id: "gemini-3.1-pro-high", | |
| name: "Gemini 3.1 Pro High", | |
| alias: "gemini-3.1-pro-high", | |
| envKey: "OPENAI_MODEL", | |
| defaultValue: "gemini-3.1-pro-high", | |
| }, | |
| { | |
| id: "gemini-3-flash", | |
| name: "Gemini 3 Flash", | |
| alias: "gemini-3-flash", | |
| envKey: "OPENAI_MODEL", | |
| defaultValue: "gemini-3-flash", | |
| }, | |
| ], | |
| guideSteps: [ | |
| { step: 1, title: "Install Qwen Code", desc: "npm install -g @qwen-code/qwen-code" }, | |
| { step: 2, title: "API Key", type: "apiKeySelector" }, | |
| { step: 3, title: "Base URL", value: "{{baseUrl}}", copyable: true }, | |
| { step: 4, title: "Select Model", type: "modelSelector" }, | |
| { | |
| step: 5, | |
| title: "Save Config", | |
| desc: "Click Save Config below to write your settings.json automatically.", | |
| }, | |
| ], | |
| codeBlock: { | |
| language: "json", | |
| code: `# ~/.qwen/settings.json β OmniRoute via security.auth | |
| { | |
| "security": { | |
| "auth": { | |
| "selectedType": "openai", | |
| "apiKey": "{{apiKey}}", | |
| "baseUrl": "{{baseUrl}}" | |
| } | |
| }, | |
| "model": { | |
| "name": "{{model}}" | |
| } | |
| }`, | |
| }, | |
| }, | |
| custom: { | |
| id: "custom", | |
| name: "Custom CLI", | |
| icon: "terminal", | |
| color: "#10B981", | |
| description: "Generic OpenAI-compatible CLI or SDK configuration generator", | |
| docsUrl: "/docs?section=cli-tools", | |
| configType: "custom-builder", | |
| category: "code", | |
| vendor: "Custom", | |
| acpSpawnable: false, | |
| baseUrlSupport: "full", | |
| }, | |
| // ββ Code entries β aider ββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| aider: { | |
| id: "aider", | |
| name: "Aider", | |
| icon: "terminal", | |
| color: "#2DD4BF", | |
| description: "Aider AI pair-programming CLI β OpenAI-compatible --openai-api-base flag", | |
| docsUrl: "https://aider.chat/docs/config/options.html", | |
| configType: "guide", | |
| category: "code", | |
| vendor: "OSS (P. Gauthier)", | |
| acpSpawnable: true, | |
| baseUrlSupport: "full", | |
| defaultCommand: "aider", | |
| guideSteps: [ | |
| { step: 1, title: "Install Aider", desc: "pip install aider-chat" }, | |
| { step: 2, title: "API Key", type: "apiKeySelector" }, | |
| { step: 3, title: "Base URL", value: "{{baseUrl}}", copyable: true }, | |
| { step: 4, title: "Select Model", type: "modelSelector" }, | |
| ], | |
| codeBlock: { | |
| language: "bash", | |
| code: `export OPENAI_API_KEY="{{apiKey}}" | |
| aider --openai-api-base "{{baseUrl}}" --model "{{model}}"`, | |
| }, | |
| }, | |
| // ββ Code entries β forge ββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| forge: { | |
| id: "forge", | |
| name: "ForgeCode", | |
| icon: "terminal", | |
| color: "#F97316", | |
| description: "ForgeCode coding agent CLI β custom provider via .forge.toml", | |
| docsUrl: "https://github.com/antinomyhq/forge", | |
| configType: "custom", | |
| category: "code", | |
| vendor: "Antinomy HQ", | |
| acpSpawnable: true, | |
| baseUrlSupport: "full", | |
| defaultCommand: "forge", | |
| }, | |
| // ββ Code entries β gemini-cli βββββββββββββββββββββββββββββββββββββββββββββ | |
| "gemini-cli": { | |
| id: "gemini-cli", | |
| name: "Google Gemini CLI", | |
| icon: "terminal", | |
| color: "#4285F4", | |
| description: "Google Gemini CLI β OpenAI-compatible base URL via GEMINI_API_BASE_URL env", | |
| docsUrl: "https://github.com/google-gemini/gemini-cli", | |
| configType: "guide", | |
| category: "code", | |
| vendor: "Google", | |
| acpSpawnable: true, | |
| baseUrlSupport: "partial", | |
| defaultCommand: "gemini", | |
| guideSteps: [ | |
| { | |
| step: 1, | |
| title: "Install Gemini CLI", | |
| desc: "npm install -g @google/gemini-cli", | |
| }, | |
| { step: 2, title: "API Key", type: "apiKeySelector" }, | |
| { step: 3, title: "Base URL", value: "{{baseUrl}}", copyable: true }, | |
| { step: 4, title: "Select Model", type: "modelSelector" }, | |
| ], | |
| codeBlock: { | |
| language: "bash", | |
| code: `export GEMINI_API_KEY="{{apiKey}}" | |
| export GEMINI_API_BASE_URL="{{baseUrl}}" | |
| gemini --model "{{model}}"`, | |
| }, | |
| }, | |
| // ββ Code entries β cursor-cli βββββββββββββββββββββββββββββββββββββββββββββ | |
| "cursor-cli": { | |
| id: "cursor-cli", | |
| name: "Cursor Agent CLI", | |
| icon: "terminal", | |
| color: "#000000", | |
| description: "Cursor Agent CLI β headless agent mode with custom provider endpoint", | |
| docsUrl: "https://docs.cursor.com/advanced/api", | |
| configType: "guide", | |
| category: "code", | |
| vendor: "Anysphere", | |
| acpSpawnable: true, | |
| baseUrlSupport: "partial", | |
| defaultCommand: "cursor", | |
| guideSteps: [ | |
| { step: 1, title: "Install Cursor CLI", desc: "Download cursor binary from cursor.com" }, | |
| { step: 2, title: "API Key", type: "apiKeySelector" }, | |
| { step: 3, title: "Base URL", value: "{{baseUrl}}", copyable: true }, | |
| { step: 4, title: "Select Model", type: "modelSelector" }, | |
| ], | |
| }, | |
| // ββ Code entries β new β ββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| /** β Added by plan 14 (CLI Pages Redesign) β 2026-05-27 */ | |
| roo: { | |
| id: "roo", | |
| name: "Roo Code", | |
| icon: "terminal", | |
| color: "#7C3AED", | |
| description: "Roo Code AI Assistant β VS Code extension with OpenAI-compatible custom base URL", | |
| docsUrl: "https://docs.roocode.com/", | |
| configType: "guide", | |
| category: "code", | |
| vendor: "Roo (OSS)", | |
| acpSpawnable: false, | |
| baseUrlSupport: "full", | |
| guideSteps: [ | |
| { step: 1, title: "Install Roo Code", desc: "Install the Roo Code VS Code extension" }, | |
| { step: 2, title: "API Key", type: "apiKeySelector" }, | |
| { step: 3, title: "Base URL", value: "{{baseUrl}}", copyable: true }, | |
| { step: 4, title: "Select Model", type: "modelSelector" }, | |
| ], | |
| }, | |
| /** β Added by plan 14 (CLI Pages Redesign) β 2026-05-27 */ | |
| jcode: { | |
| id: "jcode", | |
| name: "jcode", | |
| icon: "terminal", | |
| color: "#10B981", | |
| description: "jcode terminal coding agent β OpenAI-compatible CLI by 1jehuang", | |
| docsUrl: "https://github.com/1jehuang/jcode", | |
| configType: "custom", | |
| category: "code", | |
| vendor: "OSS (1jehuang)", | |
| acpSpawnable: false, | |
| baseUrlSupport: "full", | |
| defaultCommand: "jcode", | |
| }, | |
| /** β Added by plan 14 (CLI Pages Redesign) β 2026-05-27 */ | |
| "deepseek-tui": { | |
| id: "deepseek-tui", | |
| name: "DeepSeek TUI", | |
| icon: "terminal", | |
| color: "#4F46E5", | |
| description: "DeepSeek TUI β Rust-based coding agent CLI with OPENAI_BASE_URL support", | |
| docsUrl: "https://github.com/hunterbown/deepseek-tui", | |
| configType: "custom", | |
| category: "code", | |
| vendor: "OSS (Hunter Bown)", | |
| acpSpawnable: false, | |
| baseUrlSupport: "full", | |
| defaultCommand: "deepseek-tui", | |
| }, | |
| /** β Added by plan 14 (CLI Pages Redesign) β 2026-05-27 */ | |
| smelt: { | |
| id: "smelt", | |
| name: "Smelt", | |
| icon: "terminal", | |
| color: "#EF4444", | |
| description: "Smelt coding agent CLI β OpenAI-compatible agent by leonardcser", | |
| docsUrl: "https://github.com/leonardcser/smelt", | |
| configType: "custom", | |
| category: "code", | |
| vendor: "OSS (leonardcser)", | |
| acpSpawnable: false, | |
| baseUrlSupport: "full", | |
| defaultCommand: "smelt", | |
| }, | |
| /** β Added by plan 14 (CLI Pages Redesign) β 2026-05-27 */ | |
| pi: { | |
| id: "pi", | |
| name: "Pi", | |
| icon: "terminal", | |
| color: "#F59E0B", | |
| description: "Pi coding agent CLI β lightweight terminal AI by M. Zechner", | |
| docsUrl: "https://github.com/badlogic/pi", | |
| configType: "custom", | |
| category: "code", | |
| vendor: "OSS (M. Zechner)", | |
| acpSpawnable: false, | |
| baseUrlSupport: "full", | |
| defaultCommand: "pi", | |
| }, | |
| // ββ Agent entries βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| /** β Added by plan 14 (CLI Pages Redesign) β 2026-05-27 */ | |
| goose: { | |
| id: "goose", | |
| name: "Goose", | |
| icon: "smart_toy", | |
| color: "#F97316", | |
| description: "Goose autonomous agent CLI β Block / Linux Foundation OSS, full base URL", | |
| docsUrl: "https://block.github.io/goose/", | |
| configType: "guide", | |
| category: "agent", | |
| vendor: "Block / Linux Foundation", | |
| acpSpawnable: true, | |
| baseUrlSupport: "full", | |
| defaultCommand: "goose", | |
| guideSteps: [ | |
| { step: 1, title: "Install Goose", desc: "pip install goose-ai or brew install goose" }, | |
| { step: 2, title: "API Key", type: "apiKeySelector" }, | |
| { step: 3, title: "Base URL", value: "{{baseUrl}}", copyable: true }, | |
| { step: 4, title: "Select Model", type: "modelSelector" }, | |
| ], | |
| codeBlock: { | |
| language: "yaml", | |
| code: `# ~/.config/goose/config.yaml | |
| GOOSE_PROVIDER: "openai" | |
| GOOSE_MODEL: "{{model}}" | |
| OPENAI_HOST: "{{baseUrl}}" | |
| OPENAI_API_KEY: "{{apiKey}}"`, | |
| }, | |
| }, | |
| /** β Added by plan 14 (CLI Pages Redesign) β 2026-05-27 */ | |
| interpreter: { | |
| id: "interpreter", | |
| name: "Open Interpreter", | |
| icon: "smart_toy", | |
| color: "#8B5CF6", | |
| description: "Open Interpreter β autonomous coding agent CLI with --api_base flag", | |
| docsUrl: "https://docs.openinterpreter.com/", | |
| configType: "guide", | |
| category: "agent", | |
| vendor: "OSS", | |
| acpSpawnable: true, | |
| baseUrlSupport: "full", | |
| defaultCommand: "interpreter", | |
| guideSteps: [ | |
| { step: 1, title: "Install", desc: "pip install open-interpreter" }, | |
| { step: 2, title: "API Key", type: "apiKeySelector" }, | |
| { step: 3, title: "Base URL", value: "{{baseUrl}}", copyable: true }, | |
| { step: 4, title: "Select Model", type: "modelSelector" }, | |
| ], | |
| codeBlock: { | |
| language: "bash", | |
| code: `interpreter --api_base "{{baseUrl}}" --api_key "{{apiKey}}" --model "{{model}}"`, | |
| }, | |
| }, | |
| /** β Added by plan 14 (CLI Pages Redesign) β 2026-05-27 */ | |
| warp: { | |
| id: "warp", | |
| name: "Warp AI", | |
| icon: "terminal", | |
| color: "#1D4ED8", | |
| description: "Warp AI terminal β BYOK desktop app with partial base URL support", | |
| docsUrl: "https://docs.warp.dev/", | |
| configType: "guide", | |
| category: "agent", | |
| vendor: "Warp Inc.", | |
| acpSpawnable: true, | |
| baseUrlSupport: "partial", | |
| guideSteps: [ | |
| { step: 1, title: "Install Warp", desc: "Download Warp from warp.dev (desktop app)" }, | |
| { step: 2, title: "API Key", type: "apiKeySelector" }, | |
| { step: 3, title: "Configure BYOK", desc: "Go to Settings β AI β BYOK Provider" }, | |
| { step: 3, title: "Base URL", value: "{{baseUrl}}", copyable: true }, | |
| { step: 4, title: "Select Model", type: "modelSelector" }, | |
| ], | |
| notes: [ | |
| { | |
| type: "warning", | |
| text: "Warp is a desktop app, not a CLI binary. baseUrlSupport is partial β some models may require the native Warp endpoint.", | |
| }, | |
| ], | |
| }, | |
| /** β Added by plan 14 (CLI Pages Redesign) β 2026-05-27 */ | |
| "agent-deck": { | |
| id: "agent-deck", | |
| name: "Agent Deck", | |
| icon: "device_hub", | |
| color: "#0EA5E9", | |
| description: "Agent Deck β multi-agent stdio backend orchestrator (OSS, asheshgoplani)", | |
| docsUrl: "https://github.com/asheshgoplani/agent-deck", | |
| configType: "guide", | |
| category: "agent", | |
| vendor: "OSS (asheshgoplani)", | |
| acpSpawnable: false, | |
| baseUrlSupport: "full", | |
| defaultCommand: "agent-deck", | |
| guideSteps: [ | |
| { step: 1, title: "Install Agent Deck", desc: "npm install -g agent-deck" }, | |
| { step: 2, title: "API Key", type: "apiKeySelector" }, | |
| { step: 3, title: "Base URL", value: "{{baseUrl}}", copyable: true }, | |
| { step: 4, title: "Select Model", type: "modelSelector" }, | |
| ], | |
| }, | |
| }; | |
| // βββ Registry helpers ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| export type CliToolEntry = CliCatalogEntry; | |
| /** Returns an ordered list of all registered CLI tools. */ | |
| export function listCliTools(): CliToolEntry[] { | |
| return Object.values(CLI_TOOLS); | |
| } | |
| /** Returns a single tool by id, or undefined if not found. */ | |
| export function getCliTool(id: string): CliToolEntry | undefined { | |
| return CLI_TOOLS[id]; | |
| } | |
| // βββ Provider model mapping helper βββββββββββββββββββββββββββββββββββββββββββ | |
| // Get all provider models for mapping dropdown | |
| export const getProviderModelsForMapping = (providers: Array<{ | |
| id: string; | |
| isActive: boolean; | |
| testStatus: string; | |
| provider: string; | |
| name: string; | |
| models?: string[]; | |
| }>) => { | |
| const result: Array<{ connectionId: string; provider: string; name: string; models: string[] }> = | |
| []; | |
| providers.forEach((conn) => { | |
| if (conn.isActive && (conn.testStatus === "active" || conn.testStatus === "success")) { | |
| result.push({ | |
| connectionId: conn.id, | |
| provider: conn.provider, | |
| name: conn.name, | |
| models: conn.models || [], | |
| }); | |
| } | |
| }); | |
| return result; | |
| }; | |