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.
- package/README.md +126 -5
- package/dist/backends/index.d.ts +163 -0
- package/dist/backends/index.d.ts.map +1 -1
- package/dist/backends/index.js +57 -0
- package/dist/backends/index.js.map +1 -1
- package/dist/backends/index.test.js +55 -1
- package/dist/backends/index.test.js.map +1 -1
- package/dist/backends/local-jsonl-boolean-search.test.js +8 -8
- package/dist/backends/local-jsonl-boolean-search.test.js.map +1 -1
- package/dist/backends/local-jsonl-cache.test.d.ts +2 -0
- package/dist/backends/local-jsonl-cache.test.d.ts.map +1 -0
- package/dist/backends/local-jsonl-cache.test.js +295 -0
- package/dist/backends/local-jsonl-cache.test.js.map +1 -0
- package/dist/backends/local-jsonl-circuit-breaker.test.d.ts +2 -0
- package/dist/backends/local-jsonl-circuit-breaker.test.d.ts.map +1 -0
- package/dist/backends/local-jsonl-circuit-breaker.test.js +180 -0
- package/dist/backends/local-jsonl-circuit-breaker.test.js.map +1 -0
- package/dist/backends/local-jsonl-export.test.d.ts +2 -0
- package/dist/backends/local-jsonl-export.test.d.ts.map +1 -0
- package/dist/backends/local-jsonl-export.test.js +704 -0
- package/dist/backends/local-jsonl-export.test.js.map +1 -0
- package/dist/backends/local-jsonl-index.test.d.ts +2 -0
- package/dist/backends/local-jsonl-index.test.d.ts.map +1 -0
- package/dist/backends/local-jsonl-index.test.js +554 -0
- package/dist/backends/local-jsonl-index.test.js.map +1 -0
- package/dist/backends/local-jsonl-logs.test.js +52 -43
- package/dist/backends/local-jsonl-logs.test.js.map +1 -1
- package/dist/backends/local-jsonl-metrics.test.d.ts +2 -0
- package/dist/backends/local-jsonl-metrics.test.d.ts.map +1 -0
- package/dist/backends/local-jsonl-metrics.test.js +876 -0
- package/dist/backends/local-jsonl-metrics.test.js.map +1 -0
- package/dist/backends/local-jsonl-traces.test.js +89 -83
- package/dist/backends/local-jsonl-traces.test.js.map +1 -1
- package/dist/backends/local-jsonl.d.ts +39 -0
- package/dist/backends/local-jsonl.d.ts.map +1 -1
- package/dist/backends/local-jsonl.js +975 -492
- package/dist/backends/local-jsonl.js.map +1 -1
- package/dist/backends/signoz-api-circuit-breaker.test.d.ts +6 -0
- package/dist/backends/signoz-api-circuit-breaker.test.d.ts.map +1 -0
- package/dist/backends/signoz-api-circuit-breaker.test.js +548 -0
- package/dist/backends/signoz-api-circuit-breaker.test.js.map +1 -0
- package/dist/backends/signoz-api-rate-limiter.test.d.ts +6 -0
- package/dist/backends/signoz-api-rate-limiter.test.d.ts.map +1 -0
- package/dist/backends/signoz-api-rate-limiter.test.js +390 -0
- package/dist/backends/signoz-api-rate-limiter.test.js.map +1 -0
- package/dist/backends/signoz-api-ssrf.test.d.ts +6 -0
- package/dist/backends/signoz-api-ssrf.test.d.ts.map +1 -0
- package/dist/backends/signoz-api-ssrf.test.js +216 -0
- package/dist/backends/signoz-api-ssrf.test.js.map +1 -0
- package/dist/backends/signoz-api-test-helpers.d.ts +80 -0
- package/dist/backends/signoz-api-test-helpers.d.ts.map +1 -0
- package/dist/backends/signoz-api-test-helpers.js +79 -0
- package/dist/backends/signoz-api-test-helpers.js.map +1 -0
- package/dist/backends/signoz-api.d.ts +31 -1
- package/dist/backends/signoz-api.d.ts.map +1 -1
- package/dist/backends/signoz-api.js +717 -539
- package/dist/backends/signoz-api.js.map +1 -1
- package/dist/backends/signoz-api.test.d.ts +9 -0
- package/dist/backends/signoz-api.test.d.ts.map +1 -1
- package/dist/backends/signoz-api.test.js +20 -1032
- package/dist/backends/signoz-api.test.js.map +1 -1
- package/dist/lib/agent-as-judge.d.ts +388 -0
- package/dist/lib/agent-as-judge.d.ts.map +1 -0
- package/dist/lib/agent-as-judge.js +740 -0
- package/dist/lib/agent-as-judge.js.map +1 -0
- package/dist/lib/agent-as-judge.test.d.ts +5 -0
- package/dist/lib/agent-as-judge.test.d.ts.map +1 -0
- package/dist/lib/agent-as-judge.test.js +816 -0
- package/dist/lib/agent-as-judge.test.js.map +1 -0
- package/dist/lib/cache.d.ts +61 -2
- package/dist/lib/cache.d.ts.map +1 -1
- package/dist/lib/cache.js +54 -3
- package/dist/lib/cache.js.map +1 -1
- package/dist/lib/circuit-breaker.d.ts +101 -0
- package/dist/lib/circuit-breaker.d.ts.map +1 -0
- package/dist/lib/circuit-breaker.js +158 -0
- package/dist/lib/circuit-breaker.js.map +1 -0
- package/dist/lib/circuit-breaker.test.d.ts +2 -0
- package/dist/lib/circuit-breaker.test.d.ts.map +1 -0
- package/dist/lib/circuit-breaker.test.js +263 -0
- package/dist/lib/circuit-breaker.test.js.map +1 -0
- package/dist/lib/confident-export.d.ts +101 -0
- package/dist/lib/confident-export.d.ts.map +1 -0
- package/dist/lib/confident-export.js +393 -0
- package/dist/lib/confident-export.js.map +1 -0
- package/dist/lib/confident-export.test.d.ts +7 -0
- package/dist/lib/confident-export.test.d.ts.map +1 -0
- package/dist/lib/confident-export.test.js +835 -0
- package/dist/lib/confident-export.test.js.map +1 -0
- package/dist/lib/constants-symlink.test.d.ts +12 -0
- package/dist/lib/constants-symlink.test.d.ts.map +1 -0
- package/dist/lib/constants-symlink.test.js +357 -0
- package/dist/lib/constants-symlink.test.js.map +1 -0
- package/dist/lib/constants.d.ts +75 -0
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +104 -1
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/datadog-export.d.ts +156 -0
- package/dist/lib/datadog-export.d.ts.map +1 -0
- package/dist/lib/datadog-export.js +464 -0
- package/dist/lib/datadog-export.js.map +1 -0
- package/dist/lib/datadog-export.test.d.ts +14 -0
- package/dist/lib/datadog-export.test.d.ts.map +1 -0
- package/dist/lib/datadog-export.test.js +890 -0
- package/dist/lib/datadog-export.test.js.map +1 -0
- package/dist/lib/edge-cases.test.js +17 -17
- package/dist/lib/edge-cases.test.js.map +1 -1
- package/dist/lib/error-sanitizer.d.ts.map +1 -1
- package/dist/lib/error-sanitizer.js +29 -3
- package/dist/lib/error-sanitizer.js.map +1 -1
- package/dist/lib/error-sanitizer.test.js +159 -0
- package/dist/lib/error-sanitizer.test.js.map +1 -1
- package/dist/lib/error-types.d.ts +54 -0
- package/dist/lib/error-types.d.ts.map +1 -0
- package/dist/lib/error-types.js +154 -0
- package/dist/lib/error-types.js.map +1 -0
- package/dist/lib/error-types.test.d.ts +2 -0
- package/dist/lib/error-types.test.d.ts.map +1 -0
- package/dist/lib/error-types.test.js +196 -0
- package/dist/lib/error-types.test.js.map +1 -0
- package/dist/lib/evaluation-hooks.d.ts +49 -0
- package/dist/lib/evaluation-hooks.d.ts.map +1 -0
- package/dist/lib/evaluation-hooks.js +488 -0
- package/dist/lib/evaluation-hooks.js.map +1 -0
- package/dist/lib/evaluation-hooks.test.d.ts +8 -0
- package/dist/lib/evaluation-hooks.test.d.ts.map +1 -0
- package/dist/lib/evaluation-hooks.test.js +624 -0
- package/dist/lib/evaluation-hooks.test.js.map +1 -0
- package/dist/lib/export-utils.d.ts +99 -0
- package/dist/lib/export-utils.d.ts.map +1 -0
- package/dist/lib/export-utils.js +238 -0
- package/dist/lib/export-utils.js.map +1 -0
- package/dist/lib/export-utils.test.d.ts +5 -0
- package/dist/lib/export-utils.test.d.ts.map +1 -0
- package/dist/lib/export-utils.test.js +193 -0
- package/dist/lib/export-utils.test.js.map +1 -0
- package/dist/lib/file-utils.d.ts +17 -2
- package/dist/lib/file-utils.d.ts.map +1 -1
- package/dist/lib/file-utils.js +24 -5
- package/dist/lib/file-utils.js.map +1 -1
- package/dist/lib/file-utils.test.js +30 -0
- package/dist/lib/file-utils.test.js.map +1 -1
- package/dist/lib/histogram.d.ts +119 -0
- package/dist/lib/histogram.d.ts.map +1 -0
- package/dist/lib/histogram.js +202 -0
- package/dist/lib/histogram.js.map +1 -0
- package/dist/lib/histogram.test.d.ts +5 -0
- package/dist/lib/histogram.test.d.ts.map +1 -0
- package/dist/lib/histogram.test.js +381 -0
- package/dist/lib/histogram.test.js.map +1 -0
- package/dist/lib/indexer.test.js +27 -27
- package/dist/lib/indexer.test.js.map +1 -1
- package/dist/lib/input-validator.d.ts +12 -0
- package/dist/lib/input-validator.d.ts.map +1 -1
- package/dist/lib/input-validator.fuzz.test.d.ts +12 -0
- package/dist/lib/input-validator.fuzz.test.d.ts.map +1 -0
- package/dist/lib/input-validator.fuzz.test.js +290 -0
- package/dist/lib/input-validator.fuzz.test.js.map +1 -0
- package/dist/lib/input-validator.js +57 -3
- package/dist/lib/input-validator.js.map +1 -1
- package/dist/lib/input-validator.test.js +129 -1
- package/dist/lib/input-validator.test.js.map +1 -1
- package/dist/lib/instrumentation.d.ts +153 -0
- package/dist/lib/instrumentation.d.ts.map +1 -0
- package/dist/lib/instrumentation.integration.test.d.ts +2 -0
- package/dist/lib/instrumentation.integration.test.d.ts.map +1 -0
- package/dist/lib/instrumentation.integration.test.js +589 -0
- package/dist/lib/instrumentation.integration.test.js.map +1 -0
- package/dist/lib/instrumentation.js +520 -0
- package/dist/lib/instrumentation.js.map +1 -0
- package/dist/lib/instrumentation.test.d.ts +2 -0
- package/dist/lib/instrumentation.test.d.ts.map +1 -0
- package/dist/lib/instrumentation.test.js +821 -0
- package/dist/lib/instrumentation.test.js.map +1 -0
- package/dist/lib/langfuse-export.d.ts +125 -0
- package/dist/lib/langfuse-export.d.ts.map +1 -0
- package/dist/lib/langfuse-export.js +367 -0
- package/dist/lib/langfuse-export.js.map +1 -0
- package/dist/lib/langfuse-export.test.d.ts +7 -0
- package/dist/lib/langfuse-export.test.d.ts.map +1 -0
- package/dist/lib/langfuse-export.test.js +1007 -0
- package/dist/lib/langfuse-export.test.js.map +1 -0
- package/dist/lib/llm-as-judge.d.ts +657 -0
- package/dist/lib/llm-as-judge.d.ts.map +1 -0
- package/dist/lib/llm-as-judge.js +1397 -0
- package/dist/lib/llm-as-judge.js.map +1 -0
- package/dist/lib/llm-as-judge.test.d.ts +2 -0
- package/dist/lib/llm-as-judge.test.d.ts.map +1 -0
- package/dist/lib/llm-as-judge.test.js +2409 -0
- package/dist/lib/llm-as-judge.test.js.map +1 -0
- package/dist/lib/logger.d.ts +46 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +81 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/logger.test.d.ts +2 -0
- package/dist/lib/logger.test.d.ts.map +1 -0
- package/dist/lib/logger.test.js +122 -0
- package/dist/lib/logger.test.js.map +1 -0
- package/dist/lib/metrics.d.ts +62 -0
- package/dist/lib/metrics.d.ts.map +1 -0
- package/dist/lib/metrics.js +166 -0
- package/dist/lib/metrics.js.map +1 -0
- package/dist/lib/metrics.test.d.ts +5 -0
- package/dist/lib/metrics.test.d.ts.map +1 -0
- package/dist/lib/metrics.test.js +189 -0
- package/dist/lib/metrics.test.js.map +1 -0
- package/dist/lib/parse-stats.d.ts +119 -0
- package/dist/lib/parse-stats.d.ts.map +1 -0
- package/dist/lib/parse-stats.js +206 -0
- package/dist/lib/parse-stats.js.map +1 -0
- package/dist/lib/parse-stats.test.d.ts +5 -0
- package/dist/lib/parse-stats.test.d.ts.map +1 -0
- package/dist/lib/parse-stats.test.js +283 -0
- package/dist/lib/parse-stats.test.js.map +1 -0
- package/dist/lib/phoenix-export.d.ts +109 -0
- package/dist/lib/phoenix-export.d.ts.map +1 -0
- package/dist/lib/phoenix-export.js +429 -0
- package/dist/lib/phoenix-export.js.map +1 -0
- package/dist/lib/phoenix-export.test.d.ts +11 -0
- package/dist/lib/phoenix-export.test.d.ts.map +1 -0
- package/dist/lib/phoenix-export.test.js +725 -0
- package/dist/lib/phoenix-export.test.js.map +1 -0
- package/dist/lib/server-utils.d.ts +14 -1
- package/dist/lib/server-utils.d.ts.map +1 -1
- package/dist/lib/server-utils.js +43 -3
- package/dist/lib/server-utils.js.map +1 -1
- package/dist/lib/shared-schemas.d.ts +28 -0
- package/dist/lib/shared-schemas.d.ts.map +1 -1
- package/dist/lib/shared-schemas.js +33 -4
- package/dist/lib/shared-schemas.js.map +1 -1
- package/dist/lib/toon-encoder.d.ts +7 -2
- package/dist/lib/toon-encoder.d.ts.map +1 -1
- package/dist/lib/toon-encoder.js +21 -6
- package/dist/lib/toon-encoder.js.map +1 -1
- package/dist/lib/toon-encoder.test.d.ts +5 -0
- package/dist/lib/toon-encoder.test.d.ts.map +1 -0
- package/dist/lib/toon-encoder.test.js +85 -0
- package/dist/lib/toon-encoder.test.js.map +1 -0
- package/dist/lib/verification-events.d.ts +100 -0
- package/dist/lib/verification-events.d.ts.map +1 -0
- package/dist/lib/verification-events.js +162 -0
- package/dist/lib/verification-events.js.map +1 -0
- package/dist/lib/verification-events.test.d.ts +5 -0
- package/dist/lib/verification-events.test.d.ts.map +1 -0
- package/dist/lib/verification-events.test.js +193 -0
- package/dist/lib/verification-events.test.js.map +1 -0
- package/dist/server.d.ts +5 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +79 -21
- package/dist/server.js.map +1 -1
- package/dist/server.test.js +30 -0
- package/dist/server.test.js.map +1 -1
- package/dist/test-helpers/env-utils.d.ts +22 -0
- package/dist/test-helpers/env-utils.d.ts.map +1 -1
- package/dist/test-helpers/env-utils.js +38 -0
- package/dist/test-helpers/env-utils.js.map +1 -1
- package/dist/test-helpers/fuzz-generators.d.ts +58 -0
- package/dist/test-helpers/fuzz-generators.d.ts.map +1 -0
- package/dist/test-helpers/fuzz-generators.js +216 -0
- package/dist/test-helpers/fuzz-generators.js.map +1 -0
- package/dist/test-helpers/index.d.ts +1 -0
- package/dist/test-helpers/index.d.ts.map +1 -1
- package/dist/test-helpers/index.js +2 -0
- package/dist/test-helpers/index.js.map +1 -1
- package/dist/test-helpers/memfs-utils.d.ts +181 -0
- package/dist/test-helpers/memfs-utils.d.ts.map +1 -0
- package/dist/test-helpers/memfs-utils.js +292 -0
- package/dist/test-helpers/memfs-utils.js.map +1 -0
- package/dist/test-helpers/memfs-utils.test.d.ts +5 -0
- package/dist/test-helpers/memfs-utils.test.d.ts.map +1 -0
- package/dist/test-helpers/memfs-utils.test.js +338 -0
- package/dist/test-helpers/memfs-utils.test.js.map +1 -0
- package/dist/test-helpers/race-condition-helpers.d.ts +85 -0
- package/dist/test-helpers/race-condition-helpers.d.ts.map +1 -0
- package/dist/test-helpers/race-condition-helpers.js +279 -0
- package/dist/test-helpers/race-condition-helpers.js.map +1 -0
- package/dist/test-helpers/test-data-builders.d.ts +40 -3
- package/dist/test-helpers/test-data-builders.d.ts.map +1 -1
- package/dist/test-helpers/test-data-builders.js +54 -5
- package/dist/test-helpers/test-data-builders.js.map +1 -1
- package/dist/test-helpers/tool-validators.d.ts.map +1 -1
- package/dist/test-helpers/tool-validators.js +16 -1
- package/dist/test-helpers/tool-validators.js.map +1 -1
- package/dist/tools/context-stats.d.ts.map +1 -1
- package/dist/tools/context-stats.js +6 -8
- package/dist/tools/context-stats.js.map +1 -1
- package/dist/tools/export-confident.d.ts +145 -0
- package/dist/tools/export-confident.d.ts.map +1 -0
- package/dist/tools/export-confident.js +134 -0
- package/dist/tools/export-confident.js.map +1 -0
- package/dist/tools/export-confident.test.d.ts +7 -0
- package/dist/tools/export-confident.test.d.ts.map +1 -0
- package/dist/tools/export-confident.test.js +332 -0
- package/dist/tools/export-confident.test.js.map +1 -0
- package/dist/tools/export-datadog.d.ts +160 -0
- package/dist/tools/export-datadog.d.ts.map +1 -0
- package/dist/tools/export-datadog.js +160 -0
- package/dist/tools/export-datadog.js.map +1 -0
- package/dist/tools/export-datadog.test.d.ts +8 -0
- package/dist/tools/export-datadog.test.d.ts.map +1 -0
- package/dist/tools/export-datadog.test.js +419 -0
- package/dist/tools/export-datadog.test.js.map +1 -0
- package/dist/tools/export-langfuse.d.ts +137 -0
- package/dist/tools/export-langfuse.d.ts.map +1 -0
- package/dist/tools/export-langfuse.js +131 -0
- package/dist/tools/export-langfuse.js.map +1 -0
- package/dist/tools/export-langfuse.test.d.ts +7 -0
- package/dist/tools/export-langfuse.test.d.ts.map +1 -0
- package/dist/tools/export-langfuse.test.js +303 -0
- package/dist/tools/export-langfuse.test.js.map +1 -0
- package/dist/tools/export-phoenix.d.ts +145 -0
- package/dist/tools/export-phoenix.d.ts.map +1 -0
- package/dist/tools/export-phoenix.js +135 -0
- package/dist/tools/export-phoenix.js.map +1 -0
- package/dist/tools/export-phoenix.test.d.ts +7 -0
- package/dist/tools/export-phoenix.test.d.ts.map +1 -0
- package/dist/tools/export-phoenix.test.js +316 -0
- package/dist/tools/export-phoenix.test.js.map +1 -0
- package/dist/tools/health-check.d.ts +26 -0
- package/dist/tools/health-check.d.ts.map +1 -1
- package/dist/tools/health-check.js +36 -7
- package/dist/tools/health-check.js.map +1 -1
- package/dist/tools/index.d.ts +6 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +6 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/inject-evaluations.d.ts +1315 -0
- package/dist/tools/inject-evaluations.d.ts.map +1 -0
- package/dist/tools/inject-evaluations.js +121 -0
- package/dist/tools/inject-evaluations.js.map +1 -0
- package/dist/tools/inject-evaluations.test.d.ts +5 -0
- package/dist/tools/inject-evaluations.test.d.ts.map +1 -0
- package/dist/tools/inject-evaluations.test.js +359 -0
- package/dist/tools/inject-evaluations.test.js.map +1 -0
- package/dist/tools/query-evaluations.d.ts +25 -4
- package/dist/tools/query-evaluations.d.ts.map +1 -1
- package/dist/tools/query-evaluations.js +26 -2
- package/dist/tools/query-evaluations.js.map +1 -1
- package/dist/tools/query-evaluations.test.js +53 -46
- package/dist/tools/query-evaluations.test.js.map +1 -1
- package/dist/tools/query-llm-events.js +2 -2
- package/dist/tools/query-llm-events.js.map +1 -1
- package/dist/tools/query-llm-events.test.js +6 -3
- package/dist/tools/query-llm-events.test.js.map +1 -1
- package/dist/tools/query-logs.d.ts +8 -8
- package/dist/tools/query-logs.js +3 -3
- package/dist/tools/query-logs.js.map +1 -1
- package/dist/tools/query-metrics.d.ts +4 -4
- package/dist/tools/query-metrics.js +2 -2
- package/dist/tools/query-metrics.js.map +1 -1
- package/dist/tools/query-traces.d.ts +8 -8
- package/dist/tools/query-verifications.d.ts +111 -0
- package/dist/tools/query-verifications.d.ts.map +1 -0
- package/dist/tools/query-verifications.js +101 -0
- package/dist/tools/query-verifications.js.map +1 -0
- package/dist/tools/query-verifications.test.d.ts +5 -0
- package/dist/tools/query-verifications.test.d.ts.map +1 -0
- package/dist/tools/query-verifications.test.js +156 -0
- package/dist/tools/query-verifications.test.js.map +1 -0
- package/dist/types/evaluation-hooks.d.ts +176 -0
- package/dist/types/evaluation-hooks.d.ts.map +1 -0
- package/dist/types/evaluation-hooks.js +49 -0
- package/dist/types/evaluation-hooks.js.map +1 -0
- 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 @@
|
|
|
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
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;
|
|
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"}
|