Add and finish Pi coding-agent provider#1
Merged
Conversation
- PiSettings/PiSettingsPatch (enabled, binaryPath, customModels) on ServerSettings - pi driver kind display name + MODEL_SLUG_ALIASES passthrough entry - pi.rpc.event / pi.rpc.extension-ui runtime raw sources
RPC-mode (pi --mode rpc) driver over the Effect ChildProcessSpawner: - PiRpcClient JSONL transport + pure parsing/extraction helpers - PiAdapter: sessions, text_delta streaming, tool lifecycle, finalize on the terminal agent_end, mid-turn steer, image attachments, in-session model switch + thinking level, fork-based rollback; thread.started for projection parity; unexpected-exit reported as error - Approval gate driven by runtimeMode (like Claude/Cursor): bundled default-deny t3-approvals extension injected via -e with a get_commands load handshake (fail-closed); extension_ui <-> canonical approval/user-input bridge - PiProvider: version probe, live model discovery, models-based auth verdict - PiTextGeneration via stateless RPC + get_last_assistant_text + shared JSON extract - @earendil-works/pi-coding-agent devDependency (types only); ship the gate asset
Also ignore local agent scratch dirs (.pi-subagents, .repos/pi-pr-analysis).
# Conflicts: # pnpm-lock.yaml
Align the bundled approval gate with its tests and docs by auto-approving read-only tools under approval-required mode. Classify "Run <tool>?" confirm titles correctly, adopt Pi's active model from get_state for turn.started, and drop the undocumented onApprovalUnavailable policy from the Pi guide. Co-authored-by: Raphael Lüthy <raphaelluethy@users.noreply.github.com>
Update PiProvider status tests so ready/authenticated requires live RPC model discovery, and custom-only catalogs stay warning/unknown. Make the fake pi script wait for a stdin request before responding to avoid races. Co-authored-by: Raphael Lüthy <raphaelluethy@users.noreply.github.com>
Upgrade to @earendil-works/pi-coding-agent 0.80.10, add first-class codingAgentDir config, surface plugin slash commands, and adopt agent_settled / thinking max while dropping unused ACP-adjacent bits. Co-authored-by: Raphael Lüthy <raphaelluethy@users.noreply.github.com>
raphaelluethy
marked this pull request as ready for review
July 17, 2026 21:21
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds Pi as a first-class coding-agent provider (from upstream pingdotgg/t3code#3818 /
feat/pi-provider), then finishes the remaining correctness gaps against the official Pi RPC docs and the PR review findings.Pi talks to the user’s
pi --mode rpcprocess over JSONL, mirrors the existing driver/adapter/text-generation shape, and stays disabled by default.Demo
End-to-end UI walkthrough (~68s): Settings shows Pi authenticated → new thread → select Pi / GPT-4.1 → send prompt → streamed reply.
pi-provider-working.mp4
Pi authenticated in provider settings
Pi chat reply confirming integration
Finishing fixes in this branch
approval-requiredauto-approves read-only tools;auto-accept-editsalso allows edit tools (bash still gated)Run bash?/Run write?classify as command/file approvalsget_state: adopt Pi’s reported model when none is selectedonApprovalUnavailablepolicyTest plan
vp check(0 errors)vp run typecheckTo show artifacts inline, enable in settings.