diff --git a/README.md b/README.md index 0d563b53..53b7de23 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ Press `n` to create a new pane, type a prompt, pick one or more agents (or none dmux creates a tmux pane for each task. Every pane gets its own git worktree and branch so agents work in complete isolation. When a task is done, open the pane menu with `m` and choose Merge to bring it back into your main branch, or Create GitHub PR to push the branch and file a pull request. - **Worktree isolation** — each pane is a full working copy, no conflicts between agents -- **Agent support** — Claude Code, Codex, OpenCode, Cline CLI, Gemini CLI, Qwen CLI, Amp CLI, pi CLI, Cursor CLI, Copilot CLI, and Crush CLI +- **Agent support** — Claude Code, Codex, OpenCode, Cline CLI, Gemini CLI, Qwen CLI, Amp CLI, pi CLI, Cursor CLI, Copilot CLI, Crush CLI, and Deep Code - **Goal launches** — optionally start supported agents in goal mode from the initial prompt - **Multi-select launches** — choose any combination of enabled agents per prompt - **AI naming** — branches and commit messages generated automatically @@ -87,7 +87,7 @@ dmux can use default branch behavior or let you override branch details when cre - tmux 3.0+ - Node.js 18+ - Git 2.20+ -- At least one supported agent CLI (for example [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [Codex](https://github.com/openai/codex), [Grok Build](https://docs.x.ai/build/overview), [OpenCode](https://github.com/opencode-ai/opencode), [Cline CLI](https://docs.cline.bot/cline-cli/getting-started), [Gemini CLI](https://github.com/google-gemini/gemini-cli), [Qwen CLI](https://github.com/QwenLM/qwen-code), [Amp CLI](https://ampcode.com/manual), [pi CLI](https://www.npmjs.com/package/@mariozechner/pi-coding-agent), [Cursor CLI](https://docs.cursor.com/en/cli/overview), [Copilot CLI](https://github.com/github/copilot-cli), [Crush CLI](https://github.com/charmbracelet/crush)) +- At least one supported agent CLI (for example [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [Codex](https://github.com/openai/codex), [Grok Build](https://docs.x.ai/build/overview), [OpenCode](https://github.com/opencode-ai/opencode), [Cline CLI](https://docs.cline.bot/cline-cli/getting-started), [Gemini CLI](https://github.com/google-gemini/gemini-cli), [Qwen CLI](https://github.com/QwenLM/qwen-code), [Amp CLI](https://ampcode.com/manual), [pi CLI](https://www.npmjs.com/package/@mariozechner/pi-coding-agent), [Cursor CLI](https://docs.cursor.com/en/cli/overview), [Copilot CLI](https://github.com/github/copilot-cli), [Crush CLI](https://github.com/charmbracelet/crush), [Deep Code](https://github.com/deepcode-ai/deepcode)) - [OpenRouter API key](https://openrouter.ai/) (optional, for AI branch names and commit messages) ## Documentation diff --git a/__tests__/agentLaunch.test.ts b/__tests__/agentLaunch.test.ts index b2684636..206e3462 100644 --- a/__tests__/agentLaunch.test.ts +++ b/__tests__/agentLaunch.test.ts @@ -34,6 +34,7 @@ describe('agent launch utils', () => { expect(getAgentSlugSuffix('codex')).toBe('codex'); expect(getAgentSlugSuffix('grok')).toBe('grok-build'); expect(getAgentSlugSuffix('gemini')).toBe('gemini'); + expect(getAgentSlugSuffix('deepcode')).toBe('deepcode'); }); it('returns default-enabled registry agents', () => { @@ -186,6 +187,16 @@ describe('getPermissionFlags', () => { expect(getPermissionFlags('gemini', 'bypassPermissions')).toBe('--approval-mode yolo'); }); }); + + describe('deepcode', () => { + it('returns no flags for all modes', () => { + expect(getPermissionFlags('deepcode', '')).toBe(''); + expect(getPermissionFlags('deepcode', undefined)).toBe(''); + expect(getPermissionFlags('deepcode', 'plan')).toBe(''); + expect(getPermissionFlags('deepcode', 'acceptEdits')).toBe(''); + expect(getPermissionFlags('deepcode', 'bypassPermissions')).toBe(''); + }); + }); }); describe('command builders', () => { @@ -218,6 +229,16 @@ describe('command builders', () => { expect(getSendKeysReadyDelayMs('crush')).toBe(1200); }); + it('uses send-keys startup mode for deepcode initial prompts', () => { + expect(getPromptTransport('deepcode')).toBe('send-keys'); + expect(buildInitialPromptCommand('deepcode', '"fix it"', '')).toBe( + 'deepcode' + ); + expect(getSendKeysSubmit('deepcode')).toEqual(['Enter']); + expect(getSendKeysPostPasteDelayMs('deepcode')).toBe(200); + expect(getSendKeysReadyDelayMs('deepcode')).toBe(2000); + }); + it('uses send-keys startup mode for cline initial prompts', () => { expect(getPromptTransport('cline')).toBe('send-keys'); expect(buildInitialPromptCommand('cline', '"fix it"', 'acceptEdits')).toBe( diff --git a/docs/public/agents/deepcode.svg b/docs/public/agents/deepcode.svg new file mode 100644 index 00000000..cabdba13 --- /dev/null +++ b/docs/public/agents/deepcode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/public/agents/png/deepcode.png b/docs/public/agents/png/deepcode.png new file mode 100644 index 00000000..7d53976b Binary files /dev/null and b/docs/public/agents/png/deepcode.png differ diff --git a/docs/src/content/agents.js b/docs/src/content/agents.js index 193c961e..5af0738b 100644 --- a/docs/src/content/agents.js +++ b/docs/src/content/agents.js @@ -3,7 +3,7 @@ export const meta = { title: 'Agents' }; export function render() { return `
dmux supports 12 AI coding agents. Each agent is automatically detected if its CLI is installed and available in your PATH.
+dmux supports 13 AI coding agents. Each agent is automatically detected if its CLI is installed and available in your PATH.
dmux automatically detects installed agents by searching:
diff --git a/docs/src/content/introduction.js b/docs/src/content/introduction.js index 9e75a9ca..7a0f0e5c 100644 --- a/docs/src/content/introduction.js +++ b/docs/src/content/introduction.js @@ -55,6 +55,10 @@ export function render() {