2026-01-05 09:58:59 +07:00
// CLI Tools configuration
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" ,
},
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" },
2026-01-21 11:45:19 +07:00
{ step : 3 , title : "Base URL" , value : "{{baseUrl}}" , copyable : true },
2026-01-05 09:58:59 +07:00
{ 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" ,
2026-01-19 10:39:30 +07:00
name : "Cline" ,
2026-01-05 09:58:59 +07:00
image : "/providers/cline.png" ,
color : "#00D1B2" ,
description : "CLINE AI Assistant" ,
configType : "guide" ,
guideSteps : [
{ step : 1 , title : "Open Settings" , desc : "Go to CLINE Settings panel" },
{ step : 2 , title : "Select Provider" , desc : "Choose API Provider → Ollama" },
{ step : 3 , title : "Base URL" , value : "{{baseUrl}}" , copyable : true },
{ step : 4 , title : "API Key" , type : "apiKeySelector" },
{ step : 5 , title : "Select Model" , type : "modelSelector" },
],
},
roo : {
id : "roo" ,
name : "Roo" ,
image : "/providers/roo.png" ,
color : "#FF6B6B" ,
description : "Roo AI Assistant" ,
configType : "guide" ,
guideSteps : [
{ step : 1 , title : "Open Settings" , desc : "Go to Roo Settings panel" },
{ step : 2 , title : "Select Provider" , desc : "Choose API Provider → Ollama" },
{ step : 3 , title : "Base URL" , value : "{{baseUrl}}" , copyable : true },
{ step : 4 , title : "API Key" , type : "apiKeySelector" },
{ step : 5 , title : "Select Model" , type : "modelSelector" },
],
},
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}}"
}` ,
},
},
// HIDDEN: gemini-cli
// "gemini-cli": {
// id: "gemini-cli",
// name: "Gemini CLI",
// icon: "terminal",
// color: "#4285F4",
// description: "Google Gemini CLI",
// configType: "env",
// envVars: {
// baseUrl: "GEMINI_API_BASE_URL",
// model: "GEMINI_MODEL",
// },
// defaultModels: [
// { id: "gemini-2.5-pro", name: "Gemini 2.5 Pro", alias: "pro" },
// { id: "gemini-2.5-flash", name: "Gemini 2.5 Flash", alias: "flash" },
// ],
// },
};
// Get all provider models for mapping dropdown
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 ;
};