n8n 2.40.4 → 2.40.6
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/build.tsbuildinfo +1 -1
- package/dist/expression-observability/expression-observability.provider.d.ts +3 -3
- package/dist/expression-observability/expression-observability.provider.js +6 -8
- package/dist/expression-observability/expression-observability.provider.js.map +1 -1
- package/dist/modules/agents/agent-run-tracing.service.d.ts +3 -1
- package/dist/modules/agents/agent-run-tracing.service.js +5 -4
- package/dist/modules/agents/agent-run-tracing.service.js.map +1 -1
- package/dist/modules/agents/builder/get-resource-locator-options.tool.d.ts +2 -2
- package/dist/modules/instance-reporting.ee/database/repositories/instance-monitoring-report.repository.d.ts +1 -1
- package/dist/modules/instance-reporting.ee/database/repositories/instance-monitoring-report.repository.js +3 -5
- package/dist/modules/instance-reporting.ee/database/repositories/instance-monitoring-report.repository.js.map +1 -1
- package/dist/modules/instance-reporting.ee/instance-reporting-scheduler.service.d.ts +2 -0
- package/dist/modules/instance-reporting.ee/instance-reporting-scheduler.service.js +25 -2
- package/dist/modules/instance-reporting.ee/instance-reporting-scheduler.service.js.map +1 -1
- package/dist/modules/instance-reporting.ee/instance-reporting.config.js.map +1 -1
- package/dist/modules/instance-reporting.ee/instance-reporting.module.d.ts +2 -0
- package/dist/modules/instance-reporting.ee/instance-reporting.module.js +17 -4
- package/dist/modules/instance-reporting.ee/instance-reporting.module.js.map +1 -1
- package/dist/modules/instance-reporting.ee/instance-reporting.service.d.ts +4 -2
- package/dist/modules/instance-reporting.ee/instance-reporting.service.js +21 -11
- package/dist/modules/instance-reporting.ee/instance-reporting.service.js.map +1 -1
- package/dist/modules/otel/execution-level-tracer.d.ts +4 -3
- package/dist/modules/otel/execution-level-tracer.js +15 -12
- package/dist/modules/otel/execution-level-tracer.js.map +1 -1
- package/dist/modules/otel/otel-lifecycle-handler.js +0 -1
- package/dist/modules/otel/otel-lifecycle-handler.js.map +1 -1
- package/dist/modules/otel/otel.service.d.ts +9 -2
- package/dist/modules/otel/otel.service.js +53 -27
- package/dist/modules/otel/otel.service.js.map +1 -1
- package/package.json +9 -10
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { Logger } from '@n8n/backend-common';
|
|
2
2
|
import { ExpressionEngineConfig, GlobalConfig } from '@n8n/config';
|
|
3
3
|
import type { LogsAPI, MetricsAPI, ObservabilityProvider, TracesAPI } from '@n8n/expression-runtime';
|
|
4
|
+
import { OtelService } from '../modules/otel/otel.service';
|
|
4
5
|
export declare class ExpressionObservabilityProvider implements ObservabilityProvider {
|
|
5
6
|
private readonly config;
|
|
6
7
|
private readonly logger;
|
|
8
|
+
private readonly otelService;
|
|
7
9
|
readonly metrics: MetricsAPI;
|
|
8
10
|
readonly traces: TracesAPI;
|
|
9
11
|
readonly logs: LogsAPI;
|
|
10
12
|
private readonly scopedLogger;
|
|
11
13
|
private readonly prefix;
|
|
12
|
-
private tracer?;
|
|
13
14
|
private readonly metricDefs;
|
|
14
|
-
constructor(config: ExpressionEngineConfig, logger: Logger, globalConfig: GlobalConfig);
|
|
15
|
+
constructor(config: ExpressionEngineConfig, logger: Logger, globalConfig: GlobalConfig, otelService: OtelService);
|
|
15
16
|
private getOrRegisterMetric;
|
|
16
17
|
private getMetricDef;
|
|
17
18
|
private counter;
|
|
@@ -20,5 +21,4 @@ export declare class ExpressionObservabilityProvider implements ObservabilityPro
|
|
|
20
21
|
private maybeRecordSpan;
|
|
21
22
|
private tailSample;
|
|
22
23
|
private startSpan;
|
|
23
|
-
private getTracer;
|
|
24
24
|
}
|
|
@@ -22,10 +22,12 @@ const n8n_workflow_1 = require("n8n-workflow");
|
|
|
22
22
|
const prom_client_1 = __importDefault(require("prom-client"));
|
|
23
23
|
const expression_observability_constants_1 = require("./expression-observability.constants");
|
|
24
24
|
const expression_observability_formatters_1 = require("./expression-observability.formatters");
|
|
25
|
+
const otel_service_1 = require("../modules/otel/otel.service");
|
|
25
26
|
let ExpressionObservabilityProvider = class ExpressionObservabilityProvider {
|
|
26
|
-
constructor(config, logger, globalConfig) {
|
|
27
|
+
constructor(config, logger, globalConfig, otelService) {
|
|
27
28
|
this.config = config;
|
|
28
29
|
this.logger = logger;
|
|
30
|
+
this.otelService = otelService;
|
|
29
31
|
this.metricDefs = new Map(Object.values(expression_runtime_1.EXPRESSION_METRICS).map((def) => [def.name, def]));
|
|
30
32
|
this.scopedLogger = this.logger.scoped('expression-engine');
|
|
31
33
|
if (!this.config.observabilityEnabled ||
|
|
@@ -137,7 +139,7 @@ let ExpressionObservabilityProvider = class ExpressionObservabilityProvider {
|
|
|
137
139
|
: durationSeconds > slowThresholdSeconds
|
|
138
140
|
? 'slow'
|
|
139
141
|
: 'healthy';
|
|
140
|
-
const tracer = this.getTracer();
|
|
142
|
+
const tracer = this.otelService.getTracer(expression_observability_constants_1.TRACER_NAME);
|
|
141
143
|
const errorType = tags?.type && tags.type !== 'none' ? tags.type : undefined;
|
|
142
144
|
const span = tracer.startSpan('expression.evaluate', {
|
|
143
145
|
attributes: {
|
|
@@ -164,7 +166,7 @@ let ExpressionObservabilityProvider = class ExpressionObservabilityProvider {
|
|
|
164
166
|
startSpan(name, attributes) {
|
|
165
167
|
if (!this.config.tracesEnabled)
|
|
166
168
|
return expression_runtime_1.NoOpProvider.traces.startSpan(name, attributes);
|
|
167
|
-
const tracer = this.getTracer();
|
|
169
|
+
const tracer = this.otelService.getTracer(expression_observability_constants_1.TRACER_NAME);
|
|
168
170
|
const otelSpan = tracer.startSpan(name, {
|
|
169
171
|
attributes: (0, expression_observability_formatters_1.normalizeAttributes)(attributes),
|
|
170
172
|
});
|
|
@@ -181,14 +183,10 @@ let ExpressionObservabilityProvider = class ExpressionObservabilityProvider {
|
|
|
181
183
|
end: () => otelSpan.end(),
|
|
182
184
|
};
|
|
183
185
|
}
|
|
184
|
-
getTracer() {
|
|
185
|
-
this.tracer ??= api_1.trace.getTracer(expression_observability_constants_1.TRACER_NAME);
|
|
186
|
-
return this.tracer;
|
|
187
|
-
}
|
|
188
186
|
};
|
|
189
187
|
exports.ExpressionObservabilityProvider = ExpressionObservabilityProvider;
|
|
190
188
|
exports.ExpressionObservabilityProvider = ExpressionObservabilityProvider = __decorate([
|
|
191
189
|
(0, di_1.Service)(),
|
|
192
|
-
__metadata("design:paramtypes", [config_1.ExpressionEngineConfig, backend_common_1.Logger, config_1.GlobalConfig])
|
|
190
|
+
__metadata("design:paramtypes", [config_1.ExpressionEngineConfig, backend_common_1.Logger, config_1.GlobalConfig, otel_service_1.OtelService])
|
|
193
191
|
], ExpressionObservabilityProvider);
|
|
194
192
|
//# sourceMappingURL=expression-observability.provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression-observability.provider.js","sourceRoot":"","sources":["../../src/expression-observability/expression-observability.provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,wDAA6C;AAC7C,wCAAmE;AACnE,gCAAkC;AASlC,gEAA2E;AAC3E,
|
|
1
|
+
{"version":3,"file":"expression-observability.provider.js","sourceRoot":"","sources":["../../src/expression-observability/expression-observability.provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { BuiltTelemetry } from '@n8n/agents';
|
|
2
2
|
import { AgentsConfig } from '@n8n/config';
|
|
3
|
+
import { OtelService } from '../../modules/otel/otel.service';
|
|
3
4
|
interface AgentRunTracingMetadataBase {
|
|
4
5
|
agentId: string;
|
|
5
6
|
projectId: string;
|
|
@@ -20,7 +21,8 @@ interface NonWorkflowAgentRunTracingMetadata extends AgentRunTracingMetadataBase
|
|
|
20
21
|
export type AgentRunTracingMetadata = WorkflowAgentRunTracingMetadata | NonWorkflowAgentRunTracingMetadata;
|
|
21
22
|
export declare class AgentRunTracingService {
|
|
22
23
|
private readonly agentsConfig;
|
|
23
|
-
|
|
24
|
+
private readonly otelService;
|
|
25
|
+
constructor(agentsConfig: AgentsConfig, otelService: OtelService);
|
|
24
26
|
get enabled(): boolean;
|
|
25
27
|
build(metadata: AgentRunTracingMetadata): Promise<BuiltTelemetry | undefined>;
|
|
26
28
|
}
|
|
@@ -14,14 +14,15 @@ exports.modelIdFromSnapshot = modelIdFromSnapshot;
|
|
|
14
14
|
const agents_1 = require("@n8n/agents");
|
|
15
15
|
const config_1 = require("@n8n/config");
|
|
16
16
|
const di_1 = require("@n8n/di");
|
|
17
|
-
const
|
|
17
|
+
const otel_service_1 = require("../../modules/otel/otel.service");
|
|
18
18
|
const AGENTS_TRACER_NAME = '@n8n/agents';
|
|
19
19
|
function isWorkflowTracingMetadata(metadata) {
|
|
20
20
|
return metadata.source === 'workflow';
|
|
21
21
|
}
|
|
22
22
|
let AgentRunTracingService = class AgentRunTracingService {
|
|
23
|
-
constructor(agentsConfig) {
|
|
23
|
+
constructor(agentsConfig, otelService) {
|
|
24
24
|
this.agentsConfig = agentsConfig;
|
|
25
|
+
this.otelService = otelService;
|
|
25
26
|
}
|
|
26
27
|
get enabled() {
|
|
27
28
|
return this.agentsConfig.tracingEnabled;
|
|
@@ -45,7 +46,7 @@ let AgentRunTracingService = class AgentRunTracingService {
|
|
|
45
46
|
: {}),
|
|
46
47
|
};
|
|
47
48
|
const built = await new agents_1.Telemetry()
|
|
48
|
-
.tracer(
|
|
49
|
+
.tracer(this.otelService.getTracer(AGENTS_TRACER_NAME))
|
|
49
50
|
.metadata(attributes)
|
|
50
51
|
.recordInputs(this.agentsConfig.tracingRecordInputs)
|
|
51
52
|
.recordOutputs(this.agentsConfig.tracingRecordOutputs)
|
|
@@ -58,7 +59,7 @@ let AgentRunTracingService = class AgentRunTracingService {
|
|
|
58
59
|
exports.AgentRunTracingService = AgentRunTracingService;
|
|
59
60
|
exports.AgentRunTracingService = AgentRunTracingService = __decorate([
|
|
60
61
|
(0, di_1.Service)(),
|
|
61
|
-
__metadata("design:paramtypes", [config_1.AgentsConfig])
|
|
62
|
+
__metadata("design:paramtypes", [config_1.AgentsConfig, otel_service_1.OtelService])
|
|
62
63
|
], AgentRunTracingService);
|
|
63
64
|
function modelIdFromSnapshot(model) {
|
|
64
65
|
return model.provider && model.name ? `${model.provider}/${model.name}` : undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-run-tracing.service.js","sourceRoot":"","sources":["../../../src/modules/agents/agent-run-tracing.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AACA,wCAAwC;AACxC,wCAA2C;AAC3C,gCAAkC;
|
|
1
|
+
{"version":3,"file":"agent-run-tracing.service.js","sourceRoot":"","sources":["../../../src/modules/agents/agent-run-tracing.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AACA,wCAAwC;AACxC,wCAA2C;AAC3C,gCAAkC;AAElC,8DAA0D;AAE1D,MAAM,kBAAkB,GAAG,aAAa,CAAC;AAsCzC,SAAS,yBAAyB,CACjC,QAAiC;IAEjC,OAAO,QAAQ,CAAC,MAAM,KAAK,UAAU,CAAC;AACvC,CAAC;AAQM,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IAClC,YACkB,YAA0B,EAC1B,WAAwB;4BADxB,YAAY;2BACZ,WAAW;IAC1B,CAAC;IAGJ,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;IACzC,CAAC;IAUD,KAAK,CAAC,KAAK,CAAC,QAAiC;QAC5C,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc;YAAE,OAAO,SAAS,CAAC;QAExD,MAAM,UAAU,GAAmC;YAClD,QAAQ,EAAE,QAAQ,CAAC,OAAO;YAC1B,UAAU,EAAE,QAAQ,CAAC,SAAS;YAC9B,SAAS,EAAE,QAAQ,CAAC,QAAQ;YAC5B,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,yBAAyB,CAAC,QAAQ,CAAC;gBACtC,CAAC,CAAC;oBACA,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACvE,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACxD;gBACF,CAAC,CAAC,EAAE,CAAC;SACN,CAAC;QAEF,MAAM,KAAK,GAAG,MAAM,IAAI,kBAAS,EAAE;aACjC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;aACtD,QAAQ,CAAC,UAAU,CAAC;aACpB,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC;aACnD,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC;aACrD,KAAK,EAAE,CAAC;QAQV,OAAO,yBAAyB,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,gBAAgB;YACtE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE;YACnC,CAAC,CAAC,KAAK,CAAC;IACV,CAAC;CACD,CAAA;;iCAvDY,sBAAsB;IADlC,IAAA,YAAO,GAAE;qCAGuB,qBAAY,EACb,0BAAW;GAH9B,sBAAsB,CAuDlC;AAGD,6BAAoC,KAGnC;IACA,OAAO,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACrF,CAAC"}
|
|
@@ -69,9 +69,9 @@ export declare function resolveResourceLocatorOptions({ nodeType, nodeTypeVersio
|
|
|
69
69
|
message: string;
|
|
70
70
|
credentialSlots: import("@n8n/ai-utilities/node-catalog").RequiredNodeCredentialSlot[];
|
|
71
71
|
} | {
|
|
72
|
+
dynamicParameters?: undefined;
|
|
72
73
|
code?: undefined;
|
|
73
74
|
message?: undefined;
|
|
74
|
-
dynamicParameters?: undefined;
|
|
75
75
|
credentialSlots?: undefined;
|
|
76
76
|
ok: boolean;
|
|
77
77
|
kind: "resourceLocator";
|
|
@@ -87,9 +87,9 @@ export declare function resolveResourceLocatorOptions({ nodeType, nodeTypeVersio
|
|
|
87
87
|
paginationToken: string | undefined;
|
|
88
88
|
builderHint?: string | undefined;
|
|
89
89
|
} | {
|
|
90
|
+
dynamicParameters?: undefined;
|
|
90
91
|
code?: undefined;
|
|
91
92
|
message?: undefined;
|
|
92
|
-
dynamicParameters?: undefined;
|
|
93
93
|
credentialSlots?: undefined;
|
|
94
94
|
ok: boolean;
|
|
95
95
|
kind: "loadOptionsMethod" | "loadOptionsRouting";
|
|
@@ -3,7 +3,7 @@ import type { InstanceReportDataPoint } from '../entities/instance-monitoring-re
|
|
|
3
3
|
import { InstanceMonitoringReport } from '../entities/instance-monitoring-report';
|
|
4
4
|
export declare class InstanceMonitoringReportRepository extends Repository<InstanceMonitoringReport> {
|
|
5
5
|
constructor(dataSource: DataSource);
|
|
6
|
-
|
|
6
|
+
findPending(): Promise<InstanceMonitoringReport | null>;
|
|
7
7
|
hasSettledToday(now: Date): Promise<boolean>;
|
|
8
8
|
createPending(dataPoints: InstanceReportDataPoint[]): Promise<InstanceMonitoringReport>;
|
|
9
9
|
findLastCoveredDay(): Promise<string | null>;
|
|
@@ -18,11 +18,9 @@ let InstanceMonitoringReportRepository = class InstanceMonitoringReportRepositor
|
|
|
18
18
|
constructor(dataSource) {
|
|
19
19
|
super(instance_monitoring_report_1.InstanceMonitoringReport, dataSource.manager);
|
|
20
20
|
}
|
|
21
|
-
async
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
order: { createdAt: 'DESC' },
|
|
25
|
-
});
|
|
21
|
+
async findPending() {
|
|
22
|
+
const [latest] = await this.find({ order: { createdAt: 'DESC', id: 'DESC' }, take: 1 });
|
|
23
|
+
return latest?.status === 'pending' ? latest : null;
|
|
26
24
|
}
|
|
27
25
|
async hasSettledToday(now) {
|
|
28
26
|
return await this.existsBy({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instance-monitoring-report.repository.js","sourceRoot":"","sources":["../../../../../src/modules/instance-reporting.ee/database/repositories/instance-monitoring-report.repository.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gCAAkC;AAClC,0CAAoF;AACpF,+BAAkC;AAGlC,uFAAkF;AAG3E,IAAM,kCAAkC,GAAxC,MAAM,kCAAmC,SAAQ,oBAAoC;IAC3F,YAAY,UAAsB;QACjC,KAAK,CAAC,qDAAwB,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IACrD,CAAC;
|
|
1
|
+
{"version":3,"file":"instance-monitoring-report.repository.js","sourceRoot":"","sources":["../../../../../src/modules/instance-reporting.ee/database/repositories/instance-monitoring-report.repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -63,13 +63,13 @@ let InstanceReportingScheduler = class InstanceReportingScheduler {
|
|
|
63
63
|
async tick() {
|
|
64
64
|
try {
|
|
65
65
|
const reportTime = await this.settingsService.getReportTime();
|
|
66
|
-
const waitMs = await this.reportingService.msUntilRetryAllowed(new Date());
|
|
66
|
+
const waitMs = Math.min(await this.reportingService.msUntilRetryAllowed(new Date()), await this.msUntilNextSlot(reportTime));
|
|
67
67
|
if (waitMs > 0) {
|
|
68
68
|
this.scheduleNext(waitMs);
|
|
69
69
|
return;
|
|
70
70
|
}
|
|
71
71
|
if ((await this.reportIfDue(reportTime)) === 'failed') {
|
|
72
|
-
this.scheduleNext(instance_reporting_service_1.RETRY_DELAY_MS);
|
|
72
|
+
this.scheduleNext(Math.min(instance_reporting_service_1.RETRY_DELAY_MS, await this.msUntilNextSlot(reportTime)));
|
|
73
73
|
return;
|
|
74
74
|
}
|
|
75
75
|
this.scheduleNext(msUntilNext(reportTime, new Date()));
|
|
@@ -81,10 +81,29 @@ let InstanceReportingScheduler = class InstanceReportingScheduler {
|
|
|
81
81
|
}
|
|
82
82
|
async reportIfDue(reportTime) {
|
|
83
83
|
const now = new Date();
|
|
84
|
+
const pending = await this.reportRepository.findPending();
|
|
85
|
+
if (pending) {
|
|
86
|
+
if (pendingIsStale(pending, reportTime, now)) {
|
|
87
|
+
await this.reportingService.skip(pending.id, pending.attempts, 'slot-passed');
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
return await this.trySend();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
84
93
|
if (now.getTime() < slotOn(reportTime, now))
|
|
85
94
|
return 'skipped';
|
|
86
95
|
if (await this.reportRepository.hasSettledToday(now))
|
|
87
96
|
return 'skipped';
|
|
97
|
+
return await this.trySend();
|
|
98
|
+
}
|
|
99
|
+
async msUntilNextSlot(reportTime) {
|
|
100
|
+
const pending = await this.reportRepository.findPending();
|
|
101
|
+
if (!pending)
|
|
102
|
+
return Number.POSITIVE_INFINITY;
|
|
103
|
+
const nextSlot = slotOn(reportTime, pending.createdAt) + MINUTES_PER_DAY * constants_1.Time.minutes.toMilliseconds;
|
|
104
|
+
return nextSlot - Date.now();
|
|
105
|
+
}
|
|
106
|
+
async trySend() {
|
|
88
107
|
try {
|
|
89
108
|
await this.reportingService.sendReport();
|
|
90
109
|
return 'sent';
|
|
@@ -123,6 +142,10 @@ exports.InstanceReportingScheduler = InstanceReportingScheduler = __decorate([
|
|
|
123
142
|
(0, di_1.Service)(),
|
|
124
143
|
__metadata("design:paramtypes", [instance_reporting_service_1.InstanceReportingService, instance_monitoring_report_repository_1.InstanceMonitoringReportRepository, instance_reporting_settings_service_1.InstanceReportingSettingsService, n8n_core_1.InstanceSettings, event_service_1.EventService, backend_common_1.Logger])
|
|
125
144
|
], InstanceReportingScheduler);
|
|
145
|
+
function pendingIsStale(report, reportTime, now) {
|
|
146
|
+
const nextSlot = slotOn(reportTime, report.createdAt) + MINUTES_PER_DAY * constants_1.Time.minutes.toMilliseconds;
|
|
147
|
+
return now.getTime() >= nextSlot;
|
|
148
|
+
}
|
|
126
149
|
function slotOn(reportTime, now) {
|
|
127
150
|
const [hour, minute] = reportTime.split(':').map(Number);
|
|
128
151
|
return Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), hour, minute, 0, 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instance-reporting-scheduler.service.js","sourceRoot":"","sources":["../../../src/modules/instance-reporting.ee/instance-reporting-scheduler.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wDAA6C;AAC7C,8CAAsC;AACtC,gDAAiF;AACjF,gCAAkC;AAClC,uCAA4C;AAC5C,6CAAqC;AAErC,0DAAsD;
|
|
1
|
+
{"version":3,"file":"instance-reporting-scheduler.service.js","sourceRoot":"","sources":["../../../src/modules/instance-reporting.ee/instance-reporting-scheduler.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instance-reporting.config.js","sourceRoot":"","sources":["../../../src/modules/instance-reporting.ee/instance-reporting.config.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wCAA0C;AAGnC,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAA7B;QAKN,2BAAsB,GAAW,EAAE,CAAC;QASpC,6BAAwB,GAAW,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"instance-reporting.config.js","sourceRoot":"","sources":["../../../src/modules/instance-reporting.ee/instance-reporting.config.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wCAA0C;AAGnC,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAA7B;QAKN,2BAAsB,GAAW,EAAE,CAAC;QASpC,6BAAwB,GAAW,EAAE,CAAC;QAStC,+BAA0B,GAAW,EAAE,CAAC;IACzC,CAAC;CAAA,CAAA;;AAnBA;IADC,IAAA,YAAG,EAAC,8BAA8B,CAAC;;uEACA;AASpC;IADC,IAAA,YAAG,EAAC,iCAAiC,CAAC;;yEACD;AAStC;IADC,IAAA,YAAG,EAAC,mCAAmC,CAAC;;2EACD;kCAvB5B,uBAAuB;IADnC,eAAM;GACM,uBAAuB,CAwBnC"}
|
|
@@ -10,4 +10,6 @@ export declare class InstanceReportingModule implements ModuleInterface {
|
|
|
10
10
|
}>;
|
|
11
11
|
entities(): Promise<typeof import("./database/entities/instance-monitoring-report.js").InstanceMonitoringReport[]>;
|
|
12
12
|
private isConfigured;
|
|
13
|
+
private hasReceiver;
|
|
14
|
+
private hasCredential;
|
|
13
15
|
}
|
|
@@ -17,10 +17,13 @@ let InstanceReportingModule = class InstanceReportingModule {
|
|
|
17
17
|
if (di_1.Container.get(backend_common_1.ModulesConfig).disabledModules.includes('insights')) {
|
|
18
18
|
throw new n8n_workflow_1.UserError('The `instance-reporting` module requires the `insights` module, but it is listed in N8N_DISABLED_MODULES. Remove `insights` from N8N_DISABLED_MODULES or remove `instance-reporting` from N8N_ENABLED_MODULES.');
|
|
19
19
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
const logger = di_1.Container.get(backend_common_1.Logger).scoped('instance-reporting');
|
|
21
|
+
if (!(await this.hasReceiver())) {
|
|
22
|
+
logger.warn('Instance reporting is enabled but N8N_INSTANCE_REPORTING_BASE_URL is unset, so no reports will be sent');
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (!(await this.hasCredential())) {
|
|
26
|
+
logger.warn('Instance reporting is enabled but this instance has no license certificate, so no reports will be sent. The receiver accepts reports only from licensed instances. Set N8N_LICENSE_CERT, activate a license, or set N8N_INSTANCE_REPORTING_AUTH_TOKEN.');
|
|
24
27
|
return;
|
|
25
28
|
}
|
|
26
29
|
const { InstanceReportingScheduler } = await import('./instance-reporting-scheduler.service.js');
|
|
@@ -38,9 +41,19 @@ let InstanceReportingModule = class InstanceReportingModule {
|
|
|
38
41
|
return [InstanceMonitoringReport];
|
|
39
42
|
}
|
|
40
43
|
async isConfigured() {
|
|
44
|
+
return (await this.hasReceiver()) && (await this.hasCredential());
|
|
45
|
+
}
|
|
46
|
+
async hasReceiver() {
|
|
41
47
|
const { InstanceReportingConfig } = await import('./instance-reporting.config.js');
|
|
42
48
|
return di_1.Container.get(InstanceReportingConfig).instanceReportingBaseUrl !== '';
|
|
43
49
|
}
|
|
50
|
+
async hasCredential() {
|
|
51
|
+
const { InstanceReportingConfig } = await import('./instance-reporting.config.js');
|
|
52
|
+
if (di_1.Container.get(InstanceReportingConfig).instanceReportingAuthToken !== '')
|
|
53
|
+
return true;
|
|
54
|
+
const { License } = await import('../../license.js');
|
|
55
|
+
return (await di_1.Container.get(License).loadCertStr()) !== '';
|
|
56
|
+
}
|
|
44
57
|
};
|
|
45
58
|
exports.InstanceReportingModule = InstanceReportingModule;
|
|
46
59
|
exports.InstanceReportingModule = InstanceReportingModule = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instance-reporting.module.js","sourceRoot":"","sources":["../../../src/modules/instance-reporting.ee/instance-reporting.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,wDAA4D;AAE5D,gDAAgD;AAChD,gCAAoC;AACpC,+CAAyC;AAelC,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IACnC,KAAK,CAAC,IAAI;QAGT,MAAM,MAAM,CAAC,oCAAoC,CAAC,CAAC;QAGnD,IAAI,cAAS,CAAC,GAAG,CAAC,8BAAa,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACvE,MAAM,IAAI,wBAAS,CAClB,gNAAgN,CAChN,CAAC;QACH,CAAC;QAED,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"instance-reporting.module.js","sourceRoot":"","sources":["../../../src/modules/instance-reporting.ee/instance-reporting.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,wDAA4D;AAE5D,gDAAgD;AAChD,gCAAoC;AACpC,+CAAyC;AAelC,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IACnC,KAAK,CAAC,IAAI;QAGT,MAAM,MAAM,CAAC,oCAAoC,CAAC,CAAC;QAGnD,IAAI,cAAS,CAAC,GAAG,CAAC,8BAAa,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACvE,MAAM,IAAI,wBAAS,CAClB,gNAAgN,CAChN,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,cAAS,CAAC,GAAG,CAAC,uBAAM,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAElE,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CACV,wGAAwG,CACxG,CAAC;YACF,OAAO;QACR,CAAC;QAED,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CACV,wPAAwP,CACxP,CAAC;YACF,OAAO;QACR,CAAC;QAED,MAAM,EAAE,0BAA0B,EAAE,GAAG,MAAM,MAAM,CAClD,2CAA2C,CAC3C,CAAC;QAEF,cAAS,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,IAAI,EAAE,CAAC;IAClD,CAAC;IAWD,KAAK,CAAC,QAAQ;QACb,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAE5D,MAAM,EAAE,gCAAgC,EAAE,GAAG,MAAM,MAAM,CACxD,0CAA0C,CAC1C,CAAC;QAEF,MAAM,UAAU,GAAG,MAAM,cAAS,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,aAAa,EAAE,CAAC;QAEzF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,QAAQ;QACb,MAAM,EAAE,wBAAwB,EAAE,GAAG,MAAM,MAAM,CAChD,mDAAmD,CACnD,CAAC;QAEF,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACnC,CAAC;IAGO,KAAK,CAAC,YAAY;QACzB,OAAO,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IACnE,CAAC;IAEO,KAAK,CAAC,WAAW;QACxB,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;QAEnF,OAAO,cAAS,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,wBAAwB,KAAK,EAAE,CAAC;IAC/E,CAAC;IAOO,KAAK,CAAC,aAAa;QAC1B,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;QACnF,IAAI,cAAS,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,0BAA0B,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC;QAE1F,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;QAEjD,OAAO,CAAC,MAAM,cAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC;IAC5D,CAAC;CACD,CAAA;;kCAzFY,uBAAuB;IADnC,IAAA,0BAAa,EAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,aAAa,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;GAC1D,uBAAuB,CAyFnC"}
|
|
@@ -3,6 +3,7 @@ import { OutboundHttp } from '@n8n/backend-network';
|
|
|
3
3
|
import { LicenseMetricsRepository } from '@n8n/db';
|
|
4
4
|
import { InstanceSettings } from 'n8n-core';
|
|
5
5
|
import { EventService } from '../../events/event.service';
|
|
6
|
+
import { License } from '../../license';
|
|
6
7
|
import { InsightsService } from '../../modules/insights/insights.service';
|
|
7
8
|
import { OwnershipService } from '../../services/ownership.service';
|
|
8
9
|
import { InstanceMonitoringReportRepository } from './database/repositories/instance-monitoring-report.repository';
|
|
@@ -15,12 +16,13 @@ export declare class InstanceReportingService {
|
|
|
15
16
|
private readonly instanceSettings;
|
|
16
17
|
private readonly ownershipService;
|
|
17
18
|
private readonly licenseMetricsRepository;
|
|
19
|
+
private readonly license;
|
|
18
20
|
private readonly logger;
|
|
19
21
|
private readonly eventService;
|
|
20
22
|
private readonly http;
|
|
21
|
-
constructor(config: InstanceReportingConfig, reportRepository: InstanceMonitoringReportRepository, insightsService: InsightsService, instanceSettings: InstanceSettings, ownershipService: OwnershipService, licenseMetricsRepository: LicenseMetricsRepository, logger: Logger, eventService: EventService, outboundHttp: OutboundHttp);
|
|
23
|
+
constructor(config: InstanceReportingConfig, reportRepository: InstanceMonitoringReportRepository, insightsService: InsightsService, instanceSettings: InstanceSettings, ownershipService: OwnershipService, licenseMetricsRepository: LicenseMetricsRepository, license: License, logger: Logger, eventService: EventService, outboundHttp: OutboundHttp);
|
|
22
24
|
sendReport(): Promise<void>;
|
|
23
|
-
|
|
25
|
+
skip(id: string, attempts: number, reason: 'max-retries' | 'slot-passed'): Promise<void>;
|
|
24
26
|
msUntilRetryAllowed(now: Date): Promise<number>;
|
|
25
27
|
private missedDays;
|
|
26
28
|
private collectDataPoints;
|
|
@@ -19,6 +19,7 @@ const n8n_core_1 = require("n8n-core");
|
|
|
19
19
|
const n8n_workflow_1 = require("n8n-workflow");
|
|
20
20
|
const constants_2 = require("../../constants");
|
|
21
21
|
const event_service_1 = require("../../events/event.service");
|
|
22
|
+
const license_1 = require("../../license");
|
|
22
23
|
const insights_service_1 = require("../../modules/insights/insights.service");
|
|
23
24
|
const ownership_service_1 = require("../../services/ownership.service");
|
|
24
25
|
const instance_monitoring_report_repository_1 = require("./database/repositories/instance-monitoring-report.repository");
|
|
@@ -29,13 +30,14 @@ const MAX_ATTEMPTS = 3;
|
|
|
29
30
|
exports.RETRY_DELAY_MS = 5 * constants_1.Time.minutes.toMilliseconds;
|
|
30
31
|
const MAX_BACKFILL_DAYS = 30;
|
|
31
32
|
let InstanceReportingService = class InstanceReportingService {
|
|
32
|
-
constructor(config, reportRepository, insightsService, instanceSettings, ownershipService, licenseMetricsRepository, logger, eventService, outboundHttp) {
|
|
33
|
+
constructor(config, reportRepository, insightsService, instanceSettings, ownershipService, licenseMetricsRepository, license, logger, eventService, outboundHttp) {
|
|
33
34
|
this.config = config;
|
|
34
35
|
this.reportRepository = reportRepository;
|
|
35
36
|
this.insightsService = insightsService;
|
|
36
37
|
this.instanceSettings = instanceSettings;
|
|
37
38
|
this.ownershipService = ownershipService;
|
|
38
39
|
this.licenseMetricsRepository = licenseMetricsRepository;
|
|
40
|
+
this.license = license;
|
|
39
41
|
this.logger = logger;
|
|
40
42
|
this.eventService = eventService;
|
|
41
43
|
this.logger = this.logger.scoped('instance-reporting');
|
|
@@ -51,10 +53,17 @@ let InstanceReportingService = class InstanceReportingService {
|
|
|
51
53
|
});
|
|
52
54
|
}
|
|
53
55
|
async sendReport() {
|
|
56
|
+
const licenseCert = this.config.instanceReportingAuthToken
|
|
57
|
+
? undefined
|
|
58
|
+
: await this.license.loadCertStr();
|
|
59
|
+
if (licenseCert === '') {
|
|
60
|
+
this.logger.warn('Skipping the instance report because this instance has no license certificate.');
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
54
63
|
const now = new Date();
|
|
55
|
-
let report = await this.reportRepository.
|
|
64
|
+
let report = await this.reportRepository.findPending();
|
|
56
65
|
if (report && report.attempts >= MAX_ATTEMPTS) {
|
|
57
|
-
await this.skip(report.id, report.attempts);
|
|
66
|
+
await this.skip(report.id, report.attempts, 'max-retries');
|
|
58
67
|
return;
|
|
59
68
|
}
|
|
60
69
|
if (!report) {
|
|
@@ -74,6 +83,7 @@ let InstanceReportingService = class InstanceReportingService {
|
|
|
74
83
|
...(this.config.instanceReportingLabel ? { label: this.config.instanceReportingLabel } : {}),
|
|
75
84
|
n8nVersion: constants_2.N8N_VERSION,
|
|
76
85
|
dataPoints: report.dataPoints,
|
|
86
|
+
...(licenseCert ? { licenseCert } : {}),
|
|
77
87
|
};
|
|
78
88
|
try {
|
|
79
89
|
const response = await this.http.request({
|
|
@@ -100,22 +110,22 @@ let InstanceReportingService = class InstanceReportingService {
|
|
|
100
110
|
this.eventService.emit('instance-report-failed');
|
|
101
111
|
await this.reportRepository.recordFailure(report.id, message, new Date());
|
|
102
112
|
if (report.attempts + 1 >= MAX_ATTEMPTS) {
|
|
103
|
-
await this.skip(report.id, report.attempts + 1);
|
|
113
|
+
await this.skip(report.id, report.attempts + 1, 'max-retries');
|
|
104
114
|
}
|
|
105
115
|
throw error;
|
|
106
116
|
}
|
|
107
117
|
await this.reportRepository.markDelivered(report.id, new Date());
|
|
108
118
|
this.logger.debug('Sent instance report', { batchId: report.id });
|
|
109
119
|
}
|
|
110
|
-
async skip(id, attempts) {
|
|
120
|
+
async skip(id, attempts, reason) {
|
|
111
121
|
await this.reportRepository.markSkipped(id);
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
});
|
|
122
|
+
const message = reason === 'max-retries'
|
|
123
|
+
? 'Giving up on the instance report after repeated delivery failures'
|
|
124
|
+
: 'Giving up on the instance report because its slot has passed';
|
|
125
|
+
this.logger.error(message, { batchId: id, attempts });
|
|
116
126
|
}
|
|
117
127
|
async msUntilRetryAllowed(now) {
|
|
118
|
-
const pending = await this.reportRepository.
|
|
128
|
+
const pending = await this.reportRepository.findPending();
|
|
119
129
|
if (!pending?.lastAttemptAt)
|
|
120
130
|
return 0;
|
|
121
131
|
const elapsed = now.getTime() - pending.lastAttemptAt.getTime();
|
|
@@ -160,7 +170,7 @@ let InstanceReportingService = class InstanceReportingService {
|
|
|
160
170
|
exports.InstanceReportingService = InstanceReportingService;
|
|
161
171
|
exports.InstanceReportingService = InstanceReportingService = __decorate([
|
|
162
172
|
(0, di_1.Service)(),
|
|
163
|
-
__metadata("design:paramtypes", [instance_reporting_config_1.InstanceReportingConfig, instance_monitoring_report_repository_1.InstanceMonitoringReportRepository, insights_service_1.InsightsService, n8n_core_1.InstanceSettings, ownership_service_1.OwnershipService, db_1.LicenseMetricsRepository, backend_common_1.Logger, event_service_1.EventService, backend_network_1.OutboundHttp])
|
|
173
|
+
__metadata("design:paramtypes", [instance_reporting_config_1.InstanceReportingConfig, instance_monitoring_report_repository_1.InstanceMonitoringReportRepository, insights_service_1.InsightsService, n8n_core_1.InstanceSettings, ownership_service_1.OwnershipService, db_1.LicenseMetricsRepository, license_1.License, backend_common_1.Logger, event_service_1.EventService, backend_network_1.OutboundHttp])
|
|
164
174
|
], InstanceReportingService);
|
|
165
175
|
function utcDayBefore(instant, count) {
|
|
166
176
|
return new Date(instant.getTime() - count * constants_1.Time.days.toMilliseconds).toISOString().slice(0, 10);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instance-reporting.service.js","sourceRoot":"","sources":["../../../src/modules/instance-reporting.ee/instance-reporting.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wDAA6C;AAE7C,0DAAoD;AACpD,8CAAsC;AACtC,gCAAmD;AACnD,gCAAkC;AAClC,uCAA4C;AAC5C,+CAAgD;AAEhD,2CAA0C;AAC1C,0DAAsD;AACtD,0EAAsE;AACtE,oEAAgE;AAGhE,yHAAmH;AACnH,2EAAsE;AACtE,iFAAuE;AAGvE,MAAM,kBAAkB,GAAG,EAAE,GAAG,gBAAI,CAAC,OAAO,CAAC,cAAc,CAAC;AAO5D,MAAM,YAAY,GAAG,CAAC,CAAC;AAGV,QAAA,cAAc,GAAG,CAAC,GAAG,gBAAI,CAAC,OAAO,CAAC,cAAc,CAAC;AAU9D,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAOtB,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IAGpC,YACkB,MAA+B,EAC/B,gBAAoD,EACpD,eAAgC,EAChC,gBAAkC,EAClC,gBAAkC,EAClC,wBAAkD,EAClD,MAAc,EACd,YAA0B,EAC3C,YAA0B;
|
|
1
|
+
{"version":3,"file":"instance-reporting.service.js","sourceRoot":"","sources":["../../../src/modules/instance-reporting.ee/instance-reporting.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,15 +2,16 @@ import { Logger } from '@n8n/backend-common';
|
|
|
2
2
|
import type { Context } from '@opentelemetry/api';
|
|
3
3
|
import { type StartWorkflowParams, type EndWorkflowParams, type StartNodeParams, type EndNodeParams } from './execution-level-tracer.types';
|
|
4
4
|
import { OtelSettingsService } from './otel-settings.service';
|
|
5
|
+
import { OtelService } from './otel.service';
|
|
5
6
|
import type { TracingContext } from './tracing-context';
|
|
6
7
|
export declare class ExecutionLevelTracer {
|
|
8
|
+
private readonly otelService;
|
|
7
9
|
private readonly otelSettingsService;
|
|
8
10
|
private readonly logger;
|
|
9
11
|
private readonly activeWorkflowSpans;
|
|
10
12
|
private readonly activeNodeSpansByExecutionId;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
constructor(otelSettingsService: OtelSettingsService, logger: Logger);
|
|
13
|
+
constructor(otelService: OtelService, otelSettingsService: OtelSettingsService, logger: Logger);
|
|
14
|
+
private get tracer();
|
|
14
15
|
startWorkflow(params: StartWorkflowParams): TracingContext;
|
|
15
16
|
endWorkflow(params: EndWorkflowParams): void;
|
|
16
17
|
startNode(params: StartNodeParams): void;
|