{"_id":"@bacnh85/pi-router","_rev":"17-a140aab4782bf6f72b4e82e90c27ab58","name":"@bacnh85/pi-router","dist-tags":{"latest":"1.2.3"},"versions":{"1.0.1":{"name":"@bacnh85/pi-router","version":"1.0.1","keywords":["pi","pi-extension","router","9router","omniroute","ai-router","openai-proxy","api-gateway"],"license":"MIT","_id":"@bacnh85/pi-router@1.0.1","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-router","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"b4ead13c168f747026b1b45e61106f622cbcc265","tarball":"https://registry.npmjs.org/@bacnh85/pi-router/-/pi-router-1.0.1.tgz","fileCount":10,"integrity":"sha512-St7sjcX2iyUKkFhDTABWiaRUD5oePSEGFscPUTTdcEtG3ZZA8ehUwUHIGkj+2J47GvzSAffX0R/puPjlK8rPgg==","signatures":[{"sig":"MEUCIB6/zcCW/YzHJQ1i0hra+kz60HP597EOoWJUMS+43VgCAiEAkuphWBlsicxOSJuRgcNrjTu2D0eCtCm12DI9/DOvwAY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37592},"type":"module","gitHead":"8ca6dd09ef78f6e529624985c0ee6485cdee3e4f","scripts":{"test":"node --import tsx --test extensions/test/unit.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-router"},"_npmVersion":"10.9.8","description":"Pi extension that connects to any OpenAI-compatible AI router (9router, omniroute, …) via its /v1 API.","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","typescript":"^5.9.3","@types/node":"^20.19.43"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-router_1.0.1_1787362178778_0.9444897317106331","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@bacnh85/pi-router","version":"1.1.0","keywords":["pi","pi-extension","router","9router","omniroute","ai-router","openai-proxy","api-gateway"],"license":"MIT","_id":"@bacnh85/pi-router@1.1.0","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-router","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"b04356ce38b8846554bbb8050dfc7233fb8af9ba","tarball":"https://registry.npmjs.org/@bacnh85/pi-router/-/pi-router-1.1.0.tgz","fileCount":10,"integrity":"sha512-7WlqxXt5sCBqpZb3hqxtniM7QGm1SDdNxFPVGXT321VBrqbCpUvs+K66Eodt3PGZqYx7YpxwU3Gcm7nzHb6NJg==","signatures":[{"sig":"MEUCIF+3xYiTMXWknlsjzhS4I73G/Nzg/LHinGez5LMa7OJJAiEA+YdNAzsjOHihOxLzps13pjWjeHCxoQZzGfQ/LPVhGRo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42645},"type":"module","gitHead":"0afe1c2ce62b2aad560b85f50e7e2a084e914bcd","scripts":{"test":"node --import tsx --test extensions/test/unit.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-router"},"_npmVersion":"10.9.8","description":"Pi extension that connects to any OpenAI-compatible AI router (9router, omniroute, …) via its /v1 API.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@bacnh85/pi-config-panel":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","typescript":"^5.9.3","@types/node":"^20.19.43"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-router_1.1.0_1787453823215_0.27853006804718716","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@bacnh85/pi-router","version":"1.1.1","keywords":["pi","pi-extension","router","9router","omniroute","ai-router","openai-proxy","api-gateway"],"license":"MIT","_id":"@bacnh85/pi-router@1.1.1","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-router","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"ac07bb2817a7aa99c7f92f1ac0b784707077903b","tarball":"https://registry.npmjs.org/@bacnh85/pi-router/-/pi-router-1.1.1.tgz","fileCount":10,"integrity":"sha512-9MiqRP1keeTKWlXk8pqcW4ml6vlN3PLMtMM/Af2dLR0zBQn48H99fcauJS3PQ7c6+jIzLi9HCyntTGjnnv8pAg==","signatures":[{"sig":"MEUCIQDkfnW5yvTRxwxKGC3Le7yq6eVoq3jZ8y+ojmDENcmLQgIgZtYrJyZmB3gXAaG6iGfUOfiQJXE65KnNFT1xDuFxS6w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45385},"type":"module","gitHead":"0eca1c0fb84d621cea3b2821d7615abc641f5669","scripts":{"test":"node --import tsx --test extensions/test/unit.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-router"},"_npmVersion":"10.9.8","description":"Pi extension that connects to any OpenAI-compatible AI router (9router, omniroute, …) via its /v1 API.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@bacnh85/pi-config-panel":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","typescript":"^5.9.3","@types/node":"^20.19.43"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-router_1.1.1_1787669420168_0.7139343231245194","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@bacnh85/pi-router","version":"1.1.3","keywords":["pi","pi-extension","router","9router","omniroute","ai-router","openai-proxy","api-gateway"],"license":"MIT","_id":"@bacnh85/pi-router@1.1.3","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-router","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"5812ef0d2f732c677f7943e959316e2e2bce22dd","tarball":"https://registry.npmjs.org/@bacnh85/pi-router/-/pi-router-1.1.3.tgz","fileCount":10,"integrity":"sha512-y/j07i7pSvwrkEm7V/8wuGfvwHMHarnwmGRt6B7jPAWgtsEE2fLg87gHMkf10kq5DPK+RXxvAAHajjLHQydATg==","signatures":[{"sig":"MEUCIBgjplW1XN9Y3iOtzuik4nN6wlq2Gj/FDzR/xceISvUmAiEArMtGv4ewUSkXAiQa15tojlALQ4hyT7+wjkvnK7A1Qjc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":54793},"type":"module","gitHead":"c3f2db2815cd69bcd4c6f3a1b063eb1ac4a1d9df","scripts":{"test":"node --import tsx --test extensions/test/unit.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-router"},"_npmVersion":"10.9.8","description":"Pi extension that connects to any OpenAI-compatible AI router (9router, omniroute, …) via its /v1 API.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@bacnh85/pi-config-panel":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","typescript":"^5.9.3","@types/node":"^20.19.43"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-router_1.1.3_1787746607394_0.14105454293628972","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@bacnh85/pi-router","version":"1.1.4","keywords":["pi","pi-extension","router","9router","omniroute","ai-router","openai-proxy","api-gateway"],"license":"MIT","_id":"@bacnh85/pi-router@1.1.4","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-router","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"9ba8449aa4a11b8630a225a7d6cd43c690b2832c","tarball":"https://registry.npmjs.org/@bacnh85/pi-router/-/pi-router-1.1.4.tgz","fileCount":10,"integrity":"sha512-UdGojMcOOCq6CkE6hetv4gFEppDcHVtqB5CcK6GN+ZrviOGa0dSrQ/LslhdWnyBtT62L4PnIERbbxBOVTykD0g==","signatures":[{"sig":"MEYCIQCOpqJN5p1SHbnVMm0noIpNJeZpAQnhhPgfam9HUEYujAIhALVutOM6UOPC/Ieet8Uk8QqMmgCZ1/XDeK8NnC/L2bUV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":55647},"type":"module","gitHead":"fb130ee80571d4a6ec161fe7d7736085f32eff74","scripts":{"test":"node --import tsx --test extensions/test/unit.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-router"},"_npmVersion":"10.9.8","description":"Pi extension that connects to any OpenAI-compatible AI router (9router, omniroute, …) via its /v1 API.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@bacnh85/pi-config-panel":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","typescript":"^5.9.3","@types/node":"^20.19.43"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-router_1.1.4_1788013476449_0.08500562791430366","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"@bacnh85/pi-router","version":"1.1.5","keywords":["pi","pi-extension","router","9router","omniroute","ai-router","openai-proxy","api-gateway"],"license":"MIT","_id":"@bacnh85/pi-router@1.1.5","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-router","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"e23ceb63f5eb485b8792404f8c81cd401cacad8e","tarball":"https://registry.npmjs.org/@bacnh85/pi-router/-/pi-router-1.1.5.tgz","fileCount":11,"integrity":"sha512-toDMAlDLOj3g3kjRhKpex9xdk+MROQiT89+PfuPH3vZebmqHfx1QNY6hqXBbZwnePfXlDXd+W0ViRBnmqy01xQ==","signatures":[{"sig":"MEYCIQDYf52jXZ8veLBzLHj99QuuwnjKKSW7G74+ipArAAGrrwIhAOF9MJhhPeXd5RIGJJ5uXLLZcgYAOz2PFrABFoo8DPyS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHRdPxJsAgi+ak2/QuWzlLdPqTldx1Ozypwdu+d8Ohd/AiEAssb74uLeJdhPRPL8F0s3w/IaUzT7Ggx0zgYbthnmE0s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63923},"type":"module","gitHead":"48ae5300d316920e3d6f360887fa3748ea85022f","scripts":{"test":"node --import tsx --test extensions/test/unit.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-router"},"_npmVersion":"10.9.8","description":"Pi extension that connects to any OpenAI-compatible AI router (9router, omniroute, …) via its /v1 API.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@bacnh85/pi-config-panel":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","typescript":"^5.9.3","@types/node":"^20.19.43"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-router_1.1.5_1788688477684_0.9090781427433503","host":"s3://npm-registry-packages-npm-production"}},"1.1.6":{"name":"@bacnh85/pi-router","version":"1.1.6","keywords":["pi","pi-extension","router","9router","omniroute","ai-router","openai-proxy","api-gateway"],"license":"MIT","_id":"@bacnh85/pi-router@1.1.6","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-router","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"7f30582cae1020a3169a96327d99f059656ef68d","tarball":"https://registry.npmjs.org/@bacnh85/pi-router/-/pi-router-1.1.6.tgz","fileCount":11,"integrity":"sha512-6iRnZ3L09mLeMwD18mycOD0dZmCjcsGyh+uCCQ9tV1iJEHmO587Xfc5xbIsOV8p+suF2M2qAiwWaLvWXMYQyBA==","signatures":[{"sig":"MEYCIQDC89nKHv+TcyAr7DbJAbT2fW9sbYeMF/usmqdK3mfLhQIhANuRawfCWeoP/MPzfPRoy61VH2BN6RmSPhdqWgCGoKqm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCVKJOtewsPTsv2WI6VOtSjKuK7okueYdCyftsJ+DzqxgIhAIDKBcRukGU5ubyVFCDOFI/4pgj+IyLaT3rWDHmWVYhT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64444},"type":"module","gitHead":"fc25702c6bed994da1dd5071c5ec8071bfd28393","scripts":{"test":"node --import tsx --test extensions/test/unit.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-router"},"_npmVersion":"10.9.8","description":"Pi extension that connects to any OpenAI-compatible AI router (9router, omniroute, …) via its /v1 API.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@bacnh85/pi-config-panel":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","typescript":"^5.9.3","@types/node":"^20.19.43"},"peerDependencies":{"@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-router_1.1.6_1789204347638_0.7082433277762357","host":"s3://npm-registry-packages-npm-production"}},"1.1.7":{"name":"@bacnh85/pi-router","version":"1.1.7","keywords":["pi","pi-extension","router","9router","omniroute","ai-router","openai-proxy","api-gateway"],"license":"MIT","_id":"@bacnh85/pi-router@1.1.7","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-router","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"774deef46baa244b535855945321b0b974a18415","tarball":"https://registry.npmjs.org/@bacnh85/pi-router/-/pi-router-1.1.7.tgz","fileCount":11,"integrity":"sha512-HHtdmJd+tKn287iP5rvGqKLcpnZLK622KE2kSD/0iYHDibbUDSO1ks2WlQl3aWqWoZ3bDIHfq1zQZZS/G5n2XQ==","signatures":[{"sig":"MEUCID0MTzo6fCmEj4bxOyVJFzqZw1d2l22lMRdZR4/C9GWKAiEAuQgaH2jlypux0Ihi3KvTZU5sLH/pUX79zbVvrLT7zC8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDy7qClvQB2MDzrk8qEb/EnDEsHGOD8AM/XFwOHEvMw5QIhAKhZL8zCyNYm/AHCfqalDNeYYLQrIcGVs8QCNkjuqzAj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64539},"type":"module","gitHead":"1323da7b3631cef68e70d25d714b08d5a0837833","scripts":{"test":"node --import tsx --test extensions/test/unit.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-router"},"_npmVersion":"10.9.8","description":"Pi extension that connects to any OpenAI-compatible AI router (9router, omniroute, …) via its /v1 API.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@bacnh85/pi-config-panel":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","typescript":"^5.9.3","@types/node":"^20.19.43"},"peerDependencies":{"@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-router_1.1.7_1789331074052_0.351152623486086","host":"s3://npm-registry-packages-npm-production"}},"1.1.8":{"name":"@bacnh85/pi-router","version":"1.1.8","keywords":["pi","pi-extension","router","9router","omniroute","ai-router","openai-proxy","api-gateway"],"license":"MIT","_id":"@bacnh85/pi-router@1.1.8","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-router","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"a5eea39899e8b884d601283b1825f0260851ce62","tarball":"https://registry.npmjs.org/@bacnh85/pi-router/-/pi-router-1.1.8.tgz","fileCount":11,"integrity":"sha512-vDERRiUkssWRxnariLMQTtHfbdSp3XVPJvPtoxBHUzHa+5F3CnyOUZxBLJOOYiJILxTIv97KrpRnOjnXzE+39g==","signatures":[{"sig":"MEQCID5ipz+h0e/gXh72KN1UHj3s85WiLcNi2o6viY+n3+xGAiBaGGYx/tu38eoxWgYZl3aWMURe1LNnknF84C3tJgLxTA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDGniBn7MO/uRxXnu0J/8HRH6mZxtpWtsRThwEwqkAFygIhANBayR7lxGp/ACcCGDsdSEPOnWlC15GAw16oT9YTdFTz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64493},"type":"module","gitHead":"d00c3deaa5f3423b44adc2e160397b2feaf8465f","scripts":{"test":"node --import tsx --test extensions/test/unit.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-router"},"_npmVersion":"10.9.8","description":"Pi extension that connects to any OpenAI-compatible AI router (9router, omniroute, …) via its /v1 API.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@bacnh85/pi-config-panel":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","typescript":"^5.9.3","@types/node":"^20.19.43"},"peerDependencies":{"@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-router_1.1.8_1789881083098_0.6432677566678187","host":"s3://npm-registry-packages-npm-production"}},"1.1.9":{"name":"@bacnh85/pi-router","version":"1.1.9","keywords":["pi","pi-extension","router","9router","omniroute","ai-router","openai-proxy","api-gateway"],"license":"MIT","_id":"@bacnh85/pi-router@1.1.9","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-router","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"9d89241946da74cd705e82be6687977c8501ca14","tarball":"https://registry.npmjs.org/@bacnh85/pi-router/-/pi-router-1.1.9.tgz","fileCount":11,"integrity":"sha512-OH6519eIS88WW+bjrAW3x0zRGflduzhTEBaatoQxgS3HX3Flolt4btKMc2Jfv6u0gZSVsZqG5EwJ61n+cqsA0A==","signatures":[{"sig":"MEUCIEKAP/Rv+DMfX7nJ9uOUI6s5Ik7T8ioVVTU5bV7Yw28vAiEA1MOqvZEPMk5fZiw/GcjiFFwLeWB4dMPf5q44jyarkZM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC3z6T8PYf3w4BamrNzRX8MHsErKbpi+vcKNVD8vtw5VAIhALaftRAlEnU1rItQwsL4dsJzrTJAp4sGSSFFZG6Fm4mM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66495},"type":"module","gitHead":"b5330ac3d014f92dff97a2b90cd9ebdbf0de22fd","scripts":{"test":"node --import tsx --test extensions/test/unit.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-router"},"_npmVersion":"10.9.8","description":"Pi extension that connects to any OpenAI-compatible AI router (9router, omniroute, …) via its /v1 API.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@bacnh85/pi-config-panel":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","typescript":"^5.9.3","@types/node":"^20.19.43"},"peerDependencies":{"@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-router_1.1.9_1789962655081_0.6301297036190894","host":"s3://npm-registry-packages-npm-production"}},"1.1.10":{"name":"@bacnh85/pi-router","version":"1.1.10","keywords":["pi","pi-extension","router","9router","omniroute","ai-router","openai-proxy","api-gateway"],"license":"MIT","_id":"@bacnh85/pi-router@1.1.10","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-router","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"7433eae1cb0cecd6bc7a4f5d5ce320d7fb4c4e40","tarball":"https://registry.npmjs.org/@bacnh85/pi-router/-/pi-router-1.1.10.tgz","fileCount":11,"integrity":"sha512-XqG/uFHfNaAj/D18mUIngR5UmrTjdzvtA4WaYb0z/NH2eUtQQB+NMqAL2TOK8SjbvxFh838PNc56ZhRfe3CKCQ==","signatures":[{"sig":"MEQCIFNG3UKiPZJUzqNWz2SeWDFe2aX04twu177vLll6+biYAiAZCodSMJpDfkgeuwpjnILs6IDeV8CJoWGkNhoU4FjO0Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBnOKnG/+vSEKhsZwabrwFr7VSwXIaTGrG2gBp/fvj7DAiEApvkDZy9yJdZtEZIldXfglHUWegGS3I/9YD56i+YDApM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":67990},"type":"module","gitHead":"44f739e0204ab465fa0b1f770b225ce14941e4f7","scripts":{"test":"node --import tsx --test extensions/test/unit.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-router"},"_npmVersion":"10.9.8","description":"Pi extension that connects to any OpenAI-compatible AI router (9router, omniroute, …) via its /v1 API.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@bacnh85/pi-config-panel":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","typescript":"^5.9.3","@types/node":"^20.19.43"},"peerDependencies":{"@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-router_1.1.10_1790081950609_0.7443441225073435","host":"s3://npm-registry-packages-npm-production"}},"1.1.11":{"name":"@bacnh85/pi-router","version":"1.1.11","keywords":["pi","pi-extension","router","9router","omniroute","ai-router","openai-proxy","api-gateway"],"license":"MIT","_id":"@bacnh85/pi-router@1.1.11","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-router","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"f4a79d0ccff599f41278302769c88543e7da4a36","tarball":"https://registry.npmjs.org/@bacnh85/pi-router/-/pi-router-1.1.11.tgz","fileCount":12,"integrity":"sha512-EmEdwfBqeq5a6U7DGGemVBIxpGEnZuB27BbQOamgtzTvl9ZSwSSOcnrrPWo/BLK4UY3NePJLEhVBGNjpHLS07Q==","signatures":[{"sig":"MEUCIQCxZQG5RelqL8dvIy3Q3MA9dlvEiOIhJhjwIAy+wnKDgwIgM0Jf079K5/Zi7uB3962YsarOBZz1rIecgG6l4aCS9rc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCFit3SNfILwJNFOoKZEbSla2DsYyfqviZP9D7jlGVbnQIgT+MFiND076nxAlZfOjGMWClpcASoEdUVQ1ISTG7eTqI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69143},"type":"module","gitHead":"e0ab9215e2df54e5fa42f1c6cc6f616124fdea95","scripts":{"test":"node --import tsx --test extensions/test/unit.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-router"},"_npmVersion":"10.9.8","description":"Pi extension that connects to any OpenAI-compatible AI router (9router, omniroute, …) via its /v1 API.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@bacnh85/pi-config-panel":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","typescript":"^5.9.3","@types/node":"^20.19.43"},"peerDependencies":{"@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-router_1.1.11_1790123344618_0.0060780406680502885","host":"s3://npm-registry-packages-npm-production"}},"1.1.12":{"name":"@bacnh85/pi-router","version":"1.1.12","keywords":["pi","pi-extension","router","9router","omniroute","ai-router","openai-proxy","api-gateway"],"license":"MIT","_id":"@bacnh85/pi-router@1.1.12","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-router","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"4c9c4889d5a308b91fa1c4490e5212abcca04048","tarball":"https://registry.npmjs.org/@bacnh85/pi-router/-/pi-router-1.1.12.tgz","fileCount":12,"integrity":"sha512-fAUB2is6H1dKq6DUQaoz6jRbilYiSQ6YpzioGFWe27E5Uuqi0s5ab++7XL91KoqDxxCBPIJ5Sv0MBy07hz4E2w==","signatures":[{"sig":"MEQCICPg1FUkXAmv3gmoIioqdv7qeg3XtL9eA+Xe8ryy/2wXAiAQtYHYoyquOIGDamn69+sSS7Dd/pGArBMntkG0RInCqw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIH6W15rHaA5rLSueXhIcXK868EcwYPGdeulKsQnpaOaFAiBRyjdc3DYjibMbxAW4hWB7HLOv7ZXHzACcailq6EC80A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70174},"type":"module","gitHead":"47ee5073837a97916572d769f13d86f55d54ef00","scripts":{"test":"node --import tsx --test extensions/test/unit.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-router"},"_npmVersion":"10.9.8","description":"Pi extension that connects to any OpenAI-compatible AI router (9router, omniroute, …) via its /v1 API.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@bacnh85/pi-config-panel":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","typescript":"^5.9.3","@types/node":"^20.19.43"},"peerDependencies":{"@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-router_1.1.12_1790209446837_0.015205294566624117","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@bacnh85/pi-router","version":"1.2.0","keywords":["pi","pi-extension","router","9router","omniroute","ai-router","openai-proxy","api-gateway"],"license":"MIT","_id":"@bacnh85/pi-router@1.2.0","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-router","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"9ca7a1747a4de8ad51a857fac7fa037d87953554","tarball":"https://registry.npmjs.org/@bacnh85/pi-router/-/pi-router-1.2.0.tgz","fileCount":12,"integrity":"sha512-kZ7htqirsX8iKZQulbw0LG/nwoLGm6viHfVuMeHZSMaEBbIEyWHspI2WEhOPzJsHhyDCHj9tUaRZtBgZJCnsww==","signatures":[{"sig":"MEUCIEQTd06yVnPVm3SK7q24hnhCsJ1FP/ymgFgUwJi4T6YwAiEAmHlmn4qCPhOp/Ms23rl3TuII/KXgHthCHQuGZ9Xy6nw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDGSPZ6xn43xSGWnsMZd85fgPtyaSwekSeFXmyuQg1sCwIhAI1hcqhPpZWxaug8jHPv5AtS4MQ9Y8uAVFWGtk4kp1WR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77569},"type":"module","gitHead":"96be5eeebc4f99671b138839705da506dd6795c4","scripts":{"test":"node --import tsx --test extensions/test/unit.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-router"},"_npmVersion":"10.9.8","description":"Pi extension that connects to any OpenAI-compatible AI router (9router, omniroute, …) via its /v1 API.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@bacnh85/pi-config-panel":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","typescript":"^5.9.3","@types/node":"^20.19.43"},"peerDependencies":{"@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-router_1.2.0_1790231173875_0.22380356962421866","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@bacnh85/pi-router","version":"1.2.1","keywords":["pi","pi-extension","router","9router","omniroute","ai-router","openai-proxy","api-gateway"],"license":"MIT","_id":"@bacnh85/pi-router@1.2.1","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-router","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"da1808aaf8795cfc72efbb5cb0780adc25242881","tarball":"https://registry.npmjs.org/@bacnh85/pi-router/-/pi-router-1.2.1.tgz","fileCount":12,"integrity":"sha512-v8vC6o6YWNcMpjp/BaBPry1JLYuQkbvsa52bXf0MvECAcTvGU+Ni1KtlStZbILzkh6m/6lHRwX+0k457SCwIyQ==","signatures":[{"sig":"MEYCIQC6UK3dbt6QCunnEFjLGPTn5q4iT7uD68a8XDD3Z9YGdgIhAPYmBpQJ7cCcZGEXxUC0Nxr1JfARLDFtGL+xk7hqfOzI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDgotc0OiFnXvp/WNF1P1FjPW6Dck+J3y0cBCeWsHRF+gIhAPCP+oF1CqFw6yM5QiLyknw3VyWAMRLZ+LFlbKnOl1lJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78482},"type":"module","gitHead":"e02cafaac9489121af9fd23bd6d50463b57b4764","scripts":{"test":"node --import tsx --test extensions/test/unit.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-router"},"_npmVersion":"10.9.8","description":"Pi extension that connects to any OpenAI-compatible AI router (9router, omniroute, …) via its /v1 API.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@bacnh85/pi-config-panel":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","typescript":"^5.9.3","@types/node":"^20.19.43"},"peerDependencies":{"@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-router_1.2.1_1790338894935_0.16920980432699007","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@bacnh85/pi-router","version":"1.2.2","keywords":["pi","pi-extension","router","9router","omniroute","ai-router","openai-proxy","api-gateway"],"license":"MIT","_id":"@bacnh85/pi-router@1.2.2","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-router","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"0d68494a3905a1590618e99ebca290fdf6f7a26e","tarball":"https://registry.npmjs.org/@bacnh85/pi-router/-/pi-router-1.2.2.tgz","fileCount":12,"integrity":"sha512-bv2NKMs8xYQLBN0Iwfd1w+I/fuV7injEE3DFb/x7pS5A5QmWkcwrsRh5o+qYSpxKTHULbciQbb5Vl5eEpWD1nQ==","signatures":[{"sig":"MEQCIBjswRcFkYaa3I69iwyxGQe2IiB2kHvcNGIg+F3KY5KSAiBK/IKw43Tfr/53zce5omhrgd1/ZqSgsuxnLVNzsJP+LA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHGNrvk7WTSt9M76iPZa0k8J/c2RiStzW2MBrJH1rK0KAiEAz4F19gU7vcOK/CyXbOShgUZyMAQQ3OH2qwinttKgZvQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78703},"type":"module","gitHead":"edad246dd00bc061afdca0cd50782d3883535f96","scripts":{"test":"node --import tsx --test extensions/test/unit.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-router"},"_npmVersion":"10.9.8","description":"Pi extension that connects to any OpenAI-compatible AI router (9router, omniroute, …) via its /v1 API.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@bacnh85/pi-config-panel":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","typescript":"^5.9.3","@types/node":"^20.19.43"},"peerDependencies":{"@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-router_1.2.2_1790386966604_0.5348984454031658","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"pi":{"extensions":["./extensions/index.ts"]},"_id":"@bacnh85/pi-router@1.2.3","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"dist":{"shasum":"7e8eb2b320dee1509c91b719656d9ad4de27b59b","tarball":"https://registry.npmjs.org/@bacnh85/pi-router/-/pi-router-1.2.3.tgz","fileCount":13,"integrity":"sha512-AGcvOc2nLlUBn/5d8GhNEmm2DQPyv6B2I5AE2jm9NyU/DjpdfYythprlU5tAfuhgfqA1bP74ca0QyVbLBa/LCg==","signatures":[{"sig":"MEYCIQC2eJU+wfCRjCSHbYFXl6ker+o+GZR/omDIKEhcDdjzkQIhAN9HGPkcLQzvLzYYiEzRNnhm/iWBwHAHm166/KJmdH8F","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC8s4i22Zba4VZHC0x0wa7VsDKuTW3A6Eo6rKUUqwpZLgIgemsSmhtHYCnKZpG3RpPzxgBPgyjh6HXuHW0jBI1WYy0="}],"unpackedSize":79208},"name":"@bacnh85/pi-router","type":"module","gitHead":"90930b50f5fc0a4491a748ee1692db40f7ec358a","license":"MIT","scripts":{"test":"node --import tsx --test extensions/test/unit.test.ts","typecheck":"tsc --noEmit"},"version":"1.2.3","_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-router","keywords":["pi","pi-extension","router","9router","omniroute","ai-router","openai-proxy","api-gateway"],"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-router"},"_npmVersion":"10.9.8","description":"Pi extension that connects to any OpenAI-compatible AI router (9router, omniroute, …) via its /v1 API.","directories":{},"maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"_nodeVersion":"22.23.2","dependencies":{"@bacnh85/pi-config-panel":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","typescript":"^5.9.3","@types/node":"^20.19.43"},"peerDependencies":{"@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-router_1.2.3_1790555354088_0.6429115580539451"}}},"time":{"created":"2026-08-22T01:29:38.635Z","modified":"2026-09-28T00:29:14.309Z","1.0.1":"2026-08-22T01:29:38.938Z","1.1.0":"2026-08-23T02:57:03.374Z","1.1.1":"2026-08-25T14:50:20.328Z","1.1.3":"2026-08-26T12:16:47.552Z","1.1.4":"2026-08-29T14:24:36.585Z","1.1.5":"2026-09-06T09:54:37.772Z","1.1.6":"2026-09-12T09:12:27.718Z","1.1.7":"2026-09-13T20:24:34.132Z","1.1.8":"2026-09-20T05:11:23.192Z","1.1.9":"2026-09-21T03:50:55.178Z","1.1.10":"2026-09-22T12:59:10.684Z","1.1.11":"2026-09-23T00:29:04.728Z","1.1.12":"2026-09-24T00:24:06.933Z","1.2.0":"2026-09-24T06:26:13.976Z","1.2.1":"2026-09-25T12:21:35.018Z","1.2.2":"2026-09-26T01:42:46.751Z","1.2.3":"2026-09-28T00:29:14.167Z"},"bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"license":"MIT","homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-router","keywords":["pi","pi-extension","router","9router","omniroute","ai-router","openai-proxy","api-gateway"],"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-router"},"description":"Pi extension that connects to any OpenAI-compatible AI router (9router, omniroute, …) via its /v1 API.","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"readme":"# pi-router\n\nPi extension that connects to **any OpenAI-compatible AI router** — [9router],\nomniroute, or any proxy exposing `GET /v1/models` + `/v1/chat/completions` —\nand registers its models as a single generic `router` provider.\n\nFormerly `@bacnh85/pi-9router` (settings are migrated automatically, see below).\n\n## Install\n\n```bash\npi install @bacnh85/pi-router\n```\n\n## Configure\n\nTwo pieces, matching Pi conventions:\n\n| What | Where |\n|------|-------|\n| **Endpoint URL** | `~/.pi/agent/settings.json` → `router.baseUrl` (or `ROUTER_BASE_URL` env; repo `.pi/settings.json` also read for trusted projects, `router.apiKey` there is ignored) |\n| **API key** | Pi's built-in `/login router` → stored in `~/.pi/agent/auth.json` (or `ROUTER_API_KEY` env) |\n\n```jsonc\n// ~/.pi/agent/settings.json\n{\n  \"router\": {\n    \"baseUrl\": \"http://localhost:20128/v1\",\n    \"enableReasoning\": true   // optional, default true\n  }\n}\n```\n\nThen:\n\n```\n/login router        # store API key in auth.json (same as other providers)\n```\n\nPrecedence: env vars > repo `.pi/settings.json` > global settings.json.\nThe auth.json credential wins over `ROUTER_API_KEY` when both exist.\nLegacy `NINE_ROUTER_BASE_URL` still works for the URL. For the key, prefer\n`ROUTER_API_KEY` (or `/login router` — recommended); discovery requests also\nfall back to `NINE_ROUTER_API_KEY` if that's all you have set.\n\n**Repo-scope trust gate.** Repo `.pi/settings.json` `router` values are only\nread when the project is trusted (Pi's `trustProject`); untrusted checkouts\nignore them entirely, and `router.apiKey` from a repo file is never read —\ncredentials must come from auth.json or the env. An untrusted checkout thus\ncannot redirect `router.baseUrl` to an attacker endpoint.\n\n**`ROUTER_ENABLE_REASONING` env var** (legacy alias\n`NINE_ROUTER_ENABLE_REASONING`): set to `true`/`false` to override the\npersisted `router.enableReasoning` flag — it wins over both settings files\nand shadows what `/router-reasoning` saves (the command reports this).\n\n## Model discovery (cached, auto-refreshed)\n\nModels are fetched automatically via Pi's native `refreshModels`:\n\n- Every session start pulls `GET /v1/models` in the background — TUI, RPC,\n  and print modes alike (Pi core only network-refreshes from the TUI `/model`\n  picker; this covers the rest).\n- A 5-minute timer re-pulls while pi runs; a 15-minute TTL keeps a fresh\n  catalog from fetching at all. `PI_OFFLINE` disables all network pulls.\n- The result is cached in `~/.pi/agent/models-store.json` under the `router`\n  key with a `checkedAt` timestamp — next session restores instantly, offline,\n  and freshness survives restarts.\n- Reasoning levels (Shift+Tab, `:high` suffixes) map per model family\n  (OpenAI, Claude, Gemini, DeepSeek, Kimi, Qwen, GLM, …).\n\n## Commands\n\n| Command | Description |\n|---------|-------------|\n| `/login router` | Built-in Pi login — stores the API key in auth.json |\n| `/router-status` | Endpoint, masked key, model count |\n| `/router-config` | Interactive settings panel (baseUrl, reasoning) |\n| `/router-reasoning` | Toggle thinking levels on router models |\n| `/router-model [search]` | Search/select a router model |\n\n## Migration from pi-9router\n\nOn load, if `~/.pi/agent/9router-config.json` exists:\n\n- `baseUrl` + `enableReasoning` → settings.json `router` section\n- `apiKey` → auth.json `router` credential\n- The legacy file is renamed `9router-config.json.migrated` (never deleted)\n\nAlso update `~/.pi/agent/settings.json` `packages` path `pi-9router` → `pi-router`.\n\n## License\n\nMIT\n\n[9router]: https://github.com/nicepkg/9router\n","readmeFilename":"README.md"}