@cadenza.io/core 2.0.0 → 3.0.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 +84 -71
- package/dist/index.d.ts +84 -71
- package/dist/index.js +243 -144
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +243 -143
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -102,7 +102,7 @@ var SignalBroker = class _SignalBroker {
|
|
|
102
102
|
return true;
|
|
103
103
|
},
|
|
104
104
|
"Executes queued signals and clears the stack"
|
|
105
|
-
).doOn("meta.process_signal_queue_requested").
|
|
105
|
+
).doOn("meta.process_signal_queue_requested").emits("meta.signal_broker.queue_empty");
|
|
106
106
|
this.getSignalsTask = Cadenza.createMetaTask("Get signals", (ctx) => {
|
|
107
107
|
return {
|
|
108
108
|
__signals: Array.from(this.signalObservers.keys()),
|
|
@@ -327,10 +327,10 @@ var VueFlowExportVisitor = class {
|
|
|
327
327
|
}
|
|
328
328
|
visitNode(node) {
|
|
329
329
|
const snapshot = node.export();
|
|
330
|
-
if (!this.contextToColor[snapshot.__context.
|
|
331
|
-
this.contextToColor[snapshot.__context.
|
|
330
|
+
if (!this.contextToColor[snapshot.__context.id]) {
|
|
331
|
+
this.contextToColor[snapshot.__context.id] = this.colorRandomizer.getRandomColor();
|
|
332
332
|
}
|
|
333
|
-
const color = this.contextToColor[snapshot.__context.
|
|
333
|
+
const color = this.contextToColor[snapshot.__context.id];
|
|
334
334
|
this.elements.push({
|
|
335
335
|
id: snapshot.__id.slice(0, 8),
|
|
336
336
|
label: snapshot.__task.__name,
|
|
@@ -347,7 +347,7 @@ var VueFlowExportVisitor = class {
|
|
|
347
347
|
executionEnd: snapshot.__executionEnd,
|
|
348
348
|
description: snapshot.__task.__description,
|
|
349
349
|
functionString: snapshot.__task.__functionString,
|
|
350
|
-
context: snapshot.__context.
|
|
350
|
+
context: snapshot.__context.context,
|
|
351
351
|
layerIndex: snapshot.__task.__layerIndex
|
|
352
352
|
}
|
|
353
353
|
});
|
|
@@ -581,8 +581,8 @@ var GraphContext = class _GraphContext {
|
|
|
581
581
|
*/
|
|
582
582
|
export() {
|
|
583
583
|
return {
|
|
584
|
-
|
|
585
|
-
|
|
584
|
+
id: this.id,
|
|
585
|
+
context: this.getFullContext()
|
|
586
586
|
};
|
|
587
587
|
}
|
|
588
588
|
};
|
|
@@ -730,7 +730,7 @@ var GraphNode = class _GraphNode extends SignalEmitter {
|
|
|
730
730
|
return this.task.getTag(this.context);
|
|
731
731
|
}
|
|
732
732
|
scheduleOn(layer) {
|
|
733
|
-
var _a;
|
|
733
|
+
var _a, _b, _c;
|
|
734
734
|
let shouldSchedule = true;
|
|
735
735
|
const nodes = layer.getNodesByRoutineExecId(this.routineExecId);
|
|
736
736
|
for (const node of nodes) {
|
|
@@ -753,7 +753,7 @@ var GraphNode = class _GraphNode extends SignalEmitter {
|
|
|
753
753
|
data: {
|
|
754
754
|
uuid: this.id,
|
|
755
755
|
routineExecutionId: this.routineExecId,
|
|
756
|
-
|
|
756
|
+
executionTraceId: (_b = context.__executionTraceId) != null ? _b : (_a = context.__metadata) == null ? void 0 : _a.__executionTraceId,
|
|
757
757
|
context: this.context.export(),
|
|
758
758
|
taskName: this.task.name,
|
|
759
759
|
taskVersion: this.task.version,
|
|
@@ -778,7 +778,7 @@ var GraphNode = class _GraphNode extends SignalEmitter {
|
|
|
778
778
|
}
|
|
779
779
|
});
|
|
780
780
|
});
|
|
781
|
-
if (((
|
|
781
|
+
if (((_c = context.__signalEmission) == null ? void 0 : _c.consumed) === false && (!this.isMeta() || this.debug)) {
|
|
782
782
|
this.emitMetricsWithMetadata("meta.node.consumed_signal", {
|
|
783
783
|
data: {
|
|
784
784
|
signalName: context.__signalEmission.signalName,
|
|
@@ -1300,139 +1300,21 @@ var GraphNode = class _GraphNode extends SignalEmitter {
|
|
|
1300
1300
|
}
|
|
1301
1301
|
};
|
|
1302
1302
|
|
|
1303
|
-
// src/interfaces/SignalParticipant.ts
|
|
1304
|
-
var SignalParticipant = class extends SignalEmitter {
|
|
1305
|
-
constructor() {
|
|
1306
|
-
super(...arguments);
|
|
1307
|
-
this.emitsSignals = /* @__PURE__ */ new Set();
|
|
1308
|
-
this.signalsToEmitAfter = /* @__PURE__ */ new Set();
|
|
1309
|
-
this.signalsToEmitOnFail = /* @__PURE__ */ new Set();
|
|
1310
|
-
this.observedSignals = /* @__PURE__ */ new Set();
|
|
1311
|
-
}
|
|
1312
|
-
/**
|
|
1313
|
-
* Subscribes to signals (chainable).
|
|
1314
|
-
* @param signals The signal names.
|
|
1315
|
-
* @returns This for chaining.
|
|
1316
|
-
* @edge Duplicates ignored; assumes broker.observe binds this as handler.
|
|
1317
|
-
*/
|
|
1318
|
-
doOn(...signals) {
|
|
1319
|
-
signals.forEach((signal) => {
|
|
1320
|
-
if (this.observedSignals.has(signal)) return;
|
|
1321
|
-
Cadenza.broker.observe(signal, this);
|
|
1322
|
-
this.observedSignals.add(signal);
|
|
1323
|
-
});
|
|
1324
|
-
return this;
|
|
1325
|
-
}
|
|
1326
|
-
/**
|
|
1327
|
-
* Sets signals to emit post-execution (chainable).
|
|
1328
|
-
* @param signals The signal names.
|
|
1329
|
-
* @returns This for chaining.
|
|
1330
|
-
*/
|
|
1331
|
-
emitsAfter(...signals) {
|
|
1332
|
-
signals.forEach((signal) => {
|
|
1333
|
-
this.signalsToEmitAfter.add(signal);
|
|
1334
|
-
this.emitsSignals.add(signal);
|
|
1335
|
-
});
|
|
1336
|
-
return this;
|
|
1337
|
-
}
|
|
1338
|
-
emitsOnFail(...signals) {
|
|
1339
|
-
signals.forEach((signal) => {
|
|
1340
|
-
this.signalsToEmitOnFail.add(signal);
|
|
1341
|
-
this.emitsSignals.add(signal);
|
|
1342
|
-
});
|
|
1343
|
-
return this;
|
|
1344
|
-
}
|
|
1345
|
-
/**
|
|
1346
|
-
* Unsubscribes from all observed signals.
|
|
1347
|
-
* @returns This for chaining.
|
|
1348
|
-
*/
|
|
1349
|
-
unsubscribeAll() {
|
|
1350
|
-
this.observedSignals.forEach(
|
|
1351
|
-
(signal) => Cadenza.broker.unsubscribe(signal, this)
|
|
1352
|
-
);
|
|
1353
|
-
this.observedSignals.clear();
|
|
1354
|
-
return this;
|
|
1355
|
-
}
|
|
1356
|
-
/**
|
|
1357
|
-
* Unsubscribes from specific signals.
|
|
1358
|
-
* @param signals The signals.
|
|
1359
|
-
* @returns This for chaining.
|
|
1360
|
-
* @edge No-op if not subscribed.
|
|
1361
|
-
*/
|
|
1362
|
-
unsubscribe(...signals) {
|
|
1363
|
-
signals.forEach((signal) => {
|
|
1364
|
-
if (this.observedSignals.has(signal)) {
|
|
1365
|
-
Cadenza.broker.unsubscribe(signal, this);
|
|
1366
|
-
this.observedSignals.delete(signal);
|
|
1367
|
-
}
|
|
1368
|
-
});
|
|
1369
|
-
return this;
|
|
1370
|
-
}
|
|
1371
|
-
/**
|
|
1372
|
-
* Detaches specific emitted signals.
|
|
1373
|
-
* @param signals The signals.
|
|
1374
|
-
* @returns This for chaining.
|
|
1375
|
-
*/
|
|
1376
|
-
detachSignals(...signals) {
|
|
1377
|
-
signals.forEach((signal) => this.signalsToEmitAfter.delete(signal));
|
|
1378
|
-
return this;
|
|
1379
|
-
}
|
|
1380
|
-
/**
|
|
1381
|
-
* Detaches all emitted signals.
|
|
1382
|
-
* @returns This for chaining.
|
|
1383
|
-
*/
|
|
1384
|
-
detachAllSignals() {
|
|
1385
|
-
this.signalsToEmitAfter.clear();
|
|
1386
|
-
return this;
|
|
1387
|
-
}
|
|
1388
|
-
mapSignals(callback) {
|
|
1389
|
-
return Array.from(this.signalsToEmitAfter).map(callback);
|
|
1390
|
-
}
|
|
1391
|
-
mapOnFailSignals(callback) {
|
|
1392
|
-
return Array.from(this.signalsToEmitOnFail).map(callback);
|
|
1393
|
-
}
|
|
1394
|
-
/**
|
|
1395
|
-
* Emits attached signals.
|
|
1396
|
-
* @param context The context for emission.
|
|
1397
|
-
* @edge If isMeta (from Task), suppresses further "meta.*" to prevent loops.
|
|
1398
|
-
*/
|
|
1399
|
-
emitSignals(context) {
|
|
1400
|
-
this.signalsToEmitAfter.forEach((signal) => {
|
|
1401
|
-
this.emit(signal, context.getFullContext());
|
|
1402
|
-
});
|
|
1403
|
-
}
|
|
1404
|
-
/**
|
|
1405
|
-
* Emits attached fail signals.
|
|
1406
|
-
* @param context The context for emission.
|
|
1407
|
-
* @edge If isMeta (from Task), suppresses further "meta.*" to prevent loops.
|
|
1408
|
-
*/
|
|
1409
|
-
emitOnFailSignals(context) {
|
|
1410
|
-
this.signalsToEmitOnFail.forEach((signal) => {
|
|
1411
|
-
this.emit(signal, context.getFullContext());
|
|
1412
|
-
});
|
|
1413
|
-
}
|
|
1414
|
-
/**
|
|
1415
|
-
* Destroys the participant (unsub/detach).
|
|
1416
|
-
*/
|
|
1417
|
-
destroy() {
|
|
1418
|
-
this.unsubscribeAll();
|
|
1419
|
-
this.detachAllSignals();
|
|
1420
|
-
}
|
|
1421
|
-
};
|
|
1422
|
-
|
|
1423
1303
|
// src/graph/definition/GraphRoutine.ts
|
|
1424
|
-
var GraphRoutine = class extends
|
|
1304
|
+
var GraphRoutine = class extends SignalEmitter {
|
|
1425
1305
|
constructor(name, tasks, description, isMeta = false) {
|
|
1426
1306
|
super();
|
|
1427
1307
|
this.version = 1;
|
|
1428
1308
|
this.isMeta = false;
|
|
1429
1309
|
this.tasks = /* @__PURE__ */ new Set();
|
|
1310
|
+
this.observedSignals = /* @__PURE__ */ new Set();
|
|
1430
1311
|
this.name = name;
|
|
1431
1312
|
this.description = description;
|
|
1432
1313
|
this.isMeta = isMeta;
|
|
1433
1314
|
this.emit("meta.routine.created", {
|
|
1434
1315
|
data: {
|
|
1435
1316
|
name: this.name,
|
|
1317
|
+
version: this.version,
|
|
1436
1318
|
description: this.description,
|
|
1437
1319
|
isMeta: this.isMeta
|
|
1438
1320
|
},
|
|
@@ -1471,11 +1353,51 @@ var GraphRoutine = class extends SignalParticipant {
|
|
|
1471
1353
|
this.version = version;
|
|
1472
1354
|
this.emit("meta.routine.global_version_set", { version: this.version });
|
|
1473
1355
|
}
|
|
1474
|
-
|
|
1356
|
+
/**
|
|
1357
|
+
* Subscribes to signals (chainable).
|
|
1358
|
+
* @param signals The signal names.
|
|
1359
|
+
* @returns This for chaining.
|
|
1360
|
+
* @edge Duplicates ignored; assumes broker.observe binds this as handler.
|
|
1361
|
+
*/
|
|
1362
|
+
doOn(...signals) {
|
|
1363
|
+
signals.forEach((signal) => {
|
|
1364
|
+
if (this.observedSignals.has(signal)) return;
|
|
1365
|
+
Cadenza.broker.observe(signal, this);
|
|
1366
|
+
this.observedSignals.add(signal);
|
|
1367
|
+
});
|
|
1368
|
+
return this;
|
|
1369
|
+
}
|
|
1370
|
+
/**
|
|
1371
|
+
* Unsubscribes from all observed signals.
|
|
1372
|
+
* @returns This for chaining.
|
|
1373
|
+
*/
|
|
1374
|
+
unsubscribeAll() {
|
|
1375
|
+
this.observedSignals.forEach(
|
|
1376
|
+
(signal) => Cadenza.broker.unsubscribe(signal, this)
|
|
1377
|
+
);
|
|
1378
|
+
this.observedSignals.clear();
|
|
1379
|
+
return this;
|
|
1380
|
+
}
|
|
1381
|
+
/**
|
|
1382
|
+
* Unsubscribes from specific signals.
|
|
1383
|
+
* @param signals The signals.
|
|
1384
|
+
* @returns This for chaining.
|
|
1385
|
+
* @edge No-op if not subscribed.
|
|
1386
|
+
*/
|
|
1387
|
+
unsubscribe(...signals) {
|
|
1388
|
+
signals.forEach((signal) => {
|
|
1389
|
+
if (this.observedSignals.has(signal)) {
|
|
1390
|
+
Cadenza.broker.unsubscribe(signal, this);
|
|
1391
|
+
this.observedSignals.delete(signal);
|
|
1392
|
+
}
|
|
1393
|
+
});
|
|
1394
|
+
return this;
|
|
1395
|
+
}
|
|
1475
1396
|
/**
|
|
1476
1397
|
* Destroys the routine.
|
|
1477
1398
|
*/
|
|
1478
1399
|
destroy() {
|
|
1400
|
+
this.unsubscribeAll();
|
|
1479
1401
|
this.tasks.clear();
|
|
1480
1402
|
this.emit("meta.routine.destroyed", {
|
|
1481
1403
|
data: { deleted: true },
|
|
@@ -1516,7 +1438,7 @@ var TaskIterator = class {
|
|
|
1516
1438
|
};
|
|
1517
1439
|
|
|
1518
1440
|
// src/graph/definition/Task.ts
|
|
1519
|
-
var Task = class extends
|
|
1441
|
+
var Task = class extends SignalEmitter {
|
|
1520
1442
|
/**
|
|
1521
1443
|
* Constructs a Task (static definition).
|
|
1522
1444
|
* @param name Name.
|
|
@@ -1566,6 +1488,10 @@ var Task = class extends SignalParticipant {
|
|
|
1566
1488
|
this.onFailTasks = /* @__PURE__ */ new Set();
|
|
1567
1489
|
this.predecessorTasks = /* @__PURE__ */ new Set();
|
|
1568
1490
|
this.destroyed = false;
|
|
1491
|
+
this.emitsSignals = /* @__PURE__ */ new Set();
|
|
1492
|
+
this.signalsToEmitAfter = /* @__PURE__ */ new Set();
|
|
1493
|
+
this.signalsToEmitOnFail = /* @__PURE__ */ new Set();
|
|
1494
|
+
this.observedSignals = /* @__PURE__ */ new Set();
|
|
1569
1495
|
this.name = name;
|
|
1570
1496
|
this.taskFunction = task.bind(this);
|
|
1571
1497
|
this.description = description;
|
|
@@ -1590,8 +1516,9 @@ var Task = class extends SignalParticipant {
|
|
|
1590
1516
|
if (register && !this.isHidden && !this.isSubMeta) {
|
|
1591
1517
|
const { __functionString, __getTagCallback } = this.export();
|
|
1592
1518
|
this.emitWithMetadata("meta.task.created", {
|
|
1593
|
-
|
|
1519
|
+
data: {
|
|
1594
1520
|
name: this.name,
|
|
1521
|
+
version: this.version,
|
|
1595
1522
|
description: this.description,
|
|
1596
1523
|
functionString: __functionString,
|
|
1597
1524
|
tagIdGetter: __getTagCallback,
|
|
@@ -1610,8 +1537,8 @@ var Task = class extends SignalParticipant {
|
|
|
1610
1537
|
isMeta: this.isMeta,
|
|
1611
1538
|
validateInputContext: this.validateInputContext,
|
|
1612
1539
|
validateOutputContext: this.validateOutputContext,
|
|
1613
|
-
|
|
1614
|
-
|
|
1540
|
+
inputContextSchema: this.inputContextSchema,
|
|
1541
|
+
outputContextSchema: this.outputContextSchema
|
|
1615
1542
|
},
|
|
1616
1543
|
__taskInstance: this
|
|
1617
1544
|
});
|
|
@@ -1964,8 +1891,165 @@ var Task = class extends SignalParticipant {
|
|
|
1964
1891
|
mapPrevious(callback) {
|
|
1965
1892
|
return Array.from(this.predecessorTasks).map(callback);
|
|
1966
1893
|
}
|
|
1894
|
+
/**
|
|
1895
|
+
* Subscribes to signals (chainable).
|
|
1896
|
+
* @param signals The signal names.
|
|
1897
|
+
* @returns This for chaining.
|
|
1898
|
+
* @edge Duplicates ignored; assumes broker.observe binds this as handler.
|
|
1899
|
+
*/
|
|
1900
|
+
doOn(...signals) {
|
|
1901
|
+
signals.forEach((signal) => {
|
|
1902
|
+
if (this.observedSignals.has(signal)) return;
|
|
1903
|
+
Cadenza.broker.observe(signal, this);
|
|
1904
|
+
this.observedSignals.add(signal);
|
|
1905
|
+
this.emitWithMetadata("meta.task.observed_signal", {
|
|
1906
|
+
data: {
|
|
1907
|
+
signalName: signal,
|
|
1908
|
+
taskName: this.name,
|
|
1909
|
+
taskVersion: this.version
|
|
1910
|
+
}
|
|
1911
|
+
});
|
|
1912
|
+
});
|
|
1913
|
+
return this;
|
|
1914
|
+
}
|
|
1915
|
+
/**
|
|
1916
|
+
* Sets signals to emit post-execution (chainable).
|
|
1917
|
+
* @param signals The signal names.
|
|
1918
|
+
* @returns This for chaining.
|
|
1919
|
+
*/
|
|
1920
|
+
emits(...signals) {
|
|
1921
|
+
signals.forEach((signal) => {
|
|
1922
|
+
this.signalsToEmitAfter.add(signal);
|
|
1923
|
+
this.emitsSignals.add(signal);
|
|
1924
|
+
this.emitWithMetadata("meta.task.attached_signal", {
|
|
1925
|
+
data: {
|
|
1926
|
+
signalName: signal,
|
|
1927
|
+
taskName: this.name,
|
|
1928
|
+
taskVersion: this.version
|
|
1929
|
+
}
|
|
1930
|
+
});
|
|
1931
|
+
});
|
|
1932
|
+
return this;
|
|
1933
|
+
}
|
|
1934
|
+
emitsOnFail(...signals) {
|
|
1935
|
+
signals.forEach((signal) => {
|
|
1936
|
+
this.signalsToEmitOnFail.add(signal);
|
|
1937
|
+
this.emitsSignals.add(signal);
|
|
1938
|
+
this.emitWithMetadata("meta.task.attached_signal", {
|
|
1939
|
+
data: {
|
|
1940
|
+
signalName: signal,
|
|
1941
|
+
taskName: this.name,
|
|
1942
|
+
taskVersion: this.version,
|
|
1943
|
+
isOnFail: true
|
|
1944
|
+
}
|
|
1945
|
+
});
|
|
1946
|
+
});
|
|
1947
|
+
return this;
|
|
1948
|
+
}
|
|
1949
|
+
/**
|
|
1950
|
+
* Unsubscribes from all observed signals.
|
|
1951
|
+
* @returns This for chaining.
|
|
1952
|
+
*/
|
|
1953
|
+
unsubscribeAll() {
|
|
1954
|
+
this.observedSignals.forEach((signal) => {
|
|
1955
|
+
Cadenza.broker.unsubscribe(signal, this);
|
|
1956
|
+
this.emitWithMetadata("meta.task.unsubscribed_signal", {
|
|
1957
|
+
filter: {
|
|
1958
|
+
signalName: signal,
|
|
1959
|
+
taskName: this.name,
|
|
1960
|
+
taskVersion: this.version
|
|
1961
|
+
}
|
|
1962
|
+
});
|
|
1963
|
+
});
|
|
1964
|
+
this.observedSignals.clear();
|
|
1965
|
+
return this;
|
|
1966
|
+
}
|
|
1967
|
+
/**
|
|
1968
|
+
* Unsubscribes from specific signals.
|
|
1969
|
+
* @param signals The signals.
|
|
1970
|
+
* @returns This for chaining.
|
|
1971
|
+
* @edge No-op if not subscribed.
|
|
1972
|
+
*/
|
|
1973
|
+
unsubscribe(...signals) {
|
|
1974
|
+
signals.forEach((signal) => {
|
|
1975
|
+
if (this.observedSignals.has(signal)) {
|
|
1976
|
+
Cadenza.broker.unsubscribe(signal, this);
|
|
1977
|
+
this.observedSignals.delete(signal);
|
|
1978
|
+
this.emitWithMetadata("meta.task.unsubscribed_signal", {
|
|
1979
|
+
filter: {
|
|
1980
|
+
signalName: signal,
|
|
1981
|
+
taskName: this.name,
|
|
1982
|
+
taskVersion: this.version
|
|
1983
|
+
}
|
|
1984
|
+
});
|
|
1985
|
+
}
|
|
1986
|
+
});
|
|
1987
|
+
return this;
|
|
1988
|
+
}
|
|
1989
|
+
/**
|
|
1990
|
+
* Detaches specific emitted signals.
|
|
1991
|
+
* @param signals The signals.
|
|
1992
|
+
* @returns This for chaining.
|
|
1993
|
+
*/
|
|
1994
|
+
detachSignals(...signals) {
|
|
1995
|
+
signals.forEach((signal) => {
|
|
1996
|
+
this.signalsToEmitAfter.delete(signal);
|
|
1997
|
+
this.emitWithMetadata("meta.task.detached_signal", {
|
|
1998
|
+
filter: {
|
|
1999
|
+
signalName: signal,
|
|
2000
|
+
taskName: this.name,
|
|
2001
|
+
taskVersion: this.version
|
|
2002
|
+
}
|
|
2003
|
+
});
|
|
2004
|
+
});
|
|
2005
|
+
return this;
|
|
2006
|
+
}
|
|
2007
|
+
/**
|
|
2008
|
+
* Detaches all emitted signals.
|
|
2009
|
+
* @returns This for chaining.
|
|
2010
|
+
*/
|
|
2011
|
+
detachAllSignals() {
|
|
2012
|
+
this.signalsToEmitAfter.forEach((signal) => {
|
|
2013
|
+
this.emitWithMetadata("meta.task.detached_signal", {
|
|
2014
|
+
filter: {
|
|
2015
|
+
signalName: signal,
|
|
2016
|
+
taskName: this.name,
|
|
2017
|
+
taskVersion: this.version
|
|
2018
|
+
}
|
|
2019
|
+
});
|
|
2020
|
+
});
|
|
2021
|
+
this.signalsToEmitAfter.clear();
|
|
2022
|
+
return this;
|
|
2023
|
+
}
|
|
2024
|
+
mapSignals(callback) {
|
|
2025
|
+
return Array.from(this.signalsToEmitAfter).map(callback);
|
|
2026
|
+
}
|
|
2027
|
+
mapOnFailSignals(callback) {
|
|
2028
|
+
return Array.from(this.signalsToEmitOnFail).map(callback);
|
|
2029
|
+
}
|
|
2030
|
+
/**
|
|
2031
|
+
* Emits attached signals.
|
|
2032
|
+
* @param context The context for emission.
|
|
2033
|
+
* @edge If isMeta (from Task), suppresses further "meta.*" to prevent loops.
|
|
2034
|
+
*/
|
|
2035
|
+
emitSignals(context) {
|
|
2036
|
+
this.signalsToEmitAfter.forEach((signal) => {
|
|
2037
|
+
this.emit(signal, context.getFullContext());
|
|
2038
|
+
});
|
|
2039
|
+
}
|
|
2040
|
+
/**
|
|
2041
|
+
* Emits attached fail signals.
|
|
2042
|
+
* @param context The context for emission.
|
|
2043
|
+
* @edge If isMeta (from Task), suppresses further "meta.*" to prevent loops.
|
|
2044
|
+
*/
|
|
2045
|
+
emitOnFailSignals(context) {
|
|
2046
|
+
this.signalsToEmitOnFail.forEach((signal) => {
|
|
2047
|
+
this.emit(signal, context.getFullContext());
|
|
2048
|
+
});
|
|
2049
|
+
}
|
|
1967
2050
|
destroy() {
|
|
1968
|
-
|
|
2051
|
+
this.unsubscribeAll();
|
|
2052
|
+
this.detachAllSignals();
|
|
1969
2053
|
this.predecessorTasks.forEach((pred) => pred.nextTasks.delete(this));
|
|
1970
2054
|
this.nextTasks.forEach((next) => next.predecessorTasks.delete(this));
|
|
1971
2055
|
this.onFailTasks.forEach((fail) => fail.predecessorTasks.delete(this));
|
|
@@ -2036,7 +2120,7 @@ var GraphRegistry = class _GraphRegistry {
|
|
|
2036
2120
|
true,
|
|
2037
2121
|
false,
|
|
2038
2122
|
true
|
|
2039
|
-
).doOn("meta.task.created");
|
|
2123
|
+
).doOn("meta.task.created").emits("meta.graph_registry.task_registered");
|
|
2040
2124
|
this.tasks.set(this.registerTask.name, this.registerTask);
|
|
2041
2125
|
this.updateTaskInputSchema = Cadenza.createMetaTask(
|
|
2042
2126
|
"Update task input schema",
|
|
@@ -2209,7 +2293,7 @@ var GraphRunner = class extends SignalEmitter {
|
|
|
2209
2293
|
* @edge Empty tasks warns no-op.
|
|
2210
2294
|
*/
|
|
2211
2295
|
addTasks(tasks, context = {}) {
|
|
2212
|
-
var _a, _b, _c, _d, _e, _f;
|
|
2296
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
|
|
2213
2297
|
let _tasks = Array.isArray(tasks) ? tasks : [tasks];
|
|
2214
2298
|
if (_tasks.length === 0) {
|
|
2215
2299
|
console.warn("No tasks/routines to add.");
|
|
@@ -2232,18 +2316,35 @@ var GraphRunner = class extends SignalEmitter {
|
|
|
2232
2316
|
const isSubMeta = allTasks.some((t) => t.isSubMeta) || !!context.__isSubMeta;
|
|
2233
2317
|
context.__isSubMeta = isSubMeta;
|
|
2234
2318
|
const ctx = new GraphContext(context || {});
|
|
2319
|
+
const isNewTrace = !!context.__routineExecId;
|
|
2235
2320
|
const routineExecId = (_a = context.__routineExecId) != null ? _a : uuid4();
|
|
2236
2321
|
context.__routineExecId = routineExecId;
|
|
2237
2322
|
if (!isSubMeta) {
|
|
2323
|
+
const executionTraceId = (_d = (_c = (_b = context.__metadata) == null ? void 0 : _b.__executionTraceId) != null ? _c : context.__executionTraceId) != null ? _d : uuid4();
|
|
2324
|
+
const contextData = ctx.export();
|
|
2325
|
+
if (isNewTrace) {
|
|
2326
|
+
this.emitMetrics("meta.runner.new_trace", {
|
|
2327
|
+
data: {
|
|
2328
|
+
uuid: executionTraceId,
|
|
2329
|
+
issuer_type: "service",
|
|
2330
|
+
// TODO: Add issuer type
|
|
2331
|
+
issuer_id: (_g = (_f = (_e = context.__metadata) == null ? void 0 : _e.__issuerId) != null ? _f : context.__issuerId) != null ? _g : null,
|
|
2332
|
+
issued_at: formatTimestamp(Date.now()),
|
|
2333
|
+
intent: (_j = (_i = (_h = context.__metadata) == null ? void 0 : _h.__intent) != null ? _i : context.__intent) != null ? _j : null,
|
|
2334
|
+
context: contextData,
|
|
2335
|
+
is_meta: isMeta
|
|
2336
|
+
}
|
|
2337
|
+
});
|
|
2338
|
+
}
|
|
2238
2339
|
this.emitMetrics("meta.runner.added_tasks", {
|
|
2239
2340
|
data: {
|
|
2240
2341
|
uuid: routineExecId,
|
|
2241
2342
|
name: routineName,
|
|
2242
2343
|
routineVersion,
|
|
2243
2344
|
isMeta,
|
|
2244
|
-
|
|
2245
|
-
context:
|
|
2246
|
-
previousRoutineExecution: (
|
|
2345
|
+
executionTraceId,
|
|
2346
|
+
context: isNewTrace ? contextData.id : contextData,
|
|
2347
|
+
previousRoutineExecution: (_l = (_k = context.__metadata) == null ? void 0 : _k.__routineExecId) != null ? _l : null,
|
|
2247
2348
|
// TODO: There is a chance this is not added to the database yet...
|
|
2248
2349
|
created: formatTimestamp(Date.now())
|
|
2249
2350
|
}
|
|
@@ -3381,7 +3482,6 @@ export {
|
|
|
3381
3482
|
GraphRunner,
|
|
3382
3483
|
SignalBroker,
|
|
3383
3484
|
SignalEmitter,
|
|
3384
|
-
SignalParticipant,
|
|
3385
3485
|
SignalTask,
|
|
3386
3486
|
Task,
|
|
3387
3487
|
index_default as default
|