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 @@
1
+ {"version":3,"file":"signoz-api.test.js","sourceRoot":"","sources":["../../src/backends/signoz-api.test.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,16 @@
3
3
  */
4
4
  export declare const CLAUDE_HOME: string;
5
5
  export declare const TELEMETRY_DIR: string;
6
+ /**
7
+ * Get all telemetry directories (global + local project directories)
8
+ * Returns array of { path, source } objects
9
+ */
10
+ export declare function getTelemetryDirectories(cwd?: string): Array<{
11
+ path: string;
12
+ source: 'global' | 'local';
13
+ }>;
6
14
  export declare const SIGNOZ_URL: string;
15
+ export declare const SIGNOZ_QUERY_URL: string;
7
16
  export declare const SIGNOZ_API_KEY: string;
8
17
  export declare const CIRCUIT_BREAKER: {
9
18
  readonly MAX_FAILURES: number;
@@ -18,4 +27,23 @@ export declare const MODEL_PRICING: Record<string, {
18
27
  export declare const TRACES_FILE_PATTERN = "traces-*.jsonl";
19
28
  export declare const LOGS_FILE_PATTERN = "logs-*.jsonl";
20
29
  export declare const METRICS_FILE_PATTERN = "metrics-*.jsonl";
30
+ export declare const SPAN_KINDS: readonly ["INTERNAL", "SERVER", "CLIENT", "PRODUCER", "CONSUMER"];
31
+ /**
32
+ * Safely get span kind string from numeric value with bounds checking
33
+ */
34
+ export declare function getSpanKind(kind: number | undefined): string | undefined;
35
+ export declare const STATUS_CODES: readonly ["UNSET", "OK", "ERROR"];
36
+ export type StatusCode = (typeof STATUS_CODES)[number];
37
+ /**
38
+ * Get status code name from numeric value
39
+ * OTel defines: UNSET (0), OK (1), ERROR (2)
40
+ */
41
+ export declare function getStatusCodeName(code: number | undefined): StatusCode | undefined;
42
+ /**
43
+ * Escape a string value for use in SigNoz filter expressions
44
+ * Prevents SQL/query injection by escaping special characters
45
+ */
46
+ export declare function escapeFilterValue(value: string): string;
47
+ export declare const MAX_QUERY_LIMIT = 1000;
48
+ export declare const RETENTION_DAYS: number;
21
49
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,eAAO,MAAM,WAAW,QAA0C,CAAC;AACnE,eAAO,MAAM,aAAa,QAAiF,CAAC;AAG5G,eAAO,MAAM,UAAU,QAA0E,CAAC;AAClG,eAAO,MAAM,cAAc,QAAmC,CAAC;AAG/D,eAAO,MAAM,eAAe;;;CAGlB,CAAC;AAGX,eAAO,MAAM,mBAAmB,SAAS,CAAC;AAG1C,eAAO,MAAM,eAAe,OAAO,CAAC;AAGpC,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAI3E,CAAC;AAGF,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AACpD,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAChD,eAAO,MAAM,oBAAoB,oBAAoB,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,eAAO,MAAM,WAAW,QAA0C,CAAC;AACnE,eAAO,MAAM,aAAa,QAAiF,CAAC;AAS5G;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAA;CAAE,CAAC,CAmBzG;AAID,eAAO,MAAM,UAAU,QAA0E,CAAC;AAElG,eAAO,MAAM,gBAAgB,QAAqC,CAAC;AAGnE,eAAO,MAAM,cAAc,QAAmC,CAAC;AAG/D,eAAO,MAAM,eAAe;;;CAGlB,CAAC;AAGX,eAAO,MAAM,mBAAmB,SAAS,CAAC;AAG1C,eAAO,MAAM,eAAe,OAAO,CAAC;AAGpC,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAI3E,CAAC;AAGF,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AACpD,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAChD,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AAGtD,eAAO,MAAM,UAAU,mEAAoE,CAAC;AAE5F;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAKxE;AAID,eAAO,MAAM,YAAY,mCAAoC,CAAC;AAC9D,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAKlF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOvD;AAGD,eAAO,MAAM,eAAe,OAAO,CAAC;AAGpC,eAAO,MAAM,cAAc,QAAkD,CAAC"}
@@ -2,12 +2,45 @@
2
2
  * Constants for observability-toolkit MCP server
3
3
  */
4
4
  import { join } from 'path';
5
+ import { existsSync } from 'fs';
5
6
  import { expandTilde } from './file-utils.js';
6
7
  // Paths - expand tilde in case TELEMETRY_DIR is set to ~/... (tilde doesn't expand in JSON/env)
7
8
  export const CLAUDE_HOME = join(process.env.HOME || '', '.claude');
8
9
  export const TELEMETRY_DIR = expandTilde(process.env.TELEMETRY_DIR || '') || join(CLAUDE_HOME, 'telemetry');
10
+ // Local project telemetry directories to check
11
+ const LOCAL_TELEMETRY_PATHS = [
12
+ '.claude/telemetry',
13
+ 'telemetry',
14
+ '.telemetry',
15
+ ];
16
+ /**
17
+ * Get all telemetry directories (global + local project directories)
18
+ * Returns array of { path, source } objects
19
+ */
20
+ export function getTelemetryDirectories(cwd) {
21
+ const dirs = [];
22
+ // Always include global telemetry directory
23
+ if (existsSync(TELEMETRY_DIR)) {
24
+ dirs.push({ path: TELEMETRY_DIR, source: 'global' });
25
+ }
26
+ // Check for local project telemetry directories
27
+ const workingDir = cwd || process.cwd();
28
+ for (const localPath of LOCAL_TELEMETRY_PATHS) {
29
+ const fullPath = join(workingDir, localPath);
30
+ // Avoid adding duplicates (in case local path resolves to same as global)
31
+ if (existsSync(fullPath) && !dirs.some(d => d.path === fullPath)) {
32
+ dirs.push({ path: fullPath, source: 'local' });
33
+ }
34
+ }
35
+ return dirs;
36
+ }
9
37
  // SigNoz configuration
38
+ // SIGNOZ_URL - ingest endpoint (for sending data)
10
39
  export const SIGNOZ_URL = process.env.SIGNOZ_URL || process.env.OTEL_EXPORTER_OTLP_ENDPOINT || '';
40
+ // SIGNOZ_QUERY_URL - query API endpoint (for reading data)
41
+ export const SIGNOZ_QUERY_URL = process.env.SIGNOZ_QUERY_URL || '';
42
+ // Note: API key loaded from environment variable at startup - standard practice for MCP servers
43
+ // For enhanced security in production, consider using a secrets manager
11
44
  export const SIGNOZ_API_KEY = process.env.SIGNOZ_API_KEY || '';
12
45
  // Circuit breaker configuration
13
46
  export const CIRCUIT_BREAKER = {
@@ -28,4 +61,44 @@ export const MODEL_PRICING = {
28
61
  export const TRACES_FILE_PATTERN = 'traces-*.jsonl';
29
62
  export const LOGS_FILE_PATTERN = 'logs-*.jsonl';
30
63
  export const METRICS_FILE_PATTERN = 'metrics-*.jsonl';
64
+ // OpenTelemetry span kinds (indexed by numeric value)
65
+ export const SPAN_KINDS = ['INTERNAL', 'SERVER', 'CLIENT', 'PRODUCER', 'CONSUMER'];
66
+ /**
67
+ * Safely get span kind string from numeric value with bounds checking
68
+ */
69
+ export function getSpanKind(kind) {
70
+ if (kind === undefined || kind < 0 || kind >= SPAN_KINDS.length) {
71
+ return undefined;
72
+ }
73
+ return SPAN_KINDS[kind];
74
+ }
75
+ // OpenTelemetry status codes (indexed by numeric value)
76
+ // https://opentelemetry.io/docs/specs/otel/trace/api/#set-status
77
+ export const STATUS_CODES = ['UNSET', 'OK', 'ERROR'];
78
+ /**
79
+ * Get status code name from numeric value
80
+ * OTel defines: UNSET (0), OK (1), ERROR (2)
81
+ */
82
+ export function getStatusCodeName(code) {
83
+ if (code === undefined || code < 0 || code >= STATUS_CODES.length) {
84
+ return undefined;
85
+ }
86
+ return STATUS_CODES[code];
87
+ }
88
+ /**
89
+ * Escape a string value for use in SigNoz filter expressions
90
+ * Prevents SQL/query injection by escaping special characters
91
+ */
92
+ export function escapeFilterValue(value) {
93
+ // Escape single quotes by doubling them (SQL standard)
94
+ // Remove semicolons and comment markers to prevent query manipulation
95
+ return value
96
+ .replace(/'/g, "''")
97
+ .replace(/;/g, '')
98
+ .replace(/--/g, '');
99
+ }
100
+ // Query limits
101
+ export const MAX_QUERY_LIMIT = 1000;
102
+ // Retention configuration (default 7 days)
103
+ export const RETENTION_DAYS = parseInt(process.env.RETENTION_DAYS || '7', 10);
31
104
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,gGAAgG;AAChG,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;AACnE,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAE5G,uBAAuB;AACvB,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,EAAE,CAAC;AAClG,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;AAE/D,gCAAgC;AAChC,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,GAAG,EAAE,EAAE,CAAC;IAC3E,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,OAAO,EAAE,EAAE,CAAC;CAC/D,CAAC;AAEX,2CAA2C;AAC3C,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAE1C,mCAAmC;AACnC,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AAEpC,+CAA+C;AAC/C,MAAM,CAAC,MAAM,aAAa,GAAsD;IAC9E,0BAA0B,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IACzD,0BAA0B,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;IACxD,2BAA2B,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;CAC1D,CAAC;AAEF,gBAAgB;AAChB,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;AACpD,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAChD,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,gGAAgG;AAChG,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;AACnE,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAE5G,+CAA+C;AAC/C,MAAM,qBAAqB,GAAG;IAC5B,mBAAmB;IACnB,WAAW;IACX,YAAY;CACb,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAAY;IAClD,MAAM,IAAI,GAAwD,EAAE,CAAC;IAErE,4CAA4C;IAC5C,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,gDAAgD;IAChD,MAAM,UAAU,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACxC,KAAK,MAAM,SAAS,IAAI,qBAAqB,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC7C,0EAA0E;QAC1E,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;YACjE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,uBAAuB;AACvB,kDAAkD;AAClD,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,EAAE,CAAC;AAClG,2DAA2D;AAC3D,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC;AACnE,gGAAgG;AAChG,wEAAwE;AACxE,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;AAE/D,gCAAgC;AAChC,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,GAAG,EAAE,EAAE,CAAC;IAC3E,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,OAAO,EAAE,EAAE,CAAC;CAC/D,CAAC;AAEX,2CAA2C;AAC3C,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAE1C,mCAAmC;AACnC,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AAEpC,+CAA+C;AAC/C,MAAM,CAAC,MAAM,aAAa,GAAsD;IAC9E,0BAA0B,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IACzD,0BAA0B,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;IACxD,2BAA2B,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;CAC1D,CAAC;AAEF,gBAAgB;AAChB,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;AACpD,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAChD,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAEtD,sDAAsD;AACtD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAU,CAAC;AAE5F;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAwB;IAClD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QAChE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,wDAAwD;AACxD,iEAAiE;AACjE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAU,CAAC;AAG9D;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAwB;IACxD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;QAClE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,uDAAuD;IACvD,sEAAsE;IACtE,OAAO,KAAK;SACT,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;SACnB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;SACjB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACxB,CAAC;AAED,eAAe;AACf,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AAEpC,2CAA2C;AAC3C,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Unit tests for constants.ts
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=constants.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.test.d.ts","sourceRoot":"","sources":["../../src/lib/constants.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,381 @@
1
+ /**
2
+ * Unit tests for constants.ts
3
+ */
4
+ import { describe, it, beforeEach, afterEach } from 'node:test';
5
+ import assert from 'node:assert';
6
+ import { join } from 'path';
7
+ import * as fs from 'fs';
8
+ import * as os from 'os';
9
+ import * as constants from './constants.js';
10
+ function createTempDir() {
11
+ return fs.mkdtempSync(join(os.tmpdir(), 'constants-test-'));
12
+ }
13
+ function removeTempDir(dir) {
14
+ try {
15
+ fs.rmSync(dir, { recursive: true, force: true });
16
+ }
17
+ catch {
18
+ // Ignore cleanup errors
19
+ }
20
+ }
21
+ describe('Constants', () => {
22
+ describe('CLAUDE_HOME', () => {
23
+ it('should be a string', () => {
24
+ assert.strictEqual(typeof constants.CLAUDE_HOME, 'string');
25
+ });
26
+ it('should end with .claude', () => {
27
+ assert(constants.CLAUDE_HOME.endsWith('.claude'));
28
+ });
29
+ it('should contain HOME directory', () => {
30
+ const expectedHome = process.env.HOME || '';
31
+ assert(constants.CLAUDE_HOME.includes(expectedHome));
32
+ });
33
+ });
34
+ describe('TELEMETRY_DIR', () => {
35
+ it('should be a string', () => {
36
+ assert.strictEqual(typeof constants.TELEMETRY_DIR, 'string');
37
+ });
38
+ it('should default to ~/.claude/telemetry when TELEMETRY_DIR env var not set', () => {
39
+ if (!process.env.TELEMETRY_DIR) {
40
+ const expected = join(constants.CLAUDE_HOME, 'telemetry');
41
+ assert.strictEqual(constants.TELEMETRY_DIR, expected);
42
+ }
43
+ });
44
+ it('should contain expected path segments', () => {
45
+ assert(constants.TELEMETRY_DIR.includes('telemetry') ||
46
+ constants.TELEMETRY_DIR.includes('.claude'));
47
+ });
48
+ });
49
+ describe('SIGNOZ_URL', () => {
50
+ it('should be a string', () => {
51
+ assert.strictEqual(typeof constants.SIGNOZ_URL, 'string');
52
+ });
53
+ it('should be either SIGNOZ_URL or OTEL_EXPORTER_OTLP_ENDPOINT env var or empty', () => {
54
+ const fromEnv = process.env.SIGNOZ_URL ||
55
+ process.env.OTEL_EXPORTER_OTLP_ENDPOINT ||
56
+ '';
57
+ assert.strictEqual(constants.SIGNOZ_URL, fromEnv);
58
+ });
59
+ });
60
+ describe('SIGNOZ_API_KEY', () => {
61
+ it('should be a string', () => {
62
+ assert.strictEqual(typeof constants.SIGNOZ_API_KEY, 'string');
63
+ });
64
+ it('should match SIGNOZ_API_KEY env var or be empty', () => {
65
+ const fromEnv = process.env.SIGNOZ_API_KEY || '';
66
+ assert.strictEqual(constants.SIGNOZ_API_KEY, fromEnv);
67
+ });
68
+ });
69
+ describe('CIRCUIT_BREAKER', () => {
70
+ it('should be an object', () => {
71
+ assert.strictEqual(typeof constants.CIRCUIT_BREAKER, 'object');
72
+ assert(constants.CIRCUIT_BREAKER !== null);
73
+ });
74
+ it('should have MAX_FAILURES property', () => {
75
+ assert('MAX_FAILURES' in constants.CIRCUIT_BREAKER);
76
+ });
77
+ it('should have RESET_MS property', () => {
78
+ assert('RESET_MS' in constants.CIRCUIT_BREAKER);
79
+ });
80
+ it('MAX_FAILURES should be a number', () => {
81
+ assert.strictEqual(typeof constants.CIRCUIT_BREAKER.MAX_FAILURES, 'number');
82
+ });
83
+ it('RESET_MS should be a number', () => {
84
+ assert.strictEqual(typeof constants.CIRCUIT_BREAKER.RESET_MS, 'number');
85
+ });
86
+ it('MAX_FAILURES should default to 3', () => {
87
+ if (!process.env.CIRCUIT_BREAKER_MAX_FAILURES) {
88
+ assert.strictEqual(constants.CIRCUIT_BREAKER.MAX_FAILURES, 3);
89
+ }
90
+ });
91
+ it('RESET_MS should default to 60000', () => {
92
+ if (!process.env.CIRCUIT_BREAKER_RESET_MS) {
93
+ assert.strictEqual(constants.CIRCUIT_BREAKER.RESET_MS, 60000);
94
+ }
95
+ });
96
+ it('MAX_FAILURES should respect CIRCUIT_BREAKER_MAX_FAILURES env var', () => {
97
+ if (process.env.CIRCUIT_BREAKER_MAX_FAILURES) {
98
+ const expected = parseInt(process.env.CIRCUIT_BREAKER_MAX_FAILURES, 10);
99
+ assert.strictEqual(constants.CIRCUIT_BREAKER.MAX_FAILURES, expected);
100
+ }
101
+ });
102
+ it('RESET_MS should respect CIRCUIT_BREAKER_RESET_MS env var', () => {
103
+ if (process.env.CIRCUIT_BREAKER_RESET_MS) {
104
+ const expected = parseInt(process.env.CIRCUIT_BREAKER_RESET_MS, 10);
105
+ assert.strictEqual(constants.CIRCUIT_BREAKER.RESET_MS, expected);
106
+ }
107
+ });
108
+ it('should be typed as readonly via as const', () => {
109
+ // Note: `as const` provides TypeScript compile-time readonly,
110
+ // but doesn't freeze the object at runtime
111
+ assert.ok(typeof constants.CIRCUIT_BREAKER === 'object');
112
+ assert.ok('MAX_FAILURES' in constants.CIRCUIT_BREAKER);
113
+ assert.ok('RESET_MS' in constants.CIRCUIT_BREAKER);
114
+ // Skip runtime freeze test since `as const` is compile-time only
115
+ });
116
+ });
117
+ describe('CONTEXT_WINDOW_SIZE', () => {
118
+ it('should be a number', () => {
119
+ assert.strictEqual(typeof constants.CONTEXT_WINDOW_SIZE, 'number');
120
+ });
121
+ it('should equal 200000', () => {
122
+ assert.strictEqual(constants.CONTEXT_WINDOW_SIZE, 200000);
123
+ });
124
+ });
125
+ describe('TOKENS_PER_CHAR', () => {
126
+ it('should be a number', () => {
127
+ assert.strictEqual(typeof constants.TOKENS_PER_CHAR, 'number');
128
+ });
129
+ it('should equal 0.25', () => {
130
+ assert.strictEqual(constants.TOKENS_PER_CHAR, 0.25);
131
+ });
132
+ });
133
+ describe('MODEL_PRICING', () => {
134
+ it('should be an object', () => {
135
+ assert.strictEqual(typeof constants.MODEL_PRICING, 'object');
136
+ assert(constants.MODEL_PRICING !== null);
137
+ });
138
+ it('should have pricing entries', () => {
139
+ const keys = Object.keys(constants.MODEL_PRICING);
140
+ assert(keys.length > 0);
141
+ });
142
+ it('should contain claude-opus-4-5-20251101', () => {
143
+ assert('claude-opus-4-5-20251101' in constants.MODEL_PRICING);
144
+ });
145
+ it('should contain claude-sonnet-4-20250514', () => {
146
+ assert('claude-sonnet-4-20250514' in constants.MODEL_PRICING);
147
+ });
148
+ it('should contain claude-3-5-haiku-20241022', () => {
149
+ assert('claude-3-5-haiku-20241022' in constants.MODEL_PRICING);
150
+ });
151
+ it('each pricing entry should have input and output properties', () => {
152
+ Object.values(constants.MODEL_PRICING).forEach(pricing => {
153
+ assert.strictEqual(typeof pricing.input, 'number');
154
+ assert.strictEqual(typeof pricing.output, 'number');
155
+ });
156
+ });
157
+ it('Opus should have higher pricing than Sonnet', () => {
158
+ const opus = constants.MODEL_PRICING['claude-opus-4-5-20251101'];
159
+ const sonnet = constants.MODEL_PRICING['claude-sonnet-4-20250514'];
160
+ assert(opus.input > sonnet.input);
161
+ assert(opus.output > sonnet.output);
162
+ });
163
+ it('Sonnet should have higher pricing than Haiku', () => {
164
+ const sonnet = constants.MODEL_PRICING['claude-sonnet-4-20250514'];
165
+ const haiku = constants.MODEL_PRICING['claude-3-5-haiku-20241022'];
166
+ assert(sonnet.input > haiku.input);
167
+ assert(sonnet.output > haiku.output);
168
+ });
169
+ it('output pricing should be higher than input pricing for all models', () => {
170
+ Object.values(constants.MODEL_PRICING).forEach(pricing => {
171
+ assert(pricing.output > pricing.input);
172
+ });
173
+ });
174
+ });
175
+ describe('File patterns', () => {
176
+ describe('TRACES_FILE_PATTERN', () => {
177
+ it('should be a string', () => {
178
+ assert.strictEqual(typeof constants.TRACES_FILE_PATTERN, 'string');
179
+ });
180
+ it('should equal "traces-*.jsonl"', () => {
181
+ assert.strictEqual(constants.TRACES_FILE_PATTERN, 'traces-*.jsonl');
182
+ });
183
+ });
184
+ describe('LOGS_FILE_PATTERN', () => {
185
+ it('should be a string', () => {
186
+ assert.strictEqual(typeof constants.LOGS_FILE_PATTERN, 'string');
187
+ });
188
+ it('should equal "logs-*.jsonl"', () => {
189
+ assert.strictEqual(constants.LOGS_FILE_PATTERN, 'logs-*.jsonl');
190
+ });
191
+ });
192
+ describe('METRICS_FILE_PATTERN', () => {
193
+ it('should be a string', () => {
194
+ assert.strictEqual(typeof constants.METRICS_FILE_PATTERN, 'string');
195
+ });
196
+ it('should equal "metrics-*.jsonl"', () => {
197
+ assert.strictEqual(constants.METRICS_FILE_PATTERN, 'metrics-*.jsonl');
198
+ });
199
+ });
200
+ it('all patterns should end with .jsonl', () => {
201
+ assert(constants.TRACES_FILE_PATTERN.endsWith('.jsonl'));
202
+ assert(constants.LOGS_FILE_PATTERN.endsWith('.jsonl'));
203
+ assert(constants.METRICS_FILE_PATTERN.endsWith('.jsonl'));
204
+ });
205
+ it('all patterns should contain glob wildcard', () => {
206
+ assert(constants.TRACES_FILE_PATTERN.includes('*'));
207
+ assert(constants.LOGS_FILE_PATTERN.includes('*'));
208
+ assert(constants.METRICS_FILE_PATTERN.includes('*'));
209
+ });
210
+ });
211
+ describe('SPAN_KINDS', () => {
212
+ it('should be an array', () => {
213
+ assert.ok(Array.isArray(constants.SPAN_KINDS));
214
+ });
215
+ it('should have 5 span kinds', () => {
216
+ assert.strictEqual(constants.SPAN_KINDS.length, 5);
217
+ });
218
+ it('should have INTERNAL at index 0', () => {
219
+ assert.strictEqual(constants.SPAN_KINDS[0], 'INTERNAL');
220
+ });
221
+ it('should have SERVER at index 1', () => {
222
+ assert.strictEqual(constants.SPAN_KINDS[1], 'SERVER');
223
+ });
224
+ it('should have CLIENT at index 2', () => {
225
+ assert.strictEqual(constants.SPAN_KINDS[2], 'CLIENT');
226
+ });
227
+ it('should have PRODUCER at index 3', () => {
228
+ assert.strictEqual(constants.SPAN_KINDS[3], 'PRODUCER');
229
+ });
230
+ it('should have CONSUMER at index 4', () => {
231
+ assert.strictEqual(constants.SPAN_KINDS[4], 'CONSUMER');
232
+ });
233
+ });
234
+ describe('getSpanKind', () => {
235
+ it('should return INTERNAL for kind 0', () => {
236
+ assert.strictEqual(constants.getSpanKind(0), 'INTERNAL');
237
+ });
238
+ it('should return SERVER for kind 1', () => {
239
+ assert.strictEqual(constants.getSpanKind(1), 'SERVER');
240
+ });
241
+ it('should return CLIENT for kind 2', () => {
242
+ assert.strictEqual(constants.getSpanKind(2), 'CLIENT');
243
+ });
244
+ it('should return PRODUCER for kind 3', () => {
245
+ assert.strictEqual(constants.getSpanKind(3), 'PRODUCER');
246
+ });
247
+ it('should return CONSUMER for kind 4', () => {
248
+ assert.strictEqual(constants.getSpanKind(4), 'CONSUMER');
249
+ });
250
+ it('should return undefined for undefined kind', () => {
251
+ assert.strictEqual(constants.getSpanKind(undefined), undefined);
252
+ });
253
+ it('should return undefined for negative kind', () => {
254
+ assert.strictEqual(constants.getSpanKind(-1), undefined);
255
+ });
256
+ it('should return undefined for out-of-bounds kind', () => {
257
+ assert.strictEqual(constants.getSpanKind(5), undefined);
258
+ assert.strictEqual(constants.getSpanKind(100), undefined);
259
+ });
260
+ });
261
+ describe('STATUS_CODES', () => {
262
+ it('should be an array', () => {
263
+ assert.ok(Array.isArray(constants.STATUS_CODES));
264
+ });
265
+ it('should have 3 status codes', () => {
266
+ assert.strictEqual(constants.STATUS_CODES.length, 3);
267
+ });
268
+ it('should have UNSET at index 0', () => {
269
+ assert.strictEqual(constants.STATUS_CODES[0], 'UNSET');
270
+ });
271
+ it('should have OK at index 1', () => {
272
+ assert.strictEqual(constants.STATUS_CODES[1], 'OK');
273
+ });
274
+ it('should have ERROR at index 2', () => {
275
+ assert.strictEqual(constants.STATUS_CODES[2], 'ERROR');
276
+ });
277
+ });
278
+ describe('getStatusCodeName', () => {
279
+ it('should return UNSET for code 0', () => {
280
+ assert.strictEqual(constants.getStatusCodeName(0), 'UNSET');
281
+ });
282
+ it('should return OK for code 1', () => {
283
+ assert.strictEqual(constants.getStatusCodeName(1), 'OK');
284
+ });
285
+ it('should return ERROR for code 2', () => {
286
+ assert.strictEqual(constants.getStatusCodeName(2), 'ERROR');
287
+ });
288
+ it('should return undefined for undefined code', () => {
289
+ assert.strictEqual(constants.getStatusCodeName(undefined), undefined);
290
+ });
291
+ it('should return undefined for negative code', () => {
292
+ assert.strictEqual(constants.getStatusCodeName(-1), undefined);
293
+ });
294
+ it('should return undefined for out-of-bounds code', () => {
295
+ assert.strictEqual(constants.getStatusCodeName(3), undefined);
296
+ assert.strictEqual(constants.getStatusCodeName(100), undefined);
297
+ });
298
+ });
299
+ describe('getTelemetryDirectories', () => {
300
+ let tempDir;
301
+ beforeEach(() => {
302
+ tempDir = createTempDir();
303
+ });
304
+ afterEach(() => {
305
+ removeTempDir(tempDir);
306
+ });
307
+ it('should return array of directories', () => {
308
+ const dirs = constants.getTelemetryDirectories(tempDir);
309
+ assert.ok(Array.isArray(dirs));
310
+ });
311
+ it('should include global telemetry directory if it exists', () => {
312
+ const dirs = constants.getTelemetryDirectories(tempDir);
313
+ const globalDir = dirs.find(d => d.source === 'global');
314
+ // Global dir is included if TELEMETRY_DIR exists
315
+ if (fs.existsSync(constants.TELEMETRY_DIR)) {
316
+ assert.ok(globalDir);
317
+ assert.strictEqual(globalDir?.path, constants.TELEMETRY_DIR);
318
+ }
319
+ });
320
+ it('should detect .claude/telemetry local directory', () => {
321
+ const localTelemetry = join(tempDir, '.claude', 'telemetry');
322
+ fs.mkdirSync(localTelemetry, { recursive: true });
323
+ const dirs = constants.getTelemetryDirectories(tempDir);
324
+ const localDir = dirs.find(d => d.source === 'local' && d.path.includes('.claude/telemetry'));
325
+ assert.ok(localDir);
326
+ assert.strictEqual(localDir?.path, localTelemetry);
327
+ });
328
+ it('should detect telemetry/ local directory', () => {
329
+ const localTelemetry = join(tempDir, 'telemetry');
330
+ fs.mkdirSync(localTelemetry, { recursive: true });
331
+ const dirs = constants.getTelemetryDirectories(tempDir);
332
+ const localDir = dirs.find(d => d.source === 'local' && d.path === localTelemetry);
333
+ assert.ok(localDir);
334
+ });
335
+ it('should detect .telemetry/ local directory', () => {
336
+ const localTelemetry = join(tempDir, '.telemetry');
337
+ fs.mkdirSync(localTelemetry, { recursive: true });
338
+ const dirs = constants.getTelemetryDirectories(tempDir);
339
+ const localDir = dirs.find(d => d.source === 'local' && d.path === localTelemetry);
340
+ assert.ok(localDir);
341
+ });
342
+ it('should detect multiple local directories', () => {
343
+ // Create multiple local telemetry directories
344
+ fs.mkdirSync(join(tempDir, 'telemetry'), { recursive: true });
345
+ fs.mkdirSync(join(tempDir, '.telemetry'), { recursive: true });
346
+ const dirs = constants.getTelemetryDirectories(tempDir);
347
+ const localDirs = dirs.filter(d => d.source === 'local');
348
+ assert.ok(localDirs.length >= 2);
349
+ });
350
+ it('should not include non-existent local directories', () => {
351
+ // Don't create any local directories
352
+ const dirs = constants.getTelemetryDirectories(tempDir);
353
+ const localDirs = dirs.filter(d => d.source === 'local');
354
+ // Should not include any local dirs for this temp directory
355
+ assert.strictEqual(localDirs.length, 0);
356
+ });
357
+ it('should avoid duplicate paths', () => {
358
+ // Create a telemetry directory
359
+ const localTelemetry = join(tempDir, 'telemetry');
360
+ fs.mkdirSync(localTelemetry, { recursive: true });
361
+ const dirs = constants.getTelemetryDirectories(tempDir);
362
+ const paths = dirs.map(d => d.path);
363
+ const uniquePaths = new Set(paths);
364
+ assert.strictEqual(paths.length, uniquePaths.size, 'Should not have duplicate paths');
365
+ });
366
+ it('should use process.cwd() when cwd not provided', () => {
367
+ const dirs = constants.getTelemetryDirectories();
368
+ assert.ok(Array.isArray(dirs));
369
+ });
370
+ it('should return directories with correct source labels', () => {
371
+ fs.mkdirSync(join(tempDir, 'telemetry'), { recursive: true });
372
+ const dirs = constants.getTelemetryDirectories(tempDir);
373
+ for (const dir of dirs) {
374
+ assert.ok(['global', 'local'].includes(dir.source));
375
+ assert.ok(typeof dir.path === 'string');
376
+ assert.ok(dir.path.length > 0);
377
+ }
378
+ });
379
+ });
380
+ });
381
+ //# sourceMappingURL=constants.test.js.map