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,309 @@
1
+ /**
2
+ * Workflow Context Module
3
+ *
4
+ * AsyncLocalStorage-based context management for concurrent workflow execution.
5
+ * This enables multiple workflows to execute concurrently without global state pollution.
6
+ */
7
+ import { AsyncLocalStorage } from 'async_hooks';
8
+ import { WaitForEventManager } from '../../WaitForEventManager';
9
+ import { InMemoryStepStorage } from '../../runtime';
10
+ import { createStorageStrategy } from './storage';
11
+ import { setGetCurrentWorkflowFn } from './determinism';
12
+ // ============================================================================
13
+ // ASYNCLOCALSTORAGE
14
+ // ============================================================================
15
+ // AsyncLocalStorage provides execution-scoped context
16
+ // This works in both Node.js and Cloudflare Workers runtime
17
+ const workflowContextStorage = new AsyncLocalStorage();
18
+ // ============================================================================
19
+ // CONTEXT ACCESSORS
20
+ // ============================================================================
21
+ /**
22
+ * Get the current workflow context from AsyncLocalStorage.
23
+ * Returns null if not executing within a workflow.
24
+ */
25
+ export function getCurrentContext() {
26
+ return workflowContextStorage.getStore() ?? null;
27
+ }
28
+ /**
29
+ * Get the current workflow state for backward compatibility.
30
+ * This function bridges the old global state approach with the new context-based approach.
31
+ */
32
+ export function getCurrentWorkflow() {
33
+ const ctx = getCurrentContext();
34
+ return ctx?.workflow ?? null;
35
+ }
36
+ /**
37
+ * Get the current patch state from context.
38
+ */
39
+ export function getCurrentPatchState() {
40
+ const ctx = getCurrentContext();
41
+ return ctx?.patchState ?? null;
42
+ }
43
+ /**
44
+ * Set the current patch state within the context.
45
+ */
46
+ export function setCurrentPatchState(patchState) {
47
+ const ctx = getCurrentContext();
48
+ if (ctx) {
49
+ ctx.patchState = patchState;
50
+ }
51
+ }
52
+ /**
53
+ * Execute a workflow function within a context.
54
+ * This ensures all workflow operations have access to the correct context.
55
+ */
56
+ export function runWithContext(context, fn) {
57
+ return workflowContextStorage.run(context, fn);
58
+ }
59
+ /**
60
+ * Check if code is running within a workflow context.
61
+ * Useful for conditional behavior based on workflow vs non-workflow execution.
62
+ */
63
+ export function inWorkflowContext() {
64
+ return getCurrentWorkflow() !== null;
65
+ }
66
+ // ============================================================================
67
+ // GLOBAL REGISTRIES
68
+ // ============================================================================
69
+ // These are shared lookup tables, not per-execution state
70
+ let globalStorage = new InMemoryStepStorage();
71
+ let globalState = null;
72
+ let globalWaitManager = null;
73
+ let globalNamespace = 'default';
74
+ // Workflow registry - shared across all executions for handle lookups
75
+ const workflows = new Map();
76
+ const workflowFunctions = new Map();
77
+ /**
78
+ * Get the workflows registry (for client and child workflow access)
79
+ */
80
+ export function getWorkflowsRegistry() {
81
+ return workflows;
82
+ }
83
+ /**
84
+ * Get the workflow functions registry
85
+ */
86
+ export function getWorkflowFunctionsRegistry() {
87
+ return workflowFunctions;
88
+ }
89
+ /**
90
+ * Get the global namespace
91
+ */
92
+ export function getGlobalNamespace() {
93
+ return globalNamespace;
94
+ }
95
+ /**
96
+ * Set the global namespace
97
+ */
98
+ export function setGlobalNamespace(namespace) {
99
+ globalNamespace = namespace;
100
+ }
101
+ /**
102
+ * Get the global storage
103
+ */
104
+ export function getGlobalStorage() {
105
+ return globalStorage;
106
+ }
107
+ /**
108
+ * Get the global wait manager
109
+ */
110
+ export function getGlobalWaitManager() {
111
+ return globalWaitManager;
112
+ }
113
+ /**
114
+ * Get the current storage from context or fallback to global.
115
+ *
116
+ * This provides a single source of truth for storage access, consolidating
117
+ * the pattern of `ctx?.storage ?? globalStorage` that was previously
118
+ * scattered throughout the codebase.
119
+ */
120
+ export function getCurrentStorage() {
121
+ const ctx = getCurrentContext();
122
+ return ctx?.storage ?? globalStorage;
123
+ }
124
+ /**
125
+ * Get the storage strategy for the current workflow context.
126
+ *
127
+ * This function creates the appropriate storage strategy based on the current context:
128
+ * - If a WorkflowStep is available, returns CFWorkflowsStorageStrategy (FREE sleeping, durable)
129
+ * - Otherwise, returns InMemoryStorageStrategy (fallback, BILLABLE sleeping)
130
+ *
131
+ * Note: Strategies are created on-demand rather than stored in context to avoid
132
+ * stale strategy references when WorkflowStep is set/cleared dynamically.
133
+ */
134
+ export function getCurrentStorageStrategy() {
135
+ const ctx = getCurrentContext();
136
+ const step = ctx?.workflowStep ?? null;
137
+ const storage = getCurrentStorage();
138
+ return createStorageStrategy(step, storage);
139
+ }
140
+ // ============================================================================
141
+ // CF WORKFLOWS STEP CONTEXT
142
+ // ============================================================================
143
+ /**
144
+ * Set the WorkflowStep context for the current workflow execution.
145
+ * Call this at the beginning of a CF Workflows run() method to enable
146
+ * native step.do() and step.sleep() execution.
147
+ *
148
+ * The step is stored in the workflow's AsyncLocalStorage context, ensuring
149
+ * isolation between concurrent workflow executions.
150
+ *
151
+ * @param step - The WorkflowStep from CF Workflows runtime, or null to clear
152
+ *
153
+ * @example
154
+ * ```typescript
155
+ * async run(event: WorkflowEvent, step: WorkflowStep) {
156
+ * setWorkflowStep(step)
157
+ * try {
158
+ * // Temporal compat layer will use step.sleep() and step.do()
159
+ * await sleep('5s')
160
+ * await activities.processOrder(event.payload.orderId)
161
+ * } finally {
162
+ * clearWorkflowStep()
163
+ * }
164
+ * }
165
+ * ```
166
+ */
167
+ export function setWorkflowStep(step) {
168
+ const ctx = getCurrentContext();
169
+ if (ctx) {
170
+ ctx.workflowStep = step;
171
+ }
172
+ }
173
+ /**
174
+ * Clear the WorkflowStep context for the current workflow.
175
+ * Call this when exiting the CF Workflows context.
176
+ */
177
+ export function clearWorkflowStep() {
178
+ const ctx = getCurrentContext();
179
+ if (ctx) {
180
+ ctx.workflowStep = null;
181
+ }
182
+ }
183
+ /**
184
+ * Get the current WorkflowStep context, or null if not in a CF Workflows context.
185
+ * Used internally by sleep() and proxyActivities() to route to native APIs.
186
+ */
187
+ export function getWorkflowStep() {
188
+ const ctx = getCurrentContext();
189
+ return ctx?.workflowStep ?? null;
190
+ }
191
+ // ============================================================================
192
+ // CONFIGURATION
193
+ // ============================================================================
194
+ /**
195
+ * Configure the Temporal compat layer globals.
196
+ *
197
+ * This is the single entry point for backend configuration. The storage
198
+ * strategy (CFWorkflows vs InMemory) is auto-detected at runtime based on
199
+ * whether a WorkflowStep context is available.
200
+ *
201
+ * ## Configuration Flow
202
+ *
203
+ * 1. Set `storage` for durable step persistence
204
+ * 2. Set `state` for DurableObject state access (required for waitForEvent)
205
+ * 3. Set `namespace` for workflow isolation
206
+ *
207
+ * ## Storage Strategy Selection (Automatic)
208
+ *
209
+ * - If WorkflowStep context is available: Uses CFWorkflowsStorageStrategy
210
+ * - sleep() uses step.sleep() - FREE (no wall-clock billing)
211
+ * - Activities use step.do() - DURABLE (survives restarts)
212
+ *
213
+ * - Otherwise: Uses InMemoryStorageStrategy (fallback)
214
+ * - sleep() uses setTimeout - BILLABLE (consumes DO time)
215
+ * - Activities execute directly - NOT DURABLE
216
+ *
217
+ * @example
218
+ * ```typescript
219
+ * import { configure } from '@dotdo/temporal'
220
+ *
221
+ * // In a Durable Object
222
+ * configure({
223
+ * storage: new DOStepStorage(ctx.storage),
224
+ * state: ctx.state,
225
+ * namespace: 'production'
226
+ * })
227
+ * ```
228
+ */
229
+ export function configure(opts) {
230
+ if (opts.storage)
231
+ globalStorage = opts.storage;
232
+ if (opts.state) {
233
+ globalState = opts.state;
234
+ globalWaitManager = new WaitForEventManager(opts.state);
235
+ }
236
+ if (opts.namespace)
237
+ globalNamespace = opts.namespace;
238
+ }
239
+ // ============================================================================
240
+ // DURATION FORMATTING
241
+ // ============================================================================
242
+ /**
243
+ * Format a duration in milliseconds to CF Workflows format string.
244
+ * CF Workflows accepts durations like '5s', '1m', '1h', etc.
245
+ *
246
+ * @param ms - Duration in milliseconds
247
+ * @returns Formatted duration string
248
+ */
249
+ export function formatDurationForCF(ms) {
250
+ if (ms < 1000) {
251
+ return `${ms}ms`;
252
+ }
253
+ if (ms < 60 * 1000) {
254
+ const seconds = Math.round(ms / 1000);
255
+ return `${seconds}s`;
256
+ }
257
+ if (ms < 60 * 60 * 1000) {
258
+ const minutes = Math.round(ms / (60 * 1000));
259
+ return `${minutes}m`;
260
+ }
261
+ const hours = Math.round(ms / (60 * 60 * 1000));
262
+ return `${hours}h`;
263
+ }
264
+ /**
265
+ * Generate a unique step ID for sleep operations.
266
+ * Uses per-workflow counter for deterministic IDs across concurrent workflows.
267
+ *
268
+ * @param ms - Duration in milliseconds
269
+ * @returns Unique step ID
270
+ */
271
+ export function generateSleepStepId(ms) {
272
+ const ctx = getCurrentContext();
273
+ if (!ctx?.workflow) {
274
+ // Fallback for non-workflow context (testing)
275
+ return `sleep:${formatDurationForCF(ms)}:${Date.now()}`;
276
+ }
277
+ ctx.workflow.sleepStepCounter++;
278
+ return `sleep:${formatDurationForCF(ms)}:${ctx.workflow.sleepStepCounter}`;
279
+ }
280
+ // ============================================================================
281
+ // ID GENERATION
282
+ // ============================================================================
283
+ export function generateWorkflowId() {
284
+ return `wf_${crypto.randomUUID().replace(/-/g, '')}`;
285
+ }
286
+ export function generateRunId() {
287
+ return `run_${crypto.randomUUID().replace(/-/g, '')}`;
288
+ }
289
+ export function generateTimerId() {
290
+ return `timer_${crypto.randomUUID().replace(/-/g, '')}`;
291
+ }
292
+ // ============================================================================
293
+ // STATE RESET
294
+ // ============================================================================
295
+ /**
296
+ * Reset global registries (for testing)
297
+ */
298
+ export function resetGlobalState() {
299
+ workflows.clear();
300
+ workflowFunctions.clear();
301
+ globalNamespace = 'default';
302
+ clearWorkflowStep();
303
+ }
304
+ // ============================================================================
305
+ // INITIALIZATION
306
+ // ============================================================================
307
+ // Wire up the determinism module to access current workflow
308
+ setGetCurrentWorkflowFn(getCurrentWorkflow);
309
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../../workflows/compat/temporal/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,216 @@
1
+ /**
2
+ * Determinism Enforcement Module
3
+ *
4
+ * Runtime detection and prevention of non-deterministic patterns in workflows.
5
+ * Workflows MUST be deterministic to support replay - given the same inputs
6
+ * and history, they must produce the same sequence of commands.
7
+ */
8
+ // Default configuration - warn in development, silent in production
9
+ let determinismConfig = {
10
+ warnOnNonDeterministic: typeof process !== 'undefined' && process.env?.NODE_ENV !== 'production',
11
+ };
12
+ /**
13
+ * Configure determinism enforcement settings
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * import { configureDeterminism } from '@dotdo/temporal'
18
+ *
19
+ * // Disable warnings in tests
20
+ * configureDeterminism({ warnOnNonDeterministic: false })
21
+ *
22
+ * // Enable warnings in production for debugging
23
+ * configureDeterminism({ warnOnNonDeterministic: true })
24
+ * ```
25
+ */
26
+ export function configureDeterminism(config) {
27
+ determinismConfig = { ...determinismConfig, ...config };
28
+ }
29
+ /**
30
+ * Get current determinism configuration
31
+ */
32
+ export function getDeterminismConfig() {
33
+ return { ...determinismConfig };
34
+ }
35
+ // ============================================================================
36
+ // WARNING CLASS
37
+ // ============================================================================
38
+ /**
39
+ * Warning class for tracking determinism violations.
40
+ * These are logged in development mode to help identify potential replay issues.
41
+ */
42
+ export class WorkflowDeterminismWarning {
43
+ /** Type of non-deterministic operation detected */
44
+ type;
45
+ /** Human-readable message describing the violation */
46
+ message;
47
+ /** Stack trace showing where the violation occurred */
48
+ stack;
49
+ /** Workflow ID where the violation was detected (if available) */
50
+ workflowId;
51
+ /** Suggested alternative to use instead */
52
+ suggestion;
53
+ /** Timestamp when the warning was created */
54
+ timestamp;
55
+ constructor(type, message, suggestion, workflowId) {
56
+ this.type = type;
57
+ this.message = message;
58
+ this.suggestion = suggestion;
59
+ this.workflowId = workflowId;
60
+ this.timestamp = new Date();
61
+ this.stack = new Error().stack;
62
+ }
63
+ /**
64
+ * Format the warning for console output
65
+ */
66
+ toString() {
67
+ const workflowInfo = this.workflowId ? ` in workflow ${this.workflowId}` : '';
68
+ return `[WorkflowDeterminismWarning]${workflowInfo}: ${this.message}\n Suggestion: ${this.suggestion}`;
69
+ }
70
+ }
71
+ // ============================================================================
72
+ // WARNING TRACKING
73
+ // ============================================================================
74
+ /**
75
+ * Track warnings for analysis (limited to prevent memory leaks)
76
+ */
77
+ const MAX_WARNINGS = 100;
78
+ const determinismWarnings = [];
79
+ /**
80
+ * Get all recorded determinism warnings
81
+ */
82
+ export function getDeterminismWarnings() {
83
+ return determinismWarnings;
84
+ }
85
+ /**
86
+ * Clear all recorded determinism warnings
87
+ */
88
+ export function clearDeterminismWarnings() {
89
+ determinismWarnings.length = 0;
90
+ }
91
+ // ============================================================================
92
+ // WARNING FUNCTION
93
+ // ============================================================================
94
+ // Callback to get current workflow - set by context module to avoid circular deps
95
+ let getCurrentWorkflowFn = null;
96
+ /**
97
+ * Set the function to get current workflow (called by context module)
98
+ */
99
+ export function setGetCurrentWorkflowFn(fn) {
100
+ getCurrentWorkflowFn = fn;
101
+ }
102
+ /**
103
+ * Record a determinism violation warning
104
+ */
105
+ export function warnNonDeterministic(type, message, suggestion) {
106
+ // Only warn if enabled and we're in a workflow context
107
+ const workflow = getCurrentWorkflowFn?.();
108
+ if (!determinismConfig.warnOnNonDeterministic || !workflow) {
109
+ return;
110
+ }
111
+ const warning = new WorkflowDeterminismWarning(type, message, suggestion, workflow.workflowId);
112
+ // Store warning (with limit to prevent memory leaks)
113
+ if (determinismWarnings.length < MAX_WARNINGS) {
114
+ determinismWarnings.push(warning);
115
+ }
116
+ // Log to console in development
117
+ console.warn(warning.toString());
118
+ }
119
+ // ============================================================================
120
+ // NON-DETERMINISTIC PATTERN DETECTION
121
+ // ============================================================================
122
+ // Store original functions for restoration and proxying
123
+ const originalDateNow = Date.now;
124
+ const originalMathRandom = Math.random;
125
+ const originalFetch = typeof fetch !== 'undefined' ? fetch : undefined;
126
+ const originalSetTimeout = setTimeout;
127
+ const originalSetInterval = setInterval;
128
+ /**
129
+ * Wrapped Date.now that warns about non-deterministic usage in workflows
130
+ */
131
+ function wrappedDateNow() {
132
+ const workflow = getCurrentWorkflowFn?.();
133
+ if (workflow && determinismConfig.warnOnNonDeterministic) {
134
+ warnNonDeterministic('Date.now', 'Date.now() is non-deterministic and will return different values on replay', 'Use workflowNow() for deterministic timestamps');
135
+ }
136
+ return originalDateNow.call(Date);
137
+ }
138
+ /**
139
+ * Wrapped Math.random that warns about non-deterministic usage in workflows
140
+ */
141
+ function wrappedMathRandom() {
142
+ const workflow = getCurrentWorkflowFn?.();
143
+ if (workflow && determinismConfig.warnOnNonDeterministic) {
144
+ warnNonDeterministic('Math.random', 'Math.random() is non-deterministic and will return different values on replay', 'Use random() for deterministic random numbers');
145
+ }
146
+ return originalMathRandom.call(Math);
147
+ }
148
+ /**
149
+ * Wrapped fetch that warns about non-deterministic usage in workflows
150
+ */
151
+ function wrappedFetch(input, init) {
152
+ const workflow = getCurrentWorkflowFn?.();
153
+ if (workflow && determinismConfig.warnOnNonDeterministic) {
154
+ warnNonDeterministic('fetch', 'fetch() is non-deterministic - network responses can vary between executions', 'Use activities (proxyActivities) for network calls');
155
+ }
156
+ return originalFetch(input, init);
157
+ }
158
+ /**
159
+ * Wrapped setTimeout that warns about non-deterministic usage in workflows
160
+ */
161
+ function wrappedSetTimeout(callback, ms, ...args) {
162
+ const workflow = getCurrentWorkflowFn?.();
163
+ if (workflow && determinismConfig.warnOnNonDeterministic) {
164
+ warnNonDeterministic('setTimeout', 'setTimeout() is non-deterministic - timing varies between executions', 'Use sleep() or createTimer() for durable delays');
165
+ }
166
+ return originalSetTimeout(callback, ms, ...args);
167
+ }
168
+ /**
169
+ * Wrapped setInterval that warns about non-deterministic usage in workflows
170
+ */
171
+ function wrappedSetInterval(callback, ms, ...args) {
172
+ const workflow = getCurrentWorkflowFn?.();
173
+ if (workflow && determinismConfig.warnOnNonDeterministic) {
174
+ warnNonDeterministic('setInterval', 'setInterval() is non-deterministic - timing varies between executions', 'Use sleep() in a loop or schedule recurring activities');
175
+ }
176
+ return originalSetInterval(callback, ms, ...args);
177
+ }
178
+ // ============================================================================
179
+ // DETECTION ENABLE/DISABLE
180
+ // ============================================================================
181
+ /**
182
+ * Enable determinism detection by patching global functions.
183
+ * This is automatically called when the module loads in development mode.
184
+ *
185
+ * Note: This patches global objects, which may affect other code.
186
+ * Use with caution in shared environments.
187
+ */
188
+ export function enableDeterminismDetection() {
189
+ // Only patch if we're configured to warn
190
+ if (!determinismConfig.warnOnNonDeterministic) {
191
+ return;
192
+ }
193
+ // Patch Date.now
194
+ Date.now = wrappedDateNow;
195
+ // Patch Math.random
196
+ Math.random = wrappedMathRandom;
197
+ // Patch fetch if available
198
+ if (originalFetch && typeof globalThis !== 'undefined') {
199
+ ;
200
+ globalThis.fetch = wrappedFetch;
201
+ }
202
+ // Note: setTimeout and setInterval are intentionally not patched by default
203
+ // as they're used internally by the workflow runtime.
204
+ }
205
+ /**
206
+ * Disable determinism detection and restore original functions.
207
+ */
208
+ export function disableDeterminismDetection() {
209
+ Date.now = originalDateNow;
210
+ Math.random = originalMathRandom;
211
+ if (originalFetch && typeof globalThis !== 'undefined') {
212
+ ;
213
+ globalThis.fetch = originalFetch;
214
+ }
215
+ }
216
+ //# sourceMappingURL=determinism.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"determinism.js","sourceRoot":"","sources":["../../../../workflows/compat/temporal/determinism.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Error Classes Module
3
+ *
4
+ * Standard error types for workflow failures.
5
+ */
6
+ // ============================================================================
7
+ // APPLICATION FAILURE
8
+ // ============================================================================
9
+ /**
10
+ * Application-level failure that can be thrown from workflows or activities.
11
+ * Use this to signal business logic failures vs infrastructure errors.
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * import { ApplicationFailure } from '@dotdo/temporal'
16
+ *
17
+ * if (!user.hasPermission('admin')) {
18
+ * throw new ApplicationFailure('User does not have admin permission', true)
19
+ * }
20
+ * ```
21
+ */
22
+ export class ApplicationFailure extends Error {
23
+ nonRetryable;
24
+ details;
25
+ type = 'ApplicationFailure';
26
+ constructor(message, nonRetryable = false, details) {
27
+ super(message);
28
+ this.nonRetryable = nonRetryable;
29
+ this.details = details;
30
+ this.name = 'ApplicationFailure';
31
+ }
32
+ /**
33
+ * Create a non-retryable application failure
34
+ */
35
+ static nonRetryable(message, ...details) {
36
+ return new ApplicationFailure(message, true, details.length > 0 ? details : undefined);
37
+ }
38
+ /**
39
+ * Create a retryable application failure
40
+ */
41
+ static retryable(message, ...details) {
42
+ return new ApplicationFailure(message, false, details.length > 0 ? details : undefined);
43
+ }
44
+ }
45
+ // ============================================================================
46
+ // ACTIVITY FAILURE
47
+ // ============================================================================
48
+ /**
49
+ * Failure thrown when an activity execution fails.
50
+ * Contains information about the failed activity and the underlying cause.
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * try {
55
+ * await activities.processPayment(order)
56
+ * } catch (error) {
57
+ * if (error instanceof ActivityFailure) {
58
+ * console.log(`Activity ${error.activityType} failed: ${error.cause?.message}`)
59
+ * }
60
+ * }
61
+ * ```
62
+ */
63
+ export class ActivityFailure extends Error {
64
+ activityType;
65
+ activityId;
66
+ cause;
67
+ type = 'ActivityFailure';
68
+ constructor(activityType, activityId, cause) {
69
+ super(`Activity ${activityType} (${activityId}) failed${cause ? `: ${cause.message}` : ''}`);
70
+ this.activityType = activityType;
71
+ this.activityId = activityId;
72
+ this.cause = cause;
73
+ this.name = 'ActivityFailure';
74
+ }
75
+ }
76
+ // ============================================================================
77
+ // CHILD WORKFLOW FAILURE
78
+ // ============================================================================
79
+ /**
80
+ * Failure thrown when a child workflow execution fails.
81
+ * Contains information about the failed child workflow and the underlying cause.
82
+ *
83
+ * @example
84
+ * ```typescript
85
+ * try {
86
+ * await executeChild(childWorkflow, { workflowId: 'child-1' })
87
+ * } catch (error) {
88
+ * if (error instanceof ChildWorkflowFailure) {
89
+ * console.log(`Child workflow ${error.workflowType} failed: ${error.cause?.message}`)
90
+ * }
91
+ * }
92
+ * ```
93
+ */
94
+ export class ChildWorkflowFailure extends Error {
95
+ workflowType;
96
+ workflowId;
97
+ cause;
98
+ type = 'ChildWorkflowFailure';
99
+ constructor(workflowType, workflowId, cause) {
100
+ super(`Child workflow ${workflowType} (${workflowId}) failed${cause ? `: ${cause.message}` : ''}`);
101
+ this.workflowType = workflowType;
102
+ this.workflowId = workflowId;
103
+ this.cause = cause;
104
+ this.name = 'ChildWorkflowFailure';
105
+ }
106
+ }
107
+ // ============================================================================
108
+ // TYPE GUARDS
109
+ // ============================================================================
110
+ /**
111
+ * Check if an error is an ApplicationFailure
112
+ */
113
+ export function isApplicationFailure(error) {
114
+ return error instanceof ApplicationFailure;
115
+ }
116
+ /**
117
+ * Check if an error is an ActivityFailure
118
+ */
119
+ export function isActivityFailure(error) {
120
+ return error instanceof ActivityFailure;
121
+ }
122
+ /**
123
+ * Check if an error is a ChildWorkflowFailure
124
+ */
125
+ export function isChildWorkflowFailure(error) {
126
+ return error instanceof ChildWorkflowFailure;
127
+ }
128
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../workflows/compat/temporal/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAKhC;IACA;IALF,IAAI,GAAG,oBAA6B,CAAA;IAE7C,YACE,OAAe,EACN,eAAwB,KAAK,EAC7B,OAAmB;QAE5B,KAAK,CAAC,OAAO,CAAC,CAAA;QAHL,iBAAY,GAAZ,YAAY,CAAiB;QAC7B,YAAO,GAAP,OAAO,CAAY;QAG5B,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;IAClC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,OAAe,EAAE,GAAG,OAAkB;QACxD,OAAO,IAAI,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IACxF,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,OAAe,EAAE,GAAG,OAAkB;QACrD,OAAO,IAAI,kBAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IACzF,CAAC;CACF;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAI7B;IACA;IACA;IALF,IAAI,GAAG,iBAA0B,CAAA;IAE1C,YACW,YAAoB,EACpB,UAAkB,EAClB,KAAa;QAEtB,KAAK,CAAC,YAAY,YAAY,KAAK,UAAU,WAAW,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QAJnF,iBAAY,GAAZ,YAAY,CAAQ;QACpB,eAAU,GAAV,UAAU,CAAQ;QAClB,UAAK,GAAL,KAAK,CAAQ;QAGtB,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAA;IAC/B,CAAC;CACF;AAED,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAIlC;IACA;IACA;IALF,IAAI,GAAG,sBAA+B,CAAA;IAE/C,YACW,YAAoB,EACpB,UAAkB,EAClB,KAAa;QAEtB,KAAK,CAAC,kBAAkB,YAAY,KAAK,UAAU,WAAW,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QAJzF,iBAAY,GAAZ,YAAY,CAAQ;QACpB,eAAU,GAAV,UAAU,CAAQ;QAClB,UAAK,GAAL,KAAK,CAAQ;QAGtB,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAA;IACpC,CAAC;CACF;AAED,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,OAAO,KAAK,YAAY,kBAAkB,CAAA;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,KAAK,YAAY,eAAe,CAAA;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,OAAO,KAAK,YAAY,oBAAoB,CAAA;AAC9C,CAAC"}