export interface TuiDef { id: string; name: string; installCmd: string; checkCmd: string; launchArgs: string; /** Extra args to pass when resuming a previous session. */ resumeArgs?: string[]; /** If set, launch via `ollama launch --model ` instead of direct exec. */ ollamaLaunch?: string; } export const TUIS: TuiDef[] = [ { id: "claude", name: "Claude Code", installCmd: "npm install -g @anthropic-ai/claude-code", checkCmd: "claude", launchArgs: '"$@"', ollamaLaunch: "claude", }, { id: "codex", name: "Codex CLI", installCmd: "npm install -g @openai/codex", checkCmd: "codex", launchArgs: '"$@"', ollamaLaunch: "codex", }, { id: "opencode", name: "OpenCode", installCmd: "npm install -g opencode-ai@latest", checkCmd: "opencode", launchArgs: '"$@"', ollamaLaunch: "opencode", }, { id: "pi", name: "Pi", installCmd: "npm install -g @mariozechner/pi-coding-agent", checkCmd: "pi", launchArgs: '"$@"', ollamaLaunch: "pi", }, { id: "cline", name: "Cline", installCmd: "npm install -g @anthropic-ai/cline", checkCmd: "cline", launchArgs: '"$@"', ollamaLaunch: "cline", }, { id: "droid", name: "Droid", installCmd: "npm install -g droid", checkCmd: "droid", launchArgs: '"$@"', ollamaLaunch: "droid", }, { id: "openclaw", name: "OpenClaw", installCmd: "npm install -g openclaw", checkCmd: "openclaw", launchArgs: '"$@"', ollamaLaunch: "openclaw", }, { id: "aider", name: "Aider", installCmd: "pipx install aider-chat", checkCmd: "aider", launchArgs: '"$@"', }, { id: "goose", name: "Goose", installCmd: "brew install block-goose-cli", checkCmd: "goose", launchArgs: '"$@"', }, { id: "gptme", name: "gptme", installCmd: "pipx install gptme", checkCmd: "gptme", launchArgs: '"$@"', resumeArgs: ["-r"], }, ]; export function getTuiById(id: string): TuiDef | undefined { return TUIS.find((t) => t.id === id); }