observability-toolkit 1.0.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 (54) hide show
  1. package/README.md +107 -0
  2. package/dist/backends/index.d.ts +72 -0
  3. package/dist/backends/index.d.ts.map +1 -0
  4. package/dist/backends/index.js +5 -0
  5. package/dist/backends/index.js.map +1 -0
  6. package/dist/backends/local-jsonl.d.ts +21 -0
  7. package/dist/backends/local-jsonl.d.ts.map +1 -0
  8. package/dist/backends/local-jsonl.js +281 -0
  9. package/dist/backends/local-jsonl.js.map +1 -0
  10. package/dist/backends/signoz-api.d.ts +28 -0
  11. package/dist/backends/signoz-api.d.ts.map +1 -0
  12. package/dist/backends/signoz-api.js +293 -0
  13. package/dist/backends/signoz-api.js.map +1 -0
  14. package/dist/lib/constants.d.ts +21 -0
  15. package/dist/lib/constants.d.ts.map +1 -0
  16. package/dist/lib/constants.js +30 -0
  17. package/dist/lib/constants.js.map +1 -0
  18. package/dist/lib/file-utils.d.ts +38 -0
  19. package/dist/lib/file-utils.d.ts.map +1 -0
  20. package/dist/lib/file-utils.js +129 -0
  21. package/dist/lib/file-utils.js.map +1 -0
  22. package/dist/server.d.ts +11 -0
  23. package/dist/server.d.ts.map +1 -0
  24. package/dist/server.js +140 -0
  25. package/dist/server.js.map +1 -0
  26. package/dist/tools/context-stats.d.ts +81 -0
  27. package/dist/tools/context-stats.d.ts.map +1 -0
  28. package/dist/tools/context-stats.js +213 -0
  29. package/dist/tools/context-stats.js.map +1 -0
  30. package/dist/tools/get-trace-url.d.ts +36 -0
  31. package/dist/tools/get-trace-url.d.ts.map +1 -0
  32. package/dist/tools/get-trace-url.js +43 -0
  33. package/dist/tools/get-trace-url.js.map +1 -0
  34. package/dist/tools/health-check.d.ts +50 -0
  35. package/dist/tools/health-check.d.ts.map +1 -0
  36. package/dist/tools/health-check.js +109 -0
  37. package/dist/tools/health-check.js.map +1 -0
  38. package/dist/tools/index.d.ts +10 -0
  39. package/dist/tools/index.d.ts.map +1 -0
  40. package/dist/tools/index.js +10 -0
  41. package/dist/tools/index.js.map +1 -0
  42. package/dist/tools/query-logs.d.ts +82 -0
  43. package/dist/tools/query-logs.d.ts.map +1 -0
  44. package/dist/tools/query-logs.js +86 -0
  45. package/dist/tools/query-logs.js.map +1 -0
  46. package/dist/tools/query-metrics.d.ts +96 -0
  47. package/dist/tools/query-metrics.d.ts.map +1 -0
  48. package/dist/tools/query-metrics.js +85 -0
  49. package/dist/tools/query-metrics.js.map +1 -0
  50. package/dist/tools/query-traces.d.ts +95 -0
  51. package/dist/tools/query-traces.d.ts.map +1 -0
  52. package/dist/tools/query-traces.js +83 -0
  53. package/dist/tools/query-traces.js.map +1 -0
  54. package/package.json +43 -0
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Health check for telemetry system
3
+ */
4
+ import { z } from 'zod';
5
+ import { existsSync, readdirSync, statSync } from 'fs';
6
+ import { join } from 'path';
7
+ import { LocalJsonlBackend } from '../backends/local-jsonl.js';
8
+ import { SigNozApiBackend } from '../backends/signoz-api.js';
9
+ import { TELEMETRY_DIR, SIGNOZ_URL, SIGNOZ_API_KEY } from '../lib/constants.js';
10
+ import { getDateString } from '../lib/file-utils.js';
11
+ export const healthCheckSchema = z.object({
12
+ verbose: z.boolean().default(false).describe('Include detailed file information'),
13
+ });
14
+ function getFileStats(filePath) {
15
+ try {
16
+ const stats = statSync(filePath);
17
+ return {
18
+ name: filePath.split('/').pop() || filePath,
19
+ size: stats.size,
20
+ modified: stats.mtime.toISOString(),
21
+ };
22
+ }
23
+ catch {
24
+ return null;
25
+ }
26
+ }
27
+ function formatBytes(bytes) {
28
+ if (bytes < 1024)
29
+ return `${bytes} B`;
30
+ if (bytes < 1024 * 1024)
31
+ return `${(bytes / 1024).toFixed(1)} KB`;
32
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
33
+ }
34
+ export async function healthCheck(input) {
35
+ const result = {
36
+ status: 'healthy',
37
+ backends: {
38
+ local: { status: 'unknown' },
39
+ signoz: { status: 'unknown', configured: false },
40
+ },
41
+ telemetryDir: TELEMETRY_DIR,
42
+ today: getDateString(),
43
+ };
44
+ // Check local backend
45
+ const local = new LocalJsonlBackend();
46
+ 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
64
+ }
65
+ }
66
+ // Check SigNoz backend
67
+ if (SIGNOZ_URL && SIGNOZ_API_KEY) {
68
+ result.backends.signoz.configured = true;
69
+ const signoz = new SigNozApiBackend();
70
+ const signozHealth = await signoz.healthCheck();
71
+ result.backends.signoz.status = signozHealth.status;
72
+ result.backends.signoz.message = signozHealth.message;
73
+ }
74
+ else {
75
+ result.backends.signoz.status = 'not_configured';
76
+ result.backends.signoz.message = 'Set SIGNOZ_URL and SIGNOZ_API_KEY environment variables';
77
+ }
78
+ // Determine overall status
79
+ if (result.backends.local.status === 'error' && result.backends.signoz.status === 'error') {
80
+ result.status = 'unhealthy';
81
+ }
82
+ else if (result.backends.local.status === 'error' || result.backends.signoz.status === 'error') {
83
+ result.status = 'degraded';
84
+ }
85
+ // Build summary
86
+ const parts = [];
87
+ 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)})`);
92
+ }
93
+ }
94
+ else {
95
+ parts.push(`Local: ${result.backends.local.status}`);
96
+ }
97
+ if (result.backends.signoz.configured) {
98
+ parts.push(`SigNoz: ${result.backends.signoz.status === 'ok' ? 'Connected' : result.backends.signoz.status}`);
99
+ }
100
+ result.summary = parts.join(' | ');
101
+ return result;
102
+ }
103
+ export const healthCheckTool = {
104
+ name: 'obs_health_check',
105
+ description: 'Check health of telemetry backends (local JSONL files and SigNoz). Shows file sizes, connection status, and overall system health.',
106
+ inputSchema: healthCheckSchema,
107
+ handler: healthCheck,
108
+ };
109
+ //# sourceMappingURL=health-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-check.js","sourceRoot":"","sources":["../../src/tools/health-check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Tool registry for observability-toolkit MCP server
3
+ */
4
+ export { queryTracesTool } from './query-traces.js';
5
+ export { queryMetricsTool } from './query-metrics.js';
6
+ export { queryLogsTool } from './query-logs.js';
7
+ export { healthCheckTool } from './health-check.js';
8
+ export { contextStatsTool } from './context-stats.js';
9
+ export { getTraceUrlTool } from './get-trace-url.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Tool registry for observability-toolkit MCP server
3
+ */
4
+ export { queryTracesTool } from './query-traces.js';
5
+ export { queryMetricsTool } from './query-metrics.js';
6
+ export { queryLogsTool } from './query-logs.js';
7
+ export { healthCheckTool } from './health-check.js';
8
+ export { contextStatsTool } from './context-stats.js';
9
+ export { getTraceUrlTool } from './get-trace-url.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Query logs from local JSONL or SigNoz
3
+ */
4
+ import { z } from 'zod';
5
+ export declare const queryLogsSchema: z.ZodObject<{
6
+ backend: z.ZodDefault<z.ZodEnum<["local", "signoz", "auto"]>>;
7
+ severity: z.ZodOptional<z.ZodString>;
8
+ search: z.ZodOptional<z.ZodString>;
9
+ traceId: 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
+ backend: "local" | "signoz" | "auto";
15
+ limit: number;
16
+ traceId?: string | undefined;
17
+ severity?: string | undefined;
18
+ search?: string | undefined;
19
+ startDate?: string | undefined;
20
+ endDate?: string | undefined;
21
+ }, {
22
+ traceId?: string | undefined;
23
+ severity?: string | undefined;
24
+ search?: string | undefined;
25
+ backend?: "local" | "signoz" | "auto" | undefined;
26
+ startDate?: string | undefined;
27
+ endDate?: string | undefined;
28
+ limit?: number | undefined;
29
+ }>;
30
+ export type QueryLogsInput = z.infer<typeof queryLogsSchema>;
31
+ export declare function queryLogs(input: QueryLogsInput): Promise<{
32
+ backend: string;
33
+ count: number;
34
+ bySeverity: {
35
+ [k: string]: number;
36
+ };
37
+ logs: {
38
+ timestamp: string;
39
+ severity: string;
40
+ body: string;
41
+ traceId: string | undefined;
42
+ attributes: Record<string, unknown> | undefined;
43
+ }[];
44
+ error?: undefined;
45
+ } | {
46
+ backend: string;
47
+ count: number;
48
+ logs: never[];
49
+ error: string;
50
+ bySeverity?: undefined;
51
+ }>;
52
+ export declare const queryLogsTool: {
53
+ name: string;
54
+ description: string;
55
+ inputSchema: z.ZodObject<{
56
+ backend: z.ZodDefault<z.ZodEnum<["local", "signoz", "auto"]>>;
57
+ severity: z.ZodOptional<z.ZodString>;
58
+ search: z.ZodOptional<z.ZodString>;
59
+ traceId: 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
+ backend: "local" | "signoz" | "auto";
65
+ limit: number;
66
+ traceId?: string | undefined;
67
+ severity?: string | undefined;
68
+ search?: string | undefined;
69
+ startDate?: string | undefined;
70
+ endDate?: string | undefined;
71
+ }, {
72
+ traceId?: string | undefined;
73
+ severity?: string | undefined;
74
+ search?: string | undefined;
75
+ backend?: "local" | "signoz" | "auto" | undefined;
76
+ startDate?: string | undefined;
77
+ endDate?: string | undefined;
78
+ limit?: number | undefined;
79
+ }>;
80
+ handler: typeof queryLogs;
81
+ };
82
+ //# sourceMappingURL=query-logs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-logs.d.ts","sourceRoot":"","sources":["../../src/tools/query-logs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;EAQ1B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE7D,wBAAsB,SAAS,CAAC,KAAK,EAAE,cAAc;;;;;;;;;;;;;;;;;;;;GAsEpD;AAED,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKzB,CAAC"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Query logs from local JSONL or SigNoz
3
+ */
4
+ import { z } from 'zod';
5
+ import { LocalJsonlBackend } from '../backends/local-jsonl.js';
6
+ import { SigNozApiBackend } from '../backends/signoz-api.js';
7
+ import { SIGNOZ_URL, SIGNOZ_API_KEY } from '../lib/constants.js';
8
+ export const queryLogsSchema = z.object({
9
+ backend: z.enum(['local', 'signoz', 'auto']).default('auto').describe('Backend to query: local (JSONL files), signoz (API), or auto (tries both)'),
10
+ severity: z.string().optional().describe('Filter by severity level (e.g., ERROR, WARN, INFO, DEBUG)'),
11
+ search: z.string().optional().describe('Search text in log body'),
12
+ traceId: z.string().optional().describe('Filter by trace ID for correlated logs'),
13
+ startDate: z.string().optional().describe('Start date (YYYY-MM-DD)'),
14
+ endDate: z.string().optional().describe('End date (YYYY-MM-DD)'),
15
+ limit: z.number().default(50).describe('Maximum number of results'),
16
+ });
17
+ export async function queryLogs(input) {
18
+ const options = {
19
+ severity: input.severity,
20
+ search: input.search,
21
+ traceId: input.traceId,
22
+ startDate: input.startDate,
23
+ endDate: input.endDate,
24
+ limit: input.limit,
25
+ };
26
+ const hasSigNozConfig = SIGNOZ_URL && SIGNOZ_API_KEY;
27
+ const backend = input.backend === 'auto'
28
+ ? (hasSigNozConfig ? 'signoz' : 'local')
29
+ : input.backend;
30
+ if (backend === 'local' || input.backend === 'auto') {
31
+ const local = new LocalJsonlBackend();
32
+ const logs = await local.queryLogs(options);
33
+ if (logs.length > 0 || backend === 'local') {
34
+ // Group by severity for summary
35
+ const bySeverity = new Map();
36
+ for (const log of logs) {
37
+ bySeverity.set(log.severity, (bySeverity.get(log.severity) || 0) + 1);
38
+ }
39
+ return {
40
+ backend: 'local',
41
+ count: logs.length,
42
+ bySeverity: Object.fromEntries(bySeverity),
43
+ logs: logs.map(l => ({
44
+ timestamp: l.timestamp,
45
+ severity: l.severity,
46
+ body: l.body.length > 500 ? l.body.slice(0, 500) + '...' : l.body,
47
+ traceId: l.traceId,
48
+ attributes: l.attributes,
49
+ })),
50
+ };
51
+ }
52
+ }
53
+ if (backend === 'signoz' || (input.backend === 'auto' && hasSigNozConfig)) {
54
+ const signoz = new SigNozApiBackend();
55
+ const logs = await signoz.queryLogs(options);
56
+ const bySeverity = new Map();
57
+ for (const log of logs) {
58
+ bySeverity.set(log.severity, (bySeverity.get(log.severity) || 0) + 1);
59
+ }
60
+ return {
61
+ backend: 'signoz',
62
+ count: logs.length,
63
+ bySeverity: Object.fromEntries(bySeverity),
64
+ logs: logs.map(l => ({
65
+ timestamp: l.timestamp,
66
+ severity: l.severity,
67
+ body: l.body.length > 500 ? l.body.slice(0, 500) + '...' : l.body,
68
+ traceId: l.traceId,
69
+ attributes: l.attributes,
70
+ })),
71
+ };
72
+ }
73
+ return {
74
+ backend: 'none',
75
+ count: 0,
76
+ logs: [],
77
+ error: 'No backend available',
78
+ };
79
+ }
80
+ export const queryLogsTool = {
81
+ name: 'obs_query_logs',
82
+ description: 'Query logs from local JSONL files or SigNoz Cloud. Filter by severity (ERROR, WARN, INFO, DEBUG), search text, trace ID, and date range.',
83
+ inputSchema: queryLogsSchema,
84
+ handler: queryLogs,
85
+ };
86
+ //# sourceMappingURL=query-logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-logs.js","sourceRoot":"","sources":["../../src/tools/query-logs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Query metrics from local JSONL or SigNoz
3
+ */
4
+ import { z } from 'zod';
5
+ export declare const queryMetricsSchema: z.ZodObject<{
6
+ backend: z.ZodDefault<z.ZodEnum<["local", "signoz", "auto"]>>;
7
+ metricName: z.ZodOptional<z.ZodString>;
8
+ aggregation: z.ZodOptional<z.ZodEnum<["sum", "avg", "min", "max", "count"]>>;
9
+ groupBy: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
10
+ startDate: z.ZodOptional<z.ZodString>;
11
+ endDate: z.ZodOptional<z.ZodString>;
12
+ limit: z.ZodDefault<z.ZodNumber>;
13
+ }, "strip", z.ZodTypeAny, {
14
+ backend: "local" | "signoz" | "auto";
15
+ limit: number;
16
+ metricName?: string | undefined;
17
+ aggregation?: "sum" | "avg" | "min" | "max" | "count" | undefined;
18
+ groupBy?: string[] | undefined;
19
+ startDate?: string | undefined;
20
+ endDate?: string | undefined;
21
+ }, {
22
+ metricName?: string | undefined;
23
+ aggregation?: "sum" | "avg" | "min" | "max" | "count" | undefined;
24
+ groupBy?: string[] | undefined;
25
+ backend?: "local" | "signoz" | "auto" | undefined;
26
+ startDate?: string | undefined;
27
+ endDate?: string | undefined;
28
+ limit?: number | undefined;
29
+ }>;
30
+ export type QueryMetricsInput = z.infer<typeof queryMetricsSchema>;
31
+ export declare function queryMetrics(input: QueryMetricsInput): Promise<{
32
+ backend: string;
33
+ count: number;
34
+ summary: {
35
+ name: string;
36
+ count: number;
37
+ min: number;
38
+ max: number;
39
+ avg: number;
40
+ }[];
41
+ dataPoints: import("../backends/index.js").MetricDataPoint[];
42
+ error?: undefined;
43
+ metricName?: undefined;
44
+ } | {
45
+ backend: string;
46
+ error: string;
47
+ count?: undefined;
48
+ summary?: undefined;
49
+ dataPoints?: undefined;
50
+ metricName?: undefined;
51
+ } | {
52
+ backend: string;
53
+ count: number;
54
+ metricName: string;
55
+ dataPoints: import("../backends/index.js").MetricDataPoint[];
56
+ summary?: undefined;
57
+ error?: undefined;
58
+ } | {
59
+ backend: string;
60
+ count: number;
61
+ error: string;
62
+ summary?: undefined;
63
+ dataPoints?: undefined;
64
+ metricName?: undefined;
65
+ }>;
66
+ export declare const queryMetricsTool: {
67
+ name: string;
68
+ description: string;
69
+ inputSchema: z.ZodObject<{
70
+ backend: z.ZodDefault<z.ZodEnum<["local", "signoz", "auto"]>>;
71
+ metricName: z.ZodOptional<z.ZodString>;
72
+ aggregation: z.ZodOptional<z.ZodEnum<["sum", "avg", "min", "max", "count"]>>;
73
+ groupBy: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
74
+ startDate: z.ZodOptional<z.ZodString>;
75
+ endDate: z.ZodOptional<z.ZodString>;
76
+ limit: z.ZodDefault<z.ZodNumber>;
77
+ }, "strip", z.ZodTypeAny, {
78
+ backend: "local" | "signoz" | "auto";
79
+ limit: number;
80
+ metricName?: string | undefined;
81
+ aggregation?: "sum" | "avg" | "min" | "max" | "count" | undefined;
82
+ groupBy?: string[] | undefined;
83
+ startDate?: string | undefined;
84
+ endDate?: string | undefined;
85
+ }, {
86
+ metricName?: string | undefined;
87
+ aggregation?: "sum" | "avg" | "min" | "max" | "count" | undefined;
88
+ groupBy?: string[] | undefined;
89
+ backend?: "local" | "signoz" | "auto" | undefined;
90
+ startDate?: string | undefined;
91
+ endDate?: string | undefined;
92
+ limit?: number | undefined;
93
+ }>;
94
+ handler: typeof queryMetrics;
95
+ };
96
+ //# sourceMappingURL=query-metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-metrics.d.ts","sourceRoot":"","sources":["../../src/tools/query-metrics.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;EAQ7B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEnE,wBAAsB,YAAY,CAAC,KAAK,EAAE,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsE1D;AAED,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK5B,CAAC"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Query metrics from local JSONL or SigNoz
3
+ */
4
+ import { z } from 'zod';
5
+ import { LocalJsonlBackend } from '../backends/local-jsonl.js';
6
+ import { SigNozApiBackend } from '../backends/signoz-api.js';
7
+ import { SIGNOZ_URL, SIGNOZ_API_KEY } from '../lib/constants.js';
8
+ export const queryMetricsSchema = z.object({
9
+ backend: z.enum(['local', 'signoz', 'auto']).default('auto').describe('Backend to query: local (JSONL files), signoz (API), or auto (prefers signoz if configured)'),
10
+ metricName: z.string().optional().describe('Metric name to query (substring match for local, exact for SigNoz)'),
11
+ aggregation: z.enum(['sum', 'avg', 'min', 'max', 'count']).optional().describe('Aggregation function'),
12
+ groupBy: z.array(z.string()).optional().describe('Attributes to group by'),
13
+ startDate: z.string().optional().describe('Start date (YYYY-MM-DD)'),
14
+ endDate: z.string().optional().describe('End date (YYYY-MM-DD)'),
15
+ limit: z.number().default(100).describe('Maximum number of results'),
16
+ });
17
+ export async function queryMetrics(input) {
18
+ const options = {
19
+ metricName: input.metricName,
20
+ aggregation: input.aggregation,
21
+ groupBy: input.groupBy,
22
+ startDate: input.startDate,
23
+ endDate: input.endDate,
24
+ limit: input.limit,
25
+ };
26
+ const hasSigNozConfig = SIGNOZ_URL && SIGNOZ_API_KEY;
27
+ const backend = input.backend === 'auto'
28
+ ? (hasSigNozConfig && input.metricName ? 'signoz' : 'local')
29
+ : input.backend;
30
+ if (backend === 'local') {
31
+ const local = new LocalJsonlBackend();
32
+ const metrics = await local.queryMetrics(options);
33
+ // Group metrics by name for summary
34
+ const byName = new Map();
35
+ for (const m of metrics) {
36
+ const stats = byName.get(m.name) || { count: 0, min: Infinity, max: -Infinity, sum: 0 };
37
+ stats.count++;
38
+ stats.min = Math.min(stats.min, m.value);
39
+ stats.max = Math.max(stats.max, m.value);
40
+ stats.sum += m.value;
41
+ byName.set(m.name, stats);
42
+ }
43
+ const summary = Array.from(byName.entries()).map(([name, stats]) => ({
44
+ name,
45
+ count: stats.count,
46
+ min: stats.min,
47
+ max: stats.max,
48
+ avg: stats.sum / stats.count,
49
+ }));
50
+ return {
51
+ backend: 'local',
52
+ count: metrics.length,
53
+ summary,
54
+ dataPoints: metrics.slice(0, 20), // Limit data points in response
55
+ };
56
+ }
57
+ if (backend === 'signoz') {
58
+ if (!input.metricName) {
59
+ return {
60
+ backend: 'signoz',
61
+ error: 'metricName is required for SigNoz queries',
62
+ };
63
+ }
64
+ const signoz = new SigNozApiBackend();
65
+ const metrics = await signoz.queryMetrics(options);
66
+ return {
67
+ backend: 'signoz',
68
+ count: metrics.length,
69
+ metricName: input.metricName,
70
+ dataPoints: metrics,
71
+ };
72
+ }
73
+ return {
74
+ backend: 'none',
75
+ count: 0,
76
+ error: 'No backend available',
77
+ };
78
+ }
79
+ export const queryMetricsTool = {
80
+ name: 'obs_query_metrics',
81
+ description: 'Query metrics from local JSONL files or SigNoz Cloud. Supports aggregation (sum, avg, min, max, count) and grouping.',
82
+ inputSchema: queryMetricsSchema,
83
+ handler: queryMetrics,
84
+ };
85
+ //# sourceMappingURL=query-metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-metrics.js","sourceRoot":"","sources":["../../src/tools/query-metrics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Query traces from local JSONL or SigNoz
3
+ */
4
+ import { z } from 'zod';
5
+ export declare const queryTracesSchema: z.ZodObject<{
6
+ backend: z.ZodDefault<z.ZodEnum<["local", "signoz", "auto"]>>;
7
+ traceId: z.ZodOptional<z.ZodString>;
8
+ serviceName: z.ZodOptional<z.ZodString>;
9
+ spanName: z.ZodOptional<z.ZodString>;
10
+ minDurationMs: z.ZodOptional<z.ZodNumber>;
11
+ maxDurationMs: z.ZodOptional<z.ZodNumber>;
12
+ startDate: z.ZodOptional<z.ZodString>;
13
+ endDate: z.ZodOptional<z.ZodString>;
14
+ limit: z.ZodDefault<z.ZodNumber>;
15
+ }, "strip", z.ZodTypeAny, {
16
+ backend: "local" | "signoz" | "auto";
17
+ limit: number;
18
+ traceId?: string | undefined;
19
+ serviceName?: string | undefined;
20
+ spanName?: string | undefined;
21
+ minDurationMs?: number | undefined;
22
+ maxDurationMs?: number | undefined;
23
+ startDate?: string | undefined;
24
+ endDate?: string | undefined;
25
+ }, {
26
+ traceId?: string | undefined;
27
+ serviceName?: string | undefined;
28
+ spanName?: string | undefined;
29
+ minDurationMs?: number | undefined;
30
+ maxDurationMs?: number | undefined;
31
+ backend?: "local" | "signoz" | "auto" | undefined;
32
+ startDate?: string | undefined;
33
+ endDate?: string | undefined;
34
+ limit?: number | undefined;
35
+ }>;
36
+ export type QueryTracesInput = z.infer<typeof queryTracesSchema>;
37
+ export declare function queryTraces(input: QueryTracesInput): Promise<{
38
+ backend: string;
39
+ count: number;
40
+ traces: {
41
+ traceId: string;
42
+ spanId: string;
43
+ name: string;
44
+ kind: string | undefined;
45
+ durationMs: number | undefined;
46
+ status: {
47
+ code: number;
48
+ message?: string;
49
+ } | undefined;
50
+ attributes: Record<string, unknown> | undefined;
51
+ }[];
52
+ error?: undefined;
53
+ } | {
54
+ backend: string;
55
+ count: number;
56
+ traces: never[];
57
+ error: string;
58
+ }>;
59
+ export declare const queryTracesTool: {
60
+ name: string;
61
+ description: string;
62
+ inputSchema: z.ZodObject<{
63
+ backend: z.ZodDefault<z.ZodEnum<["local", "signoz", "auto"]>>;
64
+ traceId: z.ZodOptional<z.ZodString>;
65
+ serviceName: z.ZodOptional<z.ZodString>;
66
+ spanName: z.ZodOptional<z.ZodString>;
67
+ minDurationMs: z.ZodOptional<z.ZodNumber>;
68
+ maxDurationMs: z.ZodOptional<z.ZodNumber>;
69
+ startDate: z.ZodOptional<z.ZodString>;
70
+ endDate: z.ZodOptional<z.ZodString>;
71
+ limit: z.ZodDefault<z.ZodNumber>;
72
+ }, "strip", z.ZodTypeAny, {
73
+ backend: "local" | "signoz" | "auto";
74
+ limit: number;
75
+ traceId?: string | undefined;
76
+ serviceName?: string | undefined;
77
+ spanName?: string | undefined;
78
+ minDurationMs?: number | undefined;
79
+ maxDurationMs?: number | undefined;
80
+ startDate?: string | undefined;
81
+ endDate?: string | undefined;
82
+ }, {
83
+ traceId?: string | undefined;
84
+ serviceName?: string | undefined;
85
+ spanName?: string | undefined;
86
+ minDurationMs?: number | undefined;
87
+ maxDurationMs?: number | undefined;
88
+ backend?: "local" | "signoz" | "auto" | undefined;
89
+ startDate?: string | undefined;
90
+ endDate?: string | undefined;
91
+ limit?: number | undefined;
92
+ }>;
93
+ handler: typeof queryTraces;
94
+ };
95
+ //# sourceMappingURL=query-traces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-traces.d.ts","sourceRoot":"","sources":["../../src/tools/query-traces.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU5B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEjE,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB;;;;;;;;;;;;;;;;;;;;;GA+DxD;AAED,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK3B,CAAC"}