From cfd72b815c7de4fedd50325d8bf25044ce65719d Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Wed, 10 Jun 2026 11:18:34 +0700 Subject: [PATCH] Update ACP catalog for CodeWhale --- docs/custom-providers.md | 2 +- docs/product.md | 2 +- packages/app/src/assets/acp-provider-icons.ts | 2 +- .../{deepseek-tui.svg => codewhale.svg} | 0 .../src/composer/draft/workspace-tab.test.ts | 4 +-- packages/app/src/data/acp-provider-catalog.ts | 18 ++++++------- .../hooks/use-acp-provider-catalog.test.ts | 2 +- .../provider-selection.test.ts | 26 +++++++++---------- packages/website/src/data/agent-pages.ts | 10 +++---- public-docs/supported-providers.md | 1 + 10 files changed, 34 insertions(+), 33 deletions(-) rename packages/app/src/assets/acp-provider-icons/{deepseek-tui.svg => codewhale.svg} (100%) diff --git a/docs/custom-providers.md b/docs/custom-providers.md index 4e166bbd1..eaa7eac0a 100644 --- a/docs/custom-providers.md +++ b/docs/custom-providers.md @@ -409,7 +409,7 @@ The [Agent Client Protocol (ACP)](https://agentclientprotocol.com) is an open st ACP agents communicate over JSON-RPC 2.0 on stdio. Paseo spawns the agent process and talks to it through stdin/stdout. -Paseo also ships an in-app ACP provider catalog for common agents, including Cursor, DeepAgents, DeepSeek TUI, DimCode, Gemini CLI, Hermes, Qwen Code, and Kimi Code. Catalog entries create the same `extends: "acp"` provider config shown below. +Paseo also ships an in-app ACP provider catalog for common agents, including CodeWhale, Cursor, DeepAgents, DimCode, Gemini CLI, Hermes, Qwen Code, and Kimi Code. Catalog entries create the same `extends: "acp"` provider config shown below. ### Adding a generic ACP provider diff --git a/docs/product.md b/docs/product.md index 40a3fc7e9..e05728eab 100644 --- a/docs/product.md +++ b/docs/product.md @@ -71,7 +71,7 @@ Anyone who builds software: - Desktop (Electron), mobile (iOS/Android), web, CLI - Built-in providers: Claude Code (Agent SDK), Codex (app-server), GitHub Copilot (ACP), OpenCode, Pi, OMP -- One-click ACP provider catalog: Cursor, DeepSeek TUI, Hermes, Qwen Coder, Kimi Code, and others — plus custom ACP providers +- One-click ACP provider catalog: CodeWhale, Cursor, Hermes, Qwen Coder, Kimi Code, and others — plus custom ACP providers - Voice mode: dictate prompts or talk through problems hands-free - MCP server exposes the daemon to other agents (create_agent, send_agent_prompt, schedules, terminals, worktrees) - Scheduled agents (cron-style triggers) via app, CLI, and MCP diff --git a/packages/app/src/assets/acp-provider-icons.ts b/packages/app/src/assets/acp-provider-icons.ts index 211c4f6fa..2f4e25333 100644 --- a/packages/app/src/assets/acp-provider-icons.ts +++ b/packages/app/src/assets/acp-provider-icons.ts @@ -27,7 +27,7 @@ export const ACP_PROVIDER_ICON_SVGS = { '\n \n\n', deepagents: '\n \n \n \n \n\n', - "deepseek-tui": + codewhale: '\n \n \n \n\n', dimcode: '\n\n\n', diff --git a/packages/app/src/assets/acp-provider-icons/deepseek-tui.svg b/packages/app/src/assets/acp-provider-icons/codewhale.svg similarity index 100% rename from packages/app/src/assets/acp-provider-icons/deepseek-tui.svg rename to packages/app/src/assets/acp-provider-icons/codewhale.svg diff --git a/packages/app/src/composer/draft/workspace-tab.test.ts b/packages/app/src/composer/draft/workspace-tab.test.ts index 9332536eb..4f9a0e202 100644 --- a/packages/app/src/composer/draft/workspace-tab.test.ts +++ b/packages/app/src/composer/draft/workspace-tab.test.ts @@ -3,8 +3,8 @@ import { describe, expect, test } from "vitest"; import { validateDraftSubmission } from "./workspace-tab-core"; const baseComposerState = { - providerDefinitions: [{ id: "deepseek-tui" }], - selectedProvider: "deepseek-tui", + providerDefinitions: [{ id: "codewhale" }], + selectedProvider: "codewhale", isModelLoading: false, effectiveModelId: "", availableModels: [], diff --git a/packages/app/src/data/acp-provider-catalog.ts b/packages/app/src/data/acp-provider-catalog.ts index cd817cac9..4a84b12ac 100644 --- a/packages/app/src/data/acp-provider-catalog.ts +++ b/packages/app/src/data/acp-provider-catalog.ts @@ -73,6 +73,15 @@ const CATALOG_DATA = [ installLink: "https://www.codebuddy.cn/cli/", command: ["npx", "-y", "@tencent-ai/codebuddy-code@2.103.4", "--acp"], }, + { + id: "codewhale", + title: "CodeWhale", + description: "Terminal coding agent for DeepSeek V4 and open models", + version: "0.8.55", + iconId: "codewhale", + installLink: "https://codewhale.net/", + command: ["codewhale", "serve", "--acp"], + }, { id: "cortex-code", title: "Cortex Code", @@ -118,15 +127,6 @@ const CATALOG_DATA = [ installLink: "https://docs.langchain.com/oss/javascript/deepagents/overview", command: ["npx", "-y", "deepagents-acp@0.1.12"], }, - { - id: "deepseek-tui", - title: "DeepSeek TUI", - description: "Terminal coding agent for DeepSeek V4", - version: "0.8.39", - iconId: "deepseek-tui", - installLink: "https://github.com/Hmbown/DeepSeek-TUI", - command: ["deepseek", "serve", "--acp"], - }, { id: "devin", title: "Devin CLI", diff --git a/packages/app/src/hooks/use-acp-provider-catalog.test.ts b/packages/app/src/hooks/use-acp-provider-catalog.test.ts index 68aa4057f..7d7e6c2cf 100644 --- a/packages/app/src/hooks/use-acp-provider-catalog.test.ts +++ b/packages/app/src/hooks/use-acp-provider-catalog.test.ts @@ -37,7 +37,7 @@ describe("ACP provider catalog", () => { it("uses PATH commands for entries that were binary distributions upstream", () => { expect(findProvider("amp-acp").command).toEqual(["amp-acp"]); expect(findProvider("cursor").command).toEqual(["cursor-agent", "acp"]); - expect(findProvider("deepseek-tui").command).toEqual(["deepseek", "serve", "--acp"]); + expect(findProvider("codewhale").command).toEqual(["codewhale", "serve", "--acp"]); expect(findProvider("devin").command).toEqual(["devin", "acp"]); expect(findProvider("goose").command).toEqual(["goose", "acp"]); expect(findProvider("junie").command).toEqual(["junie", "--acp", "true"]); diff --git a/packages/app/src/provider-selection/provider-selection.test.ts b/packages/app/src/provider-selection/provider-selection.test.ts index 639e7a027..ec691433d 100644 --- a/packages/app/src/provider-selection/provider-selection.test.ts +++ b/packages/app/src/provider-selection/provider-selection.test.ts @@ -69,22 +69,22 @@ describe("combined model selector data", () => { expect( buildSelectableProviderSelectorProviders([ snapshotEntry({ - provider: "deepseek-tui", - label: "DeepSeek TUI", + provider: "codewhale", + label: "CodeWhale", models: [], }), ]), ).toEqual([ { - id: "deepseek-tui", - label: "DeepSeek TUI", + id: "codewhale", + label: "CodeWhale", modelSelection: { kind: "models", rows: [ { - favoriteKey: "deepseek-tui:", - provider: "deepseek-tui", - providerLabel: "DeepSeek TUI", + favoriteKey: "codewhale:", + provider: "codewhale", + providerLabel: "CodeWhale", modelId: "", modelLabel: "Default", description: undefined, @@ -100,8 +100,8 @@ describe("combined model selector data", () => { expect( buildSelectableProviderSelectorProviders([ snapshotEntry({ - provider: "deepseek-tui", - label: "DeepSeek TUI", + provider: "codewhale", + label: "CodeWhale", enabled: false, models: [], }), @@ -235,8 +235,8 @@ describe("combined model selector data", () => { models: [codexModel], }), snapshotEntry({ - provider: "deepseek-tui", - label: "DeepSeek TUI", + provider: "codewhale", + label: "CodeWhale", models: [], }), ]); @@ -252,7 +252,7 @@ describe("combined model selector data", () => { expect( resolveSelectedModelLabel({ providers, - selectedProvider: "deepseek-tui", + selectedProvider: "codewhale", selectedModel: "", isLoading: false, }), @@ -307,7 +307,7 @@ describe("combined model selector data", () => { allowsEmptyAutoSubmit: false, providerCount: 1, selection: { - provider: "deepseek-tui", + provider: "codewhale", modelId: "", availableModels: [], isModelLoading: false, diff --git a/packages/website/src/data/agent-pages.ts b/packages/website/src/data/agent-pages.ts index 310b26147..5c25a6510 100644 --- a/packages/website/src/data/agent-pages.ts +++ b/packages/website/src/data/agent-pages.ts @@ -201,13 +201,13 @@ export const AGENT_PAGES = [ }, { slug: "deepseek-tui", - name: "DeepSeek TUI", - title: "Open source app for DeepSeek TUI", + name: "CodeWhale", + title: "Open source app for CodeWhale", subtitle: - "Run DeepSeek V4's terminal coding agent on your machine, drive it from your phone or desktop.", - metaTitle: "DeepSeek TUI Mobile and Desktop App, Open Source", + "Run CodeWhale's DeepSeek V4 terminal coding agent on your machine, drive it from your phone or desktop.", + metaTitle: "CodeWhale Mobile and Desktop App, Open Source", metaDescription: - "Open source mobile and desktop app for DeepSeek TUI. Launch coding sessions on your machine, monitor progress, ship from anywhere.", + "Open source mobile and desktop app for CodeWhale. Launch coding sessions on your machine, monitor progress, ship from anywhere.", }, { slug: "dimcode", diff --git a/public-docs/supported-providers.md b/public-docs/supported-providers.md index 970c7b04d..b209cc314 100644 --- a/public-docs/supported-providers.md +++ b/public-docs/supported-providers.md @@ -28,6 +28,7 @@ Pick any of these from the in-app provider catalog. Each entry is a one-click in - [Autohand Code](https://www.autohand.ai/cli/), Autohand AI's coding agent. - [Cline](https://cline.bot/cli), autonomous coding agent. - [Codebuddy Code](https://www.codebuddy.cn/cli/), Tencent Cloud's coding tool. +- [CodeWhale](https://codewhale.net/), terminal coding agent for DeepSeek V4 and open models. - [Cortex Code](https://docs.snowflake.com/en/user-guide/cortex-code/cortex-code-cli), Snowflake's coding agent. - [Corust Agent](https://github.com/Corust-ai/corust-agent-release/releases), Rust-focused coding partner. - [crow-cli](https://crow-ai.dev/), minimal ACP-native coding agent.