{"_id":"@bookingcare/infra","_rev":"5-377d3755c4322448ebf18f6339eb376f","name":"@bookingcare/infra","dist-tags":{"latest":"0.5.2"},"versions":{"0.4.0":{"name":"@bookingcare/infra","version":"0.4.0","license":"MIT","_id":"@bookingcare/infra@0.4.0","maintainers":[{"name":"nampham1106","email":"nampham11062002@gmail.com"}],"dist":{"shasum":"99af59a6e32f7b7169fede2fdddad39438360f78","tarball":"https://registry.npmjs.org/@bookingcare/infra/-/infra-0.4.0.tgz","fileCount":42,"integrity":"sha512-3Ytcs5b8FRblTkCSob3XeVwwAm46A1mteREvRWUPCPt5Zm3B/spQPN8VXvpucVItx0fYQLjvZ3U349BlQwUq7w==","signatures":[{"sig":"MEQCIBttdW1+JY4EMmR5sI358TURSgVxhe7QU/ZFctcaVjORAiBw1kIZSK+75ySQpxXeOLGnf7sy+mSS6Xfa0vYqWIdSLA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51315},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./persistence":{"types":"./dist/persistence/index.d.ts","default":"./dist/persistence/index.js"}},"gitHead":"bec368663b0eb9c5de989cf8053b35d9271cbea4","scripts":{"dev":"tsc -p tsconfig.build.json --watch","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","type-check":"tsc --noEmit"},"_npmUser":{"name":"nampham1106","email":"nampham11062002@gmail.com"},"_npmVersion":"10.9.7","description":"Sandbox execution and persistence for process-isolated agent tools with resource limits","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@bookingcare/ai":"^0.4.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.5","typescript":"^5.8.0","@types/node":"^25.6.2","@bookingcare/tsconfig":"^0.4.0"},"_npmOperationalInternal":{"tmp":"tmp/infra_0.4.0_1779089411236_0.48405857880120373","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@bookingcare/infra","version":"0.4.1","license":"MIT","_id":"@bookingcare/infra@0.4.1","maintainers":[{"name":"nampham1106","email":"nampham11062002@gmail.com"}],"dist":{"shasum":"81122da15fd6ba8ac273ee548bb9f368997fce14","tarball":"https://registry.npmjs.org/@bookingcare/infra/-/infra-0.4.1.tgz","fileCount":42,"integrity":"sha512-02Tyqi0GCA1YkjhS5/hmhbt916DwqUzwtCiZVCUfxe12paJBLdkCWV+UpIbDLXQkmlFaONrEfdkeEs74mqXvoQ==","signatures":[{"sig":"MEUCIQCO9H1JfXjVYcKo4RkfrMsOgAC6AWsRwnoc9ao9CQnaGwIgf3Mdd0wrgtl/SJbYAgKDWQifqT6V2gMQq1WnVlL2qPM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51315},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./persistence":{"types":"./dist/persistence/index.d.ts","default":"./dist/persistence/index.js"}},"gitHead":"2801a0f6c25f83ab7e2f395fb7961d230da65948","scripts":{"dev":"tsc -p tsconfig.build.json --watch","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","type-check":"tsc --noEmit"},"_npmUser":{"name":"nampham1106","email":"nampham11062002@gmail.com"},"_npmVersion":"10.9.7","description":"Sandbox execution and persistence for process-isolated agent tools with resource limits","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@bookingcare/ai":"^0.4.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.5","typescript":"^5.8.0","@types/node":"^25.6.2","@bookingcare/tsconfig":"^0.4.1"},"_npmOperationalInternal":{"tmp":"tmp/infra_0.4.1_1779101838956_0.7564893048200791","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@bookingcare/infra","version":"0.5.0","license":"MIT","_id":"@bookingcare/infra@0.5.0","maintainers":[{"name":"nampham1106","email":"nampham11062002@gmail.com"}],"dist":{"shasum":"9d416c348d324c5d2a37c8d4be2406221c6cfc9a","tarball":"https://registry.npmjs.org/@bookingcare/infra/-/infra-0.5.0.tgz","fileCount":58,"integrity":"sha512-hjxO/+uDeUytA1u290tgxOF4rowFIb9rKfkeqXL3Ke/w1iIqUdrRukckKQN1w5VusZLnP7RuS6mLT9g/a+fhhw==","signatures":[{"sig":"MEYCIQDJ+E2QZpHBdAis2H2atTJ8ky52ni4JG65CNttL6kYpiAIhALXQYqoZZFN8H/ycQPA6pKuzd9Y6zrodUDC0TFKaJznE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91475},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./persistence":{"types":"./dist/persistence/index.d.ts","default":"./dist/persistence/index.js"}},"gitHead":"e835c6d211bffee87278c12b69e12cd67b71d9e5","scripts":{"dev":"tsc -p tsconfig.build.json --watch","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","type-check":"tsc --noEmit"},"_npmUser":{"name":"nampham1106","email":"nampham11062002@gmail.com"},"_npmVersion":"10.9.7","description":"Sandbox execution and persistence for process-isolated agent tools with resource limits","directories":{},"_nodeVersion":"22.22.2","dependencies":{"mysql2":"^3.22.3","@bookingcare/ai":"^0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.5","typescript":"^5.8.0","@types/node":"^25.6.2","@bookingcare/tsconfig":"^0.5.0"},"_npmOperationalInternal":{"tmp":"tmp/infra_0.5.0_1780549370396_0.958410375328365","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@bookingcare/infra","version":"0.5.1","license":"MIT","_id":"@bookingcare/infra@0.5.1","maintainers":[{"name":"nampham1106","email":"nampham11062002@gmail.com"}],"dist":{"shasum":"c7efb7dec896a628933298952e025ee9c10eea57","tarball":"https://registry.npmjs.org/@bookingcare/infra/-/infra-0.5.1.tgz","fileCount":58,"integrity":"sha512-Yr9Evsc2DmF+0bwvi0vEbglDciOMQ3ygBYG1Tkyv5sXpoJcjotyYKJs0XmlhEDiE2LVvJ/k0YRJtwpCsnJZ3sg==","signatures":[{"sig":"MEYCIQCUcGWbYxuJwbkGSED4mVgt7h2BdhFZyxtQc1Tr10mGBwIhAJZ5YyWaBlIs0vMiLcaj5/FhjbDy9YJ9W9NavEd8RVzM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91475},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./persistence":{"types":"./dist/persistence/index.d.ts","default":"./dist/persistence/index.js"}},"gitHead":"a1f48034cf8bd8b097d1eeb9d04ebf55882a5f61","scripts":{"dev":"tsc -p tsconfig.build.json --watch","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","type-check":"tsc --noEmit"},"_npmUser":{"name":"nampham1106","email":"nampham11062002@gmail.com"},"_npmVersion":"10.9.7","description":"Sandbox execution and persistence for process-isolated agent tools with resource limits","directories":{},"_nodeVersion":"22.22.2","dependencies":{"mysql2":"^3.22.3","@bookingcare/ai":"^0.5.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.5","typescript":"^5.8.0","@types/node":"^25.6.2","@bookingcare/tsconfig":"^0.5.1"},"_npmOperationalInternal":{"tmp":"tmp/infra_0.5.1_1781576855593_0.2532764743818421","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@bookingcare/infra","version":"0.5.2","description":"Sandbox execution and persistence for process-isolated agent tools with resource limits","license":"MIT","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./persistence":{"types":"./dist/persistence/index.d.ts","default":"./dist/persistence/index.js"}},"scripts":{"build":"tsc -p tsconfig.build.json","dev":"tsc -p tsconfig.build.json --watch","clean":"rm -rf dist *.tsbuildinfo","type-check":"tsc --noEmit"},"devDependencies":{"@bookingcare/tsconfig":"^0.5.2","@types/node":"^25.6.2","typescript":"^5.8.0","vitest":"^4.1.5"},"dependencies":{"@bookingcare/ai":"^0.5.2","mysql2":"^3.22.3"},"_id":"@bookingcare/infra@0.5.2","gitHead":"f25fe7a5cb6290c989bbc3d12a0fe2dda849c131","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-MotmGEyDFOpo3jvVRByy5035QPM5umsdGvS6Q+YdFAaYdDn0boGaJ+/EYGtP+m1Lk0XBTyWVZTWzGMdzKKQzcQ==","shasum":"a5762a56eb2b481c99567b59d78e7ca1c6886b8e","tarball":"https://registry.npmjs.org/@bookingcare/infra/-/infra-0.5.2.tgz","fileCount":58,"unpackedSize":91475,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC+vIjqZgoW//XWf+UicOue1SDjKoo3Vl+VGe4SsviGOAIhAJfChwFpwojdq9NUWTk3mGrUXEhqZJBqTzKnDHKeBj8J"}]},"_npmUser":{"name":"nampham1106","email":"nampham11062002@gmail.com"},"directories":{},"maintainers":[{"name":"nampham1106","email":"nampham11062002@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/infra_0.5.2_1783160121412_0.7077295839235653"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-18T07:30:11.127Z","modified":"2026-07-04T10:15:21.668Z","0.4.0":"2026-05-18T07:30:11.386Z","0.4.1":"2026-05-18T10:57:19.102Z","0.5.0":"2026-06-04T05:02:50.524Z","0.5.1":"2026-06-16T02:27:35.738Z","0.5.2":"2026-07-04T10:15:21.549Z"},"license":"MIT","description":"Sandbox execution and persistence for process-isolated agent tools with resource limits","maintainers":[{"name":"nampham1106","email":"nampham11062002@gmail.com"}],"readme":"# @bookingcare/infra\n\nSandbox execution for process-isolated agent tools with resource limits.\n\n## Installation\n\n```bash\npnpm add @bookingcare/infra\n```\n\n## Usage\n\n```typescript\nimport { createSandbox } from \"@bookingcare/infra\";\n\nconst sandbox = createSandbox({\n  kind: \"local\",\n  workdir: \"/workspace\",\n  timeout: 30_000,\n  maxOutput: 1024 * 1024,\n  env: {\n    PATH: \"/usr/local/bin:/usr/bin:/bin\",\n  },\n});\n\nconst result = await sandbox.exec(\"echo hello\");\n```\n\nSandboxed processes do not inherit the parent environment. Pass a safe `PATH` (and on Windows, `SystemRoot`/`ComSpec`) in `env` when commands need external binaries.\n\n`Sandbox` also exposes `readFile()`, `writeFile()`, and `editFile()` for workspace-scoped file operations.\n\n## Persistence\n\n`@bookingcare/infra` exports persistence helpers from the root package and the `./persistence` subpath.\n\n```typescript\nimport { createStore } from \"@bookingcare/infra\";\n\nconst jsonStore = await createStore({\n  type: \"json\",\n  baseDir: \"./data\",\n});\n\nconst mysqlStore = await createStore({\n  type: \"mysql\",\n  options: {\n    host: \"127.0.0.1\",\n    user: \"agents\",\n    password: process.env.MYSQL_PASSWORD,\n    database: \"agents\",\n  },\n});\n\n// Call close() when shutting down.\nawait mysqlStore.close();\n\nconst metrics = await mysqlStore.getMetrics();\n```\n\n`getMetrics()` returns operation counts, latency, and storage totals for the current store snapshot.\n","readmeFilename":"README.md"}