@fluidgrids/workflows 2026.1029.1 → 2026.1030.1

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 (118) hide show
  1. package/README.md +112 -4
  2. package/dist/{activation-CESehfYi.d.cts → activation-DqUfpHzk.d.cts} +1 -1
  3. package/dist/{activation-BnVQMv9y.d.ts → activation-xpx1oWuo.d.ts} +1 -1
  4. package/dist/{chunk-MJ5TGYVG.js → chunk-2D3MYIIF.js} +969 -153
  5. package/dist/{chunk-2B37XAFQ.cjs → chunk-3U2NU7YC.cjs} +24 -11
  6. package/dist/{chunk-NEIUQASE.cjs → chunk-4QKB4ARC.cjs} +3 -3
  7. package/dist/{chunk-GBQ33SIZ.cjs → chunk-54FLQNUM.cjs} +12 -1
  8. package/dist/{chunk-2DDULZFM.js → chunk-5HIVIV53.js} +86 -75
  9. package/dist/chunk-5MFVJM76.js +1222 -0
  10. package/dist/{chunk-EWYADREB.cjs → chunk-672KMMBK.cjs} +2 -2
  11. package/dist/{chunk-KXJDRQ6G.js → chunk-6A2FGSUS.js} +22 -2
  12. package/dist/{chunk-OIX4O6UR.js → chunk-6OLN6BMB.js} +16 -3
  13. package/dist/{chunk-6FSHT5IL.js → chunk-7EZIANC7.js} +1 -1
  14. package/dist/chunk-A5SXCA62.cjs +93 -0
  15. package/dist/chunk-AC6ZEXVR.js +85 -0
  16. package/dist/{chunk-FWBRQWRX.js → chunk-AE5Q6ZAJ.js} +167 -10
  17. package/dist/{chunk-7ILGCUI6.js → chunk-C4F5KJTI.js} +142 -3
  18. package/dist/{chunk-WXXNCHUY.js → chunk-G5H32GIG.js} +1 -1
  19. package/dist/{chunk-OMY3CKUZ.cjs → chunk-GEQDGUGB.cjs} +1042 -226
  20. package/dist/{chunk-25BKWR2O.js → chunk-HCM7ZC7Q.js} +1 -1
  21. package/dist/{chunk-I47EENR4.cjs → chunk-HMZUGSMU.cjs} +673 -156
  22. package/dist/{chunk-NXFBVDOI.cjs → chunk-IQPXHQQQ.cjs} +8 -4
  23. package/dist/{chunk-RUQIMTN5.cjs → chunk-ISOIA7NV.cjs} +178 -15
  24. package/dist/chunk-JSC75O5C.cjs +167 -0
  25. package/dist/{chunk-BD7ZPG53.js → chunk-NWQ5WRLE.js} +10 -2
  26. package/dist/chunk-ODZ2IAR2.cjs +1247 -0
  27. package/dist/{chunk-FQSJI5NV.js → chunk-SR7TR5KX.js} +6 -2
  28. package/dist/{chunk-OKX3FYIM.cjs → chunk-TCTE7DX5.cjs} +3 -3
  29. package/dist/{chunk-3FIDHONL.cjs → chunk-TYF56RGB.cjs} +99 -80
  30. package/dist/{chunk-J3PYFGKA.cjs → chunk-VA4OFR72.cjs} +162 -4
  31. package/dist/chunk-VU5S5A7V.js +150 -0
  32. package/dist/{chunk-A36CCOWS.js → chunk-YEHR4NNE.js} +633 -128
  33. package/dist/{chunk-ELL2RBML.cjs → chunk-ZCGKGDCL.cjs} +23 -1
  34. package/dist/codegen/index.d.cts +2 -2
  35. package/dist/codegen/index.d.ts +2 -2
  36. package/dist/{collect-BTHjQaSp.d.ts → collect-6NIEufHd.d.ts} +20 -3
  37. package/dist/{collect-CSyOg5XC.d.cts → collect-CcTCKqx6.d.cts} +20 -3
  38. package/dist/{file-cgL9l9l8.d.cts → file-BxYpwjRQ.d.cts} +250 -15
  39. package/dist/{file-olQudcx5.d.ts → file-CFdPQJI9.d.ts} +250 -15
  40. package/dist/history/index.cjs +283 -106
  41. package/dist/history/index.d.cts +549 -10
  42. package/dist/history/index.d.ts +549 -10
  43. package/dist/history/index.js +5 -4
  44. package/dist/index.cjs +146 -53
  45. package/dist/index.d.cts +38 -14
  46. package/dist/index.d.ts +38 -14
  47. package/dist/index.js +6 -5
  48. package/dist/interceptors-CNcr2dlk.d.ts +159 -0
  49. package/dist/interceptors-CqkNZVfI.d.cts +159 -0
  50. package/dist/ir/index.cjs +339 -36
  51. package/dist/ir/index.d.cts +244 -8
  52. package/dist/ir/index.d.ts +244 -8
  53. package/dist/ir/index.js +306 -21
  54. package/dist/{lower-3S6PsqjJ.d.cts → lower-BtRfIW2A.d.cts} +23 -9
  55. package/dist/{lower-DmZpQ8hJ.d.ts → lower-CpsMFOFX.d.ts} +23 -9
  56. package/dist/{manifest-BJjrQt77.d.ts → manifest-D-I_twys.d.ts} +1 -1
  57. package/dist/{manifest-gRI2Q5Fj.d.cts → manifest-DahBQVM8.d.cts} +1 -1
  58. package/dist/node-evaluator-DGQDPSPI.cjs +24 -0
  59. package/dist/node-evaluator-LEEVD7H7.js +14 -0
  60. package/dist/payload-fields-BVRQn2yH.d.cts +122 -0
  61. package/dist/payload-fields-oOBWxDiG.d.ts +122 -0
  62. package/dist/quickjs/index.cjs +27 -27
  63. package/dist/quickjs/index.d.cts +6 -6
  64. package/dist/quickjs/index.d.ts +6 -6
  65. package/dist/quickjs/index.js +9 -9
  66. package/dist/roundtrip/index.cjs +72 -66
  67. package/dist/roundtrip/index.d.cts +25 -11
  68. package/dist/roundtrip/index.d.ts +25 -11
  69. package/dist/roundtrip/index.js +13 -11
  70. package/dist/runtime/index.cjs +19 -19
  71. package/dist/runtime/index.d.cts +139 -12
  72. package/dist/runtime/index.d.ts +139 -12
  73. package/dist/runtime/index.js +6 -6
  74. package/dist/testing/index.cjs +688 -121
  75. package/dist/testing/index.d.cts +174 -10
  76. package/dist/testing/index.d.ts +174 -10
  77. package/dist/testing/index.js +646 -82
  78. package/dist/{types-CnIOinoz.d.ts → types-Bv2i4cBX.d.cts} +126 -23
  79. package/dist/{types-CQKOhPTa.d.cts → types-DGx-b9eq.d.ts} +126 -23
  80. package/dist/{types-Bb2wRnJ5.d.cts → types-V7jEEUaL.d.cts} +1 -1
  81. package/dist/{types-Bb2wRnJ5.d.ts → types-V7jEEUaL.d.ts} +1 -1
  82. package/dist/{workflow-8uRU9rhL.d.ts → workflow-B18OeF7g.d.ts} +2 -2
  83. package/dist/{workflow-DWTPHFbt.d.ts → workflow-BGnv8SS6.d.ts} +261 -14
  84. package/dist/{workflow-CZOXUlQ5.d.cts → workflow-BJPFv3cp.d.cts} +2 -2
  85. package/dist/{workflow-O6e64ZcG.d.cts → workflow-DS32Gtws.d.cts} +261 -14
  86. package/fixtures/histories/activity-options-updated.history.json +159 -0
  87. package/fixtures/histories/activity-paused-unpaused.history.json +160 -0
  88. package/fixtures/histories/codec-opaque.history.json +229 -0
  89. package/fixtures/histories/dynamic-workflow.history.json +150 -0
  90. package/fixtures/histories/interceptor-headers.history.json +339 -0
  91. package/fixtures/histories/query-custom.history.json +213 -0
  92. package/fixtures/histories/query-default-handler.history.json +120 -0
  93. package/fixtures/histories/reset-forked-reapplied-signals.history.json +239 -0
  94. package/fixtures/histories/reset-reapplied-update-admitted.history.json +228 -0
  95. package/fixtures/histories/search-attributes-upserted.history.json +177 -0
  96. package/fixtures/histories/update-accepted-completed.history.json +45 -30
  97. package/fixtures/histories/update-default-handler.history.json +246 -0
  98. package/fixtures/histories/update-handler-awaits-activity.history.json +196 -0
  99. package/fixtures/histories/update-not-handled.history.json +138 -0
  100. package/fixtures/histories/update-rejected-no-event.history.json +190 -0
  101. package/fixtures/histories/update-with-start-admitted.history.json +150 -0
  102. package/fixtures/histories/user-activity-cancel.history.json +149 -0
  103. package/fixtures/histories/user-activity-retry.history.json +143 -0
  104. package/fixtures/histories/user-activity.history.json +149 -0
  105. package/package.json +1 -1
  106. package/schema/bridge-v2.schema.json +1062 -0
  107. package/schema/history-file.schema.json +255 -81
  108. package/schema/ir-v2.schema.json +246 -1
  109. package/schema/payload-fields.json +162 -0
  110. package/schema/run-event.schema.json +239 -80
  111. package/schema/workflow-command.schema.json +210 -84
  112. package/schema/workflow-task.schema.json +532 -167
  113. package/dist/chunk-6QPOJZT6.cjs +0 -1180
  114. package/dist/chunk-A2OHX3UQ.js +0 -1156
  115. package/dist/chunk-PWIUEWC3.js +0 -81
  116. package/dist/chunk-YHBVMOMK.cjs +0 -87
  117. package/dist/node-evaluator-SOADN23V.js +0 -14
  118. package/dist/node-evaluator-YGDEXK4U.cjs +0 -24
@@ -1,19 +1,19 @@
1
1
  'use strict';
2
2
 
3
- var chunkNXFBVDOI_cjs = require('./chunk-NXFBVDOI.cjs');
3
+ var chunkIQPXHQQQ_cjs = require('./chunk-IQPXHQQQ.cjs');
4
4
  var chunkGVTZMA5C_cjs = require('./chunk-GVTZMA5C.cjs');
5
5
  var chunkSAENRNBJ_cjs = require('./chunk-SAENRNBJ.cjs');
6
- var chunkJ3PYFGKA_cjs = require('./chunk-J3PYFGKA.cjs');
6
+ var chunkVA4OFR72_cjs = require('./chunk-VA4OFR72.cjs');
7
7
 
8
8
  // src/builder/collect.ts
9
9
  var COLLECTION_FORMAT = "fluidgrids.tier1-collection";
10
10
  function configDuration(value) {
11
- return typeof value === "string" ? value : chunkJ3PYFGKA_cjs.toMs(value) / 1e3;
11
+ return typeof value === "string" ? value : chunkVA4OFR72_cjs.toMs(value) / 1e3;
12
12
  }
13
13
  function runSettingsOf(options) {
14
14
  const config = {};
15
15
  const features = [];
16
- if (options.runTimeout !== void 0) config.timeout = chunkJ3PYFGKA_cjs.toMs(options.runTimeout) / 1e3;
16
+ if (options.runTimeout !== void 0) config.timeout = chunkVA4OFR72_cjs.toMs(options.runTimeout) / 1e3;
17
17
  if (options.executionTimeout !== void 0)
18
18
  config.executionTimeout = configDuration(options.executionTimeout);
19
19
  if (options.workflowTaskTimeout !== void 0)
@@ -42,13 +42,13 @@ function runSettingsOf(options) {
42
42
  }
43
43
  function triggerOf(spec, where) {
44
44
  if (spec === void 0) return void 0;
45
- const operation = chunkNXFBVDOI_cjs.isOperation(spec) ? spec : chunkSAENRNBJ_cjs.isRecord(spec) ? spec.operation : void 0;
46
- if (!chunkNXFBVDOI_cjs.isOperation(operation))
45
+ const operation = chunkIQPXHQQQ_cjs.isOperation(spec) ? spec : chunkSAENRNBJ_cjs.isRecord(spec) ? spec.operation : void 0;
46
+ if (!chunkIQPXHQQQ_cjs.isOperation(operation))
47
47
  throw new chunkGVTZMA5C_cjs.BuilderError(`${where}: trigger must be a trigger operation`);
48
48
  const out = { nodeType: operation.nodeType };
49
49
  if (operation.version !== void 0) out.version = operation.version;
50
50
  if (operation.operation !== void 0) out.operation = operation.operation;
51
- if (!chunkNXFBVDOI_cjs.isOperation(spec)) {
51
+ if (!chunkIQPXHQQQ_cjs.isOperation(spec)) {
52
52
  if (spec.args !== void 0) out.args = spec.args;
53
53
  if (spec.id !== void 0) out.id = spec.id;
54
54
  }
@@ -57,10 +57,17 @@ function triggerOf(spec, where) {
57
57
  function collectWorkflowExports(modules) {
58
58
  const exportNames = /* @__PURE__ */ new Map();
59
59
  const durable = [];
60
+ const implementations = [];
61
+ const interceptorModules = [];
60
62
  for (const [module, namespace] of modules) {
63
+ if (Object.hasOwn(namespace, "interceptors")) interceptorModules.push(module);
61
64
  for (const exportName of Object.keys(namespace).sort()) {
62
65
  const value = namespace[exportName];
63
- if (!chunkJ3PYFGKA_cjs.isDurableWorkflow(value) || exportNames.has(value)) continue;
66
+ if (chunkVA4OFR72_cjs.isActivityImplementation(value)) {
67
+ implementations.push({ module, exportName, name: value.name });
68
+ continue;
69
+ }
70
+ if (!chunkVA4OFR72_cjs.isDurableWorkflow(value) || exportNames.has(value)) continue;
64
71
  exportNames.set(value, exportName);
65
72
  const options = value.options;
66
73
  const entry = {
@@ -68,7 +75,7 @@ function collectWorkflowExports(modules) {
68
75
  exportName,
69
76
  name: value.name,
70
77
  taskQueue: options.taskQueue ?? "managed",
71
- interface: chunkJ3PYFGKA_cjs.interfaceOf(value)
78
+ interface: chunkVA4OFR72_cjs.interfaceOf(value)
72
79
  };
73
80
  if (options.title !== void 0) entry.title = options.title;
74
81
  if (options.description !== void 0) entry.description = options.description;
@@ -76,6 +83,10 @@ function collectWorkflowExports(modules) {
76
83
  const trigger = triggerOf(options.trigger, `workflow("${value.name}")`);
77
84
  if (trigger) entry.trigger = trigger;
78
85
  const settings = runSettingsOf(options);
86
+ if (value.dynamic === true) {
87
+ entry.dynamic = true;
88
+ settings.features.push("dynamic");
89
+ }
79
90
  if (Object.keys(settings.config).length > 0) entry.config = settings.config;
80
91
  if (settings.features.length > 0) entry.features = settings.features;
81
92
  durable.push(entry);
@@ -85,7 +96,7 @@ function collectWorkflowExports(modules) {
85
96
  for (const [module, namespace] of modules) {
86
97
  for (const exportName of Object.keys(namespace).sort()) {
87
98
  const value = namespace[exportName];
88
- if (!chunkNXFBVDOI_cjs.isTier1Workflow(value)) continue;
99
+ if (!chunkIQPXHQQQ_cjs.isTier1Workflow(value)) continue;
89
100
  for (const ref of value.durableRefs ?? []) {
90
101
  const resolved = exportNames.get(ref.definition);
91
102
  if (resolved === void 0)
@@ -102,7 +113,9 @@ function collectWorkflowExports(modules) {
102
113
  const collection = {
103
114
  format: COLLECTION_FORMAT,
104
115
  workflows,
105
- ...durable.length > 0 ? { durable } : {}
116
+ ...durable.length > 0 ? { durable } : {},
117
+ ...implementations.length > 0 ? { activityImplementations: implementations } : {},
118
+ ...interceptorModules.length > 0 ? { interceptorModules } : {}
106
119
  };
107
120
  return JSON.stringify(collection);
108
121
  }
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkGBQ33SIZ_cjs = require('./chunk-GBQ33SIZ.cjs');
3
+ var chunk54FLQNUM_cjs = require('./chunk-54FLQNUM.cjs');
4
4
  var chunkSAENRNBJ_cjs = require('./chunk-SAENRNBJ.cjs');
5
5
 
6
6
  // src/ir/diff.ts
@@ -53,8 +53,8 @@ function diffCollection(before, after, path, out) {
53
53
  }
54
54
  }
55
55
  function diffDefinitions(before, after) {
56
- const left = chunkGBQ33SIZ_cjs.hashedProjection(before);
57
- const right = chunkGBQ33SIZ_cjs.hashedProjection(after);
56
+ const left = chunk54FLQNUM_cjs.hashedProjection(before);
57
+ const right = chunk54FLQNUM_cjs.hashedProjection(after);
58
58
  const out = [];
59
59
  if (!chunkSAENRNBJ_cjs.isRecord(left) || !chunkSAENRNBJ_cjs.isRecord(right)) {
60
60
  diffValues(left, right, "", out);
@@ -49,9 +49,17 @@ var EXECUTOR_INTERNAL_TYPES = /* @__PURE__ */ new Set([
49
49
  ]);
50
50
  var CODE_WORKFLOW_NODE_TYPE = "internal:code-workflow";
51
51
  var WAIT_FOR_SIGNAL_NODE_TYPE = "internal:wait-for-signal";
52
+ var SIGNAL_RUN_NODE_TYPE = "internal:signal-run";
53
+ var SET_SEARCH_ATTRIBUTES_NODE_TYPE = "internal:set-search-attributes";
52
54
  var V2_NODE_TYPES = /* @__PURE__ */ new Set([
53
55
  CODE_WORKFLOW_NODE_TYPE,
54
- WAIT_FOR_SIGNAL_NODE_TYPE
56
+ WAIT_FOR_SIGNAL_NODE_TYPE,
57
+ SIGNAL_RUN_NODE_TYPE,
58
+ SET_SEARCH_ATTRIBUTES_NODE_TYPE
59
+ ]);
60
+ var PHASE_C_NODE_TYPES = /* @__PURE__ */ new Set([
61
+ SIGNAL_RUN_NODE_TYPE,
62
+ SET_SEARCH_ATTRIBUTES_NODE_TYPE
55
63
  ]);
56
64
  var INTERNAL_TRIGGER_TYPES = /* @__PURE__ */ new Set([
57
65
  "internal:api",
@@ -264,6 +272,9 @@ function buildIdOf(bundle) {
264
272
 
265
273
  exports.CODE_WORKFLOW_NODE_TYPE = CODE_WORKFLOW_NODE_TYPE;
266
274
  exports.INTERNAL_TRIGGER_TYPES = INTERNAL_TRIGGER_TYPES;
275
+ exports.PHASE_C_NODE_TYPES = PHASE_C_NODE_TYPES;
276
+ exports.SET_SEARCH_ATTRIBUTES_NODE_TYPE = SET_SEARCH_ATTRIBUTES_NODE_TYPE;
277
+ exports.SIGNAL_RUN_NODE_TYPE = SIGNAL_RUN_NODE_TYPE;
267
278
  exports.V2_NODE_TYPES = V2_NODE_TYPES;
268
279
  exports.WAIT_FOR_SIGNAL_NODE_TYPE = WAIT_FOR_SIGNAL_NODE_TYPE;
269
280
  exports.buildIdOf = buildIdOf;
@@ -1,84 +1,87 @@
1
- // src/history/allowlist.ts
2
- var ACTIVITY_INTERNAL_ALLOWLIST = /* @__PURE__ */ new Set([
3
- "internal:http",
4
- "internal:datatable",
5
- "internal:set",
6
- "internal:code"
7
- ]);
8
- var ACTIVITY_NODE_DENYLIST = /* @__PURE__ */ new Set([
9
- "internal:end",
10
- "internal:if",
11
- "internal:switch",
12
- "internal:loop",
13
- "internal:merge",
14
- "internal:wait",
15
- "internal:subworkflow",
16
- "internal:code-workflow",
17
- "internal:wait-for-signal",
18
- "internal:send-and-wait",
19
- "internal:respond-to-webhook",
20
- "internal:failure-triage"
21
- ]);
22
- var ACTIVITY_NODE_ALLOWLIST = {
23
- internal: ACTIVITY_INTERNAL_ALLOWLIST,
24
- refused: ACTIVITY_NODE_DENYLIST,
25
- /** Non-built-in node types (store and registry nodes) are allowed. */
26
- external: "allowed"
27
- };
28
- var LEGACY_SHORT_NAMES = /* @__PURE__ */ new Set([
29
- "if",
30
- "switch",
31
- "loop",
32
- "merge",
33
- "set",
34
- "filter",
35
- "aggregate",
36
- "wait",
37
- "noop",
38
- "code",
39
- "http",
40
- "transform",
41
- "validate",
42
- "log",
43
- "error",
44
- "subworkflow",
45
- "end",
46
- "trigger",
47
- "webhook",
48
- "schedule",
49
- "manual",
50
- "api"
51
- ]);
52
- function canonicalType(nodeType) {
53
- const lower = nodeType.trim().toLowerCase();
54
- return LEGACY_SHORT_NAMES.has(lower) ? `internal:${lower}` : lower;
1
+ // src/history/retry.ts
2
+ var DEFAULT_ACTIVITY_RETRY = Object.freeze({
3
+ retryDelay: 1e3,
4
+ backoffMultiplier: 2,
5
+ maxDelay: 1e5
6
+ });
7
+ var FINAL_TIMEOUTS = /* @__PURE__ */ new Set(["SCHEDULE_TO_START", "SCHEDULE_TO_CLOSE"]);
8
+ function computeRetryDelay(policy, attempt, failure) {
9
+ if (failure?.nonRetryable === true) return { retry: false, reason: "nonRetryable" };
10
+ if (failure?.timeoutType !== void 0 && FINAL_TIMEOUTS.has(failure.timeoutType))
11
+ return { retry: false, reason: "finalTimeout" };
12
+ if (failure?.type !== void 0 && policy.nonRetryableErrorTypes !== void 0 && policy.nonRetryableErrorTypes.includes(failure.type))
13
+ return { retry: false, reason: "typeDenied" };
14
+ if (failure !== void 0 && policy.retryOnErrorTypes !== void 0 && policy.retryOnErrorTypes.length > 0 && !policy.retryOnErrorTypes.includes(failure.errorType))
15
+ return { retry: false, reason: "errorTypeNotListed" };
16
+ if (policy.maxRetries !== void 0 && attempt > policy.maxRetries)
17
+ return { retry: false, reason: "maxRetries" };
18
+ if (failure?.nextRetryDelayMs !== void 0)
19
+ return { retry: true, delayMs: Math.max(0, Math.round(failure.nextRetryDelayMs)) };
20
+ const base = Math.max(0, policy.retryDelay);
21
+ const multiplier = policy.backoffMultiplier ?? 2;
22
+ const cap = policy.maxDelay ?? base * 100;
23
+ const exponent = Math.max(0, attempt - 1);
24
+ const delay = Math.min(base * Math.pow(multiplier, exponent), cap);
25
+ return { retry: true, delayMs: Math.round(Number.isFinite(delay) ? delay : cap) };
55
26
  }
56
- function isActivityNodeTypeAllowed(nodeType) {
57
- if (typeof nodeType !== "string" || nodeType.trim() === "") return false;
58
- const type = canonicalType(nodeType);
59
- if (!type.startsWith("internal:")) return true;
60
- return ACTIVITY_INTERNAL_ALLOWLIST.has(type);
27
+ function explicitRetryPolicy(policy) {
28
+ const retryDelay = policy?.retryDelay ?? DEFAULT_ACTIVITY_RETRY.retryDelay;
29
+ const out = {
30
+ retryDelay,
31
+ backoffMultiplier: policy?.backoffMultiplier ?? DEFAULT_ACTIVITY_RETRY.backoffMultiplier ?? 2,
32
+ maxDelay: policy?.maxDelay ?? (policy?.retryDelay === void 0 ? 1e5 : Math.max(retryDelay, retryDelay * 100))
33
+ };
34
+ if (policy?.maxRetries !== void 0) out.maxRetries = policy.maxRetries;
35
+ if (policy?.retryOnErrorTypes !== void 0)
36
+ out.retryOnErrorTypes = [...policy.retryOnErrorTypes];
37
+ if (policy?.nonRetryableErrorTypes !== void 0)
38
+ out.nonRetryableErrorTypes = [...policy.nonRetryableErrorTypes];
39
+ return out;
61
40
  }
62
- var ActivityNodeTypeNotAllowedError = class extends Error {
63
- constructor(nodeType) {
64
- super(
65
- `${nodeType} cannot run as a durable activity: only store and registry nodes and internal:http, internal:datatable, internal:set and internal:code can`
66
- );
67
- this.nodeType = nodeType;
68
- this.name = "ActivityNodeTypeNotAllowedError";
41
+ function computeRunRetryDelay(policy, attempt, failure) {
42
+ if (policy === void 0) return { retry: false, reason: "noPolicy" };
43
+ if (failure.timeoutType === "WORKFLOW_EXECUTION")
44
+ return { retry: false, reason: "executionTimeout" };
45
+ if (policy.maxAttempts !== void 0 && attempt >= policy.maxAttempts)
46
+ return { retry: false, reason: "maxAttempts" };
47
+ const activityPolicy = {
48
+ retryDelay: policy.initialDelayMs,
49
+ ...policy.backoffMultiplier !== void 0 ? { backoffMultiplier: policy.backoffMultiplier } : {},
50
+ ...policy.maxDelayMs !== void 0 ? { maxDelay: policy.maxDelayMs } : {},
51
+ ...policy.retryOnErrorTypes !== void 0 ? { retryOnErrorTypes: policy.retryOnErrorTypes } : {},
52
+ ...policy.nonRetryableErrorTypes !== void 0 ? { nonRetryableErrorTypes: policy.nonRetryableErrorTypes } : {}
53
+ };
54
+ const classified = { ...failure };
55
+ if (classified.timeoutType === "WORKFLOW_RUN") delete classified.timeoutType;
56
+ const decision = computeRetryDelay(activityPolicy, attempt, classified);
57
+ if (decision.retry) return decision;
58
+ switch (decision.reason) {
59
+ case "nonRetryable":
60
+ case "typeDenied":
61
+ case "errorTypeNotListed":
62
+ return { retry: false, reason: decision.reason };
63
+ default:
64
+ return { retry: false, reason: "maxAttempts" };
69
65
  }
70
- nodeType;
71
- code = "durable.activityTypeNotAllowed";
72
- errorType = "VALIDATION";
73
- nonRetryable = true;
74
- };
75
- function assertActivityNodeType(nodeType) {
76
- if (!isActivityNodeTypeAllowed(nodeType)) throw new ActivityNodeTypeNotAllowedError(nodeType);
66
+ }
67
+ function explicitRunRetryPolicy(policy) {
68
+ const initialDelayMs = policy.initialDelayMs ?? DEFAULT_ACTIVITY_RETRY.retryDelay;
69
+ const out = {
70
+ initialDelayMs,
71
+ backoffMultiplier: policy.backoffMultiplier ?? 2,
72
+ maxDelayMs: policy.maxDelayMs ?? (policy.initialDelayMs === void 0 ? 1e5 : Math.max(initialDelayMs, initialDelayMs * 100))
73
+ };
74
+ if (policy.maxAttempts !== void 0) out.maxAttempts = policy.maxAttempts;
75
+ if (policy.retryOnErrorTypes !== void 0) out.retryOnErrorTypes = [...policy.retryOnErrorTypes];
76
+ if (policy.nonRetryableErrorTypes !== void 0)
77
+ out.nonRetryableErrorTypes = [...policy.nonRetryableErrorTypes];
78
+ return out;
77
79
  }
78
80
 
79
81
  // src/history/types.ts
80
82
  var HISTORY_PROTOCOL = 1;
81
- var RUNTIME_RELEASE = 2;
83
+ var RUNTIME_RELEASE = 3;
84
+ var RUNTIME_CAPABILITIES = ["updates", "queries", "dynamic"];
82
85
  var EVENT_TYPES = [
83
86
  "WORKFLOW_STARTED",
84
87
  "WORKFLOW_TASK_SCHEDULED",
@@ -230,6 +233,14 @@ var WORKFLOW_ID_CONFLICT_POLICIES = [
230
233
  ];
231
234
  var VERSIONING_BEHAVIORS = ["PINNED", "AUTO_UPGRADE"];
232
235
  var WORKFLOW_TIMEOUT_TYPES = ["WORKFLOW_RUN", "WORKFLOW_EXECUTION"];
236
+ var FAIRNESS_KEY_MAX_LENGTH = 255;
237
+ var FAIRNESS_WEIGHT_MIN = 0.1;
238
+ var FAIRNESS_WEIGHT_MAX = 10;
239
+ var ACTIVITY_NAME_PATTERN = "^[A-Za-z_][A-Za-z0-9_.-]{0,127}$";
240
+ var TASK_QUEUE_NAME_PATTERN = "^[a-z0-9][a-z0-9-]{0,62}$";
241
+ var MAX_ACTIVITY_CONNECTIONS = 16;
242
+ var MAX_HEADERS_BYTES = 16 * 1024;
243
+ var MAX_SINK_CALLS = 256;
233
244
  var DEFAULT_HISTORY_LIMIT = { events: 1e4, bytes: 16 * 1024 * 1024 };
234
245
  var CONTINUE_AS_NEW_SUGGESTED_RATIO = 0.8;
235
246
  var HISTORY_LIMIT_EXCEEDED_RATIO = 0.95;
@@ -316,4 +327,4 @@ function isCommandEvent(event) {
316
327
  return COMMAND_EVENTS.has(event.type);
317
328
  }
318
329
 
319
- export { ACTIVITY_CANCELLATION_TYPES, ACTIVITY_INTERNAL_ALLOWLIST, ACTIVITY_NODE_ALLOWLIST, ACTIVITY_NODE_DENYLIST, ActivityNodeTypeNotAllowedError, BUILT_IN_QUERIES, CHILD_CANCELLATION_TYPES, COMMAND_EVENTS, COMMAND_EVENT_TYPES, COMMAND_TYPES, CONTINUE_AS_NEW_SUGGESTED_RATIO, DEFAULT_HISTORY_LIMIT, ERROR_TYPES, EVENT_TYPES, EXECUTION_KINDS, HISTORY_LIMIT_EXCEEDED_RATIO, HISTORY_PROTOCOL, INPUT_EVENTS, LOCAL_ACTIVITY_MAX_TIMEOUT_MS, PARENT_CLOSE_POLICIES, PHASE_B_CORE_COMMANDS, PHASE_B_PARITY_COMMANDS, PHASE_C_COMMANDS, RUNTIME_RELEASE, TASK_FAILURE_CAUSES, TERMINAL_COMMANDS, TERMINAL_EVENTS, VERSIONING_BEHAVIORS, WORKFLOW_ID_CONFLICT_POLICIES, WORKFLOW_ID_REUSE_POLICIES, WORKFLOW_TIMEOUT_TYPES, assertActivityNodeType, isActivityNodeTypeAllowed, isCommandEvent, isInputEvent };
330
+ export { ACTIVITY_CANCELLATION_TYPES, ACTIVITY_NAME_PATTERN, BUILT_IN_QUERIES, CHILD_CANCELLATION_TYPES, COMMAND_EVENTS, COMMAND_EVENT_TYPES, COMMAND_TYPES, CONTINUE_AS_NEW_SUGGESTED_RATIO, DEFAULT_ACTIVITY_RETRY, DEFAULT_HISTORY_LIMIT, ERROR_TYPES, EVENT_TYPES, EXECUTION_KINDS, FAIRNESS_KEY_MAX_LENGTH, FAIRNESS_WEIGHT_MAX, FAIRNESS_WEIGHT_MIN, HISTORY_LIMIT_EXCEEDED_RATIO, HISTORY_PROTOCOL, INPUT_EVENTS, LOCAL_ACTIVITY_MAX_TIMEOUT_MS, MAX_ACTIVITY_CONNECTIONS, MAX_HEADERS_BYTES, MAX_SINK_CALLS, PARENT_CLOSE_POLICIES, PHASE_B_CORE_COMMANDS, PHASE_B_PARITY_COMMANDS, PHASE_C_COMMANDS, RUNTIME_CAPABILITIES, RUNTIME_RELEASE, TASK_FAILURE_CAUSES, TASK_QUEUE_NAME_PATTERN, TERMINAL_COMMANDS, TERMINAL_EVENTS, VERSIONING_BEHAVIORS, WORKFLOW_ID_CONFLICT_POLICIES, WORKFLOW_ID_REUSE_POLICIES, WORKFLOW_TIMEOUT_TYPES, computeRetryDelay, computeRunRetryDelay, explicitRetryPolicy, explicitRunRetryPolicy, isCommandEvent, isInputEvent };