{"_id":"pi-openai-codex-compat","_rev":"31-6cfe6cc9a404e07db713e8e9fec988f1","name":"pi-openai-codex-compat","dist-tags":{"alpha":"0.0.10-alpha.8","latest":"0.0.21"},"versions":{"0.0.1-alpha.0":{"name":"pi-openai-codex-compat","version":"0.0.1-alpha.0","keywords":["pi-package"],"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","_id":"pi-openai-codex-compat@0.0.1-alpha.0","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"pi":{"extensions":["./extensions/openai-codex-compat/index.ts"]},"dist":{"shasum":"9a3bf98f251df44b914a666a5d5d05b654e1b335","tarball":"https://registry.npmjs.org/pi-openai-codex-compat/-/pi-openai-codex-compat-0.0.1-alpha.0.tgz","fileCount":38,"integrity":"sha512-qWqLeWDqBiJVGRuhm2fea1GVV1s20Bldy3gXfHJ7/YrGG8WDzB3/zkvzJexWsTEHccyQbEw7ePb+gguVpBG6ag==","signatures":[{"sig":"MEYCIQC662PfYE7AdJfhMmqShceJbD6L7Ou/QHoX24yBEOPf2AIhAOZ6/6p8Y98+lNw14pXMXEkYwiAISP9oqPu3KVeees5z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":361518},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"c769406e0276be78171469886051e7a9df0ce5e1","scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=1 test/*.test.ts","check":"hk check --all --check","lint:fix":"oxlint --fix"},"_npmUser":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"},"repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"_npmVersion":"11.18.0","description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","directories":{},"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"devDependencies":{"oxfmt":"0.60.0","oxlint":"1.75.0","typebox":"1.3.7","typescript":"7.0.2","@types/node":"22.20.1","oxlint-tsgolint":"7.0.2001","@earendil-works/pi-ai":"0.83.0","@earendil-works/pi-tui":"0.83.0","@earendil-works/pi-coding-agent":"0.83.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.83.0 <0.84.0","@earendil-works/pi-tui":">=0.83.0 <0.84.0","@earendil-works/pi-coding-agent":">=0.83.0 <0.84.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-codex-compat_0.0.1-alpha.0_1785775938512_0.4303630444388129","host":"s3://npm-registry-packages-npm-production"}},"0.0.1":{"name":"pi-openai-codex-compat","version":"0.0.1","keywords":["pi-package"],"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","_id":"pi-openai-codex-compat@0.0.1","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"pi":{"extensions":["./extensions/openai-codex-compat/index.ts"]},"dist":{"shasum":"258907a39c6e7d0ed5269f6f9d53b239c5a019e1","tarball":"https://registry.npmjs.org/pi-openai-codex-compat/-/pi-openai-codex-compat-0.0.1.tgz","fileCount":38,"integrity":"sha512-myEvE8xfuDSuZBUsT6bfrbu1jmU7N4zDxBbqhpx5CjYGZtbU2ouVHGu3ySzgOsiz95ZA2fnWglu0xOwEccFn2g==","signatures":[{"sig":"MEUCIBwNAKGtcwNGsKAl7b+uPRjioK3UJkIjWYfkKfRzFKU2AiEAw7ShdCOag/1iCdK/q2nCJnqb0oVyZ+p0k11xxwCDWoQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-openai-codex-compat@0.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":361533},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"02108114cd5b4bea6034ddf02093f4ef926412c6","scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=1 test/*.test.ts","check":"hk check --all --check","lint:fix":"oxlint --fix"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bc65cec-5d4b-4e5b-86a2-fd6389597196"}},"repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"_npmVersion":"11.18.0","description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","directories":{},"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"devDependencies":{"oxfmt":"0.60.0","oxlint":"1.75.0","typebox":"1.3.7","typescript":"7.0.2","@types/node":"22.20.1","oxlint-tsgolint":"7.0.2001","@earendil-works/pi-ai":"0.83.0","@earendil-works/pi-tui":"0.83.0","@earendil-works/pi-coding-agent":"0.83.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.83.0 <0.84.0","@earendil-works/pi-tui":">=0.83.0 <0.84.0","@earendil-works/pi-coding-agent":">=0.83.0 <0.84.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-codex-compat_0.0.1_1785776536913_0.6756043853405287","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"pi-openai-codex-compat","version":"0.0.2","keywords":["pi-package"],"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","_id":"pi-openai-codex-compat@0.0.2","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"pi":{"extensions":["./extensions/openai-codex-compat/index.ts"]},"dist":{"shasum":"5ec7fffd33ffb0d22bc6d4c6e3552f86a8dec81a","tarball":"https://registry.npmjs.org/pi-openai-codex-compat/-/pi-openai-codex-compat-0.0.2.tgz","fileCount":38,"integrity":"sha512-P1g5pBVdRLypFG7jsn+6oZHCru6O4bJqX3/ineb46sesLjHZU14CoripQ6nXOKfRgsronGqP8UuIMO9lwQJB/w==","signatures":[{"sig":"MEYCIQC9wD/mSsNX5WYc+FACtRssjs0beu2JcqApKh/6fr1/iQIhALVYHZUTinkPMGFp5kWfg1+XNvHMkuNGkqxAQfF0h953","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-openai-codex-compat@0.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":371840},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"c394708dc5b24809464433ae4b582de8fe55e426","scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=1 test/*.test.ts","check":"hk check --all --check","lint:fix":"oxlint --fix"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bc65cec-5d4b-4e5b-86a2-fd6389597196"}},"repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"_npmVersion":"11.18.0","description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","directories":{},"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"devDependencies":{"oxfmt":"0.60.0","oxlint":"1.75.0","typebox":"1.3.7","typescript":"7.0.2","@types/node":"22.20.1","oxlint-tsgolint":"7.0.2001","@earendil-works/pi-ai":"0.83.0","@earendil-works/pi-tui":"0.83.0","@earendil-works/pi-coding-agent":"0.83.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.83.0 <0.84.0","@earendil-works/pi-tui":">=0.83.0 <0.84.0","@earendil-works/pi-coding-agent":">=0.83.0 <0.84.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-codex-compat_0.0.2_1785778604189_0.18195774217474958","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"pi-openai-codex-compat","version":"0.0.3","keywords":["pi-package"],"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","_id":"pi-openai-codex-compat@0.0.3","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"pi":{"extensions":["./extensions/openai-codex-compat/index.ts"]},"dist":{"shasum":"9f7123ddd6a146d2612be0c50b53e8453f66a423","tarball":"https://registry.npmjs.org/pi-openai-codex-compat/-/pi-openai-codex-compat-0.0.3.tgz","fileCount":41,"integrity":"sha512-CQEbr9Qm+Jv4RwXGtiR0ZSbSK7FQD6udcN7mzy6PccF+P3E8TVssNd/mImm5z6+63ORWRr07E+h/Ws2mFPobpw==","signatures":[{"sig":"MEYCIQCWnt9y8QjuqPy7mOcT5i4GeuIa/qECX05VD/QhXFVo9AIhANACURWm/YKHNedGOGBqwY9rfrpuq+ki+4LaUE1DMv5B","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-openai-codex-compat@0.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":409181},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"90c06bc95b8e39b7bea3e73f4cf57da06c1dc852","scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=1 test/*.test.ts","check":"hk check --all --check","lint:fix":"oxlint --fix","test:live:codex":"PI_CODEX_LIVE_TEST=1 node --test --test-concurrency=1 test/codex-transport.live.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bc65cec-5d4b-4e5b-86a2-fd6389597196"}},"repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"_npmVersion":"11.18.0","description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","directories":{},"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"devDependencies":{"oxfmt":"0.60.0","oxlint":"1.75.0","typebox":"1.3.7","typescript":"7.0.2","@types/node":"22.20.1","oxlint-tsgolint":"7.0.2001","@earendil-works/pi-ai":"0.83.0","@earendil-works/pi-tui":"0.83.0","@earendil-works/pi-coding-agent":"0.83.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.83.0 <0.84.0","@earendil-works/pi-tui":">=0.83.0 <0.84.0","@earendil-works/pi-coding-agent":">=0.83.0 <0.84.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-codex-compat_0.0.3_1785852606261_0.5527056203897984","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"pi-openai-codex-compat","version":"0.0.4","keywords":["pi-package"],"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","_id":"pi-openai-codex-compat@0.0.4","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"pi":{"extensions":["./extensions/openai-codex-compat/index.ts"]},"dist":{"shasum":"f1751a374ac3227646fa80c9c57fe9cd1e67924f","tarball":"https://registry.npmjs.org/pi-openai-codex-compat/-/pi-openai-codex-compat-0.0.4.tgz","fileCount":47,"integrity":"sha512-aozQEa+I9jijiUPGFU5QMWd7A6Ag93BQDtxbo0W4r/U7fxLKt6i8Y/BFlgmQRffTW+w+iDU4vGWmqwGjVDpvkQ==","signatures":[{"sig":"MEYCIQDEzk59AwhUJHDFrvqyofe6V0lRaLiqRKJcSbU1O81KzQIhALnoel7QNIwyGWMW/xJjiMx5yaCTLOSrDN8ViKCgabHD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-openai-codex-compat@0.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":515361},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"59e90d6919ae325710e2b4a4b70e29d63812f464","scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=1 test/*.test.ts","check":"hk check --all --check","lint:fix":"oxlint --fix","test:live:codex":"PI_CODEX_LIVE_TEST=1 node --test --test-concurrency=1 test/codex-host.live.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bc65cec-5d4b-4e5b-86a2-fd6389597196"}},"repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"_npmVersion":"11.18.0","description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","directories":{},"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"devDependencies":{"oxfmt":"0.60.0","oxlint":"1.75.0","typebox":"1.3.7","typescript":"7.0.2","@types/node":"22.20.1","oxlint-tsgolint":"7.0.2001","@earendil-works/pi-ai":"0.83.0","@earendil-works/pi-tui":"0.83.0","@earendil-works/pi-coding-agent":"0.83.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.83.0 <0.84.0","@earendil-works/pi-tui":">=0.83.0 <0.84.0","@earendil-works/pi-coding-agent":">=0.83.0 <0.84.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-codex-compat_0.0.4_1786117700646_0.1851209803784808","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"pi-openai-codex-compat","version":"0.0.5","keywords":["pi-package"],"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","_id":"pi-openai-codex-compat@0.0.5","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"ea0b8a0ccc4623e0b0ea38534f063c2279e6756e","tarball":"https://registry.npmjs.org/pi-openai-codex-compat/-/pi-openai-codex-compat-0.0.5.tgz","fileCount":48,"integrity":"sha512-2Kq8fcqd1JxNMdS8T6uzOAW++PswD7Wf/7jkXG+WvsD03A2vkHI50XurgkYw9KAafUjxzakcFdKwE4lPFY8qRw==","signatures":[{"sig":"MEYCIQCOJb5SNArtECX+AC37fXLo2sddgjehAr9R0Rv+zM5q7AIhAPW6hltjc0BvotOdpwNTScndHgQAfc1vQXSNbg+XqP85","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-openai-codex-compat@0.0.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":515651},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"b9d06e7430cc026825b4c38d3f297fb70d5ca14c","scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=1 test/*.test.ts","check":"hk check --all --check","lint:fix":"oxlint --fix","test:live:codex":"PI_CODEX_LIVE_TEST=1 node --test --test-concurrency=1 test/codex-host.live.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bc65cec-5d4b-4e5b-86a2-fd6389597196"}},"repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"_npmVersion":"11.18.0","description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","directories":{},"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"devDependencies":{"oxfmt":"0.60.0","oxlint":"1.75.0","typebox":"1.3.7","typescript":"7.0.2","@types/node":"22.20.1","oxlint-tsgolint":"7.0.2001","@earendil-works/pi-ai":"0.83.0","@earendil-works/pi-tui":"0.83.0","@earendil-works/pi-coding-agent":"0.83.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.83.0 <0.84.0","@earendil-works/pi-tui":">=0.83.0 <0.84.0","@earendil-works/pi-coding-agent":">=0.83.0 <0.84.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-codex-compat_0.0.5_1786118291342_0.7158501579226368","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"pi-openai-codex-compat","version":"0.0.6","keywords":["pi-package"],"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","_id":"pi-openai-codex-compat@0.0.6","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"3e42304579ad7a9168341cb62c2d2ba041f864d8","tarball":"https://registry.npmjs.org/pi-openai-codex-compat/-/pi-openai-codex-compat-0.0.6.tgz","fileCount":48,"integrity":"sha512-rl02HZKcqz/eHZCzGSwZ7oMzPqyXwnG9QjqJDZogbOd7/4+aoHU6UUCOGi4iFq4L6oSXXbvBsRkuiv0EUSd02w==","signatures":[{"sig":"MEUCIB7o8usdaDMGNdPhudDy02dnPRC03h3BGWI8t9symfBcAiEAjPfZqclG4khWsAKFiloN4a5jrC5TR+nxM5b8ZuVklII=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-openai-codex-compat@0.0.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":516476},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"31804dab58205ab8e1defd9e6411bed82a7b1c30","scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=1 test/*.test.ts","check":"hk check --all --check","lint:fix":"oxlint --fix","pack:dry":"npm pack --dry-run --allow-directory=all","test:live:codex":"PI_CODEX_LIVE_TEST=1 node --test --test-concurrency=1 test/codex-host.live.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bc65cec-5d4b-4e5b-86a2-fd6389597196"}},"repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"_npmVersion":"11.18.0","description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","directories":{},"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"devDependencies":{"oxfmt":"0.60.0","oxlint":"1.75.0","typebox":"1.3.7","typescript":"7.0.2","@types/node":"22.20.1","oxlint-tsgolint":"7.0.2001","@earendil-works/pi-ai":"0.84.1","@earendil-works/pi-tui":"0.84.1","@earendil-works/pi-coding-agent":"0.84.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.84.0 <0.85.0","@earendil-works/pi-tui":">=0.84.0 <0.85.0","@earendil-works/pi-coding-agent":">=0.84.0 <0.85.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-codex-compat_0.0.6_1786359390610_0.09800224919177891","host":"s3://npm-registry-packages-npm-production"}},"0.0.7-alpha.0":{"name":"pi-openai-codex-compat","version":"0.0.7-alpha.0","keywords":["pi-package"],"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","_id":"pi-openai-codex-compat@0.0.7-alpha.0","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"d61460373ee381678b14a3ff357d1324f057c5e0","tarball":"https://registry.npmjs.org/pi-openai-codex-compat/-/pi-openai-codex-compat-0.0.7-alpha.0.tgz","fileCount":48,"integrity":"sha512-VFkrDD7oJUybBTO2X9Cr8tcEeTd2AxuC6iIrm/+37CURBTYT8W8m4J8dGy6tCAMyviRELqgPjutjsz/nnR90eA==","signatures":[{"sig":"MEYCIQDSku/RrByOAfk/ScdOEpV9n5v/R+KcwVuFey2qB/qJEQIhAI6QTc5p9hPDyYqhYTMVB/kiJLwAo2BCkcIY1+TDxYXc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-openai-codex-compat@0.0.7-alpha.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":517102},"type":"module","_from":"file:/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.7-alpha.0.tgz","engines":{"node":">=22.19.0"},"scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=1 test/*.test.ts","check":"hk check --all --check","release":"node scripts/release.ts","lint:fix":"oxlint --fix","pack:dry":"npm pack --dry-run --allow-directory=all","test:live:codex":"PI_CODEX_LIVE_TEST=1 node --test --test-concurrency=1 test/codex-host.live.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bc65cec-5d4b-4e5b-86a2-fd6389597196"}},"_resolved":"/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.7-alpha.0.tgz","_integrity":"sha512-VFkrDD7oJUybBTO2X9Cr8tcEeTd2AxuC6iIrm/+37CURBTYT8W8m4J8dGy6tCAMyviRELqgPjutjsz/nnR90eA==","repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"_npmVersion":"11.18.0","description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","directories":{},"_nodeVersion":"26.6.0","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"oxfmt":"0.60.0","oxlint":"1.75.0","typebox":"1.3.7","typescript":"7.0.2","@types/node":"22.20.1","oxlint-tsgolint":"7.0.2001","@earendil-works/pi-ai":"0.84.1","@earendil-works/pi-tui":"0.84.1","@earendil-works/pi-coding-agent":"0.84.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.84.0 <0.85.0","@earendil-works/pi-tui":">=0.84.0 <0.85.0","@earendil-works/pi-coding-agent":">=0.84.0 <0.85.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-codex-compat_0.0.7-alpha.0_1786375961121_0.19710858000360476","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"pi-openai-codex-compat","version":"0.0.7","keywords":["pi-package"],"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","_id":"pi-openai-codex-compat@0.0.7","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"7541d21e4c405594ff4606abb2cc6f4b4e13c23e","tarball":"https://registry.npmjs.org/pi-openai-codex-compat/-/pi-openai-codex-compat-0.0.7.tgz","fileCount":52,"integrity":"sha512-iOFaSwMFhXxH9k8wOinG/9zLqOkifLRw3T5VSiWUb6MS2eakSc+xok91HL1JOmCjbfLcdm5ymQmcvmrtRzwbyg==","signatures":[{"sig":"MEYCIQCtKN0DXK7WdZmQZhI97XskfVjWWZtPLtXfWXKwPn587gIhALrXR3Ld2NkAPjxfLJDSh4nqLzV0mOfsomhMWntJIoWy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-openai-codex-compat@0.0.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":756023},"type":"module","_from":"file:/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.7.tgz","engines":{"node":">=22.19.0"},"scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=1 test/*.test.ts","check":"hk check --all --check","release":"node scripts/release.ts","lint:fix":"oxlint --fix","pack:dry":"npm pack --dry-run --allow-directory=all","test:live:codex":"PI_CODEX_LIVE_TEST=1 node --test --test-concurrency=1 test/codex-host.live.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bc65cec-5d4b-4e5b-86a2-fd6389597196"}},"_resolved":"/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.7.tgz","_integrity":"sha512-iOFaSwMFhXxH9k8wOinG/9zLqOkifLRw3T5VSiWUb6MS2eakSc+xok91HL1JOmCjbfLcdm5ymQmcvmrtRzwbyg==","repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"_npmVersion":"11.18.0","description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","directories":{},"_nodeVersion":"26.6.0","dependencies":{"web-tree-sitter":"0.26.11","@2h2d/tree-sitter-wasms":"0.2.1"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"0.62.0","oxlint":"1.77.0","typebox":"1.3.11","typescript":"7.0.2","@types/node":"22.20.1","oxlint-tsgolint":"7.0.2001","@earendil-works/pi-ai":"0.84.1","@earendil-works/pi-tui":"0.84.1","@earendil-works/pi-coding-agent":"0.84.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.84.0 <0.85.0","@earendil-works/pi-tui":">=0.84.0 <0.85.0","@earendil-works/pi-coding-agent":">=0.84.0 <0.85.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-codex-compat_0.0.7_1786889562020_0.38045071626746085","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"pi-openai-codex-compat","version":"0.0.8","keywords":["pi-package"],"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","_id":"pi-openai-codex-compat@0.0.8","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"0543fd47eac68c1789029133619b7e911bab6729","tarball":"https://registry.npmjs.org/pi-openai-codex-compat/-/pi-openai-codex-compat-0.0.8.tgz","fileCount":52,"integrity":"sha512-pmjFE40aai+6NFQmpL+znhgv70lY+sSEtkayET7ohyA90T+irLjw46cL0/IL5Ov7U0sBwYjJRn8hduNzEbcbMw==","signatures":[{"sig":"MEYCIQDhRVIinG8R4rpjbh1kGv88sb5N/AnZ8s9avza+QtEZqQIhAKC9jEUxwm7DubQGJCuAlwQycI8qGS+uq2uaLWqHMBBA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-openai-codex-compat@0.0.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":755443},"type":"module","_from":"file:/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.8.tgz","engines":{"node":">=22.19.0"},"scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=1 test/*.test.ts","check":"hk check --all --check","release":"node scripts/release.ts","lint:fix":"oxlint --fix","pack:dry":"npm pack --dry-run --allow-directory=all","test:live:codex":"PI_CODEX_LIVE_TEST=1 node --test --test-concurrency=1 test/codex-host.live.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bc65cec-5d4b-4e5b-86a2-fd6389597196"}},"_resolved":"/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.8.tgz","_integrity":"sha512-pmjFE40aai+6NFQmpL+znhgv70lY+sSEtkayET7ohyA90T+irLjw46cL0/IL5Ov7U0sBwYjJRn8hduNzEbcbMw==","repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"_npmVersion":"11.18.0","description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","directories":{},"_nodeVersion":"26.6.0","dependencies":{"web-tree-sitter":"0.26.11","@2h2d/tree-sitter-wasms":"0.2.1"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"0.62.0","oxlint":"1.77.0","typebox":"1.3.11","typescript":"7.0.2","@types/node":"22.20.1","oxlint-tsgolint":"7.0.2001","@earendil-works/pi-ai":"0.84.1","@earendil-works/pi-tui":"0.84.1","@earendil-works/pi-coding-agent":"0.84.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.84.0 <0.85.0","@earendil-works/pi-tui":">=0.84.0 <0.85.0","@earendil-works/pi-coding-agent":">=0.84.0 <0.85.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-codex-compat_0.0.8_1786895149132_0.7939048941916125","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"pi-openai-codex-compat","version":"0.0.9","keywords":["pi-package"],"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","_id":"pi-openai-codex-compat@0.0.9","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"4417413dd7c02e567aca888949265ad164eeb4f6","tarball":"https://registry.npmjs.org/pi-openai-codex-compat/-/pi-openai-codex-compat-0.0.9.tgz","fileCount":52,"integrity":"sha512-z4X69cd22ZizXV755Jlg3E5hS2+XHIcVjR4+G2fYGAsEc5enc8vl0qb7LRwYXc3ODN4EydS3cCIGWQPBDFIcHg==","signatures":[{"sig":"MEUCIHLy1LmwSz8ngl8er5A48jF6W3rpEyfXqRdEIXfEg85fAiEA9NZAdSg+rqdjCt78gGEcctL/yClu2cxc/gV9Vx5Whhs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-openai-codex-compat@0.0.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":766679},"type":"module","_from":"file:/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.9.tgz","engines":{"node":">=22.19.0"},"scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=1 test/*.test.ts","check":"hk check --all --check","release":"node scripts/release.ts","lint:fix":"oxlint --fix","pack:dry":"npm pack --dry-run --allow-directory=all","test:live:codex":"PI_CODEX_LIVE_TEST=1 node --test --test-concurrency=1 test/codex-host.live.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bc65cec-5d4b-4e5b-86a2-fd6389597196"}},"_resolved":"/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.9.tgz","_integrity":"sha512-z4X69cd22ZizXV755Jlg3E5hS2+XHIcVjR4+G2fYGAsEc5enc8vl0qb7LRwYXc3ODN4EydS3cCIGWQPBDFIcHg==","repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"_npmVersion":"11.18.0","description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","directories":{},"_nodeVersion":"26.6.0","dependencies":{"web-tree-sitter":"0.26.11","@2h2d/tree-sitter-wasms":"0.2.1"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"0.62.0","oxlint":"1.77.0","typebox":"1.3.11","typescript":"7.0.2","@types/node":"22.20.1","oxlint-tsgolint":"7.0.2001","@earendil-works/pi-ai":"0.84.1","@earendil-works/pi-tui":"0.84.1","@earendil-works/pi-coding-agent":"0.84.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.84.0 <0.85.0","@earendil-works/pi-tui":">=0.84.0 <0.85.0","@earendil-works/pi-coding-agent":">=0.84.0 <0.85.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-codex-compat_0.0.9_1786901323296_0.18123469001367432","host":"s3://npm-registry-packages-npm-production"}},"0.0.10-alpha.1":{"name":"pi-openai-codex-compat","version":"0.0.10-alpha.1","keywords":["pi-package"],"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","_id":"pi-openai-codex-compat@0.0.10-alpha.1","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"eab2729be127d8d7687509e8f9b205d9a23ccf62","tarball":"https://registry.npmjs.org/pi-openai-codex-compat/-/pi-openai-codex-compat-0.0.10-alpha.1.tgz","fileCount":92,"integrity":"sha512-w9FcMq2F7lWknkWUvddg4FmU/T95vADVnAh84HhkBxzMaYVuPqSQ+3tguDapAfrip8G3+sTIXx0C9ZANC8sz/Q==","signatures":[{"sig":"MEYCIQCWRvUA/r8JOW9bMl59B8SDACi5841kRUkIxMfGblo61QIhAP/6TisgQ/StznGThpHLhle+TZq23o04eVEJWHWNfsKM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-openai-codex-compat@0.0.10-alpha.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":788519},"type":"module","_from":"file:/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.10-alpha.1.tgz","engines":{"node":">=22.19.0"},"scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=4 test/*.test.ts","check":"hk check --all --check","release":"node scripts/release.ts","lint:fix":"oxlint --fix","pack:dry":"npm pack --dry-run --allow-directory=all","test:live:codex":"PI_CODEX_LIVE_TEST=1 node --test --test-concurrency=1 test/codex-host.live.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bc65cec-5d4b-4e5b-86a2-fd6389597196"}},"_resolved":"/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.10-alpha.1.tgz","_integrity":"sha512-w9FcMq2F7lWknkWUvddg4FmU/T95vADVnAh84HhkBxzMaYVuPqSQ+3tguDapAfrip8G3+sTIXx0C9ZANC8sz/Q==","repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"_npmVersion":"11.18.0","description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","directories":{},"_nodeVersion":"26.6.0","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"oxfmt":"0.63.0","oxlint":"1.78.0","typebox":"1.3.11","typescript":"7.0.2","@types/node":"22.20.1","oxlint-tsgolint":"7.0.2001","@2h2d/oxlint-config":"0.1.0-alpha.12","@earendil-works/pi-ai":"0.84.1","@earendil-works/pi-tui":"0.84.1","@earendil-works/pi-coding-agent":"0.84.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.84.0 <0.85.0","@earendil-works/pi-tui":">=0.84.0 <0.85.0","@earendil-works/pi-coding-agent":">=0.84.0 <0.85.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-codex-compat_0.0.10-alpha.1_1787562968415_0.5531284373763716","host":"s3://npm-registry-packages-npm-production"}},"0.0.10-alpha.2":{"name":"pi-openai-codex-compat","version":"0.0.10-alpha.2","keywords":["pi-package"],"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","_id":"pi-openai-codex-compat@0.0.10-alpha.2","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"6a5828bb5dbabd34dafe7110a482e2a9088aec92","tarball":"https://registry.npmjs.org/pi-openai-codex-compat/-/pi-openai-codex-compat-0.0.10-alpha.2.tgz","fileCount":93,"integrity":"sha512-6Jo1LU+yJ9bVv2NkGG8Tlaa99iWTaZZ2PNOKT3hvonMg8GAXYHl9GggtyENTsB3vuIl9Zc7BOcHdPRXrV+geiw==","signatures":[{"sig":"MEUCIQCRvdda1S+8jQxQw9cvMeu3Yf4IjkbsDzA1yPcKdBEp0AIgZgLnXLsgZUrTbW0+Mjs4oae5PZT8mQxt7WlrINocsBI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-openai-codex-compat@0.0.10-alpha.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":817215},"type":"module","_from":"file:/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.10-alpha.2.tgz","engines":{"node":">=22.19.0"},"scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=4 test/*.test.ts","check":"hk check --all --check","release":"node scripts/release.ts","lint:fix":"oxlint --fix","pack:dry":"npm pack --dry-run --allow-directory=all","test:live:codex":"PI_CODEX_LIVE_TEST=1 node --test --test-concurrency=1 test/codex-host.live.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bc65cec-5d4b-4e5b-86a2-fd6389597196"}},"_resolved":"/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.10-alpha.2.tgz","_integrity":"sha512-6Jo1LU+yJ9bVv2NkGG8Tlaa99iWTaZZ2PNOKT3hvonMg8GAXYHl9GggtyENTsB3vuIl9Zc7BOcHdPRXrV+geiw==","repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"_npmVersion":"11.18.0","description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","directories":{},"_nodeVersion":"26.6.0","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"oxfmt":"0.63.0","oxlint":"1.78.0","typebox":"1.3.11","typescript":"7.0.2","@types/node":"22.20.1","oxlint-tsgolint":"7.0.2001","@2h2d/oxlint-config":"0.1.0","@earendil-works/pi-ai":"0.84.3","@earendil-works/pi-tui":"0.84.3","@earendil-works/pi-coding-agent":"0.84.3"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.84.0 <0.85.0","@earendil-works/pi-tui":">=0.84.0 <0.85.0","@earendil-works/pi-coding-agent":">=0.84.0 <0.85.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-codex-compat_0.0.10-alpha.2_1787589171730_0.6028734640279365","host":"s3://npm-registry-packages-npm-production"}},"0.0.10-alpha.3":{"name":"pi-openai-codex-compat","version":"0.0.10-alpha.3","keywords":["pi-package"],"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","_id":"pi-openai-codex-compat@0.0.10-alpha.3","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"6471b4072514d0b772e016a8d101b2b1f19ecf27","tarball":"https://registry.npmjs.org/pi-openai-codex-compat/-/pi-openai-codex-compat-0.0.10-alpha.3.tgz","fileCount":93,"integrity":"sha512-TsvDNZTG0kx8UBhguc81IzZWNc9pBeEEz0pmfw5YwcuharjYC1vLuEf7qJyofERcGkRhH7u8N5yXvkdGp1HS2A==","signatures":[{"sig":"MEUCIQCTVeo/3JTZjt6DpoV0MCB6H9yipEooT7gedzTltcz7oQIgPiM5eDXfP+fcABmphfaCT9r5uieg/hqlp6NAkxvUR6I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-openai-codex-compat@0.0.10-alpha.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":819924},"type":"module","_from":"file:/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.10-alpha.3.tgz","engines":{"node":">=22.19.0"},"scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=4 test/*.test.ts","check":"hk check --all --check","release":"node scripts/release.ts","lint:fix":"oxlint --fix","pack:dry":"npm pack --dry-run --allow-directory=all","test:live:codex":"PI_CODEX_LIVE_TEST=1 node --test --test-concurrency=1 test/codex-host.live.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bc65cec-5d4b-4e5b-86a2-fd6389597196"}},"_resolved":"/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.10-alpha.3.tgz","_integrity":"sha512-TsvDNZTG0kx8UBhguc81IzZWNc9pBeEEz0pmfw5YwcuharjYC1vLuEf7qJyofERcGkRhH7u8N5yXvkdGp1HS2A==","repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"_npmVersion":"11.18.0","description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","directories":{},"_nodeVersion":"26.6.0","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"oxfmt":"0.63.0","oxlint":"1.78.0","typebox":"1.3.11","typescript":"7.0.2","@types/node":"22.20.1","@2h2d/ts-config":"0.0.1","oxlint-tsgolint":"7.0.2001","@2h2d/oxlint-config":"0.1.0","@earendil-works/pi-ai":"0.84.3","@earendil-works/pi-tui":"0.84.3","@earendil-works/pi-coding-agent":"0.84.3"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.84.0 <0.85.0","@earendil-works/pi-tui":">=0.84.0 <0.85.0","@earendil-works/pi-coding-agent":">=0.84.0 <0.85.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-codex-compat_0.0.10-alpha.3_1787594206950_0.36128659599558355","host":"s3://npm-registry-packages-npm-production"}},"0.0.10-alpha.4":{"name":"pi-openai-codex-compat","version":"0.0.10-alpha.4","keywords":["pi-package"],"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","_id":"pi-openai-codex-compat@0.0.10-alpha.4","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"b4d24ea19ad181f7fa640d67b5aad7f55073b06c","tarball":"https://registry.npmjs.org/pi-openai-codex-compat/-/pi-openai-codex-compat-0.0.10-alpha.4.tgz","fileCount":104,"integrity":"sha512-LFu++TgLIfjUGyZ17wPHbk0ugteCPRXCjypGI1aLMdENXCMZ+aUtycWF7iQKyLIYcoP+nqnaAi/GKr5mqNmmFg==","signatures":[{"sig":"MEQCIFi0V5J97JeoBM4BAdHTD9hl8NSOYP+zT/kZnpePIqlcAiA6DiocCztogowUbBzxcgLy4qF3lkmMzWs65asMSxufXQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-openai-codex-compat@0.0.10-alpha.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":951999},"type":"module","_from":"file:/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.10-alpha.4.tgz","engines":{"node":">=22.19.0"},"scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=4 test/*.test.ts","check":"hk check --all --check","release":"node scripts/release.ts","lint:fix":"oxlint --fix","pack:dry":"npm pack --dry-run --allow-directory=all","test:live:codex":"PI_CODEX_LIVE_TEST=1 node --test --test-concurrency=1 test/codex-host.live.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bc65cec-5d4b-4e5b-86a2-fd6389597196"}},"_resolved":"/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.10-alpha.4.tgz","_integrity":"sha512-LFu++TgLIfjUGyZ17wPHbk0ugteCPRXCjypGI1aLMdENXCMZ+aUtycWF7iQKyLIYcoP+nqnaAi/GKr5mqNmmFg==","repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"_npmVersion":"11.18.0","description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","directories":{},"_nodeVersion":"26.6.0","dependencies":{"node-pty":"1.2.0-beta.15","tree-sitter":"0.25.1","tree-sitter-bash":"0.25.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"oxfmt":"0.63.0","oxlint":"1.78.0","typebox":"1.3.11","typescript":"7.0.2","@types/node":"22.20.1","@2h2d/ts-config":"0.0.1","oxlint-tsgolint":"7.0.2001","@2h2d/oxlint-config":"0.1.0","@earendil-works/pi-ai":"0.84.3","@earendil-works/pi-tui":"0.84.3","@earendil-works/pi-coding-agent":"0.84.3"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.84.0 <0.85.0","@earendil-works/pi-tui":">=0.84.0 <0.85.0","@earendil-works/pi-coding-agent":">=0.84.0 <0.85.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-codex-compat_0.0.10-alpha.4_1787756130562_0.8183543094604195","host":"s3://npm-registry-packages-npm-production"}},"0.0.10-alpha.5":{"name":"pi-openai-codex-compat","version":"0.0.10-alpha.5","keywords":["pi-package"],"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","_id":"pi-openai-codex-compat@0.0.10-alpha.5","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"403ef0982787afbcc7fa6c63cf06b3dc0dc4e40f","tarball":"https://registry.npmjs.org/pi-openai-codex-compat/-/pi-openai-codex-compat-0.0.10-alpha.5.tgz","fileCount":104,"integrity":"sha512-MocAy6lLFtHkuwad0Ycs+gfu78uSK2ILl9XI6vQnyPeAynSNpSvOq9cwAAoV6p5qV3QNTD4bA4icOQQ/Oaf4fA==","signatures":[{"sig":"MEUCIBjwUMKqqHHdFnSUQ+3ImxSQHwX28B+/MGVUwmPuV1rdAiEA+uYd0gZ3WNJgKcFu+EZqjGlhmD9W+PtJ8qvGmHR8RxI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-openai-codex-compat@0.0.10-alpha.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":952092},"type":"module","_from":"file:/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.10-alpha.5.tgz","engines":{"node":">=22.19.0"},"scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=4 test/*.test.ts","check":"hk check --all --check","release":"node scripts/release.ts","lint:fix":"oxlint --fix","pack:dry":"npm pack --dry-run --allow-directory=all","test:live:codex":"PI_CODEX_LIVE_TEST=1 node --test --test-concurrency=1 test/codex-host.live.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bc65cec-5d4b-4e5b-86a2-fd6389597196"}},"_resolved":"/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.10-alpha.5.tgz","_integrity":"sha512-MocAy6lLFtHkuwad0Ycs+gfu78uSK2ILl9XI6vQnyPeAynSNpSvOq9cwAAoV6p5qV3QNTD4bA4icOQQ/Oaf4fA==","repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"_npmVersion":"11.18.0","description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","directories":{},"_nodeVersion":"26.6.0","dependencies":{"node-pty":"1.2.0-beta.15","tree-sitter":"0.25.1","tree-sitter-bash":"0.25.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"oxfmt":"0.64.0","oxlint":"1.79.0","typebox":"1.3.16","typescript":"7.0.2","@types/node":"22.20.1","@2h2d/ts-config":"0.0.1","oxlint-tsgolint":"7.0.2001","@2h2d/oxlint-config":"0.1.1","@earendil-works/pi-ai":"0.84.3","@earendil-works/pi-tui":"0.84.3","@earendil-works/pi-coding-agent":"0.84.3"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.84.0 <0.85.0","@earendil-works/pi-tui":">=0.84.0 <0.85.0","@earendil-works/pi-coding-agent":">=0.84.0 <0.85.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-codex-compat_0.0.10-alpha.5_1787819986823_0.2693680686889566","host":"s3://npm-registry-packages-npm-production"}},"0.0.10-alpha.6":{"name":"pi-openai-codex-compat","version":"0.0.10-alpha.6","keywords":["pi-package"],"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","_id":"pi-openai-codex-compat@0.0.10-alpha.6","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"cb9c2510ca36adabb805614da0beb8151f3c241b","tarball":"https://registry.npmjs.org/pi-openai-codex-compat/-/pi-openai-codex-compat-0.0.10-alpha.6.tgz","fileCount":104,"integrity":"sha512-+sYt5sEic9T4I/TgKa6ZKPranhPumBmy13V/WI8vUydGmny4K+3zS0vVHVmC4dKHGAMTwN3N5V7ZTnhI5MtUIQ==","signatures":[{"sig":"MEUCIGvSM0+nAVH/VB+Wj7W7qEcI3bioly+3PcG0+6PUVn20AiEAvrw/7LBqeoAN2irzJjEAUSF2YTcYgpacTqrvlJzopEk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-openai-codex-compat@0.0.10-alpha.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":956603},"type":"module","_from":"file:/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.10-alpha.6.tgz","engines":{"node":">=22.19.0"},"scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=4 test/*.test.ts","check":"hk check --all --check","release":"node scripts/release.ts","lint:fix":"oxlint --fix","pack:dry":"npm pack --dry-run --allow-directory=all","test:live:codex":"PI_CODEX_LIVE_TEST=1 node --test --test-concurrency=1 test/codex-host.live.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bc65cec-5d4b-4e5b-86a2-fd6389597196"}},"_resolved":"/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.10-alpha.6.tgz","_integrity":"sha512-+sYt5sEic9T4I/TgKa6ZKPranhPumBmy13V/WI8vUydGmny4K+3zS0vVHVmC4dKHGAMTwN3N5V7ZTnhI5MtUIQ==","repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"_npmVersion":"11.18.0","description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","directories":{},"_nodeVersion":"26.6.0","dependencies":{"node-pty":"1.2.0-beta.15","tree-sitter":"0.25.1","tree-sitter-bash":"0.25.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"oxfmt":"0.64.0","oxlint":"1.79.0","typebox":"1.3.16","typescript":"7.0.2","@types/node":"22.20.1","@2h2d/ts-config":"0.0.1","oxlint-tsgolint":"7.0.2001","@2h2d/oxlint-config":"0.1.1","@earendil-works/pi-ai":"0.84.3","@earendil-works/pi-tui":"0.84.3","@earendil-works/pi-coding-agent":"0.84.3"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.84.0 <0.85.0","@earendil-works/pi-tui":">=0.84.0 <0.85.0","@earendil-works/pi-coding-agent":">=0.84.0 <0.85.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-codex-compat_0.0.10-alpha.6_1787822993318_0.9454312012796016","host":"s3://npm-registry-packages-npm-production"}},"0.0.10-alpha.7":{"name":"pi-openai-codex-compat","version":"0.0.10-alpha.7","keywords":["pi-package"],"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","_id":"pi-openai-codex-compat@0.0.10-alpha.7","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"a4193f362eed45fdac5170719f514e6969ff6e1b","tarball":"https://registry.npmjs.org/pi-openai-codex-compat/-/pi-openai-codex-compat-0.0.10-alpha.7.tgz","fileCount":104,"integrity":"sha512-EvY5dB5v/Ng95F26wXAPrk1AkTjD6i9O9IWTtPV4fWA9Lk8nB583c8DRo87/KY1hjQ/Za//a/Xtj8azcHyQCaw==","signatures":[{"sig":"MEYCIQDhPKbdT42U5TMWB2TqwxNk+WEy1+mHTTW9zibAabkMyQIhAOut9L1nYEm9v4xA5PJmEAD15BbiUgjBoYZ+m3QYZObW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-openai-codex-compat@0.0.10-alpha.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":956937},"type":"module","_from":"file:/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.10-alpha.7.tgz","engines":{"node":">=22.19.0"},"scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=4 test/*.test.ts","check":"hk check --all --check","release":"node scripts/release.ts","lint:fix":"oxlint --fix","pack:dry":"npm pack --dry-run --allow-directory=all","test:live:codex":"PI_CODEX_LIVE_TEST=1 node --test --test-concurrency=1 test/codex-host.live.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bc65cec-5d4b-4e5b-86a2-fd6389597196"}},"_resolved":"/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.10-alpha.7.tgz","_integrity":"sha512-EvY5dB5v/Ng95F26wXAPrk1AkTjD6i9O9IWTtPV4fWA9Lk8nB583c8DRo87/KY1hjQ/Za//a/Xtj8azcHyQCaw==","repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"_npmVersion":"11.18.0","description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","directories":{},"_nodeVersion":"26.6.0","dependencies":{"node-pty":"1.2.0-beta.15","tree-sitter":"0.25.1","tree-sitter-bash":"0.25.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"oxfmt":"0.64.0","oxlint":"1.79.0","typebox":"1.3.16","typescript":"7.0.2","@types/node":"22.20.1","@2h2d/ts-config":"0.0.1","oxlint-tsgolint":"7.0.2001","@2h2d/oxlint-config":"0.1.1","@earendil-works/pi-ai":"0.85.1","@earendil-works/pi-tui":"0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.84.0 <0.86.0","@earendil-works/pi-tui":">=0.84.0 <0.86.0","@earendil-works/pi-coding-agent":">=0.84.0 <0.86.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-codex-compat_0.0.10-alpha.7_1788762880904_0.9710505926472568","host":"s3://npm-registry-packages-npm-production"}},"0.0.10-alpha.8":{"name":"pi-openai-codex-compat","version":"0.0.10-alpha.8","keywords":["pi-package"],"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","_id":"pi-openai-codex-compat@0.0.10-alpha.8","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"8468ab82ff87f5c8d16c267f799f75f7b6c845c8","tarball":"https://registry.npmjs.org/pi-openai-codex-compat/-/pi-openai-codex-compat-0.0.10-alpha.8.tgz","fileCount":104,"integrity":"sha512-zqHwDLnnEtaL7i6SF3V8ggyts4r+bAv9KfU9rNSJqIUsoYSCdLi3HbrZRC/WO/ktS6ChjowQN2KBLXYCgbSxiQ==","signatures":[{"sig":"MEUCIC6SwdU6id2rdIc2yypfLY7GGd4Ovch4Kya+Qv06YuTfAiEA+AgRy8btoN9+NXE/+L3jJSxilS/Ilr2nNuamYe6HjwI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-openai-codex-compat@0.0.10-alpha.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":957582},"type":"module","_from":"file:/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.10-alpha.8.tgz","engines":{"node":">=22.19.0"},"scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=4 test/*.test.ts","check":"hk check --all --check","release":"node scripts/release.ts","lint:fix":"oxlint --fix","pack:dry":"npm pack --dry-run --allow-directory=all","test:live:codex":"PI_CODEX_LIVE_TEST=1 node --test --test-concurrency=1 test/codex-host.live.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bc65cec-5d4b-4e5b-86a2-fd6389597196"}},"_resolved":"/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.10-alpha.8.tgz","_integrity":"sha512-zqHwDLnnEtaL7i6SF3V8ggyts4r+bAv9KfU9rNSJqIUsoYSCdLi3HbrZRC/WO/ktS6ChjowQN2KBLXYCgbSxiQ==","repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"_npmVersion":"11.18.0","description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","directories":{},"_nodeVersion":"26.6.0","dependencies":{"node-pty":"1.2.0-beta.15","tree-sitter":"0.25.1","tree-sitter-bash":"0.25.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"oxfmt":"0.64.0","oxlint":"1.79.0","typebox":"1.3.16","typescript":"7.0.2","@types/node":"22.20.1","@2h2d/ts-config":"0.0.1","oxlint-tsgolint":"7.0.2001","@2h2d/oxlint-config":"0.1.1","@earendil-works/pi-ai":"0.85.1","@earendil-works/pi-tui":"0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.84.0 <0.86.0","@earendil-works/pi-tui":">=0.84.0 <0.86.0","@earendil-works/pi-coding-agent":">=0.84.0 <0.86.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-codex-compat_0.0.10-alpha.8_1788957609348_0.8276911317743632","host":"s3://npm-registry-packages-npm-production"}},"0.0.10":{"name":"pi-openai-codex-compat","version":"0.0.10","keywords":["pi-package"],"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","_id":"pi-openai-codex-compat@0.0.10","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"pi":{"extensions":["./extensions/index.ts"]},"bin":{"pi-apply-patch":"bin/pi-apply-patch.ts"},"dist":{"shasum":"84578134b1cf95e2286cd9f7904db450a5927b89","tarball":"https://registry.npmjs.org/pi-openai-codex-compat/-/pi-openai-codex-compat-0.0.10.tgz","fileCount":106,"integrity":"sha512-k4BfTIyGcF0CdRadrNsaVU749WnC6reln78J8xmGq0lBVMBmVoBiUKP4Vc4Mqor7U93H66Kb/rUZO6Du2Hp1NQ==","signatures":[{"sig":"MEUCIFjO+AfkDFe2xpHqwS3D1C8DSaPLqCtUNxxLovflNvcaAiEAisnD94VSejbrqzLIOvttWx2krnS1LN0b3yCf8Po7cwU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-openai-codex-compat@0.0.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":964849},"type":"module","_from":"file:/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.10.tgz","engines":{"node":">=22.19.0"},"scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=4 test/*.test.ts","check":"hk check --all --check","release":"node scripts/release.ts","lint:fix":"oxlint --fix","pack:dry":"npm pack --dry-run --allow-directory=all","test:live:codex":"PI_CODEX_LIVE_TEST=1 node --test --test-concurrency=1 test/codex-host.live.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bc65cec-5d4b-4e5b-86a2-fd6389597196"}},"_resolved":"/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.10.tgz","_integrity":"sha512-k4BfTIyGcF0CdRadrNsaVU749WnC6reln78J8xmGq0lBVMBmVoBiUKP4Vc4Mqor7U93H66Kb/rUZO6Du2Hp1NQ==","repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"_npmVersion":"11.18.0","description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","directories":{},"_nodeVersion":"26.6.0","dependencies":{"node-pty":"1.2.0-beta.15","tree-sitter":"0.25.1","tree-sitter-bash":"0.25.1"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"0.64.0","oxlint":"1.79.0","typebox":"1.3.16","typescript":"7.0.2","@types/node":"22.20.1","@2h2d/ts-config":"0.0.1","oxlint-tsgolint":"7.0.2001","@2h2d/oxlint-config":"0.1.1","@earendil-works/pi-ai":"0.86.0","@earendil-works/pi-tui":"0.86.0","@earendil-works/pi-coding-agent":"0.86.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.86.0 <0.87.0","@earendil-works/pi-tui":">=0.86.0 <0.87.0","@earendil-works/pi-coding-agent":">=0.86.0 <0.87.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-codex-compat_0.0.10_1789892813046_0.4888183247984863","host":"s3://npm-registry-packages-npm-production"}},"0.0.11":{"name":"pi-openai-codex-compat","version":"0.0.11","keywords":["pi-package"],"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","_id":"pi-openai-codex-compat@0.0.11","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"pi":{"extensions":["./extensions/index.ts"]},"bin":{"pi-apply-patch":"bin/pi-apply-patch.ts"},"dist":{"shasum":"51af9db2d92f9fd9f2a1502b21a5024faaae984d","tarball":"https://registry.npmjs.org/pi-openai-codex-compat/-/pi-openai-codex-compat-0.0.11.tgz","fileCount":107,"integrity":"sha512-T4kk68JN1zeeIPaXOz0x0RXOBXLsv+6532t5712V9R86TxyeZrqV24LF9uwes01bKFr9MVCGbnHu24exCrweAA==","signatures":[{"sig":"MEQCIENK0VKUEGk+UQJYJgPLmrdbCTtoEWCnrGEKvUOsg59qAiBFkhw2/e4swSIxeNoNn1j5NqRDaYQEk63s7qtzV+g0vA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-openai-codex-compat@0.0.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":966854},"type":"module","_from":"file:/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.11.tgz","engines":{"node":">=22.19.0"},"scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=4 test/*.test.ts","check":"hk check --all --check","release":"node scripts/release.ts","lint:fix":"oxlint --fix","pack:dry":"npm pack --dry-run --allow-directory=all","test:live:codex":"PI_CODEX_LIVE_TEST=1 node --test --test-concurrency=1 test/codex-host.live.test.ts test/codex-cli.live.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bc65cec-5d4b-4e5b-86a2-fd6389597196"}},"_resolved":"/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.11.tgz","_integrity":"sha512-T4kk68JN1zeeIPaXOz0x0RXOBXLsv+6532t5712V9R86TxyeZrqV24LF9uwes01bKFr9MVCGbnHu24exCrweAA==","repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"_npmVersion":"11.18.0","description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","directories":{},"_nodeVersion":"26.6.0","dependencies":{"node-pty":"1.2.0-beta.15","tree-sitter":"0.25.1","tree-sitter-bash":"0.25.1"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"0.64.0","oxlint":"1.79.0","typebox":"1.3.16","typescript":"7.0.2","@types/node":"22.20.1","@2h2d/ts-config":"0.0.1","oxlint-tsgolint":"7.0.2001","@2h2d/oxlint-config":"0.1.1","@earendil-works/pi-ai":"0.86.0","@earendil-works/pi-tui":"0.86.0","@earendil-works/pi-coding-agent":"0.86.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.86.0 <0.87.0","@earendil-works/pi-tui":">=0.86.0 <0.87.0","@earendil-works/pi-coding-agent":">=0.86.0 <0.87.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-codex-compat_0.0.11_1789898035056_0.6765389550155012","host":"s3://npm-registry-packages-npm-production"}},"0.0.12":{"name":"pi-openai-codex-compat","version":"0.0.12","keywords":["pi-package"],"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","_id":"pi-openai-codex-compat@0.0.12","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"pi":{"extensions":["./extensions/index.ts"]},"bin":{"pi-apply-patch":"bin/pi-apply-patch.ts"},"dist":{"shasum":"21148ae34b0e5fb8b08e2610a7520232bf5e99c1","tarball":"https://registry.npmjs.org/pi-openai-codex-compat/-/pi-openai-codex-compat-0.0.12.tgz","fileCount":107,"integrity":"sha512-5LWT7O2f3UzFSdpS+Lq9PhX0Pyyl7Oy5u5ZSw8dZb6Ham7LM5TJmmtotrHd3kEPYOZMSYCH42GgZ4EIHHc3NyA==","signatures":[{"sig":"MEUCIQCRwmN/AKzcyKWJ1bi2rHBxiHDbpG9MziS9MicEmqRxXwIgVeHFBgavMEg8CpRrdwXaWUTFORIQhPxt62TuSdmSPn0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-openai-codex-compat@0.0.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":972809},"type":"module","_from":"file:/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.12.tgz","engines":{"node":">=22.19.0"},"scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=4 test/*.test.ts","check":"hk check --all --check","release":"node scripts/release.ts","lint:fix":"oxlint --fix","pack:dry":"npm pack --dry-run --allow-directory=all","test:live:codex":"PI_CODEX_LIVE_TEST=1 node --test --test-concurrency=1 test/codex-host.live.test.ts test/codex-cli.live.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bc65cec-5d4b-4e5b-86a2-fd6389597196"}},"_resolved":"/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.12.tgz","_integrity":"sha512-5LWT7O2f3UzFSdpS+Lq9PhX0Pyyl7Oy5u5ZSw8dZb6Ham7LM5TJmmtotrHd3kEPYOZMSYCH42GgZ4EIHHc3NyA==","repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"_npmVersion":"11.18.0","description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","directories":{},"_nodeVersion":"26.6.0","dependencies":{"node-pty":"1.2.0-beta.15","tree-sitter":"0.25.1","tree-sitter-bash":"0.25.1"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"0.64.0","oxlint":"1.79.0","typebox":"1.3.16","typescript":"7.0.2","@types/node":"22.20.1","@2h2d/ts-config":"0.0.1","oxlint-tsgolint":"7.0.2001","@2h2d/oxlint-config":"0.1.1","@earendil-works/pi-ai":"0.86.0","@earendil-works/pi-tui":"0.86.0","@earendil-works/pi-coding-agent":"0.86.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.86.0 <0.87.0","@earendil-works/pi-tui":">=0.86.0 <0.87.0","@earendil-works/pi-coding-agent":">=0.86.0 <0.87.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-codex-compat_0.0.12_1789939562825_0.2634392230783784","host":"s3://npm-registry-packages-npm-production"}},"0.0.13":{"name":"pi-openai-codex-compat","version":"0.0.13","keywords":["pi-package"],"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","_id":"pi-openai-codex-compat@0.0.13","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"pi":{"extensions":["./extensions/index.ts"]},"bin":{"pi-apply-patch":"bin/pi-apply-patch.ts"},"dist":{"shasum":"e481d5c448694ac1ba4dce0e170f19e77b59befa","tarball":"https://registry.npmjs.org/pi-openai-codex-compat/-/pi-openai-codex-compat-0.0.13.tgz","fileCount":107,"integrity":"sha512-StaRLa4VOBZ/q2nA3yPeEVyN3arXTnF5acUe0IBhKR+AdNAefGGadyCL6nvQp+osjUyE3ymCZqTfewEBL44Zsw==","signatures":[{"sig":"MEUCIQDFITk5ILy3sVNyc+WqFh5BheLEavVgn1BgoomQJvkAJgIgaRitvsyJOIBkhqaMg9yWSxoyOxLeZraLWU3/C8LmbJM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-openai-codex-compat@0.0.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":972174},"type":"module","_from":"file:/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.13.tgz","engines":{"node":">=22.19.0"},"scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=4 test/*.test.ts","check":"hk check --all --check","release":"node scripts/release.ts","lint:fix":"oxlint --fix","pack:dry":"npm pack --dry-run --allow-directory=all","test:live:codex":"PI_CODEX_LIVE_TEST=1 node --test --test-concurrency=1 test/codex-host.live.test.ts test/codex-cli.live.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bc65cec-5d4b-4e5b-86a2-fd6389597196"}},"_resolved":"/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.13.tgz","_integrity":"sha512-StaRLa4VOBZ/q2nA3yPeEVyN3arXTnF5acUe0IBhKR+AdNAefGGadyCL6nvQp+osjUyE3ymCZqTfewEBL44Zsw==","repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"_npmVersion":"11.18.0","description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","directories":{},"_nodeVersion":"26.6.0","dependencies":{"node-pty":"1.2.0-beta.15","tree-sitter":"0.25.1","tree-sitter-bash":"0.25.1"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"0.64.0","oxlint":"1.79.0","typebox":"1.3.16","typescript":"7.0.2","@types/node":"22.20.1","@2h2d/ts-config":"0.0.1","oxlint-tsgolint":"7.0.2001","@2h2d/oxlint-config":"0.1.1","@earendil-works/pi-ai":"0.86.1","@earendil-works/pi-tui":"0.86.1","@earendil-works/pi-coding-agent":"0.86.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.86.0 <0.87.0","@earendil-works/pi-tui":">=0.86.0 <0.87.0","@earendil-works/pi-coding-agent":">=0.86.0 <0.87.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-codex-compat_0.0.13_1789962134973_0.9051601490011505","host":"s3://npm-registry-packages-npm-production"}},"0.0.14":{"name":"pi-openai-codex-compat","version":"0.0.14","keywords":["pi-package"],"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","_id":"pi-openai-codex-compat@0.0.14","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"pi":{"extensions":["./extensions/index.ts"]},"bin":{"pi-apply-patch":"bin/pi-apply-patch.ts"},"dist":{"shasum":"fcb6a4562620246e8fcd782270e33cb58c818b2e","tarball":"https://registry.npmjs.org/pi-openai-codex-compat/-/pi-openai-codex-compat-0.0.14.tgz","fileCount":107,"integrity":"sha512-INymZO4/LhBDsZG/cPMLURSnFdxiDHmwNnOIQDSw9zaLTBlk1qplfOf6iPOToFDfslSkz9AX2DP3oVq+/sHKbA==","signatures":[{"sig":"MEYCIQDC+BQpM0ti5vknVkvlfBfe43ZTHOA19phOS6Ho9iJzegIhAPwFcVV7K3vh/z7h+i0kOgKwBWXAAcII9/tPVKZhO1lP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-openai-codex-compat@0.0.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":982029},"type":"module","_from":"file:/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.14.tgz","engines":{"node":">=22.19.0"},"scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=4 test/*.test.ts","check":"hk check --all --check","release":"node scripts/release.ts","lint:fix":"oxlint --fix","pack:dry":"npm pack --dry-run --allow-directory=all","test:live:codex":"PI_CODEX_LIVE_TEST=1 node --test --test-concurrency=1 test/codex-host.live.test.ts test/codex-cli.live.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bc65cec-5d4b-4e5b-86a2-fd6389597196"}},"_resolved":"/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.14.tgz","_integrity":"sha512-INymZO4/LhBDsZG/cPMLURSnFdxiDHmwNnOIQDSw9zaLTBlk1qplfOf6iPOToFDfslSkz9AX2DP3oVq+/sHKbA==","repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"_npmVersion":"11.18.0","description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","directories":{},"_nodeVersion":"26.6.0","dependencies":{"node-pty":"1.2.0-beta.15","tree-sitter":"0.25.1","tree-sitter-bash":"0.25.1"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"0.64.0","oxlint":"1.79.0","typebox":"1.3.16","typescript":"7.0.2","@types/node":"22.20.1","@2h2d/ts-config":"0.0.1","oxlint-tsgolint":"7.0.2001","@2h2d/oxlint-config":"0.1.1","@earendil-works/pi-ai":"0.87.0","@earendil-works/pi-tui":"0.87.0","@earendil-works/pi-coding-agent":"0.87.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.87.0 <0.88.0","@earendil-works/pi-tui":">=0.87.0 <0.88.0","@earendil-works/pi-coding-agent":">=0.87.0 <0.88.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-codex-compat_0.0.14_1790095607947_0.8576074418926856","host":"s3://npm-registry-packages-npm-production"}},"0.0.15":{"name":"pi-openai-codex-compat","version":"0.0.15","keywords":["pi-package"],"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","_id":"pi-openai-codex-compat@0.0.15","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"pi":{"extensions":["./extensions/index.ts"]},"bin":{"pi-apply-patch":"bin/pi-apply-patch.ts"},"dist":{"shasum":"058486fc002d77170dab1721feb1be53df391b20","tarball":"https://registry.npmjs.org/pi-openai-codex-compat/-/pi-openai-codex-compat-0.0.15.tgz","fileCount":107,"integrity":"sha512-LkBIUZdRXN9pUNkOotxX1y4KQpSjQuL3retrCl9+KgkOpG9NEZcH0GqnYnO4dfB+aaRPPe5scM+Q14A7TyDDpg==","signatures":[{"sig":"MEUCIQDyEirkZU7zQ3qey2j05o6HSHyFXU6FSkmWHfdUclvZTgIgPp5Lh+vpodrfQiqQ81BdXpVYoDfnBG1yC7T1yQNLA5k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-openai-codex-compat@0.0.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":993364},"type":"module","_from":"file:/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.15.tgz","engines":{"node":">=22.19.0"},"scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=4 test/*.test.ts","check":"hk check --all --check","release":"node scripts/release.ts","lint:fix":"oxlint --fix","pack:dry":"npm pack --dry-run --allow-directory=all","test:live:codex":"PI_CODEX_LIVE_TEST=1 node --test --test-concurrency=1 test/codex-host.live.test.ts test/codex-cli.live.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bc65cec-5d4b-4e5b-86a2-fd6389597196"}},"_resolved":"/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.15.tgz","_integrity":"sha512-LkBIUZdRXN9pUNkOotxX1y4KQpSjQuL3retrCl9+KgkOpG9NEZcH0GqnYnO4dfB+aaRPPe5scM+Q14A7TyDDpg==","repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"_npmVersion":"11.18.0","description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","directories":{},"_nodeVersion":"26.6.0","dependencies":{"node-pty":"1.2.0-beta.15","tree-sitter":"0.25.1","tree-sitter-bash":"0.25.1"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"0.64.0","oxlint":"1.79.0","typebox":"1.3.16","typescript":"7.0.2","@types/node":"22.20.1","@2h2d/ts-config":"0.0.1","oxlint-tsgolint":"7.0.2001","@2h2d/oxlint-config":"0.1.1","@earendil-works/pi-ai":"0.87.0","@earendil-works/pi-tui":"0.87.0","@earendil-works/pi-coding-agent":"0.87.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.87.0 <0.88.0","@earendil-works/pi-tui":">=0.87.0 <0.88.0","@earendil-works/pi-coding-agent":">=0.87.0 <0.88.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-codex-compat_0.0.15_1790167087213_0.6664646970720458","host":"s3://npm-registry-packages-npm-production"}},"0.0.16":{"name":"pi-openai-codex-compat","version":"0.0.16","keywords":["pi-package"],"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","_id":"pi-openai-codex-compat@0.0.16","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"pi":{"extensions":["./extensions/index.ts"]},"bin":{"pi-apply-patch":"bin/pi-apply-patch.ts"},"dist":{"shasum":"873676085c20cec445f950ccffce40ca6e3ceead","tarball":"https://registry.npmjs.org/pi-openai-codex-compat/-/pi-openai-codex-compat-0.0.16.tgz","fileCount":107,"integrity":"sha512-0snOIENeq26yCwQ4bTVkERaM/iMyHGLOojhjLikyVY4JDjBjJqXSGBIzApxL/nmJISPeMif26g3sCzCWhUM2Jw==","signatures":[{"sig":"MEQCIE/vVEvIs08xGCqRtX8DMvtoFEODO42ecDrm2RUyhz7rAiB7hmOV/tKV2Ca1dQrkxEb/7/WNdqtkIm7299ptveVnTA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-openai-codex-compat@0.0.16","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":993853},"type":"module","_from":"file:/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.16.tgz","engines":{"node":">=22.19.0"},"scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=4 test/*.test.ts","check":"hk check --all --check","release":"node scripts/release.ts","lint:fix":"oxlint --fix","pack:dry":"npm pack --dry-run --allow-directory=all","test:live:codex":"PI_CODEX_LIVE_TEST=1 node --test --test-concurrency=1 test/codex-host.live.test.ts test/codex-cli.live.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bc65cec-5d4b-4e5b-86a2-fd6389597196"}},"_resolved":"/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.16.tgz","_integrity":"sha512-0snOIENeq26yCwQ4bTVkERaM/iMyHGLOojhjLikyVY4JDjBjJqXSGBIzApxL/nmJISPeMif26g3sCzCWhUM2Jw==","repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"_npmVersion":"11.18.0","description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","directories":{},"_nodeVersion":"26.6.0","dependencies":{"node-pty":"1.2.0-beta.15","tree-sitter":"0.25.1","tree-sitter-bash":"0.25.1"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"0.64.0","oxlint":"1.79.0","typebox":"1.3.16","typescript":"7.0.2","@types/node":"22.20.1","@2h2d/ts-config":"0.0.1","oxlint-tsgolint":"7.0.2001","@2h2d/oxlint-config":"0.1.1","@earendil-works/pi-ai":"0.87.1","@earendil-works/pi-tui":"0.87.1","@earendil-works/pi-coding-agent":"0.87.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.87.0 <0.88.0","@earendil-works/pi-tui":">=0.87.0 <0.88.0","@earendil-works/pi-coding-agent":">=0.87.0 <0.88.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-codex-compat_0.0.16_1790177382543_0.5434227086172267","host":"s3://npm-registry-packages-npm-production"}},"0.0.17":{"name":"pi-openai-codex-compat","version":"0.0.17","keywords":["pi-package"],"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","_id":"pi-openai-codex-compat@0.0.17","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"pi":{"extensions":["./extensions/index.ts"]},"bin":{"pi-apply-patch":"bin/pi-apply-patch.ts"},"dist":{"shasum":"da7aa744742897a93ac0cbd297798f6bb8e2eb6e","tarball":"https://registry.npmjs.org/pi-openai-codex-compat/-/pi-openai-codex-compat-0.0.17.tgz","fileCount":110,"integrity":"sha512-9TlVfpkvJbDn399a4J3O+Xw7VbRJaPQ+aebHrBGzqGD7lIyctXAsA8cXtQPXObnr9uXgFGgpOo99RXJhawGImw==","signatures":[{"sig":"MEUCIQCz36WsUooY2As1IT2OZG+dG8NyVwznD4vooo39/DXUFgIgUY50ThBZgc/FsbrPEGELRy1zgi9rWArg0KpQK89QvsY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-openai-codex-compat@0.0.17","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1024495},"type":"module","_from":"file:/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.17.tgz","engines":{"node":">=22.19.0"},"scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=4 test/*.test.ts","check":"hk check --all --check","release":"node scripts/release.ts","lint:fix":"oxlint --fix","pack:dry":"npm pack --dry-run --allow-directory=all","test:live:codex":"PI_CODEX_LIVE_TEST=1 node --test --test-concurrency=1 test/codex-host.live.test.ts test/codex-cli.live.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6bc65cec-5d4b-4e5b-86a2-fd6389597196"}},"_resolved":"/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.17.tgz","_integrity":"sha512-9TlVfpkvJbDn399a4J3O+Xw7VbRJaPQ+aebHrBGzqGD7lIyctXAsA8cXtQPXObnr9uXgFGgpOo99RXJhawGImw==","repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"_npmVersion":"11.18.0","description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","directories":{},"_nodeVersion":"26.6.0","dependencies":{"node-pty":"1.2.0-beta.15","tree-sitter":"0.25.1","tree-sitter-bash":"0.25.1"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"0.64.0","oxlint":"1.79.0","typebox":"1.3.16","typescript":"7.0.2","@types/node":"22.20.1","@2h2d/ts-config":"0.0.1","oxlint-tsgolint":"7.0.2001","@2h2d/oxlint-config":"0.1.1","@earendil-works/pi-ai":"0.87.1","@earendil-works/pi-tui":"0.87.1","@earendil-works/pi-coding-agent":"0.87.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.87.0 <0.88.0","@earendil-works/pi-tui":">=0.87.0 <0.88.0","@earendil-works/pi-coding-agent":">=0.87.0 <0.88.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-codex-compat_0.0.17_1790356962330_0.4758239059279752","host":"s3://npm-registry-packages-npm-production"}},"0.0.18":{"name":"pi-openai-codex-compat","version":"0.0.18","keywords":["pi-package"],"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","_id":"pi-openai-codex-compat@0.0.18","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"pi":{"extensions":["./extensions/index.ts"]},"bin":{"pi-apply-patch":"bin/pi-apply-patch.ts"},"dist":{"shasum":"b50487360625c626275e458d7398fbeab4e303c3","tarball":"https://registry.npmjs.org/pi-openai-codex-compat/-/pi-openai-codex-compat-0.0.18.tgz","fileCount":110,"integrity":"sha512-6kIm8PkdkZz4LobcFVqF725bD000zNDNvQE2LOv6AbwERWy5bXrYnyr85fIR69Lp7nmt0nV7JDr/MF10YDJjQw==","signatures":[{"sig":"MEYCIQDHsyZSOztiUPICJmvfsNOl92DKPTfRnkYDay1A7CazigIhALcQbo5kIqgASOlvaGLUvORqkY9lHjgMWdOv466SNf+l","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-openai-codex-compat@0.0.18","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1026239},"type":"module","_from":"file:/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.18.tgz","engines":{"node":">=22.19.0"},"scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=4 test/*.test.ts","check":"hk check --all --check","release":"node scripts/release.ts","lint:fix":"oxlint --fix","pack:dry":"npm pack --dry-run --allow-directory=all","test:live:codex":"PI_CODEX_LIVE_TEST=1 node --test --test-concurrency=1 test/codex-host.live.test.ts test/codex-cli.live.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"},"trustedPublisher":{"id":"github","oidcConfigId":"6bc65cec-5d4b-4e5b-86a2-fd6389597196"}},"_resolved":"/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.18.tgz","_integrity":"sha512-6kIm8PkdkZz4LobcFVqF725bD000zNDNvQE2LOv6AbwERWy5bXrYnyr85fIR69Lp7nmt0nV7JDr/MF10YDJjQw==","repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"_npmVersion":"11.18.0","description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","directories":{},"_nodeVersion":"26.6.0","dependencies":{"node-pty":"1.2.0-beta.15","tree-sitter":"0.25.1","tree-sitter-bash":"0.25.1"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"0.64.0","oxlint":"1.79.0","typebox":"1.3.16","typescript":"7.0.2","@types/node":"22.20.1","@2h2d/ts-config":"0.0.1","oxlint-tsgolint":"7.0.2001","@2h2d/oxlint-config":"0.1.1","@earendil-works/pi-ai":"0.99.1","@earendil-works/pi-tui":"0.99.1","@earendil-works/pi-coding-agent":"0.99.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.99.1 <0.100.0","@earendil-works/pi-tui":">=0.99.1 <0.100.0","@earendil-works/pi-coding-agent":">=0.99.1 <0.100.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-codex-compat_0.0.18_1790757158779_0.9567979790754118","host":"s3://npm-registry-packages-npm-production"}},"0.0.19":{"name":"pi-openai-codex-compat","version":"0.0.19","keywords":["pi-package"],"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","_id":"pi-openai-codex-compat@0.0.19","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"pi":{"extensions":["./extensions/index.ts"]},"bin":{"pi-apply-patch":"bin/pi-apply-patch.ts"},"dist":{"shasum":"3289f11f57eec6cb17f100a46fdf149c2abbfef5","tarball":"https://registry.npmjs.org/pi-openai-codex-compat/-/pi-openai-codex-compat-0.0.19.tgz","fileCount":111,"integrity":"sha512-/vkV+s/jKyJxcuCjD2Z6Prx/XfzDmb+uvcxjJ13RofwwsHV584FPuKqJUhvtRXbmyhsfXyY1VlLP90LS22uEtA==","signatures":[{"sig":"MEUCIDulSbx9jxPbm8R0BbycSRNQJ2MBmw/BiyEEI5DTXSpwAiEAuu2TuyD0koOVmHbKvqgtdsKl54CNn7+SADKJUA7bVEI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-openai-codex-compat@0.0.19","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1033340},"type":"module","_from":"file:/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.19.tgz","engines":{"node":">=22.19.0"},"scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=4 test/*.test.ts","check":"hk check --all --check","release":"node scripts/release.ts","lint:fix":"oxlint --fix","pack:dry":"npm pack --dry-run --allow-directory=all","test:live:codex":"PI_CODEX_LIVE_TEST=1 node --test --test-concurrency=1 test/codex-host.live.test.ts test/codex-cli.live.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"},"trustedPublisher":{"id":"github","oidcConfigId":"6bc65cec-5d4b-4e5b-86a2-fd6389597196"}},"_resolved":"/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.19.tgz","_integrity":"sha512-/vkV+s/jKyJxcuCjD2Z6Prx/XfzDmb+uvcxjJ13RofwwsHV584FPuKqJUhvtRXbmyhsfXyY1VlLP90LS22uEtA==","repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"_npmVersion":"11.18.0","description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","directories":{},"_nodeVersion":"26.6.0","dependencies":{"node-pty":"1.2.0-beta.15","tree-sitter":"0.25.1","tree-sitter-bash":"0.25.1"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"0.64.0","oxlint":"1.79.0","typebox":"1.3.16","typescript":"7.0.2","@types/node":"22.20.1","@2h2d/ts-config":"0.0.1","oxlint-tsgolint":"7.0.2001","@2h2d/oxlint-config":"0.1.1","@earendil-works/pi-ai":"0.99.1","@earendil-works/pi-tui":"0.99.1","@earendil-works/pi-coding-agent":"0.99.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.99.1 <0.100.0","@earendil-works/pi-tui":">=0.99.1 <0.100.0","@earendil-works/pi-coding-agent":">=0.99.1 <0.100.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-codex-compat_0.0.19_1790826243029_0.9047302487652742","host":"s3://npm-registry-packages-npm-production"}},"0.0.20":{"name":"pi-openai-codex-compat","version":"0.0.20","keywords":["pi-package"],"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","_id":"pi-openai-codex-compat@0.0.20","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"pi":{"extensions":["./extensions/index.ts"]},"bin":{"pi-apply-patch":"bin/pi-apply-patch.ts"},"dist":{"shasum":"f72602da7ee3bc4b38b112cec415dfda27e8c2c0","tarball":"https://registry.npmjs.org/pi-openai-codex-compat/-/pi-openai-codex-compat-0.0.20.tgz","fileCount":111,"integrity":"sha512-Vh4dNTMPsLP0BsYpjjUmsZ8TuQioI6fyPT/Fp6JlHb8WPBbynvvNudF69h5RwuAq9iogHZtU6zqN/YTytvhqLA==","signatures":[{"sig":"MEQCIFi+udCp1FE3rnipRTCibKbwhFvohqtXtr/2yZ1Q3vFtAiBAOhjs9n+BhXIvHhUE3wGlC7qhJouwr5f4NDYRf8C7Lg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-openai-codex-compat@0.0.20","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1034470},"type":"module","_from":"file:/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.20.tgz","engines":{"node":">=22.19.0"},"scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=4 test/*.test.ts","check":"hk check --all --check","release":"node scripts/release.ts","lint:fix":"oxlint --fix","pack:dry":"npm pack --dry-run --allow-directory=all","test:live:codex":"PI_CODEX_LIVE_TEST=1 node --test --test-concurrency=1 test/codex-host.live.test.ts test/codex-cli.live.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"},"trustedPublisher":{"id":"github","oidcConfigId":"6bc65cec-5d4b-4e5b-86a2-fd6389597196"}},"_resolved":"/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.20.tgz","_integrity":"sha512-Vh4dNTMPsLP0BsYpjjUmsZ8TuQioI6fyPT/Fp6JlHb8WPBbynvvNudF69h5RwuAq9iogHZtU6zqN/YTytvhqLA==","repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"_npmVersion":"11.18.0","description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","directories":{},"_nodeVersion":"26.6.0","dependencies":{"node-pty":"1.2.0-beta.15","tree-sitter":"0.25.1","tree-sitter-bash":"0.25.1"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"0.64.0","oxlint":"1.79.0","typebox":"1.3.16","typescript":"7.0.2","@types/node":"22.20.1","@2h2d/ts-config":"0.0.1","oxlint-tsgolint":"7.0.2001","@2h2d/oxlint-config":"0.1.1","@earendil-works/pi-ai":"1.0.0","@earendil-works/pi-tui":"1.0.0","@earendil-works/pi-coding-agent":"1.0.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=1.0.0 <1.1.0","@earendil-works/pi-tui":">=1.0.0 <1.1.0","@earendil-works/pi-coding-agent":">=1.0.0 <1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-codex-compat_0.0.20_1790936625184_0.2391139852986206","host":"s3://npm-registry-packages-npm-production"}},"0.0.21":{"pi":{"extensions":["./extensions/index.ts"]},"_id":"pi-openai-codex-compat@0.0.21","bin":{"pi-apply-patch":"bin/pi-apply-patch.ts"},"bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"dist":{"shasum":"613b9ae876270c4839fc4d1fcda107a950604ebb","tarball":"https://registry.npmjs.org/pi-openai-codex-compat/-/pi-openai-codex-compat-0.0.21.tgz","integrity":"sha512-GSmQqO8GAZoLgZVrsJdtjkABlABnshCtHpTlb/S49zu10yyGt/cnr+7K30Q/iYDM1oGKr0XPdePJvSif1KkBJQ==","fileCount":111,"unpackedSize":1035010,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-openai-codex-compat@0.0.21","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIB+Uiq8puxWpDkWLrzgeJK+C6VwAqOpZmAdrkcHk6rlXAiAgQFFYhvt6vs1yHGTV73T/p7odEwyyVoQ4mNMzlPNB4A=="}]},"name":"pi-openai-codex-compat","type":"module","_from":"file:/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.21.tgz","author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"engines":{"node":">=22.19.0"},"license":"MIT","scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=4 test/*.test.ts","check":"hk check --all --check","release":"node scripts/release.ts","lint:fix":"oxlint --fix","pack:dry":"npm pack --dry-run --allow-directory=all","test:live:codex":"PI_CODEX_LIVE_TEST=1 node --test --test-concurrency=1 test/codex-host.live.test.ts test/codex-cli.live.test.ts test/command-render-cli.test.ts"},"version":"0.0.21","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"6bc65cec-5d4b-4e5b-86a2-fd6389597196"},"approver":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}},"homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","keywords":["pi-package"],"_resolved":"/home/runner/work/pi-openai-codex-compat/pi-openai-codex-compat/npm-package/pi-openai-codex-compat-0.0.21.tgz","_integrity":"sha512-GSmQqO8GAZoLgZVrsJdtjkABlABnshCtHpTlb/S49zu10yyGt/cnr+7K30Q/iYDM1oGKr0XPdePJvSif1KkBJQ==","repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"_npmVersion":"11.18.0","description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","directories":{},"maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"_nodeVersion":"26.6.0","dependencies":{"node-pty":"1.2.0-beta.15","tree-sitter":"0.25.1","tree-sitter-bash":"0.25.1"},"devDependencies":{"oxfmt":"0.64.0","oxlint":"1.79.0","typebox":"1.3.16","typescript":"7.0.2","@types/node":"22.20.1","@2h2d/ts-config":"0.0.1","oxlint-tsgolint":"7.0.2001","@2h2d/oxlint-config":"0.1.1","@earendil-works/pi-ai":"1.0.0","@earendil-works/pi-tui":"1.0.0","@earendil-works/pi-coding-agent":"1.0.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=1.0.0 <1.1.0","@earendil-works/pi-tui":">=1.0.0 <1.1.0","@earendil-works/pi-coding-agent":">=1.0.0 <1.1.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-openai-codex-compat_0.0.21_1790939967755_0.980202842330357"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-03T16:52:18.281Z","modified":"2026-10-02T11:19:28.141Z","0.0.1-alpha.0":"2026-08-03T16:52:18.684Z","0.0.1":"2026-08-03T17:02:17.034Z","0.0.2":"2026-08-03T17:36:44.287Z","0.0.3":"2026-08-04T14:10:06.475Z","0.0.4":"2026-08-07T15:48:20.730Z","0.0.5":"2026-08-07T15:58:11.441Z","0.0.6":"2026-08-10T10:56:30.679Z","0.0.7-alpha.0":"2026-08-10T15:32:41.207Z","0.0.7":"2026-08-16T14:12:42.114Z","0.0.8":"2026-08-16T15:45:49.219Z","0.0.9":"2026-08-16T17:28:43.410Z","0.0.10-alpha.1":"2026-08-24T09:16:08.495Z","0.0.10-alpha.2":"2026-08-24T16:32:51.866Z","0.0.10-alpha.3":"2026-08-24T17:56:47.086Z","0.0.10-alpha.4":"2026-08-26T14:55:30.671Z","0.0.10-alpha.5":"2026-08-27T08:39:46.936Z","0.0.10-alpha.6":"2026-08-27T09:29:53.418Z","0.0.10-alpha.7":"2026-09-07T06:34:40.989Z","0.0.10-alpha.8":"2026-09-09T12:40:09.469Z","0.0.10":"2026-09-20T08:26:53.194Z","0.0.11":"2026-09-20T09:53:55.145Z","0.0.12":"2026-09-20T21:26:02.933Z","0.0.13":"2026-09-21T03:42:15.080Z","0.0.14":"2026-09-22T16:46:48.048Z","0.0.15":"2026-09-23T12:38:07.299Z","0.0.16":"2026-09-23T15:29:42.641Z","0.0.17":"2026-09-25T17:22:42.426Z","0.0.18":"2026-09-30T08:32:38.900Z","0.0.19":"2026-10-01T03:44:03.147Z","0.0.20":"2026-10-02T10:23:45.290Z","0.0.21":"2026-10-02T11:19:27.856Z"},"bugs":{"url":"https://github.com/2h2d-co/pi-openai-codex-compat/issues"},"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","homepage":"https://github.com/2h2d-co/pi-openai-codex-compat#readme","keywords":["pi-package"],"repository":{"url":"git+https://github.com/2h2d-co/pi-openai-codex-compat.git","type":"git"},"description":"OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"readme":"# pi-openai-codex-compat\n\nOpenAI Codex compatibility for [Pi](https://github.com/earendil-works/pi-mono), combining priority fast mode, native Codex compaction, and Codex-optimized model features in one Pi package.\n\n## Features\n\n- **Request-level fast mode**: keeps the canonical `openai-codex` provider id and models selected while adding `service_tier: \"priority\"` at the request boundary.\n- **Native compaction**: uses Codex `remote_compaction_v2` for `/compact`, Pi threshold compaction, context-overflow recovery, and an optional percentage threshold.\n- **Codex `apply_patch`**: provides an optional patch tool with the Codex grammar, parser, fuzzy matcher, overwrite semantics, filesystem behavior, model-facing result format, structured history, and diff-oriented TUI rendering. Pi sends it as an OpenAI custom grammar tool when the model supports that protocol and as a normal function tool otherwise.\n- **Codex command tools**: replaces an active Pi `bash` tool with either the persistent `exec_command` + `write_stdin` pair or the one-shot `shell_command` tool. Unified exec is the default and supports optional PTY sessions through `node-pty`.\n- **Opt-in patch diagnostics**: records failed `apply_patch` requests with pre-execution text snapshots or binary metadata for every instruction, outcomes, and Pi/Codex identifiers.\n- **Standalone image generation**: exposes Pi's dotted `image_gen.imagegen` tool as a native Responses namespace and executes generation or edits through the Codex Images endpoints.\n- **Standalone web search**: exposes Pi's dotted `web.run` tool as a native Responses namespace and executes search and browsing through Codex `alpha/search`.\n- **Dedicated Codex tool UI**: renders command tools, `apply_patch`, `image_gen.imagegen`, and `web.run` on a shared configurable surface with compact summaries and `Ctrl+O` expansion.\n- **Hosted web-search fallback**: injects native `web_search` only when `web.run` is inactive, with cached, indexed, or live modes.\n- **Native request controls**: configures Responses API text verbosity and reasoning summaries.\n- **Draft settings pane**: `/codex-settings` stages edits before applying them. Apply to session stores them with the session without changing configuration files. Ctrl+S saves and applies them. Escape discards only unapplied drafts.\n- **Session-aware footer**: shows the current Pi session ID on the first line and appends non-default Codex request modes to the model side of Pi's normal second line.\n\nPi provides the Codex OAuth flow and model catalog. At session start, this package overrides the built-in `openai-codex` runtime under the same provider id so ordinary responses and remote compaction share one transport, parser, native-history store, and sticky WebSocket session.\n\n## Requirements\n\n- Node.js 22.19 or newer\n- Pi `>=1.0.0 <1.1.0`\n- An OpenAI Codex login in Pi\n\nRestart Pi after upgrading its runtime. `/reload` reloads extensions but cannot\nupgrade the running Pi process. At load time, the extension requires the host's\ntranscript APIs, the Pi 0.99 APIs `SessionManager.getEntryCount()` and\n`ExtensionAPI.getSettings()`, and a reported Pi version of at least 1.0.0. It\nrefuses to load otherwise. The load check does not reject newer releases: the\n`<1.1.0` bound is the package's peer range, which Pi does not enforce when it\ninstalls packages. `PI_PACKAGE_DIR` can point an older executable at\nnewer package metadata, so the reported version alone does not establish\ncompatibility. The API checks detect missing capabilities from before Pi 0.99.\nThey do not distinguish a Pi 0.99 executable from Pi 1.0.0 when its metadata\npoints at the newer installation.\n\nAuthenticate through Pi if needed:\n\n```text\n/login openai-codex\n```\n\n**Pi's virtual models are not supported.** The package's features check the selected model, not the model that answers a request. Pi's experimental virtual models, registered with `pi.registerVirtualModel()`, stay selected while Pi routes each request to a physical model. With a virtual model selected, the package deactivates its tools, omits fast mode and the other request controls, and leaves compaction and output-limit continuation to Pi. This holds even for a virtual model listed under `openai-codex` or one that routes every request to an `openai-codex` model. Routed `openai-codex` requests still use the package's transport. Select an `openai-codex` model directly to use the package's features.\n\n## Compatibility baseline and differences\n\nThe compatibility baseline is official Codex CLI `0.149.1`, released August 24, 2026, at commit `ff29a44391deccde0aba0f8390337d7f3c319ea4`. It retains the `0.147.0` Responses Lite contract that groups direct function and custom declarations into one canonical `functions` namespace for namespace-capable providers. The `0.148.0`–`0.149.0` review adopted typed misalignment-policy failures while recording official unbounded connection recovery as an intentional bounded-transport deviation. The `0.149.1` review retained this package's checkpoint shape rather than exposing official Codex's new default-disabled retained-image budget. The [official release compatibility log](OFFICIAL_CODEX_CLI_RELEASES.md) is the canonical release-by-release record of protocol and `apply_patch` alignment, intentional deviations, and excluded runtimes. This section is the package's user-facing compatibility contract. See the [Responses Lite compatibility report](RESPONSES_LITE_COMPATIBILITY.md) and [Codex caching and transport comparison](CODEX_CACHE_RESEARCH.md) for detailed request-path findings and live cache trajectories.\n\n### Configurable defaults that differ from Codex\n\n| Area                                          | This package by default                                                                                                                 | Official Codex                                                                                                                                | Configuration                                                                                                                                                               |\n| --------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Generated-image detail sent back to the model | Sends image tool-result content with `input_image.detail: \"auto\"`. On GPT-5.6, `auto` uses original-size image accounting.              | Uses `high`.                                                                                                                                  | `imageDetail`: `auto`, `low`, `high`, or `original`.                                                                                                                        |\n| Image-generation tool                         | Enabled whenever an `openai-codex` model is selected. Backend capability and account failures surface when the tool executes.           | Stable and enabled by default, but additionally gated by plan, model, provider, authentication, image-generation, and namespace capabilities. | `imageGeneration`: boolean.                                                                                                                                                 |\n| Standalone `web.run`                          | Disabled by default; when enabled, preferred over hosted `web_search` and sent with the complete reserved schema and description.       | Enabled by default for `gpt-5.6-sol` through Responses Lite; otherwise subject to standalone-search feature and runtime gates.                | `webRun`: boolean.                                                                                                                                                          |\n| Hosted web search                             | Disabled by default; when enabled, injected only for ordinary Responses while `web.run` is inactive. Responses Lite omits hosted tools. | Omitted for `gpt-5.6-sol` while standalone `web.run` is available; otherwise defaults to cached mode when hosted search is supported.         | `webRun` and `webSearch`: `disabled`, `cached`, `indexed`, or `live`.                                                                                                       |\n| Coding mutation tools                         | Enables `apply_patch` and suppresses Pi's active `edit` and `write` tools.                                                              | Chooses its tool surface from model metadata and runtime capabilities; there are no Pi `edit` or `write` tools to suppress.                   | `applyPatch`: boolean.                                                                                                                                                      |\n| Command tools                                 | Replaces an active Pi `bash` tool with `exec_command` and `write_stdin`.                                                                | Chooses unified exec or legacy shell from model metadata, platform, execution environment, and runtime capabilities.                          | `shellTool`: `unified_exec` or `shell_command`.                                                                                                                             |\n| `apply_patch` debug output                    | Disabled; collapsed results show the normal visual summary and instruction rows.                                                        | Not applicable to Pi's tool-result renderer.                                                                                                  | `applyPatchDebug`: boolean.                                                                                                                                                 |\n| `apply_patch` diagnostics capture             | Disabled; no separate request or filesystem snapshot artifacts are retained.                                                            | Codex owns its rollout diagnostics rather than writing this package's artifact format.                                                        | `applyPatchDiagnostics`: boolean.                                                                                                                                           |\n| Codex tool background                         | Uses a subtle theme-derived surface for extension-owned Codex tools.                                                                    | Uses Codex's own TUI activity cells rather than Pi tool rows.                                                                                 | `toolBackground`: `subtle`, `status`, or `none`.                                                                                                                            |\n| Auto-compaction trigger                       | Relies on Pi's reserve-token threshold unless a percentage is configured.                                                               | Tracks Codex's model/token-budget state before and between sampling steps.                                                                    | `autoCompactAtPercent`: percentage or unset. Mid-response percentage boundaries use Pi's bounded compact-and-continue lifecycle, so Pi auto-compaction must remain enabled. |\n| Fast mode                                     | Uses the normal tier.                                                                                                                   | Uses the configured Codex service tier.                                                                                                       | `fastMode`: boolean; `true` requests the priority tier.                                                                                                                     |\n| Responses Lite                                | Disabled; supported models use ordinary Responses.                                                                                      | Enabled according to Codex model metadata.                                                                                                    | `responsesLite`: boolean; `true` enables Responses Lite.                                                                                                                    |\n| Text and reasoning request controls           | Sends low text verbosity and automatic reasoning summaries, and omits `reasoning.mode`, which the Codex endpoint rejects.               | Resolves these controls through Codex configuration, model metadata, and turn state.                                                          | `textVerbosity` and `reasoningSummary`.                                                                                                                                     |\n\n`web.run` is a reserved GPT-5.6 tool name. Its declaration therefore reproduces the complete current Codex post-normalization `SearchCommands` schema and official tool description instead of using Pi's normal compact tool schema. This intentionally omits generated annotations such as `format` and `minimum` that Codex removes before sending the declaration to Responses.\n\n### Non-configurable implementation differences\n\n| Area                        | Difference                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |\n| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| Session storage             | Pi remains the canonical session owner. Opaque Codex compaction checkpoints are stored in Pi `compaction` entries, otherwise lossy Responses output is stored in sparse custom native-response entries, and each change to the tools a turn request sends is stored in a custom request-tools entry. Official Codex owns a rollout/thread store directly.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |\n| Branching                   | Checkpoints and native response overrides follow Pi's active session branch. Official Codex uses its own thread, turn, rollback, fork, and context-window lineage.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |\n| Model switching             | This package rejects model switches while the active Pi branch contains a native Codex checkpoint because the checkpoint is model-specific.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |\n| System instructions         | Send the leading Pi system message as the prompt, as Pi AI's Codex adapter does: Responses Lite models prepend it as developer input after `additional_tools`; other models send it through Responses `instructions`. Later Pi system messages (`/reload`, section changes) travel inline as developer items on models that accept mid-conversation system messages and collapse into the leading prompt otherwise. A forced prompt replaces the leading message. Compaction snapshots and resumed sessions lead with Pi's replayed prompt without rewriting old checkpoints.                                                                                                                                                                                                                                                                                                                    |\n| Dynamic tool declarations   | Send the complete current tool set, replayed from Pi's `toolsAdded` and `toolsRemoved` system messages, in the top-level `tools` field on every request, as the official Codex client does. Tool declarations never travel inside `input`: inline `additional_tools` items and synthetic tool-search pairs made the Codex backend unreliable about which tools exist. A mid-session tool change costs one prompt-cache miss, and native checkpoints need no declaration rebase.                                                                                                                                                                                                                                                                                                                                                                                                                  |\n| Turn metadata               | Requests send a persisted installation id plus Pi-derived session, thread, context-window, turn, source, sandbox, request-kind, and nested compaction-operation metadata in `client_metadata` and compatible headers. The in-memory context-window number advances after successful compaction. One turn id is reused throughout a Pi agent run, while prewarm has its own id. First-party requests also carry Codex's model-and-tier routing hint. The provider captures the server-issued `x-codex-turn-state` once per agent run, replays it on WebSocket retries, SSE requests, and WebSocket-to-SSE fallback, and records all identity values in transport diagnostics. Pi does not reconstruct prior window number after extension reload/session resume or reproduce workspace Git/parent/subagent/Code Mode metadata. Each marked Pi tree branch receives its own persisted thread UUID. |\n| Cache preparation           | Before the first cache-enabled WebSocket turn, the package prewarms only the stable instruction/tool prefix: ordinary Responses uses empty `input`, while Responses Lite uses `additional_tools` plus the developer instructions. The first generated request then contributes only dynamic conversation input to the continuation. No explicit prompt-cache breakpoints are added.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |\n| Mid-turn compaction         | Provider-boundary percentage compaction preserves a successful `end_turn:false` prefix as its own Pi assistant message, installs a checkpoint, and continues without synthetic model input. Pi threshold compaction normally runs after the agent response; after Codex output-token truncation, the extension queues a hidden continuation so threshold compaction completes before sampling resumes. Official Codex owns this sampling and compaction loop directly.                                                                                                                                                                                                                                                                                                                                                                                                                           |\n| Provider-owned follow-up    | Completed responses with `end_turn: false` continue immediately from completed native output without synthetic user input. Retryable `response.failed` and all `response.incomplete` events are resampled with the official five-retry stream budget, preserving completed output and cumulative usage while excluding unfinished attempt content. A `max_output_tokens` response that exhausts this budget still becomes Pi `stopReason: \"length\"` and uses the extension's unbounded host-level continuation recovery.                                                                                                                                                                                                                                                                                                                                                                         |\n| Transport recovery          | WebSocket failures before model-visible output receive five fresh-connection retries before sticky SSE fallback; SSE transport failures receive five retries. Official Codex `0.149.1` separately retries sampling connection-establishment failures indefinitely with delays capped at 60 seconds. The package remains bounded because Fetch does not expose Reqwest's narrower connection-error category, and a phase-only approximation could indefinitely repeat requests that reached the server.                                                                                                                                                                                                                                                                                                                                                                                           |\n| Compaction lifecycle events | Pre-turn percentage compaction writes through Pi's mutable session manager and cannot emit Pi's internal `session_compact` event through the public extension API. Mid-response percentage boundaries and manual, threshold, or overflow compactions initiated by Pi emit the normal lifecycle.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |\n| Header hooks                | An internal percentage-compaction request reuses the already transformed provider headers. It cannot independently rerun Pi's `before_provider_headers` hook.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |\n| Native retained context     | Deliberately differs from current Codex. The package retains recent user messages under a text-only 64k budget before the opaque compaction item, and keeps every developer and system message in place outside that budget so prompt updates are never compacted away. Current Codex applies a second installed-history filter that drops developer/system wrappers and non-real-user messages, can retain eligible structured agent commentary, and trims oversized function outputs before compaction. Codex `0.149.1` also adds a default-disabled mode that charges retained images to the budget and keeps each image with adjacent harness labels as an atomic boundary unit. Pi keeps its existing checkpoint shape by design.                                                                                                                                                           |\n| Tool namespaces             | Responses Lite groups Pi's ordinary function/custom declarations into upstream's canonical `functions` namespace and maps that default namespace back to bare Pi names. Pi registers dotted names such as `web.run` as exact flat identifiers, so the provider converts only the fixed extension-owned allowlist into non-default Responses namespace/member identities and rejects unknown or ambiguously flat namespaced calls.                                                                                                                                                                                                                                                                                                                                                                                                                                                                |\n| Capability gating           | Tool activation is based on the selected `openai-codex` provider plus package settings. It does not reproduce every official model-metadata, plan, feature-stage, executor, mode, or account gate.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |\n| Sandbox and approvals       | Pi extensions run with full process permissions. Command tools, `apply_patch`, local image reads, generated-image writes, and sibling Codex endpoints do not use Codex's sandbox, permission-profile, environment, or approval lifecycle.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |\n| Image tool instructions     | The package retains the server-reserved image-generation schema while replacing Rust-specific path annotations and Codex Code Mode instructions with model-facing descriptions, a prompt snippet, and system-prompt guidelines. Image-count bounds and selector exclusivity are enforced before execution.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |\n| Image artifact hint         | When image saving succeeds, this package always returns the path hint, says “the generated image,” and has no 1,024-byte cutoff. Official Codex says “a generated image” and omits the hint when it exceeds 1,024 UTF-8 bytes.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |\n| Image artifacts             | Generated files use Pi's agent directory and the Pi session/tool-call IDs. Official Codex uses its own artifact/output-directory lifecycle.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |\n| Web references              | `web.run` structured results are retained branch-locally in Pi tool-result details rather than Codex extension events, and hosted native items are preserved for provider replay. Reference IDs are resolved remotely by `alpha/search`, as in Codex. Hosted citation annotations remain a separate unimplemented path.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |\n| UI                          | Pi renders its own conversation, footer, settings pane, branches, and compaction lifecycle. Extension-owned Codex tools have dedicated Pi renderers, but do not reproduce Codex app-server `WebSearchItem` or image-generation lifecycle notifications.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |\n\nNested compaction metadata uses the official Responses Compaction v2 implementation and memento\nstrategy. Manual compaction is user-requested and standalone; threshold and provider-boundary\ncompaction are automatic context-limit operations in the pre-turn phase; overflow recovery is the\ncorresponding mid-turn operation.\n\nWhen a finalized user prompt creates a new `/tree` branch, the extension inserts a hidden,\ncontext-free custom marker as that prompt's parent. Navigation alone writes nothing. The marker is\nhidden by Pi's default, no-tools, and user-only tree filters and appears only in the all-entries\nfilter. Root `session_id` and `prompt_cache_key` remain stable, while the branch gets a UUID\n`thread_id`, `forked_from_thread_id`, and thread-scoped window number. Switching threads closes the\nold WebSocket and discards its incompatible `previous_response_id` baseline; the new full-history\nrequest remains eligible to reuse the common backend-cached prefix under the unchanged cache key.\n\n### Tool and runtime coverage\n\nThe package implements the Codex-specific pieces that fit a provider compatibility extension:\n\n- native Responses transport and history;\n- remote compaction v2;\n- `exec_command`, `write_stdin`, and `shell_command`;\n- `apply_patch`;\n- hosted `web_search`;\n- `web.run`;\n- `image_gen.imagegen`;\n- namespaced tool serialization;\n- text verbosity, reasoning summaries/mode, and priority service tier.\n\nThe following official Codex facilities are not exact equivalents in this package:\n\n| Official Codex facility                                                 | Pi/package behavior                                                                                                                                           |\n| ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `view_image`                                                            | Pi `read` already accepts images; no canonical `view_image` alias is registered.                                                                              |\n| `update_plan`, `request_user_input`, permissions, and environment tools | Not implemented by this package.                                                                                                                              |\n| `send_user_message_async`                                               | Not implemented; Pi owns visible assistant output and user-message history, while this package does not own Codex's asynchronous message-injection lifecycle. |\n| Context-window and clock tools                                          | Not implemented. Compaction remains host/provider managed rather than model managed.                                                                          |\n| MCP resources and dynamic MCP tools                                     | Pi does not provide this package with Codex's MCP runtime.                                                                                                    |\n| Plugin/connector installation                                           | Not implemented; package installation remains an explicit Pi/user operation.                                                                                  |\n| Searchable `tool_search` catalog                                        | This package declares every tool at the top level and does not implement Codex's searchable deferred-tool catalog and ranking runtime.                        |\n| Multi-agent V1/V2 coordination                                          | Out of scope; no Codex agent tree, mailbox, task-path, or fork-depth runtime is implemented.                                                                  |\n| JavaScript Code Mode and yielded cells                                  | Out of scope; no V8 isolate, nested tool namespace, cell storage, or `wait` lifecycle is implemented.                                                         |\n| Goals, memories, and remote skill-resource tools                        | Not implemented; Pi's sessions, files, and native skills remain separate systems.                                                                             |\n| Remote/deferred execution environments                                  | Not implemented.                                                                                                                                              |\n\nEach tool declares Pi tool annotations, which permission extensions can use to decide which calls to confirm:\n\n| Tool                                           | Read-only | Destructive | Open world |\n| ---------------------------------------------- | --------- | ----------- | ---------- |\n| `exec_command`, `write_stdin`, `shell_command` | No        | Yes         | Yes        |\n| `apply_patch`                                  | No        | Yes         | No         |\n| `image_gen.imagegen`                           | No        | No          | Yes        |\n| `web.run`                                      | Yes       | n/a         | Yes        |\n\nNone of the tools is idempotent. Pi does not verify annotations.\n\nThe provider passes every event of a turn request, over WebSocket and SSE, to Pi's `provider_stream_event` hook as the server sent it. Forwarding happens before the transport drops WebSocket `response.metadata` events, renames `response.done` to `response.completed`, or turns an `error` event into a failed turn. Prewarm and remote compaction requests are not forwarded. Pi reports a failing hook handler and continues the turn. When an SDK caller passes its own `onProviderStreamEvent` callback and it throws, the turn ends with an error without a WebSocket retry or the SSE fallback.\n\nSee [`OFFICIAL_CODEX_CLI_TOOL_CATALOG.md`](OFFICIAL_CODEX_CLI_TOOL_CATALOG.md) for the complete researched Codex tool inventory, and [`CUSTOM_CODEX_PROVIDER_WEB_REFERENCES.md`](CUSTOM_CODEX_PROVIDER_WEB_REFERENCES.md) for the unimplemented citation/reference design.\n\n## Install\n\nFrom npm after a release is published:\n\n```bash\npi install npm:pi-openai-codex-compat\n```\n\nFrom a local checkout:\n\n```bash\npi install .\n```\n\nFor a temporary development run:\n\n```bash\npi --no-extensions -e .\n```\n\n## Fast mode\n\nKeep using an `openai-codex` model and enable **Fast mode** in `/codex-settings`. The extension adds `service_tier: \"priority\"` to ordinary and native-compaction requests without introducing another provider id or changing the selected model.\n\nFast mode applies to whichever built-in `openai-codex` model is selected. Priority-tier costs are reflected in Pi's usage totals, including when Codex echoes `service_tier: \"default\"` in its response.\n\n## Configuration\n\nCreate a global configuration file at:\n\n```text\n~/.pi/agent/openai-codex-compat.json\n```\n\nThe extension also creates `openai-codex-compat-installation-id` in the active Pi agent directory. It contains the stable UUID used for official Codex installation metadata and is reused across sessions.\n\nA trusted project can override it at:\n\n```text\n<project>/.pi/openai-codex-compat.json\n```\n\nEach session inherits the effective file-backed settings. `/codex-settings`\nuses the same interaction contract as `/anthropic-settings`:\n\n- **Enter** changes the selected value or opens its editor. It never implicitly saves.\n- **Space** activates a result or inserts a space when search has focus.\n- **Tab / Shift+Tab** move between search, results, and action controls.\n- **F1** opens scrollable details, full errors, and the exact save target.\n- Edits remain drafts until explicitly applied or saved.\n- **Apply to session** applies drafts without writing configuration files and stays open.\n- **Ctrl+S** saves and applies changes without closing.\n- **Save and close** saves and applies changes, then closes on success.\n- **Escape** cancels a field editor or discards unapplied drafts and closes the main menu.\n  It does not undo settings already applied to the session.\n\nSearch matches labels, configuration keys, and descriptions. The percentage\neditor supports presets and custom fractional values. **Use inherited value**\nremoves an override. This differs from **Pi default**, which explicitly disables\nan inherited percentage trigger. Rows show configuration sources, environment\nlocks, and model applicability. Pi's remapped selection and cancel keys are respected.\n\nThe global file is the normal save target. An existing trusted project override\nis the target for that project. The target stays fixed while the menu is open.\nSaving changes only edited overrides, preserves unknown keys and inherited values,\nand preserves non-conflicting external edits. Conflicting edits are rejected for review.\nOpening or closing without changes does not create a configuration file.\nReopening shows active session values, not freshly read file values. `*` marks\nan unapplied draft. `~` marks an active session override or a value that differs\nfrom the saved configuration. Details shows the saved value when it differs.\nCtrl+S also persists changes previously applied only to the session.\nSession settings are stored as extension state entries in the Pi session,\noutside model context. They survive menu closure, tree navigation, extension\nreload, process restart, and switching away and back. Resuming the same session\nrestores its settings before provider operations. A new session, fork, or clone\nhas a separate identity and starts from configuration files.\nPi's `--no-session` mode cannot be resumed after exit. Pi also defers creating a\nnew session file until its first assistant message.\nEnvironment-controlled fields remain locked and take precedence over restored\nsession preferences. Their values are not copied into session settings.\n\nApplying and saving wait for Pi to become idle. Collect pending output with `write_stdin` or\nstop running command sessions through `/ps` before applying or saving a command-tool switch.\nBrowsing settings and discarding drafts\nnever terminate those sessions. Escape cancels a pending operation without discarding\nthe draft. Failures leave the menu open. If a save reaches disk but cannot\nbe applied to the session, the menu reports that distinction and Ctrl+S retries\napplication. Cooperating writers use a `.settings-lock` file. An interrupted\nwriter can leave a lock that requires review; locks are not automatically\ndeleted. External editors do not participate in that lock.\nSession overrides retain their original conflict checks across menu reopenings.\nConflicting external edits remain protected after reload or restart.\n\nThe effective settings are printed once when a TUI session starts. The footer shows the current Pi session ID alongside the working directory and optional session name. It shows `fast` only when enabled, and shows text verbosity or reasoning summary only when they differ from their defaults.\n\nExample:\n\n```json\n{\n  \"fastMode\": true,\n  \"responsesLite\": true,\n  \"toolBackground\": \"subtle\",\n  \"shellTool\": \"unified_exec\",\n  \"applyPatch\": true,\n  \"applyPatchDebug\": false,\n  \"applyPatchDiagnostics\": false,\n  \"imageGeneration\": true,\n  \"imageDetail\": \"auto\",\n  \"webRun\": false,\n  \"autoCompactAtPercent\": 90,\n  \"webSearch\": \"disabled\",\n  \"textVerbosity\": \"low\",\n  \"reasoningSummary\": \"auto\"\n}\n```\n\nDefaults:\n\n| Setting                 | Values                                               | Default        | Behavior                                                                                                                                                                                                                                  |\n| ----------------------- | ---------------------------------------------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `fastMode`              | boolean                                              | `false`        | Adds `service_tier: \"priority\"` to requests while retaining the current `openai-codex` provider and model.                                                                                                                                |\n| `responsesLite`         | boolean                                              | `false`        | Uses Codex's Responses Lite input envelope on supported models when enabled. By default, those models use ordinary Responses instructions and tools.                                                                                      |\n| `toolBackground`        | `subtle`, `status`, `none`                           | `subtle`       | Controls the shared self-rendered background for command tools, `apply_patch`, `image_gen.imagegen`, and `web.run`. `status` uses Pi's pending/success/error backgrounds; `none` keeps the custom layout transparent.                     |\n| `shellTool`             | `unified_exec`, `shell_command`                      | `unified_exec` | Selects the command surface on `openai-codex` models. The selected Codex command surface replaces Pi `bash` only when `bash` was active.                                                                                                  |\n| `applyPatch`            | boolean                                              | `true`         | On selected `openai-codex` models, uses the extension's `apply_patch` tool instead of Pi's active `edit` and `write` tools. Other providers always use their normal Pi tool set.                                                          |\n| `applyPatchDebug`       | boolean                                              | `false`        | Shows the exact model-facing tool result while a completed `apply_patch` result is collapsed. Expanded results continue to show the normal visual summary and complete diffs.                                                             |\n| `applyPatchDiagnostics` | boolean                                              | `false`        | Persists failed patch requests with pre-execution text snapshots or binary metadata for every instruction, outcomes, and trace identifiers. See [`apply_patch`](#apply_patch) for storage and sensitivity details.                        |\n| `imageGeneration`       | boolean                                              | `true`         | Enables the extension-owned `image_gen.imagegen` tool on selected `openai-codex` models.                                                                                                                                                  |\n| `imageDetail`           | `auto`, `low`, `high`, `original`                    | `auto`         | Sets `input_image.detail` when an image tool result is sent back to the model. It does not change `gpt-image-2` generation quality.                                                                                                       |\n| `webRun`                | boolean                                              | `false`        | Enables the extension-owned `web.run` tool on selected `openai-codex` models. When active, it replaces hosted `web_search` in the Responses tool list.                                                                                    |\n| `autoCompactAtPercent`  | number greater than `0` and at most `100`, or `null` | unset          | Adds provider-boundary compaction independently of Pi's normal reserve-token threshold. Mid-response boundaries require Pi auto-compaction. A project value of `null` disables a global percentage threshold.                             |\n| `webSearch`             | `disabled`, `cached`, `indexed`, `live`              | `disabled`     | Controls hosted search and standalone-search external access. `disabled` removes hosted search but leaves an independently enabled `web.run` in cached-only mode; `indexed` prefers indexed content; `live` permits live external access. |\n| `textVerbosity`         | `low`, `medium`, `high`                              | `low`          | Sets Responses API `text.verbosity`.                                                                                                                                                                                                      |\n| `reasoningSummary`      | `auto`, `concise`, `detailed`, `off`                 | `auto`         | Sets `reasoning.summary` when reasoning is enabled; `off` omits the summary parameter.                                                                                                                                                    |\n\nResponses Lite supports exactly `gpt-5.6-sol`, `gpt-5.6-terra`, `gpt-5.6-luna`,\n`gpt-6-astra`, `gpt-6-sol`, `gpt-6-luna`, and `gpt-6.1-sol`. It remains opt-in.\n\nInvalid JSON setting values are ignored and invalid JSON does not prevent Pi from\nstarting. The settings pane reports malformed JSON instead of overwriting it.\nProject configuration is read only when the project is trusted.\n\nEvery setting can also be overridden for one Pi process with an environment variable:\n\n| Setting                 | Environment variable                             |\n| ----------------------- | ------------------------------------------------ |\n| `fastMode`              | `PI_OPENAI_CODEX_COMPAT_FAST_MODE`               |\n| `responsesLite`         | `PI_OPENAI_CODEX_COMPAT_RESPONSES_LITE`          |\n| `toolBackground`        | `PI_OPENAI_CODEX_COMPAT_TOOL_BACKGROUND`         |\n| `shellTool`             | `PI_OPENAI_CODEX_COMPAT_SHELL_TOOL`              |\n| `applyPatch`            | `PI_OPENAI_CODEX_COMPAT_APPLY_PATCH`             |\n| `applyPatchDebug`       | `PI_OPENAI_CODEX_COMPAT_APPLY_PATCH_DEBUG`       |\n| `applyPatchDiagnostics` | `PI_OPENAI_CODEX_COMPAT_APPLY_PATCH_DIAGNOSTICS` |\n| `imageGeneration`       | `PI_OPENAI_CODEX_COMPAT_IMAGE_GENERATION`        |\n| `imageDetail`           | `PI_OPENAI_CODEX_COMPAT_IMAGE_DETAIL`            |\n| `webRun`                | `PI_OPENAI_CODEX_COMPAT_WEB_RUN`                 |\n| `autoCompactAtPercent`  | `PI_OPENAI_CODEX_COMPAT_AUTO_COMPACT_AT_PERCENT` |\n| `webSearch`             | `PI_OPENAI_CODEX_COMPAT_WEB_SEARCH_MODE`         |\n| `textVerbosity`         | `PI_OPENAI_CODEX_COMPAT_TEXT_VERBOSITY`          |\n| `reasoningSummary`      | `PI_OPENAI_CODEX_COMPAT_REASONING_SUMMARY`       |\n\nEnvironment variables have the highest precedence: defaults < global JSON < trusted-project JSON < environment. Boolean values accept `true`/`false`, `1`/`0`, `on`/`off`, or `enabled`/`disabled`. Other settings use the values in the defaults table; `PI_OPENAI_CODEX_COMPAT_AUTO_COMPACT_AT_PERCENT=off` and `PI_OPENAI_CODEX_COMPAT_AUTO_COMPACT_AT_PERCENT=default` explicitly select Pi's default compaction lifecycle.\n\nEnvironment-controlled rows are marked `(env)` and locked in `/codex-settings`. Saving the pane does not copy their effective values into JSON, so CLI overrides remain transient. Invalid environment values fail fast with the variable name and accepted values.\n\nFor example:\n\n```bash\nPI_OPENAI_CODEX_COMPAT_WEB_RUN=off \\\nPI_OPENAI_CODEX_COMPAT_RESPONSES_LITE=off \\\nPI_OPENAI_CODEX_COMPAT_SHELL_TOOL=unified_exec \\\nPI_OPENAI_CODEX_COMPAT_IMAGE_DETAIL=high \\\nPI_OPENAI_CODEX_COMPAT_AUTO_COMPACT_AT_PERCENT=90 \\\npi\n```\n\n## Command tools\n\nOn an `openai-codex` model, `shellTool` selects exactly one command surface:\n\n- `unified_exec` activates `exec_command` and `write_stdin` and is the default.\n- `shell_command` activates the legacy one-shot command tool.\n\nThe extension replaces `bash` only when it was active before the Codex command\nsurface was selected. It therefore preserves sessions started with restricted\ntool lists such as `--no-tools`. Switching away from an `openai-codex` model\nrestores the previously active `bash` tool. Selecting `shell_command`, or\nswitching models, also terminates persistent unified-exec sessions.\n\n`exec_command` returns immediately when a command finishes within its yield\nwindow. Otherwise it returns a numeric session ID for `write_stdin`.\n`tty: true` allocates a persistent pseudoterminal (PTY), allowing\n`write_stdin` to send characters to interactive programs; without a PTY,\nstdin is closed, but `\"\\u0003\"` can still interrupt the process. Empty\n`write_stdin` calls poll without writing. Sessions are in-memory, are capped at\n64 per Pi process, and are terminated on session shutdown. If an initial\n`exec_command` call is cancelled after its process starts, the process remains\navailable and the cancellation result reports its session ID for later\n`write_stdin` interaction. `/ps` lists live background sessions with their\nsession ID, operating-system process ID, command, working directory, and\nPTY/pipe mode. `Enter` opens a live, scrollable recent-output popup;\n`Ctrl+X` stops the selected session from either view, and `Ctrl+S` stops every\nsession. Both stop actions require confirmation.\n\n`shell_command` is one-shot and has a 10-second default timeout. Nonzero exits\nand timeouts are successful tool results carrying exit metadata, so the model\ncan inspect and react to command failure normally. Both command families use\nPi's bash-compatible shell resolution and expose the current\n`PI_SESSION_ID`, `PI_SESSION_FILE`, `PI_PROVIDER`, `PI_MODEL`, and\n`PI_REASONING_LEVEL` values to child processes. Login-shell behavior defaults\nto enabled and can be disabled per call. Unified exec additionally normalizes\n`NO_COLOR`, `TERM`, UTF-8 locale variables, `COLORTERM`, and common pager\nvariables to the official Codex values; it deliberately does not set\n`CODEX_CI`.\n\nModel-visible output has a hard cap of the last 2,000 lines or 50 KiB,\nwhichever limit is reached first. Unified exec defaults\n`max_output_tokens` to 10,000 approximate tokens (roughly 40 KiB) and allows a\ncall to lower that budget, but never to raise the Pi cap. When output is\ntruncated, the complete raw output for that interaction is stored in a\ntemporary log file and its absolute path is included in the tool result.\nPersistent PTY support uses the pinned\n`node-pty` `1.2.0-beta.15` prebuilds on supported macOS, Linux, and Windows\narchitectures.\n\nThe schemas intentionally omit Codex execution environments, sandbox\npermissions, additional permission profiles, approval justifications, and\nprefix rules. These tools execute with the Pi extension process's full host\npermissions.\n\n## Native compaction\n\nSee the [Codex compaction approach review](CODEX_COMPACTION_APPROACH_REVIEW.md)\nfor a focused `0.153.4` source review, including experimental notes/history\nrecovery and unsummarized context resets, implementation options, and trade-offs.\nThat proposal does not change this package's runtime or its package-wide\ncompatibility baseline.\n\nThe extension handles native compaction for `openai-codex`. It follows the Codex v2 flow:\n\n1. Send normal Responses history followed by `{ \"type\": \"compaction_trigger\" }`.\n2. Validate the returned opaque `compaction` item.\n3. Retain approximately 64,000 tokens of recent user messages, plus every developer and\n   system message outside that budget. Repeated prompt updates (for example several\n   `/reload` runs or prompt-section changes) each remain in place as their own inline\n   developer item; they accumulate across checkpoints and are never dropped, merged, or\n   deduplicated, because each one is a distinct instruction the model already saw.\n4. Persist the opaque checkpoint in the Pi session and replay it on later requests.\n\nA compaction request declares the same tools as the branch's latest turn request to the\nselected model, so both share a prompt-cache prefix. Pi's transcript lists every active\ntool, but Pi leaves some out of requests, for example the tools codemode hides in `only`\nmode, and other extensions can edit a request's tools. Each turn request therefore saves\nthe tools it sent in an `openai-codex-compat-request-tools` session entry whenever they\ndiffer from the branch's latest saved tools for that model. Compaction declares the saved\ntools, also after a resume or a branch switch. A branch without a saved entry for the\nmodel, such as one an older version wrote, declares the transcript's current tools.\n\nOverflow and length recovery follow Pi 0.87's `context_edit` semantics. Every request\nreads Pi's session projection, so earlier omissions and replacements (an elided tool\noutput, an omitted reply) apply exactly as they do for Pi's own adapters. Before an\noverflow-recovery compaction, Pi omits the latest failed or truncated attempt and its tool\nresults; the checkpoint request projects only those entries as they were before that\nomission, so a truncated response and its tool results survive as committed progress while\nevery unrelated earlier edit stays in force. A failed attempt contributes only the native\noutput committed before the overflowing subrequest.\n\nOrdinary responses and compaction use the same extension-managed SSE/WebSocket transport. Before the first WebSocket turn for a session and model, the provider performs a best-effort v2 `generate: false` prewarm of the static instruction/tool prefix, then generates the dynamic conversation input from its continuation. With `responsesLite: false`, supported models use the ordinary Responses envelope and receive their own ordinary-prefix prewarm.\n\nHealthy session WebSockets remain available until the server closes them or Pi tears down the session. Retryable WebSocket failures before model-visible output receive up to five fresh-connection retries before the session switches to sticky SSE. Retryable SSE HTTP failures and dropped streams receive up to five same-request resampling attempts before model-visible output. Both transports use Codex-style exponential backoff with ±10% jitter and preserve the same prompt-cache, session, account, installation, and window identities. Server metadata is not considered model-visible output, so a routing-state-only response can still be retried safely. Transport failures after model-visible output fail closed rather than risk duplicate text or tool calls. Explicit retryable `response.failed`/`response.incomplete` protocol terminals instead return to the provider-owned sampling loop, which preserves completed output items as the next request's history.\n\nThe provider stores a native response override only when Pi's canonical assistant representation cannot round-trip the provider output exactly; normal text, reasoning, and tool responses therefore do not duplicate session data. Native overrides are associated with canonical assistants by response id and replayed only when they are present on the active Pi branch.\n\nTransparent prewarm, requests, continuation, and transport recovery are recorded in the resulting assistant message's `diagnostics` array in Pi's session JSONL:\n\n- `codex_transport_prewarm` records whether static prewarm completed, established continuation state, and received turn state.\n- `codex_transport_request` records the selected transport, full/delta input counts and byte sizes, exact session/account/cache/turn/response/routing-state identifiers, static-prefix and request-template fingerprints, instruction/tool fingerprints, cache affinity, and reported cache read/write token usage.\n- `codex_transport_recovery` identifies fresh-WebSocket and SSE retries, rejected or locally bypassed continuations, and WebSocket-to-SSE recovery, including the exact triggering error, attempted request modes, and whether cache and account affinity were preserved.\n\nDiagnostics intentionally retain exact request, cache-affinity, response, account, and server routing identifiers so a local Pi session file contains enough information to trace retries and cache behavior directly. Prompt and tool contents are still represented by byte counts and SHA-256 fingerprints rather than duplicated into every diagnostic.\n\nAny model switch is rejected while the active branch contains a native Codex checkpoint because checkpoints are model-specific. Navigate to a branch before the checkpoint or start a new session before switching. Toggling fast mode does not change the model id or invalidate the checkpoint.\n\nNative compaction fails closed for Codex models: a failed compaction is cancelled instead of silently replacing the opaque state with a local text summary. Other providers continue to use Pi's default compaction behavior. `/tree` branch summarization is intentionally not intercepted.\n\nWhen the active branch has no native Codex checkpoint, Pi model switching remains available. Selecting a provider other than `openai-codex` disables the extension-owned Codex tools, restores the Pi `edit` and `write` tools that `apply_patch` suppressed, restores a replaced Pi `bash` tool, and terminates persistent unified-exec sessions. Switching back to an `openai-codex` model reapplies the current session settings.\n\n## `apply_patch`\n\nThe package registers an `apply_patch` tool using the Codex patch format:\n\n```text\n*** Begin Patch\n*** Update File: src/example.ts\n@@\n-old value\n+new value\n*** End Patch\n```\n\nWhile `applyPatch` is enabled and an `openai-codex` model is selected, the extension temporarily disables Pi's active `edit` and `write` tools. Turning the setting off or selecting another provider restores only the tools that were active before `apply_patch` replaced them.\n\nSupported operations:\n\n- add files;\n- update files with ordered context chunks;\n- delete files;\n- update and move a file in one instruction;\n- move regular files or symlink entries without content changes;\n- evaluate repeated and aliased paths sequentially;\n- anchor updates at the end of a file.\n\nCompatibility behavior:\n\n- `*** Add File` overwrites an existing file, matching Codex.\n- `*** Move to` overwrites an existing destination, matching Codex.\n- Hunk matching retries exact text, trailing-whitespace-insensitive text, fully trimmed text, and Codex's Unicode punctuation normalization.\n- Matching stops after the official Codex-compatible line matcher. There is no Tree-sitter, Markdown-table, code-fence, formatter-reflow, candidate-ranking, or output-equivalence fallback.\n- Move identity and context chunks must match before the entry is moved; chunkless moves remain byte-opaque.\n- The parser accepts Codex's lenient marker whitespace, blank update-context lines, and direct heredoc wrappers.\n- Empty and identity updates, identical adds, absent deletes, self-moves, and same-patch fulfilled moves succeed with concise `NO CHANGE` results. Inapplicable operations are `SKIPPED` only when later operations deterministically make every effect unobservable.\n- Repeated identical adds use source-ordered virtual content and exact\n  spelling, so an earlier add or move can satisfy a later add without a\n  redundant replacement.\n- State-dependent `NO CHANGE` results retain source-ordered execution\n  checkpoints without rereading the filesystem. A checkpoint after an earlier\n  failure is `NOT RUN`; empty updates, identity updates without moves, and\n  chunkless lexical self-moves remain unconditional.\n- Model-fa","readmeFilename":"README.md"}