{"_id":"@brglng/pi-model-discovery","_rev":"2-6611cfd8cbb61a85b4f38e2cd880d4dd","name":"@brglng/pi-model-discovery","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@brglng/pi-model-discovery","version":"0.1.0","keywords":["pi-package","pi","pi-extension","coding-agent","model-discovery","models-json","openai","anthropic"],"author":{"name":"brglng"},"license":"MPL-2.0","_id":"@brglng/pi-model-discovery@0.1.0","maintainers":[{"name":"brglng","email":"brglng@gmail.com"}],"homepage":"https://github.com/brglng/pi-model-discovery#readme","bugs":{"url":"https://github.com/brglng/pi-model-discovery/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"657951fb828bdb771bfc937ccb50fb8acd91feaf","tarball":"https://registry.npmjs.org/@brglng/pi-model-discovery/-/pi-model-discovery-0.1.0.tgz","fileCount":10,"integrity":"sha512-ZsddD1odHi2xgJUOWBdl0Evcp2pxohQNqpzXsNlBk12uvzQ1oxdPWc510GV4MhKfTP9IskL6xPmhRfnRVD39xA==","signatures":[{"sig":"MEYCIQDsVfKbISrI8en2rtzoqXlY3d0j00nriJrEbh/kGaptYQIhAMEq1E1q4y4dGKP6FGD0h6GZgjbsvClU91PzmVTOalbd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39068},"type":"module","engines":{"node":">=22"},"exports":{".":{"types":"./dist/public.d.ts","default":"./src/index.ts"}},"scripts":{"lint":"biome check . && pnpm run lint:md","test":"vitest run","check":"tsc --noEmit","lint:md":"rumdl check *.md","build:types":"rollup -c rollup.dts.config.mjs"},"_npmUser":{"name":"brglng","email":"brglng@gmail.com"},"repository":{"url":"git+https://github.com/brglng/pi-model-discovery.git","type":"git"},"description":"Model auto-discovery for Pi using only models.json — no extension development needed","directories":{},"_nodeVersion":"26.8.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rumdl":"^0.2.10","rollup":"^4.62.2","vitest":"^4.1.8","typescript":"^6.0.3","@types/node":"^22.15.3","@biomejs/biome":"^2.4.16","rollup-plugin-dts":"^6.4.1","@earendil-works/pi-coding-agent":"0.79.1"},"peerDependencies":{"@earendil-works/pi-coding-agent":">=0.79.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-model-discovery_0.1.0_1788243289155_0.2819075693402251","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@brglng/pi-model-discovery","version":"0.1.1","description":"Model auto-discovery for Pi using only models.json — no extension development needed","type":"module","exports":{".":{"types":"./dist/public.d.ts","default":"./src/index.ts"}},"keywords":["pi-package","pi","pi-extension","coding-agent","model-discovery","models-json","openai","anthropic"],"author":{"name":"brglng"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/brglng/pi-model-discovery.git"},"homepage":"https://github.com/brglng/pi-model-discovery#readme","bugs":{"url":"https://github.com/brglng/pi-model-discovery/issues"},"engines":{"node":">=22"},"publishConfig":{"access":"public"},"pi":{"extensions":["./src/index.ts"]},"peerDependencies":{"@earendil-works/pi-coding-agent":">=0.79.0"},"devDependencies":{"@biomejs/biome":"^2.4.16","@earendil-works/pi-coding-agent":"0.79.1","@types/node":"^22.15.3","rollup":"^4.62.2","rollup-plugin-dts":"^6.4.1","rumdl":"^0.2.10","typescript":"^6.0.3","vitest":"^4.1.8"},"scripts":{"check":"tsc --noEmit","build:types":"rollup -c rollup.dts.config.mjs","test":"vitest run","lint:md":"rumdl check *.md","lint":"biome check . && pnpm run lint:md"},"_nodeVersion":"26.8.1","_id":"@brglng/pi-model-discovery@0.1.1","dist":{"integrity":"sha512-L4xtKPV5Gc+Sx9HzeOV4qqHidZ4ZKHm2D02VyfRuv0kBZ8414TiFlX632v8ZJuyJk5rR3dKm2TLMghP5pNPqfw==","shasum":"ddc6b1ed61fd53c5e8ffef99cbdf546c0ac7cb3b","tarball":"https://registry.npmjs.org/@brglng/pi-model-discovery/-/pi-model-discovery-0.1.1.tgz","fileCount":10,"unpackedSize":34322,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD9GLEahgmYuoAhGtl6EhIvMSbFU2Ds+FiL007nLcfbSQIhAPgbwYi8tdLj5JCkBvRfnYjeMfiV/7sLQe4WhVO6VazU"}]},"_npmUser":{"name":"brglng","email":"brglng@gmail.com"},"directories":{},"maintainers":[{"name":"brglng","email":"brglng@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-model-discovery_0.1.1_1788454253528_0.573268617153645"},"_hasShrinkwrap":false}},"time":{"created":"2026-09-01T06:14:48.968Z","modified":"2026-09-03T16:50:53.861Z","0.1.0":"2026-09-01T06:14:49.292Z","0.1.1":"2026-09-03T16:50:53.690Z"},"bugs":{"url":"https://github.com/brglng/pi-model-discovery/issues"},"author":{"name":"brglng"},"license":"MPL-2.0","homepage":"https://github.com/brglng/pi-model-discovery#readme","keywords":["pi-package","pi","pi-extension","coding-agent","model-discovery","models-json","openai","anthropic"],"repository":{"type":"git","url":"git+https://github.com/brglng/pi-model-discovery.git"},"description":"Model auto-discovery for Pi using only models.json — no extension development needed","maintainers":[{"name":"brglng","email":"brglng@gmail.com"}],"readme":"# @brglng/pi-model-discovery\n\nA Pi extension that adds model auto-discovery to Pi using only the\n`providers` section of Pi's native `~/.pi/agent/models.json` — no extension\ndevelopment needed. Same format as Pi's built-in model configuration, with\n`<baseUrl>/models` discovery and per-model overrides built in.\n\n## Installation\n\n```bash\npi install /absolute/path/to/pi-model-discovery\n```\n\nAfter publication:\n\n```bash\npi install npm:@brglng/pi-model-discovery\n```\n\n## Configuration\n\nProviders are defined under the `providers` key of Pi's native\n`~/.pi/agent/models.json`. The key is the provider ID; each value is one\nprovider. For example:\n\n```json\n{\n  \"providers\": {\n    \"gateway\": {\n      \"$schema\": \"https://raw.githubusercontent.com/brglng/pi-model-discovery/main/schemas/config.schema.json\",\n      \"name\": \"My Gateway\",\n      \"baseUrl\": \"https://api.example.com/v1\",\n      \"apiKey\": \"$GATEWAY_API_KEY\",\n      \"api\": \"openai-completions\",\n      \"models\": [\n        {\n          \"id\": \"special-model\",\n          \"api\": \"openai-responses\",\n          \"baseUrl\": \"http://192.168.5.46:18000/v1\",\n          \"maxTokens\": 32768\n        }\n      ]\n    }\n  }\n}\n```\n\n`baseUrl` is the provider default URL and is optional. Providers without a\n`baseUrl` remain in the configuration, but the extension skips remote model\ndiscovery for them. `apiKey` uses Pi's native config value syntax. API keys are\nprovider-level; Pi's native model configuration does not support a separate API\nkey per model. It supports literals, `$ENV_VAR`, `${ENV_VAR}`, and leading\n`!command` values. The key is never stored in the configuration when an\nenvironment variable or command reference is used.\n\n## Model discovery and overrides\n\nModel discovery is always enabled: the extension requests `<baseUrl>/models`\nwith a Bearer token. It accepts common OpenAI-style responses (`data`), bare\narrays, and catalogs nested under `models` or `output.models`. Set\n`PI_OFFLINE=1` to skip all network requests during startup.\n\nServer model metadata is used by default. Entries in the `models` array can\nspecify overrides for configured model IDs. Provider and model fields are kept\nas supplied; this extension does not validate fields it does not consume.\nConfigured model IDs are also retained when the server does not return them.\nCommon fields include `name`, `api`, `baseUrl`, `reasoning`,\n`thinkingLevelMap`, `input`, `cost`, `contextWindow`, `maxTokens`,\n`samplingParams`, `headers`, and `compat`. This allows each model to select a\ndifferent endpoint and API type such as `openai-completions`,\n`openai-responses`, or `anthropic-messages`. The spelling\n`anthropic-message` is accepted as an alias.\n\nIf discovery fails, explicitly configured models remain available.\n\n## Commands\n\n- `/model-discovery status` shows configured providers and model counts.\n- `/model-discovery refresh` refreshes every catalog.\n- `/model-discovery refresh <provider>` refreshes one catalog.\n\n## License\n\nMPL-2.0\n","readmeFilename":""}