## Summary PR #7335 worked around missing Pi adapter support by generating a private Pi launcher and injecting Buzz's standing prompt and skills at process launch. The Buzz Pi fork now carries the required adapter extensions, so this removes that launcher and returns prompt construction to the normal ACP session path while retaining the base-prompt composition introduced by #7335. The Pi preset now installs `salman1993/pi-acp` and launches its renamed `buzz-pi-acp` binary. Buzz adds `-- --skill <harness-cwd>/.agents/skills` only when launching that binary, sends the complete composed prompt as the `_meta.systemPrompt` replacement string on `session/new` only when `initialize.agentInfo.name` is `buzz-pi-acp`, and sends the scoped title alongside it as `_meta.sessionTitle`. The fork identity is treated as system-prompt capable regardless of its reported ACP protocol version, which prevents duplicate legacy user-message framing. Upstream `pi-acp` does not receive either fork-specific behavior. Observer transcript projection accepts the string, `{ replace }`, and `{ append }` metadata forms. The fork now stores restore metadata in one atomic file per session under `~/.pi/buzz-pi-acp/sessions/`. This prevents concurrent Buzz workers from overwriting another session's prompt or title. The fix landed in [salman1993/pi-acp#9](https://github.com/salman1993/pi-acp/pull/9). This supersedes the closed #7508. No agent-configuration rules changed; this changes the Buzz Pi adapter contract and launch arguments. ### Related issue #7329 ### Testing Installed fork commit `09cf07e436b8f18e52401558f988f31a15702313` through the documented Git URL. The installed bundle matched the committed `dist/index.js` byte for byte and contained the `~/.pi/buzz-pi-acp` metadata path. The fork's 106 non-skipped tests, typecheck, and lint pass. Ran the ignored real-Pi integration test through Buzz's production session composer. The test exercised the renamed package, `agentInfo.name`, and the new per-session metadata store. Base, persona, team, core-memory, huddle, canvas, and skill markers each appeared once after switching sessions and again after restarting the adapter, while the other session and Pi's native default prompt were absent. Added regression coverage proving `buzz-pi-acp` receives fork-specific system-prompt metadata and managed skills while upstream `pi-acp` does not. `just ci` passes. Generated with Codex --------- Signed-off-by: Salman Mohammed <smohammed@squareup.com>
2.5 KiB
Pi adapter integration
Buzz's Pi preset uses salman1993/pi-acp. Requires Node.js 22 or newer. Install Pi and configure its model provider, then install the adapter directly from the fork:
npm install -g @earendil-works/pi-coding-agent
pi
npm install -g --install-links=true git+https://github.com/salman1993/pi-acp.git#main
Restart Buzz, then select Pi as the agent harness. Buzz starts buzz-pi-acp
automatically. Run the same adapter install command again to update it.
The unscoped npm install -g pi-acp command installs the upstream package,
without these extensions. Use fresh sessions to replace old user-framed
standing instructions.
Buzz adds -- --skill <harness-cwd>/.agents/skills when launching buzz-pi-acp.
An existing separator and explicit Pi options are preserved. Managed agents
run from the Buzz nest (normally ~/.buzz): Desktop sets the buzz-acp child
CWD through default_agent_workdir(), and adapters inherit it. The default
skill directory is that launch workspace's .agents/skills. Standalone CLI
launches use the caller's working directory.
The path is fixed at adapter launch and applies to every Pi subprocess.
The full composed session prompt is sent as a replacement string through the
provisional session/new.params._meta.systemPrompt field. Buzz recognizes
buzz-pi-acp by the agent name returned during initialization, regardless of
protocol version. Upstream pi-acp does not receive this fork-specific metadata.
No custom capability negotiation or legacy Pi prompt fallback is used.
Session titles continue to use _meta.sessionTitle.
Validation
Activate Hermit from the Buzz repository root, then run the package tests:
. ./bin/activate-hermit
cargo test -p buzz-acp
To exercise the real adapter through Buzz's production session composer:
BUZZ_TEST_PI_ACP=/absolute/pi-acp/dist/index.js \
cargo test -p buzz-acp real_pi_preserves -- --ignored
This test requires Node and Pi on PATH. It isolates HOME and Pi settings, disables extensions and context files, and uses a synthetic transcript without model calls. It inspects Pi's effective prompt through RPC HTML export after switching sessions and restarting the adapter. Base, persona, team, core memory, huddle, canvas, and the extra skill must each appear once, without another session's instructions or Pi's default coding preamble.
HTML export reports the exporting process's current system prompt. It cannot recover a historical prompt from an old transcript alone.