| |
| export const CLI_TOOLS = { |
| claude: { |
| id: "claude", |
| name: "Claude Code", |
| icon: "terminal", |
| color: "#D97757", |
| description: "Anthropic Claude Code CLI", |
| configType: "env", |
| 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", |
| defaultModels: [ |
| { |
| id: "opus", |
| name: "Claude Opus", |
| alias: "opus", |
| envKey: "ANTHROPIC_DEFAULT_OPUS_MODEL", |
| defaultValue: "cc/claude-opus-4-5-20251101", |
| }, |
| { |
| id: "sonnet", |
| name: "Claude Sonnet", |
| alias: "sonnet", |
| envKey: "ANTHROPIC_DEFAULT_SONNET_MODEL", |
| defaultValue: "cc/claude-sonnet-4-5-20250929", |
| }, |
| { |
| id: "haiku", |
| name: "Claude Haiku", |
| alias: "haiku", |
| envKey: "ANTHROPIC_DEFAULT_HAIKU_MODEL", |
| defaultValue: "cc/claude-haiku-4-5-20251001", |
| }, |
| ], |
| }, |
| codex: { |
| id: "codex", |
| name: "OpenAI Codex CLI", |
| image: "/providers/codex.png", |
| color: "#10A37F", |
| description: "OpenAI Codex CLI", |
| configType: "custom", |
| }, |
| droid: { |
| id: "droid", |
| name: "Factory Droid", |
| image: "/providers/droid.png", |
| color: "#00D4FF", |
| description: "Factory Droid AI Assistant", |
| configType: "custom", |
| }, |
| openclaw: { |
| id: "openclaw", |
| name: "Open Claw", |
| image: "/providers/openclaw.png", |
| color: "#FF6B35", |
| description: "Open Claw AI Assistant", |
| configType: "custom", |
| }, |
| cursor: { |
| id: "cursor", |
| name: "Cursor", |
| image: "/providers/cursor.png", |
| color: "#000000", |
| description: "Cursor AI Code Editor", |
| configType: "guide", |
| requiresCloud: true, |
| 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", |
| image: "/providers/cline.png", |
| color: "#00D1B2", |
| description: "Cline AI Coding Assistant CLI", |
| configType: "custom", |
| }, |
| kilo: { |
| id: "kilo", |
| name: "Kilo Code", |
| image: "/providers/kilocode.png", |
| color: "#FF6B6B", |
| description: "Kilo Code AI Assistant CLI", |
| configType: "custom", |
| }, |
| continue: { |
| id: "continue", |
| name: "Continue", |
| image: "/providers/continue.png", |
| color: "#7C3AED", |
| description: "Continue AI Assistant", |
| configType: "guide", |
| 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", |
| image: "/providers/antigravity.png", |
| color: "#4285F4", |
| description: "Google Antigravity IDE with MITM", |
| configType: "mitm", |
| modelAliases: [ |
| "claude-opus-4-5-thinking", |
| "claude-sonnet-4-5-thinking", |
| "claude-sonnet-4-5", |
| "gemini-3-pro-high", |
| ], |
| defaultModels: [ |
| { |
| id: "claude-opus-4-5-thinking", |
| name: "Claude Opus 4.5 Thinking", |
| alias: "claude-opus-4-5-thinking", |
| }, |
| { |
| id: "claude-sonnet-4-5-thinking", |
| name: "Claude Sonnet 4.5 Thinking", |
| alias: "claude-sonnet-4-5-thinking", |
| }, |
| { id: "claude-sonnet-4-5", name: "Claude Sonnet 4.5", alias: "claude-sonnet-4-5" }, |
| { id: "gemini-3-pro-high", name: "Gemini 3 Pro High", alias: "gemini-3-pro-high" }, |
| { id: "gemini-3-flash", name: "Gemini 3 Flash", alias: "gemini-3-flash" }, |
| ], |
| }, |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| }; |
|
|
| |
| export const getProviderModelsForMapping = (providers) => { |
| const result = []; |
| 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; |
| }; |
|
|