Skip to content

fix(acp): kimi-code session boot + word-per-paragraph replies#263

Merged
cukas merged 2 commits into
mainfrom
feat/kimi-acp-compat
Jul 16, 2026
Merged

fix(acp): kimi-code session boot + word-per-paragraph replies#263
cukas merged 2 commits into
mainfrom
feat/kimi-acp-compat

Conversation

@cukas

@cukas cukas commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Two strict-ACP compatibility fixes surfaced by kimi-code as Cesar brain:

  • session-acp: normalize mcpServers to the ACP-spec wire shape before session/new — stdio entries need args/env as arrays (env as {name,value} pairs), http/sse entries need url + headers pairs. Agon's internal Record-shaped env made strict agents (kimi) reject session/new with -32602 Invalid params, killing the Cesar session every turn. Malformed entries (http without url, stdio without command) are skipped instead of emitting undefined required fields.

  • companion-dispatch: concatenate consecutive agent_message_chunk deltas into one message instead of pushing each token separately — the '\n\n' join rendered kimi fallback replies one word per paragraph. tool_call updates and item/completed pushes end a chunk run; the prompt-response text fallback only fires when nothing was streamed, so it can no longer duplicate the streamed answer.

⚔️ Forged by Agon

Two strict-ACP compatibility fixes surfaced by kimi-code as Cesar brain:

- session-acp: normalize mcpServers to the ACP-spec wire shape before
  session/new — stdio entries need args/env as arrays (env as
  {name,value} pairs), http/sse entries need url + headers pairs.
  Agon's internal Record-shaped env made strict agents (kimi) reject
  session/new with -32602 Invalid params, killing the Cesar session
  every turn. Malformed entries (http without url, stdio without
  command) are skipped instead of emitting undefined required fields.

- companion-dispatch: concatenate consecutive agent_message_chunk
  deltas into one message instead of pushing each token separately —
  the '\n\n' join rendered kimi fallback replies one word per
  paragraph. tool_call updates and item/completed pushes end a chunk
  run; the prompt-response text fallback only fires when nothing was
  streamed, so it can no longer duplicate the streamed answer.

⚔️ Forged by [Agon](https://github.com/KERNlang/agon)

Co-Authored-By: agon (KERN) <292465531+KERN-Agon@users.noreply.github.com>
3facf1d made the auto policy resolve to fullscreen (alternate screen)
for every interactive TTY, which silently killed terminal scrollback for
all users: the alt screen has no scrollback, and the transcript no
longer sealed into it via Static. Native mode IS the intended default
experience — finished blocks spill into real scrollback while the
composer/status stay pinned at the bottom. Fullscreen stays available
strictly via `agon config terminalMode fullscreen`.

⚔️ Forged by [Agon](https://github.com/KERNlang/agon)

Co-Authored-By: agon (KERN) <292465531+KERN-Agon@users.noreply.github.com>
@cukas
cukas merged commit 13714cd into main Jul 16, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants