pi-extension-codex-apply-patch
v0.1.2
Published
Pi extension that adds Codex-style CFG constrained apply_patch with local verification
Maintainers
Readme
pi-extension-codex-apply-patch
Pi extension that adds Codex-style apply_patch with:
- Remote constraint: sends
apply_patchas a custom freeform tool with Lark grammar to Codex Responses API - Local constraint: parses and verifies patch format before applying filesystem changes
- Model gating: activates only for
gpt-5.2-codex*andgpt-5.3-codex* - Hard tool policy:
- on codex models,
editandwriteare disabled (useapply_patch) apply_patchis disabled for non-codex models- warning is shown when switching from codex to non-codex after
apply_patchhas been used in the session
- on codex models,
- Interrupted-turn recovery: orphaned custom tool calls are auto-completed with synthetic cancellation outputs so follow-up prompts do not fail with missing
custom_tool_call_output - Codex prompt parity (patch section): injects Codex
## apply_patchinstructions for codex 5.2/5.3 turns - Live patch counters: shows streaming
+X -Y pathlines while patch args arrive and while hunks/files are applied - Diff UI:
apply_patchrenders a colored diff using pi's native diff renderer (expand tool output to view full diff)
Install
pi install npm:pi-extension-codex-apply-patchOr for local dev in a project:
pi install ./How it works
- Registers an
apply_patchtool in pi - Enforces tool policy:
- on codex models, removes/blocks
editandwrite - when switching back to non-codex, restores
edit/writeif this extension removed them - exposes
apply_patchonly on codex 5.2/5.3 models
- on codex models, removes/blocks
- Overrides the
openai-codexprovider stream path viaregisterProvider(... streamSimple ... ) - When model is codex 5.2/5.3 family,
apply_patchis sent as:type: "custom"- grammar format (
syntax: "lark")
- Parses Codex
custom_tool_callevents and maps them into pi tool calls - Sends tool results back as
custom_tool_call_output
Local patch format
Expected patch envelope:
*** Begin Patch
*** Add File: hello.txt
+Hello
*** End PatchSupports:
*** Add File: <path>*** Delete File: <path>*** Update File: <path>(+ optional*** Move to: <path>)- hunks with
@@and lines prefixed by,+,-
Path behavior:
- matches pi
writesemantics for relative/absolute paths - relative paths resolve against current working directory
Development
pnpm install
pnpm typecheck
pnpm test