@codebaz/nextdoctor-agent 0.1.0-beta.1 → 0.1.1-beta.1

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.
@@ -1,3 +1,3 @@
1
1
  ]0;C:\Windows\system32\cmd.exe[?25h[?25l
2
- > @codebaz/nextdoctor-agent@0.1.0-beta.1 build C:\Users\User\Desktop\projects\nextdoctor\packages\agent
2
+ > @codebaz/nextdoctor-agent@0.1.1-beta.1 build C:\Users\User\Desktop\projects\nextdoctor\packages\agent
3
3
  > tsc --build[?25h
@@ -0,0 +1,39 @@
1
+ import type { ExportResult } from '@opentelemetry/core';
2
+ import type { SpanExporter, ReadableSpan } from '@opentelemetry/sdk-trace-base';
3
+ import type { DetectedIssue, DetectorContext } from './detectors/types.js';
4
+ export interface NextDoctorExporterOptions {
5
+ endpoint: string;
6
+ projectToken: string;
7
+ /** Called just before export — lets init.ts inject current detected issues */
8
+ getIssues: () => DetectedIssue[];
9
+ /** Called after a successful export — lets init.ts clear sent issues */
10
+ clearIssues: (sent: DetectedIssue[]) => void;
11
+ /** Called to get the current detection context (route, runtime) */
12
+ getContext: () => DetectorContext;
13
+ timeoutMs?: number;
14
+ }
15
+ /**
16
+ * Custom OTel SpanExporter for NextDoctor.
17
+ *
18
+ * Instead of sending raw OTLP protobuf, this exporter converts spans to
19
+ * the lightweight JSON format the collector's POST /ingest endpoint expects,
20
+ * and bundles in the detected issues from the detection engine.
21
+ *
22
+ * This gives us full control over the payload and avoids an OTLP parser
23
+ * on the collector side.
24
+ */
25
+ export declare class NextDoctorExporter implements SpanExporter {
26
+ private readonly endpoint;
27
+ private readonly projectToken;
28
+ private readonly getIssues;
29
+ private readonly clearIssues;
30
+ private readonly getContext;
31
+ private readonly timeoutMs;
32
+ private isShutdown;
33
+ constructor(opts: NextDoctorExporterOptions);
34
+ export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void;
35
+ private doExport;
36
+ shutdown(): Promise<void>;
37
+ forceFlush(): Promise<void>;
38
+ }
39
+ //# sourceMappingURL=exporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exporter.d.ts","sourceRoot":"","sources":["../src/exporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE3E,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,SAAS,EAAE,MAAM,aAAa,EAAE,CAAC;IACjC,wEAAwE;IACxE,WAAW,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,IAAI,CAAC;IAC7C,mEAAmE;IACnE,UAAU,EAAE,MAAM,eAAe,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,qBAAa,kBAAmB,YAAW,YAAY;IACrD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkC;IAC9D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwB;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,UAAU,CAAS;gBAEf,IAAI,EAAE,yBAAyB;IAS3C,MAAM,CACJ,KAAK,EAAE,YAAY,EAAE,EACrB,cAAc,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,GAC7C,IAAI;YASO,QAAQ;IAiDhB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAGlC"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Custom OTel SpanExporter for NextDoctor.
3
+ *
4
+ * Instead of sending raw OTLP protobuf, this exporter converts spans to
5
+ * the lightweight JSON format the collector's POST /ingest endpoint expects,
6
+ * and bundles in the detected issues from the detection engine.
7
+ *
8
+ * This gives us full control over the payload and avoids an OTLP parser
9
+ * on the collector side.
10
+ */
11
+ export class NextDoctorExporter {
12
+ endpoint;
13
+ projectToken;
14
+ getIssues;
15
+ clearIssues;
16
+ getContext;
17
+ timeoutMs;
18
+ isShutdown = false;
19
+ constructor(opts) {
20
+ this.endpoint = opts.endpoint.replace(/\/$/, '');
21
+ this.projectToken = opts.projectToken;
22
+ this.getIssues = opts.getIssues;
23
+ this.clearIssues = opts.clearIssues;
24
+ this.getContext = opts.getContext;
25
+ this.timeoutMs = opts.timeoutMs ?? 10_000;
26
+ }
27
+ export(spans, resultCallback) {
28
+ if (this.isShutdown) {
29
+ resultCallback({ code: 1 }); // ExportResultCode.FAILED
30
+ return;
31
+ }
32
+ void this.doExport(spans, resultCallback);
33
+ }
34
+ async doExport(spans, resultCallback) {
35
+ const issuesToSend = this.getIssues();
36
+ const context = this.getContext();
37
+ const payload = {
38
+ spans: spans.map(serializeSpan),
39
+ context: {
40
+ route: context.route,
41
+ runtime: context.runtime,
42
+ startupTimeMs: context.startupTimeMs,
43
+ },
44
+ detectedIssues: issuesToSend.length > 0 ? issuesToSend : undefined,
45
+ };
46
+ try {
47
+ const controller = new AbortController();
48
+ const timer = setTimeout(() => controller.abort(), this.timeoutMs);
49
+ const response = await fetch(`${this.endpoint}/ingest`, {
50
+ method: 'POST',
51
+ headers: {
52
+ 'Content-Type': 'application/json',
53
+ 'Authorization': `Bearer ${this.projectToken}`,
54
+ },
55
+ body: JSON.stringify(payload),
56
+ signal: controller.signal,
57
+ });
58
+ clearTimeout(timer);
59
+ if (!response.ok) {
60
+ resultCallback({ code: 1 }); // FAILED
61
+ return;
62
+ }
63
+ // Clear only the issues we successfully sent
64
+ if (issuesToSend.length > 0) {
65
+ this.clearIssues(issuesToSend);
66
+ }
67
+ resultCallback({ code: 0 }); // SUCCESS
68
+ }
69
+ catch {
70
+ resultCallback({ code: 1 }); // FAILED (timeout, network error, etc.)
71
+ }
72
+ }
73
+ async shutdown() {
74
+ this.isShutdown = true;
75
+ }
76
+ async forceFlush() {
77
+ // Nothing to flush — each export is fire-and-forget with its own retry
78
+ }
79
+ }
80
+ // ─── Span serialiser ──────────────────────────────────────────────────────────
81
+ // Converts an OTel ReadableSpan to the lightweight JSON the collector expects.
82
+ function serializeSpan(span) {
83
+ const ctx = span.spanContext();
84
+ const [startSec, startNano] = span.startTime;
85
+ const [endSec, endNano] = span.endTime;
86
+ return {
87
+ traceId: ctx.traceId,
88
+ spanId: ctx.spanId,
89
+ // @ts-expect-error parentSpanId exists in newer OTel versions
90
+ parentSpanId: span.parentSpanId ?? null,
91
+ name: span.name,
92
+ startTime: span.startTime,
93
+ endTime: span.endTime,
94
+ durationMs: Math.round((endSec - startSec) * 1000 + (endNano - startNano) / 1_000_000),
95
+ attributes: span.attributes,
96
+ status: span.status,
97
+ events: span.events,
98
+ links: span.links,
99
+ };
100
+ }
101
+ //# sourceMappingURL=exporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exporter.js","sourceRoot":"","sources":["../src/exporter.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;GASG;AACH,MAAM,OAAO,kBAAkB;IACZ,QAAQ,CAAS;IACjB,YAAY,CAAS;IACrB,SAAS,CAAwB;IACjC,WAAW,CAAkC;IAC7C,UAAU,CAAwB;IAClC,SAAS,CAAS;IAC3B,UAAU,GAAG,KAAK,CAAC;IAE3B,YAAY,IAA+B;QACzC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;IAC5C,CAAC;IAED,MAAM,CACJ,KAAqB,EACrB,cAA8C;QAE9C,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,0BAA0B;YACvD,OAAO;QACT,CAAC;QAED,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAC5C,CAAC;IAEO,KAAK,CAAC,QAAQ,CACpB,KAAqB,EACrB,cAA8C;QAE9C,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAElC,MAAM,OAAO,GAAG;YACd,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC;YAC/B,OAAO,EAAE;gBACP,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,aAAa,EAAE,OAAO,CAAC,aAAa;aACrC;YACD,cAAc,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;SACnE,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAEnE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,SAAS,EAAE;gBACtD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,eAAe,EAAE,UAAU,IAAI,CAAC,YAAY,EAAE;iBAC/C;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;gBAC7B,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;YAEH,YAAY,CAAC,KAAK,CAAC,CAAC;YAEpB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;gBACtC,OAAO;YACT,CAAC;YAED,6CAA6C;YAC7C,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YACjC,CAAC;YAED,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,wCAAwC;QACvE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,UAAU;QACd,uEAAuE;IACzE,CAAC;CACF;AAED,iFAAiF;AACjF,+EAA+E;AAE/E,SAAS,aAAa,CAAC,IAAkB;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAC/B,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;IAC7C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;IAEvC,OAAO;QACL,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,8DAA8D;QAC9D,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI;QACvC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,UAAU,EAAE,IAAI,CAAC,KAAK,CACpB,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,SAAS,CAC/D;QACD,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,KAAK,EAAE,IAAI,CAAC,KAAK;KAClB,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,gBAAgB,EAGhB,WAAW,EACX,aAAa,EAEd,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGxE,cAAM,eAAe;IACnB,OAAO,CAAC,GAAG,CAAwB;IACnC,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,MAAM,CAMZ;IACF,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,gBAAgB,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAQ;IAC3C,OAAO,CAAC,SAAS,CAAc;gBAEnB,MAAM,EAAE,gBAAgB;IA0BpC,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,GAAG;IAaX,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,mBAAmB;IAOrB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAsEjC,OAAO,CAAC,WAAW;IA2BnB,OAAO,CAAC,kBAAkB;IA2CpB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB/B,SAAS,IAAI,WAAW;IAOxB,iBAAiB,IAAI,aAAa,EAAE;IAIpC,mBAAmB,IAAI,IAAI;IAI3B,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAkBvF,OAAO,CAAC,SAAS;IAIjB,gBAAgB,IAAI,aAAa;IAIjC,eAAe,CAAC,YAAY,GAAE,MAAW,EAAE,YAAY,GAAE,MAAW;;;;;IAIpE,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;IAIhB,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAST;AAKD,wBAAsB,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ5E;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAQxD;AAED,wBAAgB,kBAAkB,IAAI,eAAe,GAAG,IAAI,CAE3D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAOhG;AAED,wBAAgB,eAAe,IAAI,WAAW,GAAG,IAAI,CAEpD;AAED,wBAAgB,iBAAiB,IAAI,aAAa,EAAE,CAEnD;AAED,wBAAgB,gBAAgB,IAAI,aAAa,GAAG,IAAI,CAEvD;AAED,wBAAgB,eAAe,CAAC,YAAY,GAAE,MAAW,EAAE,YAAY,GAAE,MAAW;;;;SAOnF;AAED,wBAAgB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;SAO/B"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,gBAAgB,EAGhB,WAAW,EACX,aAAa,EAEd,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGxE,cAAM,eAAe;IACnB,OAAO,CAAC,GAAG,CAAwB;IACnC,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,MAAM,CAMZ;IACF,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,gBAAgB,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAQ;IAC3C,OAAO,CAAC,SAAS,CAAc;gBAEnB,MAAM,EAAE,gBAAgB;IA0BpC,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,GAAG;IAaX,OAAO,CAAC,mBAAmB;IA8B3B,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,mBAAmB;IAOrB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAsEjC,OAAO,CAAC,WAAW;IA2BnB,OAAO,CAAC,kBAAkB;IA2CpB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB/B,SAAS,IAAI,WAAW;IAOxB,iBAAiB,IAAI,aAAa,EAAE;IAIpC,mBAAmB,IAAI,IAAI;IAI3B,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAkBvF,OAAO,CAAC,SAAS;IAIjB,gBAAgB,IAAI,aAAa;IAIjC,eAAe,CAAC,YAAY,GAAE,MAAW,EAAE,YAAY,GAAE,MAAW;;;;;IAIpE,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;IAIhB,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAST;AAKD,wBAAsB,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ5E;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAQxD;AAED,wBAAgB,kBAAkB,IAAI,eAAe,GAAG,IAAI,CAE3D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAOhG;AAED,wBAAgB,eAAe,IAAI,WAAW,GAAG,IAAI,CAEpD;AAED,wBAAgB,iBAAiB,IAAI,aAAa,EAAE,CAEnD;AAED,wBAAgB,gBAAgB,IAAI,aAAa,GAAG,IAAI,CAEvD;AAED,wBAAgB,eAAe,CAAC,YAAY,GAAE,MAAW,EAAE,YAAY,GAAE,MAAW;;;;SAOnF;AAED,wBAAgB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;SAO/B"}
package/dist/init.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { NodeSDK } from '@opentelemetry/sdk-node';
2
2
  import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';
3
- import { OTLPTraceExporter } from '@opentelemetry/exporter-otlp-http';
4
3
  import { trace } from '@opentelemetry/api';
5
- import { LogLevel as LogLevelEnum, ExporterType as ExporterTypeEnum } from './types.js';
4
+ import { NextDoctorExporter } from './exporter.js';
5
+ import { LogLevel as LogLevelEnum } from './types.js';
6
6
  import { SystemMonitor } from './system-monitor.js';
7
7
  import { detectionEngine } from './detectors/index.js';
8
8
  class NextDoctorAgent {
@@ -73,25 +73,29 @@ class NextDoctorAgent {
73
73
  }
74
74
  }
75
75
  createTraceExporter() {
76
- const exporterConfig = (this.config.exporter || {});
77
- const isVercel = exporterConfig.type === ExporterTypeEnum.VERCEL || this.isVercelEnvironment();
78
- if (isVercel || !exporterConfig.url) {
79
- this.log(LogLevelEnum.INFO, 'Using Vercel OTEL exporter');
80
- return new OTLPTraceExporter({
81
- url: this.config.endpoint,
82
- headers: {
83
- authorization: `Bearer ${this.config.projectToken}`,
84
- 'content-type': 'application/json',
85
- },
86
- });
87
- }
88
- return new OTLPTraceExporter({
89
- url: exporterConfig.url || this.config.endpoint,
90
- headers: {
91
- ...exporterConfig.headers,
92
- authorization: `Bearer ${this.config.projectToken}`,
93
- 'content-type': 'application/json',
76
+ return new NextDoctorExporter({
77
+ endpoint: this.config.endpoint,
78
+ projectToken: this.config.projectToken,
79
+ getIssues: () => this.detectedIssues,
80
+ clearIssues: (sent) => {
81
+ // Remove only the issues that were successfully flushed
82
+ const sentSet = new Set(sent.map(i => `${i.id}:${i.detectedAt}`));
83
+ this.detectedIssues = this.detectedIssues.filter(i => !sentSet.has(`${i.id}:${i.detectedAt}`));
84
+ },
85
+ getContext: () => {
86
+ const firstSpan = this.spansBuffer[0];
87
+ const route = firstSpan?.attributes?.['http.route'] ??
88
+ firstSpan?.attributes?.['http.url'] ??
89
+ undefined;
90
+ return {
91
+ route: route ? String(route) : undefined,
92
+ runtime: (process.env.NEXT_RUNTIME ?? 'nodejs'),
93
+ startupTimeMs: Date.now() - this.startTime < 30_000
94
+ ? Date.now() - this.startTime
95
+ : undefined,
96
+ };
94
97
  },
98
+ timeoutMs: this.config.timeout ?? 10_000,
95
99
  });
96
100
  }
97
101
  createResource() {
package/dist/init.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codebaz/nextdoctor-agent",
3
- "version": "0.1.0-beta.1",
3
+ "version": "0.1.1-beta.1",
4
4
  "type": "module",
5
5
  "description": "NextDoctor agent for OpenTelemetry tracing and performance monitoring",
6
6
  "main": "./dist/index.js",
@@ -0,0 +1,139 @@
1
+ import type { ExportResult } from '@opentelemetry/core';
2
+ import type { SpanExporter, ReadableSpan } from '@opentelemetry/sdk-trace-base';
3
+ import type { DetectedIssue, DetectorContext } from './detectors/types.js';
4
+
5
+ export interface NextDoctorExporterOptions {
6
+ endpoint: string; // e.g. 'https://ingest.nextdoctor.dev'
7
+ projectToken: string;
8
+ /** Called just before export — lets init.ts inject current detected issues */
9
+ getIssues: () => DetectedIssue[];
10
+ /** Called after a successful export — lets init.ts clear sent issues */
11
+ clearIssues: (sent: DetectedIssue[]) => void;
12
+ /** Called to get the current detection context (route, runtime) */
13
+ getContext: () => DetectorContext;
14
+ timeoutMs?: number;
15
+ }
16
+
17
+ /**
18
+ * Custom OTel SpanExporter for NextDoctor.
19
+ *
20
+ * Instead of sending raw OTLP protobuf, this exporter converts spans to
21
+ * the lightweight JSON format the collector's POST /ingest endpoint expects,
22
+ * and bundles in the detected issues from the detection engine.
23
+ *
24
+ * This gives us full control over the payload and avoids an OTLP parser
25
+ * on the collector side.
26
+ */
27
+ export class NextDoctorExporter implements SpanExporter {
28
+ private readonly endpoint: string;
29
+ private readonly projectToken: string;
30
+ private readonly getIssues: () => DetectedIssue[];
31
+ private readonly clearIssues: (sent: DetectedIssue[]) => void;
32
+ private readonly getContext: () => DetectorContext;
33
+ private readonly timeoutMs: number;
34
+ private isShutdown = false;
35
+
36
+ constructor(opts: NextDoctorExporterOptions) {
37
+ this.endpoint = opts.endpoint.replace(/\/$/, '');
38
+ this.projectToken = opts.projectToken;
39
+ this.getIssues = opts.getIssues;
40
+ this.clearIssues = opts.clearIssues;
41
+ this.getContext = opts.getContext;
42
+ this.timeoutMs = opts.timeoutMs ?? 10_000;
43
+ }
44
+
45
+ export(
46
+ spans: ReadableSpan[],
47
+ resultCallback: (result: ExportResult) => void,
48
+ ): void {
49
+ if (this.isShutdown) {
50
+ resultCallback({ code: 1 }); // ExportResultCode.FAILED
51
+ return;
52
+ }
53
+
54
+ void this.doExport(spans, resultCallback);
55
+ }
56
+
57
+ private async doExport(
58
+ spans: ReadableSpan[],
59
+ resultCallback: (result: ExportResult) => void,
60
+ ): Promise<void> {
61
+ const issuesToSend = this.getIssues();
62
+ const context = this.getContext();
63
+
64
+ const payload = {
65
+ spans: spans.map(serializeSpan),
66
+ context: {
67
+ route: context.route,
68
+ runtime: context.runtime,
69
+ startupTimeMs: context.startupTimeMs,
70
+ },
71
+ detectedIssues: issuesToSend.length > 0 ? issuesToSend : undefined,
72
+ };
73
+
74
+ try {
75
+ const controller = new AbortController();
76
+ const timer = setTimeout(() => controller.abort(), this.timeoutMs);
77
+
78
+ const response = await fetch(`${this.endpoint}/ingest`, {
79
+ method: 'POST',
80
+ headers: {
81
+ 'Content-Type': 'application/json',
82
+ 'Authorization': `Bearer ${this.projectToken}`,
83
+ },
84
+ body: JSON.stringify(payload),
85
+ signal: controller.signal,
86
+ });
87
+
88
+ clearTimeout(timer);
89
+
90
+ if (!response.ok) {
91
+ resultCallback({ code: 1 }); // FAILED
92
+ return;
93
+ }
94
+
95
+ // Clear only the issues we successfully sent
96
+ if (issuesToSend.length > 0) {
97
+ this.clearIssues(issuesToSend);
98
+ }
99
+
100
+ resultCallback({ code: 0 }); // SUCCESS
101
+ } catch {
102
+ resultCallback({ code: 1 }); // FAILED (timeout, network error, etc.)
103
+ }
104
+ }
105
+
106
+ async shutdown(): Promise<void> {
107
+ this.isShutdown = true;
108
+ }
109
+
110
+ async forceFlush(): Promise<void> {
111
+ // Nothing to flush — each export is fire-and-forget with its own retry
112
+ }
113
+ }
114
+
115
+ // ─── Span serialiser ──────────────────────────────────────────────────────────
116
+ // Converts an OTel ReadableSpan to the lightweight JSON the collector expects.
117
+
118
+ function serializeSpan(span: ReadableSpan): object {
119
+ const ctx = span.spanContext();
120
+ const [startSec, startNano] = span.startTime;
121
+ const [endSec, endNano] = span.endTime;
122
+
123
+ return {
124
+ traceId: ctx.traceId,
125
+ spanId: ctx.spanId,
126
+ // @ts-expect-error parentSpanId exists in newer OTel versions
127
+ parentSpanId: span.parentSpanId ?? null,
128
+ name: span.name,
129
+ startTime: span.startTime,
130
+ endTime: span.endTime,
131
+ durationMs: Math.round(
132
+ (endSec - startSec) * 1000 + (endNano - startNano) / 1_000_000
133
+ ),
134
+ attributes: span.attributes,
135
+ status: span.status,
136
+ events: span.events,
137
+ links: span.links,
138
+ };
139
+ }
package/src/init.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { NodeSDK } from '@opentelemetry/sdk-node';
2
2
  import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';
3
- import { OTLPTraceExporter } from '@opentelemetry/exporter-otlp-http';
4
3
  import { trace } from '@opentelemetry/api';
4
+ import { NextDoctorExporter } from './exporter.js';
5
5
  import type {
6
6
  NextDoctorConfig,
7
7
  ExporterType,
@@ -85,29 +85,34 @@ class NextDoctorAgent {
85
85
  }
86
86
  }
87
87
 
88
- private createTraceExporter(): any {
89
- const exporterConfig = (this.config.exporter || {}) as any;
90
- const isVercel = exporterConfig.type === ExporterTypeEnum.VERCEL || this.isVercelEnvironment();
91
-
92
- if (isVercel || !exporterConfig.url) {
93
- this.log(LogLevelEnum.INFO, 'Using Vercel OTEL exporter');
94
- return new OTLPTraceExporter({
95
- url: this.config.endpoint,
96
- headers: {
97
- authorization: `Bearer ${this.config.projectToken}`,
98
- 'content-type': 'application/json',
99
- },
100
- } as any);
101
- }
102
-
103
- return new OTLPTraceExporter({
104
- url: exporterConfig.url || this.config.endpoint,
105
- headers: {
106
- ...exporterConfig.headers,
107
- authorization: `Bearer ${this.config.projectToken}`,
108
- 'content-type': 'application/json',
88
+ private createTraceExporter(): NextDoctorExporter {
89
+ return new NextDoctorExporter({
90
+ endpoint: this.config.endpoint,
91
+ projectToken: this.config.projectToken,
92
+ getIssues: () => this.detectedIssues,
93
+ clearIssues: (sent) => {
94
+ // Remove only the issues that were successfully flushed
95
+ const sentSet = new Set(sent.map(i => `${i.id}:${i.detectedAt}`));
96
+ this.detectedIssues = this.detectedIssues.filter(
97
+ i => !sentSet.has(`${i.id}:${i.detectedAt}`)
98
+ );
99
+ },
100
+ getContext: () => {
101
+ const firstSpan = this.spansBuffer[0];
102
+ const route =
103
+ firstSpan?.attributes?.['http.route'] ??
104
+ firstSpan?.attributes?.['http.url'] ??
105
+ undefined;
106
+ return {
107
+ route: route ? String(route) : undefined,
108
+ runtime: (process.env.NEXT_RUNTIME ?? 'nodejs') as 'nodejs' | 'edge',
109
+ startupTimeMs: Date.now() - this.startTime < 30_000
110
+ ? Date.now() - this.startTime
111
+ : undefined,
112
+ };
109
113
  },
110
- } as any);
114
+ timeoutMs: this.config.timeout ?? 10_000,
115
+ });
111
116
  }
112
117
 
113
118
  private createResource(): any {
@@ -1 +1 @@
1
- {"root":["./src/index.ts","./src/init.ts","./src/middleware.ts","./src/optimization.ts","./src/system-monitor.ts","./src/types.ts","./src/detectors/base-detector.ts","./src/detectors/cold-start-threshold.detector.ts","./src/detectors/dynamic-route-candidate.detector.ts","./src/detectors/fetch-no-cache.detector.ts","./src/detectors/index.ts","./src/detectors/types.ts","./src/detectors/__tests__/cold-start-threshold.test.ts","./src/detectors/__tests__/dynamic-route-candidate.test.ts","./src/detectors/__tests__/fetch-no-cache.test.ts"],"version":"5.9.3"}
1
+ {"root":["./src/exporter.ts","./src/index.ts","./src/init.ts","./src/middleware.ts","./src/optimization.ts","./src/system-monitor.ts","./src/types.ts","./src/detectors/base-detector.ts","./src/detectors/cold-start-threshold.detector.ts","./src/detectors/dynamic-route-candidate.detector.ts","./src/detectors/fetch-no-cache.detector.ts","./src/detectors/index.ts","./src/detectors/types.ts","./src/detectors/__tests__/cold-start-threshold.test.ts","./src/detectors/__tests__/dynamic-route-candidate.test.ts","./src/detectors/__tests__/fetch-no-cache.test.ts"],"version":"5.9.3"}