observability-toolkit 2.0.0 → 2.1.1

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 (1285) hide show
  1. package/README.md +166 -398
  2. package/dist/__tests__/find-constant-dedup.test.d.ts +11 -0
  3. package/dist/__tests__/find-constant-dedup.test.d.ts.map +1 -0
  4. package/dist/__tests__/find-constant-dedup.test.js +132 -0
  5. package/dist/__tests__/find-constant-dedup.test.js.map +1 -0
  6. package/dist/backends/backend-schemas.d.ts +309 -0
  7. package/dist/backends/backend-schemas.d.ts.map +1 -0
  8. package/dist/backends/backend-schemas.js +215 -0
  9. package/dist/backends/backend-schemas.js.map +1 -0
  10. package/dist/backends/cloud.d.ts +46 -0
  11. package/dist/backends/cloud.d.ts.map +1 -0
  12. package/dist/backends/cloud.js +520 -0
  13. package/dist/backends/cloud.js.map +1 -0
  14. package/dist/backends/cloud.test.d.ts +2 -0
  15. package/dist/backends/cloud.test.d.ts.map +1 -0
  16. package/dist/backends/cloud.test.js +436 -0
  17. package/dist/backends/cloud.test.js.map +1 -0
  18. package/dist/backends/index.d.ts +659 -386
  19. package/dist/backends/index.d.ts.map +1 -1
  20. package/dist/backends/index.js +318 -41
  21. package/dist/backends/index.js.map +1 -1
  22. package/dist/backends/index.test.js +578 -57
  23. package/dist/backends/index.test.js.map +1 -1
  24. package/dist/backends/local-jsonl-boolean-search.test.js +8 -7
  25. package/dist/backends/local-jsonl-boolean-search.test.js.map +1 -1
  26. package/dist/backends/local-jsonl-cache.test.js +33 -31
  27. package/dist/backends/local-jsonl-cache.test.js.map +1 -1
  28. package/dist/backends/local-jsonl-circuit-breaker.test.js +9 -7
  29. package/dist/backends/local-jsonl-circuit-breaker.test.js.map +1 -1
  30. package/dist/backends/local-jsonl-export.test.js +73 -58
  31. package/dist/backends/local-jsonl-export.test.js.map +1 -1
  32. package/dist/backends/local-jsonl-index.test.js +52 -50
  33. package/dist/backends/local-jsonl-index.test.js.map +1 -1
  34. package/dist/backends/local-jsonl-logs.test.js +47 -31
  35. package/dist/backends/local-jsonl-logs.test.js.map +1 -1
  36. package/dist/backends/local-jsonl-metrics.test.js +85 -82
  37. package/dist/backends/local-jsonl-metrics.test.js.map +1 -1
  38. package/dist/backends/local-jsonl-otlp-unwrap.test.d.ts +2 -0
  39. package/dist/backends/local-jsonl-otlp-unwrap.test.d.ts.map +1 -0
  40. package/dist/backends/local-jsonl-otlp-unwrap.test.js +602 -0
  41. package/dist/backends/local-jsonl-otlp-unwrap.test.js.map +1 -0
  42. package/dist/backends/local-jsonl-traces.test.js +161 -147
  43. package/dist/backends/local-jsonl-traces.test.js.map +1 -1
  44. package/dist/backends/local-jsonl.d.ts +37 -8
  45. package/dist/backends/local-jsonl.d.ts.map +1 -1
  46. package/dist/backends/local-jsonl.js +1088 -241
  47. package/dist/backends/local-jsonl.js.map +1 -1
  48. package/dist/backends/shared.d.ts +9 -0
  49. package/dist/backends/shared.d.ts.map +1 -0
  50. package/dist/backends/shared.js +9 -0
  51. package/dist/backends/shared.js.map +1 -0
  52. package/dist/generated/opentelemetry/proto/collector/logs/v1/logs_service_pb.d.ts +40 -0
  53. package/dist/generated/opentelemetry/proto/collector/logs/v1/logs_service_pb.d.ts.map +1 -0
  54. package/dist/generated/opentelemetry/proto/collector/logs/v1/logs_service_pb.js +27 -0
  55. package/dist/generated/opentelemetry/proto/collector/logs/v1/logs_service_pb.js.map +1 -0
  56. package/dist/generated/opentelemetry/proto/collector/metrics/v1/metrics_service_pb.d.ts +106 -0
  57. package/dist/generated/opentelemetry/proto/collector/metrics/v1/metrics_service_pb.d.ts.map +1 -0
  58. package/dist/generated/opentelemetry/proto/collector/metrics/v1/metrics_service_pb.js +43 -0
  59. package/dist/generated/opentelemetry/proto/collector/metrics/v1/metrics_service_pb.js.map +1 -0
  60. package/dist/generated/opentelemetry/proto/collector/profiles/v1development/profiles_service_pb.d.ts +111 -0
  61. package/dist/generated/opentelemetry/proto/collector/profiles/v1development/profiles_service_pb.d.ts.map +1 -0
  62. package/dist/generated/opentelemetry/proto/collector/profiles/v1development/profiles_service_pb.js +42 -0
  63. package/dist/generated/opentelemetry/proto/collector/profiles/v1development/profiles_service_pb.js.map +1 -0
  64. package/dist/generated/opentelemetry/proto/collector/trace/v1/trace_service_pb.d.ts +106 -0
  65. package/dist/generated/opentelemetry/proto/collector/trace/v1/trace_service_pb.d.ts.map +1 -0
  66. package/dist/generated/opentelemetry/proto/collector/trace/v1/trace_service_pb.js +43 -0
  67. package/dist/generated/opentelemetry/proto/collector/trace/v1/trace_service_pb.js.map +1 -0
  68. package/dist/generated/opentelemetry/proto/common/v1/common_pb.d.ts +243 -0
  69. package/dist/generated/opentelemetry/proto/common/v1/common_pb.d.ts.map +1 -0
  70. package/dist/generated/opentelemetry/proto/common/v1/common_pb.js +49 -0
  71. package/dist/generated/opentelemetry/proto/common/v1/common_pb.js.map +1 -0
  72. package/dist/generated/opentelemetry/proto/logs/v1/logs_pb.d.ts +90 -0
  73. package/dist/generated/opentelemetry/proto/logs/v1/logs_pb.d.ts.map +1 -0
  74. package/dist/generated/opentelemetry/proto/logs/v1/logs_pb.js +66 -0
  75. package/dist/generated/opentelemetry/proto/logs/v1/logs_pb.js.map +1 -0
  76. package/dist/generated/opentelemetry/proto/metrics/v1/metrics_pb.d.ts +1134 -0
  77. package/dist/generated/opentelemetry/proto/metrics/v1/metrics_pb.d.ts.map +1 -0
  78. package/dist/generated/opentelemetry/proto/metrics/v1/metrics_pb.js +223 -0
  79. package/dist/generated/opentelemetry/proto/metrics/v1/metrics_pb.js.map +1 -0
  80. package/dist/generated/opentelemetry/proto/profiles/v1development/profiles_pb.d.ts +678 -0
  81. package/dist/generated/opentelemetry/proto/profiles/v1development/profiles_pb.d.ts.map +1 -0
  82. package/dist/generated/opentelemetry/proto/profiles/v1development/profiles_pb.js +107 -0
  83. package/dist/generated/opentelemetry/proto/profiles/v1development/profiles_pb.js.map +1 -0
  84. package/dist/generated/opentelemetry/proto/resource/v1/resource_pb.d.ts +46 -0
  85. package/dist/generated/opentelemetry/proto/resource/v1/resource_pb.d.ts.map +1 -0
  86. package/dist/generated/opentelemetry/proto/resource/v1/resource_pb.js +25 -0
  87. package/dist/generated/opentelemetry/proto/resource/v1/resource_pb.js.map +1 -0
  88. package/dist/generated/opentelemetry/proto/trace/v1/trace_pb.d.ts +569 -0
  89. package/dist/generated/opentelemetry/proto/trace/v1/trace_pb.d.ts.map +1 -0
  90. package/dist/generated/opentelemetry/proto/trace/v1/trace_pb.js +195 -0
  91. package/dist/generated/opentelemetry/proto/trace/v1/trace_pb.js.map +1 -0
  92. package/dist/lib/agent-judge/agent-as-judge.d.ts +157 -0
  93. package/dist/lib/agent-judge/agent-as-judge.d.ts.map +1 -0
  94. package/dist/lib/agent-judge/agent-as-judge.js +137 -0
  95. package/dist/lib/agent-judge/agent-as-judge.js.map +1 -0
  96. package/dist/lib/agent-judge/agent-as-judge.test.d.ts.map +1 -0
  97. package/dist/lib/agent-judge/agent-as-judge.test.js +839 -0
  98. package/dist/lib/agent-judge/agent-as-judge.test.js.map +1 -0
  99. package/dist/lib/agent-judge/agent-eval-metrics.d.ts +293 -0
  100. package/dist/lib/agent-judge/agent-eval-metrics.d.ts.map +1 -0
  101. package/dist/lib/agent-judge/agent-eval-metrics.js +715 -0
  102. package/dist/lib/agent-judge/agent-eval-metrics.js.map +1 -0
  103. package/dist/lib/agent-judge/agent-eval-metrics.test.d.ts +5 -0
  104. package/dist/lib/agent-judge/agent-eval-metrics.test.d.ts.map +1 -0
  105. package/dist/lib/agent-judge/agent-eval-metrics.test.js +676 -0
  106. package/dist/lib/agent-judge/agent-eval-metrics.test.js.map +1 -0
  107. package/dist/lib/agent-judge/agent-judge-classes.d.ts +95 -0
  108. package/dist/lib/agent-judge/agent-judge-classes.d.ts.map +1 -0
  109. package/dist/lib/agent-judge/agent-judge-classes.js +222 -0
  110. package/dist/lib/agent-judge/agent-judge-classes.js.map +1 -0
  111. package/dist/lib/agent-judge/agent-judge-classes.test.d.ts +6 -0
  112. package/dist/lib/agent-judge/agent-judge-classes.test.d.ts.map +1 -0
  113. package/dist/lib/agent-judge/agent-judge-classes.test.js +271 -0
  114. package/dist/lib/agent-judge/agent-judge-classes.test.js.map +1 -0
  115. package/dist/lib/agent-judge/agent-judge-consensus.d.ts +58 -0
  116. package/dist/lib/agent-judge/agent-judge-consensus.d.ts.map +1 -0
  117. package/dist/lib/agent-judge/agent-judge-consensus.js +149 -0
  118. package/dist/lib/agent-judge/agent-judge-consensus.js.map +1 -0
  119. package/dist/lib/agent-judge/agent-judge-consensus.test.d.ts +2 -0
  120. package/dist/lib/agent-judge/agent-judge-consensus.test.d.ts.map +1 -0
  121. package/dist/lib/agent-judge/agent-judge-consensus.test.js +170 -0
  122. package/dist/lib/agent-judge/agent-judge-consensus.test.js.map +1 -0
  123. package/dist/lib/agent-judge/agent-judge-verification.d.ts +89 -0
  124. package/dist/lib/agent-judge/agent-judge-verification.d.ts.map +1 -0
  125. package/dist/lib/agent-judge/agent-judge-verification.js +235 -0
  126. package/dist/lib/agent-judge/agent-judge-verification.js.map +1 -0
  127. package/dist/lib/agent-judge/agent-judge-verification.test.d.ts +5 -0
  128. package/dist/lib/agent-judge/agent-judge-verification.test.d.ts.map +1 -0
  129. package/dist/lib/agent-judge/agent-judge-verification.test.js +399 -0
  130. package/dist/lib/agent-judge/agent-judge-verification.test.js.map +1 -0
  131. package/dist/lib/audit/agent-auditor-scoring.d.ts +167 -0
  132. package/dist/lib/audit/agent-auditor-scoring.d.ts.map +1 -0
  133. package/dist/lib/audit/agent-auditor-scoring.js +338 -0
  134. package/dist/lib/audit/agent-auditor-scoring.js.map +1 -0
  135. package/dist/lib/audit/agent-auditor-scoring.test.d.ts +2 -0
  136. package/dist/lib/audit/agent-auditor-scoring.test.d.ts.map +1 -0
  137. package/dist/lib/audit/agent-auditor-scoring.test.js +576 -0
  138. package/dist/lib/audit/agent-auditor-scoring.test.js.map +1 -0
  139. package/dist/lib/audit/audit-record.d.ts +139 -0
  140. package/dist/lib/audit/audit-record.d.ts.map +1 -0
  141. package/dist/lib/audit/audit-record.js +288 -0
  142. package/dist/lib/audit/audit-record.js.map +1 -0
  143. package/dist/lib/audit/audit-record.test.d.ts +5 -0
  144. package/dist/lib/audit/audit-record.test.d.ts.map +1 -0
  145. package/dist/lib/audit/audit-record.test.js +258 -0
  146. package/dist/lib/audit/audit-record.test.js.map +1 -0
  147. package/dist/lib/audit/audit-scoring-constants.d.ts +57 -0
  148. package/dist/lib/audit/audit-scoring-constants.d.ts.map +1 -0
  149. package/dist/lib/audit/audit-scoring-constants.js +59 -0
  150. package/dist/lib/audit/audit-scoring-constants.js.map +1 -0
  151. package/dist/lib/audit/compliance-report.d.ts +125 -0
  152. package/dist/lib/audit/compliance-report.d.ts.map +1 -0
  153. package/dist/lib/audit/compliance-report.js +205 -0
  154. package/dist/lib/audit/compliance-report.js.map +1 -0
  155. package/dist/lib/audit/compliance-report.test.d.ts +5 -0
  156. package/dist/lib/audit/compliance-report.test.d.ts.map +1 -0
  157. package/dist/lib/audit/compliance-report.test.js +290 -0
  158. package/dist/lib/audit/compliance-report.test.js.map +1 -0
  159. package/dist/lib/audit/retention-guard.d.ts +41 -0
  160. package/dist/lib/audit/retention-guard.d.ts.map +1 -0
  161. package/dist/lib/audit/retention-guard.js +103 -0
  162. package/dist/lib/audit/retention-guard.js.map +1 -0
  163. package/dist/lib/audit/retention-guard.test.d.ts +5 -0
  164. package/dist/lib/audit/retention-guard.test.d.ts.map +1 -0
  165. package/dist/lib/audit/retention-guard.test.js +109 -0
  166. package/dist/lib/audit/retention-guard.test.js.map +1 -0
  167. package/dist/lib/audit/skill-auditor-scoring.d.ts +69 -0
  168. package/dist/lib/audit/skill-auditor-scoring.d.ts.map +1 -0
  169. package/dist/lib/audit/skill-auditor-scoring.js +149 -0
  170. package/dist/lib/audit/skill-auditor-scoring.js.map +1 -0
  171. package/dist/lib/audit/skill-auditor-scoring.test.d.ts +2 -0
  172. package/dist/lib/audit/skill-auditor-scoring.test.d.ts.map +1 -0
  173. package/dist/lib/audit/skill-auditor-scoring.test.js +369 -0
  174. package/dist/lib/audit/skill-auditor-scoring.test.js.map +1 -0
  175. package/dist/lib/audit/verification-events.d.ts +119 -0
  176. package/dist/lib/audit/verification-events.d.ts.map +1 -0
  177. package/dist/lib/audit/verification-events.js +175 -0
  178. package/dist/lib/audit/verification-events.js.map +1 -0
  179. package/dist/lib/audit/verification-events.test.d.ts.map +1 -0
  180. package/dist/lib/audit/verification-events.test.js +197 -0
  181. package/dist/lib/audit/verification-events.test.js.map +1 -0
  182. package/dist/lib/core/constants-models.d.ts +90 -0
  183. package/dist/lib/core/constants-models.d.ts.map +1 -0
  184. package/dist/lib/core/constants-models.js +208 -0
  185. package/dist/lib/core/constants-models.js.map +1 -0
  186. package/dist/lib/core/constants-otel.d.ts +68 -0
  187. package/dist/lib/core/constants-otel.d.ts.map +1 -0
  188. package/dist/lib/core/constants-otel.js +128 -0
  189. package/dist/lib/core/constants-otel.js.map +1 -0
  190. package/dist/lib/core/constants-symlink.test.d.ts.map +1 -0
  191. package/dist/lib/core/constants-symlink.test.js +358 -0
  192. package/dist/lib/core/constants-symlink.test.js.map +1 -0
  193. package/dist/lib/core/constants-telemetry.d.ts +21 -0
  194. package/dist/lib/core/constants-telemetry.d.ts.map +1 -0
  195. package/dist/lib/core/constants-telemetry.js +162 -0
  196. package/dist/lib/core/constants-telemetry.js.map +1 -0
  197. package/dist/lib/core/constants.d.ts +152 -0
  198. package/dist/lib/core/constants.d.ts.map +1 -0
  199. package/dist/lib/core/constants.js +223 -0
  200. package/dist/lib/core/constants.js.map +1 -0
  201. package/dist/lib/core/constants.test.d.ts.map +1 -0
  202. package/dist/lib/core/constants.test.js +833 -0
  203. package/dist/lib/core/constants.test.js.map +1 -0
  204. package/dist/lib/core/doc-sync.test.d.ts +9 -0
  205. package/dist/lib/core/doc-sync.test.d.ts.map +1 -0
  206. package/dist/lib/core/doc-sync.test.js +159 -0
  207. package/dist/lib/core/doc-sync.test.js.map +1 -0
  208. package/dist/lib/core/edge-cases.test.d.ts.map +1 -0
  209. package/dist/lib/core/edge-cases.test.js +637 -0
  210. package/dist/lib/core/edge-cases.test.js.map +1 -0
  211. package/dist/lib/core/file-utils.d.ts +360 -0
  212. package/dist/lib/core/file-utils.d.ts.map +1 -0
  213. package/dist/lib/core/file-utils.js +890 -0
  214. package/dist/lib/core/file-utils.js.map +1 -0
  215. package/dist/lib/core/file-utils.test-constants.d.ts +38 -0
  216. package/dist/lib/core/file-utils.test-constants.d.ts.map +1 -0
  217. package/dist/lib/core/file-utils.test-constants.js +40 -0
  218. package/dist/lib/core/file-utils.test-constants.js.map +1 -0
  219. package/dist/lib/core/file-utils.test.d.ts.map +1 -0
  220. package/dist/lib/core/file-utils.test.js +1329 -0
  221. package/dist/lib/core/file-utils.test.js.map +1 -0
  222. package/dist/lib/core/input-validator.d.ts +125 -0
  223. package/dist/lib/core/input-validator.d.ts.map +1 -0
  224. package/dist/lib/core/input-validator.fuzz.test.d.ts.map +1 -0
  225. package/dist/lib/core/input-validator.fuzz.test.js +302 -0
  226. package/dist/lib/core/input-validator.fuzz.test.js.map +1 -0
  227. package/dist/lib/core/input-validator.js +348 -0
  228. package/dist/lib/core/input-validator.js.map +1 -0
  229. package/dist/lib/core/input-validator.test.d.ts.map +1 -0
  230. package/dist/lib/core/input-validator.test.js +465 -0
  231. package/dist/lib/core/input-validator.test.js.map +1 -0
  232. package/dist/lib/core/logger.d.ts +32 -0
  233. package/dist/lib/core/logger.d.ts.map +1 -0
  234. package/dist/lib/core/logger.js +104 -0
  235. package/dist/lib/core/logger.js.map +1 -0
  236. package/dist/lib/core/logger.test.d.ts.map +1 -0
  237. package/dist/lib/core/logger.test.js.map +1 -0
  238. package/dist/lib/core/schema-types.d.ts +37 -0
  239. package/dist/lib/core/schema-types.d.ts.map +1 -0
  240. package/dist/lib/core/schema-types.js +29 -0
  241. package/dist/lib/core/schema-types.js.map +1 -0
  242. package/dist/lib/core/server-utils.d.ts +98 -0
  243. package/dist/lib/core/server-utils.d.ts.map +1 -0
  244. package/dist/lib/core/server-utils.js +193 -0
  245. package/dist/lib/core/server-utils.js.map +1 -0
  246. package/dist/lib/core/shared-schemas.d.ts +301 -0
  247. package/dist/lib/core/shared-schemas.d.ts.map +1 -0
  248. package/dist/lib/core/shared-schemas.js +222 -0
  249. package/dist/lib/core/shared-schemas.js.map +1 -0
  250. package/dist/lib/core/shared-schemas.test.d.ts.map +1 -0
  251. package/dist/lib/core/shared-schemas.test.js +136 -0
  252. package/dist/lib/core/shared-schemas.test.js.map +1 -0
  253. package/dist/lib/core/units.d.ts +67 -0
  254. package/dist/lib/core/units.d.ts.map +1 -0
  255. package/dist/lib/core/units.js +88 -0
  256. package/dist/lib/core/units.js.map +1 -0
  257. package/dist/lib/cost/cost-estimation.d.ts +264 -0
  258. package/dist/lib/cost/cost-estimation.d.ts.map +1 -0
  259. package/dist/lib/cost/cost-estimation.js +541 -0
  260. package/dist/lib/cost/cost-estimation.js.map +1 -0
  261. package/dist/lib/cost/cost-estimation.test.d.ts +5 -0
  262. package/dist/lib/cost/cost-estimation.test.d.ts.map +1 -0
  263. package/dist/lib/cost/cost-estimation.test.js +701 -0
  264. package/dist/lib/cost/cost-estimation.test.js.map +1 -0
  265. package/dist/lib/cost/pricing-cache.d.ts +59 -0
  266. package/dist/lib/cost/pricing-cache.d.ts.map +1 -0
  267. package/dist/lib/cost/pricing-cache.js +120 -0
  268. package/dist/lib/cost/pricing-cache.js.map +1 -0
  269. package/dist/lib/cost/pricing-cache.test.d.ts +5 -0
  270. package/dist/lib/cost/pricing-cache.test.d.ts.map +1 -0
  271. package/dist/lib/cost/pricing-cache.test.js +176 -0
  272. package/dist/lib/cost/pricing-cache.test.js.map +1 -0
  273. package/dist/lib/dashboard-file-utils.d.ts +35 -0
  274. package/dist/lib/dashboard-file-utils.d.ts.map +1 -0
  275. package/dist/lib/dashboard-file-utils.js +94 -0
  276. package/dist/lib/dashboard-file-utils.js.map +1 -0
  277. package/dist/lib/errors/error-sanitizer.d.ts +62 -0
  278. package/dist/lib/errors/error-sanitizer.d.ts.map +1 -0
  279. package/dist/lib/errors/error-sanitizer.js +235 -0
  280. package/dist/lib/errors/error-sanitizer.js.map +1 -0
  281. package/dist/lib/errors/error-sanitizer.test.d.ts.map +1 -0
  282. package/dist/lib/errors/error-sanitizer.test.js +534 -0
  283. package/dist/lib/errors/error-sanitizer.test.js.map +1 -0
  284. package/dist/lib/errors/error-types.d.ts +59 -0
  285. package/dist/lib/errors/error-types.d.ts.map +1 -0
  286. package/dist/lib/errors/error-types.js +187 -0
  287. package/dist/lib/errors/error-types.js.map +1 -0
  288. package/dist/lib/errors/error-types.test.d.ts.map +1 -0
  289. package/dist/lib/errors/error-types.test.js +246 -0
  290. package/dist/lib/errors/error-types.test.js.map +1 -0
  291. package/dist/lib/errors/query-sanitizer.d.ts.map +1 -0
  292. package/dist/lib/errors/query-sanitizer.js +269 -0
  293. package/dist/lib/errors/query-sanitizer.js.map +1 -0
  294. package/dist/lib/errors/query-sanitizer.test.d.ts.map +1 -0
  295. package/dist/lib/errors/query-sanitizer.test.js +403 -0
  296. package/dist/lib/errors/query-sanitizer.test.js.map +1 -0
  297. package/dist/lib/exports/confident-export.d.ts +105 -0
  298. package/dist/lib/exports/confident-export.d.ts.map +1 -0
  299. package/dist/lib/exports/confident-export.js +385 -0
  300. package/dist/lib/exports/confident-export.js.map +1 -0
  301. package/dist/lib/exports/confident-export.test.d.ts.map +1 -0
  302. package/dist/lib/exports/confident-export.test.js +848 -0
  303. package/dist/lib/exports/confident-export.test.js.map +1 -0
  304. package/dist/lib/exports/datadog-export.d.ts +200 -0
  305. package/dist/lib/exports/datadog-export.d.ts.map +1 -0
  306. package/dist/lib/exports/datadog-export.js +488 -0
  307. package/dist/lib/exports/datadog-export.js.map +1 -0
  308. package/dist/lib/exports/datadog-export.test.d.ts +2 -0
  309. package/dist/lib/exports/datadog-export.test.d.ts.map +1 -0
  310. package/dist/lib/exports/datadog-export.test.js +890 -0
  311. package/dist/lib/exports/datadog-export.test.js.map +1 -0
  312. package/dist/lib/exports/export-config-schemas.d.ts +67 -0
  313. package/dist/lib/exports/export-config-schemas.d.ts.map +1 -0
  314. package/dist/lib/exports/export-config-schemas.js +120 -0
  315. package/dist/lib/exports/export-config-schemas.js.map +1 -0
  316. package/dist/lib/exports/export-config-schemas.test.d.ts +8 -0
  317. package/dist/lib/exports/export-config-schemas.test.d.ts.map +1 -0
  318. package/dist/lib/exports/export-config-schemas.test.js +503 -0
  319. package/dist/lib/exports/export-config-schemas.test.js.map +1 -0
  320. package/dist/lib/exports/export-utils.d.ts +127 -0
  321. package/dist/lib/exports/export-utils.d.ts.map +1 -0
  322. package/dist/lib/exports/export-utils.js +303 -0
  323. package/dist/lib/exports/export-utils.js.map +1 -0
  324. package/dist/lib/exports/export-utils.test.d.ts.map +1 -0
  325. package/dist/lib/exports/export-utils.test.js +344 -0
  326. package/dist/lib/exports/export-utils.test.js.map +1 -0
  327. package/dist/lib/exports/langfuse-export.d.ts +129 -0
  328. package/dist/lib/exports/langfuse-export.d.ts.map +1 -0
  329. package/dist/lib/exports/langfuse-export.js +370 -0
  330. package/dist/lib/exports/langfuse-export.js.map +1 -0
  331. package/dist/lib/exports/langfuse-export.test.d.ts.map +1 -0
  332. package/dist/lib/exports/langfuse-export.test.js +1020 -0
  333. package/dist/lib/exports/langfuse-export.test.js.map +1 -0
  334. package/dist/lib/exports/otlp-export.d.ts +179 -0
  335. package/dist/lib/exports/otlp-export.d.ts.map +1 -0
  336. package/dist/lib/exports/otlp-export.js +397 -0
  337. package/dist/lib/exports/otlp-export.js.map +1 -0
  338. package/dist/lib/exports/otlp-format-converter.d.ts +70 -0
  339. package/dist/lib/exports/otlp-format-converter.d.ts.map +1 -0
  340. package/dist/lib/exports/otlp-format-converter.js +401 -0
  341. package/dist/lib/exports/otlp-format-converter.js.map +1 -0
  342. package/dist/lib/exports/otlp-proto-encode.d.ts +53 -0
  343. package/dist/lib/exports/otlp-proto-encode.d.ts.map +1 -0
  344. package/dist/lib/exports/otlp-proto-encode.js +165 -0
  345. package/dist/lib/exports/otlp-proto-encode.js.map +1 -0
  346. package/dist/lib/exports/otlp-proto-encode.test.d.ts +7 -0
  347. package/dist/lib/exports/otlp-proto-encode.test.d.ts.map +1 -0
  348. package/dist/lib/exports/otlp-proto-encode.test.js +997 -0
  349. package/dist/lib/exports/otlp-proto-encode.test.js.map +1 -0
  350. package/dist/lib/exports/phoenix-export.d.ts +119 -0
  351. package/dist/lib/exports/phoenix-export.d.ts.map +1 -0
  352. package/dist/lib/exports/phoenix-export.js +448 -0
  353. package/dist/lib/exports/phoenix-export.js.map +1 -0
  354. package/dist/lib/exports/phoenix-export.test.d.ts.map +1 -0
  355. package/dist/lib/exports/phoenix-export.test.js +816 -0
  356. package/dist/lib/exports/phoenix-export.test.js.map +1 -0
  357. package/dist/lib/index.d.ts +16 -0
  358. package/dist/lib/index.d.ts.map +1 -0
  359. package/dist/lib/index.js +31 -0
  360. package/dist/lib/index.js.map +1 -0
  361. package/dist/lib/judge/evaluation-hooks-schemas.d.ts +186 -0
  362. package/dist/lib/judge/evaluation-hooks-schemas.d.ts.map +1 -0
  363. package/dist/lib/judge/evaluation-hooks-schemas.js +125 -0
  364. package/dist/lib/judge/evaluation-hooks-schemas.js.map +1 -0
  365. package/dist/lib/judge/evaluation-hooks.d.ts +88 -0
  366. package/dist/lib/judge/evaluation-hooks.d.ts.map +1 -0
  367. package/dist/lib/judge/evaluation-hooks.js +658 -0
  368. package/dist/lib/judge/evaluation-hooks.js.map +1 -0
  369. package/dist/lib/judge/evaluation-hooks.test.d.ts.map +1 -0
  370. package/dist/lib/judge/evaluation-hooks.test.js +934 -0
  371. package/dist/lib/judge/evaluation-hooks.test.js.map +1 -0
  372. package/dist/lib/judge/llm-as-judge.d.ts +138 -0
  373. package/dist/lib/judge/llm-as-judge.d.ts.map +1 -0
  374. package/dist/lib/judge/llm-as-judge.js +103 -0
  375. package/dist/lib/judge/llm-as-judge.js.map +1 -0
  376. package/dist/lib/judge/llm-as-judge.test.d.ts.map +1 -0
  377. package/dist/lib/judge/llm-as-judge.test.js +2179 -0
  378. package/dist/lib/judge/llm-as-judge.test.js.map +1 -0
  379. package/dist/lib/judge/llm-judge-bias.d.ts +44 -0
  380. package/dist/lib/judge/llm-judge-bias.d.ts.map +1 -0
  381. package/dist/lib/judge/llm-judge-bias.js +130 -0
  382. package/dist/lib/judge/llm-judge-bias.js.map +1 -0
  383. package/dist/lib/judge/llm-judge-bias.test.d.ts +2 -0
  384. package/dist/lib/judge/llm-judge-bias.test.d.ts.map +1 -0
  385. package/dist/lib/judge/llm-judge-bias.test.js +380 -0
  386. package/dist/lib/judge/llm-judge-bias.test.js.map +1 -0
  387. package/dist/lib/judge/llm-judge-code.d.ts +99 -0
  388. package/dist/lib/judge/llm-judge-code.d.ts.map +1 -0
  389. package/dist/lib/judge/llm-judge-code.js +261 -0
  390. package/dist/lib/judge/llm-judge-code.js.map +1 -0
  391. package/dist/lib/judge/llm-judge-code.test.d.ts +2 -0
  392. package/dist/lib/judge/llm-judge-code.test.d.ts.map +1 -0
  393. package/dist/lib/judge/llm-judge-code.test.js +981 -0
  394. package/dist/lib/judge/llm-judge-code.test.js.map +1 -0
  395. package/dist/lib/judge/llm-judge-config.d.ts +241 -0
  396. package/dist/lib/judge/llm-judge-config.d.ts.map +1 -0
  397. package/dist/lib/judge/llm-judge-config.js +390 -0
  398. package/dist/lib/judge/llm-judge-config.js.map +1 -0
  399. package/dist/lib/judge/llm-judge-config.test.d.ts +5 -0
  400. package/dist/lib/judge/llm-judge-config.test.d.ts.map +1 -0
  401. package/dist/lib/judge/llm-judge-config.test.js +392 -0
  402. package/dist/lib/judge/llm-judge-config.test.js.map +1 -0
  403. package/dist/lib/judge/llm-judge-constants.d.ts +111 -0
  404. package/dist/lib/judge/llm-judge-constants.d.ts.map +1 -0
  405. package/dist/lib/judge/llm-judge-constants.js +150 -0
  406. package/dist/lib/judge/llm-judge-constants.js.map +1 -0
  407. package/dist/lib/judge/llm-judge-dag.d.ts +57 -0
  408. package/dist/lib/judge/llm-judge-dag.d.ts.map +1 -0
  409. package/dist/lib/judge/llm-judge-dag.js +217 -0
  410. package/dist/lib/judge/llm-judge-dag.js.map +1 -0
  411. package/dist/lib/judge/llm-judge-dag.test.d.ts +8 -0
  412. package/dist/lib/judge/llm-judge-dag.test.d.ts.map +1 -0
  413. package/dist/lib/judge/llm-judge-dag.test.js +973 -0
  414. package/dist/lib/judge/llm-judge-dag.test.js.map +1 -0
  415. package/dist/lib/judge/llm-judge-domain.d.ts +42 -0
  416. package/dist/lib/judge/llm-judge-domain.d.ts.map +1 -0
  417. package/dist/lib/judge/llm-judge-domain.js +167 -0
  418. package/dist/lib/judge/llm-judge-domain.js.map +1 -0
  419. package/dist/lib/judge/llm-judge-domain.test.d.ts +6 -0
  420. package/dist/lib/judge/llm-judge-domain.test.d.ts.map +1 -0
  421. package/dist/lib/judge/llm-judge-domain.test.js +337 -0
  422. package/dist/lib/judge/llm-judge-domain.test.js.map +1 -0
  423. package/dist/lib/judge/llm-judge-geval.d.ts +42 -0
  424. package/dist/lib/judge/llm-judge-geval.d.ts.map +1 -0
  425. package/dist/lib/judge/llm-judge-geval.js +213 -0
  426. package/dist/lib/judge/llm-judge-geval.js.map +1 -0
  427. package/dist/lib/judge/llm-judge-geval.test.d.ts +2 -0
  428. package/dist/lib/judge/llm-judge-geval.test.d.ts.map +1 -0
  429. package/dist/lib/judge/llm-judge-geval.test.js +556 -0
  430. package/dist/lib/judge/llm-judge-geval.test.js.map +1 -0
  431. package/dist/lib/judge/llm-judge-otel.test.d.ts +9 -0
  432. package/dist/lib/judge/llm-judge-otel.test.d.ts.map +1 -0
  433. package/dist/lib/judge/llm-judge-otel.test.js +91 -0
  434. package/dist/lib/judge/llm-judge-otel.test.js.map +1 -0
  435. package/dist/lib/judge/llm-judge-qag.d.ts +38 -0
  436. package/dist/lib/judge/llm-judge-qag.d.ts.map +1 -0
  437. package/dist/lib/judge/llm-judge-qag.js +205 -0
  438. package/dist/lib/judge/llm-judge-qag.js.map +1 -0
  439. package/dist/lib/judge/llm-judge-qag.test.d.ts +2 -0
  440. package/dist/lib/judge/llm-judge-qag.test.d.ts.map +1 -0
  441. package/dist/lib/judge/llm-judge-qag.test.js +386 -0
  442. package/dist/lib/judge/llm-judge-qag.test.js.map +1 -0
  443. package/dist/lib/judge/llm-judge-resilience.d.ts +74 -0
  444. package/dist/lib/judge/llm-judge-resilience.d.ts.map +1 -0
  445. package/dist/lib/judge/llm-judge-resilience.js +146 -0
  446. package/dist/lib/judge/llm-judge-resilience.js.map +1 -0
  447. package/dist/lib/judge/llm-judge-resilience.test.d.ts +2 -0
  448. package/dist/lib/judge/llm-judge-resilience.test.d.ts.map +1 -0
  449. package/dist/lib/judge/llm-judge-resilience.test.js +353 -0
  450. package/dist/lib/judge/llm-judge-resilience.test.js.map +1 -0
  451. package/dist/lib/judge/llm-judge-security.d.ts +106 -0
  452. package/dist/lib/judge/llm-judge-security.d.ts.map +1 -0
  453. package/dist/lib/judge/llm-judge-security.js +314 -0
  454. package/dist/lib/judge/llm-judge-security.js.map +1 -0
  455. package/dist/lib/judge/llm-judge-security.test.d.ts +2 -0
  456. package/dist/lib/judge/llm-judge-security.test.d.ts.map +1 -0
  457. package/dist/lib/judge/llm-judge-security.test.js +1011 -0
  458. package/dist/lib/judge/llm-judge-security.test.js.map +1 -0
  459. package/dist/lib/observability/context-accumulator.d.ts +32 -0
  460. package/dist/lib/observability/context-accumulator.d.ts.map +1 -0
  461. package/dist/lib/observability/context-accumulator.js +87 -0
  462. package/dist/lib/observability/context-accumulator.js.map +1 -0
  463. package/dist/lib/observability/evaluation-events.d.ts +35 -0
  464. package/dist/lib/observability/evaluation-events.d.ts.map +1 -0
  465. package/dist/lib/observability/evaluation-events.js +90 -0
  466. package/dist/lib/observability/evaluation-events.js.map +1 -0
  467. package/dist/lib/observability/file-span-exporter.d.ts +17 -0
  468. package/dist/lib/observability/file-span-exporter.d.ts.map +1 -0
  469. package/dist/lib/observability/file-span-exporter.js +49 -0
  470. package/dist/lib/observability/file-span-exporter.js.map +1 -0
  471. package/dist/lib/observability/histogram-bucket-constants.d.ts +25 -0
  472. package/dist/lib/observability/histogram-bucket-constants.d.ts.map +1 -0
  473. package/dist/lib/observability/histogram-bucket-constants.js +60 -0
  474. package/dist/lib/observability/histogram-bucket-constants.js.map +1 -0
  475. package/dist/lib/observability/histogram.d.ts +112 -0
  476. package/dist/lib/observability/histogram.d.ts.map +1 -0
  477. package/dist/lib/observability/histogram.js +170 -0
  478. package/dist/lib/observability/histogram.js.map +1 -0
  479. package/dist/lib/observability/histogram.test.d.ts.map +1 -0
  480. package/dist/lib/observability/histogram.test.js +385 -0
  481. package/dist/lib/observability/histogram.test.js.map +1 -0
  482. package/dist/lib/observability/indexer.d.ts +114 -0
  483. package/dist/lib/observability/indexer.d.ts.map +1 -0
  484. package/dist/lib/observability/indexer.js +402 -0
  485. package/dist/lib/observability/indexer.js.map +1 -0
  486. package/dist/lib/observability/indexer.test.d.ts.map +1 -0
  487. package/dist/lib/observability/indexer.test.js +713 -0
  488. package/dist/lib/observability/indexer.test.js.map +1 -0
  489. package/dist/lib/observability/instrumentation-eval.test.d.ts +5 -0
  490. package/dist/lib/observability/instrumentation-eval.test.d.ts.map +1 -0
  491. package/dist/lib/observability/instrumentation-eval.test.js +63 -0
  492. package/dist/lib/observability/instrumentation-eval.test.js.map +1 -0
  493. package/dist/lib/observability/instrumentation-init-errors.test.d.ts +13 -0
  494. package/dist/lib/observability/instrumentation-init-errors.test.d.ts.map +1 -0
  495. package/dist/lib/observability/instrumentation-init-errors.test.js +194 -0
  496. package/dist/lib/observability/instrumentation-init-errors.test.js.map +1 -0
  497. package/dist/lib/observability/instrumentation-retry-timeout.test.d.ts +15 -0
  498. package/dist/lib/observability/instrumentation-retry-timeout.test.d.ts.map +1 -0
  499. package/dist/lib/observability/instrumentation-retry-timeout.test.js +188 -0
  500. package/dist/lib/observability/instrumentation-retry-timeout.test.js.map +1 -0
  501. package/dist/lib/observability/instrumentation-set-otel.test.d.ts +5 -0
  502. package/dist/lib/observability/instrumentation-set-otel.test.d.ts.map +1 -0
  503. package/dist/lib/observability/instrumentation-set-otel.test.js +59 -0
  504. package/dist/lib/observability/instrumentation-set-otel.test.js.map +1 -0
  505. package/dist/lib/observability/instrumentation.d.ts +158 -0
  506. package/dist/lib/observability/instrumentation.d.ts.map +1 -0
  507. package/dist/lib/observability/instrumentation.integration.test.d.ts.map +1 -0
  508. package/dist/lib/observability/instrumentation.integration.test.js +590 -0
  509. package/dist/lib/observability/instrumentation.integration.test.js.map +1 -0
  510. package/dist/lib/observability/instrumentation.js +512 -0
  511. package/dist/lib/observability/instrumentation.js.map +1 -0
  512. package/dist/lib/observability/instrumentation.test.d.ts.map +1 -0
  513. package/dist/lib/observability/instrumentation.test.js +822 -0
  514. package/dist/lib/observability/instrumentation.test.js.map +1 -0
  515. package/dist/lib/observability/mcp-semconv-constants.d.ts +98 -0
  516. package/dist/lib/observability/mcp-semconv-constants.d.ts.map +1 -0
  517. package/dist/lib/observability/mcp-semconv-constants.js +102 -0
  518. package/dist/lib/observability/mcp-semconv-constants.js.map +1 -0
  519. package/dist/lib/observability/mcp-semconv.d.ts +37 -0
  520. package/dist/lib/observability/mcp-semconv.d.ts.map +1 -0
  521. package/dist/lib/observability/mcp-semconv.js +87 -0
  522. package/dist/lib/observability/mcp-semconv.js.map +1 -0
  523. package/dist/lib/observability/mcp-semconv.test.d.ts +2 -0
  524. package/dist/lib/observability/mcp-semconv.test.d.ts.map +1 -0
  525. package/dist/lib/observability/mcp-semconv.test.js +168 -0
  526. package/dist/lib/observability/mcp-semconv.test.js.map +1 -0
  527. package/dist/lib/observability/metrics.d.ts +100 -0
  528. package/dist/lib/observability/metrics.d.ts.map +1 -0
  529. package/dist/lib/observability/metrics.js +429 -0
  530. package/dist/lib/observability/metrics.js.map +1 -0
  531. package/dist/lib/observability/metrics.test.d.ts.map +1 -0
  532. package/dist/lib/observability/metrics.test.js +191 -0
  533. package/dist/lib/observability/metrics.test.js.map +1 -0
  534. package/dist/lib/observability/observability-test-constants.d.ts +34 -0
  535. package/dist/lib/observability/observability-test-constants.d.ts.map +1 -0
  536. package/dist/lib/observability/observability-test-constants.js +55 -0
  537. package/dist/lib/observability/observability-test-constants.js.map +1 -0
  538. package/dist/lib/observability/opentelemetry-resources.test.d.ts +2 -0
  539. package/dist/lib/observability/opentelemetry-resources.test.d.ts.map +1 -0
  540. package/dist/lib/observability/opentelemetry-resources.test.js +19 -0
  541. package/dist/lib/observability/opentelemetry-resources.test.js.map +1 -0
  542. package/dist/lib/observability/parse-stats.d.ts.map +1 -0
  543. package/dist/lib/observability/parse-stats.js +207 -0
  544. package/dist/lib/observability/parse-stats.js.map +1 -0
  545. package/dist/lib/observability/parse-stats.test.d.ts.map +1 -0
  546. package/dist/lib/observability/parse-stats.test.js +287 -0
  547. package/dist/lib/observability/parse-stats.test.js.map +1 -0
  548. package/dist/lib/observability/render-trace-tree.d.ts +31 -0
  549. package/dist/lib/observability/render-trace-tree.d.ts.map +1 -0
  550. package/dist/lib/observability/render-trace-tree.js +95 -0
  551. package/dist/lib/observability/render-trace-tree.js.map +1 -0
  552. package/dist/lib/observability/render-trace-tree.test.d.ts +5 -0
  553. package/dist/lib/observability/render-trace-tree.test.d.ts.map +1 -0
  554. package/dist/lib/observability/render-trace-tree.test.js +97 -0
  555. package/dist/lib/observability/render-trace-tree.test.js.map +1 -0
  556. package/dist/lib/observability/span-attributes.d.ts +27 -0
  557. package/dist/lib/observability/span-attributes.d.ts.map +1 -0
  558. package/dist/lib/observability/span-attributes.js +85 -0
  559. package/dist/lib/observability/span-attributes.js.map +1 -0
  560. package/dist/lib/observability/trace-anomaly-detector.d.ts +23 -0
  561. package/dist/lib/observability/trace-anomaly-detector.d.ts.map +1 -0
  562. package/dist/lib/observability/trace-anomaly-detector.js +211 -0
  563. package/dist/lib/observability/trace-anomaly-detector.js.map +1 -0
  564. package/dist/lib/observability/trace-anomaly-detector.test.d.ts +5 -0
  565. package/dist/lib/observability/trace-anomaly-detector.test.d.ts.map +1 -0
  566. package/dist/lib/observability/trace-anomaly-detector.test.js +224 -0
  567. package/dist/lib/observability/trace-anomaly-detector.test.js.map +1 -0
  568. package/dist/lib/observability/trace-anomaly-schemas.d.ts +189 -0
  569. package/dist/lib/observability/trace-anomaly-schemas.d.ts.map +1 -0
  570. package/dist/lib/observability/trace-anomaly-schemas.js +167 -0
  571. package/dist/lib/observability/trace-anomaly-schemas.js.map +1 -0
  572. package/dist/lib/privacy/content-redaction.d.ts +141 -0
  573. package/dist/lib/privacy/content-redaction.d.ts.map +1 -0
  574. package/dist/lib/privacy/content-redaction.js +210 -0
  575. package/dist/lib/privacy/content-redaction.js.map +1 -0
  576. package/dist/lib/privacy/content-redaction.test.d.ts +2 -0
  577. package/dist/lib/privacy/content-redaction.test.d.ts.map +1 -0
  578. package/dist/lib/privacy/content-redaction.test.js +302 -0
  579. package/dist/lib/privacy/content-redaction.test.js.map +1 -0
  580. package/dist/lib/quality/bucket-utils.d.ts +17 -0
  581. package/dist/lib/quality/bucket-utils.d.ts.map +1 -0
  582. package/dist/lib/quality/bucket-utils.js +31 -0
  583. package/dist/lib/quality/bucket-utils.js.map +1 -0
  584. package/dist/lib/quality/bucket-utils.test.d.ts +2 -0
  585. package/dist/lib/quality/bucket-utils.test.d.ts.map +1 -0
  586. package/dist/lib/quality/bucket-utils.test.js +42 -0
  587. package/dist/lib/quality/bucket-utils.test.js.map +1 -0
  588. package/dist/lib/quality/qfe-backtest-detail.test.d.ts +5 -0
  589. package/dist/lib/quality/qfe-backtest-detail.test.d.ts.map +1 -0
  590. package/dist/lib/quality/qfe-backtest-detail.test.js +179 -0
  591. package/dist/lib/quality/qfe-backtest-detail.test.js.map +1 -0
  592. package/dist/lib/quality/qfe-calibration-paths.test.d.ts +5 -0
  593. package/dist/lib/quality/qfe-calibration-paths.test.d.ts.map +1 -0
  594. package/dist/lib/quality/qfe-calibration-paths.test.js +203 -0
  595. package/dist/lib/quality/qfe-calibration-paths.test.js.map +1 -0
  596. package/dist/lib/quality/qfe-correlation-helpers.test.d.ts +6 -0
  597. package/dist/lib/quality/qfe-correlation-helpers.test.d.ts.map +1 -0
  598. package/dist/lib/quality/qfe-correlation-helpers.test.js +143 -0
  599. package/dist/lib/quality/qfe-correlation-helpers.test.js.map +1 -0
  600. package/dist/lib/quality/qfe-cqi-paths.test.d.ts +6 -0
  601. package/dist/lib/quality/qfe-cqi-paths.test.d.ts.map +1 -0
  602. package/dist/lib/quality/qfe-cqi-paths.test.js +231 -0
  603. package/dist/lib/quality/qfe-cqi-paths.test.js.map +1 -0
  604. package/dist/lib/quality/qfe-critic-internals.test.d.ts +6 -0
  605. package/dist/lib/quality/qfe-critic-internals.test.d.ts.map +1 -0
  606. package/dist/lib/quality/qfe-critic-internals.test.js +191 -0
  607. package/dist/lib/quality/qfe-critic-internals.test.js.map +1 -0
  608. package/dist/lib/quality/qfe-derived-paths.test.d.ts +2 -0
  609. package/dist/lib/quality/qfe-derived-paths.test.d.ts.map +1 -0
  610. package/dist/lib/quality/qfe-derived-paths.test.js +372 -0
  611. package/dist/lib/quality/qfe-derived-paths.test.js.map +1 -0
  612. package/dist/lib/quality/qfe-dynamics-paths.test.d.ts +8 -0
  613. package/dist/lib/quality/qfe-dynamics-paths.test.d.ts.map +1 -0
  614. package/dist/lib/quality/qfe-dynamics-paths.test.js +223 -0
  615. package/dist/lib/quality/qfe-dynamics-paths.test.js.map +1 -0
  616. package/dist/lib/quality/qfe-granger-internals.test.d.ts +6 -0
  617. package/dist/lib/quality/qfe-granger-internals.test.d.ts.map +1 -0
  618. package/dist/lib/quality/qfe-granger-internals.test.js +158 -0
  619. package/dist/lib/quality/qfe-granger-internals.test.js.map +1 -0
  620. package/dist/lib/quality/qfe-label-normalize.test.d.ts +7 -0
  621. package/dist/lib/quality/qfe-label-normalize.test.d.ts.map +1 -0
  622. package/dist/lib/quality/qfe-label-normalize.test.js +332 -0
  623. package/dist/lib/quality/qfe-label-normalize.test.js.map +1 -0
  624. package/dist/lib/quality/qfe-ordinal-edge.test.d.ts +6 -0
  625. package/dist/lib/quality/qfe-ordinal-edge.test.d.ts.map +1 -0
  626. package/dist/lib/quality/qfe-ordinal-edge.test.js +98 -0
  627. package/dist/lib/quality/qfe-ordinal-edge.test.js.map +1 -0
  628. package/dist/lib/quality/qfe-roles-detail.test.d.ts +5 -0
  629. package/dist/lib/quality/qfe-roles-detail.test.d.ts.map +1 -0
  630. package/dist/lib/quality/qfe-roles-detail.test.js +115 -0
  631. package/dist/lib/quality/qfe-roles-detail.test.js.map +1 -0
  632. package/dist/lib/quality/qfe-rolling-detail.test.d.ts +7 -0
  633. package/dist/lib/quality/qfe-rolling-detail.test.d.ts.map +1 -0
  634. package/dist/lib/quality/qfe-rolling-detail.test.js +249 -0
  635. package/dist/lib/quality/qfe-rolling-detail.test.js.map +1 -0
  636. package/dist/lib/quality/qfe-stats-internals.test.d.ts +7 -0
  637. package/dist/lib/quality/qfe-stats-internals.test.d.ts.map +1 -0
  638. package/dist/lib/quality/qfe-stats-internals.test.js +143 -0
  639. package/dist/lib/quality/qfe-stats-internals.test.js.map +1 -0
  640. package/dist/lib/quality/qfe-streaming.test.d.ts +5 -0
  641. package/dist/lib/quality/qfe-streaming.test.d.ts.map +1 -0
  642. package/dist/lib/quality/qfe-streaming.test.js +239 -0
  643. package/dist/lib/quality/qfe-streaming.test.js.map +1 -0
  644. package/dist/lib/quality/qfe-sweep-detail.test.d.ts +6 -0
  645. package/dist/lib/quality/qfe-sweep-detail.test.d.ts.map +1 -0
  646. package/dist/lib/quality/qfe-sweep-detail.test.js +291 -0
  647. package/dist/lib/quality/qfe-sweep-detail.test.js.map +1 -0
  648. package/dist/lib/quality/quality-alerts.d.ts +23 -0
  649. package/dist/lib/quality/quality-alerts.d.ts.map +1 -0
  650. package/dist/lib/quality/quality-alerts.js +89 -0
  651. package/dist/lib/quality/quality-alerts.js.map +1 -0
  652. package/dist/lib/quality/quality-alerts.test.d.ts +2 -0
  653. package/dist/lib/quality/quality-alerts.test.d.ts.map +1 -0
  654. package/dist/lib/quality/quality-alerts.test.js +86 -0
  655. package/dist/lib/quality/quality-alerts.test.js.map +1 -0
  656. package/dist/lib/quality/quality-constants.d.ts +294 -0
  657. package/dist/lib/quality/quality-constants.d.ts.map +1 -0
  658. package/dist/lib/quality/quality-constants.js +335 -0
  659. package/dist/lib/quality/quality-constants.js.map +1 -0
  660. package/dist/lib/quality/quality-feature-engineering.d.ts +1071 -0
  661. package/dist/lib/quality/quality-feature-engineering.d.ts.map +1 -0
  662. package/dist/lib/quality/quality-feature-engineering.js +2076 -0
  663. package/dist/lib/quality/quality-feature-engineering.js.map +1 -0
  664. package/dist/lib/quality/quality-feature-engineering.test.d.ts +5 -0
  665. package/dist/lib/quality/quality-feature-engineering.test.d.ts.map +1 -0
  666. package/dist/lib/quality/quality-feature-engineering.test.js +2908 -0
  667. package/dist/lib/quality/quality-feature-engineering.test.js.map +1 -0
  668. package/dist/lib/quality/quality-metrics.d.ts +943 -0
  669. package/dist/lib/quality/quality-metrics.d.ts.map +1 -0
  670. package/dist/lib/quality/quality-metrics.js +1151 -0
  671. package/dist/lib/quality/quality-metrics.js.map +1 -0
  672. package/dist/lib/quality/quality-metrics.test.d.ts +5 -0
  673. package/dist/lib/quality/quality-metrics.test.d.ts.map +1 -0
  674. package/dist/lib/quality/quality-metrics.test.js +2766 -0
  675. package/dist/lib/quality/quality-metrics.test.js.map +1 -0
  676. package/dist/lib/quality/quality-multi-agent.d.ts +106 -0
  677. package/dist/lib/quality/quality-multi-agent.d.ts.map +1 -0
  678. package/dist/lib/quality/quality-multi-agent.js +124 -0
  679. package/dist/lib/quality/quality-multi-agent.js.map +1 -0
  680. package/dist/lib/quality/quality-multi-agent.test.d.ts +6 -0
  681. package/dist/lib/quality/quality-multi-agent.test.d.ts.map +1 -0
  682. package/dist/lib/quality/quality-multi-agent.test.js +163 -0
  683. package/dist/lib/quality/quality-multi-agent.test.js.map +1 -0
  684. package/dist/lib/quality/quality-sla.d.ts +35 -0
  685. package/dist/lib/quality/quality-sla.d.ts.map +1 -0
  686. package/dist/lib/quality/quality-sla.js +62 -0
  687. package/dist/lib/quality/quality-sla.js.map +1 -0
  688. package/dist/lib/quality/quality-sla.test.d.ts +5 -0
  689. package/dist/lib/quality/quality-sla.test.d.ts.map +1 -0
  690. package/dist/lib/quality/quality-sla.test.js +144 -0
  691. package/dist/lib/quality/quality-sla.test.js.map +1 -0
  692. package/dist/lib/quality/quality-test-constants.d.ts +23 -0
  693. package/dist/lib/quality/quality-test-constants.d.ts.map +1 -0
  694. package/dist/lib/quality/quality-test-constants.js +25 -0
  695. package/dist/lib/quality/quality-test-constants.js.map +1 -0
  696. package/dist/lib/quality/quality-trends.d.ts +101 -0
  697. package/dist/lib/quality/quality-trends.d.ts.map +1 -0
  698. package/dist/lib/quality/quality-trends.js +299 -0
  699. package/dist/lib/quality/quality-trends.js.map +1 -0
  700. package/dist/lib/quality/quality-trends.test.d.ts +6 -0
  701. package/dist/lib/quality/quality-trends.test.d.ts.map +1 -0
  702. package/dist/lib/quality/quality-trends.test.js +377 -0
  703. package/dist/lib/quality/quality-trends.test.js.map +1 -0
  704. package/dist/lib/quality/quality-views.d.ts +966 -0
  705. package/dist/lib/quality/quality-views.d.ts.map +1 -0
  706. package/dist/lib/quality/quality-views.js +367 -0
  707. package/dist/lib/quality/quality-views.js.map +1 -0
  708. package/dist/lib/quality/quality-views.test.d.ts +6 -0
  709. package/dist/lib/quality/quality-views.test.d.ts.map +1 -0
  710. package/dist/lib/quality/quality-views.test.js +262 -0
  711. package/dist/lib/quality/quality-views.test.js.map +1 -0
  712. package/dist/lib/quality/quality-visualization.d.ts +112 -0
  713. package/dist/lib/quality/quality-visualization.d.ts.map +1 -0
  714. package/dist/lib/quality/quality-visualization.js +136 -0
  715. package/dist/lib/quality/quality-visualization.js.map +1 -0
  716. package/dist/lib/quality/quality-visualization.test.d.ts +5 -0
  717. package/dist/lib/quality/quality-visualization.test.d.ts.map +1 -0
  718. package/dist/lib/quality/quality-visualization.test.js +189 -0
  719. package/dist/lib/quality/quality-visualization.test.js.map +1 -0
  720. package/dist/lib/resilience/cache.d.ts +56 -0
  721. package/dist/lib/resilience/cache.d.ts.map +1 -0
  722. package/dist/lib/resilience/cache.js +96 -0
  723. package/dist/lib/resilience/cache.js.map +1 -0
  724. package/dist/lib/resilience/cache.test.d.ts.map +1 -0
  725. package/dist/lib/resilience/cache.test.js +106 -0
  726. package/dist/lib/resilience/cache.test.js.map +1 -0
  727. package/dist/lib/resilience/circuit-breaker.d.ts +147 -0
  728. package/dist/lib/resilience/circuit-breaker.d.ts.map +1 -0
  729. package/dist/lib/resilience/circuit-breaker.js +251 -0
  730. package/dist/lib/resilience/circuit-breaker.js.map +1 -0
  731. package/dist/lib/resilience/circuit-breaker.test.d.ts.map +1 -0
  732. package/dist/lib/resilience/circuit-breaker.test.js +266 -0
  733. package/dist/lib/resilience/circuit-breaker.test.js.map +1 -0
  734. package/dist/lib/resilience/toon-encoder.d.ts +31 -0
  735. package/dist/lib/resilience/toon-encoder.d.ts.map +1 -0
  736. package/dist/lib/resilience/toon-encoder.js +66 -0
  737. package/dist/lib/resilience/toon-encoder.js.map +1 -0
  738. package/dist/lib/resilience/toon-encoder.test.d.ts.map +1 -0
  739. package/dist/lib/resilience/toon-encoder.test.js +86 -0
  740. package/dist/lib/resilience/toon-encoder.test.js.map +1 -0
  741. package/dist/lib/testing/mock-llm-builder.d.ts +139 -0
  742. package/dist/lib/testing/mock-llm-builder.d.ts.map +1 -0
  743. package/dist/lib/testing/mock-llm-builder.js +254 -0
  744. package/dist/lib/testing/mock-llm-builder.js.map +1 -0
  745. package/dist/lib/testing/mock-llm-builder.test.d.ts +5 -0
  746. package/dist/lib/testing/mock-llm-builder.test.d.ts.map +1 -0
  747. package/dist/lib/testing/mock-llm-builder.test.js +304 -0
  748. package/dist/lib/testing/mock-llm-builder.test.js.map +1 -0
  749. package/dist/lib/validation/api-schemas.d.ts +705 -0
  750. package/dist/lib/validation/api-schemas.d.ts.map +1 -0
  751. package/dist/lib/validation/api-schemas.js +351 -0
  752. package/dist/lib/validation/api-schemas.js.map +1 -0
  753. package/dist/lib/validation/api-schemas.test.d.ts +5 -0
  754. package/dist/lib/validation/api-schemas.test.d.ts.map +1 -0
  755. package/dist/lib/validation/api-schemas.test.js +427 -0
  756. package/dist/lib/validation/api-schemas.test.js.map +1 -0
  757. package/dist/lib/validation/dashboard-schemas.d.ts +203 -0
  758. package/dist/lib/validation/dashboard-schemas.d.ts.map +1 -0
  759. package/dist/lib/validation/dashboard-schemas.js +186 -0
  760. package/dist/lib/validation/dashboard-schemas.js.map +1 -0
  761. package/dist/lib/validation/dashboard-schemas.test.d.ts +5 -0
  762. package/dist/lib/validation/dashboard-schemas.test.d.ts.map +1 -0
  763. package/dist/lib/validation/dashboard-schemas.test.js +353 -0
  764. package/dist/lib/validation/dashboard-schemas.test.js.map +1 -0
  765. package/dist/server.d.ts +2 -1
  766. package/dist/server.d.ts.map +1 -1
  767. package/dist/server.js +158 -144
  768. package/dist/server.js.map +1 -1
  769. package/dist/server.test.js +102 -95
  770. package/dist/server.test.js.map +1 -1
  771. package/dist/test-helpers/assertions.d.ts +6 -0
  772. package/dist/test-helpers/assertions.d.ts.map +1 -0
  773. package/dist/test-helpers/assertions.js +11 -0
  774. package/dist/test-helpers/assertions.js.map +1 -0
  775. package/dist/test-helpers/env-utils.d.ts +0 -64
  776. package/dist/test-helpers/env-utils.d.ts.map +1 -1
  777. package/dist/test-helpers/env-utils.js +0 -100
  778. package/dist/test-helpers/env-utils.js.map +1 -1
  779. package/dist/test-helpers/fuzz-generators.d.ts.map +1 -1
  780. package/dist/test-helpers/fuzz-generators.js +62 -22
  781. package/dist/test-helpers/fuzz-generators.js.map +1 -1
  782. package/dist/test-helpers/index.d.ts +3 -2
  783. package/dist/test-helpers/index.d.ts.map +1 -1
  784. package/dist/test-helpers/index.js +4 -2
  785. package/dist/test-helpers/index.js.map +1 -1
  786. package/dist/test-helpers/memfs-utils.test.js +81 -76
  787. package/dist/test-helpers/memfs-utils.test.js.map +1 -1
  788. package/dist/test-helpers/mock-backends.d.ts +19 -17
  789. package/dist/test-helpers/mock-backends.d.ts.map +1 -1
  790. package/dist/test-helpers/mock-backends.js +16 -4
  791. package/dist/test-helpers/mock-backends.js.map +1 -1
  792. package/dist/test-helpers/mock-backends.test.js +43 -112
  793. package/dist/test-helpers/mock-backends.test.js.map +1 -1
  794. package/dist/test-helpers/race-condition-helpers.d.ts.map +1 -1
  795. package/dist/test-helpers/race-condition-helpers.js +3 -2
  796. package/dist/test-helpers/race-condition-helpers.js.map +1 -1
  797. package/dist/test-helpers/schema-validators.d.ts +2 -2
  798. package/dist/test-helpers/schema-validators.d.ts.map +1 -1
  799. package/dist/test-helpers/schema-validators.js +35 -31
  800. package/dist/test-helpers/schema-validators.js.map +1 -1
  801. package/dist/test-helpers/test-constants.d.ts +74 -0
  802. package/dist/test-helpers/test-constants.d.ts.map +1 -0
  803. package/dist/test-helpers/test-constants.js +78 -0
  804. package/dist/test-helpers/test-constants.js.map +1 -0
  805. package/dist/test-helpers/test-data-builders.d.ts +25 -7
  806. package/dist/test-helpers/test-data-builders.d.ts.map +1 -1
  807. package/dist/test-helpers/test-data-builders.js +32 -9
  808. package/dist/test-helpers/test-data-builders.js.map +1 -1
  809. package/dist/test-helpers/test-data-builders.test.js +116 -107
  810. package/dist/test-helpers/test-data-builders.test.js.map +1 -1
  811. package/dist/test-helpers/tool-validators.d.ts +1 -1
  812. package/dist/test-helpers/tool-validators.d.ts.map +1 -1
  813. package/dist/test-helpers/tool-validators.js +10 -10
  814. package/dist/test-helpers/tool-validators.js.map +1 -1
  815. package/dist/tools/audit-trail.d.ts +170 -0
  816. package/dist/tools/audit-trail.d.ts.map +1 -0
  817. package/dist/tools/audit-trail.js +109 -0
  818. package/dist/tools/audit-trail.js.map +1 -0
  819. package/dist/tools/audit-trail.test.d.ts +5 -0
  820. package/dist/tools/audit-trail.test.d.ts.map +1 -0
  821. package/dist/tools/audit-trail.test.js +122 -0
  822. package/dist/tools/audit-trail.test.js.map +1 -0
  823. package/dist/tools/context-stats.d.ts +6 -20
  824. package/dist/tools/context-stats.d.ts.map +1 -1
  825. package/dist/tools/context-stats.js +106 -88
  826. package/dist/tools/context-stats.js.map +1 -1
  827. package/dist/tools/context-stats.test.js +109 -60
  828. package/dist/tools/context-stats.test.js.map +1 -1
  829. package/dist/tools/detect-trace-anomalies.d.ts +123 -0
  830. package/dist/tools/detect-trace-anomalies.d.ts.map +1 -0
  831. package/dist/tools/detect-trace-anomalies.js +66 -0
  832. package/dist/tools/detect-trace-anomalies.js.map +1 -0
  833. package/dist/tools/estimate-cost.d.ts +77 -0
  834. package/dist/tools/estimate-cost.d.ts.map +1 -0
  835. package/dist/tools/estimate-cost.js +104 -0
  836. package/dist/tools/estimate-cost.js.map +1 -0
  837. package/dist/tools/estimate-cost.test.d.ts +5 -0
  838. package/dist/tools/estimate-cost.test.d.ts.map +1 -0
  839. package/dist/tools/estimate-cost.test.js +343 -0
  840. package/dist/tools/estimate-cost.test.js.map +1 -0
  841. package/dist/tools/export-base.d.ts +77 -0
  842. package/dist/tools/export-base.d.ts.map +1 -0
  843. package/dist/tools/export-base.js +150 -0
  844. package/dist/tools/export-base.js.map +1 -0
  845. package/dist/tools/export-base.test.d.ts +18 -0
  846. package/dist/tools/export-base.test.d.ts.map +1 -0
  847. package/dist/tools/export-base.test.js +220 -0
  848. package/dist/tools/export-base.test.js.map +1 -0
  849. package/dist/tools/export-confident.d.ts +94 -90
  850. package/dist/tools/export-confident.d.ts.map +1 -1
  851. package/dist/tools/export-confident.js +17 -115
  852. package/dist/tools/export-confident.js.map +1 -1
  853. package/dist/tools/export-confident.test.js +79 -75
  854. package/dist/tools/export-confident.test.js.map +1 -1
  855. package/dist/tools/export-datadog.d.ts +77 -116
  856. package/dist/tools/export-datadog.d.ts.map +1 -1
  857. package/dist/tools/export-datadog.js +38 -40
  858. package/dist/tools/export-datadog.js.map +1 -1
  859. package/dist/tools/export-datadog.test.js +122 -165
  860. package/dist/tools/export-datadog.test.js.map +1 -1
  861. package/dist/tools/export-jaeger.d.ts +100 -0
  862. package/dist/tools/export-jaeger.d.ts.map +1 -0
  863. package/dist/tools/export-jaeger.js +154 -0
  864. package/dist/tools/export-jaeger.js.map +1 -0
  865. package/dist/tools/export-jaeger.test.d.ts +2 -0
  866. package/dist/tools/export-jaeger.test.d.ts.map +1 -0
  867. package/dist/tools/export-jaeger.test.js +113 -0
  868. package/dist/tools/export-jaeger.test.js.map +1 -0
  869. package/dist/tools/export-langfuse.d.ts +78 -80
  870. package/dist/tools/export-langfuse.d.ts.map +1 -1
  871. package/dist/tools/export-langfuse.js +15 -113
  872. package/dist/tools/export-langfuse.js.map +1 -1
  873. package/dist/tools/export-langfuse.test.js +70 -81
  874. package/dist/tools/export-langfuse.test.js.map +1 -1
  875. package/dist/tools/export-phoenix.d.ts +115 -90
  876. package/dist/tools/export-phoenix.d.ts.map +1 -1
  877. package/dist/tools/export-phoenix.js +29 -117
  878. package/dist/tools/export-phoenix.js.map +1 -1
  879. package/dist/tools/export-phoenix.test.js +95 -94
  880. package/dist/tools/export-phoenix.test.js.map +1 -1
  881. package/dist/tools/get-trace-url.d.ts +2 -10
  882. package/dist/tools/get-trace-url.d.ts.map +1 -1
  883. package/dist/tools/get-trace-url.js +5 -8
  884. package/dist/tools/get-trace-url.js.map +1 -1
  885. package/dist/tools/get-trace-url.test.js +81 -399
  886. package/dist/tools/get-trace-url.test.js.map +1 -1
  887. package/dist/tools/hallucination-detection.d.ts +203 -0
  888. package/dist/tools/hallucination-detection.d.ts.map +1 -0
  889. package/dist/tools/hallucination-detection.js +189 -0
  890. package/dist/tools/hallucination-detection.js.map +1 -0
  891. package/dist/tools/hallucination-detection.test.d.ts +5 -0
  892. package/dist/tools/hallucination-detection.test.d.ts.map +1 -0
  893. package/dist/tools/hallucination-detection.test.js +529 -0
  894. package/dist/tools/hallucination-detection.test.js.map +1 -0
  895. package/dist/tools/health-check.d.ts +9 -16
  896. package/dist/tools/health-check.d.ts.map +1 -1
  897. package/dist/tools/health-check.js +88 -101
  898. package/dist/tools/health-check.js.map +1 -1
  899. package/dist/tools/health-check.test.js +72 -165
  900. package/dist/tools/health-check.test.js.map +1 -1
  901. package/dist/tools/index.d.ts +13 -0
  902. package/dist/tools/index.d.ts.map +1 -1
  903. package/dist/tools/index.js +13 -0
  904. package/dist/tools/index.js.map +1 -1
  905. package/dist/tools/ingest-constants.d.ts +8 -0
  906. package/dist/tools/ingest-constants.d.ts.map +1 -0
  907. package/dist/tools/ingest-constants.js +8 -0
  908. package/dist/tools/ingest-constants.js.map +1 -0
  909. package/dist/tools/ingest-spans.d.ts +45 -0
  910. package/dist/tools/ingest-spans.d.ts.map +1 -0
  911. package/dist/tools/ingest-spans.js +129 -0
  912. package/dist/tools/ingest-spans.js.map +1 -0
  913. package/dist/tools/ingest-spans.test.d.ts +5 -0
  914. package/dist/tools/ingest-spans.test.d.ts.map +1 -0
  915. package/dist/tools/ingest-spans.test.js +250 -0
  916. package/dist/tools/ingest-spans.test.js.map +1 -0
  917. package/dist/tools/ingest-traces.d.ts +76 -0
  918. package/dist/tools/ingest-traces.d.ts.map +1 -0
  919. package/dist/tools/ingest-traces.js +164 -0
  920. package/dist/tools/ingest-traces.js.map +1 -0
  921. package/dist/tools/ingest-traces.test.d.ts +5 -0
  922. package/dist/tools/ingest-traces.test.d.ts.map +1 -0
  923. package/dist/tools/ingest-traces.test.js +483 -0
  924. package/dist/tools/ingest-traces.test.js.map +1 -0
  925. package/dist/tools/inject-evaluations.d.ts +136 -1197
  926. package/dist/tools/inject-evaluations.d.ts.map +1 -1
  927. package/dist/tools/inject-evaluations.js +65 -53
  928. package/dist/tools/inject-evaluations.js.map +1 -1
  929. package/dist/tools/inject-evaluations.test.js +83 -71
  930. package/dist/tools/inject-evaluations.test.js.map +1 -1
  931. package/dist/tools/manage-datasets.d.ts +850 -0
  932. package/dist/tools/manage-datasets.d.ts.map +1 -0
  933. package/dist/tools/manage-datasets.js +139 -0
  934. package/dist/tools/manage-datasets.js.map +1 -0
  935. package/dist/tools/manage-datasets.test.d.ts +5 -0
  936. package/dist/tools/manage-datasets.test.d.ts.map +1 -0
  937. package/dist/tools/manage-datasets.test.js +430 -0
  938. package/dist/tools/manage-datasets.test.js.map +1 -0
  939. package/dist/tools/multi-agent-coordination.d.ts +178 -0
  940. package/dist/tools/multi-agent-coordination.d.ts.map +1 -0
  941. package/dist/tools/multi-agent-coordination.js +270 -0
  942. package/dist/tools/multi-agent-coordination.js.map +1 -0
  943. package/dist/tools/multi-agent-coordination.test.d.ts +5 -0
  944. package/dist/tools/multi-agent-coordination.test.d.ts.map +1 -0
  945. package/dist/tools/multi-agent-coordination.test.js +530 -0
  946. package/dist/tools/multi-agent-coordination.test.js.map +1 -0
  947. package/dist/tools/query-evaluations.d.ts +147 -105
  948. package/dist/tools/query-evaluations.d.ts.map +1 -1
  949. package/dist/tools/query-evaluations.js +205 -178
  950. package/dist/tools/query-evaluations.js.map +1 -1
  951. package/dist/tools/query-evaluations.test.js +386 -391
  952. package/dist/tools/query-evaluations.test.js.map +1 -1
  953. package/dist/tools/query-llm-events.d.ts +100 -75
  954. package/dist/tools/query-llm-events.d.ts.map +1 -1
  955. package/dist/tools/query-llm-events.js +106 -80
  956. package/dist/tools/query-llm-events.js.map +1 -1
  957. package/dist/tools/query-llm-events.test.js +183 -346
  958. package/dist/tools/query-llm-events.test.js.map +1 -1
  959. package/dist/tools/query-logs.d.ts +45 -58
  960. package/dist/tools/query-logs.d.ts.map +1 -1
  961. package/dist/tools/query-logs.js +54 -101
  962. package/dist/tools/query-logs.js.map +1 -1
  963. package/dist/tools/query-logs.test.js +118 -314
  964. package/dist/tools/query-logs.test.js.map +1 -1
  965. package/dist/tools/query-metric-histograms.d.ts +112 -0
  966. package/dist/tools/query-metric-histograms.d.ts.map +1 -0
  967. package/dist/tools/query-metric-histograms.js +69 -0
  968. package/dist/tools/query-metric-histograms.js.map +1 -0
  969. package/dist/tools/query-metric-histograms.test.d.ts +5 -0
  970. package/dist/tools/query-metric-histograms.test.d.ts.map +1 -0
  971. package/dist/tools/query-metric-histograms.test.js +209 -0
  972. package/dist/tools/query-metric-histograms.test.js.map +1 -0
  973. package/dist/tools/query-metrics.d.ts +159 -60
  974. package/dist/tools/query-metrics.d.ts.map +1 -1
  975. package/dist/tools/query-metrics.js +133 -111
  976. package/dist/tools/query-metrics.js.map +1 -1
  977. package/dist/tools/query-metrics.test.js +314 -389
  978. package/dist/tools/query-metrics.test.js.map +1 -1
  979. package/dist/tools/query-regressions.d.ts +76 -0
  980. package/dist/tools/query-regressions.d.ts.map +1 -0
  981. package/dist/tools/query-regressions.js +122 -0
  982. package/dist/tools/query-regressions.js.map +1 -0
  983. package/dist/tools/query-regressions.test.d.ts +8 -0
  984. package/dist/tools/query-regressions.test.d.ts.map +1 -0
  985. package/dist/tools/query-regressions.test.js +129 -0
  986. package/dist/tools/query-regressions.test.js.map +1 -0
  987. package/dist/tools/query-traces.d.ts +103 -71
  988. package/dist/tools/query-traces.d.ts.map +1 -1
  989. package/dist/tools/query-traces.js +75 -106
  990. package/dist/tools/query-traces.js.map +1 -1
  991. package/dist/tools/query-traces.test.js +140 -846
  992. package/dist/tools/query-traces.test.js.map +1 -1
  993. package/dist/tools/query-verifications.d.ts +55 -43
  994. package/dist/tools/query-verifications.d.ts.map +1 -1
  995. package/dist/tools/query-verifications.js +47 -46
  996. package/dist/tools/query-verifications.js.map +1 -1
  997. package/dist/tools/query-verifications.test.js +42 -35
  998. package/dist/tools/query-verifications.test.js.map +1 -1
  999. package/dist/tools/routing-telemetry.d.ts +168 -0
  1000. package/dist/tools/routing-telemetry.d.ts.map +1 -0
  1001. package/dist/tools/routing-telemetry.js +267 -0
  1002. package/dist/tools/routing-telemetry.js.map +1 -0
  1003. package/dist/tools/routing-telemetry.test.d.ts +5 -0
  1004. package/dist/tools/routing-telemetry.test.d.ts.map +1 -0
  1005. package/dist/tools/routing-telemetry.test.js +747 -0
  1006. package/dist/tools/routing-telemetry.test.js.map +1 -0
  1007. package/dist/tools/setup-claudeignore.d.ts +4 -32
  1008. package/dist/tools/setup-claudeignore.d.ts.map +1 -1
  1009. package/dist/tools/setup-claudeignore.js +18 -22
  1010. package/dist/tools/setup-claudeignore.js.map +1 -1
  1011. package/dist/tools/setup-claudeignore.test.js +50 -49
  1012. package/dist/tools/setup-claudeignore.test.js.map +1 -1
  1013. package/dist/tools/token-budget.d.ts +170 -0
  1014. package/dist/tools/token-budget.d.ts.map +1 -0
  1015. package/dist/tools/token-budget.js +219 -0
  1016. package/dist/tools/token-budget.js.map +1 -0
  1017. package/dist/tools/token-budget.test.d.ts +5 -0
  1018. package/dist/tools/token-budget.test.d.ts.map +1 -0
  1019. package/dist/tools/token-budget.test.js +293 -0
  1020. package/dist/tools/token-budget.test.js.map +1 -0
  1021. package/package.json +72 -10
  1022. package/dist/backends/local-jsonl.test.d.ts +0 -2
  1023. package/dist/backends/local-jsonl.test.d.ts.map +0 -1
  1024. package/dist/backends/local-jsonl.test.js +0 -4651
  1025. package/dist/backends/local-jsonl.test.js.map +0 -1
  1026. package/dist/backends/signoz-api-circuit-breaker.test.d.ts +0 -6
  1027. package/dist/backends/signoz-api-circuit-breaker.test.d.ts.map +0 -1
  1028. package/dist/backends/signoz-api-circuit-breaker.test.js +0 -548
  1029. package/dist/backends/signoz-api-circuit-breaker.test.js.map +0 -1
  1030. package/dist/backends/signoz-api-rate-limiter.test.d.ts +0 -6
  1031. package/dist/backends/signoz-api-rate-limiter.test.d.ts.map +0 -1
  1032. package/dist/backends/signoz-api-rate-limiter.test.js +0 -390
  1033. package/dist/backends/signoz-api-rate-limiter.test.js.map +0 -1
  1034. package/dist/backends/signoz-api-ssrf.test.d.ts +0 -6
  1035. package/dist/backends/signoz-api-ssrf.test.d.ts.map +0 -1
  1036. package/dist/backends/signoz-api-ssrf.test.js +0 -216
  1037. package/dist/backends/signoz-api-ssrf.test.js.map +0 -1
  1038. package/dist/backends/signoz-api-test-helpers.d.ts +0 -80
  1039. package/dist/backends/signoz-api-test-helpers.d.ts.map +0 -1
  1040. package/dist/backends/signoz-api-test-helpers.js +0 -79
  1041. package/dist/backends/signoz-api-test-helpers.js.map +0 -1
  1042. package/dist/backends/signoz-api.d.ts +0 -109
  1043. package/dist/backends/signoz-api.d.ts.map +0 -1
  1044. package/dist/backends/signoz-api.integration.test.d.ts +0 -8
  1045. package/dist/backends/signoz-api.integration.test.d.ts.map +0 -1
  1046. package/dist/backends/signoz-api.integration.test.js +0 -137
  1047. package/dist/backends/signoz-api.integration.test.js.map +0 -1
  1048. package/dist/backends/signoz-api.js +0 -1132
  1049. package/dist/backends/signoz-api.js.map +0 -1
  1050. package/dist/backends/signoz-api.test.d.ts +0 -11
  1051. package/dist/backends/signoz-api.test.d.ts.map +0 -1
  1052. package/dist/backends/signoz-api.test.js +0 -832
  1053. package/dist/backends/signoz-api.test.js.map +0 -1
  1054. package/dist/lib/agent-as-judge.d.ts +0 -388
  1055. package/dist/lib/agent-as-judge.d.ts.map +0 -1
  1056. package/dist/lib/agent-as-judge.js +0 -740
  1057. package/dist/lib/agent-as-judge.js.map +0 -1
  1058. package/dist/lib/agent-as-judge.test.d.ts.map +0 -1
  1059. package/dist/lib/agent-as-judge.test.js +0 -816
  1060. package/dist/lib/agent-as-judge.test.js.map +0 -1
  1061. package/dist/lib/cache.d.ts +0 -90
  1062. package/dist/lib/cache.d.ts.map +0 -1
  1063. package/dist/lib/cache.js +0 -133
  1064. package/dist/lib/cache.js.map +0 -1
  1065. package/dist/lib/cache.test.d.ts.map +0 -1
  1066. package/dist/lib/cache.test.js +0 -105
  1067. package/dist/lib/cache.test.js.map +0 -1
  1068. package/dist/lib/circuit-breaker.d.ts +0 -101
  1069. package/dist/lib/circuit-breaker.d.ts.map +0 -1
  1070. package/dist/lib/circuit-breaker.js +0 -158
  1071. package/dist/lib/circuit-breaker.js.map +0 -1
  1072. package/dist/lib/circuit-breaker.test.d.ts.map +0 -1
  1073. package/dist/lib/circuit-breaker.test.js +0 -263
  1074. package/dist/lib/circuit-breaker.test.js.map +0 -1
  1075. package/dist/lib/confident-export.d.ts +0 -101
  1076. package/dist/lib/confident-export.d.ts.map +0 -1
  1077. package/dist/lib/confident-export.js +0 -393
  1078. package/dist/lib/confident-export.js.map +0 -1
  1079. package/dist/lib/confident-export.test.d.ts.map +0 -1
  1080. package/dist/lib/confident-export.test.js +0 -835
  1081. package/dist/lib/confident-export.test.js.map +0 -1
  1082. package/dist/lib/constants-symlink.test.d.ts.map +0 -1
  1083. package/dist/lib/constants-symlink.test.js +0 -357
  1084. package/dist/lib/constants-symlink.test.js.map +0 -1
  1085. package/dist/lib/constants.d.ts +0 -183
  1086. package/dist/lib/constants.d.ts.map +0 -1
  1087. package/dist/lib/constants.js +0 -453
  1088. package/dist/lib/constants.js.map +0 -1
  1089. package/dist/lib/constants.test.d.ts.map +0 -1
  1090. package/dist/lib/constants.test.js +0 -717
  1091. package/dist/lib/constants.test.js.map +0 -1
  1092. package/dist/lib/datadog-export.d.ts +0 -156
  1093. package/dist/lib/datadog-export.d.ts.map +0 -1
  1094. package/dist/lib/datadog-export.js +0 -464
  1095. package/dist/lib/datadog-export.js.map +0 -1
  1096. package/dist/lib/datadog-export.test.d.ts +0 -14
  1097. package/dist/lib/datadog-export.test.d.ts.map +0 -1
  1098. package/dist/lib/datadog-export.test.js +0 -890
  1099. package/dist/lib/datadog-export.test.js.map +0 -1
  1100. package/dist/lib/edge-cases.test.d.ts.map +0 -1
  1101. package/dist/lib/edge-cases.test.js +0 -634
  1102. package/dist/lib/edge-cases.test.js.map +0 -1
  1103. package/dist/lib/error-sanitizer.d.ts +0 -57
  1104. package/dist/lib/error-sanitizer.d.ts.map +0 -1
  1105. package/dist/lib/error-sanitizer.js +0 -233
  1106. package/dist/lib/error-sanitizer.js.map +0 -1
  1107. package/dist/lib/error-sanitizer.test.d.ts.map +0 -1
  1108. package/dist/lib/error-sanitizer.test.js +0 -528
  1109. package/dist/lib/error-sanitizer.test.js.map +0 -1
  1110. package/dist/lib/error-types.d.ts +0 -54
  1111. package/dist/lib/error-types.d.ts.map +0 -1
  1112. package/dist/lib/error-types.js +0 -154
  1113. package/dist/lib/error-types.js.map +0 -1
  1114. package/dist/lib/error-types.test.d.ts.map +0 -1
  1115. package/dist/lib/error-types.test.js +0 -196
  1116. package/dist/lib/error-types.test.js.map +0 -1
  1117. package/dist/lib/evaluation-hooks.d.ts +0 -49
  1118. package/dist/lib/evaluation-hooks.d.ts.map +0 -1
  1119. package/dist/lib/evaluation-hooks.js +0 -488
  1120. package/dist/lib/evaluation-hooks.js.map +0 -1
  1121. package/dist/lib/evaluation-hooks.test.d.ts.map +0 -1
  1122. package/dist/lib/evaluation-hooks.test.js +0 -624
  1123. package/dist/lib/evaluation-hooks.test.js.map +0 -1
  1124. package/dist/lib/export-utils.d.ts +0 -99
  1125. package/dist/lib/export-utils.d.ts.map +0 -1
  1126. package/dist/lib/export-utils.js +0 -238
  1127. package/dist/lib/export-utils.js.map +0 -1
  1128. package/dist/lib/export-utils.test.d.ts.map +0 -1
  1129. package/dist/lib/export-utils.test.js +0 -193
  1130. package/dist/lib/export-utils.test.js.map +0 -1
  1131. package/dist/lib/file-utils.d.ts +0 -320
  1132. package/dist/lib/file-utils.d.ts.map +0 -1
  1133. package/dist/lib/file-utils.js +0 -816
  1134. package/dist/lib/file-utils.js.map +0 -1
  1135. package/dist/lib/file-utils.test.d.ts.map +0 -1
  1136. package/dist/lib/file-utils.test.js +0 -1333
  1137. package/dist/lib/file-utils.test.js.map +0 -1
  1138. package/dist/lib/histogram.d.ts +0 -119
  1139. package/dist/lib/histogram.d.ts.map +0 -1
  1140. package/dist/lib/histogram.js +0 -202
  1141. package/dist/lib/histogram.js.map +0 -1
  1142. package/dist/lib/histogram.test.d.ts.map +0 -1
  1143. package/dist/lib/histogram.test.js +0 -381
  1144. package/dist/lib/histogram.test.js.map +0 -1
  1145. package/dist/lib/indexer.d.ts +0 -96
  1146. package/dist/lib/indexer.d.ts.map +0 -1
  1147. package/dist/lib/indexer.js +0 -353
  1148. package/dist/lib/indexer.js.map +0 -1
  1149. package/dist/lib/indexer.test.d.ts.map +0 -1
  1150. package/dist/lib/indexer.test.js +0 -696
  1151. package/dist/lib/indexer.test.js.map +0 -1
  1152. package/dist/lib/input-validator.d.ts +0 -115
  1153. package/dist/lib/input-validator.d.ts.map +0 -1
  1154. package/dist/lib/input-validator.fuzz.test.d.ts.map +0 -1
  1155. package/dist/lib/input-validator.fuzz.test.js +0 -290
  1156. package/dist/lib/input-validator.fuzz.test.js.map +0 -1
  1157. package/dist/lib/input-validator.js +0 -304
  1158. package/dist/lib/input-validator.js.map +0 -1
  1159. package/dist/lib/input-validator.test.d.ts.map +0 -1
  1160. package/dist/lib/input-validator.test.js +0 -415
  1161. package/dist/lib/input-validator.test.js.map +0 -1
  1162. package/dist/lib/instrumentation.d.ts +0 -153
  1163. package/dist/lib/instrumentation.d.ts.map +0 -1
  1164. package/dist/lib/instrumentation.integration.test.d.ts.map +0 -1
  1165. package/dist/lib/instrumentation.integration.test.js +0 -589
  1166. package/dist/lib/instrumentation.integration.test.js.map +0 -1
  1167. package/dist/lib/instrumentation.js +0 -520
  1168. package/dist/lib/instrumentation.js.map +0 -1
  1169. package/dist/lib/instrumentation.test.d.ts.map +0 -1
  1170. package/dist/lib/instrumentation.test.js +0 -821
  1171. package/dist/lib/instrumentation.test.js.map +0 -1
  1172. package/dist/lib/langfuse-export.d.ts +0 -125
  1173. package/dist/lib/langfuse-export.d.ts.map +0 -1
  1174. package/dist/lib/langfuse-export.js +0 -367
  1175. package/dist/lib/langfuse-export.js.map +0 -1
  1176. package/dist/lib/langfuse-export.test.d.ts.map +0 -1
  1177. package/dist/lib/langfuse-export.test.js +0 -1007
  1178. package/dist/lib/langfuse-export.test.js.map +0 -1
  1179. package/dist/lib/llm-as-judge.d.ts +0 -657
  1180. package/dist/lib/llm-as-judge.d.ts.map +0 -1
  1181. package/dist/lib/llm-as-judge.js +0 -1397
  1182. package/dist/lib/llm-as-judge.js.map +0 -1
  1183. package/dist/lib/llm-as-judge.test.d.ts.map +0 -1
  1184. package/dist/lib/llm-as-judge.test.js +0 -2409
  1185. package/dist/lib/llm-as-judge.test.js.map +0 -1
  1186. package/dist/lib/logger.d.ts +0 -46
  1187. package/dist/lib/logger.d.ts.map +0 -1
  1188. package/dist/lib/logger.js +0 -81
  1189. package/dist/lib/logger.js.map +0 -1
  1190. package/dist/lib/logger.test.d.ts.map +0 -1
  1191. package/dist/lib/logger.test.js.map +0 -1
  1192. package/dist/lib/metrics.d.ts +0 -62
  1193. package/dist/lib/metrics.d.ts.map +0 -1
  1194. package/dist/lib/metrics.js +0 -166
  1195. package/dist/lib/metrics.js.map +0 -1
  1196. package/dist/lib/metrics.test.d.ts.map +0 -1
  1197. package/dist/lib/metrics.test.js +0 -189
  1198. package/dist/lib/metrics.test.js.map +0 -1
  1199. package/dist/lib/otlp-export.d.ts +0 -178
  1200. package/dist/lib/otlp-export.d.ts.map +0 -1
  1201. package/dist/lib/otlp-export.js +0 -382
  1202. package/dist/lib/otlp-export.js.map +0 -1
  1203. package/dist/lib/parse-stats.d.ts.map +0 -1
  1204. package/dist/lib/parse-stats.js +0 -206
  1205. package/dist/lib/parse-stats.js.map +0 -1
  1206. package/dist/lib/parse-stats.test.d.ts.map +0 -1
  1207. package/dist/lib/parse-stats.test.js +0 -283
  1208. package/dist/lib/parse-stats.test.js.map +0 -1
  1209. package/dist/lib/phoenix-export.d.ts +0 -109
  1210. package/dist/lib/phoenix-export.d.ts.map +0 -1
  1211. package/dist/lib/phoenix-export.js +0 -429
  1212. package/dist/lib/phoenix-export.js.map +0 -1
  1213. package/dist/lib/phoenix-export.test.d.ts.map +0 -1
  1214. package/dist/lib/phoenix-export.test.js +0 -725
  1215. package/dist/lib/phoenix-export.test.js.map +0 -1
  1216. package/dist/lib/query-sanitizer.d.ts.map +0 -1
  1217. package/dist/lib/query-sanitizer.js +0 -261
  1218. package/dist/lib/query-sanitizer.js.map +0 -1
  1219. package/dist/lib/query-sanitizer.test.d.ts.map +0 -1
  1220. package/dist/lib/query-sanitizer.test.js +0 -400
  1221. package/dist/lib/query-sanitizer.test.js.map +0 -1
  1222. package/dist/lib/server-utils.d.ts +0 -93
  1223. package/dist/lib/server-utils.d.ts.map +0 -1
  1224. package/dist/lib/server-utils.js +0 -181
  1225. package/dist/lib/server-utils.js.map +0 -1
  1226. package/dist/lib/shared-schemas.d.ts +0 -87
  1227. package/dist/lib/shared-schemas.d.ts.map +0 -1
  1228. package/dist/lib/shared-schemas.js +0 -87
  1229. package/dist/lib/shared-schemas.js.map +0 -1
  1230. package/dist/lib/shared-schemas.test.d.ts.map +0 -1
  1231. package/dist/lib/shared-schemas.test.js +0 -106
  1232. package/dist/lib/shared-schemas.test.js.map +0 -1
  1233. package/dist/lib/toon-encoder.d.ts +0 -26
  1234. package/dist/lib/toon-encoder.d.ts.map +0 -1
  1235. package/dist/lib/toon-encoder.js +0 -61
  1236. package/dist/lib/toon-encoder.js.map +0 -1
  1237. package/dist/lib/toon-encoder.test.d.ts.map +0 -1
  1238. package/dist/lib/toon-encoder.test.js +0 -85
  1239. package/dist/lib/toon-encoder.test.js.map +0 -1
  1240. package/dist/lib/verification-events.d.ts +0 -100
  1241. package/dist/lib/verification-events.d.ts.map +0 -1
  1242. package/dist/lib/verification-events.js +0 -162
  1243. package/dist/lib/verification-events.js.map +0 -1
  1244. package/dist/lib/verification-events.test.d.ts.map +0 -1
  1245. package/dist/lib/verification-events.test.js +0 -193
  1246. package/dist/lib/verification-events.test.js.map +0 -1
  1247. package/dist/tools/signoz.integration.test.d.ts +0 -8
  1248. package/dist/tools/signoz.integration.test.d.ts.map +0 -1
  1249. package/dist/tools/signoz.integration.test.js +0 -141
  1250. package/dist/tools/signoz.integration.test.js.map +0 -1
  1251. package/dist/types/evaluation-hooks.d.ts +0 -176
  1252. package/dist/types/evaluation-hooks.d.ts.map +0 -1
  1253. package/dist/types/evaluation-hooks.js +0 -49
  1254. package/dist/types/evaluation-hooks.js.map +0 -1
  1255. /package/dist/lib/{agent-as-judge.test.d.ts → agent-judge/agent-as-judge.test.d.ts} +0 -0
  1256. /package/dist/lib/{verification-events.test.d.ts → audit/verification-events.test.d.ts} +0 -0
  1257. /package/dist/lib/{constants-symlink.test.d.ts → core/constants-symlink.test.d.ts} +0 -0
  1258. /package/dist/lib/{constants.test.d.ts → core/constants.test.d.ts} +0 -0
  1259. /package/dist/lib/{edge-cases.test.d.ts → core/edge-cases.test.d.ts} +0 -0
  1260. /package/dist/lib/{file-utils.test.d.ts → core/file-utils.test.d.ts} +0 -0
  1261. /package/dist/lib/{input-validator.fuzz.test.d.ts → core/input-validator.fuzz.test.d.ts} +0 -0
  1262. /package/dist/lib/{input-validator.test.d.ts → core/input-validator.test.d.ts} +0 -0
  1263. /package/dist/lib/{logger.test.d.ts → core/logger.test.d.ts} +0 -0
  1264. /package/dist/lib/{logger.test.js → core/logger.test.js} +0 -0
  1265. /package/dist/lib/{shared-schemas.test.d.ts → core/shared-schemas.test.d.ts} +0 -0
  1266. /package/dist/lib/{error-sanitizer.test.d.ts → errors/error-sanitizer.test.d.ts} +0 -0
  1267. /package/dist/lib/{error-types.test.d.ts → errors/error-types.test.d.ts} +0 -0
  1268. /package/dist/lib/{query-sanitizer.d.ts → errors/query-sanitizer.d.ts} +0 -0
  1269. /package/dist/lib/{query-sanitizer.test.d.ts → errors/query-sanitizer.test.d.ts} +0 -0
  1270. /package/dist/lib/{confident-export.test.d.ts → exports/confident-export.test.d.ts} +0 -0
  1271. /package/dist/lib/{export-utils.test.d.ts → exports/export-utils.test.d.ts} +0 -0
  1272. /package/dist/lib/{langfuse-export.test.d.ts → exports/langfuse-export.test.d.ts} +0 -0
  1273. /package/dist/lib/{phoenix-export.test.d.ts → exports/phoenix-export.test.d.ts} +0 -0
  1274. /package/dist/lib/{evaluation-hooks.test.d.ts → judge/evaluation-hooks.test.d.ts} +0 -0
  1275. /package/dist/lib/{llm-as-judge.test.d.ts → judge/llm-as-judge.test.d.ts} +0 -0
  1276. /package/dist/lib/{histogram.test.d.ts → observability/histogram.test.d.ts} +0 -0
  1277. /package/dist/lib/{indexer.test.d.ts → observability/indexer.test.d.ts} +0 -0
  1278. /package/dist/lib/{instrumentation.integration.test.d.ts → observability/instrumentation.integration.test.d.ts} +0 -0
  1279. /package/dist/lib/{instrumentation.test.d.ts → observability/instrumentation.test.d.ts} +0 -0
  1280. /package/dist/lib/{metrics.test.d.ts → observability/metrics.test.d.ts} +0 -0
  1281. /package/dist/lib/{parse-stats.d.ts → observability/parse-stats.d.ts} +0 -0
  1282. /package/dist/lib/{parse-stats.test.d.ts → observability/parse-stats.test.d.ts} +0 -0
  1283. /package/dist/lib/{cache.test.d.ts → resilience/cache.test.d.ts} +0 -0
  1284. /package/dist/lib/{circuit-breaker.test.d.ts → resilience/circuit-breaker.test.d.ts} +0 -0
  1285. /package/dist/lib/{toon-encoder.test.d.ts → resilience/toon-encoder.test.d.ts} +0 -0
@@ -1,1132 +0,0 @@
1
- /**
2
- * SigNoz Cloud API backend for querying traces, metrics, and logs
3
- *
4
- * SigNoz has two separate endpoints:
5
- * - Ingest: https://ingest.{region}.signoz.cloud (OTLP for sending data)
6
- * - Query API: https://{tenant}.signoz.io or SIGNOZ_QUERY_URL (for reading data)
7
- *
8
- * This backend uses the Query API (v5) for reading telemetry data.
9
- *
10
- * ## TLS/HTTPS Security
11
- *
12
- * This backend enforces HTTPS-only connections (HTTP URLs are rejected).
13
- * Node.js `fetch()` uses the system certificate store by default, which
14
- * provides standard TLS certificate validation.
15
- *
16
- * For enterprise deployments requiring:
17
- * - **Custom CA certificates**: Set `NODE_EXTRA_CA_CERTS` environment variable
18
- * - **Certificate pinning**: Not currently supported; use network-level controls
19
- * - **Self-signed certificates**: Not recommended for production; use proper PKI
20
- *
21
- * @see https://nodejs.org/api/cli.html#node_extra_ca_certsfile
22
- */
23
- import { SIGNOZ_API_KEY, CIRCUIT_BREAKER, RATE_LIMITER, getSpanKind } from '../lib/constants.js';
24
- import { escapeFilterValueSafe, escapeLikeValueSafe, sanitizeIdentifier, } from '../lib/query-sanitizer.js';
25
- import { withSpan } from '../lib/instrumentation.js';
26
- import { recordQueryDuration, recordCircuitBreakerState, recordRateLimitRejection } from '../lib/metrics.js';
27
- import { Histogram } from '../lib/histogram.js';
28
- /**
29
- * Whitelist of safe path prefixes for backward compatibility
30
- * These are common patterns for SigNoz deployments and reverse proxies
31
- */
32
- const SAFE_PATH_PREFIXES = [
33
- '/v1/', // OTLP standard paths
34
- '/api/', // SigNoz API paths
35
- '/signoz/', // Common reverse proxy prefix
36
- '/query/', // Query service prefix
37
- ];
38
- /**
39
- * Validate and sanitize a URL to prevent SSRF attacks
40
- * Only allows HTTPS URLs to external hosts
41
- * Preserves whitelisted path prefixes for backward compatibility
42
- */
43
- function validateAndSanitizeUrl(url) {
44
- if (!url)
45
- return '';
46
- try {
47
- const parsed = new URL(url);
48
- // Only allow HTTPS protocol (prevent http://, file://, etc.)
49
- if (parsed.protocol !== 'https:') {
50
- console.error('[SECURITY] Invalid URL protocol - only HTTPS allowed');
51
- return '';
52
- }
53
- // Block internal/private network addresses (SSRF protection)
54
- const hostname = parsed.hostname.toLowerCase();
55
- // Normalize IPv6 for comparison (handles bracketed and various formats)
56
- // Strip zone IDs (e.g., fe80::1%eth0) to prevent SSRF bypass attempts
57
- const normalizedHost = hostname.replace(/^\[|\]$/g, '').split('%')[0];
58
- // Check for localhost variants (full 127.0.0.0/8 loopback range)
59
- if (normalizedHost === 'localhost' ||
60
- /^127\./.test(normalizedHost) || // Full 127.0.0.0/8 loopback range
61
- normalizedHost === '0.0.0.0' ||
62
- // IPv6 localhost variants
63
- normalizedHost === '::1' ||
64
- normalizedHost === '0:0:0:0:0:0:0:1' ||
65
- normalizedHost === '0000:0000:0000:0000:0000:0000:0000:0001' ||
66
- // IPv4-mapped IPv6 localhost (full loopback range)
67
- /^::ffff:127\./.test(normalizedHost) ||
68
- normalizedHost === '::ffff:7f00:1' ||
69
- // .localhost TLD (reserved for localhost)
70
- normalizedHost.endsWith('.localhost')) {
71
- console.error('[SECURITY] Localhost addresses not allowed for SigNoz URL');
72
- return '';
73
- }
74
- // Check for cloud metadata endpoints (169.254.0.0/16 link-local)
75
- // AWS: 169.254.169.254, GCP: 169.254.169.254, Azure: 169.254.169.254
76
- if (/^169\.254\./.test(normalizedHost) ||
77
- /^::ffff:169\.254\./.test(normalizedHost)) {
78
- console.error('[SECURITY] Cloud metadata addresses not allowed for SigNoz URL');
79
- return '';
80
- }
81
- // Check for private network ranges
82
- if (normalizedHost.startsWith('192.168.') ||
83
- normalizedHost.startsWith('10.') ||
84
- /^172\.(1[6-9]|2[0-9]|3[0-1])\./.test(normalizedHost) ||
85
- // IPv6 private ranges
86
- normalizedHost.startsWith('fc') || // Unique local addresses fc00::/7
87
- normalizedHost.startsWith('fd') || // Unique local addresses
88
- normalizedHost.startsWith('fe80') || // Link-local addresses
89
- // IPv4-mapped private ranges
90
- normalizedHost.startsWith('::ffff:192.168.') ||
91
- normalizedHost.startsWith('::ffff:10.') ||
92
- /^::ffff:172\.(1[6-9]|2[0-9]|3[0-1])\./.test(normalizedHost)) {
93
- console.error('[SECURITY] Private network addresses not allowed for SigNoz URL');
94
- return '';
95
- }
96
- // Check for reserved domain suffixes
97
- if (normalizedHost.endsWith('.local') ||
98
- normalizedHost.endsWith('.internal') ||
99
- normalizedHost.endsWith('.localdomain') ||
100
- normalizedHost.endsWith('.home.arpa') // RFC 8375 home network
101
- ) {
102
- console.error('[SECURITY] Reserved domain names not allowed for SigNoz URL');
103
- return '';
104
- }
105
- // Check if path starts with a whitelisted prefix
106
- const path = parsed.pathname;
107
- const hasWhitelistedPath = SAFE_PATH_PREFIXES.some(prefix => path.startsWith(prefix));
108
- if (hasWhitelistedPath) {
109
- // Preserve whitelisted path, but strip query params and fragment for safety
110
- return `${parsed.origin}${path}`;
111
- }
112
- // Return origin only for non-whitelisted paths (strips path, query, fragment)
113
- return parsed.origin;
114
- }
115
- catch (error) {
116
- console.error('[SECURITY] Invalid SIGNOZ_QUERY_URL format');
117
- return '';
118
- }
119
- }
120
- // SigNoz Query API URL (separate from ingest URL) - validated for SSRF protection
121
- const SIGNOZ_QUERY_URL = validateAndSanitizeUrl(process.env.SIGNOZ_QUERY_URL || '');
122
- function startTiming() {
123
- const start = performance.now();
124
- return {
125
- end: () => performance.now() - start
126
- };
127
- }
128
- const SLOW_QUERY_THRESHOLD_MS = 500;
129
- /** Maximum hours ago for timestamp queries (1 year) */
130
- const MAX_HOURS_AGO = 8760;
131
- /** Default timeout for HTTP requests (30 seconds) */
132
- const DEFAULT_TIMEOUT_MS = 30000;
133
- /**
134
- * Token bucket rate limiter to prevent API abuse
135
- * Allows burst traffic up to maxTokens, then refills at refillRate tokens/second
136
- */
137
- export class TokenBucketRateLimiter {
138
- tokens;
139
- lastRefill;
140
- maxTokens;
141
- refillRate;
142
- constructor(maxTokens, refillRate) {
143
- this.maxTokens = maxTokens ?? RATE_LIMITER.MAX_TOKENS;
144
- this.refillRate = refillRate ?? RATE_LIMITER.REFILL_RATE;
145
- this.tokens = this.maxTokens;
146
- this.lastRefill = Date.now();
147
- }
148
- /**
149
- * Refill tokens based on elapsed time.
150
- *
151
- * M2: Caps elapsed time to prevent precision loss in long-running processes.
152
- * For default config (100 tokens at 1 token/sec), the cap is 100 seconds.
153
- * This prevents numeric overflow when process sits idle for hours/days.
154
- */
155
- refill() {
156
- const now = Date.now();
157
- // Cap elapsed time to bucket refill duration: maxTokens / refillRate seconds
158
- // Example: 100 tokens / 1 token/sec = 100 seconds max useful elapsed time
159
- // Beyond this, bucket would be full anyway, so additional time is irrelevant
160
- const maxUsefulElapsedMs = (this.maxTokens / this.refillRate) * 1000;
161
- const elapsedMs = Math.min(now - this.lastRefill, maxUsefulElapsedMs);
162
- const tokensToAdd = Math.floor((elapsedMs / 1000) * this.refillRate);
163
- if (tokensToAdd > 0) {
164
- this.tokens = Math.min(this.maxTokens, this.tokens + tokensToAdd);
165
- this.lastRefill = now;
166
- }
167
- }
168
- /**
169
- * Try to consume a token. Returns true if allowed, false if rate limited.
170
- */
171
- tryConsume() {
172
- this.refill();
173
- if (this.tokens > 0) {
174
- this.tokens--;
175
- return true;
176
- }
177
- console.warn(`[obs-toolkit] Rate limit exceeded (0/${this.maxTokens} tokens available)`);
178
- return false;
179
- }
180
- /**
181
- * Get current available tokens (for monitoring/testing)
182
- */
183
- getAvailableTokens() {
184
- this.refill();
185
- return this.tokens;
186
- }
187
- /**
188
- * Refund a single token (used when request is rejected by circuit breaker)
189
- * This prevents the circuit breaker from consuming rate limit tokens for requests it blocks
190
- */
191
- refund() {
192
- this.tokens = Math.min(this.maxTokens, this.tokens + 1);
193
- }
194
- /**
195
- * Reset the rate limiter to full capacity (for testing only)
196
- */
197
- reset() {
198
- this.tokens = this.maxTokens;
199
- this.lastRefill = Date.now();
200
- }
201
- }
202
- /**
203
- * Simple circuit breaker for API calls with integrated rate limiting
204
- */
205
- class ApiCircuitBreaker {
206
- failures = 0;
207
- lastFailure = 0;
208
- state = 'closed';
209
- rateLimiter;
210
- /** Prevents multiple concurrent requests during half-open state */
211
- halfOpenRequestInFlight = false;
212
- maxFailures;
213
- resetMs;
214
- constructor() {
215
- this.maxFailures = CIRCUIT_BREAKER.MAX_FAILURES;
216
- this.resetMs = CIRCUIT_BREAKER.RESET_MS;
217
- this.rateLimiter = new TokenBucketRateLimiter();
218
- }
219
- canRequest() {
220
- // Check rate limit first
221
- if (!this.rateLimiter.tryConsume()) {
222
- recordRateLimitRejection('signoz-api');
223
- return false;
224
- }
225
- if (this.state === 'open') {
226
- if (Date.now() - this.lastFailure > this.resetMs) {
227
- // Prevent race condition: only allow one request through during half-open
228
- if (this.halfOpenRequestInFlight) {
229
- this.rateLimiter.refund();
230
- return false; // Another half-open request is already testing
231
- }
232
- this.halfOpenRequestInFlight = true;
233
- console.info(`[obs-toolkit] Circuit breaker entering HALF-OPEN state (reset timeout elapsed)`);
234
- this.state = 'half-open';
235
- recordCircuitBreakerState('signoz-api', 'half-open');
236
- return true;
237
- }
238
- // Refund the single consumed token since we're not making the request
239
- this.rateLimiter.refund();
240
- return false;
241
- }
242
- // In half-open state, reject if a request is already in flight
243
- if (this.state === 'half-open' && this.halfOpenRequestInFlight) {
244
- this.rateLimiter.refund();
245
- return false;
246
- }
247
- return true;
248
- }
249
- recordSuccess() {
250
- this.halfOpenRequestInFlight = false;
251
- const wasHalfOpen = this.state === 'half-open';
252
- if (wasHalfOpen) {
253
- console.info(`[obs-toolkit] Circuit breaker CLOSED after successful request`);
254
- }
255
- this.failures = 0;
256
- this.state = 'closed';
257
- if (wasHalfOpen) {
258
- recordCircuitBreakerState('signoz-api', 'closed');
259
- }
260
- }
261
- recordFailure() {
262
- this.halfOpenRequestInFlight = false;
263
- this.failures++;
264
- this.lastFailure = Date.now();
265
- if (this.failures >= this.maxFailures && this.state !== 'open') {
266
- const previousState = this.state;
267
- this.state = 'open';
268
- console.warn(`[obs-toolkit] Circuit breaker OPENED after ${this.failures} consecutive failures (was: ${previousState})`);
269
- recordCircuitBreakerState('signoz-api', 'open');
270
- }
271
- }
272
- getState() {
273
- return this.state;
274
- }
275
- /**
276
- * Check if rate limited (for health check reporting)
277
- */
278
- isRateLimited() {
279
- return this.rateLimiter.getAvailableTokens() === 0;
280
- }
281
- /**
282
- * Get available tokens (for monitoring)
283
- */
284
- getAvailableTokens() {
285
- return this.rateLimiter.getAvailableTokens();
286
- }
287
- }
288
- /**
289
- * Encode cursor data to opaque base64 string
290
- */
291
- function encodeCursor(data) {
292
- return Buffer.from(JSON.stringify(data)).toString('base64');
293
- }
294
- /**
295
- * Decode cursor from base64 string, returns null on invalid cursor
296
- */
297
- function decodeCursor(cursor) {
298
- try {
299
- const decoded = Buffer.from(cursor, 'base64').toString('utf-8');
300
- const data = JSON.parse(decoded);
301
- if (typeof data.ts !== 'number' || typeof data.offset !== 'number') {
302
- return null;
303
- }
304
- return data;
305
- }
306
- catch {
307
- console.warn('[obs-toolkit] Invalid pagination cursor, resetting to start');
308
- return null;
309
- }
310
- }
311
- export class SigNozApiBackend {
312
- name = 'signoz-api';
313
- baseUrl;
314
- apiKey;
315
- circuitBreaker = new ApiCircuitBreaker();
316
- /** Histograms for tracking query latency per type */
317
- queryHistograms = {
318
- traces: new Histogram(),
319
- logs: new Histogram(),
320
- metrics: new Histogram(),
321
- };
322
- constructor(baseUrl, apiKey) {
323
- // Use SIGNOZ_QUERY_URL for queries - must be explicitly set
324
- // Cannot be derived from ingest URL (different domain pattern)
325
- // Example: SIGNOZ_QUERY_URL=https://your-tenant.us.signoz.cloud
326
- // Validate URL to prevent SSRF attacks
327
- const queryUrl = baseUrl ? validateAndSanitizeUrl(baseUrl) : SIGNOZ_QUERY_URL;
328
- this.baseUrl = queryUrl.replace(/\/+$/, '');
329
- this.apiKey = apiKey || SIGNOZ_API_KEY;
330
- }
331
- async fetch(path, options) {
332
- if (!this.baseUrl || !this.apiKey) {
333
- throw new Error('SigNoz Query URL or API key not configured. Set SIGNOZ_QUERY_URL and SIGNOZ_API_KEY');
334
- }
335
- if (!this.circuitBreaker.canRequest()) {
336
- // canRequest() returns false for both rate limiting and circuit breaker
337
- // Check which one triggered the rejection
338
- if (this.circuitBreaker.getState() === 'open') {
339
- throw new Error('Circuit breaker open - SigNoz API unavailable');
340
- }
341
- throw new Error('Rate limit exceeded - too many requests');
342
- }
343
- const url = `${this.baseUrl}${path}`;
344
- const headers = {
345
- 'SIGNOZ-API-KEY': this.apiKey,
346
- 'Content-Type': 'application/json',
347
- };
348
- // Create AbortController for timeout
349
- const controller = new AbortController();
350
- const timeoutId = setTimeout(() => controller.abort(), DEFAULT_TIMEOUT_MS);
351
- try {
352
- const response = await fetch(url, {
353
- ...options,
354
- headers: { ...headers, ...options?.headers },
355
- signal: controller.signal,
356
- });
357
- clearTimeout(timeoutId);
358
- if (!response.ok) {
359
- // Security: sanitize error message to avoid leaking internal system information
360
- // Log full error server-side, return sanitized message to client
361
- const text = await response.text();
362
- console.error(`SigNoz API error (${response.status}): ${text}`);
363
- throw new Error(`SigNoz API error: ${response.status} - Request failed`);
364
- }
365
- this.circuitBreaker.recordSuccess();
366
- // Validate Content-Type before parsing JSON (headers may be absent in test mocks)
367
- const contentType = response.headers?.get?.('content-type');
368
- if (contentType && !contentType.includes('application/json')) {
369
- // Security: Log full content-type server-side, return sanitized error
370
- console.error(`SigNoz API unexpected Content-Type: ${contentType}`);
371
- throw new Error('SigNoz API returned unexpected Content-Type');
372
- }
373
- return response.json();
374
- }
375
- catch (error) {
376
- clearTimeout(timeoutId);
377
- this.circuitBreaker.recordFailure();
378
- // Convert AbortError to timeout error for clarity
379
- if (error instanceof Error && error.name === 'AbortError') {
380
- throw new Error(`SigNoz API request timeout after ${DEFAULT_TIMEOUT_MS}ms`);
381
- }
382
- throw error;
383
- }
384
- }
385
- /**
386
- * Get millisecond timestamp for SigNoz v5 API queries
387
- * @param dateStr - Optional date string to parse
388
- * @param defaultHoursAgo - Hours ago for default timestamp (max 8760 = 1 year)
389
- */
390
- getMillisTime(dateStr, defaultHoursAgo = 1) {
391
- if (dateStr) {
392
- return new Date(dateStr).getTime();
393
- }
394
- // Clamp defaultHoursAgo to prevent integer overflow (max 1 year)
395
- const clampedHours = Math.min(Math.max(0, defaultHoursAgo), MAX_HOURS_AGO);
396
- return Date.now() - clampedHours * 60 * 60 * 1000;
397
- }
398
- async queryTraces(options) {
399
- return withSpan('obs_toolkit.query.traces', {
400
- 'obs_toolkit.query.type': 'traces',
401
- 'obs_toolkit.query.backend': 'signoz',
402
- 'obs_toolkit.query.limit': options.limit ?? 100,
403
- 'obs_toolkit.query.start_date': options.startDate,
404
- 'obs_toolkit.query.end_date': options.endDate,
405
- }, async (span) => {
406
- const timer = startTiming();
407
- const logTiming = () => {
408
- const durationMs = timer.end();
409
- recordQueryDuration('traces', durationMs, 'signoz');
410
- this.queryHistograms.traces.observe(durationMs);
411
- if (durationMs > SLOW_QUERY_THRESHOLD_MS) {
412
- console.warn(`[obs-toolkit] Slow query: queryTraces took ${durationMs.toFixed(1)}ms`);
413
- }
414
- };
415
- const start = this.getMillisTime(options.startDate, 1);
416
- const end = this.getMillisTime(options.endDate ? options.endDate + 'T23:59:59Z' : undefined, 0);
417
- const limit = options.limit || 100;
418
- // Build filter expression with input validation and escaping
419
- const filterParts = [];
420
- if (options.traceId) {
421
- filterParts.push(`traceID = '${escapeFilterValueSafe(options.traceId, 'traceId')}'`);
422
- }
423
- if (options.serviceName) {
424
- filterParts.push(`serviceName = '${escapeFilterValueSafe(options.serviceName, 'serviceName')}'`);
425
- }
426
- if (options.spanName) {
427
- filterParts.push(`name LIKE '%${escapeLikeValueSafe(options.spanName, 'spanName')}%'`);
428
- }
429
- if (options.minDurationMs) {
430
- filterParts.push(`durationNano >= ${options.minDurationMs * 1_000_000}`);
431
- }
432
- if (options.maxDurationMs) {
433
- filterParts.push(`durationNano <= ${options.maxDurationMs * 1_000_000}`);
434
- }
435
- // Build v5 API payload using builder_query
436
- const body = {
437
- start,
438
- end,
439
- requestType: 'raw',
440
- compositeQuery: {
441
- queries: [{
442
- type: 'builder_query',
443
- spec: {
444
- name: 'A',
445
- signal: 'traces',
446
- stepInterval: 60,
447
- aggregations: [],
448
- filter: filterParts.length > 0 ? { expression: filterParts.join(' AND ') } : undefined,
449
- selectFields: [
450
- { name: 'traceID' },
451
- { name: 'spanID' },
452
- { name: 'parentSpanID' },
453
- { name: 'name' },
454
- { name: 'serviceName' },
455
- { name: 'kind' },
456
- { name: 'durationNano' },
457
- { name: 'statusCode' },
458
- { name: 'statusMessage' },
459
- ],
460
- order: [{ key: { name: 'timestamp' }, direction: 'desc' }],
461
- limit,
462
- offset: 0,
463
- disabled: false,
464
- },
465
- }],
466
- },
467
- };
468
- try {
469
- const response = await this.fetch('/api/v5/query_range', {
470
- method: 'POST',
471
- body: JSON.stringify(body),
472
- });
473
- const results = [];
474
- for (const result of response.data?.data?.results || []) {
475
- for (const row of result.rows || []) {
476
- const d = row.data || {};
477
- results.push({
478
- traceId: String(d.trace_id || d.traceID || ''),
479
- spanId: String(d.span_id || d.spanID || ''),
480
- parentSpanId: d.parent_span_id || d.parentSpanID ? String(d.parent_span_id || d.parentSpanID) : undefined,
481
- name: String(d.name || ''),
482
- kind: getSpanKind(d.kind !== undefined ? Number(d.kind) : undefined),
483
- startTimeUnixNano: row.timestamp ? new Date(row.timestamp).getTime() * 1_000_000 : 0,
484
- durationMs: Number(d.duration_nano || d.durationNano || 0) / 1_000_000,
485
- status: d.response_status_code ? { code: Number(d.response_status_code), message: '' } : undefined,
486
- attributes: { serviceName: String(d['service.name'] || d.serviceName || '') },
487
- });
488
- }
489
- }
490
- logTiming();
491
- if (span)
492
- span.setAttribute('obs_toolkit.query.result_count', results.length);
493
- return results;
494
- }
495
- catch (error) {
496
- logTiming();
497
- if (error instanceof Error && (error.message.includes('Circuit breaker') || error.message.includes('Rate limit'))) {
498
- if (span)
499
- span.setAttribute('obs_toolkit.query.result_count', 0);
500
- return [];
501
- }
502
- throw error;
503
- }
504
- });
505
- }
506
- async queryLogs(options) {
507
- return withSpan('obs_toolkit.query.logs', {
508
- 'obs_toolkit.query.type': 'logs',
509
- 'obs_toolkit.query.backend': 'signoz',
510
- 'obs_toolkit.query.limit': options.limit ?? 100,
511
- 'obs_toolkit.query.start_date': options.startDate,
512
- 'obs_toolkit.query.end_date': options.endDate,
513
- }, async (span) => {
514
- const timer = startTiming();
515
- const logTiming = () => {
516
- const durationMs = timer.end();
517
- recordQueryDuration('logs', durationMs, 'signoz');
518
- this.queryHistograms.logs.observe(durationMs);
519
- if (durationMs > SLOW_QUERY_THRESHOLD_MS) {
520
- console.warn(`[obs-toolkit] Slow query: queryLogs took ${durationMs.toFixed(1)}ms`);
521
- }
522
- };
523
- const start = this.getMillisTime(options.startDate, 1);
524
- const end = this.getMillisTime(options.endDate ? options.endDate + 'T23:59:59Z' : undefined, 0);
525
- const limit = options.limit || 100;
526
- // Build filter expression with input validation and escaping
527
- const filterParts = [];
528
- if (options.severity) {
529
- filterParts.push(`severity_text = '${escapeFilterValueSafe(options.severity.toUpperCase(), 'severity')}'`);
530
- }
531
- if (options.traceId) {
532
- filterParts.push(`trace_id = '${escapeFilterValueSafe(options.traceId, 'traceId')}'`);
533
- }
534
- if (options.search) {
535
- filterParts.push(`body LIKE '%${escapeLikeValueSafe(options.search, 'search')}%'`);
536
- }
537
- // Build v5 API payload
538
- const body = {
539
- start,
540
- end,
541
- requestType: 'raw',
542
- compositeQuery: {
543
- queries: [{
544
- type: 'builder_query',
545
- spec: {
546
- name: 'A',
547
- signal: 'logs',
548
- stepInterval: 60,
549
- aggregations: [],
550
- filter: filterParts.length > 0 ? { expression: filterParts.join(' AND ') } : undefined,
551
- selectFields: [
552
- { name: 'timestamp' },
553
- { name: 'severity_text' },
554
- { name: 'body' },
555
- { name: 'trace_id' },
556
- { name: 'span_id' },
557
- ],
558
- order: [{ key: { name: 'timestamp' }, direction: 'desc' }],
559
- limit,
560
- offset: 0,
561
- disabled: false,
562
- },
563
- }],
564
- },
565
- };
566
- try {
567
- const response = await this.fetch('/api/v5/query_range', {
568
- method: 'POST',
569
- body: JSON.stringify(body),
570
- });
571
- const results = [];
572
- for (const result of response.data?.data?.results || []) {
573
- for (const row of result.rows || []) {
574
- const d = row.data || {};
575
- results.push({
576
- timestamp: row.timestamp || new Date().toISOString(),
577
- severity: d.severity_text || 'INFO',
578
- body: d.body || '',
579
- traceId: d.trace_id,
580
- spanId: d.span_id,
581
- attributes: d.attributes_string || {},
582
- });
583
- }
584
- }
585
- logTiming();
586
- if (span)
587
- span.setAttribute('obs_toolkit.query.result_count', results.length);
588
- return results;
589
- }
590
- catch (error) {
591
- logTiming();
592
- if (error instanceof Error && (error.message.includes('Circuit breaker') || error.message.includes('Rate limit'))) {
593
- if (span)
594
- span.setAttribute('obs_toolkit.query.result_count', 0);
595
- return [];
596
- }
597
- throw error;
598
- }
599
- });
600
- }
601
- async queryMetrics(options) {
602
- return withSpan('obs_toolkit.query.metrics', {
603
- 'obs_toolkit.query.type': 'metrics',
604
- 'obs_toolkit.query.backend': 'signoz',
605
- 'obs_toolkit.query.limit': options.limit ?? 100,
606
- 'obs_toolkit.query.start_date': options.startDate,
607
- 'obs_toolkit.query.end_date': options.endDate,
608
- }, async (span) => {
609
- const timer = startTiming();
610
- const logTiming = () => {
611
- const durationMs = timer.end();
612
- recordQueryDuration('metrics', durationMs, 'signoz');
613
- this.queryHistograms.metrics.observe(durationMs);
614
- if (durationMs > SLOW_QUERY_THRESHOLD_MS) {
615
- console.warn(`[obs-toolkit] Slow query: queryMetrics took ${durationMs.toFixed(1)}ms`);
616
- }
617
- };
618
- const start = this.getMillisTime(options.startDate, 1);
619
- const end = this.getMillisTime(options.endDate ? options.endDate + 'T23:59:59Z' : undefined, 0);
620
- if (!options.metricName) {
621
- throw new Error('metricName is required for SigNoz metric queries');
622
- }
623
- // Sanitize metric name (identifiers allow alphanumeric, underscore, dot)
624
- const sanitizedMetricName = sanitizeIdentifier(options.metricName);
625
- if (!sanitizedMetricName) {
626
- throw new Error('Invalid metricName: must contain alphanumeric characters');
627
- }
628
- // Map aggregation options to SigNoz format
629
- // Percentiles: p50, p95, p99 map to SigNoz percentile functions
630
- // rate: maps to SigNoz rate aggregation
631
- const spaceAggMap = {
632
- 'sum': 'sum', 'avg': 'avg', 'min': 'min', 'max': 'max', 'count': 'sum',
633
- 'p50': 'p50', 'p95': 'p95', 'p99': 'p99', 'rate': 'rate',
634
- };
635
- const spaceAgg = spaceAggMap[options.aggregation || 'sum'] || 'sum';
636
- // Sanitize groupBy identifiers
637
- const sanitizedGroupBy = (options.groupBy || []).map(g => sanitizeIdentifier(g)).filter(g => g);
638
- // Build v5 API payload for metrics
639
- const body = {
640
- start,
641
- end,
642
- requestType: 'time_series',
643
- compositeQuery: {
644
- queries: [{
645
- type: 'builder_query',
646
- spec: {
647
- name: 'A',
648
- signal: 'metrics',
649
- stepInterval: 60,
650
- aggregations: [{
651
- metricName: sanitizedMetricName,
652
- timeAggregation: 'rate',
653
- spaceAggregation: spaceAgg,
654
- }],
655
- groupBy: sanitizedGroupBy.map(g => ({ name: g })),
656
- order: [],
657
- limit: options.limit || 100,
658
- offset: 0,
659
- disabled: false,
660
- },
661
- }],
662
- },
663
- };
664
- try {
665
- const response = await this.fetch('/api/v5/query_range', {
666
- method: 'POST',
667
- body: JSON.stringify(body),
668
- });
669
- const results = [];
670
- for (const result of response.data?.data?.results || []) {
671
- for (const agg of result.aggregations || []) {
672
- for (const series of agg.series || []) {
673
- for (const point of series.values || []) {
674
- results.push({
675
- timestamp: new Date(point.timestamp).toISOString(),
676
- name: options.metricName,
677
- value: point.value,
678
- attributes: series.labels,
679
- });
680
- }
681
- }
682
- }
683
- }
684
- logTiming();
685
- const sliced = results.slice(0, options.limit || 100);
686
- if (span)
687
- span.setAttribute('obs_toolkit.query.result_count', sliced.length);
688
- return sliced;
689
- }
690
- catch (error) {
691
- logTiming();
692
- if (error instanceof Error && (error.message.includes('Circuit breaker') || error.message.includes('Rate limit'))) {
693
- if (span)
694
- span.setAttribute('obs_toolkit.query.result_count', 0);
695
- return [];
696
- }
697
- throw error;
698
- }
699
- });
700
- }
701
- /**
702
- * Query traces with cursor-based pagination
703
- */
704
- async queryTracesPaginated(options) {
705
- return withSpan('obs_toolkit.query.traces_paginated', {
706
- 'obs_toolkit.query.type': 'traces_paginated',
707
- 'obs_toolkit.query.backend': 'signoz',
708
- 'obs_toolkit.query.limit': options.limit ?? 100,
709
- 'obs_toolkit.query.start_date': options.startDate,
710
- 'obs_toolkit.query.end_date': options.endDate,
711
- }, async (span) => {
712
- const limit = options.limit || 100;
713
- // Decode cursor if provided
714
- let cursorData = null;
715
- if (options.cursor) {
716
- cursorData = decodeCursor(options.cursor);
717
- }
718
- // Adjust start time based on cursor (query from last seen timestamp)
719
- const start = cursorData
720
- ? cursorData.ts
721
- : this.getMillisTime(options.startDate, 1);
722
- const end = this.getMillisTime(options.endDate ? options.endDate + 'T23:59:59Z' : undefined, 0);
723
- // Calculate offset based on cursor
724
- const offset = cursorData?.offset || options.offset || 0;
725
- // Build filter expression with input validation and escaping
726
- const filterParts = [];
727
- if (options.traceId) {
728
- filterParts.push(`traceID = '${escapeFilterValueSafe(options.traceId, 'traceId')}'`);
729
- }
730
- if (options.serviceName) {
731
- filterParts.push(`serviceName = '${escapeFilterValueSafe(options.serviceName, 'serviceName')}'`);
732
- }
733
- if (options.spanName) {
734
- filterParts.push(`name LIKE '%${escapeLikeValueSafe(options.spanName, 'spanName')}%'`);
735
- }
736
- if (options.minDurationMs) {
737
- filterParts.push(`durationNano >= ${options.minDurationMs * 1_000_000}`);
738
- }
739
- if (options.maxDurationMs) {
740
- filterParts.push(`durationNano <= ${options.maxDurationMs * 1_000_000}`);
741
- }
742
- // Request limit + 1 to detect if there are more results
743
- const requestLimit = limit + 1;
744
- // Build v5 API payload using builder_query
745
- const body = {
746
- start,
747
- end,
748
- requestType: 'raw',
749
- compositeQuery: {
750
- queries: [{
751
- type: 'builder_query',
752
- spec: {
753
- name: 'A',
754
- signal: 'traces',
755
- stepInterval: 60,
756
- aggregations: [],
757
- filter: filterParts.length > 0 ? { expression: filterParts.join(' AND ') } : undefined,
758
- selectFields: [
759
- { name: 'traceID' },
760
- { name: 'spanID' },
761
- { name: 'parentSpanID' },
762
- { name: 'name' },
763
- { name: 'serviceName' },
764
- { name: 'kind' },
765
- { name: 'durationNano' },
766
- { name: 'statusCode' },
767
- { name: 'statusMessage' },
768
- ],
769
- order: [{ key: { name: 'timestamp' }, direction: 'desc' }],
770
- limit: requestLimit,
771
- offset,
772
- disabled: false,
773
- },
774
- }],
775
- },
776
- };
777
- try {
778
- const response = await this.fetch('/api/v5/query_range', {
779
- method: 'POST',
780
- body: JSON.stringify(body),
781
- });
782
- const results = [];
783
- for (const result of response.data?.data?.results || []) {
784
- for (const row of result.rows || []) {
785
- const d = row.data || {};
786
- const ts = row.timestamp ? new Date(row.timestamp).getTime() : 0;
787
- results.push({
788
- traceId: String(d.trace_id || d.traceID || ''),
789
- spanId: String(d.span_id || d.spanID || ''),
790
- parentSpanId: d.parent_span_id || d.parentSpanID ? String(d.parent_span_id || d.parentSpanID) : undefined,
791
- name: String(d.name || ''),
792
- kind: getSpanKind(d.kind !== undefined ? Number(d.kind) : undefined),
793
- startTimeUnixNano: ts * 1_000_000,
794
- durationMs: Number(d.duration_nano || d.durationNano || 0) / 1_000_000,
795
- status: d.response_status_code ? { code: Number(d.response_status_code), message: '' } : undefined,
796
- attributes: { serviceName: String(d['service.name'] || d.serviceName || '') },
797
- });
798
- }
799
- }
800
- // Determine if there are more results
801
- const hasMore = results.length > limit;
802
- const data = hasMore ? results.slice(0, limit) : results;
803
- // Generate next cursor if there are more results
804
- let nextCursor;
805
- if (hasMore && data.length > 0) {
806
- const lastItem = data[data.length - 1];
807
- const lastTs = lastItem.startTimeUnixNano / 1_000_000; // Convert back to ms
808
- nextCursor = encodeCursor({ ts: lastTs, offset: offset + limit });
809
- }
810
- if (span)
811
- span.setAttribute('obs_toolkit.query.result_count', data.length);
812
- return { data, nextCursor, hasMore };
813
- }
814
- catch (error) {
815
- if (error instanceof Error && (error.message.includes('Circuit breaker') || error.message.includes('Rate limit'))) {
816
- if (span)
817
- span.setAttribute('obs_toolkit.query.result_count', 0);
818
- return { data: [], hasMore: false };
819
- }
820
- throw error;
821
- }
822
- });
823
- }
824
- /**
825
- * Query logs with cursor-based pagination
826
- */
827
- async queryLogsPaginated(options) {
828
- return withSpan('obs_toolkit.query.logs_paginated', {
829
- 'obs_toolkit.query.type': 'logs_paginated',
830
- 'obs_toolkit.query.backend': 'signoz',
831
- 'obs_toolkit.query.limit': options.limit ?? 100,
832
- 'obs_toolkit.query.start_date': options.startDate,
833
- 'obs_toolkit.query.end_date': options.endDate,
834
- }, async (span) => {
835
- const limit = options.limit || 100;
836
- // Decode cursor if provided
837
- let cursorData = null;
838
- if (options.cursor) {
839
- cursorData = decodeCursor(options.cursor);
840
- }
841
- // Adjust start time based on cursor (query from last seen timestamp)
842
- const start = cursorData
843
- ? cursorData.ts
844
- : this.getMillisTime(options.startDate, 1);
845
- const end = this.getMillisTime(options.endDate ? options.endDate + 'T23:59:59Z' : undefined, 0);
846
- // Calculate offset based on cursor
847
- const offset = cursorData?.offset || options.offset || 0;
848
- // Build filter expression with input validation and escaping
849
- const filterParts = [];
850
- if (options.severity) {
851
- filterParts.push(`severity_text = '${escapeFilterValueSafe(options.severity.toUpperCase(), 'severity')}'`);
852
- }
853
- if (options.traceId) {
854
- filterParts.push(`trace_id = '${escapeFilterValueSafe(options.traceId, 'traceId')}'`);
855
- }
856
- if (options.search) {
857
- filterParts.push(`body LIKE '%${escapeLikeValueSafe(options.search, 'search')}%'`);
858
- }
859
- // Request limit + 1 to detect if there are more results
860
- const requestLimit = limit + 1;
861
- // Build v5 API payload
862
- const body = {
863
- start,
864
- end,
865
- requestType: 'raw',
866
- compositeQuery: {
867
- queries: [{
868
- type: 'builder_query',
869
- spec: {
870
- name: 'A',
871
- signal: 'logs',
872
- stepInterval: 60,
873
- aggregations: [],
874
- filter: filterParts.length > 0 ? { expression: filterParts.join(' AND ') } : undefined,
875
- selectFields: [
876
- { name: 'timestamp' },
877
- { name: 'severity_text' },
878
- { name: 'body' },
879
- { name: 'trace_id' },
880
- { name: 'span_id' },
881
- ],
882
- order: [{ key: { name: 'timestamp' }, direction: 'desc' }],
883
- limit: requestLimit,
884
- offset,
885
- disabled: false,
886
- },
887
- }],
888
- },
889
- };
890
- try {
891
- const response = await this.fetch('/api/v5/query_range', {
892
- method: 'POST',
893
- body: JSON.stringify(body),
894
- });
895
- const results = [];
896
- for (const result of response.data?.data?.results || []) {
897
- for (const row of result.rows || []) {
898
- const d = row.data || {};
899
- const timestamp = row.timestamp || new Date().toISOString();
900
- results.push({
901
- timestamp,
902
- severity: d.severity_text || 'INFO',
903
- body: d.body || '',
904
- traceId: d.trace_id,
905
- spanId: d.span_id,
906
- attributes: d.attributes_string || {},
907
- });
908
- }
909
- }
910
- // Determine if there are more results
911
- const hasMore = results.length > limit;
912
- const data = hasMore ? results.slice(0, limit) : results;
913
- // Generate next cursor if there are more results
914
- let nextCursor;
915
- if (hasMore && data.length > 0) {
916
- const lastItem = data[data.length - 1];
917
- const lastTs = new Date(lastItem.timestamp).getTime();
918
- nextCursor = encodeCursor({ ts: lastTs, offset: offset + limit });
919
- }
920
- if (span)
921
- span.setAttribute('obs_toolkit.query.result_count', data.length);
922
- return { data, nextCursor, hasMore };
923
- }
924
- catch (error) {
925
- if (error instanceof Error && (error.message.includes('Circuit breaker') || error.message.includes('Rate limit'))) {
926
- if (span)
927
- span.setAttribute('obs_toolkit.query.result_count', 0);
928
- return { data: [], hasMore: false };
929
- }
930
- throw error;
931
- }
932
- });
933
- }
934
- /**
935
- * Query metrics with cursor-based pagination
936
- */
937
- async queryMetricsPaginated(options) {
938
- return withSpan('obs_toolkit.query.metrics_paginated', {
939
- 'obs_toolkit.query.type': 'metrics_paginated',
940
- 'obs_toolkit.query.backend': 'signoz',
941
- 'obs_toolkit.query.limit': options.limit ?? 100,
942
- 'obs_toolkit.query.start_date': options.startDate,
943
- 'obs_toolkit.query.end_date': options.endDate,
944
- }, async (span) => {
945
- const limit = options.limit || 100;
946
- // Decode cursor if provided
947
- let cursorData = null;
948
- if (options.cursor) {
949
- cursorData = decodeCursor(options.cursor);
950
- }
951
- // Adjust start time based on cursor
952
- const start = cursorData
953
- ? cursorData.ts
954
- : this.getMillisTime(options.startDate, 1);
955
- const end = this.getMillisTime(options.endDate ? options.endDate + 'T23:59:59Z' : undefined, 0);
956
- if (!options.metricName) {
957
- throw new Error('metricName is required for SigNoz metric queries');
958
- }
959
- // Sanitize metric name (identifiers allow alphanumeric, underscore, dot)
960
- const sanitizedMetricName = sanitizeIdentifier(options.metricName);
961
- if (!sanitizedMetricName) {
962
- throw new Error('Invalid metricName: must contain alphanumeric characters');
963
- }
964
- // Map aggregation options to SigNoz format
965
- // Percentiles: p50, p95, p99 map to SigNoz percentile functions
966
- // rate: maps to SigNoz rate aggregation
967
- const spaceAggMap = {
968
- 'sum': 'sum', 'avg': 'avg', 'min': 'min', 'max': 'max', 'count': 'sum',
969
- 'p50': 'p50', 'p95': 'p95', 'p99': 'p99', 'rate': 'rate',
970
- };
971
- const spaceAgg = spaceAggMap[options.aggregation || 'sum'] || 'sum';
972
- // Sanitize groupBy identifiers
973
- const sanitizedGroupBy = (options.groupBy || []).map(g => sanitizeIdentifier(g)).filter(g => g);
974
- // Calculate offset based on cursor
975
- const offset = cursorData?.offset || options.offset || 0;
976
- // Request limit + 1 to detect if there are more results
977
- const requestLimit = limit + 1;
978
- // Build v5 API payload for metrics
979
- const body = {
980
- start,
981
- end,
982
- requestType: 'time_series',
983
- compositeQuery: {
984
- queries: [{
985
- type: 'builder_query',
986
- spec: {
987
- name: 'A',
988
- signal: 'metrics',
989
- stepInterval: 60,
990
- aggregations: [{
991
- metricName: sanitizedMetricName,
992
- timeAggregation: 'rate',
993
- spaceAggregation: spaceAgg,
994
- }],
995
- groupBy: sanitizedGroupBy.map(g => ({ name: g })),
996
- order: [],
997
- limit: requestLimit,
998
- offset,
999
- disabled: false,
1000
- },
1001
- }],
1002
- },
1003
- };
1004
- try {
1005
- const response = await this.fetch('/api/v5/query_range', {
1006
- method: 'POST',
1007
- body: JSON.stringify(body),
1008
- });
1009
- const results = [];
1010
- for (const result of response.data?.data?.results || []) {
1011
- for (const agg of result.aggregations || []) {
1012
- for (const series of agg.series || []) {
1013
- for (const point of series.values || []) {
1014
- results.push({
1015
- timestamp: new Date(point.timestamp).toISOString(),
1016
- name: options.metricName,
1017
- value: point.value,
1018
- attributes: series.labels,
1019
- });
1020
- }
1021
- }
1022
- }
1023
- }
1024
- // Determine if there are more results
1025
- const hasMore = results.length > limit;
1026
- const data = hasMore ? results.slice(0, limit) : results;
1027
- // Generate next cursor if there are more results
1028
- let nextCursor;
1029
- if (hasMore && data.length > 0) {
1030
- const lastItem = data[data.length - 1];
1031
- const lastTs = new Date(lastItem.timestamp).getTime();
1032
- nextCursor = encodeCursor({ ts: lastTs, offset: offset + limit });
1033
- }
1034
- if (span)
1035
- span.setAttribute('obs_toolkit.query.result_count', data.length);
1036
- return { data, nextCursor, hasMore };
1037
- }
1038
- catch (error) {
1039
- if (error instanceof Error && (error.message.includes('Circuit breaker') || error.message.includes('Rate limit'))) {
1040
- if (span)
1041
- span.setAttribute('obs_toolkit.query.result_count', 0);
1042
- return { data: [], hasMore: false };
1043
- }
1044
- throw error;
1045
- }
1046
- });
1047
- }
1048
- /**
1049
- * Get query latency statistics per query type
1050
- */
1051
- getQueryStats() {
1052
- return {
1053
- traces: this.queryHistograms.traces.getStats(),
1054
- logs: this.queryHistograms.logs.getStats(),
1055
- metrics: this.queryHistograms.metrics.getStats(),
1056
- };
1057
- }
1058
- /**
1059
- * Reset query latency histograms (useful for testing)
1060
- */
1061
- resetQueryStats() {
1062
- this.queryHistograms.traces.reset();
1063
- this.queryHistograms.logs.reset();
1064
- this.queryHistograms.metrics.reset();
1065
- }
1066
- async healthCheck() {
1067
- if (!this.baseUrl) {
1068
- return { status: 'error', message: 'SigNoz Query URL not configured. Set SIGNOZ_QUERY_URL', configured: false };
1069
- }
1070
- if (!this.apiKey) {
1071
- return { status: 'error', message: 'SigNoz API key not configured. Set SIGNOZ_API_KEY', configured: false };
1072
- }
1073
- if (this.circuitBreaker.getState() === 'open') {
1074
- return { status: 'error', message: 'Circuit breaker open - API temporarily unavailable', configured: true };
1075
- }
1076
- if (this.circuitBreaker.isRateLimited()) {
1077
- return { status: 'error', message: 'Rate limit exceeded - too many requests', configured: true };
1078
- }
1079
- try {
1080
- // Try a simple query as health check - query last 5 minutes of traces
1081
- const body = {
1082
- start: Date.now() - 5 * 60 * 1000,
1083
- end: Date.now(),
1084
- requestType: 'raw',
1085
- compositeQuery: {
1086
- queries: [{
1087
- type: 'builder_query',
1088
- spec: {
1089
- name: 'A',
1090
- signal: 'traces',
1091
- stepInterval: 60,
1092
- aggregations: [],
1093
- limit: 1,
1094
- offset: 0,
1095
- disabled: false,
1096
- },
1097
- }],
1098
- },
1099
- };
1100
- const response = await this.fetch('/api/v5/query_range', {
1101
- method: 'POST',
1102
- body: JSON.stringify(body),
1103
- });
1104
- if (response.status === 'success') {
1105
- return { status: 'ok', message: `Connected to ${this.baseUrl}`, configured: true };
1106
- }
1107
- return { status: 'error', message: 'Unexpected response from SigNoz API', configured: true };
1108
- }
1109
- catch (error) {
1110
- // Security: sanitize error messages - known safe errors pass through,
1111
- // others get a generic message to prevent information disclosure
1112
- const message = error instanceof Error ? error.message : 'Unknown error';
1113
- const isSafeMessage = message.includes('Circuit breaker') ||
1114
- message.includes('Rate limit') ||
1115
- message.includes('SigNoz') ||
1116
- message.includes('API');
1117
- return {
1118
- status: 'error',
1119
- message: isSafeMessage ? message : 'Connection failed',
1120
- configured: true,
1121
- };
1122
- }
1123
- }
1124
- /**
1125
- * Get SigNoz trace viewer URL for a trace ID
1126
- */
1127
- getTraceUrl(traceId) {
1128
- // The query API URL is already the correct format for the UI
1129
- return `${this.baseUrl}/trace/${traceId}`;
1130
- }
1131
- }
1132
- //# sourceMappingURL=signoz-api.js.map