observability-toolkit 1.8.5 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1168) hide show
  1. package/README.md +167 -281
  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 +672 -236
  19. package/dist/backends/index.d.ts.map +1 -1
  20. package/dist/backends/index.js +334 -0
  21. package/dist/backends/index.js.map +1 -1
  22. package/dist/backends/index.test.js +606 -31
  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 +64 -5
  45. package/dist/backends/local-jsonl.d.ts.map +1 -1
  46. package/dist/backends/local-jsonl.js +1821 -612
  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 +5 -0
  97. package/dist/lib/agent-judge/agent-as-judge.test.d.ts.map +1 -0
  98. package/dist/lib/agent-judge/agent-as-judge.test.js +839 -0
  99. package/dist/lib/agent-judge/agent-as-judge.test.js.map +1 -0
  100. package/dist/lib/agent-judge/agent-eval-metrics.d.ts +293 -0
  101. package/dist/lib/agent-judge/agent-eval-metrics.d.ts.map +1 -0
  102. package/dist/lib/agent-judge/agent-eval-metrics.js +715 -0
  103. package/dist/lib/agent-judge/agent-eval-metrics.js.map +1 -0
  104. package/dist/lib/agent-judge/agent-eval-metrics.test.d.ts +5 -0
  105. package/dist/lib/agent-judge/agent-eval-metrics.test.d.ts.map +1 -0
  106. package/dist/lib/agent-judge/agent-eval-metrics.test.js +676 -0
  107. package/dist/lib/agent-judge/agent-eval-metrics.test.js.map +1 -0
  108. package/dist/lib/agent-judge/agent-judge-classes.d.ts +95 -0
  109. package/dist/lib/agent-judge/agent-judge-classes.d.ts.map +1 -0
  110. package/dist/lib/agent-judge/agent-judge-classes.js +222 -0
  111. package/dist/lib/agent-judge/agent-judge-classes.js.map +1 -0
  112. package/dist/lib/agent-judge/agent-judge-classes.test.d.ts +6 -0
  113. package/dist/lib/agent-judge/agent-judge-classes.test.d.ts.map +1 -0
  114. package/dist/lib/agent-judge/agent-judge-classes.test.js +271 -0
  115. package/dist/lib/agent-judge/agent-judge-classes.test.js.map +1 -0
  116. package/dist/lib/agent-judge/agent-judge-consensus.d.ts +58 -0
  117. package/dist/lib/agent-judge/agent-judge-consensus.d.ts.map +1 -0
  118. package/dist/lib/agent-judge/agent-judge-consensus.js +149 -0
  119. package/dist/lib/agent-judge/agent-judge-consensus.js.map +1 -0
  120. package/dist/lib/agent-judge/agent-judge-consensus.test.d.ts +2 -0
  121. package/dist/lib/agent-judge/agent-judge-consensus.test.d.ts.map +1 -0
  122. package/dist/lib/agent-judge/agent-judge-consensus.test.js +170 -0
  123. package/dist/lib/agent-judge/agent-judge-consensus.test.js.map +1 -0
  124. package/dist/lib/agent-judge/agent-judge-verification.d.ts +89 -0
  125. package/dist/lib/agent-judge/agent-judge-verification.d.ts.map +1 -0
  126. package/dist/lib/agent-judge/agent-judge-verification.js +235 -0
  127. package/dist/lib/agent-judge/agent-judge-verification.js.map +1 -0
  128. package/dist/lib/agent-judge/agent-judge-verification.test.d.ts +5 -0
  129. package/dist/lib/agent-judge/agent-judge-verification.test.d.ts.map +1 -0
  130. package/dist/lib/agent-judge/agent-judge-verification.test.js +399 -0
  131. package/dist/lib/agent-judge/agent-judge-verification.test.js.map +1 -0
  132. package/dist/lib/audit/agent-auditor-scoring.d.ts +167 -0
  133. package/dist/lib/audit/agent-auditor-scoring.d.ts.map +1 -0
  134. package/dist/lib/audit/agent-auditor-scoring.js +338 -0
  135. package/dist/lib/audit/agent-auditor-scoring.js.map +1 -0
  136. package/dist/lib/audit/agent-auditor-scoring.test.d.ts +2 -0
  137. package/dist/lib/audit/agent-auditor-scoring.test.d.ts.map +1 -0
  138. package/dist/lib/audit/agent-auditor-scoring.test.js +576 -0
  139. package/dist/lib/audit/agent-auditor-scoring.test.js.map +1 -0
  140. package/dist/lib/audit/audit-record.d.ts +139 -0
  141. package/dist/lib/audit/audit-record.d.ts.map +1 -0
  142. package/dist/lib/audit/audit-record.js +288 -0
  143. package/dist/lib/audit/audit-record.js.map +1 -0
  144. package/dist/lib/audit/audit-record.test.d.ts +5 -0
  145. package/dist/lib/audit/audit-record.test.d.ts.map +1 -0
  146. package/dist/lib/audit/audit-record.test.js +258 -0
  147. package/dist/lib/audit/audit-record.test.js.map +1 -0
  148. package/dist/lib/audit/audit-scoring-constants.d.ts +57 -0
  149. package/dist/lib/audit/audit-scoring-constants.d.ts.map +1 -0
  150. package/dist/lib/audit/audit-scoring-constants.js +59 -0
  151. package/dist/lib/audit/audit-scoring-constants.js.map +1 -0
  152. package/dist/lib/audit/compliance-report.d.ts +125 -0
  153. package/dist/lib/audit/compliance-report.d.ts.map +1 -0
  154. package/dist/lib/audit/compliance-report.js +205 -0
  155. package/dist/lib/audit/compliance-report.js.map +1 -0
  156. package/dist/lib/audit/compliance-report.test.d.ts +5 -0
  157. package/dist/lib/audit/compliance-report.test.d.ts.map +1 -0
  158. package/dist/lib/audit/compliance-report.test.js +290 -0
  159. package/dist/lib/audit/compliance-report.test.js.map +1 -0
  160. package/dist/lib/audit/retention-guard.d.ts +41 -0
  161. package/dist/lib/audit/retention-guard.d.ts.map +1 -0
  162. package/dist/lib/audit/retention-guard.js +103 -0
  163. package/dist/lib/audit/retention-guard.js.map +1 -0
  164. package/dist/lib/audit/retention-guard.test.d.ts +5 -0
  165. package/dist/lib/audit/retention-guard.test.d.ts.map +1 -0
  166. package/dist/lib/audit/retention-guard.test.js +109 -0
  167. package/dist/lib/audit/retention-guard.test.js.map +1 -0
  168. package/dist/lib/audit/skill-auditor-scoring.d.ts +69 -0
  169. package/dist/lib/audit/skill-auditor-scoring.d.ts.map +1 -0
  170. package/dist/lib/audit/skill-auditor-scoring.js +149 -0
  171. package/dist/lib/audit/skill-auditor-scoring.js.map +1 -0
  172. package/dist/lib/audit/skill-auditor-scoring.test.d.ts +2 -0
  173. package/dist/lib/audit/skill-auditor-scoring.test.d.ts.map +1 -0
  174. package/dist/lib/audit/skill-auditor-scoring.test.js +369 -0
  175. package/dist/lib/audit/skill-auditor-scoring.test.js.map +1 -0
  176. package/dist/lib/audit/verification-events.d.ts +119 -0
  177. package/dist/lib/audit/verification-events.d.ts.map +1 -0
  178. package/dist/lib/audit/verification-events.js +175 -0
  179. package/dist/lib/audit/verification-events.js.map +1 -0
  180. package/dist/lib/audit/verification-events.test.d.ts +5 -0
  181. package/dist/lib/audit/verification-events.test.d.ts.map +1 -0
  182. package/dist/lib/audit/verification-events.test.js +197 -0
  183. package/dist/lib/audit/verification-events.test.js.map +1 -0
  184. package/dist/lib/core/constants-models.d.ts +90 -0
  185. package/dist/lib/core/constants-models.d.ts.map +1 -0
  186. package/dist/lib/core/constants-models.js +208 -0
  187. package/dist/lib/core/constants-models.js.map +1 -0
  188. package/dist/lib/core/constants-otel.d.ts +68 -0
  189. package/dist/lib/core/constants-otel.d.ts.map +1 -0
  190. package/dist/lib/core/constants-otel.js +128 -0
  191. package/dist/lib/core/constants-otel.js.map +1 -0
  192. package/dist/lib/core/constants-symlink.test.d.ts.map +1 -0
  193. package/dist/lib/{constants-symlink.test.js → core/constants-symlink.test.js} +25 -24
  194. package/dist/lib/core/constants-symlink.test.js.map +1 -0
  195. package/dist/lib/core/constants-telemetry.d.ts +21 -0
  196. package/dist/lib/core/constants-telemetry.d.ts.map +1 -0
  197. package/dist/lib/core/constants-telemetry.js +162 -0
  198. package/dist/lib/core/constants-telemetry.js.map +1 -0
  199. package/dist/lib/core/constants.d.ts +152 -0
  200. package/dist/lib/core/constants.d.ts.map +1 -0
  201. package/dist/lib/core/constants.js +223 -0
  202. package/dist/lib/core/constants.js.map +1 -0
  203. package/dist/lib/core/constants.test.d.ts.map +1 -0
  204. package/dist/lib/{constants.test.js → core/constants.test.js} +198 -82
  205. package/dist/lib/core/constants.test.js.map +1 -0
  206. package/dist/lib/core/doc-sync.test.d.ts +9 -0
  207. package/dist/lib/core/doc-sync.test.d.ts.map +1 -0
  208. package/dist/lib/core/doc-sync.test.js +159 -0
  209. package/dist/lib/core/doc-sync.test.js.map +1 -0
  210. package/dist/lib/core/edge-cases.test.d.ts.map +1 -0
  211. package/dist/lib/{edge-cases.test.js → core/edge-cases.test.js} +76 -73
  212. package/dist/lib/core/edge-cases.test.js.map +1 -0
  213. package/dist/lib/{file-utils.d.ts → core/file-utils.d.ts} +63 -8
  214. package/dist/lib/core/file-utils.d.ts.map +1 -0
  215. package/dist/lib/{file-utils.js → core/file-utils.js} +186 -93
  216. package/dist/lib/core/file-utils.js.map +1 -0
  217. package/dist/lib/core/file-utils.test-constants.d.ts +38 -0
  218. package/dist/lib/core/file-utils.test-constants.d.ts.map +1 -0
  219. package/dist/lib/core/file-utils.test-constants.js +40 -0
  220. package/dist/lib/core/file-utils.test-constants.js.map +1 -0
  221. package/dist/lib/core/file-utils.test.d.ts.map +1 -0
  222. package/dist/lib/{file-utils.test.js → core/file-utils.test.js} +240 -214
  223. package/dist/lib/core/file-utils.test.js.map +1 -0
  224. package/dist/lib/{input-validator.d.ts → core/input-validator.d.ts} +30 -20
  225. package/dist/lib/core/input-validator.d.ts.map +1 -0
  226. package/dist/lib/core/input-validator.fuzz.test.d.ts.map +1 -0
  227. package/dist/lib/{input-validator.fuzz.test.js → core/input-validator.fuzz.test.js} +41 -29
  228. package/dist/lib/core/input-validator.fuzz.test.js.map +1 -0
  229. package/dist/lib/{input-validator.js → core/input-validator.js} +83 -39
  230. package/dist/lib/core/input-validator.js.map +1 -0
  231. package/dist/lib/core/input-validator.test.d.ts.map +1 -0
  232. package/dist/lib/{input-validator.test.js → core/input-validator.test.js} +95 -45
  233. package/dist/lib/core/input-validator.test.js.map +1 -0
  234. package/dist/lib/{logger.d.ts → core/logger.d.ts} +4 -18
  235. package/dist/lib/core/logger.d.ts.map +1 -0
  236. package/dist/lib/core/logger.js +104 -0
  237. package/dist/lib/core/logger.js.map +1 -0
  238. package/dist/lib/core/logger.test.d.ts.map +1 -0
  239. package/dist/lib/core/logger.test.js.map +1 -0
  240. package/dist/lib/core/schema-types.d.ts +37 -0
  241. package/dist/lib/core/schema-types.d.ts.map +1 -0
  242. package/dist/lib/core/schema-types.js +29 -0
  243. package/dist/lib/core/schema-types.js.map +1 -0
  244. package/dist/lib/{server-utils.d.ts → core/server-utils.d.ts} +11 -1
  245. package/dist/lib/core/server-utils.d.ts.map +1 -0
  246. package/dist/lib/{server-utils.js → core/server-utils.js} +25 -5
  247. package/dist/lib/core/server-utils.js.map +1 -0
  248. package/dist/lib/core/shared-schemas.d.ts +301 -0
  249. package/dist/lib/core/shared-schemas.d.ts.map +1 -0
  250. package/dist/lib/core/shared-schemas.js +222 -0
  251. package/dist/lib/core/shared-schemas.js.map +1 -0
  252. package/dist/lib/core/shared-schemas.test.d.ts.map +1 -0
  253. package/dist/lib/{shared-schemas.test.js → core/shared-schemas.test.js} +48 -18
  254. package/dist/lib/core/shared-schemas.test.js.map +1 -0
  255. package/dist/lib/core/units.d.ts +67 -0
  256. package/dist/lib/core/units.d.ts.map +1 -0
  257. package/dist/lib/core/units.js +88 -0
  258. package/dist/lib/core/units.js.map +1 -0
  259. package/dist/lib/cost/cost-estimation.d.ts +264 -0
  260. package/dist/lib/cost/cost-estimation.d.ts.map +1 -0
  261. package/dist/lib/cost/cost-estimation.js +541 -0
  262. package/dist/lib/cost/cost-estimation.js.map +1 -0
  263. package/dist/lib/cost/cost-estimation.test.d.ts +5 -0
  264. package/dist/lib/cost/cost-estimation.test.d.ts.map +1 -0
  265. package/dist/lib/cost/cost-estimation.test.js +701 -0
  266. package/dist/lib/cost/cost-estimation.test.js.map +1 -0
  267. package/dist/lib/cost/pricing-cache.d.ts +59 -0
  268. package/dist/lib/cost/pricing-cache.d.ts.map +1 -0
  269. package/dist/lib/cost/pricing-cache.js +120 -0
  270. package/dist/lib/cost/pricing-cache.js.map +1 -0
  271. package/dist/lib/cost/pricing-cache.test.d.ts +5 -0
  272. package/dist/lib/cost/pricing-cache.test.d.ts.map +1 -0
  273. package/dist/lib/cost/pricing-cache.test.js +176 -0
  274. package/dist/lib/cost/pricing-cache.test.js.map +1 -0
  275. package/dist/lib/dashboard-file-utils.d.ts +35 -0
  276. package/dist/lib/dashboard-file-utils.d.ts.map +1 -0
  277. package/dist/lib/dashboard-file-utils.js +94 -0
  278. package/dist/lib/dashboard-file-utils.js.map +1 -0
  279. package/dist/lib/{error-sanitizer.d.ts → errors/error-sanitizer.d.ts} +5 -0
  280. package/dist/lib/errors/error-sanitizer.d.ts.map +1 -0
  281. package/dist/lib/{error-sanitizer.js → errors/error-sanitizer.js} +8 -6
  282. package/dist/lib/errors/error-sanitizer.js.map +1 -0
  283. package/dist/lib/errors/error-sanitizer.test.d.ts.map +1 -0
  284. package/dist/lib/{error-sanitizer.test.js → errors/error-sanitizer.test.js} +17 -11
  285. package/dist/lib/errors/error-sanitizer.test.js.map +1 -0
  286. package/dist/lib/{error-types.d.ts → errors/error-types.d.ts} +5 -0
  287. package/dist/lib/errors/error-types.d.ts.map +1 -0
  288. package/dist/lib/{error-types.js → errors/error-types.js} +34 -1
  289. package/dist/lib/errors/error-types.js.map +1 -0
  290. package/dist/lib/errors/error-types.test.d.ts.map +1 -0
  291. package/dist/lib/{error-types.test.js → errors/error-types.test.js} +51 -1
  292. package/dist/lib/errors/error-types.test.js.map +1 -0
  293. package/dist/lib/errors/query-sanitizer.d.ts.map +1 -0
  294. package/dist/lib/{query-sanitizer.js → errors/query-sanitizer.js} +9 -1
  295. package/dist/lib/errors/query-sanitizer.js.map +1 -0
  296. package/dist/lib/errors/query-sanitizer.test.d.ts.map +1 -0
  297. package/dist/lib/{query-sanitizer.test.js → errors/query-sanitizer.test.js} +9 -6
  298. package/dist/lib/errors/query-sanitizer.test.js.map +1 -0
  299. package/dist/lib/exports/confident-export.d.ts +105 -0
  300. package/dist/lib/exports/confident-export.d.ts.map +1 -0
  301. package/dist/lib/exports/confident-export.js +385 -0
  302. package/dist/lib/exports/confident-export.js.map +1 -0
  303. package/dist/lib/exports/confident-export.test.d.ts +7 -0
  304. package/dist/lib/exports/confident-export.test.d.ts.map +1 -0
  305. package/dist/lib/exports/confident-export.test.js +848 -0
  306. package/dist/lib/exports/confident-export.test.js.map +1 -0
  307. package/dist/lib/exports/datadog-export.d.ts +200 -0
  308. package/dist/lib/exports/datadog-export.d.ts.map +1 -0
  309. package/dist/lib/exports/datadog-export.js +488 -0
  310. package/dist/lib/exports/datadog-export.js.map +1 -0
  311. package/dist/lib/exports/datadog-export.test.d.ts +2 -0
  312. package/dist/lib/exports/datadog-export.test.d.ts.map +1 -0
  313. package/dist/lib/exports/datadog-export.test.js +890 -0
  314. package/dist/lib/exports/datadog-export.test.js.map +1 -0
  315. package/dist/lib/exports/export-config-schemas.d.ts +67 -0
  316. package/dist/lib/exports/export-config-schemas.d.ts.map +1 -0
  317. package/dist/lib/exports/export-config-schemas.js +120 -0
  318. package/dist/lib/exports/export-config-schemas.js.map +1 -0
  319. package/dist/lib/exports/export-config-schemas.test.d.ts +8 -0
  320. package/dist/lib/exports/export-config-schemas.test.d.ts.map +1 -0
  321. package/dist/lib/exports/export-config-schemas.test.js +503 -0
  322. package/dist/lib/exports/export-config-schemas.test.js.map +1 -0
  323. package/dist/lib/exports/export-utils.d.ts +127 -0
  324. package/dist/lib/exports/export-utils.d.ts.map +1 -0
  325. package/dist/lib/exports/export-utils.js +303 -0
  326. package/dist/lib/exports/export-utils.js.map +1 -0
  327. package/dist/lib/exports/export-utils.test.d.ts +5 -0
  328. package/dist/lib/exports/export-utils.test.d.ts.map +1 -0
  329. package/dist/lib/exports/export-utils.test.js +344 -0
  330. package/dist/lib/exports/export-utils.test.js.map +1 -0
  331. package/dist/lib/exports/langfuse-export.d.ts +129 -0
  332. package/dist/lib/exports/langfuse-export.d.ts.map +1 -0
  333. package/dist/lib/exports/langfuse-export.js +370 -0
  334. package/dist/lib/exports/langfuse-export.js.map +1 -0
  335. package/dist/lib/exports/langfuse-export.test.d.ts +7 -0
  336. package/dist/lib/exports/langfuse-export.test.d.ts.map +1 -0
  337. package/dist/lib/exports/langfuse-export.test.js +1020 -0
  338. package/dist/lib/exports/langfuse-export.test.js.map +1 -0
  339. package/dist/lib/{otlp-export.d.ts → exports/otlp-export.d.ts} +3 -2
  340. package/dist/lib/exports/otlp-export.d.ts.map +1 -0
  341. package/dist/lib/{otlp-export.js → exports/otlp-export.js} +51 -36
  342. package/dist/lib/exports/otlp-export.js.map +1 -0
  343. package/dist/lib/exports/otlp-format-converter.d.ts +70 -0
  344. package/dist/lib/exports/otlp-format-converter.d.ts.map +1 -0
  345. package/dist/lib/exports/otlp-format-converter.js +401 -0
  346. package/dist/lib/exports/otlp-format-converter.js.map +1 -0
  347. package/dist/lib/exports/otlp-proto-encode.d.ts +53 -0
  348. package/dist/lib/exports/otlp-proto-encode.d.ts.map +1 -0
  349. package/dist/lib/exports/otlp-proto-encode.js +165 -0
  350. package/dist/lib/exports/otlp-proto-encode.js.map +1 -0
  351. package/dist/lib/exports/otlp-proto-encode.test.d.ts +7 -0
  352. package/dist/lib/exports/otlp-proto-encode.test.d.ts.map +1 -0
  353. package/dist/lib/exports/otlp-proto-encode.test.js +997 -0
  354. package/dist/lib/exports/otlp-proto-encode.test.js.map +1 -0
  355. package/dist/lib/exports/phoenix-export.d.ts +119 -0
  356. package/dist/lib/exports/phoenix-export.d.ts.map +1 -0
  357. package/dist/lib/exports/phoenix-export.js +448 -0
  358. package/dist/lib/exports/phoenix-export.js.map +1 -0
  359. package/dist/lib/exports/phoenix-export.test.d.ts +11 -0
  360. package/dist/lib/exports/phoenix-export.test.d.ts.map +1 -0
  361. package/dist/lib/exports/phoenix-export.test.js +816 -0
  362. package/dist/lib/exports/phoenix-export.test.js.map +1 -0
  363. package/dist/lib/index.d.ts +16 -0
  364. package/dist/lib/index.d.ts.map +1 -0
  365. package/dist/lib/index.js +31 -0
  366. package/dist/lib/index.js.map +1 -0
  367. package/dist/lib/judge/evaluation-hooks-schemas.d.ts +186 -0
  368. package/dist/lib/judge/evaluation-hooks-schemas.d.ts.map +1 -0
  369. package/dist/lib/judge/evaluation-hooks-schemas.js +125 -0
  370. package/dist/lib/judge/evaluation-hooks-schemas.js.map +1 -0
  371. package/dist/lib/judge/evaluation-hooks.d.ts +88 -0
  372. package/dist/lib/judge/evaluation-hooks.d.ts.map +1 -0
  373. package/dist/lib/judge/evaluation-hooks.js +658 -0
  374. package/dist/lib/judge/evaluation-hooks.js.map +1 -0
  375. package/dist/lib/judge/evaluation-hooks.test.d.ts +8 -0
  376. package/dist/lib/judge/evaluation-hooks.test.d.ts.map +1 -0
  377. package/dist/lib/judge/evaluation-hooks.test.js +934 -0
  378. package/dist/lib/judge/evaluation-hooks.test.js.map +1 -0
  379. package/dist/lib/judge/llm-as-judge.d.ts +138 -0
  380. package/dist/lib/judge/llm-as-judge.d.ts.map +1 -0
  381. package/dist/lib/judge/llm-as-judge.js +103 -0
  382. package/dist/lib/judge/llm-as-judge.js.map +1 -0
  383. package/dist/lib/judge/llm-as-judge.test.d.ts +2 -0
  384. package/dist/lib/judge/llm-as-judge.test.d.ts.map +1 -0
  385. package/dist/lib/judge/llm-as-judge.test.js +2179 -0
  386. package/dist/lib/judge/llm-as-judge.test.js.map +1 -0
  387. package/dist/lib/judge/llm-judge-bias.d.ts +44 -0
  388. package/dist/lib/judge/llm-judge-bias.d.ts.map +1 -0
  389. package/dist/lib/judge/llm-judge-bias.js +130 -0
  390. package/dist/lib/judge/llm-judge-bias.js.map +1 -0
  391. package/dist/lib/judge/llm-judge-bias.test.d.ts +2 -0
  392. package/dist/lib/judge/llm-judge-bias.test.d.ts.map +1 -0
  393. package/dist/lib/judge/llm-judge-bias.test.js +380 -0
  394. package/dist/lib/judge/llm-judge-bias.test.js.map +1 -0
  395. package/dist/lib/judge/llm-judge-code.d.ts +99 -0
  396. package/dist/lib/judge/llm-judge-code.d.ts.map +1 -0
  397. package/dist/lib/judge/llm-judge-code.js +261 -0
  398. package/dist/lib/judge/llm-judge-code.js.map +1 -0
  399. package/dist/lib/judge/llm-judge-code.test.d.ts +2 -0
  400. package/dist/lib/judge/llm-judge-code.test.d.ts.map +1 -0
  401. package/dist/lib/judge/llm-judge-code.test.js +981 -0
  402. package/dist/lib/judge/llm-judge-code.test.js.map +1 -0
  403. package/dist/lib/judge/llm-judge-config.d.ts +241 -0
  404. package/dist/lib/judge/llm-judge-config.d.ts.map +1 -0
  405. package/dist/lib/judge/llm-judge-config.js +390 -0
  406. package/dist/lib/judge/llm-judge-config.js.map +1 -0
  407. package/dist/lib/judge/llm-judge-config.test.d.ts +5 -0
  408. package/dist/lib/judge/llm-judge-config.test.d.ts.map +1 -0
  409. package/dist/lib/judge/llm-judge-config.test.js +392 -0
  410. package/dist/lib/judge/llm-judge-config.test.js.map +1 -0
  411. package/dist/lib/judge/llm-judge-constants.d.ts +111 -0
  412. package/dist/lib/judge/llm-judge-constants.d.ts.map +1 -0
  413. package/dist/lib/judge/llm-judge-constants.js +150 -0
  414. package/dist/lib/judge/llm-judge-constants.js.map +1 -0
  415. package/dist/lib/judge/llm-judge-dag.d.ts +57 -0
  416. package/dist/lib/judge/llm-judge-dag.d.ts.map +1 -0
  417. package/dist/lib/judge/llm-judge-dag.js +217 -0
  418. package/dist/lib/judge/llm-judge-dag.js.map +1 -0
  419. package/dist/lib/judge/llm-judge-dag.test.d.ts +8 -0
  420. package/dist/lib/judge/llm-judge-dag.test.d.ts.map +1 -0
  421. package/dist/lib/judge/llm-judge-dag.test.js +973 -0
  422. package/dist/lib/judge/llm-judge-dag.test.js.map +1 -0
  423. package/dist/lib/judge/llm-judge-domain.d.ts +42 -0
  424. package/dist/lib/judge/llm-judge-domain.d.ts.map +1 -0
  425. package/dist/lib/judge/llm-judge-domain.js +167 -0
  426. package/dist/lib/judge/llm-judge-domain.js.map +1 -0
  427. package/dist/lib/judge/llm-judge-domain.test.d.ts +6 -0
  428. package/dist/lib/judge/llm-judge-domain.test.d.ts.map +1 -0
  429. package/dist/lib/judge/llm-judge-domain.test.js +337 -0
  430. package/dist/lib/judge/llm-judge-domain.test.js.map +1 -0
  431. package/dist/lib/judge/llm-judge-geval.d.ts +42 -0
  432. package/dist/lib/judge/llm-judge-geval.d.ts.map +1 -0
  433. package/dist/lib/judge/llm-judge-geval.js +213 -0
  434. package/dist/lib/judge/llm-judge-geval.js.map +1 -0
  435. package/dist/lib/judge/llm-judge-geval.test.d.ts +2 -0
  436. package/dist/lib/judge/llm-judge-geval.test.d.ts.map +1 -0
  437. package/dist/lib/judge/llm-judge-geval.test.js +556 -0
  438. package/dist/lib/judge/llm-judge-geval.test.js.map +1 -0
  439. package/dist/lib/judge/llm-judge-otel.test.d.ts +9 -0
  440. package/dist/lib/judge/llm-judge-otel.test.d.ts.map +1 -0
  441. package/dist/lib/judge/llm-judge-otel.test.js +91 -0
  442. package/dist/lib/judge/llm-judge-otel.test.js.map +1 -0
  443. package/dist/lib/judge/llm-judge-qag.d.ts +38 -0
  444. package/dist/lib/judge/llm-judge-qag.d.ts.map +1 -0
  445. package/dist/lib/judge/llm-judge-qag.js +205 -0
  446. package/dist/lib/judge/llm-judge-qag.js.map +1 -0
  447. package/dist/lib/judge/llm-judge-qag.test.d.ts +2 -0
  448. package/dist/lib/judge/llm-judge-qag.test.d.ts.map +1 -0
  449. package/dist/lib/judge/llm-judge-qag.test.js +386 -0
  450. package/dist/lib/judge/llm-judge-qag.test.js.map +1 -0
  451. package/dist/lib/judge/llm-judge-resilience.d.ts +74 -0
  452. package/dist/lib/judge/llm-judge-resilience.d.ts.map +1 -0
  453. package/dist/lib/judge/llm-judge-resilience.js +146 -0
  454. package/dist/lib/judge/llm-judge-resilience.js.map +1 -0
  455. package/dist/lib/judge/llm-judge-resilience.test.d.ts +2 -0
  456. package/dist/lib/judge/llm-judge-resilience.test.d.ts.map +1 -0
  457. package/dist/lib/judge/llm-judge-resilience.test.js +353 -0
  458. package/dist/lib/judge/llm-judge-resilience.test.js.map +1 -0
  459. package/dist/lib/judge/llm-judge-security.d.ts +106 -0
  460. package/dist/lib/judge/llm-judge-security.d.ts.map +1 -0
  461. package/dist/lib/judge/llm-judge-security.js +314 -0
  462. package/dist/lib/judge/llm-judge-security.js.map +1 -0
  463. package/dist/lib/judge/llm-judge-security.test.d.ts +2 -0
  464. package/dist/lib/judge/llm-judge-security.test.d.ts.map +1 -0
  465. package/dist/lib/judge/llm-judge-security.test.js +1011 -0
  466. package/dist/lib/judge/llm-judge-security.test.js.map +1 -0
  467. package/dist/lib/observability/context-accumulator.d.ts +32 -0
  468. package/dist/lib/observability/context-accumulator.d.ts.map +1 -0
  469. package/dist/lib/observability/context-accumulator.js +87 -0
  470. package/dist/lib/observability/context-accumulator.js.map +1 -0
  471. package/dist/lib/observability/evaluation-events.d.ts +35 -0
  472. package/dist/lib/observability/evaluation-events.d.ts.map +1 -0
  473. package/dist/lib/observability/evaluation-events.js +90 -0
  474. package/dist/lib/observability/evaluation-events.js.map +1 -0
  475. package/dist/lib/observability/file-span-exporter.d.ts +17 -0
  476. package/dist/lib/observability/file-span-exporter.d.ts.map +1 -0
  477. package/dist/lib/observability/file-span-exporter.js +49 -0
  478. package/dist/lib/observability/file-span-exporter.js.map +1 -0
  479. package/dist/lib/observability/histogram-bucket-constants.d.ts +25 -0
  480. package/dist/lib/observability/histogram-bucket-constants.d.ts.map +1 -0
  481. package/dist/lib/observability/histogram-bucket-constants.js +60 -0
  482. package/dist/lib/observability/histogram-bucket-constants.js.map +1 -0
  483. package/dist/lib/observability/histogram.d.ts +112 -0
  484. package/dist/lib/observability/histogram.d.ts.map +1 -0
  485. package/dist/lib/observability/histogram.js +170 -0
  486. package/dist/lib/observability/histogram.js.map +1 -0
  487. package/dist/lib/observability/histogram.test.d.ts +5 -0
  488. package/dist/lib/observability/histogram.test.d.ts.map +1 -0
  489. package/dist/lib/observability/histogram.test.js +385 -0
  490. package/dist/lib/observability/histogram.test.js.map +1 -0
  491. package/dist/lib/observability/indexer.d.ts +114 -0
  492. package/dist/lib/observability/indexer.d.ts.map +1 -0
  493. package/dist/lib/{indexer.js → observability/indexer.js} +65 -16
  494. package/dist/lib/observability/indexer.js.map +1 -0
  495. package/dist/lib/observability/indexer.test.d.ts.map +1 -0
  496. package/dist/lib/{indexer.test.js → observability/indexer.test.js} +94 -77
  497. package/dist/lib/observability/indexer.test.js.map +1 -0
  498. package/dist/lib/observability/instrumentation-eval.test.d.ts +5 -0
  499. package/dist/lib/observability/instrumentation-eval.test.d.ts.map +1 -0
  500. package/dist/lib/observability/instrumentation-eval.test.js +63 -0
  501. package/dist/lib/observability/instrumentation-eval.test.js.map +1 -0
  502. package/dist/lib/observability/instrumentation-init-errors.test.d.ts +13 -0
  503. package/dist/lib/observability/instrumentation-init-errors.test.d.ts.map +1 -0
  504. package/dist/lib/observability/instrumentation-init-errors.test.js +194 -0
  505. package/dist/lib/observability/instrumentation-init-errors.test.js.map +1 -0
  506. package/dist/lib/observability/instrumentation-retry-timeout.test.d.ts +15 -0
  507. package/dist/lib/observability/instrumentation-retry-timeout.test.d.ts.map +1 -0
  508. package/dist/lib/observability/instrumentation-retry-timeout.test.js +188 -0
  509. package/dist/lib/observability/instrumentation-retry-timeout.test.js.map +1 -0
  510. package/dist/lib/observability/instrumentation-set-otel.test.d.ts +5 -0
  511. package/dist/lib/observability/instrumentation-set-otel.test.d.ts.map +1 -0
  512. package/dist/lib/observability/instrumentation-set-otel.test.js +59 -0
  513. package/dist/lib/observability/instrumentation-set-otel.test.js.map +1 -0
  514. package/dist/lib/observability/instrumentation.d.ts +158 -0
  515. package/dist/lib/observability/instrumentation.d.ts.map +1 -0
  516. package/dist/lib/observability/instrumentation.integration.test.d.ts +2 -0
  517. package/dist/lib/observability/instrumentation.integration.test.d.ts.map +1 -0
  518. package/dist/lib/observability/instrumentation.integration.test.js +590 -0
  519. package/dist/lib/observability/instrumentation.integration.test.js.map +1 -0
  520. package/dist/lib/observability/instrumentation.js +512 -0
  521. package/dist/lib/observability/instrumentation.js.map +1 -0
  522. package/dist/lib/observability/instrumentation.test.d.ts +2 -0
  523. package/dist/lib/observability/instrumentation.test.d.ts.map +1 -0
  524. package/dist/lib/observability/instrumentation.test.js +822 -0
  525. package/dist/lib/observability/instrumentation.test.js.map +1 -0
  526. package/dist/lib/observability/mcp-semconv-constants.d.ts +98 -0
  527. package/dist/lib/observability/mcp-semconv-constants.d.ts.map +1 -0
  528. package/dist/lib/observability/mcp-semconv-constants.js +102 -0
  529. package/dist/lib/observability/mcp-semconv-constants.js.map +1 -0
  530. package/dist/lib/observability/mcp-semconv.d.ts +37 -0
  531. package/dist/lib/observability/mcp-semconv.d.ts.map +1 -0
  532. package/dist/lib/observability/mcp-semconv.js +87 -0
  533. package/dist/lib/observability/mcp-semconv.js.map +1 -0
  534. package/dist/lib/observability/mcp-semconv.test.d.ts +2 -0
  535. package/dist/lib/observability/mcp-semconv.test.d.ts.map +1 -0
  536. package/dist/lib/observability/mcp-semconv.test.js +168 -0
  537. package/dist/lib/observability/mcp-semconv.test.js.map +1 -0
  538. package/dist/lib/observability/metrics.d.ts +100 -0
  539. package/dist/lib/observability/metrics.d.ts.map +1 -0
  540. package/dist/lib/observability/metrics.js +429 -0
  541. package/dist/lib/observability/metrics.js.map +1 -0
  542. package/dist/lib/observability/metrics.test.d.ts +5 -0
  543. package/dist/lib/observability/metrics.test.d.ts.map +1 -0
  544. package/dist/lib/observability/metrics.test.js +191 -0
  545. package/dist/lib/observability/metrics.test.js.map +1 -0
  546. package/dist/lib/observability/observability-test-constants.d.ts +34 -0
  547. package/dist/lib/observability/observability-test-constants.d.ts.map +1 -0
  548. package/dist/lib/observability/observability-test-constants.js +55 -0
  549. package/dist/lib/observability/observability-test-constants.js.map +1 -0
  550. package/dist/lib/observability/opentelemetry-resources.test.d.ts +2 -0
  551. package/dist/lib/observability/opentelemetry-resources.test.d.ts.map +1 -0
  552. package/dist/lib/observability/opentelemetry-resources.test.js +19 -0
  553. package/dist/lib/observability/opentelemetry-resources.test.js.map +1 -0
  554. package/dist/lib/observability/parse-stats.d.ts +119 -0
  555. package/dist/lib/observability/parse-stats.d.ts.map +1 -0
  556. package/dist/lib/observability/parse-stats.js +207 -0
  557. package/dist/lib/observability/parse-stats.js.map +1 -0
  558. package/dist/lib/observability/parse-stats.test.d.ts +5 -0
  559. package/dist/lib/observability/parse-stats.test.d.ts.map +1 -0
  560. package/dist/lib/observability/parse-stats.test.js +287 -0
  561. package/dist/lib/observability/parse-stats.test.js.map +1 -0
  562. package/dist/lib/observability/render-trace-tree.d.ts +31 -0
  563. package/dist/lib/observability/render-trace-tree.d.ts.map +1 -0
  564. package/dist/lib/observability/render-trace-tree.js +95 -0
  565. package/dist/lib/observability/render-trace-tree.js.map +1 -0
  566. package/dist/lib/observability/render-trace-tree.test.d.ts +5 -0
  567. package/dist/lib/observability/render-trace-tree.test.d.ts.map +1 -0
  568. package/dist/lib/observability/render-trace-tree.test.js +97 -0
  569. package/dist/lib/observability/render-trace-tree.test.js.map +1 -0
  570. package/dist/lib/observability/span-attributes.d.ts +27 -0
  571. package/dist/lib/observability/span-attributes.d.ts.map +1 -0
  572. package/dist/lib/observability/span-attributes.js +85 -0
  573. package/dist/lib/observability/span-attributes.js.map +1 -0
  574. package/dist/lib/observability/trace-anomaly-detector.d.ts +23 -0
  575. package/dist/lib/observability/trace-anomaly-detector.d.ts.map +1 -0
  576. package/dist/lib/observability/trace-anomaly-detector.js +211 -0
  577. package/dist/lib/observability/trace-anomaly-detector.js.map +1 -0
  578. package/dist/lib/observability/trace-anomaly-detector.test.d.ts +5 -0
  579. package/dist/lib/observability/trace-anomaly-detector.test.d.ts.map +1 -0
  580. package/dist/lib/observability/trace-anomaly-detector.test.js +224 -0
  581. package/dist/lib/observability/trace-anomaly-detector.test.js.map +1 -0
  582. package/dist/lib/observability/trace-anomaly-schemas.d.ts +189 -0
  583. package/dist/lib/observability/trace-anomaly-schemas.d.ts.map +1 -0
  584. package/dist/lib/observability/trace-anomaly-schemas.js +167 -0
  585. package/dist/lib/observability/trace-anomaly-schemas.js.map +1 -0
  586. package/dist/lib/privacy/content-redaction.d.ts +141 -0
  587. package/dist/lib/privacy/content-redaction.d.ts.map +1 -0
  588. package/dist/lib/privacy/content-redaction.js +210 -0
  589. package/dist/lib/privacy/content-redaction.js.map +1 -0
  590. package/dist/lib/privacy/content-redaction.test.d.ts +2 -0
  591. package/dist/lib/privacy/content-redaction.test.d.ts.map +1 -0
  592. package/dist/lib/privacy/content-redaction.test.js +302 -0
  593. package/dist/lib/privacy/content-redaction.test.js.map +1 -0
  594. package/dist/lib/quality/bucket-utils.d.ts +17 -0
  595. package/dist/lib/quality/bucket-utils.d.ts.map +1 -0
  596. package/dist/lib/quality/bucket-utils.js +31 -0
  597. package/dist/lib/quality/bucket-utils.js.map +1 -0
  598. package/dist/lib/quality/bucket-utils.test.d.ts +2 -0
  599. package/dist/lib/quality/bucket-utils.test.d.ts.map +1 -0
  600. package/dist/lib/quality/bucket-utils.test.js +42 -0
  601. package/dist/lib/quality/bucket-utils.test.js.map +1 -0
  602. package/dist/lib/quality/qfe-backtest-detail.test.d.ts +5 -0
  603. package/dist/lib/quality/qfe-backtest-detail.test.d.ts.map +1 -0
  604. package/dist/lib/quality/qfe-backtest-detail.test.js +179 -0
  605. package/dist/lib/quality/qfe-backtest-detail.test.js.map +1 -0
  606. package/dist/lib/quality/qfe-calibration-paths.test.d.ts +5 -0
  607. package/dist/lib/quality/qfe-calibration-paths.test.d.ts.map +1 -0
  608. package/dist/lib/quality/qfe-calibration-paths.test.js +203 -0
  609. package/dist/lib/quality/qfe-calibration-paths.test.js.map +1 -0
  610. package/dist/lib/quality/qfe-correlation-helpers.test.d.ts +6 -0
  611. package/dist/lib/quality/qfe-correlation-helpers.test.d.ts.map +1 -0
  612. package/dist/lib/quality/qfe-correlation-helpers.test.js +143 -0
  613. package/dist/lib/quality/qfe-correlation-helpers.test.js.map +1 -0
  614. package/dist/lib/quality/qfe-cqi-paths.test.d.ts +6 -0
  615. package/dist/lib/quality/qfe-cqi-paths.test.d.ts.map +1 -0
  616. package/dist/lib/quality/qfe-cqi-paths.test.js +231 -0
  617. package/dist/lib/quality/qfe-cqi-paths.test.js.map +1 -0
  618. package/dist/lib/quality/qfe-critic-internals.test.d.ts +6 -0
  619. package/dist/lib/quality/qfe-critic-internals.test.d.ts.map +1 -0
  620. package/dist/lib/quality/qfe-critic-internals.test.js +191 -0
  621. package/dist/lib/quality/qfe-critic-internals.test.js.map +1 -0
  622. package/dist/lib/quality/qfe-derived-paths.test.d.ts +2 -0
  623. package/dist/lib/quality/qfe-derived-paths.test.d.ts.map +1 -0
  624. package/dist/lib/quality/qfe-derived-paths.test.js +372 -0
  625. package/dist/lib/quality/qfe-derived-paths.test.js.map +1 -0
  626. package/dist/lib/quality/qfe-dynamics-paths.test.d.ts +8 -0
  627. package/dist/lib/quality/qfe-dynamics-paths.test.d.ts.map +1 -0
  628. package/dist/lib/quality/qfe-dynamics-paths.test.js +223 -0
  629. package/dist/lib/quality/qfe-dynamics-paths.test.js.map +1 -0
  630. package/dist/lib/quality/qfe-granger-internals.test.d.ts +6 -0
  631. package/dist/lib/quality/qfe-granger-internals.test.d.ts.map +1 -0
  632. package/dist/lib/quality/qfe-granger-internals.test.js +158 -0
  633. package/dist/lib/quality/qfe-granger-internals.test.js.map +1 -0
  634. package/dist/lib/quality/qfe-label-normalize.test.d.ts +7 -0
  635. package/dist/lib/quality/qfe-label-normalize.test.d.ts.map +1 -0
  636. package/dist/lib/quality/qfe-label-normalize.test.js +332 -0
  637. package/dist/lib/quality/qfe-label-normalize.test.js.map +1 -0
  638. package/dist/lib/quality/qfe-ordinal-edge.test.d.ts +6 -0
  639. package/dist/lib/quality/qfe-ordinal-edge.test.d.ts.map +1 -0
  640. package/dist/lib/quality/qfe-ordinal-edge.test.js +98 -0
  641. package/dist/lib/quality/qfe-ordinal-edge.test.js.map +1 -0
  642. package/dist/lib/quality/qfe-roles-detail.test.d.ts +5 -0
  643. package/dist/lib/quality/qfe-roles-detail.test.d.ts.map +1 -0
  644. package/dist/lib/quality/qfe-roles-detail.test.js +115 -0
  645. package/dist/lib/quality/qfe-roles-detail.test.js.map +1 -0
  646. package/dist/lib/quality/qfe-rolling-detail.test.d.ts +7 -0
  647. package/dist/lib/quality/qfe-rolling-detail.test.d.ts.map +1 -0
  648. package/dist/lib/quality/qfe-rolling-detail.test.js +249 -0
  649. package/dist/lib/quality/qfe-rolling-detail.test.js.map +1 -0
  650. package/dist/lib/quality/qfe-stats-internals.test.d.ts +7 -0
  651. package/dist/lib/quality/qfe-stats-internals.test.d.ts.map +1 -0
  652. package/dist/lib/quality/qfe-stats-internals.test.js +143 -0
  653. package/dist/lib/quality/qfe-stats-internals.test.js.map +1 -0
  654. package/dist/lib/quality/qfe-streaming.test.d.ts +5 -0
  655. package/dist/lib/quality/qfe-streaming.test.d.ts.map +1 -0
  656. package/dist/lib/quality/qfe-streaming.test.js +239 -0
  657. package/dist/lib/quality/qfe-streaming.test.js.map +1 -0
  658. package/dist/lib/quality/qfe-sweep-detail.test.d.ts +6 -0
  659. package/dist/lib/quality/qfe-sweep-detail.test.d.ts.map +1 -0
  660. package/dist/lib/quality/qfe-sweep-detail.test.js +291 -0
  661. package/dist/lib/quality/qfe-sweep-detail.test.js.map +1 -0
  662. package/dist/lib/quality/quality-alerts.d.ts +23 -0
  663. package/dist/lib/quality/quality-alerts.d.ts.map +1 -0
  664. package/dist/lib/quality/quality-alerts.js +89 -0
  665. package/dist/lib/quality/quality-alerts.js.map +1 -0
  666. package/dist/lib/quality/quality-alerts.test.d.ts +2 -0
  667. package/dist/lib/quality/quality-alerts.test.d.ts.map +1 -0
  668. package/dist/lib/quality/quality-alerts.test.js +86 -0
  669. package/dist/lib/quality/quality-alerts.test.js.map +1 -0
  670. package/dist/lib/quality/quality-constants.d.ts +294 -0
  671. package/dist/lib/quality/quality-constants.d.ts.map +1 -0
  672. package/dist/lib/quality/quality-constants.js +335 -0
  673. package/dist/lib/quality/quality-constants.js.map +1 -0
  674. package/dist/lib/quality/quality-feature-engineering.d.ts +1071 -0
  675. package/dist/lib/quality/quality-feature-engineering.d.ts.map +1 -0
  676. package/dist/lib/quality/quality-feature-engineering.js +2076 -0
  677. package/dist/lib/quality/quality-feature-engineering.js.map +1 -0
  678. package/dist/lib/quality/quality-feature-engineering.test.d.ts +5 -0
  679. package/dist/lib/quality/quality-feature-engineering.test.d.ts.map +1 -0
  680. package/dist/lib/quality/quality-feature-engineering.test.js +2908 -0
  681. package/dist/lib/quality/quality-feature-engineering.test.js.map +1 -0
  682. package/dist/lib/quality/quality-metrics.d.ts +943 -0
  683. package/dist/lib/quality/quality-metrics.d.ts.map +1 -0
  684. package/dist/lib/quality/quality-metrics.js +1151 -0
  685. package/dist/lib/quality/quality-metrics.js.map +1 -0
  686. package/dist/lib/quality/quality-metrics.test.d.ts +5 -0
  687. package/dist/lib/quality/quality-metrics.test.d.ts.map +1 -0
  688. package/dist/lib/quality/quality-metrics.test.js +2766 -0
  689. package/dist/lib/quality/quality-metrics.test.js.map +1 -0
  690. package/dist/lib/quality/quality-multi-agent.d.ts +106 -0
  691. package/dist/lib/quality/quality-multi-agent.d.ts.map +1 -0
  692. package/dist/lib/quality/quality-multi-agent.js +124 -0
  693. package/dist/lib/quality/quality-multi-agent.js.map +1 -0
  694. package/dist/lib/quality/quality-multi-agent.test.d.ts +6 -0
  695. package/dist/lib/quality/quality-multi-agent.test.d.ts.map +1 -0
  696. package/dist/lib/quality/quality-multi-agent.test.js +163 -0
  697. package/dist/lib/quality/quality-multi-agent.test.js.map +1 -0
  698. package/dist/lib/quality/quality-sla.d.ts +35 -0
  699. package/dist/lib/quality/quality-sla.d.ts.map +1 -0
  700. package/dist/lib/quality/quality-sla.js +62 -0
  701. package/dist/lib/quality/quality-sla.js.map +1 -0
  702. package/dist/lib/quality/quality-sla.test.d.ts +5 -0
  703. package/dist/lib/quality/quality-sla.test.d.ts.map +1 -0
  704. package/dist/lib/quality/quality-sla.test.js +144 -0
  705. package/dist/lib/quality/quality-sla.test.js.map +1 -0
  706. package/dist/lib/quality/quality-test-constants.d.ts +23 -0
  707. package/dist/lib/quality/quality-test-constants.d.ts.map +1 -0
  708. package/dist/lib/quality/quality-test-constants.js +25 -0
  709. package/dist/lib/quality/quality-test-constants.js.map +1 -0
  710. package/dist/lib/quality/quality-trends.d.ts +101 -0
  711. package/dist/lib/quality/quality-trends.d.ts.map +1 -0
  712. package/dist/lib/quality/quality-trends.js +299 -0
  713. package/dist/lib/quality/quality-trends.js.map +1 -0
  714. package/dist/lib/quality/quality-trends.test.d.ts +6 -0
  715. package/dist/lib/quality/quality-trends.test.d.ts.map +1 -0
  716. package/dist/lib/quality/quality-trends.test.js +377 -0
  717. package/dist/lib/quality/quality-trends.test.js.map +1 -0
  718. package/dist/lib/quality/quality-views.d.ts +966 -0
  719. package/dist/lib/quality/quality-views.d.ts.map +1 -0
  720. package/dist/lib/quality/quality-views.js +367 -0
  721. package/dist/lib/quality/quality-views.js.map +1 -0
  722. package/dist/lib/quality/quality-views.test.d.ts +6 -0
  723. package/dist/lib/quality/quality-views.test.d.ts.map +1 -0
  724. package/dist/lib/quality/quality-views.test.js +262 -0
  725. package/dist/lib/quality/quality-views.test.js.map +1 -0
  726. package/dist/lib/quality/quality-visualization.d.ts +112 -0
  727. package/dist/lib/quality/quality-visualization.d.ts.map +1 -0
  728. package/dist/lib/quality/quality-visualization.js +136 -0
  729. package/dist/lib/quality/quality-visualization.js.map +1 -0
  730. package/dist/lib/quality/quality-visualization.test.d.ts +5 -0
  731. package/dist/lib/quality/quality-visualization.test.d.ts.map +1 -0
  732. package/dist/lib/quality/quality-visualization.test.js +189 -0
  733. package/dist/lib/quality/quality-visualization.test.js.map +1 -0
  734. package/dist/lib/resilience/cache.d.ts +56 -0
  735. package/dist/lib/resilience/cache.d.ts.map +1 -0
  736. package/dist/lib/resilience/cache.js +96 -0
  737. package/dist/lib/resilience/cache.js.map +1 -0
  738. package/dist/lib/resilience/cache.test.d.ts.map +1 -0
  739. package/dist/lib/{cache.test.js → resilience/cache.test.js} +21 -20
  740. package/dist/lib/resilience/cache.test.js.map +1 -0
  741. package/dist/lib/resilience/circuit-breaker.d.ts +147 -0
  742. package/dist/lib/resilience/circuit-breaker.d.ts.map +1 -0
  743. package/dist/lib/resilience/circuit-breaker.js +251 -0
  744. package/dist/lib/resilience/circuit-breaker.js.map +1 -0
  745. package/dist/lib/resilience/circuit-breaker.test.d.ts.map +1 -0
  746. package/dist/lib/{circuit-breaker.test.js → resilience/circuit-breaker.test.js} +29 -26
  747. package/dist/lib/resilience/circuit-breaker.test.js.map +1 -0
  748. package/dist/lib/{toon-encoder.d.ts → resilience/toon-encoder.d.ts} +6 -1
  749. package/dist/lib/resilience/toon-encoder.d.ts.map +1 -0
  750. package/dist/lib/{toon-encoder.js → resilience/toon-encoder.js} +7 -2
  751. package/dist/lib/resilience/toon-encoder.js.map +1 -0
  752. package/dist/lib/resilience/toon-encoder.test.d.ts.map +1 -0
  753. package/dist/lib/{toon-encoder.test.js → resilience/toon-encoder.test.js} +7 -6
  754. package/dist/lib/resilience/toon-encoder.test.js.map +1 -0
  755. package/dist/lib/testing/mock-llm-builder.d.ts +139 -0
  756. package/dist/lib/testing/mock-llm-builder.d.ts.map +1 -0
  757. package/dist/lib/testing/mock-llm-builder.js +254 -0
  758. package/dist/lib/testing/mock-llm-builder.js.map +1 -0
  759. package/dist/lib/testing/mock-llm-builder.test.d.ts +5 -0
  760. package/dist/lib/testing/mock-llm-builder.test.d.ts.map +1 -0
  761. package/dist/lib/testing/mock-llm-builder.test.js +304 -0
  762. package/dist/lib/testing/mock-llm-builder.test.js.map +1 -0
  763. package/dist/lib/validation/api-schemas.d.ts +705 -0
  764. package/dist/lib/validation/api-schemas.d.ts.map +1 -0
  765. package/dist/lib/validation/api-schemas.js +351 -0
  766. package/dist/lib/validation/api-schemas.js.map +1 -0
  767. package/dist/lib/validation/api-schemas.test.d.ts +5 -0
  768. package/dist/lib/validation/api-schemas.test.d.ts.map +1 -0
  769. package/dist/lib/validation/api-schemas.test.js +427 -0
  770. package/dist/lib/validation/api-schemas.test.js.map +1 -0
  771. package/dist/lib/validation/dashboard-schemas.d.ts +203 -0
  772. package/dist/lib/validation/dashboard-schemas.d.ts.map +1 -0
  773. package/dist/lib/validation/dashboard-schemas.js +186 -0
  774. package/dist/lib/validation/dashboard-schemas.js.map +1 -0
  775. package/dist/lib/validation/dashboard-schemas.test.d.ts +5 -0
  776. package/dist/lib/validation/dashboard-schemas.test.d.ts.map +1 -0
  777. package/dist/lib/validation/dashboard-schemas.test.js +353 -0
  778. package/dist/lib/validation/dashboard-schemas.test.js.map +1 -0
  779. package/dist/server.d.ts +7 -1
  780. package/dist/server.d.ts.map +1 -1
  781. package/dist/server.js +172 -102
  782. package/dist/server.js.map +1 -1
  783. package/dist/server.test.js +102 -95
  784. package/dist/server.test.js.map +1 -1
  785. package/dist/test-helpers/assertions.d.ts +6 -0
  786. package/dist/test-helpers/assertions.d.ts.map +1 -0
  787. package/dist/test-helpers/assertions.js +11 -0
  788. package/dist/test-helpers/assertions.js.map +1 -0
  789. package/dist/test-helpers/env-utils.d.ts +0 -64
  790. package/dist/test-helpers/env-utils.d.ts.map +1 -1
  791. package/dist/test-helpers/env-utils.js +0 -100
  792. package/dist/test-helpers/env-utils.js.map +1 -1
  793. package/dist/test-helpers/fuzz-generators.d.ts.map +1 -1
  794. package/dist/test-helpers/fuzz-generators.js +62 -22
  795. package/dist/test-helpers/fuzz-generators.js.map +1 -1
  796. package/dist/test-helpers/index.d.ts +3 -2
  797. package/dist/test-helpers/index.d.ts.map +1 -1
  798. package/dist/test-helpers/index.js +4 -2
  799. package/dist/test-helpers/index.js.map +1 -1
  800. package/dist/test-helpers/memfs-utils.test.js +81 -76
  801. package/dist/test-helpers/memfs-utils.test.js.map +1 -1
  802. package/dist/test-helpers/mock-backends.d.ts +19 -17
  803. package/dist/test-helpers/mock-backends.d.ts.map +1 -1
  804. package/dist/test-helpers/mock-backends.js +16 -4
  805. package/dist/test-helpers/mock-backends.js.map +1 -1
  806. package/dist/test-helpers/mock-backends.test.js +43 -112
  807. package/dist/test-helpers/mock-backends.test.js.map +1 -1
  808. package/dist/test-helpers/race-condition-helpers.d.ts.map +1 -1
  809. package/dist/test-helpers/race-condition-helpers.js +3 -2
  810. package/dist/test-helpers/race-condition-helpers.js.map +1 -1
  811. package/dist/test-helpers/schema-validators.d.ts +2 -2
  812. package/dist/test-helpers/schema-validators.d.ts.map +1 -1
  813. package/dist/test-helpers/schema-validators.js +35 -31
  814. package/dist/test-helpers/schema-validators.js.map +1 -1
  815. package/dist/test-helpers/test-constants.d.ts +74 -0
  816. package/dist/test-helpers/test-constants.d.ts.map +1 -0
  817. package/dist/test-helpers/test-constants.js +78 -0
  818. package/dist/test-helpers/test-constants.js.map +1 -0
  819. package/dist/test-helpers/test-data-builders.d.ts +25 -7
  820. package/dist/test-helpers/test-data-builders.d.ts.map +1 -1
  821. package/dist/test-helpers/test-data-builders.js +32 -9
  822. package/dist/test-helpers/test-data-builders.js.map +1 -1
  823. package/dist/test-helpers/test-data-builders.test.js +116 -107
  824. package/dist/test-helpers/test-data-builders.test.js.map +1 -1
  825. package/dist/test-helpers/tool-validators.d.ts +1 -1
  826. package/dist/test-helpers/tool-validators.d.ts.map +1 -1
  827. package/dist/test-helpers/tool-validators.js +10 -10
  828. package/dist/test-helpers/tool-validators.js.map +1 -1
  829. package/dist/tools/audit-trail.d.ts +170 -0
  830. package/dist/tools/audit-trail.d.ts.map +1 -0
  831. package/dist/tools/audit-trail.js +109 -0
  832. package/dist/tools/audit-trail.js.map +1 -0
  833. package/dist/tools/audit-trail.test.d.ts +5 -0
  834. package/dist/tools/audit-trail.test.d.ts.map +1 -0
  835. package/dist/tools/audit-trail.test.js +122 -0
  836. package/dist/tools/audit-trail.test.js.map +1 -0
  837. package/dist/tools/context-stats.d.ts +6 -20
  838. package/dist/tools/context-stats.d.ts.map +1 -1
  839. package/dist/tools/context-stats.js +106 -90
  840. package/dist/tools/context-stats.js.map +1 -1
  841. package/dist/tools/context-stats.test.js +109 -60
  842. package/dist/tools/context-stats.test.js.map +1 -1
  843. package/dist/tools/detect-trace-anomalies.d.ts +123 -0
  844. package/dist/tools/detect-trace-anomalies.d.ts.map +1 -0
  845. package/dist/tools/detect-trace-anomalies.js +66 -0
  846. package/dist/tools/detect-trace-anomalies.js.map +1 -0
  847. package/dist/tools/estimate-cost.d.ts +77 -0
  848. package/dist/tools/estimate-cost.d.ts.map +1 -0
  849. package/dist/tools/estimate-cost.js +104 -0
  850. package/dist/tools/estimate-cost.js.map +1 -0
  851. package/dist/tools/estimate-cost.test.d.ts +5 -0
  852. package/dist/tools/estimate-cost.test.d.ts.map +1 -0
  853. package/dist/tools/estimate-cost.test.js +343 -0
  854. package/dist/tools/estimate-cost.test.js.map +1 -0
  855. package/dist/tools/export-base.d.ts +77 -0
  856. package/dist/tools/export-base.d.ts.map +1 -0
  857. package/dist/tools/export-base.js +150 -0
  858. package/dist/tools/export-base.js.map +1 -0
  859. package/dist/tools/export-base.test.d.ts +18 -0
  860. package/dist/tools/export-base.test.d.ts.map +1 -0
  861. package/dist/tools/export-base.test.js +220 -0
  862. package/dist/tools/export-base.test.js.map +1 -0
  863. package/dist/tools/export-confident.d.ts +149 -0
  864. package/dist/tools/export-confident.d.ts.map +1 -0
  865. package/dist/tools/export-confident.js +36 -0
  866. package/dist/tools/export-confident.js.map +1 -0
  867. package/dist/tools/export-confident.test.d.ts +7 -0
  868. package/dist/tools/export-confident.test.d.ts.map +1 -0
  869. package/dist/tools/export-confident.test.js +336 -0
  870. package/dist/tools/export-confident.test.js.map +1 -0
  871. package/dist/tools/export-datadog.d.ts +121 -0
  872. package/dist/tools/export-datadog.d.ts.map +1 -0
  873. package/dist/tools/export-datadog.js +158 -0
  874. package/dist/tools/export-datadog.js.map +1 -0
  875. package/dist/tools/export-datadog.test.d.ts +8 -0
  876. package/dist/tools/export-datadog.test.d.ts.map +1 -0
  877. package/dist/tools/export-datadog.test.js +376 -0
  878. package/dist/tools/export-datadog.test.js.map +1 -0
  879. package/dist/tools/export-jaeger.d.ts +100 -0
  880. package/dist/tools/export-jaeger.d.ts.map +1 -0
  881. package/dist/tools/export-jaeger.js +154 -0
  882. package/dist/tools/export-jaeger.js.map +1 -0
  883. package/dist/tools/export-jaeger.test.d.ts +2 -0
  884. package/dist/tools/export-jaeger.test.d.ts.map +1 -0
  885. package/dist/tools/export-jaeger.test.js +113 -0
  886. package/dist/tools/export-jaeger.test.js.map +1 -0
  887. package/dist/tools/export-langfuse.d.ts +135 -0
  888. package/dist/tools/export-langfuse.d.ts.map +1 -0
  889. package/dist/tools/export-langfuse.js +33 -0
  890. package/dist/tools/export-langfuse.js.map +1 -0
  891. package/dist/tools/export-langfuse.test.d.ts +7 -0
  892. package/dist/tools/export-langfuse.test.d.ts.map +1 -0
  893. package/dist/tools/export-langfuse.test.js +292 -0
  894. package/dist/tools/export-langfuse.test.js.map +1 -0
  895. package/dist/tools/export-phoenix.d.ts +170 -0
  896. package/dist/tools/export-phoenix.d.ts.map +1 -0
  897. package/dist/tools/export-phoenix.js +47 -0
  898. package/dist/tools/export-phoenix.js.map +1 -0
  899. package/dist/tools/export-phoenix.test.d.ts +7 -0
  900. package/dist/tools/export-phoenix.test.d.ts.map +1 -0
  901. package/dist/tools/export-phoenix.test.js +317 -0
  902. package/dist/tools/export-phoenix.test.js.map +1 -0
  903. package/dist/tools/get-trace-url.d.ts +2 -10
  904. package/dist/tools/get-trace-url.d.ts.map +1 -1
  905. package/dist/tools/get-trace-url.js +5 -8
  906. package/dist/tools/get-trace-url.js.map +1 -1
  907. package/dist/tools/get-trace-url.test.js +81 -399
  908. package/dist/tools/get-trace-url.test.js.map +1 -1
  909. package/dist/tools/hallucination-detection.d.ts +203 -0
  910. package/dist/tools/hallucination-detection.d.ts.map +1 -0
  911. package/dist/tools/hallucination-detection.js +189 -0
  912. package/dist/tools/hallucination-detection.js.map +1 -0
  913. package/dist/tools/hallucination-detection.test.d.ts +5 -0
  914. package/dist/tools/hallucination-detection.test.d.ts.map +1 -0
  915. package/dist/tools/hallucination-detection.test.js +529 -0
  916. package/dist/tools/hallucination-detection.test.js.map +1 -0
  917. package/dist/tools/health-check.d.ts +35 -16
  918. package/dist/tools/health-check.d.ts.map +1 -1
  919. package/dist/tools/health-check.js +101 -85
  920. package/dist/tools/health-check.js.map +1 -1
  921. package/dist/tools/health-check.test.js +72 -165
  922. package/dist/tools/health-check.test.js.map +1 -1
  923. package/dist/tools/index.d.ts +19 -0
  924. package/dist/tools/index.d.ts.map +1 -1
  925. package/dist/tools/index.js +19 -0
  926. package/dist/tools/index.js.map +1 -1
  927. package/dist/tools/ingest-constants.d.ts +8 -0
  928. package/dist/tools/ingest-constants.d.ts.map +1 -0
  929. package/dist/tools/ingest-constants.js +8 -0
  930. package/dist/tools/ingest-constants.js.map +1 -0
  931. package/dist/tools/ingest-spans.d.ts +45 -0
  932. package/dist/tools/ingest-spans.d.ts.map +1 -0
  933. package/dist/tools/ingest-spans.js +129 -0
  934. package/dist/tools/ingest-spans.js.map +1 -0
  935. package/dist/tools/ingest-spans.test.d.ts +5 -0
  936. package/dist/tools/ingest-spans.test.d.ts.map +1 -0
  937. package/dist/tools/ingest-spans.test.js +250 -0
  938. package/dist/tools/ingest-spans.test.js.map +1 -0
  939. package/dist/tools/ingest-traces.d.ts +76 -0
  940. package/dist/tools/ingest-traces.d.ts.map +1 -0
  941. package/dist/tools/ingest-traces.js +164 -0
  942. package/dist/tools/ingest-traces.js.map +1 -0
  943. package/dist/tools/ingest-traces.test.d.ts +5 -0
  944. package/dist/tools/ingest-traces.test.d.ts.map +1 -0
  945. package/dist/tools/ingest-traces.test.js +483 -0
  946. package/dist/tools/ingest-traces.test.js.map +1 -0
  947. package/dist/tools/inject-evaluations.d.ts +254 -0
  948. package/dist/tools/inject-evaluations.d.ts.map +1 -0
  949. package/dist/tools/inject-evaluations.js +133 -0
  950. package/dist/tools/inject-evaluations.js.map +1 -0
  951. package/dist/tools/inject-evaluations.test.d.ts +5 -0
  952. package/dist/tools/inject-evaluations.test.d.ts.map +1 -0
  953. package/dist/tools/inject-evaluations.test.js +371 -0
  954. package/dist/tools/inject-evaluations.test.js.map +1 -0
  955. package/dist/tools/manage-datasets.d.ts +850 -0
  956. package/dist/tools/manage-datasets.d.ts.map +1 -0
  957. package/dist/tools/manage-datasets.js +139 -0
  958. package/dist/tools/manage-datasets.js.map +1 -0
  959. package/dist/tools/manage-datasets.test.d.ts +5 -0
  960. package/dist/tools/manage-datasets.test.d.ts.map +1 -0
  961. package/dist/tools/manage-datasets.test.js +430 -0
  962. package/dist/tools/manage-datasets.test.js.map +1 -0
  963. package/dist/tools/multi-agent-coordination.d.ts +178 -0
  964. package/dist/tools/multi-agent-coordination.d.ts.map +1 -0
  965. package/dist/tools/multi-agent-coordination.js +270 -0
  966. package/dist/tools/multi-agent-coordination.js.map +1 -0
  967. package/dist/tools/multi-agent-coordination.test.d.ts +5 -0
  968. package/dist/tools/multi-agent-coordination.test.d.ts.map +1 -0
  969. package/dist/tools/multi-agent-coordination.test.js +530 -0
  970. package/dist/tools/multi-agent-coordination.test.js.map +1 -0
  971. package/dist/tools/query-evaluations.d.ts +154 -91
  972. package/dist/tools/query-evaluations.d.ts.map +1 -1
  973. package/dist/tools/query-evaluations.js +206 -169
  974. package/dist/tools/query-evaluations.js.map +1 -1
  975. package/dist/tools/query-evaluations.test.js +386 -391
  976. package/dist/tools/query-evaluations.test.js.map +1 -1
  977. package/dist/tools/query-llm-events.d.ts +100 -75
  978. package/dist/tools/query-llm-events.d.ts.map +1 -1
  979. package/dist/tools/query-llm-events.js +106 -80
  980. package/dist/tools/query-llm-events.js.map +1 -1
  981. package/dist/tools/query-llm-events.test.js +183 -346
  982. package/dist/tools/query-llm-events.test.js.map +1 -1
  983. package/dist/tools/query-logs.d.ts +45 -58
  984. package/dist/tools/query-logs.d.ts.map +1 -1
  985. package/dist/tools/query-logs.js +54 -101
  986. package/dist/tools/query-logs.js.map +1 -1
  987. package/dist/tools/query-logs.test.js +118 -314
  988. package/dist/tools/query-logs.test.js.map +1 -1
  989. package/dist/tools/query-metric-histograms.d.ts +112 -0
  990. package/dist/tools/query-metric-histograms.d.ts.map +1 -0
  991. package/dist/tools/query-metric-histograms.js +69 -0
  992. package/dist/tools/query-metric-histograms.js.map +1 -0
  993. package/dist/tools/query-metric-histograms.test.d.ts +5 -0
  994. package/dist/tools/query-metric-histograms.test.d.ts.map +1 -0
  995. package/dist/tools/query-metric-histograms.test.js +209 -0
  996. package/dist/tools/query-metric-histograms.test.js.map +1 -0
  997. package/dist/tools/query-metrics.d.ts +159 -60
  998. package/dist/tools/query-metrics.d.ts.map +1 -1
  999. package/dist/tools/query-metrics.js +133 -111
  1000. package/dist/tools/query-metrics.js.map +1 -1
  1001. package/dist/tools/query-metrics.test.js +314 -389
  1002. package/dist/tools/query-metrics.test.js.map +1 -1
  1003. package/dist/tools/query-regressions.d.ts +76 -0
  1004. package/dist/tools/query-regressions.d.ts.map +1 -0
  1005. package/dist/tools/query-regressions.js +122 -0
  1006. package/dist/tools/query-regressions.js.map +1 -0
  1007. package/dist/tools/query-regressions.test.d.ts +8 -0
  1008. package/dist/tools/query-regressions.test.d.ts.map +1 -0
  1009. package/dist/tools/query-regressions.test.js +129 -0
  1010. package/dist/tools/query-regressions.test.js.map +1 -0
  1011. package/dist/tools/query-traces.d.ts +103 -71
  1012. package/dist/tools/query-traces.d.ts.map +1 -1
  1013. package/dist/tools/query-traces.js +75 -106
  1014. package/dist/tools/query-traces.js.map +1 -1
  1015. package/dist/tools/query-traces.test.js +140 -846
  1016. package/dist/tools/query-traces.test.js.map +1 -1
  1017. package/dist/tools/query-verifications.d.ts +123 -0
  1018. package/dist/tools/query-verifications.d.ts.map +1 -0
  1019. package/dist/tools/query-verifications.js +102 -0
  1020. package/dist/tools/query-verifications.js.map +1 -0
  1021. package/dist/tools/query-verifications.test.d.ts +5 -0
  1022. package/dist/tools/query-verifications.test.d.ts.map +1 -0
  1023. package/dist/tools/query-verifications.test.js +163 -0
  1024. package/dist/tools/query-verifications.test.js.map +1 -0
  1025. package/dist/tools/routing-telemetry.d.ts +168 -0
  1026. package/dist/tools/routing-telemetry.d.ts.map +1 -0
  1027. package/dist/tools/routing-telemetry.js +267 -0
  1028. package/dist/tools/routing-telemetry.js.map +1 -0
  1029. package/dist/tools/routing-telemetry.test.d.ts +5 -0
  1030. package/dist/tools/routing-telemetry.test.d.ts.map +1 -0
  1031. package/dist/tools/routing-telemetry.test.js +747 -0
  1032. package/dist/tools/routing-telemetry.test.js.map +1 -0
  1033. package/dist/tools/setup-claudeignore.d.ts +4 -32
  1034. package/dist/tools/setup-claudeignore.d.ts.map +1 -1
  1035. package/dist/tools/setup-claudeignore.js +18 -22
  1036. package/dist/tools/setup-claudeignore.js.map +1 -1
  1037. package/dist/tools/setup-claudeignore.test.js +50 -49
  1038. package/dist/tools/setup-claudeignore.test.js.map +1 -1
  1039. package/dist/tools/token-budget.d.ts +170 -0
  1040. package/dist/tools/token-budget.d.ts.map +1 -0
  1041. package/dist/tools/token-budget.js +219 -0
  1042. package/dist/tools/token-budget.js.map +1 -0
  1043. package/dist/tools/token-budget.test.d.ts +5 -0
  1044. package/dist/tools/token-budget.test.d.ts.map +1 -0
  1045. package/dist/tools/token-budget.test.js +293 -0
  1046. package/dist/tools/token-budget.test.js.map +1 -0
  1047. package/package.json +76 -6
  1048. package/dist/backends/local-jsonl.test.d.ts +0 -2
  1049. package/dist/backends/local-jsonl.test.d.ts.map +0 -1
  1050. package/dist/backends/local-jsonl.test.js +0 -4651
  1051. package/dist/backends/local-jsonl.test.js.map +0 -1
  1052. package/dist/backends/signoz-api-circuit-breaker.test.d.ts +0 -6
  1053. package/dist/backends/signoz-api-circuit-breaker.test.d.ts.map +0 -1
  1054. package/dist/backends/signoz-api-circuit-breaker.test.js +0 -548
  1055. package/dist/backends/signoz-api-circuit-breaker.test.js.map +0 -1
  1056. package/dist/backends/signoz-api-rate-limiter.test.d.ts +0 -6
  1057. package/dist/backends/signoz-api-rate-limiter.test.d.ts.map +0 -1
  1058. package/dist/backends/signoz-api-rate-limiter.test.js +0 -389
  1059. package/dist/backends/signoz-api-rate-limiter.test.js.map +0 -1
  1060. package/dist/backends/signoz-api-ssrf.test.d.ts +0 -6
  1061. package/dist/backends/signoz-api-ssrf.test.d.ts.map +0 -1
  1062. package/dist/backends/signoz-api-ssrf.test.js +0 -216
  1063. package/dist/backends/signoz-api-ssrf.test.js.map +0 -1
  1064. package/dist/backends/signoz-api-test-helpers.d.ts +0 -80
  1065. package/dist/backends/signoz-api-test-helpers.d.ts.map +0 -1
  1066. package/dist/backends/signoz-api-test-helpers.js +0 -79
  1067. package/dist/backends/signoz-api-test-helpers.js.map +0 -1
  1068. package/dist/backends/signoz-api.d.ts +0 -95
  1069. package/dist/backends/signoz-api.d.ts.map +0 -1
  1070. package/dist/backends/signoz-api.integration.test.d.ts +0 -8
  1071. package/dist/backends/signoz-api.integration.test.d.ts.map +0 -1
  1072. package/dist/backends/signoz-api.integration.test.js +0 -137
  1073. package/dist/backends/signoz-api.integration.test.js.map +0 -1
  1074. package/dist/backends/signoz-api.js +0 -1016
  1075. package/dist/backends/signoz-api.js.map +0 -1
  1076. package/dist/backends/signoz-api.test.d.ts +0 -11
  1077. package/dist/backends/signoz-api.test.d.ts.map +0 -1
  1078. package/dist/backends/signoz-api.test.js +0 -831
  1079. package/dist/backends/signoz-api.test.js.map +0 -1
  1080. package/dist/lib/cache.d.ts +0 -77
  1081. package/dist/lib/cache.d.ts.map +0 -1
  1082. package/dist/lib/cache.js +0 -119
  1083. package/dist/lib/cache.js.map +0 -1
  1084. package/dist/lib/cache.test.d.ts.map +0 -1
  1085. package/dist/lib/cache.test.js.map +0 -1
  1086. package/dist/lib/circuit-breaker.d.ts +0 -83
  1087. package/dist/lib/circuit-breaker.d.ts.map +0 -1
  1088. package/dist/lib/circuit-breaker.js +0 -125
  1089. package/dist/lib/circuit-breaker.js.map +0 -1
  1090. package/dist/lib/circuit-breaker.test.d.ts.map +0 -1
  1091. package/dist/lib/circuit-breaker.test.js.map +0 -1
  1092. package/dist/lib/constants-symlink.test.d.ts.map +0 -1
  1093. package/dist/lib/constants-symlink.test.js.map +0 -1
  1094. package/dist/lib/constants.d.ts +0 -108
  1095. package/dist/lib/constants.d.ts.map +0 -1
  1096. package/dist/lib/constants.js +0 -350
  1097. package/dist/lib/constants.js.map +0 -1
  1098. package/dist/lib/constants.test.d.ts.map +0 -1
  1099. package/dist/lib/constants.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.map +0 -1
  1102. package/dist/lib/error-sanitizer.d.ts.map +0 -1
  1103. package/dist/lib/error-sanitizer.js.map +0 -1
  1104. package/dist/lib/error-sanitizer.test.d.ts.map +0 -1
  1105. package/dist/lib/error-sanitizer.test.js.map +0 -1
  1106. package/dist/lib/error-types.d.ts.map +0 -1
  1107. package/dist/lib/error-types.js.map +0 -1
  1108. package/dist/lib/error-types.test.d.ts.map +0 -1
  1109. package/dist/lib/error-types.test.js.map +0 -1
  1110. package/dist/lib/file-utils.d.ts.map +0 -1
  1111. package/dist/lib/file-utils.js.map +0 -1
  1112. package/dist/lib/file-utils.test.d.ts.map +0 -1
  1113. package/dist/lib/file-utils.test.js.map +0 -1
  1114. package/dist/lib/indexer.d.ts +0 -96
  1115. package/dist/lib/indexer.d.ts.map +0 -1
  1116. package/dist/lib/indexer.js.map +0 -1
  1117. package/dist/lib/indexer.test.d.ts.map +0 -1
  1118. package/dist/lib/indexer.test.js.map +0 -1
  1119. package/dist/lib/input-validator.d.ts.map +0 -1
  1120. package/dist/lib/input-validator.fuzz.test.d.ts.map +0 -1
  1121. package/dist/lib/input-validator.fuzz.test.js.map +0 -1
  1122. package/dist/lib/input-validator.js.map +0 -1
  1123. package/dist/lib/input-validator.test.d.ts.map +0 -1
  1124. package/dist/lib/input-validator.test.js.map +0 -1
  1125. package/dist/lib/logger.d.ts.map +0 -1
  1126. package/dist/lib/logger.js +0 -81
  1127. package/dist/lib/logger.js.map +0 -1
  1128. package/dist/lib/logger.test.d.ts.map +0 -1
  1129. package/dist/lib/logger.test.js.map +0 -1
  1130. package/dist/lib/otlp-export.d.ts.map +0 -1
  1131. package/dist/lib/otlp-export.js.map +0 -1
  1132. package/dist/lib/query-sanitizer.d.ts.map +0 -1
  1133. package/dist/lib/query-sanitizer.js.map +0 -1
  1134. package/dist/lib/query-sanitizer.test.d.ts.map +0 -1
  1135. package/dist/lib/query-sanitizer.test.js.map +0 -1
  1136. package/dist/lib/server-utils.d.ts.map +0 -1
  1137. package/dist/lib/server-utils.js.map +0 -1
  1138. package/dist/lib/shared-schemas.d.ts +0 -81
  1139. package/dist/lib/shared-schemas.d.ts.map +0 -1
  1140. package/dist/lib/shared-schemas.js +0 -80
  1141. package/dist/lib/shared-schemas.js.map +0 -1
  1142. package/dist/lib/shared-schemas.test.d.ts.map +0 -1
  1143. package/dist/lib/shared-schemas.test.js.map +0 -1
  1144. package/dist/lib/toon-encoder.d.ts.map +0 -1
  1145. package/dist/lib/toon-encoder.js.map +0 -1
  1146. package/dist/lib/toon-encoder.test.d.ts.map +0 -1
  1147. package/dist/lib/toon-encoder.test.js.map +0 -1
  1148. package/dist/tools/signoz.integration.test.d.ts +0 -8
  1149. package/dist/tools/signoz.integration.test.d.ts.map +0 -1
  1150. package/dist/tools/signoz.integration.test.js +0 -141
  1151. package/dist/tools/signoz.integration.test.js.map +0 -1
  1152. /package/dist/lib/{constants-symlink.test.d.ts → core/constants-symlink.test.d.ts} +0 -0
  1153. /package/dist/lib/{constants.test.d.ts → core/constants.test.d.ts} +0 -0
  1154. /package/dist/lib/{edge-cases.test.d.ts → core/edge-cases.test.d.ts} +0 -0
  1155. /package/dist/lib/{file-utils.test.d.ts → core/file-utils.test.d.ts} +0 -0
  1156. /package/dist/lib/{input-validator.fuzz.test.d.ts → core/input-validator.fuzz.test.d.ts} +0 -0
  1157. /package/dist/lib/{input-validator.test.d.ts → core/input-validator.test.d.ts} +0 -0
  1158. /package/dist/lib/{logger.test.d.ts → core/logger.test.d.ts} +0 -0
  1159. /package/dist/lib/{logger.test.js → core/logger.test.js} +0 -0
  1160. /package/dist/lib/{shared-schemas.test.d.ts → core/shared-schemas.test.d.ts} +0 -0
  1161. /package/dist/lib/{error-sanitizer.test.d.ts → errors/error-sanitizer.test.d.ts} +0 -0
  1162. /package/dist/lib/{error-types.test.d.ts → errors/error-types.test.d.ts} +0 -0
  1163. /package/dist/lib/{query-sanitizer.d.ts → errors/query-sanitizer.d.ts} +0 -0
  1164. /package/dist/lib/{query-sanitizer.test.d.ts → errors/query-sanitizer.test.d.ts} +0 -0
  1165. /package/dist/lib/{indexer.test.d.ts → observability/indexer.test.d.ts} +0 -0
  1166. /package/dist/lib/{cache.test.d.ts → resilience/cache.test.d.ts} +0 -0
  1167. /package/dist/lib/{circuit-breaker.test.d.ts → resilience/circuit-breaker.test.d.ts} +0 -0
  1168. /package/dist/lib/{toon-encoder.test.d.ts → resilience/toon-encoder.test.d.ts} +0 -0
@@ -1,311 +1,41 @@
1
1
  /**
2
2
  * Unit tests for query-traces.ts
3
3
  */
4
- import { describe, it, beforeEach, afterEach } from 'node:test';
4
+ import { describe, it, beforeEach } from 'vitest';
5
5
  import * as assert from 'node:assert';
6
+ import { MAX_ATTR_KEY_LENGTH, MAX_ATTR_VALUE_LENGTH, MAX_ATTR_FILTERS, } from '../lib/core/shared-schemas.js';
7
+ import { DEFAULT_LIMIT } from '../lib/core/input-validator.js';
8
+ import { ONE_MILLION, } from '../lib/core/units.js';
6
9
  import { queryTraces, queryTracesSchema, queryTracesTool } from './query-traces.js';
7
- import { getMockOptions as getMockBackendOptions } from '../test-helpers/mock-backends.js';
8
- import { validateBackendSchema, validateLimitSchema, validateDateRangeSchema } from '../test-helpers/schema-validators.js';
10
+ import { getMockOptions as getMockBackendOptions, createCapturingBackend } from '../test-helpers/mock-backends.js';
11
+ import { validateLimitSchema, validateDateRangeSchema } from '../test-helpers/schema-validators.js';
9
12
  import { validateToolDefinition } from '../test-helpers/tool-validators.js';
10
- import { captureEnv, restoreEnv, clearSigNozEnv } from '../test-helpers/env-utils.js';
13
+ // ---------- test constants ----------
14
+ // duration fixture values (ms)
15
+ const DURATION_SHORT_MS = 10;
16
+ const DURATION_STANDARD_MS = 100;
17
+ const DURATION_LONG_MS = 1000;
18
+ // finite number test values
19
+ const POSITIVE_HALF = 0.5;
20
+ const NEGATIVE_HALF = -0.5;
21
+ // injection test
22
+ const INJECTION_REPEAT_COUNT = 30;
11
23
  // Mock data storage
12
- const mockStore = { local: [], signoz: [] };
13
- // Options with mock backends
24
+ const mockStore = { local: [] };
14
25
  function getMockOptions() {
15
26
  return getMockBackendOptions(mockStore, 'traces');
16
27
  }
17
- // Capture original env values
18
- const originalEnv = captureEnv();
19
28
  // Pure schema validation (no setup/teardown needed)
20
- describe('queryTracesSchema (pure validation)', () => {
21
- validateBackendSchema(queryTracesSchema, 'queryTracesSchema');
22
- validateLimitSchema(queryTracesSchema, 'queryTracesSchema', 50);
29
+ void describe('queryTracesSchema (pure validation)', () => {
30
+ validateLimitSchema(queryTracesSchema, 'queryTracesSchema', DEFAULT_LIMIT);
23
31
  validateDateRangeSchema(queryTracesSchema, 'queryTracesSchema');
24
32
  });
25
- describe('queryTraces', () => {
33
+ void describe('queryTraces', () => {
26
34
  beforeEach(() => {
27
- // Reset mock data before each test
28
35
  mockStore.local = [];
29
- mockStore.signoz = [];
30
36
  });
31
- describe('schema validation', () => {
32
- it('should validate valid input', () => {
33
- const input = {
34
- backend: 'local',
35
- traceId: 'trace-123',
36
- limit: 50,
37
- };
38
- const result = queryTracesSchema.safeParse(input);
39
- assert.strictEqual(result.success, true);
40
- });
41
- it('should accept all optional filter parameters', () => {
42
- const input = {
43
- backend: 'signoz',
44
- traceId: 'trace-123',
45
- serviceName: 'my-service',
46
- spanName: 'handler',
47
- minDurationMs: 10,
48
- maxDurationMs: 5000,
49
- startDate: '2026-01-01',
50
- endDate: '2026-01-31',
51
- limit: 100,
52
- };
53
- const result = queryTracesSchema.safeParse(input);
54
- assert.strictEqual(result.success, true);
55
- });
56
- it('should reject serviceName exceeding 256 characters', () => {
57
- const input = {
58
- backend: 'local',
59
- serviceName: 'a'.repeat(257),
60
- };
61
- const result = queryTracesSchema.safeParse(input);
62
- assert.strictEqual(result.success, false);
63
- });
64
- it('should reject spanName exceeding 512 characters', () => {
65
- const input = {
66
- backend: 'local',
67
- spanName: 'a'.repeat(513),
68
- };
69
- const result = queryTracesSchema.safeParse(input);
70
- assert.strictEqual(result.success, false);
71
- });
72
- it('should reject agentId exceeding 128 characters', () => {
73
- const input = {
74
- backend: 'local',
75
- agentId: 'a'.repeat(129),
76
- };
77
- const result = queryTracesSchema.safeParse(input);
78
- assert.strictEqual(result.success, false);
79
- });
80
- it('should reject toolName exceeding 256 characters', () => {
81
- const input = {
82
- backend: 'local',
83
- toolName: 'a'.repeat(257),
84
- };
85
- const result = queryTracesSchema.safeParse(input);
86
- assert.strictEqual(result.success, false);
87
- });
88
- it('should accept strings at maximum allowed length', () => {
89
- const input = {
90
- backend: 'local',
91
- serviceName: 'a'.repeat(256),
92
- spanName: 'a'.repeat(512),
93
- agentId: 'a'.repeat(128),
94
- toolName: 'a'.repeat(256),
95
- };
96
- const result = queryTracesSchema.safeParse(input);
97
- assert.strictEqual(result.success, true);
98
- });
99
- });
100
- describe('local backend', () => {
101
- it('should query local backend when backend=local', async () => {
102
- // We need to test the actual behavior without modifying the source
103
- // This test verifies the schema is correct for local backend selection
104
- const input = {
105
- backend: 'local',
106
- limit: 50,
107
- };
108
- const result = queryTracesSchema.safeParse(input);
109
- assert.strictEqual(result.success, true);
110
- if (result.success) {
111
- assert.strictEqual(result.data.backend, 'local');
112
- }
113
- });
114
- it('should filter by traceId from local backend', async () => {
115
- const input = {
116
- backend: 'local',
117
- traceId: 'trace-001',
118
- limit: 50,
119
- };
120
- const result = queryTracesSchema.safeParse(input);
121
- assert.strictEqual(result.success, true);
122
- if (result.success) {
123
- assert.strictEqual(result.data.traceId, 'trace-001');
124
- }
125
- });
126
- it('should filter by serviceName from local backend', async () => {
127
- const input = {
128
- backend: 'local',
129
- serviceName: 'my-service',
130
- limit: 50,
131
- };
132
- const result = queryTracesSchema.safeParse(input);
133
- assert.strictEqual(result.success, true);
134
- if (result.success) {
135
- assert.strictEqual(result.data.serviceName, 'my-service');
136
- }
137
- });
138
- it('should filter by spanName from local backend', async () => {
139
- const input = {
140
- backend: 'local',
141
- spanName: 'http-request',
142
- limit: 50,
143
- };
144
- const result = queryTracesSchema.safeParse(input);
145
- assert.strictEqual(result.success, true);
146
- if (result.success) {
147
- assert.strictEqual(result.data.spanName, 'http-request');
148
- }
149
- });
150
- it('should filter by minDurationMs from local backend', async () => {
151
- const input = {
152
- backend: 'local',
153
- minDurationMs: 100,
154
- limit: 50,
155
- };
156
- const result = queryTracesSchema.safeParse(input);
157
- assert.strictEqual(result.success, true);
158
- if (result.success) {
159
- assert.strictEqual(result.data.minDurationMs, 100);
160
- }
161
- });
162
- it('should filter by maxDurationMs from local backend', async () => {
163
- const input = {
164
- backend: 'local',
165
- maxDurationMs: 5000,
166
- limit: 50,
167
- };
168
- const result = queryTracesSchema.safeParse(input);
169
- assert.strictEqual(result.success, true);
170
- if (result.success) {
171
- assert.strictEqual(result.data.maxDurationMs, 5000);
172
- }
173
- });
174
- it('should filter by date range from local backend', async () => {
175
- const input = {
176
- backend: 'local',
177
- startDate: '2026-01-20',
178
- endDate: '2026-01-28',
179
- limit: 50,
180
- };
181
- const result = queryTracesSchema.safeParse(input);
182
- assert.strictEqual(result.success, true);
183
- if (result.success) {
184
- assert.strictEqual(result.data.startDate, '2026-01-20');
185
- assert.strictEqual(result.data.endDate, '2026-01-28');
186
- }
187
- });
188
- });
189
- describe('SigNoz backend', () => {
190
- it('should accept signoz backend', async () => {
191
- const input = {
192
- backend: 'signoz',
193
- limit: 50,
194
- };
195
- const result = queryTracesSchema.safeParse(input);
196
- assert.strictEqual(result.success, true);
197
- if (result.success) {
198
- assert.strictEqual(result.data.backend, 'signoz');
199
- }
200
- });
201
- it('should filter by traceId from SigNoz backend', async () => {
202
- const input = {
203
- backend: 'signoz',
204
- traceId: 'trace-999',
205
- limit: 50,
206
- };
207
- const result = queryTracesSchema.safeParse(input);
208
- assert.strictEqual(result.success, true);
209
- if (result.success) {
210
- assert.strictEqual(result.data.traceId, 'trace-999');
211
- }
212
- });
213
- it('should filter by serviceName from SigNoz backend', async () => {
214
- const input = {
215
- backend: 'signoz',
216
- serviceName: 'api-service',
217
- limit: 50,
218
- };
219
- const result = queryTracesSchema.safeParse(input);
220
- assert.strictEqual(result.success, true);
221
- if (result.success) {
222
- assert.strictEqual(result.data.serviceName, 'api-service');
223
- }
224
- });
225
- it('should filter by spanName from SigNoz backend', async () => {
226
- const input = {
227
- backend: 'signoz',
228
- spanName: 'database-query',
229
- limit: 50,
230
- };
231
- const result = queryTracesSchema.safeParse(input);
232
- assert.strictEqual(result.success, true);
233
- if (result.success) {
234
- assert.strictEqual(result.data.spanName, 'database-query');
235
- }
236
- });
237
- it('should filter by minDurationMs from SigNoz backend', async () => {
238
- const input = {
239
- backend: 'signoz',
240
- minDurationMs: 500,
241
- limit: 50,
242
- };
243
- const result = queryTracesSchema.safeParse(input);
244
- assert.strictEqual(result.success, true);
245
- if (result.success) {
246
- assert.strictEqual(result.data.minDurationMs, 500);
247
- }
248
- });
249
- it('should filter by date range from SigNoz backend', async () => {
250
- const input = {
251
- backend: 'signoz',
252
- startDate: '2026-01-15',
253
- endDate: '2026-01-28',
254
- limit: 50,
255
- };
256
- const result = queryTracesSchema.safeParse(input);
257
- assert.strictEqual(result.success, true);
258
- if (result.success) {
259
- assert.strictEqual(result.data.startDate, '2026-01-15');
260
- assert.strictEqual(result.data.endDate, '2026-01-28');
261
- }
262
- });
263
- });
264
- describe('auto backend selection', () => {
265
- beforeEach(() => {
266
- mockStore.local = [];
267
- mockStore.signoz = [];
268
- clearSigNozEnv();
269
- });
270
- afterEach(() => {
271
- restoreEnv(originalEnv);
272
- });
273
- it('should accept auto backend schema', async () => {
274
- const input = {
275
- backend: 'auto',
276
- limit: 50,
277
- };
278
- const result = queryTracesSchema.safeParse(input);
279
- assert.strictEqual(result.success, true);
280
- if (result.success) {
281
- assert.strictEqual(result.data.backend, 'auto');
282
- }
283
- });
284
- it('should be the default backend', async () => {
285
- const input = { limit: 50 };
286
- const result = queryTracesSchema.safeParse(input);
287
- assert.strictEqual(result.success, true);
288
- if (result.success) {
289
- assert.strictEqual(result.data.backend, 'auto');
290
- }
291
- });
292
- it('should use local backend when signoz not configured', async () => {
293
- mockStore.local = [
294
- {
295
- traceId: 'trace-local-001',
296
- spanId: 'span-001',
297
- name: 'local-operation',
298
- kind: 'INTERNAL',
299
- durationMs: 10,
300
- status: { code: 0 },
301
- attributes: { 'service.name': 'test-service' },
302
- },
303
- ];
304
- const result = await queryTraces({ backend: 'auto' }, getMockOptions());
305
- assert.strictEqual(result.backend, 'local');
306
- assert.strictEqual(result.count, 1);
307
- });
308
- it('should return local traces when available', async () => {
37
+ void describe('local backend', () => {
38
+ void it('should return local traces when available', async () => {
309
39
  mockStore.local = [
310
40
  {
311
41
  traceId: 'trace-local-002',
@@ -317,65 +47,18 @@ describe('queryTraces', () => {
317
47
  attributes: {},
318
48
  },
319
49
  ];
320
- const result = await queryTraces({ backend: 'auto' }, getMockOptions());
321
- assert.strictEqual(result.backend, 'local');
50
+ const result = await queryTraces({ backend: 'local' }, getMockOptions());
322
51
  assert.strictEqual(result.traces.length, 1);
323
52
  assert.strictEqual(result.traces[0].traceId, 'trace-local-002');
324
53
  });
325
- it('should return empty result with local backend when no traces found', async () => {
326
- mockStore.local = [];
327
- const result = await queryTraces({ backend: 'auto' }, getMockOptions());
328
- assert.ok(result.backend);
54
+ void it('should return empty result when no traces found', async () => {
55
+ const result = await queryTraces({ backend: 'local' }, getMockOptions());
329
56
  assert.strictEqual(result.count, 0);
330
57
  });
331
58
  });
332
- describe('limit parameter', () => {
333
- it('should accept custom limit', async () => {
334
- const input = {
335
- backend: 'local',
336
- limit: 100,
337
- };
338
- const result = queryTracesSchema.safeParse(input);
339
- assert.strictEqual(result.success, true);
340
- if (result.success) {
341
- assert.strictEqual(result.data.limit, 100);
342
- }
343
- });
344
- it('should accept limit of 1', async () => {
345
- const input = {
346
- backend: 'local',
347
- limit: 1,
348
- };
349
- const result = queryTracesSchema.safeParse(input);
350
- assert.strictEqual(result.success, true);
351
- if (result.success) {
352
- assert.strictEqual(result.data.limit, 1);
353
- }
354
- });
355
- it('should accept max limit value of 1000', async () => {
356
- const input = {
357
- backend: 'local',
358
- limit: 1000,
359
- };
360
- const result = queryTracesSchema.safeParse(input);
361
- assert.strictEqual(result.success, true);
362
- if (result.success) {
363
- assert.strictEqual(result.data.limit, 1000);
364
- }
365
- });
366
- it('should reject limit values over 1000', async () => {
367
- const input = {
368
- backend: 'local',
369
- limit: 1001,
370
- };
371
- const result = queryTracesSchema.safeParse(input);
372
- assert.strictEqual(result.success, false);
373
- });
374
- });
375
- describe('sessionId filter', () => {
376
- it('should accept sessionId parameter in schema', () => {
59
+ void describe('sessionId filter', () => {
60
+ void it('should accept sessionId parameter in schema', () => {
377
61
  const input = {
378
- backend: 'local',
379
62
  sessionId: 'session-abc-123',
380
63
  limit: 50,
381
64
  };
@@ -385,118 +68,51 @@ describe('queryTraces', () => {
385
68
  assert.strictEqual(result.data.sessionId, 'session-abc-123');
386
69
  }
387
70
  });
388
- it('should merge sessionId into attributeFilter as session.id', async () => {
389
- // Create a mock backend that captures the query options
390
- let capturedOptions;
391
- const capturingBackend = {
392
- name: 'capturing-backend',
393
- queryTraces: async (options) => {
394
- capturedOptions = options;
395
- return [];
396
- },
397
- queryLogs: async () => [],
398
- queryMetrics: async () => [],
399
- healthCheck: async () => ({ status: 'ok' }),
400
- };
71
+ void it('should merge sessionId into attributeFilter as session.id', async () => {
72
+ const captured = { current: undefined };
73
+ const capturingBackend = createCapturingBackend(captured);
401
74
  await queryTraces({ backend: 'local', sessionId: 'session-xyz-789' }, { localBackend: capturingBackend });
402
- assert.ok(capturedOptions);
403
- assert.deepStrictEqual(capturedOptions.attributeFilter?.['session.id'], 'session-xyz-789');
75
+ assert.ok(captured.current);
76
+ assert.deepStrictEqual(captured.current.attributeFilter?.['session.id'], 'session-xyz-789');
404
77
  });
405
- it('should merge sessionId with existing attributeFilter', async () => {
406
- let capturedOptions;
407
- const capturingBackend = {
408
- name: 'capturing-backend',
409
- queryTraces: async (options) => {
410
- capturedOptions = options;
411
- return [];
412
- },
413
- queryLogs: async () => [],
414
- queryMetrics: async () => [],
415
- healthCheck: async () => ({ status: 'ok' }),
416
- };
78
+ void it('should merge sessionId with existing attributeFilter', async () => {
79
+ const captured = { current: undefined };
80
+ const capturingBackend = createCapturingBackend(captured);
417
81
  await queryTraces({
418
82
  backend: 'local',
419
83
  sessionId: 'session-merge-test',
420
84
  attributeFilter: { 'hook.name': 'session-start' },
421
85
  }, { localBackend: capturingBackend });
422
- assert.ok(capturedOptions);
423
- assert.ok(capturedOptions.attributeFilter);
424
- assert.strictEqual(capturedOptions.attributeFilter['session.id'], 'session-merge-test');
425
- assert.strictEqual(capturedOptions.attributeFilter['hook.name'], 'session-start');
426
- });
427
- it('should not add session.id to attributeFilter when sessionId not provided', async () => {
428
- let capturedOptions;
429
- const capturingBackend = {
430
- name: 'capturing-backend',
431
- queryTraces: async (options) => {
432
- capturedOptions = options;
433
- return [];
434
- },
435
- queryLogs: async () => [],
436
- queryMetrics: async () => [],
437
- healthCheck: async () => ({ status: 'ok' }),
438
- };
86
+ assert.ok(captured.current);
87
+ assert.ok(captured.current.attributeFilter);
88
+ assert.strictEqual(captured.current.attributeFilter['session.id'], 'session-merge-test');
89
+ assert.strictEqual(captured.current.attributeFilter['hook.name'], 'session-start');
90
+ });
91
+ void it('should not add session.id to attributeFilter when sessionId not provided', async () => {
92
+ const captured = { current: undefined };
93
+ const capturingBackend = createCapturingBackend(captured);
439
94
  await queryTraces({ backend: 'local' }, { localBackend: capturingBackend });
440
- assert.ok(capturedOptions);
441
- assert.strictEqual(capturedOptions.attributeFilter, undefined);
442
- });
443
- it('should work with signoz backend', async () => {
444
- let capturedOptions;
445
- const capturingBackend = {
446
- name: 'capturing-signoz',
447
- queryTraces: async (options) => {
448
- capturedOptions = options;
449
- return [];
450
- },
451
- queryLogs: async () => [],
452
- queryMetrics: async () => [],
453
- healthCheck: async () => ({ status: 'ok' }),
454
- };
455
- await queryTraces({ backend: 'signoz', sessionId: 'signoz-session-456' }, { signozBackend: capturingBackend });
456
- assert.ok(capturedOptions);
457
- assert.deepStrictEqual(capturedOptions.attributeFilter?.['session.id'], 'signoz-session-456');
95
+ assert.ok(captured.current);
96
+ assert.strictEqual(captured.current.attributeFilter, undefined);
458
97
  });
459
98
  });
460
- describe('attribute filter', () => {
461
- it('should accept attributeFilter with string values', async () => {
462
- const input = {
463
- backend: 'local',
464
- attributeFilter: { 'hook.name': 'session-start' },
465
- limit: 50,
466
- };
467
- const result = queryTracesSchema.safeParse(input);
468
- assert.strictEqual(result.success, true);
469
- if (result.success) {
470
- assert.deepStrictEqual(result.data.attributeFilter, { 'hook.name': 'session-start' });
471
- }
472
- });
473
- it('should accept attributeFilter with number values', async () => {
474
- const input = {
475
- backend: 'local',
476
- attributeFilter: { 'http.status_code': 200 },
477
- limit: 50,
478
- };
479
- const result = queryTracesSchema.safeParse(input);
480
- assert.strictEqual(result.success, true);
481
- if (result.success) {
482
- assert.deepStrictEqual(result.data.attributeFilter, { 'http.status_code': 200 });
483
- }
484
- });
485
- it('should accept attributeFilter with boolean values', async () => {
486
- const input = {
487
- backend: 'local',
488
- attributeFilter: { 'mcp.success': true },
489
- limit: 50,
490
- };
491
- const result = queryTracesSchema.safeParse(input);
492
- assert.strictEqual(result.success, true);
493
- if (result.success) {
494
- assert.deepStrictEqual(result.data.attributeFilter, { 'mcp.success': true });
99
+ void describe('attribute filter', () => {
100
+ void it('should accept attributeFilter with string, number, and boolean values', () => {
101
+ const cases = [
102
+ { label: 'string', filter: { 'hook.name': 'session-start' } },
103
+ { label: 'number', filter: { 'http.status_code': 200 } },
104
+ { label: 'boolean', filter: { 'mcp.success': true } },
105
+ ];
106
+ for (const { label, filter } of cases) {
107
+ const result = queryTracesSchema.safeParse({ attributeFilter: filter, limit: 50 });
108
+ assert.strictEqual(result.success, true, `Should accept ${label} value`);
109
+ if (result.success) {
110
+ assert.deepStrictEqual(result.data.attributeFilter, filter);
111
+ }
495
112
  }
496
113
  });
497
- it('should accept attributeFilter with multiple attributes', async () => {
114
+ void it('should accept attributeFilter with multiple attributes', () => {
498
115
  const input = {
499
- backend: 'local',
500
116
  attributeFilter: {
501
117
  'hook.name': 'mcp-pre-tool',
502
118
  'mcp.server': 'signoz',
@@ -512,9 +128,8 @@ describe('queryTraces', () => {
512
128
  assert.strictEqual(result.data.attributeFilter?.['mcp.success'], true);
513
129
  }
514
130
  });
515
- it('should accept attributeFilter combined with other filters', async () => {
131
+ void it('should accept attributeFilter combined with other filters', () => {
516
132
  const input = {
517
- backend: 'local',
518
133
  spanName: 'hook',
519
134
  attributeFilter: { 'agent.type': 'Explore' },
520
135
  minDurationMs: 100,
@@ -525,37 +140,14 @@ describe('queryTraces', () => {
525
140
  if (result.success) {
526
141
  assert.strictEqual(result.data.spanName, 'hook');
527
142
  assert.deepStrictEqual(result.data.attributeFilter, { 'agent.type': 'Explore' });
528
- assert.strictEqual(result.data.minDurationMs, 100);
143
+ assert.strictEqual(result.data.minDurationMs, DURATION_STANDARD_MS);
529
144
  }
530
145
  });
531
- // Security validation tests for attributeFilter
532
- describe('attributeFilter security validation', () => {
533
- it('should reject SQL injection in attribute key', () => {
534
- const input = {
535
- backend: 'local',
536
- attributeFilter: { "'; DROP TABLE traces; --": 'value' },
537
- limit: 50,
538
- };
539
- const result = queryTracesSchema.safeParse(input);
540
- assert.strictEqual(result.success, false);
541
- if (!result.success) {
542
- assert.ok(result.error.message.includes('Invalid attribute name'));
543
- }
544
- });
545
- it('should reject attribute key with spaces', () => {
546
- const input = {
547
- backend: 'local',
548
- attributeFilter: { 'attribute with spaces': 'value' },
549
- limit: 50,
550
- };
551
- const result = queryTracesSchema.safeParse(input);
552
- assert.strictEqual(result.success, false);
553
- });
554
- it('should reject attribute key with special characters', () => {
555
- const specialChars = ['@', '#', '$', '%', '^', '&', '*', '(', ')', '-', '+', '=', '[', ']', '{', '}', '|', '\\', '/', ':', ';', '"', "'", '<', '>', ',', '?', '!', '~', '`'];
146
+ void describe('attributeFilter security validation', () => {
147
+ void it('should reject attribute key with special characters', () => {
148
+ const specialChars = ['@', '#', '$', '%', '^', '&', '*', '(', ')', '-', '+', '=', '[', ']', '{', '}', '|', '\\', '/', ':', ';', '"', "'", '<', '>', ',', '?', '!', '~', '`', ' '];
556
149
  for (const char of specialChars) {
557
150
  const input = {
558
- backend: 'local',
559
151
  attributeFilter: { [`attr${char}name`]: 'value' },
560
152
  limit: 50,
561
153
  };
@@ -563,7 +155,7 @@ describe('queryTraces', () => {
563
155
  assert.strictEqual(result.success, false, `Should reject key with '${char}'`);
564
156
  }
565
157
  });
566
- it('should accept valid attribute key patterns', () => {
158
+ void it('should accept valid attribute key patterns', () => {
567
159
  const validKeys = [
568
160
  'hook.name',
569
161
  'service_name',
@@ -577,7 +169,6 @@ describe('queryTraces', () => {
577
169
  ];
578
170
  for (const key of validKeys) {
579
171
  const input = {
580
- backend: 'local',
581
172
  attributeFilter: { [key]: 'value' },
582
173
  limit: 50,
583
174
  };
@@ -585,69 +176,31 @@ describe('queryTraces', () => {
585
176
  assert.strictEqual(result.success, true, `Should accept key '${key}'`);
586
177
  }
587
178
  });
588
- it('should reject attribute key exceeding 100 characters', () => {
589
- const longKey = 'a'.repeat(101);
590
- const input = {
591
- backend: 'local',
592
- attributeFilter: { [longKey]: 'value' },
593
- limit: 50,
594
- };
595
- const result = queryTracesSchema.safeParse(input);
596
- assert.strictEqual(result.success, false);
597
- });
598
- it('should accept attribute key at exactly 100 characters', () => {
599
- const maxKey = 'a'.repeat(100);
600
- const input = {
601
- backend: 'local',
602
- attributeFilter: { [maxKey]: 'value' },
603
- limit: 50,
604
- };
605
- const result = queryTracesSchema.safeParse(input);
606
- assert.strictEqual(result.success, true);
607
- });
608
- it('should reject string value exceeding 500 characters', () => {
609
- const longValue = 'a'.repeat(501);
610
- const input = {
611
- backend: 'local',
612
- attributeFilter: { 'valid.key': longValue },
613
- limit: 50,
614
- };
615
- const result = queryTracesSchema.safeParse(input);
616
- assert.strictEqual(result.success, false);
617
- });
618
- it('should accept string value at exactly 500 characters', () => {
619
- const maxValue = 'a'.repeat(500);
620
- const input = {
621
- backend: 'local',
622
- attributeFilter: { 'valid.key': maxValue },
623
- limit: 50,
624
- };
625
- const result = queryTracesSchema.safeParse(input);
626
- assert.strictEqual(result.success, true);
179
+ void it('should enforce max attribute key length boundary', () => {
180
+ const overKey = 'a'.repeat(MAX_ATTR_KEY_LENGTH + 1);
181
+ const maxKey = 'a'.repeat(MAX_ATTR_KEY_LENGTH);
182
+ assert.strictEqual(queryTracesSchema.safeParse({ attributeFilter: { [overKey]: 'value' } }).success, false, 'Should reject key exceeding max length');
183
+ assert.strictEqual(queryTracesSchema.safeParse({ attributeFilter: { [maxKey]: 'value' } }).success, true, 'Should accept key at max length');
627
184
  });
628
- it('should reject non-finite number values (Infinity)', () => {
629
- const input = {
630
- backend: 'local',
631
- attributeFilter: { 'valid.key': Infinity },
632
- limit: 50,
633
- };
634
- const result = queryTracesSchema.safeParse(input);
635
- assert.strictEqual(result.success, false);
185
+ void it('should enforce max attribute value length boundary', () => {
186
+ const overValue = 'a'.repeat(MAX_ATTR_VALUE_LENGTH + 1);
187
+ const maxValue = 'a'.repeat(MAX_ATTR_VALUE_LENGTH);
188
+ assert.strictEqual(queryTracesSchema.safeParse({ attributeFilter: { 'valid.key': overValue } }).success, false, 'Should reject value exceeding max length');
189
+ assert.strictEqual(queryTracesSchema.safeParse({ attributeFilter: { 'valid.key': maxValue } }).success, true, 'Should accept value at max length');
636
190
  });
637
- it('should reject non-finite number values (NaN)', () => {
638
- const input = {
639
- backend: 'local',
640
- attributeFilter: { 'valid.key': NaN },
641
- limit: 50,
642
- };
643
- const result = queryTracesSchema.safeParse(input);
644
- assert.strictEqual(result.success, false);
191
+ void it('should reject non-finite number values', () => {
192
+ for (const value of [Infinity, NaN]) {
193
+ const result = queryTracesSchema.safeParse({
194
+ attributeFilter: { 'valid.key': value },
195
+ limit: 50,
196
+ });
197
+ assert.strictEqual(result.success, false, `Should reject ${value}`);
198
+ }
645
199
  });
646
- it('should accept finite number values', () => {
647
- const finiteNumbers = [0, 1, -1, 100, 1000000, 0.5, -0.5, Number.MAX_SAFE_INTEGER, Number.MIN_SAFE_INTEGER];
200
+ void it('should accept finite number values', () => {
201
+ const finiteNumbers = [0, 1, -1, DURATION_STANDARD_MS, ONE_MILLION, POSITIVE_HALF, NEGATIVE_HALF, Number.MAX_SAFE_INTEGER, Number.MIN_SAFE_INTEGER];
648
202
  for (const num of finiteNumbers) {
649
203
  const input = {
650
- backend: 'local',
651
204
  attributeFilter: { 'valid.key': num },
652
205
  limit: 50,
653
206
  };
@@ -655,13 +208,12 @@ describe('queryTraces', () => {
655
208
  assert.strictEqual(result.success, true, `Should accept number ${num}`);
656
209
  }
657
210
  });
658
- it('should reject more than 20 attribute filters', () => {
211
+ void it('should reject more than max attribute filters', () => {
659
212
  const manyFilters = {};
660
- for (let i = 0; i < 21; i++) {
213
+ for (let i = 0; i < MAX_ATTR_FILTERS + 1; i++) {
661
214
  manyFilters[`attr${i}`] = `value${i}`;
662
215
  }
663
216
  const input = {
664
- backend: 'local',
665
217
  attributeFilter: manyFilters,
666
218
  limit: 50,
667
219
  };
@@ -671,78 +223,54 @@ describe('queryTraces', () => {
671
223
  assert.ok(result.error.message.includes('Maximum 20 attribute filters allowed'));
672
224
  }
673
225
  });
674
- it('should accept exactly 20 attribute filters', () => {
226
+ void it('should accept exactly max attribute filters', () => {
675
227
  const filters = {};
676
- for (let i = 0; i < 20; i++) {
228
+ for (let i = 0; i < MAX_ATTR_FILTERS; i++) {
677
229
  filters[`attr${i}`] = `value${i}`;
678
230
  }
679
231
  const input = {
680
- backend: 'local',
681
232
  attributeFilter: filters,
682
233
  limit: 50,
683
234
  };
684
235
  const result = queryTracesSchema.safeParse(input);
685
236
  assert.strictEqual(result.success, true);
686
237
  });
687
- it('should reject SQL injection patterns in attribute values', () => {
688
- // Note: String values are allowed to contain SQL-like content,
689
- // but they are length-limited. The key restriction provides the primary protection.
690
- // This test verifies that long injection attempts are rejected by length limit.
691
- const longInjection = "'; DROP TABLE traces; --".repeat(30);
238
+ void it('should reject SQL injection patterns in attribute values', () => {
239
+ // Long injection attempts are rejected by length limit
240
+ const longInjection = "'; DROP TABLE traces; --".repeat(INJECTION_REPEAT_COUNT);
692
241
  const input = {
693
- backend: 'local',
694
242
  attributeFilter: { 'valid.key': longInjection },
695
243
  limit: 50,
696
244
  };
697
245
  const result = queryTracesSchema.safeParse(input);
698
246
  assert.strictEqual(result.success, false);
699
247
  });
700
- it('should reject XSS patterns in attribute key', () => {
701
- const xssPatterns = [
702
- '<script>alert(1)</script>',
703
- 'key<img onerror=alert(1)>',
704
- 'key"onclick="alert(1)"',
705
- ];
706
- for (const key of xssPatterns) {
707
- const input = {
708
- backend: 'local',
709
- attributeFilter: { [key]: 'value' },
710
- limit: 50,
711
- };
712
- const result = queryTracesSchema.safeParse(input);
713
- assert.strictEqual(result.success, false, `Should reject XSS key: ${key}`);
714
- }
715
- });
716
- it('should reject empty attribute key', () => {
248
+ void it('should reject empty attribute key', () => {
717
249
  const input = {
718
- backend: 'local',
719
250
  attributeFilter: { '': 'value' },
720
251
  limit: 50,
721
252
  };
722
253
  const result = queryTracesSchema.safeParse(input);
723
254
  assert.strictEqual(result.success, false);
724
255
  });
725
- it('should accept empty attributeFilter object', () => {
256
+ void it('should accept empty attributeFilter object', () => {
726
257
  const input = {
727
- backend: 'local',
728
258
  attributeFilter: {},
729
259
  limit: 50,
730
260
  };
731
261
  const result = queryTracesSchema.safeParse(input);
732
262
  assert.strictEqual(result.success, true);
733
263
  });
734
- it('should reject attribute key with newlines', () => {
264
+ void it('should reject attribute key with newlines', () => {
735
265
  const input = {
736
- backend: 'local',
737
266
  attributeFilter: { 'key\nwith\nnewlines': 'value' },
738
267
  limit: 50,
739
268
  };
740
269
  const result = queryTracesSchema.safeParse(input);
741
270
  assert.strictEqual(result.success, false);
742
271
  });
743
- it('should reject attribute key with tabs', () => {
272
+ void it('should reject attribute key with tabs', () => {
744
273
  const input = {
745
- backend: 'local',
746
274
  attributeFilter: { 'key\twith\ttabs': 'value' },
747
275
  limit: 50,
748
276
  };
@@ -751,212 +279,53 @@ describe('queryTraces', () => {
751
279
  });
752
280
  });
753
281
  });
754
- describe('combined filters', () => {
755
- it('should accept multiple filters together', async () => {
756
- const input = {
757
- backend: 'local',
758
- serviceName: 'auth-service',
759
- spanName: 'login',
760
- minDurationMs: 50,
761
- maxDurationMs: 5000,
762
- limit: 100,
763
- };
764
- const result = queryTracesSchema.safeParse(input);
765
- assert.strictEqual(result.success, true);
766
- if (result.success) {
767
- assert.strictEqual(result.data.serviceName, 'auth-service');
768
- assert.strictEqual(result.data.spanName, 'login');
769
- assert.strictEqual(result.data.minDurationMs, 50);
770
- assert.strictEqual(result.data.maxDurationMs, 5000);
771
- assert.strictEqual(result.data.limit, 100);
772
- }
773
- });
774
- it('should accept filters with date range', async () => {
775
- const input = {
776
- backend: 'signoz',
777
- serviceName: 'api',
778
- startDate: '2026-01-20',
779
- endDate: '2026-01-28',
780
- minDurationMs: 10,
781
- limit: 50,
782
- };
783
- const result = queryTracesSchema.safeParse(input);
784
- assert.strictEqual(result.success, true);
785
- if (result.success) {
786
- assert.strictEqual(result.data.serviceName, 'api');
787
- assert.strictEqual(result.data.startDate, '2026-01-20');
788
- assert.strictEqual(result.data.endDate, '2026-01-28');
789
- }
790
- });
791
- it('should accept traceId with other filters', async () => {
792
- const input = {
793
- backend: 'local',
794
- traceId: 'trace-123',
795
- spanName: 'operation',
796
- limit: 50,
797
- };
798
- const result = queryTracesSchema.safeParse(input);
799
- assert.strictEqual(result.success, true);
800
- if (result.success) {
801
- assert.strictEqual(result.data.traceId, 'trace-123');
802
- assert.strictEqual(result.data.spanName, 'operation');
803
- }
804
- });
805
- });
806
282
  // Use shared tool definition validator
807
283
  validateToolDefinition(queryTracesTool, 'obs_query_traces', queryTracesSchema, queryTraces, ['trace']);
808
- describe('error handling', () => {
809
- it('should accept negative limit (schema does not restrict)', () => {
810
- const input = {
811
- backend: 'local',
812
- limit: -1,
813
- };
814
- const result = queryTracesSchema.safeParse(input);
815
- // Note: Zod number() by default allows negative numbers
816
- // This documents current behavior - schema accepts it
817
- assert.strictEqual(result.success, true);
818
- });
819
- it('should accept invalid date format (schema accepts any string)', () => {
820
- const input = {
821
- backend: 'local',
822
- startDate: 'invalid-date',
823
- limit: 50,
824
- };
825
- const result = queryTracesSchema.safeParse(input);
826
- // Note: Schema accepts any string, doesn't validate date format
827
- // This documents current validation scope
828
- assert.strictEqual(result.success, true);
829
- });
830
- });
831
- describe('handler function', () => {
832
- it('should be exported', () => {
833
- assert.ok(queryTraces);
834
- assert.strictEqual(typeof queryTraces, 'function');
835
- });
836
- it('should accept QueryTracesInput', async () => {
837
- const input = {
838
- backend: 'local',
839
- limit: 50,
840
- };
841
- // Verify input type is accepted by the function signature
842
- assert.ok(input);
843
- });
844
- });
845
- describe('response structure validation', () => {
846
- it('should have expected response fields for local backend', () => {
847
- // Validate the expected response structure
848
- const expectedFields = ['backend', 'count', 'traces'];
849
- expectedFields.forEach(field => {
850
- assert.ok(typeof field === 'string');
851
- });
852
- });
853
- it('should have trace span fields in response', () => {
854
- // Validate expected trace span fields
855
- const expectedSpanFields = ['traceId', 'spanId', 'name', 'kind', 'durationMs', 'status', 'attributes'];
856
- expectedSpanFields.forEach(field => {
857
- assert.ok(typeof field === 'string');
858
- });
859
- });
860
- });
861
- describe('input options conversion', () => {
862
- it('should convert input to query options correctly', async () => {
284
+ void describe('input options conversion', () => {
285
+ void it('should pass all input fields to the backend as query options', async () => {
286
+ const captured = { current: undefined };
287
+ const capturingBackend = createCapturingBackend(captured);
863
288
  const input = {
864
289
  backend: 'local',
865
- traceId: 'trace-123',
290
+ traceId: 'abc123def456abc123def456abc12345',
866
291
  serviceName: 'service',
867
292
  spanName: 'span',
868
- minDurationMs: 10,
869
- maxDurationMs: 1000,
293
+ minDurationMs: DURATION_SHORT_MS,
294
+ maxDurationMs: DURATION_LONG_MS,
870
295
  startDate: '2026-01-20',
871
296
  endDate: '2026-01-28',
872
297
  limit: 50,
873
298
  };
874
- // Validate all input fields are present
875
- assert.strictEqual(input.traceId, 'trace-123');
876
- assert.strictEqual(input.serviceName, 'service');
877
- assert.strictEqual(input.spanName, 'span');
878
- assert.strictEqual(input.minDurationMs, 10);
879
- assert.strictEqual(input.maxDurationMs, 1000);
880
- assert.strictEqual(input.startDate, '2026-01-20');
881
- assert.strictEqual(input.endDate, '2026-01-28');
882
- assert.strictEqual(input.limit, 50);
299
+ await queryTraces(input, { localBackend: capturingBackend });
300
+ assert.ok(captured.current);
301
+ assert.strictEqual(captured.current.traceId, 'abc123def456abc123def456abc12345');
302
+ assert.strictEqual(captured.current.serviceName, 'service');
303
+ assert.strictEqual(captured.current.spanName, 'span');
304
+ assert.strictEqual(captured.current.minDurationMs, DURATION_SHORT_MS);
305
+ assert.strictEqual(captured.current.maxDurationMs, DURATION_LONG_MS);
306
+ assert.strictEqual(captured.current.limit, 50);
883
307
  });
884
308
  });
885
- describe('OTel GenAI agent/tool filters', () => {
886
- it('should accept agentId filter in schema', () => {
887
- const input = {
888
- backend: 'local',
889
- agentId: 'agent-001',
890
- limit: 50,
891
- };
892
- const result = queryTracesSchema.safeParse(input);
893
- assert.strictEqual(result.success, true);
894
- if (result.success) {
895
- assert.strictEqual(result.data.agentId, 'agent-001');
896
- }
897
- });
898
- it('should accept agentName filter in schema', () => {
899
- const input = {
900
- backend: 'local',
901
- agentName: 'Explore',
902
- limit: 50,
903
- };
904
- const result = queryTracesSchema.safeParse(input);
905
- assert.strictEqual(result.success, true);
906
- if (result.success) {
907
- assert.strictEqual(result.data.agentName, 'Explore');
908
- }
909
- });
910
- it('should accept toolName filter in schema', () => {
911
- const input = {
912
- backend: 'local',
913
- toolName: 'Read',
914
- limit: 50,
915
- };
916
- const result = queryTracesSchema.safeParse(input);
917
- assert.strictEqual(result.success, true);
918
- if (result.success) {
919
- assert.strictEqual(result.data.toolName, 'Read');
920
- }
921
- });
922
- it('should accept toolCallId filter in schema', () => {
923
- const input = {
924
- backend: 'local',
925
- toolCallId: 'toolu_12345',
926
- limit: 50,
927
- };
928
- const result = queryTracesSchema.safeParse(input);
929
- assert.strictEqual(result.success, true);
930
- if (result.success) {
931
- assert.strictEqual(result.data.toolCallId, 'toolu_12345');
932
- }
933
- });
934
- it('should accept toolType filter in schema', () => {
935
- const input = {
936
- backend: 'local',
937
- toolType: 'function',
938
- limit: 50,
939
- };
940
- const result = queryTracesSchema.safeParse(input);
941
- assert.strictEqual(result.success, true);
942
- if (result.success) {
943
- assert.strictEqual(result.data.toolType, 'function');
944
- }
945
- });
946
- it('should accept operationName filter in schema', () => {
947
- const input = {
948
- backend: 'local',
949
- operationName: 'invoke_agent',
950
- limit: 50,
951
- };
952
- const result = queryTracesSchema.safeParse(input);
953
- assert.strictEqual(result.success, true);
954
- if (result.success) {
955
- assert.strictEqual(result.data.operationName, 'invoke_agent');
309
+ void describe('OTel GenAI agent/tool filters', () => {
310
+ void it('should accept agent/tool filter fields in schema', () => {
311
+ const cases = [
312
+ { field: 'agentId', value: 'agent-001' },
313
+ { field: 'agentName', value: 'Explore' },
314
+ { field: 'toolName', value: 'Read' },
315
+ { field: 'toolCallId', value: 'toolu_12345' },
316
+ { field: 'toolType', value: 'function' },
317
+ ];
318
+ for (const { field, value } of cases) {
319
+ const result = queryTracesSchema.safeParse({ [field]: value, limit: 50 });
320
+ assert.strictEqual(result.success, true, `Should accept ${field}`);
321
+ if (result.success) {
322
+ const data = result.data;
323
+ assert.strictEqual(data[field], value);
324
+ }
956
325
  }
957
326
  });
958
- it('should validate operationName enum values', () => {
959
- const validOps = ['chat', 'embeddings', 'invoke_agent', 'execute_tool'];
327
+ void it('should validate operationName enum values', () => {
328
+ const validOps = ['chat', 'embeddings', 'invoke_agent', 'execute_tool', 'text_completion', 'generate_content', 'retrieval', 'create_agent', 'invoke_workflow'];
960
329
  for (const op of validOps) {
961
330
  const result = queryTracesSchema.safeParse({ operationName: op });
962
331
  assert.strictEqual(result.success, true);
@@ -965,22 +334,13 @@ describe('queryTraces', () => {
965
334
  }
966
335
  }
967
336
  });
968
- it('should reject invalid operationName', () => {
337
+ void it('should reject invalid operationName', () => {
969
338
  const result = queryTracesSchema.safeParse({ operationName: 'invalid' });
970
339
  assert.strictEqual(result.success, false);
971
340
  });
972
- it('should pass agent/tool filters to backend', async () => {
973
- let capturedOptions;
974
- const capturingBackend = {
975
- name: 'capturing-backend',
976
- queryTraces: async (options) => {
977
- capturedOptions = options;
978
- return [];
979
- },
980
- queryLogs: async () => [],
981
- queryMetrics: async () => [],
982
- healthCheck: async () => ({ status: 'ok' }),
983
- };
341
+ void it('should pass agent/tool filters to backend', async () => {
342
+ const captured = { current: undefined };
343
+ const capturingBackend = createCapturingBackend(captured);
984
344
  await queryTraces({
985
345
  backend: 'local',
986
346
  agentId: 'agent-abc',
@@ -990,79 +350,13 @@ describe('queryTraces', () => {
990
350
  toolType: 'function',
991
351
  operationName: 'execute_tool',
992
352
  }, { localBackend: capturingBackend });
993
- assert.ok(capturedOptions);
994
- assert.strictEqual(capturedOptions.agentId, 'agent-abc');
995
- assert.strictEqual(capturedOptions.agentName, 'Explore');
996
- assert.strictEqual(capturedOptions.toolName, 'Grep');
997
- assert.strictEqual(capturedOptions.toolCallId, 'call-123');
998
- assert.strictEqual(capturedOptions.toolType, 'function');
999
- assert.strictEqual(capturedOptions.operationName, 'execute_tool');
1000
- });
1001
- it('should combine agent/tool filters with other filters', async () => {
1002
- const input = {
1003
- backend: 'local',
1004
- serviceName: 'claude-code',
1005
- spanName: 'tool-call',
1006
- agentId: 'agent-001',
1007
- toolName: 'Read',
1008
- minDurationMs: 100,
1009
- limit: 50,
1010
- };
1011
- const result = queryTracesSchema.safeParse(input);
1012
- assert.strictEqual(result.success, true);
1013
- if (result.success) {
1014
- assert.strictEqual(result.data.serviceName, 'claude-code');
1015
- assert.strictEqual(result.data.spanName, 'tool-call');
1016
- assert.strictEqual(result.data.agentId, 'agent-001');
1017
- assert.strictEqual(result.data.toolName, 'Read');
1018
- assert.strictEqual(result.data.minDurationMs, 100);
1019
- }
1020
- });
1021
- });
1022
- describe('signoz backend with traces', () => {
1023
- beforeEach(() => {
1024
- mockStore.local = [];
1025
- mockStore.signoz = [];
1026
- });
1027
- it('should return traces from signoz backend when backend=signoz', async () => {
1028
- mockStore.signoz = [
1029
- {
1030
- traceId: 'signoz-trace-001',
1031
- spanId: 'signoz-span-001',
1032
- name: 'signoz-operation',
1033
- kind: 'SERVER',
1034
- durationMs: 150,
1035
- status: { code: 0 },
1036
- attributes: { 'service.name': 'api-service' },
1037
- },
1038
- {
1039
- traceId: 'signoz-trace-002',
1040
- spanId: 'signoz-span-002',
1041
- name: 'db-query',
1042
- kind: 'CLIENT',
1043
- durationMs: 50,
1044
- status: { code: 0 },
1045
- attributes: { 'db.system': 'postgresql' },
1046
- },
1047
- ];
1048
- const result = await queryTraces({ backend: 'signoz' }, getMockOptions());
1049
- assert.strictEqual(result.backend, 'signoz');
1050
- assert.strictEqual(result.count, 2);
1051
- assert.strictEqual(result.traces.length, 2);
1052
- assert.strictEqual(result.traces[0].traceId, 'signoz-trace-001');
1053
- assert.strictEqual(result.traces[0].spanId, 'signoz-span-001');
1054
- assert.strictEqual(result.traces[0].name, 'signoz-operation');
1055
- assert.strictEqual(result.traces[0].kind, 'SERVER');
1056
- assert.strictEqual(result.traces[0].durationMs, 150);
1057
- assert.deepStrictEqual(result.traces[0].status, { code: 0 });
1058
- assert.deepStrictEqual(result.traces[0].attributes, { 'service.name': 'api-service' });
1059
- });
1060
- it('should return empty traces from signoz backend', async () => {
1061
- mockStore.signoz = [];
1062
- const result = await queryTraces({ backend: 'signoz' }, getMockOptions());
1063
- assert.strictEqual(result.backend, 'signoz');
1064
- assert.strictEqual(result.count, 0);
1065
- assert.strictEqual(result.traces.length, 0);
353
+ assert.ok(captured.current);
354
+ assert.strictEqual(captured.current.agentId, 'agent-abc');
355
+ assert.strictEqual(captured.current.agentName, 'Explore');
356
+ assert.strictEqual(captured.current.toolName, 'Grep');
357
+ assert.strictEqual(captured.current.toolCallId, 'call-123');
358
+ assert.strictEqual(captured.current.toolType, 'function');
359
+ assert.strictEqual(captured.current.operationName, 'execute_tool');
1066
360
  });
1067
361
  });
1068
362
  });