@cadenza.io/service 2.17.79 → 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 +419 -497
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/index.mjs +419 -497
- 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 +421 -497
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +419 -497
- 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
|
}
|
|
@@ -726,6 +735,8 @@ function hasSignificantRuntimeStatusChange(previous, next) {
|
|
|
726
735
|
|
|
727
736
|
// src/registry/ServiceRegistry.ts
|
|
728
737
|
var META_SERVICE_REGISTRY_FULL_SYNC_INTENT = "meta-service-registry-full-sync";
|
|
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";
|
|
729
740
|
var META_RUNTIME_STATUS_HEARTBEAT_TICK_SIGNAL = "meta.service_registry.runtime_status.heartbeat_tick";
|
|
730
741
|
var META_RUNTIME_STATUS_MONITOR_TICK_SIGNAL = "meta.service_registry.runtime_status.monitor_tick";
|
|
731
742
|
var INTERNAL_RUNTIME_STATUS_TASK_NAMES = /* @__PURE__ */ new Set([
|
|
@@ -813,18 +824,6 @@ function normalizeServiceRegistryInsertResult(tableName, ctx, queryData, rawResu
|
|
|
813
824
|
}
|
|
814
825
|
return result;
|
|
815
826
|
}
|
|
816
|
-
function shouldTraceIotDbRegistryPath(localServiceName, targetServiceName) {
|
|
817
|
-
return targetServiceName === "IotDbService" && localServiceName !== "IotDbService";
|
|
818
|
-
}
|
|
819
|
-
function summarizeTransportDescriptors(transports) {
|
|
820
|
-
return transports.map((transport) => ({
|
|
821
|
-
uuid: transport.uuid,
|
|
822
|
-
serviceInstanceId: transport.serviceInstanceId,
|
|
823
|
-
role: transport.role,
|
|
824
|
-
origin: transport.origin,
|
|
825
|
-
protocols: transport.protocols
|
|
826
|
-
}));
|
|
827
|
-
}
|
|
828
827
|
function resolveServiceRegistryInsertTask(tableName, queryData = {}, options = {}) {
|
|
829
828
|
const remoteInsertTask = CadenzaService.createCadenzaDBInsertTask(
|
|
830
829
|
tableName,
|
|
@@ -841,6 +840,10 @@ function resolveServiceRegistryInsertTask(tableName, queryData = {}, options = {
|
|
|
841
840
|
const nextQueryData = buildServiceRegistryInsertQueryData(ctx, queryData);
|
|
842
841
|
const delegationContext = ensureDelegationContextMetadata({
|
|
843
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,
|
|
844
847
|
queryData: nextQueryData
|
|
845
848
|
});
|
|
846
849
|
delegationContext.__metadata.__skipRemoteExecution = delegationContext.__metadata.__skipRemoteExecution ?? delegationContext.__skipRemoteExecution ?? false;
|
|
@@ -964,6 +967,7 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
964
967
|
this.deputies = /* @__PURE__ */ new Map();
|
|
965
968
|
this.remoteSignals = /* @__PURE__ */ new Map();
|
|
966
969
|
this.remoteIntents = /* @__PURE__ */ new Map();
|
|
970
|
+
this.gatheredSyncTransmissionServices = /* @__PURE__ */ new Set();
|
|
967
971
|
this.remoteIntentDeputiesByKey = /* @__PURE__ */ new Map();
|
|
968
972
|
this.remoteIntentDeputiesByTask = /* @__PURE__ */ new Map();
|
|
969
973
|
this.dependeesByService = /* @__PURE__ */ new Map();
|
|
@@ -1215,21 +1219,6 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1215
1219
|
trackedInstance.acceptingWork = snapshot.acceptingWork;
|
|
1216
1220
|
trackedInstance.reportedAt = trackedInstance.reportedAt ?? (/* @__PURE__ */ new Date()).toISOString();
|
|
1217
1221
|
}
|
|
1218
|
-
if (shouldTraceIotDbRegistryPath(this.serviceName, serviceName)) {
|
|
1219
|
-
console.log("[CADENZA_REGISTRY_DEBUG] handle_instance_update", {
|
|
1220
|
-
localServiceName: this.serviceName,
|
|
1221
|
-
localServiceInstanceId: this.serviceInstanceId,
|
|
1222
|
-
targetServiceName: serviceName,
|
|
1223
|
-
targetServiceInstanceId: uuid8,
|
|
1224
|
-
existingInstance: !!existing,
|
|
1225
|
-
deleted,
|
|
1226
|
-
remoteInterest: this.deputies.has(serviceName) || this.remoteIntents.has(serviceName) || this.remoteSignals.has(serviceName),
|
|
1227
|
-
hasDeputies: this.deputies.has(serviceName),
|
|
1228
|
-
hasRemoteIntents: this.remoteIntents.has(serviceName),
|
|
1229
|
-
hasRemoteSignals: this.remoteSignals.has(serviceName),
|
|
1230
|
-
transports: trackedInstance ? summarizeTransportDescriptors(trackedInstance.transports) : []
|
|
1231
|
-
});
|
|
1232
|
-
}
|
|
1233
1222
|
if (!serviceInstance.isBootstrapPlaceholder) {
|
|
1234
1223
|
this.reconcileBootstrapPlaceholderInstance(serviceName, uuid8, emit);
|
|
1235
1224
|
}
|
|
@@ -1242,7 +1231,8 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1242
1231
|
if (this.deputies.has(serviceName) || this.remoteIntents.has(serviceName) || this.remoteSignals.has(serviceName)) {
|
|
1243
1232
|
const connected = this.ensureDependeeClientForInstance(
|
|
1244
1233
|
trackedInstance,
|
|
1245
|
-
emit
|
|
1234
|
+
emit,
|
|
1235
|
+
ctx
|
|
1246
1236
|
);
|
|
1247
1237
|
if (!connected) {
|
|
1248
1238
|
emit("meta.service_registry.routeable_transport_missing", {
|
|
@@ -1285,27 +1275,6 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1285
1275
|
break;
|
|
1286
1276
|
}
|
|
1287
1277
|
}
|
|
1288
|
-
if (shouldTraceIotDbRegistryPath(
|
|
1289
|
-
this.serviceName,
|
|
1290
|
-
ownerInstance?.serviceName ?? ctx.serviceName ?? void 0
|
|
1291
|
-
)) {
|
|
1292
|
-
console.log("[CADENZA_REGISTRY_DEBUG] handle_transport_update", {
|
|
1293
|
-
localServiceName: this.serviceName,
|
|
1294
|
-
localServiceInstanceId: this.serviceInstanceId,
|
|
1295
|
-
transport: {
|
|
1296
|
-
uuid: transport.uuid,
|
|
1297
|
-
serviceInstanceId: transport.serviceInstanceId,
|
|
1298
|
-
role: transport.role,
|
|
1299
|
-
origin: transport.origin,
|
|
1300
|
-
protocols: transport.protocols,
|
|
1301
|
-
deleted: transport.deleted
|
|
1302
|
-
},
|
|
1303
|
-
ownerFound: !!ownerInstance,
|
|
1304
|
-
ownerServiceName: ownerInstance?.serviceName,
|
|
1305
|
-
ownerInstanceId: ownerInstance?.uuid,
|
|
1306
|
-
ownerTransports: ownerInstance ? summarizeTransportDescriptors(ownerInstance.transports) : []
|
|
1307
|
-
});
|
|
1308
|
-
}
|
|
1309
1278
|
if (!ownerInstance) {
|
|
1310
1279
|
return false;
|
|
1311
1280
|
}
|
|
@@ -1331,7 +1300,7 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1331
1300
|
if (!hasRemoteInterest) {
|
|
1332
1301
|
return true;
|
|
1333
1302
|
}
|
|
1334
|
-
this.ensureDependeeClientForInstance(ownerInstance, emit);
|
|
1303
|
+
this.ensureDependeeClientForInstance(ownerInstance, emit, ctx);
|
|
1335
1304
|
return true;
|
|
1336
1305
|
},
|
|
1337
1306
|
"Handles service transport updates independently from instance rows."
|
|
@@ -1361,29 +1330,12 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1361
1330
|
"Tracks remote dependency instances for runtime heartbeat monitoring."
|
|
1362
1331
|
).doOn("meta.service_registry.dependee_registered");
|
|
1363
1332
|
const normalizeServiceInstancesFromSync = (ctx) => this.normalizeServiceInstancesFromSync(ctx);
|
|
1364
|
-
const getLocalTraceContext = () => ({
|
|
1365
|
-
localServiceName: this.serviceName,
|
|
1366
|
-
localServiceInstanceId: this.serviceInstanceId
|
|
1367
|
-
});
|
|
1368
1333
|
CadenzaService.createMetaTask("Split service instances", function* (ctx) {
|
|
1369
1334
|
const serviceInstances = normalizeServiceInstancesFromSync(ctx);
|
|
1370
1335
|
if (serviceInstances.length === 0) {
|
|
1371
1336
|
return;
|
|
1372
1337
|
}
|
|
1373
1338
|
for (const serviceInstance of serviceInstances) {
|
|
1374
|
-
const { localServiceName, localServiceInstanceId } = getLocalTraceContext();
|
|
1375
|
-
if (shouldTraceIotDbRegistryPath(
|
|
1376
|
-
localServiceName,
|
|
1377
|
-
serviceInstance.serviceName
|
|
1378
|
-
)) {
|
|
1379
|
-
console.log("[CADENZA_REGISTRY_DEBUG] split_service_instance", {
|
|
1380
|
-
localServiceName,
|
|
1381
|
-
localServiceInstanceId,
|
|
1382
|
-
targetServiceName: serviceInstance.serviceName,
|
|
1383
|
-
targetServiceInstanceId: serviceInstance.uuid,
|
|
1384
|
-
transports: summarizeTransportDescriptors(serviceInstance.transports)
|
|
1385
|
-
});
|
|
1386
|
-
}
|
|
1387
1339
|
yield { serviceInstance };
|
|
1388
1340
|
}
|
|
1389
1341
|
}).doOn(
|
|
@@ -1429,6 +1381,15 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1429
1381
|
},
|
|
1430
1382
|
"Handles registration of remote signals"
|
|
1431
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
|
+
);
|
|
1432
1393
|
this.handleGlobalIntentRegistrationTask = CadenzaService.createMetaTask(
|
|
1433
1394
|
"Handle global intent registration",
|
|
1434
1395
|
(ctx, emit) => {
|
|
@@ -1439,15 +1400,19 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1439
1400
|
return 0;
|
|
1440
1401
|
});
|
|
1441
1402
|
for (const map of sorted) {
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
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;
|
|
1445
1415
|
}
|
|
1446
|
-
CadenzaService.inquiryBroker.addIntent({
|
|
1447
|
-
name: map.intentName
|
|
1448
|
-
});
|
|
1449
|
-
this.registerRemoteIntentDeputy(map);
|
|
1450
|
-
this.ensureDependeeClientsForService(map.serviceName, emit);
|
|
1451
1416
|
}
|
|
1452
1417
|
return true;
|
|
1453
1418
|
},
|
|
@@ -1599,7 +1564,7 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1599
1564
|
{
|
|
1600
1565
|
uuid: report.transportId,
|
|
1601
1566
|
serviceInstanceId: report.serviceInstanceId,
|
|
1602
|
-
role: this.getRoutingTransportRole(),
|
|
1567
|
+
role: report.transportRole ?? this.getRoutingTransportRole(),
|
|
1603
1568
|
origin: report.transportOrigin,
|
|
1604
1569
|
protocols: report.transportProtocols && report.transportProtocols.length > 0 ? report.transportProtocols : ["rest", "socket"],
|
|
1605
1570
|
securityProfile: null,
|
|
@@ -1641,21 +1606,6 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1641
1606
|
const serviceInstances = this.normalizeServiceInstancesFromSync(
|
|
1642
1607
|
inquiryResult
|
|
1643
1608
|
);
|
|
1644
|
-
if (shouldTraceIotDbRegistryPath(this.serviceName, "IotDbService")) {
|
|
1645
|
-
const tracedInstances = serviceInstances.filter((instance) => instance.serviceName === "IotDbService").map((instance) => ({
|
|
1646
|
-
uuid: instance.uuid,
|
|
1647
|
-
isActive: instance.isActive,
|
|
1648
|
-
isNonResponsive: instance.isNonResponsive,
|
|
1649
|
-
isBlocked: instance.isBlocked,
|
|
1650
|
-
transports: summarizeTransportDescriptors(instance.transports)
|
|
1651
|
-
}));
|
|
1652
|
-
console.log("[CADENZA_REGISTRY_DEBUG] full_sync_instances", {
|
|
1653
|
-
localServiceName: this.serviceName,
|
|
1654
|
-
localServiceInstanceId: this.serviceInstanceId,
|
|
1655
|
-
totalServiceInstances: serviceInstances.length,
|
|
1656
|
-
tracedInstances
|
|
1657
|
-
});
|
|
1658
|
-
}
|
|
1659
1609
|
return {
|
|
1660
1610
|
...ctx,
|
|
1661
1611
|
signalToTaskMaps,
|
|
@@ -1752,44 +1702,6 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1752
1702
|
let retries = __retries ?? 0;
|
|
1753
1703
|
let triedInstances = __triedInstances ?? [];
|
|
1754
1704
|
const preferredRole = this.getRoutingTransportRole();
|
|
1755
|
-
const allInstances = this.instances.get(__serviceName) ?? [];
|
|
1756
|
-
const candidateDiagnostics = shouldTraceIotDbRegistryPath(
|
|
1757
|
-
this.serviceName,
|
|
1758
|
-
__serviceName ?? void 0
|
|
1759
|
-
) ? allInstances.map((instance) => ({
|
|
1760
|
-
uuid: instance.uuid,
|
|
1761
|
-
isActive: instance.isActive,
|
|
1762
|
-
isNonResponsive: instance.isNonResponsive,
|
|
1763
|
-
isBlocked: instance.isBlocked,
|
|
1764
|
-
isFrontend: instance.isFrontend,
|
|
1765
|
-
transports: summarizeTransportDescriptors(instance.transports),
|
|
1766
|
-
selectedTransport: instance.isFrontend ? null : this.selectTransportForInstance(
|
|
1767
|
-
instance,
|
|
1768
|
-
context,
|
|
1769
|
-
preferredRole
|
|
1770
|
-
) ? {
|
|
1771
|
-
uuid: this.selectTransportForInstance(
|
|
1772
|
-
instance,
|
|
1773
|
-
context,
|
|
1774
|
-
preferredRole
|
|
1775
|
-
).uuid,
|
|
1776
|
-
role: this.selectTransportForInstance(
|
|
1777
|
-
instance,
|
|
1778
|
-
context,
|
|
1779
|
-
preferredRole
|
|
1780
|
-
).role,
|
|
1781
|
-
origin: this.selectTransportForInstance(
|
|
1782
|
-
instance,
|
|
1783
|
-
context,
|
|
1784
|
-
preferredRole
|
|
1785
|
-
).origin,
|
|
1786
|
-
protocols: this.selectTransportForInstance(
|
|
1787
|
-
instance,
|
|
1788
|
-
context,
|
|
1789
|
-
preferredRole
|
|
1790
|
-
).protocols
|
|
1791
|
-
} : null
|
|
1792
|
-
})) : void 0;
|
|
1793
1705
|
const instances = this.instances.get(__serviceName)?.filter((instance) => {
|
|
1794
1706
|
if (targetServiceInstanceId && instance.uuid !== targetServiceInstanceId) {
|
|
1795
1707
|
return false;
|
|
@@ -1822,20 +1734,6 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1822
1734
|
}
|
|
1823
1735
|
return (a.numberOfRunningGraphs ?? 0) - (b.numberOfRunningGraphs ?? 0);
|
|
1824
1736
|
});
|
|
1825
|
-
if (candidateDiagnostics) {
|
|
1826
|
-
console.log("[CADENZA_REGISTRY_DEBUG] get_balanced_instance", {
|
|
1827
|
-
localServiceName: this.serviceName,
|
|
1828
|
-
localServiceInstanceId: this.serviceInstanceId,
|
|
1829
|
-
targetServiceName: __serviceName,
|
|
1830
|
-
preferredRole,
|
|
1831
|
-
useSocket: this.useSocket,
|
|
1832
|
-
targetServiceInstanceId,
|
|
1833
|
-
retries,
|
|
1834
|
-
triedInstances,
|
|
1835
|
-
candidateDiagnostics,
|
|
1836
|
-
filteredInstanceIds: instances?.map((instance) => instance.uuid) ?? []
|
|
1837
|
-
});
|
|
1838
|
-
}
|
|
1839
1737
|
if (!instances || instances.length === 0 || retries > this.retryCount) {
|
|
1840
1738
|
context.errored = true;
|
|
1841
1739
|
context.__error = this.isFrontend && preferredRole === "public" ? `No public transport available for ${__serviceName}.` : `No routeable ${preferredRole} transport available for ${__serviceName}. Retries: ${retries}.`;
|
|
@@ -2093,6 +1991,7 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
2093
1991
|
serviceName: report.serviceName,
|
|
2094
1992
|
serviceInstanceId: report.serviceInstanceId,
|
|
2095
1993
|
transportId: report.transportId,
|
|
1994
|
+
transportRole: report.transportRole,
|
|
2096
1995
|
transportOrigin: report.transportOrigin,
|
|
2097
1996
|
transportProtocols: report.transportProtocols,
|
|
2098
1997
|
isFrontend: report.isFrontend,
|
|
@@ -2709,6 +2608,64 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
2709
2608
|
(instance) => !!instance && !!instance.isActive && !instance.isNonResponsive && !instance.isBlocked
|
|
2710
2609
|
);
|
|
2711
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
|
+
}
|
|
2712
2669
|
registerRemoteIntentDeputy(map) {
|
|
2713
2670
|
if (!this.serviceName || map.serviceName === this.serviceName) {
|
|
2714
2671
|
return;
|
|
@@ -2951,38 +2908,18 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
2951
2908
|
}
|
|
2952
2909
|
return communicationTypes;
|
|
2953
2910
|
}
|
|
2954
|
-
ensureDependeeClientForInstance(instance, emit) {
|
|
2911
|
+
ensureDependeeClientForInstance(instance, emit, ctx) {
|
|
2955
2912
|
if (!instance || instance.uuid === this.serviceInstanceId || instance.isFrontend || !instance.isActive || instance.isNonResponsive || instance.isBlocked) {
|
|
2956
2913
|
return false;
|
|
2957
2914
|
}
|
|
2958
2915
|
if (!this.deputies.has(instance.serviceName) && !this.remoteIntents.has(instance.serviceName) && !this.remoteSignals.has(instance.serviceName)) {
|
|
2959
2916
|
return false;
|
|
2960
2917
|
}
|
|
2961
|
-
const transport = this.
|
|
2918
|
+
const transport = this.selectTransportForInstance(
|
|
2962
2919
|
instance,
|
|
2963
|
-
|
|
2964
|
-
|
|
2965
|
-
|
|
2966
|
-
console.log("[CADENZA_REGISTRY_DEBUG] ensure_dependee_client_for_instance", {
|
|
2967
|
-
localServiceName: this.serviceName,
|
|
2968
|
-
localServiceInstanceId: this.serviceInstanceId,
|
|
2969
|
-
targetServiceName: instance.serviceName,
|
|
2970
|
-
targetServiceInstanceId: instance.uuid,
|
|
2971
|
-
useSocket: this.useSocket,
|
|
2972
|
-
routeableRole: this.getRoutingTransportRole(),
|
|
2973
|
-
hasDeputies: this.deputies.has(instance.serviceName),
|
|
2974
|
-
hasRemoteIntents: this.remoteIntents.has(instance.serviceName),
|
|
2975
|
-
hasRemoteSignals: this.remoteSignals.has(instance.serviceName),
|
|
2976
|
-
clientCreatedTransportIds: instance.clientCreatedTransportIds ?? [],
|
|
2977
|
-
transports: summarizeTransportDescriptors(instance.transports),
|
|
2978
|
-
selectedTransport: transport ? {
|
|
2979
|
-
uuid: transport.uuid,
|
|
2980
|
-
role: transport.role,
|
|
2981
|
-
origin: transport.origin,
|
|
2982
|
-
protocols: transport.protocols
|
|
2983
|
-
} : null
|
|
2984
|
-
});
|
|
2985
|
-
}
|
|
2920
|
+
ctx ?? {},
|
|
2921
|
+
this.getRoutingTransportRole()
|
|
2922
|
+
);
|
|
2986
2923
|
if (!transport || this.hasTransportClientCreated(instance, transport.uuid)) {
|
|
2987
2924
|
return false;
|
|
2988
2925
|
}
|
|
@@ -2999,9 +2936,9 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
2999
2936
|
this.markTransportClientCreated(instance, transport.uuid);
|
|
3000
2937
|
return true;
|
|
3001
2938
|
}
|
|
3002
|
-
ensureDependeeClientsForService(serviceName, emit) {
|
|
2939
|
+
ensureDependeeClientsForService(serviceName, emit, ctx) {
|
|
3003
2940
|
for (const instance of this.instances.get(serviceName) ?? []) {
|
|
3004
|
-
this.ensureDependeeClientForInstance(instance, emit);
|
|
2941
|
+
this.ensureDependeeClientForInstance(instance, emit, ctx);
|
|
3005
2942
|
}
|
|
3006
2943
|
}
|
|
3007
2944
|
hasTransportClientCreated(instance, transportId) {
|
|
@@ -3060,6 +2997,10 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
3060
2997
|
if (!instances?.length) {
|
|
3061
2998
|
return;
|
|
3062
2999
|
}
|
|
3000
|
+
const resolvedInstance = instances.find(
|
|
3001
|
+
(instance) => instance.uuid === resolvedInstanceId
|
|
3002
|
+
);
|
|
3003
|
+
const frontendRoutingRole = this.isFrontend ? this.getRoutingTransportRole() : null;
|
|
3063
3004
|
const placeholders = instances.filter(
|
|
3064
3005
|
(instance) => instance.uuid !== resolvedInstanceId && instance.isBootstrapPlaceholder
|
|
3065
3006
|
);
|
|
@@ -3071,7 +3012,33 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
3071
3012
|
const requiredForReadiness = this.readinessDependeeByInstance.has(
|
|
3072
3013
|
placeholder.uuid
|
|
3073
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
|
+
}
|
|
3074
3038
|
for (const transport of placeholder.transports) {
|
|
3039
|
+
if (preservedTransportIds.has(transport.uuid)) {
|
|
3040
|
+
continue;
|
|
3041
|
+
}
|
|
3075
3042
|
const transportKey = buildTransportClientKey(transport);
|
|
3076
3043
|
emit(`meta.socket_shutdown_requested:${transportKey}`, {});
|
|
3077
3044
|
emit(`meta.fetch.destroy_requested:${transportKey}`, {});
|
|
@@ -3192,6 +3159,7 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
3192
3159
|
return null;
|
|
3193
3160
|
}
|
|
3194
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;
|
|
3195
3163
|
const transportOrigin = ctx.transportOrigin ?? ctx.serviceOrigin ?? ctx.serviceTransport?.origin ?? void 0;
|
|
3196
3164
|
const transportProtocols = Array.isArray(
|
|
3197
3165
|
ctx.transportProtocols ?? ctx.serviceTransport?.protocols
|
|
@@ -3217,6 +3185,7 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
3217
3185
|
serviceName,
|
|
3218
3186
|
serviceInstanceId,
|
|
3219
3187
|
transportId: typeof transportId === "string" && transportId.trim().length > 0 ? transportId : void 0,
|
|
3188
|
+
transportRole: transportRole === "internal" || transportRole === "public" ? transportRole : void 0,
|
|
3220
3189
|
transportOrigin: typeof transportOrigin === "string" && transportOrigin.trim().length > 0 ? transportOrigin : void 0,
|
|
3221
3190
|
transportProtocols: transportProtocols && transportProtocols.length > 0 ? Array.from(new Set(transportProtocols)) : void 0,
|
|
3222
3191
|
isFrontend: typeof ctx.isFrontend === "boolean" ? ctx.isFrontend : typeof ctx.serviceInstance?.isFrontend === "boolean" ? ctx.serviceInstance.isFrontend : void 0,
|
|
@@ -3239,13 +3208,16 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
3239
3208
|
const protocols = report.transportProtocols && report.transportProtocols.length > 0 ? report.transportProtocols : ["rest", "socket"];
|
|
3240
3209
|
const existingTransport = this.getTransportById(instance, report.transportId);
|
|
3241
3210
|
if (existingTransport) {
|
|
3211
|
+
if (report.transportRole) {
|
|
3212
|
+
existingTransport.role = report.transportRole;
|
|
3213
|
+
}
|
|
3242
3214
|
existingTransport.origin = report.transportOrigin;
|
|
3243
3215
|
existingTransport.protocols = protocols;
|
|
3244
3216
|
} else {
|
|
3245
3217
|
instance.transports.push({
|
|
3246
3218
|
uuid: report.transportId,
|
|
3247
3219
|
serviceInstanceId: report.serviceInstanceId,
|
|
3248
|
-
role: this.getRoutingTransportRole(),
|
|
3220
|
+
role: report.transportRole ?? this.getRoutingTransportRole(),
|
|
3249
3221
|
origin: report.transportOrigin,
|
|
3250
3222
|
protocols,
|
|
3251
3223
|
securityProfile: null,
|
|
@@ -3291,24 +3263,18 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
3291
3263
|
localInstance.isBlocked
|
|
3292
3264
|
);
|
|
3293
3265
|
const reportedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
3266
|
+
const transport = this.getRouteableTransport(
|
|
3267
|
+
localInstance,
|
|
3268
|
+
this.useSocket ? "socket" : "rest",
|
|
3269
|
+
"internal"
|
|
3270
|
+
);
|
|
3294
3271
|
const report = {
|
|
3295
3272
|
serviceName: this.serviceName,
|
|
3296
3273
|
serviceInstanceId: this.serviceInstanceId,
|
|
3297
|
-
transportId:
|
|
3298
|
-
|
|
3299
|
-
|
|
3300
|
-
|
|
3301
|
-
)?.uuid ?? void 0,
|
|
3302
|
-
transportOrigin: this.getRouteableTransport(
|
|
3303
|
-
localInstance,
|
|
3304
|
-
this.useSocket ? "socket" : "rest",
|
|
3305
|
-
"internal"
|
|
3306
|
-
)?.origin ?? void 0,
|
|
3307
|
-
transportProtocols: this.getRouteableTransport(
|
|
3308
|
-
localInstance,
|
|
3309
|
-
this.useSocket ? "socket" : "rest",
|
|
3310
|
-
"internal"
|
|
3311
|
-
)?.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,
|
|
3312
3278
|
isFrontend: localInstance.isFrontend,
|
|
3313
3279
|
reportedAt,
|
|
3314
3280
|
state: snapshot.state,
|
|
@@ -3672,6 +3638,7 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
3672
3638
|
this.deputies.clear();
|
|
3673
3639
|
this.remoteSignals.clear();
|
|
3674
3640
|
this.remoteIntents.clear();
|
|
3641
|
+
this.gatheredSyncTransmissionServices.clear();
|
|
3675
3642
|
this.remoteIntentDeputiesByKey.clear();
|
|
3676
3643
|
this.remoteIntentDeputiesByTask.clear();
|
|
3677
3644
|
this.dependeesByService.clear();
|
|
@@ -5423,10 +5390,14 @@ var SocketController = class _SocketController {
|
|
|
5423
5390
|
const communicationTypes = this.normalizeCommunicationTypes(
|
|
5424
5391
|
input.communicationTypes
|
|
5425
5392
|
);
|
|
5393
|
+
const transportProtocols = Array.isArray(input.transportProtocols) ? input.transportProtocols.map((entry) => String(entry)) : [];
|
|
5426
5394
|
const serviceName = String(input.serviceName ?? "");
|
|
5427
5395
|
const serviceTransportId = String(input.serviceTransportId ?? "");
|
|
5428
5396
|
const serviceOrigin = String(input.serviceOrigin ?? "");
|
|
5429
5397
|
const parsedOrigin = parseTransportOrigin(serviceOrigin);
|
|
5398
|
+
if (!transportProtocols.includes("socket")) {
|
|
5399
|
+
return false;
|
|
5400
|
+
}
|
|
5430
5401
|
if (!serviceTransportId || !serviceOrigin || !parsedOrigin) {
|
|
5431
5402
|
CadenzaService.log(
|
|
5432
5403
|
"Socket client setup skipped due to missing transport origin",
|
|
@@ -5452,7 +5423,7 @@ var SocketController = class _SocketController {
|
|
|
5452
5423
|
serviceName,
|
|
5453
5424
|
serviceTransportId,
|
|
5454
5425
|
serviceOrigin,
|
|
5455
|
-
transportProtocols
|
|
5426
|
+
transportProtocols,
|
|
5456
5427
|
url
|
|
5457
5428
|
});
|
|
5458
5429
|
};
|
|
@@ -5473,7 +5444,7 @@ var SocketController = class _SocketController {
|
|
|
5473
5444
|
serviceName,
|
|
5474
5445
|
serviceTransportId,
|
|
5475
5446
|
serviceOrigin,
|
|
5476
|
-
transportProtocols
|
|
5447
|
+
transportProtocols,
|
|
5477
5448
|
url,
|
|
5478
5449
|
destroyed: false,
|
|
5479
5450
|
updatedAt: Date.now()
|
|
@@ -6052,7 +6023,7 @@ var SocketController = class _SocketController {
|
|
|
6052
6023
|
communicationTypes,
|
|
6053
6024
|
serviceTransportId,
|
|
6054
6025
|
serviceOrigin,
|
|
6055
|
-
transportProtocols
|
|
6026
|
+
transportProtocols,
|
|
6056
6027
|
handshakeData: {
|
|
6057
6028
|
instanceId: CadenzaService.serviceRegistry.serviceInstanceId,
|
|
6058
6029
|
serviceName: CadenzaService.serviceRegistry.serviceName
|
|
@@ -6412,6 +6383,209 @@ var SignalController = class _SignalController {
|
|
|
6412
6383
|
}
|
|
6413
6384
|
};
|
|
6414
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
|
+
|
|
6415
6589
|
// src/graph/controllers/registerActorSessionPersistence.ts
|
|
6416
6590
|
var import_core3 = require("@cadenza.io/core");
|
|
6417
6591
|
function registerActorSessionPersistenceTasks() {
|
|
@@ -9123,7 +9297,6 @@ function buildSyncExecutionEnvelope(ctx, queryData) {
|
|
|
9123
9297
|
}
|
|
9124
9298
|
function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, options = {}) {
|
|
9125
9299
|
const localInsertTask = CadenzaService.getLocalCadenzaDBInsertTask(tableName);
|
|
9126
|
-
const debugTable = shouldDebugSyncTable(tableName);
|
|
9127
9300
|
if (!localInsertTask && !isCadenzaDBReady) {
|
|
9128
9301
|
return void 0;
|
|
9129
9302
|
}
|
|
@@ -9136,16 +9309,6 @@ function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, opti
|
|
|
9136
9309
|
register: false,
|
|
9137
9310
|
isHidden: true
|
|
9138
9311
|
});
|
|
9139
|
-
if (debugTable) {
|
|
9140
|
-
logSyncDebug("insert_task_resolved", {
|
|
9141
|
-
tableName,
|
|
9142
|
-
localInsertTaskName: localInsertTask?.name ?? null,
|
|
9143
|
-
remoteInsertTaskName: isCadenzaDBReady ? targetTask.name : null,
|
|
9144
|
-
targetTaskName: targetTask.name,
|
|
9145
|
-
queryData,
|
|
9146
|
-
options
|
|
9147
|
-
});
|
|
9148
|
-
}
|
|
9149
9312
|
const prepareExecutionTask = CadenzaService.createMetaTask(
|
|
9150
9313
|
`Prepare graph sync insert for ${tableName}`,
|
|
9151
9314
|
(ctx) => {
|
|
@@ -9156,12 +9319,12 @@ function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, opti
|
|
|
9156
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) {
|
|
9157
9320
|
console.warn(
|
|
9158
9321
|
"[CADENZA_SYNC_EMPTY_INSERT]",
|
|
9159
|
-
|
|
9322
|
+
{
|
|
9160
9323
|
tableName,
|
|
9161
9324
|
queryData: originalQueryData,
|
|
9162
9325
|
ctx,
|
|
9163
9326
|
joinedContexts: Array.isArray(ctx.joinedContexts) ? ctx.joinedContexts : []
|
|
9164
|
-
}
|
|
9327
|
+
}
|
|
9165
9328
|
);
|
|
9166
9329
|
}
|
|
9167
9330
|
return buildSyncExecutionEnvelope(
|
|
@@ -9175,37 +9338,6 @@ function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, opti
|
|
|
9175
9338
|
isHidden: true
|
|
9176
9339
|
}
|
|
9177
9340
|
);
|
|
9178
|
-
if (debugTable) {
|
|
9179
|
-
prepareExecutionTask.then(
|
|
9180
|
-
CadenzaService.createMetaTask(
|
|
9181
|
-
`Log prepared graph sync insert execution for ${tableName}`,
|
|
9182
|
-
(ctx) => {
|
|
9183
|
-
if (tableName === "task") {
|
|
9184
|
-
if (!shouldDebugTaskSyncPayload(ctx)) {
|
|
9185
|
-
return ctx;
|
|
9186
|
-
}
|
|
9187
|
-
logSyncDebug("insert_prepare", {
|
|
9188
|
-
tableName,
|
|
9189
|
-
targetTaskName: targetTask.name,
|
|
9190
|
-
payload: buildTaskSyncDebugPayload(ctx)
|
|
9191
|
-
});
|
|
9192
|
-
return ctx;
|
|
9193
|
-
}
|
|
9194
|
-
logSyncDebug("insert_prepare", {
|
|
9195
|
-
tableName,
|
|
9196
|
-
targetTaskName: targetTask.name,
|
|
9197
|
-
ctx
|
|
9198
|
-
});
|
|
9199
|
-
return ctx;
|
|
9200
|
-
},
|
|
9201
|
-
`Logs prepared ${tableName} sync insert payloads.`,
|
|
9202
|
-
{
|
|
9203
|
-
register: false,
|
|
9204
|
-
isHidden: true
|
|
9205
|
-
}
|
|
9206
|
-
)
|
|
9207
|
-
);
|
|
9208
|
-
}
|
|
9209
9341
|
const finalizeExecutionTask = CadenzaService.createMetaTask(
|
|
9210
9342
|
`Finalize graph sync insert for ${tableName}`,
|
|
9211
9343
|
(ctx) => {
|
|
@@ -9216,25 +9348,6 @@ function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, opti
|
|
|
9216
9348
|
...ctx,
|
|
9217
9349
|
queryData: ctx.queryData && typeof ctx.queryData === "object" ? ctx.queryData : originalQueryData
|
|
9218
9350
|
};
|
|
9219
|
-
if (debugTable) {
|
|
9220
|
-
if (tableName === "task") {
|
|
9221
|
-
if (shouldDebugTaskSyncPayload(normalizedContext)) {
|
|
9222
|
-
logSyncDebug("insert_finalize", {
|
|
9223
|
-
tableName,
|
|
9224
|
-
targetTaskName: targetTask.name,
|
|
9225
|
-
success: didSyncInsertSucceed(normalizedContext),
|
|
9226
|
-
payload: buildTaskSyncDebugPayload(normalizedContext)
|
|
9227
|
-
});
|
|
9228
|
-
}
|
|
9229
|
-
} else {
|
|
9230
|
-
logSyncDebug("insert_finalize", {
|
|
9231
|
-
tableName,
|
|
9232
|
-
targetTaskName: targetTask.name,
|
|
9233
|
-
success: didSyncInsertSucceed(normalizedContext),
|
|
9234
|
-
ctx: normalizedContext
|
|
9235
|
-
});
|
|
9236
|
-
}
|
|
9237
|
-
}
|
|
9238
9351
|
return normalizedContext;
|
|
9239
9352
|
},
|
|
9240
9353
|
`Finalizes ${tableName} graph-sync insert execution after the authority task finishes.`,
|
|
@@ -9269,139 +9382,6 @@ var AUTHORITY_QUERY_RESULT_KEYS = {
|
|
|
9269
9382
|
intent_registry: "intentRegistrys"
|
|
9270
9383
|
};
|
|
9271
9384
|
var EARLY_SYNC_REQUEST_DELAYS_MS = [2e3, 1e4, 3e4];
|
|
9272
|
-
var SYNC_DEBUG_PREFIX = "[CADENZA_SYNC_DEBUG]";
|
|
9273
|
-
var SYNC_DEBUG_ENABLED = typeof process !== "undefined" && typeof process.env === "object" && process.env.CADENZA_SYNC_DEBUG === "true";
|
|
9274
|
-
var SYNC_DEBUG_TABLES = /* @__PURE__ */ new Set(["intent_to_task_map", "task"]);
|
|
9275
|
-
var SYNC_DEBUG_TASK_NAMES = /* @__PURE__ */ new Set([
|
|
9276
|
-
"Query service_instance",
|
|
9277
|
-
"Query service_instance_transport",
|
|
9278
|
-
"Query intent_to_task_map",
|
|
9279
|
-
"Query signal_to_task_map",
|
|
9280
|
-
"Prepare for signal sync",
|
|
9281
|
-
"Compile sync data and broadcast",
|
|
9282
|
-
"Forward service instance sync",
|
|
9283
|
-
"Forward service transport sync",
|
|
9284
|
-
"Forward intent to task map sync",
|
|
9285
|
-
"Forward signal to task map sync",
|
|
9286
|
-
"Normalize telemetry ingest payload",
|
|
9287
|
-
"Get telemetry session state",
|
|
9288
|
-
"Normalize anomaly detect input",
|
|
9289
|
-
"Read anomaly runtime session",
|
|
9290
|
-
"Normalize prediction compute input",
|
|
9291
|
-
"Normalize telemetry insert queryData"
|
|
9292
|
-
]);
|
|
9293
|
-
var SYNC_DEBUG_ROUTINE_NAMES = /* @__PURE__ */ new Set(["Sync services"]);
|
|
9294
|
-
var SYNC_DEBUG_INTENT_NAMES = /* @__PURE__ */ new Set([
|
|
9295
|
-
"meta-service-registry-full-sync",
|
|
9296
|
-
"runner-traffic-runtime-get",
|
|
9297
|
-
"iot-telemetry-ingest",
|
|
9298
|
-
"iot-telemetry-session-get",
|
|
9299
|
-
"iot-anomaly-detect",
|
|
9300
|
-
"iot-anomaly-runtime-get",
|
|
9301
|
-
"iot-prediction-compute",
|
|
9302
|
-
"iot-db-telemetry-insert",
|
|
9303
|
-
"query-pg-cadenza-db-postgres-actor-service_instance",
|
|
9304
|
-
"query-pg-cadenza-db-postgres-actor-service_instance_transport",
|
|
9305
|
-
"query-pg-cadenza-db-postgres-actor-intent_to_task_map",
|
|
9306
|
-
"query-pg-cadenza-db-postgres-actor-signal_to_task_map"
|
|
9307
|
-
]);
|
|
9308
|
-
function shouldDebugSyncTable(tableName) {
|
|
9309
|
-
return SYNC_DEBUG_ENABLED && SYNC_DEBUG_TABLES.has(tableName);
|
|
9310
|
-
}
|
|
9311
|
-
function shouldDebugSyncTaskName(taskName) {
|
|
9312
|
-
return SYNC_DEBUG_ENABLED && typeof taskName === "string" && SYNC_DEBUG_TASK_NAMES.has(taskName);
|
|
9313
|
-
}
|
|
9314
|
-
function shouldDebugSyncRoutineName(routineName) {
|
|
9315
|
-
return SYNC_DEBUG_ENABLED && typeof routineName === "string" && SYNC_DEBUG_ROUTINE_NAMES.has(routineName);
|
|
9316
|
-
}
|
|
9317
|
-
function shouldDebugSyncIntentName(intentName) {
|
|
9318
|
-
return SYNC_DEBUG_ENABLED && typeof intentName === "string" && SYNC_DEBUG_INTENT_NAMES.has(intentName);
|
|
9319
|
-
}
|
|
9320
|
-
function summarizeSyncDebugValue(value, depth = 0) {
|
|
9321
|
-
if (value === null || value === void 0) {
|
|
9322
|
-
return value;
|
|
9323
|
-
}
|
|
9324
|
-
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
|
|
9325
|
-
return value;
|
|
9326
|
-
}
|
|
9327
|
-
if (value instanceof Set) {
|
|
9328
|
-
return {
|
|
9329
|
-
__type: "Set",
|
|
9330
|
-
size: value.size,
|
|
9331
|
-
values: Array.from(value).slice(0, 8).map((item) => summarizeSyncDebugValue(item, depth + 1))
|
|
9332
|
-
};
|
|
9333
|
-
}
|
|
9334
|
-
if (value instanceof Map) {
|
|
9335
|
-
return {
|
|
9336
|
-
__type: "Map",
|
|
9337
|
-
size: value.size
|
|
9338
|
-
};
|
|
9339
|
-
}
|
|
9340
|
-
if (Array.isArray(value)) {
|
|
9341
|
-
return {
|
|
9342
|
-
__type: "Array",
|
|
9343
|
-
length: value.length,
|
|
9344
|
-
items: value.slice(0, 5).map((item) => summarizeSyncDebugValue(item, depth + 1))
|
|
9345
|
-
};
|
|
9346
|
-
}
|
|
9347
|
-
if (typeof value === "object") {
|
|
9348
|
-
if (depth >= 2) {
|
|
9349
|
-
return "[object]";
|
|
9350
|
-
}
|
|
9351
|
-
const output = {};
|
|
9352
|
-
const entries = Object.entries(value).filter(
|
|
9353
|
-
([key]) => ![
|
|
9354
|
-
"functionString",
|
|
9355
|
-
"tagIdGetter",
|
|
9356
|
-
"__functionString",
|
|
9357
|
-
"__getTagCallback",
|
|
9358
|
-
"joinedContexts",
|
|
9359
|
-
"task",
|
|
9360
|
-
"taskInstance",
|
|
9361
|
-
"tasks"
|
|
9362
|
-
].includes(key)
|
|
9363
|
-
).slice(0, 12);
|
|
9364
|
-
for (const [key, nestedValue] of entries) {
|
|
9365
|
-
output[key] = summarizeSyncDebugValue(nestedValue, depth + 1);
|
|
9366
|
-
}
|
|
9367
|
-
return output;
|
|
9368
|
-
}
|
|
9369
|
-
return String(value);
|
|
9370
|
-
}
|
|
9371
|
-
function logSyncDebug(event, payload) {
|
|
9372
|
-
console.log(`${SYNC_DEBUG_PREFIX} ${event}`, summarizeSyncDebugValue(payload));
|
|
9373
|
-
}
|
|
9374
|
-
function buildTaskSyncDebugPayload(ctx) {
|
|
9375
|
-
const data = ctx.data && typeof ctx.data === "object" ? ctx.data : {};
|
|
9376
|
-
const queryData = ctx.queryData && typeof ctx.queryData === "object" ? ctx.queryData : {};
|
|
9377
|
-
const queryDataData = queryData.data && typeof queryData.data === "object" ? queryData.data : {};
|
|
9378
|
-
const taskPayload = Object.keys(queryDataData).length > 0 ? queryDataData : data;
|
|
9379
|
-
const functionString = typeof taskPayload.functionString === "string" ? taskPayload.functionString : typeof taskPayload.function_string === "string" ? taskPayload.function_string : void 0;
|
|
9380
|
-
const tagIdGetter = typeof taskPayload.tagIdGetter === "string" ? taskPayload.tagIdGetter : typeof taskPayload.tag_id_getter === "string" ? taskPayload.tag_id_getter : void 0;
|
|
9381
|
-
const signals = taskPayload.signals && typeof taskPayload.signals === "object" ? taskPayload.signals : {};
|
|
9382
|
-
const intents = taskPayload.intents && typeof taskPayload.intents === "object" ? taskPayload.intents : {};
|
|
9383
|
-
return {
|
|
9384
|
-
taskName: taskPayload.name ?? taskPayload.taskName ?? taskPayload.task_name ?? ctx.__taskName ?? null,
|
|
9385
|
-
serviceName: taskPayload.service_name ?? taskPayload.serviceName ?? ctx.__syncServiceName ?? null,
|
|
9386
|
-
functionStringLength: functionString?.length ?? null,
|
|
9387
|
-
tagIdGetterLength: tagIdGetter?.length ?? null,
|
|
9388
|
-
isMeta: taskPayload.isMeta ?? taskPayload.is_meta ?? null,
|
|
9389
|
-
isSubMeta: taskPayload.isSubMeta ?? taskPayload.is_sub_meta ?? null,
|
|
9390
|
-
isHidden: taskPayload.isHidden ?? taskPayload.is_hidden ?? null,
|
|
9391
|
-
signalsEmitsCount: Array.isArray(signals.emits) ? signals.emits.length : null,
|
|
9392
|
-
signalsObservedCount: Array.isArray(signals.observed) ? signals.observed.length : null,
|
|
9393
|
-
intentHandlesCount: Array.isArray(intents.handles) ? intents.handles.length : null,
|
|
9394
|
-
intentInquiresCount: Array.isArray(intents.inquires) ? intents.inquires.length : null,
|
|
9395
|
-
rowCount: ctx.rowCount ?? null,
|
|
9396
|
-
errored: ctx.errored ?? false,
|
|
9397
|
-
success: ctx.__success ?? null,
|
|
9398
|
-
error: ctx.__error ?? null
|
|
9399
|
-
};
|
|
9400
|
-
}
|
|
9401
|
-
function shouldDebugTaskSyncPayload(ctx) {
|
|
9402
|
-
const payload = buildTaskSyncDebugPayload(ctx);
|
|
9403
|
-
return shouldDebugSyncTaskName(payload.taskName);
|
|
9404
|
-
}
|
|
9405
9385
|
function resolveSyncQueryRows(ctx, tableName) {
|
|
9406
9386
|
const resultKey = AUTHORITY_QUERY_RESULT_KEYS[tableName];
|
|
9407
9387
|
const rows = ctx?.[resultKey];
|
|
@@ -9848,16 +9828,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
9848
9828
|
if (!nextTask?.registered) {
|
|
9849
9829
|
continue;
|
|
9850
9830
|
}
|
|
9851
|
-
if (shouldDebugSyncRoutineName(routine.name) || shouldDebugSyncTaskName(nextTask.name)) {
|
|
9852
|
-
logSyncDebug("task_to_routine_split", {
|
|
9853
|
-
routineName: routine.name,
|
|
9854
|
-
routineVersion: routine.version,
|
|
9855
|
-
taskName: nextTask.name,
|
|
9856
|
-
taskVersion: nextTask.version,
|
|
9857
|
-
serviceName: serviceName2,
|
|
9858
|
-
registered: nextTask.registered
|
|
9859
|
-
});
|
|
9860
|
-
}
|
|
9861
9831
|
yield {
|
|
9862
9832
|
__syncing: ctx.__syncing,
|
|
9863
9833
|
data: {
|
|
@@ -10003,20 +9973,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
10003
9973
|
if (task.registered) continue;
|
|
10004
9974
|
const { __functionString, __getTagCallback } = task.export();
|
|
10005
9975
|
this.tasksSynced = false;
|
|
10006
|
-
if (shouldDebugSyncTaskName(task.name)) {
|
|
10007
|
-
logSyncDebug("task_registration_split", {
|
|
10008
|
-
taskName: task.name,
|
|
10009
|
-
taskVersion: task.version,
|
|
10010
|
-
serviceName: serviceName2,
|
|
10011
|
-
register: task.register,
|
|
10012
|
-
registered: task.registered,
|
|
10013
|
-
hidden: task.hidden,
|
|
10014
|
-
exportFunctionLength: __functionString?.length ?? null,
|
|
10015
|
-
exportTagGetterLength: __getTagCallback?.length ?? null,
|
|
10016
|
-
observedSignals: Array.from(task.observedSignals),
|
|
10017
|
-
handledIntents: Array.from(task.handlesIntents)
|
|
10018
|
-
});
|
|
10019
|
-
}
|
|
10020
9976
|
yield {
|
|
10021
9977
|
__syncing: ctx.__syncing,
|
|
10022
9978
|
data: {
|
|
@@ -10071,13 +10027,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
10071
10027
|
const registerTaskTask = CadenzaService.createMetaTask(
|
|
10072
10028
|
"Record registration",
|
|
10073
10029
|
(ctx, emit) => {
|
|
10074
|
-
if (shouldDebugSyncTaskName(ctx.__taskName)) {
|
|
10075
|
-
logSyncDebug("task_registration_result", {
|
|
10076
|
-
taskName: ctx.__taskName,
|
|
10077
|
-
success: didSyncInsertSucceed(ctx),
|
|
10078
|
-
ctx
|
|
10079
|
-
});
|
|
10080
|
-
}
|
|
10081
10030
|
if (!didSyncInsertSucceed(ctx)) {
|
|
10082
10031
|
return;
|
|
10083
10032
|
}
|
|
@@ -10103,16 +10052,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
10103
10052
|
"Prepare created task for immediate sync",
|
|
10104
10053
|
(ctx) => {
|
|
10105
10054
|
const task = ctx.taskInstance ?? (ctx.data?.name ? CadenzaService.get(String(ctx.data.name)) : void 0);
|
|
10106
|
-
if (shouldDebugSyncTaskName(task?.name ?? ctx?.data?.name)) {
|
|
10107
|
-
logSyncDebug("task_created_for_immediate_sync", {
|
|
10108
|
-
incomingTaskName: ctx?.data?.name ?? null,
|
|
10109
|
-
resolvedTaskName: task?.name ?? null,
|
|
10110
|
-
exists: Boolean(task),
|
|
10111
|
-
hidden: task?.hidden ?? null,
|
|
10112
|
-
register: task?.register ?? null,
|
|
10113
|
-
registered: task?.registered ?? null
|
|
10114
|
-
});
|
|
10115
|
-
}
|
|
10116
10055
|
if (!task || task.hidden || !task.register || task.registered) {
|
|
10117
10056
|
return false;
|
|
10118
10057
|
}
|
|
@@ -10299,17 +10238,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
10299
10238
|
if (!isGlobal) {
|
|
10300
10239
|
continue;
|
|
10301
10240
|
}
|
|
10302
|
-
if (shouldDebugSyncTaskName(task.name)) {
|
|
10303
|
-
logSyncDebug("signal_to_task_map_split", {
|
|
10304
|
-
taskName: task.name,
|
|
10305
|
-
signalName: _signal,
|
|
10306
|
-
rawSignal: signal,
|
|
10307
|
-
serviceName: serviceName2,
|
|
10308
|
-
observerRegistered: CadenzaService.signalBroker.signalObservers?.get(
|
|
10309
|
-
_signal
|
|
10310
|
-
)?.registered
|
|
10311
|
-
});
|
|
10312
|
-
}
|
|
10313
10241
|
yield {
|
|
10314
10242
|
__syncing: ctx.__syncing,
|
|
10315
10243
|
data: {
|
|
@@ -10420,21 +10348,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
10420
10348
|
}
|
|
10421
10349
|
task.__registeredIntents = task.__registeredIntents ?? /* @__PURE__ */ new Set();
|
|
10422
10350
|
task.__invalidMetaIntentWarnings = task.__invalidMetaIntentWarnings ?? /* @__PURE__ */ new Set();
|
|
10423
|
-
const shouldDebugTask = shouldDebugSyncTaskName(task.name);
|
|
10424
|
-
if (shouldDebugTask) {
|
|
10425
|
-
logSyncDebug("intent_map_task_state", {
|
|
10426
|
-
taskName: task.name,
|
|
10427
|
-
taskVersion: task.version,
|
|
10428
|
-
serviceName: serviceName2,
|
|
10429
|
-
registered: task.registered,
|
|
10430
|
-
register: task.register,
|
|
10431
|
-
hidden: task.hidden,
|
|
10432
|
-
handledIntents: Array.from(task.handlesIntents),
|
|
10433
|
-
registeredIntents: Array.from(task.__registeredIntents),
|
|
10434
|
-
tasksSynced: this.tasksSynced,
|
|
10435
|
-
intentsSynced: this.intentsSynced
|
|
10436
|
-
});
|
|
10437
|
-
}
|
|
10438
10351
|
let emittedCount = 0;
|
|
10439
10352
|
for (const intent of task.handlesIntents) {
|
|
10440
10353
|
if (task.__registeredIntents.has(intent)) continue;
|
|
@@ -10460,15 +10373,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
10460
10373
|
if (!intentDefinition) {
|
|
10461
10374
|
continue;
|
|
10462
10375
|
}
|
|
10463
|
-
if (shouldDebugSyncTaskName(task.name) || shouldDebugSyncIntentName(intent)) {
|
|
10464
|
-
logSyncDebug("intent_to_task_map_split", {
|
|
10465
|
-
taskName: task.name,
|
|
10466
|
-
taskVersion: task.version,
|
|
10467
|
-
intentName: intent,
|
|
10468
|
-
serviceName: serviceName2,
|
|
10469
|
-
intentDefinition
|
|
10470
|
-
});
|
|
10471
|
-
}
|
|
10472
10376
|
yield {
|
|
10473
10377
|
__syncing: ctx.__syncing,
|
|
10474
10378
|
data: {
|
|
@@ -10489,15 +10393,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
10489
10393
|
};
|
|
10490
10394
|
emittedCount += 1;
|
|
10491
10395
|
}
|
|
10492
|
-
if (shouldDebugTask && emittedCount === 0) {
|
|
10493
|
-
logSyncDebug("intent_map_task_noop", {
|
|
10494
|
-
taskName: task.name,
|
|
10495
|
-
taskVersion: task.version,
|
|
10496
|
-
serviceName: serviceName2,
|
|
10497
|
-
handledIntents: Array.from(task.handlesIntents),
|
|
10498
|
-
registeredIntents: Array.from(task.__registeredIntents)
|
|
10499
|
-
});
|
|
10500
|
-
}
|
|
10501
10396
|
return emittedCount > 0;
|
|
10502
10397
|
}.bind(this)
|
|
10503
10398
|
);
|
|
@@ -10507,13 +10402,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
10507
10402
|
if (!ctx.__intentDefinition || !ctx.__intentMapData) {
|
|
10508
10403
|
return false;
|
|
10509
10404
|
}
|
|
10510
|
-
if (shouldDebugSyncTaskName(ctx.__taskName) || shouldDebugSyncIntentName(ctx.__intent)) {
|
|
10511
|
-
logSyncDebug("intent_definition_prepare", {
|
|
10512
|
-
taskName: ctx.__taskName,
|
|
10513
|
-
intentName: ctx.__intent,
|
|
10514
|
-
intentDefinition: ctx.__intentDefinition
|
|
10515
|
-
});
|
|
10516
|
-
}
|
|
10517
10405
|
return {
|
|
10518
10406
|
...ctx,
|
|
10519
10407
|
data: ctx.__intentDefinition
|
|
@@ -10526,13 +10414,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
10526
10414
|
if (!ctx.__intentMapData) {
|
|
10527
10415
|
return false;
|
|
10528
10416
|
}
|
|
10529
|
-
if (shouldDebugSyncTaskName(ctx.__taskName) || shouldDebugSyncIntentName(ctx.__intent)) {
|
|
10530
|
-
logSyncDebug("intent_map_payload_restore", {
|
|
10531
|
-
taskName: ctx.__taskName,
|
|
10532
|
-
intentName: ctx.__intent,
|
|
10533
|
-
intentMapData: ctx.__intentMapData
|
|
10534
|
-
});
|
|
10535
|
-
}
|
|
10536
10417
|
return {
|
|
10537
10418
|
...ctx,
|
|
10538
10419
|
data: ctx.__intentMapData
|
|
@@ -11354,6 +11235,13 @@ var CadenzaService = class {
|
|
|
11354
11235
|
if (this.isBootstrapped) return;
|
|
11355
11236
|
this.isBootstrapped = true;
|
|
11356
11237
|
import_core5.default.bootstrap();
|
|
11238
|
+
import_core5.default.setRuntimeInquiryDelegate(
|
|
11239
|
+
(inquiry, context, options) => this.inquire(
|
|
11240
|
+
inquiry,
|
|
11241
|
+
context,
|
|
11242
|
+
options ?? {}
|
|
11243
|
+
)
|
|
11244
|
+
);
|
|
11357
11245
|
this.signalBroker = import_core5.default.signalBroker;
|
|
11358
11246
|
this.inquiryBroker = import_core5.default.inquiryBroker;
|
|
11359
11247
|
this.runner = import_core5.default.runner;
|
|
@@ -11362,7 +11250,7 @@ var CadenzaService = class {
|
|
|
11362
11250
|
this.serviceRegistry = ServiceRegistry.instance;
|
|
11363
11251
|
RestController.instance;
|
|
11364
11252
|
SocketController.instance;
|
|
11365
|
-
|
|
11253
|
+
RuntimeValidationController.instance;
|
|
11366
11254
|
}
|
|
11367
11255
|
static ensureTransportControllers(isFrontend) {
|
|
11368
11256
|
if (!isFrontend) {
|
|
@@ -11501,6 +11389,38 @@ var CadenzaService = class {
|
|
|
11501
11389
|
this.inquiryBroker?.addIntent(intent);
|
|
11502
11390
|
return intent;
|
|
11503
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
|
+
}
|
|
11504
11424
|
static getInquiryResponderDescriptor(task) {
|
|
11505
11425
|
return this.serviceRegistry.getInquiryResponderDescriptor(task);
|
|
11506
11426
|
}
|
|
@@ -12261,7 +12181,6 @@ var CadenzaService = class {
|
|
|
12261
12181
|
}
|
|
12262
12182
|
});
|
|
12263
12183
|
});
|
|
12264
|
-
console.log("Creating service...");
|
|
12265
12184
|
const initContext = {
|
|
12266
12185
|
data: {
|
|
12267
12186
|
name: serviceName,
|
|
@@ -12294,10 +12213,13 @@ var CadenzaService = class {
|
|
|
12294
12213
|
}).doOn("meta.fetch.handshake_complete");
|
|
12295
12214
|
} else {
|
|
12296
12215
|
this.emit("meta.create_service_requested", initContext);
|
|
12297
|
-
this.createMetaTask("Create signal transmission for sync", (ctx) => {
|
|
12298
|
-
|
|
12299
|
-
"
|
|
12300
|
-
|
|
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
|
+
}
|
|
12301
12223
|
);
|
|
12302
12224
|
}).doOn("meta.rest.handshake", "meta.socket.handshake");
|
|
12303
12225
|
}
|
|
@@ -13287,6 +13209,8 @@ var index_default = CadenzaService;
|
|
|
13287
13209
|
EphemeralTask,
|
|
13288
13210
|
GraphMetadataController,
|
|
13289
13211
|
GraphRoutine,
|
|
13212
|
+
RUNTIME_VALIDATION_INTENTS,
|
|
13213
|
+
RUNTIME_VALIDATION_SIGNALS,
|
|
13290
13214
|
RestController,
|
|
13291
13215
|
ServiceRegistry,
|
|
13292
13216
|
SignalController,
|