{"_id":"@absolutejs/runtime","_rev":"12-6467c9cdcc191719050bc620a044f40d","name":"@absolutejs/runtime","dist-tags":{"latest":"0.7.1"},"versions":{"0.0.1":{"name":"@absolutejs/runtime","version":"0.0.1","keywords":["absolutejs","bun","paas","multi-tenant","runtime","hibernation","process-pool"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/runtime@0.0.1","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"ba9b66e61ba8ad90b49b9a3a4ead48c1d1236422","tarball":"https://registry.npmjs.org/@absolutejs/runtime/-/runtime-0.0.1.tgz","fileCount":6,"integrity":"sha512-YXulF0CbgDxRSg1nTzXwmTwWjURqp47k7zPDZ0npzZtLAJHw9eDLeKLi0wJz/koBo5F8gHxgBGvWtrbR2pkreg==","signatures":[{"sig":"MEYCIQC4SYfrdu3vLyzPe6P6PU9kK5AN3AZmH5MpJr2Hh9XKswIhAIBA6n1fE/nz9p28U2sp7uOOxlUaeYlP1fmrbuoEvx8l","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48042},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"ba9b66e61ba8ad90b49b9a3a4ead48c1d1236422","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts --outdir dist --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-YXulF0CbgDxRSg1nTzXwmTwWjURqp47k7zPDZ0npzZtLAJHw9eDLeKLi0wJz/koBo5F8gHxgBGvWtrbR2pkreg==","repository":{"url":"git+https://github.com/absolutejs/runtime.git","type":"git"},"_npmVersion":"10.8.3","description":"Multi-tenant Bun runtime substrate for PaaS providers — spawn isolated child Bun processes per tenant, idle-kill, metric emit. The library SB-6 surfaces between isolated-jsc + sync and the hosted product downstream.","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3"},"peerDependencies":{"bun-types":">= 1.3.0"},"_npmOperationalInternal":{"tmp":"tmp/runtime_0.0.1_1780071357954_0.08378222756459741","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@absolutejs/runtime","version":"0.1.0","keywords":["absolutejs","bun","paas","multi-tenant","runtime","hibernation","process-pool"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/runtime@0.1.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"56fd60b7b0133bffc604cbb35160405be68b90ff","tarball":"https://registry.npmjs.org/@absolutejs/runtime/-/runtime-0.1.0.tgz","fileCount":6,"integrity":"sha512-0fePa0KoB+aRQPEfPoqseus27c+pZ2yOi/SZmnUzqwynI/6vzcn2NN2NqZgrHQtTStENtO4gB7FPrv/h1eD11A==","signatures":[{"sig":"MEYCIQD26OJ7Rn1b1m41vzuAxc6mg6kzd5YgJdNaY9AD8ZkIfQIhAMwHmb4F8jBibEkfPCLWwjHVREeHveIcAj2uYNZyihXQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70555},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"56fd60b7b0133bffc604cbb35160405be68b90ff","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts --outdir dist --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-0fePa0KoB+aRQPEfPoqseus27c+pZ2yOi/SZmnUzqwynI/6vzcn2NN2NqZgrHQtTStENtO4gB7FPrv/h1eD11A==","repository":{"url":"git+https://github.com/absolutejs/runtime.git","type":"git"},"_npmVersion":"10.8.3","description":"Multi-tenant Bun runtime substrate for PaaS providers — spawn isolated child Bun processes per tenant, idle-kill, metric emit. The library SB-6 surfaces between isolated-jsc + sync and the hosted product downstream.","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3"},"peerDependencies":{"bun-types":">= 1.3.0"},"_npmOperationalInternal":{"tmp":"tmp/runtime_0.1.0_1780084853657_0.9388715034080315","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@absolutejs/runtime","version":"0.2.0","keywords":["absolutejs","bun","paas","multi-tenant","runtime","hibernation","process-pool"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/runtime@0.2.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"01bb6f8b1500d3cace063951d29d8b2bbeab9cfa","tarball":"https://registry.npmjs.org/@absolutejs/runtime/-/runtime-0.2.0.tgz","fileCount":6,"integrity":"sha512-gIxMk6o5U4C4rAjATT60KEpC8UcQlfC4rz1MCcWRH0jQ7QSwc+zcGRaooOiOkzxIBMp2synBYlyw+6+YKAgWkA==","signatures":[{"sig":"MEUCIFNdzHMbEoUoJ6wH3mUa2ppNSC+gthznIhh6HMef3EmlAiEAjz9HrTJGL5/yi/6ElV7s6efOYChte7ZQiYUXj33aUTM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76028},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"01bb6f8b1500d3cace063951d29d8b2bbeab9cfa","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts --outdir dist --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-gIxMk6o5U4C4rAjATT60KEpC8UcQlfC4rz1MCcWRH0jQ7QSwc+zcGRaooOiOkzxIBMp2synBYlyw+6+YKAgWkA==","repository":{"url":"git+https://github.com/absolutejs/runtime.git","type":"git"},"_npmVersion":"10.8.3","description":"Multi-tenant Bun runtime substrate for PaaS providers — spawn isolated child Bun processes per tenant, idle-kill, metric emit. The library SB-6 surfaces between isolated-jsc + sync and the hosted product downstream.","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3"},"peerDependencies":{"bun-types":">= 1.3.0"},"_npmOperationalInternal":{"tmp":"tmp/runtime_0.2.0_1780110278125_0.5297239166187837","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@absolutejs/runtime","version":"0.3.0","keywords":["absolutejs","bun","paas","multi-tenant","runtime","hibernation","process-pool"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/runtime@0.3.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"73edf77e01c0d8df5313d613448b5868b8b62cd8","tarball":"https://registry.npmjs.org/@absolutejs/runtime/-/runtime-0.3.0.tgz","fileCount":6,"integrity":"sha512-McE1bKjc1mC16g+GEZCTninNy3zMkyWxzROafyNg7Qp98a32NOEFab9WbI9DpqaHN7NfQbcjxwVlFPOhh7CirA==","signatures":[{"sig":"MEUCIQCcbSsKDHtRA8yBBJKoigQjxZeTWZ56wfffWMU57TEq1QIgF007+wQlkb0g6olXmCeM+djAeYOg1MooQ9ikCWUFa3Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87598},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"73edf77e01c0d8df5313d613448b5868b8b62cd8","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts --outdir dist --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-McE1bKjc1mC16g+GEZCTninNy3zMkyWxzROafyNg7Qp98a32NOEFab9WbI9DpqaHN7NfQbcjxwVlFPOhh7CirA==","repository":{"url":"git+https://github.com/absolutejs/runtime.git","type":"git"},"_npmVersion":"10.8.3","description":"Multi-tenant Bun runtime substrate for PaaS providers — spawn isolated child Bun processes per tenant, idle-kill, metric emit. The library SB-6 surfaces between isolated-jsc + sync and the hosted product downstream.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@absolutejs/telemetry":"^0.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/telemetry":"^0.0.2"},"peerDependencies":{"bun-types":">= 1.3.0"},"_npmOperationalInternal":{"tmp":"tmp/runtime_0.3.0_1780168539512_0.41959116769130955","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@absolutejs/runtime","version":"0.4.0","keywords":["absolutejs","bun","paas","multi-tenant","runtime","hibernation","process-pool"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/runtime@0.4.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/runtime","bugs":{"url":"https://github.com/absolutejs/runtime/issues"},"dist":{"shasum":"22ab41da799c0f84c869ed7bcb29ababce032d51","tarball":"https://registry.npmjs.org/@absolutejs/runtime/-/runtime-0.4.0.tgz","fileCount":6,"integrity":"sha512-bEZyGNwDp+v7V8Bu+So4y/q57ifs9YsXOMAGqjSwxhQLL7dd10f8Y8r0lu/XWEM+CiGOVlvHEw/qIBhxnunoqw==","signatures":[{"sig":"MEUCIFk3XgDpy9ALqS7ocXE+84UXBmZbTUIdg1pRnxCVvdCcAiEA8VrkKMSf6+af8bceuLoxhtV5u0ppQUk5y7wtarN7liU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":159738},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"22ab41da799c0f84c869ed7bcb29ababce032d51","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts --outdir dist --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-bEZyGNwDp+v7V8Bu+So4y/q57ifs9YsXOMAGqjSwxhQLL7dd10f8Y8r0lu/XWEM+CiGOVlvHEw/qIBhxnunoqw==","repository":{"url":"git+https://github.com/absolutejs/runtime.git","type":"git"},"_npmVersion":"10.8.3","description":"Multi-tenant Bun runtime substrate for PaaS providers — spawn isolated child Bun processes per tenant, idle-kill, metric emit. The library SB-6 surfaces between isolated-jsc + sync and the hosted product downstream.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@absolutejs/telemetry":"^0.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/telemetry":"^0.0.2"},"peerDependencies":{"bun-types":">= 1.3.0"},"_npmOperationalInternal":{"tmp":"tmp/runtime_0.4.0_1783975937286_0.3459676746123035","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@absolutejs/runtime","version":"0.4.1","keywords":["absolutejs","bun","paas","multi-tenant","runtime","hibernation","process-pool"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/runtime@0.4.1","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/runtime","bugs":{"url":"https://github.com/absolutejs/runtime/issues"},"dist":{"shasum":"cac7757d5cefdb752e57cf2e51f170b042314032","tarball":"https://registry.npmjs.org/@absolutejs/runtime/-/runtime-0.4.1.tgz","fileCount":6,"integrity":"sha512-M+BgiTqqXkBtdmErKQtY1UccK0pg6hrXG9qZnWEZaAGC//gVqDEH+Xw+egQ2buUWK0E3luRHE1NweXQFe+C1dA==","signatures":[{"sig":"MEUCIQCuj86fk7YhQcus5h527K3ngj57WjRELrxrK72twQiQUwIgMNYwySlnpjy5Qebdh1OmmdY4oQX2U4dQnj6INRgqtp0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":162900},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"cac7757d5cefdb752e57cf2e51f170b042314032","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts --outdir dist --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-M+BgiTqqXkBtdmErKQtY1UccK0pg6hrXG9qZnWEZaAGC//gVqDEH+Xw+egQ2buUWK0E3luRHE1NweXQFe+C1dA==","repository":{"url":"git+https://github.com/absolutejs/runtime.git","type":"git"},"_npmVersion":"10.8.3","description":"Multi-tenant Bun runtime substrate for PaaS providers — spawn isolated child Bun processes per tenant, idle-kill, metric emit. The library SB-6 surfaces between isolated-jsc + sync and the hosted product downstream.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@absolutejs/telemetry":"^0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3"},"peerDependencies":{"bun-types":">= 1.3.0"},"_npmOperationalInternal":{"tmp":"tmp/runtime_0.4.1_1784013284837_0.2581791602427175","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@absolutejs/runtime","version":"0.5.0","keywords":["absolutejs","bun","paas","multi-tenant","runtime","hibernation","process-pool"],"author":{"name":"Alex Kahn"},"license":"BSL-1.1","_id":"@absolutejs/runtime@0.5.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/runtime","bugs":{"url":"https://github.com/absolutejs/runtime/issues"},"dist":{"shasum":"4e8cc04e6eadd05873450e0f72adf93535d5ff16","tarball":"https://registry.npmjs.org/@absolutejs/runtime/-/runtime-0.5.0.tgz","fileCount":6,"integrity":"sha512-u46p9W33mPEDF2eyb9/5JuC2P9BAD6bwIqmIx06FyA6JSDG819OzUJ+Jrtmx6ekfxclGy7/erDPZ/SwxNLAsjg==","signatures":[{"sig":"MEUCIGCTr7Tgn5o8/DILsBVcS5gOH6J9nQ5SPUvHVlqnlO2sAiEAykiViZHzzXpSXKRczCL1vDEiFrnHK35LaXSqvUkITtA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":172261},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"3d8565f9080a5c2f5f7b0e0a08a7d64c4b6547ad","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts --outdir dist --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"repository":{"url":"git+https://github.com/absolutejs/runtime.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-tenant Bun runtime substrate for PaaS providers — spawn isolated child Bun processes per tenant, idle-kill, metric emit. The library SB-6 surfaces between isolated-jsc + sync and the hosted product downstream.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@absolutejs/telemetry":"^0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3"},"peerDependencies":{"bun-types":">= 1.3.0"},"_npmOperationalInternal":{"tmp":"tmp/runtime_0.5.0_1784057086998_0.0932820638659968","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@absolutejs/runtime","version":"0.6.0","keywords":["absolutejs","bun","paas","multi-tenant","runtime","hibernation","process-pool"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/runtime@0.6.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/runtime","bugs":{"url":"https://github.com/absolutejs/runtime/issues"},"dist":{"shasum":"f67cdb13ba66965295e1570989ba8212ede89697","tarball":"https://registry.npmjs.org/@absolutejs/runtime/-/runtime-0.6.0.tgz","fileCount":6,"integrity":"sha512-EqViiEB2nmIwhuu/AN+w6BzOS9kUHEkicPTIKoAMSdJ4KxMHHLLPKVGSyeVRrF+EUS/iOx4A4jDpifepJI9zZw==","signatures":[{"sig":"MEUCIElhdmVcE7tIIZEo5dSGFlotLv/KzKB+Vcl9rmtZxnpJAiEA9neKxjtz0sjyjM5ysoBojB8r+hhtG2Urd39un4a3dqk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":173682},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"f67cdb13ba66965295e1570989ba8212ede89697","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts --outdir dist --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-EqViiEB2nmIwhuu/AN+w6BzOS9kUHEkicPTIKoAMSdJ4KxMHHLLPKVGSyeVRrF+EUS/iOx4A4jDpifepJI9zZw==","repository":{"url":"git+https://github.com/absolutejs/runtime.git","type":"git"},"_npmVersion":"10.8.3","description":"Multi-tenant Bun runtime substrate for PaaS providers — spawn isolated child Bun processes per tenant, idle-kill, metric emit. The library SB-6 surfaces between isolated-jsc + sync and the hosted product downstream.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@absolutejs/telemetry":"^0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3"},"peerDependencies":{"bun-types":">= 1.3.0"},"_npmOperationalInternal":{"tmp":"tmp/runtime_0.6.0_1784091593137_0.8504089758926878","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@absolutejs/runtime","version":"0.6.1","keywords":["absolutejs","bun","paas","multi-tenant","runtime","hibernation","process-pool"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/runtime@0.6.1","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/runtime","bugs":{"url":"https://github.com/absolutejs/runtime/issues"},"dist":{"shasum":"68ad9221b16aa6ab5074b9374b790b9688fc4d19","tarball":"https://registry.npmjs.org/@absolutejs/runtime/-/runtime-0.6.1.tgz","fileCount":6,"integrity":"sha512-WcK6Z1T54NXLdN9Ggo+6OR7WxcWdYq778llKSqWsZ4+SXluFo27N4htGnZ/Zmq3z1dholuCrOP31jE8n4GtnoA==","signatures":[{"sig":"MEUCIQCY8klC3wpxDnHJJB6++DWwuzrXAwhgS1ndo79DKQn2eQIgH2JigIFLdkBv1IoYj7hCcGN/Q3Abd9eJs+SKnaQKj/8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":176146},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"68ad9221b16aa6ab5074b9374b790b9688fc4d19","engines":{"bun":">=1.3.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts --outdir dist --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-WcK6Z1T54NXLdN9Ggo+6OR7WxcWdYq778llKSqWsZ4+SXluFo27N4htGnZ/Zmq3z1dholuCrOP31jE8n4GtnoA==","repository":{"url":"git+https://github.com/absolutejs/runtime.git","type":"git"},"_npmVersion":"10.8.3","description":"Multi-tenant Bun runtime substrate for PaaS providers — spawn isolated child Bun processes per tenant, idle-kill, metric emit. The library SB-6 surfaces between isolated-jsc + sync and the hosted product downstream.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@absolutejs/telemetry":"^0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/runtime_0.6.1_1784958305836_0.4864018740322271","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@absolutejs/runtime","version":"0.6.2","keywords":["absolutejs","bun","paas","multi-tenant","runtime","hibernation","process-pool"],"author":{"name":"Alex Kahn"},"license":"BSL-1.1","_id":"@absolutejs/runtime@0.6.2","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/runtime","bugs":{"url":"https://github.com/absolutejs/runtime/issues"},"dist":{"shasum":"6cf3aae3b40df12e964d449f20c1881e01007188","tarball":"https://registry.npmjs.org/@absolutejs/runtime/-/runtime-0.6.2.tgz","fileCount":6,"integrity":"sha512-jdlNXSi0sKKvX488iBAbl+ojTXVV6w88RJEDUzB8xR5ZJyQwJSCDNHr7z4UUd0bKI/+eWNxNHb55T5BItuoQpg==","signatures":[{"sig":"MEQCIATO0yvCyNwufzFqNWzDRT2RJ4IKbEai6GLAhrdO83FoAiAuu9s0TQ1BbiMeWS77/eJsg56STvTvGb/HZUve2vBNLQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":186361},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.3.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts --outdir dist --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"repository":{"url":"git+https://github.com/absolutejs/runtime.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-tenant Bun runtime substrate for PaaS providers — spawn isolated child Bun processes per tenant, idle-kill, metric emit. The library SB-6 surfaces between isolated-jsc + sync and the hosted product downstream.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@absolutejs/telemetry":"^0.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/runtime_0.6.2_1786078120750_0.8549246497970959","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@absolutejs/runtime","version":"0.7.0","keywords":["absolutejs","bun","paas","multi-tenant","runtime","hibernation","process-pool"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/runtime@0.7.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/runtime","bugs":{"url":"https://github.com/absolutejs/runtime/issues"},"dist":{"shasum":"2f0e9b5d1f9b519de14cad177deebe4bd3fb0a5e","tarball":"https://registry.npmjs.org/@absolutejs/runtime/-/runtime-0.7.0.tgz","fileCount":8,"integrity":"sha512-BqOktlcmr4uGESiCicsqCKFIEDq1HWTAakMax1w+VKzUkF89WtcsJMeZ4PI3zBW3rVM3Cmj3S73Xa2IuHYfyCg==","signatures":[{"sig":"MEQCIBTUNNmUQ5W5go5JcZehze5cOvOG/4h6pJJy8pU+XACYAiA/rJcaWbOHmnd5VBjAJzKfrcwzUmmQESC4TX/FRcyUVg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCID+6edgGb3iuhJZDA7aic46WOsmlNcAHU+NUQnolNfkqAiB4sMCYKOTQjz/8ZKMFnN7IJ1ddwXYxZxUSZamGjPYwGA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":192934},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"2f0e9b5d1f9b519de14cad177deebe4bd3fb0a5e","engines":{"bun":">=1.3.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts --outdir dist --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test && absolute-changelog check","prepublishOnly":"bun run check:package"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-BqOktlcmr4uGESiCicsqCKFIEDq1HWTAakMax1w+VKzUkF89WtcsJMeZ4PI3zBW3rVM3Cmj3S73Xa2IuHYfyCg==","repository":{"url":"git+https://github.com/absolutejs/runtime.git","type":"git"},"_npmVersion":"10.8.3","description":"Multi-tenant Bun runtime substrate for PaaS providers — spawn isolated child Bun processes per tenant, idle-kill, metric emit. The library SB-6 surfaces between isolated-jsc + sync and the hosted product downstream.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"@absolutejs/telemetry":"^0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.9.3","@absolutejs/changelog":"^0.6.0"},"_npmOperationalInternal":{"tmp":"tmp/runtime_0.7.0_1789163061506_0.3101987620837594","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"_id":"@absolutejs/runtime@0.7.1","bugs":{"url":"https://github.com/absolutejs/runtime/issues"},"dist":{"shasum":"01485083424604d03de0cca51592536eb575ff5f","tarball":"https://registry.npmjs.org/@absolutejs/runtime/-/runtime-0.7.1.tgz","fileCount":8,"integrity":"sha512-AagWsYLi3F+lRcnfOSxUDYItD5YqaZepoPbayXw0GEqPLVVY/breThg7rK3pT2hxKzG8ygBsznsjFr/f3+ziDA==","signatures":[{"sig":"MEQCIHcJVtdYgACkejv/50lCjktCLxptHB2/W7pimPyQ0PuBAiAuPxUQkBotFocHO1DMxB9I+/LD0JrXDGeBe/GlzjK2cg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIG11eextKBOKu265kwrQcejLnTLH0nWtSi+fgBgTZtfgAiBEEdMoJ6Wrfdv1ucirhVdG43JDVWl8jtKqbiwwBNiimQ=="}],"unpackedSize":211149},"main":"./dist/index.js","name":"@absolutejs/runtime","type":"module","types":"./dist/index.d.ts","author":"Alex Kahn","module":"./dist/index.js","shasum":"01485083424604d03de0cca51592536eb575ff5f","engines":{"bun":">=1.3.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"license":"BSL-1.1","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts --outdir dist --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test && absolute-changelog check","prepublishOnly":"bun run check:package"},"version":"0.7.1","_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"homepage":"https://github.com/absolutejs/runtime","keywords":["absolutejs","bun","paas","multi-tenant","runtime","hibernation","process-pool"],"_integrity":"sha512-AagWsYLi3F+lRcnfOSxUDYItD5YqaZepoPbayXw0GEqPLVVY/breThg7rK3pT2hxKzG8ygBsznsjFr/f3+ziDA==","repository":{"url":"git+https://github.com/absolutejs/runtime.git","type":"git"},"_npmVersion":"10.8.3","description":"Multi-tenant Bun runtime substrate for PaaS providers — spawn isolated child Bun processes per tenant, idle-kill, metric emit. The library SB-6 surfaces between isolated-jsc + sync and the hosted product downstream.","directories":{},"maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"_nodeVersion":"26.3.0","dependencies":{"@absolutejs/telemetry":"^0.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.9.3","@absolutejs/changelog":"^0.6.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/runtime_0.7.1_1789165176727_0.7294991931612811"}}},"time":{"created":"2026-05-29T16:15:57.598Z","modified":"2026-09-11T22:19:37.088Z","0.0.1":"2026-05-29T16:15:58.123Z","0.1.0":"2026-05-29T20:00:53.826Z","0.2.0":"2026-05-30T03:04:38.297Z","0.3.0":"2026-05-30T19:15:39.678Z","0.4.0":"2026-07-13T20:52:17.464Z","0.4.1":"2026-07-14T07:14:44.976Z","0.5.0":"2026-07-14T19:24:47.134Z","0.6.0":"2026-07-15T04:59:53.286Z","0.6.1":"2026-07-25T05:45:05.974Z","0.6.2":"2026-08-07T04:48:40.882Z","0.7.0":"2026-09-11T21:44:21.594Z","0.7.1":"2026-09-11T22:19:36.897Z"},"bugs":{"url":"https://github.com/absolutejs/runtime/issues"},"author":"Alex Kahn","license":"BSL-1.1","homepage":"https://github.com/absolutejs/runtime","keywords":["absolutejs","bun","paas","multi-tenant","runtime","hibernation","process-pool"],"repository":{"url":"git+https://github.com/absolutejs/runtime.git","type":"git"},"description":"Multi-tenant Bun runtime substrate for PaaS providers — spawn isolated child Bun processes per tenant, idle-kill, metric emit. The library SB-6 surfaces between isolated-jsc + sync and the hosted product downstream.","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"readme":"# @absolutejs/runtime\n\nMulti-tenant Bun runtime substrate. Wraps `Bun.spawn` so that \"run this tenant's `bun run start` inside an idle-killing, metric-emitting child process\" is one function call.\n\nBuilt for PaaS providers and platform layers that want to host many small Bun apps under one host process. The library SB-6 surfaces between `@absolutejs/isolated-jsc` + `@absolutejs/sync` and the hosted product downstream.\n\n```ts\nimport { createRuntime } from \"@absolutejs/runtime\";\n\nconst runtime = createRuntime({\n  source: { kind: \"directory\", root: \"/srv/tenants\" },\n  idleAfterMs: 5 * 60 * 1000,\n  maxConcurrent: 100,\n  onMetrics: (event) => prometheus.observe(event),\n  onLog: (event) => loki.write(event),\n});\n\n// First call: spawns `bun run start` in /srv/tenants/tenant-42,\n// injects PORT, waits for readiness, returns the bound port.\nconst tenant = await runtime.ensure(\"tenant-42\");\nawait fetch(`http://127.0.0.1:${tenant.port}/`);\n\n// Subsequent calls reuse the running process.\nruntime.touch(\"tenant-42\"); // bump idle clock\n\nruntime.stats(); // { running, total }\nawait runtime.dispose();\n```\n\n## Surface (0.1.0)\n\n| API                         | Purpose                                                                                                                                                                  |\n| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `createRuntime(options)`    | Factory. Returns a `Runtime`.                                                                                                                                            |\n| `runtime.ensure(key)`       | Spawn-or-reuse. Single-flight on concurrent calls to the same key. Throws fast if `key` is in a back-off window. Returns `{ key, port, pid, startedAt, lastTouchedAt }`. |\n| `runtime.touch(key)`        | Bump the idle clock for an active tenant. Cheap; call before/after each request.                                                                                         |\n| `runtime.stats()`           | `{ running, total, draining, backoff }` snapshot.                                                                                                                        |\n| `runtime.kill(key)`         | Force-kill. No-op if not running.                                                                                                                                        |\n| `runtime.restart(key)`      | Kill + spawn fresh in one call. For deploys that swap to a new release.                                                                                                  |\n| `runtime.clearBackoff(key)` | Forget consecutive-failure state.                                                                                                                                        |\n| `runtime.drain()`           | Refuse new `ensure()` spawns; existing tenants keep running. For graceful shard shutdown.                                                                                |\n| `runtime.dispose()`         | Kill all + stop the sweeper. Idempotent.                                                                                                                                 |\n\n### Back-off on spawn failures\n\nA spawn that fails (spawn fn threw, or readiness timed out) records a per-key `{ attempt, retryAt, lastError }` and the next `ensure(key)` throws fast until `retryAt`. After `maxFailures` (default 10) consecutive failures, the key stays refused until `clearBackoff(key)`. Defaults: `baseMs=1000`, `maxMs=60_000`, `maxFailures=10`. Override via the `backoff` option. Without this, one broken tenant thrashes the host with rapid spawn retries.\n\n### Observation (Linux-only)\n\nWhen `observeIntervalMs > 0` (default `30_000`), the sweeper periodically reads `/proc/<pid>/stat` (utime + stime) and `/proc/<pid>/status` (VmRSS) per running tenant and emits `{ type: 'observation', key, pid, cpuMs, rssBytes, at }` via `onMetrics`. This is the per-tenant data `@absolutejs/metering` consumes to attribute idle hibernation cost. Silently skips on non-Linux.\n\n### Hibernation strategy\n\n**Idle-kill at the process layer**, plus the JSC-context hibernation any tenant gets for free via `@absolutejs/isolated-jsc`'s `createHibernatingIsolatePool`. Bun has no process-level snapshot/resume primitive shipped or tracked in an open issue as of 2026-05-29; when one lands we'll add an opt-in `hibernate: 'process-snapshot'` mode and keep idle-kill as the default.\n\nThe trade-off the default makes explicit: first call after idle pays a full Bun cold spawn (~50–200ms). That's worth it for the free-tier multi-tenant economics; if the wake latency matters for your workload, set `idleAfterMs: 0` and rely on `maxConcurrent`'s LRU eviction instead.\n\n### Observability hooks\n\n`onLog`, `onMetrics`, and `onTransition` are pluggable. `onLog` receives newline-split stdout/stderr from every child; `onMetrics` fires on spawn (`{ type: 'spawn', durationMs }`) and periodically with observations on Linux (`{ type: 'observation', cpuMs, rssBytes }`); `onTransition` fires on every state change: `spawn`, `ready`, `idle-kill`, `lru-evict`, `exit` (with a structured `reason`), `backoff`, `drain`.\n\n### Exit reasons\n\nThe `exit` transition's `reason` field is one of: `crashed`, `exited-clean`, `idle-killed`, `lru-evicted`, `killed`, `readiness-timeout`, `disposed`, `restarted`. The meter / control plane uses this to decide whether to charge, retry, or alert.\n\n### Pluggable spawn + readiness\n\n`spawn` and `readiness` are overrides on `createRuntime`. The default `spawn` runs `['bun', 'run', 'start']` with `PORT` injected; the default `readiness` polls `http://127.0.0.1:${port}/` every 100ms with a 30s deadline. Tests use the spawn override to bypass disk; production use is mostly the defaults.\n\n`spawn` returns the minimal `RuntimeProcess` contract (`pid`, `exited`, and a\nsync-or-async `kill`). Bun's `Subprocess` satisfies it directly. Container\nadapters can return the host pid plus `resourceId` (for example, a Docker\ncontainer id) and `port` when the adapter must bind inside a fixed firewall\nrange. The reported port becomes the readiness and tenant port while retaining\nthe same idle-kill, LRU, restart, drain, metrics, and backoff behavior.\n\nUse `runtime.adopt(key, process)` during boot reconciliation when a managed\nprocess survived a control-plane restart. For externally routed traffic,\n`shouldIdleKill` can perform a final activity check before eviction instead of\nrequiring every request to pass through `runtime.touch()`.\n\n### Checkpoint/restore seam (0.4.0) — ⚠️ EXPERIMENTAL\n\nBun has no `process.checkpoint()`, so the first request after an idle-kill pays a full cold spawn. The `checkpoint` option is a **seam**: the control plane can pilot [criu](https://criu.org) (or any snapshot mechanism) without forking the runtime.\n\n```ts\nimport { createRuntime, execCheckpointDriver } from \"@absolutejs/runtime\";\n\nconst runtime = createRuntime({\n  source: { kind: \"directory\", root: \"/srv/tenants\" },\n  checkpoint: {\n    driver: execCheckpointDriver({\n      checkpointCommand: [\n        \"criu\",\n        \"dump\",\n        \"--tree\",\n        \"{pid}\",\n        \"--images-dir\",\n        \"{dir}\",\n        \"--shell-job\",\n        \"--tcp-established\",\n      ],\n      restoreCommand: [\"restore-and-print-pid.sh\", \"{dir}\"], // must print RESTORED_PID=<n>\n      imageDir: \"/var/lib/tenants/images\",\n    }),\n    restoreTimeoutMs: 10_000,\n  },\n});\n```\n\nBehavior:\n\n- **Only the idle path checkpoints.** When the sweeper finds an idle tenant and a driver is configured, it calls `driver.checkpoint({ key, pid })` first. `true` means \"image written AND process gone\" (criu dump's default) — the exit is recorded with the new reason `checkpointed` instead of `idle-killed`. `false`/throw declines, and the normal idle-kill proceeds. Explicit `kill()`, `dispose()`, and LRU eviction never checkpoint.\n- **`ensure()` restores when it can.** If `driver.has(key)` is true, `driver.restore({ key })` runs before any cold spawn. On success the tenant is tracked as an **external pid** — no `Subprocess` handle, liveness polled on the sweep interval, kills via `process.kill(pid)`, `/proc`-based observation events unchanged — and a `{ type: 'restored', key, pid, port, durationMs }` transition fires. On `null`/throw/timeout the runtime calls `driver.drop(key)` and cold-spawns.\n- After a successful restore the image is dropped (best-effort) — resuming the same image twice would fork the tenant's state. `restart(key)` also drops any image (a restart means new code).\n- The tenant's `port` on restore is remembered from checkpoint time (a criu restore resumes the original socket). The mapping is in-memory — if the host process restarted in between, the restored tenant reports `port: 0`.\n- `stats()`/`metrics()` gain a `checkpoints` block: `{ checkpoints, restores, restoreFailures, lastRestoreMs }` cumulative counters.\n\n**Why experimental**: criu needs root (or `CAP_CHECKPOINT_RESTORE`) + a kernel with `CONFIG_CHECKPOINT_RESTORE`, and restoring processes with open TCP sockets has real sharp edges. The `@absolutejs/isolated-jsc` \"small tier\" (`createHibernatingIsolatePool`) remains the recommended hibernation path today. This surface exists so process-level hibernation can be piloted per-shard behind a flag — expect the driver contract to evolve.\n\n### Egress guard (0.4.0)\n\nOne runaway tenant can DoS outbound bandwidth or poison a shared third-party rate limit. `createEgressGuard` is a host-side guarded-`fetch` factory: hand each tenant `guard.fetchFor(tenant)` instead of the raw `fetch`.\n\n```ts\nimport { createEgressGuard, EgressDeniedError } from \"@absolutejs/runtime\";\n\nconst guard = createEgressGuard({\n  budgets: { requests: 100, bytes: 25 * 1024 * 1024, windowMs: 60_000 },\n  onDeny: (info) =>\n    audit.append({\n      kind: \"egress.denied\",\n      tenant: info.tenant,\n      url: info.url.href,\n      reason: info.reason,\n    }),\n});\n\nconst guardedFetch = guard.fetchFor(\"tenant-42\");\nawait guardedFetch(\"https://api.stripe.com/v1/charges\"); // ok\nawait guardedFetch(\"http://169.254.169.254/latest/meta-data/\"); // throws EgressDeniedError { reason: 'not-allowed' }\n\nguard.metrics(); // { tenants, requests, denied: { 'not-allowed', 'requests-budget', 'bytes-budget' }, bytesEgress }\nguard.reset(\"tenant-42\"); // re-open the tenant's budget window\n```\n\nPairing with `@absolutejs/sync`'s sandboxed handlers — route the sandbox's outbound escape hatch through the guard so every tenant mutation shares one policy:\n\n```ts\nconst guardedFetch = guard.fetchFor(tenantKey);\n\ndefineMutation({\n  name: \"enrich:lookup\",\n  sandboxedHandler: `async (args, ctx, actions, unsafeHost) =>\n    unsafeHost.fetchJson(args.url)`,\n  sandbox: {\n    unsafeHost: {\n      fetchJson: async (url: string) => (await guardedFetch(url)).json(),\n    },\n  },\n});\n```\n\n(The same shape works for `bridgeFetch`-style host-side fetches: wherever the host performs network I/O on a tenant's behalf, use the tenant's guarded fetch.)\n\nDetails:\n\n- **Default allowlist** denies private/loopback/link-local/metadata address space — `10/8`, `172.16/12`, `192.168/16`, `127/8`, `169.254/16`, `0.0.0.0`, `::`, `::1`, `fc00::/7`, `fe80::/10`, IPv4-mapped IPv6 equivalents — plus the bare hostnames `localhost`, `*.localhost`, `*.internal`. Everything else is allowed. Override with `allow: (tenant, url) => boolean` (it replaces the default entirely). **Caveat**: the default check is hostname-based and does not resolve DNS — a public name pointing at a private address (DNS rebinding) passes; use a resolving `allow` hook if that's in your threat model.\n- **Budgets** are per-tenant rolling windows (timestamps pruned on each check). Requests count on start; a request that would push past `requests`, or that starts while window bytes already ≥ `bytes`, throws `EgressDeniedError` with `reason: 'requests-budget'` / `'bytes-budget'`.\n- **Byte accounting covers declared and streamed responses.** A valid\n  `Content-Length` is counted immediately. Without it, the returned body is\n  wrapped in a zero-buffer transform and chunks are counted as the caller\n  consumes them. The bytes budget applies to the next request once the rolling\n  total reaches its cap; it does not truncate a response already in flight.\n- `tracerProvider` (same pattern as `createRuntime`) wraps each call in a `runtime.egress_fetch` span with `abs.tenant`, `abs.egress.host`, `abs.egress.allowed`, and `abs.egress.deny_reason` attributes.\n\n## Architectural role\n\n- **`@absolutejs/isolated-jsc`** — heap-isolated _JS contexts_. One library down: the unit the runtime hibernates is a child process, not a JSC context.\n- **`@absolutejs/sync`** — reactive engine. Independent of the runtime; consumed inside tenant processes when the tenant uses it.\n- **`@absolutejs/runtime`** — _this library_. The process-pool layer.\n- **`@absolutejs/metering`** (planned) — consumes the runtime's metrics + handlerMetrics from sync into a cost-attribution → billing-events pipeline.\n- **`@absolutejs/router`** (planned) — multi-tenant routing in front of one or more runtime instances.\n\n## License\n\nBSL 1.1 with a named carveout for the hosted multi-tenant Bun runtime / PaaS substrate category (Convex, Liveblocks, Vercel, Render, Fly, Cloudflare Workers). See [LICENSE](./LICENSE). Change Date: 4 years from first release; Change License: Apache 2.0.\n","readmeFilename":"README.md"}