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,100 @@
1
+ /**
2
+ * Human Verification Event Tracking for EU AI Act Compliance
3
+ *
4
+ * Implements event schema and recording for human oversight verification
5
+ * per EU AI Act Article 12(3)(d).
6
+ *
7
+ * @see https://eur-lex.europa.eu/eli/reg/2024/1689/oj
8
+ */
9
+ /**
10
+ * Types of human verification actions
11
+ */
12
+ export type VerificationType = 'approval' | 'rejection' | 'override' | 'review';
13
+ /** Valid verification types for runtime validation */
14
+ export declare const VALID_VERIFICATION_TYPES: readonly VerificationType[];
15
+ /**
16
+ * Human verification event schema
17
+ */
18
+ export interface HumanVerificationEvent {
19
+ /** ISO 8601 timestamp of the verification */
20
+ timestamp: string;
21
+ /** Claude Code session ID */
22
+ sessionId: string;
23
+ /** Associated trace ID for correlation */
24
+ traceId?: string;
25
+ /** Type of verification action */
26
+ verificationType: VerificationType;
27
+ /** Anonymous or pseudonymized identifier for the verifier */
28
+ verifierId?: string;
29
+ /** Original AI output (optional, for override) */
30
+ originalOutput?: string;
31
+ /** Human-verified output (optional, for override) */
32
+ verifiedOutput?: string;
33
+ /** Additional metadata */
34
+ metadata?: Record<string, unknown>;
35
+ }
36
+ /**
37
+ * Options for querying verification events
38
+ */
39
+ export interface VerificationQueryOptions {
40
+ /** Filter by session ID */
41
+ sessionId?: string;
42
+ /** Filter by trace ID */
43
+ traceId?: string;
44
+ /** Filter by verification type */
45
+ verificationType?: VerificationType;
46
+ /** Start date (YYYY-MM-DD) */
47
+ startDate?: string;
48
+ /** End date (YYYY-MM-DD) */
49
+ endDate?: string;
50
+ /** Maximum results to return */
51
+ limit?: number;
52
+ }
53
+ /**
54
+ * Get the verifications directory path
55
+ */
56
+ export declare function getVerificationsDir(telemetryDir?: string): string;
57
+ /**
58
+ * Get the verification file path for a given date
59
+ */
60
+ export declare function getVerificationFilePath(date?: Date, telemetryDir?: string): string;
61
+ /**
62
+ * Validate a verification type
63
+ */
64
+ export declare function isValidVerificationType(type: unknown): type is VerificationType;
65
+ /**
66
+ * Record a human verification event.
67
+ * Logs via structured logger and stores to JSONL file.
68
+ *
69
+ * @param event - Verification event data (timestamp will be added automatically)
70
+ * @param telemetryDir - Optional telemetry directory (for testing)
71
+ * @throws Error if verificationType is invalid
72
+ *
73
+ * @example
74
+ * ```typescript
75
+ * recordVerification({
76
+ * sessionId: 'a8a71f9f-58de-4733-b912-d677b14f1575',
77
+ * verificationType: 'approval',
78
+ * verifierId: 'user-001',
79
+ * });
80
+ * ```
81
+ */
82
+ export declare function recordVerification(event: Omit<HumanVerificationEvent, 'timestamp'>, telemetryDir?: string): void;
83
+ /**
84
+ * Query verification events from JSONL files
85
+ *
86
+ * @param options - Query options
87
+ * @param telemetryDir - Optional telemetry directory (for testing)
88
+ * @returns Array of matching verification events
89
+ *
90
+ * @example
91
+ * ```typescript
92
+ * const events = await queryVerifications({
93
+ * sessionId: 'a8a71f9f-58de-4733-b912-d677b14f1575',
94
+ * startDate: '2026-01-01',
95
+ * endDate: '2026-01-31',
96
+ * });
97
+ * ```
98
+ */
99
+ export declare function queryVerifications(options: VerificationQueryOptions, telemetryDir?: string): Promise<HumanVerificationEvent[]>;
100
+ //# sourceMappingURL=verification-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification-events.d.ts","sourceRoot":"","sources":["../../src/lib/verification-events.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEhF,sDAAsD;AACtD,eAAO,MAAM,wBAAwB,EAAE,SAAS,gBAAgB,EAK/D,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,GAAE,MAAsB,GAAG,MAAM,CAEhF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,GAAE,IAAiB,EAAE,YAAY,GAAE,MAAsB,GAAG,MAAM,CAG7G;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,gBAAgB,CAE/E;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,IAAI,CAAC,sBAAsB,EAAE,WAAW,CAAC,EAChD,YAAY,GAAE,MAAsB,GACnC,IAAI,CA6BN;AAgDD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,wBAAwB,EACjC,YAAY,GAAE,MAAsB,GACnC,OAAO,CAAC,sBAAsB,EAAE,CAAC,CA0BnC"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Human Verification Event Tracking for EU AI Act Compliance
3
+ *
4
+ * Implements event schema and recording for human oversight verification
5
+ * per EU AI Act Article 12(3)(d).
6
+ *
7
+ * @see https://eur-lex.europa.eu/eli/reg/2024/1689/oj
8
+ */
9
+ import { join, dirname } from 'path';
10
+ import { existsSync, mkdirSync, appendFileSync } from 'fs';
11
+ import { createLogger } from './logger.js';
12
+ import { TELEMETRY_DIR } from './constants.js';
13
+ import { getDateString, streamJsonl, listFiles, parseDateFromFilename } from './file-utils.js';
14
+ const logger = createLogger('verification');
15
+ /** Valid verification types for runtime validation */
16
+ export const VALID_VERIFICATION_TYPES = [
17
+ 'approval',
18
+ 'rejection',
19
+ 'override',
20
+ 'review',
21
+ ];
22
+ /**
23
+ * Get the verifications directory path
24
+ */
25
+ export function getVerificationsDir(telemetryDir = TELEMETRY_DIR) {
26
+ return join(telemetryDir, 'verifications');
27
+ }
28
+ /**
29
+ * Get the verification file path for a given date
30
+ */
31
+ export function getVerificationFilePath(date = new Date(), telemetryDir = TELEMETRY_DIR) {
32
+ const dateStr = getDateString(date);
33
+ return join(getVerificationsDir(telemetryDir), `${dateStr}.jsonl`);
34
+ }
35
+ /**
36
+ * Validate a verification type
37
+ */
38
+ export function isValidVerificationType(type) {
39
+ return typeof type === 'string' && VALID_VERIFICATION_TYPES.includes(type);
40
+ }
41
+ /**
42
+ * Record a human verification event.
43
+ * Logs via structured logger and stores to JSONL file.
44
+ *
45
+ * @param event - Verification event data (timestamp will be added automatically)
46
+ * @param telemetryDir - Optional telemetry directory (for testing)
47
+ * @throws Error if verificationType is invalid
48
+ *
49
+ * @example
50
+ * ```typescript
51
+ * recordVerification({
52
+ * sessionId: 'a8a71f9f-58de-4733-b912-d677b14f1575',
53
+ * verificationType: 'approval',
54
+ * verifierId: 'user-001',
55
+ * });
56
+ * ```
57
+ */
58
+ export function recordVerification(event, telemetryDir = TELEMETRY_DIR) {
59
+ // Validate verification type
60
+ if (!isValidVerificationType(event.verificationType)) {
61
+ throw new Error(`Invalid verificationType: '${event.verificationType}'. ` +
62
+ `Must be one of: ${VALID_VERIFICATION_TYPES.join(', ')}`);
63
+ }
64
+ // Validate required fields
65
+ if (!event.sessionId || typeof event.sessionId !== 'string' || event.sessionId.trim().length === 0) {
66
+ throw new Error('sessionId is required and must be a non-empty string');
67
+ }
68
+ const fullEvent = {
69
+ ...event,
70
+ timestamp: new Date().toISOString(),
71
+ };
72
+ // Log for immediate audit trail
73
+ logger.info('Human verification recorded', {
74
+ sessionId: fullEvent.sessionId,
75
+ verificationType: fullEvent.verificationType,
76
+ verifierId: fullEvent.verifierId,
77
+ traceId: fullEvent.traceId,
78
+ });
79
+ // Store to JSONL
80
+ appendVerificationEvent(fullEvent, telemetryDir);
81
+ }
82
+ /**
83
+ * Append a verification event to the JSONL file
84
+ */
85
+ function appendVerificationEvent(event, telemetryDir) {
86
+ const filePath = getVerificationFilePath(new Date(), telemetryDir);
87
+ const dir = dirname(filePath);
88
+ // Ensure directory exists
89
+ if (!existsSync(dir)) {
90
+ mkdirSync(dir, { recursive: true });
91
+ }
92
+ // Append event as JSONL
93
+ const line = JSON.stringify(event) + '\n';
94
+ appendFileSync(filePath, line, 'utf-8');
95
+ }
96
+ /**
97
+ * Get verification files within date range
98
+ */
99
+ function getVerificationFiles(telemetryDir, startDate, endDate) {
100
+ const dir = getVerificationsDir(telemetryDir);
101
+ const files = listFiles(dir, /^\d{4}-\d{2}-\d{2}\.jsonl$/);
102
+ if (!startDate && !endDate) {
103
+ // Default to today only
104
+ const today = getDateString();
105
+ return files.filter(f => {
106
+ const date = parseDateFromFilename(f);
107
+ return date === today;
108
+ });
109
+ }
110
+ return files.filter(f => {
111
+ const date = parseDateFromFilename(f);
112
+ if (!date)
113
+ return false;
114
+ if (startDate && date < startDate)
115
+ return false;
116
+ if (endDate && date > endDate)
117
+ return false;
118
+ return true;
119
+ });
120
+ }
121
+ /**
122
+ * Query verification events from JSONL files
123
+ *
124
+ * @param options - Query options
125
+ * @param telemetryDir - Optional telemetry directory (for testing)
126
+ * @returns Array of matching verification events
127
+ *
128
+ * @example
129
+ * ```typescript
130
+ * const events = await queryVerifications({
131
+ * sessionId: 'a8a71f9f-58de-4733-b912-d677b14f1575',
132
+ * startDate: '2026-01-01',
133
+ * endDate: '2026-01-31',
134
+ * });
135
+ * ```
136
+ */
137
+ export async function queryVerifications(options, telemetryDir = TELEMETRY_DIR) {
138
+ const files = getVerificationFiles(telemetryDir, options.startDate, options.endDate);
139
+ const results = [];
140
+ const limit = options.limit || 50;
141
+ for (const file of files) {
142
+ for await (const event of streamJsonl(file)) {
143
+ // Validate event has required fields
144
+ if (!event.timestamp || !event.sessionId || !event.verificationType) {
145
+ continue;
146
+ }
147
+ // Apply filters
148
+ if (options.sessionId && event.sessionId !== options.sessionId)
149
+ continue;
150
+ if (options.traceId && event.traceId !== options.traceId)
151
+ continue;
152
+ if (options.verificationType && event.verificationType !== options.verificationType)
153
+ continue;
154
+ results.push(event);
155
+ if (results.length >= limit) {
156
+ return results;
157
+ }
158
+ }
159
+ }
160
+ return results;
161
+ }
162
+ //# sourceMappingURL=verification-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification-events.js","sourceRoot":"","sources":["../../src/lib/verification-events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for human verification event tracking
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=verification-events.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification-events.test.d.ts","sourceRoot":"","sources":["../../src/lib/verification-events.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,193 @@
1
+ /**
2
+ * Tests for human verification event tracking
3
+ */
4
+ import { describe, it, beforeEach, afterEach } from 'node:test';
5
+ import assert from 'node:assert';
6
+ import { existsSync, rmSync, mkdirSync, readFileSync } from 'fs';
7
+ import { join } from 'path';
8
+ import { tmpdir } from 'os';
9
+ import { recordVerification, queryVerifications, isValidVerificationType, VALID_VERIFICATION_TYPES, getVerificationFilePath, getVerificationsDir, } from './verification-events.js';
10
+ describe('verification-events', () => {
11
+ let testDir;
12
+ beforeEach(() => {
13
+ // Create a unique temp directory for each test
14
+ testDir = join(tmpdir(), `obs-toolkit-test-${Date.now()}-${Math.random().toString(36).slice(2)}`);
15
+ mkdirSync(testDir, { recursive: true });
16
+ });
17
+ afterEach(() => {
18
+ // Clean up test directory
19
+ if (testDir && existsSync(testDir)) {
20
+ rmSync(testDir, { recursive: true, force: true });
21
+ }
22
+ });
23
+ describe('isValidVerificationType', () => {
24
+ it('should return true for valid verification types', () => {
25
+ for (const type of VALID_VERIFICATION_TYPES) {
26
+ assert.strictEqual(isValidVerificationType(type), true, `${type} should be valid`);
27
+ }
28
+ });
29
+ it('should return false for invalid types', () => {
30
+ assert.strictEqual(isValidVerificationType('invalid'), false);
31
+ assert.strictEqual(isValidVerificationType(''), false);
32
+ assert.strictEqual(isValidVerificationType(null), false);
33
+ assert.strictEqual(isValidVerificationType(undefined), false);
34
+ assert.strictEqual(isValidVerificationType(123), false);
35
+ });
36
+ });
37
+ describe('getVerificationsDir', () => {
38
+ it('should return verifications subdirectory of telemetry dir', () => {
39
+ const dir = getVerificationsDir('/test/telemetry');
40
+ assert.strictEqual(dir, '/test/telemetry/verifications');
41
+ });
42
+ });
43
+ describe('getVerificationFilePath', () => {
44
+ it('should return path with date-based filename', () => {
45
+ const date = new Date('2026-01-31T12:00:00Z');
46
+ const path = getVerificationFilePath(date, '/test/telemetry');
47
+ assert.strictEqual(path, '/test/telemetry/verifications/2026-01-31.jsonl');
48
+ });
49
+ });
50
+ describe('recordVerification', () => {
51
+ it('should record event with all fields', () => {
52
+ const event = {
53
+ sessionId: 'sess-123',
54
+ traceId: 'trace-456',
55
+ verificationType: 'approval',
56
+ verifierId: 'user-001',
57
+ originalOutput: 'AI output',
58
+ verifiedOutput: 'Corrected output',
59
+ metadata: { custom: 'data' },
60
+ };
61
+ recordVerification(event, testDir);
62
+ // Verify file was created
63
+ const verificationsDir = getVerificationsDir(testDir);
64
+ assert.ok(existsSync(verificationsDir), 'verifications directory should exist');
65
+ // Read and parse the file
66
+ const filePath = getVerificationFilePath(new Date(), testDir);
67
+ const content = readFileSync(filePath, 'utf-8').trim();
68
+ const recorded = JSON.parse(content);
69
+ assert.strictEqual(recorded.sessionId, 'sess-123');
70
+ assert.strictEqual(recorded.traceId, 'trace-456');
71
+ assert.strictEqual(recorded.verificationType, 'approval');
72
+ assert.strictEqual(recorded.verifierId, 'user-001');
73
+ assert.strictEqual(recorded.originalOutput, 'AI output');
74
+ assert.strictEqual(recorded.verifiedOutput, 'Corrected output');
75
+ assert.deepStrictEqual(recorded.metadata, { custom: 'data' });
76
+ assert.ok(recorded.timestamp, 'should have timestamp');
77
+ });
78
+ it('should record event with minimal fields', () => {
79
+ recordVerification({
80
+ sessionId: 'sess-minimal',
81
+ verificationType: 'review',
82
+ }, testDir);
83
+ const filePath = getVerificationFilePath(new Date(), testDir);
84
+ const content = readFileSync(filePath, 'utf-8').trim();
85
+ const recorded = JSON.parse(content);
86
+ assert.strictEqual(recorded.sessionId, 'sess-minimal');
87
+ assert.strictEqual(recorded.verificationType, 'review');
88
+ assert.ok(recorded.timestamp);
89
+ assert.strictEqual(recorded.traceId, undefined);
90
+ assert.strictEqual(recorded.verifierId, undefined);
91
+ });
92
+ it('should reject invalid verification type', () => {
93
+ assert.throws(() => recordVerification({
94
+ sessionId: 'sess-123',
95
+ verificationType: 'invalid',
96
+ }, testDir), /Invalid verificationType.*invalid.*Must be one of/);
97
+ });
98
+ it('should reject missing sessionId', () => {
99
+ assert.throws(() => recordVerification({
100
+ sessionId: '',
101
+ verificationType: 'approval',
102
+ }, testDir), /sessionId is required/);
103
+ });
104
+ it('should record all four verification types', () => {
105
+ const types = ['approval', 'rejection', 'override', 'review'];
106
+ for (const type of types) {
107
+ recordVerification({
108
+ sessionId: `sess-${type}`,
109
+ verificationType: type,
110
+ }, testDir);
111
+ }
112
+ // Verify all were recorded
113
+ const filePath = getVerificationFilePath(new Date(), testDir);
114
+ const lines = readFileSync(filePath, 'utf-8').trim().split('\n');
115
+ assert.strictEqual(lines.length, 4);
116
+ const recordedTypes = lines.map(line => JSON.parse(line).verificationType);
117
+ assert.deepStrictEqual(recordedTypes.sort(), types.sort());
118
+ });
119
+ });
120
+ describe('queryVerifications', () => {
121
+ it('should return empty array when no events exist', async () => {
122
+ const results = await queryVerifications({}, testDir);
123
+ assert.deepStrictEqual(results, []);
124
+ });
125
+ it('should query by session ID', async () => {
126
+ // Record events for different sessions
127
+ recordVerification({ sessionId: 'sess-A', verificationType: 'approval' }, testDir);
128
+ recordVerification({ sessionId: 'sess-B', verificationType: 'rejection' }, testDir);
129
+ recordVerification({ sessionId: 'sess-A', verificationType: 'review' }, testDir);
130
+ const results = await queryVerifications({ sessionId: 'sess-A' }, testDir);
131
+ assert.strictEqual(results.length, 2);
132
+ assert.ok(results.every(r => r.sessionId === 'sess-A'));
133
+ });
134
+ it('should query by verification type', async () => {
135
+ recordVerification({ sessionId: 'sess-1', verificationType: 'approval' }, testDir);
136
+ recordVerification({ sessionId: 'sess-2', verificationType: 'rejection' }, testDir);
137
+ recordVerification({ sessionId: 'sess-3', verificationType: 'approval' }, testDir);
138
+ const results = await queryVerifications({ verificationType: 'approval' }, testDir);
139
+ assert.strictEqual(results.length, 2);
140
+ assert.ok(results.every(r => r.verificationType === 'approval'));
141
+ });
142
+ it('should query by trace ID', async () => {
143
+ recordVerification({ sessionId: 'sess-1', verificationType: 'approval', traceId: 'trace-X' }, testDir);
144
+ recordVerification({ sessionId: 'sess-2', verificationType: 'rejection', traceId: 'trace-Y' }, testDir);
145
+ recordVerification({ sessionId: 'sess-3', verificationType: 'review', traceId: 'trace-X' }, testDir);
146
+ const results = await queryVerifications({ traceId: 'trace-X' }, testDir);
147
+ assert.strictEqual(results.length, 2);
148
+ assert.ok(results.every(r => r.traceId === 'trace-X'));
149
+ });
150
+ it('should respect limit parameter', async () => {
151
+ // Record 10 events
152
+ for (let i = 0; i < 10; i++) {
153
+ recordVerification({ sessionId: `sess-${i}`, verificationType: 'approval' }, testDir);
154
+ }
155
+ const results = await queryVerifications({ limit: 5 }, testDir);
156
+ assert.strictEqual(results.length, 5);
157
+ });
158
+ it('should combine multiple filters', async () => {
159
+ recordVerification({ sessionId: 'sess-A', verificationType: 'approval', traceId: 'trace-1' }, testDir);
160
+ recordVerification({ sessionId: 'sess-A', verificationType: 'rejection', traceId: 'trace-1' }, testDir);
161
+ recordVerification({ sessionId: 'sess-B', verificationType: 'approval', traceId: 'trace-1' }, testDir);
162
+ recordVerification({ sessionId: 'sess-A', verificationType: 'approval', traceId: 'trace-2' }, testDir);
163
+ const results = await queryVerifications({
164
+ sessionId: 'sess-A',
165
+ verificationType: 'approval',
166
+ }, testDir);
167
+ assert.strictEqual(results.length, 2);
168
+ assert.ok(results.every(r => r.sessionId === 'sess-A' && r.verificationType === 'approval'));
169
+ });
170
+ it('should handle default limit of 50', async () => {
171
+ // Default limit should be 50
172
+ const results = await queryVerifications({}, testDir);
173
+ // Even though empty, verify the query completes
174
+ assert.ok(Array.isArray(results));
175
+ });
176
+ });
177
+ describe('VALID_VERIFICATION_TYPES', () => {
178
+ it('should contain all four types', () => {
179
+ assert.strictEqual(VALID_VERIFICATION_TYPES.length, 4);
180
+ assert.ok(VALID_VERIFICATION_TYPES.includes('approval'));
181
+ assert.ok(VALID_VERIFICATION_TYPES.includes('rejection'));
182
+ assert.ok(VALID_VERIFICATION_TYPES.includes('override'));
183
+ assert.ok(VALID_VERIFICATION_TYPES.includes('review'));
184
+ });
185
+ it('should be readonly at TypeScript level', () => {
186
+ // TypeScript enforces readonly at compile time
187
+ // At runtime, we just verify the expected values
188
+ const types = [...VALID_VERIFICATION_TYPES];
189
+ assert.deepStrictEqual(types.sort(), ['approval', 'override', 'rejection', 'review']);
190
+ });
191
+ });
192
+ });
193
+ //# sourceMappingURL=verification-events.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification-events.test.js","sourceRoot":"","sources":["../../src/lib/verification-events.test.ts"],"names":[],"mappings":"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"}
package/dist/server.d.ts CHANGED
@@ -8,4 +8,9 @@
8
8
  * Install: claude mcp add observability-toolkit -- npx -y @alyshia/observability-toolkit
9
9
  */
10
10
  export { RateLimiter, ServerInitError } from './lib/server-utils.js';
11
+ /**
12
+ * Remove signal handlers (for testing or error recovery).
13
+ * @internal
14
+ */
15
+ export declare function removeSignalHandlers(): void;
11
16
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AA8BH,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AA0CH,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAuNrE;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAG3C"}