@cadenza.io/service 2.18.1 → 2.18.3

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.js CHANGED
@@ -55,8 +55,46 @@ module.exports = __toCommonJS(index_exports);
55
55
  var import_core5 = __toESM(require("@cadenza.io/core"));
56
56
 
57
57
  // src/graph/definition/DeputyTask.ts
58
- var import_uuid = require("uuid");
58
+ var import_uuid2 = require("uuid");
59
59
  var import_core = require("@cadenza.io/core");
60
+
61
+ // src/utils/delegation.ts
62
+ var import_uuid = require("uuid");
63
+ var ROOT_METADATA_PASSTHROUGH_KEYS = [
64
+ "__executionTraceId",
65
+ "__inquiryId",
66
+ "__inquirySourceTaskName",
67
+ "__inquirySourceTaskVersion",
68
+ "__inquirySourceTaskExecutionId",
69
+ "__inquirySourceRoutineExecutionId"
70
+ ];
71
+ function hoistDelegationMetadataFields(input, metadataInput) {
72
+ const context = input && typeof input === "object" ? { ...input } : {};
73
+ const mutableContext = context;
74
+ const metadata = metadataInput && typeof metadataInput === "object" ? metadataInput : context.__metadata && typeof context.__metadata === "object" ? context.__metadata : {};
75
+ for (const key of ROOT_METADATA_PASSTHROUGH_KEYS) {
76
+ if ((mutableContext[key] === void 0 || mutableContext[key] === null) && metadata[key] !== void 0 && metadata[key] !== null) {
77
+ mutableContext[key] = metadata[key];
78
+ }
79
+ }
80
+ return context;
81
+ }
82
+ function ensureDelegationContextMetadata(input) {
83
+ const rawContext = input && typeof input === "object" ? { ...input } : {};
84
+ const metadata = rawContext.__metadata && typeof rawContext.__metadata === "object" ? { ...rawContext.__metadata } : {};
85
+ const context = hoistDelegationMetadataFields(rawContext, metadata);
86
+ const deputyExecId = typeof metadata.__deputyExecId === "string" && metadata.__deputyExecId.length > 0 ? metadata.__deputyExecId : typeof rawContext.__deputyExecId === "string" && rawContext.__deputyExecId.length > 0 ? context.__deputyExecId : (0, import_uuid.v4)();
87
+ return {
88
+ ...context,
89
+ __deputyExecId: deputyExecId,
90
+ __metadata: {
91
+ ...metadata,
92
+ __deputyExecId: deputyExecId
93
+ }
94
+ };
95
+ }
96
+
97
+ // src/graph/definition/DeputyTask.ts
60
98
  var DeputyTask = class extends import_core.Task {
61
99
  /**
62
100
  * Constructs a new instance of the class with the specified parameters.
@@ -94,7 +132,7 @@ var DeputyTask = class extends import_core.Task {
94
132
  resolve(context);
95
133
  return;
96
134
  }
97
- const processId = (0, import_uuid.v4)();
135
+ const processId = (0, import_uuid2.v4)();
98
136
  context.__metadata.__deputyExecId = processId;
99
137
  emit("meta.deputy.delegation_requested", {
100
138
  ...context
@@ -182,7 +220,7 @@ var DeputyTask = class extends import_core.Task {
182
220
  execute(context, emit, inquire, progressCallback, nodeData) {
183
221
  const ctx = context.getContext();
184
222
  const metadata = context.getMetadata();
185
- const deputyContext = {
223
+ const deputyContext = hoistDelegationMetadataFields({
186
224
  __timeout: this.timeout,
187
225
  __localTaskName: this.name,
188
226
  __localTaskVersion: this.version,
@@ -199,7 +237,7 @@ var DeputyTask = class extends import_core.Task {
199
237
  __deputyTaskName: this.name
200
238
  },
201
239
  ...ctx
202
- };
240
+ });
203
241
  return this.taskFunction(deputyContext, emit, inquire, progressCallback);
204
242
  }
205
243
  };
@@ -280,7 +318,7 @@ var DatabaseTask = class extends DeputyTask {
280
318
  },
281
319
  ...dynamicQueryData
282
320
  };
283
- const deputyContext = {
321
+ const deputyContext = hoistDelegationMetadataFields({
284
322
  ...ctx,
285
323
  __localTaskName: this.name,
286
324
  __localTaskVersion: this.version,
@@ -303,7 +341,7 @@ var DatabaseTask = class extends DeputyTask {
303
341
  filter: nextQueryData.filter ?? ctx.filter,
304
342
  fields: nextQueryData.fields ?? ctx.fields,
305
343
  queryData: nextQueryData
306
- };
344
+ });
307
345
  return this.taskFunction(deputyContext, emit, inquire, progressCallback);
308
346
  }
309
347
  };
@@ -554,22 +592,6 @@ function getRouteableTransport(instance, role, protocol) {
554
592
  return selectTransportForRole(instance.transports ?? [], role, protocol);
555
593
  }
556
594
 
557
- // src/utils/delegation.ts
558
- var import_uuid2 = require("uuid");
559
- function ensureDelegationContextMetadata(input) {
560
- const context = input && typeof input === "object" ? { ...input } : {};
561
- const metadata = context.__metadata && typeof context.__metadata === "object" ? { ...context.__metadata } : {};
562
- const deputyExecId = typeof metadata.__deputyExecId === "string" && metadata.__deputyExecId.length > 0 ? metadata.__deputyExecId : typeof context.__deputyExecId === "string" && context.__deputyExecId.length > 0 ? context.__deputyExecId : (0, import_uuid2.v4)();
563
- return {
564
- ...context,
565
- __deputyExecId: deputyExecId,
566
- __metadata: {
567
- ...metadata,
568
- __deputyExecId: deputyExecId
569
- }
570
- };
571
- }
572
-
573
595
  // src/utils/readiness.ts
574
596
  function evaluateDependencyReadiness(input) {
575
597
  const missedHeartbeats = Math.max(
@@ -739,6 +761,21 @@ var CADENZA_DB_GATHERED_SYNC_SIGNAL = "global.meta.cadenza_db.gathered_sync_data
739
761
  var META_GATHERED_SYNC_TRANSMISSION_RECONCILE_SIGNAL = "meta.service_registry.gathered_sync_transmission_reconcile_requested";
740
762
  var META_RUNTIME_STATUS_HEARTBEAT_TICK_SIGNAL = "meta.service_registry.runtime_status.heartbeat_tick";
741
763
  var META_RUNTIME_STATUS_MONITOR_TICK_SIGNAL = "meta.service_registry.runtime_status.monitor_tick";
764
+ var EARLY_FULL_SYNC_DELAYS_MS = [
765
+ 100,
766
+ 1500,
767
+ 5e3,
768
+ 12e3,
769
+ 25e3,
770
+ 45e3,
771
+ 7e4
772
+ ];
773
+ var BOOTSTRAP_FULL_SYNC_RESPONDER_TASKS = [
774
+ "Query service_instance",
775
+ "Query service_instance_transport",
776
+ "Query signal_to_task_map",
777
+ "Query intent_to_task_map"
778
+ ];
742
779
  var INTERNAL_RUNTIME_STATUS_TASK_NAMES = /* @__PURE__ */ new Set([
743
780
  "Track local routine start",
744
781
  "Track local routine end",
@@ -751,6 +788,10 @@ var INTERNAL_RUNTIME_STATUS_TASK_NAMES = /* @__PURE__ */ new Set([
751
788
  "Collect distributed readiness",
752
789
  "Get status"
753
790
  ]);
791
+ var SERVICE_REGISTRY_TRACE_SERVICE = (process.env.CADENZA_SERVICE_REGISTRY_TRACE_SERVICE ?? "").trim();
792
+ function shouldTraceServiceRegistry(serviceName) {
793
+ return SERVICE_REGISTRY_TRACE_SERVICE.length > 0 && serviceName === SERVICE_REGISTRY_TRACE_SERVICE;
794
+ }
754
795
  function buildServiceRegistryInsertQueryData(ctx, queryData) {
755
796
  const joinedContexts = Array.isArray(ctx.joinedContexts) ? ctx.joinedContexts : [];
756
797
  const getJoinedValue = (key) => {
@@ -824,6 +865,45 @@ function normalizeServiceRegistryInsertResult(tableName, ctx, queryData, rawResu
824
865
  }
825
866
  return result;
826
867
  }
868
+ function resolveServiceInstanceRegistrationPayload(ctx, fallbackServiceName, fallbackServiceInstanceId) {
869
+ const candidateSources = [
870
+ ctx.__registrationData,
871
+ ctx.queryData?.data,
872
+ ctx.__resolverQueryData?.data,
873
+ ctx.__resolverOriginalContext?.__registrationData,
874
+ ctx.__resolverOriginalContext?.queryData?.data,
875
+ ctx.data,
876
+ ctx.__resolverOriginalContext?.data
877
+ ];
878
+ let resolvedData = null;
879
+ for (const candidate of candidateSources) {
880
+ if (candidate && typeof candidate === "object" && !Array.isArray(candidate)) {
881
+ resolvedData = {
882
+ ...candidate
883
+ };
884
+ break;
885
+ }
886
+ }
887
+ if (!resolvedData) {
888
+ return null;
889
+ }
890
+ const resolvedUuid = String(
891
+ resolvedData.uuid ?? ctx.__serviceInstanceId ?? ctx.__resolverOriginalContext?.__serviceInstanceId ?? fallbackServiceInstanceId ?? ""
892
+ ).trim();
893
+ const resolvedServiceName = String(
894
+ resolvedData.service_name ?? ctx.__serviceName ?? ctx.__resolverOriginalContext?.__serviceName ?? fallbackServiceName ?? ""
895
+ ).trim();
896
+ const resolvedProcessPid = typeof resolvedData.process_pid === "number" ? resolvedData.process_pid : typeof ctx.__resolverOriginalContext?.data?.process_pid === "number" ? ctx.__resolverOriginalContext.data.process_pid : typeof ctx.__resolverOriginalContext?.__registrationData?.process_pid === "number" ? ctx.__resolverOriginalContext.__registrationData.process_pid : typeof ctx.queryData?.data?.process_pid === "number" ? ctx.queryData.data.process_pid : typeof ctx.__registrationData?.process_pid === "number" ? ctx.__registrationData.process_pid : null;
897
+ if (!resolvedUuid || !resolvedServiceName || resolvedProcessPid === null) {
898
+ return null;
899
+ }
900
+ return {
901
+ ...resolvedData,
902
+ uuid: resolvedUuid,
903
+ service_name: resolvedServiceName,
904
+ process_pid: resolvedProcessPid
905
+ };
906
+ }
827
907
  function resolveServiceRegistryInsertTask(tableName, queryData = {}, options = {}) {
828
908
  const remoteInsertTask = CadenzaService.createCadenzaDBInsertTask(
829
909
  tableName,
@@ -848,13 +928,24 @@ function resolveServiceRegistryInsertTask(tableName, queryData = {}, options = {
848
928
  });
849
929
  delegationContext.__metadata.__skipRemoteExecution = delegationContext.__metadata.__skipRemoteExecution ?? delegationContext.__skipRemoteExecution ?? false;
850
930
  delegationContext.__metadata.__blockRemoteExecution = delegationContext.__metadata.__blockRemoteExecution ?? delegationContext.__blockRemoteExecution ?? false;
851
- return {
931
+ const nextContext = {
852
932
  ...delegationContext,
853
933
  __resolverOriginalContext: {
854
934
  ...ctx
855
935
  },
856
936
  __resolverQueryData: nextQueryData
857
937
  };
938
+ if ((tableName === "service_instance" || tableName === "service") && (process.env.CADENZA_INSTANCE_DEBUG === "1" || process.env.CADENZA_INSTANCE_DEBUG === "true")) {
939
+ console.log("[CADENZA_INSTANCE_DEBUG] prepare_service_registry_insert_execution", {
940
+ tableName,
941
+ signalName,
942
+ resolverRequestId: ctx.__resolverRequestId ?? null,
943
+ hasData: nextQueryData.data !== void 0,
944
+ queryDataKeys: Object.keys(nextQueryData),
945
+ dataKeys: nextQueryData.data && typeof nextQueryData.data === "object" ? Object.keys(nextQueryData.data) : []
946
+ });
947
+ }
948
+ return nextContext;
858
949
  },
859
950
  `Prepares ${tableName} service-registry insert payloads for runner execution.`,
860
951
  {
@@ -880,6 +971,18 @@ function resolveServiceRegistryInsertTask(tableName, queryData = {}, options = {
880
971
  ctx.__resolverQueryData ?? ctx.queryData ?? {},
881
972
  ctx
882
973
  );
974
+ if ((tableName === "service_instance" || tableName === "service") && (process.env.CADENZA_INSTANCE_DEBUG === "1" || process.env.CADENZA_INSTANCE_DEBUG === "true")) {
975
+ console.log("[CADENZA_INSTANCE_DEBUG] finalize_service_registry_insert", {
976
+ tableName,
977
+ hasNormalized: !!normalized,
978
+ normalizedKeys: normalized && typeof normalized === "object" ? Object.keys(normalized) : [],
979
+ uuid: normalized && typeof normalized === "object" ? normalized.uuid ?? normalized.data?.uuid ?? normalized.queryData?.data?.uuid ?? null : null,
980
+ serviceName: normalized && typeof normalized === "object" ? normalized.__serviceName ?? normalized.data?.service_name ?? normalized.queryData?.data?.service_name ?? null : null,
981
+ errored: normalized && typeof normalized === "object" ? normalized.errored === true : false,
982
+ error: normalized && typeof normalized === "object" ? normalized.__error ?? null : null,
983
+ inquiryMeta: normalized && typeof normalized === "object" ? normalized.__inquiryMeta ?? null : null
984
+ });
985
+ }
883
986
  if (!normalized || typeof normalized !== "object") {
884
987
  return normalized;
885
988
  }
@@ -905,6 +1008,16 @@ function resolveServiceRegistryInsertTask(tableName, queryData = {}, options = {
905
1008
  CadenzaService.createEphemeralMetaTask(
906
1009
  `Resolve service registry insert execution for ${tableName} (${resolverRequestId})`,
907
1010
  (resultCtx) => {
1011
+ if ((tableName === "service_instance" || tableName === "service") && (process.env.CADENZA_INSTANCE_DEBUG === "1" || process.env.CADENZA_INSTANCE_DEBUG === "true")) {
1012
+ console.log("[CADENZA_INSTANCE_DEBUG] resolve_service_registry_insert_signal", {
1013
+ tableName,
1014
+ resolverRequestId,
1015
+ incomingResolverRequestId: resultCtx.__resolverRequestId ?? null,
1016
+ errored: resultCtx.errored === true,
1017
+ error: resultCtx.__error ?? null,
1018
+ keys: resultCtx && typeof resultCtx === "object" ? Object.keys(resultCtx) : []
1019
+ });
1020
+ }
908
1021
  if (resultCtx.__resolverRequestId !== resolverRequestId) {
909
1022
  return false;
910
1023
  }
@@ -924,6 +1037,18 @@ function resolveServiceRegistryInsertTask(tableName, queryData = {}, options = {
924
1037
  ).doOn(executionResolvedSignal, executionFailedSignal);
925
1038
  const localInsertTask = CadenzaService.getLocalCadenzaDBInsertTask(tableName);
926
1039
  const executionSignal = localInsertTask ? localExecutionRequestedSignal : remoteExecutionRequestedSignal;
1040
+ if ((tableName === "service_instance" || tableName === "service") && (process.env.CADENZA_INSTANCE_DEBUG === "1" || process.env.CADENZA_INSTANCE_DEBUG === "true")) {
1041
+ console.log("[CADENZA_INSTANCE_DEBUG] resolve_service_registry_insert", {
1042
+ tableName,
1043
+ executionSignal,
1044
+ hasLocalInsertTask: !!localInsertTask,
1045
+ serviceName: ctx.__serviceName ?? ctx.data?.service_name ?? null,
1046
+ serviceInstanceId: ctx.__serviceInstanceId ?? ctx.data?.uuid ?? null,
1047
+ hasData: !!ctx.data,
1048
+ dataKeys: ctx.data && typeof ctx.data === "object" ? Object.keys(ctx.data) : [],
1049
+ registrationKeys: ctx.__registrationData && typeof ctx.__registrationData === "object" ? Object.keys(ctx.__registrationData) : []
1050
+ });
1051
+ }
927
1052
  if (localInsertTask && !wiredLocalTaskNames.has(localInsertTask.name)) {
928
1053
  wireExecutionTarget(localInsertTask, prepareLocalExecutionTask);
929
1054
  wiredLocalTaskNames.add(localInsertTask.name);
@@ -1006,6 +1131,7 @@ var ServiceRegistry = class _ServiceRegistry {
1006
1131
  this.useSocket = false;
1007
1132
  this.retryCount = 3;
1008
1133
  this.isFrontend = false;
1134
+ this.connectsToCadenzaDB = false;
1009
1135
  CadenzaService.defineIntent({
1010
1136
  name: META_RUNTIME_TRANSPORT_DIAGNOSTICS_INTENT,
1011
1137
  description: "Gather transport diagnostics across all services and communication clients.",
@@ -1364,6 +1490,9 @@ var ServiceRegistry = class _ServiceRegistry {
1364
1490
  )?.destroy();
1365
1491
  continue;
1366
1492
  }
1493
+ if (map.serviceName === this.serviceName) {
1494
+ continue;
1495
+ }
1367
1496
  if (locallyEmittedSignals.includes(map.signalName)) {
1368
1497
  if (!this.remoteSignals.get(map.serviceName)) {
1369
1498
  this.remoteSignals.set(map.serviceName, /* @__PURE__ */ new Set());
@@ -1380,7 +1509,10 @@ var ServiceRegistry = class _ServiceRegistry {
1380
1509
  return true;
1381
1510
  },
1382
1511
  "Handles registration of remote signals"
1383
- ).emits("meta.service_registry.registered_global_signals").doOn("global.meta.cadenza_db.gathered_sync_data");
1512
+ ).emits("meta.service_registry.registered_global_signals").doOn(
1513
+ "global.meta.cadenza_db.gathered_sync_data",
1514
+ "global.meta.graph_metadata.task_signal_observed"
1515
+ );
1384
1516
  this.reconcileGatheredSyncTransmissionsTask = CadenzaService.createMetaTask(
1385
1517
  "Reconcile gathered sync signal transmissions",
1386
1518
  (ctx, emit) => this.reconcileGatheredSyncTransmissions(ctx, emit),
@@ -1394,6 +1526,13 @@ var ServiceRegistry = class _ServiceRegistry {
1394
1526
  "Handle global intent registration",
1395
1527
  (ctx, emit) => {
1396
1528
  const intentToTaskMaps = this.normalizeIntentMaps(ctx);
1529
+ if (shouldTraceServiceRegistry(this.serviceName)) {
1530
+ console.log("[CADENZA_SERVICE_REGISTRY_TRACE] handle_global_intents", {
1531
+ localServiceName: this.serviceName,
1532
+ intentCount: intentToTaskMaps.length,
1533
+ sample: intentToTaskMaps.slice(0, 5)
1534
+ });
1535
+ }
1397
1536
  const sorted = intentToTaskMaps.sort((a, b) => {
1398
1537
  if (a.deleted && !b.deleted) return -1;
1399
1538
  if (!a.deleted && b.deleted) return 1;
@@ -1405,6 +1544,9 @@ var ServiceRegistry = class _ServiceRegistry {
1405
1544
  this.unregisterRemoteIntentDeputy(map);
1406
1545
  continue;
1407
1546
  }
1547
+ if (map.serviceName === this.serviceName) {
1548
+ continue;
1549
+ }
1408
1550
  CadenzaService.inquiryBroker.addIntent({
1409
1551
  name: map.intentName
1410
1552
  });
@@ -1534,7 +1676,7 @@ var ServiceRegistry = class _ServiceRegistry {
1534
1676
  );
1535
1677
  this.handleSocketStatusUpdateTask = CadenzaService.createMetaTask(
1536
1678
  "Handle Socket Status Update",
1537
- (ctx) => {
1679
+ (ctx, emit) => {
1538
1680
  const report = this.normalizeRuntimeStatusReport(ctx);
1539
1681
  if (!report) {
1540
1682
  return false;
@@ -1577,6 +1719,13 @@ var ServiceRegistry = class _ServiceRegistry {
1577
1719
  if (!applied) {
1578
1720
  return false;
1579
1721
  }
1722
+ const updatedInstance = this.getInstance(
1723
+ report.serviceName,
1724
+ report.serviceInstanceId
1725
+ );
1726
+ if (updatedInstance && !updatedInstance.isFrontend && (this.deputies.has(report.serviceName) || this.remoteIntents.has(report.serviceName) || this.remoteSignals.has(report.serviceName))) {
1727
+ this.ensureDependeeClientForInstance(updatedInstance, emit, ctx);
1728
+ }
1580
1729
  this.registerDependee(report.serviceName, report.serviceInstanceId);
1581
1730
  this.lastHeartbeatAtByInstance.set(report.serviceInstanceId, Date.now());
1582
1731
  this.missedHeartbeatsByInstance.set(report.serviceInstanceId, 0);
@@ -1587,9 +1736,28 @@ var ServiceRegistry = class _ServiceRegistry {
1587
1736
  },
1588
1737
  "Handles status update from socket broadcast"
1589
1738
  ).doOn("meta.socket_client.status_received");
1739
+ CadenzaService.createMetaTask(
1740
+ "Request full sync after CadenzaDB fetch handshake",
1741
+ (ctx) => {
1742
+ const serviceName = typeof ctx.serviceName === "string" ? ctx.serviceName.trim() : typeof ctx.__serviceName === "string" ? ctx.__serviceName.trim() : "";
1743
+ if (serviceName !== "CadenzaDB") {
1744
+ return false;
1745
+ }
1746
+ return this.scheduleEarlyFullSyncRequests("cadenza_db_fetch_handshake");
1747
+ },
1748
+ "Schedules a few early service-registry full-sync retries after the authority fetch transport comes up."
1749
+ ).doOn("meta.fetch.handshake_complete");
1590
1750
  this.fullSyncTask = CadenzaService.createMetaTask(
1591
1751
  "Full sync",
1592
1752
  async (ctx) => {
1753
+ if (this.connectsToCadenzaDB && this.serviceName !== "CadenzaDB" && !this.hasBootstrapFullSyncDeputies()) {
1754
+ if (shouldTraceServiceRegistry(this.serviceName)) {
1755
+ console.log("[CADENZA_SERVICE_REGISTRY_TRACE] full_sync_skipped_missing_bootstrap_deputies", {
1756
+ localServiceName: this.serviceName
1757
+ });
1758
+ }
1759
+ return false;
1760
+ }
1593
1761
  const inquiryResult = await CadenzaService.inquire(
1594
1762
  META_SERVICE_REGISTRY_FULL_SYNC_INTENT,
1595
1763
  {
@@ -1606,6 +1774,15 @@ var ServiceRegistry = class _ServiceRegistry {
1606
1774
  const serviceInstances = this.normalizeServiceInstancesFromSync(
1607
1775
  inquiryResult
1608
1776
  );
1777
+ if (shouldTraceServiceRegistry(this.serviceName)) {
1778
+ console.log("[CADENZA_SERVICE_REGISTRY_TRACE] full_sync_result", {
1779
+ localServiceName: this.serviceName,
1780
+ inquiryMeta: inquiryResult.__inquiryMeta,
1781
+ signalToTaskMaps: signalToTaskMaps.length,
1782
+ intentToTaskMaps: intentToTaskMaps.length,
1783
+ serviceInstances: serviceInstances.length
1784
+ });
1785
+ }
1609
1786
  return {
1610
1787
  ...ctx,
1611
1788
  signalToTaskMaps,
@@ -1646,8 +1823,11 @@ var ServiceRegistry = class _ServiceRegistry {
1646
1823
  );
1647
1824
  this.handleDeputyRegistrationTask = CadenzaService.createMetaTask(
1648
1825
  "Handle Deputy Registration",
1649
- (ctx) => {
1826
+ (ctx, emit) => {
1650
1827
  const { serviceName } = ctx;
1828
+ if (!serviceName || serviceName === this.serviceName) {
1829
+ return false;
1830
+ }
1651
1831
  if (!this.deputies.has(serviceName)) this.deputies.set(serviceName, []);
1652
1832
  this.deputies.get(serviceName).push({
1653
1833
  serviceName,
@@ -1656,6 +1836,7 @@ var ServiceRegistry = class _ServiceRegistry {
1656
1836
  localTaskName: ctx.localTaskName,
1657
1837
  communicationType: ctx.communicationType
1658
1838
  });
1839
+ this.ensureDependeeClientsForService(serviceName, emit, ctx);
1659
1840
  }
1660
1841
  ).doOn("meta.deputy.created");
1661
1842
  this.getAllInstances = CadenzaService.createMetaTask(
@@ -2208,9 +2389,29 @@ var ServiceRegistry = class _ServiceRegistry {
2208
2389
  retryDelayFactor: 1.3
2209
2390
  }
2210
2391
  ).emits("meta.service_registry.service_inserted").emitsOnFail("meta.service_registry.service_insertion_failed");
2211
- this.insertServiceInstanceTask = resolveServiceRegistryInsertTask(
2392
+ const insertServiceInstanceResolverTask = resolveServiceRegistryInsertTask(
2212
2393
  "service_instance",
2213
- {},
2394
+ {
2395
+ onConflict: {
2396
+ target: ["uuid"],
2397
+ action: {
2398
+ do: "update",
2399
+ set: {
2400
+ process_pid: "excluded",
2401
+ is_primary: "excluded",
2402
+ service_name: "excluded",
2403
+ is_database: "excluded",
2404
+ is_frontend: "excluded",
2405
+ is_blocked: "excluded",
2406
+ is_non_responsive: "excluded",
2407
+ is_active: "excluded",
2408
+ last_active: "excluded",
2409
+ health: "excluded",
2410
+ deleted: "false"
2411
+ }
2412
+ }
2413
+ }
2414
+ },
2214
2415
  {
2215
2416
  inputSchema: {
2216
2417
  type: "object",
@@ -2266,7 +2467,8 @@ var ServiceRegistry = class _ServiceRegistry {
2266
2467
  retryCount: 5,
2267
2468
  retryDelay: 1e3
2268
2469
  }
2269
- ).then(
2470
+ ).emitsOnFail("meta.service_registry.instance_insertion_failed");
2471
+ this.insertServiceInstanceTask = insertServiceInstanceResolverTask.then(
2270
2472
  CadenzaService.createMetaTask(
2271
2473
  "Setup service",
2272
2474
  (ctx) => {
@@ -2283,6 +2485,21 @@ var ServiceRegistry = class _ServiceRegistry {
2283
2485
  transports: ctx.__transportData ?? ctx.transportData ?? []
2284
2486
  });
2285
2487
  if (!normalizedLocalInstance?.uuid || !normalizedLocalInstance.serviceName) {
2488
+ if (process.env.CADENZA_INSTANCE_DEBUG === "1" || process.env.CADENZA_INSTANCE_DEBUG === "true") {
2489
+ console.log("[CADENZA_INSTANCE_DEBUG] setup_service_rejected_instance", {
2490
+ hasServiceInstance: !!serviceInstance,
2491
+ hasData: !!data,
2492
+ hasQueryDataData: !!queryData?.data,
2493
+ serviceInstanceKeys: serviceInstance && typeof serviceInstance === "object" ? Object.keys(serviceInstance) : [],
2494
+ dataKeys: data && typeof data === "object" ? Object.keys(data) : [],
2495
+ queryDataDataKeys: queryData?.data && typeof queryData.data === "object" ? Object.keys(queryData.data) : [],
2496
+ normalizedLocalInstance,
2497
+ transportCount: Array.isArray(ctx.__transportData) ? ctx.__transportData.length : Array.isArray(ctx.transportData) ? ctx.transportData.length : 0,
2498
+ errored: ctx.errored === true,
2499
+ error: ctx.__error ?? null,
2500
+ inquiryMeta: ctx.__inquiryMeta ?? null
2501
+ });
2502
+ }
2286
2503
  return false;
2287
2504
  }
2288
2505
  this.serviceInstanceId = normalizedLocalInstance.uuid;
@@ -2334,11 +2551,65 @@ var ServiceRegistry = class _ServiceRegistry {
2334
2551
  ).attachSignal("meta.service_registry.transport_registration_requested")
2335
2552
  )
2336
2553
  );
2554
+ CadenzaService.createMetaTask(
2555
+ "Retry local service instance registration after failed insert",
2556
+ (ctx) => {
2557
+ const registrationPayload = resolveServiceInstanceRegistrationPayload(
2558
+ ctx,
2559
+ this.serviceName,
2560
+ this.serviceInstanceId
2561
+ );
2562
+ if (!registrationPayload) {
2563
+ return false;
2564
+ }
2565
+ const serviceName = String(
2566
+ registrationPayload.service_name ?? this.serviceName ?? ""
2567
+ ).trim();
2568
+ if (!serviceName || serviceName !== this.serviceName) {
2569
+ return false;
2570
+ }
2571
+ CadenzaService.schedule(
2572
+ "meta.service_registry.instance_registration_requested",
2573
+ {
2574
+ ...ctx,
2575
+ data: registrationPayload,
2576
+ __registrationData: registrationPayload,
2577
+ __serviceName: serviceName,
2578
+ __serviceInstanceId: registrationPayload.uuid
2579
+ },
2580
+ 5e3
2581
+ );
2582
+ return true;
2583
+ },
2584
+ "Retries local service instance registration only after the previous insert attempt has failed.",
2585
+ {
2586
+ register: false,
2587
+ isHidden: true
2588
+ }
2589
+ ).doOn("meta.service_registry.instance_insertion_failed");
2337
2590
  CadenzaService.createMetaTask(
2338
2591
  "Prepare service instance registration",
2339
2592
  (ctx) => {
2593
+ const registrationPayload = resolveServiceInstanceRegistrationPayload(
2594
+ ctx,
2595
+ this.serviceName,
2596
+ this.serviceInstanceId
2597
+ );
2598
+ if (process.env.CADENZA_INSTANCE_DEBUG === "1" || process.env.CADENZA_INSTANCE_DEBUG === "true") {
2599
+ console.log("[CADENZA_INSTANCE_DEBUG] prepare_service_instance_registration", {
2600
+ serviceName: registrationPayload?.service_name ?? ctx.data?.service_name ?? ctx.__serviceName ?? this.serviceName ?? null,
2601
+ serviceInstanceId: registrationPayload?.uuid ?? ctx.data?.uuid ?? ctx.__serviceInstanceId ?? this.serviceInstanceId ?? null,
2602
+ hasData: !!registrationPayload,
2603
+ dataKeys: registrationPayload && typeof registrationPayload === "object" ? Object.keys(registrationPayload) : [],
2604
+ transportCount: Array.isArray(ctx.__transportData) ? ctx.__transportData.length : Array.isArray(ctx.transportData) ? ctx.transportData.length : 0,
2605
+ skipRemoteExecution: ctx.__skipRemoteExecution === true
2606
+ });
2607
+ }
2608
+ if (!registrationPayload) {
2609
+ return false;
2610
+ }
2340
2611
  const serviceName = String(
2341
- ctx.data?.service_name ?? ctx.__serviceName ?? this.serviceName ?? ""
2612
+ registrationPayload.service_name ?? ctx.__serviceName ?? this.serviceName ?? ""
2342
2613
  ).trim();
2343
2614
  if (serviceName === "CadenzaDB" && !CadenzaService.getLocalCadenzaDBInsertTask("service_instance")) {
2344
2615
  CadenzaService.schedule(
@@ -2348,7 +2619,16 @@ var ServiceRegistry = class _ServiceRegistry {
2348
2619
  );
2349
2620
  return false;
2350
2621
  }
2351
- return ctx;
2622
+ return {
2623
+ ...ctx,
2624
+ data: registrationPayload,
2625
+ __registrationData: {
2626
+ ...ctx.__registrationData ?? {},
2627
+ ...registrationPayload
2628
+ },
2629
+ __serviceName: serviceName,
2630
+ __serviceInstanceId: registrationPayload.uuid
2631
+ };
2352
2632
  },
2353
2633
  "Waits for the exact local CadenzaDB service instance insert task during self-bootstrap."
2354
2634
  ).doOn("meta.service_registry.instance_registration_requested").then(this.insertServiceInstanceTask);
@@ -2529,21 +2809,40 @@ var ServiceRegistry = class _ServiceRegistry {
2529
2809
  return [];
2530
2810
  }
2531
2811
  normalizeSignalMaps(ctx) {
2532
- return this.readArrayPayload(ctx, [
2812
+ const arrayPayload = this.readArrayPayload(ctx, [
2533
2813
  "signalToTaskMaps",
2534
2814
  "signal_to_task_maps",
2535
2815
  "signalToTaskMap",
2536
2816
  "signal_to_task_map"
2537
- ]).map((map) => ({
2538
- signalName: String(
2539
- map.signalName ?? map.signal_name ?? ""
2540
- ).trim(),
2541
- serviceName: String(
2542
- map.serviceName ?? map.service_name ?? ""
2543
- ).trim(),
2544
- isGlobal: Boolean(map.isGlobal ?? map.is_global ?? false),
2545
- deleted: Boolean(map.deleted)
2546
- })).filter((map) => map.signalName && map.serviceName);
2817
+ ]);
2818
+ if (arrayPayload.length > 0) {
2819
+ return arrayPayload.map((map) => ({
2820
+ signalName: String(
2821
+ map.signalName ?? map.signal_name ?? ""
2822
+ ).trim(),
2823
+ serviceName: String(
2824
+ map.serviceName ?? map.service_name ?? ""
2825
+ ).trim(),
2826
+ isGlobal: Boolean(map.isGlobal ?? map.is_global ?? false),
2827
+ deleted: Boolean(map.deleted)
2828
+ })).filter((map) => map.signalName && map.serviceName);
2829
+ }
2830
+ const single = ctx.signalToTaskMap ?? ctx.signal_to_task_map ?? ctx.data ?? (ctx.signalName ?? ctx.signal_name ? ctx : void 0);
2831
+ if (!single || typeof single !== "object") {
2832
+ return [];
2833
+ }
2834
+ return [
2835
+ {
2836
+ signalName: String(
2837
+ single.signalName ?? single.signal_name ?? ""
2838
+ ).trim(),
2839
+ serviceName: String(
2840
+ single.serviceName ?? single.service_name ?? ""
2841
+ ).trim(),
2842
+ isGlobal: Boolean(single.isGlobal ?? single.is_global ?? false),
2843
+ deleted: Boolean(single.deleted)
2844
+ }
2845
+ ].filter((map) => map.signalName && map.serviceName);
2547
2846
  }
2548
2847
  normalizeIntentMaps(ctx) {
2549
2848
  const arrayPayload = this.readArrayPayload(ctx, [
@@ -2658,7 +2957,7 @@ var ServiceRegistry = class _ServiceRegistry {
2658
2957
  )?.destroy();
2659
2958
  this.gatheredSyncTransmissionServices.delete(serviceName);
2660
2959
  }
2661
- if (createdRecipients.length > 0 && ctx.__signalName === CADENZA_DB_GATHERED_SYNC_SIGNAL) {
2960
+ if (createdRecipients.length > 0) {
2662
2961
  emit("meta.cadenza_db.sync_tick", {
2663
2962
  __syncing: true,
2664
2963
  __reason: "gathered_sync_transmissions_reconciled"
@@ -2704,6 +3003,15 @@ var ServiceRegistry = class _ServiceRegistry {
2704
3003
  };
2705
3004
  this.remoteIntentDeputiesByKey.set(key, descriptor);
2706
3005
  this.remoteIntentDeputiesByTask.set(deputyTask, descriptor);
3006
+ if (shouldTraceServiceRegistry(this.serviceName)) {
3007
+ console.log("[CADENZA_SERVICE_REGISTRY_TRACE] register_remote_intent_deputy", {
3008
+ localServiceName: this.serviceName,
3009
+ intentName: map.intentName,
3010
+ remoteServiceName: map.serviceName,
3011
+ remoteTaskName: map.taskName,
3012
+ remoteTaskVersion: map.taskVersion
3013
+ });
3014
+ }
2707
3015
  }
2708
3016
  unregisterRemoteIntentDeputy(map) {
2709
3017
  const key = this.buildRemoteIntentDeputyKey(map);
@@ -2733,6 +3041,56 @@ var ServiceRegistry = class _ServiceRegistry {
2733
3041
  }
2734
3042
  }
2735
3043
  }
3044
+ registerBootstrapFullSyncDeputies(emit, ctx) {
3045
+ if (!this.serviceName || this.serviceName === "CadenzaDB") {
3046
+ return false;
3047
+ }
3048
+ CadenzaService.inquiryBroker.addIntent({
3049
+ name: META_SERVICE_REGISTRY_FULL_SYNC_INTENT
3050
+ });
3051
+ for (const taskName of BOOTSTRAP_FULL_SYNC_RESPONDER_TASKS) {
3052
+ this.registerRemoteIntentDeputy({
3053
+ intentName: META_SERVICE_REGISTRY_FULL_SYNC_INTENT,
3054
+ serviceName: "CadenzaDB",
3055
+ taskName,
3056
+ taskVersion: 1
3057
+ });
3058
+ }
3059
+ this.ensureDependeeClientsForService("CadenzaDB", emit, ctx);
3060
+ return true;
3061
+ }
3062
+ hasBootstrapFullSyncDeputies() {
3063
+ if (!this.serviceName || this.serviceName === "CadenzaDB") {
3064
+ return true;
3065
+ }
3066
+ return BOOTSTRAP_FULL_SYNC_RESPONDER_TASKS.every(
3067
+ (taskName) => this.remoteIntentDeputiesByKey.has(
3068
+ this.buildRemoteIntentDeputyKey({
3069
+ intentName: META_SERVICE_REGISTRY_FULL_SYNC_INTENT,
3070
+ serviceName: "CadenzaDB",
3071
+ taskName,
3072
+ taskVersion: 1
3073
+ })
3074
+ )
3075
+ );
3076
+ }
3077
+ scheduleEarlyFullSyncRequests(reason) {
3078
+ for (const delayMs of EARLY_FULL_SYNC_DELAYS_MS) {
3079
+ CadenzaService.schedule(
3080
+ "meta.sync_requested",
3081
+ {
3082
+ __syncing: false,
3083
+ __reason: reason
3084
+ },
3085
+ delayMs
3086
+ );
3087
+ }
3088
+ return true;
3089
+ }
3090
+ bootstrapFullSync(emit, ctx, reason = "local_instance_inserted") {
3091
+ this.registerBootstrapFullSyncDeputies(emit, ctx);
3092
+ return this.scheduleEarlyFullSyncRequests(reason);
3093
+ }
2736
3094
  getInquiryResponderDescriptor(task) {
2737
3095
  const remote = this.remoteIntentDeputiesByTask.get(task);
2738
3096
  if (remote) {
@@ -2761,6 +3119,9 @@ var ServiceRegistry = class _ServiceRegistry {
2761
3119
  }
2762
3120
  return this.getInstance(this.serviceName, this.serviceInstanceId);
2763
3121
  }
3122
+ hasLocalInstanceRegistered() {
3123
+ return Boolean(this.getLocalInstance());
3124
+ }
2764
3125
  summarizeTransportForDebug(transport) {
2765
3126
  if (!transport) {
2766
3127
  return void 0;
@@ -2909,7 +3270,7 @@ var ServiceRegistry = class _ServiceRegistry {
2909
3270
  return communicationTypes;
2910
3271
  }
2911
3272
  ensureDependeeClientForInstance(instance, emit, ctx) {
2912
- if (!instance || instance.uuid === this.serviceInstanceId || instance.isFrontend || !instance.isActive || instance.isNonResponsive || instance.isBlocked) {
3273
+ if (!instance || instance.uuid === this.serviceInstanceId || instance.serviceName === this.serviceName || instance.isFrontend || !instance.isActive || instance.isNonResponsive || instance.isBlocked) {
2913
3274
  return false;
2914
3275
  }
2915
3276
  if (!this.deputies.has(instance.serviceName) && !this.remoteIntents.has(instance.serviceName) && !this.remoteSignals.has(instance.serviceName)) {
@@ -2937,6 +3298,9 @@ var ServiceRegistry = class _ServiceRegistry {
2937
3298
  return true;
2938
3299
  }
2939
3300
  ensureDependeeClientsForService(serviceName, emit, ctx) {
3301
+ if (!serviceName || serviceName === this.serviceName) {
3302
+ return;
3303
+ }
2940
3304
  for (const instance of this.instances.get(serviceName) ?? []) {
2941
3305
  this.ensureDependeeClientForInstance(instance, emit, ctx);
2942
3306
  }
@@ -3729,7 +4093,7 @@ var SignalTransmissionTask = class extends import_core2.Task {
3729
4093
  execute(context, emit, inquire, progressCallback) {
3730
4094
  const ctx = context.getContext();
3731
4095
  const metadata = context.getMetadata();
3732
- const deputyContext = {
4096
+ const deputyContext = hoistDelegationMetadataFields({
3733
4097
  __localTaskName: this.name,
3734
4098
  __localServiceName: CadenzaService.serviceRegistry.serviceName,
3735
4099
  __serviceName: this.serviceName,
@@ -3742,7 +4106,7 @@ var SignalTransmissionTask = class extends import_core2.Task {
3742
4106
  __signalName: this.signalName,
3743
4107
  __signalEmissionId: metadata.__signalEmission?.uuid,
3744
4108
  ...ctx
3745
- };
4109
+ });
3746
4110
  return this.taskFunction(deputyContext, emit, inquire, progressCallback);
3747
4111
  }
3748
4112
  };
@@ -3758,6 +4122,7 @@ var import_node_fs = __toESM(require("fs"));
3758
4122
  var import_node_https = __toESM(require("https"));
3759
4123
  var import_node_fetch = __toESM(require("node-fetch"));
3760
4124
  var import_uuid5 = require("uuid");
4125
+ var FETCH_HANDSHAKE_TIMEOUT_MS = 5e3;
3761
4126
  var RestController = class _RestController {
3762
4127
  /**
3763
4128
  * Constructor for initializing the REST server and related configurations.
@@ -3849,7 +4214,15 @@ var RestController = class _RestController {
3849
4214
  is_blocked: false,
3850
4215
  health: {}
3851
4216
  },
3852
- __transportData: []
4217
+ __transportData: Array.isArray(ctx.__declaredTransports) ? ctx.__declaredTransports.map((transport) => ({
4218
+ uuid: transport.uuid,
4219
+ service_instance_id: ctx.__serviceInstanceId,
4220
+ role: transport.role,
4221
+ origin: transport.origin,
4222
+ protocols: transport.protocols ?? ["rest", "socket"],
4223
+ ...transport.securityProfile ? { security_profile: transport.securityProfile } : {},
4224
+ ...transport.authStrategy ? { auth_strategy: transport.authStrategy } : {}
4225
+ })) : []
3853
4226
  });
3854
4227
  return;
3855
4228
  }
@@ -3932,8 +4305,11 @@ var RestController = class _RestController {
3932
4305
  const app = ctx.__app;
3933
4306
  app.post("/handshake", (req, res) => {
3934
4307
  try {
3935
- CadenzaService.log("New fetch connection.", req.body);
3936
- CadenzaService.emit("meta.rest.handshake", req.body);
4308
+ const handshakePayload = req.body && typeof req.body === "object" ? req.body : {};
4309
+ if (Object.keys(handshakePayload).length > 0) {
4310
+ CadenzaService.log("New fetch connection.", handshakePayload);
4311
+ }
4312
+ CadenzaService.emit("meta.rest.handshake", handshakePayload);
3937
4313
  res.send({
3938
4314
  __status: "success",
3939
4315
  __serviceInstanceId: CadenzaService.serviceRegistry.serviceInstanceId
@@ -4181,6 +4557,19 @@ var RestController = class _RestController {
4181
4557
  ...ctx.data
4182
4558
  };
4183
4559
  ctx.__transportData = transportData;
4560
+ if (process.env.CADENZA_INSTANCE_DEBUG === "1" || process.env.CADENZA_INSTANCE_DEBUG === "true") {
4561
+ console.log("[CADENZA_INSTANCE_DEBUG] configure_network_emit", {
4562
+ serviceName: ctx.__serviceName,
4563
+ serviceInstanceId: ctx.__serviceInstanceId,
4564
+ isDatabase: ctx.__isDatabase === true,
4565
+ transportCount: transportData.length,
4566
+ transports: transportData.map((transport) => ({
4567
+ role: transport.role,
4568
+ origin: transport.origin,
4569
+ protocols: transport.protocols
4570
+ }))
4571
+ });
4572
+ }
4184
4573
  delete ctx.__app;
4185
4574
  CadenzaService.emit(
4186
4575
  "meta.service_registry.instance_registration_requested",
@@ -4241,6 +4630,7 @@ var RestController = class _RestController {
4241
4630
  if (!serviceName || !URL2 || !fetchId) {
4242
4631
  return false;
4243
4632
  }
4633
+ const clientTaskSuffix = `${URL2} (${fetchId})`;
4244
4634
  const fetchDiagnostics = this.ensureFetchClientDiagnostics(
4245
4635
  fetchId,
4246
4636
  serviceName,
@@ -4248,12 +4638,12 @@ var RestController = class _RestController {
4248
4638
  );
4249
4639
  fetchDiagnostics.destroyed = false;
4250
4640
  fetchDiagnostics.updatedAt = Date.now();
4251
- if (CadenzaService.get(`Send Handshake to ${URL2}`)) {
4252
- console.error("Fetch client already exists", URL2);
4641
+ if (CadenzaService.get(`Send Handshake to ${clientTaskSuffix}`)) {
4642
+ console.error("Fetch client already exists", { URL: URL2, fetchId });
4253
4643
  return;
4254
4644
  }
4255
4645
  const handshakeTask = CadenzaService.createMetaTask(
4256
- `Send Handshake to ${URL2}`,
4646
+ `Send Handshake to ${clientTaskSuffix}`,
4257
4647
  async (ctx2, emit) => {
4258
4648
  try {
4259
4649
  const response = await this.fetchDataWithTimeout(
@@ -4265,7 +4655,7 @@ var RestController = class _RestController {
4265
4655
  method: "POST",
4266
4656
  body: JSON.stringify(ctx2.handshakeData)
4267
4657
  },
4268
- 1e3
4658
+ FETCH_HANDSHAKE_TIMEOUT_MS
4269
4659
  );
4270
4660
  if (response.__status !== "success") {
4271
4661
  const error = response.__error ?? `Failed to connect to service ${serviceName} ${ctx2.serviceInstanceId}`;
@@ -4316,13 +4706,19 @@ var RestController = class _RestController {
4316
4706
  return ctx2;
4317
4707
  },
4318
4708
  "Sends handshake request",
4319
- { retryCount: 5, retryDelay: 1e3, retryDelayFactor: 1.5 }
4709
+ {
4710
+ retryCount: 5,
4711
+ retryDelay: 1e3,
4712
+ retryDelayFactor: 1.5,
4713
+ register: false,
4714
+ isHidden: true
4715
+ }
4320
4716
  ).doOn(`meta.fetch.handshake_requested:${fetchId}`).emits("meta.fetch.handshake_complete").attachSignal(
4321
4717
  "meta.fetch.handshake_failed",
4322
4718
  "global.meta.fetch.service_communication_established"
4323
4719
  );
4324
4720
  const delegateTask = CadenzaService.createMetaTask(
4325
- `Delegate flow to REST server ${URL2}`,
4721
+ `Delegate flow to REST server ${clientTaskSuffix}`,
4326
4722
  async (ctx2, emit) => {
4327
4723
  if (ctx2.__remoteRoutineName === void 0) {
4328
4724
  return;
@@ -4370,13 +4766,17 @@ var RestController = class _RestController {
4370
4766
  }
4371
4767
  return resultContext;
4372
4768
  },
4373
- "Sends delegation request"
4769
+ "Sends delegation request",
4770
+ {
4771
+ register: false,
4772
+ isHidden: true
4773
+ }
4374
4774
  ).doOn(
4375
4775
  `meta.service_registry.selected_instance_for_fetch:${fetchId}`,
4376
4776
  `meta.service_registry.socket_failed:${fetchId}`
4377
4777
  ).emitsOnFail("meta.fetch.delegate_failed").attachSignal("meta.fetch.delegated");
4378
4778
  const transmitTask = CadenzaService.createMetaTask(
4379
- `Transmit signal to server ${URL2}`,
4779
+ `Transmit signal to server ${clientTaskSuffix}`,
4380
4780
  async (ctx2, emit) => {
4381
4781
  if (ctx2.__signalName === void 0) {
4382
4782
  return;
@@ -4422,14 +4822,18 @@ var RestController = class _RestController {
4422
4822
  }
4423
4823
  return response;
4424
4824
  },
4425
- "Sends signal request"
4825
+ "Sends signal request",
4826
+ {
4827
+ register: false,
4828
+ isHidden: true
4829
+ }
4426
4830
  ).doOn(
4427
4831
  `meta.service_registry.selected_instance_for_fetch:${fetchId}`,
4428
4832
  `meta.signal_controller.remote_signal_registered:${serviceName}`,
4429
4833
  "meta.signal_controller.wildcard_signal_registered"
4430
4834
  ).emitsOnFail("meta.fetch.signal_transmission_failed").attachSignal("meta.fetch.transmitted");
4431
4835
  const statusTask = CadenzaService.createMetaTask(
4432
- `Request status from ${URL2}`,
4836
+ `Request status from ${clientTaskSuffix}`,
4433
4837
  async (ctx2) => {
4434
4838
  fetchDiagnostics.statusChecks++;
4435
4839
  fetchDiagnostics.updatedAt = Date.now();
@@ -4464,18 +4868,30 @@ var RestController = class _RestController {
4464
4868
  }
4465
4869
  return status;
4466
4870
  },
4467
- "Requests status"
4871
+ "Requests status",
4872
+ {
4873
+ register: false,
4874
+ isHidden: true
4875
+ }
4468
4876
  ).doOn("meta.fetch.status_check_requested").emits("meta.fetch.status_checked").emitsOnFail("meta.fetch.status_check_failed");
4469
- CadenzaService.createEphemeralMetaTask("Destroy fetch client", () => {
4470
- fetchDiagnostics.connected = false;
4471
- fetchDiagnostics.destroyed = true;
4472
- fetchDiagnostics.updatedAt = Date.now();
4473
- CadenzaService.log("Destroying fetch client", { URL: URL2, serviceName });
4474
- handshakeTask.destroy();
4475
- delegateTask.destroy();
4476
- transmitTask.destroy();
4477
- statusTask.destroy();
4478
- }).doOn(
4877
+ CadenzaService.createEphemeralMetaTask(
4878
+ `Destroy fetch client ${fetchId}`,
4879
+ () => {
4880
+ fetchDiagnostics.connected = false;
4881
+ fetchDiagnostics.destroyed = true;
4882
+ fetchDiagnostics.updatedAt = Date.now();
4883
+ CadenzaService.log("Destroying fetch client", { URL: URL2, serviceName });
4884
+ handshakeTask.destroy();
4885
+ delegateTask.destroy();
4886
+ transmitTask.destroy();
4887
+ statusTask.destroy();
4888
+ },
4889
+ "",
4890
+ {
4891
+ register: false,
4892
+ isHidden: true
4893
+ }
4894
+ ).doOn(
4479
4895
  `meta.fetch.destroy_requested:${fetchId}`,
4480
4896
  `meta.socket_client.disconnected:${fetchId}`,
4481
4897
  `meta.fetch.handshake_failed:${fetchId}`
@@ -5894,7 +6310,11 @@ var SocketController = class _SocketController {
5894
6310
  }
5895
6311
  );
5896
6312
  },
5897
- "Handshakes with socket server"
6313
+ "Handshakes with socket server",
6314
+ {
6315
+ register: false,
6316
+ isHidden: true
6317
+ }
5898
6318
  ).doOn(`meta.socket_client.connected:${fetchId}`);
5899
6319
  runtimeHandle.delegateTask = CadenzaService.createMetaTask(
5900
6320
  `Delegate flow to Socket service ${url}`,
@@ -5972,7 +6392,11 @@ var SocketController = class _SocketController {
5972
6392
  }
5973
6393
  }
5974
6394
  },
5975
- `Delegate flow to service ${serviceName} with address ${url}`
6395
+ `Delegate flow to service ${serviceName} with address ${url}`,
6396
+ {
6397
+ register: false,
6398
+ isHidden: true
6399
+ }
5976
6400
  ).doOn(`meta.service_registry.selected_instance_for_socket:${fetchId}`).attachSignal(
5977
6401
  "meta.socket_client.delegated",
5978
6402
  "meta.socket_shutdown_requested"
@@ -5996,7 +6420,11 @@ var SocketController = class _SocketController {
5996
6420
  }
5997
6421
  return response;
5998
6422
  },
5999
- `Transmits signal to service ${serviceName} with address ${url}`
6423
+ `Transmits signal to service ${serviceName} with address ${url}`,
6424
+ {
6425
+ register: false,
6426
+ isHidden: true
6427
+ }
6000
6428
  ).doOn(`meta.service_registry.selected_instance_for_socket:${fetchId}`).attachSignal("meta.socket_client.transmitted");
6001
6429
  CadenzaService.createEphemeralMetaTask(
6002
6430
  `Shutdown SocketClient ${url}`,
@@ -6040,7 +6468,11 @@ var SocketController = class _SocketController {
6040
6468
  fetchId
6041
6469
  });
6042
6470
  },
6043
- "Shuts down the socket client"
6471
+ "Shuts down the socket client",
6472
+ {
6473
+ register: false,
6474
+ isHidden: true
6475
+ }
6044
6476
  ).doOn(
6045
6477
  `meta.socket_shutdown_requested:${fetchId}`,
6046
6478
  `meta.socket_client.disconnected:${fetchId}`,
@@ -6304,10 +6736,18 @@ function decomposeSignalName(signalName) {
6304
6736
 
6305
6737
  // src/signals/SignalController.ts
6306
6738
  function buildSignalDatabaseTriggerContext(data) {
6739
+ const onConflict = {
6740
+ target: ["name"],
6741
+ action: {
6742
+ do: "nothing"
6743
+ }
6744
+ };
6307
6745
  return {
6308
6746
  data: { ...data },
6747
+ onConflict,
6309
6748
  queryData: {
6310
- data: { ...data }
6749
+ data: { ...data },
6750
+ onConflict
6311
6751
  }
6312
6752
  };
6313
6753
  }
@@ -6334,16 +6774,28 @@ var SignalController = class _SignalController {
6334
6774
  CadenzaService.createMetaTask(
6335
6775
  "Handle Signal Registration",
6336
6776
  (ctx, emit) => {
6777
+ if (!CadenzaService.hasCompletedBootstrapSync()) {
6778
+ return false;
6779
+ }
6337
6780
  const { signalName } = ctx;
6781
+ const signalObserver = CadenzaService.signalBroker.signalObservers?.get(
6782
+ signalName
6783
+ );
6784
+ if (signalObserver?.registered || signalObserver?.registrationRequested) {
6785
+ return false;
6786
+ }
6787
+ if (signalObserver) {
6788
+ signalObserver.registrationRequested = true;
6789
+ }
6338
6790
  const { isMeta, isGlobal, domain, action } = decomposeSignalName(signalName);
6339
6791
  emit(
6340
6792
  "global.meta.signal_controller.signal_added",
6341
6793
  buildSignalDatabaseTriggerContext({
6342
6794
  name: signalName,
6343
- isGlobal,
6795
+ is_global: isGlobal,
6344
6796
  domain,
6345
6797
  action,
6346
- isMeta
6798
+ is_meta: isMeta
6347
6799
  })
6348
6800
  );
6349
6801
  return ctx;
@@ -6352,12 +6804,35 @@ var SignalController = class _SignalController {
6352
6804
  ).doOn("meta.signal_broker.added").attachSignal("global.meta.signal_controller.signal_added");
6353
6805
  CadenzaService.createMetaTask(
6354
6806
  "Add data to signal emission",
6355
- (ctx) => {
6807
+ (ctx, emit) => {
6356
6808
  const signalEmission = ctx.__signalEmission;
6357
6809
  delete ctx.__signalEmission;
6358
6810
  if (!signalEmission) {
6359
6811
  return false;
6360
6812
  }
6813
+ if (typeof signalEmission.signalName === "string" && signalEmission.signalName.trim().length > 0 && !CadenzaService.signalBroker.signalObservers?.has(signalEmission.signalName)) {
6814
+ CadenzaService.signalBroker.addSignal(signalEmission.signalName);
6815
+ } else {
6816
+ const signalObserver = CadenzaService.signalBroker.signalObservers?.get(
6817
+ signalEmission.signalName
6818
+ );
6819
+ if (signalObserver && signalObserver.registered !== true && signalObserver.registrationRequested !== true && CadenzaService.hasCompletedBootstrapSync()) {
6820
+ signalObserver.registrationRequested = true;
6821
+ const { isMeta, isGlobal, domain, action } = decomposeSignalName(
6822
+ signalEmission.signalName
6823
+ );
6824
+ emit(
6825
+ "global.meta.signal_controller.signal_added",
6826
+ buildSignalDatabaseTriggerContext({
6827
+ name: signalEmission.signalName,
6828
+ is_global: isGlobal,
6829
+ domain,
6830
+ action,
6831
+ is_meta: isMeta
6832
+ })
6833
+ );
6834
+ }
6835
+ }
6361
6836
  return {
6362
6837
  data: {
6363
6838
  uuid: signalEmission.uuid,
@@ -6712,10 +7187,10 @@ function registerActorSessionPersistenceTasks() {
6712
7187
  }
6713
7188
 
6714
7189
  // src/graph/controllers/GraphMetadataController.ts
6715
- function buildDatabaseTriggerContext(data, filter, extra = {}) {
7190
+ function buildDatabaseTriggerContext(data, filter, extra = {}, queryExtra = {}) {
6716
7191
  const nextData = data && typeof data === "object" ? { ...data } : void 0;
6717
7192
  const nextFilter = filter && typeof filter === "object" ? { ...filter } : void 0;
6718
- const queryData = {};
7193
+ const queryData = { ...queryExtra };
6719
7194
  if (nextData !== void 0) {
6720
7195
  queryData.data = nextData;
6721
7196
  }
@@ -6729,19 +7204,108 @@ function buildDatabaseTriggerContext(data, filter, extra = {}) {
6729
7204
  ...Object.keys(queryData).length > 0 ? { queryData } : {}
6730
7205
  };
6731
7206
  }
7207
+ function resolveTaskFromMetadataContext(ctx) {
7208
+ const taskName = String(
7209
+ ctx?.taskName ?? ctx?.data?.taskName ?? ctx?.data?.task_name ?? ctx?.filter?.taskName ?? ctx?.filter?.task_name ?? ""
7210
+ );
7211
+ return taskName ? CadenzaService.get(taskName) : void 0;
7212
+ }
7213
+ function resolveTaskByName(name) {
7214
+ const taskName = String(name ?? "");
7215
+ return taskName ? CadenzaService.get(taskName) : void 0;
7216
+ }
7217
+ function resolvePredecessorTaskFromMetadataContext(ctx) {
7218
+ return resolveTaskByName(
7219
+ ctx?.predecessorTaskName ?? ctx?.data?.predecessorTaskName ?? ctx?.data?.predecessor_task_name ?? ctx?.filter?.predecessorTaskName ?? ctx?.filter?.predecessor_task_name
7220
+ );
7221
+ }
7222
+ function shouldSkipDirectTaskMetadata(task) {
7223
+ return !task || !task.register || task.isHidden || task.isDeputy;
7224
+ }
7225
+ function shouldPersistBusinessTaskExecution(task) {
7226
+ return !!task && task.register && !task.isHidden && !task.isMeta && !task.isSubMeta && !task.isDeputy;
7227
+ }
7228
+ function shouldEmitDirectPrimitiveMetadata() {
7229
+ return CadenzaService.hasCompletedBootstrapSync();
7230
+ }
7231
+ function shouldPersistBusinessInquiry(ctx) {
7232
+ const inquiryName = String(
7233
+ ctx?.data?.name ?? ctx?.inquiry ?? ctx?.data?.metadata?.inquiryMeta?.inquiry ?? ""
7234
+ );
7235
+ if (!inquiryName) {
7236
+ return false;
7237
+ }
7238
+ return !isMetaIntentName(inquiryName) && ctx?.data?.isMeta !== true && ctx?.data?.is_meta !== true;
7239
+ }
7240
+ function shouldPersistRoutineExecution(ctx) {
7241
+ if (ctx?.data?.isMeta === true || ctx?.data?.is_meta === true) {
7242
+ return false;
7243
+ }
7244
+ const routineTask = resolveTaskByName(ctx?.data?.name);
7245
+ if (routineTask) {
7246
+ return shouldPersistBusinessTaskExecution(routineTask);
7247
+ }
7248
+ return true;
7249
+ }
7250
+ function shouldPersistTaskExecutionMetadata(ctx) {
7251
+ const task = resolveTaskFromMetadataContext(ctx);
7252
+ return shouldPersistBusinessTaskExecution(task);
7253
+ }
7254
+ function shouldPersistTaskExecutionMap(ctx) {
7255
+ return shouldPersistBusinessTaskExecution(resolveTaskFromMetadataContext(ctx)) && shouldPersistBusinessTaskExecution(resolvePredecessorTaskFromMetadataContext(ctx));
7256
+ }
7257
+ function hasInquiryLink(data) {
7258
+ const metaContext = data?.metaContext ?? data?.meta_context;
7259
+ const directInquiryId = metaContext?.__inquiryId ?? metaContext?.__metadata?.__inquiryId;
7260
+ return typeof directInquiryId === "string" && directInquiryId.length > 0;
7261
+ }
6732
7262
  var GraphMetadataController = class _GraphMetadataController {
6733
7263
  static get instance() {
6734
7264
  if (!this._instance) this._instance = new _GraphMetadataController();
6735
7265
  return this._instance;
6736
7266
  }
6737
7267
  constructor() {
6738
- CadenzaService.createMetaTask("Handle task creation", (ctx) => {
6739
- return buildDatabaseTriggerContext({
6740
- ...ctx.data,
6741
- serviceName: CadenzaService.serviceRegistry.serviceName
6742
- });
7268
+ const buildOnConflictDoNothing = (target) => ({
7269
+ target,
7270
+ action: {
7271
+ do: "nothing"
7272
+ }
7273
+ });
7274
+ CadenzaService.createMetaTask("Handle task creation", (ctx) => {
7275
+ if (!shouldEmitDirectPrimitiveMetadata()) {
7276
+ return false;
7277
+ }
7278
+ const taskName = String(ctx.data?.name ?? ctx.data?.taskName ?? "");
7279
+ const task = taskName ? CadenzaService.get(taskName) : void 0;
7280
+ const onConflict = buildOnConflictDoNothing([
7281
+ "name",
7282
+ "service_name",
7283
+ "version"
7284
+ ]);
7285
+ if (shouldSkipDirectTaskMetadata(task) || task?.registered || task?.registrationRequested) {
7286
+ return false;
7287
+ }
7288
+ if (task) {
7289
+ task.registrationRequested = true;
7290
+ }
7291
+ return buildDatabaseTriggerContext(
7292
+ {
7293
+ ...ctx.data,
7294
+ serviceName: CadenzaService.serviceRegistry.serviceName
7295
+ },
7296
+ void 0,
7297
+ { onConflict },
7298
+ { onConflict }
7299
+ );
6743
7300
  }).doOn("meta.task.created").emits("global.meta.graph_metadata.task_created");
6744
7301
  CadenzaService.createMetaTask("Handle task update", (ctx) => {
7302
+ if (!shouldEmitDirectPrimitiveMetadata()) {
7303
+ return false;
7304
+ }
7305
+ const task = resolveTaskFromMetadataContext(ctx);
7306
+ if (shouldSkipDirectTaskMetadata(task)) {
7307
+ return false;
7308
+ }
6745
7309
  return buildDatabaseTriggerContext(
6746
7310
  ctx.data ?? void 0,
6747
7311
  {
@@ -6751,11 +7315,14 @@ var GraphMetadataController = class _GraphMetadataController {
6751
7315
  );
6752
7316
  }).doOn("meta.task.layer_index_changed", "meta.task.destroyed").emits("global.meta.graph_metadata.task_updated");
6753
7317
  CadenzaService.createMetaTask("Handle task relationship creation", (ctx) => {
7318
+ if (!shouldEmitDirectPrimitiveMetadata()) {
7319
+ return false;
7320
+ }
6754
7321
  const taskName = ctx.data?.taskName ?? ctx.data?.task_name;
6755
7322
  const predecessorTaskName = ctx.data?.predecessorTaskName ?? ctx.data?.predecessor_task_name;
6756
7323
  const task = taskName ? CadenzaService.get(taskName) : void 0;
6757
7324
  const predecessorTask = predecessorTaskName ? CadenzaService.get(predecessorTaskName) : void 0;
6758
- if (!task?.registered || !predecessorTask?.registered) {
7325
+ if (shouldSkipDirectTaskMetadata(task) || shouldSkipDirectTaskMetadata(predecessorTask) || !task?.registered || !predecessorTask?.registered) {
6759
7326
  return false;
6760
7327
  }
6761
7328
  return buildDatabaseTriggerContext({
@@ -6768,14 +7335,35 @@ var GraphMetadataController = class _GraphMetadataController {
6768
7335
  CadenzaService.log(`Error in task ${ctx.data.taskName}`, ctx.data, "error");
6769
7336
  }).doOn("meta.node.errored");
6770
7337
  CadenzaService.createMetaTask("Handle task signal observation", (ctx) => {
6771
- const isGlobal = ctx.signalName.startsWith("global.");
7338
+ if (!shouldEmitDirectPrimitiveMetadata()) {
7339
+ return false;
7340
+ }
7341
+ const signalName = String(
7342
+ ctx.signalName ?? ctx.data?.signalName ?? ""
7343
+ ).split(":")[0];
7344
+ const task = resolveTaskFromMetadataContext(ctx);
7345
+ if (shouldSkipDirectTaskMetadata(task)) {
7346
+ return false;
7347
+ }
7348
+ if (task?.registered && task.registeredSignals.has(signalName)) {
7349
+ return false;
7350
+ }
7351
+ const isGlobal = signalName.startsWith("global.");
6772
7352
  return buildDatabaseTriggerContext({
6773
7353
  ...ctx.data,
7354
+ signalName,
6774
7355
  isGlobal,
6775
7356
  serviceName: CadenzaService.serviceRegistry.serviceName
6776
7357
  });
6777
7358
  }).doOn("meta.task.observed_signal").emits("global.meta.graph_metadata.task_signal_observed");
6778
7359
  CadenzaService.createMetaTask("Handle task signal attachment", (ctx) => {
7360
+ if (!shouldEmitDirectPrimitiveMetadata()) {
7361
+ return false;
7362
+ }
7363
+ const task = resolveTaskFromMetadataContext(ctx);
7364
+ if (shouldSkipDirectTaskMetadata(task)) {
7365
+ return false;
7366
+ }
6779
7367
  return buildDatabaseTriggerContext(
6780
7368
  ctx.data ?? void 0,
6781
7369
  {
@@ -6784,7 +7372,34 @@ var GraphMetadataController = class _GraphMetadataController {
6784
7372
  }
6785
7373
  );
6786
7374
  }).doOn("meta.task.attached_signal").emits("global.meta.graph_metadata.task_attached_signal");
7375
+ CadenzaService.createMetaTask("Handle task intent association", (ctx) => {
7376
+ if (!shouldEmitDirectPrimitiveMetadata()) {
7377
+ return false;
7378
+ }
7379
+ const intentName = String(ctx.data?.intentName ?? "");
7380
+ const task = resolveTaskFromMetadataContext(ctx);
7381
+ if (shouldSkipDirectTaskMetadata(task)) {
7382
+ return false;
7383
+ }
7384
+ if (task?.registered && task.__registeredIntents?.has(
7385
+ intentName
7386
+ )) {
7387
+ return false;
7388
+ }
7389
+ return buildDatabaseTriggerContext({
7390
+ ...ctx.data,
7391
+ intentName,
7392
+ serviceName: CadenzaService.serviceRegistry.serviceName
7393
+ });
7394
+ }).doOn("meta.task.intent_associated").emits("global.meta.graph_metadata.task_intent_associated");
6787
7395
  CadenzaService.createMetaTask("Handle task unsubscribing signal", (ctx) => {
7396
+ if (!shouldEmitDirectPrimitiveMetadata()) {
7397
+ return false;
7398
+ }
7399
+ const task = resolveTaskFromMetadataContext(ctx);
7400
+ if (shouldSkipDirectTaskMetadata(task)) {
7401
+ return false;
7402
+ }
6788
7403
  return buildDatabaseTriggerContext(
6789
7404
  {
6790
7405
  deleted: true
@@ -6796,6 +7411,13 @@ var GraphMetadataController = class _GraphMetadataController {
6796
7411
  );
6797
7412
  }).doOn("meta.task.unsubscribed_signal").emits("meta.graph_metadata.task_unsubscribed_signal");
6798
7413
  CadenzaService.createMetaTask("Handle task detaching signal", (ctx) => {
7414
+ if (!shouldEmitDirectPrimitiveMetadata()) {
7415
+ return false;
7416
+ }
7417
+ const task = resolveTaskFromMetadataContext(ctx);
7418
+ if (shouldSkipDirectTaskMetadata(task)) {
7419
+ return false;
7420
+ }
6799
7421
  return buildDatabaseTriggerContext(
6800
7422
  {
6801
7423
  deleted: true
@@ -6807,12 +7429,18 @@ var GraphMetadataController = class _GraphMetadataController {
6807
7429
  );
6808
7430
  }).doOn("meta.task.detached_signal").emits("global.meta.graph_metadata.task_detached_signal");
6809
7431
  CadenzaService.createMetaTask("Handle routine creation", (ctx) => {
7432
+ if (!shouldEmitDirectPrimitiveMetadata()) {
7433
+ return false;
7434
+ }
6810
7435
  return buildDatabaseTriggerContext({
6811
7436
  ...ctx.data,
6812
7437
  serviceName: CadenzaService.serviceRegistry.serviceName
6813
7438
  });
6814
7439
  }).doAfter(CadenzaService.registry.registerRoutine).emits("global.meta.graph_metadata.routine_created");
6815
7440
  CadenzaService.createMetaTask("Handle routine update", (ctx) => {
7441
+ if (!shouldEmitDirectPrimitiveMetadata()) {
7442
+ return false;
7443
+ }
6816
7444
  return buildDatabaseTriggerContext(
6817
7445
  ctx.data ?? void 0,
6818
7446
  {
@@ -6822,6 +7450,9 @@ var GraphMetadataController = class _GraphMetadataController {
6822
7450
  );
6823
7451
  }).doOn("meta.routine.destroyed").emits("global.meta.graph_metadata.routine_updated");
6824
7452
  CadenzaService.createMetaTask("Handle adding task to routine", (ctx) => {
7453
+ if (!shouldEmitDirectPrimitiveMetadata()) {
7454
+ return false;
7455
+ }
6825
7456
  return buildDatabaseTriggerContext({
6826
7457
  ...ctx.data,
6827
7458
  serviceName: CadenzaService.serviceRegistry.serviceName
@@ -6837,8 +7468,12 @@ var GraphMetadataController = class _GraphMetadataController {
6837
7468
  CadenzaService.createMetaTask(
6838
7469
  "Handle routine execution creation",
6839
7470
  (ctx) => {
7471
+ if (!shouldPersistRoutineExecution(ctx)) {
7472
+ return false;
7473
+ }
6840
7474
  return buildDatabaseTriggerContext({
6841
7475
  ...ctx.data,
7476
+ previousRoutineExecution: hasInquiryLink(ctx.data) ? null : ctx.data?.previousRoutineExecution ?? ctx.data?.previous_routine_execution ?? null,
6842
7477
  serviceName: CadenzaService.serviceRegistry.serviceName,
6843
7478
  serviceInstanceId: CadenzaService.serviceRegistry.serviceInstanceId
6844
7479
  });
@@ -6875,6 +7510,9 @@ var GraphMetadataController = class _GraphMetadataController {
6875
7510
  CadenzaService.createMetaTask(
6876
7511
  "Handle task execution creation",
6877
7512
  (ctx) => {
7513
+ if (!shouldPersistTaskExecutionMetadata(ctx)) {
7514
+ return false;
7515
+ }
6878
7516
  return buildDatabaseTriggerContext({
6879
7517
  ...ctx.data,
6880
7518
  serviceName: CadenzaService.serviceRegistry.serviceName,
@@ -6887,6 +7525,9 @@ var GraphMetadataController = class _GraphMetadataController {
6887
7525
  CadenzaService.createMetaTask(
6888
7526
  "Handle task execution mapped",
6889
7527
  (ctx) => {
7528
+ if (!shouldPersistTaskExecutionMap(ctx)) {
7529
+ return false;
7530
+ }
6890
7531
  return buildDatabaseTriggerContext(
6891
7532
  ctx.data ?? void 0,
6892
7533
  ctx.filter ?? void 0
@@ -6898,6 +7539,9 @@ var GraphMetadataController = class _GraphMetadataController {
6898
7539
  CadenzaService.createMetaTask(
6899
7540
  "Handle task execution started",
6900
7541
  (ctx) => {
7542
+ if (!shouldPersistTaskExecutionMetadata(ctx)) {
7543
+ return false;
7544
+ }
6901
7545
  return buildDatabaseTriggerContext(
6902
7546
  ctx.data ?? void 0,
6903
7547
  ctx.filter ?? void 0
@@ -6909,6 +7553,9 @@ var GraphMetadataController = class _GraphMetadataController {
6909
7553
  CadenzaService.createMetaTask(
6910
7554
  "Handle task execution ended",
6911
7555
  (ctx) => {
7556
+ if (!shouldPersistTaskExecutionMetadata(ctx)) {
7557
+ return false;
7558
+ }
6912
7559
  return buildDatabaseTriggerContext(
6913
7560
  {
6914
7561
  ...ctx.data,
@@ -6921,9 +7568,39 @@ var GraphMetadataController = class _GraphMetadataController {
6921
7568
  "Handles task execution ended",
6922
7569
  { concurrency: 100, isSubMeta: true }
6923
7570
  ).doOn("meta.node.ended").emits("global.meta.graph_metadata.task_execution_ended");
7571
+ CadenzaService.createMetaTask(
7572
+ "Handle inquiry creation",
7573
+ (ctx) => {
7574
+ if (!shouldPersistBusinessInquiry(ctx)) {
7575
+ return false;
7576
+ }
7577
+ return buildDatabaseTriggerContext({
7578
+ ...ctx.data,
7579
+ serviceName: CadenzaService.serviceRegistry.serviceName,
7580
+ serviceInstanceId: CadenzaService.serviceRegistry.serviceInstanceId,
7581
+ isMeta: false
7582
+ });
7583
+ },
7584
+ "Handles inquiry creation",
7585
+ { concurrency: 100, isSubMeta: true }
7586
+ ).doOn("meta.inquiry_broker.inquiry_started").emits("global.meta.graph_metadata.inquiry_created");
7587
+ CadenzaService.createMetaTask(
7588
+ "Handle inquiry update",
7589
+ (ctx) => {
7590
+ return buildDatabaseTriggerContext(
7591
+ ctx.data ?? void 0,
7592
+ ctx.filter ?? void 0
7593
+ );
7594
+ },
7595
+ "Handles inquiry completion updates",
7596
+ { concurrency: 100, isSubMeta: true }
7597
+ ).doOn("meta.inquiry_broker.inquiry_completed").emits("global.meta.graph_metadata.inquiry_updated");
6924
7598
  CadenzaService.createMetaTask(
6925
7599
  "Handle task execution relationship creation",
6926
7600
  (ctx) => {
7601
+ if (!shouldPersistTaskExecutionMap(ctx)) {
7602
+ return false;
7603
+ }
6927
7604
  return buildDatabaseTriggerContext(
6928
7605
  {
6929
7606
  executionCount: "increment",
@@ -6939,12 +7616,18 @@ var GraphMetadataController = class _GraphMetadataController {
6939
7616
  { concurrency: 100, isSubMeta: true }
6940
7617
  ).doOn("meta.node.mapped", "meta.node.detected_previous_task_execution").emits("global.meta.graph_metadata.relationship_executed");
6941
7618
  CadenzaService.createMetaTask("Handle actor creation", (ctx) => {
7619
+ if (!shouldEmitDirectPrimitiveMetadata()) {
7620
+ return false;
7621
+ }
6942
7622
  return buildDatabaseTriggerContext({
6943
7623
  ...ctx.data,
6944
7624
  service_name: CadenzaService.serviceRegistry.serviceName
6945
7625
  });
6946
7626
  }).doOn("meta.actor.created").emits("global.meta.graph_metadata.actor_created");
6947
7627
  CadenzaService.createMetaTask("Handle actor task association", (ctx) => {
7628
+ if (!shouldEmitDirectPrimitiveMetadata()) {
7629
+ return false;
7630
+ }
6948
7631
  return buildDatabaseTriggerContext({
6949
7632
  ...ctx.data,
6950
7633
  service_name: CadenzaService.serviceRegistry.serviceName
@@ -6952,6 +7635,9 @@ var GraphMetadataController = class _GraphMetadataController {
6952
7635
  }).doOn("meta.actor.task_associated").emits("global.meta.graph_metadata.actor_task_associated");
6953
7636
  registerActorSessionPersistenceTasks();
6954
7637
  CadenzaService.createMetaTask("Handle Intent Creation", (ctx) => {
7638
+ if (!shouldEmitDirectPrimitiveMetadata()) {
7639
+ return false;
7640
+ }
6955
7641
  const intentName = ctx.data?.name;
6956
7642
  return buildDatabaseTriggerContext({
6957
7643
  ...ctx.data,
@@ -7001,6 +7687,10 @@ var AUTHORITY_SYNC_DEBUG_TASK_NAMES = /* @__PURE__ */ new Set([
7001
7687
  "Prepare for signal sync"
7002
7688
  ]);
7003
7689
  var AUTHORITY_SYNC_DEBUG_ROUTINE_NAMES = /* @__PURE__ */ new Set(["Sync services"]);
7690
+ var INTENT_MAP_DEBUG_ENABLED = process.env.CADENZA_INTENT_MAP_DEBUG === "1" || process.env.CADENZA_INTENT_MAP_DEBUG === "true";
7691
+ var POSTGRES_SETUP_DEBUG_ENABLED = process.env.CADENZA_POSTGRES_SETUP_DEBUG === "1" || process.env.CADENZA_POSTGRES_SETUP_DEBUG === "true";
7692
+ var GENERATED_POSTGRES_WRITE_TASK_CONCURRENCY = 200;
7693
+ var GENERATED_POSTGRES_WRITE_TASK_TIMEOUT_MS = 12e4;
7004
7694
  function logAuthoritySyncDebug(event, payload) {
7005
7695
  if (!AUTHORITY_SYNC_DEBUG_ENABLED) {
7006
7696
  return;
@@ -7040,6 +7730,18 @@ function shouldDebugAuthoritySyncPayload(tableName, payload) {
7040
7730
  }
7041
7731
  return false;
7042
7732
  }
7733
+ function logIntentMapSetupDebug(event, payload) {
7734
+ if (!INTENT_MAP_DEBUG_ENABLED) {
7735
+ return;
7736
+ }
7737
+ console.log("[CADENZA_INTENT_MAP_DEBUG]", event, payload);
7738
+ }
7739
+ function logPostgresSetupDebug(event, payload) {
7740
+ if (!POSTGRES_SETUP_DEBUG_ENABLED) {
7741
+ return;
7742
+ }
7743
+ console.log("[CADENZA_POSTGRES_SETUP_DEBUG]", event, payload);
7744
+ }
7043
7745
  function buildAuthoritySyncDebugSummary(payload, context) {
7044
7746
  const data = payload.data && typeof payload.data === "object" && !Array.isArray(payload.data) ? payload.data : {};
7045
7747
  return {
@@ -7251,7 +7953,55 @@ function errorMessage(error) {
7251
7953
  }
7252
7954
  return String(error);
7253
7955
  }
7254
- function isTransientDatabaseError(error) {
7956
+ var EXECUTION_OBSERVABILITY_RETRYABLE_FOREIGN_KEYS = /* @__PURE__ */ new Set([
7957
+ "routine_execution_execution_trace_id_fkey",
7958
+ "routine_execution_previous_routine_execution_fkey",
7959
+ "task_execution_routine_execution_id_fkey",
7960
+ "task_execution_execution_trace_id_fkey",
7961
+ "task_execution_signal_emission_id_fkey",
7962
+ "task_execution_inquiry_id_fkey",
7963
+ "task_execution_map_task_execution_id_fkey",
7964
+ "task_execution_map_previous_task_execution_id_fkey",
7965
+ "signal_emission_execution_trace_id_fkey",
7966
+ "signal_emission_routine_execution_id_fkey",
7967
+ "signal_emission_task_execution_id_fkey",
7968
+ "inquiry_execution_trace_id_fkey",
7969
+ "inquiry_routine_execution_id_fkey",
7970
+ "inquiry_task_execution_id_fkey"
7971
+ ]);
7972
+ function resolveOperationTableName(operationLabel) {
7973
+ if (!operationLabel) {
7974
+ return null;
7975
+ }
7976
+ const match = /^insert\s+([a-z0-9_]+)$/i.exec(operationLabel.trim());
7977
+ return match?.[1]?.toLowerCase() ?? null;
7978
+ }
7979
+ function isRetryableExecutionObservabilityForeignKeyError(error, operationLabel) {
7980
+ if (!error || typeof error !== "object") {
7981
+ return false;
7982
+ }
7983
+ const dbError = error;
7984
+ if (String(dbError.code ?? "") !== "23503") {
7985
+ return false;
7986
+ }
7987
+ const constraint = String(dbError.constraint ?? "").toLowerCase();
7988
+ if (constraint && EXECUTION_OBSERVABILITY_RETRYABLE_FOREIGN_KEYS.has(constraint)) {
7989
+ return true;
7990
+ }
7991
+ const table = String(dbError.table ?? "").toLowerCase() || resolveOperationTableName(operationLabel) || "";
7992
+ if (![
7993
+ "routine_execution",
7994
+ "task_execution",
7995
+ "task_execution_map",
7996
+ "signal_emission",
7997
+ "inquiry"
7998
+ ].includes(table)) {
7999
+ return false;
8000
+ }
8001
+ const message = String(dbError.message ?? "").toLowerCase();
8002
+ return message.includes("foreign key constraint") && (message.includes("execution_trace") || message.includes("routine_execution") || message.includes("task_execution") || message.includes("signal_emission") || message.includes("inquiry"));
8003
+ }
8004
+ function isTransientDatabaseError(error, operationLabel) {
7255
8005
  if (!error || typeof error !== "object") {
7256
8006
  return false;
7257
8007
  }
@@ -7261,7 +8011,10 @@ function isTransientDatabaseError(error) {
7261
8011
  return true;
7262
8012
  }
7263
8013
  const message = String(dbError.message ?? "").toLowerCase();
7264
- return message.includes("timeout") || message.includes("terminating connection") || message.includes("connection reset");
8014
+ if (message.includes("timeout") || message.includes("terminating connection") || message.includes("connection reset")) {
8015
+ return true;
8016
+ }
8017
+ return isRetryableExecutionObservabilityForeignKeyError(error, operationLabel);
7265
8018
  }
7266
8019
  function isSqlIdentifier(value) {
7267
8020
  return /^[a-z_][a-z0-9_]*$/.test(value);
@@ -7295,6 +8048,37 @@ function resolveDataRows(data) {
7295
8048
  }
7296
8049
  return [ensurePlainObject(data, "data")];
7297
8050
  }
8051
+ var DB_OPERATION_CONTEXT_KEYS = [
8052
+ "data",
8053
+ "batch",
8054
+ "transaction",
8055
+ "onConflict",
8056
+ "filter",
8057
+ "fields",
8058
+ "joins",
8059
+ "sort",
8060
+ "limit",
8061
+ "offset",
8062
+ "queryMode",
8063
+ "aggregates",
8064
+ "groupBy"
8065
+ ];
8066
+ function mergeTriggerQueryData(context, triggerQueryData) {
8067
+ const existingQueryData = typeof context.queryData === "object" && context.queryData ? { ...context.queryData } : {};
8068
+ for (const key of DB_OPERATION_CONTEXT_KEYS) {
8069
+ if (!Object.prototype.hasOwnProperty.call(existingQueryData, key) && context[key] !== void 0) {
8070
+ existingQueryData[key] = context[key];
8071
+ }
8072
+ }
8073
+ return {
8074
+ ...existingQueryData,
8075
+ ...triggerQueryData
8076
+ };
8077
+ }
8078
+ function resolveOperationPayload(context) {
8079
+ const queryData = typeof context.queryData === "object" && context.queryData ? context.queryData : {};
8080
+ return mergeTriggerQueryData(context, queryData);
8081
+ }
7298
8082
  function buildAddConstraintIfMissingStatement(tableName, constraintName, constraintDefinition) {
7299
8083
  const escapedConstraintName = constraintName.replace(/'/g, "''");
7300
8084
  const escapedTableName = tableName.replace(/'/g, "''");
@@ -7432,9 +8216,19 @@ var DatabaseController = class _DatabaseController {
7432
8216
  };
7433
8217
  const runtimeState = registration.actor.getRuntimeState(registration.actorKey);
7434
8218
  if (runtimeState?.ready) {
8219
+ logPostgresSetupDebug("setup_already_ready", {
8220
+ actorName: registration.actorName,
8221
+ databaseName: registration.databaseName
8222
+ });
7435
8223
  this.emitSetupDone(registration, payload);
7436
8224
  return registration;
7437
8225
  }
8226
+ logPostgresSetupDebug("emit_setup_requested", {
8227
+ actorName: registration.actorName,
8228
+ databaseName: registration.databaseName,
8229
+ ownerServiceName: registration.ownerServiceName,
8230
+ payloadKeys: Object.keys(payload)
8231
+ });
7438
8232
  CadenzaService.emit(registration.setupSignal, payload);
7439
8233
  return registration;
7440
8234
  }
@@ -7486,6 +8280,11 @@ var DatabaseController = class _DatabaseController {
7486
8280
  `Setup ${registration.actorName}`,
7487
8281
  registration.actor.task(
7488
8282
  async ({ input, state, runtimeState, setState, setRuntimeState, emit }) => {
8283
+ logPostgresSetupDebug("setup_task_started", {
8284
+ actorName: registration.actorName,
8285
+ databaseName: registration.databaseName,
8286
+ inputKeys: Object.keys(input ?? {})
8287
+ });
7489
8288
  const requestedDatabaseName = String(
7490
8289
  input.options?.databaseName ?? input.databaseName ?? registration.databaseName
7491
8290
  );
@@ -7504,11 +8303,19 @@ var DatabaseController = class _DatabaseController {
7504
8303
  }
7505
8304
  try {
7506
8305
  await this.createDatabaseIfMissing(requestedDatabaseName);
8306
+ logPostgresSetupDebug("database_ready", {
8307
+ actorName: registration.actorName,
8308
+ databaseName: requestedDatabaseName
8309
+ });
7507
8310
  const pool = this.createTargetPool(
7508
8311
  requestedDatabaseName,
7509
8312
  state.safetyPolicy.statementTimeoutMs
7510
8313
  );
7511
8314
  await this.checkPoolHealth(pool, state.safetyPolicy);
8315
+ logPostgresSetupDebug("pool_healthy", {
8316
+ actorName: registration.actorName,
8317
+ databaseName: requestedDatabaseName
8318
+ });
7512
8319
  this.validateSchema({
7513
8320
  schema: registration.schema,
7514
8321
  options: registration.options
@@ -7524,6 +8331,18 @@ var DatabaseController = class _DatabaseController {
7524
8331
  if (!registration.tasksGenerated) {
7525
8332
  this.generateDatabaseTasks(registration);
7526
8333
  registration.tasksGenerated = true;
8334
+ const localTasks = Array.from(CadenzaService.registry.tasks.values());
8335
+ logIntentMapSetupDebug("generated_database_tasks", {
8336
+ actorName: registration.actorName,
8337
+ ownerServiceName: registration.ownerServiceName,
8338
+ totalLocalTasks: localTasks.length,
8339
+ generatedTaskNames: localTasks.map((task) => task.name).filter(
8340
+ (taskName) => /(Query|Insert|Update|Delete|COUNT|EXISTS|ONE|AGGREGATE|UPSERT) /.test(
8341
+ taskName
8342
+ )
8343
+ ).slice(0, 24)
8344
+ });
8345
+ CadenzaService.schedule("meta.sync_requested", { __syncing: true }, 250);
7527
8346
  }
7528
8347
  const nowIso = (/* @__PURE__ */ new Date()).toISOString();
7529
8348
  setRuntimeState({
@@ -7544,6 +8363,10 @@ var DatabaseController = class _DatabaseController {
7544
8363
  this.emitSetupDone(registration, {
7545
8364
  ...input
7546
8365
  });
8366
+ logPostgresSetupDebug("setup_task_completed", {
8367
+ actorName: registration.actorName,
8368
+ databaseName: requestedDatabaseName
8369
+ });
7547
8370
  return {
7548
8371
  ...input,
7549
8372
  __success: true,
@@ -7553,6 +8376,11 @@ var DatabaseController = class _DatabaseController {
7553
8376
  };
7554
8377
  } catch (error) {
7555
8378
  const message = errorMessage(error);
8379
+ logPostgresSetupDebug("setup_task_failed", {
8380
+ actorName: registration.actorName,
8381
+ databaseName: requestedDatabaseName,
8382
+ error: message
8383
+ });
7556
8384
  setRuntimeState({
7557
8385
  pool: null,
7558
8386
  ready: false,
@@ -7680,7 +8508,7 @@ var DatabaseController = class _DatabaseController {
7680
8508
  return await work();
7681
8509
  } catch (error) {
7682
8510
  lastError = error;
7683
- const transient = isTransientDatabaseError(error);
8511
+ const transient = isTransientDatabaseError(error, operationLabel);
7684
8512
  if (!transient || attempt >= attempts) {
7685
8513
  break;
7686
8514
  }
@@ -8346,7 +9174,7 @@ var DatabaseController = class _DatabaseController {
8346
9174
  description: `Macro upsert operation for table ${tableName}`,
8347
9175
  input: insertSchema
8348
9176
  });
8349
- CadenzaService.createThrottledTask(
9177
+ CadenzaService.createTask(
8350
9178
  `UPSERT ${tableName}`,
8351
9179
  registration.actor.task(
8352
9180
  async ({ input }) => {
@@ -8367,9 +9195,11 @@ var DatabaseController = class _DatabaseController {
8367
9195
  },
8368
9196
  { mode: "write" }
8369
9197
  ),
8370
- (context) => context?.__metadata?.__executionTraceId ?? context?.__executionTraceId ?? "default",
8371
9198
  `Macro upsert task for ${tableName}`,
8372
9199
  {
9200
+ concurrency: GENERATED_POSTGRES_WRITE_TASK_CONCURRENCY,
9201
+ timeout: GENERATED_POSTGRES_WRITE_TASK_TIMEOUT_MS,
9202
+ getTagCallback: () => `upsert:${registration.actorToken}:${tableName}`,
8373
9203
  isMeta: registration.options.isMeta,
8374
9204
  isSubMeta: registration.options.isMeta,
8375
9205
  validateInputContext: shouldValidateGeneratedDbTaskInput(registration),
@@ -8400,15 +9230,15 @@ var DatabaseController = class _DatabaseController {
8400
9230
  };
8401
9231
  }
8402
9232
  if (trigger.queryData) {
8403
- context.queryData = {
8404
- ...context.queryData ?? {},
8405
- ...trigger.queryData
8406
- };
9233
+ context.queryData = mergeTriggerQueryData(
9234
+ context,
9235
+ trigger.queryData
9236
+ );
8407
9237
  payloadModifiedByTriggers = true;
8408
9238
  }
8409
9239
  }
8410
9240
  }
8411
- const operationPayload = typeof context.queryData === "object" && context.queryData ? context.queryData : context;
9241
+ const operationPayload = resolveOperationPayload(context);
8412
9242
  const shouldDebugAuthoritySync = shouldDebugAuthoritySyncPayload(
8413
9243
  tableName,
8414
9244
  operationPayload
@@ -8505,18 +9335,29 @@ var DatabaseController = class _DatabaseController {
8505
9335
  },
8506
9336
  { mode: op === "query" ? "read" : "write" }
8507
9337
  );
8508
- const task = CadenzaService.createThrottledTask(
9338
+ const taskOptions = {
9339
+ isMeta: registration.options.isMeta,
9340
+ isSubMeta: registration.options.isMeta,
9341
+ validateInputContext: shouldValidateGeneratedDbTaskInput(registration),
9342
+ inputSchema: schema
9343
+ };
9344
+ const task = (op === "insert" ? CadenzaService.createTask(
8509
9345
  taskName,
8510
9346
  databaseTaskFunction,
8511
- (context) => context?.__metadata?.__executionTraceId ?? context?.__executionTraceId ?? "default",
8512
9347
  `Auto-generated ${op} task for ${tableName} (PostgresActor)`,
8513
9348
  {
8514
- isMeta: registration.options.isMeta,
8515
- isSubMeta: registration.options.isMeta,
8516
- validateInputContext: shouldValidateGeneratedDbTaskInput(registration),
8517
- inputSchema: schema
9349
+ ...taskOptions,
9350
+ concurrency: GENERATED_POSTGRES_WRITE_TASK_CONCURRENCY,
9351
+ timeout: GENERATED_POSTGRES_WRITE_TASK_TIMEOUT_MS,
9352
+ getTagCallback: () => `insert:${registration.actorToken}:${tableName}`
8518
9353
  }
8519
- ).doOn(
9354
+ ) : CadenzaService.createThrottledTask(
9355
+ taskName,
9356
+ databaseTaskFunction,
9357
+ (context) => context?.__metadata?.__executionTraceId ?? context?.__executionTraceId ?? "default",
9358
+ `Auto-generated ${op} task for ${tableName} (PostgresActor)`,
9359
+ taskOptions
9360
+ )).doOn(
8520
9361
  ...table.customSignals?.triggers?.[op]?.map(
8521
9362
  (signal) => typeof signal === "string" ? signal : signal.signal
8522
9363
  ) ?? []
@@ -9173,7 +10014,7 @@ function buildIntentRegistryData(intent) {
9173
10014
  description: typeof intent?.description === "string" ? intent.description : "",
9174
10015
  input: intent?.input && typeof intent.input === "object" ? intent.input : { type: "object" },
9175
10016
  output: intent?.output && typeof intent.output === "object" ? intent.output : { type: "object" },
9176
- isMeta: isMetaIntentName(name)
10017
+ is_meta: isMetaIntentName(name)
9177
10018
  };
9178
10019
  }
9179
10020
  function getJoinedContextValue(ctx, key) {
@@ -9246,34 +10087,7 @@ function buildSyncInsertQueryData(ctx, queryData = {}) {
9246
10087
  }
9247
10088
  return nextQueryData;
9248
10089
  }
9249
- function buildSyncQueryQueryData(ctx, queryData = {}) {
9250
- const joinedQueryData = getJoinedContextValue(ctx, "queryData");
9251
- const existingQueryData = ctx.queryData && typeof ctx.queryData === "object" ? ctx.queryData : joinedQueryData && typeof joinedQueryData === "object" ? joinedQueryData : {};
9252
- const nextQueryData = {};
9253
- const allowedKeys = [
9254
- "transaction",
9255
- "filter",
9256
- "fields",
9257
- "joins",
9258
- "sort",
9259
- "limit",
9260
- "offset",
9261
- "queryMode",
9262
- "aggregates",
9263
- "groupBy"
9264
- ];
9265
- for (const key of allowedKeys) {
9266
- if (Object.prototype.hasOwnProperty.call(existingQueryData, key)) {
9267
- nextQueryData[key] = existingQueryData[key];
9268
- }
9269
- }
9270
- return {
9271
- ...nextQueryData,
9272
- ...queryData
9273
- };
9274
- }
9275
10090
  var REMOTE_AUTHORITY_SYNC_INSERT_CONCURRENCY = 5;
9276
- var REMOTE_AUTHORITY_SYNC_QUERY_CONCURRENCY = 3;
9277
10091
  function wireSyncTaskGraph(predecessorTask, graph, ...completionTasks) {
9278
10092
  if (!graph) {
9279
10093
  return void 0;
@@ -9286,11 +10100,27 @@ function wireSyncTaskGraph(predecessorTask, graph, ...completionTasks) {
9286
10100
  }
9287
10101
  function buildSyncExecutionEnvelope(ctx, queryData) {
9288
10102
  const originalContext = { ...ctx };
10103
+ const syncSourceServiceName = typeof ctx.__syncSourceServiceName === "string" && ctx.__syncSourceServiceName.trim().length > 0 ? ctx.__syncSourceServiceName : typeof ctx.__serviceName === "string" && ctx.__serviceName.trim().length > 0 ? ctx.__serviceName : resolveSyncServiceName();
10104
+ const rootDbOperationFields = {};
10105
+ for (const key of [
10106
+ "data",
10107
+ "batch",
10108
+ "transaction",
10109
+ "onConflict",
10110
+ "filter",
10111
+ "fields"
10112
+ ]) {
10113
+ if (Object.prototype.hasOwnProperty.call(queryData, key)) {
10114
+ rootDbOperationFields[key] = queryData[key];
10115
+ }
10116
+ }
9289
10117
  const nextContext = {
9290
10118
  __syncing: ctx.__syncing === true || ctx.__metadata?.__syncing === true || false,
10119
+ __syncSourceServiceName: syncSourceServiceName,
9291
10120
  __preferredTransportProtocol: "rest",
9292
10121
  __resolverOriginalContext: originalContext,
9293
10122
  __resolverQueryData: queryData,
10123
+ ...rootDbOperationFields,
9294
10124
  queryData
9295
10125
  };
9296
10126
  if (typeof ctx.__reason === "string" && ctx.__reason.trim().length > 0) {
@@ -9298,9 +10128,26 @@ function buildSyncExecutionEnvelope(ctx, queryData) {
9298
10128
  }
9299
10129
  return nextContext;
9300
10130
  }
10131
+ function markCompletedSyncCycle(completedCycles, cycleId, limit = 32) {
10132
+ if (!cycleId) {
10133
+ return false;
10134
+ }
10135
+ if (completedCycles.has(cycleId)) {
10136
+ return false;
10137
+ }
10138
+ completedCycles.add(cycleId);
10139
+ while (completedCycles.size > limit) {
10140
+ const oldestCycleId = completedCycles.values().next().value;
10141
+ if (!oldestCycleId) {
10142
+ break;
10143
+ }
10144
+ completedCycles.delete(oldestCycleId);
10145
+ }
10146
+ return true;
10147
+ }
9301
10148
  function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, options = {}) {
9302
10149
  const localInsertTask = CadenzaService.getLocalCadenzaDBInsertTask(tableName);
9303
- if (!localInsertTask && !isCadenzaDBReady) {
10150
+ if (isCadenzaDBReady && !localInsertTask) {
9304
10151
  return void 0;
9305
10152
  }
9306
10153
  const targetTask = localInsertTask ?? CadenzaService.createCadenzaDBInsertTask(tableName, queryData, {
@@ -9351,6 +10198,11 @@ function resolveSyncInsertTask(isCadenzaDBReady, tableName, queryData = {}, opti
9351
10198
  ...ctx,
9352
10199
  queryData: ctx.queryData && typeof ctx.queryData === "object" ? ctx.queryData : originalQueryData
9353
10200
  };
10201
+ if (originalContext.__syncing === true && !didSyncInsertSucceed(normalizedContext)) {
10202
+ CadenzaService.debounce("meta.sync_requested", {
10203
+ delayMs: 1e3
10204
+ });
10205
+ }
9354
10206
  return normalizedContext;
9355
10207
  },
9356
10208
  `Finalizes ${tableName} graph-sync insert execution after the authority task finishes.`,
@@ -9378,86 +10230,82 @@ var CADENZA_DB_REQUIRED_LOCAL_SYNC_INSERT_TABLES = [
9378
10230
  "intent_to_task_map",
9379
10231
  "directional_task_graph_map"
9380
10232
  ];
9381
- var AUTHORITY_QUERY_RESULT_KEYS = {
9382
- task: "tasks",
9383
- routine: "routines",
9384
- signal_registry: "signalRegistrys",
9385
- intent_registry: "intentRegistrys"
9386
- };
9387
- var EARLY_SYNC_REQUEST_DELAYS_MS = [2e3, 1e4, 3e4];
9388
- function resolveSyncQueryRows(ctx, tableName) {
9389
- const resultKey = AUTHORITY_QUERY_RESULT_KEYS[tableName];
9390
- const rows = ctx?.[resultKey];
9391
- return Array.isArray(rows) ? rows : [];
9392
- }
9393
- function resolveSyncQueryTask(isCadenzaDBReady, tableName, queryData = {}, options = {}) {
9394
- const localQueryTask = CadenzaService.getLocalCadenzaDBQueryTask(tableName);
9395
- if (!localQueryTask && !isCadenzaDBReady) {
9396
- return void 0;
10233
+ var BOOTSTRAP_SYNC_STALE_CYCLE_MS = 15e3;
10234
+ var EARLY_SYNC_TICK_DELAYS_MS = [
10235
+ 400,
10236
+ BOOTSTRAP_SYNC_STALE_CYCLE_MS + 1e3,
10237
+ BOOTSTRAP_SYNC_STALE_CYCLE_MS * 2 + 2e3,
10238
+ BOOTSTRAP_SYNC_STALE_CYCLE_MS * 3 + 3e3
10239
+ ];
10240
+ function shouldTraceSyncPhase(serviceName) {
10241
+ const configured = process.env.CADENZA_SYNC_PHASE_TRACE_SERVICE;
10242
+ if (!configured || !serviceName) {
10243
+ return false;
9397
10244
  }
9398
- const targetTask = localQueryTask ?? CadenzaService.createCadenzaDBQueryTask(tableName, queryData, {
9399
- ...options,
9400
- concurrency: Number(options.concurrency) > 0 ? Math.min(
9401
- Number(options.concurrency),
9402
- REMOTE_AUTHORITY_SYNC_QUERY_CONCURRENCY
9403
- ) : REMOTE_AUTHORITY_SYNC_QUERY_CONCURRENCY,
9404
- register: false,
9405
- isHidden: true
9406
- });
9407
- const prepareQueryTask = CadenzaService.createMetaTask(
9408
- `Prepare graph sync query for ${tableName}`,
9409
- (ctx) => buildSyncExecutionEnvelope(
9410
- ctx,
9411
- buildSyncQueryQueryData(ctx, queryData)
9412
- ),
9413
- `Prepares ${tableName} graph-sync query payloads.`,
9414
- {
9415
- register: false,
9416
- isHidden: true
9417
- }
9418
- );
9419
- const finalizeQueryTask = CadenzaService.createMetaTask(
9420
- `Finalize graph sync query for ${tableName}`,
9421
- (ctx) => ctx,
9422
- `Finalizes ${tableName} graph-sync query payloads after authority lookup.`,
9423
- {
9424
- register: false,
9425
- isHidden: true
9426
- }
9427
- );
9428
- prepareQueryTask.then(targetTask);
9429
- targetTask.then(finalizeQueryTask);
9430
- return {
9431
- entryTask: prepareQueryTask,
9432
- completionTask: finalizeQueryTask
9433
- };
10245
+ return configured === serviceName;
10246
+ }
10247
+ function canonicalizeSignalName(signalName) {
10248
+ if (typeof signalName !== "string") {
10249
+ return "";
10250
+ }
10251
+ return signalName.split(":")[0]?.trim() ?? "";
10252
+ }
10253
+ function isBootstrapLocalOnlySignal(signalName) {
10254
+ return signalName === "meta.service_registry.insert_execution_requested" || signalName.startsWith("meta.sync_controller.");
9434
10255
  }
9435
10256
  function getRegistrableTasks() {
9436
10257
  return Array.from(CadenzaService.registry.tasks.values()).filter(
9437
- (task) => task.register && !task.isHidden
10258
+ (task) => task.register && !task.isHidden && !task.isDeputy
9438
10259
  );
9439
10260
  }
9440
10261
  function getRegistrableRoutines() {
9441
10262
  return Array.from(CadenzaService.registry.routines.values());
9442
10263
  }
9443
- function isAuthoritySyncSignal(signalName) {
9444
- return decomposeSignalName(signalName).isGlobal;
9445
- }
9446
10264
  function getRegistrableSignalObservers() {
9447
10265
  const signalObservers = CadenzaService.signalBroker.signalObservers;
9448
10266
  if (!signalObservers) {
9449
10267
  return [];
9450
10268
  }
9451
- return Array.from(signalObservers.entries()).filter(([signalName]) => isAuthoritySyncSignal(signalName)).map(([signalName, observer]) => ({
9452
- signalName,
9453
- ...observer
9454
- }));
10269
+ const canonicalObservers = /* @__PURE__ */ new Map();
10270
+ for (const [rawSignalName, observer] of signalObservers.entries()) {
10271
+ const signalName = canonicalizeSignalName(rawSignalName);
10272
+ if (!signalName || isBootstrapLocalOnlySignal(signalName)) {
10273
+ continue;
10274
+ }
10275
+ const existing = canonicalObservers.get(signalName);
10276
+ canonicalObservers.set(signalName, {
10277
+ signalName,
10278
+ registered: existing?.registered === true || observer?.registered === true
10279
+ });
10280
+ }
10281
+ return Array.from(canonicalObservers.values());
10282
+ }
10283
+ function isLocallyHandledIntentName(intentName) {
10284
+ const observer = CadenzaService.inquiryBroker.inquiryObservers.get(intentName);
10285
+ if (!observer) {
10286
+ return false;
10287
+ }
10288
+ for (const task of observer.tasks) {
10289
+ if (task.register && !task.isHidden && !task.isDeputy) {
10290
+ return true;
10291
+ }
10292
+ }
10293
+ return false;
9455
10294
  }
9456
10295
  function getRegistrableIntentNames() {
9457
10296
  return Array.from(CadenzaService.inquiryBroker.intents.values()).map((intent) => buildIntentRegistryData(intent)).filter(
9458
10297
  (intentDefinition) => intentDefinition !== null
10298
+ ).filter(
10299
+ (intentDefinition) => isLocallyHandledIntentName(String(intentDefinition.name))
9459
10300
  ).map((intentDefinition) => String(intentDefinition.name));
9460
10301
  }
10302
+ function isRegistrableLocalIntentDefinition(intent) {
10303
+ const intentData = buildIntentRegistryData(intent);
10304
+ if (!intentData) {
10305
+ return false;
10306
+ }
10307
+ return isLocallyHandledIntentName(String(intentData.name));
10308
+ }
9461
10309
  function buildActorRegistrationKey(actor, serviceName) {
9462
10310
  const data = buildActorRegistrationData(actor);
9463
10311
  const name = typeof data.name === "string" && data.name.trim().length > 0 ? data.name.trim() : "";
@@ -9499,10 +10347,23 @@ var GraphSyncController = class _GraphSyncController {
9499
10347
  this.signalsSynced = false;
9500
10348
  this.intentsSynced = false;
9501
10349
  this.routinesSynced = false;
10350
+ this.directionalTaskMapsSynced = false;
10351
+ this.signalTaskMapsSynced = false;
10352
+ this.intentTaskMapsSynced = false;
10353
+ this.actorTaskMapsSynced = false;
10354
+ this.routineTaskMapsSynced = false;
9502
10355
  this.isCadenzaDBReady = false;
9503
10356
  this.initialized = false;
9504
10357
  this.initRetryScheduled = false;
9505
10358
  this.lastMissingLocalCadenzaDBInsertTablesKey = "";
10359
+ this.syncCycleCounter = 0;
10360
+ this.primitivePhaseCompletedCycles = /* @__PURE__ */ new Set();
10361
+ this.mapPhaseCompletedCycles = /* @__PURE__ */ new Set();
10362
+ this.activeSyncCycleId = null;
10363
+ this.activeSyncCycleStartedAt = 0;
10364
+ this.pendingBootstrapSyncRerun = false;
10365
+ this.localServiceInserted = false;
10366
+ this.localServiceInstanceInserted = false;
9506
10367
  }
9507
10368
  static get instance() {
9508
10369
  if (!this._instance) this._instance = new _GraphSyncController();
@@ -9576,45 +10437,16 @@ var GraphSyncController = class _GraphSyncController {
9576
10437
  },
9577
10438
  { concurrency: 30 }
9578
10439
  );
9579
- const ensureIntentRegistryBeforeIntentMapTask = resolveSyncInsertTask(
9580
- this.isCadenzaDBReady,
9581
- "intent_registry",
9582
- {
9583
- onConflict: {
9584
- target: ["name"],
9585
- action: {
9586
- do: "nothing"
9587
- }
9588
- }
9589
- },
9590
- { concurrency: 30 }
9591
- );
9592
- const authoritativeTaskQueryGraph = resolveSyncQueryTask(
9593
- this.isCadenzaDBReady,
9594
- "task",
9595
- {},
9596
- { concurrency: 10 }
9597
- );
9598
- const authoritativeRoutineQueryGraph = resolveSyncQueryTask(
9599
- this.isCadenzaDBReady,
9600
- "routine",
9601
- {},
9602
- { concurrency: 10 }
9603
- );
9604
- const authoritativeSignalQueryGraph = resolveSyncQueryTask(
9605
- this.isCadenzaDBReady,
9606
- "signal_registry",
9607
- {},
9608
- { concurrency: 10 }
9609
- );
9610
- const authoritativeIntentQueryGraph = resolveSyncQueryTask(
9611
- this.isCadenzaDBReady,
9612
- "intent_registry",
9613
- {},
9614
- { concurrency: 10 }
9615
- );
9616
10440
  const finalizeTaskSync = (emit, ctx) => {
9617
10441
  const pendingTasks = getRegistrableTasks().filter((task) => !task.registered);
10442
+ const serviceName2 = typeof ctx.__serviceName === "string" ? ctx.__serviceName : resolveSyncServiceName();
10443
+ if (shouldTraceSyncPhase(serviceName2)) {
10444
+ console.log("[CADENZA_SYNC_PHASE_TRACE] finalize_tasks", {
10445
+ serviceName: serviceName2,
10446
+ pendingCount: pendingTasks.length,
10447
+ sample: pendingTasks.slice(0, 5).map((task) => task.name)
10448
+ });
10449
+ }
9618
10450
  if (pendingTasks.length > 0) {
9619
10451
  this.tasksSynced = false;
9620
10452
  return false;
@@ -9633,6 +10465,14 @@ var GraphSyncController = class _GraphSyncController {
9633
10465
  const pendingRoutines = getRegistrableRoutines().filter(
9634
10466
  (routine) => !routine.registered
9635
10467
  );
10468
+ const serviceName2 = typeof ctx.__serviceName === "string" ? ctx.__serviceName : resolveSyncServiceName();
10469
+ if (shouldTraceSyncPhase(serviceName2)) {
10470
+ console.log("[CADENZA_SYNC_PHASE_TRACE] finalize_routines", {
10471
+ serviceName: serviceName2,
10472
+ pendingCount: pendingRoutines.length,
10473
+ sample: pendingRoutines.slice(0, 5).map((routine) => routine.name)
10474
+ });
10475
+ }
9636
10476
  if (pendingRoutines.length > 0) {
9637
10477
  this.routinesSynced = false;
9638
10478
  return false;
@@ -9651,6 +10491,14 @@ var GraphSyncController = class _GraphSyncController {
9651
10491
  const pendingSignals = getRegistrableSignalObservers().filter(
9652
10492
  (observer) => observer.registered !== true
9653
10493
  );
10494
+ const serviceName2 = typeof ctx.__serviceName === "string" ? ctx.__serviceName : resolveSyncServiceName();
10495
+ if (shouldTraceSyncPhase(serviceName2)) {
10496
+ console.log("[CADENZA_SYNC_PHASE_TRACE] finalize_signals", {
10497
+ serviceName: serviceName2,
10498
+ pendingCount: pendingSignals.length,
10499
+ sample: pendingSignals.slice(0, 5).map((observer) => observer.signalName)
10500
+ });
10501
+ }
9654
10502
  if (pendingSignals.length > 0) {
9655
10503
  this.signalsSynced = false;
9656
10504
  return false;
@@ -9669,6 +10517,14 @@ var GraphSyncController = class _GraphSyncController {
9669
10517
  const pendingIntentNames = getRegistrableIntentNames().filter(
9670
10518
  (intentName) => !this.registeredIntentDefinitions.has(intentName)
9671
10519
  );
10520
+ const serviceName2 = typeof ctx.__serviceName === "string" ? ctx.__serviceName : resolveSyncServiceName();
10521
+ if (shouldTraceSyncPhase(serviceName2)) {
10522
+ console.log("[CADENZA_SYNC_PHASE_TRACE] finalize_intents", {
10523
+ serviceName: serviceName2,
10524
+ pendingCount: pendingIntentNames.length,
10525
+ sample: pendingIntentNames.slice(0, 5)
10526
+ });
10527
+ }
9672
10528
  if (pendingIntentNames.length > 0) {
9673
10529
  this.intentsSynced = false;
9674
10530
  return false;
@@ -9690,6 +10546,13 @@ var GraphSyncController = class _GraphSyncController {
9690
10546
  return false;
9691
10547
  }
9692
10548
  const pendingActorKeys = CadenzaService.getAllActors().map((actor) => buildActorRegistrationKey(actor, syncServiceName)).filter((registrationKey) => Boolean(registrationKey)).filter((registrationKey) => !this.registeredActors.has(registrationKey));
10549
+ if (shouldTraceSyncPhase(syncServiceName)) {
10550
+ console.log("[CADENZA_SYNC_PHASE_TRACE] finalize_actors", {
10551
+ serviceName: syncServiceName,
10552
+ pendingCount: pendingActorKeys.length,
10553
+ sample: pendingActorKeys.slice(0, 5)
10554
+ });
10555
+ }
9693
10556
  if (pendingActorKeys.length > 0) {
9694
10557
  this.actorsSynced = false;
9695
10558
  return false;
@@ -9770,8 +10633,8 @@ var GraphSyncController = class _GraphSyncController {
9770
10633
  name: routine.name,
9771
10634
  version: routine.version,
9772
10635
  description: routine.description,
9773
- serviceName: serviceName2,
9774
- isMeta: routine.isMeta
10636
+ service_name: serviceName2,
10637
+ is_meta: routine.isMeta
9775
10638
  },
9776
10639
  __routineName: routine.name
9777
10640
  };
@@ -9834,11 +10697,11 @@ var GraphSyncController = class _GraphSyncController {
9834
10697
  yield {
9835
10698
  __syncing: ctx.__syncing,
9836
10699
  data: {
9837
- taskName: nextTask.name,
9838
- taskVersion: nextTask.version,
9839
- routineName: routine.name,
9840
- routineVersion: routine.version,
9841
- serviceName: serviceName2
10700
+ task_name: nextTask.name,
10701
+ task_version: nextTask.version,
10702
+ routine_name: routine.name,
10703
+ routine_version: routine.version,
10704
+ service_name: serviceName2
9842
10705
  },
9843
10706
  __routineName: routine.name,
9844
10707
  __taskName: nextTask.name
@@ -9896,12 +10759,20 @@ var GraphSyncController = class _GraphSyncController {
9896
10759
  });
9897
10760
  const { signals } = ctx;
9898
10761
  if (!signals) return;
9899
- const filteredSignals = signals.filter((signal) => {
9900
- if (signal.data.registered) {
10762
+ const seenSignals = /* @__PURE__ */ new Set();
10763
+ const filteredSignals = signals.map((signal) => ({
10764
+ signalName: canonicalizeSignalName(signal.signal),
10765
+ data: signal.data
10766
+ })).filter((signal) => {
10767
+ if (!signal.signalName || signal.data?.registered || isBootstrapLocalOnlySignal(signal.signalName)) {
10768
+ return false;
10769
+ }
10770
+ if (seenSignals.has(signal.signalName)) {
9901
10771
  return false;
9902
10772
  }
9903
- return isAuthoritySyncSignal(signal.signal);
9904
- }).map((signal) => signal.signal);
10773
+ seenSignals.add(signal.signalName);
10774
+ return true;
10775
+ }).map((signal) => signal.signalName);
9905
10776
  for (const signal of filteredSignals) {
9906
10777
  const { isMeta, isGlobal, domain, action } = decomposeSignalName(signal);
9907
10778
  this.signalsSynced = false;
@@ -9909,10 +10780,10 @@ var GraphSyncController = class _GraphSyncController {
9909
10780
  __syncing: ctx.__syncing,
9910
10781
  data: {
9911
10782
  name: signal,
9912
- isGlobal,
10783
+ is_global: isGlobal,
9913
10784
  domain,
9914
10785
  action,
9915
- isMeta
10786
+ is_meta: isMeta
9916
10787
  },
9917
10788
  __signal: signal
9918
10789
  };
@@ -9934,14 +10805,15 @@ var GraphSyncController = class _GraphSyncController {
9934
10805
  );
9935
10806
  const processSignalRegistrationTask = CadenzaService.createMetaTask(
9936
10807
  "Process signal registration",
9937
- (ctx) => {
9938
- if (!didSyncInsertSucceed(ctx)) {
10808
+ (ctx, emit) => {
10809
+ const insertSucceeded = didSyncInsertSucceed(ctx);
10810
+ const signalName = resolveSignalNameFromSyncContext(ctx);
10811
+ if (!insertSucceeded) {
9939
10812
  return;
9940
10813
  }
9941
10814
  CadenzaService.debounce("meta.sync_controller.synced_resource", {
9942
10815
  delayMs: 3e3
9943
10816
  });
9944
- const signalName = resolveSignalNameFromSyncContext(ctx);
9945
10817
  if (!signalName) {
9946
10818
  return false;
9947
10819
  }
@@ -9952,7 +10824,14 @@ var GraphSyncController = class _GraphSyncController {
9952
10824
  const observer = signalObservers?.get(signalName);
9953
10825
  if (observer) {
9954
10826
  observer.registered = true;
10827
+ observer.registrationRequested = false;
9955
10828
  }
10829
+ emit(
10830
+ "meta.sync_controller.signal_registered",
10831
+ buildMinimalSyncSignalContext(ctx, {
10832
+ __signal: signalName
10833
+ })
10834
+ );
9956
10835
  return { signalName };
9957
10836
  }
9958
10837
  ).then(CadenzaService.signalBroker.registerSignalTask).then(gatherSignalRegistrationTask);
@@ -9973,6 +10852,7 @@ var GraphSyncController = class _GraphSyncController {
9973
10852
  return;
9974
10853
  }
9975
10854
  for (const task of tasks) {
10855
+ if (task.hidden || !task.register || task.isDeputy) continue;
9976
10856
  if (task.registered) continue;
9977
10857
  const { __functionString, __getTagCallback } = task.export();
9978
10858
  this.tasksSynced = false;
@@ -9982,32 +10862,33 @@ var GraphSyncController = class _GraphSyncController {
9982
10862
  name: task.name,
9983
10863
  version: task.version,
9984
10864
  description: task.description,
9985
- functionString: __functionString,
9986
- tagIdGetter: __getTagCallback,
9987
- layerIndex: task.layerIndex,
10865
+ function_string: __functionString,
10866
+ tag_id_getter: __getTagCallback,
10867
+ layer_index: task.layerIndex,
9988
10868
  concurrency: task.concurrency,
9989
10869
  timeout: task.timeout,
9990
- isUnique: task.isUnique,
9991
- isSignal: task.isSignal,
9992
- isThrottled: task.isThrottled,
9993
- isDebounce: task.isDebounce,
9994
- isEphemeral: task.isEphemeral,
9995
- isMeta: task.isMeta,
9996
- isSubMeta: task.isSubMeta,
9997
- isHidden: task.isHidden,
9998
- validateInputContext: task.validateInputContext,
9999
- validateOutputContext: task.validateOutputContext,
10000
- retryCount: task.retryCount,
10001
- retryDelay: task.retryDelay,
10002
- retryDelayMax: task.retryDelayMax,
10003
- retryDelayFactor: task.retryDelayFactor,
10870
+ is_unique: task.isUnique,
10871
+ is_signal: task.isSignal,
10872
+ is_throttled: task.isThrottled,
10873
+ is_debounce: task.isDebounce,
10874
+ is_ephemeral: task.isEphemeral,
10875
+ is_meta: task.isMeta,
10876
+ is_sub_meta: task.isSubMeta,
10877
+ is_hidden: task.isHidden,
10878
+ validate_input_context: task.validateInputContext,
10879
+ validate_output_context: task.validateOutputContext,
10880
+ retry_count: task.retryCount,
10881
+ retry_delay: task.retryDelay,
10882
+ retry_delay_max: task.retryDelayMax,
10883
+ retry_delay_factor: task.retryDelayFactor,
10004
10884
  service_name: serviceName2,
10005
10885
  signals: {
10006
10886
  emits: Array.from(task.emitsSignals),
10007
10887
  signalsToEmitAfter: Array.from(task.signalsToEmitAfter),
10008
10888
  signalsToEmitOnFail: Array.from(task.signalsToEmitOnFail),
10009
10889
  observed: Array.from(task.observedSignals)
10010
- }
10890
+ },
10891
+ intents: Array.from(task.handlesIntents)
10011
10892
  },
10012
10893
  __taskName: task.name
10013
10894
  };
@@ -10030,17 +10911,20 @@ var GraphSyncController = class _GraphSyncController {
10030
10911
  const registerTaskTask = CadenzaService.createMetaTask(
10031
10912
  "Record registration",
10032
10913
  (ctx, emit) => {
10033
- if (!didSyncInsertSucceed(ctx)) {
10914
+ const task = resolveLocalTaskFromSyncContext(ctx);
10915
+ const serviceName2 = resolveSyncServiceName(task);
10916
+ const insertSucceeded = didSyncInsertSucceed(ctx);
10917
+ if (!insertSucceeded) {
10034
10918
  return;
10035
10919
  }
10036
10920
  CadenzaService.debounce("meta.sync_controller.synced_resource", {
10037
10921
  delayMs: 3e3
10038
10922
  });
10039
- const task = resolveLocalTaskFromSyncContext(ctx);
10040
10923
  if (!task) {
10041
10924
  return true;
10042
10925
  }
10043
10926
  task.registered = true;
10927
+ task.registrationRequested = false;
10044
10928
  emit(
10045
10929
  "meta.sync_controller.task_registered",
10046
10930
  buildMinimalSyncSignalContext(ctx, {
@@ -10051,24 +10935,6 @@ var GraphSyncController = class _GraphSyncController {
10051
10935
  }
10052
10936
  ).then(gatherTaskRegistrationTask);
10053
10937
  wireSyncTaskGraph(this.splitTasksForRegistration, registerTaskGraph, registerTaskTask);
10054
- CadenzaService.createMetaTask(
10055
- "Prepare created task for immediate sync",
10056
- (ctx) => {
10057
- const task = ctx.taskInstance ?? (ctx.data?.name ? CadenzaService.get(String(ctx.data.name)) : void 0);
10058
- if (!task || task.hidden || !task.register || task.registered) {
10059
- return false;
10060
- }
10061
- return {
10062
- __syncing: true,
10063
- tasks: [task]
10064
- };
10065
- },
10066
- "Schedules newly created tasks into the graph sync registration flow without waiting for the next periodic tick.",
10067
- {
10068
- register: false,
10069
- isHidden: true
10070
- }
10071
- ).doOn("meta.task.created").then(this.splitTasksForRegistration);
10072
10938
  this.splitActorsForRegistration = CadenzaService.createMetaTask(
10073
10939
  "Split actors for registration",
10074
10940
  function* (ctx) {
@@ -10207,13 +11073,14 @@ var GraphSyncController = class _GraphSyncController {
10207
11073
  const registerSignalTask = CadenzaService.createMetaTask(
10208
11074
  "Record signal registration",
10209
11075
  (ctx) => {
11076
+ const task = resolveLocalTaskFromSyncContext(ctx);
11077
+ const serviceName2 = resolveSyncServiceName(task);
10210
11078
  if (!didSyncInsertSucceed(ctx)) {
10211
11079
  return;
10212
11080
  }
10213
11081
  CadenzaService.debounce("meta.sync_controller.synced_resource", {
10214
11082
  delayMs: 3e3
10215
11083
  });
10216
- const task = resolveLocalTaskFromSyncContext(ctx);
10217
11084
  const signalName = resolveSignalNameFromSyncContext(ctx);
10218
11085
  if (!task || !signalName) {
10219
11086
  return true;
@@ -10225,7 +11092,8 @@ var GraphSyncController = class _GraphSyncController {
10225
11092
  "Split observed signals of task",
10226
11093
  function* (ctx) {
10227
11094
  const task = ctx.task;
10228
- if (task.hidden || !task.register || !task.registered) return false;
11095
+ if (task.hidden || !task.register || task.isDeputy || !task.registered)
11096
+ return false;
10229
11097
  const serviceName2 = resolveSyncServiceName(task);
10230
11098
  if (!serviceName2) {
10231
11099
  return false;
@@ -10244,11 +11112,11 @@ var GraphSyncController = class _GraphSyncController {
10244
11112
  yield {
10245
11113
  __syncing: ctx.__syncing,
10246
11114
  data: {
10247
- signalName: _signal,
10248
- isGlobal,
10249
- taskName: task.name,
10250
- taskVersion: task.version,
10251
- serviceName: serviceName2
11115
+ signal_name: _signal,
11116
+ is_global: isGlobal,
11117
+ task_name: task.name,
11118
+ task_version: task.version,
11119
+ service_name: serviceName2
10252
11120
  },
10253
11121
  __taskName: task.name,
10254
11122
  __signal: signal
@@ -10289,6 +11157,9 @@ var GraphSyncController = class _GraphSyncController {
10289
11157
  });
10290
11158
  const intents = Array.isArray(ctx.intents) ? ctx.intents : Array.from(CadenzaService.inquiryBroker.intents.values());
10291
11159
  for (const intent of intents) {
11160
+ if (!isRegistrableLocalIntentDefinition(intent)) {
11161
+ continue;
11162
+ }
10292
11163
  const intentData = buildIntentRegistryData(intent);
10293
11164
  if (!intentData) {
10294
11165
  continue;
@@ -10307,7 +11178,7 @@ var GraphSyncController = class _GraphSyncController {
10307
11178
  );
10308
11179
  const recordIntentDefinitionRegistrationTask = CadenzaService.createMetaTask(
10309
11180
  "Record intent definition registration",
10310
- (ctx) => {
11181
+ (ctx, emit) => {
10311
11182
  if (!didSyncInsertSucceed(ctx)) {
10312
11183
  return;
10313
11184
  }
@@ -10315,6 +11186,12 @@ var GraphSyncController = class _GraphSyncController {
10315
11186
  delayMs: 3e3
10316
11187
  });
10317
11188
  this.registeredIntentDefinitions.add(ctx.__intentName);
11189
+ emit(
11190
+ "meta.sync_controller.intent_registered",
11191
+ buildMinimalSyncSignalContext(ctx, {
11192
+ __intentName: ctx.__intentName
11193
+ })
11194
+ );
10318
11195
  return true;
10319
11196
  }
10320
11197
  ).then(gatherIntentRegistrationTask);
@@ -10326,13 +11203,13 @@ var GraphSyncController = class _GraphSyncController {
10326
11203
  const registerIntentTask = CadenzaService.createMetaTask(
10327
11204
  "Record intent registration",
10328
11205
  (ctx) => {
11206
+ const task = resolveLocalTaskFromSyncContext(ctx);
10329
11207
  if (!didSyncInsertSucceed(ctx)) {
10330
11208
  return;
10331
11209
  }
10332
11210
  CadenzaService.debounce("meta.sync_controller.synced_resource", {
10333
11211
  delayMs: 3e3
10334
11212
  });
10335
- const task = resolveLocalTaskFromSyncContext(ctx);
10336
11213
  if (!task) {
10337
11214
  return true;
10338
11215
  }
@@ -10344,7 +11221,8 @@ var GraphSyncController = class _GraphSyncController {
10344
11221
  "Split intents of task",
10345
11222
  function* (ctx) {
10346
11223
  const task = ctx.task;
10347
- if (task.hidden || !task.register || !task.registered) return false;
11224
+ if (task.hidden || !task.register || task.isDeputy || !task.registered)
11225
+ return false;
10348
11226
  const serviceName2 = resolveSyncServiceName(task);
10349
11227
  if (!serviceName2) {
10350
11228
  return false;
@@ -10379,19 +11257,19 @@ var GraphSyncController = class _GraphSyncController {
10379
11257
  yield {
10380
11258
  __syncing: ctx.__syncing,
10381
11259
  data: {
10382
- intentName: intent,
10383
- taskName: task.name,
10384
- taskVersion: task.version,
10385
- serviceName: serviceName2
11260
+ intent_name: intent,
11261
+ task_name: task.name,
11262
+ task_version: task.version,
11263
+ service_name: serviceName2
10386
11264
  },
10387
11265
  __taskName: task.name,
10388
11266
  __intent: intent,
10389
11267
  __intentDefinition: intentDefinition,
10390
11268
  __intentMapData: {
10391
- intentName: intent,
10392
- taskName: task.name,
10393
- taskVersion: task.version,
10394
- serviceName: serviceName2
11269
+ intent_name: intent,
11270
+ task_name: task.name,
11271
+ task_version: task.version,
11272
+ service_name: serviceName2
10395
11273
  }
10396
11274
  };
10397
11275
  emittedCount += 1;
@@ -10399,30 +11277,6 @@ var GraphSyncController = class _GraphSyncController {
10399
11277
  return emittedCount > 0;
10400
11278
  }.bind(this)
10401
11279
  );
10402
- const prepareIntentDefinitionForIntentMapTask = CadenzaService.createMetaTask(
10403
- "Prepare intent definition for intent-to-task map",
10404
- (ctx) => {
10405
- if (!ctx.__intentDefinition || !ctx.__intentMapData) {
10406
- return false;
10407
- }
10408
- return {
10409
- ...ctx,
10410
- data: ctx.__intentDefinition
10411
- };
10412
- }
10413
- );
10414
- const restoreIntentToTaskMapPayloadTask = CadenzaService.createMetaTask(
10415
- "Restore intent-to-task map payload",
10416
- (ctx) => {
10417
- if (!ctx.__intentMapData) {
10418
- return false;
10419
- }
10420
- return {
10421
- ...ctx,
10422
- data: ctx.__intentMapData
10423
- };
10424
- }
10425
- );
10426
11280
  const intentToTaskMapGraph = resolveSyncInsertTask(
10427
11281
  this.isCadenzaDBReady,
10428
11282
  "intent_to_task_map",
@@ -10441,20 +11295,8 @@ var GraphSyncController = class _GraphSyncController {
10441
11295
  },
10442
11296
  { concurrency: 30 }
10443
11297
  );
10444
- this.registerIntentToTaskMapTask.then(prepareIntentDefinitionForIntentMapTask);
10445
- if (ensureIntentRegistryBeforeIntentMapTask) {
10446
- wireSyncTaskGraph(
10447
- prepareIntentDefinitionForIntentMapTask,
10448
- ensureIntentRegistryBeforeIntentMapTask,
10449
- restoreIntentToTaskMapPayloadTask
10450
- );
10451
- } else {
10452
- prepareIntentDefinitionForIntentMapTask.then(
10453
- restoreIntentToTaskMapPayloadTask
10454
- );
10455
- }
10456
11298
  wireSyncTaskGraph(
10457
- restoreIntentToTaskMapPayloadTask,
11299
+ this.registerIntentToTaskMapTask,
10458
11300
  intentToTaskMapGraph,
10459
11301
  registerIntentTask
10460
11302
  );
@@ -10465,7 +11307,9 @@ var GraphSyncController = class _GraphSyncController {
10465
11307
  CadenzaService.debounce("meta.sync_controller.synced_resource", {
10466
11308
  delayMs: 3e3
10467
11309
  });
10468
- if (task.hidden || !task.register) return;
11310
+ if (task.hidden || !task.register || task.isDeputy || !task.registered) {
11311
+ return;
11312
+ }
10469
11313
  const predecessorServiceName = resolveSyncServiceName(task);
10470
11314
  if (!predecessorServiceName) {
10471
11315
  return;
@@ -10480,12 +11324,12 @@ var GraphSyncController = class _GraphSyncController {
10480
11324
  }
10481
11325
  yield {
10482
11326
  data: {
10483
- taskName: t.name,
10484
- taskVersion: t.version,
10485
- predecessorTaskName: task.name,
10486
- predecessorTaskVersion: task.version,
10487
- serviceName: serviceName2,
10488
- predecessorServiceName
11327
+ task_name: t.name,
11328
+ task_version: t.version,
11329
+ predecessor_task_name: task.name,
11330
+ predecessor_task_version: task.version,
11331
+ service_name: serviceName2,
11332
+ predecessor_service_name: predecessorServiceName
10489
11333
  },
10490
11334
  __taskName: task.name,
10491
11335
  __nextTaskName: t.name
@@ -10532,519 +11376,598 @@ var GraphSyncController = class _GraphSyncController {
10532
11376
  taskMapRegistrationGraph,
10533
11377
  recordTaskMapRegistrationTask
10534
11378
  );
10535
- this.registerDeputyRelationshipTask = CadenzaService.createMetaTask(
10536
- "Register deputy relationship",
10537
- (ctx) => {
10538
- const task = ctx.task;
10539
- if (task.hidden || !task.register) return;
10540
- if (task.isDeputy && !task.signalName) {
10541
- if (task.registeredDeputyMap) return;
10542
- const serviceName2 = resolveSyncServiceName(task);
10543
- const predecessorServiceName = resolveSyncServiceName();
10544
- if (!serviceName2 || !predecessorServiceName) {
10545
- return;
10546
- }
10547
- return {
10548
- data: {
10549
- task_name: task.remoteRoutineName,
10550
- task_version: 1,
10551
- service_name: serviceName2,
10552
- predecessor_task_name: task.name,
10553
- predecessor_task_version: task.version,
10554
- predecessor_service_name: predecessorServiceName
10555
- },
10556
- __taskName: task.name
10557
- };
11379
+ const hasPendingDirectionalTaskMaps = () => getRegistrableTasks().some((task) => {
11380
+ if (task.isHidden || !task.register || !task.registered) {
11381
+ return false;
11382
+ }
11383
+ const predecessorServiceName = resolveSyncServiceName(task);
11384
+ if (!predecessorServiceName) {
11385
+ return false;
11386
+ }
11387
+ for (const nextTask of task.nextTasks) {
11388
+ if (task.taskMapRegistration.has(nextTask.name) || nextTask.isHidden || !nextTask.register || !nextTask.registered) {
11389
+ continue;
11390
+ }
11391
+ if (resolveSyncServiceName(nextTask)) {
11392
+ return true;
10558
11393
  }
10559
11394
  }
10560
- );
10561
- const deputyRelationshipRegistrationGraph = resolveSyncInsertTask(
10562
- this.isCadenzaDBReady,
10563
- "directional_task_graph_map",
10564
- {
10565
- onConflict: {
10566
- target: [
10567
- "task_name",
10568
- "predecessor_task_name",
10569
- "task_version",
10570
- "predecessor_task_version",
10571
- "service_name",
10572
- "predecessor_service_name"
10573
- ],
10574
- action: {
10575
- do: "nothing"
10576
- }
11395
+ return false;
11396
+ });
11397
+ const hasPendingSignalTaskMaps = () => getRegistrableTasks().some((task) => {
11398
+ if (task.isHidden || !task.register || !task.registered) {
11399
+ return false;
11400
+ }
11401
+ for (const signal of task.observedSignals) {
11402
+ if (task.registeredSignals.has(signal)) {
11403
+ continue;
10577
11404
  }
10578
- },
10579
- { concurrency: 30 }
10580
- );
10581
- const recordDeputyRelationshipRegistrationTask = CadenzaService.createMetaTask(
10582
- "Record deputy relationship registration",
10583
- (ctx) => {
10584
- if (!didSyncInsertSucceed(ctx)) {
10585
- return;
11405
+ const signalName = signal.split(":")[0];
11406
+ if (!decomposeSignalName(signalName).isGlobal) {
11407
+ continue;
10586
11408
  }
10587
- CadenzaService.debounce("meta.sync_controller.synced_resource", {
10588
- delayMs: 3e3
10589
- });
10590
- const task = resolveLocalTaskFromSyncContext(ctx);
10591
- if (!task) {
10592
- return true;
11409
+ if (!CadenzaService.signalBroker.signalObservers?.get(signalName)?.registered) {
11410
+ continue;
10593
11411
  }
10594
- task.registeredDeputyMap = true;
11412
+ return true;
10595
11413
  }
10596
- );
10597
- wireSyncTaskGraph(
10598
- this.registerDeputyRelationshipTask,
10599
- deputyRelationshipRegistrationGraph,
10600
- recordDeputyRelationshipRegistrationTask
10601
- );
10602
- const reconcileTaskRegistrationFromAuthorityTask = CadenzaService.createMetaTask(
10603
- "Reconcile task registration from authority",
10604
- (ctx, emit) => {
10605
- const authoritativeTasks = resolveSyncQueryRows(ctx, "task");
10606
- let changed = false;
10607
- for (const row of authoritativeTasks) {
10608
- const taskName = typeof row.name === "string" ? row.name : "";
10609
- if (!taskName) {
11414
+ return false;
11415
+ });
11416
+ const hasPendingIntentTaskMaps = () => getRegistrableTasks().some((task) => {
11417
+ if (task.isHidden || !task.register || !task.registered) {
11418
+ return false;
11419
+ }
11420
+ const registeredIntents = task.__registeredIntents ?? /* @__PURE__ */ new Set();
11421
+ for (const intent of task.handlesIntents) {
11422
+ if (registeredIntents.has(intent) || isLocalOnlySyncIntent(intent)) {
11423
+ continue;
11424
+ }
11425
+ if (isMetaIntentName(intent) && !task.isMeta) {
11426
+ continue;
11427
+ }
11428
+ const intentDefinition = buildIntentRegistryData(CadenzaService.inquiryBroker.intents.get(intent)) ?? buildIntentRegistryData({ name: intent });
11429
+ if (!intentDefinition) {
11430
+ continue;
11431
+ }
11432
+ return true;
11433
+ }
11434
+ return false;
11435
+ });
11436
+ const hasPendingActorTaskMaps = () => getRegistrableTasks().some((task) => {
11437
+ if (task.isHidden || !task.register || !task.registered) {
11438
+ return false;
11439
+ }
11440
+ const metadata = getActorTaskRuntimeMetadata(task.taskFunction);
11441
+ if (!metadata?.actorName) {
11442
+ return false;
11443
+ }
11444
+ const serviceName2 = resolveSyncServiceName(task);
11445
+ if (!serviceName2) {
11446
+ return false;
11447
+ }
11448
+ const registrationKey = `${metadata.actorName}|${task.name}|${task.version}|${serviceName2}`;
11449
+ return !this.registeredActorTaskMaps.has(registrationKey);
11450
+ });
11451
+ const hasPendingRoutineTaskMaps = () => getRegistrableRoutines().some((routine) => {
11452
+ if (!routine.registered) {
11453
+ return false;
11454
+ }
11455
+ for (const task of routine.tasks) {
11456
+ if (!task) {
11457
+ continue;
11458
+ }
11459
+ const tasks = task.getIterator();
11460
+ while (tasks.hasNext()) {
11461
+ const nextTask = tasks.next();
11462
+ if (!nextTask?.registered) {
10610
11463
  continue;
10611
11464
  }
10612
- const task = CadenzaService.get(taskName);
10613
- if (!task || task.registered) {
10614
- continue;
11465
+ if (!routine.registeredTasks.has(nextTask.name)) {
11466
+ return true;
10615
11467
  }
10616
- task.registered = true;
10617
- changed = true;
10618
- emit("meta.sync_controller.task_registered", {
10619
- ...ctx,
10620
- __taskName: task.name,
10621
- task,
10622
- __authoritativeReconciliation: true
10623
- });
10624
11468
  }
10625
- if (authoritativeTasks.length > 0 || changed) {
10626
- finalizeTaskSync(emit, {
10627
- ...ctx,
10628
- __authoritativeReconciliation: true
10629
- });
11469
+ }
11470
+ return false;
11471
+ });
11472
+ const gatherDirectionalTaskMapRegistrationTask = CadenzaService.createUniqueMetaTask(
11473
+ "Gather directional task map registration",
11474
+ (ctx) => {
11475
+ if (hasPendingDirectionalTaskMaps()) {
11476
+ this.directionalTaskMapsSynced = false;
11477
+ return false;
10630
11478
  }
10631
- return changed;
11479
+ this.directionalTaskMapsSynced = true;
11480
+ return ctx;
10632
11481
  },
10633
- "Marks local tasks as registered when authority rows already exist.",
11482
+ "Completes directional task graph registration when task edges and deputy edges are registered.",
10634
11483
  {
10635
11484
  register: false,
10636
11485
  isHidden: true
10637
11486
  }
10638
11487
  );
10639
- const reconcileRoutineRegistrationFromAuthorityTask = CadenzaService.createMetaTask(
10640
- "Reconcile routine registration from authority",
10641
- (ctx, emit) => {
10642
- const authoritativeRoutines = resolveSyncQueryRows(ctx, "routine");
10643
- let changed = false;
10644
- for (const row of authoritativeRoutines) {
10645
- const routineName = typeof row.name === "string" ? row.name : "";
10646
- if (!routineName) {
10647
- continue;
10648
- }
10649
- const routine = CadenzaService.getRoutine(routineName);
10650
- if (!routine || routine.registered) {
10651
- continue;
10652
- }
10653
- routine.registered = true;
10654
- changed = true;
11488
+ const gatherSignalTaskMapRegistrationTask = CadenzaService.createUniqueMetaTask(
11489
+ "Gather signal task map registration",
11490
+ (ctx) => {
11491
+ if (hasPendingSignalTaskMaps()) {
11492
+ this.signalTaskMapsSynced = false;
11493
+ return false;
10655
11494
  }
10656
- if (authoritativeRoutines.length > 0 || changed) {
10657
- finalizeRoutineSync(emit, {
10658
- ...ctx,
10659
- __authoritativeReconciliation: true
10660
- });
11495
+ this.signalTaskMapsSynced = true;
11496
+ return ctx;
11497
+ },
11498
+ "Completes signal-to-task map registration when all global observed signal edges are registered.",
11499
+ {
11500
+ register: false,
11501
+ isHidden: true
11502
+ }
11503
+ );
11504
+ const gatherIntentTaskMapRegistrationTask = CadenzaService.createUniqueMetaTask(
11505
+ "Gather intent task map registration",
11506
+ (ctx) => {
11507
+ if (hasPendingIntentTaskMaps()) {
11508
+ this.intentTaskMapsSynced = false;
11509
+ return false;
10661
11510
  }
10662
- return changed;
11511
+ this.intentTaskMapsSynced = true;
11512
+ return ctx;
10663
11513
  },
10664
- "Marks local routines as registered when authority rows already exist.",
11514
+ "Completes intent-to-task map registration when all task responders are registered.",
10665
11515
  {
10666
11516
  register: false,
10667
11517
  isHidden: true
10668
11518
  }
10669
11519
  );
10670
- const reconcileSignalRegistrationFromAuthorityTask = CadenzaService.createMetaTask(
10671
- "Reconcile signal registration from authority",
10672
- (ctx, emit) => {
10673
- const authoritativeSignals = resolveSyncQueryRows(ctx, "signal_registry");
10674
- const signalObservers = CadenzaService.signalBroker.signalObservers;
10675
- let changed = false;
10676
- for (const row of authoritativeSignals) {
10677
- const signalName = typeof row.name === "string" ? row.name : "";
10678
- if (!signalName) {
10679
- continue;
10680
- }
10681
- const observer = signalObservers?.get(signalName);
10682
- if (!observer || observer.registered) {
10683
- continue;
10684
- }
10685
- observer.registered = true;
10686
- changed = true;
11520
+ const gatherActorTaskMapRegistrationTask = CadenzaService.createUniqueMetaTask(
11521
+ "Gather actor task map registration",
11522
+ (ctx) => {
11523
+ if (hasPendingActorTaskMaps()) {
11524
+ this.actorTaskMapsSynced = false;
11525
+ return false;
10687
11526
  }
10688
- if (authoritativeSignals.length > 0 || changed) {
10689
- finalizeSignalSync(emit, {
10690
- ...ctx,
10691
- __authoritativeReconciliation: true
10692
- });
11527
+ this.actorTaskMapsSynced = true;
11528
+ return ctx;
11529
+ },
11530
+ "Completes actor-to-task map registration when all actor-backed tasks are registered.",
11531
+ {
11532
+ register: false,
11533
+ isHidden: true
11534
+ }
11535
+ );
11536
+ const gatherRoutineTaskMapRegistrationTask = CadenzaService.createUniqueMetaTask(
11537
+ "Gather routine task map registration",
11538
+ (ctx) => {
11539
+ if (hasPendingRoutineTaskMaps()) {
11540
+ this.routineTaskMapsSynced = false;
11541
+ return false;
10693
11542
  }
10694
- return changed;
11543
+ this.routineTaskMapsSynced = true;
11544
+ return ctx;
10695
11545
  },
10696
- "Marks local signals as registered when authority rows already exist.",
11546
+ "Completes task-to-routine map registration when all routine task memberships are registered.",
10697
11547
  {
10698
11548
  register: false,
10699
11549
  isHidden: true
10700
11550
  }
10701
11551
  );
10702
- const reconcileIntentRegistrationFromAuthorityTask = CadenzaService.createMetaTask(
10703
- "Reconcile intent registration from authority",
11552
+ const finishSyncTask = CadenzaService.createUniqueMetaTask(
11553
+ "Finish sync",
10704
11554
  (ctx, emit) => {
10705
- const authoritativeIntents = resolveSyncQueryRows(ctx, "intent_registry");
10706
- let changed = false;
10707
- for (const row of authoritativeIntents) {
10708
- const intentName = typeof row.name === "string" ? row.name : "";
10709
- if (!intentName || !CadenzaService.inquiryBroker.intents.has(intentName)) {
10710
- continue;
10711
- }
10712
- if (this.registeredIntentDefinitions.has(intentName)) {
10713
- continue;
11555
+ const syncCycleId = typeof ctx.__syncCycleId === "string" ? ctx.__syncCycleId.trim() : "";
11556
+ if (syncCycleId && this.activeSyncCycleId === syncCycleId) {
11557
+ this.activeSyncCycleId = null;
11558
+ this.activeSyncCycleStartedAt = 0;
11559
+ }
11560
+ if (this.pendingBootstrapSyncRerun) {
11561
+ this.pendingBootstrapSyncRerun = false;
11562
+ CadenzaService.debounce("meta.sync_requested", {
11563
+ delayMs: 100
11564
+ });
11565
+ }
11566
+ emit("global.meta.sync_controller.synced", {
11567
+ data: {
11568
+ is_active: true,
11569
+ is_non_responsive: false,
11570
+ is_blocked: false,
11571
+ last_active: formatTimestamp(Date.now())
11572
+ },
11573
+ filter: {
11574
+ uuid: CadenzaService.serviceRegistry.serviceInstanceId
10714
11575
  }
10715
- this.registeredIntentDefinitions.add(intentName);
10716
- changed = true;
11576
+ });
11577
+ return true;
11578
+ },
11579
+ "Marks the current bootstrap sync cycle as complete.",
11580
+ {
11581
+ register: false,
11582
+ isHidden: true
11583
+ }
11584
+ ).attachSignal("global.meta.sync_controller.synced");
11585
+ const mapPhaseBarrierTask = CadenzaService.createUniqueMetaTask(
11586
+ "Complete map sync phase",
11587
+ (ctx) => {
11588
+ const syncCycleId = typeof ctx.__syncCycleId === "string" ? ctx.__syncCycleId.trim() : "";
11589
+ if (!syncCycleId) {
11590
+ return false;
10717
11591
  }
10718
- if (authoritativeIntents.length > 0 || changed) {
10719
- finalizeIntentSync(emit, {
10720
- ...ctx,
10721
- __authoritativeReconciliation: true
11592
+ const serviceName2 = typeof ctx.__serviceName === "string" ? ctx.__serviceName : resolveSyncServiceName();
11593
+ if (shouldTraceSyncPhase(serviceName2)) {
11594
+ console.log("[CADENZA_SYNC_PHASE_TRACE] map_barrier_check", {
11595
+ serviceName: serviceName2,
11596
+ syncCycleId,
11597
+ directionalTaskMapsSynced: this.directionalTaskMapsSynced,
11598
+ signalTaskMapsSynced: this.signalTaskMapsSynced,
11599
+ intentTaskMapsSynced: this.intentTaskMapsSynced,
11600
+ actorTaskMapsSynced: this.actorTaskMapsSynced,
11601
+ routineTaskMapsSynced: this.routineTaskMapsSynced
10722
11602
  });
10723
11603
  }
10724
- return changed;
11604
+ if (!this.directionalTaskMapsSynced || !this.signalTaskMapsSynced || !this.intentTaskMapsSynced || !this.actorTaskMapsSynced || !this.routineTaskMapsSynced) {
11605
+ return false;
11606
+ }
11607
+ if (!markCompletedSyncCycle(this.mapPhaseCompletedCycles, syncCycleId)) {
11608
+ return false;
11609
+ }
11610
+ return ctx;
10725
11611
  },
10726
- "Marks local intents as registered when authority rows already exist.",
11612
+ "Fans in map branch completion and ends the current sync cycle once every map branch is complete.",
11613
+ {
11614
+ register: false,
11615
+ isHidden: true
11616
+ }
11617
+ ).then(finishSyncTask);
11618
+ const startDirectionalTaskMapSyncTask = CadenzaService.createMetaTask(
11619
+ "Start directional task map sync",
11620
+ (ctx) => ctx,
11621
+ "Starts the directional task graph map branch for the current sync cycle.",
10727
11622
  {
10728
11623
  register: false,
10729
11624
  isHidden: true
10730
11625
  }
10731
11626
  );
10732
- const skipAuthoritativeTaskReconciliationTask = CadenzaService.createMetaTask(
10733
- "Skip authoritative task reconciliation",
10734
- () => false,
10735
- "Skips task reconciliation when no authority query task is available.",
11627
+ const startSignalTaskMapSyncTask = CadenzaService.createMetaTask(
11628
+ "Start signal task map sync",
11629
+ (ctx) => ctx,
11630
+ "Starts the signal-to-task map branch for the current sync cycle.",
10736
11631
  {
10737
11632
  register: false,
10738
11633
  isHidden: true
10739
11634
  }
10740
11635
  );
10741
- const skipAuthoritativeRoutineReconciliationTask = CadenzaService.createMetaTask(
10742
- "Skip authoritative routine reconciliation",
10743
- () => false,
10744
- "Skips routine reconciliation when no authority query task is available.",
11636
+ const startIntentTaskMapSyncTask = CadenzaService.createMetaTask(
11637
+ "Start intent task map sync",
11638
+ (ctx) => ctx,
11639
+ "Starts the intent-to-task map branch for the current sync cycle.",
10745
11640
  {
10746
11641
  register: false,
10747
11642
  isHidden: true
10748
11643
  }
10749
11644
  );
10750
- const skipAuthoritativeSignalReconciliationTask = CadenzaService.createMetaTask(
10751
- "Skip authoritative signal reconciliation",
10752
- () => false,
10753
- "Skips signal reconciliation when no authority query task is available.",
11645
+ const startActorTaskMapSyncTask = CadenzaService.createMetaTask(
11646
+ "Start actor task map sync",
11647
+ (ctx) => ctx,
11648
+ "Starts the actor-to-task map branch for the current sync cycle.",
10754
11649
  {
10755
11650
  register: false,
10756
11651
  isHidden: true
10757
11652
  }
10758
11653
  );
10759
- const skipAuthoritativeIntentReconciliationTask = CadenzaService.createMetaTask(
10760
- "Skip authoritative intent reconciliation",
10761
- () => false,
10762
- "Skips intent reconciliation when no authority query task is available.",
11654
+ const startRoutineTaskMapSyncTask = CadenzaService.createMetaTask(
11655
+ "Start routine task map sync",
11656
+ (ctx) => ctx,
11657
+ "Starts the task-to-routine map branch for the current sync cycle.",
10763
11658
  {
10764
11659
  register: false,
10765
11660
  isHidden: true
10766
11661
  }
10767
11662
  );
10768
- if (authoritativeTaskQueryGraph) {
10769
- authoritativeTaskQueryGraph.completionTask.then(
10770
- reconcileTaskRegistrationFromAuthorityTask
10771
- );
10772
- }
10773
- if (authoritativeRoutineQueryGraph) {
10774
- authoritativeRoutineQueryGraph.completionTask.then(
10775
- reconcileRoutineRegistrationFromAuthorityTask
10776
- );
10777
- }
10778
- if (authoritativeSignalQueryGraph) {
10779
- authoritativeSignalQueryGraph.completionTask.then(
10780
- reconcileSignalRegistrationFromAuthorityTask
10781
- );
10782
- }
10783
- if (authoritativeIntentQueryGraph) {
10784
- authoritativeIntentQueryGraph.completionTask.then(
10785
- reconcileIntentRegistrationFromAuthorityTask
10786
- );
10787
- }
10788
- const authoritativeRegistrationTriggers = [
10789
- "meta.service_registry.initial_sync_complete",
10790
- "meta.sync_requested",
10791
- "meta.sync_controller.synced_resource",
10792
- "meta.sync_controller.authority_registration_reconciliation_requested"
10793
- ];
10794
- CadenzaService.createMetaTask(
10795
- "Prepare authoritative task registration query",
11663
+ const primitivePhaseBarrierTask = CadenzaService.createUniqueMetaTask(
11664
+ "Complete primitive sync phase",
10796
11665
  (ctx) => {
10797
- if (!this.isCadenzaDBReady) {
11666
+ const syncCycleId = typeof ctx.__syncCycleId === "string" ? ctx.__syncCycleId.trim() : "";
11667
+ if (!syncCycleId) {
10798
11668
  return false;
10799
11669
  }
10800
- const serviceName2 = resolveSyncServiceName();
10801
- if (!serviceName2) {
11670
+ const serviceName2 = typeof ctx.__serviceName === "string" ? ctx.__serviceName : resolveSyncServiceName();
11671
+ if (shouldTraceSyncPhase(serviceName2)) {
11672
+ console.log("[CADENZA_SYNC_PHASE_TRACE] primitive_barrier_check", {
11673
+ serviceName: serviceName2,
11674
+ syncCycleId,
11675
+ tasksSynced: this.tasksSynced,
11676
+ signalsSynced: this.signalsSynced,
11677
+ intentsSynced: this.intentsSynced,
11678
+ actorsSynced: this.actorsSynced,
11679
+ routinesSynced: this.routinesSynced
11680
+ });
11681
+ }
11682
+ if (!this.tasksSynced || !this.signalsSynced || !this.intentsSynced || !this.actorsSynced || !this.routinesSynced) {
10802
11683
  return false;
10803
11684
  }
10804
- return {
10805
- ...ctx,
10806
- __syncServiceName: serviceName2,
10807
- queryData: {
10808
- filter: {
10809
- service_name: serviceName2
10810
- },
10811
- fields: ["name", "version", "service_name"]
10812
- }
10813
- };
11685
+ if (!markCompletedSyncCycle(this.primitivePhaseCompletedCycles, syncCycleId)) {
11686
+ return false;
11687
+ }
11688
+ this.directionalTaskMapsSynced = false;
11689
+ this.signalTaskMapsSynced = false;
11690
+ this.intentTaskMapsSynced = false;
11691
+ this.actorTaskMapsSynced = false;
11692
+ this.routineTaskMapsSynced = false;
11693
+ return ctx;
10814
11694
  },
10815
- "Builds the authority task query payload for the current service.",
11695
+ "Fans in primitive registration and opens the map registration phase once every primitive branch is complete.",
10816
11696
  {
10817
11697
  register: false,
10818
11698
  isHidden: true
10819
11699
  }
10820
- ).doOn(...authoritativeRegistrationTriggers).then(
10821
- authoritativeTaskQueryGraph?.entryTask ?? skipAuthoritativeTaskReconciliationTask
10822
- );
10823
- CadenzaService.createMetaTask(
10824
- "Prepare authoritative routine registration query",
11700
+ ).then(
11701
+ startDirectionalTaskMapSyncTask,
11702
+ startSignalTaskMapSyncTask,
11703
+ startIntentTaskMapSyncTask,
11704
+ startActorTaskMapSyncTask,
11705
+ startRoutineTaskMapSyncTask
11706
+ );
11707
+ gatherTaskRegistrationTask.then(primitivePhaseBarrierTask);
11708
+ gatherSignalRegistrationTask.then(primitivePhaseBarrierTask);
11709
+ gatherIntentRegistrationTask.then(primitivePhaseBarrierTask);
11710
+ gatherActorRegistrationTask.then(primitivePhaseBarrierTask);
11711
+ gatherRoutineRegistrationTask.then(primitivePhaseBarrierTask);
11712
+ const markLocalServiceInsertedForBootstrapSyncTask = CadenzaService.createUniqueMetaTask(
11713
+ "Mark local service inserted for bootstrap sync",
10825
11714
  (ctx) => {
10826
- if (!this.isCadenzaDBReady) {
10827
- return false;
10828
- }
10829
11715
  const serviceName2 = resolveSyncServiceName();
10830
- if (!serviceName2) {
11716
+ const insertedServiceName = typeof ctx.__serviceName === "string" ? ctx.__serviceName : typeof ctx.service_name === "string" ? ctx.service_name : null;
11717
+ if (!serviceName2 || insertedServiceName !== serviceName2) {
10831
11718
  return false;
10832
11719
  }
10833
- return {
10834
- ...ctx,
10835
- __syncServiceName: serviceName2,
10836
- queryData: {
10837
- filter: {
10838
- service_name: serviceName2
10839
- },
10840
- fields: ["name", "version", "service_name"]
10841
- }
10842
- };
11720
+ this.localServiceInserted = true;
11721
+ return true;
10843
11722
  },
10844
- "Builds the authority routine query payload for the current service.",
11723
+ "Marks that the local service row has been inserted in authority so bootstrap sync can start only after that prerequisite.",
10845
11724
  {
10846
11725
  register: false,
10847
11726
  isHidden: true
10848
11727
  }
10849
- ).doOn(...authoritativeRegistrationTriggers).then(
10850
- authoritativeRoutineQueryGraph?.entryTask ?? skipAuthoritativeRoutineReconciliationTask
10851
- );
10852
- CadenzaService.createMetaTask(
10853
- "Prepare authoritative signal registration query",
11728
+ ).doOn("meta.service_registry.service_inserted");
11729
+ const markLocalServiceInstanceInsertedForBootstrapSyncTask = CadenzaService.createUniqueMetaTask(
11730
+ "Mark local service instance inserted for bootstrap sync",
10854
11731
  (ctx) => {
10855
- if (!this.isCadenzaDBReady) {
11732
+ const serviceName2 = resolveSyncServiceName();
11733
+ const insertedServiceName = typeof ctx.__serviceName === "string" ? ctx.__serviceName : typeof ctx.service_name === "string" ? ctx.service_name : null;
11734
+ if (!serviceName2 || insertedServiceName !== serviceName2) {
10856
11735
  return false;
10857
11736
  }
10858
- return {
10859
- ...ctx,
10860
- queryData: {
10861
- fields: ["name"]
10862
- }
10863
- };
11737
+ this.localServiceInstanceInserted = true;
11738
+ return true;
10864
11739
  },
10865
- "Builds the authority signal query payload for local reconciliation.",
11740
+ "Marks that the local service instance row has been inserted in authority so bootstrap sync can start only after that prerequisite.",
10866
11741
  {
10867
11742
  register: false,
10868
11743
  isHidden: true
10869
11744
  }
10870
- ).doOn(...authoritativeRegistrationTriggers).then(
10871
- authoritativeSignalQueryGraph?.entryTask ?? skipAuthoritativeSignalReconciliationTask
10872
- );
10873
- CadenzaService.createMetaTask(
10874
- "Prepare authoritative intent registration query",
11745
+ ).doOn("meta.service_registry.instance_inserted");
11746
+ const startBootstrapSyncTask = CadenzaService.createUniqueMetaTask(
11747
+ "Start bootstrap graph sync",
10875
11748
  (ctx) => {
10876
- if (!this.isCadenzaDBReady) {
11749
+ const now = Date.now();
11750
+ const serviceName2 = resolveSyncServiceName();
11751
+ const serviceInstanceId = CadenzaService.serviceRegistry.serviceInstanceId;
11752
+ if (!serviceName2 || !serviceInstanceId) {
11753
+ return false;
11754
+ }
11755
+ if (!this.localServiceInserted) {
11756
+ return false;
11757
+ }
11758
+ if (!this.localServiceInstanceInserted) {
10877
11759
  return false;
10878
11760
  }
11761
+ if (!ServiceRegistry.instance.hasLocalInstanceRegistered()) {
11762
+ return false;
11763
+ }
11764
+ if (this.activeSyncCycleId) {
11765
+ const activeCycleAgeMs = now - this.activeSyncCycleStartedAt;
11766
+ if (activeCycleAgeMs < BOOTSTRAP_SYNC_STALE_CYCLE_MS) {
11767
+ this.pendingBootstrapSyncRerun = true;
11768
+ return false;
11769
+ }
11770
+ }
11771
+ const syncCycleId = `${now}-${++this.syncCycleCounter}`;
11772
+ this.activeSyncCycleId = syncCycleId;
11773
+ this.activeSyncCycleStartedAt = now;
11774
+ this.pendingBootstrapSyncRerun = false;
11775
+ this.tasksSynced = false;
11776
+ this.signalsSynced = false;
11777
+ this.intentsSynced = false;
11778
+ this.actorsSynced = false;
11779
+ this.routinesSynced = false;
10879
11780
  return {
10880
11781
  ...ctx,
10881
- queryData: {
10882
- fields: ["name"]
10883
- }
11782
+ __syncing: true,
11783
+ __syncCycleId: syncCycleId,
11784
+ __serviceName: serviceName2,
11785
+ __serviceInstanceId: serviceInstanceId
10884
11786
  };
10885
11787
  },
10886
- "Builds the authority intent query payload for local reconciliation.",
11788
+ "Starts a deterministic bootstrap sync cycle once the local service instance exists.",
10887
11789
  {
10888
11790
  register: false,
10889
11791
  isHidden: true
10890
11792
  }
10891
- ).doOn(...authoritativeRegistrationTriggers).then(
10892
- authoritativeIntentQueryGraph?.entryTask ?? skipAuthoritativeIntentReconciliationTask
10893
- );
10894
- CadenzaService.signalBroker.getSignalsTask.clone().doOn(
10895
- "meta.sync_controller.sync_tick",
10896
- "meta.service_registry.initial_sync_complete",
10897
- "meta.sync_requested"
10898
- ).then(this.splitSignalsTask);
10899
- CadenzaService.registry.getAllTasks.clone().doOn(
10900
- "meta.sync_controller.sync_tick",
10901
- "meta.sync_controller.synced_signals",
10902
- "meta.sync_requested"
10903
- ).then(this.splitTasksForRegistration);
10904
- CadenzaService.createMetaTask("Get all intents", (ctx) => {
10905
- return {
10906
- ...ctx,
10907
- intents: Array.from(CadenzaService.inquiryBroker.intents.values())
10908
- };
10909
- }).doOn(
10910
- "meta.sync_controller.sync_tick",
10911
- "meta.service_registry.initial_sync_complete",
10912
- "meta.sync_requested"
10913
- ).then(this.splitIntentsTask);
10914
- CadenzaService.registry.getAllRoutines.clone().doOn(
10915
- "meta.sync_controller.sync_tick",
10916
- "meta.service_registry.initial_sync_complete",
10917
- "meta.sync_requested"
10918
- ).then(this.splitRoutinesTask);
10919
- CadenzaService.createMetaTask("Get all actors", (ctx) => {
10920
- return {
10921
- ...ctx,
10922
- actors: CadenzaService.getAllActors()
10923
- };
10924
- }).doOn(
11793
+ ).doOn(
11794
+ "meta.service_registry.service_inserted",
11795
+ "meta.service_registry.instance_inserted",
10925
11796
  "meta.sync_controller.sync_tick",
10926
- "meta.service_registry.initial_sync_complete",
10927
11797
  "meta.sync_requested"
10928
- ).then(this.splitActorsForRegistration);
10929
- CadenzaService.createMetaTask("Get registered task for task graph sync", (ctx) => {
10930
- const task = ctx.task ?? (ctx.__taskName ? CadenzaService.get(ctx.__taskName) : void 0);
10931
- if (!task) {
10932
- return false;
11798
+ );
11799
+ const startTaskPrimitiveSyncTask = CadenzaService.createMetaTask(
11800
+ "Start task primitive sync",
11801
+ (ctx) => ctx,
11802
+ "Starts the task registration branch for the current sync cycle.",
11803
+ {
11804
+ register: false,
11805
+ isHidden: true
10933
11806
  }
10934
- return {
10935
- ...ctx,
10936
- task
10937
- };
10938
- }).doOn("meta.sync_controller.task_registered").then(
10939
- this.registerTaskMapTask,
10940
- this.registerDeputyRelationshipTask
10941
11807
  );
10942
- CadenzaService.registry.doForEachTask.clone().doOn(
10943
- "meta.sync_controller.synced_signals",
10944
- "meta.sync_controller.synced_tasks",
10945
- "meta.sync_requested"
10946
- ).then(this.registerSignalToTaskMapTask);
10947
- CadenzaService.createMetaTask("Get registered task for signal sync", (ctx) => {
10948
- const task = ctx.task ?? (ctx.__taskName ? CadenzaService.get(ctx.__taskName) : void 0);
10949
- if (!task) {
10950
- return false;
11808
+ const startSignalPrimitiveSyncTask = CadenzaService.createMetaTask(
11809
+ "Start signal primitive sync",
11810
+ (ctx) => ctx,
11811
+ "Starts the signal registration branch for the current sync cycle.",
11812
+ {
11813
+ register: false,
11814
+ isHidden: true
10951
11815
  }
10952
- return {
10953
- ...ctx,
10954
- task
10955
- };
10956
- }).doOn("meta.sync_controller.task_registered").then(this.registerSignalToTaskMapTask);
10957
- CadenzaService.registry.doForEachTask.clone().doOn(
10958
- "meta.sync_controller.synced_intents",
10959
- "meta.sync_controller.synced_tasks",
10960
- "meta.sync_requested"
10961
- ).then(this.registerIntentToTaskMapTask);
10962
- CadenzaService.createMetaTask("Get registered task for intent sync", (ctx) => {
10963
- const task = ctx.task ?? (ctx.__taskName ? CadenzaService.get(ctx.__taskName) : void 0);
10964
- if (!task) {
10965
- return false;
11816
+ );
11817
+ const startIntentPrimitiveSyncTask = CadenzaService.createMetaTask(
11818
+ "Start intent primitive sync",
11819
+ (ctx) => ctx,
11820
+ "Starts the intent registration branch for the current sync cycle.",
11821
+ {
11822
+ register: false,
11823
+ isHidden: true
10966
11824
  }
10967
- return {
10968
- ...ctx,
10969
- task
10970
- };
10971
- }).doOn("meta.sync_controller.task_registered").then(this.registerIntentToTaskMapTask);
10972
- CadenzaService.registry.doForEachTask.clone().doOn(
10973
- "meta.sync_controller.synced_actors",
10974
- "meta.sync_controller.synced_tasks",
10975
- "meta.sync_requested"
10976
- ).then(this.registerActorTaskMapTask);
10977
- CadenzaService.createMetaTask("Get registered task for actor sync", (ctx) => {
10978
- const task = ctx.task ?? (ctx.__taskName ? CadenzaService.get(ctx.__taskName) : void 0);
10979
- if (!task) {
10980
- return false;
11825
+ );
11826
+ const startActorPrimitiveSyncTask = CadenzaService.createMetaTask(
11827
+ "Start actor primitive sync",
11828
+ (ctx) => ctx,
11829
+ "Starts the actor registration branch for the current sync cycle.",
11830
+ {
11831
+ register: false,
11832
+ isHidden: true
10981
11833
  }
10982
- return {
11834
+ );
11835
+ const startRoutinePrimitiveSyncTask = CadenzaService.createMetaTask(
11836
+ "Start routine primitive sync",
11837
+ (ctx) => ctx,
11838
+ "Starts the routine registration branch for the current sync cycle.",
11839
+ {
11840
+ register: false,
11841
+ isHidden: true
11842
+ }
11843
+ );
11844
+ startBootstrapSyncTask.then(
11845
+ startTaskPrimitiveSyncTask,
11846
+ startSignalPrimitiveSyncTask,
11847
+ startIntentPrimitiveSyncTask,
11848
+ startActorPrimitiveSyncTask,
11849
+ startRoutinePrimitiveSyncTask
11850
+ );
11851
+ const getAllTasksForSyncTask = CadenzaService.registry.getAllTasks.clone();
11852
+ startTaskPrimitiveSyncTask.then(
11853
+ getAllTasksForSyncTask,
11854
+ gatherTaskRegistrationTask
11855
+ );
11856
+ getAllTasksForSyncTask.then(this.splitTasksForRegistration);
11857
+ const getSignalsForSyncTask = CadenzaService.signalBroker.getSignalsTask.clone();
11858
+ startSignalPrimitiveSyncTask.then(
11859
+ getSignalsForSyncTask,
11860
+ gatherSignalRegistrationTask
11861
+ );
11862
+ getSignalsForSyncTask.then(this.splitSignalsTask);
11863
+ const getAllIntentsForSyncTask = CadenzaService.createUniqueMetaTask(
11864
+ "Get all intents for sync",
11865
+ (ctx) => ({
10983
11866
  ...ctx,
10984
- task
10985
- };
10986
- }).doOn("meta.sync_controller.task_registered").then(
10987
- CadenzaService.createMetaTask(
10988
- "Ensure actor and task sync ready from task registration",
10989
- (ctx) => {
10990
- if (!this.tasksSynced || !this.actorsSynced) {
10991
- return false;
10992
- }
10993
- return ctx;
10994
- }
10995
- ).then(this.registerActorTaskMapTask)
11867
+ intents: Array.from(CadenzaService.inquiryBroker.intents.values()).filter(
11868
+ (intent) => isRegistrableLocalIntentDefinition(intent)
11869
+ )
11870
+ }),
11871
+ "Collects local intents for the primitive sync phase.",
11872
+ {
11873
+ register: false,
11874
+ isHidden: true
11875
+ }
10996
11876
  );
10997
- CadenzaService.registry.getAllRoutines.clone().doOn(
10998
- "meta.sync_controller.synced_routines",
10999
- "meta.sync_controller.synced_tasks",
11000
- "meta.sync_requested"
11001
- ).then(
11002
- CadenzaService.createMetaTask(
11003
- "Ensure routine and task sync ready",
11004
- (ctx) => {
11005
- if (!this.tasksSynced || !this.routinesSynced) {
11006
- return false;
11007
- }
11008
- return ctx;
11009
- }
11010
- ).then(this.splitTasksInRoutines)
11877
+ startIntentPrimitiveSyncTask.then(
11878
+ getAllIntentsForSyncTask,
11879
+ gatherIntentRegistrationTask
11011
11880
  );
11012
- CadenzaService.createMetaTask("Finish sync", (ctx, emit) => {
11013
- emit("global.meta.sync_controller.synced", {
11014
- data: {
11015
- is_active: true,
11016
- is_non_responsive: false,
11017
- is_blocked: false,
11018
- last_active: formatTimestamp(Date.now())
11019
- },
11020
- filter: {
11021
- uuid: CadenzaService.serviceRegistry.serviceInstanceId
11881
+ getAllIntentsForSyncTask.then(this.splitIntentsTask);
11882
+ const getAllActorsForSyncTask = CadenzaService.createUniqueMetaTask(
11883
+ "Get all actors for sync",
11884
+ (ctx) => ({
11885
+ ...ctx,
11886
+ actors: CadenzaService.getAllActors()
11887
+ }),
11888
+ "Collects local actors for the primitive sync phase.",
11889
+ {
11890
+ register: false,
11891
+ isHidden: true
11892
+ }
11893
+ );
11894
+ startActorPrimitiveSyncTask.then(
11895
+ getAllActorsForSyncTask,
11896
+ gatherActorRegistrationTask
11897
+ );
11898
+ getAllActorsForSyncTask.then(this.splitActorsForRegistration);
11899
+ const getAllRoutinesForSyncTask = CadenzaService.registry.getAllRoutines.clone();
11900
+ startRoutinePrimitiveSyncTask.then(
11901
+ getAllRoutinesForSyncTask,
11902
+ gatherRoutineRegistrationTask
11903
+ );
11904
+ getAllRoutinesForSyncTask.then(this.splitRoutinesTask);
11905
+ const iterateTasksForDirectionalTaskMapSyncTask = CadenzaService.registry.doForEachTask.clone();
11906
+ startDirectionalTaskMapSyncTask.then(
11907
+ iterateTasksForDirectionalTaskMapSyncTask,
11908
+ gatherDirectionalTaskMapRegistrationTask
11909
+ );
11910
+ iterateTasksForDirectionalTaskMapSyncTask.then(this.registerTaskMapTask);
11911
+ recordTaskMapRegistrationTask.then(gatherDirectionalTaskMapRegistrationTask);
11912
+ gatherDirectionalTaskMapRegistrationTask.then(mapPhaseBarrierTask);
11913
+ const iterateTasksForSignalTaskMapSyncTask = CadenzaService.registry.doForEachTask.clone();
11914
+ startSignalTaskMapSyncTask.then(
11915
+ iterateTasksForSignalTaskMapSyncTask,
11916
+ gatherSignalTaskMapRegistrationTask
11917
+ );
11918
+ iterateTasksForSignalTaskMapSyncTask.then(this.registerSignalToTaskMapTask);
11919
+ registerSignalTask.then(gatherSignalTaskMapRegistrationTask);
11920
+ gatherSignalTaskMapRegistrationTask.then(mapPhaseBarrierTask);
11921
+ const iterateTasksForIntentTaskMapSyncTask = CadenzaService.registry.doForEachTask.clone();
11922
+ startIntentTaskMapSyncTask.then(
11923
+ iterateTasksForIntentTaskMapSyncTask,
11924
+ gatherIntentTaskMapRegistrationTask
11925
+ );
11926
+ iterateTasksForIntentTaskMapSyncTask.then(this.registerIntentToTaskMapTask);
11927
+ registerIntentTask.then(gatherIntentTaskMapRegistrationTask);
11928
+ gatherIntentTaskMapRegistrationTask.then(mapPhaseBarrierTask);
11929
+ const iterateTasksForActorTaskMapSyncTask = CadenzaService.registry.doForEachTask.clone();
11930
+ startActorTaskMapSyncTask.then(
11931
+ iterateTasksForActorTaskMapSyncTask,
11932
+ gatherActorTaskMapRegistrationTask
11933
+ );
11934
+ iterateTasksForActorTaskMapSyncTask.then(this.registerActorTaskMapTask);
11935
+ recordActorTaskMapRegistrationTask.then(gatherActorTaskMapRegistrationTask);
11936
+ gatherActorTaskMapRegistrationTask.then(mapPhaseBarrierTask);
11937
+ const getAllRoutinesForTaskMapSyncTask = CadenzaService.registry.getAllRoutines.clone();
11938
+ startRoutineTaskMapSyncTask.then(
11939
+ getAllRoutinesForTaskMapSyncTask,
11940
+ gatherRoutineTaskMapRegistrationTask
11941
+ );
11942
+ getAllRoutinesForTaskMapSyncTask.then(this.splitTasksInRoutines);
11943
+ registerTaskToRoutineMapTask.then(gatherRoutineTaskMapRegistrationTask);
11944
+ gatherRoutineTaskMapRegistrationTask.then(mapPhaseBarrierTask);
11945
+ CadenzaService.createMetaTask(
11946
+ "Request sync after local service instance registration",
11947
+ (ctx) => {
11948
+ for (const delayMs of EARLY_SYNC_TICK_DELAYS_MS) {
11949
+ CadenzaService.schedule(
11950
+ "meta.sync_controller.sync_tick",
11951
+ {
11952
+ ...buildMinimalSyncSignalContext(ctx),
11953
+ __syncing: true
11954
+ },
11955
+ delayMs
11956
+ );
11022
11957
  }
11023
- });
11024
- CadenzaService.log("Synced resources...");
11025
- }).attachSignal("global.meta.sync_controller.synced").doOn("meta.sync_controller.synced_resource");
11026
- if (!this.isCadenzaDBReady) {
11027
- CadenzaService.interval(
11028
- "meta.sync_controller.sync_tick",
11029
- { __syncing: true },
11030
- 3e5,
11031
- true
11032
- );
11033
- } else {
11034
- CadenzaService.interval(
11035
- "meta.sync_controller.sync_tick",
11036
- { __syncing: true },
11037
- 18e4
11038
- );
11039
- CadenzaService.schedule(
11040
- "meta.sync_controller.sync_tick",
11041
- { __syncing: true },
11042
- 250
11043
- );
11044
- for (const delayMs of EARLY_SYNC_REQUEST_DELAYS_MS) {
11045
- CadenzaService.schedule("meta.sync_requested", { __syncing: true }, delayMs);
11958
+ return true;
11959
+ },
11960
+ "Schedules the early bootstrap sync burst after local instance registration so startup-defined primitives can converge deterministically.",
11961
+ {
11962
+ register: false,
11963
+ isHidden: true
11046
11964
  }
11047
- }
11965
+ ).doOn("meta.service_registry.instance_inserted");
11966
+ CadenzaService.interval(
11967
+ "meta.sync_controller.sync_tick",
11968
+ { __syncing: true },
11969
+ this.isCadenzaDBReady ? 18e4 : 3e5
11970
+ );
11048
11971
  }
11049
11972
  };
11050
11973
 
@@ -11218,7 +12141,53 @@ function resolveBootstrapEndpoint(options) {
11218
12141
  }
11219
12142
 
11220
12143
  // src/Cadenza.ts
12144
+ var POSTGRES_SETUP_DEBUG_ENABLED2 = process.env.CADENZA_POSTGRES_SETUP_DEBUG === "1" || process.env.CADENZA_POSTGRES_SETUP_DEBUG === "true";
12145
+ var DEFAULT_DEPUTY_TASK_CONCURRENCY = 50;
12146
+ var DEFAULT_DEPUTY_TASK_TIMEOUT_MS = 12e4;
12147
+ var DEFAULT_DATABASE_PROXY_TASK_CONCURRENCY = 50;
12148
+ var DEFAULT_DATABASE_PROXY_TASK_TIMEOUT_MS = 12e4;
11221
12149
  var CadenzaService = class {
12150
+ static replayRegisteredTaskIntentAssociations() {
12151
+ for (const task of this.registry.tasks.values()) {
12152
+ if (!task.register || task.isHidden || task.handlesIntents.size === 0) {
12153
+ continue;
12154
+ }
12155
+ for (const intentName of task.handlesIntents) {
12156
+ task.emitWithMetadata("meta.task.intent_associated", {
12157
+ data: {
12158
+ intentName,
12159
+ taskName: task.name,
12160
+ taskVersion: task.version
12161
+ },
12162
+ taskInstance: task,
12163
+ __isSubMeta: task.isSubMeta
12164
+ });
12165
+ }
12166
+ }
12167
+ }
12168
+ static replayRegisteredTaskSignalObservations() {
12169
+ for (const task of this.registry.tasks.values()) {
12170
+ if (!task.register || task.isHidden || task.observedSignals.size === 0) {
12171
+ continue;
12172
+ }
12173
+ for (const signalName of task.observedSignals) {
12174
+ task.emitWithMetadata("meta.task.observed_signal", {
12175
+ data: {
12176
+ signalName,
12177
+ taskName: task.name,
12178
+ taskVersion: task.version
12179
+ },
12180
+ taskInstance: task,
12181
+ signalName,
12182
+ __isSubMeta: task.isSubMeta
12183
+ });
12184
+ }
12185
+ }
12186
+ }
12187
+ static replayRegisteredTaskGraphMetadata() {
12188
+ this.replayRegisteredTaskSignalObservations();
12189
+ this.replayRegisteredTaskIntentAssociations();
12190
+ }
11222
12191
  static buildLegacyLocalCadenzaDBTaskName(tableName, operation) {
11223
12192
  const operationPrefix = operation.charAt(0).toUpperCase() + operation.slice(1);
11224
12193
  const helperSuffix = (0, import_lodash_es2.camelCase)(String(tableName ?? "").trim());
@@ -11361,6 +12330,12 @@ var CadenzaService = class {
11361
12330
  static setMode(mode) {
11362
12331
  import_core5.default.setMode(mode);
11363
12332
  }
12333
+ static hasCompletedBootstrapSync() {
12334
+ return !this.serviceCreated || this.bootstrapSyncCompleted;
12335
+ }
12336
+ static markBootstrapSyncCompleted() {
12337
+ this.bootstrapSyncCompleted = true;
12338
+ }
11364
12339
  /**
11365
12340
  * Emits a signal with the specified data using the associated broker.
11366
12341
  *
@@ -11448,6 +12423,46 @@ var CadenzaService = class {
11448
12423
  responders: statuses
11449
12424
  };
11450
12425
  }
12426
+ static shouldPersistInquiry(inquiry, _context) {
12427
+ return !isMetaIntentName(inquiry);
12428
+ }
12429
+ static splitInquiryPersistenceContext(context) {
12430
+ const businessContext = {};
12431
+ const metadata = context?.__metadata && typeof context.__metadata === "object" ? { ...context.__metadata } : {};
12432
+ for (const [key, value] of Object.entries(context ?? {})) {
12433
+ if (key === "__metadata") {
12434
+ continue;
12435
+ }
12436
+ if (key.startsWith("__")) {
12437
+ metadata[key] = value;
12438
+ continue;
12439
+ }
12440
+ businessContext[key] = value;
12441
+ }
12442
+ return {
12443
+ context: businessContext,
12444
+ metadata
12445
+ };
12446
+ }
12447
+ static buildInquiryPersistenceStartData(inquiryId, inquiry, context, startedAt) {
12448
+ const normalizedTaskVersion = Number(context?.__inquirySourceTaskVersion);
12449
+ const { context: inquiryContext, metadata } = this.splitInquiryPersistenceContext(context);
12450
+ return {
12451
+ uuid: inquiryId,
12452
+ name: inquiry,
12453
+ taskName: typeof context?.__inquirySourceTaskName === "string" ? context.__inquirySourceTaskName : null,
12454
+ taskVersion: Number.isFinite(normalizedTaskVersion) && normalizedTaskVersion > 0 ? normalizedTaskVersion : null,
12455
+ taskExecutionId: typeof context?.__inquirySourceTaskExecutionId === "string" ? context.__inquirySourceTaskExecutionId : null,
12456
+ serviceName: this.serviceRegistry.serviceName,
12457
+ serviceInstanceId: this.serviceRegistry.serviceInstanceId,
12458
+ executionTraceId: typeof (context?.__metadata?.__executionTraceId ?? context?.__executionTraceId) === "string" ? context.__metadata?.__executionTraceId ?? context.__executionTraceId : null,
12459
+ routineExecutionId: typeof context?.__inquirySourceRoutineExecutionId === "string" ? context.__inquirySourceRoutineExecutionId : null,
12460
+ context: inquiryContext,
12461
+ metadata,
12462
+ isMeta: false,
12463
+ sentAt: formatTimestamp(startedAt)
12464
+ };
12465
+ }
11451
12466
  static async inquire(inquiry, context, options = {}) {
11452
12467
  this.bootstrap();
11453
12468
  const hydratedResult = this.consumeHydratedInquiryResult(
@@ -11462,6 +12477,20 @@ var CadenzaService = class {
11462
12477
  descriptor: this.getInquiryResponderDescriptor(task)
11463
12478
  })) : [];
11464
12479
  const isMetaInquiry = isMetaIntentName(inquiry);
12480
+ const startedAt = Date.now();
12481
+ const persistInquiry = this.shouldPersistInquiry(inquiry, context);
12482
+ const logicalInquiryId = persistInquiry ? (0, import_uuid6.v4)() : null;
12483
+ const inquiryStartData = logicalInquiryId ? this.buildInquiryPersistenceStartData(
12484
+ logicalInquiryId,
12485
+ inquiry,
12486
+ context,
12487
+ startedAt
12488
+ ) : null;
12489
+ if (inquiryStartData) {
12490
+ this.emit("meta.inquiry_broker.inquiry_started", {
12491
+ data: inquiryStartData
12492
+ });
12493
+ }
11465
12494
  const responders = allResponders.filter(({ task, descriptor }) => {
11466
12495
  const shouldExecute = shouldExecuteInquiryResponder(inquiry, task.isMeta);
11467
12496
  if (shouldExecute) {
@@ -11496,6 +12525,21 @@ var CadenzaService = class {
11496
12525
  durationMs: 0,
11497
12526
  responders: []
11498
12527
  };
12528
+ if (logicalInquiryId) {
12529
+ this.emit("meta.inquiry_broker.inquiry_completed", {
12530
+ data: {
12531
+ fulfilledAt: formatTimestamp(startedAt),
12532
+ duration: 0,
12533
+ metadata: {
12534
+ ...inquiryStartData?.metadata ?? {},
12535
+ inquiryMeta
12536
+ }
12537
+ },
12538
+ filter: {
12539
+ uuid: logicalInquiryId
12540
+ }
12541
+ });
12542
+ }
11499
12543
  if (options.requireComplete) {
11500
12544
  throw {
11501
12545
  __inquiryMeta: inquiryMeta,
@@ -11511,7 +12555,6 @@ var CadenzaService = class {
11511
12555
  const overallTimeoutMs = options.overallTimeoutMs ?? options.timeout ?? 0;
11512
12556
  const requireComplete = options.requireComplete ?? false;
11513
12557
  const perResponderTimeoutMs = options.perResponderTimeoutMs;
11514
- const startedAt = Date.now();
11515
12558
  const statuses = [];
11516
12559
  const statusByTask = /* @__PURE__ */ new Map();
11517
12560
  for (const responder of responders) {
@@ -11557,10 +12600,26 @@ var CadenzaService = class {
11557
12600
  statuses,
11558
12601
  allResponders.length
11559
12602
  );
12603
+ const finishedAt = Date.now();
11560
12604
  const responseContext = {
11561
12605
  ...mergedContext,
11562
12606
  __inquiryMeta: inquiryMeta
11563
12607
  };
12608
+ if (logicalInquiryId) {
12609
+ this.emit("meta.inquiry_broker.inquiry_completed", {
12610
+ data: {
12611
+ fulfilledAt: formatTimestamp(finishedAt),
12612
+ duration: finishedAt - startedAt,
12613
+ metadata: {
12614
+ ...inquiryStartData?.metadata ?? {},
12615
+ inquiryMeta
12616
+ }
12617
+ },
12618
+ filter: {
12619
+ uuid: logicalInquiryId
12620
+ }
12621
+ });
12622
+ }
11564
12623
  if (requireComplete && (timedOut || inquiryMeta.failed > 0 || inquiryMeta.timedOut > 0 || inquiryMeta.pending > 0)) {
11565
12624
  reject({
11566
12625
  ...responseContext,
@@ -11576,7 +12635,7 @@ var CadenzaService = class {
11576
12635
  }
11577
12636
  for (const responder of responders) {
11578
12637
  const { task, descriptor } = responder;
11579
- const inquiryId = (0, import_uuid6.v4)();
12638
+ const responderInquiryId = (0, import_uuid6.v4)();
11580
12639
  startTimeByTask.set(task, Date.now());
11581
12640
  const resolverTask = this.createEphemeralMetaTask(
11582
12641
  `Resolve inquiry ${inquiry} for ${descriptor.localTaskName}`,
@@ -11604,11 +12663,12 @@ var CadenzaService = class {
11604
12663
  },
11605
12664
  "Resolves distributed inquiry responder result",
11606
12665
  { register: false }
11607
- ).doOn(`meta.node.graph_completed:${inquiryId}`);
12666
+ ).doOn(`meta.node.graph_completed:${responderInquiryId}`);
11608
12667
  resolverTasks.push(resolverTask);
11609
12668
  const executionContext = {
11610
12669
  ...context,
11611
- __routineExecId: inquiryId,
12670
+ ...logicalInquiryId ? { __inquiryId: logicalInquiryId } : {},
12671
+ __routineExecId: responderInquiryId,
11612
12672
  __isInquiry: true
11613
12673
  };
11614
12674
  if (perResponderTimeoutMs !== void 0) {
@@ -11770,8 +12830,8 @@ var CadenzaService = class {
11770
12830
  this.validateName(routineName);
11771
12831
  const name = `${routineName} (Proxy)`;
11772
12832
  options = {
11773
- concurrency: 100,
11774
- timeout: 0,
12833
+ concurrency: DEFAULT_DEPUTY_TASK_CONCURRENCY,
12834
+ timeout: DEFAULT_DEPUTY_TASK_TIMEOUT_MS,
11775
12835
  register: true,
11776
12836
  isUnique: false,
11777
12837
  isMeta: false,
@@ -11878,8 +12938,8 @@ var CadenzaService = class {
11878
12938
  return;
11879
12939
  }
11880
12940
  options = {
11881
- concurrency: 100,
11882
- timeout: 0,
12941
+ concurrency: DEFAULT_DATABASE_PROXY_TASK_CONCURRENCY,
12942
+ timeout: DEFAULT_DATABASE_PROXY_TASK_TIMEOUT_MS,
11883
12943
  register: true,
11884
12944
  isUnique: false,
11885
12945
  isMeta: true,
@@ -11940,8 +13000,8 @@ var CadenzaService = class {
11940
13000
  const description = `Executes a ${operation} on table ${tableName} in ${targetDatabaseServiceName}`;
11941
13001
  const taskName = `${operation.charAt(0).toUpperCase() + operation.slice(1)} ${tableName}`;
11942
13002
  options = {
11943
- concurrency: 100,
11944
- timeout: 0,
13003
+ concurrency: DEFAULT_DATABASE_PROXY_TASK_CONCURRENCY,
13004
+ timeout: DEFAULT_DATABASE_PROXY_TASK_TIMEOUT_MS,
11945
13005
  register: true,
11946
13006
  isUnique: false,
11947
13007
  isMeta: false,
@@ -12085,8 +13145,10 @@ var CadenzaService = class {
12085
13145
  this.validateName(serviceName);
12086
13146
  this.validateServiceName(serviceName);
12087
13147
  const serviceId = options.customServiceId ?? (0, import_uuid6.v4)();
13148
+ this.bootstrapSyncCompleted = false;
12088
13149
  this.serviceRegistry.serviceName = serviceName;
12089
13150
  this.serviceRegistry.serviceInstanceId = serviceId;
13151
+ this.serviceRegistry.connectsToCadenzaDB = !!options.cadenzaDB?.connect;
12090
13152
  this.setHydrationResults(options.hydration);
12091
13153
  const explicitFrontendMode = options.isFrontend;
12092
13154
  options = {
@@ -12115,6 +13177,23 @@ var CadenzaService = class {
12115
13177
  this.serviceRegistry.useSocket = !!options.useSocket;
12116
13178
  this.serviceRegistry.retryCount = options.retryCount ?? 3;
12117
13179
  this.ensureTransportControllers(isFrontend);
13180
+ if (!isFrontend) {
13181
+ this.createMetaTask(
13182
+ "Initialize graph metadata controller after initial sync",
13183
+ () => {
13184
+ this.markBootstrapSyncCompleted();
13185
+ GraphMetadataController.instance;
13186
+ return true;
13187
+ },
13188
+ "Delays direct graph-metadata registration until the bootstrap sync has completed.",
13189
+ {
13190
+ register: false,
13191
+ isHidden: true
13192
+ }
13193
+ ).doOn("meta.service_registry.initial_sync_complete");
13194
+ GraphSyncController.instance.isCadenzaDBReady = serviceName === "CadenzaDB";
13195
+ GraphSyncController.instance.init();
13196
+ }
12118
13197
  const resolvedBootstrapEndpoint = options.cadenzaDB?.connect ? resolveBootstrapEndpoint({
12119
13198
  runtime: isFrontend ? "browser" : "server",
12120
13199
  bootstrap: options.bootstrap,
@@ -12188,14 +13267,14 @@ var CadenzaService = class {
12188
13267
  data: {
12189
13268
  name: serviceName,
12190
13269
  description,
12191
- displayName: options.displayName ?? "",
12192
- isMeta: options.isMeta
13270
+ display_name: options.displayName ?? "",
13271
+ is_meta: options.isMeta
12193
13272
  },
12194
13273
  __registrationData: {
12195
13274
  name: serviceName,
12196
13275
  description,
12197
- displayName: options.displayName ?? "",
12198
- isMeta: options.isMeta
13276
+ display_name: options.displayName ?? "",
13277
+ is_meta: options.isMeta
12199
13278
  },
12200
13279
  __serviceName: serviceName,
12201
13280
  __serviceInstanceId: serviceId,
@@ -12226,14 +13305,13 @@ var CadenzaService = class {
12226
13305
  );
12227
13306
  }).doOn("meta.rest.handshake", "meta.socket.handshake");
12228
13307
  }
12229
- this.createMetaTask("Handle service setup completion", () => {
13308
+ this.createMetaTask("Handle service setup completion", (ctx, emit) => {
13309
+ if (options.cadenzaDB?.connect) {
13310
+ this.serviceRegistry.bootstrapFullSync(emit, ctx, "service_setup_completed");
13311
+ }
12230
13312
  if (isFrontend) {
12231
13313
  registerActorSessionPersistenceTasks();
12232
13314
  this.ensureFrontendSyncLoop();
12233
- } else {
12234
- GraphMetadataController.instance;
12235
- GraphSyncController.instance.isCadenzaDBReady = serviceName === "CadenzaDB" || !!options.cadenzaDB?.connect;
12236
- GraphSyncController.instance.init();
12237
13315
  }
12238
13316
  this.log("Service created.");
12239
13317
  return true;
@@ -12262,7 +13340,15 @@ var CadenzaService = class {
12262
13340
  is_blocked: false,
12263
13341
  health: {}
12264
13342
  },
12265
- __transportData: [],
13343
+ __transportData: declaredTransports.map((transport) => ({
13344
+ uuid: transport.uuid,
13345
+ service_instance_id: serviceId,
13346
+ role: transport.role,
13347
+ origin: transport.origin,
13348
+ protocols: transport.protocols ?? ["rest", "socket"],
13349
+ ...transport.securityProfile ? { security_profile: transport.securityProfile } : {},
13350
+ ...transport.authStrategy ? { auth_strategy: transport.authStrategy } : {}
13351
+ })),
12266
13352
  __serviceName: serviceName,
12267
13353
  __serviceInstanceId: serviceId,
12268
13354
  __useSocket: options.useSocket,
@@ -12379,10 +13465,35 @@ var CadenzaService = class {
12379
13465
  registration.actorName
12380
13466
  );
12381
13467
  const createServiceTaskName = `Create database service ${name} after ${registration.actorName} setup`;
13468
+ const traceSetupDoneTaskName = `Trace database service ${name} setup done`;
13469
+ if (POSTGRES_SETUP_DEBUG_ENABLED2 && !this.get(traceSetupDoneTaskName)) {
13470
+ this.createMetaTask(
13471
+ traceSetupDoneTaskName,
13472
+ (ctx) => {
13473
+ console.log("[CADENZA_POSTGRES_SETUP_DEBUG] setup_done_signal_observed", {
13474
+ serviceName: name,
13475
+ actorName: registration.actorName,
13476
+ payloadKeys: Object.keys(ctx ?? {})
13477
+ });
13478
+ return true;
13479
+ },
13480
+ "Debug trace for PostgresActor setup-done signal delivery.",
13481
+ { isHidden: true, register: false }
13482
+ ).doOn(registration.setupDoneSignal);
13483
+ }
12382
13484
  if (!this.get(createServiceTaskName)) {
12383
13485
  this.createMetaTask(
12384
13486
  createServiceTaskName,
12385
13487
  () => {
13488
+ if (POSTGRES_SETUP_DEBUG_ENABLED2) {
13489
+ console.log(
13490
+ "[CADENZA_POSTGRES_SETUP_DEBUG] create_database_service_task_fired",
13491
+ {
13492
+ serviceName: name,
13493
+ actorName: registration.actorName
13494
+ }
13495
+ );
13496
+ }
12386
13497
  this.createCadenzaService(name, description, serviceOptions);
12387
13498
  return true;
12388
13499
  },
@@ -12914,6 +14025,7 @@ var CadenzaService = class {
12914
14025
  this.serviceRegistry?.reset();
12915
14026
  this.isBootstrapped = false;
12916
14027
  this.serviceCreated = false;
14028
+ this.bootstrapSyncCompleted = false;
12917
14029
  this.defaultDatabaseServiceName = null;
12918
14030
  this.warnedInvalidMetaIntentResponderKeys = /* @__PURE__ */ new Set();
12919
14031
  this.hydratedInquiryResults = /* @__PURE__ */ new Map();
@@ -12922,6 +14034,7 @@ var CadenzaService = class {
12922
14034
  };
12923
14035
  CadenzaService.isBootstrapped = false;
12924
14036
  CadenzaService.serviceCreated = false;
14037
+ CadenzaService.bootstrapSyncCompleted = false;
12925
14038
  CadenzaService.defaultDatabaseServiceName = null;
12926
14039
  CadenzaService.warnedInvalidMetaIntentResponderKeys = /* @__PURE__ */ new Set();
12927
14040
  CadenzaService.hydratedInquiryResults = /* @__PURE__ */ new Map();