@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/browser/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: uuid7,
|
|
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, uuid7, 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();
|
|
@@ -4923,10 +4890,14 @@ var SocketController = class _SocketController {
|
|
|
4923
4890
|
const communicationTypes = this.normalizeCommunicationTypes(
|
|
4924
4891
|
input.communicationTypes
|
|
4925
4892
|
);
|
|
4893
|
+
const transportProtocols = Array.isArray(input.transportProtocols) ? input.transportProtocols.map((entry) => String(entry)) : [];
|
|
4926
4894
|
const serviceName = String(input.serviceName ?? "");
|
|
4927
4895
|
const serviceTransportId = String(input.serviceTransportId ?? "");
|
|
4928
4896
|
const serviceOrigin = String(input.serviceOrigin ?? "");
|
|
4929
4897
|
const parsedOrigin = parseTransportOrigin(serviceOrigin);
|
|
4898
|
+
if (!transportProtocols.includes("socket")) {
|
|
4899
|
+
return false;
|
|
4900
|
+
}
|
|
4930
4901
|
if (!serviceTransportId || !serviceOrigin || !parsedOrigin) {
|
|
4931
4902
|
CadenzaService.log(
|
|
4932
4903
|
"Socket client setup skipped due to missing transport origin",
|
|
@@ -4952,7 +4923,7 @@ var SocketController = class _SocketController {
|
|
|
4952
4923
|
serviceName,
|
|
4953
4924
|
serviceTransportId,
|
|
4954
4925
|
serviceOrigin,
|
|
4955
|
-
transportProtocols
|
|
4926
|
+
transportProtocols,
|
|
4956
4927
|
url
|
|
4957
4928
|
});
|
|
4958
4929
|
};
|
|
@@ -4973,7 +4944,7 @@ var SocketController = class _SocketController {
|
|
|
4973
4944
|
serviceName,
|
|
4974
4945
|
serviceTransportId,
|
|
4975
4946
|
serviceOrigin,
|
|
4976
|
-
transportProtocols
|
|
4947
|
+
transportProtocols,
|
|
4977
4948
|
url,
|
|
4978
4949
|
destroyed: false,
|
|
4979
4950
|
updatedAt: Date.now()
|
|
@@ -5552,7 +5523,7 @@ var SocketController = class _SocketController {
|
|
|
5552
5523
|
communicationTypes,
|
|
5553
5524
|
serviceTransportId,
|
|
5554
5525
|
serviceOrigin,
|
|
5555
|
-
transportProtocols
|
|
5526
|
+
transportProtocols,
|
|
5556
5527
|
handshakeData: {
|
|
5557
5528
|
instanceId: CadenzaService.serviceRegistry.serviceInstanceId,
|
|
5558
5529
|
serviceName: CadenzaService.serviceRegistry.serviceName
|
|
@@ -5912,6 +5883,209 @@ var SignalController = class _SignalController {
|
|
|
5912
5883
|
}
|
|
5913
5884
|
};
|
|
5914
5885
|
|
|
5886
|
+
// src/runtime/RuntimeValidationController.ts
|
|
5887
|
+
var RUNTIME_VALIDATION_INTENTS = {
|
|
5888
|
+
getPolicy: "meta-runtime-validation-policy-get",
|
|
5889
|
+
setPolicy: "meta-runtime-validation-policy-set",
|
|
5890
|
+
replacePolicy: "meta-runtime-validation-policy-replace",
|
|
5891
|
+
clearPolicy: "meta-runtime-validation-policy-clear",
|
|
5892
|
+
listScopes: "meta-runtime-validation-scope-list",
|
|
5893
|
+
upsertScope: "meta-runtime-validation-scope-upsert",
|
|
5894
|
+
removeScope: "meta-runtime-validation-scope-remove",
|
|
5895
|
+
clearScopes: "meta-runtime-validation-scope-clear"
|
|
5896
|
+
};
|
|
5897
|
+
var RUNTIME_VALIDATION_SIGNALS = {
|
|
5898
|
+
setPolicyRequested: "meta.runtime_validation.policy_set_requested",
|
|
5899
|
+
replacePolicyRequested: "meta.runtime_validation.policy_replace_requested",
|
|
5900
|
+
clearPolicyRequested: "meta.runtime_validation.policy_clear_requested",
|
|
5901
|
+
upsertScopeRequested: "meta.runtime_validation.scope_upsert_requested",
|
|
5902
|
+
removeScopeRequested: "meta.runtime_validation.scope_remove_requested",
|
|
5903
|
+
clearScopesRequested: "meta.runtime_validation.scope_clear_requested",
|
|
5904
|
+
policyUpdated: "meta.runtime_validation.policy_updated",
|
|
5905
|
+
policyCleared: "meta.runtime_validation.policy_cleared",
|
|
5906
|
+
scopeUpserted: "meta.runtime_validation.scope_upserted",
|
|
5907
|
+
scopeRemoved: "meta.runtime_validation.scope_removed",
|
|
5908
|
+
scopesCleared: "meta.runtime_validation.scopes_cleared"
|
|
5909
|
+
};
|
|
5910
|
+
function normalizePolicyContext(ctx) {
|
|
5911
|
+
const source = ctx.policy && typeof ctx.policy === "object" && !Array.isArray(ctx.policy) ? ctx.policy : ctx;
|
|
5912
|
+
const policy = {};
|
|
5913
|
+
for (const key of [
|
|
5914
|
+
"metaInput",
|
|
5915
|
+
"metaOutput",
|
|
5916
|
+
"businessInput",
|
|
5917
|
+
"businessOutput",
|
|
5918
|
+
"warnOnMissingMetaInputSchema",
|
|
5919
|
+
"warnOnMissingMetaOutputSchema",
|
|
5920
|
+
"warnOnMissingBusinessInputSchema",
|
|
5921
|
+
"warnOnMissingBusinessOutputSchema"
|
|
5922
|
+
]) {
|
|
5923
|
+
if (source[key] !== void 0) {
|
|
5924
|
+
policy[key] = source[key];
|
|
5925
|
+
}
|
|
5926
|
+
}
|
|
5927
|
+
return policy;
|
|
5928
|
+
}
|
|
5929
|
+
function normalizeScopeContext(ctx) {
|
|
5930
|
+
const source = ctx.scope && typeof ctx.scope === "object" && !Array.isArray(ctx.scope) ? ctx.scope : ctx;
|
|
5931
|
+
return {
|
|
5932
|
+
id: source.id,
|
|
5933
|
+
active: source.active,
|
|
5934
|
+
startTaskNames: Array.isArray(source.startTaskNames) ? source.startTaskNames : void 0,
|
|
5935
|
+
startRoutineNames: Array.isArray(source.startRoutineNames) ? source.startRoutineNames : void 0,
|
|
5936
|
+
policy: source.policy && typeof source.policy === "object" ? normalizePolicyContext({ policy: source.policy }) : void 0
|
|
5937
|
+
};
|
|
5938
|
+
}
|
|
5939
|
+
var RuntimeValidationController = class _RuntimeValidationController {
|
|
5940
|
+
static get instance() {
|
|
5941
|
+
if (!this._instance) {
|
|
5942
|
+
this._instance = new _RuntimeValidationController();
|
|
5943
|
+
}
|
|
5944
|
+
return this._instance;
|
|
5945
|
+
}
|
|
5946
|
+
constructor() {
|
|
5947
|
+
CadenzaService.defineIntent({
|
|
5948
|
+
name: RUNTIME_VALIDATION_INTENTS.getPolicy,
|
|
5949
|
+
description: "Get the active runtime validation policy.",
|
|
5950
|
+
input: { type: "object" },
|
|
5951
|
+
output: { type: "object" }
|
|
5952
|
+
});
|
|
5953
|
+
CadenzaService.defineIntent({
|
|
5954
|
+
name: RUNTIME_VALIDATION_INTENTS.setPolicy,
|
|
5955
|
+
description: "Merge fields into the active runtime validation policy.",
|
|
5956
|
+
input: { type: "object" },
|
|
5957
|
+
output: { type: "object" }
|
|
5958
|
+
});
|
|
5959
|
+
CadenzaService.defineIntent({
|
|
5960
|
+
name: RUNTIME_VALIDATION_INTENTS.replacePolicy,
|
|
5961
|
+
description: "Replace the active runtime validation policy.",
|
|
5962
|
+
input: { type: "object" },
|
|
5963
|
+
output: { type: "object" }
|
|
5964
|
+
});
|
|
5965
|
+
CadenzaService.defineIntent({
|
|
5966
|
+
name: RUNTIME_VALIDATION_INTENTS.clearPolicy,
|
|
5967
|
+
description: "Clear the active runtime validation policy.",
|
|
5968
|
+
input: { type: "object" },
|
|
5969
|
+
output: { type: "object" }
|
|
5970
|
+
});
|
|
5971
|
+
CadenzaService.defineIntent({
|
|
5972
|
+
name: RUNTIME_VALIDATION_INTENTS.listScopes,
|
|
5973
|
+
description: "List active runtime validation scopes.",
|
|
5974
|
+
input: { type: "object" },
|
|
5975
|
+
output: { type: "object" }
|
|
5976
|
+
});
|
|
5977
|
+
CadenzaService.defineIntent({
|
|
5978
|
+
name: RUNTIME_VALIDATION_INTENTS.upsertScope,
|
|
5979
|
+
description: "Create or update a runtime validation scope for targeted subflow validation.",
|
|
5980
|
+
input: { type: "object" },
|
|
5981
|
+
output: { type: "object" }
|
|
5982
|
+
});
|
|
5983
|
+
CadenzaService.defineIntent({
|
|
5984
|
+
name: RUNTIME_VALIDATION_INTENTS.removeScope,
|
|
5985
|
+
description: "Remove a runtime validation scope by id.",
|
|
5986
|
+
input: { type: "object" },
|
|
5987
|
+
output: { type: "object" }
|
|
5988
|
+
});
|
|
5989
|
+
CadenzaService.defineIntent({
|
|
5990
|
+
name: RUNTIME_VALIDATION_INTENTS.clearScopes,
|
|
5991
|
+
description: "Clear all runtime validation scopes.",
|
|
5992
|
+
input: { type: "object" },
|
|
5993
|
+
output: { type: "object" }
|
|
5994
|
+
});
|
|
5995
|
+
CadenzaService.createMetaTask("Get runtime validation policy", () => {
|
|
5996
|
+
return {
|
|
5997
|
+
policy: CadenzaService.getRuntimeValidationPolicy()
|
|
5998
|
+
};
|
|
5999
|
+
}).respondsTo(RUNTIME_VALIDATION_INTENTS.getPolicy);
|
|
6000
|
+
CadenzaService.createMetaTask(
|
|
6001
|
+
"Set runtime validation policy",
|
|
6002
|
+
(ctx, emit) => {
|
|
6003
|
+
const policy = normalizePolicyContext(ctx);
|
|
6004
|
+
const nextPolicy = CadenzaService.setRuntimeValidationPolicy(policy);
|
|
6005
|
+
emit(RUNTIME_VALIDATION_SIGNALS.policyUpdated, {
|
|
6006
|
+
policy: nextPolicy
|
|
6007
|
+
});
|
|
6008
|
+
return {
|
|
6009
|
+
policy: nextPolicy
|
|
6010
|
+
};
|
|
6011
|
+
},
|
|
6012
|
+
"Merges runtime validation policy fields at runtime."
|
|
6013
|
+
).respondsTo(RUNTIME_VALIDATION_INTENTS.setPolicy).doOn(RUNTIME_VALIDATION_SIGNALS.setPolicyRequested);
|
|
6014
|
+
CadenzaService.createMetaTask(
|
|
6015
|
+
"Replace runtime validation policy",
|
|
6016
|
+
(ctx, emit) => {
|
|
6017
|
+
const policy = normalizePolicyContext(ctx);
|
|
6018
|
+
const nextPolicy = CadenzaService.replaceRuntimeValidationPolicy(policy);
|
|
6019
|
+
emit(RUNTIME_VALIDATION_SIGNALS.policyUpdated, {
|
|
6020
|
+
policy: nextPolicy
|
|
6021
|
+
});
|
|
6022
|
+
return {
|
|
6023
|
+
policy: nextPolicy
|
|
6024
|
+
};
|
|
6025
|
+
},
|
|
6026
|
+
"Replaces runtime validation policy fields at runtime."
|
|
6027
|
+
).respondsTo(RUNTIME_VALIDATION_INTENTS.replacePolicy).doOn(RUNTIME_VALIDATION_SIGNALS.replacePolicyRequested);
|
|
6028
|
+
CadenzaService.createMetaTask(
|
|
6029
|
+
"Clear runtime validation policy",
|
|
6030
|
+
(_ctx, emit) => {
|
|
6031
|
+
CadenzaService.clearRuntimeValidationPolicy();
|
|
6032
|
+
emit(RUNTIME_VALIDATION_SIGNALS.policyCleared, {});
|
|
6033
|
+
return {
|
|
6034
|
+
policy: CadenzaService.getRuntimeValidationPolicy()
|
|
6035
|
+
};
|
|
6036
|
+
},
|
|
6037
|
+
"Clears the runtime validation policy."
|
|
6038
|
+
).respondsTo(RUNTIME_VALIDATION_INTENTS.clearPolicy).doOn(RUNTIME_VALIDATION_SIGNALS.clearPolicyRequested);
|
|
6039
|
+
CadenzaService.createMetaTask("List runtime validation scopes", () => {
|
|
6040
|
+
return {
|
|
6041
|
+
scopes: CadenzaService.getRuntimeValidationScopes()
|
|
6042
|
+
};
|
|
6043
|
+
}).respondsTo(RUNTIME_VALIDATION_INTENTS.listScopes);
|
|
6044
|
+
CadenzaService.createMetaTask(
|
|
6045
|
+
"Upsert runtime validation scope",
|
|
6046
|
+
(ctx, emit) => {
|
|
6047
|
+
const scope = normalizeScopeContext(ctx);
|
|
6048
|
+
const nextScope = CadenzaService.upsertRuntimeValidationScope(scope);
|
|
6049
|
+
emit(RUNTIME_VALIDATION_SIGNALS.scopeUpserted, {
|
|
6050
|
+
scope: nextScope
|
|
6051
|
+
});
|
|
6052
|
+
return {
|
|
6053
|
+
scope: nextScope
|
|
6054
|
+
};
|
|
6055
|
+
},
|
|
6056
|
+
"Upserts a runtime validation scope for targeted debugging."
|
|
6057
|
+
).respondsTo(RUNTIME_VALIDATION_INTENTS.upsertScope).doOn(RUNTIME_VALIDATION_SIGNALS.upsertScopeRequested);
|
|
6058
|
+
CadenzaService.createMetaTask(
|
|
6059
|
+
"Remove runtime validation scope",
|
|
6060
|
+
(ctx, emit) => {
|
|
6061
|
+
if (!ctx.id) {
|
|
6062
|
+
throw new Error("Runtime validation scope id is required");
|
|
6063
|
+
}
|
|
6064
|
+
CadenzaService.removeRuntimeValidationScope(ctx.id);
|
|
6065
|
+
emit(RUNTIME_VALIDATION_SIGNALS.scopeRemoved, {
|
|
6066
|
+
id: ctx.id
|
|
6067
|
+
});
|
|
6068
|
+
return {
|
|
6069
|
+
id: ctx.id,
|
|
6070
|
+
scopes: CadenzaService.getRuntimeValidationScopes()
|
|
6071
|
+
};
|
|
6072
|
+
},
|
|
6073
|
+
"Removes a runtime validation scope."
|
|
6074
|
+
).respondsTo(RUNTIME_VALIDATION_INTENTS.removeScope).doOn(RUNTIME_VALIDATION_SIGNALS.removeScopeRequested);
|
|
6075
|
+
CadenzaService.createMetaTask(
|
|
6076
|
+
"Clear runtime validation scopes",
|
|
6077
|
+
(_ctx, emit) => {
|
|
6078
|
+
CadenzaService.clearRuntimeValidationScopes();
|
|
6079
|
+
emit(RUNTIME_VALIDATION_SIGNALS.scopesCleared, {});
|
|
6080
|
+
return {
|
|
6081
|
+
scopes: CadenzaService.getRuntimeValidationScopes()
|
|
6082
|
+
};
|
|
6083
|
+
},
|
|
6084
|
+
"Clears all runtime validation scopes."
|
|
6085
|
+
).respondsTo(RUNTIME_VALIDATION_INTENTS.clearScopes).doOn(RUNTIME_VALIDATION_SIGNALS.clearScopesRequested);
|
|
6086
|
+
}
|
|
6087
|
+
};
|
|
6088
|
+
|
|
5915
6089
|
// src/graph/controllers/registerActorSessionPersistence.ts
|
|
5916
6090
|
var import_core3 = require("@cadenza.io/core");
|
|
5917
6091
|
function registerActorSessionPersistenceTasks() {
|
|
@@ -6526,7 +6700,6 @@ function buildSyncExecutionEnvelope(ctx, queryData) {
|
|
|
6526
6700
|
}
|
|
6527
6701
|
function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, options = {}) {
|
|
6528
6702
|
const localInsertTask = CadenzaService.getLocalCadenzaDBInsertTask(tableName);
|
|
6529
|
-
const debugTable = shouldDebugSyncTable(tableName);
|
|
6530
6703
|
if (!localInsertTask && !isCadenzaDBReady) {
|
|
6531
6704
|
return void 0;
|
|
6532
6705
|
}
|
|
@@ -6539,16 +6712,6 @@ function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, opti
|
|
|
6539
6712
|
register: false,
|
|
6540
6713
|
isHidden: true
|
|
6541
6714
|
});
|
|
6542
|
-
if (debugTable) {
|
|
6543
|
-
logSyncDebug("insert_task_resolved", {
|
|
6544
|
-
tableName,
|
|
6545
|
-
localInsertTaskName: localInsertTask?.name ?? null,
|
|
6546
|
-
remoteInsertTaskName: isCadenzaDBReady ? targetTask.name : null,
|
|
6547
|
-
targetTaskName: targetTask.name,
|
|
6548
|
-
queryData,
|
|
6549
|
-
options
|
|
6550
|
-
});
|
|
6551
|
-
}
|
|
6552
6715
|
const prepareExecutionTask = CadenzaService.createMetaTask(
|
|
6553
6716
|
`Prepare graph sync insert for ${tableName}`,
|
|
6554
6717
|
(ctx) => {
|
|
@@ -6559,12 +6722,12 @@ function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, opti
|
|
|
6559
6722
|
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) {
|
|
6560
6723
|
console.warn(
|
|
6561
6724
|
"[CADENZA_SYNC_EMPTY_INSERT]",
|
|
6562
|
-
|
|
6725
|
+
{
|
|
6563
6726
|
tableName,
|
|
6564
6727
|
queryData: originalQueryData,
|
|
6565
6728
|
ctx,
|
|
6566
6729
|
joinedContexts: Array.isArray(ctx.joinedContexts) ? ctx.joinedContexts : []
|
|
6567
|
-
}
|
|
6730
|
+
}
|
|
6568
6731
|
);
|
|
6569
6732
|
}
|
|
6570
6733
|
return buildSyncExecutionEnvelope(
|
|
@@ -6578,37 +6741,6 @@ function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, opti
|
|
|
6578
6741
|
isHidden: true
|
|
6579
6742
|
}
|
|
6580
6743
|
);
|
|
6581
|
-
if (debugTable) {
|
|
6582
|
-
prepareExecutionTask.then(
|
|
6583
|
-
CadenzaService.createMetaTask(
|
|
6584
|
-
`Log prepared graph sync insert execution for ${tableName}`,
|
|
6585
|
-
(ctx) => {
|
|
6586
|
-
if (tableName === "task") {
|
|
6587
|
-
if (!shouldDebugTaskSyncPayload(ctx)) {
|
|
6588
|
-
return ctx;
|
|
6589
|
-
}
|
|
6590
|
-
logSyncDebug("insert_prepare", {
|
|
6591
|
-
tableName,
|
|
6592
|
-
targetTaskName: targetTask.name,
|
|
6593
|
-
payload: buildTaskSyncDebugPayload(ctx)
|
|
6594
|
-
});
|
|
6595
|
-
return ctx;
|
|
6596
|
-
}
|
|
6597
|
-
logSyncDebug("insert_prepare", {
|
|
6598
|
-
tableName,
|
|
6599
|
-
targetTaskName: targetTask.name,
|
|
6600
|
-
ctx
|
|
6601
|
-
});
|
|
6602
|
-
return ctx;
|
|
6603
|
-
},
|
|
6604
|
-
`Logs prepared ${tableName} sync insert payloads.`,
|
|
6605
|
-
{
|
|
6606
|
-
register: false,
|
|
6607
|
-
isHidden: true
|
|
6608
|
-
}
|
|
6609
|
-
)
|
|
6610
|
-
);
|
|
6611
|
-
}
|
|
6612
6744
|
const finalizeExecutionTask = CadenzaService.createMetaTask(
|
|
6613
6745
|
`Finalize graph sync insert for ${tableName}`,
|
|
6614
6746
|
(ctx) => {
|
|
@@ -6619,25 +6751,6 @@ function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, opti
|
|
|
6619
6751
|
...ctx,
|
|
6620
6752
|
queryData: ctx.queryData && typeof ctx.queryData === "object" ? ctx.queryData : originalQueryData
|
|
6621
6753
|
};
|
|
6622
|
-
if (debugTable) {
|
|
6623
|
-
if (tableName === "task") {
|
|
6624
|
-
if (shouldDebugTaskSyncPayload(normalizedContext)) {
|
|
6625
|
-
logSyncDebug("insert_finalize", {
|
|
6626
|
-
tableName,
|
|
6627
|
-
targetTaskName: targetTask.name,
|
|
6628
|
-
success: didSyncInsertSucceed(normalizedContext),
|
|
6629
|
-
payload: buildTaskSyncDebugPayload(normalizedContext)
|
|
6630
|
-
});
|
|
6631
|
-
}
|
|
6632
|
-
} else {
|
|
6633
|
-
logSyncDebug("insert_finalize", {
|
|
6634
|
-
tableName,
|
|
6635
|
-
targetTaskName: targetTask.name,
|
|
6636
|
-
success: didSyncInsertSucceed(normalizedContext),
|
|
6637
|
-
ctx: normalizedContext
|
|
6638
|
-
});
|
|
6639
|
-
}
|
|
6640
|
-
}
|
|
6641
6754
|
return normalizedContext;
|
|
6642
6755
|
},
|
|
6643
6756
|
`Finalizes ${tableName} graph-sync insert execution after the authority task finishes.`,
|
|
@@ -6672,139 +6785,6 @@ var AUTHORITY_QUERY_RESULT_KEYS = {
|
|
|
6672
6785
|
intent_registry: "intentRegistrys"
|
|
6673
6786
|
};
|
|
6674
6787
|
var EARLY_SYNC_REQUEST_DELAYS_MS = [2e3, 1e4, 3e4];
|
|
6675
|
-
var SYNC_DEBUG_PREFIX = "[CADENZA_SYNC_DEBUG]";
|
|
6676
|
-
var SYNC_DEBUG_ENABLED = typeof process !== "undefined" && typeof process.env === "object" && process.env.CADENZA_SYNC_DEBUG === "true";
|
|
6677
|
-
var SYNC_DEBUG_TABLES = /* @__PURE__ */ new Set(["intent_to_task_map", "task"]);
|
|
6678
|
-
var SYNC_DEBUG_TASK_NAMES = /* @__PURE__ */ new Set([
|
|
6679
|
-
"Query service_instance",
|
|
6680
|
-
"Query service_instance_transport",
|
|
6681
|
-
"Query intent_to_task_map",
|
|
6682
|
-
"Query signal_to_task_map",
|
|
6683
|
-
"Prepare for signal sync",
|
|
6684
|
-
"Compile sync data and broadcast",
|
|
6685
|
-
"Forward service instance sync",
|
|
6686
|
-
"Forward service transport sync",
|
|
6687
|
-
"Forward intent to task map sync",
|
|
6688
|
-
"Forward signal to task map sync",
|
|
6689
|
-
"Normalize telemetry ingest payload",
|
|
6690
|
-
"Get telemetry session state",
|
|
6691
|
-
"Normalize anomaly detect input",
|
|
6692
|
-
"Read anomaly runtime session",
|
|
6693
|
-
"Normalize prediction compute input",
|
|
6694
|
-
"Normalize telemetry insert queryData"
|
|
6695
|
-
]);
|
|
6696
|
-
var SYNC_DEBUG_ROUTINE_NAMES = /* @__PURE__ */ new Set(["Sync services"]);
|
|
6697
|
-
var SYNC_DEBUG_INTENT_NAMES = /* @__PURE__ */ new Set([
|
|
6698
|
-
"meta-service-registry-full-sync",
|
|
6699
|
-
"runner-traffic-runtime-get",
|
|
6700
|
-
"iot-telemetry-ingest",
|
|
6701
|
-
"iot-telemetry-session-get",
|
|
6702
|
-
"iot-anomaly-detect",
|
|
6703
|
-
"iot-anomaly-runtime-get",
|
|
6704
|
-
"iot-prediction-compute",
|
|
6705
|
-
"iot-db-telemetry-insert",
|
|
6706
|
-
"query-pg-cadenza-db-postgres-actor-service_instance",
|
|
6707
|
-
"query-pg-cadenza-db-postgres-actor-service_instance_transport",
|
|
6708
|
-
"query-pg-cadenza-db-postgres-actor-intent_to_task_map",
|
|
6709
|
-
"query-pg-cadenza-db-postgres-actor-signal_to_task_map"
|
|
6710
|
-
]);
|
|
6711
|
-
function shouldDebugSyncTable(tableName) {
|
|
6712
|
-
return SYNC_DEBUG_ENABLED && SYNC_DEBUG_TABLES.has(tableName);
|
|
6713
|
-
}
|
|
6714
|
-
function shouldDebugSyncTaskName(taskName) {
|
|
6715
|
-
return SYNC_DEBUG_ENABLED && typeof taskName === "string" && SYNC_DEBUG_TASK_NAMES.has(taskName);
|
|
6716
|
-
}
|
|
6717
|
-
function shouldDebugSyncRoutineName(routineName) {
|
|
6718
|
-
return SYNC_DEBUG_ENABLED && typeof routineName === "string" && SYNC_DEBUG_ROUTINE_NAMES.has(routineName);
|
|
6719
|
-
}
|
|
6720
|
-
function shouldDebugSyncIntentName(intentName) {
|
|
6721
|
-
return SYNC_DEBUG_ENABLED && typeof intentName === "string" && SYNC_DEBUG_INTENT_NAMES.has(intentName);
|
|
6722
|
-
}
|
|
6723
|
-
function summarizeSyncDebugValue(value, depth = 0) {
|
|
6724
|
-
if (value === null || value === void 0) {
|
|
6725
|
-
return value;
|
|
6726
|
-
}
|
|
6727
|
-
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
|
|
6728
|
-
return value;
|
|
6729
|
-
}
|
|
6730
|
-
if (value instanceof Set) {
|
|
6731
|
-
return {
|
|
6732
|
-
__type: "Set",
|
|
6733
|
-
size: value.size,
|
|
6734
|
-
values: Array.from(value).slice(0, 8).map((item) => summarizeSyncDebugValue(item, depth + 1))
|
|
6735
|
-
};
|
|
6736
|
-
}
|
|
6737
|
-
if (value instanceof Map) {
|
|
6738
|
-
return {
|
|
6739
|
-
__type: "Map",
|
|
6740
|
-
size: value.size
|
|
6741
|
-
};
|
|
6742
|
-
}
|
|
6743
|
-
if (Array.isArray(value)) {
|
|
6744
|
-
return {
|
|
6745
|
-
__type: "Array",
|
|
6746
|
-
length: value.length,
|
|
6747
|
-
items: value.slice(0, 5).map((item) => summarizeSyncDebugValue(item, depth + 1))
|
|
6748
|
-
};
|
|
6749
|
-
}
|
|
6750
|
-
if (typeof value === "object") {
|
|
6751
|
-
if (depth >= 2) {
|
|
6752
|
-
return "[object]";
|
|
6753
|
-
}
|
|
6754
|
-
const output = {};
|
|
6755
|
-
const entries = Object.entries(value).filter(
|
|
6756
|
-
([key]) => ![
|
|
6757
|
-
"functionString",
|
|
6758
|
-
"tagIdGetter",
|
|
6759
|
-
"__functionString",
|
|
6760
|
-
"__getTagCallback",
|
|
6761
|
-
"joinedContexts",
|
|
6762
|
-
"task",
|
|
6763
|
-
"taskInstance",
|
|
6764
|
-
"tasks"
|
|
6765
|
-
].includes(key)
|
|
6766
|
-
).slice(0, 12);
|
|
6767
|
-
for (const [key, nestedValue] of entries) {
|
|
6768
|
-
output[key] = summarizeSyncDebugValue(nestedValue, depth + 1);
|
|
6769
|
-
}
|
|
6770
|
-
return output;
|
|
6771
|
-
}
|
|
6772
|
-
return String(value);
|
|
6773
|
-
}
|
|
6774
|
-
function logSyncDebug(event, payload) {
|
|
6775
|
-
console.log(`${SYNC_DEBUG_PREFIX} ${event}`, summarizeSyncDebugValue(payload));
|
|
6776
|
-
}
|
|
6777
|
-
function buildTaskSyncDebugPayload(ctx) {
|
|
6778
|
-
const data = ctx.data && typeof ctx.data === "object" ? ctx.data : {};
|
|
6779
|
-
const queryData = ctx.queryData && typeof ctx.queryData === "object" ? ctx.queryData : {};
|
|
6780
|
-
const queryDataData = queryData.data && typeof queryData.data === "object" ? queryData.data : {};
|
|
6781
|
-
const taskPayload = Object.keys(queryDataData).length > 0 ? queryDataData : data;
|
|
6782
|
-
const functionString = typeof taskPayload.functionString === "string" ? taskPayload.functionString : typeof taskPayload.function_string === "string" ? taskPayload.function_string : void 0;
|
|
6783
|
-
const tagIdGetter = typeof taskPayload.tagIdGetter === "string" ? taskPayload.tagIdGetter : typeof taskPayload.tag_id_getter === "string" ? taskPayload.tag_id_getter : void 0;
|
|
6784
|
-
const signals = taskPayload.signals && typeof taskPayload.signals === "object" ? taskPayload.signals : {};
|
|
6785
|
-
const intents = taskPayload.intents && typeof taskPayload.intents === "object" ? taskPayload.intents : {};
|
|
6786
|
-
return {
|
|
6787
|
-
taskName: taskPayload.name ?? taskPayload.taskName ?? taskPayload.task_name ?? ctx.__taskName ?? null,
|
|
6788
|
-
serviceName: taskPayload.service_name ?? taskPayload.serviceName ?? ctx.__syncServiceName ?? null,
|
|
6789
|
-
functionStringLength: functionString?.length ?? null,
|
|
6790
|
-
tagIdGetterLength: tagIdGetter?.length ?? null,
|
|
6791
|
-
isMeta: taskPayload.isMeta ?? taskPayload.is_meta ?? null,
|
|
6792
|
-
isSubMeta: taskPayload.isSubMeta ?? taskPayload.is_sub_meta ?? null,
|
|
6793
|
-
isHidden: taskPayload.isHidden ?? taskPayload.is_hidden ?? null,
|
|
6794
|
-
signalsEmitsCount: Array.isArray(signals.emits) ? signals.emits.length : null,
|
|
6795
|
-
signalsObservedCount: Array.isArray(signals.observed) ? signals.observed.length : null,
|
|
6796
|
-
intentHandlesCount: Array.isArray(intents.handles) ? intents.handles.length : null,
|
|
6797
|
-
intentInquiresCount: Array.isArray(intents.inquires) ? intents.inquires.length : null,
|
|
6798
|
-
rowCount: ctx.rowCount ?? null,
|
|
6799
|
-
errored: ctx.errored ?? false,
|
|
6800
|
-
success: ctx.__success ?? null,
|
|
6801
|
-
error: ctx.__error ?? null
|
|
6802
|
-
};
|
|
6803
|
-
}
|
|
6804
|
-
function shouldDebugTaskSyncPayload(ctx) {
|
|
6805
|
-
const payload = buildTaskSyncDebugPayload(ctx);
|
|
6806
|
-
return shouldDebugSyncTaskName(payload.taskName);
|
|
6807
|
-
}
|
|
6808
6788
|
function resolveSyncQueryRows(ctx, tableName) {
|
|
6809
6789
|
const resultKey = AUTHORITY_QUERY_RESULT_KEYS[tableName];
|
|
6810
6790
|
const rows = ctx?.[resultKey];
|
|
@@ -7251,16 +7231,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
7251
7231
|
if (!nextTask?.registered) {
|
|
7252
7232
|
continue;
|
|
7253
7233
|
}
|
|
7254
|
-
if (shouldDebugSyncRoutineName(routine.name) || shouldDebugSyncTaskName(nextTask.name)) {
|
|
7255
|
-
logSyncDebug("task_to_routine_split", {
|
|
7256
|
-
routineName: routine.name,
|
|
7257
|
-
routineVersion: routine.version,
|
|
7258
|
-
taskName: nextTask.name,
|
|
7259
|
-
taskVersion: nextTask.version,
|
|
7260
|
-
serviceName: serviceName2,
|
|
7261
|
-
registered: nextTask.registered
|
|
7262
|
-
});
|
|
7263
|
-
}
|
|
7264
7234
|
yield {
|
|
7265
7235
|
__syncing: ctx.__syncing,
|
|
7266
7236
|
data: {
|
|
@@ -7406,20 +7376,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
7406
7376
|
if (task.registered) continue;
|
|
7407
7377
|
const { __functionString, __getTagCallback } = task.export();
|
|
7408
7378
|
this.tasksSynced = false;
|
|
7409
|
-
if (shouldDebugSyncTaskName(task.name)) {
|
|
7410
|
-
logSyncDebug("task_registration_split", {
|
|
7411
|
-
taskName: task.name,
|
|
7412
|
-
taskVersion: task.version,
|
|
7413
|
-
serviceName: serviceName2,
|
|
7414
|
-
register: task.register,
|
|
7415
|
-
registered: task.registered,
|
|
7416
|
-
hidden: task.hidden,
|
|
7417
|
-
exportFunctionLength: __functionString?.length ?? null,
|
|
7418
|
-
exportTagGetterLength: __getTagCallback?.length ?? null,
|
|
7419
|
-
observedSignals: Array.from(task.observedSignals),
|
|
7420
|
-
handledIntents: Array.from(task.handlesIntents)
|
|
7421
|
-
});
|
|
7422
|
-
}
|
|
7423
7379
|
yield {
|
|
7424
7380
|
__syncing: ctx.__syncing,
|
|
7425
7381
|
data: {
|
|
@@ -7474,13 +7430,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
7474
7430
|
const registerTaskTask = CadenzaService.createMetaTask(
|
|
7475
7431
|
"Record registration",
|
|
7476
7432
|
(ctx, emit) => {
|
|
7477
|
-
if (shouldDebugSyncTaskName(ctx.__taskName)) {
|
|
7478
|
-
logSyncDebug("task_registration_result", {
|
|
7479
|
-
taskName: ctx.__taskName,
|
|
7480
|
-
success: didSyncInsertSucceed(ctx),
|
|
7481
|
-
ctx
|
|
7482
|
-
});
|
|
7483
|
-
}
|
|
7484
7433
|
if (!didSyncInsertSucceed(ctx)) {
|
|
7485
7434
|
return;
|
|
7486
7435
|
}
|
|
@@ -7506,16 +7455,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
7506
7455
|
"Prepare created task for immediate sync",
|
|
7507
7456
|
(ctx) => {
|
|
7508
7457
|
const task = ctx.taskInstance ?? (ctx.data?.name ? CadenzaService.get(String(ctx.data.name)) : void 0);
|
|
7509
|
-
if (shouldDebugSyncTaskName(task?.name ?? ctx?.data?.name)) {
|
|
7510
|
-
logSyncDebug("task_created_for_immediate_sync", {
|
|
7511
|
-
incomingTaskName: ctx?.data?.name ?? null,
|
|
7512
|
-
resolvedTaskName: task?.name ?? null,
|
|
7513
|
-
exists: Boolean(task),
|
|
7514
|
-
hidden: task?.hidden ?? null,
|
|
7515
|
-
register: task?.register ?? null,
|
|
7516
|
-
registered: task?.registered ?? null
|
|
7517
|
-
});
|
|
7518
|
-
}
|
|
7519
7458
|
if (!task || task.hidden || !task.register || task.registered) {
|
|
7520
7459
|
return false;
|
|
7521
7460
|
}
|
|
@@ -7702,17 +7641,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
7702
7641
|
if (!isGlobal) {
|
|
7703
7642
|
continue;
|
|
7704
7643
|
}
|
|
7705
|
-
if (shouldDebugSyncTaskName(task.name)) {
|
|
7706
|
-
logSyncDebug("signal_to_task_map_split", {
|
|
7707
|
-
taskName: task.name,
|
|
7708
|
-
signalName: _signal,
|
|
7709
|
-
rawSignal: signal,
|
|
7710
|
-
serviceName: serviceName2,
|
|
7711
|
-
observerRegistered: CadenzaService.signalBroker.signalObservers?.get(
|
|
7712
|
-
_signal
|
|
7713
|
-
)?.registered
|
|
7714
|
-
});
|
|
7715
|
-
}
|
|
7716
7644
|
yield {
|
|
7717
7645
|
__syncing: ctx.__syncing,
|
|
7718
7646
|
data: {
|
|
@@ -7823,21 +7751,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
7823
7751
|
}
|
|
7824
7752
|
task.__registeredIntents = task.__registeredIntents ?? /* @__PURE__ */ new Set();
|
|
7825
7753
|
task.__invalidMetaIntentWarnings = task.__invalidMetaIntentWarnings ?? /* @__PURE__ */ new Set();
|
|
7826
|
-
const shouldDebugTask = shouldDebugSyncTaskName(task.name);
|
|
7827
|
-
if (shouldDebugTask) {
|
|
7828
|
-
logSyncDebug("intent_map_task_state", {
|
|
7829
|
-
taskName: task.name,
|
|
7830
|
-
taskVersion: task.version,
|
|
7831
|
-
serviceName: serviceName2,
|
|
7832
|
-
registered: task.registered,
|
|
7833
|
-
register: task.register,
|
|
7834
|
-
hidden: task.hidden,
|
|
7835
|
-
handledIntents: Array.from(task.handlesIntents),
|
|
7836
|
-
registeredIntents: Array.from(task.__registeredIntents),
|
|
7837
|
-
tasksSynced: this.tasksSynced,
|
|
7838
|
-
intentsSynced: this.intentsSynced
|
|
7839
|
-
});
|
|
7840
|
-
}
|
|
7841
7754
|
let emittedCount = 0;
|
|
7842
7755
|
for (const intent of task.handlesIntents) {
|
|
7843
7756
|
if (task.__registeredIntents.has(intent)) continue;
|
|
@@ -7863,15 +7776,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
7863
7776
|
if (!intentDefinition) {
|
|
7864
7777
|
continue;
|
|
7865
7778
|
}
|
|
7866
|
-
if (shouldDebugSyncTaskName(task.name) || shouldDebugSyncIntentName(intent)) {
|
|
7867
|
-
logSyncDebug("intent_to_task_map_split", {
|
|
7868
|
-
taskName: task.name,
|
|
7869
|
-
taskVersion: task.version,
|
|
7870
|
-
intentName: intent,
|
|
7871
|
-
serviceName: serviceName2,
|
|
7872
|
-
intentDefinition
|
|
7873
|
-
});
|
|
7874
|
-
}
|
|
7875
7779
|
yield {
|
|
7876
7780
|
__syncing: ctx.__syncing,
|
|
7877
7781
|
data: {
|
|
@@ -7892,15 +7796,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
7892
7796
|
};
|
|
7893
7797
|
emittedCount += 1;
|
|
7894
7798
|
}
|
|
7895
|
-
if (shouldDebugTask && emittedCount === 0) {
|
|
7896
|
-
logSyncDebug("intent_map_task_noop", {
|
|
7897
|
-
taskName: task.name,
|
|
7898
|
-
taskVersion: task.version,
|
|
7899
|
-
serviceName: serviceName2,
|
|
7900
|
-
handledIntents: Array.from(task.handlesIntents),
|
|
7901
|
-
registeredIntents: Array.from(task.__registeredIntents)
|
|
7902
|
-
});
|
|
7903
|
-
}
|
|
7904
7799
|
return emittedCount > 0;
|
|
7905
7800
|
}.bind(this)
|
|
7906
7801
|
);
|
|
@@ -7910,13 +7805,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
7910
7805
|
if (!ctx.__intentDefinition || !ctx.__intentMapData) {
|
|
7911
7806
|
return false;
|
|
7912
7807
|
}
|
|
7913
|
-
if (shouldDebugSyncTaskName(ctx.__taskName) || shouldDebugSyncIntentName(ctx.__intent)) {
|
|
7914
|
-
logSyncDebug("intent_definition_prepare", {
|
|
7915
|
-
taskName: ctx.__taskName,
|
|
7916
|
-
intentName: ctx.__intent,
|
|
7917
|
-
intentDefinition: ctx.__intentDefinition
|
|
7918
|
-
});
|
|
7919
|
-
}
|
|
7920
7808
|
return {
|
|
7921
7809
|
...ctx,
|
|
7922
7810
|
data: ctx.__intentDefinition
|
|
@@ -7929,13 +7817,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
7929
7817
|
if (!ctx.__intentMapData) {
|
|
7930
7818
|
return false;
|
|
7931
7819
|
}
|
|
7932
|
-
if (shouldDebugSyncTaskName(ctx.__taskName) || shouldDebugSyncIntentName(ctx.__intent)) {
|
|
7933
|
-
logSyncDebug("intent_map_payload_restore", {
|
|
7934
|
-
taskName: ctx.__taskName,
|
|
7935
|
-
intentName: ctx.__intent,
|
|
7936
|
-
intentMapData: ctx.__intentMapData
|
|
7937
|
-
});
|
|
7938
|
-
}
|
|
7939
7820
|
return {
|
|
7940
7821
|
...ctx,
|
|
7941
7822
|
data: ctx.__intentMapData
|
|
@@ -8757,6 +8638,13 @@ var CadenzaService = class {
|
|
|
8757
8638
|
if (this.isBootstrapped) return;
|
|
8758
8639
|
this.isBootstrapped = true;
|
|
8759
8640
|
import_core5.default.bootstrap();
|
|
8641
|
+
import_core5.default.setRuntimeInquiryDelegate(
|
|
8642
|
+
(inquiry, context, options) => this.inquire(
|
|
8643
|
+
inquiry,
|
|
8644
|
+
context,
|
|
8645
|
+
options ?? {}
|
|
8646
|
+
)
|
|
8647
|
+
);
|
|
8760
8648
|
this.signalBroker = import_core5.default.signalBroker;
|
|
8761
8649
|
this.inquiryBroker = import_core5.default.inquiryBroker;
|
|
8762
8650
|
this.runner = import_core5.default.runner;
|
|
@@ -8765,7 +8653,7 @@ var CadenzaService = class {
|
|
|
8765
8653
|
this.serviceRegistry = ServiceRegistry.instance;
|
|
8766
8654
|
RestController.instance;
|
|
8767
8655
|
SocketController.instance;
|
|
8768
|
-
|
|
8656
|
+
RuntimeValidationController.instance;
|
|
8769
8657
|
}
|
|
8770
8658
|
static ensureTransportControllers(isFrontend) {
|
|
8771
8659
|
if (!isFrontend) {
|
|
@@ -8904,6 +8792,38 @@ var CadenzaService = class {
|
|
|
8904
8792
|
this.inquiryBroker?.addIntent(intent);
|
|
8905
8793
|
return intent;
|
|
8906
8794
|
}
|
|
8795
|
+
static getRuntimeValidationPolicy() {
|
|
8796
|
+
this.bootstrap();
|
|
8797
|
+
return import_core5.default.getRuntimeValidationPolicy();
|
|
8798
|
+
}
|
|
8799
|
+
static setRuntimeValidationPolicy(policy = {}) {
|
|
8800
|
+
this.bootstrap();
|
|
8801
|
+
return import_core5.default.setRuntimeValidationPolicy(policy);
|
|
8802
|
+
}
|
|
8803
|
+
static replaceRuntimeValidationPolicy(policy = {}) {
|
|
8804
|
+
this.bootstrap();
|
|
8805
|
+
return import_core5.default.replaceRuntimeValidationPolicy(policy);
|
|
8806
|
+
}
|
|
8807
|
+
static clearRuntimeValidationPolicy() {
|
|
8808
|
+
this.bootstrap();
|
|
8809
|
+
import_core5.default.clearRuntimeValidationPolicy();
|
|
8810
|
+
}
|
|
8811
|
+
static getRuntimeValidationScopes() {
|
|
8812
|
+
this.bootstrap();
|
|
8813
|
+
return import_core5.default.getRuntimeValidationScopes();
|
|
8814
|
+
}
|
|
8815
|
+
static upsertRuntimeValidationScope(scope) {
|
|
8816
|
+
this.bootstrap();
|
|
8817
|
+
return import_core5.default.upsertRuntimeValidationScope(scope);
|
|
8818
|
+
}
|
|
8819
|
+
static removeRuntimeValidationScope(id) {
|
|
8820
|
+
this.bootstrap();
|
|
8821
|
+
import_core5.default.removeRuntimeValidationScope(id);
|
|
8822
|
+
}
|
|
8823
|
+
static clearRuntimeValidationScopes() {
|
|
8824
|
+
this.bootstrap();
|
|
8825
|
+
import_core5.default.clearRuntimeValidationScopes();
|
|
8826
|
+
}
|
|
8907
8827
|
static getInquiryResponderDescriptor(task) {
|
|
8908
8828
|
return this.serviceRegistry.getInquiryResponderDescriptor(task);
|
|
8909
8829
|
}
|
|
@@ -9664,7 +9584,6 @@ var CadenzaService = class {
|
|
|
9664
9584
|
}
|
|
9665
9585
|
});
|
|
9666
9586
|
});
|
|
9667
|
-
console.log("Creating service...");
|
|
9668
9587
|
const initContext = {
|
|
9669
9588
|
data: {
|
|
9670
9589
|
name: serviceName,
|
|
@@ -9697,10 +9616,13 @@ var CadenzaService = class {
|
|
|
9697
9616
|
}).doOn("meta.fetch.handshake_complete");
|
|
9698
9617
|
} else {
|
|
9699
9618
|
this.emit("meta.create_service_requested", initContext);
|
|
9700
|
-
this.createMetaTask("Create signal transmission for sync", (ctx) => {
|
|
9701
|
-
|
|
9702
|
-
"
|
|
9703
|
-
|
|
9619
|
+
this.createMetaTask("Create signal transmission for sync", (ctx, emit) => {
|
|
9620
|
+
emit(
|
|
9621
|
+
"meta.service_registry.gathered_sync_transmission_reconcile_requested",
|
|
9622
|
+
{
|
|
9623
|
+
serviceName: ctx.serviceName,
|
|
9624
|
+
__reason: "handshake"
|
|
9625
|
+
}
|
|
9704
9626
|
);
|
|
9705
9627
|
}).doOn("meta.rest.handshake", "meta.socket.handshake");
|
|
9706
9628
|
}
|