You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Command under test:codewhale serve --acp (ACP v1 server over stdio)
Summary
codewhale serve --acp implements initialize and session/new, but the ACP session surface is otherwise empty: the initialize response sets loadSession: false and sessionCapabilities: {}, and session/list returns -32601 method not found.
ACP clients that surface session history / import / resume (IDEs and agent-manager clients) rely on these: they look at sessionCapabilities in the handshake and then call session/list (and session/load) to re-open past conversations. Because codewhale exposes neither, those clients can see codewhale as a registered agent but can neither list nor resume any of its existing sessions — even though codewhale has a persistent on-disk session store (~/.codewhale/sessions) and the CLI can list and resume them (codewhale sessions / codewhale resume <id>).
{"jsonrpc":"2.0","id":2,"error":{"code":-32601,"message":"method not found: session/list"}}
Expected behavior
initialize.agentCapabilities.sessionCapabilities.list === true (persistent session storage is available).
session/list returns the existing sessions (id, cwd, title, updatedAt → _meta), matching the ACP session-list RFD.
Ideally session/load (loadSession: true, per the session-resume RFD) so clients can re-open a past session instead of only listing it.
Impact
Codewhale is the only common deployment where an ACP agent cannot enumerate or resume its own stored sessions, while comparable agents expose both. Past codewhale sessions are only recoverable from the terminal.
Suggested fix
In the serve --acp handler:
Expose ACP session/list: enumerate the local session store (.codewhale/sessions) and return { sessionId, cwd, title, updatedAt, _meta }, scoped to params.cwd when provided.
Advertise sessionCapabilities.list: true (and loadSession: true once session/load is implemented).
Optionally implement session/load to resume an existing session id.
Notes
Codewhale already exposes session listing over its own Runtime API (GET /v1/sessions, see docs/RUNTIME_API.md); the same data just needs to be surfaced through the ACP stdio adapter.
ACP references: https://agentclientprotocol.com/rfds/session-list and https://agentclientprotocol.com/rfds/session-resume. The RFDs allow omitting session/list only for agents without persistent storage; codewhale has persistent storage (~/.codewhale/sessions), so omitting it leaves ACP clients unable to use codewhale's session history.
serve --acpdoes not implement ACPsession/list/session/load, so ACP clients cannot enumerate or resume existing codewhale sessionsEnvironment
codewhalenpm wrapper 0.9.11, native binarycodewhale0.9.11 (Windows x64)codewhale serve --acp(ACP v1 server over stdio)Summary
codewhale serve --acpimplementsinitializeandsession/new, but the ACP session surface is otherwise empty: theinitializeresponse setsloadSession: falseandsessionCapabilities: {}, andsession/listreturns-32601 method not found.ACP clients that surface session history / import / resume (IDEs and agent-manager clients) rely on these: they look at
sessionCapabilitiesin the handshake and then callsession/list(andsession/load) to re-open past conversations. Because codewhale exposes neither, those clients can see codewhale as a registered agent but can neither list nor resume any of its existing sessions — even though codewhale has a persistent on-disk session store (~/.codewhale/sessions) and the CLI can list and resume them (codewhale sessions/codewhale resume <id>).Reproduction
Start the ACP server and speak ACP v1 over stdio:
Handshake:
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":1,"clientCapabilities":{},"clientInfo":{"name":"t","version":"1"}}}Actual behavior
{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":1,"agentCapabilities":{"loadSession":false,"modelSelection":true,"promptCapabilities":{"image":false,"audio":false,"embeddedContext":true},"mcpCapabilities":{"http":false,"sse":false},"sessionCapabilities":{}},"agentInfo":{"name":"codewhale","title":"codewhale","version":"0.9.11"}}}Then:
{"jsonrpc":"2.0","id":2,"method":"session/list","params":{"cwd":"C:\\Users\\Owner"}}{"jsonrpc":"2.0","id":2,"error":{"code":-32601,"message":"method not found: session/list"}}Expected behavior
initialize.agentCapabilities.sessionCapabilities.list === true(persistent session storage is available).session/listreturns the existing sessions (id, cwd, title, updatedAt →_meta), matching the ACPsession-listRFD.session/load(loadSession: true, per thesession-resumeRFD) so clients can re-open a past session instead of only listing it.Impact
Codewhale is the only common deployment where an ACP agent cannot enumerate or resume its own stored sessions, while comparable agents expose both. Past codewhale sessions are only recoverable from the terminal.
Suggested fix
In the
serve --acphandler:session/list: enumerate the local session store (.codewhale/sessions) and return{ sessionId, cwd, title, updatedAt, _meta }, scoped toparams.cwdwhen provided.sessionCapabilities.list: true(andloadSession: trueoncesession/loadis implemented).session/loadto resume an existing session id.Notes
GET /v1/sessions, seedocs/RUNTIME_API.md); the same data just needs to be surfaced through the ACP stdio adapter.https://agentclientprotocol.com/rfds/session-listandhttps://agentclientprotocol.com/rfds/session-resume. The RFDs allow omittingsession/listonly for agents without persistent storage; codewhale has persistent storage (~/.codewhale/sessions), so omitting it leaves ACP clients unable to use codewhale's session history.