observability-toolkit 1.8.0 → 1.8.4

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 (186) hide show
  1. package/README.md +81 -3
  2. package/dist/backends/index.d.ts +119 -0
  3. package/dist/backends/index.d.ts.map +1 -1
  4. package/dist/backends/index.js +57 -0
  5. package/dist/backends/index.js.map +1 -1
  6. package/dist/backends/index.test.d.ts +5 -0
  7. package/dist/backends/index.test.d.ts.map +1 -0
  8. package/dist/backends/index.test.js +156 -0
  9. package/dist/backends/index.test.js.map +1 -0
  10. package/dist/backends/local-jsonl-boolean-search.test.js +8 -27
  11. package/dist/backends/local-jsonl-boolean-search.test.js.map +1 -1
  12. package/dist/backends/local-jsonl-logs.test.d.ts +2 -0
  13. package/dist/backends/local-jsonl-logs.test.d.ts.map +1 -0
  14. package/dist/backends/local-jsonl-logs.test.js +603 -0
  15. package/dist/backends/local-jsonl-logs.test.js.map +1 -0
  16. package/dist/backends/local-jsonl-traces.test.d.ts +2 -0
  17. package/dist/backends/local-jsonl-traces.test.d.ts.map +1 -0
  18. package/dist/backends/local-jsonl-traces.test.js +1723 -0
  19. package/dist/backends/local-jsonl-traces.test.js.map +1 -0
  20. package/dist/backends/local-jsonl.d.ts +4 -1
  21. package/dist/backends/local-jsonl.d.ts.map +1 -1
  22. package/dist/backends/local-jsonl.js +185 -1
  23. package/dist/backends/local-jsonl.js.map +1 -1
  24. package/dist/backends/local-jsonl.test.js +723 -46
  25. package/dist/backends/local-jsonl.test.js.map +1 -1
  26. package/dist/backends/signoz-api.d.ts +32 -0
  27. package/dist/backends/signoz-api.d.ts.map +1 -1
  28. package/dist/backends/signoz-api.js +231 -33
  29. package/dist/backends/signoz-api.js.map +1 -1
  30. package/dist/backends/signoz-api.test.js +410 -63
  31. package/dist/backends/signoz-api.test.js.map +1 -1
  32. package/dist/lib/constants.d.ts +59 -0
  33. package/dist/lib/constants.d.ts.map +1 -1
  34. package/dist/lib/constants.js +252 -6
  35. package/dist/lib/constants.js.map +1 -1
  36. package/dist/lib/constants.test.js +357 -21
  37. package/dist/lib/constants.test.js.map +1 -1
  38. package/dist/lib/edge-cases.test.d.ts +11 -0
  39. package/dist/lib/edge-cases.test.d.ts.map +1 -0
  40. package/dist/lib/edge-cases.test.js +634 -0
  41. package/dist/lib/edge-cases.test.js.map +1 -0
  42. package/dist/lib/error-sanitizer.d.ts +57 -0
  43. package/dist/lib/error-sanitizer.d.ts.map +1 -0
  44. package/dist/lib/error-sanitizer.js +207 -0
  45. package/dist/lib/error-sanitizer.js.map +1 -0
  46. package/dist/lib/error-sanitizer.test.d.ts +8 -0
  47. package/dist/lib/error-sanitizer.test.d.ts.map +1 -0
  48. package/dist/lib/error-sanitizer.test.js +369 -0
  49. package/dist/lib/error-sanitizer.test.js.map +1 -0
  50. package/dist/lib/file-utils.d.ts +134 -0
  51. package/dist/lib/file-utils.d.ts.map +1 -1
  52. package/dist/lib/file-utils.js +395 -9
  53. package/dist/lib/file-utils.js.map +1 -1
  54. package/dist/lib/file-utils.test.js +444 -3
  55. package/dist/lib/file-utils.test.js.map +1 -1
  56. package/dist/lib/indexer.d.ts +9 -1
  57. package/dist/lib/indexer.d.ts.map +1 -1
  58. package/dist/lib/indexer.js +51 -2
  59. package/dist/lib/indexer.js.map +1 -1
  60. package/dist/lib/indexer.test.js +138 -20
  61. package/dist/lib/indexer.test.js.map +1 -1
  62. package/dist/lib/input-validator.d.ts +103 -0
  63. package/dist/lib/input-validator.d.ts.map +1 -0
  64. package/dist/lib/input-validator.js +250 -0
  65. package/dist/lib/input-validator.js.map +1 -0
  66. package/dist/lib/input-validator.test.d.ts +2 -0
  67. package/dist/lib/input-validator.test.d.ts.map +1 -0
  68. package/dist/lib/input-validator.test.js +287 -0
  69. package/dist/lib/input-validator.test.js.map +1 -0
  70. package/dist/lib/query-sanitizer.d.ts +143 -0
  71. package/dist/lib/query-sanitizer.d.ts.map +1 -0
  72. package/dist/lib/query-sanitizer.js +261 -0
  73. package/dist/lib/query-sanitizer.js.map +1 -0
  74. package/dist/lib/query-sanitizer.test.d.ts +5 -0
  75. package/dist/lib/query-sanitizer.test.d.ts.map +1 -0
  76. package/dist/lib/query-sanitizer.test.js +400 -0
  77. package/dist/lib/query-sanitizer.test.js.map +1 -0
  78. package/dist/lib/server-utils.d.ts +80 -0
  79. package/dist/lib/server-utils.d.ts.map +1 -0
  80. package/dist/lib/server-utils.js +141 -0
  81. package/dist/lib/server-utils.js.map +1 -0
  82. package/dist/lib/shared-schemas.d.ts +59 -0
  83. package/dist/lib/shared-schemas.d.ts.map +1 -0
  84. package/dist/lib/shared-schemas.js +58 -0
  85. package/dist/lib/shared-schemas.js.map +1 -0
  86. package/dist/lib/shared-schemas.test.d.ts +5 -0
  87. package/dist/lib/shared-schemas.test.d.ts.map +1 -0
  88. package/dist/lib/shared-schemas.test.js +106 -0
  89. package/dist/lib/shared-schemas.test.js.map +1 -0
  90. package/dist/lib/toon-encoder.d.ts +21 -0
  91. package/dist/lib/toon-encoder.d.ts.map +1 -0
  92. package/dist/lib/toon-encoder.js +46 -0
  93. package/dist/lib/toon-encoder.js.map +1 -0
  94. package/dist/server.d.ts +1 -1
  95. package/dist/server.d.ts.map +1 -1
  96. package/dist/server.js +155 -81
  97. package/dist/server.js.map +1 -1
  98. package/dist/server.test.js +363 -0
  99. package/dist/server.test.js.map +1 -1
  100. package/dist/test-helpers/env-utils.d.ts +65 -0
  101. package/dist/test-helpers/env-utils.d.ts.map +1 -0
  102. package/dist/test-helpers/env-utils.js +94 -0
  103. package/dist/test-helpers/env-utils.js.map +1 -0
  104. package/dist/test-helpers/file-utils.d.ts +93 -0
  105. package/dist/test-helpers/file-utils.d.ts.map +1 -0
  106. package/dist/test-helpers/file-utils.js +206 -0
  107. package/dist/test-helpers/file-utils.js.map +1 -0
  108. package/dist/test-helpers/index.d.ts +10 -0
  109. package/dist/test-helpers/index.d.ts.map +1 -0
  110. package/dist/test-helpers/index.js +28 -0
  111. package/dist/test-helpers/index.js.map +1 -0
  112. package/dist/test-helpers/mock-backends.d.ts +139 -0
  113. package/dist/test-helpers/mock-backends.d.ts.map +1 -0
  114. package/dist/test-helpers/mock-backends.js +227 -0
  115. package/dist/test-helpers/mock-backends.js.map +1 -0
  116. package/dist/test-helpers/mock-backends.test.d.ts +5 -0
  117. package/dist/test-helpers/mock-backends.test.d.ts.map +1 -0
  118. package/dist/test-helpers/mock-backends.test.js +368 -0
  119. package/dist/test-helpers/mock-backends.test.js.map +1 -0
  120. package/dist/test-helpers/schema-validators.d.ts +32 -0
  121. package/dist/test-helpers/schema-validators.d.ts.map +1 -0
  122. package/dist/test-helpers/schema-validators.js +125 -0
  123. package/dist/test-helpers/schema-validators.js.map +1 -0
  124. package/dist/test-helpers/test-data-builders.d.ts +223 -0
  125. package/dist/test-helpers/test-data-builders.d.ts.map +1 -0
  126. package/dist/test-helpers/test-data-builders.js +288 -0
  127. package/dist/test-helpers/test-data-builders.js.map +1 -0
  128. package/dist/test-helpers/test-data-builders.test.d.ts +2 -0
  129. package/dist/test-helpers/test-data-builders.test.d.ts.map +1 -0
  130. package/dist/test-helpers/test-data-builders.test.js +306 -0
  131. package/dist/test-helpers/test-data-builders.test.js.map +1 -0
  132. package/dist/test-helpers/tool-validators.d.ts +28 -0
  133. package/dist/test-helpers/tool-validators.d.ts.map +1 -0
  134. package/dist/test-helpers/tool-validators.js +56 -0
  135. package/dist/test-helpers/tool-validators.js.map +1 -0
  136. package/dist/tools/context-stats.d.ts +1 -0
  137. package/dist/tools/context-stats.d.ts.map +1 -1
  138. package/dist/tools/context-stats.js +9 -5
  139. package/dist/tools/context-stats.js.map +1 -1
  140. package/dist/tools/context-stats.test.js +24 -10
  141. package/dist/tools/context-stats.test.js.map +1 -1
  142. package/dist/tools/get-trace-url.js +2 -2
  143. package/dist/tools/get-trace-url.js.map +1 -1
  144. package/dist/tools/health-check.js +2 -2
  145. package/dist/tools/health-check.js.map +1 -1
  146. package/dist/tools/index.d.ts +1 -0
  147. package/dist/tools/index.d.ts.map +1 -1
  148. package/dist/tools/index.js +1 -0
  149. package/dist/tools/index.js.map +1 -1
  150. package/dist/tools/query-evaluations.d.ts +186 -0
  151. package/dist/tools/query-evaluations.d.ts.map +1 -0
  152. package/dist/tools/query-evaluations.js +351 -0
  153. package/dist/tools/query-evaluations.js.map +1 -0
  154. package/dist/tools/query-evaluations.test.d.ts +5 -0
  155. package/dist/tools/query-evaluations.test.d.ts.map +1 -0
  156. package/dist/tools/query-evaluations.test.js +733 -0
  157. package/dist/tools/query-evaluations.test.js.map +1 -0
  158. package/dist/tools/query-llm-events.d.ts +24 -18
  159. package/dist/tools/query-llm-events.d.ts.map +1 -1
  160. package/dist/tools/query-llm-events.js +103 -60
  161. package/dist/tools/query-llm-events.js.map +1 -1
  162. package/dist/tools/query-llm-events.test.js +271 -9
  163. package/dist/tools/query-llm-events.test.js.map +1 -1
  164. package/dist/tools/query-logs.d.ts +28 -20
  165. package/dist/tools/query-logs.d.ts.map +1 -1
  166. package/dist/tools/query-logs.js +85 -61
  167. package/dist/tools/query-logs.js.map +1 -1
  168. package/dist/tools/query-logs.test.js +74 -145
  169. package/dist/tools/query-logs.test.js.map +1 -1
  170. package/dist/tools/query-metrics.d.ts +20 -20
  171. package/dist/tools/query-metrics.d.ts.map +1 -1
  172. package/dist/tools/query-metrics.js +109 -61
  173. package/dist/tools/query-metrics.js.map +1 -1
  174. package/dist/tools/query-metrics.test.js +26 -61
  175. package/dist/tools/query-metrics.test.js.map +1 -1
  176. package/dist/tools/query-traces.d.ts +24 -22
  177. package/dist/tools/query-traces.d.ts.map +1 -1
  178. package/dist/tools/query-traces.js +95 -70
  179. package/dist/tools/query-traces.js.map +1 -1
  180. package/dist/tools/query-traces.test.js +294 -90
  181. package/dist/tools/query-traces.test.js.map +1 -1
  182. package/dist/tools/setup-claudeignore.js +7 -7
  183. package/dist/tools/setup-claudeignore.js.map +1 -1
  184. package/dist/tools/setup-claudeignore.test.js +4 -25
  185. package/dist/tools/setup-claudeignore.test.js.map +1 -1
  186. package/package.json +3 -4
@@ -8,6 +8,38 @@
8
8
  * This backend uses the Query API (v5) for reading telemetry data.
9
9
  */
10
10
  import { TelemetryBackend, TraceSpan, LogRecord, MetricDataPoint, TraceQueryOptions, LogQueryOptions, MetricQueryOptions, PaginatedResult } from './index.js';
11
+ /**
12
+ * Token bucket rate limiter to prevent API abuse
13
+ * Allows burst traffic up to maxTokens, then refills at refillRate tokens/second
14
+ */
15
+ export declare class TokenBucketRateLimiter {
16
+ private tokens;
17
+ private lastRefill;
18
+ private readonly maxTokens;
19
+ private readonly refillRate;
20
+ constructor(maxTokens?: number, refillRate?: number);
21
+ /**
22
+ * Refill tokens based on elapsed time
23
+ */
24
+ private refill;
25
+ /**
26
+ * Try to consume a token. Returns true if allowed, false if rate limited.
27
+ */
28
+ tryConsume(): boolean;
29
+ /**
30
+ * Get current available tokens (for monitoring/testing)
31
+ */
32
+ getAvailableTokens(): number;
33
+ /**
34
+ * Refund a single token (used when request is rejected by circuit breaker)
35
+ * This prevents the circuit breaker from consuming rate limit tokens for requests it blocks
36
+ */
37
+ refund(): void;
38
+ /**
39
+ * Reset the rate limiter to full capacity (for testing only)
40
+ */
41
+ reset(): void;
42
+ }
11
43
  export declare class SigNozApiBackend implements TelemetryBackend {
12
44
  name: string;
13
45
  private baseUrl;
@@ -1 +1 @@
1
- {"version":3,"file":"signoz-api.d.ts","sourceRoot":"","sources":["../../src/backends/signoz-api.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,eAAe,EAChB,MAAM,YAAY,CAAC;AA0GpB,qBAAa,gBAAiB,YAAW,gBAAgB;IACvD,IAAI,SAAgB;IACpB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,cAAc,CAA2B;gBAErC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;YAS/B,KAAK;IAqCnB;;OAEG;IACH,OAAO,CAAC,aAAa;IAOf,WAAW,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAwH7D,SAAS,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAiHzD,YAAY,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAyG3E;;OAEG;IACG,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IA+I3F;;OAEG;IACG,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IAuIvF;;OAEG;IACG,qBAAqB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;IA4H7F,WAAW,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAqDhG;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAIrC"}
1
+ {"version":3,"file":"signoz-api.d.ts","sourceRoot":"","sources":["../../src/backends/signoz-api.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,eAAe,EAChB,MAAM,YAAY,CAAC;AAkIpB;;;GAGG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;IAOnD;;OAEG;IACH,OAAO,CAAC,MAAM;IAWd;;OAEG;IACH,UAAU,IAAI,OAAO;IAYrB;;OAEG;IACH,kBAAkB,IAAI,MAAM;IAK5B;;;OAGG;IACH,MAAM,IAAI,IAAI;IAId;;OAEG;IACH,KAAK,IAAI,IAAI;CAId;AA2GD,qBAAa,gBAAiB,YAAW,gBAAgB;IACvD,IAAI,SAAgB;IACpB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,cAAc,CAA2B;gBAErC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;YAU/B,KAAK;IA0CnB;;OAEG;IACH,OAAO,CAAC,aAAa;IAOf,WAAW,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAwH7D,SAAS,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAiHzD,YAAY,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAkH3E;;OAEG;IACG,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IA+I3F;;OAEG;IACG,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IAuIvF;;OAEG;IACG,qBAAqB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;IAqI7F,WAAW,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAgEhG;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAIrC"}
@@ -7,9 +7,96 @@
7
7
  *
8
8
  * This backend uses the Query API (v5) for reading telemetry data.
9
9
  */
10
- import { SIGNOZ_API_KEY, CIRCUIT_BREAKER, getSpanKind, escapeFilterValue } from '../lib/constants.js';
11
- // SigNoz Query API URL (separate from ingest URL)
12
- const SIGNOZ_QUERY_URL = process.env.SIGNOZ_QUERY_URL || '';
10
+ import { SIGNOZ_API_KEY, CIRCUIT_BREAKER, RATE_LIMITER, getSpanKind } from '../lib/constants.js';
11
+ import { escapeFilterValueSafe, escapeLikeValueSafe, sanitizeIdentifier, } from '../lib/query-sanitizer.js';
12
+ /**
13
+ * Whitelist of safe path prefixes for backward compatibility
14
+ * These are common patterns for SigNoz deployments and reverse proxies
15
+ */
16
+ const SAFE_PATH_PREFIXES = [
17
+ '/v1/', // OTLP standard paths
18
+ '/api/', // SigNoz API paths
19
+ '/signoz/', // Common reverse proxy prefix
20
+ '/query/', // Query service prefix
21
+ ];
22
+ /**
23
+ * Validate and sanitize a URL to prevent SSRF attacks
24
+ * Only allows HTTPS URLs to external hosts
25
+ * Preserves whitelisted path prefixes for backward compatibility
26
+ */
27
+ function validateAndSanitizeUrl(url) {
28
+ if (!url)
29
+ return '';
30
+ try {
31
+ const parsed = new URL(url);
32
+ // Only allow HTTPS protocol (prevent http://, file://, etc.)
33
+ if (parsed.protocol !== 'https:') {
34
+ console.error('[SECURITY] Invalid URL protocol - only HTTPS allowed');
35
+ return '';
36
+ }
37
+ // Block internal/private network addresses (SSRF protection)
38
+ const hostname = parsed.hostname.toLowerCase();
39
+ // Normalize IPv6 for comparison (handles bracketed and various formats)
40
+ const normalizedHost = hostname.replace(/^\[|\]$/g, '');
41
+ // Check for localhost variants
42
+ if (normalizedHost === 'localhost' ||
43
+ normalizedHost === '127.0.0.1' ||
44
+ normalizedHost === '0.0.0.0' ||
45
+ // IPv6 localhost variants
46
+ normalizedHost === '::1' ||
47
+ normalizedHost === '0:0:0:0:0:0:0:1' ||
48
+ normalizedHost === '0000:0000:0000:0000:0000:0000:0000:0001' ||
49
+ // IPv4-mapped IPv6 localhost
50
+ normalizedHost === '::ffff:127.0.0.1' ||
51
+ normalizedHost === '::ffff:7f00:1' ||
52
+ normalizedHost.startsWith('::ffff:127.') ||
53
+ // .localhost TLD (reserved for localhost)
54
+ normalizedHost === 'localhost' ||
55
+ normalizedHost.endsWith('.localhost')) {
56
+ console.error('[SECURITY] Localhost addresses not allowed for SigNoz URL');
57
+ return '';
58
+ }
59
+ // Check for private network ranges
60
+ if (normalizedHost.startsWith('192.168.') ||
61
+ normalizedHost.startsWith('10.') ||
62
+ /^172\.(1[6-9]|2[0-9]|3[0-1])\./.test(normalizedHost) ||
63
+ // IPv6 private ranges
64
+ normalizedHost.startsWith('fc') || // Unique local addresses fc00::/7
65
+ normalizedHost.startsWith('fd') || // Unique local addresses
66
+ normalizedHost.startsWith('fe80') || // Link-local addresses
67
+ // IPv4-mapped private ranges
68
+ normalizedHost.startsWith('::ffff:192.168.') ||
69
+ normalizedHost.startsWith('::ffff:10.') ||
70
+ /^::ffff:172\.(1[6-9]|2[0-9]|3[0-1])\./.test(normalizedHost)) {
71
+ console.error('[SECURITY] Private network addresses not allowed for SigNoz URL');
72
+ return '';
73
+ }
74
+ // Check for reserved domain suffixes
75
+ if (normalizedHost.endsWith('.local') ||
76
+ normalizedHost.endsWith('.internal') ||
77
+ normalizedHost.endsWith('.localdomain') ||
78
+ normalizedHost.endsWith('.home.arpa') // RFC 8375 home network
79
+ ) {
80
+ console.error('[SECURITY] Reserved domain names not allowed for SigNoz URL');
81
+ return '';
82
+ }
83
+ // Check if path starts with a whitelisted prefix
84
+ const path = parsed.pathname;
85
+ const hasWhitelistedPath = SAFE_PATH_PREFIXES.some(prefix => path.startsWith(prefix));
86
+ if (hasWhitelistedPath) {
87
+ // Preserve whitelisted path, but strip query params and fragment for safety
88
+ return `${parsed.origin}${path}`;
89
+ }
90
+ // Return origin only for non-whitelisted paths (strips path, query, fragment)
91
+ return parsed.origin;
92
+ }
93
+ catch (error) {
94
+ console.error('[SECURITY] Invalid SIGNOZ_QUERY_URL format');
95
+ return '';
96
+ }
97
+ }
98
+ // SigNoz Query API URL (separate from ingest URL) - validated for SSRF protection
99
+ const SIGNOZ_QUERY_URL = validateAndSanitizeUrl(process.env.SIGNOZ_QUERY_URL || '');
13
100
  function startTiming() {
14
101
  const start = performance.now();
15
102
  return {
@@ -18,25 +105,94 @@ function startTiming() {
18
105
  }
19
106
  const SLOW_QUERY_THRESHOLD_MS = 500;
20
107
  /**
21
- * Simple circuit breaker for API calls
108
+ * Token bucket rate limiter to prevent API abuse
109
+ * Allows burst traffic up to maxTokens, then refills at refillRate tokens/second
110
+ */
111
+ export class TokenBucketRateLimiter {
112
+ tokens;
113
+ lastRefill;
114
+ maxTokens;
115
+ refillRate;
116
+ constructor(maxTokens, refillRate) {
117
+ this.maxTokens = maxTokens ?? RATE_LIMITER.MAX_TOKENS;
118
+ this.refillRate = refillRate ?? RATE_LIMITER.REFILL_RATE;
119
+ this.tokens = this.maxTokens;
120
+ this.lastRefill = Date.now();
121
+ }
122
+ /**
123
+ * Refill tokens based on elapsed time
124
+ */
125
+ refill() {
126
+ const now = Date.now();
127
+ const elapsedMs = now - this.lastRefill;
128
+ const tokensToAdd = Math.floor((elapsedMs / 1000) * this.refillRate);
129
+ if (tokensToAdd > 0) {
130
+ this.tokens = Math.min(this.maxTokens, this.tokens + tokensToAdd);
131
+ this.lastRefill = now;
132
+ }
133
+ }
134
+ /**
135
+ * Try to consume a token. Returns true if allowed, false if rate limited.
136
+ */
137
+ tryConsume() {
138
+ this.refill();
139
+ if (this.tokens > 0) {
140
+ this.tokens--;
141
+ return true;
142
+ }
143
+ console.warn(`[obs-toolkit] Rate limit exceeded (0/${this.maxTokens} tokens available)`);
144
+ return false;
145
+ }
146
+ /**
147
+ * Get current available tokens (for monitoring/testing)
148
+ */
149
+ getAvailableTokens() {
150
+ this.refill();
151
+ return this.tokens;
152
+ }
153
+ /**
154
+ * Refund a single token (used when request is rejected by circuit breaker)
155
+ * This prevents the circuit breaker from consuming rate limit tokens for requests it blocks
156
+ */
157
+ refund() {
158
+ this.tokens = Math.min(this.maxTokens, this.tokens + 1);
159
+ }
160
+ /**
161
+ * Reset the rate limiter to full capacity (for testing only)
162
+ */
163
+ reset() {
164
+ this.tokens = this.maxTokens;
165
+ this.lastRefill = Date.now();
166
+ }
167
+ }
168
+ /**
169
+ * Simple circuit breaker for API calls with integrated rate limiting
22
170
  */
23
171
  class ApiCircuitBreaker {
24
172
  failures = 0;
25
173
  lastFailure = 0;
26
174
  state = 'closed';
175
+ rateLimiter;
27
176
  maxFailures;
28
177
  resetMs;
29
178
  constructor() {
30
179
  this.maxFailures = CIRCUIT_BREAKER.MAX_FAILURES;
31
180
  this.resetMs = CIRCUIT_BREAKER.RESET_MS;
181
+ this.rateLimiter = new TokenBucketRateLimiter();
32
182
  }
33
183
  canRequest() {
184
+ // Check rate limit first
185
+ if (!this.rateLimiter.tryConsume()) {
186
+ return false;
187
+ }
34
188
  if (this.state === 'open') {
35
189
  if (Date.now() - this.lastFailure > this.resetMs) {
36
190
  console.info(`[obs-toolkit] Circuit breaker entering HALF-OPEN state (reset timeout elapsed)`);
37
191
  this.state = 'half-open';
38
192
  return true;
39
193
  }
194
+ // Refund the single consumed token since we're not making the request
195
+ this.rateLimiter.refund();
40
196
  return false;
41
197
  }
42
198
  return true;
@@ -60,6 +216,18 @@ class ApiCircuitBreaker {
60
216
  getState() {
61
217
  return this.state;
62
218
  }
219
+ /**
220
+ * Check if rate limited (for health check reporting)
221
+ */
222
+ isRateLimited() {
223
+ return this.rateLimiter.getAvailableTokens() === 0;
224
+ }
225
+ /**
226
+ * Get available tokens (for monitoring)
227
+ */
228
+ getAvailableTokens() {
229
+ return this.rateLimiter.getAvailableTokens();
230
+ }
63
231
  }
64
232
  /**
65
233
  * Encode cursor data to opaque base64 string
@@ -92,7 +260,8 @@ export class SigNozApiBackend {
92
260
  // Use SIGNOZ_QUERY_URL for queries - must be explicitly set
93
261
  // Cannot be derived from ingest URL (different domain pattern)
94
262
  // Example: SIGNOZ_QUERY_URL=https://your-tenant.us.signoz.cloud
95
- const queryUrl = baseUrl || SIGNOZ_QUERY_URL;
263
+ // Validate URL to prevent SSRF attacks
264
+ const queryUrl = baseUrl ? validateAndSanitizeUrl(baseUrl) : SIGNOZ_QUERY_URL;
96
265
  this.baseUrl = queryUrl.replace(/\/+$/, '');
97
266
  this.apiKey = apiKey || SIGNOZ_API_KEY;
98
267
  }
@@ -101,7 +270,12 @@ export class SigNozApiBackend {
101
270
  throw new Error('SigNoz Query URL or API key not configured. Set SIGNOZ_QUERY_URL and SIGNOZ_API_KEY');
102
271
  }
103
272
  if (!this.circuitBreaker.canRequest()) {
104
- throw new Error('Circuit breaker open - SigNoz API unavailable');
273
+ // canRequest() returns false for both rate limiting and circuit breaker
274
+ // Check which one triggered the rejection
275
+ if (this.circuitBreaker.getState() === 'open') {
276
+ throw new Error('Circuit breaker open - SigNoz API unavailable');
277
+ }
278
+ throw new Error('Rate limit exceeded - too many requests');
105
279
  }
106
280
  const url = `${this.baseUrl}${path}`;
107
281
  const headers = {
@@ -148,16 +322,16 @@ export class SigNozApiBackend {
148
322
  const start = this.getMillisTime(options.startDate, 1);
149
323
  const end = this.getMillisTime(options.endDate ? options.endDate + 'T23:59:59Z' : undefined, 0);
150
324
  const limit = options.limit || 100;
151
- // Build filter expression
325
+ // Build filter expression with input validation and escaping
152
326
  const filterParts = [];
153
327
  if (options.traceId) {
154
- filterParts.push(`traceID = '${escapeFilterValue(options.traceId)}'`);
328
+ filterParts.push(`traceID = '${escapeFilterValueSafe(options.traceId, 'traceId')}'`);
155
329
  }
156
330
  if (options.serviceName) {
157
- filterParts.push(`serviceName = '${escapeFilterValue(options.serviceName)}'`);
331
+ filterParts.push(`serviceName = '${escapeFilterValueSafe(options.serviceName, 'serviceName')}'`);
158
332
  }
159
333
  if (options.spanName) {
160
- filterParts.push(`name LIKE '%${escapeFilterValue(options.spanName)}%'`);
334
+ filterParts.push(`name LIKE '%${escapeLikeValueSafe(options.spanName, 'spanName')}%'`);
161
335
  }
162
336
  if (options.minDurationMs) {
163
337
  filterParts.push(`durationNano >= ${options.minDurationMs * 1_000_000}`);
@@ -225,7 +399,7 @@ export class SigNozApiBackend {
225
399
  }
226
400
  catch (error) {
227
401
  logTiming();
228
- if (error instanceof Error && error.message.includes('Circuit breaker')) {
402
+ if (error instanceof Error && (error.message.includes('Circuit breaker') || error.message.includes('Rate limit'))) {
229
403
  return [];
230
404
  }
231
405
  throw error;
@@ -242,16 +416,16 @@ export class SigNozApiBackend {
242
416
  const start = this.getMillisTime(options.startDate, 1);
243
417
  const end = this.getMillisTime(options.endDate ? options.endDate + 'T23:59:59Z' : undefined, 0);
244
418
  const limit = options.limit || 100;
245
- // Build filter expression
419
+ // Build filter expression with input validation and escaping
246
420
  const filterParts = [];
247
421
  if (options.severity) {
248
- filterParts.push(`severity_text = '${escapeFilterValue(options.severity.toUpperCase())}'`);
422
+ filterParts.push(`severity_text = '${escapeFilterValueSafe(options.severity.toUpperCase(), 'severity')}'`);
249
423
  }
250
424
  if (options.traceId) {
251
- filterParts.push(`trace_id = '${escapeFilterValue(options.traceId)}'`);
425
+ filterParts.push(`trace_id = '${escapeFilterValueSafe(options.traceId, 'traceId')}'`);
252
426
  }
253
427
  if (options.search) {
254
- filterParts.push(`body LIKE '%${escapeFilterValue(options.search)}%'`);
428
+ filterParts.push(`body LIKE '%${escapeLikeValueSafe(options.search, 'search')}%'`);
255
429
  }
256
430
  // Build v5 API payload
257
431
  const body = {
@@ -306,7 +480,7 @@ export class SigNozApiBackend {
306
480
  }
307
481
  catch (error) {
308
482
  logTiming();
309
- if (error instanceof Error && error.message.includes('Circuit breaker')) {
483
+ if (error instanceof Error && (error.message.includes('Circuit breaker') || error.message.includes('Rate limit'))) {
310
484
  return [];
311
485
  }
312
486
  throw error;
@@ -325,6 +499,11 @@ export class SigNozApiBackend {
325
499
  if (!options.metricName) {
326
500
  throw new Error('metricName is required for SigNoz metric queries');
327
501
  }
502
+ // Sanitize metric name (identifiers allow alphanumeric, underscore, dot)
503
+ const sanitizedMetricName = sanitizeIdentifier(options.metricName);
504
+ if (!sanitizedMetricName) {
505
+ throw new Error('Invalid metricName: must contain alphanumeric characters');
506
+ }
328
507
  // Map aggregation options to SigNoz format
329
508
  // Percentiles: p50, p95, p99 map to SigNoz percentile functions
330
509
  // rate: maps to SigNoz rate aggregation
@@ -333,6 +512,8 @@ export class SigNozApiBackend {
333
512
  'p50': 'p50', 'p95': 'p95', 'p99': 'p99', 'rate': 'rate',
334
513
  };
335
514
  const spaceAgg = spaceAggMap[options.aggregation || 'sum'] || 'sum';
515
+ // Sanitize groupBy identifiers
516
+ const sanitizedGroupBy = (options.groupBy || []).map(g => sanitizeIdentifier(g)).filter(g => g);
336
517
  // Build v5 API payload for metrics
337
518
  const body = {
338
519
  start,
@@ -346,11 +527,11 @@ export class SigNozApiBackend {
346
527
  signal: 'metrics',
347
528
  stepInterval: 60,
348
529
  aggregations: [{
349
- metricName: options.metricName,
530
+ metricName: sanitizedMetricName,
350
531
  timeAggregation: 'rate',
351
532
  spaceAggregation: spaceAgg,
352
533
  }],
353
- groupBy: (options.groupBy || []).map(g => ({ name: g })),
534
+ groupBy: sanitizedGroupBy.map(g => ({ name: g })),
354
535
  order: [],
355
536
  limit: options.limit || 100,
356
537
  offset: 0,
@@ -384,7 +565,7 @@ export class SigNozApiBackend {
384
565
  }
385
566
  catch (error) {
386
567
  logTiming();
387
- if (error instanceof Error && error.message.includes('Circuit breaker')) {
568
+ if (error instanceof Error && (error.message.includes('Circuit breaker') || error.message.includes('Rate limit'))) {
388
569
  return [];
389
570
  }
390
571
  throw error;
@@ -407,16 +588,16 @@ export class SigNozApiBackend {
407
588
  const end = this.getMillisTime(options.endDate ? options.endDate + 'T23:59:59Z' : undefined, 0);
408
589
  // Calculate offset based on cursor
409
590
  const offset = cursorData?.offset || options.offset || 0;
410
- // Build filter expression
591
+ // Build filter expression with input validation and escaping
411
592
  const filterParts = [];
412
593
  if (options.traceId) {
413
- filterParts.push(`traceID = '${escapeFilterValue(options.traceId)}'`);
594
+ filterParts.push(`traceID = '${escapeFilterValueSafe(options.traceId, 'traceId')}'`);
414
595
  }
415
596
  if (options.serviceName) {
416
- filterParts.push(`serviceName = '${escapeFilterValue(options.serviceName)}'`);
597
+ filterParts.push(`serviceName = '${escapeFilterValueSafe(options.serviceName, 'serviceName')}'`);
417
598
  }
418
599
  if (options.spanName) {
419
- filterParts.push(`name LIKE '%${escapeFilterValue(options.spanName)}%'`);
600
+ filterParts.push(`name LIKE '%${escapeLikeValueSafe(options.spanName, 'spanName')}%'`);
420
601
  }
421
602
  if (options.minDurationMs) {
422
603
  filterParts.push(`durationNano >= ${options.minDurationMs * 1_000_000}`);
@@ -497,7 +678,7 @@ export class SigNozApiBackend {
497
678
  return { data, nextCursor, hasMore };
498
679
  }
499
680
  catch (error) {
500
- if (error instanceof Error && error.message.includes('Circuit breaker')) {
681
+ if (error instanceof Error && (error.message.includes('Circuit breaker') || error.message.includes('Rate limit'))) {
501
682
  return { data: [], hasMore: false };
502
683
  }
503
684
  throw error;
@@ -520,16 +701,16 @@ export class SigNozApiBackend {
520
701
  const end = this.getMillisTime(options.endDate ? options.endDate + 'T23:59:59Z' : undefined, 0);
521
702
  // Calculate offset based on cursor
522
703
  const offset = cursorData?.offset || options.offset || 0;
523
- // Build filter expression
704
+ // Build filter expression with input validation and escaping
524
705
  const filterParts = [];
525
706
  if (options.severity) {
526
- filterParts.push(`severity_text = '${escapeFilterValue(options.severity.toUpperCase())}'`);
707
+ filterParts.push(`severity_text = '${escapeFilterValueSafe(options.severity.toUpperCase(), 'severity')}'`);
527
708
  }
528
709
  if (options.traceId) {
529
- filterParts.push(`trace_id = '${escapeFilterValue(options.traceId)}'`);
710
+ filterParts.push(`trace_id = '${escapeFilterValueSafe(options.traceId, 'traceId')}'`);
530
711
  }
531
712
  if (options.search) {
532
- filterParts.push(`body LIKE '%${escapeFilterValue(options.search)}%'`);
713
+ filterParts.push(`body LIKE '%${escapeLikeValueSafe(options.search, 'search')}%'`);
533
714
  }
534
715
  // Request limit + 1 to detect if there are more results
535
716
  const requestLimit = limit + 1;
@@ -596,7 +777,7 @@ export class SigNozApiBackend {
596
777
  return { data, nextCursor, hasMore };
597
778
  }
598
779
  catch (error) {
599
- if (error instanceof Error && error.message.includes('Circuit breaker')) {
780
+ if (error instanceof Error && (error.message.includes('Circuit breaker') || error.message.includes('Rate limit'))) {
600
781
  return { data: [], hasMore: false };
601
782
  }
602
783
  throw error;
@@ -620,6 +801,11 @@ export class SigNozApiBackend {
620
801
  if (!options.metricName) {
621
802
  throw new Error('metricName is required for SigNoz metric queries');
622
803
  }
804
+ // Sanitize metric name (identifiers allow alphanumeric, underscore, dot)
805
+ const sanitizedMetricName = sanitizeIdentifier(options.metricName);
806
+ if (!sanitizedMetricName) {
807
+ throw new Error('Invalid metricName: must contain alphanumeric characters');
808
+ }
623
809
  // Map aggregation options to SigNoz format
624
810
  // Percentiles: p50, p95, p99 map to SigNoz percentile functions
625
811
  // rate: maps to SigNoz rate aggregation
@@ -628,6 +814,8 @@ export class SigNozApiBackend {
628
814
  'p50': 'p50', 'p95': 'p95', 'p99': 'p99', 'rate': 'rate',
629
815
  };
630
816
  const spaceAgg = spaceAggMap[options.aggregation || 'sum'] || 'sum';
817
+ // Sanitize groupBy identifiers
818
+ const sanitizedGroupBy = (options.groupBy || []).map(g => sanitizeIdentifier(g)).filter(g => g);
631
819
  // Calculate offset based on cursor
632
820
  const offset = cursorData?.offset || options.offset || 0;
633
821
  // Request limit + 1 to detect if there are more results
@@ -645,11 +833,11 @@ export class SigNozApiBackend {
645
833
  signal: 'metrics',
646
834
  stepInterval: 60,
647
835
  aggregations: [{
648
- metricName: options.metricName,
836
+ metricName: sanitizedMetricName,
649
837
  timeAggregation: 'rate',
650
838
  spaceAggregation: spaceAgg,
651
839
  }],
652
- groupBy: (options.groupBy || []).map(g => ({ name: g })),
840
+ groupBy: sanitizedGroupBy.map(g => ({ name: g })),
653
841
  order: [],
654
842
  limit: requestLimit,
655
843
  offset,
@@ -691,7 +879,7 @@ export class SigNozApiBackend {
691
879
  return { data, nextCursor, hasMore };
692
880
  }
693
881
  catch (error) {
694
- if (error instanceof Error && error.message.includes('Circuit breaker')) {
882
+ if (error instanceof Error && (error.message.includes('Circuit breaker') || error.message.includes('Rate limit'))) {
695
883
  return { data: [], hasMore: false };
696
884
  }
697
885
  throw error;
@@ -707,6 +895,9 @@ export class SigNozApiBackend {
707
895
  if (this.circuitBreaker.getState() === 'open') {
708
896
  return { status: 'error', message: 'Circuit breaker open - API temporarily unavailable', configured: true };
709
897
  }
898
+ if (this.circuitBreaker.isRateLimited()) {
899
+ return { status: 'error', message: 'Rate limit exceeded - too many requests', configured: true };
900
+ }
710
901
  try {
711
902
  // Try a simple query as health check - query last 5 minutes of traces
712
903
  const body = {
@@ -738,9 +929,16 @@ export class SigNozApiBackend {
738
929
  return { status: 'error', message: 'Unexpected response from SigNoz API', configured: true };
739
930
  }
740
931
  catch (error) {
932
+ // Security: sanitize error messages - known safe errors pass through,
933
+ // others get a generic message to prevent information disclosure
934
+ const message = error instanceof Error ? error.message : 'Unknown error';
935
+ const isSafeMessage = message.includes('Circuit breaker') ||
936
+ message.includes('Rate limit') ||
937
+ message.includes('SigNoz') ||
938
+ message.includes('API');
741
939
  return {
742
940
  status: 'error',
743
- message: error instanceof Error ? error.message : 'Unknown error',
941
+ message: isSafeMessage ? message : 'Connection failed',
744
942
  configured: true,
745
943
  };
746
944
  }
@@ -1 +1 @@
1
- {"version":3,"file":"signoz-api.js","sourceRoot":"","sources":["../../src/backends/signoz-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signoz-api.js","sourceRoot":"","sources":["../../src/backends/signoz-api.ts"],"names":[],"mappings":"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"}