niceeval 0.13.4-canary.48 → 0.14.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 (108) hide show
  1. package/INDEX.md +3 -3
  2. package/dist/experiment/host/operations.cjs +58 -0
  3. package/dist/experiment/host/operations.cjs.map +1 -1
  4. package/dist/inspection/overview.cjs +20 -9
  5. package/dist/inspection/overview.cjs.map +1 -1
  6. package/dist/inspection/overview.d.cts +5 -0
  7. package/dist/inspection/overview.d.mts +5 -0
  8. package/dist/inspection/overview.d.ts +5 -0
  9. package/dist/inspection/protocol.d.cts +238 -0
  10. package/dist/inspection/protocol.d.mts +238 -0
  11. package/dist/inspection/protocol.d.ts +238 -0
  12. package/dist/inspection/public.mjs +43 -19
  13. package/dist/inspection/results.cjs +11 -10
  14. package/dist/inspection/results.cjs.map +1 -1
  15. package/dist/inspection/results.d.cts +34 -0
  16. package/dist/inspection/results.d.mts +34 -0
  17. package/dist/inspection/results.d.ts +34 -0
  18. package/dist/record/attachment/protocol.cjs +10 -5
  19. package/dist/record/attachment/protocol.cjs.map +1 -1
  20. package/dist/record/attachment/protocol.d.cts +4 -0
  21. package/dist/record/attachment/protocol.d.mts +4 -0
  22. package/dist/record/attachment/protocol.d.ts +4 -0
  23. package/dist/record/family/source-receipt/index.cjs +16 -3
  24. package/dist/record/family/source-receipt/index.cjs.map +1 -1
  25. package/dist/record/family/source-receipt/index.d.cts +1 -0
  26. package/dist/record/family/source-receipt/index.d.mts +1 -0
  27. package/dist/record/family/source-receipt/index.d.ts +1 -0
  28. package/dist/record/family/source-receipt/index.js +2 -0
  29. package/dist/record/host/sqlite-host.cjs +3 -0
  30. package/dist/record/host/sqlite-host.cjs.map +1 -1
  31. package/dist/record/host/types.cjs.map +1 -1
  32. package/dist/record/host/types.d.cts +3 -1
  33. package/dist/record/host/types.d.mts +3 -1
  34. package/dist/record/host/types.d.ts +3 -1
  35. package/dist/record/sqlite/storage.cjs +11 -8
  36. package/dist/record/sqlite/storage.cjs.map +1 -1
  37. package/dist/record/writer/current-attachment.cjs +18 -13
  38. package/dist/record/writer/current-attachment.cjs.map +1 -1
  39. package/dist/record/writer/errors.cjs +6 -1
  40. package/dist/record/writer/errors.cjs.map +1 -1
  41. package/dist/record/writer/errors.d.cts +7 -1
  42. package/dist/record/writer/errors.d.mts +7 -1
  43. package/dist/record/writer/errors.d.ts +7 -1
  44. package/dist/runner/adoption.cjs +1 -1
  45. package/dist/runner/adoption.cjs.map +1 -1
  46. package/dist/runner/reuse-plan.cjs +1 -1
  47. package/dist/runner/reuse-plan.cjs.map +1 -1
  48. package/dist/runner/source-receipts/support.cjs +2 -1
  49. package/dist/runner/source-receipts/support.cjs.map +1 -1
  50. package/dist/runner/source-receipts/support.d.cts +1 -1
  51. package/dist/runner/source-receipts/support.d.mts +1 -1
  52. package/dist/runner/source-receipts/support.d.ts +1 -1
  53. package/dist/show/contribution.cjs +11 -2
  54. package/dist/show/contribution.cjs.map +1 -1
  55. package/dist/show/contribution.d.cts +7 -0
  56. package/dist/show/contribution.d.mts +7 -0
  57. package/dist/show/contribution.d.ts +7 -0
  58. package/dist/show/model.cjs +1 -0
  59. package/dist/show/model.cjs.map +1 -1
  60. package/dist/show/model.d.cts +2 -0
  61. package/dist/show/model.d.mts +2 -0
  62. package/dist/show/model.d.ts +2 -0
  63. package/dist/show/render.cjs +149 -81
  64. package/dist/show/render.cjs.map +1 -1
  65. package/dist/show/render.d.cts +3 -1
  66. package/dist/show/render.d.mts +3 -1
  67. package/dist/show/render.d.ts +3 -1
  68. package/dist/view/app-dist/.vite/manifest.json +18 -18
  69. package/dist/view/app-dist/assets/{AttemptDialog-DKEWcS7m.js → AttemptDialog-76dX1VQq.js} +1 -1
  70. package/dist/view/app-dist/assets/{AttemptRoute-DUs5kic4.js → AttemptRoute-DRHVh2JA.js} +1 -1
  71. package/dist/view/app-dist/assets/{ResultsPage-VlExJ6F0.js → ResultsPage-9CSI8dvZ.js} +2 -2
  72. package/dist/view/app-dist/assets/{RunPage-B9Bagswz.js → RunPage-BUF0REv7.js} +1 -1
  73. package/dist/view/app-dist/assets/{TableContentView-ZL9elUsA.js → TableContentView-_Sbg5wDr.js} +1 -1
  74. package/dist/view/app-dist/assets/index-BGr_6pGY.js +19 -0
  75. package/dist/view/app-dist/assets/{quality-cost-scatter-BqIAORD4.js → quality-cost-scatter-B5wDa_F1.js} +1 -1
  76. package/dist/view/app-dist/assets/useSuspenseQuery-D3W8Uy33.js +1 -0
  77. package/dist/view/app-dist/index.html +1 -1
  78. package/dist/view/function-runtime.mjs +68 -29
  79. package/docs-site/zh/examples/ai-agent-application.mdx +1 -1
  80. package/docs-site/zh/examples/index.mdx +1 -3
  81. package/docs-site/zh/explanation/evals.mdx +1 -1
  82. package/docs-site/zh/explanation/experiment.mdx +3 -1
  83. package/docs-site/zh/explanation/overview.mdx +6 -4
  84. package/docs-site/zh/explanation/record.mdx +9 -5
  85. package/docs-site/zh/explanation/runner.mdx +3 -3
  86. package/docs-site/zh/index.mdx +4 -8
  87. package/docs-site/zh/introduction.mdx +2 -2
  88. package/docs-site/zh/reference/cli.mdx +8 -7
  89. package/docs-site/zh/troubleshooting/debug-sandbox.mdx +5 -5
  90. package/docs-site/zh/troubleshooting/debugging.mdx +8 -8
  91. package/docs-site/zh/troubleshooting/recover-after-kill.mdx +35 -55
  92. package/docs-site/zh/tutorials/accept-results.mdx +4 -4
  93. package/docs-site/zh/tutorials/agent-onboarding.mdx +2 -2
  94. package/docs-site/zh/tutorials/authoring.mdx +1 -1
  95. package/docs-site/zh/tutorials/compare-runs.mdx +3 -3
  96. package/docs-site/zh/tutorials/concurrency.mdx +6 -6
  97. package/docs-site/zh/tutorials/connect-your-agent.mdx +2 -2
  98. package/docs-site/zh/tutorials/docker-in-docker.mdx +1 -1
  99. package/docs-site/zh/tutorials/experiments.mdx +1 -1
  100. package/docs-site/zh/tutorials/install-custom-sandbox-agent.mdx +1 -1
  101. package/docs-site/zh/tutorials/quickstart.mdx +2 -2
  102. package/docs-site/zh/tutorials/reporters.mdx +3 -3
  103. package/docs-site/zh/tutorials/sandbox-agent.mdx +2 -2
  104. package/docs-site/zh/tutorials/sandbox-reuse.mdx +3 -3
  105. package/docs-site/zh/tutorials/viewing-results.mdx +10 -11
  106. package/package.json +1 -1
  107. package/dist/view/app-dist/assets/index-C1E4NkG0.js +0 -19
  108. package/dist/view/app-dist/assets/useSuspenseQuery-BlFuYKyI.js +0 -1
package/INDEX.md CHANGED
@@ -37,7 +37,7 @@
37
37
  - `docs-site/zh/tutorials/agent-onboarding.mdx` — Coding Agent 从零接入项目:给 Coding Agent 的完整接入流程:探索项目、与用户确认路径、配置 Judge、写出 Adapter、Experiment 与评估用例,并跑通第一个实验。
38
38
  - `docs-site/zh/tutorials/authoring.mdx` — 编写评估用例: 单轮、多轮和测试集模式:用 defineEval 编写评估用例,包括单轮对话、多轮对话、数据驱动测试、Sandbox Workspace 和评估的生命周期与 Fixture。
39
39
  - `docs-site/zh/tutorials/ci-integration.mdx` — 在 CI 中运行 NiceEval:让 CI 使用退出状态判定门禁,保留最后的 receipt,并向平台提供 JUnit 文件。
40
- - `docs-site/zh/tutorials/compare-runs.mdx` — 比较多个固定 Run:用 `runs.compare` operation 比较明确 Run 的闭合事实,并在浏览器中审阅相同的结果。
40
+ - `docs-site/zh/tutorials/compare-runs.mdx` — 比较多个固定 Run:用 `runs.compare` operation 比较明确 Run 的已发布事实,并在浏览器中审阅相同的结果。
41
41
  - `docs-site/zh/tutorials/concurrency.mdx` — 调好并发:吞吐、共享状态与固定执行顺序:全局并发、实验上限与 Provider capacity 共同限制实际吞吐。这一页说明排队状态、共享状态与固定顺序。
42
42
  - `docs-site/zh/tutorials/configuration.mdx` — 把配置和密钥各放到该放的地方:跑几次、超时、并发、judge 这些值写进代码的哪一层,API key 和 provider token 用哪些环境变量。
43
43
  - `docs-site/zh/tutorials/connect-otel.mdx` — OTel 接入:把应用已有的 OTel span 发送给 NiceEval,在 niceeval view 中查看每轮调用瀑布图。评估用例断言仍以 Send 返回的事件和用量为准。
@@ -63,7 +63,7 @@
63
63
  - `docs-site/zh/tutorials/sandbox-reuse.mdx` — 在一批评估中复用 Sandbox:在 Experiment 里声明 sandboxReuse 让多条 Attempt 共用 Sandbox,让 before/after 可安全重放,并配好 lifetimeMs。无法安全保留状态时改用并发。
64
64
  - `docs-site/zh/tutorials/select-and-preview.mdx` — 选择并预览运行范围:先列出 Experiment,再用路径、评估用例前缀和 tag 收窄范围,最后用 --dry 确认计划后再花费模型与 Sandbox 成本。
65
65
  - `docs-site/zh/tutorials/verify-judge.mdx` — 配置并验证 Judge:连接 OpenAI 兼容 Judge 网关,用一条最小评估真实预检和判分,再从结果区分配置缺失、网络失败与低质量输出。
66
- - `docs-site/zh/tutorials/viewing-results.mdx` — 查看已封口的运行结果:在终端用 show 逐层查看结果;在浏览器用 View 审阅,在自动化中用 query 读取 JSON。
66
+ - `docs-site/zh/tutorials/viewing-results.mdx` — 查看运行结果:在终端用 show 逐层查看结果;在浏览器用 View 审阅,在自动化中用 query 读取 JSON。
67
67
  - `docs-site/zh/tutorials/write-experiment.mdx` — 实验与生命周期:如何写好实验。选择 Agent、传递 model 和 flags,设置 attempts、预算、并发与 Sandbox,并用 setup / teardown 起停实验级共享服务。
68
68
  - `docs-site/zh/tutorials/write-send.mdx` — 编写 Send:分七步编写 Adapter 的 send 函数:发送消息、续接会话、记录用量、映射工具事件、处理人工介入(HITL)、接入 OTel trace,并透传 Experiment flags。
69
69
 
@@ -97,7 +97,7 @@
97
97
 
98
98
  - `docs-site/zh/troubleshooting/debug-sandbox.mdx` — 保留 Sandbox 现场排查问题:用 --keep-sandbox 把失败 Attempt 的 Sandbox 保留成可随时唤醒的现场,用 niceeval sandbox enter 进去手动排查,用 sandbox list / stop 查看和清理。
99
99
  - `docs-site/zh/troubleshooting/debugging.mdx` — 排查已封口的结果:根据具名错误和闭合 Inspection result,通过 Show、Query 与 View 排查问题。
100
- - `docs-site/zh/troubleshooting/recover-after-kill.mdx` — 运行被强杀后恢复:进程被 kill -9、CI 超时或断电杀掉后,从已发布结果重跑、收回遗留 Sandbox、补齐实验收尾,并显式恢复共享状态租约。
100
+ - `docs-site/zh/troubleshooting/recover-after-kill.mdx` — 运行被强杀后恢复:进程被 kill -9、CI 超时或断电中断后,保留已发布结果、收口失去 owner 的 Run,并收回遗留 Sandbox
101
101
 
102
102
  ## `docs-site/zh/examples/`
103
103
 
@@ -45,10 +45,14 @@ function operationError(operation, cause) {
45
45
  operation,
46
46
  code,
47
47
  message: closedFailureMessage(cause),
48
+ cause,
48
49
  });
49
50
  }
50
51
  /** Preserve one actionable message while closing private Runner error shapes. */
51
52
  function closedFailureMessage(cause) {
53
+ const diagnostic = closedRecordDiagnostic(cause);
54
+ if (diagnostic !== undefined)
55
+ return JSON.stringify(diagnostic);
52
56
  if (cause instanceof Error && cause.message.length > 0)
53
57
  return cause.message;
54
58
  if (typeof cause === "object" && cause !== null) {
@@ -64,6 +68,60 @@ function closedFailureMessage(cause) {
64
68
  }
65
69
  return (0, util_ts_1.firstLine)((0, util_ts_1.formatThrown)(cause));
66
70
  }
71
+ function closedRecordDiagnostic(cause) {
72
+ if (typeof cause !== "object" || cause === null)
73
+ return undefined;
74
+ const code = Reflect.get(cause, "code");
75
+ if (code === "runner-record-attempt-publication-failed") {
76
+ const locator = Reflect.get(cause, "locator");
77
+ const rawCause = Reflect.get(cause, "cause");
78
+ const nested = closedRecordDiagnostic(rawCause) ?? closedDiagnosticMessage(rawCause);
79
+ return Object.freeze({
80
+ code,
81
+ ...(typeof locator === "string" ? { locator } : {}),
82
+ ...(nested === undefined ? {} : { cause: nested }),
83
+ });
84
+ }
85
+ if (code !== "record-attachment-encode-error")
86
+ return undefined;
87
+ const family = Reflect.get(cause, "family");
88
+ const issues = Reflect.get(cause, "issues");
89
+ const schemaIssues = Reflect.get(cause, "schemaIssues");
90
+ return Object.freeze({
91
+ code,
92
+ ...(typeof family === "string" ? { family } : {}),
93
+ issues: closedDiagnosticIssues(issues, false),
94
+ schemaIssues: closedDiagnosticIssues(schemaIssues, true),
95
+ });
96
+ }
97
+ function closedDiagnosticMessage(cause) {
98
+ const message = cause instanceof Error
99
+ ? cause.message
100
+ : typeof cause === "object" && cause !== null && typeof Reflect.get(cause, "message") === "string"
101
+ ? String(Reflect.get(cause, "message"))
102
+ : undefined;
103
+ return message === undefined || message.length === 0
104
+ ? undefined
105
+ : Object.freeze({ message });
106
+ }
107
+ function closedDiagnosticIssues(value, includeMessage) {
108
+ if (!Array.isArray(value))
109
+ return Object.freeze([]);
110
+ return Object.freeze(value.flatMap((entry) => {
111
+ if (typeof entry !== "object" || entry === null)
112
+ return [];
113
+ const path = Reflect.get(entry, "path");
114
+ const code = Reflect.get(entry, "code");
115
+ const message = Reflect.get(entry, "message");
116
+ return [Object.freeze({
117
+ ...(typeof code === "string" ? { code } : {}),
118
+ path: Array.isArray(path)
119
+ ? Object.freeze(path.filter((segment) => typeof segment === "string" || typeof segment === "number"))
120
+ : Object.freeze([]),
121
+ ...(includeMessage && typeof message === "string" ? { message } : {}),
122
+ })];
123
+ }));
124
+ }
67
125
  function closeOperation(operation, effect) {
68
126
  return effect.pipe(effect_1.Effect.mapError((cause) => operationError(operation, cause)));
69
127
  }
@@ -1 +1 @@
1
- {"version":3,"file":"operations.js","sourceRoot":"","sources":["operations.ts"],"names":[],"mappings":"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","sourcesContent":["import { resolve } from \"node:path\";\nimport { Clock, Data, Effect, Result } from \"effect\";\nimport { recordHost } from \"../../record/host/index.ts\";\nimport { makeRecordRoot, recordRootPaths, type RecordRoot } from \"../../record/platform/root.ts\";\nimport { ProjectStateDatabase } from \"../../record/sqlite/project-state-database.ts\";\nimport { acceptLocators, acceptRun, planAcceptRun } from \"../../runner/accept.ts\";\nimport { activateFeedbackSink, type FeedbackSink } from \"../../runner/feedback/sink.ts\";\nimport { computeExitCode } from \"../../runner/feedback/json.ts\";\nimport { discoverEvals, discoverExperiments } from \"../../runner/discover.ts\";\nimport { resolveExperimentEvals, splitByEvaluationKind } from \"../../runner/eval-selection.ts\";\nimport { planProjectTarget } from \"../../runner/fingerprint.ts\";\nimport { prepareRunnerRecordReuse, withRunnerCurrentReusePreview, } from \"../../runner/record.ts\";\nimport { projectCurrentReuseReadback } from \"../../runner/reuse-readback.ts\";\nimport type { ExecutionReusePlanSlot } from \"../../runner/reuse-plan.ts\";\nimport { runEvals } from \"../../runner/run.ts\";\nimport { readCaseLockEffect } from \"../../runner/lock.ts\";\nimport { JUnit } from \"../../runner/reporters/json.ts\";\nimport { listSessions, showSession, SessionTracker, } from \"../../runner/session.ts\";\nimport { linkRunSandboxes, recommendedConcurrencyForPreparedPairs, } from \"../../runner/sandbox-selection.ts\";\nimport { resolveRunTimeout } from \"../../runner/timeout.ts\";\nimport { ExperimentRenameError, planExperimentRename, renameExperiment, type ExperimentRenamePlan as RunnerExperimentRenamePlan, } from \"../../runner/rename-experiment.ts\";\nimport { resolveSandboxSetupCache, type AgentRun, type DiscoveredEval, type DiscoveredExperiment, type InvocationSummary, type SandboxSetupCache, } from \"../../runner/types.ts\";\nimport { evalPrefixPredicate, matchExperimentSelector } from \"../../shared/aggregate.ts\";\nimport { ExperimentHostError } from \"./types.ts\";\nimport { assembleInvocationCompletion, foldInvocationEvalStats } from \"./presentation.ts\";\nimport { firstLine, formatThrown } from \"../../util.ts\";\nimport type { ExperimentHostAcceptRequest, ExperimentHostAcceptRunPlan, ExperimentHostAcceptRunRequest, ExperimentHostAcceptedAttempt, ExperimentHostCatalog, ExperimentHostCheckRequest, ExperimentHostCheckResult, ExperimentHostDryComparison, ExperimentHostDryPlan, ExperimentHostDrySlot, ExperimentHostOperation, ExperimentHostExperimentSummary, ExperimentHostInvocationPlan, ExperimentHostInvocationPlanRequest, ExperimentHostInvocationPlanResult, ExperimentHostInvocationResult, ExperimentHostInvocationRunRequest, ExperimentHostInvocationShape, ExperimentHostInvocationSummary, ExperimentHostJsonValue, ExperimentHostInvocationStatusList, ExperimentHostInvocationStatusListRequest, ExperimentHostInvocationStatusShow, ExperimentHostInvocationStatusShowRequest, ExperimentHostRenamePlan, ExperimentHostRenameRequest, ExperimentHostRenameResult, ExperimentHostRequirements, ExperimentHostRunOverrides, ExperimentHostSelectionInput, ExperimentHostSelectionProblem, } 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: closedFailureMessage(cause),\n });\n}\n/** Preserve one actionable message while closing private Runner error shapes. */\nfunction closedFailureMessage(cause: unknown): string {\n if (cause instanceof Error && cause.message.length > 0)\n return cause.message;\n if (typeof cause === \"object\" && cause !== null) {\n const direct = Reflect.get(cause, \"message\");\n if (typeof direct === \"string\" && direct.length > 0)\n return direct;\n const issue = Reflect.get(cause, \"issue\");\n if (typeof issue === \"object\" && issue !== null) {\n const nested = Reflect.get(issue, \"message\");\n if (typeof nested === \"string\" && nested.length > 0)\n return nested;\n }\n }\n return firstLine(formatThrown(cause));\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}\ninterface ClosedSelection {\n readonly evals: readonly DiscoveredEval[];\n readonly experimentIds: readonly string[];\n readonly selections: readonly {\n readonly experiment: DiscoveredExperiment;\n readonly selectedEvalIds: readonly string[];\n readonly selectorEvalIds: readonly string[];\n }[];\n}\ninterface PreparedInvocationState {\n readonly evals: readonly DiscoveredEval[];\n readonly runs: readonly AgentRun[];\n readonly config: ExperimentHostInvocationPlanRequest[\"config\"];\n readonly recordRoot: RecordRoot;\n readonly coordinationRoot: string;\n readonly overrides: ExperimentHostRunOverrides;\n readonly shape: ExperimentHostInvocationShape;\n consumed: boolean;\n}\nclass ExperimentEvaluationKindAdmissionError extends Data.TaggedError(\"ExperimentEvaluationKindAdmissionError\")<{\n readonly code: \"experiment-evaluation-kind-mixed\";\n readonly message: string;\n readonly issues: readonly {\n readonly experimentId: string;\n readonly passEvalIds: readonly string[];\n readonly scoreEvalIds: readonly string[];\n }[];\n}> {\n}\ntype PreparedRuns = {\n readonly status: \"problem\";\n readonly selected: ClosedSelection;\n readonly problem: ExperimentHostSelectionProblem;\n} | {\n readonly status: \"ready\";\n readonly selected: ClosedSelection;\n readonly runs: readonly AgentRun[];\n};\nconst invocationPlans = new WeakMap<object, PreparedInvocationState>();\nfunction freezeArray<A>(values: Iterable<A>): readonly A[] {\n return Object.freeze([...values]);\n}\nfunction selectionProblem(input: ExperimentHostSelectionInput, selected: ClosedSelection): ExperimentHostSelectionProblem | undefined {\n if (input.experimentSelector !== undefined && selected.selections.length === 0) {\n return Object.freeze({\n status: \"experiment-no-match\" as const,\n selector: input.experimentSelector,\n candidates: freezeArray([...selected.experimentIds].sort()),\n });\n }\n const selectorEvalIds = freezeArray(new Set(selected.selections.flatMap((entry) => entry.selectorEvalIds)));\n for (const selector of input.evalSelectors ?? []) {\n if (selectorEvalIds.some((id) => evalPrefixPredicate([selector])(id)))\n continue;\n return Object.freeze({\n status: \"eval-no-match\" as const,\n selector,\n experimentIds: freezeArray(selected.selections.map(({ experiment }) => experiment.id)),\n candidates: freezeArray([...selectorEvalIds].sort()),\n });\n }\n if (selected.selections.every((entry) => entry.selectedEvalIds.length === 0)) {\n return Object.freeze({\n status: \"empty-selection\" as const,\n experimentIds: freezeArray(selected.selections.map(({ experiment }) => experiment.id)),\n candidates: freezeArray([...selected.experimentIds].sort()),\n });\n }\n return undefined;\n}\nfunction closeSelection(input: ExperimentHostSelectionInput): Effect.Effect<ClosedSelection, unknown> {\n return Effect.gen(function* () {\n const discovered = yield* discoverEvals(input.cwd);\n const evals = input.tag === undefined\n ? discovered\n : discovered.filter((definition) => definition.tags?.includes(input.tag!));\n const experiments = yield* discoverExperiments(input.cwd);\n const experimentIds = freezeArray(experiments.map((experiment) => experiment.id));\n const selectedIds = input.experimentSelector === undefined\n ? undefined\n : new Set(matchExperimentSelector(experimentIds, input.experimentSelector));\n const selections = experiments\n .filter((experiment) => selectedIds === undefined || selectedIds.has(experiment.id))\n .map((experiment) => {\n const selection = resolveExperimentEvals({\n experimentId: experiment.id,\n selector: experiment.evals,\n cliPatterns: input.evalSelectors ?? [],\n evals,\n });\n return Object.freeze({\n experiment,\n selectedEvalIds: freezeArray(selection.selectedEvalIds),\n selectorEvalIds: freezeArray(selection.selectorEvals.map((definition) => definition.id)),\n });\n });\n return Object.freeze({\n evals: freezeArray(evals),\n experimentIds,\n selections: freezeArray(selections),\n });\n });\n}\nfunction summaryOfExperiment(experiment: DiscoveredExperiment, evalIds: readonly string[]): ExperimentHostExperimentSummary {\n return Object.freeze({\n id: experiment.id,\n ...(experiment.description === undefined ? {} : { description: experiment.description }),\n agent: experiment.agent.name,\n ...(experiment.model === undefined ? {} : { model: experiment.model }),\n attempts: experiment.attempts ?? 1,\n evalIds: freezeArray(evalIds),\n labels: Object.freeze({ ...(experiment.labels ?? {}) }),\n hasSetup: typeof experiment.setup === \"function\",\n hasTeardown: typeof experiment.teardown === \"function\",\n ...(experiment.sharedState === undefined ? {} : { sharedStateKey: experiment.sharedState.key }),\n });\n}\nexport function catalog(input: ExperimentHostSelectionInput): Effect.Effect<ExperimentHostCatalog, ExperimentHostError> {\n return closeOperation(\"catalog\", closeSelection(input).pipe(Effect.map((selected) => Object.freeze({\n status: \"listed\" as const,\n evals: freezeArray(selected.evals.map((definition) => Object.freeze({\n id: definition.id,\n ...(definition.description === undefined ? {} : { description: definition.description }),\n tags: freezeArray(definition.tags ?? []),\n evaluationKind: definition.evaluationKind,\n }))),\n experimentIds: selected.experimentIds,\n experiments: freezeArray(selected.selections.map(({ experiment, selectedEvalIds }) => summaryOfExperiment(experiment, selectedEvalIds))),\n }))));\n}\nfunction agentRunFromExperiment(experiment: DiscoveredExperiment, selectedEvalIds: readonly string[], config: ExperimentHostInvocationPlanRequest[\"config\"], overrides: ExperimentHostRunOverrides, sandboxSetupCacheOverride: SandboxSetupCache | undefined): AgentRun {\n return Object.freeze({\n agent: experiment.agent,\n model: experiment.model,\n reasoningEffort: experiment.reasoningEffort,\n flags: experiment.flags ?? {},\n plugins: experiment.plugins,\n attempts: overrides.attempts ?? experiment.attempts ?? 1,\n earlyExit: overrides.earlyExit ?? experiment.earlyExit ?? false,\n sandboxSetupCache: resolveSandboxSetupCache(sandboxSetupCacheOverride, experiment.sandboxCache, config.sandboxCache),\n sandbox: experiment.sandbox,\n sandboxReuse: experiment.sandboxReuse,\n ...(experiment.sharedState === undefined ? {} : { sharedState: experiment.sharedState }),\n judge: experiment.judge,\n ...resolveRunTimeout(overrides.timeoutMs, experiment.timeoutMs),\n budget: overrides.budget ?? experiment.budget,\n selectedEvalIds: freezeArray(selectedEvalIds),\n experimentId: experiment.id,\n experimentBaseDir: experiment.baseDir,\n experimentSourcePath: experiment.sourcePath,\n description: experiment.description,\n labels: experiment.labels,\n maxConcurrency: experiment.maxConcurrency,\n setup: experiment.setup,\n teardown: experiment.teardown,\n classifyFailure: experiment.classifyFailure,\n });\n}\nfunction sandboxSetupCacheOverrideOf(overrides: ExperimentHostRunOverrides): SandboxSetupCache | undefined {\n const value: unknown = Reflect.get(overrides, \"sandboxSetupCache\");\n if (value === undefined || value === \"use\" || value === \"bypass\")\n return value;\n throw new TypeError(\"sandboxSetupCache override must be \\\"use\\\" or \\\"bypass\\\".\");\n}\nfunction prepareRuns(input: ExperimentHostSelectionInput & {\n readonly config: ExperimentHostInvocationPlanRequest[\"config\"];\n readonly overrides?: ExperimentHostRunOverrides;\n}): Effect.Effect<PreparedRuns, unknown> {\n return closeSelection(input).pipe(Effect.flatMap((selected): Effect.Effect<PreparedRuns, ExperimentEvaluationKindAdmissionError> => {\n const problem = selectionProblem(input, selected);\n if (problem !== undefined)\n return Effect.succeed({ status: \"problem\", selected, problem } as const);\n const evalsById = new Map(selected.evals.map((definition) => [definition.id, definition]));\n const issues = selected.selections.flatMap(({ experiment, selectedEvalIds }) => {\n const evaluationKinds = splitByEvaluationKind(selectedEvalIds.flatMap((id) => {\n const definition = evalsById.get(id);\n return definition === undefined ? [] : [definition];\n }));\n return evaluationKinds.pass.length === 0 || evaluationKinds.score.length === 0\n ? []\n : [{\n experimentId: experiment.id,\n passEvalIds: Object.freeze([...evaluationKinds.pass]),\n scoreEvalIds: Object.freeze([...evaluationKinds.score]),\n }];\n });\n if (issues.length > 0) {\n return Effect.fail(new ExperimentEvaluationKindAdmissionError({\n code: \"experiment-evaluation-kind-mixed\",\n message: issues.map((issue) => `Experiment ${JSON.stringify(issue.experimentId)} selects both pass and score Evals. ` +\n `pass (${issue.passEvalIds.length}): ${issue.passEvalIds.join(\", \")}; ` +\n `score (${issue.scoreEvalIds.length}): ${issue.scoreEvalIds.join(\", \")}. ` +\n \"Split the Experiment into one pass Experiment and one score Experiment, or narrow its Eval selection.\").join(\"\\n\"),\n issues: Object.freeze(issues.map((issue) => Object.freeze(issue))),\n }));\n }\n const overrides = input.overrides ?? {};\n const sandboxSetupCacheOverride = sandboxSetupCacheOverrideOf(overrides);\n return Effect.succeed({\n status: \"ready\",\n selected,\n runs: freezeArray(selected.selections.map(({ experiment, selectedEvalIds }) => agentRunFromExperiment(experiment, selectedEvalIds, input.config, overrides, sandboxSetupCacheOverride))),\n } as const);\n }));\n}\nexport function check(input: ExperimentHostCheckRequest): Effect.Effect<ExperimentHostCheckResult, ExperimentHostError> {\n return closeOperation(\"check\", Effect.gen(function* () {\n const prepared = yield* prepareRuns(input);\n if (prepared.status === \"problem\")\n return prepared.problem;\n const pairs = yield* linkRunSandboxes(prepared.selected.evals, prepared.runs);\n return Object.freeze({\n status: \"linked\" as const,\n experimentIds: freezeArray(prepared.runs.map((run) => run.experimentId!)),\n evalIds: freezeArray(new Set(prepared.runs.flatMap((run) => run.selectedEvalIds))),\n pairCount: pairs.length,\n });\n }));\n}\n/** Session data is intentionally presented as a closed, transient document. */\nexport function listInvocationStatus(input: ExperimentHostInvocationStatusListRequest): Effect.Effect<ExperimentHostInvocationStatusList, ExperimentHostError, ProjectStateDatabase> {\n return closeOperation(\"invocation-status-list\", listSessions(resolve(input.cwd, \".niceeval\"), {\n ...(input.all === true ? { all: true } : {}),\n ...(input.experimentSelector === undefined ? {} : { selector: input.experimentSelector }),\n }));\n}\nexport function showInvocationStatus(input: ExperimentHostInvocationStatusShowRequest): Effect.Effect<ExperimentHostInvocationStatusShow, ExperimentHostError, ProjectStateDatabase> {\n return closeOperation(\"invocation-status-show\", showSession(resolve(input.cwd, \".niceeval\"), input.invocationSelector));\n}\nfunction recordRoot(input: ExperimentHostInvocationPlanRequest) {\n // An ordinary Invocation is always anchored to its discovered project. A\n // Query/view source selection belongs to Inspection and can never be\n // promoted to the live writer through this request.\n return makeRecordRoot(resolve(input.cwd, \".niceeval\"));\n}\nfunction comparisonOf(slot: ExecutionReusePlanSlot): readonly ExperimentHostDryComparison[] {\n return freezeArray(slot.comparisons.map((comparison) => Object.freeze({ ...comparison })));\n}\nfunction jsonSnapshot(value: unknown): ExperimentHostJsonValue | undefined {\n try {\n return freezeJson(JSON.parse(JSON.stringify(value)) as ExperimentHostJsonValue);\n }\n catch {\n return undefined;\n }\n}\nfunction freezeJson(value: ExperimentHostJsonValue): ExperimentHostJsonValue {\n if (Array.isArray(value))\n return Object.freeze(value.map(freezeJson));\n if (typeof value === \"object\" && value !== null) {\n return Object.freeze(Object.fromEntries(Object.entries(value).map(([key, entry]) => [key, freezeJson(entry)])));\n }\n return value;\n}\nfunction dryPlan(slots: readonly ExecutionReusePlanSlot[], readbacks: readonly ReturnType<typeof projectCurrentReuseReadback>[], lockedPairs: readonly string[], evalGroups: ReadonlyMap<string, {\n readonly id: string;\n readonly index: number;\n}>): ExperimentHostDryPlan {\n const projected: ExperimentHostDrySlot[] = slots.map((slot) => {\n const evalGroup = evalGroups.get(slot.evalId);\n const target = Object.freeze({\n runId: slot.runId,\n slotId: slot.slotId,\n experimentId: slot.experimentId,\n evalId: slot.evalId,\n executionIdentityDigest: slot.executionIdentityDigest,\n ...(evalGroup === undefined ? {} : { evalGroupId: evalGroup.id, evalGroupIndex: evalGroup.index }),\n attempt: slot.attempt,\n });\n if (slot.state === \"reuse\") {\n return Object.freeze({\n state: \"reuse\" as const,\n target,\n source: Object.freeze({\n attemptId: slot.source.attemptId,\n originRunId: slot.source.origin.runId,\n originSlotId: slot.source.origin.slotId,\n sourceRunId: slot.source.sourceBarrier.runId,\n }),\n comparisons: comparisonOf(slot),\n });\n }\n return Object.freeze({\n state: \"gap\" as const,\n target,\n reason: slot.reason,\n scope: slot.scope,\n issues: freezeArray(slot.issues.map((issue) => jsonSnapshot(issue) ?? Object.freeze({}))),\n comparisons: comparisonOf(slot),\n });\n });\n return Object.freeze({\n policy: Object.freeze({ name: \"project-target\" as const, version: 1 as const }),\n slots: freezeArray(projected),\n readbacks: freezeArray(readbacks),\n lockedPairs: freezeArray(lockedPairs),\n });\n}\nexport function planInvocation(input: ExperimentHostInvocationPlanRequest): Effect.Effect<ExperimentHostInvocationPlanResult, ExperimentHostError, ExperimentHostRequirements> {\n return closeOperation(\"invocation-plan\", Effect.gen(function* () {\n const prepared = yield* prepareRuns(input);\n if (prepared.status === \"problem\") {\n return Object.freeze({ ...prepared.problem });\n }\n const root = recordRoot(input);\n if (Result.isFailure(root))\n return yield* Effect.fail(root.failure);\n const config = Object.freeze({\n ...input.config,\n ...(input.config.reporters === undefined\n ? {}\n : { reporters: [...input.config.reporters] }),\n });\n const overrides = Object.freeze({ ...(input.overrides ?? {}) });\n const target = yield* planProjectTarget(prepared.selected.evals, prepared.runs, config.timeoutMs, {\n configJudge: config.judge,\n ...(overrides.keepSandbox === undefined ? {} : { keepSandbox: overrides.keepSandbox }),\n });\n const maxConcurrency = overrides.maxConcurrency\n ?? config.maxConcurrency\n ?? recommendedConcurrencyForPreparedPairs([...target.preparedPairsByKey.values()]);\n const maxBuildConcurrency = overrides.maxBuildConcurrency\n ?? config.maxBuildConcurrency\n ?? 2;\n const maxSetupPrefixConcurrency = overrides.maxSetupPrefixConcurrency\n ?? config.maxSetupPrefixConcurrency\n ?? 2;\n if (!Number.isInteger(maxConcurrency) || maxConcurrency <= 0) {\n return yield* Effect.fail(new Error(`maxConcurrency must be a positive integer, got ${maxConcurrency}.`));\n }\n if (!Number.isInteger(maxBuildConcurrency) || maxBuildConcurrency <= 0) {\n return yield* Effect.fail(new Error(`maxBuildConcurrency must be a positive integer, got ${maxBuildConcurrency}.`));\n }\n if (!Number.isInteger(maxSetupPrefixConcurrency) || maxSetupPrefixConcurrency <= 0) {\n return yield* Effect.fail(new Error(`maxSetupPrefixConcurrency must be a positive integer, got ${maxSetupPrefixConcurrency}.`));\n }\n const uniqueEvalIds = new Set(prepared.runs.flatMap((run) => run.selectedEvalIds));\n const totalAttempts = prepared.runs.reduce((sum, run) => sum + run.selectedEvalIds.length * run.attempts, 0);\n const experimentConcurrency = Object.freeze(Object.fromEntries(prepared.runs.flatMap((run) => run.experimentId !== undefined && run.maxConcurrency !== undefined\n ? [[run.experimentId, run.maxConcurrency] as const]\n : [])));\n const shape: ExperimentHostInvocationShape = Object.freeze({\n experiments: prepared.runs.length,\n evals: uniqueEvalIds.size,\n configurations: prepared.runs.length,\n totalAttempts,\n attempts: Math.max(1, ...prepared.runs.map((run) => run.attempts)),\n maxConcurrency,\n maxBuildConcurrency,\n maxSetupPrefixConcurrency,\n experimentConcurrency,\n });\n const reuse = yield* prepareRunnerRecordReuse({\n evals: prepared.selected.evals,\n runs: prepared.runs,\n config: { timeoutMs: config.timeoutMs },\n plannedFingerprints: target.plannedFingerprints,\n plannedConfigHashes: target.plannedConfigHashes,\n ...(overrides.rerun === undefined ? {} : { rerun: overrides.rerun }),\n ...(overrides.keepSandbox === undefined ? {} : { keepSandbox: overrides.keepSandbox }),\n });\n const previewStartedAt = input.preview === true ? yield* Clock.currentTimeMillis : undefined;\n const preview = previewStartedAt !== undefined\n ? yield* Effect.scoped(withRunnerCurrentReusePreview({\n recordRoot: root.success,\n startedAt: previewStartedAt,\n evals: prepared.selected.evals,\n runs: prepared.runs,\n reuse,\n use: ({ reusePlan, readReadbacks }) => Effect.gen(function* () {\n const readbacks = yield* readReadbacks();\n const pairs = new Map(reusePlan.slots.map((slot) => [\n JSON.stringify([slot.experimentId, slot.evalId]),\n [slot.experimentId, slot.evalId] as const,\n ]));\n const projectDatabaseRoot = recordRootPaths(root.success)?.portableRoot;\n if (projectDatabaseRoot === undefined)\n return yield* Effect.fail(new Error(\"Record root is unavailable.\"));\n const locked = yield* Effect.all([...pairs].map(([key, [experimentId, evalId]]) => readCaseLockEffect(projectDatabaseRoot, experimentId, evalId).pipe(Effect.catch(() => Effect.succeed(undefined)), Effect.map((record) => record !== undefined ? key : undefined))), { concurrency: \"unbounded\" });\n return dryPlan(reusePlan.slots, readbacks.map(projectCurrentReuseReadback), locked.filter((key): key is string => key !== undefined), new Map(prepared.selected.evals.flatMap((definition) => definition.evalGroup === undefined\n ? []\n : [[definition.id, {\n id: definition.evalGroup.id,\n index: definition.evalGroup.evalIds.indexOf(definition.id),\n }] as const])));\n }),\n }))\n : undefined;\n const plan = Object.freeze({}) as ExperimentHostInvocationPlan;\n invocationPlans.set(plan, {\n evals: prepared.selected.evals,\n runs: prepared.runs,\n config,\n recordRoot: root.success,\n coordinationRoot: resolve(input.cwd, input.coordinationRoot ?? \".niceeval\"),\n overrides,\n shape,\n consumed: false,\n });\n const occurrenceAudits = new Map<string, ExperimentHostJsonValue>();\n for (const pair of target.preparedPairsByKey.values()) {\n for (const occurrence of pair.plugin.occurrences) {\n const audit = jsonSnapshot(occurrence.audit);\n if (audit !== undefined)\n occurrenceAudits.set(JSON.stringify(audit), audit);\n }\n }\n return Object.freeze({\n status: \"ready\" as const,\n plan,\n shape,\n experimentIds: freezeArray(prepared.runs.map((run) => run.experimentId!)),\n evalIds: freezeArray(uniqueEvalIds),\n pluginAudit: Object.freeze({ occurrences: freezeArray(occurrenceAudits.values()) }),\n ...(preview === undefined ? {} : { dry: preview }),\n });\n }));\n}\nfunction multiplexFeedbackSink(feedback: FeedbackSink | undefined, session: SessionTracker | undefined, isFeedbackStarted: () => boolean): FeedbackSink {\n const forward = <A extends unknown[]>(method: (sink: FeedbackSink, ...args: A) => void, ...args: A): void => {\n if (!isFeedbackStarted() || feedback === undefined)\n return;\n method(feedback, ...args);\n };\n return {\n activity: (detail) => forward((sink, value) => sink.activity(value), detail),\n diagnostic: (input) => forward((sink, value) => sink.diagnostic(value), input),\n interrupted: () => forward((sink) => sink.interrupted()),\n reporterError: (input) => forward((sink, value) => sink.reporterError(value), input),\n failure: (input) => forward((sink, value) => sink.failure(value), input),\n budgetExhausted: (input) => forward((sink, value) => sink.budgetExhausted(value), input),\n kept: (input) => forward((sink, value) => sink.kept(value), input),\n experimentHook: (input) => {\n session?.onInvocationEvent({ type: \"experiment-hook\", ...input });\n forward((sink, value) => sink.experimentHook(value), input);\n },\n precheck: (input) => forward((sink, value) => sink.precheck(value), input),\n lockWait: (input) => {\n session?.onInvocationEvent({ type: \"lock-wait\", ...input });\n forward((sink, value) => sink.lockWait(value), input);\n },\n runActivity: (input) => forward((sink, value) => sink.runActivity(value), input),\n experimentProgress: (input) => forward((sink, value) => sink.experimentProgress(value), input),\n lifecycle: (event) => {\n if (event.type === \"attempt:queued\" ||\n event.type === \"attempt:start\" ||\n event.type === \"attempt:complete\" ||\n event.type === \"attempt:early-exit\") {\n session?.onInvocationEvent(event);\n }\n forward((sink, value) => sink.lifecycle(value), event);\n },\n };\n}\nfunction summaryOf(summary: InvocationSummary): ExperimentHostInvocationSummary {\n return Object.freeze({\n total: summary.passed + summary.failed + summary.skipped + summary.errored,\n passed: summary.passed,\n failed: summary.failed,\n skipped: summary.skipped,\n errored: summary.errored,\n durationMs: summary.durationMs,\n ...(summary.usage?.inputTokens === undefined ? {} : { inputTokens: summary.usage.inputTokens }),\n ...(summary.usage?.outputTokens === undefined ? {} : { outputTokens: summary.usage.outputTokens }),\n ...(summary.estimatedCostUSD === undefined ? {} : { estimatedCostUSD: summary.estimatedCostUSD }),\n setupPrefixes: summary.setupPrefixes,\n });\n}\nexport function runInvocation(input: ExperimentHostInvocationRunRequest): Effect.Effect<ExperimentHostInvocationResult, ExperimentHostError, ExperimentHostRequirements> {\n return Effect.scoped(closeOperation(\"invocation-run\", Effect.gen(function* () {\n const state = invocationPlans.get(input.plan as object);\n if (state === undefined || state.consumed) {\n return yield* Effect.fail(new Error(\"Experiment Host invocation plan is forged, copied, or already consumed.\"));\n }\n state.consumed = true;\n let completedSummary: InvocationSummary | undefined;\n const reporters = [\n ...(input.junitPath === undefined ? [] : [{\n reporter: JUnit(input.junitPath),\n name: \"junit\",\n required: true,\n target: input.junitPath,\n }]),\n ...(state.config.reporters ?? []).map((reporter, index) => ({\n reporter,\n name: `config-reporter-${index}`,\n required: false,\n })),\n {\n name: \"experiment-host-summary\",\n required: false,\n reporter: { onInvocationComplete(summary: InvocationSummary) { completedSummary = summary; } },\n },\n ];\n // Session indexing is a Host-owned, project-local observation. Runner only\n // receives the private tracker mechanism; this enclosing Scope closes its\n // heartbeat worker on success, typed failure, or interruption.\n const projectDatabaseRoot = recordRootPaths(state.recordRoot)?.portableRoot;\n if (projectDatabaseRoot === undefined)\n return yield* Effect.fail(new Error(\"Record root is unavailable.\"));\n const projectStateDatabase = yield* ProjectStateDatabase;\n const session = new SessionTracker(projectDatabaseRoot, projectStateDatabase);\n let sessionClosed = false;\n let feedbackStarted = false;\n let feedbackFinished = false;\n // Registered first so LIFO Scope closure runs every business finalizer\n // (including the session heartbeat stop and fenced terminal write) before\n // shutting down the sole operational worker and entering the one portable gate.\n // Portability is best-effort during Scope release: an already-corrupt or\n // unavailable database must not replace the Invocation's primary outcome.\n // The explicit service operation remains typed for callers that need to\n // diagnose a gate failure directly.\n yield* Effect.addFinalizer(() => projectStateDatabase.closeInvocationPortable(projectDatabaseRoot).pipe(Effect.ignore));\n yield* Effect.addFinalizer(() => sessionClosed\n ? Effect.void\n : session.close({ status: \"incomplete\" }).pipe(Effect.ignore));\n yield* Effect.addFinalizer(() => !feedbackStarted || feedbackFinished || input.feedback === undefined\n ? Effect.void\n : Effect.tryPromise({\n try: () => input.feedback!.coordinator.stopDynamic(),\n catch: () => undefined,\n }).pipe(Effect.ignore));\n const feedback = input.feedback?.coordinator;\n const sink = multiplexFeedbackSink(feedback, session, () => feedbackStarted);\n const receipt = yield* Effect.acquireUseRelease(Effect.sync(() => activateFeedbackSink(sink)), () => runEvals({\n config: state.config,\n evals: state.evals,\n agentRuns: state.runs,\n reporters,\n maxConcurrency: state.shape.maxConcurrency,\n maxBuildConcurrency: state.shape.maxBuildConcurrency,\n maxSetupPrefixConcurrency: state.shape.maxSetupPrefixConcurrency,\n coordinationRoot: state.coordinationRoot,\n recordRoot: state.recordRoot,\n ...(state.overrides.keepSandbox === undefined ? {} : { keepSandbox: state.overrides.keepSandbox }),\n ...(state.overrides.rerun === undefined ? {} : { rerun: state.overrides.rerun }),\n session,\n ...(input.signal === undefined ? {} : { signal: input.signal }),\n onCurrentRecordReusePlan: (current) => Effect.sync(() => {\n if (feedback === undefined)\n return;\n feedback.start({\n shape: Object.freeze({\n evals: state.shape.evals,\n configs: state.shape.configurations,\n totalAttempts: state.shape.totalAttempts,\n maxConcurrency: state.shape.maxConcurrency,\n runIds: current.runIds,\n }),\n ...(Object.keys(state.shape.experimentConcurrency).length === 0\n ? {}\n : { experimentConcurrency: state.shape.experimentConcurrency }),\n reused: current.reused,\n ...(current.reusedFailures.length === 0\n ? {}\n : { reusedFailures: current.reusedFailures }),\n });\n feedbackStarted = true;\n }),\n }), (deactivate) => Effect.sync(deactivate));\n const summary = completedSummary;\n if (summary === undefined) {\n return yield* Effect.fail(new Error(\"Runner completed without an invocation summary.\"));\n }\n if (feedback !== undefined && !feedbackStarted) {\n return yield* Effect.fail(new Error(\"Runner completed without starting Experiment feedback.\"));\n }\n const completion = feedback === undefined\n ? undefined\n : assembleInvocationCompletion(feedback.state);\n yield* session.close({\n status: completion?.status ?? (receipt.completion === \"completed\"\n ? \"complete\"\n : receipt.completion === \"interrupted\"\n ? \"interrupted\"\n : \"incomplete\"),\n ...(completion === undefined ? {} : { completion }),\n receipt,\n ...(receipt.completedAt === undefined ? {} : { completedAt: receipt.completedAt }),\n });\n sessionClosed = true;\n if (feedback !== undefined && completion !== undefined) {\n yield* Effect.tryPromise({\n try: () => feedback.finish({ summary, completion, receipt }),\n catch: (cause) => cause,\n });\n feedbackFinished = true;\n }\n const foldedStats = completion === undefined ? undefined : foldInvocationEvalStats(summary);\n return Object.freeze({\n status: \"finished\" as const,\n receipt: Object.freeze({\n invocationId: receipt.invocationId,\n createdRunIds: freezeArray(receipt.createdRunIds),\n publicationCutoff: receipt.publicationCutoff,\n startedAt: receipt.startedAt,\n ...(receipt.completedAt === undefined ? {} : { completedAt: receipt.completedAt }),\n completion: receipt.completion,\n }),\n summary: summaryOf(summary),\n ...(completion === undefined ? {} : {\n completion,\n exitCode: computeExitCode({\n ...summary,\n failed: foldedStats!.failed,\n errored: foldedStats!.errored,\n }, completion),\n }),\n });\n })));\n}\nfunction freezeRenamePlan(plan: RunnerExperimentRenamePlan): ExperimentHostRenamePlan {\n return Object.freeze({\n status: \"plan\",\n oldId: plan.oldId,\n newId: plan.newId,\n migrations: freezeArray(plan.migrations.map((entry) => Object.freeze({ ...entry }))),\n excluded: freezeArray(plan.excluded.map((entry) => Object.freeze({ ...entry }))),\n ...(plan.blocked === undefined ? {} : { blocked: Object.freeze({\n ...plan.blocked,\n ...(plan.blocked.conflictingEvals === undefined\n ? {}\n : { conflictingEvals: freezeArray(plan.blocked.conflictingEvals) }),\n }) }),\n });\n}\nexport function planRename(input: ExperimentHostRenameRequest): Effect.Effect<ExperimentHostRenamePlan, ExperimentHostError, ExperimentHostRequirements> {\n return closeOperation(\"rename-plan\", planExperimentRename({ ...input, recordRoot: undefined }).pipe(Effect.map(freezeRenamePlan)));\n}\nexport function applyRename(input: ExperimentHostRenameRequest): Effect.Effect<ExperimentHostRenameResult, ExperimentHostError, ExperimentHostRequirements> {\n return closeOperation(\"rename-apply\", Effect.gen(function* () {\n const outcome = yield* Effect.result(renameExperiment({ ...input, recordRoot: undefined }));\n if (Result.isFailure(outcome)) {\n if (!(outcome.failure instanceof ExperimentRenameError))\n return yield* Effect.fail(outcome.failure);\n return Object.freeze({\n status: \"rejected\" as const,\n oldId: input.oldId,\n newId: input.newId,\n reason: outcome.failure.reason,\n ...(outcome.failure.plan?.blocked?.evalId === undefined ? {} : { evalId: outcome.failure.plan.blocked.evalId }),\n ...(outcome.failure.plan?.blocked?.conflictingEvals === undefined\n ? {}\n : { conflictingEvals: freezeArray(outcome.failure.plan.blocked.conflictingEvals) }),\n ...(outcome.failure.message === \"\" ? {} : { detail: outcome.failure.message }),\n }) satisfies ExperimentHostRenameResult;\n }\n const done = outcome.success;\n return Object.freeze({\n status: \"done\" as const,\n invocationId: done.invocationId,\n runId: done.runId,\n snapshotPath: done.snapshotPath,\n oldId: done.oldId,\n newId: done.newId,\n migrated: freezeArray(done.migrated.map((entry) => Object.freeze({\n evalId: entry.evalId,\n sourceLocator: entry.sourceLocator,\n locator: entry.locator,\n fingerprint: entry.fingerprint,\n verdict: entry.verdict,\n }))),\n }) satisfies ExperimentHostRenameResult;\n }));\n}\nexport function accept(input: ExperimentHostAcceptRequest): Effect.Effect<readonly ExperimentHostAcceptedAttempt[], ExperimentHostError, ExperimentHostRequirements> {\n return closeOperation(\"accept\", acceptLocators({ ...input, recordRoot: undefined }).pipe(Effect.map((receipts) => freezeArray(receipts.map((receipt) => Object.freeze({\n invocationId: receipt.invocationId,\n runId: receipt.runId,\n slotId: receipt.slotId,\n locator: receipt.locator,\n sourceLocator: receipt.sourceLocator,\n fingerprint: receipt.fingerprint,\n }))))));\n}\nexport function planRunAccept(input: ExperimentHostAcceptRunRequest): Effect.Effect<ExperimentHostAcceptRunPlan, ExperimentHostError, ExperimentHostRequirements> {\n return closeOperation(\"accept\", planAcceptRun({ ...input, recordRoot: undefined }).pipe(Effect.map((plan) => Object.freeze({\n sourceRunId: plan.sourceRunId,\n members: freezeArray(plan.members.map((member) => Object.freeze({\n locator: member.locator,\n experimentId: member.experimentId,\n evalId: member.evalId,\n attempt: member.attempt,\n fingerprint: member.fingerprint,\n }))),\n }))));\n}\nexport function applyRunAccept(input: ExperimentHostAcceptRunRequest): Effect.Effect<readonly ExperimentHostAcceptedAttempt[], ExperimentHostError, ExperimentHostRequirements> {\n return closeOperation(\"accept\", acceptRun({ ...input, recordRoot: undefined }).pipe(Effect.map((receipts) => freezeArray(receipts.map((receipt) => Object.freeze({\n invocationId: receipt.invocationId,\n runId: receipt.runId,\n slotId: receipt.slotId,\n locator: receipt.locator,\n sourceLocator: receipt.sourceLocator,\n fingerprint: receipt.fingerprint,\n }))))));\n}\n"]}
1
+ {"version":3,"file":"operations.js","sourceRoot":"","sources":["operations.ts"],"names":[],"mappings":"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","sourcesContent":["import { resolve } from \"node:path\";\nimport { Clock, Data, Effect, Result } from \"effect\";\nimport { recordHost } from \"../../record/host/index.ts\";\nimport { makeRecordRoot, recordRootPaths, type RecordRoot } from \"../../record/platform/root.ts\";\nimport { ProjectStateDatabase } from \"../../record/sqlite/project-state-database.ts\";\nimport { acceptLocators, acceptRun, planAcceptRun } from \"../../runner/accept.ts\";\nimport { activateFeedbackSink, type FeedbackSink } from \"../../runner/feedback/sink.ts\";\nimport { computeExitCode } from \"../../runner/feedback/json.ts\";\nimport { discoverEvals, discoverExperiments } from \"../../runner/discover.ts\";\nimport { resolveExperimentEvals, splitByEvaluationKind } from \"../../runner/eval-selection.ts\";\nimport { planProjectTarget } from \"../../runner/fingerprint.ts\";\nimport { prepareRunnerRecordReuse, withRunnerCurrentReusePreview, } from \"../../runner/record.ts\";\nimport { projectCurrentReuseReadback } from \"../../runner/reuse-readback.ts\";\nimport type { ExecutionReusePlanSlot } from \"../../runner/reuse-plan.ts\";\nimport { runEvals } from \"../../runner/run.ts\";\nimport { readCaseLockEffect } from \"../../runner/lock.ts\";\nimport { JUnit } from \"../../runner/reporters/json.ts\";\nimport { listSessions, showSession, SessionTracker, } from \"../../runner/session.ts\";\nimport { linkRunSandboxes, recommendedConcurrencyForPreparedPairs, } from \"../../runner/sandbox-selection.ts\";\nimport { resolveRunTimeout } from \"../../runner/timeout.ts\";\nimport { ExperimentRenameError, planExperimentRename, renameExperiment, type ExperimentRenamePlan as RunnerExperimentRenamePlan, } from \"../../runner/rename-experiment.ts\";\nimport { resolveSandboxSetupCache, type AgentRun, type DiscoveredEval, type DiscoveredExperiment, type InvocationSummary, type SandboxSetupCache, } from \"../../runner/types.ts\";\nimport { evalPrefixPredicate, matchExperimentSelector } from \"../../shared/aggregate.ts\";\nimport { ExperimentHostError } from \"./types.ts\";\nimport { assembleInvocationCompletion, foldInvocationEvalStats } from \"./presentation.ts\";\nimport { firstLine, formatThrown } from \"../../util.ts\";\nimport type { ExperimentHostAcceptRequest, ExperimentHostAcceptRunPlan, ExperimentHostAcceptRunRequest, ExperimentHostAcceptedAttempt, ExperimentHostCatalog, ExperimentHostCheckRequest, ExperimentHostCheckResult, ExperimentHostDryComparison, ExperimentHostDryPlan, ExperimentHostDrySlot, ExperimentHostOperation, ExperimentHostExperimentSummary, ExperimentHostInvocationPlan, ExperimentHostInvocationPlanRequest, ExperimentHostInvocationPlanResult, ExperimentHostInvocationResult, ExperimentHostInvocationRunRequest, ExperimentHostInvocationShape, ExperimentHostInvocationSummary, ExperimentHostJsonValue, ExperimentHostInvocationStatusList, ExperimentHostInvocationStatusListRequest, ExperimentHostInvocationStatusShow, ExperimentHostInvocationStatusShowRequest, ExperimentHostRenamePlan, ExperimentHostRenameRequest, ExperimentHostRenameResult, ExperimentHostRequirements, ExperimentHostRunOverrides, ExperimentHostSelectionInput, ExperimentHostSelectionProblem, } 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: closedFailureMessage(cause),\n cause,\n });\n}\n/** Preserve one actionable message while closing private Runner error shapes. */\nfunction closedFailureMessage(cause: unknown): string {\n const diagnostic = closedRecordDiagnostic(cause);\n if (diagnostic !== undefined)\n return JSON.stringify(diagnostic);\n if (cause instanceof Error && cause.message.length > 0)\n return cause.message;\n if (typeof cause === \"object\" && cause !== null) {\n const direct = Reflect.get(cause, \"message\");\n if (typeof direct === \"string\" && direct.length > 0)\n return direct;\n const issue = Reflect.get(cause, \"issue\");\n if (typeof issue === \"object\" && issue !== null) {\n const nested = Reflect.get(issue, \"message\");\n if (typeof nested === \"string\" && nested.length > 0)\n return nested;\n }\n }\n return firstLine(formatThrown(cause));\n}\nfunction closedRecordDiagnostic(cause: unknown): unknown | undefined {\n if (typeof cause !== \"object\" || cause === null)\n return undefined;\n const code = Reflect.get(cause, \"code\");\n if (code === \"runner-record-attempt-publication-failed\") {\n const locator = Reflect.get(cause, \"locator\");\n const rawCause = Reflect.get(cause, \"cause\");\n const nested = closedRecordDiagnostic(rawCause) ?? closedDiagnosticMessage(rawCause);\n return Object.freeze({\n code,\n ...(typeof locator === \"string\" ? { locator } : {}),\n ...(nested === undefined ? {} : { cause: nested }),\n });\n }\n if (code !== \"record-attachment-encode-error\")\n return undefined;\n const family = Reflect.get(cause, \"family\");\n const issues = Reflect.get(cause, \"issues\");\n const schemaIssues = Reflect.get(cause, \"schemaIssues\");\n return Object.freeze({\n code,\n ...(typeof family === \"string\" ? { family } : {}),\n issues: closedDiagnosticIssues(issues, false),\n schemaIssues: closedDiagnosticIssues(schemaIssues, true),\n });\n}\nfunction closedDiagnosticMessage(cause: unknown): Readonly<{\n message: string;\n}> | undefined {\n const message = cause instanceof Error\n ? cause.message\n : typeof cause === \"object\" && cause !== null && typeof Reflect.get(cause, \"message\") === \"string\"\n ? String(Reflect.get(cause, \"message\"))\n : undefined;\n return message === undefined || message.length === 0\n ? undefined\n : Object.freeze({ message });\n}\nfunction closedDiagnosticIssues(value: unknown, includeMessage: boolean): readonly unknown[] {\n if (!Array.isArray(value))\n return Object.freeze([]);\n return Object.freeze(value.flatMap((entry) => {\n if (typeof entry !== \"object\" || entry === null)\n return [];\n const path = Reflect.get(entry, \"path\");\n const code = Reflect.get(entry, \"code\");\n const message = Reflect.get(entry, \"message\");\n return [Object.freeze({\n ...(typeof code === \"string\" ? { code } : {}),\n path: Array.isArray(path)\n ? Object.freeze(path.filter((segment): segment is string | number => typeof segment === \"string\" || typeof segment === \"number\"))\n : Object.freeze([]),\n ...(includeMessage && typeof message === \"string\" ? { message } : {}),\n })];\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}\ninterface ClosedSelection {\n readonly evals: readonly DiscoveredEval[];\n readonly experimentIds: readonly string[];\n readonly selections: readonly {\n readonly experiment: DiscoveredExperiment;\n readonly selectedEvalIds: readonly string[];\n readonly selectorEvalIds: readonly string[];\n }[];\n}\ninterface PreparedInvocationState {\n readonly evals: readonly DiscoveredEval[];\n readonly runs: readonly AgentRun[];\n readonly config: ExperimentHostInvocationPlanRequest[\"config\"];\n readonly recordRoot: RecordRoot;\n readonly coordinationRoot: string;\n readonly overrides: ExperimentHostRunOverrides;\n readonly shape: ExperimentHostInvocationShape;\n consumed: boolean;\n}\nclass ExperimentEvaluationKindAdmissionError extends Data.TaggedError(\"ExperimentEvaluationKindAdmissionError\")<{\n readonly code: \"experiment-evaluation-kind-mixed\";\n readonly message: string;\n readonly issues: readonly {\n readonly experimentId: string;\n readonly passEvalIds: readonly string[];\n readonly scoreEvalIds: readonly string[];\n }[];\n}> {\n}\ntype PreparedRuns = {\n readonly status: \"problem\";\n readonly selected: ClosedSelection;\n readonly problem: ExperimentHostSelectionProblem;\n} | {\n readonly status: \"ready\";\n readonly selected: ClosedSelection;\n readonly runs: readonly AgentRun[];\n};\nconst invocationPlans = new WeakMap<object, PreparedInvocationState>();\nfunction freezeArray<A>(values: Iterable<A>): readonly A[] {\n return Object.freeze([...values]);\n}\nfunction selectionProblem(input: ExperimentHostSelectionInput, selected: ClosedSelection): ExperimentHostSelectionProblem | undefined {\n if (input.experimentSelector !== undefined && selected.selections.length === 0) {\n return Object.freeze({\n status: \"experiment-no-match\" as const,\n selector: input.experimentSelector,\n candidates: freezeArray([...selected.experimentIds].sort()),\n });\n }\n const selectorEvalIds = freezeArray(new Set(selected.selections.flatMap((entry) => entry.selectorEvalIds)));\n for (const selector of input.evalSelectors ?? []) {\n if (selectorEvalIds.some((id) => evalPrefixPredicate([selector])(id)))\n continue;\n return Object.freeze({\n status: \"eval-no-match\" as const,\n selector,\n experimentIds: freezeArray(selected.selections.map(({ experiment }) => experiment.id)),\n candidates: freezeArray([...selectorEvalIds].sort()),\n });\n }\n if (selected.selections.every((entry) => entry.selectedEvalIds.length === 0)) {\n return Object.freeze({\n status: \"empty-selection\" as const,\n experimentIds: freezeArray(selected.selections.map(({ experiment }) => experiment.id)),\n candidates: freezeArray([...selected.experimentIds].sort()),\n });\n }\n return undefined;\n}\nfunction closeSelection(input: ExperimentHostSelectionInput): Effect.Effect<ClosedSelection, unknown> {\n return Effect.gen(function* () {\n const discovered = yield* discoverEvals(input.cwd);\n const evals = input.tag === undefined\n ? discovered\n : discovered.filter((definition) => definition.tags?.includes(input.tag!));\n const experiments = yield* discoverExperiments(input.cwd);\n const experimentIds = freezeArray(experiments.map((experiment) => experiment.id));\n const selectedIds = input.experimentSelector === undefined\n ? undefined\n : new Set(matchExperimentSelector(experimentIds, input.experimentSelector));\n const selections = experiments\n .filter((experiment) => selectedIds === undefined || selectedIds.has(experiment.id))\n .map((experiment) => {\n const selection = resolveExperimentEvals({\n experimentId: experiment.id,\n selector: experiment.evals,\n cliPatterns: input.evalSelectors ?? [],\n evals,\n });\n return Object.freeze({\n experiment,\n selectedEvalIds: freezeArray(selection.selectedEvalIds),\n selectorEvalIds: freezeArray(selection.selectorEvals.map((definition) => definition.id)),\n });\n });\n return Object.freeze({\n evals: freezeArray(evals),\n experimentIds,\n selections: freezeArray(selections),\n });\n });\n}\nfunction summaryOfExperiment(experiment: DiscoveredExperiment, evalIds: readonly string[]): ExperimentHostExperimentSummary {\n return Object.freeze({\n id: experiment.id,\n ...(experiment.description === undefined ? {} : { description: experiment.description }),\n agent: experiment.agent.name,\n ...(experiment.model === undefined ? {} : { model: experiment.model }),\n attempts: experiment.attempts ?? 1,\n evalIds: freezeArray(evalIds),\n labels: Object.freeze({ ...(experiment.labels ?? {}) }),\n hasSetup: typeof experiment.setup === \"function\",\n hasTeardown: typeof experiment.teardown === \"function\",\n ...(experiment.sharedState === undefined ? {} : { sharedStateKey: experiment.sharedState.key }),\n });\n}\nexport function catalog(input: ExperimentHostSelectionInput): Effect.Effect<ExperimentHostCatalog, ExperimentHostError> {\n return closeOperation(\"catalog\", closeSelection(input).pipe(Effect.map((selected) => Object.freeze({\n status: \"listed\" as const,\n evals: freezeArray(selected.evals.map((definition) => Object.freeze({\n id: definition.id,\n ...(definition.description === undefined ? {} : { description: definition.description }),\n tags: freezeArray(definition.tags ?? []),\n evaluationKind: definition.evaluationKind,\n }))),\n experimentIds: selected.experimentIds,\n experiments: freezeArray(selected.selections.map(({ experiment, selectedEvalIds }) => summaryOfExperiment(experiment, selectedEvalIds))),\n }))));\n}\nfunction agentRunFromExperiment(experiment: DiscoveredExperiment, selectedEvalIds: readonly string[], config: ExperimentHostInvocationPlanRequest[\"config\"], overrides: ExperimentHostRunOverrides, sandboxSetupCacheOverride: SandboxSetupCache | undefined): AgentRun {\n return Object.freeze({\n agent: experiment.agent,\n model: experiment.model,\n reasoningEffort: experiment.reasoningEffort,\n flags: experiment.flags ?? {},\n plugins: experiment.plugins,\n attempts: overrides.attempts ?? experiment.attempts ?? 1,\n earlyExit: overrides.earlyExit ?? experiment.earlyExit ?? false,\n sandboxSetupCache: resolveSandboxSetupCache(sandboxSetupCacheOverride, experiment.sandboxCache, config.sandboxCache),\n sandbox: experiment.sandbox,\n sandboxReuse: experiment.sandboxReuse,\n ...(experiment.sharedState === undefined ? {} : { sharedState: experiment.sharedState }),\n judge: experiment.judge,\n ...resolveRunTimeout(overrides.timeoutMs, experiment.timeoutMs),\n budget: overrides.budget ?? experiment.budget,\n selectedEvalIds: freezeArray(selectedEvalIds),\n experimentId: experiment.id,\n experimentBaseDir: experiment.baseDir,\n experimentSourcePath: experiment.sourcePath,\n description: experiment.description,\n labels: experiment.labels,\n maxConcurrency: experiment.maxConcurrency,\n setup: experiment.setup,\n teardown: experiment.teardown,\n classifyFailure: experiment.classifyFailure,\n });\n}\nfunction sandboxSetupCacheOverrideOf(overrides: ExperimentHostRunOverrides): SandboxSetupCache | undefined {\n const value: unknown = Reflect.get(overrides, \"sandboxSetupCache\");\n if (value === undefined || value === \"use\" || value === \"bypass\")\n return value;\n throw new TypeError(\"sandboxSetupCache override must be \\\"use\\\" or \\\"bypass\\\".\");\n}\nfunction prepareRuns(input: ExperimentHostSelectionInput & {\n readonly config: ExperimentHostInvocationPlanRequest[\"config\"];\n readonly overrides?: ExperimentHostRunOverrides;\n}): Effect.Effect<PreparedRuns, unknown> {\n return closeSelection(input).pipe(Effect.flatMap((selected): Effect.Effect<PreparedRuns, ExperimentEvaluationKindAdmissionError> => {\n const problem = selectionProblem(input, selected);\n if (problem !== undefined)\n return Effect.succeed({ status: \"problem\", selected, problem } as const);\n const evalsById = new Map(selected.evals.map((definition) => [definition.id, definition]));\n const issues = selected.selections.flatMap(({ experiment, selectedEvalIds }) => {\n const evaluationKinds = splitByEvaluationKind(selectedEvalIds.flatMap((id) => {\n const definition = evalsById.get(id);\n return definition === undefined ? [] : [definition];\n }));\n return evaluationKinds.pass.length === 0 || evaluationKinds.score.length === 0\n ? []\n : [{\n experimentId: experiment.id,\n passEvalIds: Object.freeze([...evaluationKinds.pass]),\n scoreEvalIds: Object.freeze([...evaluationKinds.score]),\n }];\n });\n if (issues.length > 0) {\n return Effect.fail(new ExperimentEvaluationKindAdmissionError({\n code: \"experiment-evaluation-kind-mixed\",\n message: issues.map((issue) => `Experiment ${JSON.stringify(issue.experimentId)} selects both pass and score Evals. ` +\n `pass (${issue.passEvalIds.length}): ${issue.passEvalIds.join(\", \")}; ` +\n `score (${issue.scoreEvalIds.length}): ${issue.scoreEvalIds.join(\", \")}. ` +\n \"Split the Experiment into one pass Experiment and one score Experiment, or narrow its Eval selection.\").join(\"\\n\"),\n issues: Object.freeze(issues.map((issue) => Object.freeze(issue))),\n }));\n }\n const overrides = input.overrides ?? {};\n const sandboxSetupCacheOverride = sandboxSetupCacheOverrideOf(overrides);\n return Effect.succeed({\n status: \"ready\",\n selected,\n runs: freezeArray(selected.selections.map(({ experiment, selectedEvalIds }) => agentRunFromExperiment(experiment, selectedEvalIds, input.config, overrides, sandboxSetupCacheOverride))),\n } as const);\n }));\n}\nexport function check(input: ExperimentHostCheckRequest): Effect.Effect<ExperimentHostCheckResult, ExperimentHostError> {\n return closeOperation(\"check\", Effect.gen(function* () {\n const prepared = yield* prepareRuns(input);\n if (prepared.status === \"problem\")\n return prepared.problem;\n const pairs = yield* linkRunSandboxes(prepared.selected.evals, prepared.runs);\n return Object.freeze({\n status: \"linked\" as const,\n experimentIds: freezeArray(prepared.runs.map((run) => run.experimentId!)),\n evalIds: freezeArray(new Set(prepared.runs.flatMap((run) => run.selectedEvalIds))),\n pairCount: pairs.length,\n });\n }));\n}\n/** Session data is intentionally presented as a closed, transient document. */\nexport function listInvocationStatus(input: ExperimentHostInvocationStatusListRequest): Effect.Effect<ExperimentHostInvocationStatusList, ExperimentHostError, ProjectStateDatabase> {\n return closeOperation(\"invocation-status-list\", listSessions(resolve(input.cwd, \".niceeval\"), {\n ...(input.all === true ? { all: true } : {}),\n ...(input.experimentSelector === undefined ? {} : { selector: input.experimentSelector }),\n }));\n}\nexport function showInvocationStatus(input: ExperimentHostInvocationStatusShowRequest): Effect.Effect<ExperimentHostInvocationStatusShow, ExperimentHostError, ProjectStateDatabase> {\n return closeOperation(\"invocation-status-show\", showSession(resolve(input.cwd, \".niceeval\"), input.invocationSelector));\n}\nfunction recordRoot(input: ExperimentHostInvocationPlanRequest) {\n // An ordinary Invocation is always anchored to its discovered project. A\n // Query/view source selection belongs to Inspection and can never be\n // promoted to the live writer through this request.\n return makeRecordRoot(resolve(input.cwd, \".niceeval\"));\n}\nfunction comparisonOf(slot: ExecutionReusePlanSlot): readonly ExperimentHostDryComparison[] {\n return freezeArray(slot.comparisons.map((comparison) => Object.freeze({ ...comparison })));\n}\nfunction jsonSnapshot(value: unknown): ExperimentHostJsonValue | undefined {\n try {\n return freezeJson(JSON.parse(JSON.stringify(value)) as ExperimentHostJsonValue);\n }\n catch {\n return undefined;\n }\n}\nfunction freezeJson(value: ExperimentHostJsonValue): ExperimentHostJsonValue {\n if (Array.isArray(value))\n return Object.freeze(value.map(freezeJson));\n if (typeof value === \"object\" && value !== null) {\n return Object.freeze(Object.fromEntries(Object.entries(value).map(([key, entry]) => [key, freezeJson(entry)])));\n }\n return value;\n}\nfunction dryPlan(slots: readonly ExecutionReusePlanSlot[], readbacks: readonly ReturnType<typeof projectCurrentReuseReadback>[], lockedPairs: readonly string[], evalGroups: ReadonlyMap<string, {\n readonly id: string;\n readonly index: number;\n}>): ExperimentHostDryPlan {\n const projected: ExperimentHostDrySlot[] = slots.map((slot) => {\n const evalGroup = evalGroups.get(slot.evalId);\n const target = Object.freeze({\n runId: slot.runId,\n slotId: slot.slotId,\n experimentId: slot.experimentId,\n evalId: slot.evalId,\n executionIdentityDigest: slot.executionIdentityDigest,\n ...(evalGroup === undefined ? {} : { evalGroupId: evalGroup.id, evalGroupIndex: evalGroup.index }),\n attempt: slot.attempt,\n });\n if (slot.state === \"reuse\") {\n return Object.freeze({\n state: \"reuse\" as const,\n target,\n source: Object.freeze({\n attemptId: slot.source.attemptId,\n originRunId: slot.source.origin.runId,\n originSlotId: slot.source.origin.slotId,\n sourceRunId: slot.source.sourceBarrier.runId,\n }),\n comparisons: comparisonOf(slot),\n });\n }\n return Object.freeze({\n state: \"gap\" as const,\n target,\n reason: slot.reason,\n scope: slot.scope,\n issues: freezeArray(slot.issues.map((issue) => jsonSnapshot(issue) ?? Object.freeze({}))),\n comparisons: comparisonOf(slot),\n });\n });\n return Object.freeze({\n policy: Object.freeze({ name: \"project-target\" as const, version: 1 as const }),\n slots: freezeArray(projected),\n readbacks: freezeArray(readbacks),\n lockedPairs: freezeArray(lockedPairs),\n });\n}\nexport function planInvocation(input: ExperimentHostInvocationPlanRequest): Effect.Effect<ExperimentHostInvocationPlanResult, ExperimentHostError, ExperimentHostRequirements> {\n return closeOperation(\"invocation-plan\", Effect.gen(function* () {\n const prepared = yield* prepareRuns(input);\n if (prepared.status === \"problem\") {\n return Object.freeze({ ...prepared.problem });\n }\n const root = recordRoot(input);\n if (Result.isFailure(root))\n return yield* Effect.fail(root.failure);\n const config = Object.freeze({\n ...input.config,\n ...(input.config.reporters === undefined\n ? {}\n : { reporters: [...input.config.reporters] }),\n });\n const overrides = Object.freeze({ ...(input.overrides ?? {}) });\n const target = yield* planProjectTarget(prepared.selected.evals, prepared.runs, config.timeoutMs, {\n configJudge: config.judge,\n ...(overrides.keepSandbox === undefined ? {} : { keepSandbox: overrides.keepSandbox }),\n });\n const maxConcurrency = overrides.maxConcurrency\n ?? config.maxConcurrency\n ?? recommendedConcurrencyForPreparedPairs([...target.preparedPairsByKey.values()]);\n const maxBuildConcurrency = overrides.maxBuildConcurrency\n ?? config.maxBuildConcurrency\n ?? 2;\n const maxSetupPrefixConcurrency = overrides.maxSetupPrefixConcurrency\n ?? config.maxSetupPrefixConcurrency\n ?? 2;\n if (!Number.isInteger(maxConcurrency) || maxConcurrency <= 0) {\n return yield* Effect.fail(new Error(`maxConcurrency must be a positive integer, got ${maxConcurrency}.`));\n }\n if (!Number.isInteger(maxBuildConcurrency) || maxBuildConcurrency <= 0) {\n return yield* Effect.fail(new Error(`maxBuildConcurrency must be a positive integer, got ${maxBuildConcurrency}.`));\n }\n if (!Number.isInteger(maxSetupPrefixConcurrency) || maxSetupPrefixConcurrency <= 0) {\n return yield* Effect.fail(new Error(`maxSetupPrefixConcurrency must be a positive integer, got ${maxSetupPrefixConcurrency}.`));\n }\n const uniqueEvalIds = new Set(prepared.runs.flatMap((run) => run.selectedEvalIds));\n const totalAttempts = prepared.runs.reduce((sum, run) => sum + run.selectedEvalIds.length * run.attempts, 0);\n const experimentConcurrency = Object.freeze(Object.fromEntries(prepared.runs.flatMap((run) => run.experimentId !== undefined && run.maxConcurrency !== undefined\n ? [[run.experimentId, run.maxConcurrency] as const]\n : [])));\n const shape: ExperimentHostInvocationShape = Object.freeze({\n experiments: prepared.runs.length,\n evals: uniqueEvalIds.size,\n configurations: prepared.runs.length,\n totalAttempts,\n attempts: Math.max(1, ...prepared.runs.map((run) => run.attempts)),\n maxConcurrency,\n maxBuildConcurrency,\n maxSetupPrefixConcurrency,\n experimentConcurrency,\n });\n const reuse = yield* prepareRunnerRecordReuse({\n evals: prepared.selected.evals,\n runs: prepared.runs,\n config: { timeoutMs: config.timeoutMs },\n plannedFingerprints: target.plannedFingerprints,\n plannedConfigHashes: target.plannedConfigHashes,\n ...(overrides.rerun === undefined ? {} : { rerun: overrides.rerun }),\n ...(overrides.keepSandbox === undefined ? {} : { keepSandbox: overrides.keepSandbox }),\n });\n const previewStartedAt = input.preview === true ? yield* Clock.currentTimeMillis : undefined;\n const preview = previewStartedAt !== undefined\n ? yield* Effect.scoped(withRunnerCurrentReusePreview({\n recordRoot: root.success,\n startedAt: previewStartedAt,\n evals: prepared.selected.evals,\n runs: prepared.runs,\n reuse,\n use: ({ reusePlan, readReadbacks }) => Effect.gen(function* () {\n const readbacks = yield* readReadbacks();\n const pairs = new Map(reusePlan.slots.map((slot) => [\n JSON.stringify([slot.experimentId, slot.evalId]),\n [slot.experimentId, slot.evalId] as const,\n ]));\n const projectDatabaseRoot = recordRootPaths(root.success)?.portableRoot;\n if (projectDatabaseRoot === undefined)\n return yield* Effect.fail(new Error(\"Record root is unavailable.\"));\n const locked = yield* Effect.all([...pairs].map(([key, [experimentId, evalId]]) => readCaseLockEffect(projectDatabaseRoot, experimentId, evalId).pipe(Effect.catch(() => Effect.succeed(undefined)), Effect.map((record) => record !== undefined ? key : undefined))), { concurrency: \"unbounded\" });\n return dryPlan(reusePlan.slots, readbacks.map(projectCurrentReuseReadback), locked.filter((key): key is string => key !== undefined), new Map(prepared.selected.evals.flatMap((definition) => definition.evalGroup === undefined\n ? []\n : [[definition.id, {\n id: definition.evalGroup.id,\n index: definition.evalGroup.evalIds.indexOf(definition.id),\n }] as const])));\n }),\n }))\n : undefined;\n const plan = Object.freeze({}) as ExperimentHostInvocationPlan;\n invocationPlans.set(plan, {\n evals: prepared.selected.evals,\n runs: prepared.runs,\n config,\n recordRoot: root.success,\n coordinationRoot: resolve(input.cwd, input.coordinationRoot ?? \".niceeval\"),\n overrides,\n shape,\n consumed: false,\n });\n const occurrenceAudits = new Map<string, ExperimentHostJsonValue>();\n for (const pair of target.preparedPairsByKey.values()) {\n for (const occurrence of pair.plugin.occurrences) {\n const audit = jsonSnapshot(occurrence.audit);\n if (audit !== undefined)\n occurrenceAudits.set(JSON.stringify(audit), audit);\n }\n }\n return Object.freeze({\n status: \"ready\" as const,\n plan,\n shape,\n experimentIds: freezeArray(prepared.runs.map((run) => run.experimentId!)),\n evalIds: freezeArray(uniqueEvalIds),\n pluginAudit: Object.freeze({ occurrences: freezeArray(occurrenceAudits.values()) }),\n ...(preview === undefined ? {} : { dry: preview }),\n });\n }));\n}\nfunction multiplexFeedbackSink(feedback: FeedbackSink | undefined, session: SessionTracker | undefined, isFeedbackStarted: () => boolean): FeedbackSink {\n const forward = <A extends unknown[]>(method: (sink: FeedbackSink, ...args: A) => void, ...args: A): void => {\n if (!isFeedbackStarted() || feedback === undefined)\n return;\n method(feedback, ...args);\n };\n return {\n activity: (detail) => forward((sink, value) => sink.activity(value), detail),\n diagnostic: (input) => forward((sink, value) => sink.diagnostic(value), input),\n interrupted: () => forward((sink) => sink.interrupted()),\n reporterError: (input) => forward((sink, value) => sink.reporterError(value), input),\n failure: (input) => forward((sink, value) => sink.failure(value), input),\n budgetExhausted: (input) => forward((sink, value) => sink.budgetExhausted(value), input),\n kept: (input) => forward((sink, value) => sink.kept(value), input),\n experimentHook: (input) => {\n session?.onInvocationEvent({ type: \"experiment-hook\", ...input });\n forward((sink, value) => sink.experimentHook(value), input);\n },\n precheck: (input) => forward((sink, value) => sink.precheck(value), input),\n lockWait: (input) => {\n session?.onInvocationEvent({ type: \"lock-wait\", ...input });\n forward((sink, value) => sink.lockWait(value), input);\n },\n runActivity: (input) => forward((sink, value) => sink.runActivity(value), input),\n experimentProgress: (input) => forward((sink, value) => sink.experimentProgress(value), input),\n lifecycle: (event) => {\n if (event.type === \"attempt:queued\" ||\n event.type === \"attempt:start\" ||\n event.type === \"attempt:complete\" ||\n event.type === \"attempt:early-exit\") {\n session?.onInvocationEvent(event);\n }\n forward((sink, value) => sink.lifecycle(value), event);\n },\n };\n}\nfunction summaryOf(summary: InvocationSummary): ExperimentHostInvocationSummary {\n return Object.freeze({\n total: summary.passed + summary.failed + summary.skipped + summary.errored,\n passed: summary.passed,\n failed: summary.failed,\n skipped: summary.skipped,\n errored: summary.errored,\n durationMs: summary.durationMs,\n ...(summary.usage?.inputTokens === undefined ? {} : { inputTokens: summary.usage.inputTokens }),\n ...(summary.usage?.outputTokens === undefined ? {} : { outputTokens: summary.usage.outputTokens }),\n ...(summary.estimatedCostUSD === undefined ? {} : { estimatedCostUSD: summary.estimatedCostUSD }),\n setupPrefixes: summary.setupPrefixes,\n });\n}\nexport function runInvocation(input: ExperimentHostInvocationRunRequest): Effect.Effect<ExperimentHostInvocationResult, ExperimentHostError, ExperimentHostRequirements> {\n return Effect.scoped(closeOperation(\"invocation-run\", Effect.gen(function* () {\n const state = invocationPlans.get(input.plan as object);\n if (state === undefined || state.consumed) {\n return yield* Effect.fail(new Error(\"Experiment Host invocation plan is forged, copied, or already consumed.\"));\n }\n state.consumed = true;\n let completedSummary: InvocationSummary | undefined;\n const reporters = [\n ...(input.junitPath === undefined ? [] : [{\n reporter: JUnit(input.junitPath),\n name: \"junit\",\n required: true,\n target: input.junitPath,\n }]),\n ...(state.config.reporters ?? []).map((reporter, index) => ({\n reporter,\n name: `config-reporter-${index}`,\n required: false,\n })),\n {\n name: \"experiment-host-summary\",\n required: false,\n reporter: { onInvocationComplete(summary: InvocationSummary) { completedSummary = summary; } },\n },\n ];\n // Session indexing is a Host-owned, project-local observation. Runner only\n // receives the private tracker mechanism; this enclosing Scope closes its\n // heartbeat worker on success, typed failure, or interruption.\n const projectDatabaseRoot = recordRootPaths(state.recordRoot)?.portableRoot;\n if (projectDatabaseRoot === undefined)\n return yield* Effect.fail(new Error(\"Record root is unavailable.\"));\n const projectStateDatabase = yield* ProjectStateDatabase;\n const session = new SessionTracker(projectDatabaseRoot, projectStateDatabase);\n let sessionClosed = false;\n let feedbackStarted = false;\n let feedbackFinished = false;\n // Registered first so LIFO Scope closure runs every business finalizer\n // (including the session heartbeat stop and fenced terminal write) before\n // shutting down the sole operational worker and entering the one portable gate.\n // Portability is best-effort during Scope release: an already-corrupt or\n // unavailable database must not replace the Invocation's primary outcome.\n // The explicit service operation remains typed for callers that need to\n // diagnose a gate failure directly.\n yield* Effect.addFinalizer(() => projectStateDatabase.closeInvocationPortable(projectDatabaseRoot).pipe(Effect.ignore));\n yield* Effect.addFinalizer(() => sessionClosed\n ? Effect.void\n : session.close({ status: \"incomplete\" }).pipe(Effect.ignore));\n yield* Effect.addFinalizer(() => !feedbackStarted || feedbackFinished || input.feedback === undefined\n ? Effect.void\n : Effect.tryPromise({\n try: () => input.feedback!.coordinator.stopDynamic(),\n catch: () => undefined,\n }).pipe(Effect.ignore));\n const feedback = input.feedback?.coordinator;\n const sink = multiplexFeedbackSink(feedback, session, () => feedbackStarted);\n const receipt = yield* Effect.acquireUseRelease(Effect.sync(() => activateFeedbackSink(sink)), () => runEvals({\n config: state.config,\n evals: state.evals,\n agentRuns: state.runs,\n reporters,\n maxConcurrency: state.shape.maxConcurrency,\n maxBuildConcurrency: state.shape.maxBuildConcurrency,\n maxSetupPrefixConcurrency: state.shape.maxSetupPrefixConcurrency,\n coordinationRoot: state.coordinationRoot,\n recordRoot: state.recordRoot,\n ...(state.overrides.keepSandbox === undefined ? {} : { keepSandbox: state.overrides.keepSandbox }),\n ...(state.overrides.rerun === undefined ? {} : { rerun: state.overrides.rerun }),\n session,\n ...(input.signal === undefined ? {} : { signal: input.signal }),\n onCurrentRecordReusePlan: (current) => Effect.sync(() => {\n if (feedback === undefined)\n return;\n feedback.start({\n shape: Object.freeze({\n evals: state.shape.evals,\n configs: state.shape.configurations,\n totalAttempts: state.shape.totalAttempts,\n maxConcurrency: state.shape.maxConcurrency,\n runIds: current.runIds,\n }),\n ...(Object.keys(state.shape.experimentConcurrency).length === 0\n ? {}\n : { experimentConcurrency: state.shape.experimentConcurrency }),\n reused: current.reused,\n ...(current.reusedFailures.length === 0\n ? {}\n : { reusedFailures: current.reusedFailures }),\n });\n feedbackStarted = true;\n }),\n }), (deactivate) => Effect.sync(deactivate));\n const summary = completedSummary;\n if (summary === undefined) {\n return yield* Effect.fail(new Error(\"Runner completed without an invocation summary.\"));\n }\n if (feedback !== undefined && !feedbackStarted) {\n return yield* Effect.fail(new Error(\"Runner completed without starting Experiment feedback.\"));\n }\n const completion = feedback === undefined\n ? undefined\n : assembleInvocationCompletion(feedback.state);\n yield* session.close({\n status: completion?.status ?? (receipt.completion === \"completed\"\n ? \"complete\"\n : receipt.completion === \"interrupted\"\n ? \"interrupted\"\n : \"incomplete\"),\n ...(completion === undefined ? {} : { completion }),\n receipt,\n ...(receipt.completedAt === undefined ? {} : { completedAt: receipt.completedAt }),\n });\n sessionClosed = true;\n if (feedback !== undefined && completion !== undefined) {\n yield* Effect.tryPromise({\n try: () => feedback.finish({ summary, completion, receipt }),\n catch: (cause) => cause,\n });\n feedbackFinished = true;\n }\n const foldedStats = completion === undefined ? undefined : foldInvocationEvalStats(summary);\n return Object.freeze({\n status: \"finished\" as const,\n receipt: Object.freeze({\n invocationId: receipt.invocationId,\n createdRunIds: freezeArray(receipt.createdRunIds),\n publicationCutoff: receipt.publicationCutoff,\n startedAt: receipt.startedAt,\n ...(receipt.completedAt === undefined ? {} : { completedAt: receipt.completedAt }),\n completion: receipt.completion,\n }),\n summary: summaryOf(summary),\n ...(completion === undefined ? {} : {\n completion,\n exitCode: computeExitCode({\n ...summary,\n failed: foldedStats!.failed,\n errored: foldedStats!.errored,\n }, completion),\n }),\n });\n })));\n}\nfunction freezeRenamePlan(plan: RunnerExperimentRenamePlan): ExperimentHostRenamePlan {\n return Object.freeze({\n status: \"plan\",\n oldId: plan.oldId,\n newId: plan.newId,\n migrations: freezeArray(plan.migrations.map((entry) => Object.freeze({ ...entry }))),\n excluded: freezeArray(plan.excluded.map((entry) => Object.freeze({ ...entry }))),\n ...(plan.blocked === undefined ? {} : { blocked: Object.freeze({\n ...plan.blocked,\n ...(plan.blocked.conflictingEvals === undefined\n ? {}\n : { conflictingEvals: freezeArray(plan.blocked.conflictingEvals) }),\n }) }),\n });\n}\nexport function planRename(input: ExperimentHostRenameRequest): Effect.Effect<ExperimentHostRenamePlan, ExperimentHostError, ExperimentHostRequirements> {\n return closeOperation(\"rename-plan\", planExperimentRename({ ...input, recordRoot: undefined }).pipe(Effect.map(freezeRenamePlan)));\n}\nexport function applyRename(input: ExperimentHostRenameRequest): Effect.Effect<ExperimentHostRenameResult, ExperimentHostError, ExperimentHostRequirements> {\n return closeOperation(\"rename-apply\", Effect.gen(function* () {\n const outcome = yield* Effect.result(renameExperiment({ ...input, recordRoot: undefined }));\n if (Result.isFailure(outcome)) {\n if (!(outcome.failure instanceof ExperimentRenameError))\n return yield* Effect.fail(outcome.failure);\n return Object.freeze({\n status: \"rejected\" as const,\n oldId: input.oldId,\n newId: input.newId,\n reason: outcome.failure.reason,\n ...(outcome.failure.plan?.blocked?.evalId === undefined ? {} : { evalId: outcome.failure.plan.blocked.evalId }),\n ...(outcome.failure.plan?.blocked?.conflictingEvals === undefined\n ? {}\n : { conflictingEvals: freezeArray(outcome.failure.plan.blocked.conflictingEvals) }),\n ...(outcome.failure.message === \"\" ? {} : { detail: outcome.failure.message }),\n }) satisfies ExperimentHostRenameResult;\n }\n const done = outcome.success;\n return Object.freeze({\n status: \"done\" as const,\n invocationId: done.invocationId,\n runId: done.runId,\n snapshotPath: done.snapshotPath,\n oldId: done.oldId,\n newId: done.newId,\n migrated: freezeArray(done.migrated.map((entry) => Object.freeze({\n evalId: entry.evalId,\n sourceLocator: entry.sourceLocator,\n locator: entry.locator,\n fingerprint: entry.fingerprint,\n verdict: entry.verdict,\n }))),\n }) satisfies ExperimentHostRenameResult;\n }));\n}\nexport function accept(input: ExperimentHostAcceptRequest): Effect.Effect<readonly ExperimentHostAcceptedAttempt[], ExperimentHostError, ExperimentHostRequirements> {\n return closeOperation(\"accept\", acceptLocators({ ...input, recordRoot: undefined }).pipe(Effect.map((receipts) => freezeArray(receipts.map((receipt) => Object.freeze({\n invocationId: receipt.invocationId,\n runId: receipt.runId,\n slotId: receipt.slotId,\n locator: receipt.locator,\n sourceLocator: receipt.sourceLocator,\n fingerprint: receipt.fingerprint,\n }))))));\n}\nexport function planRunAccept(input: ExperimentHostAcceptRunRequest): Effect.Effect<ExperimentHostAcceptRunPlan, ExperimentHostError, ExperimentHostRequirements> {\n return closeOperation(\"accept\", planAcceptRun({ ...input, recordRoot: undefined }).pipe(Effect.map((plan) => Object.freeze({\n sourceRunId: plan.sourceRunId,\n members: freezeArray(plan.members.map((member) => Object.freeze({\n locator: member.locator,\n experimentId: member.experimentId,\n evalId: member.evalId,\n attempt: member.attempt,\n fingerprint: member.fingerprint,\n }))),\n }))));\n}\nexport function applyRunAccept(input: ExperimentHostAcceptRunRequest): Effect.Effect<readonly ExperimentHostAcceptedAttempt[], ExperimentHostError, ExperimentHostRequirements> {\n return closeOperation(\"accept\", acceptRun({ ...input, recordRoot: undefined }).pipe(Effect.map((receipts) => freezeArray(receipts.map((receipt) => Object.freeze({\n invocationId: receipt.invocationId,\n runId: receipt.runId,\n slotId: receipt.slotId,\n locator: receipt.locator,\n sourceLocator: receipt.sourceLocator,\n fingerprint: receipt.fingerprint,\n }))))));\n}\n"]}
@@ -6,7 +6,6 @@ const effect_1 = require("effect");
6
6
  const current_ts_1 = require("../record/family/current.cjs");
7
7
  const codec_ts_1 = require("./codec.cjs");
8
8
  const facts_ts_1 = require("./facts.cjs");
9
- const limits_ts_1 = require("./limits.cjs");
10
9
  const trace_ts_1 = require("./trace.cjs");
11
10
  /**
12
11
  * Selects the latest sealed occurrence of every Experiment/Eval/ordinal Slot
@@ -16,9 +15,9 @@ function selectInspectionOverview(facts, supportingRuns) {
16
15
  const runs = isLoadedInspectionRuns(facts) ? facts : (0, facts_ts_1.loadInspectionRuns)(facts);
17
16
  const selected = selectLatestSlots(runs, supportingRuns ?? runs);
18
17
  const cells = groupSelectedSlots(selected, ({ target, slot }) => `${target.run.experimentId}\u0000${slot.evalId}`)
19
- .map((slots) => makeCell(slots));
18
+ .map((slots) => makeCell(slots, inspectionLabelKeys(selected.filter(({ target }) => target.run.experimentId === slots[0]?.target.run.experimentId))));
20
19
  const experiments = groupSelectedSlots(selected, ({ target }) => target.run.experimentId)
21
- .map((slots) => makeExperiment(slots, cells.filter(({ experimentId }) => experimentId === slots[0]?.target.run.experimentId)));
20
+ .map((slots) => makeExperiment(slots, cells.filter(({ experimentId }) => experimentId === slots[0]?.target.run.experimentId), inspectionLabelKeys(slots)));
22
21
  return closeOverview({
23
22
  totals: aggregate(selected, scoreFromCells(cells)),
24
23
  experiments,
@@ -156,7 +155,7 @@ function analyzeAttempt(resolved, target, member, slot) {
156
155
  ref,
157
156
  });
158
157
  }
159
- function makeCell(slots) {
158
+ function makeCell(slots, labelKeys) {
160
159
  const first = slots[0];
161
160
  if (first === undefined)
162
161
  throw new Error("Overview cell cannot be empty");
@@ -172,12 +171,13 @@ function makeCell(slots) {
172
171
  slotId: selected.slot.slotId,
173
172
  evalId: selected.slot.evalId,
174
173
  attemptOrdinal: selected.slot.attemptOrdinal,
174
+ labels: inspectionLabels([selected], labelKeys),
175
175
  publication: overviewPublication(selected),
176
176
  });
177
177
  })),
178
178
  });
179
179
  }
180
- function makeExperiment(slots, cells) {
180
+ function makeExperiment(slots, cells, labelKeys) {
181
181
  const first = slots[0];
182
182
  if (first === undefined)
183
183
  throw new Error("Overview Experiment cannot be empty");
@@ -204,6 +204,7 @@ function makeExperiment(slots, cells) {
204
204
  experimentId: first.target.run.experimentId,
205
205
  agent: executionValue(slots.map(({ target }) => target.run.context.execution.agentId)),
206
206
  model: executionValue(slots.map(({ target }) => target.run.context.execution.model)),
207
+ labels: inspectionLabels(slots, labelKeys),
207
208
  ...aggregate(slots, scoreFromCells(cells)),
208
209
  groups: Object.freeze(groups),
209
210
  });
@@ -306,6 +307,7 @@ function overviewPublication(selected) {
306
307
  attemptLocator: resolved.locator,
307
308
  originRunId: member.attempt.originRunId,
308
309
  originSlotId: resolved.attempt.slotId,
310
+ verdict: selected.analysis.verdict,
309
311
  score: scoreForMember(selected),
310
312
  costUSD: costForSlots([selected]),
311
313
  durationMs: metricForSlots([selected], "durationMs", "ms", "average"),
@@ -321,6 +323,19 @@ function executionValue(values) {
321
323
  ? Object.freeze({ state: "unavailable" })
322
324
  : Object.freeze({ state: "available", value });
323
325
  }
326
+ function inspectionLabelKeys(slots) {
327
+ return Object.freeze([...new Set(slots.flatMap(({ target }) => Object.keys(target.run.context.labels)))].sort(compareText));
328
+ }
329
+ function inspectionLabels(slots, keys) {
330
+ const targets = new Map();
331
+ for (const { target } of slots)
332
+ targets.set(target.run.runId, target);
333
+ const runs = [...targets.values()];
334
+ return Object.freeze(Object.fromEntries(keys.map((key) => [
335
+ key,
336
+ executionValue(runs.map(({ run }) => run.context.labels[key] ?? null)),
337
+ ])));
338
+ }
324
339
  function costUSDOf(resolved) {
325
340
  const attachment = (0, facts_ts_1.attemptAttachment)(resolved, current_ts_1.NiceEvalRecordAttachments.attemptCost.family);
326
341
  if (attachment === undefined ||
@@ -696,10 +711,6 @@ function closeOverview(value) {
696
711
  if (isInspectionCodecError(closed)) {
697
712
  throw closed;
698
713
  }
699
- const bytes = new TextEncoder().encode(JSON.stringify(closed)).byteLength;
700
- if (bytes > limits_ts_1.INSPECTION_RESULT_BYTE_LIMIT) {
701
- throw new Error(`Inspection Overview exceeds its fixed ${limits_ts_1.INSPECTION_RESULT_BYTE_LIMIT}-byte limit`);
702
- }
703
714
  return closed;
704
715
  }
705
716
  function isInspectionCodecError(value) {