@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.mjs
CHANGED
|
@@ -220,6 +220,13 @@ var DatabaseTask = class extends DeputyTask {
|
|
|
220
220
|
const metadata = context.getMetadata();
|
|
221
221
|
const dynamicQueryData = ctx.queryData ?? {};
|
|
222
222
|
delete ctx.queryData;
|
|
223
|
+
const nextQueryData = {
|
|
224
|
+
...this.queryData,
|
|
225
|
+
data: {
|
|
226
|
+
...ctx.data
|
|
227
|
+
},
|
|
228
|
+
...dynamicQueryData
|
|
229
|
+
};
|
|
223
230
|
const deputyContext = {
|
|
224
231
|
...ctx,
|
|
225
232
|
__localTaskName: this.name,
|
|
@@ -236,13 +243,13 @@ var DatabaseTask = class extends DeputyTask {
|
|
|
236
243
|
__blockRemoteExecution: metadata.__blockRemoteExecution ?? ctx.__blockRemoteExecution ?? false,
|
|
237
244
|
__deputyTaskName: this.name
|
|
238
245
|
},
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
+
data: nextQueryData.data ?? ctx.data,
|
|
247
|
+
batch: nextQueryData.batch ?? ctx.batch,
|
|
248
|
+
transaction: nextQueryData.transaction ?? ctx.transaction,
|
|
249
|
+
onConflict: Object.prototype.hasOwnProperty.call(nextQueryData, "onConflict") ? nextQueryData.onConflict : void 0,
|
|
250
|
+
filter: nextQueryData.filter ?? ctx.filter,
|
|
251
|
+
fields: nextQueryData.fields ?? ctx.fields,
|
|
252
|
+
queryData: nextQueryData
|
|
246
253
|
};
|
|
247
254
|
return this.taskFunction(deputyContext, emit, inquire, progressCallback);
|
|
248
255
|
}
|
|
@@ -675,6 +682,8 @@ function hasSignificantRuntimeStatusChange(previous, next) {
|
|
|
675
682
|
|
|
676
683
|
// src/registry/ServiceRegistry.ts
|
|
677
684
|
var META_SERVICE_REGISTRY_FULL_SYNC_INTENT = "meta-service-registry-full-sync";
|
|
685
|
+
var CADENZA_DB_GATHERED_SYNC_SIGNAL = "global.meta.cadenza_db.gathered_sync_data";
|
|
686
|
+
var META_GATHERED_SYNC_TRANSMISSION_RECONCILE_SIGNAL = "meta.service_registry.gathered_sync_transmission_reconcile_requested";
|
|
678
687
|
var META_RUNTIME_STATUS_HEARTBEAT_TICK_SIGNAL = "meta.service_registry.runtime_status.heartbeat_tick";
|
|
679
688
|
var META_RUNTIME_STATUS_MONITOR_TICK_SIGNAL = "meta.service_registry.runtime_status.monitor_tick";
|
|
680
689
|
var INTERNAL_RUNTIME_STATUS_TASK_NAMES = /* @__PURE__ */ new Set([
|
|
@@ -762,18 +771,6 @@ function normalizeServiceRegistryInsertResult(tableName, ctx, queryData, rawResu
|
|
|
762
771
|
}
|
|
763
772
|
return result;
|
|
764
773
|
}
|
|
765
|
-
function shouldTraceIotDbRegistryPath(localServiceName, targetServiceName) {
|
|
766
|
-
return targetServiceName === "IotDbService" && localServiceName !== "IotDbService";
|
|
767
|
-
}
|
|
768
|
-
function summarizeTransportDescriptors(transports) {
|
|
769
|
-
return transports.map((transport) => ({
|
|
770
|
-
uuid: transport.uuid,
|
|
771
|
-
serviceInstanceId: transport.serviceInstanceId,
|
|
772
|
-
role: transport.role,
|
|
773
|
-
origin: transport.origin,
|
|
774
|
-
protocols: transport.protocols
|
|
775
|
-
}));
|
|
776
|
-
}
|
|
777
774
|
function resolveServiceRegistryInsertTask(tableName, queryData = {}, options = {}) {
|
|
778
775
|
const remoteInsertTask = CadenzaService.createCadenzaDBInsertTask(
|
|
779
776
|
tableName,
|
|
@@ -790,6 +787,10 @@ function resolveServiceRegistryInsertTask(tableName, queryData = {}, options = {
|
|
|
790
787
|
const nextQueryData = buildServiceRegistryInsertQueryData(ctx, queryData);
|
|
791
788
|
const delegationContext = ensureDelegationContextMetadata({
|
|
792
789
|
...ctx,
|
|
790
|
+
data: nextQueryData.data !== void 0 ? nextQueryData.data : ctx.data,
|
|
791
|
+
batch: nextQueryData.batch !== void 0 ? nextQueryData.batch : ctx.batch,
|
|
792
|
+
onConflict: Object.prototype.hasOwnProperty.call(nextQueryData, "onConflict") ? nextQueryData.onConflict : void 0,
|
|
793
|
+
transaction: nextQueryData.transaction !== void 0 ? nextQueryData.transaction : ctx.transaction,
|
|
793
794
|
queryData: nextQueryData
|
|
794
795
|
});
|
|
795
796
|
delegationContext.__metadata.__skipRemoteExecution = delegationContext.__metadata.__skipRemoteExecution ?? delegationContext.__skipRemoteExecution ?? false;
|
|
@@ -913,6 +914,7 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
913
914
|
this.deputies = /* @__PURE__ */ new Map();
|
|
914
915
|
this.remoteSignals = /* @__PURE__ */ new Map();
|
|
915
916
|
this.remoteIntents = /* @__PURE__ */ new Map();
|
|
917
|
+
this.gatheredSyncTransmissionServices = /* @__PURE__ */ new Set();
|
|
916
918
|
this.remoteIntentDeputiesByKey = /* @__PURE__ */ new Map();
|
|
917
919
|
this.remoteIntentDeputiesByTask = /* @__PURE__ */ new Map();
|
|
918
920
|
this.dependeesByService = /* @__PURE__ */ new Map();
|
|
@@ -1164,21 +1166,6 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1164
1166
|
trackedInstance.acceptingWork = snapshot.acceptingWork;
|
|
1165
1167
|
trackedInstance.reportedAt = trackedInstance.reportedAt ?? (/* @__PURE__ */ new Date()).toISOString();
|
|
1166
1168
|
}
|
|
1167
|
-
if (shouldTraceIotDbRegistryPath(this.serviceName, serviceName)) {
|
|
1168
|
-
console.log("[CADENZA_REGISTRY_DEBUG] handle_instance_update", {
|
|
1169
|
-
localServiceName: this.serviceName,
|
|
1170
|
-
localServiceInstanceId: this.serviceInstanceId,
|
|
1171
|
-
targetServiceName: serviceName,
|
|
1172
|
-
targetServiceInstanceId: uuid7,
|
|
1173
|
-
existingInstance: !!existing,
|
|
1174
|
-
deleted,
|
|
1175
|
-
remoteInterest: this.deputies.has(serviceName) || this.remoteIntents.has(serviceName) || this.remoteSignals.has(serviceName),
|
|
1176
|
-
hasDeputies: this.deputies.has(serviceName),
|
|
1177
|
-
hasRemoteIntents: this.remoteIntents.has(serviceName),
|
|
1178
|
-
hasRemoteSignals: this.remoteSignals.has(serviceName),
|
|
1179
|
-
transports: trackedInstance ? summarizeTransportDescriptors(trackedInstance.transports) : []
|
|
1180
|
-
});
|
|
1181
|
-
}
|
|
1182
1169
|
if (!serviceInstance.isBootstrapPlaceholder) {
|
|
1183
1170
|
this.reconcileBootstrapPlaceholderInstance(serviceName, uuid7, emit);
|
|
1184
1171
|
}
|
|
@@ -1191,7 +1178,8 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1191
1178
|
if (this.deputies.has(serviceName) || this.remoteIntents.has(serviceName) || this.remoteSignals.has(serviceName)) {
|
|
1192
1179
|
const connected = this.ensureDependeeClientForInstance(
|
|
1193
1180
|
trackedInstance,
|
|
1194
|
-
emit
|
|
1181
|
+
emit,
|
|
1182
|
+
ctx
|
|
1195
1183
|
);
|
|
1196
1184
|
if (!connected) {
|
|
1197
1185
|
emit("meta.service_registry.routeable_transport_missing", {
|
|
@@ -1234,27 +1222,6 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1234
1222
|
break;
|
|
1235
1223
|
}
|
|
1236
1224
|
}
|
|
1237
|
-
if (shouldTraceIotDbRegistryPath(
|
|
1238
|
-
this.serviceName,
|
|
1239
|
-
ownerInstance?.serviceName ?? ctx.serviceName ?? void 0
|
|
1240
|
-
)) {
|
|
1241
|
-
console.log("[CADENZA_REGISTRY_DEBUG] handle_transport_update", {
|
|
1242
|
-
localServiceName: this.serviceName,
|
|
1243
|
-
localServiceInstanceId: this.serviceInstanceId,
|
|
1244
|
-
transport: {
|
|
1245
|
-
uuid: transport.uuid,
|
|
1246
|
-
serviceInstanceId: transport.serviceInstanceId,
|
|
1247
|
-
role: transport.role,
|
|
1248
|
-
origin: transport.origin,
|
|
1249
|
-
protocols: transport.protocols,
|
|
1250
|
-
deleted: transport.deleted
|
|
1251
|
-
},
|
|
1252
|
-
ownerFound: !!ownerInstance,
|
|
1253
|
-
ownerServiceName: ownerInstance?.serviceName,
|
|
1254
|
-
ownerInstanceId: ownerInstance?.uuid,
|
|
1255
|
-
ownerTransports: ownerInstance ? summarizeTransportDescriptors(ownerInstance.transports) : []
|
|
1256
|
-
});
|
|
1257
|
-
}
|
|
1258
1225
|
if (!ownerInstance) {
|
|
1259
1226
|
return false;
|
|
1260
1227
|
}
|
|
@@ -1280,7 +1247,7 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1280
1247
|
if (!hasRemoteInterest) {
|
|
1281
1248
|
return true;
|
|
1282
1249
|
}
|
|
1283
|
-
this.ensureDependeeClientForInstance(ownerInstance, emit);
|
|
1250
|
+
this.ensureDependeeClientForInstance(ownerInstance, emit, ctx);
|
|
1284
1251
|
return true;
|
|
1285
1252
|
},
|
|
1286
1253
|
"Handles service transport updates independently from instance rows."
|
|
@@ -1310,29 +1277,12 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1310
1277
|
"Tracks remote dependency instances for runtime heartbeat monitoring."
|
|
1311
1278
|
).doOn("meta.service_registry.dependee_registered");
|
|
1312
1279
|
const normalizeServiceInstancesFromSync = (ctx) => this.normalizeServiceInstancesFromSync(ctx);
|
|
1313
|
-
const getLocalTraceContext = () => ({
|
|
1314
|
-
localServiceName: this.serviceName,
|
|
1315
|
-
localServiceInstanceId: this.serviceInstanceId
|
|
1316
|
-
});
|
|
1317
1280
|
CadenzaService.createMetaTask("Split service instances", function* (ctx) {
|
|
1318
1281
|
const serviceInstances = normalizeServiceInstancesFromSync(ctx);
|
|
1319
1282
|
if (serviceInstances.length === 0) {
|
|
1320
1283
|
return;
|
|
1321
1284
|
}
|
|
1322
1285
|
for (const serviceInstance of serviceInstances) {
|
|
1323
|
-
const { localServiceName, localServiceInstanceId } = getLocalTraceContext();
|
|
1324
|
-
if (shouldTraceIotDbRegistryPath(
|
|
1325
|
-
localServiceName,
|
|
1326
|
-
serviceInstance.serviceName
|
|
1327
|
-
)) {
|
|
1328
|
-
console.log("[CADENZA_REGISTRY_DEBUG] split_service_instance", {
|
|
1329
|
-
localServiceName,
|
|
1330
|
-
localServiceInstanceId,
|
|
1331
|
-
targetServiceName: serviceInstance.serviceName,
|
|
1332
|
-
targetServiceInstanceId: serviceInstance.uuid,
|
|
1333
|
-
transports: summarizeTransportDescriptors(serviceInstance.transports)
|
|
1334
|
-
});
|
|
1335
|
-
}
|
|
1336
1286
|
yield { serviceInstance };
|
|
1337
1287
|
}
|
|
1338
1288
|
}).doOn(
|
|
@@ -1378,6 +1328,15 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1378
1328
|
},
|
|
1379
1329
|
"Handles registration of remote signals"
|
|
1380
1330
|
).emits("meta.service_registry.registered_global_signals").doOn("global.meta.cadenza_db.gathered_sync_data");
|
|
1331
|
+
this.reconcileGatheredSyncTransmissionsTask = CadenzaService.createMetaTask(
|
|
1332
|
+
"Reconcile gathered sync signal transmissions",
|
|
1333
|
+
(ctx, emit) => this.reconcileGatheredSyncTransmissions(ctx, emit),
|
|
1334
|
+
"Keeps gathered sync transmitters aligned with known remote service instances."
|
|
1335
|
+
).doOn(
|
|
1336
|
+
CADENZA_DB_GATHERED_SYNC_SIGNAL,
|
|
1337
|
+
META_GATHERED_SYNC_TRANSMISSION_RECONCILE_SIGNAL,
|
|
1338
|
+
"meta.service_registry.service_discovered"
|
|
1339
|
+
);
|
|
1381
1340
|
this.handleGlobalIntentRegistrationTask = CadenzaService.createMetaTask(
|
|
1382
1341
|
"Handle global intent registration",
|
|
1383
1342
|
(ctx, emit) => {
|
|
@@ -1388,15 +1347,19 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1388
1347
|
return 0;
|
|
1389
1348
|
});
|
|
1390
1349
|
for (const map of sorted) {
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1350
|
+
try {
|
|
1351
|
+
if (map.deleted) {
|
|
1352
|
+
this.unregisterRemoteIntentDeputy(map);
|
|
1353
|
+
continue;
|
|
1354
|
+
}
|
|
1355
|
+
CadenzaService.inquiryBroker.addIntent({
|
|
1356
|
+
name: map.intentName
|
|
1357
|
+
});
|
|
1358
|
+
this.registerRemoteIntentDeputy(map);
|
|
1359
|
+
this.ensureDependeeClientsForService(map.serviceName, emit);
|
|
1360
|
+
} catch (error) {
|
|
1361
|
+
throw error;
|
|
1394
1362
|
}
|
|
1395
|
-
CadenzaService.inquiryBroker.addIntent({
|
|
1396
|
-
name: map.intentName
|
|
1397
|
-
});
|
|
1398
|
-
this.registerRemoteIntentDeputy(map);
|
|
1399
|
-
this.ensureDependeeClientsForService(map.serviceName, emit);
|
|
1400
1363
|
}
|
|
1401
1364
|
return true;
|
|
1402
1365
|
},
|
|
@@ -1548,7 +1511,7 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1548
1511
|
{
|
|
1549
1512
|
uuid: report.transportId,
|
|
1550
1513
|
serviceInstanceId: report.serviceInstanceId,
|
|
1551
|
-
role: this.getRoutingTransportRole(),
|
|
1514
|
+
role: report.transportRole ?? this.getRoutingTransportRole(),
|
|
1552
1515
|
origin: report.transportOrigin,
|
|
1553
1516
|
protocols: report.transportProtocols && report.transportProtocols.length > 0 ? report.transportProtocols : ["rest", "socket"],
|
|
1554
1517
|
securityProfile: null,
|
|
@@ -1590,21 +1553,6 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1590
1553
|
const serviceInstances = this.normalizeServiceInstancesFromSync(
|
|
1591
1554
|
inquiryResult
|
|
1592
1555
|
);
|
|
1593
|
-
if (shouldTraceIotDbRegistryPath(this.serviceName, "IotDbService")) {
|
|
1594
|
-
const tracedInstances = serviceInstances.filter((instance) => instance.serviceName === "IotDbService").map((instance) => ({
|
|
1595
|
-
uuid: instance.uuid,
|
|
1596
|
-
isActive: instance.isActive,
|
|
1597
|
-
isNonResponsive: instance.isNonResponsive,
|
|
1598
|
-
isBlocked: instance.isBlocked,
|
|
1599
|
-
transports: summarizeTransportDescriptors(instance.transports)
|
|
1600
|
-
}));
|
|
1601
|
-
console.log("[CADENZA_REGISTRY_DEBUG] full_sync_instances", {
|
|
1602
|
-
localServiceName: this.serviceName,
|
|
1603
|
-
localServiceInstanceId: this.serviceInstanceId,
|
|
1604
|
-
totalServiceInstances: serviceInstances.length,
|
|
1605
|
-
tracedInstances
|
|
1606
|
-
});
|
|
1607
|
-
}
|
|
1608
1556
|
return {
|
|
1609
1557
|
...ctx,
|
|
1610
1558
|
signalToTaskMaps,
|
|
@@ -1701,44 +1649,6 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1701
1649
|
let retries = __retries ?? 0;
|
|
1702
1650
|
let triedInstances = __triedInstances ?? [];
|
|
1703
1651
|
const preferredRole = this.getRoutingTransportRole();
|
|
1704
|
-
const allInstances = this.instances.get(__serviceName) ?? [];
|
|
1705
|
-
const candidateDiagnostics = shouldTraceIotDbRegistryPath(
|
|
1706
|
-
this.serviceName,
|
|
1707
|
-
__serviceName ?? void 0
|
|
1708
|
-
) ? allInstances.map((instance) => ({
|
|
1709
|
-
uuid: instance.uuid,
|
|
1710
|
-
isActive: instance.isActive,
|
|
1711
|
-
isNonResponsive: instance.isNonResponsive,
|
|
1712
|
-
isBlocked: instance.isBlocked,
|
|
1713
|
-
isFrontend: instance.isFrontend,
|
|
1714
|
-
transports: summarizeTransportDescriptors(instance.transports),
|
|
1715
|
-
selectedTransport: instance.isFrontend ? null : this.selectTransportForInstance(
|
|
1716
|
-
instance,
|
|
1717
|
-
context,
|
|
1718
|
-
preferredRole
|
|
1719
|
-
) ? {
|
|
1720
|
-
uuid: this.selectTransportForInstance(
|
|
1721
|
-
instance,
|
|
1722
|
-
context,
|
|
1723
|
-
preferredRole
|
|
1724
|
-
).uuid,
|
|
1725
|
-
role: this.selectTransportForInstance(
|
|
1726
|
-
instance,
|
|
1727
|
-
context,
|
|
1728
|
-
preferredRole
|
|
1729
|
-
).role,
|
|
1730
|
-
origin: this.selectTransportForInstance(
|
|
1731
|
-
instance,
|
|
1732
|
-
context,
|
|
1733
|
-
preferredRole
|
|
1734
|
-
).origin,
|
|
1735
|
-
protocols: this.selectTransportForInstance(
|
|
1736
|
-
instance,
|
|
1737
|
-
context,
|
|
1738
|
-
preferredRole
|
|
1739
|
-
).protocols
|
|
1740
|
-
} : null
|
|
1741
|
-
})) : void 0;
|
|
1742
1652
|
const instances = this.instances.get(__serviceName)?.filter((instance) => {
|
|
1743
1653
|
if (targetServiceInstanceId && instance.uuid !== targetServiceInstanceId) {
|
|
1744
1654
|
return false;
|
|
@@ -1771,20 +1681,6 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
1771
1681
|
}
|
|
1772
1682
|
return (a.numberOfRunningGraphs ?? 0) - (b.numberOfRunningGraphs ?? 0);
|
|
1773
1683
|
});
|
|
1774
|
-
if (candidateDiagnostics) {
|
|
1775
|
-
console.log("[CADENZA_REGISTRY_DEBUG] get_balanced_instance", {
|
|
1776
|
-
localServiceName: this.serviceName,
|
|
1777
|
-
localServiceInstanceId: this.serviceInstanceId,
|
|
1778
|
-
targetServiceName: __serviceName,
|
|
1779
|
-
preferredRole,
|
|
1780
|
-
useSocket: this.useSocket,
|
|
1781
|
-
targetServiceInstanceId,
|
|
1782
|
-
retries,
|
|
1783
|
-
triedInstances,
|
|
1784
|
-
candidateDiagnostics,
|
|
1785
|
-
filteredInstanceIds: instances?.map((instance) => instance.uuid) ?? []
|
|
1786
|
-
});
|
|
1787
|
-
}
|
|
1788
1684
|
if (!instances || instances.length === 0 || retries > this.retryCount) {
|
|
1789
1685
|
context.errored = true;
|
|
1790
1686
|
context.__error = this.isFrontend && preferredRole === "public" ? `No public transport available for ${__serviceName}.` : `No routeable ${preferredRole} transport available for ${__serviceName}. Retries: ${retries}.`;
|
|
@@ -2042,6 +1938,7 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
2042
1938
|
serviceName: report.serviceName,
|
|
2043
1939
|
serviceInstanceId: report.serviceInstanceId,
|
|
2044
1940
|
transportId: report.transportId,
|
|
1941
|
+
transportRole: report.transportRole,
|
|
2045
1942
|
transportOrigin: report.transportOrigin,
|
|
2046
1943
|
transportProtocols: report.transportProtocols,
|
|
2047
1944
|
isFrontend: report.isFrontend,
|
|
@@ -2658,6 +2555,64 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
2658
2555
|
(instance) => !!instance && !!instance.isActive && !instance.isNonResponsive && !instance.isBlocked
|
|
2659
2556
|
);
|
|
2660
2557
|
}
|
|
2558
|
+
shouldReconcileGatheredSyncTransmissions() {
|
|
2559
|
+
return this.serviceName === "CadenzaDB";
|
|
2560
|
+
}
|
|
2561
|
+
collectGatheredSyncTransmissionRecipients(ctx) {
|
|
2562
|
+
const recipients = /* @__PURE__ */ new Set();
|
|
2563
|
+
const addRecipient = (serviceName) => {
|
|
2564
|
+
const normalizedServiceName = String(serviceName ?? "").trim();
|
|
2565
|
+
if (!normalizedServiceName || normalizedServiceName === this.serviceName) {
|
|
2566
|
+
return;
|
|
2567
|
+
}
|
|
2568
|
+
recipients.add(normalizedServiceName);
|
|
2569
|
+
};
|
|
2570
|
+
addRecipient(ctx.serviceName ?? ctx.__serviceName);
|
|
2571
|
+
for (const instance of this.normalizeServiceInstancesFromSync(ctx)) {
|
|
2572
|
+
addRecipient(instance.serviceName);
|
|
2573
|
+
}
|
|
2574
|
+
for (const [serviceName, instances] of this.instances.entries()) {
|
|
2575
|
+
if (!instances?.length) {
|
|
2576
|
+
continue;
|
|
2577
|
+
}
|
|
2578
|
+
addRecipient(serviceName);
|
|
2579
|
+
}
|
|
2580
|
+
return recipients;
|
|
2581
|
+
}
|
|
2582
|
+
reconcileGatheredSyncTransmissions(ctx, emit) {
|
|
2583
|
+
if (!this.shouldReconcileGatheredSyncTransmissions()) {
|
|
2584
|
+
return false;
|
|
2585
|
+
}
|
|
2586
|
+
const desiredRecipients = this.collectGatheredSyncTransmissionRecipients(ctx);
|
|
2587
|
+
const createdRecipients = [];
|
|
2588
|
+
for (const serviceName of desiredRecipients) {
|
|
2589
|
+
if (this.gatheredSyncTransmissionServices.has(serviceName)) {
|
|
2590
|
+
continue;
|
|
2591
|
+
}
|
|
2592
|
+
CadenzaService.createSignalTransmissionTask(
|
|
2593
|
+
CADENZA_DB_GATHERED_SYNC_SIGNAL,
|
|
2594
|
+
serviceName
|
|
2595
|
+
);
|
|
2596
|
+
this.gatheredSyncTransmissionServices.add(serviceName);
|
|
2597
|
+
createdRecipients.push(serviceName);
|
|
2598
|
+
}
|
|
2599
|
+
for (const serviceName of Array.from(this.gatheredSyncTransmissionServices)) {
|
|
2600
|
+
if (desiredRecipients.has(serviceName)) {
|
|
2601
|
+
continue;
|
|
2602
|
+
}
|
|
2603
|
+
CadenzaService.get(
|
|
2604
|
+
`Transmit signal: ${CADENZA_DB_GATHERED_SYNC_SIGNAL} to ${serviceName}`
|
|
2605
|
+
)?.destroy();
|
|
2606
|
+
this.gatheredSyncTransmissionServices.delete(serviceName);
|
|
2607
|
+
}
|
|
2608
|
+
if (createdRecipients.length > 0 && ctx.__signalName === CADENZA_DB_GATHERED_SYNC_SIGNAL) {
|
|
2609
|
+
emit("meta.cadenza_db.sync_tick", {
|
|
2610
|
+
__syncing: true,
|
|
2611
|
+
__reason: "gathered_sync_transmissions_reconciled"
|
|
2612
|
+
});
|
|
2613
|
+
}
|
|
2614
|
+
return createdRecipients.length > 0 || this.gatheredSyncTransmissionServices.size > 0;
|
|
2615
|
+
}
|
|
2661
2616
|
registerRemoteIntentDeputy(map) {
|
|
2662
2617
|
if (!this.serviceName || map.serviceName === this.serviceName) {
|
|
2663
2618
|
return;
|
|
@@ -2900,38 +2855,18 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
2900
2855
|
}
|
|
2901
2856
|
return communicationTypes;
|
|
2902
2857
|
}
|
|
2903
|
-
ensureDependeeClientForInstance(instance, emit) {
|
|
2858
|
+
ensureDependeeClientForInstance(instance, emit, ctx) {
|
|
2904
2859
|
if (!instance || instance.uuid === this.serviceInstanceId || instance.isFrontend || !instance.isActive || instance.isNonResponsive || instance.isBlocked) {
|
|
2905
2860
|
return false;
|
|
2906
2861
|
}
|
|
2907
2862
|
if (!this.deputies.has(instance.serviceName) && !this.remoteIntents.has(instance.serviceName) && !this.remoteSignals.has(instance.serviceName)) {
|
|
2908
2863
|
return false;
|
|
2909
2864
|
}
|
|
2910
|
-
const transport = this.
|
|
2865
|
+
const transport = this.selectTransportForInstance(
|
|
2911
2866
|
instance,
|
|
2912
|
-
|
|
2913
|
-
|
|
2914
|
-
|
|
2915
|
-
console.log("[CADENZA_REGISTRY_DEBUG] ensure_dependee_client_for_instance", {
|
|
2916
|
-
localServiceName: this.serviceName,
|
|
2917
|
-
localServiceInstanceId: this.serviceInstanceId,
|
|
2918
|
-
targetServiceName: instance.serviceName,
|
|
2919
|
-
targetServiceInstanceId: instance.uuid,
|
|
2920
|
-
useSocket: this.useSocket,
|
|
2921
|
-
routeableRole: this.getRoutingTransportRole(),
|
|
2922
|
-
hasDeputies: this.deputies.has(instance.serviceName),
|
|
2923
|
-
hasRemoteIntents: this.remoteIntents.has(instance.serviceName),
|
|
2924
|
-
hasRemoteSignals: this.remoteSignals.has(instance.serviceName),
|
|
2925
|
-
clientCreatedTransportIds: instance.clientCreatedTransportIds ?? [],
|
|
2926
|
-
transports: summarizeTransportDescriptors(instance.transports),
|
|
2927
|
-
selectedTransport: transport ? {
|
|
2928
|
-
uuid: transport.uuid,
|
|
2929
|
-
role: transport.role,
|
|
2930
|
-
origin: transport.origin,
|
|
2931
|
-
protocols: transport.protocols
|
|
2932
|
-
} : null
|
|
2933
|
-
});
|
|
2934
|
-
}
|
|
2867
|
+
ctx ?? {},
|
|
2868
|
+
this.getRoutingTransportRole()
|
|
2869
|
+
);
|
|
2935
2870
|
if (!transport || this.hasTransportClientCreated(instance, transport.uuid)) {
|
|
2936
2871
|
return false;
|
|
2937
2872
|
}
|
|
@@ -2948,9 +2883,9 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
2948
2883
|
this.markTransportClientCreated(instance, transport.uuid);
|
|
2949
2884
|
return true;
|
|
2950
2885
|
}
|
|
2951
|
-
ensureDependeeClientsForService(serviceName, emit) {
|
|
2886
|
+
ensureDependeeClientsForService(serviceName, emit, ctx) {
|
|
2952
2887
|
for (const instance of this.instances.get(serviceName) ?? []) {
|
|
2953
|
-
this.ensureDependeeClientForInstance(instance, emit);
|
|
2888
|
+
this.ensureDependeeClientForInstance(instance, emit, ctx);
|
|
2954
2889
|
}
|
|
2955
2890
|
}
|
|
2956
2891
|
hasTransportClientCreated(instance, transportId) {
|
|
@@ -3009,6 +2944,10 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
3009
2944
|
if (!instances?.length) {
|
|
3010
2945
|
return;
|
|
3011
2946
|
}
|
|
2947
|
+
const resolvedInstance = instances.find(
|
|
2948
|
+
(instance) => instance.uuid === resolvedInstanceId
|
|
2949
|
+
);
|
|
2950
|
+
const frontendRoutingRole = this.isFrontend ? this.getRoutingTransportRole() : null;
|
|
3012
2951
|
const placeholders = instances.filter(
|
|
3013
2952
|
(instance) => instance.uuid !== resolvedInstanceId && instance.isBootstrapPlaceholder
|
|
3014
2953
|
);
|
|
@@ -3020,7 +2959,33 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
3020
2959
|
const requiredForReadiness = this.readinessDependeeByInstance.has(
|
|
3021
2960
|
placeholder.uuid
|
|
3022
2961
|
);
|
|
2962
|
+
const preservedTransportIds = /* @__PURE__ */ new Set();
|
|
2963
|
+
if (resolvedInstance && frontendRoutingRole) {
|
|
2964
|
+
const resolvedHasFrontendRoute = resolvedInstance.transports.some(
|
|
2965
|
+
(transport) => transport.role === frontendRoutingRole && !transport.deleted
|
|
2966
|
+
);
|
|
2967
|
+
if (!resolvedHasFrontendRoute) {
|
|
2968
|
+
const transportsToPreserve = placeholder.transports.filter(
|
|
2969
|
+
(transport) => transport.role === frontendRoutingRole && !transport.deleted
|
|
2970
|
+
);
|
|
2971
|
+
for (const transport of transportsToPreserve) {
|
|
2972
|
+
if (resolvedInstance.transports.some(
|
|
2973
|
+
(existingTransport) => existingTransport.role === transport.role && existingTransport.origin === transport.origin
|
|
2974
|
+
)) {
|
|
2975
|
+
continue;
|
|
2976
|
+
}
|
|
2977
|
+
resolvedInstance.transports.push({
|
|
2978
|
+
...transport,
|
|
2979
|
+
serviceInstanceId: resolvedInstanceId
|
|
2980
|
+
});
|
|
2981
|
+
preservedTransportIds.add(transport.uuid);
|
|
2982
|
+
}
|
|
2983
|
+
}
|
|
2984
|
+
}
|
|
3023
2985
|
for (const transport of placeholder.transports) {
|
|
2986
|
+
if (preservedTransportIds.has(transport.uuid)) {
|
|
2987
|
+
continue;
|
|
2988
|
+
}
|
|
3024
2989
|
const transportKey = buildTransportClientKey(transport);
|
|
3025
2990
|
emit(`meta.socket_shutdown_requested:${transportKey}`, {});
|
|
3026
2991
|
emit(`meta.fetch.destroy_requested:${transportKey}`, {});
|
|
@@ -3141,6 +3106,7 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
3141
3106
|
return null;
|
|
3142
3107
|
}
|
|
3143
3108
|
const transportId = ctx.transportId ?? ctx.serviceTransportId ?? ctx.serviceTransport?.uuid ?? void 0;
|
|
3109
|
+
const transportRole = ctx.transportRole ?? ctx.transport_role ?? ctx.serviceTransport?.role ?? void 0;
|
|
3144
3110
|
const transportOrigin = ctx.transportOrigin ?? ctx.serviceOrigin ?? ctx.serviceTransport?.origin ?? void 0;
|
|
3145
3111
|
const transportProtocols = Array.isArray(
|
|
3146
3112
|
ctx.transportProtocols ?? ctx.serviceTransport?.protocols
|
|
@@ -3166,6 +3132,7 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
3166
3132
|
serviceName,
|
|
3167
3133
|
serviceInstanceId,
|
|
3168
3134
|
transportId: typeof transportId === "string" && transportId.trim().length > 0 ? transportId : void 0,
|
|
3135
|
+
transportRole: transportRole === "internal" || transportRole === "public" ? transportRole : void 0,
|
|
3169
3136
|
transportOrigin: typeof transportOrigin === "string" && transportOrigin.trim().length > 0 ? transportOrigin : void 0,
|
|
3170
3137
|
transportProtocols: transportProtocols && transportProtocols.length > 0 ? Array.from(new Set(transportProtocols)) : void 0,
|
|
3171
3138
|
isFrontend: typeof ctx.isFrontend === "boolean" ? ctx.isFrontend : typeof ctx.serviceInstance?.isFrontend === "boolean" ? ctx.serviceInstance.isFrontend : void 0,
|
|
@@ -3188,13 +3155,16 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
3188
3155
|
const protocols = report.transportProtocols && report.transportProtocols.length > 0 ? report.transportProtocols : ["rest", "socket"];
|
|
3189
3156
|
const existingTransport = this.getTransportById(instance, report.transportId);
|
|
3190
3157
|
if (existingTransport) {
|
|
3158
|
+
if (report.transportRole) {
|
|
3159
|
+
existingTransport.role = report.transportRole;
|
|
3160
|
+
}
|
|
3191
3161
|
existingTransport.origin = report.transportOrigin;
|
|
3192
3162
|
existingTransport.protocols = protocols;
|
|
3193
3163
|
} else {
|
|
3194
3164
|
instance.transports.push({
|
|
3195
3165
|
uuid: report.transportId,
|
|
3196
3166
|
serviceInstanceId: report.serviceInstanceId,
|
|
3197
|
-
role: this.getRoutingTransportRole(),
|
|
3167
|
+
role: report.transportRole ?? this.getRoutingTransportRole(),
|
|
3198
3168
|
origin: report.transportOrigin,
|
|
3199
3169
|
protocols,
|
|
3200
3170
|
securityProfile: null,
|
|
@@ -3240,24 +3210,18 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
3240
3210
|
localInstance.isBlocked
|
|
3241
3211
|
);
|
|
3242
3212
|
const reportedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
3213
|
+
const transport = this.getRouteableTransport(
|
|
3214
|
+
localInstance,
|
|
3215
|
+
this.useSocket ? "socket" : "rest",
|
|
3216
|
+
"internal"
|
|
3217
|
+
);
|
|
3243
3218
|
const report = {
|
|
3244
3219
|
serviceName: this.serviceName,
|
|
3245
3220
|
serviceInstanceId: this.serviceInstanceId,
|
|
3246
|
-
transportId:
|
|
3247
|
-
|
|
3248
|
-
|
|
3249
|
-
|
|
3250
|
-
)?.uuid ?? void 0,
|
|
3251
|
-
transportOrigin: this.getRouteableTransport(
|
|
3252
|
-
localInstance,
|
|
3253
|
-
this.useSocket ? "socket" : "rest",
|
|
3254
|
-
"internal"
|
|
3255
|
-
)?.origin ?? void 0,
|
|
3256
|
-
transportProtocols: this.getRouteableTransport(
|
|
3257
|
-
localInstance,
|
|
3258
|
-
this.useSocket ? "socket" : "rest",
|
|
3259
|
-
"internal"
|
|
3260
|
-
)?.protocols ?? void 0,
|
|
3221
|
+
transportId: transport?.uuid ?? void 0,
|
|
3222
|
+
transportRole: transport?.role ?? void 0,
|
|
3223
|
+
transportOrigin: transport?.origin ?? void 0,
|
|
3224
|
+
transportProtocols: transport?.protocols ?? void 0,
|
|
3261
3225
|
isFrontend: localInstance.isFrontend,
|
|
3262
3226
|
reportedAt,
|
|
3263
3227
|
state: snapshot.state,
|
|
@@ -3621,6 +3585,7 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
3621
3585
|
this.deputies.clear();
|
|
3622
3586
|
this.remoteSignals.clear();
|
|
3623
3587
|
this.remoteIntents.clear();
|
|
3588
|
+
this.gatheredSyncTransmissionServices.clear();
|
|
3624
3589
|
this.remoteIntentDeputiesByKey.clear();
|
|
3625
3590
|
this.remoteIntentDeputiesByTask.clear();
|
|
3626
3591
|
this.dependeesByService.clear();
|
|
@@ -4872,10 +4837,14 @@ var SocketController = class _SocketController {
|
|
|
4872
4837
|
const communicationTypes = this.normalizeCommunicationTypes(
|
|
4873
4838
|
input.communicationTypes
|
|
4874
4839
|
);
|
|
4840
|
+
const transportProtocols = Array.isArray(input.transportProtocols) ? input.transportProtocols.map((entry) => String(entry)) : [];
|
|
4875
4841
|
const serviceName = String(input.serviceName ?? "");
|
|
4876
4842
|
const serviceTransportId = String(input.serviceTransportId ?? "");
|
|
4877
4843
|
const serviceOrigin = String(input.serviceOrigin ?? "");
|
|
4878
4844
|
const parsedOrigin = parseTransportOrigin(serviceOrigin);
|
|
4845
|
+
if (!transportProtocols.includes("socket")) {
|
|
4846
|
+
return false;
|
|
4847
|
+
}
|
|
4879
4848
|
if (!serviceTransportId || !serviceOrigin || !parsedOrigin) {
|
|
4880
4849
|
CadenzaService.log(
|
|
4881
4850
|
"Socket client setup skipped due to missing transport origin",
|
|
@@ -4901,7 +4870,7 @@ var SocketController = class _SocketController {
|
|
|
4901
4870
|
serviceName,
|
|
4902
4871
|
serviceTransportId,
|
|
4903
4872
|
serviceOrigin,
|
|
4904
|
-
transportProtocols
|
|
4873
|
+
transportProtocols,
|
|
4905
4874
|
url
|
|
4906
4875
|
});
|
|
4907
4876
|
};
|
|
@@ -4922,7 +4891,7 @@ var SocketController = class _SocketController {
|
|
|
4922
4891
|
serviceName,
|
|
4923
4892
|
serviceTransportId,
|
|
4924
4893
|
serviceOrigin,
|
|
4925
|
-
transportProtocols
|
|
4894
|
+
transportProtocols,
|
|
4926
4895
|
url,
|
|
4927
4896
|
destroyed: false,
|
|
4928
4897
|
updatedAt: Date.now()
|
|
@@ -5501,7 +5470,7 @@ var SocketController = class _SocketController {
|
|
|
5501
5470
|
communicationTypes,
|
|
5502
5471
|
serviceTransportId,
|
|
5503
5472
|
serviceOrigin,
|
|
5504
|
-
transportProtocols
|
|
5473
|
+
transportProtocols,
|
|
5505
5474
|
handshakeData: {
|
|
5506
5475
|
instanceId: CadenzaService.serviceRegistry.serviceInstanceId,
|
|
5507
5476
|
serviceName: CadenzaService.serviceRegistry.serviceName
|
|
@@ -5861,6 +5830,209 @@ var SignalController = class _SignalController {
|
|
|
5861
5830
|
}
|
|
5862
5831
|
};
|
|
5863
5832
|
|
|
5833
|
+
// src/runtime/RuntimeValidationController.ts
|
|
5834
|
+
var RUNTIME_VALIDATION_INTENTS = {
|
|
5835
|
+
getPolicy: "meta-runtime-validation-policy-get",
|
|
5836
|
+
setPolicy: "meta-runtime-validation-policy-set",
|
|
5837
|
+
replacePolicy: "meta-runtime-validation-policy-replace",
|
|
5838
|
+
clearPolicy: "meta-runtime-validation-policy-clear",
|
|
5839
|
+
listScopes: "meta-runtime-validation-scope-list",
|
|
5840
|
+
upsertScope: "meta-runtime-validation-scope-upsert",
|
|
5841
|
+
removeScope: "meta-runtime-validation-scope-remove",
|
|
5842
|
+
clearScopes: "meta-runtime-validation-scope-clear"
|
|
5843
|
+
};
|
|
5844
|
+
var RUNTIME_VALIDATION_SIGNALS = {
|
|
5845
|
+
setPolicyRequested: "meta.runtime_validation.policy_set_requested",
|
|
5846
|
+
replacePolicyRequested: "meta.runtime_validation.policy_replace_requested",
|
|
5847
|
+
clearPolicyRequested: "meta.runtime_validation.policy_clear_requested",
|
|
5848
|
+
upsertScopeRequested: "meta.runtime_validation.scope_upsert_requested",
|
|
5849
|
+
removeScopeRequested: "meta.runtime_validation.scope_remove_requested",
|
|
5850
|
+
clearScopesRequested: "meta.runtime_validation.scope_clear_requested",
|
|
5851
|
+
policyUpdated: "meta.runtime_validation.policy_updated",
|
|
5852
|
+
policyCleared: "meta.runtime_validation.policy_cleared",
|
|
5853
|
+
scopeUpserted: "meta.runtime_validation.scope_upserted",
|
|
5854
|
+
scopeRemoved: "meta.runtime_validation.scope_removed",
|
|
5855
|
+
scopesCleared: "meta.runtime_validation.scopes_cleared"
|
|
5856
|
+
};
|
|
5857
|
+
function normalizePolicyContext(ctx) {
|
|
5858
|
+
const source = ctx.policy && typeof ctx.policy === "object" && !Array.isArray(ctx.policy) ? ctx.policy : ctx;
|
|
5859
|
+
const policy = {};
|
|
5860
|
+
for (const key of [
|
|
5861
|
+
"metaInput",
|
|
5862
|
+
"metaOutput",
|
|
5863
|
+
"businessInput",
|
|
5864
|
+
"businessOutput",
|
|
5865
|
+
"warnOnMissingMetaInputSchema",
|
|
5866
|
+
"warnOnMissingMetaOutputSchema",
|
|
5867
|
+
"warnOnMissingBusinessInputSchema",
|
|
5868
|
+
"warnOnMissingBusinessOutputSchema"
|
|
5869
|
+
]) {
|
|
5870
|
+
if (source[key] !== void 0) {
|
|
5871
|
+
policy[key] = source[key];
|
|
5872
|
+
}
|
|
5873
|
+
}
|
|
5874
|
+
return policy;
|
|
5875
|
+
}
|
|
5876
|
+
function normalizeScopeContext(ctx) {
|
|
5877
|
+
const source = ctx.scope && typeof ctx.scope === "object" && !Array.isArray(ctx.scope) ? ctx.scope : ctx;
|
|
5878
|
+
return {
|
|
5879
|
+
id: source.id,
|
|
5880
|
+
active: source.active,
|
|
5881
|
+
startTaskNames: Array.isArray(source.startTaskNames) ? source.startTaskNames : void 0,
|
|
5882
|
+
startRoutineNames: Array.isArray(source.startRoutineNames) ? source.startRoutineNames : void 0,
|
|
5883
|
+
policy: source.policy && typeof source.policy === "object" ? normalizePolicyContext({ policy: source.policy }) : void 0
|
|
5884
|
+
};
|
|
5885
|
+
}
|
|
5886
|
+
var RuntimeValidationController = class _RuntimeValidationController {
|
|
5887
|
+
static get instance() {
|
|
5888
|
+
if (!this._instance) {
|
|
5889
|
+
this._instance = new _RuntimeValidationController();
|
|
5890
|
+
}
|
|
5891
|
+
return this._instance;
|
|
5892
|
+
}
|
|
5893
|
+
constructor() {
|
|
5894
|
+
CadenzaService.defineIntent({
|
|
5895
|
+
name: RUNTIME_VALIDATION_INTENTS.getPolicy,
|
|
5896
|
+
description: "Get the active runtime validation policy.",
|
|
5897
|
+
input: { type: "object" },
|
|
5898
|
+
output: { type: "object" }
|
|
5899
|
+
});
|
|
5900
|
+
CadenzaService.defineIntent({
|
|
5901
|
+
name: RUNTIME_VALIDATION_INTENTS.setPolicy,
|
|
5902
|
+
description: "Merge fields into the active runtime validation policy.",
|
|
5903
|
+
input: { type: "object" },
|
|
5904
|
+
output: { type: "object" }
|
|
5905
|
+
});
|
|
5906
|
+
CadenzaService.defineIntent({
|
|
5907
|
+
name: RUNTIME_VALIDATION_INTENTS.replacePolicy,
|
|
5908
|
+
description: "Replace the active runtime validation policy.",
|
|
5909
|
+
input: { type: "object" },
|
|
5910
|
+
output: { type: "object" }
|
|
5911
|
+
});
|
|
5912
|
+
CadenzaService.defineIntent({
|
|
5913
|
+
name: RUNTIME_VALIDATION_INTENTS.clearPolicy,
|
|
5914
|
+
description: "Clear the active runtime validation policy.",
|
|
5915
|
+
input: { type: "object" },
|
|
5916
|
+
output: { type: "object" }
|
|
5917
|
+
});
|
|
5918
|
+
CadenzaService.defineIntent({
|
|
5919
|
+
name: RUNTIME_VALIDATION_INTENTS.listScopes,
|
|
5920
|
+
description: "List active runtime validation scopes.",
|
|
5921
|
+
input: { type: "object" },
|
|
5922
|
+
output: { type: "object" }
|
|
5923
|
+
});
|
|
5924
|
+
CadenzaService.defineIntent({
|
|
5925
|
+
name: RUNTIME_VALIDATION_INTENTS.upsertScope,
|
|
5926
|
+
description: "Create or update a runtime validation scope for targeted subflow validation.",
|
|
5927
|
+
input: { type: "object" },
|
|
5928
|
+
output: { type: "object" }
|
|
5929
|
+
});
|
|
5930
|
+
CadenzaService.defineIntent({
|
|
5931
|
+
name: RUNTIME_VALIDATION_INTENTS.removeScope,
|
|
5932
|
+
description: "Remove a runtime validation scope by id.",
|
|
5933
|
+
input: { type: "object" },
|
|
5934
|
+
output: { type: "object" }
|
|
5935
|
+
});
|
|
5936
|
+
CadenzaService.defineIntent({
|
|
5937
|
+
name: RUNTIME_VALIDATION_INTENTS.clearScopes,
|
|
5938
|
+
description: "Clear all runtime validation scopes.",
|
|
5939
|
+
input: { type: "object" },
|
|
5940
|
+
output: { type: "object" }
|
|
5941
|
+
});
|
|
5942
|
+
CadenzaService.createMetaTask("Get runtime validation policy", () => {
|
|
5943
|
+
return {
|
|
5944
|
+
policy: CadenzaService.getRuntimeValidationPolicy()
|
|
5945
|
+
};
|
|
5946
|
+
}).respondsTo(RUNTIME_VALIDATION_INTENTS.getPolicy);
|
|
5947
|
+
CadenzaService.createMetaTask(
|
|
5948
|
+
"Set runtime validation policy",
|
|
5949
|
+
(ctx, emit) => {
|
|
5950
|
+
const policy = normalizePolicyContext(ctx);
|
|
5951
|
+
const nextPolicy = CadenzaService.setRuntimeValidationPolicy(policy);
|
|
5952
|
+
emit(RUNTIME_VALIDATION_SIGNALS.policyUpdated, {
|
|
5953
|
+
policy: nextPolicy
|
|
5954
|
+
});
|
|
5955
|
+
return {
|
|
5956
|
+
policy: nextPolicy
|
|
5957
|
+
};
|
|
5958
|
+
},
|
|
5959
|
+
"Merges runtime validation policy fields at runtime."
|
|
5960
|
+
).respondsTo(RUNTIME_VALIDATION_INTENTS.setPolicy).doOn(RUNTIME_VALIDATION_SIGNALS.setPolicyRequested);
|
|
5961
|
+
CadenzaService.createMetaTask(
|
|
5962
|
+
"Replace runtime validation policy",
|
|
5963
|
+
(ctx, emit) => {
|
|
5964
|
+
const policy = normalizePolicyContext(ctx);
|
|
5965
|
+
const nextPolicy = CadenzaService.replaceRuntimeValidationPolicy(policy);
|
|
5966
|
+
emit(RUNTIME_VALIDATION_SIGNALS.policyUpdated, {
|
|
5967
|
+
policy: nextPolicy
|
|
5968
|
+
});
|
|
5969
|
+
return {
|
|
5970
|
+
policy: nextPolicy
|
|
5971
|
+
};
|
|
5972
|
+
},
|
|
5973
|
+
"Replaces runtime validation policy fields at runtime."
|
|
5974
|
+
).respondsTo(RUNTIME_VALIDATION_INTENTS.replacePolicy).doOn(RUNTIME_VALIDATION_SIGNALS.replacePolicyRequested);
|
|
5975
|
+
CadenzaService.createMetaTask(
|
|
5976
|
+
"Clear runtime validation policy",
|
|
5977
|
+
(_ctx, emit) => {
|
|
5978
|
+
CadenzaService.clearRuntimeValidationPolicy();
|
|
5979
|
+
emit(RUNTIME_VALIDATION_SIGNALS.policyCleared, {});
|
|
5980
|
+
return {
|
|
5981
|
+
policy: CadenzaService.getRuntimeValidationPolicy()
|
|
5982
|
+
};
|
|
5983
|
+
},
|
|
5984
|
+
"Clears the runtime validation policy."
|
|
5985
|
+
).respondsTo(RUNTIME_VALIDATION_INTENTS.clearPolicy).doOn(RUNTIME_VALIDATION_SIGNALS.clearPolicyRequested);
|
|
5986
|
+
CadenzaService.createMetaTask("List runtime validation scopes", () => {
|
|
5987
|
+
return {
|
|
5988
|
+
scopes: CadenzaService.getRuntimeValidationScopes()
|
|
5989
|
+
};
|
|
5990
|
+
}).respondsTo(RUNTIME_VALIDATION_INTENTS.listScopes);
|
|
5991
|
+
CadenzaService.createMetaTask(
|
|
5992
|
+
"Upsert runtime validation scope",
|
|
5993
|
+
(ctx, emit) => {
|
|
5994
|
+
const scope = normalizeScopeContext(ctx);
|
|
5995
|
+
const nextScope = CadenzaService.upsertRuntimeValidationScope(scope);
|
|
5996
|
+
emit(RUNTIME_VALIDATION_SIGNALS.scopeUpserted, {
|
|
5997
|
+
scope: nextScope
|
|
5998
|
+
});
|
|
5999
|
+
return {
|
|
6000
|
+
scope: nextScope
|
|
6001
|
+
};
|
|
6002
|
+
},
|
|
6003
|
+
"Upserts a runtime validation scope for targeted debugging."
|
|
6004
|
+
).respondsTo(RUNTIME_VALIDATION_INTENTS.upsertScope).doOn(RUNTIME_VALIDATION_SIGNALS.upsertScopeRequested);
|
|
6005
|
+
CadenzaService.createMetaTask(
|
|
6006
|
+
"Remove runtime validation scope",
|
|
6007
|
+
(ctx, emit) => {
|
|
6008
|
+
if (!ctx.id) {
|
|
6009
|
+
throw new Error("Runtime validation scope id is required");
|
|
6010
|
+
}
|
|
6011
|
+
CadenzaService.removeRuntimeValidationScope(ctx.id);
|
|
6012
|
+
emit(RUNTIME_VALIDATION_SIGNALS.scopeRemoved, {
|
|
6013
|
+
id: ctx.id
|
|
6014
|
+
});
|
|
6015
|
+
return {
|
|
6016
|
+
id: ctx.id,
|
|
6017
|
+
scopes: CadenzaService.getRuntimeValidationScopes()
|
|
6018
|
+
};
|
|
6019
|
+
},
|
|
6020
|
+
"Removes a runtime validation scope."
|
|
6021
|
+
).respondsTo(RUNTIME_VALIDATION_INTENTS.removeScope).doOn(RUNTIME_VALIDATION_SIGNALS.removeScopeRequested);
|
|
6022
|
+
CadenzaService.createMetaTask(
|
|
6023
|
+
"Clear runtime validation scopes",
|
|
6024
|
+
(_ctx, emit) => {
|
|
6025
|
+
CadenzaService.clearRuntimeValidationScopes();
|
|
6026
|
+
emit(RUNTIME_VALIDATION_SIGNALS.scopesCleared, {});
|
|
6027
|
+
return {
|
|
6028
|
+
scopes: CadenzaService.getRuntimeValidationScopes()
|
|
6029
|
+
};
|
|
6030
|
+
},
|
|
6031
|
+
"Clears all runtime validation scopes."
|
|
6032
|
+
).respondsTo(RUNTIME_VALIDATION_INTENTS.clearScopes).doOn(RUNTIME_VALIDATION_SIGNALS.clearScopesRequested);
|
|
6033
|
+
}
|
|
6034
|
+
};
|
|
6035
|
+
|
|
5864
6036
|
// src/graph/controllers/registerActorSessionPersistence.ts
|
|
5865
6037
|
import { META_ACTOR_SESSION_STATE_PERSIST_INTENT } from "@cadenza.io/core";
|
|
5866
6038
|
function registerActorSessionPersistenceTasks() {
|
|
@@ -6477,7 +6649,6 @@ function buildSyncExecutionEnvelope(ctx, queryData) {
|
|
|
6477
6649
|
}
|
|
6478
6650
|
function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, options = {}) {
|
|
6479
6651
|
const localInsertTask = CadenzaService.getLocalCadenzaDBInsertTask(tableName);
|
|
6480
|
-
const debugTable = shouldDebugSyncTable(tableName);
|
|
6481
6652
|
if (!localInsertTask && !isCadenzaDBReady) {
|
|
6482
6653
|
return void 0;
|
|
6483
6654
|
}
|
|
@@ -6490,16 +6661,6 @@ function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, opti
|
|
|
6490
6661
|
register: false,
|
|
6491
6662
|
isHidden: true
|
|
6492
6663
|
});
|
|
6493
|
-
if (debugTable) {
|
|
6494
|
-
logSyncDebug("insert_task_resolved", {
|
|
6495
|
-
tableName,
|
|
6496
|
-
localInsertTaskName: localInsertTask?.name ?? null,
|
|
6497
|
-
remoteInsertTaskName: isCadenzaDBReady ? targetTask.name : null,
|
|
6498
|
-
targetTaskName: targetTask.name,
|
|
6499
|
-
queryData,
|
|
6500
|
-
options
|
|
6501
|
-
});
|
|
6502
|
-
}
|
|
6503
6664
|
const prepareExecutionTask = CadenzaService.createMetaTask(
|
|
6504
6665
|
`Prepare graph sync insert for ${tableName}`,
|
|
6505
6666
|
(ctx) => {
|
|
@@ -6510,12 +6671,12 @@ function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, opti
|
|
|
6510
6671
|
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) {
|
|
6511
6672
|
console.warn(
|
|
6512
6673
|
"[CADENZA_SYNC_EMPTY_INSERT]",
|
|
6513
|
-
|
|
6674
|
+
{
|
|
6514
6675
|
tableName,
|
|
6515
6676
|
queryData: originalQueryData,
|
|
6516
6677
|
ctx,
|
|
6517
6678
|
joinedContexts: Array.isArray(ctx.joinedContexts) ? ctx.joinedContexts : []
|
|
6518
|
-
}
|
|
6679
|
+
}
|
|
6519
6680
|
);
|
|
6520
6681
|
}
|
|
6521
6682
|
return buildSyncExecutionEnvelope(
|
|
@@ -6529,37 +6690,6 @@ function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, opti
|
|
|
6529
6690
|
isHidden: true
|
|
6530
6691
|
}
|
|
6531
6692
|
);
|
|
6532
|
-
if (debugTable) {
|
|
6533
|
-
prepareExecutionTask.then(
|
|
6534
|
-
CadenzaService.createMetaTask(
|
|
6535
|
-
`Log prepared graph sync insert execution for ${tableName}`,
|
|
6536
|
-
(ctx) => {
|
|
6537
|
-
if (tableName === "task") {
|
|
6538
|
-
if (!shouldDebugTaskSyncPayload(ctx)) {
|
|
6539
|
-
return ctx;
|
|
6540
|
-
}
|
|
6541
|
-
logSyncDebug("insert_prepare", {
|
|
6542
|
-
tableName,
|
|
6543
|
-
targetTaskName: targetTask.name,
|
|
6544
|
-
payload: buildTaskSyncDebugPayload(ctx)
|
|
6545
|
-
});
|
|
6546
|
-
return ctx;
|
|
6547
|
-
}
|
|
6548
|
-
logSyncDebug("insert_prepare", {
|
|
6549
|
-
tableName,
|
|
6550
|
-
targetTaskName: targetTask.name,
|
|
6551
|
-
ctx
|
|
6552
|
-
});
|
|
6553
|
-
return ctx;
|
|
6554
|
-
},
|
|
6555
|
-
`Logs prepared ${tableName} sync insert payloads.`,
|
|
6556
|
-
{
|
|
6557
|
-
register: false,
|
|
6558
|
-
isHidden: true
|
|
6559
|
-
}
|
|
6560
|
-
)
|
|
6561
|
-
);
|
|
6562
|
-
}
|
|
6563
6693
|
const finalizeExecutionTask = CadenzaService.createMetaTask(
|
|
6564
6694
|
`Finalize graph sync insert for ${tableName}`,
|
|
6565
6695
|
(ctx) => {
|
|
@@ -6570,25 +6700,6 @@ function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, opti
|
|
|
6570
6700
|
...ctx,
|
|
6571
6701
|
queryData: ctx.queryData && typeof ctx.queryData === "object" ? ctx.queryData : originalQueryData
|
|
6572
6702
|
};
|
|
6573
|
-
if (debugTable) {
|
|
6574
|
-
if (tableName === "task") {
|
|
6575
|
-
if (shouldDebugTaskSyncPayload(normalizedContext)) {
|
|
6576
|
-
logSyncDebug("insert_finalize", {
|
|
6577
|
-
tableName,
|
|
6578
|
-
targetTaskName: targetTask.name,
|
|
6579
|
-
success: didSyncInsertSucceed(normalizedContext),
|
|
6580
|
-
payload: buildTaskSyncDebugPayload(normalizedContext)
|
|
6581
|
-
});
|
|
6582
|
-
}
|
|
6583
|
-
} else {
|
|
6584
|
-
logSyncDebug("insert_finalize", {
|
|
6585
|
-
tableName,
|
|
6586
|
-
targetTaskName: targetTask.name,
|
|
6587
|
-
success: didSyncInsertSucceed(normalizedContext),
|
|
6588
|
-
ctx: normalizedContext
|
|
6589
|
-
});
|
|
6590
|
-
}
|
|
6591
|
-
}
|
|
6592
6703
|
return normalizedContext;
|
|
6593
6704
|
},
|
|
6594
6705
|
`Finalizes ${tableName} graph-sync insert execution after the authority task finishes.`,
|
|
@@ -6623,139 +6734,6 @@ var AUTHORITY_QUERY_RESULT_KEYS = {
|
|
|
6623
6734
|
intent_registry: "intentRegistrys"
|
|
6624
6735
|
};
|
|
6625
6736
|
var EARLY_SYNC_REQUEST_DELAYS_MS = [2e3, 1e4, 3e4];
|
|
6626
|
-
var SYNC_DEBUG_PREFIX = "[CADENZA_SYNC_DEBUG]";
|
|
6627
|
-
var SYNC_DEBUG_ENABLED = typeof process !== "undefined" && typeof process.env === "object" && process.env.CADENZA_SYNC_DEBUG === "true";
|
|
6628
|
-
var SYNC_DEBUG_TABLES = /* @__PURE__ */ new Set(["intent_to_task_map", "task"]);
|
|
6629
|
-
var SYNC_DEBUG_TASK_NAMES = /* @__PURE__ */ new Set([
|
|
6630
|
-
"Query service_instance",
|
|
6631
|
-
"Query service_instance_transport",
|
|
6632
|
-
"Query intent_to_task_map",
|
|
6633
|
-
"Query signal_to_task_map",
|
|
6634
|
-
"Prepare for signal sync",
|
|
6635
|
-
"Compile sync data and broadcast",
|
|
6636
|
-
"Forward service instance sync",
|
|
6637
|
-
"Forward service transport sync",
|
|
6638
|
-
"Forward intent to task map sync",
|
|
6639
|
-
"Forward signal to task map sync",
|
|
6640
|
-
"Normalize telemetry ingest payload",
|
|
6641
|
-
"Get telemetry session state",
|
|
6642
|
-
"Normalize anomaly detect input",
|
|
6643
|
-
"Read anomaly runtime session",
|
|
6644
|
-
"Normalize prediction compute input",
|
|
6645
|
-
"Normalize telemetry insert queryData"
|
|
6646
|
-
]);
|
|
6647
|
-
var SYNC_DEBUG_ROUTINE_NAMES = /* @__PURE__ */ new Set(["Sync services"]);
|
|
6648
|
-
var SYNC_DEBUG_INTENT_NAMES = /* @__PURE__ */ new Set([
|
|
6649
|
-
"meta-service-registry-full-sync",
|
|
6650
|
-
"runner-traffic-runtime-get",
|
|
6651
|
-
"iot-telemetry-ingest",
|
|
6652
|
-
"iot-telemetry-session-get",
|
|
6653
|
-
"iot-anomaly-detect",
|
|
6654
|
-
"iot-anomaly-runtime-get",
|
|
6655
|
-
"iot-prediction-compute",
|
|
6656
|
-
"iot-db-telemetry-insert",
|
|
6657
|
-
"query-pg-cadenza-db-postgres-actor-service_instance",
|
|
6658
|
-
"query-pg-cadenza-db-postgres-actor-service_instance_transport",
|
|
6659
|
-
"query-pg-cadenza-db-postgres-actor-intent_to_task_map",
|
|
6660
|
-
"query-pg-cadenza-db-postgres-actor-signal_to_task_map"
|
|
6661
|
-
]);
|
|
6662
|
-
function shouldDebugSyncTable(tableName) {
|
|
6663
|
-
return SYNC_DEBUG_ENABLED && SYNC_DEBUG_TABLES.has(tableName);
|
|
6664
|
-
}
|
|
6665
|
-
function shouldDebugSyncTaskName(taskName) {
|
|
6666
|
-
return SYNC_DEBUG_ENABLED && typeof taskName === "string" && SYNC_DEBUG_TASK_NAMES.has(taskName);
|
|
6667
|
-
}
|
|
6668
|
-
function shouldDebugSyncRoutineName(routineName) {
|
|
6669
|
-
return SYNC_DEBUG_ENABLED && typeof routineName === "string" && SYNC_DEBUG_ROUTINE_NAMES.has(routineName);
|
|
6670
|
-
}
|
|
6671
|
-
function shouldDebugSyncIntentName(intentName) {
|
|
6672
|
-
return SYNC_DEBUG_ENABLED && typeof intentName === "string" && SYNC_DEBUG_INTENT_NAMES.has(intentName);
|
|
6673
|
-
}
|
|
6674
|
-
function summarizeSyncDebugValue(value, depth = 0) {
|
|
6675
|
-
if (value === null || value === void 0) {
|
|
6676
|
-
return value;
|
|
6677
|
-
}
|
|
6678
|
-
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
|
|
6679
|
-
return value;
|
|
6680
|
-
}
|
|
6681
|
-
if (value instanceof Set) {
|
|
6682
|
-
return {
|
|
6683
|
-
__type: "Set",
|
|
6684
|
-
size: value.size,
|
|
6685
|
-
values: Array.from(value).slice(0, 8).map((item) => summarizeSyncDebugValue(item, depth + 1))
|
|
6686
|
-
};
|
|
6687
|
-
}
|
|
6688
|
-
if (value instanceof Map) {
|
|
6689
|
-
return {
|
|
6690
|
-
__type: "Map",
|
|
6691
|
-
size: value.size
|
|
6692
|
-
};
|
|
6693
|
-
}
|
|
6694
|
-
if (Array.isArray(value)) {
|
|
6695
|
-
return {
|
|
6696
|
-
__type: "Array",
|
|
6697
|
-
length: value.length,
|
|
6698
|
-
items: value.slice(0, 5).map((item) => summarizeSyncDebugValue(item, depth + 1))
|
|
6699
|
-
};
|
|
6700
|
-
}
|
|
6701
|
-
if (typeof value === "object") {
|
|
6702
|
-
if (depth >= 2) {
|
|
6703
|
-
return "[object]";
|
|
6704
|
-
}
|
|
6705
|
-
const output = {};
|
|
6706
|
-
const entries = Object.entries(value).filter(
|
|
6707
|
-
([key]) => ![
|
|
6708
|
-
"functionString",
|
|
6709
|
-
"tagIdGetter",
|
|
6710
|
-
"__functionString",
|
|
6711
|
-
"__getTagCallback",
|
|
6712
|
-
"joinedContexts",
|
|
6713
|
-
"task",
|
|
6714
|
-
"taskInstance",
|
|
6715
|
-
"tasks"
|
|
6716
|
-
].includes(key)
|
|
6717
|
-
).slice(0, 12);
|
|
6718
|
-
for (const [key, nestedValue] of entries) {
|
|
6719
|
-
output[key] = summarizeSyncDebugValue(nestedValue, depth + 1);
|
|
6720
|
-
}
|
|
6721
|
-
return output;
|
|
6722
|
-
}
|
|
6723
|
-
return String(value);
|
|
6724
|
-
}
|
|
6725
|
-
function logSyncDebug(event, payload) {
|
|
6726
|
-
console.log(`${SYNC_DEBUG_PREFIX} ${event}`, summarizeSyncDebugValue(payload));
|
|
6727
|
-
}
|
|
6728
|
-
function buildTaskSyncDebugPayload(ctx) {
|
|
6729
|
-
const data = ctx.data && typeof ctx.data === "object" ? ctx.data : {};
|
|
6730
|
-
const queryData = ctx.queryData && typeof ctx.queryData === "object" ? ctx.queryData : {};
|
|
6731
|
-
const queryDataData = queryData.data && typeof queryData.data === "object" ? queryData.data : {};
|
|
6732
|
-
const taskPayload = Object.keys(queryDataData).length > 0 ? queryDataData : data;
|
|
6733
|
-
const functionString = typeof taskPayload.functionString === "string" ? taskPayload.functionString : typeof taskPayload.function_string === "string" ? taskPayload.function_string : void 0;
|
|
6734
|
-
const tagIdGetter = typeof taskPayload.tagIdGetter === "string" ? taskPayload.tagIdGetter : typeof taskPayload.tag_id_getter === "string" ? taskPayload.tag_id_getter : void 0;
|
|
6735
|
-
const signals = taskPayload.signals && typeof taskPayload.signals === "object" ? taskPayload.signals : {};
|
|
6736
|
-
const intents = taskPayload.intents && typeof taskPayload.intents === "object" ? taskPayload.intents : {};
|
|
6737
|
-
return {
|
|
6738
|
-
taskName: taskPayload.name ?? taskPayload.taskName ?? taskPayload.task_name ?? ctx.__taskName ?? null,
|
|
6739
|
-
serviceName: taskPayload.service_name ?? taskPayload.serviceName ?? ctx.__syncServiceName ?? null,
|
|
6740
|
-
functionStringLength: functionString?.length ?? null,
|
|
6741
|
-
tagIdGetterLength: tagIdGetter?.length ?? null,
|
|
6742
|
-
isMeta: taskPayload.isMeta ?? taskPayload.is_meta ?? null,
|
|
6743
|
-
isSubMeta: taskPayload.isSubMeta ?? taskPayload.is_sub_meta ?? null,
|
|
6744
|
-
isHidden: taskPayload.isHidden ?? taskPayload.is_hidden ?? null,
|
|
6745
|
-
signalsEmitsCount: Array.isArray(signals.emits) ? signals.emits.length : null,
|
|
6746
|
-
signalsObservedCount: Array.isArray(signals.observed) ? signals.observed.length : null,
|
|
6747
|
-
intentHandlesCount: Array.isArray(intents.handles) ? intents.handles.length : null,
|
|
6748
|
-
intentInquiresCount: Array.isArray(intents.inquires) ? intents.inquires.length : null,
|
|
6749
|
-
rowCount: ctx.rowCount ?? null,
|
|
6750
|
-
errored: ctx.errored ?? false,
|
|
6751
|
-
success: ctx.__success ?? null,
|
|
6752
|
-
error: ctx.__error ?? null
|
|
6753
|
-
};
|
|
6754
|
-
}
|
|
6755
|
-
function shouldDebugTaskSyncPayload(ctx) {
|
|
6756
|
-
const payload = buildTaskSyncDebugPayload(ctx);
|
|
6757
|
-
return shouldDebugSyncTaskName(payload.taskName);
|
|
6758
|
-
}
|
|
6759
6737
|
function resolveSyncQueryRows(ctx, tableName) {
|
|
6760
6738
|
const resultKey = AUTHORITY_QUERY_RESULT_KEYS[tableName];
|
|
6761
6739
|
const rows = ctx?.[resultKey];
|
|
@@ -7202,16 +7180,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
7202
7180
|
if (!nextTask?.registered) {
|
|
7203
7181
|
continue;
|
|
7204
7182
|
}
|
|
7205
|
-
if (shouldDebugSyncRoutineName(routine.name) || shouldDebugSyncTaskName(nextTask.name)) {
|
|
7206
|
-
logSyncDebug("task_to_routine_split", {
|
|
7207
|
-
routineName: routine.name,
|
|
7208
|
-
routineVersion: routine.version,
|
|
7209
|
-
taskName: nextTask.name,
|
|
7210
|
-
taskVersion: nextTask.version,
|
|
7211
|
-
serviceName: serviceName2,
|
|
7212
|
-
registered: nextTask.registered
|
|
7213
|
-
});
|
|
7214
|
-
}
|
|
7215
7183
|
yield {
|
|
7216
7184
|
__syncing: ctx.__syncing,
|
|
7217
7185
|
data: {
|
|
@@ -7357,20 +7325,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
7357
7325
|
if (task.registered) continue;
|
|
7358
7326
|
const { __functionString, __getTagCallback } = task.export();
|
|
7359
7327
|
this.tasksSynced = false;
|
|
7360
|
-
if (shouldDebugSyncTaskName(task.name)) {
|
|
7361
|
-
logSyncDebug("task_registration_split", {
|
|
7362
|
-
taskName: task.name,
|
|
7363
|
-
taskVersion: task.version,
|
|
7364
|
-
serviceName: serviceName2,
|
|
7365
|
-
register: task.register,
|
|
7366
|
-
registered: task.registered,
|
|
7367
|
-
hidden: task.hidden,
|
|
7368
|
-
exportFunctionLength: __functionString?.length ?? null,
|
|
7369
|
-
exportTagGetterLength: __getTagCallback?.length ?? null,
|
|
7370
|
-
observedSignals: Array.from(task.observedSignals),
|
|
7371
|
-
handledIntents: Array.from(task.handlesIntents)
|
|
7372
|
-
});
|
|
7373
|
-
}
|
|
7374
7328
|
yield {
|
|
7375
7329
|
__syncing: ctx.__syncing,
|
|
7376
7330
|
data: {
|
|
@@ -7425,13 +7379,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
7425
7379
|
const registerTaskTask = CadenzaService.createMetaTask(
|
|
7426
7380
|
"Record registration",
|
|
7427
7381
|
(ctx, emit) => {
|
|
7428
|
-
if (shouldDebugSyncTaskName(ctx.__taskName)) {
|
|
7429
|
-
logSyncDebug("task_registration_result", {
|
|
7430
|
-
taskName: ctx.__taskName,
|
|
7431
|
-
success: didSyncInsertSucceed(ctx),
|
|
7432
|
-
ctx
|
|
7433
|
-
});
|
|
7434
|
-
}
|
|
7435
7382
|
if (!didSyncInsertSucceed(ctx)) {
|
|
7436
7383
|
return;
|
|
7437
7384
|
}
|
|
@@ -7457,16 +7404,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
7457
7404
|
"Prepare created task for immediate sync",
|
|
7458
7405
|
(ctx) => {
|
|
7459
7406
|
const task = ctx.taskInstance ?? (ctx.data?.name ? CadenzaService.get(String(ctx.data.name)) : void 0);
|
|
7460
|
-
if (shouldDebugSyncTaskName(task?.name ?? ctx?.data?.name)) {
|
|
7461
|
-
logSyncDebug("task_created_for_immediate_sync", {
|
|
7462
|
-
incomingTaskName: ctx?.data?.name ?? null,
|
|
7463
|
-
resolvedTaskName: task?.name ?? null,
|
|
7464
|
-
exists: Boolean(task),
|
|
7465
|
-
hidden: task?.hidden ?? null,
|
|
7466
|
-
register: task?.register ?? null,
|
|
7467
|
-
registered: task?.registered ?? null
|
|
7468
|
-
});
|
|
7469
|
-
}
|
|
7470
7407
|
if (!task || task.hidden || !task.register || task.registered) {
|
|
7471
7408
|
return false;
|
|
7472
7409
|
}
|
|
@@ -7653,17 +7590,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
7653
7590
|
if (!isGlobal) {
|
|
7654
7591
|
continue;
|
|
7655
7592
|
}
|
|
7656
|
-
if (shouldDebugSyncTaskName(task.name)) {
|
|
7657
|
-
logSyncDebug("signal_to_task_map_split", {
|
|
7658
|
-
taskName: task.name,
|
|
7659
|
-
signalName: _signal,
|
|
7660
|
-
rawSignal: signal,
|
|
7661
|
-
serviceName: serviceName2,
|
|
7662
|
-
observerRegistered: CadenzaService.signalBroker.signalObservers?.get(
|
|
7663
|
-
_signal
|
|
7664
|
-
)?.registered
|
|
7665
|
-
});
|
|
7666
|
-
}
|
|
7667
7593
|
yield {
|
|
7668
7594
|
__syncing: ctx.__syncing,
|
|
7669
7595
|
data: {
|
|
@@ -7774,21 +7700,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
7774
7700
|
}
|
|
7775
7701
|
task.__registeredIntents = task.__registeredIntents ?? /* @__PURE__ */ new Set();
|
|
7776
7702
|
task.__invalidMetaIntentWarnings = task.__invalidMetaIntentWarnings ?? /* @__PURE__ */ new Set();
|
|
7777
|
-
const shouldDebugTask = shouldDebugSyncTaskName(task.name);
|
|
7778
|
-
if (shouldDebugTask) {
|
|
7779
|
-
logSyncDebug("intent_map_task_state", {
|
|
7780
|
-
taskName: task.name,
|
|
7781
|
-
taskVersion: task.version,
|
|
7782
|
-
serviceName: serviceName2,
|
|
7783
|
-
registered: task.registered,
|
|
7784
|
-
register: task.register,
|
|
7785
|
-
hidden: task.hidden,
|
|
7786
|
-
handledIntents: Array.from(task.handlesIntents),
|
|
7787
|
-
registeredIntents: Array.from(task.__registeredIntents),
|
|
7788
|
-
tasksSynced: this.tasksSynced,
|
|
7789
|
-
intentsSynced: this.intentsSynced
|
|
7790
|
-
});
|
|
7791
|
-
}
|
|
7792
7703
|
let emittedCount = 0;
|
|
7793
7704
|
for (const intent of task.handlesIntents) {
|
|
7794
7705
|
if (task.__registeredIntents.has(intent)) continue;
|
|
@@ -7814,15 +7725,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
7814
7725
|
if (!intentDefinition) {
|
|
7815
7726
|
continue;
|
|
7816
7727
|
}
|
|
7817
|
-
if (shouldDebugSyncTaskName(task.name) || shouldDebugSyncIntentName(intent)) {
|
|
7818
|
-
logSyncDebug("intent_to_task_map_split", {
|
|
7819
|
-
taskName: task.name,
|
|
7820
|
-
taskVersion: task.version,
|
|
7821
|
-
intentName: intent,
|
|
7822
|
-
serviceName: serviceName2,
|
|
7823
|
-
intentDefinition
|
|
7824
|
-
});
|
|
7825
|
-
}
|
|
7826
7728
|
yield {
|
|
7827
7729
|
__syncing: ctx.__syncing,
|
|
7828
7730
|
data: {
|
|
@@ -7843,15 +7745,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
7843
7745
|
};
|
|
7844
7746
|
emittedCount += 1;
|
|
7845
7747
|
}
|
|
7846
|
-
if (shouldDebugTask && emittedCount === 0) {
|
|
7847
|
-
logSyncDebug("intent_map_task_noop", {
|
|
7848
|
-
taskName: task.name,
|
|
7849
|
-
taskVersion: task.version,
|
|
7850
|
-
serviceName: serviceName2,
|
|
7851
|
-
handledIntents: Array.from(task.handlesIntents),
|
|
7852
|
-
registeredIntents: Array.from(task.__registeredIntents)
|
|
7853
|
-
});
|
|
7854
|
-
}
|
|
7855
7748
|
return emittedCount > 0;
|
|
7856
7749
|
}.bind(this)
|
|
7857
7750
|
);
|
|
@@ -7861,13 +7754,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
7861
7754
|
if (!ctx.__intentDefinition || !ctx.__intentMapData) {
|
|
7862
7755
|
return false;
|
|
7863
7756
|
}
|
|
7864
|
-
if (shouldDebugSyncTaskName(ctx.__taskName) || shouldDebugSyncIntentName(ctx.__intent)) {
|
|
7865
|
-
logSyncDebug("intent_definition_prepare", {
|
|
7866
|
-
taskName: ctx.__taskName,
|
|
7867
|
-
intentName: ctx.__intent,
|
|
7868
|
-
intentDefinition: ctx.__intentDefinition
|
|
7869
|
-
});
|
|
7870
|
-
}
|
|
7871
7757
|
return {
|
|
7872
7758
|
...ctx,
|
|
7873
7759
|
data: ctx.__intentDefinition
|
|
@@ -7880,13 +7766,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
7880
7766
|
if (!ctx.__intentMapData) {
|
|
7881
7767
|
return false;
|
|
7882
7768
|
}
|
|
7883
|
-
if (shouldDebugSyncTaskName(ctx.__taskName) || shouldDebugSyncIntentName(ctx.__intent)) {
|
|
7884
|
-
logSyncDebug("intent_map_payload_restore", {
|
|
7885
|
-
taskName: ctx.__taskName,
|
|
7886
|
-
intentName: ctx.__intent,
|
|
7887
|
-
intentMapData: ctx.__intentMapData
|
|
7888
|
-
});
|
|
7889
|
-
}
|
|
7890
7769
|
return {
|
|
7891
7770
|
...ctx,
|
|
7892
7771
|
data: ctx.__intentMapData
|
|
@@ -8708,6 +8587,13 @@ var CadenzaService = class {
|
|
|
8708
8587
|
if (this.isBootstrapped) return;
|
|
8709
8588
|
this.isBootstrapped = true;
|
|
8710
8589
|
Cadenza.bootstrap();
|
|
8590
|
+
Cadenza.setRuntimeInquiryDelegate(
|
|
8591
|
+
(inquiry, context, options) => this.inquire(
|
|
8592
|
+
inquiry,
|
|
8593
|
+
context,
|
|
8594
|
+
options ?? {}
|
|
8595
|
+
)
|
|
8596
|
+
);
|
|
8711
8597
|
this.signalBroker = Cadenza.signalBroker;
|
|
8712
8598
|
this.inquiryBroker = Cadenza.inquiryBroker;
|
|
8713
8599
|
this.runner = Cadenza.runner;
|
|
@@ -8716,7 +8602,7 @@ var CadenzaService = class {
|
|
|
8716
8602
|
this.serviceRegistry = ServiceRegistry.instance;
|
|
8717
8603
|
RestController.instance;
|
|
8718
8604
|
SocketController.instance;
|
|
8719
|
-
|
|
8605
|
+
RuntimeValidationController.instance;
|
|
8720
8606
|
}
|
|
8721
8607
|
static ensureTransportControllers(isFrontend) {
|
|
8722
8608
|
if (!isFrontend) {
|
|
@@ -8855,6 +8741,38 @@ var CadenzaService = class {
|
|
|
8855
8741
|
this.inquiryBroker?.addIntent(intent);
|
|
8856
8742
|
return intent;
|
|
8857
8743
|
}
|
|
8744
|
+
static getRuntimeValidationPolicy() {
|
|
8745
|
+
this.bootstrap();
|
|
8746
|
+
return Cadenza.getRuntimeValidationPolicy();
|
|
8747
|
+
}
|
|
8748
|
+
static setRuntimeValidationPolicy(policy = {}) {
|
|
8749
|
+
this.bootstrap();
|
|
8750
|
+
return Cadenza.setRuntimeValidationPolicy(policy);
|
|
8751
|
+
}
|
|
8752
|
+
static replaceRuntimeValidationPolicy(policy = {}) {
|
|
8753
|
+
this.bootstrap();
|
|
8754
|
+
return Cadenza.replaceRuntimeValidationPolicy(policy);
|
|
8755
|
+
}
|
|
8756
|
+
static clearRuntimeValidationPolicy() {
|
|
8757
|
+
this.bootstrap();
|
|
8758
|
+
Cadenza.clearRuntimeValidationPolicy();
|
|
8759
|
+
}
|
|
8760
|
+
static getRuntimeValidationScopes() {
|
|
8761
|
+
this.bootstrap();
|
|
8762
|
+
return Cadenza.getRuntimeValidationScopes();
|
|
8763
|
+
}
|
|
8764
|
+
static upsertRuntimeValidationScope(scope) {
|
|
8765
|
+
this.bootstrap();
|
|
8766
|
+
return Cadenza.upsertRuntimeValidationScope(scope);
|
|
8767
|
+
}
|
|
8768
|
+
static removeRuntimeValidationScope(id) {
|
|
8769
|
+
this.bootstrap();
|
|
8770
|
+
Cadenza.removeRuntimeValidationScope(id);
|
|
8771
|
+
}
|
|
8772
|
+
static clearRuntimeValidationScopes() {
|
|
8773
|
+
this.bootstrap();
|
|
8774
|
+
Cadenza.clearRuntimeValidationScopes();
|
|
8775
|
+
}
|
|
8858
8776
|
static getInquiryResponderDescriptor(task) {
|
|
8859
8777
|
return this.serviceRegistry.getInquiryResponderDescriptor(task);
|
|
8860
8778
|
}
|
|
@@ -9615,7 +9533,6 @@ var CadenzaService = class {
|
|
|
9615
9533
|
}
|
|
9616
9534
|
});
|
|
9617
9535
|
});
|
|
9618
|
-
console.log("Creating service...");
|
|
9619
9536
|
const initContext = {
|
|
9620
9537
|
data: {
|
|
9621
9538
|
name: serviceName,
|
|
@@ -9648,10 +9565,13 @@ var CadenzaService = class {
|
|
|
9648
9565
|
}).doOn("meta.fetch.handshake_complete");
|
|
9649
9566
|
} else {
|
|
9650
9567
|
this.emit("meta.create_service_requested", initContext);
|
|
9651
|
-
this.createMetaTask("Create signal transmission for sync", (ctx) => {
|
|
9652
|
-
|
|
9653
|
-
"
|
|
9654
|
-
|
|
9568
|
+
this.createMetaTask("Create signal transmission for sync", (ctx, emit) => {
|
|
9569
|
+
emit(
|
|
9570
|
+
"meta.service_registry.gathered_sync_transmission_reconcile_requested",
|
|
9571
|
+
{
|
|
9572
|
+
serviceName: ctx.serviceName,
|
|
9573
|
+
__reason: "handshake"
|
|
9574
|
+
}
|
|
9655
9575
|
);
|
|
9656
9576
|
}).doOn("meta.rest.handshake", "meta.socket.handshake");
|
|
9657
9577
|
}
|
|
@@ -10646,6 +10566,8 @@ export {
|
|
|
10646
10566
|
EphemeralTask2 as EphemeralTask,
|
|
10647
10567
|
GraphMetadataController,
|
|
10648
10568
|
GraphRoutine2 as GraphRoutine,
|
|
10569
|
+
RUNTIME_VALIDATION_INTENTS,
|
|
10570
|
+
RUNTIME_VALIDATION_SIGNALS,
|
|
10649
10571
|
RestController,
|
|
10650
10572
|
ServiceRegistry,
|
|
10651
10573
|
SignalController,
|