niceeval 0.17.1 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/INDEX.md +5 -2
- package/dist/adapter-usage.cjs.map +1 -1
- package/dist/adapter-usage.d.cts +1 -1
- package/dist/adapter-usage.d.mts +1 -1
- package/dist/adapter-usage.d.ts +1 -1
- package/dist/adapter.cjs +8 -3
- package/dist/adapter.cjs.map +1 -1
- package/dist/adapter.d.cts +26 -15
- package/dist/adapter.d.mts +26 -15
- package/dist/adapter.d.ts +26 -15
- package/dist/agents/{effect-runtime.cjs → agent-effects.cjs} +12 -18
- package/dist/agents/agent-effects.cjs.map +1 -0
- package/dist/agents/agent-effects.d.cts +23 -0
- package/dist/agents/agent-effects.d.mts +23 -0
- package/dist/agents/agent-effects.d.ts +23 -0
- package/dist/agents/agent-effects.js +16 -0
- package/dist/agents/agent-effects.js.map +1 -0
- package/dist/agents/ai-sdk.cjs +1 -1
- package/dist/agents/ai-sdk.cjs.map +1 -1
- package/dist/agents/bub.cjs +31 -18
- package/dist/agents/bub.cjs.map +1 -1
- package/dist/agents/bub.d.cts +9 -12
- package/dist/agents/bub.d.mts +9 -12
- package/dist/agents/bub.d.ts +9 -12
- package/dist/agents/claude-code-native.cjs +2 -2
- package/dist/agents/claude-code-native.cjs.map +1 -1
- package/dist/agents/claude-code.cjs +17 -11
- package/dist/agents/claude-code.cjs.map +1 -1
- package/dist/agents/claude-code.d.cts +11 -11
- package/dist/agents/claude-code.d.mts +11 -11
- package/dist/agents/claude-code.d.ts +11 -11
- package/dist/agents/codex-app-server.cjs +2 -2
- package/dist/agents/codex-app-server.cjs.map +1 -1
- package/dist/agents/codex.cjs +18 -12
- package/dist/agents/codex.cjs.map +1 -1
- package/dist/agents/codex.d.cts +12 -12
- package/dist/agents/codex.d.mts +12 -12
- package/dist/agents/codex.d.ts +12 -12
- package/dist/agents/deepseek-harness.cjs +2 -2
- package/dist/agents/deepseek-harness.cjs.map +1 -1
- package/dist/agents/hermes.cjs +3 -3
- package/dist/agents/hermes.cjs.map +1 -1
- package/dist/agents/index.cjs +3 -3
- package/dist/agents/index.cjs.map +1 -1
- package/dist/agents/index.d.cts +3 -3
- package/dist/agents/index.d.mts +3 -3
- package/dist/agents/index.d.ts +3 -3
- package/dist/agents/index.js +2 -2
- package/dist/agents/index.mjs +2 -2
- package/dist/agents/mcp.cjs.map +1 -1
- package/dist/agents/mcp.d.cts +2 -2
- package/dist/agents/mcp.d.mts +2 -2
- package/dist/agents/mcp.d.ts +2 -2
- package/dist/agents/omp.cjs +2 -2
- package/dist/agents/omp.cjs.map +1 -1
- package/dist/agents/openai-compat.cjs +2 -2
- package/dist/agents/openai-compat.cjs.map +1 -1
- package/dist/agents/openclaw.cjs +3 -3
- package/dist/agents/openclaw.cjs.map +1 -1
- package/dist/agents/opencode.cjs +16 -4
- package/dist/agents/opencode.cjs.map +1 -1
- package/dist/agents/plugin-extensions.cjs +71 -0
- package/dist/agents/plugin-extensions.cjs.map +1 -0
- package/dist/agents/plugin-extensions.d.cts +26 -0
- package/dist/agents/plugin-extensions.d.mts +26 -0
- package/dist/agents/plugin-extensions.d.ts +26 -0
- package/dist/agents/plugin-extensions.js +8 -0
- package/dist/agents/plugin-extensions.js.map +1 -0
- package/dist/agents/post-setup.cjs +14 -3
- package/dist/agents/post-setup.cjs.map +1 -1
- package/dist/agents/post-setup.d.cts +4 -2
- package/dist/agents/post-setup.d.mts +4 -2
- package/dist/agents/post-setup.d.ts +4 -2
- package/dist/agents/post-setup.js +8 -6
- package/dist/agents/sdk-streams.cjs +3 -3
- package/dist/agents/sdk-streams.cjs.map +1 -1
- package/dist/agents/{session-slot.cjs → session-key.cjs} +4 -4
- package/dist/agents/session-key.cjs.map +1 -0
- package/dist/agents/session-key.d.cts +12 -0
- package/dist/agents/session-key.d.mts +12 -0
- package/dist/agents/session-key.d.ts +12 -0
- package/dist/agents/session-key.js +6 -0
- package/dist/agents/session-key.js.map +1 -0
- package/dist/agents/shared.cjs +2 -2
- package/dist/agents/shared.cjs.map +1 -1
- package/dist/agents/shared.d.cts +4 -4
- package/dist/agents/shared.d.mts +4 -4
- package/dist/agents/shared.d.ts +4 -4
- package/dist/agents/skills.cjs.map +1 -1
- package/dist/agents/skills.d.cts +3 -3
- package/dist/agents/skills.d.mts +3 -3
- package/dist/agents/skills.d.ts +3 -3
- package/dist/agents/types.cjs.map +1 -1
- package/dist/agents/types.d.cts +55 -54
- package/dist/agents/types.d.mts +55 -54
- package/dist/agents/types.d.ts +55 -54
- package/dist/agents/ui-message-stream.cjs +4 -4
- package/dist/agents/ui-message-stream.cjs.map +1 -1
- package/dist/agents/unrecognized-events.cjs +32 -0
- package/dist/agents/unrecognized-events.cjs.map +1 -0
- package/dist/agents/unrecognized-events.d.cts +8 -0
- package/dist/agents/unrecognized-events.d.mts +8 -0
- package/dist/agents/unrecognized-events.d.ts +8 -0
- package/dist/agents/unrecognized-events.js +6 -0
- package/dist/agents/unrecognized-events.js.map +1 -0
- package/dist/assertions/api.cjs.map +1 -1
- package/dist/assertions/api.d.cts +3 -0
- package/dist/assertions/api.d.mts +3 -0
- package/dist/assertions/api.d.ts +3 -0
- package/dist/assertions/collection.cjs +1 -1
- package/dist/assertions/collection.cjs.map +1 -1
- package/dist/assertions/judge.cjs +1 -1
- package/dist/assertions/judge.cjs.map +1 -1
- package/dist/assertions/match.cjs +52 -21
- package/dist/assertions/match.cjs.map +1 -1
- package/dist/assertions/match.d.cts +16 -5
- package/dist/assertions/match.d.mts +16 -5
- package/dist/assertions/match.d.ts +16 -5
- package/dist/assertions/match.js +96 -94
- package/dist/assertions/measurements.cjs +61 -0
- package/dist/assertions/measurements.cjs.map +1 -0
- package/dist/assertions/measurements.d.cts +24 -0
- package/dist/assertions/measurements.d.mts +24 -0
- package/dist/assertions/measurements.d.ts +24 -0
- package/dist/assertions/measurements.js +8 -0
- package/dist/assertions/measurements.js.map +1 -0
- package/dist/assertions/numeric.cjs +2 -0
- package/dist/assertions/numeric.cjs.map +1 -1
- package/dist/assertions/numeric.d.cts +1 -1
- package/dist/assertions/numeric.d.mts +1 -1
- package/dist/assertions/numeric.d.ts +1 -1
- package/dist/assertions/quantity.cjs +42 -0
- package/dist/assertions/quantity.cjs.map +1 -0
- package/dist/assertions/quantity.d.cts +18 -0
- package/dist/assertions/quantity.d.mts +18 -0
- package/dist/assertions/quantity.d.ts +18 -0
- package/dist/assertions/quantity.js +22 -0
- package/dist/assertions/quantity.js.map +1 -0
- package/dist/assertions/record/attachment.cjs +2 -0
- package/dist/assertions/record/attachment.cjs.map +1 -1
- package/dist/assertions/record/codec.cjs +5 -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 +3 -1
- package/dist/assertions/record/model.d.mts +3 -1
- package/dist/assertions/record/model.d.ts +3 -1
- package/dist/assertions/runtime.cjs +11 -6
- package/dist/assertions/runtime.cjs.map +1 -1
- package/dist/cli/program.cjs +3 -0
- package/dist/cli/program.cjs.map +1 -1
- package/dist/context/assert-first.cjs +6 -4
- package/dist/context/assert-first.cjs.map +1 -1
- package/dist/context/assert-first.d.cts +9 -3
- package/dist/context/assert-first.d.mts +9 -3
- package/dist/context/assert-first.d.ts +9 -3
- package/dist/context/notes.cjs +47 -0
- package/dist/context/notes.cjs.map +1 -0
- package/dist/context/notes.d.cts +10 -0
- package/dist/context/notes.d.mts +10 -0
- package/dist/context/notes.d.ts +10 -0
- package/dist/context/notes.js +6 -0
- package/dist/context/notes.js.map +1 -0
- package/dist/context/send-failures.cjs +1 -7
- package/dist/context/send-failures.cjs.map +1 -1
- package/dist/context/send-failures.d.cts +2 -3
- package/dist/context/send-failures.d.mts +2 -3
- package/dist/context/send-failures.d.ts +2 -3
- package/dist/context/send-retry.cjs +0 -1
- package/dist/context/send-retry.cjs.map +1 -1
- package/dist/context/send-retry.d.cts +1 -2
- package/dist/context/send-retry.d.mts +1 -2
- package/dist/context/send-retry.d.ts +1 -2
- package/dist/context/session.cjs +10 -17
- package/dist/context/session.cjs.map +1 -1
- package/dist/context/session.d.cts +4 -10
- package/dist/context/session.d.mts +4 -10
- package/dist/context/session.d.ts +4 -10
- package/dist/define.cjs +89 -64
- package/dist/define.cjs.map +1 -1
- package/dist/define.d.cts +3 -3
- package/dist/define.d.mts +3 -3
- package/dist/define.d.ts +3 -3
- package/dist/eval/cli/contribution.cjs +1 -1
- package/dist/eval/cli/contribution.cjs.map +1 -1
- package/dist/eval/host/index.cjs +1 -1
- package/dist/eval/host/index.cjs.map +1 -1
- package/dist/eval/record/evaluation.cjs +1 -1
- package/dist/eval/record/evaluation.cjs.map +1 -1
- package/dist/eval/record/membership-provenance.d.cts +3 -3
- package/dist/eval/record/membership-provenance.d.mts +3 -3
- package/dist/eval/record/membership-provenance.d.ts +3 -3
- package/dist/eval/record/score.cjs +2 -2
- package/dist/eval/record/score.cjs.map +1 -1
- package/dist/eval/record/sealed-assertion.cjs +1 -1
- package/dist/eval/record/sealed-assertion.cjs.map +1 -1
- package/dist/eval/record/verdict.cjs +2 -2
- package/dist/eval/record/verdict.cjs.map +1 -1
- package/dist/expect/index.cjs +13 -1
- package/dist/expect/index.cjs.map +1 -1
- package/dist/expect/index.d.cts +5 -1
- package/dist/expect/index.d.mts +5 -1
- package/dist/expect/index.d.ts +5 -1
- package/dist/expect/index.js +92 -72
- package/dist/expect/index.mjs +92 -72
- package/dist/experiment/host/cli/contribution.cjs +52 -39
- package/dist/experiment/host/cli/contribution.cjs.map +1 -1
- package/dist/experiment/host/cli/contribution.d.cts +18 -4
- package/dist/experiment/host/cli/contribution.d.mts +18 -4
- package/dist/experiment/host/cli/contribution.d.ts +18 -4
- package/dist/experiment/host/cli/contribution.js +2 -2
- package/dist/experiment/host/cli/debug-protocol.cjs +2 -2
- package/dist/experiment/host/cli/debug-protocol.cjs.map +1 -1
- package/dist/experiment/host/cli/debug-protocol.d.cts +2 -2
- package/dist/experiment/host/cli/debug-protocol.d.mts +2 -2
- package/dist/experiment/host/cli/debug-protocol.d.ts +2 -2
- package/dist/experiment/host/cli/output-protocol.cjs +1 -1
- package/dist/experiment/host/cli/output-protocol.cjs.map +1 -1
- package/dist/experiment/host/cli/output-protocol.d.cts +2 -2
- package/dist/experiment/host/cli/output-protocol.d.mts +2 -2
- package/dist/experiment/host/cli/output-protocol.d.ts +2 -2
- package/dist/experiment/host/current.cjs +2 -2
- package/dist/experiment/host/current.cjs.map +1 -1
- package/dist/experiment/host/index.cjs +1 -1
- package/dist/experiment/host/index.cjs.map +1 -1
- package/dist/experiment/host/operations.cjs +24 -23
- package/dist/experiment/host/operations.cjs.map +1 -1
- package/dist/experiment/host/runtime.cjs +11 -10
- package/dist/experiment/host/runtime.cjs.map +1 -1
- package/dist/experiment/host/runtime.d.cts +3 -3
- package/dist/experiment/host/runtime.d.mts +3 -3
- package/dist/experiment/host/runtime.d.ts +3 -3
- package/dist/experiment/host/teardown.cjs +4 -3
- package/dist/experiment/host/teardown.cjs.map +1 -1
- package/dist/experiment/host/teardown.d.cts +3 -3
- package/dist/experiment/host/teardown.d.mts +3 -3
- package/dist/experiment/host/teardown.d.ts +3 -3
- package/dist/experiment/host/types.cjs.map +1 -1
- package/dist/experiment/host/types.d.cts +19 -19
- package/dist/experiment/host/types.d.mts +19 -19
- package/dist/experiment/host/types.d.ts +19 -19
- package/dist/index.cjs +3 -19
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -8
- package/dist/index.d.mts +4 -8
- package/dist/index.d.ts +4 -8
- package/dist/index.js +12 -34
- package/dist/index.mjs +12 -34
- package/dist/inspection/assertions.cjs +1 -1
- package/dist/inspection/assertions.cjs.map +1 -1
- package/dist/inspection/cli/contribution.cjs +8 -7
- package/dist/inspection/cli/contribution.cjs.map +1 -1
- package/dist/inspection/facts.cjs +4 -4
- package/dist/inspection/facts.cjs.map +1 -1
- package/dist/inspection/index.cjs +1 -5
- package/dist/inspection/index.cjs.map +1 -1
- package/dist/inspection/index.d.cts +1 -2
- package/dist/inspection/index.d.mts +1 -2
- package/dist/inspection/index.d.ts +1 -2
- package/dist/inspection/index.js +20 -26
- package/dist/inspection/lifecycle.cjs +7 -0
- package/dist/inspection/lifecycle.cjs.map +1 -0
- package/dist/inspection/lifecycle.d.cts +4 -0
- package/dist/inspection/lifecycle.d.mts +4 -0
- package/dist/inspection/lifecycle.d.ts +4 -0
- package/dist/inspection/lifecycle.js +6 -0
- package/dist/inspection/lifecycle.js.map +1 -0
- package/dist/inspection/notes.cjs +40 -0
- package/dist/inspection/notes.cjs.map +1 -0
- package/dist/inspection/notes.d.cts +12 -0
- package/dist/inspection/notes.d.mts +12 -0
- package/dist/inspection/notes.d.ts +12 -0
- package/dist/inspection/notes.js +8 -0
- package/dist/inspection/notes.js.map +1 -0
- package/dist/inspection/overview.cjs +12 -15
- package/dist/inspection/overview.cjs.map +1 -1
- package/dist/inspection/overview.d.cts +8 -6
- package/dist/inspection/overview.d.mts +8 -6
- package/dist/inspection/overview.d.ts +8 -6
- package/dist/inspection/planned-attempt.cjs +45 -0
- package/dist/inspection/planned-attempt.cjs.map +1 -0
- package/dist/inspection/planned-attempt.d.cts +109 -0
- package/dist/inspection/planned-attempt.d.mts +109 -0
- package/dist/inspection/planned-attempt.d.ts +109 -0
- package/dist/inspection/planned-attempt.js +24 -0
- package/dist/inspection/planned-attempt.js.map +1 -0
- package/dist/inspection/project-result.cjs +5 -5
- package/dist/inspection/project-result.cjs.map +1 -1
- package/dist/inspection/project-result.d.cts +58 -57
- package/dist/inspection/project-result.d.mts +58 -57
- package/dist/inspection/project-result.d.ts +58 -57
- package/dist/inspection/project-result.js +4 -4
- package/dist/inspection/project.cjs +3 -3
- package/dist/inspection/project.cjs.map +1 -1
- package/dist/inspection/protocol-values.cjs +1 -1
- package/dist/inspection/protocol-values.cjs.map +1 -1
- package/dist/inspection/protocol-values.d.cts +1 -1
- package/dist/inspection/protocol-values.d.mts +1 -1
- package/dist/inspection/protocol-values.d.ts +1 -1
- package/dist/inspection/protocol.cjs +8 -8
- package/dist/inspection/protocol.cjs.map +1 -1
- package/dist/inspection/protocol.d.cts +237 -219
- package/dist/inspection/protocol.d.mts +237 -219
- package/dist/inspection/protocol.d.ts +237 -219
- package/dist/inspection/public.cjs +1 -5
- package/dist/inspection/public.cjs.map +1 -1
- package/dist/inspection/public.d.cts +1 -2
- package/dist/inspection/public.d.mts +1 -2
- package/dist/inspection/public.d.ts +1 -2
- package/dist/inspection/public.js +14 -20
- package/dist/inspection/public.mjs +166 -129
- package/dist/inspection/query.cjs +1 -1
- package/dist/inspection/query.cjs.map +1 -1
- package/dist/inspection/results.cjs +61 -52
- package/dist/inspection/results.cjs.map +1 -1
- package/dist/inspection/results.d.cts +157 -140
- package/dist/inspection/results.d.mts +157 -140
- package/dist/inspection/results.d.ts +157 -140
- package/dist/inspection/select.cjs +33 -28
- package/dist/inspection/select.cjs.map +1 -1
- package/dist/inspection/source.cjs +1 -1
- package/dist/inspection/source.cjs.map +1 -1
- package/dist/inspection/sources.cjs +2 -2
- package/dist/inspection/sources.cjs.map +1 -1
- package/dist/inspection/trace.cjs +9 -8
- package/dist/inspection/trace.cjs.map +1 -1
- package/dist/inspection/trace.d.cts +4 -4
- package/dist/inspection/trace.d.mts +4 -4
- package/dist/inspection/trace.d.ts +4 -4
- package/dist/loaders/index.cjs +7 -279
- package/dist/loaders/index.cjs.map +1 -1
- package/dist/loaders/index.d.cts +2 -95
- package/dist/loaders/index.d.mts +2 -95
- package/dist/loaders/index.d.ts +2 -95
- package/dist/loaders/index.js +10 -12
- package/dist/loaders/index.mjs +10 -12
- package/dist/loaders/runtime.cjs +283 -0
- package/dist/loaders/runtime.cjs.map +1 -0
- package/dist/loaders/runtime.d.cts +95 -0
- package/dist/loaders/runtime.d.mts +95 -0
- package/dist/loaders/runtime.d.ts +95 -0
- package/dist/loaders/runtime.js +16 -0
- package/dist/loaders/runtime.js.map +1 -0
- package/dist/migrations/judge-provider.md +6 -6
- package/dist/{model-slots.cjs → model-roles.cjs} +26 -7
- package/dist/model-roles.cjs.map +1 -0
- package/dist/model-roles.d.cts +26 -0
- package/dist/model-roles.d.mts +26 -0
- package/dist/model-roles.d.ts +26 -0
- package/dist/model-roles.js +14 -0
- package/dist/model-roles.js.map +1 -0
- package/dist/o11y/adapter-usage-projection.cjs +9 -8
- package/dist/o11y/adapter-usage-projection.cjs.map +1 -1
- package/dist/o11y/adapter-usage-projection.d.cts +23 -15
- package/dist/o11y/adapter-usage-projection.d.mts +23 -15
- package/dist/o11y/adapter-usage-projection.d.ts +23 -15
- package/dist/o11y/cache-read.cjs +14 -14
- package/dist/o11y/cache-read.cjs.map +1 -1
- package/dist/o11y/cache-read.d.cts +5 -5
- package/dist/o11y/cache-read.d.mts +5 -5
- package/dist/o11y/cache-read.d.ts +5 -5
- package/dist/o11y/derive.cjs.map +1 -1
- package/dist/o11y/derive.d.cts +2 -2
- package/dist/o11y/derive.d.mts +2 -2
- package/dist/o11y/derive.d.ts +2 -2
- package/dist/o11y/eval-usage.cjs +9 -9
- package/dist/o11y/eval-usage.cjs.map +1 -1
- package/dist/o11y/eval-usage.d.cts +7 -7
- package/dist/o11y/eval-usage.d.mts +7 -7
- package/dist/o11y/eval-usage.d.ts +7 -7
- package/dist/o11y/parsers/bub.cjs +57 -81
- package/dist/o11y/parsers/bub.cjs.map +1 -1
- package/dist/o11y/parsers/index.cjs.map +1 -1
- package/dist/o11y/parsers/index.d.cts +2 -0
- package/dist/o11y/parsers/index.d.mts +2 -0
- package/dist/o11y/parsers/index.d.ts +2 -0
- package/dist/o11y/parsers/opencode.cjs +129 -217
- package/dist/o11y/parsers/opencode.cjs.map +1 -1
- package/dist/o11y/parsers/opencode.d.cts +2 -5
- package/dist/o11y/parsers/opencode.d.mts +2 -5
- package/dist/o11y/parsers/opencode.d.ts +2 -5
- package/dist/o11y/types.cjs.map +1 -1
- package/dist/o11y/types.d.cts +1 -1
- package/dist/o11y/types.d.mts +1 -1
- package/dist/o11y/types.d.ts +1 -1
- package/dist/plugin/contracts.cjs +170 -120
- package/dist/plugin/contracts.cjs.map +1 -1
- package/dist/plugin/contracts.d.cts +102 -90
- package/dist/plugin/contracts.d.mts +102 -90
- package/dist/plugin/contracts.d.ts +102 -90
- package/dist/plugin/contracts.js +16 -12
- package/dist/plugin/index.cjs.map +1 -1
- package/dist/plugin/index.d.cts +1 -1
- package/dist/plugin/index.d.mts +1 -1
- package/dist/plugin/index.d.ts +1 -1
- package/dist/plugin/link.cjs +69 -64
- package/dist/plugin/link.cjs.map +1 -1
- package/dist/plugin/link.d.cts +5 -3
- package/dist/plugin/link.d.mts +5 -3
- package/dist/plugin/link.d.ts +5 -3
- package/dist/plugin/link.js +12 -8
- 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/attempt-note/definition.cjs +12 -0
- package/dist/record/family/attempt-note/definition.cjs.map +1 -0
- package/dist/record/family/attempt-note/definition.d.cts +6 -0
- package/dist/record/family/attempt-note/definition.d.mts +6 -0
- package/dist/record/family/attempt-note/definition.d.ts +6 -0
- package/dist/record/family/attempt-note/definition.js +6 -0
- package/dist/record/family/attempt-note/definition.js.map +1 -0
- package/dist/record/family/attempt-note/persistence.cjs +10 -0
- package/dist/record/family/attempt-note/persistence.cjs.map +1 -0
- package/dist/record/family/attempt-note/persistence.d.cts +6 -0
- package/dist/record/family/attempt-note/persistence.d.mts +6 -0
- package/dist/record/family/attempt-note/persistence.d.ts +6 -0
- package/dist/record/family/attempt-note/persistence.js +6 -0
- package/dist/record/family/attempt-note/persistence.js.map +1 -0
- package/dist/record/family/attempt-note/schema.cjs +20 -0
- package/dist/record/family/attempt-note/schema.cjs.map +1 -0
- package/dist/record/family/attempt-note/schema.d.cts +21 -0
- package/dist/record/family/attempt-note/schema.d.mts +21 -0
- package/dist/record/family/attempt-note/schema.d.ts +21 -0
- package/dist/record/family/attempt-note/schema.js +10 -0
- package/dist/record/family/attempt-note/schema.js.map +1 -0
- package/dist/record/family/catalog.cjs +32 -29
- package/dist/record/family/catalog.cjs.map +1 -1
- package/dist/record/family/catalog.d.cts +7 -2
- package/dist/record/family/catalog.d.mts +7 -2
- package/dist/record/family/catalog.d.ts +7 -2
- package/dist/record/family/current.cjs +48 -45
- package/dist/record/family/current.cjs.map +1 -1
- package/dist/record/family/current.d.cts +15 -0
- package/dist/record/family/current.d.mts +15 -0
- package/dist/record/family/current.d.ts +15 -0
- package/dist/record/model/index.js +66 -64
- package/dist/record/model/run-context.cjs +9 -3
- package/dist/record/model/run-context.cjs.map +1 -1
- package/dist/record/model/run-context.d.cts +9 -2
- package/dist/record/model/run-context.d.mts +9 -2
- package/dist/record/model/run-context.d.ts +9 -2
- package/dist/record/model/run-context.js +8 -6
- 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/run/cli/contribution.cjs +6 -32
- package/dist/run/cli/contribution.cjs.map +1 -1
- package/dist/run/host/runtime.cjs +1 -1
- package/dist/run/host/runtime.cjs.map +1 -1
- package/dist/run/storage/sqlite.cjs +7 -7
- package/dist/run/storage/sqlite.cjs.map +1 -1
- package/dist/runner/adapter-usage.cjs +5 -3
- package/dist/runner/adapter-usage.cjs.map +1 -1
- package/dist/runner/adapter-usage.d.cts +2 -2
- package/dist/runner/adapter-usage.d.mts +2 -2
- package/dist/runner/adapter-usage.d.ts +2 -2
- package/dist/runner/adoption.cjs +10 -12
- package/dist/runner/adoption.cjs.map +1 -1
- package/dist/runner/attempt-notes.cjs +8 -0
- package/dist/runner/attempt-notes.cjs.map +1 -0
- package/dist/runner/attempt-notes.d.cts +4 -0
- package/dist/runner/attempt-notes.d.mts +4 -0
- package/dist/runner/attempt-notes.d.ts +4 -0
- package/dist/runner/attempt-notes.js +8 -0
- package/dist/runner/attempt-notes.js.map +1 -0
- package/dist/runner/attempt.cjs +61 -73
- package/dist/runner/attempt.cjs.map +1 -1
- package/dist/runner/attempt.d.cts +3 -3
- package/dist/runner/attempt.d.mts +3 -3
- package/dist/runner/attempt.d.ts +3 -3
- package/dist/runner/command-plan.cjs +21 -26
- package/dist/runner/command-plan.cjs.map +1 -1
- package/dist/runner/command-plan.d.cts +4 -4
- package/dist/runner/command-plan.d.mts +4 -4
- package/dist/runner/command-plan.d.ts +4 -4
- package/dist/runner/command-plan.js +4 -4
- package/dist/runner/config-identity.cjs.map +1 -1
- package/dist/runner/config-identity.d.cts +2 -2
- package/dist/runner/config-identity.d.mts +2 -2
- package/dist/runner/config-identity.d.ts +2 -2
- package/dist/runner/discover.cjs +6 -6
- package/dist/runner/discover.cjs.map +1 -1
- package/dist/runner/eval-selection.cjs +15 -1
- package/dist/runner/eval-selection.cjs.map +1 -1
- package/dist/runner/eval-selection.d.cts +4 -0
- package/dist/runner/eval-selection.d.mts +4 -0
- package/dist/runner/eval-selection.d.ts +4 -0
- package/dist/runner/feedback/human.cjs +1 -1
- package/dist/runner/feedback/human.cjs.map +1 -1
- package/dist/runner/feedback/json.cjs +4 -2
- package/dist/runner/feedback/json.cjs.map +1 -1
- package/dist/runner/feedback/json.d.cts +1 -1
- package/dist/runner/feedback/json.d.mts +1 -1
- package/dist/runner/feedback/json.d.ts +1 -1
- package/dist/runner/feedback/sink.cjs +1 -1
- package/dist/runner/feedback/sink.cjs.map +1 -1
- package/dist/runner/feedback/sink.d.cts +1 -1
- package/dist/runner/feedback/sink.d.mts +1 -1
- package/dist/runner/feedback/sink.d.ts +1 -1
- package/dist/runner/fingerprint.cjs +1 -1
- package/dist/runner/fingerprint.cjs.map +1 -1
- package/dist/runner/lock.cjs +1 -3
- package/dist/runner/lock.cjs.map +1 -1
- package/dist/runner/lock.d.cts +0 -2
- package/dist/runner/lock.d.mts +0 -2
- package/dist/runner/lock.d.ts +0 -2
- package/dist/runner/lock.js +14 -16
- package/dist/runner/project-target.cjs.map +1 -1
- package/dist/runner/project-target.d.cts +2 -2
- package/dist/runner/project-target.d.mts +2 -2
- package/dist/runner/project-target.d.ts +2 -2
- package/dist/runner/record/attachments.cjs +2 -2
- package/dist/runner/record/attachments.cjs.map +1 -1
- package/dist/runner/record/planning.cjs +8 -2
- package/dist/runner/record/planning.cjs.map +1 -1
- package/dist/runner/record.cjs +2 -0
- package/dist/runner/record.cjs.map +1 -1
- package/dist/runner/report.cjs +3 -3
- package/dist/runner/report.cjs.map +1 -1
- package/dist/runner/report.d.cts +1 -1
- package/dist/runner/report.d.mts +1 -1
- package/dist/runner/report.d.ts +1 -1
- package/dist/runner/reuse-plan.cjs +2 -2
- package/dist/runner/reuse-plan.cjs.map +1 -1
- package/dist/runner/run.cjs +10 -45
- package/dist/runner/run.cjs.map +1 -1
- package/dist/runner/sandbox-pool.cjs +1 -2
- package/dist/runner/sandbox-pool.cjs.map +1 -1
- package/dist/runner/setup-prefix-preparation.cjs +1 -1
- package/dist/runner/setup-prefix-preparation.cjs.map +1 -1
- package/dist/runner/teardown-registry.cjs +2 -2
- package/dist/runner/teardown-registry.cjs.map +1 -1
- package/dist/runner/teardown-registry.d.cts +1 -1
- package/dist/runner/teardown-registry.d.mts +1 -1
- package/dist/runner/teardown-registry.d.ts +1 -1
- package/dist/runner/types.cjs +4 -4
- package/dist/runner/types.cjs.map +1 -1
- package/dist/runner/types.d.cts +64 -92
- package/dist/runner/types.d.mts +64 -92
- package/dist/runner/types.d.ts +64 -92
- package/dist/runner/types.js +2 -2
- package/dist/sandbox/action.cjs +1 -1
- package/dist/sandbox/action.cjs.map +1 -1
- package/dist/sandbox/cli/contribution.cjs +17 -14
- package/dist/sandbox/cli/contribution.cjs.map +1 -1
- package/dist/sandbox/cli/contribution.d.cts +1 -1
- package/dist/sandbox/cli/contribution.d.mts +1 -1
- package/dist/sandbox/cli/contribution.d.ts +1 -1
- package/dist/sandbox/commands.cjs +1 -1
- package/dist/sandbox/commands.cjs.map +1 -1
- package/dist/sandbox/commands.d.cts +1 -1
- package/dist/sandbox/commands.d.mts +1 -1
- package/dist/sandbox/commands.d.ts +1 -1
- package/dist/sandbox/compose.cjs +2 -2
- package/dist/sandbox/compose.cjs.map +1 -1
- package/dist/sandbox/docker-profile/registry.cjs +5 -10
- package/dist/sandbox/docker-profile/registry.cjs.map +1 -1
- package/dist/sandbox/docker-profile/registry.d.cts +0 -4
- package/dist/sandbox/docker-profile/registry.d.mts +0 -4
- package/dist/sandbox/docker-profile/registry.d.ts +0 -4
- package/dist/sandbox/docker-profile/registry.js +6 -14
- package/dist/sandbox/docker-profile/runtime.cjs +1 -1
- package/dist/sandbox/docker-profile/runtime.cjs.map +1 -1
- package/dist/sandbox/docker-profile/schema.cjs +12 -16
- package/dist/sandbox/docker-profile/schema.cjs.map +1 -1
- package/dist/sandbox/docker-profile/schema.d.cts +2 -6
- package/dist/sandbox/docker-profile/schema.d.mts +2 -6
- package/dist/sandbox/docker-profile/schema.d.ts +2 -6
- package/dist/sandbox/docker-profile/schema.js +24 -32
- package/dist/sandbox/incus.cjs +2 -2
- package/dist/sandbox/incus.cjs.map +1 -1
- package/dist/sandbox/index.cjs +4 -36
- package/dist/sandbox/index.cjs.map +1 -1
- package/dist/sandbox/index.d.cts +4 -8
- package/dist/sandbox/index.d.mts +4 -8
- package/dist/sandbox/index.d.ts +4 -8
- package/dist/sandbox/index.js +116 -174
- package/dist/sandbox/index.mjs +116 -174
- package/dist/sandbox/layer.cjs +3 -3
- package/dist/sandbox/layer.cjs.map +1 -1
- package/dist/sandbox/link.cjs +5 -0
- package/dist/sandbox/link.cjs.map +1 -1
- package/dist/sandbox/link.d.cts +3 -0
- package/dist/sandbox/link.d.mts +3 -0
- package/dist/sandbox/link.d.ts +3 -0
- package/dist/sandbox/runtime.cjs +9 -4
- package/dist/sandbox/runtime.cjs.map +1 -1
- package/dist/shared/failure-class.cjs +5 -5
- package/dist/shared/failure-class.cjs.map +1 -1
- package/dist/shared/failure-class.d.cts +4 -10
- package/dist/shared/failure-class.d.mts +4 -10
- package/dist/shared/failure-class.d.ts +4 -10
- package/dist/shared/types.cjs.map +1 -1
- package/dist/shared/types.d.cts +1 -1
- package/dist/shared/types.d.mts +1 -1
- package/dist/shared/types.d.ts +1 -1
- package/dist/show/contribution.cjs +17 -2
- package/dist/show/contribution.cjs.map +1 -1
- package/dist/show/contribution.d.cts +14 -0
- package/dist/show/contribution.d.mts +14 -0
- package/dist/show/contribution.d.ts +14 -0
- package/dist/show/model.cjs +8 -5
- package/dist/show/model.cjs.map +1 -1
- package/dist/show/model.d.cts +11 -8
- package/dist/show/model.d.mts +11 -8
- package/dist/show/model.d.ts +11 -8
- package/dist/show/render.cjs +34 -22
- package/dist/show/render.cjs.map +1 -1
- package/dist/sources/projector.cjs +1 -1
- package/dist/sources/projector.cjs.map +1 -1
- package/dist/types.cjs +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/types.js +2 -2
- package/dist/view/app-dist/.vite/manifest.json +2 -2
- package/dist/view/app-dist/assets/{index-B3ijZRph.js → index-CxrOUvHC.js} +17 -17
- package/dist/view/app-dist/assets/{quality-cost-scatter-B--DfJ9s.js → quality-cost-scatter-B6Aiss7x.js} +1 -1
- package/dist/view/app-dist/index.html +1 -1
- package/dist/view/cli/contribution.cjs +1 -1
- package/dist/view/cli/contribution.cjs.map +1 -1
- package/dist/view/function-runtime.mjs +318 -121
- package/dist/view/http-protocol.d.cts +1 -1
- package/dist/view/http-protocol.d.mts +1 -1
- package/dist/view/http-protocol.d.ts +1 -1
- package/dist/view/inspection-host.cjs +2 -2
- package/dist/view/inspection-host.cjs.map +1 -1
- package/dist/view/inspection-host.d.cts +349 -331
- package/dist/view/inspection-host.d.mts +349 -331
- package/dist/view/inspection-host.d.ts +349 -331
- package/docs-site/zh/examples/integrations/ai-sdk-v7.mdx +9 -9
- package/docs-site/zh/examples/integrations/claude-sdk.mdx +8 -8
- package/docs-site/zh/examples/integrations/codex-sdk.mdx +4 -4
- package/docs-site/zh/examples/integrations/langgraph.mdx +6 -6
- package/docs-site/zh/examples/integrations/pi-sdk.mdx +8 -8
- package/docs-site/zh/explanation/adapter.mdx +6 -6
- package/docs-site/zh/explanation/assert.mdx +7 -7
- package/docs-site/zh/explanation/drive.mdx +4 -4
- package/docs-site/zh/explanation/hitl.mdx +2 -2
- package/docs-site/zh/explanation/judge.mdx +3 -3
- package/docs-site/zh/index.mdx +18 -0
- package/docs-site/zh/introduction.mdx +4 -3
- package/docs-site/zh/reference/builtin-agents.mdx +46 -49
- package/docs-site/zh/reference/cli.mdx +16 -14
- package/docs-site/zh/reference/define-agent.mdx +19 -19
- package/docs-site/zh/reference/define-config.mdx +7 -15
- package/docs-site/zh/reference/define-eval.mdx +20 -14
- package/docs-site/zh/reference/define-experiment.mdx +18 -39
- package/docs-site/zh/reference/events.mdx +1 -1
- package/docs-site/zh/reference/expect.mdx +21 -0
- package/docs-site/zh/reference/official-adapters.mdx +12 -5
- package/docs-site/zh/troubleshooting/debugging.mdx +2 -2
- package/docs-site/zh/troubleshooting/recover-after-kill.mdx +1 -1
- package/docs-site/zh/tutorials/agent-onboarding.mdx +2 -2
- package/docs-site/zh/tutorials/authoring.mdx +4 -3
- package/docs-site/zh/tutorials/compare-runs.mdx +1 -1
- package/docs-site/zh/tutorials/concurrency.mdx +8 -8
- package/docs-site/zh/tutorials/configuration.mdx +5 -5
- package/docs-site/zh/tutorials/control-run-cost.mdx +49 -9
- package/docs-site/zh/tutorials/eval-groups.mdx +1 -1
- package/docs-site/zh/tutorials/evaluation-kinds.mdx +5 -5
- package/docs-site/zh/tutorials/experiment-services.mdx +32 -32
- package/docs-site/zh/tutorials/handle-execution-failures.mdx +2 -28
- package/docs-site/zh/tutorials/plugins.mdx +49 -143
- package/docs-site/zh/tutorials/sandbox-agent.mdx +1 -1
- package/docs-site/zh/tutorials/sandbox-reuse.mdx +7 -7
- package/docs-site/zh/tutorials/upgrade-0-18.mdx +64 -0
- package/docs-site/zh/tutorials/upgrade-0-19.mdx +121 -0
- package/docs-site/zh/tutorials/upgrade-0-20.mdx +12 -0
- package/docs-site/zh/tutorials/verify-judge.mdx +4 -3
- package/docs-site/zh/tutorials/viewing-results.mdx +2 -2
- package/docs-site/zh/tutorials/write-experiment.mdx +1 -1
- package/docs-site/zh/tutorials/write-send.mdx +13 -13
- package/package.json +1 -1
- package/dist/agents/effect-runtime.cjs.map +0 -1
- package/dist/agents/effect-runtime.d.cts +0 -29
- package/dist/agents/effect-runtime.d.mts +0 -29
- package/dist/agents/effect-runtime.d.ts +0 -29
- package/dist/agents/effect-runtime.js +0 -16
- package/dist/agents/effect-runtime.js.map +0 -1
- package/dist/agents/session-slot.cjs.map +0 -1
- package/dist/agents/session-slot.d.cts +0 -12
- package/dist/agents/session-slot.d.mts +0 -12
- package/dist/agents/session-slot.d.ts +0 -12
- package/dist/agents/session-slot.js +0 -6
- package/dist/agents/session-slot.js.map +0 -1
- package/dist/model-slots.cjs.map +0 -1
- package/dist/model-slots.d.cts +0 -19
- package/dist/model-slots.d.mts +0 -19
- package/dist/model-slots.d.ts +0 -19
- package/dist/model-slots.js +0 -8
- package/dist/model-slots.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ReadableAdapterUsageAttachment, AdapterUsageCall, AdapterCallPriceReceipt } from "../record/family/adapter-usage/schema.cjs";
|
|
2
2
|
import type { NumericMaterial } from "../assertions/match.cjs";
|
|
3
|
-
import type {
|
|
3
|
+
import type { ResolvedModelRoles } from "../model-roles.cjs";
|
|
4
4
|
export interface EffectiveCallCost {
|
|
5
5
|
readonly amount: string;
|
|
6
6
|
readonly currency: string;
|
|
@@ -10,7 +10,9 @@ export interface EffectiveCallCost {
|
|
|
10
10
|
};
|
|
11
11
|
readonly state: "complete" | "partial";
|
|
12
12
|
}
|
|
13
|
-
export type EffectiveUsageCall = AdapterUsageCall & {
|
|
13
|
+
export type EffectiveUsageCall = Omit<AdapterUsageCall, "modelSlot"> & {
|
|
14
|
+
readonly modelRole: string | null;
|
|
15
|
+
} & {
|
|
14
16
|
readonly effectiveCost: EffectiveCallCost | null;
|
|
15
17
|
};
|
|
16
18
|
export declare function effectiveUsageCalls(usage: ReadableAdapterUsageAttachment): readonly EffectiveUsageCall[];
|
|
@@ -29,16 +31,22 @@ export declare function effectiveCostTotals(calls: readonly {
|
|
|
29
31
|
}>[];
|
|
30
32
|
totalCalls: number;
|
|
31
33
|
}>;
|
|
32
|
-
export declare function adapterTokenMaterial(usage:
|
|
33
|
-
|
|
34
|
+
export declare function adapterTokenMaterial(usage: {
|
|
35
|
+
readonly collection: ReadableAdapterUsageAttachment["collection"];
|
|
36
|
+
readonly calls: readonly Omit<AdapterUsageCall, "modelSlot">[];
|
|
37
|
+
}, metric: "inputTokens" | "inputTotalTokens" | "outputTokens" | "cacheReadTokens" | "cacheWriteTokens" | "totalTokens"): NumericMaterial;
|
|
38
|
+
export declare function adapterInspectionTokenTotal(usage: {
|
|
39
|
+
readonly collection: ReadableAdapterUsageAttachment["collection"];
|
|
40
|
+
readonly calls: readonly Omit<AdapterUsageCall, "modelSlot">[];
|
|
41
|
+
}, metric: "inputTotalTokens" | "outputTokens" | "totalTokens"): Readonly<{
|
|
34
42
|
state: "partial" | "available" | "unavailable";
|
|
35
43
|
value: number | null;
|
|
36
44
|
observationCount: number;
|
|
37
45
|
}>;
|
|
38
46
|
/** Tuple order is stable across hosts, with missing identities before strings. */
|
|
39
|
-
export declare function compareAdapterModelGroups(left: Pick<
|
|
47
|
+
export declare function compareAdapterModelGroups(left: Pick<EffectiveUsageCall, "modelRole" | "provider" | "model">, right: Pick<EffectiveUsageCall, "modelRole" | "provider" | "model">): number;
|
|
40
48
|
/** Configuration counts and grouped statistics both consume the complete sealed ledger. */
|
|
41
|
-
export declare function projectAdapterModelUsage(usage: ReadableAdapterUsageAttachment | null, models:
|
|
49
|
+
export declare function projectAdapterModelUsage(usage: ReadableAdapterUsageAttachment | null, models: ResolvedModelRoles | undefined, unavailable?: {
|
|
42
50
|
readonly basis: "recorded-calls" | "reported-sends" | "unavailable";
|
|
43
51
|
readonly reason: "source-invalid" | "usage-not-recorded" | "physical-call-identity-not-recorded";
|
|
44
52
|
}, producerCompletenessKnown?: boolean): Readonly<{
|
|
@@ -59,7 +67,7 @@ export declare function projectAdapterModelUsage(usage: ReadableAdapterUsageAtta
|
|
|
59
67
|
readonly collectionComplete: boolean;
|
|
60
68
|
readonly reasons: readonly ("usage-not-recorded" | "source-invalid" | "adapter-usage-required" | "collection-incomplete" | "call-status-unknown" | "no-calls" | "cache-read-missing" | "input-total-missing" | "zero-input-total" | "unsafe-token-total")[];
|
|
61
69
|
};
|
|
62
|
-
readonly
|
|
70
|
+
readonly roles: readonly {
|
|
63
71
|
readonly rate: {
|
|
64
72
|
readonly state: "exact";
|
|
65
73
|
readonly value: number;
|
|
@@ -74,7 +82,7 @@ export declare function projectAdapterModelUsage(usage: ReadableAdapterUsageAtta
|
|
|
74
82
|
readonly unknownStatusCalls: number;
|
|
75
83
|
readonly collectionComplete: boolean;
|
|
76
84
|
readonly reasons: readonly ("usage-not-recorded" | "source-invalid" | "adapter-usage-required" | "collection-incomplete" | "call-status-unknown" | "no-calls" | "cache-read-missing" | "input-total-missing" | "zero-input-total" | "unsafe-token-total")[];
|
|
77
|
-
readonly
|
|
85
|
+
readonly modelRole: string | null;
|
|
78
86
|
}[];
|
|
79
87
|
readonly models: readonly {
|
|
80
88
|
readonly rate: {
|
|
@@ -91,7 +99,7 @@ export declare function projectAdapterModelUsage(usage: ReadableAdapterUsageAtta
|
|
|
91
99
|
readonly unknownStatusCalls: number;
|
|
92
100
|
readonly collectionComplete: boolean;
|
|
93
101
|
readonly reasons: readonly ("usage-not-recorded" | "source-invalid" | "adapter-usage-required" | "collection-incomplete" | "call-status-unknown" | "no-calls" | "cache-read-missing" | "input-total-missing" | "zero-input-total" | "unsafe-token-total")[];
|
|
94
|
-
readonly
|
|
102
|
+
readonly modelRole: string | null;
|
|
95
103
|
readonly provider: string | null;
|
|
96
104
|
readonly model: string | null;
|
|
97
105
|
}[];
|
|
@@ -104,7 +112,7 @@ export declare function projectAdapterModelUsage(usage: ReadableAdapterUsageAtta
|
|
|
104
112
|
recordedCalls: number | null;
|
|
105
113
|
model: string | null;
|
|
106
114
|
reasoningEffort: string | null;
|
|
107
|
-
|
|
115
|
+
modelRole: string;
|
|
108
116
|
}>[];
|
|
109
117
|
}>;
|
|
110
118
|
modelGroups: Readonly<{
|
|
@@ -134,7 +142,7 @@ export declare function projectAdapterModelUsage(usage: ReadableAdapterUsageAtta
|
|
|
134
142
|
readonly collectionComplete: boolean;
|
|
135
143
|
readonly reasons: readonly ("usage-not-recorded" | "source-invalid" | "adapter-usage-required" | "collection-incomplete" | "call-status-unknown" | "no-calls" | "cache-read-missing" | "input-total-missing" | "zero-input-total" | "unsafe-token-total")[];
|
|
136
144
|
};
|
|
137
|
-
readonly
|
|
145
|
+
readonly roles: readonly {
|
|
138
146
|
readonly rate: {
|
|
139
147
|
readonly state: "exact";
|
|
140
148
|
readonly value: number;
|
|
@@ -149,7 +157,7 @@ export declare function projectAdapterModelUsage(usage: ReadableAdapterUsageAtta
|
|
|
149
157
|
readonly unknownStatusCalls: number;
|
|
150
158
|
readonly collectionComplete: boolean;
|
|
151
159
|
readonly reasons: readonly ("usage-not-recorded" | "source-invalid" | "adapter-usage-required" | "collection-incomplete" | "call-status-unknown" | "no-calls" | "cache-read-missing" | "input-total-missing" | "zero-input-total" | "unsafe-token-total")[];
|
|
152
|
-
readonly
|
|
160
|
+
readonly modelRole: string | null;
|
|
153
161
|
}[];
|
|
154
162
|
readonly models: readonly {
|
|
155
163
|
readonly rate: {
|
|
@@ -166,7 +174,7 @@ export declare function projectAdapterModelUsage(usage: ReadableAdapterUsageAtta
|
|
|
166
174
|
readonly unknownStatusCalls: number;
|
|
167
175
|
readonly collectionComplete: boolean;
|
|
168
176
|
readonly reasons: readonly ("usage-not-recorded" | "source-invalid" | "adapter-usage-required" | "collection-incomplete" | "call-status-unknown" | "no-calls" | "cache-read-missing" | "input-total-missing" | "zero-input-total" | "unsafe-token-total")[];
|
|
169
|
-
readonly
|
|
177
|
+
readonly modelRole: string | null;
|
|
170
178
|
readonly provider: string | null;
|
|
171
179
|
readonly model: string | null;
|
|
172
180
|
}[];
|
|
@@ -179,14 +187,14 @@ export declare function projectAdapterModelUsage(usage: ReadableAdapterUsageAtta
|
|
|
179
187
|
recordedCalls: number | null;
|
|
180
188
|
model: string | null;
|
|
181
189
|
reasoningEffort: string | null;
|
|
182
|
-
|
|
190
|
+
modelRole: string;
|
|
183
191
|
}>[];
|
|
184
192
|
}>;
|
|
185
193
|
modelGroups: Readonly<{
|
|
186
194
|
state: "available";
|
|
187
195
|
basis: "recorded-calls";
|
|
188
196
|
groups: readonly Readonly<{
|
|
189
|
-
|
|
197
|
+
modelRole: string | null;
|
|
190
198
|
provider: string | null;
|
|
191
199
|
model: string | null;
|
|
192
200
|
recordedCalls: number;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ReadableAdapterUsageAttachment, AdapterUsageCall, AdapterCallPriceReceipt } from "../record/family/adapter-usage/schema.mjs";
|
|
2
2
|
import type { NumericMaterial } from "../assertions/match.mjs";
|
|
3
|
-
import type {
|
|
3
|
+
import type { ResolvedModelRoles } from "../model-roles.mjs";
|
|
4
4
|
export interface EffectiveCallCost {
|
|
5
5
|
readonly amount: string;
|
|
6
6
|
readonly currency: string;
|
|
@@ -10,7 +10,9 @@ export interface EffectiveCallCost {
|
|
|
10
10
|
};
|
|
11
11
|
readonly state: "complete" | "partial";
|
|
12
12
|
}
|
|
13
|
-
export type EffectiveUsageCall = AdapterUsageCall & {
|
|
13
|
+
export type EffectiveUsageCall = Omit<AdapterUsageCall, "modelSlot"> & {
|
|
14
|
+
readonly modelRole: string | null;
|
|
15
|
+
} & {
|
|
14
16
|
readonly effectiveCost: EffectiveCallCost | null;
|
|
15
17
|
};
|
|
16
18
|
export declare function effectiveUsageCalls(usage: ReadableAdapterUsageAttachment): readonly EffectiveUsageCall[];
|
|
@@ -29,16 +31,22 @@ export declare function effectiveCostTotals(calls: readonly {
|
|
|
29
31
|
}>[];
|
|
30
32
|
totalCalls: number;
|
|
31
33
|
}>;
|
|
32
|
-
export declare function adapterTokenMaterial(usage:
|
|
33
|
-
|
|
34
|
+
export declare function adapterTokenMaterial(usage: {
|
|
35
|
+
readonly collection: ReadableAdapterUsageAttachment["collection"];
|
|
36
|
+
readonly calls: readonly Omit<AdapterUsageCall, "modelSlot">[];
|
|
37
|
+
}, metric: "inputTokens" | "inputTotalTokens" | "outputTokens" | "cacheReadTokens" | "cacheWriteTokens" | "totalTokens"): NumericMaterial;
|
|
38
|
+
export declare function adapterInspectionTokenTotal(usage: {
|
|
39
|
+
readonly collection: ReadableAdapterUsageAttachment["collection"];
|
|
40
|
+
readonly calls: readonly Omit<AdapterUsageCall, "modelSlot">[];
|
|
41
|
+
}, metric: "inputTotalTokens" | "outputTokens" | "totalTokens"): Readonly<{
|
|
34
42
|
state: "partial" | "available" | "unavailable";
|
|
35
43
|
value: number | null;
|
|
36
44
|
observationCount: number;
|
|
37
45
|
}>;
|
|
38
46
|
/** Tuple order is stable across hosts, with missing identities before strings. */
|
|
39
|
-
export declare function compareAdapterModelGroups(left: Pick<
|
|
47
|
+
export declare function compareAdapterModelGroups(left: Pick<EffectiveUsageCall, "modelRole" | "provider" | "model">, right: Pick<EffectiveUsageCall, "modelRole" | "provider" | "model">): number;
|
|
40
48
|
/** Configuration counts and grouped statistics both consume the complete sealed ledger. */
|
|
41
|
-
export declare function projectAdapterModelUsage(usage: ReadableAdapterUsageAttachment | null, models:
|
|
49
|
+
export declare function projectAdapterModelUsage(usage: ReadableAdapterUsageAttachment | null, models: ResolvedModelRoles | undefined, unavailable?: {
|
|
42
50
|
readonly basis: "recorded-calls" | "reported-sends" | "unavailable";
|
|
43
51
|
readonly reason: "source-invalid" | "usage-not-recorded" | "physical-call-identity-not-recorded";
|
|
44
52
|
}, producerCompletenessKnown?: boolean): Readonly<{
|
|
@@ -59,7 +67,7 @@ export declare function projectAdapterModelUsage(usage: ReadableAdapterUsageAtta
|
|
|
59
67
|
readonly collectionComplete: boolean;
|
|
60
68
|
readonly reasons: readonly ("usage-not-recorded" | "source-invalid" | "adapter-usage-required" | "collection-incomplete" | "call-status-unknown" | "no-calls" | "cache-read-missing" | "input-total-missing" | "zero-input-total" | "unsafe-token-total")[];
|
|
61
69
|
};
|
|
62
|
-
readonly
|
|
70
|
+
readonly roles: readonly {
|
|
63
71
|
readonly rate: {
|
|
64
72
|
readonly state: "exact";
|
|
65
73
|
readonly value: number;
|
|
@@ -74,7 +82,7 @@ export declare function projectAdapterModelUsage(usage: ReadableAdapterUsageAtta
|
|
|
74
82
|
readonly unknownStatusCalls: number;
|
|
75
83
|
readonly collectionComplete: boolean;
|
|
76
84
|
readonly reasons: readonly ("usage-not-recorded" | "source-invalid" | "adapter-usage-required" | "collection-incomplete" | "call-status-unknown" | "no-calls" | "cache-read-missing" | "input-total-missing" | "zero-input-total" | "unsafe-token-total")[];
|
|
77
|
-
readonly
|
|
85
|
+
readonly modelRole: string | null;
|
|
78
86
|
}[];
|
|
79
87
|
readonly models: readonly {
|
|
80
88
|
readonly rate: {
|
|
@@ -91,7 +99,7 @@ export declare function projectAdapterModelUsage(usage: ReadableAdapterUsageAtta
|
|
|
91
99
|
readonly unknownStatusCalls: number;
|
|
92
100
|
readonly collectionComplete: boolean;
|
|
93
101
|
readonly reasons: readonly ("usage-not-recorded" | "source-invalid" | "adapter-usage-required" | "collection-incomplete" | "call-status-unknown" | "no-calls" | "cache-read-missing" | "input-total-missing" | "zero-input-total" | "unsafe-token-total")[];
|
|
94
|
-
readonly
|
|
102
|
+
readonly modelRole: string | null;
|
|
95
103
|
readonly provider: string | null;
|
|
96
104
|
readonly model: string | null;
|
|
97
105
|
}[];
|
|
@@ -104,7 +112,7 @@ export declare function projectAdapterModelUsage(usage: ReadableAdapterUsageAtta
|
|
|
104
112
|
recordedCalls: number | null;
|
|
105
113
|
model: string | null;
|
|
106
114
|
reasoningEffort: string | null;
|
|
107
|
-
|
|
115
|
+
modelRole: string;
|
|
108
116
|
}>[];
|
|
109
117
|
}>;
|
|
110
118
|
modelGroups: Readonly<{
|
|
@@ -134,7 +142,7 @@ export declare function projectAdapterModelUsage(usage: ReadableAdapterUsageAtta
|
|
|
134
142
|
readonly collectionComplete: boolean;
|
|
135
143
|
readonly reasons: readonly ("usage-not-recorded" | "source-invalid" | "adapter-usage-required" | "collection-incomplete" | "call-status-unknown" | "no-calls" | "cache-read-missing" | "input-total-missing" | "zero-input-total" | "unsafe-token-total")[];
|
|
136
144
|
};
|
|
137
|
-
readonly
|
|
145
|
+
readonly roles: readonly {
|
|
138
146
|
readonly rate: {
|
|
139
147
|
readonly state: "exact";
|
|
140
148
|
readonly value: number;
|
|
@@ -149,7 +157,7 @@ export declare function projectAdapterModelUsage(usage: ReadableAdapterUsageAtta
|
|
|
149
157
|
readonly unknownStatusCalls: number;
|
|
150
158
|
readonly collectionComplete: boolean;
|
|
151
159
|
readonly reasons: readonly ("usage-not-recorded" | "source-invalid" | "adapter-usage-required" | "collection-incomplete" | "call-status-unknown" | "no-calls" | "cache-read-missing" | "input-total-missing" | "zero-input-total" | "unsafe-token-total")[];
|
|
152
|
-
readonly
|
|
160
|
+
readonly modelRole: string | null;
|
|
153
161
|
}[];
|
|
154
162
|
readonly models: readonly {
|
|
155
163
|
readonly rate: {
|
|
@@ -166,7 +174,7 @@ export declare function projectAdapterModelUsage(usage: ReadableAdapterUsageAtta
|
|
|
166
174
|
readonly unknownStatusCalls: number;
|
|
167
175
|
readonly collectionComplete: boolean;
|
|
168
176
|
readonly reasons: readonly ("usage-not-recorded" | "source-invalid" | "adapter-usage-required" | "collection-incomplete" | "call-status-unknown" | "no-calls" | "cache-read-missing" | "input-total-missing" | "zero-input-total" | "unsafe-token-total")[];
|
|
169
|
-
readonly
|
|
177
|
+
readonly modelRole: string | null;
|
|
170
178
|
readonly provider: string | null;
|
|
171
179
|
readonly model: string | null;
|
|
172
180
|
}[];
|
|
@@ -179,14 +187,14 @@ export declare function projectAdapterModelUsage(usage: ReadableAdapterUsageAtta
|
|
|
179
187
|
recordedCalls: number | null;
|
|
180
188
|
model: string | null;
|
|
181
189
|
reasoningEffort: string | null;
|
|
182
|
-
|
|
190
|
+
modelRole: string;
|
|
183
191
|
}>[];
|
|
184
192
|
}>;
|
|
185
193
|
modelGroups: Readonly<{
|
|
186
194
|
state: "available";
|
|
187
195
|
basis: "recorded-calls";
|
|
188
196
|
groups: readonly Readonly<{
|
|
189
|
-
|
|
197
|
+
modelRole: string | null;
|
|
190
198
|
provider: string | null;
|
|
191
199
|
model: string | null;
|
|
192
200
|
recordedCalls: number;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ReadableAdapterUsageAttachment, AdapterUsageCall, AdapterCallPriceReceipt } from "../record/family/adapter-usage/schema.js";
|
|
2
2
|
import type { NumericMaterial } from "../assertions/match.js";
|
|
3
|
-
import type {
|
|
3
|
+
import type { ResolvedModelRoles } from "../model-roles.js";
|
|
4
4
|
export interface EffectiveCallCost {
|
|
5
5
|
readonly amount: string;
|
|
6
6
|
readonly currency: string;
|
|
@@ -10,7 +10,9 @@ export interface EffectiveCallCost {
|
|
|
10
10
|
};
|
|
11
11
|
readonly state: "complete" | "partial";
|
|
12
12
|
}
|
|
13
|
-
export type EffectiveUsageCall = AdapterUsageCall & {
|
|
13
|
+
export type EffectiveUsageCall = Omit<AdapterUsageCall, "modelSlot"> & {
|
|
14
|
+
readonly modelRole: string | null;
|
|
15
|
+
} & {
|
|
14
16
|
readonly effectiveCost: EffectiveCallCost | null;
|
|
15
17
|
};
|
|
16
18
|
export declare function effectiveUsageCalls(usage: ReadableAdapterUsageAttachment): readonly EffectiveUsageCall[];
|
|
@@ -29,16 +31,22 @@ export declare function effectiveCostTotals(calls: readonly {
|
|
|
29
31
|
}>[];
|
|
30
32
|
totalCalls: number;
|
|
31
33
|
}>;
|
|
32
|
-
export declare function adapterTokenMaterial(usage:
|
|
33
|
-
|
|
34
|
+
export declare function adapterTokenMaterial(usage: {
|
|
35
|
+
readonly collection: ReadableAdapterUsageAttachment["collection"];
|
|
36
|
+
readonly calls: readonly Omit<AdapterUsageCall, "modelSlot">[];
|
|
37
|
+
}, metric: "inputTokens" | "inputTotalTokens" | "outputTokens" | "cacheReadTokens" | "cacheWriteTokens" | "totalTokens"): NumericMaterial;
|
|
38
|
+
export declare function adapterInspectionTokenTotal(usage: {
|
|
39
|
+
readonly collection: ReadableAdapterUsageAttachment["collection"];
|
|
40
|
+
readonly calls: readonly Omit<AdapterUsageCall, "modelSlot">[];
|
|
41
|
+
}, metric: "inputTotalTokens" | "outputTokens" | "totalTokens"): Readonly<{
|
|
34
42
|
state: "partial" | "available" | "unavailable";
|
|
35
43
|
value: number | null;
|
|
36
44
|
observationCount: number;
|
|
37
45
|
}>;
|
|
38
46
|
/** Tuple order is stable across hosts, with missing identities before strings. */
|
|
39
|
-
export declare function compareAdapterModelGroups(left: Pick<
|
|
47
|
+
export declare function compareAdapterModelGroups(left: Pick<EffectiveUsageCall, "modelRole" | "provider" | "model">, right: Pick<EffectiveUsageCall, "modelRole" | "provider" | "model">): number;
|
|
40
48
|
/** Configuration counts and grouped statistics both consume the complete sealed ledger. */
|
|
41
|
-
export declare function projectAdapterModelUsage(usage: ReadableAdapterUsageAttachment | null, models:
|
|
49
|
+
export declare function projectAdapterModelUsage(usage: ReadableAdapterUsageAttachment | null, models: ResolvedModelRoles | undefined, unavailable?: {
|
|
42
50
|
readonly basis: "recorded-calls" | "reported-sends" | "unavailable";
|
|
43
51
|
readonly reason: "source-invalid" | "usage-not-recorded" | "physical-call-identity-not-recorded";
|
|
44
52
|
}, producerCompletenessKnown?: boolean): Readonly<{
|
|
@@ -59,7 +67,7 @@ export declare function projectAdapterModelUsage(usage: ReadableAdapterUsageAtta
|
|
|
59
67
|
readonly collectionComplete: boolean;
|
|
60
68
|
readonly reasons: readonly ("usage-not-recorded" | "source-invalid" | "adapter-usage-required" | "collection-incomplete" | "call-status-unknown" | "no-calls" | "cache-read-missing" | "input-total-missing" | "zero-input-total" | "unsafe-token-total")[];
|
|
61
69
|
};
|
|
62
|
-
readonly
|
|
70
|
+
readonly roles: readonly {
|
|
63
71
|
readonly rate: {
|
|
64
72
|
readonly state: "exact";
|
|
65
73
|
readonly value: number;
|
|
@@ -74,7 +82,7 @@ export declare function projectAdapterModelUsage(usage: ReadableAdapterUsageAtta
|
|
|
74
82
|
readonly unknownStatusCalls: number;
|
|
75
83
|
readonly collectionComplete: boolean;
|
|
76
84
|
readonly reasons: readonly ("usage-not-recorded" | "source-invalid" | "adapter-usage-required" | "collection-incomplete" | "call-status-unknown" | "no-calls" | "cache-read-missing" | "input-total-missing" | "zero-input-total" | "unsafe-token-total")[];
|
|
77
|
-
readonly
|
|
85
|
+
readonly modelRole: string | null;
|
|
78
86
|
}[];
|
|
79
87
|
readonly models: readonly {
|
|
80
88
|
readonly rate: {
|
|
@@ -91,7 +99,7 @@ export declare function projectAdapterModelUsage(usage: ReadableAdapterUsageAtta
|
|
|
91
99
|
readonly unknownStatusCalls: number;
|
|
92
100
|
readonly collectionComplete: boolean;
|
|
93
101
|
readonly reasons: readonly ("usage-not-recorded" | "source-invalid" | "adapter-usage-required" | "collection-incomplete" | "call-status-unknown" | "no-calls" | "cache-read-missing" | "input-total-missing" | "zero-input-total" | "unsafe-token-total")[];
|
|
94
|
-
readonly
|
|
102
|
+
readonly modelRole: string | null;
|
|
95
103
|
readonly provider: string | null;
|
|
96
104
|
readonly model: string | null;
|
|
97
105
|
}[];
|
|
@@ -104,7 +112,7 @@ export declare function projectAdapterModelUsage(usage: ReadableAdapterUsageAtta
|
|
|
104
112
|
recordedCalls: number | null;
|
|
105
113
|
model: string | null;
|
|
106
114
|
reasoningEffort: string | null;
|
|
107
|
-
|
|
115
|
+
modelRole: string;
|
|
108
116
|
}>[];
|
|
109
117
|
}>;
|
|
110
118
|
modelGroups: Readonly<{
|
|
@@ -134,7 +142,7 @@ export declare function projectAdapterModelUsage(usage: ReadableAdapterUsageAtta
|
|
|
134
142
|
readonly collectionComplete: boolean;
|
|
135
143
|
readonly reasons: readonly ("usage-not-recorded" | "source-invalid" | "adapter-usage-required" | "collection-incomplete" | "call-status-unknown" | "no-calls" | "cache-read-missing" | "input-total-missing" | "zero-input-total" | "unsafe-token-total")[];
|
|
136
144
|
};
|
|
137
|
-
readonly
|
|
145
|
+
readonly roles: readonly {
|
|
138
146
|
readonly rate: {
|
|
139
147
|
readonly state: "exact";
|
|
140
148
|
readonly value: number;
|
|
@@ -149,7 +157,7 @@ export declare function projectAdapterModelUsage(usage: ReadableAdapterUsageAtta
|
|
|
149
157
|
readonly unknownStatusCalls: number;
|
|
150
158
|
readonly collectionComplete: boolean;
|
|
151
159
|
readonly reasons: readonly ("usage-not-recorded" | "source-invalid" | "adapter-usage-required" | "collection-incomplete" | "call-status-unknown" | "no-calls" | "cache-read-missing" | "input-total-missing" | "zero-input-total" | "unsafe-token-total")[];
|
|
152
|
-
readonly
|
|
160
|
+
readonly modelRole: string | null;
|
|
153
161
|
}[];
|
|
154
162
|
readonly models: readonly {
|
|
155
163
|
readonly rate: {
|
|
@@ -166,7 +174,7 @@ export declare function projectAdapterModelUsage(usage: ReadableAdapterUsageAtta
|
|
|
166
174
|
readonly unknownStatusCalls: number;
|
|
167
175
|
readonly collectionComplete: boolean;
|
|
168
176
|
readonly reasons: readonly ("usage-not-recorded" | "source-invalid" | "adapter-usage-required" | "collection-incomplete" | "call-status-unknown" | "no-calls" | "cache-read-missing" | "input-total-missing" | "zero-input-total" | "unsafe-token-total")[];
|
|
169
|
-
readonly
|
|
177
|
+
readonly modelRole: string | null;
|
|
170
178
|
readonly provider: string | null;
|
|
171
179
|
readonly model: string | null;
|
|
172
180
|
}[];
|
|
@@ -179,14 +187,14 @@ export declare function projectAdapterModelUsage(usage: ReadableAdapterUsageAtta
|
|
|
179
187
|
recordedCalls: number | null;
|
|
180
188
|
model: string | null;
|
|
181
189
|
reasoningEffort: string | null;
|
|
182
|
-
|
|
190
|
+
modelRole: string;
|
|
183
191
|
}>[];
|
|
184
192
|
}>;
|
|
185
193
|
modelGroups: Readonly<{
|
|
186
194
|
state: "available";
|
|
187
195
|
basis: "recorded-calls";
|
|
188
196
|
groups: readonly Readonly<{
|
|
189
|
-
|
|
197
|
+
modelRole: string | null;
|
|
190
198
|
provider: string | null;
|
|
191
199
|
model: string | null;
|
|
192
200
|
recordedCalls: number;
|
package/dist/o11y/cache-read.cjs
CHANGED
|
@@ -36,9 +36,9 @@ const SummaryShape = effect_1.Schema.Struct(fields);
|
|
|
36
36
|
const Summary = SummaryShape.check(effect_1.Schema.makeFilter(consistent));
|
|
37
37
|
exports.CacheReadReportSchema = effect_1.Schema.Struct({
|
|
38
38
|
total: Summary,
|
|
39
|
-
|
|
40
|
-
models: effect_1.Schema.Array(effect_1.Schema.Struct({
|
|
41
|
-
}).check(effect_1.Schema.makeFilter((value) => value.
|
|
39
|
+
roles: effect_1.Schema.Array(effect_1.Schema.Struct({ modelRole: effect_1.Schema.NullOr(effect_1.Schema.String), ...fields }).check(effect_1.Schema.makeFilter(consistent))),
|
|
40
|
+
models: effect_1.Schema.Array(effect_1.Schema.Struct({ modelRole: effect_1.Schema.NullOr(effect_1.Schema.String), provider: effect_1.Schema.NullOr(effect_1.Schema.String), model: effect_1.Schema.NullOr(effect_1.Schema.String), ...fields }).check(effect_1.Schema.makeFilter(consistent))),
|
|
41
|
+
}).check(effect_1.Schema.makeFilter((value) => value.roles.length <= 65 && value.models.length <= 4000));
|
|
42
42
|
function summary(calls, collectionComplete, absent) {
|
|
43
43
|
let numerator = 0;
|
|
44
44
|
let denominator = 0;
|
|
@@ -82,18 +82,18 @@ function summary(calls, collectionComplete, absent) {
|
|
|
82
82
|
}
|
|
83
83
|
const compare = (a, b) => a === b ? 0 : a === null ? -1 : b === null ? 1 : a < b ? -1 : 1;
|
|
84
84
|
/** A historical collection marked complete is not proof of an explicit producer seal. */
|
|
85
|
-
function projectCacheRead(usage,
|
|
85
|
+
function projectCacheRead(usage, roles, producerCompletenessKnown, absent = "usage-not-recorded") {
|
|
86
86
|
if (usage === null)
|
|
87
|
-
return Object.freeze({ total: summary([], false, absent),
|
|
87
|
+
return Object.freeze({ total: summary([], false, absent), roles: Object.freeze([]), models: Object.freeze([]) });
|
|
88
88
|
const complete = producerCompletenessKnown && usage.collection.state === "complete";
|
|
89
|
-
const
|
|
89
|
+
const byRole = new Map(Object.keys(roles ?? {}).map((role) => [role, []]));
|
|
90
90
|
const byModel = new Map();
|
|
91
91
|
for (const call of usage.calls) {
|
|
92
|
-
const
|
|
93
|
-
if (
|
|
94
|
-
|
|
92
|
+
const role = byRole.get(call.modelSlot);
|
|
93
|
+
if (role === undefined)
|
|
94
|
+
byRole.set(call.modelSlot, [call]);
|
|
95
95
|
else
|
|
96
|
-
|
|
96
|
+
role.push(call);
|
|
97
97
|
const key = JSON.stringify([call.modelSlot, call.provider, call.model]);
|
|
98
98
|
const model = byModel.get(key);
|
|
99
99
|
if (model === undefined)
|
|
@@ -102,11 +102,11 @@ function projectCacheRead(usage, slots, producerCompletenessKnown, absent = "usa
|
|
|
102
102
|
model.push(call);
|
|
103
103
|
}
|
|
104
104
|
const models = [...byModel.values()].map((calls) => {
|
|
105
|
-
const { modelSlot, provider, model } = calls[0];
|
|
106
|
-
return Object.freeze({
|
|
107
|
-
}).sort((a, b) => compare(a.
|
|
105
|
+
const { modelSlot: modelRole, provider, model } = calls[0];
|
|
106
|
+
return Object.freeze({ modelRole, provider, model, ...summary(calls, complete) });
|
|
107
|
+
}).sort((a, b) => compare(a.modelRole, b.modelRole) || compare(a.provider, b.provider) || compare(a.model, b.model));
|
|
108
108
|
return Object.freeze({ total: summary(usage.calls, complete),
|
|
109
|
-
|
|
109
|
+
roles: Object.freeze([...byRole].sort(([a], [b]) => compare(a, b)).map(([modelRole, calls]) => Object.freeze({ modelRole, ...summary(calls, complete) }))),
|
|
110
110
|
models: Object.freeze(models),
|
|
111
111
|
});
|
|
112
112
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-read.js","sourceRoot":"","sources":["cache-read.ts"],"names":[],"mappings":"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","sourcesContent":["import { Schema } from \"effect\";\nimport type { ResolvedModelSlots } from \"../model-slots.ts\";\nimport type { AdapterUsageCall, ReadableAdapterUsageAttachment } from \"../record/family/adapter-usage/schema.ts\";\nimport { NonNegativeSafeIntegerSchema } from \"../record/family/common.ts\";\nconst Reason = Schema.Literals([\n \"usage-not-recorded\", \"source-invalid\", \"adapter-usage-required\", \"collection-incomplete\",\n \"call-status-unknown\", \"no-calls\", \"cache-read-missing\", \"input-total-missing\", \"zero-input-total\", \"unsafe-token-total\",\n]);\ntype Reason = typeof Reason.Type;\nconst Rate = Schema.Union([\n Schema.Struct({ state: Schema.Literal(\"exact\"), value: Schema.Number.check(Schema.makeFilter((value) => Number.isFinite(value) && value >= 0 && value <= 1)) }),\n Schema.Struct({ state: Schema.Literal(\"unavailable\"), reason: Reason }),\n]);\nconst fields = {\n rate: Rate,\n recordedCalls: NonNegativeSafeIntegerSchema,\n coveredCalls: NonNegativeSafeIntegerSchema,\n missingCacheReadCalls: NonNegativeSafeIntegerSchema,\n missingInputTotalCalls: NonNegativeSafeIntegerSchema,\n unknownStatusCalls: NonNegativeSafeIntegerSchema,\n collectionComplete: Schema.Boolean,\n reasons: Schema.Array(Reason),\n};\nconst consistent = (value: typeof SummaryShape.Type): boolean => {\n const count = value.recordedCalls;\n return count <= 4000 && value.coveredCalls <= count && value.unknownStatusCalls <= count &&\n value.missingCacheReadCalls <= count && value.missingInputTotalCalls <= count &&\n value.coveredCalls <= count - Math.max(value.missingCacheReadCalls, value.missingInputTotalCalls) &&\n value.coveredCalls >= count - value.missingCacheReadCalls - value.missingInputTotalCalls &&\n new Set(value.reasons).size === value.reasons.length &&\n (value.rate.state === \"exact\" ? value.reasons.length === 0 && value.collectionComplete && count > 0 &&\n value.coveredCalls === count && value.unknownStatusCalls === 0 : value.rate.reason === value.reasons[0]);\n};\nconst SummaryShape = Schema.Struct(fields);\nconst Summary = SummaryShape.check(Schema.makeFilter(consistent));\n/** Token-weighted cache reading, with explicit input coverage and collection completeness. */\nexport type CacheReadSummary = typeof Summary.Type;\nexport const CacheReadReportSchema = Schema.Struct({\n total: Summary,\n modelSlots: Schema.Array(Schema.Struct({ modelSlot: Schema.NullOr(Schema.String), ...fields }).check(Schema.makeFilter(consistent))),\n models: Schema.Array(Schema.Struct({ modelSlot: Schema.NullOr(Schema.String), provider: Schema.NullOr(Schema.String), model: Schema.NullOr(Schema.String), ...fields }).check(Schema.makeFilter(consistent))),\n}).check(Schema.makeFilter((value) => value.modelSlots.length <= 65 && value.models.length <= 4000));\n/** Complete per-Attempt report; unknown model identities remain null. */\nexport type CacheReadReport = typeof CacheReadReportSchema.Type;\nfunction summary(calls: readonly AdapterUsageCall[], collectionComplete: boolean, absent?: Reason): CacheReadSummary {\n let numerator = 0;\n let denominator = 0;\n let coveredCalls = 0;\n let missingCacheReadCalls = 0;\n let missingInputTotalCalls = 0;\n let unknownStatusCalls = 0;\n let unsafe = false;\n for (const call of calls) {\n const total = call.inputTotalTokens ?? (call.inputTokens !== null && call.cacheReadTokens !== null && call.cacheWriteTokens !== null\n ? call.inputTokens + call.cacheReadTokens + call.cacheWriteTokens : null);\n if (call.status === \"unknown\")\n unknownStatusCalls++;\n if (call.cacheReadTokens === null)\n missingCacheReadCalls++;\n else\n numerator += call.cacheReadTokens;\n if (total === null)\n missingInputTotalCalls++;\n else\n denominator += total;\n if (total !== null && call.cacheReadTokens !== null)\n coveredCalls++;\n if ((total !== null && !Number.isSafeInteger(total)) || !Number.isSafeInteger(numerator) || !Number.isSafeInteger(denominator))\n unsafe = true;\n }\n const reasons: Reason[] = absent === undefined ? [\n ...(!collectionComplete ? [\"collection-incomplete\" as const] : []),\n ...(unknownStatusCalls > 0 ? [\"call-status-unknown\" as const] : []),\n ...(calls.length === 0 ? [\"no-calls\" as const] : []),\n ...(missingCacheReadCalls > 0 ? [\"cache-read-missing\" as const] : []),\n ...(missingInputTotalCalls > 0 ? [\"input-total-missing\" as const] : []),\n ...(calls.length > 0 && missingInputTotalCalls === 0 && denominator === 0 ? [\"zero-input-total\" as const] : []),\n ...(unsafe ? [\"unsafe-token-total\" as const] : []),\n ] : [absent];\n const rate: CacheReadSummary[\"rate\"] = reasons.length === 0\n ? Object.freeze({ state: \"exact\", value: numerator / denominator })\n : Object.freeze({ state: \"unavailable\", reason: reasons[0]! });\n return Object.freeze({ rate, recordedCalls: calls.length, coveredCalls, missingCacheReadCalls, missingInputTotalCalls,\n unknownStatusCalls, collectionComplete, reasons: Object.freeze(reasons) });\n}\nconst compare = (a: string | null, b: string | null): number => a === b ? 0 : a === null ? -1 : b === null ? 1 : a < b ? -1 : 1;\n/** A historical collection marked complete is not proof of an explicit producer seal. */\nexport function projectCacheRead(usage: ReadableAdapterUsageAttachment | null, slots: ResolvedModelSlots | undefined, producerCompletenessKnown: boolean, absent: \"usage-not-recorded\" | \"source-invalid\" | \"adapter-usage-required\" = \"usage-not-recorded\"): CacheReadReport {\n if (usage === null)\n return Object.freeze({ total: summary([], false, absent), modelSlots: Object.freeze([]), models: Object.freeze([]) });\n const complete = producerCompletenessKnown && usage.collection.state === \"complete\";\n const bySlot = new Map<string | null, AdapterUsageCall[]>(Object.keys(slots ?? {}).map((slot) => [slot, []]));\n const byModel = new Map<string, AdapterUsageCall[]>();\n for (const call of usage.calls) {\n const slot = bySlot.get(call.modelSlot);\n if (slot === undefined)\n bySlot.set(call.modelSlot, [call]);\n else\n slot.push(call);\n const key = JSON.stringify([call.modelSlot, call.provider, call.model]);\n const model = byModel.get(key);\n if (model === undefined)\n byModel.set(key, [call]);\n else\n model.push(call);\n }\n const models = [...byModel.values()].map((calls) => {\n const { modelSlot, provider, model } = calls[0]!;\n return Object.freeze({ modelSlot, provider, model, ...summary(calls, complete) });\n }).sort((a, b) => compare(a.modelSlot, b.modelSlot) || compare(a.provider, b.provider) || compare(a.model, b.model));\n return Object.freeze({ total: summary(usage.calls, complete),\n modelSlots: Object.freeze([...bySlot].sort(([a], [b]) => compare(a, b)).map(([modelSlot, calls]) => Object.freeze({ modelSlot, ...summary(calls, complete) }))),\n models: Object.freeze(models),\n });\n}\n"]}
|
|
1
|
+
{"version":3,"file":"cache-read.js","sourceRoot":"","sources":["cache-read.ts"],"names":[],"mappings":"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","sourcesContent":["import { Schema } from \"effect\";\nimport type { ResolvedModelRoles } from \"../model-roles.ts\";\nimport type { AdapterUsageCall, ReadableAdapterUsageAttachment } from \"../record/family/adapter-usage/schema.ts\";\nimport { NonNegativeSafeIntegerSchema } from \"../record/family/common.ts\";\nconst Reason = Schema.Literals([\n \"usage-not-recorded\", \"source-invalid\", \"adapter-usage-required\", \"collection-incomplete\",\n \"call-status-unknown\", \"no-calls\", \"cache-read-missing\", \"input-total-missing\", \"zero-input-total\", \"unsafe-token-total\",\n]);\ntype Reason = typeof Reason.Type;\nconst Rate = Schema.Union([\n Schema.Struct({ state: Schema.Literal(\"exact\"), value: Schema.Number.check(Schema.makeFilter((value) => Number.isFinite(value) && value >= 0 && value <= 1)) }),\n Schema.Struct({ state: Schema.Literal(\"unavailable\"), reason: Reason }),\n]);\nconst fields = {\n rate: Rate,\n recordedCalls: NonNegativeSafeIntegerSchema,\n coveredCalls: NonNegativeSafeIntegerSchema,\n missingCacheReadCalls: NonNegativeSafeIntegerSchema,\n missingInputTotalCalls: NonNegativeSafeIntegerSchema,\n unknownStatusCalls: NonNegativeSafeIntegerSchema,\n collectionComplete: Schema.Boolean,\n reasons: Schema.Array(Reason),\n};\nconst consistent = (value: typeof SummaryShape.Type): boolean => {\n const count = value.recordedCalls;\n return count <= 4000 && value.coveredCalls <= count && value.unknownStatusCalls <= count &&\n value.missingCacheReadCalls <= count && value.missingInputTotalCalls <= count &&\n value.coveredCalls <= count - Math.max(value.missingCacheReadCalls, value.missingInputTotalCalls) &&\n value.coveredCalls >= count - value.missingCacheReadCalls - value.missingInputTotalCalls &&\n new Set(value.reasons).size === value.reasons.length &&\n (value.rate.state === \"exact\" ? value.reasons.length === 0 && value.collectionComplete && count > 0 &&\n value.coveredCalls === count && value.unknownStatusCalls === 0 : value.rate.reason === value.reasons[0]);\n};\nconst SummaryShape = Schema.Struct(fields);\nconst Summary = SummaryShape.check(Schema.makeFilter(consistent));\n/** Token-weighted cache reading, with explicit input coverage and collection completeness. */\nexport type CacheReadSummary = typeof Summary.Type;\nexport const CacheReadReportSchema = Schema.Struct({\n total: Summary,\n roles: Schema.Array(Schema.Struct({ modelRole: Schema.NullOr(Schema.String), ...fields }).check(Schema.makeFilter(consistent))),\n models: Schema.Array(Schema.Struct({ modelRole: Schema.NullOr(Schema.String), provider: Schema.NullOr(Schema.String), model: Schema.NullOr(Schema.String), ...fields }).check(Schema.makeFilter(consistent))),\n}).check(Schema.makeFilter((value) => value.roles.length <= 65 && value.models.length <= 4000));\n/** Complete per-Attempt report; unknown model identities remain null. */\nexport type CacheReadReport = typeof CacheReadReportSchema.Type;\nfunction summary(calls: readonly AdapterUsageCall[], collectionComplete: boolean, absent?: Reason): CacheReadSummary {\n let numerator = 0;\n let denominator = 0;\n let coveredCalls = 0;\n let missingCacheReadCalls = 0;\n let missingInputTotalCalls = 0;\n let unknownStatusCalls = 0;\n let unsafe = false;\n for (const call of calls) {\n const total = call.inputTotalTokens ?? (call.inputTokens !== null && call.cacheReadTokens !== null && call.cacheWriteTokens !== null\n ? call.inputTokens + call.cacheReadTokens + call.cacheWriteTokens : null);\n if (call.status === \"unknown\")\n unknownStatusCalls++;\n if (call.cacheReadTokens === null)\n missingCacheReadCalls++;\n else\n numerator += call.cacheReadTokens;\n if (total === null)\n missingInputTotalCalls++;\n else\n denominator += total;\n if (total !== null && call.cacheReadTokens !== null)\n coveredCalls++;\n if ((total !== null && !Number.isSafeInteger(total)) || !Number.isSafeInteger(numerator) || !Number.isSafeInteger(denominator))\n unsafe = true;\n }\n const reasons: Reason[] = absent === undefined ? [\n ...(!collectionComplete ? [\"collection-incomplete\" as const] : []),\n ...(unknownStatusCalls > 0 ? [\"call-status-unknown\" as const] : []),\n ...(calls.length === 0 ? [\"no-calls\" as const] : []),\n ...(missingCacheReadCalls > 0 ? [\"cache-read-missing\" as const] : []),\n ...(missingInputTotalCalls > 0 ? [\"input-total-missing\" as const] : []),\n ...(calls.length > 0 && missingInputTotalCalls === 0 && denominator === 0 ? [\"zero-input-total\" as const] : []),\n ...(unsafe ? [\"unsafe-token-total\" as const] : []),\n ] : [absent];\n const rate: CacheReadSummary[\"rate\"] = reasons.length === 0\n ? Object.freeze({ state: \"exact\", value: numerator / denominator })\n : Object.freeze({ state: \"unavailable\", reason: reasons[0]! });\n return Object.freeze({ rate, recordedCalls: calls.length, coveredCalls, missingCacheReadCalls, missingInputTotalCalls,\n unknownStatusCalls, collectionComplete, reasons: Object.freeze(reasons) });\n}\nconst compare = (a: string | null, b: string | null): number => a === b ? 0 : a === null ? -1 : b === null ? 1 : a < b ? -1 : 1;\n/** A historical collection marked complete is not proof of an explicit producer seal. */\nexport function projectCacheRead(usage: ReadableAdapterUsageAttachment | null, roles: ResolvedModelRoles | undefined, producerCompletenessKnown: boolean, absent: \"usage-not-recorded\" | \"source-invalid\" | \"adapter-usage-required\" = \"usage-not-recorded\"): CacheReadReport {\n if (usage === null)\n return Object.freeze({ total: summary([], false, absent), roles: Object.freeze([]), models: Object.freeze([]) });\n const complete = producerCompletenessKnown && usage.collection.state === \"complete\";\n const byRole = new Map<string | null, AdapterUsageCall[]>(Object.keys(roles ?? {}).map((role) => [role, []]));\n const byModel = new Map<string, AdapterUsageCall[]>();\n for (const call of usage.calls) {\n const role = byRole.get(call.modelSlot);\n if (role === undefined)\n byRole.set(call.modelSlot, [call]);\n else\n role.push(call);\n const key = JSON.stringify([call.modelSlot, call.provider, call.model]);\n const model = byModel.get(key);\n if (model === undefined)\n byModel.set(key, [call]);\n else\n model.push(call);\n }\n const models = [...byModel.values()].map((calls) => {\n const { modelSlot: modelRole, provider, model } = calls[0]!;\n return Object.freeze({ modelRole, provider, model, ...summary(calls, complete) });\n }).sort((a, b) => compare(a.modelRole, b.modelRole) || compare(a.provider, b.provider) || compare(a.model, b.model));\n return Object.freeze({ total: summary(usage.calls, complete),\n roles: Object.freeze([...byRole].sort(([a], [b]) => compare(a, b)).map(([modelRole, calls]) => Object.freeze({ modelRole, ...summary(calls, complete) }))),\n models: Object.freeze(models),\n });\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Schema } from "effect";
|
|
2
|
-
import type {
|
|
2
|
+
import type { ResolvedModelRoles } from "../model-roles.cjs";
|
|
3
3
|
import type { ReadableAdapterUsageAttachment } from "../record/family/adapter-usage/schema.cjs";
|
|
4
4
|
declare const Summary: Schema.Struct<{
|
|
5
5
|
rate: Schema.Union<readonly [Schema.Struct<{
|
|
@@ -36,7 +36,7 @@ export declare const CacheReadReportSchema: Schema.Struct<{
|
|
|
36
36
|
collectionComplete: Schema.Boolean;
|
|
37
37
|
reasons: Schema.$Array<Schema.Literals<readonly ["usage-not-recorded", "source-invalid", "adapter-usage-required", "collection-incomplete", "call-status-unknown", "no-calls", "cache-read-missing", "input-total-missing", "zero-input-total", "unsafe-token-total"]>>;
|
|
38
38
|
}>;
|
|
39
|
-
readonly
|
|
39
|
+
readonly roles: Schema.$Array<Schema.Struct<{
|
|
40
40
|
readonly rate: Schema.Union<readonly [Schema.Struct<{
|
|
41
41
|
readonly state: Schema.Literal<"exact">;
|
|
42
42
|
readonly value: Schema.Number;
|
|
@@ -51,7 +51,7 @@ export declare const CacheReadReportSchema: Schema.Struct<{
|
|
|
51
51
|
readonly unknownStatusCalls: Schema.Number;
|
|
52
52
|
readonly collectionComplete: Schema.Boolean;
|
|
53
53
|
readonly reasons: Schema.$Array<Schema.Literals<readonly ["usage-not-recorded", "source-invalid", "adapter-usage-required", "collection-incomplete", "call-status-unknown", "no-calls", "cache-read-missing", "input-total-missing", "zero-input-total", "unsafe-token-total"]>>;
|
|
54
|
-
readonly
|
|
54
|
+
readonly modelRole: Schema.NullOr<Schema.String>;
|
|
55
55
|
}>>;
|
|
56
56
|
readonly models: Schema.$Array<Schema.Struct<{
|
|
57
57
|
readonly rate: Schema.Union<readonly [Schema.Struct<{
|
|
@@ -68,7 +68,7 @@ export declare const CacheReadReportSchema: Schema.Struct<{
|
|
|
68
68
|
readonly unknownStatusCalls: Schema.Number;
|
|
69
69
|
readonly collectionComplete: Schema.Boolean;
|
|
70
70
|
readonly reasons: Schema.$Array<Schema.Literals<readonly ["usage-not-recorded", "source-invalid", "adapter-usage-required", "collection-incomplete", "call-status-unknown", "no-calls", "cache-read-missing", "input-total-missing", "zero-input-total", "unsafe-token-total"]>>;
|
|
71
|
-
readonly
|
|
71
|
+
readonly modelRole: Schema.NullOr<Schema.String>;
|
|
72
72
|
readonly provider: Schema.NullOr<Schema.String>;
|
|
73
73
|
readonly model: Schema.NullOr<Schema.String>;
|
|
74
74
|
}>>;
|
|
@@ -76,5 +76,5 @@ export declare const CacheReadReportSchema: Schema.Struct<{
|
|
|
76
76
|
/** Complete per-Attempt report; unknown model identities remain null. */
|
|
77
77
|
export type CacheReadReport = typeof CacheReadReportSchema.Type;
|
|
78
78
|
/** A historical collection marked complete is not proof of an explicit producer seal. */
|
|
79
|
-
export declare function projectCacheRead(usage: ReadableAdapterUsageAttachment | null,
|
|
79
|
+
export declare function projectCacheRead(usage: ReadableAdapterUsageAttachment | null, roles: ResolvedModelRoles | undefined, producerCompletenessKnown: boolean, absent?: "usage-not-recorded" | "source-invalid" | "adapter-usage-required"): CacheReadReport;
|
|
80
80
|
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Schema } from "effect";
|
|
2
|
-
import type {
|
|
2
|
+
import type { ResolvedModelRoles } from "../model-roles.mjs";
|
|
3
3
|
import type { ReadableAdapterUsageAttachment } from "../record/family/adapter-usage/schema.mjs";
|
|
4
4
|
declare const Summary: Schema.Struct<{
|
|
5
5
|
rate: Schema.Union<readonly [Schema.Struct<{
|
|
@@ -36,7 +36,7 @@ export declare const CacheReadReportSchema: Schema.Struct<{
|
|
|
36
36
|
collectionComplete: Schema.Boolean;
|
|
37
37
|
reasons: Schema.$Array<Schema.Literals<readonly ["usage-not-recorded", "source-invalid", "adapter-usage-required", "collection-incomplete", "call-status-unknown", "no-calls", "cache-read-missing", "input-total-missing", "zero-input-total", "unsafe-token-total"]>>;
|
|
38
38
|
}>;
|
|
39
|
-
readonly
|
|
39
|
+
readonly roles: Schema.$Array<Schema.Struct<{
|
|
40
40
|
readonly rate: Schema.Union<readonly [Schema.Struct<{
|
|
41
41
|
readonly state: Schema.Literal<"exact">;
|
|
42
42
|
readonly value: Schema.Number;
|
|
@@ -51,7 +51,7 @@ export declare const CacheReadReportSchema: Schema.Struct<{
|
|
|
51
51
|
readonly unknownStatusCalls: Schema.Number;
|
|
52
52
|
readonly collectionComplete: Schema.Boolean;
|
|
53
53
|
readonly reasons: Schema.$Array<Schema.Literals<readonly ["usage-not-recorded", "source-invalid", "adapter-usage-required", "collection-incomplete", "call-status-unknown", "no-calls", "cache-read-missing", "input-total-missing", "zero-input-total", "unsafe-token-total"]>>;
|
|
54
|
-
readonly
|
|
54
|
+
readonly modelRole: Schema.NullOr<Schema.String>;
|
|
55
55
|
}>>;
|
|
56
56
|
readonly models: Schema.$Array<Schema.Struct<{
|
|
57
57
|
readonly rate: Schema.Union<readonly [Schema.Struct<{
|
|
@@ -68,7 +68,7 @@ export declare const CacheReadReportSchema: Schema.Struct<{
|
|
|
68
68
|
readonly unknownStatusCalls: Schema.Number;
|
|
69
69
|
readonly collectionComplete: Schema.Boolean;
|
|
70
70
|
readonly reasons: Schema.$Array<Schema.Literals<readonly ["usage-not-recorded", "source-invalid", "adapter-usage-required", "collection-incomplete", "call-status-unknown", "no-calls", "cache-read-missing", "input-total-missing", "zero-input-total", "unsafe-token-total"]>>;
|
|
71
|
-
readonly
|
|
71
|
+
readonly modelRole: Schema.NullOr<Schema.String>;
|
|
72
72
|
readonly provider: Schema.NullOr<Schema.String>;
|
|
73
73
|
readonly model: Schema.NullOr<Schema.String>;
|
|
74
74
|
}>>;
|
|
@@ -76,5 +76,5 @@ export declare const CacheReadReportSchema: Schema.Struct<{
|
|
|
76
76
|
/** Complete per-Attempt report; unknown model identities remain null. */
|
|
77
77
|
export type CacheReadReport = typeof CacheReadReportSchema.Type;
|
|
78
78
|
/** A historical collection marked complete is not proof of an explicit producer seal. */
|
|
79
|
-
export declare function projectCacheRead(usage: ReadableAdapterUsageAttachment | null,
|
|
79
|
+
export declare function projectCacheRead(usage: ReadableAdapterUsageAttachment | null, roles: ResolvedModelRoles | undefined, producerCompletenessKnown: boolean, absent?: "usage-not-recorded" | "source-invalid" | "adapter-usage-required"): CacheReadReport;
|
|
80
80
|
export {};
|