@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.
- package/dist/browser/index.js +831 -216
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/index.mjs +831 -216
- package/dist/browser/index.mjs.map +1 -1
- package/dist/index.d.mts +6 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +990 -236
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +990 -236
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -3
package/dist/browser/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
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
{
|
|
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: !!
|
|
2468
|
-
dataKeys:
|
|
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
|
-
|
|
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
|
|
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
|
-
{
|
|
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(
|
|
4198
|
-
|
|
4199
|
-
|
|
4200
|
-
|
|
4201
|
-
|
|
4202
|
-
|
|
4203
|
-
|
|
4204
|
-
|
|
4205
|
-
|
|
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
|
-
|
|
6455
|
-
|
|
6456
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
7037
|
-
|
|
7038
|
-
|
|
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
|
-
|
|
7339
|
-
|
|
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
|
-
|
|
7403
|
-
|
|
7404
|
-
|
|
7405
|
-
|
|
7406
|
-
|
|
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
|
|
7465
|
-
|
|
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
|
-
|
|
7469
|
-
|
|
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
|
-
|
|
7559
|
-
|
|
7560
|
-
|
|
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
|
-
|
|
7564
|
-
|
|
7565
|
-
|
|
7566
|
-
|
|
7567
|
-
|
|
7568
|
-
|
|
7569
|
-
|
|
7570
|
-
|
|
7571
|
-
|
|
7572
|
-
|
|
7573
|
-
|
|
7574
|
-
|
|
7575
|
-
|
|
7576
|
-
|
|
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
|
-
|
|
7808
|
-
isGlobal,
|
|
7809
|
-
|
|
7810
|
-
|
|
7811
|
-
|
|
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
|
-
|
|
7950
|
-
|
|
7951
|
-
|
|
7952
|
-
|
|
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
|
-
|
|
7959
|
-
|
|
7960
|
-
|
|
7961
|
-
|
|
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)
|
|
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
|
-
|
|
8015
|
-
|
|
8016
|
-
|
|
8017
|
-
|
|
8018
|
-
|
|
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
|
|
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:${
|
|
9895
|
+
).doOn(`meta.node.graph_completed:${responderInquiryId}`);
|
|
9311
9896
|
resolverTasks.push(resolverTask);
|
|
9312
9897
|
const executionContext = {
|
|
9313
9898
|
...context,
|
|
9314
|
-
|
|
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:
|
|
9477
|
-
timeout:
|
|
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:
|
|
9585
|
-
timeout:
|
|
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:
|
|
9647
|
-
timeout:
|
|
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
|
-
|
|
9912
|
-
|
|
10499
|
+
display_name: options.displayName ?? "",
|
|
10500
|
+
is_meta: options.isMeta
|
|
9913
10501
|
},
|
|
9914
10502
|
__registrationData: {
|
|
9915
10503
|
name: serviceName,
|
|
9916
10504
|
description,
|
|
9917
|
-
|
|
9918
|
-
|
|
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();
|