{"_id":"@abyssal-labs/opencode-models-discovery","_rev":"11-114e2572584697bfbba806979fbc789e","name":"@abyssal-labs/opencode-models-discovery","dist-tags":{"latest":"0.8.0"},"versions":{"0.1.0":{"name":"@abyssal-labs/opencode-models-discovery","version":"0.1.0","license":"MIT","_id":"@abyssal-labs/opencode-models-discovery@0.1.0","maintainers":[{"name":"kakatkarakshay","email":"me@kakatkarakshay.dev"}],"dist":{"shasum":"5c615df9f1f122ce408300a01eec0c97cb0207ae","tarball":"https://registry.npmjs.org/@abyssal-labs/opencode-models-discovery/-/opencode-models-discovery-0.1.0.tgz","fileCount":4,"integrity":"sha512-TcqMy4HG1Vlsi+4DoNFfjN2ny3Vy8yT2ySb6RngnoxwZD3uh5t2fjhHsrGYXcy+S/LgFBn9rTl0pk3OH+n714g==","signatures":[{"sig":"MEUCIGDuYpdathzKcLtZf9aKvgp1COvPCybDjm1eMmLbaKjAAiEAvEjo+uUwxrr8fcOLelwVEPyTpWQsOVYgd821eOejlQc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18040},"main":"./src/index.ts","type":"module","exports":{".":"./src/index.ts"},"gitHead":"24ce507740e19348798919cdbaf0167033c0472d","scripts":{"typecheck":"tsc --noEmit"},"_npmUser":{"name":"kakatkarakshay","email":"me@kakatkarakshay.dev"},"_npmVersion":"11.11.0","description":"opencode plugin that refreshes OpenAI-compatible model metadata from /models endpoints","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@opencode-ai/plugin":"^1.0.166"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^25.0.3"},"_npmOperationalInternal":{"tmp":"tmp/opencode-models-discovery_0.1.0_1779685524249_0.6379487684998981","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@abyssal-labs/opencode-models-discovery","version":"0.1.1","license":"MIT","_id":"@abyssal-labs/opencode-models-discovery@0.1.1","maintainers":[{"name":"kakatkarakshay","email":"me@kakatkarakshay.dev"}],"homepage":"https://github.com/abyssal-labs/opencode-models-discovery#readme","bugs":{"url":"https://github.com/abyssal-labs/opencode-models-discovery/issues"},"dist":{"shasum":"dbef33cf390301915e8937ee11feeb7becb257fc","tarball":"https://registry.npmjs.org/@abyssal-labs/opencode-models-discovery/-/opencode-models-discovery-0.1.1.tgz","fileCount":6,"integrity":"sha512-c5nYLQ1Vf2/8jEu4D3asV+q+3eZJH6vZb9S3jfaMPmySMBJcAbZO1HpTxBBMnNyn3oaIWfuxqvSZOTiSFtkkHg==","signatures":[{"sig":"MEQCIA5+IfOxLFXTWs9lGgjXL/0p2ezndFrtRLKYo7f5OaY5AiAZ972GJw8EQwr0KlrTdDsieOt9mtTPmQP029SNQYA0pA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20133},"main":"./src/index.ts","type":"module","exports":{".":"./src/index.ts"},"gitHead":"439f4cf2a3d3ff45f2277340719f1ee87b96cd77","scripts":{"typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b16bd8e5-73bc-4424-b611-5ac61cbe7e5d"}},"repository":{"url":"git+https://github.com/abyssal-labs/opencode-models-discovery.git","type":"git"},"_npmVersion":"11.15.0","description":"opencode plugin that refreshes OpenAI-compatible model metadata from /models endpoints","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@opencode-ai/plugin":"^1.0.166"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^25.0.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.8"},"_npmOperationalInternal":{"tmp":"tmp/opencode-models-discovery_0.1.1_1779687333979_0.6020306302980101","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@abyssal-labs/opencode-models-discovery","version":"0.1.2","license":"MIT","_id":"@abyssal-labs/opencode-models-discovery@0.1.2","maintainers":[{"name":"kakatkarakshay","email":"me@kakatkarakshay.dev"}],"homepage":"https://github.com/abyssal-labs/opencode-models-discovery#readme","bugs":{"url":"https://github.com/abyssal-labs/opencode-models-discovery/issues"},"dist":{"shasum":"ba063254bb38b336c325a5d473ed723114683296","tarball":"https://registry.npmjs.org/@abyssal-labs/opencode-models-discovery/-/opencode-models-discovery-0.1.2.tgz","fileCount":6,"integrity":"sha512-OcOl3QT9ydH8W9GuzhDxh++I/rD0W5+0z73ZXYweqPpaRl5n4D5UvDua9HitYiubR3uWLR81pV8byV4e02vktw==","signatures":[{"sig":"MEQCIBHKjWnGOnZAa2Il8/U4ZrHbGqDeMle+0XOKP3PJ0l1KAiAwCh0dt+K+IMWNSMWayl4qkvRVQ+3Flgq7c0AbkjE+cg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abyssal-labs%2fopencode-models-discovery@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":26952},"main":"./src/index.ts","type":"module","exports":{".":"./src/index.ts"},"gitHead":"1ffeb7e1ab0a354b7809b52f6205ee08970caa84","scripts":{"typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b16bd8e5-73bc-4424-b611-5ac61cbe7e5d"}},"repository":{"url":"git+https://github.com/abyssal-labs/opencode-models-discovery.git","type":"git"},"_npmVersion":"11.15.0","description":"opencode plugin that refreshes OpenAI-compatible model metadata from /models endpoints","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@opencode-ai/plugin":"^1.0.166"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^25.0.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.8"},"_npmOperationalInternal":{"tmp":"tmp/opencode-models-discovery_0.1.2_1780572534699_0.9889386366789334","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@abyssal-labs/opencode-models-discovery","version":"0.2.0","keywords":["opencode","opencode-plugin","openai-compatible","model-discovery"],"license":"MIT","_id":"@abyssal-labs/opencode-models-discovery@0.2.0","maintainers":[{"name":"kakatkarakshay","email":"me@kakatkarakshay.dev"}],"homepage":"https://github.com/abyssal-labs/opencode-models-discovery#readme","bugs":{"url":"https://github.com/abyssal-labs/opencode-models-discovery/issues"},"dist":{"shasum":"2ac04721294d9dd6d7d2735b0fc4142de71a5c07","tarball":"https://registry.npmjs.org/@abyssal-labs/opencode-models-discovery/-/opencode-models-discovery-0.2.0.tgz","fileCount":5,"integrity":"sha512-uPwr8SU0GD8DG4b0Gmpq9+UEI/nAPMZQwWXdgm5dHucTVDXtnaViyNdAbDRs/6gk2c2JCn9jNnNOk+Z8UClrrA==","signatures":[{"sig":"MEQCIFh+mESu/qj1VyMKln0eq5blhqcx0fODfJFwxxNG2uCbAiAVS9r0+KIY8/WPL9mTk4V7YQh4owbbIGyzRegJH6NbLg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abyssal-labs%2fopencode-models-discovery@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":46228},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"9ce11d36dd35885168269115a3e0f7325c091a99","scripts":{"lint":"eslint .","test":"node --test --experimental-strip-types test/**/*.test.ts","build":"tsc -p tsconfig.build.json","prepack":"npm run build","typecheck":"tsc --noEmit","format:check":"prettier --check .","prepublishOnly":"npm test && npm run typecheck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b16bd8e5-73bc-4424-b611-5ac61cbe7e5d"}},"repository":{"url":"git+https://github.com/abyssal-labs/opencode-models-discovery.git","type":"git"},"_npmVersion":"11.18.0","description":"opencode plugin that refreshes OpenAI-compatible model metadata from /models endpoints","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.6.0","prettier":"^3.9.5","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.0.3","semantic-release":"^25.0.3","typescript-eslint":"^8.63.0","@opencode-ai/plugin":"^1.17.18","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.8"},"_npmOperationalInternal":{"tmp":"tmp/opencode-models-discovery_0.2.0_1783685347793_0.42194749378688656","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@abyssal-labs/opencode-models-discovery","version":"0.3.0","keywords":["opencode","opencode-plugin","openai-compatible","anthropic-compatible","model-discovery"],"license":"MIT","_id":"@abyssal-labs/opencode-models-discovery@0.3.0","maintainers":[{"name":"kakatkarakshay","email":"me@kakatkarakshay.dev"}],"homepage":"https://github.com/abyssal-labs/opencode-models-discovery#readme","bugs":{"url":"https://github.com/abyssal-labs/opencode-models-discovery/issues"},"dist":{"shasum":"7907fd4eea466ffb0297c798e0fe729261a7d2f9","tarball":"https://registry.npmjs.org/@abyssal-labs/opencode-models-discovery/-/opencode-models-discovery-0.3.0.tgz","fileCount":5,"integrity":"sha512-f0oNseYwPnosxOqOyO74+C3bd3DRrpeBnja6li276kzFHkTj3+IGfGzrD2/SB7HGtKKXAP+ZLYVzEP3aZJB92Q==","signatures":[{"sig":"MEYCIQDuVb3rd6DRgg9iQebyMERy9Sm6MVE2nlNopeQXx6/ZeAIhAJ7K13dDq/zTEDsmJXkAD4Qkrc4t2nGv0wsr5z2IfevY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abyssal-labs%2fopencode-models-discovery@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":49295},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"565ff55bdf528896f01fb7d256004f79edfe4885","scripts":{"lint":"oxlint --deny-warnings .","test":"node --test --experimental-strip-types test/**/*.test.ts","build":"tsc -p tsconfig.build.json","prepack":"npm run build","typecheck":"tsc --noEmit","format:check":"prettier --check .","prepublishOnly":"npm test && npm run typecheck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b16bd8e5-73bc-4424-b611-5ac61cbe7e5d"}},"repository":{"url":"git+https://github.com/abyssal-labs/opencode-models-discovery.git","type":"git"},"_npmVersion":"11.18.0","description":"opencode plugin that discovers OpenAI- and Anthropic-compatible models from /models endpoints","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"oxlint":"^1.73.0","prettier":"^3.9.5","typescript":"^7.0.2","@types/node":"^26.1.1","semantic-release":"^25.0.3","@opencode-ai/plugin":"^1.17.18","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.8"},"_npmOperationalInternal":{"tmp":"tmp/opencode-models-discovery_0.3.0_1784745086902_0.6234992468347071","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@abyssal-labs/opencode-models-discovery","version":"0.4.0","keywords":["opencode","opencode-plugin","openai-compatible","anthropic-compatible","model-discovery"],"license":"MIT","_id":"@abyssal-labs/opencode-models-discovery@0.4.0","maintainers":[{"name":"kakatkarakshay","email":"me@kakatkarakshay.dev"}],"homepage":"https://github.com/abyssal-labs/opencode-models-discovery#readme","bugs":{"url":"https://github.com/abyssal-labs/opencode-models-discovery/issues"},"dist":{"shasum":"db59b01d193dc500a76ecea015b6f91d3a63ecbb","tarball":"https://registry.npmjs.org/@abyssal-labs/opencode-models-discovery/-/opencode-models-discovery-0.4.0.tgz","fileCount":5,"integrity":"sha512-/uGRdIBW5hmRUKyhoWj3ltNaqZKC7Fn6zlV17ZcCGK3Ln3Ofua0ZCfBDv4HSPCczI1GOd2MtSuhkAu09TbbX3Q==","signatures":[{"sig":"MEUCIAEZsV6GC278hcF4Uq/ybjqIl5pPkeFEOh5pQlbXeIQhAiEA6l/unZoKyQtBj67r73pnOCB6Ru6ypVELsfkI4IeUfE4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abyssal-labs%2fopencode-models-discovery@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":49541},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"4846a112f65ddf77cc7fbd2435bb49d42b757d9c","scripts":{"lint":"oxlint --deny-warnings .","test":"node --test --experimental-strip-types test/**/*.test.ts","build":"tsc -p tsconfig.build.json","prepack":"npm run build","typecheck":"tsc --noEmit","format:check":"prettier --check .","prepublishOnly":"npm test && npm run typecheck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b16bd8e5-73bc-4424-b611-5ac61cbe7e5d"}},"repository":{"url":"git+https://github.com/abyssal-labs/opencode-models-discovery.git","type":"git"},"_npmVersion":"11.18.0","description":"opencode plugin that discovers OpenAI- and Anthropic-compatible models from /models endpoints","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"oxlint":"^1.73.0","prettier":"^3.9.5","typescript":"^7.0.2","@types/node":"^26.1.1","semantic-release":"^25.0.3","@opencode-ai/plugin":"^1.17.18","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.8"},"_npmOperationalInternal":{"tmp":"tmp/opencode-models-discovery_0.4.0_1784745993702_0.31010519084166144","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@abyssal-labs/opencode-models-discovery","version":"0.4.1","keywords":["opencode","opencode-plugin","openai-compatible","anthropic-compatible","model-discovery"],"license":"MIT","_id":"@abyssal-labs/opencode-models-discovery@0.4.1","maintainers":[{"name":"kakatkarakshay","email":"me@kakatkarakshay.dev"}],"homepage":"https://github.com/abyssal-labs/opencode-models-discovery#readme","bugs":{"url":"https://github.com/abyssal-labs/opencode-models-discovery/issues"},"dist":{"shasum":"dcda2ace82e470409a0d4f5d73687b75454345aa","tarball":"https://registry.npmjs.org/@abyssal-labs/opencode-models-discovery/-/opencode-models-discovery-0.4.1.tgz","fileCount":5,"integrity":"sha512-d0ubydsH5kgZ5QJVrI1W7b/kwhRogkySkKkhgazyzXBAPDQ7MkDOjNYYRq/3ItqV9oakpn4dDUxEFHfPPQzd8A==","signatures":[{"sig":"MEUCIGndrCvOH9+mojCSHQJGEUZ31ALASwO+79zBst6OOIMIAiEA9IQXvp2XbeCFYsf/vuAThmuLD9T9D2DINJjv4khMbpY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abyssal-labs%2fopencode-models-discovery@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":49219},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"7a039f8a059c0e29c831ed57e664e990d82a407b","scripts":{"lint":"oxlint --deny-warnings .","test":"node --test --experimental-strip-types test/**/*.test.ts","build":"tsc -p tsconfig.build.json","prepack":"npm run build","typecheck":"tsc --noEmit","format:check":"prettier --check .","prepublishOnly":"npm test && npm run typecheck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b16bd8e5-73bc-4424-b611-5ac61cbe7e5d"}},"repository":{"url":"git+https://github.com/abyssal-labs/opencode-models-discovery.git","type":"git"},"_npmVersion":"11.18.0","description":"opencode plugin that discovers OpenAI- and Anthropic-compatible models from /models endpoints","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"oxlint":"^1.73.0","prettier":"^3.9.5","typescript":"^7.0.2","@types/node":"^26.1.1","semantic-release":"^25.0.3","@opencode-ai/plugin":"^1.17.18","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.8"},"_npmOperationalInternal":{"tmp":"tmp/opencode-models-discovery_0.4.1_1784746166618_0.7759559585063311","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@abyssal-labs/opencode-models-discovery","version":"0.5.0","keywords":["opencode","opencode-plugin","openai-compatible","anthropic-compatible","model-discovery"],"license":"MIT","_id":"@abyssal-labs/opencode-models-discovery@0.5.0","maintainers":[{"name":"kakatkarakshay","email":"me@kakatkarakshay.dev"}],"homepage":"https://github.com/abyssal-labs/opencode-models-discovery#readme","bugs":{"url":"https://github.com/abyssal-labs/opencode-models-discovery/issues"},"dist":{"shasum":"6306625274b7d00b6c9580d452a2f11d10cd40ad","tarball":"https://registry.npmjs.org/@abyssal-labs/opencode-models-discovery/-/opencode-models-discovery-0.5.0.tgz","fileCount":5,"integrity":"sha512-5Xfoio4dkar20f0w/6dRYQXso7ha4MIrDfD/LLMJ6+F4hX1IW+aUV4EA2GdJqxy3ZhXIegYMtvMJmDss64PMBg==","signatures":[{"sig":"MEUCIHz8MtoJeqzuW1frx3HWk91Lr+2XATBUG5QaSOSAu60fAiEA31qEv/JMu1K+hy+wx7VbJhWR3P0UxC5aPxRZspUeV94=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abyssal-labs%2fopencode-models-discovery@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50695},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"077fc10ea4a6a7c2bd3c2e9ab4db0fc619289a5f","scripts":{"lint":"oxlint --deny-warnings .","test":"node --test --experimental-strip-types test/**/*.test.ts","build":"tsc -p tsconfig.build.json","prepack":"npm run build","typecheck":"tsc --noEmit","format:check":"prettier --check .","prepublishOnly":"npm test && npm run typecheck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b16bd8e5-73bc-4424-b611-5ac61cbe7e5d"}},"repository":{"url":"git+https://github.com/abyssal-labs/opencode-models-discovery.git","type":"git"},"_npmVersion":"11.18.0","description":"opencode plugin that discovers OpenAI- and Anthropic-compatible models from /models endpoints","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"oxlint":"^1.73.0","prettier":"^3.9.5","typescript":"^7.0.2","@types/node":"^26.1.1","semantic-release":"^25.0.3","@opencode-ai/plugin":"^1.17.18","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.8"},"_npmOperationalInternal":{"tmp":"tmp/opencode-models-discovery_0.5.0_1784746249036_0.15488581707073057","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@abyssal-labs/opencode-models-discovery","version":"0.6.0","keywords":["opencode","opencode-plugin","openai-compatible","anthropic-compatible","model-discovery"],"license":"MIT","_id":"@abyssal-labs/opencode-models-discovery@0.6.0","maintainers":[{"name":"kakatkarakshay","email":"me@kakatkarakshay.dev"}],"homepage":"https://github.com/abyssal-labs/opencode-models-discovery#readme","bugs":{"url":"https://github.com/abyssal-labs/opencode-models-discovery/issues"},"dist":{"shasum":"67e3ae10974f951cd035fc05f4a3189c3a82121a","tarball":"https://registry.npmjs.org/@abyssal-labs/opencode-models-discovery/-/opencode-models-discovery-0.6.0.tgz","fileCount":5,"integrity":"sha512-/e0uI4jHWI0aPTaOPWLtz2q+dYcw240+dXOH5YA2O66vLH/8ued2jZ4CNh93TpLeJeOuPzL0KW7JJ16QEzzQ1w==","signatures":[{"sig":"MEUCIG6eqYFX/CWkishW/lsDincHskmxKC9mAoW7ZsqZJfRbAiEApWBAbS1PmGw81LaLJLgpGXEHcOaUJzY6CdG/+MqGCRk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abyssal-labs%2fopencode-models-discovery@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":51462},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"0cf4d66315db3716cd56c363c305c9c009f03e18","scripts":{"lint":"oxlint --deny-warnings .","test":"node --test --experimental-strip-types test/**/*.test.ts","build":"tsc -p tsconfig.build.json","prepack":"npm run build","typecheck":"tsc --noEmit","format:check":"prettier --check .","prepublishOnly":"npm test && npm run typecheck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b16bd8e5-73bc-4424-b611-5ac61cbe7e5d"}},"repository":{"url":"git+https://github.com/abyssal-labs/opencode-models-discovery.git","type":"git"},"_npmVersion":"11.18.0","description":"opencode plugin that discovers OpenAI- and Anthropic-compatible models from /models endpoints","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"oxlint":"^1.73.0","prettier":"^3.9.5","typescript":"^7.0.2","@types/node":"^26.1.1","semantic-release":"^25.0.3","@opencode-ai/plugin":"^1.17.18","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.8"},"_npmOperationalInternal":{"tmp":"tmp/opencode-models-discovery_0.6.0_1784746295937_0.1611449234113893","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@abyssal-labs/opencode-models-discovery","version":"0.7.0","keywords":["opencode","opencode-plugin","openai-compatible","anthropic-compatible","model-discovery"],"license":"MIT","_id":"@abyssal-labs/opencode-models-discovery@0.7.0","maintainers":[{"name":"kakatkarakshay","email":"me@kakatkarakshay.dev"}],"homepage":"https://github.com/abyssal-labs/opencode-models-discovery#readme","bugs":{"url":"https://github.com/abyssal-labs/opencode-models-discovery/issues"},"dist":{"shasum":"4aa875fb55ff55460cd35f58bd33098f8cd06a65","tarball":"https://registry.npmjs.org/@abyssal-labs/opencode-models-discovery/-/opencode-models-discovery-0.7.0.tgz","fileCount":5,"integrity":"sha512-9pYcS/Hw2/KU7RL6tcObx3Nndx0mb5+kbUOVLWSZ8WZ8+vVecOkjHCUhkKuUe6Oi7I8YPtk49DrF1JO3c79ZiA==","signatures":[{"sig":"MEQCIC/OS2poq31SaVeILZJ+RCLxTWcGLT8WJx8TbGvN53IHAiAJGRrgRngs/n1L4JpnTMwfLpf2+Hob4xBd8FtG/5jmAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abyssal-labs%2fopencode-models-discovery@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":51649},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"3bb4728a242765054801358d2d515a37fba431cd","scripts":{"lint":"oxlint --deny-warnings .","test":"node --test --experimental-strip-types test/**/*.test.ts","build":"tsc -p tsconfig.build.json","prepack":"npm run build","typecheck":"tsc --noEmit","format:check":"prettier --check .","prepublishOnly":"npm test && npm run typecheck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b16bd8e5-73bc-4424-b611-5ac61cbe7e5d"}},"repository":{"url":"git+https://github.com/abyssal-labs/opencode-models-discovery.git","type":"git"},"_npmVersion":"11.18.0","description":"opencode plugin that discovers OpenAI- and Anthropic-compatible models from /models endpoints","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"oxlint":"^1.73.0","prettier":"^3.9.5","typescript":"^7.0.2","@types/node":"^26.1.1","semantic-release":"^25.0.3","@opencode-ai/plugin":"^1.17.18","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.8"},"_npmOperationalInternal":{"tmp":"tmp/opencode-models-discovery_0.7.0_1784746349447_0.3759884044361468","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@abyssal-labs/opencode-models-discovery","version":"0.8.0","description":"Automatically discover available provider models and metadata in OpenCode","keywords":["opencode","opencode-plugin","openai-compatible","anthropic-compatible","amazon-bedrock","cloudflare-workers-ai","cohere","dynamic-models","google-gemini","llm-gateway","llm-proxy","model-discovery","vercel-ai-gateway"],"homepage":"https://github.com/abyssal-labs/opencode-models-discovery#readme","repository":{"type":"git","url":"git+https://github.com/abyssal-labs/opencode-models-discovery.git"},"bugs":{"url":"https://github.com/abyssal-labs/opencode-models-discovery/issues"},"type":"module","sideEffects":false,"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"build":"tsc -p tsconfig.build.json","format:check":"prettier --check .","lint":"oxlint --deny-warnings .","test":"node --test --experimental-strip-types test/**/*.test.ts","typecheck":"tsc --noEmit","prepack":"npm run build","prepublishOnly":"npm test && npm run typecheck"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"engines":{"node":">=20"},"devDependencies":{"@opencode-ai/plugin":"^1.18.4","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.8","@semantic-release/npm":"^13.1.5","@types/node":"^26.1.1","oxlint":"^1.73.0","prettier":"^3.9.5","semantic-release":"^25.0.3","typescript":"^7.0.2"},"license":"MIT","gitHead":"88ea4773fd32392944c868e87345819144c706d2","_id":"@abyssal-labs/opencode-models-discovery@0.8.0","_nodeVersion":"24.18.0","_npmVersion":"11.18.0","dist":{"integrity":"sha512-qPg5dYjZZnM674lpPakariU1YFiPuLjPJ7XGXyjd8kHXWc3dfgQM66VJqxHQI/jHiX0PKVxoHk2Zq9bHeZwIsw==","shasum":"fee24715062742e759a860b2584db50ef2f0a770","tarball":"https://registry.npmjs.org/@abyssal-labs/opencode-models-discovery/-/opencode-models-discovery-0.8.0.tgz","fileCount":5,"unpackedSize":58451,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abyssal-labs%2fopencode-models-discovery@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDSlxzqeSDuZR4TQVMLLU/TNW6ZOV7z6HXq+CcX7NYDsAiEA2dqKysW9MkmLEQV89nUhSeYpAefNCRt4ykgurOdhe3c="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b16bd8e5-73bc-4424-b611-5ac61cbe7e5d"}},"directories":{},"maintainers":[{"name":"kakatkarakshay","email":"me@kakatkarakshay.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/opencode-models-discovery_0.8.0_1784747132942_0.9983770208519569"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-25T05:05:24.092Z","modified":"2026-07-22T19:05:33.415Z","0.1.0":"2026-05-25T05:05:24.386Z","0.1.1":"2026-05-25T05:35:34.125Z","0.1.2":"2026-06-04T11:28:54.853Z","0.2.0":"2026-07-10T12:09:07.953Z","0.3.0":"2026-07-22T18:31:27.052Z","0.4.0":"2026-07-22T18:46:33.829Z","0.4.1":"2026-07-22T18:49:26.758Z","0.5.0":"2026-07-22T18:50:49.221Z","0.6.0":"2026-07-22T18:51:36.106Z","0.7.0":"2026-07-22T18:52:29.581Z","0.8.0":"2026-07-22T19:05:33.089Z"},"bugs":{"url":"https://github.com/abyssal-labs/opencode-models-discovery/issues"},"license":"MIT","homepage":"https://github.com/abyssal-labs/opencode-models-discovery#readme","keywords":["opencode","opencode-plugin","openai-compatible","anthropic-compatible","amazon-bedrock","cloudflare-workers-ai","cohere","dynamic-models","google-gemini","llm-gateway","llm-proxy","model-discovery","vercel-ai-gateway"],"repository":{"type":"git","url":"git+https://github.com/abyssal-labs/opencode-models-discovery.git"},"description":"Automatically discover available provider models and metadata in OpenCode","maintainers":[{"name":"kakatkarakshay","email":"me@kakatkarakshay.dev"}],"readme":"# opencode-models-discovery\n\n[![npm version](https://img.shields.io/npm/v/%40abyssal-labs%2Fopencode-models-discovery)](https://www.npmjs.com/package/@abyssal-labs/opencode-models-discovery)\n[![npm downloads](https://img.shields.io/npm/dm/%40abyssal-labs%2Fopencode-models-discovery)](https://www.npmjs.com/package/@abyssal-labs/opencode-models-discovery)\n[![CI](https://github.com/abyssal-labs/opencode-models-discovery/actions/workflows/ci.yml/badge.svg)](https://github.com/abyssal-labs/opencode-models-discovery/actions/workflows/ci.yml)\n[![Node.js](https://img.shields.io/node/v/%40abyssal-labs%2Fopencode-models-discovery)](https://www.npmjs.com/package/@abyssal-labs/opencode-models-discovery)\n[![License](https://img.shields.io/npm/l/%40abyssal-labs%2Fopencode-models-discovery)](LICENSE)\n\nDiscover the models your OpenCode providers actually expose. The plugin queries compatible model-list APIs at startup, updates OpenCode's model selector, and caches the result for fast subsequent launches.\n\n## Features\n\n- One global plugin entry enables discovery for every configured compatible provider.\n- Automatically selects OpenAI or Anthropic model-list behavior from the provider family.\n- Supports custom wrappers, gateways, local servers, and proxies through `options.baseURL`.\n- Uses credentials supplied by OpenCode's `/connect` flow without reading its on-disk auth store.\n- Includes dedicated discovery for Amazon Bedrock, Cloudflare Workers AI, Cohere, Google Gemini, and Vercel AI Gateway.\n- Preserves model IDs and maps context limits, output limits, display names, modalities, modes, service tiers, and costs when endpoints provide them.\n- Uses bounded responses, request timeouts, same-origin pagination, credential-scoped caching, and stale-cache fallback.\n- Never enriches or replaces endpoint results with models.dev metadata.\n\n## Quick start\n\nAdd the plugin to `opencode.json`:\n\n```json\n{\n  \"$schema\": \"https://opencode.ai/config.json\",\n  \"plugin\": [\"@abyssal-labs/opencode-models-discovery\"]\n}\n```\n\nConnect a supported built-in provider with `/connect`, or configure a provider with a compatible `baseURL`:\n\n```json\n{\n  \"$schema\": \"https://opencode.ai/config.json\",\n  \"plugin\": [\"@abyssal-labs/opencode-models-discovery\"],\n  \"provider\": {\n    \"my-provider\": {\n      \"npm\": \"@ai-sdk/openai-compatible\",\n      \"options\": {\n        \"baseURL\": \"https://example.com/v1\",\n        \"apiKey\": \"{env:MY_PROVIDER_API_KEY}\"\n      }\n    }\n  }\n}\n```\n\nRestart OpenCode. Discovered models are then available through the normal model selector.\n\n## Discovery\n\nNative OAuth is skipped when it does not use a custom `baseURL` and OpenCode already manages that provider's model catalog.\n\nFor configured providers with a custom `baseURL`, the plugin selects the wire format globally:\n\n- Anthropic-family SDK identifiers use Anthropic headers and pagination.\n- OpenAI-family SDK identifiers use the OpenAI model-list format.\n- Other custom-baseURL providers default to the OpenAI format.\n\nOther provider IDs can opt into either wire format with `modelsDiscovery.apiFormat` set to `\"openai\"` or `\"anthropic\"`.\n\nThe package also registers dedicated adapters automatically for APIs that do not follow either format:\n\n- Amazon Bedrock foundation models, using a Bedrock bearer token and `AWS_REGION`.\n- Cloudflare Workers AI, using the account id captured by `/connect` or `CLOUDFLARE_ACCOUNT_ID`.\n- Cohere chat-capable models.\n- Google Gemini generative models.\n- Vercel AI Gateway's public model catalog.\n\nGitHub Copilot, DigitalOcean, and GitLab are left to OpenCode's native dynamic discovery.\n\nAll matching providers are included by default. Use `providers.include` as an optional allowlist; when it is empty or omitted, all matching providers are included. Use `providers.exclude` to skip a provider.\n\nFor every discovered model, it maps endpoint metadata into opencode model config:\n\n- `metadata.context_window` -> `limit.context`\n- `metadata.context_length` or top-level `context_length` -> `limit.context`\n- `max_model_len` and `max_context_length` -> `limit.context`\n- `metadata.input_context_window` -> `limit.input`\n- `metadata.max_output_tokens` -> `limit.output`\n- `max_completion_tokens` and `max_tokens` -> `limit.output`\n- `metadata.display_name` -> `name`\n- `metadata.input_modalities` -> `modalities.input`\n- `metadata.output_modalities` -> `modalities.output`\n- `architecture.input_modalities` -> `modalities.input`\n- `architecture.output_modalities` -> `modalities.output`\n\nModality names are normalized to lowercase, and `vision` is normalized to `image` for opencode compatibility.\n\nExisting models are overridden by default so the wrapper/proxy `/models` metadata wins over models.dev metadata. With the default `overrideExisting: true`, providers expose only models returned by the `/models` endpoint. This is especially useful for custom `openai` base URLs because opencode otherwise starts from its built-in OpenAI model catalog.\n\nUnknown limits are left unchanged for existing models. Newly discovered built-in provider models use the provider template's limits unless `fallbackContextTokens` or `fallbackOutputTokens` is configured.\n\n## Modes and service tiers\n\nThe plugin creates additional model entries when a response provides `experimental.modes`, `modes`, or `additional_speed_tiers`. A mode named `fast` for model `example` becomes `example-fast`.\n\nMode metadata can provide:\n\n- `provider.body`, converted from snake_case to opencode option names.\n- `provider.headers`, restricted to string values.\n- `cost`, including input, output, cache-read, and cache-write prices.\n- Service tiers through `additional_speed_tiers` and `service_tiers`; these set the OpenAI `serviceTier` request option.\n\nPaginated responses can use `next_page`, `next`, or `has_more` with `last_id`. Continuation URLs must remain on the original origin.\n\n## Configuration\n\n```json\n{\n  \"plugin\": [\"@abyssal-labs/opencode-models-discovery\"],\n  \"provider\": {\n    \"openai\": {\n      \"options\": {\n        \"modelsDiscovery\": {\n          \"refreshIntervalHours\": 24\n        }\n      }\n    },\n    \"my-openai-compatible-provider\": {\n      \"npm\": \"@ai-sdk/openai-compatible\",\n      \"options\": {\n        \"baseURL\": \"https://example.com/v1\",\n        \"apiKey\": \"{env:MY_PROVIDER_API_KEY}\"\n      }\n    }\n  }\n}\n```\n\n## Options\n\nDefault refresh interval is 24 hours. Cached values are still applied on startup when the cache is fresh; the endpoint is only rechecked after the interval.\n\nFor built-in providers with registered adapters, discovery uses API credentials configured through OpenCode's `/connect` flow when `options.apiKey` is not set. Credentials are supplied by OpenCode's supported plugin runtime and are never read from its on-disk auth store. An explicit `options.apiKey` takes precedence.\n\nOpenAI-format discovery sends `Authorization: Bearer <key>`. Anthropic-format discovery sends `x-api-key` and the default `anthropic-version: 2023-06-01` header. Values in `modelsDiscovery.headers` can override the default headers.\n\nAmazon Bedrock discovery supports the bearer token stored by `/connect`. AWS access keys, profiles, workload identity, and other SigV4 credential-chain sources are not exposed to plugin model hooks, so those setups retain OpenCode's existing catalog. Google Vertex has the same limitation with Application Default Credentials and is not dynamically discovered.\n\n```json\n{\n  \"plugin\": [\n    [\n      \"@abyssal-labs/opencode-models-discovery\",\n      {\n        \"refreshIntervalHours\": 12,\n        \"fallbackContextTokens\": 128000,\n        \"fallbackOutputTokens\": 16384,\n        \"maxResponseBytes\": 5242880,\n        \"maxPages\": 10,\n        \"timeoutMs\": 10000,\n        \"headers\": {\n          \"x-api-key\": \"{env:DISCOVERY_API_KEY}\"\n        },\n        \"overrideExisting\": true,\n        \"providers\": {\n          \"include\": [],\n          \"exclude\": [\"provider-to-skip\"]\n        }\n      }\n    ]\n  ]\n}\n```\n\nProvider-level overrides can live under `provider.<name>.options.modelsDiscovery`:\n\n```json\n{\n  \"provider\": {\n    \"my-openai-compatible-provider\": {\n      \"npm\": \"@ai-sdk/openai-compatible\",\n      \"options\": {\n        \"baseURL\": \"https://example.com/v1\",\n        \"apiKey\": \"{env:MY_PROVIDER_API_KEY}\",\n        \"modelsDiscovery\": {\n          \"apiFormat\": \"openai\",\n          \"refreshIntervalHours\": 6,\n          \"overrideExisting\": true\n        }\n      }\n    }\n  }\n}\n```\n\nSupported options:\n\n- `apiFormat`: provider-level `\"openai\"` or `\"anthropic\"` override; normally inferred from the provider id or SDK.\n- `enabled`: set `false` to disable globally.\n- `refreshIntervalHours`: defaults to `24`.\n- `refreshIntervalMs`: millisecond form, takes precedence over hours.\n- `cachePath`: global option for cache file location.\n- `fallbackContextTokens`: optional context limit for newly discovered built-in provider models without context metadata.\n- `fallbackOutputTokens`: optional output limit for newly discovered built-in provider models without output metadata.\n- `maxResponseBytes`: maximum discovery response size in bytes; defaults to 5 MiB.\n- `maxPages`: maximum number of same-origin discovery pages; defaults to `10`.\n- `timeoutMs`: timeout for each discovery page request; defaults to 10 seconds.\n- `headers`: additional headers for `/models` discovery; values support `{env:NAME}` expansion.\n- `providers.include`: optional allowlist; empty or omitted means include all matching providers.\n- `providers.exclude`: skip these provider ids.\n- `overrideExisting`: defaults to `true`; when `true`, providers expose only discovered models. When `false`, discovered models are merged into the existing model catalog without replacing existing definitions.\n\nInvalid values and unknown option names are rejected during plugin initialization so configuration mistakes fail visibly.\n\nTypeScript consumers can import `PluginOptions` and `ProviderDiscoveryOptions` from the package.\n\nDefault cache path:\n\n```text\n~/.cache/opencode-models-discovery/models-cache.json\n```\n\n`XDG_CACHE_HOME` is honored when set. On Windows, `LOCALAPPDATA` is used before the home-directory fallback.\n\n## Compatibility\n\n- Tested against `@opencode-ai/plugin` 1.18.x.\n- Published output is standard ESM and requires Node.js 20 or newer when imported outside opencode.\n- Discovery endpoints must use HTTP or HTTPS and return a supported model-list response.\n- OpenCode currently supplies `/connect` credentials to plugin model hooks one provider id at a time. The package exports exact-id hooks only for its built-in and dedicated adapters; globally detected custom provider ids should configure `options.apiKey` or discovery headers.\n- Azure OpenAI is not discovered because its resource model list does not reliably identify inference deployment names. Google Vertex is not discovered because its ADC credentials are unavailable to plugin hooks.\n\n## Troubleshooting\n\nDiscovery failures are written to opencode logs under the `opencode-models-discovery` service. Logs include the provider, sanitized endpoint, HTTP status when available, and whether stale cache data was used. Credentials and URL query strings are not logged.\n\nSet `refreshIntervalMs` to `0` to force discovery during each startup while debugging. Delete the cache file to discard all previously discovered metadata.\n\nRelease history and upgrade notes are available on the [GitHub Releases](https://github.com/abyssal-labs/opencode-models-discovery/releases) page.\n\nRestart opencode after changing plugin or config files.\n","readmeFilename":"README.md"}