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,5 @@
1
+ /**
2
+ * Unit tests for health-check tool
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=health-check.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-check.test.d.ts","sourceRoot":"","sources":["../../src/tools/health-check.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,386 @@
1
+ /**
2
+ * Unit tests for health-check tool
3
+ */
4
+ import { describe, it } from 'node:test';
5
+ import * as assert from 'node:assert';
6
+ import { healthCheck, healthCheckSchema, healthCheckTool } from './health-check.js';
7
+ describe('health-check tool', () => {
8
+ // Test the schema validation
9
+ describe('healthCheckSchema', () => {
10
+ it('should validate input with verbose=true', () => {
11
+ const result = healthCheckSchema.parse({ verbose: true });
12
+ assert.deepStrictEqual(result, { verbose: true });
13
+ });
14
+ it('should validate input with verbose=false', () => {
15
+ const result = healthCheckSchema.parse({ verbose: false });
16
+ assert.deepStrictEqual(result, { verbose: false });
17
+ });
18
+ it('should default verbose to false when not provided', () => {
19
+ const result = healthCheckSchema.parse({});
20
+ assert.deepStrictEqual(result, { verbose: false });
21
+ });
22
+ it('should reject non-boolean verbose values', () => {
23
+ assert.throws(() => healthCheckSchema.parse({ verbose: 'yes' }), { name: 'ZodError' });
24
+ });
25
+ });
26
+ // Test health check handler function
27
+ describe('healthCheck handler', () => {
28
+ it('should return object with required fields', async () => {
29
+ const result = await healthCheck({ verbose: false });
30
+ assert.ok(result);
31
+ assert.ok(result.status);
32
+ assert.ok(result.backends);
33
+ assert.ok(result.today);
34
+ assert.ok(result.summary);
35
+ });
36
+ it('should return valid status value', async () => {
37
+ const result = await healthCheck({ verbose: false });
38
+ const validStatuses = ['healthy', 'degraded', 'unhealthy'];
39
+ assert.ok(validStatuses.includes(result.status));
40
+ });
41
+ it('should include directories array in local backend', async () => {
42
+ const result = await healthCheck({ verbose: false });
43
+ assert.ok(Array.isArray(result.backends.local.directories));
44
+ });
45
+ it('should include today date string in YYYY-MM-DD format', async () => {
46
+ const result = await healthCheck({ verbose: false });
47
+ assert.ok(result.today);
48
+ assert.match(result.today, /^\d{4}-\d{2}-\d{2}$/);
49
+ });
50
+ it('should have local backend with status field', async () => {
51
+ const result = await healthCheck({ verbose: false });
52
+ assert.ok(result.backends.local);
53
+ assert.ok(result.backends.local.status);
54
+ const validLocalStatuses = ['ok', 'error', 'unknown'];
55
+ assert.ok(validLocalStatuses.includes(result.backends.local.status));
56
+ });
57
+ it('should have local backend with optional message', async () => {
58
+ const result = await healthCheck({ verbose: false });
59
+ if (result.backends.local.message) {
60
+ assert.strictEqual(typeof result.backends.local.message, 'string');
61
+ }
62
+ });
63
+ it('should have signoz backend with status field', async () => {
64
+ const result = await healthCheck({ verbose: false });
65
+ assert.ok(result.backends.signoz);
66
+ assert.ok(result.backends.signoz.status);
67
+ const validSignozStatuses = ['ok', 'error', 'not_configured', 'unknown'];
68
+ assert.ok(validSignozStatuses.includes(result.backends.signoz.status));
69
+ });
70
+ it('should have signoz backend configured flag', async () => {
71
+ const result = await healthCheck({ verbose: false });
72
+ assert.strictEqual(typeof result.backends.signoz.configured, 'boolean');
73
+ });
74
+ it('should have signoz optional message', async () => {
75
+ const result = await healthCheck({ verbose: false });
76
+ if (result.backends.signoz.message) {
77
+ assert.strictEqual(typeof result.backends.signoz.message, 'string');
78
+ }
79
+ });
80
+ it('should generate summary text', async () => {
81
+ const result = await healthCheck({ verbose: false });
82
+ assert.ok(result.summary);
83
+ assert.strictEqual(typeof result.summary, 'string');
84
+ assert.ok(result.summary.length > 0);
85
+ });
86
+ it('should include directory source (global/local) info', async () => {
87
+ const result = await healthCheck({ verbose: false });
88
+ for (const dir of result.backends.local.directories) {
89
+ assert.ok(['global', 'local'].includes(dir.source));
90
+ assert.ok(dir.path);
91
+ assert.ok(dir.status);
92
+ }
93
+ });
94
+ it('should optionally include files in directories when verbose is true', async () => {
95
+ const result = await healthCheck({ verbose: true });
96
+ for (const dir of result.backends.local.directories) {
97
+ if (dir.files !== undefined) {
98
+ assert.ok(Array.isArray(dir.files));
99
+ }
100
+ }
101
+ });
102
+ it('should limit files to 10 entries maximum per directory in verbose mode', async () => {
103
+ const result = await healthCheck({ verbose: true });
104
+ for (const dir of result.backends.local.directories) {
105
+ if (dir.files) {
106
+ assert.ok(dir.files.length <= 10);
107
+ }
108
+ }
109
+ });
110
+ it('should include file stats with required fields', async () => {
111
+ const result = await healthCheck({ verbose: true });
112
+ for (const dir of result.backends.local.directories) {
113
+ if (dir.files && dir.files.length > 0) {
114
+ for (const file of dir.files) {
115
+ assert.ok(file.name);
116
+ assert.strictEqual(typeof file.name, 'string');
117
+ assert.ok(file.name.length > 0);
118
+ assert.strictEqual(typeof file.size, 'number');
119
+ assert.ok(file.size >= 0);
120
+ assert.ok(file.modified);
121
+ assert.strictEqual(typeof file.modified, 'string');
122
+ // Should be ISO format timestamp
123
+ assert.ok(new Date(file.modified).getTime() > 0);
124
+ }
125
+ }
126
+ }
127
+ });
128
+ it('should sort files by modification time descending in verbose mode', async () => {
129
+ const result = await healthCheck({ verbose: true });
130
+ for (const dir of result.backends.local.directories) {
131
+ if (dir.files && dir.files.length > 1) {
132
+ for (let i = 1; i < dir.files.length; i++) {
133
+ const curr = new Date(dir.files[i].modified).getTime();
134
+ const prev = new Date(dir.files[i - 1].modified).getTime();
135
+ assert.ok(prev >= curr, 'Files should be sorted by modification time (newest first)');
136
+ }
137
+ }
138
+ }
139
+ });
140
+ it('should not throw with missing telemetry directory', async () => {
141
+ // Should handle gracefully if telemetry directory doesn't exist
142
+ const result = await healthCheck({ verbose: false });
143
+ assert.ok(result);
144
+ assert.ok(result.status);
145
+ });
146
+ it('should not throw when listing files in verbose mode', async () => {
147
+ // Should handle errors gracefully
148
+ const result = await healthCheck({ verbose: true });
149
+ assert.ok(result);
150
+ assert.ok(result.status);
151
+ });
152
+ it('should include totalFiles count when verbose is true', async () => {
153
+ const result = await healthCheck({ verbose: true });
154
+ assert.strictEqual(typeof result.backends.local.totalFiles, 'number');
155
+ });
156
+ it('should include totalSize string when verbose is true', async () => {
157
+ const result = await healthCheck({ verbose: true });
158
+ assert.strictEqual(typeof result.backends.local.totalSize, 'string');
159
+ });
160
+ });
161
+ describe('healthCheckTool export', () => {
162
+ it('should have correct tool name', () => {
163
+ assert.strictEqual(healthCheckTool.name, 'obs_health_check');
164
+ });
165
+ it('should have description string', () => {
166
+ assert.ok(healthCheckTool.description);
167
+ assert.strictEqual(typeof healthCheckTool.description, 'string');
168
+ assert.ok(healthCheckTool.description.length > 0);
169
+ });
170
+ it('should have inputSchema property', () => {
171
+ assert.ok(healthCheckTool.inputSchema);
172
+ });
173
+ it('should have handler function', () => {
174
+ assert.strictEqual(typeof healthCheckTool.handler, 'function');
175
+ assert.strictEqual(healthCheckTool.handler, healthCheck);
176
+ });
177
+ it('should call handler with valid input', async () => {
178
+ const result = await healthCheckTool.handler({ verbose: false });
179
+ assert.ok(result);
180
+ assert.ok(result.status);
181
+ });
182
+ it('should call handler with verbose=true', async () => {
183
+ const result = await healthCheckTool.handler({ verbose: true });
184
+ assert.ok(result);
185
+ assert.ok(result.status);
186
+ });
187
+ });
188
+ describe('status determination', () => {
189
+ it('should use healthy as initial status', async () => {
190
+ const result = await healthCheck({ verbose: false });
191
+ // Initial is healthy, may change based on backend health
192
+ assert.ok(['healthy', 'degraded', 'unhealthy'].includes(result.status));
193
+ });
194
+ it('should only set degraded/unhealthy based on backend errors', async () => {
195
+ const result = await healthCheck({ verbose: false });
196
+ // Status should reflect backend health correctly
197
+ if (result.backends.local.status === 'ok' && result.backends.signoz.status === 'ok') {
198
+ // Both ok should give healthy
199
+ assert.strictEqual(result.status, 'healthy');
200
+ }
201
+ });
202
+ });
203
+ describe('signoz configuration handling', () => {
204
+ it('should set configured=false when signoz not configured', async () => {
205
+ const result = await healthCheck({ verbose: false });
206
+ if (!result.backends.signoz.configured) {
207
+ assert.strictEqual(result.backends.signoz.status, 'not_configured');
208
+ if (result.backends.signoz.message) {
209
+ assert.ok(result.backends.signoz.message.includes('environment variables'));
210
+ }
211
+ }
212
+ });
213
+ it('should set configured=true when signoz env vars exist', async () => {
214
+ const result = await healthCheck({ verbose: false });
215
+ if (result.backends.signoz.configured) {
216
+ // Should have attempted connection
217
+ assert.ok(['ok', 'error'].includes(result.backends.signoz.status));
218
+ }
219
+ });
220
+ it('should attempt signoz health check when configured', async () => {
221
+ const result = await healthCheck({ verbose: false });
222
+ if (result.backends.signoz.configured) {
223
+ assert.ok(result.backends.signoz.status);
224
+ assert.ok(['ok', 'error'].includes(result.backends.signoz.status));
225
+ }
226
+ });
227
+ });
228
+ describe('summary generation', () => {
229
+ it('should include Local status in summary', async () => {
230
+ const result = await healthCheck({ verbose: false });
231
+ assert.ok(result.summary);
232
+ assert.ok(result.summary.includes('Local'));
233
+ });
234
+ it('should use pipe separator for multiple components', async () => {
235
+ const result = await healthCheck({ verbose: false });
236
+ if (result.backends.signoz.configured) {
237
+ // If signoz is configured, summary should have pipe separator
238
+ if (result.summary?.includes('SigNoz')) {
239
+ assert.ok(result.summary?.includes('|'));
240
+ }
241
+ }
242
+ });
243
+ it('should show directory count in summary', async () => {
244
+ const result = await healthCheck({ verbose: false });
245
+ if (result.backends.local.status === 'ok') {
246
+ assert.ok(result.summary?.includes('dir'));
247
+ }
248
+ });
249
+ it('should include file count when verbose with files', async () => {
250
+ const result = await healthCheck({ verbose: true });
251
+ if (result.backends.local.status === 'ok' && result.backends.local.totalFiles && result.backends.local.totalFiles > 0) {
252
+ assert.ok(result.summary?.includes('files'));
253
+ }
254
+ });
255
+ it('should show connection status for signoz when configured', async () => {
256
+ const result = await healthCheck({ verbose: false });
257
+ if (result.backends.signoz.configured) {
258
+ assert.ok(result.summary?.includes('SigNoz'));
259
+ }
260
+ });
261
+ });
262
+ describe('multi-directory support', () => {
263
+ it('should return directories array', async () => {
264
+ const result = await healthCheck({ verbose: false });
265
+ assert.ok(Array.isArray(result.backends.local.directories));
266
+ });
267
+ it('should include path for each directory', async () => {
268
+ const result = await healthCheck({ verbose: false });
269
+ for (const dir of result.backends.local.directories) {
270
+ assert.ok(dir.path);
271
+ assert.strictEqual(typeof dir.path, 'string');
272
+ }
273
+ });
274
+ it('should include source type for each directory', async () => {
275
+ const result = await healthCheck({ verbose: false });
276
+ for (const dir of result.backends.local.directories) {
277
+ assert.ok(['global', 'local'].includes(dir.source));
278
+ }
279
+ });
280
+ it('should include status for each directory', async () => {
281
+ const result = await healthCheck({ verbose: false });
282
+ for (const dir of result.backends.local.directories) {
283
+ assert.ok(dir.status);
284
+ }
285
+ });
286
+ });
287
+ describe('verbose mode', () => {
288
+ it('should provide modification timestamps for files', async () => {
289
+ const result = await healthCheck({ verbose: true });
290
+ for (const dir of result.backends.local.directories) {
291
+ if (dir.files) {
292
+ for (const file of dir.files) {
293
+ assert.ok(file.modified);
294
+ // Should be valid ISO timestamp
295
+ const timestamp = new Date(file.modified);
296
+ assert.ok(timestamp.getTime() > 0);
297
+ }
298
+ }
299
+ }
300
+ });
301
+ it('should provide file sizes in bytes', async () => {
302
+ const result = await healthCheck({ verbose: true });
303
+ for (const dir of result.backends.local.directories) {
304
+ if (dir.files) {
305
+ for (const file of dir.files) {
306
+ assert.strictEqual(typeof file.size, 'number');
307
+ assert.ok(file.size >= 0);
308
+ }
309
+ }
310
+ }
311
+ });
312
+ });
313
+ describe('connection status', () => {
314
+ it('should report local backend status', async () => {
315
+ const result = await healthCheck({ verbose: false });
316
+ assert.ok(result.backends.local.status);
317
+ assert.ok(['ok', 'error', 'unknown'].includes(result.backends.local.status));
318
+ });
319
+ it('should report local backend message', async () => {
320
+ const result = await healthCheck({ verbose: false });
321
+ if (result.backends.local.message) {
322
+ assert.strictEqual(typeof result.backends.local.message, 'string');
323
+ assert.ok(result.backends.local.message.length > 0);
324
+ }
325
+ });
326
+ it('should report signoz backend status', async () => {
327
+ const result = await healthCheck({ verbose: false });
328
+ assert.ok(result.backends.signoz.status);
329
+ assert.ok(['ok', 'error', 'not_configured', 'unknown'].includes(result.backends.signoz.status));
330
+ });
331
+ it('should report signoz backend message', async () => {
332
+ const result = await healthCheck({ verbose: false });
333
+ if (result.backends.signoz.message) {
334
+ assert.strictEqual(typeof result.backends.signoz.message, 'string');
335
+ assert.ok(result.backends.signoz.message.length > 0);
336
+ }
337
+ });
338
+ });
339
+ describe('error handling', () => {
340
+ it('should not throw on missing telemetry directory', async () => {
341
+ // Should handle gracefully
342
+ const result = await healthCheck({ verbose: true });
343
+ assert.ok(result);
344
+ assert.ok(result.status);
345
+ });
346
+ it('should not throw on permission denied', async () => {
347
+ // Should handle file access errors
348
+ const result = await healthCheck({ verbose: true });
349
+ assert.ok(result);
350
+ });
351
+ it('should not throw on invalid filenames', async () => {
352
+ // Should skip invalid files
353
+ const result = await healthCheck({ verbose: true });
354
+ assert.ok(result);
355
+ });
356
+ it('should handle empty telemetry directory', async () => {
357
+ const result = await healthCheck({ verbose: true });
358
+ assert.ok(Array.isArray(result.backends.local.directories));
359
+ });
360
+ it('should handle corrupt jsonl files', async () => {
361
+ // Shouldn't crash even with corrupt files
362
+ const result = await healthCheck({ verbose: true });
363
+ assert.ok(result);
364
+ assert.ok(result.status);
365
+ });
366
+ });
367
+ describe('output consistency', () => {
368
+ it('should have consistent result structure on multiple calls', async () => {
369
+ const result1 = await healthCheck({ verbose: false });
370
+ const result2 = await healthCheck({ verbose: false });
371
+ // Both should have same structure
372
+ assert.ok(result1.status);
373
+ assert.ok(result2.status);
374
+ assert.ok(result1.backends);
375
+ assert.ok(result2.backends);
376
+ assert.ok(Array.isArray(result1.backends.local.directories));
377
+ assert.ok(Array.isArray(result2.backends.local.directories));
378
+ });
379
+ it('should maintain directories consistency', async () => {
380
+ const result1 = await healthCheck({ verbose: false });
381
+ const result2 = await healthCheck({ verbose: false });
382
+ assert.strictEqual(result1.backends.local.directories.length, result2.backends.local.directories.length);
383
+ });
384
+ });
385
+ });
386
+ //# sourceMappingURL=health-check.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-check.test.js","sourceRoot":"","sources":["../../src/tools/health-check.test.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  export { queryTracesTool } from './query-traces.js';
5
5
  export { queryMetricsTool } from './query-metrics.js';
6
6
  export { queryLogsTool } from './query-logs.js';
7
+ export { queryLLMEventsTool } from './query-llm-events.js';
7
8
  export { healthCheckTool } from './health-check.js';
8
9
  export { contextStatsTool } from './context-stats.js';
9
10
  export { getTraceUrlTool } from './get-trace-url.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -4,6 +4,7 @@
4
4
  export { queryTracesTool } from './query-traces.js';
5
5
  export { queryMetricsTool } from './query-metrics.js';
6
6
  export { queryLogsTool } from './query-logs.js';
7
+ export { queryLLMEventsTool } from './query-llm-events.js';
7
8
  export { healthCheckTool } from './health-check.js';
8
9
  export { contextStatsTool } from './context-stats.js';
9
10
  export { getTraceUrlTool } from './get-trace-url.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Query LLM events from local JSONL files
3
+ */
4
+ import { z } from 'zod';
5
+ export declare const queryLLMEventsSchema: z.ZodObject<{
6
+ eventName: z.ZodOptional<z.ZodString>;
7
+ model: z.ZodOptional<z.ZodString>;
8
+ provider: z.ZodOptional<z.ZodString>;
9
+ search: z.ZodOptional<z.ZodString>;
10
+ startDate: z.ZodOptional<z.ZodString>;
11
+ endDate: z.ZodOptional<z.ZodString>;
12
+ limit: z.ZodDefault<z.ZodNumber>;
13
+ }, "strip", z.ZodTypeAny, {
14
+ limit: number;
15
+ search?: string | undefined;
16
+ eventName?: string | undefined;
17
+ model?: string | undefined;
18
+ provider?: string | undefined;
19
+ startDate?: string | undefined;
20
+ endDate?: string | undefined;
21
+ }, {
22
+ limit?: number | undefined;
23
+ search?: string | undefined;
24
+ eventName?: string | undefined;
25
+ model?: string | undefined;
26
+ provider?: string | undefined;
27
+ startDate?: string | undefined;
28
+ endDate?: string | undefined;
29
+ }>;
30
+ export type QueryLLMEventsInput = z.input<typeof queryLLMEventsSchema>;
31
+ export declare function queryLLMEvents(rawInput: QueryLLMEventsInput): Promise<{
32
+ count: number;
33
+ summary: {
34
+ byEventName: {
35
+ [k: string]: number;
36
+ };
37
+ byModel: {
38
+ [k: string]: number;
39
+ };
40
+ };
41
+ events: {
42
+ timestamp: string;
43
+ name: string;
44
+ model: unknown;
45
+ provider: unknown;
46
+ inputTokens: unknown;
47
+ outputTokens: unknown;
48
+ durationMs: unknown;
49
+ success: unknown;
50
+ }[];
51
+ }>;
52
+ export declare const queryLLMEventsTool: {
53
+ name: string;
54
+ description: string;
55
+ inputSchema: z.ZodObject<{
56
+ eventName: z.ZodOptional<z.ZodString>;
57
+ model: z.ZodOptional<z.ZodString>;
58
+ provider: z.ZodOptional<z.ZodString>;
59
+ search: z.ZodOptional<z.ZodString>;
60
+ startDate: z.ZodOptional<z.ZodString>;
61
+ endDate: z.ZodOptional<z.ZodString>;
62
+ limit: z.ZodDefault<z.ZodNumber>;
63
+ }, "strip", z.ZodTypeAny, {
64
+ limit: number;
65
+ search?: string | undefined;
66
+ eventName?: string | undefined;
67
+ model?: string | undefined;
68
+ provider?: string | undefined;
69
+ startDate?: string | undefined;
70
+ endDate?: string | undefined;
71
+ }, {
72
+ limit?: number | undefined;
73
+ search?: string | undefined;
74
+ eventName?: string | undefined;
75
+ model?: string | undefined;
76
+ provider?: string | undefined;
77
+ startDate?: string | undefined;
78
+ endDate?: string | undefined;
79
+ }>;
80
+ handler: typeof queryLLMEvents;
81
+ };
82
+ //# sourceMappingURL=query-llm-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-llm-events.d.ts","sourceRoot":"","sources":["../../src/tools/query-llm-events.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;EAQ/B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEvE,wBAAsB,cAAc,CAAC,QAAQ,EAAE,mBAAmB;;;;;;;;;;;;;;;;;;;;GA0CjE;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK9B,CAAC"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Query LLM events from local JSONL files
3
+ */
4
+ import { z } from 'zod';
5
+ import { MultiDirectoryBackend } from '../backends/local-jsonl.js';
6
+ export const queryLLMEventsSchema = z.object({
7
+ eventName: z.string().optional().describe('Filter by event name (substring match)'),
8
+ model: z.string().optional().describe('Filter by model (e.g., "claude-3-opus", "gpt-4")'),
9
+ provider: z.string().optional().describe('Filter by provider (e.g., "anthropic", "openai")'),
10
+ search: z.string().optional().describe('Search in event attributes'),
11
+ startDate: z.string().optional().describe('Start date (YYYY-MM-DD)'),
12
+ endDate: z.string().optional().describe('End date (YYYY-MM-DD)'),
13
+ limit: z.number().max(1000).default(50).describe('Maximum number of results'),
14
+ });
15
+ export async function queryLLMEvents(rawInput) {
16
+ const input = queryLLMEventsSchema.parse(rawInput);
17
+ const options = {
18
+ eventName: input.eventName,
19
+ model: input.model,
20
+ provider: input.provider,
21
+ search: input.search,
22
+ startDate: input.startDate,
23
+ endDate: input.endDate,
24
+ limit: input.limit,
25
+ };
26
+ const local = new MultiDirectoryBackend();
27
+ const events = await local.queryLLMEvents(options);
28
+ // Summarize by event name and model
29
+ const byName = new Map();
30
+ const byModel = new Map();
31
+ for (const event of events) {
32
+ byName.set(event.name, (byName.get(event.name) || 0) + 1);
33
+ const model = (event.attributes?.['gen_ai.request.model'] || event.attributes?.['model'] || 'unknown');
34
+ byModel.set(model, (byModel.get(model) || 0) + 1);
35
+ }
36
+ return {
37
+ count: events.length,
38
+ summary: {
39
+ byEventName: Object.fromEntries(byName),
40
+ byModel: Object.fromEntries(byModel),
41
+ },
42
+ events: events.slice(0, 20).map(e => ({
43
+ timestamp: e.timestamp,
44
+ name: e.name,
45
+ model: e.attributes?.['gen_ai.request.model'] || e.attributes?.['model'],
46
+ provider: e.attributes?.['gen_ai.system'] || e.attributes?.['provider'],
47
+ inputTokens: e.attributes?.['gen_ai.usage.input_tokens'],
48
+ outputTokens: e.attributes?.['gen_ai.usage.output_tokens'],
49
+ durationMs: e.attributes?.['duration_ms'],
50
+ success: e.attributes?.['success'],
51
+ })),
52
+ };
53
+ }
54
+ export const queryLLMEventsTool = {
55
+ name: 'obs_query_llm_events',
56
+ description: 'Query LLM events from local JSONL files. Filter by event name, model, provider, and search text. Returns token usage and duration metrics.',
57
+ inputSchema: queryLLMEventsSchema,
58
+ handler: queryLLMEvents,
59
+ };
60
+ //# sourceMappingURL=query-llm-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-llm-events.js","sourceRoot":"","sources":["../../src/tools/query-llm-events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for query-llm-events tool
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=query-llm-events.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-llm-events.test.d.ts","sourceRoot":"","sources":["../../src/tools/query-llm-events.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}