{"_id":"@99percentpeople/pi-codex-api","_rev":"18-0aa6dd291d034afcffbdc6f25d2adc58","name":"@99percentpeople/pi-codex-api","dist-tags":{"latest":"0.4.0"},"versions":{"0.1.0":{"name":"@99percentpeople/pi-codex-api","version":"0.1.0","keywords":["pi-package","pi","coding-agent","codex","chatgpt","image-generation","web-search"],"author":{"name":"99percentpeople"},"license":"MIT","_id":"@99percentpeople/pi-codex-api@0.1.0","maintainers":[{"name":"99percentpeople","email":"myzzzyearz@outlook.com"}],"homepage":"https://github.com/99percentpeople/pi-extensions#codex-api","bugs":{"url":"https://github.com/99percentpeople/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./index.ts"]},"dist":{"shasum":"b760c37b6f5cff45f2ba115123a062cb51a336df","tarball":"https://registry.npmjs.org/@99percentpeople/pi-codex-api/-/pi-codex-api-0.1.0.tgz","fileCount":13,"integrity":"sha512-kLsqroKXlo2WlECvCrNeQj/Lutzd7caHBdZyjx/oBGXgLZ2W7u2cNvjORxCImrqB3f1zNIuRrPCTdrmM4LSdwQ==","signatures":[{"sig":"MEYCIQDPAXMHsgmuSKC7GGRxs2JGRh5OWZBGT2BG1IMYqYGC6QIhALqrWXtdh5tz196KBK7w0sxpnDN+mgn9CGCC7cW1K+Lw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":101486},"type":"module","gitHead":"7219526331ded7815a418cad234a7d26c26c07ab","scripts":{"prepublishOnly":"bun run --cwd ../.. check"},"_npmUser":{"name":"99percentpeople","email":"myzzzyearz@outlook.com"},"repository":{"url":"git+https://github.com/99percentpeople/pi-extensions.git","type":"git","directory":"extensions/codex-api"},"_npmVersion":"12.0.1","description":"Expose Codex subscription image, search, Fast, and usage APIs as native Pi tools and commands","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@99percentpeople/pi-shared-settings":"0.1.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-codex-api_0.1.0_1785382587034_0.03789125293510631","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@99percentpeople/pi-codex-api","version":"0.1.1","keywords":["pi-package","pi","coding-agent","codex","chatgpt","image-generation","web-search"],"author":{"name":"99percentpeople"},"license":"MIT","_id":"@99percentpeople/pi-codex-api@0.1.1","maintainers":[{"name":"99percentpeople","email":"myzzzyearz@outlook.com"}],"homepage":"https://github.com/99percentpeople/pi-extensions#codex-api","bugs":{"url":"https://github.com/99percentpeople/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./index.ts"]},"dist":{"shasum":"53cd7ad1a49dcc3bd3aaab755df187675c059d1c","tarball":"https://registry.npmjs.org/@99percentpeople/pi-codex-api/-/pi-codex-api-0.1.1.tgz","fileCount":13,"integrity":"sha512-M1dn8TXrTvSygkpe0PIDnlqgSnpHPwS6TOGeVXnDADy+wbBbPhRU6FWQon/uhCOk/tmv6O3BFHULrErNbPzEXg==","signatures":[{"sig":"MEUCIC4KiRrSHS6qFOOyJ8beyB1M7qvS/vtqtcZZiOBcIS99AiEA5y1Pam+tgOsw/NaN/LXAdw7OhRDoae4APnkPC9VSpYc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@99percentpeople%2fpi-codex-api@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":101486},"type":"module","gitHead":"1b043bc6024fb96d992bc8fad160e1c624c7d79f","scripts":{"prepublishOnly":"bun run --cwd ../.. check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b793f0e1-686d-467c-9bbd-4ca945070b96"}},"repository":{"url":"git+https://github.com/99percentpeople/pi-extensions.git","type":"git","directory":"extensions/codex-api"},"_npmVersion":"11.16.0","description":"Expose Codex subscription image, search, Fast, and usage APIs as native Pi tools and commands","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@99percentpeople/pi-shared-settings":"0.1.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-codex-api_0.1.1_1785382731216_0.6371968622478188","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@99percentpeople/pi-codex-api","version":"0.1.2","keywords":["pi-package","pi","coding-agent","codex","chatgpt","image-generation","web-search"],"author":{"name":"99percentpeople"},"license":"MIT","_id":"@99percentpeople/pi-codex-api@0.1.2","maintainers":[{"name":"99percentpeople","email":"myzzzyearz@outlook.com"}],"homepage":"https://github.com/99percentpeople/pi-extensions#codex-api","bugs":{"url":"https://github.com/99percentpeople/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./index.ts"]},"dist":{"shasum":"f0d0de04d85fecd62d259bf758822b2e4e969c62","tarball":"https://registry.npmjs.org/@99percentpeople/pi-codex-api/-/pi-codex-api-0.1.2.tgz","fileCount":13,"integrity":"sha512-1X78EHZN2A6LVMVA+1nZER3P1UZOOh97Q7NYKSCK9+KgxYVGSMpARJWGYJOnQD6hbDDd9kAht9VI/NCPKoyqXQ==","signatures":[{"sig":"MEQCIHt2Kwjqp1lNe1ZU7L6jeYfXxfxkzyJSn2H/Ko3hknFZAiAxLHmVZb7yxOTKwW/biYXJv8cviknapUeTWwQnW688xA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@99percentpeople%2fpi-codex-api@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":108444},"type":"module","gitHead":"aa2dc9729f324a5f14136b8ecbaf0c3995634875","scripts":{"prepublishOnly":"bun run --cwd ../.. check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b793f0e1-686d-467c-9bbd-4ca945070b96"}},"repository":{"url":"git+https://github.com/99percentpeople/pi-extensions.git","type":"git","directory":"extensions/codex-api"},"_npmVersion":"11.16.0","description":"Expose Codex subscription image, search, Fast, and usage APIs as native Pi tools and commands","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@99percentpeople/pi-shared-settings":"0.1.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-codex-api_0.1.2_1785386333054_0.7670807220618128","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@99percentpeople/pi-codex-api","version":"0.1.3","keywords":["pi-package","pi","coding-agent","codex","chatgpt","image-generation","web-search"],"author":{"name":"99percentpeople"},"license":"MIT","_id":"@99percentpeople/pi-codex-api@0.1.3","maintainers":[{"name":"99percentpeople","email":"myzzzyearz@outlook.com"}],"homepage":"https://github.com/99percentpeople/pi-extensions#codex-api","bugs":{"url":"https://github.com/99percentpeople/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./dist/index.js"]},"dist":{"shasum":"8e6215c53c79c3c8f9919a349d1c30a21b7bdb3f","tarball":"https://registry.npmjs.org/@99percentpeople/pi-codex-api/-/pi-codex-api-0.1.3.tgz","fileCount":6,"integrity":"sha512-7Op+/sZhI301rfFpYVeBhCxOnRDi84Dp/rm8bP3qsBQA8FttijOKDxEXgLGXdnuHAdn9XVLgfYjP5/rhcF9u3Q==","signatures":[{"sig":"MEQCIFjt+OgIG2axSrRezck6CJqAjy7DdpIopNcIyU2xLnC2AiB8HjGCrrHJrB+Ik17EyCLfaBK0r9AiMy0MQIOTzXVIlQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@99percentpeople%2fpi-codex-api@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":231643},"type":"module","gitHead":"b01a46896668a3092656b86841488f17ac886979","scripts":{"build":"bun run ../../scripts/build-package.ts","prepack":"bun run build","prepublishOnly":"bun run --cwd ../.. check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b793f0e1-686d-467c-9bbd-4ca945070b96"}},"repository":{"url":"git+https://github.com/99percentpeople/pi-extensions.git","type":"git","directory":"extensions/codex-api"},"_npmVersion":"11.16.0","description":"Expose Codex subscription image, search, Fast, and usage APIs as native Pi tools and commands","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@99percentpeople/pi-shared-settings":"0.1.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-codex-api_0.1.3_1785395903371_0.12662077874998046","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@99percentpeople/pi-codex-api","version":"0.1.4","keywords":["pi-package","pi","coding-agent","codex","chatgpt","image-generation","web-search"],"author":{"name":"99percentpeople"},"license":"MIT","_id":"@99percentpeople/pi-codex-api@0.1.4","maintainers":[{"name":"99percentpeople","email":"myzzzyearz@outlook.com"}],"homepage":"https://github.com/99percentpeople/pi-extensions#codex-api","bugs":{"url":"https://github.com/99percentpeople/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./dist/index.ts"]},"dist":{"shasum":"d475b2203f8f735d28f2d08ec42bc8f0a53457bf","tarball":"https://registry.npmjs.org/@99percentpeople/pi-codex-api/-/pi-codex-api-0.1.4.tgz","fileCount":6,"integrity":"sha512-GeN0wRSrPDCjTnDmG4MVhJI5BosgVD0exKUz0grLdmrTMFYloesu57Ivwp+cG835codY3YnWqZieB7P0MHH3dw==","signatures":[{"sig":"MEQCIEYP921p2h5UQCY1GkKd4A5d+/u4EJ5qjcnH4XbTaARNAiAC04NXiuFM+YkpoUfbakaoaNeHqwq/ybUOuDkhC4rUYw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@99percentpeople%2fpi-codex-api@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":231643},"type":"module","gitHead":"0d85185fc1af2c66df54fcd9347c6e53d10e83f6","scripts":{"build":"bun run ../../scripts/build-package.ts","prepack":"bun run build","prepublishOnly":"bun run --cwd ../.. check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b793f0e1-686d-467c-9bbd-4ca945070b96"}},"repository":{"url":"git+https://github.com/99percentpeople/pi-extensions.git","type":"git","directory":"extensions/codex-api"},"_npmVersion":"11.16.0","description":"Expose Codex subscription image, search, Fast, and usage APIs as native Pi tools and commands","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@99percentpeople/pi-shared-settings":"0.1.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-codex-api_0.1.4_1785411536454_0.9930099617144896","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@99percentpeople/pi-codex-api","version":"0.2.0","keywords":["pi-package","pi","coding-agent","codex","chatgpt","image-generation","web-search"],"author":{"name":"99percentpeople"},"license":"MIT","_id":"@99percentpeople/pi-codex-api@0.2.0","maintainers":[{"name":"99percentpeople","email":"myzzzyearz@outlook.com"}],"homepage":"https://github.com/99percentpeople/pi-extensions#codex-api","bugs":{"url":"https://github.com/99percentpeople/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./dist/index.ts"]},"dist":{"shasum":"579f784628f7bcff35bbe9b29be3b323f5f85252","tarball":"https://registry.npmjs.org/@99percentpeople/pi-codex-api/-/pi-codex-api-0.2.0.tgz","fileCount":6,"integrity":"sha512-ROY81x3vLIoINrgyq83icbIh9nDhEXrA6+deETny+z2a3zUdT5YuJKcJfep+H8wDRPODDQxLAMfqzVdG12EVsg==","signatures":[{"sig":"MEQCIFhF6CWDGC2fh5OiMiIe1tbUGwEATKEBYee0HNPTLXqIAiBOSrDgs8m6Lgiwk6cn9mG4K1xpXCsua01LvnNOB4toIg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@99percentpeople%2fpi-codex-api@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":259000},"type":"module","gitHead":"e5c37505d1cbeeadba9db6b4ec0b36b035136b1d","scripts":{"build":"bun run ../../scripts/build-package.ts","prepack":"bun run build","prepublishOnly":"bun run --cwd ../.. check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b793f0e1-686d-467c-9bbd-4ca945070b96"}},"repository":{"url":"git+https://github.com/99percentpeople/pi-extensions.git","type":"git","directory":"extensions/codex-api"},"_npmVersion":"11.16.0","description":"Expose Codex subscription image, search, Fast, and usage APIs as native Pi tools and commands","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@99percentpeople/pi-shared-settings":"0.1.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-codex-api_0.2.0_1785500355292_0.7110180270620148","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@99percentpeople/pi-codex-api","version":"0.2.1","keywords":["pi-package","pi","coding-agent","codex","chatgpt","image-generation","web-search"],"author":{"name":"99percentpeople"},"license":"MIT","_id":"@99percentpeople/pi-codex-api@0.2.1","maintainers":[{"name":"99percentpeople","email":"myzzzyearz@outlook.com"}],"homepage":"https://github.com/99percentpeople/pi-extensions#codex-api","bugs":{"url":"https://github.com/99percentpeople/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./dist/index.ts"]},"dist":{"shasum":"967a22f27374d504ca6aec9e9668b4300b8ef178","tarball":"https://registry.npmjs.org/@99percentpeople/pi-codex-api/-/pi-codex-api-0.2.1.tgz","fileCount":6,"integrity":"sha512-iJ7FUKDrBLof/o6LM0FEAypt3qU5N6BgcoxOiGSkmymO2W7WyihXj/9Pcc9uk+Qohu9oHeyEocernu5TEa3ceA==","signatures":[{"sig":"MEYCIQCCWz2G7nofOymGPknslR8Jia/3UDw66mwhIRvYCgoCGAIhAKgHChuCwGCU+8pGyUMtHUHmaWjtBBzfHdB5JaD8Cgf2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@99percentpeople%2fpi-codex-api@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":266410},"type":"module","gitHead":"fb290f49b36e620a00aaf6c5b5f01eb5b666c803","scripts":{"build":"bun run ../../scripts/build-package.ts","prepack":"bun run build","prepublishOnly":"bun run --cwd ../.. check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b793f0e1-686d-467c-9bbd-4ca945070b96"}},"repository":{"url":"git+https://github.com/99percentpeople/pi-extensions.git","type":"git","directory":"extensions/codex-api"},"_npmVersion":"11.16.0","description":"Expose Codex subscription image, search, Fast, and usage APIs as native Pi tools and commands","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@99percentpeople/pi-shared-settings":"0.1.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-codex-api_0.2.1_1785561368609_0.12270803710660427","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@99percentpeople/pi-codex-api","version":"0.2.2","keywords":["pi-package","pi","coding-agent","codex","chatgpt","image-generation","web-search"],"author":{"name":"99percentpeople"},"license":"MIT","_id":"@99percentpeople/pi-codex-api@0.2.2","maintainers":[{"name":"99percentpeople","email":"myzzzyearz@outlook.com"}],"homepage":"https://github.com/99percentpeople/pi-extensions#codex-api","bugs":{"url":"https://github.com/99percentpeople/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./dist/index.ts"]},"dist":{"shasum":"d0ba637fbac0bf64ce7b6f2db741cd819faa333e","tarball":"https://registry.npmjs.org/@99percentpeople/pi-codex-api/-/pi-codex-api-0.2.2.tgz","fileCount":6,"integrity":"sha512-+G73qKh+qHZ975p/Q+gmFfMhd9axa64nVM2GEqzGZZA69kQrcmIVUUR5Tqsx3odo634Ag10GGJudxfqG3m7qGw==","signatures":[{"sig":"MEQCICJ+/tNvcYIutYOGa1MdZ0fTYG9/13Z2ZcOdbtDzvhmFAiBjvFX/jOAkZjJANCaK8HYF/r+9lAGSa5tzgmQv32Xs5A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@99percentpeople%2fpi-codex-api@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":268939},"type":"module","gitHead":"8e807d48d1d05b29c0517900c8d0a3962693f808","scripts":{"build":"bun run ../../scripts/build-package.ts","prepack":"bun run build","prepublishOnly":"bun run --cwd ../.. check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b793f0e1-686d-467c-9bbd-4ca945070b96"}},"repository":{"url":"git+https://github.com/99percentpeople/pi-extensions.git","type":"git","directory":"extensions/codex-api"},"_npmVersion":"11.16.0","description":"Expose Codex subscription image, search, Fast, and usage APIs as native Pi tools and commands","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@99percentpeople/pi-shared-settings":"0.1.2","@99percentpeople/pi-workspace-files":"0.1.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-codex-api_0.2.2_1785591067788_0.26945775851554177","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@99percentpeople/pi-codex-api","version":"0.2.4","keywords":["pi-package","pi","coding-agent","codex","chatgpt","image-generation","web-search"],"author":{"name":"99percentpeople"},"license":"MIT","_id":"@99percentpeople/pi-codex-api@0.2.4","maintainers":[{"name":"99percentpeople","email":"myzzzyearz@outlook.com"}],"homepage":"https://github.com/99percentpeople/pi-extensions#codex-api","bugs":{"url":"https://github.com/99percentpeople/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./dist/index.ts"]},"dist":{"shasum":"e05ab8a873c69e4fdeed5dc37fbb6ff3359dbe4f","tarball":"https://registry.npmjs.org/@99percentpeople/pi-codex-api/-/pi-codex-api-0.2.4.tgz","fileCount":6,"integrity":"sha512-vBG8OiSsgjggD2YmIjFR0xAGHEpmbJCfepqochR5dvTXChBBIuk/PlevpuuDKh1JhcSAH2buUEWWFRG80DbeSA==","signatures":[{"sig":"MEUCIFH3BvXHiMKdfCMlzhwxtfK2uoGP47NpFI+WmjmnljmxAiEArIcFefE3u9YaPjAd33j/pvOZ49PKg+UYxfnJ7g2jQwY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@99percentpeople%2fpi-codex-api@0.2.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":286019},"type":"module","gitHead":"7fe255770bcf1a61872854170d547146fa0ebb82","scripts":{"build":"bun run ../../scripts/build-package.ts","prepack":"bun run build","prepublishOnly":"bun run --cwd ../.. check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b793f0e1-686d-467c-9bbd-4ca945070b96"}},"repository":{"url":"git+https://github.com/99percentpeople/pi-extensions.git","type":"git","directory":"extensions/codex-api"},"_npmVersion":"11.16.0","description":"Expose Codex subscription image, search, Fast, and usage APIs as native Pi tools and commands","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@99percentpeople/pi-shared-settings":"0.1.2","@99percentpeople/pi-workspace-files":"0.1.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-codex-api_0.2.4_1785690200099_0.29311571967119887","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@99percentpeople/pi-codex-api","version":"0.2.5","keywords":["pi-package","pi","coding-agent","codex","chatgpt","image-generation","web-search"],"author":{"name":"99percentpeople"},"license":"MIT","_id":"@99percentpeople/pi-codex-api@0.2.5","maintainers":[{"name":"99percentpeople","email":"myzzzyearz@outlook.com"}],"homepage":"https://github.com/99percentpeople/pi-extensions#codex-api","bugs":{"url":"https://github.com/99percentpeople/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./dist/index.ts"]},"dist":{"shasum":"23ab4c933aee737f0ee922d2333db6a235fbe39a","tarball":"https://registry.npmjs.org/@99percentpeople/pi-codex-api/-/pi-codex-api-0.2.5.tgz","fileCount":6,"integrity":"sha512-gXhiihrQtWRg0yuZcL0EgxC8eemAnuSNMv748tvmptPwYmtgLyntsO32bl1kWofnwTWvYk8M0gAKt/bkMj76KQ==","signatures":[{"sig":"MEUCIQCwi9ff5CMxN4EBfr3RVXe2E99NjNE/Tyc24IC7f6pOqwIgKPj3KE7LU50yb8IcvhooFwBUkwjCp7eFXPA6S11slJ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@99percentpeople%2fpi-codex-api@0.2.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":340716},"type":"module","gitHead":"8438c4d8776fa4778566f5448867dd04b215b033","scripts":{"build":"bun run ../../scripts/build-package.ts","prepack":"bun run build","prepublishOnly":"bun run --cwd ../.. check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b793f0e1-686d-467c-9bbd-4ca945070b96"}},"repository":{"url":"git+https://github.com/99percentpeople/pi-extensions.git","type":"git","directory":"extensions/codex-api"},"_npmVersion":"11.16.0","description":"Expose Codex subscription image, search, Fast, and usage APIs as native Pi tools and commands","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@99percentpeople/pi-shared-settings":"0.1.2","@99percentpeople/pi-workspace-files":"0.1.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-codex-api_0.2.5_1785812060715_0.8774651251300667","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@99percentpeople/pi-codex-api","version":"0.2.6","keywords":["pi-package","pi","coding-agent","codex","chatgpt","image-generation","web-search"],"author":{"name":"99percentpeople"},"license":"MIT","_id":"@99percentpeople/pi-codex-api@0.2.6","maintainers":[{"name":"99percentpeople","email":"myzzzyearz@outlook.com"}],"homepage":"https://github.com/99percentpeople/pi-extensions#codex-api","bugs":{"url":"https://github.com/99percentpeople/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./dist/index.ts"]},"dist":{"shasum":"f838dbdaa512aea516d2251a25fb92bd546e760d","tarball":"https://registry.npmjs.org/@99percentpeople/pi-codex-api/-/pi-codex-api-0.2.6.tgz","fileCount":6,"integrity":"sha512-7X3pIaPQMHOVr+R2XFr3L7BvPLryyH+n9R3LvB0wercsWVwZ92V/Hmuj2XQL0eoWtXqVwfgB2v5pnEBxaNRKOQ==","signatures":[{"sig":"MEUCIQDcvQNuPu/e2iqgEC1naUxgKigs+VDIo3pDVzzulvvQSgIgSn4ZIHhDojAcnQ/GMiRo1943zmDqNXlPx8mFwL2Ou5Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@99percentpeople%2fpi-codex-api@0.2.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":348811},"type":"module","gitHead":"0fa510de5b4c3d7ce9b67939223ef113adc93cc2","scripts":{"build":"bun run ../../scripts/build-package.ts","prepack":"bun run build","prepublishOnly":"bun run --cwd ../.. check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b793f0e1-686d-467c-9bbd-4ca945070b96"}},"repository":{"url":"git+https://github.com/99percentpeople/pi-extensions.git","type":"git","directory":"extensions/codex-api"},"_npmVersion":"11.16.0","description":"Expose Codex subscription image, search, Fast, and usage APIs as native Pi tools and commands","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@99percentpeople/pi-shared-settings":"0.1.2","@99percentpeople/pi-workspace-files":"0.1.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-codex-api_0.2.6_1785895883623_0.05249580778515672","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"@99percentpeople/pi-codex-api","version":"0.2.7","keywords":["pi-package","pi","coding-agent","codex","chatgpt","image-generation","web-search"],"author":{"name":"99percentpeople"},"license":"MIT","_id":"@99percentpeople/pi-codex-api@0.2.7","maintainers":[{"name":"99percentpeople","email":"myzzzyearz@outlook.com"}],"homepage":"https://github.com/99percentpeople/pi-extensions#codex-api","bugs":{"url":"https://github.com/99percentpeople/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./dist/index.ts"]},"dist":{"shasum":"ce47a803aeb6a314e3c85243b19011a10d4a52ac","tarball":"https://registry.npmjs.org/@99percentpeople/pi-codex-api/-/pi-codex-api-0.2.7.tgz","fileCount":6,"integrity":"sha512-BqOdFGVZ/zvkApE96cUtyfwiehGAh1LYEk+Lq2QNyGbmz9T8bqrGBZEhsoVgH/WuXKpXCI9BeQSEyWU/4AXNtQ==","signatures":[{"sig":"MEUCIGtGhHDftzjdCths67N1qMZlHQIolUvLTPKY21CB21t5AiEA/EpYIb6N6KdkklqdqlTMc9WC4SeYz4Y5gFKR/VE+QLo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@99percentpeople%2fpi-codex-api@0.2.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":350892},"type":"module","gitHead":"d8065f837c6e9e4bd8666f750947070820d6772b","scripts":{"build":"bun run ../../scripts/build-package.ts","prepack":"bun run build","prepublishOnly":"bun run --cwd ../.. check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b793f0e1-686d-467c-9bbd-4ca945070b96"}},"repository":{"url":"git+https://github.com/99percentpeople/pi-extensions.git","type":"git","directory":"extensions/codex-api"},"_npmVersion":"11.16.0","description":"Expose Codex subscription image, search, Fast, and usage APIs as native Pi tools and commands","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@99percentpeople/pi-shared-settings":"0.1.2","@99percentpeople/pi-workspace-files":"0.1.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-codex-api_0.2.7_1785981626089_0.48670423323252643","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"@99percentpeople/pi-codex-api","version":"0.2.8","keywords":["pi-package","pi","coding-agent","codex","chatgpt","image-generation","web-search"],"author":{"name":"99percentpeople"},"license":"MIT","_id":"@99percentpeople/pi-codex-api@0.2.8","maintainers":[{"name":"99percentpeople","email":"myzzzyearz@outlook.com"}],"homepage":"https://github.com/99percentpeople/pi-extensions#codex-api","bugs":{"url":"https://github.com/99percentpeople/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./index.min.js"]},"dist":{"shasum":"e732f535f6c3d2ab5f8713fc18c01137a217df2a","tarball":"https://registry.npmjs.org/@99percentpeople/pi-codex-api/-/pi-codex-api-0.2.8.tgz","fileCount":6,"integrity":"sha512-BDRpMFhBmJWIObBPAfbz9s7hqDgFj/y60E77fKGA8sm+fsxiTR73pogfIlnH4YLIiF/fy/ENdOohGg/goe+mbw==","signatures":[{"sig":"MEYCIQDjP0DKOshKQVT/GF3+QT1DA2LEREzpVk55iAi32J53eAIhAL2CwHAFpZbTlBAFmj4JLlVLHrnrrpSVXi7qbmHuHPhW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@99percentpeople%2fpi-codex-api@0.2.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":286573},"type":"module","gitHead":"e9fb82fa5b14fd22f55feb487bbb814e1ab45206","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b793f0e1-686d-467c-9bbd-4ca945070b96"}},"repository":{"url":"git+https://github.com/99percentpeople/pi-extensions.git","type":"git","directory":"extensions/codex-api"},"_npmVersion":"11.16.0","description":"Expose Codex subscription image, search, Fast, and usage APIs as native Pi tools and commands","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@99percentpeople/pi-shared-settings":"0.1.3","@99percentpeople/pi-workspace-files":"0.1.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-codex-api_0.2.8_1786199270572_0.9751070797428074","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"@99percentpeople/pi-codex-api","version":"0.2.9","keywords":["pi-package","pi","coding-agent","codex","chatgpt","image-generation","web-search"],"author":{"name":"99percentpeople"},"license":"MIT","_id":"@99percentpeople/pi-codex-api@0.2.9","maintainers":[{"name":"99percentpeople","email":"myzzzyearz@outlook.com"}],"homepage":"https://github.com/99percentpeople/pi-extensions#codex-api","bugs":{"url":"https://github.com/99percentpeople/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./index.min.js"]},"dist":{"shasum":"6d82bd15df60732cffd4316936b9f292d772c031","tarball":"https://registry.npmjs.org/@99percentpeople/pi-codex-api/-/pi-codex-api-0.2.9.tgz","fileCount":6,"integrity":"sha512-N7kwwNhus95MXNnJQKyWhj2tW0I23iAc1ur/D6xj6rtkeD9cgvMaNP+DjRItkoMDWZONJw2rg5yjYQaN66i28Q==","signatures":[{"sig":"MEUCIQDWsPlR8Ba3LhaMQU8StNNzcDpB6PrThNASf5Ac5t1WvQIgNfWkZier1VG+ULM6wTKFTj4w9fx0+ulwYulgvfT+Rgc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@99percentpeople%2fpi-codex-api@0.2.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":289216},"type":"module","gitHead":"5e888a6a889405475c38e6955f2068adee3402d3","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b793f0e1-686d-467c-9bbd-4ca945070b96"}},"repository":{"url":"git+https://github.com/99percentpeople/pi-extensions.git","type":"git","directory":"extensions/codex-api"},"_npmVersion":"11.16.0","description":"Expose Codex subscription image, search, Fast, and usage APIs as native Pi tools and commands","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@99percentpeople/pi-shared-settings":"0.1.3","@99percentpeople/pi-workspace-files":"0.1.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-codex-api_0.2.9_1786328986223_0.26824318533418223","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@99percentpeople/pi-codex-api","version":"0.3.0","keywords":["pi-package","pi","coding-agent","codex","chatgpt","multilingual","second-opinion","image-generation","web-search"],"author":{"name":"99percentpeople"},"license":"MIT","_id":"@99percentpeople/pi-codex-api@0.3.0","maintainers":[{"name":"99percentpeople","email":"myzzzyearz@outlook.com"}],"homepage":"https://github.com/99percentpeople/pi-extensions#codex-api","bugs":{"url":"https://github.com/99percentpeople/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./index.min.js"]},"dist":{"shasum":"aa30ad22e4efba22a4ec0f57648fadfdd432a8e9","tarball":"https://registry.npmjs.org/@99percentpeople/pi-codex-api/-/pi-codex-api-0.3.0.tgz","fileCount":6,"integrity":"sha512-iiBpQKr06Xmr5Qd2NWieJIzyY/UBwiJhkqdBsjALJCDy0Zq8cmxBtlY2Qlgn+BhWEIu5bCz+EIonpyCQXqq3xQ==","signatures":[{"sig":"MEYCIQDadCE3hMX/3HaUY2a6FgZbthaiGeyqI3lWrZQ5OoH0dgIhAOHVivzf3jDNPtLyrimKtsoD1k3T8E9L1+qXZcd+q1bP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@99percentpeople%2fpi-codex-api@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":340566},"type":"module","gitHead":"f9d4d9492fa6b6fabf1b67b508fd30e40b7a6ace","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b793f0e1-686d-467c-9bbd-4ca945070b96"}},"repository":{"url":"git+https://github.com/99percentpeople/pi-extensions.git","type":"git","directory":"extensions/codex-api"},"_npmVersion":"11.17.0","description":"Expose Codex subscription text, vision, image, search, Fast, and usage APIs to Pi","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@99percentpeople/pi-shared-settings":"0.1.3","@99percentpeople/pi-workspace-files":"0.1.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-codex-api_0.3.0_1786521565539_0.20925987628785103","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@99percentpeople/pi-codex-api","version":"0.3.1","keywords":["pi-package","pi","coding-agent","codex","chatgpt","multilingual","second-opinion","image-generation","web-search"],"author":{"name":"99percentpeople"},"license":"MIT","_id":"@99percentpeople/pi-codex-api@0.3.1","maintainers":[{"name":"99percentpeople","email":"myzzzyearz@outlook.com"}],"homepage":"https://github.com/99percentpeople/pi-extensions#codex-api","bugs":{"url":"https://github.com/99percentpeople/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./index.min.js"]},"dist":{"shasum":"9517995122f106182a1b784e662c2c5288b81d46","tarball":"https://registry.npmjs.org/@99percentpeople/pi-codex-api/-/pi-codex-api-0.3.1.tgz","fileCount":6,"integrity":"sha512-qhJEv3gQamsCpA/DXUHPU4TE7tSL3NAwgu9lB6NJWTTDsDJFUI1Tlr8PCrUy/s5T1goLkoNjAxID3OztFXpiNg==","signatures":[{"sig":"MEYCIQCIfTF550Oa8J0hUx9vg7QxrODJ9vZNB20/tSD20kWjYwIhAOd/BMYctV4iMVtycjWPczTnkFp/wVlke5BtHPuW8Fit","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@99percentpeople%2fpi-codex-api@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":346429},"type":"module","gitHead":"3c94e93eda56f4365686ea7f1b9cf9a2102775fd","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b793f0e1-686d-467c-9bbd-4ca945070b96"}},"repository":{"url":"git+https://github.com/99percentpeople/pi-extensions.git","type":"git","directory":"extensions/codex-api"},"_npmVersion":"11.16.0","description":"Expose Codex subscription text, vision, image, search, Fast, and usage APIs to Pi","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@99percentpeople/pi-shared-settings":"0.1.3","@99percentpeople/pi-workspace-files":"0.1.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-codex-api_0.3.1_1786597291356_0.6961416842634212","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@99percentpeople/pi-codex-api","version":"0.3.2","keywords":["pi-package","pi","coding-agent","codex","chatgpt","multilingual","second-opinion","image-generation","web-search"],"author":{"name":"99percentpeople"},"license":"MIT","_id":"@99percentpeople/pi-codex-api@0.3.2","maintainers":[{"name":"99percentpeople","email":"myzzzyearz@outlook.com"}],"homepage":"https://github.com/99percentpeople/pi-extensions#codex-api","bugs":{"url":"https://github.com/99percentpeople/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./index.min.js"]},"dist":{"shasum":"3e71bc027739c679f56b778831f01f9f77fc75dd","tarball":"https://registry.npmjs.org/@99percentpeople/pi-codex-api/-/pi-codex-api-0.3.2.tgz","fileCount":6,"integrity":"sha512-Ncd6Y8xix2epW/g0DhasnGML1BrYmsWUNgzeve3tEnDi7JHzBVUsvJZ6zCrR6AI9x7atlpOJZZJtZ+v6XVIUVA==","signatures":[{"sig":"MEQCIHs4UHptuCTb63VjsBHx0wQOlXH98FzKUhnXK1vt4o/FAiBj6bD2FcdXv86HookWZ1eMygC4RznOHBm6USNBJ7wcLA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@99percentpeople%2fpi-codex-api@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":383159},"type":"module","gitHead":"555160c2730fc23372cd23eaf6f3faaad1d6565f","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b793f0e1-686d-467c-9bbd-4ca945070b96"}},"repository":{"url":"git+https://github.com/99percentpeople/pi-extensions.git","type":"git","directory":"extensions/codex-api"},"_npmVersion":"11.17.0","description":"Expose Codex subscription text, vision, image, search, Fast, and usage APIs to Pi","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-codex-api_0.3.2_1786728458677_0.05401951789180237","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@99percentpeople/pi-codex-api","version":"0.4.0","description":"Expose Codex subscription text, vision, image, search, Fast, and usage APIs to Pi","type":"module","pi":{"extensions":["./index.min.js"],"skills":["./skills"]},"keywords":["pi-package","pi","coding-agent","codex","chatgpt","multilingual","second-opinion","image-generation","web-search"],"author":{"name":"99percentpeople"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/99percentpeople/pi-extensions.git","directory":"extensions/codex-api"},"bugs":{"url":"https://github.com/99percentpeople/pi-extensions/issues"},"homepage":"https://github.com/99percentpeople/pi-extensions#codex-api","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*","@earendil-works/pi-tui":"*","typebox":"*"},"gitHead":"e6af9b0b053a6c773e688928194d7a3db4c00842","_id":"@99percentpeople/pi-codex-api@0.4.0","_nodeVersion":"24.20.0","_npmVersion":"11.19.0","dist":{"integrity":"sha512-nTXG8wVn/isJ8CdDgdC7kUTWWnBraK/btjh77R/JZ+t4OrnLxrpR22mBenotP3PFGUfGKjhGTqQoLgZdk/q0bQ==","shasum":"5780e443214a6d4d9e1f75fe79a7d20399459f64","tarball":"https://registry.npmjs.org/@99percentpeople/pi-codex-api/-/pi-codex-api-0.4.0.tgz","fileCount":6,"unpackedSize":398883,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@99percentpeople%2fpi-codex-api@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDSgEbVBUZB+7ug6dwEinuTD6yW8ikRd2khmm+4rHOt3QIgGPaQZgksn/kPy6xay/1ZFUWgGbcGvk28PyWDbkCz1sg="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b793f0e1-686d-467c-9bbd-4ca945070b96"}},"directories":{},"maintainers":[{"name":"99percentpeople","email":"myzzzyearz@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-codex-api_0.4.0_1788926135655_0.6278955003487312"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-30T03:36:26.832Z","modified":"2026-09-09T03:55:36.061Z","0.1.0":"2026-07-30T03:36:27.161Z","0.1.1":"2026-07-30T03:38:51.358Z","0.1.2":"2026-07-30T04:38:53.215Z","0.1.3":"2026-07-30T07:18:23.518Z","0.1.4":"2026-07-30T11:38:56.573Z","0.2.0":"2026-07-31T12:19:15.447Z","0.2.1":"2026-08-01T05:16:08.774Z","0.2.2":"2026-08-01T13:31:07.934Z","0.2.4":"2026-08-02T17:03:20.264Z","0.2.5":"2026-08-04T02:54:20.882Z","0.2.6":"2026-08-05T02:11:23.755Z","0.2.7":"2026-08-06T02:00:26.229Z","0.2.8":"2026-08-08T14:27:50.738Z","0.2.9":"2026-08-10T02:29:46.383Z","0.3.0":"2026-08-12T07:59:25.683Z","0.3.1":"2026-08-13T05:01:31.511Z","0.3.2":"2026-08-14T17:27:39.823Z","0.4.0":"2026-09-09T03:55:35.788Z"},"bugs":{"url":"https://github.com/99percentpeople/pi-extensions/issues"},"author":{"name":"99percentpeople"},"license":"MIT","homepage":"https://github.com/99percentpeople/pi-extensions#codex-api","keywords":["pi-package","pi","coding-agent","codex","chatgpt","multilingual","second-opinion","image-generation","web-search"],"repository":{"type":"git","url":"git+https://github.com/99percentpeople/pi-extensions.git","directory":"extensions/codex-api"},"description":"Expose Codex subscription text, vision, image, search, Fast, and usage APIs to Pi","maintainers":[{"name":"99percentpeople","email":"myzzzyearz@outlook.com"}],"readme":"# @99percentpeople/pi-codex-api\n\nTurn your ChatGPT subscription into Pi superpowers — multilingual text and\nvision delegation, image generation, web search, Fast mode, and usage\nmonitoring — **no OpenAI API key required**.\n\n## Highlights\n\n- **Ask Codex from any model** — `codex_ask` sends a standalone multilingual\n  text or vision request to a live Codex subscription model. Use it for an\n  explicit Codex second opinion, translation, rewrite, review, or screenshot\n  analysis while DeepSeek, Google, Claude, or another provider remains active.\n- **Tool manager** — one `/99settings` submenu independently switches Search,\n  Image, and Ask Codex On or Off. Disabled model tools disappear from the\n  active prompt immediately.\n- **Answer detail** — `/99settings` can leave Codex verbosity at the model\n  default or override normal Codex replies and `codex_ask` with Low, Medium,\n  or High detail.\n- **Image generation & editing** — `codex_image` creates or edits images via\n  your Codex subscription (default `gpt-image-2.5-flare`), and works from **any model**:\n  even with a third-party provider active (DeepSeek, Google, …), it reuses Pi's\n  logged-in `openai-codex` OAuth account (enable **Other providers** in\n  `/99settings`).\n- **First-party search** — `codex_search` runs web and image queries, page\n  navigation, PDF screenshots, finance, weather, sports, and time lookups, and\n  renders clean result cards instead of raw citations.\n- **Fast mode** — optional priority service tier for snappier responses.\n- **Usage at a glance** — the status bar shows remaining Codex quota and\n  reset time; `/codex-usage` shows your plan, masked account, limits, credits,\n  and earned rate-limit reset cards.\n- **Reset cards** — when you run out of messages, `/codex-redeem` redeems an\n  earned reset card safely: pick a card, confirm, done.\n\n## Demo\n\nSubscription usage, limit-reached state, and reset-card redemption:\n\n![codex usage demo](https://raw.githubusercontent.com/99percentpeople/pi-extensions/master/promo/demo/codex-api.gif)\n\nWeb search with clean result cards (search → open a result → summarize):\n\n![codex search demo](https://raw.githubusercontent.com/99percentpeople/pi-extensions/master/promo/demo/codex-search.gif)\n\nImage generation with `gpt-image-2` (saved PNG + description):\n\n![codex image demo](https://raw.githubusercontent.com/99percentpeople/pi-extensions/master/promo/demo/codex-image.gif)\n\n## Ask Codex\n\n`codex_ask` is deliberately opt-in. The active model should call it only when\nsomeone explicitly asks to consult Codex or requests a Codex second opinion;\nit must not recursively delegate routine work just because Codex is available.\n\nEach call is standalone. Pi does **not** copy the surrounding conversation or\nworkspace into the request automatically, so the tool prompt must contain the\nnecessary context, target language, and output format. Optional controls include:\n\n- an exact `openai-codex` model ID from Pi's existing model list (otherwise the\n  current official ChatGPT Codex default is resolved from its live model catalog);\n- reasoning effort and per-call answer detail;\n- up to five workspace images or recent conversation images for vision;\n- an explicit output-token cap when the default 8,192 tokens is unsuitable.\n\nText calls reuse Pi's model-provider implementation and record their nested LLM\nusage on the tool result. One-off delegated requests use a fresh routing session\nand disable prompt-cache retention. With SSH Remote active, workspace image\ninputs are read through the remote binary file adapter.\n\n## Search output\n\n`codex_search` keeps each result family readable:\n\n- Web and image searches render compact source cards.\n- `open`, `click`, and `find` render grouped document previews; collapsed output\n  shows at most three documents, while expanded output keeps every result.\n- Weather forecasts, finance quotes, sports standings/schedules, and time\n  lookups render structured cards. Weather alert details are reduced to their\n  actionable summaries instead of injecting the provider's full object dump.\n- Structured lookup text is compacted before it reaches the model. Other search\n  output is bounded to 2,000 lines or 50 KB and tells the model to open fewer\n  references if truncation occurs.\n\nFor page workflows, search first and open returned reference IDs. Direct URLs\nare best effort because Codex's browsing backend can reject otherwise valid\nURLs. Keep page-navigation batches to three pages or fewer; `response_length`\nand `open.lineno` do not reliably shorten page bodies.\n\nCurrent Codex backend limitations are surfaced as actionable result hints:\n\n- Weather can become temporarily unavailable even with valid locations; retry\n  once, then fall back to web search rather than looping over modes or locations.\n- Crypto quotes require bare tickers such as `BTC` or `ETH`, not `BTC-USD`.\n- NHL standings are not served by the structured sports lookup.\n- `finance.market` is only a provider hint and does not reliably resolve\n  international exchange listings such as `0700.HK`.\n\nWhen a batched lookup silently omits one item, the extension compares returned\nreference indexes with the request and reports the missing item's applicable\nhint instead of presenting the batch as fully successful.\n\n## Inline citations in assistant replies\n\nOn Pi versions exposing `registerMarkdownTransformer`, the extension formats\nCodex citation markers such as `citeturn1view0` into domain-labelled Markdown\nlinks. URLs come only from `codex_search` results on the active session branch.\nMultiple references are supported; missing or conflicting reference IDs display\nas `[turn1view0]` without inventing a URL. Terminal hyperlink support determines\nwhether links are clickable.\n\nFormatting is display-only: assistant text and thinking are transformed, while\nuser messages, code examples, stored messages, and model context stay unchanged.\nIncomplete trailing citations are hidden during streaming. Source mappings are\nrebuilt on session load and tree navigation. Older Pi versions without the hook\nkeep the original rendering; no private rendering prototypes are patched.\nThis affects Pi's Markdown UI, not external Telegram/Feishu renderers or raw JSON\nexports. Other marker families (image cards, navigation widgets, etc.) are not\nhandled by this citation formatter.\n\n## Quick start\n\n```bash\npi install npm:@99percentpeople/pi-codex-api\n```\n\nRequirements:\n\n- Pi 0.84.1 or newer for `codex_ask`\n- Pi logged in with `/login` for `openai-codex`\n- An active `openai-codex` model, or **Other providers** enabled in\n  `/99settings` to use the subscription from any model\n\nThat's it — just ask *\"generate an image of a neon ramen shop\"* or *\"search\nthe web for today's Rust releases\"* and the model calls the tools for you.\n\nWhen `@99percentpeople/pi-ssh-remote` is active, `codex_image.output_path` and\n`referenced_paths` resolve through `@99percentpeople/pi-workspace-files`\nand its remote binary backend. Generated\nBase64 data is written directly through the remote adapter and references are\nread directly from it, without creating local staging files.\n\n## Commands\n\nThe commands below are registered only after Pi confirms an `openai-codex`\nOAuth login. Sessions that start without Codex login do not show them; login\nand model/auth changes are detected during the session. Pi currently has no\ncommand-unregister API, so after logging out in the same running session use\n`/reload` (or open another session) to remove commands registered earlier.\n\n### `/codex-usage`\n\nShows a fresh snapshot of your subscription in one block:\n\n```text\nCodex usage\n\naccount · Plus (user@example.com)\n\ncodex\n  weekly [█████████████░░░░░░░] 65% left resets in 5d 3h\n  no additional credits\n\nrate limit redeem\n  Full reset (available, expires 2026-08-13 02:14 UTC+8)\n```\n\n- Plan type and masked email from Codex's official usage endpoint\n- Each limit window shows remaining capacity as a bar; when exhausted it reads\n  `limit reached` instead of `0% left`\n- Earned reset cards, sorted by expiry, with local-time expiry timestamps\n- The status bar mirrors this compactly: `Codex weekly 65% 5d 3h` →\n  `Codex weekly limit reached 5d 14h`\n- When a refresh fails the status never stays on the transient\n  `Codex syncing…`: expired/invalid OAuth tokens show `Codex auth expired`\n  (red), other failures keep the last known usage or show `Codex usage unavailable`\n  until the next successful refresh\n\nUsage refreshes automatically on session start, model select, and the configured\nusage-poll interval; `/codex-usage` always forces a fresh read. Between refreshes,\nthe status-bar reset countdown advances locally from the last server timestamp\nonce per minute without making another request. A refresh simply re-synchronizes\nthat timestamp and the usage snapshot. Every usage request is capped at a\n15-second timeout so a stalled backend cannot leave the status bar spinning.\n\n### `/codex-redeem`\n\nRedeems an earned rate-limit reset card when you're out of messages:\n\n```text\n──────────────────────────────────────────────\nSelect a reset credit to redeem (30s)\n\n→ Full reset (expires 2026-08-03)\n  Full reset (expires 2026-08-12)\n\n↑↓ navigate  ↵ select  esc cancel\n──────────────────────────────────────────────\n      ↓ pick a card\n──────────────────────────────────────────────\nRedeem Full reset (expires 2026-08-12)? (30s)\n\n→ No\n  Yes\n\n↑↓ navigate  ↵ select  esc cancel\n──────────────────────────────────────────────\n```\n\n- Multiple cards show a picker (earliest expiry first); a single card skips to\n  confirmation\n- **No is the default**, so a stray Enter never consumes anything\n- Redemptions are idempotent: a retry after a network failure can never consume\n  a second card\n- Without dialog UI, it falls back to a two-step confirm flow\n\n## Settings\n\nConfigure under **Codex API** in `/99settings`:\n\n- **Tools** opens one tool manager where **Search**, **Image**, and **Ask Codex**\n  can each be switched **On** or **Off**. Disabled tools are removed from the active model\n  prompt immediately; stale or concurrently queued calls are rejected before\n  they reach Codex.\n- **Fast mode** remains a direct On/Off setting for the priority service tier.\n- **Usage monitor** remains a direct On/Off setting. Turning it off stops\n  background status refreshes, while explicit `/codex-usage` and\n  `/codex-redeem` commands remain available.\n- **Answer detail** selects model default, Low, Medium, or High verbosity for\n  normal Codex replies and `codex_ask` unless a call overrides it.\n- **Other providers** lets any model (DeepSeek, Google, …) use the logged-in\n  Codex subscription.\n- **Search mode** and **Search context** configure search when its feature is on.\n- **Image model** selects `gpt-image-2.5-flare` (default, fast generation),\n  `gpt-image-2.5-sunburst` (precise editing), or `gpt-image-2` (compatibility).\n  Existing settings without `imageModel` default to Flare. Changes apply on the next call.\n- **Image quality** sets the GPT Image default when its feature is on.\n- **Usage poll** controls the monitor refresh interval when its feature is on.\n\nSettings live in `~/.pi/agent/99extensions.json` under the `codex-api`\nnamespace. Existing configurations migrate with Search, Image, and Ask Codex\nenabled, so upgrading does not remove tools unless you explicitly switch them\noff.\n\n### Images 2.5 availability\n\nOpenAI [announced Images 2.5 on September 8, 2026](https://openai.com/index/introducing-chatgpt-images-2-5/).\nThe model IDs are `gpt-image-2.5-flare` and `gpt-image-2.5-sunburst`, not\n`gpt-image-2.5`. This extension sends the selected ID to the existing Codex\nsubscription generation/edit endpoints, not the public paid Images API.\nThe new IDs have mock request coverage but have not been live-verified here;\naccount availability depends on the Codex rollout. If the backend rejects a\nnew model, select `gpt-image-2` in **Image model**. There is no silent fallback\nor automatic retry that could generate a second image.\n\nThe existing conservative size limits, five-reference limit, and\n`auto`/`low`/`medium`/`high` quality choices are retained for the subscription\nbackend; additional public API options are not assumed to be supported.\nThe bundled prompting skill and demo were originally written for GPT Image 2.\n\n## How it works\n\n- Reuses Pi's existing `openai-codex` OAuth — no API key, no MCP server, no\n  separate search provider\n- Tokens are fetched per call from Pi's model registry, never stored in\n  settings or tool results\n- `codex_ask` uses Pi 0.84+'s authenticated model completion API so OAuth,\n  provider overrides, and request transport stay inside Pi's model registry\n- Text, image, and search requests go to OpenAI's Codex backend and follow your\n  ChatGPT workspace's policies\n- The extension also ships the **`gpt-image-prompts`** skill for crafting\n  production-grade image prompts — invoke it with `/skill:gpt-image-prompts`\n\n## Development\n\n```bash\nbun run build:packages\nbun run --cwd extensions/codex-api build\npi install ./extensions/codex-api\n```\n","readmeFilename":"README.md"}