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,489 @@
1
+ /**
2
+ * Entity Events (Event Sourcing) Module
3
+ *
4
+ * This module implements event sourcing for entities:
5
+ * - $.Entity(id).append(eventType, data) - Append events
6
+ * - $.Entity(id).state() - Reconstruct state from events
7
+ * - $.Entity(id).events() - Get event history
8
+ * - $.Entity(id).stateAt(timestamp) - Time-travel to point in time
9
+ * - $.aggregate(entityType, config) - Define state reducers
10
+ * - $.projection(name, config) - Define cross-entity projections
11
+ *
12
+ * @module workflows/data/entity-events
13
+ */
14
+ /**
15
+ * Create an entity event context
16
+ */
17
+ export function createEntityEventContext(options = {}) {
18
+ // Storage
19
+ const storage = options.storage ?? new Map();
20
+ // Registry
21
+ const aggregates = new Map();
22
+ const projections = new Map();
23
+ const eventHandlers = new Map();
24
+ // Configuration
25
+ let strictMode = false;
26
+ let simulateStorageFailure = false;
27
+ // Transaction state for $.do
28
+ let inTransaction = false;
29
+ let transactionEvents = [];
30
+ // Global event log for projections
31
+ const globalEventLog = [];
32
+ // Helper to get events key
33
+ function getEventsKey(entityType, entityId) {
34
+ return `events:${entityType}:${entityId}`;
35
+ }
36
+ // Helper to get snapshots key
37
+ function getSnapshotsKey(entityType, entityId) {
38
+ return `snapshots:${entityType}:${entityId}`;
39
+ }
40
+ // Helper to store events
41
+ function getStoredEvents(entityType, entityId) {
42
+ const key = getEventsKey(entityType, entityId);
43
+ return storage.get(key) ?? [];
44
+ }
45
+ // Helper to save events
46
+ function saveStoredEvents(entityType, entityId, events) {
47
+ const key = getEventsKey(entityType, entityId);
48
+ storage.set(key, events);
49
+ }
50
+ // Helper to get snapshots
51
+ function getStoredSnapshots(entityType, entityId) {
52
+ const key = getSnapshotsKey(entityType, entityId);
53
+ return storage.get(key) ?? [];
54
+ }
55
+ // Helper to save snapshots
56
+ function saveStoredSnapshots(entityType, entityId, snapshots) {
57
+ const key = getSnapshotsKey(entityType, entityId);
58
+ storage.set(key, snapshots);
59
+ }
60
+ // Convert stored event to EntityEvent
61
+ function toEntityEvent(stored) {
62
+ return {
63
+ type: stored.type,
64
+ data: stored.data,
65
+ version: stored.version,
66
+ timestamp: new Date(stored.timestamp),
67
+ entityId: stored.entityId,
68
+ };
69
+ }
70
+ // Deep clone to ensure immutability
71
+ function deepClone(obj) {
72
+ if (obj === null || typeof obj !== 'object') {
73
+ return obj;
74
+ }
75
+ if (obj instanceof Date) {
76
+ return new Date(obj.getTime());
77
+ }
78
+ if (Array.isArray(obj)) {
79
+ return obj.map((item) => deepClone(item));
80
+ }
81
+ const cloned = {};
82
+ for (const key in obj) {
83
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
84
+ cloned[key] = deepClone(obj[key]);
85
+ }
86
+ }
87
+ return cloned;
88
+ }
89
+ // Validate event data against schema
90
+ function validateEventData(aggregateName, eventType, data) {
91
+ const aggregate = aggregates.get(aggregateName);
92
+ if (!aggregate?.events)
93
+ return;
94
+ // Always prefix with entity type
95
+ const fullEventType = `${aggregateName}.${eventType}`;
96
+ const eventDef = aggregate.events[fullEventType];
97
+ if (!eventDef?.schema)
98
+ return;
99
+ for (const [field, fieldDef] of Object.entries(eventDef.schema)) {
100
+ if (fieldDef.required && !(field in data)) {
101
+ throw new Error(`Validation error: ${field} is required`);
102
+ }
103
+ }
104
+ }
105
+ // Reconstruct state from events
106
+ async function reconstructState(entityType, entityId, upToTimestamp) {
107
+ let events = getStoredEvents(entityType, entityId);
108
+ // Check for corrupted events first (before aggregate check)
109
+ for (const event of events) {
110
+ if (event.data === null && event.type !== null) {
111
+ throw new Error(`Corrupted event data for entity ${entityId}`);
112
+ }
113
+ }
114
+ const aggregate = aggregates.get(entityType);
115
+ if (!aggregate) {
116
+ if (strictMode) {
117
+ throw new Error(`Aggregate '${entityType}' is not defined`);
118
+ }
119
+ return {};
120
+ }
121
+ // Find best snapshot to start from
122
+ const snapshots = getStoredSnapshots(entityType, entityId);
123
+ let state = deepClone(aggregate.initial());
124
+ let startVersion = 0;
125
+ if (snapshots.length > 0) {
126
+ // Find the best snapshot (latest one before upToTimestamp if specified)
127
+ let bestSnapshot = null;
128
+ for (const snapshot of snapshots) {
129
+ if (upToTimestamp === undefined || snapshot.timestamp <= upToTimestamp) {
130
+ if (!bestSnapshot || snapshot.version > bestSnapshot.version) {
131
+ bestSnapshot = snapshot;
132
+ }
133
+ }
134
+ }
135
+ if (bestSnapshot) {
136
+ state = deepClone(bestSnapshot.state);
137
+ startVersion = bestSnapshot.version;
138
+ }
139
+ }
140
+ // Filter events by version and timestamp
141
+ events = events.filter((e) => e.version > startVersion);
142
+ if (upToTimestamp !== undefined) {
143
+ events = events.filter((e) => e.timestamp <= upToTimestamp);
144
+ }
145
+ // Apply events
146
+ for (const event of events) {
147
+ const reducer = aggregate.reduce[event.type];
148
+ if (reducer) {
149
+ const result = reducer(state, toEntityEvent(event));
150
+ state = (result instanceof Promise ? await result : result);
151
+ }
152
+ // Unknown event types are silently skipped
153
+ }
154
+ return deepClone(state);
155
+ }
156
+ // Create entity operations
157
+ function createEntityOperations(entityType, entityId) {
158
+ return {
159
+ async append(eventType, data) {
160
+ // Validate inputs
161
+ if (!entityId || entityId.trim() === '') {
162
+ throw new Error('Invalid entity ID');
163
+ }
164
+ if (!eventType || eventType.trim() === '') {
165
+ throw new Error('Event type is required');
166
+ }
167
+ // Check storage failure simulation
168
+ if (simulateStorageFailure) {
169
+ throw new Error('Storage failure');
170
+ }
171
+ // Check strict mode
172
+ if (strictMode && !aggregates.has(entityType)) {
173
+ throw new Error(`Aggregate '${entityType}' is not defined`);
174
+ }
175
+ // Validate event data against schema
176
+ validateEventData(entityType, eventType, data);
177
+ // Get current events and determine version
178
+ const events = getStoredEvents(entityType, entityId);
179
+ const version = events.length + 1;
180
+ const timestamp = Date.now();
181
+ // Create full event type - always prefix with entity type
182
+ const fullEventType = `${entityType}.${eventType}`;
183
+ const storedEvent = {
184
+ type: fullEventType,
185
+ data: deepClone(data),
186
+ version,
187
+ timestamp,
188
+ entityId,
189
+ };
190
+ // Store event (or buffer in transaction)
191
+ if (inTransaction) {
192
+ transactionEvents.push({ key: getEventsKey(entityType, entityId), event: storedEvent });
193
+ }
194
+ else {
195
+ events.push(storedEvent);
196
+ saveStoredEvents(entityType, entityId, events);
197
+ globalEventLog.push(storedEvent);
198
+ }
199
+ // Auto-snapshot if configured
200
+ const aggregate = aggregates.get(entityType);
201
+ if (aggregate?.snapshots?.every && aggregate.snapshots.every > 0) {
202
+ if (version % aggregate.snapshots.every === 0) {
203
+ // Create automatic snapshot
204
+ const state = await reconstructState(entityType, entityId);
205
+ const snapshots = getStoredSnapshots(entityType, entityId);
206
+ snapshots.push({
207
+ id: `snapshot-${version}-${timestamp}`,
208
+ version,
209
+ timestamp,
210
+ state,
211
+ });
212
+ saveStoredSnapshots(entityType, entityId, snapshots);
213
+ }
214
+ }
215
+ // Trigger event handlers
216
+ const entityEvent = toEntityEvent(storedEvent);
217
+ const handlerKey = fullEventType;
218
+ const handlers = eventHandlers.get(handlerKey) ?? [];
219
+ for (const handler of handlers) {
220
+ await handler(entityEvent);
221
+ }
222
+ return entityEvent;
223
+ },
224
+ async appendBatch(eventsToAppend) {
225
+ const results = [];
226
+ for (const event of eventsToAppend) {
227
+ const result = await this.append(event.type, event.data);
228
+ results.push(result);
229
+ }
230
+ return results;
231
+ },
232
+ async state() {
233
+ return (await reconstructState(entityType, entityId));
234
+ },
235
+ async stateAt(timestamp) {
236
+ let ts;
237
+ if (timestamp instanceof Date) {
238
+ ts = timestamp.getTime();
239
+ }
240
+ else if (typeof timestamp === 'string') {
241
+ ts = new Date(timestamp).getTime();
242
+ }
243
+ else {
244
+ ts = timestamp;
245
+ }
246
+ return (await reconstructState(entityType, entityId, ts));
247
+ },
248
+ async events(filter) {
249
+ let events = getStoredEvents(entityType, entityId).map(toEntityEvent);
250
+ if (filter) {
251
+ if (filter.type) {
252
+ events = events.filter((e) => e.type === filter.type);
253
+ }
254
+ if (filter.fromVersion !== undefined) {
255
+ events = events.filter((e) => e.version >= filter.fromVersion);
256
+ }
257
+ if (filter.toVersion !== undefined) {
258
+ events = events.filter((e) => e.version <= filter.toVersion);
259
+ }
260
+ if (filter.since) {
261
+ const sinceTime = filter.since.getTime();
262
+ events = events.filter((e) => e.timestamp.getTime() >= sinceTime);
263
+ }
264
+ if (filter.offset !== undefined) {
265
+ events = events.slice(filter.offset);
266
+ }
267
+ if (filter.limit !== undefined) {
268
+ events = events.slice(0, filter.limit);
269
+ }
270
+ }
271
+ return events;
272
+ },
273
+ async createSnapshot() {
274
+ const events = getStoredEvents(entityType, entityId);
275
+ const version = events.length;
276
+ const timestamp = Date.now();
277
+ const state = await reconstructState(entityType, entityId);
278
+ const snapshotId = `snapshot-${version}-${timestamp}`;
279
+ const snapshots = getStoredSnapshots(entityType, entityId);
280
+ snapshots.push({
281
+ id: snapshotId,
282
+ version,
283
+ timestamp,
284
+ state,
285
+ });
286
+ saveStoredSnapshots(entityType, entityId, snapshots);
287
+ return snapshotId;
288
+ },
289
+ async getSnapshot(snapshotId) {
290
+ const snapshots = getStoredSnapshots(entityType, entityId);
291
+ const snapshot = snapshots.find((s) => s.id === snapshotId);
292
+ if (!snapshot) {
293
+ throw new Error(`Snapshot '${snapshotId}' not found`);
294
+ }
295
+ return deepClone(snapshot.state);
296
+ },
297
+ async listSnapshots() {
298
+ const snapshots = getStoredSnapshots(entityType, entityId);
299
+ return snapshots.map((s) => ({
300
+ id: s.id,
301
+ version: s.version,
302
+ timestamp: new Date(s.timestamp),
303
+ }));
304
+ },
305
+ };
306
+ }
307
+ // Create projection operations
308
+ function createProjectionOperations(name) {
309
+ const projectionState = projections.get(name);
310
+ if (!projectionState) {
311
+ throw new Error(`Projection '${name}' not found`);
312
+ }
313
+ return {
314
+ async process() {
315
+ const { definition, position, data } = projectionState;
316
+ // Find events to process
317
+ const eventsToProcess = globalEventLog.slice(position);
318
+ for (const storedEvent of eventsToProcess) {
319
+ // Check if event matches any "from" pattern
320
+ const matches = definition.from.some((pattern) => {
321
+ if (pattern.endsWith('.*')) {
322
+ const prefix = pattern.slice(0, -2);
323
+ return storedEvent.type.startsWith(prefix + '.');
324
+ }
325
+ return storedEvent.type === pattern;
326
+ });
327
+ if (!matches)
328
+ continue;
329
+ const handler = definition.handle[storedEvent.type];
330
+ if (!handler)
331
+ continue;
332
+ const event = toEntityEvent(storedEvent);
333
+ const utils = {
334
+ async set(key, value) {
335
+ data.set(key, deepClone(value));
336
+ },
337
+ async upsert(key, updater) {
338
+ const current = data.get(key);
339
+ const updated = updater(current !== undefined ? deepClone(current) : undefined);
340
+ data.set(key, deepClone(updated));
341
+ },
342
+ async del(key) {
343
+ data.delete(key);
344
+ },
345
+ };
346
+ try {
347
+ await handler(event, utils);
348
+ }
349
+ catch (err) {
350
+ if (definition.onError === 'skip') {
351
+ continue;
352
+ }
353
+ throw err;
354
+ }
355
+ }
356
+ projectionState.position = globalEventLog.length;
357
+ },
358
+ async rebuild() {
359
+ projectionState.position = 0;
360
+ projectionState.data.clear();
361
+ await this.process();
362
+ },
363
+ async get(key) {
364
+ const value = projectionState.data.get(key);
365
+ return value !== undefined ? deepClone(value) : undefined;
366
+ },
367
+ async list(options) {
368
+ const results = [];
369
+ for (const [key, value] of projectionState.data) {
370
+ if (key.startsWith(options.prefix)) {
371
+ results.push(deepClone(value));
372
+ }
373
+ }
374
+ return results;
375
+ },
376
+ async getPosition() {
377
+ return projectionState.position;
378
+ },
379
+ };
380
+ }
381
+ // Create the $ proxy
382
+ const proxy = new Proxy({}, {
383
+ get(target, prop) {
384
+ if (prop === 'aggregate') {
385
+ return function (name, definition, options) {
386
+ if (aggregates.has(name) && !options?.force) {
387
+ throw new Error(`Aggregate '${name}' is already defined`);
388
+ }
389
+ aggregates.set(name, definition);
390
+ };
391
+ }
392
+ if (prop === 'projection') {
393
+ const projectionFn = function (nameOrDef, definition) {
394
+ if (definition !== undefined) {
395
+ // Defining a projection
396
+ projections.set(nameOrDef, {
397
+ definition,
398
+ position: 0,
399
+ data: new Map(),
400
+ });
401
+ }
402
+ else {
403
+ // Getting projection operations
404
+ return createProjectionOperations(nameOrDef);
405
+ }
406
+ };
407
+ return projectionFn;
408
+ }
409
+ if (prop === 'on') {
410
+ // Return a proxy for $.on.EntityType.eventType(handler)
411
+ return new Proxy({}, {
412
+ get(_onTarget, entityType) {
413
+ return new Proxy({}, {
414
+ get(_entityTarget, eventType) {
415
+ return function (handler) {
416
+ const fullEventType = `${entityType}.${eventType}`;
417
+ if (!eventHandlers.has(fullEventType)) {
418
+ eventHandlers.set(fullEventType, []);
419
+ }
420
+ eventHandlers.get(fullEventType).push(handler);
421
+ };
422
+ },
423
+ });
424
+ },
425
+ });
426
+ }
427
+ if (prop === 'do') {
428
+ return async function (fn) {
429
+ inTransaction = true;
430
+ transactionEvents = [];
431
+ try {
432
+ const result = await fn();
433
+ // Commit transaction
434
+ for (const { key, event } of transactionEvents) {
435
+ const [, entityType, entityId] = key.split(':');
436
+ const events = getStoredEvents(entityType, entityId);
437
+ events.push(event);
438
+ saveStoredEvents(entityType, entityId, events);
439
+ globalEventLog.push(event);
440
+ }
441
+ return result;
442
+ }
443
+ catch (err) {
444
+ // Rollback - discard buffered events
445
+ transactionEvents = [];
446
+ throw err;
447
+ }
448
+ finally {
449
+ inTransaction = false;
450
+ }
451
+ };
452
+ }
453
+ // Entity type access - return a function that takes an ID
454
+ return function (id) {
455
+ return createEntityOperations(prop, id);
456
+ };
457
+ },
458
+ });
459
+ return {
460
+ $: proxy,
461
+ hasAggregate: (name) => aggregates.has(name),
462
+ hasProjection: (name) => projections.has(name),
463
+ getAggregate: (name) => {
464
+ const agg = aggregates.get(name);
465
+ if (!agg) {
466
+ throw new Error(`Aggregate '${name}' not found`);
467
+ }
468
+ return agg;
469
+ },
470
+ setStrictMode: (strict) => {
471
+ strictMode = strict;
472
+ },
473
+ _simulateStorageFailure: (fail) => {
474
+ simulateStorageFailure = fail;
475
+ },
476
+ _injectCorruptedEvent: async (entityType, entityId, event) => {
477
+ const events = getStoredEvents(entityType, entityId);
478
+ events.push({
479
+ type: event.type ?? 'unknown',
480
+ data: event.data,
481
+ version: event.version ?? events.length + 1,
482
+ timestamp: event.timestamp?.getTime() ?? Date.now(),
483
+ entityId,
484
+ });
485
+ saveStoredEvents(entityType, entityId, events);
486
+ },
487
+ };
488
+ }
489
+ //# sourceMappingURL=entity-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-events.js","sourceRoot":"","sources":["../../../../workflows/data/entity-events/entity-events.ts"],"names":[],"mappings":"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"}