@cadenza.io/service 2.17.79 → 2.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/index.js +419 -497
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/index.mjs +419 -497
- package/dist/browser/index.mjs.map +1 -1
- package/dist/index.d.mts +40 -3
- package/dist/index.d.ts +40 -3
- package/dist/index.js +421 -497
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +419 -497
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.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: uuid8,
|
|
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, uuid8, 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();
|
|
@@ -5372,10 +5337,14 @@ var SocketController = class _SocketController {
|
|
|
5372
5337
|
const communicationTypes = this.normalizeCommunicationTypes(
|
|
5373
5338
|
input.communicationTypes
|
|
5374
5339
|
);
|
|
5340
|
+
const transportProtocols = Array.isArray(input.transportProtocols) ? input.transportProtocols.map((entry) => String(entry)) : [];
|
|
5375
5341
|
const serviceName = String(input.serviceName ?? "");
|
|
5376
5342
|
const serviceTransportId = String(input.serviceTransportId ?? "");
|
|
5377
5343
|
const serviceOrigin = String(input.serviceOrigin ?? "");
|
|
5378
5344
|
const parsedOrigin = parseTransportOrigin(serviceOrigin);
|
|
5345
|
+
if (!transportProtocols.includes("socket")) {
|
|
5346
|
+
return false;
|
|
5347
|
+
}
|
|
5379
5348
|
if (!serviceTransportId || !serviceOrigin || !parsedOrigin) {
|
|
5380
5349
|
CadenzaService.log(
|
|
5381
5350
|
"Socket client setup skipped due to missing transport origin",
|
|
@@ -5401,7 +5370,7 @@ var SocketController = class _SocketController {
|
|
|
5401
5370
|
serviceName,
|
|
5402
5371
|
serviceTransportId,
|
|
5403
5372
|
serviceOrigin,
|
|
5404
|
-
transportProtocols
|
|
5373
|
+
transportProtocols,
|
|
5405
5374
|
url
|
|
5406
5375
|
});
|
|
5407
5376
|
};
|
|
@@ -5422,7 +5391,7 @@ var SocketController = class _SocketController {
|
|
|
5422
5391
|
serviceName,
|
|
5423
5392
|
serviceTransportId,
|
|
5424
5393
|
serviceOrigin,
|
|
5425
|
-
transportProtocols
|
|
5394
|
+
transportProtocols,
|
|
5426
5395
|
url,
|
|
5427
5396
|
destroyed: false,
|
|
5428
5397
|
updatedAt: Date.now()
|
|
@@ -6001,7 +5970,7 @@ var SocketController = class _SocketController {
|
|
|
6001
5970
|
communicationTypes,
|
|
6002
5971
|
serviceTransportId,
|
|
6003
5972
|
serviceOrigin,
|
|
6004
|
-
transportProtocols
|
|
5973
|
+
transportProtocols,
|
|
6005
5974
|
handshakeData: {
|
|
6006
5975
|
instanceId: CadenzaService.serviceRegistry.serviceInstanceId,
|
|
6007
5976
|
serviceName: CadenzaService.serviceRegistry.serviceName
|
|
@@ -6361,6 +6330,209 @@ var SignalController = class _SignalController {
|
|
|
6361
6330
|
}
|
|
6362
6331
|
};
|
|
6363
6332
|
|
|
6333
|
+
// src/runtime/RuntimeValidationController.ts
|
|
6334
|
+
var RUNTIME_VALIDATION_INTENTS = {
|
|
6335
|
+
getPolicy: "meta-runtime-validation-policy-get",
|
|
6336
|
+
setPolicy: "meta-runtime-validation-policy-set",
|
|
6337
|
+
replacePolicy: "meta-runtime-validation-policy-replace",
|
|
6338
|
+
clearPolicy: "meta-runtime-validation-policy-clear",
|
|
6339
|
+
listScopes: "meta-runtime-validation-scope-list",
|
|
6340
|
+
upsertScope: "meta-runtime-validation-scope-upsert",
|
|
6341
|
+
removeScope: "meta-runtime-validation-scope-remove",
|
|
6342
|
+
clearScopes: "meta-runtime-validation-scope-clear"
|
|
6343
|
+
};
|
|
6344
|
+
var RUNTIME_VALIDATION_SIGNALS = {
|
|
6345
|
+
setPolicyRequested: "meta.runtime_validation.policy_set_requested",
|
|
6346
|
+
replacePolicyRequested: "meta.runtime_validation.policy_replace_requested",
|
|
6347
|
+
clearPolicyRequested: "meta.runtime_validation.policy_clear_requested",
|
|
6348
|
+
upsertScopeRequested: "meta.runtime_validation.scope_upsert_requested",
|
|
6349
|
+
removeScopeRequested: "meta.runtime_validation.scope_remove_requested",
|
|
6350
|
+
clearScopesRequested: "meta.runtime_validation.scope_clear_requested",
|
|
6351
|
+
policyUpdated: "meta.runtime_validation.policy_updated",
|
|
6352
|
+
policyCleared: "meta.runtime_validation.policy_cleared",
|
|
6353
|
+
scopeUpserted: "meta.runtime_validation.scope_upserted",
|
|
6354
|
+
scopeRemoved: "meta.runtime_validation.scope_removed",
|
|
6355
|
+
scopesCleared: "meta.runtime_validation.scopes_cleared"
|
|
6356
|
+
};
|
|
6357
|
+
function normalizePolicyContext(ctx) {
|
|
6358
|
+
const source = ctx.policy && typeof ctx.policy === "object" && !Array.isArray(ctx.policy) ? ctx.policy : ctx;
|
|
6359
|
+
const policy = {};
|
|
6360
|
+
for (const key of [
|
|
6361
|
+
"metaInput",
|
|
6362
|
+
"metaOutput",
|
|
6363
|
+
"businessInput",
|
|
6364
|
+
"businessOutput",
|
|
6365
|
+
"warnOnMissingMetaInputSchema",
|
|
6366
|
+
"warnOnMissingMetaOutputSchema",
|
|
6367
|
+
"warnOnMissingBusinessInputSchema",
|
|
6368
|
+
"warnOnMissingBusinessOutputSchema"
|
|
6369
|
+
]) {
|
|
6370
|
+
if (source[key] !== void 0) {
|
|
6371
|
+
policy[key] = source[key];
|
|
6372
|
+
}
|
|
6373
|
+
}
|
|
6374
|
+
return policy;
|
|
6375
|
+
}
|
|
6376
|
+
function normalizeScopeContext(ctx) {
|
|
6377
|
+
const source = ctx.scope && typeof ctx.scope === "object" && !Array.isArray(ctx.scope) ? ctx.scope : ctx;
|
|
6378
|
+
return {
|
|
6379
|
+
id: source.id,
|
|
6380
|
+
active: source.active,
|
|
6381
|
+
startTaskNames: Array.isArray(source.startTaskNames) ? source.startTaskNames : void 0,
|
|
6382
|
+
startRoutineNames: Array.isArray(source.startRoutineNames) ? source.startRoutineNames : void 0,
|
|
6383
|
+
policy: source.policy && typeof source.policy === "object" ? normalizePolicyContext({ policy: source.policy }) : void 0
|
|
6384
|
+
};
|
|
6385
|
+
}
|
|
6386
|
+
var RuntimeValidationController = class _RuntimeValidationController {
|
|
6387
|
+
static get instance() {
|
|
6388
|
+
if (!this._instance) {
|
|
6389
|
+
this._instance = new _RuntimeValidationController();
|
|
6390
|
+
}
|
|
6391
|
+
return this._instance;
|
|
6392
|
+
}
|
|
6393
|
+
constructor() {
|
|
6394
|
+
CadenzaService.defineIntent({
|
|
6395
|
+
name: RUNTIME_VALIDATION_INTENTS.getPolicy,
|
|
6396
|
+
description: "Get the active runtime validation policy.",
|
|
6397
|
+
input: { type: "object" },
|
|
6398
|
+
output: { type: "object" }
|
|
6399
|
+
});
|
|
6400
|
+
CadenzaService.defineIntent({
|
|
6401
|
+
name: RUNTIME_VALIDATION_INTENTS.setPolicy,
|
|
6402
|
+
description: "Merge fields into the active runtime validation policy.",
|
|
6403
|
+
input: { type: "object" },
|
|
6404
|
+
output: { type: "object" }
|
|
6405
|
+
});
|
|
6406
|
+
CadenzaService.defineIntent({
|
|
6407
|
+
name: RUNTIME_VALIDATION_INTENTS.replacePolicy,
|
|
6408
|
+
description: "Replace the active runtime validation policy.",
|
|
6409
|
+
input: { type: "object" },
|
|
6410
|
+
output: { type: "object" }
|
|
6411
|
+
});
|
|
6412
|
+
CadenzaService.defineIntent({
|
|
6413
|
+
name: RUNTIME_VALIDATION_INTENTS.clearPolicy,
|
|
6414
|
+
description: "Clear the active runtime validation policy.",
|
|
6415
|
+
input: { type: "object" },
|
|
6416
|
+
output: { type: "object" }
|
|
6417
|
+
});
|
|
6418
|
+
CadenzaService.defineIntent({
|
|
6419
|
+
name: RUNTIME_VALIDATION_INTENTS.listScopes,
|
|
6420
|
+
description: "List active runtime validation scopes.",
|
|
6421
|
+
input: { type: "object" },
|
|
6422
|
+
output: { type: "object" }
|
|
6423
|
+
});
|
|
6424
|
+
CadenzaService.defineIntent({
|
|
6425
|
+
name: RUNTIME_VALIDATION_INTENTS.upsertScope,
|
|
6426
|
+
description: "Create or update a runtime validation scope for targeted subflow validation.",
|
|
6427
|
+
input: { type: "object" },
|
|
6428
|
+
output: { type: "object" }
|
|
6429
|
+
});
|
|
6430
|
+
CadenzaService.defineIntent({
|
|
6431
|
+
name: RUNTIME_VALIDATION_INTENTS.removeScope,
|
|
6432
|
+
description: "Remove a runtime validation scope by id.",
|
|
6433
|
+
input: { type: "object" },
|
|
6434
|
+
output: { type: "object" }
|
|
6435
|
+
});
|
|
6436
|
+
CadenzaService.defineIntent({
|
|
6437
|
+
name: RUNTIME_VALIDATION_INTENTS.clearScopes,
|
|
6438
|
+
description: "Clear all runtime validation scopes.",
|
|
6439
|
+
input: { type: "object" },
|
|
6440
|
+
output: { type: "object" }
|
|
6441
|
+
});
|
|
6442
|
+
CadenzaService.createMetaTask("Get runtime validation policy", () => {
|
|
6443
|
+
return {
|
|
6444
|
+
policy: CadenzaService.getRuntimeValidationPolicy()
|
|
6445
|
+
};
|
|
6446
|
+
}).respondsTo(RUNTIME_VALIDATION_INTENTS.getPolicy);
|
|
6447
|
+
CadenzaService.createMetaTask(
|
|
6448
|
+
"Set runtime validation policy",
|
|
6449
|
+
(ctx, emit) => {
|
|
6450
|
+
const policy = normalizePolicyContext(ctx);
|
|
6451
|
+
const nextPolicy = CadenzaService.setRuntimeValidationPolicy(policy);
|
|
6452
|
+
emit(RUNTIME_VALIDATION_SIGNALS.policyUpdated, {
|
|
6453
|
+
policy: nextPolicy
|
|
6454
|
+
});
|
|
6455
|
+
return {
|
|
6456
|
+
policy: nextPolicy
|
|
6457
|
+
};
|
|
6458
|
+
},
|
|
6459
|
+
"Merges runtime validation policy fields at runtime."
|
|
6460
|
+
).respondsTo(RUNTIME_VALIDATION_INTENTS.setPolicy).doOn(RUNTIME_VALIDATION_SIGNALS.setPolicyRequested);
|
|
6461
|
+
CadenzaService.createMetaTask(
|
|
6462
|
+
"Replace runtime validation policy",
|
|
6463
|
+
(ctx, emit) => {
|
|
6464
|
+
const policy = normalizePolicyContext(ctx);
|
|
6465
|
+
const nextPolicy = CadenzaService.replaceRuntimeValidationPolicy(policy);
|
|
6466
|
+
emit(RUNTIME_VALIDATION_SIGNALS.policyUpdated, {
|
|
6467
|
+
policy: nextPolicy
|
|
6468
|
+
});
|
|
6469
|
+
return {
|
|
6470
|
+
policy: nextPolicy
|
|
6471
|
+
};
|
|
6472
|
+
},
|
|
6473
|
+
"Replaces runtime validation policy fields at runtime."
|
|
6474
|
+
).respondsTo(RUNTIME_VALIDATION_INTENTS.replacePolicy).doOn(RUNTIME_VALIDATION_SIGNALS.replacePolicyRequested);
|
|
6475
|
+
CadenzaService.createMetaTask(
|
|
6476
|
+
"Clear runtime validation policy",
|
|
6477
|
+
(_ctx, emit) => {
|
|
6478
|
+
CadenzaService.clearRuntimeValidationPolicy();
|
|
6479
|
+
emit(RUNTIME_VALIDATION_SIGNALS.policyCleared, {});
|
|
6480
|
+
return {
|
|
6481
|
+
policy: CadenzaService.getRuntimeValidationPolicy()
|
|
6482
|
+
};
|
|
6483
|
+
},
|
|
6484
|
+
"Clears the runtime validation policy."
|
|
6485
|
+
).respondsTo(RUNTIME_VALIDATION_INTENTS.clearPolicy).doOn(RUNTIME_VALIDATION_SIGNALS.clearPolicyRequested);
|
|
6486
|
+
CadenzaService.createMetaTask("List runtime validation scopes", () => {
|
|
6487
|
+
return {
|
|
6488
|
+
scopes: CadenzaService.getRuntimeValidationScopes()
|
|
6489
|
+
};
|
|
6490
|
+
}).respondsTo(RUNTIME_VALIDATION_INTENTS.listScopes);
|
|
6491
|
+
CadenzaService.createMetaTask(
|
|
6492
|
+
"Upsert runtime validation scope",
|
|
6493
|
+
(ctx, emit) => {
|
|
6494
|
+
const scope = normalizeScopeContext(ctx);
|
|
6495
|
+
const nextScope = CadenzaService.upsertRuntimeValidationScope(scope);
|
|
6496
|
+
emit(RUNTIME_VALIDATION_SIGNALS.scopeUpserted, {
|
|
6497
|
+
scope: nextScope
|
|
6498
|
+
});
|
|
6499
|
+
return {
|
|
6500
|
+
scope: nextScope
|
|
6501
|
+
};
|
|
6502
|
+
},
|
|
6503
|
+
"Upserts a runtime validation scope for targeted debugging."
|
|
6504
|
+
).respondsTo(RUNTIME_VALIDATION_INTENTS.upsertScope).doOn(RUNTIME_VALIDATION_SIGNALS.upsertScopeRequested);
|
|
6505
|
+
CadenzaService.createMetaTask(
|
|
6506
|
+
"Remove runtime validation scope",
|
|
6507
|
+
(ctx, emit) => {
|
|
6508
|
+
if (!ctx.id) {
|
|
6509
|
+
throw new Error("Runtime validation scope id is required");
|
|
6510
|
+
}
|
|
6511
|
+
CadenzaService.removeRuntimeValidationScope(ctx.id);
|
|
6512
|
+
emit(RUNTIME_VALIDATION_SIGNALS.scopeRemoved, {
|
|
6513
|
+
id: ctx.id
|
|
6514
|
+
});
|
|
6515
|
+
return {
|
|
6516
|
+
id: ctx.id,
|
|
6517
|
+
scopes: CadenzaService.getRuntimeValidationScopes()
|
|
6518
|
+
};
|
|
6519
|
+
},
|
|
6520
|
+
"Removes a runtime validation scope."
|
|
6521
|
+
).respondsTo(RUNTIME_VALIDATION_INTENTS.removeScope).doOn(RUNTIME_VALIDATION_SIGNALS.removeScopeRequested);
|
|
6522
|
+
CadenzaService.createMetaTask(
|
|
6523
|
+
"Clear runtime validation scopes",
|
|
6524
|
+
(_ctx, emit) => {
|
|
6525
|
+
CadenzaService.clearRuntimeValidationScopes();
|
|
6526
|
+
emit(RUNTIME_VALIDATION_SIGNALS.scopesCleared, {});
|
|
6527
|
+
return {
|
|
6528
|
+
scopes: CadenzaService.getRuntimeValidationScopes()
|
|
6529
|
+
};
|
|
6530
|
+
},
|
|
6531
|
+
"Clears all runtime validation scopes."
|
|
6532
|
+
).respondsTo(RUNTIME_VALIDATION_INTENTS.clearScopes).doOn(RUNTIME_VALIDATION_SIGNALS.clearScopesRequested);
|
|
6533
|
+
}
|
|
6534
|
+
};
|
|
6535
|
+
|
|
6364
6536
|
// src/graph/controllers/registerActorSessionPersistence.ts
|
|
6365
6537
|
import { META_ACTOR_SESSION_STATE_PERSIST_INTENT } from "@cadenza.io/core";
|
|
6366
6538
|
function registerActorSessionPersistenceTasks() {
|
|
@@ -9074,7 +9246,6 @@ function buildSyncExecutionEnvelope(ctx, queryData) {
|
|
|
9074
9246
|
}
|
|
9075
9247
|
function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, options = {}) {
|
|
9076
9248
|
const localInsertTask = CadenzaService.getLocalCadenzaDBInsertTask(tableName);
|
|
9077
|
-
const debugTable = shouldDebugSyncTable(tableName);
|
|
9078
9249
|
if (!localInsertTask && !isCadenzaDBReady) {
|
|
9079
9250
|
return void 0;
|
|
9080
9251
|
}
|
|
@@ -9087,16 +9258,6 @@ function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, opti
|
|
|
9087
9258
|
register: false,
|
|
9088
9259
|
isHidden: true
|
|
9089
9260
|
});
|
|
9090
|
-
if (debugTable) {
|
|
9091
|
-
logSyncDebug("insert_task_resolved", {
|
|
9092
|
-
tableName,
|
|
9093
|
-
localInsertTaskName: localInsertTask?.name ?? null,
|
|
9094
|
-
remoteInsertTaskName: isCadenzaDBReady ? targetTask.name : null,
|
|
9095
|
-
targetTaskName: targetTask.name,
|
|
9096
|
-
queryData,
|
|
9097
|
-
options
|
|
9098
|
-
});
|
|
9099
|
-
}
|
|
9100
9261
|
const prepareExecutionTask = CadenzaService.createMetaTask(
|
|
9101
9262
|
`Prepare graph sync insert for ${tableName}`,
|
|
9102
9263
|
(ctx) => {
|
|
@@ -9107,12 +9268,12 @@ function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, opti
|
|
|
9107
9268
|
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) {
|
|
9108
9269
|
console.warn(
|
|
9109
9270
|
"[CADENZA_SYNC_EMPTY_INSERT]",
|
|
9110
|
-
|
|
9271
|
+
{
|
|
9111
9272
|
tableName,
|
|
9112
9273
|
queryData: originalQueryData,
|
|
9113
9274
|
ctx,
|
|
9114
9275
|
joinedContexts: Array.isArray(ctx.joinedContexts) ? ctx.joinedContexts : []
|
|
9115
|
-
}
|
|
9276
|
+
}
|
|
9116
9277
|
);
|
|
9117
9278
|
}
|
|
9118
9279
|
return buildSyncExecutionEnvelope(
|
|
@@ -9126,37 +9287,6 @@ function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, opti
|
|
|
9126
9287
|
isHidden: true
|
|
9127
9288
|
}
|
|
9128
9289
|
);
|
|
9129
|
-
if (debugTable) {
|
|
9130
|
-
prepareExecutionTask.then(
|
|
9131
|
-
CadenzaService.createMetaTask(
|
|
9132
|
-
`Log prepared graph sync insert execution for ${tableName}`,
|
|
9133
|
-
(ctx) => {
|
|
9134
|
-
if (tableName === "task") {
|
|
9135
|
-
if (!shouldDebugTaskSyncPayload(ctx)) {
|
|
9136
|
-
return ctx;
|
|
9137
|
-
}
|
|
9138
|
-
logSyncDebug("insert_prepare", {
|
|
9139
|
-
tableName,
|
|
9140
|
-
targetTaskName: targetTask.name,
|
|
9141
|
-
payload: buildTaskSyncDebugPayload(ctx)
|
|
9142
|
-
});
|
|
9143
|
-
return ctx;
|
|
9144
|
-
}
|
|
9145
|
-
logSyncDebug("insert_prepare", {
|
|
9146
|
-
tableName,
|
|
9147
|
-
targetTaskName: targetTask.name,
|
|
9148
|
-
ctx
|
|
9149
|
-
});
|
|
9150
|
-
return ctx;
|
|
9151
|
-
},
|
|
9152
|
-
`Logs prepared ${tableName} sync insert payloads.`,
|
|
9153
|
-
{
|
|
9154
|
-
register: false,
|
|
9155
|
-
isHidden: true
|
|
9156
|
-
}
|
|
9157
|
-
)
|
|
9158
|
-
);
|
|
9159
|
-
}
|
|
9160
9290
|
const finalizeExecutionTask = CadenzaService.createMetaTask(
|
|
9161
9291
|
`Finalize graph sync insert for ${tableName}`,
|
|
9162
9292
|
(ctx) => {
|
|
@@ -9167,25 +9297,6 @@ function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, opti
|
|
|
9167
9297
|
...ctx,
|
|
9168
9298
|
queryData: ctx.queryData && typeof ctx.queryData === "object" ? ctx.queryData : originalQueryData
|
|
9169
9299
|
};
|
|
9170
|
-
if (debugTable) {
|
|
9171
|
-
if (tableName === "task") {
|
|
9172
|
-
if (shouldDebugTaskSyncPayload(normalizedContext)) {
|
|
9173
|
-
logSyncDebug("insert_finalize", {
|
|
9174
|
-
tableName,
|
|
9175
|
-
targetTaskName: targetTask.name,
|
|
9176
|
-
success: didSyncInsertSucceed(normalizedContext),
|
|
9177
|
-
payload: buildTaskSyncDebugPayload(normalizedContext)
|
|
9178
|
-
});
|
|
9179
|
-
}
|
|
9180
|
-
} else {
|
|
9181
|
-
logSyncDebug("insert_finalize", {
|
|
9182
|
-
tableName,
|
|
9183
|
-
targetTaskName: targetTask.name,
|
|
9184
|
-
success: didSyncInsertSucceed(normalizedContext),
|
|
9185
|
-
ctx: normalizedContext
|
|
9186
|
-
});
|
|
9187
|
-
}
|
|
9188
|
-
}
|
|
9189
9300
|
return normalizedContext;
|
|
9190
9301
|
},
|
|
9191
9302
|
`Finalizes ${tableName} graph-sync insert execution after the authority task finishes.`,
|
|
@@ -9220,139 +9331,6 @@ var AUTHORITY_QUERY_RESULT_KEYS = {
|
|
|
9220
9331
|
intent_registry: "intentRegistrys"
|
|
9221
9332
|
};
|
|
9222
9333
|
var EARLY_SYNC_REQUEST_DELAYS_MS = [2e3, 1e4, 3e4];
|
|
9223
|
-
var SYNC_DEBUG_PREFIX = "[CADENZA_SYNC_DEBUG]";
|
|
9224
|
-
var SYNC_DEBUG_ENABLED = typeof process !== "undefined" && typeof process.env === "object" && process.env.CADENZA_SYNC_DEBUG === "true";
|
|
9225
|
-
var SYNC_DEBUG_TABLES = /* @__PURE__ */ new Set(["intent_to_task_map", "task"]);
|
|
9226
|
-
var SYNC_DEBUG_TASK_NAMES = /* @__PURE__ */ new Set([
|
|
9227
|
-
"Query service_instance",
|
|
9228
|
-
"Query service_instance_transport",
|
|
9229
|
-
"Query intent_to_task_map",
|
|
9230
|
-
"Query signal_to_task_map",
|
|
9231
|
-
"Prepare for signal sync",
|
|
9232
|
-
"Compile sync data and broadcast",
|
|
9233
|
-
"Forward service instance sync",
|
|
9234
|
-
"Forward service transport sync",
|
|
9235
|
-
"Forward intent to task map sync",
|
|
9236
|
-
"Forward signal to task map sync",
|
|
9237
|
-
"Normalize telemetry ingest payload",
|
|
9238
|
-
"Get telemetry session state",
|
|
9239
|
-
"Normalize anomaly detect input",
|
|
9240
|
-
"Read anomaly runtime session",
|
|
9241
|
-
"Normalize prediction compute input",
|
|
9242
|
-
"Normalize telemetry insert queryData"
|
|
9243
|
-
]);
|
|
9244
|
-
var SYNC_DEBUG_ROUTINE_NAMES = /* @__PURE__ */ new Set(["Sync services"]);
|
|
9245
|
-
var SYNC_DEBUG_INTENT_NAMES = /* @__PURE__ */ new Set([
|
|
9246
|
-
"meta-service-registry-full-sync",
|
|
9247
|
-
"runner-traffic-runtime-get",
|
|
9248
|
-
"iot-telemetry-ingest",
|
|
9249
|
-
"iot-telemetry-session-get",
|
|
9250
|
-
"iot-anomaly-detect",
|
|
9251
|
-
"iot-anomaly-runtime-get",
|
|
9252
|
-
"iot-prediction-compute",
|
|
9253
|
-
"iot-db-telemetry-insert",
|
|
9254
|
-
"query-pg-cadenza-db-postgres-actor-service_instance",
|
|
9255
|
-
"query-pg-cadenza-db-postgres-actor-service_instance_transport",
|
|
9256
|
-
"query-pg-cadenza-db-postgres-actor-intent_to_task_map",
|
|
9257
|
-
"query-pg-cadenza-db-postgres-actor-signal_to_task_map"
|
|
9258
|
-
]);
|
|
9259
|
-
function shouldDebugSyncTable(tableName) {
|
|
9260
|
-
return SYNC_DEBUG_ENABLED && SYNC_DEBUG_TABLES.has(tableName);
|
|
9261
|
-
}
|
|
9262
|
-
function shouldDebugSyncTaskName(taskName) {
|
|
9263
|
-
return SYNC_DEBUG_ENABLED && typeof taskName === "string" && SYNC_DEBUG_TASK_NAMES.has(taskName);
|
|
9264
|
-
}
|
|
9265
|
-
function shouldDebugSyncRoutineName(routineName) {
|
|
9266
|
-
return SYNC_DEBUG_ENABLED && typeof routineName === "string" && SYNC_DEBUG_ROUTINE_NAMES.has(routineName);
|
|
9267
|
-
}
|
|
9268
|
-
function shouldDebugSyncIntentName(intentName) {
|
|
9269
|
-
return SYNC_DEBUG_ENABLED && typeof intentName === "string" && SYNC_DEBUG_INTENT_NAMES.has(intentName);
|
|
9270
|
-
}
|
|
9271
|
-
function summarizeSyncDebugValue(value, depth = 0) {
|
|
9272
|
-
if (value === null || value === void 0) {
|
|
9273
|
-
return value;
|
|
9274
|
-
}
|
|
9275
|
-
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
|
|
9276
|
-
return value;
|
|
9277
|
-
}
|
|
9278
|
-
if (value instanceof Set) {
|
|
9279
|
-
return {
|
|
9280
|
-
__type: "Set",
|
|
9281
|
-
size: value.size,
|
|
9282
|
-
values: Array.from(value).slice(0, 8).map((item) => summarizeSyncDebugValue(item, depth + 1))
|
|
9283
|
-
};
|
|
9284
|
-
}
|
|
9285
|
-
if (value instanceof Map) {
|
|
9286
|
-
return {
|
|
9287
|
-
__type: "Map",
|
|
9288
|
-
size: value.size
|
|
9289
|
-
};
|
|
9290
|
-
}
|
|
9291
|
-
if (Array.isArray(value)) {
|
|
9292
|
-
return {
|
|
9293
|
-
__type: "Array",
|
|
9294
|
-
length: value.length,
|
|
9295
|
-
items: value.slice(0, 5).map((item) => summarizeSyncDebugValue(item, depth + 1))
|
|
9296
|
-
};
|
|
9297
|
-
}
|
|
9298
|
-
if (typeof value === "object") {
|
|
9299
|
-
if (depth >= 2) {
|
|
9300
|
-
return "[object]";
|
|
9301
|
-
}
|
|
9302
|
-
const output = {};
|
|
9303
|
-
const entries = Object.entries(value).filter(
|
|
9304
|
-
([key]) => ![
|
|
9305
|
-
"functionString",
|
|
9306
|
-
"tagIdGetter",
|
|
9307
|
-
"__functionString",
|
|
9308
|
-
"__getTagCallback",
|
|
9309
|
-
"joinedContexts",
|
|
9310
|
-
"task",
|
|
9311
|
-
"taskInstance",
|
|
9312
|
-
"tasks"
|
|
9313
|
-
].includes(key)
|
|
9314
|
-
).slice(0, 12);
|
|
9315
|
-
for (const [key, nestedValue] of entries) {
|
|
9316
|
-
output[key] = summarizeSyncDebugValue(nestedValue, depth + 1);
|
|
9317
|
-
}
|
|
9318
|
-
return output;
|
|
9319
|
-
}
|
|
9320
|
-
return String(value);
|
|
9321
|
-
}
|
|
9322
|
-
function logSyncDebug(event, payload) {
|
|
9323
|
-
console.log(`${SYNC_DEBUG_PREFIX} ${event}`, summarizeSyncDebugValue(payload));
|
|
9324
|
-
}
|
|
9325
|
-
function buildTaskSyncDebugPayload(ctx) {
|
|
9326
|
-
const data = ctx.data && typeof ctx.data === "object" ? ctx.data : {};
|
|
9327
|
-
const queryData = ctx.queryData && typeof ctx.queryData === "object" ? ctx.queryData : {};
|
|
9328
|
-
const queryDataData = queryData.data && typeof queryData.data === "object" ? queryData.data : {};
|
|
9329
|
-
const taskPayload = Object.keys(queryDataData).length > 0 ? queryDataData : data;
|
|
9330
|
-
const functionString = typeof taskPayload.functionString === "string" ? taskPayload.functionString : typeof taskPayload.function_string === "string" ? taskPayload.function_string : void 0;
|
|
9331
|
-
const tagIdGetter = typeof taskPayload.tagIdGetter === "string" ? taskPayload.tagIdGetter : typeof taskPayload.tag_id_getter === "string" ? taskPayload.tag_id_getter : void 0;
|
|
9332
|
-
const signals = taskPayload.signals && typeof taskPayload.signals === "object" ? taskPayload.signals : {};
|
|
9333
|
-
const intents = taskPayload.intents && typeof taskPayload.intents === "object" ? taskPayload.intents : {};
|
|
9334
|
-
return {
|
|
9335
|
-
taskName: taskPayload.name ?? taskPayload.taskName ?? taskPayload.task_name ?? ctx.__taskName ?? null,
|
|
9336
|
-
serviceName: taskPayload.service_name ?? taskPayload.serviceName ?? ctx.__syncServiceName ?? null,
|
|
9337
|
-
functionStringLength: functionString?.length ?? null,
|
|
9338
|
-
tagIdGetterLength: tagIdGetter?.length ?? null,
|
|
9339
|
-
isMeta: taskPayload.isMeta ?? taskPayload.is_meta ?? null,
|
|
9340
|
-
isSubMeta: taskPayload.isSubMeta ?? taskPayload.is_sub_meta ?? null,
|
|
9341
|
-
isHidden: taskPayload.isHidden ?? taskPayload.is_hidden ?? null,
|
|
9342
|
-
signalsEmitsCount: Array.isArray(signals.emits) ? signals.emits.length : null,
|
|
9343
|
-
signalsObservedCount: Array.isArray(signals.observed) ? signals.observed.length : null,
|
|
9344
|
-
intentHandlesCount: Array.isArray(intents.handles) ? intents.handles.length : null,
|
|
9345
|
-
intentInquiresCount: Array.isArray(intents.inquires) ? intents.inquires.length : null,
|
|
9346
|
-
rowCount: ctx.rowCount ?? null,
|
|
9347
|
-
errored: ctx.errored ?? false,
|
|
9348
|
-
success: ctx.__success ?? null,
|
|
9349
|
-
error: ctx.__error ?? null
|
|
9350
|
-
};
|
|
9351
|
-
}
|
|
9352
|
-
function shouldDebugTaskSyncPayload(ctx) {
|
|
9353
|
-
const payload = buildTaskSyncDebugPayload(ctx);
|
|
9354
|
-
return shouldDebugSyncTaskName(payload.taskName);
|
|
9355
|
-
}
|
|
9356
9334
|
function resolveSyncQueryRows(ctx, tableName) {
|
|
9357
9335
|
const resultKey = AUTHORITY_QUERY_RESULT_KEYS[tableName];
|
|
9358
9336
|
const rows = ctx?.[resultKey];
|
|
@@ -9799,16 +9777,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
9799
9777
|
if (!nextTask?.registered) {
|
|
9800
9778
|
continue;
|
|
9801
9779
|
}
|
|
9802
|
-
if (shouldDebugSyncRoutineName(routine.name) || shouldDebugSyncTaskName(nextTask.name)) {
|
|
9803
|
-
logSyncDebug("task_to_routine_split", {
|
|
9804
|
-
routineName: routine.name,
|
|
9805
|
-
routineVersion: routine.version,
|
|
9806
|
-
taskName: nextTask.name,
|
|
9807
|
-
taskVersion: nextTask.version,
|
|
9808
|
-
serviceName: serviceName2,
|
|
9809
|
-
registered: nextTask.registered
|
|
9810
|
-
});
|
|
9811
|
-
}
|
|
9812
9780
|
yield {
|
|
9813
9781
|
__syncing: ctx.__syncing,
|
|
9814
9782
|
data: {
|
|
@@ -9954,20 +9922,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
9954
9922
|
if (task.registered) continue;
|
|
9955
9923
|
const { __functionString, __getTagCallback } = task.export();
|
|
9956
9924
|
this.tasksSynced = false;
|
|
9957
|
-
if (shouldDebugSyncTaskName(task.name)) {
|
|
9958
|
-
logSyncDebug("task_registration_split", {
|
|
9959
|
-
taskName: task.name,
|
|
9960
|
-
taskVersion: task.version,
|
|
9961
|
-
serviceName: serviceName2,
|
|
9962
|
-
register: task.register,
|
|
9963
|
-
registered: task.registered,
|
|
9964
|
-
hidden: task.hidden,
|
|
9965
|
-
exportFunctionLength: __functionString?.length ?? null,
|
|
9966
|
-
exportTagGetterLength: __getTagCallback?.length ?? null,
|
|
9967
|
-
observedSignals: Array.from(task.observedSignals),
|
|
9968
|
-
handledIntents: Array.from(task.handlesIntents)
|
|
9969
|
-
});
|
|
9970
|
-
}
|
|
9971
9925
|
yield {
|
|
9972
9926
|
__syncing: ctx.__syncing,
|
|
9973
9927
|
data: {
|
|
@@ -10022,13 +9976,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
10022
9976
|
const registerTaskTask = CadenzaService.createMetaTask(
|
|
10023
9977
|
"Record registration",
|
|
10024
9978
|
(ctx, emit) => {
|
|
10025
|
-
if (shouldDebugSyncTaskName(ctx.__taskName)) {
|
|
10026
|
-
logSyncDebug("task_registration_result", {
|
|
10027
|
-
taskName: ctx.__taskName,
|
|
10028
|
-
success: didSyncInsertSucceed(ctx),
|
|
10029
|
-
ctx
|
|
10030
|
-
});
|
|
10031
|
-
}
|
|
10032
9979
|
if (!didSyncInsertSucceed(ctx)) {
|
|
10033
9980
|
return;
|
|
10034
9981
|
}
|
|
@@ -10054,16 +10001,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
10054
10001
|
"Prepare created task for immediate sync",
|
|
10055
10002
|
(ctx) => {
|
|
10056
10003
|
const task = ctx.taskInstance ?? (ctx.data?.name ? CadenzaService.get(String(ctx.data.name)) : void 0);
|
|
10057
|
-
if (shouldDebugSyncTaskName(task?.name ?? ctx?.data?.name)) {
|
|
10058
|
-
logSyncDebug("task_created_for_immediate_sync", {
|
|
10059
|
-
incomingTaskName: ctx?.data?.name ?? null,
|
|
10060
|
-
resolvedTaskName: task?.name ?? null,
|
|
10061
|
-
exists: Boolean(task),
|
|
10062
|
-
hidden: task?.hidden ?? null,
|
|
10063
|
-
register: task?.register ?? null,
|
|
10064
|
-
registered: task?.registered ?? null
|
|
10065
|
-
});
|
|
10066
|
-
}
|
|
10067
10004
|
if (!task || task.hidden || !task.register || task.registered) {
|
|
10068
10005
|
return false;
|
|
10069
10006
|
}
|
|
@@ -10250,17 +10187,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
10250
10187
|
if (!isGlobal) {
|
|
10251
10188
|
continue;
|
|
10252
10189
|
}
|
|
10253
|
-
if (shouldDebugSyncTaskName(task.name)) {
|
|
10254
|
-
logSyncDebug("signal_to_task_map_split", {
|
|
10255
|
-
taskName: task.name,
|
|
10256
|
-
signalName: _signal,
|
|
10257
|
-
rawSignal: signal,
|
|
10258
|
-
serviceName: serviceName2,
|
|
10259
|
-
observerRegistered: CadenzaService.signalBroker.signalObservers?.get(
|
|
10260
|
-
_signal
|
|
10261
|
-
)?.registered
|
|
10262
|
-
});
|
|
10263
|
-
}
|
|
10264
10190
|
yield {
|
|
10265
10191
|
__syncing: ctx.__syncing,
|
|
10266
10192
|
data: {
|
|
@@ -10371,21 +10297,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
10371
10297
|
}
|
|
10372
10298
|
task.__registeredIntents = task.__registeredIntents ?? /* @__PURE__ */ new Set();
|
|
10373
10299
|
task.__invalidMetaIntentWarnings = task.__invalidMetaIntentWarnings ?? /* @__PURE__ */ new Set();
|
|
10374
|
-
const shouldDebugTask = shouldDebugSyncTaskName(task.name);
|
|
10375
|
-
if (shouldDebugTask) {
|
|
10376
|
-
logSyncDebug("intent_map_task_state", {
|
|
10377
|
-
taskName: task.name,
|
|
10378
|
-
taskVersion: task.version,
|
|
10379
|
-
serviceName: serviceName2,
|
|
10380
|
-
registered: task.registered,
|
|
10381
|
-
register: task.register,
|
|
10382
|
-
hidden: task.hidden,
|
|
10383
|
-
handledIntents: Array.from(task.handlesIntents),
|
|
10384
|
-
registeredIntents: Array.from(task.__registeredIntents),
|
|
10385
|
-
tasksSynced: this.tasksSynced,
|
|
10386
|
-
intentsSynced: this.intentsSynced
|
|
10387
|
-
});
|
|
10388
|
-
}
|
|
10389
10300
|
let emittedCount = 0;
|
|
10390
10301
|
for (const intent of task.handlesIntents) {
|
|
10391
10302
|
if (task.__registeredIntents.has(intent)) continue;
|
|
@@ -10411,15 +10322,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
10411
10322
|
if (!intentDefinition) {
|
|
10412
10323
|
continue;
|
|
10413
10324
|
}
|
|
10414
|
-
if (shouldDebugSyncTaskName(task.name) || shouldDebugSyncIntentName(intent)) {
|
|
10415
|
-
logSyncDebug("intent_to_task_map_split", {
|
|
10416
|
-
taskName: task.name,
|
|
10417
|
-
taskVersion: task.version,
|
|
10418
|
-
intentName: intent,
|
|
10419
|
-
serviceName: serviceName2,
|
|
10420
|
-
intentDefinition
|
|
10421
|
-
});
|
|
10422
|
-
}
|
|
10423
10325
|
yield {
|
|
10424
10326
|
__syncing: ctx.__syncing,
|
|
10425
10327
|
data: {
|
|
@@ -10440,15 +10342,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
10440
10342
|
};
|
|
10441
10343
|
emittedCount += 1;
|
|
10442
10344
|
}
|
|
10443
|
-
if (shouldDebugTask && emittedCount === 0) {
|
|
10444
|
-
logSyncDebug("intent_map_task_noop", {
|
|
10445
|
-
taskName: task.name,
|
|
10446
|
-
taskVersion: task.version,
|
|
10447
|
-
serviceName: serviceName2,
|
|
10448
|
-
handledIntents: Array.from(task.handlesIntents),
|
|
10449
|
-
registeredIntents: Array.from(task.__registeredIntents)
|
|
10450
|
-
});
|
|
10451
|
-
}
|
|
10452
10345
|
return emittedCount > 0;
|
|
10453
10346
|
}.bind(this)
|
|
10454
10347
|
);
|
|
@@ -10458,13 +10351,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
10458
10351
|
if (!ctx.__intentDefinition || !ctx.__intentMapData) {
|
|
10459
10352
|
return false;
|
|
10460
10353
|
}
|
|
10461
|
-
if (shouldDebugSyncTaskName(ctx.__taskName) || shouldDebugSyncIntentName(ctx.__intent)) {
|
|
10462
|
-
logSyncDebug("intent_definition_prepare", {
|
|
10463
|
-
taskName: ctx.__taskName,
|
|
10464
|
-
intentName: ctx.__intent,
|
|
10465
|
-
intentDefinition: ctx.__intentDefinition
|
|
10466
|
-
});
|
|
10467
|
-
}
|
|
10468
10354
|
return {
|
|
10469
10355
|
...ctx,
|
|
10470
10356
|
data: ctx.__intentDefinition
|
|
@@ -10477,13 +10363,6 @@ var GraphSyncController = class _GraphSyncController {
|
|
|
10477
10363
|
if (!ctx.__intentMapData) {
|
|
10478
10364
|
return false;
|
|
10479
10365
|
}
|
|
10480
|
-
if (shouldDebugSyncTaskName(ctx.__taskName) || shouldDebugSyncIntentName(ctx.__intent)) {
|
|
10481
|
-
logSyncDebug("intent_map_payload_restore", {
|
|
10482
|
-
taskName: ctx.__taskName,
|
|
10483
|
-
intentName: ctx.__intent,
|
|
10484
|
-
intentMapData: ctx.__intentMapData
|
|
10485
|
-
});
|
|
10486
|
-
}
|
|
10487
10366
|
return {
|
|
10488
10367
|
...ctx,
|
|
10489
10368
|
data: ctx.__intentMapData
|
|
@@ -11305,6 +11184,13 @@ var CadenzaService = class {
|
|
|
11305
11184
|
if (this.isBootstrapped) return;
|
|
11306
11185
|
this.isBootstrapped = true;
|
|
11307
11186
|
Cadenza.bootstrap();
|
|
11187
|
+
Cadenza.setRuntimeInquiryDelegate(
|
|
11188
|
+
(inquiry, context, options) => this.inquire(
|
|
11189
|
+
inquiry,
|
|
11190
|
+
context,
|
|
11191
|
+
options ?? {}
|
|
11192
|
+
)
|
|
11193
|
+
);
|
|
11308
11194
|
this.signalBroker = Cadenza.signalBroker;
|
|
11309
11195
|
this.inquiryBroker = Cadenza.inquiryBroker;
|
|
11310
11196
|
this.runner = Cadenza.runner;
|
|
@@ -11313,7 +11199,7 @@ var CadenzaService = class {
|
|
|
11313
11199
|
this.serviceRegistry = ServiceRegistry.instance;
|
|
11314
11200
|
RestController.instance;
|
|
11315
11201
|
SocketController.instance;
|
|
11316
|
-
|
|
11202
|
+
RuntimeValidationController.instance;
|
|
11317
11203
|
}
|
|
11318
11204
|
static ensureTransportControllers(isFrontend) {
|
|
11319
11205
|
if (!isFrontend) {
|
|
@@ -11452,6 +11338,38 @@ var CadenzaService = class {
|
|
|
11452
11338
|
this.inquiryBroker?.addIntent(intent);
|
|
11453
11339
|
return intent;
|
|
11454
11340
|
}
|
|
11341
|
+
static getRuntimeValidationPolicy() {
|
|
11342
|
+
this.bootstrap();
|
|
11343
|
+
return Cadenza.getRuntimeValidationPolicy();
|
|
11344
|
+
}
|
|
11345
|
+
static setRuntimeValidationPolicy(policy = {}) {
|
|
11346
|
+
this.bootstrap();
|
|
11347
|
+
return Cadenza.setRuntimeValidationPolicy(policy);
|
|
11348
|
+
}
|
|
11349
|
+
static replaceRuntimeValidationPolicy(policy = {}) {
|
|
11350
|
+
this.bootstrap();
|
|
11351
|
+
return Cadenza.replaceRuntimeValidationPolicy(policy);
|
|
11352
|
+
}
|
|
11353
|
+
static clearRuntimeValidationPolicy() {
|
|
11354
|
+
this.bootstrap();
|
|
11355
|
+
Cadenza.clearRuntimeValidationPolicy();
|
|
11356
|
+
}
|
|
11357
|
+
static getRuntimeValidationScopes() {
|
|
11358
|
+
this.bootstrap();
|
|
11359
|
+
return Cadenza.getRuntimeValidationScopes();
|
|
11360
|
+
}
|
|
11361
|
+
static upsertRuntimeValidationScope(scope) {
|
|
11362
|
+
this.bootstrap();
|
|
11363
|
+
return Cadenza.upsertRuntimeValidationScope(scope);
|
|
11364
|
+
}
|
|
11365
|
+
static removeRuntimeValidationScope(id) {
|
|
11366
|
+
this.bootstrap();
|
|
11367
|
+
Cadenza.removeRuntimeValidationScope(id);
|
|
11368
|
+
}
|
|
11369
|
+
static clearRuntimeValidationScopes() {
|
|
11370
|
+
this.bootstrap();
|
|
11371
|
+
Cadenza.clearRuntimeValidationScopes();
|
|
11372
|
+
}
|
|
11455
11373
|
static getInquiryResponderDescriptor(task) {
|
|
11456
11374
|
return this.serviceRegistry.getInquiryResponderDescriptor(task);
|
|
11457
11375
|
}
|
|
@@ -12212,7 +12130,6 @@ var CadenzaService = class {
|
|
|
12212
12130
|
}
|
|
12213
12131
|
});
|
|
12214
12132
|
});
|
|
12215
|
-
console.log("Creating service...");
|
|
12216
12133
|
const initContext = {
|
|
12217
12134
|
data: {
|
|
12218
12135
|
name: serviceName,
|
|
@@ -12245,10 +12162,13 @@ var CadenzaService = class {
|
|
|
12245
12162
|
}).doOn("meta.fetch.handshake_complete");
|
|
12246
12163
|
} else {
|
|
12247
12164
|
this.emit("meta.create_service_requested", initContext);
|
|
12248
|
-
this.createMetaTask("Create signal transmission for sync", (ctx) => {
|
|
12249
|
-
|
|
12250
|
-
"
|
|
12251
|
-
|
|
12165
|
+
this.createMetaTask("Create signal transmission for sync", (ctx, emit) => {
|
|
12166
|
+
emit(
|
|
12167
|
+
"meta.service_registry.gathered_sync_transmission_reconcile_requested",
|
|
12168
|
+
{
|
|
12169
|
+
serviceName: ctx.serviceName,
|
|
12170
|
+
__reason: "handshake"
|
|
12171
|
+
}
|
|
12252
12172
|
);
|
|
12253
12173
|
}).doOn("meta.rest.handshake", "meta.socket.handshake");
|
|
12254
12174
|
}
|
|
@@ -13243,6 +13163,8 @@ export {
|
|
|
13243
13163
|
EphemeralTask2 as EphemeralTask,
|
|
13244
13164
|
GraphMetadataController,
|
|
13245
13165
|
GraphRoutine2 as GraphRoutine,
|
|
13166
|
+
RUNTIME_VALIDATION_INTENTS,
|
|
13167
|
+
RUNTIME_VALIDATION_SIGNALS,
|
|
13246
13168
|
RestController,
|
|
13247
13169
|
ServiceRegistry,
|
|
13248
13170
|
SignalController,
|