{"_id":"@cloudflare/computer","_rev":"17-6739de2d21470700e8a778af22143d57","name":"@cloudflare/computer","dist-tags":{"alpha":"0.1.0-alpha.1","latest":"0.7.0"},"versions":{"0.0.0":{"name":"@cloudflare/computer","version":"0.0.0","author":"","license":"ISC","_id":"@cloudflare/computer@0.0.0","maintainers":[{"name":"cf-ci-write","email":"npm-readonly@cloudflare.com"},{"name":"dash_service_account","email":"service-account@cloudflare-ui.com"},{"name":"wrangler-publisher","email":"workers-devprod@cloudflare.com"},{"name":"cfpriveng","email":"msang@cloudflare.com"},{"name":"cf-npm-publish","email":"ui-platform-production@cloudflare.com"}],"dist":{"shasum":"1a9f26ed32f034ed7f92b533ec744ab788167d3a","tarball":"https://registry.npmjs.org/@cloudflare/computer/-/computer-0.0.0.tgz","fileCount":1,"integrity":"sha512-TS8IsT6OhpilE77/RpPFpoxQFxjXXv2vkM/qZRqeTY5cuMf2Yr1L49N4UfHs57Q9TPzWzraRJ0KuG58eaQSjMg==","signatures":[{"sig":"MEQCIFx8WABBXSpVSo82nxafVIQs/NVAeLHGkNSJZ0yFyeE5AiAnwdb3jlaivgsVLe1eeShk10PFzNcmQGrbU2EojCWV5g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":238},"main":"index.js","type":"commonjs","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"wrangler-publisher","email":"workers-devprod@cloudflare.com"},"_npmVersion":"11.9.0","description":"","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/computer_0.0.0_1785332949636_0.2046386785285108","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-alpha.1":{"name":"@cloudflare/computer","version":"0.1.0-alpha.1","license":"MIT","_id":"@cloudflare/computer@0.1.0-alpha.1","maintainers":[{"name":"cf-ci-write","email":"npm-readonly@cloudflare.com"},{"name":"dash_service_account","email":"service-account@cloudflare-ui.com"},{"name":"wrangler-publisher","email":"workers-devprod@cloudflare.com"},{"name":"cfpriveng","email":"msang@cloudflare.com"},{"name":"cf-npm-publish","email":"ui-platform-production@cloudflare.com"}],"homepage":"https://github.com/cloudflare/computer#readme","bugs":{"url":"https://github.com/cloudflare/computer/issues"},"dist":{"shasum":"7289b606a6a7f54d5946714d588167a92a01c8e5","tarball":"https://registry.npmjs.org/@cloudflare/computer/-/computer-0.1.0-alpha.1.tgz","fileCount":40,"integrity":"sha512-oZ0SvnYeNqs5nt2Qe8CkakuPHjpEQUtY165iIQhaaBig4OR8Fvk7jKjLFZt7pf9D2evuu9stnIQdSTUvC/yB4w==","signatures":[{"sig":"MEQCIGeO6/WZoHq75plFvHaXX/bf7KAXgwhbUlCt8rpKoehkAiBQ8Cp45MooM+iiwHlpeO5s9W2I1QoVeIE9QHic5k+Byw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cloudflare%2fcomputer@0.1.0-alpha.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":135991475},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./git":{"types":"./dist/git.d.ts","import":"./dist/git.js"},"./tools":{"types":"./dist/tools/index.d.ts","import":"./dist/tools/index.js"},"./assets":{"types":"./dist/assets/index.d.ts","import":"./dist/assets/index.js"},"./artifacts":{"types":"./dist/artifacts/index.d.ts","import":"./dist/artifacts/index.js"},"./backends/worker":{"types":"./dist/backends/worker/index.d.ts","import":"./dist/backends/worker/index.js"},"./backends/container":{"types":"./dist/backends/container/index.d.ts","import":"./dist/backends/container/index.js"},"./observe/cloudflare":{"types":"./dist/observe/cloudflare.d.ts","import":"./dist/observe/cloudflare.js"}},"gitHead":"48aa155e2141f4f1349d9393affd8e9fca991d0e","private":false,"scripts":{"test":"vitest run && vitest run --config vitest.config.proxy.ts && vitest run --config vitest.config.worker-backend.ts && vitest run --config vitest.config.stub-soak.ts","build":"rolldown -c","prepare":"npm run build:shell-bundle","pretest":"npm run build:shell-bundle","prebuild":"npm run build:deps && npm run build:shell-bundle","typecheck":"tsc -p tsconfig.build.json --noEmit","build:deps":"npm run build --workspace @cloudflare/computer-rpc","pretypecheck":"npm run build:deps && npm run build:shell-bundle","test:harness":"./test-harness/run-harness.sh","bench:harness":"./test-harness/run-harness.sh bench","prepublishOnly":"npm run build && npm test","test:stub-soak":"vitest run --config vitest.config.stub-soak.ts","build:shell-bundle":"node ./src/backends/worker/script/build-bundle.mjs","test:worker-backend":"vitest run --config vitest.config.worker-backend.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e09e2ed7-4455-453f-9ac2-2d4ef45e0e39"}},"repository":{"url":"git+https://github.com/cloudflare/computer.git","type":"git","directory":"packages/computer"},"_npmVersion":"11.16.0","description":"Cloudflare Computer — a SQLite-backed virtual filesystem with sync to a container-side daemon (computerd).","directories":{},"_nodeVersion":"24.18.0","dependencies":{"capnweb":"^0.8.0","just-bash":"^3.0.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ai":"^7.0.0","zod":"^4.4.3","diff":"^9.0.0","memfs":"^4.57.6","vitest":"^4.1.7","esbuild":"^0.28.1","rolldown":"^1.0.2","wrangler":"^4.107.1","typescript":"^6.0.3","isomorphic-git":"^1.38.3","@cloudflare/dofs":"*","@platformatic/vfs":"^0.4.0","rolldown-plugin-dts":"^0.25.2","@cloudflare/computer-rpc":"*","@cloudflare/workers-types":"^4.20260616.1","@cloudflare/vitest-pool-workers":"^0.16.10"},"peerDependencies":{"ai":"^6.0.196 || ^7.0.0","zod":"^4.4.3","isomorphic-git":"^1.27.0","@platformatic/vfs":"*"},"peerDependenciesMeta":{"ai":{"optional":true},"zod":{"optional":true},"isomorphic-git":{"optional":true},"@platformatic/vfs":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/computer_0.1.0-alpha.1_1785418280297_0.43836057210871426","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@cloudflare/computer","version":"0.1.0","license":"MIT","_id":"@cloudflare/computer@0.1.0","maintainers":[{"name":"cf-ci-write","email":"npm-readonly@cloudflare.com"},{"name":"dash_service_account","email":"service-account@cloudflare-ui.com"},{"name":"wrangler-publisher","email":"workers-devprod@cloudflare.com"},{"name":"cfpriveng","email":"msang@cloudflare.com"},{"name":"cf-npm-publish","email":"ui-platform-production@cloudflare.com"}],"homepage":"https://github.com/cloudflare/computer#readme","bugs":{"url":"https://github.com/cloudflare/computer/issues"},"dist":{"shasum":"7612f4b2967c37ee63434f7754a1c1402fbf661b","tarball":"https://registry.npmjs.org/@cloudflare/computer/-/computer-0.1.0.tgz","fileCount":46,"integrity":"sha512-2aNIhgdD4TXq92CbM9ciW7TZleivXAB7le5nEymjtnt5kl9JpiC7iADw/bNPfwpsuvNfNj+TgFQdQKs2CP35vQ==","signatures":[{"sig":"MEQCIHnmxit1VIS7RItDx7unt/g5Fuxc7h5CRxAHCQYQ+89uAiAmtrzCznwyfSw+PmONrxZCgtThJvoX8e5Vrcih1Iw6eQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cloudflare%2fcomputer@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":138430165},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./git":{"types":"./dist/git.d.ts","import":"./dist/git.js"},"./tools":{"types":"./dist/tools/index.d.ts","import":"./dist/tools/index.js"},"./assets":{"types":"./dist/assets/index.d.ts","import":"./dist/assets/index.js"},"./artifacts":{"types":"./dist/artifacts/index.d.ts","import":"./dist/artifacts/index.js"},"./backends/container":{"types":"./dist/backends/container/index.d.ts","import":"./dist/backends/container/index.js"},"./observe/cloudflare":{"types":"./dist/observe/cloudflare.d.ts","import":"./dist/observe/cloudflare.js"},"./backends/worker-shell":{"types":"./dist/backends/worker-shell/index.d.ts","import":"./dist/backends/worker-shell/index.js"},"./backends/worker-javascript":{"types":"./dist/backends/worker-javascript/index.d.ts","import":"./dist/backends/worker-javascript/index.js"}},"gitHead":"6f96d50c382ca4447e3587a02358fb03136fd9ff","private":false,"scripts":{"test":"vitest run && vitest run --config vitest.config.proxy.ts && vitest run --config vitest.config.worker-backend.ts && vitest run --config vitest.config.script-runner.ts && vitest run --config vitest.config.stub-soak.ts","build":"rolldown -c","prepare":"npm run build:shell-bundle","pretest":"npm run build:shell-bundle","prebuild":"npm run build:deps && npm run build:shell-bundle","test:code":"vitest run --config vitest.config.script-runner.ts","typecheck":"tsc -p tsconfig.build.json --noEmit","build:deps":"npm run build --workspace @cloudflare/computer-rpc","pretypecheck":"npm run build:deps && npm run build:shell-bundle","test:harness":"./test-harness/run-harness.sh","bench:harness":"./test-harness/run-harness.sh bench","prepublishOnly":"npm run build && npm test","test:stub-soak":"vitest run --config vitest.config.stub-soak.ts","build:shell-bundle":"node ./src/backends/worker-shell/script/build-bundle.mjs","test:worker-backend":"vitest run --config vitest.config.worker-backend.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e09e2ed7-4455-453f-9ac2-2d4ef45e0e39"}},"repository":{"url":"git+https://github.com/cloudflare/computer.git","type":"git","directory":"packages/computer"},"_npmVersion":"11.16.0","description":"Cloudflare Computer — a SQLite-backed virtual filesystem with sync to a container-side daemon (computerd).","directories":{},"_nodeVersion":"24.18.0","dependencies":{"acorn":"^8.17.0","capnweb":"^0.8.0","just-bash":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ai":"^7.0.0","zod":"^4.4.3","diff":"^9.0.0","memfs":"^4.57.6","vitest":"^4.1.7","esbuild":"^0.28.1","rolldown":"^1.0.2","wrangler":"^4.107.1","typescript":"^6.0.3","isomorphic-git":"^1.38.3","@cloudflare/dofs":"*","@platformatic/vfs":"^0.4.0","rolldown-plugin-dts":"^0.25.2","@cloudflare/computer-rpc":"*","@cloudflare/workers-types":"^4.20260616.1","@cloudflare/vitest-pool-workers":"^0.16.10"},"peerDependencies":{"ai":"^6.0.196 || ^7.0.0","zod":"^4.4.3","@platformatic/vfs":"*"},"peerDependenciesMeta":{"ai":{"optional":true},"zod":{"optional":true},"@platformatic/vfs":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/computer_0.1.0_1785759560164_0.02444141357903984","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@cloudflare/computer","version":"0.1.1","license":"MIT","_id":"@cloudflare/computer@0.1.1","maintainers":[{"name":"cf-ci-write","email":"npm-readonly@cloudflare.com"},{"name":"dash_service_account","email":"service-account@cloudflare-ui.com"},{"name":"wrangler-publisher","email":"workers-devprod@cloudflare.com"},{"name":"cfpriveng","email":"msang@cloudflare.com"},{"name":"cf-npm-publish","email":"ui-platform-production@cloudflare.com"}],"homepage":"https://github.com/cloudflare/computer#readme","bugs":{"url":"https://github.com/cloudflare/computer/issues"},"dist":{"shasum":"cb32c2395ed091e8e8185404a3d5a80177601060","tarball":"https://registry.npmjs.org/@cloudflare/computer/-/computer-0.1.1.tgz","fileCount":45,"integrity":"sha512-4xWx5yX+y5MyNhtIK9N6LcyBsbzGdaxGbhfZdh51zRWRfdkI8OhL2ftBCReqaR6HD7we+Yg0rEihwBETrmkbmg==","signatures":[{"sig":"MEUCIFWXHQ1vKrjAZWyP5bo2aj/9K3iERSCAUvS0LKfqH2TEAiEAx9VsQ7L3G9vcZBqEXDtjyoT9kIwm67IPca5E6e6xoFc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cloudflare%2fcomputer@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11879888},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./git":{"types":"./dist/git.d.ts","import":"./dist/git.js"},"./tools":{"types":"./dist/tools/index.d.ts","import":"./dist/tools/index.js"},"./assets":{"types":"./dist/assets/index.d.ts","import":"./dist/assets/index.js"},"./artifacts":{"types":"./dist/artifacts/index.d.ts","import":"./dist/artifacts/index.js"},"./backends/container":{"types":"./dist/backends/container/index.d.ts","import":"./dist/backends/container/index.js"},"./observe/cloudflare":{"types":"./dist/observe/cloudflare.d.ts","import":"./dist/observe/cloudflare.js"},"./backends/worker-shell":{"types":"./dist/backends/worker-shell/index.d.ts","import":"./dist/backends/worker-shell/index.js"},"./backends/worker-javascript":{"types":"./dist/backends/worker-javascript/index.d.ts","import":"./dist/backends/worker-javascript/index.js"}},"gitHead":"63d363632e558f7e077794988d36ed75017c2a62","private":false,"scripts":{"test":"vitest run && vitest run --config vitest.config.proxy.ts && vitest run --config vitest.config.worker-backend.ts && vitest run --config vitest.config.script-runner.ts && vitest run --config vitest.config.stub-soak.ts","build":"rolldown -c","prepare":"npm run build:shell-bundle","pretest":"npm run build:shell-bundle","prebuild":"npm run build:deps && npm run build:shell-bundle","test:code":"vitest run --config vitest.config.script-runner.ts","typecheck":"tsc -p tsconfig.build.json --noEmit","build:deps":"npm run build --workspace @cloudflare/computer-rpc","pretypecheck":"npm run build:deps && npm run build:shell-bundle","test:harness":"./test-harness/run-harness.sh","bench:harness":"./test-harness/run-harness.sh bench","prepublishOnly":"npm run build && npm test","test:stub-soak":"vitest run --config vitest.config.stub-soak.ts","build:shell-bundle":"node ./src/backends/worker-shell/script/build-bundle.mjs","test:worker-backend":"vitest run --config vitest.config.worker-backend.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e09e2ed7-4455-453f-9ac2-2d4ef45e0e39"}},"repository":{"url":"git+https://github.com/cloudflare/computer.git","type":"git","directory":"packages/computer"},"_npmVersion":"11.16.0","description":"Cloudflare Computer — a SQLite-backed virtual filesystem with sync to a container-side daemon (computerd).","directories":{},"_nodeVersion":"24.18.0","dependencies":{"acorn":"^8.17.0","capnweb":"^0.8.0","just-bash":"^3.0.1"},"publishConfig":{"tag":"unreleased"},"_hasShrinkwrap":false,"devDependencies":{"ai":"^7.0.0","zod":"^4.4.3","diff":"^9.0.0","memfs":"^4.57.6","vitest":"^4.1.7","esbuild":"^0.28.1","rolldown":"^1.0.2","wrangler":"^4.107.1","typescript":"^6.0.3","isomorphic-git":"^1.38.3","@cloudflare/dofs":"*","@platformatic/vfs":"^0.4.0","rolldown-plugin-dts":"^0.25.2","@cloudflare/computer-rpc":"*","@cloudflare/workers-types":"^4.20260616.1","@cloudflare/vitest-pool-workers":"^0.16.10"},"peerDependencies":{"ai":"^6.0.196 || ^7.0.0","zod":"^4.4.3","@platformatic/vfs":"*"},"peerDependenciesMeta":{"ai":{"optional":true},"zod":{"optional":true},"@platformatic/vfs":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/computer_0.1.1_1785762082269_0.5529557590603031","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@cloudflare/computer","version":"0.2.0","license":"MIT","_id":"@cloudflare/computer@0.2.0","maintainers":[{"name":"cf-ci-write","email":"npm-readonly@cloudflare.com"},{"name":"dash_service_account","email":"service-account@cloudflare-ui.com"},{"name":"wrangler-publisher","email":"workers-devprod@cloudflare.com"},{"name":"cfpriveng","email":"msang@cloudflare.com"},{"name":"cf-npm-publish","email":"ui-platform-production@cloudflare.com"}],"homepage":"https://github.com/cloudflare/computer#readme","bugs":{"url":"https://github.com/cloudflare/computer/issues"},"dist":{"shasum":"81ee909beea00ae0b004a6964d2b79a959c5f16d","tarball":"https://registry.npmjs.org/@cloudflare/computer/-/computer-0.2.0.tgz","fileCount":80,"integrity":"sha512-J0LQngfZYsmHofamSJfCch6lfqRaa6dnK1qh4jUrvUoix0ggCyR+ndtu1upFRnQVp0EhrvlKuxyGxKt6ApIh3A==","signatures":[{"sig":"MEQCIHa5UfuFqsYZIvBX+8n2f/YuwxwF2FJMdePBut/1N+mzAiBcqCk6F+YULx5uRM+4LKvZkioiGB+WL8rHa9jfcRnlXw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cloudflare%2fcomputer@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10710260},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./git":{"types":"./dist/git.d.ts","import":"./dist/git.js"},"./tools":{"types":"./dist/tools/index.d.ts","import":"./dist/tools/index.js"},"./assets":{"types":"./dist/assets/index.d.ts","import":"./dist/assets/index.js"},"./shell/jq":{"types":"./dist/backends/worker-shell/shell/jq.d.ts","default":"./dist/backends/worker-shell/shell/jq.js"},"./shell/yq":{"types":"./dist/backends/worker-shell/shell/yq.d.ts","default":"./dist/backends/worker-shell/shell/yq.js"},"./artifacts":{"types":"./dist/artifacts/index.d.ts","import":"./dist/artifacts/index.js"},"./shell/xan":{"types":"./dist/backends/worker-shell/shell/xan.d.ts","default":"./dist/backends/worker-shell/shell/xan.js"},"./shell/core":{"types":"./dist/backends/worker-shell/shell/core.d.ts","default":"./dist/backends/worker-shell/shell/core.js"},"./shell/curl":{"types":"./dist/backends/worker-shell/shell/curl.d.ts","default":"./dist/backends/worker-shell/shell/curl.js"},"./shell/file":{"types":"./dist/backends/worker-shell/shell/file.d.ts","default":"./dist/backends/worker-shell/shell/file.js"},"./shell/python":{"types":"./dist/backends/worker-shell/shell/python.d.ts","default":"./dist/backends/worker-shell/shell/python.js"},"./shell/sqlite":{"types":"./dist/backends/worker-shell/shell/sqlite.d.ts","default":"./dist/backends/worker-shell/shell/sqlite.js"},"./shell/js-exec":{"types":"./dist/backends/worker-shell/shell/js-exec.d.ts","default":"./dist/backends/worker-shell/shell/js-exec.js"},"./backends/container":{"types":"./dist/backends/container/index.d.ts","import":"./dist/backends/container/index.js"},"./observe/cloudflare":{"types":"./dist/observe/cloudflare.d.ts","import":"./dist/observe/cloudflare.js"},"./backends/worker-shell":{"types":"./dist/backends/worker-shell/index.d.ts","import":"./dist/backends/worker-shell/index.js"},"./shell/html-to-markdown":{"types":"./dist/backends/worker-shell/shell/html-to-markdown.d.ts","default":"./dist/backends/worker-shell/shell/html-to-markdown.js"},"./backends/worker-javascript":{"types":"./dist/backends/worker-javascript/index.d.ts","import":"./dist/backends/worker-javascript/index.js"}},"gitHead":"92ddd74383879dd3d0b5f6270f41247415b60552","private":false,"scripts":{"test":"vitest run && vitest run --config vitest.config.proxy.ts && vitest run --config vitest.config.worker-backend.ts && vitest run --config vitest.config.script-runner.ts && vitest run --config vitest.config.stub-soak.ts","build":"rolldown -c","prepare":"npm run build:shell-bundle","pretest":"npm run build:shell-bundle","prebuild":"npm run build:deps && npm run build:shell-bundle","test:code":"vitest run --config vitest.config.script-runner.ts","typecheck":"tsc -p tsconfig.build.json --noEmit","build:deps":"npm run build --workspace @cloudflare/computer-rpc","pretypecheck":"npm run build:deps && npm run build:shell-bundle","test:harness":"./test-harness/run-harness.sh","bench:harness":"./test-harness/run-harness.sh bench","prepublishOnly":"npm run build && npm test","test:stub-soak":"vitest run --config vitest.config.stub-soak.ts","build:shell-bundle":"node ./src/backends/worker-shell/script/build-bundle.mjs","test:worker-backend":"vitest run --config vitest.config.worker-backend.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e09e2ed7-4455-453f-9ac2-2d4ef45e0e39"}},"repository":{"url":"git+https://github.com/cloudflare/computer.git","type":"git","directory":"packages/computer"},"_npmVersion":"11.17.0","description":"Cloudflare Computer — a SQLite-backed virtual filesystem with sync to a container-side daemon (computerd).","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"acorn":"^8.17.0","capnweb":"^0.8.0","just-bash":"^3.0.1"},"publishConfig":{"tag":"unreleased"},"_hasShrinkwrap":false,"devDependencies":{"ai":"^7.0.0","zod":"^4.4.3","diff":"^9.0.0","memfs":"^4.57.6","vitest":"^4.1.7","esbuild":"^0.28.1","rolldown":"^1.0.2","wrangler":"^4.107.1","typescript":"^6.0.3","isomorphic-git":"^1.38.3","@cloudflare/dofs":"*","@platformatic/vfs":"^0.4.0","rolldown-plugin-dts":"^0.25.2","@cloudflare/computer-rpc":"*","@cloudflare/workers-types":"^4.20260616.1","@cloudflare/vitest-pool-workers":"^0.16.10"},"peerDependencies":{"ai":"^6.0.196 || ^7.0.0","zod":"^4.4.3","@platformatic/vfs":"*"},"peerDependenciesMeta":{"ai":{"optional":true},"zod":{"optional":true},"@platformatic/vfs":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/computer_0.2.0_1786467162082_0.9986822861724514","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@cloudflare/computer","version":"0.2.1","license":"MIT","_id":"@cloudflare/computer@0.2.1","maintainers":[{"name":"cf-ci-write","email":"npm-readonly@cloudflare.com"},{"name":"dash_service_account","email":"service-account@cloudflare-ui.com"},{"name":"wrangler-publisher","email":"workers-devprod@cloudflare.com"},{"name":"cfpriveng","email":"msang@cloudflare.com"},{"name":"cf-npm-publish","email":"ui-platform-production@cloudflare.com"}],"homepage":"https://github.com/cloudflare/computer#readme","bugs":{"url":"https://github.com/cloudflare/computer/issues"},"dist":{"shasum":"de12dfecde8083cee2854247f88948df8b59c95a","tarball":"https://registry.npmjs.org/@cloudflare/computer/-/computer-0.2.1.tgz","fileCount":80,"integrity":"sha512-jh0pa1csAExPItUYzrzBrZO1vCBjsQ6jX+aunrnKe2VSC9i8mEziQYZUL3IZId4GpceRL+v8HIzVr4kjbmQXPw==","signatures":[{"sig":"MEUCIBG7TFkrhsgWTOH/jdPnSnMvbpPEAHsneZQc8SO6f46eAiEAxRfaYTNIUzi1QCY3lPXuS2LFKRVJ92z1L+quuGi6DhM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cloudflare%2fcomputer@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10755639},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./git":{"types":"./dist/git.d.ts","import":"./dist/git.js"},"./tools":{"types":"./dist/tools/index.d.ts","import":"./dist/tools/index.js"},"./assets":{"types":"./dist/assets/index.d.ts","import":"./dist/assets/index.js"},"./shell/jq":{"types":"./dist/backends/worker-shell/shell/jq.d.ts","default":"./dist/backends/worker-shell/shell/jq.js"},"./shell/yq":{"types":"./dist/backends/worker-shell/shell/yq.d.ts","default":"./dist/backends/worker-shell/shell/yq.js"},"./artifacts":{"types":"./dist/artifacts/index.d.ts","import":"./dist/artifacts/index.js"},"./shell/xan":{"types":"./dist/backends/worker-shell/shell/xan.d.ts","default":"./dist/backends/worker-shell/shell/xan.js"},"./shell/core":{"types":"./dist/backends/worker-shell/shell/core.d.ts","default":"./dist/backends/worker-shell/shell/core.js"},"./shell/curl":{"types":"./dist/backends/worker-shell/shell/curl.d.ts","default":"./dist/backends/worker-shell/shell/curl.js"},"./shell/file":{"types":"./dist/backends/worker-shell/shell/file.d.ts","default":"./dist/backends/worker-shell/shell/file.js"},"./shell/python":{"types":"./dist/backends/worker-shell/shell/python.d.ts","default":"./dist/backends/worker-shell/shell/python.js"},"./shell/sqlite":{"types":"./dist/backends/worker-shell/shell/sqlite.d.ts","default":"./dist/backends/worker-shell/shell/sqlite.js"},"./shell/js-exec":{"types":"./dist/backends/worker-shell/shell/js-exec.d.ts","default":"./dist/backends/worker-shell/shell/js-exec.js"},"./backends/container":{"types":"./dist/backends/container/index.d.ts","import":"./dist/backends/container/index.js"},"./observe/cloudflare":{"types":"./dist/observe/cloudflare.d.ts","import":"./dist/observe/cloudflare.js"},"./backends/worker-shell":{"types":"./dist/backends/worker-shell/index.d.ts","import":"./dist/backends/worker-shell/index.js"},"./shell/html-to-markdown":{"types":"./dist/backends/worker-shell/shell/html-to-markdown.d.ts","default":"./dist/backends/worker-shell/shell/html-to-markdown.js"},"./backends/worker-javascript":{"types":"./dist/backends/worker-javascript/index.d.ts","import":"./dist/backends/worker-javascript/index.js"}},"gitHead":"849759bbfc23eafbe989b6b158e31ef60a4afb68","private":false,"scripts":{"test":"vitest run && vitest run --config vitest.config.proxy.ts && vitest run --config vitest.config.worker-backend.ts && vitest run --config vitest.config.script-runner.ts && vitest run --config vitest.config.stub-soak.ts","build":"rolldown -c","prepare":"npm run build:shell-bundle","pretest":"npm run build:shell-bundle","prebuild":"npm run build:deps && npm run build:shell-bundle","test:code":"vitest run --config vitest.config.script-runner.ts","typecheck":"tsc -p tsconfig.build.json --noEmit","build:deps":"npm run build --workspace @cloudflare/computer-rpc","pretypecheck":"npm run build:deps && npm run build:shell-bundle","test:harness":"./test-harness/run-harness.sh","bench:harness":"./test-harness/run-harness.sh bench","prepublishOnly":"npm run build && npm test","test:stub-soak":"vitest run --config vitest.config.stub-soak.ts","build:shell-bundle":"node ./src/backends/worker-shell/script/build-bundle.mjs","test:worker-backend":"vitest run --config vitest.config.worker-backend.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e09e2ed7-4455-453f-9ac2-2d4ef45e0e39"}},"repository":{"url":"git+https://github.com/cloudflare/computer.git","type":"git","directory":"packages/computer"},"_npmVersion":"11.17.0","description":"Cloudflare Computer — a SQLite-backed virtual filesystem with sync to a container-side daemon (computerd).","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"acorn":"^8.17.0","capnweb":"^0.8.0","just-bash":"^3.0.1"},"publishConfig":{"tag":"unreleased"},"_hasShrinkwrap":false,"devDependencies":{"ai":"^7.0.0","zod":"^4.4.3","diff":"^9.0.0","memfs":"^4.57.6","vitest":"^4.1.7","esbuild":"^0.28.1","rolldown":"^1.0.2","wrangler":"^4.107.1","typescript":"^6.0.3","isomorphic-git":"^1.38.3","@cloudflare/dofs":"*","@platformatic/vfs":"^0.4.0","rolldown-plugin-dts":"^0.25.2","@cloudflare/computer-rpc":"*","@cloudflare/workers-types":"^4.20260616.1","@cloudflare/vitest-pool-workers":"^0.16.10"},"peerDependencies":{"ai":"^6.0.196 || ^7.0.0","zod":"^4.4.3","@platformatic/vfs":"*"},"peerDependenciesMeta":{"ai":{"optional":true},"zod":{"optional":true},"@platformatic/vfs":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/computer_0.2.1_1786963971204_0.20664687233947832","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@cloudflare/computer","version":"0.3.0","license":"MIT","_id":"@cloudflare/computer@0.3.0","maintainers":[{"name":"cf-ci-write","email":"npm-readonly@cloudflare.com"},{"name":"dash_service_account","email":"service-account@cloudflare-ui.com"},{"name":"wrangler-publisher","email":"workers-devprod@cloudflare.com"},{"name":"cf-npm-publish","email":"ui-platform-production@cloudflare.com"}],"homepage":"https://github.com/cloudflare/computer#readme","bugs":{"url":"https://github.com/cloudflare/computer/issues"},"dist":{"shasum":"15c468327edd13db291764048f460aa039b67e18","tarball":"https://registry.npmjs.org/@cloudflare/computer/-/computer-0.3.0.tgz","fileCount":80,"integrity":"sha512-LNJQesNYFSRRpemPe9HNarq/vb27ItUDd1JV7wDQ5b36zg6O/Xx/WjkaOhaSX5/eWNoQGLzqvvXyBHoRrLIcaw==","signatures":[{"sig":"MEUCIDbKKFFj4y/ScP8sZ4Fs7t4s2wliJPDAuf/C1bZeYBxkAiEAiMc/qrPRkotjQoIlW1+jEOwDVbh04JhRniU9a4Kw9bc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCAkr434Pz5XfDvqU4L9gRs1ut5oj7pLMVjrOhsVpFwWwIgQTZvAsoCnsJjJYfIwXKPMPu6QfWljBo1DgUThaw32tQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cloudflare%2fcomputer@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10980334},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./git":{"types":"./dist/git.d.ts","import":"./dist/git.js"},"./tools":{"types":"./dist/tools/index.d.ts","import":"./dist/tools/index.js"},"./assets":{"types":"./dist/assets/index.d.ts","import":"./dist/assets/index.js"},"./shell/jq":{"types":"./dist/backends/worker-shell/shell/jq.d.ts","default":"./dist/backends/worker-shell/shell/jq.js"},"./shell/yq":{"types":"./dist/backends/worker-shell/shell/yq.d.ts","default":"./dist/backends/worker-shell/shell/yq.js"},"./artifacts":{"types":"./dist/artifacts/index.d.ts","import":"./dist/artifacts/index.js"},"./shell/xan":{"types":"./dist/backends/worker-shell/shell/xan.d.ts","default":"./dist/backends/worker-shell/shell/xan.js"},"./shell/core":{"types":"./dist/backends/worker-shell/shell/core.d.ts","default":"./dist/backends/worker-shell/shell/core.js"},"./shell/curl":{"types":"./dist/backends/worker-shell/shell/curl.d.ts","default":"./dist/backends/worker-shell/shell/curl.js"},"./shell/file":{"types":"./dist/backends/worker-shell/shell/file.d.ts","default":"./dist/backends/worker-shell/shell/file.js"},"./shell/python":{"types":"./dist/backends/worker-shell/shell/python.d.ts","default":"./dist/backends/worker-shell/shell/python.js"},"./shell/sqlite":{"types":"./dist/backends/worker-shell/shell/sqlite.d.ts","default":"./dist/backends/worker-shell/shell/sqlite.js"},"./shell/js-exec":{"types":"./dist/backends/worker-shell/shell/js-exec.d.ts","default":"./dist/backends/worker-shell/shell/js-exec.js"},"./backends/container":{"types":"./dist/backends/container/index.d.ts","import":"./dist/backends/container/index.js"},"./observe/cloudflare":{"types":"./dist/observe/cloudflare.d.ts","import":"./dist/observe/cloudflare.js"},"./backends/worker-shell":{"types":"./dist/backends/worker-shell/index.d.ts","import":"./dist/backends/worker-shell/index.js"},"./shell/html-to-markdown":{"types":"./dist/backends/worker-shell/shell/html-to-markdown.d.ts","default":"./dist/backends/worker-shell/shell/html-to-markdown.js"},"./backends/worker-javascript":{"types":"./dist/backends/worker-javascript/index.d.ts","import":"./dist/backends/worker-javascript/index.js"}},"gitHead":"8d8cbac36bed96147a08e1d6cb4565581e65cbd3","private":false,"scripts":{"test":"vitest run && vitest run --config vitest.config.proxy.ts && vitest run --config vitest.config.worker-backend.ts && vitest run --config vitest.config.script-runner.ts && vitest run --config vitest.config.stub-soak.ts","build":"rolldown -c","prepare":"npm run build:shell-bundle","pretest":"npm run build:shell-bundle","prebuild":"npm run build:deps && npm run build:shell-bundle","test:code":"vitest run --config vitest.config.script-runner.ts","typecheck":"tsc -p tsconfig.build.json --noEmit","build:deps":"npm run build --workspace @cloudflare/computer-rpc","pretypecheck":"npm run build:deps && npm run build:shell-bundle","test:harness":"./test-harness/run-harness.sh","bench:harness":"./test-harness/run-harness.sh bench","prepublishOnly":"npm run build && npm test","test:stub-soak":"vitest run --config vitest.config.stub-soak.ts","build:shell-bundle":"node ./src/backends/worker-shell/script/build-bundle.mjs","test:worker-backend":"vitest run --config vitest.config.worker-backend.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e09e2ed7-4455-453f-9ac2-2d4ef45e0e39"}},"repository":{"url":"git+https://github.com/cloudflare/computer.git","type":"git","directory":"packages/computer"},"_npmVersion":"11.19.0","description":"Cloudflare Computer — a SQLite-backed virtual filesystem with sync to a container-side daemon (computerd).","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"acorn":"^8.17.0","capnweb":"^0.10.0","just-bash":"^3.0.1"},"publishConfig":{"tag":"unreleased"},"_hasShrinkwrap":false,"devDependencies":{"ai":"^7.0.0","zod":"^4.4.3","diff":"^9.0.0","memfs":"^4.57.6","vitest":"^4.1.11","esbuild":"^0.28.1","rolldown":"^1.0.2","wrangler":"^4.130.0","typescript":"^6.0.3","isomorphic-git":"^1.38.3","@cloudflare/dofs":"*","@platformatic/vfs":"^0.4.0","rolldown-plugin-dts":"^0.25.2","@cloudflare/computer-rpc":"*","@cloudflare/workers-types":"^4.20260616.1","@cloudflare/vitest-pool-workers":"^0.22.0"},"peerDependencies":{"ai":"^6.0.196 || ^7.0.0","zod":"^4.4.3","@platformatic/vfs":"*"},"peerDependenciesMeta":{"ai":{"optional":true},"zod":{"optional":true},"@platformatic/vfs":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/computer_0.3.0_1789144877422_0.9611304218170731","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@cloudflare/computer","version":"0.3.1","license":"MIT","_id":"@cloudflare/computer@0.3.1","maintainers":[{"name":"cf-ci-write","email":"npm-readonly@cloudflare.com"},{"name":"dash_service_account","email":"service-account@cloudflare-ui.com"},{"name":"wrangler-publisher","email":"workers-devprod@cloudflare.com"},{"name":"cf-npm-publish","email":"ui-platform-production@cloudflare.com"}],"homepage":"https://github.com/cloudflare/computer#readme","bugs":{"url":"https://github.com/cloudflare/computer/issues"},"dist":{"shasum":"32f074a4e8d76db63e46297e2d4292a1d8e0af74","tarball":"https://registry.npmjs.org/@cloudflare/computer/-/computer-0.3.1.tgz","fileCount":80,"integrity":"sha512-am79tH9IukXidlJZTXeMAs7rvy4KgdlbBoOM1HgLBdxrlpeP1aQf2YLvXhxKGzSh6PkV/NmxSz0R2BcwSoRzPA==","signatures":[{"sig":"MEYCIQCXZxIsSnHtOoZdxTGPCY/bpO969J8I7KL4uNWGvUzRuwIhAIbAIBvuEnIv7RogKCZOcwGxjutiydrZfV5YrQ0HjUGq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCxSqhSJ3Tocpe15tuAiCXdMROLL1mop4Ftd7YWbnP5RgIgfWspuPMGtN9o3owiCBaDWqbZmKFVkBIokSVWDWucHi4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cloudflare%2fcomputer@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11004061},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./git":{"types":"./dist/git.d.ts","import":"./dist/git.js"},"./tools":{"types":"./dist/tools/index.d.ts","import":"./dist/tools/index.js"},"./assets":{"types":"./dist/assets/index.d.ts","import":"./dist/assets/index.js"},"./shell/jq":{"types":"./dist/backends/worker-shell/shell/jq.d.ts","default":"./dist/backends/worker-shell/shell/jq.js"},"./shell/yq":{"types":"./dist/backends/worker-shell/shell/yq.d.ts","default":"./dist/backends/worker-shell/shell/yq.js"},"./artifacts":{"types":"./dist/artifacts/index.d.ts","import":"./dist/artifacts/index.js"},"./shell/xan":{"types":"./dist/backends/worker-shell/shell/xan.d.ts","default":"./dist/backends/worker-shell/shell/xan.js"},"./shell/core":{"types":"./dist/backends/worker-shell/shell/core.d.ts","default":"./dist/backends/worker-shell/shell/core.js"},"./shell/curl":{"types":"./dist/backends/worker-shell/shell/curl.d.ts","default":"./dist/backends/worker-shell/shell/curl.js"},"./shell/file":{"types":"./dist/backends/worker-shell/shell/file.d.ts","default":"./dist/backends/worker-shell/shell/file.js"},"./shell/python":{"types":"./dist/backends/worker-shell/shell/python.d.ts","default":"./dist/backends/worker-shell/shell/python.js"},"./shell/sqlite":{"types":"./dist/backends/worker-shell/shell/sqlite.d.ts","default":"./dist/backends/worker-shell/shell/sqlite.js"},"./shell/js-exec":{"types":"./dist/backends/worker-shell/shell/js-exec.d.ts","default":"./dist/backends/worker-shell/shell/js-exec.js"},"./backends/container":{"types":"./dist/backends/container/index.d.ts","import":"./dist/backends/container/index.js"},"./observe/cloudflare":{"types":"./dist/observe/cloudflare.d.ts","import":"./dist/observe/cloudflare.js"},"./backends/worker-shell":{"types":"./dist/backends/worker-shell/index.d.ts","import":"./dist/backends/worker-shell/index.js"},"./shell/html-to-markdown":{"types":"./dist/backends/worker-shell/shell/html-to-markdown.d.ts","default":"./dist/backends/worker-shell/shell/html-to-markdown.js"},"./backends/worker-javascript":{"types":"./dist/backends/worker-javascript/index.d.ts","import":"./dist/backends/worker-javascript/index.js"}},"gitHead":"6444fe50d11d9b1a3230a65030f9474a7f12ca08","private":false,"scripts":{"test":"vitest run && vitest run --config vitest.config.proxy.ts && vitest run --config vitest.config.worker-backend.ts && vitest run --config vitest.config.script-runner.ts && vitest run --config vitest.config.stub-soak.ts","build":"rolldown -c","prepare":"npm run build:shell-bundle","pretest":"npm run build:shell-bundle","prebuild":"npm run build:deps && npm run build:shell-bundle","test:code":"vitest run --config vitest.config.script-runner.ts","typecheck":"tsc -p tsconfig.build.json --noEmit","build:deps":"npm run build --workspace @cloudflare/computer-rpc","pretypecheck":"npm run build:deps && npm run build:shell-bundle","test:harness":"./test-harness/run-harness.sh","bench:harness":"./test-harness/run-harness.sh bench","prepublishOnly":"npm run build && npm test","test:stub-soak":"vitest run --config vitest.config.stub-soak.ts","build:shell-bundle":"node ./src/backends/worker-shell/script/build-bundle.mjs","test:worker-backend":"vitest run --config vitest.config.worker-backend.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e09e2ed7-4455-453f-9ac2-2d4ef45e0e39"}},"repository":{"url":"git+https://github.com/cloudflare/computer.git","type":"git","directory":"packages/computer"},"_npmVersion":"11.19.0","description":"Cloudflare Computer — a SQLite-backed virtual filesystem with sync to a container-side daemon (computerd).","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"acorn":"^8.17.0","capnweb":"^0.10.0","just-bash":"^3.0.1"},"publishConfig":{"tag":"unreleased"},"_hasShrinkwrap":false,"devDependencies":{"ai":"^7.0.0","zod":"^4.4.3","diff":"^9.0.0","memfs":"^4.57.6","vitest":"^4.1.11","esbuild":"^0.28.1","rolldown":"^1.0.2","wrangler":"^4.130.0","typescript":"^6.0.3","isomorphic-git":"^1.38.3","@cloudflare/dofs":"*","@platformatic/vfs":"^0.4.0","rolldown-plugin-dts":"^0.25.2","@cloudflare/computer-rpc":"*","@cloudflare/workers-types":"^4.20260616.1","@cloudflare/vitest-pool-workers":"^0.22.0"},"peerDependencies":{"ai":"^6.0.196 || ^7.0.0","zod":"^4.4.3","@platformatic/vfs":"*"},"peerDependenciesMeta":{"ai":{"optional":true},"zod":{"optional":true},"@platformatic/vfs":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/computer_0.3.1_1789732537773_0.2865684253712273","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@cloudflare/computer","version":"0.3.2","license":"MIT","_id":"@cloudflare/computer@0.3.2","maintainers":[{"name":"cf-ci-write","email":"npm-readonly@cloudflare.com"},{"name":"dash_service_account","email":"service-account@cloudflare-ui.com"},{"name":"wrangler-publisher","email":"workers-devprod@cloudflare.com"},{"name":"cf-npm-publish","email":"ui-platform-production@cloudflare.com"}],"homepage":"https://github.com/cloudflare/computer#readme","bugs":{"url":"https://github.com/cloudflare/computer/issues"},"dist":{"shasum":"9fbc74a38fe00459b8f88d03e2814bdb6c632a7a","tarball":"https://registry.npmjs.org/@cloudflare/computer/-/computer-0.3.2.tgz","fileCount":80,"integrity":"sha512-HsNI+RHU7Bqso9NF8p/e2lAmccESouKEa/bWEYuEX+d9blpIvcUWMPhozrdoilHma0l98/4+eKK0Aw+bOt5W8g==","signatures":[{"sig":"MEUCIElTVGfvjWda/BeZf55VFzrieJdgUDMMtOFxB0WEJr/RAiEAxMFePxbvfWoRtb761c4cSw0f+IkoRLR/YO4rAC0g/Jo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIG0shvGrKGkrrmt01EPVAudTi6zqe18woy/ihBxTnymOAiAX46d5r1vbHPnSmjKWwdRoCEFBXnLzmYBhIJcqdP93ng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cloudflare%2fcomputer@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11005892},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./git":{"types":"./dist/git.d.ts","import":"./dist/git.js"},"./tools":{"types":"./dist/tools/index.d.ts","import":"./dist/tools/index.js"},"./assets":{"types":"./dist/assets/index.d.ts","import":"./dist/assets/index.js"},"./shell/jq":{"types":"./dist/backends/worker-shell/shell/jq.d.ts","default":"./dist/backends/worker-shell/shell/jq.js"},"./shell/yq":{"types":"./dist/backends/worker-shell/shell/yq.d.ts","default":"./dist/backends/worker-shell/shell/yq.js"},"./artifacts":{"types":"./dist/artifacts/index.d.ts","import":"./dist/artifacts/index.js"},"./shell/xan":{"types":"./dist/backends/worker-shell/shell/xan.d.ts","default":"./dist/backends/worker-shell/shell/xan.js"},"./shell/core":{"types":"./dist/backends/worker-shell/shell/core.d.ts","default":"./dist/backends/worker-shell/shell/core.js"},"./shell/curl":{"types":"./dist/backends/worker-shell/shell/curl.d.ts","default":"./dist/backends/worker-shell/shell/curl.js"},"./shell/file":{"types":"./dist/backends/worker-shell/shell/file.d.ts","default":"./dist/backends/worker-shell/shell/file.js"},"./shell/python":{"types":"./dist/backends/worker-shell/shell/python.d.ts","default":"./dist/backends/worker-shell/shell/python.js"},"./shell/sqlite":{"types":"./dist/backends/worker-shell/shell/sqlite.d.ts","default":"./dist/backends/worker-shell/shell/sqlite.js"},"./shell/js-exec":{"types":"./dist/backends/worker-shell/shell/js-exec.d.ts","default":"./dist/backends/worker-shell/shell/js-exec.js"},"./backends/container":{"types":"./dist/backends/container/index.d.ts","import":"./dist/backends/container/index.js"},"./observe/cloudflare":{"types":"./dist/observe/cloudflare.d.ts","import":"./dist/observe/cloudflare.js"},"./backends/worker-shell":{"types":"./dist/backends/worker-shell/index.d.ts","import":"./dist/backends/worker-shell/index.js"},"./shell/html-to-markdown":{"types":"./dist/backends/worker-shell/shell/html-to-markdown.d.ts","default":"./dist/backends/worker-shell/shell/html-to-markdown.js"},"./backends/worker-javascript":{"types":"./dist/backends/worker-javascript/index.d.ts","import":"./dist/backends/worker-javascript/index.js"}},"gitHead":"da57cd393c12c872f456c91183a0e6559182f021","private":false,"scripts":{"test":"vitest run && vitest run --config vitest.config.proxy.ts && vitest run --config vitest.config.worker-backend.ts && vitest run --config vitest.config.script-runner.ts && vitest run --config vitest.config.stub-soak.ts","build":"rolldown -c","prepare":"npm run build:shell-bundle","pretest":"npm run build:shell-bundle","prebuild":"npm run build:deps && npm run build:shell-bundle","test:code":"vitest run --config vitest.config.script-runner.ts","typecheck":"tsc -p tsconfig.build.json --noEmit","build:deps":"npm run build --workspace @cloudflare/computer-rpc","pretypecheck":"npm run build:deps && npm run build:shell-bundle","test:harness":"./test-harness/run-harness.sh","bench:harness":"./test-harness/run-harness.sh bench","prepublishOnly":"npm run build && npm test","test:stub-soak":"vitest run --config vitest.config.stub-soak.ts","build:shell-bundle":"node ./src/backends/worker-shell/script/build-bundle.mjs","test:worker-backend":"vitest run --config vitest.config.worker-backend.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"e09e2ed7-4455-453f-9ac2-2d4ef45e0e39"}},"repository":{"url":"git+https://github.com/cloudflare/computer.git","type":"git","directory":"packages/computer"},"_npmVersion":"11.19.0","description":"Cloudflare Computer — a SQLite-backed virtual filesystem with sync to a container-side daemon (computerd).","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"acorn":"^8.17.0","capnweb":"^0.10.0","just-bash":"^3.0.1"},"publishConfig":{"tag":"unreleased"},"_hasShrinkwrap":false,"devDependencies":{"ai":"^7.0.0","zod":"^4.4.3","diff":"^9.0.0","memfs":"^4.57.6","vitest":"^4.1.11","esbuild":"^0.28.1","rolldown":"^1.0.2","wrangler":"^4.130.0","typescript":"^6.0.3","isomorphic-git":"^1.38.3","@cloudflare/dofs":"*","@platformatic/vfs":"^0.4.0","rolldown-plugin-dts":"^0.25.2","@cloudflare/computer-rpc":"*","@cloudflare/workers-types":"^4.20260616.1","@cloudflare/vitest-pool-workers":"^0.22.0"},"peerDependencies":{"ai":"^6.0.196 || ^7.0.0","zod":"^4.4.3","@platformatic/vfs":"*"},"peerDependenciesMeta":{"ai":{"optional":true},"zod":{"optional":true},"@platformatic/vfs":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/computer_0.3.2_1790838038223_0.9860323176941663","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@cloudflare/computer","version":"0.4.0","license":"MIT","_id":"@cloudflare/computer@0.4.0","maintainers":[{"name":"cf-ci-write","email":"npm-readonly@cloudflare.com"},{"name":"dash_service_account","email":"service-account@cloudflare-ui.com"},{"name":"wrangler-publisher","email":"workers-devprod@cloudflare.com"},{"name":"cf-npm-publish","email":"ui-platform-production@cloudflare.com"}],"homepage":"https://github.com/cloudflare/computer#readme","bugs":{"url":"https://github.com/cloudflare/computer/issues"},"dist":{"shasum":"bc869c89e53a3ecff48115e3fbbe5b00d8882127","tarball":"https://registry.npmjs.org/@cloudflare/computer/-/computer-0.4.0.tgz","fileCount":96,"integrity":"sha512-9bYPrMktAUR/EUX/Z2Xdk1JoSK4LeM7owBsFEHCG+9Lb0IjxJRaMjAkqOzVvDTm6OLNvoKUoUt99Heg6y9MdlA==","signatures":[{"sig":"MEUCIQDdGiixAzchgBSYPBDTEW/Ch25VPa2e/18jyQ+6hET81wIge6Ikvcx75Qa/vDqsl96F59ys8wDpMeXKnadwlRdl0iM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICrViW3bhOEqtIIrcvvts3BPRq7hY/wEhkNyf4RfdGAoAiABn9lSZwaTx60FlSu5Xt5WZQ5AH97to8UMGLqbtwI8kg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cloudflare%2fcomputer@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11231517},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./git":{"types":"./dist/git.d.ts","import":"./dist/git.js"},"./tools":{"types":"./dist/tools/index.d.ts","import":"./dist/tools/index.js"},"./assets":{"types":"./dist/assets/index.d.ts","import":"./dist/assets/index.js"},"./shell/jq":{"types":"./dist/backends/worker-shell/shell/jq.d.ts","default":"./dist/backends/worker-shell/shell/jq.js"},"./shell/yq":{"types":"./dist/backends/worker-shell/shell/yq.d.ts","default":"./dist/backends/worker-shell/shell/yq.js"},"./artifacts":{"types":"./dist/artifacts/index.d.ts","import":"./dist/artifacts/index.js"},"./shell/xan":{"types":"./dist/backends/worker-shell/shell/xan.d.ts","default":"./dist/backends/worker-shell/shell/xan.js"},"./shell/core":{"types":"./dist/backends/worker-shell/shell/core.d.ts","default":"./dist/backends/worker-shell/shell/core.js"},"./shell/curl":{"types":"./dist/backends/worker-shell/shell/curl.d.ts","default":"./dist/backends/worker-shell/shell/curl.js"},"./shell/file":{"types":"./dist/backends/worker-shell/shell/file.d.ts","default":"./dist/backends/worker-shell/shell/file.js"},"./tools/pi-ai":{"types":"./dist/tools/pi-ai.d.ts","import":"./dist/tools/pi-ai.js"},"./shell/python":{"types":"./dist/backends/worker-shell/shell/python.d.ts","default":"./dist/backends/worker-shell/shell/python.js"},"./shell/sqlite":{"types":"./dist/backends/worker-shell/shell/sqlite.d.ts","default":"./dist/backends/worker-shell/shell/sqlite.js"},"./shell/js-exec":{"types":"./dist/backends/worker-shell/shell/js-exec.d.ts","default":"./dist/backends/worker-shell/shell/js-exec.js"},"./tools/tanstack-ai":{"types":"./dist/tools/tanstack-ai.d.ts","import":"./dist/tools/tanstack-ai.js"},"./backends/container":{"types":"./dist/backends/container/index.d.ts","import":"./dist/backends/container/index.js"},"./observe/cloudflare":{"types":"./dist/observe/cloudflare.d.ts","import":"./dist/observe/cloudflare.js"},"./backends/worker-shell":{"types":"./dist/backends/worker-shell/index.d.ts","import":"./dist/backends/worker-shell/index.js"},"./shell/html-to-markdown":{"types":"./dist/backends/worker-shell/shell/html-to-markdown.d.ts","default":"./dist/backends/worker-shell/shell/html-to-markdown.js"},"./backends/container-legacy":{"types":"./dist/backends/container-legacy/index.d.ts","import":"./dist/backends/container-legacy/index.js"},"./backends/worker-javascript":{"types":"./dist/backends/worker-javascript/index.d.ts","import":"./dist/backends/worker-javascript/index.js"}},"gitHead":"ca6c711197672ddf68df73508eb1bb596cbc6514","private":false,"scripts":{"test":"vitest run && vitest run --config vitest.config.proxy.ts && vitest run --config vitest.config.worker-backend.ts && vitest run --config vitest.config.script-runner.ts && vitest run --config vitest.config.stub-soak.ts","build":"rolldown -c","prepare":"npm run build:shell-bundle","pretest":"npm run build:shell-bundle","prebuild":"npm run build:deps && npm run build:shell-bundle","test:code":"vitest run --config vitest.config.script-runner.ts","typecheck":"tsc -p tsconfig.build.json --noEmit","build:deps":"npm run build --workspace @cloudflare/computer-rpc","pretypecheck":"npm run build:deps && npm run build:shell-bundle","test:harness":"./test-harness/run-harness.sh","bench:harness":"./test-harness/run-harness.sh bench","prepublishOnly":"npm run build && npm test","test:stub-soak":"vitest run --config vitest.config.stub-soak.ts","build:shell-bundle":"node ./src/backends/worker-shell/script/build-bundle.mjs","test:worker-backend":"vitest run --config vitest.config.worker-backend.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"e09e2ed7-4455-453f-9ac2-2d4ef45e0e39"}},"repository":{"url":"git+https://github.com/cloudflare/computer.git","type":"git","directory":"packages/computer"},"_npmVersion":"11.19.0","description":"Cloudflare Computer — a SQLite-backed virtual filesystem with sync to a container-side daemon (computerd).","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"acorn":"^8.17.0","capnweb":"^0.10.0","just-bash":"^3.0.1"},"publishConfig":{"tag":"unreleased"},"_hasShrinkwrap":false,"devDependencies":{"ai":"^7.0.0","zod":"^4.4.3","diff":"^9.0.0","memfs":"^4.57.6","vitest":"^4.1.11","esbuild":"^0.28.1","rolldown":"^1.0.2","wrangler":"^4.137.0","typescript":"^6.0.3","@tanstack/ai":"^0.63.0","isomorphic-git":"^1.38.3","@cloudflare/dofs":"*","@platformatic/vfs":"^0.4.0","rolldown-plugin-dts":"^0.25.2","@earendil-works/pi-ai":"^0.99.2","@cloudflare/computer-rpc":"*","@cloudflare/workers-types":"^4.20260616.1 || ^5.20260921.1","@cloudflare/vitest-pool-workers":"^0.22.0"},"peerDependencies":{"ai":"^6.0.196 || ^7.0.0","zod":"^4.4.3","@platformatic/vfs":"*","@cloudflare/workers-types":"^4.20260616.1 || ^5.20260921.1"},"peerDependenciesMeta":{"ai":{"optional":true},"zod":{"optional":true},"@platformatic/vfs":{"optional":true},"@cloudflare/workers-types":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/computer_0.4.0_1790941911279_0.3785593815973005","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@cloudflare/computer","version":"0.4.1","license":"MIT","_id":"@cloudflare/computer@0.4.1","maintainers":[{"name":"cf-ci-write","email":"npm-readonly@cloudflare.com"},{"name":"dash_service_account","email":"service-account@cloudflare-ui.com"},{"name":"wrangler-publisher","email":"workers-devprod@cloudflare.com"},{"name":"cf-npm-publish","email":"ui-platform-production@cloudflare.com"}],"homepage":"https://github.com/cloudflare/computer#readme","bugs":{"url":"https://github.com/cloudflare/computer/issues"},"dist":{"shasum":"4797aaa6568f2611aaf1922d06ec3e9295e97c70","tarball":"https://registry.npmjs.org/@cloudflare/computer/-/computer-0.4.1.tgz","fileCount":96,"integrity":"sha512-cx/xNaL44HdVePcCJHZhH5d+6Bg456Sd8gZlGNXpvvjGBXSgcOpPqeDhyTBtW/w0FWGxVmW9UAfNkxHkqQ9KMQ==","signatures":[{"sig":"MEUCIQCg4B+cab1ptlh2ZUDnaoagaqp2bt0z/3M+kSGRUnbNvQIgYbh887amMrGrFZ4KEr0fnuFmkZOfY9fkSRkhVUW8N6E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHj2FsWllG+pIp3z+VXvGCXNjxpNu7pi2AuDLuQe6fF5AiAq8rz8gaRKxQ1EyZpiQ8rCeIB7gmEytIz77pTejqQUrw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cloudflare%2fcomputer@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11235820},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./git":{"types":"./dist/git.d.ts","import":"./dist/git.js"},"./tools":{"types":"./dist/tools/index.d.ts","import":"./dist/tools/index.js"},"./assets":{"types":"./dist/assets/index.d.ts","import":"./dist/assets/index.js"},"./shell/jq":{"types":"./dist/backends/worker-shell/shell/jq.d.ts","default":"./dist/backends/worker-shell/shell/jq.js"},"./shell/yq":{"types":"./dist/backends/worker-shell/shell/yq.d.ts","default":"./dist/backends/worker-shell/shell/yq.js"},"./artifacts":{"types":"./dist/artifacts/index.d.ts","import":"./dist/artifacts/index.js"},"./shell/xan":{"types":"./dist/backends/worker-shell/shell/xan.d.ts","default":"./dist/backends/worker-shell/shell/xan.js"},"./shell/core":{"types":"./dist/backends/worker-shell/shell/core.d.ts","default":"./dist/backends/worker-shell/shell/core.js"},"./shell/curl":{"types":"./dist/backends/worker-shell/shell/curl.d.ts","default":"./dist/backends/worker-shell/shell/curl.js"},"./shell/file":{"types":"./dist/backends/worker-shell/shell/file.d.ts","default":"./dist/backends/worker-shell/shell/file.js"},"./tools/pi-ai":{"types":"./dist/tools/pi-ai.d.ts","import":"./dist/tools/pi-ai.js"},"./shell/python":{"types":"./dist/backends/worker-shell/shell/python.d.ts","default":"./dist/backends/worker-shell/shell/python.js"},"./shell/sqlite":{"types":"./dist/backends/worker-shell/shell/sqlite.d.ts","default":"./dist/backends/worker-shell/shell/sqlite.js"},"./shell/js-exec":{"types":"./dist/backends/worker-shell/shell/js-exec.d.ts","default":"./dist/backends/worker-shell/shell/js-exec.js"},"./tools/tanstack-ai":{"types":"./dist/tools/tanstack-ai.d.ts","import":"./dist/tools/tanstack-ai.js"},"./backends/container":{"types":"./dist/backends/container/index.d.ts","import":"./dist/backends/container/index.js"},"./observe/cloudflare":{"types":"./dist/observe/cloudflare.d.ts","import":"./dist/observe/cloudflare.js"},"./backends/worker-shell":{"types":"./dist/backends/worker-shell/index.d.ts","import":"./dist/backends/worker-shell/index.js"},"./shell/html-to-markdown":{"types":"./dist/backends/worker-shell/shell/html-to-markdown.d.ts","default":"./dist/backends/worker-shell/shell/html-to-markdown.js"},"./backends/container-legacy":{"types":"./dist/backends/container-legacy/index.d.ts","import":"./dist/backends/container-legacy/index.js"},"./backends/worker-javascript":{"types":"./dist/backends/worker-javascript/index.d.ts","import":"./dist/backends/worker-javascript/index.js"}},"gitHead":"070359ff2db12442845bfce84512ec9beae35cdf","private":false,"scripts":{"test":"vitest run && vitest run --config vitest.config.proxy.ts && vitest run --config vitest.config.worker-backend.ts && vitest run --config vitest.config.script-runner.ts && vitest run --config vitest.config.stub-soak.ts","build":"rolldown -c","prepare":"npm run build:shell-bundle","pretest":"npm run build:shell-bundle","prebuild":"npm run build:deps && npm run build:shell-bundle","test:code":"vitest run --config vitest.config.script-runner.ts","typecheck":"tsc -p tsconfig.build.json --noEmit","build:deps":"npm run build --workspace @cloudflare/computer-rpc","pretypecheck":"npm run build:deps && npm run build:shell-bundle","test:harness":"./test-harness/run-harness.sh","bench:harness":"./test-harness/run-harness.sh bench","prepublishOnly":"npm run build && npm test","test:stub-soak":"vitest run --config vitest.config.stub-soak.ts","build:shell-bundle":"node ./src/backends/worker-shell/script/build-bundle.mjs","test:worker-backend":"vitest run --config vitest.config.worker-backend.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"e09e2ed7-4455-453f-9ac2-2d4ef45e0e39"}},"repository":{"url":"git+https://github.com/cloudflare/computer.git","type":"git","directory":"packages/computer"},"_npmVersion":"11.19.0","description":"Cloudflare Computer — a SQLite-backed virtual filesystem with sync to a container-side daemon (computerd).","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"acorn":"^8.17.0","capnweb":"^0.10.0","just-bash":"^3.0.1"},"publishConfig":{"tag":"unreleased"},"_hasShrinkwrap":false,"devDependencies":{"ai":"^7.0.0","zod":"^4.4.3","diff":"^9.0.0","memfs":"^4.57.6","vitest":"^4.1.11","esbuild":"^0.28.1","rolldown":"^1.0.2","wrangler":"^4.137.0","typescript":"^6.0.3","@tanstack/ai":"^0.63.0","isomorphic-git":"^1.38.3","@cloudflare/dofs":"*","@platformatic/vfs":"^0.4.0","rolldown-plugin-dts":"^0.25.2","@earendil-works/pi-ai":"^0.99.2","@cloudflare/computer-rpc":"*","@cloudflare/workers-types":"^4.20260616.1 || ^5.20260921.1","@cloudflare/vitest-pool-workers":"^0.22.0"},"peerDependencies":{"ai":"^6.0.196 || ^7.0.0","zod":"^4.4.3","@platformatic/vfs":"*","@cloudflare/workers-types":"^4.20260616.1 || ^5.20260921.1"},"peerDependenciesMeta":{"ai":{"optional":true},"zod":{"optional":true},"@platformatic/vfs":{"optional":true},"@cloudflare/workers-types":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/computer_0.4.1_1791193263309_0.580257659139161","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@cloudflare/computer","version":"0.5.0","license":"MIT","_id":"@cloudflare/computer@0.5.0","maintainers":[{"name":"cf-ci-write","email":"npm-readonly@cloudflare.com"},{"name":"dash_service_account","email":"service-account@cloudflare-ui.com"},{"name":"wrangler-publisher","email":"workers-devprod@cloudflare.com"},{"name":"cf-npm-publish","email":"ui-platform-production@cloudflare.com"}],"homepage":"https://github.com/cloudflare/computer#readme","bugs":{"url":"https://github.com/cloudflare/computer/issues"},"dist":{"shasum":"69afa3e7f1c666f06c6db36993932895da694b08","tarball":"https://registry.npmjs.org/@cloudflare/computer/-/computer-0.5.0.tgz","fileCount":115,"integrity":"sha512-4iBift6AzUWeeV7trnWHfXBfjtJZTJ9nWOBa5QA/M3qRYceO/3n0Xk6qZ6WSv5YyWxeYmNIDCpJCJ7OnR3Uplw==","signatures":[{"sig":"MEUCIQCFrnjvkVghmrYmqncEfBvW0HjIp3Ed9bc58xhgh52u2QIgORJ7QhRFLjxANmJn7bjar/DKwzzwGnbOUoh4RyGKLag=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFq7IxEGHsPBjS5jt6Y7/wGXB7/OS4V8pgJdOBtOLDrMAiAlQ51e2W+02MhXtYD+4TyTR9ANVlt5G8mEaYFi3a+5Gw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cloudflare%2fcomputer@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11394343},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./git":{"types":"./dist/git.d.ts","import":"./dist/git.js"},"./tools":{"types":"./dist/tools/index.d.ts","import":"./dist/tools/index.js"},"./assets":{"types":"./dist/assets/index.d.ts","import":"./dist/assets/index.js"},"./shell/jq":{"types":"./dist/backends/worker-shell/shell/jq.d.ts","default":"./dist/backends/worker-shell/shell/jq.js"},"./shell/yq":{"types":"./dist/backends/worker-shell/shell/yq.d.ts","default":"./dist/backends/worker-shell/shell/yq.js"},"./artifacts":{"types":"./dist/artifacts/index.d.ts","import":"./dist/artifacts/index.js"},"./shell/xan":{"types":"./dist/backends/worker-shell/shell/xan.d.ts","default":"./dist/backends/worker-shell/shell/xan.js"},"./shell/core":{"types":"./dist/backends/worker-shell/shell/core.d.ts","default":"./dist/backends/worker-shell/shell/core.js"},"./shell/curl":{"types":"./dist/backends/worker-shell/shell/curl.d.ts","default":"./dist/backends/worker-shell/shell/curl.js"},"./shell/file":{"types":"./dist/backends/worker-shell/shell/file.d.ts","default":"./dist/backends/worker-shell/shell/file.js"},"./modules/git":{"types":"./dist/modules/git.d.ts","import":"./dist/modules/git.js"},"./tools/pi-ai":{"types":"./dist/tools/pi-ai.d.ts","import":"./dist/tools/pi-ai.js"},"./shell/python":{"types":"./dist/backends/worker-shell/shell/python.d.ts","default":"./dist/backends/worker-shell/shell/python.js"},"./shell/sqlite":{"types":"./dist/backends/worker-shell/shell/sqlite.d.ts","default":"./dist/backends/worker-shell/shell/sqlite.js"},"./tools/ai-sdk":{"types":"./dist/tools/ai-sdk.d.ts","import":"./dist/tools/ai-sdk.js"},"./shell/js-exec":{"types":"./dist/backends/worker-shell/shell/js-exec.d.ts","default":"./dist/backends/worker-shell/shell/js-exec.js"},"./modules/artifacts":{"types":"./dist/modules/artifacts.d.ts","import":"./dist/modules/artifacts.js"},"./modules/container":{"types":"./dist/modules/container.d.ts","import":"./dist/modules/container.js"},"./tools/tanstack-ai":{"types":"./dist/tools/tanstack-ai.d.ts","import":"./dist/tools/tanstack-ai.js"},"./backends/container":{"types":"./dist/backends/container/index.d.ts","import":"./dist/backends/container/index.js"},"./observe/cloudflare":{"types":"./dist/observe/cloudflare.d.ts","import":"./dist/observe/cloudflare.js"},"./backends/worker-shell":{"types":"./dist/backends/worker-shell/index.d.ts","import":"./dist/backends/worker-shell/index.js"},"./shell/html-to-markdown":{"types":"./dist/backends/worker-shell/shell/html-to-markdown.d.ts","default":"./dist/backends/worker-shell/shell/html-to-markdown.js"},"./backends/container-legacy":{"types":"./dist/backends/container-legacy/index.d.ts","import":"./dist/backends/container-legacy/index.js"},"./backends/worker-javascript":{"types":"./dist/backends/worker-javascript/index.d.ts","import":"./dist/backends/worker-javascript/index.js"}},"gitHead":"ec39cb693a5be73a735d375e228b4e2adb754abb","private":false,"scripts":{"test":"vitest run && vitest run --config vitest.config.proxy.ts && vitest run --config vitest.config.worker-backend.ts && vitest run --config vitest.config.script-runner.ts && vitest run --config vitest.config.stub-soak.ts","build":"rolldown -c","prepare":"npm run build:shell-bundle","pretest":"npm run build:shell-bundle","prebuild":"npm run build:deps && npm run build:shell-bundle","test:code":"vitest run --config vitest.config.script-runner.ts","typecheck":"tsc -p tsconfig.build.json --noEmit","build:deps":"npm run build --workspace @cloudflare/computer-rpc","pretypecheck":"npm run build:deps && npm run build:shell-bundle","test:harness":"./test-harness/run-harness.sh","bench:harness":"./test-harness/run-harness.sh bench","prepublishOnly":"npm run build && npm test","test:stub-soak":"vitest run --config vitest.config.stub-soak.ts","build:shell-bundle":"node ./src/backends/worker-shell/script/build-bundle.mjs","test:worker-backend":"vitest run --config vitest.config.worker-backend.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"e09e2ed7-4455-453f-9ac2-2d4ef45e0e39"}},"repository":{"url":"git+https://github.com/cloudflare/computer.git","type":"git","directory":"packages/computer"},"_npmVersion":"11.19.0","description":"Cloudflare Computer — a SQLite-backed virtual filesystem with sync to a container-side daemon (computerd).","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"acorn":"^8.17.0","capnweb":"^0.10.0","just-bash":"^3.0.1"},"publishConfig":{"tag":"unreleased"},"_hasShrinkwrap":false,"devDependencies":{"ai":"^7.0.0","zod":"^4.4.3","diff":"^9.0.0","memfs":"^4.57.6","vitest":"^4.1.11","esbuild":"^0.28.1","rolldown":"^1.0.2","wrangler":"^4.137.0","typescript":"^6.0.3","@tanstack/ai":"^0.63.0","isomorphic-git":"^1.38.3","@cloudflare/dofs":"*","@platformatic/vfs":"^0.4.0","rolldown-plugin-dts":"^0.25.2","@earendil-works/pi-ai":"^0.99.2","@cloudflare/computer-rpc":"*","@cloudflare/workers-types":"^4.20260616.1 || ^5.20260921.1","@cloudflare/vitest-pool-workers":"^0.22.0"},"peerDependencies":{"ai":"^6.0.196 || ^7.0.0","zod":"^4.4.3","@platformatic/vfs":"*","@cloudflare/workers-types":"^4.20260616.1 || ^5.20260921.1"},"peerDependenciesMeta":{"ai":{"optional":true},"zod":{"optional":true},"@platformatic/vfs":{"optional":true},"@cloudflare/workers-types":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/computer_0.5.0_1791545262330_0.4465729469954074","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@cloudflare/computer","version":"0.5.1","license":"MIT","_id":"@cloudflare/computer@0.5.1","maintainers":[{"name":"cf-ci-write","email":"npm-readonly@cloudflare.com"},{"name":"dash_service_account","email":"service-account@cloudflare-ui.com"},{"name":"wrangler-publisher","email":"workers-devprod@cloudflare.com"},{"name":"cf-npm-publish","email":"ui-platform-production@cloudflare.com"}],"homepage":"https://github.com/cloudflare/computer#readme","bugs":{"url":"https://github.com/cloudflare/computer/issues"},"dist":{"shasum":"11fb4238c97c641eede8832fc49b596a43a30318","tarball":"https://registry.npmjs.org/@cloudflare/computer/-/computer-0.5.1.tgz","fileCount":137,"integrity":"sha512-tEA2uyZwOBnhbdBoVYLOnQFsQnAwXiUbzS8JF/2bjY4Mpcb7PXPRFAyWdfVYG0xu4eW6Ctd73v5O/Z07Fr5/Pg==","signatures":[{"sig":"MEQCIBebSRK7+Wtam1sSuqbxvYycIFNBrICwvdjMH+qEV60dAiA88zLDaPhO4XjWdM5wlqLgD082UfKCXadPdnfo/hUUdA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDLfR3BRghWkjZ9B/8tdmftduiJ049CJ0ZAyqGv3CJMrgIgX8C34FomHt4y4chgc3dTubqtzCq2nTr4EcASfAEVk0o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cloudflare%2fcomputer@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11567873},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./git":{"types":"./dist/git.d.ts","import":"./dist/git.js"},"./vite":{"types":"./dist/vite/index.d.ts","import":"./dist/vite/index.js"},"./tools":{"types":"./dist/tools/index.d.ts","import":"./dist/tools/index.js"},"./assets":{"types":"./dist/assets/index.d.ts","import":"./dist/assets/index.js"},"./shell/jq":{"types":"./dist/backends/worker-shell/shell/jq.d.ts","default":"./dist/backends/worker-shell/shell/jq.js"},"./shell/yq":{"types":"./dist/backends/worker-shell/shell/yq.d.ts","default":"./dist/backends/worker-shell/shell/yq.js"},"./artifacts":{"types":"./dist/artifacts/index.d.ts","import":"./dist/artifacts/index.js"},"./shell/xan":{"types":"./dist/backends/worker-shell/shell/xan.d.ts","default":"./dist/backends/worker-shell/shell/xan.js"},"./shell/core":{"types":"./dist/backends/worker-shell/shell/core.d.ts","default":"./dist/backends/worker-shell/shell/core.js"},"./shell/curl":{"types":"./dist/backends/worker-shell/shell/curl.d.ts","default":"./dist/backends/worker-shell/shell/curl.js"},"./shell/file":{"types":"./dist/backends/worker-shell/shell/file.d.ts","default":"./dist/backends/worker-shell/shell/file.js"},"./tools/core":{"types":"./dist/tools/core.d.ts","import":"./dist/tools/core.js"},"./modules/git":{"types":"./dist/modules/git.d.ts","import":"./dist/modules/git.js"},"./tools/pi-ai":{"types":"./dist/tools/pi-ai.d.ts","import":"./dist/tools/pi-ai.js"},"./vite/client":{"types":"./vite-client.d.ts"},"./shell/python":{"types":"./dist/backends/worker-shell/shell/python.d.ts","default":"./dist/backends/worker-shell/shell/python.js"},"./shell/sqlite":{"types":"./dist/backends/worker-shell/shell/sqlite.d.ts","default":"./dist/backends/worker-shell/shell/sqlite.js"},"./tools/ai-sdk":{"types":"./dist/tools/ai-sdk.d.ts","import":"./dist/tools/ai-sdk.js"},"./modules/tools":{"types":"./dist/modules/tools.d.ts","import":"./dist/modules/tools.js"},"./shell/js-exec":{"types":"./dist/backends/worker-shell/shell/js-exec.d.ts","default":"./dist/backends/worker-shell/shell/js-exec.js"},"./modules/assets":{"types":"./dist/modules/assets.d.ts","import":"./dist/modules/assets.js"},"./modules/artifacts":{"types":"./dist/modules/artifacts.d.ts","import":"./dist/modules/artifacts.js"},"./modules/container":{"types":"./dist/modules/container.d.ts","import":"./dist/modules/container.js"},"./tools/tanstack-ai":{"types":"./dist/tools/tanstack-ai.d.ts","import":"./dist/tools/tanstack-ai.js"},"./backends/container":{"types":"./dist/backends/container/index.d.ts","import":"./dist/backends/container/index.js"},"./observe/cloudflare":{"types":"./dist/observe/cloudflare.d.ts","import":"./dist/observe/cloudflare.js"},"./backends/worker-shell":{"types":"./dist/backends/worker-shell/index.d.ts","import":"./dist/backends/worker-shell/index.js"},"./shell/html-to-markdown":{"types":"./dist/backends/worker-shell/shell/html-to-markdown.d.ts","default":"./dist/backends/worker-shell/shell/html-to-markdown.js"},"./backends/container-legacy":{"types":"./dist/backends/container-legacy/index.d.ts","import":"./dist/backends/container-legacy/index.js"},"./backends/worker-javascript":{"types":"./dist/backends/worker-javascript/index.d.ts","import":"./dist/backends/worker-javascript/index.js"}},"gitHead":"ef00c0a790cb87887bf209fa87838cb1a281220b","private":false,"scripts":{"test":"vitest run && vitest run --config vitest.config.proxy.ts && vitest run --config vitest.config.worker-backend.ts && vitest run --config vitest.config.script-runner.ts && vitest run --config vitest.config.stub-soak.ts","build":"rolldown -c","prepare":"npm run build:shell-bundle","pretest":"npm run build:shell-bundle","prebuild":"npm run build:deps && npm run build:shell-bundle","test:code":"vitest run --config vitest.config.script-runner.ts","typecheck":"tsc -p tsconfig.build.json --noEmit","build:deps":"npm run build --workspace @cloudflare/computer-rpc","pretypecheck":"npm run build:deps && npm run build:shell-bundle","test:harness":"./test-harness/run-harness.sh","bench:harness":"./test-harness/run-harness.sh bench","prepublishOnly":"npm run build && npm test","test:stub-soak":"vitest run --config vitest.config.stub-soak.ts","build:shell-bundle":"node ./src/backends/worker-shell/script/build-bundle.mjs","test:worker-backend":"vitest run --config vitest.config.worker-backend.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"e09e2ed7-4455-453f-9ac2-2d4ef45e0e39"}},"repository":{"url":"git+https://github.com/cloudflare/computer.git","type":"git","directory":"packages/computer"},"_npmVersion":"11.19.0","description":"Cloudflare Computer — a SQLite-backed virtual filesystem with sync to a container-side daemon (computerd).","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"acorn":"^8.17.0","capnweb":"^0.10.0","just-bash":"^3.0.1"},"publishConfig":{"tag":"unreleased"},"_hasShrinkwrap":false,"devDependencies":{"ai":"^7.0.0","zod":"^4.4.3","diff":"^9.0.0","vite":"^8.0.16","memfs":"^4.57.6","vitest":"^4.1.11","esbuild":"^0.28.1","rolldown":"^1.0.2","wrangler":"^4.148.0","typescript":"^6.0.3","@tanstack/ai":"^0.63.0","isomorphic-git":"^1.38.3","@cloudflare/dofs":"*","@platformatic/vfs":"^0.4.0","rolldown-plugin-dts":"^0.25.2","@earendil-works/pi-ai":"^0.99.2","@cloudflare/vite-plugin":"^1.63.0","@cloudflare/computer-rpc":"*","@cloudflare/workers-types":"^4.20260616.1 || ^5.20260921.1","@cloudflare/vitest-pool-workers":"^0.22.0"},"peerDependencies":{"ai":"^6.0.196 || ^7.0.0","zod":"^4.4.3","vite":"^6.0.0 || ^7.0.0 || ^8.0.0","@platformatic/vfs":"*","@cloudflare/workers-types":"^4.20260616.1 || ^5.20260921.1"},"peerDependenciesMeta":{"ai":{"optional":true},"zod":{"optional":true},"vite":{"optional":true},"@platformatic/vfs":{"optional":true},"@cloudflare/workers-types":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/computer_0.5.1_1791899238646_0.031623744460287595","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@cloudflare/computer","version":"0.6.0","license":"MIT","_id":"@cloudflare/computer@0.6.0","maintainers":[{"name":"cf-ci-write","email":"npm-readonly@cloudflare.com"},{"name":"dash_service_account","email":"service-account@cloudflare-ui.com"},{"name":"wrangler-publisher","email":"workers-devprod@cloudflare.com"},{"name":"cf-npm-publish","email":"ui-platform-production@cloudflare.com"}],"homepage":"https://github.com/cloudflare/computer#readme","bugs":{"url":"https://github.com/cloudflare/computer/issues"},"dist":{"shasum":"1e9e22d2fea8b576776568a40e95d756ae519126","tarball":"https://registry.npmjs.org/@cloudflare/computer/-/computer-0.6.0.tgz","fileCount":139,"integrity":"sha512-XUcYP+krjStI5uQZe303nlFKrfBGfr+jG2b875o6vqvoKO5pTns6GbiL530cYW5DpXzcpjVS9mX3eN1Mbd9yUQ==","signatures":[{"sig":"MEQCIAwPVacKhkwTUy0cJX0CB42TVJ3Sz0+LPBrPVi0fChf2AiBtFoKILwqnLNGLAD6kbf4yJ+TQ2yUl4o1xby0yF+dD7g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQChMxjyjhfSYXuwSXRlSBg3ddznDBgtfqmWpndmh9xVhgIgCE9xlFJHrDgpqCv2sVxHsYppEq8YhXOWYr8FZupyVEE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cloudflare%2fcomputer@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11578920},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./git":{"types":"./dist/git.d.ts","import":"./dist/git.js"},"./vite":{"types":"./dist/vite/index.d.ts","import":"./dist/vite/index.js"},"./tools":{"types":"./dist/tools/index.d.ts","import":"./dist/tools/index.js"},"./assets":{"types":"./dist/assets/index.d.ts","import":"./dist/assets/index.js"},"./shell/jq":{"types":"./dist/backends/worker-shell/shell/jq.d.ts","default":"./dist/backends/worker-shell/shell/jq.js"},"./shell/yq":{"types":"./dist/backends/worker-shell/shell/yq.d.ts","default":"./dist/backends/worker-shell/shell/yq.js"},"./artifacts":{"types":"./dist/artifacts/index.d.ts","import":"./dist/artifacts/index.js"},"./shell/xan":{"types":"./dist/backends/worker-shell/shell/xan.d.ts","default":"./dist/backends/worker-shell/shell/xan.js"},"./shell/core":{"types":"./dist/backends/worker-shell/shell/core.d.ts","default":"./dist/backends/worker-shell/shell/core.js"},"./shell/curl":{"types":"./dist/backends/worker-shell/shell/curl.d.ts","default":"./dist/backends/worker-shell/shell/curl.js"},"./shell/file":{"types":"./dist/backends/worker-shell/shell/file.d.ts","default":"./dist/backends/worker-shell/shell/file.js"},"./tools/core":{"types":"./dist/tools/core.d.ts","import":"./dist/tools/core.js"},"./modules/git":{"types":"./dist/modules/git.d.ts","import":"./dist/modules/git.js"},"./tools/pi-ai":{"types":"./dist/tools/pi-ai.d.ts","import":"./dist/tools/pi-ai.js"},"./vite/client":{"types":"./vite-client.d.ts"},"./shell/python":{"types":"./dist/backends/worker-shell/shell/python.d.ts","default":"./dist/backends/worker-shell/shell/python.js"},"./shell/sqlite":{"types":"./dist/backends/worker-shell/shell/sqlite.d.ts","default":"./dist/backends/worker-shell/shell/sqlite.js"},"./tools/ai-sdk":{"types":"./dist/tools/ai-sdk.d.ts","import":"./dist/tools/ai-sdk.js"},"./modules/tools":{"types":"./dist/modules/tools.d.ts","import":"./dist/modules/tools.js"},"./shell/js-exec":{"types":"./dist/backends/worker-shell/shell/js-exec.d.ts","default":"./dist/backends/worker-shell/shell/js-exec.js"},"./modules/assets":{"types":"./dist/modules/assets.d.ts","import":"./dist/modules/assets.js"},"./modules/artifacts":{"types":"./dist/modules/artifacts.d.ts","import":"./dist/modules/artifacts.js"},"./modules/container":{"types":"./dist/modules/container.d.ts","import":"./dist/modules/container.js"},"./tools/tanstack-ai":{"types":"./dist/tools/tanstack-ai.d.ts","import":"./dist/tools/tanstack-ai.js"},"./backends/container":{"types":"./dist/backends/container/index.d.ts","import":"./dist/backends/container/index.js"},"./observe/cloudflare":{"types":"./dist/observe/cloudflare.d.ts","import":"./dist/observe/cloudflare.js"},"./backends/worker-shell":{"types":"./dist/backends/worker-shell/index.d.ts","import":"./dist/backends/worker-shell/index.js"},"./shell/html-to-markdown":{"types":"./dist/backends/worker-shell/shell/html-to-markdown.d.ts","default":"./dist/backends/worker-shell/shell/html-to-markdown.js"},"./backends/container-legacy":{"types":"./dist/backends/container-legacy/index.d.ts","import":"./dist/backends/container-legacy/index.js"},"./backends/worker-javascript":{"types":"./dist/backends/worker-javascript/index.d.ts","import":"./dist/backends/worker-javascript/index.js"}},"gitHead":"5879ddcd404d5dd70c76e42b622b12b625cf55b3","private":false,"scripts":{"test":"vitest run && vitest run --config vitest.config.proxy.ts && vitest run --config vitest.config.worker-backend.ts && vitest run --config vitest.config.script-runner.ts && vitest run --config vitest.config.stub-soak.ts","build":"rolldown -c","prepare":"npm run build:shell-bundle","pretest":"npm run build:shell-bundle","prebuild":"npm run build:deps && npm run build:shell-bundle","test:code":"vitest run --config vitest.config.script-runner.ts","typecheck":"tsc -p tsconfig.build.json --noEmit","build:deps":"npm run build --workspace @cloudflare/computer-rpc","pretypecheck":"npm run build:deps && npm run build:shell-bundle","test:harness":"./test-harness/run-harness.sh","bench:harness":"./test-harness/run-harness.sh bench","prepublishOnly":"npm run build && npm test","test:stub-soak":"vitest run --config vitest.config.stub-soak.ts","build:shell-bundle":"node ./src/backends/worker-shell/script/build-bundle.mjs","test:worker-backend":"vitest run --config vitest.config.worker-backend.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"e09e2ed7-4455-453f-9ac2-2d4ef45e0e39"}},"repository":{"url":"git+https://github.com/cloudflare/computer.git","type":"git","directory":"packages/computer"},"_npmVersion":"11.19.0","description":"Cloudflare Computer — a SQLite-backed virtual filesystem with sync to a container-side daemon (computerd).","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"capnweb":"^0.10.0"},"publishConfig":{"tag":"unreleased"},"_hasShrinkwrap":false,"devDependencies":{"ai":"^7.0.0","zod":"^4.4.3","diff":"^9.0.0","vite":"^8.3.4","acorn":"^8.17.0","memfs":"^4.57.6","vitest":"^4.1.11","esbuild":"^0.28.1","rolldown":"^1.0.2","wrangler":"^4.148.0","just-bash":"^3.0.1","typescript":"^6.0.3","@tanstack/ai":"^0.63.0","isomorphic-git":"^1.38.3","@cloudflare/dofs":"*","@platformatic/vfs":"^0.4.0","rolldown-plugin-dts":"^0.25.2","@earendil-works/pi-ai":"^0.99.2","@cloudflare/vite-plugin":"^1.63.0","@cloudflare/computer-rpc":"*","@cloudflare/workers-types":"^4.20260616.1 || ^5.20260921.1","@cloudflare/vitest-pool-workers":"^0.22.0"},"peerDependencies":{"ai":"^6.0.196 || ^7.0.0","zod":"^4.4.3","vite":"^6.0.0 || ^7.0.0 || ^8.0.0","just-bash":"^3.0.1","@platformatic/vfs":"*","@cloudflare/workers-types":"^4.20260616.1 || ^5.20260921.1"},"peerDependenciesMeta":{"ai":{"optional":true},"zod":{"optional":true},"vite":{"optional":true},"just-bash":{"optional":true},"@platformatic/vfs":{"optional":true},"@cloudflare/workers-types":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/computer_0.6.0_1792531088717_0.06809075198285508","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"_id":"@cloudflare/computer@0.7.0","bugs":{"url":"https://github.com/cloudflare/computer/issues"},"dist":{"shasum":"3524db3d6351ae067b23ec4ed4eedfe7b1b8e497","tarball":"https://registry.npmjs.org/@cloudflare/computer/-/computer-0.7.0.tgz","fileCount":146,"integrity":"sha512-pVO4+6tg0W0aNHcAoDoq9rTnTuEXSxixeaXUHozyga7UjgVZ+brmi68sX+eQQb1kdGngtAofvmthgV/mgCXZaw==","signatures":[{"sig":"MEYCIQDUInV4RA8rpDTz4Hq6zgNV2gAwbIlZPQA7DJ9SdggKFgIhANJoPVTNovciWTfJQnL4Eq8DbUL0Xe7Gq6GRimb2uWLs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIH7fZDh4IaQZ0HAy3h8Qr8u33V3S2RC/77hILcSpJcqXAiBKzoZhfdto+l8Ush8cCNnLEhHuJmyItsfGcS31Xc1JWQ=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cloudflare%2fcomputer@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11750209},"main":"./dist/index.js","name":"@cloudflare/computer","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./git":{"types":"./dist/git.d.ts","import":"./dist/git.js"},"./vite":{"types":"./dist/vite/index.d.ts","import":"./dist/vite/index.js"},"./tools":{"types":"./dist/tools/index.d.ts","import":"./dist/tools/index.js"},"./assets":{"types":"./dist/assets/index.d.ts","import":"./dist/assets/index.js"},"./shell/jq":{"types":"./dist/backends/worker-shell/shell/jq.d.ts","default":"./dist/backends/worker-shell/shell/jq.js"},"./shell/yq":{"types":"./dist/backends/worker-shell/shell/yq.d.ts","default":"./dist/backends/worker-shell/shell/yq.js"},"./artifacts":{"types":"./dist/artifacts/index.d.ts","import":"./dist/artifacts/index.js"},"./shell/xan":{"types":"./dist/backends/worker-shell/shell/xan.d.ts","default":"./dist/backends/worker-shell/shell/xan.js"},"./shell/core":{"types":"./dist/backends/worker-shell/shell/core.d.ts","default":"./dist/backends/worker-shell/shell/core.js"},"./shell/curl":{"types":"./dist/backends/worker-shell/shell/curl.d.ts","default":"./dist/backends/worker-shell/shell/curl.js"},"./shell/file":{"types":"./dist/backends/worker-shell/shell/file.d.ts","default":"./dist/backends/worker-shell/shell/file.js"},"./tools/core":{"types":"./dist/tools/core.d.ts","import":"./dist/tools/core.js"},"./modules/git":{"types":"./dist/modules/git.d.ts","import":"./dist/modules/git.js"},"./tools/pi-ai":{"types":"./dist/tools/pi-ai.d.ts","import":"./dist/tools/pi-ai.js"},"./vite/client":{"types":"./vite-client.d.ts"},"./shell/python":{"types":"./dist/backends/worker-shell/shell/python.d.ts","default":"./dist/backends/worker-shell/shell/python.js"},"./shell/sqlite":{"types":"./dist/backends/worker-shell/shell/sqlite.d.ts","default":"./dist/backends/worker-shell/shell/sqlite.js"},"./tools/ai-sdk":{"types":"./dist/tools/ai-sdk.d.ts","import":"./dist/tools/ai-sdk.js"},"./modules/tools":{"types":"./dist/modules/tools.d.ts","import":"./dist/modules/tools.js"},"./shell/js-exec":{"types":"./dist/backends/worker-shell/shell/js-exec.d.ts","default":"./dist/backends/worker-shell/shell/js-exec.js"},"./modules/assets":{"types":"./dist/modules/assets.d.ts","import":"./dist/modules/assets.js"},"./modules/artifacts":{"types":"./dist/modules/artifacts.d.ts","import":"./dist/modules/artifacts.js"},"./modules/container":{"types":"./dist/modules/container.d.ts","import":"./dist/modules/container.js"},"./tools/tanstack-ai":{"types":"./dist/tools/tanstack-ai.d.ts","import":"./dist/tools/tanstack-ai.js"},"./backends/container":{"types":"./dist/backends/container/index.d.ts","import":"./dist/backends/container/index.js"},"./observe/cloudflare":{"types":"./dist/observe/cloudflare.d.ts","import":"./dist/observe/cloudflare.js"},"./backends/worker-shell":{"types":"./dist/backends/worker-shell/index.d.ts","import":"./dist/backends/worker-shell/index.js"},"./shell/html-to-markdown":{"types":"./dist/backends/worker-shell/shell/html-to-markdown.d.ts","default":"./dist/backends/worker-shell/shell/html-to-markdown.js"},"./backends/container-legacy":{"types":"./dist/backends/container-legacy/index.d.ts","import":"./dist/backends/container-legacy/index.js"},"./backends/worker-javascript":{"types":"./dist/backends/worker-javascript/index.d.ts","import":"./dist/backends/worker-javascript/index.js"}},"gitHead":"6cbcc2dba2dad9f602a828e5ea4324a835b53384","license":"MIT","private":false,"scripts":{"test":"vitest run && vitest run --config vitest.config.proxy.ts && vitest run --config vitest.config.worker-backend.ts && vitest run --config vitest.config.script-runner.ts && vitest run --config vitest.config.stub-soak.ts","build":"rolldown -c","prepare":"npm run build:shell-bundle","pretest":"npm run build:shell-bundle","prebuild":"npm run build:deps && npm run build:shell-bundle","test:code":"vitest run --config vitest.config.script-runner.ts","typecheck":"tsc -p tsconfig.build.json --noEmit","build:deps":"npm run build --workspace @cloudflare/computer-rpc","pretypecheck":"npm run build:deps && npm run build:shell-bundle","test:harness":"./test-harness/run-harness.sh","bench:harness":"./test-harness/run-harness.sh bench","prepublishOnly":"npm run build && npm test","test:stub-soak":"vitest run --config vitest.config.stub-soak.ts","build:shell-bundle":"node ./src/backends/worker-shell/script/build-bundle.mjs","test:worker-backend":"vitest run --config vitest.config.worker-backend.ts"},"version":"0.7.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"e09e2ed7-4455-453f-9ac2-2d4ef45e0e39"}},"homepage":"https://github.com/cloudflare/computer#readme","repository":{"url":"git+https://github.com/cloudflare/computer.git","type":"git","directory":"packages/computer"},"_npmVersion":"11.19.0","description":"Cloudflare Computer — a SQLite-backed virtual filesystem with sync to a container-side daemon (computerd).","directories":{},"maintainers":[{"name":"cf-ci-write","email":"npm-readonly@cloudflare.com"},{"name":"dash_service_account","email":"service-account@cloudflare-ui.com"},{"name":"wrangler-publisher","email":"workers-devprod@cloudflare.com"},{"name":"cf-npm-publish","email":"ui-platform-production@cloudflare.com"}],"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"capnweb":"^0.10.0"},"publishConfig":{"tag":"unreleased"},"_hasShrinkwrap":false,"devDependencies":{"ai":"^7.0.0","zod":"^4.4.3","diff":"^9.0.0","vite":"^8.3.4","acorn":"^8.17.0","memfs":"^4.57.6","vitest":"^4.1.12","esbuild":"^0.28.1","rolldown":"^1.0.2","wrangler":"^4.148.0","just-bash":"^3.0.1","typescript":"^6.0.3","@tanstack/ai":"^0.63.0","isomorphic-git":"^1.38.3","@cloudflare/dofs":"*","@platformatic/vfs":"^0.4.0","rolldown-plugin-dts":"^0.25.2","@earendil-works/pi-ai":"^0.99.2","@cloudflare/vite-plugin":"^1.63.0","@cloudflare/computer-rpc":"*","@cloudflare/workers-types":"^4.20260616.1 || ^5.20260921.1","@cloudflare/vitest-pool-workers":"^0.22.0"},"peerDependencies":{"ai":"^6.0.196 || ^7.0.0","zod":"^4.4.3","vite":"^6.0.0 || ^7.0.0 || ^8.0.0","just-bash":"^3.0.1","@platformatic/vfs":"*","@cloudflare/workers-types":"^4.20260616.1 || ^5.20260921.1"},"peerDependenciesMeta":{"ai":{"optional":true},"zod":{"optional":true},"vite":{"optional":true},"just-bash":{"optional":true},"@platformatic/vfs":{"optional":true},"@cloudflare/workers-types":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/computer_0.7.0_1792752847070_0.6604930797822333"}}},"time":{"created":"2026-07-29T13:49:09.592Z","modified":"2026-10-23T10:54:07.639Z","0.0.0":"2026-07-29T13:49:09.780Z","0.1.0-alpha.1":"2026-07-30T13:31:20.995Z","0.1.0":"2026-08-03T12:19:20.865Z","0.1.1":"2026-08-03T13:01:22.482Z","0.2.0":"2026-08-11T16:52:42.324Z","0.2.1":"2026-08-17T10:52:51.390Z","0.3.0":"2026-09-11T16:41:17.617Z","0.3.1":"2026-09-18T11:55:38.165Z","0.3.2":"2026-10-01T07:00:38.433Z","0.4.0":"2026-10-02T11:51:51.465Z","0.4.1":"2026-10-05T09:41:03.502Z","0.5.0":"2026-10-09T11:27:42.479Z","0.5.1":"2026-10-13T13:47:18.834Z","0.6.0":"2026-10-20T21:18:08.877Z","0.7.0":"2026-10-23T10:54:07.227Z"},"bugs":{"url":"https://github.com/cloudflare/computer/issues"},"license":"MIT","homepage":"https://github.com/cloudflare/computer#readme","repository":{"url":"git+https://github.com/cloudflare/computer.git","type":"git","directory":"packages/computer"},"description":"Cloudflare Computer — a SQLite-backed virtual filesystem with sync to a container-side daemon (computerd).","maintainers":[{"name":"cf-ci-write","email":"npm-readonly@cloudflare.com"},{"name":"dash_service_account","email":"service-account@cloudflare-ui.com"},{"name":"wrangler-publisher","email":"workers-devprod@cloudflare.com"},{"name":"cf-npm-publish","email":"ui-platform-production@cloudflare.com"}],"readme":"# `@cloudflare/computer`\n\nA persistent, SQLite-backed virtual filesystem for Durable Objects,\nwith pluggable command and code execution. Built for agents that need a\nsmall, portable working directory and the tools to read, write, and run\nthings in it.\n\n> [!IMPORTANT]\n> The `@cloudflare/computer` package should be considered suitable for\n> production use. The package contains work-in-progress and experimental\n> components such as the `ContainerBackend`. These should be considered\n> unsuitable for production use. See the [reference below](#status) for more details.\n\n## Status\n\nStable means suitable for production use. Experimental APIs are\nprovided for feedback: they may change or go away in any release, so\nuse them for experiments and prototypes only. Deprecated APIs will be\nremoved in a future release; each one names its replacement.\n\n| Component | Entrypoint | Status |\n| --- | --- | --- |\n| `Workspace`, `withWorkspace`, `getWorkspace`, `workspace.fs`, `workspace.runtime`, and the stub types | `@cloudflare/computer` | Stable |\n| The SQLite filesystem layer (`@cloudflare/dofs`, bundled into this package), including `SQLiteWorkspaceProvider` | `@cloudflare/computer` | Stable |\n| `WorkerJavaScriptBackend` | `@cloudflare/computer/backends/worker-javascript` | Stable |\n| Read-only mounts (`R2Bucket`, `WorkerBundle`) and the Vite plugin | `@cloudflare/computer`, `@cloudflare/computer/vite` | Stable |\n| Agent tools | `@cloudflare/computer/tools`, `@cloudflare/computer/tools/*` | Stable |\n| Host modules for isolate JavaScript: `ws:git`, `ws:artifacts`, `ws:assets`, `ws:tools` | `@cloudflare/computer/modules/git`, `modules/artifacts`, `modules/assets`, `modules/tools` | Stable |\n| Git | `@cloudflare/computer/git` | Stable |\n| Assets and Artifacts | `@cloudflare/computer/assets`, `@cloudflare/computer/artifacts` | Stable |\n| Observability hook and its Cloudflare adapter | `@cloudflare/computer`, `@cloudflare/computer/observe/cloudflare` | Stable |\n| `ContainerBackend` and `withWorkspaceContainer` | `@cloudflare/computer/backends/container` | Experimental |\n| `LegacyContainerBackend` and `withLegacyWorkspaceContainer` | `@cloudflare/computer/backends/container-legacy` | Deprecated: use `ContainerBackend` |\n| Resuming interrupted isolate JavaScript: `onInterrupt: \"restart\"` and `\"replay\"`, `workspace.runtime.recover()`, `unsafeToRepeat()`, and waiting for answers with `ctx.interrupt()`, `pending()` and `respond()` | `@cloudflare/computer`, `@cloudflare/computer/backends/worker-javascript` | Experimental |\n| `WorkerShellBackend` and the shell command groups | `@cloudflare/computer/backends/worker-shell`, `@cloudflare/computer/shell/*` | Experimental |\n| The `ws:container` host module | `@cloudflare/computer/modules/container` | Experimental |\n| `workspace.push()`, `workspace.pull()`, and the sync protocol between the durable object and `computerd` | `@cloudflare/computer` | Experimental |\n| The `computerd` daemon and its container image | `ghcr.io/cloudflare/computer-computerd-linux-x64` | Experimental |\n| The RPC wire protocol between the durable object and `computerd` (`@cloudflare/computer-rpc`) | Internal | Experimental |\n\nA stable surface that runs work on a backend, such as the agent tools'\n`exec` tool, is only as stable as the backend it runs on.\n\nThe sync building blocks inside `@cloudflare/dofs` (`applyChanges`,\n`fetchChanges`, watermarks, and the rest) serve only the sync protocol,\nso they share its experimental status. The rest of `@cloudflare/dofs`\nis stable.\n\n## What you get\n\n- **A filesystem in your Durable Object.** `workspace.fs` looks like\n  `node:fs/promises` — `readFile`, `writeFile`, `mkdir`, `readdir`,\n  `rm`, `grep` — and is durable across DO restarts, backed by the DO's\n  own SQLite storage.\n- **One execution surface, several backends.**\n  `workspace.runtime.exec()` runs a shell command or an ECMAScript\n  module. Pick a full Linux container, a fast in-Worker shell, or an\n  isolated JavaScript runtime, all against the same files.\n- **Batteries for agents.** Ready-made [AI SDK](https://github.com/vercel/ai)\n  tools (`read`, `ls`, `find`, `grep`, `write`, `edit`, `delete`, and optional\n  `exec`), a git client, R2-backed read-only mounts, and helpers for publishing\n  files.\n\nThe Workspace can also run with no execution backend at all, giving you\njust the filesystem.\n\n### Limits\n\n- ~10 GB per workspace (it shares storage with the DO).\n- The container-side filesystem is held in memory. Aim for agent-scale\n  workspaces, not full monorepos.\n- Container access goes through FUSE, so heavy I/O (large `node_modules`\n  installs, big tarball extractions) is slower than a native disk. See\n  [`docs/19_performance.md`](../../docs/19_performance.md).\n\n## Installation\n\n```sh\nnpm install @cloudflare/computer\n```\n\nYour Worker needs the `nodejs_compat` compatibility flag. The\nworker-shell and worker-javascript backends also need a Worker Loader\nbinding, and the worker-shell backend needs the `experimental` flag. Each backend has its\nown binding requirements — see [Choosing a backend](#choosing-a-backend).\n\nOptional peer dependencies, installed only if you use the matching\nfeature: `just-bash` for `@cloudflare/computer/backends/worker-shell`,\n`zod` for every tools entry point, `ai` for\n`@cloudflare/computer/tools` and `@cloudflare/computer/tools/ai-sdk`, and\n`@platformatic/vfs` for the Node-side VFS provider. The pi and TanStack\nAI entry points need nothing beyond `zod`; your agent brings its own\nlibrary.\n\n## Quick start\n\nThe smallest useful thing is a filesystem with no execution backend. Add\n`withWorkspace` to a Durable Object and you have durable files:\n\n```ts\nimport { withWorkspace, getWorkspace } from \"@cloudflare/computer\";\nimport { DurableObject } from \"cloudflare:workers\";\n\nexport class Agent extends withWorkspace(\n  class extends DurableObject<Env> {},\n  (self) => ({ storage: self.ctx.storage }),\n) {}\n\nexport default {\n  async fetch(request: Request, env: Env): Promise<Response> {\n    const id = env.Agent.idFromName(\"user-123\");\n    using ws = await getWorkspace(env.Agent.get(id));\n\n    await ws.fs.writeFile(\"/notes.md\", \"- [ ] ship it\\n\");\n    const notes = await ws.fs.readFile(\"/notes.md\", \"utf8\");\n\n    return new Response(notes);\n  },\n} satisfies ExportedHandler<Env>;\n```\n\n`wrangler.jsonc`:\n\n```jsonc\n{\n  \"compatibility_flags\": [\"nodejs_compat\"],\n  \"durable_objects\": {\n    \"bindings\": [{ \"name\": \"Agent\", \"class_name\": \"Agent\" }]\n  },\n  \"migrations\": [\n    { \"tag\": \"v1\", \"new_sqlite_classes\": [\"Agent\"] }\n  ]\n}\n```\n\nTo run commands against those files, add an execution backend. The\nworker-shell backend needs no container and no Docker, so it's the\nquickest way to get `exec` working. It is experimental; for a stable\nbackend, use the worker-javascript backend, shown in\n[`examples/worker-javascript`](../../examples/worker-javascript):\n\n```ts\nimport { withWorkspace, getWorkspace } from \"@cloudflare/computer\";\nimport { WorkerShellBackend } from \"@cloudflare/computer/backends/worker-shell\";\nimport curlModules from \"@cloudflare/computer/shell/curl\";\nimport { DurableObject } from \"cloudflare:workers\";\n\nexport class Agent extends withWorkspace(\n  class extends DurableObject<Env> {},\n  (self) => ({\n    storage: self.ctx.storage,\n    backends: [\n      new WorkerShellBackend({\n        loader: self.env.LOADER,\n        workspace: { binding: \"Agent\", id: self.ctx.id.toString() },\n        ctx: self.ctx,\n        commands: [curlModules],\n      }),\n    ],\n  }),\n) {}\n```\n\nAdd the loader binding and the `experimental` flag to `wrangler.jsonc`:\n\n```jsonc\n{\n  \"compatibility_flags\": [\"nodejs_compat\", \"experimental\"],\n  \"worker_loaders\": [{ \"binding\": \"LOADER\" }]\n}\n```\n\nThe worker shell ships as feature groups: an always-on core plus\none optional group per command at\n`@cloudflare/computer/shell/<feature>`. Import the groups you want\nand pass them to `WorkerShellBackend`'s `commands` option; a group you\nnever import is unreachable in your bundle and the bundler drops\nit. The optional groups are `curl`, `html-to-markdown`, `python`,\n`sqlite`, `js-exec`, `yq`, `file`, `xan`, and `jq`. `curl` runs on\nthe isolate's global `fetch` (no `undici` in the bundle); egress\nstays governed by the Dynamic Worker's `globalOutbound`.\n\nNow `exec` runs against the same files your `fs` calls wrote:\n\n```ts\nusing ws = await getWorkspace(env.Agent.get(id));\nawait ws.fs.writeFile(\"/hello.txt\", \"world\");\nusing run = await ws.runtime.exec(\"cat /hello.txt\");\nconst { stdout, exitCode } = await run.result();\n```\n\nFor a full, runnable version of this see\n[`examples/worker-shell`](../../examples/worker-shell).\n\n## The filesystem\n\n`workspace.fs` is async, uses absolute paths, and is durable across DO\nrestarts. Strings default to UTF-8; pass a `Uint8Array` or a\n`ReadableStream` for binary content.\n\n```ts\n// Write a string, bytes, or a stream straight to disk.\nawait ws.fs.writeFile(\"/notes/todo.md\", \"- [ ] ship it\\n\");\nawait ws.fs.writeFile(\"/data/blob.bin\", new Uint8Array([1, 2, 3]));\nawait ws.fs.writeFile(\"/uploads/big.csv\", request.body!);\n\n// Read back as a string or as a stream.\nconst todo = await ws.fs.readFile(\"/notes/todo.md\", \"utf8\");\nconst stream = await ws.fs.readFile(\"/uploads/big.csv\");\nreturn new Response(stream);\n\n// Directories.\nawait ws.fs.mkdir(\"/notes/daily\", { recursive: true });\nfor (const entry of await ws.fs.readdir(\"/notes\")) {\n  console.log(entry.isDirectory ? `d ${entry.name}` : `f ${entry.name}`);\n}\n\n// Remove and search.\nawait ws.fs.rm(\"/notes/daily\", { recursive: true });\nconst hits = await ws.fs.grep(\"TODO\", \"/\", { ignoreCase: true });\n```\n\nSee [`docs/04_filesystem_interface.md`](../../docs/04_filesystem_interface.md)\nfor the full surface.\n\n### Read-only mounts\n\nPre-fill part of the tree from an R2 bucket. Files under the mount point\nare read-only; writes reject with `EROFS`.\n\n```ts\nimport { R2Bucket } from \"@cloudflare/computer\";\n\nnew Workspace({\n  storage: ctx.storage,\n  mounts: { \"/workspace/r2\": R2Bucket(env.Bucket) },\n});\n```\n\n`WorkerBundle` copies files that ship inside your Worker, such as skills\nor templates. The copy is read-only, and it is replaced automatically\nwhen a deploy changes the files.\n\nWith Vite, add `computerBundle()` from `@cloudflare/computer/vite` to\nyour plugins and import the directory. This works in `vite dev` too,\nwith edits picked up as you go. Text files only:\n\n```ts\n// vite.config.ts: plugins: [cloudflare(), computerBundle()]\nimport { WorkerBundle } from \"@cloudflare/computer\";\nimport skills from \"computer:bundle/src/skills\";\n\nnew Workspace({\n  storage: ctx.storage,\n  mounts: { \"/workspace/.agents/skills\": WorkerBundle(skills) },\n});\n```\n\nWith wrangler, pass a path instead. It's read from the Worker upload\nunder `/bundle`, so each file has to be uploaded under its own path:\n\n```jsonc\n// wrangler.jsonc, with \"main\": \"src/index.ts\"\n\"find_additional_modules\": true,\n\"rules\": [{ \"type\": \"Data\", \"globs\": [\"skills/**/*\"], \"fallthrough\": true }]\n```\n\n```ts\nmounts: { \"/workspace/.agents/skills\": WorkerBundle(\"skills\") }\n```\n\nSee [Mount Interface](../../docs/06_mount_interface.md#workerbundlesource-options)\nfor the options, types, and how refresh works.\n\n## Running commands and code\n\n`workspace.runtime.exec(source, options)` is the single execution entry\npoint. What `source` means depends on the backend: a shell command for\nthe container and worker-shell backends, an ECMAScript module for the\nworker-javascript backend.\n\n```ts\nusing run = await ws.runtime.exec(\"ls -la /workspace\", { encoding: \"utf8\" });\nconst { stdout, stderr, exitCode } = await run.result();\n```\n\nThe handle is also a `ReadableStream` of live events, so you can forward\noutput as it happens — for example, as Server-Sent Events:\n\n```ts\nasync fetch(request: Request) {\n  const run = await ws.runtime.exec(\"npm test\", { encoding: \"utf8\" });\n\n  const sse = run.pipeThrough(\n    new TransformStream({\n      transform(event, controller) {\n        const frame = `event: ${event.name}\\ndata: ${JSON.stringify(event.value)}\\n\\n`;\n        controller.enqueue(new TextEncoder().encode(frame));\n      },\n    }),\n  );\n\n  return new Response(sse, {\n    headers: { \"content-type\": \"text/event-stream\", \"cache-control\": \"no-cache\" },\n  });\n}\n```\n\nAlongside `exec`, the runtime exposes `getExec`, `killExec`, and\n`disposeExec`. See\n[`docs/05_runtime_interface.md`](../../docs/05_runtime_interface.md).\n\n### Choosing a backend\n\n| Backend | Status | Import | Runs | Needs |\n| --- | --- | --- | --- | --- |\n| **Container** | Experimental | `@cloudflare/computer/backends/container` | Shell commands in full Linux userland (real binaries, `npm`, `node`, network) | A Cloudflare Container running `computerd`, scheduled by the durable object (`scheduling_policy: \"durable_object\"`) |\n| **Container (legacy)** | Deprecated | `@cloudflare/computer/backends/container-legacy` | The same | A Cloudflare Container the platform schedules and sizes from the `containers` block |\n| **Worker shell** | Experimental | `@cloudflare/computer/backends/worker-shell` | Shell commands via [just-bash](https://github.com/vercel-labs/just-bash) in a Dynamic Worker | A Worker Loader binding; `experimental` flag; the `just-bash` package |\n| **Worker JavaScript** | Stable | `@cloudflare/computer/backends/worker-javascript` | ECMAScript modules in a fresh Dynamic Worker | A Worker Loader binding |\n\n- **Container** cold-starts more slowly but gives you a real Linux\n  environment. The container owns its own SQLite-backed VFS and this\n  package syncs the two stores across a capnweb WebSocket. See\n  [`docs/07_injected_service.md`](../../docs/07_injected_service.md) for\n  the container image, and [`examples/container`](../../examples/container).\n- **Container (legacy)** is deprecated. It serves containers the\n  platform schedules from the `containers` block. Move to the container\n  backend, which needs `scheduling_policy: \"durable_object\"` and an\n  `images` map instead.\n- **Worker shell** is fast and needs no container. Every filesystem\n  operation forwards back to the same Durable Object, so there's no\n  second store and no sync round trip. See\n  [`docs/12_worker_backend.md`](../../docs/12_worker_backend.md) and\n  [`examples/worker-shell`](../../examples/worker-shell).\n- **Worker JavaScript** evaluates a module with structured\n  input/results, durable relative imports, configured libraries,\n  Workspace-backed `node:fs/promises`, and host modules such as\n  `ws:git`, `ws:artifacts`, and `ws:container`. It runs after `runtime.exec()` returns; the\n  run stays alive while its event stream is consumed. See\n  [`docs/17_isolate_javascript.md`](../../docs/17_isolate_javascript.md)\n  and [`examples/worker-javascript`](../../examples/worker-javascript).\n\nYou can register several backends on one Workspace and route each call\nto a named one — see [Multiple backends](#multiple-backends).\n\n## Tools for agents\n\n`@cloudflare/computer/tools/ai-sdk` ships `createAITools()`, AI SDK tools that wrap the Workspace\nsurfaces, ready to hand to `generateText`, `streamText`, or an agent\nframework's `getTools()`. The default set is `read`, `ls`, `find`,\n`grep`, `write`, `edit`, and `delete`, plus `exec` when the Workspace\nhas a backend and `publish` when assets are configured. Read-only mode keeps `read`, `ls`, `find`, and\n`grep`.\n\n```ts\nimport { createAITools } from \"@cloudflare/computer/tools/ai-sdk\";\n\nconst tools = createAITools({\n  workspace,\n  read: { maxBytes: 32 * 1024, maxLines: 800 },\n  // The backends the model can use. Omit for every backend.\n  exec: { shell: { description: \"Try this first.\" }, container: {} },\n});\n```\n\nEach backend describes itself to the model, and the text you give in\n`exec` comes first. The model reads both when deciding where a command\nshould run, so write yours in plain language. Truncated text\nmodel output keeps both line and byte continuations; pass both to the\nnext call to avoid transferring the same bytes again. Eligible image and\nPDF bytes are captured once during the bounded tool execution and returned\nas AI SDK `file` model output without re-reading the file. SVG source remains\ntext. `ls`, `find`, and `grep` pass pagination through to the storage layer\nand return `nextOffset` when more results exist. `edit` falls back to\nUnicode- and whitespace-tolerant matching while splicing replacements into\nthe original text, so untargeted content stays byte-for-byte unchanged. File\nmutations share locks across tool sets for the same workspace, and recursive\ndeletion excludes mutations throughout its subtree. See\n[`docs/09_tool_interface.md`](../../docs/09_tool_interface.md).\n\nThe same tools, with the same options, come for two more agent\nlibraries. Each entry point loads only `zod` and its own code, so\nimporting one never pulls in another library.\n\n```ts\nimport { createPiTools } from \"@cloudflare/computer/tools/pi-ai\";\nimport { createTanStackTools } from \"@cloudflare/computer/tools/tanstack-ai\";\n\n// pi: declarations for the model, and a function your loop calls per tool call.\nconst { tools, execute } = createPiTools({ workspace });\n\n// TanStack AI: a list for chat({ tools }). This one asks before changing files.\nconst tanstackTools = createTanStackTools({ workspace, approve: \"mutating\" });\n```\n\n## Git\n\n`workspace.git` is an opt-in typed git client backed by\n[`isomorphic-git`](https://github.com/isomorphic-git/isomorphic-git),\noperating directly on the local SQLite VFS — no backend or shell\nrequired. Enable it by passing `createGitClient()` from\n`@cloudflare/computer/git`:\n\n```ts\nimport { Workspace } from \"@cloudflare/computer\";\nimport { createGitClient } from \"@cloudflare/computer/git\";\n\nconst ws = new Workspace({\n  storage: ctx.storage,\n  git: createGitClient(),\n  defaultGitIdentity: { name: \"Agent\", email: \"agent@example.test\" },\n});\n\nawait ws.git.clone({ url: \"https://github.com/example/repo.git\" });\nawait ws.fs.writeFile(\"/notes.md\", \"hello\");\nawait ws.git.add({ paths: [\"notes.md\"] });\nawait ws.git.commit({ message: \"add notes\" });\n```\n\nThe git subpath bundles `isomorphic-git` lazily and swaps its `pako`\ndependency for the Workers `node:zlib` implementation, so the default\npackage graph stays free of git. There's also an argv entry point\n(`workspace.git.cli({ argv })`), and when git is configured the\nworker-shell backend exposes a built-in `git` command. See\n[`docs/13_git_interface.md`](../../docs/13_git_interface.md).\n\n## Sharing files\n\nTwo ways to get a file out of the workspace and into the world:\n\n- **Assets** (`@cloudflare/computer/assets`): `createAssets(...).share`\n  uploads a workspace file to R2 and returns a presigned URL. Attach it\n  through `WorkspaceOptions.assets` to expose an in-shell\n  `assets publish <path> [<expiry>]` command. See\n  [`docs/14_assets_interface.md`](../../docs/14_assets_interface.md).\n- **Artifacts** (`@cloudflare/computer/artifacts`):\n  `createArtifact(binding, sessionId)` is a wrapper over\n  the [Cloudflare Artifacts](https://developers.cloudflare.com/artifacts/)\n  binding. Every repository name is implicitly prefixed with the session\n  id, so one namespace hosts many isolated sessions. The session id is\n  optional: leave it off and the client spans the namespace, listing and\n  reaching every repository including those other sessions own.\n\n```ts\nimport { createArtifact } from \"@cloudflare/computer/artifacts\";\n\nconst artifacts = createArtifact(env.ARTIFACTS, agentId);\nconst repo = await artifacts.create(\"build-cache\", { description: \"CI artifacts\" });\nconst token = await artifacts.createToken(\"build-cache\", \"read\", 3600);\nconst mine = await artifacts.list(); // only this session's repos\n\nconst all = createArtifact(env.ARTIFACTS);\nawait all.list(); // every repo in the namespace, under its stored name\n```\n\nArtifacts also offers an argv CLI (`artifacts.cli({ argv })`), and when\n`Workspace` is configured with an Artifacts binding the worker-shell\nbackend exposes an `artifacts` command. See\n[`docs/15_artifacts_interface.md`](../../docs/15_artifacts_interface.md).\n\n## Crossing the Worker → DO boundary\n\nThe Durable Object owns the Workspace; a Worker reaches it through a\nstub. `withWorkspace` installs the plumbing, and `getWorkspace(stub)`\nreturns a client:\n\n```ts\nexport default {\n  async fetch(request: Request, env: Env): Promise<Response> {\n    const id = env.Agent.idFromName(\"user-123\");\n    using ws = await getWorkspace(env.Agent.get(id));\n\n    await ws.fs.writeFile(\"/notes.md\", \"hello\");\n    using run = await ws.runtime.exec(\"ls /workspace\");\n    const { exitCode, stdout } = await run.result();\n\n    return new Response(stdout, { status: exitCode === 0 ? 200 : 500 });\n  },\n} satisfies ExportedHandler<Env>;\n```\n\n### Dispose your stubs\n\nThe one gotcha worth internalizing: the RPC layer does not\ngarbage-collect remote stubs. On long-lived sessions undisposed stubs\naccumulate on the peer until the session ends. The rules are short:\n\n- `using` the value from `getWorkspace(...)`.\n- `using` the handle from `ws.runtime.exec(...)`.\n- Don't worry about `ws.fs`, `ws.runtime`, or `ws.git` — they ride with\n  the parent.\n- Pure-value returns (`readFile` as a string, `stat`, `readdir`,\n  `git.cli({...})`) carry no stubs; nothing to dispose.\n\nShort-lived single-shot Workers tear the session down with the request,\nso this matters most on long-lived isolates that keep grabbing fresh\nstubs or on busy `exec` workloads. The full contract is in\n[`docs/11_lifecycle.md`](../../docs/11_lifecycle.md#stub-disposal-contract).\n\nTo hunt leaks, set `CAPNWEB_TRACK_STUBS=1` and read `stubSnapshot()`\nfrom `@cloudflare/computer-rpc/debug`, or hit `GET /__computerd/stubs`\non a computerd instance.\n\n## Package entrypoints\n\n| Entrypoint | Purpose |\n| --- | --- |\n| `@cloudflare/computer` | The `Workspace` wrapper, `workspace.runtime`, stub types, the R2 and Worker bundle mounts, and proxy classes. |\n| `@cloudflare/computer/backends/container` | `ContainerBackend` and `withWorkspaceContainer`. Pulls in the computerd / capnweb sync plumbing. |\n| `@cloudflare/computer/backends/container-legacy` | Deprecated. `LegacyContainerBackend` and `withLegacyWorkspaceContainer`; use `@cloudflare/computer/backends/container` instead. |\n| `@cloudflare/computer/backends/worker-shell` | `WorkerShellBackend` and the bundled just-bash runtime. |\n| `@cloudflare/computer/backends/worker-javascript` | `WorkerJavaScriptBackend`, configured libraries, durable imports, `node:fs/promises`, and host modules. |\n| `@cloudflare/computer/modules/container` | `createContainerModule()` for `ws:container`: run container commands from isolate JavaScript. |\n| `@cloudflare/computer/modules/git` | `createGitModule()` for `ws:git`: confined Git from isolate JavaScript. |\n| `@cloudflare/computer/modules/artifacts` | `createArtifactsModule()` for `ws:artifacts`: Artifacts and git tokens from isolate JavaScript. |\n| `@cloudflare/computer/modules/assets` | `createAssetsModule()` for `ws:assets`: publish a Workspace file from isolate JavaScript. |\n| `@cloudflare/computer/modules/tools` | `createToolBindings()` for `ws:tools`: an agent's own tools, callable from isolate JavaScript. |\n| `@cloudflare/computer/tools` | AI SDK tools for agents: `read`, `ls`, `find`, `grep`, `write`, `edit`, `delete`, and optional `exec` and `publish`. |\n| `@cloudflare/computer/tools/core` | `defineExec()`: the `exec` tool's description, schema, and executor, with no agent library. |\n| `@cloudflare/computer/tools/ai-sdk` | `createAITools()`: the AI SDK tool set for a Workspace, and `forAISDKTools()` to serve AI SDK tools as `ws:tools`. |\n| `@cloudflare/computer/tools/pi-ai` | `createPiTools()`: the same tool set for pi (`@earendil-works/pi-ai`), and `forPiTools()` to serve pi tools as `ws:tools`. |\n| `@cloudflare/computer/tools/tanstack-ai` | `createTanStackTools()`: the same tool set for TanStack AI (`@tanstack/ai`). |\n| `@cloudflare/computer/git` | Opt-in `isomorphic-git` glue for checkouts inside the workspace. |\n| `@cloudflare/computer/assets` | `createAssets` — share a workspace file to R2 as a presigned URL. |\n| `@cloudflare/computer/artifacts` | `createArtifact` and its CLI, an optionally session-scoped wrapper over the Cloudflare Artifacts binding. |\n| `@cloudflare/computer/observe/cloudflare` | Cloudflare-runtime adapter for the observability hook. |\n| `@cloudflare/computer/vite` | `computerBundle()`: a Vite plugin that serves `computer:bundle/<dir>` imports for `WorkerBundle`. |\n| `@cloudflare/computer/vite/client` | Types for `computer:bundle/<dir>` imports. |\n\nA consumer that only uses the container backend never imports the worker\nsubpaths, so unused backend payloads tree-shake away. Wire types shared\nwith the in-container service live in the sibling package\n`@cloudflare/computer-rpc`.\n\n## Advanced\n\n### Multiple backends\n\nA Workspace can carry more than one backend, each registered under a\nstable selector `id` (defaulting to `\"worker-shell\"`,\n`\"container-shell\"`, or `\"worker-javascript\"`). `runtime.exec` uses the\nfirst backend unless the caller names one:\n\n```ts\nconst ws = new Workspace({\n  storage: ctx.storage,\n  backends: [\n    new WorkerShellBackend({ id: \"shell\", loader: env.LOADER, /* ... */ }),\n    new ContainerBackend({ id: \"sandbox\", container: () => this, /* ... */ }),\n  ],\n});\n\nconst grep = await ws.runtime.exec(\"grep -r TODO /workspace\");  // default: \"shell\"\nconst build = await ws.runtime.exec(\"npm test\", { backend: \"sandbox\" });\n```\n\nBackends connect lazily — the first `exec`, `push`, `pull`, or\n`ready(id)` for an id dials it. `ready({ all: true })` pre-warms every\nbackend, which is handy from an agent's `onStart`. Per-backend sync\ncursors are independent, so activity on one never disturbs the other.\n\nA backend that accepts a structured `input` and returns a structured\n`value` declares `callable: true` (the worker-javascript backend does).\nPassing `input` to a non-callable backend is a clear error rather than a\nsilent drop.\n\n### Constructing without the mixin\n\n`withWorkspace` is the shortcut. You can also construct a `Workspace`\ndirectly and expose it through a stub yourself:\n\n```ts\nconst ws = new Workspace({ storage: ctx.storage, backends: [/* ... */] });\nawait ws.ready();\nconst stub = ws.stub();  // crosses the Workers-RPC boundary\n```\n\n### Resuming an incomplete sync\n\nA command can change backend files and then have its post-command pull\nfail; the result exposes `sync: { status: \"pending\", ... }`. Nothing\nfurther is required to recover it. The sync operation and its watermark\nhold the progress durably, so the next `pull()` resumes from where the\nfailed one stopped and drains the rest of the fixed target.\n\nA deferred exec fixes that target when the command finishes, which pins\nthe command's changes rather than capturing a newer target that could\nhave raced ahead. Attempt counts, backoff, and exhaustion are not part\nof the API: a caller that wants to stop trying stops iterating.\n\n### Observability\n\nPass an `observer` to the `Workspace` constructor to receive one span\nper documented operation (`workspace.connect`, `workspace.sync.push`,\n`workspace.sync.pull`, `workspace.runtime.exec.spawn`,\n`workspace.fs.<op>`). The `span(name, attributes, run)` shape fits the\nCloudflare runtime's `ctx.tracing`, OpenTelemetry, or a test recorder;\nattribute values are restricted to `boolean | number | string`. The\ndefault is a zero-cost no-op, so there's no overhead unless you opt in.\nAn adapter for the Cloudflare runtime lives at\n`@cloudflare/computer/observe/cloudflare`.\n\n## Examples\n\n- [`examples/worker-shell`](../../examples/worker-shell) — the\n  worker-shell backend behind a `write` / `read` / `exec` HTTP surface.\n  No container.\n- [`examples/worker-javascript`](../../examples/worker-javascript) — the\n  same shape, running ECMAScript modules instead of shell commands.\n- [`examples/container`](../../examples/container) — the container\n  backend running `computerd`.\n- [`examples/container-legacy`](../../examples/container-legacy) — the\n  deprecated legacy container backend.\n- [`examples/think`](../../examples/think) — a chat agent that uses the\n  workspace as its working directory.\n- [`examples/tutorial`](../../examples/tutorial) — a step-by-step build:\n  write a markdown card on the host, render it to PDF with `pandoc` in\n  the container.\n\n## Documentation\n\nThe design specification lives under [`docs/`](../../docs/README.md).\nIts topic index marks each document stable or experimental.\nStart with [01. VFS](../../docs/01_vfs.md),\n[04. Filesystem Interface](../../docs/04_filesystem_interface.md), and\n[05. Runtime Interface](../../docs/05_runtime_interface.md). It is\nforward-looking — read it for intent, not as a description of the code\ntoday.\n\n## License\n\nMIT. See [`LICENSE`](../../LICENSE).\n","readmeFilename":"README.md"}