@cadenza.io/service 2.18.2 → 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.
@@ -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(
@@ -766,6 +788,10 @@ var INTERNAL_RUNTIME_STATUS_TASK_NAMES = /* @__PURE__ */ new Set([
766
788
  "Collect distributed readiness",
767
789
  "Get status"
768
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
+ }
769
795
  function buildServiceRegistryInsertQueryData(ctx, queryData) {
770
796
  const joinedContexts = Array.isArray(ctx.joinedContexts) ? ctx.joinedContexts : [];
771
797
  const getJoinedValue = (key) => {
@@ -839,6 +865,45 @@ function normalizeServiceRegistryInsertResult(tableName, ctx, queryData, rawResu
839
865
  }
840
866
  return result;
841
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
+ }
842
907
  function resolveServiceRegistryInsertTask(tableName, queryData = {}, options = {}) {
843
908
  const remoteInsertTask = CadenzaService.createCadenzaDBInsertTask(
844
909
  tableName,
@@ -863,13 +928,24 @@ function resolveServiceRegistryInsertTask(tableName, queryData = {}, options = {
863
928
  });
864
929
  delegationContext.__metadata.__skipRemoteExecution = delegationContext.__metadata.__skipRemoteExecution ?? delegationContext.__skipRemoteExecution ?? false;
865
930
  delegationContext.__metadata.__blockRemoteExecution = delegationContext.__metadata.__blockRemoteExecution ?? delegationContext.__blockRemoteExecution ?? false;
866
- return {
931
+ const nextContext = {
867
932
  ...delegationContext,
868
933
  __resolverOriginalContext: {
869
934
  ...ctx
870
935
  },
871
936
  __resolverQueryData: nextQueryData
872
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;
873
949
  },
874
950
  `Prepares ${tableName} service-registry insert payloads for runner execution.`,
875
951
  {
@@ -895,7 +971,7 @@ function resolveServiceRegistryInsertTask(tableName, queryData = {}, options = {
895
971
  ctx.__resolverQueryData ?? ctx.queryData ?? {},
896
972
  ctx
897
973
  );
898
- if (tableName === "service_instance" && (process.env.CADENZA_INSTANCE_DEBUG === "1" || process.env.CADENZA_INSTANCE_DEBUG === "true")) {
974
+ if ((tableName === "service_instance" || tableName === "service") && (process.env.CADENZA_INSTANCE_DEBUG === "1" || process.env.CADENZA_INSTANCE_DEBUG === "true")) {
899
975
  console.log("[CADENZA_INSTANCE_DEBUG] finalize_service_registry_insert", {
900
976
  tableName,
901
977
  hasNormalized: !!normalized,
@@ -932,6 +1008,16 @@ function resolveServiceRegistryInsertTask(tableName, queryData = {}, options = {
932
1008
  CadenzaService.createEphemeralMetaTask(
933
1009
  `Resolve service registry insert execution for ${tableName} (${resolverRequestId})`,
934
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
+ }
935
1021
  if (resultCtx.__resolverRequestId !== resolverRequestId) {
936
1022
  return false;
937
1023
  }
@@ -951,7 +1037,7 @@ function resolveServiceRegistryInsertTask(tableName, queryData = {}, options = {
951
1037
  ).doOn(executionResolvedSignal, executionFailedSignal);
952
1038
  const localInsertTask = CadenzaService.getLocalCadenzaDBInsertTask(tableName);
953
1039
  const executionSignal = localInsertTask ? localExecutionRequestedSignal : remoteExecutionRequestedSignal;
954
- if (tableName === "service_instance" && (process.env.CADENZA_INSTANCE_DEBUG === "1" || process.env.CADENZA_INSTANCE_DEBUG === "true")) {
1040
+ if ((tableName === "service_instance" || tableName === "service") && (process.env.CADENZA_INSTANCE_DEBUG === "1" || process.env.CADENZA_INSTANCE_DEBUG === "true")) {
955
1041
  console.log("[CADENZA_INSTANCE_DEBUG] resolve_service_registry_insert", {
956
1042
  tableName,
957
1043
  executionSignal,
@@ -1404,6 +1490,9 @@ var ServiceRegistry = class _ServiceRegistry {
1404
1490
  )?.destroy();
1405
1491
  continue;
1406
1492
  }
1493
+ if (map.serviceName === this.serviceName) {
1494
+ continue;
1495
+ }
1407
1496
  if (locallyEmittedSignals.includes(map.signalName)) {
1408
1497
  if (!this.remoteSignals.get(map.serviceName)) {
1409
1498
  this.remoteSignals.set(map.serviceName, /* @__PURE__ */ new Set());
@@ -1437,6 +1526,13 @@ var ServiceRegistry = class _ServiceRegistry {
1437
1526
  "Handle global intent registration",
1438
1527
  (ctx, emit) => {
1439
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
+ }
1440
1536
  const sorted = intentToTaskMaps.sort((a, b) => {
1441
1537
  if (a.deleted && !b.deleted) return -1;
1442
1538
  if (!a.deleted && b.deleted) return 1;
@@ -1448,6 +1544,9 @@ var ServiceRegistry = class _ServiceRegistry {
1448
1544
  this.unregisterRemoteIntentDeputy(map);
1449
1545
  continue;
1450
1546
  }
1547
+ if (map.serviceName === this.serviceName) {
1548
+ continue;
1549
+ }
1451
1550
  CadenzaService.inquiryBroker.addIntent({
1452
1551
  name: map.intentName
1453
1552
  });
@@ -1652,6 +1751,11 @@ var ServiceRegistry = class _ServiceRegistry {
1652
1751
  "Full sync",
1653
1752
  async (ctx) => {
1654
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
+ }
1655
1759
  return false;
1656
1760
  }
1657
1761
  const inquiryResult = await CadenzaService.inquire(
@@ -1670,6 +1774,15 @@ var ServiceRegistry = class _ServiceRegistry {
1670
1774
  const serviceInstances = this.normalizeServiceInstancesFromSync(
1671
1775
  inquiryResult
1672
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
+ }
1673
1786
  return {
1674
1787
  ...ctx,
1675
1788
  signalToTaskMaps,
@@ -1712,6 +1825,9 @@ var ServiceRegistry = class _ServiceRegistry {
1712
1825
  "Handle Deputy Registration",
1713
1826
  (ctx, emit) => {
1714
1827
  const { serviceName } = ctx;
1828
+ if (!serviceName || serviceName === this.serviceName) {
1829
+ return false;
1830
+ }
1715
1831
  if (!this.deputies.has(serviceName)) this.deputies.set(serviceName, []);
1716
1832
  this.deputies.get(serviceName).push({
1717
1833
  serviceName,
@@ -2438,15 +2554,29 @@ var ServiceRegistry = class _ServiceRegistry {
2438
2554
  CadenzaService.createMetaTask(
2439
2555
  "Retry local service instance registration after failed insert",
2440
2556
  (ctx) => {
2557
+ const registrationPayload = resolveServiceInstanceRegistrationPayload(
2558
+ ctx,
2559
+ this.serviceName,
2560
+ this.serviceInstanceId
2561
+ );
2562
+ if (!registrationPayload) {
2563
+ return false;
2564
+ }
2441
2565
  const serviceName = String(
2442
- ctx.__serviceName ?? ctx.data?.service_name ?? this.serviceName ?? ""
2566
+ registrationPayload.service_name ?? this.serviceName ?? ""
2443
2567
  ).trim();
2444
2568
  if (!serviceName || serviceName !== this.serviceName) {
2445
2569
  return false;
2446
2570
  }
2447
2571
  CadenzaService.schedule(
2448
2572
  "meta.service_registry.instance_registration_requested",
2449
- { ...ctx },
2573
+ {
2574
+ ...ctx,
2575
+ data: registrationPayload,
2576
+ __registrationData: registrationPayload,
2577
+ __serviceName: serviceName,
2578
+ __serviceInstanceId: registrationPayload.uuid
2579
+ },
2450
2580
  5e3
2451
2581
  );
2452
2582
  return true;
@@ -2460,18 +2590,26 @@ var ServiceRegistry = class _ServiceRegistry {
2460
2590
  CadenzaService.createMetaTask(
2461
2591
  "Prepare service instance registration",
2462
2592
  (ctx) => {
2593
+ const registrationPayload = resolveServiceInstanceRegistrationPayload(
2594
+ ctx,
2595
+ this.serviceName,
2596
+ this.serviceInstanceId
2597
+ );
2463
2598
  if (process.env.CADENZA_INSTANCE_DEBUG === "1" || process.env.CADENZA_INSTANCE_DEBUG === "true") {
2464
2599
  console.log("[CADENZA_INSTANCE_DEBUG] prepare_service_instance_registration", {
2465
- serviceName: ctx.data?.service_name ?? ctx.__serviceName ?? this.serviceName ?? null,
2466
- serviceInstanceId: ctx.data?.uuid ?? ctx.__serviceInstanceId ?? this.serviceInstanceId ?? null,
2467
- hasData: !!ctx.data,
2468
- dataKeys: ctx.data && typeof ctx.data === "object" ? Object.keys(ctx.data) : [],
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) : [],
2469
2604
  transportCount: Array.isArray(ctx.__transportData) ? ctx.__transportData.length : Array.isArray(ctx.transportData) ? ctx.transportData.length : 0,
2470
2605
  skipRemoteExecution: ctx.__skipRemoteExecution === true
2471
2606
  });
2472
2607
  }
2608
+ if (!registrationPayload) {
2609
+ return false;
2610
+ }
2473
2611
  const serviceName = String(
2474
- ctx.data?.service_name ?? ctx.__serviceName ?? this.serviceName ?? ""
2612
+ registrationPayload.service_name ?? ctx.__serviceName ?? this.serviceName ?? ""
2475
2613
  ).trim();
2476
2614
  if (serviceName === "CadenzaDB" && !CadenzaService.getLocalCadenzaDBInsertTask("service_instance")) {
2477
2615
  CadenzaService.schedule(
@@ -2481,7 +2619,16 @@ var ServiceRegistry = class _ServiceRegistry {
2481
2619
  );
2482
2620
  return false;
2483
2621
  }
2484
- 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
+ };
2485
2632
  },
2486
2633
  "Waits for the exact local CadenzaDB service instance insert task during self-bootstrap."
2487
2634
  ).doOn("meta.service_registry.instance_registration_requested").then(this.insertServiceInstanceTask);
@@ -2856,6 +3003,15 @@ var ServiceRegistry = class _ServiceRegistry {
2856
3003
  };
2857
3004
  this.remoteIntentDeputiesByKey.set(key, descriptor);
2858
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
+ }
2859
3015
  }
2860
3016
  unregisterRemoteIntentDeputy(map) {
2861
3017
  const key = this.buildRemoteIntentDeputyKey(map);
@@ -3114,7 +3270,7 @@ var ServiceRegistry = class _ServiceRegistry {
3114
3270
  return communicationTypes;
3115
3271
  }
3116
3272
  ensureDependeeClientForInstance(instance, emit, ctx) {
3117
- 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) {
3118
3274
  return false;
3119
3275
  }
3120
3276
  if (!this.deputies.has(instance.serviceName) && !this.remoteIntents.has(instance.serviceName) && !this.remoteSignals.has(instance.serviceName)) {
@@ -3142,6 +3298,9 @@ var ServiceRegistry = class _ServiceRegistry {
3142
3298
  return true;
3143
3299
  }
3144
3300
  ensureDependeeClientsForService(serviceName, emit, ctx) {
3301
+ if (!serviceName || serviceName === this.serviceName) {
3302
+ return;
3303
+ }
3145
3304
  for (const instance of this.instances.get(serviceName) ?? []) {
3146
3305
  this.ensureDependeeClientForInstance(instance, emit, ctx);
3147
3306
  }
@@ -3934,7 +4093,7 @@ var SignalTransmissionTask = class extends import_core2.Task {
3934
4093
  execute(context, emit, inquire, progressCallback) {
3935
4094
  const ctx = context.getContext();
3936
4095
  const metadata = context.getMetadata();
3937
- const deputyContext = {
4096
+ const deputyContext = hoistDelegationMetadataFields({
3938
4097
  __localTaskName: this.name,
3939
4098
  __localServiceName: CadenzaService.serviceRegistry.serviceName,
3940
4099
  __serviceName: this.serviceName,
@@ -3947,7 +4106,7 @@ var SignalTransmissionTask = class extends import_core2.Task {
3947
4106
  __signalName: this.signalName,
3948
4107
  __signalEmissionId: metadata.__signalEmission?.uuid,
3949
4108
  ...ctx
3950
- };
4109
+ });
3951
4110
  return this.taskFunction(deputyContext, emit, inquire, progressCallback);
3952
4111
  }
3953
4112
  };
@@ -4082,7 +4241,13 @@ var RestController = class _RestController {
4082
4241
  return handshakeCtx;
4083
4242
  },
4084
4243
  "Sends handshake request",
4085
- { retryCount: 5, retryDelay: 1e3, retryDelayFactor: 1.5 }
4244
+ {
4245
+ retryCount: 5,
4246
+ retryDelay: 1e3,
4247
+ retryDelayFactor: 1.5,
4248
+ register: false,
4249
+ isHidden: true
4250
+ }
4086
4251
  ).doOn(`meta.fetch.handshake_requested:${fetchId}`).emits("meta.fetch.handshake_complete").attachSignal(
4087
4252
  "meta.fetch.handshake_failed",
4088
4253
  "global.meta.fetch.service_communication_established"
@@ -4125,7 +4290,11 @@ var RestController = class _RestController {
4125
4290
  }
4126
4291
  return resultContext;
4127
4292
  },
4128
- "Sends delegation request"
4293
+ "Sends delegation request",
4294
+ {
4295
+ register: false,
4296
+ isHidden: true
4297
+ }
4129
4298
  ).doOn(
4130
4299
  `meta.service_registry.selected_instance_for_fetch:${fetchId}`,
4131
4300
  `meta.service_registry.socket_failed:${fetchId}`
@@ -4166,7 +4335,11 @@ var RestController = class _RestController {
4166
4335
  }
4167
4336
  return response;
4168
4337
  },
4169
- "Sends signal request"
4338
+ "Sends signal request",
4339
+ {
4340
+ register: false,
4341
+ isHidden: true
4342
+ }
4170
4343
  ).doOn(`meta.service_registry.selected_instance_for_fetch:${fetchId}`).emitsOnFail("meta.fetch.signal_transmission_failed").attachSignal("meta.fetch.transmitted");
4171
4344
  const statusTask = CadenzaService.createMetaTask(
4172
4345
  `Request status from ${clientTaskSuffix}`,
@@ -4192,17 +4365,29 @@ var RestController = class _RestController {
4192
4365
  };
4193
4366
  }
4194
4367
  },
4195
- "Requests status"
4368
+ "Requests status",
4369
+ {
4370
+ register: false,
4371
+ isHidden: true
4372
+ }
4196
4373
  ).doOn("meta.fetch.status_check_requested").emits("meta.fetch.status_checked").emitsOnFail("meta.fetch.status_check_failed");
4197
- CadenzaService.createEphemeralMetaTask(`Destroy fetch client ${fetchId}`, () => {
4198
- fetchDiagnostics.connected = false;
4199
- fetchDiagnostics.destroyed = true;
4200
- fetchDiagnostics.updatedAt = Date.now();
4201
- handshakeTask.destroy();
4202
- delegateTask.destroy();
4203
- transmitTask.destroy();
4204
- statusTask.destroy();
4205
- }).doOn(
4374
+ CadenzaService.createEphemeralMetaTask(
4375
+ `Destroy fetch client ${fetchId}`,
4376
+ () => {
4377
+ fetchDiagnostics.connected = false;
4378
+ fetchDiagnostics.destroyed = true;
4379
+ fetchDiagnostics.updatedAt = Date.now();
4380
+ handshakeTask.destroy();
4381
+ delegateTask.destroy();
4382
+ transmitTask.destroy();
4383
+ statusTask.destroy();
4384
+ },
4385
+ "",
4386
+ {
4387
+ register: false,
4388
+ isHidden: true
4389
+ }
4390
+ ).doOn(
4206
4391
  `meta.fetch.destroy_requested:${fetchId}`,
4207
4392
  `meta.socket_client.disconnected:${fetchId}`,
4208
4393
  `meta.fetch.handshake_failed:${fetchId}`
@@ -5609,7 +5794,11 @@ var SocketController = class _SocketController {
5609
5794
  }
5610
5795
  );
5611
5796
  },
5612
- "Handshakes with socket server"
5797
+ "Handshakes with socket server",
5798
+ {
5799
+ register: false,
5800
+ isHidden: true
5801
+ }
5613
5802
  ).doOn(`meta.socket_client.connected:${fetchId}`);
5614
5803
  runtimeHandle.delegateTask = CadenzaService.createMetaTask(
5615
5804
  `Delegate flow to Socket service ${url}`,
@@ -5687,7 +5876,11 @@ var SocketController = class _SocketController {
5687
5876
  }
5688
5877
  }
5689
5878
  },
5690
- `Delegate flow to service ${serviceName} with address ${url}`
5879
+ `Delegate flow to service ${serviceName} with address ${url}`,
5880
+ {
5881
+ register: false,
5882
+ isHidden: true
5883
+ }
5691
5884
  ).doOn(`meta.service_registry.selected_instance_for_socket:${fetchId}`).attachSignal(
5692
5885
  "meta.socket_client.delegated",
5693
5886
  "meta.socket_shutdown_requested"
@@ -5711,7 +5904,11 @@ var SocketController = class _SocketController {
5711
5904
  }
5712
5905
  return response;
5713
5906
  },
5714
- `Transmits signal to service ${serviceName} with address ${url}`
5907
+ `Transmits signal to service ${serviceName} with address ${url}`,
5908
+ {
5909
+ register: false,
5910
+ isHidden: true
5911
+ }
5715
5912
  ).doOn(`meta.service_registry.selected_instance_for_socket:${fetchId}`).attachSignal("meta.socket_client.transmitted");
5716
5913
  CadenzaService.createEphemeralMetaTask(
5717
5914
  `Shutdown SocketClient ${url}`,
@@ -5755,7 +5952,11 @@ var SocketController = class _SocketController {
5755
5952
  fetchId
5756
5953
  });
5757
5954
  },
5758
- "Shuts down the socket client"
5955
+ "Shuts down the socket client",
5956
+ {
5957
+ register: false,
5958
+ isHidden: true
5959
+ }
5759
5960
  ).doOn(
5760
5961
  `meta.socket_shutdown_requested:${fetchId}`,
5761
5962
  `meta.socket_client.disconnected:${fetchId}`,
@@ -6019,10 +6220,18 @@ function decomposeSignalName(signalName) {
6019
6220
 
6020
6221
  // src/signals/SignalController.ts
6021
6222
  function buildSignalDatabaseTriggerContext(data) {
6223
+ const onConflict = {
6224
+ target: ["name"],
6225
+ action: {
6226
+ do: "nothing"
6227
+ }
6228
+ };
6022
6229
  return {
6023
6230
  data: { ...data },
6231
+ onConflict,
6024
6232
  queryData: {
6025
- data: { ...data }
6233
+ data: { ...data },
6234
+ onConflict
6026
6235
  }
6027
6236
  };
6028
6237
  }
@@ -6049,16 +6258,28 @@ var SignalController = class _SignalController {
6049
6258
  CadenzaService.createMetaTask(
6050
6259
  "Handle Signal Registration",
6051
6260
  (ctx, emit) => {
6261
+ if (!CadenzaService.hasCompletedBootstrapSync()) {
6262
+ return false;
6263
+ }
6052
6264
  const { signalName } = ctx;
6265
+ const signalObserver = CadenzaService.signalBroker.signalObservers?.get(
6266
+ signalName
6267
+ );
6268
+ if (signalObserver?.registered || signalObserver?.registrationRequested) {
6269
+ return false;
6270
+ }
6271
+ if (signalObserver) {
6272
+ signalObserver.registrationRequested = true;
6273
+ }
6053
6274
  const { isMeta, isGlobal, domain, action } = decomposeSignalName(signalName);
6054
6275
  emit(
6055
6276
  "global.meta.signal_controller.signal_added",
6056
6277
  buildSignalDatabaseTriggerContext({
6057
6278
  name: signalName,
6058
- isGlobal,
6279
+ is_global: isGlobal,
6059
6280
  domain,
6060
6281
  action,
6061
- isMeta
6282
+ is_meta: isMeta
6062
6283
  })
6063
6284
  );
6064
6285
  return ctx;
@@ -6067,12 +6288,35 @@ var SignalController = class _SignalController {
6067
6288
  ).doOn("meta.signal_broker.added").attachSignal("global.meta.signal_controller.signal_added");
6068
6289
  CadenzaService.createMetaTask(
6069
6290
  "Add data to signal emission",
6070
- (ctx) => {
6291
+ (ctx, emit) => {
6071
6292
  const signalEmission = ctx.__signalEmission;
6072
6293
  delete ctx.__signalEmission;
6073
6294
  if (!signalEmission) {
6074
6295
  return false;
6075
6296
  }
6297
+ if (typeof signalEmission.signalName === "string" && signalEmission.signalName.trim().length > 0 && !CadenzaService.signalBroker.signalObservers?.has(signalEmission.signalName)) {
6298
+ CadenzaService.signalBroker.addSignal(signalEmission.signalName);
6299
+ } else {
6300
+ const signalObserver = CadenzaService.signalBroker.signalObservers?.get(
6301
+ signalEmission.signalName
6302
+ );
6303
+ if (signalObserver && signalObserver.registered !== true && signalObserver.registrationRequested !== true && CadenzaService.hasCompletedBootstrapSync()) {
6304
+ signalObserver.registrationRequested = true;
6305
+ const { isMeta, isGlobal, domain, action } = decomposeSignalName(
6306
+ signalEmission.signalName
6307
+ );
6308
+ emit(
6309
+ "global.meta.signal_controller.signal_added",
6310
+ buildSignalDatabaseTriggerContext({
6311
+ name: signalEmission.signalName,
6312
+ is_global: isGlobal,
6313
+ domain,
6314
+ action,
6315
+ is_meta: isMeta
6316
+ })
6317
+ );
6318
+ }
6319
+ }
6076
6320
  return {
6077
6321
  data: {
6078
6322
  uuid: signalEmission.uuid,
@@ -6427,10 +6671,10 @@ function registerActorSessionPersistenceTasks() {
6427
6671
  }
6428
6672
 
6429
6673
  // src/graph/controllers/GraphMetadataController.ts
6430
- function buildDatabaseTriggerContext(data, filter, extra = {}) {
6674
+ function buildDatabaseTriggerContext(data, filter, extra = {}, queryExtra = {}) {
6431
6675
  const nextData = data && typeof data === "object" ? { ...data } : void 0;
6432
6676
  const nextFilter = filter && typeof filter === "object" ? { ...filter } : void 0;
6433
- const queryData = {};
6677
+ const queryData = { ...queryExtra };
6434
6678
  if (nextData !== void 0) {
6435
6679
  queryData.data = nextData;
6436
6680
  }
@@ -6444,19 +6688,108 @@ function buildDatabaseTriggerContext(data, filter, extra = {}) {
6444
6688
  ...Object.keys(queryData).length > 0 ? { queryData } : {}
6445
6689
  };
6446
6690
  }
6691
+ function resolveTaskFromMetadataContext(ctx) {
6692
+ const taskName = String(
6693
+ ctx?.taskName ?? ctx?.data?.taskName ?? ctx?.data?.task_name ?? ctx?.filter?.taskName ?? ctx?.filter?.task_name ?? ""
6694
+ );
6695
+ return taskName ? CadenzaService.get(taskName) : void 0;
6696
+ }
6697
+ function resolveTaskByName(name) {
6698
+ const taskName = String(name ?? "");
6699
+ return taskName ? CadenzaService.get(taskName) : void 0;
6700
+ }
6701
+ function resolvePredecessorTaskFromMetadataContext(ctx) {
6702
+ return resolveTaskByName(
6703
+ ctx?.predecessorTaskName ?? ctx?.data?.predecessorTaskName ?? ctx?.data?.predecessor_task_name ?? ctx?.filter?.predecessorTaskName ?? ctx?.filter?.predecessor_task_name
6704
+ );
6705
+ }
6706
+ function shouldSkipDirectTaskMetadata(task) {
6707
+ return !task || !task.register || task.isHidden || task.isDeputy;
6708
+ }
6709
+ function shouldPersistBusinessTaskExecution(task) {
6710
+ return !!task && task.register && !task.isHidden && !task.isMeta && !task.isSubMeta && !task.isDeputy;
6711
+ }
6712
+ function shouldEmitDirectPrimitiveMetadata() {
6713
+ return CadenzaService.hasCompletedBootstrapSync();
6714
+ }
6715
+ function shouldPersistBusinessInquiry(ctx) {
6716
+ const inquiryName = String(
6717
+ ctx?.data?.name ?? ctx?.inquiry ?? ctx?.data?.metadata?.inquiryMeta?.inquiry ?? ""
6718
+ );
6719
+ if (!inquiryName) {
6720
+ return false;
6721
+ }
6722
+ return !isMetaIntentName(inquiryName) && ctx?.data?.isMeta !== true && ctx?.data?.is_meta !== true;
6723
+ }
6724
+ function shouldPersistRoutineExecution(ctx) {
6725
+ if (ctx?.data?.isMeta === true || ctx?.data?.is_meta === true) {
6726
+ return false;
6727
+ }
6728
+ const routineTask = resolveTaskByName(ctx?.data?.name);
6729
+ if (routineTask) {
6730
+ return shouldPersistBusinessTaskExecution(routineTask);
6731
+ }
6732
+ return true;
6733
+ }
6734
+ function shouldPersistTaskExecutionMetadata(ctx) {
6735
+ const task = resolveTaskFromMetadataContext(ctx);
6736
+ return shouldPersistBusinessTaskExecution(task);
6737
+ }
6738
+ function shouldPersistTaskExecutionMap(ctx) {
6739
+ return shouldPersistBusinessTaskExecution(resolveTaskFromMetadataContext(ctx)) && shouldPersistBusinessTaskExecution(resolvePredecessorTaskFromMetadataContext(ctx));
6740
+ }
6741
+ function hasInquiryLink(data) {
6742
+ const metaContext = data?.metaContext ?? data?.meta_context;
6743
+ const directInquiryId = metaContext?.__inquiryId ?? metaContext?.__metadata?.__inquiryId;
6744
+ return typeof directInquiryId === "string" && directInquiryId.length > 0;
6745
+ }
6447
6746
  var GraphMetadataController = class _GraphMetadataController {
6448
6747
  static get instance() {
6449
6748
  if (!this._instance) this._instance = new _GraphMetadataController();
6450
6749
  return this._instance;
6451
6750
  }
6452
6751
  constructor() {
6752
+ const buildOnConflictDoNothing = (target) => ({
6753
+ target,
6754
+ action: {
6755
+ do: "nothing"
6756
+ }
6757
+ });
6453
6758
  CadenzaService.createMetaTask("Handle task creation", (ctx) => {
6454
- return buildDatabaseTriggerContext({
6455
- ...ctx.data,
6456
- serviceName: CadenzaService.serviceRegistry.serviceName
6457
- });
6759
+ if (!shouldEmitDirectPrimitiveMetadata()) {
6760
+ return false;
6761
+ }
6762
+ const taskName = String(ctx.data?.name ?? ctx.data?.taskName ?? "");
6763
+ const task = taskName ? CadenzaService.get(taskName) : void 0;
6764
+ const onConflict = buildOnConflictDoNothing([
6765
+ "name",
6766
+ "service_name",
6767
+ "version"
6768
+ ]);
6769
+ if (shouldSkipDirectTaskMetadata(task) || task?.registered || task?.registrationRequested) {
6770
+ return false;
6771
+ }
6772
+ if (task) {
6773
+ task.registrationRequested = true;
6774
+ }
6775
+ return buildDatabaseTriggerContext(
6776
+ {
6777
+ ...ctx.data,
6778
+ serviceName: CadenzaService.serviceRegistry.serviceName
6779
+ },
6780
+ void 0,
6781
+ { onConflict },
6782
+ { onConflict }
6783
+ );
6458
6784
  }).doOn("meta.task.created").emits("global.meta.graph_metadata.task_created");
6459
6785
  CadenzaService.createMetaTask("Handle task update", (ctx) => {
6786
+ if (!shouldEmitDirectPrimitiveMetadata()) {
6787
+ return false;
6788
+ }
6789
+ const task = resolveTaskFromMetadataContext(ctx);
6790
+ if (shouldSkipDirectTaskMetadata(task)) {
6791
+ return false;
6792
+ }
6460
6793
  return buildDatabaseTriggerContext(
6461
6794
  ctx.data ?? void 0,
6462
6795
  {
@@ -6466,11 +6799,14 @@ var GraphMetadataController = class _GraphMetadataController {
6466
6799
  );
6467
6800
  }).doOn("meta.task.layer_index_changed", "meta.task.destroyed").emits("global.meta.graph_metadata.task_updated");
6468
6801
  CadenzaService.createMetaTask("Handle task relationship creation", (ctx) => {
6802
+ if (!shouldEmitDirectPrimitiveMetadata()) {
6803
+ return false;
6804
+ }
6469
6805
  const taskName = ctx.data?.taskName ?? ctx.data?.task_name;
6470
6806
  const predecessorTaskName = ctx.data?.predecessorTaskName ?? ctx.data?.predecessor_task_name;
6471
6807
  const task = taskName ? CadenzaService.get(taskName) : void 0;
6472
6808
  const predecessorTask = predecessorTaskName ? CadenzaService.get(predecessorTaskName) : void 0;
6473
- if (!task?.registered || !predecessorTask?.registered) {
6809
+ if (shouldSkipDirectTaskMetadata(task) || shouldSkipDirectTaskMetadata(predecessorTask) || !task?.registered || !predecessorTask?.registered) {
6474
6810
  return false;
6475
6811
  }
6476
6812
  return buildDatabaseTriggerContext({
@@ -6483,14 +6819,35 @@ var GraphMetadataController = class _GraphMetadataController {
6483
6819
  CadenzaService.log(`Error in task ${ctx.data.taskName}`, ctx.data, "error");
6484
6820
  }).doOn("meta.node.errored");
6485
6821
  CadenzaService.createMetaTask("Handle task signal observation", (ctx) => {
6486
- const isGlobal = ctx.signalName.startsWith("global.");
6822
+ if (!shouldEmitDirectPrimitiveMetadata()) {
6823
+ return false;
6824
+ }
6825
+ const signalName = String(
6826
+ ctx.signalName ?? ctx.data?.signalName ?? ""
6827
+ ).split(":")[0];
6828
+ const task = resolveTaskFromMetadataContext(ctx);
6829
+ if (shouldSkipDirectTaskMetadata(task)) {
6830
+ return false;
6831
+ }
6832
+ if (task?.registered && task.registeredSignals.has(signalName)) {
6833
+ return false;
6834
+ }
6835
+ const isGlobal = signalName.startsWith("global.");
6487
6836
  return buildDatabaseTriggerContext({
6488
6837
  ...ctx.data,
6838
+ signalName,
6489
6839
  isGlobal,
6490
6840
  serviceName: CadenzaService.serviceRegistry.serviceName
6491
6841
  });
6492
6842
  }).doOn("meta.task.observed_signal").emits("global.meta.graph_metadata.task_signal_observed");
6493
6843
  CadenzaService.createMetaTask("Handle task signal attachment", (ctx) => {
6844
+ if (!shouldEmitDirectPrimitiveMetadata()) {
6845
+ return false;
6846
+ }
6847
+ const task = resolveTaskFromMetadataContext(ctx);
6848
+ if (shouldSkipDirectTaskMetadata(task)) {
6849
+ return false;
6850
+ }
6494
6851
  return buildDatabaseTriggerContext(
6495
6852
  ctx.data ?? void 0,
6496
6853
  {
@@ -6500,12 +6857,33 @@ var GraphMetadataController = class _GraphMetadataController {
6500
6857
  );
6501
6858
  }).doOn("meta.task.attached_signal").emits("global.meta.graph_metadata.task_attached_signal");
6502
6859
  CadenzaService.createMetaTask("Handle task intent association", (ctx) => {
6860
+ if (!shouldEmitDirectPrimitiveMetadata()) {
6861
+ return false;
6862
+ }
6863
+ const intentName = String(ctx.data?.intentName ?? "");
6864
+ const task = resolveTaskFromMetadataContext(ctx);
6865
+ if (shouldSkipDirectTaskMetadata(task)) {
6866
+ return false;
6867
+ }
6868
+ if (task?.registered && task.__registeredIntents?.has(
6869
+ intentName
6870
+ )) {
6871
+ return false;
6872
+ }
6503
6873
  return buildDatabaseTriggerContext({
6504
6874
  ...ctx.data,
6875
+ intentName,
6505
6876
  serviceName: CadenzaService.serviceRegistry.serviceName
6506
6877
  });
6507
6878
  }).doOn("meta.task.intent_associated").emits("global.meta.graph_metadata.task_intent_associated");
6508
6879
  CadenzaService.createMetaTask("Handle task unsubscribing signal", (ctx) => {
6880
+ if (!shouldEmitDirectPrimitiveMetadata()) {
6881
+ return false;
6882
+ }
6883
+ const task = resolveTaskFromMetadataContext(ctx);
6884
+ if (shouldSkipDirectTaskMetadata(task)) {
6885
+ return false;
6886
+ }
6509
6887
  return buildDatabaseTriggerContext(
6510
6888
  {
6511
6889
  deleted: true
@@ -6517,6 +6895,13 @@ var GraphMetadataController = class _GraphMetadataController {
6517
6895
  );
6518
6896
  }).doOn("meta.task.unsubscribed_signal").emits("meta.graph_metadata.task_unsubscribed_signal");
6519
6897
  CadenzaService.createMetaTask("Handle task detaching signal", (ctx) => {
6898
+ if (!shouldEmitDirectPrimitiveMetadata()) {
6899
+ return false;
6900
+ }
6901
+ const task = resolveTaskFromMetadataContext(ctx);
6902
+ if (shouldSkipDirectTaskMetadata(task)) {
6903
+ return false;
6904
+ }
6520
6905
  return buildDatabaseTriggerContext(
6521
6906
  {
6522
6907
  deleted: true
@@ -6528,12 +6913,18 @@ var GraphMetadataController = class _GraphMetadataController {
6528
6913
  );
6529
6914
  }).doOn("meta.task.detached_signal").emits("global.meta.graph_metadata.task_detached_signal");
6530
6915
  CadenzaService.createMetaTask("Handle routine creation", (ctx) => {
6916
+ if (!shouldEmitDirectPrimitiveMetadata()) {
6917
+ return false;
6918
+ }
6531
6919
  return buildDatabaseTriggerContext({
6532
6920
  ...ctx.data,
6533
6921
  serviceName: CadenzaService.serviceRegistry.serviceName
6534
6922
  });
6535
6923
  }).doAfter(CadenzaService.registry.registerRoutine).emits("global.meta.graph_metadata.routine_created");
6536
6924
  CadenzaService.createMetaTask("Handle routine update", (ctx) => {
6925
+ if (!shouldEmitDirectPrimitiveMetadata()) {
6926
+ return false;
6927
+ }
6537
6928
  return buildDatabaseTriggerContext(
6538
6929
  ctx.data ?? void 0,
6539
6930
  {
@@ -6543,6 +6934,9 @@ var GraphMetadataController = class _GraphMetadataController {
6543
6934
  );
6544
6935
  }).doOn("meta.routine.destroyed").emits("global.meta.graph_metadata.routine_updated");
6545
6936
  CadenzaService.createMetaTask("Handle adding task to routine", (ctx) => {
6937
+ if (!shouldEmitDirectPrimitiveMetadata()) {
6938
+ return false;
6939
+ }
6546
6940
  return buildDatabaseTriggerContext({
6547
6941
  ...ctx.data,
6548
6942
  serviceName: CadenzaService.serviceRegistry.serviceName
@@ -6558,8 +6952,12 @@ var GraphMetadataController = class _GraphMetadataController {
6558
6952
  CadenzaService.createMetaTask(
6559
6953
  "Handle routine execution creation",
6560
6954
  (ctx) => {
6955
+ if (!shouldPersistRoutineExecution(ctx)) {
6956
+ return false;
6957
+ }
6561
6958
  return buildDatabaseTriggerContext({
6562
6959
  ...ctx.data,
6960
+ previousRoutineExecution: hasInquiryLink(ctx.data) ? null : ctx.data?.previousRoutineExecution ?? ctx.data?.previous_routine_execution ?? null,
6563
6961
  serviceName: CadenzaService.serviceRegistry.serviceName,
6564
6962
  serviceInstanceId: CadenzaService.serviceRegistry.serviceInstanceId
6565
6963
  });
@@ -6596,6 +6994,9 @@ var GraphMetadataController = class _GraphMetadataController {
6596
6994
  CadenzaService.createMetaTask(
6597
6995
  "Handle task execution creation",
6598
6996
  (ctx) => {
6997
+ if (!shouldPersistTaskExecutionMetadata(ctx)) {
6998
+ return false;
6999
+ }
6599
7000
  return buildDatabaseTriggerContext({
6600
7001
  ...ctx.data,
6601
7002
  serviceName: CadenzaService.serviceRegistry.serviceName,
@@ -6608,6 +7009,9 @@ var GraphMetadataController = class _GraphMetadataController {
6608
7009
  CadenzaService.createMetaTask(
6609
7010
  "Handle task execution mapped",
6610
7011
  (ctx) => {
7012
+ if (!shouldPersistTaskExecutionMap(ctx)) {
7013
+ return false;
7014
+ }
6611
7015
  return buildDatabaseTriggerContext(
6612
7016
  ctx.data ?? void 0,
6613
7017
  ctx.filter ?? void 0
@@ -6619,6 +7023,9 @@ var GraphMetadataController = class _GraphMetadataController {
6619
7023
  CadenzaService.createMetaTask(
6620
7024
  "Handle task execution started",
6621
7025
  (ctx) => {
7026
+ if (!shouldPersistTaskExecutionMetadata(ctx)) {
7027
+ return false;
7028
+ }
6622
7029
  return buildDatabaseTriggerContext(
6623
7030
  ctx.data ?? void 0,
6624
7031
  ctx.filter ?? void 0
@@ -6630,6 +7037,9 @@ var GraphMetadataController = class _GraphMetadataController {
6630
7037
  CadenzaService.createMetaTask(
6631
7038
  "Handle task execution ended",
6632
7039
  (ctx) => {
7040
+ if (!shouldPersistTaskExecutionMetadata(ctx)) {
7041
+ return false;
7042
+ }
6633
7043
  return buildDatabaseTriggerContext(
6634
7044
  {
6635
7045
  ...ctx.data,
@@ -6642,9 +7052,39 @@ var GraphMetadataController = class _GraphMetadataController {
6642
7052
  "Handles task execution ended",
6643
7053
  { concurrency: 100, isSubMeta: true }
6644
7054
  ).doOn("meta.node.ended").emits("global.meta.graph_metadata.task_execution_ended");
7055
+ CadenzaService.createMetaTask(
7056
+ "Handle inquiry creation",
7057
+ (ctx) => {
7058
+ if (!shouldPersistBusinessInquiry(ctx)) {
7059
+ return false;
7060
+ }
7061
+ return buildDatabaseTriggerContext({
7062
+ ...ctx.data,
7063
+ serviceName: CadenzaService.serviceRegistry.serviceName,
7064
+ serviceInstanceId: CadenzaService.serviceRegistry.serviceInstanceId,
7065
+ isMeta: false
7066
+ });
7067
+ },
7068
+ "Handles inquiry creation",
7069
+ { concurrency: 100, isSubMeta: true }
7070
+ ).doOn("meta.inquiry_broker.inquiry_started").emits("global.meta.graph_metadata.inquiry_created");
7071
+ CadenzaService.createMetaTask(
7072
+ "Handle inquiry update",
7073
+ (ctx) => {
7074
+ return buildDatabaseTriggerContext(
7075
+ ctx.data ?? void 0,
7076
+ ctx.filter ?? void 0
7077
+ );
7078
+ },
7079
+ "Handles inquiry completion updates",
7080
+ { concurrency: 100, isSubMeta: true }
7081
+ ).doOn("meta.inquiry_broker.inquiry_completed").emits("global.meta.graph_metadata.inquiry_updated");
6645
7082
  CadenzaService.createMetaTask(
6646
7083
  "Handle task execution relationship creation",
6647
7084
  (ctx) => {
7085
+ if (!shouldPersistTaskExecutionMap(ctx)) {
7086
+ return false;
7087
+ }
6648
7088
  return buildDatabaseTriggerContext(
6649
7089
  {
6650
7090
  executionCount: "increment",
@@ -6660,12 +7100,18 @@ var GraphMetadataController = class _GraphMetadataController {
6660
7100
  { concurrency: 100, isSubMeta: true }
6661
7101
  ).doOn("meta.node.mapped", "meta.node.detected_previous_task_execution").emits("global.meta.graph_metadata.relationship_executed");
6662
7102
  CadenzaService.createMetaTask("Handle actor creation", (ctx) => {
7103
+ if (!shouldEmitDirectPrimitiveMetadata()) {
7104
+ return false;
7105
+ }
6663
7106
  return buildDatabaseTriggerContext({
6664
7107
  ...ctx.data,
6665
7108
  service_name: CadenzaService.serviceRegistry.serviceName
6666
7109
  });
6667
7110
  }).doOn("meta.actor.created").emits("global.meta.graph_metadata.actor_created");
6668
7111
  CadenzaService.createMetaTask("Handle actor task association", (ctx) => {
7112
+ if (!shouldEmitDirectPrimitiveMetadata()) {
7113
+ return false;
7114
+ }
6669
7115
  return buildDatabaseTriggerContext({
6670
7116
  ...ctx.data,
6671
7117
  service_name: CadenzaService.serviceRegistry.serviceName
@@ -6673,6 +7119,9 @@ var GraphMetadataController = class _GraphMetadataController {
6673
7119
  }).doOn("meta.actor.task_associated").emits("global.meta.graph_metadata.actor_task_associated");
6674
7120
  registerActorSessionPersistenceTasks();
6675
7121
  CadenzaService.createMetaTask("Handle Intent Creation", (ctx) => {
7122
+ if (!shouldEmitDirectPrimitiveMetadata()) {
7123
+ return false;
7124
+ }
6676
7125
  const intentName = ctx.data?.name;
6677
7126
  return buildDatabaseTriggerContext({
6678
7127
  ...ctx.data,
@@ -6794,7 +7243,7 @@ function buildIntentRegistryData(intent) {
6794
7243
  description: typeof intent?.description === "string" ? intent.description : "",
6795
7244
  input: intent?.input && typeof intent.input === "object" ? intent.input : { type: "object" },
6796
7245
  output: intent?.output && typeof intent.output === "object" ? intent.output : { type: "object" },
6797
- isMeta: isMetaIntentName(name)
7246
+ is_meta: isMetaIntentName(name)
6798
7247
  };
6799
7248
  }
6800
7249
  function getJoinedContextValue(ctx, key) {
@@ -7017,6 +7466,22 @@ var EARLY_SYNC_TICK_DELAYS_MS = [
7017
7466
  BOOTSTRAP_SYNC_STALE_CYCLE_MS * 2 + 2e3,
7018
7467
  BOOTSTRAP_SYNC_STALE_CYCLE_MS * 3 + 3e3
7019
7468
  ];
7469
+ function shouldTraceSyncPhase(serviceName) {
7470
+ const configured = process.env.CADENZA_SYNC_PHASE_TRACE_SERVICE;
7471
+ if (!configured || !serviceName) {
7472
+ return false;
7473
+ }
7474
+ return configured === serviceName;
7475
+ }
7476
+ function canonicalizeSignalName(signalName) {
7477
+ if (typeof signalName !== "string") {
7478
+ return "";
7479
+ }
7480
+ return signalName.split(":")[0]?.trim() ?? "";
7481
+ }
7482
+ function isBootstrapLocalOnlySignal(signalName) {
7483
+ return signalName === "meta.service_registry.insert_execution_requested" || signalName.startsWith("meta.sync_controller.");
7484
+ }
7020
7485
  function getRegistrableTasks() {
7021
7486
  return Array.from(CadenzaService.registry.tasks.values()).filter(
7022
7487
  (task) => task.register && !task.isHidden && !task.isDeputy
@@ -7025,24 +7490,51 @@ function getRegistrableTasks() {
7025
7490
  function getRegistrableRoutines() {
7026
7491
  return Array.from(CadenzaService.registry.routines.values());
7027
7492
  }
7028
- function isAuthoritySyncSignal(signalName) {
7029
- return decomposeSignalName(signalName).isGlobal;
7030
- }
7031
7493
  function getRegistrableSignalObservers() {
7032
7494
  const signalObservers = CadenzaService.signalBroker.signalObservers;
7033
7495
  if (!signalObservers) {
7034
7496
  return [];
7035
7497
  }
7036
- return Array.from(signalObservers.entries()).filter(([signalName]) => isAuthoritySyncSignal(signalName)).map(([signalName, observer]) => ({
7037
- signalName,
7038
- ...observer
7039
- }));
7498
+ const canonicalObservers = /* @__PURE__ */ new Map();
7499
+ for (const [rawSignalName, observer] of signalObservers.entries()) {
7500
+ const signalName = canonicalizeSignalName(rawSignalName);
7501
+ if (!signalName || isBootstrapLocalOnlySignal(signalName)) {
7502
+ continue;
7503
+ }
7504
+ const existing = canonicalObservers.get(signalName);
7505
+ canonicalObservers.set(signalName, {
7506
+ signalName,
7507
+ registered: existing?.registered === true || observer?.registered === true
7508
+ });
7509
+ }
7510
+ return Array.from(canonicalObservers.values());
7511
+ }
7512
+ function isLocallyHandledIntentName(intentName) {
7513
+ const observer = CadenzaService.inquiryBroker.inquiryObservers.get(intentName);
7514
+ if (!observer) {
7515
+ return false;
7516
+ }
7517
+ for (const task of observer.tasks) {
7518
+ if (task.register && !task.isHidden && !task.isDeputy) {
7519
+ return true;
7520
+ }
7521
+ }
7522
+ return false;
7040
7523
  }
7041
7524
  function getRegistrableIntentNames() {
7042
7525
  return Array.from(CadenzaService.inquiryBroker.intents.values()).map((intent) => buildIntentRegistryData(intent)).filter(
7043
7526
  (intentDefinition) => intentDefinition !== null
7527
+ ).filter(
7528
+ (intentDefinition) => isLocallyHandledIntentName(String(intentDefinition.name))
7044
7529
  ).map((intentDefinition) => String(intentDefinition.name));
7045
7530
  }
7531
+ function isRegistrableLocalIntentDefinition(intent) {
7532
+ const intentData = buildIntentRegistryData(intent);
7533
+ if (!intentData) {
7534
+ return false;
7535
+ }
7536
+ return isLocallyHandledIntentName(String(intentData.name));
7537
+ }
7046
7538
  function buildActorRegistrationKey(actor, serviceName) {
7047
7539
  const data = buildActorRegistrationData(actor);
7048
7540
  const name = typeof data.name === "string" && data.name.trim().length > 0 ? data.name.trim() : "";
@@ -7177,6 +7669,13 @@ var GraphSyncController = class _GraphSyncController {
7177
7669
  const finalizeTaskSync = (emit, ctx) => {
7178
7670
  const pendingTasks = getRegistrableTasks().filter((task) => !task.registered);
7179
7671
  const serviceName2 = typeof ctx.__serviceName === "string" ? ctx.__serviceName : resolveSyncServiceName();
7672
+ if (shouldTraceSyncPhase(serviceName2)) {
7673
+ console.log("[CADENZA_SYNC_PHASE_TRACE] finalize_tasks", {
7674
+ serviceName: serviceName2,
7675
+ pendingCount: pendingTasks.length,
7676
+ sample: pendingTasks.slice(0, 5).map((task) => task.name)
7677
+ });
7678
+ }
7180
7679
  if (pendingTasks.length > 0) {
7181
7680
  this.tasksSynced = false;
7182
7681
  return false;
@@ -7196,6 +7695,13 @@ var GraphSyncController = class _GraphSyncController {
7196
7695
  (routine) => !routine.registered
7197
7696
  );
7198
7697
  const serviceName2 = typeof ctx.__serviceName === "string" ? ctx.__serviceName : resolveSyncServiceName();
7698
+ if (shouldTraceSyncPhase(serviceName2)) {
7699
+ console.log("[CADENZA_SYNC_PHASE_TRACE] finalize_routines", {
7700
+ serviceName: serviceName2,
7701
+ pendingCount: pendingRoutines.length,
7702
+ sample: pendingRoutines.slice(0, 5).map((routine) => routine.name)
7703
+ });
7704
+ }
7199
7705
  if (pendingRoutines.length > 0) {
7200
7706
  this.routinesSynced = false;
7201
7707
  return false;
@@ -7215,6 +7721,13 @@ var GraphSyncController = class _GraphSyncController {
7215
7721
  (observer) => observer.registered !== true
7216
7722
  );
7217
7723
  const serviceName2 = typeof ctx.__serviceName === "string" ? ctx.__serviceName : resolveSyncServiceName();
7724
+ if (shouldTraceSyncPhase(serviceName2)) {
7725
+ console.log("[CADENZA_SYNC_PHASE_TRACE] finalize_signals", {
7726
+ serviceName: serviceName2,
7727
+ pendingCount: pendingSignals.length,
7728
+ sample: pendingSignals.slice(0, 5).map((observer) => observer.signalName)
7729
+ });
7730
+ }
7218
7731
  if (pendingSignals.length > 0) {
7219
7732
  this.signalsSynced = false;
7220
7733
  return false;
@@ -7234,6 +7747,13 @@ var GraphSyncController = class _GraphSyncController {
7234
7747
  (intentName) => !this.registeredIntentDefinitions.has(intentName)
7235
7748
  );
7236
7749
  const serviceName2 = typeof ctx.__serviceName === "string" ? ctx.__serviceName : resolveSyncServiceName();
7750
+ if (shouldTraceSyncPhase(serviceName2)) {
7751
+ console.log("[CADENZA_SYNC_PHASE_TRACE] finalize_intents", {
7752
+ serviceName: serviceName2,
7753
+ pendingCount: pendingIntentNames.length,
7754
+ sample: pendingIntentNames.slice(0, 5)
7755
+ });
7756
+ }
7237
7757
  if (pendingIntentNames.length > 0) {
7238
7758
  this.intentsSynced = false;
7239
7759
  return false;
@@ -7255,6 +7775,13 @@ var GraphSyncController = class _GraphSyncController {
7255
7775
  return false;
7256
7776
  }
7257
7777
  const pendingActorKeys = CadenzaService.getAllActors().map((actor) => buildActorRegistrationKey(actor, syncServiceName)).filter((registrationKey) => Boolean(registrationKey)).filter((registrationKey) => !this.registeredActors.has(registrationKey));
7778
+ if (shouldTraceSyncPhase(syncServiceName)) {
7779
+ console.log("[CADENZA_SYNC_PHASE_TRACE] finalize_actors", {
7780
+ serviceName: syncServiceName,
7781
+ pendingCount: pendingActorKeys.length,
7782
+ sample: pendingActorKeys.slice(0, 5)
7783
+ });
7784
+ }
7258
7785
  if (pendingActorKeys.length > 0) {
7259
7786
  this.actorsSynced = false;
7260
7787
  return false;
@@ -7335,8 +7862,8 @@ var GraphSyncController = class _GraphSyncController {
7335
7862
  name: routine.name,
7336
7863
  version: routine.version,
7337
7864
  description: routine.description,
7338
- serviceName: serviceName2,
7339
- isMeta: routine.isMeta
7865
+ service_name: serviceName2,
7866
+ is_meta: routine.isMeta
7340
7867
  },
7341
7868
  __routineName: routine.name
7342
7869
  };
@@ -7399,11 +7926,11 @@ var GraphSyncController = class _GraphSyncController {
7399
7926
  yield {
7400
7927
  __syncing: ctx.__syncing,
7401
7928
  data: {
7402
- taskName: nextTask.name,
7403
- taskVersion: nextTask.version,
7404
- routineName: routine.name,
7405
- routineVersion: routine.version,
7406
- serviceName: serviceName2
7929
+ task_name: nextTask.name,
7930
+ task_version: nextTask.version,
7931
+ routine_name: routine.name,
7932
+ routine_version: routine.version,
7933
+ service_name: serviceName2
7407
7934
  },
7408
7935
  __routineName: routine.name,
7409
7936
  __taskName: nextTask.name
@@ -7461,12 +7988,20 @@ var GraphSyncController = class _GraphSyncController {
7461
7988
  });
7462
7989
  const { signals } = ctx;
7463
7990
  if (!signals) return;
7464
- const filteredSignals = signals.filter((signal) => {
7465
- if (signal.data.registered) {
7991
+ const seenSignals = /* @__PURE__ */ new Set();
7992
+ const filteredSignals = signals.map((signal) => ({
7993
+ signalName: canonicalizeSignalName(signal.signal),
7994
+ data: signal.data
7995
+ })).filter((signal) => {
7996
+ if (!signal.signalName || signal.data?.registered || isBootstrapLocalOnlySignal(signal.signalName)) {
7466
7997
  return false;
7467
7998
  }
7468
- return isAuthoritySyncSignal(signal.signal);
7469
- }).map((signal) => signal.signal);
7999
+ if (seenSignals.has(signal.signalName)) {
8000
+ return false;
8001
+ }
8002
+ seenSignals.add(signal.signalName);
8003
+ return true;
8004
+ }).map((signal) => signal.signalName);
7470
8005
  for (const signal of filteredSignals) {
7471
8006
  const { isMeta, isGlobal, domain, action } = decomposeSignalName(signal);
7472
8007
  this.signalsSynced = false;
@@ -7474,10 +8009,10 @@ var GraphSyncController = class _GraphSyncController {
7474
8009
  __syncing: ctx.__syncing,
7475
8010
  data: {
7476
8011
  name: signal,
7477
- isGlobal,
8012
+ is_global: isGlobal,
7478
8013
  domain,
7479
8014
  action,
7480
- isMeta
8015
+ is_meta: isMeta
7481
8016
  },
7482
8017
  __signal: signal
7483
8018
  };
@@ -7518,6 +8053,7 @@ var GraphSyncController = class _GraphSyncController {
7518
8053
  const observer = signalObservers?.get(signalName);
7519
8054
  if (observer) {
7520
8055
  observer.registered = true;
8056
+ observer.registrationRequested = false;
7521
8057
  }
7522
8058
  emit(
7523
8059
  "meta.sync_controller.signal_registered",
@@ -7555,25 +8091,25 @@ var GraphSyncController = class _GraphSyncController {
7555
8091
  name: task.name,
7556
8092
  version: task.version,
7557
8093
  description: task.description,
7558
- functionString: __functionString,
7559
- tagIdGetter: __getTagCallback,
7560
- layerIndex: task.layerIndex,
8094
+ function_string: __functionString,
8095
+ tag_id_getter: __getTagCallback,
8096
+ layer_index: task.layerIndex,
7561
8097
  concurrency: task.concurrency,
7562
8098
  timeout: task.timeout,
7563
- isUnique: task.isUnique,
7564
- isSignal: task.isSignal,
7565
- isThrottled: task.isThrottled,
7566
- isDebounce: task.isDebounce,
7567
- isEphemeral: task.isEphemeral,
7568
- isMeta: task.isMeta,
7569
- isSubMeta: task.isSubMeta,
7570
- isHidden: task.isHidden,
7571
- validateInputContext: task.validateInputContext,
7572
- validateOutputContext: task.validateOutputContext,
7573
- retryCount: task.retryCount,
7574
- retryDelay: task.retryDelay,
7575
- retryDelayMax: task.retryDelayMax,
7576
- retryDelayFactor: task.retryDelayFactor,
8099
+ is_unique: task.isUnique,
8100
+ is_signal: task.isSignal,
8101
+ is_throttled: task.isThrottled,
8102
+ is_debounce: task.isDebounce,
8103
+ is_ephemeral: task.isEphemeral,
8104
+ is_meta: task.isMeta,
8105
+ is_sub_meta: task.isSubMeta,
8106
+ is_hidden: task.isHidden,
8107
+ validate_input_context: task.validateInputContext,
8108
+ validate_output_context: task.validateOutputContext,
8109
+ retry_count: task.retryCount,
8110
+ retry_delay: task.retryDelay,
8111
+ retry_delay_max: task.retryDelayMax,
8112
+ retry_delay_factor: task.retryDelayFactor,
7577
8113
  service_name: serviceName2,
7578
8114
  signals: {
7579
8115
  emits: Array.from(task.emitsSignals),
@@ -7617,6 +8153,7 @@ var GraphSyncController = class _GraphSyncController {
7617
8153
  return true;
7618
8154
  }
7619
8155
  task.registered = true;
8156
+ task.registrationRequested = false;
7620
8157
  emit(
7621
8158
  "meta.sync_controller.task_registered",
7622
8159
  buildMinimalSyncSignalContext(ctx, {
@@ -7804,11 +8341,11 @@ var GraphSyncController = class _GraphSyncController {
7804
8341
  yield {
7805
8342
  __syncing: ctx.__syncing,
7806
8343
  data: {
7807
- signalName: _signal,
7808
- isGlobal,
7809
- taskName: task.name,
7810
- taskVersion: task.version,
7811
- serviceName: serviceName2
8344
+ signal_name: _signal,
8345
+ is_global: isGlobal,
8346
+ task_name: task.name,
8347
+ task_version: task.version,
8348
+ service_name: serviceName2
7812
8349
  },
7813
8350
  __taskName: task.name,
7814
8351
  __signal: signal
@@ -7849,6 +8386,9 @@ var GraphSyncController = class _GraphSyncController {
7849
8386
  });
7850
8387
  const intents = Array.isArray(ctx.intents) ? ctx.intents : Array.from(CadenzaService.inquiryBroker.intents.values());
7851
8388
  for (const intent of intents) {
8389
+ if (!isRegistrableLocalIntentDefinition(intent)) {
8390
+ continue;
8391
+ }
7852
8392
  const intentData = buildIntentRegistryData(intent);
7853
8393
  if (!intentData) {
7854
8394
  continue;
@@ -7946,19 +8486,19 @@ var GraphSyncController = class _GraphSyncController {
7946
8486
  yield {
7947
8487
  __syncing: ctx.__syncing,
7948
8488
  data: {
7949
- intentName: intent,
7950
- taskName: task.name,
7951
- taskVersion: task.version,
7952
- serviceName: serviceName2
8489
+ intent_name: intent,
8490
+ task_name: task.name,
8491
+ task_version: task.version,
8492
+ service_name: serviceName2
7953
8493
  },
7954
8494
  __taskName: task.name,
7955
8495
  __intent: intent,
7956
8496
  __intentDefinition: intentDefinition,
7957
8497
  __intentMapData: {
7958
- intentName: intent,
7959
- taskName: task.name,
7960
- taskVersion: task.version,
7961
- serviceName: serviceName2
8498
+ intent_name: intent,
8499
+ task_name: task.name,
8500
+ task_version: task.version,
8501
+ service_name: serviceName2
7962
8502
  }
7963
8503
  };
7964
8504
  emittedCount += 1;
@@ -7996,7 +8536,9 @@ var GraphSyncController = class _GraphSyncController {
7996
8536
  CadenzaService.debounce("meta.sync_controller.synced_resource", {
7997
8537
  delayMs: 3e3
7998
8538
  });
7999
- if (task.hidden || !task.register || task.isDeputy) return;
8539
+ if (task.hidden || !task.register || task.isDeputy || !task.registered) {
8540
+ return;
8541
+ }
8000
8542
  const predecessorServiceName = resolveSyncServiceName(task);
8001
8543
  if (!predecessorServiceName) {
8002
8544
  return;
@@ -8011,12 +8553,12 @@ var GraphSyncController = class _GraphSyncController {
8011
8553
  }
8012
8554
  yield {
8013
8555
  data: {
8014
- taskName: t.name,
8015
- taskVersion: t.version,
8016
- predecessorTaskName: task.name,
8017
- predecessorTaskVersion: task.version,
8018
- serviceName: serviceName2,
8019
- predecessorServiceName
8556
+ task_name: t.name,
8557
+ task_version: t.version,
8558
+ predecessor_task_name: task.name,
8559
+ predecessor_task_version: task.version,
8560
+ service_name: serviceName2,
8561
+ predecessor_service_name: predecessorServiceName
8020
8562
  },
8021
8563
  __taskName: task.name,
8022
8564
  __nextTaskName: t.name
@@ -8063,75 +8605,7 @@ var GraphSyncController = class _GraphSyncController {
8063
8605
  taskMapRegistrationGraph,
8064
8606
  recordTaskMapRegistrationTask
8065
8607
  );
8066
- this.registerDeputyRelationshipTask = CadenzaService.createMetaTask(
8067
- "Register deputy relationship",
8068
- (ctx) => {
8069
- const task = ctx.task;
8070
- if (task.hidden || !task.register) return;
8071
- if (task.isDeputy && !task.signalName) {
8072
- if (task.registeredDeputyMap) return;
8073
- const serviceName2 = resolveSyncServiceName(task);
8074
- const predecessorServiceName = resolveSyncServiceName();
8075
- if (!serviceName2 || !predecessorServiceName) {
8076
- return;
8077
- }
8078
- return {
8079
- data: {
8080
- task_name: task.remoteRoutineName,
8081
- task_version: 1,
8082
- service_name: serviceName2,
8083
- predecessor_task_name: task.name,
8084
- predecessor_task_version: task.version,
8085
- predecessor_service_name: predecessorServiceName
8086
- },
8087
- __taskName: task.name
8088
- };
8089
- }
8090
- }
8091
- );
8092
- const deputyRelationshipRegistrationGraph = resolveSyncInsertTask(
8093
- this.isCadenzaDBReady,
8094
- "directional_task_graph_map",
8095
- {
8096
- onConflict: {
8097
- target: [
8098
- "task_name",
8099
- "predecessor_task_name",
8100
- "task_version",
8101
- "predecessor_task_version",
8102
- "service_name",
8103
- "predecessor_service_name"
8104
- ],
8105
- action: {
8106
- do: "nothing"
8107
- }
8108
- }
8109
- },
8110
- { concurrency: 30 }
8111
- );
8112
- const recordDeputyRelationshipRegistrationTask = CadenzaService.createMetaTask(
8113
- "Record deputy relationship registration",
8114
- (ctx) => {
8115
- if (!didSyncInsertSucceed(ctx)) {
8116
- return;
8117
- }
8118
- CadenzaService.debounce("meta.sync_controller.synced_resource", {
8119
- delayMs: 3e3
8120
- });
8121
- const task = resolveLocalTaskFromSyncContext(ctx);
8122
- if (!task) {
8123
- return true;
8124
- }
8125
- task.registeredDeputyMap = true;
8126
- }
8127
- );
8128
- wireSyncTaskGraph(
8129
- this.registerDeputyRelationshipTask,
8130
- deputyRelationshipRegistrationGraph,
8131
- recordDeputyRelationshipRegistrationTask
8132
- );
8133
8608
  const hasPendingDirectionalTaskMaps = () => getRegistrableTasks().some((task) => {
8134
- const taskWithDeputyState = task;
8135
8609
  if (task.isHidden || !task.register || !task.registered) {
8136
8610
  return false;
8137
8611
  }
@@ -8147,9 +8621,6 @@ var GraphSyncController = class _GraphSyncController {
8147
8621
  return true;
8148
8622
  }
8149
8623
  }
8150
- if (task.isDeputy && !taskWithDeputyState.signalName && !taskWithDeputyState.registeredDeputyMap) {
8151
- return Boolean(resolveSyncServiceName(task) && resolveSyncServiceName());
8152
- }
8153
8624
  return false;
8154
8625
  });
8155
8626
  const hasPendingSignalTaskMaps = () => getRegistrableTasks().some((task) => {
@@ -8347,6 +8818,18 @@ var GraphSyncController = class _GraphSyncController {
8347
8818
  if (!syncCycleId) {
8348
8819
  return false;
8349
8820
  }
8821
+ const serviceName2 = typeof ctx.__serviceName === "string" ? ctx.__serviceName : resolveSyncServiceName();
8822
+ if (shouldTraceSyncPhase(serviceName2)) {
8823
+ console.log("[CADENZA_SYNC_PHASE_TRACE] map_barrier_check", {
8824
+ serviceName: serviceName2,
8825
+ syncCycleId,
8826
+ directionalTaskMapsSynced: this.directionalTaskMapsSynced,
8827
+ signalTaskMapsSynced: this.signalTaskMapsSynced,
8828
+ intentTaskMapsSynced: this.intentTaskMapsSynced,
8829
+ actorTaskMapsSynced: this.actorTaskMapsSynced,
8830
+ routineTaskMapsSynced: this.routineTaskMapsSynced
8831
+ });
8832
+ }
8350
8833
  if (!this.directionalTaskMapsSynced || !this.signalTaskMapsSynced || !this.intentTaskMapsSynced || !this.actorTaskMapsSynced || !this.routineTaskMapsSynced) {
8351
8834
  return false;
8352
8835
  }
@@ -8414,6 +8897,17 @@ var GraphSyncController = class _GraphSyncController {
8414
8897
  return false;
8415
8898
  }
8416
8899
  const serviceName2 = typeof ctx.__serviceName === "string" ? ctx.__serviceName : resolveSyncServiceName();
8900
+ if (shouldTraceSyncPhase(serviceName2)) {
8901
+ console.log("[CADENZA_SYNC_PHASE_TRACE] primitive_barrier_check", {
8902
+ serviceName: serviceName2,
8903
+ syncCycleId,
8904
+ tasksSynced: this.tasksSynced,
8905
+ signalsSynced: this.signalsSynced,
8906
+ intentsSynced: this.intentsSynced,
8907
+ actorsSynced: this.actorsSynced,
8908
+ routinesSynced: this.routinesSynced
8909
+ });
8910
+ }
8417
8911
  if (!this.tasksSynced || !this.signalsSynced || !this.intentsSynced || !this.actorsSynced || !this.routinesSynced) {
8418
8912
  return false;
8419
8913
  }
@@ -8599,7 +9093,9 @@ var GraphSyncController = class _GraphSyncController {
8599
9093
  "Get all intents for sync",
8600
9094
  (ctx) => ({
8601
9095
  ...ctx,
8602
- intents: Array.from(CadenzaService.inquiryBroker.intents.values())
9096
+ intents: Array.from(CadenzaService.inquiryBroker.intents.values()).filter(
9097
+ (intent) => isRegistrableLocalIntentDefinition(intent)
9098
+ )
8603
9099
  }),
8604
9100
  "Collects local intents for the primitive sync phase.",
8605
9101
  {
@@ -8640,14 +9136,8 @@ var GraphSyncController = class _GraphSyncController {
8640
9136
  iterateTasksForDirectionalTaskMapSyncTask,
8641
9137
  gatherDirectionalTaskMapRegistrationTask
8642
9138
  );
8643
- iterateTasksForDirectionalTaskMapSyncTask.then(
8644
- this.registerTaskMapTask,
8645
- this.registerDeputyRelationshipTask
8646
- );
9139
+ iterateTasksForDirectionalTaskMapSyncTask.then(this.registerTaskMapTask);
8647
9140
  recordTaskMapRegistrationTask.then(gatherDirectionalTaskMapRegistrationTask);
8648
- recordDeputyRelationshipRegistrationTask.then(
8649
- gatherDirectionalTaskMapRegistrationTask
8650
- );
8651
9141
  gatherDirectionalTaskMapRegistrationTask.then(mapPhaseBarrierTask);
8652
9142
  const iterateTasksForSignalTaskMapSyncTask = CadenzaService.registry.doForEachTask.clone();
8653
9143
  startSignalTaskMapSyncTask.then(
@@ -8880,6 +9370,11 @@ function resolveBootstrapEndpoint(options) {
8880
9370
  }
8881
9371
 
8882
9372
  // src/Cadenza.ts
9373
+ var POSTGRES_SETUP_DEBUG_ENABLED = process.env.CADENZA_POSTGRES_SETUP_DEBUG === "1" || process.env.CADENZA_POSTGRES_SETUP_DEBUG === "true";
9374
+ var DEFAULT_DEPUTY_TASK_CONCURRENCY = 50;
9375
+ var DEFAULT_DEPUTY_TASK_TIMEOUT_MS = 12e4;
9376
+ var DEFAULT_DATABASE_PROXY_TASK_CONCURRENCY = 50;
9377
+ var DEFAULT_DATABASE_PROXY_TASK_TIMEOUT_MS = 12e4;
8883
9378
  var CadenzaService = class {
8884
9379
  static replayRegisteredTaskIntentAssociations() {
8885
9380
  for (const task of this.registry.tasks.values()) {
@@ -9064,6 +9559,12 @@ var CadenzaService = class {
9064
9559
  static setMode(mode) {
9065
9560
  import_core5.default.setMode(mode);
9066
9561
  }
9562
+ static hasCompletedBootstrapSync() {
9563
+ return !this.serviceCreated || this.bootstrapSyncCompleted;
9564
+ }
9565
+ static markBootstrapSyncCompleted() {
9566
+ this.bootstrapSyncCompleted = true;
9567
+ }
9067
9568
  /**
9068
9569
  * Emits a signal with the specified data using the associated broker.
9069
9570
  *
@@ -9151,6 +9652,46 @@ var CadenzaService = class {
9151
9652
  responders: statuses
9152
9653
  };
9153
9654
  }
9655
+ static shouldPersistInquiry(inquiry, _context) {
9656
+ return !isMetaIntentName(inquiry);
9657
+ }
9658
+ static splitInquiryPersistenceContext(context) {
9659
+ const businessContext = {};
9660
+ const metadata = context?.__metadata && typeof context.__metadata === "object" ? { ...context.__metadata } : {};
9661
+ for (const [key, value] of Object.entries(context ?? {})) {
9662
+ if (key === "__metadata") {
9663
+ continue;
9664
+ }
9665
+ if (key.startsWith("__")) {
9666
+ metadata[key] = value;
9667
+ continue;
9668
+ }
9669
+ businessContext[key] = value;
9670
+ }
9671
+ return {
9672
+ context: businessContext,
9673
+ metadata
9674
+ };
9675
+ }
9676
+ static buildInquiryPersistenceStartData(inquiryId, inquiry, context, startedAt) {
9677
+ const normalizedTaskVersion = Number(context?.__inquirySourceTaskVersion);
9678
+ const { context: inquiryContext, metadata } = this.splitInquiryPersistenceContext(context);
9679
+ return {
9680
+ uuid: inquiryId,
9681
+ name: inquiry,
9682
+ taskName: typeof context?.__inquirySourceTaskName === "string" ? context.__inquirySourceTaskName : null,
9683
+ taskVersion: Number.isFinite(normalizedTaskVersion) && normalizedTaskVersion > 0 ? normalizedTaskVersion : null,
9684
+ taskExecutionId: typeof context?.__inquirySourceTaskExecutionId === "string" ? context.__inquirySourceTaskExecutionId : null,
9685
+ serviceName: this.serviceRegistry.serviceName,
9686
+ serviceInstanceId: this.serviceRegistry.serviceInstanceId,
9687
+ executionTraceId: typeof (context?.__metadata?.__executionTraceId ?? context?.__executionTraceId) === "string" ? context.__metadata?.__executionTraceId ?? context.__executionTraceId : null,
9688
+ routineExecutionId: typeof context?.__inquirySourceRoutineExecutionId === "string" ? context.__inquirySourceRoutineExecutionId : null,
9689
+ context: inquiryContext,
9690
+ metadata,
9691
+ isMeta: false,
9692
+ sentAt: formatTimestamp(startedAt)
9693
+ };
9694
+ }
9154
9695
  static async inquire(inquiry, context, options = {}) {
9155
9696
  this.bootstrap();
9156
9697
  const hydratedResult = this.consumeHydratedInquiryResult(
@@ -9165,6 +9706,20 @@ var CadenzaService = class {
9165
9706
  descriptor: this.getInquiryResponderDescriptor(task)
9166
9707
  })) : [];
9167
9708
  const isMetaInquiry = isMetaIntentName(inquiry);
9709
+ const startedAt = Date.now();
9710
+ const persistInquiry = this.shouldPersistInquiry(inquiry, context);
9711
+ const logicalInquiryId = persistInquiry ? (0, import_uuid5.v4)() : null;
9712
+ const inquiryStartData = logicalInquiryId ? this.buildInquiryPersistenceStartData(
9713
+ logicalInquiryId,
9714
+ inquiry,
9715
+ context,
9716
+ startedAt
9717
+ ) : null;
9718
+ if (inquiryStartData) {
9719
+ this.emit("meta.inquiry_broker.inquiry_started", {
9720
+ data: inquiryStartData
9721
+ });
9722
+ }
9168
9723
  const responders = allResponders.filter(({ task, descriptor }) => {
9169
9724
  const shouldExecute = shouldExecuteInquiryResponder(inquiry, task.isMeta);
9170
9725
  if (shouldExecute) {
@@ -9199,6 +9754,21 @@ var CadenzaService = class {
9199
9754
  durationMs: 0,
9200
9755
  responders: []
9201
9756
  };
9757
+ if (logicalInquiryId) {
9758
+ this.emit("meta.inquiry_broker.inquiry_completed", {
9759
+ data: {
9760
+ fulfilledAt: formatTimestamp(startedAt),
9761
+ duration: 0,
9762
+ metadata: {
9763
+ ...inquiryStartData?.metadata ?? {},
9764
+ inquiryMeta
9765
+ }
9766
+ },
9767
+ filter: {
9768
+ uuid: logicalInquiryId
9769
+ }
9770
+ });
9771
+ }
9202
9772
  if (options.requireComplete) {
9203
9773
  throw {
9204
9774
  __inquiryMeta: inquiryMeta,
@@ -9214,7 +9784,6 @@ var CadenzaService = class {
9214
9784
  const overallTimeoutMs = options.overallTimeoutMs ?? options.timeout ?? 0;
9215
9785
  const requireComplete = options.requireComplete ?? false;
9216
9786
  const perResponderTimeoutMs = options.perResponderTimeoutMs;
9217
- const startedAt = Date.now();
9218
9787
  const statuses = [];
9219
9788
  const statusByTask = /* @__PURE__ */ new Map();
9220
9789
  for (const responder of responders) {
@@ -9260,10 +9829,26 @@ var CadenzaService = class {
9260
9829
  statuses,
9261
9830
  allResponders.length
9262
9831
  );
9832
+ const finishedAt = Date.now();
9263
9833
  const responseContext = {
9264
9834
  ...mergedContext,
9265
9835
  __inquiryMeta: inquiryMeta
9266
9836
  };
9837
+ if (logicalInquiryId) {
9838
+ this.emit("meta.inquiry_broker.inquiry_completed", {
9839
+ data: {
9840
+ fulfilledAt: formatTimestamp(finishedAt),
9841
+ duration: finishedAt - startedAt,
9842
+ metadata: {
9843
+ ...inquiryStartData?.metadata ?? {},
9844
+ inquiryMeta
9845
+ }
9846
+ },
9847
+ filter: {
9848
+ uuid: logicalInquiryId
9849
+ }
9850
+ });
9851
+ }
9267
9852
  if (requireComplete && (timedOut || inquiryMeta.failed > 0 || inquiryMeta.timedOut > 0 || inquiryMeta.pending > 0)) {
9268
9853
  reject({
9269
9854
  ...responseContext,
@@ -9279,7 +9864,7 @@ var CadenzaService = class {
9279
9864
  }
9280
9865
  for (const responder of responders) {
9281
9866
  const { task, descriptor } = responder;
9282
- const inquiryId = (0, import_uuid5.v4)();
9867
+ const responderInquiryId = (0, import_uuid5.v4)();
9283
9868
  startTimeByTask.set(task, Date.now());
9284
9869
  const resolverTask = this.createEphemeralMetaTask(
9285
9870
  `Resolve inquiry ${inquiry} for ${descriptor.localTaskName}`,
@@ -9307,11 +9892,12 @@ var CadenzaService = class {
9307
9892
  },
9308
9893
  "Resolves distributed inquiry responder result",
9309
9894
  { register: false }
9310
- ).doOn(`meta.node.graph_completed:${inquiryId}`);
9895
+ ).doOn(`meta.node.graph_completed:${responderInquiryId}`);
9311
9896
  resolverTasks.push(resolverTask);
9312
9897
  const executionContext = {
9313
9898
  ...context,
9314
- __routineExecId: inquiryId,
9899
+ ...logicalInquiryId ? { __inquiryId: logicalInquiryId } : {},
9900
+ __routineExecId: responderInquiryId,
9315
9901
  __isInquiry: true
9316
9902
  };
9317
9903
  if (perResponderTimeoutMs !== void 0) {
@@ -9473,8 +10059,8 @@ var CadenzaService = class {
9473
10059
  this.validateName(routineName);
9474
10060
  const name = `${routineName} (Proxy)`;
9475
10061
  options = {
9476
- concurrency: 100,
9477
- timeout: 0,
10062
+ concurrency: DEFAULT_DEPUTY_TASK_CONCURRENCY,
10063
+ timeout: DEFAULT_DEPUTY_TASK_TIMEOUT_MS,
9478
10064
  register: true,
9479
10065
  isUnique: false,
9480
10066
  isMeta: false,
@@ -9581,8 +10167,8 @@ var CadenzaService = class {
9581
10167
  return;
9582
10168
  }
9583
10169
  options = {
9584
- concurrency: 100,
9585
- timeout: 0,
10170
+ concurrency: DEFAULT_DATABASE_PROXY_TASK_CONCURRENCY,
10171
+ timeout: DEFAULT_DATABASE_PROXY_TASK_TIMEOUT_MS,
9586
10172
  register: true,
9587
10173
  isUnique: false,
9588
10174
  isMeta: true,
@@ -9643,8 +10229,8 @@ var CadenzaService = class {
9643
10229
  const description = `Executes a ${operation} on table ${tableName} in ${targetDatabaseServiceName}`;
9644
10230
  const taskName = `${operation.charAt(0).toUpperCase() + operation.slice(1)} ${tableName}`;
9645
10231
  options = {
9646
- concurrency: 100,
9647
- timeout: 0,
10232
+ concurrency: DEFAULT_DATABASE_PROXY_TASK_CONCURRENCY,
10233
+ timeout: DEFAULT_DATABASE_PROXY_TASK_TIMEOUT_MS,
9648
10234
  register: true,
9649
10235
  isUnique: false,
9650
10236
  isMeta: false,
@@ -9788,6 +10374,7 @@ var CadenzaService = class {
9788
10374
  this.validateName(serviceName);
9789
10375
  this.validateServiceName(serviceName);
9790
10376
  const serviceId = options.customServiceId ?? (0, import_uuid5.v4)();
10377
+ this.bootstrapSyncCompleted = false;
9791
10378
  this.serviceRegistry.serviceName = serviceName;
9792
10379
  this.serviceRegistry.serviceInstanceId = serviceId;
9793
10380
  this.serviceRegistry.connectsToCadenzaDB = !!options.cadenzaDB?.connect;
@@ -9823,6 +10410,7 @@ var CadenzaService = class {
9823
10410
  this.createMetaTask(
9824
10411
  "Initialize graph metadata controller after initial sync",
9825
10412
  () => {
10413
+ this.markBootstrapSyncCompleted();
9826
10414
  GraphMetadataController.instance;
9827
10415
  return true;
9828
10416
  },
@@ -9908,14 +10496,14 @@ var CadenzaService = class {
9908
10496
  data: {
9909
10497
  name: serviceName,
9910
10498
  description,
9911
- displayName: options.displayName ?? "",
9912
- isMeta: options.isMeta
10499
+ display_name: options.displayName ?? "",
10500
+ is_meta: options.isMeta
9913
10501
  },
9914
10502
  __registrationData: {
9915
10503
  name: serviceName,
9916
10504
  description,
9917
- displayName: options.displayName ?? "",
9918
- isMeta: options.isMeta
10505
+ display_name: options.displayName ?? "",
10506
+ is_meta: options.isMeta
9919
10507
  },
9920
10508
  __serviceName: serviceName,
9921
10509
  __serviceInstanceId: serviceId,
@@ -10106,10 +10694,35 @@ var CadenzaService = class {
10106
10694
  registration.actorName
10107
10695
  );
10108
10696
  const createServiceTaskName = `Create database service ${name} after ${registration.actorName} setup`;
10697
+ const traceSetupDoneTaskName = `Trace database service ${name} setup done`;
10698
+ if (POSTGRES_SETUP_DEBUG_ENABLED && !this.get(traceSetupDoneTaskName)) {
10699
+ this.createMetaTask(
10700
+ traceSetupDoneTaskName,
10701
+ (ctx) => {
10702
+ console.log("[CADENZA_POSTGRES_SETUP_DEBUG] setup_done_signal_observed", {
10703
+ serviceName: name,
10704
+ actorName: registration.actorName,
10705
+ payloadKeys: Object.keys(ctx ?? {})
10706
+ });
10707
+ return true;
10708
+ },
10709
+ "Debug trace for PostgresActor setup-done signal delivery.",
10710
+ { isHidden: true, register: false }
10711
+ ).doOn(registration.setupDoneSignal);
10712
+ }
10109
10713
  if (!this.get(createServiceTaskName)) {
10110
10714
  this.createMetaTask(
10111
10715
  createServiceTaskName,
10112
10716
  () => {
10717
+ if (POSTGRES_SETUP_DEBUG_ENABLED) {
10718
+ console.log(
10719
+ "[CADENZA_POSTGRES_SETUP_DEBUG] create_database_service_task_fired",
10720
+ {
10721
+ serviceName: name,
10722
+ actorName: registration.actorName
10723
+ }
10724
+ );
10725
+ }
10113
10726
  this.createCadenzaService(name, description, serviceOptions);
10114
10727
  return true;
10115
10728
  },
@@ -10641,6 +11254,7 @@ var CadenzaService = class {
10641
11254
  this.serviceRegistry?.reset();
10642
11255
  this.isBootstrapped = false;
10643
11256
  this.serviceCreated = false;
11257
+ this.bootstrapSyncCompleted = false;
10644
11258
  this.defaultDatabaseServiceName = null;
10645
11259
  this.warnedInvalidMetaIntentResponderKeys = /* @__PURE__ */ new Set();
10646
11260
  this.hydratedInquiryResults = /* @__PURE__ */ new Map();
@@ -10649,6 +11263,7 @@ var CadenzaService = class {
10649
11263
  };
10650
11264
  CadenzaService.isBootstrapped = false;
10651
11265
  CadenzaService.serviceCreated = false;
11266
+ CadenzaService.bootstrapSyncCompleted = false;
10652
11267
  CadenzaService.defaultDatabaseServiceName = null;
10653
11268
  CadenzaService.warnedInvalidMetaIntentResponderKeys = /* @__PURE__ */ new Set();
10654
11269
  CadenzaService.hydratedInquiryResults = /* @__PURE__ */ new Map();