@cadenza.io/core 2.0.0 → 3.0.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/dist/index.d.mts +84 -71
- package/dist/index.d.ts +84 -71
- package/dist/index.js +246 -147
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +246 -146
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -29,7 +29,6 @@ __export(index_exports, {
|
|
|
29
29
|
GraphRunner: () => GraphRunner,
|
|
30
30
|
SignalBroker: () => SignalBroker,
|
|
31
31
|
SignalEmitter: () => SignalEmitter,
|
|
32
|
-
SignalParticipant: () => SignalParticipant,
|
|
33
32
|
SignalTask: () => SignalTask,
|
|
34
33
|
Task: () => Task,
|
|
35
34
|
default: () => index_default
|
|
@@ -140,7 +139,7 @@ var SignalBroker = class _SignalBroker {
|
|
|
140
139
|
return true;
|
|
141
140
|
},
|
|
142
141
|
"Executes queued signals and clears the stack"
|
|
143
|
-
).doOn("meta.process_signal_queue_requested").
|
|
142
|
+
).doOn("meta.process_signal_queue_requested").emits("meta.signal_broker.queue_empty");
|
|
144
143
|
this.getSignalsTask = Cadenza.createMetaTask("Get signals", (ctx) => {
|
|
145
144
|
return {
|
|
146
145
|
__signals: Array.from(this.signalObservers.keys()),
|
|
@@ -197,7 +196,7 @@ var SignalBroker = class _SignalBroker {
|
|
|
197
196
|
execute(signal, context) {
|
|
198
197
|
var _a, _b, _c;
|
|
199
198
|
const isMeta = signal.startsWith("meta.");
|
|
200
|
-
const isSubMeta = signal.startsWith("sub_meta.");
|
|
199
|
+
const isSubMeta = signal.startsWith("sub_meta.") || context.__isSubMeta;
|
|
201
200
|
const isMetric = (_a = context.__signalEmission) == null ? void 0 : _a.isMetric;
|
|
202
201
|
if (!isSubMeta && (!isMeta || this.debug)) {
|
|
203
202
|
const emittedAt = Date.now();
|
|
@@ -215,9 +214,9 @@ var SignalBroker = class _SignalBroker {
|
|
|
215
214
|
} else {
|
|
216
215
|
delete context.__signalEmission;
|
|
217
216
|
}
|
|
218
|
-
if (this.debug && (!isMetric || this.verbose)) {
|
|
217
|
+
if (this.debug && (!isMetric && !isSubMeta || this.verbose)) {
|
|
219
218
|
console.log(
|
|
220
|
-
`EMITTING
|
|
219
|
+
`EMITTING ${signal} to listeners ${(_c = (_b = this.signalObservers.get(signal)) == null ? void 0 : _b.tasks.size) != null ? _c : 0} with context ${this.verbose ? JSON.stringify(context) : JSON.stringify(context).slice(0, 100)}`
|
|
221
220
|
);
|
|
222
221
|
}
|
|
223
222
|
let executed;
|
|
@@ -365,10 +364,10 @@ var VueFlowExportVisitor = class {
|
|
|
365
364
|
}
|
|
366
365
|
visitNode(node) {
|
|
367
366
|
const snapshot = node.export();
|
|
368
|
-
if (!this.contextToColor[snapshot.__context.
|
|
369
|
-
this.contextToColor[snapshot.__context.
|
|
367
|
+
if (!this.contextToColor[snapshot.__context.id]) {
|
|
368
|
+
this.contextToColor[snapshot.__context.id] = this.colorRandomizer.getRandomColor();
|
|
370
369
|
}
|
|
371
|
-
const color = this.contextToColor[snapshot.__context.
|
|
370
|
+
const color = this.contextToColor[snapshot.__context.id];
|
|
372
371
|
this.elements.push({
|
|
373
372
|
id: snapshot.__id.slice(0, 8),
|
|
374
373
|
label: snapshot.__task.__name,
|
|
@@ -385,7 +384,7 @@ var VueFlowExportVisitor = class {
|
|
|
385
384
|
executionEnd: snapshot.__executionEnd,
|
|
386
385
|
description: snapshot.__task.__description,
|
|
387
386
|
functionString: snapshot.__task.__functionString,
|
|
388
|
-
context: snapshot.__context.
|
|
387
|
+
context: snapshot.__context.context,
|
|
389
388
|
layerIndex: snapshot.__task.__layerIndex
|
|
390
389
|
}
|
|
391
390
|
});
|
|
@@ -619,8 +618,8 @@ var GraphContext = class _GraphContext {
|
|
|
619
618
|
*/
|
|
620
619
|
export() {
|
|
621
620
|
return {
|
|
622
|
-
|
|
623
|
-
|
|
621
|
+
id: this.id,
|
|
622
|
+
context: this.getFullContext()
|
|
624
623
|
};
|
|
625
624
|
}
|
|
626
625
|
};
|
|
@@ -768,7 +767,7 @@ var GraphNode = class _GraphNode extends SignalEmitter {
|
|
|
768
767
|
return this.task.getTag(this.context);
|
|
769
768
|
}
|
|
770
769
|
scheduleOn(layer) {
|
|
771
|
-
var _a;
|
|
770
|
+
var _a, _b, _c;
|
|
772
771
|
let shouldSchedule = true;
|
|
773
772
|
const nodes = layer.getNodesByRoutineExecId(this.routineExecId);
|
|
774
773
|
for (const node of nodes) {
|
|
@@ -791,7 +790,7 @@ var GraphNode = class _GraphNode extends SignalEmitter {
|
|
|
791
790
|
data: {
|
|
792
791
|
uuid: this.id,
|
|
793
792
|
routineExecutionId: this.routineExecId,
|
|
794
|
-
|
|
793
|
+
executionTraceId: (_b = context.__executionTraceId) != null ? _b : (_a = context.__metadata) == null ? void 0 : _a.__executionTraceId,
|
|
795
794
|
context: this.context.export(),
|
|
796
795
|
taskName: this.task.name,
|
|
797
796
|
taskVersion: this.task.version,
|
|
@@ -816,7 +815,7 @@ var GraphNode = class _GraphNode extends SignalEmitter {
|
|
|
816
815
|
}
|
|
817
816
|
});
|
|
818
817
|
});
|
|
819
|
-
if (((
|
|
818
|
+
if (((_c = context.__signalEmission) == null ? void 0 : _c.consumed) === false && (!this.isMeta() || this.debug)) {
|
|
820
819
|
this.emitMetricsWithMetadata("meta.node.consumed_signal", {
|
|
821
820
|
data: {
|
|
822
821
|
signalName: context.__signalEmission.signalName,
|
|
@@ -1338,139 +1337,21 @@ var GraphNode = class _GraphNode extends SignalEmitter {
|
|
|
1338
1337
|
}
|
|
1339
1338
|
};
|
|
1340
1339
|
|
|
1341
|
-
// src/interfaces/SignalParticipant.ts
|
|
1342
|
-
var SignalParticipant = class extends SignalEmitter {
|
|
1343
|
-
constructor() {
|
|
1344
|
-
super(...arguments);
|
|
1345
|
-
this.emitsSignals = /* @__PURE__ */ new Set();
|
|
1346
|
-
this.signalsToEmitAfter = /* @__PURE__ */ new Set();
|
|
1347
|
-
this.signalsToEmitOnFail = /* @__PURE__ */ new Set();
|
|
1348
|
-
this.observedSignals = /* @__PURE__ */ new Set();
|
|
1349
|
-
}
|
|
1350
|
-
/**
|
|
1351
|
-
* Subscribes to signals (chainable).
|
|
1352
|
-
* @param signals The signal names.
|
|
1353
|
-
* @returns This for chaining.
|
|
1354
|
-
* @edge Duplicates ignored; assumes broker.observe binds this as handler.
|
|
1355
|
-
*/
|
|
1356
|
-
doOn(...signals) {
|
|
1357
|
-
signals.forEach((signal) => {
|
|
1358
|
-
if (this.observedSignals.has(signal)) return;
|
|
1359
|
-
Cadenza.broker.observe(signal, this);
|
|
1360
|
-
this.observedSignals.add(signal);
|
|
1361
|
-
});
|
|
1362
|
-
return this;
|
|
1363
|
-
}
|
|
1364
|
-
/**
|
|
1365
|
-
* Sets signals to emit post-execution (chainable).
|
|
1366
|
-
* @param signals The signal names.
|
|
1367
|
-
* @returns This for chaining.
|
|
1368
|
-
*/
|
|
1369
|
-
emitsAfter(...signals) {
|
|
1370
|
-
signals.forEach((signal) => {
|
|
1371
|
-
this.signalsToEmitAfter.add(signal);
|
|
1372
|
-
this.emitsSignals.add(signal);
|
|
1373
|
-
});
|
|
1374
|
-
return this;
|
|
1375
|
-
}
|
|
1376
|
-
emitsOnFail(...signals) {
|
|
1377
|
-
signals.forEach((signal) => {
|
|
1378
|
-
this.signalsToEmitOnFail.add(signal);
|
|
1379
|
-
this.emitsSignals.add(signal);
|
|
1380
|
-
});
|
|
1381
|
-
return this;
|
|
1382
|
-
}
|
|
1383
|
-
/**
|
|
1384
|
-
* Unsubscribes from all observed signals.
|
|
1385
|
-
* @returns This for chaining.
|
|
1386
|
-
*/
|
|
1387
|
-
unsubscribeAll() {
|
|
1388
|
-
this.observedSignals.forEach(
|
|
1389
|
-
(signal) => Cadenza.broker.unsubscribe(signal, this)
|
|
1390
|
-
);
|
|
1391
|
-
this.observedSignals.clear();
|
|
1392
|
-
return this;
|
|
1393
|
-
}
|
|
1394
|
-
/**
|
|
1395
|
-
* Unsubscribes from specific signals.
|
|
1396
|
-
* @param signals The signals.
|
|
1397
|
-
* @returns This for chaining.
|
|
1398
|
-
* @edge No-op if not subscribed.
|
|
1399
|
-
*/
|
|
1400
|
-
unsubscribe(...signals) {
|
|
1401
|
-
signals.forEach((signal) => {
|
|
1402
|
-
if (this.observedSignals.has(signal)) {
|
|
1403
|
-
Cadenza.broker.unsubscribe(signal, this);
|
|
1404
|
-
this.observedSignals.delete(signal);
|
|
1405
|
-
}
|
|
1406
|
-
});
|
|
1407
|
-
return this;
|
|
1408
|
-
}
|
|
1409
|
-
/**
|
|
1410
|
-
* Detaches specific emitted signals.
|
|
1411
|
-
* @param signals The signals.
|
|
1412
|
-
* @returns This for chaining.
|
|
1413
|
-
*/
|
|
1414
|
-
detachSignals(...signals) {
|
|
1415
|
-
signals.forEach((signal) => this.signalsToEmitAfter.delete(signal));
|
|
1416
|
-
return this;
|
|
1417
|
-
}
|
|
1418
|
-
/**
|
|
1419
|
-
* Detaches all emitted signals.
|
|
1420
|
-
* @returns This for chaining.
|
|
1421
|
-
*/
|
|
1422
|
-
detachAllSignals() {
|
|
1423
|
-
this.signalsToEmitAfter.clear();
|
|
1424
|
-
return this;
|
|
1425
|
-
}
|
|
1426
|
-
mapSignals(callback) {
|
|
1427
|
-
return Array.from(this.signalsToEmitAfter).map(callback);
|
|
1428
|
-
}
|
|
1429
|
-
mapOnFailSignals(callback) {
|
|
1430
|
-
return Array.from(this.signalsToEmitOnFail).map(callback);
|
|
1431
|
-
}
|
|
1432
|
-
/**
|
|
1433
|
-
* Emits attached signals.
|
|
1434
|
-
* @param context The context for emission.
|
|
1435
|
-
* @edge If isMeta (from Task), suppresses further "meta.*" to prevent loops.
|
|
1436
|
-
*/
|
|
1437
|
-
emitSignals(context) {
|
|
1438
|
-
this.signalsToEmitAfter.forEach((signal) => {
|
|
1439
|
-
this.emit(signal, context.getFullContext());
|
|
1440
|
-
});
|
|
1441
|
-
}
|
|
1442
|
-
/**
|
|
1443
|
-
* Emits attached fail signals.
|
|
1444
|
-
* @param context The context for emission.
|
|
1445
|
-
* @edge If isMeta (from Task), suppresses further "meta.*" to prevent loops.
|
|
1446
|
-
*/
|
|
1447
|
-
emitOnFailSignals(context) {
|
|
1448
|
-
this.signalsToEmitOnFail.forEach((signal) => {
|
|
1449
|
-
this.emit(signal, context.getFullContext());
|
|
1450
|
-
});
|
|
1451
|
-
}
|
|
1452
|
-
/**
|
|
1453
|
-
* Destroys the participant (unsub/detach).
|
|
1454
|
-
*/
|
|
1455
|
-
destroy() {
|
|
1456
|
-
this.unsubscribeAll();
|
|
1457
|
-
this.detachAllSignals();
|
|
1458
|
-
}
|
|
1459
|
-
};
|
|
1460
|
-
|
|
1461
1340
|
// src/graph/definition/GraphRoutine.ts
|
|
1462
|
-
var GraphRoutine = class extends
|
|
1341
|
+
var GraphRoutine = class extends SignalEmitter {
|
|
1463
1342
|
constructor(name, tasks, description, isMeta = false) {
|
|
1464
1343
|
super();
|
|
1465
1344
|
this.version = 1;
|
|
1466
1345
|
this.isMeta = false;
|
|
1467
1346
|
this.tasks = /* @__PURE__ */ new Set();
|
|
1347
|
+
this.observedSignals = /* @__PURE__ */ new Set();
|
|
1468
1348
|
this.name = name;
|
|
1469
1349
|
this.description = description;
|
|
1470
1350
|
this.isMeta = isMeta;
|
|
1471
1351
|
this.emit("meta.routine.created", {
|
|
1472
1352
|
data: {
|
|
1473
1353
|
name: this.name,
|
|
1354
|
+
version: this.version,
|
|
1474
1355
|
description: this.description,
|
|
1475
1356
|
isMeta: this.isMeta
|
|
1476
1357
|
},
|
|
@@ -1509,11 +1390,51 @@ var GraphRoutine = class extends SignalParticipant {
|
|
|
1509
1390
|
this.version = version;
|
|
1510
1391
|
this.emit("meta.routine.global_version_set", { version: this.version });
|
|
1511
1392
|
}
|
|
1512
|
-
|
|
1393
|
+
/**
|
|
1394
|
+
* Subscribes to signals (chainable).
|
|
1395
|
+
* @param signals The signal names.
|
|
1396
|
+
* @returns This for chaining.
|
|
1397
|
+
* @edge Duplicates ignored; assumes broker.observe binds this as handler.
|
|
1398
|
+
*/
|
|
1399
|
+
doOn(...signals) {
|
|
1400
|
+
signals.forEach((signal) => {
|
|
1401
|
+
if (this.observedSignals.has(signal)) return;
|
|
1402
|
+
Cadenza.broker.observe(signal, this);
|
|
1403
|
+
this.observedSignals.add(signal);
|
|
1404
|
+
});
|
|
1405
|
+
return this;
|
|
1406
|
+
}
|
|
1407
|
+
/**
|
|
1408
|
+
* Unsubscribes from all observed signals.
|
|
1409
|
+
* @returns This for chaining.
|
|
1410
|
+
*/
|
|
1411
|
+
unsubscribeAll() {
|
|
1412
|
+
this.observedSignals.forEach(
|
|
1413
|
+
(signal) => Cadenza.broker.unsubscribe(signal, this)
|
|
1414
|
+
);
|
|
1415
|
+
this.observedSignals.clear();
|
|
1416
|
+
return this;
|
|
1417
|
+
}
|
|
1418
|
+
/**
|
|
1419
|
+
* Unsubscribes from specific signals.
|
|
1420
|
+
* @param signals The signals.
|
|
1421
|
+
* @returns This for chaining.
|
|
1422
|
+
* @edge No-op if not subscribed.
|
|
1423
|
+
*/
|
|
1424
|
+
unsubscribe(...signals) {
|
|
1425
|
+
signals.forEach((signal) => {
|
|
1426
|
+
if (this.observedSignals.has(signal)) {
|
|
1427
|
+
Cadenza.broker.unsubscribe(signal, this);
|
|
1428
|
+
this.observedSignals.delete(signal);
|
|
1429
|
+
}
|
|
1430
|
+
});
|
|
1431
|
+
return this;
|
|
1432
|
+
}
|
|
1513
1433
|
/**
|
|
1514
1434
|
* Destroys the routine.
|
|
1515
1435
|
*/
|
|
1516
1436
|
destroy() {
|
|
1437
|
+
this.unsubscribeAll();
|
|
1517
1438
|
this.tasks.clear();
|
|
1518
1439
|
this.emit("meta.routine.destroyed", {
|
|
1519
1440
|
data: { deleted: true },
|
|
@@ -1554,7 +1475,7 @@ var TaskIterator = class {
|
|
|
1554
1475
|
};
|
|
1555
1476
|
|
|
1556
1477
|
// src/graph/definition/Task.ts
|
|
1557
|
-
var Task = class extends
|
|
1478
|
+
var Task = class extends SignalEmitter {
|
|
1558
1479
|
/**
|
|
1559
1480
|
* Constructs a Task (static definition).
|
|
1560
1481
|
* @param name Name.
|
|
@@ -1604,6 +1525,10 @@ var Task = class extends SignalParticipant {
|
|
|
1604
1525
|
this.onFailTasks = /* @__PURE__ */ new Set();
|
|
1605
1526
|
this.predecessorTasks = /* @__PURE__ */ new Set();
|
|
1606
1527
|
this.destroyed = false;
|
|
1528
|
+
this.emitsSignals = /* @__PURE__ */ new Set();
|
|
1529
|
+
this.signalsToEmitAfter = /* @__PURE__ */ new Set();
|
|
1530
|
+
this.signalsToEmitOnFail = /* @__PURE__ */ new Set();
|
|
1531
|
+
this.observedSignals = /* @__PURE__ */ new Set();
|
|
1607
1532
|
this.name = name;
|
|
1608
1533
|
this.taskFunction = task.bind(this);
|
|
1609
1534
|
this.description = description;
|
|
@@ -1628,8 +1553,9 @@ var Task = class extends SignalParticipant {
|
|
|
1628
1553
|
if (register && !this.isHidden && !this.isSubMeta) {
|
|
1629
1554
|
const { __functionString, __getTagCallback } = this.export();
|
|
1630
1555
|
this.emitWithMetadata("meta.task.created", {
|
|
1631
|
-
|
|
1556
|
+
data: {
|
|
1632
1557
|
name: this.name,
|
|
1558
|
+
version: this.version,
|
|
1633
1559
|
description: this.description,
|
|
1634
1560
|
functionString: __functionString,
|
|
1635
1561
|
tagIdGetter: __getTagCallback,
|
|
@@ -1648,8 +1574,8 @@ var Task = class extends SignalParticipant {
|
|
|
1648
1574
|
isMeta: this.isMeta,
|
|
1649
1575
|
validateInputContext: this.validateInputContext,
|
|
1650
1576
|
validateOutputContext: this.validateOutputContext,
|
|
1651
|
-
|
|
1652
|
-
|
|
1577
|
+
inputContextSchema: this.inputContextSchema,
|
|
1578
|
+
outputContextSchema: this.outputContextSchema
|
|
1653
1579
|
},
|
|
1654
1580
|
__taskInstance: this
|
|
1655
1581
|
});
|
|
@@ -2002,8 +1928,165 @@ var Task = class extends SignalParticipant {
|
|
|
2002
1928
|
mapPrevious(callback) {
|
|
2003
1929
|
return Array.from(this.predecessorTasks).map(callback);
|
|
2004
1930
|
}
|
|
1931
|
+
/**
|
|
1932
|
+
* Subscribes to signals (chainable).
|
|
1933
|
+
* @param signals The signal names.
|
|
1934
|
+
* @returns This for chaining.
|
|
1935
|
+
* @edge Duplicates ignored; assumes broker.observe binds this as handler.
|
|
1936
|
+
*/
|
|
1937
|
+
doOn(...signals) {
|
|
1938
|
+
signals.forEach((signal) => {
|
|
1939
|
+
if (this.observedSignals.has(signal)) return;
|
|
1940
|
+
Cadenza.broker.observe(signal, this);
|
|
1941
|
+
this.observedSignals.add(signal);
|
|
1942
|
+
this.emitWithMetadata("meta.task.observed_signal", {
|
|
1943
|
+
data: {
|
|
1944
|
+
signalName: signal,
|
|
1945
|
+
taskName: this.name,
|
|
1946
|
+
taskVersion: this.version
|
|
1947
|
+
}
|
|
1948
|
+
});
|
|
1949
|
+
});
|
|
1950
|
+
return this;
|
|
1951
|
+
}
|
|
1952
|
+
/**
|
|
1953
|
+
* Sets signals to emit post-execution (chainable).
|
|
1954
|
+
* @param signals The signal names.
|
|
1955
|
+
* @returns This for chaining.
|
|
1956
|
+
*/
|
|
1957
|
+
emits(...signals) {
|
|
1958
|
+
signals.forEach((signal) => {
|
|
1959
|
+
this.signalsToEmitAfter.add(signal);
|
|
1960
|
+
this.emitsSignals.add(signal);
|
|
1961
|
+
this.emitWithMetadata("meta.task.attached_signal", {
|
|
1962
|
+
data: {
|
|
1963
|
+
signalName: signal,
|
|
1964
|
+
taskName: this.name,
|
|
1965
|
+
taskVersion: this.version
|
|
1966
|
+
}
|
|
1967
|
+
});
|
|
1968
|
+
});
|
|
1969
|
+
return this;
|
|
1970
|
+
}
|
|
1971
|
+
emitsOnFail(...signals) {
|
|
1972
|
+
signals.forEach((signal) => {
|
|
1973
|
+
this.signalsToEmitOnFail.add(signal);
|
|
1974
|
+
this.emitsSignals.add(signal);
|
|
1975
|
+
this.emitWithMetadata("meta.task.attached_signal", {
|
|
1976
|
+
data: {
|
|
1977
|
+
signalName: signal,
|
|
1978
|
+
taskName: this.name,
|
|
1979
|
+
taskVersion: this.version,
|
|
1980
|
+
isOnFail: true
|
|
1981
|
+
}
|
|
1982
|
+
});
|
|
1983
|
+
});
|
|
1984
|
+
return this;
|
|
1985
|
+
}
|
|
1986
|
+
/**
|
|
1987
|
+
* Unsubscribes from all observed signals.
|
|
1988
|
+
* @returns This for chaining.
|
|
1989
|
+
*/
|
|
1990
|
+
unsubscribeAll() {
|
|
1991
|
+
this.observedSignals.forEach((signal) => {
|
|
1992
|
+
Cadenza.broker.unsubscribe(signal, this);
|
|
1993
|
+
this.emitWithMetadata("meta.task.unsubscribed_signal", {
|
|
1994
|
+
filter: {
|
|
1995
|
+
signalName: signal,
|
|
1996
|
+
taskName: this.name,
|
|
1997
|
+
taskVersion: this.version
|
|
1998
|
+
}
|
|
1999
|
+
});
|
|
2000
|
+
});
|
|
2001
|
+
this.observedSignals.clear();
|
|
2002
|
+
return this;
|
|
2003
|
+
}
|
|
2004
|
+
/**
|
|
2005
|
+
* Unsubscribes from specific signals.
|
|
2006
|
+
* @param signals The signals.
|
|
2007
|
+
* @returns This for chaining.
|
|
2008
|
+
* @edge No-op if not subscribed.
|
|
2009
|
+
*/
|
|
2010
|
+
unsubscribe(...signals) {
|
|
2011
|
+
signals.forEach((signal) => {
|
|
2012
|
+
if (this.observedSignals.has(signal)) {
|
|
2013
|
+
Cadenza.broker.unsubscribe(signal, this);
|
|
2014
|
+
this.observedSignals.delete(signal);
|
|
2015
|
+
this.emitWithMetadata("meta.task.unsubscribed_signal", {
|
|
2016
|
+
filter: {
|
|
2017
|
+
signalName: signal,
|
|
2018
|
+
taskName: this.name,
|
|
2019
|
+
taskVersion: this.version
|
|
2020
|
+
}
|
|
2021
|
+
});
|
|
2022
|
+
}
|
|
2023
|
+
});
|
|
2024
|
+
return this;
|
|
2025
|
+
}
|
|
2026
|
+
/**
|
|
2027
|
+
* Detaches specific emitted signals.
|
|
2028
|
+
* @param signals The signals.
|
|
2029
|
+
* @returns This for chaining.
|
|
2030
|
+
*/
|
|
2031
|
+
detachSignals(...signals) {
|
|
2032
|
+
signals.forEach((signal) => {
|
|
2033
|
+
this.signalsToEmitAfter.delete(signal);
|
|
2034
|
+
this.emitWithMetadata("meta.task.detached_signal", {
|
|
2035
|
+
filter: {
|
|
2036
|
+
signalName: signal,
|
|
2037
|
+
taskName: this.name,
|
|
2038
|
+
taskVersion: this.version
|
|
2039
|
+
}
|
|
2040
|
+
});
|
|
2041
|
+
});
|
|
2042
|
+
return this;
|
|
2043
|
+
}
|
|
2044
|
+
/**
|
|
2045
|
+
* Detaches all emitted signals.
|
|
2046
|
+
* @returns This for chaining.
|
|
2047
|
+
*/
|
|
2048
|
+
detachAllSignals() {
|
|
2049
|
+
this.signalsToEmitAfter.forEach((signal) => {
|
|
2050
|
+
this.emitWithMetadata("meta.task.detached_signal", {
|
|
2051
|
+
filter: {
|
|
2052
|
+
signalName: signal,
|
|
2053
|
+
taskName: this.name,
|
|
2054
|
+
taskVersion: this.version
|
|
2055
|
+
}
|
|
2056
|
+
});
|
|
2057
|
+
});
|
|
2058
|
+
this.signalsToEmitAfter.clear();
|
|
2059
|
+
return this;
|
|
2060
|
+
}
|
|
2061
|
+
mapSignals(callback) {
|
|
2062
|
+
return Array.from(this.signalsToEmitAfter).map(callback);
|
|
2063
|
+
}
|
|
2064
|
+
mapOnFailSignals(callback) {
|
|
2065
|
+
return Array.from(this.signalsToEmitOnFail).map(callback);
|
|
2066
|
+
}
|
|
2067
|
+
/**
|
|
2068
|
+
* Emits attached signals.
|
|
2069
|
+
* @param context The context for emission.
|
|
2070
|
+
* @edge If isMeta (from Task), suppresses further "meta.*" to prevent loops.
|
|
2071
|
+
*/
|
|
2072
|
+
emitSignals(context) {
|
|
2073
|
+
this.signalsToEmitAfter.forEach((signal) => {
|
|
2074
|
+
this.emit(signal, context.getFullContext());
|
|
2075
|
+
});
|
|
2076
|
+
}
|
|
2077
|
+
/**
|
|
2078
|
+
* Emits attached fail signals.
|
|
2079
|
+
* @param context The context for emission.
|
|
2080
|
+
* @edge If isMeta (from Task), suppresses further "meta.*" to prevent loops.
|
|
2081
|
+
*/
|
|
2082
|
+
emitOnFailSignals(context) {
|
|
2083
|
+
this.signalsToEmitOnFail.forEach((signal) => {
|
|
2084
|
+
this.emit(signal, context.getFullContext());
|
|
2085
|
+
});
|
|
2086
|
+
}
|
|
2005
2087
|
destroy() {
|
|
2006
|
-
|
|
2088
|
+
this.unsubscribeAll();
|
|
2089
|
+
this.detachAllSignals();
|
|
2007
2090
|
this.predecessorTasks.forEach((pred) => pred.nextTasks.delete(this));
|
|
2008
2091
|
this.nextTasks.forEach((next) => next.predecessorTasks.delete(this));
|
|
2009
2092
|
this.onFailTasks.forEach((fail) => fail.predecessorTasks.delete(this));
|
|
@@ -2074,7 +2157,7 @@ var GraphRegistry = class _GraphRegistry {
|
|
|
2074
2157
|
true,
|
|
2075
2158
|
false,
|
|
2076
2159
|
true
|
|
2077
|
-
).doOn("meta.task.created");
|
|
2160
|
+
).doOn("meta.task.created").emits("meta.graph_registry.task_registered");
|
|
2078
2161
|
this.tasks.set(this.registerTask.name, this.registerTask);
|
|
2079
2162
|
this.updateTaskInputSchema = Cadenza.createMetaTask(
|
|
2080
2163
|
"Update task input schema",
|
|
@@ -2247,7 +2330,7 @@ var GraphRunner = class extends SignalEmitter {
|
|
|
2247
2330
|
* @edge Empty tasks warns no-op.
|
|
2248
2331
|
*/
|
|
2249
2332
|
addTasks(tasks, context = {}) {
|
|
2250
|
-
var _a, _b, _c, _d, _e, _f;
|
|
2333
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
|
|
2251
2334
|
let _tasks = Array.isArray(tasks) ? tasks : [tasks];
|
|
2252
2335
|
if (_tasks.length === 0) {
|
|
2253
2336
|
console.warn("No tasks/routines to add.");
|
|
@@ -2270,18 +2353,35 @@ var GraphRunner = class extends SignalEmitter {
|
|
|
2270
2353
|
const isSubMeta = allTasks.some((t) => t.isSubMeta) || !!context.__isSubMeta;
|
|
2271
2354
|
context.__isSubMeta = isSubMeta;
|
|
2272
2355
|
const ctx = new GraphContext(context || {});
|
|
2356
|
+
const isNewTrace = !!context.__routineExecId;
|
|
2273
2357
|
const routineExecId = (_a = context.__routineExecId) != null ? _a : (0, import_uuid4.v4)();
|
|
2274
2358
|
context.__routineExecId = routineExecId;
|
|
2275
2359
|
if (!isSubMeta) {
|
|
2360
|
+
const executionTraceId = (_d = (_c = (_b = context.__metadata) == null ? void 0 : _b.__executionTraceId) != null ? _c : context.__executionTraceId) != null ? _d : (0, import_uuid4.v4)();
|
|
2361
|
+
const contextData = ctx.export();
|
|
2362
|
+
if (isNewTrace) {
|
|
2363
|
+
this.emitMetrics("meta.runner.new_trace", {
|
|
2364
|
+
data: {
|
|
2365
|
+
uuid: executionTraceId,
|
|
2366
|
+
issuer_type: "service",
|
|
2367
|
+
// TODO: Add issuer type
|
|
2368
|
+
issuer_id: (_g = (_f = (_e = context.__metadata) == null ? void 0 : _e.__issuerId) != null ? _f : context.__issuerId) != null ? _g : null,
|
|
2369
|
+
issued_at: formatTimestamp(Date.now()),
|
|
2370
|
+
intent: (_j = (_i = (_h = context.__metadata) == null ? void 0 : _h.__intent) != null ? _i : context.__intent) != null ? _j : null,
|
|
2371
|
+
context: contextData,
|
|
2372
|
+
is_meta: isMeta
|
|
2373
|
+
}
|
|
2374
|
+
});
|
|
2375
|
+
}
|
|
2276
2376
|
this.emitMetrics("meta.runner.added_tasks", {
|
|
2277
2377
|
data: {
|
|
2278
2378
|
uuid: routineExecId,
|
|
2279
2379
|
name: routineName,
|
|
2280
2380
|
routineVersion,
|
|
2281
2381
|
isMeta,
|
|
2282
|
-
|
|
2283
|
-
context:
|
|
2284
|
-
previousRoutineExecution: (
|
|
2382
|
+
executionTraceId,
|
|
2383
|
+
context: isNewTrace ? contextData.id : contextData,
|
|
2384
|
+
previousRoutineExecution: (_l = (_k = context.__metadata) == null ? void 0 : _k.__routineExecId) != null ? _l : null,
|
|
2285
2385
|
// TODO: There is a chance this is not added to the database yet...
|
|
2286
2386
|
created: formatTimestamp(Date.now())
|
|
2287
2387
|
}
|
|
@@ -3420,7 +3520,6 @@ var index_default = Cadenza;
|
|
|
3420
3520
|
GraphRunner,
|
|
3421
3521
|
SignalBroker,
|
|
3422
3522
|
SignalEmitter,
|
|
3423
|
-
SignalParticipant,
|
|
3424
3523
|
SignalTask,
|
|
3425
3524
|
Task
|
|
3426
3525
|
});
|