{"_id":"async-bulkhead-llm","_rev":"33-e026cbc639bddd89f699cc978758300c","name":"async-bulkhead-llm","dist-tags":{"latest":"3.17.0"},"versions":{"1.0.0":{"name":"async-bulkhead-llm","version":"1.0.0","keywords":["llm","concurrency","bulkhead","backpressure","admission-control","rate-limiting","load-shedding","token-budget"],"author":"","license":"MIT","_id":"async-bulkhead-llm@1.0.0","maintainers":[{"name":"janbalangue","email":"jan.a.balangue@gmail.com"}],"homepage":"https://github.com/your-org/async-bulkhead-llm","bugs":{"url":"https://github.com/your-org/async-bulkhead-llm/issues"},"dist":{"shasum":"e8e20666e0b15867ca45d022bbe2dc957f9ed36b","tarball":"https://registry.npmjs.org/async-bulkhead-llm/-/async-bulkhead-llm-1.0.0.tgz","fileCount":9,"integrity":"sha512-KibuNMaqY94JG1j+l/lOq8vbuN0zrNe8NYII2GGt1L5J2mb/MT1mZodhIZ92bonesU33zl/D5P9JBz/57myhWw==","signatures":[{"sig":"MEUCIGFk3mECtfMaeQV5ImTydDFZKf93thav9jdaDqSIdAJ5AiEA+xuxj+nI03rb2HNMUSOV6Ga39tU+ax7oCfou83hq0pI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77803},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"5bce82112dda1e06b54bee3d592ca4bd7c1bdc68","scripts":{"lint":"eslint . --max-warnings=0","test":"vitest","build":"npm run build:esm && npm run build:cjs && npm run build:types","lint:fix":"eslint . --fix","build:cjs":"tsc -p tsconfig.cjs.json && node rename-cjs.mjs","build:esm":"tsc -p tsconfig.esm.json","build:types":"tsc -p tsconfig.types.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"janbalangue","email":"jan.a.balangue@gmail.com"},"repository":{"url":"git+https://github.com/your-org/async-bulkhead-llm.git","type":"git"},"_npmVersion":"11.8.0","description":"Fail-fast admission control for LLM workloads built on async-bulkhead-ts.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"async-bulkhead-ts":"^0.2.3"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","typescript-eslint":"^8.56.1"},"_npmOperationalInternal":{"tmp":"tmp/async-bulkhead-llm_1.0.0_1771988263562_0.7040731101916684","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"async-bulkhead-llm","version":"1.0.1","keywords":["llm","concurrency","bulkhead","backpressure","admission-control","rate-limiting","load-shedding","token-budget"],"author":"","license":"MIT","_id":"async-bulkhead-llm@1.0.1","maintainers":[{"name":"janbalangue","email":"jan.a.balangue@gmail.com"}],"homepage":"https://github.com/your-org/async-bulkhead-llm","bugs":{"url":"https://github.com/your-org/async-bulkhead-llm/issues"},"dist":{"shasum":"62bd4e6c9236322cfc1560db794c5c1668d68c8a","tarball":"https://registry.npmjs.org/async-bulkhead-llm/-/async-bulkhead-llm-1.0.1.tgz","fileCount":9,"integrity":"sha512-DKuEj712g/pG3UcgoTajf0pDoVy/dpAqFmshC+veQx3SbNogTx83plWNvLAfyzL/32To3vhbf890GLclcIk0kQ==","signatures":[{"sig":"MEQCID2luBfVioxtWR2W56lbkKCNpxPGTpr4QJOrLdgVbduFAiAx1pbaJ8cCaz3U9EpAxOs9nbIjQqP/r63oEwdShG3xKA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77835},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"0f808aa151f59427df54d7a386440cb66c60f0a2","scripts":{"lint":"eslint . --max-warnings=0","test":"vitest","build":"npm run build:esm && npm run build:cjs && npm run build:types","prepack":"npm run build","lint:fix":"eslint . --fix","build:cjs":"tsc -p tsconfig.cjs.json && node rename-cjs.mjs","build:esm":"tsc -p tsconfig.esm.json","build:types":"tsc -p tsconfig.types.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"janbalangue","email":"jan.a.balangue@gmail.com"},"repository":{"url":"git+https://github.com/your-org/async-bulkhead-llm.git","type":"git"},"_npmVersion":"11.8.0","description":"Fail-fast admission control for LLM workloads built on async-bulkhead-ts.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"async-bulkhead-ts":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","typescript-eslint":"^8.56.1"},"_npmOperationalInternal":{"tmp":"tmp/async-bulkhead-llm_1.0.1_1772147443746_0.8721077856157025","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"async-bulkhead-llm","version":"1.0.2","keywords":["llm","concurrency","bulkhead","backpressure","admission-control","rate-limiting","load-shedding","token-budget"],"author":"","license":"MIT","_id":"async-bulkhead-llm@1.0.2","maintainers":[{"name":"janbalangue","email":"jan.a.balangue@gmail.com"}],"homepage":"https://github.com/janbalangue/async-bulkhead-llm","bugs":{"url":"https://github.com/janbalangue/async-bulkhead-llm/issues"},"dist":{"shasum":"31c20ef6ad29533ae1e78c26bb864ec219c44b05","tarball":"https://registry.npmjs.org/async-bulkhead-llm/-/async-bulkhead-llm-1.0.2.tgz","fileCount":9,"integrity":"sha512-1Ae4s14T9AYyI6HhvNuQgKT/uIxRVEpyOGxylAsPJI8T6e4p1c9Q/sGq4ul36YPFgue2kZQBZimIqXr7oBepEA==","signatures":[{"sig":"MEUCIQCLghGmOaH4b3UkZrTpGRAsu4T3qKUtSQ8m5YI9CQ884wIgb/6kOLr24huw8wzhP4I5VZELRj9V4hd01APb+GBPPGY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77847},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"6fe4c3b6e0049063e9e14e6d67563f24c5cea1df","scripts":{"lint":"eslint . --max-warnings=0","test":"vitest","build":"npm run build:esm && npm run build:cjs && npm run build:types","prepack":"npm run build","lint:fix":"eslint . --fix","build:cjs":"tsc -p tsconfig.cjs.json && node rename-cjs.mjs","build:esm":"tsc -p tsconfig.esm.json","build:types":"tsc -p tsconfig.types.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"janbalangue","email":"jan.a.balangue@gmail.com"},"repository":{"url":"git+https://github.com/janbalangue/async-bulkhead-llm.git","type":"git"},"_npmVersion":"11.8.0","description":"Fail-fast admission control for LLM workloads built on async-bulkhead-ts.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"async-bulkhead-ts":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","typescript-eslint":"^8.56.1"},"_npmOperationalInternal":{"tmp":"tmp/async-bulkhead-llm_1.0.2_1772148606715_0.6150735996665306","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"async-bulkhead-llm","version":"1.0.3","keywords":["llm","concurrency","bulkhead","backpressure","admission-control","rate-limiting","load-shedding","token-budget"],"author":"","license":"Apache-2.0","_id":"async-bulkhead-llm@1.0.3","maintainers":[{"name":"janbalangue","email":"jan.a.balangue@gmail.com"}],"homepage":"https://github.com/janbalangue/async-bulkhead-llm","bugs":{"url":"https://github.com/janbalangue/async-bulkhead-llm/issues"},"dist":{"shasum":"ef9b93d57b66237db2d5c85014c0a2695d6d2efc","tarball":"https://registry.npmjs.org/async-bulkhead-llm/-/async-bulkhead-llm-1.0.3.tgz","fileCount":9,"integrity":"sha512-I+2Xp0XhAC+Co1GLqtDAoZtVvAGZ2DuEJ/k79P+Cdg1sboiMeNzBnC7OvfsLYnF7nH2vWWpLVgYedkNlKJfvIQ==","signatures":[{"sig":"MEUCIQDmC2hN67dqrSk7mIulUU6O0/WKklEVDaMZ/aTG2We+pwIgU4rlwyD8GBMW4UaO71ak/pauo1hdFQWgyjB+lEfK1Vs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77854},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"d61124c1aa5fcc59d196e4e83dd63f3183354f47","scripts":{"lint":"eslint . --max-warnings=0","test":"vitest","build":"npm run build:esm && npm run build:cjs && npm run build:types","prepack":"npm run build","lint:fix":"eslint . --fix","build:cjs":"tsc -p tsconfig.cjs.json && node rename-cjs.mjs","build:esm":"tsc -p tsconfig.esm.json","build:types":"tsc -p tsconfig.types.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"janbalangue","email":"jan.a.balangue@gmail.com"},"repository":{"url":"git+https://github.com/janbalangue/async-bulkhead-llm.git","type":"git"},"_npmVersion":"11.8.0","description":"Fail-fast admission control for LLM workloads built on async-bulkhead-ts.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"async-bulkhead-ts":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","typescript-eslint":"^8.56.1"},"_npmOperationalInternal":{"tmp":"tmp/async-bulkhead-llm_1.0.3_1772150037690_0.7279842533629153","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"async-bulkhead-llm","version":"2.0.0","keywords":["llm","concurrency","bulkhead","backpressure","admission-control","rate-limiting","load-shedding","token-budget"],"author":"","license":"Apache-2.0","_id":"async-bulkhead-llm@2.0.0","maintainers":[{"name":"janbalangue","email":"jan.a.balangue@gmail.com"}],"homepage":"https://github.com/janbalangue/async-bulkhead-llm","bugs":{"url":"https://github.com/janbalangue/async-bulkhead-llm/issues"},"dist":{"shasum":"6ce14a63e7cf65e3ec65b1d2984a64378d0dadec","tarball":"https://registry.npmjs.org/async-bulkhead-llm/-/async-bulkhead-llm-2.0.0.tgz","fileCount":9,"integrity":"sha512-jZ0SnDbN6Rs/J8wxuLBd5YVAE8WBsKP2V57doK64RuyORatY0XUDW4ace2tA1JOFZ1EJWq6TtIVNnEnILsjyGA==","signatures":[{"sig":"MEUCIAh6ILafOxWLmcX7jRQwnNYmt41y1oG9Ckg8P6RpmDsRAiEA0PqowK1EsFnA0pLqrHEkuGYzGA3KBUsQ1jOCyYmfsy0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96140},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"41f2aa05e84939d7bdaf0fcc20d16023d7c73792","scripts":{"lint":"eslint . --max-warnings=0","test":"vitest","build":"npm run build:esm && npm run build:cjs && npm run build:types","prepack":"npm run build","lint:fix":"eslint . --fix","build:cjs":"tsc -p tsconfig.cjs.json && node rename-cjs.mjs","build:esm":"tsc -p tsconfig.esm.json","build:types":"tsc -p tsconfig.types.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"janbalangue","email":"jan.a.balangue@gmail.com"},"repository":{"url":"git+https://github.com/janbalangue/async-bulkhead-llm.git","type":"git"},"_npmVersion":"11.8.0","description":"Fail-fast admission control for LLM workloads built on async-bulkhead-ts.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"async-bulkhead-ts":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","typescript-eslint":"^8.56.1","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/async-bulkhead-llm_2.0.0_1772574298686_0.831790661710047","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"async-bulkhead-llm","version":"3.0.0","keywords":["llm","concurrency","bulkhead","backpressure","admission-control","rate-limiting","load-shedding","token-budget"],"author":"","license":"Apache-2.0","_id":"async-bulkhead-llm@3.0.0","maintainers":[{"name":"janbalangue","email":"jan.a.balangue@gmail.com"}],"homepage":"https://github.com/janbalangue/async-bulkhead-llm","bugs":{"url":"https://github.com/janbalangue/async-bulkhead-llm/issues"},"dist":{"shasum":"55ae1c76ba300b5cc028fd700fdb493c05414769","tarball":"https://registry.npmjs.org/async-bulkhead-llm/-/async-bulkhead-llm-3.0.0.tgz","fileCount":9,"integrity":"sha512-SqlyPzFTaqdlRjpmXylWecFdpxQUgJ8hkWrmZ9bOzoVVqsOdeWLASCopjuYTGV3Ph/mBAAgfvyQS0hC6QW842A==","signatures":[{"sig":"MEQCIGsUlsV6aElJzCGkrUFkvvnuP8+Zf8ybTAqv1fx/yoaWAiAFX0p5lRVQ7EJ1O75SJqpwSkZvZjuQpYnCFtoTi5mYhQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103925},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"f318442bbd3f5b4b797bebb78854907ba22309b8","scripts":{"lint":"eslint . --max-warnings=0","test":"vitest","build":"npm run build:esm && npm run build:cjs && npm run build:types","prepack":"npm run build","lint:fix":"eslint . --fix","build:cjs":"tsc -p tsconfig.cjs.json && node rename-cjs.mjs","build:esm":"tsc -p tsconfig.esm.json","build:types":"tsc -p tsconfig.types.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"janbalangue","email":"jan.a.balangue@gmail.com"},"repository":{"url":"git+https://github.com/janbalangue/async-bulkhead-llm.git","type":"git"},"_npmVersion":"11.8.0","description":"Fail-fast admission control for LLM workloads built on async-bulkhead-ts.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"async-bulkhead-ts":"^0.4.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","typescript-eslint":"^8.56.1","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/async-bulkhead-llm_3.0.0_1776297551883_0.34790192728759783","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"async-bulkhead-llm","version":"3.1.0","keywords":["llm","concurrency","bulkhead","backpressure","admission-control","rate-limiting","load-shedding","token-budget"],"author":"","license":"Apache-2.0","_id":"async-bulkhead-llm@3.1.0","maintainers":[{"name":"janbalangue","email":"jan.a.balangue@gmail.com"}],"homepage":"https://github.com/janbalangue/async-bulkhead-llm","bugs":{"url":"https://github.com/janbalangue/async-bulkhead-llm/issues"},"dist":{"shasum":"92816aaa61e4be4a533e8f1e3f4d0ef78910ba1c","tarball":"https://registry.npmjs.org/async-bulkhead-llm/-/async-bulkhead-llm-3.1.0.tgz","fileCount":9,"integrity":"sha512-1mlWjwjoEjxX3FRZ3bEJD/0FyoA/ZsmKsQD6EZIlHdEXwT6mMhM4odRLd3Aac2cH08P0mSM3ADEPpWUefmJMMg==","signatures":[{"sig":"MEQCIDtE0J/hTXQa6sQ8FSn+RKiCiFAjSoJrslqN/v3CM2DaAiAhnRtXZkZXii53LHHzYnblb2pkqW2NAIFp20pQ3r5CtQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":106210},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"21d53f1c06ca5ef116830ec85980d6a077868919","scripts":{"lint":"eslint . --max-warnings=0","test":"vitest","build":"npm run build:esm && npm run build:cjs && npm run build:types","prepack":"npm run build","lint:fix":"eslint . --fix","build:cjs":"tsc -p tsconfig.cjs.json && node rename-cjs.mjs","build:esm":"tsc -p tsconfig.esm.json","build:types":"tsc -p tsconfig.types.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"janbalangue","email":"jan.a.balangue@gmail.com"},"repository":{"url":"git+https://github.com/janbalangue/async-bulkhead-llm.git","type":"git"},"_npmVersion":"11.8.0","description":"Fail-fast admission control for LLM workloads built on async-bulkhead-ts.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"async-bulkhead-ts":"^0.4.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","typescript-eslint":"^8.56.1","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/async-bulkhead-llm_3.1.0_1777224845370_0.37805294766842645","host":"s3://npm-registry-packages-npm-production"}},"3.1.1":{"name":"async-bulkhead-llm","version":"3.1.1","keywords":["llm","concurrency","bulkhead","backpressure","admission-control","rate-limiting","load-shedding","token-budget"],"author":"","license":"Apache-2.0","_id":"async-bulkhead-llm@3.1.1","maintainers":[{"name":"janbalangue","email":"jan.a.balangue@gmail.com"}],"homepage":"https://github.com/janbalangue/async-bulkhead-llm","bugs":{"url":"https://github.com/janbalangue/async-bulkhead-llm/issues"},"dist":{"shasum":"c3cc4a98aed25f81564e85233799965ef409765d","tarball":"https://registry.npmjs.org/async-bulkhead-llm/-/async-bulkhead-llm-3.1.1.tgz","fileCount":9,"integrity":"sha512-sEmYXxNIT7tcLJHqSz7MlQNSax0UlaoksALMDtNuwzMmhdtdbBbU7EVDgOGv7b1/KzQGeDooSAZXkXZEOW08HQ==","signatures":[{"sig":"MEUCIQCecGDISsis36JkwuweoHWPMd+LPgQACpkI9qtqBcJ9PQIgcVY3BOL73aAhZTQsU1HKYZxyCK31DYFJn8QrLJzphRY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":107759},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"5080d91682ab9d240c55d00aae82a5adda37262c","scripts":{"lint":"eslint . --max-warnings=0","test":"vitest","build":"npm run build:esm && npm run build:cjs && npm run build:types","prepack":"npm run build","lint:fix":"eslint . --fix","build:cjs":"tsc -p tsconfig.cjs.json && node rename-cjs.mjs","build:esm":"tsc -p tsconfig.esm.json","build:types":"tsc -p tsconfig.types.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"janbalangue","email":"jan.a.balangue@gmail.com"},"repository":{"url":"git+https://github.com/janbalangue/async-bulkhead-llm.git","type":"git"},"_npmVersion":"11.8.0","description":"Fail-fast admission control for LLM workloads built on async-bulkhead-ts.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"async-bulkhead-ts":"^0.4.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","typescript-eslint":"^8.56.1","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/async-bulkhead-llm_3.1.1_1778091612211_0.24320538518080204","host":"s3://npm-registry-packages-npm-production"}},"3.1.2":{"name":"async-bulkhead-llm","version":"3.1.2","keywords":["llm","concurrency","bulkhead","backpressure","admission-control","rate-limiting","load-shedding","token-budget"],"author":"","license":"Apache-2.0","_id":"async-bulkhead-llm@3.1.2","maintainers":[{"name":"janbalangue","email":"jan.a.balangue@gmail.com"}],"homepage":"https://github.com/janbalangue/async-bulkhead-llm","bugs":{"url":"https://github.com/janbalangue/async-bulkhead-llm/issues"},"dist":{"shasum":"b3951ddc27a6e4950bf373b1b8f892d5d0aa1f44","tarball":"https://registry.npmjs.org/async-bulkhead-llm/-/async-bulkhead-llm-3.1.2.tgz","fileCount":9,"integrity":"sha512-g46jWkGE1cvaL37IFRCh0QnWFqfe07a7/piLBB7tYvALXlitzIp0qMoDy3aWZCOJEgMIpo17qbqwwi2Ponyi0w==","signatures":[{"sig":"MEUCIQCnZlv8lrRDp4yZdScB2BAXOpNenhc4laEKQY3d8vdeRAIgL8eMHt3vd68Ejv6VSTvswkLPOcgA9gAem/NWn9LsnbQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":125522},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"8d54a97820d55b14ed4000c21697f9814883b9b4","scripts":{"lint":"eslint . --max-warnings=0","test":"vitest","build":"npm run build:esm && npm run build:cjs && npm run build:types","smoke":"node --input-type=module -e \"await import('./dist/esm/index.js')\" && node -e \"require('./dist/cjs/index.cjs')\" && node --input-type=module -e \"import { readFileSync } from 'node:fs'; const js = readFileSync('./dist/cjs/index.cjs', 'utf8'); const map = JSON.parse(readFileSync('./dist/cjs/index.cjs.map', 'utf8')); if (!js.includes('sourceMappingURL=index.cjs.map')) throw new Error('bad CJS sourceMappingURL'); if (map.file !== 'index.cjs') throw new Error('bad CJS sourcemap file');\"","prepack":"npm run build","lint:fix":"eslint . --fix","test:run":"vitest run","build:cjs":"tsc -p tsconfig.cjs.json && node rename-cjs.mjs","build:esm":"tsc -p tsconfig.esm.json","pack:check":"npm pack --dry-run","build:types":"tsc -p tsconfig.types.json","release:check":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke && npm run pack:check","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke"},"_npmUser":{"name":"janbalangue","email":"jan.a.balangue@gmail.com"},"repository":{"url":"git+https://github.com/janbalangue/async-bulkhead-llm.git","type":"git"},"_npmVersion":"11.8.0","description":"Fail-fast admission control for LLM workloads built on async-bulkhead-ts.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"async-bulkhead-ts":"^0.4.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^4.1.6","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/async-bulkhead-llm_3.1.2_1778530927352_0.786192611868495","host":"s3://npm-registry-packages-npm-production"}},"3.2.0":{"name":"async-bulkhead-llm","version":"3.2.0","keywords":["llm","concurrency","bulkhead","backpressure","admission-control","rate-limiting","load-shedding","token-budget"],"author":"","license":"Apache-2.0","_id":"async-bulkhead-llm@3.2.0","maintainers":[{"name":"janbalangue","email":"jan.a.balangue@gmail.com"}],"homepage":"https://github.com/janbalangue/async-bulkhead-llm","bugs":{"url":"https://github.com/janbalangue/async-bulkhead-llm/issues"},"dist":{"shasum":"9b25bffb1c53435fa2f5dd526d3bbd02f13936cd","tarball":"https://registry.npmjs.org/async-bulkhead-llm/-/async-bulkhead-llm-3.2.0.tgz","fileCount":9,"integrity":"sha512-IJtlbTO+ygkn2+DQxKg8WjxpTZgHoC5n7BGXYuVcr47OZ+dQ5G1sWL2ReIeXj/8+MpPiact8MEQI92tSzShBEQ==","signatures":[{"sig":"MEYCIQCEG8NXoYrHwmAgL8Beq+wjw6DDNXloD3FpDxmOcwoQDQIhAM3Oi3yeAe1U4JqsG+uKeCEojPYgv3Gkpvb1wJB2gxAP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":153906},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"b6d6b4d03d9b9d89bf5cc6b528ba860824826bb1","scripts":{"lint":"eslint . --max-warnings=0","test":"vitest","build":"npm run build:esm && npm run build:cjs && npm run build:types","smoke":"node --input-type=module -e \"await import('./dist/esm/index.js')\" && node -e \"require('./dist/cjs/index.cjs')\" && node --input-type=module -e \"import { readFileSync } from 'node:fs'; const js = readFileSync('./dist/cjs/index.cjs', 'utf8'); const map = JSON.parse(readFileSync('./dist/cjs/index.cjs.map', 'utf8')); if (!js.includes('sourceMappingURL=index.cjs.map')) throw new Error('bad CJS sourceMappingURL'); if (map.file !== 'index.cjs') throw new Error('bad CJS sourcemap file');\"","prepack":"npm run build","lint:fix":"eslint . --fix","test:run":"vitest run","build:cjs":"tsc -p tsconfig.cjs.json && node rename-cjs.mjs","build:esm":"tsc -p tsconfig.esm.json","pack:check":"npm pack --dry-run","build:types":"tsc -p tsconfig.types.json","release:check":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke && npm run pack:check","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke"},"_npmUser":{"name":"janbalangue","email":"jan.a.balangue@gmail.com"},"repository":{"url":"git+https://github.com/janbalangue/async-bulkhead-llm.git","type":"git"},"_npmVersion":"11.16.0","description":"Fail-fast admission control for LLM workloads built on async-bulkhead-ts.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"async-bulkhead-ts":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^4.1.6","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/async-bulkhead-llm_3.2.0_1784083388665_0.8060278080902452","host":"s3://npm-registry-packages-npm-production"}},"3.3.0":{"name":"async-bulkhead-llm","version":"3.3.0","keywords":["llm","concurrency","bulkhead","backpressure","admission-control","rate-limiting","load-shedding","token-budget"],"author":"","license":"Apache-2.0","_id":"async-bulkhead-llm@3.3.0","maintainers":[{"name":"janbalangue","email":"jan.a.balangue@gmail.com"}],"homepage":"https://github.com/janbalangue/async-bulkhead-llm","bugs":{"url":"https://github.com/janbalangue/async-bulkhead-llm/issues"},"dist":{"shasum":"7b81226fc29b51d40c8dccf515eb688d58f92465","tarball":"https://registry.npmjs.org/async-bulkhead-llm/-/async-bulkhead-llm-3.3.0.tgz","fileCount":9,"integrity":"sha512-GItmZ0Q/pslLiU5/ClHUU8CV94he4N70sfsBtY6UftbzmKHm05TgZu1AC5ONSoAY3rXGwVG9yAvKcIx7sLgdRg==","signatures":[{"sig":"MEQCIFDpI/wlRjamlmEYg/1uehHEE7RIouCHEpyVNQNTsNc1AiA8B1TWf5W324iUuTkWEiEuTTDEnqqFudNya1SUIsUfJA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":160447},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"1ca8566c0877ca090cc557731f1fa99f5c5a3ab5","scripts":{"lint":"eslint . --max-warnings=0","test":"vitest","build":"npm run build:esm && npm run build:cjs && npm run build:types","smoke":"node --input-type=module -e \"await import('./dist/esm/index.js')\" && node -e \"require('./dist/cjs/index.cjs')\" && node --input-type=module -e \"import { readFileSync } from 'node:fs'; const js = readFileSync('./dist/cjs/index.cjs', 'utf8'); const map = JSON.parse(readFileSync('./dist/cjs/index.cjs.map', 'utf8')); if (!js.includes('sourceMappingURL=index.cjs.map')) throw new Error('bad CJS sourceMappingURL'); if (map.file !== 'index.cjs') throw new Error('bad CJS sourcemap file');\"","prepack":"npm run build","lint:fix":"eslint . --fix","test:run":"vitest run","build:cjs":"tsc -p tsconfig.cjs.json && node rename-cjs.mjs","build:esm":"tsc -p tsconfig.esm.json","pack:check":"npm pack --dry-run","build:types":"tsc -p tsconfig.types.json","release:check":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke && npm run pack:check","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke"},"_npmUser":{"name":"janbalangue","email":"jan.a.balangue@gmail.com"},"repository":{"url":"git+https://github.com/janbalangue/async-bulkhead-llm.git","type":"git"},"_npmVersion":"11.16.0","description":"Fail-fast admission control for LLM workloads built on async-bulkhead-ts.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"async-bulkhead-ts":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^4.1.6","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/async-bulkhead-llm_3.3.0_1784302597632_0.9037708533934874","host":"s3://npm-registry-packages-npm-production"}},"3.3.1":{"name":"async-bulkhead-llm","version":"3.3.1","keywords":["llm","concurrency","bulkhead","backpressure","admission-control","rate-limiting","load-shedding","token-budget"],"author":"","license":"Apache-2.0","_id":"async-bulkhead-llm@3.3.1","maintainers":[{"name":"janbalangue","email":"jan.a.balangue@gmail.com"}],"homepage":"https://github.com/janbalangue/async-bulkhead-llm","bugs":{"url":"https://github.com/janbalangue/async-bulkhead-llm/issues"},"dist":{"shasum":"afd242011441f628eff9bae2336e6123abbe1eeb","tarball":"https://registry.npmjs.org/async-bulkhead-llm/-/async-bulkhead-llm-3.3.1.tgz","fileCount":9,"integrity":"sha512-ZEJO0nVxIfKoMw25XbkMbxTPR+QwirPPvOCUealDLNOuTn5Y8xS4F0GiBPKKvgOt+LRRm7ANdwraqS1qJXd3qw==","signatures":[{"sig":"MEUCIQCKuzbe8kM3jSQKFirHLjTn08ABMUXkeXHT+amyOu4cXgIgTBCOhB1W02Xf9FgJLmHKFukWPCdTstAW4bp52HxZm2o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":164007},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"54f8c16acd8bf410bdccb20877a207cf1d45523c","scripts":{"lint":"eslint . --max-warnings=0","test":"vitest","build":"npm run build:esm && npm run build:cjs && npm run build:types","smoke":"node --input-type=module -e \"await import('./dist/esm/index.js')\" && node -e \"require('./dist/cjs/index.cjs')\" && node --input-type=module -e \"import { readFileSync } from 'node:fs'; const js = readFileSync('./dist/cjs/index.cjs', 'utf8'); const map = JSON.parse(readFileSync('./dist/cjs/index.cjs.map', 'utf8')); if (!js.includes('sourceMappingURL=index.cjs.map')) throw new Error('bad CJS sourceMappingURL'); if (map.file !== 'index.cjs') throw new Error('bad CJS sourcemap file');\"","prepack":"npm run build","lint:fix":"eslint . --fix","test:run":"vitest run","build:cjs":"tsc -p tsconfig.cjs.json && node rename-cjs.mjs","build:esm":"tsc -p tsconfig.esm.json","pack:check":"npm pack --dry-run","build:types":"tsc -p tsconfig.types.json","release:check":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke && npm run pack:check","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke"},"_npmUser":{"name":"janbalangue","email":"jan.a.balangue@gmail.com"},"repository":{"url":"git+https://github.com/janbalangue/async-bulkhead-llm.git","type":"git"},"_npmVersion":"11.16.0","description":"Fail-fast admission control for LLM workloads built on async-bulkhead-ts.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"async-bulkhead-ts":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^4.1.6","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/async-bulkhead-llm_3.3.1_1784303307405_0.6426484763638498","host":"s3://npm-registry-packages-npm-production"}},"3.4.1":{"name":"async-bulkhead-llm","version":"3.4.1","keywords":["llm","concurrency","bulkhead","backpressure","admission-control","rate-limiting","load-shedding","token-budget"],"author":"","license":"Apache-2.0","_id":"async-bulkhead-llm@3.4.1","maintainers":[{"name":"janbalangue","email":"jan.a.balangue@gmail.com"}],"homepage":"https://github.com/janbalangue/async-bulkhead-llm","bugs":{"url":"https://github.com/janbalangue/async-bulkhead-llm/issues"},"dist":{"shasum":"290db8080b1000bf522a10c94e3f02330ac687b6","tarball":"https://registry.npmjs.org/async-bulkhead-llm/-/async-bulkhead-llm-3.4.1.tgz","fileCount":9,"integrity":"sha512-Az+0h52h8RIRn643LJ1lgpjretK8oCDNxSBvDOlmJS/aCfKHP2GePli8ofU+RLYVzm1F5IjyDWkMWWQGGIC/BQ==","signatures":[{"sig":"MEUCIEsLF+JyTakDYmwejKBN5bW8DkQDlrUPLH4ojQkGgyVoAiEA6aVqUYWC9+xx14/7yl+AYNwDmYOXGF331MjhhRLS0Ts=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":174407},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"57deadc010b98dc104504541fb2d69cd9024df4a","scripts":{"lint":"eslint . --max-warnings=0","test":"vitest","build":"npm run build:esm && npm run build:cjs && npm run build:types","smoke":"node --input-type=module -e \"await import('./dist/esm/index.js')\" && node -e \"require('./dist/cjs/index.cjs')\" && node --input-type=module -e \"import { readFileSync } from 'node:fs'; const js = readFileSync('./dist/cjs/index.cjs', 'utf8'); const map = JSON.parse(readFileSync('./dist/cjs/index.cjs.map', 'utf8')); if (!js.includes('sourceMappingURL=index.cjs.map')) throw new Error('bad CJS sourceMappingURL'); if (map.file !== 'index.cjs') throw new Error('bad CJS sourcemap file');\"","prepack":"npm run build","lint:fix":"eslint . --fix","test:run":"vitest run","build:cjs":"tsc -p tsconfig.cjs.json && node rename-cjs.mjs","build:esm":"tsc -p tsconfig.esm.json","pack:check":"npm pack --dry-run","build:types":"tsc -p tsconfig.types.json","release:check":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke && npm run pack:check","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke"},"_npmUser":{"name":"janbalangue","email":"jan.a.balangue@gmail.com"},"repository":{"url":"git+https://github.com/janbalangue/async-bulkhead-llm.git","type":"git"},"_npmVersion":"11.16.0","description":"Fail-fast admission control for LLM workloads built on async-bulkhead-ts.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"async-bulkhead-ts":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^4.1.6","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/async-bulkhead-llm_3.4.1_1784398911951_0.25356358668417545","host":"s3://npm-registry-packages-npm-production"}},"3.5.0":{"name":"async-bulkhead-llm","version":"3.5.0","keywords":["llm","concurrency","bulkhead","backpressure","admission-control","rate-limiting","load-shedding","token-budget"],"author":"","license":"Apache-2.0","_id":"async-bulkhead-llm@3.5.0","maintainers":[{"name":"janbalangue","email":"jan.a.balangue@gmail.com"}],"homepage":"https://github.com/janbalangue/async-bulkhead-llm","bugs":{"url":"https://github.com/janbalangue/async-bulkhead-llm/issues"},"dist":{"shasum":"7c0e201d7baa638058420a5e0bc20eae25e01154","tarball":"https://registry.npmjs.org/async-bulkhead-llm/-/async-bulkhead-llm-3.5.0.tgz","fileCount":9,"integrity":"sha512-Bb+z+eRmZBS5xIBawbKS/uJu1ER9KwUkz/ygwZ4u0WRoUYjgH73V3phr4x7Yuai0ReUSAH4DUAdSPEu1231Dzw==","signatures":[{"sig":"MEUCIE5SsRr3742C4G5Gx1LBPKrpQsyKtMM0xatb/tI/Mr9bAiEA/Z2J2buxl0ohauBAAItQLGtQD8g1e+wzxtuhVv0yvI0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188460},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"0c6aee6fcc7fdbffd27fb2ec6061ea7f76c1b0a9","scripts":{"lint":"eslint . --max-warnings=0","test":"vitest","build":"npm run build:esm && npm run build:cjs && npm run build:types","smoke":"node --input-type=module -e \"await import('./dist/esm/index.js')\" && node -e \"require('./dist/cjs/index.cjs')\" && node --input-type=module -e \"import { readFileSync } from 'node:fs'; const js = readFileSync('./dist/cjs/index.cjs', 'utf8'); const map = JSON.parse(readFileSync('./dist/cjs/index.cjs.map', 'utf8')); if (!js.includes('sourceMappingURL=index.cjs.map')) throw new Error('bad CJS sourceMappingURL'); if (map.file !== 'index.cjs') throw new Error('bad CJS sourcemap file');\"","prepack":"npm run build","lint:fix":"eslint . --fix","test:run":"vitest run","build:cjs":"tsc -p tsconfig.cjs.json && node rename-cjs.mjs","build:esm":"tsc -p tsconfig.esm.json","pack:check":"npm pack --dry-run","build:types":"tsc -p tsconfig.types.json","release:check":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke && npm run pack:check","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke"},"_npmUser":{"name":"janbalangue","email":"jan.a.balangue@gmail.com"},"repository":{"url":"git+https://github.com/janbalangue/async-bulkhead-llm.git","type":"git"},"_npmVersion":"11.16.0","description":"Fail-fast admission control for LLM workloads built on async-bulkhead-ts.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"async-bulkhead-ts":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^4.1.6","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/async-bulkhead-llm_3.5.0_1784484454330_0.5795699732013719","host":"s3://npm-registry-packages-npm-production"}},"3.6.0":{"name":"async-bulkhead-llm","version":"3.6.0","keywords":["llm","concurrency","bulkhead","backpressure","admission-control","rate-limiting","load-shedding","token-budget"],"author":"","license":"Apache-2.0","_id":"async-bulkhead-llm@3.6.0","maintainers":[{"name":"janbalangue","email":"jan.a.balangue@gmail.com"}],"homepage":"https://github.com/janbalangue/async-bulkhead-llm","bugs":{"url":"https://github.com/janbalangue/async-bulkhead-llm/issues"},"dist":{"shasum":"825577ea416030f7302380e899533bf566f062a6","tarball":"https://registry.npmjs.org/async-bulkhead-llm/-/async-bulkhead-llm-3.6.0.tgz","fileCount":9,"integrity":"sha512-5M9/FINSwxDC8T8pu71HFJ0LWHBgEukI0xHrAEYsX6sY9XSPN7dcqjtK+yXdj0VeI2aAS1pWoKIddomQltbHMA==","signatures":[{"sig":"MEUCIBdca9Leon86MqnLvKD4oGFLvW7T0CsMbJ+L7jGfpYGoAiEAhjJl0Yb2ohA2TLXaokyNn5ZR9xvEirLnew+2QNLYmAE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":205151},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"cc5086415b3868ea38a0f1cc0b1b52220779c3c3","scripts":{"lint":"eslint . --max-warnings=0","test":"vitest","build":"npm run build:esm && npm run build:cjs && npm run build:types","smoke":"node --input-type=module -e \"await import('./dist/esm/index.js')\" && node -e \"require('./dist/cjs/index.cjs')\" && node --input-type=module -e \"import { readFileSync } from 'node:fs'; const js = readFileSync('./dist/cjs/index.cjs', 'utf8'); const map = JSON.parse(readFileSync('./dist/cjs/index.cjs.map', 'utf8')); if (!js.includes('sourceMappingURL=index.cjs.map')) throw new Error('bad CJS sourceMappingURL'); if (map.file !== 'index.cjs') throw new Error('bad CJS sourcemap file');\"","prepack":"npm run build","lint:fix":"eslint . --fix","test:run":"vitest run","build:cjs":"tsc -p tsconfig.cjs.json && node rename-cjs.mjs","build:esm":"tsc -p tsconfig.esm.json","pack:check":"npm pack --dry-run","build:types":"tsc -p tsconfig.types.json","release:check":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke && npm run pack:check","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke"},"_npmUser":{"name":"janbalangue","email":"jan.a.balangue@gmail.com"},"repository":{"url":"git+https://github.com/janbalangue/async-bulkhead-llm.git","type":"git"},"_npmVersion":"11.16.0","description":"Fail-fast admission control for LLM workloads built on async-bulkhead-ts.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"async-bulkhead-ts":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^4.1.6","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/async-bulkhead-llm_3.6.0_1784491567404_0.20584111435851993","host":"s3://npm-registry-packages-npm-production"}},"3.7.0":{"name":"async-bulkhead-llm","version":"3.7.0","keywords":["llm","concurrency","bulkhead","backpressure","admission-control","rate-limiting","load-shedding","token-budget"],"author":"","license":"Apache-2.0","_id":"async-bulkhead-llm@3.7.0","maintainers":[{"name":"janbalangue","email":"jan.a.balangue@gmail.com"}],"homepage":"https://github.com/janbalangue/async-bulkhead-llm","bugs":{"url":"https://github.com/janbalangue/async-bulkhead-llm/issues"},"dist":{"shasum":"3db7d247464976fdaac992de83be07595e4c2f37","tarball":"https://registry.npmjs.org/async-bulkhead-llm/-/async-bulkhead-llm-3.7.0.tgz","fileCount":9,"integrity":"sha512-gMOaIuiQS8T6PoMotFXVlz/kQsxi+4MQZWqjccBNbEcSqYykgGFQABxrousWc3xmShMy+N501NkKgNfbj+xBKA==","signatures":[{"sig":"MEQCICi0tKgYm90PKBAIiQMrTIyAnZYOip/NEHTtmQQ7GGteAiBslvi4+2DgUt9WF1oxbSf2pL/E4TODfucV6PLlfvoY5A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":221470},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"b28fa6ef202691f7bfc8d5a68e358797966aa48d","scripts":{"lint":"eslint . --max-warnings=0","test":"vitest","build":"npm run build:esm && npm run build:cjs && npm run build:types","smoke":"node --input-type=module -e \"await import('./dist/esm/index.js')\" && node -e \"require('./dist/cjs/index.cjs')\" && node --input-type=module -e \"import { readFileSync } from 'node:fs'; const js = readFileSync('./dist/cjs/index.cjs', 'utf8'); const map = JSON.parse(readFileSync('./dist/cjs/index.cjs.map', 'utf8')); if (!js.includes('sourceMappingURL=index.cjs.map')) throw new Error('bad CJS sourceMappingURL'); if (map.file !== 'index.cjs') throw new Error('bad CJS sourcemap file');\"","prepack":"npm run build","lint:fix":"eslint . --fix","test:run":"vitest run","build:cjs":"tsc -p tsconfig.cjs.json && node rename-cjs.mjs","build:esm":"tsc -p tsconfig.esm.json","pack:check":"npm pack --dry-run","build:types":"tsc -p tsconfig.types.json","release:check":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke && npm run pack:check","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke"},"_npmUser":{"name":"janbalangue","email":"jan.a.balangue@gmail.com"},"repository":{"url":"git+https://github.com/janbalangue/async-bulkhead-llm.git","type":"git"},"_npmVersion":"11.16.0","description":"Fail-fast admission control for LLM workloads built on async-bulkhead-ts.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"async-bulkhead-ts":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^4.1.6","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/async-bulkhead-llm_3.7.0_1784581215046_0.13705667538305333","host":"s3://npm-registry-packages-npm-production"}},"3.8.0":{"name":"async-bulkhead-llm","version":"3.8.0","keywords":["llm","concurrency","bulkhead","backpressure","admission-control","rate-limiting","load-shedding","token-budget"],"author":"","license":"Apache-2.0","_id":"async-bulkhead-llm@3.8.0","maintainers":[{"name":"janbalangue","email":"jan.a.balangue@gmail.com"}],"homepage":"https://github.com/janbalangue/async-bulkhead-llm","bugs":{"url":"https://github.com/janbalangue/async-bulkhead-llm/issues"},"dist":{"shasum":"35afcaf452db220e3c3c2455d8c743146d068691","tarball":"https://registry.npmjs.org/async-bulkhead-llm/-/async-bulkhead-llm-3.8.0.tgz","fileCount":57,"integrity":"sha512-jk1h/N3x62RKxG1Q1nIyasjrzwYV3PxMmryfm+3gEoA6Jk37oYkxmrVZ9IHeos382yELL4QqaWeIBGC/Bp2vAg==","signatures":[{"sig":"MEQCIA853u1mnHaFdOEG/M5L5UvB9n0yNCOVdfW2sd6Fm+RDAiAgxR5DmslSKUmhcRPK3OpuqypT3Gma8280/VywB83Qig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":279647},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"fafc710f64af49fd6cc720c1ee807bf7b4503cdd","scripts":{"lint":"eslint . --max-warnings=0","test":"vitest","build":"npm run build:esm && npm run build:cjs && npm run build:types","smoke":"node --input-type=module -e \"await import('./dist/esm/index.js')\" && node -e \"require('./dist/cjs/index.cjs')\" && node --input-type=module -e \"import { readFileSync } from 'node:fs'; const js = readFileSync('./dist/cjs/index.cjs', 'utf8'); const map = JSON.parse(readFileSync('./dist/cjs/index.cjs.map', 'utf8')); if (!js.includes('sourceMappingURL=index.cjs.map')) throw new Error('bad CJS sourceMappingURL'); if (map.file !== 'index.cjs') throw new Error('bad CJS sourcemap file');\"","prepack":"npm run build","lint:fix":"eslint . --fix","test:run":"vitest run","build:cjs":"tsc -p tsconfig.cjs.json && node rename-cjs.mjs","build:esm":"tsc -p tsconfig.esm.json","pack:check":"npm pack --dry-run","build:types":"tsc -p tsconfig.types.json","release:check":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke && npm run pack:check","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke"},"_npmUser":{"name":"janbalangue","email":"jan.a.balangue@gmail.com"},"repository":{"url":"git+https://github.com/janbalangue/async-bulkhead-llm.git","type":"git"},"_npmVersion":"11.16.0","description":"Fail-fast admission control for LLM workloads built on async-bulkhead-ts.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"async-bulkhead-ts":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^4.1.6","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/async-bulkhead-llm_3.8.0_1784653229109_0.056376151165714816","host":"s3://npm-registry-packages-npm-production"}},"3.9.0":{"name":"async-bulkhead-llm","version":"3.9.0","keywords":["llm","concurrency","bulkhead","backpressure","admission-control","rate-limiting","load-shedding","token-budget"],"author":"","license":"Apache-2.0","_id":"async-bulkhead-llm@3.9.0","maintainers":[{"name":"janbalangue","email":"jan.a.balangue@gmail.com"}],"homepage":"https://github.com/janbalangue/async-bulkhead-llm","bugs":{"url":"https://github.com/janbalangue/async-bulkhead-llm/issues"},"dist":{"shasum":"a11c8443ec50133149c3a51ac6fe43357da4167d","tarball":"https://registry.npmjs.org/async-bulkhead-llm/-/async-bulkhead-llm-3.9.0.tgz","fileCount":57,"integrity":"sha512-lSGQG9fWMQpnAnNNKh7IQORspnXx2kShLFIfDsBHoNtKuD4+Kfy6kOp257KvgPfUjRcE/bUxdhjmqu2oSwl+hg==","signatures":[{"sig":"MEYCIQCczPOXlwQuz464fuukYxEk1z5oZ86WByVSiGOZuiHI+gIhAJZUxDycigkFcjl6UXikt+klSMcIzlYBt4t7Hrs0UWLg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":321402},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"d8b94fa306b4aeeef984d82203887ab7e6c911e8","scripts":{"lint":"eslint . --max-warnings=0","test":"vitest","build":"npm run build:esm && npm run build:cjs && npm run build:types","smoke":"node --input-type=module -e \"await import('./dist/esm/index.js')\" && node -e \"require('./dist/cjs/index.cjs')\" && node --input-type=module -e \"import { readFileSync } from 'node:fs'; const js = readFileSync('./dist/cjs/index.cjs', 'utf8'); const map = JSON.parse(readFileSync('./dist/cjs/index.cjs.map', 'utf8')); if (!js.includes('sourceMappingURL=index.cjs.map')) throw new Error('bad CJS sourceMappingURL'); if (map.file !== 'index.cjs') throw new Error('bad CJS sourcemap file');\"","prepack":"npm run build","lint:fix":"eslint . --fix","test:run":"vitest run","build:cjs":"tsc -p tsconfig.cjs.json && node rename-cjs.mjs","build:esm":"tsc -p tsconfig.esm.json","pack:check":"npm pack --dry-run","build:types":"tsc -p tsconfig.types.json","release:check":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke && npm run pack:check","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke"},"_npmUser":{"name":"janbalangue","email":"jan.a.balangue@gmail.com"},"repository":{"url":"git+https://github.com/janbalangue/async-bulkhead-llm.git","type":"git"},"_npmVersion":"11.16.0","description":"Fail-fast admission control for LLM workloads built on async-bulkhead-ts.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"async-bulkhead-ts":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^4.1.6","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/async-bulkhead-llm_3.9.0_1784749681903_0.4576496080841199","host":"s3://npm-registry-packages-npm-production"}},"3.10.0":{"name":"async-bulkhead-llm","version":"3.10.0","keywords":["llm","concurrency","bulkhead","backpressure","admission-control","rate-limiting","load-shedding","token-budget"],"author":"","license":"Apache-2.0","_id":"async-bulkhead-llm@3.10.0","maintainers":[{"name":"janbalangue","email":"jan.a.balangue@gmail.com"}],"homepage":"https://github.com/janbalangue/async-bulkhead-llm","bugs":{"url":"https://github.com/janbalangue/async-bulkhead-llm/issues"},"dist":{"shasum":"a16cac22f61b4581b20258b0dcedd19c31eb6cac","tarball":"https://registry.npmjs.org/async-bulkhead-llm/-/async-bulkhead-llm-3.10.0.tgz","fileCount":63,"integrity":"sha512-hlPSBt0RWLjPxjN7/Ax0eeRB5M99Q3FhmBfGah4rCEqxIGh9sP5DXg8Izxz6f3zRz6ygZh42NkzNwtr8W1vcTg==","signatures":[{"sig":"MEQCIGskxsOyEm/tDYoIP9HJ4RBErRpqiniNkhHN2e47VOqpAiBPLsh+/5C6/6C/5rPPnOrXwEbt60BW0etYFIqBX0rflg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":375408},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"058f179ccd392efff3e2968000d5d8dc00ec53d7","scripts":{"lint":"eslint . --max-warnings=0","test":"vitest","build":"npm run build:esm && npm run build:cjs && npm run build:types","smoke":"node --input-type=module -e \"await import('./dist/esm/index.js')\" && node -e \"require('./dist/cjs/index.cjs')\" && node --input-type=module -e \"import { readFileSync } from 'node:fs'; const js = readFileSync('./dist/cjs/index.cjs', 'utf8'); const map = JSON.parse(readFileSync('./dist/cjs/index.cjs.map', 'utf8')); if (!js.includes('sourceMappingURL=index.cjs.map')) throw new Error('bad CJS sourceMappingURL'); if (map.file !== 'index.cjs') throw new Error('bad CJS sourcemap file');\"","prepack":"npm run build","lint:fix":"eslint . --fix","test:run":"vitest run","build:cjs":"tsc -p tsconfig.cjs.json && node rename-cjs.mjs","build:esm":"tsc -p tsconfig.esm.json","pack:check":"npm pack --dry-run","build:types":"tsc -p tsconfig.types.json","release:check":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke && npm run pack:check","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke"},"_npmUser":{"name":"janbalangue","email":"jan.a.balangue@gmail.com"},"repository":{"url":"git+https://github.com/janbalangue/async-bulkhead-llm.git","type":"git"},"_npmVersion":"11.16.0","description":"Fail-fast admission control for LLM workloads built on async-bulkhead-ts.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"async-bulkhead-ts":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^4.1.6","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/async-bulkhead-llm_3.10.0_1784849982678_0.6071665636572257","host":"s3://npm-registry-packages-npm-production"}},"3.11.0":{"name":"async-bulkhead-llm","version":"3.11.0","keywords":["llm","concurrency","bulkhead","backpressure","admission-control","rate-limiting","load-shedding","token-budget"],"author":"","license":"Apache-2.0","_id":"async-bulkhead-llm@3.11.0","maintainers":[{"name":"janbalangue","email":"jan.a.balangue@gmail.com"}],"homepage":"https://github.com/janbalangue/async-bulkhead-llm","bugs":{"url":"https://github.com/janbalangue/async-bulkhead-llm/issues"},"dist":{"shasum":"892b5361573ada111fc36aeeb0efe7f6a9afdeee","tarball":"https://registry.npmjs.org/async-bulkhead-llm/-/async-bulkhead-llm-3.11.0.tgz","fileCount":63,"integrity":"sha512-XSkyuvvQPifgyS+7DMTMaQlCH5s3I3B/ysIdhUTR8qdBccXi7O7obeFhSeKeOgtBfQFinHw8BEwin7/2o9i2wA==","signatures":[{"sig":"MEUCIEoBxIlz1lWxQKJPFMY1n1XomYbptQ9Ek3/Oqpame4gmAiEA8BqbacH4ZNKTQffvfek3i1aKZa+ut1IymuFNx3swCso=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":383274},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"9bc529c7c160f1ff37298a861206e9bcdabf442b","scripts":{"lint":"eslint . --max-warnings=0","test":"vitest","build":"npm run build:esm && npm run build:cjs && npm run build:types","smoke":"node --input-type=module -e \"await import('./dist/esm/index.js')\" && node -e \"require('./dist/cjs/index.cjs')\" && node --input-type=module -e \"import { readFileSync } from 'node:fs'; const js = readFileSync('./dist/cjs/index.cjs', 'utf8'); const map = JSON.parse(readFileSync('./dist/cjs/index.cjs.map', 'utf8')); if (!js.includes('sourceMappingURL=index.cjs.map')) throw new Error('bad CJS sourceMappingURL'); if (map.file !== 'index.cjs') throw new Error('bad CJS sourcemap file');\"","prepack":"npm run build","lint:fix":"eslint . --fix","test:run":"vitest run","build:cjs":"tsc -p tsconfig.cjs.json && node rename-cjs.mjs","build:esm":"tsc -p tsconfig.esm.json","pack:check":"npm pack --dry-run","build:types":"tsc -p tsconfig.types.json","release:check":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke && npm run pack:check","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke"},"_npmUser":{"name":"janbalangue","email":"jan.a.balangue@gmail.com"},"deprecated":"Superseded by 3.11.1 due to a tarball integrity mismatch. Please upgrade.","repository":{"url":"git+https://github.com/janbalangue/async-bulkhead-llm.git","type":"git"},"_npmVersion":"11.16.0","description":"Fail-fast admission control for LLM workloads built on async-bulkhead-ts.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"async-bulkhead-ts":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^4.1.6","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/async-bulkhead-llm_3.11.0_1784919587554_0.687956691900429","host":"s3://npm-registry-packages-npm-production"}},"3.11.1":{"name":"async-bulkhead-llm","version":"3.11.1","keywords":["llm","concurrency","bulkhead","backpressure","admission-control","rate-limiting","load-shedding","token-budget"],"author":"","license":"Apache-2.0","_id":"async-bulkhead-llm@3.11.1","maintainers":[{"name":"janbalangue","email":"jan.a.balangue@gmail.com"}],"homepage":"https://github.com/janbalangue/async-bulkhead-llm","bugs":{"url":"https://github.com/janbalangue/async-bulkhead-llm/issues"},"dist":{"shasum":"21886b0b69b5304f2203fd3091b13653c1b6768e","tarball":"https://registry.npmjs.org/async-bulkhead-llm/-/async-bulkhead-llm-3.11.1.tgz","fileCount":63,"integrity":"sha512-hHtpxGBsIyFZu50OLZAi8US245V5Ue2lWvaMtSvKehz5ePcKkLVYVaQjGwQTMju5LRUZv0eUc1z6uqt+nMuxMQ==","signatures":[{"sig":"MEYCIQDkY9Le47EYpAnM5GCrcLp3yTkH4mS563GvYMJdAvOGdgIhANQzCZ3pD5kFqM8BgVAc7VvtLzsVTtFagpZ6dUv8PIdf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":384684},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"4a245c7867b671e16d2e5768cf8b35e957f5f97a","scripts":{"lint":"eslint . --max-warnings=0","test":"vitest","build":"npm run build:esm && npm run build:cjs && npm run build:types","smoke":"node --input-type=module -e \"await import('./dist/esm/index.js')\" && node -e \"require('./dist/cjs/index.cjs')\" && node --input-type=module -e \"import { readFileSync } from 'node:fs'; const js = readFileSync('./dist/cjs/index.cjs', 'utf8'); const map = JSON.parse(readFileSync('./dist/cjs/index.cjs.map', 'utf8')); if (!js.includes('sourceMappingURL=index.cjs.map')) throw new Error('bad CJS sourceMappingURL'); if (map.file !== 'index.cjs') throw new Error('bad CJS sourcemap file');\"","prepack":"npm run build","lint:fix":"eslint . --fix","test:run":"vitest run","build:cjs":"tsc -p tsconfig.cjs.json && node rename-cjs.mjs","build:esm":"tsc -p tsconfig.esm.json","pack:check":"npm pack --dry-run","build:types":"tsc -p tsconfig.types.json","release:check":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke && npm run pack:check","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke"},"_npmUser":{"name":"janbalangue","email":"jan.a.balangue@gmail.com"},"repository":{"url":"git+https://github.com/janbalangue/async-bulkhead-llm.git","type":"git"},"_npmVersion":"11.16.0","description":"Fail-fast admission control for LLM workloads built on async-bulkhead-ts.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"async-bulkhead-ts":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^4.1.6","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/async-bulkhead-llm_3.11.1_1784935051584_0.12780852234864848","host":"s3://npm-registry-packages-npm-production"}},"3.12.0":{"name":"async-bulkhead-llm","version":"3.12.0","keywords":["llm","concurrency","bulkhead","backpressure","admission-control","rate-limiting","load-shedding","token-budget"],"author":"","license":"Apache-2.0","_id":"async-bulkhead-llm@3.12.0","maintainers":[{"name":"janbalangue","email":"jan.a.balangue@gmail.com"}],"homepage":"https://github.com/janbalangue/async-bulkhead-llm","bugs":{"url":"https://github.com/janbalangue/async-bulkhead-llm/issues"},"dist":{"shasum":"d01fcf954f00b59c0f6f3be79a9fe2556f9c4f74","tarball":"https://registry.npmjs.org/async-bulkhead-llm/-/async-bulkhead-llm-3.12.0.tgz","fileCount":63,"integrity":"sha512-EcSupbPno8nbtq1CcsBmDTzaDNlXbLZrC3rOWeyaNya6CgBqXTWQ5+R0+S2Dqv+AOOuLVppGLvzlSNKpfTIBkw==","signatures":[{"sig":"MEUCIHJIUhuNjQxpAWrEh76u3NlOwuALsRxHz8p0HhhoTc0yAiEA4IYELAm0tS/Eruba1qk4UpTsxx9gcUlbo0rK+PKUzcU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":385421},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"b8a6ca82864e2085f54463602a8eba6bf28e954d","scripts":{"lint":"eslint . --max-warnings=0","test":"vitest","build":"npm run build:esm && npm run build:cjs && npm run build:types","smoke":"node --input-type=module -e \"await import('./dist/esm/index.js')\" && node -e \"require('./dist/cjs/index.cjs')\" && node --input-type=module -e \"import { readFileSync } from 'node:fs'; const js = readFileSync('./dist/cjs/index.cjs', 'utf8'); const map = JSON.parse(readFileSync('./dist/cjs/index.cjs.map', 'utf8')); if (!js.includes('sourceMappingURL=index.cjs.map')) throw new Error('bad CJS sourceMappingURL'); if (map.file !== 'index.cjs') throw new Error('bad CJS sourcemap file');\"","prepack":"npm run build","lint:fix":"eslint . --fix","test:run":"vitest run","build:cjs":"tsc -p tsconfig.cjs.json && node rename-cjs.mjs","build:esm":"tsc -p tsconfig.esm.json","pack:check":"npm pack --dry-run","build:types":"tsc -p tsconfig.types.json","release:check":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke && npm run pack:check","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke"},"_npmUser":{"name":"janbalangue","email":"jan.a.balangue@gmail.com"},"repository":{"url":"git+https://github.com/janbalangue/async-bulkhead-llm.git","type":"git"},"_npmVersion":"11.16.0","description":"Fail-fast admission control for LLM workloads built on async-bulkhead-ts.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"async-bulkhead-ts":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^4.1.6","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/async-bulkhead-llm_3.12.0_1785168954142_0.18794010355046886","host":"s3://npm-registry-packages-npm-production"}},"3.13.0":{"name":"async-bulkhead-llm","version":"3.13.0","keywords":["llm","concurrency","bulkhead","backpressure","admission-control","rate-limiting","load-shedding","token-budget"],"author":"","license":"Apache-2.0","_id":"async-bulkhead-llm@3.13.0","maintainers":[{"name":"janbalangue","email":"jan.a.balangue@gmail.com"}],"homepage":"https://github.com/janbalangue/async-bulkhead-llm","bugs":{"url":"https://github.com/janbalangue/async-bulkhead-llm/issues"},"dist":{"shasum":"eb837597ae0dfa9ae3b5dcec1deeeef275b84010","tarball":"https://registry.npmjs.org/async-bulkhead-llm/-/async-bulkhead-llm-3.13.0.tgz","fileCount":63,"integrity":"sha512-uBMfusNOiYWylVUTkYI7F1klPtbfUeXJ/xSMJsM82sdBcVDprMIW2f5NRtqvaGcISV0C7IW3BpLpjUA51EAYBA==","signatures":[{"sig":"MEYCIQDYV9eg2JuUbP6lm2rDlkeCfOUwNlgNlV/sQ8jiL5rz8AIhAP9ZT8G/biB3vdFzSd0C9Bt0pVvJIN3P/d3wk1buPvR5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":395932},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"8ec9aa96587368fa4f7fc0be6f29b4f169d0d477","scripts":{"lint":"eslint . --max-warnings=0","test":"vitest","build":"npm run build:esm && npm run build:cjs && npm run build:types","smoke":"node --input-type=module -e \"await import('./dist/esm/index.js')\" && node -e \"require('./dist/cjs/index.cjs')\" && node --input-type=module -e \"import { readFileSync } from 'node:fs'; const js = readFileSync('./dist/cjs/index.cjs', 'utf8'); const map = JSON.parse(readFileSync('./dist/cjs/index.cjs.map', 'utf8')); if (!js.includes('sourceMappingURL=index.cjs.map')) throw new Error('bad CJS sourceMappingURL'); if (map.file !== 'index.cjs') throw new Error('bad CJS sourcemap file');\"","prepack":"npm run build","lint:fix":"eslint . --fix","test:run":"vitest run","build:cjs":"tsc -p tsconfig.cjs.json && node rename-cjs.mjs","build:esm":"tsc -p tsconfig.esm.json","pack:check":"npm pack --dry-run","build:types":"tsc -p tsconfig.types.json","release:check":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke && npm run pack:check","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke"},"_npmUser":{"name":"janbalangue","email":"jan.a.balangue@gmail.com"},"repository":{"url":"git+https://github.com/janbalangue/async-bulkhead-llm.git","type":"git"},"_npmVersion":"12.0.1","description":"Fail-fast admission control for LLM workloads built on async-bulkhead-ts.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"async-bulkhead-ts":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^4.1.6","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/async-bulkhead-llm_3.13.0_1785630886739_0.6385940844078462","host":"s3://npm-registry-packages-npm-production"}},"3.14.0":{"name":"async-bulkhead-llm","version":"3.14.0","keywords":["llm","concurrency","bulkhead","backpressure","admission-control","rate-limiting","load-shedding","token-budget","tenant-isolation","workload-isolation"],"author":"","license":"Apache-2.0","_id":"async-bulkhead-llm@3.14.0","maintainers":[{"name":"janbalangue","email":"jan.a.balangue@gmail.com"}],"homepage":"https://github.com/janbalangue/async-bulkhead-llm","bugs":{"url":"https://github.com/janbalangue/async-bulkhead-llm/issues"},"dist":{"shasum":"70123b4591157e2329594ab98f132d2cb2f654ae","tarball":"https://registry.npmjs.org/async-bulkhead-llm/-/async-bulkhead-llm-3.14.0.tgz","fileCount":63,"integrity":"sha512-8cqPEcZ13tTQAVLRXbjmkzoczUy67MDNUUfu+eOxTn37UHvVSmx6dsbZyB5yXRkyyREbXJpb+SP4IvPB28epQw==","signatures":[{"sig":"MEQCIA5DhKUhvvTqwOKUQm2J5/e571WvhOVJYHQTbN+dwZ5oAiA/0EFg1wtz452Qo6Wsfr+YmbXUYidpNpS5Kqntnpno8g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":464400},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"c19cac2a3510ffedabd9b019f83f29f1a1efdd38","scripts":{"lint":"eslint . --max-warnings=0","test":"vitest","build":"npm run build:esm && npm run build:cjs && npm run build:types","smoke":"node --input-type=module -e \"await import('./dist/esm/index.js')\" && node -e \"require('./dist/cjs/index.cjs')\" && node --input-type=module -e \"import { readFileSync } from 'node:fs'; const js = readFileSync('./dist/cjs/index.cjs', 'utf8'); const map = JSON.parse(readFileSync('./dist/cjs/index.cjs.map', 'utf8')); if (!js.includes('sourceMappingURL=index.cjs.map')) throw new Error('bad CJS sourceMappingURL'); if (map.file !== 'index.cjs') throw new Error('bad CJS sourcemap file');\"","prepack":"npm run build","lint:fix":"eslint . --fix","test:run":"vitest run","build:cjs":"tsc -p tsconfig.cjs.json && node rename-cjs.mjs","build:esm":"tsc -p tsconfig.esm.json","pack:check":"npm pack --dry-run","build:types":"tsc -p tsconfig.types.json","release:check":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke && npm run pack:check","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke"},"_npmUser":{"name":"janbalangue","email":"jan.a.balangue@gmail.com"},"repository":{"url":"git+https://github.com/janbalangue/async-bulkhead-llm.git","type":"git"},"_npmVersion":"12.0.1","description":"Fail-fast admission control for LLM workloads built on async-bulkhead-ts.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"async-bulkhead-ts":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^4.1.6","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/async-bulkhead-llm_3.14.0_1785874134981_0.11960876253645525","host":"s3://npm-registry-packages-npm-production"}},"3.15.0":{"name":"async-bulkhead-llm","version":"3.15.0","keywords":["llm","concurrency","bulkhead","backpressure","admission-control","rate-limiting","load-shedding","token-budget","tenant-isolation","workload-isolation"],"author":"","license":"Apache-2.0","_id":"async-bulkhead-llm@3.15.0","maintainers":[{"name":"janbalangue","email":"jan.a.balangue@gmail.com"}],"homepage":"https://github.com/janbalangue/async-bulkhead-llm","bugs":{"url":"https://github.com/janbalangue/async-bulkhead-llm/issues"},"dist":{"shasum":"b19747300da70a924dcd633b0e3b36614945797a","tarball":"https://registry.npmjs.org/async-bulkhead-llm/-/async-bulkhead-llm-3.15.0.tgz","fileCount":63,"integrity":"sha512-ezykM8PCEL3E+tYD21F/BvppARvwo49cC06cH22XzJOJ98Pfft1/l+qdR01zU8uYtkyxGTOoXFbvW3nUZL4ehA==","signatures":[{"sig":"MEQCIGHs4hcNtBLGgLRThl66L6RmlQ7C8QkzFYk6KOwH/GLhAiASz9h3fVfjlHVN0AxIkApBb9CwvUp+q3MH8xQRgov+dQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":509979},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"cf833338f9520dcc59cd5ec32d3c46d1ec52bb1b","scripts":{"lint":"eslint . --max-warnings=0","test":"vitest","build":"npm run build:esm && npm run build:cjs && npm run build:types","smoke":"node --input-type=module -e \"await import('./dist/esm/index.js')\" && node -e \"require('./dist/cjs/index.cjs')\" && node --input-type=module -e \"import { readFileSync } from 'node:fs'; const js = readFileSync('./dist/cjs/index.cjs', 'utf8'); const map = JSON.parse(readFileSync('./dist/cjs/index.cjs.map', 'utf8')); if (!js.includes('sourceMappingURL=index.cjs.map')) throw new Error('bad CJS sourceMappingURL'); if (map.file !== 'index.cjs') throw new Error('bad CJS sourcemap file');\"","prepack":"npm run build","lint:fix":"eslint . --fix","test:run":"vitest run","build:cjs":"tsc -p tsconfig.cjs.json && node rename-cjs.mjs","build:esm":"tsc -p tsconfig.esm.json","pack:check":"npm pack --dry-run","build:types":"tsc -p tsconfig.types.json","release:check":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke && npm run pack:check","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke"},"_npmUser":{"name":"janbalangue","email":"jan.a.balangue@gmail.com"},"repository":{"url":"git+https://github.com/janbalangue/async-bulkhead-llm.git","type":"git"},"_npmVersion":"12.0.1","description":"Fail-fast admission control for LLM workloads built on async-bulkhead-ts.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"async-bulkhead-ts":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^4.1.6","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/async-bulkhead-llm_3.15.0_1786050755990_0.21560227017087952","host":"s3://npm-registry-packages-npm-production"}},"3.15.1":{"name":"async-bulkhead-llm","version":"3.15.1","keywords":["llm","concurrency","bulkhead","backpressure","admission-control","rate-limiting","load-shedding","token-budget","tenant-isolation","workload-isolation"],"author":"","license":"Apache-2.0","_id":"async-bulkhead-llm@3.15.1","maintainers":[{"name":"janbalangue","email":"jan.a.balangue@gmail.com"}],"homepage":"https://github.com/janbalangue/async-bulkhead-llm","bugs":{"url":"https://github.com/janbalangue/async-bulkhead-llm/issues"},"dist":{"shasum":"1419e807d4b18370b4207d21df3428ecfcfe596b","tarball":"https://registry.npmjs.org/async-bulkhead-llm/-/async-bulkhead-llm-3.15.1.tgz","fileCount":64,"integrity":"sha512-agLe0bXpcFs3vfsG6d1fWovr9e9eY4XmIVlhrYOoN/lBfPG0wekUrzJ4bOVu6459MF6h4fAwnqYwi4CqbFmRVQ==","signatures":[{"sig":"MEQCIGty13+ZqVZKqccIAUCCMU73sX2nEgTe9VO4Z2t3Qj9qAiAjC4X1lwBvF1w+nfpN3zJisO+suOlDFHdLIRmn5vvdvQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":557080},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"d554842bf09f6d8fdb203a585892b967a6914b5f","scripts":{"lint":"eslint . --max-warnings=0","test":"vitest","build":"npm run build:esm && npm run build:cjs && npm run build:types","smoke":"node --input-type=module -e \"await import('./dist/esm/index.js')\" && node -e \"require('./dist/cjs/index.cjs')\" && node --input-type=module -e \"import { readFileSync } from 'node:fs'; const js = readFileSync('./dist/cjs/index.cjs', 'utf8'); const map = JSON.parse(readFileSync('./dist/cjs/index.cjs.map', 'utf8')); if (!js.includes('sourceMappingURL=index.cjs.map')) throw new Error('bad CJS sourceMappingURL'); if (map.file !== 'index.cjs') throw new Error('bad CJS sourcemap file');\"","prepack":"npm run build","lint:fix":"eslint . --fix","test:run":"vitest run","build:cjs":"tsc -p tsconfig.cjs.json && node rename-cjs.mjs","build:esm":"tsc -p tsconfig.esm.json","pack:check":"npm pack --dry-run","build:types":"tsc -p tsconfig.types.json","release:check":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke && npm run pack:check","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke"},"_npmUser":{"name":"janbalangue","email":"jan.a.balangue@gmail.com"},"repository":{"url":"git+https://github.com/janbalangue/async-bulkhead-llm.git","type":"git"},"_npmVersion":"12.0.1","description":"Fail-fast admission control for LLM workloads built on async-bulkhead-ts.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"async-bulkhead-ts":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^4.1.6","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/async-bulkhead-llm_3.15.1_1786051385029_0.3175340292868032","host":"s3://npm-registry-packages-npm-production"}},"3.15.2":{"name":"async-bulkhead-llm","version":"3.15.2","keywords":["llm","concurrency","bulkhead","backpressure","admission-control","rate-limiting","load-shedding","token-budget","tenant-isolation","workload-isolation"],"author":"","license":"Apache-2.0","_id":"async-bulkhead-llm@3.15.2","maintainers":[{"name":"janbalangue","email":"jan.a.balangue@gmail.com"}],"homepage":"https://github.com/janbalangue/async-bulkhead-llm","bugs":{"url":"https://github.com/janbalangue/async-bulkhead-llm/issues"},"dist":{"shasum":"d8714d3cf408fe9e0dd2eac9367fda6422b16229","tarball":"https://registry.npmjs.org/async-bulkhead-llm/-/async-bulkhead-llm-3.15.2.tgz","fileCount":64,"integrity":"sha512-lI1UpdU79xid2u/2r9EamGx3wcTYrcf0YnXQdDSkMDTmjx6uepuRbbWAZP3Bu8t2NKb2Drrc1kD1W6j50RrDxg==","signatures":[{"sig":"MEYCIQCzGzgS9JOHeFdigXM3elzqeV8miZd5AnRaH4eFve2dIQIhAK3WSnItWCk9icoUk6pPEpmt4DAFBRxZRJL7XfzfN230","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":506290},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"bc9678d4514f040ade5e8b0fcfe51c1f3ace3e5d","scripts":{"docs":"typedoc","lint":"eslint . --max-warnings=0","test":"vitest","build":"npm run build:esm && npm run build:cjs && npm run build:types","smoke":"node --input-type=module -e \"await import('./dist/esm/index.js')\" && node -e \"require('./dist/cjs/index.cjs')\" && node --input-type=module -e \"import { readFileSync } from 'node:fs'; const js = readFileSync('./dist/cjs/index.cjs', 'utf8'); const map = JSON.parse(readFileSync('./dist/cjs/index.cjs.map', 'utf8')); if (!js.includes('sourceMappingURL=index.cjs.map')) throw new Error('bad CJS sourceMappingURL'); if (map.file !== 'index.cjs') throw new Error('bad CJS sourcemap file');\"","prepack":"npm run build","lint:fix":"eslint . --fix","test:run":"vitest run","build:cjs":"tsc -p tsconfig.cjs.json && node rename-cjs.mjs","build:esm":"tsc -p tsconfig.esm.json","docs:watch":"typedoc --watch","pack:check":"npm pack --dry-run","build:types":"tsc -p tsconfig.types.json","docs:coverage":"typedoc --validation.notDocumented","release:check":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke && npm run docs && npm run pack:check","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke"},"_npmUser":{"name":"janbalangue","email":"jan.a.balangue@gmail.com"},"repository":{"url":"git+https://github.com/janbalangue/async-bulkhead-llm.git","type":"git"},"_npmVersion":"12.0.1","description":"Fail-fast admission control for LLM workloads built on async-bulkhead-ts.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"async-bulkhead-ts":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","typedoc":"^0.28.20","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^4.1.6","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/async-bulkhead-llm_3.15.2_1787023788489_0.09653938228655012","host":"s3://npm-registry-packages-npm-production"}},"3.15.3":{"name":"async-bulkhead-llm","version":"3.15.3","keywords":["llm","concurrency","bulkhead","backpressure","admission-control","load-shedding","token-budget","tenant-isolation","workload-isolation"],"author":"","license":"Apache-2.0","_id":"async-bulkhead-llm@3.15.3","maintainers":[{"name":"janbalangue","email":"jan.a.balangue@gmail.com"}],"homepage":"https://github.com/janbalangue/async-bulkhead-llm","bugs":{"url":"https://github.com/janbalangue/async-bulkhead-llm/issues"},"dist":{"shasum":"3ecde116549d000978ecd4aaa4df038555acb5c1","tarball":"https://registry.npmjs.org/async-bulkhead-llm/-/async-bulkhead-llm-3.15.3.tgz","fileCount":64,"integrity":"sha512-lIQku/yL9xy9Yl75pKo2vYub9x5RlOeAhsY+EGjaKuYJn8xkPr7Aga4JCLr4wqkHjEdAHEpxf+kEitO7CT6Scg==","signatures":[{"sig":"MEUCIAmprDT84uXC4umFrvk18KOKwhuAbTze7ZPOov+h1um+AiEAsvjQ+ddasPbDhh7seyEUALEvqbt2yhYNIvI83fm4yQs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":507350},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"c0ea32f83fb39ab9bf27447dd52c79cdf8173ccf","scripts":{"docs":"typedoc","lint":"eslint . --max-warnings=0","test":"vitest","build":"npm run build:esm && npm run build:cjs && npm run build:types","smoke":"node --input-type=module -e \"await import('./dist/esm/index.js')\" && node -e \"require('./dist/cjs/index.cjs')\" && node --input-type=module -e \"import { readFileSync } from 'node:fs'; const js = readFileSync('./dist/cjs/index.cjs', 'utf8'); const map = JSON.parse(readFileSync('./dist/cjs/index.cjs.map', 'utf8')); if (!js.includes('sourceMappingURL=index.cjs.map')) throw new Error('bad CJS sourceMappingURL'); if (map.file !== 'index.cjs') throw new Error('bad CJS sourcemap file');\"","prepack":"npm run build","lint:fix":"eslint . --fix","test:run":"vitest run","build:cjs":"tsc -p tsconfig.cjs.json && node rename-cjs.mjs","build:esm":"tsc -p tsconfig.esm.json","docs:watch":"typedoc --watch","pack:check":"npm pack --dry-run","build:types":"tsc -p tsconfig.types.json","docs:coverage":"typedoc --validation.notDocumented","release:check":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke && npm run docs && npm run pack:check","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke"},"_npmUser":{"name":"janbalangue","email":"jan.a.balangue@gmail.com"},"repository":{"url":"git+https://github.com/janbalangue/async-bulkhead-llm.git","type":"git"},"_npmVersion":"12.0.1","description":"Fail-fast admission control for LLM workloads built on async-bulkhead-ts.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"async-bulkhead-ts":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","typedoc":"^0.28.20","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^4.1.6","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/async-bulkhead-llm_3.15.3_1787094558121_0.9464606648804224","host":"s3://npm-registry-packages-npm-production"}},"3.16.0":{"name":"async-bulkhead-llm","version":"3.16.0","keywords":["llm","concurrency","bulkhead","backpressure","admission-control","load-shedding","token-budget","tenant-isolation","workload-isolation"],"author":"","license":"Apache-2.0","_id":"async-bulkhead-llm@3.16.0","maintainers":[{"name":"janbalangue","email":"jan.a.balangue@gmail.com"}],"homepage":"https://github.com/janbalangue/async-bulkhead-llm","bugs":{"url":"https://github.com/janbalangue/async-bulkhead-llm/issues"},"dist":{"shasum":"45ef786194a08d2808ec3a8169b1d3de2e593422","tarball":"https://registry.npmjs.org/async-bulkhead-llm/-/async-bulkhead-llm-3.16.0.tgz","fileCount":64,"integrity":"sha512-9ZyamC47R4aAo5jFHr6s6V0edTv4aZ8E0ljSsZQ4VI6uQ4tS0fUYftOmeitfVIJ+unccDVgd3biRSb2RBne/XA==","signatures":[{"sig":"MEUCIQDfNAc31dqBu23FNzqSxo/Q15qZpdbKdi6P36hYlWvA0QIgIN5ClTa3IfIggvP2spOfZ+Mgg4VOkgoTaTRRX0zjqIE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":517609},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"39415921d69ef2c3993ec23932ffb43b5b2c0c54","scripts":{"docs":"typedoc","lint":"eslint . --max-warnings=0","test":"vitest","build":"npm run build:esm && npm run build:cjs && npm run build:types","smoke":"node --input-type=module -e \"await import('./dist/esm/index.js')\" && node -e \"require('./dist/cjs/index.cjs')\" && node --input-type=module -e \"import { readFileSync } from 'node:fs'; const js = readFileSync('./dist/cjs/index.cjs', 'utf8'); const map = JSON.parse(readFileSync('./dist/cjs/index.cjs.map', 'utf8')); if (!js.includes('sourceMappingURL=index.cjs.map')) throw new Error('bad CJS sourceMappingURL'); if (map.file !== 'index.cjs') throw new Error('bad CJS sourcemap file');\"","prepack":"npm run build","lint:fix":"eslint . --fix","test:run":"vitest run","build:cjs":"tsc -p tsconfig.cjs.json && node rename-cjs.mjs","build:esm":"tsc -p tsconfig.esm.json","docs:watch":"typedoc --watch","pack:check":"npm pack --dry-run","build:types":"tsc -p tsconfig.types.json","docs:coverage":"typedoc --validation.notDocumented","release:check":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke && npm run docs && npm run pack:check","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke"},"_npmUser":{"name":"janbalangue","email":"jan.a.balangue@gmail.com"},"repository":{"url":"git+https://github.com/janbalangue/async-bulkhead-llm.git","type":"git"},"_npmVersion":"12.0.1","description":"Fail-fast admission control for LLM workloads built on async-bulkhead-ts.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"async-bulkhead-ts":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","typedoc":"^0.28.20","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^4.1.6","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/async-bulkhead-llm_3.16.0_1787682188917_0.04379261014381686","host":"s3://npm-registry-packages-npm-production"}},"3.17.0":{"name":"async-bulkhead-llm","version":"3.17.0","description":"Fail-fast admission control for LLM workloads built on async-bulkhead-ts.","license":"Apache-2.0","author":{"name":"Jan Balangue"},"homepage":"https://github.com/janbalangue/async-bulkhead-llm","repository":{"type":"git","url":"git+https://github.com/janbalangue/async-bulkhead-llm.git"},"bugs":{"url":"https://github.com/janbalangue/async-bulkhead-llm/issues"},"keywords":["llm","concurrency","bulkhead","backpressure","admission-control","load-shedding","token-budget","tenant-isolation","workload-isolation"],"type":"module","main":"./dist/cjs/index.cjs","module":"./dist/esm/index.js","types":"./dist/types/index.d.ts","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.cjs"},"./package.json":"./package.json"},"engines":{"node":">=20"},"scripts":{"build:esm":"tsc -p tsconfig.esm.json","build:cjs":"tsc -p tsconfig.cjs.json && node rename-cjs.mjs","build:types":"tsc -p tsconfig.types.json","build":"npm run build:esm && npm run build:cjs && npm run build:types","docs":"typedoc","docs:watch":"typedoc --watch","docs:coverage":"typedoc --validation.notDocumented","prepack":"npm run build","lint":"eslint . --max-warnings=0","lint:fix":"eslint . --fix","test":"vitest","prepublishOnly":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke","test:run":"vitest run","test:coverage":"vitest run --coverage","smoke":"node --input-type=module -e \"await import('./dist/esm/index.js')\" && node -e \"require('./dist/cjs/index.cjs')\" && node --input-type=module -e \"import { readFileSync } from 'node:fs'; const js = readFileSync('./dist/cjs/index.cjs', 'utf8'); const map = JSON.parse(readFileSync('./dist/cjs/index.cjs.map', 'utf8')); if (!js.includes('sourceMappingURL=index.cjs.map')) throw new Error('bad CJS sourceMappingURL'); if (map.file !== 'index.cjs') throw new Error('bad CJS sourcemap file');\"","pack:check":"npm pack --dry-run","release:check":"npm run lint && npm run build && npm run test:run && npm run test:coverage && npm run smoke && npm run docs && npm run pack:check"},"dependencies":{"async-bulkhead-ts":"^1.0.1"},"devDependencies":{"@eslint/js":"^10.0.1","@types/node":"^25.3.0","@vitest/coverage-v8":"^4.1.6","eslint":"^10.0.2","eslint-config-prettier":"^10.1.8","typedoc":"^0.28.20","typescript":"^5.9.3","typescript-eslint":"^8.56.1","vitest":"^4.0.18"},"gitHead":"2cbe3a6853bd50e1eaaa5ab38cf1444ccccaa06e","_id":"async-bulkhead-llm@3.17.0","_nodeVersion":"24.18.0","_npmVersion":"12.0.1","dist":{"integrity":"sha512-OymBy5WV+mAA55aKinCD4NhGLL3rQZRLn3P5L2ijss/mnYRS2uJuGO5FvyPBLd3P73dIQ+k4eQkasmPfLgsUmw==","shasum":"66f28d05727e4baa2501d5b03f177d33ec33d253","tarball":"https://registry.npmjs.org/async-bulkhead-llm/-/async-bulkhead-llm-3.17.0.tgz","fileCount":64,"unpackedSize":553468,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBseohlPfNFbKeyRC+rg67yLpd1nubgO2KTzLoGu6mL/AiBSuXTkZOlt60zHK/nT39vj8YttQ4ev4xH1SBWK6kH8Zg=="}]},"_npmUser":{"name":"janbalangue","email":"jan.a.balangue@gmail.com"},"directories":{},"maintainers":[{"name":"janbalangue","email":"jan.a.balangue@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/async-bulkhead-llm_3.17.0_1788460417190_0.40413358288516443"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-25T02:57:43.465Z","modified":"2026-09-03T18:33:37.518Z","1.0.0":"2026-02-25T02:57:43.734Z","1.0.1":"2026-02-26T23:10:43.898Z","1.0.2":"2026-02-26T23:30:06.874Z","1.0.3":"2026-02-26T23:53:57.842Z","2.0.0":"2026-03-03T21:44:58.877Z","3.0.0":"2026-04-15T23:59:12.067Z","3.1.0":"2026-04-26T17:34:05.515Z","3.1.1":"2026-05-06T18:20:12.364Z","3.1.2":"2026-05-11T20:22:07.504Z","3.2.0":"2026-07-15T02:43:08.816Z","3.3.0":"2026-07-17T15:36:37.757Z","3.3.1":"2026-07-17T15:48:27.615Z","3.4.0":"2026-07-18T17:32:08.074Z","3.4.1":"2026-07-18T18:21:52.090Z","3.5.0":"2026-07-19T18:07:34.449Z","3.6.0":"2026-07-19T20:06:07.540Z","3.7.0":"2026-07-20T21:00:15.189Z","3.8.0":"2026-07-21T17:00:29.271Z","3.9.0":"2026-07-22T19:48:02.044Z","3.10.0":"2026-07-23T23:39:42.825Z","3.11.0":"2026-07-24T18:59:47.688Z","3.11.1":"2026-07-24T23:17:31.728Z","3.12.0":"2026-07-27T16:15:54.319Z","3.13.0":"2026-08-02T00:34:46.896Z","3.14.0":"2026-08-04T20:08:55.148Z","3.15.0":"2026-08-06T21:12:36.136Z","3.15.1":"2026-08-06T21:23:05.170Z","3.15.2":"2026-08-18T03:29:48.626Z","3.15.3":"2026-08-18T23:09:18.294Z","3.16.0":"2026-08-25T18:23:09.088Z","3.17.0":"2026-09-03T18:33:37.367Z"},"bugs":{"url":"https://github.com/janbalangue/async-bulkhead-llm/issues"},"license":"Apache-2.0","homepage":"https://github.com/janbalangue/async-bulkhead-llm","keywords":["llm","concurrency","bulkhead","backpressure","admission-control","load-shedding","token-budget","tenant-isolation","workload-isolation"],"repository":{"type":"git","url":"git+https://github.com/janbalangue/async-bulkhead-llm.git"},"description":"Fail-fast admission control for LLM workloads built on async-bulkhead-ts.","maintainers":[{"name":"janbalangue","email":"jan.a.balangue@gmail.com"}],"readme":"# async-bulkhead-llm\n\n**Decide whether an LLM call should run — before it runs.**\n\n[![npm](https://img.shields.io/npm/v/async-bulkhead-llm.svg)](https://www.npmjs.com/package/async-bulkhead-llm)\n[![CI](https://github.com/janbalangue/async-bulkhead-llm/actions/workflows/ci.yml/badge.svg)](https://github.com/janbalangue/async-bulkhead-llm/actions/workflows/ci.yml)\n[![license](https://img.shields.io/npm/l/async-bulkhead-llm.svg)](https://github.com/janbalangue/async-bulkhead-llm/blob/main/LICENSE)\n\n📖 **[Full documentation →](https://janbalangue.github.io/async-bulkhead-llm/)**\n\n---\n\n## What it does\n\nYou wrap your LLM calls in a bulkhead. Before each call runs, the bulkhead\ndecides whether it *should* run — based on how many calls are already in\nflight and how many tokens are already committed. If the answer is no, you get\na fast, typed rejection instead of a request that piles onto an already\nsaturated provider.\n\nThat's it. It's one decision, made in-process, in microseconds, before any\nbytes leave your service.\n\n```ts\nawait bulkhead.run(request, () => callYourProvider(request));\n//     ^ throws LLMBulkheadRejectedError instead of making things worse\n```\n\n## Should you use it?\n\n**Probably yes if:** you call an LLM provider from a service that takes\nconcurrent traffic, and you've either already watched a burst turn into a 429\nstorm or a saturation cascade — or you'd rather not.\n\n**Probably not if:** you're building a CLI, a notebook, or anything where one\nrequest happens at a time. There's nothing to protect.\n\n**Not a replacement for:** LangChain (orchestration), your provider SDK (the\nactual calls), or a retry library (what happens after a failure). This sits\nunderneath all of them and answers a different question. See\n[How it compares](guides/comparison.md).\n\n## Install\n\n```bash\nnpm install async-bulkhead-llm\n```\n\nNode.js 20+. ESM and CommonJS. TypeScript types included. One dependency\n([`async-bulkhead-ts`](https://github.com/janbalangue/async-bulkhead-ts)).\n\n## Quick start\n\n```ts\nimport { createLLMBulkhead, LLMBulkheadRejectedError } from 'async-bulkhead-llm';\n\nconst bulkhead = createLLMBulkhead({\n  model:         'claude-sonnet-4',\n  maxConcurrent: 10,\n});\n\nconst request = {\n  messages:   [{ role: 'user', content: 'Summarise this document...' }],\n  max_tokens: 1024,\n};\n\ntry {\n  const result = await bulkhead.run(request, async () => {\n    return callYourLLMProvider(request);\n  });\n} catch (err) {\n  if (err instanceof LLMBulkheadRejectedError) {\n    // Shed on purpose. err.reason tells you which limit was hit.\n    return respond503(err.reason);\n  }\n  throw err;\n}\n```\n\nTen calls run at once. The eleventh is rejected immediately with\n`reason: 'concurrency_limit'` — it does not wait, and it does not reach your\nprovider. That is the whole idea: **fail fast beats fail slow.**\n\nIf you'd rather queue than shed, add `maxQueue: 20`. If you want queued\ncallers to give up after a while, add `timeoutMs: 5_000`. Both are off by\ndefault, deliberately.\n\n## Limit tokens, not just requests\n\n`maxConcurrent` counts requests. It cannot tell a 500-token request from a\n100,000-token one — ten of each look identical to it. `tokenBudget` adds the\nsecond dimension:\n\n```ts\nconst bulkhead = createLLMBulkhead({\n  model:         'claude-sonnet-4',\n  maxConcurrent: 10,\n  tokenBudget:   { budget: 200_000 },\n});\n```\n\nEach request now also reserves `estimated input + max_tokens` before it runs.\nWhen the budget is committed, further requests are rejected with\n`budget_limit`.\n\n**This is an in-flight ceiling, not a spend cap.** The budget limits how many\ntokens may be reserved *at the same time*; every reservation is returned when\nits request completes. A 200,000-token budget does not mean you will spend\n200,000 tokens — it means no more than that much work is ever committed at\nonce. It is a load-shedding control, not a billing control.\n\nReservations are estimates, so give the budget back when you know the truth:\n\n```ts\nawait bulkhead.run(request, () => callLLM(request), {\n  getUsage: (response) => ({\n    input:  response.usage.input_tokens,\n    output: response.usage.output_tokens,\n  }),\n});\n```\n\nThe unused portion returns to the in-flight budget immediately. Most calls use\nfar fewer output tokens than `max_tokens`, so this frees real admission\ncapacity.\n\n→ [Token budget and estimation](guides/token-budget.md)\n\n## Handling rejections\n\nEvery rejection is typed and carries a capacity snapshot, so you can return\nsomething useful instead of a generic 500:\n\n```ts\nconst r = await bulkhead.acquire(request);\n\nif (!r.ok) {\n  // r.reason: 'concurrency_limit' | 'queue_limit' | 'budget_limit'\n  //         | 'timeout' | 'aborted' | 'shutdown'\n  // r.detail: slots, queue depth, priority-adjusted budget numbers\n  return respond429(r.reason, r.detail);\n}\n```\n\nNo `Retry-After` is fabricated — a fail-fast bulkhead has no honest ETA. If\nyou need one, your gateway knows more than the bulkhead does.\n\n## Watching it work\n\n```ts\nconst s = bulkhead.stats();\ns.bulkhead.inFlight;              // slots in use\ns.llm.rejectedByReason;           // why you're shedding\ns.tokenBudget?.available;         // budget headroom\n\nbulkhead.on('reject', ({ reason, detail }) => metrics.increment(reason));\n```\n\n`admit` and admission-decision `reject` events also expose optional\n`decisionDurationNs` and `queueWaitNs` fields. Decision time excludes the\nunderlying concurrency wait, so local admission cost and queue contention stay\nseparate.\n\nAdmissions also expose exact resource attribution through `resources`.\nFor class policies that lend shared concurrency, `run()` can enforce a\nwall-clock lease on the borrowed local slot:\n\n```ts\nawait bulkhead.run(request, callProvider, {\n  admissionClass: 'background',\n  borrowedConcurrencyDeadlineMs: 30_000,\n});\n```\n\nExpiry returns that local concurrency slot, aborts the callback signal, and\nrejects with `LLMBorrowedConcurrencyDeadlineError`. It deliberately retains\nthe token hold until the callback settles. This is a local restoration bound,\nnot proof that a provider account, accelerator queue, or remote generation was\nreclaimed. Keep an unlent floor or a real provider-side partition for upstream\ncapacity that client cancellation cannot authoritatively release.\n\n→ [Stats and events](guides/telemetry.md)\n\n## Shutting down cleanly\n\n```ts\n// In your SIGTERM handler:\nbulkhead.close();                             // stop admitting\nawait bulkhead.drain({ timeoutMs: 10_000 });  // wait, but not forever\n```\n\n`drain()` with a deadline always resolves and reports what remains outstanding;\nit does not abandon or release that work. One stuck upstream stream therefore\ncannot hold the shutdown decision open indefinitely.\n\nWithout `timeoutMs`, `drain()` waits for final token settlement as well as base\nconcurrency. In particular, returning a borrowed slot with\n`abandonBorrowedConcurrency()` does not complete the admission: a manual\n`acquire()` caller must still call `release()`, or the unbounded drain remains\npending. This preserves the distinction between restoring a local slot and\nsettling the resource accounting for the work behind it.\n\n---\n\n## Documentation\n\n| Guide | What's in it |\n|---|---|\n| [How admission works](guides/concepts.md) | The decision path, `run()` vs `acquire()`, profiles, cancellation, shutdown |\n| [Token budget and estimation](guides/token-budget.md) | Reservations, refunds, estimators, adaptive calibration, priority reserve |\n| [Streaming and reconciliation](guides/streaming.md) | `reportUsage()`, progressive holds, ordered usage events |\n| [Admission classes](guides/admission-classes.md) | Per-class floors and ceilings, shared capacity, borrowing |\n| [Runtime limits and reconfiguration](guides/runtime-limits.md) | `applyLimits()`, revisions, fail-closed startup, kill switch |\n| [Observe mode](guides/observe-mode.md) | Measure a policy before you enforce it |\n| [Deduplication](guides/deduplication.md) | In-flight dedup, tenant scoping, streaming results |\n| [Gateway integration](guides/gateway-integration.md) | `wouldAdmit()`, admission IDs, external leases, control planes |\n| [Stats and events](guides/telemetry.md) | Every counter and every event payload |\n| [How it compares](guides/comparison.md) | Against LangChain, p-limit, cockatiel, and raw SDKs |\n| [Migration](guides/migration.md) | Upgrade notes for every release since v2 |\n\nThe **[full API reference](https://janbalangue.github.io/async-bulkhead-llm/)**\nis generated from the source types on every push to `main`, so it is never out\nof date with the code. Release-by-release detail lives in the\n[changelog](./CHANGELOG.md).\n\n## What it deliberately doesn't do\n\n- **No retries.** Compose a retry library *around* the bulkhead, not inside it.\n- **No provider SDK.** Bring your own client.\n- **No distributed coordination.** Bulkheads are per-process. Partition the\n  budget per replica, or coordinate above this layer.\n- **No cost accounting or spend caps.** Token estimation is for load-shedding,\n  not billing. Nothing here tracks cumulative spend or stops you reaching a\n  dollar figure.\n\nEach of those is a deliberate boundary, not a missing feature. A bulkhead that\nalso retried would defeat its own purpose.\n\n## Compatibility\n\n- **Node.js:** 20+\n- **Module formats:** ESM and CommonJS\n- **Types:** shipped, generated from source\n- **Public API:** only the package entry point. Deep imports into `src/`\n  internals are not supported.\n\n## Contributing and security\n\nIssues and pull requests are welcome at\n[github.com/janbalangue/async-bulkhead-llm](https://github.com/janbalangue/async-bulkhead-llm/issues).\nFor security reports, see the\n[security policy](https://github.com/janbalangue/async-bulkhead-llm/security/policy).\n\n## License\n\nApache License 2.0 © 2026\n","readmeFilename":"README.md","author":{"name":"Jan Balangue"}}