@cadenza.io/service 2.17.80 → 2.18.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/browser/index.js +418 -551
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/index.mjs +418 -551
- package/dist/browser/index.mjs.map +1 -1
- package/dist/index.d.mts +40 -3
- package/dist/index.d.ts +40 -3
- package/dist/index.js +420 -579
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +418 -579
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -38,6 +38,8 @@ __export(index_exports, {
|
|
|
38
38
|
EphemeralTask: () => import_core6.EphemeralTask,
|
|
39
39
|
GraphMetadataController: () => GraphMetadataController,
|
|
40
40
|
GraphRoutine: () => import_core6.GraphRoutine,
|
|
41
|
+
RUNTIME_VALIDATION_INTENTS: () => RUNTIME_VALIDATION_INTENTS,
|
|
42
|
+
RUNTIME_VALIDATION_SIGNALS: () => RUNTIME_VALIDATION_SIGNALS,
|
|
41
43
|
RestController: () => RestController,
|
|
42
44
|
ServiceRegistry: () => ServiceRegistry,
|
|
43
45
|
SignalController: () => SignalController,
|
|
@@ -271,6 +273,13 @@ var DatabaseTask = class extends DeputyTask {
|
|
|
271
273
|
const metadata = context.getMetadata();
|
|
272
274
|
const dynamicQueryData = ctx.queryData ?? {};
|
|
273
275
|
delete ctx.queryData;
|
|
276
|
+
const nextQueryData = {
|
|
277
|
+
...this.queryData,
|
|
278
|
+
data: {
|
|
279
|
+
...ctx.data
|
|
280
|
+
},
|
|
281
|
+
...dynamicQueryData
|
|
282
|
+
};
|
|
274
283
|
const deputyContext = {
|
|
275
284
|
...ctx,
|
|
276
285
|
__localTaskName: this.name,
|
|
@@ -287,13 +296,13 @@ var DatabaseTask = class extends DeputyTask {
|
|
|
287
296
|
__blockRemoteExecution: metadata.__blockRemoteExecution ?? ctx.__blockRemoteExecution ?? false,
|
|
288
297
|
__deputyTaskName: this.name
|
|
289
298
|
},
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
299
|
+
data: nextQueryData.data ?? ctx.data,
|
|
300
|
+
batch: nextQueryData.batch ?? ctx.batch,
|
|
301
|
+
transaction: nextQueryData.transaction ?? ctx.transaction,
|
|
302
|
+
onConflict: Object.prototype.hasOwnProperty.call(nextQueryData, "onConflict") ? nextQueryData.onConflict : void 0,
|
|
303
|
+
filter: nextQueryData.filter ?? ctx.filter,
|
|
304
|
+
fields: nextQueryData.fields ?? ctx.fields,
|
|
305
|
+
queryData: nextQueryData
|
|
297
306
|
};
|
|
298
307
|
return this.taskFunction(deputyContext, emit, inquire, progressCallback);
|
|
299
308
|
}
|
|
@@ -727,6 +736,7 @@ function hasSignificantRuntimeStatusChange(previous, next) {
|
|
|
727
736
|
// src/registry/ServiceRegistry.ts
|
|
728
737
|
var META_SERVICE_REGISTRY_FULL_SYNC_INTENT = "meta-service-registry-full-sync";
|
|
729
738
|
var CADENZA_DB_GATHERED_SYNC_SIGNAL = "global.meta.cadenza_db.gathered_sync_data";
|
|
739
|
+
var META_GATHERED_SYNC_TRANSMISSION_RECONCILE_SIGNAL = "meta.service_registry.gathered_sync_transmission_reconcile_requested";
|
|
730
740
|
var META_RUNTIME_STATUS_HEARTBEAT_TICK_SIGNAL = "meta.service_registry.runtime_status.heartbeat_tick";
|
|
731
741
|
var META_RUNTIME_STATUS_MONITOR_TICK_SIGNAL = "meta.service_registry.runtime_status.monitor_tick";
|
|
732
742
|
var INTERNAL_RUNTIME_STATUS_TASK_NAMES = /* @__PURE__ */ new Set([
|
|
@@ -814,18 +824,6 @@ function normalizeServiceRegistryInsertResult(tableName, ctx, queryData, rawResu
|
|
|
814
824
|
}
|
|
815
825
|
return result;
|
|
816
826
|
}
|
|
817
|
-
function shouldTraceIotDbRegistryPath(localServiceName, targetServiceName) {
|
|
818
|
-
return targetServiceName === "IotDbService" && localServiceName !== "IotDbService";
|
|
819
|
-
}
|
|
820
|
-
function summarizeTransportDescriptors(transports) {
|
|
821
|
-
return transports.map((transport) => ({
|
|
822
|
-
uuid: transport.uuid,
|
|
823
|
-
serviceInstanceId: transport.serviceInstanceId,
|
|
824
|
-
role: transport.role,
|
|
825
|
-
origin: transport.origin,
|
|
826
|
-
protocols: transport.protocols
|
|
827
|
-
}));
|
|
828
|
-
}
|
|
829
827
|
function resolveServiceRegistryInsertTask(tableName, queryData = {}, options = {}) {
|
|
830
828
|
const remoteInsertTask = CadenzaService.createCadenzaDBInsertTask(
|
|
831
829
|
tableName,
|
|
@@ -842,6 +840,10 @@ function resolveServiceRegistryInsertTask(tableName, queryData = {}, options = {
|
|
|
842
840
|
const nextQueryData = buildServiceRegistryInsertQueryData(ctx, queryData);
|
|
843
841
|
const delegationContext = ensureDelegationContextMetadata({
|
|
844
842
|
...ctx,
|
|
843
|
+
data: nextQueryData.data !== void 0 ? nextQueryData.data : ctx.data,
|
|
844
|
+
batch: nextQueryData.batch !== void 0 ? nextQueryData.batch : ctx.batch,
|
|
845
|
+
onConflict: Object.prototype.hasOwnProperty.call(nextQueryData, "onConflict") ? nextQueryData.onConflict : void 0,
|
|
846
|
+
transaction: nextQueryData.transaction !== void 0 ? nextQueryData.transaction : ctx.transaction,
|
|
845
847
|
queryData: nextQueryData
|
|
846
848
|
});
|
|
847
849
|
delegationContext.__metadata.__skipRemoteExecution = delegationContext.__metadata.__skipRemoteExecution ?? delegationContext.__skipRemoteExecution ?? false;
|
|
@@ -965,6 +967,7 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
965
967
|
this.deputies = /* @__PURE__ */ new Map();
|
|
966
968
|
this.remoteSignals = /* @__PURE__ */ new Map();
|
|
967
969
|
this.remoteIntents = /* @__PURE__ */ new Map();
|
|
970
|
+
this.gatheredSyncTransmissionServices = /* @__PURE__ */ new Set();
|
|
968
971
|
this.remoteIntentDeputiesByKey = /* @__PURE__ */ new Map();
|
|
969
972
|
this.remoteIntentDeputiesByTask = /* @__PURE__ */ new Map();
|
|
970
973
|
this.dependeesByService = /* @__PURE__ */ new Map();
|
|
@@ -1216,21 +1219,6 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1216
1219
|
trackedInstance.acceptingWork = snapshot.acceptingWork;
|
|
1217
1220
|
trackedInstance.reportedAt = trackedInstance.reportedAt ?? (/* @__PURE__ */ new Date()).toISOString();
|
|
1218
1221
|
}
|
|
1219
|
-
if (shouldTraceIotDbRegistryPath(this.serviceName, serviceName)) {
|
|
1220
|
-
console.log("[CADENZA_REGISTRY_DEBUG] handle_instance_update", {
|
|
1221
|
-
localServiceName: this.serviceName,
|
|
1222
|
-
localServiceInstanceId: this.serviceInstanceId,
|
|
1223
|
-
targetServiceName: serviceName,
|
|
1224
|
-
targetServiceInstanceId: uuid8,
|
|
1225
|
-
existingInstance: !!existing,
|
|
1226
|
-
deleted,
|
|
1227
|
-
remoteInterest: this.deputies.has(serviceName) || this.remoteIntents.has(serviceName) || this.remoteSignals.has(serviceName),
|
|
1228
|
-
hasDeputies: this.deputies.has(serviceName),
|
|
1229
|
-
hasRemoteIntents: this.remoteIntents.has(serviceName),
|
|
1230
|
-
hasRemoteSignals: this.remoteSignals.has(serviceName),
|
|
1231
|
-
transports: trackedInstance ? summarizeTransportDescriptors(trackedInstance.transports) : []
|
|
1232
|
-
});
|
|
1233
|
-
}
|
|
1234
1222
|
if (!serviceInstance.isBootstrapPlaceholder) {
|
|
1235
1223
|
this.reconcileBootstrapPlaceholderInstance(serviceName, uuid8, emit);
|
|
1236
1224
|
}
|
|
@@ -1243,7 +1231,8 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1243
1231
|
if (this.deputies.has(serviceName) || this.remoteIntents.has(serviceName) || this.remoteSignals.has(serviceName)) {
|
|
1244
1232
|
const connected = this.ensureDependeeClientForInstance(
|
|
1245
1233
|
trackedInstance,
|
|
1246
|
-
emit
|
|
1234
|
+
emit,
|
|
1235
|
+
ctx
|
|
1247
1236
|
);
|
|
1248
1237
|
if (!connected) {
|
|
1249
1238
|
emit("meta.service_registry.routeable_transport_missing", {
|
|
@@ -1286,27 +1275,6 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1286
1275
|
break;
|
|
1287
1276
|
}
|
|
1288
1277
|
}
|
|
1289
|
-
if (shouldTraceIotDbRegistryPath(
|
|
1290
|
-
this.serviceName,
|
|
1291
|
-
ownerInstance?.serviceName ?? ctx.serviceName ?? void 0
|
|
1292
|
-
)) {
|
|
1293
|
-
console.log("[CADENZA_REGISTRY_DEBUG] handle_transport_update", {
|
|
1294
|
-
localServiceName: this.serviceName,
|
|
1295
|
-
localServiceInstanceId: this.serviceInstanceId,
|
|
1296
|
-
transport: {
|
|
1297
|
-
uuid: transport.uuid,
|
|
1298
|
-
serviceInstanceId: transport.serviceInstanceId,
|
|
1299
|
-
role: transport.role,
|
|
1300
|
-
origin: transport.origin,
|
|
1301
|
-
protocols: transport.protocols,
|
|
1302
|
-
deleted: transport.deleted
|
|
1303
|
-
},
|
|
1304
|
-
ownerFound: !!ownerInstance,
|
|
1305
|
-
ownerServiceName: ownerInstance?.serviceName,
|
|
1306
|
-
ownerInstanceId: ownerInstance?.uuid,
|
|
1307
|
-
ownerTransports: ownerInstance ? summarizeTransportDescriptors(ownerInstance.transports) : []
|
|
1308
|
-
});
|
|
1309
|
-
}
|
|
1310
1278
|
if (!ownerInstance) {
|
|
1311
1279
|
return false;
|
|
1312
1280
|
}
|
|
@@ -1332,7 +1300,7 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1332
1300
|
if (!hasRemoteInterest) {
|
|
1333
1301
|
return true;
|
|
1334
1302
|
}
|
|
1335
|
-
this.ensureDependeeClientForInstance(ownerInstance, emit);
|
|
1303
|
+
this.ensureDependeeClientForInstance(ownerInstance, emit, ctx);
|
|
1336
1304
|
return true;
|
|
1337
1305
|
},
|
|
1338
1306
|
"Handles service transport updates independently from instance rows."
|
|
@@ -1362,29 +1330,12 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1362
1330
|
"Tracks remote dependency instances for runtime heartbeat monitoring."
|
|
1363
1331
|
).doOn("meta.service_registry.dependee_registered");
|
|
1364
1332
|
const normalizeServiceInstancesFromSync = (ctx) => this.normalizeServiceInstancesFromSync(ctx);
|
|
1365
|
-
const getLocalTraceContext = () => ({
|
|
1366
|
-
localServiceName: this.serviceName,
|
|
1367
|
-
localServiceInstanceId: this.serviceInstanceId
|
|
1368
|
-
});
|
|
1369
1333
|
CadenzaService.createMetaTask("Split service instances", function* (ctx) {
|
|
1370
1334
|
const serviceInstances = normalizeServiceInstancesFromSync(ctx);
|
|
1371
1335
|
if (serviceInstances.length === 0) {
|
|
1372
1336
|
return;
|
|
1373
1337
|
}
|
|
1374
1338
|
for (const serviceInstance of serviceInstances) {
|
|
1375
|
-
const { localServiceName, localServiceInstanceId } = getLocalTraceContext();
|
|
1376
|
-
if (shouldTraceIotDbRegistryPath(
|
|
1377
|
-
localServiceName,
|
|
1378
|
-
serviceInstance.serviceName
|
|
1379
|
-
)) {
|
|
1380
|
-
console.log("[CADENZA_REGISTRY_DEBUG] split_service_instance", {
|
|
1381
|
-
localServiceName,
|
|
1382
|
-
localServiceInstanceId,
|
|
1383
|
-
targetServiceName: serviceInstance.serviceName,
|
|
1384
|
-
targetServiceInstanceId: serviceInstance.uuid,
|
|
1385
|
-
transports: summarizeTransportDescriptors(serviceInstance.transports)
|
|
1386
|
-
});
|
|
1387
|
-
}
|
|
1388
1339
|
yield { serviceInstance };
|
|
1389
1340
|
}
|
|
1390
1341
|
}).doOn(
|
|
@@ -1430,6 +1381,15 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1430
1381
|
},
|
|
1431
1382
|
"Handles registration of remote signals"
|
|
1432
1383
|
).emits("meta.service_registry.registered_global_signals").doOn("global.meta.cadenza_db.gathered_sync_data");
|
|
1384
|
+
this.reconcileGatheredSyncTransmissionsTask = CadenzaService.createMetaTask(
|
|
1385
|
+
"Reconcile gathered sync signal transmissions",
|
|
1386
|
+
(ctx, emit) => this.reconcileGatheredSyncTransmissions(ctx, emit),
|
|
1387
|
+
"Keeps gathered sync transmitters aligned with known remote service instances."
|
|
1388
|
+
).doOn(
|
|
1389
|
+
CADENZA_DB_GATHERED_SYNC_SIGNAL,
|
|
1390
|
+
META_GATHERED_SYNC_TRANSMISSION_RECONCILE_SIGNAL,
|
|
1391
|
+
"meta.service_registry.service_discovered"
|
|
1392
|
+
);
|
|
1433
1393
|
this.handleGlobalIntentRegistrationTask = CadenzaService.createMetaTask(
|
|
1434
1394
|
"Handle global intent registration",
|
|
1435
1395
|
(ctx, emit) => {
|
|
@@ -1439,34 +1399,20 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1439
1399
|
if (!a.deleted && b.deleted) return 1;
|
|
1440
1400
|
return 0;
|
|
1441
1401
|
});
|
|
1442
|
-
if (ctx.__signalName === CADENZA_DB_GATHERED_SYNC_SIGNAL) {
|
|
1443
|
-
const relevantIntentNames = sorted.filter(
|
|
1444
|
-
(map) => map.intentName === META_SERVICE_REGISTRY_FULL_SYNC_INTENT || map.intentName === "Query service_instance" || map.intentName === "Query service_instance_transport"
|
|
1445
|
-
).map((map) => ({
|
|
1446
|
-
intentName: map.intentName,
|
|
1447
|
-
serviceName: map.serviceName,
|
|
1448
|
-
taskName: map.taskName,
|
|
1449
|
-
taskVersion: map.taskVersion,
|
|
1450
|
-
deleted: !!map.deleted
|
|
1451
|
-
}));
|
|
1452
|
-
console.log("[CADENZA_SYNC_DEBUG] gathered_sync_intent_registration", {
|
|
1453
|
-
localServiceName: this.serviceName,
|
|
1454
|
-
localServiceInstanceId: this.serviceInstanceId,
|
|
1455
|
-
signalName: ctx.__signalName,
|
|
1456
|
-
totalIntentMaps: sorted.length,
|
|
1457
|
-
relevantIntentNames
|
|
1458
|
-
});
|
|
1459
|
-
}
|
|
1460
1402
|
for (const map of sorted) {
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1403
|
+
try {
|
|
1404
|
+
if (map.deleted) {
|
|
1405
|
+
this.unregisterRemoteIntentDeputy(map);
|
|
1406
|
+
continue;
|
|
1407
|
+
}
|
|
1408
|
+
CadenzaService.inquiryBroker.addIntent({
|
|
1409
|
+
name: map.intentName
|
|
1410
|
+
});
|
|
1411
|
+
this.registerRemoteIntentDeputy(map);
|
|
1412
|
+
this.ensureDependeeClientsForService(map.serviceName, emit);
|
|
1413
|
+
} catch (error) {
|
|
1414
|
+
throw error;
|
|
1464
1415
|
}
|
|
1465
|
-
CadenzaService.inquiryBroker.addIntent({
|
|
1466
|
-
name: map.intentName
|
|
1467
|
-
});
|
|
1468
|
-
this.registerRemoteIntentDeputy(map);
|
|
1469
|
-
this.ensureDependeeClientsForService(map.serviceName, emit);
|
|
1470
1416
|
}
|
|
1471
1417
|
return true;
|
|
1472
1418
|
},
|
|
@@ -1618,7 +1564,7 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1618
1564
|
{
|
|
1619
1565
|
uuid: report.transportId,
|
|
1620
1566
|
serviceInstanceId: report.serviceInstanceId,
|
|
1621
|
-
role: this.getRoutingTransportRole(),
|
|
1567
|
+
role: report.transportRole ?? this.getRoutingTransportRole(),
|
|
1622
1568
|
origin: report.transportOrigin,
|
|
1623
1569
|
protocols: report.transportProtocols && report.transportProtocols.length > 0 ? report.transportProtocols : ["rest", "socket"],
|
|
1624
1570
|
securityProfile: null,
|
|
@@ -1660,21 +1606,6 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1660
1606
|
const serviceInstances = this.normalizeServiceInstancesFromSync(
|
|
1661
1607
|
inquiryResult
|
|
1662
1608
|
);
|
|
1663
|
-
if (shouldTraceIotDbRegistryPath(this.serviceName, "IotDbService")) {
|
|
1664
|
-
const tracedInstances = serviceInstances.filter((instance) => instance.serviceName === "IotDbService").map((instance) => ({
|
|
1665
|
-
uuid: instance.uuid,
|
|
1666
|
-
isActive: instance.isActive,
|
|
1667
|
-
isNonResponsive: instance.isNonResponsive,
|
|
1668
|
-
isBlocked: instance.isBlocked,
|
|
1669
|
-
transports: summarizeTransportDescriptors(instance.transports)
|
|
1670
|
-
}));
|
|
1671
|
-
console.log("[CADENZA_REGISTRY_DEBUG] full_sync_instances", {
|
|
1672
|
-
localServiceName: this.serviceName,
|
|
1673
|
-
localServiceInstanceId: this.serviceInstanceId,
|
|
1674
|
-
totalServiceInstances: serviceInstances.length,
|
|
1675
|
-
tracedInstances
|
|
1676
|
-
});
|
|
1677
|
-
}
|
|
1678
1609
|
return {
|
|
1679
1610
|
...ctx,
|
|
1680
1611
|
signalToTaskMaps,
|
|
@@ -1771,44 +1702,6 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1771
1702
|
let retries = __retries ?? 0;
|
|
1772
1703
|
let triedInstances = __triedInstances ?? [];
|
|
1773
1704
|
const preferredRole = this.getRoutingTransportRole();
|
|
1774
|
-
const allInstances = this.instances.get(__serviceName) ?? [];
|
|
1775
|
-
const candidateDiagnostics = shouldTraceIotDbRegistryPath(
|
|
1776
|
-
this.serviceName,
|
|
1777
|
-
__serviceName ?? void 0
|
|
1778
|
-
) ? allInstances.map((instance) => ({
|
|
1779
|
-
uuid: instance.uuid,
|
|
1780
|
-
isActive: instance.isActive,
|
|
1781
|
-
isNonResponsive: instance.isNonResponsive,
|
|
1782
|
-
isBlocked: instance.isBlocked,
|
|
1783
|
-
isFrontend: instance.isFrontend,
|
|
1784
|
-
transports: summarizeTransportDescriptors(instance.transports),
|
|
1785
|
-
selectedTransport: instance.isFrontend ? null : this.selectTransportForInstance(
|
|
1786
|
-
instance,
|
|
1787
|
-
context,
|
|
1788
|
-
preferredRole
|
|
1789
|
-
) ? {
|
|
1790
|
-
uuid: this.selectTransportForInstance(
|
|
1791
|
-
instance,
|
|
1792
|
-
context,
|
|
1793
|
-
preferredRole
|
|
1794
|
-
).uuid,
|
|
1795
|
-
role: this.selectTransportForInstance(
|
|
1796
|
-
instance,
|
|
1797
|
-
context,
|
|
1798
|
-
preferredRole
|
|
1799
|
-
).role,
|
|
1800
|
-
origin: this.selectTransportForInstance(
|
|
1801
|
-
instance,
|
|
1802
|
-
context,
|
|
1803
|
-
preferredRole
|
|
1804
|
-
).origin,
|
|
1805
|
-
protocols: this.selectTransportForInstance(
|
|
1806
|
-
instance,
|
|
1807
|
-
context,
|
|
1808
|
-
preferredRole
|
|
1809
|
-
).protocols
|
|
1810
|
-
} : null
|
|
1811
|
-
})) : void 0;
|
|
1812
1705
|
const instances = this.instances.get(__serviceName)?.filter((instance) => {
|
|
1813
1706
|
if (targetServiceInstanceId && instance.uuid !== targetServiceInstanceId) {
|
|
1814
1707
|
return false;
|
|
@@ -1841,20 +1734,6 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1841
1734
|
}
|
|
1842
1735
|
return (a.numberOfRunningGraphs ?? 0) - (b.numberOfRunningGraphs ?? 0);
|
|
1843
1736
|
});
|
|
1844
|
-
if (candidateDiagnostics) {
|
|
1845
|
-
console.log("[CADENZA_REGISTRY_DEBUG] get_balanced_instance", {
|
|
1846
|
-
localServiceName: this.serviceName,
|
|
1847
|
-
localServiceInstanceId: this.serviceInstanceId,
|
|
1848
|
-
targetServiceName: __serviceName,
|
|
1849
|
-
preferredRole,
|
|
1850
|
-
useSocket: this.useSocket,
|
|
1851
|
-
targetServiceInstanceId,
|
|
1852
|
-
retries,
|
|
1853
|
-
triedInstances,
|
|
1854
|
-
candidateDiagnostics,
|
|
1855
|
-
filteredInstanceIds: instances?.map((instance) => instance.uuid) ?? []
|
|
1856
|
-
});
|
|
1857
|
-
}
|
|
1858
1737
|
if (!instances || instances.length === 0 || retries > this.retryCount) {
|
|
1859
1738
|
context.errored = true;
|
|
1860
1739
|
context.__error = this.isFrontend && preferredRole === "public" ? `No public transport available for ${__serviceName}.` : `No routeable ${preferredRole} transport available for ${__serviceName}. Retries: ${retries}.`;
|
|
@@ -2112,6 +1991,7 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
2112
1991
|
serviceName: report.serviceName,
|
|
2113
1992
|
serviceInstanceId: report.serviceInstanceId,
|
|
2114
1993
|
transportId: report.transportId,
|
|
1994
|
+
transportRole: report.transportRole,
|
|
2115
1995
|
transportOrigin: report.transportOrigin,
|
|
2116
1996
|
transportProtocols: report.transportProtocols,
|
|
2117
1997
|
isFrontend: report.isFrontend,
|
|
@@ -2728,6 +2608,64 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
2728
2608
|
(instance) => !!instance && !!instance.isActive && !instance.isNonResponsive && !instance.isBlocked
|
|
2729
2609
|
);
|
|
2730
2610
|
}
|
|
2611
|
+
shouldReconcileGatheredSyncTransmissions() {
|
|
2612
|
+
return this.serviceName === "CadenzaDB";
|
|
2613
|
+
}
|
|
2614
|
+
collectGatheredSyncTransmissionRecipients(ctx) {
|
|
2615
|
+
const recipients = /* @__PURE__ */ new Set();
|
|
2616
|
+
const addRecipient = (serviceName) => {
|
|
2617
|
+
const normalizedServiceName = String(serviceName ?? "").trim();
|
|
2618
|
+
if (!normalizedServiceName || normalizedServiceName === this.serviceName) {
|
|
2619
|
+
return;
|
|
2620
|
+
}
|
|
2621
|
+
recipients.add(normalizedServiceName);
|
|
2622
|
+
};
|
|
2623
|
+
addRecipient(ctx.serviceName ?? ctx.__serviceName);
|
|
2624
|
+
for (const instance of this.normalizeServiceInstancesFromSync(ctx)) {
|
|
2625
|
+
addRecipient(instance.serviceName);
|
|
2626
|
+
}
|
|
2627
|
+
for (const [serviceName, instances] of this.instances.entries()) {
|
|
2628
|
+
if (!instances?.length) {
|
|
2629
|
+
continue;
|
|
2630
|
+
}
|
|
2631
|
+
addRecipient(serviceName);
|
|
2632
|
+
}
|
|
2633
|
+
return recipients;
|
|
2634
|
+
}
|
|
2635
|
+
reconcileGatheredSyncTransmissions(ctx, emit) {
|
|
2636
|
+
if (!this.shouldReconcileGatheredSyncTransmissions()) {
|
|
2637
|
+
return false;
|
|
2638
|
+
}
|
|
2639
|
+
const desiredRecipients = this.collectGatheredSyncTransmissionRecipients(ctx);
|
|
2640
|
+
const createdRecipients = [];
|
|
2641
|
+
for (const serviceName of desiredRecipients) {
|
|
2642
|
+
if (this.gatheredSyncTransmissionServices.has(serviceName)) {
|
|
2643
|
+
continue;
|
|
2644
|
+
}
|
|
2645
|
+
CadenzaService.createSignalTransmissionTask(
|
|
2646
|
+
CADENZA_DB_GATHERED_SYNC_SIGNAL,
|
|
2647
|
+
serviceName
|
|
2648
|
+
);
|
|
2649
|
+
this.gatheredSyncTransmissionServices.add(serviceName);
|
|
2650
|
+
createdRecipients.push(serviceName);
|
|
2651
|
+
}
|
|
2652
|
+
for (const serviceName of Array.from(this.gatheredSyncTransmissionServices)) {
|
|
2653
|
+
if (desiredRecipients.has(serviceName)) {
|
|
2654
|
+
continue;
|
|
2655
|
+
}
|
|
2656
|
+
CadenzaService.get(
|
|
2657
|
+
`Transmit signal: ${CADENZA_DB_GATHERED_SYNC_SIGNAL} to ${serviceName}`
|
|
2658
|
+
)?.destroy();
|
|
2659
|
+
this.gatheredSyncTransmissionServices.delete(serviceName);
|
|
2660
|
+
}
|
|
2661
|
+
if (createdRecipients.length > 0 && ctx.__signalName === CADENZA_DB_GATHERED_SYNC_SIGNAL) {
|
|
2662
|
+
emit("meta.cadenza_db.sync_tick", {
|
|
2663
|
+
__syncing: true,
|
|
2664
|
+
__reason: "gathered_sync_transmissions_reconciled"
|
|
2665
|
+
});
|
|
2666
|
+
}
|
|
2667
|
+
return createdRecipients.length > 0 || this.gatheredSyncTransmissionServices.size > 0;
|
|
2668
|
+
}
|
|
2731
2669
|
registerRemoteIntentDeputy(map) {
|
|
2732
2670
|
if (!this.serviceName || map.serviceName === this.serviceName) {
|
|
2733
2671
|
return;
|
|
@@ -2970,38 +2908,18 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
2970
2908
|
}
|
|
2971
2909
|
return communicationTypes;
|
|
2972
2910
|
}
|
|
2973
|
-
ensureDependeeClientForInstance(instance, emit) {
|
|
2911
|
+
ensureDependeeClientForInstance(instance, emit, ctx) {
|
|
2974
2912
|
if (!instance || instance.uuid === this.serviceInstanceId || instance.isFrontend || !instance.isActive || instance.isNonResponsive || instance.isBlocked) {
|
|
2975
2913
|
return false;
|
|
2976
2914
|
}
|
|
2977
2915
|
if (!this.deputies.has(instance.serviceName) && !this.remoteIntents.has(instance.serviceName) && !this.remoteSignals.has(instance.serviceName)) {
|
|
2978
2916
|
return false;
|
|
2979
2917
|
}
|
|
2980
|
-
const transport = this.
|
|
2918
|
+
const transport = this.selectTransportForInstance(
|
|
2981
2919
|
instance,
|
|
2982
|
-
|
|
2983
|
-
|
|
2984
|
-
|
|
2985
|
-
console.log("[CADENZA_REGISTRY_DEBUG] ensure_dependee_client_for_instance", {
|
|
2986
|
-
localServiceName: this.serviceName,
|
|
2987
|
-
localServiceInstanceId: this.serviceInstanceId,
|
|
2988
|
-
targetServiceName: instance.serviceName,
|
|
2989
|
-
targetServiceInstanceId: instance.uuid,
|
|
2990
|
-
useSocket: this.useSocket,
|
|
2991
|
-
routeableRole: this.getRoutingTransportRole(),
|
|
2992
|
-
hasDeputies: this.deputies.has(instance.serviceName),
|
|
2993
|
-
hasRemoteIntents: this.remoteIntents.has(instance.serviceName),
|
|
2994
|
-
hasRemoteSignals: this.remoteSignals.has(instance.serviceName),
|
|
2995
|
-
clientCreatedTransportIds: instance.clientCreatedTransportIds ?? [],
|
|
2996
|
-
transports: summarizeTransportDescriptors(instance.transports),
|
|
2997
|
-
selectedTransport: transport ? {
|
|
2998
|
-
uuid: transport.uuid,
|
|
2999
|
-
role: transport.role,
|
|
3000
|
-
origin: transport.origin,
|
|
3001
|
-
protocols: transport.protocols
|
|
3002
|
-
} : null
|
|
3003
|
-
});
|
|
3004
|
-
}
|
|
2920
|
+
ctx ?? {},
|
|
2921
|
+
this.getRoutingTransportRole()
|
|
2922
|
+
);
|
|
3005
2923
|
if (!transport || this.hasTransportClientCreated(instance, transport.uuid)) {
|
|
3006
2924
|
return false;
|
|
3007
2925
|
}
|
|
@@ -3018,9 +2936,9 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
3018
2936
|
this.markTransportClientCreated(instance, transport.uuid);
|
|
3019
2937
|
return true;
|
|
3020
2938
|
}
|
|
3021
|
-
ensureDependeeClientsForService(serviceName, emit) {
|
|
2939
|
+
ensureDependeeClientsForService(serviceName, emit, ctx) {
|
|
3022
2940
|
for (const instance of this.instances.get(serviceName) ?? []) {
|
|
3023
|
-
this.ensureDependeeClientForInstance(instance, emit);
|
|
2941
|
+
this.ensureDependeeClientForInstance(instance, emit, ctx);
|
|
3024
2942
|
}
|
|
3025
2943
|
}
|
|
3026
2944
|
hasTransportClientCreated(instance, transportId) {
|
|
@@ -3079,6 +2997,10 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
3079
2997
|
if (!instances?.length) {
|
|
3080
2998
|
return;
|
|
3081
2999
|
}
|
|
3000
|
+
const resolvedInstance = instances.find(
|
|
3001
|
+
(instance) => instance.uuid === resolvedInstanceId
|
|
3002
|
+
);
|
|
3003
|
+
const frontendRoutingRole = this.isFrontend ? this.getRoutingTransportRole() : null;
|
|
3082
3004
|
const placeholders = instances.filter(
|
|
3083
3005
|
(instance) => instance.uuid !== resolvedInstanceId && instance.isBootstrapPlaceholder
|
|
3084
3006
|
);
|
|
@@ -3090,7 +3012,33 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
3090
3012
|
const requiredForReadiness = this.readinessDependeeByInstance.has(
|
|
3091
3013
|
placeholder.uuid
|
|
3092
3014
|
);
|
|
3015
|
+
const preservedTransportIds = /* @__PURE__ */ new Set();
|
|
3016
|
+
if (resolvedInstance && frontendRoutingRole) {
|
|
3017
|
+
const resolvedHasFrontendRoute = resolvedInstance.transports.some(
|
|
3018
|
+
(transport) => transport.role === frontendRoutingRole && !transport.deleted
|
|
3019
|
+
);
|
|
3020
|
+
if (!resolvedHasFrontendRoute) {
|
|
3021
|
+
const transportsToPreserve = placeholder.transports.filter(
|
|
3022
|
+
(transport) => transport.role === frontendRoutingRole && !transport.deleted
|
|
3023
|
+
);
|
|
3024
|
+
for (const transport of transportsToPreserve) {
|
|
3025
|
+
if (resolvedInstance.transports.some(
|
|
3026
|
+
(existingTransport) => existingTransport.role === transport.role && existingTransport.origin === transport.origin
|
|
3027
|
+
)) {
|
|
3028
|
+
continue;
|
|
3029
|
+
}
|
|
3030
|
+
resolvedInstance.transports.push({
|
|
3031
|
+
...transport,
|
|
3032
|
+
serviceInstanceId: resolvedInstanceId
|
|
3033
|
+
});
|
|
3034
|
+
preservedTransportIds.add(transport.uuid);
|
|
3035
|
+
}
|
|
3036
|
+
}
|
|
3037
|
+
}
|
|
3093
3038
|
for (const transport of placeholder.transports) {
|
|
3039
|
+
if (preservedTransportIds.has(transport.uuid)) {
|
|
3040
|
+
continue;
|
|
3041
|
+
}
|
|
3094
3042
|
const transportKey = buildTransportClientKey(transport);
|
|
3095
3043
|
emit(`meta.socket_shutdown_requested:${transportKey}`, {});
|
|
3096
3044
|
emit(`meta.fetch.destroy_requested:${transportKey}`, {});
|
|
@@ -3211,6 +3159,7 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
3211
3159
|
return null;
|
|
3212
3160
|
}
|
|
3213
3161
|
const transportId = ctx.transportId ?? ctx.serviceTransportId ?? ctx.serviceTransport?.uuid ?? void 0;
|
|
3162
|
+
const transportRole = ctx.transportRole ?? ctx.transport_role ?? ctx.serviceTransport?.role ?? void 0;
|
|
3214
3163
|
const transportOrigin = ctx.transportOrigin ?? ctx.serviceOrigin ?? ctx.serviceTransport?.origin ?? void 0;
|
|
3215
3164
|
const transportProtocols = Array.isArray(
|
|
3216
3165
|
ctx.transportProtocols ?? ctx.serviceTransport?.protocols
|
|
@@ -3236,6 +3185,7 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
3236
3185
|
serviceName,
|
|
3237
3186
|
serviceInstanceId,
|
|
3238
3187
|
transportId: typeof transportId === "string" && transportId.trim().length > 0 ? transportId : void 0,
|
|
3188
|
+
transportRole: transportRole === "internal" || transportRole === "public" ? transportRole : void 0,
|
|
3239
3189
|
transportOrigin: typeof transportOrigin === "string" && transportOrigin.trim().length > 0 ? transportOrigin : void 0,
|
|
3240
3190
|
transportProtocols: transportProtocols && transportProtocols.length > 0 ? Array.from(new Set(transportProtocols)) : void 0,
|
|
3241
3191
|
isFrontend: typeof ctx.isFrontend === "boolean" ? ctx.isFrontend : typeof ctx.serviceInstance?.isFrontend === "boolean" ? ctx.serviceInstance.isFrontend : void 0,
|
|
@@ -3258,13 +3208,16 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
3258
3208
|
const protocols = report.transportProtocols && report.transportProtocols.length > 0 ? report.transportProtocols : ["rest", "socket"];
|
|
3259
3209
|
const existingTransport = this.getTransportById(instance, report.transportId);
|
|
3260
3210
|
if (existingTransport) {
|
|
3211
|
+
if (report.transportRole) {
|
|
3212
|
+
existingTransport.role = report.transportRole;
|
|
3213
|
+
}
|
|
3261
3214
|
existingTransport.origin = report.transportOrigin;
|
|
3262
3215
|
existingTransport.protocols = protocols;
|
|
3263
3216
|
} else {
|
|
3264
3217
|
instance.transports.push({
|
|
3265
3218
|
uuid: report.transportId,
|
|
3266
3219
|
serviceInstanceId: report.serviceInstanceId,
|
|
3267
|
-
role: this.getRoutingTransportRole(),
|
|
3220
|
+
role: report.transportRole ?? this.getRoutingTransportRole(),
|
|
3268
3221
|
origin: report.transportOrigin,
|
|
3269
3222
|
protocols,
|
|
3270
3223
|
securityProfile: null,
|
|
@@ -3310,24 +3263,18 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
3310
3263
|
localInstance.isBlocked
|
|
3311
3264
|
);
|
|
3312
3265
|
const reportedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
3266
|
+
const transport = this.getRouteableTransport(
|
|
3267
|
+
localInstance,
|
|
3268
|
+
this.useSocket ? "socket" : "rest",
|
|
3269
|
+
"internal"
|
|
3270
|
+
);
|
|
3313
3271
|
const report = {
|
|
3314
3272
|
serviceName: this.serviceName,
|
|
3315
3273
|
serviceInstanceId: this.serviceInstanceId,
|
|
3316
|
-
transportId:
|
|
3317
|
-
|
|
3318
|
-
|
|
3319
|
-
|
|
3320
|
-
)?.uuid ?? void 0,
|
|
3321
|
-
transportOrigin: this.getRouteableTransport(
|
|
3322
|
-
localInstance,
|
|
3323
|
-
this.useSocket ? "socket" : "rest",
|
|
3324
|
-
"internal"
|
|
3325
|
-
)?.origin ?? void 0,
|
|
3326
|
-
transportProtocols: this.getRouteableTransport(
|
|
3327
|
-
localInstance,
|
|
3328
|
-
this.useSocket ? "socket" : "rest",
|
|
3329
|
-
"internal"
|
|
3330
|
-
)?.protocols ?? void 0,
|
|
3274
|
+
transportId: transport?.uuid ?? void 0,
|
|
3275
|
+
transportRole: transport?.role ?? void 0,
|
|
3276
|
+
transportOrigin: transport?.origin ?? void 0,
|
|
3277
|
+
transportProtocols: transport?.protocols ?? void 0,
|
|
3331
3278
|
isFrontend: localInstance.isFrontend,
|
|
3332
3279
|
reportedAt,
|
|
3333
3280
|
state: snapshot.state,
|
|
@@ -3691,6 +3638,7 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
3691
3638
|
this.deputies.clear();
|
|
3692
3639
|
this.remoteSignals.clear();
|
|
3693
3640
|
this.remoteIntents.clear();
|
|
3641
|
+
this.gatheredSyncTransmissionServices.clear();
|
|
3694
3642
|
this.remoteIntentDeputiesByKey.clear();
|
|
3695
3643
|
this.remoteIntentDeputiesByTask.clear();
|
|
3696
3644
|
this.dependeesByService.clear();
|
|
@@ -4049,19 +3997,6 @@ var RestController = class _RestController {
|
|
|
4049
3997
|
let ctx2;
|
|
4050
3998
|
try {
|
|
4051
3999
|
ctx2 = req.body;
|
|
4052
|
-
if (ctx2?.__signalName === "global.meta.cadenza_db.gathered_sync_data") {
|
|
4053
|
-
console.log("[CADENZA_SYNC_DEBUG] received_sync_signal_rest", {
|
|
4054
|
-
localServiceName: CadenzaService.serviceRegistry.serviceName,
|
|
4055
|
-
localServiceInstanceId: CadenzaService.serviceRegistry.serviceInstanceId,
|
|
4056
|
-
signalName: ctx2.__signalName,
|
|
4057
|
-
intentToTaskMaps: Array.isArray(ctx2.intentToTaskMaps) ? ctx2.intentToTaskMaps.length : 0,
|
|
4058
|
-
signalToTaskMaps: Array.isArray(ctx2.signalToTaskMaps) ? ctx2.signalToTaskMaps.length : 0,
|
|
4059
|
-
serviceInstances: Array.isArray(ctx2.serviceInstances) ? ctx2.serviceInstances.length : 0,
|
|
4060
|
-
serviceInstanceTransports: Array.isArray(
|
|
4061
|
-
ctx2.serviceInstanceTransports
|
|
4062
|
-
) ? ctx2.serviceInstanceTransports.length : 0
|
|
4063
|
-
});
|
|
4064
|
-
}
|
|
4065
4000
|
if (!CadenzaService.signalBroker.listObservedSignals().includes(ctx2.__signalName)) {
|
|
4066
4001
|
res.send({
|
|
4067
4002
|
...ctx2,
|
|
@@ -4446,21 +4381,6 @@ var RestController = class _RestController {
|
|
|
4446
4381
|
if (ctx2.__signalName === void 0) {
|
|
4447
4382
|
return;
|
|
4448
4383
|
}
|
|
4449
|
-
if (ctx2.__signalName === "global.meta.cadenza_db.gathered_sync_data") {
|
|
4450
|
-
console.log("[CADENZA_SYNC_DEBUG] transmit_sync_signal_rest", {
|
|
4451
|
-
localServiceName: CadenzaService.serviceRegistry.serviceName,
|
|
4452
|
-
localServiceInstanceId: CadenzaService.serviceRegistry.serviceInstanceId,
|
|
4453
|
-
targetServiceName: serviceName,
|
|
4454
|
-
targetUrl: URL2,
|
|
4455
|
-
signalName: ctx2.__signalName,
|
|
4456
|
-
intentToTaskMaps: Array.isArray(ctx2.intentToTaskMaps) ? ctx2.intentToTaskMaps.length : 0,
|
|
4457
|
-
signalToTaskMaps: Array.isArray(ctx2.signalToTaskMaps) ? ctx2.signalToTaskMaps.length : 0,
|
|
4458
|
-
serviceInstances: Array.isArray(ctx2.serviceInstances) ? ctx2.serviceInstances.length : 0,
|
|
4459
|
-
serviceInstanceTransports: Array.isArray(
|
|
4460
|
-
ctx2.serviceInstanceTransports
|
|
4461
|
-
) ? ctx2.serviceInstanceTransports.length : 0
|
|
4462
|
-
});
|
|
4463
|
-
}
|
|
4464
4384
|
fetchDiagnostics.signalTransmissions++;
|
|
4465
4385
|
fetchDiagnostics.updatedAt = Date.now();
|
|
4466
4386
|
let response;
|
|
@@ -5470,10 +5390,14 @@ var SocketController = class _SocketController {
|
|
|
5470
5390
|
const communicationTypes = this.normalizeCommunicationTypes(
|
|
5471
5391
|
input.communicationTypes
|
|
5472
5392
|
);
|
|
5393
|
+
const transportProtocols = Array.isArray(input.transportProtocols) ? input.transportProtocols.map((entry) => String(entry)) : [];
|
|
5473
5394
|
const serviceName = String(input.serviceName ?? "");
|
|
5474
5395
|
const serviceTransportId = String(input.serviceTransportId ?? "");
|
|
5475
5396
|
const serviceOrigin = String(input.serviceOrigin ?? "");
|
|
5476
5397
|
const parsedOrigin = parseTransportOrigin(serviceOrigin);
|
|
5398
|
+
if (!transportProtocols.includes("socket")) {
|
|
5399
|
+
return false;
|
|
5400
|
+
}
|
|
5477
5401
|
if (!serviceTransportId || !serviceOrigin || !parsedOrigin) {
|
|
5478
5402
|
CadenzaService.log(
|
|
5479
5403
|
"Socket client setup skipped due to missing transport origin",
|
|
@@ -5499,7 +5423,7 @@ var SocketController = class _SocketController {
|
|
|
5499
5423
|
serviceName,
|
|
5500
5424
|
serviceTransportId,
|
|
5501
5425
|
serviceOrigin,
|
|
5502
|
-
transportProtocols
|
|
5426
|
+
transportProtocols,
|
|
5503
5427
|
url
|
|
5504
5428
|
});
|
|
5505
5429
|
};
|
|
@@ -5520,7 +5444,7 @@ var SocketController = class _SocketController {
|
|
|
5520
5444
|
serviceName,
|
|
5521
5445
|
serviceTransportId,
|
|
5522
5446
|
serviceOrigin,
|
|
5523
|
-
transportProtocols
|
|
5447
|
+
transportProtocols,
|
|
5524
5448
|
url,
|
|
5525
5449
|
destroyed: false,
|
|
5526
5450
|
updatedAt: Date.now()
|
|
@@ -5761,19 +5685,6 @@ var SocketController = class _SocketController {
|
|
|
5761
5685
|
});
|
|
5762
5686
|
});
|
|
5763
5687
|
socket.on("signal", (signalCtx, callback) => {
|
|
5764
|
-
if (signalCtx?.__signalName === "global.meta.cadenza_db.gathered_sync_data") {
|
|
5765
|
-
console.log("[CADENZA_SYNC_DEBUG] received_sync_signal_socket", {
|
|
5766
|
-
localServiceName: CadenzaService.serviceRegistry.serviceName,
|
|
5767
|
-
localServiceInstanceId: CadenzaService.serviceRegistry.serviceInstanceId,
|
|
5768
|
-
signalName: signalCtx.__signalName,
|
|
5769
|
-
intentToTaskMaps: Array.isArray(signalCtx.intentToTaskMaps) ? signalCtx.intentToTaskMaps.length : 0,
|
|
5770
|
-
signalToTaskMaps: Array.isArray(signalCtx.signalToTaskMaps) ? signalCtx.signalToTaskMaps.length : 0,
|
|
5771
|
-
serviceInstances: Array.isArray(signalCtx.serviceInstances) ? signalCtx.serviceInstances.length : 0,
|
|
5772
|
-
serviceInstanceTransports: Array.isArray(
|
|
5773
|
-
signalCtx.serviceInstanceTransports
|
|
5774
|
-
) ? signalCtx.serviceInstanceTransports.length : 0
|
|
5775
|
-
});
|
|
5776
|
-
}
|
|
5777
5688
|
if (CadenzaService.signalBroker.listObservedSignals().includes(signalCtx.__signalName)) {
|
|
5778
5689
|
if (isSocketAckCallback(callback)) {
|
|
5779
5690
|
callback({
|
|
@@ -6072,21 +5983,6 @@ var SocketController = class _SocketController {
|
|
|
6072
5983
|
if (signalCtx.__signalName === void 0) {
|
|
6073
5984
|
return;
|
|
6074
5985
|
}
|
|
6075
|
-
if (signalCtx.__signalName === "global.meta.cadenza_db.gathered_sync_data") {
|
|
6076
|
-
console.log("[CADENZA_SYNC_DEBUG] transmit_sync_signal_socket", {
|
|
6077
|
-
localServiceName: CadenzaService.serviceRegistry.serviceName,
|
|
6078
|
-
localServiceInstanceId: CadenzaService.serviceRegistry.serviceInstanceId,
|
|
6079
|
-
targetServiceName: serviceName,
|
|
6080
|
-
targetUrl: url,
|
|
6081
|
-
signalName: signalCtx.__signalName,
|
|
6082
|
-
intentToTaskMaps: Array.isArray(signalCtx.intentToTaskMaps) ? signalCtx.intentToTaskMaps.length : 0,
|
|
6083
|
-
signalToTaskMaps: Array.isArray(signalCtx.signalToTaskMaps) ? signalCtx.signalToTaskMaps.length : 0,
|
|
6084
|
-
serviceInstances: Array.isArray(signalCtx.serviceInstances) ? signalCtx.serviceInstances.length : 0,
|
|
6085
|
-
serviceInstanceTransports: Array.isArray(
|
|
6086
|
-
signalCtx.serviceInstanceTransports
|
|
6087
|
-
) ? signalCtx.serviceInstanceTransports.length : 0
|
|
6088
|
-
});
|
|
6089
|
-
}
|
|
6090
5986
|
delete signalCtx.__broadcast;
|
|
6091
5987
|
const response = await runtimeHandle.emitWhenReady?.("signal", signalCtx, 5e3) ?? {
|
|
6092
5988
|
errored: true,
|
|
@@ -6127,7 +6023,7 @@ var SocketController = class _SocketController {
|
|
|
6127
6023
|
communicationTypes,
|
|
6128
6024
|
serviceTransportId,
|
|
6129
6025
|
serviceOrigin,
|
|
6130
|
-
transportProtocols
|
|
6026
|
+
transportProtocols,
|
|
6131
6027
|
handshakeData: {
|
|
6132
6028
|
instanceId: CadenzaService.serviceRegistry.serviceInstanceId,
|
|
6133
6029
|
serviceName: CadenzaService.serviceRegistry.serviceName
|
|
@@ -6487,6 +6383,209 @@ var SignalController = class _SignalController {
|
|
|
6487
6383
|
}
|
|
6488
6384
|
};
|
|
6489
6385
|
|
|
6386
|
+
// src/runtime/RuntimeValidationController.ts
|
|
6387
|
+
var RUNTIME_VALIDATION_INTENTS = {
|
|
6388
|
+
getPolicy: "meta-runtime-validation-policy-get",
|
|
6389
|
+
setPolicy: "meta-runtime-validation-policy-set",
|
|
6390
|
+
replacePolicy: "meta-runtime-validation-policy-replace",
|
|
6391
|
+
clearPolicy: "meta-runtime-validation-policy-clear",
|
|
6392
|
+
listScopes: "meta-runtime-validation-scope-list",
|
|
6393
|
+
upsertScope: "meta-runtime-validation-scope-upsert",
|
|
6394
|
+
removeScope: "meta-runtime-validation-scope-remove",
|
|
6395
|
+
clearScopes: "meta-runtime-validation-scope-clear"
|
|
6396
|
+
};
|
|
6397
|
+
var RUNTIME_VALIDATION_SIGNALS = {
|
|
6398
|
+
setPolicyRequested: "meta.runtime_validation.policy_set_requested",
|
|
6399
|
+
replacePolicyRequested: "meta.runtime_validation.policy_replace_requested",
|
|
6400
|
+
clearPolicyRequested: "meta.runtime_validation.policy_clear_requested",
|
|
6401
|
+
upsertScopeRequested: "meta.runtime_validation.scope_upsert_requested",
|
|
6402
|
+
removeScopeRequested: "meta.runtime_validation.scope_remove_requested",
|
|
6403
|
+
clearScopesRequested: "meta.runtime_validation.scope_clear_requested",
|
|
6404
|
+
policyUpdated: "meta.runtime_validation.policy_updated",
|
|
6405
|
+
policyCleared: "meta.runtime_validation.policy_cleared",
|
|
6406
|
+
scopeUpserted: "meta.runtime_validation.scope_upserted",
|
|
6407
|
+
scopeRemoved: "meta.runtime_validation.scope_removed",
|
|
6408
|
+
scopesCleared: "meta.runtime_validation.scopes_cleared"
|
|
6409
|
+
};
|
|
6410
|
+
function normalizePolicyContext(ctx) {
|
|
6411
|
+
const source = ctx.policy && typeof ctx.policy === "object" && !Array.isArray(ctx.policy) ? ctx.policy : ctx;
|
|
6412
|
+
const policy = {};
|
|
6413
|
+
for (const key of [
|
|
6414
|
+
"metaInput",
|
|
6415
|
+
"metaOutput",
|
|
6416
|
+
"businessInput",
|
|
6417
|
+
"businessOutput",
|
|
6418
|
+
"warnOnMissingMetaInputSchema",
|
|
6419
|
+
"warnOnMissingMetaOutputSchema",
|
|
6420
|
+
"warnOnMissingBusinessInputSchema",
|
|
6421
|
+
"warnOnMissingBusinessOutputSchema"
|
|
6422
|
+
]) {
|
|
6423
|
+
if (source[key] !== void 0) {
|
|
6424
|
+
policy[key] = source[key];
|
|
6425
|
+
}
|
|
6426
|
+
}
|
|
6427
|
+
return policy;
|
|
6428
|
+
}
|
|
6429
|
+
function normalizeScopeContext(ctx) {
|
|
6430
|
+
const source = ctx.scope && typeof ctx.scope === "object" && !Array.isArray(ctx.scope) ? ctx.scope : ctx;
|
|
6431
|
+
return {
|
|
6432
|
+
id: source.id,
|
|
6433
|
+
active: source.active,
|
|
6434
|
+
startTaskNames: Array.isArray(source.startTaskNames) ? source.startTaskNames : void 0,
|
|
6435
|
+
startRoutineNames: Array.isArray(source.startRoutineNames) ? source.startRoutineNames : void 0,
|
|
6436
|
+
policy: source.policy && typeof source.policy === "object" ? normalizePolicyContext({ policy: source.policy }) : void 0
|
|
6437
|
+
};
|
|
6438
|
+
}
|
|
6439
|
+
var RuntimeValidationController = class _RuntimeValidationController {
|
|
6440
|
+
static get instance() {
|
|
6441
|
+
if (!this._instance) {
|
|
6442
|
+
this._instance = new _RuntimeValidationController();
|
|
6443
|
+
}
|
|
6444
|
+
return this._instance;
|
|
6445
|
+
}
|
|
6446
|
+
constructor() {
|
|
6447
|
+
CadenzaService.defineIntent({
|
|
6448
|
+
name: RUNTIME_VALIDATION_INTENTS.getPolicy,
|
|
6449
|
+
description: "Get the active runtime validation policy.",
|
|
6450
|
+
input: { type: "object" },
|
|
6451
|
+
output: { type: "object" }
|
|
6452
|
+
});
|
|
6453
|
+
CadenzaService.defineIntent({
|
|
6454
|
+
name: RUNTIME_VALIDATION_INTENTS.setPolicy,
|
|
6455
|
+
description: "Merge fields into the active runtime validation policy.",
|
|
6456
|
+
input: { type: "object" },
|
|
6457
|
+
output: { type: "object" }
|
|
6458
|
+
});
|
|
6459
|
+
CadenzaService.defineIntent({
|
|
6460
|
+
name: RUNTIME_VALIDATION_INTENTS.replacePolicy,
|
|
6461
|
+
description: "Replace the active runtime validation policy.",
|
|
6462
|
+
input: { type: "object" },
|
|
6463
|
+
output: { type: "object" }
|
|
6464
|
+
});
|
|
6465
|
+
CadenzaService.defineIntent({
|
|
6466
|
+
name: RUNTIME_VALIDATION_INTENTS.clearPolicy,
|
|
6467
|
+
description: "Clear the active runtime validation policy.",
|
|
6468
|
+
input: { type: "object" },
|
|
6469
|
+
output: { type: "object" }
|
|
6470
|
+
});
|
|
6471
|
+
CadenzaService.defineIntent({
|
|
6472
|
+
name: RUNTIME_VALIDATION_INTENTS.listScopes,
|
|
6473
|
+
description: "List active runtime validation scopes.",
|
|
6474
|
+
input: { type: "object" },
|
|
6475
|
+
output: { type: "object" }
|
|
6476
|
+
});
|
|
6477
|
+
CadenzaService.defineIntent({
|
|
6478
|
+
name: RUNTIME_VALIDATION_INTENTS.upsertScope,
|
|
6479
|
+
description: "Create or update a runtime validation scope for targeted subflow validation.",
|
|
6480
|
+
input: { type: "object" },
|
|
6481
|
+
output: { type: "object" }
|
|
6482
|
+
});
|
|
6483
|
+
CadenzaService.defineIntent({
|
|
6484
|
+
name: RUNTIME_VALIDATION_INTENTS.removeScope,
|
|
6485
|
+
description: "Remove a runtime validation scope by id.",
|
|
6486
|
+
input: { type: "object" },
|
|
6487
|
+
output: { type: "object" }
|
|
6488
|
+
});
|
|
6489
|
+
CadenzaService.defineIntent({
|
|
6490
|
+
name: RUNTIME_VALIDATION_INTENTS.clearScopes,
|
|
6491
|
+
description: "Clear all runtime validation scopes.",
|
|
6492
|
+
input: { type: "object" },
|
|
6493
|
+
output: { type: "object" }
|
|
6494
|
+
});
|
|
6495
|
+
CadenzaService.createMetaTask("Get runtime validation policy", () => {
|
|
6496
|
+
return {
|
|
6497
|
+
policy: CadenzaService.getRuntimeValidationPolicy()
|
|
6498
|
+
};
|
|
6499
|
+
}).respondsTo(RUNTIME_VALIDATION_INTENTS.getPolicy);
|
|
6500
|
+
CadenzaService.createMetaTask(
|
|
6501
|
+
"Set runtime validation policy",
|
|
6502
|
+
(ctx, emit) => {
|
|
6503
|
+
const policy = normalizePolicyContext(ctx);
|
|
6504
|
+
const nextPolicy = CadenzaService.setRuntimeValidationPolicy(policy);
|
|
6505
|
+
emit(RUNTIME_VALIDATION_SIGNALS.policyUpdated, {
|
|
6506
|
+
policy: nextPolicy
|
|
6507
|
+
});
|
|
6508
|
+
return {
|
|
6509
|
+
policy: nextPolicy
|
|
6510
|
+
};
|
|
6511
|
+
},
|
|
6512
|
+
"Merges runtime validation policy fields at runtime."
|
|
6513
|
+
).respondsTo(RUNTIME_VALIDATION_INTENTS.setPolicy).doOn(RUNTIME_VALIDATION_SIGNALS.setPolicyRequested);
|
|
6514
|
+
CadenzaService.createMetaTask(
|
|
6515
|
+
"Replace runtime validation policy",
|
|
6516
|
+
(ctx, emit) => {
|
|
6517
|
+
const policy = normalizePolicyContext(ctx);
|
|
6518
|
+
const nextPolicy = CadenzaService.replaceRuntimeValidationPolicy(policy);
|
|
6519
|
+
emit(RUNTIME_VALIDATION_SIGNALS.policyUpdated, {
|
|
6520
|
+
policy: nextPolicy
|
|
6521
|
+
});
|
|
6522
|
+
return {
|
|
6523
|
+
policy: nextPolicy
|
|
6524
|
+
};
|
|
6525
|
+
},
|
|
6526
|
+
"Replaces runtime validation policy fields at runtime."
|
|
6527
|
+
).respondsTo(RUNTIME_VALIDATION_INTENTS.replacePolicy).doOn(RUNTIME_VALIDATION_SIGNALS.replacePolicyRequested);
|
|
6528
|
+
CadenzaService.createMetaTask(
|
|
6529
|
+
"Clear runtime validation policy",
|
|
6530
|
+
(_ctx, emit) => {
|
|
6531
|
+
CadenzaService.clearRuntimeValidationPolicy();
|
|
6532
|
+
emit(RUNTIME_VALIDATION_SIGNALS.policyCleared, {});
|
|
6533
|
+
return {
|
|
6534
|
+
policy: CadenzaService.getRuntimeValidationPolicy()
|
|
6535
|
+
};
|
|
6536
|
+
},
|
|
6537
|
+
"Clears the runtime validation policy."
|
|
6538
|
+
).respondsTo(RUNTIME_VALIDATION_INTENTS.clearPolicy).doOn(RUNTIME_VALIDATION_SIGNALS.clearPolicyRequested);
|
|
6539
|
+
CadenzaService.createMetaTask("List runtime validation scopes", () => {
|
|
6540
|
+
return {
|
|
6541
|
+
scopes: CadenzaService.getRuntimeValidationScopes()
|
|
6542
|
+
};
|
|
6543
|
+
}).respondsTo(RUNTIME_VALIDATION_INTENTS.listScopes);
|
|
6544
|
+
CadenzaService.createMetaTask(
|
|
6545
|
+
"Upsert runtime validation scope",
|
|
6546
|
+
(ctx, emit) => {
|
|
6547
|
+
const scope = normalizeScopeContext(ctx);
|
|
6548
|
+
const nextScope = CadenzaService.upsertRuntimeValidationScope(scope);
|
|
6549
|
+
emit(RUNTIME_VALIDATION_SIGNALS.scopeUpserted, {
|
|
6550
|
+
scope: nextScope
|
|
6551
|
+
});
|
|
6552
|
+
return {
|
|
6553
|
+
scope: nextScope
|
|
6554
|
+
};
|
|
6555
|
+
},
|
|
6556
|
+
"Upserts a runtime validation scope for targeted debugging."
|
|
6557
|
+
).respondsTo(RUNTIME_VALIDATION_INTENTS.upsertScope).doOn(RUNTIME_VALIDATION_SIGNALS.upsertScopeRequested);
|
|
6558
|
+
CadenzaService.createMetaTask(
|
|
6559
|
+
"Remove runtime validation scope",
|
|
6560
|
+
(ctx, emit) => {
|
|
6561
|
+
if (!ctx.id) {
|
|
6562
|
+
throw new Error("Runtime validation scope id is required");
|
|
6563
|
+
}
|
|
6564
|
+
CadenzaService.removeRuntimeValidationScope(ctx.id);
|
|
6565
|
+
emit(RUNTIME_VALIDATION_SIGNALS.scopeRemoved, {
|
|
6566
|
+
id: ctx.id
|
|
6567
|
+
});
|
|
6568
|
+
return {
|
|
6569
|
+
id: ctx.id,
|
|
6570
|
+
scopes: CadenzaService.getRuntimeValidationScopes()
|
|
6571
|
+
};
|
|
6572
|
+
},
|
|
6573
|
+
"Removes a runtime validation scope."
|
|
6574
|
+
).respondsTo(RUNTIME_VALIDATION_INTENTS.removeScope).doOn(RUNTIME_VALIDATION_SIGNALS.removeScopeRequested);
|
|
6575
|
+
CadenzaService.createMetaTask(
|
|
6576
|
+
"Clear runtime validation scopes",
|
|
6577
|
+
(_ctx, emit) => {
|
|
6578
|
+
CadenzaService.clearRuntimeValidationScopes();
|
|
6579
|
+
emit(RUNTIME_VALIDATION_SIGNALS.scopesCleared, {});
|
|
6580
|
+
return {
|
|
6581
|
+
scopes: CadenzaService.getRuntimeValidationScopes()
|
|
6582
|
+
};
|
|
6583
|
+
},
|
|
6584
|
+
"Clears all runtime validation scopes."
|
|
6585
|
+
).respondsTo(RUNTIME_VALIDATION_INTENTS.clearScopes).doOn(RUNTIME_VALIDATION_SIGNALS.clearScopesRequested);
|
|
6586
|
+
}
|
|
6587
|
+
};
|
|
6588
|
+
|
|
6490
6589
|
// src/graph/controllers/registerActorSessionPersistence.ts
|
|
6491
6590
|
var import_core3 = require("@cadenza.io/core");
|
|
6492
6591
|
function registerActorSessionPersistenceTasks() {
|
|
@@ -9198,7 +9297,6 @@ function buildSyncExecutionEnvelope(ctx, queryData) {
|
|
|
9198
9297
|
}
|
|
9199
9298
|
function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, options = {}) {
|
|
9200
9299
|
const localInsertTask = CadenzaService.getLocalCadenzaDBInsertTask(tableName);
|
|
9201
|
-
const debugTable = shouldDebugSyncTable(tableName);
|
|
9202
9300
|
if (!localInsertTask && !isCadenzaDBReady) {
|
|
9203
9301
|
return void 0;
|
|
9204
9302
|
}
|
|
@@ -9211,16 +9309,6 @@ function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, opti
|
|
|
9211
9309
|
register: false,
|
|
9212
9310
|
isHidden: true
|
|
9213
9311
|
});
|
|
9214
|
-
if (debugTable) {
|
|
9215
|
-
logSyncDebug("insert_task_resolved", {
|
|
9216
|
-
tableName,
|
|
9217
|
-
localInsertTaskName: localInsertTask?.name ?? null,
|
|
9218
|
-
remoteInsertTaskName: isCadenzaDBReady ? targetTask.name : null,
|
|
9219
|
-
targetTaskName: targetTask.name,
|
|
9220
|
-
queryData,
|
|
9221
|
-
options
|
|
9222
|
-
});
|
|
9223
|
-
}
|
|
9224
9312
|
const prepareExecutionTask = CadenzaService.createMetaTask(
|
|
9225
9313
|
`Prepare graph sync insert for ${tableName}`,
|
|
9226
9314
|
(ctx) => {
|
|
@@ -9231,12 +9319,12 @@ function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, opti
|
|
|
9231
9319
|
if ((tableName === "signal_registry" || tableName === "directional_task_graph_map") && originalQueryData.data && typeof originalQueryData.data === "object" && !Array.isArray(originalQueryData.data) && Object.keys(originalQueryData.data).length === 0) {
|
|
9232
9320
|
console.warn(
|
|
9233
9321
|
"[CADENZA_SYNC_EMPTY_INSERT]",
|
|
9234
|
-
|
|
9322
|
+
{
|
|
9235
9323
|
tableName,
|
|
9236
9324
|
queryData: originalQueryData,
|
|
9237
9325
|
ctx,
|
|
9238
9326
|
joinedContexts: Array.isArray(ctx.joinedContexts) ? ctx.joinedContexts : []
|
|
9239
|
-
}
|
|
9327
|
+
}
|
|
9240
9328
|
);
|
|
9241
9329
|
}
|
|
9242
9330
|
return buildSyncExecutionEnvelope(
|
|
@@ -9250,37 +9338,6 @@ function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, opti
|
|
|
9250
9338
|
isHidden: true
|
|
9251
9339
|
}
|
|
9252
9340
|
);
|
|
9253
|
-
if (debugTable) {
|
|
9254
|
-
prepareExecutionTask.then(
|
|
9255
|
-
CadenzaService.createMetaTask(
|
|
9256
|
-
`Log prepared graph sync insert execution for ${tableName}`,
|
|
9257
|
-
(ctx) => {
|
|
9258
|
-
if (tableName === "task") {
|
|
9259
|
-
if (!shouldDebugTaskSyncPayload(ctx)) {
|
|
9260
|
-
return ctx;
|
|
9261
|
-
}
|
|
9262
|
-
logSyncDebug("insert_prepare", {
|
|
9263
|
-
tableName,
|
|
9264
|
-
targetTaskName: targetTask.name,
|
|
9265
|
-
payload: buildTaskSyncDebugPayload(ctx)
|
|
9266
|
-
});
|
|
9267
|
-
return ctx;
|
|
9268
|
-
}
|
|
9269
|
-
logSyncDebug("insert_prepare", {
|
|
9270
|
-
tableName,
|
|
9271
|
-
targetTaskName: targetTask.name,
|
|
9272
|
-
ctx
|
|
9273
|
-
});
|
|
9274
|
-
return ctx;
|
|
9275
|
-
},
|
|
9276
|
-
`Logs prepared ${tableName} sync insert payloads.`,
|
|
9277
|
-
{
|
|
9278
|
-
register: false,
|
|
9279
|
-
isHidden: true
|
|
9280
|
-
}
|
|
9281
|
-
)
|
|
9282
|
-
);
|
|
9283
|
-
}
|
|
9284
9341
|
const finalizeExecutionTask = CadenzaService.createMetaTask(
|
|
9285
9342
|
`Finalize graph sync insert for ${tableName}`,
|
|
9286
9343
|
(ctx) => {
|
|
@@ -9291,25 +9348,6 @@ function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, opti
|
|
|
9291
9348
|
...ctx,
|
|
9292
9349
|
queryData: ctx.queryData && typeof ctx.queryData === "object" ? ctx.queryData : originalQueryData
|
|
9293
9350
|
};
|
|
9294
|
-
if (debugTable) {
|
|
9295
|
-
if (tableName === "task") {
|
|
9296
|
-
if (shouldDebugTaskSyncPayload(normalizedContext)) {
|
|
9297
|
-
logSyncDebug("insert_finalize", {
|
|
9298
|
-
tableName,
|
|
9299
|
-
targetTaskName: targetTask.name,
|
|
9300
|
-
success: didSyncInsertSucceed(normalizedContext),
|
|
9301
|
-
payload: buildTaskSyncDebugPayload(normalizedContext)
|
|
9302
|
-
});
|
|
9303
|
-
}
|
|
9304
|
-
} else {
|
|
9305
|
-
logSyncDebug("insert_finalize", {
|
|
9306
|
-
tableName,
|
|
9307
|
-
targetTaskName: targetTask.name,
|
|
9308
|
-
success: didSyncInsertSucceed(normalizedContext),
|
|
9309
|
-
ctx: normalizedContext
|
|
9310
|
-
});
|
|
9311
|
-
}
|
|
9312
|
-
}
|
|
9313
9351
|
return normalizedContext;
|
|
9314
9352
|
},
|
|
9315
9353
|
`Finalizes ${tableName} graph-sync insert execution after the authority task finishes.`,
|
|
@@ -9344,139 +9382,6 @@ var AUTHORITY_QUERY_RESULT_KEYS = {
|
|
|
9344
9382
|
intent_registry: "intentRegistrys"
|
|
9345
9383
|
};
|
|
9346
9384
|
var EARLY_SYNC_REQUEST_DELAYS_MS = [2e3, 1e4, 3e4];
|
|
9347
|
-
var SYNC_DEBUG_PREFIX = "[CADENZA_SYNC_DEBUG]";
|
|
9348
|
-
var SYNC_DEBUG_ENABLED = typeof process !== "undefined" && typeof process.env === "object" && process.env.CADENZA_SYNC_DEBUG === "true";
|
|
9349
|
-
var SYNC_DEBUG_TABLES = /* @__PURE__ */ new Set(["intent_to_task_map", "task"]);
|
|
9350
|
-
var SYNC_DEBUG_TASK_NAMES = /* @__PURE__ */ new Set([
|
|
9351
|
-
"Query service_instance",
|
|
9352
|
-
"Query service_instance_transport",
|
|
9353
|
-
"Query intent_to_task_map",
|
|
9354
|
-
"Query signal_to_task_map",
|
|
9355
|
-
"Prepare for signal sync",
|
|
9356
|
-
"Compile sync data and broadcast",
|
|
9357
|
-
"Forward service instance sync",
|
|
9358
|
-
"Forward service transport sync",
|
|
9359
|
-
"Forward intent to task map sync",
|
|
9360
|
-
"Forward signal to task map sync",
|
|
9361
|
-
"Normalize telemetry ingest payload",
|
|
9362
|
-
"Get telemetry session state",
|
|
9363
|
-
"Normalize anomaly detect input",
|
|
9364
|
-
"Read anomaly runtime session",
|
|
9365
|
-
"Normalize prediction compute input",
|
|
9366
|
-
"Normalize telemetry insert queryData"
|
|
9367
|
-
]);
|
|
9368
|
-
var SYNC_DEBUG_ROUTINE_NAMES = /* @__PURE__ */ new Set(["Sync services"]);
|
|
9369
|
-
var SYNC_DEBUG_INTENT_NAMES = /* @__PURE__ */ new Set([
|
|
9370
|
-
"meta-service-registry-full-sync",
|
|
9371
|
-
"runner-traffic-runtime-get",
|
|
9372
|
-
"iot-telemetry-ingest",
|
|
9373
|
-
"iot-telemetry-session-get",
|
|
9374
|
-
"iot-anomaly-detect",
|
|
9375
|
-
"iot-anomaly-runtime-get",
|
|
9376
|
-
"iot-prediction-compute",
|
|
9377
|
-
"iot-db-telemetry-insert",
|
|
9378
|
-
"query-pg-cadenza-db-postgres-actor-service_instance",
|
|
9379
|
-
"query-pg-cadenza-db-postgres-actor-service_instance_transport",
|
|
9380
|
-
"query-pg-cadenza-db-postgres-actor-intent_to_task_map",
|
|
9381
|
-
"query-pg-cadenza-db-postgres-actor-signal_to_task_map"
|
|
9382
|
-
]);
|
|
9383
|
-
function shouldDebugSyncTable(tableName) {
|
|
9384
|
-
return SYNC_DEBUG_ENABLED && SYNC_DEBUG_TABLES.has(tableName);
|
|
9385
|
-
}
|
|
9386
|
-
function shouldDebugSyncTaskName(taskName) {
|
|
9387
|
-
return SYNC_DEBUG_ENABLED && typeof taskName === "string" && SYNC_DEBUG_TASK_NAMES.has(taskName);
|
|
9388
|
-
}
|
|
9389
|
-
function shouldDebugSyncRoutineName(routineName) {
|
|
9390
|
-
return SYNC_DEBUG_ENABLED && typeof routineName === "string" && SYNC_DEBUG_ROUTINE_NAMES.has(routineName);
|
|
9391
|
-
}
|
|
9392
|
-
function shouldDebugSyncIntentName(intentName) {
|
|
9393
|
-
return SYNC_DEBUG_ENABLED && typeof intentName === "string" && SYNC_DEBUG_INTENT_NAMES.has(intentName);
|
|
9394
|
-
}
|
|
9395
|
-
function summarizeSyncDebugValue(value, depth = 0) {
|
|
9396
|
-
if (value === null || value === void 0) {
|
|
9397
|
-
return value;
|
|
9398
|
-
}
|
|
9399
|
-
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
|
|
9400
|
-
return value;
|
|
9401
|
-
}
|
|
9402
|
-
if (value instanceof Set) {
|
|
9403
|
-
return {
|
|
9404
|
-
__type: "Set",
|
|
9405
|
-
size: value.size,
|
|
9406
|
-
values: Array.from(value).slice(0, 8).map((item) => summarizeSyncDebugValue(item, depth + 1))
|
|
9407
|
-
};
|
|
9408
|
-
}
|
|
9409
|
-
if (value instanceof Map) {
|
|
9410
|
-
return {
|
|
9411
|
-
__type: "Map",
|
|
9412
|
-
size: value.size
|
|
9413
|
-
};
|
|
9414
|
-
}
|
|
9415
|
-
if (Array.isArray(value)) {
|
|
9416
|
-
return {
|
|
9417
|
-
__type: "Array",
|
|
9418
|
-
length: value.length,
|
|
9419
|
-
items: value.slice(0, 5).map((item) => summarizeSyncDebugValue(item, depth + 1))
|
|
9420
|
-
};
|
|
9421
|
-
}
|
|
9422
|
-
if (typeof value === "object") {
|
|
9423
|
-
if (depth >= 2) {
|
|
9424
|
-
return "[object]";
|
|
9425
|
-
}
|
|
9426
|
-
const output = {};
|
|
9427
|
-
const entries = Object.entries(value).filter(
|
|
9428
|
-
([key]) => ![
|
|
9429
|
-
"functionString",
|
|
9430
|
-
"tagIdGetter",
|
|
9431
|
-
"__functionString",
|
|
9432
|
-
"__getTagCallback",
|
|
9433
|
-
"joinedContexts",
|
|
9434
|
-
"task",
|
|
9435
|
-
"taskInstance",
|
|
9436
|
-
"tasks"
|
|
9437
|
-
].includes(key)
|
|
9438
|
-
).slice(0, 12);
|
|
9439
|
-
for (const [key, nestedValue] of entries) {
|
|
9440
|
-
output[key] = summarizeSyncDebugValue(nestedValue, depth + 1);
|
|
9441
|
-
}
|
|
9442
|
-
return output;
|
|
9443
|
-
}
|
|
9444
|
-
return String(value);
|
|
9445
|
-
}
|
|
9446
|
-
function logSyncDebug(event, payload) {
|
|
9447
|
-
console.log(`${SYNC_DEBUG_PREFIX} ${event}`, summarizeSyncDebugValue(payload));
|
|
9448
|
-
}
|
|
9449
|
-
function buildTaskSyncDebugPayload(ctx) {
|
|
9450
|
-
const data = ctx.data && typeof ctx.data === "object" ? ctx.data : {};
|
|
9451
|
-
const queryData = ctx.queryData && typeof ctx.queryData === "object" ? ctx.queryData : {};
|
|
9452
|
-
const queryDataData = queryData.data && typeof queryData.data === "object" ? queryData.data : {};
|
|
9453
|
-
const taskPayload = Object.keys(queryDataData).length > 0 ? queryDataData : data;
|
|
9454
|
-
const functionString = typeof taskPayload.functionString === "string" ? taskPayload.functionString : typeof taskPayload.function_string === "string" ? taskPayload.function_string : void 0;
|
|
9455
|
-
const tagIdGetter = typeof taskPayload.tagIdGetter === "string" ? taskPayload.tagIdGetter : typeof taskPayload.tag_id_getter === "string" ? taskPayload.tag_id_getter : void 0;
|
|
9456
|
-
const signals = taskPayload.signals && typeof taskPayload.signals === "object" ? taskPayload.signals : {};
|
|
9457
|
-
const intents = taskPayload.intents && typeof taskPayload.intents === "object" ? taskPayload.intents : {};
|
|
9458
|
-
return {
|
|
9459
|
-
taskName: taskPayload.name ?? taskPayload.taskName ?? taskPayload.task_name ?? ctx.__taskName ?? null,
|
|
9460
|
-
serviceName: taskPayload.service_name ?? taskPayload.serviceName ?? ctx.__syncServiceName ?? null,
|
|
9461
|
-
functionStringLength: functionString?.length ?? null,
|
|
9462
|
-
tagIdGetterLength: tagIdGetter?.length ?? null,
|
|
9463
|
-
isMeta: taskPayload.isMeta ?? taskPayload.is_meta ?? null,
|
|
9464
|
-
isSubMeta: taskPayload.isSubMeta ?? taskPayload.is_sub_meta ?? null,
|
|
9465
|
-
isHidden: taskPayload.isHidden ?? taskPayload.is_hidden ?? null,
|
|
9466
|
-
signalsEmitsCount: Array.isArray(signals.emits) ? signals.emits.length : null,
|
|
9467
|
-
signalsObservedCount: Array.isArray(signals.observed) ? signals.observed.length : null,
|
|
9468
|
-
intentHandlesCount: Array.isArray(intents.handles) ? intents.handles.length : null,
|
|
9469
|
-
intentInquiresCount: Array.isArray(intents.inquires) ? intents.inquires.length : null,
|
|
9470
|
-
rowCount: ctx.rowCount ?? null,
|
|
9471
|
-
errored: ctx.errored ?? false,
|
|
9472
|
-
success: ctx.__success ?? null,
|
|
9473
|
-
error: ctx.__error ?? null
|
|
9474
|
-
};
|
|
9475
|
-
}
|
|
9476
|
-
function shouldDebugTaskSyncPayload(ctx) {
|
|
9477
|
-
const payload = buildTaskSyncDebugPayload(ctx);
|
|
9478
|
-
return shouldDebugSyncTaskName(payload.taskName);
|
|
9479
|
-
}
|
|
9480
9385
|
function resolveSyncQueryRows(ctx, tableName) {
|
|
9481
9386
|
const resultKey = AUTHORITY_QUERY_RESULT_KEYS[tableName];
|
|
9482
9387
|
const rows = ctx?.[resultKey];
|
|
@@ -9923,16 +9828,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
9923
9828
|
if (!nextTask?.registered) {
|
|
9924
9829
|
continue;
|
|
9925
9830
|
}
|
|
9926
|
-
if (shouldDebugSyncRoutineName(routine.name) || shouldDebugSyncTaskName(nextTask.name)) {
|
|
9927
|
-
logSyncDebug("task_to_routine_split", {
|
|
9928
|
-
routineName: routine.name,
|
|
9929
|
-
routineVersion: routine.version,
|
|
9930
|
-
taskName: nextTask.name,
|
|
9931
|
-
taskVersion: nextTask.version,
|
|
9932
|
-
serviceName: serviceName2,
|
|
9933
|
-
registered: nextTask.registered
|
|
9934
|
-
});
|
|
9935
|
-
}
|
|
9936
9831
|
yield {
|
|
9937
9832
|
__syncing: ctx.__syncing,
|
|
9938
9833
|
data: {
|
|
@@ -10078,20 +9973,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
10078
9973
|
if (task.registered) continue;
|
|
10079
9974
|
const { __functionString, __getTagCallback } = task.export();
|
|
10080
9975
|
this.tasksSynced = false;
|
|
10081
|
-
if (shouldDebugSyncTaskName(task.name)) {
|
|
10082
|
-
logSyncDebug("task_registration_split", {
|
|
10083
|
-
taskName: task.name,
|
|
10084
|
-
taskVersion: task.version,
|
|
10085
|
-
serviceName: serviceName2,
|
|
10086
|
-
register: task.register,
|
|
10087
|
-
registered: task.registered,
|
|
10088
|
-
hidden: task.hidden,
|
|
10089
|
-
exportFunctionLength: __functionString?.length ?? null,
|
|
10090
|
-
exportTagGetterLength: __getTagCallback?.length ?? null,
|
|
10091
|
-
observedSignals: Array.from(task.observedSignals),
|
|
10092
|
-
handledIntents: Array.from(task.handlesIntents)
|
|
10093
|
-
});
|
|
10094
|
-
}
|
|
10095
9976
|
yield {
|
|
10096
9977
|
__syncing: ctx.__syncing,
|
|
10097
9978
|
data: {
|
|
@@ -10146,13 +10027,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
10146
10027
|
const registerTaskTask = CadenzaService.createMetaTask(
|
|
10147
10028
|
"Record registration",
|
|
10148
10029
|
(ctx, emit) => {
|
|
10149
|
-
if (shouldDebugSyncTaskName(ctx.__taskName)) {
|
|
10150
|
-
logSyncDebug("task_registration_result", {
|
|
10151
|
-
taskName: ctx.__taskName,
|
|
10152
|
-
success: didSyncInsertSucceed(ctx),
|
|
10153
|
-
ctx
|
|
10154
|
-
});
|
|
10155
|
-
}
|
|
10156
10030
|
if (!didSyncInsertSucceed(ctx)) {
|
|
10157
10031
|
return;
|
|
10158
10032
|
}
|
|
@@ -10178,16 +10052,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
10178
10052
|
"Prepare created task for immediate sync",
|
|
10179
10053
|
(ctx) => {
|
|
10180
10054
|
const task = ctx.taskInstance ?? (ctx.data?.name ? CadenzaService.get(String(ctx.data.name)) : void 0);
|
|
10181
|
-
if (shouldDebugSyncTaskName(task?.name ?? ctx?.data?.name)) {
|
|
10182
|
-
logSyncDebug("task_created_for_immediate_sync", {
|
|
10183
|
-
incomingTaskName: ctx?.data?.name ?? null,
|
|
10184
|
-
resolvedTaskName: task?.name ?? null,
|
|
10185
|
-
exists: Boolean(task),
|
|
10186
|
-
hidden: task?.hidden ?? null,
|
|
10187
|
-
register: task?.register ?? null,
|
|
10188
|
-
registered: task?.registered ?? null
|
|
10189
|
-
});
|
|
10190
|
-
}
|
|
10191
10055
|
if (!task || task.hidden || !task.register || task.registered) {
|
|
10192
10056
|
return false;
|
|
10193
10057
|
}
|
|
@@ -10374,17 +10238,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
10374
10238
|
if (!isGlobal) {
|
|
10375
10239
|
continue;
|
|
10376
10240
|
}
|
|
10377
|
-
if (shouldDebugSyncTaskName(task.name)) {
|
|
10378
|
-
logSyncDebug("signal_to_task_map_split", {
|
|
10379
|
-
taskName: task.name,
|
|
10380
|
-
signalName: _signal,
|
|
10381
|
-
rawSignal: signal,
|
|
10382
|
-
serviceName: serviceName2,
|
|
10383
|
-
observerRegistered: CadenzaService.signalBroker.signalObservers?.get(
|
|
10384
|
-
_signal
|
|
10385
|
-
)?.registered
|
|
10386
|
-
});
|
|
10387
|
-
}
|
|
10388
10241
|
yield {
|
|
10389
10242
|
__syncing: ctx.__syncing,
|
|
10390
10243
|
data: {
|
|
@@ -10495,21 +10348,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
10495
10348
|
}
|
|
10496
10349
|
task.__registeredIntents = task.__registeredIntents ?? /* @__PURE__ */ new Set();
|
|
10497
10350
|
task.__invalidMetaIntentWarnings = task.__invalidMetaIntentWarnings ?? /* @__PURE__ */ new Set();
|
|
10498
|
-
const shouldDebugTask = shouldDebugSyncTaskName(task.name);
|
|
10499
|
-
if (shouldDebugTask) {
|
|
10500
|
-
logSyncDebug("intent_map_task_state", {
|
|
10501
|
-
taskName: task.name,
|
|
10502
|
-
taskVersion: task.version,
|
|
10503
|
-
serviceName: serviceName2,
|
|
10504
|
-
registered: task.registered,
|
|
10505
|
-
register: task.register,
|
|
10506
|
-
hidden: task.hidden,
|
|
10507
|
-
handledIntents: Array.from(task.handlesIntents),
|
|
10508
|
-
registeredIntents: Array.from(task.__registeredIntents),
|
|
10509
|
-
tasksSynced: this.tasksSynced,
|
|
10510
|
-
intentsSynced: this.intentsSynced
|
|
10511
|
-
});
|
|
10512
|
-
}
|
|
10513
10351
|
let emittedCount = 0;
|
|
10514
10352
|
for (const intent of task.handlesIntents) {
|
|
10515
10353
|
if (task.__registeredIntents.has(intent)) continue;
|
|
@@ -10535,15 +10373,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
10535
10373
|
if (!intentDefinition) {
|
|
10536
10374
|
continue;
|
|
10537
10375
|
}
|
|
10538
|
-
if (shouldDebugSyncTaskName(task.name) || shouldDebugSyncIntentName(intent)) {
|
|
10539
|
-
logSyncDebug("intent_to_task_map_split", {
|
|
10540
|
-
taskName: task.name,
|
|
10541
|
-
taskVersion: task.version,
|
|
10542
|
-
intentName: intent,
|
|
10543
|
-
serviceName: serviceName2,
|
|
10544
|
-
intentDefinition
|
|
10545
|
-
});
|
|
10546
|
-
}
|
|
10547
10376
|
yield {
|
|
10548
10377
|
__syncing: ctx.__syncing,
|
|
10549
10378
|
data: {
|
|
@@ -10564,15 +10393,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
10564
10393
|
};
|
|
10565
10394
|
emittedCount += 1;
|
|
10566
10395
|
}
|
|
10567
|
-
if (shouldDebugTask && emittedCount === 0) {
|
|
10568
|
-
logSyncDebug("intent_map_task_noop", {
|
|
10569
|
-
taskName: task.name,
|
|
10570
|
-
taskVersion: task.version,
|
|
10571
|
-
serviceName: serviceName2,
|
|
10572
|
-
handledIntents: Array.from(task.handlesIntents),
|
|
10573
|
-
registeredIntents: Array.from(task.__registeredIntents)
|
|
10574
|
-
});
|
|
10575
|
-
}
|
|
10576
10396
|
return emittedCount > 0;
|
|
10577
10397
|
}.bind(this)
|
|
10578
10398
|
);
|
|
@@ -10582,13 +10402,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
10582
10402
|
if (!ctx.__intentDefinition || !ctx.__intentMapData) {
|
|
10583
10403
|
return false;
|
|
10584
10404
|
}
|
|
10585
|
-
if (shouldDebugSyncTaskName(ctx.__taskName) || shouldDebugSyncIntentName(ctx.__intent)) {
|
|
10586
|
-
logSyncDebug("intent_definition_prepare", {
|
|
10587
|
-
taskName: ctx.__taskName,
|
|
10588
|
-
intentName: ctx.__intent,
|
|
10589
|
-
intentDefinition: ctx.__intentDefinition
|
|
10590
|
-
});
|
|
10591
|
-
}
|
|
10592
10405
|
return {
|
|
10593
10406
|
...ctx,
|
|
10594
10407
|
data: ctx.__intentDefinition
|
|
@@ -10601,13 +10414,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
10601
10414
|
if (!ctx.__intentMapData) {
|
|
10602
10415
|
return false;
|
|
10603
10416
|
}
|
|
10604
|
-
if (shouldDebugSyncTaskName(ctx.__taskName) || shouldDebugSyncIntentName(ctx.__intent)) {
|
|
10605
|
-
logSyncDebug("intent_map_payload_restore", {
|
|
10606
|
-
taskName: ctx.__taskName,
|
|
10607
|
-
intentName: ctx.__intent,
|
|
10608
|
-
intentMapData: ctx.__intentMapData
|
|
10609
|
-
});
|
|
10610
|
-
}
|
|
10611
10417
|
return {
|
|
10612
10418
|
...ctx,
|
|
10613
10419
|
data: ctx.__intentMapData
|
|
@@ -11429,6 +11235,13 @@ var CadenzaService = class {
|
|
|
11429
11235
|
if (this.isBootstrapped) return;
|
|
11430
11236
|
this.isBootstrapped = true;
|
|
11431
11237
|
import_core5.default.bootstrap();
|
|
11238
|
+
import_core5.default.setRuntimeInquiryDelegate(
|
|
11239
|
+
(inquiry, context, options) => this.inquire(
|
|
11240
|
+
inquiry,
|
|
11241
|
+
context,
|
|
11242
|
+
options ?? {}
|
|
11243
|
+
)
|
|
11244
|
+
);
|
|
11432
11245
|
this.signalBroker = import_core5.default.signalBroker;
|
|
11433
11246
|
this.inquiryBroker = import_core5.default.inquiryBroker;
|
|
11434
11247
|
this.runner = import_core5.default.runner;
|
|
@@ -11437,7 +11250,7 @@ var CadenzaService = class {
|
|
|
11437
11250
|
this.serviceRegistry = ServiceRegistry.instance;
|
|
11438
11251
|
RestController.instance;
|
|
11439
11252
|
SocketController.instance;
|
|
11440
|
-
|
|
11253
|
+
RuntimeValidationController.instance;
|
|
11441
11254
|
}
|
|
11442
11255
|
static ensureTransportControllers(isFrontend) {
|
|
11443
11256
|
if (!isFrontend) {
|
|
@@ -11576,6 +11389,38 @@ var CadenzaService = class {
|
|
|
11576
11389
|
this.inquiryBroker?.addIntent(intent);
|
|
11577
11390
|
return intent;
|
|
11578
11391
|
}
|
|
11392
|
+
static getRuntimeValidationPolicy() {
|
|
11393
|
+
this.bootstrap();
|
|
11394
|
+
return import_core5.default.getRuntimeValidationPolicy();
|
|
11395
|
+
}
|
|
11396
|
+
static setRuntimeValidationPolicy(policy = {}) {
|
|
11397
|
+
this.bootstrap();
|
|
11398
|
+
return import_core5.default.setRuntimeValidationPolicy(policy);
|
|
11399
|
+
}
|
|
11400
|
+
static replaceRuntimeValidationPolicy(policy = {}) {
|
|
11401
|
+
this.bootstrap();
|
|
11402
|
+
return import_core5.default.replaceRuntimeValidationPolicy(policy);
|
|
11403
|
+
}
|
|
11404
|
+
static clearRuntimeValidationPolicy() {
|
|
11405
|
+
this.bootstrap();
|
|
11406
|
+
import_core5.default.clearRuntimeValidationPolicy();
|
|
11407
|
+
}
|
|
11408
|
+
static getRuntimeValidationScopes() {
|
|
11409
|
+
this.bootstrap();
|
|
11410
|
+
return import_core5.default.getRuntimeValidationScopes();
|
|
11411
|
+
}
|
|
11412
|
+
static upsertRuntimeValidationScope(scope) {
|
|
11413
|
+
this.bootstrap();
|
|
11414
|
+
return import_core5.default.upsertRuntimeValidationScope(scope);
|
|
11415
|
+
}
|
|
11416
|
+
static removeRuntimeValidationScope(id) {
|
|
11417
|
+
this.bootstrap();
|
|
11418
|
+
import_core5.default.removeRuntimeValidationScope(id);
|
|
11419
|
+
}
|
|
11420
|
+
static clearRuntimeValidationScopes() {
|
|
11421
|
+
this.bootstrap();
|
|
11422
|
+
import_core5.default.clearRuntimeValidationScopes();
|
|
11423
|
+
}
|
|
11579
11424
|
static getInquiryResponderDescriptor(task) {
|
|
11580
11425
|
return this.serviceRegistry.getInquiryResponderDescriptor(task);
|
|
11581
11426
|
}
|
|
@@ -12336,7 +12181,6 @@ var CadenzaService = class {
|
|
|
12336
12181
|
}
|
|
12337
12182
|
});
|
|
12338
12183
|
});
|
|
12339
|
-
console.log("Creating service...");
|
|
12340
12184
|
const initContext = {
|
|
12341
12185
|
data: {
|
|
12342
12186
|
name: serviceName,
|
|
@@ -12369,18 +12213,13 @@ var CadenzaService = class {
|
|
|
12369
12213
|
}).doOn("meta.fetch.handshake_complete");
|
|
12370
12214
|
} else {
|
|
12371
12215
|
this.emit("meta.create_service_requested", initContext);
|
|
12372
|
-
this.createMetaTask("Create signal transmission for sync", (ctx) => {
|
|
12373
|
-
|
|
12374
|
-
|
|
12375
|
-
|
|
12376
|
-
|
|
12377
|
-
|
|
12378
|
-
|
|
12379
|
-
});
|
|
12380
|
-
}
|
|
12381
|
-
this.createSignalTransmissionTask(
|
|
12382
|
-
"global.meta.cadenza_db.gathered_sync_data",
|
|
12383
|
-
ctx.serviceName
|
|
12216
|
+
this.createMetaTask("Create signal transmission for sync", (ctx, emit) => {
|
|
12217
|
+
emit(
|
|
12218
|
+
"meta.service_registry.gathered_sync_transmission_reconcile_requested",
|
|
12219
|
+
{
|
|
12220
|
+
serviceName: ctx.serviceName,
|
|
12221
|
+
__reason: "handshake"
|
|
12222
|
+
}
|
|
12384
12223
|
);
|
|
12385
12224
|
}).doOn("meta.rest.handshake", "meta.socket.handshake");
|
|
12386
12225
|
}
|
|
@@ -13370,6 +13209,8 @@ var index_default = CadenzaService;
|
|
|
13370
13209
|
EphemeralTask,
|
|
13371
13210
|
GraphMetadataController,
|
|
13372
13211
|
GraphRoutine,
|
|
13212
|
+
RUNTIME_VALIDATION_INTENTS,
|
|
13213
|
+
RUNTIME_VALIDATION_SIGNALS,
|
|
13373
13214
|
RestController,
|
|
13374
13215
|
ServiceRegistry,
|
|
13375
13216
|
SignalController,
|