@cadenza.io/service 2.17.80 → 2.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/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
- queryData: {
240
- ...this.queryData,
241
- data: {
242
- ...ctx.data
243
- },
244
- ...dynamicQueryData
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
  }
@@ -676,6 +683,7 @@ function hasSignificantRuntimeStatusChange(previous, next) {
676
683
  // src/registry/ServiceRegistry.ts
677
684
  var META_SERVICE_REGISTRY_FULL_SYNC_INTENT = "meta-service-registry-full-sync";
678
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";
679
687
  var META_RUNTIME_STATUS_HEARTBEAT_TICK_SIGNAL = "meta.service_registry.runtime_status.heartbeat_tick";
680
688
  var META_RUNTIME_STATUS_MONITOR_TICK_SIGNAL = "meta.service_registry.runtime_status.monitor_tick";
681
689
  var INTERNAL_RUNTIME_STATUS_TASK_NAMES = /* @__PURE__ */ new Set([
@@ -763,18 +771,6 @@ function normalizeServiceRegistryInsertResult(tableName, ctx, queryData, rawResu
763
771
  }
764
772
  return result;
765
773
  }
766
- function shouldTraceIotDbRegistryPath(localServiceName, targetServiceName) {
767
- return targetServiceName === "IotDbService" && localServiceName !== "IotDbService";
768
- }
769
- function summarizeTransportDescriptors(transports) {
770
- return transports.map((transport) => ({
771
- uuid: transport.uuid,
772
- serviceInstanceId: transport.serviceInstanceId,
773
- role: transport.role,
774
- origin: transport.origin,
775
- protocols: transport.protocols
776
- }));
777
- }
778
774
  function resolveServiceRegistryInsertTask(tableName, queryData = {}, options = {}) {
779
775
  const remoteInsertTask = CadenzaService.createCadenzaDBInsertTask(
780
776
  tableName,
@@ -791,6 +787,10 @@ function resolveServiceRegistryInsertTask(tableName, queryData = {}, options = {
791
787
  const nextQueryData = buildServiceRegistryInsertQueryData(ctx, queryData);
792
788
  const delegationContext = ensureDelegationContextMetadata({
793
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,
794
794
  queryData: nextQueryData
795
795
  });
796
796
  delegationContext.__metadata.__skipRemoteExecution = delegationContext.__metadata.__skipRemoteExecution ?? delegationContext.__skipRemoteExecution ?? false;
@@ -914,6 +914,7 @@ var ServiceRegistry = class _ServiceRegistry {
914
914
  this.deputies = /* @__PURE__ */ new Map();
915
915
  this.remoteSignals = /* @__PURE__ */ new Map();
916
916
  this.remoteIntents = /* @__PURE__ */ new Map();
917
+ this.gatheredSyncTransmissionServices = /* @__PURE__ */ new Set();
917
918
  this.remoteIntentDeputiesByKey = /* @__PURE__ */ new Map();
918
919
  this.remoteIntentDeputiesByTask = /* @__PURE__ */ new Map();
919
920
  this.dependeesByService = /* @__PURE__ */ new Map();
@@ -1165,21 +1166,6 @@ var ServiceRegistry = class _ServiceRegistry {
1165
1166
  trackedInstance.acceptingWork = snapshot.acceptingWork;
1166
1167
  trackedInstance.reportedAt = trackedInstance.reportedAt ?? (/* @__PURE__ */ new Date()).toISOString();
1167
1168
  }
1168
- if (shouldTraceIotDbRegistryPath(this.serviceName, serviceName)) {
1169
- console.log("[CADENZA_REGISTRY_DEBUG] handle_instance_update", {
1170
- localServiceName: this.serviceName,
1171
- localServiceInstanceId: this.serviceInstanceId,
1172
- targetServiceName: serviceName,
1173
- targetServiceInstanceId: uuid8,
1174
- existingInstance: !!existing,
1175
- deleted,
1176
- remoteInterest: this.deputies.has(serviceName) || this.remoteIntents.has(serviceName) || this.remoteSignals.has(serviceName),
1177
- hasDeputies: this.deputies.has(serviceName),
1178
- hasRemoteIntents: this.remoteIntents.has(serviceName),
1179
- hasRemoteSignals: this.remoteSignals.has(serviceName),
1180
- transports: trackedInstance ? summarizeTransportDescriptors(trackedInstance.transports) : []
1181
- });
1182
- }
1183
1169
  if (!serviceInstance.isBootstrapPlaceholder) {
1184
1170
  this.reconcileBootstrapPlaceholderInstance(serviceName, uuid8, emit);
1185
1171
  }
@@ -1192,7 +1178,8 @@ var ServiceRegistry = class _ServiceRegistry {
1192
1178
  if (this.deputies.has(serviceName) || this.remoteIntents.has(serviceName) || this.remoteSignals.has(serviceName)) {
1193
1179
  const connected = this.ensureDependeeClientForInstance(
1194
1180
  trackedInstance,
1195
- emit
1181
+ emit,
1182
+ ctx
1196
1183
  );
1197
1184
  if (!connected) {
1198
1185
  emit("meta.service_registry.routeable_transport_missing", {
@@ -1235,27 +1222,6 @@ var ServiceRegistry = class _ServiceRegistry {
1235
1222
  break;
1236
1223
  }
1237
1224
  }
1238
- if (shouldTraceIotDbRegistryPath(
1239
- this.serviceName,
1240
- ownerInstance?.serviceName ?? ctx.serviceName ?? void 0
1241
- )) {
1242
- console.log("[CADENZA_REGISTRY_DEBUG] handle_transport_update", {
1243
- localServiceName: this.serviceName,
1244
- localServiceInstanceId: this.serviceInstanceId,
1245
- transport: {
1246
- uuid: transport.uuid,
1247
- serviceInstanceId: transport.serviceInstanceId,
1248
- role: transport.role,
1249
- origin: transport.origin,
1250
- protocols: transport.protocols,
1251
- deleted: transport.deleted
1252
- },
1253
- ownerFound: !!ownerInstance,
1254
- ownerServiceName: ownerInstance?.serviceName,
1255
- ownerInstanceId: ownerInstance?.uuid,
1256
- ownerTransports: ownerInstance ? summarizeTransportDescriptors(ownerInstance.transports) : []
1257
- });
1258
- }
1259
1225
  if (!ownerInstance) {
1260
1226
  return false;
1261
1227
  }
@@ -1281,7 +1247,7 @@ var ServiceRegistry = class _ServiceRegistry {
1281
1247
  if (!hasRemoteInterest) {
1282
1248
  return true;
1283
1249
  }
1284
- this.ensureDependeeClientForInstance(ownerInstance, emit);
1250
+ this.ensureDependeeClientForInstance(ownerInstance, emit, ctx);
1285
1251
  return true;
1286
1252
  },
1287
1253
  "Handles service transport updates independently from instance rows."
@@ -1311,29 +1277,12 @@ var ServiceRegistry = class _ServiceRegistry {
1311
1277
  "Tracks remote dependency instances for runtime heartbeat monitoring."
1312
1278
  ).doOn("meta.service_registry.dependee_registered");
1313
1279
  const normalizeServiceInstancesFromSync = (ctx) => this.normalizeServiceInstancesFromSync(ctx);
1314
- const getLocalTraceContext = () => ({
1315
- localServiceName: this.serviceName,
1316
- localServiceInstanceId: this.serviceInstanceId
1317
- });
1318
1280
  CadenzaService.createMetaTask("Split service instances", function* (ctx) {
1319
1281
  const serviceInstances = normalizeServiceInstancesFromSync(ctx);
1320
1282
  if (serviceInstances.length === 0) {
1321
1283
  return;
1322
1284
  }
1323
1285
  for (const serviceInstance of serviceInstances) {
1324
- const { localServiceName, localServiceInstanceId } = getLocalTraceContext();
1325
- if (shouldTraceIotDbRegistryPath(
1326
- localServiceName,
1327
- serviceInstance.serviceName
1328
- )) {
1329
- console.log("[CADENZA_REGISTRY_DEBUG] split_service_instance", {
1330
- localServiceName,
1331
- localServiceInstanceId,
1332
- targetServiceName: serviceInstance.serviceName,
1333
- targetServiceInstanceId: serviceInstance.uuid,
1334
- transports: summarizeTransportDescriptors(serviceInstance.transports)
1335
- });
1336
- }
1337
1286
  yield { serviceInstance };
1338
1287
  }
1339
1288
  }).doOn(
@@ -1379,6 +1328,15 @@ var ServiceRegistry = class _ServiceRegistry {
1379
1328
  },
1380
1329
  "Handles registration of remote signals"
1381
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
+ );
1382
1340
  this.handleGlobalIntentRegistrationTask = CadenzaService.createMetaTask(
1383
1341
  "Handle global intent registration",
1384
1342
  (ctx, emit) => {
@@ -1388,34 +1346,20 @@ var ServiceRegistry = class _ServiceRegistry {
1388
1346
  if (!a.deleted && b.deleted) return 1;
1389
1347
  return 0;
1390
1348
  });
1391
- if (ctx.__signalName === CADENZA_DB_GATHERED_SYNC_SIGNAL) {
1392
- const relevantIntentNames = sorted.filter(
1393
- (map) => map.intentName === META_SERVICE_REGISTRY_FULL_SYNC_INTENT || map.intentName === "Query service_instance" || map.intentName === "Query service_instance_transport"
1394
- ).map((map) => ({
1395
- intentName: map.intentName,
1396
- serviceName: map.serviceName,
1397
- taskName: map.taskName,
1398
- taskVersion: map.taskVersion,
1399
- deleted: !!map.deleted
1400
- }));
1401
- console.log("[CADENZA_SYNC_DEBUG] gathered_sync_intent_registration", {
1402
- localServiceName: this.serviceName,
1403
- localServiceInstanceId: this.serviceInstanceId,
1404
- signalName: ctx.__signalName,
1405
- totalIntentMaps: sorted.length,
1406
- relevantIntentNames
1407
- });
1408
- }
1409
1349
  for (const map of sorted) {
1410
- if (map.deleted) {
1411
- this.unregisterRemoteIntentDeputy(map);
1412
- continue;
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;
1413
1362
  }
1414
- CadenzaService.inquiryBroker.addIntent({
1415
- name: map.intentName
1416
- });
1417
- this.registerRemoteIntentDeputy(map);
1418
- this.ensureDependeeClientsForService(map.serviceName, emit);
1419
1363
  }
1420
1364
  return true;
1421
1365
  },
@@ -1567,7 +1511,7 @@ var ServiceRegistry = class _ServiceRegistry {
1567
1511
  {
1568
1512
  uuid: report.transportId,
1569
1513
  serviceInstanceId: report.serviceInstanceId,
1570
- role: this.getRoutingTransportRole(),
1514
+ role: report.transportRole ?? this.getRoutingTransportRole(),
1571
1515
  origin: report.transportOrigin,
1572
1516
  protocols: report.transportProtocols && report.transportProtocols.length > 0 ? report.transportProtocols : ["rest", "socket"],
1573
1517
  securityProfile: null,
@@ -1609,21 +1553,6 @@ var ServiceRegistry = class _ServiceRegistry {
1609
1553
  const serviceInstances = this.normalizeServiceInstancesFromSync(
1610
1554
  inquiryResult
1611
1555
  );
1612
- if (shouldTraceIotDbRegistryPath(this.serviceName, "IotDbService")) {
1613
- const tracedInstances = serviceInstances.filter((instance) => instance.serviceName === "IotDbService").map((instance) => ({
1614
- uuid: instance.uuid,
1615
- isActive: instance.isActive,
1616
- isNonResponsive: instance.isNonResponsive,
1617
- isBlocked: instance.isBlocked,
1618
- transports: summarizeTransportDescriptors(instance.transports)
1619
- }));
1620
- console.log("[CADENZA_REGISTRY_DEBUG] full_sync_instances", {
1621
- localServiceName: this.serviceName,
1622
- localServiceInstanceId: this.serviceInstanceId,
1623
- totalServiceInstances: serviceInstances.length,
1624
- tracedInstances
1625
- });
1626
- }
1627
1556
  return {
1628
1557
  ...ctx,
1629
1558
  signalToTaskMaps,
@@ -1720,44 +1649,6 @@ var ServiceRegistry = class _ServiceRegistry {
1720
1649
  let retries = __retries ?? 0;
1721
1650
  let triedInstances = __triedInstances ?? [];
1722
1651
  const preferredRole = this.getRoutingTransportRole();
1723
- const allInstances = this.instances.get(__serviceName) ?? [];
1724
- const candidateDiagnostics = shouldTraceIotDbRegistryPath(
1725
- this.serviceName,
1726
- __serviceName ?? void 0
1727
- ) ? allInstances.map((instance) => ({
1728
- uuid: instance.uuid,
1729
- isActive: instance.isActive,
1730
- isNonResponsive: instance.isNonResponsive,
1731
- isBlocked: instance.isBlocked,
1732
- isFrontend: instance.isFrontend,
1733
- transports: summarizeTransportDescriptors(instance.transports),
1734
- selectedTransport: instance.isFrontend ? null : this.selectTransportForInstance(
1735
- instance,
1736
- context,
1737
- preferredRole
1738
- ) ? {
1739
- uuid: this.selectTransportForInstance(
1740
- instance,
1741
- context,
1742
- preferredRole
1743
- ).uuid,
1744
- role: this.selectTransportForInstance(
1745
- instance,
1746
- context,
1747
- preferredRole
1748
- ).role,
1749
- origin: this.selectTransportForInstance(
1750
- instance,
1751
- context,
1752
- preferredRole
1753
- ).origin,
1754
- protocols: this.selectTransportForInstance(
1755
- instance,
1756
- context,
1757
- preferredRole
1758
- ).protocols
1759
- } : null
1760
- })) : void 0;
1761
1652
  const instances = this.instances.get(__serviceName)?.filter((instance) => {
1762
1653
  if (targetServiceInstanceId && instance.uuid !== targetServiceInstanceId) {
1763
1654
  return false;
@@ -1790,20 +1681,6 @@ var ServiceRegistry = class _ServiceRegistry {
1790
1681
  }
1791
1682
  return (a.numberOfRunningGraphs ?? 0) - (b.numberOfRunningGraphs ?? 0);
1792
1683
  });
1793
- if (candidateDiagnostics) {
1794
- console.log("[CADENZA_REGISTRY_DEBUG] get_balanced_instance", {
1795
- localServiceName: this.serviceName,
1796
- localServiceInstanceId: this.serviceInstanceId,
1797
- targetServiceName: __serviceName,
1798
- preferredRole,
1799
- useSocket: this.useSocket,
1800
- targetServiceInstanceId,
1801
- retries,
1802
- triedInstances,
1803
- candidateDiagnostics,
1804
- filteredInstanceIds: instances?.map((instance) => instance.uuid) ?? []
1805
- });
1806
- }
1807
1684
  if (!instances || instances.length === 0 || retries > this.retryCount) {
1808
1685
  context.errored = true;
1809
1686
  context.__error = this.isFrontend && preferredRole === "public" ? `No public transport available for ${__serviceName}.` : `No routeable ${preferredRole} transport available for ${__serviceName}. Retries: ${retries}.`;
@@ -2061,6 +1938,7 @@ var ServiceRegistry = class _ServiceRegistry {
2061
1938
  serviceName: report.serviceName,
2062
1939
  serviceInstanceId: report.serviceInstanceId,
2063
1940
  transportId: report.transportId,
1941
+ transportRole: report.transportRole,
2064
1942
  transportOrigin: report.transportOrigin,
2065
1943
  transportProtocols: report.transportProtocols,
2066
1944
  isFrontend: report.isFrontend,
@@ -2677,6 +2555,64 @@ var ServiceRegistry = class _ServiceRegistry {
2677
2555
  (instance) => !!instance && !!instance.isActive && !instance.isNonResponsive && !instance.isBlocked
2678
2556
  );
2679
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
+ }
2680
2616
  registerRemoteIntentDeputy(map) {
2681
2617
  if (!this.serviceName || map.serviceName === this.serviceName) {
2682
2618
  return;
@@ -2919,38 +2855,18 @@ var ServiceRegistry = class _ServiceRegistry {
2919
2855
  }
2920
2856
  return communicationTypes;
2921
2857
  }
2922
- ensureDependeeClientForInstance(instance, emit) {
2858
+ ensureDependeeClientForInstance(instance, emit, ctx) {
2923
2859
  if (!instance || instance.uuid === this.serviceInstanceId || instance.isFrontend || !instance.isActive || instance.isNonResponsive || instance.isBlocked) {
2924
2860
  return false;
2925
2861
  }
2926
2862
  if (!this.deputies.has(instance.serviceName) && !this.remoteIntents.has(instance.serviceName) && !this.remoteSignals.has(instance.serviceName)) {
2927
2863
  return false;
2928
2864
  }
2929
- const transport = this.getRouteableTransport(
2865
+ const transport = this.selectTransportForInstance(
2930
2866
  instance,
2931
- this.useSocket ? "socket" : "rest"
2932
- );
2933
- if (shouldTraceIotDbRegistryPath(this.serviceName, instance.serviceName)) {
2934
- console.log("[CADENZA_REGISTRY_DEBUG] ensure_dependee_client_for_instance", {
2935
- localServiceName: this.serviceName,
2936
- localServiceInstanceId: this.serviceInstanceId,
2937
- targetServiceName: instance.serviceName,
2938
- targetServiceInstanceId: instance.uuid,
2939
- useSocket: this.useSocket,
2940
- routeableRole: this.getRoutingTransportRole(),
2941
- hasDeputies: this.deputies.has(instance.serviceName),
2942
- hasRemoteIntents: this.remoteIntents.has(instance.serviceName),
2943
- hasRemoteSignals: this.remoteSignals.has(instance.serviceName),
2944
- clientCreatedTransportIds: instance.clientCreatedTransportIds ?? [],
2945
- transports: summarizeTransportDescriptors(instance.transports),
2946
- selectedTransport: transport ? {
2947
- uuid: transport.uuid,
2948
- role: transport.role,
2949
- origin: transport.origin,
2950
- protocols: transport.protocols
2951
- } : null
2952
- });
2953
- }
2867
+ ctx ?? {},
2868
+ this.getRoutingTransportRole()
2869
+ );
2954
2870
  if (!transport || this.hasTransportClientCreated(instance, transport.uuid)) {
2955
2871
  return false;
2956
2872
  }
@@ -2967,9 +2883,9 @@ var ServiceRegistry = class _ServiceRegistry {
2967
2883
  this.markTransportClientCreated(instance, transport.uuid);
2968
2884
  return true;
2969
2885
  }
2970
- ensureDependeeClientsForService(serviceName, emit) {
2886
+ ensureDependeeClientsForService(serviceName, emit, ctx) {
2971
2887
  for (const instance of this.instances.get(serviceName) ?? []) {
2972
- this.ensureDependeeClientForInstance(instance, emit);
2888
+ this.ensureDependeeClientForInstance(instance, emit, ctx);
2973
2889
  }
2974
2890
  }
2975
2891
  hasTransportClientCreated(instance, transportId) {
@@ -3028,6 +2944,10 @@ var ServiceRegistry = class _ServiceRegistry {
3028
2944
  if (!instances?.length) {
3029
2945
  return;
3030
2946
  }
2947
+ const resolvedInstance = instances.find(
2948
+ (instance) => instance.uuid === resolvedInstanceId
2949
+ );
2950
+ const frontendRoutingRole = this.isFrontend ? this.getRoutingTransportRole() : null;
3031
2951
  const placeholders = instances.filter(
3032
2952
  (instance) => instance.uuid !== resolvedInstanceId && instance.isBootstrapPlaceholder
3033
2953
  );
@@ -3039,7 +2959,33 @@ var ServiceRegistry = class _ServiceRegistry {
3039
2959
  const requiredForReadiness = this.readinessDependeeByInstance.has(
3040
2960
  placeholder.uuid
3041
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
+ }
3042
2985
  for (const transport of placeholder.transports) {
2986
+ if (preservedTransportIds.has(transport.uuid)) {
2987
+ continue;
2988
+ }
3043
2989
  const transportKey = buildTransportClientKey(transport);
3044
2990
  emit(`meta.socket_shutdown_requested:${transportKey}`, {});
3045
2991
  emit(`meta.fetch.destroy_requested:${transportKey}`, {});
@@ -3160,6 +3106,7 @@ var ServiceRegistry = class _ServiceRegistry {
3160
3106
  return null;
3161
3107
  }
3162
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;
3163
3110
  const transportOrigin = ctx.transportOrigin ?? ctx.serviceOrigin ?? ctx.serviceTransport?.origin ?? void 0;
3164
3111
  const transportProtocols = Array.isArray(
3165
3112
  ctx.transportProtocols ?? ctx.serviceTransport?.protocols
@@ -3185,6 +3132,7 @@ var ServiceRegistry = class _ServiceRegistry {
3185
3132
  serviceName,
3186
3133
  serviceInstanceId,
3187
3134
  transportId: typeof transportId === "string" && transportId.trim().length > 0 ? transportId : void 0,
3135
+ transportRole: transportRole === "internal" || transportRole === "public" ? transportRole : void 0,
3188
3136
  transportOrigin: typeof transportOrigin === "string" && transportOrigin.trim().length > 0 ? transportOrigin : void 0,
3189
3137
  transportProtocols: transportProtocols && transportProtocols.length > 0 ? Array.from(new Set(transportProtocols)) : void 0,
3190
3138
  isFrontend: typeof ctx.isFrontend === "boolean" ? ctx.isFrontend : typeof ctx.serviceInstance?.isFrontend === "boolean" ? ctx.serviceInstance.isFrontend : void 0,
@@ -3207,13 +3155,16 @@ var ServiceRegistry = class _ServiceRegistry {
3207
3155
  const protocols = report.transportProtocols && report.transportProtocols.length > 0 ? report.transportProtocols : ["rest", "socket"];
3208
3156
  const existingTransport = this.getTransportById(instance, report.transportId);
3209
3157
  if (existingTransport) {
3158
+ if (report.transportRole) {
3159
+ existingTransport.role = report.transportRole;
3160
+ }
3210
3161
  existingTransport.origin = report.transportOrigin;
3211
3162
  existingTransport.protocols = protocols;
3212
3163
  } else {
3213
3164
  instance.transports.push({
3214
3165
  uuid: report.transportId,
3215
3166
  serviceInstanceId: report.serviceInstanceId,
3216
- role: this.getRoutingTransportRole(),
3167
+ role: report.transportRole ?? this.getRoutingTransportRole(),
3217
3168
  origin: report.transportOrigin,
3218
3169
  protocols,
3219
3170
  securityProfile: null,
@@ -3259,24 +3210,18 @@ var ServiceRegistry = class _ServiceRegistry {
3259
3210
  localInstance.isBlocked
3260
3211
  );
3261
3212
  const reportedAt = (/* @__PURE__ */ new Date()).toISOString();
3213
+ const transport = this.getRouteableTransport(
3214
+ localInstance,
3215
+ this.useSocket ? "socket" : "rest",
3216
+ "internal"
3217
+ );
3262
3218
  const report = {
3263
3219
  serviceName: this.serviceName,
3264
3220
  serviceInstanceId: this.serviceInstanceId,
3265
- transportId: this.getRouteableTransport(
3266
- localInstance,
3267
- this.useSocket ? "socket" : "rest",
3268
- "internal"
3269
- )?.uuid ?? void 0,
3270
- transportOrigin: this.getRouteableTransport(
3271
- localInstance,
3272
- this.useSocket ? "socket" : "rest",
3273
- "internal"
3274
- )?.origin ?? void 0,
3275
- transportProtocols: this.getRouteableTransport(
3276
- localInstance,
3277
- this.useSocket ? "socket" : "rest",
3278
- "internal"
3279
- )?.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,
3280
3225
  isFrontend: localInstance.isFrontend,
3281
3226
  reportedAt,
3282
3227
  state: snapshot.state,
@@ -3640,6 +3585,7 @@ var ServiceRegistry = class _ServiceRegistry {
3640
3585
  this.deputies.clear();
3641
3586
  this.remoteSignals.clear();
3642
3587
  this.remoteIntents.clear();
3588
+ this.gatheredSyncTransmissionServices.clear();
3643
3589
  this.remoteIntentDeputiesByKey.clear();
3644
3590
  this.remoteIntentDeputiesByTask.clear();
3645
3591
  this.dependeesByService.clear();
@@ -3998,19 +3944,6 @@ var RestController = class _RestController {
3998
3944
  let ctx2;
3999
3945
  try {
4000
3946
  ctx2 = req.body;
4001
- if (ctx2?.__signalName === "global.meta.cadenza_db.gathered_sync_data") {
4002
- console.log("[CADENZA_SYNC_DEBUG] received_sync_signal_rest", {
4003
- localServiceName: CadenzaService.serviceRegistry.serviceName,
4004
- localServiceInstanceId: CadenzaService.serviceRegistry.serviceInstanceId,
4005
- signalName: ctx2.__signalName,
4006
- intentToTaskMaps: Array.isArray(ctx2.intentToTaskMaps) ? ctx2.intentToTaskMaps.length : 0,
4007
- signalToTaskMaps: Array.isArray(ctx2.signalToTaskMaps) ? ctx2.signalToTaskMaps.length : 0,
4008
- serviceInstances: Array.isArray(ctx2.serviceInstances) ? ctx2.serviceInstances.length : 0,
4009
- serviceInstanceTransports: Array.isArray(
4010
- ctx2.serviceInstanceTransports
4011
- ) ? ctx2.serviceInstanceTransports.length : 0
4012
- });
4013
- }
4014
3947
  if (!CadenzaService.signalBroker.listObservedSignals().includes(ctx2.__signalName)) {
4015
3948
  res.send({
4016
3949
  ...ctx2,
@@ -4395,21 +4328,6 @@ var RestController = class _RestController {
4395
4328
  if (ctx2.__signalName === void 0) {
4396
4329
  return;
4397
4330
  }
4398
- if (ctx2.__signalName === "global.meta.cadenza_db.gathered_sync_data") {
4399
- console.log("[CADENZA_SYNC_DEBUG] transmit_sync_signal_rest", {
4400
- localServiceName: CadenzaService.serviceRegistry.serviceName,
4401
- localServiceInstanceId: CadenzaService.serviceRegistry.serviceInstanceId,
4402
- targetServiceName: serviceName,
4403
- targetUrl: URL2,
4404
- signalName: ctx2.__signalName,
4405
- intentToTaskMaps: Array.isArray(ctx2.intentToTaskMaps) ? ctx2.intentToTaskMaps.length : 0,
4406
- signalToTaskMaps: Array.isArray(ctx2.signalToTaskMaps) ? ctx2.signalToTaskMaps.length : 0,
4407
- serviceInstances: Array.isArray(ctx2.serviceInstances) ? ctx2.serviceInstances.length : 0,
4408
- serviceInstanceTransports: Array.isArray(
4409
- ctx2.serviceInstanceTransports
4410
- ) ? ctx2.serviceInstanceTransports.length : 0
4411
- });
4412
- }
4413
4331
  fetchDiagnostics.signalTransmissions++;
4414
4332
  fetchDiagnostics.updatedAt = Date.now();
4415
4333
  let response;
@@ -5419,10 +5337,14 @@ var SocketController = class _SocketController {
5419
5337
  const communicationTypes = this.normalizeCommunicationTypes(
5420
5338
  input.communicationTypes
5421
5339
  );
5340
+ const transportProtocols = Array.isArray(input.transportProtocols) ? input.transportProtocols.map((entry) => String(entry)) : [];
5422
5341
  const serviceName = String(input.serviceName ?? "");
5423
5342
  const serviceTransportId = String(input.serviceTransportId ?? "");
5424
5343
  const serviceOrigin = String(input.serviceOrigin ?? "");
5425
5344
  const parsedOrigin = parseTransportOrigin(serviceOrigin);
5345
+ if (!transportProtocols.includes("socket")) {
5346
+ return false;
5347
+ }
5426
5348
  if (!serviceTransportId || !serviceOrigin || !parsedOrigin) {
5427
5349
  CadenzaService.log(
5428
5350
  "Socket client setup skipped due to missing transport origin",
@@ -5448,7 +5370,7 @@ var SocketController = class _SocketController {
5448
5370
  serviceName,
5449
5371
  serviceTransportId,
5450
5372
  serviceOrigin,
5451
- transportProtocols: input.transportProtocols,
5373
+ transportProtocols,
5452
5374
  url
5453
5375
  });
5454
5376
  };
@@ -5469,7 +5391,7 @@ var SocketController = class _SocketController {
5469
5391
  serviceName,
5470
5392
  serviceTransportId,
5471
5393
  serviceOrigin,
5472
- transportProtocols: Array.isArray(input.transportProtocols) ? input.transportProtocols.map((entry) => String(entry)) : [],
5394
+ transportProtocols,
5473
5395
  url,
5474
5396
  destroyed: false,
5475
5397
  updatedAt: Date.now()
@@ -5710,19 +5632,6 @@ var SocketController = class _SocketController {
5710
5632
  });
5711
5633
  });
5712
5634
  socket.on("signal", (signalCtx, callback) => {
5713
- if (signalCtx?.__signalName === "global.meta.cadenza_db.gathered_sync_data") {
5714
- console.log("[CADENZA_SYNC_DEBUG] received_sync_signal_socket", {
5715
- localServiceName: CadenzaService.serviceRegistry.serviceName,
5716
- localServiceInstanceId: CadenzaService.serviceRegistry.serviceInstanceId,
5717
- signalName: signalCtx.__signalName,
5718
- intentToTaskMaps: Array.isArray(signalCtx.intentToTaskMaps) ? signalCtx.intentToTaskMaps.length : 0,
5719
- signalToTaskMaps: Array.isArray(signalCtx.signalToTaskMaps) ? signalCtx.signalToTaskMaps.length : 0,
5720
- serviceInstances: Array.isArray(signalCtx.serviceInstances) ? signalCtx.serviceInstances.length : 0,
5721
- serviceInstanceTransports: Array.isArray(
5722
- signalCtx.serviceInstanceTransports
5723
- ) ? signalCtx.serviceInstanceTransports.length : 0
5724
- });
5725
- }
5726
5635
  if (CadenzaService.signalBroker.listObservedSignals().includes(signalCtx.__signalName)) {
5727
5636
  if (isSocketAckCallback(callback)) {
5728
5637
  callback({
@@ -6021,21 +5930,6 @@ var SocketController = class _SocketController {
6021
5930
  if (signalCtx.__signalName === void 0) {
6022
5931
  return;
6023
5932
  }
6024
- if (signalCtx.__signalName === "global.meta.cadenza_db.gathered_sync_data") {
6025
- console.log("[CADENZA_SYNC_DEBUG] transmit_sync_signal_socket", {
6026
- localServiceName: CadenzaService.serviceRegistry.serviceName,
6027
- localServiceInstanceId: CadenzaService.serviceRegistry.serviceInstanceId,
6028
- targetServiceName: serviceName,
6029
- targetUrl: url,
6030
- signalName: signalCtx.__signalName,
6031
- intentToTaskMaps: Array.isArray(signalCtx.intentToTaskMaps) ? signalCtx.intentToTaskMaps.length : 0,
6032
- signalToTaskMaps: Array.isArray(signalCtx.signalToTaskMaps) ? signalCtx.signalToTaskMaps.length : 0,
6033
- serviceInstances: Array.isArray(signalCtx.serviceInstances) ? signalCtx.serviceInstances.length : 0,
6034
- serviceInstanceTransports: Array.isArray(
6035
- signalCtx.serviceInstanceTransports
6036
- ) ? signalCtx.serviceInstanceTransports.length : 0
6037
- });
6038
- }
6039
5933
  delete signalCtx.__broadcast;
6040
5934
  const response = await runtimeHandle.emitWhenReady?.("signal", signalCtx, 5e3) ?? {
6041
5935
  errored: true,
@@ -6076,7 +5970,7 @@ var SocketController = class _SocketController {
6076
5970
  communicationTypes,
6077
5971
  serviceTransportId,
6078
5972
  serviceOrigin,
6079
- transportProtocols: input.transportProtocols,
5973
+ transportProtocols,
6080
5974
  handshakeData: {
6081
5975
  instanceId: CadenzaService.serviceRegistry.serviceInstanceId,
6082
5976
  serviceName: CadenzaService.serviceRegistry.serviceName
@@ -6436,6 +6330,209 @@ var SignalController = class _SignalController {
6436
6330
  }
6437
6331
  };
6438
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
+
6439
6536
  // src/graph/controllers/registerActorSessionPersistence.ts
6440
6537
  import { META_ACTOR_SESSION_STATE_PERSIST_INTENT } from "@cadenza.io/core";
6441
6538
  function registerActorSessionPersistenceTasks() {
@@ -9149,7 +9246,6 @@ function buildSyncExecutionEnvelope(ctx, queryData) {
9149
9246
  }
9150
9247
  function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, options = {}) {
9151
9248
  const localInsertTask = CadenzaService.getLocalCadenzaDBInsertTask(tableName);
9152
- const debugTable = shouldDebugSyncTable(tableName);
9153
9249
  if (!localInsertTask && !isCadenzaDBReady) {
9154
9250
  return void 0;
9155
9251
  }
@@ -9162,16 +9258,6 @@ function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, opti
9162
9258
  register: false,
9163
9259
  isHidden: true
9164
9260
  });
9165
- if (debugTable) {
9166
- logSyncDebug("insert_task_resolved", {
9167
- tableName,
9168
- localInsertTaskName: localInsertTask?.name ?? null,
9169
- remoteInsertTaskName: isCadenzaDBReady ? targetTask.name : null,
9170
- targetTaskName: targetTask.name,
9171
- queryData,
9172
- options
9173
- });
9174
- }
9175
9261
  const prepareExecutionTask = CadenzaService.createMetaTask(
9176
9262
  `Prepare graph sync insert for ${tableName}`,
9177
9263
  (ctx) => {
@@ -9182,12 +9268,12 @@ function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, opti
9182
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) {
9183
9269
  console.warn(
9184
9270
  "[CADENZA_SYNC_EMPTY_INSERT]",
9185
- summarizeSyncDebugValue({
9271
+ {
9186
9272
  tableName,
9187
9273
  queryData: originalQueryData,
9188
9274
  ctx,
9189
9275
  joinedContexts: Array.isArray(ctx.joinedContexts) ? ctx.joinedContexts : []
9190
- })
9276
+ }
9191
9277
  );
9192
9278
  }
9193
9279
  return buildSyncExecutionEnvelope(
@@ -9201,37 +9287,6 @@ function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, opti
9201
9287
  isHidden: true
9202
9288
  }
9203
9289
  );
9204
- if (debugTable) {
9205
- prepareExecutionTask.then(
9206
- CadenzaService.createMetaTask(
9207
- `Log prepared graph sync insert execution for ${tableName}`,
9208
- (ctx) => {
9209
- if (tableName === "task") {
9210
- if (!shouldDebugTaskSyncPayload(ctx)) {
9211
- return ctx;
9212
- }
9213
- logSyncDebug("insert_prepare", {
9214
- tableName,
9215
- targetTaskName: targetTask.name,
9216
- payload: buildTaskSyncDebugPayload(ctx)
9217
- });
9218
- return ctx;
9219
- }
9220
- logSyncDebug("insert_prepare", {
9221
- tableName,
9222
- targetTaskName: targetTask.name,
9223
- ctx
9224
- });
9225
- return ctx;
9226
- },
9227
- `Logs prepared ${tableName} sync insert payloads.`,
9228
- {
9229
- register: false,
9230
- isHidden: true
9231
- }
9232
- )
9233
- );
9234
- }
9235
9290
  const finalizeExecutionTask = CadenzaService.createMetaTask(
9236
9291
  `Finalize graph sync insert for ${tableName}`,
9237
9292
  (ctx) => {
@@ -9242,25 +9297,6 @@ function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, opti
9242
9297
  ...ctx,
9243
9298
  queryData: ctx.queryData && typeof ctx.queryData === "object" ? ctx.queryData : originalQueryData
9244
9299
  };
9245
- if (debugTable) {
9246
- if (tableName === "task") {
9247
- if (shouldDebugTaskSyncPayload(normalizedContext)) {
9248
- logSyncDebug("insert_finalize", {
9249
- tableName,
9250
- targetTaskName: targetTask.name,
9251
- success: didSyncInsertSucceed(normalizedContext),
9252
- payload: buildTaskSyncDebugPayload(normalizedContext)
9253
- });
9254
- }
9255
- } else {
9256
- logSyncDebug("insert_finalize", {
9257
- tableName,
9258
- targetTaskName: targetTask.name,
9259
- success: didSyncInsertSucceed(normalizedContext),
9260
- ctx: normalizedContext
9261
- });
9262
- }
9263
- }
9264
9300
  return normalizedContext;
9265
9301
  },
9266
9302
  `Finalizes ${tableName} graph-sync insert execution after the authority task finishes.`,
@@ -9295,139 +9331,6 @@ var AUTHORITY_QUERY_RESULT_KEYS = {
9295
9331
  intent_registry: "intentRegistrys"
9296
9332
  };
9297
9333
  var EARLY_SYNC_REQUEST_DELAYS_MS = [2e3, 1e4, 3e4];
9298
- var SYNC_DEBUG_PREFIX = "[CADENZA_SYNC_DEBUG]";
9299
- var SYNC_DEBUG_ENABLED = typeof process !== "undefined" && typeof process.env === "object" && process.env.CADENZA_SYNC_DEBUG === "true";
9300
- var SYNC_DEBUG_TABLES = /* @__PURE__ */ new Set(["intent_to_task_map", "task"]);
9301
- var SYNC_DEBUG_TASK_NAMES = /* @__PURE__ */ new Set([
9302
- "Query service_instance",
9303
- "Query service_instance_transport",
9304
- "Query intent_to_task_map",
9305
- "Query signal_to_task_map",
9306
- "Prepare for signal sync",
9307
- "Compile sync data and broadcast",
9308
- "Forward service instance sync",
9309
- "Forward service transport sync",
9310
- "Forward intent to task map sync",
9311
- "Forward signal to task map sync",
9312
- "Normalize telemetry ingest payload",
9313
- "Get telemetry session state",
9314
- "Normalize anomaly detect input",
9315
- "Read anomaly runtime session",
9316
- "Normalize prediction compute input",
9317
- "Normalize telemetry insert queryData"
9318
- ]);
9319
- var SYNC_DEBUG_ROUTINE_NAMES = /* @__PURE__ */ new Set(["Sync services"]);
9320
- var SYNC_DEBUG_INTENT_NAMES = /* @__PURE__ */ new Set([
9321
- "meta-service-registry-full-sync",
9322
- "runner-traffic-runtime-get",
9323
- "iot-telemetry-ingest",
9324
- "iot-telemetry-session-get",
9325
- "iot-anomaly-detect",
9326
- "iot-anomaly-runtime-get",
9327
- "iot-prediction-compute",
9328
- "iot-db-telemetry-insert",
9329
- "query-pg-cadenza-db-postgres-actor-service_instance",
9330
- "query-pg-cadenza-db-postgres-actor-service_instance_transport",
9331
- "query-pg-cadenza-db-postgres-actor-intent_to_task_map",
9332
- "query-pg-cadenza-db-postgres-actor-signal_to_task_map"
9333
- ]);
9334
- function shouldDebugSyncTable(tableName) {
9335
- return SYNC_DEBUG_ENABLED && SYNC_DEBUG_TABLES.has(tableName);
9336
- }
9337
- function shouldDebugSyncTaskName(taskName) {
9338
- return SYNC_DEBUG_ENABLED && typeof taskName === "string" && SYNC_DEBUG_TASK_NAMES.has(taskName);
9339
- }
9340
- function shouldDebugSyncRoutineName(routineName) {
9341
- return SYNC_DEBUG_ENABLED && typeof routineName === "string" && SYNC_DEBUG_ROUTINE_NAMES.has(routineName);
9342
- }
9343
- function shouldDebugSyncIntentName(intentName) {
9344
- return SYNC_DEBUG_ENABLED && typeof intentName === "string" && SYNC_DEBUG_INTENT_NAMES.has(intentName);
9345
- }
9346
- function summarizeSyncDebugValue(value, depth = 0) {
9347
- if (value === null || value === void 0) {
9348
- return value;
9349
- }
9350
- if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
9351
- return value;
9352
- }
9353
- if (value instanceof Set) {
9354
- return {
9355
- __type: "Set",
9356
- size: value.size,
9357
- values: Array.from(value).slice(0, 8).map((item) => summarizeSyncDebugValue(item, depth + 1))
9358
- };
9359
- }
9360
- if (value instanceof Map) {
9361
- return {
9362
- __type: "Map",
9363
- size: value.size
9364
- };
9365
- }
9366
- if (Array.isArray(value)) {
9367
- return {
9368
- __type: "Array",
9369
- length: value.length,
9370
- items: value.slice(0, 5).map((item) => summarizeSyncDebugValue(item, depth + 1))
9371
- };
9372
- }
9373
- if (typeof value === "object") {
9374
- if (depth >= 2) {
9375
- return "[object]";
9376
- }
9377
- const output = {};
9378
- const entries = Object.entries(value).filter(
9379
- ([key]) => ![
9380
- "functionString",
9381
- "tagIdGetter",
9382
- "__functionString",
9383
- "__getTagCallback",
9384
- "joinedContexts",
9385
- "task",
9386
- "taskInstance",
9387
- "tasks"
9388
- ].includes(key)
9389
- ).slice(0, 12);
9390
- for (const [key, nestedValue] of entries) {
9391
- output[key] = summarizeSyncDebugValue(nestedValue, depth + 1);
9392
- }
9393
- return output;
9394
- }
9395
- return String(value);
9396
- }
9397
- function logSyncDebug(event, payload) {
9398
- console.log(`${SYNC_DEBUG_PREFIX} ${event}`, summarizeSyncDebugValue(payload));
9399
- }
9400
- function buildTaskSyncDebugPayload(ctx) {
9401
- const data = ctx.data && typeof ctx.data === "object" ? ctx.data : {};
9402
- const queryData = ctx.queryData && typeof ctx.queryData === "object" ? ctx.queryData : {};
9403
- const queryDataData = queryData.data && typeof queryData.data === "object" ? queryData.data : {};
9404
- const taskPayload = Object.keys(queryDataData).length > 0 ? queryDataData : data;
9405
- const functionString = typeof taskPayload.functionString === "string" ? taskPayload.functionString : typeof taskPayload.function_string === "string" ? taskPayload.function_string : void 0;
9406
- const tagIdGetter = typeof taskPayload.tagIdGetter === "string" ? taskPayload.tagIdGetter : typeof taskPayload.tag_id_getter === "string" ? taskPayload.tag_id_getter : void 0;
9407
- const signals = taskPayload.signals && typeof taskPayload.signals === "object" ? taskPayload.signals : {};
9408
- const intents = taskPayload.intents && typeof taskPayload.intents === "object" ? taskPayload.intents : {};
9409
- return {
9410
- taskName: taskPayload.name ?? taskPayload.taskName ?? taskPayload.task_name ?? ctx.__taskName ?? null,
9411
- serviceName: taskPayload.service_name ?? taskPayload.serviceName ?? ctx.__syncServiceName ?? null,
9412
- functionStringLength: functionString?.length ?? null,
9413
- tagIdGetterLength: tagIdGetter?.length ?? null,
9414
- isMeta: taskPayload.isMeta ?? taskPayload.is_meta ?? null,
9415
- isSubMeta: taskPayload.isSubMeta ?? taskPayload.is_sub_meta ?? null,
9416
- isHidden: taskPayload.isHidden ?? taskPayload.is_hidden ?? null,
9417
- signalsEmitsCount: Array.isArray(signals.emits) ? signals.emits.length : null,
9418
- signalsObservedCount: Array.isArray(signals.observed) ? signals.observed.length : null,
9419
- intentHandlesCount: Array.isArray(intents.handles) ? intents.handles.length : null,
9420
- intentInquiresCount: Array.isArray(intents.inquires) ? intents.inquires.length : null,
9421
- rowCount: ctx.rowCount ?? null,
9422
- errored: ctx.errored ?? false,
9423
- success: ctx.__success ?? null,
9424
- error: ctx.__error ?? null
9425
- };
9426
- }
9427
- function shouldDebugTaskSyncPayload(ctx) {
9428
- const payload = buildTaskSyncDebugPayload(ctx);
9429
- return shouldDebugSyncTaskName(payload.taskName);
9430
- }
9431
9334
  function resolveSyncQueryRows(ctx, tableName) {
9432
9335
  const resultKey = AUTHORITY_QUERY_RESULT_KEYS[tableName];
9433
9336
  const rows = ctx?.[resultKey];
@@ -9874,16 +9777,6 @@ var GraphSyncController = class _GraphSyncController {
9874
9777
  if (!nextTask?.registered) {
9875
9778
  continue;
9876
9779
  }
9877
- if (shouldDebugSyncRoutineName(routine.name) || shouldDebugSyncTaskName(nextTask.name)) {
9878
- logSyncDebug("task_to_routine_split", {
9879
- routineName: routine.name,
9880
- routineVersion: routine.version,
9881
- taskName: nextTask.name,
9882
- taskVersion: nextTask.version,
9883
- serviceName: serviceName2,
9884
- registered: nextTask.registered
9885
- });
9886
- }
9887
9780
  yield {
9888
9781
  __syncing: ctx.__syncing,
9889
9782
  data: {
@@ -10029,20 +9922,6 @@ var GraphSyncController = class _GraphSyncController {
10029
9922
  if (task.registered) continue;
10030
9923
  const { __functionString, __getTagCallback } = task.export();
10031
9924
  this.tasksSynced = false;
10032
- if (shouldDebugSyncTaskName(task.name)) {
10033
- logSyncDebug("task_registration_split", {
10034
- taskName: task.name,
10035
- taskVersion: task.version,
10036
- serviceName: serviceName2,
10037
- register: task.register,
10038
- registered: task.registered,
10039
- hidden: task.hidden,
10040
- exportFunctionLength: __functionString?.length ?? null,
10041
- exportTagGetterLength: __getTagCallback?.length ?? null,
10042
- observedSignals: Array.from(task.observedSignals),
10043
- handledIntents: Array.from(task.handlesIntents)
10044
- });
10045
- }
10046
9925
  yield {
10047
9926
  __syncing: ctx.__syncing,
10048
9927
  data: {
@@ -10097,13 +9976,6 @@ var GraphSyncController = class _GraphSyncController {
10097
9976
  const registerTaskTask = CadenzaService.createMetaTask(
10098
9977
  "Record registration",
10099
9978
  (ctx, emit) => {
10100
- if (shouldDebugSyncTaskName(ctx.__taskName)) {
10101
- logSyncDebug("task_registration_result", {
10102
- taskName: ctx.__taskName,
10103
- success: didSyncInsertSucceed(ctx),
10104
- ctx
10105
- });
10106
- }
10107
9979
  if (!didSyncInsertSucceed(ctx)) {
10108
9980
  return;
10109
9981
  }
@@ -10129,16 +10001,6 @@ var GraphSyncController = class _GraphSyncController {
10129
10001
  "Prepare created task for immediate sync",
10130
10002
  (ctx) => {
10131
10003
  const task = ctx.taskInstance ?? (ctx.data?.name ? CadenzaService.get(String(ctx.data.name)) : void 0);
10132
- if (shouldDebugSyncTaskName(task?.name ?? ctx?.data?.name)) {
10133
- logSyncDebug("task_created_for_immediate_sync", {
10134
- incomingTaskName: ctx?.data?.name ?? null,
10135
- resolvedTaskName: task?.name ?? null,
10136
- exists: Boolean(task),
10137
- hidden: task?.hidden ?? null,
10138
- register: task?.register ?? null,
10139
- registered: task?.registered ?? null
10140
- });
10141
- }
10142
10004
  if (!task || task.hidden || !task.register || task.registered) {
10143
10005
  return false;
10144
10006
  }
@@ -10325,17 +10187,6 @@ var GraphSyncController = class _GraphSyncController {
10325
10187
  if (!isGlobal) {
10326
10188
  continue;
10327
10189
  }
10328
- if (shouldDebugSyncTaskName(task.name)) {
10329
- logSyncDebug("signal_to_task_map_split", {
10330
- taskName: task.name,
10331
- signalName: _signal,
10332
- rawSignal: signal,
10333
- serviceName: serviceName2,
10334
- observerRegistered: CadenzaService.signalBroker.signalObservers?.get(
10335
- _signal
10336
- )?.registered
10337
- });
10338
- }
10339
10190
  yield {
10340
10191
  __syncing: ctx.__syncing,
10341
10192
  data: {
@@ -10446,21 +10297,6 @@ var GraphSyncController = class _GraphSyncController {
10446
10297
  }
10447
10298
  task.__registeredIntents = task.__registeredIntents ?? /* @__PURE__ */ new Set();
10448
10299
  task.__invalidMetaIntentWarnings = task.__invalidMetaIntentWarnings ?? /* @__PURE__ */ new Set();
10449
- const shouldDebugTask = shouldDebugSyncTaskName(task.name);
10450
- if (shouldDebugTask) {
10451
- logSyncDebug("intent_map_task_state", {
10452
- taskName: task.name,
10453
- taskVersion: task.version,
10454
- serviceName: serviceName2,
10455
- registered: task.registered,
10456
- register: task.register,
10457
- hidden: task.hidden,
10458
- handledIntents: Array.from(task.handlesIntents),
10459
- registeredIntents: Array.from(task.__registeredIntents),
10460
- tasksSynced: this.tasksSynced,
10461
- intentsSynced: this.intentsSynced
10462
- });
10463
- }
10464
10300
  let emittedCount = 0;
10465
10301
  for (const intent of task.handlesIntents) {
10466
10302
  if (task.__registeredIntents.has(intent)) continue;
@@ -10486,15 +10322,6 @@ var GraphSyncController = class _GraphSyncController {
10486
10322
  if (!intentDefinition) {
10487
10323
  continue;
10488
10324
  }
10489
- if (shouldDebugSyncTaskName(task.name) || shouldDebugSyncIntentName(intent)) {
10490
- logSyncDebug("intent_to_task_map_split", {
10491
- taskName: task.name,
10492
- taskVersion: task.version,
10493
- intentName: intent,
10494
- serviceName: serviceName2,
10495
- intentDefinition
10496
- });
10497
- }
10498
10325
  yield {
10499
10326
  __syncing: ctx.__syncing,
10500
10327
  data: {
@@ -10515,15 +10342,6 @@ var GraphSyncController = class _GraphSyncController {
10515
10342
  };
10516
10343
  emittedCount += 1;
10517
10344
  }
10518
- if (shouldDebugTask && emittedCount === 0) {
10519
- logSyncDebug("intent_map_task_noop", {
10520
- taskName: task.name,
10521
- taskVersion: task.version,
10522
- serviceName: serviceName2,
10523
- handledIntents: Array.from(task.handlesIntents),
10524
- registeredIntents: Array.from(task.__registeredIntents)
10525
- });
10526
- }
10527
10345
  return emittedCount > 0;
10528
10346
  }.bind(this)
10529
10347
  );
@@ -10533,13 +10351,6 @@ var GraphSyncController = class _GraphSyncController {
10533
10351
  if (!ctx.__intentDefinition || !ctx.__intentMapData) {
10534
10352
  return false;
10535
10353
  }
10536
- if (shouldDebugSyncTaskName(ctx.__taskName) || shouldDebugSyncIntentName(ctx.__intent)) {
10537
- logSyncDebug("intent_definition_prepare", {
10538
- taskName: ctx.__taskName,
10539
- intentName: ctx.__intent,
10540
- intentDefinition: ctx.__intentDefinition
10541
- });
10542
- }
10543
10354
  return {
10544
10355
  ...ctx,
10545
10356
  data: ctx.__intentDefinition
@@ -10552,13 +10363,6 @@ var GraphSyncController = class _GraphSyncController {
10552
10363
  if (!ctx.__intentMapData) {
10553
10364
  return false;
10554
10365
  }
10555
- if (shouldDebugSyncTaskName(ctx.__taskName) || shouldDebugSyncIntentName(ctx.__intent)) {
10556
- logSyncDebug("intent_map_payload_restore", {
10557
- taskName: ctx.__taskName,
10558
- intentName: ctx.__intent,
10559
- intentMapData: ctx.__intentMapData
10560
- });
10561
- }
10562
10366
  return {
10563
10367
  ...ctx,
10564
10368
  data: ctx.__intentMapData
@@ -11380,6 +11184,13 @@ var CadenzaService = class {
11380
11184
  if (this.isBootstrapped) return;
11381
11185
  this.isBootstrapped = true;
11382
11186
  Cadenza.bootstrap();
11187
+ Cadenza.setRuntimeInquiryDelegate(
11188
+ (inquiry, context, options) => this.inquire(
11189
+ inquiry,
11190
+ context,
11191
+ options ?? {}
11192
+ )
11193
+ );
11383
11194
  this.signalBroker = Cadenza.signalBroker;
11384
11195
  this.inquiryBroker = Cadenza.inquiryBroker;
11385
11196
  this.runner = Cadenza.runner;
@@ -11388,7 +11199,7 @@ var CadenzaService = class {
11388
11199
  this.serviceRegistry = ServiceRegistry.instance;
11389
11200
  RestController.instance;
11390
11201
  SocketController.instance;
11391
- console.log("BOOTSTRAPPED");
11202
+ RuntimeValidationController.instance;
11392
11203
  }
11393
11204
  static ensureTransportControllers(isFrontend) {
11394
11205
  if (!isFrontend) {
@@ -11527,6 +11338,38 @@ var CadenzaService = class {
11527
11338
  this.inquiryBroker?.addIntent(intent);
11528
11339
  return intent;
11529
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
+ }
11530
11373
  static getInquiryResponderDescriptor(task) {
11531
11374
  return this.serviceRegistry.getInquiryResponderDescriptor(task);
11532
11375
  }
@@ -12287,7 +12130,6 @@ var CadenzaService = class {
12287
12130
  }
12288
12131
  });
12289
12132
  });
12290
- console.log("Creating service...");
12291
12133
  const initContext = {
12292
12134
  data: {
12293
12135
  name: serviceName,
@@ -12320,18 +12162,13 @@ var CadenzaService = class {
12320
12162
  }).doOn("meta.fetch.handshake_complete");
12321
12163
  } else {
12322
12164
  this.emit("meta.create_service_requested", initContext);
12323
- this.createMetaTask("Create signal transmission for sync", (ctx) => {
12324
- if (ctx.serviceName) {
12325
- console.log("[CADENZA_SYNC_DEBUG] create_sync_signal_transmission", {
12326
- localServiceName: serviceName,
12327
- localServiceInstanceId: serviceId,
12328
- targetServiceName: ctx.serviceName,
12329
- signalName: "global.meta.cadenza_db.gathered_sync_data"
12330
- });
12331
- }
12332
- this.createSignalTransmissionTask(
12333
- "global.meta.cadenza_db.gathered_sync_data",
12334
- ctx.serviceName
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
+ }
12335
12172
  );
12336
12173
  }).doOn("meta.rest.handshake", "meta.socket.handshake");
12337
12174
  }
@@ -13326,6 +13163,8 @@ export {
13326
13163
  EphemeralTask2 as EphemeralTask,
13327
13164
  GraphMetadataController,
13328
13165
  GraphRoutine2 as GraphRoutine,
13166
+ RUNTIME_VALIDATION_INTENTS,
13167
+ RUNTIME_VALIDATION_SIGNALS,
13329
13168
  RestController,
13330
13169
  ServiceRegistry,
13331
13170
  SignalController,