observability-toolkit 1.8.4 → 2.0.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 (364) hide show
  1. package/README.md +126 -5
  2. package/dist/backends/index.d.ts +163 -0
  3. package/dist/backends/index.d.ts.map +1 -1
  4. package/dist/backends/index.js +57 -0
  5. package/dist/backends/index.js.map +1 -1
  6. package/dist/backends/index.test.js +55 -1
  7. package/dist/backends/index.test.js.map +1 -1
  8. package/dist/backends/local-jsonl-boolean-search.test.js +8 -8
  9. package/dist/backends/local-jsonl-boolean-search.test.js.map +1 -1
  10. package/dist/backends/local-jsonl-cache.test.d.ts +2 -0
  11. package/dist/backends/local-jsonl-cache.test.d.ts.map +1 -0
  12. package/dist/backends/local-jsonl-cache.test.js +295 -0
  13. package/dist/backends/local-jsonl-cache.test.js.map +1 -0
  14. package/dist/backends/local-jsonl-circuit-breaker.test.d.ts +2 -0
  15. package/dist/backends/local-jsonl-circuit-breaker.test.d.ts.map +1 -0
  16. package/dist/backends/local-jsonl-circuit-breaker.test.js +180 -0
  17. package/dist/backends/local-jsonl-circuit-breaker.test.js.map +1 -0
  18. package/dist/backends/local-jsonl-export.test.d.ts +2 -0
  19. package/dist/backends/local-jsonl-export.test.d.ts.map +1 -0
  20. package/dist/backends/local-jsonl-export.test.js +704 -0
  21. package/dist/backends/local-jsonl-export.test.js.map +1 -0
  22. package/dist/backends/local-jsonl-index.test.d.ts +2 -0
  23. package/dist/backends/local-jsonl-index.test.d.ts.map +1 -0
  24. package/dist/backends/local-jsonl-index.test.js +554 -0
  25. package/dist/backends/local-jsonl-index.test.js.map +1 -0
  26. package/dist/backends/local-jsonl-logs.test.js +52 -43
  27. package/dist/backends/local-jsonl-logs.test.js.map +1 -1
  28. package/dist/backends/local-jsonl-metrics.test.d.ts +2 -0
  29. package/dist/backends/local-jsonl-metrics.test.d.ts.map +1 -0
  30. package/dist/backends/local-jsonl-metrics.test.js +876 -0
  31. package/dist/backends/local-jsonl-metrics.test.js.map +1 -0
  32. package/dist/backends/local-jsonl-traces.test.js +89 -83
  33. package/dist/backends/local-jsonl-traces.test.js.map +1 -1
  34. package/dist/backends/local-jsonl.d.ts +39 -0
  35. package/dist/backends/local-jsonl.d.ts.map +1 -1
  36. package/dist/backends/local-jsonl.js +975 -492
  37. package/dist/backends/local-jsonl.js.map +1 -1
  38. package/dist/backends/signoz-api-circuit-breaker.test.d.ts +6 -0
  39. package/dist/backends/signoz-api-circuit-breaker.test.d.ts.map +1 -0
  40. package/dist/backends/signoz-api-circuit-breaker.test.js +548 -0
  41. package/dist/backends/signoz-api-circuit-breaker.test.js.map +1 -0
  42. package/dist/backends/signoz-api-rate-limiter.test.d.ts +6 -0
  43. package/dist/backends/signoz-api-rate-limiter.test.d.ts.map +1 -0
  44. package/dist/backends/signoz-api-rate-limiter.test.js +390 -0
  45. package/dist/backends/signoz-api-rate-limiter.test.js.map +1 -0
  46. package/dist/backends/signoz-api-ssrf.test.d.ts +6 -0
  47. package/dist/backends/signoz-api-ssrf.test.d.ts.map +1 -0
  48. package/dist/backends/signoz-api-ssrf.test.js +216 -0
  49. package/dist/backends/signoz-api-ssrf.test.js.map +1 -0
  50. package/dist/backends/signoz-api-test-helpers.d.ts +80 -0
  51. package/dist/backends/signoz-api-test-helpers.d.ts.map +1 -0
  52. package/dist/backends/signoz-api-test-helpers.js +79 -0
  53. package/dist/backends/signoz-api-test-helpers.js.map +1 -0
  54. package/dist/backends/signoz-api.d.ts +31 -1
  55. package/dist/backends/signoz-api.d.ts.map +1 -1
  56. package/dist/backends/signoz-api.js +717 -539
  57. package/dist/backends/signoz-api.js.map +1 -1
  58. package/dist/backends/signoz-api.test.d.ts +9 -0
  59. package/dist/backends/signoz-api.test.d.ts.map +1 -1
  60. package/dist/backends/signoz-api.test.js +20 -1032
  61. package/dist/backends/signoz-api.test.js.map +1 -1
  62. package/dist/lib/agent-as-judge.d.ts +388 -0
  63. package/dist/lib/agent-as-judge.d.ts.map +1 -0
  64. package/dist/lib/agent-as-judge.js +740 -0
  65. package/dist/lib/agent-as-judge.js.map +1 -0
  66. package/dist/lib/agent-as-judge.test.d.ts +5 -0
  67. package/dist/lib/agent-as-judge.test.d.ts.map +1 -0
  68. package/dist/lib/agent-as-judge.test.js +816 -0
  69. package/dist/lib/agent-as-judge.test.js.map +1 -0
  70. package/dist/lib/cache.d.ts +61 -2
  71. package/dist/lib/cache.d.ts.map +1 -1
  72. package/dist/lib/cache.js +54 -3
  73. package/dist/lib/cache.js.map +1 -1
  74. package/dist/lib/circuit-breaker.d.ts +101 -0
  75. package/dist/lib/circuit-breaker.d.ts.map +1 -0
  76. package/dist/lib/circuit-breaker.js +158 -0
  77. package/dist/lib/circuit-breaker.js.map +1 -0
  78. package/dist/lib/circuit-breaker.test.d.ts +2 -0
  79. package/dist/lib/circuit-breaker.test.d.ts.map +1 -0
  80. package/dist/lib/circuit-breaker.test.js +263 -0
  81. package/dist/lib/circuit-breaker.test.js.map +1 -0
  82. package/dist/lib/confident-export.d.ts +101 -0
  83. package/dist/lib/confident-export.d.ts.map +1 -0
  84. package/dist/lib/confident-export.js +393 -0
  85. package/dist/lib/confident-export.js.map +1 -0
  86. package/dist/lib/confident-export.test.d.ts +7 -0
  87. package/dist/lib/confident-export.test.d.ts.map +1 -0
  88. package/dist/lib/confident-export.test.js +835 -0
  89. package/dist/lib/confident-export.test.js.map +1 -0
  90. package/dist/lib/constants-symlink.test.d.ts +12 -0
  91. package/dist/lib/constants-symlink.test.d.ts.map +1 -0
  92. package/dist/lib/constants-symlink.test.js +357 -0
  93. package/dist/lib/constants-symlink.test.js.map +1 -0
  94. package/dist/lib/constants.d.ts +75 -0
  95. package/dist/lib/constants.d.ts.map +1 -1
  96. package/dist/lib/constants.js +104 -1
  97. package/dist/lib/constants.js.map +1 -1
  98. package/dist/lib/datadog-export.d.ts +156 -0
  99. package/dist/lib/datadog-export.d.ts.map +1 -0
  100. package/dist/lib/datadog-export.js +464 -0
  101. package/dist/lib/datadog-export.js.map +1 -0
  102. package/dist/lib/datadog-export.test.d.ts +14 -0
  103. package/dist/lib/datadog-export.test.d.ts.map +1 -0
  104. package/dist/lib/datadog-export.test.js +890 -0
  105. package/dist/lib/datadog-export.test.js.map +1 -0
  106. package/dist/lib/edge-cases.test.js +17 -17
  107. package/dist/lib/edge-cases.test.js.map +1 -1
  108. package/dist/lib/error-sanitizer.d.ts.map +1 -1
  109. package/dist/lib/error-sanitizer.js +29 -3
  110. package/dist/lib/error-sanitizer.js.map +1 -1
  111. package/dist/lib/error-sanitizer.test.js +159 -0
  112. package/dist/lib/error-sanitizer.test.js.map +1 -1
  113. package/dist/lib/error-types.d.ts +54 -0
  114. package/dist/lib/error-types.d.ts.map +1 -0
  115. package/dist/lib/error-types.js +154 -0
  116. package/dist/lib/error-types.js.map +1 -0
  117. package/dist/lib/error-types.test.d.ts +2 -0
  118. package/dist/lib/error-types.test.d.ts.map +1 -0
  119. package/dist/lib/error-types.test.js +196 -0
  120. package/dist/lib/error-types.test.js.map +1 -0
  121. package/dist/lib/evaluation-hooks.d.ts +49 -0
  122. package/dist/lib/evaluation-hooks.d.ts.map +1 -0
  123. package/dist/lib/evaluation-hooks.js +488 -0
  124. package/dist/lib/evaluation-hooks.js.map +1 -0
  125. package/dist/lib/evaluation-hooks.test.d.ts +8 -0
  126. package/dist/lib/evaluation-hooks.test.d.ts.map +1 -0
  127. package/dist/lib/evaluation-hooks.test.js +624 -0
  128. package/dist/lib/evaluation-hooks.test.js.map +1 -0
  129. package/dist/lib/export-utils.d.ts +99 -0
  130. package/dist/lib/export-utils.d.ts.map +1 -0
  131. package/dist/lib/export-utils.js +238 -0
  132. package/dist/lib/export-utils.js.map +1 -0
  133. package/dist/lib/export-utils.test.d.ts +5 -0
  134. package/dist/lib/export-utils.test.d.ts.map +1 -0
  135. package/dist/lib/export-utils.test.js +193 -0
  136. package/dist/lib/export-utils.test.js.map +1 -0
  137. package/dist/lib/file-utils.d.ts +17 -2
  138. package/dist/lib/file-utils.d.ts.map +1 -1
  139. package/dist/lib/file-utils.js +24 -5
  140. package/dist/lib/file-utils.js.map +1 -1
  141. package/dist/lib/file-utils.test.js +30 -0
  142. package/dist/lib/file-utils.test.js.map +1 -1
  143. package/dist/lib/histogram.d.ts +119 -0
  144. package/dist/lib/histogram.d.ts.map +1 -0
  145. package/dist/lib/histogram.js +202 -0
  146. package/dist/lib/histogram.js.map +1 -0
  147. package/dist/lib/histogram.test.d.ts +5 -0
  148. package/dist/lib/histogram.test.d.ts.map +1 -0
  149. package/dist/lib/histogram.test.js +381 -0
  150. package/dist/lib/histogram.test.js.map +1 -0
  151. package/dist/lib/indexer.test.js +27 -27
  152. package/dist/lib/indexer.test.js.map +1 -1
  153. package/dist/lib/input-validator.d.ts +12 -0
  154. package/dist/lib/input-validator.d.ts.map +1 -1
  155. package/dist/lib/input-validator.fuzz.test.d.ts +12 -0
  156. package/dist/lib/input-validator.fuzz.test.d.ts.map +1 -0
  157. package/dist/lib/input-validator.fuzz.test.js +290 -0
  158. package/dist/lib/input-validator.fuzz.test.js.map +1 -0
  159. package/dist/lib/input-validator.js +57 -3
  160. package/dist/lib/input-validator.js.map +1 -1
  161. package/dist/lib/input-validator.test.js +129 -1
  162. package/dist/lib/input-validator.test.js.map +1 -1
  163. package/dist/lib/instrumentation.d.ts +153 -0
  164. package/dist/lib/instrumentation.d.ts.map +1 -0
  165. package/dist/lib/instrumentation.integration.test.d.ts +2 -0
  166. package/dist/lib/instrumentation.integration.test.d.ts.map +1 -0
  167. package/dist/lib/instrumentation.integration.test.js +589 -0
  168. package/dist/lib/instrumentation.integration.test.js.map +1 -0
  169. package/dist/lib/instrumentation.js +520 -0
  170. package/dist/lib/instrumentation.js.map +1 -0
  171. package/dist/lib/instrumentation.test.d.ts +2 -0
  172. package/dist/lib/instrumentation.test.d.ts.map +1 -0
  173. package/dist/lib/instrumentation.test.js +821 -0
  174. package/dist/lib/instrumentation.test.js.map +1 -0
  175. package/dist/lib/langfuse-export.d.ts +125 -0
  176. package/dist/lib/langfuse-export.d.ts.map +1 -0
  177. package/dist/lib/langfuse-export.js +367 -0
  178. package/dist/lib/langfuse-export.js.map +1 -0
  179. package/dist/lib/langfuse-export.test.d.ts +7 -0
  180. package/dist/lib/langfuse-export.test.d.ts.map +1 -0
  181. package/dist/lib/langfuse-export.test.js +1007 -0
  182. package/dist/lib/langfuse-export.test.js.map +1 -0
  183. package/dist/lib/llm-as-judge.d.ts +657 -0
  184. package/dist/lib/llm-as-judge.d.ts.map +1 -0
  185. package/dist/lib/llm-as-judge.js +1397 -0
  186. package/dist/lib/llm-as-judge.js.map +1 -0
  187. package/dist/lib/llm-as-judge.test.d.ts +2 -0
  188. package/dist/lib/llm-as-judge.test.d.ts.map +1 -0
  189. package/dist/lib/llm-as-judge.test.js +2409 -0
  190. package/dist/lib/llm-as-judge.test.js.map +1 -0
  191. package/dist/lib/logger.d.ts +46 -0
  192. package/dist/lib/logger.d.ts.map +1 -0
  193. package/dist/lib/logger.js +81 -0
  194. package/dist/lib/logger.js.map +1 -0
  195. package/dist/lib/logger.test.d.ts +2 -0
  196. package/dist/lib/logger.test.d.ts.map +1 -0
  197. package/dist/lib/logger.test.js +122 -0
  198. package/dist/lib/logger.test.js.map +1 -0
  199. package/dist/lib/metrics.d.ts +62 -0
  200. package/dist/lib/metrics.d.ts.map +1 -0
  201. package/dist/lib/metrics.js +166 -0
  202. package/dist/lib/metrics.js.map +1 -0
  203. package/dist/lib/metrics.test.d.ts +5 -0
  204. package/dist/lib/metrics.test.d.ts.map +1 -0
  205. package/dist/lib/metrics.test.js +189 -0
  206. package/dist/lib/metrics.test.js.map +1 -0
  207. package/dist/lib/parse-stats.d.ts +119 -0
  208. package/dist/lib/parse-stats.d.ts.map +1 -0
  209. package/dist/lib/parse-stats.js +206 -0
  210. package/dist/lib/parse-stats.js.map +1 -0
  211. package/dist/lib/parse-stats.test.d.ts +5 -0
  212. package/dist/lib/parse-stats.test.d.ts.map +1 -0
  213. package/dist/lib/parse-stats.test.js +283 -0
  214. package/dist/lib/parse-stats.test.js.map +1 -0
  215. package/dist/lib/phoenix-export.d.ts +109 -0
  216. package/dist/lib/phoenix-export.d.ts.map +1 -0
  217. package/dist/lib/phoenix-export.js +429 -0
  218. package/dist/lib/phoenix-export.js.map +1 -0
  219. package/dist/lib/phoenix-export.test.d.ts +11 -0
  220. package/dist/lib/phoenix-export.test.d.ts.map +1 -0
  221. package/dist/lib/phoenix-export.test.js +725 -0
  222. package/dist/lib/phoenix-export.test.js.map +1 -0
  223. package/dist/lib/server-utils.d.ts +14 -1
  224. package/dist/lib/server-utils.d.ts.map +1 -1
  225. package/dist/lib/server-utils.js +43 -3
  226. package/dist/lib/server-utils.js.map +1 -1
  227. package/dist/lib/shared-schemas.d.ts +28 -0
  228. package/dist/lib/shared-schemas.d.ts.map +1 -1
  229. package/dist/lib/shared-schemas.js +33 -4
  230. package/dist/lib/shared-schemas.js.map +1 -1
  231. package/dist/lib/toon-encoder.d.ts +7 -2
  232. package/dist/lib/toon-encoder.d.ts.map +1 -1
  233. package/dist/lib/toon-encoder.js +21 -6
  234. package/dist/lib/toon-encoder.js.map +1 -1
  235. package/dist/lib/toon-encoder.test.d.ts +5 -0
  236. package/dist/lib/toon-encoder.test.d.ts.map +1 -0
  237. package/dist/lib/toon-encoder.test.js +85 -0
  238. package/dist/lib/toon-encoder.test.js.map +1 -0
  239. package/dist/lib/verification-events.d.ts +100 -0
  240. package/dist/lib/verification-events.d.ts.map +1 -0
  241. package/dist/lib/verification-events.js +162 -0
  242. package/dist/lib/verification-events.js.map +1 -0
  243. package/dist/lib/verification-events.test.d.ts +5 -0
  244. package/dist/lib/verification-events.test.d.ts.map +1 -0
  245. package/dist/lib/verification-events.test.js +193 -0
  246. package/dist/lib/verification-events.test.js.map +1 -0
  247. package/dist/server.d.ts +5 -0
  248. package/dist/server.d.ts.map +1 -1
  249. package/dist/server.js +79 -21
  250. package/dist/server.js.map +1 -1
  251. package/dist/server.test.js +30 -0
  252. package/dist/server.test.js.map +1 -1
  253. package/dist/test-helpers/env-utils.d.ts +22 -0
  254. package/dist/test-helpers/env-utils.d.ts.map +1 -1
  255. package/dist/test-helpers/env-utils.js +38 -0
  256. package/dist/test-helpers/env-utils.js.map +1 -1
  257. package/dist/test-helpers/fuzz-generators.d.ts +58 -0
  258. package/dist/test-helpers/fuzz-generators.d.ts.map +1 -0
  259. package/dist/test-helpers/fuzz-generators.js +216 -0
  260. package/dist/test-helpers/fuzz-generators.js.map +1 -0
  261. package/dist/test-helpers/index.d.ts +1 -0
  262. package/dist/test-helpers/index.d.ts.map +1 -1
  263. package/dist/test-helpers/index.js +2 -0
  264. package/dist/test-helpers/index.js.map +1 -1
  265. package/dist/test-helpers/memfs-utils.d.ts +181 -0
  266. package/dist/test-helpers/memfs-utils.d.ts.map +1 -0
  267. package/dist/test-helpers/memfs-utils.js +292 -0
  268. package/dist/test-helpers/memfs-utils.js.map +1 -0
  269. package/dist/test-helpers/memfs-utils.test.d.ts +5 -0
  270. package/dist/test-helpers/memfs-utils.test.d.ts.map +1 -0
  271. package/dist/test-helpers/memfs-utils.test.js +338 -0
  272. package/dist/test-helpers/memfs-utils.test.js.map +1 -0
  273. package/dist/test-helpers/race-condition-helpers.d.ts +85 -0
  274. package/dist/test-helpers/race-condition-helpers.d.ts.map +1 -0
  275. package/dist/test-helpers/race-condition-helpers.js +279 -0
  276. package/dist/test-helpers/race-condition-helpers.js.map +1 -0
  277. package/dist/test-helpers/test-data-builders.d.ts +40 -3
  278. package/dist/test-helpers/test-data-builders.d.ts.map +1 -1
  279. package/dist/test-helpers/test-data-builders.js +54 -5
  280. package/dist/test-helpers/test-data-builders.js.map +1 -1
  281. package/dist/test-helpers/tool-validators.d.ts.map +1 -1
  282. package/dist/test-helpers/tool-validators.js +16 -1
  283. package/dist/test-helpers/tool-validators.js.map +1 -1
  284. package/dist/tools/context-stats.d.ts.map +1 -1
  285. package/dist/tools/context-stats.js +6 -8
  286. package/dist/tools/context-stats.js.map +1 -1
  287. package/dist/tools/export-confident.d.ts +145 -0
  288. package/dist/tools/export-confident.d.ts.map +1 -0
  289. package/dist/tools/export-confident.js +134 -0
  290. package/dist/tools/export-confident.js.map +1 -0
  291. package/dist/tools/export-confident.test.d.ts +7 -0
  292. package/dist/tools/export-confident.test.d.ts.map +1 -0
  293. package/dist/tools/export-confident.test.js +332 -0
  294. package/dist/tools/export-confident.test.js.map +1 -0
  295. package/dist/tools/export-datadog.d.ts +160 -0
  296. package/dist/tools/export-datadog.d.ts.map +1 -0
  297. package/dist/tools/export-datadog.js +160 -0
  298. package/dist/tools/export-datadog.js.map +1 -0
  299. package/dist/tools/export-datadog.test.d.ts +8 -0
  300. package/dist/tools/export-datadog.test.d.ts.map +1 -0
  301. package/dist/tools/export-datadog.test.js +419 -0
  302. package/dist/tools/export-datadog.test.js.map +1 -0
  303. package/dist/tools/export-langfuse.d.ts +137 -0
  304. package/dist/tools/export-langfuse.d.ts.map +1 -0
  305. package/dist/tools/export-langfuse.js +131 -0
  306. package/dist/tools/export-langfuse.js.map +1 -0
  307. package/dist/tools/export-langfuse.test.d.ts +7 -0
  308. package/dist/tools/export-langfuse.test.d.ts.map +1 -0
  309. package/dist/tools/export-langfuse.test.js +303 -0
  310. package/dist/tools/export-langfuse.test.js.map +1 -0
  311. package/dist/tools/export-phoenix.d.ts +145 -0
  312. package/dist/tools/export-phoenix.d.ts.map +1 -0
  313. package/dist/tools/export-phoenix.js +135 -0
  314. package/dist/tools/export-phoenix.js.map +1 -0
  315. package/dist/tools/export-phoenix.test.d.ts +7 -0
  316. package/dist/tools/export-phoenix.test.d.ts.map +1 -0
  317. package/dist/tools/export-phoenix.test.js +316 -0
  318. package/dist/tools/export-phoenix.test.js.map +1 -0
  319. package/dist/tools/health-check.d.ts +26 -0
  320. package/dist/tools/health-check.d.ts.map +1 -1
  321. package/dist/tools/health-check.js +36 -7
  322. package/dist/tools/health-check.js.map +1 -1
  323. package/dist/tools/index.d.ts +6 -0
  324. package/dist/tools/index.d.ts.map +1 -1
  325. package/dist/tools/index.js +6 -0
  326. package/dist/tools/index.js.map +1 -1
  327. package/dist/tools/inject-evaluations.d.ts +1315 -0
  328. package/dist/tools/inject-evaluations.d.ts.map +1 -0
  329. package/dist/tools/inject-evaluations.js +121 -0
  330. package/dist/tools/inject-evaluations.js.map +1 -0
  331. package/dist/tools/inject-evaluations.test.d.ts +5 -0
  332. package/dist/tools/inject-evaluations.test.d.ts.map +1 -0
  333. package/dist/tools/inject-evaluations.test.js +359 -0
  334. package/dist/tools/inject-evaluations.test.js.map +1 -0
  335. package/dist/tools/query-evaluations.d.ts +25 -4
  336. package/dist/tools/query-evaluations.d.ts.map +1 -1
  337. package/dist/tools/query-evaluations.js +26 -2
  338. package/dist/tools/query-evaluations.js.map +1 -1
  339. package/dist/tools/query-evaluations.test.js +53 -46
  340. package/dist/tools/query-evaluations.test.js.map +1 -1
  341. package/dist/tools/query-llm-events.js +2 -2
  342. package/dist/tools/query-llm-events.js.map +1 -1
  343. package/dist/tools/query-llm-events.test.js +6 -3
  344. package/dist/tools/query-llm-events.test.js.map +1 -1
  345. package/dist/tools/query-logs.d.ts +8 -8
  346. package/dist/tools/query-logs.js +3 -3
  347. package/dist/tools/query-logs.js.map +1 -1
  348. package/dist/tools/query-metrics.d.ts +4 -4
  349. package/dist/tools/query-metrics.js +2 -2
  350. package/dist/tools/query-metrics.js.map +1 -1
  351. package/dist/tools/query-traces.d.ts +8 -8
  352. package/dist/tools/query-verifications.d.ts +111 -0
  353. package/dist/tools/query-verifications.d.ts.map +1 -0
  354. package/dist/tools/query-verifications.js +101 -0
  355. package/dist/tools/query-verifications.js.map +1 -0
  356. package/dist/tools/query-verifications.test.d.ts +5 -0
  357. package/dist/tools/query-verifications.test.d.ts.map +1 -0
  358. package/dist/tools/query-verifications.test.js +156 -0
  359. package/dist/tools/query-verifications.test.js.map +1 -0
  360. package/dist/types/evaluation-hooks.d.ts +176 -0
  361. package/dist/types/evaluation-hooks.d.ts.map +1 -0
  362. package/dist/types/evaluation-hooks.js +49 -0
  363. package/dist/types/evaluation-hooks.js.map +1 -0
  364. package/package.json +11 -2
@@ -0,0 +1,488 @@
1
+ /**
2
+ * Evaluation Hooks Executor (Phase 4e)
3
+ *
4
+ * Handles external evaluator webhook payloads:
5
+ * - HMAC signature validation
6
+ * - Payload parsing and validation
7
+ * - Writing evaluations to JSONL files
8
+ */
9
+ import { createHmac, timingSafeEqual } from 'crypto';
10
+ import { appendFile, mkdir } from 'fs/promises';
11
+ import { existsSync } from 'fs';
12
+ import { join } from 'path';
13
+ import { normalizeScore } from '../types/evaluation-hooks.js';
14
+ import { GENAI_EVALUATION_ATTRIBUTES, GENAI_AGENT_ATTRIBUTES, AGENT_JUDGE_ATTRIBUTES } from '../backends/index.js';
15
+ import { getDateString } from './file-utils.js';
16
+ /** Maximum evaluations per batch request */
17
+ export const MAX_BATCH_SIZE = 100;
18
+ /** Maximum bytes per batch (1MB) to prevent memory exhaustion */
19
+ export const MAX_BATCH_BYTES = 1024 * 1024;
20
+ /** Maximum bytes per single evaluation (100KB) */
21
+ export const MAX_SINGLE_EVALUATION_BYTES = 100 * 1024;
22
+ /** Maximum text field length (10KB) */
23
+ const MAX_TEXT_LENGTH = 10240;
24
+ /** Maximum step scores per evaluation */
25
+ const MAX_STEP_SCORES = 1000;
26
+ /** Maximum tool verifications per evaluation */
27
+ const MAX_TOOL_VERIFICATIONS = 500;
28
+ /**
29
+ * Statistics tracking for hook processing
30
+ */
31
+ let hookStats = {
32
+ totalReceived: 0,
33
+ successCount: 0,
34
+ validationFailures: 0,
35
+ signatureFailures: 0,
36
+ deduplicatedCount: 0,
37
+ };
38
+ /**
39
+ * Reset hook statistics (for testing)
40
+ */
41
+ export function resetHookStats() {
42
+ hookStats = {
43
+ totalReceived: 0,
44
+ successCount: 0,
45
+ validationFailures: 0,
46
+ signatureFailures: 0,
47
+ deduplicatedCount: 0,
48
+ };
49
+ }
50
+ /**
51
+ * Get current hook statistics
52
+ */
53
+ export function getHookStats() {
54
+ return { ...hookStats };
55
+ }
56
+ /**
57
+ * Verify HMAC-SHA256 signature
58
+ *
59
+ * @param payload - Raw payload string
60
+ * @param signature - Expected signature (format: "sha256=<hex>")
61
+ * @param secret - HMAC secret
62
+ * @returns Verification result
63
+ */
64
+ export function verifyHmacSignature(payload, signature, secret) {
65
+ if (!signature) {
66
+ return { valid: false, error: 'Missing signature header' };
67
+ }
68
+ if (!signature.startsWith('sha256=')) {
69
+ return { valid: false, error: 'Invalid signature format (expected sha256=<hex>)' };
70
+ }
71
+ const expectedHex = signature.slice(7); // Remove "sha256=" prefix
72
+ // SHA-256 produces 32 bytes = 64 hex characters
73
+ if (!/^[a-f0-9]{64}$/i.test(expectedHex)) {
74
+ return {
75
+ valid: false,
76
+ error: `Invalid signature hex encoding (expected 64 hex chars, got ${expectedHex.length})`,
77
+ };
78
+ }
79
+ const computed = createHmac('sha256', secret).update(payload).digest('hex');
80
+ // Use timing-safe comparison to prevent timing attacks
81
+ const expectedBuffer = Buffer.from(expectedHex, 'hex');
82
+ const computedBuffer = Buffer.from(computed, 'hex');
83
+ if (expectedBuffer.length !== computedBuffer.length) {
84
+ hookStats.signatureFailures++;
85
+ return { valid: false, error: 'Signature length mismatch', algorithm: 'sha256' };
86
+ }
87
+ const valid = timingSafeEqual(expectedBuffer, computedBuffer);
88
+ if (!valid) {
89
+ hookStats.signatureFailures++;
90
+ return { valid: false, error: 'Signature mismatch', algorithm: 'sha256' };
91
+ }
92
+ return { valid: true, algorithm: 'sha256' };
93
+ }
94
+ /**
95
+ * Validate a single evaluation payload
96
+ */
97
+ export function validateEvaluationPayload(payload, index) {
98
+ const errors = [];
99
+ // Check total payload size to prevent memory exhaustion
100
+ try {
101
+ const payloadSize = Buffer.byteLength(JSON.stringify(payload), 'utf-8');
102
+ if (payloadSize > MAX_SINGLE_EVALUATION_BYTES) {
103
+ errors.push({
104
+ index,
105
+ field: 'payload',
106
+ message: `Evaluation payload size (${payloadSize} bytes) exceeds maximum (${MAX_SINGLE_EVALUATION_BYTES} bytes)`,
107
+ suggestion: 'Reduce metadata size or split into multiple evaluations',
108
+ });
109
+ return errors; // Early return - no point validating further
110
+ }
111
+ }
112
+ catch {
113
+ // If serialization fails, payload is invalid
114
+ errors.push({
115
+ index,
116
+ field: 'payload',
117
+ message: 'Evaluation payload cannot be serialized (circular reference or invalid data)',
118
+ });
119
+ return errors;
120
+ }
121
+ // Required: evaluationName
122
+ if (!payload.evaluationName || typeof payload.evaluationName !== 'string') {
123
+ errors.push({
124
+ index,
125
+ field: 'evaluationName',
126
+ message: 'evaluationName is required and must be a non-empty string',
127
+ suggestion: 'Provide an evaluation metric name (e.g., "relevance", "faithfulness")',
128
+ });
129
+ }
130
+ else if (payload.evaluationName.length > 256) {
131
+ errors.push({
132
+ index,
133
+ field: 'evaluationName',
134
+ message: 'evaluationName exceeds maximum length (256 characters)',
135
+ });
136
+ }
137
+ // Required: evaluator
138
+ if (!payload.evaluator || typeof payload.evaluator !== 'string') {
139
+ errors.push({
140
+ index,
141
+ field: 'evaluator',
142
+ message: 'evaluator is required and must be a non-empty string',
143
+ suggestion: 'Provide evaluator identity (e.g., "claude-3-sonnet", "human-reviewer-001")',
144
+ });
145
+ }
146
+ else if (payload.evaluator.length > 256) {
147
+ errors.push({
148
+ index,
149
+ field: 'evaluator',
150
+ message: 'evaluator exceeds maximum length (256 characters)',
151
+ });
152
+ }
153
+ // Required: evaluatorType
154
+ const validTypes = ['llm', 'human', 'rule', 'classifier'];
155
+ if (!payload.evaluatorType || !validTypes.includes(payload.evaluatorType)) {
156
+ errors.push({
157
+ index,
158
+ field: 'evaluatorType',
159
+ message: `evaluatorType must be one of: ${validTypes.join(', ')}`,
160
+ suggestion: 'Specify the type of evaluator',
161
+ });
162
+ }
163
+ // At least one of scoreValue or scoreLabel required
164
+ const hasScoreValue = payload.scoreValue !== undefined && payload.scoreValue !== null;
165
+ const hasScoreLabel = payload.scoreLabel !== undefined && payload.scoreLabel !== null;
166
+ if (!hasScoreValue && !hasScoreLabel) {
167
+ errors.push({
168
+ index,
169
+ field: 'scoreValue/scoreLabel',
170
+ message: 'At least one of scoreValue or scoreLabel is required',
171
+ suggestion: 'Provide scoreValue (numeric 0-1) or scoreLabel (e.g., "pass", "fail")',
172
+ });
173
+ }
174
+ // Validate scoreValue range if provided
175
+ if (hasScoreValue) {
176
+ if (typeof payload.scoreValue !== 'number' || !Number.isFinite(payload.scoreValue)) {
177
+ errors.push({
178
+ index,
179
+ field: 'scoreValue',
180
+ message: 'scoreValue must be a finite number',
181
+ });
182
+ }
183
+ }
184
+ // Validate text field lengths
185
+ if (payload.explanation && payload.explanation.length > MAX_TEXT_LENGTH) {
186
+ errors.push({
187
+ index,
188
+ field: 'explanation',
189
+ message: `explanation exceeds maximum length (${MAX_TEXT_LENGTH} characters)`,
190
+ });
191
+ }
192
+ // Validate optional ID fields
193
+ const idFields = ['responseId', 'traceId', 'sessionId', 'agentId'];
194
+ for (const field of idFields) {
195
+ const value = payload[field];
196
+ if (value !== undefined && value !== null) {
197
+ if (typeof value !== 'string') {
198
+ errors.push({ index, field, message: `${field} must be a string` });
199
+ }
200
+ else if (value.length > 128) {
201
+ errors.push({ index, field, message: `${field} exceeds maximum length (128 characters)` });
202
+ }
203
+ }
204
+ }
205
+ // Validate agentName
206
+ if (payload.agentName !== undefined && payload.agentName !== null) {
207
+ if (typeof payload.agentName !== 'string') {
208
+ errors.push({ index, field: 'agentName', message: 'agentName must be a string' });
209
+ }
210
+ else if (payload.agentName.length > 256) {
211
+ errors.push({ index, field: 'agentName', message: 'agentName exceeds maximum length (256 characters)' });
212
+ }
213
+ }
214
+ // Validate stepScores
215
+ if (payload.stepScores !== undefined) {
216
+ if (!Array.isArray(payload.stepScores)) {
217
+ errors.push({ index, field: 'stepScores', message: 'stepScores must be an array' });
218
+ }
219
+ else if (payload.stepScores.length > MAX_STEP_SCORES) {
220
+ errors.push({
221
+ index,
222
+ field: 'stepScores',
223
+ message: `stepScores exceeds maximum length (${MAX_STEP_SCORES} items)`,
224
+ });
225
+ }
226
+ else {
227
+ for (let i = 0; i < payload.stepScores.length; i++) {
228
+ const step = payload.stepScores[i];
229
+ if (!validateStepScore(step)) {
230
+ errors.push({
231
+ index,
232
+ field: `stepScores[${i}]`,
233
+ message: 'Invalid step score: requires step (string|number) and score (number 0-1)',
234
+ });
235
+ }
236
+ }
237
+ }
238
+ }
239
+ // Validate toolVerifications
240
+ if (payload.toolVerifications !== undefined) {
241
+ if (!Array.isArray(payload.toolVerifications)) {
242
+ errors.push({ index, field: 'toolVerifications', message: 'toolVerifications must be an array' });
243
+ }
244
+ else if (payload.toolVerifications.length > MAX_TOOL_VERIFICATIONS) {
245
+ errors.push({
246
+ index,
247
+ field: 'toolVerifications',
248
+ message: `toolVerifications exceeds maximum length (${MAX_TOOL_VERIFICATIONS} items)`,
249
+ });
250
+ }
251
+ else {
252
+ for (let i = 0; i < payload.toolVerifications.length; i++) {
253
+ const tv = payload.toolVerifications[i];
254
+ if (!validateToolVerification(tv)) {
255
+ errors.push({
256
+ index,
257
+ field: `toolVerifications[${i}]`,
258
+ message: 'Invalid tool verification: requires toolName, toolCorrect, argsCorrect, score',
259
+ });
260
+ }
261
+ }
262
+ }
263
+ }
264
+ // Validate trajectoryLength
265
+ if (payload.trajectoryLength !== undefined) {
266
+ if (typeof payload.trajectoryLength !== 'number' || !Number.isFinite(payload.trajectoryLength)) {
267
+ errors.push({ index, field: 'trajectoryLength', message: 'trajectoryLength must be a finite number' });
268
+ }
269
+ else if (payload.trajectoryLength < 0) {
270
+ errors.push({ index, field: 'trajectoryLength', message: 'trajectoryLength cannot be negative' });
271
+ }
272
+ }
273
+ return errors;
274
+ }
275
+ /**
276
+ * Validate a StepScore object
277
+ */
278
+ function validateStepScore(step) {
279
+ if (!step || typeof step !== 'object')
280
+ return false;
281
+ const s = step;
282
+ const hasValidStep = typeof s.step === 'string' || typeof s.step === 'number';
283
+ const hasValidScore = typeof s.score === 'number' && Number.isFinite(s.score) && s.score >= 0 && s.score <= 1;
284
+ return hasValidStep && hasValidScore;
285
+ }
286
+ /**
287
+ * Validate a ToolVerification object
288
+ */
289
+ function validateToolVerification(tv) {
290
+ if (!tv || typeof tv !== 'object')
291
+ return false;
292
+ const t = tv;
293
+ return (typeof t.toolName === 'string' &&
294
+ typeof t.toolCorrect === 'boolean' &&
295
+ typeof t.argsCorrect === 'boolean' &&
296
+ typeof t.score === 'number' &&
297
+ Number.isFinite(t.score));
298
+ }
299
+ /**
300
+ * Convert a webhook payload to JSONL record format
301
+ */
302
+ export function payloadToJsonlRecord(payload, timestamp) {
303
+ const ts = timestamp || new Date().toISOString();
304
+ // Normalize score if unit is provided
305
+ let normalizedScore = payload.scoreValue;
306
+ if (normalizedScore !== undefined && payload.scoreUnit) {
307
+ normalizedScore = normalizeScore(normalizedScore, payload.scoreUnit);
308
+ }
309
+ const attributes = {
310
+ [GENAI_EVALUATION_ATTRIBUTES.NAME]: payload.evaluationName,
311
+ [GENAI_EVALUATION_ATTRIBUTES.EVALUATOR]: payload.evaluator,
312
+ [GENAI_EVALUATION_ATTRIBUTES.EVALUATOR_TYPE]: payload.evaluatorType,
313
+ };
314
+ // Optional attributes
315
+ if (normalizedScore !== undefined) {
316
+ attributes[GENAI_EVALUATION_ATTRIBUTES.SCORE_VALUE] = normalizedScore;
317
+ }
318
+ if (payload.scoreLabel) {
319
+ attributes[GENAI_EVALUATION_ATTRIBUTES.SCORE_LABEL] = payload.scoreLabel;
320
+ }
321
+ if (payload.scoreUnit) {
322
+ attributes[GENAI_EVALUATION_ATTRIBUTES.SCORE_UNIT] = payload.scoreUnit;
323
+ }
324
+ if (payload.explanation) {
325
+ attributes[GENAI_EVALUATION_ATTRIBUTES.EXPLANATION] = payload.explanation;
326
+ }
327
+ if (payload.responseId) {
328
+ attributes['gen_ai.response.id'] = payload.responseId;
329
+ }
330
+ if (payload.sessionId) {
331
+ attributes['session.id'] = payload.sessionId;
332
+ }
333
+ // Agent-as-Judge fields
334
+ if (payload.agentId) {
335
+ attributes[GENAI_AGENT_ATTRIBUTES.AGENT_ID] = payload.agentId;
336
+ }
337
+ if (payload.agentName) {
338
+ attributes[GENAI_AGENT_ATTRIBUTES.AGENT_NAME] = payload.agentName;
339
+ }
340
+ if (payload.stepScores) {
341
+ attributes[AGENT_JUDGE_ATTRIBUTES.STEP_SCORES] = JSON.stringify(payload.stepScores);
342
+ }
343
+ if (payload.toolVerifications) {
344
+ attributes[AGENT_JUDGE_ATTRIBUTES.TOOL_VERIFICATIONS] = JSON.stringify(payload.toolVerifications);
345
+ }
346
+ if (payload.trajectoryLength !== undefined) {
347
+ attributes[AGENT_JUDGE_ATTRIBUTES.TRAJECTORY_LENGTH] = payload.trajectoryLength;
348
+ }
349
+ // Custom metadata
350
+ if (payload.metadata) {
351
+ for (const [key, value] of Object.entries(payload.metadata)) {
352
+ // Prefix custom attributes to avoid collisions
353
+ attributes[`webhook.metadata.${key}`] = value;
354
+ }
355
+ }
356
+ const record = {
357
+ timestamp: ts,
358
+ name: 'gen_ai.evaluation.result',
359
+ attributes,
360
+ };
361
+ // Add trace correlation if provided
362
+ if (payload.traceId) {
363
+ record.traceId = payload.traceId;
364
+ }
365
+ return JSON.stringify(record);
366
+ }
367
+ /**
368
+ * Process a single evaluation and write to JSONL file
369
+ */
370
+ export async function processEvaluation(payload, options) {
371
+ hookStats.totalReceived++;
372
+ // Validate payload
373
+ const errors = validateEvaluationPayload(payload);
374
+ if (errors.length > 0) {
375
+ hookStats.validationFailures++;
376
+ return {
377
+ success: false,
378
+ message: 'Validation failed',
379
+ errors,
380
+ };
381
+ }
382
+ // Ensure telemetry directory exists
383
+ if (!existsSync(options.telemetryDir)) {
384
+ await mkdir(options.telemetryDir, { recursive: true });
385
+ }
386
+ // Generate JSONL record
387
+ const timestamp = new Date().toISOString();
388
+ const record = payloadToJsonlRecord(payload, timestamp);
389
+ const date = getDateString();
390
+ const filePath = join(options.telemetryDir, `evaluations-${date}.jsonl`);
391
+ // Append to file
392
+ try {
393
+ await appendFile(filePath, record + '\n', 'utf-8');
394
+ }
395
+ catch (error) {
396
+ return {
397
+ success: false,
398
+ message: `Failed to write evaluation: ${error instanceof Error ? error.message : String(error)}`,
399
+ };
400
+ }
401
+ hookStats.successCount++;
402
+ hookStats.lastProcessedAt = timestamp;
403
+ return {
404
+ success: true,
405
+ message: 'Evaluation stored successfully',
406
+ processedCount: 1,
407
+ };
408
+ }
409
+ /**
410
+ * Process a batch of evaluations
411
+ */
412
+ export async function processBatch(batch, options) {
413
+ const maxBatch = options.maxBatchSize || MAX_BATCH_SIZE;
414
+ if (!batch.evaluations || !Array.isArray(batch.evaluations)) {
415
+ return {
416
+ success: false,
417
+ message: 'Invalid batch payload: evaluations must be an array',
418
+ };
419
+ }
420
+ if (batch.evaluations.length === 0) {
421
+ return {
422
+ success: false,
423
+ message: 'Empty batch: no evaluations provided',
424
+ };
425
+ }
426
+ if (batch.evaluations.length > maxBatch) {
427
+ return {
428
+ success: false,
429
+ message: `Batch too large: ${batch.evaluations.length} evaluations exceeds maximum of ${maxBatch}`,
430
+ };
431
+ }
432
+ hookStats.totalReceived += batch.evaluations.length;
433
+ // Validate all payloads first (includes individual size checks)
434
+ const allErrors = [];
435
+ for (let i = 0; i < batch.evaluations.length; i++) {
436
+ const errors = validateEvaluationPayload(batch.evaluations[i], i);
437
+ allErrors.push(...errors);
438
+ }
439
+ if (allErrors.length > 0) {
440
+ hookStats.validationFailures += batch.evaluations.length;
441
+ return {
442
+ success: false,
443
+ message: `Validation failed for ${allErrors.length} field(s)`,
444
+ errors: allErrors,
445
+ };
446
+ }
447
+ // Ensure telemetry directory exists
448
+ if (!existsSync(options.telemetryDir)) {
449
+ await mkdir(options.telemetryDir, { recursive: true });
450
+ }
451
+ // Generate JSONL records with progressive byte size check to prevent OOM
452
+ const timestamp = new Date().toISOString();
453
+ const date = getDateString();
454
+ const filePath = join(options.telemetryDir, `evaluations-${date}.jsonl`);
455
+ const records = [];
456
+ let totalBytes = 0;
457
+ for (let i = 0; i < batch.evaluations.length; i++) {
458
+ const record = payloadToJsonlRecord(batch.evaluations[i], timestamp);
459
+ const recordBytes = Buffer.byteLength(record, 'utf-8') + 1; // +1 for newline
460
+ totalBytes += recordBytes;
461
+ if (totalBytes > MAX_BATCH_BYTES) {
462
+ return {
463
+ success: false,
464
+ message: `Batch payload too large: ${totalBytes} bytes exceeds maximum ${MAX_BATCH_BYTES} bytes (failed at evaluation ${i + 1})`,
465
+ };
466
+ }
467
+ records.push(record);
468
+ }
469
+ const content = records.join('\n') + '\n';
470
+ // Write all at once
471
+ try {
472
+ await appendFile(filePath, content, 'utf-8');
473
+ }
474
+ catch (error) {
475
+ return {
476
+ success: false,
477
+ message: `Failed to write evaluations: ${error instanceof Error ? error.message : String(error)}`,
478
+ };
479
+ }
480
+ hookStats.successCount += batch.evaluations.length;
481
+ hookStats.lastProcessedAt = timestamp;
482
+ return {
483
+ success: true,
484
+ message: `Successfully stored ${batch.evaluations.length} evaluation(s)`,
485
+ processedCount: batch.evaluations.length,
486
+ };
487
+ }
488
+ //# sourceMappingURL=evaluation-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluation-hooks.js","sourceRoot":"","sources":["../../src/lib/evaluation-hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Tests for evaluation-hooks.ts
3
+ *
4
+ * Covers: HMAC signature validation, payload validation, JSONL conversion,
5
+ * single/batch processing, and edge cases.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=evaluation-hooks.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluation-hooks.test.d.ts","sourceRoot":"","sources":["../../src/lib/evaluation-hooks.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}