{"_id":"pi-xai-oauth","_rev":"41-7d2817e2bc4ef8bd95844a3756f54210","name":"pi-xai-oauth","dist-tags":{"latest":"1.6.1"},"versions":{"0.1.0":{"name":"pi-xai-oauth","version":"0.1.0","keywords":["pi-package"],"license":"MIT","_id":"pi-xai-oauth@0.1.0","maintainers":[{"name":"blockedpath","email":"jaytothebar@gmail.com"}],"pi":{"extensions":["./extensions"]},"dist":{"shasum":"6e20cb9fcca135d4510c3ac9e4372dccb631c973","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-0.1.0.tgz","fileCount":3,"integrity":"sha512-fBXE8iH0wFXQ/ZvpZP8fS2hWCWk7sj5Mnfj3w1fZ0T2Yiul2fF9UAI10FTvrlnVOyNhNQk6Zv7UCNRP1Q7mKaA==","signatures":[{"sig":"MEUCIHBEB0gOuN55EMnbzb5gN9ZzuR8DOFz/B8N7GBVK3oOXAiEAwxXgKktAWjeoGAWq6QwHMWHjWYtdyxZizQ5azLdUF4s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4015},"gitHead":"42dce4b87c0e1fd23bac6290492dbb825b384fca","_npmUser":{"name":"blockedpath","email":"jaytothebar@gmail.com"},"_npmVersion":"11.14.1","description":"xAI (Grok) provider with OAuth support for pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_0.1.0_1778972769236_0.7897236782495562","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"pi-xai-oauth","version":"1.0.1","keywords":["pi-package"],"license":"MIT","_id":"pi-xai-oauth@1.0.1","maintainers":[{"name":"blockedpath","email":"jaytothebar@gmail.com"}],"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"dist":{"shasum":"d600475a0e6899f8118c29c1dd8c223321d3755b","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.0.1.tgz","fileCount":4,"integrity":"sha512-MxFFM3uNiuMO9FSOiKYHv33hkbXd8dT26Wskx+/TIcEI9YTlRS+5dDwP/w+GHcfsK2BV3ClMIrVxIF6UlBmTPg==","signatures":[{"sig":"MEUCIGk5uA2R5j8YZhcN6gbc5sv5Hoc9o/3LLyPYmWbk9GHKAiEAnAY2quRHGE2pZh727AfZCxzyU1QaVgOWLFr/k+trxeo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":173886},"gitHead":"70c6303e27e228e03bc9381e2bc2b42a45001441","_npmUser":{"name":"blockedpath","email":"jaytothebar@gmail.com"},"_npmVersion":"11.14.1","description":"xAI (Grok) provider with OAuth support for pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.0.1_1778973218763_0.8025778051408226","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"pi-xai-oauth","version":"1.0.2","keywords":["pi-package"],"license":"MIT","_id":"pi-xai-oauth@1.0.2","maintainers":[{"name":"blockedpath","email":"jaytothebar@gmail.com"}],"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"dist":{"shasum":"0c56cdc9ee218879704858bd049f6e86605116c7","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.0.2.tgz","fileCount":4,"integrity":"sha512-R0HDL4KpasMaOW+juSIEmtbQXrCJ+7JhHQMSDjALLEucDCr5V/KzL5smr6CbEl+F9vlDFj5eFPDF+zVZjXh65A==","signatures":[{"sig":"MEUCIQCD6jiArenkqcmJ46MCJmi1bDY4FaqgSJIEqlNYq4qEzgIgLlqdI6wy3hE/bJC7ubSLik6EqZzTTth/ehd6Xtngt4M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":174243},"gitHead":"0b249d8ec4c9a572b634fc62757b76cb391208a5","_npmUser":{"name":"blockedpath","email":"jaytothebar@gmail.com"},"_npmVersion":"11.14.1","description":"xAI (Grok) provider with OAuth support for pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.0.2_1778973531408_0.18800544233905514","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"pi-xai-oauth","version":"1.0.3","keywords":["pi-package"],"license":"MIT","_id":"pi-xai-oauth@1.0.3","maintainers":[{"name":"blockedpath","email":"jaytothebar@gmail.com"}],"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"dist":{"shasum":"9223ecb4ff6a74cfc38445b725b6b2fc049a62b1","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.0.3.tgz","fileCount":4,"integrity":"sha512-pfQSiwM2JUuboKCgcBQtQ6Q7+A7K/mSNnjCBbdtXq7R0cbLEcbLM+ZzI22g2HEOiBJmUxEUNay3RXQLE8bLWtQ==","signatures":[{"sig":"MEUCIQCjrDo7iHjcjpF/Vgib2KNSeHwNs9DysIG8V8BXfkT+9QIgJB/qR+RdHOkvOCuZbK/sJj3rq1KCKw9UgDKThSTFGmY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":175175},"gitHead":"bc00b3e06f6057564c81576b42a070c4f02ee47f","_npmUser":{"name":"blockedpath","email":"jaytothebar@gmail.com"},"_npmVersion":"11.14.1","description":"xAI (Grok) provider with OAuth support for pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.0.3_1778973662894_0.27099902026172473","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"pi-xai-oauth","version":"1.0.7","keywords":["pi-package"],"license":"MIT","_id":"pi-xai-oauth@1.0.7","maintainers":[{"name":"blockedpath","email":"jaytothebar@gmail.com"}],"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"dist":{"shasum":"682d00fa0e0080d1bb6f6c69cfdcce24f84d24e9","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.0.7.tgz","fileCount":4,"integrity":"sha512-02A3BuOktZpM3QO6fKIxzMlX5OBSt2SwumSk8AI3gO/2YHHHHyhtgDSNU6i8ccwVWFzTqfzLAc8b4aOCuWs6sQ==","signatures":[{"sig":"MEYCIQDKSMt6EpkvxF/foDxKNSMtKUvK7j73hdB7l10Nfr6uMQIhAOVfJVtS83pUw+sgx7K/Ej3n6ywUxSFOIwcTBwaFuVOa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":181037},"gitHead":"ebefa16e8142124bf8258e070fb3aef86287bfb8","_npmUser":{"name":"blockedpath","email":"jaytothebar@gmail.com"},"_npmVersion":"11.14.1","description":"xAI (Grok) provider with OAuth support for pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.0.7_1778974118890_0.24942343508380094","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"pi-xai-oauth","version":"1.0.9","keywords":["pi-package"],"license":"MIT","_id":"pi-xai-oauth@1.0.9","maintainers":[{"name":"blockedpath","email":"jaytothebar@gmail.com"}],"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"dist":{"shasum":"d439c855f584cb2b03911e4f1b7eb1c02336f52c","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.0.9.tgz","fileCount":4,"integrity":"sha512-/gbSoTUCdcioWW4OxroVcMSidirMoAr93DI+KW6gdAEGPZEFAkKCnQItDTxwhRx8t/H0DxQDvSBq//wPJwSoRw==","signatures":[{"sig":"MEYCIQCJHYbGMOo9UU8H3t5+bZvuaMiFay1bflQzfok1w/juPgIhAPetdIEefTMBiOTaJm2owsN9dRrBLjECw3T1bFQxVdxe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":182659},"gitHead":"5c6424e2f535a2e6e11b57ec9b0fd7b8d5328f45","_npmUser":{"name":"blockedpath","email":"jaytothebar@gmail.com"},"_npmVersion":"11.14.1","description":"xAI (Grok) provider with OAuth support for pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.0.9_1778974324457_0.7064256176892034","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"pi-xai-oauth","version":"1.0.12","keywords":["pi-package"],"license":"MIT","_id":"pi-xai-oauth@1.0.12","maintainers":[{"name":"blockedpath","email":"jaytothebar@gmail.com"}],"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"dist":{"shasum":"50465cd0f617d31c0228a7939945c16458098e0b","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.0.12.tgz","fileCount":5,"integrity":"sha512-9YCMZH+FoQIX9Ktw57qosIlH2q3ankZvftz+VzugxOPk0rimtLOFN1vNL6c96rjh7nmq4KiwQ6Skv2fYoo5smA==","signatures":[{"sig":"MEQCIHz/mlmJzO8PZtSVapcSnf+72N5xh/l/XWoJ81Nxn97zAiB99PNG6TZfC6e9HxwtNXIqArNQN3TYNOKhZKJCG/hIoQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":179781},"gitHead":"a854071a3037ebb3222f3174ecae05dc436c24f5","_npmUser":{"name":"blockedpath","email":"jaytothebar@gmail.com"},"_npmVersion":"11.14.1","description":"xAI (Grok) provider with OAuth support for pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.8.0"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.0.12_1778976182737_0.44388216700136884","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"pi-xai-oauth","version":"1.0.13","keywords":["pi-package"],"license":"MIT","_id":"pi-xai-oauth@1.0.13","maintainers":[{"name":"blockedpath","email":"jaytothebar@gmail.com"}],"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"dist":{"shasum":"65142c8ea668f1baec63f9579074c2ec49789918","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.0.13.tgz","fileCount":5,"integrity":"sha512-4vEERbGv3uLURnzW4V5XW99sIqEaAbUwkD2lFvI4JdXQSeX+enSVhUMVvYFAu6niDuBhSuP5gItMPwKnOgqoZA==","signatures":[{"sig":"MEQCIFcrBJghgit2QPpESxgD5WXrSyZTQs4YhDs+MlGJeFzjAiBcezL7OTBC65+sE4M2GzKWMijHb2Kek8y1JYexX1BVkQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":179512},"gitHead":"8af4957c9e79930f488c25de89c9fe47deadccba","_npmUser":{"name":"blockedpath","email":"jaytothebar@gmail.com"},"_npmVersion":"11.14.1","description":"xAI (Grok) provider with OAuth support for pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.8.0"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.0.13_1778981311569_0.1841444148225968","host":"s3://npm-registry-packages-npm-production"}},"1.0.14":{"name":"pi-xai-oauth","version":"1.0.14","keywords":["pi-package"],"license":"MIT","_id":"pi-xai-oauth@1.0.14","maintainers":[{"name":"blockedpath","email":"jaytothebar@gmail.com"}],"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"dist":{"shasum":"1245f5b59d94ba4ceff42b3ad31de14a09a70178","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.0.14.tgz","fileCount":5,"integrity":"sha512-wjF1pzZt8dvzVTT8kjB90NiSi56g8IOVran/1mVC2jNqKI+FJI/zAEEORzxcepFP7uQ0LLAZ0Nu/SEj3OaJ3Gw==","signatures":[{"sig":"MEQCIB1F+B4tyOeHTQtLJ8palI+dAh5PubOX4Y1qeuOzdjacAiBRSczm82erFm6vBo7Qa0FvscaORCUAm7MtTSBo1sORRg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":193814},"gitHead":"94360d90217747556afadcd74e6d01dafccf236e","_npmUser":{"name":"blockedpath","email":"jaytothebar@gmail.com"},"_npmVersion":"11.14.1","description":"xAI (Grok) provider with OAuth support for pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.8.0"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.0.14_1778989699409_0.7082571425368609","host":"s3://npm-registry-packages-npm-production"}},"1.0.15":{"name":"pi-xai-oauth","version":"1.0.15","keywords":["pi-package"],"license":"MIT","_id":"pi-xai-oauth@1.0.15","maintainers":[{"name":"blockedpath","email":"jaytothebar@gmail.com"}],"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"dist":{"shasum":"bb6bd634f57646731a4c09808ae047d316202ec7","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.0.15.tgz","fileCount":5,"integrity":"sha512-gBi3TN9UpLXlcX9QaHnaQp4xY+ctkvl09J5z+TYN420f2GC3LB6ftcXbMj03G78VmuVmVMqDQLawxnXR0CSX3g==","signatures":[{"sig":"MEQCIE2rkglAXe0n/u9n/HJ/tljx28yZUkOOqGk1SY4aQbbwAiBduYPm4CYx0Y9VuD90qgEIdIsVmARW6scQBitDie1rTA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":193814},"gitHead":"5f5b7e74d7bf0a0997bd61a450886cbe935cb6da","_npmUser":{"name":"blockedpath","email":"jaytothebar@gmail.com"},"_npmVersion":"11.14.1","description":"xAI (Grok) provider with OAuth support for pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.8.0"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.0.15_1778989761179_0.9515343206338134","host":"s3://npm-registry-packages-npm-production"}},"1.0.17":{"name":"pi-xai-oauth","version":"1.0.17","keywords":["pi-package","xai","grok","oauth"],"license":"MIT","_id":"pi-xai-oauth@1.0.17","maintainers":[{"name":"blockedpath","email":"jaytothebar@gmail.com"}],"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"bin":{"pi-xai-oauth":"bin/setup.js"},"dist":{"shasum":"f4e5834ba3ab34181684f3cd9512c7d4bb0c5d83","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.0.17.tgz","fileCount":6,"integrity":"sha512-O1YI4ec0Zd+eqw6Qzqm3Ebx1SOHNdck43QFZgtRWXVF0/PNHngF2+7bu1H0w9rB2NPgXeJWfjeMeHgwX0qmEmQ==","signatures":[{"sig":"MEQCIDHBAbr9+hqqQHlbLysa4Jm6+bUZAGdGoKDjl8mpCZ0zAiApuJ1t+Pu/ZftIIPGLvVml2b2sQ06f+7TiRVF494BWQw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":202646},"gitHead":"5f5b7e74d7bf0a0997bd61a450886cbe935cb6da","_npmUser":{"name":"blockedpath","email":"jaytothebar@gmail.com"},"_npmVersion":"11.14.1","description":"One-command installer for xAI (Grok) OAuth provider + Grok 4.3 in pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.8.0"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.0.17_1778991339871_0.24164425820604163","host":"s3://npm-registry-packages-npm-production"}},"1.0.19":{"name":"pi-xai-oauth","version":"1.0.19","keywords":["pi-package","xai","grok","oauth"],"license":"MIT","_id":"pi-xai-oauth@1.0.19","maintainers":[{"name":"blockedpath","email":"jaytothebar@gmail.com"}],"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"bin":{"pi-xai-oauth":"bin/setup.js"},"dist":{"shasum":"db5092bb71bc9d7ea0cd15ab440f7b0a790d4164","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.0.19.tgz","fileCount":6,"integrity":"sha512-2s3IOfSw0rIFCfzJ0nsiGl3V5SYTp6lxBbGodvHJMYNvERinoLEzrM4Ns6f7wvsWWlfBkouTbGnUhB1Zxx2Tsg==","signatures":[{"sig":"MEUCIQDrw6N1duVj0vxUCqfcTqKcVmI/ZY4CYShSdDEMdcgriwIgFHMl9+Hb59dLQJD2XkyYtkkMbA9JzUn0du8bovxO4vA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":202962},"gitHead":"a28d4ba90646e2ed8d127fd5b430cd95c6d20680","_npmUser":{"name":"blockedpath","email":"jaytothebar@gmail.com"},"_npmVersion":"11.14.1","description":"One-command installer for xAI (Grok) OAuth provider + Grok 4.3 in pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.8.0"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.0.19_1778992028271_0.2910685870789156","host":"s3://npm-registry-packages-npm-production"}},"1.0.20":{"name":"pi-xai-oauth","version":"1.0.20","keywords":["pi-package","xai","grok","oauth"],"license":"MIT","_id":"pi-xai-oauth@1.0.20","maintainers":[{"name":"blockedpath","email":"jaytothebar@gmail.com"}],"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"bin":{"pi-xai-oauth":"bin/setup.js"},"dist":{"shasum":"3de30b2feb080a7552e3dea0c64e06f10b9e9930","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.0.20.tgz","fileCount":6,"integrity":"sha512-nk2vQasfQP42pAoBKM3WTJ7+eEajvZlwGGyaFywCznzJVf4gLMJEAoACXrDI0Vmg48wcpK20CTpNmAauN/G6hA==","signatures":[{"sig":"MEUCIChdmRdCZTnDIHQ9mdTTFiqDLvAVFNsqhO5P+PL/kD7VAiEArAS5XOAfVMft4mw+CW7N+Kln/da1VmCixkkNfyTdKb4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":202962},"gitHead":"529e6062cac6442a15e04d37efb071556913e5f3","_npmUser":{"name":"blockedpath","email":"jaytothebar@gmail.com"},"_npmVersion":"11.14.1","description":"One-command installer for xAI (Grok) OAuth provider + Grok 4.3 in pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.8.0"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.0.20_1778992307525_0.3592384564148199","host":"s3://npm-registry-packages-npm-production"}},"1.0.21":{"name":"pi-xai-oauth","version":"1.0.21","keywords":["pi-package","xai","grok","oauth"],"license":"MIT","_id":"pi-xai-oauth@1.0.21","maintainers":[{"name":"blockedpath","email":"jaytothebar@gmail.com"}],"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"bin":{"pi-xai-oauth":"bin/setup.js"},"dist":{"shasum":"c44f4d2a01928f984fad620af6fcdc92dab59fde","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.0.21.tgz","fileCount":6,"integrity":"sha512-Zeh80DEe0FDGlmZWjCMYDOtRHa8K5cf+idHCDv/GVDjkqwtAO5y84GkZexjAyw8Ek6TsnC0OV1VcO69JjJzkxg==","signatures":[{"sig":"MEQCIEsS1VuIAcPkAhIiUFiqR6wK5Uh7ryXrufs5oCBblntkAiACcQXCOq0eGXREh8nk4wN49P/QZXeiKMMfPR7+YKbpLA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":210390},"gitHead":"367c4fa542b7efd91397c226a628232e70da0d94","_npmUser":{"name":"blockedpath","email":"jaytothebar@gmail.com"},"_npmVersion":"11.14.1","description":"One-command installer for xAI (Grok) OAuth provider + Grok 4.3 in pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.8.0"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.0.21_1778994032221_0.5082273353698856","host":"s3://npm-registry-packages-npm-production"}},"1.0.22":{"name":"pi-xai-oauth","version":"1.0.22","keywords":["pi-package","xai","grok","oauth"],"license":"MIT","_id":"pi-xai-oauth@1.0.22","maintainers":[{"name":"blockedpath","email":"jaytothebar@gmail.com"}],"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"bin":{"pi-xai-oauth":"bin/setup.js"},"dist":{"shasum":"509cd26bd98c0fd8b0056480b5033ee336073d0e","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.0.22.tgz","fileCount":6,"integrity":"sha512-xm4fVbxcd1mWxVg0SmUQHUrNNHyP0CiW55iA8ZJtjgke7et91fK1O7Ti9qMWzdckUXZrh7+I0JE5str/r99l0g==","signatures":[{"sig":"MEUCIQDPlwfa2eNFxQ7pDQNANc+2RKvutz7frC5v/YXZw1175wIgQI1ItCpcnsyNV12Nl6/h1EvOT9hxTDPhaoPpbtn7m2g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":212623},"gitHead":"46b60afb14bc66da9739b7dfb1ccd523c84861ca","_npmUser":{"name":"blockedpath","email":"jaytothebar@gmail.com"},"_npmVersion":"11.14.1","description":"One-command installer for xAI (Grok) OAuth provider + Grok 4.3 in pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.8.0"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.0.22_1778995452502_0.3166323347342468","host":"s3://npm-registry-packages-npm-production"}},"1.0.25":{"name":"pi-xai-oauth","version":"1.0.25","keywords":["pi-package","xai","grok","oauth"],"license":"MIT","_id":"pi-xai-oauth@1.0.25","maintainers":[{"name":"blockedpath","email":"jaytothebar@gmail.com"}],"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"bin":{"pi-xai-oauth":"bin/setup.js"},"dist":{"shasum":"f8723e6e848875216ea952f057db42d3522b53f4","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.0.25.tgz","fileCount":11,"integrity":"sha512-yRZG5NYiUmB4N18pMa7OCSXymlkoW7OK+J/Gsa3cEQc2RmqntSiJKV/xMFeF4NNw6+e+wxsQ6aqqc+pfnvAwqw==","signatures":[{"sig":"MEUCIGpLRU16bhZU1QZounNjDyWeQVUmqpaJYWEgxMDMxdKZAiEA+RVe7OxpfGB1JQtkg0WQMbgws5FysruuTVKamiQh9lk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":239727},"gitHead":"9df5ab00e5bfffa4c20c6d591839021077375857","scripts":{"setup":"node bin/setup.js","scaffold":"node bin/setup.js --scaffold"},"_npmUser":{"name":"blockedpath","email":"jaytothebar@gmail.com"},"_npmVersion":"11.14.1","description":"One-command installer for xAI (Grok) OAuth provider + Grok 4.3 in pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.8.0"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.0.25_1779026462461_0.19569885958167554","host":"s3://npm-registry-packages-npm-production"}},"1.0.26":{"name":"pi-xai-oauth","version":"1.0.26","keywords":["pi-package","xai","grok","oauth"],"license":"MIT","_id":"pi-xai-oauth@1.0.26","maintainers":[{"name":"blockedpath","email":"jaytothebar@gmail.com"}],"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"bin":{"pi-xai-oauth":"bin/setup.js"},"dist":{"shasum":"608582cf136a6e408b72548d7746de6f8a516e3a","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.0.26.tgz","fileCount":19,"integrity":"sha512-auL4eL00u8ue9DDjBWbT8F4ISMdJNFiYrDz6ExKPqsNNZdFYIAPAbXnOKMLSlm/bjNXEs/l++NUEC8f/XjLjEA==","signatures":[{"sig":"MEYCIQCewru+eOaYiHrW081xs2L0nXe6mGsAvXmwevD+HDwXkwIhAMBcH3QlnSpNoOhc80jwufRQtayao/Y7DKDlANvZjhJb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":265064},"gitHead":"4c444ef67fb1b58f9980731f434905eaa17bbb17","scripts":{"setup":"node bin/setup.js","scaffold":"node bin/setup.js --scaffold"},"_npmUser":{"name":"blockedpath","email":"jaytothebar@gmail.com"},"_npmVersion":"11.14.1","description":"One-command installer for xAI (Grok) OAuth provider + Grok 4.3 in pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.8.0"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.0.26_1779031815166_0.3069458539252248","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"pi-xai-oauth","version":"1.2.0","keywords":["pi-package","xai","grok","oauth"],"license":"MIT","_id":"pi-xai-oauth@1.2.0","maintainers":[{"name":"blockedpath","email":"jaytothebar@gmail.com"}],"homepage":"https://github.com/BlockedPath/pi-xai-oauth#readme","bugs":{"url":"https://github.com/BlockedPath/pi-xai-oauth/issues"},"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"bin":{"pi-xai-oauth":"bin/setup.js"},"dist":{"shasum":"b6db7d503b5f1e9cd85303a022baf8087f3c8a9d","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.2.0.tgz","fileCount":19,"integrity":"sha512-SInzvGdYue7neThI/jBWe0/g546gdp9fKTot1JXrgVL7Soeu5klXOCuPwDWT+9tsQKNHQDczGl/i3ZAroyaVzQ==","signatures":[{"sig":"MEQCIBgVRGq3bryl9uoPVmEyfo2UZfjl3Tcy0ISL3q5xLgSHAiAdbjoBTN7WOeR3vCqLicg7jCLts8preKEcuLPpaDZiQw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":266246},"gitHead":"1faecc2ea970aea33e3df1440849f66692681c40","scripts":{"setup":"node bin/setup.js","scaffold":"node bin/setup.js --scaffold"},"_npmUser":{"name":"blockedpath","email":"jaytothebar@gmail.com"},"repository":{"url":"git+https://github.com/BlockedPath/pi-xai-oauth.git","type":"git"},"_npmVersion":"11.14.1","description":"One-command installer for xAI (Grok) OAuth provider + Grok 4.3 in pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.8.0"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.2.0_1779048544721_0.03057328051144692","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"pi-xai-oauth","version":"1.2.1","keywords":["pi-package","xai","grok","oauth"],"license":"MIT","_id":"pi-xai-oauth@1.2.1","maintainers":[{"name":"blockedpath","email":"jaytothebar@gmail.com"}],"homepage":"https://github.com/BlockedPath/pi-xai-oauth#readme","bugs":{"url":"https://github.com/BlockedPath/pi-xai-oauth/issues"},"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"bin":{"pi-xai-oauth":"bin/setup.js"},"dist":{"shasum":"7d802a318b51d2fd53dff9d1baf0a490e5e26cb2","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.2.1.tgz","fileCount":19,"integrity":"sha512-LKYOoFyQOCqSn6dfxzwpKLBbd+U6rk7RLtNf3tW70ZfVBy1v6VUcvfWUTH7iZ7FlWXkZfFc60mP24Yugg5K1QA==","signatures":[{"sig":"MEUCIQC5cMOo/4yGMhTGyOcZ9nlS0j92JolRqp+h5+fyL0OgHAIgeAXShmw5GA1S1cAql5Jt7iu6U0WIIl0Ab2paOFN1NNE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":266395},"gitHead":"1faecc2ea970aea33e3df1440849f66692681c40","scripts":{"setup":"node bin/setup.js","scaffold":"node bin/setup.js --scaffold"},"_npmUser":{"name":"blockedpath","email":"jaytothebar@gmail.com"},"repository":{"url":"git+https://github.com/BlockedPath/pi-xai-oauth.git","type":"git"},"_npmVersion":"11.14.1","description":"One-command installer for xAI (Grok) OAuth provider + Grok 4.3 in pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.8.0"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.2.1_1779048788215_0.5238095153088762","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"pi-xai-oauth","version":"1.2.2","keywords":["pi-package","xai","grok","oauth"],"license":"MIT","_id":"pi-xai-oauth@1.2.2","maintainers":[{"name":"blockedredemption","email":"jaytothebar@gmail.com"}],"homepage":"https://github.com/BlockedPath/pi-xai-oauth#readme","bugs":{"url":"https://github.com/BlockedPath/pi-xai-oauth/issues"},"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"bin":{"pi-xai-oauth":"bin/setup.js"},"dist":{"shasum":"88f77cc45f1be8df322af3b6295b02d9203e055e","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.2.2.tgz","fileCount":34,"integrity":"sha512-5LfJGLbS2IaGauTUluDytSWcmVKEWsdA3/rWONCmSph0cuQjuKZbOcreVI68ht+KE+U+3FHlRh53chAowF5Aeg==","signatures":[{"sig":"MEYCIQDCY5raMYyQje6gXVatAWEs9isf5Pj5RgMWtHOEC20XrwIhAJd3HTeVD6sETgVXRKp8tfKQAK0vIDkboqDEI+C3Tnnj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":325732},"gitHead":"343016930bf6dabbee42821469c61f548a78482f","scripts":{"test":"node scripts/verify-extension.js","setup":"node bin/setup.js","scaffold":"node bin/setup.js --scaffold","typecheck":"npx tsc --noEmit"},"_npmUser":{"name":"blockedredemption","email":"jaytothebar@gmail.com"},"repository":{"url":"git+https://github.com/BlockedPath/pi-xai-oauth.git","type":"git"},"_npmVersion":"11.14.1","description":"One-command installer for xAI OAuth provider + Grok, Grok Build, and Composer models in pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^25.8.0"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.2.2_1780569418452_0.4266931205615041","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"name":"pi-xai-oauth","version":"1.2.3","keywords":["pi-package","xai","grok","oauth"],"license":"MIT","_id":"pi-xai-oauth@1.2.3","maintainers":[{"name":"blockedredemption","email":"jaytothebar@gmail.com"}],"homepage":"https://github.com/BlockedPath/pi-xai-oauth#readme","bugs":{"url":"https://github.com/BlockedPath/pi-xai-oauth/issues"},"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"bin":{"pi-xai-oauth":"bin/setup.js"},"dist":{"shasum":"925bd2e8bd436489e60fa5ff366faeb37cb705b2","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.2.3.tgz","fileCount":34,"integrity":"sha512-84Uf8pNLMy/FSrUjN3gBAJQe1CLAF+I2wu2Ayl6k0ihbevQ/s6GCR5aHaYNLHTpMnZZUqXzGL2KNOrFwawCdyA==","signatures":[{"sig":"MEYCIQCAyWGSEMRolR+Gu3R/EDk4lY1NuleyobxowbtSi/1A8gIhAJ7Q1ZA97ILufdRJIweEWq4Yu2plX6bjKPGzlTgxtK/g","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":329438},"gitHead":"7e33a24105265d31e39ceac8d26ec24b10578e0b","scripts":{"test":"node scripts/verify-extension.js","setup":"node bin/setup.js","scaffold":"node bin/setup.js --scaffold","typecheck":"npx tsc --noEmit"},"_npmUser":{"name":"blockedredemption","email":"jaytothebar@gmail.com"},"repository":{"url":"git+https://github.com/BlockedPath/pi-xai-oauth.git","type":"git"},"_npmVersion":"11.14.1","description":"One-command installer for xAI OAuth provider + Grok, Grok Build, and Composer models in pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^25.8.0"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.2.3_1780591599100_0.6776253895095625","host":"s3://npm-registry-packages-npm-production"}},"1.2.4":{"name":"pi-xai-oauth","version":"1.2.4","keywords":["pi-package","xai","grok","oauth"],"license":"MIT","_id":"pi-xai-oauth@1.2.4","maintainers":[{"name":"blockedredemption","email":"jaytothebar@gmail.com"}],"homepage":"https://github.com/BlockedPath/pi-xai-oauth#readme","bugs":{"url":"https://github.com/BlockedPath/pi-xai-oauth/issues"},"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"bin":{"pi-xai-oauth":"bin/setup.js"},"dist":{"shasum":"e27ca7fa72c21b2ace20f7bffce15f3866b66598","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.2.4.tgz","fileCount":31,"integrity":"sha512-ON/Qomno0EAAkCi2z9TjwqC0GLiuGWWbevvuaDFLOb9AHSoaJpri2mbPMe/nha0I9Wn25L7l1VZcXgTtXK63eg==","signatures":[{"sig":"MEUCIQD/F+TROXHg7jCQ40JEkBhLnmfV+rrHDujFo/cfANtejAIgCv5Dg4Y1JG7fAz8QL8h6Jfvlas6WTRqz+xOqfkjSlyc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":334233},"gitHead":"36303aea2cd2a21169d0f4517dbb7fe117a37930","scripts":{"test":"node scripts/verify-extension.js","setup":"node bin/setup.js","scaffold":"node bin/setup.js --scaffold","typecheck":"npx tsc --noEmit"},"_npmUser":{"name":"blockedredemption","email":"jaytothebar@gmail.com"},"repository":{"url":"git+https://github.com/BlockedPath/pi-xai-oauth.git","type":"git"},"_npmVersion":"11.14.1","description":"One-command installer for xAI OAuth provider + Grok, Grok Build, and Composer models in pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","typescript":"^6.0.3","@types/node":"^25.8.0","@earendil-works/pi-ai":"^0.79.8","@earendil-works/pi-coding-agent":"^0.79.8"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.2.4_1781921260495_0.24086890568085262","host":"s3://npm-registry-packages-npm-production"}},"1.2.5":{"name":"pi-xai-oauth","version":"1.2.5","keywords":["pi-package","xai","grok","oauth"],"license":"MIT","_id":"pi-xai-oauth@1.2.5","maintainers":[{"name":"blockedredemption","email":"jaytothebar@gmail.com"}],"homepage":"https://github.com/BlockedPath/pi-xai-oauth#readme","bugs":{"url":"https://github.com/BlockedPath/pi-xai-oauth/issues"},"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"bin":{"pi-xai-oauth":"bin/setup.js"},"dist":{"shasum":"40335062e0d6b2ef91f4ede549705f6f267728c3","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.2.5.tgz","fileCount":31,"integrity":"sha512-1X5pceoQIjgyr60EKaw0AEJu0E+wvcmceXNO9ICkmqq/30rudkmYD1YhkQgsK+8WJXbjB97rfb6UcduvBH+uSQ==","signatures":[{"sig":"MEUCIHT88dEfXwshQPmltGuej6COJ3LhhFX6Q1VWrLq+2t3aAiEA5DxRInr+iNnv7uG6Xh8DdTv9tJ1PwXEDyKh1sSwX/WY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":334536},"gitHead":"c7f7b33a0186f82639d7ab00c92060a683c447c3","scripts":{"test":"node scripts/verify-extension.js","setup":"node bin/setup.js","scaffold":"node bin/setup.js --scaffold","typecheck":"npx tsc --noEmit"},"_npmUser":{"name":"blockedredemption","email":"jaytothebar@gmail.com"},"repository":{"url":"git+https://github.com/BlockedPath/pi-xai-oauth.git","type":"git"},"_npmVersion":"11.14.1","description":"One-command installer for xAI OAuth provider + Grok, Grok Build, and Composer models in pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","typescript":"^6.0.3","@types/node":"^26.0.0","@earendil-works/pi-ai":"^0.79.8","@earendil-works/pi-coding-agent":"^0.79.8"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.2.5_1781934088426_0.7897554458281892","host":"s3://npm-registry-packages-npm-production"}},"1.2.6":{"name":"pi-xai-oauth","version":"1.2.6","keywords":["pi-package","xai","grok","oauth"],"license":"MIT","_id":"pi-xai-oauth@1.2.6","maintainers":[{"name":"blockedredemption","email":"jaytothebar@gmail.com"}],"homepage":"https://github.com/BlockedPath/pi-xai-oauth#readme","bugs":{"url":"https://github.com/BlockedPath/pi-xai-oauth/issues"},"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"bin":{"pi-xai-oauth":"bin/setup.js"},"dist":{"shasum":"bec8c368ad0ff5244257935d55031cedd5fee159","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.2.6.tgz","fileCount":31,"integrity":"sha512-Sy0EOUNUlvkedAiWwpOJHDY7wAy2oqfcMk/UlTrzhnBDs30IGb0effTCFf21wFGhChkDUN3cEoWNCkO5kcS7Rg==","signatures":[{"sig":"MEYCIQCHRiRwdyav9rhSNHeXjzcBcFjpBwWV0eLlrwnk5o2m8gIhAIPV3newKcFdKlNbJdPvOHVuz4PH00XGbHlb4GU9bjdz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":337080},"gitHead":"050782090b1a9bd68f93a3053ee77202d55831a7","scripts":{"test":"node scripts/verify-extension.js","setup":"node bin/setup.js","scaffold":"node bin/setup.js --scaffold","typecheck":"npx tsc --noEmit"},"_npmUser":{"name":"blockedredemption","email":"jaytothebar@gmail.com"},"repository":{"url":"git+https://github.com/BlockedPath/pi-xai-oauth.git","type":"git"},"_npmVersion":"11.18.0","description":"One-command installer for xAI OAuth provider + Grok, Grok Build, and Composer models in pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","typescript":"^6.0.3","@types/node":"^26.0.0","@earendil-works/pi-ai":"^0.79.8","@earendil-works/pi-coding-agent":"^0.79.8"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.2.6_1783448041531_0.21406496103273476","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"pi-xai-oauth","version":"1.3.0","keywords":["pi-package","xai","grok","oauth"],"license":"MIT","_id":"pi-xai-oauth@1.3.0","maintainers":[{"name":"blockedredemption","email":"jaytothebar@gmail.com"}],"homepage":"https://github.com/BlockedPath/pi-xai-oauth#readme","bugs":{"url":"https://github.com/BlockedPath/pi-xai-oauth/issues"},"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"bin":{"pi-xai-oauth":"bin/setup.js"},"dist":{"shasum":"ae6fffea4d60e4f9592a4c5392a931dcd0a1d12c","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.3.0.tgz","fileCount":31,"integrity":"sha512-GPbL4Nj7hNUzSQS/uNNtyFg3+uWNLJ6dSV0JNReFAI5Y65DpOqyBPbtpgyuouBArw8o+hEIcUK+S72idiIyVhQ==","signatures":[{"sig":"MEUCIQCvLJg2HPX+4iLMQ8YgUI+o2xcOItUpu6/fxoBLZ46TjgIgKD0kpXBcsT8J9YtC87Ot32hTJj6tW4CAI3wHPvm5+RA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":345644},"gitHead":"00db405bb1c34cc092ebef9cebe251a166b84924","scripts":{"test":"node scripts/verify-extension.js","setup":"node bin/setup.js","scaffold":"node bin/setup.js --scaffold","typecheck":"npx tsc --noEmit"},"_npmUser":{"name":"blockedredemption","email":"jaytothebar@gmail.com"},"repository":{"url":"git+https://github.com/BlockedPath/pi-xai-oauth.git","type":"git"},"_npmVersion":"11.18.0","description":"One-command installer for xAI OAuth provider + Grok 4.5, Grok Build, and Composer models in pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","typescript":"^6.0.3","@types/node":"^26.0.0","@earendil-works/pi-ai":"^0.80.3","@earendil-works/pi-coding-agent":"^0.80.3"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.3.0_1783540152297_0.3186696855418356","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"pi-xai-oauth","version":"1.3.1","keywords":["pi-package","xai","grok","oauth"],"license":"MIT","_id":"pi-xai-oauth@1.3.1","maintainers":[{"name":"blockedredemption","email":"jaytothebar@gmail.com"}],"homepage":"https://github.com/BlockedPath/pi-xai-oauth#readme","bugs":{"url":"https://github.com/BlockedPath/pi-xai-oauth/issues"},"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"bin":{"pi-xai-oauth":"bin/setup.js"},"dist":{"shasum":"3aadc9c5a9783e512acfb96787ed8181246a489a","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.3.1.tgz","fileCount":32,"integrity":"sha512-x6m+EpFgOacwCnc8hsCn3taQ8xCJ3RVDNX6BA7F/T7k98blwcXoyLzp/gZiezJnESnWncYLnLE5FuCtc7ZskKw==","signatures":[{"sig":"MEYCIQDFktqQS2VLsx3ZoGbSk2N2ie8M6w/Da6UTQtI8xes9CgIhAIStI9mnKC3b3CaxU4w6Vd+bIZltaNEWSsCHobNEoYNC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":351546},"gitHead":"f148c61d0438dd96947a13ac92fcf6f2362bc767","scripts":{"test":"node scripts/verify-extension.js && node scripts/verify-setup.js","setup":"node bin/setup.js","scaffold":"node bin/setup.js --scaffold","typecheck":"npx tsc --noEmit"},"_npmUser":{"name":"blockedredemption","email":"jaytothebar@gmail.com"},"repository":{"url":"git+https://github.com/BlockedPath/pi-xai-oauth.git","type":"git"},"_npmVersion":"11.18.0","description":"One-command installer for xAI OAuth provider + Grok 4.5, Grok Build, and Composer models in pi","directories":{},"_nodeVersion":"22.22.3","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","typescript":"^6.0.3","@types/node":"^26.0.0","@earendil-works/pi-ai":"^0.80.3","@earendil-works/pi-coding-agent":"^0.80.3"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.3.1_1783583223160_0.4655829250861847","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"pi-xai-oauth","version":"1.3.2","keywords":["pi-package","xai","grok","oauth"],"license":"MIT","_id":"pi-xai-oauth@1.3.2","maintainers":[{"name":"blockedredemption","email":"jaytothebar@gmail.com"}],"homepage":"https://github.com/BlockedPath/pi-xai-oauth#readme","bugs":{"url":"https://github.com/BlockedPath/pi-xai-oauth/issues"},"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"bin":{"pi-xai-oauth":"bin/setup.js"},"dist":{"shasum":"6de91d73bfcbdb0ddd223d8a2350b4b27b10d49f","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.3.2.tgz","fileCount":32,"integrity":"sha512-s3y83isbwWOEFZrZ8wjLE7NpYcHV2mgKvLjPzAMLAXAxzmIn13igAjuubqc6347THxLWRcL5keWUTvzZUtj9KQ==","signatures":[{"sig":"MEUCIEox9p0fswvv0QILEfE/pQECsfHOpYu2jG+lKX7+Q3nPAiEAxo1eX8AcGhvsp6EDAUVNSQ7sfiZePvgVKW0VEyGgask=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":353513},"gitHead":"8326bb40b32fe9052cb2c3bf1fadf54e7dd92bac","scripts":{"test":"node scripts/verify-extension.js && node scripts/verify-setup.js","setup":"node bin/setup.js","scaffold":"node bin/setup.js --scaffold","typecheck":"npx tsc --noEmit"},"_npmUser":{"name":"blockedredemption","email":"jaytothebar@gmail.com"},"repository":{"url":"git+https://github.com/BlockedPath/pi-xai-oauth.git","type":"git"},"_npmVersion":"11.18.0","description":"One-command installer for xAI OAuth provider + Grok 4.5, Grok Build, and Composer models in pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","typescript":"^6.0.3","@types/node":"^26.0.0","@earendil-works/pi-ai":"^0.80.3","@earendil-works/pi-coding-agent":"^0.80.3"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.3.2_1783732099971_0.542401997535328","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"pi-xai-oauth","version":"1.3.3","keywords":["pi-package","xai","grok","oauth"],"license":"MIT","_id":"pi-xai-oauth@1.3.3","maintainers":[{"name":"blockedredemption","email":"jaytothebar@gmail.com"}],"homepage":"https://github.com/BlockedPath/pi-xai-oauth#readme","bugs":{"url":"https://github.com/BlockedPath/pi-xai-oauth/issues"},"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"bin":{"pi-xai-oauth":"bin/setup.js"},"dist":{"shasum":"20d1848f637b43413534b59e43a6c5de5b2cd84f","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.3.3.tgz","fileCount":32,"integrity":"sha512-S0JVoFPo+zla31+3Xkeyx+pHRHXXDLaYyy4Omg67bMfYrCbFa3BHcNQKzrlROzDiZuSUwBp42yoF6WcHNr7Biw==","signatures":[{"sig":"MEUCIQDZPbdHXQeRPTcFkuCzmm6jCbpkLaDNod2nVGOi9OUysAIgfwC5KWccvudbFbz8wYhtJ6fanzXpdMBohwwHR7XlHF4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":353807},"gitHead":"4b29d7905f986eee0f947381c80ca6bc795dc8b4","scripts":{"test":"node scripts/verify-extension.js && node scripts/verify-setup.js","setup":"node bin/setup.js","scaffold":"node bin/setup.js --scaffold","typecheck":"npx tsc --noEmit"},"_npmUser":{"name":"blockedredemption","email":"jaytothebar@gmail.com"},"repository":{"url":"git+https://github.com/BlockedPath/pi-xai-oauth.git","type":"git"},"_npmVersion":"11.18.0","description":"One-command installer for xAI OAuth provider + Grok 4.5, Grok Build, and Composer models in pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","typescript":"^6.0.3","@types/node":"^26.0.0","@earendil-works/pi-ai":"^0.80.3","@earendil-works/pi-coding-agent":"^0.80.3"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.3.3_1783757035090_0.03278467220174952","host":"s3://npm-registry-packages-npm-production"}},"1.3.4":{"name":"pi-xai-oauth","version":"1.3.4","keywords":["pi-package","xai","grok","oauth"],"license":"MIT","_id":"pi-xai-oauth@1.3.4","maintainers":[{"name":"blockedredemption","email":"jaytothebar@gmail.com"}],"homepage":"https://github.com/BlockedPath/pi-xai-oauth#readme","bugs":{"url":"https://github.com/BlockedPath/pi-xai-oauth/issues"},"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"bin":{"pi-xai-oauth":"bin/setup.js"},"dist":{"shasum":"3ccd9c74cb944db6438159849fbe3587a003bfde","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.3.4.tgz","fileCount":34,"integrity":"sha512-1/mCIua0QMlEwL3CpIuFoNS5BPA7ctT+yURsLFt7VY31U6KWsByzlZZZMBvAtvjEKwoZ/WchlSdoWRMtxa7J+Q==","signatures":[{"sig":"MEUCIEZo2yqAFaW3RDurFHMHsn8IsZRP4rTR61juduX33fI2AiEAyx+gQfkxwdSgIbT/k84+evFZWbXS6nqTdIaTVpltkwk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":408647},"gitHead":"1f8004b80eb1fddbecf60c5e1ace98fc24d9f5e9","scripts":{"test":"node scripts/verify-extension.js && node scripts/verify-setup.js","setup":"node bin/setup.js","scaffold":"node bin/setup.js --scaffold","typecheck":"npx tsc --noEmit"},"_npmUser":{"name":"blockedredemption","email":"jaytothebar@gmail.com"},"repository":{"url":"git+https://github.com/BlockedPath/pi-xai-oauth.git","type":"git"},"_npmVersion":"12.0.1","description":"One-command installer for xAI OAuth provider + Grok 4.5, Grok Build, and Composer models in pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","typescript":"^6.0.3","@types/node":"^26.0.0","@earendil-works/pi-ai":"^0.80.3","@earendil-works/pi-coding-agent":"^0.80.3"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.3.4_1784135683307_0.006691550228190568","host":"s3://npm-registry-packages-npm-production"}},"1.3.5":{"name":"pi-xai-oauth","version":"1.3.5","keywords":["pi-package","xai","grok","oauth"],"license":"MIT","_id":"pi-xai-oauth@1.3.5","maintainers":[{"name":"blockedredemption","email":"jaytothebar@gmail.com"}],"homepage":"https://github.com/BlockedPath/pi-xai-oauth#readme","bugs":{"url":"https://github.com/BlockedPath/pi-xai-oauth/issues"},"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"bin":{"pi-xai-oauth":"bin/setup.js"},"dist":{"shasum":"cce9065f0cb2c8f30ee99b4d864d04afeecdc4bd","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.3.5.tgz","fileCount":34,"integrity":"sha512-Gzwr3bwQn3O/KtupsmJPPUIah0KBfi7Wfjwy5I/ZaFnj/yA24vwdEVff42b+/l7iX+HynrGOKLFOA6m4K0jEcg==","signatures":[{"sig":"MEQCIDkcCiTHwlkctM5EZ4kzH7w34if2+z37mAYnzZ0XUWe7AiAryNzf3/PrZvO29aZjIF4ClVn08JUeQi5GvL6r6EZ7iQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":414025},"gitHead":"a14af457304f6f7d9db2012a086b1876a9524f81","scripts":{"test":"node scripts/verify-extension.js && node scripts/verify-setup.js","setup":"node bin/setup.js","scaffold":"node bin/setup.js --scaffold","typecheck":"npx tsc --noEmit"},"_npmUser":{"name":"blockedredemption","email":"jaytothebar@gmail.com"},"repository":{"url":"git+https://github.com/BlockedPath/pi-xai-oauth.git","type":"git"},"_npmVersion":"12.0.1","description":"One-command installer for xAI OAuth provider + Grok 4.5, Grok Build, and Composer models in pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","typescript":"^7.0.2","@types/node":"^26.0.0","@earendil-works/pi-ai":"^0.80.3","@earendil-works/pi-coding-agent":"^0.80.3"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.3.5_1784137055078_0.3782675629074743","host":"s3://npm-registry-packages-npm-production"}},"1.3.6":{"name":"pi-xai-oauth","version":"1.3.6","keywords":["pi-package","xai","grok","oauth"],"license":"MIT","_id":"pi-xai-oauth@1.3.6","maintainers":[{"name":"blockedredemption","email":"jaytothebar@gmail.com"}],"homepage":"https://github.com/BlockedPath/pi-xai-oauth#readme","bugs":{"url":"https://github.com/BlockedPath/pi-xai-oauth/issues"},"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"bin":{"pi-xai-oauth":"bin/setup.js"},"dist":{"shasum":"9be8a35c320fb709235e09445683edafad76227b","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.3.6.tgz","fileCount":113,"integrity":"sha512-Qv/sKKuUeIq1XmmKXpqw5ZNS0QgDaTe/3MCaF7D5LAvM/m+MDuu2+cTyaKYfZImjcOieKPhZtPiTA1d+QXNWKA==","signatures":[{"sig":"MEUCIQDTsyuNnoG7BKN/Kt4sK+3L8KmLmd37CcdlSahhIG/BBAIgWg3WP3HmtLMOnfLh7A24DvFR0LpyS1dmZiRaus3R/Vc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":998313},"gitHead":"024c42f88e17762d7deaf106bc1200c6b8b6f22c","scripts":{"test":"node scripts/verify-compatibility.js policy && npm run test:unit && npm run test:loader","setup":"node bin/setup.js","scaffold":"node bin/setup.js --scaffold","test:unit":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest","test:loader":"node scripts/verify-extension-loader.mjs","test:coverage":"vitest run --coverage","compatibility:min":"node scripts/run-compatibility-matrix.js minimum","compatibility:check":"node scripts/verify-compatibility.js all","compatibility:latest":"node scripts/run-compatibility-matrix.js latest","compatibility:boundaries":"npm run compatibility:min && npm run compatibility:latest"},"_npmUser":{"name":"blockedredemption","email":"jaytothebar@gmail.com"},"repository":{"url":"git+https://github.com/BlockedPath/pi-xai-oauth.git","type":"git"},"_npmVersion":"12.0.1","description":"xAI OAuth provider with an authenticated account-specific Grok model catalog for pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","vitest":"4.1.10","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"4.1.10","@earendil-works/pi-ai":"0.80.10","@earendil-works/pi-coding-agent":"0.80.10"},"peerDependencies":{"@earendil-works/pi-ai":">=0.80.1 <0.81.0","@earendil-works/pi-coding-agent":">=0.80.1 <0.81.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.3.6_1784384756912_0.33988502497546635","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"pi-xai-oauth","version":"1.4.0","keywords":["pi-package","xai","grok","oauth"],"license":"MIT","_id":"pi-xai-oauth@1.4.0","maintainers":[{"name":"blockedredemption","email":"jaytothebar@gmail.com"}],"homepage":"https://github.com/BlockedPath/pi-xai-oauth#readme","bugs":{"url":"https://github.com/BlockedPath/pi-xai-oauth/issues"},"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"bin":{"pi-xai-oauth":"bin/setup.js"},"dist":{"shasum":"317a97b27b9b48037fc9e4623cb84bcd4d4b6b4d","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.4.0.tgz","fileCount":192,"integrity":"sha512-VkvNeSSq77Xn/iBS+9XwP3+YyKSLNye5QXBE2O2o3LhmphOrD0vuI6aq2diXHVDSOMzUpQ2W8duHBeUoZCLAzA==","signatures":[{"sig":"MEUCIDxhGRzMZawzHaZ/LTfzdxISBYCTHrAed0x9BhK3KxZTAiEA3Qy4+vwmuhKMPHOEd2Y9XWV+3k2gIEWYgFulcggK79k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1436659},"gitHead":"347c14883cf811ee63c8a430636f0d43d60a1f89","scripts":{"test":"node scripts/verify-compatibility.js policy && npm run test:unit && npm run test:loader","setup":"node bin/setup.js","scaffold":"node bin/setup.js --scaffold","test:unit":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest","test:loader":"node scripts/verify-extension-loader.mjs","test:coverage":"vitest run --coverage","compatibility:min":"node scripts/run-compatibility-matrix.js minimum","compatibility:check":"node scripts/verify-compatibility.js all","compatibility:latest":"node scripts/run-compatibility-matrix.js latest","compatibility:boundaries":"npm run compatibility:min && npm run compatibility:latest"},"_npmUser":{"name":"blockedredemption","email":"jaytothebar@gmail.com"},"repository":{"url":"git+https://github.com/BlockedPath/pi-xai-oauth.git","type":"git"},"_npmVersion":"12.0.1","description":"xAI OAuth provider with an authenticated account-specific Grok model catalog for pi","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","vitest":"4.1.10","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"4.1.10","@earendil-works/pi-ai":"0.81.1","@earendil-works/pi-coding-agent":"0.81.1"},"peerDependencies":{"@earendil-works/pi-ai":">=0.80.1 <0.82.0","@earendil-works/pi-coding-agent":">=0.80.1 <0.82.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.4.0_1784826517671_0.2711599733413905","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"pi-xai-oauth","version":"1.4.1","keywords":["pi-package","xai","grok","oauth"],"license":"MIT","_id":"pi-xai-oauth@1.4.1","maintainers":[{"name":"blockedredemption","email":"jaytothebar@gmail.com"}],"homepage":"https://github.com/BlockedPath/pi-xai-oauth#readme","bugs":{"url":"https://github.com/BlockedPath/pi-xai-oauth/issues"},"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"bin":{"pi-xai-oauth":"bin/setup.js"},"dist":{"shasum":"ff7b8bd0b54cb57b762c7b135fd2594fedb1db6d","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.4.1.tgz","fileCount":135,"integrity":"sha512-Pe9hca0p6kDPTQn5FZyLoZl+slUnRiXKNxhWsowIWfql4tvyuIYS9TAniw8Ld3dDJwWSCnURBVN6ZD/bTXmuZw==","signatures":[{"sig":"MEUCICewnntKKlCpg3qMoHRgQUL/JHA+1jTO+xKU4kLPHxwEAiEAgH5WHo0fAPPTLuwGaxvKVUSffu22ElqC/JL8Uc3mlGA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-xai-oauth@1.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1324304},"gitHead":"3fefb8f7bb85aef615d0dd72c6f0fb66273c19cd","scripts":{"test":"node scripts/verify-compatibility.js policy && npm run test:unit && npm run test:loader","setup":"node bin/setup.js","scaffold":"node bin/setup.js --scaffold","test:unit":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest","test:loader":"node scripts/verify-extension-loader.mjs","test:coverage":"vitest run --coverage","compatibility:min":"node scripts/run-compatibility-matrix.js minimum","compatibility:check":"node scripts/verify-compatibility.js all","compatibility:latest":"node scripts/run-compatibility-matrix.js latest","compatibility:boundaries":"npm run compatibility:min && npm run compatibility:latest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a2672d77-80e4-4bb6-8a6b-efe5401cd59e"}},"overrides":{"protobufjs":"^7.6.5","brace-expansion":"^5.0.8","@napi-rs/wasm-runtime":"^1.2.0"},"repository":{"url":"git+https://github.com/BlockedPath/pi-xai-oauth.git","type":"git"},"_npmVersion":"11.6.2","description":"xAI OAuth provider with an authenticated account-specific Grok model catalog for pi","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","vitest":"4.1.10","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"4.1.10","@earendil-works/pi-ai":"0.84.1","@earendil-works/pi-coding-agent":"0.84.1"},"peerDependencies":{"@earendil-works/pi-ai":">=0.80.1 <0.85.0","@earendil-works/pi-coding-agent":">=0.80.1 <0.85.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.4.1_1786299365665_0.8379880576673346","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"pi-xai-oauth","version":"1.4.2","keywords":["pi-package","xai","grok","oauth"],"license":"MIT","_id":"pi-xai-oauth@1.4.2","maintainers":[{"name":"blockedredemption","email":"jaytothebar@gmail.com"}],"homepage":"https://github.com/BlockedPath/pi-xai-oauth#readme","bugs":{"url":"https://github.com/BlockedPath/pi-xai-oauth/issues"},"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"bin":{"pi-xai-oauth":"bin/setup.js"},"dist":{"shasum":"3335a978d9cfdd93338492e17bf36c7ce7856d24","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.4.2.tgz","fileCount":138,"integrity":"sha512-mbU/4hX6JZWGcTrUFXkF49Rr0ksvfGjoki5XnzHrXHBc1a7Fvb7HH/F9rLN2B2kxZ+GsHcFRjIO3vQNBS9KS0Q==","signatures":[{"sig":"MEUCIQDBMb6MvyJEmEmgCenUegvVHUt+GNggXD4XQgvoUX8Z/AIgNVDczU2PNg0VBXCF/SN682bw8uoCizY9CAJOcUQ8n7A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-xai-oauth@1.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1342228},"_from":"file:/home/runner/work/_temp/release/pi-xai-oauth-1.4.2.tgz","scripts":{"test":"node scripts/verify-compatibility.js policy && npm run test:unit && npm run test:loader","setup":"node bin/setup.js","scaffold":"node bin/setup.js --scaffold","test:unit":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest","test:loader":"node scripts/verify-extension-loader.mjs","test:coverage":"vitest run --coverage","compatibility:min":"node scripts/run-compatibility-matrix.js minimum","compatibility:check":"node scripts/verify-compatibility.js all && node scripts/verify-github-package.js","compatibility:latest":"node scripts/run-compatibility-matrix.js latest","compatibility:boundaries":"npm run compatibility:min && npm run compatibility:latest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a2672d77-80e4-4bb6-8a6b-efe5401cd59e"}},"_resolved":"/home/runner/work/_temp/release/pi-xai-oauth-1.4.2.tgz","overrides":{"protobufjs":"^7.6.5","brace-expansion":"^5.0.8","@napi-rs/wasm-runtime":"^1.2.0"},"_integrity":"sha512-mbU/4hX6JZWGcTrUFXkF49Rr0ksvfGjoki5XnzHrXHBc1a7Fvb7HH/F9rLN2B2kxZ+GsHcFRjIO3vQNBS9KS0Q==","repository":{"url":"git+https://github.com/BlockedPath/pi-xai-oauth.git","type":"git"},"_npmVersion":"11.6.2","description":"xAI OAuth provider with an authenticated account-specific Grok model catalog for pi","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","vitest":"4.1.10","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"4.1.10","@earendil-works/pi-ai":"0.84.1","@earendil-works/pi-coding-agent":"0.84.1"},"peerDependencies":{"@earendil-works/pi-ai":">=0.80.1 <0.85.0","@earendil-works/pi-coding-agent":">=0.80.1 <0.85.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.4.2_1786302353195_0.694239809949206","host":"s3://npm-registry-packages-npm-production"}},"1.4.3":{"name":"pi-xai-oauth","version":"1.4.3","keywords":["pi-package","xai","grok","oauth"],"license":"MIT","_id":"pi-xai-oauth@1.4.3","maintainers":[{"name":"blockedredemption","email":"jaytothebar@gmail.com"}],"homepage":"https://github.com/BlockedPath/pi-xai-oauth#readme","bugs":{"url":"https://github.com/BlockedPath/pi-xai-oauth/issues"},"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"bin":{"pi-xai-oauth":"bin/setup.js"},"dist":{"shasum":"cc739145dcee87e15be6628c74d8d537611e15b7","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.4.3.tgz","fileCount":139,"integrity":"sha512-Cj0GM7HyP0qEK/8FcBu5bxar4TU2tYszt8oHLgThFiewizH2ATaZ4avQDJz3jaXfqhaGl8jYuQLJEu9AwMRKag==","signatures":[{"sig":"MEQCIF8nmJK91+KpdwValrnGX5baMY1GhVeUiEGREQG8C5EXAiBYIKR3rER5ctfspW7smJYg1m8B93Zn7SLDzmICpOHOgw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-xai-oauth@1.4.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1346858},"_from":"file:/home/runner/work/_temp/release/pi-xai-oauth-1.4.3.tgz","scripts":{"test":"node scripts/verify-compatibility.js policy && npm run test:unit && npm run test:loader","setup":"node bin/setup.js","scaffold":"node bin/setup.js --scaffold","test:unit":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest","test:loader":"node scripts/verify-extension-loader.mjs","test:coverage":"vitest run --coverage","compatibility:min":"node scripts/run-compatibility-matrix.js minimum","compatibility:check":"node scripts/verify-compatibility.js all && node scripts/verify-github-package.js","compatibility:latest":"node scripts/run-compatibility-matrix.js latest","compatibility:boundaries":"npm run compatibility:min && npm run compatibility:latest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a2672d77-80e4-4bb6-8a6b-efe5401cd59e"}},"_resolved":"/home/runner/work/_temp/release/pi-xai-oauth-1.4.3.tgz","overrides":{"protobufjs":"^7.6.5","brace-expansion":"^5.0.8","@napi-rs/wasm-runtime":"^1.2.0"},"_integrity":"sha512-Cj0GM7HyP0qEK/8FcBu5bxar4TU2tYszt8oHLgThFiewizH2ATaZ4avQDJz3jaXfqhaGl8jYuQLJEu9AwMRKag==","repository":{"url":"git+https://github.com/BlockedPath/pi-xai-oauth.git","type":"git"},"_npmVersion":"11.6.2","description":"xAI OAuth provider with an authenticated account-specific Grok model catalog for pi","directories":{},"_nodeVersion":"24.19.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","vitest":"4.1.10","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"4.1.10","@earendil-works/pi-ai":"0.84.1","@earendil-works/pi-coding-agent":"0.84.1"},"peerDependencies":{"@earendil-works/pi-ai":">=0.80.1 <0.85.0","@earendil-works/pi-coding-agent":">=0.80.1 <0.85.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.4.3_1786504004335_0.5780143396550013","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"pi-xai-oauth","version":"1.5.0","keywords":["pi-package","xai","grok","oauth"],"license":"MIT","_id":"pi-xai-oauth@1.5.0","maintainers":[{"name":"blockedredemption","email":"jaytothebar@gmail.com"}],"homepage":"https://github.com/BlockedPath/pi-xai-oauth#readme","bugs":{"url":"https://github.com/BlockedPath/pi-xai-oauth/issues"},"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"bin":{"pi-xai-oauth":"bin/setup.js"},"dist":{"shasum":"3ca62bdf433f599c6f49920b759e02e4142564ae","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.5.0.tgz","fileCount":139,"integrity":"sha512-sJBVYRu6UNE6pOAALLVvYphWGHbDyTN5XWmFYa46UcmU9jXvS31HgFK5Ww3lnZ7B7+oy25HsFerXdh4NXoWA1Q==","signatures":[{"sig":"MEQCICzYfxXogzw621GVwJadNApRIHLwdd3oBZg4VM0170yNAiB6z7OjQQATJS/vYUXDDihdP+uhtpPhEpIrKEKgIsIQjA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-xai-oauth@1.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1352649},"_from":"file:/home/runner/work/_temp/release/pi-xai-oauth-1.5.0.tgz","scripts":{"test":"node scripts/verify-compatibility.js policy && npm run test:unit && npm run test:loader","setup":"node bin/setup.js","scaffold":"node bin/setup.js --scaffold","test:unit":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest","test:loader":"node scripts/verify-extension-loader.mjs","test:coverage":"vitest run --coverage","compatibility:min":"node scripts/run-compatibility-matrix.js minimum","compatibility:check":"node scripts/verify-compatibility.js all && node scripts/verify-github-package.js","compatibility:latest":"node scripts/run-compatibility-matrix.js latest","compatibility:boundaries":"npm run compatibility:min && npm run compatibility:latest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a2672d77-80e4-4bb6-8a6b-efe5401cd59e"}},"_resolved":"/home/runner/work/_temp/release/pi-xai-oauth-1.5.0.tgz","overrides":{"protobufjs":"^7.6.5","brace-expansion":"^5.0.8","@napi-rs/wasm-runtime":"^1.2.0"},"_integrity":"sha512-sJBVYRu6UNE6pOAALLVvYphWGHbDyTN5XWmFYa46UcmU9jXvS31HgFK5Ww3lnZ7B7+oy25HsFerXdh4NXoWA1Q==","repository":{"url":"git+https://github.com/BlockedPath/pi-xai-oauth.git","type":"git"},"_npmVersion":"11.6.2","description":"xAI OAuth provider with an authenticated account-specific Grok model catalog for pi","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","vitest":"4.1.10","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"4.1.10","@earendil-works/pi-ai":"0.84.1","@earendil-works/pi-coding-agent":"0.84.1"},"peerDependencies":{"@earendil-works/pi-ai":">=0.80.1 <0.85.0","@earendil-works/pi-coding-agent":">=0.80.1 <0.85.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.5.0_1786551369064_0.6540106099345786","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"pi-xai-oauth","version":"1.5.1","keywords":["pi-package","xai","grok","oauth"],"license":"MIT","_id":"pi-xai-oauth@1.5.1","maintainers":[{"name":"blockedredemption","email":"jaytothebar@gmail.com"}],"homepage":"https://github.com/BlockedPath/pi-xai-oauth#readme","bugs":{"url":"https://github.com/BlockedPath/pi-xai-oauth/issues"},"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"bin":{"pi-xai-oauth":"bin/setup.js"},"dist":{"shasum":"00f24f4bfe8fc9933f3d69884bf6b11c0bd10df9","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.5.1.tgz","fileCount":142,"integrity":"sha512-m5FW69X4AP76d1kSrhVZM908H8rdKpXifL56v0CSIfn1v7W7FJNlZy9QhbwTT62KEkx3761+i1WE39rryS61yw==","signatures":[{"sig":"MEUCIB0QedOPKmZEstffvBfM2tSQhQS67Hxuc4YbmBndQ6ogAiEAz8ntS6uBHOp3Xt7KP2QH1sjmf8BlRrbuXlajDJef/fE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-xai-oauth@1.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1409467},"_from":"file:/home/runner/work/_temp/release/pi-xai-oauth-1.5.1.tgz","scripts":{"test":"node scripts/verify-compatibility.js policy && npm run test:unit && npm run test:loader","setup":"node bin/setup.js","scaffold":"node bin/setup.js --scaffold","test:unit":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest","test:loader":"node scripts/verify-extension-loader.mjs","test:coverage":"vitest run --coverage","compatibility:min":"node scripts/run-compatibility-matrix.js minimum","compatibility:check":"node scripts/verify-compatibility.js all && node scripts/verify-github-package.js","compatibility:latest":"node scripts/run-compatibility-matrix.js latest","compatibility:boundaries":"npm run compatibility:min && npm run compatibility:latest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a2672d77-80e4-4bb6-8a6b-efe5401cd59e"}},"_resolved":"/home/runner/work/_temp/release/pi-xai-oauth-1.5.1.tgz","overrides":{"protobufjs":"^7.6.5","brace-expansion":"^5.0.8","@napi-rs/wasm-runtime":"^1.2.0"},"_integrity":"sha512-m5FW69X4AP76d1kSrhVZM908H8rdKpXifL56v0CSIfn1v7W7FJNlZy9QhbwTT62KEkx3761+i1WE39rryS61yw==","repository":{"url":"git+https://github.com/BlockedPath/pi-xai-oauth.git","type":"git"},"_npmVersion":"11.6.2","description":"xAI OAuth provider with an authenticated account-specific Grok model catalog for pi","directories":{},"_nodeVersion":"24.19.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","vitest":"4.1.10","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"4.1.10","@earendil-works/pi-ai":"0.84.2","@earendil-works/pi-coding-agent":"0.84.2"},"peerDependencies":{"@earendil-works/pi-ai":">=0.80.1 <0.85.0","@earendil-works/pi-coding-agent":">=0.80.1 <0.85.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.5.1_1787312855548_0.6904615106478056","host":"s3://npm-registry-packages-npm-production"}},"1.5.2":{"name":"pi-xai-oauth","version":"1.5.2","keywords":["pi-package","xai","grok","oauth"],"license":"MIT","_id":"pi-xai-oauth@1.5.2","maintainers":[{"name":"blockedredemption","email":"jaytothebar@gmail.com"}],"homepage":"https://github.com/BlockedPath/pi-xai-oauth#readme","bugs":{"url":"https://github.com/BlockedPath/pi-xai-oauth/issues"},"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"bin":{"pi-xai-oauth":"bin/setup.js"},"dist":{"shasum":"48cf539a655049149f0ffe995e7c10ab2ee2f248","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.5.2.tgz","fileCount":144,"integrity":"sha512-Cq21gwGGJZzvTM5izT/o+eqXj9p8L5v0dxpi0E0fNyRQQii+bci1NSze1oEvCbhLWhArTxIgwfKOjnNG1t6msA==","signatures":[{"sig":"MEQCIBhm9jPqIH2HJZJxTCLGCnsanP763ydCTqIy25cmMTDnAiBRL7+FqiEYzx57v2Wp4XGIbzY0deuHmUlHHiZX6VERZg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-xai-oauth@1.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1438848},"_from":"file:/home/runner/work/_temp/release/pi-xai-oauth-1.5.2.tgz","scripts":{"test":"node scripts/verify-compatibility.js policy && npm run test:unit && npm run test:loader","setup":"node bin/setup.js","scaffold":"node bin/setup.js --scaffold","test:unit":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest","test:loader":"node scripts/verify-extension-loader.mjs","test:coverage":"vitest run --coverage","compatibility:min":"node scripts/run-compatibility-matrix.js minimum","compatibility:check":"node scripts/verify-compatibility.js all && node scripts/verify-github-package.js","compatibility:latest":"node scripts/run-compatibility-matrix.js latest","compatibility:boundaries":"npm run compatibility:min && npm run compatibility:latest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a2672d77-80e4-4bb6-8a6b-efe5401cd59e"}},"_resolved":"/home/runner/work/_temp/release/pi-xai-oauth-1.5.2.tgz","overrides":{"protobufjs":"^7.6.5","brace-expansion":"^5.0.8","@napi-rs/wasm-runtime":"^1.2.0"},"_integrity":"sha512-Cq21gwGGJZzvTM5izT/o+eqXj9p8L5v0dxpi0E0fNyRQQii+bci1NSze1oEvCbhLWhArTxIgwfKOjnNG1t6msA==","repository":{"url":"git+https://github.com/BlockedPath/pi-xai-oauth.git","type":"git"},"_npmVersion":"11.6.2","description":"xAI OAuth provider with an authenticated account-specific Grok model catalog for pi","directories":{},"_nodeVersion":"24.19.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","vitest":"4.1.11","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"4.1.11","@earendil-works/pi-ai":"0.84.2","@earendil-works/pi-coding-agent":"0.84.2"},"peerDependencies":{"@earendil-works/pi-ai":">=0.80.1 <0.85.0","@earendil-works/pi-coding-agent":">=0.80.1 <0.85.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.5.2_1787465579790_0.876108556190675","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"pi-xai-oauth","version":"1.6.0","keywords":["pi-package","xai","grok","oauth"],"license":"MIT","_id":"pi-xai-oauth@1.6.0","maintainers":[{"name":"blockedredemption","email":"jaytothebar@gmail.com"}],"homepage":"https://github.com/BlockedPath/pi-xai-oauth#readme","bugs":{"url":"https://github.com/BlockedPath/pi-xai-oauth/issues"},"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"bin":{"pi-xai-oauth":"bin/setup.js"},"dist":{"shasum":"f6ed9034522dda20a444542c3f224af8b667ae7f","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.6.0.tgz","fileCount":159,"integrity":"sha512-1I/wJamrqs0RleOAyV+sA8xdi2fhPrB4uvGgqkyX4gtYrlLFQCABO3+hDPWjh8InxGBPVEEuzGt6xPAC5ptTig==","signatures":[{"sig":"MEUCIGE4WCt5EXQqAL3yin89KaA4nPOp40FZvJ3/DHtvusv9AiEAq7hbfvajWgnB9Svb3K5K4jOQbbej9uBbUGrB4efjZjE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDQyTwHXb/f/ngeW4m73dZkP6EFC5inSsOeeMf+S0KLpAIgdumZtW1wBgoi0mPBWIAgDT9Hxm8X/ri/fnk3T700oPk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-xai-oauth@1.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1522268},"_from":"file:/home/runner/work/_temp/release/pi-xai-oauth-1.6.0.tgz","scripts":{"test":"node scripts/verify-compatibility.js policy && npm run test:unit && npm run test:loader","setup":"node bin/setup.js","scaffold":"node bin/setup.js --scaffold","test:unit":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest","test:loader":"node scripts/verify-extension-loader.mjs","test:coverage":"vitest run --coverage","compatibility:min":"node scripts/run-compatibility-matrix.js minimum","compatibility:check":"node scripts/verify-compatibility.js all && node scripts/verify-github-package.js","compatibility:latest":"node scripts/run-compatibility-matrix.js latest","compatibility:boundaries":"npm run compatibility:min && npm run compatibility:latest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a2672d77-80e4-4bb6-8a6b-efe5401cd59e"}},"_resolved":"/home/runner/work/_temp/release/pi-xai-oauth-1.6.0.tgz","overrides":{"protobufjs":"^7.6.5","brace-expansion":"^5.0.8","@napi-rs/wasm-runtime":"^1.2.0"},"_integrity":"sha512-1I/wJamrqs0RleOAyV+sA8xdi2fhPrB4uvGgqkyX4gtYrlLFQCABO3+hDPWjh8InxGBPVEEuzGt6xPAC5ptTig==","repository":{"url":"git+https://github.com/BlockedPath/pi-xai-oauth.git","type":"git"},"_npmVersion":"11.6.2","description":"xAI OAuth provider with an authenticated account-specific Grok model catalog for pi","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","vitest":"5.0.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"5.0.0","@earendil-works/pi-ai":"0.86.1","@earendil-works/pi-coding-agent":"0.86.1"},"peerDependencies":{"@earendil-works/pi-ai":">=0.80.1 <0.85.0 || >=0.85.1 <0.87.0","@earendil-works/pi-coding-agent":">=0.80.1 <0.85.0 || >=0.85.1 <0.87.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-xai-oauth_1.6.0_1790024325819_0.8635113239205858","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"pi":{"image":"https://raw.githubusercontent.com/BlockedPath/pi-xai-oauth/main/preview.jpeg","extensions":["./extensions"]},"_id":"pi-xai-oauth@1.6.1","bin":{"pi-xai-oauth":"bin/setup.js"},"bugs":{"url":"https://github.com/BlockedPath/pi-xai-oauth/issues"},"dist":{"shasum":"d73cf3ce7d2344885bf54c3faa25b69beec0ba28","tarball":"https://registry.npmjs.org/pi-xai-oauth/-/pi-xai-oauth-1.6.1.tgz","fileCount":163,"integrity":"sha512-kBdatfv9yA9KPWWlLPbAVqXHOER/FuIX++/bXamVB/CW5g/hFe3qUlJGDtmqbZPOUDGd2C79/DcL/qGaI/4kmw==","signatures":[{"sig":"MEQCIDsv7p4p6KACtE/cl9NZn1xMqh5kElHxH2HwRkKcbUOuAiAQsVSfOA44yUi9l+A+5rJGrI6PAXsgxE4RGVYLItqGYw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCv1PvjCiqOSyUKkpeS9GOtV+Kkf4drych134wLjplmaQIge+gYCO+hPrX8ceqHV6LwdhZmUMdfObse+IYCXxR2FIY="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pi-xai-oauth@1.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1553416},"name":"pi-xai-oauth","_from":"file:/home/runner/work/_temp/release/pi-xai-oauth-1.6.1.tgz","license":"MIT","scripts":{"test":"node scripts/verify-compatibility.js policy && npm run test:unit && npm run test:loader && npm run test:cli","setup":"node bin/setup.js","scaffold":"node bin/setup.js --scaffold","test:cli":"node scripts/verify-pi-cli.mjs","test:unit":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest","test:loader":"node scripts/verify-extension-loader.mjs","test:coverage":"vitest run --coverage","compatibility:min":"node scripts/run-compatibility-matrix.js minimum","compatibility:check":"node scripts/verify-compatibility.js all && node scripts/verify-github-package.js","compatibility:latest":"node scripts/run-compatibility-matrix.js latest","compatibility:boundaries":"npm run compatibility:min && npm run compatibility:latest"},"version":"1.6.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"a2672d77-80e4-4bb6-8a6b-efe5401cd59e"}},"homepage":"https://github.com/BlockedPath/pi-xai-oauth#readme","keywords":["pi-package","xai","grok","oauth"],"_resolved":"/home/runner/work/_temp/release/pi-xai-oauth-1.6.1.tgz","overrides":{"protobufjs":"^7.6.5","brace-expansion":"^5.0.8","@napi-rs/wasm-runtime":"^1.2.0"},"_integrity":"sha512-kBdatfv9yA9KPWWlLPbAVqXHOER/FuIX++/bXamVB/CW5g/hFe3qUlJGDtmqbZPOUDGd2C79/DcL/qGaI/4kmw==","repository":{"url":"git+https://github.com/BlockedPath/pi-xai-oauth.git","type":"git"},"_npmVersion":"11.6.2","description":"xAI OAuth provider with an authenticated account-specific Grok model catalog for pi","directories":{},"maintainers":[{"name":"blockedredemption","email":"jaytothebar@gmail.com"}],"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","vitest":"5.0.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"5.0.0","@earendil-works/pi-ai":"1.0.0","@earendil-works/pi-coding-agent":"1.0.0"},"peerDependencies":{"@earendil-works/pi-ai":">=0.80.1 <0.85.0 || >=0.85.1 <0.88.0 || >=1.0.0 <1.1.0","@earendil-works/pi-coding-agent":">=0.80.1 <0.85.0 || >=0.85.1 <0.88.0 || >=1.0.0 <1.1.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-xai-oauth_1.6.1_1790967782715_0.9949497986627798"}}},"time":{"created":"2026-05-16T23:06:09.235Z","modified":"2026-10-02T19:03:03.257Z","0.1.0":"2026-05-16T23:06:09.383Z","1.0.1":"2026-05-16T23:13:38.933Z","1.0.2":"2026-05-16T23:18:51.594Z","1.0.3":"2026-05-16T23:21:03.075Z","1.0.7":"2026-05-16T23:28:39.080Z","1.0.9":"2026-05-16T23:32:04.650Z","1.0.12":"2026-05-17T00:03:03.001Z","1.0.13":"2026-05-17T01:28:31.789Z","1.0.14":"2026-05-17T03:48:19.613Z","1.0.15":"2026-05-17T03:49:21.378Z","1.0.17":"2026-05-17T04:15:40.058Z","1.0.19":"2026-05-17T04:27:08.459Z","1.0.20":"2026-05-17T04:31:47.720Z","1.0.21":"2026-05-17T05:00:32.406Z","1.0.22":"2026-05-17T05:24:12.686Z","1.0.25":"2026-05-17T14:01:02.630Z","1.0.26":"2026-05-17T15:30:15.363Z","1.2.0":"2026-05-17T20:09:04.900Z","1.2.1":"2026-05-17T20:13:08.410Z","1.2.2":"2026-06-04T10:36:58.735Z","1.2.3":"2026-06-04T16:46:39.289Z","1.2.4":"2026-06-20T02:07:40.678Z","1.2.5":"2026-06-20T05:41:28.608Z","1.2.6":"2026-07-07T18:14:01.802Z","1.3.0":"2026-07-08T19:49:12.472Z","1.3.1":"2026-07-09T07:47:03.323Z","1.3.2":"2026-07-11T01:08:20.269Z","1.3.3":"2026-07-11T08:03:55.272Z","1.3.4":"2026-07-15T17:14:43.524Z","1.3.5":"2026-07-15T17:37:35.344Z","1.3.6":"2026-07-18T14:25:57.087Z","1.4.0":"2026-07-23T17:08:37.836Z","1.4.1":"2026-08-09T18:16:05.810Z","1.4.2":"2026-08-09T19:05:53.395Z","1.4.3":"2026-08-12T03:06:44.500Z","1.5.0":"2026-08-12T16:16:09.225Z","1.5.1":"2026-08-21T11:47:35.701Z","1.5.2":"2026-08-23T06:12:59.968Z","1.6.0":"2026-09-21T20:58:45.930Z","1.6.1":"2026-10-02T19:03:02.912Z"},"bugs":{"url":"https://github.com/BlockedPath/pi-xai-oauth/issues"},"license":"MIT","homepage":"https://github.com/BlockedPath/pi-xai-oauth#readme","keywords":["pi-package","xai","grok","oauth"],"repository":{"url":"git+https://github.com/BlockedPath/pi-xai-oauth.git","type":"git"},"description":"xAI OAuth provider with an authenticated account-specific Grok model catalog for pi","maintainers":[{"name":"blockedredemption","email":"jaytothebar@gmail.com"}],"readme":"# pi-xai-oauth\n\n[![CodeRabbit Pull Request Reviews](https://img.shields.io/coderabbit/prs/github/BlockedPath/pi-xai-oauth?utm_source=oss&utm_medium=github&utm_campaign=BlockedPath%2Fpi-xai-oauth&labelColor=171717&color=FF570A&link=https%3A%2F%2Fcoderabbit.ai&label=CodeRabbit+Reviews)](https://coderabbit.ai)\n[![npm version](https://img.shields.io/npm/v/pi-xai-oauth)](https://www.npmjs.com/package/pi-xai-oauth)\n[![npm downloads](https://img.shields.io/npm/dm/pi-xai-oauth)](https://www.npmjs.com/package/pi-xai-oauth)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![GitHub stars](https://img.shields.io/github/stars/BlockedPath/pi-xai-oauth?style=social)](https://github.com/BlockedPath/pi-xai-oauth/stargazers)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/BlockedPath/pi-xai-oauth/pulls)\n[![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue)](https://www.typescriptlang.org/)\n[![pi compatible](https://img.shields.io/badge/pi-Compatible-blueviolet)](https://pi.dev)\n\n**xAI (Grok) OAuth provider for pi** — now with **Grok 4.7** catalog support, reasoning, long context, and custom xAI tools.\n\n```bash\nnpx pi-xai-oauth\n```\n\n## ✨ New: Grok 4.7\n\n| | |\n| --- | --- |\n| **Model ID** | `grok-4.7` |\n| **Role** | xAI flagship for coding, agentic tasks, and knowledge work |\n| **Context** | 500K tokens |\n| **Input** | text + image |\n| **Reasoning** | `low` / `medium` / `high` / `xhigh` (defaults to **high**; cannot be disabled) |\n| **Pricing** | Below 200K prompt tokens: $2 / $6 per 1M input/output · $0.50 cache read |\n\nAvailable through `xai-auth` when your authenticated `/models-v2` catalog returns it. Existing selections and the Grok 4.6 setup/offline default are unchanged; public API availability alone does not establish OAuth entitlement. Run `/login xai-auth` to force an account-bound catalog refresh; `/reload` respects the 15-minute cache TTL.\n\n```bash\npi --provider xai-auth --model grok-4.7 \"Ship this feature end-to-end\"\npi --provider xai-auth --model grok-4.7:high \"Review this architecture for failure modes\"\npi --provider xai-auth --model grok-4.7:xhigh \"Deep multi-step design review\"\npi --provider xai-auth --model grok-4.7:low \"Quick status check\"\n```\n\nLow reasoning is a latency trade-off, **not** the separately priced **Grok 4.7 Fast** service, which xAI restricts to Cursor and Grok Build. This package does not invent a Fast model alias or enable its service routing. See [source notes](#grok-47-source-notes) for pricing and capability limits.\n\nThis package adds xAI's **account-specific OAuth model catalog** to pi, with **Grok 4.6** as the offline fallback/default, proper OAuth login, automatic token refresh, and a suite of custom xAI tools (`xai_generate_text`, `web_search`, `xai_x_search`, etc.). The normalized cache remains exact; registration may additionally expose narrowly verified compatibility routes such as Grok 4.3 and Composer only while their required authenticated entitlement source is present. Entitled accounts that still receive `grok-4.5` keep that model as a first-class catalog entry.\n\n> **Latest release:** `pi-xai-oauth` **1.6.1** adds Pi 0.87 and Pi 1.0 compatibility, bounds browser OAuth discovery, JWKS, and token requests, and fixes Grok-native search/replace on Windows. Grok 4.6 remains the setup/offline default. The canonical `pi-xai-oauth` package on npmjs and scoped `@blockedpath/pi-xai-oauth` mirror on GitHub Packages come from the same validated GitHub Release. Setup treats both names as one extension and removes duplicate aliases before registration. Existing npmjs installs should run `pi update npm:pi-xai-oauth`; GitHub Packages installs should run `pi update npm:@blockedpath/pi-xai-oauth`.\n>\n> **Compatibility:** 1.6.1 supports aligned `@earendil-works/pi-ai` and `@earendil-works/pi-coding-agent` versions `>=0.80.1 <0.85.0 || >=0.85.1 <0.88.0 || >=1.0.0 <1.1.0`, with exact tested boundaries at 0.80.1 and 1.0.0. Pi 0.85.0 remains explicitly excluded and unreviewed 0.99 releases stay unsupported; see [Pi Compatibility](#pi-compatibility).\n\nSee [CHANGELOG.md](CHANGELOG.md) for the complete version-by-version feature and fix history.\n\n---\n\n## Table of Contents\n\n- [✨ New: Grok 4.7](#-new-grok-47)\n- [Features](#features)\n- [Package Scope](#package-scope)\n- [Changelog](CHANGELOG.md)\n- [How It Works](#how-it-works)\n- [Installation](#installation)\n- [Pi Compatibility](#pi-compatibility)\n- [Authentication](#authentication)\n- [Usage](#usage)\n  - [Subscription usage (unofficial)](#subscription-usage-unofficial)\n  - [Switching Models](#switching-models)\n  - [Reasoning / Thinking Levels](#reasoning--thinking-levels)\n- [Custom Tools](#custom-tools)\n- [Quick Reference](#quick-reference)\n- [Troubleshooting](#troubleshooting)\n- [Updating](#updating)\n- [Uninstalling](#uninstalling)\n- [Agent Scaffolding](#agent-scaffolding)\n- [Development](#development)\n- [Contributing](#contributing)\n\n---\n\n## Features\n\n- **Real OAuth login** — authenticates through xAI's official OAuth endpoint (same flow as the Grok CLI)\n- **Browser or device login** — browser authorization-code + PKCE stays the desktop default, with native device authorization for SSH, WSL, containers, and remote/headless sessions\n- **Automatic browser open** — browser login opens your default browser automatically and retains the matching-state full-redirect paste fallback\n- **Token refresh** — refresh tokens are stored and rotated automatically before expiry\n- **Reuses existing credentials** — auto-detects `~/.grok/auth.json` from the official Grok CLI\n- **Grok 4.7 when entitled** — current flagship metadata, 500K context, text+image input, and `low` / `medium` / `high` / `xhigh` reasoning; authenticated capabilities remain authoritative\n- **Grok 4.6 (default)** — retained setup/offline fallback for coding, agentic tasks, and knowledge work; 500K context, text+image input, high reasoning by default, with optional `xhigh`\n- **Grok 4.6 fast mode** — same model with `low` reasoning effort (`/think low` or `grok-4.6:low`); not a separate model ID\n- **Grok 4.5 still supported** — remains a first-class entitled catalog model when `/models-v2` returns it\n- **Grok 4.3 OAuth compatibility** — advertises the independently verified `grok-4.3` request route only when `grok-4.5` is entitled, retaining authenticated input evidence and conservative limits\n- **Authenticated model catalog** — fetches the OAuth-visible `/models-v2` list from the official CLI proxy, so additions and removals track the signed-in account\n- **Explicit subscription usage** — `/xai-usage` performs a bounded, identity-first lookup against the revision-pinned unofficial Grok billing surface without retaining account identity\n- **Coding models when entitled** — directly advertised Grok Build variants track the account catalog; the Composer compatibility alias appears only while its verified `grok-4.5` entitlement source is present\n- **Reasoning support** — parses supplied reasoning capability and thinking levels while preserving known model compatibility\n- **Bounded last-known-good cache** — avoids routine startup delay and falls back safely when discovery is offline or unavailable\n- **Custom xAI tools** — generate text, web search, X/Twitter search, multi-agent research, code analysis\n- **Credential-aware Responses routing** — OAuth/session traffic uses the official `https://cli-chat-proxy.grok.com/v1` endpoint; built-in `xai` API-key tool traffic uses the public `api.x.ai` Responses endpoint\n- **Revision-pinned wire contract** — route-specific headers, truthful package identity, protected request metadata, redirect rejection, and the upstream Grok Build review procedure are documented without impersonating the official client\n\n> **✅ Verified (May 2026)**: All custom xAI tools (`xai_generate_text`, `xai_x_search`, `web_search`, `xai_code_execution`, `xai_critique`, `xai_multi_agent`, `xai_deep_research`, image tools, etc.) have been tested end-to-end after the OAuth + payload repair. The provider now correctly handles mixed-model requests and native xAI tool shapes.\n\n---\n\n## Package Scope\n\n`pi-xai-oauth` owns the xAI-specific integration needed to use entitled Grok models through pi: authentication and credentials, account-specific catalogs, transport and payload behavior, Grok-native compatibility adapters, opt-in network tools, and media integrations. It intentionally does not provide generic `/goal` or `/plan` commands, autonomous continuation, a runtime plan-file protocol, generic task/subagent orchestration, or plan-mode write restriction. See [ADR 0001](docs/decisions/0001-goal-plan-package-scope.md) for the decision and alternatives.\n\nPi 0.82 constrained JSON-schema sampling remains disabled for package custom tools because public xAI strict-tool documentation has not been verified for the separate OAuth CLI Responses proxy. [ADR 0002](docs/decisions/0002-xai-oauth-constrained-sampling.md) records the first-party evidence, bounded live probe, safe Pi fallback, and no-runtime-flag decision.\n\nTool hiding, active-tool filtering, and shell-command filtering are workflow controls, not an enforced read-only boundary. Pi and its extensions run with the user's permissions; strong isolation requires an external sandbox, container, or VM that constrains every tool and extension involved.\n\nThe optional [`--scaffold`](#agent-scaffolding) command is separate: it performs one-time generation of `AGENTS.md` and `.scaffold/*` guidance files in the current directory. It is not a runtime workflow controller, an authoritative plan-state protocol, or a security mechanism.\n\n---\n\n## How It Works\n\n`pi-xai-oauth` registers an OAuth provider called `xai-auth` in pi's provider registry. When you launch `pi` and run `/login xai-auth`, pi offers two native login methods:\n\n- **Browser login (default):** starts a loopback callback listener, opens xAI authorization with PKCE S256, requires matching state for HTTP or pasted full-redirect callbacks, and verifies the fresh ID token against the pinned issuer/JWKS, ES256 policy, audience, expiry, and nonce.\n- **Device code login:** requests a challenge from the pinned first-party device endpoint, shows the verification URL and user code through pi's device UI, and polls the pinned token endpoint only after the server interval. It handles pending/slow-down, denial, expiry, cancellation, malformed responses, and a bounded timeout without displaying the opaque device code or token responses.\n\nBrowser discovery, JWKS, and token requests, including refresh, each have a 15-second deadline and a 64-KiB response limit. The deadline covers response body reads and honors caller cancellation.\n\nOnly a completed selected login returns access + refresh credentials for pi to persist. It then performs a bounded authenticated `GET https://cli-chat-proxy.grok.com/v1/models-v2`, filters unsafe/API-key-only entries, and immediately replaces the provider catalog. All OAuth-backed Responses traffic uses xAI's session-token proxy; proxy requests truthfully identify `pi-xai-oauth`, protect internally owned metadata from caller overrides, and include the required auth, client-mode, request, conversation, session, and model fields. Streaming requests explicitly negotiate server-sent events; direct Responses requests remain JSON.\n\nBrowser login still supports the **complete redirect URL** paste fallback when localhost is unreachable. The URL must contain the matching OAuth `state`; raw authorization codes are not accepted. Device login is the cleaner choice when the browser cannot reach the pi process.\n\n---\n\n## Installation\n\n### One-command install (recommended)\n\n```bash\nnpx pi-xai-oauth\n```\n\nThis runs the setup script which:\n\n1. Installs `npm:pi-xai-oauth` into pi\n2. Seeds `defaultProvider: \"xai\"` only when no provider is configured (never overwrites an existing choice, including package-owned `xai-auth`)\n3. Sets `grok-4.6` as your default model\n4. Enables `high` thinking level by default\n\nChat stays on Pi's built-in `xai` provider by default. This package still registers optional `xai-auth` for its account catalog/stream path, and both providers can use `/xai-tools` plus `/xai-usage`.\n\n### Manual install\n\n```bash\npi install npm:pi-xai-oauth\n```\n\n### GitHub Packages mirror\n\nEvery release is also published as `@blockedpath/pi-xai-oauth` on GitHub Packages. GitHub creates the package privately on its first publication; a package administrator must open the new package's settings and change its visibility to public once. GitHub still requires authentication when installing public npm packages: create a classic personal access token with `read:packages`, then authenticate with the token as your password. The generated user-level npm credentials must never be committed.\n\n```bash\nnpm login --scope=@blockedpath --auth-type=legacy --registry=https://npm.pkg.github.com\npi install npm:@blockedpath/pi-xai-oauth\n```\n\nThe scoped setup command is also available after authentication:\n\n```bash\nnpx @blockedpath/pi-xai-oauth\n```\n\nUse either the npmjs package or the GitHub Packages mirror, never both. They contain the same extension and version; npmjs remains the simpler public installation path because it does not require GitHub registry authentication.\n\nRecommended settings for native SuperGrok chat plus this package's tools/usage:\n\n```bash\n# In ~/.pi/agent/settings.json:\n{\n  \"defaultProvider\": \"xai\",\n  \"defaultModel\": \"grok-4.6\",\n  \"defaultThinkingLevel\": \"high\"\n}\n```\n\nAuthenticate with `/login xai`. Use `/login xai-auth` only when you want this package's OAuth Responses catalog instead of Pi's built-in xAI chat.\n\n> **⚠️ Important: install only one copy**\n>\n> `pi-xai-oauth` registers fixed private tool names such as `xai_generate_text`, `xai_grok_web_search`, and `xai_x_search`. If you install more than one copy — for example `npm:pi-xai-oauth` plus `npm:@blockedpath/pi-xai-oauth`, a local checkout, or two different local checkouts — pi will fail to start with `Tool \"xai_generate_text\" conflicts with ...` errors. The setup CLI prunes npmjs/GitHub/local aliases, but manual installs must still keep only one.\n>\n> Check with:\n>\n> ```bash\n> pi list\n> ```\n>\n> For local development, keep only this checkout:\n>\n> ```bash\n> pi remove npm:pi-xai-oauth\n> pi remove /path/to/other/pi-xai-oauth-copy\n> pi install .\n> ```\n>\n> For the published npm package, remove local checkouts:\n>\n> ```bash\n> pi remove /path/to/local/pi-xai-oauth-copy\n> pi install npm:pi-xai-oauth\n> ```\n>\n> Use the exact package spec/path shown by `pi list` when removing duplicates.\n\n---\n\n## Pi Compatibility\n\nVersion 1.6.1 uses the same bounded range for both Pi runtime peers:\n\n```text\n@earendil-works/pi-ai:            >=0.80.1 <0.85.0 || >=0.85.1 <0.88.0 || >=1.0.0 <1.1.0\n@earendil-works/pi-coding-agent:  >=0.80.1 <0.85.0 || >=0.85.1 <0.88.0 || >=1.0.0 <1.1.0\n```\n\nThe lower boundary is **0.80.1**, the first published Pi 0.80 release. It provides the `@earendil-works/pi-ai/compat` transport used by this extension and the matching Pi 0.80 extension-loader contract. The packed package's complete test and typecheck suites run against exact 0.80.1 in CI. The other matrix boundary is exact **1.0.0**, the latest release inside the allowed lines when this policy was reviewed. Pi 0.80.8 introduced the unified `ModelRuntime` credential API and replaced the exported `AuthStorage` surface with `readStoredCredential()` for one-off reads. Pi 0.83 added five-minute-early OAuth refresh, and Pi 0.84 added cross-process credential reloads, bounded refresh locking, concrete refresh abort signals, and generation-checked model-catalog publication. This package supports the 0.80.1 legacy surface and the newer ModelRuntime/ModelRegistry contracts through bounded compatibility paths; its OAuth callback forwards Pi 0.84's abort signal through the pinned token exchange. Pi 0.82 also began exposing `PI_*` session metadata to `bash`; the Grok-native `run_terminal_command` adapter deliberately suppresses that metadata, including inherited stale parent values on Pi 0.80.1, through the `spawnHook` available across the entire supported range.\n\nPi 0.86 moves provider system instructions and tool declarations into normalized transcript messages. The Responses adapter uses Pi's native normalizer when available, preserving system/tool deltas and reasoning-recovery behavior; older Pi versions retain their legacy top-level prompt/tools unchanged. Both 0.86.0 and 0.86.1 passed clean packed candidate validation before widening this range.\n\nPi 0.87.0, 0.87.1, and 1.0.0 passed clean packed candidate tests, loader checks, CLI checks, and typechecks before widening this range. Pi 1.0.0 retains the Responses compatibility dispatcher, native context normalizer, and credential APIs used here. The package also checks the real `pi --version`, `pi update`, and `pi update npm:pi-xai-oauth` commands with an isolated updater fixture. The update checks verify command dispatch without installing packages or accessing the network.\n\nPi **0.85.0 is explicitly excluded** because its packaged SDK imports fail on a missing `@earendil-works/pi-server` dependency ([upstream issue #9132](https://github.com/earendil-works/pi/issues/9132)); Pi 0.85.1 fixes that packaging defect. The pre-1.0 `<0.88.0` boundary remains deliberate; the unreviewed 0.99 releases stay outside the range. Pi 1.0 support occupies a separate `>=1.0.0 <1.1.0` interval. A new minor line must pass the packed compatibility suite before support is claimed, and the registry gate flags newer releases inside the range for review. Strict npm peer resolution rejects 0.79.10, 0.85.0, the 0.88.0 gap sentinel, published 0.99.0, and the 1.1.0 upper sentinel. Older `pi-xai-oauth` 1.6.0 releases retain their `<0.87.0` upper bound; upgrade to 1.6.1 for Pi 0.87 and 1.0 support.\n\nCheck your installed Pi version with `pi --version`. Bare `pi update` updates Pi itself. Use `pi update npm:pi-xai-oauth` to update this extension, or `pi update npm:@blockedpath/pi-xai-oauth` for the GitHub Packages mirror.\n\nOlder `pi-xai-oauth` 1.2.4 builds supported Pi 0.79.8's then-current Responses guard. Current code uses the Pi 0.80 compat dispatcher after the 1.3.2 export migration and 1.3.3 loader-resolution fix, so that historical statement is not the current minimum.\n\nThe xAI transport contract is tracked separately from Pi package compatibility. See [Grok Build wire-protocol compatibility](compatibility/grok-build-wire-protocol.md) for the pinned upstream revision, route/header matrix, identity and ID-ownership policy, encrypted-reasoning replay contract, safe errors, and repeatable review procedure.\n\n### Encrypted reasoning replay\n\nOn the pinned OAuth Responses route, requests default an absent `store` to `false` and request `reasoning.encrypted_content`. Pi retains completed reasoning output items as opaque state and replays them inline only when the provider, API, and exact model still match. Switching targets drops that replay; compaction may intentionally replace older active context.\n\n`store: false` disables server-side response storage, but it does **not** mean no local sensitive state. Complete encrypted reasoning items are stored in ordinary Pi session JSONL under Pi's normal permissions and retention. This package does not separately encrypt that file, copy reasoning into another cache, or protect it from the user or trusted local extensions.\n\nIf xAI reports that encrypted reasoning is incompatible with the selected model, the `xai-auth` stream retries once in the same turn without the rejected encrypted reasoning. This requires replayed reasoning in the final request, no assistant content forwarded, and no cancellation. Recovery is silent on success. A failed retry returns its own redacted error, such as HTTP 503, without a third attempt. Another reasoning mismatch returns the fixed clean-session/turn guidance. Cancellation and local validation failures retain their existing behavior. Requests without replayed reasoning and unrelated errors are not retried.\n\nThe retry preserves visible conversation and tool-result history, session affinity, and the encrypted-output include policy. It uses a new request ID and repeats payload hooks and local entitlement/image guards; enabled vision routing may therefore make another description request. Failed recovery retains a token-free marker in session history so later requests to the same model continue to omit the rejected reasoning. Older history with fixed mismatch guidance also retains this protection. Successful turns resume normal eligible replay, and switching targets retains the existing cross-model replay protection. Direct Responses helpers do not automatically retry.\n\n---\n\n## Authentication\n\n```bash\npi\n```\n\nThen, in the pi TUI:\n\n```text\n/login xai-auth\n```\n\n**What happens:**\n\n1. pi checks for existing Grok CLI credentials (`~/.grok/auth.json`). If found, it asks if you want to reuse them without modifying that file.\n2. If a fresh login is needed, choose **Browser login (default)** or **Device code login**.\n3. Browser login opens xAI in your default browser and completes through the state-bound loopback/full-redirect flow.\n4. Device login displays a clickable verification URL and user code. Open it on any browser-capable device, confirm the code, and leave pi open while it waits. Press Escape to cancel safely.\n5. Only successful access + refresh credentials are stored by pi and refreshed automatically.\n\nFresh logins request xAI's current eight-scope Grok client grant, including `conversations:read` and `conversations:write`. Credentials created before those scopes were added remain refreshable: refresh preserves the existing grant and does not renegotiate scopes.\n\n> **Need the new conversation scopes?** Run `/login xai-auth` for a fresh authorization grant. If pi finds `~/.grok/auth.json` and asks whether to reuse it, answer **`n`** so the browser login runs; reusing or refreshing an older credential will not add scopes. You do not need to re-login merely to keep using an older credential that already works for your requests.\n>\n> **Choosing a different browser/profile?** The instructions in the TUI explain how. You can copy the shown authorization URL and open it manually in your preferred browser.\n>\n> **Which method should I choose?** Use **Browser login** on a normal desktop where the browser can reach pi's loopback listener. Use **Device code login** for SSH, WSL, Docker/dev containers, remote VMs/workspaces, or other human-operated headless sessions. Device login is not intended for unattended automation because a person must approve the displayed code. If you stay with browser login remotely, paste the complete failed redirect URL—not a raw code—so pi can verify state.\n\n### Re-authenticating\n\nTokens are refreshed automatically, but if you want to force a fresh login:\n\n```bash\npi\n```\n\nThen, in the pi TUI:\n\n```text\n/login xai-auth\n```\n\nThe existing `~/.grok/auth.json` prompt lets you either reuse or re-authenticate.\n\n---\n\n## Usage\n\nOnce authenticated, start using Grok:\n\n```bash\npi \"Explain quantum computing like I'm 5\"\n```\n\nOr use a specific model:\n\n```bash\npi --model grok-4.6 \"Write a poem about Rust\"\n```\n\n### Subscription usage (unofficial)\n\nRun an explicit one-shot usage lookup from pi:\n\n```text\n/xai-usage\n```\n\nThe command displays only validated fields that xAI actually returned, such as included usage percentage, legacy included-credit totals, current reset time, on-demand usage/cap, prepaid balance, and bounded history count. Missing optional fields stay omitted.\n\nThe billing surface is **not a stable public xAI API**. This implementation is pinned to [`xai-org/grok-build@b189869`](https://github.com/xai-org/grok-build/blob/b189869b7755d2b482969acf6c92da3ecfeffd36/crates/codegen/xai-grok-shell/src/extensions/billing.rs): it first makes authenticated `GET /v1/user`, uses the returned validated `userId` only for the immediately following `GET /v1/billing?format=credits`, then discards it. The command accepts a current Pi-stored OAuth credential under this package's `xai-auth` provider or Pi's built-in `xai` SuperGrok/X Premium provider, and rejects stored, environment, or runtime API-key provenance. Account identity, bearer/authenticated headers, and raw response bodies are never logged, displayed, cached, or persisted. If identity cannot be resolved safely, billing is not requested.\n\nTo export a fresh usage snapshot as copyable CSV in the Pi TUI or RPC UI:\n\n```text\n/xai-usage csv\n```\n\nCopy the CSV notification into a `.csv` file or spreadsheet import. This command does not write a file, cache a snapshot, or enable status. It uses the same bounded, OAuth-only identity-first lookup as `/xai-usage`, without pagination or extra requests. Output contains a header, at most one `current` row, and up to 24 validated `history` rows in response order, with comma-separated fields and CRLF record endings. The `current` row is omitted when all its data cells are blank; valid zero or `false` values retain it. A snapshot with no supported fields produces only the header, while history-only snapshots contain the header and history rows.\n\nColumns are `record_type`, `period_type`, `period_start`, `period_end`, `billing_year`, `billing_month`, `subscription_tier`, `credit_usage_percent`, `monthly_limit_cents`, `included_used_cents`, `on_demand_cap_cents`, `on_demand_used_cents`, `total_used_cents`, `prepaid_balance_cents`, `on_demand_enabled`, and `is_unified_billing_user`. Credit amounts remain integer **cents**, percentages remain numbers on the 0–100 scale, and booleans are `true`/`false`. Missing or inapplicable values are blank, not zero; current `usedCents` maps to `included_used_cents`. `total_used_cents` is **history-only**: it stays blank for `current` because the validated snapshot has no current total. Summing that column covers only returned historical totals, not current usage. Percentages and current totals are not inferred, nor are current subscription settings copied into history rows. Quoted cells escape commas and double quotes; formula-like text beginning with `=`, `+`, `-`, or `@` (including after whitespace) is prefixed with an apostrophe for spreadsheet safety. Only allowlisted normalized usage fields are exported—never identity, bearer headers, or raw usage bodies. Any CSV you save contains billing information; handle it accordingly.\n\nThe compact footer status is off by default and requires a separate per-session opt-in while an `xai-auth` or built-in `xai` model is active with Pi-managed OAuth:\n\n```text\n/xai-usage status\n/xai-usage status on\n/xai-usage status off\n```\n\nEnabling status performs one immediate lookup. Later refreshes are event-driven after completed turns and occur no more than once per minute. The status disables and clears on model, provider, login, or session changes and on the next extension-handled event after stored OAuth removal; it never refreshes for non-xAI models. Status failures clear silently and never interfere with chat. Every request rejects redirects, has a 15-second timeout, reads at most 64 KiB, and applies bounded JSON depth, collection counts, history length, and numeric ranges.\n\n### Switching Models\n\n`/model` shows the current authenticated account's xAI catalog plus narrowly scoped compatibility routes whose entitlement source is present. A successful refresh remains authoritative: newly returned entitlement sources appear, removed sources and their compatibility routes disappear, hidden entries are omitted, and known API-key-only models such as `grok-build-0.1` are never advertised through `xai-auth`.\n\nCommon catalog entries include:\n\n| Model ID | Description |\n| ---------- | ------------- |\n| `grok-4.7` | When entitled: current flagship; reasoning low / medium / high (default) / xhigh, 500K context, text+image. |\n| `grok-4.6` | **Default and curated offline fallback.** Previous flagship; reasoning low (**fast**) / medium / high (default) / xhigh, 500K context, text+image. |\n| `grok-4.5` | When entitled: previous flagship; reasoning low (**fast**) / medium / high (default), 500K context, text+image. |\n| `grok-4.3` | OAuth-compatible request model when `grok-4.5` is entitled; keeps authenticated input evidence and conservative catalog-derived limits. |\n| `grok-build` | When entitled: Grok Build coding model (same Grok-native tools as other xai-auth models). |\n| `grok-composer-2.5-fast` | Compatibility alias of entitled `grok-4.5`; uses the same Grok-native pi tool adapters and no Cursor-named shims. |\n| `grok-4.20-0309-reasoning` | When entitled: Grok 4.20 with automatic reasoning. |\n| `grok-4.20-0309-non-reasoning` | When entitled: Grok 4.20 non-reasoning variant. |\n| `grok-4.20-multi-agent-0309` | When entitled: Grok 4.20 multi-agent research model. |\n\nThe exact list is account-specific and can change independently of package releases. From the pi TUI:\n\n```\n/model grok-4.7\n/model grok-4.6\n/model grok-4.5\n/model grok-4.3\n/model grok-build\n/model grok-composer-2.5-fast\n/model grok-4.20-0309-reasoning\n/model grok-4.20-multi-agent-0309\n```\n\nFrom the command line:\n\n```bash\npi --provider xai-auth --model grok-4.7 \"Your prompt here\"\npi --model grok-4.6 \"Use Grok 4.6\"\npi --model grok-4.5 \"Use Grok 4.5\"\npi --model grok-4.3 \"Use Grok 4.3\"\npi --model grok-build \"Implement this feature\"\npi --model grok-composer-2.5-fast \"Refactor this module\"\npi --model grok-4.20-0309-non-reasoning \"Quick answer\"\n```\n\n### Authenticated input capabilities\n\nWhen `/models-v2` supplies a valid `acceptsImages` boolean or bounded `inputModalities` array, that authenticated evidence overrides the package's known metadata for the returned model. `acceptsImages` takes precedence over `inputModalities`; entry fields take precedence over the matching `_meta` field. Missing or malformed evidence falls back to known metadata for known models and conservative text input for unknown models. Missing fields do **not** make Composer text-only.\n\nThe normalized cache stores only the final modalities and bounded provenance, never the raw catalog fields. Legacy schema-1 caches are migrated in memory without treating their inferred input as authenticated evidence. If an authenticated entitlement explicitly becomes text-only, image-bearing Responses payloads fail locally after payload hooks and before any network request, including `xai_generate_text(image_url)` and `xai_analyze_image`. Image generation is a separate endpoint and is unaffected.\n\nSee [Authenticated model input modalities](docs/model-input-modalities.md) for the redacted 2026-07-16 schema observation, pinned xAI source revision, exact precedence, malformed-field policy, and cache migration contract.\n\n#### Opt-in vision routing for explicit text-only entitlements\n\nIf—and only if—the active model is an exact authenticated catalog member with validated text-only evidence, `/xai-tools enable vision-routing` can route current image input through a separate exact catalog model with validated text-and-image support. The vision model receives the images in one additional authenticated Responses request; the active model then receives a clearly labeled text description and no image data. Missing fields, curated metadata, aliases, compatibility slugs, and model names such as Composer never qualify either side.\n\n```text\n/xai-tools status\n/xai-tools enable vision-routing\n/xai-tools disable vision-routing\n```\n\nEligible targets are ordered deterministically by normalized exact model ID. Routing is disabled by default, binds to the current source model, and resets on a new session, every model change, leaving xAI, login/account replacement, catalog replacement, or shutdown. Disabled or invalid routing retains the existing local text-only rejection and creates no additional request.\n\nEach routed turn may consume additional allowance, credits, and rate limits. Images are disclosed to the selected vision target, and its generated description becomes potentially sensitive session content supplied to the active model. The package creates no cross-request raw-image or description cache. Cancellation and catalog invalidation stop the remaining route; a failed description never falls back to sending or silently stripping the source image.\n\n### Catalog refresh and cache policy\n\nThe normalized, token-free last-known-good catalog is stored at:\n\n```text\n~/.pi/agent/cache/pi-xai-oauth/models-v2.json\n```\n\n- **Fresh for 15 minutes:** with a usable OAuth credential (or an expired stored credential awaiting pi's lock-protected refresh), startup and `/reload` use the cache immediately and do not make a catalog request. Logged-out startup uses the curated fallback instead of exposing the previous account's cache.\n- **Stale refresh:** after 15 minutes, startup performs one authenticated GET bounded to 5 seconds.\n- **Transient fallback:** network errors, timeouts, HTTP 408/429/5xx, or a malformed successful response may reuse a validated cache no older than 7 days. A forced/deferred refresh never reuses stale account data; it uses the curated fallback and remains retryable with a one-minute in-session backoff.\n- **Auth/permanent failure:** HTTP 401/403 or other permanent 4xx responses invalidate cached entitlements and use the curated `grok-4.6` fallback.\n- **Login:** every successful browser, device, or reused-credential `/login xai-auth` forces a refresh with the returned credential, never reuses stale data, and updates `/model` immediately. A failed/cancelled selected login leaves existing credentials and catalog state intact. If catalog refresh alone fails after authentication, login still succeeds and the curated fallback is used.\n- **`/reload`:** recreates the extension and follows the same 15-minute policy; it is not an unconditional network refresh.\n- **Selection:** if a refresh removes the active xAI model, the next turn switches to an entitled xAI replacement when available; otherwise it aborts before sending an unentitled request.\n\nThe cache stores only normalized model definitions, bounded input-capability provenance, and timestamps. It never stores access/refresh/ID tokens, auth headers, raw endpoint responses, endpoint fields, or account identity fields. Startup does not expose a previous account's fresh cache when no credential exists, and a credential-file modification newer than the cache forces discovery. If an exceptional filesystem error prevents replacing or deleting an old cache, a token-free `.invalidated` sidecar suppresses it until a later successful atomic write. A token-free cache still cannot distinguish an external account replacement that deliberately preserves the credential file's timestamp; in-product login always bypasses and replaces the cache.\n\n### Reasoning / Thinking Levels\n\nGrok 4.7, Grok 4.6, Grok 4.5, and the entitlement-gated Grok 4.3 compatibility route expose configurable thinking levels via pi's `/think` command or `model:effort` syntax. Lowering reasoning effort to `low` can reduce latency on the same model ID; it does not enable the restricted Grok 4.7 Fast service.\n\n```\n/think xhigh    # Grok 4.7 / 4.6 (when catalog advertises it)\n/think high\n/think medium\n/think low      # Lower-latency reasoning, not the Grok 4.7 Fast service\n```\n\nOr via CLI:\n\n```bash\npi --model grok-4.6:high \"Solve a complex math problem\"\npi --model grok-4.6:xhigh \"Deep multi-step design review\"\npi --model grok-4.6:medium \"Summarize this design doc\"\npi --model grok-4.6:low \"What's the weather?\"   # fast / latency-sensitive\n```\n\n| Effort | Grok 4.7 / 4.6 behavior | Best for |\n| -------- | ----------------------------------- | ---------- |\n| **`xhigh`** | Highest advertised reasoning effort | Hardest multi-step design and analysis |\n| **`high`** (default) | More reasoning tokens, deeper thinking | Hard coding, complex math, multi-step logic |\n| **`medium`** | Balanced thinking vs latency | Analysis and longer-context work |\n| **`low`** | Some reasoning, lower latency | Latency-sensitive agents and simple tool calling |\n\n`grok-4.7` and `grok-4.6` default to **high** when no effort is specified; reasoning **cannot be disabled** (`/think off` is not supported for these models). Every model selected through the OAuth-only `xai-auth` runtime catalog sends Responses traffic through xAI's Grok CLI session endpoint using the same X account OAuth token. An entitled `grok-build` entry still receives its legacy Responses payload/header compatibility behavior, while every `xai-auth` model uses the same Grok-native local tool adapters. The Composer alias (`grok-composer-2.5-fast`) follows the Grok 4.5 payload path. `grok-4.20-0309-reasoning` reasons automatically and does not accept a configurable effort parameter. `grok-4.20-multi-agent-0309` uses `medium` for 4 agents and `high` for 16 agents.\n\n#### Switching between `xai` and `xai-auth`\n\nSetup seeds Pi's built-in `xai` provider when no provider is configured, so the same Grok model can be reached through two separate catalogs. They are deliberately **not** merged: built-in `xai` is Pi's generated API-key catalog, while `xai-auth` derives levels from your authenticated `/models-v2` entitlements plus bounded known metadata. Levels can therefore differ:\n\n| Model | Built-in `xai` | `xai-auth` | Why |\n| ------- | ---------------- | ------------ | ----- |\n| `grok-4.7` | follows Pi's generated catalog when present | `minimal` / `low` / `medium` / `high` / `xhigh` | Known metadata follows official docs; authenticated levels override it. Pi's `minimal` maps to xAI `low`. This package does not modify built-in `xai`. |\n| `grok-4.6` | follows Pi's generated catalog when present | `minimal` / `low` / `medium` / `high` / `xhigh` | **Intentional.** `xai-auth` maps Pi's `minimal` onto xAI's `low`, and advertises `xhigh` when `/models-v2` lists it. |\n| `grok-4.5` | `low` / `medium` / `high` | `minimal` / `low` / `medium` / `high` | **Intentional.** `xai-auth` maps Pi's `minimal` onto xAI's `low`, so `/think minimal` and `/think low` send the same `reasoning_effort: \"low\"` request. Selecting `minimal` never sends an effort xAI did not advertise. |\n| `grok-4.3` | `off` / `minimal` / `low` / `medium` / `high` | same | Identical on both paths. |\n| `grok-build-0.1` | available | **never advertised** | API-key-only model; it is excluded from `xai-auth` regardless of what a catalog response contains. |\n\nAuthenticated evidence always wins on the `xai-auth` path. If `/models-v2` reports `supports_reasoning_effort: false`, the model drops to `off` only even when known metadata lists `low`/`medium`/`high`. Levels absent from `reasoning_efforts` stay hidden, and Pi clamps a request for a hidden level down to the nearest advertised one. `xhigh` appears when the catalog names xAI's `xhigh` or `max` effort; Pi's own `max` level is never advertised for Grok.\n\n### Grok 4.7 source notes\n\n- [Official overview](https://docs.x.ai/overview) and [Grok 4.7 model details](https://docs.x.ai/developers/models/grok-4.7) — exact model ID, Responses support, text+image input, 500K context, and standard-tier $2/$0.50/$6 input/cache-read/output pricing per million tokens.\n- [Reasoning documentation](https://docs.x.ai/developers/model-capabilities/text/reasoning) — low/medium/high/xhigh, default high, no reasoning-off mode. Public Responses returns encrypted reasoning by default; the existing exact-model replay and `store: false` policy is unchanged.\n- [Pricing](https://docs.x.ai/developers/pricing) — long-context standard pricing is $4/$1/$12 per million input/cache-read/output tokens from the 200K prompt threshold. Package cost metadata retains short-context rates, not tier-aware billing. Grok 4.7 Fast has separate rates and is restricted to Cursor/Grok Build.\n\nNo Grok 4.7-specific output-token maximum is published on the model page. Known metadata retains the existing 131,072-token Responses default only when no authenticated completion limit is supplied. An explicitly authorized, redacted OAuth catalog check found a Grok 4.7 entry advertising 500,000 context tokens and 1,000,000 completion tokens independently. Valid completion limits are clamped to the context window for Pi (500,000 in that case), not used to discard the model. Regression fixtures retain only allowlisted model metadata; no raw authenticated response is stored, and no live generation was tested. Grok 4.7 is never inferred from a Grok 4.6/4.5 entitlement, and no new alias is added.\n\nIf an earlier build cached a catalog without Grok 4.7, reload the updated extension and use `/login xai-auth` to force an account-bound catalog refresh. `/reload` alone still respects the 15-minute catalog cache TTL.\n\n### Grok 4.6 source notes\n\nOfficial xAI sources used for this catalog update:\n\n- [Grok 4.6 model details](https://docs.x.ai/developers/models/grok-4.6) — text+image input, 500K context window, cached input pricing, regions, and rate-limit snapshot.\n- [Grok 4.6 announcement](https://x.ai/news/grok-4-6) — product positioning and availability notes.\n- Live authenticated `GET https://cli-chat-proxy.grok.com/v1/models-v2` — confirms OAuth entitlement of `grok-4.6` with reasoning efforts `low` / `medium` / `high` / `xhigh`.\n- Live authenticated `GET https://api.x.ai/v1/models` — confirms API model id `grok-4.6` and standard-tier pricing.\n\nNo Grok 4.6-specific max-output-token limit was published in the xAI model docs during this update. The package keeps the existing Grok Responses max-token ceiling as a placeholder until xAI publishes official model metadata for that field.\n\n### Grok-native tools\n\nFor every active `xai-auth` model, this package advertises Grok-native client names—using the same name-override idea as Grok's `ToolConfig::with_name()`—and maps them onto pi capabilities:\n\n| Grok-native tool | pi capability used underneath |\n| ------------------ | ------------------------------- |\n| `read_file` | `read` |\n| `search_replace` | strict exact-string replacement; `write` when `old_string` is empty |\n| `list_dir` | `ls` |\n| `grep` | bounded local content search |\n| `run_terminal_command` | `bash` |\n| `web_search` | xAI native web search (opt-in via `/xai-tools`) |\n\nThe model-facing fields follow Grok's contract: `target_file` plus signed `offset`, unsigned `limit`, `pages`, and `format` for `read_file`; `file_path`, `old_string`, `new_string`, and optional `replace_all` for `search_replace`; `target_directory` for `list_dir`; Grok's path/glob/context fields for `grep`; and millisecond `timeout` plus `description`/`background` for `run_terminal_command`. Pi has no managed background-task lifecycle, so `background: true` is rejected explicitly rather than being silently run in the foreground. PDF page rendering is not available through pi's text reader, so PDF `read_file` calls fail with an explicit guidance error. The local `grep` adapter preserves Grok's bounded output and timeout behavior while using a conservative workspace-only matcher and file-type subset. `web_search` preserves the optional `allowed_domains` list exactly.\n\nThe direct `read_file`, `search_replace`, `list_dir`, and `grep` adapters accept relative paths and absolute paths whose resolved target stays inside the active workspace. Escaping `..` traversal, outside absolute paths, and symlinks that resolve outside are rejected. `search_replace` may create a missing leaf only when its resolved physical parent remains inside the workspace. Package-owned full-file reads used for negative-offset `read_file` and exact `search_replace` are capped at 5,000,000 bytes.\n\n`run_terminal_command` is deliberately outside that direct-adapter containment policy: it delegates the command to pi's `bash` tool and may access paths outside the workspace. These checks are defense-in-depth for the direct file adapters, not a complete filesystem sandbox for the coding agent. Commands remain foreground-only and retain pi's cancellation, timeout, and output-truncation behavior.\n\nUnlike pi's built-in `bash` tool on Pi 0.82+, this adapter does **not** expose `PI_SESSION_ID`, `PI_SESSION_FILE`, `PI_PROVIDER`, `PI_MODEL`, or `PI_REASONING_LEVEL` to its child process. The terminal command is authored by a remote model rather than directly by the local operator, and `PI_SESSION_FILE` points directly at the active transcript JSONL. Making that path available would turn broad local shell access into a one-step transcript-discovery channel without enabling any Grok tool contract. A cross-version `spawnHook` removes all five names after pi constructs the child environment; this also removes stale values inherited from a parent process on Pi 0.80.1, where the newer `exposeSessionEnvironment` option does not exist. Other inherited environment variables are unchanged.\n\nLegacy Cursor names (`Read`, `Shell`, `WebSearch`, and similar) are no longer registered by this package. Local Grok-native adapters enable automatically only for `xai-auth` and clear when you leave that provider without mutating same-named public tools owned by other extensions. Internally they use collision-free `xai_grok_*` dispatcher names, then expose the official public names only in the current package-owned xAI request, so unrelated extensions can keep their own public tools. The network-backed `web_search` remains opt-in and also supports Pi's built-in `xai` models.\n\n---\n\n## Custom Tools\n\nThis package registers credential-backed custom tools that make additional xAI API requests. They appear alongside your other agent tools in the pi TUI, but all of them are **inactive by default**. For Pi's built-in `xai` provider, SuperGrok/X Premium OAuth uses the subscription session route while API-key provenance uses the public `api.x.ai` route.\n\nThis opt-in boundary applies only to the extra tools below. Normal conversation continues through the selected provider: this package owns `xai-auth` chat/catalog/stream behavior and does not replace or intercept Pi's built-in `xai` transport.\n\n| Tool | Category | Additional usage / cost risk |\n| ------ | ---------- | ------------------------------ |\n| `xai_generate_text` | Generation | Separate model-token usage |\n| `xai_x_search` | Search | Model tokens plus native tool usage |\n| `xai_multi_agent` | Research | High/variable: 4 or 16 agents plus web/X tools |\n| `xai_deep_research` | Research | High/variable model and web/X tool usage |\n| `xai_code_execution` | Execution | Model tokens plus code-interpreter usage |\n| `xai_generate_image` | Image generation | Charged per generated image; supports 1-4 images |\n| `xai_edit_image` | Image editing | Imagine usage for one output conditioned on 1-3 local references |\n| `xai_image_to_video` | Video generation | High-cost, long-running 6- or 10-second video generation |\n| `xai_analyze_image` | Vision | Separate model-token and image-input usage |\n| `xai_critique` | Reasoning | Separate high-reasoning model-token usage |\n| `web_search` | Search | Model tokens plus native tool usage |\n\n**How to use them:** Select an `xai-auth` model or Pi built-in `xai` model, enable only the tool you want through `/xai-tools`, then explicitly request that tool in your prompt or agent workflow. Credential lookup stays on the active xAI-compatible provider (`xai-auth` OAuth, or built-in `xai` OAuth/API keys) and the existing Grok CLI credential fallback; it does not silently borrow a sibling provider's stored credentials. Enabling a tool makes it available; it is not permission for the model to call it without user intent.\n\nEvery new session resets all network-backed tools to inactive. Switching to a non-xAI model disables them immediately, and switching back does not restore them. Grok-native local filesystem and shell tools remain automatic only for `xai-auth`; built-in `xai` models receive no package-owned local adapters.\n\nIn the pi TUI, select an `xai-auth` or built-in `xai` model and run:\n\n```text\n/xai-tools\n```\n\nThe picker shows each tool's category and cost-risk context, warns that calls may use xAI credits, and applies changes only to the current xAI session. Use ↑/↓ to move, Enter or Space to toggle a tool in place, and Escape when done; the highlighted row stays put after each toggle. You can also manage one tool directly:\n\n```text\n/xai-tools status\n/xai-tools enable web_search\n/xai-tools disable web_search\n/xai-tools enable xai_generate_image\n/xai-tools enable xai_edit_image\n/xai-tools enable xai_image_to_video\n/xai-tools enable vision-routing\n/xai-tools disable vision-routing\n```\n\n`vision-routing` is transport policy rather than a callable model tool, so it never enters Pi's active-tool registry. It appears only when exact authenticated capability evidence supports a text-only source and a separate text-and-image target. `web_search` appears once in the picker for any active xAI model (still opt-in); the older `xai_web_search` spelling remains accepted only as a backward-compatible `/xai-tools enable` or `disable` argument. `/xai-tools` is owned by this package; it does not depend on pi's optional example `/tools` extension.\n\nExtension authors that drive `/xai-tools` through `pi.events` must follow the listener-owned [xAI tools menu bridge protocol v1](docs/bridge-xai-tools.md), including its early `open` launch acknowledgement and honest success/error results.\n\n> **Tip:** See the ⚠️ warning above about local vs published package conflicts.\n\n### `xai_generate_text`\n\nOpt-in text generation with full reasoning and stateful conversations. Enable it through `/xai-tools` first.\n\n```json\n{\n  \"prompt\": \"Explain neural networks\",\n  \"model\": \"grok-4.6\",\n  \"reasoning_effort\": \"high\"\n}\n```\n\n### `xai_multi_agent`\n\nOpt-in deep multi-agent research using Grok's multi-agent model plus native web and X search tools. Enable it through `/xai-tools` first.\n\n```json\n{\n  \"query\": \"Latest advances in LLM quantization\",\n  \"num_agents\": 16,\n  \"reasoning_effort\": \"high\"\n}\n```\n\n### `web_search`\n\nOpt-in search using xAI's native `web_search` tool and the active xAI model. Enable it through `/xai-tools` first. The optional `allowed_domains` list is forwarded unchanged.\n\n```json\n{\n  \"query\": \"Rust vs Go performance 2026\",\n  \"allowed_domains\": [\"rust-lang.org\", \"go.dev\"]\n}\n```\n\n### `xai_x_search`\n\nOpt-in X (Twitter) search using xAI's native `x_search` tool and the active xAI model. Enable it through `/xai-tools` first.\n\n```json\n{\n  \"query\": \"grok 4.5\"\n}\n```\n\n### `xai_code_execution`\n\nOpt-in Python-oriented analysis using xAI's native `code_interpreter` tool. Enable it through `/xai-tools` first.\n\n```json\n{\n  \"code\": \"print(sum(range(100)))\"\n}\n```\n\n### `xai_generate_image`\n\nOpt-in paid image generation with xAI's current image generation model. Enable it through `/xai-tools` first, and request it explicitly in your prompt.\n\n```json\n{\n  \"prompt\": \"A clean product diagram of an OAuth flow\",\n  \"model\": \"grok-imagine-image-2.0\"\n}\n```\n\n### `xai_analyze_image`\n\nOpt-in analysis of an image URL, data URL, or bounded local `.png` / `.jpg` path with Grok vision. Local files must be inside the active workspace. Enable it through `/xai-tools` first.\n\n```json\n{\n  \"image\": \"assets/screenshot.png\",\n  \"question\": \"What error is visible?\"\n}\n```\n\nLegacy local image inputs are limited to byte-validated PNG/JPEG regular files inside the\nactive workspace. Paths are resolved through realpath, so traversal and outward symlinks are\nrejected; reads are capped at 8 MiB and 12 million decoded pixels before base64 encoding.\nAbsolute paths and `file://` URLs remain compatible only when their resolved file is inside\nthat workspace.\n\n### `xai_edit_image`\n\nOpt-in paid image editing through xAI Imagine. Enable it through `/xai-tools` first, then explicitly request the edit. Supply one to three references. One reference preserves its input aspect ratio; a supported `aspect_ratio` may be supplied but is omitted from the wire. Multiple references require a supported `aspect_ratio`.\n\n```json\n{\n  \"prompt\": \"Keep the subject, replace the background with a clean studio gradient\",\n  \"image\": [{ \"path\": \"assets/reference.png\" }]\n}\n```\n\nReferences are limited to 1-3 byte-validated PNG/JPEG files inside the current workspace or strict bounded `data:image/png;base64,...` / `data:image/jpeg;base64,...` values. Paths are resolved through realpath, so `..` escapes and symlinks leaving the workspace are rejected. HTTPS URLs, `file://` URLs, current-turn attachment tokens, arbitrary outside paths, SVG, WebP, GIF, and HEIC are intentionally unsupported.\n\nReference handling uses the pinned Grok Build policy as its starting point: sources are capped at 8 MiB and 12 million decoded pixels; compatible references up to 400 KiB pass through after decode verification; larger references are re-encoded under 400 KiB with a 768 px maximum side, a 256 px compression floor, and reviewed quality steps. The package separately limits aggregate reference bytes to 1,200 KiB and caps reference count, request JSON, response JSON, output base64, decoded output bytes, output pixels, and output dimensions.\n\nExactly one verified PNG/JPEG output is saved atomically with a collision-resistant name under Pi's session directory at `pi-xai-oauth/<session-hash>/image-edits/`. Directories use mode `0700`, files use `0600`, and the tool returns path/dimension/size metadata instead of raw base64. Prompts, source paths, data URLs, image bytes, credentials, headers, and raw authenticated error bodies are never included in image-edit errors.\n\nImage editing can consume xAI Imagine allowances, credits, or rate limits. Exact pricing and quota behavior are controlled by xAI; see [xAI pricing](https://docs.x.ai/developers/pricing) before enabling the tool.\n\n### `xai_image_to_video`\n\nOpt-in high-cost image-to-video generation through `grok-imagine-video-1.5-preview`. Enable it explicitly, then provide exactly one bounded workspace PNG/JPEG or strict PNG/JPEG data URL. Remote source URLs and multi-reference video generation are intentionally unsupported.\n\n```json\n{\n  \"image\": { \"path\": \"assets/reference.png\" },\n  \"prompt\": \"Slow camera push-in with subtle ambient motion\",\n  \"duration\": 6,\n  \"resolution\": \"480p\"\n}\n```\n\nDuration is `6` or `10` seconds (default `6`); resolution is `480p` or `720p` (default `480p`). The client waits five seconds before its first status request, polls every five seconds, and stops local tracking after five minutes. Video generation can be expensive and rate-limited. Cancelling Pi stops local waiting, requests, download, and partial-file writes, but the submitted remote xAI job is **not cancelled** and may continue consuming usage or credits.\n\nCompleted MP4s are downloaded without OAuth headers through an HTTPS-only, no-redirect, resolve-once public-IPv4 DNS/IP-pinned transport; IPv6-only download hosts fail closed. Downloads accept only MP4 MIME, are streamed under a 256 MiB limit, require bounded `ftyp` evidence, and are atomically saved under `pi-xai-oauth/<session-hash>/videos/` with private `0700` directories and `0600` files. Signed URLs, request IDs, source data, prompts, credentials, and raw authenticated bodies are not returned or logged.\n\n### `xai_critique`\n\nOpt-in structured critique for code, designs, writing, or ideas. Enable it through `/xai-tools` first.\n\n```json\n{\n  \"content\": \"function add(a,b){ return a-b }\",\n  \"aspect\": \"code correctness\"\n}\n```\n\n### `xai_deep_research`\n\nOpt-in research using the active xAI model plus native web and X search tools. Enable it through `/xai-tools` first.\n\n```json\n{\n  \"topic\": \"Recent xAI Responses API tool changes\",\n  \"depth\": \"high\"\n}\n```\n\n> **Note:** Every tool in this section makes a separate xAI request and can consume subscription allowances, credits, or rate limits. OAuth-backed Responses helpers use the session proxy; built-in `xai` API-key helpers use the public API. Image generation and image editing are intentional OAuth transport exceptions: matching official Grok Build behavior, they send the OAuth bearer directly to the pinned public Images routes at `https://api.x.ai/v1/images/generations` and `https://api.x.ai/v1/images/edits`. See [xAI pricing](https://docs.x.ai/developers/pricing) for current rates.\n\n---\n\n## Quick Reference\n\n| Action | Command |\n| -------- | --------- |\n| Install | `pi install npm:pi-xai-oauth` |\n| One-command setup | `npx pi-xai-oauth` |\n| Try ephemeral | `pi -e npm:pi-xai-oauth` |\n| Authenticate (chat default) | Launch `pi`, run `/login xai` |\n| Authenticate (optional package catalog) | Launch `pi`, run `/login xai-auth`, then choose browser (default) or device code |\n| Update | `pi update npm:pi-xai-oauth` |\n| Remove | `pi remove npm:pi-xai-oauth` |\n| List packages | `pi list` |\n| Set default model | `/model grok-4.6` (in TUI) |\n| Set thinking level | `/think high` (in TUI) |\n| Show subscription usage | `/xai-usage` (unofficial, explicit request) |\n| Export copyable usage CSV | `/xai-usage csv` (no automatic file writes) |\n| Manage optional usage status | `/xai-usage status on\\|off` (off by default) |\n| Manage outbound xAI tools | `/xai-tools` (in TUI) |\n| Recreate extension/catalog state | `/reload` (respects the 15-minute cache TTL) |\n\n---\n\n## Troubleshooting\n\n### \"Browser didn't open automatically\"\n\npi runs `open <url>` on macOS / `xdg-open` on Linux to launch your default browser. If nothing happens:\n\n- **Copy the URL** shown in the TUI and paste it into your preferred browser manually.\n- The local callback server is still listening — once you authorize, the redirect will be caught even if the browser doesn't match.\n\n### \"Callback server didn't receive the redirect\"\n\nIf localhost is blocked (VPN, Docker, remote SSH, WSL):\n\n1. After authorizing in the browser, the page will show an error (can't reach localhost).\n2. **Copy the complete URL** from the browser's address bar. It must include both `code` and the matching `state` query parameter.\n3. **Paste it into the TUI's input field** that says \"Paste redirect URL below.\"\n4. pi verifies the state, exchanges the bound code with PKCE, validates the returned OIDC ID token, and then completes login.\n\nRaw authorization-code-only input is intentionally rejected because it cannot prove which browser login attempt produced the code. If you already pasted a raw code, run `/login xai-auth` again and either choose **Device code login** or choose browser login and paste the complete redirect URL.\n\n### \"Device authorization expired or was denied\"\n\nRun `/login xai-auth` again and choose device login to request a new code. Codes are short-lived and polling stops at the server expiry (with a 15-minute hard cap). Pressing Escape cancels the wait; denial, expiry, cancellation, network failure, or malformed server data returns no new credential and does not remove the previous one.\n\n### \"Cannot find provider xai-auth\"\n\nRun `pi list` to verify the package is installed. If not:\n\n```bash\npi install npm:pi-xai-oauth\n```\n\nThen run `pi /list-providers` — you should see `xai-auth` listed.\n\n### `422 \"Failed to deserialize ... ModelInput\"` with images\n\nThis means xAI rejected a multimodal Responses `input` shape. Use the latest package version and restart pi or run `/reload`. The provider normalizes validated, bounded workspace-local `.png`/`.jpg` paths into `data:image/...;base64,...` URLs, adds image `detail`, moves system/developer text to top-level `instructions`, and rewrites image-bearing tool results so `function_call_output.output` stays text-only (xAI rejects arrays there).\n\n> **Fixed in repair**: Requests from other providers (DeepSeek, OpenAI Codex, etc.) no longer get mutated by the xAI sanitation hook.\n\nIf you call `xai_generate_text` directly, `image_url` may be either:\n\n- an `http(s)://...` URL\n- a `data:image/png;base64,...` or `data:image/jpeg;base64,...` URL\n- a workspace-contained `.png`, `.jpg`, or `.jpeg` path, including shell-escaped paths like `assets/My\\\\ Image.png` and in-workspace absolute or `file://` paths\n\n### `500 \"Auth context expired\"` after screenshots\n\nThis xAI OAuth gateway error can be a misleading response to an oversized stateless Responses request, not an expired local token. The provider now omits consumed historical tool-result image binaries after a later assistant response and retains a text marker in their place. Current PNG/JPEG inputs are resized with high-fidelity encoding when necessary and kept within a 3 MiB aggregate base64 transport budget before any xAI request is sent.\n\nIf an image cannot be decoded or compacted safely, the request fails locally with a clear image-budget error. Crop the screenshot or attach fewer current images; logging in again will not fix a payload-size failure.\n\n### \"Token expired / auth failed\"\n\nTokens refresh automatically, but if something goes wrong:\n\n```bash\npi\n```\n\nThen, in the pi TUI:\n\n```text\n/login xai-auth\n```\n\nThis re-runs the full OAuth flow and replaces your stored tokens.\n\n### \"Does this need an xAI API key?\"\n\n**Not for the package-owned `xai-auth` provider.** It uses OAuth—the same authentication family as the official Grok CLI and chat interface—and does not expose an API-key chat provider. Responses requests for `xai-auth` use the OAuth session proxy.\n\nThe opt-in network tools can also run while Pi's built-in `xai` provider is active. Built-in SuperGrok/X Premium OAuth is tagged as a subscription session; a built-in xAI API key is tagged as `api-key` and sent only to the public `api.x.ai` route. `/xai-usage` remains OAuth-only and rejects API-key provenance.\n\nIf you have the official Grok CLI installed and authenticated (`~/.grok/auth.json`), this package detects and reuses those credentials automatically.\n\n### \"Why is a model missing or still cached?\"\n\nThe xAI model list is entitlement-aware. If a model is missing, the authenticated `/models-v2` response did not include a usable OAuth Responses entry or a required entitlement source, or discovery fell back to the curated offline catalog. Run `/login xai-auth` to force an account-bound refresh. `/reload` reloads the extension but intentionally reuses a cache younger than 15 minutes; after the TTL it performs a bounded refresh. Known renames such as `grok-composer-2.5-fast` and `grok-build-latest` are advertised only as aliases of an already-entitled canonical model. The distinct `grok-4.3` request route is likewise advertised only when its independently verified OAuth entitlement source (`grok-4.5`) is present; none of these compatibility entries are persisted into the exact catalog cache.\n\nA one-shot `pi --list-models` cannot refresh an already-expired pi-stored OAuth token before the model registry is bound. It can still use a fresh official Grok CLI bearer when available; otherwise it uses fresh cache or the curated fallback. Starting a normal session lets pi refresh its stored credential under the credential-store lock and then revalidate the catalog.\n\nDo not add custom `xai-auth` entries to `~/.pi/agent/models.json`; that provider ID is owned by this extension. Pi can re-merge user-defined entries when an authenticated catalog is empty. The extension's input and transport guards still refuse any model absent from the active OAuth entitlement snapshot before an xAI request is sent, but such custom entries may remain visible in `/model` because pi exposes no extension API for removing disk-defined models from an otherwise empty provider.\n\n### \"What model am I using?\"\n\nIn the pi TUI, the current model is shown in the status bar. You can also check with:\n\n```\n/model\n```\n\n### `Tool \"xai_generate_text\" conflicts with ...` or `pi list` shows duplicate copies\n\nYou have more than one copy of this extension installed. This commonly happens when updating from npm to a local checkout, or when switching between two local worktrees. pi refuses to load duplicate tool names.\n\nFirst inspect installed packages:\n\n```bash\npi list\n```\n\nThen remove every duplicate `pi-xai-oauth` entry except the one you want to use.\n\nFor local development from this checkout:\n\n```bash\npi remove npm:pi-xai-oauth\npi remove /path/to/old/pi-xai-oauth-copy\npi install .\n```\n\nFor normal npm usage:\n\n```bash\npi remove /path/to/local/pi-xai-oauth-copy\npi install npm:pi-xai-oauth\n```\n\nRestart pi after cleanup. `pi list` should show only one `pi-xai-oauth` entry.\n\n---\n\n## Updating\n\n```bash\npi update npm:pi-xai-oauth\n```\n\nThis pulls the latest version from npm and updates your installed extension.\n\nVersion 1.6.1 requires aligned Pi runtime packages in `>=0.80.1 <0.85.0 || >=0.85.1 <0.88.0 || >=1.0.0 <1.1.0`, with exact packed-package validation at 0.80.1 and 1.0.0. It adds Pi 0.87 and 1.0 support, bounds browser OAuth discovery, JWKS, and token requests to 15 seconds and 64 KiB, and fixes Grok-native search/replace on Windows. Pi 0.85.0 and unreviewed 0.99 releases remain excluded, as described in [Pi Compatibility](#pi-compatibility). Both registries publish identical release contents apart from the scoped mirror's name/registry metadata. See [CHANGELOG.md](CHANGELOG.md) for the complete release notes. Update the registry distribution you installed; if you are testing a local checkout instead, reinstall dependencies with `npm ci` so devDependencies match the tested peer range.\n\n```bash\npi remove npm:pi-xai-oauth && pi install .\n```\n\nIf you previously installed a local checkout with `pi install .`, `pi update npm:pi-xai-oauth` will not replace that local copy. Run `pi list` and make sure only one `pi-xai-oauth` entry is installed. Remove duplicate npm/local/worktree copies before restarting pi.\n\n---\n\n## Uninstalling\n\n```bash\npi remove npm:pi-xai-oauth\n```\n\nThis removes the extension from pi","readmeFilename":"README.md"}