@fluidgrids/workflows 2026.1027.1 → 2026.1028.2

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 (166) hide show
  1. package/README.md +144 -13
  2. package/dist/activation-BBh1p82z.d.cts +57 -0
  3. package/dist/activation-DnhG7SmF.d.ts +57 -0
  4. package/dist/assemble-BLqQ8lSu.d.cts +39 -0
  5. package/dist/assemble-DWgaXHd-.d.ts +39 -0
  6. package/dist/chunk-2J6TF7YI.cjs +86 -0
  7. package/dist/chunk-4LYSEANA.js +199 -0
  8. package/dist/chunk-623FVQSN.cjs +251 -0
  9. package/dist/{chunk-W32BSO3M.js → chunk-6FSHT5IL.js} +2 -2
  10. package/dist/{chunk-E3APHA6O.cjs → chunk-7AAZGVKD.js} +1 -64
  11. package/dist/chunk-ABFZWYHT.js +612 -0
  12. package/dist/{chunk-6U446SKY.js → chunk-BD7ZPG53.js} +2 -2
  13. package/dist/chunk-BO6OVILK.js +79 -0
  14. package/dist/chunk-C5OLWZ42.js +245 -0
  15. package/dist/{chunk-OSPTJCDI.cjs → chunk-CPDK3K5N.cjs} +6 -6
  16. package/dist/chunk-DHTLALBL.cjs +80 -0
  17. package/dist/chunk-DJYMDLV5.js +227 -0
  18. package/dist/{chunk-IHKXLG6I.js → chunk-E2VK7J2C.js} +1 -1
  19. package/dist/{chunk-3M34AUIY.cjs → chunk-FEW3JBYA.cjs} +3 -3
  20. package/dist/chunk-FMSW2HDF.cjs +267 -0
  21. package/dist/chunk-FR7KYWRO.cjs +41 -0
  22. package/dist/{chunk-7YR7DI7B.cjs → chunk-GBQ33SIZ.cjs} +44 -44
  23. package/dist/{chunk-6AIAC2FP.cjs → chunk-GVTZMA5C.cjs} +4 -4
  24. package/dist/{chunk-EEAIM35V.js → chunk-HWJZVOG7.js} +64 -23
  25. package/dist/chunk-I5LR3D2K.js +869 -0
  26. package/dist/chunk-IISBRUWJ.js +13 -0
  27. package/dist/chunk-JD2VQIDZ.cjs +15 -0
  28. package/dist/{chunk-UB2BHU2M.js → chunk-JZ4TOOLN.js} +1 -1
  29. package/dist/chunk-L24YIZY7.cjs +207 -0
  30. package/dist/chunk-LNUQE6D6.js +39 -0
  31. package/dist/chunk-M4BBAERY.cjs +1635 -0
  32. package/dist/chunk-N23SKIG4.js +73 -0
  33. package/dist/{chunk-TWOYB4Y7.cjs → chunk-NEIUQASE.cjs} +13 -13
  34. package/dist/chunk-P6TA5EZT.cjs +634 -0
  35. package/dist/chunk-PMCM2OH4.js +46 -0
  36. package/dist/chunk-PZCVF76Q.cjs +868 -0
  37. package/dist/{chunk-6BEW4QD6.js → chunk-QAN5MZEM.js} +1 -1
  38. package/dist/{chunk-CSYBNN3V.cjs → chunk-QKZL3ONM.cjs} +2 -2
  39. package/dist/chunk-QQ6ULXHI.cjs +885 -0
  40. package/dist/chunk-SAENRNBJ.cjs +52 -0
  41. package/dist/{chunk-TQF7MYEN.cjs → chunk-SAOBPYYJ.cjs} +134 -96
  42. package/dist/{chunk-XBIID5DY.js → chunk-SMCANK3F.js} +5 -4
  43. package/dist/{chunk-UWQWD7BP.cjs → chunk-SX2PNKKT.cjs} +18 -17
  44. package/dist/{chunk-UJNHTS6D.js → chunk-TBDXTV22.cjs} +8 -45
  45. package/dist/chunk-UK3WM7YZ.cjs +75 -0
  46. package/dist/chunk-VOKMAAJP.js +848 -0
  47. package/dist/chunk-VRHHBPT6.js +1622 -0
  48. package/dist/{chunk-5AW745OG.js → chunk-XHXIDVEC.js} +1 -1
  49. package/dist/chunk-XKJA7KX3.js +72 -0
  50. package/dist/chunk-Z2Y65YOY.cjs +7 -0
  51. package/dist/codegen/index.cjs +9 -7
  52. package/dist/codegen/index.d.cts +2 -2
  53. package/dist/codegen/index.d.ts +2 -2
  54. package/dist/codegen/index.js +6 -5
  55. package/dist/file-BOoHZgoQ.d.cts +1557 -0
  56. package/dist/file-yuPCFU5b.d.ts +1557 -0
  57. package/dist/history/index.cjs +287 -0
  58. package/dist/history/index.d.cts +157 -0
  59. package/dist/history/index.d.ts +157 -0
  60. package/dist/history/index.js +5 -0
  61. package/dist/index.cjs +134 -36
  62. package/dist/index.d.cts +137 -9
  63. package/dist/index.d.ts +137 -9
  64. package/dist/index.js +8 -3
  65. package/dist/ir/index.cjs +152 -158
  66. package/dist/ir/index.d.cts +14 -4
  67. package/dist/ir/index.d.ts +14 -4
  68. package/dist/ir/index.js +41 -50
  69. package/dist/lower-BzmUz0sq.d.cts +129 -0
  70. package/dist/lower-_-iT4HYs.d.ts +129 -0
  71. package/dist/lower-types-DQNBfWQn.d.cts +37 -0
  72. package/dist/lower-types-DQNBfWQn.d.ts +37 -0
  73. package/dist/{manifest-Duf-gHdO.d.cts → manifest-0OLw0i7k.d.cts} +1 -1
  74. package/dist/{manifest-Bp9ZJlav.d.ts → manifest-C8N6HDYl.d.ts} +1 -1
  75. package/dist/node-evaluator-4MSDKWOG.cjs +22 -0
  76. package/dist/node-evaluator-SX4LEYQC.js +12 -0
  77. package/dist/quickjs/index.cjs +236 -12
  78. package/dist/quickjs/index.d.cts +46 -5
  79. package/dist/quickjs/index.d.ts +46 -5
  80. package/dist/quickjs/index.js +230 -9
  81. package/dist/roundtrip/index.cjs +333 -131
  82. package/dist/roundtrip/index.d.cts +39 -7
  83. package/dist/roundtrip/index.d.ts +39 -7
  84. package/dist/roundtrip/index.js +185 -13
  85. package/dist/runtime/index.cjs +90 -0
  86. package/dist/runtime/index.d.cts +297 -0
  87. package/dist/runtime/index.d.ts +297 -0
  88. package/dist/runtime/index.js +8 -0
  89. package/dist/testing/index.cjs +1057 -0
  90. package/dist/testing/index.d.cts +305 -0
  91. package/dist/testing/index.d.ts +305 -0
  92. package/dist/testing/index.js +1037 -0
  93. package/dist/{types-Dr2Fn1Ax.d.ts → types-BGoPzgcl.d.cts} +1 -1
  94. package/dist/{types-Dr2Fn1Ax.d.cts → types-BGoPzgcl.d.ts} +1 -1
  95. package/dist/types-CpBBjaGX.d.cts +380 -0
  96. package/dist/types-DV-HX_Gt.d.ts +380 -0
  97. package/dist/{assemble-CrpUyd_3.d.ts → workflow-Bpr3vnA_.d.ts} +40 -160
  98. package/dist/workflow-C2a05WUJ.d.ts +444 -0
  99. package/dist/{assemble-DEf3znGD.d.cts → workflow-FXUkpIBc.d.cts} +40 -160
  100. package/dist/workflow-J-yYixny.d.cts +444 -0
  101. package/fixtures/README.md +128 -0
  102. package/fixtures/histories/activity-failure-fails-run.history.json +163 -0
  103. package/fixtures/histories/activity-retry-then-success.history.json +147 -0
  104. package/fixtures/histories/cancel-activity-abandon.history.json +126 -0
  105. package/fixtures/histories/cancel-activity-compensate.history.json +307 -0
  106. package/fixtures/histories/cancel-concurrent-non-cancellable.history.json +234 -0
  107. package/fixtures/histories/cancel-concurrent-scope-timeout.history.json +184 -0
  108. package/fixtures/histories/cancel-condition-after-cancel.history.json +200 -0
  109. package/fixtures/histories/cancel-during-timer.history.json +123 -0
  110. package/fixtures/histories/cancel-saga-compensations.history.json +325 -0
  111. package/fixtures/histories/cancel-scope-timeout.history.json +148 -0
  112. package/fixtures/histories/child-abandon-outlives-parent.history.json +191 -0
  113. package/fixtures/histories/child-cancel-default.history.json +234 -0
  114. package/fixtures/histories/child-cancel-request.history.json +206 -0
  115. package/fixtures/histories/child-durable-child-side.history.json +124 -0
  116. package/fixtures/histories/child-durable-result.history.json +163 -0
  117. package/fixtures/histories/child-failure-caught.history.json +166 -0
  118. package/fixtures/histories/child-graph-by-key.history.json +138 -0
  119. package/fixtures/histories/child-terminated-by-parent-close.history.json +85 -0
  120. package/fixtures/histories/continue-as-new-first-run.history.json +146 -0
  121. package/fixtures/histories/continue-as-new-history-limit.history.json +489 -0
  122. package/fixtures/histories/continue-as-new-last-run.history.json +147 -0
  123. package/fixtures/histories/continue-as-new-suggested.history.json +352 -0
  124. package/fixtures/histories/details-and-context.history.json +176 -0
  125. package/fixtures/histories/deterministic-values.history.json +128 -0
  126. package/fixtures/histories/engine-builtins.history.json +172 -0
  127. package/fixtures/histories/gather-activities.history.json +291 -0
  128. package/fixtures/histories/gather-all-settled.history.json +219 -0
  129. package/fixtures/histories/gather-mixed.history.json +281 -0
  130. package/fixtures/histories/input-during-running-task.history.json +111 -0
  131. package/fixtures/histories/nondeterminism-reordered.history.json +218 -0
  132. package/fixtures/histories/patched-deprecated.history.json +271 -0
  133. package/fixtures/histories/patched-new-run.history.json +270 -0
  134. package/fixtures/histories/patched-old-history.history.json +190 -0
  135. package/fixtures/histories/race-activity-wins.history.json +152 -0
  136. package/fixtures/histories/race-signal-beats-child.history.json +161 -0
  137. package/fixtures/histories/race-timeout-wins.history.json +118 -0
  138. package/fixtures/histories/side-effect-recorded.history.json +153 -0
  139. package/fixtures/histories/signal-buffered-at-start.history.json +157 -0
  140. package/fixtures/histories/signal-default-handler.history.json +187 -0
  141. package/fixtures/histories/signal-handler.history.json +191 -0
  142. package/fixtures/histories/signal-parent-child-side.history.json +132 -0
  143. package/fixtures/histories/signal-parent.history.json +202 -0
  144. package/fixtures/histories/signal-run-delivered.history.json +128 -0
  145. package/fixtures/histories/signal-run-undelivered.history.json +134 -0
  146. package/fixtures/histories/signal-wait.history.json +111 -0
  147. package/fixtures/histories/task-failure-code-error.history.json +137 -0
  148. package/fixtures/histories/task-failure-then-transient-attempt.history.json +140 -0
  149. package/fixtures/histories/timer-condition-met.history.json +201 -0
  150. package/fixtures/histories/timer-condition-timeout.history.json +118 -0
  151. package/fixtures/histories/timer-sleep-once.history.json +118 -0
  152. package/fixtures/histories/timer-sleep-sequence.history.json +210 -0
  153. package/fixtures/histories/update-accepted-completed.history.json +149 -0
  154. package/fixtures/histories/update-with-start-rejected-validation.history.json +91 -0
  155. package/package.json +44 -5
  156. package/schema/history-file.schema.json +2544 -0
  157. package/schema/ir-v2.schema.json +16 -0
  158. package/schema/run-event.schema.json +2374 -0
  159. package/schema/workflow-command.schema.json +1095 -0
  160. package/schema/workflow-task.schema.json +3560 -0
  161. package/dist/chunk-MBBKGD7K.js +0 -440
  162. package/dist/chunk-Y7NWR3WH.cjs +0 -450
  163. package/dist/lower-CXggJTIo.d.ts +0 -67
  164. package/dist/lower-DAzvsJCo.d.cts +0 -67
  165. package/dist/node-evaluator-CH3XCJND.cjs +0 -17
  166. package/dist/node-evaluator-TULXA3WE.js +0 -8
@@ -1,6 +1,8 @@
1
1
  import { autoLayout } from './chunk-5LUIDMF4.js';
2
- import { makeRef, isPredicate, conditionTreeOf, BuilderError, refModelOf } from './chunk-UB2BHU2M.js';
3
- import { isRecord, setOwn, cloneJson, ownValue, formatRefTemplate } from './chunk-UJNHTS6D.js';
2
+ import { makeRef, isPredicate, conditionTreeOf, BuilderError, refModelOf } from './chunk-JZ4TOOLN.js';
3
+ import { formatRefTemplate } from './chunk-7AAZGVKD.js';
4
+ import { isRecord, setOwn, cloneJson, ownValue } from './chunk-PMCM2OH4.js';
5
+ import { isDurableWorkflow, SDK_VERSION } from './chunk-N23SKIG4.js';
4
6
 
5
7
  // src/builder/descriptors.ts
6
8
  function op(nodeType, version, operation) {
@@ -201,6 +203,7 @@ var WorkflowBuilder = class {
201
203
  /** Edges whose id is the default, as indices into `edges`, with the unsuffixed default id. */
202
204
  defaultIds = [];
203
205
  edgeOrder;
206
+ durableRefs = [];
204
207
  /** A reference to a node by id, for nodes declared later in the source. */
205
208
  ref(id) {
206
209
  return nodeRef(id);
@@ -274,10 +277,21 @@ var WorkflowBuilder = class {
274
277
  }
275
278
  /** `internal:wait-for-signal` (IR v2). */
276
279
  waitForSignal(options) {
277
- const { name, limit, ...rest } = options;
280
+ const { name, limit, until, consume, ...rest } = options;
281
+ if (limit !== void 0 && until !== void 0)
282
+ throw new BuilderError("wf.waitForSignal takes limit or until, not both");
283
+ if (consume !== void 0 && consume !== "first" && consume !== "all")
284
+ throw new BuilderError(`consume must be "first" or "all" (got "${String(consume)}")`);
278
285
  const sugar = {};
279
286
  if (name !== void 0) sugar["signalName"] = name;
287
+ if (consume !== void 0) sugar["consume"] = consume;
280
288
  if (limit !== void 0) sugar["limitWait"] = limitWait(limit);
289
+ if (until !== void 0) {
290
+ const deadline = until instanceof Date ? until.toISOString() : until;
291
+ if (typeof deadline !== "string" || Number.isNaN(Date.parse(deadline)))
292
+ throw new BuilderError(`until "${String(until)}" is not an ISO 8601 date-time`);
293
+ sugar["limitWaitUntil"] = deadline;
294
+ }
281
295
  const ref = this.add(internalNodes.waitForSignal, rest, sugar);
282
296
  return { ...ref, received: ref.handle("received"), timedOut: ref.handle("timedOut") };
283
297
  }
@@ -300,6 +314,45 @@ var WorkflowBuilder = class {
300
314
  if (input !== void 0) sugar["inputMapping"] = input;
301
315
  return this.add(internalNodes.subworkflow, rest, sugar);
302
316
  }
317
+ /**
318
+ * `internal:code-workflow`: run a tier-2 function of this project as a
319
+ * durable child run. `fn` is a `workflow()` value (its export name is
320
+ * resolved when the bundle is collected) or an export name.
321
+ */
322
+ codeWorkflow(fn, options = {}) {
323
+ const {
324
+ input,
325
+ taskQueue,
326
+ waitForCompletion,
327
+ timeoutSeconds,
328
+ failOnError,
329
+ parentClosePolicy,
330
+ ...rest
331
+ } = options;
332
+ let workflowFn;
333
+ let definition;
334
+ if (typeof fn === "string" && fn !== "") workflowFn = fn;
335
+ else if (isDurableWorkflow(fn)) {
336
+ definition = fn;
337
+ workflowFn = fn.name;
338
+ } else throw new BuilderError("wf.codeWorkflow needs a workflow() function or its export name");
339
+ if (parentClosePolicy !== void 0 && !["TERMINATE", "ABANDON", "REQUEST_CANCEL"].includes(parentClosePolicy))
340
+ throw new BuilderError(`parentClosePolicy "${String(parentClosePolicy)}" is not a policy`);
341
+ const sugar = { workflowFn };
342
+ if (input !== void 0) sugar["inputMapping"] = input;
343
+ if (taskQueue !== void 0) sugar["taskQueue"] = taskQueue;
344
+ if (waitForCompletion !== void 0) sugar["waitForCompletion"] = waitForCompletion;
345
+ if (timeoutSeconds !== void 0) sugar["timeout"] = timeoutSeconds;
346
+ if (failOnError !== void 0) sugar["failOnError"] = failOnError;
347
+ if (parentClosePolicy !== void 0) sugar["parentClosePolicy"] = parentClosePolicy;
348
+ const ref = this.add(internalNodes.codeWorkflow, rest, sugar);
349
+ if (definition) this.durableRefs.push({ nodeId: ref.id, definition });
350
+ return ref;
351
+ }
352
+ /** The `wf.codeWorkflow` calls that named a function. */
353
+ durableReferences() {
354
+ return [...this.durableRefs];
355
+ }
303
356
  /** `internal:validate`. */
304
357
  validate(options) {
305
358
  const ref = this.add(internalNodes.validate, options, {});
@@ -580,12 +633,15 @@ function defineWorkflow(options, build) {
580
633
  if (options.extra !== void 0)
581
634
  deepMerge(document, lowerObject(options.extra, "extra"), "workflow");
582
635
  const recording = builder.finish(options.key, document);
583
- return { __fluidgrids: WORKFLOW_MARKER, key: options.key, recording };
636
+ const durableRefs = builder.durableReferences();
637
+ return {
638
+ __fluidgrids: WORKFLOW_MARKER,
639
+ key: options.key,
640
+ recording,
641
+ ...durableRefs.length > 0 ? { durableRefs } : {}
642
+ };
584
643
  }
585
644
 
586
- // src/generated/version.ts
587
- var SDK_VERSION = "2026.1027.1";
588
-
589
645
  // src/builder/assemble.ts
590
646
  var LAYOUT_FORMAT = "fluidgrids.layout";
591
647
  var LAYOUT_FORMAT_VERSION = 1;
@@ -730,19 +786,4 @@ function toIR(workflow, options = {}) {
730
786
  return assembleRecording(workflow.recording, options);
731
787
  }
732
788
 
733
- // src/builder/collect.ts
734
- var COLLECTION_FORMAT = "fluidgrids.tier1-collection";
735
- function collectWorkflowExports(modules) {
736
- const workflows = [];
737
- for (const [module, namespace] of modules) {
738
- for (const exportName of Object.keys(namespace).sort()) {
739
- const value = namespace[exportName];
740
- if (isTier1Workflow(value))
741
- workflows.push({ module, exportName, recording: value.recording });
742
- }
743
- }
744
- const collection = { format: COLLECTION_FORMAT, workflows };
745
- return JSON.stringify(collection);
746
- }
747
-
748
- export { COLLECTION_FORMAT, LAYOUT_FORMAT, LAYOUT_FORMAT_VERSION, RECORDING_FORMAT, RECORDING_FORMAT_VERSION, SDK_VERSION, UnresolvedConnectionsError, WorkflowBuilder, assembleRecording, collectWorkflowExports, defaultEdgeId, defineWorkflow, edge, internalNodes, isOperation, isTier1Workflow, nodes, op, parseLayoutSidecar, toIR, trigger, triggers };
789
+ export { LAYOUT_FORMAT, LAYOUT_FORMAT_VERSION, RECORDING_FORMAT, RECORDING_FORMAT_VERSION, UnresolvedConnectionsError, WorkflowBuilder, assembleRecording, defaultEdgeId, defineWorkflow, edge, internalNodes, isOperation, isTier1Workflow, nodes, op, parseLayoutSidecar, toIR, trigger, triggers };