{"_id":"@cargo-ai/workflow-sdk","_rev":"21-0a98e2e43a82edd3f0369dba3e254c61","name":"@cargo-ai/workflow-sdk","dist-tags":{"latest":"1.0.21"},"versions":{"0.1.1":{"name":"@cargo-ai/workflow-sdk","version":"0.1.1","license":"UNLICENSED","_id":"@cargo-ai/workflow-sdk@0.1.1","maintainers":[{"name":"auree","email":"contact@auree.me"}],"dist":{"shasum":"c51153273926840e79e54e5b8d74a5c264f1c848","tarball":"https://registry.npmjs.org/@cargo-ai/workflow-sdk/-/workflow-sdk-0.1.1.tgz","fileCount":93,"integrity":"sha512-cwToquGMO26EQEYHezuvkgJv5LQj+N2WcGG29z93uwSFeDd4E3qao8dOavc/PgrXdNJ7vSisghK3r7jZG4g0iQ==","signatures":[{"sig":"MEQCIAPlh0g9VfgFjIR4aSQDLi1b6B4B5JgbSSuniRpI4qMeAiAVbI/XeV3DUKURQy5lIqlgoQUHamdL8vULNvqZuN9uZg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":342877},"type":"module","volta":{"node":"22.22.2"},"engines":{"node":">=22"},"exports":{".":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"},"./internal":{"types":"./build/src/internal.d.ts","default":"./build/src/internal.js"},"./package.json":"./package.json"},"gitHead":"f05fc62c8a571401cbab507ea4436d596c5f70e8","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint ./ --fix","test":"vitest run","build":"tsc --build","format":"prettier --write .","generate":"npm run generate:native","lint:check":"eslint ./ --max-warnings=0","test:watch":"vitest","type:check":"tsc --noEmit","afterinstall":"npm run build","format:check":"prettier --check .","generate:native":"tsx scripts/generateNativeIntegration.ts && prettier --write src/native/manifest.generated.ts src/native/types.generated.ts"},"_npmUser":{"name":"auree","email":"contact@auree.me"},"_npmVersion":"10.9.7","description":"Define Cargo workflows in TypeScript. Compiles to the same Node[] artifact the canvas produces and runs on the existing engine.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"3.25.76","acorn":"^8.16.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vite":"8.0.5","eslint":"9.26.0","vitest":"4.1.2","prettier":"3.3.3","typescript":"5.3.2","@types/node":"^20.10.8","@cargo-ai/api":"*","@types/estree":"^1.0.9","@cargo-ai/utils":"*","@cargo-ai/ts-config":"*","@cargo-ai/eslint-config":"*","@cargo-ai/prettier-config":"*"},"_npmOperationalInternal":{"tmp":"tmp/workflow-sdk_0.1.1_1781064201025_0.08101164588541976","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@cargo-ai/workflow-sdk","version":"1.0.2","license":"UNLICENSED","_id":"@cargo-ai/workflow-sdk@1.0.2","maintainers":[{"name":"auree","email":"contact@auree.me"}],"dist":{"shasum":"9b9c020af7b0a6a2df102c880f90a70ef6ee94d4","tarball":"https://registry.npmjs.org/@cargo-ai/workflow-sdk/-/workflow-sdk-1.0.2.tgz","fileCount":87,"integrity":"sha512-WjAT0bEctMA/YmvOICS7+/k8G4iBpXLuFr045MPYu8G2P0ATG6FhS+16fVZYBEofK2ijrC/bStvoNfcIglpDMw==","signatures":[{"sig":"MEUCIQCL4Kb30XRO1sZ9bR8Sjkzzt6JAaJ/LK4iPQolOLBI/nwIgMnYUbneau4EZrCK1hnYGXBii9BWSTluHkIPmCroCrcs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":343624},"type":"module","volta":{"node":"22.22.2"},"engines":{"node":">=22"},"exports":{".":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"},"./internal":{"types":"./build/src/internal.d.ts","default":"./build/src/internal.js"},"./package.json":"./package.json"},"gitHead":"5d18f674c4da3cc08391a3a8dd7e2e4471552edc","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint ./ --fix","test":"vitest run","build":"tsc --build","format":"prettier --write .","generate":"npm run generate:native","lint:check":"eslint ./ --max-warnings=0","test:watch":"vitest","type:check":"tsc --noEmit","afterinstall":"npm run build","format:check":"prettier --check .","generate:native":"tsx scripts/generateNativeIntegration.ts && prettier --write src/native/manifest.generated.ts src/native/types.generated.ts"},"_npmUser":{"name":"auree","email":"contact@auree.me"},"_npmVersion":"10.9.7","description":"Define Cargo workflows in TypeScript. Compiles to the same Node[] artifact the canvas produces and runs on the existing engine.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"4.4.3","acorn":"^8.16.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vite":"8.1.0","eslint":"9.26.0","vitest":"4.1.2","prettier":"3.3.3","typescript":"5.3.2","@types/node":"^20.10.8","@cargo-ai/api":"*","@types/estree":"^1.0.9","@cargo-ai/utils":"*","@cargo-ai/ts-config":"*","@cargo-ai/eslint-config":"*","@cargo-ai/prettier-config":"*"},"_npmOperationalInternal":{"tmp":"tmp/workflow-sdk_1.0.2_1783025480078_0.9367196089523713","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@cargo-ai/workflow-sdk","version":"1.0.3","license":"UNLICENSED","_id":"@cargo-ai/workflow-sdk@1.0.3","maintainers":[{"name":"auree","email":"contact@auree.me"}],"dist":{"shasum":"2810a8537e111fdf0621e0e23b76be81fe5afc8d","tarball":"https://registry.npmjs.org/@cargo-ai/workflow-sdk/-/workflow-sdk-1.0.3.tgz","fileCount":84,"integrity":"sha512-d5a0IdxhKm3PjaQITJ55d3gEqQh8mR3rMLAIHm35tE5iV0SyVWUDnV9DuCwvZJ2GnfvyVaiwWceQjMTQlDnlmg==","signatures":[{"sig":"MEUCIEKRCufGyid4XsvV5DOQxd8FZ4w49wG703r9U/OQGBZmAiEAkeQHZCN2J2HX5R5xQZTu6GeSdOeyJKS/O1JasgzYmKU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":388512},"type":"module","volta":{"node":"22.22.2"},"engines":{"node":">=22"},"exports":{".":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"},"./internal":{"types":"./build/src/internal.d.ts","default":"./build/src/internal.js"},"./package.json":"./package.json"},"gitHead":"75a8e21da5398ba236c0be51556f6b66d3a7e0ca","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint ./ --fix","test":"vitest run","build":"tsc --build","format":"prettier --write .","generate":"npm run generate:native","lint:check":"eslint ./ --max-warnings=0","test:watch":"vitest","type:check":"tsc --noEmit","afterinstall":"npm run build","format:check":"prettier --check .","generate:native":"tsx scripts/generateNativeIntegration.ts && prettier --write src/native/manifest.generated.ts src/native/types.generated.ts"},"_npmUser":{"name":"auree","email":"contact@auree.me"},"_npmVersion":"10.9.7","description":"Define Cargo workflows in TypeScript. Compiles to the same Node[] artifact the canvas produces and runs on the existing engine.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"4.4.3","acorn":"^8.16.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vite":"8.1.0","eslint":"9.26.0","vitest":"4.1.2","prettier":"3.3.3","typescript":"5.3.2","@types/node":"^20.10.8","@cargo-ai/api":"*","@types/estree":"^1.0.9","@cargo-ai/types":"*","@cargo-ai/utils":"*","@cargo-ai/ts-config":"*","@cargo-ai/eslint-config":"*","@cargo-ai/prettier-config":"*"},"_npmOperationalInternal":{"tmp":"tmp/workflow-sdk_1.0.3_1783441435132_0.062407836053978816","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@cargo-ai/workflow-sdk","version":"1.0.4","license":"UNLICENSED","_id":"@cargo-ai/workflow-sdk@1.0.4","maintainers":[{"name":"auree","email":"contact@auree.me"}],"dist":{"shasum":"6022358e8abd6779a441435c4b21164dba453f0b","tarball":"https://registry.npmjs.org/@cargo-ai/workflow-sdk/-/workflow-sdk-1.0.4.tgz","fileCount":84,"integrity":"sha512-kdFykmUtJP6i2JuJCjnzDXYQf8YgOyQQFrKKOOUejdE3gZaP+ci81BGYDNjjootLVKsUM1BP/NpNkwL3m4od7w==","signatures":[{"sig":"MEUCIQCk8jBwHaOK+qjYnjxdUPdV9gL51w9lSzjwQBt/2NVg6wIgKF86PpRKOM6/W8lbLE+PyQLqNiygD1ZpGBaggRKbvb4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":391899},"type":"module","volta":{"node":"22.22.2"},"engines":{"node":">=22"},"exports":{".":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"},"./internal":{"types":"./build/src/internal.d.ts","default":"./build/src/internal.js"},"./package.json":"./package.json"},"gitHead":"e7210dc3366762efb5cadbb1ac7f97ba914146b9","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint ./ --fix","test":"vitest run","build":"tsc --build","format":"prettier --write .","generate":"npm run generate:native","lint:check":"eslint ./ --max-warnings=0","test:watch":"vitest","type:check":"tsc --noEmit","afterinstall":"npm run build","format:check":"prettier --check .","generate:native":"tsx scripts/generateNativeIntegration.ts && prettier --write src/native/manifest.generated.ts src/native/types.generated.ts"},"_npmUser":{"name":"auree","email":"contact@auree.me"},"_npmVersion":"10.9.7","description":"Define Cargo workflows in TypeScript. Compiles to the same Node[] artifact the canvas produces and runs on the existing engine.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"4.4.3","acorn":"^8.16.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vite":"8.1.0","eslint":"9.26.0","vitest":"4.1.2","prettier":"3.3.3","typescript":"5.3.2","@types/node":"^20.10.8","@cargo-ai/api":"*","@types/estree":"^1.0.9","@cargo-ai/types":"*","@cargo-ai/utils":"*","@cargo-ai/ts-config":"*","@cargo-ai/eslint-config":"*","@cargo-ai/prettier-config":"*"},"_npmOperationalInternal":{"tmp":"tmp/workflow-sdk_1.0.4_1783755513687_0.12725871684648626","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@cargo-ai/workflow-sdk","version":"1.0.5","license":"UNLICENSED","_id":"@cargo-ai/workflow-sdk@1.0.5","maintainers":[{"name":"auree","email":"contact@auree.me"}],"dist":{"shasum":"74e73cca3ca943fd61a5c75a859f97b6722111f0","tarball":"https://registry.npmjs.org/@cargo-ai/workflow-sdk/-/workflow-sdk-1.0.5.tgz","fileCount":93,"integrity":"sha512-SGciW8E0QVxzsIAUdPnXLRZSa9yakWJ1j4oFkVRu95Fb56hbLkSw6ysPyRj+CSpdZOgBgM11BzpbQJckN8d5tA==","signatures":[{"sig":"MEUCIBAAy8FHjJu9ypblbOSLtT2aB16/7PvI9uwf5UBU7EHgAiEA0tcQQ2RfMMCfR7mRQHAeJV4J3IHfhS1qqVv2mPmJh28=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":407305},"type":"module","volta":{"node":"22.22.2"},"engines":{"node":">=22"},"exports":{".":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"},"./internal":{"types":"./build/src/internal.d.ts","default":"./build/src/internal.js"},"./package.json":"./package.json"},"gitHead":"bb4c05128aed9312d893d18e4b12337389e220d0","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint ./ --fix","test":"vitest run","build":"tsc --build","format":"prettier --write .","lint:check":"eslint ./ --max-warnings=0","test:watch":"vitest","type:check":"tsc --noEmit","afterinstall":"npm run build","format:check":"prettier --check ."},"_npmUser":{"name":"auree","email":"contact@auree.me"},"_npmVersion":"10.9.7","description":"Define Cargo workflows in TypeScript. Compiles to the same Node[] artifact the canvas produces and runs on the existing engine.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"4.4.3","acorn":"^8.16.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"8.1.0","eslint":"9.26.0","vitest":"4.1.2","prettier":"3.3.3","typescript":"5.3.2","@types/node":"^20.10.8","@types/estree":"^1.0.9","@cargo-ai/types":"*","@cargo-ai/utils":"*","@cargo-ai/ts-config":"*","@cargo-ai/eslint-config":"*","@cargo-ai/prettier-config":"*"},"_npmOperationalInternal":{"tmp":"tmp/workflow-sdk_1.0.5_1783814928424_0.17150755181389732","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@cargo-ai/workflow-sdk","version":"1.0.6","license":"UNLICENSED","_id":"@cargo-ai/workflow-sdk@1.0.6","maintainers":[{"name":"auree","email":"contact@auree.me"}],"dist":{"shasum":"f7d692413628833ba86736dc86590b8ba458c495","tarball":"https://registry.npmjs.org/@cargo-ai/workflow-sdk/-/workflow-sdk-1.0.6.tgz","fileCount":96,"integrity":"sha512-fSrl6aPB0sEV/Fn7ioH1mrI+uCMOW8fZ2MDf/+akr1rHBU9XSHwWN3ryHeDNBYLVZkC4/vVy7gYzqMVZqa2C0A==","signatures":[{"sig":"MEYCIQD86NrgiO/eZtYkLgf8ltwibhWnoy8hsDLXtKFKr7/7NwIhAIQLRKKzcbofiMjZH8UwQLBtnsvymyPj65ReQdzm43Rx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":410269},"type":"module","volta":{"node":"22.22.2"},"engines":{"node":">=22"},"exports":{".":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"},"./internal":{"types":"./build/src/internal.d.ts","default":"./build/src/internal.js"},"./package.json":"./package.json"},"gitHead":"86a751ab9f79f94c1ea3c92da0af3983b3f3f15f","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint ./ --fix","test":"vitest run","build":"tsc --build","format":"prettier --write .","lint:check":"eslint ./ --max-warnings=0","test:watch":"vitest","type:check":"tsc --noEmit","afterinstall":"npm run build","format:check":"prettier --check ."},"_npmUser":{"name":"auree","email":"contact@auree.me"},"_npmVersion":"10.9.7","description":"Define Cargo workflows in TypeScript. Compiles to the same Node[] artifact the canvas produces and runs on the existing engine.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"4.4.3","acorn":"^8.16.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"8.1.0","eslint":"9.26.0","vitest":"4.1.2","prettier":"3.3.3","typescript":"5.3.2","@types/node":"^20.10.8","@types/estree":"^1.0.9","@cargo-ai/types":"*","@cargo-ai/utils":"*","@cargo-ai/ts-config":"*","@cargo-ai/eslint-config":"*","@cargo-ai/prettier-config":"*"},"_npmOperationalInternal":{"tmp":"tmp/workflow-sdk_1.0.6_1783830449623_0.6155702599938186","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@cargo-ai/workflow-sdk","version":"1.0.7","license":"UNLICENSED","_id":"@cargo-ai/workflow-sdk@1.0.7","maintainers":[{"name":"auree","email":"contact@auree.me"}],"dist":{"shasum":"27cf61a3dd4f2971eb6ab154855975f77702d77b","tarball":"https://registry.npmjs.org/@cargo-ai/workflow-sdk/-/workflow-sdk-1.0.7.tgz","fileCount":96,"integrity":"sha512-xREk69Z8zxtB8NADsAxg+A2Qtdwx1nmPqIrtI43rxo9b3rC75PJ/Q/Yc32iKGtLDQmr63IowqLlvnMXZUyGIew==","signatures":[{"sig":"MEYCIQDolfFPpOBhdBEcBUzteAzFzndln4GuhpEjKWdlUKl+9gIhALbzUpnDIXNO3Sinx9u/bI5x6X6Rc86Y76N3eq1ZAPH1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":417876},"type":"module","volta":{"node":"22.22.2"},"engines":{"node":">=22"},"exports":{".":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"},"./internal":{"types":"./build/src/internal.d.ts","default":"./build/src/internal.js"},"./package.json":"./package.json"},"gitHead":"d4b3f8836a3b4d54cf67d16025ff06c82ed531b5","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint ./ --fix","test":"vitest run","build":"tsc --build","format":"prettier --write .","lint:check":"eslint ./ --max-warnings=0","test:watch":"vitest","type:check":"tsc --noEmit","afterinstall":"npm run build","format:check":"prettier --check ."},"_npmUser":{"name":"auree","email":"contact@auree.me"},"_npmVersion":"10.9.7","description":"Define Cargo workflows in TypeScript. Compiles to the same Node[] artifact the canvas produces and runs on the existing engine.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"4.4.3","acorn":"^8.16.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"8.1.0","eslint":"9.26.0","vitest":"4.1.2","prettier":"3.3.3","typescript":"5.3.2","@types/node":"^20.10.8","@types/estree":"^1.0.9","@cargo-ai/types":"*","@cargo-ai/utils":"*","@cargo-ai/ts-config":"*","@cargo-ai/eslint-config":"*","@cargo-ai/prettier-config":"*"},"_npmOperationalInternal":{"tmp":"tmp/workflow-sdk_1.0.7_1784090941743_0.5619576161634781","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@cargo-ai/workflow-sdk","version":"1.0.8","license":"UNLICENSED","_id":"@cargo-ai/workflow-sdk@1.0.8","maintainers":[{"name":"auree","email":"contact@auree.me"}],"dist":{"shasum":"e840df0e8ec0fad21e490fb5398da4731809faaf","tarball":"https://registry.npmjs.org/@cargo-ai/workflow-sdk/-/workflow-sdk-1.0.8.tgz","fileCount":96,"integrity":"sha512-BlMKaO/CK+hoBJ0IOPdfAcbDYqac7UUee7B3Nlf+lAF9T3Xkg+2XMn3Et/MLY4GN5t3NuxqQeYT8kECAkHohJQ==","signatures":[{"sig":"MEQCIAkOStQWYoNo2h24kgUCqZisBnCnbZr86I42uhKedWoPAiBs+yULQ7fOXXdsIFXaLRmonuVjli1wWsrBVBB3/Ckaew==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":423677},"type":"module","volta":{"node":"22.22.2"},"engines":{"node":">=22"},"exports":{".":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"},"./internal":{"types":"./build/src/internal.d.ts","default":"./build/src/internal.js"},"./package.json":"./package.json"},"gitHead":"1923864e0fbdf994d7a331512b2f6c5774e14960","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint ./ --fix","test":"vitest run","build":"tsc --build","format":"prettier --write .","lint:check":"eslint ./ --max-warnings=0","test:watch":"vitest","type:check":"tsc --noEmit","afterinstall":"npm run build","format:check":"prettier --check ."},"_npmUser":{"name":"auree","email":"contact@auree.me"},"_npmVersion":"10.9.7","description":"Define Cargo workflows in TypeScript. Compiles to the same Node[] artifact the canvas produces and runs on the existing engine.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"4.4.3","acorn":"^8.16.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"8.1.0","eslint":"9.26.0","vitest":"4.1.2","prettier":"3.3.3","typescript":"5.3.2","@types/node":"^20.10.8","@types/estree":"^1.0.9","@cargo-ai/types":"*","@cargo-ai/utils":"*","@cargo-ai/ts-config":"*","@cargo-ai/eslint-config":"*","@cargo-ai/prettier-config":"*"},"_npmOperationalInternal":{"tmp":"tmp/workflow-sdk_1.0.8_1784105014016_0.5811292290331904","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@cargo-ai/workflow-sdk","version":"1.0.9","license":"UNLICENSED","_id":"@cargo-ai/workflow-sdk@1.0.9","maintainers":[{"name":"auree","email":"contact@auree.me"}],"dist":{"shasum":"57a77a67d3b85ed31207ebdac6570022d9fb1460","tarball":"https://registry.npmjs.org/@cargo-ai/workflow-sdk/-/workflow-sdk-1.0.9.tgz","fileCount":96,"integrity":"sha512-fbeagbBli3glhNOz5w1+AuK4Xyy4rZsIMiVKcAr5a2CcF9HYcUfWRD4rkAMqQ1eeKZze76OlKmaRzAhDPFRh3Q==","signatures":[{"sig":"MEUCIQDl9P/Qd/0yNwXPKyXG6IOOe3v/dKwrmW0dzt2HyUadegIgGRygpgFmu2Uec6udwHMcLfb01p3bRhPX9GQILCNqbdI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":426506},"type":"module","volta":{"node":"22.22.2"},"engines":{"node":">=22"},"exports":{".":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"},"./internal":{"types":"./build/src/internal.d.ts","default":"./build/src/internal.js"},"./package.json":"./package.json"},"gitHead":"ee89d816da1256459757cda45e45dbef69a7c6df","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint ./ --fix","test":"vitest run","build":"tsc --build","format":"prettier --write .","lint:check":"eslint ./ --max-warnings=0","test:watch":"vitest","type:check":"tsc --noEmit","afterinstall":"npm run build","format:check":"prettier --check ."},"_npmUser":{"name":"auree","email":"contact@auree.me"},"_npmVersion":"10.9.7","description":"Define Cargo workflows in TypeScript. Compiles to the same Node[] artifact the canvas produces and runs on the existing engine.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"4.4.3","acorn":"^8.16.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"8.1.0","eslint":"9.26.0","vitest":"4.1.2","prettier":"3.3.3","typescript":"5.3.2","@types/node":"^20.10.8","@types/estree":"^1.0.9","@cargo-ai/types":"*","@cargo-ai/utils":"*","@cargo-ai/ts-config":"*","@cargo-ai/eslint-config":"*","@cargo-ai/prettier-config":"*"},"_npmOperationalInternal":{"tmp":"tmp/workflow-sdk_1.0.9_1784595413729_0.5569646883121642","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@cargo-ai/workflow-sdk","version":"1.0.10","license":"UNLICENSED","_id":"@cargo-ai/workflow-sdk@1.0.10","maintainers":[{"name":"auree","email":"contact@auree.me"}],"dist":{"shasum":"dae088f234cdfada4689bd3a8ff546fb72fda18f","tarball":"https://registry.npmjs.org/@cargo-ai/workflow-sdk/-/workflow-sdk-1.0.10.tgz","fileCount":96,"integrity":"sha512-SPj+9zm/npHBEsG88TCii976P9yQi9SGt9+KRl0GKT6PMFrQDiGFTf+CuqoJ+mQlR0VYnhRCDT3QAkPfh5V6EQ==","signatures":[{"sig":"MEYCIQC7oI8lmmZUVZ+O4lQSYiPZCncx/oOLGFPKn/YVOWItaAIhAKuunIWPYmCZ+4p9K5h6lxPT5+EScZViWi25we6TAMZZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":430480},"type":"module","volta":{"node":"22.22.2"},"engines":{"node":">=22"},"exports":{".":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"},"./internal":{"types":"./build/src/internal.d.ts","default":"./build/src/internal.js"},"./package.json":"./package.json"},"gitHead":"2826f188ae799cba08e433673079cd3b26267dae","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint ./ --fix","test":"vitest run","build":"tsc --build","format":"prettier --write .","lint:check":"eslint ./ --max-warnings=0","test:watch":"vitest","type:check":"tsc --noEmit","afterinstall":"npm run build","format:check":"prettier --check ."},"_npmUser":{"name":"auree","email":"contact@auree.me"},"_npmVersion":"10.9.7","description":"Define Cargo workflows in TypeScript. Compiles to the same Node[] artifact the canvas produces and runs on the existing engine.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"4.4.3","acorn":"^8.16.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"8.1.0","eslint":"9.26.0","vitest":"4.1.2","prettier":"3.3.3","typescript":"5.3.2","@types/node":"^20.10.8","@types/estree":"^1.0.9","@cargo-ai/types":"*","@cargo-ai/utils":"*","@cargo-ai/ts-config":"*","@cargo-ai/eslint-config":"*","@cargo-ai/prettier-config":"*"},"_npmOperationalInternal":{"tmp":"tmp/workflow-sdk_1.0.10_1784870947976_0.9968153930044283","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"@cargo-ai/workflow-sdk","version":"1.0.11","license":"UNLICENSED","_id":"@cargo-ai/workflow-sdk@1.0.11","maintainers":[{"name":"auree","email":"contact@auree.me"}],"dist":{"shasum":"577443f7e80ad0a15490fbd34adf37d029b32d2c","tarball":"https://registry.npmjs.org/@cargo-ai/workflow-sdk/-/workflow-sdk-1.0.11.tgz","fileCount":96,"integrity":"sha512-zXtv/f6IXfMvOWpKBfoZdGezsvw0UiJtA250myMzSn3JcKQqPwx3m95hVOmuTANHk6e5JiFRuf1yVwr/9dolUQ==","signatures":[{"sig":"MEUCIFU9MFbh/6FzCg5pCzpneSuuyoS7IkLrNfcrjxcfXTX6AiEAjGEwZMTLqeLezll2Z+DaBuQmDyGXsj3VMHjVYmQHvTU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":430480},"type":"module","volta":{"node":"22.22.2"},"engines":{"node":">=22"},"exports":{".":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"},"./internal":{"types":"./build/src/internal.d.ts","default":"./build/src/internal.js"},"./package.json":"./package.json"},"gitHead":"a2936ea7d9c79d212354950112ebaa18b54080d7","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint ./ --fix","test":"vitest run","build":"tsc --build","format":"prettier --write .","lint:check":"eslint ./ --max-warnings=0","test:watch":"vitest","type:check":"tsc --noEmit","afterinstall":"npm run build","format:check":"prettier --check ."},"_npmUser":{"name":"auree","email":"contact@auree.me"},"_npmVersion":"10.9.7","description":"Define Cargo workflows in TypeScript. Compiles to the same Node[] artifact the canvas produces and runs on the existing engine.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"4.4.3","acorn":"^8.16.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"8.1.0","eslint":"9.26.0","vitest":"4.1.2","prettier":"3.3.3","typescript":"5.3.2","@types/node":"^20.10.8","@types/estree":"^1.0.9","@cargo-ai/types":"*","@cargo-ai/utils":"*","@cargo-ai/ts-config":"*","@cargo-ai/eslint-config":"*","@cargo-ai/prettier-config":"*"},"_npmOperationalInternal":{"tmp":"tmp/workflow-sdk_1.0.11_1784924498645_0.1622179447427874","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"@cargo-ai/workflow-sdk","version":"1.0.12","license":"UNLICENSED","_id":"@cargo-ai/workflow-sdk@1.0.12","maintainers":[{"name":"auree","email":"contact@auree.me"}],"dist":{"shasum":"d64ec6444e4433e6be88ae40f30a467cbb92601d","tarball":"https://registry.npmjs.org/@cargo-ai/workflow-sdk/-/workflow-sdk-1.0.12.tgz","fileCount":96,"integrity":"sha512-cV3IcE7h1zdG9a5tFsjn9nX1LJshQ3WwhQn6kSSForyVgV2n6TtkhfOlOazH6dSnv6tcWGLBs/OycNyrkw/FXg==","signatures":[{"sig":"MEUCIQDO62OKxGUeanaObUXcugiheSNmGaZyMOOnd5vPD05xCwIgFSqyZqK5iipaGrj5F2Y/+gBQMTVhLWT3zcqlYlt8EEY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":430767},"type":"module","volta":{"node":"22.22.2"},"engines":{"node":">=22"},"exports":{".":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"},"./internal":{"types":"./build/src/internal.d.ts","default":"./build/src/internal.js"},"./package.json":"./package.json"},"gitHead":"bc60168a8914f5b85003a876d2a717b69f361836","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint ./ --fix","test":"vitest run","build":"tsc --build","format":"prettier --write .","lint:check":"eslint ./ --max-warnings=0","test:watch":"vitest","type:check":"tsc --noEmit","afterinstall":"npm run build","format:check":"prettier --check ."},"_npmUser":{"name":"auree","email":"contact@auree.me"},"_npmVersion":"10.9.7","description":"Define Cargo workflows in TypeScript. Compiles to the same Node[] artifact the canvas produces and runs on the existing engine.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"4.4.3","acorn":"^8.16.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"8.1.0","eslint":"9.26.0","vitest":"4.1.2","prettier":"3.3.3","typescript":"5.3.2","@types/node":"^20.10.8","@types/estree":"^1.0.9","@cargo-ai/types":"*","@cargo-ai/utils":"*","@cargo-ai/ts-config":"*","@cargo-ai/eslint-config":"*","@cargo-ai/prettier-config":"*"},"_npmOperationalInternal":{"tmp":"tmp/workflow-sdk_1.0.12_1785797854686_0.5770958233252754","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"@cargo-ai/workflow-sdk","version":"1.0.13","license":"UNLICENSED","_id":"@cargo-ai/workflow-sdk@1.0.13","maintainers":[{"name":"auree","email":"contact@auree.me"}],"dist":{"shasum":"cc83207ba661984c393fe338ea6173c5c6767c4c","tarball":"https://registry.npmjs.org/@cargo-ai/workflow-sdk/-/workflow-sdk-1.0.13.tgz","fileCount":96,"integrity":"sha512-BZ0NWq+BmvGgqKWzVCSmWQwMpSx1EZoXy198P22WpBw5m+MIhdbWZ29FxcpM5qtDUVWxyHcOMfuhYUOrKaWIkA==","signatures":[{"sig":"MEYCIQDSJOjSSCoomcOcRxoZ5Wj2iDsfp+6S2nweT+4ZkD0zrAIhAM1njCwVg5lXITBkOGf8wTHQ7SEWspE0RecMXLseFK+n","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":431811},"type":"module","volta":{"node":"22.22.2"},"engines":{"node":">=22"},"exports":{".":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"},"./internal":{"types":"./build/src/internal.d.ts","default":"./build/src/internal.js"},"./package.json":"./package.json"},"gitHead":"5b7db42aabaf2ab256735edb50a342fc4777259c","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint ./ --fix","test":"vitest run","build":"tsc --build","format":"prettier --write .","lint:check":"eslint ./ --max-warnings=0","test:watch":"vitest","type:check":"tsc --noEmit","afterinstall":"npm run build","format:check":"prettier --check ."},"_npmUser":{"name":"auree","email":"contact@auree.me"},"_npmVersion":"10.9.7","description":"Define Cargo workflows in TypeScript. Compiles to the same Node[] artifact the canvas produces and runs on the existing engine.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"4.4.3","acorn":"^8.16.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"8.1.0","eslint":"9.26.0","vitest":"4.1.2","prettier":"3.3.3","typescript":"5.3.2","@types/node":"^20.10.8","@types/estree":"^1.0.9","@cargo-ai/types":"*","@cargo-ai/utils":"*","@cargo-ai/ts-config":"*","@cargo-ai/eslint-config":"*","@cargo-ai/prettier-config":"*"},"_npmOperationalInternal":{"tmp":"tmp/workflow-sdk_1.0.13_1786590926994_0.3124356473785528","host":"s3://npm-registry-packages-npm-production"}},"1.0.14":{"name":"@cargo-ai/workflow-sdk","version":"1.0.14","license":"UNLICENSED","_id":"@cargo-ai/workflow-sdk@1.0.14","maintainers":[{"name":"auree","email":"contact@auree.me"}],"dist":{"shasum":"f6674de640fd8e474a424b3d4bb56f2fe4d2abce","tarball":"https://registry.npmjs.org/@cargo-ai/workflow-sdk/-/workflow-sdk-1.0.14.tgz","fileCount":99,"integrity":"sha512-hS5tUgW31eiI+OtwAvgltuoEL+Cdrej6j5tABz4G9u5tg6cDK7Bfg+iWCIbOaBbPU/ERRK+MzGjtFLIfJPkQmQ==","signatures":[{"sig":"MEUCIBddSTTuE/DIzmwY35pP2v4uZ2b3vK3g25QXA1UyiEvCAiEA9/B9fmqRYZ5DfS2hWWHuoznIiXJeeRqH/AsjPSEtE6A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDwX3bE+1SNfFo3zibq5umLhYy+lU3xgd3ci4gcbyxdYAIhANw8A3UtZs8zcM9mS9vJcSPKKRFpngNIyRvfTTVfgV2w","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":439443},"type":"module","volta":{"node":"22.22.2"},"engines":{"node":">=22"},"exports":{".":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"},"./internal":{"types":"./build/src/internal.d.ts","default":"./build/src/internal.js"},"./package.json":"./package.json"},"gitHead":"5e8606abba1fb52b6fd0eb6928a39c1b8e2fea4f","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint ./ --fix","test":"vitest run","build":"tsc --build","format":"prettier --write .","lint:check":"eslint ./ --max-warnings=0","test:watch":"vitest","type:check":"tsc --noEmit","afterinstall":"npm run build","format:check":"prettier --check ."},"_npmUser":{"name":"auree","email":"contact@auree.me"},"_npmVersion":"10.9.7","description":"Define Cargo workflows in TypeScript. Compiles to the same Node[] artifact the canvas produces and runs on the existing engine.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"4.4.3","acorn":"^8.16.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"8.1.0","eslint":"9.26.0","vitest":"4.1.2","prettier":"3.3.3","typescript":"5.3.2","@types/node":"^20.10.8","@types/estree":"^1.0.9","@cargo-ai/types":"*","@cargo-ai/utils":"*","@cargo-ai/ts-config":"*","@cargo-ai/eslint-config":"*","@cargo-ai/prettier-config":"*"},"_npmOperationalInternal":{"tmp":"tmp/workflow-sdk_1.0.14_1787283412095_0.8617669517104138","host":"s3://npm-registry-packages-npm-production"}},"1.0.15":{"name":"@cargo-ai/workflow-sdk","version":"1.0.15","license":"UNLICENSED","_id":"@cargo-ai/workflow-sdk@1.0.15","maintainers":[{"name":"auree","email":"contact@auree.me"}],"homepage":"https://www.getcargo.ai","bugs":{"url":"https://github.com/getcargohq/cargo/issues"},"dist":{"shasum":"c3354641bead8f3559f871bfa8cc49e656598fcb","tarball":"https://registry.npmjs.org/@cargo-ai/workflow-sdk/-/workflow-sdk-1.0.15.tgz","fileCount":99,"integrity":"sha512-jce9UNVGS7Zu4jB1E6cr89tNVsZ/yi4ukkFN/LQpxVle68N1lULpgHzcQViUZC6iwONrzXGHTBO+Dvt95WzihQ==","signatures":[{"sig":"MEUCIQCRsU9NrF/YbfLo3y9s851vKB2lMeVlHUuSvW1p+4Bb/wIgJ+qE9EaExpHiNbIqz6cHIx91wnnP7GzCxsN+r8eTHDg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDbQ5vPVbcVx2JR6oK4RwcJgayVESqvcuMB6IIiWxWfNwIgBUt7dgN7jhRMWJgqk4Eftq/S+t9YZsKEXYBzl+ERHqg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":439625},"type":"module","volta":{"node":"22.22.2"},"engines":{"node":">=22"},"exports":{".":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"},"./internal":{"types":"./build/src/internal.d.ts","default":"./build/src/internal.js"},"./package.json":"./package.json"},"gitHead":"5ba674ca933e855a49456c53b6785a74375f175d","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint ./ --fix","test":"vitest run","build":"tsc --build","format":"prettier --write .","lint:check":"eslint ./ --max-warnings=0","test:watch":"vitest","type:check":"tsc --noEmit","afterinstall":"npm run build","format:check":"prettier --check ."},"_npmUser":{"name":"auree","email":"contact@auree.me"},"repository":{"url":"git+https://github.com/getcargohq/cargo.git","type":"git","directory":"packages/workflow-sdk"},"_npmVersion":"10.9.7","description":"Define Cargo workflows in TypeScript. Compiles to the same Node[] artifact the canvas produces and runs on the existing engine.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"4.4.3","acorn":"^8.16.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"8.1.0","eslint":"9.26.0","vitest":"4.1.2","prettier":"3.3.3","typescript":"5.3.2","@types/node":"^20.10.8","@types/estree":"^1.0.9","@cargo-ai/types":"*","@cargo-ai/utils":"*","@cargo-ai/ts-config":"*","@cargo-ai/eslint-config":"*","@cargo-ai/prettier-config":"*"},"_npmOperationalInternal":{"tmp":"tmp/workflow-sdk_1.0.15_1787445041559_0.18311725840667403","host":"s3://npm-registry-packages-npm-production"}},"1.0.16":{"name":"@cargo-ai/workflow-sdk","version":"1.0.16","license":"UNLICENSED","_id":"@cargo-ai/workflow-sdk@1.0.16","maintainers":[{"name":"auree","email":"contact@auree.me"}],"homepage":"https://www.getcargo.ai","bugs":{"url":"https://github.com/getcargohq/cargo/issues"},"dist":{"shasum":"db4421d7e38b0378aa4df17c4cf38ab47cec5890","tarball":"https://registry.npmjs.org/@cargo-ai/workflow-sdk/-/workflow-sdk-1.0.16.tgz","fileCount":102,"integrity":"sha512-zvZq1m17vwvJDgTNdb+A0Besli6D/PgDqz6SrS5r7v6PWqEkWcCnCbfiAfS+9N/8lUL9bOcU8kvYA8LVRDBt6w==","signatures":[{"sig":"MEYCIQD7mnhFBd+LZObueQIBQ5QbHJCF8s6zWdpRwgQ2hYEW0AIhAOvSTXiHIlMwNKeN2JbjKoaazQpwEz8TfnALBJnRlaIO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAW1iodsYrvc7fsl8qBwqY11qxounUHUzld8ejSjkY1tAiAVTEpPeDLEPt4rInEe96EMoKgUBmES9L189gtWealrcg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":428416},"type":"module","volta":{"node":"22.22.2"},"engines":{"node":">=22"},"exports":{".":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"},"./internal":{"types":"./build/src/internal.d.ts","default":"./build/src/internal.js"},"./package.json":"./package.json"},"gitHead":"32000dafb56b900c4936bee4df73317ea2c0184b","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint ./ --fix","test":"vitest run","build":"tsc --build","format":"prettier --write .","lint:check":"eslint ./ --max-warnings=0","test:watch":"vitest","type:check":"tsc --noEmit","afterinstall":"npm run build","format:check":"prettier --check ."},"_npmUser":{"name":"auree","email":"contact@auree.me"},"repository":{"url":"git+https://github.com/getcargohq/cargo.git","type":"git","directory":"packages/workflow-sdk"},"_npmVersion":"10.9.7","description":"Define Cargo workflows in TypeScript. Compiles to the same Node[] artifact the canvas produces and runs on the existing engine.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"4.4.3","acorn":"^8.16.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"8.1.0","eslint":"9.26.0","vitest":"4.1.2","prettier":"3.3.3","typescript":"5.3.2","@types/node":"^20.10.8","@types/estree":"^1.0.9","@cargo-ai/types":"*","@cargo-ai/utils":"*","@cargo-ai/ts-config":"*","@cargo-ai/eslint-config":"*","@cargo-ai/prettier-config":"*"},"_npmOperationalInternal":{"tmp":"tmp/workflow-sdk_1.0.16_1788139518009_0.10099353853714077","host":"s3://npm-registry-packages-npm-production"}},"1.0.17":{"name":"@cargo-ai/workflow-sdk","version":"1.0.17","license":"UNLICENSED","_id":"@cargo-ai/workflow-sdk@1.0.17","maintainers":[{"name":"auree","email":"contact@auree.me"}],"homepage":"https://www.getcargo.ai","bugs":{"url":"https://github.com/getcargohq/cargo/issues"},"dist":{"shasum":"f63a2de0c234cc9a6ddd20799243609235078033","tarball":"https://registry.npmjs.org/@cargo-ai/workflow-sdk/-/workflow-sdk-1.0.17.tgz","fileCount":108,"integrity":"sha512-OU10g0CSqJmFBeMDDDKqH2RTF4tkgptRa/bopwfWyi3Amyi0wakVZdZOLY+ZyzHxqe2Gv6JuEfdgCLnVDKiK7Q==","signatures":[{"sig":"MEQCIBArwwUof2Izkw4Z+7+toFmuvmCQJsuPc1bgTe2Ej6B/AiB89WLsKmfbbkGRTNTxKsvbElEFOlEmMZ4C/+yG6ot7eQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGYIxxq1KEjc8THE7ZXnxsbTicb9vL76BAhG3VEaNdNFAiEAleoarRtY9NPimoybalWY7BhPLzWISFAvyXbw1TAF48I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":435008},"type":"module","volta":{"node":"22.22.2"},"engines":{"node":">=22"},"exports":{".":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"},"./internal":{"types":"./build/src/internal.d.ts","default":"./build/src/internal.js"},"./package.json":"./package.json"},"gitHead":"39cc23876022d391642ec3d86b390e71ed65c0f9","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint ./ --fix","test":"vitest run","build":"tsc --build","format":"prettier --write .","lint:check":"eslint ./ --max-warnings=0","test:watch":"vitest","type:check":"tsc --noEmit","afterinstall":"npm run build","format:check":"prettier --check ."},"_npmUser":{"name":"auree","email":"contact@auree.me"},"repository":{"url":"git+https://github.com/getcargohq/cargo.git","type":"git","directory":"packages/workflow-sdk"},"_npmVersion":"10.9.7","description":"Define Cargo workflows in TypeScript. Compiles to the same Node[] artifact the canvas produces and runs on the existing engine.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"4.4.3","acorn":"^8.16.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"8.1.0","eslint":"9.26.0","vitest":"4.1.2","prettier":"3.3.3","typescript":"5.3.2","@types/node":"^20.10.8","@types/estree":"^1.0.9","@cargo-ai/types":"*","@cargo-ai/utils":"*","@cargo-ai/ts-config":"*","@cargo-ai/eslint-config":"*","@cargo-ai/prettier-config":"*"},"_npmOperationalInternal":{"tmp":"tmp/workflow-sdk_1.0.17_1788412511840_0.9023980433341188","host":"s3://npm-registry-packages-npm-production"}},"1.0.18":{"name":"@cargo-ai/workflow-sdk","version":"1.0.18","license":"UNLICENSED","_id":"@cargo-ai/workflow-sdk@1.0.18","maintainers":[{"name":"auree","email":"contact@auree.me"}],"homepage":"https://www.getcargo.ai","bugs":{"url":"https://github.com/getcargohq/cargo/issues"},"dist":{"shasum":"50d20b2994d70fdf2e335abcbc8b476950830080","tarball":"https://registry.npmjs.org/@cargo-ai/workflow-sdk/-/workflow-sdk-1.0.18.tgz","fileCount":108,"integrity":"sha512-gRHwwzCZvG3MENg+z3KOoQy0ZckIT8mEcwBBg0wN1zhmXUZb4h2P1PvZF0kMShOrUA0r1ktnvH0SlIHK8HcRAg==","signatures":[{"sig":"MEUCIQD6o4UkhsIYYQCOHObyZcA9M5n7MGSIMr5xBTDWAVtefgIgWFTQP67Fv9k5Ed3Ceso/od96A44CWxNe/J7XqtJ2kLU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDBUkKI8u8t6AnheFB4u0QtouvqqR36p1K6nlnHE5y4dwIhALe/BzmdF1ZNy8QRJlO7UEoeNwjn+jsJGXpc/lsZYcQr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":435012},"type":"module","volta":{"node":"22.22.2"},"engines":{"node":">=22"},"exports":{".":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"},"./internal":{"types":"./build/src/internal.d.ts","default":"./build/src/internal.js"},"./package.json":"./package.json"},"gitHead":"48c0021369dc62836ca9e9fddb21facfba12177a","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint ./ --fix","test":"vitest run","build":"tsc --build","format":"prettier --write .","lint:check":"eslint ./ --max-warnings=0","test:watch":"vitest","type:check":"tsc --noEmit","afterinstall":"npm run build","format:check":"prettier --check ."},"_npmUser":{"name":"auree","email":"contact@auree.me"},"repository":{"url":"git+https://github.com/getcargohq/cargo.git","type":"git","directory":"packages/workflow-sdk"},"_npmVersion":"10.9.7","description":"Define Cargo workflows in TypeScript. Compiles to the same Node[] artifact the canvas produces and runs on the existing engine.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"4.4.3","acorn":"^8.16.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"8.1.0","eslint":"9.26.0","vitest":"4.1.11","prettier":"3.3.3","typescript":"5.3.2","@types/node":"^20.10.8","@types/estree":"^1.0.9","@cargo-ai/types":"*","@cargo-ai/utils":"*","@cargo-ai/ts-config":"*","@cargo-ai/eslint-config":"*","@cargo-ai/prettier-config":"*"},"_npmOperationalInternal":{"tmp":"tmp/workflow-sdk_1.0.18_1788926547587_0.9805810941332194","host":"s3://npm-registry-packages-npm-production"}},"1.0.19":{"name":"@cargo-ai/workflow-sdk","version":"1.0.19","license":"UNLICENSED","_id":"@cargo-ai/workflow-sdk@1.0.19","maintainers":[{"name":"auree","email":"contact@auree.me"}],"homepage":"https://www.getcargo.ai","bugs":{"url":"https://github.com/getcargohq/cargo/issues"},"dist":{"shasum":"2120f5815e9a2418f37ada64be1afc63ba6a86a2","tarball":"https://registry.npmjs.org/@cargo-ai/workflow-sdk/-/workflow-sdk-1.0.19.tgz","fileCount":108,"integrity":"sha512-GJH4ipDQ9Ys+pcBi3Ylxe3Bgy99DbwEkHsYgd6CVout/0cNQ1YOBkNKKF0NiYwg4zylTBq+42oRHUU653PqNKQ==","signatures":[{"sig":"MEUCIQD1Vx8STj2dC6Ht1qR996vLqKx9Hc/b69B572I6I1VRlQIgMqO+0ThJs4+Fje10kBsGP75scRtODLU3bQyPpFKsxwk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDsZqWKHjCb2arDICHKKUrnYDUNaP27+/OaQY+RMYlQ1gIgANzCu2prd81zmht4+l3pPvFMhvGEzQ5wesymByJmwQA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":435061},"type":"module","volta":{"node":"22.22.2"},"engines":{"node":">=22"},"exports":{".":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"},"./internal":{"types":"./build/src/internal.d.ts","default":"./build/src/internal.js"},"./package.json":"./package.json"},"gitHead":"810bc1923ab6f284bacc4909d2a88d80349d41d8","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint ./ --fix","test":"vitest run","build":"tsc --build","format":"prettier --write .","lint:check":"eslint ./ --max-warnings=0","test:watch":"vitest","type:check":"tsc --noEmit","afterinstall":"npm run build","format:check":"prettier --check ."},"_npmUser":{"name":"auree","email":"contact@auree.me"},"repository":{"url":"git+https://github.com/getcargohq/cargo.git","type":"git","directory":"packages/workflow-sdk"},"_npmVersion":"10.9.7","description":"Define Cargo workflows in TypeScript. Compiles to the same Node[] artifact the canvas produces and runs on the existing engine.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"acorn":"^8.16.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"4.4.3","vite":"8.1.0","eslint":"9.26.0","vitest":"4.1.11","prettier":"3.3.3","typescript":"5.3.2","@types/node":"^20.10.8","@types/estree":"^1.0.9","@cargo-ai/types":"*","@cargo-ai/utils":"*","@cargo-ai/ts-config":"*","@cargo-ai/eslint-config":"*","@cargo-ai/prettier-config":"*"},"peerDependencies":{"zod":"^4.4.3"},"_npmOperationalInternal":{"tmp":"tmp/workflow-sdk_1.0.19_1789072793422_0.4346695650885988","host":"s3://npm-registry-packages-npm-production"}},"1.0.20":{"name":"@cargo-ai/workflow-sdk","version":"1.0.20","license":"UNLICENSED","_id":"@cargo-ai/workflow-sdk@1.0.20","maintainers":[{"name":"auree","email":"contact@auree.me"}],"homepage":"https://www.getcargo.ai","bugs":{"url":"https://github.com/getcargohq/cargo/issues"},"dist":{"shasum":"d3ef5a57dfa20a8200738e8e66f6f0cc456a5aba","tarball":"https://registry.npmjs.org/@cargo-ai/workflow-sdk/-/workflow-sdk-1.0.20.tgz","fileCount":108,"integrity":"sha512-eYpP+orE4mTSrkpILwJMs/hM7dAAH+Seeu53IYZC5zZ44oQfRjcdZ5Cdjwdlfe32ZE/B+1sHSHZqplu1/RN+4Q==","signatures":[{"sig":"MEQCIFtOKSdnMaCm9eADJffI3uxwNEZc4BCk5CZ3HbDKv0/BAiABmK5x38D4z2qf7WJtqZ/0lc5QLoPwXZH9YoJxjAcAkw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHC2kaUEDH1fmbOy1EyAjWWjKw6i/Dx0LdIeBRNejmQqAiB9oTaRBUB/7sZ/3Dhh1jxZ0ZR/cEYAcUSOZwTlROkORg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":435081},"type":"module","volta":{"node":"22.22.2"},"engines":{"node":">=22"},"exports":{".":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"},"./internal":{"types":"./build/src/internal.d.ts","default":"./build/src/internal.js"},"./package.json":"./package.json"},"gitHead":"fe3e634f80fe736a40ed6b19fdba2b87a39589d9","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint ./ --fix","test":"vitest run","build":"tsc --build","format":"prettier --write .","lint:check":"eslint ./ --max-warnings=0","test:watch":"vitest","type:check":"tsc --noEmit","afterinstall":"npm run build","format:check":"prettier --check ."},"_npmUser":{"name":"auree","email":"contact@auree.me"},"repository":{"url":"git+https://github.com/getcargohq/cargo.git","type":"git","directory":"packages/workflow-sdk"},"_npmVersion":"10.9.7","description":"Define Cargo workflows in TypeScript. Compiles to the same Node[] artifact the canvas produces and runs on the existing engine.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"acorn":"^8.16.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"4.4.3","vite":"8.1.0","eslint":"9.26.0","vitest":"4.1.11","prettier":"3.3.3","typescript":"5.3.2","@types/node":"^20.10.8","@types/estree":"^1.0.9","@cargo-ai/types":"*","@cargo-ai/utils":"*","@cargo-ai/ts-config":"*","@cargo-ai/eslint-config":"*","@cargo-ai/prettier-config":"*"},"peerDependencies":{"zod":"^4.4.3"},"_npmOperationalInternal":{"tmp":"tmp/workflow-sdk_1.0.20_1789366710282_0.7337351134655856","host":"s3://npm-registry-packages-npm-production"}},"1.0.21":{"_id":"@cargo-ai/workflow-sdk@1.0.21","bugs":{"url":"https://github.com/getcargohq/cargo/issues"},"dist":{"shasum":"d69143beae4a0b7650758ffe1f323cf2586f148b","tarball":"https://registry.npmjs.org/@cargo-ai/workflow-sdk/-/workflow-sdk-1.0.21.tgz","fileCount":114,"integrity":"sha512-qCiqQ5bNulUK5N5SgXyNO9xGamL35E/53U+BiHs8YU0QQu2nOvmUCAzBCqLgQJiQYGyFbv5L76dPN66doc6egw==","signatures":[{"sig":"MEQCIHGLiYCftHw6oCgWjmh0YOGwH5dMRH1QRCmi+0VYMKGqAiA0Kpn+qhvOCg2BqfYIErCHRJd85VKrHYoTu6u1+kC/yg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIERRI3RUnTTwaWCflRSrrKkngaGL2t4RatZStA4z61aQAiEAnQpHXov459tbLjcvVoufuzpKARX3ipkCVHIRtWW64bk="}],"unpackedSize":474141},"name":"@cargo-ai/workflow-sdk","type":"module","volta":{"node":"22.22.2"},"engines":{"node":">=22"},"exports":{".":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"},"./internal":{"types":"./build/src/internal.d.ts","default":"./build/src/internal.js"},"./package.json":"./package.json"},"gitHead":"d15d33b4a5f0dcfb024c9f593f885b9c235fd425","license":"UNLICENSED","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint ./ --fix","test":"vitest run","build":"tsc --build","format":"prettier --write .","lint:check":"eslint ./ --max-warnings=0","test:watch":"vitest","type:check":"tsc --noEmit","afterinstall":"npm run build","format:check":"prettier --check ."},"version":"1.0.21","_npmUser":{"name":"auree","email":"contact@auree.me"},"homepage":"https://www.getcargo.ai","repository":{"url":"git+https://github.com/getcargohq/cargo.git","type":"git","directory":"packages/workflow-sdk"},"_npmVersion":"10.9.7","description":"Define Cargo workflows in TypeScript. Compiles to the same Node[] artifact the canvas produces and runs on the existing engine.","directories":{},"maintainers":[{"name":"auree","email":"contact@auree.me"}],"_nodeVersion":"22.22.2","dependencies":{"acorn":"^8.16.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"4.4.3","vite":"8.1.0","eslint":"9.26.0","vitest":"4.1.11","prettier":"3.3.3","typescript":"5.3.2","@types/node":"^20.10.8","@types/estree":"^1.0.9","@cargo-ai/types":"*","@cargo-ai/utils":"*","@cargo-ai/ts-config":"*","@cargo-ai/eslint-config":"*","@cargo-ai/prettier-config":"*"},"peerDependencies":{"zod":"^4.4.3","esbuild":"^0.25.2"},"peerDependenciesMeta":{"esbuild":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/workflow-sdk_1.0.21_1789629409593_0.21783093020409905"}}},"time":{"created":"2026-06-10T04:03:20.856Z","modified":"2026-09-17T07:16:49.868Z","0.1.1":"2026-06-10T04:03:21.178Z","1.0.2":"2026-07-02T20:51:20.215Z","1.0.3":"2026-07-07T16:23:55.291Z","1.0.4":"2026-07-11T07:38:33.854Z","1.0.5":"2026-07-12T00:08:48.601Z","1.0.6":"2026-07-12T04:27:29.757Z","1.0.7":"2026-07-15T04:49:01.886Z","1.0.8":"2026-07-15T08:43:34.177Z","1.0.9":"2026-07-21T00:56:53.857Z","1.0.10":"2026-07-24T05:29:08.101Z","1.0.11":"2026-07-24T20:21:38.778Z","1.0.12":"2026-08-03T22:57:34.835Z","1.0.13":"2026-08-13T03:15:27.132Z","1.0.14":"2026-08-21T03:36:52.209Z","1.0.15":"2026-08-23T00:30:41.660Z","1.0.16":"2026-08-31T01:25:18.090Z","1.0.17":"2026-09-03T05:15:11.916Z","1.0.18":"2026-09-09T04:02:27.685Z","1.0.19":"2026-09-10T20:39:53.579Z","1.0.20":"2026-09-14T06:18:30.405Z","1.0.21":"2026-09-17T07:16:49.681Z"},"bugs":{"url":"https://github.com/getcargohq/cargo/issues"},"license":"UNLICENSED","homepage":"https://www.getcargo.ai","repository":{"url":"git+https://github.com/getcargohq/cargo.git","type":"git","directory":"packages/workflow-sdk"},"description":"Define Cargo workflows in TypeScript. Compiles to the same Node[] artifact the canvas produces and runs on the existing engine.","maintainers":[{"name":"auree","email":"contact@auree.me"}],"readme":"# @cargo-ai/workflow-sdk\n\nDefine Cargo workflows in TypeScript.\n\n```ts\nimport { z } from \"zod\";\nimport { defineWorkflow, connectorRef } from \"@cargo-ai/workflow-sdk\";\n\nexport default defineWorkflow(\n  \"name-and-domain-to-email\",\n  {\n    input: z.object({\n      first_name: z.string(),\n      last_name: z.string(),\n      domain: z.string(),\n    }),\n    output: z.object({ email: z.string().nullable() }),\n    uses: {\n      hunter: connectorRef(\"7eff455t-…\", \"hunter\"),\n      leadmagic: connectorRef(\"9c26d1f2-…\", \"leadmagic\"),\n    },\n  },\n  ({ input, uses }) => {\n    const hunter = uses.hunter.findEmail({\n      first_name: input.first_name,\n      last_name: input.last_name,\n      domain: input.domain,\n    });\n    const leadmagic = uses.leadmagic.findEmail({\n      firstName: input.first_name,\n      lastName: input.last_name,\n      domain: input.domain,\n    });\n    return { email: hunter.email ?? leadmagic.email ?? null };\n  },\n);\n```\n\nThe compiled output is a `Node[]` JSON artifact that the existing Cargo engine accepts via the same `cargo-ai orchestration release deploy-draft` CLI canvas users run today. Workflows authored in TypeScript and workflows authored on the canvas run identically.\n\n> **Heads up:** the body callback is **parsed, not executed**. The SDK reads the function's source, rewrites it into the engine's wire format, and ships it verbatim — so anything you write inside the body must be a supported JS expression (see [Supported JS](#supported-js) below). Closure variables, asynchronous code, throws, and `console.log` calls don't apply here.\n\n## Deploying\n\nDeploy a workflow module straight from source with the CLI — it compiles the TypeScript and ships the resulting nodes as a new release:\n\n```sh\n# Preview compiled nodes + form fields (no API calls)\ncargo-ai orchestration release deploy-draft --file ./my-workflow.ts --dry-run\n\n# Deploy to an existing workflow (minor version auto-bumped)\ncargo-ai orchestration release deploy-draft --file ./my-workflow.ts \\\n  --slug name-and-domain-to-email\n```\n\nThe CLI uses `--slug` (or `--workflow-uuid`) to target the right workflow. It then runs the module through `defineWorkflow`, emits the `Node[]` graph, and POSTs it to the same release endpoint the canvas uses.\n\n## Tutorial\n\n### 1. Define inputs and outputs\n\n`defineWorkflow(slug, options, build)` is the only entry point. `options.input` is a Zod object schema that becomes the workflow's form fields (one per top-level key). `options.output` is a Zod schema describing the workflow's return shape. The `build` callback receives a scope handle and returns the workflow's result.\n\n```ts\ndefineWorkflow(\n  \"score-lead\",\n  {\n    input: z.object({\n      first_name: z.string(),\n      score: z.number(),\n    }),\n    output: z.string().nullable(),\n  },\n  ({ input }) => input.first_name,\n);\n```\n\n### 2. Call tools / agents / connectors / native helpers\n\nThe scope handle exposes the `model.*` storage namespace and the standalone native helpers (`allocate`, `delay`, `python`, `scoring`, `fileSearch`, `sendEmail`, `waitEmailEvent`, `listEmailEvents`) plus the input handle (`input`), the `uses` map (tools/agents/connectors you declared in the header — see below), the inline `ai()` helper, the `js()` escape hatch, and the flow helpers (`balance`, `split`, `humanReview`, `memory` — see [section 7](#7-flow-helpers--balance-split-humanreview-memory)). There is no `native` slug registry and no `integrations` registry in the scope. Each call returns a typed handle you can dot-access — but the call itself is captured at parse time and emitted as a workflow node:\n\n```ts\ndefineWorkflow(\n  \"find-and-verify\",\n  {\n    input: z.object({ first_name: z.string(), domain: z.string() }),\n    output: z.string().nullable(),\n    uses: {\n      hunter: connectorRef(\"9c26d1f2-…\", \"hunter\"), // a connector, by handle\n      validate: toolRef(\"3e0c5fde-…\"), // a tool, by handle (see §2)\n    },\n  },\n  ({ input, uses }) => {\n    const found = uses.hunter.findEmail({\n      first_name: input.first_name,\n      domain: input.domain,\n    });\n    const verified = uses.validate({ email: found.email });\n    return verified.is_safe ? found.email : null;\n  },\n);\n```\n\nThe example above emits two nodes (a `hunter.findEmail` connector and a `validate` tool) wired into a chain ending at the workflow's `end` node. Tools, agents, and connectors have no slug registry — reference them by handle through `uses` (next). Each `uses.<key>` call is typed to the referenced resource's input and output — `uses.validate({ email })` requires `email` and returns a `Ref` you can dot-access (`verified.is_safe`).\n\nNative platform actions are called the same way, through their hand-written surfaces — the `model.*` storage namespace and the standalone helpers:\n\n```ts\n({ input, model, allocate }) => {\n  const accounts = model.search({ modelUuid: input.modelUuid, limit: 50 });\n  const result = allocate({\n    recordId: input.recordId,\n    type: \"territory\",\n    territoryUuid: input.territoryUuid,\n  });\n  return result.member;\n};\n```\n\n> **Note:** there is no runtime `integrations` body registry to populate — connectors are called by handle through `uses`, not through a bundled registry. Run `cargo-ai project types` to generate the `Integrations` **types** for _your_ workspace, so a connector declared in `uses` autocompletes its real actions (see [Populating the registries](#populating-the-registries)). The platform's native actions are hand-written, strongly-typed surfaces that ship with the SDK (`model.*` and the standalone helpers) — no sync needed. Tools, agents, and connectors are all referenced by handle via `uses`.\n\nThe `tools` / `agents` registry keys are **template slugs** — workspace tools and agents have no slug of their own, only the template they were created from. To reference a **specific** tool / agent (a workspace instance with no usable template slug, or a `@cargo-ai/cdk` `defineTool` / `defineAgent` handle), declare it in the workflow's `uses` and call it by key — so the uuid stays in the header, not scattered through the body:\n\n```ts\nimport { toolRef, agentRef } from \"@cargo-ai/workflow-sdk\";\n\ndefineWorkflow(\n  \"qualify\",\n  {\n    input: z.object({ email: z.string() }),\n    output: z.object({ verified: z.unknown(), answer: z.unknown() }),\n    uses: {\n      validate: toolRef(\"3e0c5fde-9f0e-4f60-b4cb-8a4e29d8a001\"),\n      qualify: agentRef(\"7b7a2f64-2f5c-49c0-9c19-d6a01a2b4c11\"),\n    },\n  },\n  ({ input, uses }) => {\n    const verified = uses.validate({ email: input.email });\n    const answer = uses.qualify({ prompt: `qualify ${input.email}` });\n    return { verified, answer };\n  },\n);\n```\n\n`uses` accepts any `{ uuid, resource }` handle. `toolRef(uuid)` / `agentRef(uuid)` are the escape hatch for a raw uuid; a `@cargo-ai/cdk` handle is already such a ref, so pass it directly (`uses: { enrich: enrichTool }`) — the deploy then orders the dependency and injects the real uuid.\n\n### `imports` — reference build-time handles & constants by name\n\n`uses` covers the resources you _call_ (tools, agents, connectors). But `model.*` / `allocate` take a **uuid**, not a callable — so a model, territory, or capacity handle can't ride in `uses`. And because the body is parsed from source (`Function.prototype.toString()`), a bare closure reference like `accounts.uuid` is unresolvable: the parser only sees the name `accounts`, and JavaScript has no way to read a stringified function's closure. Referencing it throws `identifier 'accounts' is not in scope`.\n\n`imports` closes that gap. List the external values the body references, keyed by the identifier as written:\n\n```ts\nimport { defineModel, defineTerritory } from \"@cargo-ai/cdk\";\n\nconst accounts = defineModel(\"accounts\", {\n  /* … */\n});\nconst inbound = defineTerritory(\"inbound\", {\n  /* … */\n});\n\ndefineWorkflow(\n  \"route-inbound\",\n  {\n    input: z.object({ recordId: z.string(), domain: z.string() }),\n    output: z.unknown(),\n    imports: { accounts, inbound },\n  },\n  ({ input, model, allocate }) => {\n    model.upsert({\n      modelUuid: accounts.uuid, // deferred token — deploy-ordered & resolved\n      matchingColumnSlug: \"domain\",\n      matchingValue: input.domain,\n    });\n    return allocate({\n      recordId: input.recordId,\n      type: \"territory\",\n      territoryUuid: inbound.uuid,\n    });\n  },\n);\n```\n\nA `@cargo-ai/cdk` handle's `.uuid` stays a **deferred token**: it serializes verbatim into the node config, so the host orders the dependency (`accounts` deploys first) and swaps in the real uuid at deploy — exactly like `uses`. Plain constants (`imports: { limit: 50 }`) inline as literals, in both config positions and computed expressions.\n\nBecause the body still references the real outer bindings, TypeScript type-checks `accounts.uuid` against the actual handle — `imports` is a pure runtime pass-through. Two limits: a deferred token can only be used **directly as a config value** (not inside a `{{ }}` expression / template literal, where the host's deploy-time resolution never reaches — the parser rejects it), and `imports` is honored by the SDK parser, so a bare identifier works only when the value is listed there.\n\n### Connectors in `uses` — the way to call a connector\n\nA connector is always declared in `uses` and called as `uses.<key>.<action>(input)` — there is no `integrations` body registry. Declare it with a `@cargo-ai/cdk` `defineConnector` handle or with `connectorRef(uuid, integrationSlug)`, then call its actions by key. This pins that **specific** connector instance (its uuid rides on the emitted node instead of being resolved from the slug at run time) — which is exactly what you want when there are two HubSpot connectors (prod + sandbox), when you need a reproducible pin, or when you're wiring a CDK handle:\n\n```ts\nimport { connectorRef } from \"@cargo-ai/workflow-sdk\";\n\ndefineWorkflow(\n  \"sync-contact\",\n  {\n    input: z.object({ email: z.string() }),\n    output: z.object({ ok: z.unknown() }),\n    uses: {\n      // a specific connector — or pass a `defineConnector` handle directly\n      hs: connectorRef(\"9c26d1f2-…\", \"hubspot\"),\n    },\n  },\n  ({ input, uses }) => {\n    // a connector exposes its actions: `uses.<key>.<actionSlug>(input)`\n    const ok = uses.hs.upsertContact({ email: input.email });\n    return { ok };\n  },\n);\n```\n\nUnlike a tool/agent (a single callable `uses.<key>(input)`), a connector is an **action map** — `uses.<key>.<actionSlug>(input)` — typed against the integration's synced action schemas (run `cargo-ai project types`) when the slug is known, or a loose map otherwise. A `@cargo-ai/cdk` `defineConnector` handle is already a connector ref, so `uses: { hs: hubspot }` works and the deploy orders the connector before this workflow and injects its real uuid.\n\n**Per-call options — retry + fallback.** Any registry call takes an optional second argument to set a node's **retry** policy and/or let a failure **continue** instead of halting the run:\n\n```ts\n// uses: { hunter: connectorRef(\"9c26d1f2-…\", \"hunter\") }\n({ input, uses }) => {\n  // retry up to 3 times; on final failure, continue to the next node\n  const email = uses.hunter.findEmail(\n    { domain: input.domain },\n    { retry: 3, continueOnFailure: true },\n  );\n  return email;\n};\n```\n\n`retry` is either a positive integer (shorthand for `maximumAttempts`) or `{ maximumAttempts?, initialInterval?, backoffCoefficient? }` (intervals in milliseconds). `continueOnFailure: true` routes a failure to the node's normal successor (the last node falls through to the workflow's `end`) instead of stopping the run. Both values must be static literals. The same `(input, options)` shape works on `uses.*`, `model.*`, the native helpers, and `memory.*`.\n\n### 3. Use idiomatic JS for control flow\n\nThe parser lowers familiar JS control-flow constructs into the corresponding native nodes:\n\n- `if (a) { … } else { … }` → `branch` node\n- `if (a) … else if (b) … else …` → `switch` node with one route per `else if`\n- `for (const item of array) { … }` → `group` node iterating over `array`\n- `return expr` inside a block ends that branch with `expr`\n\n```ts\ndefineWorkflow(\n  \"qualify\",\n  {\n    input: z.object({ score: z.number() }),\n    output: z.string().nullable(),\n  },\n  ({ input, ai }) => {\n    if (input.score > 80) {\n      return ai(\"write a VIP greeting\");\n    } else if (input.score > 50) {\n      return ai(\"write a standard greeting\");\n    } else {\n      return null;\n    }\n  },\n);\n```\n\n### 4. Plain JS expressions ship verbatim\n\nAnywhere you'd write a value — an argument to an integration call, the right-hand side of a `const`, a `return` expression, an `if` condition — you can use a plain JS expression built from the supported subset listed below. The SDK rewrites identifiers to the matching `nodes.<slug>` path and ships the printed source string to the engine as `{{ <expr> }}`.\n\n```ts\ndefineWorkflow(\n  \"compose\",\n  {\n    input: z.object({ first: z.string(), last: z.string() }),\n    output: z.string(),\n  },\n  ({ input }) => `${input.first.toLowerCase()} ${input.last.toLowerCase()}`,\n);\n```\n\nThe body above compiles to a single `end.variables[0]` whose value is `{{ \\`${nodes.start.first.toLowerCase()} ${nodes.start.last.toLowerCase()}\\` }}`.\n\nA few globals are usable directly: `Date`, `Math`, `JSON`, `Number`, `String`, `Boolean`, `Array`, `Object`, `RegExp` (e.g. `new Date()`, `Math.random()`). They're evaluated **per record at run time**, so `new Date()` in a mapping is each record's write time. Other globals (`crypto`, `process`, …) aren't available and are rejected at compile time.\n\n### 5. Inline JS via `js(({ nodes }) => …)`\n\nFor logic that doesn't fit the supported expression subset (custom array manipulation, multi-statement transforms, etc.), emit a `native.script` node with `js()`:\n\n```ts\ndefineWorkflow(\n  \"shape\",\n  {\n    input: z.object({}),\n    output: z.array(z.object({ x: z.number() })),\n    uses: { hunter: connectorRef(\"9c26d1f2-…\", \"hunter\") },\n  },\n  ({ uses, js }) => {\n    const search = uses.hunter.findEmail({});\n    return js(({ nodes }) => {\n      return nodes.search.results.map((r: { y: number }) => ({ x: r.y }));\n    });\n  },\n);\n```\n\n`js()` ships the function's body verbatim. The function may **not** be `async`, and the runtime exposes only the `{ nodes, parentNodes }` arguments — closure variables are not in scope.\n\n### 6. Inline AI completions via `ai(\"…\")`\n\n`ai()` is shorthand for an inline AI-completed expression. It accepts a single template string or a string-concatenation expression and emits a `templateExpression` with `instructTo: \"ai\"`. The engine runs it through the same AI pipeline the canvas does.\n\n```ts\ndefineWorkflow(\n  \"describe\",\n  {\n    input: z.object({ company: z.string() }),\n    output: z.string().nullable(),\n  },\n  ({ input, ai }) => ai(`write a one-sentence description of ${input.company}`),\n);\n```\n\n### 7. Flow helpers — `balance`, `split`, `humanReview`, `memory`\n\nSome engine nodes have no JS-syntax equivalent, so the scope exposes them as helper functions the parser recognizes by name. Like everything else in the body, the calls are **parsed, not executed** — route bodies must be inline zero-argument arrow / function literals.\n\n**`balance([...])`** — round-robin. Each record runs exactly one route; the return value coalesces every route's output:\n\n```ts\n// uses: { hunter: connectorRef(\"9c26d1f2-…\", \"hunter\"), leadmagic: connectorRef(\"9c26d1f2-…\", \"leadmagic\") }\n({ input, uses, balance }) => {\n  const found = balance([\n    () => uses.hunter.findEmail({ domain: input.domain }),\n    () =>\n      uses.leadmagic.findEmail({\n        firstName: input.first,\n        lastName: input.last,\n      }),\n  ]);\n  return found;\n};\n```\n\n**`split(percentage, { left, right })`** — random A/B split. Records roll ∈ [0, 100); rolls below `percentage` run `left`, the rest run `right`:\n\n```ts\n// uses: { hunter: connectorRef(\"9c26d1f2-…\", \"hunter\"), leadmagic: connectorRef(\"9c26d1f2-…\", \"leadmagic\") }\n({ uses, split }) =>\n  split(30, {\n    left: () => uses.hunter.findEmail({}),\n    right: () => uses.leadmagic.findEmail({ firstName: \"a\", lastName: \"b\" }),\n  });\n```\n\n**`humanReview(config, bodies?)`** — posts a Slack message and blocks until a reviewer clicks Approve or Decline (or the timeout fires). Optional `approved` / `declined` bodies run on the matching outcome:\n\n```ts\n// uses: { hunter: connectorRef(\"9c26d1f2-…\", \"hunter\") }\n({ input, uses, humanReview }) =>\n  humanReview(\n    {\n      connectorUuid: \"<slack-connector-uuid>\",\n      channelId: \"C0123456789\",\n      title: \"Approve outreach?\",\n      content: input.email,\n    },\n    {\n      approved: () => uses.hunter.verifyEmail({ email: input.email }),\n    },\n  );\n```\n\n**`memory.<action>(opts)`** — workflow / workspace key-value store. Actions: `get`, `set`, `remove`, `increment`, `decrement`, `getOrSet`. Each call emits one node and returns a `Ref<{ result: T }>`:\n\n```ts\n({ memory }) => {\n  const count = memory.increment({\n    key: \"emails_sent\",\n    expiresIn: { value: 1, unit: \"day\" },\n  });\n  return count.result;\n};\n```\n\n`expiresIn` is required for `set`, `getOrSet`, `increment`, and `decrement`; `scope` defaults to `\"workflow\"` (pass `\"workspace\"` to share across workflows).\n\n## Supported JS\n\nThe body callback is parsed. Each expression position must be one of:\n\n| Form                                    | Example                                                                         |\n| --------------------------------------- | ------------------------------------------------------------------------------- |\n| Literal                                 | `42`, `\"alice\"`, `true`, `null`, `/regex/i`                                     |\n| Identifier in scope                     | `input`, a local `const` / `let`, a `for…of` loop variable                      |\n| Member access                           | `input.score`, `enriched.email`, `rows[0]`                                      |\n| Optional chaining                       | `enriched?.email`                                                               |\n| Binary operators                        | `a + b`, `a > b`, `a === b`, `a % b`                                            |\n| Logical operators                       | `a && b`, `a \\|\\| b`, `a ?? b`                                                  |\n| Unary operators                         | `!a`, `-x`, `typeof a`                                                          |\n| Ternary                                 | `a > 0 ? \"yes\" : \"no\"`                                                          |\n| Template literal                        | `` `hi ${name}` ``                                                              |\n| Object / array literals                 | `{ a: 1, b: input.x }`, `[1, 2, ...rest]`                                       |\n| Method call on a value                  | `email.includes(\"@\")`, `/re/.test(s)`                                           |\n| Registry call                           | `uses.<key>.<action>({...})`, `uses.validate(…)`, `model.search(…)`, `delay(…)` |\n| `ai(\"…\")` / `js((rt) => …)`             | inline AI expression / inline script node                                       |\n| Flow helper call                        | `balance([…])`, `split(…)`, `humanReview(…)`, `memory.get(…)`                   |\n| `new` / member call on an engine global | `new Date(s)`, `Math.random()`, `JSON.stringify(x)`                             |\n\nStatement-level forms supported inside the body:\n\n- `const` / `let` declarations binding a single identifier (no destructuring)\n- `if` / `else if` / `else`\n- `for (const x of array) { … }`\n- `return <expr>` / `return;`\n\nAnything else (closures, `try/catch`, `await`, `throw`, `function` declarations, destructuring) is rejected at compile time with a clear error.\n\n### Toolchain requirements\n\nThe SDK reads your workflow body with `Function.prototype.toString()` and parses that source. The function the JS engine holds must therefore be the code you wrote:\n\n- **Compile workflow files with a modern target** (ES2022 or later). Down-leveling rewrites `for…of`, template literals, and optional chaining into forms the parser rejects — and worse, into code you didn't write.\n- **Don't instrument workflow files.** Code-coverage tools (istanbul/nyc, vitest's default V8 coverage is fine) inject counters into the function source and break parsing. Exclude workflow definition files from instrumentation.\n- Standard TypeScript type syntax is fine — `tsc` and esbuild strip types without touching the runtime code.\n\nIf the body can't be parsed, `defineWorkflow` throws a `could not parse the workflow body` error explaining this constraint.\n\n## Populating the registries\n\nYour workspace's connector types come from `cargo-ai project types`, which reads your workspace over the API and writes:\n\n- `.cargo-ai/cargo-types.d.ts` — `declare module` augmentations. It adds your workspace's integration slugs to the `Integrations` interface (with input types generated from each action's schema) — now used to type `uses.<key>.<action>({ … })` so a connector declared in `uses` typechecks against the real shape — and also types `@cargo-ai/cdk`'s `defineConnector`/`defineModel` config against your connector/extractor schemas\n\nAdd `.cargo-ai` to your `tsconfig.json` `include` with an explicit glob (`\".cargo-ai/**/*.d.ts\"` — a bare dot-dir path is ignored by TypeScript). Re-run `cargo-ai project types` whenever the workspace's connectors change.\n\nTools and agents are **not** synced — they're referenced by handle through `defineWorkflow`'s `uses` (a `@cargo-ai/cdk` `defineTool`/`defineAgent` handle, or `toolRef`/`agentRef(\"<uuid>\")`). The platform's native actions are not synced either: they're identical in every workspace, so they ship with the SDK as hand-written, strongly-typed surfaces (`model.*` and the standalone helpers).\n\n## Status\n\nEarly access. Ships `defineWorkflow` plus the hand-written native surfaces (`model.*` and the standalone helpers) and the handle-based `uses` surface (tools, agents, connectors) described above. Canvas-side rendering of SDK-authored workflows works because the wire format is identical.\n\nNode types the SDK can express today:\n\n| Engine node                | How you write it                                                                                  |\n| -------------------------- | ------------------------------------------------------------------------------------------------- |\n| `connector`                | `uses.<key>.<actionSlug>({ … })` (declared via `connectorRef` / a CDK handle)                     |\n| `tool`                     | `uses.<key>({ … })` (declared via `toolRef` / a CDK handle)                                       |\n| `agent`                    | `uses.<key>({ … })` (declared via `agentRef` / a CDK handle)                                      |\n| `native` (storage)         | `model.search / upsert / update / insert / remove / record / ask / customColumn`                  |\n| `native` (data helpers)    | `allocate / delay / python / scoring / fileSearch / sendEmail / waitEmailEvent / listEmailEvents` |\n| `native.branch` / `switch` | `if` / `else if` / `else`                                                                         |\n| `native.group`             | `for (const x of items) { … }`                                                                    |\n| `native.script`            | `js((runtime) => …)`                                                                              |\n| `native.balance`           | `balance([() => …, () => …])`                                                                     |\n| `native.split`             | `split(percentage, { left, right })`                                                              |\n| `native.humanReview`       | `humanReview(config, { approved?, declined? })`                                                   |\n| `native.memory`            | `memory.get / set / remove / increment / decrement / getOrSet`                                    |\n| `start` / `end`            | implicit (`defineWorkflow` frames every workflow)                                                 |\n\n## Documentation\n\n[docs.getcargo.ai](https://docs.getcargo.ai)\n","readmeFilename":"README.md"}