v0.9.0 - host plane over ACP
What's new
Host plane over ACP — dsh/* vendor extensions
ACP v1 standardizes one conversation, not the host around it. This release exposes the host through read-only vendor methods any client can consume:
| Method | Returns |
|---|---|
dsh/sessions/list |
every persisted + live session (id, title, createdAt, cwd, parentSession, acp flag) |
dsh/sessions/read |
one session's transcript as {seq, type, text} entries |
dsh/sessions/resume |
reopen a persisted session as a live ACP session (full context) |
dsh/jobs/list |
background jobs (id, kind, label, status, owner) |
dsh/goals/list |
active goal per live agent (objective, phase, rounds) |
dsh/skills/list |
installed skills (name, description, provider) |
dsh/agents/tree |
live agents with parent/model/cwd (the subagent tree) |
Push: dsh/changed {topics} notifications fire on turn ends, session lifecycle, and job changes.
Interop-safe by construction — vendor traffic is sent only to connections that opted in via the schema-sanctioned clientCapabilities._meta['dsh/extensions'] extension point. Standard clients (Zed, acpx, Neovim plugins, …) see a fully standard ACP server. Each method degrades to a clean -32601 in compositions without the underlying service.
Built-in web UI: host sidebar
The serve-mode web client (GET /) gains a host sidebar next to the chat: sessions with titles and one-click resume + transcript loading, jobs, goals, skills, and the live agent tree — auto-refreshing on dsh/changed.
Full changelog: https://github.com/dushaobindoudou/dsh-acp/blob/main/CHANGELOG.md