@swirls/looms 0.3.0 → 0.5.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 (253) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/dist/actor/cell.d.ts +21 -2
  3. package/dist/actor/cell.js +15 -3
  4. package/dist/actor/host.d.ts +10 -2
  5. package/dist/actor/host.js +27 -4
  6. package/dist/actor/index.d.ts +2 -1
  7. package/dist/actor/index.js +1 -1
  8. package/dist/actor/routing.d.ts +3 -0
  9. package/dist/actor/routing.js +13 -2
  10. package/dist/agent/debugger/agent-chat.js +3 -30
  11. package/dist/agent/debugger/streaming-text.d.ts +6 -0
  12. package/dist/agent/debugger/streaming-text.js +33 -0
  13. package/dist/agent/definitions-store.d.ts +1 -1
  14. package/dist/agent/definitions-store.js +1 -1
  15. package/dist/agent/definitions.d.ts +48 -0
  16. package/dist/agent/definitions.js +44 -0
  17. package/dist/agent/effects.d.ts +184 -0
  18. package/dist/agent/effects.js +172 -40
  19. package/dist/agent/events.d.ts +89 -0
  20. package/dist/agent/events.js +25 -0
  21. package/dist/agent/module.d.ts +819 -407
  22. package/dist/agent/module.js +5 -1
  23. package/dist/agent/scope.d.ts +88 -0
  24. package/dist/agent/threads.js +39 -3
  25. package/dist/agent/types.d.ts +4 -0
  26. package/dist/approval/effects.d.ts +40 -0
  27. package/dist/approval/module.d.ts +80 -0
  28. package/dist/client/client.d.ts +468 -119
  29. package/dist/client/client.js +214 -21
  30. package/dist/client/index.d.ts +1 -1
  31. package/dist/client/sse.d.ts +1 -1
  32. package/dist/client/sse.js +2 -2
  33. package/dist/cloudflare/durable-object.d.ts +66 -2
  34. package/dist/cloudflare/durable-object.js +96 -1
  35. package/dist/cloudflare/event-store.d.ts +7 -3
  36. package/dist/cloudflare/event-store.js +16 -3
  37. package/dist/cloudflare/index.d.ts +7 -1
  38. package/dist/cloudflare/index.js +7 -1
  39. package/dist/cloudflare/memory-queue.d.ts +18 -0
  40. package/dist/cloudflare/memory-queue.js +53 -0
  41. package/dist/cloudflare/queue-consumer.d.ts +52 -0
  42. package/dist/cloudflare/queue-consumer.js +102 -0
  43. package/dist/cloudflare/queue-message.d.ts +31 -0
  44. package/dist/cloudflare/queue-message.js +33 -0
  45. package/dist/cloudflare/queue-pull.d.ts +62 -0
  46. package/dist/cloudflare/queue-pull.js +130 -0
  47. package/dist/cloudflare/queue-worker.d.ts +39 -0
  48. package/dist/cloudflare/queue-worker.js +62 -0
  49. package/dist/cloudflare/r2-blob-store.d.ts +33 -0
  50. package/dist/cloudflare/r2-blob-store.js +60 -0
  51. package/dist/cloudflare/router.d.ts +4 -1
  52. package/dist/cloudflare/router.js +8 -3
  53. package/dist/cloudflare/websocket.d.ts +27 -0
  54. package/dist/cloudflare/websocket.js +215 -0
  55. package/dist/core/attempts.d.ts +8 -0
  56. package/dist/core/attempts.js +27 -0
  57. package/dist/core/blob-offload.d.ts +21 -0
  58. package/dist/core/blob-offload.js +143 -0
  59. package/dist/core/blob-store.d.ts +45 -0
  60. package/dist/core/blob-store.js +164 -0
  61. package/dist/core/blobs.d.ts +37 -0
  62. package/dist/core/blobs.js +160 -0
  63. package/dist/core/definition-resolver.d.ts +40 -0
  64. package/dist/core/definition-resolver.js +129 -0
  65. package/dist/core/definition-store.d.ts +6 -0
  66. package/dist/core/definition-store.js +37 -1
  67. package/dist/core/effects.d.ts +86 -3
  68. package/dist/core/effects.js +99 -3
  69. package/dist/core/envelope.d.ts +9 -0
  70. package/dist/core/envelope.js +4 -0
  71. package/dist/core/event-codec.js +3 -0
  72. package/dist/core/fold.js +83 -1
  73. package/dist/core/ids.d.ts +2 -0
  74. package/dist/core/ids.js +4 -0
  75. package/dist/core/index.d.ts +10 -0
  76. package/dist/core/index.js +9 -0
  77. package/dist/core/launcher.d.ts +97 -0
  78. package/dist/core/launcher.js +67 -0
  79. package/dist/core/module-scope.d.ts +7 -3
  80. package/dist/core/module-scope.js +3 -0
  81. package/dist/core/module.d.ts +10 -0
  82. package/dist/core/projection.d.ts +5 -4
  83. package/dist/core/projection.js +4 -0
  84. package/dist/core/protocol.d.ts +36 -1
  85. package/dist/core/protocol.js +35 -0
  86. package/dist/core/published.d.ts +2 -0
  87. package/dist/core/published.js +4 -1
  88. package/dist/{react → core}/register.d.ts +9 -8
  89. package/dist/core/replay.d.ts +96 -0
  90. package/dist/core/run-context.d.ts +33 -0
  91. package/dist/core/run-context.js +23 -0
  92. package/dist/core/sqlite-store.js +57 -5
  93. package/dist/core/state.d.ts +60 -0
  94. package/dist/core/state.js +19 -0
  95. package/dist/core/store.d.ts +6 -0
  96. package/dist/core/store.js +7 -0
  97. package/dist/core/subscription.d.ts +97 -0
  98. package/dist/core/subscription.js +224 -0
  99. package/dist/core/thread.d.ts +7 -0
  100. package/dist/core/thread.js +1 -0
  101. package/dist/core/trace.d.ts +21 -0
  102. package/dist/core/trace.js +45 -0
  103. package/dist/core/worker-callback.d.ts +25 -1
  104. package/dist/debugger/app/assets/{index-CgDzWJg7.css → index-B7GdT1UA.css} +1 -1
  105. package/dist/debugger/app/assets/index-C31SnCuN.js +22 -0
  106. package/dist/debugger/app/assets/routes-DPA3O5AF.js +47 -0
  107. package/dist/debugger/app/index.html +2 -2
  108. package/dist/debugger/components/event-inspector.d.ts +3 -1
  109. package/dist/debugger/components/event-inspector.js +25 -4
  110. package/dist/debugger/components/event-stream.d.ts +4 -1
  111. package/dist/debugger/components/event-stream.js +2 -2
  112. package/dist/debugger/components/run-tree.d.ts +5 -2
  113. package/dist/debugger/components/run-tree.js +10 -4
  114. package/dist/debugger/context.d.ts +8 -1
  115. package/dist/debugger/context.js +15 -3
  116. package/dist/debugger/events/protocol-summarize.js +18 -3
  117. package/dist/debugger/index.d.ts +1 -1
  118. package/dist/debugger/index.js +1 -1
  119. package/dist/debugger/shell/debugger-shell.js +1 -1
  120. package/dist/debugger/shell/events-pane.js +4 -3
  121. package/dist/debugger/styles.css +1 -0
  122. package/dist/evaluator/definitions-store.d.ts +3 -4
  123. package/dist/evaluator/definitions-store.js +3 -3
  124. package/dist/evaluator/definitions.d.ts +4 -1
  125. package/dist/evaluator/definitions.js +5 -2
  126. package/dist/evaluator/effects.d.ts +41 -0
  127. package/dist/evaluator/effects.js +6 -2
  128. package/dist/evaluator/module.d.ts +84 -0
  129. package/dist/evaluator/module.js +7 -3
  130. package/dist/evaluator/threads.d.ts +2 -0
  131. package/dist/evaluator/threads.js +4 -0
  132. package/dist/projectors/event-log.d.ts +87 -0
  133. package/dist/projectors/event-log.js +396 -0
  134. package/dist/projectors/index-model.d.ts +12 -0
  135. package/dist/projectors/index-model.js +12 -3
  136. package/dist/projectors/memory.js +7 -0
  137. package/dist/projectors/postgres.d.ts +1 -0
  138. package/dist/projectors/postgres.js +32 -15
  139. package/dist/projectors/schema.d.ts +5 -0
  140. package/dist/projectors/schema.js +26 -1
  141. package/dist/projectors/sqlite.js +47 -19
  142. package/dist/projectors/with-projectors.d.ts +7 -1
  143. package/dist/projectors/with-projectors.js +13 -3
  144. package/dist/react/derived.d.ts +26 -8
  145. package/dist/react/derived.js +23 -26
  146. package/dist/react/index.d.ts +3 -3
  147. package/dist/react/index.js +2 -2
  148. package/dist/react/materialize.js +5 -1
  149. package/dist/react/react.d.ts +16 -9
  150. package/dist/react/react.js +47 -23
  151. package/dist/react/store.d.ts +14 -6
  152. package/dist/react/store.js +104 -12
  153. package/dist/react/tables.d.ts +4 -1
  154. package/dist/runtime/cancellation.d.ts +2 -1
  155. package/dist/runtime/cancellation.js +35 -2
  156. package/dist/runtime/child-run.d.ts +10 -0
  157. package/dist/runtime/child-run.js +58 -0
  158. package/dist/runtime/deadline-transition-planner.js +11 -2
  159. package/dist/runtime/dispatch-effect.d.ts +2 -2
  160. package/dist/runtime/dispatch-effect.js +43 -19
  161. package/dist/runtime/errors.d.ts +14 -1
  162. package/dist/runtime/errors.js +10 -0
  163. package/dist/runtime/filesystem-blob-store.d.ts +6 -0
  164. package/dist/runtime/filesystem-blob-store.js +59 -0
  165. package/dist/runtime/helpers.d.ts +15 -6
  166. package/dist/runtime/helpers.js +46 -6
  167. package/dist/runtime/index.d.ts +4 -2
  168. package/dist/runtime/index.js +3 -1
  169. package/dist/runtime/local-effect-executor.d.ts +11 -2
  170. package/dist/runtime/local-effect-executor.js +80 -4
  171. package/dist/runtime/looms.d.ts +38 -4
  172. package/dist/runtime/looms.js +17 -3
  173. package/dist/runtime/repository.d.ts +5 -4
  174. package/dist/runtime/repository.js +5 -2
  175. package/dist/runtime/retry-policy.d.ts +5 -0
  176. package/dist/runtime/retry-policy.js +10 -2
  177. package/dist/runtime/run-start.d.ts +1 -1
  178. package/dist/runtime/run-start.js +10 -0
  179. package/dist/runtime/runtime.d.ts +2 -2
  180. package/dist/runtime/runtime.js +191 -68
  181. package/dist/runtime/server/auth.d.ts +3 -0
  182. package/dist/runtime/server/fetch-handler.d.ts +2 -2
  183. package/dist/runtime/server/fetch-handler.js +35 -4
  184. package/dist/runtime/server/grant.d.ts +49 -0
  185. package/dist/runtime/server/grant.js +177 -0
  186. package/dist/runtime/server/routes/effects.js +47 -5
  187. package/dist/runtime/server/routes/runs.js +6 -1
  188. package/dist/runtime/server/run-route.d.ts +18 -0
  189. package/dist/runtime/server/run-route.js +26 -0
  190. package/dist/runtime/server.d.ts +3 -1
  191. package/dist/runtime/server.js +3 -1
  192. package/dist/runtime/sse.js +26 -4
  193. package/dist/runtime/subscription.d.ts +8 -0
  194. package/dist/runtime/subscription.js +23 -0
  195. package/dist/runtime/types.d.ts +87 -8
  196. package/dist/runtime/wake-engine.d.ts +4 -2
  197. package/dist/runtime/wake-engine.js +57 -6
  198. package/dist/runtime/worker-callbacks.d.ts +12 -2
  199. package/dist/runtime/worker-callbacks.js +102 -72
  200. package/dist/runtime/worker-effect-dispatch.d.ts +14 -5
  201. package/dist/runtime/worker-effect-dispatch.js +84 -18
  202. package/dist/schedule/debugger/index.d.ts +4 -0
  203. package/dist/schedule/debugger/index.js +11 -0
  204. package/dist/schedule/debugger/schedule-view.d.ts +3 -0
  205. package/dist/schedule/debugger/schedule-view.js +68 -0
  206. package/dist/schedule/debugger/summarize.d.ts +2 -0
  207. package/dist/schedule/debugger/summarize.js +43 -0
  208. package/dist/schedule/definitions-store.d.ts +10 -0
  209. package/dist/schedule/definitions-store.js +8 -0
  210. package/dist/schedule/definitions.d.ts +57 -0
  211. package/dist/schedule/definitions.js +30 -0
  212. package/dist/schedule/effects.d.ts +756 -0
  213. package/dist/schedule/effects.js +244 -0
  214. package/dist/schedule/ensure.d.ts +55 -0
  215. package/dist/schedule/ensure.js +109 -0
  216. package/dist/schedule/events.d.ts +116 -0
  217. package/dist/schedule/events.js +49 -0
  218. package/dist/schedule/index.d.ts +11 -0
  219. package/dist/schedule/index.js +11 -0
  220. package/dist/schedule/module.d.ts +1474 -0
  221. package/dist/schedule/module.js +22 -0
  222. package/dist/schedule/projections.d.ts +55 -0
  223. package/dist/schedule/projections.js +88 -0
  224. package/dist/schedule/scope.d.ts +121 -0
  225. package/dist/schedule/scope.js +7 -0
  226. package/dist/schedule/signals.d.ts +25 -0
  227. package/dist/schedule/signals.js +33 -0
  228. package/dist/schedule/specs.d.ts +59 -0
  229. package/dist/schedule/specs.js +231 -0
  230. package/dist/schedule/threads.d.ts +25 -0
  231. package/dist/schedule/threads.js +259 -0
  232. package/dist/testing/corpus-module.d.ts +34 -0
  233. package/dist/testing/corpus-module.js +87 -0
  234. package/dist/testing/index.d.ts +2 -0
  235. package/dist/testing/index.js +5 -6
  236. package/dist/testing/replay-corpus.d.ts +22 -0
  237. package/dist/testing/replay-corpus.js +50 -0
  238. package/dist/workflow/definitions-store.d.ts +1 -1
  239. package/dist/workflow/definitions-store.js +1 -1
  240. package/dist/workflow/definitions.d.ts +14 -0
  241. package/dist/workflow/effects.d.ts +122 -0
  242. package/dist/workflow/effects.js +16 -6
  243. package/dist/workflow/events.d.ts +42 -0
  244. package/dist/workflow/events.js +4 -0
  245. package/dist/workflow/module.d.ts +345 -32
  246. package/dist/workflow/module.js +7 -3
  247. package/dist/workflow/scope.d.ts +42 -0
  248. package/dist/workflow/threads.d.ts +72 -0
  249. package/dist/workflow/threads.js +106 -38
  250. package/package.json +11 -2
  251. package/dist/debugger/app/assets/index-BevQYa-U.js +0 -22
  252. package/dist/debugger/app/assets/routes-B17Om93i.js +0 -47
  253. /package/dist/{react → core}/register.js +0 -0
@@ -39,6 +39,7 @@ export declare function evaluator(options?: EvaluatorModuleOptions): import("@sw
39
39
  evaluate: import("@swirls/looms/core").EffectDefinition<{
40
40
  readonly evaluationId: string;
41
41
  readonly definitionName?: string | undefined;
42
+ readonly definitionVersion?: string | undefined;
42
43
  readonly input?: import("effect/Schema").Json | undefined;
43
44
  }, import("./definitions-store").EvaluatorDefinitionsTag | EvaluatorTag, (Omit<import("@swirls/looms/core").EventInput, "payload" | "type"> & {
44
45
  readonly type: "evaluator.evaluated";
@@ -73,6 +74,19 @@ export declare function evaluator(options?: EvaluatorModuleOptions): import("@sw
73
74
  readonly state: string;
74
75
  readonly model?: string | undefined;
75
76
  };
77
+ }) | (Omit<import("@swirls/looms/core").EventInput, "payload" | "type"> & {
78
+ readonly type: "runtime.child.close.requested";
79
+ readonly payload: {
80
+ readonly policy: "terminate" | "wait";
81
+ };
82
+ }) | (Omit<import("@swirls/looms/core").EventInput, "payload" | "type"> & {
83
+ readonly type: "runtime.child.settled";
84
+ readonly payload: {
85
+ readonly runId: string;
86
+ readonly status: "cancelled" | "completed" | "failed";
87
+ readonly output: import("effect/Schema").Json;
88
+ readonly error: string | null;
89
+ };
76
90
  }) | (Omit<import("@swirls/looms/core").EventInput, "payload" | "type"> & {
77
91
  readonly type: "runtime.effect.ambiguous";
78
92
  readonly payload: {
@@ -117,6 +131,8 @@ export declare function evaluator(options?: EvaluatorModuleOptions): import("@sw
117
131
  readonly payload: {
118
132
  readonly effectId: string;
119
133
  readonly error: string;
134
+ readonly nonRetryable?: boolean | undefined;
135
+ readonly retryAfterMs?: number | undefined;
120
136
  };
121
137
  }) | (Omit<import("@swirls/looms/core").EventInput, "payload" | "type"> & {
122
138
  readonly type: "runtime.effect.heartbeat";
@@ -125,6 +141,7 @@ export declare function evaluator(options?: EvaluatorModuleOptions): import("@sw
125
141
  readonly attempt: number;
126
142
  readonly heartbeatAt: number;
127
143
  readonly deadlineAt: number | null;
144
+ readonly details?: import("effect/Schema").Json | undefined;
128
145
  };
129
146
  }) | (Omit<import("@swirls/looms/core").EventInput, "payload" | "type"> & {
130
147
  readonly type: "runtime.effect.queued";
@@ -177,6 +194,16 @@ export declare function evaluator(options?: EvaluatorModuleOptions): import("@sw
177
194
  readonly sourceRunId: string;
178
195
  readonly sourceSeq: number;
179
196
  };
197
+ }) | (Omit<import("@swirls/looms/core").EventInput, "payload" | "type"> & {
198
+ readonly type: "runtime.run.launched";
199
+ readonly payload: {
200
+ readonly runId: string;
201
+ readonly kind: string;
202
+ readonly definitionName: string;
203
+ readonly definitionVersion: string;
204
+ readonly effectId: string;
205
+ readonly close: "terminate" | "wait";
206
+ };
180
207
  }) | (Omit<import("@swirls/looms/core").EventInput, "payload" | "type"> & {
181
208
  readonly type: "runtime.run.started";
182
209
  readonly payload: {
@@ -186,6 +213,20 @@ export declare function evaluator(options?: EvaluatorModuleOptions): import("@sw
186
213
  readonly definitionVersion: string;
187
214
  readonly input: import("effect/Schema").Json;
188
215
  readonly requestedThreadId?: string | null | undefined;
216
+ readonly launchedBy?: {
217
+ readonly runId: string;
218
+ readonly threadId: string;
219
+ readonly effectId: string;
220
+ readonly causationId: string;
221
+ readonly causationSeq: number;
222
+ } | undefined;
223
+ readonly attributes?: {
224
+ readonly [x: string]: string;
225
+ } | undefined;
226
+ readonly trace?: {
227
+ readonly traceparent: string;
228
+ readonly tracestate?: string | undefined;
229
+ } | undefined;
189
230
  };
190
231
  }) | (Omit<import("@swirls/looms/core").EventInput, "payload" | "type"> & {
191
232
  readonly type: "runtime.signal.received";
@@ -274,6 +315,7 @@ export declare function evaluator(options?: EvaluatorModuleOptions): import("@sw
274
315
  }, {
275
316
  evaluator: import("@swirls/looms/core").ThreadDefinition<{
276
317
  readonly definitionName?: string | undefined;
318
+ readonly definitionVersion?: string | undefined;
277
319
  readonly input: import("effect/Schema").Json;
278
320
  readonly evaluationId: string;
279
321
  readonly dispatched: boolean;
@@ -334,6 +376,7 @@ export declare function evaluator(options?: EvaluatorModuleOptions): import("@sw
334
376
  evaluate: import("@swirls/looms/core").EffectDefinition<{
335
377
  readonly evaluationId: string;
336
378
  readonly definitionName?: string | undefined;
379
+ readonly definitionVersion?: string | undefined;
337
380
  readonly input?: import("effect/Schema").Json | undefined;
338
381
  }, import("./definitions-store").EvaluatorDefinitionsTag | EvaluatorTag, (Omit<import("@swirls/looms/core").EventInput, "payload" | "type"> & {
339
382
  readonly type: "evaluator.evaluated";
@@ -368,6 +411,19 @@ export declare function evaluator(options?: EvaluatorModuleOptions): import("@sw
368
411
  readonly state: string;
369
412
  readonly model?: string | undefined;
370
413
  };
414
+ }) | (Omit<import("@swirls/looms/core").EventInput, "payload" | "type"> & {
415
+ readonly type: "runtime.child.close.requested";
416
+ readonly payload: {
417
+ readonly policy: "terminate" | "wait";
418
+ };
419
+ }) | (Omit<import("@swirls/looms/core").EventInput, "payload" | "type"> & {
420
+ readonly type: "runtime.child.settled";
421
+ readonly payload: {
422
+ readonly runId: string;
423
+ readonly status: "cancelled" | "completed" | "failed";
424
+ readonly output: import("effect/Schema").Json;
425
+ readonly error: string | null;
426
+ };
371
427
  }) | (Omit<import("@swirls/looms/core").EventInput, "payload" | "type"> & {
372
428
  readonly type: "runtime.effect.ambiguous";
373
429
  readonly payload: {
@@ -412,6 +468,8 @@ export declare function evaluator(options?: EvaluatorModuleOptions): import("@sw
412
468
  readonly payload: {
413
469
  readonly effectId: string;
414
470
  readonly error: string;
471
+ readonly nonRetryable?: boolean | undefined;
472
+ readonly retryAfterMs?: number | undefined;
415
473
  };
416
474
  }) | (Omit<import("@swirls/looms/core").EventInput, "payload" | "type"> & {
417
475
  readonly type: "runtime.effect.heartbeat";
@@ -420,6 +478,7 @@ export declare function evaluator(options?: EvaluatorModuleOptions): import("@sw
420
478
  readonly attempt: number;
421
479
  readonly heartbeatAt: number;
422
480
  readonly deadlineAt: number | null;
481
+ readonly details?: import("effect/Schema").Json | undefined;
423
482
  };
424
483
  }) | (Omit<import("@swirls/looms/core").EventInput, "payload" | "type"> & {
425
484
  readonly type: "runtime.effect.queued";
@@ -472,6 +531,16 @@ export declare function evaluator(options?: EvaluatorModuleOptions): import("@sw
472
531
  readonly sourceRunId: string;
473
532
  readonly sourceSeq: number;
474
533
  };
534
+ }) | (Omit<import("@swirls/looms/core").EventInput, "payload" | "type"> & {
535
+ readonly type: "runtime.run.launched";
536
+ readonly payload: {
537
+ readonly runId: string;
538
+ readonly kind: string;
539
+ readonly definitionName: string;
540
+ readonly definitionVersion: string;
541
+ readonly effectId: string;
542
+ readonly close: "terminate" | "wait";
543
+ };
475
544
  }) | (Omit<import("@swirls/looms/core").EventInput, "payload" | "type"> & {
476
545
  readonly type: "runtime.run.started";
477
546
  readonly payload: {
@@ -481,6 +550,20 @@ export declare function evaluator(options?: EvaluatorModuleOptions): import("@sw
481
550
  readonly definitionVersion: string;
482
551
  readonly input: import("effect/Schema").Json;
483
552
  readonly requestedThreadId?: string | null | undefined;
553
+ readonly launchedBy?: {
554
+ readonly runId: string;
555
+ readonly threadId: string;
556
+ readonly effectId: string;
557
+ readonly causationId: string;
558
+ readonly causationSeq: number;
559
+ } | undefined;
560
+ readonly attributes?: {
561
+ readonly [x: string]: string;
562
+ } | undefined;
563
+ readonly trace?: {
564
+ readonly traceparent: string;
565
+ readonly tracestate?: string | undefined;
566
+ } | undefined;
484
567
  };
485
568
  }) | (Omit<import("@swirls/looms/core").EventInput, "payload" | "type"> & {
486
569
  readonly type: "runtime.signal.received";
@@ -570,6 +653,7 @@ export declare function evaluator(options?: EvaluatorModuleOptions): import("@sw
570
653
  readonly threads: {
571
654
  evaluator: import("@swirls/looms/core").ThreadDefinition<{
572
655
  readonly definitionName?: string | undefined;
656
+ readonly definitionVersion?: string | undefined;
573
657
  readonly input: import("effect/Schema").Json;
574
658
  readonly evaluationId: string;
575
659
  readonly dispatched: boolean;
@@ -1,5 +1,5 @@
1
1
  import { Layer } from 'effect';
2
- import { defineModule } from '@swirls/looms/core';
2
+ import { defineModule, makeDefinitionStore } from '@swirls/looms/core';
3
3
  import { EvaluatorDefinitionsLive } from './definitions-store.js';
4
4
  import { evaluateEffect } from './effects.js';
5
5
  import { evaluatorFromAdapter, EvaluatorTag, StubEvaluatorLive, } from './evaluator.js';
@@ -7,12 +7,13 @@ import { evaluations } from './projections.js';
7
7
  import { evaluatorModule } from './scope.js';
8
8
  import { evaluatorThread } from './threads.js';
9
9
  export function evaluator(options = {}) {
10
- const definitions = options.definitions ?? [];
10
+ const listed = options.definitions ?? [];
11
+ const definitions = makeDefinitionStore('evaluator', listed);
11
12
  const evaluatorLayer = options.evaluator
12
13
  ? Layer.succeed(EvaluatorTag, evaluatorFromAdapter(options.evaluator))
13
14
  : StubEvaluatorLive(options.evaluatorPolicy);
14
15
  return defineModule(evaluatorModule, () => ({
15
- definitions,
16
+ definitions: listed,
16
17
  threads: { evaluator: evaluatorThread },
17
18
  effects: {
18
19
  evaluate: evaluateEffect,
@@ -21,5 +22,8 @@ export function evaluator(options = {}) {
21
22
  evaluations,
22
23
  },
23
24
  services: () => Layer.merge(evaluatorLayer, EvaluatorDefinitionsLive(definitions)),
25
+ bindHost(host) {
26
+ definitions.useResolver(host.definitionResolver);
27
+ },
24
28
  }));
25
29
  }
@@ -1,6 +1,7 @@
1
1
  import { Schema } from 'effect';
2
2
  export declare const EvaluatorThreadStateSchema: Schema.Struct<{
3
3
  readonly definitionName: Schema.optional<Schema.String>;
4
+ readonly definitionVersion: Schema.optional<Schema.String>;
4
5
  readonly input: Schema.Codec<Schema.Json, Schema.Json, never, never>;
5
6
  readonly evaluationId: Schema.String;
6
7
  readonly dispatched: Schema.Boolean;
@@ -31,6 +32,7 @@ export declare const EvaluatorThreadStateSchema: Schema.Struct<{
31
32
  export type EvaluatorThreadState = Schema.Schema.Type<typeof EvaluatorThreadStateSchema>;
32
33
  export declare const evaluatorThread: import("@swirls/looms/core").ThreadDefinition<{
33
34
  readonly definitionName?: string | undefined;
35
+ readonly definitionVersion?: string | undefined;
34
36
  readonly input: Schema.Json;
35
37
  readonly evaluationId: string;
36
38
  readonly dispatched: boolean;
@@ -5,6 +5,7 @@ import { EvaluatorEvaluatedPayloadSchema } from './events.js';
5
5
  import { evaluatorModule } from './scope.js';
6
6
  export const EvaluatorThreadStateSchema = Schema.Struct({
7
7
  definitionName: Schema.optional(Schema.String),
8
+ definitionVersion: Schema.optional(Schema.String),
8
9
  input: Schema.Json,
9
10
  evaluationId: Schema.String,
10
11
  dispatched: Schema.Boolean,
@@ -26,6 +27,7 @@ export const evaluatorThread = evaluatorModule.thread({
26
27
  shape: EvaluatorThreadStateSchema,
27
28
  initialState: (ctx) => ({
28
29
  definitionName: ctx.definitionName,
30
+ definitionVersion: ctx.definitionVersion,
29
31
  input: ctx.input,
30
32
  evaluationId: `eval_${ctx.threadId}`,
31
33
  dispatched: false,
@@ -42,6 +44,7 @@ export const evaluatorThread = evaluatorModule.thread({
42
44
  return {
43
45
  ...state,
44
46
  definitionName: event.payload.definitionName || state.definitionName,
47
+ definitionVersion: event.payload.definitionVersion || state.definitionVersion,
45
48
  input: event.payload.input ?? state.input,
46
49
  evaluationId: `eval_${ctx.threadId}`,
47
50
  };
@@ -105,6 +108,7 @@ export const evaluatorThread = evaluatorModule.thread({
105
108
  effects.push(invoke(evaluateEffect, {
106
109
  evaluationId: state.evaluationId,
107
110
  definitionName: state.definitionName,
111
+ definitionVersion: state.definitionVersion,
108
112
  input: state.input,
109
113
  }, `evaluate_${state.evaluationId}`));
110
114
  }
@@ -0,0 +1,87 @@
1
+ import { type Sql } from 'postgres';
2
+ import { type EventEnvelope, type EventOrigin, type EventStore, type JsonValue, type RunStatus } from '@swirls/looms/core';
3
+ import type { Projector } from './projector';
4
+ export declare const POSTGRES_EVENT_LOG_SCHEMA_SQL: string;
5
+ export interface EventLogEntry {
6
+ readonly runId: string;
7
+ readonly seq: number;
8
+ readonly eventId: string;
9
+ readonly ts: number;
10
+ readonly type: string;
11
+ readonly payload: JsonValue;
12
+ readonly threadId: string | null;
13
+ readonly parentThreadId: string | null;
14
+ readonly causationId: string | null;
15
+ readonly correlationId: string | null;
16
+ readonly effectId: string | null;
17
+ readonly origin: EventOrigin;
18
+ readonly idempotencyKey: string | null;
19
+ }
20
+ export interface RunLogRow {
21
+ readonly runId: string;
22
+ readonly status: RunStatus;
23
+ readonly kind: string | null;
24
+ readonly definitionName: string | null;
25
+ readonly definitionVersion: string | null;
26
+ readonly rootThreadId: string | null;
27
+ readonly parentRunId: string | null;
28
+ readonly launchedByEffectId: string | null;
29
+ readonly correlationId: string | null;
30
+ readonly attributes: {
31
+ readonly [key: string]: string;
32
+ };
33
+ readonly tenant: string | null;
34
+ readonly project: string | null;
35
+ readonly org: string | null;
36
+ readonly startedAt: number | null;
37
+ readonly updatedAt: number;
38
+ readonly completedAt: number | null;
39
+ }
40
+ export type EventLogOp = {
41
+ readonly type: 'insert';
42
+ readonly entry: EventLogEntry;
43
+ } | {
44
+ readonly type: 'start';
45
+ readonly runId: string;
46
+ readonly kind: string | null;
47
+ readonly definitionName: string | null;
48
+ readonly definitionVersion: string | null;
49
+ readonly rootThreadId: string | null;
50
+ readonly parentRunId: string | null;
51
+ readonly launchedByEffectId: string | null;
52
+ readonly correlationId: string | null;
53
+ readonly attributes: {
54
+ readonly [key: string]: string;
55
+ };
56
+ readonly tenant: string | null;
57
+ readonly project: string | null;
58
+ readonly org: string | null;
59
+ readonly at: number;
60
+ } | {
61
+ readonly type: 'finish';
62
+ readonly runId: string;
63
+ readonly status: 'completed' | 'failed' | 'cancelled';
64
+ readonly at: number;
65
+ } | {
66
+ readonly type: 'touch';
67
+ readonly runId: string;
68
+ readonly at: number;
69
+ };
70
+ export interface EventLogProjector extends Projector {
71
+ /** Replays the source log into this sink. Safe to repeat; do not run it beside live delivery. */
72
+ rebuild(source: EventStore, options?: {
73
+ readonly runId?: string;
74
+ readonly batchSize?: number;
75
+ }): Promise<number>;
76
+ }
77
+ export interface MemoryEventLog extends EventLogProjector {
78
+ events(runId: string): readonly EventLogEntry[];
79
+ run(runId: string): RunLogRow | null;
80
+ }
81
+ export declare function eventLogOps(event: EventEnvelope): readonly EventLogOp[];
82
+ export declare function memoryEventLog(): MemoryEventLog;
83
+ export declare function postgresEventLog(options: {
84
+ url: string;
85
+ } | {
86
+ sql: Sql;
87
+ }): EventLogProjector;