{"_id":"@fly/sprites","_rev":"10-b6653b1b307c893cb9bbb617bd6685f0","name":"@fly/sprites","dist-tags":{"dev":"0.0.1-dev.408","rc":"0.0.1-rc37","latest":"0.2.3"},"versions":{"0.0.1-dev":{"name":"@fly/sprites","version":"0.0.1-dev","keywords":["sprites","exec","remote","command","websocket","child_process"],"author":{"name":"Fly.io"},"license":"MIT","_id":"@fly/sprites@0.0.1-dev","maintainers":[{"name":"jeromegn","email":"jeromegn@gmail.com"},{"name":"mrkurt","email":"mrkurt@gmail.com"},{"name":"michaeldwan","email":"m@dwan.io"}],"homepage":"https://github.com/superfly/sprites-js#readme","bugs":{"url":"https://github.com/superfly/sprites-js/issues"},"dist":{"shasum":"449474deacf40a562573b52921bc24605277bfbf","tarball":"https://registry.npmjs.org/@fly/sprites/-/sprites-0.0.1-dev.tgz","fileCount":20,"integrity":"sha512-EnAXje0WrfinNOlB0sWXqOoByBiN60TBpOwmjrem8xwyIPy/fKawhY3bVwzgYjdFyu+mY/tJgegPsMxKhUYxnQ==","signatures":[{"sig":"MEQCIHS9ph79BzP39H3Q+t5p3MAhORLlaLmTKyu4VMxXSd1WAiBdTKY83AFOZ9oekv/5BMe08RgaqA2+RZhN2UbL5uPwaQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51877},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"npm run build && node --test dist/**/*.test.js","build":"tsc","clean":"rm -rf dist","watch":"tsc --watch","test:unit":"npm run build && node --test dist/exec.test.js","prepublishOnly":"npm run clean && npm run build","test:integration":"npm run build && node --test dist/integration.test.js"},"_npmUser":{"name":"mrkurt","email":"mrkurt@gmail.com"},"repository":{"url":"git+https://github.com/superfly/sprites-js.git","type":"git"},"_npmVersion":"10.9.2","description":"JavaScript/TypeScript SDK for Sprites - remote command execution","directories":{},"_nodeVersion":"23.10.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sprites_0.0.1-dev_1762216166225_0.42929110072797716","host":"s3://npm-registry-packages-npm-production"}},"0.0.1-rc.1":{"name":"@fly/sprites","version":"0.0.1-rc.1","keywords":["sprites","exec","remote","command","websocket","child_process"],"author":{"name":"Fly.io"},"license":"MIT","_id":"@fly/sprites@0.0.1-rc.1","maintainers":[{"name":"jeromegn","email":"jeromegn@gmail.com"},{"name":"mrkurt","email":"mrkurt@gmail.com"},{"name":"michaeldwan","email":"m@dwan.io"}],"homepage":"https://github.com/superfly/sprites-js#readme","bugs":{"url":"https://github.com/superfly/sprites-js/issues"},"dist":{"shasum":"92495fbe67f99765e386a094ca83761355b3a552","tarball":"https://registry.npmjs.org/@fly/sprites/-/sprites-0.0.1-rc.1.tgz","fileCount":20,"integrity":"sha512-EHgkv9RpmMCE2g5onOmcVJKX8PazCah69gD5sjZaml9lEI8yI1l7JoyJ9zkx0Nmkvb/ZxM+k9nsR4NTVMxtpvA==","signatures":[{"sig":"MEQCIBqTGiXVbp7XbStTBDYlylf+KW4FmeB3NTBc/aKHkR6UAiBCuWI2v/jHJ0/6EJbzUNQQihJYRdwVx3KCUR+dPLRGnQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fly%2fsprites@0.0.1-rc.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":51877},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"6ed706ac961ce713cb09a78247bc2b4721b8caf9","scripts":{"test":"npm run build && node --test dist/**/*.test.js","build":"tsc","clean":"rm -rf dist","watch":"tsc --watch","test:unit":"npm run build && node --test dist/exec.test.js","prepublishOnly":"npm run clean && npm run build","test:integration":"npm run build && node --test dist/integration.test.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d897b103-17af-4715-a62a-da59ab395a0c"}},"repository":{"url":"git+https://github.com/superfly/sprites-js.git","type":"git"},"_npmVersion":"11.6.1","description":"JavaScript/TypeScript SDK for Sprites - remote command execution","directories":{},"_nodeVersion":"24.11.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"typescript":"^5.6.0","@types/node":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sprites_0.0.1-rc.1_1762217969881_0.7460001747230014","host":"s3://npm-registry-packages-npm-production"}},"0.0.1":{"name":"@fly/sprites","version":"0.0.1","keywords":["sprites","exec","remote","command","websocket","child_process"],"author":{"name":"Fly.io"},"license":"MIT","_id":"@fly/sprites@0.0.1","maintainers":[{"name":"jeromegn","email":"jeromegn@gmail.com"},{"name":"mrkurt","email":"mrkurt@gmail.com"},{"name":"michaeldwan","email":"m@dwan.io"}],"homepage":"https://github.com/superfly/sprites-js#readme","bugs":{"url":"https://github.com/superfly/sprites-js/issues"},"dist":{"shasum":"c308cd6cc073714cd81512580bbd4de08c11d641","tarball":"https://registry.npmjs.org/@fly/sprites/-/sprites-0.0.1.tgz","fileCount":20,"integrity":"sha512-1s+dIVi/pTMP4Aj4Mkg+4LoZ/+a0Kp6l9piPRxvpgEKm11b/eRiZgJwVytwAHeI/vtg2fuwcFExjtXOEfny/TA==","signatures":[{"sig":"MEUCIQDNFc6yFWGCssehI9MNWGHwuGWMXCg9Y7/Ry2S+kbcH+QIgPL8k/Ag6Btge5kuE9GyFm0PhWStlbCDvmewr0VqW5hA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fly%2fsprites@0.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":56587},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"7fb1ca99e72b92a5c228727c8fa4bd5dcde5ffae","scripts":{"test":"npm run build && node --test dist/**/*.test.js","build":"tsc","clean":"rm -rf dist","watch":"tsc --watch","test:unit":"npm run build && node --test dist/exec.test.js","prepublishOnly":"npm run clean && npm run build","test:integration":"npm run build && node --test dist/integration.test.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d897b103-17af-4715-a62a-da59ab395a0c"}},"repository":{"url":"git+https://github.com/superfly/sprites-js.git","type":"git"},"_npmVersion":"11.6.2","description":"JavaScript/TypeScript SDK for Sprites - remote command execution","directories":{},"_nodeVersion":"24.12.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sprites_0.0.1_1766184027193_0.8325558433742124","host":"s3://npm-registry-packages-npm-production"}},"0.0.1-dev.408":{"name":"@fly/sprites","version":"0.0.1-dev.408","keywords":["sprites","exec","remote","command","websocket","child_process"],"author":{"name":"Fly.io"},"license":"MIT","_id":"@fly/sprites@0.0.1-dev.408","maintainers":[{"name":"jeromegn","email":"jeromegn@gmail.com"},{"name":"mrkurt","email":"mrkurt@gmail.com"},{"name":"michaeldwan","email":"m@dwan.io"}],"homepage":"https://github.com/superfly/sprites-js#readme","bugs":{"url":"https://github.com/superfly/sprites-js/issues"},"dist":{"shasum":"d3b170f0007f5710f3cca4a4d00151677286b3fc","tarball":"https://registry.npmjs.org/@fly/sprites/-/sprites-0.0.1-dev.408.tgz","fileCount":35,"integrity":"sha512-9oGxzgPbcVlkH/tdIwQaXcHGHDXyF+oWNFXBdVsD5SBm1xvByMluJGoZLSTR0543Fgv1r25WIMItiMBTRhd1Xg==","signatures":[{"sig":"MEUCICZczliou/s43PuojCoviW4MN2zP8pMG6z1XqJDHvOVqAiEA+l/n85g3NhdApsFtOe2DWBId7Z4CSNez6ORAwbysZ10=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fly%2fsprites@0.0.1-dev.408","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":141160},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"c8a313d78b5b39479fc59ca6b0ea10f943579ba7","scripts":{"test":"npm run build && node --test dist/**/*.test.js","build":"tsc","clean":"rm -rf dist","watch":"tsc --watch","test:unit":"npm run build && node --test dist/exec.test.js","prepublishOnly":"npm run clean && npm run build","test:integration":"npm run build && node --test dist/integration.test.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d897b103-17af-4715-a62a-da59ab395a0c"}},"repository":{"url":"git+https://github.com/superfly/sprites-js.git","type":"git"},"_npmVersion":"11.6.2","description":"JavaScript/TypeScript SDK for Sprites - remote command execution","directories":{},"_nodeVersion":"24.12.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"typescript":"^5.6.0","@types/node":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sprites_0.0.1-dev.408_1768029815344_0.11574728138767121","host":"s3://npm-registry-packages-npm-production"}},"0.0.1-rc37":{"name":"@fly/sprites","version":"0.0.1-rc37","keywords":["sprites","exec","remote","command","websocket","child_process"],"author":{"name":"Fly.io"},"license":"MIT","_id":"@fly/sprites@0.0.1-rc37","maintainers":[{"name":"jeromegn","email":"jeromegn@gmail.com"},{"name":"mrkurt","email":"mrkurt@gmail.com"},{"name":"michaeldwan","email":"m@dwan.io"}],"homepage":"https://github.com/superfly/sprites-js#readme","bugs":{"url":"https://github.com/superfly/sprites-js/issues"},"dist":{"shasum":"ee8ab4d0bc5fbf2d85dd87382638717e401f2e43","tarball":"https://registry.npmjs.org/@fly/sprites/-/sprites-0.0.1-rc37.tgz","fileCount":38,"integrity":"sha512-yzjJ8bsBl1XoECSols0iFvvmlqiog22ODO8F3Z+8mao44ZaMYiOVjRTuSd2g+rE0OFuj0u/ctlpPTHfVdpgWKA==","signatures":[{"sig":"MEQCIEVpVUDkRgN2364JGvF3vXuShdXxi70IIbh9tTc5zIDbAiAV7Yej2At3OBhzgMSYOZMpoUIDt8V1CxLrKmbC9JnoJg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fly%2fsprites@0.0.1-rc37","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":180875},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"8ed4b907fd15873d6914b10db232811d6a833fd2","scripts":{"test":"npm run build && node --test dist/**/*.test.js","build":"tsc","clean":"rm -rf dist","watch":"tsc --watch","test:unit":"npm run build && node --test dist/exec.test.js","prepublishOnly":"npm run clean && npm run build","test:integration":"npm run build && node --test dist/integration.test.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d897b103-17af-4715-a62a-da59ab395a0c"}},"repository":{"url":"git+https://github.com/superfly/sprites-js.git","type":"git"},"_npmVersion":"11.6.2","description":"JavaScript/TypeScript SDK for Sprites - remote command execution","directories":{},"_nodeVersion":"24.13.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"typescript":"^5.6.0","@types/node":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sprites_0.0.1-rc37_1771537123454_0.5402800254172335","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@fly/sprites","version":"0.1.0","keywords":["sprites","exec","remote","command","websocket","child_process"],"author":{"name":"Fly.io"},"license":"MIT","_id":"@fly/sprites@0.1.0","maintainers":[{"name":"jeromegn","email":"jeromegn@gmail.com"},{"name":"mrkurt","email":"mrkurt@gmail.com"},{"name":"michaeldwan","email":"m@dwan.io"}],"homepage":"https://github.com/superfly/sprites-js#readme","bugs":{"url":"https://github.com/superfly/sprites-js/issues"},"dist":{"shasum":"5847cde32fc0f6249ed8a223bf3c91933acddd35","tarball":"https://registry.npmjs.org/@fly/sprites/-/sprites-0.1.0.tgz","fileCount":44,"integrity":"sha512-08jnuPEFmImqy3/iwL+jQJ6IwrHuZlmR3w9dRSSUiZ3N4uMSqWMi5FLyL1UKiL/vtcAb9Cayj8gHsEtckDDfkQ==","signatures":[{"sig":"MEUCIAcE+DNNNC2YAn011jGZR+1VFWtSMgS4ZnHtD95CB/ufAiEAqNX4MBQ5REauc0qqnEsmy5kF55f9+FumWstSbw7G2I4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fly%2fsprites@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":236867},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"9dbffa1b9a3f9705b6ef6be17437b34fa317056b","scripts":{"test":"npm run build && node --test dist/**/*.test.js","build":"tsc","clean":"rm -rf dist","watch":"tsc --watch","test:unit":"npm run build && node --test dist/exec.test.js","prepublishOnly":"npm run clean && npm run build","test:integration":"npm run build && node --test dist/integration.test.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d897b103-17af-4715-a62a-da59ab395a0c"}},"repository":{"url":"git+https://github.com/superfly/sprites-js.git","type":"git"},"_npmVersion":"11.16.0","description":"JavaScript/TypeScript SDK for Sprites - remote command execution","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sprites_0.1.0_1784738157093_0.6021152537686632","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@fly/sprites","version":"0.2.0","keywords":["sprites","exec","remote","command","websocket","child_process"],"author":{"name":"Fly.io"},"license":"MIT","_id":"@fly/sprites@0.2.0","maintainers":[{"name":"jeromegn","email":"jeromegn@gmail.com"},{"name":"mrkurt","email":"mrkurt@gmail.com"},{"name":"michaeldwan","email":"m@dwan.io"}],"homepage":"https://github.com/superfly/sprites-js#readme","bugs":{"url":"https://github.com/superfly/sprites-js/issues"},"dist":{"shasum":"7858c972368b3286e16063704104248ef631b12f","tarball":"https://registry.npmjs.org/@fly/sprites/-/sprites-0.2.0.tgz","fileCount":57,"integrity":"sha512-P1q1mRc8K4Aibox8dvcoGAyK9J+ScWLOgzcvO+qFbHiVfbmDf+lWIXVO9XbAwzmfchOzvQ9XzUEczRErqYAM/g==","signatures":[{"sig":"MEQCIEJ4tswEZSdWVThOb0VCZVTa5IxQkHhATlMO+DDbG7BPAiBxNFDXDtjP9M1KYDDgYbTl6CYg8bi7sgw3EoyzEC9sPQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fly%2fsprites@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":285542},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"7aa6fab826b3ae373ac0da6c6a5479ad7d197744","scripts":{"test":"npm run build && node --test dist/**/*.test.js","build":"tsc","clean":"rm -rf dist","watch":"tsc --watch","test:unit":"npm run build && node --test dist/exec.test.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build","test:integration":"npm run build && node --test dist/integration.test.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d897b103-17af-4715-a62a-da59ab395a0c"}},"repository":{"url":"git+https://github.com/superfly/sprites-js.git","type":"git"},"_npmVersion":"11.16.0","description":"JavaScript/TypeScript SDK for Sprites - remote command execution","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@fly/client-signals":"file:vendor/client-signals"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^24.0.0"},"bundleDependencies":["@fly/client-signals"],"_npmOperationalInternal":{"tmp":"tmp/sprites_0.2.0_1785942827514_0.5485196962489369","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@fly/sprites","version":"0.2.1","keywords":["sprites","fly-io","ai-agents","agent-sandbox","sandbox","microvm","remote-execution","checkpoint-restore"],"author":{"name":"Fly.io"},"license":"MIT","_id":"@fly/sprites@0.2.1","maintainers":[{"name":"jeromegn","email":"jeromegn@gmail.com"},{"name":"mrkurt","email":"mrkurt@gmail.com"},{"name":"michaeldwan","email":"m@dwan.io"}],"homepage":"https://github.com/superfly/sprites-js#readme","bugs":{"url":"https://github.com/superfly/sprites-js/issues"},"dist":{"shasum":"7c70a3be41dbf0969856eb13d3ac3dc4c8ee18ca","tarball":"https://registry.npmjs.org/@fly/sprites/-/sprites-0.2.1.tgz","fileCount":58,"integrity":"sha512-uXCRflyR513rUqpaiacdtQDddJeoGW3VWpQ8LbO982s0vbIvXS5NuBL6Zldz0vpHI7ckyisF4H0OuI5ibEr2zg==","signatures":[{"sig":"MEQCIBQyDcUdntLRrU040SEbwkOzhIf20vJGLB9NAgt1VtegAiAyxii6yMRUK2q9eeBILw5KWoiP+IdjrM2nynnV4GVCoQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fly%2fsprites@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":292115},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"9c16a3bb0a9e548ba3ca3303b9fd3eb3a00d5d8c","scripts":{"test":"npm run build && node --test dist/**/*.test.js","build":"tsc","clean":"rm -rf dist","watch":"tsc --watch","test:unit":"npm run build && node --test dist/exec.test.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build","test:integration":"npm run build && node --test dist/integration.test.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d897b103-17af-4715-a62a-da59ab395a0c"}},"repository":{"url":"git+https://github.com/superfly/sprites-js.git","type":"git"},"_npmVersion":"11.17.0","description":"JavaScript and TypeScript SDK for Fly.io Sprites: computers for agents. Node-style APIs for creating Sprites, running remote commands, moving files, and managing checkpoints.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@fly/client-signals":"file:vendor/client-signals"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^24.0.0"},"bundleDependencies":["@fly/client-signals"],"_npmOperationalInternal":{"tmp":"tmp/sprites_0.2.1_1787749892613_0.7797071815226004","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@fly/sprites","version":"0.2.2","keywords":["sprites","fly-io","ai-agents","agent-sandbox","sandbox","microvm","remote-execution","checkpoint-restore"],"author":{"name":"Fly.io"},"license":"MIT","_id":"@fly/sprites@0.2.2","maintainers":[{"name":"jeromegn","email":"jeromegn@gmail.com"},{"name":"mrkurt","email":"mrkurt@gmail.com"},{"name":"michaeldwan","email":"m@dwan.io"}],"homepage":"https://github.com/superfly/sprites-js#readme","bugs":{"url":"https://github.com/superfly/sprites-js/issues"},"dist":{"shasum":"b1b913b2daa5dfa8fc303fafbc31fdcec76b8b9f","tarball":"https://registry.npmjs.org/@fly/sprites/-/sprites-0.2.2.tgz","fileCount":58,"integrity":"sha512-qlVLIvBBmS/c/i8Ah9ydcdkho/kEW2w5pX7UaUjp4Ye5mBD3eJi53lXBg33F0Rwna+U6fuEELLrDWxGe/Vk97A==","signatures":[{"sig":"MEUCIHUrdl/IGaPjUq7WJ7Bz9I4NwucRLmQYNZiEAcPm39OrAiEAtHy8BTBcamh5GJMexPxYl0PiUcffKCmpHEZaOMFaOHk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fly%2fsprites@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":292594},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"dd06497f25364fae6137012fbfe9bbc024c351ca","scripts":{"test":"npm run build && node --test dist/**/*.test.js","build":"tsc","clean":"rm -rf dist","watch":"tsc --watch","test:unit":"npm run build && node --test dist/exec.test.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build","test:integration":"npm run build && node --test dist/integration.test.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d897b103-17af-4715-a62a-da59ab395a0c"}},"repository":{"url":"git+https://github.com/superfly/sprites-js.git","type":"git"},"_npmVersion":"11.17.0","description":"JavaScript and TypeScript SDK for Fly.io Sprites: computers for agents. Node-style APIs for creating Sprites, running remote commands, moving files, and managing checkpoints.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@fly/client-signals":"file:vendor/client-signals"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^24.0.0"},"bundleDependencies":["@fly/client-signals"],"_npmOperationalInternal":{"tmp":"tmp/sprites_0.2.2_1788277975873_0.8548134661451205","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"_id":"@fly/sprites@0.2.3","bugs":{"url":"https://github.com/superfly/sprites-js/issues"},"dist":{"shasum":"1dd797e7428c17b3038d7bb7cd26cdd82ef40429","tarball":"https://registry.npmjs.org/@fly/sprites/-/sprites-0.2.3.tgz","fileCount":58,"integrity":"sha512-LB3xmHpHLdVECTQej+Vyi/aFFTc/Otf8bZ8GwVe/Hhlx4kIFS0K+9O5B8ru8Llg+cEwvYmzyeV69vNZPpCt0fw==","signatures":[{"sig":"MEUCIQCoJm2O1/Gikssqe6DQcrYGdCMOL6f7RT9Ga1NgKYuy1wIgb/Cxmzc+LwyaVkrbS0OfPN/Yoics14/p0IkFTkRz80Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBeH07qZRSQ1sE5xp/GeYZ9BPcmGClm03xcTQza1/rSuAiEA9IzsiVK1Y6fhRwYovQg+r1gIaswp2qFAIiltEHZTMBk="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fly%2fsprites@0.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":293575},"main":"dist/index.js","name":"@fly/sprites","type":"module","types":"dist/index.d.ts","author":{"name":"Fly.io"},"engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"390eb6353576f5da57ef7ec4b7f1eec5223de5f3","license":"MIT","scripts":{"test":"npm run build && node --test dist/**/*.test.js","build":"tsc","clean":"rm -rf dist","watch":"tsc --watch","test:unit":"npm run build && node --test dist/exec.test.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build","test:integration":"npm run build && node --test dist/integration.test.js"},"version":"0.2.3","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d897b103-17af-4715-a62a-da59ab395a0c"}},"homepage":"https://fly.io/sprites/","keywords":["sprites","fly-io","ai-agents","agent-sandbox","sandbox","microvm","remote-execution","checkpoint-restore"],"repository":{"url":"git+https://github.com/superfly/sprites-js.git","type":"git"},"_npmVersion":"11.19.0","description":"JavaScript and TypeScript SDK for Fly.io Sprites: computers for agents. Node-style APIs for creating Sprites, running remote commands, moving files, and managing checkpoints.","directories":{},"maintainers":[{"name":"jeromegn","email":"jeromegn@gmail.com"},{"name":"mrkurt","email":"mrkurt@gmail.com"},{"name":"michaeldwan","email":"m@dwan.io"}],"_nodeVersion":"24.20.0","dependencies":{"@fly/client-signals":"file:vendor/client-signals"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^7.0.2","@types/node":"^26.4.0"},"bundleDependencies":["@fly/client-signals"],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sprites_0.2.3_1789660282919_0.8554400916254614"}}},"time":{"created":"2025-11-04T00:29:26.166Z","modified":"2026-09-17T15:51:23.396Z","0.0.1-dev":"2025-11-04T00:29:26.425Z","0.0.1-rc.1":"2025-11-04T00:59:30.090Z","0.0.1":"2025-12-19T22:40:27.369Z","0.0.1-dev.408":"2026-01-10T07:23:35.499Z","0.0.1-rc37":"2026-02-19T21:38:43.612Z","0.1.0":"2026-07-22T16:35:57.237Z","0.2.0":"2026-08-05T15:13:47.681Z","0.2.1":"2026-08-26T13:11:32.814Z","0.2.2":"2026-09-01T15:52:56.035Z","0.2.3":"2026-09-17T15:51:23.023Z"},"bugs":{"url":"https://github.com/superfly/sprites-js/issues"},"author":{"name":"Fly.io"},"license":"MIT","homepage":"https://fly.io/sprites/","keywords":["sprites","fly-io","ai-agents","agent-sandbox","sandbox","microvm","remote-execution","checkpoint-restore"],"repository":{"url":"git+https://github.com/superfly/sprites-js.git","type":"git"},"description":"JavaScript and TypeScript SDK for Fly.io Sprites: computers for agents. Node-style APIs for creating Sprites, running remote commands, moving files, and managing checkpoints.","maintainers":[{"name":"jeromegn","email":"jeromegn@gmail.com"},{"name":"mrkurt","email":"mrkurt@gmail.com"},{"name":"michaeldwan","email":"m@dwan.io"}],"readme":"# Sprites JavaScript/TypeScript SDK\n\nRemote command execution for Sprites, with an API that mirrors Node.js `child_process`.\n\n## Requirements\n\n- Node.js 24.0.0 or later\n- No external dependencies (uses only Node.js standard library)\n\n## Installation\n\n```bash\nnpm install @fly/sprites\n```\n\n## Quick Start\n\n```typescript\nimport { SpritesClient } from '@fly/sprites';\n\nconst client = new SpritesClient(process.env.SPRITES_TOKEN!);\nconst sprite = client.sprite('my-sprite');\n\n// Event-based API (most Node.js-like)\nconst cmd = sprite.spawn('ls', ['-la']);\ncmd.stdout.on('data', (chunk) => {\n  process.stdout.write(chunk);\n});\ncmd.on('exit', (code) => {\n  console.log(`Exited with code ${code}`);\n});\n\n// Promise-based API\nconst { stdout } = await sprite.exec('echo hello');\nconsole.log(stdout); // 'hello\\n'\n```\n\n## API Reference\n\n### SpritesClient\n\nMain client for interacting with the Sprites API.\n\n```typescript\nconst client = new SpritesClient(token, options);\n```\n\n**Options:**\n- `baseURL`: API base URL (default: https://api.sprites.dev)\n- `timeout`: HTTP request timeout in ms (default: 30000)\n- `controlMode`: use multiplexed control connections for supported operations (default: false)\n\n**Methods:**\n- `sprite(name: string): Sprite` - Get a handle to a sprite\n- `createSprite(name: string, options?: CreateSpriteOptions): Promise<Sprite>` - Create a new sprite\n- `createSprite(name: string, config?: SpriteConfig, options?: Omit<CreateSpriteOptions, 'config'>): Promise<Sprite>` - Backward-compatible creation form\n- `getSprite(name: string): Promise<Sprite>` - Get sprite information\n- `listSprites(options?: ListOptions): Promise<SpriteList>` - List sprites\n- `watchSprites(options?): Promise<SpriteListStream>` - Stream live sprite state and organization counts\n- `listAllSprites(prefix?: string): Promise<Sprite[]>` - List all sprites (handles pagination)\n- `deleteSprite(name: string): Promise<void>` - Delete a sprite\n- `upgradeSprite(name: string): Promise<void>` - Upgrade a sprite\n- `restartSprite(name: string): Promise<RestartSpriteResult>` - Restart the backing machine\n- `checkSprite(name: string): Promise<SpriteCheck>` - Check sprite health\n- `updateSprite(name: string, options: UpdateSpriteOptions): Promise<Sprite>` - Update URL settings and/or labels\n- `updateURLSettings(name: string, settings: URLSettings): Promise<void>` - Update only URL access settings\n- `static createToken(flyMacaroon: string, orgSlug: string, inviteCode?: string): Promise<string>` - Create an access token\n\nCreation options include `config`, `environment`, `urlSettings`, `labels`, `waitForCapacity`, and the `default` or `dev` `runtime`. List options include `prefix`, `maxResults`, `continuationToken`, and `bulkLoad`.\n\n### Sprite\n\nRepresents a sprite instance.\n\n```typescript\nconst sprite = client.sprite('my-sprite');\n```\n\n**Command Execution Methods:**\n\n```typescript\n// Event-based (mirrors child_process.spawn)\nspawn(command: string, args?: string[], options?: SpawnOptions): SpriteCommand\n\n// Promise-based (mirrors child_process.exec)\nexec(command: string, options?: ExecOptions): Promise<ExecResult>\n\n// Promise-based with separate args (mirrors child_process.execFile)\nexecFile(file: string, args?: string[], options?: ExecOptions): Promise<ExecResult>\n```\n\n**Session Methods:**\n- `createSession(command: string, args?: string[], options?: SpawnOptions): SpriteCommand` - Create a detachable session\n- `attachSession(sessionId: string, options?: SpawnOptions): SpriteCommand` - Attach to a session\n- `listSessions(): Promise<Session[]>` - List active sessions\n\n**Management Methods:**\n- `delete(): Promise<void>` - Delete the sprite\n- `destroy(): Promise<void>` - Alias for delete\n- `upgrade(): Promise<void>` - Upgrade the sprite\n- `restart(): Promise<RestartSpriteResult>` - Restart the backing machine\n- `check(): Promise<SpriteCheck>` - Check sprite health\n- `update(options: UpdateSpriteOptions): Promise<Sprite>` - Update URL settings and/or labels\n- `updateURLSettings(settings: URLSettings): Promise<void>` - Update URL access settings\n\n`Sprite` also exposes checkpoint, service, network-policy, filesystem, port-proxy, and control-connection methods. All resource names and IDs are safely path-encoded by the SDK.\n\nCurrent environment APIs include:\n\n- `execFileHTTP(...)` for non-TTY execution without WebSockets\n- `killSession(...)` with an async iterable progress stream\n- `watchPorts()` for snapshots and live port events\n- `restartService(...)` and `getServiceLogs(...)`\n- network, privileges, and resource policy get/update/delete operations\n- filesystem ownership changes and live filesystem watching\n\n> **HTTP exec protocol limitation:** The current `execFileHTTP` response format\n> prefixes each frame with a type byte but does not include a frame length. HTTP\n> intermediaries are allowed to split or combine transport chunks, so the SDK\n> cannot reliably reconstruct large or high-volume output. The method rejects\n> unrecognized frame types and supports `signal` and `timeout` cancellation, but\n> combined frames can remain ambiguous. Prefer the WebSocket-based `exec` or\n> `execFile` methods until the server protocol provides explicit frame lengths.\n\n### SpriteCommand\n\nRepresents a running command. Extends EventEmitter.\n\n**Properties:**\n- `stdin: Writable` - Standard input stream\n- `stdout: Readable` - Standard output stream\n- `stderr: Readable` - Standard error stream\n\n**Methods:**\n- `wait(): Promise<number>` - Wait for exit and return exit code\n- `kill(signal?: string): void` - Kill the command\n- `close(): void` - Close the command's WebSocket and end its output streams\n- `resize(cols: number, rows: number): void` - Resize TTY (if TTY mode enabled)\n- `exitCode(): number` - Get exit code (-1 if not exited)\n\n**Events:**\n- `exit` - `(code: number) => void` - Emitted when command exits\n- `error` - `(error: Error) => void` - Emitted on error\n- `message` - `(msg: any) => void` - Emitted for text messages (e.g., port notifications)\n\n### Spawn Options\n\n```typescript\ninterface SpawnOptions {\n  cwd?: string;                    // Working directory\n  env?: Record<string, string>;    // Environment variables\n  tty?: boolean;                   // Enable TTY mode\n  rows?: number;                   // TTY rows\n  cols?: number;                   // TTY columns\n  detachable?: boolean;            // Create detachable session\n  sessionId?: string;              // Attach to existing session\n  controlMode?: boolean;           // Enable control mode\n}\n```\n\n### Exec Options\n\nExtends SpawnOptions with:\n- `encoding?: BufferEncoding` - Output encoding (default: 'utf8')\n- `maxBuffer?: number` - Maximum buffer size (default: 10MB)\n- `signal?: AbortSignal` - Abort execution and close its WebSocket\n- `timeout?: number` - Abort execution after this many milliseconds (`0` disables the timeout)\n\n## Examples\n\n### Basic Command Execution\n\n```typescript\n// Streaming output\nconst cmd = sprite.spawn('ls', ['-la']);\ncmd.stdout.pipe(process.stdout);\ncmd.stderr.pipe(process.stderr);\nawait cmd.wait();\n\n// Capture output\nconst { stdout, stderr } = await sprite.exec('ls -la');\nconsole.log(stdout);\n```\n\nWebSocket commands may remain quiet for extended periods; the SDK waits for the\nserver to report command completion instead of treating a lack of output as a\nconnection failure.\n\n### TTY Mode\n\n```typescript\nconst cmd = sprite.spawn('bash', [], {\n  tty: true,\n  rows: 24,\n  cols: 80,\n});\n\nprocess.stdin.pipe(cmd.stdin);\ncmd.stdout.pipe(process.stdout);\n\n// Resize terminal\ncmd.resize(100, 30);\n```\n\n### Port Notifications\n\n```typescript\nconst cmd = sprite.spawn('python', ['app.py']);\n\ncmd.on('message', (msg) => {\n  if (msg.type === 'port_opened') {\n    console.log(`Port ${msg.port} opened by PID ${msg.pid}`);\n    // Start local proxy, etc.\n  }\n});\n```\n\n### Detachable Sessions\n\n```typescript\n// Create a detachable session\nconst session = sprite.createSession('bash');\nawait session.wait();\n\n// List sessions\nconst sessions = await sprite.listSessions();\nconsole.log(sessions);\n\n// Attach to a session\nconst attached = sprite.attachSession(sessions[0].id);\n```\n\n### Error Handling\n\n```typescript\nimport { ExecError } from '@fly/sprites';\n\ntry {\n  await sprite.exec('false');\n} catch (error) {\n  if (error instanceof ExecError) {\n    console.log('Exit code:', error.exitCode);\n    console.log('Stdout:', error.stdout);\n    console.log('Stderr:', error.stderr);\n  }\n}\n```\n\n### Usage attribution\n\nThe SDK adds privacy-safe client signals to Sprites API requests and WebSocket\nhandshakes. These include coarse process context in `Fly-Client-*` headers and\nthe SDK version in `User-Agent`; they do not include command arguments or\nenvironment values.\n\nSet `SPRITES_CLIENT_SIGNALS=0` to disable client-signal detection and headers.\nThe SDK version remains in `User-Agent`. The values `off`, `false`, `no`, and\n`disabled` are also accepted.\n\nSignals are detected once per process, on the first API call, so set this\nbefore the first request. Changing it afterwards has no effect.\n\n### Sprite Management\n\n```typescript\n// Create a sprite\nconst sprite = await client.createSprite('my-sprite', {\n  config: {\n    ramMB: 512,\n    cpus: 1,\n    region: 'ord',\n  },\n  urlSettings: { auth: 'sprite', privateAccess: 'admins' },\n  labels: ['development'],\n  waitForCapacity: true,\n  runtime: 'dev',\n});\n\n// List sprites\nconst sprites = await client.listAllSprites();\n\n// Update and inspect lifecycle state\nawait sprite.update({ labels: ['development', 'typescript'] });\nconst health = await sprite.check();\nawait sprite.restart();\n\n// Delete a sprite\nawait sprite.delete();\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}