@fluidgrids/workflows 2026.1028.2 → 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.
- package/README.md +181 -11
- package/dist/{activation-BBh1p82z.d.cts → activation-DqUfpHzk.d.cts} +1 -1
- package/dist/{activation-DnhG7SmF.d.ts → activation-xpx1oWuo.d.ts} +1 -1
- package/dist/{chunk-VRHHBPT6.js → chunk-2D3MYIIF.js} +1212 -128
- package/dist/chunk-3U2NU7YC.cjs +124 -0
- package/dist/{chunk-NEIUQASE.cjs → chunk-4QKB4ARC.cjs} +3 -3
- package/dist/{chunk-GBQ33SIZ.cjs → chunk-54FLQNUM.cjs} +12 -1
- package/dist/chunk-5HIVIV53.js +330 -0
- package/dist/chunk-5MFVJM76.js +1222 -0
- package/dist/{chunk-JD2VQIDZ.cjs → chunk-672KMMBK.cjs} +2 -2
- package/dist/{chunk-C5OLWZ42.js → chunk-6A2FGSUS.js} +22 -14
- package/dist/{chunk-XKJA7KX3.js → chunk-6OLN6BMB.js} +52 -3
- package/dist/{chunk-6FSHT5IL.js → chunk-7EZIANC7.js} +1 -1
- package/dist/{chunk-2J6TF7YI.cjs → chunk-A5SXCA62.cjs} +10 -3
- package/dist/{chunk-BO6OVILK.js → chunk-AC6ZEXVR.js} +10 -4
- package/dist/{chunk-ABFZWYHT.js → chunk-AE5Q6ZAJ.js} +315 -50
- package/dist/chunk-C4F5KJTI.js +293 -0
- package/dist/{chunk-IISBRUWJ.js → chunk-G5H32GIG.js} +1 -1
- package/dist/chunk-GEQDGUGB.cjs +2719 -0
- package/dist/{chunk-XHXIDVEC.js → chunk-HCM7ZC7Q.js} +1 -1
- package/dist/chunk-HMZUGSMU.cjs +1554 -0
- package/dist/{chunk-SAOBPYYJ.cjs → chunk-IQPXHQQQ.cjs} +8 -4
- package/dist/{chunk-P6TA5EZT.cjs → chunk-ISOIA7NV.cjs} +335 -58
- package/dist/chunk-JSC75O5C.cjs +167 -0
- package/dist/chunk-M272AHEX.js +25 -0
- package/dist/{chunk-BD7ZPG53.js → chunk-NWQ5WRLE.js} +10 -2
- package/dist/chunk-ODZ2IAR2.cjs +1247 -0
- package/dist/chunk-Q4MWQNJK.cjs +28 -0
- package/dist/{chunk-HWJZVOG7.js → chunk-SR7TR5KX.js} +6 -2
- package/dist/{chunk-FEW3JBYA.cjs → chunk-TCTE7DX5.cjs} +3 -3
- package/dist/{chunk-623FVQSN.cjs → chunk-TYF56RGB.cjs} +123 -0
- package/dist/chunk-VA4OFR72.cjs +324 -0
- package/dist/chunk-VU5S5A7V.js +150 -0
- package/dist/chunk-YEHR4NNE.js +1522 -0
- package/dist/{chunk-FMSW2HDF.cjs → chunk-ZCGKGDCL.cjs} +23 -15
- package/dist/codegen/index.d.cts +2 -2
- package/dist/codegen/index.d.ts +2 -2
- package/dist/collect-6NIEufHd.d.ts +103 -0
- package/dist/collect-CcTCKqx6.d.cts +103 -0
- package/dist/{file-BOoHZgoQ.d.cts → file-BxYpwjRQ.d.cts} +1007 -21
- package/dist/{file-yuPCFU5b.d.ts → file-CFdPQJI9.d.ts} +1007 -21
- package/dist/history/index.cjs +375 -86
- package/dist/history/index.d.cts +590 -12
- package/dist/history/index.d.ts +590 -12
- package/dist/history/index.js +50 -4
- package/dist/index.cjs +156 -50
- package/dist/index.d.cts +38 -58
- package/dist/index.d.ts +38 -58
- package/dist/index.js +6 -4
- package/dist/interceptors-CNcr2dlk.d.ts +159 -0
- package/dist/interceptors-CqkNZVfI.d.cts +159 -0
- package/dist/ir/index.cjs +362 -38
- package/dist/ir/index.d.cts +282 -7
- package/dist/ir/index.d.ts +282 -7
- package/dist/ir/index.js +329 -23
- package/dist/{lower-BzmUz0sq.d.cts → lower-BtRfIW2A.d.cts} +56 -8
- package/dist/{lower-_-iT4HYs.d.ts → lower-CpsMFOFX.d.ts} +56 -8
- package/dist/{manifest-C8N6HDYl.d.ts → manifest-D-I_twys.d.ts} +1 -1
- package/dist/{manifest-0OLw0i7k.d.cts → manifest-DahBQVM8.d.cts} +1 -1
- package/dist/node-evaluator-DGQDPSPI.cjs +24 -0
- package/dist/node-evaluator-LEEVD7H7.js +14 -0
- package/dist/payload-fields-BVRQn2yH.d.cts +122 -0
- package/dist/payload-fields-oOBWxDiG.d.ts +122 -0
- package/dist/quickjs/index.cjs +28 -27
- package/dist/quickjs/index.d.cts +6 -6
- package/dist/quickjs/index.d.ts +6 -6
- package/dist/quickjs/index.js +10 -9
- package/dist/roundtrip/index.cjs +259 -51
- package/dist/roundtrip/index.d.cts +100 -9
- package/dist/roundtrip/index.d.ts +100 -9
- package/dist/roundtrip/index.js +177 -11
- package/dist/runtime/index.cjs +21 -20
- package/dist/runtime/index.d.cts +184 -15
- package/dist/runtime/index.d.ts +184 -15
- package/dist/runtime/index.js +8 -7
- package/dist/testing/index.cjs +1122 -115
- package/dist/testing/index.d.cts +294 -13
- package/dist/testing/index.d.ts +294 -13
- package/dist/testing/index.js +1086 -84
- package/dist/{types-DV-HX_Gt.d.ts → types-Bv2i4cBX.d.cts} +244 -33
- package/dist/{types-CpBBjaGX.d.cts → types-DGx-b9eq.d.ts} +244 -33
- package/dist/{types-BGoPzgcl.d.ts → types-V7jEEUaL.d.cts} +20 -1
- package/dist/{types-BGoPzgcl.d.cts → types-V7jEEUaL.d.ts} +20 -1
- package/dist/{workflow-Bpr3vnA_.d.ts → workflow-B18OeF7g.d.ts} +2 -2
- package/dist/workflow-BGnv8SS6.d.ts +803 -0
- package/dist/{workflow-FXUkpIBc.d.cts → workflow-BJPFv3cp.d.cts} +2 -2
- package/dist/workflow-DS32Gtws.d.cts +803 -0
- package/fixtures/histories/activity-options-updated.history.json +159 -0
- package/fixtures/histories/activity-paused-unpaused.history.json +160 -0
- package/fixtures/histories/auto-upgrade-patched.history.json +276 -0
- package/fixtures/histories/benign-failure.history.json +146 -0
- package/fixtures/histories/cancel-activity-try-cancel.history.json +150 -0
- package/fixtures/histories/child-cancel-wait-requested.history.json +217 -0
- package/fixtures/histories/child-options-roundtrip.history.json +192 -0
- package/fixtures/histories/codec-opaque.history.json +229 -0
- package/fixtures/histories/continue-as-new-last-result.history.json +86 -0
- package/fixtures/histories/continue-as-new-options.history.json +99 -0
- package/fixtures/histories/continue-as-new-r1-long-task-queue.history.json +78 -0
- package/fixtures/histories/continue-as-new-r1-retry-options.history.json +83 -0
- package/fixtures/histories/dynamic-workflow.history.json +150 -0
- package/fixtures/histories/execution-timeout-chain.history.json +98 -0
- package/fixtures/histories/external-cancel-resolved.history.json +123 -0
- package/fixtures/histories/external-cancel-unknown-target.history.json +127 -0
- package/fixtures/histories/failure-error-types-fails-run.history.json +144 -0
- package/fixtures/histories/handler-drain-warn.history.json +222 -0
- package/fixtures/histories/heartbeat-details-on-retry.history.json +145 -0
- package/fixtures/histories/interceptor-headers.history.json +339 -0
- package/fixtures/histories/local-activity-abandoned-at-completion.history.json +73 -0
- package/fixtures/histories/local-activity-cancelled-in-scope.history.json +118 -0
- package/fixtures/histories/local-activity-completed.history.json +157 -0
- package/fixtures/histories/local-activity-failed.history.json +93 -0
- package/fixtures/histories/local-activity-retry-in-task.history.json +88 -0
- package/fixtures/histories/query-custom.history.json +213 -0
- package/fixtures/histories/query-default-handler.history.json +120 -0
- package/fixtures/histories/reset-forked-reapplied-signals.history.json +239 -0
- package/fixtures/histories/reset-reapplied-update-admitted.history.json +228 -0
- package/fixtures/histories/run-retry-last-failure.history.json +90 -0
- package/fixtures/histories/run-timeout.history.json +159 -0
- package/fixtures/histories/schedule-to-start-timeout.history.json +132 -0
- package/fixtures/histories/search-attributes-upserted.history.json +177 -0
- package/fixtures/histories/start-delay-signal-ends-delay.history.json +155 -0
- package/fixtures/histories/typeerror-task-retry-100.history.json +137 -0
- package/fixtures/histories/update-accepted-completed.history.json +45 -30
- package/fixtures/histories/update-default-handler.history.json +246 -0
- package/fixtures/histories/update-handler-awaits-activity.history.json +196 -0
- package/fixtures/histories/update-not-handled.history.json +138 -0
- package/fixtures/histories/update-rejected-no-event.history.json +190 -0
- package/fixtures/histories/update-with-start-admitted.history.json +150 -0
- package/fixtures/histories/user-activity-cancel.history.json +149 -0
- package/fixtures/histories/user-activity-retry.history.json +143 -0
- package/fixtures/histories/user-activity.history.json +149 -0
- package/package.json +1 -1
- package/schema/bridge-v2.schema.json +1062 -0
- package/schema/history-file.schema.json +538 -83
- package/schema/ir-v2.schema.json +290 -0
- package/schema/payload-fields.json +162 -0
- package/schema/run-event.schema.json +503 -82
- package/schema/workflow-command.schema.json +372 -69
- package/schema/workflow-task.schema.json +924 -171
- package/dist/assemble-BLqQ8lSu.d.cts +0 -39
- package/dist/assemble-DWgaXHd-.d.ts +0 -39
- package/dist/chunk-DHTLALBL.cjs +0 -80
- package/dist/chunk-DJYMDLV5.js +0 -227
- package/dist/chunk-I5LR3D2K.js +0 -869
- package/dist/chunk-M4BBAERY.cjs +0 -1635
- package/dist/chunk-N23SKIG4.js +0 -73
- package/dist/chunk-PZCVF76Q.cjs +0 -868
- package/dist/chunk-QQ6ULXHI.cjs +0 -885
- package/dist/chunk-UK3WM7YZ.cjs +0 -75
- package/dist/chunk-VOKMAAJP.js +0 -848
- package/dist/node-evaluator-4MSDKWOG.cjs +0 -22
- package/dist/node-evaluator-SX4LEYQC.js +0 -12
- package/dist/workflow-C2a05WUJ.d.ts +0 -444
- package/dist/workflow-J-yYixny.d.cts +0 -444
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkTYF56RGB_cjs = require('./chunk-TYF56RGB.cjs');
|
|
4
4
|
|
|
5
5
|
function failedTaskResult(cause, message) {
|
|
6
6
|
return {
|
|
7
|
-
protocol:
|
|
7
|
+
protocol: chunkTYF56RGB_cjs.HISTORY_PROTOCOL,
|
|
8
8
|
outcome: "failed",
|
|
9
9
|
commands: [],
|
|
10
10
|
failure: { cause, message },
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { durationMs } from './chunk-LNUQE6D6.js';
|
|
2
|
-
|
|
3
1
|
// src/durable/definitions.ts
|
|
4
2
|
function checkName(name, what) {
|
|
5
3
|
if (typeof name !== "string" || name === "" || name.startsWith("__"))
|
|
@@ -84,16 +82,36 @@ var ApplicationError = class extends WorkflowFailure {
|
|
|
84
82
|
}
|
|
85
83
|
};
|
|
86
84
|
var ActivityFailure = class extends WorkflowFailure {
|
|
87
|
-
constructor(message, activityId, nodeType, operation, cause) {
|
|
85
|
+
constructor(message, activityId, nodeType, operation, cause, activityName) {
|
|
88
86
|
super(message, cause instanceof WorkflowFailure ? cause.errorType : "UNKNOWN", { cause });
|
|
89
87
|
this.activityId = activityId;
|
|
90
88
|
this.nodeType = nodeType;
|
|
91
89
|
this.operation = operation;
|
|
90
|
+
this.activityName = activityName;
|
|
92
91
|
this.name = "ActivityFailure";
|
|
93
92
|
}
|
|
94
93
|
activityId;
|
|
95
94
|
nodeType;
|
|
96
95
|
operation;
|
|
96
|
+
activityName;
|
|
97
|
+
};
|
|
98
|
+
var ActivityPausedError = class extends ApplicationError {
|
|
99
|
+
constructor(message = "The activity was paused", details) {
|
|
100
|
+
super(message, {
|
|
101
|
+
type: "ActivityPausedError",
|
|
102
|
+
errorType: "TRANSIENT",
|
|
103
|
+
...details !== void 0 ? { details } : {}
|
|
104
|
+
});
|
|
105
|
+
this.name = "ActivityPausedError";
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
var QueryHandlerSideEffect = class extends Error {
|
|
109
|
+
constructor(what) {
|
|
110
|
+
super(
|
|
111
|
+
`${what} is not allowed in a query handler or an update validator; they must not change the run`
|
|
112
|
+
);
|
|
113
|
+
this.name = "QueryHandlerSideEffect";
|
|
114
|
+
}
|
|
97
115
|
};
|
|
98
116
|
var ChildRunFailure = class extends WorkflowFailure {
|
|
99
117
|
constructor(message, childId, childRunId, cause) {
|
|
@@ -232,14 +250,4 @@ function failureToError(failure, depth = 0) {
|
|
|
232
250
|
return error;
|
|
233
251
|
}
|
|
234
252
|
|
|
235
|
-
|
|
236
|
-
function toMs(value, what = "duration") {
|
|
237
|
-
const ms = durationMs(value, "ms");
|
|
238
|
-
if (ms === void 0) throw new TypeError(`${what} "${String(value)}" is not a duration`);
|
|
239
|
-
return Math.round(ms);
|
|
240
|
-
}
|
|
241
|
-
function optionalMs(value, what) {
|
|
242
|
-
return value === void 0 ? void 0 : toMs(value, what);
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
export { ActivityFailure, ApplicationError, CancelledFailure, ChildRunFailure, DeterminismViolation, HistoryLimitExceeded, PhaseCFeatureError, ServerFailure, TerminatedFailure, TimeoutFailure, WorkflowFailure, defineQuery, defineSignal, defineUpdate, errorToFailure, failureToError, isCancellation, isRunFailure, optionalMs, signalName, toMs };
|
|
253
|
+
export { ActivityFailure, ActivityPausedError, ApplicationError, CancelledFailure, ChildRunFailure, DeterminismViolation, HistoryLimitExceeded, PhaseCFeatureError, QueryHandlerSideEffect, ServerFailure, TerminatedFailure, TimeoutFailure, WorkflowFailure, defineQuery, defineSignal, defineUpdate, errorToFailure, failureToError, isCancellation, isRunFailure, signalName };
|
|
@@ -1,10 +1,43 @@
|
|
|
1
|
-
import { isTier1Workflow, isOperation } from './chunk-
|
|
1
|
+
import { isTier1Workflow, isOperation } from './chunk-SR7TR5KX.js';
|
|
2
2
|
import { BuilderError } from './chunk-JZ4TOOLN.js';
|
|
3
3
|
import { isRecord, setOwn } from './chunk-PMCM2OH4.js';
|
|
4
|
-
import { isDurableWorkflow, interfaceOf } from './chunk-
|
|
4
|
+
import { isActivityImplementation, isDurableWorkflow, interfaceOf, toMs } from './chunk-C4F5KJTI.js';
|
|
5
5
|
|
|
6
6
|
// src/builder/collect.ts
|
|
7
7
|
var COLLECTION_FORMAT = "fluidgrids.tier1-collection";
|
|
8
|
+
function configDuration(value) {
|
|
9
|
+
return typeof value === "string" ? value : toMs(value) / 1e3;
|
|
10
|
+
}
|
|
11
|
+
function runSettingsOf(options) {
|
|
12
|
+
const config = {};
|
|
13
|
+
const features = [];
|
|
14
|
+
if (options.runTimeout !== void 0) config.timeout = toMs(options.runTimeout) / 1e3;
|
|
15
|
+
if (options.executionTimeout !== void 0)
|
|
16
|
+
config.executionTimeout = configDuration(options.executionTimeout);
|
|
17
|
+
if (options.workflowTaskTimeout !== void 0)
|
|
18
|
+
config.workflowTaskTimeout = configDuration(options.workflowTaskTimeout);
|
|
19
|
+
if (options.runTimeout !== void 0 || options.executionTimeout !== void 0 || options.workflowTaskTimeout !== void 0)
|
|
20
|
+
features.push("timeouts");
|
|
21
|
+
if (options.versioningBehavior !== void 0) {
|
|
22
|
+
config.versioningBehavior = options.versioningBehavior;
|
|
23
|
+
if (options.versioningBehavior === "AUTO_UPGRADE") features.push("autoUpgrade");
|
|
24
|
+
}
|
|
25
|
+
if (options.retry !== void 0) {
|
|
26
|
+
const retry = {};
|
|
27
|
+
if (options.retry.maxAttempts !== void 0) retry.maxAttempts = options.retry.maxAttempts;
|
|
28
|
+
if (options.retry.initialDelay !== void 0)
|
|
29
|
+
retry.initialDelay = configDuration(options.retry.initialDelay);
|
|
30
|
+
if (options.retry.backoffMultiplier !== void 0)
|
|
31
|
+
retry.backoffMultiplier = options.retry.backoffMultiplier;
|
|
32
|
+
if (options.retry.maxDelay !== void 0)
|
|
33
|
+
retry.maxDelay = configDuration(options.retry.maxDelay);
|
|
34
|
+
if (options.retry.nonRetryableErrorTypes !== void 0)
|
|
35
|
+
retry.nonRetryableErrorTypes = [...options.retry.nonRetryableErrorTypes];
|
|
36
|
+
config.retry = retry;
|
|
37
|
+
features.push("runRetry");
|
|
38
|
+
}
|
|
39
|
+
return { config, features };
|
|
40
|
+
}
|
|
8
41
|
function triggerOf(spec, where) {
|
|
9
42
|
if (spec === void 0) return void 0;
|
|
10
43
|
const operation = isOperation(spec) ? spec : isRecord(spec) ? spec.operation : void 0;
|
|
@@ -22,9 +55,16 @@ function triggerOf(spec, where) {
|
|
|
22
55
|
function collectWorkflowExports(modules) {
|
|
23
56
|
const exportNames = /* @__PURE__ */ new Map();
|
|
24
57
|
const durable = [];
|
|
58
|
+
const implementations = [];
|
|
59
|
+
const interceptorModules = [];
|
|
25
60
|
for (const [module, namespace] of modules) {
|
|
61
|
+
if (Object.hasOwn(namespace, "interceptors")) interceptorModules.push(module);
|
|
26
62
|
for (const exportName of Object.keys(namespace).sort()) {
|
|
27
63
|
const value = namespace[exportName];
|
|
64
|
+
if (isActivityImplementation(value)) {
|
|
65
|
+
implementations.push({ module, exportName, name: value.name });
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
28
68
|
if (!isDurableWorkflow(value) || exportNames.has(value)) continue;
|
|
29
69
|
exportNames.set(value, exportName);
|
|
30
70
|
const options = value.options;
|
|
@@ -40,6 +80,13 @@ function collectWorkflowExports(modules) {
|
|
|
40
80
|
if (options.standalone !== void 0) entry.standalone = options.standalone;
|
|
41
81
|
const trigger = triggerOf(options.trigger, `workflow("${value.name}")`);
|
|
42
82
|
if (trigger) entry.trigger = trigger;
|
|
83
|
+
const settings = runSettingsOf(options);
|
|
84
|
+
if (value.dynamic === true) {
|
|
85
|
+
entry.dynamic = true;
|
|
86
|
+
settings.features.push("dynamic");
|
|
87
|
+
}
|
|
88
|
+
if (Object.keys(settings.config).length > 0) entry.config = settings.config;
|
|
89
|
+
if (settings.features.length > 0) entry.features = settings.features;
|
|
43
90
|
durable.push(entry);
|
|
44
91
|
}
|
|
45
92
|
}
|
|
@@ -64,7 +111,9 @@ function collectWorkflowExports(modules) {
|
|
|
64
111
|
const collection = {
|
|
65
112
|
format: COLLECTION_FORMAT,
|
|
66
113
|
workflows,
|
|
67
|
-
...durable.length > 0 ? { durable } : {}
|
|
114
|
+
...durable.length > 0 ? { durable } : {},
|
|
115
|
+
...implementations.length > 0 ? { activityImplementations: implementations } : {},
|
|
116
|
+
...interceptorModules.length > 0 ? { interceptorModules } : {}
|
|
68
117
|
};
|
|
69
118
|
return JSON.stringify(collection);
|
|
70
119
|
}
|
|
@@ -55,10 +55,15 @@ function canonicalType(nodeType) {
|
|
|
55
55
|
const lower = nodeType.trim().toLowerCase();
|
|
56
56
|
return LEGACY_SHORT_NAMES.has(lower) ? `internal:${lower}` : lower;
|
|
57
57
|
}
|
|
58
|
-
|
|
58
|
+
var ACTIVITY_ASYNC_COMPLETION_ALLOWLIST = /* @__PURE__ */ new Set([
|
|
59
|
+
"internal:send-and-wait"
|
|
60
|
+
]);
|
|
61
|
+
function isActivityNodeTypeAllowed(nodeType, options = {}) {
|
|
59
62
|
if (typeof nodeType !== "string" || nodeType.trim() === "") return false;
|
|
60
63
|
const type = canonicalType(nodeType);
|
|
61
64
|
if (!type.startsWith("internal:")) return true;
|
|
65
|
+
if (options.asyncCompletion === true && ACTIVITY_ASYNC_COMPLETION_ALLOWLIST.has(type))
|
|
66
|
+
return true;
|
|
62
67
|
return ACTIVITY_INTERNAL_ALLOWLIST.has(type);
|
|
63
68
|
}
|
|
64
69
|
var ActivityNodeTypeNotAllowedError = class extends Error {
|
|
@@ -74,10 +79,12 @@ var ActivityNodeTypeNotAllowedError = class extends Error {
|
|
|
74
79
|
errorType = "VALIDATION";
|
|
75
80
|
nonRetryable = true;
|
|
76
81
|
};
|
|
77
|
-
function assertActivityNodeType(nodeType) {
|
|
78
|
-
if (!isActivityNodeTypeAllowed(nodeType))
|
|
82
|
+
function assertActivityNodeType(nodeType, options = {}) {
|
|
83
|
+
if (!isActivityNodeTypeAllowed(nodeType, options))
|
|
84
|
+
throw new ActivityNodeTypeNotAllowedError(nodeType);
|
|
79
85
|
}
|
|
80
86
|
|
|
87
|
+
exports.ACTIVITY_ASYNC_COMPLETION_ALLOWLIST = ACTIVITY_ASYNC_COMPLETION_ALLOWLIST;
|
|
81
88
|
exports.ACTIVITY_INTERNAL_ALLOWLIST = ACTIVITY_INTERNAL_ALLOWLIST;
|
|
82
89
|
exports.ACTIVITY_NODE_ALLOWLIST = ACTIVITY_NODE_ALLOWLIST;
|
|
83
90
|
exports.ACTIVITY_NODE_DENYLIST = ACTIVITY_NODE_DENYLIST;
|
|
@@ -53,10 +53,15 @@ function canonicalType(nodeType) {
|
|
|
53
53
|
const lower = nodeType.trim().toLowerCase();
|
|
54
54
|
return LEGACY_SHORT_NAMES.has(lower) ? `internal:${lower}` : lower;
|
|
55
55
|
}
|
|
56
|
-
|
|
56
|
+
var ACTIVITY_ASYNC_COMPLETION_ALLOWLIST = /* @__PURE__ */ new Set([
|
|
57
|
+
"internal:send-and-wait"
|
|
58
|
+
]);
|
|
59
|
+
function isActivityNodeTypeAllowed(nodeType, options = {}) {
|
|
57
60
|
if (typeof nodeType !== "string" || nodeType.trim() === "") return false;
|
|
58
61
|
const type = canonicalType(nodeType);
|
|
59
62
|
if (!type.startsWith("internal:")) return true;
|
|
63
|
+
if (options.asyncCompletion === true && ACTIVITY_ASYNC_COMPLETION_ALLOWLIST.has(type))
|
|
64
|
+
return true;
|
|
60
65
|
return ACTIVITY_INTERNAL_ALLOWLIST.has(type);
|
|
61
66
|
}
|
|
62
67
|
var ActivityNodeTypeNotAllowedError = class extends Error {
|
|
@@ -72,8 +77,9 @@ var ActivityNodeTypeNotAllowedError = class extends Error {
|
|
|
72
77
|
errorType = "VALIDATION";
|
|
73
78
|
nonRetryable = true;
|
|
74
79
|
};
|
|
75
|
-
function assertActivityNodeType(nodeType) {
|
|
76
|
-
if (!isActivityNodeTypeAllowed(nodeType))
|
|
80
|
+
function assertActivityNodeType(nodeType, options = {}) {
|
|
81
|
+
if (!isActivityNodeTypeAllowed(nodeType, options))
|
|
82
|
+
throw new ActivityNodeTypeNotAllowedError(nodeType);
|
|
77
83
|
}
|
|
78
84
|
|
|
79
|
-
export { ACTIVITY_INTERNAL_ALLOWLIST, ACTIVITY_NODE_ALLOWLIST, ACTIVITY_NODE_DENYLIST, ActivityNodeTypeNotAllowedError, assertActivityNodeType, isActivityNodeTypeAllowed };
|
|
85
|
+
export { ACTIVITY_ASYNC_COMPLETION_ALLOWLIST, ACTIVITY_INTERNAL_ALLOWLIST, ACTIVITY_NODE_ALLOWLIST, ACTIVITY_NODE_DENYLIST, ActivityNodeTypeNotAllowedError, assertActivityNodeType, isActivityNodeTypeAllowed };
|