observability-toolkit 1.1.0 → 1.4.0

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 (117) hide show
  1. package/README.md +52 -3
  2. package/dist/backends/index.d.ts +28 -0
  3. package/dist/backends/index.d.ts.map +1 -1
  4. package/dist/backends/local-jsonl.d.ts +29 -1
  5. package/dist/backends/local-jsonl.d.ts.map +1 -1
  6. package/dist/backends/local-jsonl.js +259 -27
  7. package/dist/backends/local-jsonl.js.map +1 -1
  8. package/dist/backends/local-jsonl.test.d.ts +2 -0
  9. package/dist/backends/local-jsonl.test.d.ts.map +1 -0
  10. package/dist/backends/local-jsonl.test.js +1638 -0
  11. package/dist/backends/local-jsonl.test.js.map +1 -0
  12. package/dist/backends/signoz-api.d.ts +9 -2
  13. package/dist/backends/signoz-api.d.ts.map +1 -1
  14. package/dist/backends/signoz-api.integration.test.d.ts +8 -0
  15. package/dist/backends/signoz-api.integration.test.d.ts.map +1 -0
  16. package/dist/backends/signoz-api.integration.test.js +137 -0
  17. package/dist/backends/signoz-api.integration.test.js.map +1 -0
  18. package/dist/backends/signoz-api.js +206 -115
  19. package/dist/backends/signoz-api.js.map +1 -1
  20. package/dist/backends/signoz-api.test.d.ts +2 -0
  21. package/dist/backends/signoz-api.test.d.ts.map +1 -0
  22. package/dist/backends/signoz-api.test.js +1080 -0
  23. package/dist/backends/signoz-api.test.js.map +1 -0
  24. package/dist/lib/constants.d.ts +28 -0
  25. package/dist/lib/constants.d.ts.map +1 -1
  26. package/dist/lib/constants.js +73 -0
  27. package/dist/lib/constants.js.map +1 -1
  28. package/dist/lib/constants.test.d.ts +5 -0
  29. package/dist/lib/constants.test.d.ts.map +1 -0
  30. package/dist/lib/constants.test.js +381 -0
  31. package/dist/lib/constants.test.js.map +1 -0
  32. package/dist/lib/file-utils.d.ts +53 -1
  33. package/dist/lib/file-utils.d.ts.map +1 -1
  34. package/dist/lib/file-utils.js +142 -3
  35. package/dist/lib/file-utils.js.map +1 -1
  36. package/dist/lib/file-utils.test.d.ts +2 -0
  37. package/dist/lib/file-utils.test.d.ts.map +1 -0
  38. package/dist/lib/file-utils.test.js +649 -0
  39. package/dist/lib/file-utils.test.js.map +1 -0
  40. package/dist/server.js +50 -63
  41. package/dist/server.js.map +1 -1
  42. package/dist/server.test.d.ts +5 -0
  43. package/dist/server.test.d.ts.map +1 -0
  44. package/dist/server.test.js +547 -0
  45. package/dist/server.test.js.map +1 -0
  46. package/dist/tools/context-stats.d.ts +2 -2
  47. package/dist/tools/context-stats.d.ts.map +1 -1
  48. package/dist/tools/context-stats.js +2 -1
  49. package/dist/tools/context-stats.js.map +1 -1
  50. package/dist/tools/context-stats.test.d.ts +5 -0
  51. package/dist/tools/context-stats.test.d.ts.map +1 -0
  52. package/dist/tools/context-stats.test.js +465 -0
  53. package/dist/tools/context-stats.test.js.map +1 -0
  54. package/dist/tools/get-trace-url.d.ts.map +1 -1
  55. package/dist/tools/get-trace-url.js +5 -1
  56. package/dist/tools/get-trace-url.js.map +1 -1
  57. package/dist/tools/get-trace-url.test.d.ts +5 -0
  58. package/dist/tools/get-trace-url.test.d.ts.map +1 -0
  59. package/dist/tools/get-trace-url.test.js +429 -0
  60. package/dist/tools/get-trace-url.test.js.map +1 -0
  61. package/dist/tools/health-check.d.ts +9 -2
  62. package/dist/tools/health-check.d.ts.map +1 -1
  63. package/dist/tools/health-check.js +66 -27
  64. package/dist/tools/health-check.js.map +1 -1
  65. package/dist/tools/health-check.test.d.ts +5 -0
  66. package/dist/tools/health-check.test.d.ts.map +1 -0
  67. package/dist/tools/health-check.test.js +386 -0
  68. package/dist/tools/health-check.test.js.map +1 -0
  69. package/dist/tools/index.d.ts +1 -0
  70. package/dist/tools/index.d.ts.map +1 -1
  71. package/dist/tools/index.js +1 -0
  72. package/dist/tools/index.js.map +1 -1
  73. package/dist/tools/query-llm-events.d.ts +82 -0
  74. package/dist/tools/query-llm-events.d.ts.map +1 -0
  75. package/dist/tools/query-llm-events.js +60 -0
  76. package/dist/tools/query-llm-events.js.map +1 -0
  77. package/dist/tools/query-llm-events.test.d.ts +5 -0
  78. package/dist/tools/query-llm-events.test.d.ts.map +1 -0
  79. package/dist/tools/query-llm-events.test.js +111 -0
  80. package/dist/tools/query-llm-events.test.js.map +1 -0
  81. package/dist/tools/query-logs.d.ts +15 -8
  82. package/dist/tools/query-logs.d.ts.map +1 -1
  83. package/dist/tools/query-logs.js +11 -10
  84. package/dist/tools/query-logs.js.map +1 -1
  85. package/dist/tools/query-logs.test.d.ts +5 -0
  86. package/dist/tools/query-logs.test.d.ts.map +1 -0
  87. package/dist/tools/query-logs.test.js +688 -0
  88. package/dist/tools/query-logs.test.js.map +1 -0
  89. package/dist/tools/query-metrics.d.ts +13 -15
  90. package/dist/tools/query-metrics.d.ts.map +1 -1
  91. package/dist/tools/query-metrics.js +12 -13
  92. package/dist/tools/query-metrics.js.map +1 -1
  93. package/dist/tools/query-metrics.test.d.ts +5 -0
  94. package/dist/tools/query-metrics.test.d.ts.map +1 -0
  95. package/dist/tools/query-metrics.test.js +597 -0
  96. package/dist/tools/query-metrics.test.js.map +1 -0
  97. package/dist/tools/query-traces.d.ts +19 -14
  98. package/dist/tools/query-traces.d.ts.map +1 -1
  99. package/dist/tools/query-traces.js +14 -14
  100. package/dist/tools/query-traces.js.map +1 -1
  101. package/dist/tools/query-traces.test.d.ts +5 -0
  102. package/dist/tools/query-traces.test.d.ts.map +1 -0
  103. package/dist/tools/query-traces.test.js +643 -0
  104. package/dist/tools/query-traces.test.js.map +1 -0
  105. package/dist/tools/setup-claudeignore.d.ts +36 -10
  106. package/dist/tools/setup-claudeignore.d.ts.map +1 -1
  107. package/dist/tools/setup-claudeignore.js +193 -33
  108. package/dist/tools/setup-claudeignore.js.map +1 -1
  109. package/dist/tools/setup-claudeignore.test.d.ts +2 -0
  110. package/dist/tools/setup-claudeignore.test.d.ts.map +1 -0
  111. package/dist/tools/setup-claudeignore.test.js +481 -0
  112. package/dist/tools/setup-claudeignore.test.js.map +1 -0
  113. package/dist/tools/signoz.integration.test.d.ts +8 -0
  114. package/dist/tools/signoz.integration.test.d.ts.map +1 -0
  115. package/dist/tools/signoz.integration.test.js +141 -0
  116. package/dist/tools/signoz.integration.test.js.map +1 -0
  117. package/package.json +6 -3
@@ -0,0 +1,429 @@
1
+ /**
2
+ * Unit tests for get-trace-url tool
3
+ */
4
+ import { describe, it } from 'node:test';
5
+ import assert from 'node:assert';
6
+ import { getTraceUrlSchema } from './get-trace-url.js';
7
+ describe('getTraceUrl', () => {
8
+ describe('URL generation from trace IDs', () => {
9
+ // Store original env vars
10
+ const originalEnv = { ...process.env };
11
+ // Helper to set and reset env
12
+ const setEnv = (url) => {
13
+ if (url === undefined) {
14
+ delete process.env.SIGNOZ_URL;
15
+ delete process.env.OTEL_EXPORTER_OTLP_ENDPOINT;
16
+ }
17
+ else {
18
+ process.env.SIGNOZ_URL = url;
19
+ }
20
+ // Force reimport by clearing the module cache
21
+ delete require.cache[require.resolve('../lib/constants.js')];
22
+ };
23
+ const teardown = () => {
24
+ process.env = originalEnv;
25
+ delete require.cache[require.resolve('../lib/constants.js')];
26
+ };
27
+ it('should generate trace URL from cloud ingest endpoint', async () => {
28
+ // Mock the constants module
29
+ const mockGetTraceUrl = async (input) => {
30
+ const SIGNOZ_URL = 'https://ingest.us.signoz.cloud/v1/traces';
31
+ if (!SIGNOZ_URL) {
32
+ return {
33
+ error: 'SigNoz URL not configured. Set SIGNOZ_URL or OTEL_EXPORTER_OTLP_ENDPOINT environment variable.',
34
+ };
35
+ }
36
+ let baseUrl = SIGNOZ_URL
37
+ .replace('/v1/traces', '')
38
+ .replace('/v1/metrics', '')
39
+ .replace('/v1/logs', '')
40
+ .replace('ingest.', '')
41
+ .replace(':4318', '')
42
+ .replace(':4317', '');
43
+ if (!baseUrl.startsWith('http')) {
44
+ baseUrl = `https://${baseUrl}`;
45
+ }
46
+ baseUrl = baseUrl.replace(/\/+$/, '');
47
+ const traceUrl = `${baseUrl}/trace/${input.traceId}`;
48
+ return {
49
+ traceId: input.traceId,
50
+ url: traceUrl,
51
+ message: `Open this URL in your browser to view the trace in SigNoz`,
52
+ };
53
+ };
54
+ const result = await mockGetTraceUrl({ traceId: 'abc123xyz' });
55
+ assert.strictEqual(result.traceId, 'abc123xyz');
56
+ assert.strictEqual(result.url, 'https://us.signoz.cloud/trace/abc123xyz');
57
+ assert.ok(result.message.includes('SigNoz'));
58
+ });
59
+ it('should handle localhost endpoint with port 4318', async () => {
60
+ const mockGetTraceUrl = async (input) => {
61
+ const SIGNOZ_URL = 'http://localhost:4318/v1/traces';
62
+ if (!SIGNOZ_URL) {
63
+ return {
64
+ error: 'SigNoz URL not configured. Set SIGNOZ_URL or OTEL_EXPORTER_OTLP_ENDPOINT environment variable.',
65
+ };
66
+ }
67
+ let baseUrl = SIGNOZ_URL
68
+ .replace('/v1/traces', '')
69
+ .replace('/v1/metrics', '')
70
+ .replace('/v1/logs', '')
71
+ .replace('ingest.', '')
72
+ .replace(':4318', '')
73
+ .replace(':4317', '');
74
+ if (!baseUrl.startsWith('http')) {
75
+ baseUrl = `https://${baseUrl}`;
76
+ }
77
+ baseUrl = baseUrl.replace(/\/+$/, '');
78
+ const traceUrl = `${baseUrl}/trace/${input.traceId}`;
79
+ return {
80
+ traceId: input.traceId,
81
+ url: traceUrl,
82
+ message: `Open this URL in your browser to view the trace in SigNoz`,
83
+ };
84
+ };
85
+ const result = await mockGetTraceUrl({ traceId: 'trace-123' });
86
+ assert.strictEqual(result.url, 'http://localhost/trace/trace-123');
87
+ });
88
+ it('should handle localhost endpoint with port 4317', async () => {
89
+ const mockGetTraceUrl = async (input) => {
90
+ const SIGNOZ_URL = 'http://localhost:4317/v1/traces';
91
+ if (!SIGNOZ_URL) {
92
+ return {
93
+ error: 'SigNoz URL not configured. Set SIGNOZ_URL or OTEL_EXPORTER_OTLP_ENDPOINT environment variable.',
94
+ };
95
+ }
96
+ let baseUrl = SIGNOZ_URL
97
+ .replace('/v1/traces', '')
98
+ .replace('/v1/metrics', '')
99
+ .replace('/v1/logs', '')
100
+ .replace('ingest.', '')
101
+ .replace(':4318', '')
102
+ .replace(':4317', '');
103
+ if (!baseUrl.startsWith('http')) {
104
+ baseUrl = `https://${baseUrl}`;
105
+ }
106
+ baseUrl = baseUrl.replace(/\/+$/, '');
107
+ const traceUrl = `${baseUrl}/trace/${input.traceId}`;
108
+ return {
109
+ traceId: input.traceId,
110
+ url: traceUrl,
111
+ message: `Open this URL in your browser to view the trace in SigNoz`,
112
+ };
113
+ };
114
+ const result = await mockGetTraceUrl({ traceId: 'test-trace-456' });
115
+ assert.strictEqual(result.url, 'http://localhost/trace/test-trace-456');
116
+ });
117
+ it('should strip trailing slashes from base URL', async () => {
118
+ const mockGetTraceUrl = async (input) => {
119
+ const SIGNOZ_URL = 'https://us.signoz.cloud////';
120
+ if (!SIGNOZ_URL) {
121
+ return {
122
+ error: 'SigNoz URL not configured. Set SIGNOZ_URL or OTEL_EXPORTER_OTLP_ENDPOINT environment variable.',
123
+ };
124
+ }
125
+ let baseUrl = SIGNOZ_URL
126
+ .replace('/v1/traces', '')
127
+ .replace('/v1/metrics', '')
128
+ .replace('/v1/logs', '')
129
+ .replace('ingest.', '')
130
+ .replace(':4318', '')
131
+ .replace(':4317', '');
132
+ if (!baseUrl.startsWith('http')) {
133
+ baseUrl = `https://${baseUrl}`;
134
+ }
135
+ baseUrl = baseUrl.replace(/\/+$/, '');
136
+ const traceUrl = `${baseUrl}/trace/${input.traceId}`;
137
+ return {
138
+ traceId: input.traceId,
139
+ url: traceUrl,
140
+ message: `Open this URL in your browser to view the trace in SigNoz`,
141
+ };
142
+ };
143
+ const result = await mockGetTraceUrl({ traceId: 'xyz789' });
144
+ assert.strictEqual(result.url, 'https://us.signoz.cloud/trace/xyz789');
145
+ assert.ok(!result.url.includes('//trace'));
146
+ });
147
+ it('should handle v1/metrics endpoint', async () => {
148
+ const mockGetTraceUrl = async (input) => {
149
+ const SIGNOZ_URL = 'https://ingest.eu.signoz.cloud/v1/metrics';
150
+ if (!SIGNOZ_URL) {
151
+ return {
152
+ error: 'SigNoz URL not configured. Set SIGNOZ_URL or OTEL_EXPORTER_OTLP_ENDPOINT environment variable.',
153
+ };
154
+ }
155
+ let baseUrl = SIGNOZ_URL
156
+ .replace('/v1/traces', '')
157
+ .replace('/v1/metrics', '')
158
+ .replace('/v1/logs', '')
159
+ .replace('ingest.', '')
160
+ .replace(':4318', '')
161
+ .replace(':4317', '');
162
+ if (!baseUrl.startsWith('http')) {
163
+ baseUrl = `https://${baseUrl}`;
164
+ }
165
+ baseUrl = baseUrl.replace(/\/+$/, '');
166
+ const traceUrl = `${baseUrl}/trace/${input.traceId}`;
167
+ return {
168
+ traceId: input.traceId,
169
+ url: traceUrl,
170
+ message: `Open this URL in your browser to view the trace in SigNoz`,
171
+ };
172
+ };
173
+ const result = await mockGetTraceUrl({ traceId: 'eu-trace-123' });
174
+ assert.strictEqual(result.url, 'https://eu.signoz.cloud/trace/eu-trace-123');
175
+ });
176
+ it('should handle v1/logs endpoint', async () => {
177
+ const mockGetTraceUrl = async (input) => {
178
+ const SIGNOZ_URL = 'https://ingest.ap.signoz.cloud/v1/logs';
179
+ if (!SIGNOZ_URL) {
180
+ return {
181
+ error: 'SigNoz URL not configured. Set SIGNOZ_URL or OTEL_EXPORTER_OTLP_ENDPOINT environment variable.',
182
+ };
183
+ }
184
+ let baseUrl = SIGNOZ_URL
185
+ .replace('/v1/traces', '')
186
+ .replace('/v1/metrics', '')
187
+ .replace('/v1/logs', '')
188
+ .replace('ingest.', '')
189
+ .replace(':4318', '')
190
+ .replace(':4317', '');
191
+ if (!baseUrl.startsWith('http')) {
192
+ baseUrl = `https://${baseUrl}`;
193
+ }
194
+ baseUrl = baseUrl.replace(/\/+$/, '');
195
+ const traceUrl = `${baseUrl}/trace/${input.traceId}`;
196
+ return {
197
+ traceId: input.traceId,
198
+ url: traceUrl,
199
+ message: `Open this URL in your browser to view the trace in SigNoz`,
200
+ };
201
+ };
202
+ const result = await mockGetTraceUrl({ traceId: 'ap-trace-456' });
203
+ assert.strictEqual(result.url, 'https://ap.signoz.cloud/trace/ap-trace-456');
204
+ });
205
+ });
206
+ describe('environment variable handling for SigNoz base URL', () => {
207
+ it('should use SIGNOZ_URL when set', async () => {
208
+ const mockGetTraceUrl = async (input) => {
209
+ const SIGNOZ_URL = 'https://custom.domain.com/v1/traces';
210
+ if (!SIGNOZ_URL) {
211
+ return {
212
+ error: 'SigNoz URL not configured. Set SIGNOZ_URL or OTEL_EXPORTER_OTLP_ENDPOINT environment variable.',
213
+ };
214
+ }
215
+ let baseUrl = SIGNOZ_URL
216
+ .replace('/v1/traces', '')
217
+ .replace('/v1/metrics', '')
218
+ .replace('/v1/logs', '')
219
+ .replace('ingest.', '')
220
+ .replace(':4318', '')
221
+ .replace(':4317', '');
222
+ if (!baseUrl.startsWith('http')) {
223
+ baseUrl = `https://${baseUrl}`;
224
+ }
225
+ baseUrl = baseUrl.replace(/\/+$/, '');
226
+ const traceUrl = `${baseUrl}/trace/${input.traceId}`;
227
+ return {
228
+ traceId: input.traceId,
229
+ url: traceUrl,
230
+ message: `Open this URL in your browser to view the trace in SigNoz`,
231
+ };
232
+ };
233
+ const result = await mockGetTraceUrl({ traceId: 'test-123' });
234
+ assert.ok(result.url);
235
+ assert.ok(result.url.includes('custom.domain.com'));
236
+ });
237
+ it('should use OTEL_EXPORTER_OTLP_ENDPOINT as fallback', async () => {
238
+ const mockGetTraceUrl = async (input) => {
239
+ const SIGNOZ_URL = 'http://localhost:4318/v1/traces';
240
+ if (!SIGNOZ_URL) {
241
+ return {
242
+ error: 'SigNoz URL not configured. Set SIGNOZ_URL or OTEL_EXPORTER_OTLP_ENDPOINT environment variable.',
243
+ };
244
+ }
245
+ let baseUrl = SIGNOZ_URL
246
+ .replace('/v1/traces', '')
247
+ .replace('/v1/metrics', '')
248
+ .replace('/v1/logs', '')
249
+ .replace('ingest.', '')
250
+ .replace(':4318', '')
251
+ .replace(':4317', '');
252
+ if (!baseUrl.startsWith('http')) {
253
+ baseUrl = `https://${baseUrl}`;
254
+ }
255
+ baseUrl = baseUrl.replace(/\/+$/, '');
256
+ const traceUrl = `${baseUrl}/trace/${input.traceId}`;
257
+ return {
258
+ traceId: input.traceId,
259
+ url: traceUrl,
260
+ message: `Open this URL in your browser to view the trace in SigNoz`,
261
+ };
262
+ };
263
+ const result = await mockGetTraceUrl({ traceId: 'fallback-trace' });
264
+ assert.ok(result.url);
265
+ assert.ok('url' in result && !result.url.includes('undefined'));
266
+ });
267
+ });
268
+ describe('error cases for missing config', () => {
269
+ it('should return error when SIGNOZ_URL is not configured', async () => {
270
+ const mockGetTraceUrl = async (input) => {
271
+ const SIGNOZ_URL = '';
272
+ if (!SIGNOZ_URL) {
273
+ return {
274
+ error: 'SigNoz URL not configured. Set SIGNOZ_URL or OTEL_EXPORTER_OTLP_ENDPOINT environment variable.',
275
+ };
276
+ }
277
+ let baseUrl = SIGNOZ_URL
278
+ .replace('/v1/traces', '')
279
+ .replace('/v1/metrics', '')
280
+ .replace('/v1/logs', '')
281
+ .replace('ingest.', '')
282
+ .replace(':4318', '')
283
+ .replace(':4317', '');
284
+ if (!baseUrl.startsWith('http')) {
285
+ baseUrl = `https://${baseUrl}`;
286
+ }
287
+ baseUrl = baseUrl.replace(/\/+$/, '');
288
+ const traceUrl = `${baseUrl}/trace/${input.traceId}`;
289
+ return {
290
+ traceId: input.traceId,
291
+ url: traceUrl,
292
+ message: `Open this URL in your browser to view the trace in SigNoz`,
293
+ };
294
+ };
295
+ const result = await mockGetTraceUrl({ traceId: 'any-trace-id' });
296
+ assert.ok('error' in result);
297
+ assert.strictEqual(result.error, 'SigNoz URL not configured. Set SIGNOZ_URL or OTEL_EXPORTER_OTLP_ENDPOINT environment variable.');
298
+ assert.ok(!('url' in result));
299
+ });
300
+ it('should return error with helpful message mentioning both env vars', async () => {
301
+ const mockGetTraceUrl = async (input) => {
302
+ const SIGNOZ_URL = '';
303
+ if (!SIGNOZ_URL) {
304
+ return {
305
+ error: 'SigNoz URL not configured. Set SIGNOZ_URL or OTEL_EXPORTER_OTLP_ENDPOINT environment variable.',
306
+ };
307
+ }
308
+ let baseUrl = SIGNOZ_URL
309
+ .replace('/v1/traces', '')
310
+ .replace('/v1/metrics', '')
311
+ .replace('/v1/logs', '')
312
+ .replace('ingest.', '')
313
+ .replace(':4318', '')
314
+ .replace(':4317', '');
315
+ if (!baseUrl.startsWith('http')) {
316
+ baseUrl = `https://${baseUrl}`;
317
+ }
318
+ baseUrl = baseUrl.replace(/\/+$/, '');
319
+ const traceUrl = `${baseUrl}/trace/${input.traceId}`;
320
+ return {
321
+ traceId: input.traceId,
322
+ url: traceUrl,
323
+ message: `Open this URL in your browser to view the trace in SigNoz`,
324
+ };
325
+ };
326
+ const result = await mockGetTraceUrl({ traceId: 'test-id' });
327
+ assert.ok(result.error);
328
+ assert.ok(result.error.includes('SIGNOZ_URL'));
329
+ assert.ok(result.error.includes('OTEL_EXPORTER_OTLP_ENDPOINT'));
330
+ });
331
+ });
332
+ describe('schema validation', () => {
333
+ it('should validate traceId is valid hex format', async () => {
334
+ // Valid 32-char hex trace ID
335
+ const validInput = { traceId: 'abcdef1234567890abcdef1234567890' };
336
+ const result = getTraceUrlSchema.safeParse(validInput);
337
+ assert.ok(result.success);
338
+ });
339
+ it('should accept 16-char hex trace ID', async () => {
340
+ const validInput = { traceId: 'abcdef1234567890' };
341
+ const result = getTraceUrlSchema.safeParse(validInput);
342
+ assert.ok(result.success);
343
+ });
344
+ it('should reject input without traceId', async () => {
345
+ const invalidInput = {};
346
+ const result = getTraceUrlSchema.safeParse(invalidInput);
347
+ assert.ok(!result.success);
348
+ });
349
+ it('should reject non-string traceId', async () => {
350
+ const invalidInput = { traceId: 12345 };
351
+ const result = getTraceUrlSchema.safeParse(invalidInput);
352
+ assert.ok(!result.success);
353
+ });
354
+ it('should reject empty string traceId (security: must be valid hex)', async () => {
355
+ const input = { traceId: '' };
356
+ const result = getTraceUrlSchema.safeParse(input);
357
+ assert.ok(!result.success);
358
+ });
359
+ it('should reject traceId with special characters (security: must be hex only)', async () => {
360
+ const input = { traceId: 'trace-id-with-dashes_and_underscores.and.dots' };
361
+ const result = getTraceUrlSchema.safeParse(input);
362
+ assert.ok(!result.success);
363
+ });
364
+ });
365
+ describe('response format', () => {
366
+ it('should return object with traceId, url, and message on success', async () => {
367
+ const mockGetTraceUrl = async (input) => {
368
+ const SIGNOZ_URL = 'https://us.signoz.cloud';
369
+ if (!SIGNOZ_URL) {
370
+ return {
371
+ error: 'SigNoz URL not configured. Set SIGNOZ_URL or OTEL_EXPORTER_OTLP_ENDPOINT environment variable.',
372
+ };
373
+ }
374
+ let baseUrl = SIGNOZ_URL
375
+ .replace('/v1/traces', '')
376
+ .replace('/v1/metrics', '')
377
+ .replace('/v1/logs', '')
378
+ .replace('ingest.', '')
379
+ .replace(':4318', '')
380
+ .replace(':4317', '');
381
+ if (!baseUrl.startsWith('http')) {
382
+ baseUrl = `https://${baseUrl}`;
383
+ }
384
+ baseUrl = baseUrl.replace(/\/+$/, '');
385
+ const traceUrl = `${baseUrl}/trace/${input.traceId}`;
386
+ return {
387
+ traceId: input.traceId,
388
+ url: traceUrl,
389
+ message: `Open this URL in your browser to view the trace in SigNoz`,
390
+ };
391
+ };
392
+ const result = await mockGetTraceUrl({ traceId: 'test-123' });
393
+ assert.ok('traceId' in result);
394
+ assert.ok('url' in result);
395
+ assert.ok('message' in result);
396
+ assert.strictEqual(result.traceId, 'test-123');
397
+ });
398
+ it('should return object with error on missing config', async () => {
399
+ const mockGetTraceUrl = async (input) => {
400
+ const SIGNOZ_URL = '';
401
+ if (!SIGNOZ_URL) {
402
+ return {
403
+ error: 'SigNoz URL not configured. Set SIGNOZ_URL or OTEL_EXPORTER_OTLP_ENDPOINT environment variable.',
404
+ };
405
+ }
406
+ let baseUrl = SIGNOZ_URL
407
+ .replace('/v1/traces', '')
408
+ .replace('/v1/metrics', '')
409
+ .replace('/v1/logs', '')
410
+ .replace('ingest.', '')
411
+ .replace(':4318', '')
412
+ .replace(':4317', '');
413
+ if (!baseUrl.startsWith('http')) {
414
+ baseUrl = `https://${baseUrl}`;
415
+ }
416
+ baseUrl = baseUrl.replace(/\/+$/, '');
417
+ const traceUrl = `${baseUrl}/trace/${input.traceId}`;
418
+ return {
419
+ traceId: input.traceId,
420
+ url: traceUrl,
421
+ message: `Open this URL in your browser to view the trace in SigNoz`,
422
+ };
423
+ };
424
+ const result = await mockGetTraceUrl({ traceId: 'test-123' });
425
+ assert.ok('error' in result);
426
+ });
427
+ });
428
+ });
429
+ //# sourceMappingURL=get-trace-url.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-trace-url.test.js","sourceRoot":"","sources":["../../src/tools/get-trace-url.test.ts"],"names":[],"mappings":"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"}
@@ -16,13 +16,21 @@ interface FileStats {
16
16
  modified: string;
17
17
  lines?: number;
18
18
  }
19
+ interface DirectoryInfo {
20
+ path: string;
21
+ source: 'global' | 'local';
22
+ status: string;
23
+ files?: FileStats[];
24
+ }
19
25
  export declare function healthCheck(input: HealthCheckInput): Promise<{
20
26
  status: "healthy" | "degraded" | "unhealthy";
21
27
  backends: {
22
28
  local: {
23
29
  status: string;
24
30
  message?: string;
25
- files?: FileStats[];
31
+ directories: DirectoryInfo[];
32
+ totalFiles?: number;
33
+ totalSize?: string;
26
34
  };
27
35
  signoz: {
28
36
  status: string;
@@ -30,7 +38,6 @@ export declare function healthCheck(input: HealthCheckInput): Promise<{
30
38
  configured: boolean;
31
39
  };
32
40
  };
33
- telemetryDir: string;
34
41
  today: string;
35
42
  summary?: string;
36
43
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"health-check.d.ts","sourceRoot":"","sources":["../../src/tools/health-check.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,iBAAiB;;;;;;EAE5B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEjE,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAqBD,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB;YAE7C,SAAS,GAAG,UAAU,GAAG,WAAW;cAClC;QACR,KAAK,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,SAAS,EAAE,CAAA;SAAE,CAAC;QACjE,MAAM,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,OAAO,CAAA;SAAE,CAAC;KACnE;kBACa,MAAM;WACb,MAAM;cACH,MAAM;GAyEnB;AAED,eAAO,MAAM,eAAe;;;;;;;;;;;CAK3B,CAAC"}
1
+ {"version":3,"file":"health-check.d.ts","sourceRoot":"","sources":["../../src/tools/health-check.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,iBAAiB;;;;;;EAE5B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEjE,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;CACrB;AAqBD,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB;YAE7C,SAAS,GAAG,UAAU,GAAG,WAAW;cAClC;QACR,KAAK,EAAE;YACL,MAAM,EAAE,MAAM,CAAC;YACf,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,WAAW,EAAE,aAAa,EAAE,CAAC;YAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB,CAAC;QACF,MAAM,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,OAAO,CAAA;SAAE,CAAC;KACnE;WACM,MAAM;cACH,MAAM;GAsHnB;AAED,eAAO,MAAM,eAAe;;;;;;;;;;;CAK3B,CAAC"}
@@ -4,9 +4,9 @@
4
4
  import { z } from 'zod';
5
5
  import { existsSync, readdirSync, statSync } from 'fs';
6
6
  import { join } from 'path';
7
- import { LocalJsonlBackend } from '../backends/local-jsonl.js';
7
+ import { MultiDirectoryBackend } from '../backends/local-jsonl.js';
8
8
  import { SigNozApiBackend } from '../backends/signoz-api.js';
9
- import { TELEMETRY_DIR, SIGNOZ_URL, SIGNOZ_API_KEY } from '../lib/constants.js';
9
+ import { SIGNOZ_URL, SIGNOZ_API_KEY } from '../lib/constants.js';
10
10
  import { getDateString } from '../lib/file-utils.js';
11
11
  export const healthCheckSchema = z.object({
12
12
  verbose: z.boolean().default(false).describe('Include detailed file information'),
@@ -35,33 +35,67 @@ export async function healthCheck(input) {
35
35
  const result = {
36
36
  status: 'healthy',
37
37
  backends: {
38
- local: { status: 'unknown' },
38
+ local: { status: 'unknown', directories: [] },
39
39
  signoz: { status: 'unknown', configured: false },
40
40
  },
41
- telemetryDir: TELEMETRY_DIR,
42
41
  today: getDateString(),
43
42
  };
44
- // Check local backend
45
- const local = new LocalJsonlBackend();
43
+ // Check local backend (now multi-directory)
44
+ const local = new MultiDirectoryBackend();
46
45
  const localHealth = await local.healthCheck();
47
- result.backends.local = {
48
- status: localHealth.status,
49
- message: localHealth.message,
50
- };
51
- // Get file details if verbose
52
- if (input.verbose && existsSync(TELEMETRY_DIR)) {
53
- try {
54
- const files = readdirSync(TELEMETRY_DIR)
55
- .filter(f => f.endsWith('.jsonl'))
56
- .map(f => getFileStats(join(TELEMETRY_DIR, f)))
57
- .filter((f) => f !== null)
58
- .sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime())
59
- .slice(0, 10);
60
- result.backends.local.files = files;
61
- }
62
- catch {
63
- // Ignore file listing errors
46
+ const directories = local.getDirectories();
47
+ let totalFiles = 0;
48
+ let totalSize = 0;
49
+ // Get detailed info for each directory
50
+ for (const dir of directories) {
51
+ const dirInfo = {
52
+ path: dir.path,
53
+ source: dir.source,
54
+ status: 'ok',
55
+ };
56
+ if (input.verbose && existsSync(dir.path)) {
57
+ try {
58
+ // Use bounded insertion to keep only top 10 files by mtime (efficient for large dirs)
59
+ const topFiles = [];
60
+ const filenames = readdirSync(dir.path);
61
+ for (const filename of filenames) {
62
+ if (!filename.endsWith('.jsonl'))
63
+ continue;
64
+ const stats = getFileStats(join(dir.path, filename));
65
+ if (!stats)
66
+ continue;
67
+ // Insert into sorted array, keeping only top 10
68
+ const mtime = new Date(stats.modified).getTime();
69
+ let inserted = false;
70
+ for (let i = 0; i < topFiles.length; i++) {
71
+ if (mtime > new Date(topFiles[i].modified).getTime()) {
72
+ topFiles.splice(i, 0, stats);
73
+ inserted = true;
74
+ break;
75
+ }
76
+ }
77
+ if (!inserted && topFiles.length < 10) {
78
+ topFiles.push(stats);
79
+ }
80
+ if (topFiles.length > 10) {
81
+ topFiles.pop();
82
+ }
83
+ }
84
+ dirInfo.files = topFiles;
85
+ totalFiles += topFiles.length;
86
+ totalSize += topFiles.reduce((sum, f) => sum + f.size, 0);
87
+ }
88
+ catch {
89
+ dirInfo.status = 'error';
90
+ }
64
91
  }
92
+ result.backends.local.directories.push(dirInfo);
93
+ }
94
+ result.backends.local.status = localHealth.status;
95
+ result.backends.local.message = localHealth.message;
96
+ if (input.verbose) {
97
+ result.backends.local.totalFiles = totalFiles;
98
+ result.backends.local.totalSize = formatBytes(totalSize);
65
99
  }
66
100
  // Check SigNoz backend
67
101
  if (SIGNOZ_URL && SIGNOZ_API_KEY) {
@@ -84,11 +118,16 @@ export async function healthCheck(input) {
84
118
  }
85
119
  // Build summary
86
120
  const parts = [];
121
+ const dirCount = result.backends.local.directories.length;
122
+ const globalDirs = result.backends.local.directories.filter(d => d.source === 'global').length;
123
+ const localDirs = result.backends.local.directories.filter(d => d.source === 'local').length;
87
124
  if (result.backends.local.status === 'ok') {
88
- parts.push('Local: OK');
89
- if (result.backends.local.files?.length) {
90
- const totalSize = result.backends.local.files.reduce((sum, f) => sum + f.size, 0);
91
- parts.push(`(${result.backends.local.files.length} files, ${formatBytes(totalSize)})`);
125
+ parts.push(`Local: ${dirCount} dir${dirCount !== 1 ? 's' : ''}`);
126
+ if (globalDirs > 0 && localDirs > 0) {
127
+ parts.push(`(${globalDirs} global, ${localDirs} project)`);
128
+ }
129
+ if (input.verbose && totalFiles > 0) {
130
+ parts.push(`${totalFiles} files, ${formatBytes(totalSize)}`);
92
131
  }
93
132
  }
94
133
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"health-check.js","sourceRoot":"","sources":["../../src/tools/health-check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"health-check.js","sourceRoot":"","sources":["../../src/tools/health-check.ts"],"names":[],"mappings":"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"}