cdsr: wire the omp harness into the IDE as a native agent panel over ACP
Pin formulahendry.acp-client 0.2.0 (Open VSX, MIT, sha256-verified) and point acp.agents at `omp acp`. OMP already ships an ACP v1 server, so no custom extension and no marketplace exception were needed. Verified in the running IDE: status bar `ACP: Oh My Pi`, session/list returns real prior OMP sessions for the open folder, and a full prompt turn streams text plus tool-call and plan cards. Credentials never move: OMP authenticates from ~/.omp via its `agent` auth method and the extension is given no key.
This commit is contained in:
@@ -7,18 +7,46 @@ reviewed: 2026-08-20
|
||||
|
||||
# 🧩 Extension baseline
|
||||
|
||||
## Pinned baseline (six entries)
|
||||
## Pinned baseline (seven entries)
|
||||
|
||||
| id | version | platform | reason |
|
||||
|---|---|---|---|
|
||||
| `Continue.continue` | 2.1.0 | linux-x64 | Primary open-source AI agent/chat/edit/autocomplete extension. |
|
||||
| `Anthropic.claude-code` | 2.1.235 | linux-x64 | First-party Claude Code IDE integration. |
|
||||
| `formulahendry.acp-client` | 0.2.0 | universal | Generic Agent Client Protocol client; drives the local `omp` harness as a native agent panel. |
|
||||
| `ms-python.python` | 2026.4.0 | universal | Python language support expected in this environment. |
|
||||
| `ms-python.debugpy` | 2026.6.0 | linux-x64 | Explicit debugger dependency instead of relying on later bootstrap by the Python extension. |
|
||||
| `ms-toolsai.jupyter` | 2025.9.1 | universal | Notebook workflow support in the browser IDE. |
|
||||
| `ms-azuretools.vscode-containers` | 2.4.5 | universal | Current Container Tools extension; its README states it replaces the older Docker extension functionality. |
|
||||
|
||||
All six come from `config/extensions.lock.json` (registry: `https://open-vsx.org`).
|
||||
All seven come from `config/extensions.lock.json` (registry: `https://open-vsx.org`).
|
||||
|
||||
## OMP as a native agent panel (ACP)
|
||||
|
||||
The `omp` harness is wired into the IDE over the Agent Client Protocol. No custom extension and no marketplace exception were needed: OMP already ships an ACP server and Open VSX already ships a generic ACP client.
|
||||
|
||||
- agent side: `omp acp` runs Oh My Pi as an ACP server over stdio. Verified against the installed binary — `initialize` returns `protocolVersion 1` and `agentInfo {name: oh-my-pi, version: 17.4.0}`, and a full `session/new` + `session/prompt` turn streams `tool_call`, `plan`, `agent_message_chunk`, `usage_update`, `stopReason: end_turn`
|
||||
- client side: `formulahendry.acp-client` 0.2.0, MIT, `engines.vscode ^1.85.0`. It declares no `extensionKind`, so it loads in the remote extension host where Node and `child_process` exist — a requirement, since the client spawns the agent as a child process
|
||||
- protocol versions differ but interoperate: the client bundles ACP SDK `^0.21.1`, OMP pins `0.25.0`, both negotiate wire version 1
|
||||
- configuration lives in `data/user/User/settings.json`:
|
||||
|
||||
```json
|
||||
"acp.agents": {
|
||||
"Oh My Pi": { "command": "/home/loca/.local/bin/omp", "args": ["acp"], "env": {} }
|
||||
}
|
||||
```
|
||||
|
||||
VS Code merges this object with the extension's own defaults, so the agent tree shows the shipped entries (Copilot, Claude Code, Gemini, Qwen and others, all of which would `npx`-fetch at runtime) plus `Oh My Pi`. Only `Oh My Pi` is a pinned local binary; treat the rest as unpinned and unsupported here.
|
||||
|
||||
Usage: activity bar → ACP Client → `ACP: New Conversation` → pick `Oh My Pi`. The status bar shows `ACP: Oh My Pi` when connected. The chat panel renders OMP's own session config as native controls (mode Default/Plan, model, thinking level), and the agents tree lists real prior OMP sessions for the open folder, because the client calls `session/list` and OMP answers from `~/.omp/agent/sessions`.
|
||||
|
||||
Operational notes:
|
||||
|
||||
- credentials never move. OMP authenticates itself from `~/.omp` via its `agent` auth method; the extension is not given any key. This is why the ACP route was chosen over exposing OMP on a loopback port
|
||||
- the IDE runs as `loca`, which holds `NOPASSWD: ALL`. An OMP session in this panel is therefore root-equivalent, gated only by Authelia one_factor on `cdsr.loca.zone`. Leave the client's permission prompts enabled; its file and terminal handlers are not workspace-confined
|
||||
- OMP's own `tools.approvalMode` default is permissive and subagents are unconditionally so. Set it explicitly rather than inheriting it
|
||||
- one `omp acp` process serves multiple sessions, but stdio carries a single client, so the IDE panel and a CLI `omp` are separate processes. They share `~/.omp`: session transcripts are per-directory with unique filenames and atomic rewrites, so that is safe, but memory and config are shared context, not isolation
|
||||
- OMP cannot be reached over MCP. It implements an MCP client only, so Continue's `mcpServers` cannot point at it; ACP is the only protocol bridge
|
||||
|
||||
## Lock file mechanics
|
||||
|
||||
|
||||
Reference in New Issue
Block a user