Luigi De Masi created CAMEL-24663:
-------------------------------------
Summary: Camel TUI: ACP coding-agent provider for the AI panel
Key: CAMEL-24663
URL: https://issues.apache.org/jira/browse/CAMEL-24663
Project: Camel
Issue Type: New Feature
Components: camel-jbang
Affects Versions: 4.22.0
Reporter: Luigi De Masi
Assignee: Luigi De Masi
h3. What
The TUI's F8 AI panel today runs its own tool-calling loop against a raw LLM
API (Anthropic, OpenAI, Gemini, Azure, Watsonx, Ollama). This adds a second
backend: the panel can hand the conversation to an external coding agent that
speaks the Agent Client Protocol (ACP, https://agentclientprotocol.com),
spawned as a subprocess. The agent receives the TUI's own MCP server in
{{session/new}} and drives the TUI through the same {{tui_*}} tools external
MCP clients use, while its answer, tool calls and permission requests are shown
in the panel.
h3. Why
* Users get their agent's subscription login (Claude Code, ChatGPT/Codex, IBM
Bob, ...) instead of managing API keys in the TUI.
* Models that reliably call tools, removing the "at least 14B local model"
caveat of the Ollama path.
* The agent brings its own file and terminal tools, so it can fix the route
source, not only observe.
* One protocol covers every ACP agent; the ACP registry lists about 40.
h3. Design
* New provider ids next to the existing ones (Ctrl+P /
{{camel.tui.ai.provider}}): {{acp:claude}}, {{acp:codex}}, {{acp:bob}},
{{acp:qwen}}, {{acp:opencode}}, {{acp:dsh}} and {{acp:custom}}
({{camel.tui.ai.acp.command}}).
* A hand-rolled ACP v1 client over stdio using camel-util-json; no new
dependency (the ACP Java SDK would add Reactor and Jackson and is itself 0.x).
Protocol v1 only; v2 is still labelled draft by the ACP project.
* Verified adapters: Claude Code and Codex via the official
{{@agentclientprotocol}} npm adapters, IBM Bob Shell 2.0.2 ({{bob acp}}), Qwen
Code ({{qwen --acp}}), OpenCode ({{opencode acp}}), DeepSeek Harness ({{dsh
--profile acp}}, preview). All advertise HTTP MCP support and negotiate
protocol 1. Gemini CLI and Antigravity are deliberately not presets (Gemini CLI
stopped serving personal Google accounts in June 2026; the Antigravity CLI has
no ACP mode yet); both remain reachable through {{acp:custom}}.
* The embedded MCP server is started on demand on an ephemeral loopback port
when an ACP provider is used; {{--mcp}} is not required.
* Permissions: calls to the camel-tui MCP tools are approved silently; anything
else the agent wants to run (file edits, commands) opens a popup with the
agent's own options (Enter selects, Esc rejects, Ctrl+C cancels the turn).
* Streamed answers, one status line per tool call, cancel with Esc/Ctrl+C,
{{/clear}} opens a fresh session, agent slash commands and skills reachable as
{{/agent:<name>}} and listed in the completion hints, a header strip showing
agent, session, working directory and command count.
* Lazy spawn on the first question so a slow first {{npx}} download never
freezes the UI; one {{authenticate}} attempt for agent-managed login methods,
otherwise a login hint per preset.
* Docs: new "Using a coding agent (ACP)" subsection in the TUI manual. No
upgrade-guide entry: nothing existing changes behaviour.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)