niceeval 0.17.0 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/INDEX.md +1 -0
  2. package/dist/adapter.cjs +4 -0
  3. package/dist/adapter.cjs.map +1 -1
  4. package/dist/adapter.d.cts +25 -14
  5. package/dist/adapter.d.mts +25 -14
  6. package/dist/adapter.d.ts +25 -14
  7. package/dist/assertions/measurements.cjs +45 -0
  8. package/dist/assertions/measurements.cjs.map +1 -0
  9. package/dist/assertions/measurements.d.cts +17 -0
  10. package/dist/assertions/measurements.d.mts +17 -0
  11. package/dist/assertions/measurements.d.ts +17 -0
  12. package/dist/assertions/measurements.js +8 -0
  13. package/dist/assertions/measurements.js.map +1 -0
  14. package/dist/define.cjs +2 -0
  15. package/dist/define.cjs.map +1 -1
  16. package/dist/expect/index.cjs +4 -1
  17. package/dist/expect/index.cjs.map +1 -1
  18. package/dist/expect/index.d.cts +3 -1
  19. package/dist/expect/index.d.mts +3 -1
  20. package/dist/expect/index.d.ts +3 -1
  21. package/dist/expect/index.js +20 -16
  22. package/dist/expect/index.mjs +20 -16
  23. package/dist/experiment/host/operations.cjs +3 -1
  24. package/dist/experiment/host/operations.cjs.map +1 -1
  25. package/dist/experiment/host/runtime.cjs +3 -1
  26. package/dist/experiment/host/runtime.cjs.map +1 -1
  27. package/dist/experiment/host/teardown.cjs +1 -0
  28. package/dist/experiment/host/teardown.cjs.map +1 -1
  29. package/dist/index.cjs +3 -19
  30. package/dist/index.cjs.map +1 -1
  31. package/dist/index.d.cts +3 -7
  32. package/dist/index.d.mts +3 -7
  33. package/dist/index.d.ts +3 -7
  34. package/dist/index.js +12 -34
  35. package/dist/index.mjs +12 -34
  36. package/dist/model-slots.cjs +19 -0
  37. package/dist/model-slots.cjs.map +1 -1
  38. package/dist/model-slots.d.cts +7 -0
  39. package/dist/model-slots.d.mts +7 -0
  40. package/dist/model-slots.d.ts +7 -0
  41. package/dist/model-slots.js +8 -2
  42. package/dist/o11y/eval-usage.cjs +20 -2
  43. package/dist/o11y/eval-usage.cjs.map +1 -1
  44. package/dist/o11y/eval-usage.d.cts +7 -2
  45. package/dist/o11y/eval-usage.d.mts +7 -2
  46. package/dist/o11y/eval-usage.d.ts +7 -2
  47. package/dist/runner/adoption.cjs +1 -0
  48. package/dist/runner/adoption.cjs.map +1 -1
  49. package/dist/runner/eval-selection.cjs +15 -1
  50. package/dist/runner/eval-selection.cjs.map +1 -1
  51. package/dist/runner/eval-selection.d.cts +4 -0
  52. package/dist/runner/eval-selection.d.mts +4 -0
  53. package/dist/runner/eval-selection.d.ts +4 -0
  54. package/dist/runner/lock.cjs +1 -3
  55. package/dist/runner/lock.cjs.map +1 -1
  56. package/dist/runner/lock.d.cts +0 -2
  57. package/dist/runner/lock.d.mts +0 -2
  58. package/dist/runner/lock.d.ts +0 -2
  59. package/dist/runner/lock.js +14 -16
  60. package/dist/runner/types.cjs.map +1 -1
  61. package/dist/runner/types.d.cts +1 -0
  62. package/dist/runner/types.d.mts +1 -0
  63. package/dist/runner/types.d.ts +1 -0
  64. package/dist/sandbox/docker-profile/registry.cjs +1 -2
  65. package/dist/sandbox/docker-profile/registry.cjs.map +1 -1
  66. package/dist/sandbox/docker-profile/registry.d.cts +0 -1
  67. package/dist/sandbox/docker-profile/registry.d.mts +0 -1
  68. package/dist/sandbox/docker-profile/registry.d.ts +0 -1
  69. package/dist/sandbox/docker-profile/registry.js +2 -4
  70. package/dist/sandbox/index.cjs +1 -2
  71. package/dist/sandbox/index.cjs.map +1 -1
  72. package/dist/sandbox/index.d.cts +1 -1
  73. package/dist/sandbox/index.d.mts +1 -1
  74. package/dist/sandbox/index.d.ts +1 -1
  75. package/dist/sandbox/index.js +32 -34
  76. package/dist/sandbox/index.mjs +32 -34
  77. package/docs-site/zh/examples/integrations/ai-sdk-v7.mdx +5 -5
  78. package/docs-site/zh/examples/integrations/claude-sdk.mdx +5 -5
  79. package/docs-site/zh/examples/integrations/langgraph.mdx +3 -3
  80. package/docs-site/zh/examples/integrations/pi-sdk.mdx +5 -5
  81. package/docs-site/zh/explanation/judge.mdx +1 -1
  82. package/docs-site/zh/index.mdx +18 -0
  83. package/docs-site/zh/introduction.mdx +2 -1
  84. package/docs-site/zh/reference/define-agent.mdx +2 -2
  85. package/docs-site/zh/tutorials/authoring.mdx +2 -1
  86. package/docs-site/zh/tutorials/control-run-cost.mdx +84 -5
  87. package/docs-site/zh/tutorials/upgrade-0-18.mdx +64 -0
  88. package/docs-site/zh/tutorials/verify-judge.mdx +2 -1
  89. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"teardown.js","sourceRoot":"","sources":["teardown.ts"],"names":[],"mappings":"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","sourcesContent":["import { resolve } from \"node:path\";\nimport { Clock, Effect, Result } from \"effect\";\nimport type { ProjectStateDatabase } from \"../../record/sqlite/project-state-database.ts\";\nimport { cleanupCallback } from \"../../runner/cleanup-timeout.ts\";\nimport { discoverEvals, discoverExperiments } from \"../../runner/discover.ts\";\nimport { resolveExperimentEvals } from \"../../runner/eval-selection.ts\";\nimport { beginExplicitSharedStateRecoveryEffect, completeExplicitSharedStateRecoveryEffect, readSharedStateLeaseRecoveryTargetEffect, type SharedStateLeaseRecord, } from \"../../runner/shared-state-lease.ts\";\nimport { isExactTeardownRegistrationOwnerTerminatedEffect, isOrphanedTeardownRegistration, readExactTeardownRegistrationEffect, readTeardownRegistrationsEffect, removeTeardownRegistrationIfPresentEffect, teardownEntryId, } from \"../../runner/teardown-registry.ts\";\nimport type { DiscoveredExperiment, ExperimentHook, ExperimentHookContext, } from \"../../runner/types.ts\";\nimport { matchExperimentSelector } from \"../../shared/aggregate.ts\";\nimport { ExperimentHostError } from \"./types.ts\";\nimport type { ExperimentHostTeardownEvent, ExperimentHostTeardownObserver, ExperimentHostOperation, ExperimentHostSharedStateEvidence, ExperimentHostTeardownInspection, ExperimentHostTeardownInspectRequest, ExperimentHostTeardownRequest, ExperimentHostTeardownResult, } from \"./types.ts\";\nfunction operationError(operation: ExperimentHostOperation, cause: unknown): ExperimentHostError {\n if (cause instanceof ExperimentHostError)\n return cause;\n const code = typeof cause === \"object\" && cause !== null && typeof Reflect.get(cause, \"code\") === \"string\"\n ? String(Reflect.get(cause, \"code\"))\n : \"experiment-host-operation-failed\";\n return new ExperimentHostError({\n operation,\n code,\n message: cause instanceof Error ? cause.message : String(cause),\n });\n}\nfunction closeOperation<A, E, R>(operation: ExperimentHostOperation, effect: Effect.Effect<A, E, R>): Effect.Effect<A, ExperimentHostError, R> {\n return effect.pipe(Effect.mapError((cause) => operationError(operation, cause)));\n}\nfunction recoveryOperationError(code: string, cause: unknown): ExperimentHostError {\n return new ExperimentHostError({\n operation: \"teardown-run\",\n code,\n message: cause instanceof Error ? cause.message : String(cause),\n });\n}\ninterface TeardownSelection {\n readonly experimentIds: readonly string[];\n readonly selected: readonly {\n readonly experiment: DiscoveredExperiment;\n readonly selectedEvalIds: readonly string[];\n }[];\n}\nfunction freezeArray<A>(values: Iterable<A>): readonly A[] {\n return Object.freeze([...values]);\n}\nfunction selectTeardowns(input: {\n readonly cwd: string;\n readonly experimentSelector?: string;\n}): Effect.Effect<TeardownSelection, unknown> {\n return Effect.gen(function* () {\n const evals = yield* discoverEvals(input.cwd);\n const experiments = yield* discoverExperiments(input.cwd);\n const experimentIds = freezeArray(experiments.map((experiment) => experiment.id));\n const matched = input.experimentSelector === undefined\n ? experiments\n : experiments.filter((experiment) => matchExperimentSelector(experimentIds, input.experimentSelector!).includes(experiment.id));\n return Object.freeze({\n experimentIds,\n selected: freezeArray(matched.map((experiment) => {\n const selection = resolveExperimentEvals({\n experimentId: experiment.id,\n selector: experiment.evals,\n cliPatterns: [],\n evals,\n });\n return Object.freeze({\n experiment,\n selectedEvalIds: freezeArray(selection.selectedEvalIds),\n });\n })),\n });\n });\n}\nfunction teardownOf(experiment: DiscoveredExperiment): ExperimentHook | undefined {\n return typeof experiment.teardown === \"function\" ? experiment.teardown : undefined;\n}\nfunction evidenceOf(record: SharedStateLeaseRecord): ExperimentHostSharedStateEvidence {\n return Object.freeze({\n key: record.key,\n experimentId: record.experimentId,\n ownerToken: record.ownerToken,\n host: record.host,\n pid: record.pid,\n processIdentity: record.processIdentity,\n heartbeatAt: record.heartbeatAt,\n });\n}\nfunction noExperimentMatch(selector: string, selection: TeardownSelection): ExperimentHostTeardownInspection {\n return Object.freeze({\n status: \"experiment-no-match\" as const,\n selector,\n candidates: freezeArray([...selection.experimentIds].sort()),\n });\n}\nfunction inspectExactRegistration(input: {\n readonly coordinationRoot: string;\n readonly record: SharedStateLeaseRecord;\n readonly currentHost: string;\n}): Effect.Effect<boolean, unknown, ProjectStateDatabase> {\n const id = teardownEntryId(input.record.experimentId, input.record.pid);\n return Effect.gen(function* () {\n const registration = yield* readExactTeardownRegistrationEffect(input.coordinationRoot, input.record.experimentId, input.record.pid);\n if (registration === undefined)\n return false;\n if (registration.host !== input.record.host) {\n return yield* Effect.fail(new Error(`teardown registration ${JSON.stringify(id)} belongs to host ${JSON.stringify(registration.host)}, ` +\n `not immutable sharedState owner host ${JSON.stringify(input.record.host)}`));\n }\n const terminated = yield* isExactTeardownRegistrationOwnerTerminatedEffect({\n registration,\n owner: input.record,\n currentHost: input.currentHost,\n });\n if (!terminated) {\n return yield* Effect.fail(new Error(`teardown registration ${JSON.stringify(id)} still belongs to a live exact sharedState owner`));\n }\n return true;\n });\n}\nfunction clearExactRegistration(input: {\n readonly coordinationRoot: string;\n readonly record: SharedStateLeaseRecord;\n readonly currentHost: string;\n readonly expectedRegistration: boolean;\n}): Effect.Effect<void, unknown, ProjectStateDatabase> {\n const id = teardownEntryId(input.record.experimentId, input.record.pid);\n return Effect.gen(function* () {\n const present = yield* inspectExactRegistration(input);\n if (!present) {\n if (input.expectedRegistration) {\n return yield* Effect.fail(new Error(`teardown registration ${JSON.stringify(id)} disappeared before recovery could clear it`));\n }\n return;\n }\n if (!input.expectedRegistration) {\n return yield* Effect.fail(new Error(`teardown registration ${JSON.stringify(id)} appeared after recovery was claimed`));\n }\n if (!(yield* removeTeardownRegistrationIfPresentEffect(input.coordinationRoot, id))) {\n return yield* Effect.fail(new Error(`teardown registration ${JSON.stringify(id)} changed before recovery could clear it`));\n }\n });\n}\nfunction emit(observer: ExperimentHostTeardownObserver | undefined, event: ExperimentHostTeardownEvent): void {\n try {\n observer?.observe(Object.freeze(event));\n }\n catch {\n // Feedback is transient and must never hold recovery authority closed.\n }\n}\nfunction hookContext(input: {\n readonly experimentId: string;\n readonly selectedEvalIds: readonly string[];\n readonly observer?: ExperimentHostTeardownObserver;\n readonly signal?: AbortSignal;\n}): ExperimentHookContext {\n return {\n experimentId: input.experimentId,\n selectedEvalIds: input.selectedEvalIds,\n signal: input.signal ?? new AbortController().signal,\n progress: (progress) => emit(input.observer, {\n type: \"experiment-progress\",\n experimentId: input.experimentId,\n detail: progress.message,\n }),\n diagnostic: (diagnostic) => emit(input.observer, {\n type: \"diagnostic\",\n code: diagnostic.code,\n level: diagnostic.level,\n message: diagnostic.message,\n ...(diagnostic.data === undefined ? {} : { data: Object.freeze({ ...diagnostic.data }) }),\n }),\n };\n}\nfunction runAuthorTeardown(input: {\n readonly experiment: DiscoveredExperiment;\n readonly selectedEvalIds: readonly string[];\n readonly observer?: ExperimentHostTeardownObserver;\n readonly signal?: AbortSignal;\n readonly recovery: boolean;\n}) {\n const teardown = teardownOf(input.experiment);\n if (teardown === undefined)\n return Effect.succeed(false as const);\n return Effect.gen(function* () {\n const startedAt = yield* Clock.currentTimeMillis;\n emit(input.observer, {\n type: \"experiment-hook\",\n experimentId: input.experiment.id,\n hook: \"teardown\",\n status: \"started\",\n ...(input.recovery ? { recovery: true } : {}),\n });\n const outcome = yield* Effect.result(cleanupCallback(() => teardown(hookContext({\n experimentId: input.experiment.id,\n selectedEvalIds: input.selectedEvalIds,\n ...(input.observer === undefined ? {} : { observer: input.observer }),\n ...(input.signal === undefined ? {} : { signal: input.signal }),\n }))));\n const completedAt = yield* Clock.currentTimeMillis;\n emit(input.observer, {\n type: \"experiment-hook\",\n experimentId: input.experiment.id,\n hook: \"teardown\",\n status: Result.isSuccess(outcome) ? \"done\" : \"failed\",\n durationMs: Math.max(0, completedAt - startedAt),\n });\n return outcome;\n });\n}\nexport function inspectTeardown(input: ExperimentHostTeardownInspectRequest): Effect.Effect<ExperimentHostTeardownInspection, ExperimentHostError, ProjectStateDatabase> {\n return closeOperation(\"teardown-inspect\", Effect.gen(function* () {\n const selection = yield* selectTeardowns(input);\n if (input.experimentSelector !== undefined && selection.selected.length === 0) {\n return noExperimentMatch(input.experimentSelector, selection);\n }\n const coordinationRoot = resolve(input.cwd, input.coordinationRoot ?? \".niceeval\");\n if (input.recoveryKey !== undefined) {\n const record = yield* readSharedStateLeaseRecoveryTargetEffect(coordinationRoot, input.recoveryKey);\n if (record === undefined) {\n return Object.freeze({ status: \"no-evidence\" as const, key: input.recoveryKey });\n }\n const evidence = evidenceOf(record);\n if (selection.selected.length !== 1) {\n return Object.freeze({\n status: \"selection-not-unique\" as const,\n experimentIds: freezeArray(selection.selected.map(({ experiment }) => experiment.id)),\n evidence,\n });\n }\n const target = selection.selected[0]!;\n if (target.experiment.id !== record.experimentId) {\n return Object.freeze({\n status: \"experiment-mismatch\" as const,\n selectedExperimentId: target.experiment.id,\n evidence,\n });\n }\n if (teardownOf(target.experiment) === undefined) {\n return Object.freeze({\n status: \"teardown-required\" as const,\n experimentId: target.experiment.id,\n evidence,\n });\n }\n const registrations = yield* readTeardownRegistrationsEffect(coordinationRoot);\n return Object.freeze({\n status: \"ready\" as const,\n experimentIds: Object.freeze([target.experiment.id]),\n orphanedRegistrations: registrations.filter(({ entry }) => entry.experimentId === target.experiment.id &&\n isOrphanedTeardownRegistration(entry, input.currentHost)).length,\n evidence,\n });\n }\n const registrations = yield* readTeardownRegistrationsEffect(coordinationRoot);\n const selectedIds = new Set(selection.selected.map(({ experiment }) => experiment.id));\n return Object.freeze({\n status: \"ready\" as const,\n experimentIds: freezeArray(selectedIds),\n orphanedRegistrations: registrations.filter(({ entry }) => selectedIds.has(entry.experimentId) &&\n isOrphanedTeardownRegistration(entry, input.currentHost)).length,\n });\n }));\n}\nfunction runExplicitRecovery(input: ExperimentHostTeardownRequest, selection: TeardownSelection, record: SharedStateLeaseRecord): Effect.Effect<ExperimentHostTeardownResult, unknown, ProjectStateDatabase> {\n return Effect.gen(function* () {\n const evidence = evidenceOf(record);\n if (selection.selected.length !== 1) {\n return Object.freeze({\n status: \"selection-not-unique\" as const,\n experimentIds: freezeArray(selection.selected.map(({ experiment }) => experiment.id)),\n evidence,\n });\n }\n const target = selection.selected[0]!;\n if (target.experiment.id !== record.experimentId) {\n return Object.freeze({\n status: \"experiment-mismatch\" as const,\n selectedExperimentId: target.experiment.id,\n evidence,\n });\n }\n if (teardownOf(target.experiment) === undefined) {\n return Object.freeze({\n status: \"teardown-required\" as const,\n experimentId: target.experiment.id,\n evidence,\n });\n }\n if (input.ownerToken === undefined ||\n input.confirmOwnerTerminated !== true ||\n input.confirmRemoteQuiesced !== true) {\n return Object.freeze({ status: \"recovery-confirmation-required\" as const, evidence });\n }\n const coordinationRoot = resolve(input.cwd, input.coordinationRoot ?? \".niceeval\");\n const begun = yield* beginExplicitSharedStateRecoveryEffect({\n niceevalRoot: coordinationRoot,\n key: record.key,\n ownerToken: input.ownerToken,\n localHost: input.currentHost,\n confirmOwnerTerminated: true,\n confirmRemoteQuiesced: true,\n });\n const claimedEvidence = evidenceOf(begun.record);\n const registrationFailureCode = begun._tag === \"AlreadyReleased\"\n ? \"shared-state-recovery-already-released-registration-failed\"\n : \"shared-state-recovery-registration-failed\";\n const registrationWasPresent = yield* inspectExactRegistration({\n coordinationRoot,\n record: begun.record,\n currentHost: input.currentHost,\n }).pipe(Effect.mapError((cause) => recoveryOperationError(registrationFailureCode, cause)));\n if (begun._tag === \"AlreadyReleased\") {\n yield* clearExactRegistration({\n coordinationRoot,\n record: begun.record,\n currentHost: input.currentHost,\n expectedRegistration: registrationWasPresent,\n }).pipe(Effect.mapError((cause) => recoveryOperationError(registrationFailureCode, cause)));\n return Object.freeze({\n status: \"already-released\" as const,\n key: begun.record.key,\n experimentId: begun.record.experimentId,\n ownerToken: begun.record.ownerToken,\n });\n }\n const outcome = yield* runAuthorTeardown({\n experiment: target.experiment,\n selectedEvalIds: target.selectedEvalIds,\n ...(input.observer === undefined ? {} : { observer: input.observer }),\n ...(input.signal === undefined ? {} : { signal: input.signal }),\n recovery: true,\n });\n if (outcome === false) {\n return yield* Effect.fail(new Error(\"Recovery target lost its required teardown callback.\"));\n }\n if (Result.isFailure(outcome)) {\n return Object.freeze({\n status: \"recovery-teardown-failed\" as const,\n evidence: claimedEvidence,\n error: outcome.failure instanceof Error ? outcome.failure.message : String(outcome.failure),\n });\n }\n yield* clearExactRegistration({\n coordinationRoot,\n record: begun.record,\n currentHost: input.currentHost,\n expectedRegistration: registrationWasPresent,\n }).pipe(Effect.mapError((cause) => recoveryOperationError(registrationFailureCode, cause)));\n yield* completeExplicitSharedStateRecoveryEffect({\n niceevalRoot: coordinationRoot,\n key: begun.record.key,\n ownerToken: begun.record.ownerToken,\n recoveryId: begun.recoveryId,\n localHost: input.currentHost,\n }).pipe(Effect.mapError((cause) => recoveryOperationError(\"shared-state-recovery-completion-failed\", cause)));\n return Object.freeze({\n status: \"recovered\" as const,\n key: begun.record.key,\n experimentId: begun.record.experimentId,\n ownerToken: begun.record.ownerToken,\n });\n });\n}\nexport function runTeardown(input: ExperimentHostTeardownRequest): Effect.Effect<ExperimentHostTeardownResult, ExperimentHostError, ProjectStateDatabase> {\n return closeOperation(\"teardown-run\", Effect.gen(function* () {\n const inspection = yield* inspectTeardown(input);\n if (inspection.status !== \"ready\")\n return inspection;\n const selection = yield* selectTeardowns(input);\n if (input.recoveryKey !== undefined) {\n if (inspection.evidence === undefined || selection.selected.length !== 1)\n return inspection;\n const record = yield* readSharedStateLeaseRecoveryTargetEffect(resolve(input.cwd, input.coordinationRoot ?? \".niceeval\"), input.recoveryKey);\n if (record === undefined) {\n return Object.freeze({ status: \"no-evidence\" as const, key: input.recoveryKey });\n }\n return yield* runExplicitRecovery(input, selection, record);\n }\n const coordinationRoot = resolve(input.cwd, input.coordinationRoot ?? \".niceeval\");\n const registrations = yield* readTeardownRegistrationsEffect(coordinationRoot);\n const results: Array<{\n readonly experimentId: string;\n readonly executions: number;\n readonly outcome: \"succeeded\" | \"failed\" | \"not-configured\";\n readonly error?: string;\n }> = [];\n for (const target of selection.selected) {\n if (teardownOf(target.experiment) === undefined) {\n results.push(Object.freeze({\n experimentId: target.experiment.id,\n executions: 0,\n outcome: \"not-configured\" as const,\n }));\n continue;\n }\n const matching = registrations.filter(({ entry }) => entry.experimentId === target.experiment.id);\n const orphaned = matching.filter(({ entry }) => isOrphanedTeardownRegistration(entry, input.currentHost));\n const claimed = yield* Effect.all(orphaned.map(({ id }) => removeTeardownRegistrationIfPresentEffect(coordinationRoot, id)), {\n concurrency: \"unbounded\",\n });\n const executions = matching.length === 0 ? 1 : claimed.filter(Boolean).length;\n let failure: string | undefined;\n for (let index = 0; index < executions; index += 1) {\n const outcome = yield* runAuthorTeardown({\n experiment: target.experiment,\n selectedEvalIds: target.selectedEvalIds,\n ...(input.observer === undefined ? {} : { observer: input.observer }),\n ...(input.signal === undefined ? {} : { signal: input.signal }),\n recovery: true,\n });\n if (outcome !== false && Result.isFailure(outcome)) {\n failure = outcome.failure instanceof Error ? outcome.failure.message : String(outcome.failure);\n }\n }\n results.push(Object.freeze({\n experimentId: target.experiment.id,\n executions,\n outcome: failure === undefined ? \"succeeded\" as const : \"failed\" as const,\n ...(failure === undefined ? {} : { error: failure }),\n }));\n }\n return Object.freeze({\n status: \"completed\" as const,\n experiments: freezeArray(results),\n });\n }));\n}\n"]}
1
+ {"version":3,"file":"teardown.js","sourceRoot":"","sources":["teardown.ts"],"names":[],"mappings":"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","sourcesContent":["import { resolve } from \"node:path\";\nimport { Clock, Effect, Result } from \"effect\";\nimport type { ProjectStateDatabase } from \"../../record/sqlite/project-state-database.ts\";\nimport { cleanupCallback } from \"../../runner/cleanup-timeout.ts\";\nimport { discoverEvals, discoverExperiments } from \"../../runner/discover.ts\";\nimport { resolveExperimentEvals } from \"../../runner/eval-selection.ts\";\nimport { beginExplicitSharedStateRecoveryEffect, completeExplicitSharedStateRecoveryEffect, readSharedStateLeaseRecoveryTargetEffect, type SharedStateLeaseRecord, } from \"../../runner/shared-state-lease.ts\";\nimport { isExactTeardownRegistrationOwnerTerminatedEffect, isOrphanedTeardownRegistration, readExactTeardownRegistrationEffect, readTeardownRegistrationsEffect, removeTeardownRegistrationIfPresentEffect, teardownEntryId, } from \"../../runner/teardown-registry.ts\";\nimport type { DiscoveredExperiment, ExperimentHook, ExperimentHookContext, } from \"../../runner/types.ts\";\nimport { matchExperimentSelector } from \"../../shared/aggregate.ts\";\nimport { ExperimentHostError } from \"./types.ts\";\nimport type { ExperimentHostTeardownEvent, ExperimentHostTeardownObserver, ExperimentHostOperation, ExperimentHostSharedStateEvidence, ExperimentHostTeardownInspection, ExperimentHostTeardownInspectRequest, ExperimentHostTeardownRequest, ExperimentHostTeardownResult, } from \"./types.ts\";\nfunction operationError(operation: ExperimentHostOperation, cause: unknown): ExperimentHostError {\n if (cause instanceof ExperimentHostError)\n return cause;\n const code = typeof cause === \"object\" && cause !== null && typeof Reflect.get(cause, \"code\") === \"string\"\n ? String(Reflect.get(cause, \"code\"))\n : \"experiment-host-operation-failed\";\n return new ExperimentHostError({\n operation,\n code,\n message: cause instanceof Error ? cause.message : String(cause),\n });\n}\nfunction closeOperation<A, E, R>(operation: ExperimentHostOperation, effect: Effect.Effect<A, E, R>): Effect.Effect<A, ExperimentHostError, R> {\n return effect.pipe(Effect.mapError((cause) => operationError(operation, cause)));\n}\nfunction recoveryOperationError(code: string, cause: unknown): ExperimentHostError {\n return new ExperimentHostError({\n operation: \"teardown-run\",\n code,\n message: cause instanceof Error ? cause.message : String(cause),\n });\n}\ninterface TeardownSelection {\n readonly experimentIds: readonly string[];\n readonly selected: readonly {\n readonly experiment: DiscoveredExperiment;\n readonly selectedEvalIds: readonly string[];\n }[];\n}\nfunction freezeArray<A>(values: Iterable<A>): readonly A[] {\n return Object.freeze([...values]);\n}\nfunction selectTeardowns(input: {\n readonly cwd: string;\n readonly experimentSelector?: string;\n}): Effect.Effect<TeardownSelection, unknown> {\n return Effect.gen(function* () {\n const evals = yield* discoverEvals(input.cwd);\n const experiments = yield* discoverExperiments(input.cwd);\n const experimentIds = freezeArray(experiments.map((experiment) => experiment.id));\n const matched = input.experimentSelector === undefined\n ? experiments\n : experiments.filter((experiment) => matchExperimentSelector(experimentIds, input.experimentSelector!).includes(experiment.id));\n return Object.freeze({\n experimentIds,\n selected: freezeArray(matched.map((experiment) => {\n const selection = resolveExperimentEvals({\n experimentId: experiment.id,\n validateModelRequirements: false,\n selector: experiment.evals,\n cliPatterns: [],\n evals,\n });\n return Object.freeze({\n experiment,\n selectedEvalIds: freezeArray(selection.selectedEvalIds),\n });\n })),\n });\n });\n}\nfunction teardownOf(experiment: DiscoveredExperiment): ExperimentHook | undefined {\n return typeof experiment.teardown === \"function\" ? experiment.teardown : undefined;\n}\nfunction evidenceOf(record: SharedStateLeaseRecord): ExperimentHostSharedStateEvidence {\n return Object.freeze({\n key: record.key,\n experimentId: record.experimentId,\n ownerToken: record.ownerToken,\n host: record.host,\n pid: record.pid,\n processIdentity: record.processIdentity,\n heartbeatAt: record.heartbeatAt,\n });\n}\nfunction noExperimentMatch(selector: string, selection: TeardownSelection): ExperimentHostTeardownInspection {\n return Object.freeze({\n status: \"experiment-no-match\" as const,\n selector,\n candidates: freezeArray([...selection.experimentIds].sort()),\n });\n}\nfunction inspectExactRegistration(input: {\n readonly coordinationRoot: string;\n readonly record: SharedStateLeaseRecord;\n readonly currentHost: string;\n}): Effect.Effect<boolean, unknown, ProjectStateDatabase> {\n const id = teardownEntryId(input.record.experimentId, input.record.pid);\n return Effect.gen(function* () {\n const registration = yield* readExactTeardownRegistrationEffect(input.coordinationRoot, input.record.experimentId, input.record.pid);\n if (registration === undefined)\n return false;\n if (registration.host !== input.record.host) {\n return yield* Effect.fail(new Error(`teardown registration ${JSON.stringify(id)} belongs to host ${JSON.stringify(registration.host)}, ` +\n `not immutable sharedState owner host ${JSON.stringify(input.record.host)}`));\n }\n const terminated = yield* isExactTeardownRegistrationOwnerTerminatedEffect({\n registration,\n owner: input.record,\n currentHost: input.currentHost,\n });\n if (!terminated) {\n return yield* Effect.fail(new Error(`teardown registration ${JSON.stringify(id)} still belongs to a live exact sharedState owner`));\n }\n return true;\n });\n}\nfunction clearExactRegistration(input: {\n readonly coordinationRoot: string;\n readonly record: SharedStateLeaseRecord;\n readonly currentHost: string;\n readonly expectedRegistration: boolean;\n}): Effect.Effect<void, unknown, ProjectStateDatabase> {\n const id = teardownEntryId(input.record.experimentId, input.record.pid);\n return Effect.gen(function* () {\n const present = yield* inspectExactRegistration(input);\n if (!present) {\n if (input.expectedRegistration) {\n return yield* Effect.fail(new Error(`teardown registration ${JSON.stringify(id)} disappeared before recovery could clear it`));\n }\n return;\n }\n if (!input.expectedRegistration) {\n return yield* Effect.fail(new Error(`teardown registration ${JSON.stringify(id)} appeared after recovery was claimed`));\n }\n if (!(yield* removeTeardownRegistrationIfPresentEffect(input.coordinationRoot, id))) {\n return yield* Effect.fail(new Error(`teardown registration ${JSON.stringify(id)} changed before recovery could clear it`));\n }\n });\n}\nfunction emit(observer: ExperimentHostTeardownObserver | undefined, event: ExperimentHostTeardownEvent): void {\n try {\n observer?.observe(Object.freeze(event));\n }\n catch {\n // Feedback is transient and must never hold recovery authority closed.\n }\n}\nfunction hookContext(input: {\n readonly experimentId: string;\n readonly selectedEvalIds: readonly string[];\n readonly observer?: ExperimentHostTeardownObserver;\n readonly signal?: AbortSignal;\n}): ExperimentHookContext {\n return {\n experimentId: input.experimentId,\n selectedEvalIds: input.selectedEvalIds,\n signal: input.signal ?? new AbortController().signal,\n progress: (progress) => emit(input.observer, {\n type: \"experiment-progress\",\n experimentId: input.experimentId,\n detail: progress.message,\n }),\n diagnostic: (diagnostic) => emit(input.observer, {\n type: \"diagnostic\",\n code: diagnostic.code,\n level: diagnostic.level,\n message: diagnostic.message,\n ...(diagnostic.data === undefined ? {} : { data: Object.freeze({ ...diagnostic.data }) }),\n }),\n };\n}\nfunction runAuthorTeardown(input: {\n readonly experiment: DiscoveredExperiment;\n readonly selectedEvalIds: readonly string[];\n readonly observer?: ExperimentHostTeardownObserver;\n readonly signal?: AbortSignal;\n readonly recovery: boolean;\n}) {\n const teardown = teardownOf(input.experiment);\n if (teardown === undefined)\n return Effect.succeed(false as const);\n return Effect.gen(function* () {\n const startedAt = yield* Clock.currentTimeMillis;\n emit(input.observer, {\n type: \"experiment-hook\",\n experimentId: input.experiment.id,\n hook: \"teardown\",\n status: \"started\",\n ...(input.recovery ? { recovery: true } : {}),\n });\n const outcome = yield* Effect.result(cleanupCallback(() => teardown(hookContext({\n experimentId: input.experiment.id,\n selectedEvalIds: input.selectedEvalIds,\n ...(input.observer === undefined ? {} : { observer: input.observer }),\n ...(input.signal === undefined ? {} : { signal: input.signal }),\n }))));\n const completedAt = yield* Clock.currentTimeMillis;\n emit(input.observer, {\n type: \"experiment-hook\",\n experimentId: input.experiment.id,\n hook: \"teardown\",\n status: Result.isSuccess(outcome) ? \"done\" : \"failed\",\n durationMs: Math.max(0, completedAt - startedAt),\n });\n return outcome;\n });\n}\nexport function inspectTeardown(input: ExperimentHostTeardownInspectRequest): Effect.Effect<ExperimentHostTeardownInspection, ExperimentHostError, ProjectStateDatabase> {\n return closeOperation(\"teardown-inspect\", Effect.gen(function* () {\n const selection = yield* selectTeardowns(input);\n if (input.experimentSelector !== undefined && selection.selected.length === 0) {\n return noExperimentMatch(input.experimentSelector, selection);\n }\n const coordinationRoot = resolve(input.cwd, input.coordinationRoot ?? \".niceeval\");\n if (input.recoveryKey !== undefined) {\n const record = yield* readSharedStateLeaseRecoveryTargetEffect(coordinationRoot, input.recoveryKey);\n if (record === undefined) {\n return Object.freeze({ status: \"no-evidence\" as const, key: input.recoveryKey });\n }\n const evidence = evidenceOf(record);\n if (selection.selected.length !== 1) {\n return Object.freeze({\n status: \"selection-not-unique\" as const,\n experimentIds: freezeArray(selection.selected.map(({ experiment }) => experiment.id)),\n evidence,\n });\n }\n const target = selection.selected[0]!;\n if (target.experiment.id !== record.experimentId) {\n return Object.freeze({\n status: \"experiment-mismatch\" as const,\n selectedExperimentId: target.experiment.id,\n evidence,\n });\n }\n if (teardownOf(target.experiment) === undefined) {\n return Object.freeze({\n status: \"teardown-required\" as const,\n experimentId: target.experiment.id,\n evidence,\n });\n }\n const registrations = yield* readTeardownRegistrationsEffect(coordinationRoot);\n return Object.freeze({\n status: \"ready\" as const,\n experimentIds: Object.freeze([target.experiment.id]),\n orphanedRegistrations: registrations.filter(({ entry }) => entry.experimentId === target.experiment.id &&\n isOrphanedTeardownRegistration(entry, input.currentHost)).length,\n evidence,\n });\n }\n const registrations = yield* readTeardownRegistrationsEffect(coordinationRoot);\n const selectedIds = new Set(selection.selected.map(({ experiment }) => experiment.id));\n return Object.freeze({\n status: \"ready\" as const,\n experimentIds: freezeArray(selectedIds),\n orphanedRegistrations: registrations.filter(({ entry }) => selectedIds.has(entry.experimentId) &&\n isOrphanedTeardownRegistration(entry, input.currentHost)).length,\n });\n }));\n}\nfunction runExplicitRecovery(input: ExperimentHostTeardownRequest, selection: TeardownSelection, record: SharedStateLeaseRecord): Effect.Effect<ExperimentHostTeardownResult, unknown, ProjectStateDatabase> {\n return Effect.gen(function* () {\n const evidence = evidenceOf(record);\n if (selection.selected.length !== 1) {\n return Object.freeze({\n status: \"selection-not-unique\" as const,\n experimentIds: freezeArray(selection.selected.map(({ experiment }) => experiment.id)),\n evidence,\n });\n }\n const target = selection.selected[0]!;\n if (target.experiment.id !== record.experimentId) {\n return Object.freeze({\n status: \"experiment-mismatch\" as const,\n selectedExperimentId: target.experiment.id,\n evidence,\n });\n }\n if (teardownOf(target.experiment) === undefined) {\n return Object.freeze({\n status: \"teardown-required\" as const,\n experimentId: target.experiment.id,\n evidence,\n });\n }\n if (input.ownerToken === undefined ||\n input.confirmOwnerTerminated !== true ||\n input.confirmRemoteQuiesced !== true) {\n return Object.freeze({ status: \"recovery-confirmation-required\" as const, evidence });\n }\n const coordinationRoot = resolve(input.cwd, input.coordinationRoot ?? \".niceeval\");\n const begun = yield* beginExplicitSharedStateRecoveryEffect({\n niceevalRoot: coordinationRoot,\n key: record.key,\n ownerToken: input.ownerToken,\n localHost: input.currentHost,\n confirmOwnerTerminated: true,\n confirmRemoteQuiesced: true,\n });\n const claimedEvidence = evidenceOf(begun.record);\n const registrationFailureCode = begun._tag === \"AlreadyReleased\"\n ? \"shared-state-recovery-already-released-registration-failed\"\n : \"shared-state-recovery-registration-failed\";\n const registrationWasPresent = yield* inspectExactRegistration({\n coordinationRoot,\n record: begun.record,\n currentHost: input.currentHost,\n }).pipe(Effect.mapError((cause) => recoveryOperationError(registrationFailureCode, cause)));\n if (begun._tag === \"AlreadyReleased\") {\n yield* clearExactRegistration({\n coordinationRoot,\n record: begun.record,\n currentHost: input.currentHost,\n expectedRegistration: registrationWasPresent,\n }).pipe(Effect.mapError((cause) => recoveryOperationError(registrationFailureCode, cause)));\n return Object.freeze({\n status: \"already-released\" as const,\n key: begun.record.key,\n experimentId: begun.record.experimentId,\n ownerToken: begun.record.ownerToken,\n });\n }\n const outcome = yield* runAuthorTeardown({\n experiment: target.experiment,\n selectedEvalIds: target.selectedEvalIds,\n ...(input.observer === undefined ? {} : { observer: input.observer }),\n ...(input.signal === undefined ? {} : { signal: input.signal }),\n recovery: true,\n });\n if (outcome === false) {\n return yield* Effect.fail(new Error(\"Recovery target lost its required teardown callback.\"));\n }\n if (Result.isFailure(outcome)) {\n return Object.freeze({\n status: \"recovery-teardown-failed\" as const,\n evidence: claimedEvidence,\n error: outcome.failure instanceof Error ? outcome.failure.message : String(outcome.failure),\n });\n }\n yield* clearExactRegistration({\n coordinationRoot,\n record: begun.record,\n currentHost: input.currentHost,\n expectedRegistration: registrationWasPresent,\n }).pipe(Effect.mapError((cause) => recoveryOperationError(registrationFailureCode, cause)));\n yield* completeExplicitSharedStateRecoveryEffect({\n niceevalRoot: coordinationRoot,\n key: begun.record.key,\n ownerToken: begun.record.ownerToken,\n recoveryId: begun.recoveryId,\n localHost: input.currentHost,\n }).pipe(Effect.mapError((cause) => recoveryOperationError(\"shared-state-recovery-completion-failed\", cause)));\n return Object.freeze({\n status: \"recovered\" as const,\n key: begun.record.key,\n experimentId: begun.record.experimentId,\n ownerToken: begun.record.ownerToken,\n });\n });\n}\nexport function runTeardown(input: ExperimentHostTeardownRequest): Effect.Effect<ExperimentHostTeardownResult, ExperimentHostError, ProjectStateDatabase> {\n return closeOperation(\"teardown-run\", Effect.gen(function* () {\n const inspection = yield* inspectTeardown(input);\n if (inspection.status !== \"ready\")\n return inspection;\n const selection = yield* selectTeardowns(input);\n if (input.recoveryKey !== undefined) {\n if (inspection.evidence === undefined || selection.selected.length !== 1)\n return inspection;\n const record = yield* readSharedStateLeaseRecoveryTargetEffect(resolve(input.cwd, input.coordinationRoot ?? \".niceeval\"), input.recoveryKey);\n if (record === undefined) {\n return Object.freeze({ status: \"no-evidence\" as const, key: input.recoveryKey });\n }\n return yield* runExplicitRecovery(input, selection, record);\n }\n const coordinationRoot = resolve(input.cwd, input.coordinationRoot ?? \".niceeval\");\n const registrations = yield* readTeardownRegistrationsEffect(coordinationRoot);\n const results: Array<{\n readonly experimentId: string;\n readonly executions: number;\n readonly outcome: \"succeeded\" | \"failed\" | \"not-configured\";\n readonly error?: string;\n }> = [];\n for (const target of selection.selected) {\n if (teardownOf(target.experiment) === undefined) {\n results.push(Object.freeze({\n experimentId: target.experiment.id,\n executions: 0,\n outcome: \"not-configured\" as const,\n }));\n continue;\n }\n const matching = registrations.filter(({ entry }) => entry.experimentId === target.experiment.id);\n const orphaned = matching.filter(({ entry }) => isOrphanedTeardownRegistration(entry, input.currentHost));\n const claimed = yield* Effect.all(orphaned.map(({ id }) => removeTeardownRegistrationIfPresentEffect(coordinationRoot, id)), {\n concurrency: \"unbounded\",\n });\n const executions = matching.length === 0 ? 1 : claimed.filter(Boolean).length;\n let failure: string | undefined;\n for (let index = 0; index < executions; index += 1) {\n const outcome = yield* runAuthorTeardown({\n experiment: target.experiment,\n selectedEvalIds: target.selectedEvalIds,\n ...(input.observer === undefined ? {} : { observer: input.observer }),\n ...(input.signal === undefined ? {} : { signal: input.signal }),\n recovery: true,\n });\n if (outcome !== false && Result.isFailure(outcome)) {\n failure = outcome.failure instanceof Error ? outcome.failure.message : String(outcome.failure);\n }\n }\n results.push(Object.freeze({\n experimentId: target.experiment.id,\n executions,\n outcome: failure === undefined ? \"succeeded\" as const : \"failed\" as const,\n ...(failure === undefined ? {} : { error: failure }),\n }));\n }\n return Object.freeze({\n status: \"completed\" as const,\n experiments: freezeArray(results),\n });\n }));\n}\n"]}
package/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.defineContextMatch = exports.defineMaterialMatch = exports.MigrationRequiredError = exports.pairwisePreference = exports.instructionFollowing = exports.faithfulness = exports.factuality = exports.failureClassOf = exports.EvalFatalError = exports.ExperimentFatalError = exports.stripComments = exports.getEnv = exports.requireEnv = exports.readScoreMatchAudit = exports.defineScoreMatch = exports.defineJudge = exports.defineAdapterContract = exports.defineAdapter = exports.defineExperiment = exports.defineConfig = exports.defineEvalGroup = exports.defineScoreEval = exports.defineEval = void 0;
3
+ exports.defineModelSlots = exports.MigrationRequiredError = exports.failureClassOf = exports.EvalFatalError = exports.ExperimentFatalError = exports.defineAdapterContract = exports.defineAdapter = exports.defineExperiment = exports.defineConfig = exports.defineEvalGroup = exports.defineScoreEval = exports.defineEval = void 0;
4
4
  // niceeval 公开导出(import { … } from "niceeval")。
5
5
  // Agent/Adapter 相关见 "niceeval/adapter";Sandbox 相关见 "niceeval/sandbox"。
6
6
  var define_ts_1 = require("./define.cjs");
@@ -12,30 +12,14 @@ Object.defineProperty(exports, "defineExperiment", { enumerable: true, get: func
12
12
  var adapter_ts_1 = require("./adapter.cjs");
13
13
  Object.defineProperty(exports, "defineAdapter", { enumerable: true, get: function () { return adapter_ts_1.defineAdapter; } });
14
14
  Object.defineProperty(exports, "defineAdapterContract", { enumerable: true, get: function () { return adapter_ts_1.defineAdapterContract; } });
15
- var judge_ts_1 = require("./assertions/judge.cjs");
16
- Object.defineProperty(exports, "defineJudge", { enumerable: true, get: function () { return judge_ts_1.defineJudge; } });
17
- var match_ts_1 = require("./assertions/match.cjs");
18
- Object.defineProperty(exports, "defineScoreMatch", { enumerable: true, get: function () { return match_ts_1.defineScoreMatch; } });
19
- var score_match_audit_ts_1 = require("./assertions/score-match-audit.cjs");
20
- Object.defineProperty(exports, "readScoreMatchAudit", { enumerable: true, get: function () { return score_match_audit_ts_1.readScoreMatchAudit; } });
21
- var util_ts_1 = require("./util.cjs");
22
- Object.defineProperty(exports, "requireEnv", { enumerable: true, get: function () { return util_ts_1.requireEnv; } });
23
- Object.defineProperty(exports, "getEnv", { enumerable: true, get: function () { return util_ts_1.getEnv; } });
24
- Object.defineProperty(exports, "stripComments", { enumerable: true, get: function () { return util_ts_1.stripComments; } });
25
15
  // 执行失败分类:抛出点糖衣类(声明死因波及多远)+ 结构守卫。判据、分类链与止损语义见
26
16
  // docs/feature/error-classification/README.md;`niceeval/adapter` 复导出同一份词表类型。
27
17
  var failure_class_ts_1 = require("./shared/failure-class.cjs");
28
18
  Object.defineProperty(exports, "ExperimentFatalError", { enumerable: true, get: function () { return failure_class_ts_1.ExperimentFatalError; } });
29
19
  Object.defineProperty(exports, "EvalFatalError", { enumerable: true, get: function () { return failure_class_ts_1.EvalFatalError; } });
30
20
  Object.defineProperty(exports, "failureClassOf", { enumerable: true, get: function () { return failure_class_ts_1.failureClassOf; } });
31
- var judge_presets_ts_1 = require("./assertions/judge-presets.cjs");
32
- Object.defineProperty(exports, "factuality", { enumerable: true, get: function () { return judge_presets_ts_1.factuality; } });
33
- Object.defineProperty(exports, "faithfulness", { enumerable: true, get: function () { return judge_presets_ts_1.faithfulness; } });
34
- Object.defineProperty(exports, "instructionFollowing", { enumerable: true, get: function () { return judge_presets_ts_1.instructionFollowing; } });
35
- Object.defineProperty(exports, "pairwisePreference", { enumerable: true, get: function () { return judge_presets_ts_1.pairwisePreference; } });
36
21
  var index_ts_1 = require("./error-assistance/index.cjs");
37
22
  Object.defineProperty(exports, "MigrationRequiredError", { enumerable: true, get: function () { return index_ts_1.MigrationRequiredError; } });
38
- var context_match_ts_1 = require("./assertions/context-match.cjs");
39
- Object.defineProperty(exports, "defineMaterialMatch", { enumerable: true, get: function () { return context_match_ts_1.defineMaterialMatch; } });
40
- Object.defineProperty(exports, "defineContextMatch", { enumerable: true, get: function () { return context_match_ts_1.defineContextMatch; } });
23
+ var model_slots_ts_1 = require("./model-slots.cjs");
24
+ Object.defineProperty(exports, "defineModelSlots", { enumerable: true, get: function () { return model_slots_ts_1.defineModelSlots; } });
41
25
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,+CAA+C;AAC/C,uEAAuE;AACvE,yCAA2G;AAAlG,uGAAA,UAAU,OAAA;AAAE,4GAAA,eAAe,OAAA;AAAE,4GAAA,eAAe,OAAA;AAAE,yGAAA,YAAY,OAAA;AAAE,6GAAA,gBAAgB,OAAA;AACrF,2CAAoE;AAA3D,2GAAA,aAAa,OAAA;AAAE,mHAAA,qBAAqB,OAAA;AAC7C,kDAAoD;AAA3C,uGAAA,WAAW,OAAA;AAEpB,kDAAyD;AAAhD,4GAAA,gBAAgB,OAAA;AAGzB,0EAAuN;AAA9M,2HAAA,mBAAmB,OAAA;AAG5B,qCAA8D;AAArD,qGAAA,UAAU,OAAA;AAAE,iGAAA,MAAM,OAAA;AAAE,wGAAA,aAAa,OAAA;AAC1C,6CAA6C;AAC7C,6EAA6E;AAC7E,8DAAiG;AAAxF,wHAAA,oBAAoB,OAAA;AAAE,kHAAA,cAAc,OAAA;AAAE,kHAAA,cAAc,OAAA;AAK7D,kEAAmH;AAA1G,8GAAA,UAAU,OAAA;AAAE,gHAAA,YAAY,OAAA;AAAE,wHAAA,oBAAoB,OAAA;AAAE,sHAAA,kBAAkB,OAAA;AAG3E,wDAAiH;AAAxG,kHAAA,sBAAsB,OAAA;AAI/B,kEAAwF;AAA/E,uHAAA,mBAAmB,OAAA;AAAE,sHAAA,kBAAkB,OAAA","sourcesContent":["// niceeval 公开导出(import { … } from \"niceeval\")。\n// Agent/Adapter 相关见 \"niceeval/adapter\";Sandbox 相关见 \"niceeval/sandbox\"。\nexport { defineEval, defineScoreEval, defineEvalGroup, defineConfig, defineExperiment } from \"./define.ts\";\nexport { defineAdapter, defineAdapterContract } from \"./adapter.ts\";\nexport { defineJudge } from \"./assertions/judge.ts\";\nexport type { JudgeAnchor, JudgeDefinition, JudgeOptions } from \"./assertions/judge.ts\";\nexport { defineScoreMatch } from \"./assertions/match.ts\";\nexport type { ManagedScoreMatchOptions, ScoreMatch, ScoreMatchAnchor, ScoreMatchContext, ScoreMatchLlmFailure, ScoreMatchResult } from \"./assertions/match.ts\";\nexport type { AssertionEntryId } from \"./assertions/identity.ts\";\nexport { readScoreMatchAudit, type ScoreMatchAudit, type ScoreMatchAuditV3, type ScoreMatchAuditImageContent, type ScoreMatchAuditEnvelope, type ScoreMatchAuditReadResult, } from \"./assertions/score-match-audit.ts\";\nexport type { AgentSendWindowIdentity, AgentWorkspaceDiffEndpoint, AgentWorkspaceDiffHunks, AgentWorkspaceDiffPolicy, AgentWorkspaceDiff, AgentWorkspaceDiffWindow, AgentWorkspaceDiffWindowChange, } from \"./assertions/workspace-diff.ts\";\nexport type { AssertionCheck, ScoreFunction, PolymorphicBooleanAssertionHandle, PolymorphicMeasurementAssertionHandle, PostRunBooleanAssertionHandle, } from \"./assertions/api.ts\";\nexport { requireEnv, getEnv, stripComments } from \"./util.ts\";\n// 执行失败分类:抛出点糖衣类(声明死因波及多远)+ 结构守卫。判据、分类链与止损语义见\n// docs/feature/error-classification/README.md;`niceeval/adapter` 复导出同一份词表类型。\nexport { ExperimentFatalError, EvalFatalError, failureClassOf } from \"./shared/failure-class.ts\";\n// 类型(eval 作者会用到;跑哪个 agent / 用哪个 sandbox 见对应子路径)\nexport type { StreamEvent, ToolName, JsonValue, FlagValue, ExperimentFlags, JsonMatch, Usage, Turn, EvidenceCoverageStatus, EvidenceCoverageEntry, EvidenceCoverage, TurnEvidenceCoverage, TurnInput, InputFile, AnswerValue, InputResponse, RespondAnswer, TurnHandle, SessionHandle, TestContext, ScoreTestContext, Verdict, EvalAuthorFields, EvalInput, ScoreEvalInput, EvalDefinition, AnyEvalDefinition, EvalGroupMember, EvalGroupInput, EvalGroupDefinition, EvaluationKind, EvalDescriptor, ExperimentAuthorFields, SharedStateConfig, ExperimentInput, ExperimentDefinition, ExperimentHook, ExperimentHookContext, Config, LocalizedText, Reporter, ReporterEvent, EvalResult, AcceptedDifference, AcceptedResult, RetryAttemptRecord, InvocationSummary, InvocationShape, DiagnosticRecord, ExperimentRunInfo, SandboxRunInfo, ScriptResult, CommandResult, InputRequest, InputRequestFilter, O11ySummary, TraceSpan, SpanKind, DerivedFacts, FailureClass, FailureScope, AttemptFailureInfo, AttemptFailureClassifier, ExternalCause, ExternalCauseFact, ExternalCauseLink, ExternalCauseScalar, } from \"./types.ts\";\nexport type { Adapter, AdapterAssertionsFactory, AdapterAssertionsFactoryContext, AdapterCleanupContext, AttemptCancellation, AttemptSignal, AdapterContract, AdapterCreateContext, AdapterDefinition, AdapterEvalDefinition, AdapterEvalInput, AdapterIdentity, AdapterImplementation, AdapterImplementationInput, AdapterRuntimeDefinition, AdapterScoreEvalInput, EvalContext, ReservedAdapterContextKey, } from \"./adapter.ts\";\nexport type { ParsedTranscript } from \"./o11y/parsers/index.ts\";\nexport { factuality, faithfulness, instructionFollowing, pairwisePreference } from \"./assertions/judge-presets.ts\";\nexport type { JudgePresetOptions, FactualityMaterial, FaithfulnessMaterial, InstructionFollowingMaterial, PairwisePreferenceMaterial } from \"./assertions/judge-presets.ts\";\nexport type { JudgeProvider, JudgeSelection } from \"./judge/index.ts\";\nexport { MigrationRequiredError, type MigrationOccurrence, type ErrorSource } from \"./error-assistance/index.ts\";\nexport type { AdapterUsageInput, AdapterUsageSeal } from \"./adapter-usage.ts\";\nexport type { AdapterAttachmentInput, AdapterAttachmentReceipt } from \"./adapter-attachments.ts\";\nexport type { ExecutionDisplayBlock, ExecutionTraceActor, ExecutionTraceEvent, ExecutionTraceEvidence, ExecutionTraceInput, ExecutionTraceLimitation, ExecutionTraceLink, ExecutionTraceReceipt, ExecutionTraceScope, ExecutionTraceScopeMembership, ExecutionTraceSource, ExecutionTraceTime, TraceJson, } from \"./adapter-execution-trace.ts\";\nexport { defineMaterialMatch, defineContextMatch } from \"./assertions/context-match.ts\";\nexport type { MaterialMatch, ContextBooleanMatch, ContextScoreMatch, MatchContext, ReadonlyMaterial, MatchFact, MaterialCollection, MaterialItem, MaterialCaptureBudget, FactCaptureBudget } from \"./assertions/context-match.ts\";\nexport type { AttemptUsageSnapshot, AdapterAttemptUsageSnapshot } from \"./o11y/adapter-usage-projection.ts\";\nexport type { EvalUsage } from \"./o11y/eval-usage.ts\";\nexport type { AgentMatchContext } from \"./context/assert-first.ts\";\nexport type { ModelSlotSelection, ResolvedModelSlot, ResolvedModelSlots } from \"./model-slots.ts\";\nexport type { CacheReadReport, CacheReadSummary } from \"./o11y/cache-read.ts\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,+CAA+C;AAC/C,uEAAuE;AACvE,yCAA2G;AAAlG,uGAAA,UAAU,OAAA;AAAE,4GAAA,eAAe,OAAA;AAAE,4GAAA,eAAe,OAAA;AAAE,yGAAA,YAAY,OAAA;AAAE,6GAAA,gBAAgB,OAAA;AACrF,2CAAoE;AAA3D,2GAAA,aAAa,OAAA;AAAE,mHAAA,qBAAqB,OAAA;AAO7C,6CAA6C;AAC7C,6EAA6E;AAC7E,8DAAiG;AAAxF,wHAAA,oBAAoB,OAAA;AAAE,kHAAA,cAAc,OAAA;AAAE,kHAAA,cAAc,OAAA;AAO7D,wDAAiH;AAAxG,kHAAA,sBAAsB,OAAA;AAS/B,mDAAoD;AAA3C,kHAAA,gBAAgB,OAAA","sourcesContent":["// niceeval 公开导出(import { … } from \"niceeval\")。\n// Agent/Adapter 相关见 \"niceeval/adapter\";Sandbox 相关见 \"niceeval/sandbox\"。\nexport { defineEval, defineScoreEval, defineEvalGroup, defineConfig, defineExperiment } from \"./define.ts\";\nexport { defineAdapter, defineAdapterContract } from \"./adapter.ts\";\nexport type { JudgeAnchor, JudgeDefinition, JudgeOptions } from \"./assertions/judge.ts\";\nexport type { ManagedScoreMatchOptions, ScoreMatch, ScoreMatchAnchor, ScoreMatchContext, ScoreMatchLlmFailure, ScoreMatchResult } from \"./assertions/match.ts\";\nexport type { AssertionEntryId } from \"./assertions/identity.ts\";\nexport { type ScoreMatchAudit, type ScoreMatchAuditV3, type ScoreMatchAuditImageContent, type ScoreMatchAuditEnvelope, type ScoreMatchAuditReadResult, } from \"./assertions/score-match-audit.ts\";\nexport type { AgentSendWindowIdentity, AgentWorkspaceDiffEndpoint, AgentWorkspaceDiffHunks, AgentWorkspaceDiffPolicy, AgentWorkspaceDiff, AgentWorkspaceDiffWindow, AgentWorkspaceDiffWindowChange, } from \"./assertions/workspace-diff.ts\";\nexport type { AssertionCheck, ScoreFunction, PolymorphicBooleanAssertionHandle, PolymorphicMeasurementAssertionHandle, PostRunBooleanAssertionHandle, } from \"./assertions/api.ts\";\n// 执行失败分类:抛出点糖衣类(声明死因波及多远)+ 结构守卫。判据、分类链与止损语义见\n// docs/feature/error-classification/README.md;`niceeval/adapter` 复导出同一份词表类型。\nexport { ExperimentFatalError, EvalFatalError, failureClassOf } from \"./shared/failure-class.ts\";\n// 类型(eval 作者会用到;跑哪个 agent / 用哪个 sandbox 见对应子路径)\nexport type { StreamEvent, ToolName, JsonValue, FlagValue, ExperimentFlags, JsonMatch, Usage, Turn, EvidenceCoverageStatus, EvidenceCoverageEntry, EvidenceCoverage, TurnEvidenceCoverage, TurnInput, InputFile, AnswerValue, InputResponse, RespondAnswer, TurnHandle, SessionHandle, TestContext, ScoreTestContext, Verdict, EvalAuthorFields, EvalInput, ScoreEvalInput, EvalDefinition, AnyEvalDefinition, EvalGroupMember, EvalGroupInput, EvalGroupDefinition, EvaluationKind, EvalDescriptor, ExperimentAuthorFields, SharedStateConfig, ExperimentInput, ExperimentDefinition, ExperimentHook, ExperimentHookContext, Config, LocalizedText, Reporter, ReporterEvent, EvalResult, AcceptedDifference, AcceptedResult, RetryAttemptRecord, InvocationSummary, InvocationShape, DiagnosticRecord, ExperimentRunInfo, SandboxRunInfo, ScriptResult, CommandResult, InputRequest, InputRequestFilter, O11ySummary, TraceSpan, SpanKind, DerivedFacts, FailureClass, FailureScope, AttemptFailureInfo, AttemptFailureClassifier, ExternalCause, ExternalCauseFact, ExternalCauseLink, ExternalCauseScalar, } from \"./types.ts\";\nexport type { Adapter, AdapterAssertionsFactory, AdapterAssertionsFactoryContext, AdapterCleanupContext, AttemptCancellation, AttemptSignal, AdapterContract, AdapterCreateContext, AdapterDefinition, AdapterEvalDefinition, AdapterEvalInput, AdapterIdentity, AdapterImplementation, AdapterImplementationInput, AdapterRuntimeDefinition, AdapterScoreEvalInput, EvalContext, ReservedAdapterContextKey, } from \"./adapter.ts\";\nexport type { ParsedTranscript } from \"./o11y/parsers/index.ts\";\nexport type { JudgePresetOptions, FactualityMaterial, FaithfulnessMaterial, InstructionFollowingMaterial, PairwisePreferenceMaterial } from \"./assertions/judge-presets.ts\";\nexport type { JudgeProvider, JudgeSelection } from \"./judge/index.ts\";\nexport { MigrationRequiredError, type MigrationOccurrence, type ErrorSource } from \"./error-assistance/index.ts\";\nexport type { AdapterUsageInput, AdapterUsageSeal } from \"./adapter-usage.ts\";\nexport type { AdapterAttachmentInput, AdapterAttachmentReceipt } from \"./adapter-attachments.ts\";\nexport type { ExecutionDisplayBlock, ExecutionTraceActor, ExecutionTraceEvent, ExecutionTraceEvidence, ExecutionTraceInput, ExecutionTraceLimitation, ExecutionTraceLink, ExecutionTraceReceipt, ExecutionTraceScope, ExecutionTraceScopeMembership, ExecutionTraceSource, ExecutionTraceTime, TraceJson, } from \"./adapter-execution-trace.ts\";\nexport type { MaterialMatch, ContextBooleanMatch, ContextScoreMatch, MatchContext, ReadonlyMaterial, MatchFact, MaterialCollection, MaterialItem, MaterialCaptureBudget, FactCaptureBudget } from \"./assertions/context-match.ts\";\nexport type { AttemptUsageSnapshot, AdapterAttemptUsageSnapshot } from \"./o11y/adapter-usage-projection.ts\";\nexport type { EvalUsage, EvalCacheRead } from \"./o11y/eval-usage.ts\";\nexport type { AgentMatchContext } from \"./context/assert-first.ts\";\nexport type { ModelSlotSelection, ResolvedModelSlot, ResolvedModelSlots } from \"./model-slots.ts\";\nexport { defineModelSlots } from \"./model-slots.ts\";\nexport type { CacheReadReport, CacheReadSummary } from \"./o11y/cache-read.ts\";\n"]}
package/dist/index.d.cts CHANGED
@@ -1,29 +1,25 @@
1
1
  export { defineEval, defineScoreEval, defineEvalGroup, defineConfig, defineExperiment } from "./define.cjs";
2
2
  export { defineAdapter, defineAdapterContract } from "./adapter.cjs";
3
- export { defineJudge } from "./assertions/judge.cjs";
4
3
  export type { JudgeAnchor, JudgeDefinition, JudgeOptions } from "./assertions/judge.cjs";
5
- export { defineScoreMatch } from "./assertions/match.cjs";
6
4
  export type { ManagedScoreMatchOptions, ScoreMatch, ScoreMatchAnchor, ScoreMatchContext, ScoreMatchLlmFailure, ScoreMatchResult } from "./assertions/match.cjs";
7
5
  export type { AssertionEntryId } from "./assertions/identity.cjs";
8
- export { readScoreMatchAudit, type ScoreMatchAudit, type ScoreMatchAuditV3, type ScoreMatchAuditImageContent, type ScoreMatchAuditEnvelope, type ScoreMatchAuditReadResult, } from "./assertions/score-match-audit.cjs";
6
+ export { type ScoreMatchAudit, type ScoreMatchAuditV3, type ScoreMatchAuditImageContent, type ScoreMatchAuditEnvelope, type ScoreMatchAuditReadResult, } from "./assertions/score-match-audit.cjs";
9
7
  export type { AgentSendWindowIdentity, AgentWorkspaceDiffEndpoint, AgentWorkspaceDiffHunks, AgentWorkspaceDiffPolicy, AgentWorkspaceDiff, AgentWorkspaceDiffWindow, AgentWorkspaceDiffWindowChange, } from "./assertions/workspace-diff.cjs";
10
8
  export type { AssertionCheck, ScoreFunction, PolymorphicBooleanAssertionHandle, PolymorphicMeasurementAssertionHandle, PostRunBooleanAssertionHandle, } from "./assertions/api.cjs";
11
- export { requireEnv, getEnv, stripComments } from "./util.cjs";
12
9
  export { ExperimentFatalError, EvalFatalError, failureClassOf } from "./shared/failure-class.cjs";
13
10
  export type { StreamEvent, ToolName, JsonValue, FlagValue, ExperimentFlags, JsonMatch, Usage, Turn, EvidenceCoverageStatus, EvidenceCoverageEntry, EvidenceCoverage, TurnEvidenceCoverage, TurnInput, InputFile, AnswerValue, InputResponse, RespondAnswer, TurnHandle, SessionHandle, TestContext, ScoreTestContext, Verdict, EvalAuthorFields, EvalInput, ScoreEvalInput, EvalDefinition, AnyEvalDefinition, EvalGroupMember, EvalGroupInput, EvalGroupDefinition, EvaluationKind, EvalDescriptor, ExperimentAuthorFields, SharedStateConfig, ExperimentInput, ExperimentDefinition, ExperimentHook, ExperimentHookContext, Config, LocalizedText, Reporter, ReporterEvent, EvalResult, AcceptedDifference, AcceptedResult, RetryAttemptRecord, InvocationSummary, InvocationShape, DiagnosticRecord, ExperimentRunInfo, SandboxRunInfo, ScriptResult, CommandResult, InputRequest, InputRequestFilter, O11ySummary, TraceSpan, SpanKind, DerivedFacts, FailureClass, FailureScope, AttemptFailureInfo, AttemptFailureClassifier, ExternalCause, ExternalCauseFact, ExternalCauseLink, ExternalCauseScalar, } from "./types.cjs";
14
11
  export type { Adapter, AdapterAssertionsFactory, AdapterAssertionsFactoryContext, AdapterCleanupContext, AttemptCancellation, AttemptSignal, AdapterContract, AdapterCreateContext, AdapterDefinition, AdapterEvalDefinition, AdapterEvalInput, AdapterIdentity, AdapterImplementation, AdapterImplementationInput, AdapterRuntimeDefinition, AdapterScoreEvalInput, EvalContext, ReservedAdapterContextKey, } from "./adapter.cjs";
15
12
  export type { ParsedTranscript } from "./o11y/parsers/index.cjs";
16
- export { factuality, faithfulness, instructionFollowing, pairwisePreference } from "./assertions/judge-presets.cjs";
17
13
  export type { JudgePresetOptions, FactualityMaterial, FaithfulnessMaterial, InstructionFollowingMaterial, PairwisePreferenceMaterial } from "./assertions/judge-presets.cjs";
18
14
  export type { JudgeProvider, JudgeSelection } from "./judge/index.cjs";
19
15
  export { MigrationRequiredError, type MigrationOccurrence, type ErrorSource } from "./error-assistance/index.cjs";
20
16
  export type { AdapterUsageInput, AdapterUsageSeal } from "./adapter-usage.cjs";
21
17
  export type { AdapterAttachmentInput, AdapterAttachmentReceipt } from "./adapter-attachments.cjs";
22
18
  export type { ExecutionDisplayBlock, ExecutionTraceActor, ExecutionTraceEvent, ExecutionTraceEvidence, ExecutionTraceInput, ExecutionTraceLimitation, ExecutionTraceLink, ExecutionTraceReceipt, ExecutionTraceScope, ExecutionTraceScopeMembership, ExecutionTraceSource, ExecutionTraceTime, TraceJson, } from "./adapter-execution-trace.cjs";
23
- export { defineMaterialMatch, defineContextMatch } from "./assertions/context-match.cjs";
24
19
  export type { MaterialMatch, ContextBooleanMatch, ContextScoreMatch, MatchContext, ReadonlyMaterial, MatchFact, MaterialCollection, MaterialItem, MaterialCaptureBudget, FactCaptureBudget } from "./assertions/context-match.cjs";
25
20
  export type { AttemptUsageSnapshot, AdapterAttemptUsageSnapshot } from "./o11y/adapter-usage-projection.cjs";
26
- export type { EvalUsage } from "./o11y/eval-usage.cjs";
21
+ export type { EvalUsage, EvalCacheRead } from "./o11y/eval-usage.cjs";
27
22
  export type { AgentMatchContext } from "./context/assert-first.cjs";
28
23
  export type { ModelSlotSelection, ResolvedModelSlot, ResolvedModelSlots } from "./model-slots.cjs";
24
+ export { defineModelSlots } from "./model-slots.cjs";
29
25
  export type { CacheReadReport, CacheReadSummary } from "./o11y/cache-read.cjs";
package/dist/index.d.mts CHANGED
@@ -1,29 +1,25 @@
1
1
  export { defineEval, defineScoreEval, defineEvalGroup, defineConfig, defineExperiment } from "./define.mjs";
2
2
  export { defineAdapter, defineAdapterContract } from "./adapter.mjs";
3
- export { defineJudge } from "./assertions/judge.mjs";
4
3
  export type { JudgeAnchor, JudgeDefinition, JudgeOptions } from "./assertions/judge.mjs";
5
- export { defineScoreMatch } from "./assertions/match.mjs";
6
4
  export type { ManagedScoreMatchOptions, ScoreMatch, ScoreMatchAnchor, ScoreMatchContext, ScoreMatchLlmFailure, ScoreMatchResult } from "./assertions/match.mjs";
7
5
  export type { AssertionEntryId } from "./assertions/identity.mjs";
8
- export { readScoreMatchAudit, type ScoreMatchAudit, type ScoreMatchAuditV3, type ScoreMatchAuditImageContent, type ScoreMatchAuditEnvelope, type ScoreMatchAuditReadResult, } from "./assertions/score-match-audit.mjs";
6
+ export { type ScoreMatchAudit, type ScoreMatchAuditV3, type ScoreMatchAuditImageContent, type ScoreMatchAuditEnvelope, type ScoreMatchAuditReadResult, } from "./assertions/score-match-audit.mjs";
9
7
  export type { AgentSendWindowIdentity, AgentWorkspaceDiffEndpoint, AgentWorkspaceDiffHunks, AgentWorkspaceDiffPolicy, AgentWorkspaceDiff, AgentWorkspaceDiffWindow, AgentWorkspaceDiffWindowChange, } from "./assertions/workspace-diff.mjs";
10
8
  export type { AssertionCheck, ScoreFunction, PolymorphicBooleanAssertionHandle, PolymorphicMeasurementAssertionHandle, PostRunBooleanAssertionHandle, } from "./assertions/api.mjs";
11
- export { requireEnv, getEnv, stripComments } from "./util.mjs";
12
9
  export { ExperimentFatalError, EvalFatalError, failureClassOf } from "./shared/failure-class.mjs";
13
10
  export type { StreamEvent, ToolName, JsonValue, FlagValue, ExperimentFlags, JsonMatch, Usage, Turn, EvidenceCoverageStatus, EvidenceCoverageEntry, EvidenceCoverage, TurnEvidenceCoverage, TurnInput, InputFile, AnswerValue, InputResponse, RespondAnswer, TurnHandle, SessionHandle, TestContext, ScoreTestContext, Verdict, EvalAuthorFields, EvalInput, ScoreEvalInput, EvalDefinition, AnyEvalDefinition, EvalGroupMember, EvalGroupInput, EvalGroupDefinition, EvaluationKind, EvalDescriptor, ExperimentAuthorFields, SharedStateConfig, ExperimentInput, ExperimentDefinition, ExperimentHook, ExperimentHookContext, Config, LocalizedText, Reporter, ReporterEvent, EvalResult, AcceptedDifference, AcceptedResult, RetryAttemptRecord, InvocationSummary, InvocationShape, DiagnosticRecord, ExperimentRunInfo, SandboxRunInfo, ScriptResult, CommandResult, InputRequest, InputRequestFilter, O11ySummary, TraceSpan, SpanKind, DerivedFacts, FailureClass, FailureScope, AttemptFailureInfo, AttemptFailureClassifier, ExternalCause, ExternalCauseFact, ExternalCauseLink, ExternalCauseScalar, } from "./types.mjs";
14
11
  export type { Adapter, AdapterAssertionsFactory, AdapterAssertionsFactoryContext, AdapterCleanupContext, AttemptCancellation, AttemptSignal, AdapterContract, AdapterCreateContext, AdapterDefinition, AdapterEvalDefinition, AdapterEvalInput, AdapterIdentity, AdapterImplementation, AdapterImplementationInput, AdapterRuntimeDefinition, AdapterScoreEvalInput, EvalContext, ReservedAdapterContextKey, } from "./adapter.mjs";
15
12
  export type { ParsedTranscript } from "./o11y/parsers/index.mjs";
16
- export { factuality, faithfulness, instructionFollowing, pairwisePreference } from "./assertions/judge-presets.mjs";
17
13
  export type { JudgePresetOptions, FactualityMaterial, FaithfulnessMaterial, InstructionFollowingMaterial, PairwisePreferenceMaterial } from "./assertions/judge-presets.mjs";
18
14
  export type { JudgeProvider, JudgeSelection } from "./judge/index.mjs";
19
15
  export { MigrationRequiredError, type MigrationOccurrence, type ErrorSource } from "./error-assistance/index.mjs";
20
16
  export type { AdapterUsageInput, AdapterUsageSeal } from "./adapter-usage.mjs";
21
17
  export type { AdapterAttachmentInput, AdapterAttachmentReceipt } from "./adapter-attachments.mjs";
22
18
  export type { ExecutionDisplayBlock, ExecutionTraceActor, ExecutionTraceEvent, ExecutionTraceEvidence, ExecutionTraceInput, ExecutionTraceLimitation, ExecutionTraceLink, ExecutionTraceReceipt, ExecutionTraceScope, ExecutionTraceScopeMembership, ExecutionTraceSource, ExecutionTraceTime, TraceJson, } from "./adapter-execution-trace.mjs";
23
- export { defineMaterialMatch, defineContextMatch } from "./assertions/context-match.mjs";
24
19
  export type { MaterialMatch, ContextBooleanMatch, ContextScoreMatch, MatchContext, ReadonlyMaterial, MatchFact, MaterialCollection, MaterialItem, MaterialCaptureBudget, FactCaptureBudget } from "./assertions/context-match.mjs";
25
20
  export type { AttemptUsageSnapshot, AdapterAttemptUsageSnapshot } from "./o11y/adapter-usage-projection.mjs";
26
- export type { EvalUsage } from "./o11y/eval-usage.mjs";
21
+ export type { EvalUsage, EvalCacheRead } from "./o11y/eval-usage.mjs";
27
22
  export type { AgentMatchContext } from "./context/assert-first.mjs";
28
23
  export type { ModelSlotSelection, ResolvedModelSlot, ResolvedModelSlots } from "./model-slots.mjs";
24
+ export { defineModelSlots } from "./model-slots.mjs";
29
25
  export type { CacheReadReport, CacheReadSummary } from "./o11y/cache-read.mjs";
package/dist/index.d.ts CHANGED
@@ -1,29 +1,25 @@
1
1
  export { defineEval, defineScoreEval, defineEvalGroup, defineConfig, defineExperiment } from "./define.js";
2
2
  export { defineAdapter, defineAdapterContract } from "./adapter.js";
3
- export { defineJudge } from "./assertions/judge.js";
4
3
  export type { JudgeAnchor, JudgeDefinition, JudgeOptions } from "./assertions/judge.js";
5
- export { defineScoreMatch } from "./assertions/match.js";
6
4
  export type { ManagedScoreMatchOptions, ScoreMatch, ScoreMatchAnchor, ScoreMatchContext, ScoreMatchLlmFailure, ScoreMatchResult } from "./assertions/match.js";
7
5
  export type { AssertionEntryId } from "./assertions/identity.js";
8
- export { readScoreMatchAudit, type ScoreMatchAudit, type ScoreMatchAuditV3, type ScoreMatchAuditImageContent, type ScoreMatchAuditEnvelope, type ScoreMatchAuditReadResult, } from "./assertions/score-match-audit.js";
6
+ export { type ScoreMatchAudit, type ScoreMatchAuditV3, type ScoreMatchAuditImageContent, type ScoreMatchAuditEnvelope, type ScoreMatchAuditReadResult, } from "./assertions/score-match-audit.js";
9
7
  export type { AgentSendWindowIdentity, AgentWorkspaceDiffEndpoint, AgentWorkspaceDiffHunks, AgentWorkspaceDiffPolicy, AgentWorkspaceDiff, AgentWorkspaceDiffWindow, AgentWorkspaceDiffWindowChange, } from "./assertions/workspace-diff.js";
10
8
  export type { AssertionCheck, ScoreFunction, PolymorphicBooleanAssertionHandle, PolymorphicMeasurementAssertionHandle, PostRunBooleanAssertionHandle, } from "./assertions/api.js";
11
- export { requireEnv, getEnv, stripComments } from "./util.js";
12
9
  export { ExperimentFatalError, EvalFatalError, failureClassOf } from "./shared/failure-class.js";
13
10
  export type { StreamEvent, ToolName, JsonValue, FlagValue, ExperimentFlags, JsonMatch, Usage, Turn, EvidenceCoverageStatus, EvidenceCoverageEntry, EvidenceCoverage, TurnEvidenceCoverage, TurnInput, InputFile, AnswerValue, InputResponse, RespondAnswer, TurnHandle, SessionHandle, TestContext, ScoreTestContext, Verdict, EvalAuthorFields, EvalInput, ScoreEvalInput, EvalDefinition, AnyEvalDefinition, EvalGroupMember, EvalGroupInput, EvalGroupDefinition, EvaluationKind, EvalDescriptor, ExperimentAuthorFields, SharedStateConfig, ExperimentInput, ExperimentDefinition, ExperimentHook, ExperimentHookContext, Config, LocalizedText, Reporter, ReporterEvent, EvalResult, AcceptedDifference, AcceptedResult, RetryAttemptRecord, InvocationSummary, InvocationShape, DiagnosticRecord, ExperimentRunInfo, SandboxRunInfo, ScriptResult, CommandResult, InputRequest, InputRequestFilter, O11ySummary, TraceSpan, SpanKind, DerivedFacts, FailureClass, FailureScope, AttemptFailureInfo, AttemptFailureClassifier, ExternalCause, ExternalCauseFact, ExternalCauseLink, ExternalCauseScalar, } from "./types.js";
14
11
  export type { Adapter, AdapterAssertionsFactory, AdapterAssertionsFactoryContext, AdapterCleanupContext, AttemptCancellation, AttemptSignal, AdapterContract, AdapterCreateContext, AdapterDefinition, AdapterEvalDefinition, AdapterEvalInput, AdapterIdentity, AdapterImplementation, AdapterImplementationInput, AdapterRuntimeDefinition, AdapterScoreEvalInput, EvalContext, ReservedAdapterContextKey, } from "./adapter.js";
15
12
  export type { ParsedTranscript } from "./o11y/parsers/index.js";
16
- export { factuality, faithfulness, instructionFollowing, pairwisePreference } from "./assertions/judge-presets.js";
17
13
  export type { JudgePresetOptions, FactualityMaterial, FaithfulnessMaterial, InstructionFollowingMaterial, PairwisePreferenceMaterial } from "./assertions/judge-presets.js";
18
14
  export type { JudgeProvider, JudgeSelection } from "./judge/index.js";
19
15
  export { MigrationRequiredError, type MigrationOccurrence, type ErrorSource } from "./error-assistance/index.js";
20
16
  export type { AdapterUsageInput, AdapterUsageSeal } from "./adapter-usage.js";
21
17
  export type { AdapterAttachmentInput, AdapterAttachmentReceipt } from "./adapter-attachments.js";
22
18
  export type { ExecutionDisplayBlock, ExecutionTraceActor, ExecutionTraceEvent, ExecutionTraceEvidence, ExecutionTraceInput, ExecutionTraceLimitation, ExecutionTraceLink, ExecutionTraceReceipt, ExecutionTraceScope, ExecutionTraceScopeMembership, ExecutionTraceSource, ExecutionTraceTime, TraceJson, } from "./adapter-execution-trace.js";
23
- export { defineMaterialMatch, defineContextMatch } from "./assertions/context-match.js";
24
19
  export type { MaterialMatch, ContextBooleanMatch, ContextScoreMatch, MatchContext, ReadonlyMaterial, MatchFact, MaterialCollection, MaterialItem, MaterialCaptureBudget, FactCaptureBudget } from "./assertions/context-match.js";
25
20
  export type { AttemptUsageSnapshot, AdapterAttemptUsageSnapshot } from "./o11y/adapter-usage-projection.js";
26
- export type { EvalUsage } from "./o11y/eval-usage.js";
21
+ export type { EvalUsage, EvalCacheRead } from "./o11y/eval-usage.js";
27
22
  export type { AgentMatchContext } from "./context/assert-first.js";
28
23
  export type { ModelSlotSelection, ResolvedModelSlot, ResolvedModelSlots } from "./model-slots.js";
24
+ export { defineModelSlots } from "./model-slots.js";
29
25
  export type { CacheReadReport, CacheReadSummary } from "./o11y/cache-read.js";
package/dist/index.js CHANGED
@@ -13,38 +13,16 @@ const __niceevalExport4 = __niceevalCanonical["defineAdapterContract"];
13
13
  export { __niceevalExport4 as defineAdapterContract };
14
14
  const __niceevalExport5 = __niceevalCanonical["defineConfig"];
15
15
  export { __niceevalExport5 as defineConfig };
16
- const __niceevalExport6 = __niceevalCanonical["defineContextMatch"];
17
- export { __niceevalExport6 as defineContextMatch };
18
- const __niceevalExport7 = __niceevalCanonical["defineEval"];
19
- export { __niceevalExport7 as defineEval };
20
- const __niceevalExport8 = __niceevalCanonical["defineEvalGroup"];
21
- export { __niceevalExport8 as defineEvalGroup };
22
- const __niceevalExport9 = __niceevalCanonical["defineExperiment"];
23
- export { __niceevalExport9 as defineExperiment };
24
- const __niceevalExport10 = __niceevalCanonical["defineJudge"];
25
- export { __niceevalExport10 as defineJudge };
26
- const __niceevalExport11 = __niceevalCanonical["defineMaterialMatch"];
27
- export { __niceevalExport11 as defineMaterialMatch };
28
- const __niceevalExport12 = __niceevalCanonical["defineScoreEval"];
29
- export { __niceevalExport12 as defineScoreEval };
30
- const __niceevalExport13 = __niceevalCanonical["defineScoreMatch"];
31
- export { __niceevalExport13 as defineScoreMatch };
32
- const __niceevalExport14 = __niceevalCanonical["factuality"];
33
- export { __niceevalExport14 as factuality };
34
- const __niceevalExport15 = __niceevalCanonical["failureClassOf"];
35
- export { __niceevalExport15 as failureClassOf };
36
- const __niceevalExport16 = __niceevalCanonical["faithfulness"];
37
- export { __niceevalExport16 as faithfulness };
38
- const __niceevalExport17 = __niceevalCanonical["getEnv"];
39
- export { __niceevalExport17 as getEnv };
40
- const __niceevalExport18 = __niceevalCanonical["instructionFollowing"];
41
- export { __niceevalExport18 as instructionFollowing };
42
- const __niceevalExport19 = __niceevalCanonical["pairwisePreference"];
43
- export { __niceevalExport19 as pairwisePreference };
44
- const __niceevalExport20 = __niceevalCanonical["readScoreMatchAudit"];
45
- export { __niceevalExport20 as readScoreMatchAudit };
46
- const __niceevalExport21 = __niceevalCanonical["requireEnv"];
47
- export { __niceevalExport21 as requireEnv };
48
- const __niceevalExport22 = __niceevalCanonical["stripComments"];
49
- export { __niceevalExport22 as stripComments };
16
+ const __niceevalExport6 = __niceevalCanonical["defineEval"];
17
+ export { __niceevalExport6 as defineEval };
18
+ const __niceevalExport7 = __niceevalCanonical["defineEvalGroup"];
19
+ export { __niceevalExport7 as defineEvalGroup };
20
+ const __niceevalExport8 = __niceevalCanonical["defineExperiment"];
21
+ export { __niceevalExport8 as defineExperiment };
22
+ const __niceevalExport9 = __niceevalCanonical["defineModelSlots"];
23
+ export { __niceevalExport9 as defineModelSlots };
24
+ const __niceevalExport10 = __niceevalCanonical["defineScoreEval"];
25
+ export { __niceevalExport10 as defineScoreEval };
26
+ const __niceevalExport11 = __niceevalCanonical["failureClassOf"];
27
+ export { __niceevalExport11 as failureClassOf };
50
28
  //# sourceMappingURL=index.js.map
package/dist/index.mjs CHANGED
@@ -13,38 +13,16 @@ const __niceevalExport4 = __niceevalCanonical["defineAdapterContract"];
13
13
  export { __niceevalExport4 as defineAdapterContract };
14
14
  const __niceevalExport5 = __niceevalCanonical["defineConfig"];
15
15
  export { __niceevalExport5 as defineConfig };
16
- const __niceevalExport6 = __niceevalCanonical["defineContextMatch"];
17
- export { __niceevalExport6 as defineContextMatch };
18
- const __niceevalExport7 = __niceevalCanonical["defineEval"];
19
- export { __niceevalExport7 as defineEval };
20
- const __niceevalExport8 = __niceevalCanonical["defineEvalGroup"];
21
- export { __niceevalExport8 as defineEvalGroup };
22
- const __niceevalExport9 = __niceevalCanonical["defineExperiment"];
23
- export { __niceevalExport9 as defineExperiment };
24
- const __niceevalExport10 = __niceevalCanonical["defineJudge"];
25
- export { __niceevalExport10 as defineJudge };
26
- const __niceevalExport11 = __niceevalCanonical["defineMaterialMatch"];
27
- export { __niceevalExport11 as defineMaterialMatch };
28
- const __niceevalExport12 = __niceevalCanonical["defineScoreEval"];
29
- export { __niceevalExport12 as defineScoreEval };
30
- const __niceevalExport13 = __niceevalCanonical["defineScoreMatch"];
31
- export { __niceevalExport13 as defineScoreMatch };
32
- const __niceevalExport14 = __niceevalCanonical["factuality"];
33
- export { __niceevalExport14 as factuality };
34
- const __niceevalExport15 = __niceevalCanonical["failureClassOf"];
35
- export { __niceevalExport15 as failureClassOf };
36
- const __niceevalExport16 = __niceevalCanonical["faithfulness"];
37
- export { __niceevalExport16 as faithfulness };
38
- const __niceevalExport17 = __niceevalCanonical["getEnv"];
39
- export { __niceevalExport17 as getEnv };
40
- const __niceevalExport18 = __niceevalCanonical["instructionFollowing"];
41
- export { __niceevalExport18 as instructionFollowing };
42
- const __niceevalExport19 = __niceevalCanonical["pairwisePreference"];
43
- export { __niceevalExport19 as pairwisePreference };
44
- const __niceevalExport20 = __niceevalCanonical["readScoreMatchAudit"];
45
- export { __niceevalExport20 as readScoreMatchAudit };
46
- const __niceevalExport21 = __niceevalCanonical["requireEnv"];
47
- export { __niceevalExport21 as requireEnv };
48
- const __niceevalExport22 = __niceevalCanonical["stripComments"];
49
- export { __niceevalExport22 as stripComments };
16
+ const __niceevalExport6 = __niceevalCanonical["defineEval"];
17
+ export { __niceevalExport6 as defineEval };
18
+ const __niceevalExport7 = __niceevalCanonical["defineEvalGroup"];
19
+ export { __niceevalExport7 as defineEvalGroup };
20
+ const __niceevalExport8 = __niceevalCanonical["defineExperiment"];
21
+ export { __niceevalExport8 as defineExperiment };
22
+ const __niceevalExport9 = __niceevalCanonical["defineModelSlots"];
23
+ export { __niceevalExport9 as defineModelSlots };
24
+ const __niceevalExport10 = __niceevalCanonical["defineScoreEval"];
25
+ export { __niceevalExport10 as defineScoreEval };
26
+ const __niceevalExport11 = __niceevalCanonical["failureClassOf"];
27
+ export { __niceevalExport11 as failureClassOf };
50
28
  //# sourceMappingURL=index.mjs.map
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ResolvedModelSlotsSchema = void 0;
4
+ exports.defineModelSlots = defineModelSlots;
5
+ exports.normalizeModelRequirements = normalizeModelRequirements;
6
+ exports.assertRequiredModelSlots = assertRequiredModelSlots;
4
7
  exports.normalizeModelSlots = normalizeModelSlots;
5
8
  const effect_1 = require("effect");
6
9
  const modelText = effect_1.Schema.String.check(effect_1.Schema.isPattern(/\S/u));
@@ -9,6 +12,22 @@ const selections = effect_1.Schema.Record(slotKey, effect_1.Schema.Struct({
9
12
  model: modelText,
10
13
  reasoningEffort: effect_1.Schema.optionalKey(modelText),
11
14
  })).check(effect_1.Schema.makeFilter((value) => Object.keys(value).length > 0 && Object.keys(value).length <= 64));
15
+ /** Share immutable model purposes without binding an Eval to one Experiment. */
16
+ function defineModelSlots(input) {
17
+ const decoded = effect_1.Schema.decodeUnknownSync(selections, { onExcessProperty: "error" })(input);
18
+ return Object.freeze(Object.fromEntries(Object.keys(decoded).sort().map((key) => [key, Object.freeze({ ...decoded[key] })])));
19
+ }
20
+ function normalizeModelRequirements(value) {
21
+ if (value === undefined)
22
+ return undefined;
23
+ const decoded = effect_1.Schema.decodeUnknownSync(effect_1.Schema.Struct({ models: selections }), { onExcessProperty: "error" })(value);
24
+ return Object.freeze(Object.keys(decoded.models).sort());
25
+ }
26
+ function assertRequiredModelSlots(required, models, subject) {
27
+ const missing = required?.filter((key) => !Object.hasOwn(models ?? {}, key)) ?? [];
28
+ if (missing.length > 0)
29
+ throw new TypeError(`${subject} requires undeclared model slots: ${missing.join(", ")}.`);
30
+ }
12
31
  exports.ResolvedModelSlotsSchema = effect_1.Schema.Record(slotKey, effect_1.Schema.Struct({
13
32
  model: effect_1.Schema.NullOr(modelText),
14
33
  reasoningEffort: effect_1.Schema.NullOr(modelText),
@@ -1 +1 @@
1
- {"version":3,"file":"model-slots.js","sourceRoot":"","sources":["model-slots.ts"],"names":[],"mappings":"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","sourcesContent":["import { Schema } from \"effect\";\n/** A model selected for one application-defined purpose. */\nexport interface ModelSlotSelection {\n readonly model: string;\n readonly reasoningEffort?: string;\n}\n/** Frozen selection; null preserves an unspecified native default. */\nexport interface ResolvedModelSlot {\n readonly model: string | null;\n readonly reasoningEffort: string | null;\n}\nexport type ResolvedModelSlots = Readonly<Record<string, ResolvedModelSlot>>;\nconst modelText = Schema.String.check(Schema.isPattern(/\\S/u));\nconst slotKey = Schema.String.check(Schema.isPattern(/^[A-Za-z][A-Za-z0-9_-]{0,63}$(?![\\s\\S])/u));\nconst selections = Schema.Record(slotKey, Schema.Struct({\n model: modelText,\n reasoningEffort: Schema.optionalKey(modelText),\n})).check(Schema.makeFilter((value) => Object.keys(value).length > 0 && Object.keys(value).length <= 64));\nexport const ResolvedModelSlotsSchema: Schema.Codec<ResolvedModelSlots> = Schema.Record(slotKey, Schema.Struct({\n model: Schema.NullOr(modelText),\n reasoningEffort: Schema.NullOr(modelText),\n})).check(Schema.makeFilter((value) => Object.keys(value).length <= 64));\n/** Only the definition boundary interprets author syntax. Downstream owners pass this value through. */\nexport function normalizeModelSlots(input: {\n readonly model?: string;\n readonly reasoningEffort?: string;\n readonly models?: Readonly<Record<string, ModelSlotSelection>>;\n}): ResolvedModelSlots {\n if (input.models !== undefined) {\n if (input.model !== undefined || input.reasoningEffort !== undefined) {\n throw new TypeError(\"Experiment models cannot be combined with model or reasoningEffort.\");\n }\n const decoded = Schema.decodeUnknownSync(selections, { onExcessProperty: \"error\" })(input.models);\n return Object.freeze(Object.fromEntries(Object.keys(decoded).sort().map((key) => {\n const value = decoded[key]!;\n return [key, Object.freeze({ model: value.model, reasoningEffort: value.reasoningEffort ?? null })];\n })));\n }\n if (input.model === undefined && input.reasoningEffort === undefined)\n return Object.freeze({});\n return Object.freeze({ default: Object.freeze({\n model: input.model === undefined ? null : Schema.decodeUnknownSync(modelText)(input.model),\n reasoningEffort: input.reasoningEffort === undefined ? null : Schema.decodeUnknownSync(modelText)(input.reasoningEffort),\n }) });\n}\n"]}
1
+ {"version":3,"file":"model-slots.js","sourceRoot":"","sources":["model-slots.ts"],"names":[],"mappings":"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","sourcesContent":["import { Schema } from \"effect\";\n/** A model selected for one application-defined purpose. */\nexport interface ModelSlotSelection {\n readonly model: string;\n readonly reasoningEffort?: string;\n}\n/** Frozen selection; null preserves an unspecified native default. */\nexport interface ResolvedModelSlot {\n readonly model: string | null;\n readonly reasoningEffort: string | null;\n}\nexport type ResolvedModelSlots = Readonly<Record<string, ResolvedModelSlot>>;\nconst modelText = Schema.String.check(Schema.isPattern(/\\S/u));\nconst slotKey = Schema.String.check(Schema.isPattern(/^[A-Za-z][A-Za-z0-9_-]{0,63}$(?![\\s\\S])/u));\nconst selections = Schema.Record(slotKey, Schema.Struct({\n model: modelText,\n reasoningEffort: Schema.optionalKey(modelText),\n})).check(Schema.makeFilter((value) => Object.keys(value).length > 0 && Object.keys(value).length <= 64));\nexport interface ModelRequirements<Keys extends string = string> {\n readonly models: Readonly<Record<Keys, ModelSlotSelection>>;\n}\n/** Share immutable model purposes without binding an Eval to one Experiment. */\nexport function defineModelSlots<const Keys extends string>(input: Readonly<Record<Keys, ModelSlotSelection>>): Readonly<Record<Keys, ModelSlotSelection>> {\n const decoded = Schema.decodeUnknownSync(selections, { onExcessProperty: \"error\" })(input);\n return Object.freeze(Object.fromEntries(Object.keys(decoded).sort().map((key) => [key, Object.freeze({ ...decoded[key]! })]))) as Readonly<Record<Keys, ModelSlotSelection>>;\n}\nexport function normalizeModelRequirements(value: unknown): readonly string[] | undefined {\n if (value === undefined)\n return undefined;\n const decoded = Schema.decodeUnknownSync(Schema.Struct({ models: selections }), { onExcessProperty: \"error\" })(value);\n return Object.freeze(Object.keys(decoded.models).sort());\n}\nexport function assertRequiredModelSlots(required: readonly string[] | undefined, models: ResolvedModelSlots | undefined, subject: string): void {\n const missing = required?.filter((key) => !Object.hasOwn(models ?? {}, key)) ?? [];\n if (missing.length > 0)\n throw new TypeError(`${subject} requires undeclared model slots: ${missing.join(\", \")}.`);\n}\nexport const ResolvedModelSlotsSchema: Schema.Codec<ResolvedModelSlots> = Schema.Record(slotKey, Schema.Struct({\n model: Schema.NullOr(modelText),\n reasoningEffort: Schema.NullOr(modelText),\n})).check(Schema.makeFilter((value) => Object.keys(value).length <= 64));\n/** Only the definition boundary interprets author syntax. Downstream owners pass this value through. */\nexport function normalizeModelSlots(input: {\n readonly model?: string;\n readonly reasoningEffort?: string;\n readonly models?: Readonly<Record<string, ModelSlotSelection>>;\n}): ResolvedModelSlots {\n if (input.models !== undefined) {\n if (input.model !== undefined || input.reasoningEffort !== undefined) {\n throw new TypeError(\"Experiment models cannot be combined with model or reasoningEffort.\");\n }\n const decoded = Schema.decodeUnknownSync(selections, { onExcessProperty: \"error\" })(input.models);\n return Object.freeze(Object.fromEntries(Object.keys(decoded).sort().map((key) => {\n const value = decoded[key]!;\n return [key, Object.freeze({ model: value.model, reasoningEffort: value.reasoningEffort ?? null })];\n })));\n }\n if (input.model === undefined && input.reasoningEffort === undefined)\n return Object.freeze({});\n return Object.freeze({ default: Object.freeze({\n model: input.model === undefined ? null : Schema.decodeUnknownSync(modelText)(input.model),\n reasoningEffort: input.reasoningEffort === undefined ? null : Schema.decodeUnknownSync(modelText)(input.reasoningEffort),\n }) });\n}\n"]}
@@ -10,6 +10,13 @@ export interface ResolvedModelSlot {
10
10
  readonly reasoningEffort: string | null;
11
11
  }
12
12
  export type ResolvedModelSlots = Readonly<Record<string, ResolvedModelSlot>>;
13
+ export interface ModelRequirements<Keys extends string = string> {
14
+ readonly models: Readonly<Record<Keys, ModelSlotSelection>>;
15
+ }
16
+ /** Share immutable model purposes without binding an Eval to one Experiment. */
17
+ export declare function defineModelSlots<const Keys extends string>(input: Readonly<Record<Keys, ModelSlotSelection>>): Readonly<Record<Keys, ModelSlotSelection>>;
18
+ export declare function normalizeModelRequirements(value: unknown): readonly string[] | undefined;
19
+ export declare function assertRequiredModelSlots(required: readonly string[] | undefined, models: ResolvedModelSlots | undefined, subject: string): void;
13
20
  export declare const ResolvedModelSlotsSchema: Schema.Codec<ResolvedModelSlots>;
14
21
  /** Only the definition boundary interprets author syntax. Downstream owners pass this value through. */
15
22
  export declare function normalizeModelSlots(input: {
@@ -10,6 +10,13 @@ export interface ResolvedModelSlot {
10
10
  readonly reasoningEffort: string | null;
11
11
  }
12
12
  export type ResolvedModelSlots = Readonly<Record<string, ResolvedModelSlot>>;
13
+ export interface ModelRequirements<Keys extends string = string> {
14
+ readonly models: Readonly<Record<Keys, ModelSlotSelection>>;
15
+ }
16
+ /** Share immutable model purposes without binding an Eval to one Experiment. */
17
+ export declare function defineModelSlots<const Keys extends string>(input: Readonly<Record<Keys, ModelSlotSelection>>): Readonly<Record<Keys, ModelSlotSelection>>;
18
+ export declare function normalizeModelRequirements(value: unknown): readonly string[] | undefined;
19
+ export declare function assertRequiredModelSlots(required: readonly string[] | undefined, models: ResolvedModelSlots | undefined, subject: string): void;
13
20
  export declare const ResolvedModelSlotsSchema: Schema.Codec<ResolvedModelSlots>;
14
21
  /** Only the definition boundary interprets author syntax. Downstream owners pass this value through. */
15
22
  export declare function normalizeModelSlots(input: {
@@ -10,6 +10,13 @@ export interface ResolvedModelSlot {
10
10
  readonly reasoningEffort: string | null;
11
11
  }
12
12
  export type ResolvedModelSlots = Readonly<Record<string, ResolvedModelSlot>>;
13
+ export interface ModelRequirements<Keys extends string = string> {
14
+ readonly models: Readonly<Record<Keys, ModelSlotSelection>>;
15
+ }
16
+ /** Share immutable model purposes without binding an Eval to one Experiment. */
17
+ export declare function defineModelSlots<const Keys extends string>(input: Readonly<Record<Keys, ModelSlotSelection>>): Readonly<Record<Keys, ModelSlotSelection>>;
18
+ export declare function normalizeModelRequirements(value: unknown): readonly string[] | undefined;
19
+ export declare function assertRequiredModelSlots(required: readonly string[] | undefined, models: ResolvedModelSlots | undefined, subject: string): void;
13
20
  export declare const ResolvedModelSlotsSchema: Schema.Codec<ResolvedModelSlots>;
14
21
  /** Only the definition boundary interprets author syntax. Downstream owners pass this value through. */
15
22
  export declare function normalizeModelSlots(input: {