{"_id":"@axiom-lattice/opensandbox-gateway","_rev":"14-913b54f21ae2a1ada6cbeab64e54e523","name":"@axiom-lattice/opensandbox-gateway","dist-tags":{"latest":"0.2.10"},"versions":{"0.1.2":{"name":"@axiom-lattice/opensandbox-gateway","version":"0.1.2","_id":"@axiom-lattice/opensandbox-gateway@0.1.2","maintainers":[{"name":"simon_tang","email":"25207192@qq.com"}],"bin":{"lattice-opensandbox-gateway":"dist/cli.mjs"},"dist":{"shasum":"eb3b5f5af300212ca634cd948d213bbcef3c8935","tarball":"https://registry.npmjs.org/@axiom-lattice/opensandbox-gateway/-/opensandbox-gateway-0.1.2.tgz","fileCount":36,"integrity":"sha512-lhbvFKOi2ZdZ9skk75cXjbhf/UAvzYZLcMRBun/QJb4U/HZWMgBqVPsOwyyhWL8iz6OPFpnY+NdYviK47e6nMg==","signatures":[{"sig":"MEUCIQCsrpndc3+UN5XeSgJiYytkLWbgLQwcUGxyLdafaD566wIgTeb04kbn4tx69iJJxXtW6RMu/uzRlRGUEJiZ93x9nyo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":199231},"main":"dist/index.mjs","_from":"file:axiom-lattice-opensandbox-gateway-0.1.2.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","default":"./dist/index.mjs"}},"scripts":{"dev":"tsup src/index.ts src/cli.ts --format esm --dts --watch --sourcemap --onSuccess \"node dist/cli.mjs\"","lint":"eslint src","build":"tsup src/index.ts src/cli.ts --format esm --dts --clean --sourcemap","start":"node dist/cli.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"simon_tang","email":"25207192@qq.com"},"_resolved":"/tmp/4f4fa73b650bdea976844f7a75022c55/axiom-lattice-opensandbox-gateway-0.1.2.tgz","_integrity":"sha512-lhbvFKOi2ZdZ9skk75cXjbhf/UAvzYZLcMRBun/QJb4U/HZWMgBqVPsOwyyhWL8iz6OPFpnY+NdYviK47e6nMg==","_npmVersion":"10.8.2","description":"`@axiom-lattice/opensandbox-gateway` is an API-compatible replacement for `@axiom-lattice/microsandbox-service` that uses [OpenSandbox](https://github.com/opensandbox-group/OpenSandbox) as the sandbox backend.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"3.25.76","fastify":"^5.5.0","@fastify/cors":"^11.0.0","@fastify/swagger":"^9.5.1","@fastify/sensible":"^6.0.3","@fastify/multipart":"^9.4.0","@fastify/swagger-ui":"^5.2.3","@alibaba-group/opensandbox":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.8.2","@types/node":"^20.19.13"},"_npmOperationalInternal":{"tmp":"tmp/opensandbox-gateway_0.1.2_1783433674373_0.12957530730985845","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@axiom-lattice/opensandbox-gateway","version":"0.1.3","_id":"@axiom-lattice/opensandbox-gateway@0.1.3","maintainers":[{"name":"simon_tang","email":"25207192@qq.com"}],"bin":{"lattice-opensandbox-gateway":"dist/cli.mjs"},"dist":{"shasum":"69061d62a4eb7e42596647326dcec5c510917956","tarball":"https://registry.npmjs.org/@axiom-lattice/opensandbox-gateway/-/opensandbox-gateway-0.1.3.tgz","fileCount":36,"integrity":"sha512-2K3BwNPFVMm/PCxbrM2lck3dgPREwfpBO7Zva1Q4BtshzZ4bNHV1fJSE4vAQD1yten+MEwZOuJ3D0Q5fjHYBpQ==","signatures":[{"sig":"MEQCIA2Dax8ddPCLu/zQJmgMWylvfT2ayVHag1dVb8X8Uc9/AiAEUzAZcqYSfQU5gxgBb3CM36PzWgheybWDSVDgR8T2BQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":201408},"main":"dist/index.mjs","_from":"file:axiom-lattice-opensandbox-gateway-0.1.3.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","default":"./dist/index.mjs"}},"scripts":{"dev":"tsup src/index.ts src/cli.ts --format esm --dts --watch --sourcemap --onSuccess \"node dist/cli.mjs\"","lint":"eslint src","build":"tsup src/index.ts src/cli.ts --format esm --dts --clean --sourcemap","start":"node dist/cli.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"simon_tang","email":"25207192@qq.com"},"_resolved":"/tmp/799bf89bae17460b7a4fb5502a19ef77/axiom-lattice-opensandbox-gateway-0.1.3.tgz","_integrity":"sha512-2K3BwNPFVMm/PCxbrM2lck3dgPREwfpBO7Zva1Q4BtshzZ4bNHV1fJSE4vAQD1yten+MEwZOuJ3D0Q5fjHYBpQ==","_npmVersion":"10.8.2","description":"`@axiom-lattice/opensandbox-gateway` is an API-compatible replacement for `@axiom-lattice/microsandbox-service` that uses [OpenSandbox](https://github.com/opensandbox-group/OpenSandbox) as the sandbox backend.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"3.25.76","fastify":"^5.5.0","@fastify/cors":"^11.0.0","@fastify/swagger":"^9.5.1","@fastify/sensible":"^6.0.3","@fastify/multipart":"^9.4.0","@fastify/swagger-ui":"^5.2.3","@alibaba-group/opensandbox":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.8.2","@types/node":"^20.19.13"},"_npmOperationalInternal":{"tmp":"tmp/opensandbox-gateway_0.1.3_1783437732435_0.6225098573126517","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@axiom-lattice/opensandbox-gateway","version":"0.1.4","_id":"@axiom-lattice/opensandbox-gateway@0.1.4","maintainers":[{"name":"simon_tang","email":"25207192@qq.com"}],"bin":{"lattice-opensandbox-gateway":"dist/cli.mjs"},"dist":{"shasum":"7c1158c586aa854f48b3dc1e9b1e0c38295f6664","tarball":"https://registry.npmjs.org/@axiom-lattice/opensandbox-gateway/-/opensandbox-gateway-0.1.4.tgz","fileCount":36,"integrity":"sha512-hxWDIvTar1wRhp26hxwNnQqJqlxGdH7XHoSu4VbA85huY7c44/plaPqUDG4kh2Hb3ybkzkSaJ8edONWXMhAqvg==","signatures":[{"sig":"MEUCIQDlMk+b5pdcm9xGsBF1dAChDBITnf2n/x0S8JM0K6gzHQIgbnj7rBKXEKE6ehLkHj5Q8uwvnX6TsDmod09OSnzQ+WA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":204681},"main":"dist/index.mjs","_from":"file:axiom-lattice-opensandbox-gateway-0.1.4.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","default":"./dist/index.mjs"}},"scripts":{"dev":"tsup src/index.ts src/cli.ts --format esm --dts --watch --sourcemap --onSuccess \"node dist/cli.mjs\"","lint":"eslint src","build":"tsup src/index.ts src/cli.ts --format esm --dts --clean --sourcemap","start":"node dist/cli.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"simon_tang","email":"25207192@qq.com"},"_resolved":"/tmp/d1b945ae7dbc14052b17628239500a9a/axiom-lattice-opensandbox-gateway-0.1.4.tgz","_integrity":"sha512-hxWDIvTar1wRhp26hxwNnQqJqlxGdH7XHoSu4VbA85huY7c44/plaPqUDG4kh2Hb3ybkzkSaJ8edONWXMhAqvg==","_npmVersion":"10.8.2","description":"`@axiom-lattice/opensandbox-gateway` is an API-compatible replacement for `@axiom-lattice/microsandbox-service` that uses [OpenSandbox](https://github.com/opensandbox-group/OpenSandbox) as the sandbox backend.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"3.25.76","fastify":"^5.5.0","@fastify/cors":"^11.0.0","@fastify/swagger":"^9.5.1","@fastify/sensible":"^6.0.3","@fastify/multipart":"^9.4.0","@fastify/swagger-ui":"^5.2.3","@alibaba-group/opensandbox":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.8.2","@types/node":"^20.19.13"},"_npmOperationalInternal":{"tmp":"tmp/opensandbox-gateway_0.1.4_1783440867816_0.4171221340018192","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@axiom-lattice/opensandbox-gateway","version":"0.1.5","_id":"@axiom-lattice/opensandbox-gateway@0.1.5","maintainers":[{"name":"simon_tang","email":"25207192@qq.com"}],"bin":{"lattice-opensandbox-gateway":"dist/cli.mjs"},"dist":{"shasum":"bfe99ed8bc788330b6299c833c431973b35069eb","tarball":"https://registry.npmjs.org/@axiom-lattice/opensandbox-gateway/-/opensandbox-gateway-0.1.5.tgz","fileCount":36,"integrity":"sha512-iFL2D0TqJwMcBDyy/wF3goI3tbzxZWz9mjnGpZD3MfPyOKqkNaGxzUx4hGbq21jDw7cYdFdpZAb4xIrLSPJgzA==","signatures":[{"sig":"MEYCIQCBegBcSsIeagQ/XzSU4uK+OhWONFbUskI4XCw/vpgNrAIhAN2qcEpDXHVjFutbDQ93Nt/6yCJUdqjbZ55Qo9eLpGdG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":206029},"main":"dist/index.mjs","_from":"file:axiom-lattice-opensandbox-gateway-0.1.5.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","default":"./dist/index.mjs"}},"scripts":{"dev":"tsup src/index.ts src/cli.ts --format esm --dts --watch --sourcemap --onSuccess \"node dist/cli.mjs\"","lint":"eslint src","build":"tsup src/index.ts src/cli.ts --format esm --dts --clean --sourcemap","start":"node dist/cli.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"simon_tang","email":"25207192@qq.com"},"_resolved":"/tmp/71025c835df154f356a78d8dbee00d9f/axiom-lattice-opensandbox-gateway-0.1.5.tgz","_integrity":"sha512-iFL2D0TqJwMcBDyy/wF3goI3tbzxZWz9mjnGpZD3MfPyOKqkNaGxzUx4hGbq21jDw7cYdFdpZAb4xIrLSPJgzA==","_npmVersion":"10.8.2","description":"`@axiom-lattice/opensandbox-gateway` is an API-compatible replacement for `@axiom-lattice/microsandbox-service` that uses [OpenSandbox](https://github.com/opensandbox-group/OpenSandbox) as the sandbox backend.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"3.25.76","fastify":"^5.5.0","@fastify/cors":"^11.0.0","@fastify/swagger":"^9.5.1","@fastify/sensible":"^6.0.3","@fastify/multipart":"^9.4.0","@fastify/swagger-ui":"^5.2.3","@alibaba-group/opensandbox":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.8.2","@types/node":"^20.19.13"},"_npmOperationalInternal":{"tmp":"tmp/opensandbox-gateway_0.1.5_1786179078713_0.34085687004392384","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@axiom-lattice/opensandbox-gateway","version":"0.2.0","_id":"@axiom-lattice/opensandbox-gateway@0.2.0","maintainers":[{"name":"simon_tang","email":"25207192@qq.com"}],"bin":{"lattice-opensandbox-gateway":"dist/cli.mjs"},"dist":{"shasum":"9cfb5335e4f033e2370ad35f4a13ec308d68c84c","tarball":"https://registry.npmjs.org/@axiom-lattice/opensandbox-gateway/-/opensandbox-gateway-0.2.0.tgz","fileCount":36,"integrity":"sha512-FPi+M9h1WPicUeyUzIMaXT0+LZk2Cox2jdbp0Mzt2hReiHRLHWl16FWNbIN4SHpj/EL2927tC89BmZryJBRNTg==","signatures":[{"sig":"MEQCIHlBPqPMww7MDiFzfhvVef9urqWGKq7R4tPhVSEhzghyAiBHbsDLOXWFeiEaFHP98VhnVq3kixsoaGN/gWkGPsJNWg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":206190},"main":"dist/index.mjs","_from":"file:axiom-lattice-opensandbox-gateway-0.2.0.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","default":"./dist/index.mjs"}},"scripts":{"dev":"tsup src/index.ts src/cli.ts --format esm --dts --watch --sourcemap --onSuccess \"node dist/cli.mjs\"","lint":"eslint src","build":"tsup src/index.ts src/cli.ts --format esm --dts --clean --sourcemap","start":"node dist/cli.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"simon_tang","email":"25207192@qq.com"},"_resolved":"/tmp/1b02fc5a7907f76d55434a12e081ff2f/axiom-lattice-opensandbox-gateway-0.2.0.tgz","_integrity":"sha512-FPi+M9h1WPicUeyUzIMaXT0+LZk2Cox2jdbp0Mzt2hReiHRLHWl16FWNbIN4SHpj/EL2927tC89BmZryJBRNTg==","_npmVersion":"10.8.2","description":"`@axiom-lattice/opensandbox-gateway` is an API-compatible replacement for `@axiom-lattice/microsandbox-service` that uses [OpenSandbox](https://github.com/opensandbox-group/OpenSandbox) as the sandbox backend.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"3.25.76","fastify":"^5.5.0","@fastify/cors":"^11.0.0","@fastify/swagger":"^9.5.1","@fastify/sensible":"^6.0.3","@fastify/multipart":"^9.4.0","@fastify/swagger-ui":"^5.2.3","@alibaba-group/opensandbox":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","eslint":"^8.57.0","typescript":"^5.8.2","@types/node":"^20.19.13","@typescript-eslint/parser":"^7.2.0","@typescript-eslint/eslint-plugin":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/opensandbox-gateway_0.2.0_1787892526896_0.3845281537700196","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@axiom-lattice/opensandbox-gateway","version":"0.2.1","_id":"@axiom-lattice/opensandbox-gateway@0.2.1","maintainers":[{"name":"simon_tang","email":"25207192@qq.com"}],"bin":{"lattice-opensandbox-gateway":"dist/cli.mjs"},"dist":{"shasum":"34c67970f1aaf533e5586c76a8df9744790e78c1","tarball":"https://registry.npmjs.org/@axiom-lattice/opensandbox-gateway/-/opensandbox-gateway-0.2.1.tgz","fileCount":45,"integrity":"sha512-bfC2r76DjnEudttygVWb1zGvWDWzw/FqDGSnKs4YoAbV0e8GD2oMYVbcvqqPeouAmX5yl7b1SvPXdLs1ayFxEw==","signatures":[{"sig":"MEUCIAafTHIP/qJoP7I3AXBUMVJeZACQgJIIBU/w/vu7dlBaAiEAq3ACswlu+M/kkGX+smwb52wgnyoObA7j8EDQ6JUcxrc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":227916},"main":"dist/index.mjs","_from":"file:axiom-lattice-opensandbox-gateway-0.2.1.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","default":"./dist/index.mjs"}},"scripts":{"dev":"tsup src/index.ts src/cli.ts --format esm --dts --watch --sourcemap --onSuccess \"node dist/cli.mjs\"","lint":"eslint src","build":"tsup src/index.ts src/cli.ts --format esm --dts --clean --sourcemap","start":"node dist/cli.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"simon_tang","email":"25207192@qq.com"},"_resolved":"/tmp/ff7099bb5fc8beb06d0c1fd0343626fe/axiom-lattice-opensandbox-gateway-0.2.1.tgz","_integrity":"sha512-bfC2r76DjnEudttygVWb1zGvWDWzw/FqDGSnKs4YoAbV0e8GD2oMYVbcvqqPeouAmX5yl7b1SvPXdLs1ayFxEw==","_npmVersion":"10.8.2","description":"`@axiom-lattice/opensandbox-gateway` is an API-compatible replacement for `@axiom-lattice/microsandbox-service` that uses [OpenSandbox](https://github.com/opensandbox-group/OpenSandbox) as the sandbox backend.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"3.25.76","fastify":"^5.5.0","@fastify/cors":"^11.0.0","@fastify/swagger":"^9.5.1","@fastify/sensible":"^6.0.3","@fastify/multipart":"^9.4.0","@fastify/swagger-ui":"^5.2.3","@alibaba-group/opensandbox":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","eslint":"^8.57.0","typescript":"^5.8.2","@types/node":"^20.19.13","@typescript-eslint/parser":"^7.2.0","@typescript-eslint/eslint-plugin":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/opensandbox-gateway_0.2.1_1788340549707_0.15568395429582993","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@axiom-lattice/opensandbox-gateway","version":"0.2.2","_id":"@axiom-lattice/opensandbox-gateway@0.2.2","maintainers":[{"name":"simon_tang","email":"25207192@qq.com"}],"bin":{"lattice-opensandbox-gateway":"dist/cli.mjs"},"dist":{"shasum":"6fd8ab7b8a7489470cc9107187a54341fb48e7de","tarball":"https://registry.npmjs.org/@axiom-lattice/opensandbox-gateway/-/opensandbox-gateway-0.2.2.tgz","fileCount":45,"integrity":"sha512-JAVFLlBP9d9Qeds8gbfj8A/9gXwpue+kV3AH8yJ/dsGMrv1btFiUmkfGnXG4KUVouxLEyjYVNkthSD5PWLuMjw==","signatures":[{"sig":"MEUCIQD5++h11uncGEY1BpKSsy69dSNivIUa16A85YDUucX/MAIgSmhP3Pxr4nKuUaoFMVwXfl7BYPKien068Id+GWDFKgo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":227979},"main":"dist/index.mjs","_from":"file:axiom-lattice-opensandbox-gateway-0.2.2.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","default":"./dist/index.mjs"}},"scripts":{"dev":"tsup src/index.ts src/cli.ts --format esm --dts --watch --sourcemap --onSuccess \"node dist/cli.mjs\"","lint":"eslint src","build":"tsup src/index.ts src/cli.ts --format esm --dts --clean --sourcemap","start":"node dist/cli.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"simon_tang","email":"25207192@qq.com"},"_resolved":"/tmp/ee9a05fecc121c80e912157f05f2b427/axiom-lattice-opensandbox-gateway-0.2.2.tgz","_integrity":"sha512-JAVFLlBP9d9Qeds8gbfj8A/9gXwpue+kV3AH8yJ/dsGMrv1btFiUmkfGnXG4KUVouxLEyjYVNkthSD5PWLuMjw==","_npmVersion":"10.8.2","description":"`@axiom-lattice/opensandbox-gateway` is an API-compatible replacement for `@axiom-lattice/microsandbox-service` that uses [OpenSandbox](https://github.com/opensandbox-group/OpenSandbox) as the sandbox backend.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"3.25.76","fastify":"^5.5.0","@fastify/cors":"^11.0.0","@fastify/swagger":"^9.5.1","@fastify/sensible":"^6.0.3","@fastify/multipart":"^9.4.0","@fastify/swagger-ui":"^5.2.3","@alibaba-group/opensandbox":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","eslint":"^8.57.0","typescript":"^5.8.2","@types/node":"^20.19.13","@typescript-eslint/parser":"^7.2.0","@typescript-eslint/eslint-plugin":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/opensandbox-gateway_0.2.2_1788517325675_0.9183546864290344","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@axiom-lattice/opensandbox-gateway","version":"0.2.3","_id":"@axiom-lattice/opensandbox-gateway@0.2.3","maintainers":[{"name":"simon_tang","email":"25207192@qq.com"}],"bin":{"lattice-opensandbox-gateway":"dist/cli.mjs"},"dist":{"shasum":"02c9704e885df71f0463cf71dc6a3ad3b1860083","tarball":"https://registry.npmjs.org/@axiom-lattice/opensandbox-gateway/-/opensandbox-gateway-0.2.3.tgz","fileCount":45,"integrity":"sha512-wTLfoKyhOLeaKcf3oxXqoVgWMZeQnkG7xd2jxXwnWiJvCZ0xG3DCDu2aQzEhkWg5EvKhiCv2cMQmIrQKSgDGZw==","signatures":[{"sig":"MEUCIDNYdiIeF5ZvGLSb8DaUq5UFDJJFThRovXR1FWrzQrMhAiEA5VsT9Sc5yAQheJQ6LoYpiU+24n68QgbpcSS/Yooq7VQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":230504},"main":"dist/index.mjs","_from":"file:axiom-lattice-opensandbox-gateway-0.2.3.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","default":"./dist/index.mjs"}},"scripts":{"dev":"tsup src/index.ts src/cli.ts --format esm --dts --watch --sourcemap --onSuccess \"node dist/cli.mjs\"","lint":"eslint src","build":"tsup src/index.ts src/cli.ts --format esm --dts --clean --sourcemap","start":"node dist/cli.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"simon_tang","email":"25207192@qq.com"},"_resolved":"/tmp/768f2729c575ca615993e9b0cf7323a0/axiom-lattice-opensandbox-gateway-0.2.3.tgz","_integrity":"sha512-wTLfoKyhOLeaKcf3oxXqoVgWMZeQnkG7xd2jxXwnWiJvCZ0xG3DCDu2aQzEhkWg5EvKhiCv2cMQmIrQKSgDGZw==","_npmVersion":"10.8.2","description":"`@axiom-lattice/opensandbox-gateway` is an API-compatible replacement for `@axiom-lattice/microsandbox-service` that uses [OpenSandbox](https://github.com/opensandbox-group/OpenSandbox) as the sandbox backend.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"3.25.76","fastify":"^5.5.0","@fastify/cors":"^11.0.0","@fastify/swagger":"^9.5.1","@fastify/sensible":"^6.0.3","@fastify/multipart":"^9.4.0","@fastify/swagger-ui":"^5.2.3","@alibaba-group/opensandbox":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","eslint":"^8.57.0","typescript":"^5.8.2","@types/node":"^20.19.13","@typescript-eslint/parser":"^7.2.0","@typescript-eslint/eslint-plugin":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/opensandbox-gateway_0.2.3_1788914090516_0.7904420813303628","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@axiom-lattice/opensandbox-gateway","version":"0.2.5","_id":"@axiom-lattice/opensandbox-gateway@0.2.5","maintainers":[{"name":"simon_tang","email":"25207192@qq.com"}],"bin":{"lattice-opensandbox-gateway":"dist/cli.mjs"},"dist":{"shasum":"20b1cc3e47608cc51715269df0922b364625a14b","tarball":"https://registry.npmjs.org/@axiom-lattice/opensandbox-gateway/-/opensandbox-gateway-0.2.5.tgz","fileCount":45,"integrity":"sha512-4eoQSlDro94BYYdoirPtgUS81TIN1tIGP1ZsiDotQiLYVm7zafbxr43tDu6e0mbRX7bxZ6NmooWg58fijEXKcg==","signatures":[{"sig":"MEUCIBAGyjaqNnZPAOVABYfV2ytpTxqnW3RDl9ufoz0xqvL3AiEAtRsaApA9S17KgkpoyWbr9Cyb5P6K96WofpizXxZT9TE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":230608},"main":"dist/index.mjs","_from":"file:axiom-lattice-opensandbox-gateway-0.2.5.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","default":"./dist/index.mjs"}},"scripts":{"dev":"tsup src/index.ts src/cli.ts --format esm --dts --watch --sourcemap --onSuccess \"node dist/cli.mjs\"","lint":"eslint src","build":"tsup src/index.ts src/cli.ts --format esm --dts --clean --sourcemap","start":"node dist/cli.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"simon_tang","email":"25207192@qq.com"},"_resolved":"/tmp/9fae0bc18132ba4343cb5a6ea183372c/axiom-lattice-opensandbox-gateway-0.2.5.tgz","_integrity":"sha512-4eoQSlDro94BYYdoirPtgUS81TIN1tIGP1ZsiDotQiLYVm7zafbxr43tDu6e0mbRX7bxZ6NmooWg58fijEXKcg==","_npmVersion":"10.8.2","description":"`@axiom-lattice/opensandbox-gateway` is an API-compatible replacement for `@axiom-lattice/microsandbox-service` that uses [OpenSandbox](https://github.com/opensandbox-group/OpenSandbox) as the sandbox backend.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"3.25.76","fastify":"^5.5.0","@fastify/cors":"^11.0.0","@fastify/swagger":"^9.5.1","@fastify/sensible":"^6.0.3","@fastify/multipart":"^9.4.0","@fastify/swagger-ui":"^5.2.3","@alibaba-group/opensandbox":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","eslint":"^8.57.0","typescript":"^5.8.2","@types/node":"^20.19.13","@typescript-eslint/parser":"^7.2.0","@typescript-eslint/eslint-plugin":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/opensandbox-gateway_0.2.5_1789017230779_0.5360721658341852","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@axiom-lattice/opensandbox-gateway","version":"0.2.6","_id":"@axiom-lattice/opensandbox-gateway@0.2.6","maintainers":[{"name":"simon_tang","email":"25207192@qq.com"}],"bin":{"lattice-opensandbox-gateway":"dist/cli.mjs"},"dist":{"shasum":"454120987f8dccc47a8c51f062eb152d932cc00e","tarball":"https://registry.npmjs.org/@axiom-lattice/opensandbox-gateway/-/opensandbox-gateway-0.2.6.tgz","fileCount":45,"integrity":"sha512-9vBz42Oe4py1xUXNtztmK/Vc0T+SsCfalc1PMBFYMqYKX3ehpeYPTR1SBsxinuQRUreH+c5cMCUFH9d3jPwZdQ==","signatures":[{"sig":"MEUCIQDYPfkFkflj6d5RuDVgwDXPCPDiza6QoSawRNmdvZFlqAIgYv+qXc95bBer24pV5WerKcOwuBJHkflkHC9ltgyfqX4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDo8xXQUagI3jX2UikCZZaA2ptZqpXT2hlY2gEch05gfAIhANKyFeZlR0A+MphJH1bk5ZgwXD94k8rlEND5zXB0g96j","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":231221},"main":"dist/index.mjs","_from":"file:axiom-lattice-opensandbox-gateway-0.2.6.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","default":"./dist/index.mjs"}},"scripts":{"dev":"tsup src/index.ts src/cli.ts --format esm --dts --watch --sourcemap --onSuccess \"node dist/cli.mjs\"","lint":"eslint src","build":"tsup src/index.ts src/cli.ts --format esm --dts --clean --sourcemap","start":"node dist/cli.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"simon_tang","email":"25207192@qq.com"},"_resolved":"/tmp/3ee82f6f71a8c4ab8a676b92db6262c9/axiom-lattice-opensandbox-gateway-0.2.6.tgz","_integrity":"sha512-9vBz42Oe4py1xUXNtztmK/Vc0T+SsCfalc1PMBFYMqYKX3ehpeYPTR1SBsxinuQRUreH+c5cMCUFH9d3jPwZdQ==","_npmVersion":"10.8.2","description":"`@axiom-lattice/opensandbox-gateway` is an API-compatible replacement for `@axiom-lattice/microsandbox-service` that uses [OpenSandbox](https://github.com/opensandbox-group/OpenSandbox) as the sandbox backend.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"3.25.76","fastify":"^5.5.0","@fastify/cors":"^11.0.0","@fastify/swagger":"^9.5.1","@fastify/sensible":"^6.0.3","@fastify/multipart":"^9.4.0","@fastify/swagger-ui":"^5.2.3","@alibaba-group/opensandbox":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","eslint":"^8.57.0","typescript":"^5.8.2","@types/node":"^20.19.13","@typescript-eslint/parser":"^7.2.0","@typescript-eslint/eslint-plugin":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/opensandbox-gateway_0.2.6_1789123189736_0.8520936393139664","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"@axiom-lattice/opensandbox-gateway","version":"0.2.7","_id":"@axiom-lattice/opensandbox-gateway@0.2.7","maintainers":[{"name":"simon_tang","email":"25207192@qq.com"}],"bin":{"lattice-opensandbox-gateway":"dist/cli.mjs"},"dist":{"shasum":"cbb07396631166bd077e0cd221034508b137aaf8","tarball":"https://registry.npmjs.org/@axiom-lattice/opensandbox-gateway/-/opensandbox-gateway-0.2.7.tgz","fileCount":45,"integrity":"sha512-S7US5G+yjRFju11ufFMAXZD9dchNJdj1eLrOqEAj+9bwi25wAZIlNBijrZ4XdwhPb406y2crxk24RxNRIgcoMg==","signatures":[{"sig":"MEUCIANA7LToeNIhdW29zZrSBD1aI374SY9YhAK2pN07WRvtAiEAj8LrqCsrURIbE61lZ7bi6MwJTI7OG8+0S8vFsVMP0Q4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDhSDMFjJcc7Sq2mV8OGKCNNA+tFYmJa5MYbFrEIpXlXwIhAO+M48KVyZmgLhqvU5qtk0cGpulU7jOaOjQ12isrHQDh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":231279},"main":"dist/index.mjs","_from":"file:axiom-lattice-opensandbox-gateway-0.2.7.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","default":"./dist/index.mjs"}},"scripts":{"dev":"tsup src/index.ts src/cli.ts --format esm --dts --watch --sourcemap --onSuccess \"node dist/cli.mjs\"","lint":"eslint src","build":"tsup src/index.ts src/cli.ts --format esm --dts --clean --sourcemap","start":"node dist/cli.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"simon_tang","email":"25207192@qq.com"},"_resolved":"/tmp/8cc2eb80774973d9eaaa44d738c796f2/axiom-lattice-opensandbox-gateway-0.2.7.tgz","_integrity":"sha512-S7US5G+yjRFju11ufFMAXZD9dchNJdj1eLrOqEAj+9bwi25wAZIlNBijrZ4XdwhPb406y2crxk24RxNRIgcoMg==","_npmVersion":"10.8.2","description":"`@axiom-lattice/opensandbox-gateway` is an API-compatible replacement for `@axiom-lattice/microsandbox-service` that uses [OpenSandbox](https://github.com/opensandbox-group/OpenSandbox) as the sandbox backend.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"3.25.76","fastify":"^5.5.0","@fastify/cors":"^11.0.0","@fastify/swagger":"^9.5.1","@fastify/sensible":"^6.0.3","@fastify/multipart":"^9.4.0","@fastify/swagger-ui":"^5.2.3","@alibaba-group/opensandbox":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","eslint":"^8.57.0","typescript":"^5.8.2","@types/node":"^20.19.13","@typescript-eslint/parser":"^7.2.0","@typescript-eslint/eslint-plugin":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/opensandbox-gateway_0.2.7_1789314208330_0.061053460927742664","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"@axiom-lattice/opensandbox-gateway","version":"0.2.8","_id":"@axiom-lattice/opensandbox-gateway@0.2.8","maintainers":[{"name":"simon_tang","email":"25207192@qq.com"}],"bin":{"lattice-opensandbox-gateway":"dist/cli.mjs"},"dist":{"shasum":"6334d76c91ae09a076635bb9e7dde74da7e14f43","tarball":"https://registry.npmjs.org/@axiom-lattice/opensandbox-gateway/-/opensandbox-gateway-0.2.8.tgz","fileCount":45,"integrity":"sha512-1UBcfCoHgeOI3YLak2aF4W0qNSuAIKLNicld4DJGrR3ZB1yoV1stIMIWc4nz7av2C0ntscQCe0lUzSgeUI17vQ==","signatures":[{"sig":"MEUCIFBZl23zvXVpqXfCaMkQzlfKH7AnwKmnTOOl/M1DuuaVAiEAipac6cDASD5wCix+ZTuQNR3LYt/kl/+aUwuKmmTKp7o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC9lYO+WfyIgJqxDtl2E0HRRCi5fE1g5JoIp8bJOZQfLQIhAOys5T/Te31J/W5Ukt69E3Ae5ccuDsQQIEPoW9WjMgMB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":231332},"main":"dist/index.mjs","_from":"file:axiom-lattice-opensandbox-gateway-0.2.8.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","default":"./dist/index.mjs"}},"scripts":{"dev":"tsup src/index.ts src/cli.ts --format esm --dts --watch --sourcemap --onSuccess \"node dist/cli.mjs\"","lint":"eslint src","build":"tsup src/index.ts src/cli.ts --format esm --dts --clean --sourcemap","start":"node dist/cli.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"simon_tang","email":"25207192@qq.com"},"_resolved":"/tmp/273a90532a0d137920a9e65b599cb018/axiom-lattice-opensandbox-gateway-0.2.8.tgz","_integrity":"sha512-1UBcfCoHgeOI3YLak2aF4W0qNSuAIKLNicld4DJGrR3ZB1yoV1stIMIWc4nz7av2C0ntscQCe0lUzSgeUI17vQ==","_npmVersion":"10.8.2","description":"`@axiom-lattice/opensandbox-gateway` is an API-compatible replacement for `@axiom-lattice/microsandbox-service` that uses [OpenSandbox](https://github.com/opensandbox-group/OpenSandbox) as the sandbox backend.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"3.25.76","fastify":"^5.5.0","@fastify/cors":"^11.0.0","@fastify/swagger":"^9.5.1","@fastify/sensible":"^6.0.3","@fastify/multipart":"^9.4.0","@fastify/swagger-ui":"^5.2.3","@alibaba-group/opensandbox":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","eslint":"^8.57.0","typescript":"^5.8.2","@types/node":"^20.19.13","@typescript-eslint/parser":"^7.2.0","@typescript-eslint/eslint-plugin":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/opensandbox-gateway_0.2.8_1789316150521_0.6098187668397015","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"@axiom-lattice/opensandbox-gateway","version":"0.2.9","_id":"@axiom-lattice/opensandbox-gateway@0.2.9","maintainers":[{"name":"simon_tang","email":"25207192@qq.com"}],"bin":{"lattice-opensandbox-gateway":"dist/cli.mjs"},"dist":{"shasum":"0d6a56eacc580d5ed50d5fd434ad44c4d8267c0e","tarball":"https://registry.npmjs.org/@axiom-lattice/opensandbox-gateway/-/opensandbox-gateway-0.2.9.tgz","fileCount":45,"integrity":"sha512-Bwsbbff6ihjdajP2ka6AsVwYPaa5raJGpInEQgb+aJ7VdKVbag9H49aahy+qflOLTObZhrMouhkJ3Ymq2XssGg==","signatures":[{"sig":"MEYCIQDkvd0AS6v91pklvxkws7wJ3Nxlzf44L+cmmwqE7G2tKgIhANWgR1amH0pIzA/WCoyFofb7lE66MbV0hnxI4pGY3mtJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCUB92IPXwaMuz4UuOB+liDTMljdkbzftXWGKbM1zpMPQIgXDJnflRINXxVu8gJTb78AmW/pcAluZvxyRAY+cAprrc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":231385},"main":"dist/index.mjs","_from":"file:axiom-lattice-opensandbox-gateway-0.2.9.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","default":"./dist/index.mjs"}},"scripts":{"dev":"tsup src/index.ts src/cli.ts --format esm --dts --watch --sourcemap --onSuccess \"node dist/cli.mjs\"","lint":"eslint src","build":"tsup src/index.ts src/cli.ts --format esm --dts --clean --sourcemap","start":"node dist/cli.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"simon_tang","email":"25207192@qq.com"},"_resolved":"/tmp/a2f2d5650bade371724c5fbed22e8647/axiom-lattice-opensandbox-gateway-0.2.9.tgz","_integrity":"sha512-Bwsbbff6ihjdajP2ka6AsVwYPaa5raJGpInEQgb+aJ7VdKVbag9H49aahy+qflOLTObZhrMouhkJ3Ymq2XssGg==","_npmVersion":"10.8.2","description":"`@axiom-lattice/opensandbox-gateway` is an API-compatible replacement for `@axiom-lattice/microsandbox-service` that uses [OpenSandbox](https://github.com/opensandbox-group/OpenSandbox) as the sandbox backend.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"3.25.76","fastify":"^5.5.0","@fastify/cors":"^11.0.0","@fastify/swagger":"^9.5.1","@fastify/sensible":"^6.0.3","@fastify/multipart":"^9.4.0","@fastify/swagger-ui":"^5.2.3","@alibaba-group/opensandbox":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","eslint":"^8.57.0","typescript":"^5.8.2","@types/node":"^20.19.13","@typescript-eslint/parser":"^7.2.0","@typescript-eslint/eslint-plugin":"^7.2.0"},"_npmOperationalInternal":{"tmp":"tmp/opensandbox-gateway_0.2.9_1789399433844_0.9992401446794972","host":"s3://npm-registry-packages-npm-production"}},"0.2.10":{"_id":"@axiom-lattice/opensandbox-gateway@0.2.10","bin":{"lattice-opensandbox-gateway":"dist/cli.mjs"},"dist":{"shasum":"a0a6bcdf0fb3842d949821f99b8762acce584bf6","tarball":"https://registry.npmjs.org/@axiom-lattice/opensandbox-gateway/-/opensandbox-gateway-0.2.10.tgz","fileCount":45,"integrity":"sha512-v+5EPsqZHSmIfztLDAKdyqKe/F/zu4yNdGZ5N64sRy2RSA2edpExrc9DHb8Obcevyqw/xIJNj3rj2fvdO3u5NQ==","signatures":[{"sig":"MEQCIGoX/zYOqkp2meb95+A+rUSnlZZjtmcDlfTIdoJdzsdSAiAPXLNHlzGHTJfACimzzOnN1hG2TIeRP6XnOA7MySbtmw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFIfFfw03nHQzwJ5AqxmaBmARbSap2NQTDdiDE36TdbEAiEA+tmaXhyvdKk7HFCYnaoEXLZHBAXpCibgPos32iHOeNQ="}],"unpackedSize":231468},"main":"dist/index.mjs","name":"@axiom-lattice/opensandbox-gateway","_from":"file:axiom-lattice-opensandbox-gateway-0.2.10.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","default":"./dist/index.mjs"}},"scripts":{"dev":"tsup src/index.ts src/cli.ts --format esm --dts --watch --sourcemap --onSuccess \"node dist/cli.mjs\"","lint":"eslint src","build":"tsup src/index.ts src/cli.ts --format esm --dts --clean --sourcemap","start":"node dist/cli.mjs","typecheck":"tsc --noEmit"},"version":"0.2.10","_npmUser":{"name":"simon_tang","email":"25207192@qq.com"},"_resolved":"/tmp/f2b333bd3d21ee942ab6b92f7600e04e/axiom-lattice-opensandbox-gateway-0.2.10.tgz","_integrity":"sha512-v+5EPsqZHSmIfztLDAKdyqKe/F/zu4yNdGZ5N64sRy2RSA2edpExrc9DHb8Obcevyqw/xIJNj3rj2fvdO3u5NQ==","_npmVersion":"11.19.0","description":"`@axiom-lattice/opensandbox-gateway` is an API-compatible replacement for `@axiom-lattice/microsandbox-service` that uses [OpenSandbox](https://github.com/opensandbox-group/OpenSandbox) as the sandbox backend.","directories":{},"maintainers":[{"name":"simon_tang","email":"25207192@qq.com"}],"_nodeVersion":"24.20.0","dependencies":{"zod":"3.25.76","fastify":"^5.5.0","@fastify/cors":"^11.0.0","@fastify/swagger":"^9.5.1","@fastify/sensible":"^6.0.3","@fastify/multipart":"^9.4.0","@fastify/swagger-ui":"^5.2.3","@alibaba-group/opensandbox":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","eslint":"^8.57.0","typescript":"^5.8.2","@types/node":"^20.19.13","@typescript-eslint/parser":"^7.2.0","@typescript-eslint/eslint-plugin":"^7.2.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/opensandbox-gateway_0.2.10_1789885890500_0.37210758677033473"}}},"time":{"created":"2026-07-07T14:14:34.200Z","modified":"2026-09-20T06:31:30.744Z","0.1.2":"2026-07-07T14:14:34.525Z","0.1.3":"2026-07-07T15:22:12.571Z","0.1.4":"2026-07-07T16:14:28.005Z","0.1.5":"2026-08-08T08:51:18.870Z","0.2.0":"2026-08-28T04:48:47.037Z","0.2.1":"2026-09-02T09:15:49.860Z","0.2.2":"2026-09-04T10:22:05.836Z","0.2.3":"2026-09-09T00:34:50.679Z","0.2.5":"2026-09-10T05:13:50.923Z","0.2.6":"2026-09-11T10:39:49.824Z","0.2.7":"2026-09-13T15:43:28.405Z","0.2.8":"2026-09-13T16:15:50.602Z","0.2.9":"2026-09-14T15:23:53.917Z","0.2.10":"2026-09-20T06:31:30.595Z"},"description":"`@axiom-lattice/opensandbox-gateway` is an API-compatible replacement for `@axiom-lattice/microsandbox-service` that uses [OpenSandbox](https://github.com/opensandbox-group/OpenSandbox) as the sandbox backend.","maintainers":[{"name":"simon_tang","email":"25207192@qq.com"}],"readme":"# @axiom-lattice/opensandbox-gateway\n\n`@axiom-lattice/opensandbox-gateway` is an API-compatible replacement for `@axiom-lattice/microsandbox-service` that uses [OpenSandbox](https://github.com/opensandbox-group/OpenSandbox) as the sandbox backend.\n\nIt exposes the same HTTP API — Core's `MicrosandboxRemoteProvider` and `MicrosandboxServiceClient` work without any code changes.\n\n## Prerequisites\n\n- Node.js 18+\n- [Docker](https://docs.docker.com/get-docker/) or [OrbStack](https://orbstack.dev/)\n- Python 3.10+ with [uv](https://docs.astral.sh/uv/getting-started/installation/)\n- OpenSandbox Server (`uv tool install opensandbox-server`)\n\n## OpenSandbox Server Setup\n\nThe gateway requires a running [OpenSandbox Server](https://github.com/opensandbox-group/OpenSandbox) instance.\n\n### Install\n\n```bash\nuv tool install opensandbox-server\n```\n\n### Configure\n\n**Option A: No config (simplest, for local dev)**\n\nStart without a config file — defaults to Docker runtime on `0.0.0.0:8080`:\n\n```bash\nOPENSANDBOX_INSECURE_SERVER=YES opensandbox-server\n```\n\n`OPENSANDBOX_INSECURE_SERVER=YES` is required when `api_key` is not set (safe for local dev only).\n\n**Option B: Config file (recommended for production)**\n\n```bash\n# Generate a Docker-mode config template\nopensandbox-server init-config ~/.sandbox.toml --example docker\n\n# Edit the file to set api_key, port, etc.\n# Then start:\nopensandbox-server --config ~/.sandbox.toml\n```\n\nKey `~/.sandbox.toml` settings:\n\n```toml\n[server]\nhost = \"0.0.0.0\"\nport = 8080\napi_key = \"your-secret-key\"   # Required for production\n\n[runtime]\ntype = \"docker\"               # \"docker\" or \"kubernetes\"\n\n[runtime.docker]\nnetwork_mode = \"host\"         # \"host\" or \"bridge\"\n\n# Required for volume mounts (named volumes from Core)\n[storage]\nallowed_host_paths = [\"/root/.opensandbox/volumes\"]\n```\n\n### Verify\n\n```bash\ncurl http://localhost:8080/health\n# → {\"status\":\"healthy\"}\n```\n\nFull server documentation: [OpenSandbox Server docs](https://github.com/opensandbox-group/OpenSandbox/blob/main/docs/components/server.md)\n\n## Quick Start\n\n```bash\n# 1. Start OpenSandbox Server (Docker mode, no config)\nOPENSANDBOX_INSECURE_SERVER=YES opensandbox-server &\n# → http://localhost:8080\n\n# 2. Build and start the gateway\npnpm --filter @axiom-lattice/opensandbox-gateway build\nOPEN_SANDBOX_DOMAIN=localhost:8080 node packages/opensandbox-gateway/dist/cli.mjs &\n# → http://localhost:4002\n\n# 3. Verify\ncurl http://localhost:4002/health\n```\n\n## Install and Build\n\n```bash\npnpm --filter @axiom-lattice/opensandbox-gateway build\n```\n\n## CLI Usage\n\n```bash\nlattice-opensandbox-gateway --host 0.0.0.0 --port 4002\n```\n\nSupported flags:\n\n- `--host <string>`\n- `--port <number>`\n\n## Configuration\n\nRuntime configuration is resolved in this order: CLI arguments → environment variables → defaults.\n\n### Service Configuration\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `HOST` | `0.0.0.0` | Listen address |\n| `PORT` | `4002` | Listen port |\n| `GATEWAY_API_KEY` | — | Bearer token for authenticating to this service |\n| `MICROSANDBOX_API_KEY` | — | Fallback alias for `GATEWAY_API_KEY` (backward compatibility) |\n| `BODY_LIMIT` | `104857600` (100MB) | Max request body size |\n\n### Authentication\n\nWhen `GATEWAY_API_KEY` (or `MICROSANDBOX_API_KEY`) is set, all `/api/*` endpoints require a Bearer token:\n\n```bash\n# Without key → 401\ncurl http://localhost:4003/api/sandboxes\n# → {\"success\":false,\"error\":{\"code\":\"UNAUTHORIZED\",\"message\":\"Unauthorized\"}}\n\n# With key → 200\ncurl -H \"Authorization: Bearer your-key\" http://localhost:4003/api/sandboxes\n# → {\"success\":true,\"data\":{...}}\n```\n\nThe `/health` endpoint and Swagger UI (`/api-docs`) are not authenticated.\n\nOn the Core side, set `MICROSANDBOX_API_KEY` environment variable to match.\n\n### OpenSandbox Connection\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `OPEN_SANDBOX_DOMAIN` | `localhost:8080` | OpenSandbox Server address |\n| `OPEN_SANDBOX_PROTOCOL` | `http` | `http` or `https` |\n| `OPEN_SANDBOX_API_KEY` | — | API key for OpenSandbox Server |\n| `OPEN_SANDBOX_USE_SERVER_PROXY` | `false` | Route execd traffic through server proxy |\n\n### Sandbox Defaults\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `OPEN_SANDBOX_DEFAULT_IMAGE` | `ubuntu:22.04` | Docker image for new sandboxes |\n| `OPEN_SANDBOX_DEFAULT_CPUS` | `1` | vCPUs per sandbox |\n| `OPEN_SANDBOX_DEFAULT_MEMORY_MIB` | `2048` | Memory in MiB per sandbox |\n| `OPEN_SANDBOX_DEFAULT_TIMEOUT` | `600` | Auto-kill sandbox after N seconds of inactivity. Set high or use `null` via API for manual cleanup |\n| `SANDBOX_IDLE_TIMEOUT_MS` | `600000` | Max cache TTL before rebuilding on next ensure |\n\n### Volume Configuration\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `VOLUME_BASE_PATH` | `~/.opensandbox/volumes` | Host directory for named volume filesystem operations |\n\nNamed volumes from Core (e.g. `s<hash>` for skills, `p<hash>` for projects) are mapped to host directories under `$VOLUME_BASE_PATH/<name>/`. The OpenSandbox Server must allow this path via `[storage] allowed_host_paths` in `~/.sandbox.toml`:\n\n```toml\n[storage]\nallowed_host_paths = [\"/root/.opensandbox/volumes\"]\n```\n\nWithout this, volume mounts will fail with \"Host path is not under any allowed prefix\".\n\n## Startup Examples\n\nStart with CLI flags:\n\n```bash\nlattice-opensandbox-gateway --host 127.0.0.1 --port 4002\n```\n\nStart with environment variables:\n\n```bash\nOPEN_SANDBOX_DOMAIN=opensandbox.internal:8080 OPEN_SANDBOX_DEFAULT_IMAGE=python:3.11 lattice-opensandbox-gateway\n```\n\nZero-config start (all defaults):\n\n```bash\nlattice-opensandbox-gateway\n```\n\n## Connecting from Core\n\nSet the same `MICROSANDBOX_SERVICE_URL` used for microsandbox-service:\n\n```bash\nMICROSANDBOX_SERVICE_URL=http://localhost:4002\n```\n\nThe `MicrosandboxRemoteProvider` → `MicrosandboxServiceClient` → HTTP → gateway chain works identically.\n\n## Process Manager Examples\n\n### systemd\n\n```ini\n[Unit]\nDescription=Axiom Lattice OpenSandbox Gateway\nAfter=network.target opensandbox-server.service\n\n[Service]\nExecStart=/usr/local/bin/lattice-opensandbox-gateway --host 0.0.0.0 --port 4002\nRestart=on-failure\nEnvironment=OPEN_SANDBOX_DOMAIN=localhost:8080\n\n[Install]\nWantedBy=multi-user.target\n```\n\n### supervisor\n\n```ini\n[program:opensandbox-gateway]\ncommand=/usr/local/bin/lattice-opensandbox-gateway --host 0.0.0.0 --port 4002\nautostart=true\nautorestart=true\nenvironment=OPEN_SANDBOX_DOMAIN=\"localhost:8080\"\n```\n\n### docker\n\n```dockerfile\nCMD [\"lattice-opensandbox-gateway\", \"--host\", \"0.0.0.0\", \"--port\", \"4002\"]\n```\n\n## Local Development\n\n```bash\npnpm --filter @axiom-lattice/opensandbox-gateway dev\n```\n\n## Docker Compose Deployment\n\nDeploys the full sandbox stack (`opensandbox-server` + `opensandbox-gateway`) with a single command. Files live in this package:\n\n- `docker-compose.yml` — both services, network, and volume wiring\n- `sandbox.toml` — OpenSandbox Server config (mounted into the server container)\n- `Dockerfile` — gateway image build (pnpm install → build → `pnpm deploy --prod`)\n- `.env.example` — secret template; copy to `.env` and fill in\n\n### Architecture\n\n```\nCore (agent)                              Docker host\n  │ MICROSANDBOX_SERVICE_URL                    │\n  ▼                                             │\nopensandbox-gateway ──HTTP──▶ opensandbox-server ──docker.sock──▶ sandbox containers\n(Node Fastify, :4002)          (Python FastAPI, :8080)\n```\n\n### Prerequisites\n\n- Docker Engine with compose support (Docker Desktop on macOS)\n- On macOS, `VOLUME_DIR` must be under a Docker Desktop shared path (e.g. a dir under `/Users`)\n\n### Configure\n\n1. Publish the gateway image once (it has no official image), then set `.env`:\n   ```bash\n   cp .env.example .env\n   # edit .env → SANDBOX_API_KEY, GATEWAY_IMAGE, VOLUME_DIR\n   ```\n   The `GATEWAY_IMAGE` must point to an image built from this package's `Dockerfile` (see the deploy package README for the build/push commands).\n2. (Optional) Override defaults via the compose `environment` or `sandbox.toml`:\n   - Business sandbox image — set on the **Core** side via `MICROSANDBOX_IMAGE` (default `kioko12520/sandbox:0.1.0`). The gateway fallback is `OPEN_SANDBOX_DEFAULT_IMAGE` (default `ubuntu:22.04`).\n   - `execd_image` / `egress.image` in `sandbox.toml` must be pullable on the host.\n\n> **Linux hosts:** `sandbox.toml` ships with `[proxy] resolve_internal = false` + `[docker] host_ip = \"172.17.0.1\"` (host-mapped routing). Keep them — with the default `resolve_internal = true`, the Linux server container cannot route to sandbox bridge IPs and sandbox operations hang (OrbStack/macOS tolerates it; Linux does not). See `deploy/OFFLINE_DEPLOYMENT.md`.\n\n### Start\n\n```bash\ncd packages/opensandbox-gateway\ndocker compose up -d\n```\n\nVerify:\n\n```bash\ncurl http://localhost:8080/health   # OpenSandbox Server → {\"status\":\"healthy\"}\ncurl http://localhost:4002/health   # gateway\ncurl -H \"Authorization: Bearer $SANDBOX_API_KEY\" http://localhost:4002/api/sandboxes\n```\n\n### Connect from Core\n\nOn the agent process, set:\n\n```bash\nMICROSANDBOX_SERVICE_URL=http://localhost:4002\nMICROSANDBOX_API_KEY=<same as SANDBOX_API_KEY>\nMICROSANDBOX_IMAGE=kioko12520/sandbox:0.1.0   # optional, dynamic sandbox image\n```\n\n### Path alignment (important)\n\n`VOLUME_DIR` (host) is bind-mounted into the gateway at `/data/opensandbox/volumes`, and the server only allows bind mounts under `allowed_host_paths` in `sandbox.toml`. All three must agree:\n\n| Place | Value |\n|-------|-------|\n| `.env` → `VOLUME_DIR` (host, Docker daemon view) | `/data/opensandbox/volumes` (default) |\n| Gateway `VOLUME_BASE_PATH` (inside container, fixed) | `/data/opensandbox/volumes` |\n| `sandbox.toml` → `allowed_host_paths` | `/data/opensandbox/volumes` (default) |\n\nIf you change `VOLUME_DIR`, update `allowed_host_paths` in `sandbox.toml` to the **same** value. A mismatch produces `Host path is not under any allowed prefix` on volume mounts.\n\n### Auth\n\n`SANDBOX_API_KEY` is shared by both services (server `api_key` + gateway's server-auth key). The gateway's own auth defaults to the same key and can be overridden with `GATEWAY_API_KEY`. The Core side must set `MICROSANDBOX_API_KEY` to the gateway's auth key.\n\n## Operational Notes\n\n- Requires a running OpenSandbox Server. Start it before starting the gateway.\n- Invalid startup configuration exits non-zero.\n- `SIGINT` and `SIGTERM` trigger graceful shutdown.\n- Image management endpoints (`GET /api/images`, `POST /api/images/pull`) are stubs and return empty results.\n- Sandbox logs and runtime metrics are not yet implemented (stub returns).\n- Volume FS operations (`/api/volumes/:name/fs/*`) read/write files on the host at `$VOLUME_BASE_PATH`. Works with Docker runtime where the gateway has filesystem access to the host.\n- **Sandbox TTL:** sandboxes expire after `OPEN_SANDBOX_DEFAULT_TIMEOUT` seconds (default `600`) of inactivity. The server destroys the container on expiry. `PUT /api/sandboxes/:name` (ensure) recreates an expired sandbox, but file operations do **not** auto-recreate — they fail against a dead container. This is transparent to the Core agent (it ensures before every operation), but note that **container filesystem state is lost on rebuild** unless data lives in named volumes. For long-running workloads, raise `OPEN_SANDBOX_DEFAULT_TIMEOUT` or use named volumes for persistence.\n\n## API Compatibility\n\nThis service exposes the same REST API as `@axiom-lattice/microsandbox-service`. All endpoints return the same JSON envelope (`{ success: true, data: ... }` or `{ success: false, error: { code, message } }`).\n\nSee the Swagger UI at `http://localhost:4002/api-docs` after starting the service.\n","readmeFilename":"README.md"}