{"_id":"@aomi-labs/deploy","_rev":"15-684f13981f8a6e262a21918a778d347b","name":"@aomi-labs/deploy","dist-tags":{"latest":"0.7.2"},"versions":{"0.1.0":{"name":"@aomi-labs/deploy","version":"0.1.0","_id":"@aomi-labs/deploy@0.1.0","maintainers":[{"name":"ceciliaz030","email":"cecilia@foameo.ai"},{"name":"hanzn","email":"windzhaohan@gmail.com"}],"dist":{"shasum":"c0511c31e5eb73b2209c7881e83b2ed9c5d478f5","tarball":"https://registry.npmjs.org/@aomi-labs/deploy/-/deploy-0.1.0.tgz","fileCount":8,"integrity":"sha512-eboDmtKvRMfb0LRMxw63MZ8ASR+icYx0nybcBFt+sMmrEvQu3p3viRX3eesYAI1bFXUUbcF7CbvROVcHR0SKqw==","signatures":[{"sig":"MEUCIAR03lyvQ0AUy8fUifHHTLyyEzXpTH7+Zolk21Pb/YypAiEA9fyQiwz/Klz5xIzcB6JC1WRJrypVwWHIYRPzP1INRyg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":190300},"main":"./dist/index.cjs","type":"module","_from":"file:aomi-labs-deploy-0.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"build":"tsup","clean:dist":"rm -rf dist"},"_npmUser":{"name":"ceciliaz030","email":"cecilia@foameo.ai"},"_resolved":"/tmp/aab27eff7e24bfca036578ce008acc53/aomi-labs-deploy-0.1.0.tgz","_integrity":"sha512-eboDmtKvRMfb0LRMxw63MZ8ASR+icYx0nybcBFt+sMmrEvQu3p3viRX3eesYAI1bFXUUbcF7CbvROVcHR0SKqw==","_npmVersion":"10.8.2","description":"Server-side TypeScript client to the Aomi deployment platform (GitHub publish + backend activate). Node-only; never bundle into a browser.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@octokit/rest":"^21.1.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/deploy_0.1.0_1780561143463_0.006889969135284391","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@aomi-labs/deploy","version":"0.1.1","_id":"@aomi-labs/deploy@0.1.1","maintainers":[{"name":"ceciliaz030","email":"cecilia@foameo.ai"},{"name":"hanzn","email":"windzhaohan@gmail.com"}],"dist":{"shasum":"d8297df257c514def99693838b623b9a0de2a8bd","tarball":"https://registry.npmjs.org/@aomi-labs/deploy/-/deploy-0.1.1.tgz","fileCount":16,"integrity":"sha512-yESQh7vC6ukE1DHbQXuuEe0itV4VnlybSvLrPFNCcNcaagN6RyC8dCnfbrDUdpQxbuVWOvYRcu7jN8acXilGTQ==","signatures":[{"sig":"MEQCIEEW7sXGE71z9WjFUIFuj9K+DTzD35qIpbo7iBJJwQz/AiBAct6W8jNOkf+UKDAXDAzex2nixWkAlTQR/l3XL4W/uQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":300069},"main":"./dist/index.cjs","type":"module","_from":"file:aomi-labs-deploy-0.1.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./lifecycle":{"import":{"types":"./dist/lifecycle.d.ts","default":"./dist/lifecycle.js"},"require":{"types":"./dist/lifecycle.d.cts","default":"./dist/lifecycle.cjs"}}},"scripts":{"build":"tsup","clean:dist":"rm -rf dist"},"_npmUser":{"name":"ceciliaz030","email":"cecilia@foameo.ai"},"_resolved":"/tmp/936df260afec30be058508cb6a4f1377/aomi-labs-deploy-0.1.1.tgz","_integrity":"sha512-yESQh7vC6ukE1DHbQXuuEe0itV4VnlybSvLrPFNCcNcaagN6RyC8dCnfbrDUdpQxbuVWOvYRcu7jN8acXilGTQ==","_npmVersion":"10.8.2","description":"Server-side TypeScript client for the Aomi platform deploy API. Node-only; never bundle into a browser.","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"fast-check":"^4.8.0"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.1.1_1783375055910_0.1500390363150954","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@aomi-labs/deploy","version":"0.2.0","_id":"@aomi-labs/deploy@0.2.0","maintainers":[{"name":"ceciliaz030","email":"cecilia@foameo.ai"},{"name":"hanzn","email":"windzhaohan@gmail.com"}],"dist":{"shasum":"b551ab1ebfc202df89e263e4dc191573c0717c58","tarball":"https://registry.npmjs.org/@aomi-labs/deploy/-/deploy-0.2.0.tgz","fileCount":33,"integrity":"sha512-tG8eSKHxI7uh3vyb4vSQbZwyPRFZkEcGgGFvc9q0g6g4m/11uvv8PBu1MGOreoBAwpz5Td75D1HKotPFhFQiZg==","signatures":[{"sig":"MEUCIBz3nhkiGanK4Ro27EtstMpnneRh9mQVrq5MK/IK1rdkAiEAiYzZuZx84FAEKN4osH/2fILqtbEzQDzQ5uaC9pNw1CA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":789649},"main":"./dist/index.cjs","type":"module","_from":"file:aomi-labs-deploy-0.2.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./bff":{"import":{"types":"./dist/bff/index.d.ts","default":"./dist/bff/index.js"},"require":{"types":"./dist/bff/index.d.cts","default":"./dist/bff/index.cjs"}},"./launch":{"import":{"types":"./dist/launch/index.d.ts","default":"./dist/launch/index.js"},"require":{"types":"./dist/launch/index.d.cts","default":"./dist/launch/index.cjs"}},"./lifecycle":{"import":{"types":"./dist/lifecycle.d.ts","default":"./dist/lifecycle.js"},"require":{"types":"./dist/lifecycle.d.cts","default":"./dist/lifecycle.cjs"}}},"scripts":{"build":"tsup","clean:dist":"rm -rf dist"},"_npmUser":{"name":"ceciliaz030","email":"cecilia@foameo.ai"},"_resolved":"/tmp/09250ebe7fddab65748d254bc2a23ee3/aomi-labs-deploy-0.2.0.tgz","_integrity":"sha512-tG8eSKHxI7uh3vyb4vSQbZwyPRFZkEcGgGFvc9q0g6g4m/11uvv8PBu1MGOreoBAwpz5Td75D1HKotPFhFQiZg==","_npmVersion":"10.8.2","description":"TypeScript toolkit for the Aomi platform deploy API: server client, drop-in BFF route factories, and a browser launch client. Root and ./bff entries are server-only.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"jose":"^5.9.6"},"_hasShrinkwrap":false,"devDependencies":{"fast-check":"^4.8.0"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.2.0_1783480397011_0.9528440829717251","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@aomi-labs/deploy","version":"0.2.1","_id":"@aomi-labs/deploy@0.2.1","maintainers":[{"name":"ceciliaz030","email":"cecilia@foameo.ai"},{"name":"hanzn","email":"windzhaohan@gmail.com"}],"dist":{"shasum":"1ba4ed8e78252be6d5a669f6e120dc7b5e8af34a","tarball":"https://registry.npmjs.org/@aomi-labs/deploy/-/deploy-0.2.1.tgz","fileCount":33,"integrity":"sha512-TWsEnB2zqKpRgnkNBzqA0Qa55DRn6hycrBtHmLfgWj9dwfWP/e8VVk7vFhSAiXKuMw5JhSvaszNLP5noexSiJA==","signatures":[{"sig":"MEYCIQDcfuSoVK8qKGO7T19HPcdEuhSbOpOJFac5zmrfmEZDfQIhAJ1/2Rm776MVKUCKCpvir8UmeM+327Ky9alj7fif/zzl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":966197},"main":"./dist/index.cjs","type":"module","_from":"file:aomi-labs-deploy-0.2.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./bff":{"import":{"types":"./dist/bff/index.d.ts","default":"./dist/bff/index.js"},"require":{"types":"./dist/bff/index.d.cts","default":"./dist/bff/index.cjs"}},"./launch":{"import":{"types":"./dist/launch/index.d.ts","default":"./dist/launch/index.js"},"require":{"types":"./dist/launch/index.d.cts","default":"./dist/launch/index.cjs"}},"./lifecycle":{"import":{"types":"./dist/lifecycle.d.ts","default":"./dist/lifecycle.js"},"require":{"types":"./dist/lifecycle.d.cts","default":"./dist/lifecycle.cjs"}}},"scripts":{"build":"tsup","clean:dist":"rm -rf dist"},"_npmUser":{"name":"ceciliaz030","email":"cecilia@foameo.ai"},"_resolved":"/tmp/914e07e28a8750fd551b68436e72a6ef/aomi-labs-deploy-0.2.1.tgz","_integrity":"sha512-TWsEnB2zqKpRgnkNBzqA0Qa55DRn6hycrBtHmLfgWj9dwfWP/e8VVk7vFhSAiXKuMw5JhSvaszNLP5noexSiJA==","_npmVersion":"10.8.2","description":"TypeScript toolkit for the Aomi platform deploy API: server client, drop-in BFF route factories, and a browser launch client. Root and ./bff entries are server-only.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"jose":"^5.9.6"},"_hasShrinkwrap":false,"devDependencies":{"fast-check":"^4.8.0"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.2.1_1784086072724_0.33955138338564095","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@aomi-labs/deploy","version":"0.2.2","_id":"@aomi-labs/deploy@0.2.2","maintainers":[{"name":"ceciliaz030","email":"cecilia@foameo.ai"},{"name":"hanzn","email":"windzhaohan@gmail.com"}],"dist":{"shasum":"483095afcc29d303511934225d105341d5c4cfac","tarball":"https://registry.npmjs.org/@aomi-labs/deploy/-/deploy-0.2.2.tgz","fileCount":33,"integrity":"sha512-uX7cocLRdgDYYWamXSQyozTGIFW805Te05wdvE17Sbb3eOkQhzKwJWft+/0lx6fXnFnPAzp35vAjRL62tPzPnQ==","signatures":[{"sig":"MEQCIGzYhFIyVbTD3twBD5Tu78lDcnWfJN4kpzPbPTyslrVSAiBgSfbb1mYvxGkZ1dbJhCTrmfCu3vhg/WzjAq2S/Ok3vg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1084022},"main":"./dist/index.cjs","type":"module","_from":"file:aomi-labs-deploy-0.2.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./bff":{"import":{"types":"./dist/bff/index.d.ts","default":"./dist/bff/index.js"},"require":{"types":"./dist/bff/index.d.cts","default":"./dist/bff/index.cjs"}},"./launch":{"import":{"types":"./dist/launch/index.d.ts","default":"./dist/launch/index.js"},"require":{"types":"./dist/launch/index.d.cts","default":"./dist/launch/index.cjs"}},"./lifecycle":{"import":{"types":"./dist/lifecycle.d.ts","default":"./dist/lifecycle.js"},"require":{"types":"./dist/lifecycle.d.cts","default":"./dist/lifecycle.cjs"}}},"scripts":{"build":"tsup","clean:dist":"rm -rf dist"},"_npmUser":{"name":"ceciliaz030","email":"cecilia@foameo.ai"},"_resolved":"/tmp/bbc5432c2734d3c0a025f1882ca081c6/aomi-labs-deploy-0.2.2.tgz","_integrity":"sha512-uX7cocLRdgDYYWamXSQyozTGIFW805Te05wdvE17Sbb3eOkQhzKwJWft+/0lx6fXnFnPAzp35vAjRL62tPzPnQ==","_npmVersion":"10.8.2","description":"TypeScript toolkit for the Aomi platform deploy API: server client, drop-in BFF route factories, and a browser launch client. Root and ./bff entries are server-only.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"jose":"^5.9.6"},"_hasShrinkwrap":false,"devDependencies":{"fast-check":"^4.8.0"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.2.2_1784509968630_0.16969082314671602","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@aomi-labs/deploy","version":"0.2.3","_id":"@aomi-labs/deploy@0.2.3","maintainers":[{"name":"ceciliaz030","email":"cecilia@foameo.ai"},{"name":"hanzn","email":"windzhaohan@gmail.com"}],"dist":{"shasum":"fb3ee813f315c107b93996436e8e96cf3a9e0629","tarball":"https://registry.npmjs.org/@aomi-labs/deploy/-/deploy-0.2.3.tgz","fileCount":33,"integrity":"sha512-pZYkge0+SWps7wsX4pws1MUExcrPCJXpTjb31OW1bx6yuDO09bS56nkCboGn+i29DR002BYhXmVvfPLfIwFBvw==","signatures":[{"sig":"MEQCIDjxXPS20CGy9bSqid/AMgMKes73PqJTfDyQ4TZqw1/sAiBpYWE3C25927hPrr4Yr81sbwHjUSFcBV/ggB1eepv9rg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1084856},"main":"./dist/index.cjs","type":"module","_from":"file:aomi-labs-deploy-0.2.3.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./bff":{"import":{"types":"./dist/bff/index.d.ts","default":"./dist/bff/index.js"},"require":{"types":"./dist/bff/index.d.cts","default":"./dist/bff/index.cjs"}},"./launch":{"import":{"types":"./dist/launch/index.d.ts","default":"./dist/launch/index.js"},"require":{"types":"./dist/launch/index.d.cts","default":"./dist/launch/index.cjs"}},"./lifecycle":{"import":{"types":"./dist/lifecycle.d.ts","default":"./dist/lifecycle.js"},"require":{"types":"./dist/lifecycle.d.cts","default":"./dist/lifecycle.cjs"}}},"scripts":{"build":"tsup","clean:dist":"rm -rf dist"},"_npmUser":{"name":"ceciliaz030","email":"cecilia@foameo.ai"},"_resolved":"/tmp/24441a1c9614695fb1ca74af7a9b5070/aomi-labs-deploy-0.2.3.tgz","_integrity":"sha512-pZYkge0+SWps7wsX4pws1MUExcrPCJXpTjb31OW1bx6yuDO09bS56nkCboGn+i29DR002BYhXmVvfPLfIwFBvw==","_npmVersion":"10.8.2","description":"TypeScript toolkit for the Aomi platform deploy API: server client, drop-in BFF route factories, and a browser launch client. Root and ./bff entries are server-only.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"jose":"^5.9.6"},"_hasShrinkwrap":false,"devDependencies":{"fast-check":"^4.8.0"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.2.3_1784900577828_0.7329528606890221","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@aomi-labs/deploy","version":"0.2.4","_id":"@aomi-labs/deploy@0.2.4","maintainers":[{"name":"ceciliaz030","email":"cecilia@foameo.ai"},{"name":"hanzn","email":"windzhaohan@gmail.com"}],"dist":{"shasum":"3038d9d8f4a8b0221aa5a2c449e603e984653cfe","tarball":"https://registry.npmjs.org/@aomi-labs/deploy/-/deploy-0.2.4.tgz","fileCount":33,"integrity":"sha512-9MPd0BrkhgjuSPDHjSeui+l/BOgTkQ73tXFHI0x4j5vHor/RaEn3ai06Uy0G7qsQ0O/X85nL286SGfNCg7VKcQ==","signatures":[{"sig":"MEYCIQDLQniWGlCTVLDlRPVnbYrJN8o6KX4aWrmHf1sgB1V10gIhANmVb+r8f9A6ZLiAsXeYlB0UBXCn4iP1++SJb98oCqzd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1130847},"main":"./dist/index.cjs","type":"module","_from":"file:aomi-labs-deploy-0.2.4.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./bff":{"import":{"types":"./dist/bff/index.d.ts","default":"./dist/bff/index.js"},"require":{"types":"./dist/bff/index.d.cts","default":"./dist/bff/index.cjs"}},"./launch":{"import":{"types":"./dist/launch/index.d.ts","default":"./dist/launch/index.js"},"require":{"types":"./dist/launch/index.d.cts","default":"./dist/launch/index.cjs"}},"./lifecycle":{"import":{"types":"./dist/lifecycle.d.ts","default":"./dist/lifecycle.js"},"require":{"types":"./dist/lifecycle.d.cts","default":"./dist/lifecycle.cjs"}}},"scripts":{"build":"tsup","clean:dist":"rm -rf dist"},"_npmUser":{"name":"ceciliaz030","email":"cecilia@foameo.ai"},"_resolved":"/tmp/bb4bfdcdf92a95df3d7f616e130081cb/aomi-labs-deploy-0.2.4.tgz","_integrity":"sha512-9MPd0BrkhgjuSPDHjSeui+l/BOgTkQ73tXFHI0x4j5vHor/RaEn3ai06Uy0G7qsQ0O/X85nL286SGfNCg7VKcQ==","_npmVersion":"10.8.2","description":"TypeScript toolkit for the Aomi platform deploy API: server client, drop-in BFF route factories, and a browser launch client. Root and ./bff entries are server-only.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"jose":"^5.9.6"},"_hasShrinkwrap":false,"devDependencies":{"fast-check":"^4.8.0"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.2.4_1785116555367_0.13000796701674933","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@aomi-labs/deploy","version":"0.3.0","_id":"@aomi-labs/deploy@0.3.0","maintainers":[{"name":"ceciliaz030","email":"cecilia@foameo.ai"},{"name":"hanzn","email":"windzhaohan@gmail.com"}],"dist":{"shasum":"7370f2c53e8ad853df696f78c88a8bd3ed0506a3","tarball":"https://registry.npmjs.org/@aomi-labs/deploy/-/deploy-0.3.0.tgz","fileCount":33,"integrity":"sha512-eEukX9KPtjDB9DCG4bTO+lS2WbJkyZGGOW/xEGXQ7HKVhXdOOEurEQtMuz1jvHPjE4WHBvYckI4bmEJA3JFZ2w==","signatures":[{"sig":"MEUCIHUcSZKLIansEi1ss/95lNfFqC/g+R1x7VgqQTeeqlL7AiEAm3ZUUDOXOQTXVIdl3lKDgGjT1cnshUaKQFQMhyMRW4M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1133249},"main":"./dist/index.cjs","type":"module","_from":"file:aomi-labs-deploy-0.3.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./bff":{"import":{"types":"./dist/bff/index.d.ts","default":"./dist/bff/index.js"},"require":{"types":"./dist/bff/index.d.cts","default":"./dist/bff/index.cjs"}},"./launch":{"import":{"types":"./dist/launch/index.d.ts","default":"./dist/launch/index.js"},"require":{"types":"./dist/launch/index.d.cts","default":"./dist/launch/index.cjs"}},"./lifecycle":{"import":{"types":"./dist/lifecycle.d.ts","default":"./dist/lifecycle.js"},"require":{"types":"./dist/lifecycle.d.cts","default":"./dist/lifecycle.cjs"}}},"scripts":{"build":"tsup","clean:dist":"rm -rf dist"},"_npmUser":{"name":"ceciliaz030","email":"cecilia@foameo.ai"},"_resolved":"/tmp/5758c2c6b854c619f52616e3f2680f68/aomi-labs-deploy-0.3.0.tgz","_integrity":"sha512-eEukX9KPtjDB9DCG4bTO+lS2WbJkyZGGOW/xEGXQ7HKVhXdOOEurEQtMuz1jvHPjE4WHBvYckI4bmEJA3JFZ2w==","_npmVersion":"10.8.2","description":"TypeScript toolkit for the Aomi platform deploy API: server client, drop-in BFF route factories, and a browser launch client. Root and ./bff entries are server-only.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"jose":"^5.9.6"},"_hasShrinkwrap":false,"devDependencies":{"fast-check":"^4.8.0"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.3.0_1785154827739_0.5816158868249706","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@aomi-labs/deploy","version":"0.3.1","_id":"@aomi-labs/deploy@0.3.1","maintainers":[{"name":"ceciliaz030","email":"cecilia@foameo.ai"},{"name":"hanzn","email":"windzhaohan@gmail.com"}],"dist":{"shasum":"b0b227c2272ec5ee21a8d9b14a9f11863fdc3226","tarball":"https://registry.npmjs.org/@aomi-labs/deploy/-/deploy-0.3.1.tgz","fileCount":33,"integrity":"sha512-rB+8NEb1SUO1hCOneJyH4JWh18BEe6bLJyhXPz3O0H5GOiI6OFIpIBLdMFSYk4pfhcX6f9VdoUU2nitVFH783g==","signatures":[{"sig":"MEQCIGQNB+85j1dSAh8FGlsvbN6ZvFwFTo8byiWFkkmRkfQeAiAl/2tpZv1emcEPYj5mtnoWw/QG61k2EbYpa+EC2MhIUg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1203510},"main":"./dist/index.cjs","type":"module","_from":"file:aomi-labs-deploy-0.3.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./bff":{"import":{"types":"./dist/bff/index.d.ts","default":"./dist/bff/index.js"},"require":{"types":"./dist/bff/index.d.cts","default":"./dist/bff/index.cjs"}},"./launch":{"import":{"types":"./dist/launch/index.d.ts","default":"./dist/launch/index.js"},"require":{"types":"./dist/launch/index.d.cts","default":"./dist/launch/index.cjs"}},"./lifecycle":{"import":{"types":"./dist/lifecycle.d.ts","default":"./dist/lifecycle.js"},"require":{"types":"./dist/lifecycle.d.cts","default":"./dist/lifecycle.cjs"}}},"scripts":{"build":"tsup","clean:dist":"rm -rf dist"},"_npmUser":{"name":"ceciliaz030","email":"cecilia@foameo.ai"},"_resolved":"/tmp/968de34df8cba551217d0a70cf34fbfa/aomi-labs-deploy-0.3.1.tgz","_integrity":"sha512-rB+8NEb1SUO1hCOneJyH4JWh18BEe6bLJyhXPz3O0H5GOiI6OFIpIBLdMFSYk4pfhcX6f9VdoUU2nitVFH783g==","_npmVersion":"10.8.2","description":"TypeScript toolkit for the Aomi platform deploy API: server client, drop-in BFF route factories, and a browser launch client. Root and ./bff entries are server-only.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"jose":"^5.9.6"},"_hasShrinkwrap":false,"devDependencies":{"fast-check":"^4.8.0"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.3.1_1785196096208_0.49814056019523534","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@aomi-labs/deploy","version":"0.3.2","_id":"@aomi-labs/deploy@0.3.2","maintainers":[{"name":"ceciliaz030","email":"cecilia@foameo.ai"},{"name":"hanzn","email":"windzhaohan@gmail.com"}],"dist":{"shasum":"bb0b6ddb1e168da22f9a439b5f6f859315a3333e","tarball":"https://registry.npmjs.org/@aomi-labs/deploy/-/deploy-0.3.2.tgz","fileCount":39,"integrity":"sha512-wOwjSS9uCrRGy8j+RjmQ+HwOijeqQU8bCAkcxMK66dBh8+j80Es6YGdwp+ZiFHTmkgnbtUeT0+gxgbDE+1quiQ==","signatures":[{"sig":"MEYCIQDz8ZHblFOAe1Ct8LwVe0GktxLwBCaUMgBdGM8lJ7hWTgIhAIqfIfqN6/Mmidu/IyJP6Nk+2wT8bAFE1QZS4WB6oNG3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1316243},"main":"./dist/index.cjs","type":"module","_from":"file:aomi-labs-deploy-0.3.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./bff":{"import":{"types":"./dist/bff/index.d.ts","default":"./dist/bff/index.js"},"require":{"types":"./dist/bff/index.d.cts","default":"./dist/bff/index.cjs"}},"./launch":{"import":{"types":"./dist/launch/index.d.ts","default":"./dist/launch/index.js"},"require":{"types":"./dist/launch/index.d.cts","default":"./dist/launch/index.cjs"}},"./lifecycle":{"import":{"types":"./dist/lifecycle.d.ts","default":"./dist/lifecycle.js"},"require":{"types":"./dist/lifecycle.d.cts","default":"./dist/lifecycle.cjs"}},"./bff/errors":{"import":{"types":"./dist/bff/errors.d.ts","default":"./dist/bff/errors.js"},"require":{"types":"./dist/bff/errors.d.cts","default":"./dist/bff/errors.cjs"}}},"scripts":{"build":"tsup","clean:dist":"rm -rf dist"},"_npmUser":{"name":"ceciliaz030","email":"cecilia@foameo.ai"},"_resolved":"/tmp/827d3e2d1ed7f567eab574704600a63e/aomi-labs-deploy-0.3.2.tgz","_integrity":"sha512-wOwjSS9uCrRGy8j+RjmQ+HwOijeqQU8bCAkcxMK66dBh8+j80Es6YGdwp+ZiFHTmkgnbtUeT0+gxgbDE+1quiQ==","_npmVersion":"10.8.2","description":"TypeScript toolkit for the Aomi platform deploy API: server client, drop-in BFF route factories, and a browser launch client. Root and ./bff entries are server-only.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"jose":"^5.9.6"},"_hasShrinkwrap":false,"devDependencies":{"fast-check":"^4.8.0"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.3.2_1785446945897_0.3045742664069131","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@aomi-labs/deploy","version":"0.4.1","_id":"@aomi-labs/deploy@0.4.1","maintainers":[{"name":"ceciliaz030","email":"cecilia@foameo.ai"},{"name":"hanzn","email":"windzhaohan@gmail.com"}],"dist":{"shasum":"a2cc04d4f2249b19ab6fe9404fad75f6dc011b03","tarball":"https://registry.npmjs.org/@aomi-labs/deploy/-/deploy-0.4.1.tgz","fileCount":39,"integrity":"sha512-kYp/LvWx/97DQahXB0gNpkxtXLJqF9rtt8Kfj7ZNDHixXBUUIjSkpeJUVYaPuQPqwZzzg6dixJkIRxEic2DChQ==","signatures":[{"sig":"MEQCIEcfcGDrmvk0IKAvJXV5VLZANBVL2WCpbVtnVyCYCwbCAiB9YInnGE7OgDMUx/N0oJoAkjmi3BHeuNveQbQJoxRX7g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1453201},"main":"./dist/index.cjs","type":"module","_from":"file:aomi-labs-deploy-0.4.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./bff":{"import":{"types":"./dist/bff/index.d.ts","default":"./dist/bff/index.js"},"require":{"types":"./dist/bff/index.d.cts","default":"./dist/bff/index.cjs"}},"./launch":{"import":{"types":"./dist/launch/index.d.ts","default":"./dist/launch/index.js"},"require":{"types":"./dist/launch/index.d.cts","default":"./dist/launch/index.cjs"}},"./lifecycle":{"import":{"types":"./dist/lifecycle.d.ts","default":"./dist/lifecycle.js"},"require":{"types":"./dist/lifecycle.d.cts","default":"./dist/lifecycle.cjs"}},"./bff/errors":{"import":{"types":"./dist/bff/errors.d.ts","default":"./dist/bff/errors.js"},"require":{"types":"./dist/bff/errors.d.cts","default":"./dist/bff/errors.cjs"}}},"scripts":{"build":"tsup","clean:dist":"rm -rf dist"},"_npmUser":{"name":"ceciliaz030","email":"cecilia@foameo.ai"},"_resolved":"/tmp/49e3c522e36883b9619c2c468f9e68b2/aomi-labs-deploy-0.4.1.tgz","_integrity":"sha512-kYp/LvWx/97DQahXB0gNpkxtXLJqF9rtt8Kfj7ZNDHixXBUUIjSkpeJUVYaPuQPqwZzzg6dixJkIRxEic2DChQ==","_npmVersion":"10.8.2","description":"TypeScript toolkit for the Aomi platform deploy API: server client, drop-in BFF route factories, and a browser launch client. Root and ./bff entries are server-only.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"jose":"^5.9.6"},"_hasShrinkwrap":false,"devDependencies":{"fast-check":"^4.8.0"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.4.1_1785798930654_0.6703405163451468","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@aomi-labs/deploy","version":"0.6.0","_id":"@aomi-labs/deploy@0.6.0","maintainers":[{"name":"ceciliaz030","email":"cecilia@foameo.ai"},{"name":"hanzn","email":"windzhaohan@gmail.com"}],"dist":{"shasum":"03a4a7ccf7ae76572fc49cd410e5c60c750b0c19","tarball":"https://registry.npmjs.org/@aomi-labs/deploy/-/deploy-0.6.0.tgz","fileCount":39,"integrity":"sha512-HDPJXkZt6mk6LG49HoAmlKrRTicyM2IatKT6F/PJ7YKQku8osqZMHuD9wty8oLcJeW06Jjownk2j/bhWSaP78w==","signatures":[{"sig":"MEQCIB0NB1hmhOkDgOmo7zvB8JSgTUHv6mq7F9UPdTKDErWKAiAsl13n3yJsxwdXtCpNfoBMzZxN9IPwmsjRo6D5mBrBDg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1254842},"main":"./dist/index.cjs","type":"module","_from":"file:aomi-labs-deploy-0.6.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./bff":{"import":{"types":"./dist/bff/index.d.ts","default":"./dist/bff/index.js"},"require":{"types":"./dist/bff/index.d.cts","default":"./dist/bff/index.cjs"}},"./launch":{"import":{"types":"./dist/launch/index.d.ts","default":"./dist/launch/index.js"},"require":{"types":"./dist/launch/index.d.cts","default":"./dist/launch/index.cjs"}},"./lifecycle":{"import":{"types":"./dist/lifecycle.d.ts","default":"./dist/lifecycle.js"},"require":{"types":"./dist/lifecycle.d.cts","default":"./dist/lifecycle.cjs"}},"./bff/errors":{"import":{"types":"./dist/bff/errors.d.ts","default":"./dist/bff/errors.js"},"require":{"types":"./dist/bff/errors.d.cts","default":"./dist/bff/errors.cjs"}}},"scripts":{"build":"tsup","clean:dist":"rm -rf dist"},"_npmUser":{"name":"ceciliaz030","email":"cecilia@foameo.ai"},"_resolved":"/tmp/eef3255eeab5228bb8a3600d113cf6dd/aomi-labs-deploy-0.6.0.tgz","_integrity":"sha512-HDPJXkZt6mk6LG49HoAmlKrRTicyM2IatKT6F/PJ7YKQku8osqZMHuD9wty8oLcJeW06Jjownk2j/bhWSaP78w==","_npmVersion":"10.8.2","description":"TypeScript toolkit for the Aomi platform deploy API: server client, drop-in BFF route factories, and a browser launch client. Root and ./bff entries are server-only.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"jose":"^5.9.6"},"_hasShrinkwrap":false,"devDependencies":{"fast-check":"^4.8.0"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.6.0_1786082977407_0.40887938234848265","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@aomi-labs/deploy","version":"0.7.0","_id":"@aomi-labs/deploy@0.7.0","maintainers":[{"name":"ceciliaz030","email":"cecilia@foameo.ai"},{"name":"hanzn","email":"windzhaohan@gmail.com"}],"dist":{"shasum":"7b8f3f521e6a9dd536eed5ac6241174613b0b9e2","tarball":"https://registry.npmjs.org/@aomi-labs/deploy/-/deploy-0.7.0.tgz","fileCount":39,"integrity":"sha512-poZUIvnywzBCEKSpagVKBzGsXrb2u6yjJ7fannzmbsj+V59xoxBTJdCNZABedwmVLVfdqaCwJYZGQYiI/MNbFQ==","signatures":[{"sig":"MEUCIQCGmaHPiidu54FO5Bnsvt//tTDvU6ntuaYqEZsT9zLmigIgD0e7nWysVsJta7Tdw/A0gsy9aPyT0Kwh5wMGpD4iccw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1301623},"main":"./dist/index.cjs","type":"module","_from":"file:aomi-labs-deploy-0.7.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./bff":{"import":{"types":"./dist/bff/index.d.ts","default":"./dist/bff/index.js"},"require":{"types":"./dist/bff/index.d.cts","default":"./dist/bff/index.cjs"}},"./launch":{"import":{"types":"./dist/launch/index.d.ts","default":"./dist/launch/index.js"},"require":{"types":"./dist/launch/index.d.cts","default":"./dist/launch/index.cjs"}},"./lifecycle":{"import":{"types":"./dist/lifecycle.d.ts","default":"./dist/lifecycle.js"},"require":{"types":"./dist/lifecycle.d.cts","default":"./dist/lifecycle.cjs"}},"./bff/errors":{"import":{"types":"./dist/bff/errors.d.ts","default":"./dist/bff/errors.js"},"require":{"types":"./dist/bff/errors.d.cts","default":"./dist/bff/errors.cjs"}}},"scripts":{"build":"tsup","clean:dist":"rm -rf dist"},"_npmUser":{"name":"ceciliaz030","email":"cecilia@foameo.ai"},"_resolved":"/tmp/f813052609718994a89ae1790f6158d5/aomi-labs-deploy-0.7.0.tgz","_integrity":"sha512-poZUIvnywzBCEKSpagVKBzGsXrb2u6yjJ7fannzmbsj+V59xoxBTJdCNZABedwmVLVfdqaCwJYZGQYiI/MNbFQ==","_npmVersion":"10.8.2","description":"TypeScript toolkit for the Aomi platform deploy API: server client, drop-in BFF route factories, and a browser launch client. Root and ./bff entries are server-only.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"jose":"^5.9.6"},"_hasShrinkwrap":false,"devDependencies":{"fast-check":"^4.8.0"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.7.0_1786120029582_0.16983795711058458","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@aomi-labs/deploy","version":"0.7.1","_id":"@aomi-labs/deploy@0.7.1","maintainers":[{"name":"ceciliaz030","email":"cecilia@foameo.ai"},{"name":"hanzn","email":"windzhaohan@gmail.com"}],"dist":{"shasum":"bfc3398d9371d1efb2cebd282a3b013781592024","tarball":"https://registry.npmjs.org/@aomi-labs/deploy/-/deploy-0.7.1.tgz","fileCount":39,"integrity":"sha512-jdNZW6eOI2Rl5BRas7H23RJkOTh+W0LXFAjbP5jsjI7uLwg/3b0z2qk6N5K+0ibWmxY+bI1BlcM2K7o/F+YvNg==","signatures":[{"sig":"MEUCIQDt2msZhB3IfTwW3055i8Gry67kd7PojKxDXov5KOW0CAIgUZXsrxeM8VJFbnU2v1DnYo/YoiW8BVxUpWo5+uGyn2g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1334205},"main":"./dist/index.cjs","type":"module","_from":"file:aomi-labs-deploy-0.7.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./bff":{"import":{"types":"./dist/bff/index.d.ts","default":"./dist/bff/index.js"},"require":{"types":"./dist/bff/index.d.cts","default":"./dist/bff/index.cjs"}},"./launch":{"import":{"types":"./dist/launch/index.d.ts","default":"./dist/launch/index.js"},"require":{"types":"./dist/launch/index.d.cts","default":"./dist/launch/index.cjs"}},"./lifecycle":{"import":{"types":"./dist/lifecycle.d.ts","default":"./dist/lifecycle.js"},"require":{"types":"./dist/lifecycle.d.cts","default":"./dist/lifecycle.cjs"}},"./bff/errors":{"import":{"types":"./dist/bff/errors.d.ts","default":"./dist/bff/errors.js"},"require":{"types":"./dist/bff/errors.d.cts","default":"./dist/bff/errors.cjs"}}},"scripts":{"build":"tsup","clean:dist":"rm -rf dist"},"_npmUser":{"name":"ceciliaz030","email":"cecilia@foameo.ai"},"_resolved":"/tmp/61eda26f812bfe548d8dc8e1c58a5d34/aomi-labs-deploy-0.7.1.tgz","_integrity":"sha512-jdNZW6eOI2Rl5BRas7H23RJkOTh+W0LXFAjbP5jsjI7uLwg/3b0z2qk6N5K+0ibWmxY+bI1BlcM2K7o/F+YvNg==","_npmVersion":"10.9.2","description":"TypeScript toolkit for the Aomi platform deploy API: server client, drop-in BFF route factories, and a browser launch client. Root and ./bff entries are server-only.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"jose":"^5.9.6"},"_hasShrinkwrap":false,"devDependencies":{"fast-check":"^4.8.0"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.7.1_1788413312938_0.7594588847727417","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"_id":"@aomi-labs/deploy@0.7.2","dist":{"shasum":"ab13085238e0e892cbd31ef8fe46182a504551d7","tarball":"https://registry.npmjs.org/@aomi-labs/deploy/-/deploy-0.7.2.tgz","fileCount":39,"integrity":"sha512-fo8CWiuvRRbas2b+1ZoTVUiBKH5KZZeBNIRDmwqGzVY4Cco7dN8l9QG6ircteRjWbm3i4TrYv8kkt70dT4/sSg==","signatures":[{"sig":"MEYCIQC9fnsLpCubMxV6KEcrJMAFTKbxT1p+qE29Nab9B1JZ8AIhAN8LSTiErl3LTlk8G1n26Sa2nOTxZHEELSgSp1NxkPBL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCEvRVq5KQCCbIKtS9LZKFZyBSbSuhtyIUr+Q1QEolfQQIgF48Yv91qiziXu0mPuFufuZ+COXv99T8HHyTu7nfPEcc="}],"unpackedSize":1350874},"main":"./dist/index.cjs","name":"@aomi-labs/deploy","type":"module","_from":"file:aomi-labs-deploy-0.7.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./bff":{"import":{"types":"./dist/bff/index.d.ts","default":"./dist/bff/index.js"},"require":{"types":"./dist/bff/index.d.cts","default":"./dist/bff/index.cjs"}},"./launch":{"import":{"types":"./dist/launch/index.d.ts","default":"./dist/launch/index.js"},"require":{"types":"./dist/launch/index.d.cts","default":"./dist/launch/index.cjs"}},"./lifecycle":{"import":{"types":"./dist/lifecycle.d.ts","default":"./dist/lifecycle.js"},"require":{"types":"./dist/lifecycle.d.cts","default":"./dist/lifecycle.cjs"}},"./bff/errors":{"import":{"types":"./dist/bff/errors.d.ts","default":"./dist/bff/errors.js"},"require":{"types":"./dist/bff/errors.d.cts","default":"./dist/bff/errors.cjs"}}},"scripts":{"build":"tsup","clean:dist":"rm -rf dist"},"version":"0.7.2","_npmUser":{"name":"hanzn","email":"windzhaohan@gmail.com"},"_resolved":"/tmp/e8a5b18d6b3aae23b541152495acd57e/aomi-labs-deploy-0.7.2.tgz","_integrity":"sha512-fo8CWiuvRRbas2b+1ZoTVUiBKH5KZZeBNIRDmwqGzVY4Cco7dN8l9QG6ircteRjWbm3i4TrYv8kkt70dT4/sSg==","_npmVersion":"10.9.2","description":"TypeScript toolkit for the Aomi platform deploy API: server client, drop-in BFF route factories, and a browser launch client. Root and ./bff entries are server-only.","directories":{},"maintainers":[{"name":"ceciliaz030","email":"cecilia@foameo.ai"},{"name":"hanzn","email":"windzhaohan@gmail.com"}],"_nodeVersion":"22.14.0","dependencies":{"jose":"^5.9.6"},"_hasShrinkwrap":false,"devDependencies":{"fast-check":"^4.8.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/deploy_0.7.2_1789563918991_0.8516971177410089"}}},"time":{"created":"2026-06-04T08:19:03.309Z","modified":"2026-09-16T13:05:19.449Z","0.1.0":"2026-06-04T08:19:03.596Z","0.1.1":"2026-07-06T21:57:36.043Z","0.2.0":"2026-07-08T03:13:17.166Z","0.2.1":"2026-07-15T03:27:52.884Z","0.2.2":"2026-07-20T01:12:48.815Z","0.2.3":"2026-07-24T13:42:57.960Z","0.2.4":"2026-07-27T01:42:35.628Z","0.3.0":"2026-07-27T12:20:27.937Z","0.3.1":"2026-07-27T23:48:16.398Z","0.3.2":"2026-07-30T21:29:06.042Z","0.4.1":"2026-08-03T23:15:30.881Z","0.6.0":"2026-08-07T06:09:37.624Z","0.7.0":"2026-08-07T16:27:09.748Z","0.7.1":"2026-09-03T05:28:33.138Z","0.7.2":"2026-09-16T13:05:19.203Z"},"description":"TypeScript toolkit for the Aomi platform deploy API: server client, drop-in BFF route factories, and a browser launch client. Root and ./bff entries are server-only.","maintainers":[{"name":"ceciliaz030","email":"cecilia@foameo.ai"},{"name":"hanzn","email":"windzhaohan@gmail.com"}],"readme":"# @aomi-labs/deploy\n\nTypeScript toolkit for the Aomi platform deploy API, in three cleanly\nseparated layers:\n\n| Entry                         | Runs in     | What it is                                                                                                                     |\n| ----------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------ |\n| `@aomi-labs/deploy`           | server only | `BackendClient` — typed HTTP client holding the activation/service bearer                                                      |\n| `@aomi-labs/deploy/bff`       | server only | Drop-in BFF route factories: the one-shot launch flow + \"Sign in with GitHub\"                                                  |\n| `@aomi-labs/deploy/launch`    | browser     | Typed client for the BFF routes (launch + deployments console), wizard state machine, contracts, OAuth-callback result mapping |\n| `@aomi-labs/deploy/lifecycle` | browser     | Pure helpers projecting deploy records into dashboard state                                                                    |\n\n**There is no UI component to install.** The deploy UI is a fast-churn page,\nnot a stable primitive, so it is not published as a package you vendor — build\nthe UI your product needs on top of the `@aomi-labs/deploy/launch` client, in\nyour own stack. Aomi's own portal builds this flow in React against the same\nclient (`apps/portal/src/features/launch/` in the `aomi-widget` repo) — read it\nas a worked example, don't copy it in.\n\n**Integrating from a coding agent?** This package ships an agent-oriented\nintegration skill at [`skills/aomi-deploy/SKILL.md`](skills/aomi-deploy/SKILL.md).\nPoint Claude Code / Cursor at it (after `npm install`, it's in\n`node_modules/@aomi-labs/deploy/skills/`) to wire the BFF routes, browser\nclient, and a bespoke deploy UI without reading the whole README.\n\n## Drop-in one-shot launch (the partner path)\n\nGive your users \"deploy an agent\" without building any of the flow yourself.\nThree steps:\n\n### 1. Mount the BFF routes (server)\n\n```ts\n// lib/launch.ts (server-only module)\nimport {\n  createLaunchRoutes,\n  createGitHubAuthRoutes,\n  createGitHubSessionCodec,\n} from \"@aomi-labs/deploy/bff\";\nimport { BackendClient } from \"@aomi-labs/deploy\";\n\nconst client = () =>\n  new BackendClient({\n    aomi: {\n      backendUrl: process.env.AOMI_BACKEND_URL!,\n      activationToken: process.env.AOMI_ACTIVATION_TOKEN!, // stays server-side\n    },\n  });\n\nconst session = createGitHubSessionCodec({\n  secret: process.env.LAUNCH_SESSION_SECRET!, // any >= 16-char secret you hold\n});\n\nexport const launch = createLaunchRoutes({\n  client,\n  session: (req) => session.fromRequest(req),\n});\n\nexport const githubAuth = createGitHubAuthRoutes({\n  client,\n  session,\n  callbackPath: \"/api/bff/auth/github/callback\",\n  returnTo: \"/deploy\", // your page\n});\n```\n\nEvery handler is a plain `(Request) => Promise<Response>`, so Next.js App\nRouter mounts are one-liners (any fetch-style server works the same):\n\n```ts\n// app/api/bff/launch/deploy/route.ts\nimport { launch } from \"@/lib/launch\";\nexport const POST = launch.deploy;\n\n// app/api/bff/auth/github/login/route.ts\nimport { githubAuth } from \"@/lib/launch\";\nexport const GET = githubAuth.login;\n```\n\nMount the full set: `launch.{preflight,deploy,create,activate,redeploy}` as\n`POST`, `launch.{status,apps,projects}` as `GET`, and\n`githubAuth.{login,callback,status}` as `GET` + `githubAuth.signout` as `POST`\nunder `/api/bff/auth/github/*`.\n\nDefaults you can override: rate limiting + same-origin CSRF guards\n(`guards`), `APP_DEPLOY_*` env config (`config`), CI enrichment/rerun token\n(`githubToken`, default `process.env.GITHUB_TOKEN`).\n\n### 2. Build the UI (browser, your stack)\n\nPoint a `createLaunchClient` at the routes and drive them. The whole happy\npath is: `fetchGitHubSession` → `githubAppInstallUrl` → `createRepo` →\n`deploy` → `watch` → `activate` → project-scoped `appStatuses` → embed chat. Render it however\nyour product needs — often just a button, a status line, and a chat embed.\n\n```ts\n\"use client\";\nimport { createLaunchClient } from \"@aomi-labs/deploy/launch\";\n\nconst launch = createLaunchClient(); // defaults to /api/bff/launch + /api/bff/auth/github\nconst { deployment, releaseTags, apps } = await launch.deploy({\n  projectId,\n  sourceRef,\n});\n\nawait launch.watch({ deploymentId: deployment.id }, (event) => {\n  setProgress(event.progress); // { completed, total, label }\n});\nawait launch.activate({ projectId, releaseTags, apps });\n```\n\nSee the [`aomi-deploy` skill](skills/aomi-deploy/SKILL.md) for the full flow,\nand Aomi's portal (`apps/portal/src/features/launch/`) for a worked React\nexample to read — not vendor.\n\n### 3. Prerequisites from Aomi\n\n- **Backend URL + activation token** for your platform (ask Aomi, or mint via\n  the Bootstrap API below).\n- **The Aomi GitHub App** does the repo scaffolding and deploy PRs; the OAuth\n  client-id defaults built into the auth routes are Aomi's one-shot App, and\n  the client secret stays in the Aomi backend. You don't register anything on\n  GitHub.\n\nThe flow your users get: Sign in with GitHub → install the Aomi GitHub App →\none-click repo from the template → deploy → CI builds → activate → the live\nagent appears in chat.\n\n## Platform-scoped launch (named partner platforms)\n\nEverything above deploys into your host's **default** platform (the first\nentry of `APP_DEPLOY_PLATFORMS`). A partner integration usually targets a\nspecific named platform instead — `\"somm.finance\"`, not `\"community\"`. Two\nrules make that work:\n\n1. **Every read and write takes an optional `platform`.** Omitted, the BFF\n   falls back to its configured default. Named, the request is scoped to that\n   exact platform — the Aomi manager answers `404` for a name that doesn't\n   exist, and refuses writes against a source that belongs to a different\n   platform. Platform names are deliberately **not** enumerated client-side;\n   there is no directory to list, you pass the exact name your partner gave\n   you.\n\n2. **A deploy target is earned, not asserted.** A source deploys into a\n   platform because it was _claimed_ there — created one-click on it, or\n   connected through the GitHub OAuth ceremony below. Passing a different\n   `platform` string on a later call doesn't move it; the backend rejects the\n   mismatch.\n\n**Bind the platform once**, at construction — do not thread it through every\ncall. Omitting it on a single call falls back to the BFF's _default_ platform,\nwhich is a silent wrong-platform write rather than an error:\n\n```ts\n\"use client\";\nimport {\n  createLaunchClient,\n  LaunchRequestError,\n} from \"@aomi-labs/deploy/launch\";\n\n// The exact name your partner gave you.\nconst launch = createLaunchClient({ platform: \"somm.finance\" });\n\n// Probe the platform by reading the signed-in user's sources on it.\ntry {\n  const { sources } = await launch.deployments.sources();\n} catch (err) {\n  if (err instanceof LaunchRequestError && err.status === 404) {\n    // No such platform — exact match failed; nothing changed.\n  }\n  throw err;\n}\n```\n\n`launch.forPlatform(\"community\")` returns the same client scoped elsewhere, so\nswitching platforms is one explicit act instead of a parameter you might forget\non one call out of fifteen. Any single call may still pass `platform` to\noverride. The launch flow sits on the client; the project console lives under\n`launch.deployments.*` — two different BFF mounts, so the namespace says which\none you are calling.\n\n`LaunchRequestError` carries `status` and the raw `body` on every non-2xx BFF\nresponse, so \"unknown platform\" (404), \"not yours\" (403), and transport\nfailures stay distinguishable.\n\n### Connecting an existing repository\n\nOne-click creates a fresh repo on the user's personal account. A partner\ndeveloper usually arrives with an **existing** repository (often under an\norg). Connecting it is a GitHub OAuth round trip that proves — with the\n_user's_ token, not the App's — that the signed-in GitHub user can actually\nread that repo, then claims the source for that user and that exact platform:\n\n```ts\n// 1. Start: sign platform + repo + a validated return page into OAuth state.\nconst url = await launch.githubAppInstallUrl({\n  platform: PLATFORM,\n  repo: \"PeggyJV/somm-agent\", // owner/name or a github.com URL — normalized\n  returnTo: `${window.location.origin}/projects?platform=${encodeURIComponent(PLATFORM)}`,\n});\nwindow.location.assign(url); // full-page nav to GitHub\n```\n\n`returnTo` must be a page the Aomi backend recognizes for your deployment\n(`AOMI_BUILD_URL` origin, `/projects` or `/operate/deployments/new`, carrying\nexactly `?platform=<the signed platform>`). Anything else is rejected before\nthe state is signed — the callback will never redirect a browser to a URL it\ndidn't validate.\n\n```ts\n// 2. Finish: the callback redirects back to `returnTo` with the outcome in\n// the query string. `connectionResult` maps it for rendering — including the\n// in-progress statuses that are NOT failures (org-owner approval pending,\n// webhook still landing).\nimport { connectionResult } from \"@aomi-labs/deploy/launch\";\n\nconst result = connectionResult({\n  launch: params.launch, // \"bound\" | \"awaiting_install\" | …\n  repo: params.repo,\n  githubError: params.github_error, // capped + sanitized before display\n});\n// result: { status: \"success\", repo } | { status: \"pending\" | \"error\", message }\n```\n\nAfter a `\"bound\"` result the repo shows up in `launch.deployments.sources()`\nand the normal `preflight → deploy → watch → activate` calls work with no\nfurther platform plumbing.\n\n### Watching a deployment\n\nDo not hand-roll a polling loop. `watch` backs off 3s → 30s, treats a 4xx as\nfatal, keeps `completed` monotonic so progress never jumps backwards, and\n**never throws** — a failure arrives as an `error` event, so a render loop has\nexactly one code path:\n\n```ts\nconst { deployment } = await launch.deploy({ projectId, sourceRef });\n\nawait launch.watch({ deploymentId: deployment.id }, (event) => {\n  setProgress(event.progress); // { completed, total, label }\n  if (event.kind === \"terminal\") setState(event.status.state);\n  if (event.kind === \"error\") setError(event.error);\n});\n```\n\nCancel with `{ signal }` from an `AbortController` when the component unmounts.\n\n### Platform context helpers\n\n- `platformParam(searchParams.platform)` — normalize `?platform=` off a\n  router's searchParams value (trims; repeated params mean \"no platform\").\n- `LaunchState.platform` — the persisted wizard state records which platform\n  its progress belongs to. Reset the wizard when the page's platform differs:\n  reusing a cached `projectId` from one platform inside another would route\n  writes to the wrong place.\n\n```ts\nimport { loadLaunch } from \"@aomi-labs/deploy/launch\";\n\n// Scoped load: progress saved under another platform is discarded rather than\n// returned, so a stale projectId can never route a write to the wrong place.\nconst state = loadLaunch(PLATFORM);\n```\n\n### Deployments console endpoints\n\n`launch.deployments.*` covers the project-dashboard surface (default mount\n`/api/bff/deployments`, override via `deploymentsBasePath`): `sources`,\n`status`, `history`, `feed`, `records`, `promote`, `deactivate`, `secrets` /\n`setSecrets` / `deleteSecret`, `requiredSecrets`, `upgradeSdk` /\n`sdkUpgradeStatus`. All inherit the client's bound platform.\n\n`launch.sdkStatus()` is not duplicated here — both mounts serve it from the\nsame handler, so there is one method.\n\n## Core API (`@aomi-labs/deploy`)\n\n### `preflight()`\n\nCalls `POST /api/projects/:projectId/deploy` with `preflight: true`. Returns the deployment record\nwithout opening or updating the platform PR. Use this to render\n`deployment.json` before the user applies.\n\n### `deploy()`\n\nCalls `POST /api/projects/:projectId/deploy` with an immutable source ref.\nThis is the apply step: it writes the platform deployment\nbranch/PR when needed and starts the CI path.\n\n`sourceRef` must be the immutable git commit SHA to deploy. Resolve branches or\ntags before calling the client; the backend does not accept mutable refs.\n\nThe backend reads the project's committed `.aomi/config.json` itself —\nclients never parse or send project configuration.\n\n### `activate()`\n\nCalls `POST /api/platforms/:platform/apps/activate` with one `release_tags`\ntarget. Returns an `ActivateResult` — check `result.ok` and inspect\n`result.activation.apps` for per-app errors on partial failure.\n\n### `status()`\n\nCalls `GET /api/platforms/:platform/deployments/:id/status` (pass\n`deploymentId`), or `GET /api/platforms/:platform/status` without one. The\nstatus endpoint resolves CI against the **recorded built commit** (not the\nlive branch HEAD), preventing deployments from being orphaned by snapshot\nmerges.\n\n### `watchDeployment(deploymentId, platform, onEvent, options?)`\n\nPolls `status()` with exponential backoff (3s → 30s). It does **not** throw:\nevery tick calls `onEvent(event)` with a `DeploymentProgressEvent` —\n`kind: \"progress\" | \"terminal\" | \"warning\" | \"error\"` — and the loop resolves\nafter a `terminal` or `error` event. Cancel via `options.signal`.\n\n```ts\nawait dc.watchDeployment(id, \"community\", (event) => {\n  render(event.progress); // { completed, total, label }\n  if (event.kind === \"terminal\") console.log(\"done:\", event.status.state);\n  if (event.kind === \"error\") console.error(event.error);\n});\n```\n\n## Bootstrap API\n\nThe steps **before** deploy — the twin of the Rust `aomi-build` bootstrap\ncommands. Each maps 1:1 onto a `/api/platforms/*` route.\n\n| Method                           | Route                                                                          | Purpose                                                               |\n| -------------------------------- | ------------------------------------------------------------------------------ | --------------------------------------------------------------------- |\n| `mintToken()`                    | `POST /:p/tokens`                                                              | mint a `platform` or `app` activation token (plaintext returned once) |\n| `listTokens()` / `revokeToken()` | `GET` / `DELETE /:p/tokens[/:id]`                                              | token lifecycle                                                       |\n| `createProject()`                | `POST /api/platforms/:p/projects`                                              | resolve an installed repo → `projectId` for deploy                    |\n| `scaffold()`                     | `POST /api/integrations/github-app/platforms/:p/projects/create-from-template` | one-shot: create a repo from a template → source                      |\n| `listApps()` / `getApp()`        | `GET /:p/apps[/:app]`                                                          | inventory loaded apps (find `app_id` for app-scoped tokens)           |\n| `exchangeGitHubCode()`           | `GET /api/integrations/github-app/oauth/exchange`                              | GitHub OAuth code → identity (sign-in seam)                           |\n| `listUserProjects()`             | `GET /api/integrations/github-app/user/projects`                               | a GitHub user's connected source repos + their apps                   |\n\n### Credential model\n\n`mintToken()` is privileged: minting the **first** platform token needs an\nadmin/service AomiBearer, since no activation token exists yet. Configure it as\n`aomi.adminBearer` (or pass `bearer` per call). All other calls use\n`aomi.activationToken`. This package stays signing-free — mint the bearer with\n`@aomi-labs/service` (workspace package; not yet published to npm — ask Aomi\nfor a token if you are integrating externally) and hand it in.\n\n```ts\nimport { AomiService } from \"@aomi-labs/service\";\nimport { BackendClient } from \"@aomi-labs/deploy\";\n\n// 1. Sign a short-lived admin bearer (holds the EdDSA private key).\nconst svc = AomiService.fromTopology({\n  toml: process.env.AOMI_SERVICE_TOPOLOGY!,\n  selfName: \"aomi-admin\",\n  privateKeyPem: process.env.AOMI_ADMIN_KEY!,\n});\nconst { accessToken: adminBearer } = await svc.mint({\n  role: \"admin\",\n  subject: \"ops-admin\",\n  audience: \"aomi-backend\",\n});\n\n// 2. Mint a platform activation token with it.\nconst dc = new BackendClient({\n  aomi: { backendUrl: process.env.AOMI_BACKEND_URL!, adminBearer },\n});\nconst { token } = await dc.mintToken({\n  platform: \"playground\",\n  scope: \"platform\",\n});\n\n// 3. Resolve the source, then deploy with the minted token.\nconst client = new BackendClient({\n  aomi: { backendUrl: process.env.AOMI_BACKEND_URL!, activationToken: token },\n});\nconst { id } = await client.createProject({\n  platform: \"playground\",\n  repo: \"alice/alice-bot\",\n});\nawait client.deploy({\n  projectId: id,\n  sourceRef: process.env.AOMI_SOURCE_REF!,\n});\n```\n\n## Error handling\n\nEvery failure is a `DeployError` subclass; branch on `err.code`\n(`\"BROWSER_ENVIRONMENT\" | \"INVALID_REQUEST\" | \"BACKEND\" | \"ACTIVATION\"`).\nHTTP failures are `BackendError` (also a `DeployError`) carrying the status\nand raw body:\n\n```ts\nimport { BackendError, DeployError } from \"@aomi-labs/deploy\";\n\ntry {\n  await dc.deploy({ ... });\n} catch (e) {\n  if (e instanceof BackendError) {\n    console.error(e.status); // HTTP status (0 when the fetch itself failed)\n    console.error(e.body);   // raw response body (string | undefined)\n  } else if (e instanceof DeployError) {\n    console.error(e.code);   // \"INVALID_REQUEST\" — rejected before any network call\n  }\n  console.error(e.message);\n}\n```\n\nActivation rejections throw `DeployError` with `code: \"ACTIVATION\"` and the\nper-app failures in `err.reason`; a successful call can still contain per-app\nerrors:\n\n```ts\nconst result = await dc.activate({ ... });\nif (!result.ok) {\n  for (const app of result.activation?.apps ?? []) {\n    if (app.error) console.error(`${app.name}: ${app.error}`);\n  }\n}\n```\n\nIn BFF handlers, `launchErrorResponse(err)` (from `@aomi-labs/deploy/bff`)\nmaps any of these onto `{ error }` JSON with a faithful HTTP status.\n\n## Types\n\nThe real input/output shapes live in `src/types.ts` and are all exported. The\nones you'll touch first:\n\n```ts\ninterface DeployInput {\n  platform: string;\n  projectId: number;\n  /** Immutable git commit SHA. Branch names are rejected by the backend. */\n  sourceRef: string;\n  actor?: string;\n}\n\ninterface ActivateInput {\n  platform: string;\n  target: { kind: \"release_tags\"; value: string[] };\n  apps?: string[]; // optional; backend can derive from release tags\n  targetTags?: string[];\n  actor?: string;\n}\n\ninterface DeploymentStatus {\n  state: \"no_ci\" | \"building\" | \"releasing\" | \"ready\" | \"failed\" | \"pending\";\n  deployment?: DeployPayload;\n  releaseTags: string[];\n  apps?: DeploymentAppStatus[];\n  ci?: { status?: string; url?: string; commitHash?: string };\n  message?: string;\n}\n```\n\n## Browser-safe lifecycle helpers\n\nPortal/dashboard UI that only needs to project deploy records into display\nstate imports the pure helper subpath:\n\n```ts\nimport {\n  deploymentLifecycleFromSource,\n  deploymentLifecycleFromStatus,\n} from \"@aomi-labs/deploy/lifecycle\";\n```\n\n## Example\n\n```ts\nimport { BackendClient } from \"@aomi-labs/deploy\";\n\nconst dc = new BackendClient({\n  aomi: {\n    backendUrl: process.env.AOMI_BACKEND_URL!,\n    activationToken: process.env.AOMI_APP_ACTIVATION_TOKEN!,\n  },\n});\n\nconst preview = await dc.preflight({\n  projectId: 42,\n  sourceRef: process.env.AOMI_SOURCE_REF!,\n});\nconsole.log(JSON.stringify(preview.deployment, null, 2));\n\nconst { deployment } = await dc.deploy({\n  projectId: 42,\n  sourceRef: process.env.AOMI_SOURCE_REF!,\n});\n\nawait dc.activate({\n  platform: \"community\",\n  target: {\n    kind: \"release_tags\",\n    value: deployment.platform.apps.map((app) => app.releaseTag),\n  },\n  apps: deployment.platform.apps.map((app) => app.name),\n  targetTags: [\"staging\"],\n});\n```\n\n## Tests\n\n```\npackages/deploy/test/\n  client.test.ts               — deploy, activate, status, errors\n  bootstrap.test.ts            — tokens, sources, scaffold, apps\n  activation-request.test.ts   — request construction\n  watch-deployment.pbt.test.ts — property-based backoff/timeout\n  launch-routes.test.ts        — BFF factory: deploy/preflight/status/redeploy/projects\n  launch-config.test.ts        — APP_DEPLOY_* env resolution\n  github-auth.test.ts          — session codec + sign-in routes\n  launch-state.test.ts         — wizard state machine\n  launch-url-context.test.ts   — install-redirect matching\n  launch-client-platform.test.ts — bound platform, forPlatform, mount routing\n  launch-connection-result.test.ts — OAuth-callback outcome mapping\n  dashboard-lifecycle.test.ts  — lifecycle projections\n```\n\nRun: `npx vitest run packages/deploy/`\n","readmeFilename":"README.md"}