observability-toolkit 2.0.0 → 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 (1285) hide show
  1. package/README.md +163 -398
  2. package/dist/__tests__/find-constant-dedup.test.d.ts +11 -0
  3. package/dist/__tests__/find-constant-dedup.test.d.ts.map +1 -0
  4. package/dist/__tests__/find-constant-dedup.test.js +132 -0
  5. package/dist/__tests__/find-constant-dedup.test.js.map +1 -0
  6. package/dist/backends/backend-schemas.d.ts +309 -0
  7. package/dist/backends/backend-schemas.d.ts.map +1 -0
  8. package/dist/backends/backend-schemas.js +215 -0
  9. package/dist/backends/backend-schemas.js.map +1 -0
  10. package/dist/backends/cloud.d.ts +46 -0
  11. package/dist/backends/cloud.d.ts.map +1 -0
  12. package/dist/backends/cloud.js +520 -0
  13. package/dist/backends/cloud.js.map +1 -0
  14. package/dist/backends/cloud.test.d.ts +2 -0
  15. package/dist/backends/cloud.test.d.ts.map +1 -0
  16. package/dist/backends/cloud.test.js +436 -0
  17. package/dist/backends/cloud.test.js.map +1 -0
  18. package/dist/backends/index.d.ts +659 -386
  19. package/dist/backends/index.d.ts.map +1 -1
  20. package/dist/backends/index.js +318 -41
  21. package/dist/backends/index.js.map +1 -1
  22. package/dist/backends/index.test.js +578 -57
  23. package/dist/backends/index.test.js.map +1 -1
  24. package/dist/backends/local-jsonl-boolean-search.test.js +8 -7
  25. package/dist/backends/local-jsonl-boolean-search.test.js.map +1 -1
  26. package/dist/backends/local-jsonl-cache.test.js +33 -31
  27. package/dist/backends/local-jsonl-cache.test.js.map +1 -1
  28. package/dist/backends/local-jsonl-circuit-breaker.test.js +9 -7
  29. package/dist/backends/local-jsonl-circuit-breaker.test.js.map +1 -1
  30. package/dist/backends/local-jsonl-export.test.js +73 -58
  31. package/dist/backends/local-jsonl-export.test.js.map +1 -1
  32. package/dist/backends/local-jsonl-index.test.js +52 -50
  33. package/dist/backends/local-jsonl-index.test.js.map +1 -1
  34. package/dist/backends/local-jsonl-logs.test.js +47 -31
  35. package/dist/backends/local-jsonl-logs.test.js.map +1 -1
  36. package/dist/backends/local-jsonl-metrics.test.js +85 -82
  37. package/dist/backends/local-jsonl-metrics.test.js.map +1 -1
  38. package/dist/backends/local-jsonl-otlp-unwrap.test.d.ts +2 -0
  39. package/dist/backends/local-jsonl-otlp-unwrap.test.d.ts.map +1 -0
  40. package/dist/backends/local-jsonl-otlp-unwrap.test.js +602 -0
  41. package/dist/backends/local-jsonl-otlp-unwrap.test.js.map +1 -0
  42. package/dist/backends/local-jsonl-traces.test.js +161 -147
  43. package/dist/backends/local-jsonl-traces.test.js.map +1 -1
  44. package/dist/backends/local-jsonl.d.ts +37 -8
  45. package/dist/backends/local-jsonl.d.ts.map +1 -1
  46. package/dist/backends/local-jsonl.js +1088 -241
  47. package/dist/backends/local-jsonl.js.map +1 -1
  48. package/dist/backends/shared.d.ts +9 -0
  49. package/dist/backends/shared.d.ts.map +1 -0
  50. package/dist/backends/shared.js +9 -0
  51. package/dist/backends/shared.js.map +1 -0
  52. package/dist/generated/opentelemetry/proto/collector/logs/v1/logs_service_pb.d.ts +40 -0
  53. package/dist/generated/opentelemetry/proto/collector/logs/v1/logs_service_pb.d.ts.map +1 -0
  54. package/dist/generated/opentelemetry/proto/collector/logs/v1/logs_service_pb.js +27 -0
  55. package/dist/generated/opentelemetry/proto/collector/logs/v1/logs_service_pb.js.map +1 -0
  56. package/dist/generated/opentelemetry/proto/collector/metrics/v1/metrics_service_pb.d.ts +106 -0
  57. package/dist/generated/opentelemetry/proto/collector/metrics/v1/metrics_service_pb.d.ts.map +1 -0
  58. package/dist/generated/opentelemetry/proto/collector/metrics/v1/metrics_service_pb.js +43 -0
  59. package/dist/generated/opentelemetry/proto/collector/metrics/v1/metrics_service_pb.js.map +1 -0
  60. package/dist/generated/opentelemetry/proto/collector/profiles/v1development/profiles_service_pb.d.ts +111 -0
  61. package/dist/generated/opentelemetry/proto/collector/profiles/v1development/profiles_service_pb.d.ts.map +1 -0
  62. package/dist/generated/opentelemetry/proto/collector/profiles/v1development/profiles_service_pb.js +42 -0
  63. package/dist/generated/opentelemetry/proto/collector/profiles/v1development/profiles_service_pb.js.map +1 -0
  64. package/dist/generated/opentelemetry/proto/collector/trace/v1/trace_service_pb.d.ts +106 -0
  65. package/dist/generated/opentelemetry/proto/collector/trace/v1/trace_service_pb.d.ts.map +1 -0
  66. package/dist/generated/opentelemetry/proto/collector/trace/v1/trace_service_pb.js +43 -0
  67. package/dist/generated/opentelemetry/proto/collector/trace/v1/trace_service_pb.js.map +1 -0
  68. package/dist/generated/opentelemetry/proto/common/v1/common_pb.d.ts +243 -0
  69. package/dist/generated/opentelemetry/proto/common/v1/common_pb.d.ts.map +1 -0
  70. package/dist/generated/opentelemetry/proto/common/v1/common_pb.js +49 -0
  71. package/dist/generated/opentelemetry/proto/common/v1/common_pb.js.map +1 -0
  72. package/dist/generated/opentelemetry/proto/logs/v1/logs_pb.d.ts +90 -0
  73. package/dist/generated/opentelemetry/proto/logs/v1/logs_pb.d.ts.map +1 -0
  74. package/dist/generated/opentelemetry/proto/logs/v1/logs_pb.js +66 -0
  75. package/dist/generated/opentelemetry/proto/logs/v1/logs_pb.js.map +1 -0
  76. package/dist/generated/opentelemetry/proto/metrics/v1/metrics_pb.d.ts +1134 -0
  77. package/dist/generated/opentelemetry/proto/metrics/v1/metrics_pb.d.ts.map +1 -0
  78. package/dist/generated/opentelemetry/proto/metrics/v1/metrics_pb.js +223 -0
  79. package/dist/generated/opentelemetry/proto/metrics/v1/metrics_pb.js.map +1 -0
  80. package/dist/generated/opentelemetry/proto/profiles/v1development/profiles_pb.d.ts +678 -0
  81. package/dist/generated/opentelemetry/proto/profiles/v1development/profiles_pb.d.ts.map +1 -0
  82. package/dist/generated/opentelemetry/proto/profiles/v1development/profiles_pb.js +107 -0
  83. package/dist/generated/opentelemetry/proto/profiles/v1development/profiles_pb.js.map +1 -0
  84. package/dist/generated/opentelemetry/proto/resource/v1/resource_pb.d.ts +46 -0
  85. package/dist/generated/opentelemetry/proto/resource/v1/resource_pb.d.ts.map +1 -0
  86. package/dist/generated/opentelemetry/proto/resource/v1/resource_pb.js +25 -0
  87. package/dist/generated/opentelemetry/proto/resource/v1/resource_pb.js.map +1 -0
  88. package/dist/generated/opentelemetry/proto/trace/v1/trace_pb.d.ts +569 -0
  89. package/dist/generated/opentelemetry/proto/trace/v1/trace_pb.d.ts.map +1 -0
  90. package/dist/generated/opentelemetry/proto/trace/v1/trace_pb.js +195 -0
  91. package/dist/generated/opentelemetry/proto/trace/v1/trace_pb.js.map +1 -0
  92. package/dist/lib/agent-judge/agent-as-judge.d.ts +157 -0
  93. package/dist/lib/agent-judge/agent-as-judge.d.ts.map +1 -0
  94. package/dist/lib/agent-judge/agent-as-judge.js +137 -0
  95. package/dist/lib/agent-judge/agent-as-judge.js.map +1 -0
  96. package/dist/lib/agent-judge/agent-as-judge.test.d.ts.map +1 -0
  97. package/dist/lib/agent-judge/agent-as-judge.test.js +839 -0
  98. package/dist/lib/agent-judge/agent-as-judge.test.js.map +1 -0
  99. package/dist/lib/agent-judge/agent-eval-metrics.d.ts +293 -0
  100. package/dist/lib/agent-judge/agent-eval-metrics.d.ts.map +1 -0
  101. package/dist/lib/agent-judge/agent-eval-metrics.js +715 -0
  102. package/dist/lib/agent-judge/agent-eval-metrics.js.map +1 -0
  103. package/dist/lib/agent-judge/agent-eval-metrics.test.d.ts +5 -0
  104. package/dist/lib/agent-judge/agent-eval-metrics.test.d.ts.map +1 -0
  105. package/dist/lib/agent-judge/agent-eval-metrics.test.js +676 -0
  106. package/dist/lib/agent-judge/agent-eval-metrics.test.js.map +1 -0
  107. package/dist/lib/agent-judge/agent-judge-classes.d.ts +95 -0
  108. package/dist/lib/agent-judge/agent-judge-classes.d.ts.map +1 -0
  109. package/dist/lib/agent-judge/agent-judge-classes.js +222 -0
  110. package/dist/lib/agent-judge/agent-judge-classes.js.map +1 -0
  111. package/dist/lib/agent-judge/agent-judge-classes.test.d.ts +6 -0
  112. package/dist/lib/agent-judge/agent-judge-classes.test.d.ts.map +1 -0
  113. package/dist/lib/agent-judge/agent-judge-classes.test.js +271 -0
  114. package/dist/lib/agent-judge/agent-judge-classes.test.js.map +1 -0
  115. package/dist/lib/agent-judge/agent-judge-consensus.d.ts +58 -0
  116. package/dist/lib/agent-judge/agent-judge-consensus.d.ts.map +1 -0
  117. package/dist/lib/agent-judge/agent-judge-consensus.js +149 -0
  118. package/dist/lib/agent-judge/agent-judge-consensus.js.map +1 -0
  119. package/dist/lib/agent-judge/agent-judge-consensus.test.d.ts +2 -0
  120. package/dist/lib/agent-judge/agent-judge-consensus.test.d.ts.map +1 -0
  121. package/dist/lib/agent-judge/agent-judge-consensus.test.js +170 -0
  122. package/dist/lib/agent-judge/agent-judge-consensus.test.js.map +1 -0
  123. package/dist/lib/agent-judge/agent-judge-verification.d.ts +89 -0
  124. package/dist/lib/agent-judge/agent-judge-verification.d.ts.map +1 -0
  125. package/dist/lib/agent-judge/agent-judge-verification.js +235 -0
  126. package/dist/lib/agent-judge/agent-judge-verification.js.map +1 -0
  127. package/dist/lib/agent-judge/agent-judge-verification.test.d.ts +5 -0
  128. package/dist/lib/agent-judge/agent-judge-verification.test.d.ts.map +1 -0
  129. package/dist/lib/agent-judge/agent-judge-verification.test.js +399 -0
  130. package/dist/lib/agent-judge/agent-judge-verification.test.js.map +1 -0
  131. package/dist/lib/audit/agent-auditor-scoring.d.ts +167 -0
  132. package/dist/lib/audit/agent-auditor-scoring.d.ts.map +1 -0
  133. package/dist/lib/audit/agent-auditor-scoring.js +338 -0
  134. package/dist/lib/audit/agent-auditor-scoring.js.map +1 -0
  135. package/dist/lib/audit/agent-auditor-scoring.test.d.ts +2 -0
  136. package/dist/lib/audit/agent-auditor-scoring.test.d.ts.map +1 -0
  137. package/dist/lib/audit/agent-auditor-scoring.test.js +576 -0
  138. package/dist/lib/audit/agent-auditor-scoring.test.js.map +1 -0
  139. package/dist/lib/audit/audit-record.d.ts +139 -0
  140. package/dist/lib/audit/audit-record.d.ts.map +1 -0
  141. package/dist/lib/audit/audit-record.js +288 -0
  142. package/dist/lib/audit/audit-record.js.map +1 -0
  143. package/dist/lib/audit/audit-record.test.d.ts +5 -0
  144. package/dist/lib/audit/audit-record.test.d.ts.map +1 -0
  145. package/dist/lib/audit/audit-record.test.js +258 -0
  146. package/dist/lib/audit/audit-record.test.js.map +1 -0
  147. package/dist/lib/audit/audit-scoring-constants.d.ts +57 -0
  148. package/dist/lib/audit/audit-scoring-constants.d.ts.map +1 -0
  149. package/dist/lib/audit/audit-scoring-constants.js +59 -0
  150. package/dist/lib/audit/audit-scoring-constants.js.map +1 -0
  151. package/dist/lib/audit/compliance-report.d.ts +125 -0
  152. package/dist/lib/audit/compliance-report.d.ts.map +1 -0
  153. package/dist/lib/audit/compliance-report.js +205 -0
  154. package/dist/lib/audit/compliance-report.js.map +1 -0
  155. package/dist/lib/audit/compliance-report.test.d.ts +5 -0
  156. package/dist/lib/audit/compliance-report.test.d.ts.map +1 -0
  157. package/dist/lib/audit/compliance-report.test.js +290 -0
  158. package/dist/lib/audit/compliance-report.test.js.map +1 -0
  159. package/dist/lib/audit/retention-guard.d.ts +41 -0
  160. package/dist/lib/audit/retention-guard.d.ts.map +1 -0
  161. package/dist/lib/audit/retention-guard.js +103 -0
  162. package/dist/lib/audit/retention-guard.js.map +1 -0
  163. package/dist/lib/audit/retention-guard.test.d.ts +5 -0
  164. package/dist/lib/audit/retention-guard.test.d.ts.map +1 -0
  165. package/dist/lib/audit/retention-guard.test.js +109 -0
  166. package/dist/lib/audit/retention-guard.test.js.map +1 -0
  167. package/dist/lib/audit/skill-auditor-scoring.d.ts +69 -0
  168. package/dist/lib/audit/skill-auditor-scoring.d.ts.map +1 -0
  169. package/dist/lib/audit/skill-auditor-scoring.js +149 -0
  170. package/dist/lib/audit/skill-auditor-scoring.js.map +1 -0
  171. package/dist/lib/audit/skill-auditor-scoring.test.d.ts +2 -0
  172. package/dist/lib/audit/skill-auditor-scoring.test.d.ts.map +1 -0
  173. package/dist/lib/audit/skill-auditor-scoring.test.js +369 -0
  174. package/dist/lib/audit/skill-auditor-scoring.test.js.map +1 -0
  175. package/dist/lib/audit/verification-events.d.ts +119 -0
  176. package/dist/lib/audit/verification-events.d.ts.map +1 -0
  177. package/dist/lib/audit/verification-events.js +175 -0
  178. package/dist/lib/audit/verification-events.js.map +1 -0
  179. package/dist/lib/audit/verification-events.test.d.ts.map +1 -0
  180. package/dist/lib/audit/verification-events.test.js +197 -0
  181. package/dist/lib/audit/verification-events.test.js.map +1 -0
  182. package/dist/lib/core/constants-models.d.ts +90 -0
  183. package/dist/lib/core/constants-models.d.ts.map +1 -0
  184. package/dist/lib/core/constants-models.js +208 -0
  185. package/dist/lib/core/constants-models.js.map +1 -0
  186. package/dist/lib/core/constants-otel.d.ts +68 -0
  187. package/dist/lib/core/constants-otel.d.ts.map +1 -0
  188. package/dist/lib/core/constants-otel.js +128 -0
  189. package/dist/lib/core/constants-otel.js.map +1 -0
  190. package/dist/lib/core/constants-symlink.test.d.ts.map +1 -0
  191. package/dist/lib/core/constants-symlink.test.js +358 -0
  192. package/dist/lib/core/constants-symlink.test.js.map +1 -0
  193. package/dist/lib/core/constants-telemetry.d.ts +21 -0
  194. package/dist/lib/core/constants-telemetry.d.ts.map +1 -0
  195. package/dist/lib/core/constants-telemetry.js +162 -0
  196. package/dist/lib/core/constants-telemetry.js.map +1 -0
  197. package/dist/lib/core/constants.d.ts +152 -0
  198. package/dist/lib/core/constants.d.ts.map +1 -0
  199. package/dist/lib/core/constants.js +223 -0
  200. package/dist/lib/core/constants.js.map +1 -0
  201. package/dist/lib/core/constants.test.d.ts.map +1 -0
  202. package/dist/lib/core/constants.test.js +833 -0
  203. package/dist/lib/core/constants.test.js.map +1 -0
  204. package/dist/lib/core/doc-sync.test.d.ts +9 -0
  205. package/dist/lib/core/doc-sync.test.d.ts.map +1 -0
  206. package/dist/lib/core/doc-sync.test.js +159 -0
  207. package/dist/lib/core/doc-sync.test.js.map +1 -0
  208. package/dist/lib/core/edge-cases.test.d.ts.map +1 -0
  209. package/dist/lib/core/edge-cases.test.js +637 -0
  210. package/dist/lib/core/edge-cases.test.js.map +1 -0
  211. package/dist/lib/core/file-utils.d.ts +360 -0
  212. package/dist/lib/core/file-utils.d.ts.map +1 -0
  213. package/dist/lib/core/file-utils.js +890 -0
  214. package/dist/lib/core/file-utils.js.map +1 -0
  215. package/dist/lib/core/file-utils.test-constants.d.ts +38 -0
  216. package/dist/lib/core/file-utils.test-constants.d.ts.map +1 -0
  217. package/dist/lib/core/file-utils.test-constants.js +40 -0
  218. package/dist/lib/core/file-utils.test-constants.js.map +1 -0
  219. package/dist/lib/core/file-utils.test.d.ts.map +1 -0
  220. package/dist/lib/core/file-utils.test.js +1329 -0
  221. package/dist/lib/core/file-utils.test.js.map +1 -0
  222. package/dist/lib/core/input-validator.d.ts +125 -0
  223. package/dist/lib/core/input-validator.d.ts.map +1 -0
  224. package/dist/lib/core/input-validator.fuzz.test.d.ts.map +1 -0
  225. package/dist/lib/core/input-validator.fuzz.test.js +302 -0
  226. package/dist/lib/core/input-validator.fuzz.test.js.map +1 -0
  227. package/dist/lib/core/input-validator.js +348 -0
  228. package/dist/lib/core/input-validator.js.map +1 -0
  229. package/dist/lib/core/input-validator.test.d.ts.map +1 -0
  230. package/dist/lib/core/input-validator.test.js +465 -0
  231. package/dist/lib/core/input-validator.test.js.map +1 -0
  232. package/dist/lib/core/logger.d.ts +32 -0
  233. package/dist/lib/core/logger.d.ts.map +1 -0
  234. package/dist/lib/core/logger.js +104 -0
  235. package/dist/lib/core/logger.js.map +1 -0
  236. package/dist/lib/core/logger.test.d.ts.map +1 -0
  237. package/dist/lib/core/logger.test.js.map +1 -0
  238. package/dist/lib/core/schema-types.d.ts +37 -0
  239. package/dist/lib/core/schema-types.d.ts.map +1 -0
  240. package/dist/lib/core/schema-types.js +29 -0
  241. package/dist/lib/core/schema-types.js.map +1 -0
  242. package/dist/lib/core/server-utils.d.ts +98 -0
  243. package/dist/lib/core/server-utils.d.ts.map +1 -0
  244. package/dist/lib/core/server-utils.js +193 -0
  245. package/dist/lib/core/server-utils.js.map +1 -0
  246. package/dist/lib/core/shared-schemas.d.ts +301 -0
  247. package/dist/lib/core/shared-schemas.d.ts.map +1 -0
  248. package/dist/lib/core/shared-schemas.js +222 -0
  249. package/dist/lib/core/shared-schemas.js.map +1 -0
  250. package/dist/lib/core/shared-schemas.test.d.ts.map +1 -0
  251. package/dist/lib/core/shared-schemas.test.js +136 -0
  252. package/dist/lib/core/shared-schemas.test.js.map +1 -0
  253. package/dist/lib/core/units.d.ts +67 -0
  254. package/dist/lib/core/units.d.ts.map +1 -0
  255. package/dist/lib/core/units.js +88 -0
  256. package/dist/lib/core/units.js.map +1 -0
  257. package/dist/lib/cost/cost-estimation.d.ts +264 -0
  258. package/dist/lib/cost/cost-estimation.d.ts.map +1 -0
  259. package/dist/lib/cost/cost-estimation.js +541 -0
  260. package/dist/lib/cost/cost-estimation.js.map +1 -0
  261. package/dist/lib/cost/cost-estimation.test.d.ts +5 -0
  262. package/dist/lib/cost/cost-estimation.test.d.ts.map +1 -0
  263. package/dist/lib/cost/cost-estimation.test.js +701 -0
  264. package/dist/lib/cost/cost-estimation.test.js.map +1 -0
  265. package/dist/lib/cost/pricing-cache.d.ts +59 -0
  266. package/dist/lib/cost/pricing-cache.d.ts.map +1 -0
  267. package/dist/lib/cost/pricing-cache.js +120 -0
  268. package/dist/lib/cost/pricing-cache.js.map +1 -0
  269. package/dist/lib/cost/pricing-cache.test.d.ts +5 -0
  270. package/dist/lib/cost/pricing-cache.test.d.ts.map +1 -0
  271. package/dist/lib/cost/pricing-cache.test.js +176 -0
  272. package/dist/lib/cost/pricing-cache.test.js.map +1 -0
  273. package/dist/lib/dashboard-file-utils.d.ts +35 -0
  274. package/dist/lib/dashboard-file-utils.d.ts.map +1 -0
  275. package/dist/lib/dashboard-file-utils.js +94 -0
  276. package/dist/lib/dashboard-file-utils.js.map +1 -0
  277. package/dist/lib/errors/error-sanitizer.d.ts +62 -0
  278. package/dist/lib/errors/error-sanitizer.d.ts.map +1 -0
  279. package/dist/lib/errors/error-sanitizer.js +235 -0
  280. package/dist/lib/errors/error-sanitizer.js.map +1 -0
  281. package/dist/lib/errors/error-sanitizer.test.d.ts.map +1 -0
  282. package/dist/lib/errors/error-sanitizer.test.js +534 -0
  283. package/dist/lib/errors/error-sanitizer.test.js.map +1 -0
  284. package/dist/lib/errors/error-types.d.ts +59 -0
  285. package/dist/lib/errors/error-types.d.ts.map +1 -0
  286. package/dist/lib/errors/error-types.js +187 -0
  287. package/dist/lib/errors/error-types.js.map +1 -0
  288. package/dist/lib/errors/error-types.test.d.ts.map +1 -0
  289. package/dist/lib/errors/error-types.test.js +246 -0
  290. package/dist/lib/errors/error-types.test.js.map +1 -0
  291. package/dist/lib/errors/query-sanitizer.d.ts.map +1 -0
  292. package/dist/lib/errors/query-sanitizer.js +269 -0
  293. package/dist/lib/errors/query-sanitizer.js.map +1 -0
  294. package/dist/lib/errors/query-sanitizer.test.d.ts.map +1 -0
  295. package/dist/lib/errors/query-sanitizer.test.js +403 -0
  296. package/dist/lib/errors/query-sanitizer.test.js.map +1 -0
  297. package/dist/lib/exports/confident-export.d.ts +105 -0
  298. package/dist/lib/exports/confident-export.d.ts.map +1 -0
  299. package/dist/lib/exports/confident-export.js +385 -0
  300. package/dist/lib/exports/confident-export.js.map +1 -0
  301. package/dist/lib/exports/confident-export.test.d.ts.map +1 -0
  302. package/dist/lib/exports/confident-export.test.js +848 -0
  303. package/dist/lib/exports/confident-export.test.js.map +1 -0
  304. package/dist/lib/exports/datadog-export.d.ts +200 -0
  305. package/dist/lib/exports/datadog-export.d.ts.map +1 -0
  306. package/dist/lib/exports/datadog-export.js +488 -0
  307. package/dist/lib/exports/datadog-export.js.map +1 -0
  308. package/dist/lib/exports/datadog-export.test.d.ts +2 -0
  309. package/dist/lib/exports/datadog-export.test.d.ts.map +1 -0
  310. package/dist/lib/exports/datadog-export.test.js +890 -0
  311. package/dist/lib/exports/datadog-export.test.js.map +1 -0
  312. package/dist/lib/exports/export-config-schemas.d.ts +67 -0
  313. package/dist/lib/exports/export-config-schemas.d.ts.map +1 -0
  314. package/dist/lib/exports/export-config-schemas.js +120 -0
  315. package/dist/lib/exports/export-config-schemas.js.map +1 -0
  316. package/dist/lib/exports/export-config-schemas.test.d.ts +8 -0
  317. package/dist/lib/exports/export-config-schemas.test.d.ts.map +1 -0
  318. package/dist/lib/exports/export-config-schemas.test.js +503 -0
  319. package/dist/lib/exports/export-config-schemas.test.js.map +1 -0
  320. package/dist/lib/exports/export-utils.d.ts +127 -0
  321. package/dist/lib/exports/export-utils.d.ts.map +1 -0
  322. package/dist/lib/exports/export-utils.js +303 -0
  323. package/dist/lib/exports/export-utils.js.map +1 -0
  324. package/dist/lib/exports/export-utils.test.d.ts.map +1 -0
  325. package/dist/lib/exports/export-utils.test.js +344 -0
  326. package/dist/lib/exports/export-utils.test.js.map +1 -0
  327. package/dist/lib/exports/langfuse-export.d.ts +129 -0
  328. package/dist/lib/exports/langfuse-export.d.ts.map +1 -0
  329. package/dist/lib/exports/langfuse-export.js +370 -0
  330. package/dist/lib/exports/langfuse-export.js.map +1 -0
  331. package/dist/lib/exports/langfuse-export.test.d.ts.map +1 -0
  332. package/dist/lib/exports/langfuse-export.test.js +1020 -0
  333. package/dist/lib/exports/langfuse-export.test.js.map +1 -0
  334. package/dist/lib/exports/otlp-export.d.ts +179 -0
  335. package/dist/lib/exports/otlp-export.d.ts.map +1 -0
  336. package/dist/lib/exports/otlp-export.js +397 -0
  337. package/dist/lib/exports/otlp-export.js.map +1 -0
  338. package/dist/lib/exports/otlp-format-converter.d.ts +70 -0
  339. package/dist/lib/exports/otlp-format-converter.d.ts.map +1 -0
  340. package/dist/lib/exports/otlp-format-converter.js +401 -0
  341. package/dist/lib/exports/otlp-format-converter.js.map +1 -0
  342. package/dist/lib/exports/otlp-proto-encode.d.ts +53 -0
  343. package/dist/lib/exports/otlp-proto-encode.d.ts.map +1 -0
  344. package/dist/lib/exports/otlp-proto-encode.js +165 -0
  345. package/dist/lib/exports/otlp-proto-encode.js.map +1 -0
  346. package/dist/lib/exports/otlp-proto-encode.test.d.ts +7 -0
  347. package/dist/lib/exports/otlp-proto-encode.test.d.ts.map +1 -0
  348. package/dist/lib/exports/otlp-proto-encode.test.js +997 -0
  349. package/dist/lib/exports/otlp-proto-encode.test.js.map +1 -0
  350. package/dist/lib/exports/phoenix-export.d.ts +119 -0
  351. package/dist/lib/exports/phoenix-export.d.ts.map +1 -0
  352. package/dist/lib/exports/phoenix-export.js +448 -0
  353. package/dist/lib/exports/phoenix-export.js.map +1 -0
  354. package/dist/lib/exports/phoenix-export.test.d.ts.map +1 -0
  355. package/dist/lib/exports/phoenix-export.test.js +816 -0
  356. package/dist/lib/exports/phoenix-export.test.js.map +1 -0
  357. package/dist/lib/index.d.ts +16 -0
  358. package/dist/lib/index.d.ts.map +1 -0
  359. package/dist/lib/index.js +31 -0
  360. package/dist/lib/index.js.map +1 -0
  361. package/dist/lib/judge/evaluation-hooks-schemas.d.ts +186 -0
  362. package/dist/lib/judge/evaluation-hooks-schemas.d.ts.map +1 -0
  363. package/dist/lib/judge/evaluation-hooks-schemas.js +125 -0
  364. package/dist/lib/judge/evaluation-hooks-schemas.js.map +1 -0
  365. package/dist/lib/judge/evaluation-hooks.d.ts +88 -0
  366. package/dist/lib/judge/evaluation-hooks.d.ts.map +1 -0
  367. package/dist/lib/judge/evaluation-hooks.js +658 -0
  368. package/dist/lib/judge/evaluation-hooks.js.map +1 -0
  369. package/dist/lib/judge/evaluation-hooks.test.d.ts.map +1 -0
  370. package/dist/lib/judge/evaluation-hooks.test.js +934 -0
  371. package/dist/lib/judge/evaluation-hooks.test.js.map +1 -0
  372. package/dist/lib/judge/llm-as-judge.d.ts +138 -0
  373. package/dist/lib/judge/llm-as-judge.d.ts.map +1 -0
  374. package/dist/lib/judge/llm-as-judge.js +103 -0
  375. package/dist/lib/judge/llm-as-judge.js.map +1 -0
  376. package/dist/lib/judge/llm-as-judge.test.d.ts.map +1 -0
  377. package/dist/lib/judge/llm-as-judge.test.js +2179 -0
  378. package/dist/lib/judge/llm-as-judge.test.js.map +1 -0
  379. package/dist/lib/judge/llm-judge-bias.d.ts +44 -0
  380. package/dist/lib/judge/llm-judge-bias.d.ts.map +1 -0
  381. package/dist/lib/judge/llm-judge-bias.js +130 -0
  382. package/dist/lib/judge/llm-judge-bias.js.map +1 -0
  383. package/dist/lib/judge/llm-judge-bias.test.d.ts +2 -0
  384. package/dist/lib/judge/llm-judge-bias.test.d.ts.map +1 -0
  385. package/dist/lib/judge/llm-judge-bias.test.js +380 -0
  386. package/dist/lib/judge/llm-judge-bias.test.js.map +1 -0
  387. package/dist/lib/judge/llm-judge-code.d.ts +99 -0
  388. package/dist/lib/judge/llm-judge-code.d.ts.map +1 -0
  389. package/dist/lib/judge/llm-judge-code.js +261 -0
  390. package/dist/lib/judge/llm-judge-code.js.map +1 -0
  391. package/dist/lib/judge/llm-judge-code.test.d.ts +2 -0
  392. package/dist/lib/judge/llm-judge-code.test.d.ts.map +1 -0
  393. package/dist/lib/judge/llm-judge-code.test.js +981 -0
  394. package/dist/lib/judge/llm-judge-code.test.js.map +1 -0
  395. package/dist/lib/judge/llm-judge-config.d.ts +241 -0
  396. package/dist/lib/judge/llm-judge-config.d.ts.map +1 -0
  397. package/dist/lib/judge/llm-judge-config.js +390 -0
  398. package/dist/lib/judge/llm-judge-config.js.map +1 -0
  399. package/dist/lib/judge/llm-judge-config.test.d.ts +5 -0
  400. package/dist/lib/judge/llm-judge-config.test.d.ts.map +1 -0
  401. package/dist/lib/judge/llm-judge-config.test.js +392 -0
  402. package/dist/lib/judge/llm-judge-config.test.js.map +1 -0
  403. package/dist/lib/judge/llm-judge-constants.d.ts +111 -0
  404. package/dist/lib/judge/llm-judge-constants.d.ts.map +1 -0
  405. package/dist/lib/judge/llm-judge-constants.js +150 -0
  406. package/dist/lib/judge/llm-judge-constants.js.map +1 -0
  407. package/dist/lib/judge/llm-judge-dag.d.ts +57 -0
  408. package/dist/lib/judge/llm-judge-dag.d.ts.map +1 -0
  409. package/dist/lib/judge/llm-judge-dag.js +217 -0
  410. package/dist/lib/judge/llm-judge-dag.js.map +1 -0
  411. package/dist/lib/judge/llm-judge-dag.test.d.ts +8 -0
  412. package/dist/lib/judge/llm-judge-dag.test.d.ts.map +1 -0
  413. package/dist/lib/judge/llm-judge-dag.test.js +973 -0
  414. package/dist/lib/judge/llm-judge-dag.test.js.map +1 -0
  415. package/dist/lib/judge/llm-judge-domain.d.ts +42 -0
  416. package/dist/lib/judge/llm-judge-domain.d.ts.map +1 -0
  417. package/dist/lib/judge/llm-judge-domain.js +167 -0
  418. package/dist/lib/judge/llm-judge-domain.js.map +1 -0
  419. package/dist/lib/judge/llm-judge-domain.test.d.ts +6 -0
  420. package/dist/lib/judge/llm-judge-domain.test.d.ts.map +1 -0
  421. package/dist/lib/judge/llm-judge-domain.test.js +337 -0
  422. package/dist/lib/judge/llm-judge-domain.test.js.map +1 -0
  423. package/dist/lib/judge/llm-judge-geval.d.ts +42 -0
  424. package/dist/lib/judge/llm-judge-geval.d.ts.map +1 -0
  425. package/dist/lib/judge/llm-judge-geval.js +213 -0
  426. package/dist/lib/judge/llm-judge-geval.js.map +1 -0
  427. package/dist/lib/judge/llm-judge-geval.test.d.ts +2 -0
  428. package/dist/lib/judge/llm-judge-geval.test.d.ts.map +1 -0
  429. package/dist/lib/judge/llm-judge-geval.test.js +556 -0
  430. package/dist/lib/judge/llm-judge-geval.test.js.map +1 -0
  431. package/dist/lib/judge/llm-judge-otel.test.d.ts +9 -0
  432. package/dist/lib/judge/llm-judge-otel.test.d.ts.map +1 -0
  433. package/dist/lib/judge/llm-judge-otel.test.js +91 -0
  434. package/dist/lib/judge/llm-judge-otel.test.js.map +1 -0
  435. package/dist/lib/judge/llm-judge-qag.d.ts +38 -0
  436. package/dist/lib/judge/llm-judge-qag.d.ts.map +1 -0
  437. package/dist/lib/judge/llm-judge-qag.js +205 -0
  438. package/dist/lib/judge/llm-judge-qag.js.map +1 -0
  439. package/dist/lib/judge/llm-judge-qag.test.d.ts +2 -0
  440. package/dist/lib/judge/llm-judge-qag.test.d.ts.map +1 -0
  441. package/dist/lib/judge/llm-judge-qag.test.js +386 -0
  442. package/dist/lib/judge/llm-judge-qag.test.js.map +1 -0
  443. package/dist/lib/judge/llm-judge-resilience.d.ts +74 -0
  444. package/dist/lib/judge/llm-judge-resilience.d.ts.map +1 -0
  445. package/dist/lib/judge/llm-judge-resilience.js +146 -0
  446. package/dist/lib/judge/llm-judge-resilience.js.map +1 -0
  447. package/dist/lib/judge/llm-judge-resilience.test.d.ts +2 -0
  448. package/dist/lib/judge/llm-judge-resilience.test.d.ts.map +1 -0
  449. package/dist/lib/judge/llm-judge-resilience.test.js +353 -0
  450. package/dist/lib/judge/llm-judge-resilience.test.js.map +1 -0
  451. package/dist/lib/judge/llm-judge-security.d.ts +106 -0
  452. package/dist/lib/judge/llm-judge-security.d.ts.map +1 -0
  453. package/dist/lib/judge/llm-judge-security.js +314 -0
  454. package/dist/lib/judge/llm-judge-security.js.map +1 -0
  455. package/dist/lib/judge/llm-judge-security.test.d.ts +2 -0
  456. package/dist/lib/judge/llm-judge-security.test.d.ts.map +1 -0
  457. package/dist/lib/judge/llm-judge-security.test.js +1011 -0
  458. package/dist/lib/judge/llm-judge-security.test.js.map +1 -0
  459. package/dist/lib/observability/context-accumulator.d.ts +32 -0
  460. package/dist/lib/observability/context-accumulator.d.ts.map +1 -0
  461. package/dist/lib/observability/context-accumulator.js +87 -0
  462. package/dist/lib/observability/context-accumulator.js.map +1 -0
  463. package/dist/lib/observability/evaluation-events.d.ts +35 -0
  464. package/dist/lib/observability/evaluation-events.d.ts.map +1 -0
  465. package/dist/lib/observability/evaluation-events.js +90 -0
  466. package/dist/lib/observability/evaluation-events.js.map +1 -0
  467. package/dist/lib/observability/file-span-exporter.d.ts +17 -0
  468. package/dist/lib/observability/file-span-exporter.d.ts.map +1 -0
  469. package/dist/lib/observability/file-span-exporter.js +49 -0
  470. package/dist/lib/observability/file-span-exporter.js.map +1 -0
  471. package/dist/lib/observability/histogram-bucket-constants.d.ts +25 -0
  472. package/dist/lib/observability/histogram-bucket-constants.d.ts.map +1 -0
  473. package/dist/lib/observability/histogram-bucket-constants.js +60 -0
  474. package/dist/lib/observability/histogram-bucket-constants.js.map +1 -0
  475. package/dist/lib/observability/histogram.d.ts +112 -0
  476. package/dist/lib/observability/histogram.d.ts.map +1 -0
  477. package/dist/lib/observability/histogram.js +170 -0
  478. package/dist/lib/observability/histogram.js.map +1 -0
  479. package/dist/lib/observability/histogram.test.d.ts.map +1 -0
  480. package/dist/lib/observability/histogram.test.js +385 -0
  481. package/dist/lib/observability/histogram.test.js.map +1 -0
  482. package/dist/lib/observability/indexer.d.ts +114 -0
  483. package/dist/lib/observability/indexer.d.ts.map +1 -0
  484. package/dist/lib/observability/indexer.js +402 -0
  485. package/dist/lib/observability/indexer.js.map +1 -0
  486. package/dist/lib/observability/indexer.test.d.ts.map +1 -0
  487. package/dist/lib/observability/indexer.test.js +713 -0
  488. package/dist/lib/observability/indexer.test.js.map +1 -0
  489. package/dist/lib/observability/instrumentation-eval.test.d.ts +5 -0
  490. package/dist/lib/observability/instrumentation-eval.test.d.ts.map +1 -0
  491. package/dist/lib/observability/instrumentation-eval.test.js +63 -0
  492. package/dist/lib/observability/instrumentation-eval.test.js.map +1 -0
  493. package/dist/lib/observability/instrumentation-init-errors.test.d.ts +13 -0
  494. package/dist/lib/observability/instrumentation-init-errors.test.d.ts.map +1 -0
  495. package/dist/lib/observability/instrumentation-init-errors.test.js +194 -0
  496. package/dist/lib/observability/instrumentation-init-errors.test.js.map +1 -0
  497. package/dist/lib/observability/instrumentation-retry-timeout.test.d.ts +15 -0
  498. package/dist/lib/observability/instrumentation-retry-timeout.test.d.ts.map +1 -0
  499. package/dist/lib/observability/instrumentation-retry-timeout.test.js +188 -0
  500. package/dist/lib/observability/instrumentation-retry-timeout.test.js.map +1 -0
  501. package/dist/lib/observability/instrumentation-set-otel.test.d.ts +5 -0
  502. package/dist/lib/observability/instrumentation-set-otel.test.d.ts.map +1 -0
  503. package/dist/lib/observability/instrumentation-set-otel.test.js +59 -0
  504. package/dist/lib/observability/instrumentation-set-otel.test.js.map +1 -0
  505. package/dist/lib/observability/instrumentation.d.ts +158 -0
  506. package/dist/lib/observability/instrumentation.d.ts.map +1 -0
  507. package/dist/lib/observability/instrumentation.integration.test.d.ts.map +1 -0
  508. package/dist/lib/observability/instrumentation.integration.test.js +590 -0
  509. package/dist/lib/observability/instrumentation.integration.test.js.map +1 -0
  510. package/dist/lib/observability/instrumentation.js +512 -0
  511. package/dist/lib/observability/instrumentation.js.map +1 -0
  512. package/dist/lib/observability/instrumentation.test.d.ts.map +1 -0
  513. package/dist/lib/observability/instrumentation.test.js +822 -0
  514. package/dist/lib/observability/instrumentation.test.js.map +1 -0
  515. package/dist/lib/observability/mcp-semconv-constants.d.ts +98 -0
  516. package/dist/lib/observability/mcp-semconv-constants.d.ts.map +1 -0
  517. package/dist/lib/observability/mcp-semconv-constants.js +102 -0
  518. package/dist/lib/observability/mcp-semconv-constants.js.map +1 -0
  519. package/dist/lib/observability/mcp-semconv.d.ts +37 -0
  520. package/dist/lib/observability/mcp-semconv.d.ts.map +1 -0
  521. package/dist/lib/observability/mcp-semconv.js +87 -0
  522. package/dist/lib/observability/mcp-semconv.js.map +1 -0
  523. package/dist/lib/observability/mcp-semconv.test.d.ts +2 -0
  524. package/dist/lib/observability/mcp-semconv.test.d.ts.map +1 -0
  525. package/dist/lib/observability/mcp-semconv.test.js +168 -0
  526. package/dist/lib/observability/mcp-semconv.test.js.map +1 -0
  527. package/dist/lib/observability/metrics.d.ts +100 -0
  528. package/dist/lib/observability/metrics.d.ts.map +1 -0
  529. package/dist/lib/observability/metrics.js +429 -0
  530. package/dist/lib/observability/metrics.js.map +1 -0
  531. package/dist/lib/observability/metrics.test.d.ts.map +1 -0
  532. package/dist/lib/observability/metrics.test.js +191 -0
  533. package/dist/lib/observability/metrics.test.js.map +1 -0
  534. package/dist/lib/observability/observability-test-constants.d.ts +34 -0
  535. package/dist/lib/observability/observability-test-constants.d.ts.map +1 -0
  536. package/dist/lib/observability/observability-test-constants.js +55 -0
  537. package/dist/lib/observability/observability-test-constants.js.map +1 -0
  538. package/dist/lib/observability/opentelemetry-resources.test.d.ts +2 -0
  539. package/dist/lib/observability/opentelemetry-resources.test.d.ts.map +1 -0
  540. package/dist/lib/observability/opentelemetry-resources.test.js +19 -0
  541. package/dist/lib/observability/opentelemetry-resources.test.js.map +1 -0
  542. package/dist/lib/observability/parse-stats.d.ts.map +1 -0
  543. package/dist/lib/observability/parse-stats.js +207 -0
  544. package/dist/lib/observability/parse-stats.js.map +1 -0
  545. package/dist/lib/observability/parse-stats.test.d.ts.map +1 -0
  546. package/dist/lib/observability/parse-stats.test.js +287 -0
  547. package/dist/lib/observability/parse-stats.test.js.map +1 -0
  548. package/dist/lib/observability/render-trace-tree.d.ts +31 -0
  549. package/dist/lib/observability/render-trace-tree.d.ts.map +1 -0
  550. package/dist/lib/observability/render-trace-tree.js +95 -0
  551. package/dist/lib/observability/render-trace-tree.js.map +1 -0
  552. package/dist/lib/observability/render-trace-tree.test.d.ts +5 -0
  553. package/dist/lib/observability/render-trace-tree.test.d.ts.map +1 -0
  554. package/dist/lib/observability/render-trace-tree.test.js +97 -0
  555. package/dist/lib/observability/render-trace-tree.test.js.map +1 -0
  556. package/dist/lib/observability/span-attributes.d.ts +27 -0
  557. package/dist/lib/observability/span-attributes.d.ts.map +1 -0
  558. package/dist/lib/observability/span-attributes.js +85 -0
  559. package/dist/lib/observability/span-attributes.js.map +1 -0
  560. package/dist/lib/observability/trace-anomaly-detector.d.ts +23 -0
  561. package/dist/lib/observability/trace-anomaly-detector.d.ts.map +1 -0
  562. package/dist/lib/observability/trace-anomaly-detector.js +211 -0
  563. package/dist/lib/observability/trace-anomaly-detector.js.map +1 -0
  564. package/dist/lib/observability/trace-anomaly-detector.test.d.ts +5 -0
  565. package/dist/lib/observability/trace-anomaly-detector.test.d.ts.map +1 -0
  566. package/dist/lib/observability/trace-anomaly-detector.test.js +224 -0
  567. package/dist/lib/observability/trace-anomaly-detector.test.js.map +1 -0
  568. package/dist/lib/observability/trace-anomaly-schemas.d.ts +189 -0
  569. package/dist/lib/observability/trace-anomaly-schemas.d.ts.map +1 -0
  570. package/dist/lib/observability/trace-anomaly-schemas.js +167 -0
  571. package/dist/lib/observability/trace-anomaly-schemas.js.map +1 -0
  572. package/dist/lib/privacy/content-redaction.d.ts +141 -0
  573. package/dist/lib/privacy/content-redaction.d.ts.map +1 -0
  574. package/dist/lib/privacy/content-redaction.js +210 -0
  575. package/dist/lib/privacy/content-redaction.js.map +1 -0
  576. package/dist/lib/privacy/content-redaction.test.d.ts +2 -0
  577. package/dist/lib/privacy/content-redaction.test.d.ts.map +1 -0
  578. package/dist/lib/privacy/content-redaction.test.js +302 -0
  579. package/dist/lib/privacy/content-redaction.test.js.map +1 -0
  580. package/dist/lib/quality/bucket-utils.d.ts +17 -0
  581. package/dist/lib/quality/bucket-utils.d.ts.map +1 -0
  582. package/dist/lib/quality/bucket-utils.js +31 -0
  583. package/dist/lib/quality/bucket-utils.js.map +1 -0
  584. package/dist/lib/quality/bucket-utils.test.d.ts +2 -0
  585. package/dist/lib/quality/bucket-utils.test.d.ts.map +1 -0
  586. package/dist/lib/quality/bucket-utils.test.js +42 -0
  587. package/dist/lib/quality/bucket-utils.test.js.map +1 -0
  588. package/dist/lib/quality/qfe-backtest-detail.test.d.ts +5 -0
  589. package/dist/lib/quality/qfe-backtest-detail.test.d.ts.map +1 -0
  590. package/dist/lib/quality/qfe-backtest-detail.test.js +179 -0
  591. package/dist/lib/quality/qfe-backtest-detail.test.js.map +1 -0
  592. package/dist/lib/quality/qfe-calibration-paths.test.d.ts +5 -0
  593. package/dist/lib/quality/qfe-calibration-paths.test.d.ts.map +1 -0
  594. package/dist/lib/quality/qfe-calibration-paths.test.js +203 -0
  595. package/dist/lib/quality/qfe-calibration-paths.test.js.map +1 -0
  596. package/dist/lib/quality/qfe-correlation-helpers.test.d.ts +6 -0
  597. package/dist/lib/quality/qfe-correlation-helpers.test.d.ts.map +1 -0
  598. package/dist/lib/quality/qfe-correlation-helpers.test.js +143 -0
  599. package/dist/lib/quality/qfe-correlation-helpers.test.js.map +1 -0
  600. package/dist/lib/quality/qfe-cqi-paths.test.d.ts +6 -0
  601. package/dist/lib/quality/qfe-cqi-paths.test.d.ts.map +1 -0
  602. package/dist/lib/quality/qfe-cqi-paths.test.js +231 -0
  603. package/dist/lib/quality/qfe-cqi-paths.test.js.map +1 -0
  604. package/dist/lib/quality/qfe-critic-internals.test.d.ts +6 -0
  605. package/dist/lib/quality/qfe-critic-internals.test.d.ts.map +1 -0
  606. package/dist/lib/quality/qfe-critic-internals.test.js +191 -0
  607. package/dist/lib/quality/qfe-critic-internals.test.js.map +1 -0
  608. package/dist/lib/quality/qfe-derived-paths.test.d.ts +2 -0
  609. package/dist/lib/quality/qfe-derived-paths.test.d.ts.map +1 -0
  610. package/dist/lib/quality/qfe-derived-paths.test.js +372 -0
  611. package/dist/lib/quality/qfe-derived-paths.test.js.map +1 -0
  612. package/dist/lib/quality/qfe-dynamics-paths.test.d.ts +8 -0
  613. package/dist/lib/quality/qfe-dynamics-paths.test.d.ts.map +1 -0
  614. package/dist/lib/quality/qfe-dynamics-paths.test.js +223 -0
  615. package/dist/lib/quality/qfe-dynamics-paths.test.js.map +1 -0
  616. package/dist/lib/quality/qfe-granger-internals.test.d.ts +6 -0
  617. package/dist/lib/quality/qfe-granger-internals.test.d.ts.map +1 -0
  618. package/dist/lib/quality/qfe-granger-internals.test.js +158 -0
  619. package/dist/lib/quality/qfe-granger-internals.test.js.map +1 -0
  620. package/dist/lib/quality/qfe-label-normalize.test.d.ts +7 -0
  621. package/dist/lib/quality/qfe-label-normalize.test.d.ts.map +1 -0
  622. package/dist/lib/quality/qfe-label-normalize.test.js +332 -0
  623. package/dist/lib/quality/qfe-label-normalize.test.js.map +1 -0
  624. package/dist/lib/quality/qfe-ordinal-edge.test.d.ts +6 -0
  625. package/dist/lib/quality/qfe-ordinal-edge.test.d.ts.map +1 -0
  626. package/dist/lib/quality/qfe-ordinal-edge.test.js +98 -0
  627. package/dist/lib/quality/qfe-ordinal-edge.test.js.map +1 -0
  628. package/dist/lib/quality/qfe-roles-detail.test.d.ts +5 -0
  629. package/dist/lib/quality/qfe-roles-detail.test.d.ts.map +1 -0
  630. package/dist/lib/quality/qfe-roles-detail.test.js +115 -0
  631. package/dist/lib/quality/qfe-roles-detail.test.js.map +1 -0
  632. package/dist/lib/quality/qfe-rolling-detail.test.d.ts +7 -0
  633. package/dist/lib/quality/qfe-rolling-detail.test.d.ts.map +1 -0
  634. package/dist/lib/quality/qfe-rolling-detail.test.js +249 -0
  635. package/dist/lib/quality/qfe-rolling-detail.test.js.map +1 -0
  636. package/dist/lib/quality/qfe-stats-internals.test.d.ts +7 -0
  637. package/dist/lib/quality/qfe-stats-internals.test.d.ts.map +1 -0
  638. package/dist/lib/quality/qfe-stats-internals.test.js +143 -0
  639. package/dist/lib/quality/qfe-stats-internals.test.js.map +1 -0
  640. package/dist/lib/quality/qfe-streaming.test.d.ts +5 -0
  641. package/dist/lib/quality/qfe-streaming.test.d.ts.map +1 -0
  642. package/dist/lib/quality/qfe-streaming.test.js +239 -0
  643. package/dist/lib/quality/qfe-streaming.test.js.map +1 -0
  644. package/dist/lib/quality/qfe-sweep-detail.test.d.ts +6 -0
  645. package/dist/lib/quality/qfe-sweep-detail.test.d.ts.map +1 -0
  646. package/dist/lib/quality/qfe-sweep-detail.test.js +291 -0
  647. package/dist/lib/quality/qfe-sweep-detail.test.js.map +1 -0
  648. package/dist/lib/quality/quality-alerts.d.ts +23 -0
  649. package/dist/lib/quality/quality-alerts.d.ts.map +1 -0
  650. package/dist/lib/quality/quality-alerts.js +89 -0
  651. package/dist/lib/quality/quality-alerts.js.map +1 -0
  652. package/dist/lib/quality/quality-alerts.test.d.ts +2 -0
  653. package/dist/lib/quality/quality-alerts.test.d.ts.map +1 -0
  654. package/dist/lib/quality/quality-alerts.test.js +86 -0
  655. package/dist/lib/quality/quality-alerts.test.js.map +1 -0
  656. package/dist/lib/quality/quality-constants.d.ts +294 -0
  657. package/dist/lib/quality/quality-constants.d.ts.map +1 -0
  658. package/dist/lib/quality/quality-constants.js +335 -0
  659. package/dist/lib/quality/quality-constants.js.map +1 -0
  660. package/dist/lib/quality/quality-feature-engineering.d.ts +1071 -0
  661. package/dist/lib/quality/quality-feature-engineering.d.ts.map +1 -0
  662. package/dist/lib/quality/quality-feature-engineering.js +2076 -0
  663. package/dist/lib/quality/quality-feature-engineering.js.map +1 -0
  664. package/dist/lib/quality/quality-feature-engineering.test.d.ts +5 -0
  665. package/dist/lib/quality/quality-feature-engineering.test.d.ts.map +1 -0
  666. package/dist/lib/quality/quality-feature-engineering.test.js +2908 -0
  667. package/dist/lib/quality/quality-feature-engineering.test.js.map +1 -0
  668. package/dist/lib/quality/quality-metrics.d.ts +943 -0
  669. package/dist/lib/quality/quality-metrics.d.ts.map +1 -0
  670. package/dist/lib/quality/quality-metrics.js +1151 -0
  671. package/dist/lib/quality/quality-metrics.js.map +1 -0
  672. package/dist/lib/quality/quality-metrics.test.d.ts +5 -0
  673. package/dist/lib/quality/quality-metrics.test.d.ts.map +1 -0
  674. package/dist/lib/quality/quality-metrics.test.js +2766 -0
  675. package/dist/lib/quality/quality-metrics.test.js.map +1 -0
  676. package/dist/lib/quality/quality-multi-agent.d.ts +106 -0
  677. package/dist/lib/quality/quality-multi-agent.d.ts.map +1 -0
  678. package/dist/lib/quality/quality-multi-agent.js +124 -0
  679. package/dist/lib/quality/quality-multi-agent.js.map +1 -0
  680. package/dist/lib/quality/quality-multi-agent.test.d.ts +6 -0
  681. package/dist/lib/quality/quality-multi-agent.test.d.ts.map +1 -0
  682. package/dist/lib/quality/quality-multi-agent.test.js +163 -0
  683. package/dist/lib/quality/quality-multi-agent.test.js.map +1 -0
  684. package/dist/lib/quality/quality-sla.d.ts +35 -0
  685. package/dist/lib/quality/quality-sla.d.ts.map +1 -0
  686. package/dist/lib/quality/quality-sla.js +62 -0
  687. package/dist/lib/quality/quality-sla.js.map +1 -0
  688. package/dist/lib/quality/quality-sla.test.d.ts +5 -0
  689. package/dist/lib/quality/quality-sla.test.d.ts.map +1 -0
  690. package/dist/lib/quality/quality-sla.test.js +144 -0
  691. package/dist/lib/quality/quality-sla.test.js.map +1 -0
  692. package/dist/lib/quality/quality-test-constants.d.ts +23 -0
  693. package/dist/lib/quality/quality-test-constants.d.ts.map +1 -0
  694. package/dist/lib/quality/quality-test-constants.js +25 -0
  695. package/dist/lib/quality/quality-test-constants.js.map +1 -0
  696. package/dist/lib/quality/quality-trends.d.ts +101 -0
  697. package/dist/lib/quality/quality-trends.d.ts.map +1 -0
  698. package/dist/lib/quality/quality-trends.js +299 -0
  699. package/dist/lib/quality/quality-trends.js.map +1 -0
  700. package/dist/lib/quality/quality-trends.test.d.ts +6 -0
  701. package/dist/lib/quality/quality-trends.test.d.ts.map +1 -0
  702. package/dist/lib/quality/quality-trends.test.js +377 -0
  703. package/dist/lib/quality/quality-trends.test.js.map +1 -0
  704. package/dist/lib/quality/quality-views.d.ts +966 -0
  705. package/dist/lib/quality/quality-views.d.ts.map +1 -0
  706. package/dist/lib/quality/quality-views.js +367 -0
  707. package/dist/lib/quality/quality-views.js.map +1 -0
  708. package/dist/lib/quality/quality-views.test.d.ts +6 -0
  709. package/dist/lib/quality/quality-views.test.d.ts.map +1 -0
  710. package/dist/lib/quality/quality-views.test.js +262 -0
  711. package/dist/lib/quality/quality-views.test.js.map +1 -0
  712. package/dist/lib/quality/quality-visualization.d.ts +112 -0
  713. package/dist/lib/quality/quality-visualization.d.ts.map +1 -0
  714. package/dist/lib/quality/quality-visualization.js +136 -0
  715. package/dist/lib/quality/quality-visualization.js.map +1 -0
  716. package/dist/lib/quality/quality-visualization.test.d.ts +5 -0
  717. package/dist/lib/quality/quality-visualization.test.d.ts.map +1 -0
  718. package/dist/lib/quality/quality-visualization.test.js +189 -0
  719. package/dist/lib/quality/quality-visualization.test.js.map +1 -0
  720. package/dist/lib/resilience/cache.d.ts +56 -0
  721. package/dist/lib/resilience/cache.d.ts.map +1 -0
  722. package/dist/lib/resilience/cache.js +96 -0
  723. package/dist/lib/resilience/cache.js.map +1 -0
  724. package/dist/lib/resilience/cache.test.d.ts.map +1 -0
  725. package/dist/lib/resilience/cache.test.js +106 -0
  726. package/dist/lib/resilience/cache.test.js.map +1 -0
  727. package/dist/lib/resilience/circuit-breaker.d.ts +147 -0
  728. package/dist/lib/resilience/circuit-breaker.d.ts.map +1 -0
  729. package/dist/lib/resilience/circuit-breaker.js +251 -0
  730. package/dist/lib/resilience/circuit-breaker.js.map +1 -0
  731. package/dist/lib/resilience/circuit-breaker.test.d.ts.map +1 -0
  732. package/dist/lib/resilience/circuit-breaker.test.js +266 -0
  733. package/dist/lib/resilience/circuit-breaker.test.js.map +1 -0
  734. package/dist/lib/resilience/toon-encoder.d.ts +31 -0
  735. package/dist/lib/resilience/toon-encoder.d.ts.map +1 -0
  736. package/dist/lib/resilience/toon-encoder.js +66 -0
  737. package/dist/lib/resilience/toon-encoder.js.map +1 -0
  738. package/dist/lib/resilience/toon-encoder.test.d.ts.map +1 -0
  739. package/dist/lib/resilience/toon-encoder.test.js +86 -0
  740. package/dist/lib/resilience/toon-encoder.test.js.map +1 -0
  741. package/dist/lib/testing/mock-llm-builder.d.ts +139 -0
  742. package/dist/lib/testing/mock-llm-builder.d.ts.map +1 -0
  743. package/dist/lib/testing/mock-llm-builder.js +254 -0
  744. package/dist/lib/testing/mock-llm-builder.js.map +1 -0
  745. package/dist/lib/testing/mock-llm-builder.test.d.ts +5 -0
  746. package/dist/lib/testing/mock-llm-builder.test.d.ts.map +1 -0
  747. package/dist/lib/testing/mock-llm-builder.test.js +304 -0
  748. package/dist/lib/testing/mock-llm-builder.test.js.map +1 -0
  749. package/dist/lib/validation/api-schemas.d.ts +705 -0
  750. package/dist/lib/validation/api-schemas.d.ts.map +1 -0
  751. package/dist/lib/validation/api-schemas.js +351 -0
  752. package/dist/lib/validation/api-schemas.js.map +1 -0
  753. package/dist/lib/validation/api-schemas.test.d.ts +5 -0
  754. package/dist/lib/validation/api-schemas.test.d.ts.map +1 -0
  755. package/dist/lib/validation/api-schemas.test.js +427 -0
  756. package/dist/lib/validation/api-schemas.test.js.map +1 -0
  757. package/dist/lib/validation/dashboard-schemas.d.ts +203 -0
  758. package/dist/lib/validation/dashboard-schemas.d.ts.map +1 -0
  759. package/dist/lib/validation/dashboard-schemas.js +186 -0
  760. package/dist/lib/validation/dashboard-schemas.js.map +1 -0
  761. package/dist/lib/validation/dashboard-schemas.test.d.ts +5 -0
  762. package/dist/lib/validation/dashboard-schemas.test.d.ts.map +1 -0
  763. package/dist/lib/validation/dashboard-schemas.test.js +353 -0
  764. package/dist/lib/validation/dashboard-schemas.test.js.map +1 -0
  765. package/dist/server.d.ts +2 -1
  766. package/dist/server.d.ts.map +1 -1
  767. package/dist/server.js +158 -144
  768. package/dist/server.js.map +1 -1
  769. package/dist/server.test.js +102 -95
  770. package/dist/server.test.js.map +1 -1
  771. package/dist/test-helpers/assertions.d.ts +6 -0
  772. package/dist/test-helpers/assertions.d.ts.map +1 -0
  773. package/dist/test-helpers/assertions.js +11 -0
  774. package/dist/test-helpers/assertions.js.map +1 -0
  775. package/dist/test-helpers/env-utils.d.ts +0 -64
  776. package/dist/test-helpers/env-utils.d.ts.map +1 -1
  777. package/dist/test-helpers/env-utils.js +0 -100
  778. package/dist/test-helpers/env-utils.js.map +1 -1
  779. package/dist/test-helpers/fuzz-generators.d.ts.map +1 -1
  780. package/dist/test-helpers/fuzz-generators.js +62 -22
  781. package/dist/test-helpers/fuzz-generators.js.map +1 -1
  782. package/dist/test-helpers/index.d.ts +3 -2
  783. package/dist/test-helpers/index.d.ts.map +1 -1
  784. package/dist/test-helpers/index.js +4 -2
  785. package/dist/test-helpers/index.js.map +1 -1
  786. package/dist/test-helpers/memfs-utils.test.js +81 -76
  787. package/dist/test-helpers/memfs-utils.test.js.map +1 -1
  788. package/dist/test-helpers/mock-backends.d.ts +19 -17
  789. package/dist/test-helpers/mock-backends.d.ts.map +1 -1
  790. package/dist/test-helpers/mock-backends.js +16 -4
  791. package/dist/test-helpers/mock-backends.js.map +1 -1
  792. package/dist/test-helpers/mock-backends.test.js +43 -112
  793. package/dist/test-helpers/mock-backends.test.js.map +1 -1
  794. package/dist/test-helpers/race-condition-helpers.d.ts.map +1 -1
  795. package/dist/test-helpers/race-condition-helpers.js +3 -2
  796. package/dist/test-helpers/race-condition-helpers.js.map +1 -1
  797. package/dist/test-helpers/schema-validators.d.ts +2 -2
  798. package/dist/test-helpers/schema-validators.d.ts.map +1 -1
  799. package/dist/test-helpers/schema-validators.js +35 -31
  800. package/dist/test-helpers/schema-validators.js.map +1 -1
  801. package/dist/test-helpers/test-constants.d.ts +74 -0
  802. package/dist/test-helpers/test-constants.d.ts.map +1 -0
  803. package/dist/test-helpers/test-constants.js +78 -0
  804. package/dist/test-helpers/test-constants.js.map +1 -0
  805. package/dist/test-helpers/test-data-builders.d.ts +25 -7
  806. package/dist/test-helpers/test-data-builders.d.ts.map +1 -1
  807. package/dist/test-helpers/test-data-builders.js +32 -9
  808. package/dist/test-helpers/test-data-builders.js.map +1 -1
  809. package/dist/test-helpers/test-data-builders.test.js +116 -107
  810. package/dist/test-helpers/test-data-builders.test.js.map +1 -1
  811. package/dist/test-helpers/tool-validators.d.ts +1 -1
  812. package/dist/test-helpers/tool-validators.d.ts.map +1 -1
  813. package/dist/test-helpers/tool-validators.js +10 -10
  814. package/dist/test-helpers/tool-validators.js.map +1 -1
  815. package/dist/tools/audit-trail.d.ts +170 -0
  816. package/dist/tools/audit-trail.d.ts.map +1 -0
  817. package/dist/tools/audit-trail.js +109 -0
  818. package/dist/tools/audit-trail.js.map +1 -0
  819. package/dist/tools/audit-trail.test.d.ts +5 -0
  820. package/dist/tools/audit-trail.test.d.ts.map +1 -0
  821. package/dist/tools/audit-trail.test.js +122 -0
  822. package/dist/tools/audit-trail.test.js.map +1 -0
  823. package/dist/tools/context-stats.d.ts +6 -20
  824. package/dist/tools/context-stats.d.ts.map +1 -1
  825. package/dist/tools/context-stats.js +106 -88
  826. package/dist/tools/context-stats.js.map +1 -1
  827. package/dist/tools/context-stats.test.js +109 -60
  828. package/dist/tools/context-stats.test.js.map +1 -1
  829. package/dist/tools/detect-trace-anomalies.d.ts +123 -0
  830. package/dist/tools/detect-trace-anomalies.d.ts.map +1 -0
  831. package/dist/tools/detect-trace-anomalies.js +66 -0
  832. package/dist/tools/detect-trace-anomalies.js.map +1 -0
  833. package/dist/tools/estimate-cost.d.ts +77 -0
  834. package/dist/tools/estimate-cost.d.ts.map +1 -0
  835. package/dist/tools/estimate-cost.js +104 -0
  836. package/dist/tools/estimate-cost.js.map +1 -0
  837. package/dist/tools/estimate-cost.test.d.ts +5 -0
  838. package/dist/tools/estimate-cost.test.d.ts.map +1 -0
  839. package/dist/tools/estimate-cost.test.js +343 -0
  840. package/dist/tools/estimate-cost.test.js.map +1 -0
  841. package/dist/tools/export-base.d.ts +77 -0
  842. package/dist/tools/export-base.d.ts.map +1 -0
  843. package/dist/tools/export-base.js +150 -0
  844. package/dist/tools/export-base.js.map +1 -0
  845. package/dist/tools/export-base.test.d.ts +18 -0
  846. package/dist/tools/export-base.test.d.ts.map +1 -0
  847. package/dist/tools/export-base.test.js +220 -0
  848. package/dist/tools/export-base.test.js.map +1 -0
  849. package/dist/tools/export-confident.d.ts +94 -90
  850. package/dist/tools/export-confident.d.ts.map +1 -1
  851. package/dist/tools/export-confident.js +17 -115
  852. package/dist/tools/export-confident.js.map +1 -1
  853. package/dist/tools/export-confident.test.js +79 -75
  854. package/dist/tools/export-confident.test.js.map +1 -1
  855. package/dist/tools/export-datadog.d.ts +77 -116
  856. package/dist/tools/export-datadog.d.ts.map +1 -1
  857. package/dist/tools/export-datadog.js +38 -40
  858. package/dist/tools/export-datadog.js.map +1 -1
  859. package/dist/tools/export-datadog.test.js +122 -165
  860. package/dist/tools/export-datadog.test.js.map +1 -1
  861. package/dist/tools/export-jaeger.d.ts +100 -0
  862. package/dist/tools/export-jaeger.d.ts.map +1 -0
  863. package/dist/tools/export-jaeger.js +154 -0
  864. package/dist/tools/export-jaeger.js.map +1 -0
  865. package/dist/tools/export-jaeger.test.d.ts +2 -0
  866. package/dist/tools/export-jaeger.test.d.ts.map +1 -0
  867. package/dist/tools/export-jaeger.test.js +113 -0
  868. package/dist/tools/export-jaeger.test.js.map +1 -0
  869. package/dist/tools/export-langfuse.d.ts +78 -80
  870. package/dist/tools/export-langfuse.d.ts.map +1 -1
  871. package/dist/tools/export-langfuse.js +15 -113
  872. package/dist/tools/export-langfuse.js.map +1 -1
  873. package/dist/tools/export-langfuse.test.js +70 -81
  874. package/dist/tools/export-langfuse.test.js.map +1 -1
  875. package/dist/tools/export-phoenix.d.ts +115 -90
  876. package/dist/tools/export-phoenix.d.ts.map +1 -1
  877. package/dist/tools/export-phoenix.js +29 -117
  878. package/dist/tools/export-phoenix.js.map +1 -1
  879. package/dist/tools/export-phoenix.test.js +95 -94
  880. package/dist/tools/export-phoenix.test.js.map +1 -1
  881. package/dist/tools/get-trace-url.d.ts +2 -10
  882. package/dist/tools/get-trace-url.d.ts.map +1 -1
  883. package/dist/tools/get-trace-url.js +5 -8
  884. package/dist/tools/get-trace-url.js.map +1 -1
  885. package/dist/tools/get-trace-url.test.js +81 -399
  886. package/dist/tools/get-trace-url.test.js.map +1 -1
  887. package/dist/tools/hallucination-detection.d.ts +203 -0
  888. package/dist/tools/hallucination-detection.d.ts.map +1 -0
  889. package/dist/tools/hallucination-detection.js +189 -0
  890. package/dist/tools/hallucination-detection.js.map +1 -0
  891. package/dist/tools/hallucination-detection.test.d.ts +5 -0
  892. package/dist/tools/hallucination-detection.test.d.ts.map +1 -0
  893. package/dist/tools/hallucination-detection.test.js +529 -0
  894. package/dist/tools/hallucination-detection.test.js.map +1 -0
  895. package/dist/tools/health-check.d.ts +9 -16
  896. package/dist/tools/health-check.d.ts.map +1 -1
  897. package/dist/tools/health-check.js +88 -101
  898. package/dist/tools/health-check.js.map +1 -1
  899. package/dist/tools/health-check.test.js +72 -165
  900. package/dist/tools/health-check.test.js.map +1 -1
  901. package/dist/tools/index.d.ts +13 -0
  902. package/dist/tools/index.d.ts.map +1 -1
  903. package/dist/tools/index.js +13 -0
  904. package/dist/tools/index.js.map +1 -1
  905. package/dist/tools/ingest-constants.d.ts +8 -0
  906. package/dist/tools/ingest-constants.d.ts.map +1 -0
  907. package/dist/tools/ingest-constants.js +8 -0
  908. package/dist/tools/ingest-constants.js.map +1 -0
  909. package/dist/tools/ingest-spans.d.ts +45 -0
  910. package/dist/tools/ingest-spans.d.ts.map +1 -0
  911. package/dist/tools/ingest-spans.js +129 -0
  912. package/dist/tools/ingest-spans.js.map +1 -0
  913. package/dist/tools/ingest-spans.test.d.ts +5 -0
  914. package/dist/tools/ingest-spans.test.d.ts.map +1 -0
  915. package/dist/tools/ingest-spans.test.js +250 -0
  916. package/dist/tools/ingest-spans.test.js.map +1 -0
  917. package/dist/tools/ingest-traces.d.ts +76 -0
  918. package/dist/tools/ingest-traces.d.ts.map +1 -0
  919. package/dist/tools/ingest-traces.js +164 -0
  920. package/dist/tools/ingest-traces.js.map +1 -0
  921. package/dist/tools/ingest-traces.test.d.ts +5 -0
  922. package/dist/tools/ingest-traces.test.d.ts.map +1 -0
  923. package/dist/tools/ingest-traces.test.js +483 -0
  924. package/dist/tools/ingest-traces.test.js.map +1 -0
  925. package/dist/tools/inject-evaluations.d.ts +136 -1197
  926. package/dist/tools/inject-evaluations.d.ts.map +1 -1
  927. package/dist/tools/inject-evaluations.js +65 -53
  928. package/dist/tools/inject-evaluations.js.map +1 -1
  929. package/dist/tools/inject-evaluations.test.js +83 -71
  930. package/dist/tools/inject-evaluations.test.js.map +1 -1
  931. package/dist/tools/manage-datasets.d.ts +850 -0
  932. package/dist/tools/manage-datasets.d.ts.map +1 -0
  933. package/dist/tools/manage-datasets.js +139 -0
  934. package/dist/tools/manage-datasets.js.map +1 -0
  935. package/dist/tools/manage-datasets.test.d.ts +5 -0
  936. package/dist/tools/manage-datasets.test.d.ts.map +1 -0
  937. package/dist/tools/manage-datasets.test.js +430 -0
  938. package/dist/tools/manage-datasets.test.js.map +1 -0
  939. package/dist/tools/multi-agent-coordination.d.ts +178 -0
  940. package/dist/tools/multi-agent-coordination.d.ts.map +1 -0
  941. package/dist/tools/multi-agent-coordination.js +270 -0
  942. package/dist/tools/multi-agent-coordination.js.map +1 -0
  943. package/dist/tools/multi-agent-coordination.test.d.ts +5 -0
  944. package/dist/tools/multi-agent-coordination.test.d.ts.map +1 -0
  945. package/dist/tools/multi-agent-coordination.test.js +530 -0
  946. package/dist/tools/multi-agent-coordination.test.js.map +1 -0
  947. package/dist/tools/query-evaluations.d.ts +147 -105
  948. package/dist/tools/query-evaluations.d.ts.map +1 -1
  949. package/dist/tools/query-evaluations.js +205 -178
  950. package/dist/tools/query-evaluations.js.map +1 -1
  951. package/dist/tools/query-evaluations.test.js +386 -391
  952. package/dist/tools/query-evaluations.test.js.map +1 -1
  953. package/dist/tools/query-llm-events.d.ts +100 -75
  954. package/dist/tools/query-llm-events.d.ts.map +1 -1
  955. package/dist/tools/query-llm-events.js +106 -80
  956. package/dist/tools/query-llm-events.js.map +1 -1
  957. package/dist/tools/query-llm-events.test.js +183 -346
  958. package/dist/tools/query-llm-events.test.js.map +1 -1
  959. package/dist/tools/query-logs.d.ts +45 -58
  960. package/dist/tools/query-logs.d.ts.map +1 -1
  961. package/dist/tools/query-logs.js +54 -101
  962. package/dist/tools/query-logs.js.map +1 -1
  963. package/dist/tools/query-logs.test.js +118 -314
  964. package/dist/tools/query-logs.test.js.map +1 -1
  965. package/dist/tools/query-metric-histograms.d.ts +112 -0
  966. package/dist/tools/query-metric-histograms.d.ts.map +1 -0
  967. package/dist/tools/query-metric-histograms.js +69 -0
  968. package/dist/tools/query-metric-histograms.js.map +1 -0
  969. package/dist/tools/query-metric-histograms.test.d.ts +5 -0
  970. package/dist/tools/query-metric-histograms.test.d.ts.map +1 -0
  971. package/dist/tools/query-metric-histograms.test.js +209 -0
  972. package/dist/tools/query-metric-histograms.test.js.map +1 -0
  973. package/dist/tools/query-metrics.d.ts +159 -60
  974. package/dist/tools/query-metrics.d.ts.map +1 -1
  975. package/dist/tools/query-metrics.js +133 -111
  976. package/dist/tools/query-metrics.js.map +1 -1
  977. package/dist/tools/query-metrics.test.js +314 -389
  978. package/dist/tools/query-metrics.test.js.map +1 -1
  979. package/dist/tools/query-regressions.d.ts +76 -0
  980. package/dist/tools/query-regressions.d.ts.map +1 -0
  981. package/dist/tools/query-regressions.js +122 -0
  982. package/dist/tools/query-regressions.js.map +1 -0
  983. package/dist/tools/query-regressions.test.d.ts +8 -0
  984. package/dist/tools/query-regressions.test.d.ts.map +1 -0
  985. package/dist/tools/query-regressions.test.js +129 -0
  986. package/dist/tools/query-regressions.test.js.map +1 -0
  987. package/dist/tools/query-traces.d.ts +103 -71
  988. package/dist/tools/query-traces.d.ts.map +1 -1
  989. package/dist/tools/query-traces.js +75 -106
  990. package/dist/tools/query-traces.js.map +1 -1
  991. package/dist/tools/query-traces.test.js +140 -846
  992. package/dist/tools/query-traces.test.js.map +1 -1
  993. package/dist/tools/query-verifications.d.ts +55 -43
  994. package/dist/tools/query-verifications.d.ts.map +1 -1
  995. package/dist/tools/query-verifications.js +47 -46
  996. package/dist/tools/query-verifications.js.map +1 -1
  997. package/dist/tools/query-verifications.test.js +42 -35
  998. package/dist/tools/query-verifications.test.js.map +1 -1
  999. package/dist/tools/routing-telemetry.d.ts +168 -0
  1000. package/dist/tools/routing-telemetry.d.ts.map +1 -0
  1001. package/dist/tools/routing-telemetry.js +267 -0
  1002. package/dist/tools/routing-telemetry.js.map +1 -0
  1003. package/dist/tools/routing-telemetry.test.d.ts +5 -0
  1004. package/dist/tools/routing-telemetry.test.d.ts.map +1 -0
  1005. package/dist/tools/routing-telemetry.test.js +747 -0
  1006. package/dist/tools/routing-telemetry.test.js.map +1 -0
  1007. package/dist/tools/setup-claudeignore.d.ts +4 -32
  1008. package/dist/tools/setup-claudeignore.d.ts.map +1 -1
  1009. package/dist/tools/setup-claudeignore.js +18 -22
  1010. package/dist/tools/setup-claudeignore.js.map +1 -1
  1011. package/dist/tools/setup-claudeignore.test.js +50 -49
  1012. package/dist/tools/setup-claudeignore.test.js.map +1 -1
  1013. package/dist/tools/token-budget.d.ts +170 -0
  1014. package/dist/tools/token-budget.d.ts.map +1 -0
  1015. package/dist/tools/token-budget.js +219 -0
  1016. package/dist/tools/token-budget.js.map +1 -0
  1017. package/dist/tools/token-budget.test.d.ts +5 -0
  1018. package/dist/tools/token-budget.test.d.ts.map +1 -0
  1019. package/dist/tools/token-budget.test.js +293 -0
  1020. package/dist/tools/token-budget.test.js.map +1 -0
  1021. package/package.json +72 -10
  1022. package/dist/backends/local-jsonl.test.d.ts +0 -2
  1023. package/dist/backends/local-jsonl.test.d.ts.map +0 -1
  1024. package/dist/backends/local-jsonl.test.js +0 -4651
  1025. package/dist/backends/local-jsonl.test.js.map +0 -1
  1026. package/dist/backends/signoz-api-circuit-breaker.test.d.ts +0 -6
  1027. package/dist/backends/signoz-api-circuit-breaker.test.d.ts.map +0 -1
  1028. package/dist/backends/signoz-api-circuit-breaker.test.js +0 -548
  1029. package/dist/backends/signoz-api-circuit-breaker.test.js.map +0 -1
  1030. package/dist/backends/signoz-api-rate-limiter.test.d.ts +0 -6
  1031. package/dist/backends/signoz-api-rate-limiter.test.d.ts.map +0 -1
  1032. package/dist/backends/signoz-api-rate-limiter.test.js +0 -390
  1033. package/dist/backends/signoz-api-rate-limiter.test.js.map +0 -1
  1034. package/dist/backends/signoz-api-ssrf.test.d.ts +0 -6
  1035. package/dist/backends/signoz-api-ssrf.test.d.ts.map +0 -1
  1036. package/dist/backends/signoz-api-ssrf.test.js +0 -216
  1037. package/dist/backends/signoz-api-ssrf.test.js.map +0 -1
  1038. package/dist/backends/signoz-api-test-helpers.d.ts +0 -80
  1039. package/dist/backends/signoz-api-test-helpers.d.ts.map +0 -1
  1040. package/dist/backends/signoz-api-test-helpers.js +0 -79
  1041. package/dist/backends/signoz-api-test-helpers.js.map +0 -1
  1042. package/dist/backends/signoz-api.d.ts +0 -109
  1043. package/dist/backends/signoz-api.d.ts.map +0 -1
  1044. package/dist/backends/signoz-api.integration.test.d.ts +0 -8
  1045. package/dist/backends/signoz-api.integration.test.d.ts.map +0 -1
  1046. package/dist/backends/signoz-api.integration.test.js +0 -137
  1047. package/dist/backends/signoz-api.integration.test.js.map +0 -1
  1048. package/dist/backends/signoz-api.js +0 -1132
  1049. package/dist/backends/signoz-api.js.map +0 -1
  1050. package/dist/backends/signoz-api.test.d.ts +0 -11
  1051. package/dist/backends/signoz-api.test.d.ts.map +0 -1
  1052. package/dist/backends/signoz-api.test.js +0 -832
  1053. package/dist/backends/signoz-api.test.js.map +0 -1
  1054. package/dist/lib/agent-as-judge.d.ts +0 -388
  1055. package/dist/lib/agent-as-judge.d.ts.map +0 -1
  1056. package/dist/lib/agent-as-judge.js +0 -740
  1057. package/dist/lib/agent-as-judge.js.map +0 -1
  1058. package/dist/lib/agent-as-judge.test.d.ts.map +0 -1
  1059. package/dist/lib/agent-as-judge.test.js +0 -816
  1060. package/dist/lib/agent-as-judge.test.js.map +0 -1
  1061. package/dist/lib/cache.d.ts +0 -90
  1062. package/dist/lib/cache.d.ts.map +0 -1
  1063. package/dist/lib/cache.js +0 -133
  1064. package/dist/lib/cache.js.map +0 -1
  1065. package/dist/lib/cache.test.d.ts.map +0 -1
  1066. package/dist/lib/cache.test.js +0 -105
  1067. package/dist/lib/cache.test.js.map +0 -1
  1068. package/dist/lib/circuit-breaker.d.ts +0 -101
  1069. package/dist/lib/circuit-breaker.d.ts.map +0 -1
  1070. package/dist/lib/circuit-breaker.js +0 -158
  1071. package/dist/lib/circuit-breaker.js.map +0 -1
  1072. package/dist/lib/circuit-breaker.test.d.ts.map +0 -1
  1073. package/dist/lib/circuit-breaker.test.js +0 -263
  1074. package/dist/lib/circuit-breaker.test.js.map +0 -1
  1075. package/dist/lib/confident-export.d.ts +0 -101
  1076. package/dist/lib/confident-export.d.ts.map +0 -1
  1077. package/dist/lib/confident-export.js +0 -393
  1078. package/dist/lib/confident-export.js.map +0 -1
  1079. package/dist/lib/confident-export.test.d.ts.map +0 -1
  1080. package/dist/lib/confident-export.test.js +0 -835
  1081. package/dist/lib/confident-export.test.js.map +0 -1
  1082. package/dist/lib/constants-symlink.test.d.ts.map +0 -1
  1083. package/dist/lib/constants-symlink.test.js +0 -357
  1084. package/dist/lib/constants-symlink.test.js.map +0 -1
  1085. package/dist/lib/constants.d.ts +0 -183
  1086. package/dist/lib/constants.d.ts.map +0 -1
  1087. package/dist/lib/constants.js +0 -453
  1088. package/dist/lib/constants.js.map +0 -1
  1089. package/dist/lib/constants.test.d.ts.map +0 -1
  1090. package/dist/lib/constants.test.js +0 -717
  1091. package/dist/lib/constants.test.js.map +0 -1
  1092. package/dist/lib/datadog-export.d.ts +0 -156
  1093. package/dist/lib/datadog-export.d.ts.map +0 -1
  1094. package/dist/lib/datadog-export.js +0 -464
  1095. package/dist/lib/datadog-export.js.map +0 -1
  1096. package/dist/lib/datadog-export.test.d.ts +0 -14
  1097. package/dist/lib/datadog-export.test.d.ts.map +0 -1
  1098. package/dist/lib/datadog-export.test.js +0 -890
  1099. package/dist/lib/datadog-export.test.js.map +0 -1
  1100. package/dist/lib/edge-cases.test.d.ts.map +0 -1
  1101. package/dist/lib/edge-cases.test.js +0 -634
  1102. package/dist/lib/edge-cases.test.js.map +0 -1
  1103. package/dist/lib/error-sanitizer.d.ts +0 -57
  1104. package/dist/lib/error-sanitizer.d.ts.map +0 -1
  1105. package/dist/lib/error-sanitizer.js +0 -233
  1106. package/dist/lib/error-sanitizer.js.map +0 -1
  1107. package/dist/lib/error-sanitizer.test.d.ts.map +0 -1
  1108. package/dist/lib/error-sanitizer.test.js +0 -528
  1109. package/dist/lib/error-sanitizer.test.js.map +0 -1
  1110. package/dist/lib/error-types.d.ts +0 -54
  1111. package/dist/lib/error-types.d.ts.map +0 -1
  1112. package/dist/lib/error-types.js +0 -154
  1113. package/dist/lib/error-types.js.map +0 -1
  1114. package/dist/lib/error-types.test.d.ts.map +0 -1
  1115. package/dist/lib/error-types.test.js +0 -196
  1116. package/dist/lib/error-types.test.js.map +0 -1
  1117. package/dist/lib/evaluation-hooks.d.ts +0 -49
  1118. package/dist/lib/evaluation-hooks.d.ts.map +0 -1
  1119. package/dist/lib/evaluation-hooks.js +0 -488
  1120. package/dist/lib/evaluation-hooks.js.map +0 -1
  1121. package/dist/lib/evaluation-hooks.test.d.ts.map +0 -1
  1122. package/dist/lib/evaluation-hooks.test.js +0 -624
  1123. package/dist/lib/evaluation-hooks.test.js.map +0 -1
  1124. package/dist/lib/export-utils.d.ts +0 -99
  1125. package/dist/lib/export-utils.d.ts.map +0 -1
  1126. package/dist/lib/export-utils.js +0 -238
  1127. package/dist/lib/export-utils.js.map +0 -1
  1128. package/dist/lib/export-utils.test.d.ts.map +0 -1
  1129. package/dist/lib/export-utils.test.js +0 -193
  1130. package/dist/lib/export-utils.test.js.map +0 -1
  1131. package/dist/lib/file-utils.d.ts +0 -320
  1132. package/dist/lib/file-utils.d.ts.map +0 -1
  1133. package/dist/lib/file-utils.js +0 -816
  1134. package/dist/lib/file-utils.js.map +0 -1
  1135. package/dist/lib/file-utils.test.d.ts.map +0 -1
  1136. package/dist/lib/file-utils.test.js +0 -1333
  1137. package/dist/lib/file-utils.test.js.map +0 -1
  1138. package/dist/lib/histogram.d.ts +0 -119
  1139. package/dist/lib/histogram.d.ts.map +0 -1
  1140. package/dist/lib/histogram.js +0 -202
  1141. package/dist/lib/histogram.js.map +0 -1
  1142. package/dist/lib/histogram.test.d.ts.map +0 -1
  1143. package/dist/lib/histogram.test.js +0 -381
  1144. package/dist/lib/histogram.test.js.map +0 -1
  1145. package/dist/lib/indexer.d.ts +0 -96
  1146. package/dist/lib/indexer.d.ts.map +0 -1
  1147. package/dist/lib/indexer.js +0 -353
  1148. package/dist/lib/indexer.js.map +0 -1
  1149. package/dist/lib/indexer.test.d.ts.map +0 -1
  1150. package/dist/lib/indexer.test.js +0 -696
  1151. package/dist/lib/indexer.test.js.map +0 -1
  1152. package/dist/lib/input-validator.d.ts +0 -115
  1153. package/dist/lib/input-validator.d.ts.map +0 -1
  1154. package/dist/lib/input-validator.fuzz.test.d.ts.map +0 -1
  1155. package/dist/lib/input-validator.fuzz.test.js +0 -290
  1156. package/dist/lib/input-validator.fuzz.test.js.map +0 -1
  1157. package/dist/lib/input-validator.js +0 -304
  1158. package/dist/lib/input-validator.js.map +0 -1
  1159. package/dist/lib/input-validator.test.d.ts.map +0 -1
  1160. package/dist/lib/input-validator.test.js +0 -415
  1161. package/dist/lib/input-validator.test.js.map +0 -1
  1162. package/dist/lib/instrumentation.d.ts +0 -153
  1163. package/dist/lib/instrumentation.d.ts.map +0 -1
  1164. package/dist/lib/instrumentation.integration.test.d.ts.map +0 -1
  1165. package/dist/lib/instrumentation.integration.test.js +0 -589
  1166. package/dist/lib/instrumentation.integration.test.js.map +0 -1
  1167. package/dist/lib/instrumentation.js +0 -520
  1168. package/dist/lib/instrumentation.js.map +0 -1
  1169. package/dist/lib/instrumentation.test.d.ts.map +0 -1
  1170. package/dist/lib/instrumentation.test.js +0 -821
  1171. package/dist/lib/instrumentation.test.js.map +0 -1
  1172. package/dist/lib/langfuse-export.d.ts +0 -125
  1173. package/dist/lib/langfuse-export.d.ts.map +0 -1
  1174. package/dist/lib/langfuse-export.js +0 -367
  1175. package/dist/lib/langfuse-export.js.map +0 -1
  1176. package/dist/lib/langfuse-export.test.d.ts.map +0 -1
  1177. package/dist/lib/langfuse-export.test.js +0 -1007
  1178. package/dist/lib/langfuse-export.test.js.map +0 -1
  1179. package/dist/lib/llm-as-judge.d.ts +0 -657
  1180. package/dist/lib/llm-as-judge.d.ts.map +0 -1
  1181. package/dist/lib/llm-as-judge.js +0 -1397
  1182. package/dist/lib/llm-as-judge.js.map +0 -1
  1183. package/dist/lib/llm-as-judge.test.d.ts.map +0 -1
  1184. package/dist/lib/llm-as-judge.test.js +0 -2409
  1185. package/dist/lib/llm-as-judge.test.js.map +0 -1
  1186. package/dist/lib/logger.d.ts +0 -46
  1187. package/dist/lib/logger.d.ts.map +0 -1
  1188. package/dist/lib/logger.js +0 -81
  1189. package/dist/lib/logger.js.map +0 -1
  1190. package/dist/lib/logger.test.d.ts.map +0 -1
  1191. package/dist/lib/logger.test.js.map +0 -1
  1192. package/dist/lib/metrics.d.ts +0 -62
  1193. package/dist/lib/metrics.d.ts.map +0 -1
  1194. package/dist/lib/metrics.js +0 -166
  1195. package/dist/lib/metrics.js.map +0 -1
  1196. package/dist/lib/metrics.test.d.ts.map +0 -1
  1197. package/dist/lib/metrics.test.js +0 -189
  1198. package/dist/lib/metrics.test.js.map +0 -1
  1199. package/dist/lib/otlp-export.d.ts +0 -178
  1200. package/dist/lib/otlp-export.d.ts.map +0 -1
  1201. package/dist/lib/otlp-export.js +0 -382
  1202. package/dist/lib/otlp-export.js.map +0 -1
  1203. package/dist/lib/parse-stats.d.ts.map +0 -1
  1204. package/dist/lib/parse-stats.js +0 -206
  1205. package/dist/lib/parse-stats.js.map +0 -1
  1206. package/dist/lib/parse-stats.test.d.ts.map +0 -1
  1207. package/dist/lib/parse-stats.test.js +0 -283
  1208. package/dist/lib/parse-stats.test.js.map +0 -1
  1209. package/dist/lib/phoenix-export.d.ts +0 -109
  1210. package/dist/lib/phoenix-export.d.ts.map +0 -1
  1211. package/dist/lib/phoenix-export.js +0 -429
  1212. package/dist/lib/phoenix-export.js.map +0 -1
  1213. package/dist/lib/phoenix-export.test.d.ts.map +0 -1
  1214. package/dist/lib/phoenix-export.test.js +0 -725
  1215. package/dist/lib/phoenix-export.test.js.map +0 -1
  1216. package/dist/lib/query-sanitizer.d.ts.map +0 -1
  1217. package/dist/lib/query-sanitizer.js +0 -261
  1218. package/dist/lib/query-sanitizer.js.map +0 -1
  1219. package/dist/lib/query-sanitizer.test.d.ts.map +0 -1
  1220. package/dist/lib/query-sanitizer.test.js +0 -400
  1221. package/dist/lib/query-sanitizer.test.js.map +0 -1
  1222. package/dist/lib/server-utils.d.ts +0 -93
  1223. package/dist/lib/server-utils.d.ts.map +0 -1
  1224. package/dist/lib/server-utils.js +0 -181
  1225. package/dist/lib/server-utils.js.map +0 -1
  1226. package/dist/lib/shared-schemas.d.ts +0 -87
  1227. package/dist/lib/shared-schemas.d.ts.map +0 -1
  1228. package/dist/lib/shared-schemas.js +0 -87
  1229. package/dist/lib/shared-schemas.js.map +0 -1
  1230. package/dist/lib/shared-schemas.test.d.ts.map +0 -1
  1231. package/dist/lib/shared-schemas.test.js +0 -106
  1232. package/dist/lib/shared-schemas.test.js.map +0 -1
  1233. package/dist/lib/toon-encoder.d.ts +0 -26
  1234. package/dist/lib/toon-encoder.d.ts.map +0 -1
  1235. package/dist/lib/toon-encoder.js +0 -61
  1236. package/dist/lib/toon-encoder.js.map +0 -1
  1237. package/dist/lib/toon-encoder.test.d.ts.map +0 -1
  1238. package/dist/lib/toon-encoder.test.js +0 -85
  1239. package/dist/lib/toon-encoder.test.js.map +0 -1
  1240. package/dist/lib/verification-events.d.ts +0 -100
  1241. package/dist/lib/verification-events.d.ts.map +0 -1
  1242. package/dist/lib/verification-events.js +0 -162
  1243. package/dist/lib/verification-events.js.map +0 -1
  1244. package/dist/lib/verification-events.test.d.ts.map +0 -1
  1245. package/dist/lib/verification-events.test.js +0 -193
  1246. package/dist/lib/verification-events.test.js.map +0 -1
  1247. package/dist/tools/signoz.integration.test.d.ts +0 -8
  1248. package/dist/tools/signoz.integration.test.d.ts.map +0 -1
  1249. package/dist/tools/signoz.integration.test.js +0 -141
  1250. package/dist/tools/signoz.integration.test.js.map +0 -1
  1251. package/dist/types/evaluation-hooks.d.ts +0 -176
  1252. package/dist/types/evaluation-hooks.d.ts.map +0 -1
  1253. package/dist/types/evaluation-hooks.js +0 -49
  1254. package/dist/types/evaluation-hooks.js.map +0 -1
  1255. /package/dist/lib/{agent-as-judge.test.d.ts → agent-judge/agent-as-judge.test.d.ts} +0 -0
  1256. /package/dist/lib/{verification-events.test.d.ts → audit/verification-events.test.d.ts} +0 -0
  1257. /package/dist/lib/{constants-symlink.test.d.ts → core/constants-symlink.test.d.ts} +0 -0
  1258. /package/dist/lib/{constants.test.d.ts → core/constants.test.d.ts} +0 -0
  1259. /package/dist/lib/{edge-cases.test.d.ts → core/edge-cases.test.d.ts} +0 -0
  1260. /package/dist/lib/{file-utils.test.d.ts → core/file-utils.test.d.ts} +0 -0
  1261. /package/dist/lib/{input-validator.fuzz.test.d.ts → core/input-validator.fuzz.test.d.ts} +0 -0
  1262. /package/dist/lib/{input-validator.test.d.ts → core/input-validator.test.d.ts} +0 -0
  1263. /package/dist/lib/{logger.test.d.ts → core/logger.test.d.ts} +0 -0
  1264. /package/dist/lib/{logger.test.js → core/logger.test.js} +0 -0
  1265. /package/dist/lib/{shared-schemas.test.d.ts → core/shared-schemas.test.d.ts} +0 -0
  1266. /package/dist/lib/{error-sanitizer.test.d.ts → errors/error-sanitizer.test.d.ts} +0 -0
  1267. /package/dist/lib/{error-types.test.d.ts → errors/error-types.test.d.ts} +0 -0
  1268. /package/dist/lib/{query-sanitizer.d.ts → errors/query-sanitizer.d.ts} +0 -0
  1269. /package/dist/lib/{query-sanitizer.test.d.ts → errors/query-sanitizer.test.d.ts} +0 -0
  1270. /package/dist/lib/{confident-export.test.d.ts → exports/confident-export.test.d.ts} +0 -0
  1271. /package/dist/lib/{export-utils.test.d.ts → exports/export-utils.test.d.ts} +0 -0
  1272. /package/dist/lib/{langfuse-export.test.d.ts → exports/langfuse-export.test.d.ts} +0 -0
  1273. /package/dist/lib/{phoenix-export.test.d.ts → exports/phoenix-export.test.d.ts} +0 -0
  1274. /package/dist/lib/{evaluation-hooks.test.d.ts → judge/evaluation-hooks.test.d.ts} +0 -0
  1275. /package/dist/lib/{llm-as-judge.test.d.ts → judge/llm-as-judge.test.d.ts} +0 -0
  1276. /package/dist/lib/{histogram.test.d.ts → observability/histogram.test.d.ts} +0 -0
  1277. /package/dist/lib/{indexer.test.d.ts → observability/indexer.test.d.ts} +0 -0
  1278. /package/dist/lib/{instrumentation.integration.test.d.ts → observability/instrumentation.integration.test.d.ts} +0 -0
  1279. /package/dist/lib/{instrumentation.test.d.ts → observability/instrumentation.test.d.ts} +0 -0
  1280. /package/dist/lib/{metrics.test.d.ts → observability/metrics.test.d.ts} +0 -0
  1281. /package/dist/lib/{parse-stats.d.ts → observability/parse-stats.d.ts} +0 -0
  1282. /package/dist/lib/{parse-stats.test.d.ts → observability/parse-stats.test.d.ts} +0 -0
  1283. /package/dist/lib/{cache.test.d.ts → resilience/cache.test.d.ts} +0 -0
  1284. /package/dist/lib/{circuit-breaker.test.d.ts → resilience/circuit-breaker.test.d.ts} +0 -0
  1285. /package/dist/lib/{toon-encoder.test.d.ts → resilience/toon-encoder.test.d.ts} +0 -0
@@ -2,8 +2,22 @@ import { describe, it, before, after, beforeEach } from 'node:test';
2
2
  import * as assert from 'node:assert';
3
3
  import * as path from 'path';
4
4
  import { LocalJsonlBackend } from './local-jsonl.js';
5
+ import { SPAN_KIND, STATUS_CODES } from '../lib/core/constants.js';
6
+ import { ONE_MILLION, TIME_MS } from '../lib/core/units.js';
5
7
  import { getSharedTempDir, clearTempDir, removeSharedTempDir, writeJsonlFileAsync, getTestDate } from '../test-helpers/file-utils.js';
6
8
  import { createMockSpan, createMockSpans, createDbSpan, resetBuilderCounters, } from '../test-helpers/test-data-builders.js';
9
+ import { COUNT_FIFTY, COUNT_HUNDRED, COUNT_THREE, COUNT_TWENTY, COUNT_TWO, COUNT_TWO_HUNDRED, EPOCH_SEC, EPOCH_SEC_PLUS_ONE, EPOCH_SEC_PLUS_TWO, EPOCH_SEC_PLUS_TEN, NANO_HALF_SECOND, NANO_ZERO, } from '../test-helpers/test-constants.js';
10
+ const SPAN_KIND_INTERNAL = SPAN_KIND.INTERNAL;
11
+ const SPAN_KIND_SERVER = SPAN_KIND.SERVER;
12
+ const SPAN_KIND_CLIENT = SPAN_KIND.CLIENT;
13
+ const STATUS_CODE_UNSET_INDEX = STATUS_CODES.indexOf('UNSET');
14
+ const STATUS_CODE_OK_INDEX = STATUS_CODES.indexOf('OK');
15
+ const STATUS_CODE_ERROR_INDEX = STATUS_CODES.indexOf('ERROR');
16
+ const BULK_TRACE_SPAN_COUNT = COUNT_HUNDRED + COUNT_FIFTY;
17
+ const DURATION_MS_TWO_AND_HALF_SECONDS = (COUNT_TWO * TIME_MS.SECOND)
18
+ + (NANO_HALF_SECOND / ONE_MILLION);
19
+ const TRACE_DURATION_NS_100_MS = COUNT_HUNDRED * ONE_MILLION;
20
+ const TRACE_DURATION_NS_200_MS = COUNT_TWO_HUNDRED * ONE_MILLION;
7
21
  describe('LocalJsonlBackend', () => {
8
22
  let tempDir;
9
23
  let backend;
@@ -25,8 +39,8 @@ describe('LocalJsonlBackend', () => {
25
39
  traceId: 'trace1',
26
40
  spanId: 'span1',
27
41
  name: 'test-operation',
28
- startTime: [1700000000, 0],
29
- endTime: [1700000001, 500000000],
42
+ startTime: [EPOCH_SEC, NANO_ZERO],
43
+ endTime: [EPOCH_SEC_PLUS_ONE, NANO_HALF_SECOND],
30
44
  resource: { serviceName: 'test-service', serviceVersion: '1.0.0' },
31
45
  attributes: { 'custom.attr': 'value1' },
32
46
  },
@@ -52,7 +66,7 @@ describe('LocalJsonlBackend', () => {
52
66
  ];
53
67
  await writeJsonlFileAsync(path.join(tempDir, `traces-${today}.jsonl`), mockSpans);
54
68
  const results = await backend.queryTraces({ traceId: 'trace1' });
55
- assert.strictEqual(results.length, 2);
69
+ assert.strictEqual(results.length, COUNT_TWO);
56
70
  assert.ok(results.every(s => s.traceId === 'trace1'));
57
71
  });
58
72
  it('should filter spans by spanName substring', async () => {
@@ -66,7 +80,7 @@ describe('LocalJsonlBackend', () => {
66
80
  ];
67
81
  await writeJsonlFileAsync(path.join(tempDir, `traces-${today}.jsonl`), mockSpans);
68
82
  const results = await backend.queryTraces({ spanName: 'user' });
69
- assert.strictEqual(results.length, 2);
83
+ assert.strictEqual(results.length, COUNT_TWO);
70
84
  assert.ok(results.every(s => s.name.includes('user')));
71
85
  });
72
86
  it('should filter spans by duration range', async () => {
@@ -76,22 +90,22 @@ describe('LocalJsonlBackend', () => {
76
90
  traceId: 'trace1',
77
91
  spanId: 'span1',
78
92
  name: 'fast-op',
79
- startTime: [1700000000, 0],
80
- endTime: [1700000000, 500000000], // 0.5s
93
+ startTime: [EPOCH_SEC, NANO_ZERO],
94
+ endTime: [EPOCH_SEC, NANO_HALF_SECOND], // 0.5s
81
95
  },
82
96
  {
83
97
  traceId: 'trace1',
84
98
  spanId: 'span2',
85
99
  name: 'medium-op',
86
- startTime: [1700000000, 0],
87
- endTime: [1700000002, 0], // 2s
100
+ startTime: [EPOCH_SEC, NANO_ZERO],
101
+ endTime: [EPOCH_SEC_PLUS_TWO, NANO_ZERO], // 2s
88
102
  },
89
103
  {
90
104
  traceId: 'trace1',
91
105
  spanId: 'span3',
92
106
  name: 'slow-op',
93
- startTime: [1700000000, 0],
94
- endTime: [1700000010, 0], // 10s
107
+ startTime: [EPOCH_SEC, NANO_ZERO],
108
+ endTime: [EPOCH_SEC_PLUS_TEN, NANO_ZERO], // 10s
95
109
  },
96
110
  ];
97
111
  await writeJsonlFileAsync(path.join(tempDir, `traces-${today}.jsonl`), mockSpans);
@@ -106,14 +120,14 @@ describe('LocalJsonlBackend', () => {
106
120
  traceId: 'trace1',
107
121
  spanId: 'span1',
108
122
  name: 'op1',
109
- startTime: [1700000000, 0],
123
+ startTime: [EPOCH_SEC, NANO_ZERO],
110
124
  resource: { serviceName: 'service-a' },
111
125
  },
112
126
  {
113
127
  traceId: 'trace1',
114
128
  spanId: 'span2',
115
129
  name: 'op2',
116
- startTime: [1700000000, 0],
130
+ startTime: [EPOCH_SEC, NANO_ZERO],
117
131
  resource: { serviceName: 'service-b' },
118
132
  },
119
133
  ];
@@ -126,23 +140,23 @@ describe('LocalJsonlBackend', () => {
126
140
  const today = getTestDate();
127
141
  resetBuilderCounters();
128
142
  // Use createMockSpans with dynamic overrides for indexed data
129
- const mockSpans = createMockSpans(150, (i) => ({
143
+ const mockSpans = createMockSpans(BULK_TRACE_SPAN_COUNT, (i) => ({
130
144
  traceId: `trace${i}`,
131
145
  spanId: `span${i}`,
132
146
  name: `op${i}`,
133
147
  }));
134
148
  await writeJsonlFileAsync(path.join(tempDir, `traces-${today}.jsonl`), mockSpans);
135
149
  const results = await backend.queryTraces({ limit: 50, offset: 25 });
136
- assert.strictEqual(results.length, 50);
150
+ assert.strictEqual(results.length, COUNT_FIFTY);
137
151
  assert.strictEqual(results[0].traceId, 'trace25');
138
152
  });
139
153
  it('should skip invalid spans (missing required fields)', async () => {
140
154
  const today = getTestDate();
141
155
  const mockSpans = [
142
- { traceId: 'trace1', spanId: 'span1', name: 'op1', startTime: [1700000000, 0] },
143
- { traceId: 'trace2', spanId: 'span2', startTime: [1700000000, 0] }, // missing name
144
- { spanId: 'span3', name: 'op3', startTime: [1700000000, 0] }, // missing traceId
145
- { traceId: 'trace4', name: 'op4', startTime: [1700000000, 0] }, // missing spanId
156
+ { traceId: 'trace1', spanId: 'span1', name: 'op1', startTime: [EPOCH_SEC, NANO_ZERO] },
157
+ { traceId: 'trace2', spanId: 'span2', startTime: [EPOCH_SEC, NANO_ZERO] }, // missing name
158
+ { spanId: 'span3', name: 'op3', startTime: [EPOCH_SEC, NANO_ZERO] }, // missing traceId
159
+ { traceId: 'trace4', name: 'op4', startTime: [EPOCH_SEC, NANO_ZERO] }, // missing spanId
146
160
  ];
147
161
  await writeJsonlFileAsync(path.join(tempDir, `traces-${today}.jsonl`), mockSpans);
148
162
  const results = await backend.queryTraces({});
@@ -156,21 +170,21 @@ describe('LocalJsonlBackend', () => {
156
170
  traceId: 'trace1',
157
171
  spanId: 'span1',
158
172
  name: 'op1',
159
- startTime: [1700000000, 0],
160
- duration: [2, 500000000], // 2.5 seconds
173
+ startTime: [EPOCH_SEC, NANO_ZERO],
174
+ duration: [COUNT_TWO, NANO_HALF_SECOND], // 2.5 seconds
161
175
  },
162
176
  ];
163
177
  await writeJsonlFileAsync(path.join(tempDir, `traces-${today}.jsonl`), mockSpans);
164
178
  const results = await backend.queryTraces({});
165
179
  assert.strictEqual(results.length, 1);
166
- assert.strictEqual(results[0].durationMs, 2500);
180
+ assert.strictEqual(results[0].durationMs, DURATION_MS_TWO_AND_HALF_SECONDS);
167
181
  });
168
182
  it('should convert span kind number to string', async () => {
169
183
  const today = getTestDate();
170
184
  const mockSpans = [
171
- { traceId: 'trace1', spanId: 'span1', name: 'op1', kind: 0, startTime: [1700000000, 0] },
172
- { traceId: 'trace2', spanId: 'span2', name: 'op2', kind: 1, startTime: [1700000000, 0] },
173
- { traceId: 'trace3', spanId: 'span3', name: 'op3', kind: 2, startTime: [1700000000, 0] },
185
+ { traceId: 'trace1', spanId: 'span1', name: 'op1', kind: SPAN_KIND_INTERNAL, startTime: [EPOCH_SEC, NANO_ZERO] },
186
+ { traceId: 'trace2', spanId: 'span2', name: 'op2', kind: SPAN_KIND_SERVER, startTime: [EPOCH_SEC, NANO_ZERO] },
187
+ { traceId: 'trace3', spanId: 'span3', name: 'op3', kind: SPAN_KIND_CLIENT, startTime: [EPOCH_SEC, NANO_ZERO] },
174
188
  ];
175
189
  await writeJsonlFileAsync(path.join(tempDir, `traces-${today}.jsonl`), mockSpans);
176
190
  const results = await backend.queryTraces({});
@@ -181,24 +195,24 @@ describe('LocalJsonlBackend', () => {
181
195
  it('should convert status code number to string', async () => {
182
196
  const today = getTestDate();
183
197
  const mockSpans = [
184
- { traceId: 'trace1', spanId: 'span1', name: 'op1', startTime: [1700000000, 0], status: { code: 0 } },
185
- { traceId: 'trace2', spanId: 'span2', name: 'op2', startTime: [1700000000, 0], status: { code: 1 } },
186
- { traceId: 'trace3', spanId: 'span3', name: 'op3', startTime: [1700000000, 0], status: { code: 2, message: 'Test error' } },
198
+ { traceId: 'trace1', spanId: 'span1', name: 'op1', startTime: [EPOCH_SEC, NANO_ZERO], status: { code: STATUS_CODE_UNSET_INDEX } },
199
+ { traceId: 'trace2', spanId: 'span2', name: 'op2', startTime: [EPOCH_SEC, NANO_ZERO], status: { code: STATUS_CODE_OK_INDEX } },
200
+ { traceId: 'trace3', spanId: 'span3', name: 'op3', startTime: [EPOCH_SEC, NANO_ZERO], status: { code: STATUS_CODE_ERROR_INDEX, message: 'Test error' } },
187
201
  ];
188
202
  await writeJsonlFileAsync(path.join(tempDir, `traces-${today}.jsonl`), mockSpans);
189
203
  const results = await backend.queryTraces({});
190
- assert.strictEqual(results[0].statusCode, 'UNSET');
191
- assert.strictEqual(results[0].status?.code, 0);
192
- assert.strictEqual(results[1].statusCode, 'OK');
193
- assert.strictEqual(results[1].status?.code, 1);
194
- assert.strictEqual(results[2].statusCode, 'ERROR');
195
- assert.strictEqual(results[2].status?.code, 2);
204
+ assert.strictEqual(results[0].statusCode, STATUS_CODES[STATUS_CODE_UNSET_INDEX]);
205
+ assert.strictEqual(results[0].status?.code, STATUS_CODE_UNSET_INDEX);
206
+ assert.strictEqual(results[1].statusCode, STATUS_CODES[STATUS_CODE_OK_INDEX]);
207
+ assert.strictEqual(results[1].status?.code, STATUS_CODE_OK_INDEX);
208
+ assert.strictEqual(results[2].statusCode, STATUS_CODES[STATUS_CODE_ERROR_INDEX]);
209
+ assert.strictEqual(results[2].status?.code, STATUS_CODE_ERROR_INDEX);
196
210
  assert.strictEqual(results[2].status?.message, 'Test error');
197
211
  });
198
212
  it('should handle spans without status', async () => {
199
213
  const today = getTestDate();
200
214
  const mockSpans = [
201
- { traceId: 'trace1', spanId: 'span1', name: 'op1', startTime: [1700000000, 0] },
215
+ { traceId: 'trace1', spanId: 'span1', name: 'op1', startTime: [EPOCH_SEC, NANO_ZERO] },
202
216
  ];
203
217
  await writeJsonlFileAsync(path.join(tempDir, `traces-${today}.jsonl`), mockSpans);
204
218
  const results = await backend.queryTraces({});
@@ -212,7 +226,7 @@ describe('LocalJsonlBackend', () => {
212
226
  traceId: 'trace1',
213
227
  spanId: 'span1',
214
228
  name: 'http-request',
215
- startTime: [1700000000, 0],
229
+ startTime: [EPOCH_SEC, NANO_ZERO],
216
230
  instrumentationScope: {
217
231
  name: '@opentelemetry/instrumentation-http',
218
232
  version: '0.48.0',
@@ -223,7 +237,7 @@ describe('LocalJsonlBackend', () => {
223
237
  traceId: 'trace2',
224
238
  spanId: 'span2',
225
239
  name: 'custom-span',
226
- startTime: [1700000000, 0],
240
+ startTime: [EPOCH_SEC, NANO_ZERO],
227
241
  instrumentationScope: {
228
242
  name: 'custom-hooks',
229
243
  },
@@ -232,12 +246,12 @@ describe('LocalJsonlBackend', () => {
232
246
  traceId: 'trace3',
233
247
  spanId: 'span3',
234
248
  name: 'no-scope',
235
- startTime: [1700000000, 0],
249
+ startTime: [EPOCH_SEC, NANO_ZERO],
236
250
  },
237
251
  ];
238
252
  await writeJsonlFileAsync(path.join(tempDir, `traces-${today}.jsonl`), mockSpans);
239
253
  const results = await backend.queryTraces({});
240
- assert.strictEqual(results.length, 3);
254
+ assert.strictEqual(results.length, COUNT_THREE);
241
255
  // First span: full scope
242
256
  assert.strictEqual(results[0].instrumentationScope?.name, '@opentelemetry/instrumentation-http');
243
257
  assert.strictEqual(results[0].instrumentationScope?.version, '0.48.0');
@@ -255,7 +269,7 @@ describe('LocalJsonlBackend', () => {
255
269
  traceId: 'trace1',
256
270
  spanId: 'span1',
257
271
  name: 'batch-processor',
258
- startTime: [1700000000, 0],
272
+ startTime: [EPOCH_SEC, NANO_ZERO],
259
273
  links: [
260
274
  {
261
275
  context: { traceId: 'trace-upstream-1', spanId: 'span-upstream-1' },
@@ -270,7 +284,7 @@ describe('LocalJsonlBackend', () => {
270
284
  traceId: 'trace2',
271
285
  spanId: 'span2',
272
286
  name: 'single-link',
273
- startTime: [1700000000, 0],
287
+ startTime: [EPOCH_SEC, NANO_ZERO],
274
288
  links: [
275
289
  {
276
290
  context: { traceId: 'trace-parent', spanId: 'span-parent' },
@@ -282,14 +296,14 @@ describe('LocalJsonlBackend', () => {
282
296
  traceId: 'trace3',
283
297
  spanId: 'span3',
284
298
  name: 'no-links',
285
- startTime: [1700000000, 0],
299
+ startTime: [EPOCH_SEC, NANO_ZERO],
286
300
  },
287
301
  ];
288
302
  await writeJsonlFileAsync(path.join(tempDir, `traces-${today}.jsonl`), mockSpans);
289
303
  const results = await backend.queryTraces({});
290
- assert.strictEqual(results.length, 3);
304
+ assert.strictEqual(results.length, COUNT_THREE);
291
305
  // First span: multiple links
292
- assert.strictEqual(results[0].links?.length, 2);
306
+ assert.strictEqual(results[0].links?.length, COUNT_TWO);
293
307
  assert.strictEqual(results[0].links?.[0].traceId, 'trace-upstream-1');
294
308
  assert.strictEqual(results[0].links?.[0].spanId, 'span-upstream-1');
295
309
  assert.strictEqual(results[0].links?.[0].attributes?.['link.type'], 'producer');
@@ -310,7 +324,7 @@ describe('LocalJsonlBackend', () => {
310
324
  traceId: 'trace1',
311
325
  spanId: 'span1',
312
326
  name: 'mixed-links',
313
- startTime: [1700000000, 0],
327
+ startTime: [EPOCH_SEC, NANO_ZERO],
314
328
  links: [
315
329
  {
316
330
  context: { traceId: 'valid-trace', spanId: 'valid-span' },
@@ -343,7 +357,7 @@ describe('LocalJsonlBackend', () => {
343
357
  traceId: 'trace1',
344
358
  spanId: 'span1',
345
359
  name: 'all-invalid-links',
346
- startTime: [1700000000, 0],
360
+ startTime: [EPOCH_SEC, NANO_ZERO],
347
361
  links: [
348
362
  { context: { traceId: 'missing-span' } },
349
363
  { context: { spanId: 'missing-trace' } },
@@ -367,21 +381,21 @@ describe('LocalJsonlBackend', () => {
367
381
  traceId: 'trace1',
368
382
  spanId: 'span1',
369
383
  name: 'hook:session-start',
370
- startTime: [1700000000, 0],
384
+ startTime: [EPOCH_SEC, NANO_ZERO],
371
385
  attributes: { 'hook.name': 'session-start', 'hook.type': 'session' },
372
386
  },
373
387
  {
374
388
  traceId: 'trace2',
375
389
  spanId: 'span2',
376
390
  name: 'hook:mcp-pre-tool',
377
- startTime: [1700000000, 0],
391
+ startTime: [EPOCH_SEC, NANO_ZERO],
378
392
  attributes: { 'hook.name': 'mcp-pre-tool', 'mcp.server': 'signoz' },
379
393
  },
380
394
  {
381
395
  traceId: 'trace3',
382
396
  spanId: 'span3',
383
397
  name: 'hook:post-tool',
384
- startTime: [1700000000, 0],
398
+ startTime: [EPOCH_SEC, NANO_ZERO],
385
399
  attributes: { 'hook.name': 'post-tool', 'mcp.server': 'webresearch' },
386
400
  },
387
401
  ];
@@ -399,21 +413,21 @@ describe('LocalJsonlBackend', () => {
399
413
  traceId: 'trace1',
400
414
  spanId: 'span1',
401
415
  name: 'mcp-call',
402
- startTime: [1700000000, 0],
416
+ startTime: [EPOCH_SEC, NANO_ZERO],
403
417
  attributes: { 'mcp.server': 'signoz', 'mcp.success': true },
404
418
  },
405
419
  {
406
420
  traceId: 'trace2',
407
421
  spanId: 'span2',
408
422
  name: 'mcp-call',
409
- startTime: [1700000000, 0],
423
+ startTime: [EPOCH_SEC, NANO_ZERO],
410
424
  attributes: { 'mcp.server': 'signoz', 'mcp.success': false },
411
425
  },
412
426
  {
413
427
  traceId: 'trace3',
414
428
  spanId: 'span3',
415
429
  name: 'mcp-call',
416
- startTime: [1700000000, 0],
430
+ startTime: [EPOCH_SEC, NANO_ZERO],
417
431
  attributes: { 'mcp.server': 'webresearch', 'mcp.success': true },
418
432
  },
419
433
  ];
@@ -431,14 +445,14 @@ describe('LocalJsonlBackend', () => {
431
445
  traceId: 'trace1',
432
446
  spanId: 'span1',
433
447
  name: 'http-request',
434
- startTime: [1700000000, 0],
448
+ startTime: [EPOCH_SEC, NANO_ZERO],
435
449
  attributes: { 'http.status_code': 200 },
436
450
  },
437
451
  {
438
452
  traceId: 'trace2',
439
453
  spanId: 'span2',
440
454
  name: 'http-request',
441
- startTime: [1700000000, 0],
455
+ startTime: [EPOCH_SEC, NANO_ZERO],
442
456
  attributes: { 'http.status_code': 500 },
443
457
  },
444
458
  ];
@@ -456,14 +470,14 @@ describe('LocalJsonlBackend', () => {
456
470
  traceId: 'trace1',
457
471
  spanId: 'span1',
458
472
  name: 'agent-call',
459
- startTime: [1700000000, 0],
473
+ startTime: [EPOCH_SEC, NANO_ZERO],
460
474
  attributes: { 'agent.is_background': true },
461
475
  },
462
476
  {
463
477
  traceId: 'trace2',
464
478
  spanId: 'span2',
465
479
  name: 'agent-call',
466
- startTime: [1700000000, 0],
480
+ startTime: [EPOCH_SEC, NANO_ZERO],
467
481
  attributes: { 'agent.is_background': false },
468
482
  },
469
483
  ];
@@ -481,7 +495,7 @@ describe('LocalJsonlBackend', () => {
481
495
  traceId: 'trace1',
482
496
  spanId: 'span1',
483
497
  name: 'op1',
484
- startTime: [1700000000, 0],
498
+ startTime: [EPOCH_SEC, NANO_ZERO],
485
499
  attributes: { 'hook.name': 'session-start' },
486
500
  },
487
501
  ];
@@ -498,24 +512,24 @@ describe('LocalJsonlBackend', () => {
498
512
  traceId: 'trace1',
499
513
  spanId: 'span1',
500
514
  name: 'hook:mcp-pre-tool',
501
- startTime: [1700000000, 0],
502
- endTime: [1700000000, 500000000], // 500ms
515
+ startTime: [EPOCH_SEC, NANO_ZERO],
516
+ endTime: [EPOCH_SEC, NANO_HALF_SECOND], // 500ms
503
517
  attributes: { 'mcp.server': 'signoz' },
504
518
  },
505
519
  {
506
520
  traceId: 'trace2',
507
521
  spanId: 'span2',
508
522
  name: 'hook:mcp-pre-tool',
509
- startTime: [1700000000, 0],
510
- endTime: [1700000002, 0], // 2000ms
523
+ startTime: [EPOCH_SEC, NANO_ZERO],
524
+ endTime: [EPOCH_SEC_PLUS_TWO, NANO_ZERO], // 2000ms
511
525
  attributes: { 'mcp.server': 'signoz' },
512
526
  },
513
527
  {
514
528
  traceId: 'trace3',
515
529
  spanId: 'span3',
516
530
  name: 'hook:mcp-pre-tool',
517
- startTime: [1700000000, 0],
518
- endTime: [1700000000, 500000000], // 500ms
531
+ startTime: [EPOCH_SEC, NANO_ZERO],
532
+ endTime: [EPOCH_SEC, NANO_HALF_SECOND], // 500ms
519
533
  attributes: { 'mcp.server': 'webresearch' },
520
534
  },
521
535
  ];
@@ -531,9 +545,9 @@ describe('LocalJsonlBackend', () => {
531
545
  it('should exclude spans matching excludeSpanName', async () => {
532
546
  const today = getTestDate();
533
547
  const mockSpans = [
534
- { traceId: 'trace1', spanId: 'span1', name: 'http-request', startTime: [1700000000, 0] },
535
- { traceId: 'trace2', spanId: 'span2', name: 'db-query', startTime: [1700000000, 0] },
536
- { traceId: 'trace3', spanId: 'span3', name: 'http-response', startTime: [1700000000, 0] },
548
+ { traceId: 'trace1', spanId: 'span1', name: 'http-request', startTime: [EPOCH_SEC, NANO_ZERO] },
549
+ { traceId: 'trace2', spanId: 'span2', name: 'db-query', startTime: [EPOCH_SEC, NANO_ZERO] },
550
+ { traceId: 'trace3', spanId: 'span3', name: 'http-response', startTime: [EPOCH_SEC, NANO_ZERO] },
537
551
  ];
538
552
  await writeJsonlFileAsync(path.join(tempDir, `traces-${today}.jsonl`), mockSpans);
539
553
  const results = await backend.queryTraces({ excludeSpanName: 'http' });
@@ -543,37 +557,37 @@ describe('LocalJsonlBackend', () => {
543
557
  it('should filter spans by spanNameRegex', async () => {
544
558
  const today = getTestDate();
545
559
  const mockSpans = [
546
- { traceId: 'trace1', spanId: 'span1', name: 'hook:session-start', startTime: [1700000000, 0] },
547
- { traceId: 'trace2', spanId: 'span2', name: 'hook:session-end', startTime: [1700000000, 0] },
548
- { traceId: 'trace3', spanId: 'span3', name: 'mcp-call', startTime: [1700000000, 0] },
549
- { traceId: 'trace4', spanId: 'span4', name: 'hook:pre-tool', startTime: [1700000000, 0] },
560
+ { traceId: 'trace1', spanId: 'span1', name: 'hook:session-start', startTime: [EPOCH_SEC, NANO_ZERO] },
561
+ { traceId: 'trace2', spanId: 'span2', name: 'hook:session-end', startTime: [EPOCH_SEC, NANO_ZERO] },
562
+ { traceId: 'trace3', spanId: 'span3', name: 'mcp-call', startTime: [EPOCH_SEC, NANO_ZERO] },
563
+ { traceId: 'trace4', spanId: 'span4', name: 'hook:pre-tool', startTime: [EPOCH_SEC, NANO_ZERO] },
550
564
  ];
551
565
  await writeJsonlFileAsync(path.join(tempDir, `traces-${today}.jsonl`), mockSpans);
552
566
  // Match spans starting with 'hook:session'
553
567
  const results = await backend.queryTraces({ spanNameRegex: '^hook:session' });
554
- assert.strictEqual(results.length, 2);
568
+ assert.strictEqual(results.length, COUNT_TWO);
555
569
  assert.ok(results.some(s => s.name === 'hook:session-start'));
556
570
  assert.ok(results.some(s => s.name === 'hook:session-end'));
557
571
  });
558
572
  it('should filter spans by spanNameRegex with complex pattern', async () => {
559
573
  const today = getTestDate();
560
574
  const mockSpans = [
561
- { traceId: 'trace1', spanId: 'span1', name: 'api-v1-users-get', startTime: [1700000000, 0] },
562
- { traceId: 'trace2', spanId: 'span2', name: 'api-v2-users-get', startTime: [1700000000, 0] },
563
- { traceId: 'trace3', spanId: 'span3', name: 'api-v1-orders-post', startTime: [1700000000, 0] },
564
- { traceId: 'trace4', spanId: 'span4', name: 'internal-process', startTime: [1700000000, 0] },
575
+ { traceId: 'trace1', spanId: 'span1', name: 'api-v1-users-get', startTime: [EPOCH_SEC, NANO_ZERO] },
576
+ { traceId: 'trace2', spanId: 'span2', name: 'api-v2-users-get', startTime: [EPOCH_SEC, NANO_ZERO] },
577
+ { traceId: 'trace3', spanId: 'span3', name: 'api-v1-orders-post', startTime: [EPOCH_SEC, NANO_ZERO] },
578
+ { traceId: 'trace4', spanId: 'span4', name: 'internal-process', startTime: [EPOCH_SEC, NANO_ZERO] },
565
579
  ];
566
580
  await writeJsonlFileAsync(path.join(tempDir, `traces-${today}.jsonl`), mockSpans);
567
581
  // Match spans with api-v[12]-.*-get pattern
568
582
  const results = await backend.queryTraces({ spanNameRegex: 'api-v[12]-.*-get' });
569
- assert.strictEqual(results.length, 2);
583
+ assert.strictEqual(results.length, COUNT_TWO);
570
584
  assert.ok(results.some(s => s.name === 'api-v1-users-get'));
571
585
  assert.ok(results.some(s => s.name === 'api-v2-users-get'));
572
586
  });
573
587
  it('should handle invalid spanNameRegex gracefully', async () => {
574
588
  const today = getTestDate();
575
589
  const mockSpans = [
576
- { traceId: 'trace1', spanId: 'span1', name: 'test-span', startTime: [1700000000, 0] },
590
+ { traceId: 'trace1', spanId: 'span1', name: 'test-span', startTime: [EPOCH_SEC, NANO_ZERO] },
577
591
  ];
578
592
  await writeJsonlFileAsync(path.join(tempDir, `traces-${today}.jsonl`), mockSpans);
579
593
  // Invalid regex pattern - should be skipped (all spans returned)
@@ -585,10 +599,10 @@ describe('LocalJsonlBackend', () => {
585
599
  it('should combine spanNameRegex with spanName filter', async () => {
586
600
  const today = getTestDate();
587
601
  const mockSpans = [
588
- { traceId: 'trace1', spanId: 'span1', name: 'hook:mcp-pre-tool', startTime: [1700000000, 0] },
589
- { traceId: 'trace2', spanId: 'span2', name: 'hook:mcp-post-tool', startTime: [1700000000, 0] },
590
- { traceId: 'trace3', spanId: 'span3', name: 'hook:session-start', startTime: [1700000000, 0] },
591
- { traceId: 'trace4', spanId: 'span4', name: 'mcp-call', startTime: [1700000000, 0] },
602
+ { traceId: 'trace1', spanId: 'span1', name: 'hook:mcp-pre-tool', startTime: [EPOCH_SEC, NANO_ZERO] },
603
+ { traceId: 'trace2', spanId: 'span2', name: 'hook:mcp-post-tool', startTime: [EPOCH_SEC, NANO_ZERO] },
604
+ { traceId: 'trace3', spanId: 'span3', name: 'hook:session-start', startTime: [EPOCH_SEC, NANO_ZERO] },
605
+ { traceId: 'trace4', spanId: 'span4', name: 'mcp-call', startTime: [EPOCH_SEC, NANO_ZERO] },
592
606
  ];
593
607
  await writeJsonlFileAsync(path.join(tempDir, `traces-${today}.jsonl`), mockSpans);
594
608
  // spanName filters first (substring), then regex narrows down
@@ -596,16 +610,16 @@ describe('LocalJsonlBackend', () => {
596
610
  spanName: 'hook',
597
611
  spanNameRegex: 'mcp',
598
612
  });
599
- assert.strictEqual(results.length, 2);
613
+ assert.strictEqual(results.length, COUNT_TWO);
600
614
  assert.ok(results.some(s => s.name === 'hook:mcp-pre-tool'));
601
615
  assert.ok(results.some(s => s.name === 'hook:mcp-post-tool'));
602
616
  });
603
617
  it('should combine spanNameRegex with excludeSpanName', async () => {
604
618
  const today = getTestDate();
605
619
  const mockSpans = [
606
- { traceId: 'trace1', spanId: 'span1', name: 'hook:mcp-pre-tool', startTime: [1700000000, 0] },
607
- { traceId: 'trace2', spanId: 'span2', name: 'hook:mcp-post-tool', startTime: [1700000000, 0] },
608
- { traceId: 'trace3', spanId: 'span3', name: 'hook:session-start', startTime: [1700000000, 0] },
620
+ { traceId: 'trace1', spanId: 'span1', name: 'hook:mcp-pre-tool', startTime: [EPOCH_SEC, NANO_ZERO] },
621
+ { traceId: 'trace2', spanId: 'span2', name: 'hook:mcp-post-tool', startTime: [EPOCH_SEC, NANO_ZERO] },
622
+ { traceId: 'trace3', spanId: 'span3', name: 'hook:session-start', startTime: [EPOCH_SEC, NANO_ZERO] },
609
623
  ];
610
624
  await writeJsonlFileAsync(path.join(tempDir, `traces-${today}.jsonl`), mockSpans);
611
625
  // Regex matches all hook:mcp-*, exclude post-tool
@@ -623,21 +637,21 @@ describe('LocalJsonlBackend', () => {
623
637
  traceId: 'trace1',
624
638
  spanId: 'span1',
625
639
  name: 'op1',
626
- startTime: [1700000000, 0],
640
+ startTime: [EPOCH_SEC, NANO_ZERO],
627
641
  attributes: { 'http.method': 'GET', 'http.status_code': 200 },
628
642
  },
629
643
  {
630
644
  traceId: 'trace2',
631
645
  spanId: 'span2',
632
646
  name: 'op2',
633
- startTime: [1700000000, 0],
647
+ startTime: [EPOCH_SEC, NANO_ZERO],
634
648
  attributes: { 'http.method': 'POST' }, // missing http.status_code
635
649
  },
636
650
  {
637
651
  traceId: 'trace3',
638
652
  spanId: 'span3',
639
653
  name: 'op3',
640
- startTime: [1700000000, 0],
654
+ startTime: [EPOCH_SEC, NANO_ZERO],
641
655
  attributes: { 'db.system': 'postgres' }, // missing both
642
656
  },
643
657
  ];
@@ -655,21 +669,21 @@ describe('LocalJsonlBackend', () => {
655
669
  traceId: 'trace1',
656
670
  spanId: 'span1',
657
671
  name: 'op1',
658
- startTime: [1700000000, 0],
672
+ startTime: [EPOCH_SEC, NANO_ZERO],
659
673
  attributes: { 'http.method': 'GET', 'error.message': 'timeout' },
660
674
  },
661
675
  {
662
676
  traceId: 'trace2',
663
677
  spanId: 'span2',
664
678
  name: 'op2',
665
- startTime: [1700000000, 0],
679
+ startTime: [EPOCH_SEC, NANO_ZERO],
666
680
  attributes: { 'http.method': 'POST' }, // no error attributes
667
681
  },
668
682
  {
669
683
  traceId: 'trace3',
670
684
  spanId: 'span3',
671
685
  name: 'op3',
672
- startTime: [1700000000, 0],
686
+ startTime: [EPOCH_SEC, NANO_ZERO],
673
687
  attributes: { 'http.method': 'GET', 'error.type': 'network' },
674
688
  },
675
689
  ];
@@ -683,9 +697,9 @@ describe('LocalJsonlBackend', () => {
683
697
  it('should combine spanName with excludeSpanName', async () => {
684
698
  const today = getTestDate();
685
699
  const mockSpans = [
686
- { traceId: 'trace1', spanId: 'span1', name: 'http-request-external', startTime: [1700000000, 0] },
687
- { traceId: 'trace2', spanId: 'span2', name: 'http-request-internal', startTime: [1700000000, 0] },
688
- { traceId: 'trace3', spanId: 'span3', name: 'db-query', startTime: [1700000000, 0] },
700
+ { traceId: 'trace1', spanId: 'span1', name: 'http-request-external', startTime: [EPOCH_SEC, NANO_ZERO] },
701
+ { traceId: 'trace2', spanId: 'span2', name: 'http-request-internal', startTime: [EPOCH_SEC, NANO_ZERO] },
702
+ { traceId: 'trace3', spanId: 'span3', name: 'db-query', startTime: [EPOCH_SEC, NANO_ZERO] },
689
703
  ];
690
704
  await writeJsonlFileAsync(path.join(tempDir, `traces-${today}.jsonl`), mockSpans);
691
705
  const results = await backend.queryTraces({
@@ -702,21 +716,21 @@ describe('LocalJsonlBackend', () => {
702
716
  traceId: 'trace1',
703
717
  spanId: 'span1',
704
718
  name: 'op1',
705
- startTime: [1700000000, 0],
719
+ startTime: [EPOCH_SEC, NANO_ZERO],
706
720
  attributes: { 'http.method': 'GET', 'http.status_code': 200 },
707
721
  },
708
722
  {
709
723
  traceId: 'trace2',
710
724
  spanId: 'span2',
711
725
  name: 'op2',
712
- startTime: [1700000000, 0],
726
+ startTime: [EPOCH_SEC, NANO_ZERO],
713
727
  attributes: { 'http.method': 'POST', 'http.status_code': 500 },
714
728
  },
715
729
  {
716
730
  traceId: 'trace3',
717
731
  spanId: 'span3',
718
732
  name: 'op3',
719
- startTime: [1700000000, 0],
733
+ startTime: [EPOCH_SEC, NANO_ZERO],
720
734
  attributes: { 'http.method': 'GET' }, // missing status_code
721
735
  },
722
736
  ];
@@ -735,21 +749,21 @@ describe('LocalJsonlBackend', () => {
735
749
  traceId: 'trace1',
736
750
  spanId: 'span1',
737
751
  name: 'http-request',
738
- startTime: [1700000000, 0],
752
+ startTime: [EPOCH_SEC, NANO_ZERO],
739
753
  attributes: { 'http.status_code': 200 },
740
754
  },
741
755
  {
742
756
  traceId: 'trace2',
743
757
  spanId: 'span2',
744
758
  name: 'http-request',
745
- startTime: [1700000000, 0],
759
+ startTime: [EPOCH_SEC, NANO_ZERO],
746
760
  attributes: { 'http.status_code': 500 },
747
761
  },
748
762
  {
749
763
  traceId: 'trace3',
750
764
  spanId: 'span3',
751
765
  name: 'http-request',
752
- startTime: [1700000000, 0],
766
+ startTime: [EPOCH_SEC, NANO_ZERO],
753
767
  attributes: { 'http.status_code': 300 },
754
768
  },
755
769
  ];
@@ -757,7 +771,7 @@ describe('LocalJsonlBackend', () => {
757
771
  const results = await backend.queryTraces({
758
772
  numericFilter: [{ attribute: 'http.status_code', operator: 'gt', value: 299 }],
759
773
  });
760
- assert.strictEqual(results.length, 2);
774
+ assert.strictEqual(results.length, COUNT_TWO);
761
775
  assert.ok(results.some(s => s.traceId === 'trace2'));
762
776
  assert.ok(results.some(s => s.traceId === 'trace3'));
763
777
  });
@@ -768,14 +782,14 @@ describe('LocalJsonlBackend', () => {
768
782
  traceId: 'trace1',
769
783
  spanId: 'span1',
770
784
  name: 'http-request',
771
- startTime: [1700000000, 0],
785
+ startTime: [EPOCH_SEC, NANO_ZERO],
772
786
  attributes: { 'http.status_code': 200 },
773
787
  },
774
788
  {
775
789
  traceId: 'trace2',
776
790
  spanId: 'span2',
777
791
  name: 'http-request',
778
- startTime: [1700000000, 0],
792
+ startTime: [EPOCH_SEC, NANO_ZERO],
779
793
  attributes: { 'http.status_code': 300 },
780
794
  },
781
795
  ];
@@ -793,14 +807,14 @@ describe('LocalJsonlBackend', () => {
793
807
  traceId: 'trace1',
794
808
  spanId: 'span1',
795
809
  name: 'http-request',
796
- startTime: [1700000000, 0],
810
+ startTime: [EPOCH_SEC, NANO_ZERO],
797
811
  attributes: { 'http.status_code': 200 },
798
812
  },
799
813
  {
800
814
  traceId: 'trace2',
801
815
  spanId: 'span2',
802
816
  name: 'http-request',
803
- startTime: [1700000000, 0],
817
+ startTime: [EPOCH_SEC, NANO_ZERO],
804
818
  attributes: { 'http.status_code': 500 },
805
819
  },
806
820
  ];
@@ -818,14 +832,14 @@ describe('LocalJsonlBackend', () => {
818
832
  traceId: 'trace1',
819
833
  spanId: 'span1',
820
834
  name: 'http-request',
821
- startTime: [1700000000, 0],
835
+ startTime: [EPOCH_SEC, NANO_ZERO],
822
836
  attributes: { 'http.status_code': 200 },
823
837
  },
824
838
  {
825
839
  traceId: 'trace2',
826
840
  spanId: 'span2',
827
841
  name: 'http-request',
828
- startTime: [1700000000, 0],
842
+ startTime: [EPOCH_SEC, NANO_ZERO],
829
843
  attributes: { 'http.status_code': 300 },
830
844
  },
831
845
  ];
@@ -843,14 +857,14 @@ describe('LocalJsonlBackend', () => {
843
857
  traceId: 'trace1',
844
858
  spanId: 'span1',
845
859
  name: 'http-request',
846
- startTime: [1700000000, 0],
860
+ startTime: [EPOCH_SEC, NANO_ZERO],
847
861
  attributes: { 'http.status_code': 200 },
848
862
  },
849
863
  {
850
864
  traceId: 'trace2',
851
865
  spanId: 'span2',
852
866
  name: 'http-request',
853
- startTime: [1700000000, 0],
867
+ startTime: [EPOCH_SEC, NANO_ZERO],
854
868
  attributes: { 'http.status_code': 500 },
855
869
  },
856
870
  ];
@@ -868,21 +882,21 @@ describe('LocalJsonlBackend', () => {
868
882
  traceId: 'trace1',
869
883
  spanId: 'span1',
870
884
  name: 'http-request',
871
- startTime: [1700000000, 0],
885
+ startTime: [EPOCH_SEC, NANO_ZERO],
872
886
  attributes: { 'http.status_code': 200, 'http.response_size': 1000 },
873
887
  },
874
888
  {
875
889
  traceId: 'trace2',
876
890
  spanId: 'span2',
877
891
  name: 'http-request',
878
- startTime: [1700000000, 0],
892
+ startTime: [EPOCH_SEC, NANO_ZERO],
879
893
  attributes: { 'http.status_code': 200, 'http.response_size': 5000 },
880
894
  },
881
895
  {
882
896
  traceId: 'trace3',
883
897
  spanId: 'span3',
884
898
  name: 'http-request',
885
- startTime: [1700000000, 0],
899
+ startTime: [EPOCH_SEC, NANO_ZERO],
886
900
  attributes: { 'http.status_code': 500, 'http.response_size': 100 },
887
901
  },
888
902
  ];
@@ -903,14 +917,14 @@ describe('LocalJsonlBackend', () => {
903
917
  traceId: 'trace1',
904
918
  spanId: 'span1',
905
919
  name: 'http-request',
906
- startTime: [1700000000, 0],
920
+ startTime: [EPOCH_SEC, NANO_ZERO],
907
921
  attributes: { 'http.status_code': 200 },
908
922
  },
909
923
  {
910
924
  traceId: 'trace2',
911
925
  spanId: 'span2',
912
926
  name: 'http-request',
913
- startTime: [1700000000, 0],
927
+ startTime: [EPOCH_SEC, NANO_ZERO],
914
928
  attributes: { 'other.attr': 'value' }, // missing http.status_code
915
929
  },
916
930
  ];
@@ -928,14 +942,14 @@ describe('LocalJsonlBackend', () => {
928
942
  traceId: 'trace1',
929
943
  spanId: 'span1',
930
944
  name: 'http-request',
931
- startTime: [1700000000, 0],
945
+ startTime: [EPOCH_SEC, NANO_ZERO],
932
946
  attributes: { 'http.status_code': 200 },
933
947
  },
934
948
  {
935
949
  traceId: 'trace2',
936
950
  spanId: 'span2',
937
951
  name: 'http-request',
938
- startTime: [1700000000, 0],
952
+ startTime: [EPOCH_SEC, NANO_ZERO],
939
953
  attributes: { 'http.status_code': '200' }, // string, not number
940
954
  },
941
955
  ];
@@ -953,21 +967,21 @@ describe('LocalJsonlBackend', () => {
953
967
  traceId: 'trace1',
954
968
  spanId: 'span1',
955
969
  name: 'http-request',
956
- startTime: [1700000000, 0],
970
+ startTime: [EPOCH_SEC, NANO_ZERO],
957
971
  attributes: { 'http.status_code': 500, 'http.method': 'GET' },
958
972
  },
959
973
  {
960
974
  traceId: 'trace2',
961
975
  spanId: 'span2',
962
976
  name: 'http-request',
963
- startTime: [1700000000, 0],
977
+ startTime: [EPOCH_SEC, NANO_ZERO],
964
978
  attributes: { 'http.status_code': 500, 'http.method': 'POST' },
965
979
  },
966
980
  {
967
981
  traceId: 'trace3',
968
982
  spanId: 'span3',
969
983
  name: 'http-request',
970
- startTime: [1700000000, 0],
984
+ startTime: [EPOCH_SEC, NANO_ZERO],
971
985
  attributes: { 'http.status_code': 200, 'http.method': 'GET' },
972
986
  },
973
987
  ];
@@ -984,13 +998,13 @@ describe('LocalJsonlBackend', () => {
984
998
  // Timing warnings are logged for queries > 500ms
985
999
  const today = getTestDate();
986
1000
  const mockSpans = [
987
- { traceId: 'trace1', spanId: 'span1', name: 'op1', startTime: [1700000000, 0] },
988
- { traceId: 'trace2', spanId: 'span2', name: 'op2', startTime: [1700000001, 0] },
1001
+ { traceId: 'trace1', spanId: 'span1', name: 'op1', startTime: [EPOCH_SEC, NANO_ZERO] },
1002
+ { traceId: 'trace2', spanId: 'span2', name: 'op2', startTime: [EPOCH_SEC_PLUS_ONE, NANO_ZERO] },
989
1003
  ];
990
1004
  await writeJsonlFileAsync(path.join(tempDir, `traces-${today}.jsonl`), mockSpans);
991
1005
  // Query should complete successfully with timing active
992
1006
  const results = await backend.queryTraces({});
993
- assert.strictEqual(results.length, 2);
1007
+ assert.strictEqual(results.length, COUNT_TWO);
994
1008
  });
995
1009
  });
996
1010
  describe('queryLLMEvents', () => {
@@ -1016,7 +1030,7 @@ describe('LocalJsonlBackend', () => {
1016
1030
  assert.strictEqual(results[0].name, 'llm.completion');
1017
1031
  assert.strictEqual(results[0].attributes['gen_ai.request.model'], 'claude-3-opus');
1018
1032
  assert.strictEqual(results[0].attributes['gen_ai.system'], 'anthropic');
1019
- assert.strictEqual(results[0].attributes['gen_ai.usage.input_tokens'], 100);
1033
+ assert.strictEqual(results[0].attributes['gen_ai.usage.input_tokens'], COUNT_HUNDRED);
1020
1034
  });
1021
1035
  it('should filter events by eventName substring', async () => {
1022
1036
  const today = getTestDate();
@@ -1027,7 +1041,7 @@ describe('LocalJsonlBackend', () => {
1027
1041
  ];
1028
1042
  await writeJsonlFileAsync(path.join(tempDir, `llm-events-${today}.jsonl`), mockEvents);
1029
1043
  const results = await backend.queryLLMEvents({ eventName: 'llm' });
1030
- assert.strictEqual(results.length, 2);
1044
+ assert.strictEqual(results.length, COUNT_TWO);
1031
1045
  assert.ok(results.every(e => e.name.includes('llm')));
1032
1046
  });
1033
1047
  it('should filter events by model', async () => {
@@ -1051,7 +1065,7 @@ describe('LocalJsonlBackend', () => {
1051
1065
  ];
1052
1066
  await writeJsonlFileAsync(path.join(tempDir, `llm-events-${today}.jsonl`), mockEvents);
1053
1067
  const results = await backend.queryLLMEvents({ model: 'claude-3-opus' });
1054
- assert.strictEqual(results.length, 2);
1068
+ assert.strictEqual(results.length, COUNT_TWO);
1055
1069
  });
1056
1070
  it('should filter events by provider', async () => {
1057
1071
  const today = getTestDate();
@@ -1074,7 +1088,7 @@ describe('LocalJsonlBackend', () => {
1074
1088
  ];
1075
1089
  await writeJsonlFileAsync(path.join(tempDir, `llm-events-${today}.jsonl`), mockEvents);
1076
1090
  const results = await backend.queryLLMEvents({ provider: 'anthropic' });
1077
- assert.strictEqual(results.length, 2);
1091
+ assert.strictEqual(results.length, COUNT_TWO);
1078
1092
  });
1079
1093
  it('should filter events by search text in attributes', async () => {
1080
1094
  const today = getTestDate();
@@ -1108,14 +1122,14 @@ describe('LocalJsonlBackend', () => {
1108
1122
  });
1109
1123
  it('should apply limit and offset to LLM event results', async () => {
1110
1124
  const today = getTestDate();
1111
- const mockEvents = Array.from({ length: 100 }, (_, i) => ({
1112
- timestamp: new Date(Date.now() + i * 1000).toISOString(),
1125
+ const mockEvents = Array.from({ length: COUNT_HUNDRED }, (_, i) => ({
1126
+ timestamp: new Date(Date.now() + i * TIME_MS.SECOND).toISOString(),
1113
1127
  name: `event-${i}`,
1114
1128
  attributes: { index: i },
1115
1129
  }));
1116
1130
  await writeJsonlFileAsync(path.join(tempDir, `llm-events-${today}.jsonl`), mockEvents);
1117
- const results = await backend.queryLLMEvents({ limit: 20, offset: 50 });
1118
- assert.strictEqual(results.length, 20);
1131
+ const results = await backend.queryLLMEvents({ limit: COUNT_TWENTY, offset: COUNT_FIFTY });
1132
+ assert.strictEqual(results.length, COUNT_TWENTY);
1119
1133
  assert.strictEqual(results[0].name, 'event-50');
1120
1134
  });
1121
1135
  it('should filter events by date range', async () => {
@@ -1206,7 +1220,7 @@ describe('LocalJsonlBackend', () => {
1206
1220
  ];
1207
1221
  await writeJsonlFileAsync(path.join(tempDir, `llm-events-${today}.jsonl`), mockEvents);
1208
1222
  const results = await backend.queryLLMEvents({ provider: 'anthropic-new' });
1209
- assert.strictEqual(results.length, 3);
1223
+ assert.strictEqual(results.length, COUNT_THREE);
1210
1224
  });
1211
1225
  it('should filter OpenAI events by provider', async () => {
1212
1226
  const today = getTestDate();
@@ -1516,7 +1530,7 @@ describe('LocalJsonlBackend', () => {
1516
1530
  ];
1517
1531
  await writeJsonlFileAsync(path.join(tempDir, `llm-events-${today}.jsonl`), mockEvents);
1518
1532
  const results = await backend.queryLLMEvents({ conversationId: 'conv-abc123' });
1519
- assert.strictEqual(results.length, 2);
1533
+ assert.strictEqual(results.length, COUNT_TWO);
1520
1534
  });
1521
1535
  it('should combine OTel GenAI filters with other filters', async () => {
1522
1536
  const today = getTestDate();
@@ -1558,14 +1572,14 @@ describe('LocalJsonlBackend', () => {
1558
1572
  traceId: 'trace1',
1559
1573
  spanId: 'span1',
1560
1574
  name: 'agent.invoke',
1561
- startTime: [1700000000, 0],
1575
+ startTime: [EPOCH_SEC, NANO_ZERO],
1562
1576
  attributes: { 'gen_ai.agent.id': 'agent-001' },
1563
1577
  },
1564
1578
  {
1565
1579
  traceId: 'trace1',
1566
1580
  spanId: 'span2',
1567
1581
  name: 'agent.invoke',
1568
- startTime: [1700000001, 0],
1582
+ startTime: [EPOCH_SEC_PLUS_ONE, NANO_ZERO],
1569
1583
  attributes: { 'gen_ai.agent.id': 'agent-002' },
1570
1584
  },
1571
1585
  ];
@@ -1581,14 +1595,14 @@ describe('LocalJsonlBackend', () => {
1581
1595
  traceId: 'trace1',
1582
1596
  spanId: 'span1',
1583
1597
  name: 'agent.invoke',
1584
- startTime: [1700000000, 0],
1598
+ startTime: [EPOCH_SEC, NANO_ZERO],
1585
1599
  attributes: { 'gen_ai.agent.name': 'Explore' },
1586
1600
  },
1587
1601
  {
1588
1602
  traceId: 'trace1',
1589
1603
  spanId: 'span2',
1590
1604
  name: 'agent.invoke',
1591
- startTime: [1700000001, 0],
1605
+ startTime: [EPOCH_SEC_PLUS_ONE, NANO_ZERO],
1592
1606
  attributes: { 'gen_ai.agent.name': 'Plan' },
1593
1607
  },
1594
1608
  ];
@@ -1604,14 +1618,14 @@ describe('LocalJsonlBackend', () => {
1604
1618
  traceId: 'trace1',
1605
1619
  spanId: 'span1',
1606
1620
  name: 'tool.execute',
1607
- startTime: [1700000000, 0],
1621
+ startTime: [EPOCH_SEC, NANO_ZERO],
1608
1622
  attributes: { 'gen_ai.tool.name': 'Read' },
1609
1623
  },
1610
1624
  {
1611
1625
  traceId: 'trace1',
1612
1626
  spanId: 'span2',
1613
1627
  name: 'tool.execute',
1614
- startTime: [1700000001, 0],
1628
+ startTime: [EPOCH_SEC_PLUS_ONE, NANO_ZERO],
1615
1629
  attributes: { 'gen_ai.tool.name': 'Write' },
1616
1630
  },
1617
1631
  ];
@@ -1627,14 +1641,14 @@ describe('LocalJsonlBackend', () => {
1627
1641
  traceId: 'trace1',
1628
1642
  spanId: 'span1',
1629
1643
  name: 'tool.execute',
1630
- startTime: [1700000000, 0],
1644
+ startTime: [EPOCH_SEC, NANO_ZERO],
1631
1645
  attributes: { 'gen_ai.tool.call.id': 'toolu_abc123' },
1632
1646
  },
1633
1647
  {
1634
1648
  traceId: 'trace1',
1635
1649
  spanId: 'span2',
1636
1650
  name: 'tool.execute',
1637
- startTime: [1700000001, 0],
1651
+ startTime: [EPOCH_SEC_PLUS_ONE, NANO_ZERO],
1638
1652
  attributes: { 'gen_ai.tool.call.id': 'toolu_xyz789' },
1639
1653
  },
1640
1654
  ];
@@ -1650,14 +1664,14 @@ describe('LocalJsonlBackend', () => {
1650
1664
  traceId: 'trace1',
1651
1665
  spanId: 'span1',
1652
1666
  name: 'tool.execute',
1653
- startTime: [1700000000, 0],
1667
+ startTime: [EPOCH_SEC, NANO_ZERO],
1654
1668
  attributes: { 'gen_ai.tool.type': 'function' },
1655
1669
  },
1656
1670
  {
1657
1671
  traceId: 'trace1',
1658
1672
  spanId: 'span2',
1659
1673
  name: 'tool.execute',
1660
- startTime: [1700000001, 0],
1674
+ startTime: [EPOCH_SEC_PLUS_ONE, NANO_ZERO],
1661
1675
  attributes: { 'gen_ai.tool.type': 'mcp' },
1662
1676
  },
1663
1677
  ];
@@ -1673,14 +1687,14 @@ describe('LocalJsonlBackend', () => {
1673
1687
  traceId: 'trace1',
1674
1688
  spanId: 'span1',
1675
1689
  name: 'llm.call',
1676
- startTime: [1700000000, 0],
1690
+ startTime: [EPOCH_SEC, NANO_ZERO],
1677
1691
  attributes: { 'gen_ai.operation.name': 'chat' },
1678
1692
  },
1679
1693
  {
1680
1694
  traceId: 'trace1',
1681
1695
  spanId: 'span2',
1682
1696
  name: 'tool.execute',
1683
- startTime: [1700000001, 0],
1697
+ startTime: [EPOCH_SEC_PLUS_ONE, NANO_ZERO],
1684
1698
  attributes: { 'gen_ai.operation.name': 'execute_tool' },
1685
1699
  },
1686
1700
  ];
@@ -1696,8 +1710,8 @@ describe('LocalJsonlBackend', () => {
1696
1710
  traceId: 'trace1',
1697
1711
  spanId: 'span1',
1698
1712
  name: 'agent.explore',
1699
- startTime: [1700000000, 0],
1700
- duration: [0, 100000000], // 100ms
1713
+ startTime: [EPOCH_SEC, NANO_ZERO],
1714
+ duration: [0, TRACE_DURATION_NS_100_MS], // 100ms
1701
1715
  attributes: {
1702
1716
  'gen_ai.agent.name': 'Explore',
1703
1717
  'gen_ai.tool.name': 'Grep',
@@ -1707,8 +1721,8 @@ describe('LocalJsonlBackend', () => {
1707
1721
  traceId: 'trace1',
1708
1722
  spanId: 'span2',
1709
1723
  name: 'agent.explore',
1710
- startTime: [1700000001, 0],
1711
- duration: [0, 200000000], // 200ms
1724
+ startTime: [EPOCH_SEC_PLUS_ONE, NANO_ZERO],
1725
+ duration: [0, TRACE_DURATION_NS_200_MS], // 200ms
1712
1726
  attributes: {
1713
1727
  'gen_ai.agent.name': 'Explore',
1714
1728
  'gen_ai.tool.name': 'Read',