niceeval 0.15.1-canary.76 → 0.16.1
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/INDEX.md +45 -40
- package/dist/adapter-execution-trace.cjs.map +1 -1
- package/dist/adapter-execution-trace.d.cts +26 -0
- package/dist/adapter-execution-trace.d.mts +26 -0
- package/dist/adapter-execution-trace.d.ts +26 -0
- package/dist/adapter-usage.cjs.map +1 -1
- package/dist/adapter-usage.d.cts +9 -0
- package/dist/adapter-usage.d.mts +9 -0
- package/dist/adapter-usage.d.ts +9 -0
- package/dist/adapter.cjs +19 -4
- package/dist/adapter.cjs.map +1 -1
- package/dist/adapter.d.cts +37 -12
- package/dist/adapter.d.mts +37 -12
- package/dist/adapter.d.ts +37 -12
- package/dist/agents/ai-sdk.cjs +3 -0
- package/dist/agents/ai-sdk.cjs.map +1 -1
- package/dist/agents/bub.cjs +3 -0
- package/dist/agents/bub.cjs.map +1 -1
- package/dist/agents/claude-code-native.cjs +28 -2
- package/dist/agents/claude-code-native.cjs.map +1 -1
- package/dist/agents/claude-code.cjs +3 -0
- package/dist/agents/claude-code.cjs.map +1 -1
- package/dist/agents/codex.cjs +3 -0
- package/dist/agents/codex.cjs.map +1 -1
- package/dist/agents/coding-cli-versions.cjs +9 -10
- package/dist/agents/coding-cli-versions.cjs.map +1 -1
- package/dist/agents/coding-cli-versions.d.cts +1 -1
- package/dist/agents/coding-cli-versions.d.mts +1 -1
- package/dist/agents/coding-cli-versions.d.ts +1 -1
- package/dist/agents/deepseek-harness.cjs +3 -0
- package/dist/agents/deepseek-harness.cjs.map +1 -1
- package/dist/agents/hermes.cjs +3 -0
- package/dist/agents/hermes.cjs.map +1 -1
- package/dist/agents/index.cjs.map +1 -1
- package/dist/agents/index.d.cts +3 -2
- package/dist/agents/index.d.mts +3 -2
- package/dist/agents/index.d.ts +3 -2
- package/dist/agents/omp.cjs +3 -0
- package/dist/agents/omp.cjs.map +1 -1
- package/dist/agents/openai-compat.cjs +6 -0
- package/dist/agents/openai-compat.cjs.map +1 -1
- package/dist/agents/openclaw.cjs +3 -0
- package/dist/agents/openclaw.cjs.map +1 -1
- package/dist/agents/opencode.cjs +3 -0
- package/dist/agents/opencode.cjs.map +1 -1
- package/dist/agents/sdk-streams.cjs +9 -0
- package/dist/agents/sdk-streams.cjs.map +1 -1
- package/dist/agents/ui-message-stream.cjs +3 -0
- package/dist/agents/ui-message-stream.cjs.map +1 -1
- package/dist/assertions/api.cjs.map +1 -1
- package/dist/assertions/api.d.cts +27 -5
- package/dist/assertions/api.d.mts +27 -5
- package/dist/assertions/api.d.ts +27 -5
- package/dist/assertions/collection.cjs +6 -0
- package/dist/assertions/collection.cjs.map +1 -1
- package/dist/assertions/collection.d.cts +4 -2
- package/dist/assertions/collection.d.mts +4 -2
- package/dist/assertions/collection.d.ts +4 -2
- package/dist/assertions/collection.js +12 -8
- package/dist/assertions/context-match.cjs +70 -0
- package/dist/assertions/context-match.cjs.map +1 -0
- package/dist/assertions/context-match.d.cts +107 -0
- package/dist/assertions/context-match.d.mts +107 -0
- package/dist/assertions/context-match.d.ts +107 -0
- package/dist/assertions/context-match.js +12 -0
- package/dist/assertions/context-match.js.map +1 -0
- package/dist/assertions/full-content.cjs +109 -0
- package/dist/assertions/full-content.cjs.map +1 -0
- package/dist/assertions/full-content.d.cts +6 -0
- package/dist/assertions/full-content.d.mts +6 -0
- package/dist/assertions/full-content.d.ts +6 -0
- package/dist/assertions/full-content.js +12 -0
- package/dist/assertions/full-content.js.map +1 -0
- package/dist/assertions/judge-presets.cjs +2 -34
- package/dist/assertions/judge-presets.cjs.map +1 -1
- package/dist/assertions/judge-presets.d.cts +6 -9
- package/dist/assertions/judge-presets.d.mts +6 -9
- package/dist/assertions/judge-presets.d.ts +6 -9
- package/dist/assertions/judge-presets.js +8 -8
- package/dist/assertions/judge.cjs +107 -29
- package/dist/assertions/judge.cjs.map +1 -1
- package/dist/assertions/judge.d.cts +2 -0
- package/dist/assertions/judge.d.mts +2 -0
- package/dist/assertions/judge.d.ts +2 -0
- package/dist/assertions/match.cjs +244 -5
- package/dist/assertions/match.cjs.map +1 -1
- package/dist/assertions/match.d.cts +43 -3
- package/dist/assertions/match.d.mts +43 -3
- package/dist/assertions/match.d.ts +43 -3
- package/dist/assertions/match.js +88 -78
- package/dist/assertions/material.cjs +520 -0
- package/dist/assertions/material.cjs.map +1 -0
- package/dist/assertions/material.d.cts +56 -0
- package/dist/assertions/material.d.mts +56 -0
- package/dist/assertions/material.d.ts +56 -0
- package/dist/assertions/material.js +20 -0
- package/dist/assertions/material.js.map +1 -0
- package/dist/assertions/record/attachment.cjs +5 -2
- package/dist/assertions/record/attachment.cjs.map +1 -1
- package/dist/assertions/record/codec.cjs +2 -1
- package/dist/assertions/record/codec.cjs.map +1 -1
- package/dist/assertions/record/model.cjs.map +1 -1
- package/dist/assertions/record/model.d.cts +6 -1
- package/dist/assertions/record/model.d.mts +6 -1
- package/dist/assertions/record/model.d.ts +6 -1
- package/dist/assertions/runtime.cjs +207 -14
- package/dist/assertions/runtime.cjs.map +1 -1
- package/dist/assertions/runtime.d.cts +9 -0
- package/dist/assertions/runtime.d.mts +9 -0
- package/dist/assertions/runtime.d.ts +9 -0
- package/dist/assertions/runtime.js +14 -8
- package/dist/assertions/score-match-audit.cjs +18 -8
- package/dist/assertions/score-match-audit.cjs.map +1 -1
- package/dist/assertions/score-match-gateway.cjs +83 -25
- package/dist/assertions/score-match-gateway.cjs.map +1 -1
- package/dist/assertions/score-match-gateway.d.cts +2 -0
- package/dist/assertions/score-match-gateway.d.mts +2 -0
- package/dist/assertions/score-match-gateway.d.ts +2 -0
- package/dist/assertions/value-composition.test-d.cjs +77 -0
- package/dist/assertions/value-composition.test-d.cjs.map +1 -0
- package/dist/assertions/value-composition.test-d.d.cts +1 -0
- package/dist/assertions/value-composition.test-d.d.mts +1 -0
- package/dist/assertions/value-composition.test-d.d.ts +1 -0
- package/dist/assertions/value-composition.test-d.js +4 -0
- package/dist/assertions/value-composition.test-d.js.map +1 -0
- package/dist/context/assert-first.cjs +207 -213
- package/dist/context/assert-first.cjs.map +1 -1
- package/dist/context/assert-first.d.cts +49 -23
- package/dist/context/assert-first.d.mts +49 -23
- package/dist/context/assert-first.d.ts +49 -23
- package/dist/context/session.cjs +111 -9
- package/dist/context/session.cjs.map +1 -1
- package/dist/context/session.d.cts +18 -0
- package/dist/context/session.d.mts +18 -0
- package/dist/context/session.d.ts +18 -0
- package/dist/define.cjs +17 -1
- package/dist/define.cjs.map +1 -1
- package/dist/eval/cli/contribution.cjs +2 -0
- package/dist/eval/cli/contribution.cjs.map +1 -1
- package/dist/eval/host/index.cjs +2 -0
- package/dist/eval/host/index.cjs.map +1 -1
- package/dist/eval/record/evaluation.cjs +3 -0
- package/dist/eval/record/evaluation.cjs.map +1 -1
- package/dist/eval/record/membership-provenance.d.cts +15 -15
- package/dist/eval/record/membership-provenance.d.mts +15 -15
- package/dist/eval/record/membership-provenance.d.ts +15 -15
- package/dist/eval/record/score.cjs +7 -0
- package/dist/eval/record/score.cjs.map +1 -1
- package/dist/eval/record/sealed-assertion.cjs +3 -0
- package/dist/eval/record/sealed-assertion.cjs.map +1 -1
- package/dist/eval/record/verdict.cjs +7 -0
- package/dist/eval/record/verdict.cjs.map +1 -1
- package/dist/expect/index.cjs +8 -2
- package/dist/expect/index.cjs.map +1 -1
- package/dist/expect/index.d.cts +9 -4
- package/dist/expect/index.d.mts +9 -4
- package/dist/expect/index.d.ts +9 -4
- package/dist/expect/index.js +72 -62
- package/dist/expect/index.mjs +72 -62
- package/dist/experiment/host/cli/contribution.cjs +37 -23
- package/dist/experiment/host/cli/contribution.cjs.map +1 -1
- package/dist/experiment/host/cli/contribution.d.cts +9 -1
- package/dist/experiment/host/cli/contribution.d.mts +9 -1
- package/dist/experiment/host/cli/contribution.d.ts +9 -1
- package/dist/experiment/host/current.cjs +74 -0
- package/dist/experiment/host/current.cjs.map +1 -0
- package/dist/experiment/host/current.d.cts +33 -0
- package/dist/experiment/host/current.d.mts +33 -0
- package/dist/experiment/host/current.d.ts +33 -0
- package/dist/experiment/host/current.js +10 -0
- package/dist/experiment/host/current.js.map +1 -0
- package/dist/experiment/host/index.cjs +17 -174
- package/dist/experiment/host/index.cjs.map +1 -1
- package/dist/experiment/host/index.d.cts +8 -54
- package/dist/experiment/host/index.d.mts +8 -54
- package/dist/experiment/host/index.d.ts +8 -54
- package/dist/experiment/host/operations.cjs +33 -10
- package/dist/experiment/host/operations.cjs.map +1 -1
- package/dist/experiment/host/operations.d.cts +29 -1
- package/dist/experiment/host/operations.d.mts +29 -1
- package/dist/experiment/host/operations.d.ts +29 -1
- package/dist/experiment/host/operations.js +6 -4
- package/dist/experiment/host/requirements.cjs +3 -0
- package/dist/experiment/host/requirements.cjs.map +1 -0
- package/dist/experiment/host/requirements.d.cts +3 -0
- package/dist/experiment/host/requirements.d.mts +3 -0
- package/dist/experiment/host/requirements.d.ts +3 -0
- package/dist/experiment/host/requirements.js +4 -0
- package/dist/experiment/host/requirements.js.map +1 -0
- package/dist/experiment/host/runtime.cjs +179 -0
- package/dist/experiment/host/runtime.cjs.map +1 -0
- package/dist/experiment/host/runtime.d.cts +79 -0
- package/dist/experiment/host/runtime.d.mts +79 -0
- package/dist/experiment/host/runtime.d.ts +79 -0
- package/dist/experiment/host/runtime.js +6 -0
- package/dist/experiment/host/runtime.js.map +1 -0
- package/dist/experiment/host/types.cjs.map +1 -1
- package/dist/experiment/host/types.d.cts +17 -16
- package/dist/experiment/host/types.d.mts +17 -16
- package/dist/experiment/host/types.d.ts +17 -16
- package/dist/fresh-import.cjs +2 -1
- package/dist/fresh-import.cjs.map +1 -1
- package/dist/index.cjs +4 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +12 -6
- package/dist/index.d.mts +12 -6
- package/dist/index.d.ts +12 -6
- package/dist/index.js +32 -30
- package/dist/index.mjs +32 -30
- package/dist/inspection/artifacts.cjs +83 -54
- package/dist/inspection/artifacts.cjs.map +1 -1
- package/dist/inspection/artifacts.d.cts +8 -0
- package/dist/inspection/artifacts.d.mts +8 -0
- package/dist/inspection/artifacts.d.ts +8 -0
- package/dist/inspection/artifacts.js +2 -0
- package/dist/inspection/assertions.cjs +4 -1
- package/dist/inspection/assertions.cjs.map +1 -1
- package/dist/inspection/cli/contribution.cjs +27 -4
- package/dist/inspection/cli/contribution.cjs.map +1 -1
- package/dist/inspection/cli/contribution.d.cts +2 -1
- package/dist/inspection/cli/contribution.d.mts +2 -1
- package/dist/inspection/cli/contribution.d.ts +2 -1
- package/dist/inspection/execution-traces.cjs +114 -8
- package/dist/inspection/execution-traces.cjs.map +1 -1
- package/dist/inspection/execution-traces.d.cts +38 -0
- package/dist/inspection/execution-traces.d.mts +38 -0
- package/dist/inspection/execution-traces.d.ts +38 -0
- package/dist/inspection/facts.cjs +12 -0
- package/dist/inspection/facts.cjs.map +1 -1
- package/dist/inspection/limits.cjs +5 -1
- package/dist/inspection/limits.cjs.map +1 -1
- package/dist/inspection/limits.d.cts +4 -0
- package/dist/inspection/limits.d.mts +4 -0
- package/dist/inspection/limits.d.ts +4 -0
- package/dist/inspection/limits.js +6 -2
- package/dist/inspection/overview.cjs +74 -33
- package/dist/inspection/overview.cjs.map +1 -1
- package/dist/inspection/overview.d.cts +19 -1
- package/dist/inspection/overview.d.mts +19 -1
- package/dist/inspection/overview.d.ts +19 -1
- package/dist/inspection/overview.js +4 -2
- package/dist/inspection/project-input.cjs +9 -0
- package/dist/inspection/project-input.cjs.map +1 -0
- package/dist/inspection/project-input.d.cts +20 -0
- package/dist/inspection/project-input.d.mts +20 -0
- package/dist/inspection/project-input.d.ts +20 -0
- package/dist/inspection/project-input.js +8 -0
- package/dist/inspection/project-input.js.map +1 -0
- package/dist/inspection/project-result.cjs +60 -0
- package/dist/inspection/project-result.cjs.map +1 -0
- package/dist/inspection/project-result.d.cts +1264 -0
- package/dist/inspection/project-result.d.mts +1264 -0
- package/dist/inspection/project-result.d.ts +1264 -0
- package/dist/inspection/project-result.js +10 -0
- package/dist/inspection/project-result.js.map +1 -0
- package/dist/inspection/project-source.cjs +109 -0
- package/dist/inspection/project-source.cjs.map +1 -0
- package/dist/inspection/project-source.d.cts +10 -0
- package/dist/inspection/project-source.d.mts +10 -0
- package/dist/inspection/project-source.d.ts +10 -0
- package/dist/inspection/project-source.js +6 -0
- package/dist/inspection/project-source.js.map +1 -0
- package/dist/inspection/project.cjs +100 -0
- package/dist/inspection/project.cjs.map +1 -0
- package/dist/inspection/project.d.cts +3 -0
- package/dist/inspection/project.d.mts +3 -0
- package/dist/inspection/project.d.ts +3 -0
- package/dist/inspection/project.js +6 -0
- package/dist/inspection/project.js.map +1 -0
- package/dist/inspection/protocol.cjs +19 -9
- package/dist/inspection/protocol.cjs.map +1 -1
- package/dist/inspection/protocol.d.cts +5506 -38189
- package/dist/inspection/protocol.d.mts +5506 -38189
- package/dist/inspection/protocol.d.ts +5506 -38189
- package/dist/inspection/public.mjs +896 -84
- package/dist/inspection/query.cjs +2 -0
- package/dist/inspection/query.cjs.map +1 -1
- package/dist/inspection/results.cjs +234 -29
- package/dist/inspection/results.cjs.map +1 -1
- package/dist/inspection/results.d.cts +870 -13
- package/dist/inspection/results.d.mts +870 -13
- package/dist/inspection/results.d.ts +870 -13
- package/dist/inspection/results.js +36 -34
- package/dist/inspection/select.cjs +126 -14
- package/dist/inspection/select.cjs.map +1 -1
- package/dist/inspection/select.d.cts +1 -1
- package/dist/inspection/select.d.mts +1 -1
- package/dist/inspection/select.d.ts +1 -1
- package/dist/inspection/source.cjs +4 -0
- package/dist/inspection/source.cjs.map +1 -1
- package/dist/inspection/sources.cjs +5 -0
- package/dist/inspection/sources.cjs.map +1 -1
- package/dist/inspection/trace.cjs +82 -84
- package/dist/inspection/trace.cjs.map +1 -1
- package/dist/inspection/trace.d.cts +7 -2
- package/dist/inspection/trace.d.mts +7 -2
- package/dist/inspection/trace.d.ts +7 -2
- package/dist/model-slots.cjs +35 -0
- package/dist/model-slots.cjs.map +1 -0
- package/dist/model-slots.d.cts +19 -0
- package/dist/model-slots.d.mts +19 -0
- package/dist/model-slots.d.ts +19 -0
- package/dist/model-slots.js +8 -0
- package/dist/model-slots.js.map +1 -0
- package/dist/o11y/adapter-call-price.cjs +4 -0
- package/dist/o11y/adapter-call-price.cjs.map +1 -1
- package/dist/o11y/adapter-call-price.d.cts +24 -0
- package/dist/o11y/adapter-call-price.d.mts +24 -0
- package/dist/o11y/adapter-call-price.d.ts +24 -0
- package/dist/o11y/adapter-call-price.js +6 -2
- package/dist/o11y/adapter-usage-projection.cjs +158 -0
- package/dist/o11y/adapter-usage-projection.cjs.map +1 -0
- package/dist/o11y/adapter-usage-projection.d.cts +141 -0
- package/dist/o11y/adapter-usage-projection.d.mts +141 -0
- package/dist/o11y/adapter-usage-projection.d.ts +141 -0
- package/dist/o11y/adapter-usage-projection.js +20 -0
- package/dist/o11y/adapter-usage-projection.js.map +1 -0
- package/dist/o11y/eval-usage.cjs +149 -0
- package/dist/o11y/eval-usage.cjs.map +1 -0
- package/dist/o11y/eval-usage.d.cts +46 -0
- package/dist/o11y/eval-usage.d.mts +46 -0
- package/dist/o11y/eval-usage.d.ts +46 -0
- package/dist/o11y/eval-usage.js +8 -0
- package/dist/o11y/eval-usage.js.map +1 -0
- package/dist/o11y/judge-call-price.cjs +62 -0
- package/dist/o11y/judge-call-price.cjs.map +1 -0
- package/dist/o11y/judge-call-price.d.cts +3 -0
- package/dist/o11y/judge-call-price.d.mts +3 -0
- package/dist/o11y/judge-call-price.d.ts +3 -0
- package/dist/o11y/judge-call-price.js +6 -0
- package/dist/o11y/judge-call-price.js.map +1 -0
- package/dist/o11y/judge-usage-projection.cjs +134 -0
- package/dist/o11y/judge-usage-projection.cjs.map +1 -0
- package/dist/o11y/judge-usage-projection.d.cts +18 -0
- package/dist/o11y/judge-usage-projection.d.mts +18 -0
- package/dist/o11y/judge-usage-projection.d.ts +18 -0
- package/dist/o11y/judge-usage-projection.js +20 -0
- package/dist/o11y/judge-usage-projection.js.map +1 -0
- package/dist/o11y/judge-usage-receipt.cjs +135 -0
- package/dist/o11y/judge-usage-receipt.cjs.map +1 -0
- package/dist/o11y/judge-usage-receipt.d.cts +5 -0
- package/dist/o11y/judge-usage-receipt.d.mts +5 -0
- package/dist/o11y/judge-usage-receipt.d.ts +5 -0
- package/dist/o11y/judge-usage-receipt.js +6 -0
- package/dist/o11y/judge-usage-receipt.js.map +1 -0
- package/dist/o11y/judge-usage.cjs +171 -0
- package/dist/o11y/judge-usage.cjs.map +1 -0
- package/dist/o11y/judge-usage.d.cts +35 -0
- package/dist/o11y/judge-usage.d.mts +35 -0
- package/dist/o11y/judge-usage.d.ts +35 -0
- package/dist/o11y/judge-usage.js +6 -0
- package/dist/o11y/judge-usage.js.map +1 -0
- package/dist/plugin/contracts.cjs +2 -0
- package/dist/plugin/contracts.cjs.map +1 -1
- package/dist/plugin/link.cjs +7 -0
- package/dist/plugin/link.cjs.map +1 -1
- package/dist/record/attachment/protocol.cjs +8 -6
- package/dist/record/attachment/protocol.cjs.map +1 -1
- package/dist/record/attachment/protocol.d.cts +10 -0
- package/dist/record/attachment/protocol.d.mts +10 -0
- package/dist/record/attachment/protocol.d.ts +10 -0
- package/dist/record/attachment/protocol.js +38 -36
- package/dist/record/codec/seal-manifest.d.cts +3 -3
- package/dist/record/codec/seal-manifest.d.mts +3 -3
- package/dist/record/codec/seal-manifest.d.ts +3 -3
- package/dist/record/family/adapter-usage/definition.d.cts +1 -0
- package/dist/record/family/adapter-usage/definition.d.mts +1 -0
- package/dist/record/family/adapter-usage/definition.d.ts +1 -0
- package/dist/record/family/adapter-usage/persistence.cjs +1 -1
- package/dist/record/family/adapter-usage/persistence.cjs.map +1 -1
- package/dist/record/family/adapter-usage/persistence.d.cts +2 -1
- package/dist/record/family/adapter-usage/persistence.d.mts +2 -1
- package/dist/record/family/adapter-usage/persistence.d.ts +2 -1
- package/dist/record/family/adapter-usage/schema.cjs +21 -2
- package/dist/record/family/adapter-usage/schema.cjs.map +1 -1
- package/dist/record/family/adapter-usage/schema.d.cts +85 -0
- package/dist/record/family/adapter-usage/schema.d.mts +85 -0
- package/dist/record/family/adapter-usage/schema.d.ts +85 -0
- package/dist/record/family/adapter-usage/schema.js +18 -12
- package/dist/record/family/catalog.cjs +31 -27
- package/dist/record/family/catalog.cjs.map +1 -1
- package/dist/record/family/catalog.d.cts +94 -3
- package/dist/record/family/catalog.d.mts +94 -3
- package/dist/record/family/catalog.d.ts +94 -3
- package/dist/record/family/current.cjs +45 -42
- package/dist/record/family/current.cjs.map +1 -1
- package/dist/record/family/current.d.cts +240 -1
- package/dist/record/family/current.d.mts +240 -1
- package/dist/record/family/current.d.ts +240 -1
- package/dist/record/family/execution-traces/definition.d.cts +26 -0
- package/dist/record/family/execution-traces/definition.d.mts +26 -0
- package/dist/record/family/execution-traces/definition.d.ts +26 -0
- package/dist/record/family/execution-traces/definition.js +20 -14
- package/dist/record/family/execution-traces/schema.cjs +57 -1
- package/dist/record/family/execution-traces/schema.cjs.map +1 -1
- package/dist/record/family/execution-traces/schema.d.cts +114 -0
- package/dist/record/family/execution-traces/schema.d.mts +114 -0
- package/dist/record/family/execution-traces/schema.d.ts +114 -0
- package/dist/record/family/execution-traces/schema.js +18 -12
- package/dist/record/family/judge-usage/definition.cjs +12 -0
- package/dist/record/family/judge-usage/definition.cjs.map +1 -0
- package/dist/record/family/judge-usage/definition.d.cts +91 -0
- package/dist/record/family/judge-usage/definition.d.mts +91 -0
- package/dist/record/family/judge-usage/definition.d.ts +91 -0
- package/dist/record/family/judge-usage/definition.js +6 -0
- package/dist/record/family/judge-usage/definition.js.map +1 -0
- package/dist/record/family/judge-usage/persistence.cjs +10 -0
- package/dist/record/family/judge-usage/persistence.cjs.map +1 -0
- package/dist/record/family/judge-usage/persistence.d.cts +91 -0
- package/dist/record/family/judge-usage/persistence.d.mts +91 -0
- package/dist/record/family/judge-usage/persistence.d.ts +91 -0
- package/dist/record/family/judge-usage/persistence.js +6 -0
- package/dist/record/family/judge-usage/persistence.js.map +1 -0
- package/dist/record/family/judge-usage/schema.cjs +307 -0
- package/dist/record/family/judge-usage/schema.cjs.map +1 -0
- package/dist/record/family/judge-usage/schema.d.cts +351 -0
- package/dist/record/family/judge-usage/schema.d.mts +351 -0
- package/dist/record/family/judge-usage/schema.d.ts +351 -0
- package/dist/record/family/judge-usage/schema.js +18 -0
- package/dist/record/family/judge-usage/schema.js.map +1 -0
- package/dist/record/host/sqlite-host.cjs +55 -9
- package/dist/record/host/sqlite-host.cjs.map +1 -1
- package/dist/record/host/types.cjs.map +1 -1
- package/dist/record/host/types.d.cts +7 -0
- package/dist/record/host/types.d.mts +7 -0
- package/dist/record/host/types.d.ts +7 -0
- package/dist/record/model/run-context.cjs +7 -1
- package/dist/record/model/run-context.cjs.map +1 -1
- package/dist/record/model/run-context.d.cts +4 -0
- package/dist/record/model/run-context.d.mts +4 -0
- package/dist/record/model/run-context.d.ts +4 -0
- package/dist/record/model/seal-manifest.d.cts +1 -1
- package/dist/record/model/seal-manifest.d.mts +1 -1
- package/dist/record/model/seal-manifest.d.ts +1 -1
- package/dist/record/sqlite/client.cjs +18 -5
- package/dist/record/sqlite/client.cjs.map +1 -1
- package/dist/record/sqlite/client.d.cts +1 -1
- package/dist/record/sqlite/client.d.mts +1 -1
- package/dist/record/sqlite/client.d.ts +1 -1
- package/dist/record/sqlite/project-state-database.cjs +29 -8
- package/dist/record/sqlite/project-state-database.cjs.map +1 -1
- package/dist/run/host/runtime.cjs +4 -0
- package/dist/run/host/runtime.cjs.map +1 -1
- package/dist/run/storage/sqlite.cjs +20 -0
- package/dist/run/storage/sqlite.cjs.map +1 -1
- package/dist/runner/adapter-execution-trace.cjs +125 -2
- package/dist/runner/adapter-execution-trace.cjs.map +1 -1
- package/dist/runner/adapter-execution-trace.d.cts +1 -1
- package/dist/runner/adapter-execution-trace.d.mts +1 -1
- package/dist/runner/adapter-execution-trace.d.ts +1 -1
- package/dist/runner/adapter-usage.cjs +55 -7
- package/dist/runner/adapter-usage.cjs.map +1 -1
- package/dist/runner/adapter-usage.d.cts +9 -2
- package/dist/runner/adapter-usage.d.mts +9 -2
- package/dist/runner/adapter-usage.d.ts +9 -2
- package/dist/runner/adoption.cjs +9 -0
- package/dist/runner/adoption.cjs.map +1 -1
- package/dist/runner/attempt-cancellation.cjs +12 -0
- package/dist/runner/attempt-cancellation.cjs.map +1 -0
- package/dist/runner/attempt-cancellation.d.cts +6 -0
- package/dist/runner/attempt-cancellation.d.mts +6 -0
- package/dist/runner/attempt-cancellation.d.ts +6 -0
- package/dist/runner/attempt-cancellation.js +6 -0
- package/dist/runner/attempt-cancellation.js.map +1 -0
- package/dist/runner/attempt-resources.cjs +10 -4
- package/dist/runner/attempt-resources.cjs.map +1 -1
- package/dist/runner/attempt-resources.d.cts +2 -1
- package/dist/runner/attempt-resources.d.mts +2 -1
- package/dist/runner/attempt-resources.d.ts +2 -1
- package/dist/runner/attempt.cjs +1177 -1139
- package/dist/runner/attempt.cjs.map +1 -1
- package/dist/runner/config-identity.cjs +20 -1
- package/dist/runner/config-identity.cjs.map +1 -1
- package/dist/runner/config-identity.d.cts +5 -0
- package/dist/runner/config-identity.d.mts +5 -0
- package/dist/runner/config-identity.d.ts +5 -0
- package/dist/runner/discover.cjs +14 -0
- package/dist/runner/discover.cjs.map +1 -1
- package/dist/runner/discover.d.cts +3 -0
- package/dist/runner/discover.d.mts +3 -0
- package/dist/runner/discover.d.ts +3 -0
- package/dist/runner/feedback/human.cjs +9 -4
- package/dist/runner/feedback/human.cjs.map +1 -1
- package/dist/runner/fingerprint.cjs +1 -0
- package/dist/runner/fingerprint.cjs.map +1 -1
- package/dist/runner/judge-usage.cjs +18 -0
- package/dist/runner/judge-usage.cjs.map +1 -0
- package/dist/runner/judge-usage.d.cts +5 -0
- package/dist/runner/judge-usage.d.mts +5 -0
- package/dist/runner/judge-usage.d.ts +5 -0
- package/dist/runner/judge-usage.js +8 -0
- package/dist/runner/judge-usage.js.map +1 -0
- package/dist/runner/project-target.cjs.map +1 -1
- package/dist/runner/project-target.d.cts +2 -0
- package/dist/runner/project-target.d.mts +2 -0
- package/dist/runner/project-target.d.ts +2 -0
- package/dist/runner/record/planning.cjs +1 -0
- package/dist/runner/record/planning.cjs.map +1 -1
- package/dist/runner/record.cjs +4 -0
- package/dist/runner/record.cjs.map +1 -1
- package/dist/runner/reporters/braintrust.cjs +2 -0
- package/dist/runner/reporters/braintrust.cjs.map +1 -1
- package/dist/runner/reuse-diagnostics.cjs +9 -10
- package/dist/runner/reuse-diagnostics.cjs.map +1 -1
- package/dist/runner/reuse-diagnostics.d.cts +5 -6
- package/dist/runner/reuse-diagnostics.d.mts +5 -6
- package/dist/runner/reuse-diagnostics.d.ts +5 -6
- package/dist/runner/reuse-diagnostics.js +4 -4
- package/dist/runner/reuse-plan.cjs +100 -48
- package/dist/runner/reuse-plan.cjs.map +1 -1
- package/dist/runner/reuse-plan.d.cts +60 -3
- package/dist/runner/reuse-plan.d.mts +60 -3
- package/dist/runner/reuse-plan.d.ts +60 -3
- package/dist/runner/reuse-plan.js +14 -10
- package/dist/runner/run.cjs +8 -6
- package/dist/runner/run.cjs.map +1 -1
- package/dist/runner/session.cjs +1 -1
- package/dist/runner/session.cjs.map +1 -1
- package/dist/runner/session.d.cts +1 -1
- package/dist/runner/session.d.mts +1 -1
- package/dist/runner/session.d.ts +1 -1
- package/dist/runner/source-producer.cjs +3 -1
- package/dist/runner/source-producer.cjs.map +1 -1
- package/dist/runner/types.cjs.map +1 -1
- package/dist/runner/types.d.cts +26 -5
- package/dist/runner/types.d.mts +26 -5
- package/dist/runner/types.d.ts +26 -5
- package/dist/sandbox/action.cjs +3 -0
- package/dist/sandbox/action.cjs.map +1 -1
- package/dist/sandbox/commands.cjs +3 -0
- package/dist/sandbox/commands.cjs.map +1 -1
- package/dist/sandbox/compose.cjs +6 -0
- package/dist/sandbox/compose.cjs.map +1 -1
- package/dist/sandbox/docker-profile/registry.cjs +7 -0
- package/dist/sandbox/docker-profile/registry.cjs.map +1 -1
- package/dist/sandbox/docker-profile/runtime.cjs +3 -0
- package/dist/sandbox/docker-profile/runtime.cjs.map +1 -1
- package/dist/sandbox/docker-profile/schema.cjs +7 -0
- package/dist/sandbox/docker-profile/schema.cjs.map +1 -1
- package/dist/sandbox/incus.cjs +7 -0
- package/dist/sandbox/incus.cjs.map +1 -1
- package/dist/sandbox/layer.cjs +12 -0
- package/dist/sandbox/layer.cjs.map +1 -1
- package/dist/shared/adapter-cleanup.cjs +18 -0
- package/dist/shared/adapter-cleanup.cjs.map +1 -0
- package/dist/shared/adapter-cleanup.d.cts +4 -0
- package/dist/shared/adapter-cleanup.d.mts +4 -0
- package/dist/shared/adapter-cleanup.d.ts +4 -0
- package/dist/shared/adapter-cleanup.js +10 -0
- package/dist/shared/adapter-cleanup.js.map +1 -0
- package/dist/shared/attempt-lifecycle.cjs +3 -0
- package/dist/shared/attempt-lifecycle.cjs.map +1 -0
- package/dist/shared/attempt-lifecycle.d.cts +13 -0
- package/dist/shared/attempt-lifecycle.d.mts +13 -0
- package/dist/shared/attempt-lifecycle.d.ts +13 -0
- package/dist/shared/attempt-lifecycle.js +4 -0
- package/dist/shared/attempt-lifecycle.js.map +1 -0
- package/dist/show/contribution.cjs +52 -14
- package/dist/show/contribution.cjs.map +1 -1
- package/dist/show/contribution.d.cts +23 -1
- package/dist/show/contribution.d.mts +23 -1
- package/dist/show/contribution.d.ts +23 -1
- package/dist/show/model.cjs +8 -1
- package/dist/show/model.cjs.map +1 -1
- package/dist/show/model.d.cts +10 -1
- package/dist/show/model.d.mts +10 -1
- package/dist/show/model.d.ts +10 -1
- package/dist/show/render.cjs +287 -49
- package/dist/show/render.cjs.map +1 -1
- package/dist/show/render.d.cts +3 -0
- package/dist/show/render.d.mts +3 -0
- package/dist/show/render.d.ts +3 -0
- package/dist/sources/projector.cjs +3 -0
- package/dist/sources/projector.cjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +1 -1
- package/dist/types.d.mts +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/view/app-dist/.vite/manifest.json +2 -2
- package/dist/view/app-dist/assets/index-CmVoXbwG.js +63 -0
- package/dist/view/app-dist/assets/{quality-cost-scatter-CFB3wnkN.js → quality-cost-scatter-BuLISaH4.js} +1 -1
- package/dist/view/app-dist/index.html +1 -1
- package/dist/view/cli/contribution.cjs +54 -21
- package/dist/view/cli/contribution.cjs.map +1 -1
- package/dist/view/cli/contribution.d.cts +2 -1
- package/dist/view/cli/contribution.d.mts +2 -1
- package/dist/view/cli/contribution.d.ts +2 -1
- package/dist/view/function-runtime.mjs +13231 -11647
- package/dist/view/http-protocol.cjs +3 -0
- package/dist/view/http-protocol.cjs.map +1 -1
- package/dist/view/http-protocol.d.cts +8 -0
- package/dist/view/http-protocol.d.mts +8 -0
- package/dist/view/http-protocol.d.ts +8 -0
- package/dist/view/inspection-host.cjs +17 -1
- package/dist/view/inspection-host.cjs.map +1 -1
- package/dist/view/render.cjs +1 -0
- package/dist/view/render.cjs.map +1 -1
- package/dist/view/render.d.cts +2 -1
- package/dist/view/render.d.mts +2 -1
- package/dist/view/render.d.ts +2 -1
- package/dist/view/revision.cjs.map +1 -1
- package/dist/view/revision.d.cts +12 -0
- package/dist/view/revision.d.mts +12 -0
- package/dist/view/revision.d.ts +12 -0
- package/dist/view/server.cjs +10 -9
- package/dist/view/server.cjs.map +1 -1
- package/docs-site/zh/examples/ai-agent-application.mdx +1 -1
- package/docs-site/zh/explanation/adapter.mdx +2 -2
- package/docs-site/zh/explanation/assert.mdx +60 -24
- package/docs-site/zh/explanation/drive.mdx +1 -1
- package/docs-site/zh/explanation/evals.mdx +31 -29
- package/docs-site/zh/explanation/experiment.mdx +15 -15
- package/docs-site/zh/explanation/judge.mdx +23 -15
- package/docs-site/zh/explanation/overview.mdx +44 -21
- package/docs-site/zh/explanation/record.mdx +28 -13
- package/docs-site/zh/explanation/results-flow.mdx +37 -0
- package/docs-site/zh/explanation/runner.mdx +27 -6
- package/docs-site/zh/index.mdx +22 -115
- package/docs-site/zh/introduction.mdx +89 -61
- package/docs-site/zh/reference/cli.mdx +50 -26
- package/docs-site/zh/reference/define-agent.mdx +37 -5
- package/docs-site/zh/reference/define-eval.mdx +130 -29
- package/docs-site/zh/reference/define-experiment.mdx +251 -0
- package/docs-site/zh/reference/events.mdx +34 -30
- package/docs-site/zh/reference/expect.mdx +77 -2
- package/docs-site/zh/reference/official-adapters.mdx +2 -2
- package/docs-site/zh/troubleshooting/debug-sandbox.mdx +43 -24
- package/docs-site/zh/troubleshooting/debugging.mdx +65 -42
- package/docs-site/zh/troubleshooting/recover-after-kill.mdx +35 -28
- package/docs-site/zh/tutorials/accept-results.mdx +34 -24
- package/docs-site/zh/tutorials/agent-feedback-loop.mdx +74 -43
- package/docs-site/zh/tutorials/agent-onboarding.mdx +27 -20
- package/docs-site/zh/tutorials/authoring.mdx +138 -121
- package/docs-site/zh/tutorials/ci-integration.mdx +46 -22
- package/docs-site/zh/tutorials/compare-runs.mdx +40 -13
- package/docs-site/zh/tutorials/concurrency.mdx +66 -62
- package/docs-site/zh/tutorials/configuration.mdx +17 -17
- package/docs-site/zh/tutorials/connect-otel.mdx +48 -37
- package/docs-site/zh/tutorials/connect-your-agent.mdx +80 -173
- package/docs-site/zh/tutorials/control-run-cost.mdx +63 -12
- package/docs-site/zh/tutorials/criteria-files.mdx +28 -21
- package/docs-site/zh/tutorials/custom-application.mdx +75 -55
- package/docs-site/zh/tutorials/dataset-fanout.mdx +32 -22
- package/docs-site/zh/tutorials/debug-lifecycle-plan.mdx +38 -31
- package/docs-site/zh/tutorials/docker-in-docker.mdx +83 -89
- package/docs-site/zh/tutorials/eval-groups.mdx +70 -89
- package/docs-site/zh/tutorials/evaluation-kinds.mdx +12 -5
- package/docs-site/zh/tutorials/experiment-services.mdx +243 -0
- package/docs-site/zh/tutorials/fixtures.mdx +42 -26
- package/docs-site/zh/tutorials/handle-execution-failures.mdx +41 -19
- package/docs-site/zh/tutorials/install-custom-sandbox-agent.mdx +21 -16
- package/docs-site/zh/tutorials/niceeval-taste-application.mdx +394 -0
- package/docs-site/zh/tutorials/niceeval-taste.mdx +190 -0
- package/docs-site/zh/tutorials/nixos-managed-dind.mdx +51 -39
- package/docs-site/zh/tutorials/plugins.mdx +55 -31
- package/docs-site/zh/tutorials/prebuilt-sandbox.mdx +204 -0
- package/docs-site/zh/tutorials/quickstart.mdx +91 -47
- package/docs-site/zh/tutorials/reporters.mdx +45 -30
- package/docs-site/zh/tutorials/rerun-and-cache.mdx +39 -40
- package/docs-site/zh/tutorials/sandbox-agent.mdx +65 -40
- package/docs-site/zh/tutorials/sandbox-providers.mdx +104 -282
- package/docs-site/zh/tutorials/sandbox-reuse.mdx +65 -97
- package/docs-site/zh/tutorials/select-and-preview.mdx +25 -20
- package/docs-site/zh/tutorials/verify-judge.mdx +49 -26
- package/docs-site/zh/tutorials/viewing-results.mdx +130 -80
- package/docs-site/zh/tutorials/write-experiment.mdx +116 -298
- package/docs-site/zh/tutorials/write-send.mdx +53 -52
- package/node_modules/undici/docs/docs/api/Agent.md +8 -8
- package/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +9 -6
- package/node_modules/undici/docs/docs/api/Errors.md +25 -0
- package/node_modules/undici/docs/docs/api/Interceptors.md +4 -3
- package/node_modules/undici/docs/docs/api/Pool.md +5 -6
- package/node_modules/undici/lib/api/readable.js +1 -2
- package/node_modules/undici/lib/core/request.js +23 -2
- package/node_modules/undici/lib/core/util.js +0 -39
- package/node_modules/undici/lib/dispatcher/client-h1.js +11 -4
- package/node_modules/undici/lib/dispatcher/client-h2.js +52 -8
- package/node_modules/undici/lib/dispatcher/client.js +1 -1
- package/node_modules/undici/lib/dispatcher/dispatcher1-wrapper.js +3 -2
- package/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +21 -6
- package/node_modules/undici/lib/dispatcher/pool-base.js +63 -2
- package/node_modules/undici/lib/dispatcher/pool.js +90 -7
- package/node_modules/undici/lib/dispatcher/proxy-agent.js +16 -3
- package/node_modules/undici/lib/handler/deduplication-handler.js +24 -11
- package/node_modules/undici/lib/handler/redirect-handler.js +5 -0
- package/node_modules/undici/lib/handler/retry-handler.js +72 -13
- package/node_modules/undici/lib/interceptor/cache.js +4 -1
- package/node_modules/undici/lib/interceptor/decompress.js +236 -69
- package/node_modules/undici/lib/web/cache/cache.js +17 -8
- package/node_modules/undici/lib/web/cache/cachestorage.js +11 -5
- package/node_modules/undici/lib/web/cookies/index.js +19 -7
- package/node_modules/undici/lib/web/cookies/util.js +3 -1
- package/node_modules/undici/lib/web/eventsource/eventsource.js +25 -1
- package/node_modules/undici/lib/web/fetch/body.js +22 -15
- package/node_modules/undici/lib/web/fetch/data-url.js +6 -6
- package/node_modules/undici/lib/web/fetch/formdata.js +30 -36
- package/node_modules/undici/lib/web/fetch/headers.js +34 -31
- package/node_modules/undici/lib/web/fetch/index.js +38 -14
- package/node_modules/undici/lib/web/fetch/request.js +74 -79
- package/node_modules/undici/lib/web/fetch/response.js +43 -44
- package/node_modules/undici/lib/web/fetch/util.js +7 -7
- package/node_modules/undici/lib/web/infra/index.js +16 -1
- package/node_modules/undici/lib/web/webidl/index.js +2 -14
- package/node_modules/undici/lib/web/websocket/events.js +43 -26
- package/node_modules/undici/lib/web/websocket/receiver.js +5 -0
- package/node_modules/undici/lib/web/websocket/stream/websocketerror.js +13 -10
- package/node_modules/undici/lib/web/websocket/websocket.js +44 -41
- package/node_modules/undici/package.json +1 -1
- package/node_modules/undici/types/diagnostics-channel.d.ts +2 -1
- package/node_modules/undici/types/interceptors.d.ts +1 -1
- package/node_modules/undici/types/webidl.d.ts +13 -7
- package/package.json +4 -4
- package/dist/view/app-dist/assets/index-DFzw1L97.js +0 -63
- package/docs-site/zh/tutorials/experiments.mdx +0 -101
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facts.js","sourceRoot":"","sources":["facts.ts"],"names":[],"mappings":"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","sourcesContent":["import { Result, Schema } from \"effect\";\nimport { encodeAttemptLocator } from \"../attempt-locator.ts\";\nimport { mintRecordContentHandle, type RecordContentHandle, } from \"../record/attachment/content.ts\";\nimport { enumerateRecordAttachmentClosure, hydrateRecordAttachmentCurrent, mintRecordAttachmentReference, RecordAttachmentReference, recordAttachmentReferenceWire, } from \"../record/attachment/protocol.ts\";\nimport { decodeAttemptDocument, decodeMemberDocument, decodeRunDocument, RecordExactParseOptions, RecordSlotIdentitySchema, } from \"../record/codec/core.ts\";\nimport { NiceEvalCurrentRecordAttachments, NiceEvalRecordAttachments, } from \"../record/family/current.ts\";\nimport type { AssertionsAttachment } from \"../record/family/assertions/definition.ts\";\nimport type { AttemptDocument, MemberDocument, RunDocument, } from \"../record/model/core.ts\";\nimport type { PersistedContentMetadata, SealedAttachmentMetadata, SealedRunCore, SealedRunCutoff, SealedRunSummary, } from \"../record/sqlite/types.ts\";\nimport { closeInspectionJson, isInspectionCodecError, type InspectionJson, } from \"./codec.ts\";\nimport type { InspectionFactSource } from \"./source.ts\";\nimport type { ReadableRunResource } from \"../run/storage/types.ts\";\nexport interface DecodedInspectionAttachment {\n readonly physical: SealedAttachmentMetadata;\n readonly value: InspectionJson;\n}\n/** A strictly decoded sealed Run with its browser-neutral reader capability. */\nexport interface LoadedInspectionRun {\n readonly source: InspectionFactSource;\n readonly physical: SealedRunCore;\n readonly run: RunDocument;\n readonly members: readonly MemberDocument[];\n readonly attempts: readonly AttemptDocument[];\n readonly attachments: readonly DecodedInspectionAttachment[];\n}\n/** Exact lifecycle resource plus its optional published Core at one cutoff. */\nexport interface LoadedInspectionRunResource {\n readonly source: InspectionFactSource;\n readonly resource: ReadableRunResource;\n readonly published?: LoadedInspectionRun;\n}\nexport interface InspectionAttemptTarget {\n readonly run: LoadedInspectionRun;\n readonly member: MemberDocument;\n}\n/** Exact origin Attempt plus every target membership visible to the resolver. */\nexport interface ResolvedInspectionAttempt {\n readonly attempt: AttemptDocument;\n readonly origin: LoadedInspectionRun;\n readonly locator: string;\n readonly targets: readonly InspectionAttemptTarget[];\n}\nexport type InspectionAssertionsRead = {\n readonly state: \"available\";\n readonly attachment: DecodedInspectionAttachment;\n readonly value: AssertionsAttachment;\n readonly contents: WeakMap<object, PersistedContentMetadata>;\n readonly issues: readonly InspectionJson[];\n} | {\n readonly state: \"not-recorded\" | \"unsupported\" | \"failed\";\n readonly attachment?: DecodedInspectionAttachment;\n readonly issues: readonly InspectionJson[];\n};\nconst RUN_PAGE_SIZE = 100;\nconst ATTEMPT_CANDIDATE_RUN_LIMIT = 64;\nconst ATTEMPT_TARGET_MEMBER_LIMIT = 256;\n/**\n * Pins the source cutoff, exhausts the fixed Run-summary pagination, then\n * reads and strictly decodes every Run Core in that exact sealed generation.\n */\nexport function loadInspectionRuns(source: InspectionFactSource): readonly LoadedInspectionRun[] {\n const cutoff = source.cutoff();\n const summaries: SealedRunSummary[] = [];\n const seen = new Set<string>();\n let afterRunId = \"\";\n for (;;) {\n const page = source.readSealedRunSummaryPage(afterRunId, RUN_PAGE_SIZE, cutoff.identity);\n requireCutoff(page.cutoff, cutoff);\n if (page.afterRunId !== afterRunId) {\n throw factsError(\"Run pagination returned a different cursor\");\n }\n let previous = afterRunId;\n for (const summary of page.summaries) {\n if (summary.runId <= previous || seen.has(summary.runId)) {\n throw factsError(\"Run pagination is not strictly ordered\");\n }\n seen.add(summary.runId);\n summaries.push(summary);\n previous = summary.runId;\n }\n if (page.nextAfterRunId === null)\n break;\n if (page.summaries.length === 0 ||\n page.nextAfterRunId !== page.summaries.at(-1)!.runId ||\n page.nextAfterRunId === afterRunId) {\n throw factsError(\"Run pagination returned an invalid continuation cursor\");\n }\n afterRunId = page.nextAfterRunId;\n }\n if (summaries.length !== cutoff.runCount) {\n throw factsError(\"Run pagination did not close the pinned sealed cutoff\");\n }\n return Object.freeze(summaries.map((summary) => {\n const physical = source.readSealedRunCore(summary.runId);\n if (physical === undefined) {\n throw factsError(`Sealed Run ${summary.runId} disappeared from the pinned cutoff`);\n }\n return decodeInspectionRun(source, physical);\n }));\n}\n/** Reads a bounded, explicit Run selection without changing its caller order. */\nexport function loadSelectedInspectionRuns(source: InspectionFactSource, runIds: readonly string[]): readonly LoadedInspectionRun[] {\n const cutoff = source.cutoff();\n const loaded: LoadedInspectionRun[] = [];\n for (const runId of new Set(runIds)) {\n const physical = source.readSealedRunCore(runId);\n if (physical !== undefined)\n loaded.push(decodeInspectionRun(source, physical));\n }\n requireCutoff(source.cutoff(), cutoff);\n return Object.freeze(loaded);\n}\n/** Reads Run create/close facts even when no Attempt Core has been published. */\nexport function loadInspectionRunResource(source: InspectionFactSource, runId: string): LoadedInspectionRunResource | undefined {\n const cutoff = source.cutoff();\n const resource = source.readRunResource(runId);\n if (resource === undefined)\n return undefined;\n const physical = source.readSealedRunCore(runId);\n const published = physical === undefined\n ? undefined\n : decodeInspectionRun(source, physical);\n requireCutoff(source.cutoff(), cutoff);\n if (resource.published > 0 && published === undefined) {\n throw factsError(`Run ${runId} has published bindings without a readable Core`);\n }\n if (published !== undefined)\n validateRunResourceCore(resource, published);\n return Object.freeze({ source, resource, ...(published === undefined ? {} : { published }) });\n}\nfunction validateRunResourceCore(resource: ReadableRunResource, published: LoadedInspectionRun): void {\n const run = published.run;\n if (run.runId !== resource.runId ||\n run.experimentId !== resource.experimentId ||\n run.startedAt !== Date.parse(resource.startedAt) ||\n run.expectedSlots.length !== resource.slots.length) {\n throw factsError(`Run ${resource.runId} lifecycle resource does not match its published Core`);\n }\n for (const [index, slot] of run.expectedSlots.entries()) {\n const expected = resource.slots[index];\n if (expected === undefined ||\n slot.slotId !== expected.slotId ||\n slot.evalId !== expected.evalId ||\n slot.attemptOrdinal !== expected.attemptOrdinal ||\n slot.executionIdentityDigest !== expected.executionIdentityDigest) {\n throw factsError(`Run ${resource.runId} expected Slot does not match its published Core`);\n }\n }\n}\n/** Strictly decodes all Core documents and Attachment JSON for one sealed Run. */\nexport function decodeInspectionRun(source: InspectionFactSource, physical: SealedRunCore): LoadedInspectionRun {\n const run = decodedRight(decodeRunDocument(parseJson(physical.runCoreBytes, \"Run Core\")), \"Run Core is invalid\");\n if (run.runId !== physical.runId) {\n throw factsError(\"Run Core identity does not match its sealed row\");\n }\n if (physical.slots.length !== run.expectedSlots.length) {\n throw factsError(\"Run Core Slot rows do not match its expected denominator\");\n }\n for (const [index, stored] of physical.slots.entries()) {\n const decoded = Schema.decodeUnknownResult(RecordSlotIdentitySchema, RecordExactParseOptions)(parseJson(stored.coreBytes, \"Slot Core\"));\n const slot = decodedRight(decoded, \"Slot Core is invalid\");\n const expected = run.expectedSlots[index];\n if (expected === undefined ||\n stored.ordinal !== index ||\n stored.slotId !== slot.slotId ||\n slot.slotId !== expected.slotId ||\n slot.evalId !== expected.evalId ||\n slot.attemptOrdinal !== expected.attemptOrdinal ||\n slot.executionIdentityDigest !== expected.executionIdentityDigest) {\n throw factsError(\"Slot Core does not match its sealed Run denominator\");\n }\n }\n const members = physical.members.map((stored) => {\n const member = decodedRight(decodeMemberDocument(parseJson(stored.coreBytes, \"Member Core\")), \"Member Core is invalid\");\n if (member.slotId !== stored.slotId ||\n member.action !== stored.action ||\n (member.attempt?.originRunId ?? undefined) !== stored.originRunId ||\n (member.attempt?.attemptId ?? undefined) !== stored.attemptId) {\n throw factsError(\"Member Core does not match its sealed row\");\n }\n return member;\n });\n const attempts = physical.attempts.map((stored) => {\n const attempt = decodedRight(decodeAttemptDocument(parseJson(stored.coreBytes, \"Attempt Core\")), \"Attempt Core is invalid\");\n if (attempt.attemptId !== stored.attemptId ||\n attempt.originRunId !== run.runId ||\n encodeAttemptLocator(attempt.attemptId) !== stored.attemptLocator) {\n throw factsError(\"Attempt Core does not match its sealed row\");\n }\n return attempt;\n });\n validateCoreRelations(run, members, attempts, physical.publicationManaged === true);\n const localAttemptIds = new Set<string>(attempts.map(({ attemptId }) => attemptId));\n const attachments = physical.attachments.map((attachment): DecodedInspectionAttachment => {\n if (attachment.ownerRunId !== run.runId ||\n attachment.ownerKind === \"run\" && attachment.ownerAttemptId !== undefined ||\n attachment.ownerKind === \"attempt\" &&\n (attachment.ownerAttemptId === undefined ||\n !localAttemptIds.has(attachment.ownerAttemptId))) {\n throw factsError(\"Attachment ownership does not match its sealed Run\");\n }\n return Object.freeze({\n physical: attachment,\n value: parseInspectionJson(attachment.canonicalBytes, \"Attachment\"),\n });\n });\n return Object.freeze({\n source,\n physical,\n run,\n members: Object.freeze(members),\n attempts: Object.freeze(attempts),\n attachments: Object.freeze(attachments),\n });\n}\n/** Resolves a public locator through the source's bounded exact index. */\nexport function resolveInspectionAttempt(source: InspectionFactSource, locator: string): ResolvedInspectionAttempt | undefined {\n const projection = source.findAttemptLocatorCandidates(locator, ATTEMPT_CANDIDATE_RUN_LIMIT);\n if (projection.candidates.length === 0)\n return undefined;\n if (projection.ambiguous)\n return undefined;\n const origins = projection.candidates.filter(({ relation }) => relation === \"origin\");\n if (origins.length !== 1) {\n throw factsError(`Attempt ${locator} indexed projection is invalid`);\n }\n const identity = origins[0]!;\n const runs = loadSelectedInspectionRuns(source, projection.candidates.map(({ runId }) => runId));\n const byRunId = new Map<string, LoadedInspectionRun>(runs.map((run) => [run.run.runId, run] as const));\n const origin = byRunId.get(identity.originRunId);\n if (origin === undefined) {\n throw factsError(`Attempt ${locator} origin is not a sealed Run`);\n }\n const attempt = origin.attempts.find((candidate) => candidate.attemptId === identity.attemptId &&\n candidate.originRunId === identity.originRunId &&\n encodeAttemptLocator(candidate.attemptId) === locator);\n if (attempt === undefined) {\n throw factsError(`Attempt ${locator} origin Core is invalid`);\n }\n const targets: InspectionAttemptTarget[] = [];\n const targetRunIds = new Set(projection.candidates.flatMap((candidate) => candidate.relation === \"target\" &&\n candidate.originRunId === identity.originRunId &&\n candidate.attemptId === identity.attemptId\n ? [candidate.runId]\n : []));\n for (const runId of targetRunIds) {\n const run = byRunId.get(runId);\n if (run === undefined) {\n throw factsError(`Attempt ${locator} target is not a sealed Run`);\n }\n const members = targetMembers(run, attempt);\n if (members.length === 0) {\n throw factsError(`Attempt ${locator} target Core is invalid`);\n }\n if (targets.length + members.length > ATTEMPT_TARGET_MEMBER_LIMIT) {\n throw factsError(`Attempt ${locator} exceeds its fixed target member limit`);\n }\n targets.push(...members.map((member) => Object.freeze({ run, member })));\n }\n return Object.freeze({\n attempt,\n origin,\n locator,\n targets: Object.freeze(targets),\n });\n}\n/** Resolves one already loaded target Member without consulting a platform index. */\nexport function resolveInspectionMemberAttempt(runs: readonly LoadedInspectionRun[], target: LoadedInspectionRun, member: MemberDocument): ResolvedInspectionAttempt | undefined {\n if (member.attempt === null)\n return undefined;\n const origin = runs.find(({ run }) => run.runId === member.attempt!.originRunId);\n const attempt = origin?.attempts.find((candidate) => candidate.attemptId === member.attempt!.attemptId &&\n candidate.originRunId === member.attempt!.originRunId);\n if (origin === undefined || attempt === undefined)\n return undefined;\n const locator = encodeAttemptLocator(attempt.attemptId);\n const targets = runs.flatMap((run) => targetMembers(run, attempt).map((candidate) => Object.freeze({ run, member: candidate })));\n if (!targets.some(({ run, member: candidate }) => run.run.runId === target.run.runId && candidate.slotId === member.slotId)) {\n return undefined;\n }\n return Object.freeze({\n attempt,\n origin,\n locator,\n targets: Object.freeze(targets),\n });\n}\nexport function attemptAttachment(resolved: ResolvedInspectionAttempt, family: string): DecodedInspectionAttachment | undefined {\n return resolved.origin.attachments.find(({ physical }) => physical.ownerKind === \"attempt\" &&\n physical.ownerAttemptId === resolved.attempt.attemptId &&\n physical.family === family);\n}\nexport function runAttachment(run: LoadedInspectionRun, family: string): DecodedInspectionAttachment | undefined {\n return run.attachments.find(({ physical }) => physical.ownerKind === \"run\" && physical.family === family);\n}\n/** Reads only the current logical Assertions family, preserving failure state. */\nexport function readInspectionAssertions(resolved: ResolvedInspectionAttempt): InspectionAssertionsRead {\n const attachment = attemptAttachment(resolved, NiceEvalRecordAttachments.assertions.family);\n if (attachment === undefined) {\n return Object.freeze({\n state: \"not-recorded\" as const,\n issues: Object.freeze([issue(\"assertions-not-recorded\", resolved.locator)]),\n });\n }\n if (attachment.physical.familyRevision !==\n NiceEvalCurrentRecordAttachments.assertions.revision) {\n return Object.freeze({\n state: \"unsupported\" as const,\n attachment,\n issues: Object.freeze([issue(\"assertions-revision-unsupported\", resolved.locator)]),\n });\n }\n const decoded = decodeCurrentAssertions(attachment);\n if (decoded === undefined) {\n return Object.freeze({\n state: \"failed\" as const,\n attachment,\n issues: Object.freeze([issue(\"assertions-current-invalid\", resolved.locator)]),\n });\n }\n return Object.freeze({\n state: \"available\" as const,\n attachment,\n value: decoded.value,\n contents: decoded.contents,\n issues: Object.freeze([]),\n });\n}\nfunction decodeCurrentAssertions(attachment: DecodedInspectionAttachment): {\n readonly value: AssertionsAttachment;\n readonly contents: WeakMap<object, PersistedContentMetadata>;\n} | undefined {\n const definition = NiceEvalRecordAttachments.assertions;\n const byHandle = new Map(attachment.physical.contents.map((content) => [content.logicalHandle, content]));\n const handles = new Map<string, RecordContentHandle>();\n const contents = new WeakMap<object, PersistedContentMetadata>();\n const usedContent = new Set<string>();\n const hydrated = hydrateRecordAttachmentCurrent(definition, attachment.value, {\n content: (token, declaration) => {\n const logicalHandle = exactMarker(token, \"$niceeval.record.content\");\n if (logicalHandle === undefined &&\n !hasOwnMarker(token, \"$niceeval.record.content\")) {\n return Result.succeed(undefined);\n }\n if (typeof logicalHandle !== \"string\") {\n return Result.fail({ code: \"current-content-bind-failed\" as const });\n }\n const metadata = byHandle.get(logicalHandle);\n if (metadata === undefined ||\n declaration.maximumBytes !== undefined &&\n metadata.byteLength > declaration.maximumBytes) {\n return Result.fail({ code: \"current-content-bind-failed\" as const });\n }\n let handle = handles.get(logicalHandle);\n if (handle === undefined) {\n handle = mintRecordContentHandle(declaration.kind);\n handles.set(logicalHandle, handle);\n contents.set(handle, metadata);\n }\n usedContent.add(logicalHandle);\n return Result.succeed(handle);\n },\n reference: (token, declaration) => {\n const marker = exactMarker(token, \"$niceeval.record.reference\");\n if (marker === undefined &&\n !hasOwnMarker(token, \"$niceeval.record.reference\")) {\n return Result.succeed(undefined);\n }\n if (typeof marker !== \"object\" || marker === null || Array.isArray(marker)) {\n return Result.fail({ code: \"current-reference-bind-failed\" as const });\n }\n const value = marker as Record<string, unknown>;\n if (Reflect.ownKeys(value).length !== 3 ||\n value.owner !== declaration.definition.owner ||\n value.family !== declaration.definition.family ||\n !(\"value\" in value)) {\n return Result.fail({ code: \"current-reference-bind-failed\" as const });\n }\n return Result.succeed(mintRecordAttachmentReference(RecordAttachmentReference.to(declaration.definition, declaration.valueSchema), value.value));\n },\n });\n if (Result.isFailure(hydrated) ||\n usedContent.size !== attachment.physical.contents.length) {\n return undefined;\n }\n const closure = enumerateRecordAttachmentClosure(definition, hydrated.success);\n if (Result.isFailure(closure))\n return undefined;\n const references = new Map<string, {\n readonly owner: string;\n readonly family: string;\n }>();\n for (const reference of closure.success.references) {\n const wire = recordAttachmentReferenceWire(reference);\n if (wire === undefined)\n return undefined;\n references.set(`${wire.owner}\\u0000${wire.family}`, Object.freeze({ owner: wire.owner, family: wire.family }));\n }\n const ordered = [...references.values()].sort((left, right) => compareText(left.owner, right.owner) || compareText(left.family, right.family));\n if (ordered.length !== attachment.physical.references.length)\n return undefined;\n for (let ordinal = 0; ordinal < ordered.length; ordinal += 1) {\n const logical = ordered[ordinal]!;\n const physical = attachment.physical.references[ordinal]!;\n if (physical.ordinal !== ordinal ||\n physical.owner !== logical.owner ||\n physical.family !== logical.family) {\n return undefined;\n }\n }\n return Object.freeze({ value: hydrated.success, contents });\n}\nfunction validateCoreRelations(run: RunDocument, members: readonly MemberDocument[], attempts: readonly AttemptDocument[], allowPendingSlots = false): void {\n const slots = new Map(run.expectedSlots.map((slot) => [slot.slotId, slot] as const));\n if (slots.size !== run.expectedSlots.length || (!allowPendingSlots && members.length !== slots.size) || members.length > slots.size) {\n throw factsError(\"Run Core does not close its expected Slot membership\");\n }\n const memberSlots = new Set<string>();\n for (const member of members) {\n if (!slots.has(member.slotId) || memberSlots.has(member.slotId)) {\n throw factsError(\"Run Core contains an invalid Member Slot\");\n }\n memberSlots.add(member.slotId);\n }\n const attemptIds = new Set<string>();\n for (const attempt of attempts) {\n const slot = slots.get(attempt.slotId);\n if (attemptIds.has(attempt.attemptId) ||\n slot === undefined ||\n attempt.evalId !== slot.evalId ||\n attempt.executionIdentityDigest !== slot.executionIdentityDigest) {\n throw factsError(\"Run Core contains an invalid origin Attempt\");\n }\n attemptIds.add(attempt.attemptId);\n }\n for (const member of members) {\n if (member.action === \"executed\" &&\n (member.attempt === null ||\n member.attempt.originRunId !== run.runId ||\n !attemptIds.has(member.attempt.attemptId))) {\n throw factsError(\"Executed Member does not name a local origin Attempt\");\n }\n }\n}\nfunction targetMembers(run: LoadedInspectionRun, attempt: AttemptDocument): readonly MemberDocument[] {\n return run.members.filter((member) => member.attempt !== null &&\n member.attempt.originRunId === attempt.originRunId &&\n member.attempt.attemptId === attempt.attemptId);\n}\nfunction requireCutoff(actual: SealedRunCutoff, expected: SealedRunCutoff): void {\n if (actual.identity !== expected.identity ||\n actual.runCount !== expected.runCount) {\n throw factsError(\"Inspection source changed its pinned sealed cutoff\");\n }\n}\nfunction parseJson(bytes: Uint8Array, owner: string): unknown {\n try {\n return JSON.parse(new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes)) as unknown;\n }\n catch (cause) {\n throw factsError(`${owner} is not canonical UTF-8 JSON`, cause);\n }\n}\nfunction parseInspectionJson(bytes: Uint8Array, owner: string): InspectionJson {\n const closed = closeInspectionJson(parseJson(bytes, owner));\n if (isInspectionCodecError(closed)) {\n throw factsError(`${owner} is invalid: ${closed.reason}`);\n }\n return closed;\n}\nfunction decodedRight<A>(decoded: Result.Result<A, unknown>, reason: string): A {\n if (Result.isFailure(decoded))\n throw factsError(reason, decoded.failure);\n return decoded.success;\n}\nfunction exactMarker(value: unknown, key: string): unknown | undefined {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return undefined;\n }\n const keys = Reflect.ownKeys(value);\n if (keys.length !== 1 || keys[0] !== key)\n return undefined;\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n return descriptor?.enumerable === true && \"value\" in descriptor\n ? descriptor.value\n : undefined;\n}\nfunction hasOwnMarker(value: unknown, key: string): boolean {\n return typeof value === \"object\" && value !== null && !Array.isArray(value) &&\n Object.prototype.hasOwnProperty.call(value, key);\n}\nfunction issue(code: string, locator: string): InspectionJson {\n return Object.freeze({ code, locator });\n}\nfunction factsError(reason: string, cause?: unknown): Error {\n return new Error(reason, cause === undefined ? undefined : { cause });\n}\nfunction compareText(left: string, right: string): number {\n return left < right ? -1 : left > right ? 1 : 0;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"facts.js","sourceRoot":"","sources":["facts.ts"],"names":[],"mappings":"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","sourcesContent":["// @concord-file ne-eval-inspection-facts-reader\n// @concord-implements docs/feature/inspection/README.md\n// @concord-implements docs/feature/inspection/architecture.md\n// @concord-implements docs/feature/inspection/use-case/inspection-check-completeness.md\nimport { Result, Schema } from \"effect\";\nimport { encodeAttemptLocator } from \"../attempt-locator.ts\";\nimport { mintRecordContentHandle, type RecordContentHandle, } from \"../record/attachment/content.ts\";\nimport { enumerateRecordAttachmentClosure, hydrateRecordAttachmentCurrent, mintRecordAttachmentReference, RecordAttachmentReference, recordAttachmentReferenceWire, } from \"../record/attachment/protocol.ts\";\nimport { decodeAttemptDocument, decodeMemberDocument, decodeRunDocument, RecordExactParseOptions, RecordSlotIdentitySchema, } from \"../record/codec/core.ts\";\nimport { NiceEvalCurrentRecordAttachments, NiceEvalRecordAttachments, } from \"../record/family/current.ts\";\nimport type { AssertionsAttachment } from \"../record/family/assertions/definition.ts\";\nimport type { AttemptDocument, MemberDocument, RunDocument, } from \"../record/model/core.ts\";\nimport type { PersistedContentMetadata, SealedAttachmentMetadata, SealedRunCore, SealedRunCutoff, SealedRunSummary, } from \"../record/sqlite/types.ts\";\nimport { closeInspectionJson, isInspectionCodecError, type InspectionJson, } from \"./codec.ts\";\nimport type { InspectionFactSource } from \"./source.ts\";\nimport type { ReadableRunResource } from \"../run/storage/types.ts\";\nexport interface DecodedInspectionAttachment {\n readonly physical: SealedAttachmentMetadata;\n readonly value: InspectionJson;\n}\n/** A strictly decoded sealed Run with its browser-neutral reader capability. */\nexport interface LoadedInspectionRun {\n readonly source: InspectionFactSource;\n readonly physical: SealedRunCore;\n readonly run: RunDocument;\n readonly members: readonly MemberDocument[];\n readonly attempts: readonly AttemptDocument[];\n readonly attachments: readonly DecodedInspectionAttachment[];\n}\n/** Exact lifecycle resource plus its optional published Core at one cutoff. */\nexport interface LoadedInspectionRunResource {\n readonly source: InspectionFactSource;\n readonly resource: ReadableRunResource;\n readonly published?: LoadedInspectionRun;\n}\nexport interface InspectionAttemptTarget {\n readonly run: LoadedInspectionRun;\n readonly member: MemberDocument;\n}\n/** Exact origin Attempt plus every target membership visible to the resolver. */\nexport interface ResolvedInspectionAttempt {\n readonly attempt: AttemptDocument;\n readonly origin: LoadedInspectionRun;\n readonly locator: string;\n readonly targets: readonly InspectionAttemptTarget[];\n}\nexport type InspectionAssertionsRead = {\n readonly state: \"available\";\n readonly attachment: DecodedInspectionAttachment;\n readonly value: AssertionsAttachment;\n readonly contents: WeakMap<object, PersistedContentMetadata>;\n readonly issues: readonly InspectionJson[];\n} | {\n readonly state: \"not-recorded\" | \"unsupported\" | \"failed\";\n readonly attachment?: DecodedInspectionAttachment;\n readonly issues: readonly InspectionJson[];\n};\nconst RUN_PAGE_SIZE = 100;\nconst ATTEMPT_CANDIDATE_RUN_LIMIT = 64;\nconst ATTEMPT_TARGET_MEMBER_LIMIT = 256;\n/**\n * Pins the source cutoff, exhausts the fixed Run-summary pagination, then\n * reads and strictly decodes every Run Core in that exact sealed generation.\n */\n// @concord-code ne-eval-inspection-load-runs\n// @concord-implements docs/feature/inspection/architecture.md\n// @concord-implements docs/feature/inspection/use-case/inspection-check-completeness.md\nexport function loadInspectionRuns(source: InspectionFactSource): readonly LoadedInspectionRun[] {\n const cutoff = source.cutoff();\n const summaries: SealedRunSummary[] = [];\n const seen = new Set<string>();\n let afterRunId = \"\";\n for (;;) {\n const page = source.readSealedRunSummaryPage(afterRunId, RUN_PAGE_SIZE, cutoff.identity);\n requireCutoff(page.cutoff, cutoff);\n if (page.afterRunId !== afterRunId) {\n throw factsError(\"Run pagination returned a different cursor\");\n }\n let previous = afterRunId;\n for (const summary of page.summaries) {\n if (summary.runId <= previous || seen.has(summary.runId)) {\n throw factsError(\"Run pagination is not strictly ordered\");\n }\n seen.add(summary.runId);\n summaries.push(summary);\n previous = summary.runId;\n }\n if (page.nextAfterRunId === null)\n break;\n if (page.summaries.length === 0 ||\n page.nextAfterRunId !== page.summaries.at(-1)!.runId ||\n page.nextAfterRunId === afterRunId) {\n throw factsError(\"Run pagination returned an invalid continuation cursor\");\n }\n afterRunId = page.nextAfterRunId;\n }\n if (summaries.length !== cutoff.runCount) {\n throw factsError(\"Run pagination did not close the pinned sealed cutoff\");\n }\n return Object.freeze(summaries.map((summary) => {\n const physical = source.readSealedRunCore(summary.runId);\n if (physical === undefined) {\n throw factsError(`Sealed Run ${summary.runId} disappeared from the pinned cutoff`);\n }\n return decodeInspectionRun(source, physical);\n }));\n}\n/** Reads a bounded, explicit Run selection without changing its caller order. */\nexport function loadSelectedInspectionRuns(source: InspectionFactSource, runIds: readonly string[]): readonly LoadedInspectionRun[] {\n const cutoff = source.cutoff();\n const loaded: LoadedInspectionRun[] = [];\n for (const runId of new Set(runIds)) {\n const physical = source.readSealedRunCore(runId);\n if (physical !== undefined)\n loaded.push(decodeInspectionRun(source, physical));\n }\n requireCutoff(source.cutoff(), cutoff);\n return Object.freeze(loaded);\n}\n/** Reads Run create/close facts even when no Attempt Core has been published. */\nexport function loadInspectionRunResource(source: InspectionFactSource, runId: string): LoadedInspectionRunResource | undefined {\n const cutoff = source.cutoff();\n const resource = source.readRunResource(runId);\n if (resource === undefined)\n return undefined;\n const physical = source.readSealedRunCore(runId);\n const published = physical === undefined\n ? undefined\n : decodeInspectionRun(source, physical);\n requireCutoff(source.cutoff(), cutoff);\n if (resource.published > 0 && published === undefined) {\n throw factsError(`Run ${runId} has published bindings without a readable Core`);\n }\n if (published !== undefined)\n validateRunResourceCore(resource, published);\n return Object.freeze({ source, resource, ...(published === undefined ? {} : { published }) });\n}\nfunction validateRunResourceCore(resource: ReadableRunResource, published: LoadedInspectionRun): void {\n const run = published.run;\n if (run.runId !== resource.runId ||\n run.experimentId !== resource.experimentId ||\n run.startedAt !== Date.parse(resource.startedAt) ||\n run.expectedSlots.length !== resource.slots.length) {\n throw factsError(`Run ${resource.runId} lifecycle resource does not match its published Core`);\n }\n for (const [index, slot] of run.expectedSlots.entries()) {\n const expected = resource.slots[index];\n if (expected === undefined ||\n slot.slotId !== expected.slotId ||\n slot.evalId !== expected.evalId ||\n slot.attemptOrdinal !== expected.attemptOrdinal ||\n slot.executionIdentityDigest !== expected.executionIdentityDigest) {\n throw factsError(`Run ${resource.runId} expected Slot does not match its published Core`);\n }\n }\n}\n/** Strictly decodes all Core documents and Attachment JSON for one sealed Run. */\nexport function decodeInspectionRun(source: InspectionFactSource, physical: SealedRunCore): LoadedInspectionRun {\n const run = decodedRight(decodeRunDocument(parseJson(physical.runCoreBytes, \"Run Core\")), \"Run Core is invalid\");\n if (run.runId !== physical.runId) {\n throw factsError(\"Run Core identity does not match its sealed row\");\n }\n if (physical.slots.length !== run.expectedSlots.length) {\n throw factsError(\"Run Core Slot rows do not match its expected denominator\");\n }\n for (const [index, stored] of physical.slots.entries()) {\n const decoded = Schema.decodeUnknownResult(RecordSlotIdentitySchema, RecordExactParseOptions)(parseJson(stored.coreBytes, \"Slot Core\"));\n const slot = decodedRight(decoded, \"Slot Core is invalid\");\n const expected = run.expectedSlots[index];\n if (expected === undefined ||\n stored.ordinal !== index ||\n stored.slotId !== slot.slotId ||\n slot.slotId !== expected.slotId ||\n slot.evalId !== expected.evalId ||\n slot.attemptOrdinal !== expected.attemptOrdinal ||\n slot.executionIdentityDigest !== expected.executionIdentityDigest) {\n throw factsError(\"Slot Core does not match its sealed Run denominator\");\n }\n }\n const members = physical.members.map((stored) => {\n const member = decodedRight(decodeMemberDocument(parseJson(stored.coreBytes, \"Member Core\")), \"Member Core is invalid\");\n if (member.slotId !== stored.slotId ||\n member.action !== stored.action ||\n (member.attempt?.originRunId ?? undefined) !== stored.originRunId ||\n (member.attempt?.attemptId ?? undefined) !== stored.attemptId) {\n throw factsError(\"Member Core does not match its sealed row\");\n }\n return member;\n });\n const attempts = physical.attempts.map((stored) => {\n const attempt = decodedRight(decodeAttemptDocument(parseJson(stored.coreBytes, \"Attempt Core\")), \"Attempt Core is invalid\");\n if (attempt.attemptId !== stored.attemptId ||\n attempt.originRunId !== run.runId ||\n encodeAttemptLocator(attempt.attemptId) !== stored.attemptLocator) {\n throw factsError(\"Attempt Core does not match its sealed row\");\n }\n return attempt;\n });\n validateCoreRelations(run, members, attempts, physical.publicationManaged === true);\n const localAttemptIds = new Set<string>(attempts.map(({ attemptId }) => attemptId));\n const attachments = physical.attachments.map((attachment): DecodedInspectionAttachment => {\n if (attachment.ownerRunId !== run.runId ||\n attachment.ownerKind === \"run\" && attachment.ownerAttemptId !== undefined ||\n attachment.ownerKind === \"attempt\" &&\n (attachment.ownerAttemptId === undefined ||\n !localAttemptIds.has(attachment.ownerAttemptId))) {\n throw factsError(\"Attachment ownership does not match its sealed Run\");\n }\n return Object.freeze({\n physical: attachment,\n value: parseInspectionJson(attachment.canonicalBytes, \"Attachment\"),\n });\n });\n return Object.freeze({\n source,\n physical,\n run,\n members: Object.freeze(members),\n attempts: Object.freeze(attempts),\n attachments: Object.freeze(attachments),\n });\n}\n/** Resolves a public locator through the source's bounded exact index. */\n// @concord-code ne-eval-inspection-resolve-attempt\n// @concord-implements docs/feature/inspection/architecture.md\nexport function resolveInspectionAttempt(source: InspectionFactSource, locator: string): ResolvedInspectionAttempt | undefined {\n const projection = source.findAttemptLocatorCandidates(locator, ATTEMPT_CANDIDATE_RUN_LIMIT);\n if (projection.candidates.length === 0)\n return undefined;\n if (projection.ambiguous)\n return undefined;\n const origins = projection.candidates.filter(({ relation }) => relation === \"origin\");\n if (origins.length !== 1) {\n throw factsError(`Attempt ${locator} indexed projection is invalid`);\n }\n const identity = origins[0]!;\n const runs = loadSelectedInspectionRuns(source, projection.candidates.map(({ runId }) => runId));\n const byRunId = new Map<string, LoadedInspectionRun>(runs.map((run) => [run.run.runId, run] as const));\n const origin = byRunId.get(identity.originRunId);\n if (origin === undefined) {\n throw factsError(`Attempt ${locator} origin is not a sealed Run`);\n }\n const attempt = origin.attempts.find((candidate) => candidate.attemptId === identity.attemptId &&\n candidate.originRunId === identity.originRunId &&\n encodeAttemptLocator(candidate.attemptId) === locator);\n if (attempt === undefined) {\n throw factsError(`Attempt ${locator} origin Core is invalid`);\n }\n const targets: InspectionAttemptTarget[] = [];\n const targetRunIds = new Set(projection.candidates.flatMap((candidate) => candidate.relation === \"target\" &&\n candidate.originRunId === identity.originRunId &&\n candidate.attemptId === identity.attemptId\n ? [candidate.runId]\n : []));\n for (const runId of targetRunIds) {\n const run = byRunId.get(runId);\n if (run === undefined) {\n throw factsError(`Attempt ${locator} target is not a sealed Run`);\n }\n const members = targetMembers(run, attempt);\n if (members.length === 0) {\n throw factsError(`Attempt ${locator} target Core is invalid`);\n }\n if (targets.length + members.length > ATTEMPT_TARGET_MEMBER_LIMIT) {\n throw factsError(`Attempt ${locator} exceeds its fixed target member limit`);\n }\n targets.push(...members.map((member) => Object.freeze({ run, member })));\n }\n return Object.freeze({\n attempt,\n origin,\n locator,\n targets: Object.freeze(targets),\n });\n}\n/** Resolves one already loaded target Member without consulting a platform index. */\nexport function resolveInspectionMemberAttempt(runs: readonly LoadedInspectionRun[], target: LoadedInspectionRun, member: MemberDocument): ResolvedInspectionAttempt | undefined {\n if (member.attempt === null)\n return undefined;\n const origin = runs.find(({ run }) => run.runId === member.attempt!.originRunId);\n const attempt = origin?.attempts.find((candidate) => candidate.attemptId === member.attempt!.attemptId &&\n candidate.originRunId === member.attempt!.originRunId);\n if (origin === undefined || attempt === undefined)\n return undefined;\n const locator = encodeAttemptLocator(attempt.attemptId);\n const targets = runs.flatMap((run) => targetMembers(run, attempt).map((candidate) => Object.freeze({ run, member: candidate })));\n if (!targets.some(({ run, member: candidate }) => run.run.runId === target.run.runId && candidate.slotId === member.slotId)) {\n return undefined;\n }\n return Object.freeze({\n attempt,\n origin,\n locator,\n targets: Object.freeze(targets),\n });\n}\nexport function attemptAttachment(resolved: ResolvedInspectionAttempt, family: string): DecodedInspectionAttachment | undefined {\n return resolved.origin.attachments.find(({ physical }) => physical.ownerKind === \"attempt\" &&\n physical.ownerAttemptId === resolved.attempt.attemptId &&\n physical.family === family);\n}\nexport function runAttachment(run: LoadedInspectionRun, family: string): DecodedInspectionAttachment | undefined {\n return run.attachments.find(({ physical }) => physical.ownerKind === \"run\" && physical.family === family);\n}\n/** Reads only the current logical Assertions family, preserving failure state. */\n// @concord-code ne-eval-inspection-read-assertions\n// @concord-implements docs/feature/assertions/README.md\n// @concord-implements docs/feature/inspection/README.md\nexport function readInspectionAssertions(resolved: ResolvedInspectionAttempt): InspectionAssertionsRead {\n const attachment = attemptAttachment(resolved, NiceEvalRecordAttachments.assertions.family);\n if (attachment === undefined) {\n return Object.freeze({\n state: \"not-recorded\" as const,\n issues: Object.freeze([issue(\"assertions-not-recorded\", resolved.locator)]),\n });\n }\n if (attachment.physical.familyRevision !==\n NiceEvalCurrentRecordAttachments.assertions.revision) {\n return Object.freeze({\n state: \"unsupported\" as const,\n attachment,\n issues: Object.freeze([issue(\"assertions-revision-unsupported\", resolved.locator)]),\n });\n }\n const decoded = decodeCurrentAssertions(attachment);\n if (decoded === undefined) {\n return Object.freeze({\n state: \"failed\" as const,\n attachment,\n issues: Object.freeze([issue(\"assertions-current-invalid\", resolved.locator)]),\n });\n }\n return Object.freeze({\n state: \"available\" as const,\n attachment,\n value: decoded.value,\n contents: decoded.contents,\n issues: Object.freeze([]),\n });\n}\nfunction decodeCurrentAssertions(attachment: DecodedInspectionAttachment): {\n readonly value: AssertionsAttachment;\n readonly contents: WeakMap<object, PersistedContentMetadata>;\n} | undefined {\n const definition = NiceEvalRecordAttachments.assertions;\n const byHandle = new Map(attachment.physical.contents.map((content) => [content.logicalHandle, content]));\n const handles = new Map<string, RecordContentHandle>();\n const contents = new WeakMap<object, PersistedContentMetadata>();\n const usedContent = new Set<string>();\n const hydrated = hydrateRecordAttachmentCurrent(definition, attachment.value, {\n content: (token, declaration) => {\n const logicalHandle = exactMarker(token, \"$niceeval.record.content\");\n if (logicalHandle === undefined &&\n !hasOwnMarker(token, \"$niceeval.record.content\")) {\n return Result.succeed(undefined);\n }\n if (typeof logicalHandle !== \"string\") {\n return Result.fail({ code: \"current-content-bind-failed\" as const });\n }\n const metadata = byHandle.get(logicalHandle);\n if (metadata === undefined ||\n declaration.maximumBytes !== undefined &&\n metadata.byteLength > declaration.maximumBytes) {\n return Result.fail({ code: \"current-content-bind-failed\" as const });\n }\n let handle = handles.get(logicalHandle);\n if (handle === undefined) {\n handle = mintRecordContentHandle(declaration.kind);\n handles.set(logicalHandle, handle);\n contents.set(handle, metadata);\n }\n usedContent.add(logicalHandle);\n return Result.succeed(handle);\n },\n reference: (token, declaration) => {\n const marker = exactMarker(token, \"$niceeval.record.reference\");\n if (marker === undefined &&\n !hasOwnMarker(token, \"$niceeval.record.reference\")) {\n return Result.succeed(undefined);\n }\n if (typeof marker !== \"object\" || marker === null || Array.isArray(marker)) {\n return Result.fail({ code: \"current-reference-bind-failed\" as const });\n }\n const value = marker as Record<string, unknown>;\n if (Reflect.ownKeys(value).length !== 3 ||\n value.owner !== declaration.definition.owner ||\n value.family !== declaration.definition.family ||\n !(\"value\" in value)) {\n return Result.fail({ code: \"current-reference-bind-failed\" as const });\n }\n return Result.succeed(mintRecordAttachmentReference(RecordAttachmentReference.to(declaration.definition, declaration.valueSchema), value.value));\n },\n });\n if (Result.isFailure(hydrated) ||\n usedContent.size !== attachment.physical.contents.length) {\n return undefined;\n }\n const closure = enumerateRecordAttachmentClosure(definition, hydrated.success);\n if (Result.isFailure(closure))\n return undefined;\n const references = new Map<string, {\n readonly owner: string;\n readonly family: string;\n }>();\n for (const reference of closure.success.references) {\n const wire = recordAttachmentReferenceWire(reference);\n if (wire === undefined)\n return undefined;\n references.set(`${wire.owner}\\u0000${wire.family}`, Object.freeze({ owner: wire.owner, family: wire.family }));\n }\n const ordered = [...references.values()].sort((left, right) => compareText(left.owner, right.owner) || compareText(left.family, right.family));\n if (ordered.length !== attachment.physical.references.length)\n return undefined;\n for (let ordinal = 0; ordinal < ordered.length; ordinal += 1) {\n const logical = ordered[ordinal]!;\n const physical = attachment.physical.references[ordinal]!;\n if (physical.ordinal !== ordinal ||\n physical.owner !== logical.owner ||\n physical.family !== logical.family) {\n return undefined;\n }\n }\n return Object.freeze({ value: hydrated.success, contents });\n}\nfunction validateCoreRelations(run: RunDocument, members: readonly MemberDocument[], attempts: readonly AttemptDocument[], allowPendingSlots = false): void {\n const slots = new Map(run.expectedSlots.map((slot) => [slot.slotId, slot] as const));\n if (slots.size !== run.expectedSlots.length || (!allowPendingSlots && members.length !== slots.size) || members.length > slots.size) {\n throw factsError(\"Run Core does not close its expected Slot membership\");\n }\n const memberSlots = new Set<string>();\n for (const member of members) {\n if (!slots.has(member.slotId) || memberSlots.has(member.slotId)) {\n throw factsError(\"Run Core contains an invalid Member Slot\");\n }\n memberSlots.add(member.slotId);\n }\n const attemptIds = new Set<string>();\n for (const attempt of attempts) {\n const slot = slots.get(attempt.slotId);\n if (attemptIds.has(attempt.attemptId) ||\n slot === undefined ||\n attempt.evalId !== slot.evalId ||\n attempt.executionIdentityDigest !== slot.executionIdentityDigest) {\n throw factsError(\"Run Core contains an invalid origin Attempt\");\n }\n attemptIds.add(attempt.attemptId);\n }\n for (const member of members) {\n if (member.action === \"executed\" &&\n (member.attempt === null ||\n member.attempt.originRunId !== run.runId ||\n !attemptIds.has(member.attempt.attemptId))) {\n throw factsError(\"Executed Member does not name a local origin Attempt\");\n }\n }\n}\nfunction targetMembers(run: LoadedInspectionRun, attempt: AttemptDocument): readonly MemberDocument[] {\n return run.members.filter((member) => member.attempt !== null &&\n member.attempt.originRunId === attempt.originRunId &&\n member.attempt.attemptId === attempt.attemptId);\n}\nfunction requireCutoff(actual: SealedRunCutoff, expected: SealedRunCutoff): void {\n if (actual.identity !== expected.identity ||\n actual.runCount !== expected.runCount) {\n throw factsError(\"Inspection source changed its pinned sealed cutoff\");\n }\n}\nfunction parseJson(bytes: Uint8Array, owner: string): unknown {\n try {\n return JSON.parse(new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes)) as unknown;\n }\n catch (cause) {\n throw factsError(`${owner} is not canonical UTF-8 JSON`, cause);\n }\n}\nfunction parseInspectionJson(bytes: Uint8Array, owner: string): InspectionJson {\n const closed = closeInspectionJson(parseJson(bytes, owner));\n if (isInspectionCodecError(closed)) {\n throw factsError(`${owner} is invalid: ${closed.reason}`);\n }\n return closed;\n}\nfunction decodedRight<A>(decoded: Result.Result<A, unknown>, reason: string): A {\n if (Result.isFailure(decoded))\n throw factsError(reason, decoded.failure);\n return decoded.success;\n}\nfunction exactMarker(value: unknown, key: string): unknown | undefined {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return undefined;\n }\n const keys = Reflect.ownKeys(value);\n if (keys.length !== 1 || keys[0] !== key)\n return undefined;\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n return descriptor?.enumerable === true && \"value\" in descriptor\n ? descriptor.value\n : undefined;\n}\nfunction hasOwnMarker(value: unknown, key: string): boolean {\n return typeof value === \"object\" && value !== null && !Array.isArray(value) &&\n Object.prototype.hasOwnProperty.call(value, key);\n}\nfunction issue(code: string, locator: string): InspectionJson {\n return Object.freeze({ code, locator });\n}\nfunction factsError(reason: string, cause?: unknown): Error {\n return new Error(reason, cause === undefined ? undefined : { cause });\n}\nfunction compareText(left: string, right: string): number {\n return left < right ? -1 : left > right ? 1 : 0;\n}\n"]}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.INSPECTION_RESULT_BYTE_LIMIT = void 0;
|
|
3
|
+
exports.INSPECTION_ASSERTION_DETAIL_BYTE_LIMIT = exports.INSPECTION_EXPERIMENT_RESULT_BYTE_LIMIT = exports.INSPECTION_RESULT_BYTE_LIMIT = void 0;
|
|
4
4
|
/** Maximum UTF-8 JSON bytes for any one fixed operation result field. */
|
|
5
5
|
exports.INSPECTION_RESULT_BYTE_LIMIT = 512 * 1024;
|
|
6
|
+
/** Complete Experiment aggregates and cells include per-Assertion coverage. */
|
|
7
|
+
exports.INSPECTION_EXPERIMENT_RESULT_BYTE_LIMIT = 4 * 1024 * 1024;
|
|
8
|
+
/** Full source content, Judge audit and base64 encoding for assertion detail only. */
|
|
9
|
+
exports.INSPECTION_ASSERTION_DETAIL_BYTE_LIMIT = 32 * 1024 * 1024;
|
|
6
10
|
//# sourceMappingURL=limits.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limits.js","sourceRoot":"","sources":["limits.ts"],"names":[],"mappings":";;;AAAA,yEAAyE;AAC5D,QAAA,4BAA4B,GAAG,GAAG,GAAG,IAAI,CAAC","sourcesContent":["/** Maximum UTF-8 JSON bytes for any one fixed operation result field. */\nexport const INSPECTION_RESULT_BYTE_LIMIT = 512 * 1024;\n"]}
|
|
1
|
+
{"version":3,"file":"limits.js","sourceRoot":"","sources":["limits.ts"],"names":[],"mappings":";;;AAAA,yEAAyE;AAC5D,QAAA,4BAA4B,GAAG,GAAG,GAAG,IAAI,CAAC;AACvD,+EAA+E;AAClE,QAAA,uCAAuC,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AACvE,sFAAsF;AACzE,QAAA,sCAAsC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC","sourcesContent":["/** Maximum UTF-8 JSON bytes for any one fixed operation result field. */\nexport const INSPECTION_RESULT_BYTE_LIMIT = 512 * 1024;\n/** Complete Experiment aggregates and cells include per-Assertion coverage. */\nexport const INSPECTION_EXPERIMENT_RESULT_BYTE_LIMIT = 4 * 1024 * 1024;\n/** Full source content, Judge audit and base64 encoding for assertion detail only. */\nexport const INSPECTION_ASSERTION_DETAIL_BYTE_LIMIT = 32 * 1024 * 1024;\n"]}
|
|
@@ -1,2 +1,6 @@
|
|
|
1
1
|
/** Maximum UTF-8 JSON bytes for any one fixed operation result field. */
|
|
2
2
|
export declare const INSPECTION_RESULT_BYTE_LIMIT: number;
|
|
3
|
+
/** Complete Experiment aggregates and cells include per-Assertion coverage. */
|
|
4
|
+
export declare const INSPECTION_EXPERIMENT_RESULT_BYTE_LIMIT: number;
|
|
5
|
+
/** Full source content, Judge audit and base64 encoding for assertion detail only. */
|
|
6
|
+
export declare const INSPECTION_ASSERTION_DETAIL_BYTE_LIMIT: number;
|
|
@@ -1,2 +1,6 @@
|
|
|
1
1
|
/** Maximum UTF-8 JSON bytes for any one fixed operation result field. */
|
|
2
2
|
export declare const INSPECTION_RESULT_BYTE_LIMIT: number;
|
|
3
|
+
/** Complete Experiment aggregates and cells include per-Assertion coverage. */
|
|
4
|
+
export declare const INSPECTION_EXPERIMENT_RESULT_BYTE_LIMIT: number;
|
|
5
|
+
/** Full source content, Judge audit and base64 encoding for assertion detail only. */
|
|
6
|
+
export declare const INSPECTION_ASSERTION_DETAIL_BYTE_LIMIT: number;
|
|
@@ -1,2 +1,6 @@
|
|
|
1
1
|
/** Maximum UTF-8 JSON bytes for any one fixed operation result field. */
|
|
2
2
|
export declare const INSPECTION_RESULT_BYTE_LIMIT: number;
|
|
3
|
+
/** Complete Experiment aggregates and cells include per-Assertion coverage. */
|
|
4
|
+
export declare const INSPECTION_EXPERIMENT_RESULT_BYTE_LIMIT: number;
|
|
5
|
+
/** Full source content, Judge audit and base64 encoding for assertion detail only. */
|
|
6
|
+
export declare const INSPECTION_ASSERTION_DETAIL_BYTE_LIMIT: number;
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { createRequire as __niceevalCreateRequire } from "node:module";
|
|
2
2
|
const __niceevalRequire = __niceevalCreateRequire(import.meta.url);
|
|
3
3
|
const __niceevalCanonical = __niceevalRequire("./limits.cjs");
|
|
4
|
-
const __niceevalExport0 = __niceevalCanonical["
|
|
5
|
-
export { __niceevalExport0 as
|
|
4
|
+
const __niceevalExport0 = __niceevalCanonical["INSPECTION_ASSERTION_DETAIL_BYTE_LIMIT"];
|
|
5
|
+
export { __niceevalExport0 as INSPECTION_ASSERTION_DETAIL_BYTE_LIMIT };
|
|
6
|
+
const __niceevalExport1 = __niceevalCanonical["INSPECTION_EXPERIMENT_RESULT_BYTE_LIMIT"];
|
|
7
|
+
export { __niceevalExport1 as INSPECTION_EXPERIMENT_RESULT_BYTE_LIMIT };
|
|
8
|
+
const __niceevalExport2 = __niceevalCanonical["INSPECTION_RESULT_BYTE_LIMIT"];
|
|
9
|
+
export { __niceevalExport2 as INSPECTION_RESULT_BYTE_LIMIT };
|
|
6
10
|
//# sourceMappingURL=limits.js.map
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.selectInspectionOverview = selectInspectionOverview;
|
|
4
|
+
exports.aggregateInspectionCurrentSlots = aggregateInspectionCurrentSlots;
|
|
5
|
+
// @concord-file ne-eval-inspection-overview
|
|
6
|
+
// @concord-implements docs/feature/inspection/README.md
|
|
7
|
+
// @concord-implements docs/feature/inspection/use-case/inspection-compare-quality-cost.md
|
|
8
|
+
// @concord-implements docs/feature/insight/README.md
|
|
4
9
|
const verdict_ts_1 = require("../eval/record/verdict.cjs");
|
|
5
10
|
const effect_1 = require("effect");
|
|
6
11
|
const current_ts_1 = require("../record/family/current.cjs");
|
|
@@ -11,19 +16,49 @@ const trace_ts_1 = require("./trace.cjs");
|
|
|
11
16
|
* Selects the latest sealed occurrence of every Experiment/Eval/ordinal Slot
|
|
12
17
|
* and closes the shared machine/Insight Overview without platform APIs.
|
|
13
18
|
*/
|
|
19
|
+
// @concord-code ne-eval-inspection-select-overview
|
|
20
|
+
// @concord-implements docs/feature/inspection/use-case/inspection-compare-quality-cost.md
|
|
21
|
+
// @concord-implements docs/feature/insight/README.md
|
|
14
22
|
function selectInspectionOverview(facts, supportingRuns) {
|
|
15
23
|
const runs = isLoadedInspectionRuns(facts) ? facts : (0, facts_ts_1.loadInspectionRuns)(facts);
|
|
16
24
|
const selected = selectLatestSlots(runs, supportingRuns ?? runs);
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
25
|
+
return aggregateSelectedSlots(selected);
|
|
26
|
+
}
|
|
27
|
+
function aggregateSelectedSlots(selected) {
|
|
28
|
+
const cells = groupSelectedSlots(selected, ({ experimentId, evalId }) => `${experimentId}\u0000${evalId}`)
|
|
29
|
+
.map((slots) => makeCell(slots, inspectionLabelKeys(selected.filter(({ experimentId }) => experimentId === slots[0]?.experimentId))));
|
|
30
|
+
const experiments = groupSelectedSlots(selected, ({ experimentId }) => experimentId)
|
|
31
|
+
.map((slots) => makeExperiment(slots, cells.filter(({ experimentId }) => experimentId === slots[0]?.experimentId), inspectionLabelKeys(slots)));
|
|
21
32
|
return closeOverview({
|
|
22
33
|
totals: aggregate(selected, scoreFromCells(cells)),
|
|
23
34
|
experiments,
|
|
24
35
|
cells,
|
|
25
36
|
});
|
|
26
37
|
}
|
|
38
|
+
/** Aggregate exactly the Host-assessed current positions; gaps add no value. */
|
|
39
|
+
function aggregateInspectionCurrentSlots(inputs) {
|
|
40
|
+
return aggregateSelectedSlots(inputs.map((input) => {
|
|
41
|
+
const recorded = input.recorded;
|
|
42
|
+
return Object.freeze({
|
|
43
|
+
...input,
|
|
44
|
+
...(recorded ?? {}),
|
|
45
|
+
member: recorded?.member,
|
|
46
|
+
resolved: recorded?.resolved,
|
|
47
|
+
analysis: recorded === undefined ? Object.freeze({
|
|
48
|
+
assertionsState: "attempt-missing",
|
|
49
|
+
evaluationKind: input.evaluationKind === "score" ? "points" : "pass",
|
|
50
|
+
verdict: null,
|
|
51
|
+
score: emptyAttemptScore(),
|
|
52
|
+
costUSD: unavailableAttemptCost(),
|
|
53
|
+
durationMs: unavailableOperationalMetric(),
|
|
54
|
+
tokens: unavailableOperationalMetric(),
|
|
55
|
+
coverage: Object.freeze([]),
|
|
56
|
+
issues: Object.freeze([]),
|
|
57
|
+
ref: null,
|
|
58
|
+
}) : analyzeAttempt(recorded.resolved, recorded.target, recorded.member, recorded.slot),
|
|
59
|
+
});
|
|
60
|
+
}));
|
|
61
|
+
}
|
|
27
62
|
function isLoadedInspectionRuns(facts) {
|
|
28
63
|
return Array.isArray(facts);
|
|
29
64
|
}
|
|
@@ -49,6 +84,12 @@ function selectLatestSlots(runs, resolutionRuns = runs) {
|
|
|
49
84
|
? undefined
|
|
50
85
|
: (0, facts_ts_1.resolveInspectionMemberAttempt)(resolutionRuns, target, member);
|
|
51
86
|
return Object.freeze({
|
|
87
|
+
experimentId: target.run.experimentId,
|
|
88
|
+
evalId: slot.evalId,
|
|
89
|
+
attemptOrdinal: slot.attemptOrdinal,
|
|
90
|
+
adapter: target.run.context.execution.adapter,
|
|
91
|
+
model: target.run.context.execution.model,
|
|
92
|
+
labels: target.run.context.labels,
|
|
52
93
|
target,
|
|
53
94
|
slot,
|
|
54
95
|
member,
|
|
@@ -160,20 +201,22 @@ function makeCell(slots, labelKeys) {
|
|
|
160
201
|
if (first === undefined)
|
|
161
202
|
throw new Error("Overview cell cannot be empty");
|
|
162
203
|
return Object.freeze({
|
|
163
|
-
experimentId: first.
|
|
164
|
-
evalId: first.
|
|
165
|
-
groupPath: groupPath(first.
|
|
204
|
+
experimentId: first.experimentId,
|
|
205
|
+
evalId: first.evalId,
|
|
206
|
+
groupPath: groupPath(first.evalId),
|
|
166
207
|
...aggregate(slots, scoreForCell(slots)),
|
|
167
|
-
members: Object.freeze(slots.
|
|
208
|
+
members: Object.freeze(slots.flatMap((selected) => {
|
|
209
|
+
if (selected.target === undefined || selected.slot === undefined)
|
|
210
|
+
return [];
|
|
168
211
|
const resolved = selected.resolved;
|
|
169
|
-
return Object.freeze({
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
212
|
+
return [Object.freeze({
|
|
213
|
+
runId: selected.target.run.runId,
|
|
214
|
+
slotId: selected.slot.slotId,
|
|
215
|
+
evalId: selected.slot.evalId,
|
|
216
|
+
attemptOrdinal: selected.slot.attemptOrdinal,
|
|
217
|
+
labels: inspectionLabels([selected], labelKeys),
|
|
218
|
+
publication: overviewPublication(selected),
|
|
219
|
+
})];
|
|
177
220
|
})),
|
|
178
221
|
});
|
|
179
222
|
}
|
|
@@ -183,7 +226,7 @@ function makeExperiment(slots, cells, labelKeys) {
|
|
|
183
226
|
throw new Error("Overview Experiment cannot be empty");
|
|
184
227
|
const prefixes = new Map();
|
|
185
228
|
for (const selected of slots) {
|
|
186
|
-
const path = groupPath(selected.
|
|
229
|
+
const path = groupPath(selected.evalId);
|
|
187
230
|
for (let length = 1; length <= path.length; length += 1) {
|
|
188
231
|
const prefix = path.slice(0, length);
|
|
189
232
|
const key = prefix.join("\u0000");
|
|
@@ -201,9 +244,9 @@ function makeExperiment(slots, cells, labelKeys) {
|
|
|
201
244
|
...aggregate(values, scoreFromCells(cells.filter((cell) => hasGroupPrefix(cell.groupPath, key.split("\u0000"))))),
|
|
202
245
|
}));
|
|
203
246
|
return Object.freeze({
|
|
204
|
-
experimentId: first.
|
|
205
|
-
adapter: adapterValue(slots.map(({
|
|
206
|
-
model: executionValue(slots.map(({
|
|
247
|
+
experimentId: first.experimentId,
|
|
248
|
+
adapter: adapterValue(slots.map(({ adapter }) => adapter)),
|
|
249
|
+
model: executionValue(slots.map(({ model }) => model)),
|
|
207
250
|
labels: inspectionLabels(slots, labelKeys),
|
|
208
251
|
...aggregate(slots, scoreFromCells(cells)),
|
|
209
252
|
groups: Object.freeze(groups),
|
|
@@ -213,7 +256,8 @@ function adapterValue(values) {
|
|
|
213
256
|
const first = values[0];
|
|
214
257
|
if (first === undefined || values.some((value) => value.name !== first.name ||
|
|
215
258
|
value.contract !== first.contract ||
|
|
216
|
-
value.behaviorRevision !== first.behaviorRevision
|
|
259
|
+
value.behaviorRevision !== first.behaviorRevision ||
|
|
260
|
+
value.cleanupTimeoutMs !== first.cleanupTimeoutMs)) {
|
|
217
261
|
return Object.freeze({ state: "mixed" });
|
|
218
262
|
}
|
|
219
263
|
return Object.freeze({ state: "available", value: first });
|
|
@@ -247,6 +291,7 @@ function attemptOperationalMetrics(resolved) {
|
|
|
247
291
|
}, null);
|
|
248
292
|
const adapterUsage = (0, facts_ts_1.attemptAttachment)(resolved, current_ts_1.NiceEvalRecordAttachments.adapterUsage.family);
|
|
249
293
|
const usage = (0, trace_ts_1.projectAttemptUsage)(Object.freeze({
|
|
294
|
+
models: resolved.origin.run.context.execution.models,
|
|
250
295
|
agentTurns: (0, facts_ts_1.attemptAttachment)(resolved, current_ts_1.NiceEvalRecordAttachments.agentTurns.family),
|
|
251
296
|
...(adapterUsage === undefined ? {} : { adapterUsage }),
|
|
252
297
|
}));
|
|
@@ -265,7 +310,7 @@ function attemptOperationalMetrics(resolved) {
|
|
|
265
310
|
? "available"
|
|
266
311
|
: "partial",
|
|
267
312
|
})
|
|
268
|
-
: (0, trace_ts_1.projectAdapterUsageTokens)(adapterUsage);
|
|
313
|
+
: (0, trace_ts_1.projectAdapterUsageTokens)(adapterUsage, resolved.origin.run.context.execution.models);
|
|
269
314
|
return Object.freeze({
|
|
270
315
|
durationMs: Object.freeze({
|
|
271
316
|
value: durationMs,
|
|
@@ -312,7 +357,7 @@ function overviewPublication(selected) {
|
|
|
312
357
|
});
|
|
313
358
|
}
|
|
314
359
|
if (resolved === undefined) {
|
|
315
|
-
throw new Error(`Published Slot ${selected.slot
|
|
360
|
+
throw new Error(`Published Slot ${selected.slot?.slotId} has no readable Attempt`);
|
|
316
361
|
}
|
|
317
362
|
return Object.freeze({
|
|
318
363
|
state: "published",
|
|
@@ -338,22 +383,18 @@ function executionValue(values) {
|
|
|
338
383
|
: Object.freeze({ state: "available", value });
|
|
339
384
|
}
|
|
340
385
|
function inspectionLabelKeys(slots) {
|
|
341
|
-
return Object.freeze([...new Set(slots.flatMap(({
|
|
386
|
+
return Object.freeze([...new Set(slots.flatMap(({ labels }) => Object.keys(labels)))].sort(compareText));
|
|
342
387
|
}
|
|
343
388
|
function inspectionLabels(slots, keys) {
|
|
344
|
-
const targets = new Map();
|
|
345
|
-
for (const { target } of slots)
|
|
346
|
-
targets.set(target.run.runId, target);
|
|
347
|
-
const runs = [...targets.values()];
|
|
348
389
|
return Object.freeze(Object.fromEntries(keys.map((key) => [
|
|
349
390
|
key,
|
|
350
|
-
executionValue(
|
|
391
|
+
executionValue(slots.map(({ labels }) => labels[key] ?? null)),
|
|
351
392
|
])));
|
|
352
393
|
}
|
|
353
394
|
function costUSDOf(resolved) {
|
|
354
395
|
const adapterUsage = (0, facts_ts_1.attemptAttachment)(resolved, current_ts_1.NiceEvalRecordAttachments.adapterUsage.family);
|
|
355
396
|
if (adapterUsage !== undefined) {
|
|
356
|
-
const usage = (0, trace_ts_1.projectAttemptUsage)(Object.freeze({ adapterUsage }));
|
|
397
|
+
const usage = (0, trace_ts_1.projectAttemptUsage)(Object.freeze({ adapterUsage, models: resolved.origin.run.context.execution.models }));
|
|
357
398
|
const costs = usage.totals.costs;
|
|
358
399
|
const usd = costs?.values.find((value) => value.currency === "USD");
|
|
359
400
|
if (costs === undefined || usd === undefined)
|
|
@@ -402,7 +443,7 @@ function unavailableAttemptCost() {
|
|
|
402
443
|
function costForSlots(slots) {
|
|
403
444
|
const unique = new Map();
|
|
404
445
|
for (const slot of slots) {
|
|
405
|
-
const key = slot.resolved?.locator ?? `slot:${slot.target.run.runId}:${slot.slot.slotId}
|
|
446
|
+
const key = slot.resolved?.locator ?? (slot.target === undefined ? `current:${slot.experimentId}:${slot.evalId}:${slot.attemptOrdinal}` : `slot:${slot.target.run.runId}:${slot.slot.slotId}`);
|
|
406
447
|
if (!unique.has(key))
|
|
407
448
|
unique.set(key, slot);
|
|
408
449
|
}
|
|
@@ -553,8 +594,8 @@ function scoreForCell(slots) {
|
|
|
553
594
|
const eligible = knownPoints.length === 0
|
|
554
595
|
? unknown
|
|
555
596
|
: slots.filter(({ analysis }) => analysis.evaluationKind !== "pass");
|
|
556
|
-
|
|
557
|
-
|
|
597
|
+
// Earned-score coverage is independent of gate Verdict and ranking eligibility.
|
|
598
|
+
const complete = eligible.filter(({ analysis }) => analysis.score.hasPoints &&
|
|
558
599
|
analysis.score.hasValue &&
|
|
559
600
|
analysis.score.complete);
|
|
560
601
|
const earned = complete.reduce((sum, { analysis }) => sum + analysis.score.earned, 0);
|