dotdo 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (667) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +446 -315
  3. package/cli/README.md +238 -0
  4. package/cli/agent.ts +72 -0
  5. package/cli/bin.js +44 -0
  6. package/cli/bin.ts +38 -0
  7. package/cli/build.ts +157 -0
  8. package/cli/commands/auth/login.ts +14 -0
  9. package/cli/commands/auth/logout.ts +6 -0
  10. package/cli/commands/auth/whoami.ts +16 -0
  11. package/cli/commands/deploy-multi.ts +245 -0
  12. package/cli/commands/dev/deploy.ts +100 -0
  13. package/cli/commands/dev/dev.ts +95 -0
  14. package/cli/commands/dev/logs.ts +91 -0
  15. package/cli/commands/dev-local.ts +88 -0
  16. package/cli/commands/do-ops.ts +314 -0
  17. package/cli/commands/index.ts +100 -0
  18. package/cli/commands/init.ts +247 -0
  19. package/cli/commands/introspect/emitter.ts +315 -0
  20. package/cli/commands/introspect/index.ts +193 -0
  21. package/cli/commands/link.ts +598 -0
  22. package/cli/commands/snippets.ts +415 -0
  23. package/cli/commands/tunnel.ts +239 -0
  24. package/cli/device-auth.ts +289 -0
  25. package/cli/fallback.ts +12 -0
  26. package/cli/index.ts +121 -0
  27. package/cli/main.ts +246 -0
  28. package/cli/mcp-stdio.ts +790 -0
  29. package/cli/package.json +62 -0
  30. package/cli/runtime/do-registry.ts +193 -0
  31. package/cli/runtime/embedded-db.ts +344 -0
  32. package/cli/runtime/index.ts +9 -0
  33. package/cli/runtime/miniflare-adapter.ts +162 -0
  34. package/cli/sandbox.ts +82 -0
  35. package/cli/src/args.ts +174 -0
  36. package/cli/src/auth.ts +55 -0
  37. package/cli/src/commands/call.ts +84 -0
  38. package/cli/src/commands/charge.ts +96 -0
  39. package/cli/src/commands/config.ts +115 -0
  40. package/cli/src/commands/email.ts +112 -0
  41. package/cli/src/commands/llm.ts +115 -0
  42. package/cli/src/commands/queue.ts +134 -0
  43. package/cli/src/commands/text.ts +86 -0
  44. package/cli/src/config.ts +185 -0
  45. package/cli/src/output.ts +246 -0
  46. package/cli/src/rpc.ts +192 -0
  47. package/cli/utils/config.ts +282 -0
  48. package/cli/utils/detect.ts +73 -0
  49. package/cli/utils/index.ts +15 -0
  50. package/cli/utils/logger.ts +232 -0
  51. package/dist/ai/index.js +19 -0
  52. package/dist/ai/index.js.map +1 -0
  53. package/dist/ai/template-literals.js +852 -0
  54. package/dist/ai/template-literals.js.map +1 -0
  55. package/dist/api/middleware/auth-federation.js +573 -0
  56. package/dist/api/middleware/auth-federation.js.map +1 -0
  57. package/dist/api/middleware/auth.js +545 -0
  58. package/dist/api/middleware/auth.js.map +1 -0
  59. package/dist/db/actions.js +212 -0
  60. package/dist/db/actions.js.map +1 -0
  61. package/dist/db/auth.js +506 -0
  62. package/dist/db/auth.js.map +1 -0
  63. package/dist/db/branches.js +65 -0
  64. package/dist/db/branches.js.map +1 -0
  65. package/dist/db/clickhouse.js +1074 -0
  66. package/dist/db/clickhouse.js.map +1 -0
  67. package/dist/db/dlq.js +39 -0
  68. package/dist/db/dlq.js.map +1 -0
  69. package/dist/db/events.js +28 -0
  70. package/dist/db/events.js.map +1 -0
  71. package/dist/db/exec.js +64 -0
  72. package/dist/db/exec.js.map +1 -0
  73. package/dist/db/files.js +85 -0
  74. package/dist/db/files.js.map +1 -0
  75. package/dist/db/flags.js +24 -0
  76. package/dist/db/flags.js.map +1 -0
  77. package/dist/db/git.js +116 -0
  78. package/dist/db/git.js.map +1 -0
  79. package/dist/db/iceberg/inverted-index.js +862 -0
  80. package/dist/db/iceberg/inverted-index.js.map +1 -0
  81. package/dist/db/iceberg/puffin.js +878 -0
  82. package/dist/db/iceberg/puffin.js.map +1 -0
  83. package/dist/db/iceberg/search-manifest.js +422 -0
  84. package/dist/db/iceberg/search-manifest.js.map +1 -0
  85. package/dist/db/iceberg/types.js +8 -0
  86. package/dist/db/iceberg/types.js.map +1 -0
  87. package/dist/db/index.js +121 -0
  88. package/dist/db/index.js.map +1 -0
  89. package/dist/db/integrations.js +368 -0
  90. package/dist/db/integrations.js.map +1 -0
  91. package/dist/db/json-indexes.js +332 -0
  92. package/dist/db/json-indexes.js.map +1 -0
  93. package/dist/db/linked-accounts.js +287 -0
  94. package/dist/db/linked-accounts.js.map +1 -0
  95. package/dist/db/nouns.js +183 -0
  96. package/dist/db/nouns.js.map +1 -0
  97. package/dist/db/objects.js +170 -0
  98. package/dist/db/objects.js.map +1 -0
  99. package/dist/db/primitives/dag-scheduler/index.js +869 -0
  100. package/dist/db/primitives/dag-scheduler/index.js.map +1 -0
  101. package/dist/db/primitives/exactly-once-context.js +237 -0
  102. package/dist/db/primitives/exactly-once-context.js.map +1 -0
  103. package/dist/db/primitives/index.js +62 -0
  104. package/dist/db/primitives/index.js.map +1 -0
  105. package/dist/db/primitives/keyed-router.js +145 -0
  106. package/dist/db/primitives/keyed-router.js.map +1 -0
  107. package/dist/db/primitives/observability.js +162 -0
  108. package/dist/db/primitives/observability.js.map +1 -0
  109. package/dist/db/primitives/schema-evolution.js +643 -0
  110. package/dist/db/primitives/schema-evolution.js.map +1 -0
  111. package/dist/db/primitives/stateful-operator/index.js +770 -0
  112. package/dist/db/primitives/stateful-operator/index.js.map +1 -0
  113. package/dist/db/primitives/temporal-store.js +306 -0
  114. package/dist/db/primitives/temporal-store.js.map +1 -0
  115. package/dist/db/primitives/typed-column-store.js +1229 -0
  116. package/dist/db/primitives/typed-column-store.js.map +1 -0
  117. package/dist/db/primitives/utils/duration.js +162 -0
  118. package/dist/db/primitives/utils/duration.js.map +1 -0
  119. package/dist/db/primitives/utils/murmur3.js +116 -0
  120. package/dist/db/primitives/utils/murmur3.js.map +1 -0
  121. package/dist/db/primitives/watermark-service.js +136 -0
  122. package/dist/db/primitives/watermark-service.js.map +1 -0
  123. package/dist/db/primitives/window-manager.js +764 -0
  124. package/dist/db/primitives/window-manager.js.map +1 -0
  125. package/dist/db/relationships.js +66 -0
  126. package/dist/db/relationships.js.map +1 -0
  127. package/dist/db/schema-minimal.js +61 -0
  128. package/dist/db/schema-minimal.js.map +1 -0
  129. package/dist/db/search.js +28 -0
  130. package/dist/db/search.js.map +1 -0
  131. package/dist/db/stores.js +1665 -0
  132. package/dist/db/stores.js.map +1 -0
  133. package/dist/db/things.js +297 -0
  134. package/dist/db/things.js.map +1 -0
  135. package/dist/db/vault.js +171 -0
  136. package/dist/db/vault.js.map +1 -0
  137. package/dist/db/verbs.js +102 -0
  138. package/dist/db/verbs.js.map +1 -0
  139. package/dist/do/base.js +48 -0
  140. package/dist/do/base.js.map +1 -0
  141. package/dist/do/tiny.js +31 -0
  142. package/dist/do/tiny.js.map +1 -0
  143. package/dist/lib/DOAuth.js +261 -0
  144. package/dist/lib/DOAuth.js.map +1 -0
  145. package/dist/lib/DODispatcher.js +72 -0
  146. package/dist/lib/DODispatcher.js.map +1 -0
  147. package/dist/lib/Modifier.js +189 -0
  148. package/dist/lib/Modifier.js.map +1 -0
  149. package/dist/lib/StateStorage.js +403 -0
  150. package/dist/lib/StateStorage.js.map +1 -0
  151. package/dist/lib/TypeRegistry.js +122 -0
  152. package/dist/lib/TypeRegistry.js.map +1 -0
  153. package/dist/lib/ai/gateway.js +247 -0
  154. package/dist/lib/ai/gateway.js.map +1 -0
  155. package/dist/lib/ai/tool-loop-agent.js +591 -0
  156. package/dist/lib/ai/tool-loop-agent.js.map +1 -0
  157. package/dist/lib/auto-wiring.js +439 -0
  158. package/dist/lib/auto-wiring.js.map +1 -0
  159. package/dist/lib/browse/browserbase.js +163 -0
  160. package/dist/lib/browse/browserbase.js.map +1 -0
  161. package/dist/lib/browse/cloudflare.js +144 -0
  162. package/dist/lib/browse/cloudflare.js.map +1 -0
  163. package/dist/lib/browse/index.js +62 -0
  164. package/dist/lib/browse/index.js.map +1 -0
  165. package/dist/lib/browse/types.js +13 -0
  166. package/dist/lib/browse/types.js.map +1 -0
  167. package/dist/lib/cache/index.js +37 -0
  168. package/dist/lib/cache/index.js.map +1 -0
  169. package/dist/lib/cache/visibility.js +638 -0
  170. package/dist/lib/cache/visibility.js.map +1 -0
  171. package/dist/lib/capabilities.js +268 -0
  172. package/dist/lib/capabilities.js.map +1 -0
  173. package/dist/lib/channels/base.js +106 -0
  174. package/dist/lib/channels/base.js.map +1 -0
  175. package/dist/lib/channels/discord.js +94 -0
  176. package/dist/lib/channels/discord.js.map +1 -0
  177. package/dist/lib/channels/email.js +204 -0
  178. package/dist/lib/channels/email.js.map +1 -0
  179. package/dist/lib/channels/index.js +90 -0
  180. package/dist/lib/channels/index.js.map +1 -0
  181. package/dist/lib/channels/mdxui-chat.js +95 -0
  182. package/dist/lib/channels/mdxui-chat.js.map +1 -0
  183. package/dist/lib/channels/slack-blockkit.js +121 -0
  184. package/dist/lib/channels/slack-blockkit.js.map +1 -0
  185. package/dist/lib/channels/types.js +7 -0
  186. package/dist/lib/channels/types.js.map +1 -0
  187. package/dist/lib/cloudflare/ai.js +654 -0
  188. package/dist/lib/cloudflare/ai.js.map +1 -0
  189. package/dist/lib/cloudflare/index.js +88 -0
  190. package/dist/lib/cloudflare/index.js.map +1 -0
  191. package/dist/lib/cloudflare/kv.js +342 -0
  192. package/dist/lib/cloudflare/kv.js.map +1 -0
  193. package/dist/lib/cloudflare/queues.js +434 -0
  194. package/dist/lib/cloudflare/queues.js.map +1 -0
  195. package/dist/lib/cloudflare/r2.js +604 -0
  196. package/dist/lib/cloudflare/r2.js.map +1 -0
  197. package/dist/lib/cloudflare/vectorize.js +494 -0
  198. package/dist/lib/cloudflare/vectorize.js.map +1 -0
  199. package/dist/lib/cloudflare/workflows.js +569 -0
  200. package/dist/lib/cloudflare/workflows.js.map +1 -0
  201. package/dist/lib/colo/caching.js +196 -0
  202. package/dist/lib/colo/caching.js.map +1 -0
  203. package/dist/lib/colo/detection.js +194 -0
  204. package/dist/lib/colo/detection.js.map +1 -0
  205. package/dist/lib/colo/external-data.js +219 -0
  206. package/dist/lib/colo/external-data.js.map +1 -0
  207. package/dist/lib/colo/globe-data.js +179 -0
  208. package/dist/lib/colo/globe-data.js.map +1 -0
  209. package/dist/lib/colo/index.js +16 -0
  210. package/dist/lib/colo/index.js.map +1 -0
  211. package/dist/lib/decorators.js +37 -0
  212. package/dist/lib/decorators.js.map +1 -0
  213. package/dist/lib/discovery.js +81 -0
  214. package/dist/lib/discovery.js.map +1 -0
  215. package/dist/lib/executors/AgenticFunctionExecutor.js +619 -0
  216. package/dist/lib/executors/AgenticFunctionExecutor.js.map +1 -0
  217. package/dist/lib/executors/BaseFunctionExecutor.js +328 -0
  218. package/dist/lib/executors/BaseFunctionExecutor.js.map +1 -0
  219. package/dist/lib/executors/CascadeExecutor.js +418 -0
  220. package/dist/lib/executors/CascadeExecutor.js.map +1 -0
  221. package/dist/lib/executors/CodeFunctionExecutor.js +904 -0
  222. package/dist/lib/executors/CodeFunctionExecutor.js.map +1 -0
  223. package/dist/lib/executors/GenerativeFunctionExecutor.js +904 -0
  224. package/dist/lib/executors/GenerativeFunctionExecutor.js.map +1 -0
  225. package/dist/lib/executors/HumanFunctionExecutor.js +884 -0
  226. package/dist/lib/executors/HumanFunctionExecutor.js.map +1 -0
  227. package/dist/lib/executors/ParallelStepExecutor.js +308 -0
  228. package/dist/lib/executors/ParallelStepExecutor.js.map +1 -0
  229. package/dist/lib/executors/types.js +12 -0
  230. package/dist/lib/executors/types.js.map +1 -0
  231. package/dist/lib/experiments.js +89 -0
  232. package/dist/lib/experiments.js.map +1 -0
  233. package/dist/lib/flags/store.js +262 -0
  234. package/dist/lib/flags/store.js.map +1 -0
  235. package/dist/lib/functions/FunctionComposition.js +467 -0
  236. package/dist/lib/functions/FunctionComposition.js.map +1 -0
  237. package/dist/lib/functions/FunctionMiddleware.js +457 -0
  238. package/dist/lib/functions/FunctionMiddleware.js.map +1 -0
  239. package/dist/lib/functions/FunctionRegistry.js +426 -0
  240. package/dist/lib/functions/FunctionRegistry.js.map +1 -0
  241. package/dist/lib/functions/createFunction.js +1048 -0
  242. package/dist/lib/functions/createFunction.js.map +1 -0
  243. package/dist/lib/humans/index.js +68 -0
  244. package/dist/lib/humans/index.js.map +1 -0
  245. package/dist/lib/humans/templates.js +117 -0
  246. package/dist/lib/humans/templates.js.map +1 -0
  247. package/dist/lib/identity.js +98 -0
  248. package/dist/lib/identity.js.map +1 -0
  249. package/dist/lib/index.js +9 -0
  250. package/dist/lib/index.js.map +1 -0
  251. package/dist/lib/logging/error-logger.js +163 -0
  252. package/dist/lib/logging/error-logger.js.map +1 -0
  253. package/dist/lib/logging/index.js +160 -0
  254. package/dist/lib/logging/index.js.map +1 -0
  255. package/dist/lib/mixins/bash.js +753 -0
  256. package/dist/lib/mixins/bash.js.map +1 -0
  257. package/dist/lib/mixins/fs.js +648 -0
  258. package/dist/lib/mixins/fs.js.map +1 -0
  259. package/dist/lib/mixins/git.js +1006 -0
  260. package/dist/lib/mixins/git.js.map +1 -0
  261. package/dist/lib/mixins/npm.js +662 -0
  262. package/dist/lib/mixins/npm.js.map +1 -0
  263. package/dist/lib/noun-id.js +278 -0
  264. package/dist/lib/noun-id.js.map +1 -0
  265. package/dist/lib/rate-limit/sliding-window.js +148 -0
  266. package/dist/lib/rate-limit/sliding-window.js.map +1 -0
  267. package/dist/lib/rate-limit.js +110 -0
  268. package/dist/lib/rate-limit.js.map +1 -0
  269. package/dist/lib/rpc/bindings.js +548 -0
  270. package/dist/lib/rpc/bindings.js.map +1 -0
  271. package/dist/lib/rpc/index.js +64 -0
  272. package/dist/lib/rpc/index.js.map +1 -0
  273. package/dist/lib/safe-stringify.js +223 -0
  274. package/dist/lib/safe-stringify.js.map +1 -0
  275. package/dist/lib/sandbox/miniflare-sandbox.js +1007 -0
  276. package/dist/lib/sandbox/miniflare-sandbox.js.map +1 -0
  277. package/dist/lib/sqids.js +110 -0
  278. package/dist/lib/sqids.js.map +1 -0
  279. package/dist/lib/sql/adapters/index.js +10 -0
  280. package/dist/lib/sql/adapters/index.js.map +1 -0
  281. package/dist/lib/sql/adapters/node-sql-parser.js +552 -0
  282. package/dist/lib/sql/adapters/node-sql-parser.js.map +1 -0
  283. package/dist/lib/sql/adapters/pgsql-parser.js +1190 -0
  284. package/dist/lib/sql/adapters/pgsql-parser.js.map +1 -0
  285. package/dist/lib/sql/index.js +277 -0
  286. package/dist/lib/sql/index.js.map +1 -0
  287. package/dist/lib/sql/types.js +56 -0
  288. package/dist/lib/sql/types.js.map +1 -0
  289. package/dist/lib/type-classifier.js +126 -0
  290. package/dist/lib/type-classifier.js.map +1 -0
  291. package/dist/lib/utils/html.js +47 -0
  292. package/dist/lib/utils/html.js.map +1 -0
  293. package/dist/lib/validation.js +48 -0
  294. package/dist/lib/validation.js.map +1 -0
  295. package/dist/lib/vault/store.js +411 -0
  296. package/dist/lib/vault/store.js.map +1 -0
  297. package/dist/metrics/hunch.js +739 -0
  298. package/dist/metrics/hunch.js.map +1 -0
  299. package/dist/objects/API.js +302 -0
  300. package/dist/objects/API.js.map +1 -0
  301. package/dist/objects/Agent.js +179 -0
  302. package/dist/objects/Agent.js.map +1 -0
  303. package/dist/objects/AgenticFunctionExecutor.js +8 -0
  304. package/dist/objects/AgenticFunctionExecutor.js.map +1 -0
  305. package/dist/objects/App.js +83 -0
  306. package/dist/objects/App.js.map +1 -0
  307. package/dist/objects/Browser.js +884 -0
  308. package/dist/objects/Browser.js.map +1 -0
  309. package/dist/objects/Business.js +107 -0
  310. package/dist/objects/Business.js.map +1 -0
  311. package/dist/objects/CLI.js +221 -0
  312. package/dist/objects/CLI.js.map +1 -0
  313. package/dist/objects/CodeFunctionExecutor.js +8 -0
  314. package/dist/objects/CodeFunctionExecutor.js.map +1 -0
  315. package/dist/objects/Collection.js +161 -0
  316. package/dist/objects/Collection.js.map +1 -0
  317. package/dist/objects/DO.js +41 -0
  318. package/dist/objects/DO.js.map +1 -0
  319. package/dist/objects/DOBase.js +2309 -0
  320. package/dist/objects/DOBase.js.map +1 -0
  321. package/dist/objects/DOCache.js +153 -0
  322. package/dist/objects/DOCache.js.map +1 -0
  323. package/dist/objects/DOFull.js +1676 -0
  324. package/dist/objects/DOFull.js.map +1 -0
  325. package/dist/objects/DOTiny.js +207 -0
  326. package/dist/objects/DOTiny.js.map +1 -0
  327. package/dist/objects/Directory.js +199 -0
  328. package/dist/objects/Directory.js.map +1 -0
  329. package/dist/objects/Entity.js +413 -0
  330. package/dist/objects/Entity.js.map +1 -0
  331. package/dist/objects/Function.js +116 -0
  332. package/dist/objects/Function.js.map +1 -0
  333. package/dist/objects/Human.js +231 -0
  334. package/dist/objects/Human.js.map +1 -0
  335. package/dist/objects/HumanFunctionExecutor.js +8 -0
  336. package/dist/objects/HumanFunctionExecutor.js.map +1 -0
  337. package/dist/objects/IcebergMetadataDO.js +938 -0
  338. package/dist/objects/IcebergMetadataDO.js.map +1 -0
  339. package/dist/objects/IntegrationsDO.js +1174 -0
  340. package/dist/objects/IntegrationsDO.js.map +1 -0
  341. package/dist/objects/ObservabilityBroadcaster.js +149 -0
  342. package/dist/objects/ObservabilityBroadcaster.js.map +1 -0
  343. package/dist/objects/Package.js +154 -0
  344. package/dist/objects/Package.js.map +1 -0
  345. package/dist/objects/Product.js +193 -0
  346. package/dist/objects/Product.js.map +1 -0
  347. package/dist/objects/SDK.js +152 -0
  348. package/dist/objects/SDK.js.map +1 -0
  349. package/dist/objects/SaaS.js +235 -0
  350. package/dist/objects/SaaS.js.map +1 -0
  351. package/dist/objects/SandboxDO.js +759 -0
  352. package/dist/objects/SandboxDO.js.map +1 -0
  353. package/dist/objects/Service.js +337 -0
  354. package/dist/objects/Service.js.map +1 -0
  355. package/dist/objects/Site.js +80 -0
  356. package/dist/objects/Site.js.map +1 -0
  357. package/dist/objects/Startup.js +479 -0
  358. package/dist/objects/Startup.js.map +1 -0
  359. package/dist/objects/ThingsDO.js +170 -0
  360. package/dist/objects/ThingsDO.js.map +1 -0
  361. package/dist/objects/VectorShardDO.js +650 -0
  362. package/dist/objects/VectorShardDO.js.map +1 -0
  363. package/dist/objects/Worker.js +144 -0
  364. package/dist/objects/Worker.js.map +1 -0
  365. package/dist/objects/Workflow.js +196 -0
  366. package/dist/objects/Workflow.js.map +1 -0
  367. package/dist/objects/WorkflowFactory.js +313 -0
  368. package/dist/objects/WorkflowFactory.js.map +1 -0
  369. package/dist/objects/WorkflowRuntime.js +863 -0
  370. package/dist/objects/WorkflowRuntime.js.map +1 -0
  371. package/dist/objects/circuit-breaker-bulkhead.js +178 -0
  372. package/dist/objects/circuit-breaker-bulkhead.js.map +1 -0
  373. package/dist/objects/createFunction.js +934 -0
  374. package/dist/objects/createFunction.js.map +1 -0
  375. package/dist/objects/index.js +80 -0
  376. package/dist/objects/index.js.map +1 -0
  377. package/dist/objects/lifecycle/Branch.js +275 -0
  378. package/dist/objects/lifecycle/Branch.js.map +1 -0
  379. package/dist/objects/lifecycle/Clone.js +1499 -0
  380. package/dist/objects/lifecycle/Clone.js.map +1 -0
  381. package/dist/objects/lifecycle/Compact.js +237 -0
  382. package/dist/objects/lifecycle/Compact.js.map +1 -0
  383. package/dist/objects/lifecycle/Promote.js +476 -0
  384. package/dist/objects/lifecycle/Promote.js.map +1 -0
  385. package/dist/objects/lifecycle/Shard.js +560 -0
  386. package/dist/objects/lifecycle/Shard.js.map +1 -0
  387. package/dist/objects/lifecycle/index.js +15 -0
  388. package/dist/objects/lifecycle/index.js.map +1 -0
  389. package/dist/objects/lifecycle/types.js +33 -0
  390. package/dist/objects/lifecycle/types.js.map +1 -0
  391. package/dist/objects/mixins/infrastructure.js +171 -0
  392. package/dist/objects/mixins/infrastructure.js.map +1 -0
  393. package/dist/objects/modules/StoresModule.js +153 -0
  394. package/dist/objects/modules/StoresModule.js.map +1 -0
  395. package/dist/objects/persistence/checkpoint-manager.js +606 -0
  396. package/dist/objects/persistence/checkpoint-manager.js.map +1 -0
  397. package/dist/objects/persistence/index.js +72 -0
  398. package/dist/objects/persistence/index.js.map +1 -0
  399. package/dist/objects/persistence/migration-runner.js +562 -0
  400. package/dist/objects/persistence/migration-runner.js.map +1 -0
  401. package/dist/objects/persistence/replication-manager.js +501 -0
  402. package/dist/objects/persistence/replication-manager.js.map +1 -0
  403. package/dist/objects/persistence/tiered-storage-manager.js +595 -0
  404. package/dist/objects/persistence/tiered-storage-manager.js.map +1 -0
  405. package/dist/objects/persistence/types.js +14 -0
  406. package/dist/objects/persistence/types.js.map +1 -0
  407. package/dist/objects/persistence/wal-manager.js +653 -0
  408. package/dist/objects/persistence/wal-manager.js.map +1 -0
  409. package/dist/objects/presets/index.js +20 -0
  410. package/dist/objects/presets/index.js.map +1 -0
  411. package/dist/objects/presets/primitives.js +188 -0
  412. package/dist/objects/presets/primitives.js.map +1 -0
  413. package/dist/objects/primitives/alarm-adapter.js +141 -0
  414. package/dist/objects/primitives/alarm-adapter.js.map +1 -0
  415. package/dist/objects/primitives/index.js +337 -0
  416. package/dist/objects/primitives/index.js.map +1 -0
  417. package/dist/objects/primitives/storage-adapter.js +182 -0
  418. package/dist/objects/primitives/storage-adapter.js.map +1 -0
  419. package/dist/objects/primitives/with-primitives.js +102 -0
  420. package/dist/objects/primitives/with-primitives.js.map +1 -0
  421. package/dist/objects/services/StoreManager.js +227 -0
  422. package/dist/objects/services/StoreManager.js.map +1 -0
  423. package/dist/objects/services/index.js +13 -0
  424. package/dist/objects/services/index.js.map +1 -0
  425. package/dist/objects/transport/auth-layer.js +1451 -0
  426. package/dist/objects/transport/auth-layer.js.map +1 -0
  427. package/dist/objects/transport/capnweb-target.js +355 -0
  428. package/dist/objects/transport/capnweb-target.js.map +1 -0
  429. package/dist/objects/transport/chain.js +441 -0
  430. package/dist/objects/transport/chain.js.map +1 -0
  431. package/dist/objects/transport/handler.js +58 -0
  432. package/dist/objects/transport/handler.js.map +1 -0
  433. package/dist/objects/transport/index.js +53 -0
  434. package/dist/objects/transport/index.js.map +1 -0
  435. package/dist/objects/transport/mcp-server.js +691 -0
  436. package/dist/objects/transport/mcp-server.js.map +1 -0
  437. package/dist/objects/transport/rest-autowire.js +1508 -0
  438. package/dist/objects/transport/rest-autowire.js.map +1 -0
  439. package/dist/objects/transport/rest-router.js +440 -0
  440. package/dist/objects/transport/rest-router.js.map +1 -0
  441. package/dist/objects/transport/rpc-server.js +1539 -0
  442. package/dist/objects/transport/rpc-server.js.map +1 -0
  443. package/dist/objects/transport/shared.js +576 -0
  444. package/dist/objects/transport/shared.js.map +1 -0
  445. package/dist/objects/transport/sync-engine.js +291 -0
  446. package/dist/objects/transport/sync-engine.js.map +1 -0
  447. package/dist/objects/transport/types.js +8 -0
  448. package/dist/objects/transport/types.js.map +1 -0
  449. package/dist/sandbox/index.js +258 -0
  450. package/dist/sandbox/index.js.map +1 -0
  451. package/dist/snippets/artifacts-config.js +241 -0
  452. package/dist/snippets/artifacts-config.js.map +1 -0
  453. package/dist/snippets/artifacts-ingest.js +832 -0
  454. package/dist/snippets/artifacts-ingest.js.map +1 -0
  455. package/dist/snippets/artifacts-serve.js +1035 -0
  456. package/dist/snippets/artifacts-serve.js.map +1 -0
  457. package/dist/snippets/artifacts-types.js +161 -0
  458. package/dist/snippets/artifacts-types.js.map +1 -0
  459. package/dist/snippets/cache-probe.js +376 -0
  460. package/dist/snippets/cache-probe.js.map +1 -0
  461. package/dist/snippets/cache.js +10 -0
  462. package/dist/snippets/cache.js.map +1 -0
  463. package/dist/snippets/events.js +469 -0
  464. package/dist/snippets/events.js.map +1 -0
  465. package/dist/snippets/index.js +7 -0
  466. package/dist/snippets/index.js.map +1 -0
  467. package/dist/snippets/proxy.js +495 -0
  468. package/dist/snippets/proxy.js.map +1 -0
  469. package/dist/snippets/search.js +1759 -0
  470. package/dist/snippets/search.js.map +1 -0
  471. package/dist/streams/index.js +30 -0
  472. package/dist/streams/index.js.map +1 -0
  473. package/dist/streams/observability.js +68 -0
  474. package/dist/streams/observability.js.map +1 -0
  475. package/dist/types/AI.js +92 -0
  476. package/dist/types/AI.js.map +1 -0
  477. package/dist/types/AIFunction.js +171 -0
  478. package/dist/types/AIFunction.js.map +1 -0
  479. package/dist/types/BrowseVerb.js +89 -0
  480. package/dist/types/BrowseVerb.js.map +1 -0
  481. package/dist/types/Browser.js +31 -0
  482. package/dist/types/Browser.js.map +1 -0
  483. package/dist/types/Chaos.js +15 -0
  484. package/dist/types/Chaos.js.map +1 -0
  485. package/dist/types/CloudflareBindings.js +109 -0
  486. package/dist/types/CloudflareBindings.js.map +1 -0
  487. package/dist/types/Collection.js +50 -0
  488. package/dist/types/Collection.js.map +1 -0
  489. package/dist/types/DO.js +2 -0
  490. package/dist/types/DO.js.map +1 -0
  491. package/dist/types/DOLocation.js +63 -0
  492. package/dist/types/DOLocation.js.map +1 -0
  493. package/dist/types/EventHandler.js +57 -0
  494. package/dist/types/EventHandler.js.map +1 -0
  495. package/dist/types/Experiment.js +33 -0
  496. package/dist/types/Experiment.js.map +1 -0
  497. package/dist/types/Flag.js +57 -0
  498. package/dist/types/Flag.js.map +1 -0
  499. package/dist/types/Lifecycle.js +13 -0
  500. package/dist/types/Lifecycle.js.map +1 -0
  501. package/dist/types/Location.js +169 -0
  502. package/dist/types/Location.js.map +1 -0
  503. package/dist/types/Noun.js +66 -0
  504. package/dist/types/Noun.js.map +1 -0
  505. package/dist/types/SessionEvent.js +194 -0
  506. package/dist/types/SessionEvent.js.map +1 -0
  507. package/dist/types/Thing.js +55 -0
  508. package/dist/types/Thing.js.map +1 -0
  509. package/dist/types/ThingDO.js +153 -0
  510. package/dist/types/ThingDO.js.map +1 -0
  511. package/dist/types/Things.js +2 -0
  512. package/dist/types/Things.js.map +1 -0
  513. package/dist/types/Verb.js +119 -0
  514. package/dist/types/Verb.js.map +1 -0
  515. package/dist/types/WorkflowContext.js +70 -0
  516. package/dist/types/WorkflowContext.js.map +1 -0
  517. package/dist/types/analytics-api.js +13 -0
  518. package/dist/types/analytics-api.js.map +1 -0
  519. package/dist/types/capabilities.js +135 -0
  520. package/dist/types/capabilities.js.map +1 -0
  521. package/dist/types/drizzle.js +12 -0
  522. package/dist/types/drizzle.js.map +1 -0
  523. package/dist/types/event.js +201 -0
  524. package/dist/types/event.js.map +1 -0
  525. package/dist/types/fn.js +12 -0
  526. package/dist/types/fn.js.map +1 -0
  527. package/dist/types/iceberg.js +48 -0
  528. package/dist/types/iceberg.js.map +1 -0
  529. package/dist/types/ids.js +170 -0
  530. package/dist/types/ids.js.map +1 -0
  531. package/dist/types/index.js +41 -0
  532. package/dist/types/index.js.map +1 -0
  533. package/dist/types/introspect.js +54 -0
  534. package/dist/types/introspect.js.map +1 -0
  535. package/dist/types/observability.js +124 -0
  536. package/dist/types/observability.js.map +1 -0
  537. package/dist/types/sync-protocol.js +175 -0
  538. package/dist/types/sync-protocol.js.map +1 -0
  539. package/dist/types/vector.js +13 -0
  540. package/dist/types/vector.js.map +1 -0
  541. package/dist/workflows/ScheduleManager.js +473 -0
  542. package/dist/workflows/ScheduleManager.js.map +1 -0
  543. package/dist/workflows/StepDOBridge.js +149 -0
  544. package/dist/workflows/StepDOBridge.js.map +1 -0
  545. package/dist/workflows/StepResultStorage.js +232 -0
  546. package/dist/workflows/StepResultStorage.js.map +1 -0
  547. package/dist/workflows/WaitForEventManager.js +461 -0
  548. package/dist/workflows/WaitForEventManager.js.map +1 -0
  549. package/dist/workflows/analyzer.js +332 -0
  550. package/dist/workflows/analyzer.js.map +1 -0
  551. package/dist/workflows/compat/activity-router.js +484 -0
  552. package/dist/workflows/compat/activity-router.js.map +1 -0
  553. package/dist/workflows/compat/backends/cloudflare-workflows.js +431 -0
  554. package/dist/workflows/compat/backends/cloudflare-workflows.js.map +1 -0
  555. package/dist/workflows/compat/backends/index.js +14 -0
  556. package/dist/workflows/compat/backends/index.js.map +1 -0
  557. package/dist/workflows/compat/errors/index.js +375 -0
  558. package/dist/workflows/compat/errors/index.js.map +1 -0
  559. package/dist/workflows/compat/index.js +79 -0
  560. package/dist/workflows/compat/index.js.map +1 -0
  561. package/dist/workflows/compat/inngest/index.js +989 -0
  562. package/dist/workflows/compat/inngest/index.js.map +1 -0
  563. package/dist/workflows/compat/qstash/index.js +1263 -0
  564. package/dist/workflows/compat/qstash/index.js.map +1 -0
  565. package/dist/workflows/compat/temporal/activities.js +739 -0
  566. package/dist/workflows/compat/temporal/activities.js.map +1 -0
  567. package/dist/workflows/compat/temporal/child-workflows.js +154 -0
  568. package/dist/workflows/compat/temporal/child-workflows.js.map +1 -0
  569. package/dist/workflows/compat/temporal/client.js +381 -0
  570. package/dist/workflows/compat/temporal/client.js.map +1 -0
  571. package/dist/workflows/compat/temporal/context.js +309 -0
  572. package/dist/workflows/compat/temporal/context.js.map +1 -0
  573. package/dist/workflows/compat/temporal/determinism.js +216 -0
  574. package/dist/workflows/compat/temporal/determinism.js.map +1 -0
  575. package/dist/workflows/compat/temporal/errors.js +128 -0
  576. package/dist/workflows/compat/temporal/errors.js.map +1 -0
  577. package/dist/workflows/compat/temporal/index.js +2464 -0
  578. package/dist/workflows/compat/temporal/index.js.map +1 -0
  579. package/dist/workflows/compat/temporal/saga.js +504 -0
  580. package/dist/workflows/compat/temporal/saga.js.map +1 -0
  581. package/dist/workflows/compat/temporal/signals.js +364 -0
  582. package/dist/workflows/compat/temporal/signals.js.map +1 -0
  583. package/dist/workflows/compat/temporal/storage.js +271 -0
  584. package/dist/workflows/compat/temporal/storage.js.map +1 -0
  585. package/dist/workflows/compat/temporal/timers.js +347 -0
  586. package/dist/workflows/compat/temporal/timers.js.map +1 -0
  587. package/dist/workflows/compat/temporal/types.js +7 -0
  588. package/dist/workflows/compat/temporal/types.js.map +1 -0
  589. package/dist/workflows/compat/temporal/unified-primitives.js +339 -0
  590. package/dist/workflows/compat/temporal/unified-primitives.js.map +1 -0
  591. package/dist/workflows/compat/trigger/index.js +468 -0
  592. package/dist/workflows/compat/trigger/index.js.map +1 -0
  593. package/dist/workflows/compat/utils/index.js +69 -0
  594. package/dist/workflows/compat/utils/index.js.map +1 -0
  595. package/dist/workflows/context/correlation-capability.js +266 -0
  596. package/dist/workflows/context/correlation-capability.js.map +1 -0
  597. package/dist/workflows/context/correlation.js +484 -0
  598. package/dist/workflows/context/correlation.js.map +1 -0
  599. package/dist/workflows/context/experiment.js +289 -0
  600. package/dist/workflows/context/experiment.js.map +1 -0
  601. package/dist/workflows/context/flag.js +244 -0
  602. package/dist/workflows/context/flag.js.map +1 -0
  603. package/dist/workflows/context/foundation.js +648 -0
  604. package/dist/workflows/context/foundation.js.map +1 -0
  605. package/dist/workflows/context/human-base.js +106 -0
  606. package/dist/workflows/context/human-base.js.map +1 -0
  607. package/dist/workflows/context/human.js +368 -0
  608. package/dist/workflows/context/human.js.map +1 -0
  609. package/dist/workflows/context/measure.js +354 -0
  610. package/dist/workflows/context/measure.js.map +1 -0
  611. package/dist/workflows/context/rate-limit.js +358 -0
  612. package/dist/workflows/context/rate-limit.js.map +1 -0
  613. package/dist/workflows/context/user.js +117 -0
  614. package/dist/workflows/context/user.js.map +1 -0
  615. package/dist/workflows/context/vault.js +360 -0
  616. package/dist/workflows/context/vault.js.map +1 -0
  617. package/dist/workflows/data/entity-events/entity-events.js +489 -0
  618. package/dist/workflows/data/entity-events/entity-events.js.map +1 -0
  619. package/dist/workflows/data/experiment/index.js +599 -0
  620. package/dist/workflows/data/experiment/index.js.map +1 -0
  621. package/dist/workflows/data/goal/context.js +558 -0
  622. package/dist/workflows/data/goal/context.js.map +1 -0
  623. package/dist/workflows/data/goal/index.js +32 -0
  624. package/dist/workflows/data/goal/index.js.map +1 -0
  625. package/dist/workflows/data/measure/index.js +840 -0
  626. package/dist/workflows/data/measure/index.js.map +1 -0
  627. package/dist/workflows/data/stream/index.js +1149 -0
  628. package/dist/workflows/data/stream/index.js.map +1 -0
  629. package/dist/workflows/data/track/context.js +883 -0
  630. package/dist/workflows/data/track/context.js.map +1 -0
  631. package/dist/workflows/data/track/index.js +15 -0
  632. package/dist/workflows/data/track/index.js.map +1 -0
  633. package/dist/workflows/data/view/context.js +864 -0
  634. package/dist/workflows/data/view/context.js.map +1 -0
  635. package/dist/workflows/domain.js +93 -0
  636. package/dist/workflows/domain.js.map +1 -0
  637. package/dist/workflows/flag.js +176 -0
  638. package/dist/workflows/flag.js.map +1 -0
  639. package/dist/workflows/flags.js +217 -0
  640. package/dist/workflows/flags.js.map +1 -0
  641. package/dist/workflows/hash.js +209 -0
  642. package/dist/workflows/hash.js.map +1 -0
  643. package/dist/workflows/index.js +50 -0
  644. package/dist/workflows/index.js.map +1 -0
  645. package/dist/workflows/on.js +378 -0
  646. package/dist/workflows/on.js.map +1 -0
  647. package/dist/workflows/pipeline-promise.js +481 -0
  648. package/dist/workflows/pipeline-promise.js.map +1 -0
  649. package/dist/workflows/pipeline-types.js +20 -0
  650. package/dist/workflows/pipeline-types.js.map +1 -0
  651. package/dist/workflows/proxy.js +76 -0
  652. package/dist/workflows/proxy.js.map +1 -0
  653. package/dist/workflows/runtime.js +310 -0
  654. package/dist/workflows/runtime.js.map +1 -0
  655. package/dist/workflows/schedule-builder.js +327 -0
  656. package/dist/workflows/schedule-builder.js.map +1 -0
  657. package/dist/workflows/visibility/index.js +146 -0
  658. package/dist/workflows/visibility/index.js.map +1 -0
  659. package/dist/workflows/visibility/query-parser.js +150 -0
  660. package/dist/workflows/visibility/query-parser.js.map +1 -0
  661. package/dist/workflows/visibility/store.js +223 -0
  662. package/dist/workflows/visibility/store.js.map +1 -0
  663. package/dist/workflows/visibility/types.js +30 -0
  664. package/dist/workflows/visibility/types.js.map +1 -0
  665. package/dist/workflows/workflow.js +53 -0
  666. package/dist/workflows/workflow.js.map +1 -0
  667. package/package.json +294 -46
@@ -0,0 +1,209 @@
1
+ /**
2
+ * Deterministic hashing system for ai-workflows step identification
3
+ *
4
+ * Uses SHA-256 for content-addressable step IDs:
5
+ * - stepId = sha256(JSON.stringify({ path, contextHash, args? }))
6
+ *
7
+ * All functions are synchronous using a pure JS SHA-256 implementation
8
+ * compatible with Cloudflare Workers.
9
+ */
10
+ /**
11
+ * Pure JavaScript SHA-256 implementation
12
+ * Based on the specification from FIPS 180-4
13
+ */
14
+ function sha256(message) {
15
+ // SHA-256 constants - first 32 bits of fractional parts of cube roots of first 64 primes
16
+ const K = [
17
+ 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74,
18
+ 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d,
19
+ 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e,
20
+ 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
21
+ 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,
22
+ ];
23
+ // Initial hash values - first 32 bits of fractional parts of square roots of first 8 primes
24
+ let H = [0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19];
25
+ // Helper functions
26
+ const rotr = (x, n) => (x >>> n) | (x << (32 - n));
27
+ const ch = (x, y, z) => (x & y) ^ (~x & z);
28
+ const maj = (x, y, z) => (x & y) ^ (x & z) ^ (y & z);
29
+ const sigma0 = (x) => rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22);
30
+ const sigma1 = (x) => rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25);
31
+ const gamma0 = (x) => rotr(x, 7) ^ rotr(x, 18) ^ (x >>> 3);
32
+ const gamma1 = (x) => rotr(x, 17) ^ rotr(x, 19) ^ (x >>> 10);
33
+ // Convert string to UTF-8 bytes
34
+ const encoder = new TextEncoder();
35
+ const msgBytes = encoder.encode(message);
36
+ const msgLen = msgBytes.length;
37
+ const bitLen = msgLen * 8;
38
+ // Pre-processing: calculate padded message length
39
+ // Message needs: original bytes + 1 byte (0x80) + padding + 8 bytes (length)
40
+ // Total must be multiple of 64 bytes (512 bits)
41
+ const paddedLen = Math.ceil((msgLen + 9) / 64) * 64;
42
+ const padded = new Uint8Array(paddedLen);
43
+ // Copy message bytes
44
+ padded.set(msgBytes);
45
+ // Append bit '1' to message (as 0x80 byte)
46
+ padded[msgLen] = 0x80;
47
+ // Append length as 64-bit big-endian integer at the end
48
+ const view = new DataView(padded.buffer);
49
+ // High 32 bits (for messages up to 2^53 - 1 bits, which is huge)
50
+ view.setUint32(paddedLen - 8, Math.floor(bitLen / 0x100000000), false);
51
+ // Low 32 bits
52
+ view.setUint32(paddedLen - 4, bitLen >>> 0, false);
53
+ // Process each 512-bit (64-byte) block
54
+ for (let i = 0; i < paddedLen; i += 64) {
55
+ const W = new Array(64);
56
+ // Copy block into first 16 words (big-endian)
57
+ for (let t = 0; t < 16; t++) {
58
+ W[t] = view.getUint32(i + t * 4, false);
59
+ }
60
+ // Extend to 64 words
61
+ for (let t = 16; t < 64; t++) {
62
+ W[t] = (gamma1(W[t - 2]) + W[t - 7] + gamma0(W[t - 15]) + W[t - 16]) >>> 0;
63
+ }
64
+ // Initialize working variables
65
+ let [a, b, c, d, e, f, g, h] = H;
66
+ // Main compression loop
67
+ for (let t = 0; t < 64; t++) {
68
+ const T1 = (h + sigma1(e) + ch(e, f, g) + K[t] + W[t]) >>> 0;
69
+ const T2 = (sigma0(a) + maj(a, b, c)) >>> 0;
70
+ h = g;
71
+ g = f;
72
+ f = e;
73
+ e = (d + T1) >>> 0;
74
+ d = c;
75
+ c = b;
76
+ b = a;
77
+ a = (T1 + T2) >>> 0;
78
+ }
79
+ // Update hash values
80
+ H = [(H[0] + a) >>> 0, (H[1] + b) >>> 0, (H[2] + c) >>> 0, (H[3] + d) >>> 0, (H[4] + e) >>> 0, (H[5] + f) >>> 0, (H[6] + g) >>> 0, (H[7] + h) >>> 0];
81
+ }
82
+ // Convert to hex string
83
+ return H.map((n) => n.toString(16).padStart(8, '0')).join('');
84
+ }
85
+ /**
86
+ * Recursively sort object keys for deterministic serialization
87
+ * This ensures { a: 1, b: 2 } and { b: 2, a: 1 } produce the same hash
88
+ */
89
+ function sortKeys(value) {
90
+ if (value === null || value === undefined) {
91
+ return value;
92
+ }
93
+ if (Array.isArray(value)) {
94
+ return value.map(sortKeys);
95
+ }
96
+ if (typeof value === 'object') {
97
+ const sorted = {};
98
+ const keys = Object.keys(value).sort();
99
+ for (const key of keys) {
100
+ sorted[key] = sortKeys(value[key]);
101
+ }
102
+ return sorted;
103
+ }
104
+ return value;
105
+ }
106
+ /**
107
+ * Serialize a value for hashing, preserving type information
108
+ * This ensures "123" (string) and 123 (number) produce different hashes
109
+ */
110
+ function serialize(value) {
111
+ if (value === undefined) {
112
+ return '__undefined__';
113
+ }
114
+ // Use sorted keys for deterministic output
115
+ const sorted = sortKeys(value);
116
+ return JSON.stringify(sorted);
117
+ }
118
+ /**
119
+ * Hash a context object to produce a deterministic SHA-256 hash
120
+ *
121
+ * @param context - The context object to hash
122
+ * @returns A 64-character lowercase hex string (SHA-256)
123
+ *
124
+ * @example
125
+ * hashContext({ sku: 'ABC-123', quantity: 10 })
126
+ * // => "a3f2c91b..." (64 chars)
127
+ */
128
+ export function hashContext(context) {
129
+ const serialized = serialize(context);
130
+ return sha256(serialized);
131
+ }
132
+ /**
133
+ * Hash pipeline path and context to produce a step ID
134
+ *
135
+ * The step ID is computed as:
136
+ * sha256(JSON.stringify({ path, contextHash, argsHash? }))
137
+ *
138
+ * @param path - The pipeline path array (e.g., ["Inventory", "check"])
139
+ * @param contextHash - The hash of the execution context
140
+ * @param args - Optional arguments to include in the hash
141
+ * @returns A 64-character lowercase hex string (SHA-256)
142
+ *
143
+ * @example
144
+ * hashPipeline(['Inventory', 'check'], 'a3f2c91b')
145
+ * // => "5d41402a..." (64 chars)
146
+ */
147
+ export function hashPipeline(path, contextHash, args) {
148
+ const data = {
149
+ path,
150
+ contextHash,
151
+ };
152
+ if (args !== undefined) {
153
+ data.argsHash = hashArgs(args);
154
+ }
155
+ return sha256(JSON.stringify(data));
156
+ }
157
+ /**
158
+ * Hash arbitrary arguments for deterministic step identification
159
+ *
160
+ * Handles all types:
161
+ * - Primitives: string, number, boolean, null
162
+ * - Special: undefined (serialized as "__undefined__")
163
+ * - Complex: objects, arrays, nested structures
164
+ *
165
+ * Type information is preserved, so "123" and 123 produce different hashes.
166
+ *
167
+ * @param args - Any value to hash
168
+ * @returns A 64-character lowercase hex string (SHA-256)
169
+ *
170
+ * @example
171
+ * hashArgs({ quantity: 10 })
172
+ * // => "b3a8e0e1..." (64 chars)
173
+ *
174
+ * hashArgs([1, 2, 3])
175
+ * // => "cd2eb0c9..." (64 chars)
176
+ */
177
+ export function hashArgs(args) {
178
+ const serialized = serialize(args);
179
+ return sha256(serialized);
180
+ }
181
+ /**
182
+ * Hash a string to produce a deterministic non-negative integer.
183
+ * Useful for traffic allocation and bucket assignment in experiments.
184
+ *
185
+ * Uses SHA-256 internally and extracts the first 8 hex characters
186
+ * to produce a 32-bit unsigned integer.
187
+ *
188
+ * @param input - The string to hash
189
+ * @returns A non-negative integer (0 to 4294967295)
190
+ *
191
+ * @example
192
+ * hashToInt('user:123:experiment:test')
193
+ * // => 2847593815
194
+ */
195
+ export function hashToInt(input) {
196
+ const hash = sha256(input);
197
+ // Use first 8 hex chars (32 bits) for a consistent integer
198
+ const hexSubset = hash.slice(0, 8);
199
+ return parseInt(hexSubset, 16);
200
+ }
201
+ /**
202
+ * Alias for hashToInt - used for feature flag traffic allocation
203
+ * and experiment bucket assignment.
204
+ *
205
+ * @param input - The string to hash
206
+ * @returns A non-negative integer (0 to 4294967295)
207
+ */
208
+ export const deterministicHash = hashToInt;
209
+ //# sourceMappingURL=hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../workflows/hash.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * ai-workflows - Pipeline Proxy Foundation
3
+ *
4
+ * Event-driven domain DSL for durable execution with:
5
+ * - Pipeline promises for lazy execution
6
+ * - Property access on unresolved values
7
+ * - Magic map via record-replay
8
+ * - Automatic batching of independent operations
9
+ * - Event subscriptions and scheduling
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * import { on, every, Domain, when, waitFor, send } from 'dotdo/workflows'
14
+ *
15
+ * const CRM = Domain('CRM', { createAccount: () => ({}) })
16
+ *
17
+ * on.Customer.signup(customer => {
18
+ * CRM(customer).createAccount()
19
+ * })
20
+ *
21
+ * every.Monday.at9am(() => {
22
+ * Analytics('sales').weeklyMetrics()
23
+ * })
24
+ * ```
25
+ */
26
+ // Core pipeline promise system
27
+ export { createWorkflowProxy, createPipelinePromise, isPipelinePromise, collectExpressions, analyzeExpressions, analyzeExpressionsFull, findEmbeddedPromises, } from './pipeline-promise';
28
+ // Proxy system for $.Domain(ctx).method() syntax
29
+ export { createWorkflowProxy as createPipelineProxy, } from './proxy';
30
+ // Event-driven DSL
31
+ export { on, every, send, when, waitFor, Domain, getRegisteredHandlers, getHandlerRegistrations, getHandlerCount, getRegisteredEventKeys, clearHandlers, clearHandlersByContext, unregisterHandler, } from './on';
32
+ // Domain registry
33
+ export { Domain as BaseDomain, registerDomain, resolveHandler, clearDomainRegistry, } from './domain';
34
+ // Content-addressable hashing
35
+ export { hashContext, hashPipeline, hashArgs, hashToInt, } from './hash';
36
+ // Expression analyzer
37
+ export { analyzeExpressionsFull as analyzeExpressionGraph, findEmbeddedPromises as findDependencies, } from './analyzer';
38
+ // Workflow definition helper
39
+ export { Workflow, } from './workflow';
40
+ // Feature flags for conditional execution
41
+ export { createFlagProxy, createFlagStore, } from './flag';
42
+ // Feature flag context API ($.flag, $.flags)
43
+ export { createMockContext as createFlagContext, evaluateFlag as evaluateFlagContext, } from './context/flag';
44
+ // Workflow Runtime (Epic 4)
45
+ export { createWorkflowRuntime, createTestRuntime, DurableWorkflowRuntime, InMemoryStepStorage, HandlerNotFoundError, WorkflowStepError, } from './runtime';
46
+ // Rate limit context API ($.rateLimit, $.rateLimits)
47
+ export { createMockContext as createRateLimitContext, parseWindow as parseRateLimitWindow, } from './context/rate-limit';
48
+ // Foundation Sprint context API ($.foundation())
49
+ export { createMockContext as createFoundationContext, } from './context/foundation';
50
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../workflows/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,+BAA+B;AAC/B,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,GAOrB,MAAM,oBAAoB,CAAA;AAE3B,iDAAiD;AACjD,OAAO,EACL,mBAAmB,IAAI,mBAAmB,GAK3C,MAAM,SAAS,CAAA;AAEhB,mBAAmB;AACnB,OAAO,EACL,EAAE,EACF,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,MAAM,EACN,qBAAqB,EACrB,uBAAuB,EACvB,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,sBAAsB,EACtB,iBAAiB,GAKlB,MAAM,MAAM,CAAA;AAEb,kBAAkB;AAClB,OAAO,EACL,MAAM,IAAI,UAAU,EACpB,cAAc,EACd,cAAc,EACd,mBAAmB,GAGpB,MAAM,UAAU,CAAA;AAEjB,8BAA8B;AAC9B,OAAO,EACL,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,SAAS,GACV,MAAM,QAAQ,CAAA;AAEf,sBAAsB;AACtB,OAAO,EACL,sBAAsB,IAAI,sBAAsB,EAChD,oBAAoB,IAAI,gBAAgB,GACzC,MAAM,YAAY,CAAA;AAEnB,6BAA6B;AAC7B,OAAO,EACL,QAAQ,GAGT,MAAM,YAAY,CAAA;AAEnB,0CAA0C;AAC1C,OAAO,EACL,eAAe,EACf,eAAe,GAOhB,MAAM,QAAQ,CAAA;AAEf,6CAA6C;AAC7C,OAAO,EACL,iBAAiB,IAAI,iBAAiB,EACtC,YAAY,IAAI,mBAAmB,GAOpC,MAAM,gBAAgB,CAAA;AAEvB,4BAA4B;AAC5B,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,GAMlB,MAAM,WAAW,CAAA;AAElB,qDAAqD;AACrD,OAAO,EACL,iBAAiB,IAAI,sBAAsB,EAC3C,WAAW,IAAI,oBAAoB,GAQpC,MAAM,sBAAsB,CAAA;AAE7B,iDAAiD;AACjD,OAAO,EACL,iBAAiB,IAAI,uBAAuB,GAmB7C,MAAM,sBAAsB,CAAA"}
@@ -0,0 +1,378 @@
1
+ /**
2
+ * Event-Driven Workflow DSL
3
+ *
4
+ * on.Customer.signup(customer => { ... })
5
+ * every.Monday.at9am(() => { ... })
6
+ * send.Order.shipped(order)
7
+ */
8
+ import { createPipelinePromise, isPipelinePromise } from './pipeline-promise';
9
+ // Registry for event handlers with metadata
10
+ const eventHandlers = new Map();
11
+ // Index for fast context-based cleanup
12
+ const contextIndex = new Map();
13
+ /**
14
+ * Get all registered handlers for an event key.
15
+ * If context is provided, only returns handlers registered with that context.
16
+ *
17
+ * @param eventKey - The event key (e.g., "Customer.signup")
18
+ * @param context - Optional context to filter handlers by (e.g., DO namespace)
19
+ * @returns Array of handler functions
20
+ */
21
+ export function getRegisteredHandlers(eventKey, context) {
22
+ const registrations = eventHandlers.get(eventKey) || [];
23
+ if (context !== undefined) {
24
+ return registrations.filter(r => r.context === context).map(r => r.handler);
25
+ }
26
+ return registrations.map(r => r.handler);
27
+ }
28
+ /**
29
+ * Get handler registrations with metadata
30
+ */
31
+ export function getHandlerRegistrations(eventKey) {
32
+ return eventHandlers.get(eventKey) || [];
33
+ }
34
+ /**
35
+ * Get total count of registered handlers across all events.
36
+ * If context is provided, only counts handlers registered with that context.
37
+ *
38
+ * @param context - Optional context to filter handlers by (e.g., DO namespace)
39
+ * @returns Total handler count
40
+ */
41
+ export function getHandlerCount(context) {
42
+ let count = 0;
43
+ for (const registrations of eventHandlers.values()) {
44
+ if (context !== undefined) {
45
+ count += registrations.filter(r => r.context === context).length;
46
+ }
47
+ else {
48
+ count += registrations.length;
49
+ }
50
+ }
51
+ return count;
52
+ }
53
+ /**
54
+ * Get all event keys that have registered handlers
55
+ */
56
+ export function getRegisteredEventKeys() {
57
+ return Array.from(eventHandlers.keys());
58
+ }
59
+ /**
60
+ * Clear all handlers (for testing or full reset)
61
+ */
62
+ export function clearHandlers() {
63
+ eventHandlers.clear();
64
+ contextIndex.clear();
65
+ }
66
+ /**
67
+ * Clear all handlers registered under a specific context
68
+ * Use this when a Durable Object is being destroyed
69
+ *
70
+ * @param context - The context identifier (e.g., DO namespace)
71
+ * @returns Number of handlers removed
72
+ */
73
+ export function clearHandlersByContext(context) {
74
+ const eventKeys = contextIndex.get(context);
75
+ if (!eventKeys)
76
+ return 0;
77
+ let removedCount = 0;
78
+ for (const eventKey of eventKeys) {
79
+ const registrations = eventHandlers.get(eventKey);
80
+ if (!registrations)
81
+ continue;
82
+ const remaining = registrations.filter(r => r.context !== context);
83
+ const removed = registrations.length - remaining.length;
84
+ removedCount += removed;
85
+ if (remaining.length === 0) {
86
+ eventHandlers.delete(eventKey);
87
+ }
88
+ else {
89
+ eventHandlers.set(eventKey, remaining);
90
+ }
91
+ }
92
+ contextIndex.delete(context);
93
+ return removedCount;
94
+ }
95
+ /**
96
+ * Unregister a specific handler by event key and handler reference
97
+ *
98
+ * @param eventKey - The event key (e.g., "Customer.signup")
99
+ * @param handler - The handler function to remove
100
+ * @returns true if handler was found and removed
101
+ */
102
+ export function unregisterHandler(eventKey, handler) {
103
+ const registrations = eventHandlers.get(eventKey);
104
+ if (!registrations)
105
+ return false;
106
+ const index = registrations.findIndex(r => r.handler === handler);
107
+ if (index === -1)
108
+ return false;
109
+ const [removed] = registrations.splice(index, 1);
110
+ // Clean up context index
111
+ if (removed?.context) {
112
+ const contextEvents = contextIndex.get(removed.context);
113
+ if (contextEvents) {
114
+ // Only remove from index if no more handlers for this event/context combo
115
+ const hasMoreInContext = registrations.some(r => r.context === removed.context);
116
+ if (!hasMoreInContext) {
117
+ contextEvents.delete(eventKey);
118
+ if (contextEvents.size === 0) {
119
+ contextIndex.delete(removed.context);
120
+ }
121
+ }
122
+ }
123
+ }
124
+ // Clean up empty event key
125
+ if (registrations.length === 0) {
126
+ eventHandlers.delete(eventKey);
127
+ }
128
+ return true;
129
+ }
130
+ /**
131
+ * Register a handler and return an unsubscribe function
132
+ *
133
+ * @param eventKey - The event key (e.g., "Customer.signup" or "schedule:0 9 * * 1")
134
+ * @param handler - The handler function
135
+ * @param context - Optional context for grouped cleanup (e.g., DO namespace)
136
+ * @returns Unsubscribe function that removes this handler
137
+ */
138
+ function registerHandler(eventKey, handler, context) {
139
+ const registrations = eventHandlers.get(eventKey) || [];
140
+ const registration = {
141
+ handler,
142
+ eventKey,
143
+ context,
144
+ registeredAt: Date.now(),
145
+ };
146
+ registrations.push(registration);
147
+ eventHandlers.set(eventKey, registrations);
148
+ // Update context index for fast cleanup
149
+ if (context) {
150
+ if (!contextIndex.has(context)) {
151
+ contextIndex.set(context, new Set());
152
+ }
153
+ contextIndex.get(context).add(eventKey);
154
+ }
155
+ // Return unsubscribe function
156
+ return () => unregisterHandler(eventKey, handler);
157
+ }
158
+ export const on = new Proxy({}, {
159
+ get(_, entity) {
160
+ return new Proxy({}, {
161
+ get(_, event) {
162
+ return (handler, options) => {
163
+ return registerHandler(`${entity}.${event}`, handler, options?.context);
164
+ };
165
+ },
166
+ });
167
+ },
168
+ });
169
+ // ============================================================================
170
+ // every.Monday.at9am(handler) - Scheduled execution
171
+ // ============================================================================
172
+ const DAYS = {
173
+ Sunday: '0',
174
+ Monday: '1',
175
+ Tuesday: '2',
176
+ Wednesday: '3',
177
+ Thursday: '4',
178
+ Friday: '5',
179
+ Saturday: '6',
180
+ day: '*',
181
+ daily: '*',
182
+ };
183
+ const TIMES = {
184
+ at12am: '0 0',
185
+ at1am: '0 1',
186
+ at2am: '0 2',
187
+ at3am: '0 3',
188
+ at4am: '0 4',
189
+ at5am: '0 5',
190
+ at6am: '0 6',
191
+ at7am: '0 7',
192
+ at8am: '0 8',
193
+ at9am: '0 9',
194
+ at10am: '0 10',
195
+ at11am: '0 11',
196
+ at12pm: '0 12',
197
+ at1pm: '0 13',
198
+ at2pm: '0 14',
199
+ at3pm: '0 15',
200
+ at4pm: '0 16',
201
+ at5pm: '0 17',
202
+ at6pm: '0 18',
203
+ at7pm: '0 19',
204
+ at8pm: '0 20',
205
+ at9pm: '0 21',
206
+ at10pm: '0 22',
207
+ at11pm: '0 23',
208
+ };
209
+ function toCron(day, time) {
210
+ const dayNum = DAYS[day] || '*';
211
+ if (!time) {
212
+ // every.hour, every.minute
213
+ if (day === 'hour')
214
+ return '0 * * * *';
215
+ if (day === 'minute')
216
+ return '* * * * *';
217
+ return `0 0 * * ${dayNum}`;
218
+ }
219
+ const [minute, hour] = (TIMES[time] || '0 0').split(' ');
220
+ return `${minute} ${hour} * * ${dayNum}`;
221
+ }
222
+ function parseNaturalSchedule(schedule) {
223
+ // "Monday at 9am" -> "0 9 * * 1"
224
+ // "daily at 6am" -> "0 6 * * *"
225
+ // "hourly" -> "0 * * * *"
226
+ const lower = schedule.toLowerCase();
227
+ if (lower === 'hourly')
228
+ return '0 * * * *';
229
+ const dayMatch = lower.match(/^(monday|tuesday|wednesday|thursday|friday|saturday|sunday|daily?)/);
230
+ const timeMatch = lower.match(/at\s*(\d{1,2})(?::(\d{2}))?\s*(am|pm)?/i);
231
+ let dayNum = '*';
232
+ if (dayMatch) {
233
+ const dayName = dayMatch[1].charAt(0).toUpperCase() + dayMatch[1].slice(1);
234
+ dayNum = DAYS[dayName] || DAYS[dayMatch[1]] || '*';
235
+ }
236
+ let hour = '0';
237
+ let minute = '0';
238
+ if (timeMatch) {
239
+ hour = timeMatch[1];
240
+ minute = timeMatch[2] || '0';
241
+ if (timeMatch[3]?.toLowerCase() === 'pm' && parseInt(hour) < 12) {
242
+ hour = String(parseInt(hour) + 12);
243
+ }
244
+ if (timeMatch[3]?.toLowerCase() === 'am' && hour === '12') {
245
+ hour = '0';
246
+ }
247
+ }
248
+ return `${minute} ${hour} * * ${dayNum}`;
249
+ }
250
+ // Create the every proxy with both function and property access
251
+ const everyHandler = {
252
+ get(_target, day) {
253
+ if (day === 'hour' || day === 'minute') {
254
+ // every.hour(handler) - direct call
255
+ return (handler, options) => {
256
+ const cron = toCron(day);
257
+ return registerHandler(`schedule:${cron}`, handler, options?.context);
258
+ };
259
+ }
260
+ // every.Monday.at9am(handler)
261
+ return new Proxy((() => { }), {
262
+ get(_timeTarget, time) {
263
+ return (handler, options) => {
264
+ const cron = toCron(day, time);
265
+ return registerHandler(`schedule:${cron}`, handler, options?.context);
266
+ };
267
+ },
268
+ apply(_timeTarget, _thisArg, args) {
269
+ // every.day(handler) without time
270
+ const [handler, options] = args;
271
+ const cron = toCron(day);
272
+ return registerHandler(`schedule:${cron}`, handler, options?.context);
273
+ },
274
+ });
275
+ },
276
+ apply(_target, _thisArg, args) {
277
+ // every('Monday at 9am', handler)
278
+ const [schedule, handler, options] = args;
279
+ const cron = parseNaturalSchedule(schedule);
280
+ return registerHandler(`schedule:${cron}`, handler, options?.context);
281
+ },
282
+ };
283
+ export const every = new Proxy((() => { }), everyHandler);
284
+ export const send = new Proxy({}, {
285
+ get(_, entity) {
286
+ return new Proxy({}, {
287
+ get(_, event) {
288
+ return (payload) => {
289
+ const expr = {
290
+ type: 'send',
291
+ entity,
292
+ event,
293
+ payload,
294
+ };
295
+ return createPipelinePromise(expr, {});
296
+ };
297
+ },
298
+ });
299
+ },
300
+ });
301
+ // ============================================================================
302
+ // when(condition, { then, else }) - Declarative conditional
303
+ // ============================================================================
304
+ export function when(condition, branches) {
305
+ const conditionExpr = isPipelinePromise(condition)
306
+ ? condition.__expr
307
+ : { type: 'literal', value: condition };
308
+ const thenResult = branches.then();
309
+ const thenExpr = isPipelinePromise(thenResult)
310
+ ? thenResult.__expr
311
+ : { type: 'literal', value: thenResult };
312
+ let elseExpr = null;
313
+ if (branches.else) {
314
+ const elseResult = branches.else();
315
+ elseExpr = isPipelinePromise(elseResult) ? elseResult.__expr : { type: 'literal', value: elseResult };
316
+ }
317
+ const expr = {
318
+ type: 'conditional',
319
+ condition: conditionExpr,
320
+ thenBranch: thenExpr,
321
+ elseBranch: elseExpr,
322
+ };
323
+ return createPipelinePromise(expr, {});
324
+ }
325
+ // ============================================================================
326
+ // waitFor(eventName, options) - Human-in-the-loop
327
+ // ============================================================================
328
+ export function waitFor(eventName, options = {}) {
329
+ const expr = {
330
+ type: 'waitFor',
331
+ eventName,
332
+ options,
333
+ };
334
+ return createPipelinePromise(expr, {});
335
+ }
336
+ // ============================================================================
337
+ // Domain(name, handlers) - Domain factory that returns callable
338
+ // ============================================================================
339
+ import { Domain as BaseDomain, registerDomain as baseRegisterDomain } from './domain';
340
+ /**
341
+ * Creates a domain that can be called directly without $ prefix.
342
+ *
343
+ * @example
344
+ * const CRM = Domain('CRM', {
345
+ * createAccount: (customer) => ({ id: '123' })
346
+ * })
347
+ *
348
+ * // Use directly - returns PipelinePromise
349
+ * const result = CRM(customer).createAccount()
350
+ */
351
+ export function Domain(name, handlers) {
352
+ // Register with base domain system
353
+ // Cast to HandlerMap since we're accepting more flexible function types
354
+ const domainObj = BaseDomain(name, handlers);
355
+ baseRegisterDomain(domainObj);
356
+ // Create callable that returns a proxy for method access
357
+ const callable = ((context) => {
358
+ return new Proxy({}, {
359
+ get(_, method) {
360
+ // Return function that creates PipelinePromise
361
+ return (...args) => {
362
+ const expr = {
363
+ type: 'call',
364
+ domain: name,
365
+ method: [method],
366
+ context,
367
+ args,
368
+ };
369
+ return createPipelinePromise(expr, {});
370
+ };
371
+ },
372
+ });
373
+ });
374
+ callable.__domainName = name;
375
+ callable.__handlers = handlers;
376
+ return callable;
377
+ }
378
+ //# sourceMappingURL=on.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"on.js","sourceRoot":"","sources":["../../workflows/on.ts"],"names":[],"mappings":"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"}