{"_id":"@bernierllc/ai-provider-router","_rev":"21-afc51c05906ef4629bca875fd8481055","name":"@bernierllc/ai-provider-router","dist-tags":{"latest":"1.7.2"},"versions":{"1.0.1":{"name":"@bernierllc/ai-provider-router","version":"1.0.1","keywords":["ai","provider","router","load-balancing","failover","openai","anthropic","cost-optimization","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/ai-provider-router@1.0.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools/tree/main/packages/service/ai-provider-router#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"807239d0992bcc2afa31c034b50262cccb02866a","tarball":"https://registry.npmjs.org/@bernierllc/ai-provider-router/-/ai-provider-router-1.0.1.tgz","fileCount":14,"integrity":"sha512-D42eAIZ/Tk4xuMCPV2vXpSAYMU+HIo8mN8Ga1+NPmF4aHlghOFmib2UErZPS0+jFqTnlAxsCfuKaRzXT40l6ZQ==","signatures":[{"sig":"MEYCIQCpcnmmXL7nJ5wUndobZGrzLxm2bvazBgu6Xy967kiEQwIhAIatyZ5DF+Ie2rvL5ptj2wbq8XXsooGWffvQv4Ha842I","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61737},"main":"dist/index.js","type":"module","_from":"file:bernierllc-ai-provider-router-1.0.1.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","prebuild":"npm run clean","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_resolved":"/private/var/folders/r0/wspnzd1s18sfjy10ffyv2qxw0000gn/T/2071ef0f8d9c2d4dbdd7d6e7e44c3c88/bernierllc-ai-provider-router-1.0.1.tgz","_integrity":"sha512-D42eAIZ/Tk4xuMCPV2vXpSAYMU+HIo8mN8Ga1+NPmF4aHlghOFmib2UErZPS0+jFqTnlAxsCfuKaRzXT40l6ZQ==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/ai-provider-router"},"_npmVersion":"11.6.2","description":"Intelligent AI provider routing service with load balancing, cost optimization, and automatic failover","directories":{},"_nodeVersion":"25.2.0","dependencies":{"@bernierllc/logger":"^1.0.1","@bernierllc/rate-limiter":"^0.1.6","@bernierllc/retry-policy":"^0.1.6","@bernierllc/cache-manager":"^1.0.3","@bernierllc/event-emitter":"^1.0.1","@bernierllc/openai-client":"^1.0.4","@bernierllc/ai-cost-tracker":"^1.0.0","@bernierllc/anthropic-client":"^1.0.1","@bernierllc/neverhub-adapter":"^0.1.2"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-provider-router_1.0.1_1764187204097_0.22193370112491828","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@bernierllc/ai-provider-router","version":"1.0.2","keywords":["ai","provider","router","load-balancing","failover","openai","anthropic","cost-optimization","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/ai-provider-router@1.0.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools/tree/main/packages/service/ai-provider-router#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"db7a7bda88b76efc73eb9bd66ebbb784876a9f51","tarball":"https://registry.npmjs.org/@bernierllc/ai-provider-router/-/ai-provider-router-1.0.2.tgz","fileCount":14,"integrity":"sha512-xchIcPwRQ3/dUmXj1SjPZqBrkENfVSTIttTIZKx6d1XdaYNewtvIbOZamVckQb6g3W7gCQ4VvnLa8bIxK+RFGQ==","signatures":[{"sig":"MEUCIQDSU9wXIOs0EpJsDwa71ztkES3gSF0Bpxy9R6vkNTB96QIgLLolYPzyfVOFl9MBx4xFoaaSGeet5hrEkYiTlWd1XR4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61775},"main":"dist/index.js","type":"module","_from":"file:bernierllc-ai-provider-router-1.0.2.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","prebuild":"npm run clean","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8b7a0c8a-5269-45e8-8352-11aed50b3113"}},"_resolved":"/tmp/2903abae2d97e7f69880ddf04a6617c1/bernierllc-ai-provider-router-1.0.2.tgz","_integrity":"sha512-xchIcPwRQ3/dUmXj1SjPZqBrkENfVSTIttTIZKx6d1XdaYNewtvIbOZamVckQb6g3W7gCQ4VvnLa8bIxK+RFGQ==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/ai-provider-router"},"_npmVersion":"11.7.0","description":"Intelligent AI provider routing service with load balancing, cost optimization, and automatic failover","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@bernierllc/logger":"1.0.4","@bernierllc/rate-limiter":"0.1.7","@bernierllc/retry-policy":"0.1.6","@bernierllc/cache-manager":"1.0.4","@bernierllc/event-emitter":"1.0.2","@bernierllc/openai-client":"1.0.6","@bernierllc/ai-cost-tracker":"1.0.3","@bernierllc/anthropic-client":"1.0.3","@bernierllc/neverhub-adapter":"0.1.2"},"publishConfig":{"access":"restricted","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-provider-router_1.0.2_1766449669438_0.3924692372384062","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@bernierllc/ai-provider-router","version":"1.0.3","keywords":["ai","provider","router","load-balancing","failover","openai","anthropic","cost-optimization","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/ai-provider-router@1.0.3","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools/tree/main/packages/service/ai-provider-router#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"e9c289994624a749fa5ee5aa01bd05be1a46c391","tarball":"https://registry.npmjs.org/@bernierllc/ai-provider-router/-/ai-provider-router-1.0.3.tgz","fileCount":14,"integrity":"sha512-id1pfNap0XC89hGvPQ+TfIu71wNNllMKVD2ojj0TmjDCquivDDZ7wZ7bCgjYwr+bcJbYeQ4d5OyJliQdRn5yNw==","signatures":[{"sig":"MEQCIDdmbg7eCE0uxkeQITfBuOdAtb+zPmOjGT3BFA5LwjzNAiAUFmKWaq6Ow3L+XNi0MY2i3K+cy6WJvglq0kY8v8dUOQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61775},"main":"dist/index.js","type":"module","_from":"file:bernierllc-ai-provider-router-1.0.3.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","prebuild":"npm run clean","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8b7a0c8a-5269-45e8-8352-11aed50b3113"}},"_resolved":"/tmp/6b79aaafb5a9ea09e46848aeda9f42db/bernierllc-ai-provider-router-1.0.3.tgz","_integrity":"sha512-id1pfNap0XC89hGvPQ+TfIu71wNNllMKVD2ojj0TmjDCquivDDZ7wZ7bCgjYwr+bcJbYeQ4d5OyJliQdRn5yNw==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/ai-provider-router"},"_npmVersion":"11.7.0","description":"Intelligent AI provider routing service with load balancing, cost optimization, and automatic failover","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@bernierllc/logger":"1.1.0","@bernierllc/rate-limiter":"0.1.7","@bernierllc/retry-policy":"0.1.6","@bernierllc/cache-manager":"1.0.4","@bernierllc/event-emitter":"1.0.3","@bernierllc/openai-client":"1.0.7","@bernierllc/ai-cost-tracker":"1.0.4","@bernierllc/anthropic-client":"1.0.4","@bernierllc/neverhub-adapter":"0.1.2"},"publishConfig":{"access":"restricted","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-provider-router_1.0.3_1766454432545_0.7669476329206419","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@bernierllc/ai-provider-router","version":"1.2.0","keywords":["ai","provider","router","load-balancing","failover","openai","anthropic","cost-optimization","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/ai-provider-router@1.2.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools/tree/main/packages/service/ai-provider-router#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"eeb0fa7220cb2634609f6b7b2849a4e46659eb2e","tarball":"https://registry.npmjs.org/@bernierllc/ai-provider-router/-/ai-provider-router-1.2.0.tgz","fileCount":14,"integrity":"sha512-/5rWiWcRL7UsGwecE+243flgRZDMpTcLcmqSa+q8tGfBMW/ZvoFBwrpalsIA4C4O1pNFfbzPUoqv7pLx5f373Q==","signatures":[{"sig":"MEUCIDa3ctuTSoVwmrLzCqEw8wGGZo1soDBwUoR1WGCIvWekAiEA+PFa/7rwZSzwLynLuJyMbwTS73damyz0LY1jEgpofL8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61833},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"af7e74b3715d56d3a193e1bb6743b337c2b0df6d","scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","prebuild":"npm run clean","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8b7a0c8a-5269-45e8-8352-11aed50b3113"}},"repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/ai-provider-router"},"_npmVersion":"lerna/9.0.3/node@v20.19.6+x64 (linux)","description":"Intelligent AI provider routing service with load balancing, cost optimization, and automatic failover","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@bernierllc/logger":"1.3.0","@bernierllc/rate-limiter":"0.2.0","@bernierllc/retry-policy":"0.3.0","@bernierllc/cache-manager":"1.0.5","@bernierllc/event-emitter":"1.0.5","@bernierllc/openai-client":"1.2.0","@bernierllc/ai-cost-tracker":"1.2.0","@bernierllc/anthropic-client":"1.2.0","@bernierllc/neverhub-adapter":"0.1.4"},"publishConfig":{"access":"restricted","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-provider-router_1.2.0_1767642477678_0.44870664394452575","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@bernierllc/ai-provider-router","version":"1.2.2","keywords":["ai","provider","router","load-balancing","failover","openai","anthropic","cost-optimization","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/ai-provider-router@1.2.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools/tree/main/packages/service/ai-provider-router#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"07997283bf2037dc53a6e3e9b6708623bf41a550","tarball":"https://registry.npmjs.org/@bernierllc/ai-provider-router/-/ai-provider-router-1.2.2.tgz","fileCount":14,"integrity":"sha512-qib75FNSm77ao98LZy7STfWViyOzRWoxr31VumPrbVFMx/ZA4QesrkOdjwd7iofMx/xhVb+T7b6UzXzCIoasJA==","signatures":[{"sig":"MEQCIF1IFNN3hwgqzwZtfRk8wLzOxrn4fZT5sDrg+cpSa91mAiA5JA7uluJk3kDnFTfOh9IhPkdc1nllvPGN4Ov4TvRHQg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61771},"main":"dist/index.js","type":"module","_from":"file:bernierllc-ai-provider-router-1.2.2.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","prebuild":"npm run clean","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8b7a0c8a-5269-45e8-8352-11aed50b3113"}},"_resolved":"/home/runner/work/tools/tools/packages/service/ai-provider-router/bernierllc-ai-provider-router-1.2.2.tgz","_integrity":"sha512-qib75FNSm77ao98LZy7STfWViyOzRWoxr31VumPrbVFMx/ZA4QesrkOdjwd7iofMx/xhVb+T7b6UzXzCIoasJA==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/ai-provider-router"},"_npmVersion":"11.11.0","description":"Intelligent AI provider routing service with load balancing, cost optimization, and automatic failover","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@bernierllc/logger":"1.3.2","@bernierllc/rate-limiter":"0.2.3","@bernierllc/retry-policy":"0.3.2","@bernierllc/cache-manager":"1.0.7","@bernierllc/event-emitter":"1.0.7","@bernierllc/openai-client":"1.2.2","@bernierllc/ai-cost-tracker":"1.2.2","@bernierllc/anthropic-client":"1.2.2","@bernierllc/neverhub-adapter":"0.1.6"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-provider-router_1.2.2_1773163412215_0.9770253301308789","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"name":"@bernierllc/ai-provider-router","version":"1.2.3","keywords":["ai","provider","router","load-balancing","failover","openai","anthropic","cost-optimization","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/ai-provider-router@1.2.3","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools/tree/main/packages/service/ai-provider-router#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"614925a6815275288275cfb833bc9495973ad409","tarball":"https://registry.npmjs.org/@bernierllc/ai-provider-router/-/ai-provider-router-1.2.3.tgz","fileCount":14,"integrity":"sha512-O/2gpie+ixe3CnbSLSkTlkk4kRCbpyscMoh7HBfFHpMR23tpbGNbovPyyBl6cMZnPkOoRk9KyQXCVz64ygtQuA==","signatures":[{"sig":"MEQCICT9KXbHV5j5lFZsS25eyJ7FCjPLUggLWUqVIhdyci1xAiBnHxQffoiTYubF2nRblbnoN763nNjy5oJ8LszwL7HsLg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61771},"main":"dist/index.js","type":"module","_from":"file:bernierllc-ai-provider-router-1.2.3.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","prebuild":"npm run clean","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8b7a0c8a-5269-45e8-8352-11aed50b3113"}},"_resolved":"/home/runner/work/tools/tools/packages/service/ai-provider-router/bernierllc-ai-provider-router-1.2.3.tgz","_integrity":"sha512-O/2gpie+ixe3CnbSLSkTlkk4kRCbpyscMoh7HBfFHpMR23tpbGNbovPyyBl6cMZnPkOoRk9KyQXCVz64ygtQuA==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/ai-provider-router"},"_npmVersion":"11.14.1","description":"Intelligent AI provider routing service with load balancing, cost optimization, and automatic failover","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/logger":"1.4.0","@bernierllc/rate-limiter":"0.2.3","@bernierllc/retry-policy":"0.4.0","@bernierllc/cache-manager":"1.0.7","@bernierllc/event-emitter":"1.0.8","@bernierllc/openai-client":"1.2.3","@bernierllc/ai-cost-tracker":"1.2.3","@bernierllc/anthropic-client":"1.2.3","@bernierllc/neverhub-adapter":"0.1.6"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-provider-router_1.2.3_1779133653923_0.5199291155315244","host":"s3://npm-registry-packages-npm-production"}},"1.2.4":{"name":"@bernierllc/ai-provider-router","version":"1.2.4","keywords":["ai","provider","router","load-balancing","failover","openai","anthropic","cost-optimization","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/ai-provider-router@1.2.4","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools/tree/main/packages/service/ai-provider-router#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"ed75d2c9b4877124f4e8525a8ce15005ebfb4db6","tarball":"https://registry.npmjs.org/@bernierllc/ai-provider-router/-/ai-provider-router-1.2.4.tgz","fileCount":14,"integrity":"sha512-updo4QB3FsOjQ1UqO0qp62TxAYPeV85lSFDwoTlrS2B9ycdi/VmPDMCwI1YkRn8ryRYbQodhAQztZa49cG4cnA==","signatures":[{"sig":"MEQCICjPF0Jp7BCeODI0JnpISCYyGp5ndG+GZ9vYuC9UEGF6AiA7xR0EQmth6pbxIzrV2ListrBM0HjhbqgkWwDJdwBN7w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61771},"main":"dist/index.js","type":"module","_from":"file:bernierllc-ai-provider-router-1.2.4.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","prebuild":"npm run clean","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8b7a0c8a-5269-45e8-8352-11aed50b3113"}},"_resolved":"/home/runner/work/tools/tools/packages/service/ai-provider-router/bernierllc-ai-provider-router-1.2.4.tgz","_integrity":"sha512-updo4QB3FsOjQ1UqO0qp62TxAYPeV85lSFDwoTlrS2B9ycdi/VmPDMCwI1YkRn8ryRYbQodhAQztZa49cG4cnA==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/ai-provider-router"},"_npmVersion":"11.14.1","description":"Intelligent AI provider routing service with load balancing, cost optimization, and automatic failover","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/logger":"1.4.2","@bernierllc/rate-limiter":"0.2.3","@bernierllc/retry-policy":"0.5.1","@bernierllc/cache-manager":"1.0.7","@bernierllc/event-emitter":"1.0.9","@bernierllc/openai-client":"1.2.4","@bernierllc/ai-cost-tracker":"1.2.4","@bernierllc/anthropic-client":"1.2.4","@bernierllc/neverhub-adapter":"0.1.6"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-provider-router_1.2.4_1779157351925_0.09832596826625939","host":"s3://npm-registry-packages-npm-production"}},"1.2.5":{"name":"@bernierllc/ai-provider-router","version":"1.2.5","keywords":["ai","provider","router","load-balancing","failover","openai","anthropic","cost-optimization","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/ai-provider-router@1.2.5","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools/tree/main/packages/service/ai-provider-router#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"803330613961ce44f664c131fc8b706ba9847fbc","tarball":"https://registry.npmjs.org/@bernierllc/ai-provider-router/-/ai-provider-router-1.2.5.tgz","fileCount":14,"integrity":"sha512-ySrqClpdUDOGLSKDHgAqZ8cRU5Sfq/+2oQaoPS/2xsIh8weKu4IHgpRi0eUV01PPiRoAc7ms2kg0omYg6GBz8w==","signatures":[{"sig":"MEUCIQDRGbJMysYdYztVAmXyl9YWWUaG0q3lUvxZKaaKQE43/wIgEAHHhp5Xg6sBsKLhqD8qNjk23EfooIE/6xASzWEkzgI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61771},"main":"dist/index.js","type":"module","_from":"file:bernierllc-ai-provider-router-1.2.5.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","prebuild":"npm run clean","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8b7a0c8a-5269-45e8-8352-11aed50b3113"}},"_resolved":"/home/runner/work/tools/tools/packages/service/ai-provider-router/bernierllc-ai-provider-router-1.2.5.tgz","_integrity":"sha512-ySrqClpdUDOGLSKDHgAqZ8cRU5Sfq/+2oQaoPS/2xsIh8weKu4IHgpRi0eUV01PPiRoAc7ms2kg0omYg6GBz8w==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/ai-provider-router"},"_npmVersion":"11.14.1","description":"Intelligent AI provider routing service with load balancing, cost optimization, and automatic failover","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/logger":"1.4.3","@bernierllc/rate-limiter":"0.4.0","@bernierllc/retry-policy":"0.5.1","@bernierllc/cache-manager":"1.2.0","@bernierllc/event-emitter":"1.2.0","@bernierllc/openai-client":"1.2.5","@bernierllc/ai-cost-tracker":"1.2.5","@bernierllc/anthropic-client":"1.2.5","@bernierllc/neverhub-adapter":"0.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-provider-router_1.2.5_1779221494260_0.5905859384393333","host":"s3://npm-registry-packages-npm-production"}},"1.2.6":{"name":"@bernierllc/ai-provider-router","version":"1.2.6","keywords":["ai","provider","router","load-balancing","failover","openai","anthropic","cost-optimization","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/ai-provider-router@1.2.6","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools/tree/main/packages/service/ai-provider-router#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"13e4daecf2abd3393b4e994457ab66073b455653","tarball":"https://registry.npmjs.org/@bernierllc/ai-provider-router/-/ai-provider-router-1.2.6.tgz","fileCount":14,"integrity":"sha512-yqy/mHj0+J5WYc20C8Zv0/XyOxH0l1ZNU9W+u5L0jWYYaQ4ft6f/u4IOfSx4iTLOZMtaIXFkUkeweqXtnFCbcw==","signatures":[{"sig":"MEQCIHO1hm9nqpbvy2y9AGOTxmwTA8LKzfDOZxw45Rhjmw2gAiB4B3xeJpsMff4Jbs17Q0esjVT4tON/dmOrZPssRtQ48Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61771},"main":"dist/index.js","type":"module","_from":"file:bernierllc-ai-provider-router-1.2.6.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","prebuild":"npm run clean","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8b7a0c8a-5269-45e8-8352-11aed50b3113"}},"_resolved":"/home/runner/work/tools/tools/packages/service/ai-provider-router/bernierllc-ai-provider-router-1.2.6.tgz","_integrity":"sha512-yqy/mHj0+J5WYc20C8Zv0/XyOxH0l1ZNU9W+u5L0jWYYaQ4ft6f/u4IOfSx4iTLOZMtaIXFkUkeweqXtnFCbcw==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/ai-provider-router"},"_npmVersion":"11.14.1","description":"Intelligent AI provider routing service with load balancing, cost optimization, and automatic failover","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/logger":"1.4.3","@bernierllc/rate-limiter":"0.4.1","@bernierllc/retry-policy":"0.5.1","@bernierllc/cache-manager":"1.2.0","@bernierllc/event-emitter":"1.2.0","@bernierllc/openai-client":"1.2.5","@bernierllc/ai-cost-tracker":"1.4.0","@bernierllc/anthropic-client":"1.4.0","@bernierllc/neverhub-adapter":"0.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-provider-router_1.2.6_1779234003206_0.17638673737273813","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@bernierllc/ai-provider-router","version":"1.3.0","keywords":["ai","provider","router","load-balancing","failover","openai","anthropic","cost-optimization","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/ai-provider-router@1.3.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools/tree/main/packages/service/ai-provider-router#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"772fad459e64fdfe042894f9e290644afbc746b3","tarball":"https://registry.npmjs.org/@bernierllc/ai-provider-router/-/ai-provider-router-1.3.0.tgz","fileCount":14,"integrity":"sha512-OXDwj9JMMyNqgMsvnRaW0eZJkxfaqbr3adzIAupu8yZGph3LH+UZbwjWU0VSoavjynlZas3+E0R1LJH9UrN6tQ==","signatures":[{"sig":"MEUCIF6JhxxHZlEjU9Rw+MqgA3I5ogX0r92JlCrYiWyfIUKPAiEAnZrm/SoDO7PMkGBBecWpWaz20ssqcYJee4IitUNNWOE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61771},"main":"dist/index.js","type":"module","_from":"file:bernierllc-ai-provider-router-1.3.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","prebuild":"npm run clean","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8b7a0c8a-5269-45e8-8352-11aed50b3113"}},"_resolved":"/home/runner/work/tools/tools/packages/service/ai-provider-router/bernierllc-ai-provider-router-1.3.0.tgz","_integrity":"sha512-OXDwj9JMMyNqgMsvnRaW0eZJkxfaqbr3adzIAupu8yZGph3LH+UZbwjWU0VSoavjynlZas3+E0R1LJH9UrN6tQ==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/ai-provider-router"},"_npmVersion":"11.14.1","description":"Intelligent AI provider routing service with load balancing, cost optimization, and automatic failover","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/logger":"1.6.0","@bernierllc/rate-limiter":"0.5.0","@bernierllc/retry-policy":"0.6.0","@bernierllc/cache-manager":"1.3.0","@bernierllc/event-emitter":"1.3.0","@bernierllc/openai-client":"1.3.0","@bernierllc/ai-cost-tracker":"1.5.0","@bernierllc/anthropic-client":"1.5.0","@bernierllc/neverhub-adapter":"0.3.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-provider-router_1.3.0_1779241543991_0.7209267124869474","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@bernierllc/ai-provider-router","version":"1.3.1","keywords":["ai","provider","router","load-balancing","failover","openai","anthropic","cost-optimization","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/ai-provider-router@1.3.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools/tree/main/packages/service/ai-provider-router#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"3756c161352a497e5b1ddd7e1b35e7ead01b7f9e","tarball":"https://registry.npmjs.org/@bernierllc/ai-provider-router/-/ai-provider-router-1.3.1.tgz","fileCount":14,"integrity":"sha512-VINnjCOGonUVjjnIwJzpmxl0gnpKen/f0KprTUATZkGkuOroFap2zw4/69nFF1PorpG584vg1tNrwlRxgoCiQw==","signatures":[{"sig":"MEUCIQDac6w/zpjoctaV0ncuslaw0hAmN2L5pXS9lUN5WNDLiQIgUpbCP+UxNcWgGEDrAavCkXp3VkpXeNYGnBCWK/tQ3nw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61771},"main":"dist/index.js","type":"module","_from":"file:bernierllc-ai-provider-router-1.3.1.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","prebuild":"npm run clean","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8b7a0c8a-5269-45e8-8352-11aed50b3113"}},"_resolved":"/home/runner/work/tools/tools/packages/service/ai-provider-router/bernierllc-ai-provider-router-1.3.1.tgz","_integrity":"sha512-VINnjCOGonUVjjnIwJzpmxl0gnpKen/f0KprTUATZkGkuOroFap2zw4/69nFF1PorpG584vg1tNrwlRxgoCiQw==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/ai-provider-router"},"_npmVersion":"11.14.1","description":"Intelligent AI provider routing service with load balancing, cost optimization, and automatic failover","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/logger":"1.6.0","@bernierllc/rate-limiter":"0.5.0","@bernierllc/retry-policy":"0.6.0","@bernierllc/cache-manager":"1.3.0","@bernierllc/event-emitter":"1.3.0","@bernierllc/openai-client":"1.4.0","@bernierllc/ai-cost-tracker":"1.5.0","@bernierllc/anthropic-client":"1.5.0","@bernierllc/neverhub-adapter":"0.3.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-provider-router_1.3.1_1779243390603_0.5645538393649916","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@bernierllc/ai-provider-router","version":"1.4.0","keywords":["ai","provider","router","load-balancing","failover","openai","anthropic","cost-optimization","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/ai-provider-router@1.4.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools/tree/main/packages/service/ai-provider-router#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"ad358689bbe02c5809ba25a024748810af7d79e9","tarball":"https://registry.npmjs.org/@bernierllc/ai-provider-router/-/ai-provider-router-1.4.0.tgz","fileCount":18,"integrity":"sha512-kBukbZUzc+LxkLtRUwoIbS419YJr8pCQVwGGueXnjXVcOEdMw2L19WgjJlVDfMQRFN6QuiYUvhDQUERSYoHkWw==","signatures":[{"sig":"MEUCIDnwTACpvp/V/noKYj6tELLt+asTXZ1TkpRK2Rfbjs7IAiEA4i2jPzp6Dapmaa5Tp2MvaJSg7bxnOQ1SpfXIULBuoZ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64557},"main":"dist/index.js","type":"module","_from":"file:bernierllc-ai-provider-router-1.4.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","prebuild":"npm run clean","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8b7a0c8a-5269-45e8-8352-11aed50b3113"}},"_resolved":"/home/runner/work/tools/tools/packages/service/ai-provider-router/bernierllc-ai-provider-router-1.4.0.tgz","_integrity":"sha512-kBukbZUzc+LxkLtRUwoIbS419YJr8pCQVwGGueXnjXVcOEdMw2L19WgjJlVDfMQRFN6QuiYUvhDQUERSYoHkWw==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/ai-provider-router"},"_npmVersion":"11.14.1","description":"Intelligent AI provider routing service with load balancing, cost optimization, and automatic failover","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/logger":"1.6.0","@bernierllc/rate-limiter":"0.5.0","@bernierllc/retry-policy":"0.6.0","@bernierllc/cache-manager":"1.3.0","@bernierllc/event-emitter":"1.3.0","@bernierllc/openai-client":"1.4.0","@bernierllc/ai-cost-tracker":"1.5.0","@bernierllc/anthropic-client":"1.5.0","@bernierllc/neverhub-adapter":"0.3.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-provider-router_1.4.0_1779244763951_0.49964423453919293","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@bernierllc/ai-provider-router","version":"1.5.0","keywords":["ai","provider","router","load-balancing","failover","openai","anthropic","cost-optimization","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/ai-provider-router@1.5.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools/tree/main/packages/service/ai-provider-router#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"312dd8d31017472ce2abe1925ca854cd6fdc8570","tarball":"https://registry.npmjs.org/@bernierllc/ai-provider-router/-/ai-provider-router-1.5.0.tgz","fileCount":18,"integrity":"sha512-jHMRvwNo4WBADzqYyMbTC1yR556w+8w9ehEP2F6xHQBIHmuTOlIxvOJDBDg4/jaF8Ezj6DYhEgwdiqOw+XmWtw==","signatures":[{"sig":"MEYCIQCPQc5rmULh0bhM56LeCUomsu9mTRz0YQzK36jSWotVZwIhAOOMY5USWXbzI/woVHUUdNqo71XVWoGCm8tMKYphTJe9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64557},"main":"dist/index.js","type":"module","_from":"file:bernierllc-ai-provider-router-1.5.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","prebuild":"npm run clean","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8b7a0c8a-5269-45e8-8352-11aed50b3113"}},"_resolved":"/home/runner/work/tools/tools/packages/service/ai-provider-router/bernierllc-ai-provider-router-1.5.0.tgz","_integrity":"sha512-jHMRvwNo4WBADzqYyMbTC1yR556w+8w9ehEP2F6xHQBIHmuTOlIxvOJDBDg4/jaF8Ezj6DYhEgwdiqOw+XmWtw==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/ai-provider-router"},"_npmVersion":"11.14.1","description":"Intelligent AI provider routing service with load balancing, cost optimization, and automatic failover","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/logger":"1.6.0","@bernierllc/rate-limiter":"0.5.0","@bernierllc/retry-policy":"0.6.0","@bernierllc/cache-manager":"1.3.0","@bernierllc/event-emitter":"1.3.0","@bernierllc/openai-client":"1.4.0","@bernierllc/ai-cost-tracker":"1.5.0","@bernierllc/anthropic-client":"1.5.0","@bernierllc/neverhub-adapter":"0.3.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-provider-router_1.5.0_1779245892189_0.7553444443639221","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@bernierllc/ai-provider-router","version":"1.6.0","keywords":["ai","provider","router","load-balancing","failover","openai","anthropic","cost-optimization","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/ai-provider-router@1.6.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools/tree/main/packages/service/ai-provider-router#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"19de4df72283751b36caa7d0e1f22257a930c246","tarball":"https://registry.npmjs.org/@bernierllc/ai-provider-router/-/ai-provider-router-1.6.0.tgz","fileCount":18,"integrity":"sha512-THV7Xgb7aiNVaojr4mN/Q+fNaQZo2aEtGZo3l/fS1DWwUeue1NqcOefItaxGmU7MjO/NyFFcLiwdPejWbn3wOg==","signatures":[{"sig":"MEYCIQDi7WtfpVl7ABFEq7pJuoKooBWR45EEWJGOWUl2EZXOogIhAOl6jiADLvNUuNziAz09hnPHrvWHbE81z3fNJKbKJcmT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64557},"main":"dist/index.js","type":"module","_from":"file:bernierllc-ai-provider-router-1.6.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","prebuild":"npm run clean","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8b7a0c8a-5269-45e8-8352-11aed50b3113"}},"_resolved":"/home/runner/work/tools/tools/packages/service/ai-provider-router/bernierllc-ai-provider-router-1.6.0.tgz","_integrity":"sha512-THV7Xgb7aiNVaojr4mN/Q+fNaQZo2aEtGZo3l/fS1DWwUeue1NqcOefItaxGmU7MjO/NyFFcLiwdPejWbn3wOg==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/ai-provider-router"},"_npmVersion":"11.14.1","description":"Intelligent AI provider routing service with load balancing, cost optimization, and automatic failover","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/logger":"1.7.0","@bernierllc/rate-limiter":"0.6.0","@bernierllc/retry-policy":"0.7.0","@bernierllc/cache-manager":"1.4.0","@bernierllc/event-emitter":"1.4.0","@bernierllc/openai-client":"1.5.0","@bernierllc/ai-cost-tracker":"1.6.0","@bernierllc/anthropic-client":"1.6.0","@bernierllc/neverhub-adapter":"0.4.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-provider-router_1.6.0_1779250290302_0.4590240248017805","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@bernierllc/ai-provider-router","version":"1.7.0","keywords":["ai","provider","router","load-balancing","failover","openai","anthropic","cost-optimization","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/ai-provider-router@1.7.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools/tree/main/packages/service/ai-provider-router#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"3de739623221cb35a0e5d943bbf088772d0147ca","tarball":"https://registry.npmjs.org/@bernierllc/ai-provider-router/-/ai-provider-router-1.7.0.tgz","fileCount":18,"integrity":"sha512-uHl7ZaHMihB4EMBYicsjAtX9751b0gSX4gocOlrkGdUgescfs3LXnh3s393TJTK9+jUnxNywOCS1NsiGvwezvg==","signatures":[{"sig":"MEUCIQDzMFuV5pxw6JraxzZGBqsVd9Czz6cxv3roX1YgAgfrrwIgMwcbg+EXwjN2kM6Wk4VJERVd5MRwSRv4ggzF/cOr4qY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64557},"main":"dist/index.js","type":"module","_from":"file:bernierllc-ai-provider-router-1.7.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","prebuild":"npm run clean","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8b7a0c8a-5269-45e8-8352-11aed50b3113"}},"_resolved":"/home/runner/work/tools/tools/packages/service/ai-provider-router/bernierllc-ai-provider-router-1.7.0.tgz","_integrity":"sha512-uHl7ZaHMihB4EMBYicsjAtX9751b0gSX4gocOlrkGdUgescfs3LXnh3s393TJTK9+jUnxNywOCS1NsiGvwezvg==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/ai-provider-router"},"_npmVersion":"11.14.1","description":"Intelligent AI provider routing service with load balancing, cost optimization, and automatic failover","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/logger":"1.7.0","@bernierllc/rate-limiter":"0.7.0","@bernierllc/retry-policy":"0.7.0","@bernierllc/cache-manager":"1.4.0","@bernierllc/event-emitter":"1.4.0","@bernierllc/openai-client":"1.5.0","@bernierllc/ai-cost-tracker":"1.6.0","@bernierllc/anthropic-client":"1.6.0","@bernierllc/neverhub-adapter":"0.4.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-provider-router_1.7.0_1779303381148_0.9448635674211601","host":"s3://npm-registry-packages-npm-production"}},"1.7.1":{"name":"@bernierllc/ai-provider-router","version":"1.7.1","keywords":["ai","provider","router","load-balancing","failover","openai","anthropic","cost-optimization","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/ai-provider-router@1.7.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools/tree/main/packages/service/ai-provider-router#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"e363c17da13bca10c9b71a423d71214fc0fe4e64","tarball":"https://registry.npmjs.org/@bernierllc/ai-provider-router/-/ai-provider-router-1.7.1.tgz","fileCount":18,"integrity":"sha512-tYLQrOL10xdrId8+Abc0eaOO6udbFHLm9FgyGjnjryFKKbwU+EkufQfx1sxI1e570hPkIlpKCCduMcpe8Fjijg==","signatures":[{"sig":"MEQCIFVZLMvttvfS8+GYRmQjgMg2RyP9rjRklQ6VlQWfW7NzAiAIgGMVNG/WeUpiexGulmvyij1Jlq+LZkeHFYql2naiUQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64557},"main":"dist/index.js","type":"module","_from":"file:bernierllc-ai-provider-router-1.7.1.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","prebuild":"npm run clean","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8b7a0c8a-5269-45e8-8352-11aed50b3113"}},"_resolved":"/home/runner/work/tools/tools/packages/service/ai-provider-router/bernierllc-ai-provider-router-1.7.1.tgz","_integrity":"sha512-tYLQrOL10xdrId8+Abc0eaOO6udbFHLm9FgyGjnjryFKKbwU+EkufQfx1sxI1e570hPkIlpKCCduMcpe8Fjijg==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/ai-provider-router"},"_npmVersion":"12.0.1","description":"Intelligent AI provider routing service with load balancing, cost optimization, and automatic failover","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@bernierllc/logger":"1.7.1","@bernierllc/rate-limiter":"0.7.0","@bernierllc/retry-policy":"0.7.0","@bernierllc/cache-manager":"1.4.0","@bernierllc/event-emitter":"1.4.1","@bernierllc/openai-client":"1.5.1","@bernierllc/ai-cost-tracker":"1.6.1","@bernierllc/anthropic-client":"1.6.1","@bernierllc/neverhub-adapter":"0.4.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-provider-router_1.7.1_1784015765607_0.8919693233357107","host":"s3://npm-registry-packages-npm-production"}},"1.7.2":{"_id":"@bernierllc/ai-provider-router@1.7.2","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"f3f6d45e02aa0f79756f908471b5868f579b5fa8","tarball":"https://registry.npmjs.org/@bernierllc/ai-provider-router/-/ai-provider-router-1.7.2.tgz","fileCount":19,"integrity":"sha512-Qw7PMY4YgMlsqAjv+9UngAyPCwF6TZwDpCcD+m946f+cAdj+g+IxVR+V3jN2G69ELlWlrQCp6fu04ZWQh4X2aw==","signatures":[{"sig":"MEUCIQD9grJIJp6lvClQaiTcaUPFpWV+C24RbLzLNDcw15SqxAIgcTWOWig6+BsxlpoRqzjwCEHiLasiW9s9Iw9rwM+lK9I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFbh54WFcs05kb1+DrqD5MzxobSQKRYZFtw7PDJnJXtUAiArbMzPtzLUy3IEnAbYCV2gtZhjkOAFu2HkxHtDY/wg3g=="}],"unpackedSize":64887},"main":"dist/index.js","name":"@bernierllc/ai-provider-router","type":"module","_from":"file:bernierllc-ai-provider-router-1.7.2.tgz","types":"dist/index.d.ts","author":{"name":"Bernier LLC"},"engines":{"node":">=18.0.0"},"license":"SEE LICENSE IN LICENSE","scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","prebuild":"npm run clean","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"version":"1.7.2","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"8b7a0c8a-5269-45e8-8352-11aed50b3113"}},"homepage":"https://github.com/bernierllc/tools/tree/main/packages/service/ai-provider-router#readme","keywords":["ai","provider","router","load-balancing","failover","openai","anthropic","cost-optimization","bernierllc"],"_resolved":"/home/runner/work/tools/tools/packages/service/ai-provider-router/bernierllc-ai-provider-router-1.7.2.tgz","_integrity":"sha512-Qw7PMY4YgMlsqAjv+9UngAyPCwF6TZwDpCcD+m946f+cAdj+g+IxVR+V3jN2G69ELlWlrQCp6fu04ZWQh4X2aw==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/ai-provider-router"},"_npmVersion":"12.2.0","description":"Intelligent AI provider routing service with load balancing, cost optimization, and automatic failover","directories":{},"maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"_nodeVersion":"24.21.0","dependencies":{"@bernierllc/logger":"^1.7.1","@bernierllc/rate-limiter":"^0.7.0","@bernierllc/retry-policy":"^0.7.0","@bernierllc/cache-manager":"^1.4.0","@bernierllc/event-emitter":"^1.4.1","@bernierllc/openai-client":"^1.5.1","@bernierllc/ai-cost-tracker":"^1.6.1","@bernierllc/anthropic-client":"^1.6.1","@bernierllc/neverhub-adapter":"^0.4.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ai-provider-router_1.7.2_1790884349869_0.6441668812630259"}}},"time":{"created":"2025-11-26T20:00:03.989Z","modified":"2026-10-01T19:52:30.167Z","1.0.1":"2025-11-26T20:00:04.323Z","1.0.2":"2025-12-23T00:27:49.584Z","1.0.3":"2025-12-23T01:47:12.726Z","1.2.0":"2026-01-05T19:47:57.835Z","1.2.2":"2026-03-10T17:23:32.361Z","1.2.3":"2026-05-18T19:47:34.063Z","1.2.4":"2026-05-19T02:22:32.072Z","1.2.5":"2026-05-19T20:11:34.395Z","1.2.6":"2026-05-19T23:40:03.352Z","1.3.0":"2026-05-20T01:45:44.163Z","1.3.1":"2026-05-20T02:16:30.745Z","1.4.0":"2026-05-20T02:39:24.101Z","1.5.0":"2026-05-20T02:58:12.350Z","1.6.0":"2026-05-20T04:11:30.446Z","1.7.0":"2026-05-20T18:56:21.291Z","1.7.1":"2026-07-14T07:56:05.738Z","1.7.2":"2026-10-01T19:52:29.962Z"},"bugs":{"url":"https://github.com/bernierllc/tools/issues"},"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","homepage":"https://github.com/bernierllc/tools/tree/main/packages/service/ai-provider-router#readme","keywords":["ai","provider","router","load-balancing","failover","openai","anthropic","cost-optimization","bernierllc"],"repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/ai-provider-router"},"description":"Intelligent AI provider routing service with load balancing, cost optimization, and automatic failover","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/ai-provider-router\n\nIntelligent AI provider routing service with load balancing, cost optimization, and automatic failover.\n\n## Installation\n\n```bash\nnpm install @bernierllc/ai-provider-router\n```\n\n## Features\n\n- **Multiple Routing Strategies**: Round-robin, least-cost, fastest-response, load-balanced, quality-based, priority\n- **Automatic Failover**: Seamlessly switch to alternate providers when one fails\n- **Cost Tracking**: Track token usage and costs across providers\n- **Load Balancing**: Distribute requests based on configurable weights\n- **Quota Management**: Track and enforce usage limits\n- **Health Monitoring**: Real-time provider health status\n\n## Usage\n\n```typescript\nimport { AIProviderRouter } from '@bernierllc/ai-provider-router';\n\nconst router = new AIProviderRouter({\n  strategy: 'load-balanced',\n  enableFailover: true,\n  enableCostOptimization: true,\n  providers: [\n    {\n      name: 'openai',\n      priority: 10,\n      weight: 2,\n      enabled: true,\n      costPer1kTokens: 0.002,\n    },\n    {\n      name: 'anthropic',\n      priority: 9,\n      weight: 1,\n      enabled: true,\n      costPer1kTokens: 0.003,\n    },\n  ],\n});\n\n// Initialize (loads provider clients)\nawait router.initialize();\n\n// Route a request\nconst result = await router.route({\n  prompt: 'Write a haiku about coding',\n  maxTokens: 100,\n  temperature: 0.7,\n});\n\nif (result.success) {\n  console.log(`Response from ${result.provider}:`, result.response?.content);\n  console.log(`Cost: $${result.metadata.cost.toFixed(4)}`);\n}\n```\n\n## Routing Strategies\n\n### Round-Robin\n\nDistributes requests evenly across available providers.\n\n```typescript\nconst router = new AIProviderRouter({\n  strategy: 'round-robin',\n  providers: [...],\n});\n```\n\n### Least-Cost\n\nSelects the cheapest provider based on cost per 1K tokens.\n\n```typescript\nconst router = new AIProviderRouter({\n  strategy: 'least-cost',\n  enableCostOptimization: true,\n  providers: [\n    { name: 'openai', costPer1kTokens: 0.002, ... },\n    { name: 'anthropic', costPer1kTokens: 0.003, ... },\n  ],\n});\n```\n\n### Fastest-Response\n\nSelects the provider with the lowest average latency.\n\n```typescript\nconst router = new AIProviderRouter({\n  strategy: 'fastest-response',\n  providers: [...],\n});\n```\n\n### Load-Balanced\n\nDistributes requests based on configured weights.\n\n```typescript\nconst router = new AIProviderRouter({\n  strategy: 'load-balanced',\n  providers: [\n    { name: 'openai', weight: 2, ... },    // Gets ~66% of requests\n    { name: 'anthropic', weight: 1, ... }, // Gets ~33% of requests\n  ],\n});\n```\n\n### Quality-Based\n\nSelects the provider with the highest success rate.\n\n```typescript\nconst router = new AIProviderRouter({\n  strategy: 'quality-based',\n  providers: [...],\n});\n```\n\n### Priority\n\nSelects the highest priority provider.\n\n```typescript\nconst router = new AIProviderRouter({\n  strategy: 'priority',\n  providers: [\n    { name: 'openai', priority: 10, ... },    // Primary\n    { name: 'anthropic', priority: 5, ... },  // Fallback\n  ],\n});\n```\n\n## Request Preferences\n\nOverride the routing strategy per-request:\n\n```typescript\n// Force a specific provider\nawait router.route({\n  prompt: '...',\n  maxTokens: 100,\n  preferences: { preferredProvider: 'anthropic' },\n});\n\n// Exclude providers\nawait router.route({\n  prompt: '...',\n  maxTokens: 100,\n  preferences: { excludeProviders: ['openai'] },\n});\n\n// Override strategy for this request\nawait router.route({\n  prompt: '...',\n  maxTokens: 100,\n  preferences: { prioritizeCost: true }, // Use least-cost strategy\n});\n```\n\n## Failover\n\nWhen a provider fails, the router automatically tries alternate providers:\n\n```typescript\nconst router = new AIProviderRouter({\n  enableFailover: true, // Default: true\n  providers: [\n    { name: 'openai', priority: 10, ... },\n    { name: 'anthropic', priority: 5, ... },\n  ],\n});\n\nconst result = await router.route(request);\n\nconsole.log(`Failover attempts: ${result.metadata.failoverAttempts}`);\nconsole.log(`Alternatives tried: ${result.metadata.alternativesConsidered}`);\n```\n\n## Cost Tracking\n\nTrack costs across providers:\n\n```typescript\nconst router = new AIProviderRouter({\n  enableCostOptimization: true,\n  providers: [...],\n});\n\n// After some requests\nconst totalCost = router.getTotalCost();\nconst breakdown = router.getCostBreakdown();\n\nconsole.log(`Total cost: $${totalCost.toFixed(4)}`);\nconsole.log('By provider:', breakdown);\n```\n\n## Quota Management\n\nEnforce usage limits:\n\n```typescript\nconst router = new AIProviderRouter({\n  providers: [\n    {\n      name: 'openai',\n      enabled: true,\n      quotaLimit: {\n        daily: 100000,  // 100K tokens per day\n        hourly: 10000,  // 10K tokens per hour\n      },\n    },\n  ],\n});\n\n// Reset quotas (e.g., at start of new day)\nrouter.resetQuota('openai');\nrouter.resetAllQuotas();\n```\n\n## Health Monitoring\n\nCheck provider health status:\n\n```typescript\nconst health = router.getHealth();\n\nconsole.log(`Status: ${health.status}`); // 'healthy', 'degraded', or 'unhealthy'\nconsole.log(`Available: ${health.availableProviders}/${health.totalProviders}`);\n\n// Per-provider health\nfor (const [name, info] of Object.entries(health.providers)) {\n  console.log(`${name}: ${info.available ? 'up' : 'down'}, success rate: ${info.successRate}`);\n}\n```\n\n## Metrics\n\nAccess detailed provider metrics:\n\n```typescript\nconst metrics = router.getProviderMetrics('openai');\n\nconsole.log(`Success rate: ${metrics?.successRate}`);\nconsole.log(`Avg latency: ${metrics?.averageLatency}ms`);\nconsole.log(`Total requests: ${metrics?.totalRequests}`);\nconsole.log(`Failed requests: ${metrics?.failedRequests}`);\n```\n\n## Custom Providers\n\nRegister custom AI providers:\n\n```typescript\nconst customClient = {\n  complete: async (request) => {\n    // Your custom implementation\n    return { success: true, data: { content: '...', model: '...', tokensUsed: 100 } };\n  },\n};\n\nrouter.registerProvider('custom', customClient, {\n  priority: 20,\n  costPer1kTokens: 0.001,\n});\n```\n\n## API Reference\n\n### RouterConfig\n\n| Property | Type | Default | Description |\n|----------|------|---------|-------------|\n| strategy | RoutingStrategy | 'round-robin' | Default routing strategy |\n| enableFailover | boolean | true | Enable automatic failover |\n| enableCostOptimization | boolean | false | Enable cost tracking |\n| enableLoadBalancing | boolean | false | Enable load balancing |\n| providers | ProviderConfig[] | - | List of provider configurations |\n| defaultTimeoutMs | number | 30000 | Default request timeout |\n| maxRetries | number | 3 | Maximum retry attempts |\n\n### ProviderConfig\n\n| Property | Type | Description |\n|----------|------|-------------|\n| name | string | Provider name ('openai', 'anthropic', or custom) |\n| priority | number | Priority for failover (higher = more preferred) |\n| weight | number | Weight for load balancing |\n| enabled | boolean | Whether provider is enabled |\n| costPer1kTokens | number | Cost per 1K tokens |\n| quotaLimit | QuotaLimit | Usage limits |\n\n## Integration Status\n\n- **Logger**: planned\n- **Docs-Suite**: ready (typedoc)\n- **NeverHub**: planned\n\n## License\n\nCopyright (c) 2025 Bernier LLC. All rights reserved.\n","readmeFilename":"README.md"}