n8n 2.41.1 → 2.41.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.
Files changed (43) hide show
  1. package/dist/build.tsbuildinfo +1 -1
  2. package/dist/expression-observability/expression-observability.provider.d.ts +3 -3
  3. package/dist/expression-observability/expression-observability.provider.js +6 -8
  4. package/dist/expression-observability/expression-observability.provider.js.map +1 -1
  5. package/dist/modules/agents/agent-run-tracing.service.d.ts +3 -1
  6. package/dist/modules/agents/agent-run-tracing.service.js +5 -4
  7. package/dist/modules/agents/agent-run-tracing.service.js.map +1 -1
  8. package/dist/modules/instance-ai/instance-ai-settings.service.d.ts +0 -1
  9. package/dist/modules/instance-ai/instance-ai-settings.service.js +0 -3
  10. package/dist/modules/instance-ai/instance-ai-settings.service.js.map +1 -1
  11. package/dist/modules/instance-ai/instance-ai.adapter.service.d.ts +3 -0
  12. package/dist/modules/instance-ai/instance-ai.adapter.service.js +16 -1
  13. package/dist/modules/instance-ai/instance-ai.adapter.service.js.map +1 -1
  14. package/dist/modules/instance-ai/instance-ai.module.d.ts +0 -1
  15. package/dist/modules/instance-ai/instance-ai.module.js +0 -1
  16. package/dist/modules/instance-ai/instance-ai.module.js.map +1 -1
  17. package/dist/modules/instance-ai/instance-ai.service.js +5 -3
  18. package/dist/modules/instance-ai/instance-ai.service.js.map +1 -1
  19. package/dist/modules/instance-ai/workflow-verification-obligation-service.d.ts +1 -1
  20. package/dist/modules/instance-ai/workflow-verification-obligation-service.js +2 -2
  21. package/dist/modules/instance-ai/workflow-verification-obligation-service.js.map +1 -1
  22. package/dist/modules/instance-reporting.ee/database/repositories/instance-monitoring-report.repository.d.ts +1 -1
  23. package/dist/modules/instance-reporting.ee/database/repositories/instance-monitoring-report.repository.js +3 -5
  24. package/dist/modules/instance-reporting.ee/database/repositories/instance-monitoring-report.repository.js.map +1 -1
  25. package/dist/modules/instance-reporting.ee/instance-reporting-scheduler.service.d.ts +2 -0
  26. package/dist/modules/instance-reporting.ee/instance-reporting-scheduler.service.js +25 -2
  27. package/dist/modules/instance-reporting.ee/instance-reporting-scheduler.service.js.map +1 -1
  28. package/dist/modules/instance-reporting.ee/instance-reporting.config.js.map +1 -1
  29. package/dist/modules/instance-reporting.ee/instance-reporting.module.d.ts +2 -0
  30. package/dist/modules/instance-reporting.ee/instance-reporting.module.js +17 -4
  31. package/dist/modules/instance-reporting.ee/instance-reporting.module.js.map +1 -1
  32. package/dist/modules/instance-reporting.ee/instance-reporting.service.d.ts +4 -2
  33. package/dist/modules/instance-reporting.ee/instance-reporting.service.js +21 -11
  34. package/dist/modules/instance-reporting.ee/instance-reporting.service.js.map +1 -1
  35. package/dist/modules/otel/execution-level-tracer.d.ts +4 -4
  36. package/dist/modules/otel/execution-level-tracer.js +30 -24
  37. package/dist/modules/otel/execution-level-tracer.js.map +1 -1
  38. package/dist/modules/otel/otel-lifecycle-handler.js +0 -1
  39. package/dist/modules/otel/otel-lifecycle-handler.js.map +1 -1
  40. package/dist/modules/otel/otel.service.d.ts +9 -2
  41. package/dist/modules/otel/otel.service.js +53 -27
  42. package/dist/modules/otel/otel.service.js.map +1 -1
  43. package/package.json +25 -26
@@ -4,7 +4,7 @@ export declare function parseWorkflowBuildOutcome(outcome: Record<string, unknow
4
4
  export declare class WorkflowVerificationObligationService {
5
5
  private readonly agentMemory;
6
6
  private readonly isSetupPanelEnabled;
7
- constructor(agentMemory: TypeORMAgentMemory, isSetupPanelEnabled?: () => boolean);
7
+ constructor(agentMemory: TypeORMAgentMemory, isSetupPanelEnabled?: (threadId: string) => boolean);
8
8
  private storage;
9
9
  isPlannedRecord(record: WorkflowLoopWorkItemRecord): boolean;
10
10
  getObligation(threadId: string, workItemId: string, options: {
@@ -27,7 +27,7 @@ class WorkflowVerificationObligationService {
27
27
  obligationFromRecord(threadId, record, options) {
28
28
  return (0, instance_ai_1.deriveWorkflowVerificationObligation)(threadId, record, {
29
29
  ...options,
30
- setupPanelEnabled: this.isSetupPanelEnabled(),
30
+ setupPanelEnabled: this.isSetupPanelEnabled(threadId),
31
31
  });
32
32
  }
33
33
  async findPendingPlannedWorkflowVerification(threadId, graph) {
@@ -51,7 +51,7 @@ class WorkflowVerificationObligationService {
51
51
  const options = {
52
52
  source: 'planned',
53
53
  plannedTaskId: task.id,
54
- setupPanelEnabled: this.isSetupPanelEnabled(),
54
+ setupPanelEnabled: this.isSetupPanelEnabled(threadId),
55
55
  };
56
56
  const record = await this.storage().getWorkItem(threadId, baseOutcome.workItemId);
57
57
  const outcome = record?.lastBuildOutcome ?? baseOutcome;
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-verification-obligation-service.js","sourceRoot":"","sources":["../../../src/modules/instance-ai/workflow-verification-obligation-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-verification-obligation-service.js","sourceRoot":"","sources":["../../../src/modules/instance-ai/workflow-verification-obligation-service.ts"],"names":[],"mappings":"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"}
@@ -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
- findTodaysPending(now: Date): Promise<InstanceMonitoringReport | null>;
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 findTodaysPending(now) {
22
- return await this.findOne({
23
- where: { status: 'pending', createdAt: (0, typeorm_1.MoreThanOrEqual)(startOfUtcDay(now)) },
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":"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"}
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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"}
@@ -22,5 +22,7 @@ export declare class InstanceReportingScheduler {
22
22
  shutdown(): void;
23
23
  private tick;
24
24
  private reportIfDue;
25
+ private msUntilNextSlot;
26
+ private trySend;
25
27
  private scheduleNext;
26
28
  }
@@ -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":"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"}
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;QAQtC,+BAA0B,GAAW,EAAE,CAAC;IACzC,CAAC;CAAA,CAAA;;AAlBA;IADC,IAAA,YAAG,EAAC,8BAA8B,CAAC;;uEACA;AASpC;IADC,IAAA,YAAG,EAAC,iCAAiC,CAAC;;yEACD;AAQtC;IADC,IAAA,YAAG,EAAC,mCAAmC,CAAC;;2EACD;kCAtB5B,uBAAuB;IADnC,eAAM;GACM,uBAAuB,CAuBnC"}
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
- if (!(await this.isConfigured())) {
21
- di_1.Container.get(backend_common_1.Logger)
22
- .scoped('instance-reporting')
23
- .warn('Instance reporting is enabled but N8N_INSTANCE_REPORTING_BASE_URL is unset, so no reports will be sent');
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,YAAY,EAAE,CAAC,EAAE,CAAC;YAClC,cAAS,CAAC,GAAG,CAAC,uBAAM,CAAC;iBACnB,MAAM,CAAC,oBAAoB,CAAC;iBAC5B,IAAI,CACJ,wGAAwG,CACxG,CAAC;YACH,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,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;CACD,CAAA;;kCAhEY,uBAAuB;IADnC,IAAA,0BAAa,EAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,aAAa,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;GAC1D,uBAAuB,CAgEnC"}
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
- private skip;
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.findTodaysPending(now);
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
- this.logger.error('Giving up on the instance report after repeated delivery failures', {
113
- batchId: id,
114
- attempts,
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.findTodaysPending(now);
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":"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"}
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
- private tracer;
12
- refreshTracer(): void;
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;
@@ -19,7 +20,6 @@ export declare class ExecutionLevelTracer {
19
20
  injectTraceHeaders(executionId: string, nodeName: string | undefined, headers: Record<string, string>): void;
20
21
  private parseTraceParentHeaders;
21
22
  private buildContinuationLinks;
22
- private findWorkflowSpanContext;
23
23
  private findMostSpecificSpan;
24
24
  private endDanglingNodeSpans;
25
25
  }
@@ -13,30 +13,34 @@ exports.ExecutionLevelTracer = void 0;
13
13
  const backend_common_1 = require("@n8n/backend-common");
14
14
  const di_1 = require("@n8n/di");
15
15
  const api_1 = require("@opentelemetry/api");
16
+ const core_1 = require("@opentelemetry/core");
16
17
  const execution_level_tracer_types_1 = require("./execution-level-tracer.types");
17
18
  const otel_settings_service_1 = require("./otel-settings.service");
18
19
  const otel_constants_1 = require("./otel.constants");
20
+ const otel_service_1 = require("./otel.service");
19
21
  const TRACER_NAME = 'n8n-workflow';
22
+ const propagator = new core_1.W3CTraceContextPropagator();
20
23
  const UNKNOWN_ERROR_TYPE = 'UnknownError';
21
24
  const OBJECT_ERROR_TYPE = 'Object';
22
25
  function isError(status) {
23
26
  return status === 'error' || status === 'crashed';
24
27
  }
25
28
  let ExecutionLevelTracer = class ExecutionLevelTracer {
26
- refreshTracer() {
27
- this.tracer = api_1.trace.getTracer(TRACER_NAME);
28
- }
29
- constructor(otelSettingsService, logger) {
29
+ constructor(otelService, otelSettingsService, logger) {
30
+ this.otelService = otelService;
30
31
  this.otelSettingsService = otelSettingsService;
31
32
  this.logger = logger;
32
33
  this.activeWorkflowSpans = new Map();
33
34
  this.activeNodeSpansByExecutionId = new Map();
34
- this.tracer = api_1.trace.getTracer(TRACER_NAME);
35
+ }
36
+ get tracer() {
37
+ return this.otelService.getTracer(TRACER_NAME);
35
38
  }
36
39
  startWorkflow(params) {
37
40
  try {
38
41
  const parentCtx = this.parseTraceParentHeaders(params.tracingContext);
39
42
  const links = this.buildContinuationLinks(params.linkTo);
43
+ const projectAttributes = buildProjectAttributes(params.project);
40
44
  const span = this.tracer.startSpan('workflow.execute', {
41
45
  attributes: {
42
46
  [otel_constants_1.ATTR.WORKFLOW_ID]: params.workflow.id,
@@ -44,15 +48,12 @@ let ExecutionLevelTracer = class ExecutionLevelTracer {
44
48
  [otel_constants_1.ATTR.WORKFLOW_VERSION_ID]: params.workflow.versionId ?? '',
45
49
  [otel_constants_1.ATTR.WORKFLOW_NODE_COUNT]: params.workflow.nodeCount,
46
50
  [otel_constants_1.ATTR.EXECUTION_ID]: params.executionId,
47
- ...(params.project?.id && { [otel_constants_1.ATTR.PROJECT_ID]: params.project.id }),
48
51
  ...buildCustomAttributes(otel_constants_1.ATTR.WORKFLOW_CUSTOM_PREFIX, params.workflow?.customAttributes),
49
- ...buildCustomAttributes(otel_constants_1.ATTR.PROJECT_CUSTOM_PREFIX, params.project?.customAttributes),
52
+ ...projectAttributes,
50
53
  },
51
54
  links,
52
55
  }, parentCtx);
53
- this.activeWorkflowSpans.set(params.executionId, {
54
- span,
55
- });
56
+ this.activeWorkflowSpans.set(params.executionId, { span, projectAttributes });
56
57
  return toTracingParentContext(span);
57
58
  }
58
59
  catch (error) {
@@ -99,8 +100,8 @@ let ExecutionLevelTracer = class ExecutionLevelTracer {
99
100
  }
100
101
  startNode(params) {
101
102
  try {
102
- const parentCtx = this.findWorkflowSpanContext(params.executionId);
103
- if (!parentCtx) {
103
+ const tracked = this.activeWorkflowSpans.get(params.executionId);
104
+ if (!tracked) {
104
105
  this.logger.warn('Trying to start a node without a pre-existing parent workflow trace - ignoring');
105
106
  return;
106
107
  }
@@ -110,8 +111,9 @@ let ExecutionLevelTracer = class ExecutionLevelTracer {
110
111
  [otel_constants_1.ATTR.NODE_NAME]: params.node.name,
111
112
  [otel_constants_1.ATTR.NODE_TYPE]: params.node.type,
112
113
  [otel_constants_1.ATTR.NODE_TYPE_VERSION]: params.node.typeVersion,
114
+ ...tracked.projectAttributes,
113
115
  },
114
- }, parentCtx);
116
+ }, api_1.trace.setSpan(api_1.context.active(), tracked.span));
115
117
  let executionNodes = this.activeNodeSpansByExecutionId.get(params.executionId);
116
118
  if (!executionNodes) {
117
119
  executionNodes = new Map();
@@ -169,7 +171,7 @@ let ExecutionLevelTracer = class ExecutionLevelTracer {
169
171
  const span = this.findMostSpecificSpan(executionId, nodeName);
170
172
  if (!span)
171
173
  return;
172
- api_1.propagation.inject(api_1.trace.setSpan(api_1.context.active(), span), headers);
174
+ propagator.inject(api_1.trace.setSpan(api_1.ROOT_CONTEXT, span), headers, api_1.defaultTextMapSetter);
173
175
  }
174
176
  catch (error) {
175
177
  this.logger.warn('Failed to inject trace headers', {
@@ -180,14 +182,14 @@ let ExecutionLevelTracer = class ExecutionLevelTracer {
180
182
  }
181
183
  }
182
184
  parseTraceParentHeaders(tracingContext) {
183
- return tracingContext
184
- ? api_1.propagation.extract(api_1.context.active(), tracingContext)
185
- : api_1.context.active();
185
+ if (!tracingContext)
186
+ return api_1.ROOT_CONTEXT;
187
+ return propagator.extract(api_1.ROOT_CONTEXT, tracingContext, api_1.defaultTextMapGetter);
186
188
  }
187
189
  buildContinuationLinks(linkTo) {
188
190
  if (!linkTo)
189
191
  return undefined;
190
- const extracted = api_1.propagation.extract(api_1.context.active(), linkTo);
192
+ const extracted = propagator.extract(api_1.ROOT_CONTEXT, linkTo, api_1.defaultTextMapGetter);
191
193
  const spanContext = api_1.trace.getSpanContext(extracted);
192
194
  if (!spanContext)
193
195
  return undefined;
@@ -198,10 +200,6 @@ let ExecutionLevelTracer = class ExecutionLevelTracer {
198
200
  },
199
201
  ];
200
202
  }
201
- findWorkflowSpanContext(executionId) {
202
- const tracked = this.activeWorkflowSpans.get(executionId);
203
- return tracked ? api_1.trace.setSpan(api_1.context.active(), tracked.span) : undefined;
204
- }
205
203
  findMostSpecificSpan(executionId, nodeName) {
206
204
  return ((nodeName
207
205
  ? this.activeNodeSpansByExecutionId.get(executionId)?.get(nodeName)?.span
@@ -220,7 +218,7 @@ let ExecutionLevelTracer = class ExecutionLevelTracer {
220
218
  exports.ExecutionLevelTracer = ExecutionLevelTracer;
221
219
  exports.ExecutionLevelTracer = ExecutionLevelTracer = __decorate([
222
220
  (0, di_1.Service)(),
223
- __metadata("design:paramtypes", [otel_settings_service_1.OtelSettingsService, backend_common_1.Logger])
221
+ __metadata("design:paramtypes", [otel_service_1.OtelService, otel_settings_service_1.OtelSettingsService, backend_common_1.Logger])
224
222
  ], ExecutionLevelTracer);
225
223
  function buildCustomAttributes(prefix, attrs) {
226
224
  if (!attrs)
@@ -231,6 +229,14 @@ function buildCustomAttributes(prefix, attrs) {
231
229
  }
232
230
  return result;
233
231
  }
232
+ function buildProjectAttributes(project) {
233
+ if (!project)
234
+ return {};
235
+ return {
236
+ [otel_constants_1.ATTR.PROJECT_ID]: project.id,
237
+ ...buildCustomAttributes(otel_constants_1.ATTR.PROJECT_CUSTOM_PREFIX, project.customAttributes),
238
+ };
239
+ }
234
240
  function buildNodeEndAttributes(params) {
235
241
  const attrs = {
236
242
  [otel_constants_1.ATTR.NODE_ITEMS_INPUT]: params.inputItemCount,
@@ -241,7 +247,7 @@ function buildNodeEndAttributes(params) {
241
247
  }
242
248
  function toTracingParentContext(span) {
243
249
  const carrier = {};
244
- api_1.propagation.inject(api_1.trace.setSpan(api_1.context.active(), span), carrier);
250
+ propagator.inject(api_1.trace.setSpan(api_1.ROOT_CONTEXT, span), carrier, api_1.defaultTextMapSetter);
245
251
  return { traceparent: carrier.traceparent, tracestate: carrier.tracestate };
246
252
  }
247
253
  function terminateSpan(span, reason) {