@velum-labs/routekit-eval-setup 1.3.2 → 1.5.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/dist/adapters/authoring-responses-request.d.ts +5 -0
- package/dist/adapters/authoring-responses-request.js +38 -0
- package/dist/adapters/evaluation-evidence-freshness.d.ts +7 -0
- package/dist/adapters/evaluation-evidence-freshness.js +76 -0
- package/dist/adapters/git-task-history.d.ts +67 -0
- package/dist/adapters/git-task-history.js +171 -0
- package/dist/adapters/integrated-repository-history.d.ts +21 -0
- package/dist/adapters/integrated-repository-history.js +175 -0
- package/dist/adapters/repository-command-diagnostic.d.ts +8 -0
- package/dist/adapters/repository-command-diagnostic.js +46 -0
- package/dist/adapters/repository-command-evidence.d.ts +13 -0
- package/dist/adapters/repository-command-evidence.js +102 -0
- package/dist/adapters/repository-command-runner.d.ts +238 -0
- package/dist/adapters/repository-command-runner.js +1483 -0
- package/dist/adapters/repository-import-context.d.ts +47 -0
- package/dist/adapters/repository-import-context.js +469 -0
- package/dist/adapters/repository-node-test-reporter.d.ts +3 -0
- package/dist/adapters/repository-node-test-reporter.js +27 -0
- package/dist/adapters/repository-review-evidence.d.ts +39 -0
- package/dist/adapters/repository-review-evidence.js +632 -0
- package/dist/adapters/repository-seed-selection.d.ts +7 -0
- package/dist/adapters/repository-seed-selection.js +79 -0
- package/dist/adapters/repository-solution-edits.d.ts +49 -0
- package/dist/adapters/repository-solution-edits.js +136 -0
- package/dist/adapters/repository-vitest-phase-adapter.d.ts +8 -0
- package/dist/adapters/repository-vitest-phase-adapter.js +310 -0
- package/dist/adapters/repository-vitest-reporter.d.ts +24 -0
- package/dist/adapters/repository-vitest-reporter.js +314 -0
- package/dist/adapters/strict-authoring-schema.d.ts +5 -0
- package/dist/adapters/strict-authoring-schema.js +158 -0
- package/dist/adapters/test-discovery.d.ts +30 -0
- package/dist/adapters/test-discovery.js +124 -0
- package/dist/adapters/typescript-repository-index.d.ts +51 -0
- package/dist/adapters/typescript-repository-index.js +226 -0
- package/dist/agentic-capabilities-protocol.d.ts +1373 -0
- package/dist/agentic-capabilities-protocol.js +786 -0
- package/dist/case-checkpoint-store.d.ts +29 -0
- package/dist/case-checkpoint-store.js +133 -0
- package/dist/case-pipeline-protocol-v2.d.ts +184 -0
- package/dist/case-pipeline-protocol-v2.js +193 -0
- package/dist/case-pipeline-protocol.d.ts +2626 -0
- package/dist/case-pipeline-protocol.js +371 -0
- package/dist/effect-api.d.ts +74 -10
- package/dist/effect-api.js +56 -6
- package/dist/errors.d.ts +31 -0
- package/dist/errors.js +10 -0
- package/dist/eval-capability-execution-envelope.d.ts +64 -0
- package/dist/eval-capability-execution-envelope.js +98 -0
- package/dist/eval-capability-policy.d.ts +90 -0
- package/dist/eval-capability-policy.js +107 -0
- package/dist/eval-event-log.d.ts +140 -0
- package/dist/eval-event-log.js +220 -0
- package/dist/evaluation-authoring-policy.d.ts +18 -0
- package/dist/evaluation-authoring-policy.js +19 -0
- package/dist/evaluation-authoring-validation.d.ts +22 -0
- package/dist/evaluation-authoring-validation.js +72 -0
- package/dist/evaluation-evidence.d.ts +20 -0
- package/dist/evaluation-evidence.js +319 -0
- package/dist/evaluation-grader-calibration-protocol.d.ts +108 -0
- package/dist/evaluation-grader-calibration-protocol.js +80 -0
- package/dist/evaluation-grader-calibration.d.ts +18 -0
- package/dist/evaluation-grader-calibration.js +334 -0
- package/dist/evaluation-grading-policy.d.ts +24 -0
- package/dist/evaluation-grading-policy.js +54 -0
- package/dist/evaluation-proposal-policy.d.ts +4 -0
- package/dist/evaluation-proposal-policy.js +91 -0
- package/dist/evaluation-source-retrieval.d.ts +68 -0
- package/dist/evaluation-source-retrieval.js +513 -0
- package/dist/evaluation-structure-policy.d.ts +29 -0
- package/dist/evaluation-structure-policy.js +138 -0
- package/dist/index.d.ts +124 -17
- package/dist/index.js +69 -11
- package/dist/inspection.js +2 -3
- package/dist/project-artifacts.d.ts +7 -2
- package/dist/project-artifacts.js +49 -136
- package/dist/project-authoring.d.ts +66 -5
- package/dist/project-authoring.js +783 -109
- package/dist/project-contracts.d.ts +419 -84
- package/dist/project-contracts.js +160 -52
- package/dist/project-store.js +2 -1
- package/dist/project-workflow.d.ts +5 -4
- package/dist/project-workflow.js +154 -35
- package/dist/repository-adversary-protocol.d.ts +64 -0
- package/dist/repository-adversary-protocol.js +105 -0
- package/dist/repository-behavior-protocol.d.ts +188 -0
- package/dist/repository-behavior-protocol.js +202 -0
- package/dist/repository-benchmark-protocol.d.ts +487 -0
- package/dist/repository-benchmark-protocol.js +96 -0
- package/dist/repository-execution-protocol.d.ts +150 -0
- package/dist/repository-execution-protocol.js +38 -0
- package/dist/repository-fixture-instructions.d.ts +3 -0
- package/dist/repository-fixture-instructions.js +91 -0
- package/dist/repository-fixture-protocol.d.ts +79 -0
- package/dist/repository-fixture-protocol.js +79 -0
- package/dist/repository-foundry-plan-protocol.d.ts +118 -0
- package/dist/repository-foundry-plan-protocol.js +296 -0
- package/dist/repository-foundry-progress-protocol.d.ts +52 -0
- package/dist/repository-foundry-progress-protocol.js +52 -0
- package/dist/repository-improvement-protocol.d.ts +100 -0
- package/dist/repository-improvement-protocol.js +106 -0
- package/dist/repository-language-model-protocol.d.ts +43 -0
- package/dist/repository-language-model-protocol.js +146 -0
- package/dist/repository-oracle-coverage-protocol.d.ts +18 -0
- package/dist/repository-oracle-coverage-protocol.js +39 -0
- package/dist/repository-oracle-execution-binding.d.ts +27 -0
- package/dist/repository-oracle-execution-binding.js +59 -0
- package/dist/repository-oracle-protocol.d.ts +230 -0
- package/dist/repository-oracle-protocol.js +156 -0
- package/dist/repository-oracle-scope-policy.d.ts +22 -0
- package/dist/repository-oracle-scope-policy.js +92 -0
- package/dist/repository-quality-policy.d.ts +15 -0
- package/dist/repository-quality-policy.js +357 -0
- package/dist/repository-routing-benchmark-protocol.d.ts +176 -0
- package/dist/repository-routing-benchmark-protocol.js +103 -0
- package/dist/repository-routing-model-protocol.d.ts +36 -0
- package/dist/repository-routing-model-protocol.js +89 -0
- package/dist/repository-routing-plan-protocol.d.ts +112 -0
- package/dist/repository-routing-plan-protocol.js +58 -0
- package/dist/repository-routing-quality-policy.d.ts +9 -0
- package/dist/repository-routing-quality-policy.js +191 -0
- package/dist/repository-seed-qualification-progress-protocol.d.ts +205 -0
- package/dist/repository-seed-qualification-progress-protocol.js +28 -0
- package/dist/repository-semantic-calibration-protocol.d.ts +768 -0
- package/dist/repository-semantic-calibration-protocol.js +276 -0
- package/dist/repository-semantic-calibration.d.ts +163 -0
- package/dist/repository-semantic-calibration.js +581 -0
- package/dist/repository-specification-contract-facts-protocol.d.ts +224 -0
- package/dist/repository-specification-contract-facts-protocol.js +276 -0
- package/dist/repository-specification-critique-protocol.d.ts +189 -0
- package/dist/repository-specification-critique-protocol.js +103 -0
- package/dist/repository-task-family-protocol.d.ts +24 -0
- package/dist/repository-task-family-protocol.js +37 -0
- package/dist/repository-task-seed-protocol.d.ts +384 -0
- package/dist/repository-task-seed-protocol.js +236 -0
- package/dist/repository-trajectory-protocol.d.ts +20 -0
- package/dist/repository-trajectory-protocol.js +42 -0
- package/dist/service.js +1 -1
- package/dist/services/adversary/service.d.ts +64 -0
- package/dist/services/adversary/service.js +330 -0
- package/dist/services/benchmark-compiler/service.d.ts +450 -0
- package/dist/services/benchmark-compiler/service.js +9 -0
- package/dist/services/budgeted-model/service.d.ts +118 -0
- package/dist/services/budgeted-model/service.js +460 -0
- package/dist/services/case-authoring/service.d.ts +163 -0
- package/dist/services/case-authoring/service.js +1456 -0
- package/dist/services/case-finalization/service.d.ts +283 -0
- package/dist/services/case-finalization/service.js +370 -0
- package/dist/services/case-generation/service.d.ts +619 -0
- package/dist/services/case-generation/service.js +2628 -0
- package/dist/services/case-pipeline/service.d.ts +31 -0
- package/dist/services/case-pipeline/service.js +485 -0
- package/dist/services/case-pipeline-v2/service.d.ts +70 -0
- package/dist/services/case-pipeline-v2/service.js +477 -0
- package/dist/services/command-observability/service.d.ts +13 -0
- package/dist/services/command-observability/service.js +3 -0
- package/dist/services/dimension-labeling/service.d.ts +77 -0
- package/dist/services/dimension-labeling/service.js +188 -0
- package/dist/services/eval-candidate/service.d.ts +208 -0
- package/dist/services/eval-candidate/service.js +64 -0
- package/dist/services/eval-capabilities/service.d.ts +183 -0
- package/dist/services/eval-capabilities/service.js +1433 -0
- package/dist/services/eval-environment/service.d.ts +173 -0
- package/dist/services/eval-environment/service.js +127 -0
- package/dist/services/evidence-reconstruction/service.d.ts +36 -0
- package/dist/services/evidence-reconstruction/service.js +145 -0
- package/dist/services/fixture-builder/service.d.ts +62 -0
- package/dist/services/fixture-builder/service.js +36 -0
- package/dist/services/fixture-validation/service.d.ts +75 -0
- package/dist/services/fixture-validation/service.js +295 -0
- package/dist/services/foundry/service.d.ts +831 -0
- package/dist/services/foundry/service.js +442 -0
- package/dist/services/foundry-progress/service.d.ts +62 -0
- package/dist/services/foundry-progress/service.js +149 -0
- package/dist/services/foundry-v2/service.d.ts +54 -0
- package/dist/services/foundry-v2/service.js +28 -0
- package/dist/services/grounded-authoring/service.d.ts +126 -0
- package/dist/services/grounded-authoring/service.js +822 -0
- package/dist/services/historical-case/service.d.ts +722 -0
- package/dist/services/historical-case/service.js +177 -0
- package/dist/services/improvement-loop/service.d.ts +59 -0
- package/dist/services/improvement-loop/service.js +176 -0
- package/dist/services/language-model/service.d.ts +52 -0
- package/dist/services/language-model/service.js +194 -0
- package/dist/services/oracle-builder/service.d.ts +146 -0
- package/dist/services/oracle-builder/service.js +513 -0
- package/dist/services/oracle-coverage/service.d.ts +28 -0
- package/dist/services/oracle-coverage/service.js +50 -0
- package/dist/services/oracle-coverage-witness/service.d.ts +130 -0
- package/dist/services/oracle-coverage-witness/service.js +538 -0
- package/dist/services/pipeline-challenge/service.d.ts +551 -0
- package/dist/services/pipeline-challenge/service.js +427 -0
- package/dist/services/pipeline-controls/service.d.ts +130 -0
- package/dist/services/pipeline-controls/service.js +483 -0
- package/dist/services/pipeline-oracle/service.d.ts +8 -0
- package/dist/services/pipeline-oracle/service.js +256 -0
- package/dist/services/pipeline-seed/service.d.ts +298 -0
- package/dist/services/pipeline-seed/service.js +428 -0
- package/dist/services/pipeline-spec/service.d.ts +103 -0
- package/dist/services/pipeline-spec/service.js +619 -0
- package/dist/services/pipeline-tournament/service.d.ts +258 -0
- package/dist/services/pipeline-tournament/service.js +476 -0
- package/dist/services/quality-gate/service.d.ts +233 -0
- package/dist/services/quality-gate/service.js +136 -0
- package/dist/services/repository-bundle/service.d.ts +33 -0
- package/dist/services/repository-bundle/service.js +114 -0
- package/dist/services/repository-model/service.d.ts +105 -0
- package/dist/services/repository-model/service.js +250 -0
- package/dist/services/repository-public-artifact/service.d.ts +133 -0
- package/dist/services/repository-public-artifact/service.js +330 -0
- package/dist/services/routing-benchmark/service.d.ts +362 -0
- package/dist/services/routing-benchmark/service.js +96 -0
- package/dist/services/specification-critic/service.d.ts +92 -0
- package/dist/services/specification-critic/service.js +172 -0
- package/dist/services/task-family/service.d.ts +40 -0
- package/dist/services/task-family/service.js +55 -0
- package/dist/services/task-seed/service.d.ts +906 -0
- package/dist/services/task-seed/service.js +1406 -0
- package/dist/services/task-specification/service.d.ts +27 -0
- package/dist/services/task-specification/service.js +40 -0
- package/dist/services/trajectory-policy/service.d.ts +110 -0
- package/dist/services/trajectory-policy/service.js +216 -0
- package/dist/test/agentic-capabilities-protocol.test.d.ts +1 -0
- package/dist/test/agentic-capabilities-protocol.test.js +570 -0
- package/dist/test/agentic-capabilities.test.d.ts +1 -0
- package/dist/test/agentic-capabilities.test.js +1461 -0
- package/dist/test/agentic-environment.test.d.ts +1 -0
- package/dist/test/agentic-environment.test.js +213 -0
- package/dist/test/case-pipeline-foundation.test.d.ts +1 -0
- package/dist/test/case-pipeline-foundation.test.js +535 -0
- package/dist/test/case-pipeline-protocol-v2.test.d.ts +1 -0
- package/dist/test/case-pipeline-protocol-v2.test.js +124 -0
- package/dist/test/case-pipeline-v2.test.d.ts +1 -0
- package/dist/test/case-pipeline-v2.test.js +286 -0
- package/dist/test/case-pipeline.test.d.ts +1 -0
- package/dist/test/case-pipeline.test.js +851 -0
- package/dist/test/eval-capability-policy.test.d.ts +1 -0
- package/dist/test/eval-capability-policy.test.js +50 -0
- package/dist/test/eval-event-log.test.d.ts +1 -0
- package/dist/test/eval-event-log.test.js +125 -0
- package/dist/test/evaluation-evidence-freshness.test.d.ts +1 -0
- package/dist/test/evaluation-evidence-freshness.test.js +44 -0
- package/dist/test/evaluation-evidence.test.d.ts +1 -0
- package/dist/test/evaluation-evidence.test.js +230 -0
- package/dist/test/evaluation-grader-calibration.test.d.ts +1 -0
- package/dist/test/evaluation-grader-calibration.test.js +373 -0
- package/dist/test/evaluation-proposal-digest.test.d.ts +1 -0
- package/dist/test/evaluation-proposal-digest.test.js +187 -0
- package/dist/test/evaluation-source-retrieval.test.d.ts +1 -0
- package/dist/test/evaluation-source-retrieval.test.js +237 -0
- package/dist/test/evaluation-structure-policy.test.d.ts +1 -0
- package/dist/test/evaluation-structure-policy.test.js +196 -0
- package/dist/test/fixtures/repository-resource-panel.d.ts +39 -0
- package/dist/test/fixtures/repository-resource-panel.js +111 -0
- package/dist/test/fixtures/vitest-boundary-panel.d.ts +84 -0
- package/dist/test/fixtures/vitest-boundary-panel.js +120 -0
- package/dist/test/fixtures/vitest-phase-panel.d.ts +135 -0
- package/dist/test/fixtures/vitest-phase-panel.js +213 -0
- package/dist/test/fixtures/vitest-reporter-results.d.ts +76 -0
- package/dist/test/fixtures/vitest-reporter-results.js +94 -0
- package/dist/test/grounded-authoring.test.d.ts +1 -0
- package/dist/test/grounded-authoring.test.js +565 -0
- package/dist/test/integrated-repository-history.test.d.ts +1 -0
- package/dist/test/integrated-repository-history.test.js +227 -0
- package/dist/test/project-authoring.test.js +593 -43
- package/dist/test/project-workflow.test.js +419 -40
- package/dist/test/repository-authoring-artifacts.test.d.ts +1 -0
- package/dist/test/repository-authoring-artifacts.test.js +185 -0
- package/dist/test/repository-bundle.test.d.ts +1 -0
- package/dist/test/repository-bundle.test.js +52 -0
- package/dist/test/repository-case-generation.test.d.ts +1 -0
- package/dist/test/repository-case-generation.test.js +3465 -0
- package/dist/test/repository-command-diagnostic.test.d.ts +1 -0
- package/dist/test/repository-command-diagnostic.test.js +55 -0
- package/dist/test/repository-command-signals.test.d.ts +1 -0
- package/dist/test/repository-command-signals.test.js +124 -0
- package/dist/test/repository-fixture-scope-coverage.test.d.ts +1 -0
- package/dist/test/repository-fixture-scope-coverage.test.js +127 -0
- package/dist/test/repository-fixture-validation.test.d.ts +1 -0
- package/dist/test/repository-fixture-validation.test.js +362 -0
- package/dist/test/repository-foundry-progress.test.d.ts +1 -0
- package/dist/test/repository-foundry-progress.test.js +110 -0
- package/dist/test/repository-foundry-quality.test.d.ts +1 -0
- package/dist/test/repository-foundry-quality.test.js +1138 -0
- package/dist/test/repository-import-context.test.d.ts +1 -0
- package/dist/test/repository-import-context.test.js +354 -0
- package/dist/test/repository-model-authoring.test.d.ts +1 -0
- package/dist/test/repository-model-authoring.test.js +544 -0
- package/dist/test/repository-model.test.d.ts +1 -0
- package/dist/test/repository-model.test.js +2195 -0
- package/dist/test/repository-node-test-reporter.test.d.ts +1 -0
- package/dist/test/repository-node-test-reporter.test.js +104 -0
- package/dist/test/repository-oracle-concurrency.test.d.ts +1 -0
- package/dist/test/repository-oracle-concurrency.test.js +542 -0
- package/dist/test/repository-oracle-coverage-witness.test.d.ts +1 -0
- package/dist/test/repository-oracle-coverage-witness.test.js +511 -0
- package/dist/test/repository-oracle-coverage.test.d.ts +1 -0
- package/dist/test/repository-oracle-coverage.test.js +168 -0
- package/dist/test/repository-oracle-evidence.test.d.ts +1 -0
- package/dist/test/repository-oracle-evidence.test.js +185 -0
- package/dist/test/repository-oracle-plan.test.d.ts +1 -0
- package/dist/test/repository-oracle-plan.test.js +176 -0
- package/dist/test/repository-overlay-isolation.test.d.ts +1 -0
- package/dist/test/repository-overlay-isolation.test.js +85 -0
- package/dist/test/repository-preparation-cache.test.d.ts +1 -0
- package/dist/test/repository-preparation-cache.test.js +414 -0
- package/dist/test/repository-public-artifact.test.d.ts +1 -0
- package/dist/test/repository-public-artifact.test.js +273 -0
- package/dist/test/repository-qualification-diagnostics.test.d.ts +1 -0
- package/dist/test/repository-qualification-diagnostics.test.js +524 -0
- package/dist/test/repository-reference-authoring.test.d.ts +1 -0
- package/dist/test/repository-reference-authoring.test.js +1633 -0
- package/dist/test/repository-review-evidence-v2.test.d.ts +1 -0
- package/dist/test/repository-review-evidence-v2.test.js +183 -0
- package/dist/test/repository-review-evidence.test.d.ts +1 -0
- package/dist/test/repository-review-evidence.test.js +124 -0
- package/dist/test/repository-seed-exclusions.test.d.ts +1 -0
- package/dist/test/repository-seed-exclusions.test.js +96 -0
- package/dist/test/repository-seed-selection.test.d.ts +1 -0
- package/dist/test/repository-seed-selection.test.js +504 -0
- package/dist/test/repository-semantic-calibration.test.d.ts +1 -0
- package/dist/test/repository-semantic-calibration.test.js +688 -0
- package/dist/test/repository-solution-edits.test.d.ts +1 -0
- package/dist/test/repository-solution-edits.test.js +377 -0
- package/dist/test/repository-specification-budget.test.d.ts +1 -0
- package/dist/test/repository-specification-budget.test.js +171 -0
- package/dist/test/repository-specification-contract-checkpoint.test.d.ts +1 -0
- package/dist/test/repository-specification-contract-checkpoint.test.js +228 -0
- package/dist/test/repository-specification-contract-facts.test.d.ts +1 -0
- package/dist/test/repository-specification-contract-facts.test.js +177 -0
- package/dist/test/repository-trajectory-authoring.test.d.ts +1 -0
- package/dist/test/repository-trajectory-authoring.test.js +176 -0
- package/dist/test/repository-valid-control-plan.test.d.ts +1 -0
- package/dist/test/repository-valid-control-plan.test.js +45 -0
- package/dist/test/repository-vitest-phase.test.d.ts +1 -0
- package/dist/test/repository-vitest-phase.test.js +848 -0
- package/dist/test/repository-vitest-reporter.test.d.ts +1 -0
- package/dist/test/repository-vitest-reporter.test.js +158 -0
- package/dist/test/repository-workspace-build.test.d.ts +1 -0
- package/dist/test/repository-workspace-build.test.js +160 -0
- package/dist/test/strict-authoring-schema.test.d.ts +1 -0
- package/dist/test/strict-authoring-schema.test.js +169 -0
- package/package.json +48 -6
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { DecompositionResult, DimensionScoreLabelV3, DimensionScorePredictionV3, EvalCandidateReasoningEfforts, EvalComparisonResult, EvalReasoningEffort, PublishedRoutingActivation, RoutingBasisApprovalV3, RoutingBasisV3, RoutingActivationConstraints, RequestRoutingRequirements, RoutingObjectivePolicy, WorkloadDimension } from "@velum-labs/routekit-eval-contracts";
|
|
2
|
-
import { Schema } from "effect";
|
|
2
|
+
import { Effect, Schema } from "effect";
|
|
3
|
+
import { EvalNamedEventLog } from "./eval-event-log.js";
|
|
3
4
|
export const EVAL_PROJECT_VERSION = 1;
|
|
4
5
|
export const EVAL_PROJECT_V2_VERSION = 2;
|
|
5
6
|
export const EvalProjectQuestion = Schema.Struct({
|
|
@@ -526,11 +527,58 @@ export const EvalProjectDocument = Schema.Union([
|
|
|
526
527
|
EvalProjectState,
|
|
527
528
|
EvalProjectStateV2
|
|
528
529
|
]);
|
|
530
|
+
export const EvalEvidenceBlock = Schema.Struct({
|
|
531
|
+
id: Schema.String,
|
|
532
|
+
path: Schema.String,
|
|
533
|
+
sourceDigest: Schema.String,
|
|
534
|
+
contentDigest: Schema.String,
|
|
535
|
+
ordinal: NonNegativeInteger,
|
|
536
|
+
startLine: NonNegativeInteger,
|
|
537
|
+
endLine: NonNegativeInteger,
|
|
538
|
+
text: Schema.String
|
|
539
|
+
});
|
|
540
|
+
export const EvalEvidenceSource = Schema.Struct({
|
|
541
|
+
path: Schema.String,
|
|
542
|
+
sourceDigest: Schema.String,
|
|
543
|
+
sourceBytes: Schema.optionalKey(NonNegativeInteger),
|
|
544
|
+
sourceBlockCount: Schema.optionalKey(NonNegativeInteger),
|
|
545
|
+
blocks: Schema.Array(EvalEvidenceBlock)
|
|
546
|
+
});
|
|
547
|
+
export const EvalCriterion = Schema.Struct({
|
|
548
|
+
id: Schema.String,
|
|
549
|
+
description: Schema.String,
|
|
550
|
+
importance: Schema.Literals(["critical", "supporting"]),
|
|
551
|
+
gradingMode: Schema.Literal("semantic")
|
|
552
|
+
});
|
|
553
|
+
export const EvalPositiveControl = Schema.Struct({
|
|
554
|
+
id: Schema.String,
|
|
555
|
+
response: Schema.String
|
|
556
|
+
});
|
|
557
|
+
export const EvalNegativeControl = Schema.Struct({
|
|
558
|
+
id: Schema.String,
|
|
559
|
+
response: Schema.String,
|
|
560
|
+
targetedCriterionIds: Schema.Array(Schema.String),
|
|
561
|
+
kind: Schema.Literals([
|
|
562
|
+
"missing-criterion",
|
|
563
|
+
"forbidden-behavior",
|
|
564
|
+
"non-responsive"
|
|
565
|
+
])
|
|
566
|
+
});
|
|
567
|
+
const EvalCompiledCase = {
|
|
568
|
+
// Optional only at the persisted decoding boundary. The current evaluation
|
|
569
|
+
// structure policy requires compiler-owned evidence and hidden controls
|
|
570
|
+
// before approval, planning, or execution.
|
|
571
|
+
evidenceIds: Schema.optionalKey(Schema.Array(Schema.String)),
|
|
572
|
+
criteria: Schema.optionalKey(Schema.Array(EvalCriterion)),
|
|
573
|
+
positiveControls: Schema.optionalKey(Schema.Array(EvalPositiveControl)),
|
|
574
|
+
negativeControls: Schema.optionalKey(Schema.Array(EvalNegativeControl))
|
|
575
|
+
};
|
|
529
576
|
export const EvalDimensionCase = Schema.Struct({
|
|
530
577
|
id: Schema.String,
|
|
531
578
|
prompt: Schema.String,
|
|
532
579
|
context: Schema.optionalKey(Schema.String),
|
|
533
|
-
rubric: Schema.String
|
|
580
|
+
rubric: Schema.String,
|
|
581
|
+
...EvalCompiledCase
|
|
534
582
|
});
|
|
535
583
|
export const EvalDimensionSuite = Schema.Struct({
|
|
536
584
|
version: Schema.Literal(EVAL_PROJECT_VERSION),
|
|
@@ -552,6 +600,7 @@ export const EvalCompositionCase = Schema.Struct({
|
|
|
552
600
|
prompt: Schema.String,
|
|
553
601
|
context: Schema.optionalKey(Schema.String),
|
|
554
602
|
rubric: Schema.String,
|
|
603
|
+
...EvalCompiledCase,
|
|
555
604
|
decomposition: DecompositionResult,
|
|
556
605
|
requirements: RequestRoutingRequirements
|
|
557
606
|
});
|
|
@@ -568,6 +617,7 @@ export const EvalEvaluationProposal = Schema.Struct({
|
|
|
568
617
|
candidateModels: Schema.Array(Schema.String),
|
|
569
618
|
candidateReasoningEfforts: Schema.optionalKey(EvalCandidateReasoningEfforts),
|
|
570
619
|
judgeModel: Schema.String,
|
|
620
|
+
evidenceSources: Schema.optionalKey(Schema.Array(EvalEvidenceSource)),
|
|
571
621
|
suites: Schema.Array(EvalDimensionSuite),
|
|
572
622
|
decompositionBenchmark: EvalDecompositionBenchmark,
|
|
573
623
|
compositionSuite: EvalCompositionSuite
|
|
@@ -576,9 +626,21 @@ export const EvalArtifactApproval = Schema.Struct({
|
|
|
576
626
|
version: Schema.Literal(EVAL_PROJECT_VERSION),
|
|
577
627
|
kind: Schema.Literals(["routing-basis", "evaluations"]),
|
|
578
628
|
digest: Schema.String,
|
|
579
|
-
approvedAt: Schema.String
|
|
629
|
+
approvedAt: Schema.String,
|
|
630
|
+
structurePolicyVersion: Schema.optionalKey(NonNegativeInteger),
|
|
631
|
+
structureReportDigest: Schema.optionalKey(Schema.String)
|
|
580
632
|
});
|
|
581
633
|
export const EvalPlanScope = Schema.Literals(["pilot", "full"]);
|
|
634
|
+
export const EvalCostEstimate = Schema.Struct({
|
|
635
|
+
callCount: NonNegativeInteger,
|
|
636
|
+
maximumInputTokens: NonNegativeInteger,
|
|
637
|
+
maximumOutputTokens: NonNegativeInteger,
|
|
638
|
+
maximumCostUsd: Schema.optionalKey(NonNegativeFinite),
|
|
639
|
+
knownPricedMaximumUsd: NonNegativeFinite,
|
|
640
|
+
unpricedCalls: NonNegativeInteger,
|
|
641
|
+
subscriptionUnitCalls: NonNegativeInteger,
|
|
642
|
+
unknowns: Schema.Array(Schema.String)
|
|
643
|
+
});
|
|
582
644
|
export const EvalExecutionPlan = Schema.Struct({
|
|
583
645
|
version: Schema.Literal(EVAL_PROJECT_VERSION),
|
|
584
646
|
planId: Schema.String,
|
|
@@ -586,6 +648,7 @@ export const EvalExecutionPlan = Schema.Struct({
|
|
|
586
648
|
projectRevision: NonNegativeInteger,
|
|
587
649
|
createdAt: Schema.String,
|
|
588
650
|
scope: EvalPlanScope,
|
|
651
|
+
repetitions: NonNegativeInteger.pipe(Schema.withDecodingDefaultKey(Effect.succeed(1))),
|
|
589
652
|
basisDigest: Schema.String,
|
|
590
653
|
evaluationDigest: Schema.String,
|
|
591
654
|
candidateModels: Schema.Array(Schema.String),
|
|
@@ -607,7 +670,8 @@ export const EvalExecutionPlan = Schema.Struct({
|
|
|
607
670
|
expectedCompositionJudgeCalls: NonNegativeInteger,
|
|
608
671
|
expectedCandidateCalls: NonNegativeInteger,
|
|
609
672
|
expectedJudgeCalls: NonNegativeInteger,
|
|
610
|
-
expectedCallCount: NonNegativeInteger
|
|
673
|
+
expectedCallCount: NonNegativeInteger,
|
|
674
|
+
costEstimate: Schema.optionalKey(EvalCostEstimate)
|
|
611
675
|
});
|
|
612
676
|
export function scopedExpectedCalls(plan) {
|
|
613
677
|
const candidateModelCount = plan.candidateModels.length;
|
|
@@ -630,6 +694,44 @@ export function scopedExpectedCalls(plan) {
|
|
|
630
694
|
expectedCallCount: expectedCandidateCalls + expectedJudgeCalls + expectedClassifierCalls
|
|
631
695
|
};
|
|
632
696
|
}
|
|
697
|
+
export const EVAL_MAXIMUM_INPUT_TOKENS_PER_CALL = 256 * 1024;
|
|
698
|
+
export function estimateEvalPlanCost(plan, costService) {
|
|
699
|
+
const candidateCaseCalls = plan.expectedDimensionCandidateCalls + plan.expectedCompositionCandidateCalls;
|
|
700
|
+
const callsPerCandidate = plan.candidateModels.length === 0 ? 0 : candidateCaseCalls / plan.candidateModels.length;
|
|
701
|
+
const calls = [
|
|
702
|
+
...plan.candidateModels.map((model) => ({
|
|
703
|
+
model,
|
|
704
|
+
callCount: callsPerCandidate,
|
|
705
|
+
maximumInputTokens: EVAL_MAXIMUM_INPUT_TOKENS_PER_CALL,
|
|
706
|
+
maximumOutputTokens: plan.maximumOutputTokens,
|
|
707
|
+
...(plan.candidateReasoningEfforts?.[model] === undefined
|
|
708
|
+
? {}
|
|
709
|
+
: { reasoningEffort: plan.candidateReasoningEfforts[model] })
|
|
710
|
+
})),
|
|
711
|
+
{
|
|
712
|
+
model: plan.judgeModel,
|
|
713
|
+
callCount: candidateCaseCalls,
|
|
714
|
+
maximumInputTokens: EVAL_MAXIMUM_INPUT_TOKENS_PER_CALL,
|
|
715
|
+
maximumOutputTokens: plan.maximumOutputTokens
|
|
716
|
+
},
|
|
717
|
+
{
|
|
718
|
+
model: plan.classifierModel,
|
|
719
|
+
callCount: plan.expectedClassifierCalls,
|
|
720
|
+
maximumInputTokens: EVAL_MAXIMUM_INPUT_TOKENS_PER_CALL,
|
|
721
|
+
maximumOutputTokens: plan.maximumOutputTokens
|
|
722
|
+
}
|
|
723
|
+
];
|
|
724
|
+
return costService.estimate(calls).pipe(Effect.map((estimate) => ({
|
|
725
|
+
callCount: estimate.callCount,
|
|
726
|
+
maximumInputTokens: estimate.knownInputTokens,
|
|
727
|
+
maximumOutputTokens: estimate.knownOutputTokens,
|
|
728
|
+
...(estimate.maximumCostUsd === undefined ? {} : { maximumCostUsd: estimate.maximumCostUsd }),
|
|
729
|
+
knownPricedMaximumUsd: estimate.knownPricedMaximumUsd,
|
|
730
|
+
unpricedCalls: estimate.unpricedCalls + estimate.upstreamManagedCalls + estimate.unknownBillingCalls,
|
|
731
|
+
subscriptionUnitCalls: estimate.subscriptionUnitCalls,
|
|
732
|
+
unknowns: estimate.unknowns
|
|
733
|
+
})));
|
|
734
|
+
}
|
|
633
735
|
export const EvalRunTarget = Schema.Struct({
|
|
634
736
|
kind: Schema.Literals(["configured", "external"]),
|
|
635
737
|
identity: Schema.String,
|
|
@@ -648,7 +750,8 @@ export const EvalRunLedger = Schema.Struct({
|
|
|
648
750
|
knownOutputTokens: NonNegativeInteger,
|
|
649
751
|
unknownTokenMeasurements: NonNegativeInteger,
|
|
650
752
|
knownPricedSubtotalUsd: NonNegativeFinite,
|
|
651
|
-
unpricedCalls: NonNegativeInteger
|
|
753
|
+
unpricedCalls: NonNegativeInteger,
|
|
754
|
+
subscriptionUnitCalls: NonNegativeInteger.pipe(Schema.withDecodingDefaultKey(Effect.succeed(0)))
|
|
652
755
|
});
|
|
653
756
|
export const EvalClassifierObservation = Schema.Struct({
|
|
654
757
|
caseId: Schema.String,
|
|
@@ -666,10 +769,13 @@ export const EvalClassifierObservation = Schema.Struct({
|
|
|
666
769
|
});
|
|
667
770
|
export const EvalCompositionCaseResult = Schema.Struct({
|
|
668
771
|
caseId: Schema.String,
|
|
669
|
-
predictedWinner: Schema.String,
|
|
670
|
-
|
|
772
|
+
predictedWinner: Schema.NullOr(Schema.String),
|
|
773
|
+
predictedTiedModels: Schema.optionalKey(Schema.Array(Schema.String)).pipe(Schema.withDecodingDefaultKey(Effect.succeed([]))),
|
|
774
|
+
observedWinner: Schema.NullOr(Schema.String),
|
|
775
|
+
observedTiedModels: Schema.optionalKey(Schema.Array(Schema.String)).pipe(Schema.withDecodingDefaultKey(Effect.succeed([]))),
|
|
671
776
|
predictedScoreGap: NonNegativeFinite,
|
|
672
777
|
observedScoreGap: NonNegativeFinite,
|
|
778
|
+
comparable: Schema.optionalKey(Schema.Boolean).pipe(Schema.withDecodingDefaultKey(Effect.succeed(false))),
|
|
673
779
|
passed: Schema.Boolean
|
|
674
780
|
});
|
|
675
781
|
export const EvalRunQualification = Schema.Struct({
|
|
@@ -683,18 +789,17 @@ export const EvalRunQualification = Schema.Struct({
|
|
|
683
789
|
expectedCases: NonNegativeInteger,
|
|
684
790
|
comparableCases: NonNegativeInteger,
|
|
685
791
|
agreeingCases: NonNegativeInteger,
|
|
686
|
-
winnerAgreement: NonNegativeFinite,
|
|
792
|
+
winnerAgreement: Schema.optionalKey(NonNegativeFinite),
|
|
793
|
+
conclusion: Schema.optionalKey(Schema.Literals(["passed", "failed", "inconclusive"])).pipe(Schema.withDecodingDefaultKey(Effect.succeed("failed"))),
|
|
794
|
+
reason: Schema.optionalKey(Schema.String),
|
|
795
|
+
publishable: Schema.optionalKey(Schema.Boolean).pipe(Schema.withDecodingDefaultKey(Effect.succeed(false))),
|
|
687
796
|
cases: Schema.Array(EvalCompositionCaseResult)
|
|
688
797
|
})
|
|
689
798
|
});
|
|
690
|
-
export function summarizeEvalRunLedger(comparisons, expectedCalls, classifierObservations = []) {
|
|
799
|
+
export function summarizeEvalRunLedger(comparisons, expectedCalls, costService, classifierObservations = [], classifierModel = "unknown") {
|
|
691
800
|
let observedCalls = 0;
|
|
692
801
|
let observedCandidateRows = 0;
|
|
693
|
-
|
|
694
|
-
let knownOutputTokens = 0;
|
|
695
|
-
let unknownTokenMeasurements = 0;
|
|
696
|
-
let knownPricedSubtotalUsd = 0;
|
|
697
|
-
let unpricedCalls = 0;
|
|
802
|
+
const actualCalls = [];
|
|
698
803
|
for (const comparison of comparisons) {
|
|
699
804
|
const calls = comparison.calls ??
|
|
700
805
|
comparison.models.flatMap((model) => model.cases.map((testCase) => ({
|
|
@@ -707,49 +812,52 @@ export function summarizeEvalRunLedger(comparisons, expectedCalls, classifierObs
|
|
|
707
812
|
observedCalls += 1;
|
|
708
813
|
if (call.role === "candidate")
|
|
709
814
|
observedCandidateRows += 1;
|
|
710
|
-
|
|
711
|
-
call.
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
815
|
+
actualCalls.push({
|
|
816
|
+
model: call.model,
|
|
817
|
+
usage: {
|
|
818
|
+
...(call.measurement.inputTokens === undefined
|
|
819
|
+
? {}
|
|
820
|
+
: { inputTokens: call.measurement.inputTokens }),
|
|
821
|
+
...(call.measurement.inputTokens === undefined ? {} : { cachedInputTokens: 0 }),
|
|
822
|
+
...(call.measurement.outputTokens === undefined
|
|
823
|
+
? {}
|
|
824
|
+
: { outputTokens: call.measurement.outputTokens })
|
|
825
|
+
},
|
|
826
|
+
...(call.measurement.costUsd === undefined
|
|
827
|
+
? {}
|
|
828
|
+
: { providerCostUsd: call.measurement.costUsd })
|
|
829
|
+
});
|
|
724
830
|
}
|
|
725
831
|
}
|
|
726
832
|
for (const observation of classifierObservations) {
|
|
727
833
|
observedCalls += 1;
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
834
|
+
actualCalls.push({
|
|
835
|
+
model: classifierModel,
|
|
836
|
+
usage: {
|
|
837
|
+
...(observation.measurement.inputTokens === undefined
|
|
838
|
+
? {}
|
|
839
|
+
: { inputTokens: observation.measurement.inputTokens }),
|
|
840
|
+
...(observation.measurement.inputTokens === undefined ? {} : { cachedInputTokens: 0 }),
|
|
841
|
+
...(observation.measurement.outputTokens === undefined
|
|
842
|
+
? {}
|
|
843
|
+
: { outputTokens: observation.measurement.outputTokens })
|
|
844
|
+
},
|
|
845
|
+
...(observation.measurement.costUsd === undefined
|
|
846
|
+
? {}
|
|
847
|
+
: { providerCostUsd: observation.measurement.costUsd })
|
|
848
|
+
});
|
|
742
849
|
}
|
|
743
|
-
return {
|
|
850
|
+
return costService.actuals(actualCalls).pipe(Effect.map((actuals) => ({
|
|
744
851
|
expectedCalls,
|
|
745
852
|
observedCalls,
|
|
746
853
|
observedCandidateRows,
|
|
747
|
-
knownInputTokens,
|
|
748
|
-
knownOutputTokens,
|
|
749
|
-
unknownTokenMeasurements,
|
|
750
|
-
knownPricedSubtotalUsd,
|
|
751
|
-
unpricedCalls
|
|
752
|
-
|
|
854
|
+
knownInputTokens: actuals.knownInputTokens,
|
|
855
|
+
knownOutputTokens: actuals.knownOutputTokens,
|
|
856
|
+
unknownTokenMeasurements: actuals.unknownTokenCalls,
|
|
857
|
+
knownPricedSubtotalUsd: actuals.knownPricedSubtotalUsd,
|
|
858
|
+
unpricedCalls: actuals.unpricedCalls + actuals.upstreamManagedCalls + actuals.unknownBillingCalls,
|
|
859
|
+
subscriptionUnitCalls: actuals.subscriptionUnitCalls
|
|
860
|
+
})));
|
|
753
861
|
}
|
|
754
862
|
const EvalRunReportCommon = {
|
|
755
863
|
version: Schema.Literal(EVAL_PROJECT_VERSION),
|
|
@@ -764,7 +872,8 @@ const EvalRunReportCommon = {
|
|
|
764
872
|
cleanup: EvalRunCleanup,
|
|
765
873
|
comparisons: Schema.Array(EvalComparisonResult),
|
|
766
874
|
qualification: Schema.optionalKey(EvalRunQualification),
|
|
767
|
-
ledger: EvalRunLedger
|
|
875
|
+
ledger: EvalRunLedger,
|
|
876
|
+
events: Schema.optionalKey(EvalNamedEventLog).pipe(Schema.withDecodingDefaultKey(Effect.succeed([])))
|
|
768
877
|
};
|
|
769
878
|
export const EvalRunFailureError = Schema.Struct({
|
|
770
879
|
name: Schema.String,
|
|
@@ -778,8 +887,7 @@ const QualifiedEvalRunReport = Schema.Struct({
|
|
|
778
887
|
});
|
|
779
888
|
const CompletedEvalRunReport = Schema.Struct({
|
|
780
889
|
...EvalRunReportCommon,
|
|
781
|
-
status: Schema.Literal("completed")
|
|
782
|
-
activation: PublishedRoutingActivation
|
|
890
|
+
status: Schema.Literal("completed")
|
|
783
891
|
});
|
|
784
892
|
const FailedEvalRunReport = Schema.Struct({
|
|
785
893
|
...EvalRunReportCommon,
|
package/dist/project-store.js
CHANGED
|
@@ -14,6 +14,7 @@ const storeFailure = (operation, path, cause) => new EvalProjectStoreError({
|
|
|
14
14
|
export const makeFileEvalProjectStore = Effect.gen(function* () {
|
|
15
15
|
const fs = yield* FileSystem.FileSystem;
|
|
16
16
|
const paths = yield* Path.Path;
|
|
17
|
+
const platform = yield* Effect.context();
|
|
17
18
|
const projectPath = (root) => paths.join(paths.resolve(root), ".routekit", "evals", PROJECT_FILE);
|
|
18
19
|
const loadDocument = (repositoryRoot) => Effect.gen(function* () {
|
|
19
20
|
const root = yield* fs
|
|
@@ -45,7 +46,7 @@ export const makeFileEvalProjectStore = Effect.gen(function* () {
|
|
|
45
46
|
.pipe(Effect.mapError((cause) => storeFailure("creating", directory, cause)));
|
|
46
47
|
yield* writeFileAtomicEffect(target, `${JSON.stringify(state, null, 2)}\n`, {
|
|
47
48
|
mode: 0o600
|
|
48
|
-
}).pipe(Effect.mapError((cause) => storeFailure("committing", target, cause)), Effect.
|
|
49
|
+
}).pipe(Effect.mapError((cause) => storeFailure("committing", target, cause)), Effect.provide(platform));
|
|
49
50
|
});
|
|
50
51
|
return EvalProjectStore.of({
|
|
51
52
|
loadDocument,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CostService } from "@velum-labs/routekit-registry";
|
|
2
|
+
import { Context, Effect, FileSystem, Layer, Path } from "effect";
|
|
2
3
|
import type { EvalProjectArtifactError, EvalSetupInspectionError } from "./errors.js";
|
|
3
4
|
import { EvalDimensionContrastError, type EvalModelCatalogError, type EvalProjectStoreError, EvalProjectTransitionError } from "./errors.js";
|
|
4
5
|
import { EvalRepositoryInspector } from "./inspection.js";
|
|
@@ -15,7 +16,7 @@ export type EvalProjectWorkflowShape = {
|
|
|
15
16
|
readonly approveDimensions: (repositoryRoot: string, basisDigest: string) => Effect.Effect<EvalProjectStatus, EvalProjectWorkflowError>;
|
|
16
17
|
readonly proposeEvaluations: (repositoryRoot: string, proposal: Omit<EvalEvaluationProposal, "version" | "evaluationDigest" | "basisDigest" | "candidateModels" | "candidateReasoningEfforts" | "judgeModel">) => Effect.Effect<EvalProjectStatus, EvalProjectWorkflowError>;
|
|
17
18
|
readonly approveEvaluations: (repositoryRoot: string, evaluationDigest: string) => Effect.Effect<EvalProjectStatus, EvalProjectWorkflowError>;
|
|
18
|
-
readonly createPlan: (repositoryRoot: string, scope: EvalPlanScope) => Effect.Effect<EvalExecutionPlan, EvalProjectWorkflowError>;
|
|
19
|
+
readonly createPlan: (repositoryRoot: string, scope: EvalPlanScope, repetitions?: number) => Effect.Effect<EvalExecutionPlan, EvalProjectWorkflowError>;
|
|
19
20
|
readonly startRun: (repositoryRoot: string, planId: string) => Effect.Effect<{
|
|
20
21
|
readonly plan: EvalExecutionPlan;
|
|
21
22
|
readonly runId: string;
|
|
@@ -28,6 +29,6 @@ export type EvalProjectWorkflowShape = {
|
|
|
28
29
|
declare const EvalProjectWorkflow_base: Context.ServiceClass<EvalProjectWorkflow, "@velum-labs/routekit-eval-setup/EvalProjectWorkflow", EvalProjectWorkflowShape>;
|
|
29
30
|
export declare class EvalProjectWorkflow extends EvalProjectWorkflow_base {
|
|
30
31
|
}
|
|
31
|
-
export declare const makeEvalProjectWorkflow: Effect.Effect<EvalProjectWorkflowShape, never, EvalProjectArtifacts | Path.Path |
|
|
32
|
-
export declare const EvalProjectWorkflowLive: Layer.Layer<EvalProjectWorkflow, never, EvalProjectArtifacts | Path.Path |
|
|
32
|
+
export declare const makeEvalProjectWorkflow: Effect.Effect<EvalProjectWorkflowShape, never, EvalProjectArtifacts | Path.Path | FileSystem.FileSystem | EvalRepositoryInspector | EvalProjectStore | EvalModelCatalog | CostService>;
|
|
33
|
+
export declare const EvalProjectWorkflowLive: Layer.Layer<EvalProjectWorkflow, never, EvalProjectArtifacts | Path.Path | FileSystem.FileSystem | EvalRepositoryInspector | EvalProjectStore | EvalModelCatalog | CostService>;
|
|
33
34
|
export {};
|