@cadenza.io/core 3.25.0 → 3.26.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.
- package/dist/index.d.mts +32 -8
- package/dist/index.d.ts +32 -8
- package/dist/index.js +195 -41
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +195 -41
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -1
package/dist/index.js
CHANGED
|
@@ -1280,6 +1280,7 @@ var SignalBroker = class _SignalBroker {
|
|
|
1280
1280
|
// TODO: Signals should be a class with a the observers, registered flag and other data.
|
|
1281
1281
|
this.signalObservers = /* @__PURE__ */ new Map();
|
|
1282
1282
|
this.emittedSignalsRegistry = /* @__PURE__ */ new Set();
|
|
1283
|
+
this.signalMetadataRegistry = /* @__PURE__ */ new Map();
|
|
1283
1284
|
// ── Flush Strategy Management ───────────────────────────────────────
|
|
1284
1285
|
this.flushStrategies = /* @__PURE__ */ new Map();
|
|
1285
1286
|
this.strategyData = /* @__PURE__ */ new Map();
|
|
@@ -1312,6 +1313,47 @@ var SignalBroker = class _SignalBroker {
|
|
|
1312
1313
|
setVerbose(value) {
|
|
1313
1314
|
this.verbose = value;
|
|
1314
1315
|
}
|
|
1316
|
+
resolveSignalMetadataKey(signal) {
|
|
1317
|
+
const normalizedSignal = typeof signal === "string" ? signal.trim() : "";
|
|
1318
|
+
if (!normalizedSignal) {
|
|
1319
|
+
return "";
|
|
1320
|
+
}
|
|
1321
|
+
return normalizedSignal.split(":")[0] ?? normalizedSignal;
|
|
1322
|
+
}
|
|
1323
|
+
normalizeSignalMetadata(metadata) {
|
|
1324
|
+
if (!metadata) {
|
|
1325
|
+
return void 0;
|
|
1326
|
+
}
|
|
1327
|
+
const deliveryMode = metadata.deliveryMode === "broadcast" ? "broadcast" : "single";
|
|
1328
|
+
const broadcastFilter = metadata.broadcastFilter && typeof metadata.broadcastFilter === "object" && !Array.isArray(metadata.broadcastFilter) ? merge_default({}, metadata.broadcastFilter) : null;
|
|
1329
|
+
return {
|
|
1330
|
+
deliveryMode,
|
|
1331
|
+
broadcastFilter
|
|
1332
|
+
};
|
|
1333
|
+
}
|
|
1334
|
+
setSignalMetadata(signal, metadata) {
|
|
1335
|
+
const metadataKey = this.resolveSignalMetadataKey(signal);
|
|
1336
|
+
if (!metadataKey) {
|
|
1337
|
+
return;
|
|
1338
|
+
}
|
|
1339
|
+
const normalized = this.normalizeSignalMetadata(metadata);
|
|
1340
|
+
if (!normalized) {
|
|
1341
|
+
this.signalMetadataRegistry.delete(metadataKey);
|
|
1342
|
+
return;
|
|
1343
|
+
}
|
|
1344
|
+
this.signalMetadataRegistry.set(metadataKey, normalized);
|
|
1345
|
+
}
|
|
1346
|
+
getSignalMetadata(signal) {
|
|
1347
|
+
const metadataKey = this.resolveSignalMetadataKey(signal);
|
|
1348
|
+
if (!metadataKey) {
|
|
1349
|
+
return void 0;
|
|
1350
|
+
}
|
|
1351
|
+
const metadata = this.signalMetadataRegistry.get(metadataKey);
|
|
1352
|
+
if (!metadata) {
|
|
1353
|
+
return void 0;
|
|
1354
|
+
}
|
|
1355
|
+
return merge_default({}, metadata);
|
|
1356
|
+
}
|
|
1315
1357
|
// Dor debugging
|
|
1316
1358
|
logMemoryFootprint(label = "current") {
|
|
1317
1359
|
console.log(`[${label}] SignalBroker state sizes:`);
|
|
@@ -1396,7 +1438,8 @@ var SignalBroker = class _SignalBroker {
|
|
|
1396
1438
|
const processedSignals = uniqueSignals.map((signal) => ({
|
|
1397
1439
|
signal,
|
|
1398
1440
|
data: {
|
|
1399
|
-
registered: this.signalObservers.get(signal)?.registered ?? false
|
|
1441
|
+
registered: this.signalObservers.get(signal)?.registered ?? false,
|
|
1442
|
+
metadata: this.getSignalMetadata(signal) ?? null
|
|
1400
1443
|
}
|
|
1401
1444
|
}));
|
|
1402
1445
|
return {
|
|
@@ -1746,10 +1789,11 @@ var SignalBroker = class _SignalBroker {
|
|
|
1746
1789
|
execute(signal, context) {
|
|
1747
1790
|
const isMeta = signal.includes("meta.");
|
|
1748
1791
|
const isSubMeta = signal.includes("sub_meta.") || context.__isSubMeta;
|
|
1792
|
+
const isReceivedSignalTransmission = context.__receivedSignalTransmission === true;
|
|
1749
1793
|
const isMetric = context.__signalEmission?.isMetric;
|
|
1794
|
+
const isNewTrace = !context.__signalEmission?.executionTraceId && !context.__metadata?.__executionTraceId && !context.__executionTraceId;
|
|
1750
1795
|
const executionTraceId = context.__signalEmission?.executionTraceId ?? context.__metadata?.__executionTraceId ?? context.__executionTraceId ?? (0, import_uuid.v4)();
|
|
1751
1796
|
if (!isSubMeta && (!isMeta || this.debug)) {
|
|
1752
|
-
const isNewTrace = !context.__signalEmission?.executionTraceId && !context.__metadata?.__executionTraceId && !context.__executionTraceId;
|
|
1753
1797
|
if (isNewTrace) {
|
|
1754
1798
|
this.emit("sub_meta.signal_broker.new_trace", {
|
|
1755
1799
|
data: {
|
|
@@ -1778,21 +1822,33 @@ var SignalBroker = class _SignalBroker {
|
|
|
1778
1822
|
const signalParts = signal.split(":");
|
|
1779
1823
|
const signalName = signalParts[0];
|
|
1780
1824
|
const signalTag = signalParts.length > 1 ? signalParts[1] : null;
|
|
1825
|
+
const existingSignalEmission = context.__signalEmission && typeof context.__signalEmission === "object" ? context.__signalEmission : {};
|
|
1781
1826
|
context.__signalEmission = {
|
|
1782
|
-
...
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
|
|
1827
|
+
...existingSignalEmission,
|
|
1828
|
+
fullSignalName: existingSignalEmission.fullSignalName ?? signal,
|
|
1829
|
+
uuid: existingSignalEmission.uuid ?? (0, import_uuid.v4)(),
|
|
1830
|
+
executionTraceId: existingSignalEmission.executionTraceId ?? executionTraceId,
|
|
1831
|
+
signalName: existingSignalEmission.signalName ?? signalName,
|
|
1832
|
+
signalTag: existingSignalEmission.signalTag ?? signalTag,
|
|
1833
|
+
emittedAt: existingSignalEmission.emittedAt ?? formatTimestamp(emittedAt),
|
|
1834
|
+
consumed: existingSignalEmission.consumed ?? false,
|
|
1835
|
+
consumedBy: existingSignalEmission.consumedBy ?? null,
|
|
1836
|
+
isMeta: existingSignalEmission.isMeta ?? isMeta,
|
|
1837
|
+
__traceCreatedBySignalBroker: existingSignalEmission.__traceCreatedBySignalBroker ?? isNewTrace
|
|
1791
1838
|
};
|
|
1792
|
-
|
|
1839
|
+
if (!isReceivedSignalTransmission) {
|
|
1840
|
+
if (isNewTrace) {
|
|
1841
|
+
context.__traceCreatedBySignalBroker = true;
|
|
1842
|
+
}
|
|
1843
|
+
this.emit("sub_meta.signal_broker.emitting_signal", { ...context });
|
|
1844
|
+
if (isNewTrace) {
|
|
1845
|
+
delete context.__traceCreatedBySignalBroker;
|
|
1846
|
+
}
|
|
1847
|
+
}
|
|
1793
1848
|
} else if (isSubMeta) {
|
|
1794
1849
|
context.__isSubMeta = true;
|
|
1795
1850
|
}
|
|
1851
|
+
delete context.__receivedSignalTransmission;
|
|
1796
1852
|
context.__metadata = {
|
|
1797
1853
|
...context.__metadata,
|
|
1798
1854
|
__executionTraceId: executionTraceId
|
|
@@ -1856,8 +1912,11 @@ var SignalBroker = class _SignalBroker {
|
|
|
1856
1912
|
* @param {string} signal - The name of the signal to be added.
|
|
1857
1913
|
* @return {void} This method does not return any value.
|
|
1858
1914
|
*/
|
|
1859
|
-
addSignal(signal) {
|
|
1915
|
+
addSignal(signal, metadata) {
|
|
1860
1916
|
let _signal = signal;
|
|
1917
|
+
if (metadata) {
|
|
1918
|
+
this.setSignalMetadata(signal, metadata);
|
|
1919
|
+
}
|
|
1861
1920
|
if (!this.signalObservers.has(_signal)) {
|
|
1862
1921
|
this.validateSignalName(_signal);
|
|
1863
1922
|
this.signalObservers.set(_signal, {
|
|
@@ -1887,11 +1946,14 @@ var SignalBroker = class _SignalBroker {
|
|
|
1887
1946
|
* @param routineOrTask The observer.
|
|
1888
1947
|
* @edge Duplicates ignored; supports wildcards for broad listening.
|
|
1889
1948
|
*/
|
|
1890
|
-
observe(signal, routineOrTask) {
|
|
1891
|
-
this.addSignal(signal);
|
|
1949
|
+
observe(signal, routineOrTask, metadata) {
|
|
1950
|
+
this.addSignal(signal, metadata);
|
|
1892
1951
|
this.signalObservers.get(signal).tasks.add(routineOrTask);
|
|
1893
1952
|
}
|
|
1894
|
-
registerEmittedSignal(signal) {
|
|
1953
|
+
registerEmittedSignal(signal, metadata) {
|
|
1954
|
+
if (metadata) {
|
|
1955
|
+
this.setSignalMetadata(signal, metadata);
|
|
1956
|
+
}
|
|
1895
1957
|
this.emittedSignalsRegistry.add(signal);
|
|
1896
1958
|
}
|
|
1897
1959
|
/**
|
|
@@ -1926,6 +1988,7 @@ var SignalBroker = class _SignalBroker {
|
|
|
1926
1988
|
this.clearThrottleState();
|
|
1927
1989
|
this.signalObservers.clear();
|
|
1928
1990
|
this.emittedSignalsRegistry.clear();
|
|
1991
|
+
this.signalMetadataRegistry.clear();
|
|
1929
1992
|
}
|
|
1930
1993
|
shutdown() {
|
|
1931
1994
|
this.reset();
|
|
@@ -2334,6 +2397,27 @@ var SignalEmitter = class {
|
|
|
2334
2397
|
};
|
|
2335
2398
|
|
|
2336
2399
|
// src/graph/execution/GraphNode.ts
|
|
2400
|
+
function normalizeGraphErrorMessage(error) {
|
|
2401
|
+
if (typeof error === "string") {
|
|
2402
|
+
return error;
|
|
2403
|
+
}
|
|
2404
|
+
if (error instanceof Error) {
|
|
2405
|
+
return error.message;
|
|
2406
|
+
}
|
|
2407
|
+
if (error && typeof error === "object") {
|
|
2408
|
+
const record = error;
|
|
2409
|
+
if (typeof record.__error === "string") {
|
|
2410
|
+
return record.__error;
|
|
2411
|
+
}
|
|
2412
|
+
if (typeof record.error === "string") {
|
|
2413
|
+
return record.error;
|
|
2414
|
+
}
|
|
2415
|
+
if (typeof record.message === "string") {
|
|
2416
|
+
return record.message;
|
|
2417
|
+
}
|
|
2418
|
+
}
|
|
2419
|
+
return String(error);
|
|
2420
|
+
}
|
|
2337
2421
|
var GraphNode = class _GraphNode extends SignalEmitter {
|
|
2338
2422
|
constructor(task, context, routineExecId, prevNodes = [], debug = false, verbose = false) {
|
|
2339
2423
|
super(
|
|
@@ -2495,6 +2579,7 @@ var GraphNode = class _GraphNode extends SignalEmitter {
|
|
|
2495
2579
|
uuid: this.id,
|
|
2496
2580
|
routineExecutionId: this.routineExecId,
|
|
2497
2581
|
executionTraceId: this.executionTraceId,
|
|
2582
|
+
inquiryId: context.__inquiryId ?? null,
|
|
2498
2583
|
context: this.context.getContext(),
|
|
2499
2584
|
metaContext: this.context.getMetadata(),
|
|
2500
2585
|
taskName: this.task.name,
|
|
@@ -2517,7 +2602,8 @@ var GraphNode = class _GraphNode extends SignalEmitter {
|
|
|
2517
2602
|
{
|
|
2518
2603
|
data: {
|
|
2519
2604
|
taskExecutionId: this.id,
|
|
2520
|
-
previousTaskExecutionId: node.id
|
|
2605
|
+
previousTaskExecutionId: node.id,
|
|
2606
|
+
executionTraceId: context.__metadata?.__executionTraceId ?? context.__executionTraceId ?? null
|
|
2521
2607
|
},
|
|
2522
2608
|
filter: {
|
|
2523
2609
|
taskName: this.task.name,
|
|
@@ -2535,7 +2621,8 @@ var GraphNode = class _GraphNode extends SignalEmitter {
|
|
|
2535
2621
|
{
|
|
2536
2622
|
data: {
|
|
2537
2623
|
taskExecutionId: this.id,
|
|
2538
|
-
previousTaskExecutionId: context.__previousTaskExecutionId
|
|
2624
|
+
previousTaskExecutionId: context.__previousTaskExecutionId,
|
|
2625
|
+
executionTraceId: context.__metadata?.__executionTraceId ?? context.__executionTraceId ?? null
|
|
2539
2626
|
},
|
|
2540
2627
|
filter: {
|
|
2541
2628
|
taskName: this.task.name,
|
|
@@ -2772,7 +2859,14 @@ var GraphNode = class _GraphNode extends SignalEmitter {
|
|
|
2772
2859
|
inquire(inquiry, context, options) {
|
|
2773
2860
|
return Cadenza.resolveRuntimeInquiryDelegate()(
|
|
2774
2861
|
inquiry,
|
|
2775
|
-
{
|
|
2862
|
+
{
|
|
2863
|
+
...context,
|
|
2864
|
+
__executionTraceId: context.__executionTraceId ?? context.__metadata?.__executionTraceId ?? this.executionTraceId,
|
|
2865
|
+
__inquirySourceTaskName: this.task.name,
|
|
2866
|
+
__inquirySourceTaskVersion: this.task.version,
|
|
2867
|
+
__inquirySourceTaskExecutionId: this.id,
|
|
2868
|
+
__inquirySourceRoutineExecutionId: this.routineExecId
|
|
2869
|
+
},
|
|
2776
2870
|
options
|
|
2777
2871
|
);
|
|
2778
2872
|
}
|
|
@@ -2942,11 +3036,12 @@ var GraphNode = class _GraphNode extends SignalEmitter {
|
|
|
2942
3036
|
* @return {void} This method does not return any value.
|
|
2943
3037
|
*/
|
|
2944
3038
|
onError(error, errorData = {}) {
|
|
3039
|
+
const normalizedError = normalizeGraphErrorMessage(error);
|
|
2945
3040
|
this.result = {
|
|
2946
3041
|
...this.context.getFullContext(),
|
|
2947
|
-
__error: `Node error: ${
|
|
3042
|
+
__error: `Node error: ${normalizedError}`,
|
|
2948
3043
|
__retries: this.retries,
|
|
2949
|
-
error: `Node error: ${
|
|
3044
|
+
error: `Node error: ${normalizedError}`,
|
|
2950
3045
|
errored: true,
|
|
2951
3046
|
returnedValue: this.result,
|
|
2952
3047
|
...errorData
|
|
@@ -3521,8 +3616,16 @@ var GraphRunner = class extends SignalEmitter {
|
|
|
3521
3616
|
const isNewTrace = !context.__routineExecId && !context.__metadata?.__executionTraceId && !context.__executionTraceId;
|
|
3522
3617
|
const executionTraceId = context.__metadata?.__executionTraceId ?? context.__executionTraceId ?? (0, import_uuid5.v4)();
|
|
3523
3618
|
context.__executionTraceId = executionTraceId;
|
|
3619
|
+
context.__traceCreatedByRunner = isNewTrace;
|
|
3620
|
+
const isNewRoutine = !context.__routineExecId;
|
|
3524
3621
|
const routineExecId = context.__routineExecId ?? (0, import_uuid5.v4)();
|
|
3525
3622
|
context.__routineExecId = routineExecId;
|
|
3623
|
+
const routineCreatedAt = formatTimestamp(Date.now());
|
|
3624
|
+
context.__routineCreatedByRunner = isNewRoutine;
|
|
3625
|
+
context.__routineName = routineName;
|
|
3626
|
+
context.__routineVersion = routineVersion;
|
|
3627
|
+
context.__routineCreatedAt = routineCreatedAt;
|
|
3628
|
+
context.__routineIsMeta = isMeta;
|
|
3526
3629
|
Cadenza.applyRuntimeValidationScopesToContext(
|
|
3527
3630
|
context,
|
|
3528
3631
|
routineName,
|
|
@@ -3557,8 +3660,7 @@ var GraphRunner = class extends SignalEmitter {
|
|
|
3557
3660
|
executionTraceId,
|
|
3558
3661
|
context: ctx.getContext(),
|
|
3559
3662
|
metaContext: ctx.getMetadata(),
|
|
3560
|
-
|
|
3561
|
-
created: formatTimestamp(Date.now())
|
|
3663
|
+
created: routineCreatedAt
|
|
3562
3664
|
},
|
|
3563
3665
|
__metadata: {
|
|
3564
3666
|
__executionTraceId: executionTraceId
|
|
@@ -3791,6 +3893,7 @@ var Actor = class {
|
|
|
3791
3893
|
this.stateByKey = /* @__PURE__ */ new Map();
|
|
3792
3894
|
this.sessionByKey = /* @__PURE__ */ new Map();
|
|
3793
3895
|
this.idempotencyByKey = /* @__PURE__ */ new Map();
|
|
3896
|
+
this.writeQueueByKey = /* @__PURE__ */ new Map();
|
|
3794
3897
|
this.nextTaskBindingIndex = 0;
|
|
3795
3898
|
if (!spec.name || typeof spec.name !== "string") {
|
|
3796
3899
|
throw new Error("Actor name must be a non-empty string");
|
|
@@ -3972,7 +4075,7 @@ var Actor = class {
|
|
|
3972
4075
|
taskBindingId,
|
|
3973
4076
|
actorKey,
|
|
3974
4077
|
invocationOptions,
|
|
3975
|
-
runTask
|
|
4078
|
+
() => this.runWithPerKeyWriteSerialization(actorKey, mode, runTask)
|
|
3976
4079
|
);
|
|
3977
4080
|
};
|
|
3978
4081
|
wrapped[ACTOR_TASK_METADATA] = {
|
|
@@ -4250,6 +4353,24 @@ var Actor = class {
|
|
|
4250
4353
|
});
|
|
4251
4354
|
return promise;
|
|
4252
4355
|
}
|
|
4356
|
+
runWithPerKeyWriteSerialization(actorKey, mode, runTask) {
|
|
4357
|
+
if (mode === "read") {
|
|
4358
|
+
return runTask();
|
|
4359
|
+
}
|
|
4360
|
+
const previous = this.writeQueueByKey.get(actorKey) ?? Promise.resolve();
|
|
4361
|
+
let releaseCurrent;
|
|
4362
|
+
const currentGate = new Promise((resolve) => {
|
|
4363
|
+
releaseCurrent = resolve;
|
|
4364
|
+
});
|
|
4365
|
+
const currentTail = previous.catch(() => void 0).then(() => currentGate);
|
|
4366
|
+
this.writeQueueByKey.set(actorKey, currentTail);
|
|
4367
|
+
return previous.catch(() => void 0).then(runTask).finally(() => {
|
|
4368
|
+
releaseCurrent();
|
|
4369
|
+
if (this.writeQueueByKey.get(actorKey) === currentTail) {
|
|
4370
|
+
this.writeQueueByKey.delete(actorKey);
|
|
4371
|
+
}
|
|
4372
|
+
});
|
|
4373
|
+
}
|
|
4253
4374
|
getActiveIdempotencyRecord(compositeKey) {
|
|
4254
4375
|
const record = this.idempotencyByKey.get(compositeKey);
|
|
4255
4376
|
if (!record) {
|
|
@@ -4267,23 +4388,25 @@ var Actor = class {
|
|
|
4267
4388
|
return;
|
|
4268
4389
|
}
|
|
4269
4390
|
const timeoutMs = normalizePositiveInteger(this.spec.session?.persistenceTimeoutMs) ?? 5e3;
|
|
4391
|
+
const persistenceContext = {
|
|
4392
|
+
actor_name: this.spec.name,
|
|
4393
|
+
actor_version: 1,
|
|
4394
|
+
actor_key: actorKey,
|
|
4395
|
+
durable_state: cloneForDurableState(durableState),
|
|
4396
|
+
durable_version: durableVersion,
|
|
4397
|
+
expires_at: null
|
|
4398
|
+
};
|
|
4270
4399
|
const response = await inquire(
|
|
4271
4400
|
META_ACTOR_SESSION_STATE_PERSIST_INTENT,
|
|
4272
|
-
|
|
4273
|
-
actor_name: this.spec.name,
|
|
4274
|
-
actor_version: 1,
|
|
4275
|
-
actor_key: actorKey,
|
|
4276
|
-
durable_state: cloneForDurableState(durableState),
|
|
4277
|
-
durable_version: durableVersion,
|
|
4278
|
-
expires_at: null
|
|
4279
|
-
},
|
|
4401
|
+
persistenceContext,
|
|
4280
4402
|
{
|
|
4281
4403
|
timeout: timeoutMs,
|
|
4404
|
+
requireComplete: true,
|
|
4282
4405
|
rejectOnTimeout: true
|
|
4283
4406
|
}
|
|
4284
4407
|
);
|
|
4285
4408
|
if (!isObject2(response) || response.__success !== true || response.persisted !== true) {
|
|
4286
|
-
const reason = isObject2(response) ? response.__error ?? response.error : void 0;
|
|
4409
|
+
const reason = isObject2(response) ? response.__error ?? response.error ?? response.internalError ?? (response.errored === true ? `errored response keys: ${Object.keys(response).join(",")}` : response.failed === true ? `failed response keys: ${Object.keys(response).join(",")}` : void 0) : void 0;
|
|
4287
4410
|
throw new Error(
|
|
4288
4411
|
`Actor "${this.spec.name}" durable state persistence failed for key "${actorKey}"${reason ? `: ${String(reason)}` : ""}`
|
|
4289
4412
|
);
|
|
@@ -4317,6 +4440,20 @@ var Actor = class {
|
|
|
4317
4440
|
};
|
|
4318
4441
|
|
|
4319
4442
|
// src/graph/definition/Task.ts
|
|
4443
|
+
function normalizeSignalDefinition(input) {
|
|
4444
|
+
if (typeof input === "string") {
|
|
4445
|
+
return {
|
|
4446
|
+
name: input
|
|
4447
|
+
};
|
|
4448
|
+
}
|
|
4449
|
+
return {
|
|
4450
|
+
name: input.name,
|
|
4451
|
+
metadata: {
|
|
4452
|
+
deliveryMode: input.deliveryMode,
|
|
4453
|
+
broadcastFilter: input.broadcastFilter ?? null
|
|
4454
|
+
}
|
|
4455
|
+
};
|
|
4456
|
+
}
|
|
4320
4457
|
var Task = class _Task extends SignalEmitter {
|
|
4321
4458
|
/**
|
|
4322
4459
|
* Constructs an instance of the task with the specified properties and configuration options.
|
|
@@ -4412,6 +4549,7 @@ var Task = class _Task extends SignalEmitter {
|
|
|
4412
4549
|
"meta.task.output_schema_missing",
|
|
4413
4550
|
"meta.task.relationship_added",
|
|
4414
4551
|
"meta.task.relationship_removed",
|
|
4552
|
+
"meta.task.intent_associated",
|
|
4415
4553
|
"meta.task.layer_index_changed",
|
|
4416
4554
|
"meta.node.scheduled",
|
|
4417
4555
|
"meta.node.mapped",
|
|
@@ -5136,9 +5274,10 @@ var Task = class _Task extends SignalEmitter {
|
|
|
5136
5274
|
* @return {this} The current instance after adding the specified signals.
|
|
5137
5275
|
*/
|
|
5138
5276
|
doOn(...signals) {
|
|
5139
|
-
signals.forEach((
|
|
5277
|
+
signals.forEach((input) => {
|
|
5278
|
+
const { name: signal, metadata } = normalizeSignalDefinition(input);
|
|
5140
5279
|
if (this.observedSignals.has(signal)) return;
|
|
5141
|
-
Cadenza.signalBroker.observe(signal, this);
|
|
5280
|
+
Cadenza.signalBroker.observe(signal, this, metadata);
|
|
5142
5281
|
this.observedSignals.add(signal);
|
|
5143
5282
|
if (this.register) {
|
|
5144
5283
|
this.emitWithMetadata("meta.task.observed_signal", {
|
|
@@ -5159,13 +5298,14 @@ var Task = class _Task extends SignalEmitter {
|
|
|
5159
5298
|
* @return {this} The current instance for method chaining.
|
|
5160
5299
|
*/
|
|
5161
5300
|
emits(...signals) {
|
|
5162
|
-
signals.forEach((
|
|
5301
|
+
signals.forEach((input) => {
|
|
5302
|
+
const { name: signal } = normalizeSignalDefinition(input);
|
|
5163
5303
|
if (this.observedSignals.has(signal))
|
|
5164
5304
|
throw new Error(
|
|
5165
5305
|
`Detected signal loop for task ${this.name}. Signal name: ${signal}`
|
|
5166
5306
|
);
|
|
5167
5307
|
this.signalsToEmitAfter.add(signal);
|
|
5168
|
-
this.attachSignal(
|
|
5308
|
+
this.attachSignal(input);
|
|
5169
5309
|
});
|
|
5170
5310
|
return this;
|
|
5171
5311
|
}
|
|
@@ -5177,9 +5317,10 @@ var Task = class _Task extends SignalEmitter {
|
|
|
5177
5317
|
* @return {this} Returns the current instance for chaining.
|
|
5178
5318
|
*/
|
|
5179
5319
|
emitsOnFail(...signals) {
|
|
5180
|
-
signals.forEach((
|
|
5320
|
+
signals.forEach((input) => {
|
|
5321
|
+
const { name: signal } = normalizeSignalDefinition(input);
|
|
5181
5322
|
this.signalsToEmitOnFail.add(signal);
|
|
5182
|
-
this.attachSignal(
|
|
5323
|
+
this.attachSignal(input);
|
|
5183
5324
|
});
|
|
5184
5325
|
return this;
|
|
5185
5326
|
}
|
|
@@ -5190,9 +5331,10 @@ var Task = class _Task extends SignalEmitter {
|
|
|
5190
5331
|
* @return {void} This method does not return a value.
|
|
5191
5332
|
*/
|
|
5192
5333
|
attachSignal(...signals) {
|
|
5193
|
-
signals.forEach((
|
|
5334
|
+
signals.forEach((input) => {
|
|
5335
|
+
const { name: signal, metadata } = normalizeSignalDefinition(input);
|
|
5194
5336
|
this.emitsSignals.add(signal);
|
|
5195
|
-
Cadenza.signalBroker.registerEmittedSignal(signal);
|
|
5337
|
+
Cadenza.signalBroker.registerEmittedSignal(signal, metadata);
|
|
5196
5338
|
if (this.register) {
|
|
5197
5339
|
const data = {
|
|
5198
5340
|
signals: {
|
|
@@ -5286,8 +5428,20 @@ var Task = class _Task extends SignalEmitter {
|
|
|
5286
5428
|
}
|
|
5287
5429
|
respondsTo(...inquires) {
|
|
5288
5430
|
for (const intentName of inquires) {
|
|
5431
|
+
if (this.handlesIntents.has(intentName)) {
|
|
5432
|
+
continue;
|
|
5433
|
+
}
|
|
5289
5434
|
this.handlesIntents.add(intentName);
|
|
5290
5435
|
Cadenza.inquiryBroker.observe(intentName, this);
|
|
5436
|
+
if (this.register) {
|
|
5437
|
+
this.emitWithMetadata("meta.task.intent_associated", {
|
|
5438
|
+
data: {
|
|
5439
|
+
intentName,
|
|
5440
|
+
taskName: this.name,
|
|
5441
|
+
taskVersion: this.version
|
|
5442
|
+
}
|
|
5443
|
+
});
|
|
5444
|
+
}
|
|
5291
5445
|
const intent = Cadenza.inquiryBroker.intents.get(intentName);
|
|
5292
5446
|
if (intent?.input) {
|
|
5293
5447
|
this.inputContextSchema = this.mergeSchemaVariant(
|