import type { AuthStorage } from "./core/platform/config/auth-storage.js"; import type { ModelRegistry } from "./core/model-registry.js"; export declare const CATUI_DEFAULT_PROVIDER = "dashscope-coding"; /** Baidu Qianfan Coding Plan provider, OpenAI compatible interface: https://qianfan.baidubce.com/v2/coding/chat/completions */ export declare const CATUI_QIANFAN_CODING_PROVIDER = "qianfan-coding"; /** Volcano Ark Coding Plan provider, OpenAI compatible interface: https://ark.cn-beijing.volces.com/api/coding/v3 */ export declare const CATUI_ARK_CODING_PROVIDER = "ark-coding"; /** MiniMax Coding Plan provider, OpenAI compatible interface: https://api.minimaxi.com/v1 */ export declare const CATUI_MINIMAX_CODING_PROVIDER = "minimax-coding"; /** Zhipu Coding Plan provider, OpenAI compatible interface: https://open.bigmodel.cn/api/paas/v4 */ export declare const CATUI_ZHIPU_CODING_PROVIDER = "zhipu-coding"; /** Alibaba Cloud Token Plan Team Edition, OpenAI compatible protocol. */ export declare const CATUI_ALI_TOKEN_PLAN_OPENAI_PROVIDER = "ali-token-plan-openai"; /** Alibaba Cloud Token Plan Team Edition, Anthropic compatible protocol. */ export declare const CATUI_ALI_TOKEN_PLAN_ANTHROPIC_PROVIDER = "ali-token-plan-anthropic"; /** Custom Anthropic-compatible provider; users may set baseUrl and apiKey for third-party Anthropic-compatible services. */ export declare const CATUI_ANTHROPIC_CUSTOM_PROVIDER = "anthropic-custom"; /** Ollama local model provider, consistent with Catui docs: baseUrl with /v1, apiKey can be any value. */ export declare const CATUI_OLLAMA_PROVIDER = "ollama"; /** * What's new message displayed in TUI header at startup (about 50 words). Update on release. */ export declare const CATUI_WHATS_NEW = "Lightweight CLI writing agent: read, write, edit, bash. DashScope, Ali Token Plan, Qianfan, Ark Coding Plan, local Ollama. Optional nanomem. Type / for commands, ! for bash. Config in ~/.catui/agents/."; /** Default models.json content: dashscope-coding (Bailian), qianfan-coding (Qianfan), ark-coding (Ark), minimax-coding (MiniMax), zhipu-coding (Zhipu) + ollama (local). Each Coding Plan has no apiKey, user input stored in auth.json; ollama uses placeholder "ollama". */ export declare const CATUI_DEFAULT_MODELS_JSON: { readonly providers: { readonly "dashscope-coding": { readonly baseUrl: "https://coding.dashscope.aliyuncs.com/v1"; readonly api: "openai-completions"; readonly models: readonly [{ readonly id: "qwen3.5-plus"; readonly name: "Qwen3.5 Plus"; readonly input: readonly ["text", "image"]; readonly contextWindow: 1000000; readonly maxTokens: 65536; }, { readonly id: "qwen3.6-plus"; readonly name: "Qwen3.6 Plus"; readonly input: readonly ["text", "image"]; readonly contextWindow: 1000000; readonly maxTokens: 65536; }, { readonly id: "qwen3.7-plus"; readonly name: "Qwen3.7 Plus"; readonly input: readonly ["text", "image"]; readonly contextWindow: 1000000; readonly maxTokens: 65536; }, { readonly id: "qwen3-max-2026-01-23"; readonly name: "Qwen3 Max"; readonly input: readonly ["text"]; readonly contextWindow: 262144; readonly maxTokens: 65536; }, { readonly id: "qwen3-coder-next"; readonly name: "Qwen3 Coder Next"; readonly input: readonly ["text"]; readonly contextWindow: 262144; readonly maxTokens: 65536; }, { readonly id: "qwen3-coder-plus"; readonly name: "Qwen3 Coder Plus"; readonly input: readonly ["text"]; readonly contextWindow: 1000000; readonly maxTokens: 65536; }, { readonly id: "MiniMax-M2.5"; readonly name: "MiniMax-M2.5"; readonly input: readonly ["text"]; readonly contextWindow: 1000000; readonly maxTokens: 65536; }, { readonly id: "glm-5"; readonly name: "GLM-5"; readonly input: readonly ["text"]; readonly contextWindow: 202752; readonly maxTokens: 16384; }, { readonly id: "glm-4.7"; readonly name: "GLM-4.7"; readonly input: readonly ["text"]; readonly contextWindow: 202752; readonly maxTokens: 16384; }, { readonly id: "kimi-k2.5"; readonly name: "Kimi K2.5"; readonly input: readonly ["text", "image"]; readonly contextWindow: 262144; readonly maxTokens: 32768; }]; }; readonly "ali-token-plan-openai": { readonly baseUrl: "https://token-plan.cn-beijing.maas.aliyuncs.com/compatible-mode/v1"; readonly api: "openai-completions"; readonly models: readonly [{ readonly id: "qwen3.7-plus"; readonly name: "Qwen3.7 Plus (Ali Token Plan OpenAI)"; readonly reasoning: true; readonly input: readonly ["text"]; readonly compat: { readonly supportsStore: false; readonly supportsDeveloperRole: false; readonly supportsReasoningEffort: false; }; readonly contextWindow: 1000000; readonly maxTokens: 65536; }, { readonly id: "qwen3.7-max"; readonly name: "Qwen3.7 Max (Ali Token Plan OpenAI)"; readonly reasoning: true; readonly input: readonly ["text"]; readonly compat: { readonly supportsStore: false; readonly supportsDeveloperRole: false; readonly supportsReasoningEffort: false; }; readonly contextWindow: 1000000; readonly maxTokens: 65536; }, { readonly id: "qwen3.6-plus"; readonly name: "Qwen3.6 Plus (Ali Token Plan OpenAI)"; readonly reasoning: true; readonly input: readonly ["text"]; readonly compat: { readonly supportsStore: false; readonly supportsDeveloperRole: false; readonly supportsReasoningEffort: false; }; readonly contextWindow: 262144; readonly maxTokens: 65536; }, { readonly id: "qwen3.6-flash"; readonly name: "Qwen3.6 Flash (Ali Token Plan OpenAI)"; readonly reasoning: true; readonly input: readonly ["text"]; readonly compat: { readonly supportsStore: false; readonly supportsDeveloperRole: false; readonly supportsReasoningEffort: false; }; readonly contextWindow: 262144; readonly maxTokens: 65536; }, { readonly id: "deepseek-v4-pro"; readonly name: "DeepSeek V4 Pro (Ali Token Plan OpenAI)"; readonly reasoning: true; readonly input: readonly ["text"]; readonly compat: { readonly supportsStore: false; readonly supportsDeveloperRole: false; readonly supportsReasoningEffort: false; }; readonly contextWindow: 262144; readonly maxTokens: 65536; }, { readonly id: "deepseek-v4-flash"; readonly name: "DeepSeek V4 Flash (Ali Token Plan OpenAI)"; readonly reasoning: true; readonly input: readonly ["text"]; readonly compat: { readonly supportsStore: false; readonly supportsDeveloperRole: false; readonly supportsReasoningEffort: false; }; readonly contextWindow: 262144; readonly maxTokens: 65536; }, { readonly id: "deepseek-v3.2"; readonly name: "DeepSeek V3.2 (Ali Token Plan OpenAI)"; readonly reasoning: false; readonly input: readonly ["text"]; readonly compat: { readonly supportsStore: false; readonly supportsDeveloperRole: false; readonly supportsReasoningEffort: false; }; readonly contextWindow: 262144; readonly maxTokens: 65536; }, { readonly id: "kimi-k2.6"; readonly name: "Kimi K2.6 (Ali Token Plan OpenAI)"; readonly reasoning: true; readonly input: readonly ["text"]; readonly compat: { readonly supportsStore: false; readonly supportsDeveloperRole: false; readonly supportsReasoningEffort: false; }; readonly contextWindow: 262144; readonly maxTokens: 65536; }, { readonly id: "kimi-k2.5"; readonly name: "Kimi K2.5 (Ali Token Plan OpenAI)"; readonly reasoning: true; readonly input: readonly ["text"]; readonly compat: { readonly supportsStore: false; readonly supportsDeveloperRole: false; readonly supportsReasoningEffort: false; }; readonly contextWindow: 262144; readonly maxTokens: 65536; }, { readonly id: "glm-5.1"; readonly name: "GLM-5.1 (Ali Token Plan OpenAI)"; readonly reasoning: false; readonly input: readonly ["text"]; readonly compat: { readonly supportsStore: false; readonly supportsDeveloperRole: false; readonly supportsReasoningEffort: false; }; readonly contextWindow: 202752; readonly maxTokens: 16384; }, { readonly id: "glm-5"; readonly name: "GLM-5 (Ali Token Plan OpenAI)"; readonly reasoning: true; readonly input: readonly ["text"]; readonly compat: { readonly supportsStore: false; readonly supportsDeveloperRole: false; readonly supportsReasoningEffort: false; }; readonly contextWindow: 202752; readonly maxTokens: 16384; }, { readonly id: "MiniMax-M2.5"; readonly name: "MiniMax M2.5 (Ali Token Plan OpenAI)"; readonly reasoning: true; readonly input: readonly ["text"]; readonly compat: { readonly supportsStore: false; readonly supportsDeveloperRole: false; readonly supportsReasoningEffort: false; }; readonly contextWindow: 204800; readonly maxTokens: 65536; }, { readonly id: "qwen-image-2.0"; readonly name: "Qwen Image 2.0 (Ali Token Plan OpenAI)"; readonly reasoning: false; readonly input: readonly ["text"]; readonly compat: { readonly supportsStore: false; readonly supportsDeveloperRole: false; readonly supportsReasoningEffort: false; }; readonly contextWindow: 32768; readonly maxTokens: 4096; }, { readonly id: "qwen-image-2.0-pro"; readonly name: "Qwen Image 2.0 Pro (Ali Token Plan OpenAI)"; readonly reasoning: false; readonly input: readonly ["text"]; readonly compat: { readonly supportsStore: false; readonly supportsDeveloperRole: false; readonly supportsReasoningEffort: false; }; readonly contextWindow: 32768; readonly maxTokens: 4096; }, { readonly id: "wan2.7-image"; readonly name: "Wan2.7 Image (Ali Token Plan OpenAI)"; readonly reasoning: false; readonly input: readonly ["text"]; readonly compat: { readonly supportsStore: false; readonly supportsDeveloperRole: false; readonly supportsReasoningEffort: false; }; readonly contextWindow: 32768; readonly maxTokens: 4096; }, { readonly id: "wan2.7-image-pro"; readonly name: "Wan2.7 Image Pro (Ali Token Plan OpenAI)"; readonly reasoning: false; readonly input: readonly ["text"]; readonly compat: { readonly supportsStore: false; readonly supportsDeveloperRole: false; readonly supportsReasoningEffort: false; }; readonly contextWindow: 32768; readonly maxTokens: 4096; }]; }; readonly "ali-token-plan-anthropic": { readonly baseUrl: "https://token-plan.cn-beijing.maas.aliyuncs.com/apps/anthropic"; readonly api: "anthropic-messages"; readonly models: readonly [{ readonly id: "qwen3.7-plus"; readonly name: "Qwen3.7 Plus (Ali Token Plan Anthropic)"; readonly reasoning: true; readonly input: readonly ["text"]; readonly contextWindow: 1000000; readonly maxTokens: 65536; }, { readonly id: "qwen3.7-max"; readonly name: "Qwen3.7 Max (Ali Token Plan Anthropic)"; readonly reasoning: true; readonly input: readonly ["text"]; readonly contextWindow: 1000000; readonly maxTokens: 65536; }, { readonly id: "qwen3.6-plus"; readonly name: "Qwen3.6 Plus (Ali Token Plan Anthropic)"; readonly reasoning: true; readonly input: readonly ["text"]; readonly contextWindow: 262144; readonly maxTokens: 65536; }, { readonly id: "qwen3.6-flash"; readonly name: "Qwen3.6 Flash (Ali Token Plan Anthropic)"; readonly reasoning: true; readonly input: readonly ["text"]; readonly contextWindow: 262144; readonly maxTokens: 65536; }, { readonly id: "kimi-k2.6"; readonly name: "Kimi K2.6 (Ali Token Plan Anthropic)"; readonly reasoning: true; readonly input: readonly ["text"]; readonly contextWindow: 262144; readonly maxTokens: 65536; }, { readonly id: "kimi-k2.5"; readonly name: "Kimi K2.5 (Ali Token Plan Anthropic)"; readonly reasoning: true; readonly input: readonly ["text"]; readonly contextWindow: 262144; readonly maxTokens: 65536; }, { readonly id: "glm-5.1"; readonly name: "GLM-5.1 (Ali Token Plan Anthropic)"; readonly reasoning: false; readonly input: readonly ["text"]; readonly contextWindow: 202752; readonly maxTokens: 16384; }, { readonly id: "glm-5"; readonly name: "GLM-5 (Ali Token Plan Anthropic)"; readonly reasoning: true; readonly input: readonly ["text"]; readonly contextWindow: 202752; readonly maxTokens: 16384; }, { readonly id: "MiniMax-M2.5"; readonly name: "MiniMax M2.5 (Ali Token Plan Anthropic)"; readonly reasoning: true; readonly input: readonly ["text"]; readonly contextWindow: 204800; readonly maxTokens: 65536; }]; }; readonly "minimax-coding": { readonly baseUrl: "https://api.minimaxi.com/v1"; readonly api: "openai-completions"; readonly models: readonly [{ readonly id: "MiniMax-M3"; readonly name: "MiniMax M3"; readonly input: readonly ["text"]; readonly contextWindow: 1000000; readonly maxTokens: 65536; }, { readonly id: "MiniMax-M2.7"; readonly name: "MiniMax M2.7"; readonly input: readonly ["text"]; readonly contextWindow: 204800; readonly maxTokens: 65536; }, { readonly id: "MiniMax-M2.5"; readonly name: "MiniMax M2.5"; readonly input: readonly ["text"]; readonly contextWindow: 204800; readonly maxTokens: 65536; }, { readonly id: "MiniMax-M2.1"; readonly name: "MiniMax M2.1"; readonly input: readonly ["text"]; readonly contextWindow: 204800; readonly maxTokens: 65536; }, { readonly id: "MiniMax-M2"; readonly name: "MiniMax M2"; readonly input: readonly ["text"]; readonly contextWindow: 204800; readonly maxTokens: 65536; }]; }; readonly "zhipu-coding": { readonly baseUrl: "https://open.bigmodel.cn/api/paas/v4"; readonly api: "openai-completions"; readonly models: readonly [{ readonly id: "glm-5"; readonly name: "GLM-5"; readonly input: readonly ["text"]; readonly contextWindow: 202752; readonly maxTokens: 16384; }, { readonly id: "glm-4.7"; readonly name: "GLM-4.7"; readonly input: readonly ["text"]; readonly contextWindow: 202752; readonly maxTokens: 16384; }]; }; readonly "qianfan-coding": { readonly baseUrl: "https://qianfan.baidubce.com/v2/coding"; readonly api: "openai-completions"; readonly models: readonly [{ readonly id: "kimi-k2.5"; readonly name: "Kimi K2.5 (Qianfan)"; readonly input: readonly ["text", "image"]; readonly contextWindow: 262144; readonly maxTokens: 32768; }, { readonly id: "deepseek-v3.2"; readonly name: "DeepSeek V3.2 (Qianfan)"; readonly input: readonly ["text"]; readonly contextWindow: 262144; readonly maxTokens: 65536; }, { readonly id: "glm-5"; readonly name: "GLM-5 (Qianfan)"; readonly input: readonly ["text"]; readonly contextWindow: 202752; readonly maxTokens: 16384; }, { readonly id: "MiniMax-M2.5"; readonly name: "MiniMax-M2.5 (Qianfan)"; readonly input: readonly ["text"]; readonly contextWindow: 1000000; readonly maxTokens: 65536; }, { readonly id: "glm-4.7"; readonly name: "GLM-4.7 (Qianfan)"; readonly input: readonly ["text"]; readonly contextWindow: 202752; readonly maxTokens: 16384; }, { readonly id: "MiniMax-M2.1"; readonly name: "MiniMax-M2.1 (Qianfan)"; readonly input: readonly ["text"]; readonly contextWindow: 1000000; readonly maxTokens: 65536; }]; }; readonly "ark-coding": { readonly baseUrl: "https://ark.cn-beijing.volces.com/api/coding/v3"; readonly api: "openai-completions"; readonly models: readonly [{ readonly id: "doubao-seed-2.0-code"; readonly name: "Doubao Seed 2.0 Code (Ark)"; readonly input: readonly ["text"]; readonly contextWindow: 262144; readonly maxTokens: 65536; }, { readonly id: "doubao-seed-2.0-pro"; readonly name: "Doubao Seed 2.0 Pro (Ark)"; readonly input: readonly ["text"]; readonly contextWindow: 262144; readonly maxTokens: 65536; }, { readonly id: "doubao-seed-2.0-lite"; readonly name: "Doubao Seed 2.0 Lite (Ark)"; readonly input: readonly ["text"]; readonly contextWindow: 262144; readonly maxTokens: 32768; }, { readonly id: "doubao-seed-code"; readonly name: "Doubao Seed Code (Ark)"; readonly input: readonly ["text"]; readonly contextWindow: 262144; readonly maxTokens: 65536; }, { readonly id: "minimax-m2.5"; readonly name: "MiniMax M2.5 (Ark)"; readonly input: readonly ["text"]; readonly contextWindow: 1000000; readonly maxTokens: 65536; }, { readonly id: "glm-4.7"; readonly name: "GLM-4.7 (Ark)"; readonly input: readonly ["text"]; readonly contextWindow: 202752; readonly maxTokens: 16384; }, { readonly id: "deepseek-v3.2"; readonly name: "DeepSeek V3.2 (Ark)"; readonly input: readonly ["text"]; readonly contextWindow: 262144; readonly maxTokens: 65536; }, { readonly id: "kimi-k2.5"; readonly name: "Kimi K2.5 (Ark)"; readonly input: readonly ["text", "image"]; readonly contextWindow: 262144; readonly maxTokens: 32768; }]; }; readonly "anthropic-custom": { readonly baseUrl: "https://api.anthropic.com"; readonly api: "anthropic-messages"; readonly models: readonly [{ readonly id: "claude-sonnet-4-20250514"; readonly name: "Claude Sonnet 4"; readonly input: readonly ["text", "image"]; readonly contextWindow: 200000; readonly maxTokens: 16384; }, { readonly id: "claude-opus-4-20250514"; readonly name: "Claude Opus 4"; readonly input: readonly ["text", "image"]; readonly contextWindow: 200000; readonly maxTokens: 32000; }, { readonly id: "claude-3-5-sonnet-20241022"; readonly name: "Claude 3.5 Sonnet"; readonly input: readonly ["text", "image"]; readonly contextWindow: 200000; readonly maxTokens: 8192; }, { readonly id: "claude-3-5-haiku-20241022"; readonly name: "Claude 3.5 Haiku"; readonly input: readonly ["text", "image"]; readonly contextWindow: 200000; readonly maxTokens: 8192; }]; }; readonly ollama: { readonly baseUrl: "http://localhost:11434/v1"; readonly api: "openai-completions"; readonly apiKey: "ollama"; readonly models: readonly [{ readonly id: "llama3.2:3b"; readonly name: "Llama 3.2 3B"; readonly input: readonly ["text"]; readonly contextWindow: 128000; readonly maxTokens: 4096; }, { readonly id: "qwen2.5-coder:7b"; readonly name: "Qwen2.5 Coder 7B"; readonly input: readonly ["text"]; readonly contextWindow: 32768; readonly maxTokens: 8192; }]; }; }; }; /** * Ensure catui-agent default config exists: create agent directory, write defaults if models.json not present (Coding Plan only); * If exists, merge default models (add qwen3.5-plus etc and update contextWindow/maxTokens). * Write default global context if .CATUI.md not present, users can bring catui-agent description on install. * Only called when running as catui. */ export declare const DEFAULT_CATUI_MD = "# catui-agent Global Context \u00B7 Versatile Human-like Assistant\n\nYou are a **versatile human-like AI assistant**, collaborating with users in the same workflow: programming, writing, reasoning, planning, explaining, refactoring, debugging - all within your capability, communicating naturally, concisely, and directly.\n\n## Positioning\n- **Versatile**: Not limited to \"only coding\" or \"only chatting\"; automatically switch based on current task: modify code, write docs, run commands, explain concepts, break down steps, give suggestions, etc.\n- **Human-like**: Natural tone, high information density, minimal fluff; briefly confirm when needed, don't pile on pleasantries; friendly but restrained (e.g., \"Thanks @user\" not \"Thanks so much!!\"). When referencing past conversations, mention them naturally like recalling personal experiences (e.g., \"I remember we...\", \"Last time you mentioned...\"), without showing off technical mechanisms.\n- **Assistant**: Goal is to **help users get things done**, not show off capabilities. Prioritize understanding intent, then choose action; ask first when uncertain; strictly follow when users have clear preferences or project rules (e.g., AGENT.md, AGENTS.md, project `.CATUI.md`).\n\n## Collaboration Principles\n1. **Understand before acting**: Clarify scope or provide minimum viable solution for ambiguous requirements before executing.\n2. **Small verifiable steps**: Break into steps when possible, each checkable, reduce one-time big changes.\n3. **Respect existing conventions**: Project/repo rules, directory structure, naming conventions take priority over personal style.\n4. **Use tools purposefully**: Use read/write/edit/bash as needed, don't show off; forbidden to use `cat`/`sed` to read files, use Read tool; forbidden `git add -A`, only add files you modified.\n\n5. **Use dangerous commands cautiously**: When involving deletion, move, overwrite and other irreversible operations, first confirm target path, list impact scope, ask user for confirmation when necessary; rm -rf, dd, mkfs and other high-risk commands need extra caution to prevent permanent data loss.\n\n## Relationship with This File\n- This file is **global** context, effective for all projects; you can add your general rules or preferences here.\n- `.CATUI.md` in project root is only effective for current project.\n- `AGENT.md` (and legacy `CLAUDE.md`) and `AGENTS.md` will still be loaded from each directory level as per original logic, with higher priority than this file's general description.\n"; export declare function ensureCatuiDefaultConfig(agentDir?: string): void; /** * Ensure Catui has at least one usable model before startup continues. * * If a custom or built-in provider is already configured, startup proceeds * without prompting. Otherwise, interactive terminals can configure one of the * default Coding Plan providers on the spot. */ export declare function ensureCatuiCodingPlanAuth(authStorage: AuthStorage, modelRegistry: ModelRegistry): Promise;