mirror of
https://github.com/getpaseo/paseo.git
synced 2026-07-29 12:01:31 +00:00
* fix(server): surface Kiro CLI slash commands and skills over ACP Kiro CLI advertises its slash commands and skills through the `_kiro.dev/commands/available` ACP extension notification rather than the standard `available_commands_update` session update. ACPAgentSession only trace-logged extension notifications and dropped the payload, so the composer never showed any Kiro commands or skills. - Map the extension payload onto the shared slash-command cache: `commands` (built-in, names arrive with a leading "/") and `prompts` (skills/prompts, tagged with a `skill:` serverName) are normalized to Paseo's AgentSlashCommand shape, stripping the leading slash and pulling the argument hint from `meta.hint`. - Add KiroACPAgentClient (mirrors CursorACPAgentClient) so the provider waits for the first async command batch before listCommands() resolves, since Kiro emits the notification shortly after session/new. * fix(server): settle on empty Kiro batch; inject Kiro commands via constructor option Addresses review feedback on #1792. Keep vendor-specific providers out of the generic acp-agent.ts, following the same pattern as Cursor/Copilot: provider behavior is injected through ACPAgentClient constructor options rather than special-cased in the base class. Adds an optional extensionCommandsParser option on the generic ACP client/session; the base extNotification() invokes it and routes any parsed commands through a generic applyResolvedCommands() helper. Kiro supplies parseKiroExtensionCommands (recognizes _kiro.dev/commands/available); the base class no longer references any Kiro method string or payload shape. Also fixes an empty-batch hang: applyResolvedCommands() always settles the initial-commands gate, so a Kiro user with no slash commands no longer blocks listCommands() for the full 10s timeout. Adds a regression test.