v0.2.0
Adds Pi as a third supported harness, alongside Codex CLI and Claude Code.
AgentHarness.Providers.Pi drives pi --mode rpc, pi's JSONL command and event protocol over stdio. Pi is bring-your-own-model, so it authenticates through its own /login providers rather than one vendor account.
Pi is also the smallest of the three: four core tools, no permission system, no MCP. Rather than open a session with those settings quietly dropped, the adapter reports approvals, per_session_mcp, and steer as unsupported, and rejects a session that sets mcp_servers, approval_policy, or sandbox. Questions still work, but only through pi's extension UI dialogs.
The adapter was built against pi 0.83.0 rather than its documentation, and a few things differ from what the docs describe:
- Pi sends no startup frame, so readiness needs a
get_stateprobe. agent_settledis the terminal marker, notagent_end.- The
abortacknowledgement arrives after the run has already settled, so cancellation keys off the aborted stop reason onturn_end. - Missing credentials surface as a rejected prompt rather than a startup failure.
Protocol fixtures captured verbatim from a real pi process are checked in under test/support/fixtures/pi, so the normalizer and session tests assert against what pi actually emits.
Nothing changed for existing Codex or Claude sessions.
{:agent_harness, "~> 0.2.0"}Full changelog: v0.1.0...v0.2.0