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,364 @@
1
+ /**
2
+ * Signals, Queries, and Updates Module
3
+ *
4
+ * Definitions and handlers for workflow communication primitives.
5
+ */
6
+ import { getCurrentWorkflow, getCurrentPatchState, setCurrentPatchState, } from './context';
7
+ // ============================================================================
8
+ // SIGNAL, QUERY, UPDATE DEFINITIONS
9
+ // ============================================================================
10
+ /**
11
+ * Define a signal
12
+ */
13
+ export function defineSignal(name) {
14
+ return { name, type: 'signal' };
15
+ }
16
+ /**
17
+ * Define a query
18
+ */
19
+ export function defineQuery(name) {
20
+ return { name, type: 'query' };
21
+ }
22
+ /**
23
+ * Define an update
24
+ */
25
+ export function defineUpdate(name) {
26
+ return { name, type: 'update' };
27
+ }
28
+ export function setHandler(definition, handler) {
29
+ const workflow = getCurrentWorkflow();
30
+ if (!workflow) {
31
+ throw new Error('setHandler can only be called within a workflow');
32
+ }
33
+ if (definition.type === 'signal') {
34
+ workflow.signalHandlers.set(definition.name, handler);
35
+ }
36
+ else if (definition.type === 'query') {
37
+ workflow.queryHandlers.set(definition.name, handler);
38
+ }
39
+ else {
40
+ workflow.updateHandlers.set(definition.name, handler);
41
+ }
42
+ }
43
+ // ============================================================================
44
+ // WORKFLOW INFO
45
+ // ============================================================================
46
+ /**
47
+ * Get current workflow info
48
+ */
49
+ export function workflowInfo() {
50
+ const workflow = getCurrentWorkflow();
51
+ if (!workflow) {
52
+ throw new Error('workflowInfo can only be called within a workflow');
53
+ }
54
+ return {
55
+ workflowId: workflow.workflowId,
56
+ runId: workflow.runId,
57
+ workflowType: workflow.workflowType,
58
+ taskQueue: workflow.taskQueue,
59
+ namespace: workflow.namespace,
60
+ firstExecutionRunId: workflow.runId,
61
+ attempt: workflow.attempt,
62
+ historyLength: workflow.historyLength,
63
+ startTime: workflow.startTime,
64
+ runStartTime: workflow.runStartTime,
65
+ memo: workflow.memo,
66
+ searchAttributes: workflow.searchAttributes,
67
+ parent: workflow.parent,
68
+ };
69
+ }
70
+ // ============================================================================
71
+ // SEARCH ATTRIBUTES
72
+ // ============================================================================
73
+ /**
74
+ * Set search attributes (replaces all)
75
+ */
76
+ export function setSearchAttributes(attrs) {
77
+ const workflow = getCurrentWorkflow();
78
+ if (!workflow) {
79
+ throw new Error('setSearchAttributes can only be called within a workflow');
80
+ }
81
+ workflow.searchAttributes = { ...attrs };
82
+ workflow.historyLength++;
83
+ }
84
+ /**
85
+ * Upsert (merge) search attributes
86
+ */
87
+ export function upsertSearchAttributes(attrs) {
88
+ const workflow = getCurrentWorkflow();
89
+ if (!workflow) {
90
+ throw new Error('upsertSearchAttributes can only be called within a workflow');
91
+ }
92
+ workflow.searchAttributes = {
93
+ ...workflow.searchAttributes,
94
+ ...attrs,
95
+ };
96
+ workflow.historyLength++;
97
+ }
98
+ // ============================================================================
99
+ // VERSIONING / PATCHING
100
+ // ============================================================================
101
+ /**
102
+ * Check if a patch should be applied
103
+ * For new executions, this always returns true (take the new path)
104
+ * For replays of old executions, this returns false to maintain compatibility
105
+ */
106
+ export function patched(patchId) {
107
+ let patchState = getCurrentPatchState();
108
+ if (!patchState) {
109
+ patchState = {
110
+ appliedPatches: new Set(),
111
+ deprecatedPatches: new Set(),
112
+ };
113
+ setCurrentPatchState(patchState);
114
+ }
115
+ // For new executions, always apply patches
116
+ // In a full implementation, this would check workflow history
117
+ patchState.appliedPatches.add(patchId);
118
+ const workflow = getCurrentWorkflow();
119
+ if (workflow) {
120
+ workflow.historyLength++;
121
+ }
122
+ return true;
123
+ }
124
+ /**
125
+ * Deprecate an old patch (removes it from consideration in new workflow code)
126
+ */
127
+ export function deprecatePatch(patchId) {
128
+ let patchState = getCurrentPatchState();
129
+ if (!patchState) {
130
+ patchState = {
131
+ appliedPatches: new Set(),
132
+ deprecatedPatches: new Set(),
133
+ };
134
+ setCurrentPatchState(patchState);
135
+ }
136
+ patchState.deprecatedPatches.add(patchId);
137
+ }
138
+ const uuidCounters = new WeakMap();
139
+ const randomCounters = new WeakMap();
140
+ const nowCounters = new WeakMap();
141
+ /**
142
+ * Generate deterministic UUID (for replay)
143
+ *
144
+ * This function is deterministic within a workflow execution:
145
+ * - First execution: generates a new UUID and stores it
146
+ * - Replay: returns the same UUID that was generated before
147
+ *
148
+ * IMPORTANT: Must be called within a workflow context.
149
+ * The step ID is based on call order within the workflow, so
150
+ * uuid4() calls must happen in the same order on replay.
151
+ *
152
+ * @returns A UUID v4 string that is deterministic on replay
153
+ * @throws Error if called outside a workflow context
154
+ *
155
+ * @example
156
+ * ```typescript
157
+ * import { uuid4 } from '@dotdo/temporal'
158
+ *
159
+ * export async function orderWorkflow() {
160
+ * // These IDs will be the same on replay
161
+ * const orderId = uuid4()
162
+ * const transactionId = uuid4()
163
+ * return { orderId, transactionId }
164
+ * }
165
+ * ```
166
+ */
167
+ export function uuid4() {
168
+ const workflow = getCurrentWorkflow();
169
+ if (!workflow) {
170
+ // Outside workflow context - fall back to non-deterministic
171
+ // This allows usage in tests or non-workflow code
172
+ return crypto.randomUUID();
173
+ }
174
+ // Get and increment the counter for this workflow
175
+ const counter = uuidCounters.get(workflow) ?? 0;
176
+ uuidCounters.set(workflow, counter + 1);
177
+ // Create deterministic step ID based on call order
178
+ const stepId = `uuid4:${counter}`;
179
+ // Check for existing result (replay case)
180
+ if (workflow.stepResults.has(stepId)) {
181
+ return workflow.stepResults.get(stepId);
182
+ }
183
+ // Generate new UUID and store for replay
184
+ const id = crypto.randomUUID();
185
+ workflow.stepResults.set(stepId, id);
186
+ workflow.historyLength++;
187
+ return id;
188
+ }
189
+ /**
190
+ * Get deterministic random number (for replay)
191
+ *
192
+ * This function is deterministic within a workflow execution:
193
+ * - First execution: generates a new random number and stores it
194
+ * - Replay: returns the same random number that was generated before
195
+ *
196
+ * IMPORTANT: Must be called within a workflow context.
197
+ * The step ID is based on call order within the workflow, so
198
+ * random() calls must happen in the same order on replay.
199
+ *
200
+ * @returns A number between 0 (inclusive) and 1 (exclusive)
201
+ * @throws Error if called outside a workflow context
202
+ *
203
+ * @example
204
+ * ```typescript
205
+ * import { random } from '@dotdo/temporal'
206
+ *
207
+ * export async function retryWorkflow() {
208
+ * // This decision will be the same on replay
209
+ * const shouldRetry = random() < 0.5
210
+ * return { shouldRetry }
211
+ * }
212
+ * ```
213
+ */
214
+ export function random() {
215
+ const workflow = getCurrentWorkflow();
216
+ if (!workflow) {
217
+ // Outside workflow context - fall back to non-deterministic
218
+ // This allows usage in tests or non-workflow code
219
+ return Math.random();
220
+ }
221
+ // Get and increment the counter for this workflow
222
+ const counter = randomCounters.get(workflow) ?? 0;
223
+ randomCounters.set(workflow, counter + 1);
224
+ // Create deterministic step ID based on call order
225
+ const stepId = `random:${counter}`;
226
+ // Check for existing result (replay case)
227
+ if (workflow.stepResults.has(stepId)) {
228
+ return workflow.stepResults.get(stepId);
229
+ }
230
+ // Generate new random number and store for replay
231
+ const num = Math.random();
232
+ workflow.stepResults.set(stepId, num);
233
+ workflow.historyLength++;
234
+ return num;
235
+ }
236
+ /**
237
+ * Get deterministic current time (for replay).
238
+ *
239
+ * This function returns a deterministic timestamp based on workflow start time
240
+ * plus an offset derived from the step count. On replay, it returns the same
241
+ * timestamp that was recorded during the original execution.
242
+ *
243
+ * Use this instead of `Date.now()` or `new Date()` in workflow code.
244
+ *
245
+ * @returns A Date object representing the current workflow time
246
+ * @throws Error if called outside a workflow context
247
+ *
248
+ * @example
249
+ * ```typescript
250
+ * import { workflowNow } from '@dotdo/temporal'
251
+ *
252
+ * export async function orderWorkflow() {
253
+ * // Use workflowNow() instead of new Date() or Date.now()
254
+ * const orderTime = workflowNow()
255
+ * const expiresAt = new Date(workflowNow().getTime() + 24 * 60 * 60 * 1000)
256
+ *
257
+ * return { orderTime, expiresAt }
258
+ * }
259
+ * ```
260
+ */
261
+ export function workflowNow() {
262
+ const workflow = getCurrentWorkflow();
263
+ if (!workflow) {
264
+ // Outside workflow context - fall back to real time
265
+ // This allows usage in tests or non-workflow code
266
+ return new Date();
267
+ }
268
+ // Get and increment the counter for this workflow
269
+ const counter = nowCounters.get(workflow) ?? 0;
270
+ nowCounters.set(workflow, counter + 1);
271
+ // Create deterministic step ID based on call order
272
+ const stepId = `workflowNow:${counter}`;
273
+ // Check for existing result (replay case)
274
+ if (workflow.stepResults.has(stepId)) {
275
+ return new Date(workflow.stepResults.get(stepId));
276
+ }
277
+ // Calculate deterministic time:
278
+ // Start time + (counter * small increment to show progression)
279
+ // This ensures time appears to progress while remaining deterministic
280
+ // NOTE: We use the workflowNow counter (not historyLength) because historyLength
281
+ // can vary between replays due to conditional paths or optimizations
282
+ const baseTime = workflow.startTime.getTime();
283
+ const stepIncrement = counter + 1; // 1ms per call for minimal progression (counter is 0-indexed)
284
+ const deterministicTime = baseTime + stepIncrement;
285
+ // Store for replay
286
+ workflow.stepResults.set(stepId, deterministicTime);
287
+ workflow.historyLength++;
288
+ return new Date(deterministicTime);
289
+ }
290
+ export class ContinueAsNew extends Error {
291
+ args;
292
+ options;
293
+ constructor(args, options = {}) {
294
+ super('ContinueAsNew');
295
+ this.name = 'ContinueAsNew';
296
+ this.args = args;
297
+ this.options = options;
298
+ }
299
+ }
300
+ /**
301
+ * Continue as new with fresh history
302
+ */
303
+ export function continueAsNew(...args) {
304
+ throw new ContinueAsNew(args);
305
+ }
306
+ /**
307
+ * Make continue-as-new function for a specific workflow
308
+ */
309
+ export function makeContinueAsNewFunc(_workflowType, options) {
310
+ return (...args) => {
311
+ throw new ContinueAsNew(args, options);
312
+ };
313
+ }
314
+ // ============================================================================
315
+ // CANCELLATION
316
+ // ============================================================================
317
+ import { WaitCancelledError } from '../../WaitForEventManager';
318
+ export class CancellationScope {
319
+ children = [];
320
+ cleanupFns = [];
321
+ _isCancelled = false;
322
+ get isCancelled() {
323
+ return this._isCancelled;
324
+ }
325
+ cancel() {
326
+ this._isCancelled = true;
327
+ for (const child of this.children) {
328
+ child.cancel();
329
+ }
330
+ }
331
+ /**
332
+ * Run a function in this cancellation scope
333
+ */
334
+ static async run(fn) {
335
+ const scope = new CancellationScope();
336
+ try {
337
+ return await fn();
338
+ }
339
+ finally {
340
+ for (const cleanup of scope.cleanupFns) {
341
+ await cleanup();
342
+ }
343
+ }
344
+ }
345
+ /**
346
+ * Create a non-cancellable scope
347
+ */
348
+ static nonCancellable(fn) {
349
+ return fn();
350
+ }
351
+ /**
352
+ * Create a cancellable scope with timeout
353
+ */
354
+ static async cancellable(fn) {
355
+ return CancellationScope.run(fn);
356
+ }
357
+ }
358
+ /**
359
+ * Check if cancelled
360
+ */
361
+ export function isCancellation(error) {
362
+ return error instanceof WaitCancelledError;
363
+ }
364
+ //# sourceMappingURL=signals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signals.js","sourceRoot":"","sources":["../../../../workflows/compat/temporal/signals.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,271 @@
1
+ /**
2
+ * Storage Strategy Module
3
+ *
4
+ * Unified abstraction for step execution and durability.
5
+ * Allows the Temporal compat layer to use different backends:
6
+ * - CFWorkflowsStrategy: Uses native step.do() and step.sleep() when WorkflowStep is available
7
+ * - InMemoryStrategy: Uses in-memory Maps with setTimeout for testing/fallback
8
+ */
9
+ import { InMemoryStepStorage } from '../../runtime';
10
+ import { ensureError } from '../utils';
11
+ // ============================================================================
12
+ // CFWORKFLOWS STORAGE STRATEGY
13
+ // ============================================================================
14
+ /**
15
+ * CFWorkflowsStorageStrategy uses Cloudflare Workflows native APIs for durable execution.
16
+ *
17
+ * Benefits:
18
+ * - sleep() is FREE - you don't pay for wall-clock time
19
+ * - step.do() is DURABLE - survives worker restarts, automatic retries
20
+ * - Replay is automatic - completed steps return cached results
21
+ *
22
+ * This strategy is automatically selected when a WorkflowStep is available
23
+ * in the current workflow context.
24
+ */
25
+ export class CFWorkflowsStorageStrategy {
26
+ step;
27
+ stepResults = new Map();
28
+ constructor(step) {
29
+ this.step = step;
30
+ }
31
+ async executeStep(name, fn, options) {
32
+ // Check for cached result (replay)
33
+ const cached = this.stepResults.get(name);
34
+ if (cached) {
35
+ if (cached.status === 'error') {
36
+ throw cached.error;
37
+ }
38
+ return cached.value;
39
+ }
40
+ // Build step.do() options from execution options
41
+ const stepOptions = this.buildStepDoOptions(options);
42
+ try {
43
+ // Execute via step.do() for durability
44
+ const result = stepOptions
45
+ ? await this.step.do(name, stepOptions, async () => fn())
46
+ : await this.step.do(name, async () => fn());
47
+ // Cache the result with discriminated union
48
+ this.stepResults.set(name, { status: 'success', value: result });
49
+ return result;
50
+ }
51
+ catch (error) {
52
+ // Cache errors for deterministic replay
53
+ const err = ensureError(error);
54
+ this.stepResults.set(name, { status: 'error', error: err });
55
+ throw err;
56
+ }
57
+ }
58
+ async sleep(name, _durationMs, durationStr) {
59
+ // Check for cached completion (replay)
60
+ if (this.stepResults.has(name)) {
61
+ return;
62
+ }
63
+ // Use CF Workflows native step.sleep() - FREE, doesn't consume wall-clock time
64
+ await this.step.sleep(name, durationStr);
65
+ // Cache completion
66
+ this.stepResults.set(name, { status: 'success', value: true });
67
+ }
68
+ async isStepCompleted(name) {
69
+ return this.stepResults.has(name);
70
+ }
71
+ async getStepResult(name) {
72
+ const cached = this.stepResults.get(name);
73
+ if (!cached)
74
+ return undefined;
75
+ if (cached.status === 'error') {
76
+ throw cached.error;
77
+ }
78
+ return cached.value;
79
+ }
80
+ async setStepResult(name, result) {
81
+ if (result instanceof Error) {
82
+ this.stepResults.set(name, { status: 'error', error: result });
83
+ }
84
+ else {
85
+ this.stepResults.set(name, { status: 'success', value: result });
86
+ }
87
+ }
88
+ buildStepDoOptions(options) {
89
+ if (!options)
90
+ return undefined;
91
+ const stepOptions = {};
92
+ if (options.retries) {
93
+ stepOptions.retries = options.retries;
94
+ }
95
+ if (options.timeout) {
96
+ stepOptions.timeout = options.timeout;
97
+ }
98
+ // Only return if we have something to configure
99
+ if (stepOptions.retries || stepOptions.timeout) {
100
+ return stepOptions;
101
+ }
102
+ return undefined;
103
+ }
104
+ }
105
+ // ============================================================================
106
+ // INMEMORY STORAGE STRATEGY
107
+ // ============================================================================
108
+ /**
109
+ * InMemoryStorageStrategy provides fallback behavior when no WorkflowStep is available.
110
+ *
111
+ * This is used in:
112
+ * - Testing environments
113
+ * - Development without CF Workflows runtime
114
+ * - Direct workflow execution outside of CF Workflows
115
+ *
116
+ * Cost: sleep() uses setTimeout which is BILLABLE (consumes DO wall-clock time)
117
+ */
118
+ export class InMemoryStorageStrategy {
119
+ stepResults = new Map();
120
+ durableStorage;
121
+ constructor(storage) {
122
+ this.durableStorage = storage ?? new InMemoryStepStorage();
123
+ }
124
+ async executeStep(name, fn, _options) {
125
+ // Check in-memory cache first
126
+ const cached = this.stepResults.get(name);
127
+ if (cached) {
128
+ if (cached.status === 'error') {
129
+ throw cached.error;
130
+ }
131
+ return cached.value;
132
+ }
133
+ // Check durable storage for completed steps (survives worker restarts)
134
+ const durableResult = await this.durableStorage.get(name);
135
+ if (durableResult?.status === 'completed') {
136
+ this.stepResults.set(name, { status: 'success', value: durableResult.result });
137
+ return durableResult.result;
138
+ }
139
+ // Execute the function
140
+ try {
141
+ const result = await fn();
142
+ // Store in both in-memory and durable storage
143
+ this.stepResults.set(name, { status: 'success', value: result });
144
+ await this.durableStorage.set(name, {
145
+ stepId: name,
146
+ status: 'completed',
147
+ result,
148
+ attempts: 1,
149
+ createdAt: Date.now(),
150
+ completedAt: Date.now(),
151
+ });
152
+ return result;
153
+ }
154
+ catch (error) {
155
+ const err = ensureError(error);
156
+ this.stepResults.set(name, { status: 'error', error: err });
157
+ await this.durableStorage.set(name, {
158
+ stepId: name,
159
+ status: 'failed',
160
+ error: err.message,
161
+ attempts: 1,
162
+ createdAt: Date.now(),
163
+ });
164
+ throw err;
165
+ }
166
+ }
167
+ async sleep(name, durationMs, _durationStr) {
168
+ // Check for cached completion
169
+ if (this.stepResults.has(name)) {
170
+ return;
171
+ }
172
+ // Check durable storage
173
+ const durableResult = await this.durableStorage.get(name);
174
+ if (durableResult?.status === 'completed') {
175
+ this.stepResults.set(name, { status: 'success', value: true });
176
+ return;
177
+ }
178
+ // Persist pending state before sleeping
179
+ await this.durableStorage.set(name, {
180
+ stepId: name,
181
+ status: 'pending',
182
+ attempts: 1,
183
+ createdAt: Date.now(),
184
+ });
185
+ // Fallback to setTimeout - BILLABLE
186
+ await new Promise((resolve) => setTimeout(resolve, durationMs));
187
+ // Persist completed state
188
+ await this.durableStorage.set(name, {
189
+ stepId: name,
190
+ status: 'completed',
191
+ result: true,
192
+ attempts: 1,
193
+ createdAt: Date.now(),
194
+ completedAt: Date.now(),
195
+ });
196
+ this.stepResults.set(name, { status: 'success', value: true });
197
+ }
198
+ async isStepCompleted(name) {
199
+ if (this.stepResults.has(name)) {
200
+ return true;
201
+ }
202
+ const durableResult = await this.durableStorage.get(name);
203
+ return durableResult?.status === 'completed';
204
+ }
205
+ async getStepResult(name) {
206
+ // Check in-memory first
207
+ const cached = this.stepResults.get(name);
208
+ if (cached) {
209
+ if (cached.status === 'error') {
210
+ throw cached.error;
211
+ }
212
+ return cached.value;
213
+ }
214
+ // Check durable storage
215
+ const durableResult = await this.durableStorage.get(name);
216
+ if (durableResult?.status === 'completed') {
217
+ return durableResult.result;
218
+ }
219
+ return undefined;
220
+ }
221
+ async setStepResult(name, result) {
222
+ if (result instanceof Error) {
223
+ this.stepResults.set(name, { status: 'error', error: result });
224
+ await this.durableStorage.set(name, {
225
+ stepId: name,
226
+ status: 'failed',
227
+ error: result.message,
228
+ attempts: 1,
229
+ createdAt: Date.now(),
230
+ });
231
+ }
232
+ else {
233
+ this.stepResults.set(name, { status: 'success', value: result });
234
+ await this.durableStorage.set(name, {
235
+ stepId: name,
236
+ status: 'completed',
237
+ result,
238
+ attempts: 1,
239
+ createdAt: Date.now(),
240
+ completedAt: Date.now(),
241
+ });
242
+ }
243
+ }
244
+ /**
245
+ * Clear all cached results (for testing)
246
+ */
247
+ clear() {
248
+ this.stepResults.clear();
249
+ }
250
+ }
251
+ // ============================================================================
252
+ // STRATEGY FACTORY
253
+ // ============================================================================
254
+ /**
255
+ * Get the appropriate storage strategy for the current workflow execution.
256
+ *
257
+ * Selection logic:
258
+ * 1. If WorkflowStep is available in context, use CFWorkflowsStorageStrategy (FREE sleeping, durable)
259
+ * 2. Otherwise, use InMemoryStorageStrategy (fallback, BILLABLE sleeping)
260
+ *
261
+ * @param workflowStep - Optional WorkflowStep from CF Workflows runtime
262
+ * @param storage - Optional StepStorage for InMemory fallback
263
+ * @returns The appropriate storage strategy
264
+ */
265
+ export function createStorageStrategy(workflowStep, storage) {
266
+ if (workflowStep) {
267
+ return new CFWorkflowsStorageStrategy(workflowStep);
268
+ }
269
+ return new InMemoryStorageStrategy(storage);
270
+ }
271
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../../workflows/compat/temporal/storage.ts"],"names":[],"mappings":"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"}