niceeval 0.13.1 → 0.13.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/INDEX.md +25 -2
- package/README.md +9 -10
- package/README.zh.md +9 -10
- package/dist/agents/ai-sdk.cjs.map +1 -1
- package/dist/agents/ai-sdk.d.cts +1 -1
- package/dist/agents/ai-sdk.d.mts +1 -1
- package/dist/agents/ai-sdk.d.ts +1 -1
- package/dist/agents/bub-install-spec.cjs +19 -5
- package/dist/agents/bub-install-spec.cjs.map +1 -1
- package/dist/agents/bub-install-spec.d.cts +9 -2
- package/dist/agents/bub-install-spec.d.mts +9 -2
- package/dist/agents/bub-install-spec.d.ts +9 -2
- package/dist/agents/bub-install-spec.js +14 -12
- package/dist/agents/bub.cjs +10 -6
- package/dist/agents/bub.cjs.map +1 -1
- package/dist/agents/bub.d.cts +2 -2
- package/dist/agents/bub.d.mts +2 -2
- package/dist/agents/bub.d.ts +2 -2
- package/dist/agents/claude-code.cjs.map +1 -1
- package/dist/agents/claude-code.d.cts +2 -2
- package/dist/agents/claude-code.d.mts +2 -2
- package/dist/agents/claude-code.d.ts +2 -2
- package/dist/agents/codex.cjs +4 -4
- package/dist/agents/codex.cjs.map +1 -1
- package/dist/agents/codex.d.cts +3 -3
- package/dist/agents/codex.d.mts +3 -3
- package/dist/agents/codex.d.ts +3 -3
- package/dist/agents/coding-cli-versions.cjs +10 -1
- package/dist/agents/coding-cli-versions.cjs.map +1 -1
- package/dist/agents/coding-cli-versions.d.cts +8 -3
- package/dist/agents/coding-cli-versions.d.mts +8 -3
- package/dist/agents/coding-cli-versions.d.ts +8 -3
- package/dist/agents/coding-cli-versions.js +18 -12
- package/dist/agents/deepseek-harness.cjs +151 -0
- package/dist/agents/deepseek-harness.cjs.map +1 -0
- package/dist/agents/deepseek-harness.d.cts +14 -0
- package/dist/agents/deepseek-harness.d.mts +14 -0
- package/dist/agents/deepseek-harness.d.ts +14 -0
- package/dist/agents/deepseek-harness.js +7 -0
- package/dist/agents/deepseek-harness.js.map +1 -0
- package/dist/agents/exact-npm-plugins.cjs +28 -0
- package/dist/agents/exact-npm-plugins.cjs.map +1 -0
- package/dist/agents/exact-npm-plugins.d.cts +10 -0
- package/dist/agents/exact-npm-plugins.d.mts +10 -0
- package/dist/agents/exact-npm-plugins.d.ts +10 -0
- package/dist/agents/exact-npm-plugins.js +8 -0
- package/dist/agents/exact-npm-plugins.js.map +1 -0
- package/dist/agents/index.cjs +5 -1
- package/dist/agents/index.cjs.map +1 -1
- package/dist/agents/index.d.cts +4 -0
- package/dist/agents/index.d.mts +4 -0
- package/dist/agents/index.d.ts +4 -0
- package/dist/agents/index.js +54 -50
- package/dist/agents/index.mjs +54 -50
- package/dist/agents/omp.cjs +170 -0
- package/dist/agents/omp.cjs.map +1 -0
- package/dist/agents/omp.d.cts +14 -0
- package/dist/agents/omp.d.mts +14 -0
- package/dist/agents/omp.d.ts +14 -0
- package/dist/agents/omp.js +7 -0
- package/dist/agents/omp.js.map +1 -0
- package/dist/agents/openclaw.cjs +51 -2
- package/dist/agents/openclaw.cjs.map +1 -1
- package/dist/agents/openclaw.d.cts +2 -0
- package/dist/agents/openclaw.d.mts +2 -0
- package/dist/agents/openclaw.d.ts +2 -0
- package/dist/agents/types.cjs.map +1 -1
- package/dist/agents/types.d.cts +4 -4
- package/dist/agents/types.d.mts +4 -4
- package/dist/agents/types.d.ts +4 -4
- package/dist/agents/ui-message-stream.cjs +24 -7
- package/dist/agents/ui-message-stream.cjs.map +1 -1
- package/dist/analysis/api.cjs +28 -2
- package/dist/analysis/api.cjs.map +1 -1
- package/dist/analysis/api.d.cts +22 -1
- package/dist/analysis/api.d.mts +22 -1
- package/dist/analysis/api.d.ts +22 -1
- package/dist/analysis/api.js +8 -6
- package/dist/analysis/bindings.cjs +11 -18
- package/dist/analysis/bindings.cjs.map +1 -1
- package/dist/analysis/bindings.d.cts +177 -49
- package/dist/analysis/bindings.d.mts +177 -49
- package/dist/analysis/bindings.d.ts +177 -49
- package/dist/analysis/contracts.cjs +1 -0
- package/dist/analysis/contracts.cjs.map +1 -1
- package/dist/analysis/contracts.d.cts +43 -3
- package/dist/analysis/contracts.d.mts +43 -3
- package/dist/analysis/contracts.d.ts +43 -3
- package/dist/analysis/cost-projection.cjs +2 -1
- package/dist/analysis/cost-projection.cjs.map +1 -1
- package/dist/analysis/cost-projection.d.cts +1 -1
- package/dist/analysis/cost-projection.d.mts +1 -1
- package/dist/analysis/cost-projection.d.ts +1 -1
- package/dist/analysis/cost.cjs +13 -3
- package/dist/analysis/cost.cjs.map +1 -1
- package/dist/analysis/cost.d.cts +10 -3
- package/dist/analysis/cost.d.mts +10 -3
- package/dist/analysis/cost.d.ts +10 -3
- package/dist/analysis/experiment-groups.cjs +96 -0
- package/dist/analysis/experiment-groups.cjs.map +1 -0
- package/dist/analysis/experiment-groups.d.cts +9 -0
- package/dist/analysis/experiment-groups.d.mts +9 -0
- package/dist/analysis/experiment-groups.d.ts +9 -0
- package/dist/analysis/experiment-groups.js +10 -0
- package/dist/analysis/experiment-groups.js.map +1 -0
- package/dist/analysis/index.cjs +4 -1
- package/dist/analysis/index.cjs.map +1 -1
- package/dist/analysis/index.d.cts +4 -2
- package/dist/analysis/index.d.mts +4 -2
- package/dist/analysis/index.d.ts +4 -2
- package/dist/analysis/index.js +40 -36
- package/dist/analysis/index.mjs +40 -36
- package/dist/assertions/limits.cjs +4 -0
- package/dist/assertions/limits.cjs.map +1 -1
- package/dist/assertions/limits.d.cts +4 -0
- package/dist/assertions/limits.d.mts +4 -0
- package/dist/assertions/limits.d.ts +4 -0
- package/dist/assertions/match.cjs +63 -25
- package/dist/assertions/match.cjs.map +1 -1
- package/dist/assertions/match.d.cts +7 -0
- package/dist/assertions/match.d.mts +7 -0
- package/dist/assertions/match.d.ts +7 -0
- package/dist/assertions/record/attachment.cjs +32 -4
- package/dist/assertions/record/attachment.cjs.map +1 -1
- package/dist/assertions/record/diff.cjs +10 -4
- package/dist/assertions/record/diff.cjs.map +1 -1
- package/dist/assertions/record/producer.cjs +101 -4
- package/dist/assertions/record/producer.cjs.map +1 -1
- package/dist/assertions/record/producer.d.cts +4 -1
- package/dist/assertions/record/producer.d.mts +4 -1
- package/dist/assertions/record/producer.d.ts +4 -1
- package/dist/assertions/runtime.cjs +45 -5
- package/dist/assertions/runtime.cjs.map +1 -1
- package/dist/cli/record.cjs +113 -8
- package/dist/cli/record.cjs.map +1 -1
- package/dist/cli/record.d.cts +20 -1
- package/dist/cli/record.d.mts +20 -1
- package/dist/cli/record.d.ts +20 -1
- package/dist/cli/record.js +4 -2
- package/dist/cli.cjs +386 -31
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.d.cts +10 -2
- package/dist/cli.d.mts +10 -2
- package/dist/cli.d.ts +10 -2
- package/dist/context/send-retry.cjs +4 -4
- package/dist/context/send-retry.cjs.map +1 -1
- package/dist/coordination/host/runtime.cjs +8 -30
- package/dist/coordination/host/runtime.cjs.map +1 -1
- package/dist/coordination/host/runtime.d.cts +3 -3
- package/dist/coordination/host/runtime.d.mts +3 -3
- package/dist/coordination/host/runtime.d.ts +3 -3
- package/dist/coordination/host/types.cjs.map +1 -1
- package/dist/coordination/host/types.d.cts +0 -5
- package/dist/coordination/host/types.d.mts +0 -5
- package/dist/coordination/host/types.d.ts +0 -5
- package/dist/coordination/platform/node.cjs +90 -9
- package/dist/coordination/platform/node.cjs.map +1 -1
- package/dist/define.cjs +25 -1
- package/dist/define.cjs.map +1 -1
- package/dist/experiment/host/index.cjs +1 -0
- package/dist/experiment/host/index.cjs.map +1 -1
- package/dist/i18n/en.cjs +26 -8
- package/dist/i18n/en.cjs.map +1 -1
- package/dist/i18n/en.d.cts +19 -6
- package/dist/i18n/en.d.mts +19 -6
- package/dist/i18n/en.d.ts +19 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/o11y/parsers/hermes.cjs +1 -1
- package/dist/o11y/parsers/hermes.cjs.map +1 -1
- package/dist/o11y/prices.json +1 -1
- package/dist/o11y/record/families.cjs +12 -3
- package/dist/o11y/record/families.cjs.map +1 -1
- package/dist/o11y/record/families.d.cts +8 -8
- package/dist/o11y/record/families.d.mts +8 -8
- package/dist/o11y/record/families.d.ts +8 -8
- package/dist/o11y/record/family-projectors.d.cts +66 -18
- package/dist/o11y/record/family-projectors.d.mts +66 -18
- package/dist/o11y/record/family-projectors.d.ts +66 -18
- package/dist/o11y/record/family-writers.d.cts +11 -3
- package/dist/o11y/record/family-writers.d.mts +11 -3
- package/dist/o11y/record/family-writers.d.ts +11 -3
- package/dist/o11y/record/runner-producer.cjs +14 -4
- package/dist/o11y/record/runner-producer.cjs.map +1 -1
- package/dist/record/codec/core.d.cts +2 -2
- package/dist/record/codec/core.d.mts +2 -2
- package/dist/record/codec/core.d.ts +2 -2
- package/dist/record/family/catalog.d.cts +44 -12
- package/dist/record/family/catalog.d.mts +44 -12
- package/dist/record/family/catalog.d.ts +44 -12
- package/dist/record/family/index.js +128 -124
- package/dist/record/family/observability-v1.cjs +35 -0
- package/dist/record/family/observability-v1.cjs.map +1 -0
- package/dist/record/family/observability-v1.d.cts +3 -0
- package/dist/record/family/observability-v1.d.mts +3 -0
- package/dist/record/family/observability-v1.d.ts +3 -0
- package/dist/record/family/observability-v1.js +6 -0
- package/dist/record/family/observability-v1.js.map +1 -0
- package/dist/record/family/observability.cjs +58 -9
- package/dist/record/family/observability.cjs.map +1 -1
- package/dist/record/family/observability.d.cts +1014 -15
- package/dist/record/family/observability.d.mts +1014 -15
- package/dist/record/family/observability.d.ts +1014 -15
- package/dist/record/family/observability.js +22 -18
- package/dist/record/host/runtime.cjs +600 -31
- package/dist/record/host/runtime.cjs.map +1 -1
- package/dist/record/host/types.cjs.map +1 -1
- package/dist/record/host/types.d.cts +33 -9
- package/dist/record/host/types.d.mts +33 -9
- package/dist/record/host/types.d.ts +33 -9
- package/dist/record/maintenance/runtime.cjs +1 -2
- package/dist/record/maintenance/runtime.cjs.map +1 -1
- package/dist/record/model/core.cjs.map +1 -1
- package/dist/record/model/core.d.cts +1 -1
- package/dist/record/model/core.d.mts +1 -1
- package/dist/record/model/core.d.ts +1 -1
- package/dist/record/model/definition.d.cts +6 -6
- package/dist/record/model/definition.d.mts +6 -6
- package/dist/record/model/definition.d.ts +6 -6
- package/dist/record/model/identifiers.cjs +1 -1
- package/dist/record/model/identifiers.cjs.map +1 -1
- package/dist/record/model/identifiers.d.cts +1 -1
- package/dist/record/model/identifiers.d.mts +1 -1
- package/dist/record/model/identifiers.d.ts +1 -1
- package/dist/record/platform/node.cjs +159 -23
- package/dist/record/platform/node.cjs.map +1 -1
- package/dist/record/platform/services.cjs.map +1 -1
- package/dist/record/platform/services.d.cts +15 -2
- package/dist/record/platform/services.d.mts +15 -2
- package/dist/record/platform/services.d.ts +15 -2
- package/dist/record/reader/errors.cjs +37 -1
- package/dist/record/reader/errors.cjs.map +1 -1
- package/dist/record/reader/errors.d.cts +49 -1
- package/dist/record/reader/errors.d.mts +49 -1
- package/dist/record/reader/errors.d.ts +49 -1
- package/dist/record/reader/errors.js +22 -12
- package/dist/record/reader/format.cjs +76 -17
- package/dist/record/reader/format.cjs.map +1 -1
- package/dist/record/reader/format.d.cts +11 -4
- package/dist/record/reader/format.d.mts +11 -4
- package/dist/record/reader/format.d.ts +11 -4
- package/dist/record/reader/format.js +2 -0
- package/dist/record/reader/index.js +32 -18
- package/dist/record/reader/runtime.cjs +64 -0
- package/dist/record/reader/runtime.cjs.map +1 -1
- package/dist/record/reader/runtime.d.cts +15 -0
- package/dist/record/reader/runtime.d.mts +15 -0
- package/dist/record/reader/runtime.d.ts +15 -0
- package/dist/record/reader/runtime.js +2 -0
- package/dist/report/assets/styles.css +53 -29
- package/dist/report/built-in/analysis-values.cjs +21 -13
- package/dist/report/built-in/analysis-values.cjs.map +1 -1
- package/dist/report/built-in/analysis-values.d.cts +11 -22
- package/dist/report/built-in/analysis-values.d.mts +11 -22
- package/dist/report/built-in/analysis-values.d.ts +11 -22
- package/dist/report/built-in/analysis-values.js +4 -6
- package/dist/report/built-in/index.cjs +1 -3
- package/dist/report/built-in/index.cjs.map +1 -1
- package/dist/report/built-in/index.d.cts +1 -1
- package/dist/report/built-in/index.d.mts +1 -1
- package/dist/report/built-in/index.d.ts +1 -1
- package/dist/report/built-in/index.js +4 -8
- package/dist/report/built-in/index.mjs +4 -8
- package/dist/report/built-in/machine.cjs +0 -2
- package/dist/report/built-in/machine.cjs.map +1 -1
- package/dist/report/built-in/machine.d.cts +0 -2
- package/dist/report/built-in/machine.d.mts +0 -2
- package/dist/report/built-in/machine.d.ts +0 -2
- package/dist/report/built-in/result-components.cjs +49 -51
- package/dist/report/built-in/result-components.cjs.map +1 -1
- package/dist/report/built-in/result-components.d.cts +16 -17
- package/dist/report/built-in/result-components.d.mts +16 -17
- package/dist/report/built-in/result-components.d.ts +16 -17
- package/dist/report/built-in/result-components.js +0 -4
- package/dist/report/built-in/run-membership-overview.cjs +126 -17
- package/dist/report/built-in/run-membership-overview.cjs.map +1 -1
- package/dist/report/built-in/run-membership-overview.d.cts +14 -0
- package/dist/report/built-in/run-membership-overview.d.mts +14 -0
- package/dist/report/built-in/run-membership-overview.d.ts +14 -0
- package/dist/report/built-in/run-membership-overview.js +4 -2
- package/dist/report/built-in/standard.cjs +80 -45
- package/dist/report/built-in/standard.cjs.map +1 -1
- package/dist/report/built-in/standard.d.cts +19 -41
- package/dist/report/built-in/standard.d.mts +19 -41
- package/dist/report/built-in/standard.d.ts +19 -41
- package/dist/report/built-in/standard.js +6 -6
- package/dist/report/components/attempt-detail/compute.cjs +78 -2
- package/dist/report/components/attempt-detail/compute.cjs.map +1 -1
- package/dist/report/components/attempt-detail/compute.d.cts +1 -1
- package/dist/report/components/attempt-detail/compute.d.mts +1 -1
- package/dist/report/components/attempt-detail/compute.d.ts +1 -1
- package/dist/report/components/attempt-detail/content.cjs +1 -1
- package/dist/report/components/attempt-detail/content.cjs.map +1 -1
- package/dist/report/components/entity-lists/compute.cjs +42 -5
- package/dist/report/components/entity-lists/compute.cjs.map +1 -1
- package/dist/report/components/entity-lists/compute.d.cts +10 -8
- package/dist/report/components/entity-lists/compute.d.mts +10 -8
- package/dist/report/components/entity-lists/compute.d.ts +10 -8
- package/dist/report/components/entity-lists/content.cjs +31 -6
- package/dist/report/components/entity-lists/content.cjs.map +1 -1
- package/dist/report/components/entity-lists/index.cjs +9 -4
- package/dist/report/components/entity-lists/index.cjs.map +1 -1
- package/dist/report/components/entity-lists/index.d.cts +4 -7
- package/dist/report/components/entity-lists/index.d.mts +4 -7
- package/dist/report/components/entity-lists/index.d.ts +4 -7
- package/dist/report/components/summaries/compute.cjs +8 -1
- package/dist/report/components/summaries/compute.cjs.map +1 -1
- package/dist/report/components/summaries/compute.d.cts +9 -1
- package/dist/report/components/summaries/compute.d.mts +9 -1
- package/dist/report/components/summaries/compute.d.ts +9 -1
- package/dist/report/components/summaries/index.cjs +48 -4
- package/dist/report/components/summaries/index.cjs.map +1 -1
- package/dist/report/components/summaries/index.d.cts +7 -4
- package/dist/report/components/summaries/index.d.mts +7 -4
- package/dist/report/components/summaries/index.d.ts +7 -4
- package/dist/report/definition/cell.cjs +3 -0
- package/dist/report/definition/cell.cjs.map +1 -1
- package/dist/report/definition/cell.d.cts +2 -0
- package/dist/report/definition/cell.d.mts +2 -0
- package/dist/report/definition/cell.d.ts +2 -0
- package/dist/report/definition/primitives/chart.cjs +8 -5
- package/dist/report/definition/primitives/chart.cjs.map +1 -1
- package/dist/report/definition/primitives/points-dataset.cjs +1 -0
- package/dist/report/definition/primitives/points-dataset.cjs.map +1 -1
- package/dist/report/definition/primitives.cjs +15 -2
- package/dist/report/definition/primitives.cjs.map +1 -1
- package/dist/report/definition/report.cjs +27 -3
- package/dist/report/definition/report.cjs.map +1 -1
- package/dist/report/definition/report.d.cts +8 -0
- package/dist/report/definition/report.d.mts +8 -0
- package/dist/report/definition/report.d.ts +8 -0
- package/dist/report/execution/machine.cjs +30 -14
- package/dist/report/execution/machine.cjs.map +1 -1
- package/dist/report/execution/machine.d.cts +20 -10
- package/dist/report/execution/machine.d.mts +20 -10
- package/dist/report/execution/machine.d.ts +20 -10
- package/dist/report/execution/machine.js +6 -6
- package/dist/report/host/execute.cjs +25 -16
- package/dist/report/host/execute.cjs.map +1 -1
- package/dist/report/host/execute.d.cts +4 -0
- package/dist/report/host/execute.d.mts +4 -0
- package/dist/report/host/execute.d.ts +4 -0
- package/dist/report/host/from-record.cjs +22 -5
- package/dist/report/host/from-record.cjs.map +1 -1
- package/dist/report/host/machine.cjs +53 -11
- package/dist/report/host/machine.cjs.map +1 -1
- package/dist/report/host/site-runtime.cjs +9 -8
- package/dist/report/host/site-runtime.cjs.map +1 -1
- package/dist/report/host/site-runtime.d.cts +1 -1
- package/dist/report/host/site-runtime.d.mts +1 -1
- package/dist/report/host/site-runtime.d.ts +1 -1
- package/dist/report/host/static.cjs +56 -9
- package/dist/report/host/static.cjs.map +1 -1
- package/dist/report/index.cjs.map +1 -1
- package/dist/report/index.d.cts +1 -1
- package/dist/report/index.d.mts +1 -1
- package/dist/report/index.d.ts +1 -1
- package/dist/report/model/dataset.cjs +7 -2
- package/dist/report/model/dataset.cjs.map +1 -1
- package/dist/report/model/locale.cjs +2 -0
- package/dist/report/model/locale.cjs.map +1 -1
- package/dist/report/model/locale.d.cts +1 -0
- package/dist/report/model/locale.d.mts +1 -0
- package/dist/report/model/locale.d.ts +1 -0
- package/dist/report/model/metrics.cjs +3 -1
- package/dist/report/model/metrics.cjs.map +1 -1
- package/dist/report/model/pricing.cjs +16 -11
- package/dist/report/model/pricing.cjs.map +1 -1
- package/dist/report/react/styles.css +53 -29
- package/dist/runner/adoption.cjs +1 -0
- package/dist/runner/adoption.cjs.map +1 -1
- package/dist/runner/attempt.cjs +44 -5
- package/dist/runner/attempt.cjs.map +1 -1
- package/dist/runner/attempt.d.cts +13 -1
- package/dist/runner/attempt.d.mts +13 -1
- package/dist/runner/attempt.d.ts +13 -1
- package/dist/runner/config-identity.cjs +10 -2
- package/dist/runner/config-identity.cjs.map +1 -1
- package/dist/runner/config-identity.d.cts +4 -2
- package/dist/runner/config-identity.d.mts +4 -2
- package/dist/runner/config-identity.d.ts +4 -2
- package/dist/runner/feedback/human.cjs +298 -59
- package/dist/runner/feedback/human.cjs.map +1 -1
- package/dist/runner/feedback/json.cjs +14 -6
- package/dist/runner/feedback/json.cjs.map +1 -1
- package/dist/runner/feedback/json.d.cts +3 -2
- package/dist/runner/feedback/json.d.mts +3 -2
- package/dist/runner/feedback/json.d.ts +3 -2
- package/dist/runner/feedback/reducer.cjs +2 -0
- package/dist/runner/feedback/reducer.cjs.map +1 -1
- package/dist/runner/judge-config.cjs +1 -1
- package/dist/runner/judge-config.cjs.map +1 -1
- package/dist/runner/ledger.cjs +124 -12
- package/dist/runner/ledger.cjs.map +1 -1
- package/dist/runner/project-current.cjs +13 -5
- package/dist/runner/project-current.cjs.map +1 -1
- package/dist/runner/run.cjs +564 -256
- package/dist/runner/run.cjs.map +1 -1
- package/dist/runner/sandbox-pool.cjs +161 -30
- package/dist/runner/sandbox-pool.cjs.map +1 -1
- package/dist/runner/sandbox-pool.d.cts +34 -2
- package/dist/runner/sandbox-pool.d.mts +34 -2
- package/dist/runner/sandbox-pool.d.ts +34 -2
- package/dist/runner/shared-state-lease.cjs +803 -0
- package/dist/runner/shared-state-lease.cjs.map +1 -0
- package/dist/runner/shared-state-lease.d.cts +121 -0
- package/dist/runner/shared-state-lease.d.mts +121 -0
- package/dist/runner/shared-state-lease.d.ts +121 -0
- package/dist/runner/shared-state-lease.js +24 -0
- package/dist/runner/shared-state-lease.js.map +1 -0
- package/dist/runner/teardown-registry.cjs +97 -34
- package/dist/runner/teardown-registry.cjs.map +1 -1
- package/dist/runner/teardown-registry.d.cts +27 -1
- package/dist/runner/teardown-registry.d.mts +27 -1
- package/dist/runner/teardown-registry.d.ts +27 -1
- package/dist/runner/teardown-registry.js +20 -16
- package/dist/runner/types.cjs.map +1 -1
- package/dist/runner/types.d.cts +31 -5
- package/dist/runner/types.d.mts +31 -5
- package/dist/runner/types.d.ts +31 -5
- package/dist/sample/analysis.cjs +249 -459
- package/dist/sample/analysis.cjs.map +1 -1
- package/dist/sample/capability.cjs +138 -7
- package/dist/sample/capability.cjs.map +1 -1
- package/dist/sample/capability.d.cts +3 -1
- package/dist/sample/capability.d.mts +3 -1
- package/dist/sample/capability.d.ts +3 -1
- package/dist/sample/capability.js +8 -6
- package/dist/sandbox/docker-agent-image.cjs +5 -1
- package/dist/sandbox/docker-agent-image.cjs.map +1 -1
- package/dist/sandbox/docker-agent-image.d.cts +2 -0
- package/dist/sandbox/docker-agent-image.d.mts +2 -0
- package/dist/sandbox/docker-agent-image.d.ts +2 -0
- package/dist/sandbox/docker-agent-image.js +14 -10
- package/dist/sandbox/docker-profile/schema.cjs +283 -534
- package/dist/sandbox/docker-profile/schema.cjs.map +1 -1
- package/dist/sandbox/docker-profile/schema.d.cts +10 -27
- package/dist/sandbox/docker-profile/schema.d.mts +10 -27
- package/dist/sandbox/docker-profile/schema.d.ts +10 -27
- package/dist/sandbox/e2b-agent-template.cjs +5 -2
- package/dist/sandbox/e2b-agent-template.cjs.map +1 -1
- package/dist/sandbox/index.cjs +4 -2
- package/dist/sandbox/index.cjs.map +1 -1
- package/dist/sandbox/index.d.cts +1 -1
- package/dist/sandbox/index.d.mts +1 -1
- package/dist/sandbox/index.d.ts +1 -1
- package/dist/sandbox/index.js +120 -116
- package/dist/sandbox/index.mjs +120 -116
- package/dist/sandbox/keep-registry.cjs +28 -66
- package/dist/sandbox/keep-registry.cjs.map +1 -1
- package/dist/sandbox/types.cjs.map +1 -1
- package/dist/sandbox/types.d.cts +1 -1
- package/dist/sandbox/types.d.mts +1 -1
- package/dist/sandbox/types.d.ts +1 -1
- package/dist/shared/aggregate.cjs +16 -6
- package/dist/shared/aggregate.cjs.map +1 -1
- package/dist/shared/aggregate.d.cts +12 -4
- package/dist/shared/aggregate.d.mts +12 -4
- package/dist/shared/aggregate.d.ts +12 -4
- package/dist/shared/turn-label.cjs +20 -2
- package/dist/shared/turn-label.cjs.map +1 -1
- package/dist/shared/turn-label.d.cts +2 -0
- package/dist/shared/turn-label.d.mts +2 -0
- package/dist/shared/turn-label.d.ts +2 -0
- package/dist/shared/turn-label.js +4 -2
- package/dist/vendor/remark/remark-gfm.cjs +7 -7
- package/dist/vendor/remark/remark-gfm.cjs.map +1 -1
- package/dist/vendor/remark/remark-parse.cjs +12 -12
- package/dist/vendor/remark/remark-parse.cjs.map +1 -1
- package/dist/vendor/remark/remark.cjs +13 -13
- package/dist/vendor/remark/remark.cjs.map +1 -1
- package/dist/view/server.cjs +6 -0
- package/dist/view/server.cjs.map +1 -1
- package/docs-site/images/hitl-handshake-zh.svg +3 -3
- package/docs-site/zh/examples/ai-agent-application.mdx +1 -1
- package/docs-site/zh/examples/coding-agent-extensions.mdx +1 -1
- package/docs-site/zh/examples/integrations/ai-sdk-v7.mdx +4 -3
- package/docs-site/zh/examples/integrations/claude-sdk.mdx +3 -3
- package/docs-site/zh/examples/integrations/codex-sdk.mdx +5 -5
- package/docs-site/zh/examples/integrations/langgraph.mdx +4 -4
- package/docs-site/zh/examples/integrations/pi-sdk.mdx +5 -5
- package/docs-site/zh/explanation/adapter.mdx +5 -5
- package/docs-site/zh/explanation/assert.mdx +7 -7
- package/docs-site/zh/explanation/drive.mdx +4 -2
- package/docs-site/zh/explanation/evals.mdx +10 -8
- package/docs-site/zh/explanation/experiment.mdx +2 -2
- package/docs-site/zh/explanation/hitl.mdx +9 -9
- package/docs-site/zh/explanation/judge.mdx +5 -5
- package/docs-site/zh/explanation/overview.mdx +3 -3
- package/docs-site/zh/explanation/runner.mdx +1 -1
- package/docs-site/zh/index.mdx +3 -3
- package/docs-site/zh/reference/builtin-agents.mdx +13 -13
- package/docs-site/zh/reference/capabilities.mdx +1 -1
- package/docs-site/zh/reference/cli.mdx +18 -12
- package/docs-site/zh/reference/define-agent.mdx +130 -5
- package/docs-site/zh/reference/define-config.mdx +2 -2
- package/docs-site/zh/reference/define-eval.mdx +4 -4
- package/docs-site/zh/reference/events.mdx +11 -11
- package/docs-site/zh/reference/official-adapters.mdx +6 -6
- package/docs-site/zh/reference/results-data.mdx +6 -0
- package/docs-site/zh/troubleshooting/debugging.mdx +1 -1
- package/docs-site/zh/troubleshooting/recover-after-kill.mdx +37 -5
- package/docs-site/zh/tutorials/accept-results.mdx +72 -0
- package/docs-site/zh/tutorials/agent-onboarding.mdx +6 -6
- package/docs-site/zh/tutorials/authoring.mdx +9 -13
- package/docs-site/zh/tutorials/ci-integration.mdx +6 -6
- package/docs-site/zh/tutorials/compare-runs.mdx +61 -0
- package/docs-site/zh/tutorials/concurrency.mdx +13 -12
- package/docs-site/zh/tutorials/configuration.mdx +4 -6
- package/docs-site/zh/tutorials/connect-your-agent.mdx +1 -1
- package/docs-site/zh/tutorials/control-run-cost.mdx +58 -0
- package/docs-site/zh/tutorials/criteria-files.mdx +2 -2
- package/docs-site/zh/tutorials/custom-reports.mdx +2 -2
- package/docs-site/zh/tutorials/debug-lifecycle-plan.mdx +46 -0
- package/docs-site/zh/tutorials/docker-in-docker.mdx +52 -43
- package/docs-site/zh/tutorials/eval-groups.mdx +6 -6
- package/docs-site/zh/tutorials/evaluation-kinds.mdx +3 -3
- package/docs-site/zh/tutorials/experiments.mdx +2 -3
- package/docs-site/zh/tutorials/handle-execution-failures.mdx +18 -10
- package/docs-site/zh/tutorials/install-custom-sandbox-agent.mdx +16 -8
- package/docs-site/zh/tutorials/nixos-managed-dind.mdx +160 -0
- package/docs-site/zh/tutorials/plugins.mdx +14 -0
- package/docs-site/zh/tutorials/rerun-and-cache.mdx +4 -2
- package/docs-site/zh/tutorials/sandbox-agent.mdx +17 -11
- package/docs-site/zh/tutorials/sandbox-providers.mdx +17 -13
- package/docs-site/zh/tutorials/sandbox-reuse.mdx +12 -19
- package/docs-site/zh/tutorials/select-and-preview.mdx +65 -0
- package/docs-site/zh/tutorials/verify-judge.mdx +78 -0
- package/docs-site/zh/tutorials/viewing-results.mdx +38 -1
- package/docs-site/zh/tutorials/write-experiment.mdx +7 -5
- package/docs-site/zh/tutorials/write-send.mdx +9 -8
- package/package.json +9 -5
- package/dist/report/built-in/overview.cjs +0 -44
- package/dist/report/built-in/overview.cjs.map +0 -1
- package/dist/report/built-in/overview.d.cts +0 -6
- package/dist/report/built-in/overview.d.mts +0 -6
- package/dist/report/built-in/overview.d.ts +0 -6
- package/dist/report/built-in/overview.js +0 -9
- package/dist/report/built-in/overview.js.map +0 -1
- package/dist/runner/gate-lease.cjs +0 -283
- package/dist/runner/gate-lease.cjs.map +0 -1
- package/dist/runner/gate-lease.d.cts +0 -62
- package/dist/runner/gate-lease.d.mts +0 -62
- package/dist/runner/gate-lease.d.ts +0 -62
- package/dist/runner/gate-lease.js +0 -22
- package/dist/runner/gate-lease.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attempt.js","sourceRoot":"","sources":["attempt.ts"],"names":[],"mappings":"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","sourcesContent":["// 单个 attempt 的完整生命周期:资源(沙箱 / OTLP 接收器)经 Effect.Sample 的\n// acquireRelease 接管,无论 body 成功 / 抛错 / 被中断,stop() / close() 都保证执行。\n// 沙箱编排的固定段在 runAttemptBody(基线→setup→驱动 test→采 diff→评分→判定→收 trace),\n// adapter 只填「把 agent 跑起来」一段。\nimport { Effect, Cause, Duration, Either, Exit, Fiber, Option } from \"effect\";\nimport { materializeSandboxRunPlan, liveSandboxRuntimeServices, sandboxRuntimeCapabilities, type SandboxRuntimeDeadline, } from \"../sandbox/runtime.ts\";\nimport type { ConcurrencySlot } from \"../context/send-retry.ts\";\nimport { unregisterSandbox } from \"../sandbox/registry.ts\";\nimport { makeSandboxAuthorFacade } from \"../sandbox/paths.ts\";\nimport { makeSandboxRequestExecutor } from \"../sandbox/request-executor.ts\";\nimport { CLEANUP_TIMEOUT_MS, cleanupCallback } from \"./cleanup-timeout.ts\";\nimport { resolveAttemptTimeout, type TimeoutSource } from \"./timeout.ts\";\nimport { SandboxCommandTimeoutError } from \"../sandbox/deadline.ts\";\nimport { ExperimentFatalError } from \"../shared/failure-class.ts\";\nimport type { ExternalCause } from \"../shared/external-cause.ts\";\nimport { computeExpiresAt, nativeEnterCommand, suspendSandbox } from \"../sandbox/keep.ts\";\nimport { keptEntryId, updateKeptEntryEffect, writeKeptEntryEffect, } from \"../sandbox/keep-registry.ts\";\nimport { runAgentEnsure, verifySandboxTargetPlatform } from \"../agents/provisioner.ts\";\nimport { createTraceReceiver, interruptOnAbort, type TraceReceiver } from \"../o11y/otlp/receiver.ts\";\nimport { createInSandboxTraceReceiver } from \"../o11y/otlp/sandbox-receiver.ts\";\nimport { AgentOtelChannel } from \"../o11y/otlp/turn-otel.ts\";\nimport { selectTraceSpans, enrichTraceWithIO } from \"../o11y/otlp/select.ts\";\nimport { mapGenericSpans } from \"../o11y/otlp/mappers/index.ts\";\nimport { createAssertFirstEvalContext, type AssertFirstContextState, } from \"../context/assert-first.ts\";\nimport { AssertionAuthoringClosedError, } from \"../assertions/api.ts\";\nimport { createAssertionsRuntime } from \"../assertions/runtime.ts\";\nimport type { AssertionStopError, AssertionsRuntime, SealedAttemptAssertions, } from \"../assertions/api.ts\";\nimport type { AgentWorkspaceDiff } from \"../assertions/workspace-diff.ts\";\nimport { sealAttemptAssertions, } from \"./assertions.ts\";\nimport { makeAssertFirstAttemptBridge, type AssertFirstAttemptBridge, type AttemptAuthorCompletion, } from \"./assert-first-bridge.ts\";\nimport { createAgentSession } from \"../context/session.ts\";\nimport { EvalSkipped } from \"../context/control-flow.ts\";\nimport { isSendFailure, sendFailureText } from \"../context/send-failures.ts\";\nimport { deriveRunFacts, buildO11ySummary } from \"../o11y/derive.ts\";\nimport { estimateCost } from \"../o11y/cost.ts\";\nimport { t } from \"../i18n/index.ts\";\nimport { describeError, firstLine, formatThrown } from \"../util.ts\";\nimport { createChangeLedger, type ChangeLedger } from \"./ledger.ts\";\nimport { deriveDiffData, } from \"../assertions/diff.ts\";\nimport { createAgentWorkspaceDiff } from \"../assertions/workspace-diff.ts\";\nimport { assertFileChangesCaptureRecordable, createEmptyFileChangesCapture, createFileChangesCapture, type FileChangesCapture, } from \"../assertions/record/diff.ts\";\nimport { createDirectAgentSandbox } from \"./direct-agent-sandbox.ts\";\nimport { createSandboxCommandTarget, SandboxCommandExitError } from \"../sandbox/operations.ts\";\nimport { inheritSandboxCapabilities } from \"../sandbox/backend.ts\";\nimport { commandSensitiveValues, redactSensitiveEvidence, redactSensitiveText, rememberSensitiveValues, } from \"../sandbox/redaction.ts\";\nimport type { SandboxCleanupCommand, SandboxCommandContext } from \"../sandbox/commands.ts\";\nimport { sandboxLayerIdentityFor } from \"../sandbox/link.ts\";\nimport { agentInstallPlansForRun } from \"./config-identity.ts\";\nimport { linkPluginLifecycles, type EvalPluginContext } from \"../plugin/contracts.ts\";\nimport { createSourceRegistry, type SourceRegistry } from \"../source-loc.ts\";\nimport { createRunnerAttemptSourceCapture, retainRunnerAttemptSourceCapture, type RunnerAttemptSourceCapture, } from \"./source-producer.ts\";\nimport { retainRunnerAttemptFileChangesCapture } from \"./sandbox-record-producer.ts\";\nimport { bindRunnerAttemptObservabilityCapture, captureRunnerCommandCaptureFailed, captureRunnerCommandInterrupted, captureRunnerCommandResult, captureRunnerCommandStart, captureRunnerCommandTimeout, captureRunnerPhysicalConversationTurn, captureRunnerTurnUsage, createRunnerAttemptObservabilityRuntime, type RunnerAttemptObservabilityRuntime, } from \"../o11y/record/runner-producer.ts\";\nimport { attemptFailureInfo, resolveAttemptFailureClass, type AttemptFailureClassifier, type FailureClass, } from \"../shared/failure-class.ts\";\nimport type { CapturedEvalSource } from \"./eval-source.ts\";\nimport type { AgentContext, SandboxAgentContext, AgentSetupManifest, Config, DiagnosticInput, DiffArtifact, EvalResult, CommandExitEvidence, ResolvedJudgeConfig, JsonValue, Sandbox, ScopedFeedback, ScriptResult, SourceArtifact, StreamEvent, Telemetry, TimingActivity, TraceSpan, Usage, RetryAttemptRecord, } from \"../types.ts\";\nimport { reportAttemptLifecycle, reportDiagnostic, reportKept } from \"./feedback/sink.ts\";\nimport { encodeAttemptKey, EVALUATION_ALGORITHM, runWho } from \"./types.ts\";\nimport { attemptOrigin, commandDisplay, commandLimitAttribution, commandNode, createTimingRecorder, sandboxPrepareActivity, turnActivity, workspaceDiffExportActivity, type TimingRecorder } from \"./timing.ts\";\nimport type { AgentRun, Attempt, AttemptError, TimeoutAttribution, AttemptRef, DiagnosticRecord, LifecyclePhase, RunOptions, } from \"./types.ts\";\n/**\n * 一次终局失败的空间轴回执:止损闸的消费点(见 docs/feature/error-classification/architecture.md\n * 「止损执行体」)。`class` 是分类链决议出的 `FailureClass`,`text` 与报错文案同源(作者的修复\n * 提示),`phase` 是失败所在的生命周期阶段。回执是旁路:不改 verdict、不改 `AttemptError` 形状,\n * 也不走错误通道传播(attempt fiber 的 `E` 仍恒为 `never`)。\n */\nexport interface AttemptFailureDeclaration {\n readonly class: FailureClass;\n readonly phase: LifecyclePhase;\n readonly text: string;\n}\n/**\n * 一次终局失败的空间轴决议:走三道链(抛出点声明 → 实验分类器 → 缺省不可重试,见\n * src/shared/failure-class.ts 的 `resolveAttemptFailureClass`),缺省档(`scope` 省略或\n * `\"attempt\"`)返回 undefined —— 死因只属于本次执行,没有闸可落。\n *\n * **必须在把错误折成纯数据 `AttemptError` 之前调**:折完之后原错误对象(连同它携带的\n * `_tag`/`class` 与 cause 链)就不再是任何人的引用,空间轴声明再也读不出来。\n * attempt 内的失败(本文件的 `declareFailure`)与 attempt 开跑前的资源获取失败\n * (run.ts 的复用池租借)共用这一份决议,两处不各写一遍链。\n */\nexport function attemptFailureDeclaration(classify: AttemptFailureClassifier | undefined, phase: LifecyclePhase, e: unknown): AttemptFailureDeclaration | undefined {\n const info = attemptFailureInfo(phase, e);\n const cls = resolveAttemptFailureClass(info, classify);\n if (cls.scope !== \"eval\" && cls.scope !== \"experiment\")\n return undefined;\n return { class: cls, phase, text: info.text };\n}\nexport interface RunAttemptEffectOptions<SealRequirements = never> {\n /** Run 级构建执行产出的 locator;key 集合必须与 Attempt.plan 的完成态物理计划完全一致。 */\n readonly buildLocators: ReadonlyMap<string, JsonValue>;\n /** Invocation 级 Run timing,供 Dockerfile Agent 派生镜像 lookup/build 观测。 */\n readonly runTiming?: import(\"./timing.ts\").RunTimingRecorder;\n /**\n * Attempt 的协作取消信号;可同时包含 Invocation 取消、earlyExit sibling\n * 取消等来源。测试直调时省略。\n */\n parentSignal?: AbortSignal;\n /**\n * 只代表整个 Invocation 的外部取消。与 parentSignal 分开保存,避免把\n * earlyExit 的 Attempt-local abort 升级成 Ctrl+C / exit 130。\n */\n invocationSignal?: AbortSignal;\n /** 每次跨入一个新 `LifecyclePhase` 边界时同步回调一次(与下面的 `enterPhase` 同一调用点,见\n * 该函数)。run.ts 用它在本地跟踪「这个 attempt 目前所在的阶段」,好在 attempt 失败/errored\n * 时把 phase 塞进 `reportFailure()`(见 sink.ts 的 `FailureInput.phase`)—— 到那时\n * attempt:complete 已经让 coordinator 把 active map 里的条目删掉,没有别的地方能事后查到。 */\n onPhase?: (phase: LifecyclePhase) => void;\n /**\n * turn 级重试退避期间释放/收回的全局并发槽位(globalSem / 实验级 runSem,见 run.ts 的调用点)。\n * 省略时(如测试直调)退避不释放槽位。\n */\n concurrencySlot?: ConcurrencySlot;\n /**\n * 终局失败的空间轴回执(每条终局失败各回调一次,含 per-attempt teardown 的失败——teardown\n * 声明照常落闸、不改 verdict,见 architecture.md「生命周期边界」)。省略(如测试直调)时\n * 分类照常决议、只是无人消费。回调必须不抛错:它跑在 attempt 的失败路径上,不得掩盖原始失败。\n */\n onFailureClass?: (declaration: AttemptFailureDeclaration) => void;\n /**\n * Invocation coordination may consume the single sealed Assert-first result\n * here and pass it to EvaluationRecordContract. The Attempt never opens a\n * Record session or owns Record I/O itself.\n */\n onSealedEvaluation?: (sealed: SealedAttemptAssertions) => Effect.Effect<void, never, SealRequirements>;\n /** 由复用池独占借出的实例;池负责物理 Sandbox 生命周期与最终 stop。 */\n reusedSandbox?: {\n sandbox: Sandbox;\n reuseSandbox: number;\n reuseOrdinal: number;\n };\n}\nexport function runAttemptEffect<SealRequirements, AttachmentError, AttachmentRequirements>(a: Attempt, opts: RunOptions<AttachmentError, AttachmentRequirements>, sandboxSem: Effect.Semaphore, { buildLocators, runTiming, parentSignal, invocationSignal, onPhase, concurrencySlot, onFailureClass, onSealedEvaluation, reusedSandbox, }: RunAttemptEffectOptions<SealRequirements>) {\n const config = opts.config;\n const { evalDef, run, attempt } = a;\n const coordinationRoot = opts.coordinationRoot ?? `${process.cwd()}/.niceeval`;\n const t0 = Date.now();\n // Source bytes are snapshotted at the author action, then held only through\n // an internal capability until the Record producer seals its own Attachments.\n const sourceRegistry = createSourceRegistry(process.cwd());\n const sourceCapture = createRunnerAttemptSourceCapture(sourceRegistry);\n const base: EvalResult = {\n id: evalDef.id,\n description: evalDef.description,\n experimentId: run.experimentId,\n experiment: experimentRunInfo(run, a.plan, a.sandboxPlansByEval, config, a.judge),\n agent: run.agent.name,\n model: run.model,\n verdict: \"errored\",\n fingerprint: a.fingerprint,\n evaluationAlgorithm: EVALUATION_ALGORITHM,\n configHash: a.configHash,\n attempt,\n startedAt: new Date(t0).toISOString(),\n durationMs: 0,\n factResults: [],\n factUses: [],\n evidenceCoverage: run.agent.evidenceCoverage,\n evaluationKind: evalDef.evaluationKind ?? \"pass\",\n };\n /**\n * 调度事实:Sandbox 租借给这条 Attempt 的那一刻定死(复用池借出的实例在进入本函数时就已经\n * 借定,一次性沙箱在 create 返回那一刻借定)。Attempt 在任何阶段终结——Eval `setup` 失败、\n * 超时、资源获取失败——记录里都要带全 provider / sandboxId / reused / 编号与承接序号,\n * 只有 `kept` 在收尾时点决定(见 docs/feature/record/architecture.md 的 `sandbox` 字段)。\n * 所以它挂在唯一出口(下方 Effect.map)上,而不是分散在各条返回路径里。\n */\n let sandboxFacts: NonNullable<EvalResult[\"sandbox\"]> | undefined;\n /** 留存提交成功(`--keep-sandbox`)——唯一一个在收尾时点才知道的 sandbox 记录键。 */\n let kept = false;\n if (reusedSandbox && run.agent.kind === \"sandbox\") {\n if (a.plan._tag !== \"Sandbox\") {\n throw new Error(`sandbox agent ${JSON.stringify(run.agent.name)} received a Direct plan`);\n }\n sandboxFacts = {\n provider: a.plan.providerPlan.provider,\n sandboxId: reusedSandbox.sandbox.sandboxId,\n reused: true,\n reuseSandbox: reusedSandbox.reuseSandbox,\n reuseOrdinal: reusedSandbox.reuseOrdinal,\n };\n }\n // 四层解析链的最后两层(eval → config)在这里接上,并把赢家那一层带出来:超时消息要说得出\n // 「这个上限是哪一层给的」,否则撞线时得回头逐层对照四个声明点(契约见\n // docs/feature/experiments/cli.md「timeout、budget 与基础设施错误」)。\n // 四层都没声明 = 无上限:不挂 deadline、不发软截止信号,也不给 provider 递命令超时,\n // 链末端不发明一条隐藏的线。\n const attemptTimeout = resolveAttemptTimeout(run, evalDef, config);\n // deadline 的截止**时刻**:沙箱内一切时限从它派生(单条命令未显式传 timeout 时上限 =\n // 剩余量,见 sandbox/deadline.ts)。与 Effect.timeoutTo 同一个锚点,不各取各的 now()。\n const deadlineAt = attemptTimeout ? Date.now() + attemptTimeout.timeoutMs : undefined;\n // Adapter 的协作式 deadline 由专用 controller 承载。它绝不能自己设 timer:Effect.timeoutTo\n // 是唯一的 deadline owner,并会在 onTimeout 同步 abort 这个 controller;否则独立 timer\n // 可能让 adapter 先 reject,把 deadline 错分成外部 interrupt。\n const deadlineAbort = new AbortController();\n const signal = parentSignal\n ? AbortSignal.any([parentSignal, deadlineAbort.signal])\n : deadlineAbort.signal;\n // Attempt 阶段的正式生命周期投影(见 docs/feature/experiments/cli.md「Attempt 阶段」)。\n // run.ts 在这个 attempt 的 body Effect 真正开始跑之前,已经先发出过一次 attempt:start(占位\n // phase,见 run.ts 的 attempt:start emission,和这里的 eval:start 是同一个调用点),所以这里\n // 只需要在每个「实际执行到的」边界调 enterPhase() 覆盖上一个 phase(attempt:phase),不需要\n // 自己区分「第一次」。没有对应 hook/配置的步骤直接不调用,不产生空阶段(如没有 setup 的 agent\n // 跳过 agent-setup)。没有活跃 feedback coordinator 时 reportAttemptLifecycle 静默 no-op,\n // 不产生任何终端输出。\n const identity: AttemptRef = { experimentId: run.experimentId, evalId: evalDef.id, attempt };\n // 最近跨入的正式 phase:errored 结果的 `error.phase` 从它取(见下方 timeout / scope\n // 兜底与 runAttemptBody 的 body catch)。body 与本函数共用同一个 enterPhase 闭包(经 res 传下去),\n // 所以 body 内部的阶段推进也会更新它,不需要 body 再单独维护一份。\n // 阶段计时:live 展示、error.phase、落盘 phases[].name 用同一套 LifecyclePhase 闭集,\n // 一次 enterPhase 同时推进三者(词表全仓只有一套,见 runner/types.ts 的 LifecyclePhase)。\n let lastPhase: LifecyclePhase | undefined;\n const recorder = createTimingRecorder();\n // adapter send 在飞时,错误/诊断归因到嵌套的 `agent.run`(eval.run 内打开,不单列计时条目)。\n let sendActive = false;\n // 超时证据保全的外层句柄:与 recorder 同一模式,runAttemptBody 内部一建好 SessionManager /\n // ChangeLedger 就经 AttemptResources.registerEvidence/registerLedger 登记回这里——中断后由\n // Sample 外层直接读它们组装结果,不随被 Effect 中断放弃的 body fiber 一起消失(见\n // docs/runner.md「超时:双层保护」超时不丢证据)。\n let liveEvents: (() => readonly StreamEvent[]) | undefined;\n let liveUsage: (() => Usage) | undefined;\n let liveRetryAttempts: (() => readonly RetryAttemptRecord[]) | undefined;\n let liveLedger: ChangeLedger | undefined;\n // Assert-first state becomes visible only after the real TestContext has\n // been constructed. Scope finalization owns the interruption seal so an\n // aborted Attempt cannot leave declared entries unsealed.\n let liveAssertions: AssertionsRuntime<\"pass\" | \"score\"> | undefined;\n let liveAssertionState: AssertFirstContextState | undefined;\n let assertionsSealed = false;\n let timeoutSealedAssertions: SealedAttemptAssertions | undefined;\n // Effect.timeoutTo 的 onTimeout 是同步回调,在中断真正下发给 body fiber(从而触发下面的\n // finalizer 链)之前就已经跑完并同步置位这个标记——下面新增的 finalizer 靠它判断本次 Sample\n // release 是不是超时触发的,只在超时路径补折叠证据,正常收尾路径不重复做(见文件顶部\n // Effect.timeoutTo 调用点的注释)。\n let timedOut = false;\n let timeoutDiff: DiffArtifact | undefined;\n let fileChangesCapture: FileChangesCapture | undefined;\n let timeoutFileChangesCapture: FileChangesCapture | undefined;\n let timeoutSources: SourceArtifact[] | undefined;\n const enterPhase = (phase: LifecyclePhase) => {\n lastPhase = phase;\n recorder.enter(phase);\n onPhase?.(phase);\n reportAttemptLifecycle({ type: \"attempt:phase\", at: Date.now(), identity, phase });\n };\n /**\n * 终局失败的分类与回执 —— **必须在把错误折成纯数据 `AttemptError` 之前调**:折完之后原错误\n * 对象(连同它携带的 `_tag`/`class` 与 cause 链)就不再是任何人的引用,空间轴声明再也读不出来。\n * 走生命周期链的三道决议(抛出点声明 → 实验分类器 → 缺省不可重试,见\n * src/shared/failure-class.ts 的 `resolveAttemptFailureClass`);send 失败的时间轴已由 send 重试\n * 执行体在 context 层消费完,浮出到这里的一定是终局失败,这里只读空间轴。\n * 缺省档(`scope` 省略或 `\"attempt\"`)不回执:那是「死因只属于本次执行」,没有闸可落。\n */\n const declareFailure = (phase: LifecyclePhase, e: unknown): void => {\n if (!onFailureClass)\n return;\n const declaration = attemptFailureDeclaration(run.classifyFailure, phase, e);\n if (declaration) {\n // 空间轴回执会先于 Attempt 结果封口进入 run.ts,并立即生成运行期反馈与 run.json 的\n // dispatch-halted 诊断。它不能依赖下面的 EvalResult 最终扫描补救,否则同一条错误在\n // result.json 已脱敏、Run 级诊断却仍保留原值。分类决策只消费原始错误;对外回执单独\n // 复制并脱敏正文,scope / phase 等路由事实保持原样。\n onFailureClass({\n ...declaration,\n text: redactSensitiveText(declaration.text, sensitiveValues),\n });\n }\n };\n // 本 attempt 累计的诊断(与 verdict 独立):ScopedFeedback.diagnostic 与 teardown 失败都落这里,\n // 收尾时并入结果;dedupeKey 相同的并发诊断折叠成一条并累计 count。\n const diagnostics: DiagnosticRecord[] = [];\n const dedupeIndex = new Map<string, DiagnosticRecord>();\n // Sandbox 命令证据的累加器(与 diagnostics 同一种「共享容器」模式):\n // withCommandTiming 在 CommandResult 交还调用方之前把每条命令(成功与非零退出都算)push 进来,\n // runAttemptBody 的 finally 与本函数的超时/中断兜底分支都读同一个数组引用\n // (见 docs/feature/record/architecture.md「commandsjson」「证据在 CommandResult 返回\n // 调用方之前写入内存」)。\n const commands: CommandExitEvidence[] = [];\n // CommandOptions.sensitiveValues 的 Attempt 级内存集合。值只供记录边界精确替换;最终\n // result 封口后集合随本次调用释放,不进入任何 artifact、指纹或 provider identity。\n const sensitiveValues = new Set<string>();\n // Package-internal only: the final EvalResult is weakly associated with this\n // capture after all Runner evidence is sealed. No public result field or\n // legacy artifact is used as a transport.\n const observabilityRuntime = createRunnerAttemptObservabilityRuntime({\n providerName: run.agent.name,\n sensitiveValues,\n });\n const recordDiagnostic = (input: DiagnosticInput) => {\n const phase = (sendActive ? \"agent.run\" : lastPhase) ?? \"eval.run\";\n if (input.dedupeKey !== undefined) {\n const existing = dedupeIndex.get(input.dedupeKey);\n if (existing) {\n existing.count = (existing.count ?? 1) + 1;\n return;\n }\n }\n const message = redactSensitiveText(input.message, sensitiveValues);\n const context = input.data === undefined\n ? undefined\n : redactSensitiveEvidence(input.data, sensitiveValues);\n const record: DiagnosticRecord = {\n code: input.code,\n level: input.level,\n detail: message,\n origin: attemptOrigin(phase),\n ...(context !== undefined ? { context } : {}),\n };\n if (input.dedupeKey !== undefined)\n dedupeIndex.set(input.dedupeKey, record);\n diagnostics.push(record);\n // 同时进运行级永久事件流(human 撤下 dashboard 后追加、JSON stdout 追加 warning,去重按 key)。\n // `key` 只管折叠到多细(作者没给 dedupeKey 时折到「这一条 attempt 的这种诊断」,身份因此\n // 编进去);对外稳定词法始终单独给 `code`,不让消费方从 key 反推(见 sink.ts 的\n // DiagnosticInput.code、docs/feature/experiments/cli.md 的 WarningEvent)。\n const { origin: _authorOrigin, phase: _authorPhase, ...diagnosticData } = context ?? {};\n reportDiagnostic({\n key: input.dedupeKey ?? `${input.code}:${encodeAttemptKey(identity)}`,\n code: input.code,\n severity: input.level,\n message,\n identity,\n // phase 由运行器给,且**压过**作者 `data` 里的同名字段:`WarningEvent.phase` 是\n // `LifecyclePhase` 闭集,取值只能由「这条诊断报上来时运行器正处在哪一步」决定。\n // 作者的 `data` 是开放词表,让它盖住这个字段等于允许从 eval / adapter 代码里冒充一个\n // 别的(甚至不在闭集里的)阶段,消费方按 phase 分支就此失效——与 ScopedFeedback\n // 「两个方法都不接受 phase」是同一条纪律(见 src/shared/types.ts 的接口注释)。\n data: { ...diagnosticData, phase, origin: attemptOrigin(phase) },\n });\n };\n // 作用域反馈:progress 走 attempt:progress(短命状态,归因由 runner 的当前阶段决定),\n // diagnostic 落 attempt diagnostics + 运行级永久事件。绑定见 docs/feature/experiments/library.md。\n const scopedFeedback: ScopedFeedback = {\n progress: (u) => {\n const suffix = u.current !== undefined && u.total !== undefined ? ` (${u.current}/${u.total})` : \"\";\n log(`${u.message}${suffix}`);\n },\n diagnostic: recordDiagnostic,\n };\n const sealExecutionError = (): Effect.Effect<SealedAttemptAssertions, import(\"../assertions/api.ts\").AssertionSealError, SealRequirements> => {\n const runtime = liveAssertions ?? (evalDef.evaluationKind === \"score\"\n ? createAssertionsRuntime({ evaluationKind: \"score\" })\n : createAssertionsRuntime({ evaluationKind: \"pass\" }));\n if (liveAssertions === undefined) {\n // Sandbox acquire/prepare may fail before TestContext exists. It is still\n // an executed Attempt, so seal its empty assertion set with the same\n // execution-error terminal used by failures after Context construction.\n liveAssertions = runtime;\n sourceCapture.attachAssertions(runtime);\n }\n return sealAttemptAssertions(runtime, { execution: \"errored\" }).pipe(Effect.tap(() => Effect.sync(() => {\n assertionsSealed = true;\n })), Effect.tap((sealed) => onSealedEvaluation?.(sealed) ?? Effect.void));\n };\n // 同时保留最近 20 条进度消息,timeout 时嵌入 error 字段方便定位卡在哪一步。\n const recentLogs: string[] = [];\n const log = (m: string) => {\n const detail = redactSensitiveText(m, sensitiveValues);\n recentLogs.push(detail);\n if (recentLogs.length > 20)\n recentLogs.shift();\n // 附着在「当前阶段」上的次要文本(见 ActiveAttempt.detail);attempt:start 早于本函数任何\n // 调用点发出(见上),active map 里一定已经有这个 identity 的条目。这是 log() 唯一的出口 ——\n // 没有裸写 stderr 的兜底分支(那是给已删除的 Live reporter 用的旧接线,见\n // docs/feature/experiments/cli.md「一个 run 内只有一个终端协调者」);由当前 renderer 决定\n // 是否消费这条 detail(human 展示,JSON 不消费 lifecycle detail)。\n reportAttemptLifecycle({ type: \"attempt:progress\", at: Date.now(), identity, detail });\n };\n /**\n * ── attempt 总超时的硬边界(P1)──\n * 上限是「整个 attempt(setup+agent+脚本+评分)」的,不是 docker 单条命令的。\n * 到点 → 中断整段 body → Sample 跑 release(停容器、关接收器)→ 产出一条 errored 结果。\n * 即便 adapter / test 完全无视 signal 挂死,这一层也能把它停下来并回收资源。\n *\n * 四层解析链都没声明上限时**这个算子整个不挂**——不是挂一条无穷大的 timer:没有线就没有\n * deadline,attempt 跑到自己结束为止(与携带判据的 `Infinity` 同一个语义)。\n */\n const applyAttemptDeadline = <E, R>(self: Effect.Effect<EvalResult, E, R>): Effect.Effect<EvalResult, E, R> => {\n if (attemptTimeout === undefined)\n return self;\n const { timeoutMs, source: timeoutSource } = attemptTimeout;\n return self.pipe(Effect.timeoutTo({\n duration: Duration.millis(timeoutMs),\n onSuccess: (r: EvalResult) => r,\n onTimeout: (): EvalResult => {\n // 超时:message 是一层原因(首行),recentLogs 明细放进 stack 供 show 展开「卡在哪一步」;\n // operation 取超时那一刻打开的 lifecycle operation。code 稳定为 \"timeout\"。\n const text = t(\"runner.timeout\", {\n timeoutMs,\n source: timeoutSource,\n recentLogs: recentLogs.map((l) => ` · ${l}`).join(\"\\n\"),\n });\n const message = firstLine(text);\n const rest = text.length > message.length ? text.slice(message.length + 1).replace(/\\n+$/, \"\") : \"\";\n const error: AttemptError = {\n code: \"timeout\",\n message,\n origin: attemptOrigin((sendActive ? \"agent.run\" : lastPhase) ?? \"eval.run\"),\n // 归属三样一起落盘:撞的是哪层时限、值多少、值从四层解析链的哪层来。\n // 不打一个没有归属说明的 ✗(见 docs/feature/sandbox/architecture.md「时限归属」)。\n timeout: { trigger: \"attempt-deadline\", limitMs: timeoutMs, source: timeoutSource },\n ...(rest.trim() !== \"\" ? { stack: rest } : {}),\n };\n recorder.failCurrent();\n // `timeoutTo` 已经赢得 deadline:先标记并 abort 协作式 adapter。\n // Scope release below seals the Attempt-local Assertions runtime as\n // producer-interrupted before resources are released.\n // 这个 controller 没有独立 timer;它只把已经裁定的 timeout 传给观察 signal 的\n // adapter。标记必须先于 abort,才能把本 fiber 的 timeout 中断与真正外层取消区分。\n timedOut = true;\n deadlineAbort.abort();\n // 置位给下面的 finalizer 用(它在 Sample release 里跑,LIFO 早于 sandbox stop,\n // 补折叠 workspace.diff / sources——见该 finalizer 的注释)。events/usage 不必等它:\n // SessionManager 是外层已经登记过的活引用(见 liveEvents/liveUsage),截至这一刻已经\n // 归一化的事件与已累计的用量此刻就能直接读出,不随放弃的 body fiber 一起消失。\n const events = liveEvents?.();\n const usage = liveUsage?.();\n const retryAttempts = liveRetryAttempts?.();\n return {\n ...base,\n durationMs: recorder.offsetNow(),\n error,\n ...(evalDef.evaluationKind === \"score\" ? { scoreResult: scoreFactOutcomeForAttemptError(error) } : {}),\n ...(events !== undefined ? { events: [...events], o11y: buildO11ySummary(events) } : {}),\n ...(usage !== undefined ? { usage: { ...usage } } : {}),\n ...(retryAttempts !== undefined && retryAttempts.length > 0\n ? { retryAttempts: retryAttempts.map((attempt) => ({ ...attempt })) }\n : {}),\n // 超时前已经登记的命令证据(见 withCommandTiming)不因中断而丢失——它们在\n // CommandResult 返回调用方那一刻就已经写进了这个共享数组。\n ...(commands.length > 0 ? { commands: [...commands] } : {}),\n };\n },\n }));\n };\n const layerCleanups: LayerCleanupEntry[] = [];\n return Effect.scoped(Effect.gen(function* () {\n const sandboxPlan = a.plan._tag === \"Sandbox\" ? a.plan : undefined;\n if (run.agent.kind === \"sandbox\" && sandboxPlan === undefined) {\n throw new Error(`sandbox agent ${JSON.stringify(run.agent.name)} received a Direct plan`);\n }\n const runtimeCapabilities = sandboxPlan === undefined ? undefined : sandboxRuntimeCapabilities(sandboxPlan);\n // 留存 disposition:只在本 attempt 内可变,初始 stop;只有留存提交成功才改成 keep\n // (Ctrl+C 中断外层 Sample 时仍是 stop,照常清理)。是否可留存只读 physical plan\n // 的中性 retention 能力;不在 runner 里按 provider 名或旧声明结构分支。\n let disposition: \"stop\" | \"keep\" = \"stop\";\n // The bridge owns its Queue worker inside this Attempt Scope. Promise\n // code only offers work; no internal module starts a second runtime.\n const assertFirst = yield* makeAssertFirstAttemptBridge<unknown>();\n // 退避重试(runtime.ts → retry.ts)期间临时归还这个名额:被限流的 provider 只是在\n // setTimeout 里睡觉,不该攥着 sandboxSem 的槽位陪跑,不然一批 429 能把整体并发拖成个位数。\n const provisionSlot = {\n release: sandboxSem.release(1),\n reacquire: sandboxSem.take(1),\n };\n // Sample release(receiver close + provider stop)整段计成 sandbox.stop:先加的 finalizer\n // 后跑(LIFO),所以「先加的」在 release 链末尾打终点戳、「后加的」在 release 开始前打起点戳;\n // 结果封口(附 phases)发生在 Sample release 完成之后(见下方 Effect.map)。\n let releaseStartedAt: number | undefined;\n if (run.agent.kind === \"sandbox\" && !reusedSandbox) {\n yield* Effect.addFinalizer(() => Effect.sync(() => {\n // 留存路径的 phases 以 sandbox.suspend 结尾,没有 sandbox.stop 条目(见 release)。\n if (releaseStartedAt !== undefined && disposition !== \"keep\") {\n recorder.record(\"sandbox.stop\", recorder.offsetNow() - releaseStartedAt);\n }\n }));\n }\n const sandbox = reusedSandbox?.sandbox ??\n (run.agent.kind === \"sandbox\"\n ? yield* Effect.gen(function* () {\n // ── 沙箱:acquire=起,release=整组 stop(成功 / 失败 / 中断都跑)──\n // sandboxSem 只覆盖「容器创建」阶段;容器起好后立即释放,后续 npm install / agent 不占位。\n enterPhase(\"sandbox.queue\");\n return yield* sandboxSem.withPermits(1)(Effect.gen(function* () {\n enterPhase(\"sandbox.create\");\n log(t(\"runner.startSandbox\"));\n // provider 固有的会话上限不能静默充当默认值:deadline 超出它时,attempt\n // 会跑到一半被平台截断。在派发前就报环境约束,点名 provider 与上限值。\n if (sandboxPlan === undefined || runtimeCapabilities === undefined) {\n throw new Error(\"sandbox plan invariant violated before materialization\");\n }\n assertDeadlineFitsPlan(runtimeCapabilities, attemptTimeout?.timeoutMs);\n if (opts.keepSandbox !== undefined && runtimeCapabilities.retention._tag !== \"Suspendable\") {\n throw new Error(`--keep-sandbox is unsupported by provider ${JSON.stringify(runtimeCapabilities.provider)}`);\n }\n const runtimeDeadline: SandboxRuntimeDeadline = attemptTimeout === undefined || deadlineAt === undefined\n ? { _tag: \"Unlimited\" }\n : { _tag: \"Bounded\", timeoutMs: attemptTimeout.timeoutMs, deadlineAt };\n const materialized = yield* materializeSandboxRunPlan({\n plan: sandboxPlan,\n evalId: evalDef.id,\n deadline: runtimeDeadline,\n feedback: scopedFeedback,\n signal,\n hookContext: {\n experimentId: sandboxPlan.pair.experimentId,\n signal,\n progress: scopedFeedback.progress,\n diagnostic: scopedFeedback.diagnostic,\n },\n buildLocators,\n agent: run.agent.kind === \"sandbox\" ? run.agent : undefined,\n ...(runTiming !== undefined ? { runTiming } : {}),\n provisionSlot: { _tag: \"Bound\", value: provisionSlot },\n services: liveSandboxRuntimeServices,\n // Provider runtime 自己用 acquireRelease 持有 Case;Attempt 只提交显式\n // Managed disposition,避免外层再包一层 acquireRelease 造成 double-stop。\n release: {\n _tag: \"Managed\",\n run: (owned) => Effect.gen(function* () {\n const sb = owned.sandbox;\n if (disposition !== \"keep\") {\n return yield* tryPromiseAsDefect(() => owned.group.stop());\n }\n yield* Effect.sync(() => unregisterSandbox(sb));\n const providerName = runtimeCapabilities.provider;\n const suspendStart = recorder.offsetNow();\n return yield* tryPromiseAsDefect(() => suspendSandbox(sb)).pipe(Effect.tap(() => Effect.sync(() => {\n recorder.record(\"sandbox.suspend\", recorder.offsetNow() - suspendStart);\n })), Effect.zipRight(updateKeptEntryEffect(coordinationRoot, keptEntryId(providerName, sb.sandboxId), {\n state: \"dormant\",\n }).pipe(Effect.ignore)), Effect.catchAllCause((cause) => Cause.isInterrupted(cause)\n ? Effect.failCause(cause)\n : Effect.sync(() => {\n const error = Cause.squash(cause);\n recorder.record(\"sandbox.suspend\", recorder.offsetNow() - suspendStart, true);\n recordDiagnostic({\n code: \"sandbox-suspend-failed\",\n level: \"warning\",\n message: `sandbox ${sb.sandboxId} kept but suspend failed; the instance is still running: ${error instanceof Error ? error.message : String(error)}`,\n dedupeKey: `sandbox-suspend-failed:${sb.sandboxId}`,\n });\n })));\n }),\n },\n });\n // fresh Attempt:author facade 在当前 Attempt Scope 内构建。executor 捕获本\n // Scope 的 Runtime,Scope 关闭时统一中断在飞请求并拒绝新调用;release closure\n // 继续用 materialized.sandbox(资源面 facade),两者生命周期互不借用。\n const executor = yield* makeSandboxRequestExecutor();\n return makeSandboxAuthorFacade(materialized.authorBackend, executor, runtimeCapabilities.provider);\n }));\n })\n : createDirectAgentSandbox());\n // 一次性沙箱的租借时刻:实例到手就定归属,后面无论走到哪一步终结都带着它。\n if (run.agent.kind === \"sandbox\" && !sandboxFacts) {\n sandboxFacts = { provider: runtimeCapabilities!.provider, sandboxId: sandbox.sandboxId };\n }\n if (run.agent.kind !== \"sandbox\")\n log(t(\"runner.useDirectAgent\"));\n const commandTarget = createSandboxCommandTarget(sandbox);\n // ── tracing ──────────────────────────────────────────────────────────────────\n // sandbox.otlpHost:\n // string → provider 承诺该 hostname 可访问宿主 receiver\n // null → provider 不承诺宿主回连,改在沙箱内起 attempt-scope collector\n // defineConfig({ telemetry: { host } }) 可强制覆盖(如配好 tunnel 时)。\n //\n // 非沙箱 agent(远程 / 进程内)不走 per-attempt receiver:被测应用是长驻进程,只有一条\n // 全局 OTel 管线(OTEL_* env 进程启动时读一次)—— per-attempt 端口会在第一个 attempt\n // 结束时关掉,后续 span 全丢。改走 run 级共享池,span 逐轮归属(traceparent / 窗口)。\n let receiver: TraceReceiver | undefined;\n let telemetry: Telemetry | undefined;\n let otelChannel: AgentOtelChannel | undefined;\n // 共享池仅限:config 配了 telemetry(固定端口,无侵入接入的长驻服务)或显式 tracing.scope === \"run\"。\n // 只声明 tracing 的进程内 adapter(如 aiSdkAgent)保持 per-attempt receiver,attempt 全并发。\n const wantsSharedOtel = config.telemetry !== undefined || run.agent.tracing?.scope === \"run\";\n if (run.agent.kind !== \"sandbox\" && wantsSharedOtel && opts.otelPool) {\n enterPhase(\"telemetry.configure\");\n try {\n otelChannel = yield* opts.otelPool!.channel(run.agent.name);\n const endpoint = otelChannel.receiver.endpoint(config.telemetry?.host ?? \"127.0.0.1\");\n const env = run.agent.tracing?.env?.(endpoint);\n telemetry = env ? { endpoint, env } : { endpoint };\n log(t(\"runner.otlpShared\", { endpoint }));\n }\n catch (e) {\n if (isAttemptAborted(parentSignal))\n throw e;\n recordDiagnostic({\n code: \"telemetry-configure-failed\",\n level: \"warning\",\n message: `telemetry configure failed; continuing without OTLP trace: ${firstLine(formatThrown(e))}`,\n data: evidenceDiagnosticData(\"configure\", e),\n });\n otelChannel = undefined;\n telemetry = undefined;\n }\n }\n else if (run.agent.tracing !== undefined) {\n enterPhase(\"telemetry.configure\");\n try {\n const forcedHost = config.telemetry?.host;\n if (forcedHost) {\n // 显式覆盖:走本地接收器,把指定 host 交给 agent\n receiver = yield* createTraceReceiver();\n const endpoint = receiver.endpoint(forcedHost);\n const env = run.agent.tracing?.env?.(endpoint);\n telemetry = env ? { endpoint, env } : { endpoint };\n log(t(\"runner.otlpOverride\", { endpoint }));\n }\n else if (sandbox.otlpHost !== null) {\n // provider 明确承诺宿主回连:宿主开接收器\n receiver = yield* createTraceReceiver();\n const endpoint = receiver.endpoint(sandbox.otlpHost);\n const env = run.agent.tracing?.env?.(endpoint);\n telemetry = env ? { endpoint, env } : { endpoint };\n const proto = run.agent.tracing?.protocol;\n log(t(\"runner.otlpReceiver\", { endpoint, proto: proto ? ` (${proto})` : \"\" }));\n }\n else {\n // provider 不承诺宿主回连:在沙箱内起 collector,agent 往 localhost 端口发。\n receiver = yield* createInSandboxTraceReceiver(sandbox);\n const endpoint = receiver.endpoint(\"\");\n const env = run.agent.tracing?.env?.(endpoint);\n telemetry = env ? { endpoint, env } : { endpoint };\n const proto = run.agent.tracing?.protocol;\n log(t(\"runner.otlpInSandbox\", { endpoint, proto: proto ? ` (${proto})` : \"\" }));\n }\n }\n catch (e) {\n if (isAttemptAborted(parentSignal))\n throw e;\n recordDiagnostic({\n code: \"telemetry-configure-failed\",\n level: \"warning\",\n message: `telemetry configure failed; continuing without OTLP trace: ${firstLine(formatThrown(e))}`,\n data: evidenceDiagnosticData(\"configure\", e, runtimeCapabilities?.provider),\n });\n receiver = undefined;\n telemetry = undefined;\n }\n }\n // attempt-scope 的进程内 adapter(如 aiSdkAgent + aiSdkOtel)虽然拥有独立 receiver,\n // 仍需要逐轮窗口归属来给 TimingActivity 写入真实 traceId。独立 receiver 不会与其它\n // attempt 混流,因此直接复用同一个 AgentOtelChannel 算法,不必升级成 run 级共享池。\n if (run.agent.kind !== \"sandbox\" && receiver !== undefined && otelChannel === undefined) {\n otelChannel = new AgentOtelChannel(receiver);\n }\n if (run.agent.kind === \"sandbox\" && !reusedSandbox) {\n // 后加先跑:release 链开始时打起点戳(与上面的终点戳配对,测出整段 sandbox.stop)。\n yield* Effect.addFinalizer(() => Effect.sync(() => {\n releaseStartedAt = recorder.offsetNow();\n }));\n }\n // 超时收尾段的证据保全(docs/runner.md「超时:双层保护」超时不丢证据)。注册在这里,\n // LIFO 意味着 release 时它先于上面已注册的 sandbox stop/suspend finalizer 跑——此刻沙箱\n // (若有)仍然存活,赶在停之前抢一次 workspace.diff 折叠;`timedOut` 由 Effect.timeoutTo\n // 的 onTimeout 同步置位,正常收尾(body 走完)时这里直接跳过,不重复采一次已经采过的证据。\n // 沙箱此刻可能已经被 agent 搞挂——withCleanupTimeout 有界执行,导出挂起也不能拖住收尾,\n // 到点如实缺失。计时单独记一条 phases 条目,不入 durationMs(durationMs 已在 onTimeout\n // 按中断时刻定格)。sources 折叠是本地文件读取,与沙箱是否存活无关,一并在这里补。\n yield* Effect.addFinalizer(() => Effect.gen(function* () {\n if (!timedOut)\n return;\n if (run.agent.kind === \"sandbox\" && liveLedger) {\n const startedAt = recorder.offsetNow();\n const diff = yield* Effect.either(cleanupCallback(() => liveLedger!.exportWindows()));\n if (Either.isRight(diff)) {\n timeoutDiff = diff.right;\n let document: AgentWorkspaceDiff | undefined;\n try {\n document = createAgentWorkspaceDiff({\n windows: diff.right,\n policy: liveLedger.attribution,\n });\n }\n catch {\n timeoutFileChangesCapture = createEmptyFileChangesCapture({\n policy: liveLedger.attribution,\n limitations: [Object.freeze({\n code: \"capture-failed\" as const,\n stage: \"normalize\" as const,\n atWindowId: null,\n })],\n });\n }\n if (document !== undefined) {\n timeoutFileChangesCapture = createFileChangesCapture({\n document,\n limitations: [Object.freeze({\n code: \"capture-interrupted\" as const,\n stage: \"finalizer-export\" as const,\n atWindowId: null,\n })],\n });\n }\n }\n else {\n timeoutFileChangesCapture = createEmptyFileChangesCapture({\n policy: liveLedger.attribution,\n limitations: [Object.freeze({\n code: \"capture-interrupted\" as const,\n stage: \"finalizer-export\" as const,\n atWindowId: null,\n })],\n });\n }\n if (timeoutFileChangesCapture !== undefined) {\n assertFileChangesCaptureRecordable(timeoutFileChangesCapture);\n }\n // 沙箱不可用 / 导出挂起到点:如实缺失,不阻塞收尾。\n recorder.record(\"workspace.diff\", recorder.offsetNow() - startedAt);\n }\n const sources = yield* Effect.either(cleanupCallback(() => collectSources(evalDef.source, sourceRegistry)));\n if (Either.isRight(sources))\n timeoutSources = sources.right;\n // 源码读不到:如实缺失,不阻塞收尾。\n }));\n // Scope release owns the interruption seal. It runs before resource\n // release, so entries already declared by the real Context survive a\n // timeout or external cancellation in declaration order.\n yield* Effect.addFinalizer((exit) => Effect.suspend(() => {\n const interrupted = timedOut || (Exit.isFailure(exit) && Cause.isInterruptedOnly(exit.cause));\n if (interrupted)\n sourceCapture.markInterrupted();\n if (!interrupted || liveAssertions === undefined || assertionsSealed) {\n return Effect.void;\n }\n if (liveAssertionState?.late.diff.state === \"pending\") {\n liveAssertionState.late.diff = Object.freeze({\n state: \"unavailable\" as const,\n reason: \"producer-interrupted\" as const,\n });\n }\n return sealAttemptAssertions(liveAssertions, {\n execution: \"errored\",\n interrupted: true,\n }).pipe(Effect.tap((sealed) => Effect.sync(() => {\n assertionsSealed = true;\n timeoutSealedAssertions = sealed;\n })), Effect.tap((sealed) => onSealedEvaluation?.(sealed) ?? Effect.void), \n // Release must preserve the original interruption/failure. A\n // malformed attachment is still reflected by the sealed runtime,\n // but cannot mask the owning Attempt's terminal cause.\n Effect.catchAllCause(() => Effect.void));\n }));\n // Close outstanding bridge promises before the interruption seal. This\n // makes a detached author continuation fail by name while preserving the\n // already declared entries for the finalizer's declaration-order seal.\n yield* Effect.addFinalizer((exit) => Effect.suspend(() => {\n const interrupted = timedOut || (Exit.isFailure(exit) && Cause.isInterruptedOnly(exit.cause));\n return assertFirst.closeEffectRequests(new AssertionAuthoringClosedError(interrupted ? \"attempt-interrupted\" : \"attempt-sealed\"));\n }));\n // Scope 的 LIFO 让作者 cleanup 在 agent teardown 后、Provider Case finalizer 前执行。\n // 这个 finalizer 注册在 bridge close 之后,因此释放时先由桥执行它拥有的 Effect。\n if (run.agent.kind === \"sandbox\") {\n yield* Effect.addFinalizer(() => tryPromiseAsDefect(async () => {\n if (layerCleanups.length === 0)\n return;\n enterPhase(\"sandbox.cleanup\");\n await recorder\n .measureClosing(\"sandbox.cleanup\", async () => {\n const before = diagnostics.length;\n for (let i = layerCleanups.length - 1; i >= 0; i--) {\n const cleanup = layerCleanups[i]!;\n const startedAt = recorder.offsetNow();\n const node = recorder.child(sandboxPrepareActivity({\n label: `${cleanup.label} cleanup`,\n startOffsetMs: startedAt,\n }));\n if (node)\n recorder.pushParent(node);\n try {\n await assertFirst.requestEffect(cleanupCallback((signal) => cleanup.command(commandTarget, {\n ...cleanup.context,\n signal,\n })));\n }\n catch (error) {\n if (node)\n node.failed = true;\n declareFailure(\"sandbox.cleanup\", error);\n diagnostics.push(teardownDiagnostic(\"sandbox.cleanup\", error));\n }\n finally {\n if (node) {\n node.durationMs = Math.max(0, recorder.offsetNow() - startedAt);\n recorder.popParent();\n }\n }\n }\n if (diagnostics.length > before)\n throw new Error(\"sandbox cleanup diagnostics\");\n })\n .catch(() => { });\n }));\n }\n // The legacy setup/diff body remains Promise-shaped, while OTLP waits,\n // author execution, and sealing run in this Attempt's Effect scope. No\n // nested runtime is introduced.\n const bodyFiber = yield* Effect.fork(tryPromiseAsDefect((interruptSignal) => runAttemptBody(a, config, t0, base, {\n sandbox,\n sourceRegistry,\n sourceCapture,\n receiver,\n telemetry,\n otel: otelChannel,\n signal: AbortSignal.any([signal, interruptSignal]),\n log,\n enterPhase,\n // send 在飞时归因到嵌套的 agent.run(不切换顶层阶段,见 LifecyclePhase 注释)。\n getPhase: () => (sendActive ? \"agent.run\" : lastPhase),\n setSendActive: (active) => {\n sendActive = active;\n },\n recorder,\n ...(attemptTimeout ? { attemptTimeout } : {}),\n ...(deadlineAt !== undefined ? { deadlineAt } : {}),\n feedback: scopedFeedback,\n diagnostics,\n commands,\n sensitiveValues,\n observabilityRuntime,\n concurrencySlot,\n declareFailure,\n isDeadlineTimedOut: () => timedOut,\n layerCleanups,\n registerEvidence: (getEvents, getUsage, getRetryAttempts) => {\n liveEvents = getEvents;\n liveUsage = getUsage;\n liveRetryAttempts = getRetryAttempts;\n },\n registerLedger: (ledger) => {\n liveLedger = ledger;\n },\n retainFileChangesCapture: (capture) => {\n fileChangesCapture = capture;\n },\n assertFirst,\n registerAssertions: (runtime, state) => {\n if (liveAssertions !== undefined && liveAssertions !== runtime) {\n throw new Error(\"Attempt tried to register a second Assertions runtime\");\n }\n if (liveAssertionState !== undefined && liveAssertionState !== state) {\n throw new Error(\"Attempt tried to register a second Assertions state\");\n }\n liveAssertions = runtime;\n liveAssertionState = state;\n },\n ...(opts.artifactPrepare !== undefined ? { prepareCoordinator: opts.artifactPrepare } : {}),\n }, parentSignal)));\n const contextExit = yield* Effect.exit(assertFirst.awaitContext());\n if (Exit.isFailure(contextExit)) {\n if (Cause.isInterruptedOnly(contextExit.cause))\n return yield* Effect.interrupt;\n return yield* Fiber.join(bodyFiber);\n }\n const author = Effect.suspend(() => {\n // This is the original frozen author Context; the assertion only\n // resolves Eval-kind overloads and never substitutes a wrapper.\n // Both Promise and deferred Effect calls capture through explicit\n // Attempt-owned dependencies, never fiber-local ALS.\n const returned = evalDef.test(contextExit.value as never) as unknown;\n if (Effect.isEffect(returned)) {\n return returned as Effect.Effect<void, unknown, never>;\n }\n return Effect.tryPromise({\n try: () => Promise.resolve(returned),\n catch: (error) => error,\n });\n });\n const authorExit = yield* Effect.exit(author);\n if (Exit.isSuccess(authorExit)) {\n yield* assertFirst.completeAuthor({ _tag: \"succeeded\" });\n }\n else {\n if (Cause.isInterruptedOnly(authorExit.cause))\n return yield* Effect.interrupt;\n const failure = Cause.failureOption(authorExit.cause);\n const defect = Cause.dieOption(authorExit.cause);\n const completion: AttemptAuthorCompletion = Option.isSome(failure)\n ? isAssertionStopError(failure.value)\n ? { _tag: \"stopped\" }\n : { _tag: \"failed\", error: failure.value }\n : { _tag: \"defect\", cause: Option.isSome(defect) ? defect.value : authorExit.cause };\n yield* assertFirst.completeAuthor(completion);\n }\n // The declared author callback has returned. A detached continuation may\n // still hold a handle, but it cannot enqueue a new control barrier while\n // this Attempt moves to its single ordered seal.\n yield* assertFirst.closeAssertionRequests(new AssertionAuthoringClosedError(\"attempt-sealing\"));\n const sealRequestExit = yield* Effect.exit(assertFirst.awaitSealRequest());\n if (Exit.isFailure(sealRequestExit)) {\n if (Cause.isInterruptedOnly(sealRequestExit.cause))\n return yield* Effect.interrupt;\n return yield* Fiber.join(bodyFiber);\n }\n const sealExit = yield* Effect.exit(sealAttemptAssertions(sealRequestExit.value.runtime, sealRequestExit.value.options, sealRequestExit.value.workspaceDiff).pipe(Effect.tap(() => Effect.sync(() => {\n assertionsSealed = true;\n })), Effect.tap((sealed) => onSealedEvaluation?.(sealed) ?? Effect.void)));\n if (Exit.isSuccess(sealExit)) {\n yield* assertFirst.completeSeal(sealExit.value);\n }\n else {\n if (Cause.isInterruptedOnly(sealExit.cause))\n return yield* Effect.interrupt;\n const failure = Cause.failureOption(sealExit.cause);\n const defect = Cause.dieOption(sealExit.cause);\n yield* assertFirst.failSeal(Option.isSome(failure)\n ? failure.value\n : Option.isSome(defect)\n ? defect.value\n : Cause.squash(sealExit.cause));\n }\n const bodyResult = yield* Fiber.join(bodyFiber);\n // 留存提交:verdict 定稿、其余收尾(teardown 链、diff 采集)已在 body 内完成后,按档位\n // 提交——failed 档留 failed/errored,all 档全部;顺序不可调换:先原子写登记项,写入成功\n // 才把 disposition 改成 keep;写入失败保持 stop、记 diagnostic,`sandbox.kept` 不得为 true。\n const keepMode = opts.keepSandbox;\n if (run.agent.kind === \"sandbox\" &&\n keepMode !== undefined &&\n a.locator !== undefined &&\n (keepMode === \"all\" || bodyResult.verdict === \"failed\" || bodyResult.verdict === \"errored\")) {\n const providerName = runtimeCapabilities!.provider;\n if (runtimeCapabilities!.retention._tag === \"Suspendable\") {\n const enter = nativeEnterCommand(providerName, sandbox.sandboxId);\n const keptAt = new Date().toISOString();\n const expiresAt = computeExpiresAt(providerName, keptAt);\n const registered = yield* Effect.either(writeKeptEntryEffect(coordinationRoot, {\n sandboxId: sandbox.sandboxId,\n provider: providerName,\n evalId: evalDef.id,\n attempt,\n ...(run.experimentId !== undefined ? { experimentId: run.experimentId } : {}),\n locator: String(a.locator),\n verdict: bodyResult.verdict,\n keptAt,\n workdir: sandbox.workdir,\n ...(enter !== undefined ? { enter } : {}),\n ...(expiresAt !== undefined ? { expiresAt } : {}),\n state: \"alive\",\n }));\n if (Either.isRight(registered)) {\n disposition = \"keep\";\n reportKept({\n locator: a.locator,\n identity,\n who: runWho({ agentName: run.agent.name, model: run.model, experimentId: run.experimentId }),\n verdict: bodyResult.verdict,\n provider: providerName,\n sandboxId: sandbox.sandboxId,\n ...(enter !== undefined ? { enter } : {}),\n });\n // 只有 `kept` 在收尾时点决定;provider / sandboxId 等归属键仍由租借时刻的\n // sandboxFacts 统一挂上(见下方 Effect.map)。\n kept = true;\n return bodyResult;\n }\n const error = registered.left;\n recordDiagnostic({\n code: \"sandbox-keep-failed\",\n level: \"warning\",\n message: `failed to register kept sandbox ${sandbox.sandboxId}; it will be destroyed normally: ${error instanceof Error ? error.message : String(error)}`,\n dedupeKey: `sandbox-keep-failed:${sandbox.sandboxId}`,\n });\n }\n }\n return bodyResult;\n })).pipe(\n // attempt 总超时的硬边界(无上限时这一层不挂,见 applyAttemptDeadline)。\n applyAttemptDeadline, \n // body 自己已兜了 agent 执行错;这里兜的是资源获取 / Sample 层的意外(起沙箱失败等)。\n // 中断【不】吞:此时 Sample 已跑完 release(容器已停),把中断继续上抛,让 forEach 整体停掉,\n // 否则会把中断「恢复」成一条 errored 结果、并让后续 attempt 继续起 —— 那就停不下来了。\n // `timeoutTo` 已在内层把自己的中断消费成 onTimeout 的成功值。这里不能仅凭 Cause 中含\n // interrupt 就升级成整批取消:earlyExit 也会中断 losing attempt 的 fiber。整个 Invocation\n // 是否取消只由 invocationSignal 裁决;其它中断在本 attempt 内封成 errored,随后由调度器\n // 的 earlyExit 去重分支丢弃。兄弟 fiber 的真实 defect 仍由它自己的 Cause 向外传播。\n Effect.catchAllCause((cause) => isAttemptAborted(invocationSignal)\n ? Effect.interrupt\n : Effect.suspend(() => {\n // 资源获取 / Sample 层的意外(起沙箱失败、provisioning 的确定性配置死因)同样是终局\n // 失败:先读空间轴回执,再折成纯数据 AttemptError(顺序不可换,见 declareFailure)。\n const raw = Cause.squash(cause);\n const phase = (sendActive ? \"agent.run\" : lastPhase) ?? \"eval.run\";\n declareFailure(phase, raw);\n const error = errorFromThrown(raw, sendActive ? \"agent.run\" : lastPhase, attemptTimeout);\n const fallback: EvalResult = {\n ...base,\n durationMs: recorder.offsetNow(),\n error,\n ...(evalDef.evaluationKind === \"score\" ? { scoreResult: scoreFactOutcomeForAttemptError(error) } : {}),\n ...(commands.length > 0 ? { commands: [...commands] } : {}),\n };\n return Effect.succeed(fallback);\n })), \n // A prepare/setup failure can be caught by runAttemptBody before a real\n // TestContext exists. In that case the scoped body returns an errored\n // value successfully, so catchAllCause above never runs. Enforce the\n // Record boundary as an output postcondition: every executed errored\n // Attempt owns one sealed (possibly empty) assertion result.\n Effect.flatMap((result) => assertionsSealed || result.verdict !== \"errored\"\n ? Effect.succeed(result)\n : sealExecutionError().pipe(Effect.map((sealed) => withSealedAssertions(result, sealed)), Effect.catchAll(() => Effect.succeed(result)))), Effect.map((result) => !timedOut || timeoutSealedAssertions === undefined\n ? result\n : withSealedAssertions(result, timeoutSealedAssertions)), \n // 结果封口在 Sample release 完成之后:sandbox.stop 已由 finalizer 写进 recorder,\n // 这里把完整的阶段计时挂到即将交还的结果上(timeout / scope 兜底分支同样带上)。超时路径\n // 额外把上面那个 finalizer 折叠出的 workspace.diff / sources 并进来——它俩是异步产出,\n // 必须等 Sample release(本 map 之前的所有 finalizer)跑完才有值,不能在 onTimeout 的同步\n // 回调里就地给,原理与 phases 完全一致(见该 finalizer 与 onTimeout 的注释)。\n Effect.map((r: EvalResult): EvalResult => {\n const withEvidence: EvalResult = {\n ...r,\n ...(diagnostics.length > 0 ? { diagnostics: [...diagnostics] } : {}),\n ...(commands.length > 0 ? { commands: [...commands] } : {}),\n };\n const phases = recorder.finalize();\n // 现有阶段计时尚未把 sandbox.create 起点单独持久化;在它可用前落同口径的保守值,\n // 读取旧记录也按 durationMs 回退,绝不因缺值错误携带。\n const withPhases = {\n ...(phases ? { ...withEvidence, phases } : withEvidence),\n executionMs: withEvidence.executionMs ?? withEvidence.durationMs,\n };\n // 调度事实统一在这里挂:每条出口(正常、body 抛错、超时、Sample 层失败)都经过本 map,\n // 归属因此不随「走到了哪一步」丢失(见 sandboxFacts 的声明)。\n const withSandbox: EvalResult = sandboxFacts\n ? { ...withPhases, sandbox: { ...sandboxFacts, ...(kept ? { kept: true as const } : {}) } }\n : withPhases;\n const completed: EvalResult = timedOut\n ? {\n ...withSandbox,\n ...(timeoutDiff !== undefined ? { diff: timeoutDiff } : {}),\n sources: timeoutSources ?? [],\n }\n : withSandbox;\n const finalResult = retainRunnerAttemptSourceCapture(redactEvalResultEvidence(completed, sensitiveValues), sourceCapture.snapshot());\n const capture = timedOut\n ? timeoutFileChangesCapture ?? fileChangesCapture\n : fileChangesCapture;\n if (capture !== undefined) {\n retainRunnerAttemptFileChangesCapture(finalResult, capture);\n }\n bindRunnerAttemptObservabilityCapture(finalResult, observabilityRuntime);\n return finalResult;\n }));\n}\n/**\n * `EvalResult` still has historical renderer fields while its replacement\n * invocation coordinator is being completed. This is the only Runner-side\n * compatibility projection: it derives empty legacy graph arrays and a score\n * terminal view from the one sealed Assert-first result. No Fact collector or\n * Fact/use graph participates in authoring, evaluation, or sealing.\n */\nfunction legacyResultProjectionFromSealedAssertions(sealed: SealedAttemptAssertions, error?: AttemptError, skipReason?: string): Pick<EvalResult, \"factResults\" | \"factUses\" | \"scoreResult\"> {\n const empty = Object.freeze({\n factResults: Object.freeze([]),\n factUses: Object.freeze([]),\n });\n if (sealed.score === undefined)\n return empty;\n if (skipReason !== undefined) {\n return Object.freeze({\n ...empty,\n scoreResult: Object.freeze({\n status: \"skipped\" as const,\n earnedScore: 0,\n creditedScore: null,\n reason: skipReason,\n }),\n });\n }\n const score = sealed.score;\n const earned = score.state === \"unavailable\" ? 0 : score.earned;\n if (sealed.evaluation.execution === \"errored\") {\n const reasons = score.state === \"complete\" ? [] : score.reasons;\n const errors = [Object.freeze({\n kind: \"error\" as const,\n error: Object.freeze({\n class: \"execution\" as const,\n code: error?.code ?? \"assertion-execution-errored\",\n message: error?.message ?? \"Assert-first Attempt sealed after an execution error\",\n }),\n })] as const;\n const scoreResult: Extract<NonNullable<EvalResult[\"scoreResult\"]>, {\n readonly status: \"errored\";\n }> = {\n status: \"errored\",\n earnedScore: earned,\n creditedScore: null,\n errors,\n issues: reasons.map((reason) => Object.freeze({\n kind: \"unavailable\" as const,\n reason,\n })),\n };\n return Object.freeze({\n ...empty,\n scoreResult,\n });\n }\n if (score.state === \"complete\") {\n return Object.freeze({\n ...empty,\n scoreResult: Object.freeze({\n status: \"scored\" as const,\n earnedScore: score.earned,\n creditedScore: score.earned,\n }),\n });\n }\n const [firstReason, ...laterReasons] = score.reasons;\n const issues = [\n Object.freeze({ kind: \"unavailable\" as const, reason: firstReason }),\n ...laterReasons.map((reason) => Object.freeze({\n kind: \"unavailable\" as const,\n reason,\n })),\n ] as const;\n const scoreResult: Extract<NonNullable<EvalResult[\"scoreResult\"]>, {\n readonly status: \"unavailable\";\n }> = {\n status: \"unavailable\",\n earnedScore: earned,\n creditedScore: null,\n issues,\n };\n return Object.freeze({\n ...empty,\n scoreResult,\n });\n}\nfunction withSealedAssertions(result: EvalResult, sealed: SealedAttemptAssertions): EvalResult {\n return {\n ...result,\n verdict: sealed.verdict.state,\n ...legacyResultProjectionFromSealedAssertions(sealed, result.error, result.skipReason),\n };\n}\nfunction isAssertionStopError(value: unknown): value is AssertionStopError {\n return typeof value === \"object\"\n && value !== null\n && (value as {\n readonly _tag?: unknown;\n })._tag === \"AssertionStopError\";\n}\n/** Runner-originated failures before Fact folding still produce a closed Score terminal outcome. */\nexport function scoreFactOutcomeForAttemptError(error: AttemptError): import(\"../assertions/types.ts\").ScoreFactAttemptOutcome {\n return {\n status: \"errored\",\n earnedScore: 0,\n creditedScore: null,\n errors: [{\n kind: \"error\",\n error: { class: \"execution\", code: error.code, message: error.message },\n }],\n issues: [],\n };\n}\n/** 把 catch 到的 e(body 里 test()/setup 抛错,或 Sample 层 squash 出来的原始错误)折成\n * `AttemptError`。message/stack/cause 由 `describeError` 拆分;phase 取失败那一刻打开的\n * 生命周期阶段(极早期就挂、还没跨进任何阶段时兜底 `eval.run`——phase 是必填字段,不留空);\n * code 目前只对确定已知的类别赋稳定码,其余走 `\"unexpected-error\"`——provider 专属的限流码\n * 分类留在各 provider 的 `classifyProvisionError`,没有中性入口能在这里复算,不猜一个可能错的码。 */\nexport function errorFromThrown(e: unknown, phase: LifecyclePhase | undefined, deadline?: {\n timeoutMs: number;\n source: TimeoutSource;\n}): AttemptError {\n if (isSendFailure(e)) {\n const detail = e.cause === undefined ? undefined : describeExternalCause(e.cause);\n return {\n code: \"agent-send-failed\",\n message: sendFailureText(e),\n origin: attemptOrigin(phase ?? \"eval.run\"),\n ...(detail?.stack ? { stack: detail.stack } : {}),\n ...(detail ? { cause: detail.cause } : {}),\n };\n }\n const { message, stack, cause } = describeError(e);\n // 沙箱命令撞线抛的是带归属的错(见 sandbox/deadline.ts):显式传 timeout 的那条命令归\n // `command-timeout`,没显式传的那条上限本来就是 attempt deadline 派生的,归属如实指回\n // deadline —— 两者都不是「不明原因的 unexpected-error」。\n const timeout = timeoutAttributionOf(e, deadline);\n return {\n code: timeout ? \"timeout\" : \"unexpected-error\",\n message,\n origin: attemptOrigin(phase ?? \"eval.run\"),\n ...(timeout ? { timeout } : {}),\n ...(stack ? { stack } : {}),\n ...(cause ? { cause } : {}),\n };\n}\nfunction describeExternalCause(cause: ExternalCause): {\n stack?: string;\n cause: {\n name?: string;\n code?: string;\n message: string;\n };\n} {\n if (cause._tag === \"ThrownValue\")\n return { cause: { message: cause.message } };\n return {\n ...(cause.stack._tag === \"Present\" ? { stack: cause.stack.value } : {}),\n cause: {\n name: cause.name,\n ...(cause.code._tag === \"Present\" ? { code: String(cause.code.value) } : {}),\n message: cause.message,\n },\n };\n}\n/**\n * 命令撞线错误 → 归属三元组;不是这类错误返回 undefined。\n *\n * 命令没显式传 `timeout` 时,它撞的那条线本来就是 attempt deadline 派生出来的剩余量:\n * 归属如实指回 deadline 那一层(值与来源都取解析链的赢家),而不是编造一个「命令自己的上限」。\n */\nfunction timeoutAttributionOf(e: unknown, deadline?: {\n timeoutMs: number;\n source: TimeoutSource;\n}): TimeoutAttribution | undefined {\n if (!(e instanceof SandboxCommandTimeoutError))\n return undefined;\n if (e.explicit)\n return { trigger: \"command-timeout\", limitMs: e.limitMs, source: \"command\" };\n return deadline === undefined\n ? { trigger: \"command-timeout\", limitMs: e.limitMs, source: \"command\" }\n : { trigger: \"attempt-deadline\", limitMs: deadline.timeoutMs, source: deadline.source };\n}\n/**\n * provider 固有会话上限的派发前预检:deadline 超出它时 attempt 会跑到一半被平台截断,\n * 与其让它跑一半赔钱,不如在这里报环境约束——点名 provider 与上限值,并给出两条出路。\n * 全实验同因必死(同一个 provider、同一条 deadline),因此按 experiment 域止损。\n */\nfunction assertDeadlineFitsPlan(capabilities: ReturnType<typeof sandboxRuntimeCapabilities>, deadlineMs: number | undefined): void {\n if (deadlineMs === undefined)\n return;\n if (capabilities.sessionLimit._tag !== \"Bounded\")\n return;\n const limit = capabilities.sessionLimit.milliseconds;\n if (deadlineMs <= limit)\n return;\n throw new ExperimentFatalError(t(\"sandbox.deadlineExceedsSession\", {\n provider: capabilities.provider,\n limitMs: limit,\n timeoutMs: deadlineMs,\n }));\n}\ninterface AttemptResources {\n sandbox: Sandbox;\n /** Attempt-local source snapshot and semantic-token journal; never public Record values. */\n sourceRegistry: SourceRegistry;\n sourceCapture: RunnerAttemptSourceCapture;\n /** 本 attempt 解析出的超时上限与它的出处;超时归属(`error.timeout`)照它落盘。 */\n attemptTimeout?: {\n timeoutMs: number;\n source: TimeoutSource;\n };\n /** attempt deadline 的截止**时刻**;命令节点的时限归属按它算剩余量。四层都没声明上限时缺席。 */\n deadlineAt?: number;\n receiver?: TraceReceiver;\n telemetry?: Telemetry;\n /** 非沙箱 tracing agent 的共享 OTLP 通道(run 级池持有,不随 attempt 关)。 */\n otel?: AgentOtelChannel;\n signal: AbortSignal;\n log: (m: string) => void;\n /** 进入一个正式 LifecyclePhase 边界(见 runAttemptEffect 顶部的定义)。 */\n enterPhase: (phase: LifecyclePhase) => void;\n /** 读当前最近跨入的 phase(send 在飞时返回嵌套的 `agent.run`):error/diagnostic 归因用。 */\n getPhase: () => LifecyclePhase | undefined;\n /** SessionManager 的 send 在飞通知落点(agent.run 归因)。 */\n setSendActive: (active: boolean) => void;\n /** 阶段计时 recorder(turn/command 时间树挂载点)。 */\n recorder: TimingRecorder;\n /** 作用域反馈句柄(归因随 runner 当前阶段);各生命周期入口共享同一实现。 */\n feedback: ScopedFeedback;\n /** attempt 级诊断累计(runAttemptEffect 持有,含 sandbox.create 期间的诊断)。 */\n diagnostics: DiagnosticRecord[];\n /**\n * attempt 级 Sandbox 命令证据累加(runAttemptEffect 持有的同一个数组引用,与\n * diagnostics 同一种「共享容器」模式):`withCommandTiming` 往这里 push,\n * finally 挂到即将返回的结果上(见 diagnostics 的并入点)。\n */\n commands: CommandExitEvidence[];\n /** `CommandOptions.sensitiveValues` 的 Attempt 级内存集合;只由命令包装写、结果封口读。 */\n sensitiveValues: Set<string>;\n /** Private Observability capture; its final attachment facts are read only by the Record adapter. */\n observabilityRuntime: RunnerAttemptObservabilityRuntime;\n /** turn 级重试退避期间释放/收回的全局并发槽位;透传给 Assert-first Context。 */\n concurrencySlot?: ConcurrencySlot;\n /** 终局失败的空间轴回执(runAttemptEffect 持有的同一个闭包):body 的失败路径与 finally 里的\n * per-attempt teardown 失败都经它上报,止损闸据此落闸(见 runAttemptEffect 的 declareFailure)。 */\n declareFailure: (phase: LifecyclePhase, e: unknown) => void;\n /** `timeoutTo` 已经裁定 deadline 后才为 true;用于区分它触发的协作式 abort 与外层 fiber 取消。 */\n isDeadlineTimedOut: () => boolean;\n /** 作者 prepare 成功后登记的 cleanup;由外层 Scope 全局 LIFO 执行。 */\n layerCleanups: LayerCleanupEntry[];\n /** SessionManager 一建好就登记事件/用量的读取句柄回外层(超时证据保全用,见\n * runAttemptEffect 顶部 liveEvents/liveUsage 的注释与 docs/runner.md「超时:双层保护」)。 */\n registerEvidence: (getEvents: () => readonly StreamEvent[], getUsage: () => Usage, getRetryAttempts: () => readonly RetryAttemptRecord[]) => void;\n /** 变更分类账一建好(workspace.baseline 阶段)就登记回外层(超时收尾段折叠 workspace.diff 用)。 */\n registerLedger: (ledger: ChangeLedger) => void;\n /** Record capture freezes independently of Assertion late evidence and crosses the Result boundary once. */\n retainFileChangesCapture: (capture: FileChangesCapture) => void;\n /** The outer Effect boundary owns author execution and the one seal. */\n assertFirst: AssertFirstAttemptBridge<unknown>;\n /** Registers the Attempt-local runtime and its post-run evidence state for scope sealing. */\n registerAssertions: (runtime: AssertionsRuntime<\"pass\" | \"score\">, state: AssertFirstContextState) => void;\n /** Run 级 Agent artifact prepare 协调器;仅 Runner 的 agent.ensure 使用。 */\n prepareCoordinator?: import(\"../agents/provisioner.ts\").ArtifactPrepareCoordinator;\n}\ninterface LayerCleanupEntry {\n readonly command: SandboxCleanupCommand;\n readonly context: Omit<SandboxCommandContext, \"onCleanup\">;\n readonly label: string;\n}\n// attempt 的固定段(上传→基线→setup→驱动 agent→采 diff→脚本→评分→判定)。\n// 资源已由 runAttemptEffect 的 Sample 持有;这里只在 finally 跑 agent 自己的 cleanup/teardown。\nasync function runAttemptBody(a: Attempt, config: Config, t0: number, base: EvalResult, res: AttemptResources, parentSignal: AbortSignal | undefined): Promise<EvalResult> {\n const { evalDef, run, attempt } = a;\n const { sandbox: rawSandbox, sourceRegistry, sourceCapture, receiver, telemetry, otel, signal, log, enterPhase, getPhase, setSendActive, recorder, feedback, diagnostics, commands, sensitiveValues, observabilityRuntime, concurrencySlot, declareFailure, isDeadlineTimedOut, layerCleanups, registerEvidence, registerLedger, retainFileChangesCapture, assertFirst, registerAssertions, prepareCoordinator, } = res;\n const usesSandbox = run.agent.kind === \"sandbox\";\n // 命令时间树:所有经这个包装 sandbox 发出的 runCommand/runShell 都挂成当前阶段(或当前 hook\n // 节点)下的 command 子节点。包装只在最外层公开调用记录一次——provider 内部转调不经过它。\n const sandbox = usesSandbox\n ? withCommandTiming(rawSandbox, recorder, getPhase, commands, sensitiveValues, res.deadlineAt, observabilityRuntime, signal)\n : rawSandbox;\n // Direct Agent 只拿基础 ctx;Sandbox Agent 才拿带真实 Sandbox 的扩展 ctx。\n const attemptCtx: AgentContext = {\n signal,\n evalId: evalDef.id,\n attempt: { id: evalDef.id, index: attempt },\n model: run.model,\n reasoningEffort: run.reasoningEffort,\n flags: run.flags,\n experimentId: run.experimentId,\n ...(evalDef.evalGroup === undefined ? {} : { evalGroup: {\n id: evalDef.evalGroup.id,\n definitionHash: evalDef.evalGroup.definitionHash,\n } }),\n session: createAgentSession(),\n telemetry,\n progress: feedback.progress,\n diagnostic: feedback.diagnostic,\n // log 是 progress({ message }) 的别名,不是第二条通道(见 AgentContext.log 注释)。\n log,\n };\n const sandboxAttemptCtx: SandboxAgentContext = { ...attemptCtx, sandbox };\n const commandTarget = createSandboxCommandTarget(sandbox);\n /** agent.setup 时点已走到(未声明 setup 也置位)——agent.teardown 的触发条件(成对触发规则)。 */\n let agentSetupReached = false;\n const evalPluginLifecycles = linkPluginLifecycles(evalDef.plugins, \"eval\");\n let activatedEvalPlugins = 0;\n const evalPluginContext: EvalPluginContext = {\n experimentId: run.experimentId,\n evalId: evalDef.id,\n attempt,\n ...(evalDef.evalGroup === undefined ? {} : { evalGroupId: evalDef.evalGroup.id }),\n signal,\n progress: feedback.progress,\n diagnostic: feedback.diagnostic,\n };\n // Only the Assert-first runtime is registered with the outer Scope. The\n // body requests its single seal after gathering non-authoring evidence.\n let assertionState: AssertFirstContextState | undefined;\n /** adapter 在 agent.setup 里经 `ctx.reportSetup()` 交回的安装清单(宿主侧内存对象,不经沙箱磁盘;\n * 装了 Skill / plugin / MCP 的沙箱型 adapter 才有)。运行器只把它抬成 attempt artifact,\n * 不解释内容、不按 agent 名字分支;什么都没装的 adapter 不调用 → undefined,不生成空 artifact。 */\n let agentSetup: AgentSetupManifest | undefined;\n // 变更分类账(仅沙箱型;workspace.baseline 阶段建立)。\n let ledger: ChangeLedger | undefined;\n // discovery 的 entry 快照加上调用发生时首次读取的 helper 快照;不在 attempt 收尾重读。\n try {\n if (usesSandbox) {\n // Linker 已按「template owner 在前,另一作者在后」排好命令;fresh/reuse 每条 Attempt\n // 都完整重放。owner 子 phase 只做错误与诊断归因,计时仍聚合在 sandbox.prepare。\n const linked = a.plan._tag === \"Sandbox\" ? a.plan.pair : undefined;\n if (linked !== undefined && linked.commands.length > 0) {\n enterPhase(\"sandbox.prepare\");\n for (const entry of linked.commands) {\n const ownerPhase = entry.owner.kind === \"eval\"\n ? \"sandbox.prepare.eval\"\n : entry.owner.kind === \"eval-group\"\n ? \"sandbox.prepare.group\"\n : \"sandbox.prepare.experiment\";\n enterPhase(ownerPhase);\n const label = `${entry.owner.kind}#${entry.index}`;\n const startedAt = recorder.offsetNow();\n const node = recorder.child(sandboxPrepareActivity({\n label,\n startOffsetMs: startedAt,\n }));\n if (node)\n recorder.pushParent(node);\n const cleanupContext: Omit<SandboxCommandContext, \"onCleanup\"> = {\n phase: \"prepare\",\n ...(evalDef.evalGroup === undefined ? {} : { evalGroup: {\n id: evalDef.evalGroup.id,\n definitionHash: evalDef.evalGroup.definitionHash,\n } }),\n owner: entry.owner,\n attempt: { id: `${run.experimentId}/${evalDef.id}`, index: attempt },\n signal,\n progress: feedback.progress,\n diagnostic: feedback.diagnostic,\n };\n const context: SandboxCommandContext = {\n ...cleanupContext,\n onCleanup(command) {\n if (typeof command !== \"function\")\n throw new TypeError(\"sandbox cleanup must be a function\");\n layerCleanups.push({ command, context: cleanupContext, label });\n },\n };\n try {\n await entry.command(commandTarget, context);\n }\n catch (error) {\n if (node)\n node.failed = true;\n throw error;\n }\n finally {\n if (node) {\n node.durationMs = Math.max(0, recorder.offsetNow() - startedAt);\n recorder.popParent();\n }\n }\n }\n }\n for (const lifecycle of evalPluginLifecycles) {\n activatedEvalPlugins += 1;\n if (lifecycle.setup !== undefined) {\n await (lifecycle.setup as (context: EvalPluginContext) => void | Promise<void>)(evalPluginContext);\n }\n }\n // 两侧作者的环境准备完成后,Runner 统一执行 Agent ensure;adapter setup 只能写运行时\n // 配置/凭据,不能自行安装或跳过 probe → install → recheck 循环。\n if (run.agent.kind === \"sandbox\") {\n if (a.plan._tag !== \"Sandbox\") {\n throw new Error(`sandbox agent ${JSON.stringify(run.agent.name)} received a Direct plan`);\n }\n enterPhase(\"agent.ensure\");\n log(t(\"runner.startAgentEnsure\"));\n const verified = await assertFirst.requestEffect(Effect.either(verifySandboxTargetPlatform(sandbox, a.plan.providerPlan.target.platform)));\n if (Either.isLeft(verified))\n throw verified.left;\n const ensureEffect = runAgentEnsure(run.agent.ensure, run.agent.installers, sandbox, {\n coordinator: Option.fromNullable(prepareCoordinator),\n targetPlatform: a.plan.providerPlan.target.platform,\n signal,\n progress: feedback.progress,\n });\n const ensured = await assertFirst.requestEffect(Effect.either(ensureEffect));\n if (Either.isLeft(ensured))\n throw ensured.left;\n }\n // 作者准备与 Agent ensure 都不属于 Agent diff;Runner 在这些\n // 基础设施活动完成后建立统一的 Agent 可归因起点。\n enterPhase(\"workspace.baseline\");\n ledger = await createChangeLedger(sandbox, evalDef.diff === undefined\n ? undefined\n : { include: [...evalDef.diff.include], ignore: [...evalDef.diff.ignore] });\n registerLedger(ledger);\n }\n if (!usesSandbox) {\n for (const lifecycle of evalPluginLifecycles) {\n activatedEvalPlugins += 1;\n if (lifecycle.setup !== undefined) {\n await (lifecycle.setup as (context: EvalPluginContext) => void | Promise<void>)(evalPluginContext);\n }\n }\n }\n // agent 自己的 lifecycle:装 CLI、写 config(每个沙箱一次,不在每轮 send 里)。\n // 时点在此走到(未声明 setup 也算)——agent.teardown 据此触发。\n agentSetupReached = true;\n if (run.agent.setup) {\n enterPhase(\"agent.setup\");\n log(t(\"runner.startAgentSetup\"));\n const returned = (await (run.agent.kind === \"sandbox\"\n ? run.agent.setup(sandbox, {\n ...sandboxAttemptCtx,\n reportSetup: (manifest) => (agentSetup = manifest),\n })\n : run.agent.setup(attemptCtx))) as unknown;\n if (typeof returned === \"function\") {\n throw new Error(t(\"runner.setupReturnedCleanup\", {\n layer: `Agent.setup (${run.agent.name})`,\n hint: \"Agent.teardown\",\n }).trimEnd());\n }\n }\n // OTLP 导出配置(file-based,如 codex 的 config.toml [otel] 块):与 setup 分开,\n // 在主配置写完后追加。仅当 tracing 开 + 有 endpoint 时调一次(env-based 的不实现 configure)。\n if (telemetry && run.agent.kind === \"sandbox\" && run.agent.tracing?.configure) {\n enterPhase(\"telemetry.configure\");\n log(t(\"runner.startAgentTracing\"));\n try {\n await run.agent.tracing.configure(sandbox, sandboxAttemptCtx);\n }\n catch (configureError) {\n if (isBodyInterrupted(signal, parentSignal, isDeadlineTimedOut()))\n throw configureError;\n feedback.diagnostic({\n code: \"telemetry-configure-failed\",\n level: \"warning\",\n message: `telemetry configure failed; continuing without OTLP trace: ${firstLine(formatThrown(configureError))}`,\n data: evidenceDiagnosticData(\"configure\", configureError, a.plan._tag === \"Sandbox\" ? a.plan.providerPlan.provider : undefined),\n });\n }\n }\n // 构造 t,跑 test\n enterPhase(\"eval.run\");\n log(t(\"runner.driveAgent\"));\n const { context, state } = createAssertFirstEvalContext({\n agent: run.agent,\n sandbox,\n evalId: evalDef.id,\n attempt: { id: evalDef.id, index: attempt },\n ...(evalDef.evalGroup === undefined ? {} : { evalGroup: {\n id: evalDef.evalGroup.id,\n definitionHash: evalDef.evalGroup.definitionHash,\n } }),\n model: run.model,\n reasoningEffort: run.reasoningEffort,\n // maxCost 断言的估算价目表;与 observed usage.costUSD 互不兜底。\n pricing: config.pricing,\n flags: run.flags,\n experimentId: run.experimentId,\n judge: a.judge,\n executeStop: assertFirst.requestAssertion,\n // Public author send/respond keep their Promise surface, but their\n // complete Effect graph is executed only by this Attempt-owned bridge.\n requestEffect: assertFirst.requestEffect,\n signal,\n log,\n telemetry,\n otel,\n feedback,\n concurrencySlot,\n // 实验分类器:send 链上排在 adapter 的 classifySendFailure 之前(见\n // docs/feature/error-classification/architecture.md「分类链」)。与本文件 declareFailure\n // 走的生命周期链是同一个函数,两条链的决议序各自单源在 send-failures.ts / failure-class.ts。\n experimentClassifier: run.classifyFailure,\n sourceRegistry,\n nextSourceOrder: sourceCapture.nextSourceOrder,\n // Pass / Score share the same Assert-first entry runtime. Their\n // independent folds are both derived only after this Attempt seals.\n evaluationKind: evalDef.evaluationKind ?? \"pass\",\n // send 窗口钩子:进入前落 eval 归因、返回后落 agent 归因(见 ledger.ts)。\n ledgerHooks: ledger\n ? {\n beforeSend: (label) => ledger!.commitEvalWindow(label),\n afterSend: (label) => ledger!.commitAgentWindow(label),\n }\n : undefined,\n onSendActive: setSendActive,\n timingNow: recorder.offsetNow,\n // 每次 send 一个 turn 节点:本地单调时钟测得的端到端包络 + 与 diff/source 共用的\n // session/turn 身份 token;\n // OTel 接入时再带 traceId,trace.json 的 spans 由消费方按它临时挂到 turn 下。usage 有记录\n // 才带(show `--execution`/`--timing` 的 turn 头行读 TimingNode.usage,见 docs/feature/\n // results/architecture.md「result.json」TimingNode.usage)。\n onTurn: (info) => {\n const turnId = captureRunnerPhysicalConversationTurn({\n runtime: observabilityRuntime,\n outcome: info.outcome,\n events: info.events,\n });\n sourceCapture.onTurn({ ...info, ...(turnId === undefined ? {} : { turnId }) });\n if (info.usage !== undefined) {\n captureRunnerTurnUsage(observabilityRuntime, info.usage);\n }\n return recorder.child(turnActivity({\n label: info.label,\n startOffsetMs: info.startOffsetMs,\n durationMs: info.durationMs,\n ...(info.failed ? { failed: true as const } : {}),\n sessionIndex: info.sessionIndex,\n turnIndex: info.turnIndex,\n ...(turnId === undefined ? {} : { turnId }),\n ...(info.traceId !== undefined ? { traceId: info.traceId } : {}),\n ...(info.traceAttribution !== undefined ? { traceAttribution: info.traceAttribution } : {}),\n ...(info.usage !== undefined ? { usage: info.usage } : {}),\n }));\n },\n });\n sourceCapture.attachAssertions(state.assertions);\n // 登记回外层:超时中断后由 onTimeout 直接读这两个句柄组装 events/usage(见\n // registerEvidence 注释、docs/runner.md「超时:双层保护」超时不丢证据)。\n registerEvidence(() => state.manager.allEvents, () => state.manager.usage, () => state.manager.retryAttempts);\n assertionState = state;\n registerAssertions(state.assertions, state);\n let error: AttemptError | undefined;\n let skipReason: string | undefined;\n try {\n await assertFirst.requestEffect(assertFirst.offerContext(context));\n const author = await assertFirst.requestEffect(assertFirst.awaitAuthor());\n if (author._tag === \"failed\")\n throw author.error;\n if (author._tag === \"defect\")\n throw author.cause;\n }\n catch (e) {\n if (e instanceof EvalSkipped) {\n skipReason = e.reason;\n }\n else {\n // eval 脚本(比如引用了已改名/删掉的 API)抛出的 TypeError:message 是一层原因,完整 stack\n // 单独进 `error.stack`,niceeval show 展开时才看得到 eval 文件的 file:line。\n // 作者从 test(t) 体内抛的 ExperimentFatalError / EvalFatalError 也走这条分支。\n declareFailure(getPhase() ?? \"eval.run\", e);\n error = errorFromThrown(e, getPhase(), res.attemptTimeout);\n }\n }\n if (skipReason)\n log(t(\"runner.skip\", { reason: skipReason }));\n // 采 agent 归因增量(workspace.diff 阶段:从分类账折叠逐窗口 delta)。Direct Agent 没有 workspace。\n if (!skipReason && usesSandbox)\n enterPhase(\"workspace.diff\");\n let diffWindows: DiffArtifact = [];\n let diffArtifactAvailable = true;\n let diffExportAvailable = true;\n const captureFailure = state.manager.ledgerCaptureFailure;\n if (captureFailure !== undefined) {\n // `afterSend` is intentionally non-fatal to the completed agent Turn,\n // but its missing checkpoint makes every later workspace document\n // incomplete. Do not export the surviving prefix as a complete diff.\n diffArtifactAvailable = false;\n feedback.diagnostic({\n code: \"workspace-diff-unavailable\",\n level: \"warning\",\n message: `workspace diff capture failed after ${captureFailure.label}; treating the diff as unavailable: ${firstLine(formatThrown(captureFailure.error))}`,\n data: evidenceDiagnosticData(\"capture\", captureFailure.error, a.plan._tag === \"Sandbox\" ? a.plan.providerPlan.provider : undefined),\n });\n }\n if (usesSandbox && ledger) {\n const startedAt = recorder.offsetNow();\n const operation = recorder.child(workspaceDiffExportActivity({\n label: \"export workspace diff\",\n startOffsetMs: startedAt,\n durationMs: 0,\n }));\n if (operation)\n recorder.pushParent(operation);\n try {\n diffWindows = await ledger.exportWindows();\n if (operation) {\n const files = new Set(diffWindows.flatMap((window) => Object.keys(window.changes))).size;\n operation.label = `export workspace diff · ${diffWindows.length} ${diffWindows.length === 1 ? \"window\" : \"windows\"} · ${files} ${files === 1 ? \"file\" : \"files\"}`;\n }\n }\n catch (diffError) {\n if (operation)\n operation.failed = true;\n if (isBodyInterrupted(signal, parentSignal, isDeadlineTimedOut()))\n throw diffError;\n diffArtifactAvailable = false;\n diffExportAvailable = false;\n feedback.diagnostic({\n code: \"workspace-diff-unavailable\",\n level: \"warning\",\n message: `workspace diff export failed; continuing with command/event evidence: ${firstLine(formatThrown(diffError))}`,\n data: evidenceDiagnosticData(\"exportWindows\", diffError, a.plan._tag === \"Sandbox\" ? a.plan.providerPlan.provider : undefined),\n });\n }\n finally {\n if (operation) {\n operation.durationMs = Math.max(0, recorder.offsetNow() - startedAt);\n recorder.popParent();\n }\n }\n }\n const diff = deriveDiffData(diffWindows);\n let workspaceDiff: AgentWorkspaceDiff | undefined;\n if (usesSandbox && ledger) {\n let document: AgentWorkspaceDiff | undefined;\n if (diffExportAvailable) {\n try {\n document = createAgentWorkspaceDiff({\n windows: diffWindows,\n policy: ledger.attribution,\n });\n }\n catch (diffError) {\n diffArtifactAvailable = false;\n feedback.diagnostic({\n code: \"workspace-diff-unavailable\",\n level: \"warning\",\n message: `workspace diff freeze failed; continuing with command/event evidence: ${firstLine(formatThrown(diffError))}`,\n data: evidenceDiagnosticData(\"freeze\", diffError, a.plan._tag === \"Sandbox\" ? a.plan.providerPlan.provider : undefined),\n });\n }\n }\n const limitations = [\n ...(captureFailure === undefined ? [] : [Object.freeze({\n code: \"capture-failed\" as const,\n stage: \"checkpoint\" as const,\n atWindowId: captureFailure.label,\n })]),\n ...(!diffExportAvailable ? [Object.freeze({\n code: \"capture-failed\" as const,\n stage: \"export\" as const,\n atWindowId: null,\n })] : []),\n ];\n if (document === undefined) {\n const capture = createEmptyFileChangesCapture({\n policy: ledger.attribution,\n limitations: [\n ...limitations,\n ...(diffExportAvailable ? [Object.freeze({\n code: \"capture-failed\" as const,\n stage: \"normalize\" as const,\n atWindowId: null,\n })] : []),\n ],\n });\n assertFileChangesCaptureRecordable(capture);\n retainFileChangesCapture(capture);\n }\n else {\n const capture = createFileChangesCapture({ document, limitations });\n assertFileChangesCaptureRecordable(capture);\n retainFileChangesCapture(capture);\n }\n // A malformed family payload or its blob closure is a producer defect,\n // not a collector limitation. Keep this outside the collector catches.\n if (!skipReason && diffArtifactAvailable && captureFailure === undefined && document !== undefined) {\n state.late.diff = Object.freeze({\n state: \"available\" as const,\n document,\n });\n workspaceDiff = document;\n }\n else {\n state.late.diff = Object.freeze({\n state: \"unavailable\" as const,\n reason: \"producer-failed\" as const,\n });\n }\n }\n else {\n state.late.diff = Object.freeze({\n state: \"unavailable\" as const,\n reason: usesSandbox\n ? \"producer-failed\" as const\n : \"sandbox-unavailable\" as const,\n });\n }\n if (!skipReason && usesSandbox && diffArtifactAvailable) {\n const files = Object.values(diff.files);\n log(t(\"runner.diffProgress\", {\n changed: files.filter((f) => f.net !== \"deleted\").length,\n deleted: files.filter((f) => f.net === \"deleted\").length,\n }));\n }\n const scripts: globalThis.Record<string, ScriptResult> = {};\n state.late.scripts = scripts;\n // Runtime observations remain available to trace/cost projection. Assertion\n // authoring itself has already been captured as sealed-entry registrations.\n const events = state.manager.allEvents;\n const usage = state.manager.usage;\n const facts = deriveRunFacts(events);\n if (!skipReason)\n enterPhase(\"assertions.evaluate\");\n const sealedAssertions = await assertFirst.requestEffect(assertFirst.requestSeal({\n runtime: state.assertions,\n options: {\n execution: error === undefined ? \"completed\" : \"errored\",\n explicitlySkipped: skipReason !== undefined,\n },\n ...(workspaceDiff === undefined ? {} : { workspaceDiff }),\n }));\n const verdict = sealedAssertions.verdict.state;\n // 收 OTLP trace:给最后一批导出留点落地时间,再 collect(空则不挂)。\n // codex 的 OTLP 把内部 Rust tracing 全导出来(handle_responses / append_items … 上万条);\n // 先经【每-agent mapper】把原生 span 归一到 canonical GenAI semconv(定 SpanKind),\n // 再 selectTraceSpans 按 kind 挑出回合/模型/工具,丢掉 \"other\" 噪声(干净小 trace 整段保留)。\n let trace: TraceSpan[] | undefined;\n if (receiver) {\n enterPhase(\"telemetry.collect\");\n try {\n await assertFirst.requestEffect(Effect.raceFirst(receiver.settle(250, 1500), interruptOnAbort(signal)));\n const spans = receiver.collect();\n if (spans.length) {\n // 归一 → 选语义 span → 按 call_id 把 transcript 的工具入参/出参 join 上去(span 自身不带命令文本)。\n // 对接口分发,不按名字分支:mapper 由 Agent 自己声明,缺省走通用 heuristic。\n const canonical = (run.agent.spanMapper ?? mapGenericSpans)(spans);\n trace = enrichTraceWithIO(selectTraceSpans(canonical), facts.toolCalls);\n const note = spans.length > trace.length ? t(\"runner.traceSelected\", { count: trace.length }) : \"\";\n log(`trace:${spans.length} span${note}`);\n }\n }\n catch (collectError) {\n if (isBodyInterrupted(signal, parentSignal, isDeadlineTimedOut()))\n throw collectError;\n feedback.diagnostic({\n code: \"telemetry-collect-failed\",\n level: \"warning\",\n message: `telemetry collect failed; retaining the existing verdict: ${firstLine(formatThrown(collectError))}`,\n data: evidenceDiagnosticData(\"collect\", collectError, a.plan._tag === \"Sandbox\" ? a.plan.providerPlan.provider : undefined),\n });\n }\n }\n else if (otel) {\n // 共享通道:receiver 不归本 attempt 关,trace 只取归属到本 attempt 的 span\n //(逐轮攒的 + 按本 attempt traceId sweep 回的迟到批)。\n enterPhase(\"telemetry.collect\");\n try {\n const late = await assertFirst.requestEffect(Effect.raceFirst(otel.sweepEffect(state.manager.otelTraceIds, state.manager.otelTurnWindows), interruptOnAbort(signal)));\n const traceIdsBeforeDeferred = new Set(state.manager.otelTraceIds);\n const deferred = state.manager.attributeDeferredOtel(late);\n const knownLate = late.filter((span) => traceIdsBeforeDeferred.has(span.traceId));\n const spans = [...state.manager.otelSpans, ...knownLate, ...deferred].filter((span, index, all) => all.findIndex((candidate) => candidate.spanId === span.spanId) === index);\n if (spans.length) {\n const canonical = (run.agent.spanMapper ?? mapGenericSpans)(spans);\n trace = enrichTraceWithIO(selectTraceSpans(canonical), facts.toolCalls);\n const note = spans.length > trace.length ? t(\"runner.traceSelected\", { count: trace.length }) : \"\";\n log(`trace:${spans.length} span${note}`);\n }\n }\n catch (collectError) {\n if (isBodyInterrupted(signal, parentSignal, isDeadlineTimedOut()))\n throw collectError;\n feedback.diagnostic({\n code: \"telemetry-collect-failed\",\n level: \"warning\",\n message: `telemetry collect failed; retaining the existing verdict: ${firstLine(formatThrown(collectError))}`,\n data: evidenceDiagnosticData(\"collect\", collectError),\n });\n }\n }\n // 主链到 telemetry.collect 为止。必须在 Effect Sample release 之前显式封口;否则最后一个\n // 主链 phase 会一直开到 sandbox.stop 完成,既把收尾时间重复算进主链,也会让 phases\n // 主链合计大于 durationMs。Sample finalizer 只负责另记 sandbox.stop / sandbox.suspend。\n recorder.closeCurrent();\n const durationMs = recorder.offsetNow();\n const o11y = buildO11ySummary(events);\n // 单向字段契约:estimatedCostUSD 恒为 estimateCost(run.model, usage, config.pricing)\n // 的 runtime/config price table 估算,永远独立计算;observed 成本(网关/adapter 显式回报)\n // 只留在 usage.costUSD,两者互不覆盖、互不兜底——即使 observed 存在也照常估算。\n // 权威唯一在 result.json 的 estimatedCostUSD;o11y.json 只留行为计数(见 docs/feature/record/architecture.md「o11y.json」)。\n const estimatedCostUSD = estimateCost(run.model, usage, config.pricing);\n // Assert-first entries carry no legacy source graph. Session events and the\n // captured entry module still provide the stable source artifact surface.\n const sources = await collectSources(evalDef.source, sourceRegistry);\n const legacyProjection = legacyResultProjectionFromSealedAssertions(sealedAssertions, error, skipReason);\n const value: EvalResult = {\n id: evalDef.id,\n description: evalDef.description,\n experimentId: run.experimentId,\n experiment: experimentRunInfo(run, a.plan, a.sandboxPlansByEval, config, a.judge),\n agent: run.agent.name,\n model: run.model,\n verdict,\n fingerprint: a.fingerprint,\n evaluationAlgorithm: EVALUATION_ALGORITHM,\n configHash: a.configHash,\n attempt,\n startedAt: new Date(t0).toISOString(),\n durationMs,\n ...legacyProjection,\n evaluationKind: evalDef.evaluationKind ?? \"pass\",\n ...(state.manager.retryAttempts.length > 0 ? { retryAttempts: state.manager.retryAttempts } : {}),\n usage,\n estimatedCostUSD,\n error,\n skipReason,\n events,\n sources,\n o11y,\n trace,\n agentSetup,\n ...(diffArtifactAvailable ? { diff: diffWindows } : {}),\n evidenceCoverage: state.manager.evidenceCoverage,\n // sandbox 归属不在这里拼:它是租借时刻就定死的调度事实,由 runAttemptEffect 统一挂到\n // 每一条出口结果上(含 setup 失败与超时),见那边的 `sandboxFacts`。\n };\n return value;\n }\n catch (e) {\n // telemetry / diff 等 supplemental 路径显式保留 AbortSignal 语义;不要把用户中断\n // 降成 AttemptError 或 warning。外层 Effect 会负责中止并运行 release/finalizer。\n if (isBodyInterrupted(signal, parentSignal, isDeadlineTimedOut()))\n throw e;\n recorder.failCurrent();\n // SandboxLayer command / agent.setup / 评分链路抛出的终局失败:同样先读空间轴回执,\n // 再折成纯数据 AttemptError(顺序不可换,见 declareFailure)。\n declareFailure(getPhase() ?? \"eval.run\", e);\n const error = errorFromThrown(e, getPhase(), res.attemptTimeout);\n // If setup failed before Context construction, release the outer Effect\n // boundary instead of leaving it waiting for a Context that cannot exist.\n await assertFirst.requestEffect(assertFirst.failBeforeContext(e));\n let sealed: SealedAttemptAssertions | undefined;\n if (assertionState !== undefined) {\n if (assertionState.late.diff.state === \"pending\") {\n assertionState.late.diff = Object.freeze({\n state: \"unavailable\" as const,\n reason: \"producer-failed\" as const,\n });\n }\n try {\n sealed = await assertFirst.requestEffect(assertFirst.requestSeal({\n runtime: assertionState.assertions,\n options: { execution: \"errored\" },\n }));\n }\n catch {\n // The outer Effect branch owns attachment/seal failures. Keep this\n // fallback as an execution error without inventing another runtime.\n }\n }\n const value: EvalResult = {\n ...base,\n durationMs: recorder.offsetNow(),\n error,\n ...(sealed === undefined\n ? (evalDef.evaluationKind === \"score\" ? { scoreResult: scoreFactOutcomeForAttemptError(error) } : {})\n : legacyResultProjectionFromSealedAssertions(sealed, error)),\n ...(agentSetup !== undefined ? { agentSetup } : {}),\n };\n return value;\n }\n finally {\n // 收尾段一律在 finally 跑(主链成败都执行),不改判定,各自兜错(diagnostic)、各自计时\n // (不计入 durationMs 口径,见 docs/feature/record/architecture.md)。执行序与 LifecyclePhase\n // 闭集声明一致:agent.teardown → sandbox.cleanup;各段可独立标 failed。\n // 沙箱 stop / 接收器 close 不在这里 —— 由 runAttemptEffect 的 Sample 在本函数返回后回收,\n // 并经 finalizer 计成 sandbox.stop。没有对应 teardown/cleanup 的段直接跳过,不产生空阶段。\n if (agentSetupReached && run.agent.teardown) {\n enterPhase(\"agent.teardown\");\n await recorder\n .measureClosing(\"agent.teardown\", async () => {\n try {\n // 先按 kind 收窄 Agent 联合,再取 teardown —— 否则可选属性访问会把\n // AgentTeardown | DirectAgentTeardown 混成无法调用的签名。\n if (run.agent.kind === \"sandbox\") {\n const teardown = run.agent.teardown;\n if (teardown) {\n await assertFirst.requestEffect(cleanupCallback((signal) => teardown(sandbox, {\n ...sandboxAttemptCtx,\n signal,\n })));\n }\n }\n else {\n const teardown = run.agent.teardown;\n if (teardown) {\n await assertFirst.requestEffect(cleanupCallback((signal) => teardown({\n ...attemptCtx,\n signal,\n })));\n }\n }\n }\n catch (e) {\n declareFailure(\"agent.teardown\", e);\n diagnostics.push(teardownDiagnostic(\"agent.teardown\", e));\n throw e;\n }\n })\n .catch(() => { });\n }\n for (const lifecycle of evalPluginLifecycles.slice(0, activatedEvalPlugins).reverse()) {\n if (lifecycle.teardown === undefined)\n continue;\n try {\n await assertFirst.requestEffect(cleanupCallback((signal) => (lifecycle.teardown as (context: EvalPluginContext) => void | Promise<void>)({\n ...evalPluginContext,\n signal,\n })));\n }\n catch (error) {\n feedback.diagnostic({\n code: \"plugin-lifecycle-teardown-failed\",\n level: \"warning\",\n message: error instanceof Error ? error.message : String(error),\n });\n }\n }\n // Agent teardown 是 Promise author 边界内最后一步;作者 cleanup / Provider Case\n // 都由外层 Effect Scope finalizer 接管。\n }\n}\n/** 把一次 teardown / cleanup 失败折成一条 `DiagnosticRecord`(warning,不改判定)。message 取一层\n * 摘要(`firstLine(formatThrown)`),完整 stack 不塞进单 attempt 诊断 —— 诊断是「顺带发生的清理\n * 问题」,不是 attempt 的主因(主因在 verdict / error)。稳定 code `teardown-failed`。 */\nfunction teardownDiagnostic(phase: LifecyclePhase, e: unknown): DiagnosticRecord {\n return {\n code: \"teardown-failed\",\n level: \"warning\",\n detail: firstLine(formatThrown(e)),\n origin: attemptOrigin(phase),\n };\n}\n/** telemetry / diff 等 supplemental 采集失败不能吞掉 Attempt 自己的中断。 */\nfunction isAttemptAborted(signal: AbortSignal | undefined): boolean {\n return signal?.aborted === true;\n}\n/**\n * The legacy body treated rejected author and SDK promises as defects. Keep\n * that result channel while giving every Promise a named Effect v3 boundary\n * and its cancellation signal.\n */\nfunction tryPromiseAsDefect<Value>(run: (signal: AbortSignal) => PromiseLike<Value>): Effect.Effect<Value> {\n return Effect.tryPromise({\n try: run,\n catch: (error) => error,\n }).pipe(Effect.orDie);\n}\n/**\n * This named `Effect.tryPromise` bridge aborts its callback signal for every\n * fiber interruption while preserving the legacy defect channel for rejected\n * setup/body promises. A timeout uses that same path only after `timeoutTo`\n * has synchronously set its winner bit, so only the unmarked case is an\n * external fiber cancellation.\n */\nfunction isBodyInterrupted(signal: AbortSignal, parentSignal: AbortSignal | undefined, deadlineTimedOut: boolean): boolean {\n return isAttemptAborted(parentSignal) || (signal.aborted && !deadlineTimedOut);\n}\n/** 诊断只保存有界结构化 cause,不把完整 SDK response 或 stack 灌进结果。 */\nfunction evidenceDiagnosticData(operation: string, e: unknown, provider?: string): Readonly<globalThis.Record<string, JsonValue>> {\n const described = describeError(e);\n const bounded = (value: string): string => firstLine(value).slice(0, 500);\n const cause = described.cause === undefined\n ? undefined\n : {\n ...(described.cause.name !== undefined ? { name: described.cause.name } : {}),\n ...(described.cause.code !== undefined ? { code: described.cause.code } : {}),\n message: bounded(described.cause.message),\n };\n return {\n operation,\n ...(provider !== undefined ? { provider } : {}),\n error: bounded(described.message),\n ...(cause !== undefined ? { cause } : {}),\n };\n}\n/**\n * 不参加敏感值替换的 Attempt 元数据。它们是调度、缓存与引用身份,或作者源码的原样快照;\n * 改写会让 result 与 run/manifests 身份分叉。其余 EvalResult 字段一律视为运行期证据并在\n * Attempt 交给 reporter 前递归封口。新增 EvalResult 字段默认不能悄悄落进豁免表:下面的\n * `EvalResultRedactionUnclassifiedKey` 会迫使作者明确裁决它属于哪一侧。\n */\nconst EVAL_RESULT_REDACTION_EXEMPT_KEYS = [\n \"id\",\n \"description\",\n \"experimentId\",\n \"experiment\",\n \"agent\",\n \"model\",\n \"verdict\",\n \"fingerprint\",\n \"evaluationAlgorithm\",\n \"configHash\",\n \"attempt\",\n \"startedAt\",\n \"locator\",\n \"locatorRunId\",\n \"durationMs\",\n \"executionMs\",\n \"evaluationKind\",\n \"usage\",\n \"estimatedCostUSD\",\n \"sources\",\n \"sandbox\",\n \"artifactBase\",\n \"carriedAccepting\",\n \"migratedFrom\",\n \"acceptedFrom\",\n \"renamedFrom\",\n \"artifacts\",\n] as const satisfies readonly (keyof EvalResult)[];\nconst EVAL_RESULT_REDACTED_EVIDENCE_KEYS = [\n \"factResults\",\n \"factUses\",\n \"scoreResult\",\n \"retryAttempts\",\n \"error\",\n \"diagnostics\",\n \"phases\",\n \"skipReason\",\n \"events\",\n \"o11y\",\n \"trace\",\n \"agentSetup\",\n \"evidenceCoverage\",\n \"diff\",\n \"commands\",\n \"rawTranscript\",\n] as const satisfies readonly (keyof EvalResult)[];\ntype EvalResultRedactionUnclassifiedKey = Exclude<keyof EvalResult, (typeof EVAL_RESULT_REDACTION_EXEMPT_KEYS)[number] | (typeof EVAL_RESULT_REDACTED_EVIDENCE_KEYS)[number]>;\n/**\n * Attempt 的持久化证据封口。命令级元数据可能在较晚的 send/teardown 才登记,因此这里对\n * result.json、聚合 JSON/JUnit 与独立 artifact 会消费的全部运行期结构再做一次最终扫描,\n * 堵住“较早证据已写进内存、较晚才得知同一敏感值”的时序洞。源码与身份不是命令证据;\n * 任意自由文本里的未知 secret 仍必须由产生它的命令显式登记。\n */\nfunction redactEvalResultEvidence(result: EvalResult, sensitiveValues: ReadonlySet<string>): EvalResult {\n if (sensitiveValues.size === 0)\n return result;\n // 编译期穷尽守卫:EvalResult 新增字段却没在上面两侧明确归类时,这里不再能赋值。\n const allFieldsClassified: EvalResultRedactionUnclassifiedKey extends never ? true : never = true;\n void allFieldsClassified;\n const redact = <Value>(value: Value): Value => redactSensitiveEvidence(value, sensitiveValues);\n const redactedEvidence = Object.fromEntries(EVAL_RESULT_REDACTED_EVIDENCE_KEYS.flatMap((key) => {\n const value = result[key];\n return value === undefined ? [] : [[key, redact(value)] as const];\n }));\n return {\n ...result,\n ...redactedEvidence,\n };\n}\n/**\n * 命令时间树包装:四个公开 run* 方法的最外层调用各记一个 command 子节点\n * (有界脱敏摘要 + exitCode;env 值不进入时间树)。Proxy 拦截 checked 与 unchecked 两组方法,\n * provider 内部 `this.runCommand(...)` 转调不经过它——不形成重复节点。每条命令(成功与非零\n * 退出都算)额外把已按已知敏感值脱敏的 `CommandResult` 登记进 `commands` 累加器,登记发生在\n * 把结果交还调用方**之前**\n * (docs/feature/record/architecture.md「commandsjson」);登记不改变 `runCommand` 的\n * 返回/抛错语义,调用方可以处理非零退出并继续,证据仍保留。checked 方法抛出的\n * `SandboxCommandExitError` 自带 `CommandResult`,同样登记;没有结果的 transport 错误只落\n * 时间树 `failed` 标记,同时保留 manifest 和准确的非正常终态。\n */\nfunction isCommandSpawnFailure(error: unknown): boolean {\n if (typeof error !== \"object\" || error === null)\n return false;\n const candidate = error as {\n readonly code?: unknown;\n readonly syscall?: unknown;\n };\n return ((candidate.code === \"ENOENT\" || candidate.code === \"EACCES\") &&\n typeof candidate.syscall === \"string\" &&\n candidate.syscall.startsWith(\"spawn\"));\n}\nfunction withCommandTiming(sandbox: Sandbox, recorder: TimingRecorder, getPhase: () => LifecyclePhase | undefined, commands: CommandExitEvidence[], sensitiveValues: Set<string>, deadlineAt: number | undefined, observabilityRuntime: RunnerAttemptObservabilityRuntime, attemptSignal: AbortSignal): Sandbox {\n const recordCommandExit = (node: TimingActivity | undefined, display: string, result: {\n exitCode: number;\n stdout?: unknown;\n stderr?: unknown;\n }, checked: boolean): void => {\n if (!node)\n return;\n commands.push({\n timingNodeId: node.id,\n phase: getPhase() ?? \"eval.run\",\n display,\n exitCode: result.exitCode,\n checked,\n stdout: redactSensitiveText(typeof result.stdout === \"string\" ? result.stdout : \"\", sensitiveValues),\n stderr: redactSensitiveText(typeof result.stderr === \"string\" ? result.stderr : \"\", sensitiveValues),\n });\n };\n const wrap = async <T>(cmd: string, args: readonly string[] | undefined, opts: unknown, checked: boolean, invocationKind: \"argv\" | \"shell\", fn: () => Promise<T>): Promise<T> => {\n rememberSensitiveValues(sensitiveValues, commandSensitiveValues(opts));\n const display = commandDisplay(cmd, args, sensitiveValues);\n // Register the command manifest capability before process launch. The\n // later result can only be attached through this opaque handle.\n const observabilityCommand = captureRunnerCommandStart({\n runtime: observabilityRuntime,\n phase: getPhase() ?? \"eval.run\",\n invocationKind,\n command: cmd,\n ...(args === undefined ? {} : { args }),\n ...(opts === undefined ? {} : { options: opts }),\n });\n const startOffsetMs = recorder.offsetNow();\n const wallStartedAt = Date.now();\n // 这条命令这次生效的线:显式 timeout 归命令自己那层,否则是 attempt deadline 在**命令开始\n // 这一刻**的剩余量——同一台沙箱上的第二条命令拿到的不是一整份上限。\n const limit = commandLimitAttribution(opts as {\n timeoutMs?: number;\n } | undefined, { deadlineAt }, wallStartedAt);\n try {\n const result = await fn();\n const exitCode = (result as {\n exitCode?: unknown;\n })?.exitCode;\n const nonZero = typeof exitCode === \"number\" && exitCode !== 0;\n const node = recorder.child(commandNode({\n display,\n startOffsetMs,\n durationMs: Math.max(0, recorder.offsetNow() - startOffsetMs),\n checked,\n ...(limit !== undefined ? { limit } : {}),\n ...(typeof exitCode === \"number\"\n ? {\n exitCode,\n ...(nonZero\n ? {\n ...(checked ? { failed: true } : {}),\n }\n : {}),\n }\n : {}),\n }));\n if (typeof exitCode === \"number\") {\n recordCommandExit(node, display, {\n exitCode,\n ...(result as {\n stdout?: unknown;\n stderr?: unknown;\n }),\n }, checked);\n captureRunnerCommandResult({\n handle: observabilityCommand,\n exitCode,\n stdout: (result as {\n stdout?: unknown;\n }).stdout,\n stderr: (result as {\n stderr?: unknown;\n }).stderr,\n });\n }\n else {\n captureRunnerCommandCaptureFailed(observabilityCommand);\n }\n // CommandResult.command:最外层公开调用恰好是「eval 实际跑了什么」的定义点,摘要\n // 与时间树节点同一份。记录边界是权威来源,provider 即使给过原始 command 也必须覆盖,\n // 不能让它从 CommandResult → assertion/error 旁路带出未脱敏文本。\n if (result !== null && typeof result === \"object\") {\n return { ...result, command: display } as T;\n }\n return result;\n }\n catch (e) {\n const commandResult = e instanceof SandboxCommandExitError ? e.result : undefined;\n const exitCode = commandResult?.exitCode;\n // 撞线失败的节点带 provider 实际执行的那条线(`SandboxCommandTimeoutError` 自带上限与\n // 「是不是显式声明」),不是这里事前算的那份——两者同源,但 provider 那份是真正掐断它的值。\n const hit = e instanceof SandboxCommandTimeoutError\n ? {\n source: e.explicit ? (\"command-timeout\" as const) : (\"attempt-deadline\" as const),\n limitMs: e.limitMs,\n timedOut: true as const,\n }\n : limit;\n const node = recorder.child(commandNode({\n display,\n startOffsetMs,\n durationMs: Math.max(0, recorder.offsetNow() - startOffsetMs),\n checked,\n ...(typeof exitCode === \"number\"\n ? {\n exitCode,\n ...(checked && exitCode !== 0 ? { failed: true } : {}),\n }\n : { failed: true }),\n ...(hit !== undefined ? { limit: hit } : {}),\n }));\n if (commandResult !== undefined) {\n recordCommandExit(node, display, commandResult, checked);\n captureRunnerCommandResult({\n handle: observabilityCommand,\n exitCode: commandResult.exitCode,\n stdout: commandResult.stdout,\n stderr: commandResult.stderr,\n });\n }\n else if (e instanceof SandboxCommandTimeoutError) {\n captureRunnerCommandTimeout(observabilityCommand);\n }\n else if (attemptSignal.aborted ||\n ((opts as {\n signal?: AbortSignal;\n } | undefined)?.signal?.aborted === true)) {\n // The provider call was already entered, so cancellation terminates\n // this registered command rather than claiming it never started.\n captureRunnerCommandInterrupted(observabilityCommand);\n }\n else {\n captureRunnerCommandCaptureFailed(observabilityCommand, isCommandSpawnFailure(e) ? \"spawn-failed\" : \"transport-lost\");\n }\n throw e;\n }\n };\n const timed = new Proxy(sandbox, {\n get(target, prop, receiver) {\n if (prop === \"runCommand\") {\n return (cmd: string, args?: readonly string[], opts?: unknown) => wrap(cmd, args, opts, false, \"argv\", () => (target.runCommand as (...a: unknown[]) => Promise<unknown>)(cmd, args, opts));\n }\n if (prop === \"runShell\") {\n return (script: string, opts?: unknown) => wrap(script, undefined, opts, false, \"shell\", () => (target.runShell as (...a: unknown[]) => Promise<unknown>)(script, opts));\n }\n if (prop === \"runCommandOrThrow\") {\n return (cmd: string, args?: readonly string[], opts?: unknown) => wrap(cmd, args, opts, true, \"argv\", () => (target.runCommandOrThrow as (...a: unknown[]) => Promise<unknown>)(cmd, args, opts));\n }\n if (prop === \"runShellOrThrow\") {\n return (script: string, opts?: unknown) => wrap(script, undefined, opts, true, \"shell\", () => (target.runShellOrThrow as (...a: unknown[]) => Promise<unknown>)(script, opts));\n }\n const value = Reflect.get(target, prop, receiver);\n return typeof value === \"function\" ? (value as (...a: unknown[]) => unknown).bind(target) : value;\n },\n });\n inheritSandboxCapabilities(sandbox, timed);\n return timed;\n}\nasync function collectSources(evalSource: CapturedEvalSource, registry: SourceRegistry): Promise<SourceArtifact[]> {\n // The registry holds only discovery input plus bytes captured at the action\n // boundary. Deliberately never reread today's workspace to fill history.\n return registry.artifacts({ path: evalSource.path, content: evalSource.content, role: \"entry\" });\n}\n/** 解析后运行配置的穷尽投影(ExperimentRunInfo,见 docs/feature/record/architecture.md):\n * agent/model 只在快照顶层,这里不复制;sandbox 只经 provider 的公开参数投影落盘。\n * 第二个参数收整份项目配置(而不是只收 sandbox):`sandbox` 与 `timeoutMs` 记录真正生效的\n * run 级值;Judge 则连同 Eval 层逐字段解析并按 pair 落盘,使同一 Eval 的裁判 A/B 可回放。 */\nexport function experimentRunInfo(run: AgentRun, plan: Attempt[\"plan\"], sandboxPlansByEval: globalThis.Record<string, import(\"../types.ts\").JsonValue>, config?: Pick<Config, \"timeoutMs\">, judge?: ResolvedJudgeConfig): EvalResult[\"experiment\"] {\n const runLevelTimeoutMs = run.timeoutMs ?? config?.timeoutMs;\n return {\n ...(run.description !== undefined ? { description: run.description } : {}),\n ...(run.reasoningEffort !== undefined ? { reasoningEffort: run.reasoningEffort } : {}),\n ...(Object.keys(run.flags).length > 0 ? { flags: run.flags } : {}),\n ...(run.labels !== undefined && Object.keys(run.labels).length > 0 ? { labels: run.labels } : {}),\n ...(run.pluginBehavior === undefined ? {} : { plugins: run.pluginBehavior }),\n attempts: run.attempts,\n earlyExit: run.earlyExit,\n ...(runLevelTimeoutMs !== undefined ? { timeoutMs: runLevelTimeoutMs } : {}),\n ...(run.budget !== undefined ? { budget: run.budget } : {}),\n ...(run.maxConcurrency !== undefined ? { maxConcurrency: run.maxConcurrency } : {}),\n sandboxLayer: sandboxLayerIdentityFor(plan.pair, \"experiment\"),\n sandboxPlansByEval: { ...sandboxPlansByEval },\n ...(run.sandboxReuse ? { sandboxReuse: true } : {}),\n ...(judge\n ? { judge: { model: judge.model, baseUrl: judge.baseUrl, apiKeyEnv: judge.apiKeyEnv, timeoutMs: judge.timeoutMs } }\n : {}),\n agentInstalls: [...agentInstallPlansForRun(run)],\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"attempt.js","sourceRoot":"","sources":["attempt.ts"],"names":[],"mappings":"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","sourcesContent":["// 单个 attempt 的完整生命周期:资源(沙箱 / OTLP 接收器)经 Effect.Sample 的\n// acquireRelease 接管,无论 body 成功 / 抛错 / 被中断,stop() / close() 都保证执行。\n// 沙箱编排的固定段在 runAttemptBody(基线→setup→驱动 test→采 diff→评分→判定→收 trace),\n// adapter 只填「把 agent 跑起来」一段。\nimport { Effect, Cause, Duration, Either, Exit, Fiber, Option } from \"effect\";\nimport { materializeSandboxRunPlan, liveSandboxRuntimeServices, sandboxRuntimeCapabilities, type SandboxRuntimeDeadline, } from \"../sandbox/runtime.ts\";\nimport type { ConcurrencySlot } from \"../context/send-retry.ts\";\nimport { unregisterSandbox } from \"../sandbox/registry.ts\";\nimport { makeSandboxAuthorFacade } from \"../sandbox/paths.ts\";\nimport { makeSandboxRequestExecutor } from \"../sandbox/request-executor.ts\";\nimport { CLEANUP_TIMEOUT_MS, cleanupCallback } from \"./cleanup-timeout.ts\";\nimport { resolveAttemptTimeout, type TimeoutSource } from \"./timeout.ts\";\nimport { SandboxCommandTimeoutError } from \"../sandbox/deadline.ts\";\nimport { ExperimentFatalError } from \"../shared/failure-class.ts\";\nimport type { ExternalCause } from \"../shared/external-cause.ts\";\nimport { computeExpiresAt, nativeEnterCommand, suspendSandbox } from \"../sandbox/keep.ts\";\nimport { keptEntryId, updateKeptEntryEffect, writeKeptEntryEffect, } from \"../sandbox/keep-registry.ts\";\nimport { runAgentEnsure, verifySandboxTargetPlatform } from \"../agents/provisioner.ts\";\nimport { createTraceReceiver, interruptOnAbort, type TraceReceiver } from \"../o11y/otlp/receiver.ts\";\nimport { createInSandboxTraceReceiver } from \"../o11y/otlp/sandbox-receiver.ts\";\nimport { AgentOtelChannel } from \"../o11y/otlp/turn-otel.ts\";\nimport { selectTraceSpans, enrichTraceWithIO } from \"../o11y/otlp/select.ts\";\nimport { mapGenericSpans } from \"../o11y/otlp/mappers/index.ts\";\nimport { createAssertFirstEvalContext, type AssertFirstContextState, } from \"../context/assert-first.ts\";\nimport { AssertionAuthoringClosedError, } from \"../assertions/api.ts\";\nimport { createAssertionsRuntime } from \"../assertions/runtime.ts\";\nimport type { AssertionStopError, AssertionsRuntime, SealedAttemptAssertions, } from \"../assertions/api.ts\";\nimport type { AgentWorkspaceDiff } from \"../assertions/workspace-diff.ts\";\nimport { sealAttemptAssertions, } from \"./assertions.ts\";\nimport { makeAssertFirstAttemptBridge, type AssertFirstAttemptBridge, type AttemptAuthorCompletion, } from \"./assert-first-bridge.ts\";\nimport { createAgentSession } from \"../context/session.ts\";\nimport { EvalSkipped } from \"../context/control-flow.ts\";\nimport { isSendFailure, sendFailureText } from \"../context/send-failures.ts\";\nimport { deriveRunFacts, buildO11ySummary } from \"../o11y/derive.ts\";\nimport { estimateCost } from \"../o11y/cost.ts\";\nimport { t } from \"../i18n/index.ts\";\nimport { describeError, firstLine, formatThrown } from \"../util.ts\";\nimport { createChangeLedger, type ChangeLedger } from \"./ledger.ts\";\nimport { deriveDiffData, } from \"../assertions/diff.ts\";\nimport { createAgentWorkspaceDiff } from \"../assertions/workspace-diff.ts\";\nimport { assertFileChangesCaptureRecordable, createEmptyFileChangesCapture, createFileChangesCapture, type FileChangesCapture, } from \"../assertions/record/diff.ts\";\nimport { createDirectAgentSandbox } from \"./direct-agent-sandbox.ts\";\nimport { createSandboxCommandTarget, SandboxCommandExitError } from \"../sandbox/operations.ts\";\nimport { inheritSandboxCapabilities } from \"../sandbox/backend.ts\";\nimport { commandSensitiveValues, redactSensitiveEvidence, redactSensitiveText, rememberSensitiveValues, } from \"../sandbox/redaction.ts\";\nimport type { SandboxCleanupCommand, SandboxCommandContext } from \"../sandbox/commands.ts\";\nimport { sandboxLayerIdentityFor } from \"../sandbox/link.ts\";\nimport { agentInstallPlansForRun } from \"./config-identity.ts\";\nimport { linkPluginLifecycles, type EvalPluginContext } from \"../plugin/contracts.ts\";\nimport { createSourceRegistry, type SourceRegistry } from \"../source-loc.ts\";\nimport { createRunnerAttemptSourceCapture, retainRunnerAttemptSourceCapture, type RunnerAttemptSourceCapture, } from \"./source-producer.ts\";\nimport { retainRunnerAttemptFileChangesCapture } from \"./sandbox-record-producer.ts\";\nimport { bindRunnerAttemptObservabilityCapture, captureRunnerCommandCaptureFailed, captureRunnerCommandInterrupted, captureRunnerCommandResult, captureRunnerCommandStart, captureRunnerCommandTimeout, captureRunnerPhysicalConversationTurn, captureRunnerTurnUsage, createRunnerAttemptObservabilityRuntime, type RunnerAttemptObservabilityRuntime, } from \"../o11y/record/runner-producer.ts\";\nimport { attemptFailureInfo, resolveAttemptFailureClass, type AttemptFailureClassifier, type FailureClass, } from \"../shared/failure-class.ts\";\nimport type { CapturedEvalSource } from \"./eval-source.ts\";\nimport type { AgentContext, SandboxAgentContext, AgentSetupManifest, Config, DiagnosticInput, DiffArtifact, EvalResult, CommandExitEvidence, ResolvedJudgeConfig, JsonValue, Sandbox, ScopedFeedback, ScriptResult, SourceArtifact, StreamEvent, Telemetry, TimingActivity, TraceSpan, Usage, RetryAttemptRecord, } from \"../types.ts\";\nimport { reportAttemptLifecycle, reportDiagnostic, reportKept } from \"./feedback/sink.ts\";\nimport { encodeAttemptKey, EVALUATION_ALGORITHM, runWho } from \"./types.ts\";\nimport { attemptOrigin, commandDisplay, commandLimitAttribution, commandNode, createTimingRecorder, sandboxPrepareActivity, turnActivity, workspaceDiffExportActivity, type TimingRecorder } from \"./timing.ts\";\nimport type { AgentRun, Attempt, AttemptError, TimeoutAttribution, AttemptRef, DiagnosticRecord, LifecyclePhase, RunOptions, } from \"./types.ts\";\n/**\n * 一次终局失败的空间轴回执:止损闸的消费点(见 docs/feature/error-classification/architecture.md\n * 「止损执行体」)。`class` 是分类链决议出的 `FailureClass`,`text` 与报错文案同源(作者的修复\n * 提示),`phase` 是失败所在的生命周期阶段。回执是旁路:不改 verdict、不改 `AttemptError` 形状,\n * 也不走错误通道传播(attempt fiber 的 `E` 仍恒为 `never`)。\n */\nexport interface AttemptFailureDeclaration {\n readonly class: FailureClass;\n readonly phase: LifecyclePhase;\n readonly text: string;\n}\n/**\n * 一次终局失败的空间轴决议:走三道链(抛出点声明 → 实验分类器 → 缺省不可重试,见\n * src/shared/failure-class.ts 的 `resolveAttemptFailureClass`),缺省档(`scope` 省略或\n * `\"attempt\"`)返回 undefined —— 死因只属于本次执行,没有闸可落。\n *\n * **必须在把错误折成纯数据 `AttemptError` 之前调**:折完之后原错误对象(连同它携带的\n * `_tag`/`class` 与 cause 链)就不再是任何人的引用,空间轴声明再也读不出来。\n * attempt 内的失败(本文件的 `declareFailure`)与 attempt 开跑前的资源获取失败\n * (run.ts 的复用池租借)共用这一份决议,两处不各写一遍链。\n */\nexport function attemptFailureDeclaration(classify: AttemptFailureClassifier | undefined, phase: LifecyclePhase, e: unknown): AttemptFailureDeclaration | undefined {\n const info = attemptFailureInfo(phase, e);\n const cls = resolveAttemptFailureClass(info, classify);\n if (cls.scope !== \"eval\" && cls.scope !== \"experiment\")\n return undefined;\n return { class: cls, phase, text: info.text };\n}\nexport interface RunAttemptEffectOptions<SealRequirements = never> {\n /** Run 级构建执行产出的 locator;key 集合必须与 Attempt.plan 的完成态物理计划完全一致。 */\n readonly buildLocators: ReadonlyMap<string, JsonValue>;\n /** Invocation 级 Run timing,供 Dockerfile Agent 派生镜像 lookup/build 观测。 */\n readonly runTiming?: import(\"./timing.ts\").RunTimingRecorder;\n /**\n * Attempt 的协作取消信号;可同时包含 Invocation 取消、earlyExit sibling\n * 取消等来源。测试直调时省略。\n */\n parentSignal?: AbortSignal;\n /**\n * 只代表整个 Invocation 的外部取消。与 parentSignal 分开保存,避免把\n * earlyExit 的 Attempt-local abort 升级成 Ctrl+C / exit 130。\n */\n invocationSignal?: AbortSignal;\n /** 每次跨入一个新 `LifecyclePhase` 边界时同步回调一次(与下面的 `enterPhase` 同一调用点,见\n * 该函数)。run.ts 用它在本地跟踪「这个 attempt 目前所在的阶段」,好在 attempt 失败/errored\n * 时把 phase 塞进 `reportFailure()`(见 sink.ts 的 `FailureInput.phase`)—— 到那时\n * attempt:complete 已经让 coordinator 把 active map 里的条目删掉,没有别的地方能事后查到。 */\n onPhase?: (phase: LifecyclePhase) => void;\n /**\n * turn 级重试退避期间释放/收回的全局并发槽位(globalSem / 实验级 runSem,见 run.ts 的调用点)。\n * 省略时(如测试直调)退避不释放槽位。\n */\n concurrencySlot?: ConcurrencySlot;\n /**\n * 终局失败的空间轴回执(每条终局失败各回调一次,含 per-attempt teardown 的失败——teardown\n * 声明照常落闸、不改 verdict,见 architecture.md「生命周期边界」)。省略(如测试直调)时\n * 分类照常决议、只是无人消费。回调必须不抛错:它跑在 attempt 的失败路径上,不得掩盖原始失败。\n */\n onFailureClass?: (declaration: AttemptFailureDeclaration) => void;\n /**\n * A fresh Sandbox owns its physical Scope inside this Attempt. Its lifecycle\n * hooks normally turn cleanup errors into diagnostics so the remaining\n * finalizers can run; an Experiment with sharedState must still retain that\n * terminal cleanup fact until it decides whether releasing its lease is safe.\n */\n onFreshSandboxCleanupFailure?: (failure: FreshSandboxCleanupFailure) => void;\n /**\n * Invocation coordination may consume the single sealed Assert-first result\n * here and pass it to EvaluationRecordContract. The Attempt never opens a\n * Record session or owns Record I/O itself.\n */\n onSealedEvaluation?: (sealed: SealedAttemptAssertions) => Effect.Effect<void, never, SealRequirements>;\n /** 由复用池独占借出的实例;池负责物理 Sandbox 生命周期与最终 stop。 */\n reusedSandbox?: {\n sandbox: Sandbox;\n reuseSandbox: number;\n reuseOrdinal: number;\n };\n}\n/** Internal handoff from a fresh Attempt Scope to its owning Experiment lifecycle. */\nexport interface FreshSandboxCleanupFailure {\n readonly stage: \"sandbox.lifecycle\" | \"sandbox.stop\";\n readonly error: Error;\n}\nexport function runAttemptEffect<SealRequirements, AttachmentError, AttachmentRequirements>(a: Attempt, opts: RunOptions<AttachmentError, AttachmentRequirements>, sandboxSem: Effect.Semaphore, { buildLocators, runTiming, parentSignal, invocationSignal, onPhase, concurrencySlot, onFailureClass, onFreshSandboxCleanupFailure, onSealedEvaluation, reusedSandbox, }: RunAttemptEffectOptions<SealRequirements>) {\n const config = opts.config;\n const { evalDef, run, attempt } = a;\n const coordinationRoot = opts.coordinationRoot ?? `${process.cwd()}/.niceeval`;\n const t0 = Date.now();\n // Source bytes are snapshotted at the author action, then held only through\n // an internal capability until the Record producer seals its own Attachments.\n const sourceRegistry = createSourceRegistry(process.cwd());\n const sourceCapture = createRunnerAttemptSourceCapture(sourceRegistry);\n const base: EvalResult = {\n id: evalDef.id,\n description: evalDef.description,\n experimentId: run.experimentId,\n experiment: experimentRunInfo(run, a.plan, a.sandboxPlansByEval, config, a.judge),\n agent: run.agent.name,\n model: run.model,\n verdict: \"errored\",\n fingerprint: a.fingerprint,\n evaluationAlgorithm: EVALUATION_ALGORITHM,\n configHash: a.configHash,\n attempt,\n startedAt: new Date(t0).toISOString(),\n durationMs: 0,\n factResults: [],\n factUses: [],\n evidenceCoverage: run.agent.evidenceCoverage,\n evaluationKind: evalDef.evaluationKind ?? \"pass\",\n };\n /**\n * 调度事实:Sandbox 租借给这条 Attempt 的那一刻定死(复用池借出的实例在进入本函数时就已经\n * 借定,一次性沙箱在 create 返回那一刻借定)。Attempt 在任何阶段终结——Eval `setup` 失败、\n * 超时、资源获取失败——记录里都要带全 provider / sandboxId / reused / 编号与承接序号,\n * 只有 `kept` 在收尾时点决定(见 docs/feature/record/architecture.md 的 `sandbox` 字段)。\n * 所以它挂在唯一出口(下方 Effect.map)上,而不是分散在各条返回路径里。\n */\n let sandboxFacts: NonNullable<EvalResult[\"sandbox\"]> | undefined;\n /** 留存提交成功(`--keep-sandbox`)——唯一一个在收尾时点才知道的 sandbox 记录键。 */\n let kept = false;\n if (reusedSandbox && run.agent.kind === \"sandbox\") {\n if (a.plan._tag !== \"Sandbox\") {\n throw new Error(`sandbox agent ${JSON.stringify(run.agent.name)} received a Direct plan`);\n }\n sandboxFacts = {\n provider: a.plan.providerPlan.provider,\n sandboxId: reusedSandbox.sandbox.sandboxId,\n reused: true,\n reuseSandbox: reusedSandbox.reuseSandbox,\n reuseOrdinal: reusedSandbox.reuseOrdinal,\n };\n }\n // 四层解析链的最后两层(eval → config)在这里接上,并把赢家那一层带出来:超时消息要说得出\n // 「这个上限是哪一层给的」,否则撞线时得回头逐层对照四个声明点(契约见\n // docs/feature/experiments/cli.md「timeout、budget 与基础设施错误」)。\n // 四层都没声明 = 无上限:不挂 deadline、不发软截止信号,也不给 provider 递命令超时,\n // 链末端不发明一条隐藏的线。\n const attemptTimeout = resolveAttemptTimeout(run, evalDef, config);\n // deadline 的截止**时刻**:沙箱内一切时限从它派生(单条命令未显式传 timeout 时上限 =\n // 剩余量,见 sandbox/deadline.ts)。与 Effect.timeoutTo 同一个锚点,不各取各的 now()。\n const deadlineAt = attemptTimeout ? Date.now() + attemptTimeout.timeoutMs : undefined;\n // Adapter 的协作式 deadline 由专用 controller 承载。它绝不能自己设 timer:Effect.timeoutTo\n // 是唯一的 deadline owner,并会在 onTimeout 同步 abort 这个 controller;否则独立 timer\n // 可能让 adapter 先 reject,把 deadline 错分成外部 interrupt。\n const deadlineAbort = new AbortController();\n const signal = parentSignal\n ? AbortSignal.any([parentSignal, deadlineAbort.signal])\n : deadlineAbort.signal;\n // Attempt 阶段的正式生命周期投影(见 docs/feature/experiments/cli.md「Attempt 阶段」)。\n // run.ts 在这个 attempt 的 body Effect 真正开始跑之前,已经先发出过一次 attempt:start(占位\n // phase,见 run.ts 的 attempt:start emission,和这里的 eval:start 是同一个调用点),所以这里\n // 只需要在每个「实际执行到的」边界调 enterPhase() 覆盖上一个 phase(attempt:phase),不需要\n // 自己区分「第一次」。没有对应 hook/配置的步骤直接不调用,不产生空阶段(如没有 setup 的 agent\n // 跳过 agent-setup)。没有活跃 feedback coordinator 时 reportAttemptLifecycle 静默 no-op,\n // 不产生任何终端输出。\n const identity: AttemptRef = { experimentId: run.experimentId, evalId: evalDef.id, attempt };\n // 最近跨入的正式 phase:errored 结果的 `error.phase` 从它取(见下方 timeout / scope\n // 兜底与 runAttemptBody 的 body catch)。body 与本函数共用同一个 enterPhase 闭包(经 res 传下去),\n // 所以 body 内部的阶段推进也会更新它,不需要 body 再单独维护一份。\n // 阶段计时:live 展示、error.phase、落盘 phases[].name 用同一套 LifecyclePhase 闭集,\n // 一次 enterPhase 同时推进三者(词表全仓只有一套,见 runner/types.ts 的 LifecyclePhase)。\n let lastPhase: LifecyclePhase | undefined;\n const recorder = createTimingRecorder();\n // adapter send 在飞时,错误/诊断归因到嵌套的 `agent.run`(eval.run 内打开,不单列计时条目)。\n let sendActive = false;\n // 超时证据保全的外层句柄:与 recorder 同一模式,runAttemptBody 内部一建好 SessionManager /\n // ChangeLedger 就经 AttemptResources.registerEvidence/registerLedger 登记回这里——中断后由\n // Sample 外层直接读它们组装结果,不随被 Effect 中断放弃的 body fiber 一起消失(见\n // docs/runner.md「超时:双层保护」超时不丢证据)。\n let liveEvents: (() => readonly StreamEvent[]) | undefined;\n let liveUsage: (() => Usage) | undefined;\n let liveRetryAttempts: (() => readonly RetryAttemptRecord[]) | undefined;\n let liveLedger: ChangeLedger | undefined;\n // Assert-first state becomes visible only after the real TestContext has\n // been constructed. Scope finalization owns the interruption seal so an\n // aborted Attempt cannot leave declared entries unsealed.\n let liveAssertions: AssertionsRuntime<\"pass\" | \"score\"> | undefined;\n let liveAssertionState: AssertFirstContextState | undefined;\n let assertionsSealed = false;\n let timeoutSealedAssertions: SealedAttemptAssertions | undefined;\n // Effect.timeoutTo 的 onTimeout 是同步回调,在中断真正下发给 body fiber(从而触发下面的\n // finalizer 链)之前就已经跑完并同步置位这个标记——下面新增的 finalizer 靠它判断本次 Sample\n // release 是不是超时触发的,只在超时路径补折叠证据,正常收尾路径不重复做(见文件顶部\n // Effect.timeoutTo 调用点的注释)。\n let timedOut = false;\n let timeoutDiff: DiffArtifact | undefined;\n let fileChangesCapture: FileChangesCapture | undefined;\n let timeoutFileChangesCapture: FileChangesCapture | undefined;\n let timeoutSources: SourceArtifact[] | undefined;\n const enterPhase = (phase: LifecyclePhase) => {\n lastPhase = phase;\n recorder.enter(phase);\n onPhase?.(phase);\n reportAttemptLifecycle({ type: \"attempt:phase\", at: Date.now(), identity, phase });\n };\n /**\n * 终局失败的分类与回执 —— **必须在把错误折成纯数据 `AttemptError` 之前调**:折完之后原错误\n * 对象(连同它携带的 `_tag`/`class` 与 cause 链)就不再是任何人的引用,空间轴声明再也读不出来。\n * 走生命周期链的三道决议(抛出点声明 → 实验分类器 → 缺省不可重试,见\n * src/shared/failure-class.ts 的 `resolveAttemptFailureClass`);send 失败的时间轴已由 send 重试\n * 执行体在 context 层消费完,浮出到这里的一定是终局失败,这里只读空间轴。\n * 缺省档(`scope` 省略或 `\"attempt\"`)不回执:那是「死因只属于本次执行」,没有闸可落。\n */\n const declareFailure = (phase: LifecyclePhase, e: unknown): void => {\n if (!onFailureClass)\n return;\n const declaration = attemptFailureDeclaration(run.classifyFailure, phase, e);\n if (declaration) {\n // 空间轴回执会先于 Attempt 结果封口进入 run.ts,并立即生成运行期反馈与 run.json 的\n // dispatch-halted 诊断。它不能依赖下面的 EvalResult 最终扫描补救,否则同一条错误在\n // result.json 已脱敏、Run 级诊断却仍保留原值。分类决策只消费原始错误;对外回执单独\n // 复制并脱敏正文,scope / phase 等路由事实保持原样。\n onFailureClass({\n ...declaration,\n text: redactSensitiveText(declaration.text, sensitiveValues),\n });\n }\n };\n // 本 attempt 累计的诊断(与 verdict 独立):ScopedFeedback.diagnostic 与 teardown 失败都落这里,\n // 收尾时并入结果;dedupeKey 相同的并发诊断折叠成一条并累计 count。\n const diagnostics: DiagnosticRecord[] = [];\n const dedupeIndex = new Map<string, DiagnosticRecord>();\n // Sandbox 命令证据的累加器(与 diagnostics 同一种「共享容器」模式):\n // withCommandTiming 在 CommandResult 交还调用方之前把每条命令(成功与非零退出都算)push 进来,\n // runAttemptBody 的 finally 与本函数的超时/中断兜底分支都读同一个数组引用\n // (见 docs/feature/record/architecture.md「commandsjson」「证据在 CommandResult 返回\n // 调用方之前写入内存」)。\n const commands: CommandExitEvidence[] = [];\n // CommandOptions.sensitiveValues 的 Attempt 级内存集合。值只供记录边界精确替换;最终\n // result 封口后集合随本次调用释放,不进入任何 artifact、指纹或 provider identity。\n const sensitiveValues = new Set<string>();\n // Package-internal only: the final EvalResult is weakly associated with this\n // capture after all Runner evidence is sealed. No public result field or\n // legacy artifact is used as a transport.\n const observabilityRuntime = createRunnerAttemptObservabilityRuntime({\n providerName: run.agent.name,\n sensitiveValues,\n });\n const recordDiagnostic = (input: DiagnosticInput) => {\n const phase = (sendActive ? \"agent.run\" : lastPhase) ?? \"eval.run\";\n if (input.dedupeKey !== undefined) {\n const existing = dedupeIndex.get(input.dedupeKey);\n if (existing) {\n existing.count = (existing.count ?? 1) + 1;\n return;\n }\n }\n const message = redactSensitiveText(input.message, sensitiveValues);\n const context = input.data === undefined\n ? undefined\n : redactSensitiveEvidence(input.data, sensitiveValues);\n const record: DiagnosticRecord = {\n code: input.code,\n level: input.level,\n detail: message,\n origin: attemptOrigin(phase),\n ...(context !== undefined ? { context } : {}),\n };\n if (input.dedupeKey !== undefined)\n dedupeIndex.set(input.dedupeKey, record);\n diagnostics.push(record);\n // 同时进运行级永久事件流(human 撤下 dashboard 后追加、JSON stdout 追加 warning,去重按 key)。\n // `key` 只管折叠到多细(作者没给 dedupeKey 时折到「这一条 attempt 的这种诊断」,身份因此\n // 编进去);对外稳定词法始终单独给 `code`,不让消费方从 key 反推(见 sink.ts 的\n // DiagnosticInput.code、docs/feature/experiments/cli.md 的 WarningEvent)。\n const { origin: _authorOrigin, phase: _authorPhase, ...diagnosticData } = context ?? {};\n reportDiagnostic({\n key: input.dedupeKey ?? `${input.code}:${encodeAttemptKey(identity)}`,\n code: input.code,\n severity: input.level,\n message,\n identity,\n // phase 由运行器给,且**压过**作者 `data` 里的同名字段:`WarningEvent.phase` 是\n // `LifecyclePhase` 闭集,取值只能由「这条诊断报上来时运行器正处在哪一步」决定。\n // 作者的 `data` 是开放词表,让它盖住这个字段等于允许从 eval / adapter 代码里冒充一个\n // 别的(甚至不在闭集里的)阶段,消费方按 phase 分支就此失效——与 ScopedFeedback\n // 「两个方法都不接受 phase」是同一条纪律(见 src/shared/types.ts 的接口注释)。\n data: { ...diagnosticData, phase, origin: attemptOrigin(phase) },\n });\n };\n // 作用域反馈:progress 走 attempt:progress(短命状态,归因由 runner 的当前阶段决定),\n // diagnostic 落 attempt diagnostics + 运行级永久事件。绑定见 docs/feature/experiments/library.md。\n const scopedFeedback: ScopedFeedback = {\n progress: (u) => {\n const suffix = u.current !== undefined && u.total !== undefined ? ` (${u.current}/${u.total})` : \"\";\n log(`${u.message}${suffix}`);\n },\n diagnostic: recordDiagnostic,\n };\n const recordFreshSandboxCleanupFailure = (stage: FreshSandboxCleanupFailure[\"stage\"], cause: unknown): void => {\n if (reusedSandbox !== undefined || onFreshSandboxCleanupFailure === undefined)\n return;\n const rawError = cause instanceof Error ? cause : new Error(String(cause));\n // The ledger is later surfaced as an Experiment diagnostic, outside this\n // Attempt's normal diagnostic sink. Preserve the real cleanup outcome, but\n // cross that boundary only after applying this Attempt's evidence redaction.\n const error = new Error(redactSensitiveText(rawError.message, sensitiveValues));\n // This receiver runs inside the Scope finalizer path. It must not let a\n // bookkeeping failure replace the provider or lifecycle cleanup outcome.\n try {\n onFreshSandboxCleanupFailure({ stage, error });\n }\n catch {\n // The owning Experiment will still receive the original cleanup result.\n }\n };\n /**\n * Sandbox runtime deliberately keeps lifecycle cleanup diagnostic-only so it\n * can continue other finalizers. Only this fresh-materialization wrapper\n * observes those runtime-owned diagnostics; Eval/Agent diagnostics with the\n * same public sink never enter the physical cleanup ledger.\n */\n const freshSandboxLifecycleFeedback: ScopedFeedback = {\n progress: scopedFeedback.progress,\n diagnostic: (input) => {\n scopedFeedback.diagnostic(input);\n if (input.code === \"sandbox-teardown-failed\" ||\n input.code === \"sandbox-stop-failed\" ||\n input.code === \"plugin-lifecycle-teardown-failed\") {\n recordFreshSandboxCleanupFailure(\"sandbox.lifecycle\", new Error(redactSensitiveText(input.message, sensitiveValues)));\n }\n },\n };\n const sealExecutionError = (): Effect.Effect<SealedAttemptAssertions, import(\"../assertions/api.ts\").AssertionSealError, SealRequirements> => {\n const runtime = liveAssertions ?? (evalDef.evaluationKind === \"score\"\n ? createAssertionsRuntime({ evaluationKind: \"score\" })\n : createAssertionsRuntime({ evaluationKind: \"pass\" }));\n if (liveAssertions === undefined) {\n // Sandbox acquire/prepare may fail before TestContext exists. It is still\n // an executed Attempt, so seal its empty assertion set with the same\n // execution-error terminal used by failures after Context construction.\n liveAssertions = runtime;\n sourceCapture.attachAssertions(runtime);\n }\n return sealAttemptAssertions(runtime, { execution: \"errored\" }).pipe(Effect.tap(() => Effect.sync(() => {\n assertionsSealed = true;\n })), Effect.tap((sealed) => onSealedEvaluation?.(sealed) ?? Effect.void));\n };\n // 同时保留最近 20 条进度消息,timeout 时嵌入 error 字段方便定位卡在哪一步。\n const recentLogs: string[] = [];\n const log = (m: string) => {\n const detail = redactSensitiveText(m, sensitiveValues);\n recentLogs.push(detail);\n if (recentLogs.length > 20)\n recentLogs.shift();\n // 附着在「当前阶段」上的次要文本(见 ActiveAttempt.detail);attempt:start 早于本函数任何\n // 调用点发出(见上),active map 里一定已经有这个 identity 的条目。这是 log() 唯一的出口 ——\n // 没有裸写 stderr 的兜底分支(那是给已删除的 Live reporter 用的旧接线,见\n // docs/feature/experiments/cli.md「一个 run 内只有一个终端协调者」);由当前 renderer 决定\n // 是否消费这条 detail(human 展示,JSON 不消费 lifecycle detail)。\n reportAttemptLifecycle({ type: \"attempt:progress\", at: Date.now(), identity, detail });\n };\n /**\n * ── attempt 总超时的硬边界(P1)──\n * 上限是「整个 attempt(setup+agent+脚本+评分)」的,不是 docker 单条命令的。\n * 到点 → 中断整段 body → Sample 跑 release(停容器、关接收器)→ 产出一条 errored 结果。\n * 即便 adapter / test 完全无视 signal 挂死,这一层也能把它停下来并回收资源。\n *\n * 四层解析链都没声明上限时**这个算子整个不挂**——不是挂一条无穷大的 timer:没有线就没有\n * deadline,attempt 跑到自己结束为止(与携带判据的 `Infinity` 同一个语义)。\n */\n const applyAttemptDeadline = <E, R>(self: Effect.Effect<EvalResult, E, R>): Effect.Effect<EvalResult, E, R> => {\n if (attemptTimeout === undefined)\n return self;\n const { timeoutMs, source: timeoutSource } = attemptTimeout;\n return self.pipe(Effect.timeoutTo({\n duration: Duration.millis(timeoutMs),\n onSuccess: (r: EvalResult) => r,\n onTimeout: (): EvalResult => {\n // 超时:message 是一层原因(首行),recentLogs 明细放进 stack 供 show 展开「卡在哪一步」;\n // operation 取超时那一刻打开的 lifecycle operation。code 稳定为 \"timeout\"。\n const text = t(\"runner.timeout\", {\n timeoutMs,\n source: timeoutSource,\n recentLogs: recentLogs.map((l) => ` · ${l}`).join(\"\\n\"),\n });\n const message = firstLine(text);\n const rest = text.length > message.length ? text.slice(message.length + 1).replace(/\\n+$/, \"\") : \"\";\n const error: AttemptError = {\n code: \"timeout\",\n message,\n origin: attemptOrigin((sendActive ? \"agent.run\" : lastPhase) ?? \"eval.run\"),\n // 归属三样一起落盘:撞的是哪层时限、值多少、值从四层解析链的哪层来。\n // 不打一个没有归属说明的 ✗(见 docs/feature/sandbox/architecture.md「时限归属」)。\n timeout: { trigger: \"attempt-deadline\", limitMs: timeoutMs, source: timeoutSource },\n ...(rest.trim() !== \"\" ? { stack: rest } : {}),\n };\n recorder.failCurrent();\n // `timeoutTo` 已经赢得 deadline:先标记并 abort 协作式 adapter。\n // Scope release below seals the Attempt-local Assertions runtime as\n // producer-interrupted before resources are released.\n // 这个 controller 没有独立 timer;它只把已经裁定的 timeout 传给观察 signal 的\n // adapter。标记必须先于 abort,才能把本 fiber 的 timeout 中断与真正外层取消区分。\n timedOut = true;\n deadlineAbort.abort();\n // 置位给下面的 finalizer 用(它在 Sample release 里跑,LIFO 早于 sandbox stop,\n // 补折叠 workspace.diff / sources——见该 finalizer 的注释)。events/usage 不必等它:\n // SessionManager 是外层已经登记过的活引用(见 liveEvents/liveUsage),截至这一刻已经\n // 归一化的事件与已累计的用量此刻就能直接读出,不随放弃的 body fiber 一起消失。\n const events = liveEvents?.();\n const usage = liveUsage?.();\n const retryAttempts = liveRetryAttempts?.();\n return {\n ...base,\n durationMs: recorder.offsetNow(),\n error,\n ...(evalDef.evaluationKind === \"score\" ? { scoreResult: scoreFactOutcomeForAttemptError(error) } : {}),\n ...(events !== undefined ? { events: [...events], o11y: buildO11ySummary(events) } : {}),\n ...(usage !== undefined ? { usage: { ...usage } } : {}),\n ...(retryAttempts !== undefined && retryAttempts.length > 0\n ? { retryAttempts: retryAttempts.map((attempt) => ({ ...attempt })) }\n : {}),\n // 超时前已经登记的命令证据(见 withCommandTiming)不因中断而丢失——它们在\n // CommandResult 返回调用方那一刻就已经写进了这个共享数组。\n ...(commands.length > 0 ? { commands: [...commands] } : {}),\n };\n },\n }));\n };\n const layerCleanups: LayerCleanupEntry[] = [];\n return Effect.scoped(Effect.gen(function* () {\n const sandboxPlan = a.plan._tag === \"Sandbox\" ? a.plan : undefined;\n if (run.agent.kind === \"sandbox\" && sandboxPlan === undefined) {\n throw new Error(`sandbox agent ${JSON.stringify(run.agent.name)} received a Direct plan`);\n }\n const runtimeCapabilities = sandboxPlan === undefined ? undefined : sandboxRuntimeCapabilities(sandboxPlan);\n // 留存 disposition:只在本 attempt 内可变,初始 stop;只有留存提交成功才改成 keep\n // (Ctrl+C 中断外层 Sample 时仍是 stop,照常清理)。是否可留存只读 physical plan\n // 的中性 retention 能力;不在 runner 里按 provider 名或旧声明结构分支。\n let disposition: \"stop\" | \"keep\" = \"stop\";\n // The bridge owns its Queue worker inside this Attempt Scope. Promise\n // code only offers work; no internal module starts a second runtime.\n const assertFirst = yield* makeAssertFirstAttemptBridge<unknown>();\n // 退避重试(runtime.ts → retry.ts)期间临时归还这个名额:被限流的 provider 只是在\n // setTimeout 里睡觉,不该攥着 sandboxSem 的槽位陪跑,不然一批 429 能把整体并发拖成个位数。\n const provisionSlot = {\n release: sandboxSem.release(1),\n reacquire: sandboxSem.take(1),\n };\n // Sample release(receiver close + provider stop)整段计成 sandbox.stop:先加的 finalizer\n // 后跑(LIFO),所以「先加的」在 release 链末尾打终点戳、「后加的」在 release 开始前打起点戳;\n // 结果封口(附 phases)发生在 Sample release 完成之后(见下方 Effect.map)。\n let releaseStartedAt: number | undefined;\n if (run.agent.kind === \"sandbox\" && !reusedSandbox) {\n yield* Effect.addFinalizer(() => Effect.sync(() => {\n // 留存路径的 phases 以 sandbox.suspend 结尾,没有 sandbox.stop 条目(见 release)。\n if (releaseStartedAt !== undefined && disposition !== \"keep\") {\n recorder.record(\"sandbox.stop\", recorder.offsetNow() - releaseStartedAt);\n }\n }));\n }\n const sandbox = reusedSandbox?.sandbox ??\n (run.agent.kind === \"sandbox\"\n ? yield* Effect.gen(function* () {\n // ── 沙箱:acquire=起,release=整组 stop(成功 / 失败 / 中断都跑)──\n // sandboxSem 只覆盖「容器创建」阶段;容器起好后立即释放,后续 npm install / agent 不占位。\n enterPhase(\"sandbox.queue\");\n return yield* sandboxSem.withPermits(1)(Effect.gen(function* () {\n enterPhase(\"sandbox.create\");\n log(t(\"runner.startSandbox\"));\n // provider 固有的会话上限不能静默充当默认值:deadline 超出它时,attempt\n // 会跑到一半被平台截断。在派发前就报环境约束,点名 provider 与上限值。\n if (sandboxPlan === undefined || runtimeCapabilities === undefined) {\n throw new Error(\"sandbox plan invariant violated before materialization\");\n }\n assertDeadlineFitsPlan(runtimeCapabilities, attemptTimeout?.timeoutMs);\n if (opts.keepSandbox !== undefined && runtimeCapabilities.retention._tag !== \"Suspendable\") {\n throw new Error(`--keep-sandbox is unsupported by provider ${JSON.stringify(runtimeCapabilities.provider)}`);\n }\n const runtimeDeadline: SandboxRuntimeDeadline = attemptTimeout === undefined || deadlineAt === undefined\n ? { _tag: \"Unlimited\" }\n : { _tag: \"Bounded\", timeoutMs: attemptTimeout.timeoutMs, deadlineAt };\n const materialized = yield* materializeSandboxRunPlan({\n plan: sandboxPlan,\n evalId: evalDef.id,\n deadline: runtimeDeadline,\n feedback: freshSandboxLifecycleFeedback,\n signal,\n hookContext: {\n experimentId: sandboxPlan.pair.experimentId,\n signal,\n progress: freshSandboxLifecycleFeedback.progress,\n diagnostic: freshSandboxLifecycleFeedback.diagnostic,\n },\n buildLocators,\n agent: run.agent.kind === \"sandbox\" ? run.agent : undefined,\n ...(runTiming !== undefined ? { runTiming } : {}),\n provisionSlot: { _tag: \"Bound\", value: provisionSlot },\n services: liveSandboxRuntimeServices,\n // Provider runtime 自己用 acquireRelease 持有 Case;Attempt 只提交显式\n // Managed disposition,避免外层再包一层 acquireRelease 造成 double-stop。\n release: {\n _tag: \"Managed\",\n run: (owned) => Effect.gen(function* () {\n const sb = owned.sandbox;\n if (disposition !== \"keep\") {\n return yield* tryPromiseAsDefect(() => owned.group.stop()).pipe(Effect.onExit((exit) => Exit.isFailure(exit)\n ? Effect.sync(() => {\n recordFreshSandboxCleanupFailure(\"sandbox.stop\", Cause.squash(exit.cause));\n })\n : Effect.void));\n }\n yield* Effect.sync(() => unregisterSandbox(sb));\n const providerName = runtimeCapabilities.provider;\n const suspendStart = recorder.offsetNow();\n return yield* tryPromiseAsDefect(() => suspendSandbox(sb)).pipe(Effect.tap(() => Effect.sync(() => {\n recorder.record(\"sandbox.suspend\", recorder.offsetNow() - suspendStart);\n })), Effect.zipRight(updateKeptEntryEffect(coordinationRoot, keptEntryId(providerName, sb.sandboxId), {\n state: \"dormant\",\n }).pipe(Effect.ignore)), Effect.catchAllCause((cause) => Cause.isInterrupted(cause)\n ? Effect.failCause(cause)\n : Effect.sync(() => {\n const error = Cause.squash(cause);\n recorder.record(\"sandbox.suspend\", recorder.offsetNow() - suspendStart, true);\n recordDiagnostic({\n code: \"sandbox-suspend-failed\",\n level: \"warning\",\n message: `sandbox ${sb.sandboxId} kept but suspend failed; the instance is still running: ${error instanceof Error ? error.message : String(error)}`,\n dedupeKey: `sandbox-suspend-failed:${sb.sandboxId}`,\n });\n })));\n }),\n },\n });\n // fresh Attempt:author facade 在当前 Attempt Scope 内构建。executor 捕获本\n // Scope 的 Runtime,Scope 关闭时统一中断在飞请求并拒绝新调用;release closure\n // 继续用 materialized.sandbox(资源面 facade),两者生命周期互不借用。\n const executor = yield* makeSandboxRequestExecutor();\n return makeSandboxAuthorFacade(materialized.authorBackend, executor, runtimeCapabilities.provider);\n }));\n })\n : createDirectAgentSandbox());\n // 一次性沙箱的租借时刻:实例到手就定归属,后面无论走到哪一步终结都带着它。\n if (run.agent.kind === \"sandbox\" && !sandboxFacts) {\n sandboxFacts = { provider: runtimeCapabilities!.provider, sandboxId: sandbox.sandboxId };\n }\n if (run.agent.kind !== \"sandbox\")\n log(t(\"runner.useDirectAgent\"));\n const commandTarget = createSandboxCommandTarget(sandbox);\n // ── tracing ──────────────────────────────────────────────────────────────────\n // sandbox.otlpHost:\n // string → provider 承诺该 hostname 可访问宿主 receiver\n // null → provider 不承诺宿主回连,改在沙箱内起 attempt-scope collector\n // defineConfig({ telemetry: { host } }) 可强制覆盖(如配好 tunnel 时)。\n //\n // 非沙箱 agent(远程 / 进程内)不走 per-attempt receiver:被测应用是长驻进程,只有一条\n // 全局 OTel 管线(OTEL_* env 进程启动时读一次)—— per-attempt 端口会在第一个 attempt\n // 结束时关掉,后续 span 全丢。改走 run 级共享池,span 逐轮归属(traceparent / 窗口)。\n let receiver: TraceReceiver | undefined;\n let telemetry: Telemetry | undefined;\n let otelChannel: AgentOtelChannel | undefined;\n // 共享池仅限:config 配了 telemetry(固定端口,无侵入接入的长驻服务)或显式 tracing.scope === \"run\"。\n // 只声明 tracing 的进程内 adapter(如 aiSdkAgent)保持 per-attempt receiver,attempt 全并发。\n const wantsSharedOtel = config.telemetry !== undefined || run.agent.tracing?.scope === \"run\";\n if (run.agent.kind !== \"sandbox\" && wantsSharedOtel && opts.otelPool) {\n enterPhase(\"telemetry.configure\");\n try {\n otelChannel = yield* opts.otelPool!.channel(run.agent.name);\n const endpoint = otelChannel.receiver.endpoint(config.telemetry?.host ?? \"127.0.0.1\");\n const env = run.agent.tracing?.env?.(endpoint);\n telemetry = env ? { endpoint, env } : { endpoint };\n log(t(\"runner.otlpShared\", { endpoint }));\n }\n catch (e) {\n if (isAttemptAborted(parentSignal))\n throw e;\n recordDiagnostic({\n code: \"telemetry-configure-failed\",\n level: \"warning\",\n message: `telemetry configure failed; continuing without OTLP trace: ${firstLine(formatThrown(e))}`,\n data: evidenceDiagnosticData(\"configure\", e),\n });\n otelChannel = undefined;\n telemetry = undefined;\n }\n }\n else if (run.agent.tracing !== undefined) {\n enterPhase(\"telemetry.configure\");\n try {\n const forcedHost = config.telemetry?.host;\n if (forcedHost) {\n // 显式覆盖:走本地接收器,把指定 host 交给 agent\n receiver = yield* createTraceReceiver();\n const endpoint = receiver.endpoint(forcedHost);\n const env = run.agent.tracing?.env?.(endpoint);\n telemetry = env ? { endpoint, env } : { endpoint };\n log(t(\"runner.otlpOverride\", { endpoint }));\n }\n else if (sandbox.otlpHost !== null) {\n // provider 明确承诺宿主回连:宿主开接收器\n receiver = yield* createTraceReceiver();\n const endpoint = receiver.endpoint(sandbox.otlpHost);\n const env = run.agent.tracing?.env?.(endpoint);\n telemetry = env ? { endpoint, env } : { endpoint };\n const proto = run.agent.tracing?.protocol;\n log(t(\"runner.otlpReceiver\", { endpoint, proto: proto ? ` (${proto})` : \"\" }));\n }\n else {\n // provider 不承诺宿主回连:在沙箱内起 collector,agent 往 localhost 端口发。\n receiver = yield* createInSandboxTraceReceiver(sandbox);\n const endpoint = receiver.endpoint(\"\");\n const env = run.agent.tracing?.env?.(endpoint);\n telemetry = env ? { endpoint, env } : { endpoint };\n const proto = run.agent.tracing?.protocol;\n log(t(\"runner.otlpInSandbox\", { endpoint, proto: proto ? ` (${proto})` : \"\" }));\n }\n }\n catch (e) {\n if (isAttemptAborted(parentSignal))\n throw e;\n recordDiagnostic({\n code: \"telemetry-configure-failed\",\n level: \"warning\",\n message: `telemetry configure failed; continuing without OTLP trace: ${firstLine(formatThrown(e))}`,\n data: evidenceDiagnosticData(\"configure\", e, runtimeCapabilities?.provider),\n });\n receiver = undefined;\n telemetry = undefined;\n }\n }\n // attempt-scope 的进程内 adapter(如 aiSdkAgent + aiSdkOtel)虽然拥有独立 receiver,\n // 仍需要逐轮窗口归属来给 TimingActivity 写入真实 traceId。独立 receiver 不会与其它\n // attempt 混流,因此直接复用同一个 AgentOtelChannel 算法,不必升级成 run 级共享池。\n if (run.agent.kind !== \"sandbox\" && receiver !== undefined && otelChannel === undefined) {\n otelChannel = new AgentOtelChannel(receiver);\n }\n if (run.agent.kind === \"sandbox\" && !reusedSandbox) {\n // 后加先跑:release 链开始时打起点戳(与上面的终点戳配对,测出整段 sandbox.stop)。\n yield* Effect.addFinalizer(() => Effect.sync(() => {\n releaseStartedAt = recorder.offsetNow();\n }));\n }\n // 超时收尾段的证据保全(docs/runner.md「超时:双层保护」超时不丢证据)。注册在这里,\n // LIFO 意味着 release 时它先于上面已注册的 sandbox stop/suspend finalizer 跑——此刻沙箱\n // (若有)仍然存活,赶在停之前抢一次 workspace.diff 折叠;`timedOut` 由 Effect.timeoutTo\n // 的 onTimeout 同步置位,正常收尾(body 走完)时这里直接跳过,不重复采一次已经采过的证据。\n // 沙箱此刻可能已经被 agent 搞挂——withCleanupTimeout 有界执行,导出挂起也不能拖住收尾,\n // 到点如实缺失。计时单独记一条 phases 条目,不入 durationMs(durationMs 已在 onTimeout\n // 按中断时刻定格)。sources 折叠是本地文件读取,与沙箱是否存活无关,一并在这里补。\n yield* Effect.addFinalizer(() => Effect.gen(function* () {\n if (!timedOut)\n return;\n if (run.agent.kind === \"sandbox\" && liveLedger) {\n const startedAt = recorder.offsetNow();\n const diff = yield* Effect.either(cleanupCallback(() => liveLedger!.exportWindows()));\n if (Either.isRight(diff)) {\n timeoutDiff = diff.right;\n let document: AgentWorkspaceDiff | undefined;\n try {\n document = createAgentWorkspaceDiff({\n windows: diff.right,\n policy: liveLedger.attribution,\n });\n }\n catch {\n timeoutFileChangesCapture = createEmptyFileChangesCapture({\n policy: liveLedger.attribution,\n limitations: [Object.freeze({\n code: \"capture-failed\" as const,\n stage: \"normalize\" as const,\n atWindowId: null,\n })],\n });\n }\n if (document !== undefined) {\n timeoutFileChangesCapture = createFileChangesCapture({\n document,\n limitations: [Object.freeze({\n code: \"capture-interrupted\" as const,\n stage: \"finalizer-export\" as const,\n atWindowId: null,\n })],\n });\n }\n }\n else {\n timeoutFileChangesCapture = createEmptyFileChangesCapture({\n policy: liveLedger.attribution,\n limitations: [Object.freeze({\n code: \"capture-interrupted\" as const,\n stage: \"finalizer-export\" as const,\n atWindowId: null,\n })],\n });\n }\n if (timeoutFileChangesCapture !== undefined) {\n assertFileChangesCaptureRecordable(timeoutFileChangesCapture);\n }\n // 沙箱不可用 / 导出挂起到点:如实缺失,不阻塞收尾。\n recorder.record(\"workspace.diff\", recorder.offsetNow() - startedAt);\n }\n const sources = yield* Effect.either(cleanupCallback(() => collectSources(evalDef.source, sourceRegistry)));\n if (Either.isRight(sources))\n timeoutSources = sources.right;\n // 源码读不到:如实缺失,不阻塞收尾。\n }));\n // Scope release owns the interruption seal. It runs before resource\n // release, so entries already declared by the real Context survive a\n // timeout or external cancellation in declaration order.\n yield* Effect.addFinalizer((exit) => Effect.suspend(() => {\n const interrupted = timedOut || (Exit.isFailure(exit) && Cause.isInterruptedOnly(exit.cause));\n if (interrupted)\n sourceCapture.markInterrupted();\n if (!interrupted || liveAssertions === undefined || assertionsSealed) {\n return Effect.void;\n }\n if (liveAssertionState?.late.diff.state === \"pending\") {\n liveAssertionState.late.diff = Object.freeze({\n state: \"unavailable\" as const,\n reason: \"producer-interrupted\" as const,\n });\n }\n return sealAttemptAssertions(liveAssertions, {\n execution: \"errored\",\n interrupted: true,\n }).pipe(Effect.tap((sealed) => Effect.sync(() => {\n assertionsSealed = true;\n timeoutSealedAssertions = sealed;\n })), Effect.tap((sealed) => onSealedEvaluation?.(sealed) ?? Effect.void), \n // Release must preserve the original interruption/failure. A\n // malformed attachment is still reflected by the sealed runtime,\n // but cannot mask the owning Attempt's terminal cause.\n Effect.catchAllCause(() => Effect.void));\n }));\n // Close outstanding bridge promises before the interruption seal. This\n // makes a detached author continuation fail by name while preserving the\n // already declared entries for the finalizer's declaration-order seal.\n yield* Effect.addFinalizer((exit) => Effect.suspend(() => {\n const interrupted = timedOut || (Exit.isFailure(exit) && Cause.isInterruptedOnly(exit.cause));\n return assertFirst.closeEffectRequests(new AssertionAuthoringClosedError(interrupted ? \"attempt-interrupted\" : \"attempt-sealed\"));\n }));\n // Scope 的 LIFO 让作者 cleanup 在 agent teardown 后、Provider Case finalizer 前执行。\n // 这个 finalizer 注册在 bridge close 之后,因此释放时先由桥执行它拥有的 Effect。\n if (run.agent.kind === \"sandbox\") {\n yield* Effect.addFinalizer(() => tryPromiseAsDefect(async () => {\n if (layerCleanups.length === 0)\n return;\n enterPhase(\"sandbox.cleanup\");\n await recorder\n .measureClosing(\"sandbox.cleanup\", async () => {\n const before = diagnostics.length;\n for (let i = layerCleanups.length - 1; i >= 0; i--) {\n const cleanup = layerCleanups[i]!;\n const startedAt = recorder.offsetNow();\n const node = recorder.child(sandboxPrepareActivity({\n label: `${cleanup.label} cleanup`,\n startOffsetMs: startedAt,\n }));\n if (node)\n recorder.pushParent(node);\n try {\n await assertFirst.requestEffect(cleanupCallback((signal) => cleanup.command(commandTarget, {\n ...cleanup.context,\n signal,\n })));\n }\n catch (error) {\n if (node)\n node.failed = true;\n declareFailure(\"sandbox.cleanup\", error);\n diagnostics.push(teardownDiagnostic(\"sandbox.cleanup\", error));\n }\n finally {\n if (node) {\n node.durationMs = Math.max(0, recorder.offsetNow() - startedAt);\n recorder.popParent();\n }\n }\n }\n if (diagnostics.length > before)\n throw new Error(\"sandbox cleanup diagnostics\");\n })\n .catch(() => { });\n }));\n }\n // The legacy setup/diff body remains Promise-shaped, while OTLP waits,\n // author execution, and sealing run in this Attempt's Effect scope. No\n // nested runtime is introduced.\n const bodyFiber = yield* Effect.fork(tryPromiseAsDefect((interruptSignal) => runAttemptBody(a, config, t0, base, {\n sandbox,\n sourceRegistry,\n sourceCapture,\n receiver,\n telemetry,\n otel: otelChannel,\n signal: AbortSignal.any([signal, interruptSignal]),\n log,\n enterPhase,\n // send 在飞时归因到嵌套的 agent.run(不切换顶层阶段,见 LifecyclePhase 注释)。\n getPhase: () => (sendActive ? \"agent.run\" : lastPhase),\n setSendActive: (active) => {\n sendActive = active;\n },\n recorder,\n ...(attemptTimeout ? { attemptTimeout } : {}),\n ...(deadlineAt !== undefined ? { deadlineAt } : {}),\n feedback: scopedFeedback,\n diagnostics,\n commands,\n sensitiveValues,\n observabilityRuntime,\n concurrencySlot,\n declareFailure,\n isDeadlineTimedOut: () => timedOut,\n layerCleanups,\n registerEvidence: (getEvents, getUsage, getRetryAttempts) => {\n liveEvents = getEvents;\n liveUsage = getUsage;\n liveRetryAttempts = getRetryAttempts;\n },\n registerLedger: (ledger) => {\n liveLedger = ledger;\n },\n retainFileChangesCapture: (capture) => {\n fileChangesCapture = capture;\n },\n assertFirst,\n registerAssertions: (runtime, state) => {\n if (liveAssertions !== undefined && liveAssertions !== runtime) {\n throw new Error(\"Attempt tried to register a second Assertions runtime\");\n }\n if (liveAssertionState !== undefined && liveAssertionState !== state) {\n throw new Error(\"Attempt tried to register a second Assertions state\");\n }\n liveAssertions = runtime;\n liveAssertionState = state;\n },\n ...(opts.artifactPrepare !== undefined ? { prepareCoordinator: opts.artifactPrepare } : {}),\n }, parentSignal)));\n const contextExit = yield* Effect.exit(assertFirst.awaitContext());\n if (Exit.isFailure(contextExit)) {\n if (Cause.isInterruptedOnly(contextExit.cause))\n return yield* Effect.interrupt;\n return yield* Fiber.join(bodyFiber);\n }\n const author = Effect.suspend(() => {\n // This is the original frozen author Context; the assertion only\n // resolves Eval-kind overloads and never substitutes a wrapper.\n // Both Promise and deferred Effect calls capture through explicit\n // Attempt-owned dependencies, never fiber-local ALS.\n const returned = evalDef.test(contextExit.value as never) as unknown;\n if (Effect.isEffect(returned)) {\n return returned as Effect.Effect<void, unknown, never>;\n }\n return Effect.tryPromise({\n try: () => Promise.resolve(returned),\n catch: (error) => error,\n });\n });\n const authorExit = yield* Effect.exit(author);\n if (Exit.isSuccess(authorExit)) {\n yield* assertFirst.completeAuthor({ _tag: \"succeeded\" });\n }\n else {\n if (Cause.isInterruptedOnly(authorExit.cause))\n return yield* Effect.interrupt;\n const failure = Cause.failureOption(authorExit.cause);\n const defect = Cause.dieOption(authorExit.cause);\n const completion: AttemptAuthorCompletion = Option.isSome(failure)\n ? isAssertionStopError(failure.value)\n ? { _tag: \"stopped\" }\n : { _tag: \"failed\", error: failure.value }\n : { _tag: \"defect\", cause: Option.isSome(defect) ? defect.value : authorExit.cause };\n yield* assertFirst.completeAuthor(completion);\n }\n // The declared author callback has returned. A detached continuation may\n // still hold a handle, but it cannot enqueue a new control barrier while\n // this Attempt moves to its single ordered seal.\n yield* assertFirst.closeAssertionRequests(new AssertionAuthoringClosedError(\"attempt-sealing\"));\n const sealRequestExit = yield* Effect.exit(assertFirst.awaitSealRequest());\n if (Exit.isFailure(sealRequestExit)) {\n if (Cause.isInterruptedOnly(sealRequestExit.cause))\n return yield* Effect.interrupt;\n return yield* Fiber.join(bodyFiber);\n }\n const sealExit = yield* Effect.exit(sealAttemptAssertions(sealRequestExit.value.runtime, sealRequestExit.value.options, sealRequestExit.value.workspaceDiff).pipe(Effect.tap(() => Effect.sync(() => {\n assertionsSealed = true;\n })), Effect.tap((sealed) => onSealedEvaluation?.(sealed) ?? Effect.void)));\n if (Exit.isSuccess(sealExit)) {\n yield* assertFirst.completeSeal(sealExit.value);\n }\n else {\n if (Cause.isInterruptedOnly(sealExit.cause))\n return yield* Effect.interrupt;\n const failure = Cause.failureOption(sealExit.cause);\n const defect = Cause.dieOption(sealExit.cause);\n yield* assertFirst.failSeal(Option.isSome(failure)\n ? failure.value\n : Option.isSome(defect)\n ? defect.value\n : Cause.squash(sealExit.cause));\n }\n const bodyResult = yield* Fiber.join(bodyFiber);\n // 留存提交:verdict 定稿、其余收尾(teardown 链、diff 采集)已在 body 内完成后,按档位\n // 提交——failed 档留 failed/errored,all 档全部;顺序不可调换:先原子写登记项,写入成功\n // 才把 disposition 改成 keep;写入失败保持 stop、记 diagnostic,`sandbox.kept` 不得为 true。\n const keepMode = opts.keepSandbox;\n if (run.agent.kind === \"sandbox\" &&\n keepMode !== undefined &&\n a.locator !== undefined &&\n (keepMode === \"all\" || bodyResult.verdict === \"failed\" || bodyResult.verdict === \"errored\")) {\n const providerName = runtimeCapabilities!.provider;\n if (runtimeCapabilities!.retention._tag === \"Suspendable\") {\n const enter = nativeEnterCommand(providerName, sandbox.sandboxId);\n const keptAt = new Date().toISOString();\n const expiresAt = computeExpiresAt(providerName, keptAt);\n const registered = yield* Effect.either(writeKeptEntryEffect(coordinationRoot, {\n sandboxId: sandbox.sandboxId,\n provider: providerName,\n evalId: evalDef.id,\n attempt,\n ...(run.experimentId !== undefined ? { experimentId: run.experimentId } : {}),\n locator: String(a.locator),\n verdict: bodyResult.verdict,\n keptAt,\n workdir: sandbox.workdir,\n ...(enter !== undefined ? { enter } : {}),\n ...(expiresAt !== undefined ? { expiresAt } : {}),\n state: \"alive\",\n }));\n if (Either.isRight(registered)) {\n disposition = \"keep\";\n reportKept({\n locator: a.locator,\n identity,\n who: runWho({ agentName: run.agent.name, model: run.model, experimentId: run.experimentId }),\n verdict: bodyResult.verdict,\n provider: providerName,\n sandboxId: sandbox.sandboxId,\n ...(enter !== undefined ? { enter } : {}),\n });\n // 只有 `kept` 在收尾时点决定;provider / sandboxId 等归属键仍由租借时刻的\n // sandboxFacts 统一挂上(见下方 Effect.map)。\n kept = true;\n return bodyResult;\n }\n const error = registered.left;\n recordDiagnostic({\n code: \"sandbox-keep-failed\",\n level: \"warning\",\n message: `failed to register kept sandbox ${sandbox.sandboxId}; it will be destroyed normally: ${error instanceof Error ? error.message : String(error)}`,\n dedupeKey: `sandbox-keep-failed:${sandbox.sandboxId}`,\n });\n }\n }\n return bodyResult;\n })).pipe(\n // attempt 总超时的硬边界(无上限时这一层不挂,见 applyAttemptDeadline)。\n applyAttemptDeadline, \n // body 自己已兜了 agent 执行错;这里兜的是资源获取 / Sample 层的意外(起沙箱失败等)。\n // 中断【不】吞:此时 Sample 已跑完 release(容器已停),把中断继续上抛,让 forEach 整体停掉,\n // 否则会把中断「恢复」成一条 errored 结果、并让后续 attempt 继续起 —— 那就停不下来了。\n // `timeoutTo` 已在内层把自己的中断消费成 onTimeout 的成功值。这里不能仅凭 Cause 中含\n // interrupt 就升级成整批取消:earlyExit 也会中断 losing attempt 的 fiber。整个 Invocation\n // 是否取消只由 invocationSignal 裁决;其它中断在本 attempt 内封成 errored,随后由调度器\n // 的 earlyExit 去重分支丢弃。兄弟 fiber 的真实 defect 仍由它自己的 Cause 向外传播。\n Effect.catchAllCause((cause) => isAttemptAborted(invocationSignal)\n ? Effect.interrupt\n : Effect.suspend(() => {\n // 资源获取 / Sample 层的意外(起沙箱失败、provisioning 的确定性配置死因)同样是终局\n // 失败:先读空间轴回执,再折成纯数据 AttemptError(顺序不可换,见 declareFailure)。\n const raw = Cause.squash(cause);\n const phase = (sendActive ? \"agent.run\" : lastPhase) ?? \"eval.run\";\n declareFailure(phase, raw);\n const error = errorFromThrown(raw, sendActive ? \"agent.run\" : lastPhase, attemptTimeout);\n const fallback: EvalResult = {\n ...base,\n durationMs: recorder.offsetNow(),\n error,\n ...(evalDef.evaluationKind === \"score\" ? { scoreResult: scoreFactOutcomeForAttemptError(error) } : {}),\n ...(commands.length > 0 ? { commands: [...commands] } : {}),\n };\n return Effect.succeed(fallback);\n })), \n // A prepare/setup failure can be caught by runAttemptBody before a real\n // TestContext exists. In that case the scoped body returns an errored\n // value successfully, so catchAllCause above never runs. Enforce the\n // Record boundary as an output postcondition: every executed errored\n // Attempt owns one sealed (possibly empty) assertion result.\n Effect.flatMap((result) => assertionsSealed || result.verdict !== \"errored\"\n ? Effect.succeed(result)\n : sealExecutionError().pipe(Effect.map((sealed) => withSealedAssertions(result, sealed)), Effect.catchAll(() => Effect.succeed(result)))), Effect.map((result) => !timedOut || timeoutSealedAssertions === undefined\n ? result\n : withSealedAssertions(result, timeoutSealedAssertions)), \n // 结果封口在 Sample release 完成之后:sandbox.stop 已由 finalizer 写进 recorder,\n // 这里把完整的阶段计时挂到即将交还的结果上(timeout / scope 兜底分支同样带上)。超时路径\n // 额外把上面那个 finalizer 折叠出的 workspace.diff / sources 并进来——它俩是异步产出,\n // 必须等 Sample release(本 map 之前的所有 finalizer)跑完才有值,不能在 onTimeout 的同步\n // 回调里就地给,原理与 phases 完全一致(见该 finalizer 与 onTimeout 的注释)。\n Effect.map((r: EvalResult): EvalResult => {\n const withEvidence: EvalResult = {\n ...r,\n ...(diagnostics.length > 0 ? { diagnostics: [...diagnostics] } : {}),\n ...(commands.length > 0 ? { commands: [...commands] } : {}),\n };\n const phases = recorder.finalize();\n // 现有阶段计时尚未把 sandbox.create 起点单独持久化;在它可用前落同口径的保守值,\n // 读取旧记录也按 durationMs 回退,绝不因缺值错误携带。\n const withPhases = {\n ...(phases ? { ...withEvidence, phases } : withEvidence),\n executionMs: withEvidence.executionMs ?? withEvidence.durationMs,\n };\n // 调度事实统一在这里挂:每条出口(正常、body 抛错、超时、Sample 层失败)都经过本 map,\n // 归属因此不随「走到了哪一步」丢失(见 sandboxFacts 的声明)。\n const withSandbox: EvalResult = sandboxFacts\n ? { ...withPhases, sandbox: { ...sandboxFacts, ...(kept ? { kept: true as const } : {}) } }\n : withPhases;\n const completed: EvalResult = timedOut\n ? {\n ...withSandbox,\n ...(timeoutDiff !== undefined ? { diff: timeoutDiff } : {}),\n sources: timeoutSources ?? [],\n }\n : withSandbox;\n const finalResult = retainRunnerAttemptSourceCapture(redactEvalResultEvidence(completed, sensitiveValues), sourceCapture.snapshot());\n const capture = timedOut\n ? timeoutFileChangesCapture ?? fileChangesCapture\n : fileChangesCapture;\n if (capture !== undefined) {\n retainRunnerAttemptFileChangesCapture(finalResult, capture);\n }\n bindRunnerAttemptObservabilityCapture(finalResult, observabilityRuntime);\n return finalResult;\n }));\n}\n/**\n * `EvalResult` still has historical renderer fields while its replacement\n * invocation coordinator is being completed. This is the only Runner-side\n * compatibility projection: it derives empty legacy graph arrays and a score\n * terminal view from the one sealed Assert-first result. No Fact collector or\n * Fact/use graph participates in authoring, evaluation, or sealing.\n */\nfunction legacyResultProjectionFromSealedAssertions(sealed: SealedAttemptAssertions, error?: AttemptError, skipReason?: string): Pick<EvalResult, \"factResults\" | \"factUses\" | \"scoreResult\"> {\n const empty = Object.freeze({\n factResults: Object.freeze([]),\n factUses: Object.freeze([]),\n });\n if (sealed.score === undefined)\n return empty;\n if (skipReason !== undefined) {\n return Object.freeze({\n ...empty,\n scoreResult: Object.freeze({\n status: \"skipped\" as const,\n earnedScore: 0,\n creditedScore: null,\n reason: skipReason,\n }),\n });\n }\n const score = sealed.score;\n const earned = score.state === \"unavailable\" ? 0 : score.earned;\n if (sealed.evaluation.execution === \"errored\") {\n const reasons = score.state === \"complete\" ? [] : score.reasons;\n const errors = [Object.freeze({\n kind: \"error\" as const,\n error: Object.freeze({\n class: \"execution\" as const,\n code: error?.code ?? \"assertion-execution-errored\",\n message: error?.message ?? \"Assert-first Attempt sealed after an execution error\",\n }),\n })] as const;\n const scoreResult: Extract<NonNullable<EvalResult[\"scoreResult\"]>, {\n readonly status: \"errored\";\n }> = {\n status: \"errored\",\n earnedScore: earned,\n creditedScore: null,\n errors,\n issues: reasons.map((reason) => Object.freeze({\n kind: \"unavailable\" as const,\n reason,\n })),\n };\n return Object.freeze({\n ...empty,\n scoreResult,\n });\n }\n if (score.state === \"complete\") {\n return Object.freeze({\n ...empty,\n scoreResult: Object.freeze({\n status: \"scored\" as const,\n earnedScore: score.earned,\n creditedScore: score.earned,\n }),\n });\n }\n const [firstReason, ...laterReasons] = score.reasons;\n const issues = [\n Object.freeze({ kind: \"unavailable\" as const, reason: firstReason }),\n ...laterReasons.map((reason) => Object.freeze({\n kind: \"unavailable\" as const,\n reason,\n })),\n ] as const;\n const scoreResult: Extract<NonNullable<EvalResult[\"scoreResult\"]>, {\n readonly status: \"unavailable\";\n }> = {\n status: \"unavailable\",\n earnedScore: earned,\n creditedScore: null,\n issues,\n };\n return Object.freeze({\n ...empty,\n scoreResult,\n });\n}\nfunction withSealedAssertions(result: EvalResult, sealed: SealedAttemptAssertions): EvalResult {\n return {\n ...result,\n verdict: sealed.verdict.state,\n ...legacyResultProjectionFromSealedAssertions(sealed, result.error, result.skipReason),\n };\n}\nfunction isAssertionStopError(value: unknown): value is AssertionStopError {\n return typeof value === \"object\"\n && value !== null\n && (value as {\n readonly _tag?: unknown;\n })._tag === \"AssertionStopError\";\n}\n/** Runner-originated failures before Fact folding still produce a closed Score terminal outcome. */\nexport function scoreFactOutcomeForAttemptError(error: AttemptError): import(\"../assertions/types.ts\").ScoreFactAttemptOutcome {\n return {\n status: \"errored\",\n earnedScore: 0,\n creditedScore: null,\n errors: [{\n kind: \"error\",\n error: { class: \"execution\", code: error.code, message: error.message },\n }],\n issues: [],\n };\n}\n/** 把 catch 到的 e(body 里 test()/setup 抛错,或 Sample 层 squash 出来的原始错误)折成\n * `AttemptError`。message/stack/cause 由 `describeError` 拆分;phase 取失败那一刻打开的\n * 生命周期阶段(极早期就挂、还没跨进任何阶段时兜底 `eval.run`——phase 是必填字段,不留空);\n * code 目前只对确定已知的类别赋稳定码,其余走 `\"unexpected-error\"`——provider 专属的限流码\n * 分类留在各 provider 的 `classifyProvisionError`,没有中性入口能在这里复算,不猜一个可能错的码。 */\nexport function errorFromThrown(e: unknown, phase: LifecyclePhase | undefined, deadline?: {\n timeoutMs: number;\n source: TimeoutSource;\n}): AttemptError {\n if (isSendFailure(e)) {\n const detail = e.cause === undefined ? undefined : describeExternalCause(e.cause);\n return {\n code: \"agent-send-failed\",\n message: sendFailureText(e),\n origin: attemptOrigin(phase ?? \"eval.run\"),\n ...(detail?.stack ? { stack: detail.stack } : {}),\n ...(detail ? { cause: detail.cause } : {}),\n };\n }\n const { message, stack, cause } = describeError(e);\n // 沙箱命令撞线抛的是带归属的错(见 sandbox/deadline.ts):显式传 timeout 的那条命令归\n // `command-timeout`,没显式传的那条上限本来就是 attempt deadline 派生的,归属如实指回\n // deadline —— 两者都不是「不明原因的 unexpected-error」。\n const timeout = timeoutAttributionOf(e, deadline);\n return {\n code: timeout ? \"timeout\" : \"unexpected-error\",\n message,\n origin: attemptOrigin(phase ?? \"eval.run\"),\n ...(timeout ? { timeout } : {}),\n ...(stack ? { stack } : {}),\n ...(cause ? { cause } : {}),\n };\n}\nfunction describeExternalCause(cause: ExternalCause): {\n stack?: string;\n cause: {\n name?: string;\n code?: string;\n message: string;\n };\n} {\n if (cause._tag === \"ThrownValue\")\n return { cause: { message: cause.message } };\n return {\n ...(cause.stack._tag === \"Present\" ? { stack: cause.stack.value } : {}),\n cause: {\n name: cause.name,\n ...(cause.code._tag === \"Present\" ? { code: String(cause.code.value) } : {}),\n message: cause.message,\n },\n };\n}\n/**\n * 命令撞线错误 → 归属三元组;不是这类错误返回 undefined。\n *\n * 命令没显式传 `timeout` 时,它撞的那条线本来就是 attempt deadline 派生出来的剩余量:\n * 归属如实指回 deadline 那一层(值与来源都取解析链的赢家),而不是编造一个「命令自己的上限」。\n */\nfunction timeoutAttributionOf(e: unknown, deadline?: {\n timeoutMs: number;\n source: TimeoutSource;\n}): TimeoutAttribution | undefined {\n if (!(e instanceof SandboxCommandTimeoutError))\n return undefined;\n if (e.explicit)\n return { trigger: \"command-timeout\", limitMs: e.limitMs, source: \"command\" };\n return deadline === undefined\n ? { trigger: \"command-timeout\", limitMs: e.limitMs, source: \"command\" }\n : { trigger: \"attempt-deadline\", limitMs: deadline.timeoutMs, source: deadline.source };\n}\n/**\n * provider 固有会话上限的派发前预检:deadline 超出它时 attempt 会跑到一半被平台截断,\n * 与其让它跑一半赔钱,不如在这里报环境约束——点名 provider 与上限值,并给出两条出路。\n * 全实验同因必死(同一个 provider、同一条 deadline),因此按 experiment 域止损。\n */\nfunction assertDeadlineFitsPlan(capabilities: ReturnType<typeof sandboxRuntimeCapabilities>, deadlineMs: number | undefined): void {\n if (deadlineMs === undefined)\n return;\n if (capabilities.sessionLimit._tag !== \"Bounded\")\n return;\n const limit = capabilities.sessionLimit.milliseconds;\n if (deadlineMs <= limit)\n return;\n throw new ExperimentFatalError(t(\"sandbox.deadlineExceedsSession\", {\n provider: capabilities.provider,\n limitMs: limit,\n timeoutMs: deadlineMs,\n }));\n}\ninterface AttemptResources {\n sandbox: Sandbox;\n /** Attempt-local source snapshot and semantic-token journal; never public Record values. */\n sourceRegistry: SourceRegistry;\n sourceCapture: RunnerAttemptSourceCapture;\n /** 本 attempt 解析出的超时上限与它的出处;超时归属(`error.timeout`)照它落盘。 */\n attemptTimeout?: {\n timeoutMs: number;\n source: TimeoutSource;\n };\n /** attempt deadline 的截止**时刻**;命令节点的时限归属按它算剩余量。四层都没声明上限时缺席。 */\n deadlineAt?: number;\n receiver?: TraceReceiver;\n telemetry?: Telemetry;\n /** 非沙箱 tracing agent 的共享 OTLP 通道(run 级池持有,不随 attempt 关)。 */\n otel?: AgentOtelChannel;\n signal: AbortSignal;\n log: (m: string) => void;\n /** 进入一个正式 LifecyclePhase 边界(见 runAttemptEffect 顶部的定义)。 */\n enterPhase: (phase: LifecyclePhase) => void;\n /** 读当前最近跨入的 phase(send 在飞时返回嵌套的 `agent.run`):error/diagnostic 归因用。 */\n getPhase: () => LifecyclePhase | undefined;\n /** SessionManager 的 send 在飞通知落点(agent.run 归因)。 */\n setSendActive: (active: boolean) => void;\n /** 阶段计时 recorder(turn/command 时间树挂载点)。 */\n recorder: TimingRecorder;\n /** 作用域反馈句柄(归因随 runner 当前阶段);各生命周期入口共享同一实现。 */\n feedback: ScopedFeedback;\n /** attempt 级诊断累计(runAttemptEffect 持有,含 sandbox.create 期间的诊断)。 */\n diagnostics: DiagnosticRecord[];\n /**\n * attempt 级 Sandbox 命令证据累加(runAttemptEffect 持有的同一个数组引用,与\n * diagnostics 同一种「共享容器」模式):`withCommandTiming` 往这里 push,\n * finally 挂到即将返回的结果上(见 diagnostics 的并入点)。\n */\n commands: CommandExitEvidence[];\n /** `CommandOptions.sensitiveValues` 的 Attempt 级内存集合;只由命令包装写、结果封口读。 */\n sensitiveValues: Set<string>;\n /** Private Observability capture; its final attachment facts are read only by the Record adapter. */\n observabilityRuntime: RunnerAttemptObservabilityRuntime;\n /** turn 级重试退避期间释放/收回的全局并发槽位;透传给 Assert-first Context。 */\n concurrencySlot?: ConcurrencySlot;\n /** 终局失败的空间轴回执(runAttemptEffect 持有的同一个闭包):body 的失败路径与 finally 里的\n * per-attempt teardown 失败都经它上报,止损闸据此落闸(见 runAttemptEffect 的 declareFailure)。 */\n declareFailure: (phase: LifecyclePhase, e: unknown) => void;\n /** `timeoutTo` 已经裁定 deadline 后才为 true;用于区分它触发的协作式 abort 与外层 fiber 取消。 */\n isDeadlineTimedOut: () => boolean;\n /** 作者 prepare 成功后登记的 cleanup;由外层 Scope 全局 LIFO 执行。 */\n layerCleanups: LayerCleanupEntry[];\n /** SessionManager 一建好就登记事件/用量的读取句柄回外层(超时证据保全用,见\n * runAttemptEffect 顶部 liveEvents/liveUsage 的注释与 docs/runner.md「超时:双层保护」)。 */\n registerEvidence: (getEvents: () => readonly StreamEvent[], getUsage: () => Usage, getRetryAttempts: () => readonly RetryAttemptRecord[]) => void;\n /** 变更分类账一建好(workspace.baseline 阶段)就登记回外层(超时收尾段折叠 workspace.diff 用)。 */\n registerLedger: (ledger: ChangeLedger) => void;\n /** Record capture freezes independently of Assertion late evidence and crosses the Result boundary once. */\n retainFileChangesCapture: (capture: FileChangesCapture) => void;\n /** The outer Effect boundary owns author execution and the one seal. */\n assertFirst: AssertFirstAttemptBridge<unknown>;\n /** Registers the Attempt-local runtime and its post-run evidence state for scope sealing. */\n registerAssertions: (runtime: AssertionsRuntime<\"pass\" | \"score\">, state: AssertFirstContextState) => void;\n /** Run 级 Agent artifact prepare 协调器;仅 Runner 的 agent.ensure 使用。 */\n prepareCoordinator?: import(\"../agents/provisioner.ts\").ArtifactPrepareCoordinator;\n}\ninterface LayerCleanupEntry {\n readonly command: SandboxCleanupCommand;\n readonly context: Omit<SandboxCommandContext, \"onCleanup\">;\n readonly label: string;\n}\n// attempt 的固定段(上传→基线→setup→驱动 agent→采 diff→脚本→评分→判定)。\n// 资源已由 runAttemptEffect 的 Sample 持有;这里只在 finally 跑 agent 自己的 cleanup/teardown。\nasync function runAttemptBody(a: Attempt, config: Config, t0: number, base: EvalResult, res: AttemptResources, parentSignal: AbortSignal | undefined): Promise<EvalResult> {\n const { evalDef, run, attempt } = a;\n const { sandbox: rawSandbox, sourceRegistry, sourceCapture, receiver, telemetry, otel, signal, log, enterPhase, getPhase, setSendActive, recorder, feedback, diagnostics, commands, sensitiveValues, observabilityRuntime, concurrencySlot, declareFailure, isDeadlineTimedOut, layerCleanups, registerEvidence, registerLedger, retainFileChangesCapture, assertFirst, registerAssertions, prepareCoordinator, } = res;\n const usesSandbox = run.agent.kind === \"sandbox\";\n // 命令时间树:所有经这个包装 sandbox 发出的 runCommand/runShell 都挂成当前阶段(或当前 hook\n // 节点)下的 command 子节点。包装只在最外层公开调用记录一次——provider 内部转调不经过它。\n const sandbox = usesSandbox\n ? withCommandTiming(rawSandbox, recorder, getPhase, commands, sensitiveValues, res.deadlineAt, observabilityRuntime, signal)\n : rawSandbox;\n // Direct Agent 只拿基础 ctx;Sandbox Agent 才拿带真实 Sandbox 的扩展 ctx。\n const attemptCtx: AgentContext = {\n signal,\n evalId: evalDef.id,\n attempt: { id: evalDef.id, index: attempt },\n model: run.model,\n reasoningEffort: run.reasoningEffort,\n flags: run.flags,\n experimentId: run.experimentId,\n ...(evalDef.evalGroup === undefined ? {} : { evalGroup: {\n id: evalDef.evalGroup.id,\n definitionHash: evalDef.evalGroup.definitionHash,\n } }),\n session: createAgentSession(),\n telemetry,\n progress: feedback.progress,\n diagnostic: feedback.diagnostic,\n // log 是 progress({ message }) 的别名,不是第二条通道(见 AgentContext.log 注释)。\n log,\n };\n const sandboxAttemptCtx: SandboxAgentContext = { ...attemptCtx, sandbox };\n const commandTarget = createSandboxCommandTarget(sandbox);\n /** agent.setup 时点已走到(未声明 setup 也置位)——agent.teardown 的触发条件(成对触发规则)。 */\n let agentSetupReached = false;\n const evalPluginLifecycles = linkPluginLifecycles(evalDef.plugins, \"eval\");\n let activatedEvalPlugins = 0;\n const evalPluginContext: EvalPluginContext = {\n experimentId: run.experimentId,\n evalId: evalDef.id,\n attempt,\n ...(evalDef.evalGroup === undefined ? {} : { evalGroupId: evalDef.evalGroup.id }),\n signal,\n progress: feedback.progress,\n diagnostic: feedback.diagnostic,\n };\n // Only the Assert-first runtime is registered with the outer Scope. The\n // body requests its single seal after gathering non-authoring evidence.\n let assertionState: AssertFirstContextState | undefined;\n /** adapter 在 agent.setup 里经 `ctx.reportSetup()` 交回的安装清单(宿主侧内存对象,不经沙箱磁盘;\n * 装了 Skill / plugin / MCP 的沙箱型 adapter 才有)。运行器只把它抬成 attempt artifact,\n * 不解释内容、不按 agent 名字分支;什么都没装的 adapter 不调用 → undefined,不生成空 artifact。 */\n let agentSetup: AgentSetupManifest | undefined;\n // 变更分类账(仅沙箱型;workspace.baseline 阶段建立)。\n let ledger: ChangeLedger | undefined;\n // discovery 的 entry 快照加上调用发生时首次读取的 helper 快照;不在 attempt 收尾重读。\n try {\n if (usesSandbox) {\n // Linker 已按「template owner 在前,另一作者在后」排好命令;fresh/reuse 每条 Attempt\n // 都完整重放。owner 子 phase 只做错误与诊断归因,计时仍聚合在 sandbox.prepare。\n const linked = a.plan._tag === \"Sandbox\" ? a.plan.pair : undefined;\n if (linked !== undefined && linked.commands.length > 0) {\n enterPhase(\"sandbox.prepare\");\n for (const entry of linked.commands) {\n const ownerPhase = entry.owner.kind === \"eval\"\n ? \"sandbox.prepare.eval\"\n : entry.owner.kind === \"eval-group\"\n ? \"sandbox.prepare.group\"\n : \"sandbox.prepare.experiment\";\n enterPhase(ownerPhase);\n const label = `${entry.owner.kind}#${entry.index}`;\n const startedAt = recorder.offsetNow();\n const node = recorder.child(sandboxPrepareActivity({\n label,\n startOffsetMs: startedAt,\n }));\n if (node)\n recorder.pushParent(node);\n const cleanupContext: Omit<SandboxCommandContext, \"onCleanup\"> = {\n phase: \"prepare\",\n ...(evalDef.evalGroup === undefined ? {} : { evalGroup: {\n id: evalDef.evalGroup.id,\n definitionHash: evalDef.evalGroup.definitionHash,\n } }),\n owner: entry.owner,\n attempt: { id: `${run.experimentId}/${evalDef.id}`, index: attempt },\n signal,\n progress: feedback.progress,\n diagnostic: feedback.diagnostic,\n };\n const context: SandboxCommandContext = {\n ...cleanupContext,\n onCleanup(command) {\n if (typeof command !== \"function\")\n throw new TypeError(\"sandbox cleanup must be a function\");\n layerCleanups.push({ command, context: cleanupContext, label });\n },\n };\n try {\n await entry.command(commandTarget, context);\n }\n catch (error) {\n if (node)\n node.failed = true;\n throw error;\n }\n finally {\n if (node) {\n node.durationMs = Math.max(0, recorder.offsetNow() - startedAt);\n recorder.popParent();\n }\n }\n }\n }\n for (const lifecycle of evalPluginLifecycles) {\n activatedEvalPlugins += 1;\n if (lifecycle.setup !== undefined) {\n await (lifecycle.setup as (context: EvalPluginContext) => void | Promise<void>)(evalPluginContext);\n }\n }\n // 两侧作者的环境准备完成后,Runner 统一执行 Agent ensure;adapter setup 只能写运行时\n // 配置/凭据,不能自行安装或跳过 probe → install → recheck 循环。\n if (run.agent.kind === \"sandbox\") {\n if (a.plan._tag !== \"Sandbox\") {\n throw new Error(`sandbox agent ${JSON.stringify(run.agent.name)} received a Direct plan`);\n }\n enterPhase(\"agent.ensure\");\n log(t(\"runner.startAgentEnsure\"));\n const verified = await assertFirst.requestEffect(Effect.either(verifySandboxTargetPlatform(sandbox, a.plan.providerPlan.target.platform)));\n if (Either.isLeft(verified))\n throw verified.left;\n const ensureEffect = runAgentEnsure(run.agent.ensure, run.agent.installers, sandbox, {\n coordinator: Option.fromNullable(prepareCoordinator),\n targetPlatform: a.plan.providerPlan.target.platform,\n signal,\n progress: feedback.progress,\n });\n const ensured = await assertFirst.requestEffect(Effect.either(ensureEffect));\n if (Either.isLeft(ensured))\n throw ensured.left;\n }\n // 作者准备与 Agent ensure 都不属于 Agent diff;Runner 在这些\n // 基础设施活动完成后建立统一的 Agent 可归因起点。\n enterPhase(\"workspace.baseline\");\n ledger = await createChangeLedger(sandbox, evalDef.diff === undefined\n ? undefined\n : { include: [...evalDef.diff.include], ignore: [...evalDef.diff.ignore] });\n registerLedger(ledger);\n }\n if (!usesSandbox) {\n for (const lifecycle of evalPluginLifecycles) {\n activatedEvalPlugins += 1;\n if (lifecycle.setup !== undefined) {\n await (lifecycle.setup as (context: EvalPluginContext) => void | Promise<void>)(evalPluginContext);\n }\n }\n }\n // agent 自己的 lifecycle:装 CLI、写 config(每个沙箱一次,不在每轮 send 里)。\n // 时点在此走到(未声明 setup 也算)——agent.teardown 据此触发。\n agentSetupReached = true;\n if (run.agent.setup) {\n enterPhase(\"agent.setup\");\n log(t(\"runner.startAgentSetup\"));\n const returned = (await (run.agent.kind === \"sandbox\"\n ? run.agent.setup(sandbox, {\n ...sandboxAttemptCtx,\n reportSetup: (manifest) => (agentSetup = manifest),\n })\n : run.agent.setup(attemptCtx))) as unknown;\n if (typeof returned === \"function\") {\n throw new Error(t(\"runner.setupReturnedCleanup\", {\n layer: `Agent.setup (${run.agent.name})`,\n hint: \"Agent.teardown\",\n }).trimEnd());\n }\n }\n // OTLP 导出配置(file-based,如 codex 的 config.toml [otel] 块):与 setup 分开,\n // 在主配置写完后追加。仅当 tracing 开 + 有 endpoint 时调一次(env-based 的不实现 configure)。\n if (telemetry && run.agent.kind === \"sandbox\" && run.agent.tracing?.configure) {\n enterPhase(\"telemetry.configure\");\n log(t(\"runner.startAgentTracing\"));\n try {\n await run.agent.tracing.configure(sandbox, sandboxAttemptCtx);\n }\n catch (configureError) {\n if (isBodyInterrupted(signal, parentSignal, isDeadlineTimedOut()))\n throw configureError;\n feedback.diagnostic({\n code: \"telemetry-configure-failed\",\n level: \"warning\",\n message: `telemetry configure failed; continuing without OTLP trace: ${firstLine(formatThrown(configureError))}`,\n data: evidenceDiagnosticData(\"configure\", configureError, a.plan._tag === \"Sandbox\" ? a.plan.providerPlan.provider : undefined),\n });\n }\n }\n // 构造 t,跑 test\n enterPhase(\"eval.run\");\n log(t(\"runner.driveAgent\"));\n const { context, state } = createAssertFirstEvalContext({\n agent: run.agent,\n sandbox,\n evalId: evalDef.id,\n attempt: { id: evalDef.id, index: attempt },\n ...(evalDef.evalGroup === undefined ? {} : { evalGroup: {\n id: evalDef.evalGroup.id,\n definitionHash: evalDef.evalGroup.definitionHash,\n } }),\n model: run.model,\n reasoningEffort: run.reasoningEffort,\n // maxCost 断言的估算价目表;与 observed usage.costUSD 互不兜底。\n pricing: config.pricing,\n flags: run.flags,\n experimentId: run.experimentId,\n judge: a.judge,\n executeStop: assertFirst.requestAssertion,\n // Public author send/respond keep their Promise surface, but their\n // complete Effect graph is executed only by this Attempt-owned bridge.\n requestEffect: assertFirst.requestEffect,\n signal,\n log,\n telemetry,\n otel,\n feedback,\n concurrencySlot,\n // 实验分类器:send 链上排在 adapter 的 classifySendFailure 之前(见\n // docs/feature/error-classification/architecture.md「分类链」)。与本文件 declareFailure\n // 走的生命周期链是同一个函数,两条链的决议序各自单源在 send-failures.ts / failure-class.ts。\n experimentClassifier: run.classifyFailure,\n sourceRegistry,\n nextSourceOrder: sourceCapture.nextSourceOrder,\n // Pass / Score share the same Assert-first entry runtime. Their\n // independent folds are both derived only after this Attempt seals.\n evaluationKind: evalDef.evaluationKind ?? \"pass\",\n // send 窗口钩子:进入前落 eval 归因、返回后落 agent 归因(见 ledger.ts)。\n ledgerHooks: ledger\n ? {\n beforeSend: (label) => ledger!.commitEvalWindow(label),\n afterSend: (label) => ledger!.commitAgentWindow(label),\n }\n : undefined,\n onSendActive: setSendActive,\n timingNow: recorder.offsetNow,\n // 每次 send 一个 turn 节点:本地单调时钟测得的端到端包络 + 与 diff/source 共用的\n // session/turn 身份 token;\n // OTel 接入时再带 traceId,trace.json 的 spans 由消费方按它临时挂到 turn 下。usage 有记录\n // 才带(show `--execution`/`--timing` 的 turn 头行读 TimingNode.usage,见 docs/feature/\n // results/architecture.md「result.json」TimingNode.usage)。\n onTurn: (info) => {\n const turnId = captureRunnerPhysicalConversationTurn({\n runtime: observabilityRuntime,\n outcome: info.outcome,\n events: info.events,\n });\n sourceCapture.onTurn({ ...info, ...(turnId === undefined ? {} : { turnId }) });\n if (info.usage !== undefined) {\n captureRunnerTurnUsage(observabilityRuntime, info.usage);\n }\n return recorder.child(turnActivity({\n label: info.label,\n startOffsetMs: info.startOffsetMs,\n durationMs: info.durationMs,\n ...(info.failed ? { failed: true as const } : {}),\n sessionIndex: info.sessionIndex,\n turnIndex: info.turnIndex,\n ...(turnId === undefined ? {} : { turnId }),\n ...(info.traceId !== undefined ? { traceId: info.traceId } : {}),\n ...(info.traceAttribution !== undefined ? { traceAttribution: info.traceAttribution } : {}),\n ...(info.usage !== undefined ? { usage: info.usage } : {}),\n }));\n },\n });\n sourceCapture.attachAssertions(state.assertions);\n // 登记回外层:超时中断后由 onTimeout 直接读这两个句柄组装 events/usage(见\n // registerEvidence 注释、docs/runner.md「超时:双层保护」超时不丢证据)。\n registerEvidence(() => state.manager.allEvents, () => state.manager.usage, () => state.manager.retryAttempts);\n assertionState = state;\n registerAssertions(state.assertions, state);\n let error: AttemptError | undefined;\n let skipReason: string | undefined;\n try {\n await assertFirst.requestEffect(assertFirst.offerContext(context));\n const author = await assertFirst.requestEffect(assertFirst.awaitAuthor());\n if (author._tag === \"failed\")\n throw author.error;\n if (author._tag === \"defect\")\n throw author.cause;\n }\n catch (e) {\n if (e instanceof EvalSkipped) {\n skipReason = e.reason;\n }\n else {\n // eval 脚本(比如引用了已改名/删掉的 API)抛出的 TypeError:message 是一层原因,完整 stack\n // 单独进 `error.stack`,niceeval show 展开时才看得到 eval 文件的 file:line。\n // 作者从 test(t) 体内抛的 ExperimentFatalError / EvalFatalError 也走这条分支。\n declareFailure(getPhase() ?? \"eval.run\", e);\n error = errorFromThrown(e, getPhase(), res.attemptTimeout);\n }\n }\n if (skipReason)\n log(t(\"runner.skip\", { reason: skipReason }));\n // 采 agent 归因增量(workspace.diff 阶段:从分类账折叠逐窗口 delta)。Direct Agent 没有 workspace。\n if (!skipReason && usesSandbox)\n enterPhase(\"workspace.diff\");\n let diffWindows: DiffArtifact = [];\n let diffArtifactAvailable = true;\n let diffExportAvailable = true;\n const captureFailure = state.manager.ledgerCaptureFailure;\n if (captureFailure !== undefined) {\n // `afterSend` is intentionally non-fatal to the completed agent Turn,\n // but its missing checkpoint makes every later workspace document\n // incomplete. Do not export the surviving prefix as a complete diff.\n diffArtifactAvailable = false;\n feedback.diagnostic({\n code: \"workspace-diff-unavailable\",\n level: \"warning\",\n message: `workspace diff capture failed after ${captureFailure.label}; treating the diff as unavailable: ${firstLine(formatThrown(captureFailure.error))}`,\n data: evidenceDiagnosticData(\"capture\", captureFailure.error, a.plan._tag === \"Sandbox\" ? a.plan.providerPlan.provider : undefined),\n });\n }\n if (usesSandbox && ledger) {\n const startedAt = recorder.offsetNow();\n const operation = recorder.child(workspaceDiffExportActivity({\n label: \"export workspace diff\",\n startOffsetMs: startedAt,\n durationMs: 0,\n }));\n if (operation)\n recorder.pushParent(operation);\n try {\n diffWindows = await ledger.exportWindows();\n if (operation) {\n const files = new Set(diffWindows.flatMap((window) => Object.keys(window.changes))).size;\n operation.label = `export workspace diff · ${diffWindows.length} ${diffWindows.length === 1 ? \"window\" : \"windows\"} · ${files} ${files === 1 ? \"file\" : \"files\"}`;\n }\n }\n catch (diffError) {\n if (operation)\n operation.failed = true;\n if (isBodyInterrupted(signal, parentSignal, isDeadlineTimedOut()))\n throw diffError;\n diffArtifactAvailable = false;\n diffExportAvailable = false;\n feedback.diagnostic({\n code: \"workspace-diff-unavailable\",\n level: \"warning\",\n message: `workspace diff export failed; continuing with command/event evidence: ${firstLine(formatThrown(diffError))}`,\n data: evidenceDiagnosticData(\"exportWindows\", diffError, a.plan._tag === \"Sandbox\" ? a.plan.providerPlan.provider : undefined),\n });\n }\n finally {\n if (operation) {\n operation.durationMs = Math.max(0, recorder.offsetNow() - startedAt);\n recorder.popParent();\n }\n }\n }\n const diff = deriveDiffData(diffWindows);\n let workspaceDiff: AgentWorkspaceDiff | undefined;\n if (usesSandbox && ledger) {\n let document: AgentWorkspaceDiff | undefined;\n if (diffExportAvailable) {\n try {\n document = createAgentWorkspaceDiff({\n windows: diffWindows,\n policy: ledger.attribution,\n });\n }\n catch (diffError) {\n diffArtifactAvailable = false;\n feedback.diagnostic({\n code: \"workspace-diff-unavailable\",\n level: \"warning\",\n message: `workspace diff freeze failed; continuing with command/event evidence: ${firstLine(formatThrown(diffError))}`,\n data: evidenceDiagnosticData(\"freeze\", diffError, a.plan._tag === \"Sandbox\" ? a.plan.providerPlan.provider : undefined),\n });\n }\n }\n const limitations = [\n ...(captureFailure === undefined ? [] : [Object.freeze({\n code: \"capture-failed\" as const,\n stage: \"checkpoint\" as const,\n atWindowId: captureFailure.label,\n })]),\n ...(!diffExportAvailable ? [Object.freeze({\n code: \"capture-failed\" as const,\n stage: \"export\" as const,\n atWindowId: null,\n })] : []),\n ];\n if (document === undefined) {\n const capture = createEmptyFileChangesCapture({\n policy: ledger.attribution,\n limitations: [\n ...limitations,\n ...(diffExportAvailable ? [Object.freeze({\n code: \"capture-failed\" as const,\n stage: \"normalize\" as const,\n atWindowId: null,\n })] : []),\n ],\n });\n assertFileChangesCaptureRecordable(capture);\n retainFileChangesCapture(capture);\n }\n else {\n const capture = createFileChangesCapture({ document, limitations });\n assertFileChangesCaptureRecordable(capture);\n retainFileChangesCapture(capture);\n }\n // A malformed family payload or its blob closure is a producer defect,\n // not a collector limitation. Keep this outside the collector catches.\n if (!skipReason && diffArtifactAvailable && captureFailure === undefined && document !== undefined) {\n state.late.diff = Object.freeze({\n state: \"available\" as const,\n document,\n });\n workspaceDiff = document;\n }\n else {\n state.late.diff = Object.freeze({\n state: \"unavailable\" as const,\n reason: \"producer-failed\" as const,\n });\n }\n }\n else {\n state.late.diff = Object.freeze({\n state: \"unavailable\" as const,\n reason: usesSandbox\n ? \"producer-failed\" as const\n : \"sandbox-unavailable\" as const,\n });\n }\n if (!skipReason && usesSandbox && diffArtifactAvailable) {\n const files = Object.values(diff.files);\n log(t(\"runner.diffProgress\", {\n changed: files.filter((f) => f.net !== \"deleted\").length,\n deleted: files.filter((f) => f.net === \"deleted\").length,\n }));\n }\n const scripts: globalThis.Record<string, ScriptResult> = {};\n state.late.scripts = scripts;\n // Runtime observations remain available to trace/cost projection. Assertion\n // authoring itself has already been captured as sealed-entry registrations.\n const events = state.manager.allEvents;\n const usage = state.manager.usage;\n const facts = deriveRunFacts(events);\n if (!skipReason)\n enterPhase(\"assertions.evaluate\");\n const sealedAssertions = await assertFirst.requestEffect(assertFirst.requestSeal({\n runtime: state.assertions,\n options: {\n execution: error === undefined ? \"completed\" : \"errored\",\n explicitlySkipped: skipReason !== undefined,\n },\n ...(workspaceDiff === undefined ? {} : { workspaceDiff }),\n }));\n const verdict = sealedAssertions.verdict.state;\n // 收 OTLP trace:给最后一批导出留点落地时间,再 collect(空则不挂)。\n // codex 的 OTLP 把内部 Rust tracing 全导出来(handle_responses / append_items … 上万条);\n // 先经【每-agent mapper】把原生 span 归一到 canonical GenAI semconv(定 SpanKind),\n // 再 selectTraceSpans 按 kind 挑出回合/模型/工具,丢掉 \"other\" 噪声(干净小 trace 整段保留)。\n let trace: TraceSpan[] | undefined;\n if (receiver) {\n enterPhase(\"telemetry.collect\");\n try {\n await assertFirst.requestEffect(Effect.raceFirst(receiver.settle(250, 1500), interruptOnAbort(signal)));\n const spans = receiver.collect();\n if (spans.length) {\n // 归一 → 选语义 span → 按 call_id 把 transcript 的工具入参/出参 join 上去(span 自身不带命令文本)。\n // 对接口分发,不按名字分支:mapper 由 Agent 自己声明,缺省走通用 heuristic。\n const canonical = (run.agent.spanMapper ?? mapGenericSpans)(spans);\n trace = enrichTraceWithIO(selectTraceSpans(canonical), facts.toolCalls);\n const note = spans.length > trace.length ? t(\"runner.traceSelected\", { count: trace.length }) : \"\";\n log(`trace:${spans.length} span${note}`);\n }\n }\n catch (collectError) {\n if (isBodyInterrupted(signal, parentSignal, isDeadlineTimedOut()))\n throw collectError;\n feedback.diagnostic({\n code: \"telemetry-collect-failed\",\n level: \"warning\",\n message: `telemetry collect failed; retaining the existing verdict: ${firstLine(formatThrown(collectError))}`,\n data: evidenceDiagnosticData(\"collect\", collectError, a.plan._tag === \"Sandbox\" ? a.plan.providerPlan.provider : undefined),\n });\n }\n }\n else if (otel) {\n // 共享通道:receiver 不归本 attempt 关,trace 只取归属到本 attempt 的 span\n //(逐轮攒的 + 按本 attempt traceId sweep 回的迟到批)。\n enterPhase(\"telemetry.collect\");\n try {\n const late = await assertFirst.requestEffect(Effect.raceFirst(otel.sweepEffect(state.manager.otelTraceIds, state.manager.otelTurnWindows), interruptOnAbort(signal)));\n const traceIdsBeforeDeferred = new Set(state.manager.otelTraceIds);\n const deferred = state.manager.attributeDeferredOtel(late);\n const knownLate = late.filter((span) => traceIdsBeforeDeferred.has(span.traceId));\n const spans = [...state.manager.otelSpans, ...knownLate, ...deferred].filter((span, index, all) => all.findIndex((candidate) => candidate.spanId === span.spanId) === index);\n if (spans.length) {\n const canonical = (run.agent.spanMapper ?? mapGenericSpans)(spans);\n trace = enrichTraceWithIO(selectTraceSpans(canonical), facts.toolCalls);\n const note = spans.length > trace.length ? t(\"runner.traceSelected\", { count: trace.length }) : \"\";\n log(`trace:${spans.length} span${note}`);\n }\n }\n catch (collectError) {\n if (isBodyInterrupted(signal, parentSignal, isDeadlineTimedOut()))\n throw collectError;\n feedback.diagnostic({\n code: \"telemetry-collect-failed\",\n level: \"warning\",\n message: `telemetry collect failed; retaining the existing verdict: ${firstLine(formatThrown(collectError))}`,\n data: evidenceDiagnosticData(\"collect\", collectError),\n });\n }\n }\n // 主链到 telemetry.collect 为止。必须在 Effect Sample release 之前显式封口;否则最后一个\n // 主链 phase 会一直开到 sandbox.stop 完成,既把收尾时间重复算进主链,也会让 phases\n // 主链合计大于 durationMs。Sample finalizer 只负责另记 sandbox.stop / sandbox.suspend。\n recorder.closeCurrent();\n const durationMs = recorder.offsetNow();\n const o11y = buildO11ySummary(events);\n // 单向字段契约:estimatedCostUSD 恒为 estimateCost(run.model, usage, config.pricing)\n // 的 runtime/config price table 估算,永远独立计算;observed 成本(网关/adapter 显式回报)\n // 只留在 usage.costUSD,两者互不覆盖、互不兜底——即使 observed 存在也照常估算。\n // 权威唯一在 result.json 的 estimatedCostUSD;o11y.json 只留行为计数(见 docs/feature/record/architecture.md「o11y.json」)。\n const estimatedCostUSD = estimateCost(run.model, usage, config.pricing);\n // Assert-first entries carry no legacy source graph. Session events and the\n // captured entry module still provide the stable source artifact surface.\n const sources = await collectSources(evalDef.source, sourceRegistry);\n const legacyProjection = legacyResultProjectionFromSealedAssertions(sealedAssertions, error, skipReason);\n const value: EvalResult = {\n id: evalDef.id,\n description: evalDef.description,\n experimentId: run.experimentId,\n experiment: experimentRunInfo(run, a.plan, a.sandboxPlansByEval, config, a.judge),\n agent: run.agent.name,\n model: run.model,\n verdict,\n fingerprint: a.fingerprint,\n evaluationAlgorithm: EVALUATION_ALGORITHM,\n configHash: a.configHash,\n attempt,\n startedAt: new Date(t0).toISOString(),\n durationMs,\n ...legacyProjection,\n evaluationKind: evalDef.evaluationKind ?? \"pass\",\n ...(state.manager.retryAttempts.length > 0 ? { retryAttempts: state.manager.retryAttempts } : {}),\n usage,\n estimatedCostUSD,\n error,\n skipReason,\n events,\n sources,\n o11y,\n trace,\n agentSetup,\n ...(diffArtifactAvailable ? { diff: diffWindows } : {}),\n evidenceCoverage: state.manager.evidenceCoverage,\n // sandbox 归属不在这里拼:它是租借时刻就定死的调度事实,由 runAttemptEffect 统一挂到\n // 每一条出口结果上(含 setup 失败与超时),见那边的 `sandboxFacts`。\n };\n return value;\n }\n catch (e) {\n // telemetry / diff 等 supplemental 路径显式保留 AbortSignal 语义;不要把用户中断\n // 降成 AttemptError 或 warning。外层 Effect 会负责中止并运行 release/finalizer。\n if (isBodyInterrupted(signal, parentSignal, isDeadlineTimedOut()))\n throw e;\n recorder.failCurrent();\n // SandboxLayer command / agent.setup / 评分链路抛出的终局失败:同样先读空间轴回执,\n // 再折成纯数据 AttemptError(顺序不可换,见 declareFailure)。\n declareFailure(getPhase() ?? \"eval.run\", e);\n const error = errorFromThrown(e, getPhase(), res.attemptTimeout);\n // If setup failed before Context construction, release the outer Effect\n // boundary instead of leaving it waiting for a Context that cannot exist.\n await assertFirst.requestEffect(assertFirst.failBeforeContext(e));\n let sealed: SealedAttemptAssertions | undefined;\n if (assertionState !== undefined) {\n if (assertionState.late.diff.state === \"pending\") {\n assertionState.late.diff = Object.freeze({\n state: \"unavailable\" as const,\n reason: \"producer-failed\" as const,\n });\n }\n try {\n sealed = await assertFirst.requestEffect(assertFirst.requestSeal({\n runtime: assertionState.assertions,\n options: { execution: \"errored\" },\n }));\n }\n catch {\n // The outer Effect branch owns attachment/seal failures. Keep this\n // fallback as an execution error without inventing another runtime.\n }\n }\n const value: EvalResult = {\n ...base,\n durationMs: recorder.offsetNow(),\n error,\n ...(sealed === undefined\n ? (evalDef.evaluationKind === \"score\" ? { scoreResult: scoreFactOutcomeForAttemptError(error) } : {})\n : legacyResultProjectionFromSealedAssertions(sealed, error)),\n ...(agentSetup !== undefined ? { agentSetup } : {}),\n };\n return value;\n }\n finally {\n // 收尾段一律在 finally 跑(主链成败都执行),不改判定,各自兜错(diagnostic)、各自计时\n // (不计入 durationMs 口径,见 docs/feature/record/architecture.md)。执行序与 LifecyclePhase\n // 闭集声明一致:agent.teardown → sandbox.cleanup;各段可独立标 failed。\n // 沙箱 stop / 接收器 close 不在这里 —— 由 runAttemptEffect 的 Sample 在本函数返回后回收,\n // 并经 finalizer 计成 sandbox.stop。没有对应 teardown/cleanup 的段直接跳过,不产生空阶段。\n if (agentSetupReached && run.agent.teardown) {\n enterPhase(\"agent.teardown\");\n await recorder\n .measureClosing(\"agent.teardown\", async () => {\n try {\n // 先按 kind 收窄 Agent 联合,再取 teardown —— 否则可选属性访问会把\n // AgentTeardown | DirectAgentTeardown 混成无法调用的签名。\n if (run.agent.kind === \"sandbox\") {\n const teardown = run.agent.teardown;\n if (teardown) {\n await assertFirst.requestEffect(cleanupCallback((signal) => teardown(sandbox, {\n ...sandboxAttemptCtx,\n signal,\n })));\n }\n }\n else {\n const teardown = run.agent.teardown;\n if (teardown) {\n await assertFirst.requestEffect(cleanupCallback((signal) => teardown({\n ...attemptCtx,\n signal,\n })));\n }\n }\n }\n catch (e) {\n declareFailure(\"agent.teardown\", e);\n diagnostics.push(teardownDiagnostic(\"agent.teardown\", e));\n throw e;\n }\n })\n .catch(() => { });\n }\n for (const lifecycle of evalPluginLifecycles.slice(0, activatedEvalPlugins).reverse()) {\n if (lifecycle.teardown === undefined)\n continue;\n try {\n await assertFirst.requestEffect(cleanupCallback((signal) => (lifecycle.teardown as (context: EvalPluginContext) => void | Promise<void>)({\n ...evalPluginContext,\n signal,\n })));\n }\n catch (error) {\n feedback.diagnostic({\n code: \"plugin-lifecycle-teardown-failed\",\n level: \"warning\",\n message: error instanceof Error ? error.message : String(error),\n });\n }\n }\n // Agent teardown 是 Promise author 边界内最后一步;作者 cleanup / Provider Case\n // 都由外层 Effect Scope finalizer 接管。\n }\n}\n/** 把一次 teardown / cleanup 失败折成一条 `DiagnosticRecord`(warning,不改判定)。message 取一层\n * 摘要(`firstLine(formatThrown)`),完整 stack 不塞进单 attempt 诊断 —— 诊断是「顺带发生的清理\n * 问题」,不是 attempt 的主因(主因在 verdict / error)。稳定 code `teardown-failed`。 */\nfunction teardownDiagnostic(phase: LifecyclePhase, e: unknown): DiagnosticRecord {\n return {\n code: \"teardown-failed\",\n level: \"warning\",\n detail: firstLine(formatThrown(e)),\n origin: attemptOrigin(phase),\n };\n}\n/** telemetry / diff 等 supplemental 采集失败不能吞掉 Attempt 自己的中断。 */\nfunction isAttemptAborted(signal: AbortSignal | undefined): boolean {\n return signal?.aborted === true;\n}\n/**\n * The legacy body treated rejected author and SDK promises as defects. Keep\n * that result channel while giving every Promise a named Effect v3 boundary\n * and its cancellation signal.\n */\nfunction tryPromiseAsDefect<Value>(run: (signal: AbortSignal) => PromiseLike<Value>): Effect.Effect<Value> {\n return Effect.tryPromise({\n try: run,\n catch: (error) => error,\n }).pipe(Effect.orDie);\n}\n/**\n * This named `Effect.tryPromise` bridge aborts its callback signal for every\n * fiber interruption while preserving the legacy defect channel for rejected\n * setup/body promises. A timeout uses that same path only after `timeoutTo`\n * has synchronously set its winner bit, so only the unmarked case is an\n * external fiber cancellation.\n */\nfunction isBodyInterrupted(signal: AbortSignal, parentSignal: AbortSignal | undefined, deadlineTimedOut: boolean): boolean {\n return isAttemptAborted(parentSignal) || (signal.aborted && !deadlineTimedOut);\n}\n/** 诊断只保存有界结构化 cause,不把完整 SDK response 或 stack 灌进结果。 */\nfunction evidenceDiagnosticData(operation: string, e: unknown, provider?: string): Readonly<globalThis.Record<string, JsonValue>> {\n const described = describeError(e);\n const bounded = (value: string): string => firstLine(value).slice(0, 500);\n const cause = described.cause === undefined\n ? undefined\n : {\n ...(described.cause.name !== undefined ? { name: described.cause.name } : {}),\n ...(described.cause.code !== undefined ? { code: described.cause.code } : {}),\n message: bounded(described.cause.message),\n };\n return {\n operation,\n ...(provider !== undefined ? { provider } : {}),\n error: bounded(described.message),\n ...(cause !== undefined ? { cause } : {}),\n };\n}\n/**\n * 不参加敏感值替换的 Attempt 元数据。它们是调度、缓存与引用身份,或作者源码的原样快照;\n * 改写会让 result 与 run/manifests 身份分叉。其余 EvalResult 字段一律视为运行期证据并在\n * Attempt 交给 reporter 前递归封口。新增 EvalResult 字段默认不能悄悄落进豁免表:下面的\n * `EvalResultRedactionUnclassifiedKey` 会迫使作者明确裁决它属于哪一侧。\n */\nconst EVAL_RESULT_REDACTION_EXEMPT_KEYS = [\n \"id\",\n \"description\",\n \"experimentId\",\n \"experiment\",\n \"agent\",\n \"model\",\n \"verdict\",\n \"fingerprint\",\n \"evaluationAlgorithm\",\n \"configHash\",\n \"attempt\",\n \"startedAt\",\n \"locator\",\n \"locatorRunId\",\n \"durationMs\",\n \"executionMs\",\n \"evaluationKind\",\n \"usage\",\n \"estimatedCostUSD\",\n \"sources\",\n \"sandbox\",\n \"artifactBase\",\n \"carriedAccepting\",\n \"migratedFrom\",\n \"acceptedFrom\",\n \"renamedFrom\",\n \"artifacts\",\n] as const satisfies readonly (keyof EvalResult)[];\nconst EVAL_RESULT_REDACTED_EVIDENCE_KEYS = [\n \"factResults\",\n \"factUses\",\n \"scoreResult\",\n \"retryAttempts\",\n \"error\",\n \"diagnostics\",\n \"phases\",\n \"skipReason\",\n \"events\",\n \"o11y\",\n \"trace\",\n \"agentSetup\",\n \"evidenceCoverage\",\n \"diff\",\n \"commands\",\n \"rawTranscript\",\n] as const satisfies readonly (keyof EvalResult)[];\ntype EvalResultRedactionUnclassifiedKey = Exclude<keyof EvalResult, (typeof EVAL_RESULT_REDACTION_EXEMPT_KEYS)[number] | (typeof EVAL_RESULT_REDACTED_EVIDENCE_KEYS)[number]>;\n/**\n * Attempt 的持久化证据封口。命令级元数据可能在较晚的 send/teardown 才登记,因此这里对\n * result.json、聚合 JSON/JUnit 与独立 artifact 会消费的全部运行期结构再做一次最终扫描,\n * 堵住“较早证据已写进内存、较晚才得知同一敏感值”的时序洞。源码与身份不是命令证据;\n * 任意自由文本里的未知 secret 仍必须由产生它的命令显式登记。\n */\nfunction redactEvalResultEvidence(result: EvalResult, sensitiveValues: ReadonlySet<string>): EvalResult {\n if (sensitiveValues.size === 0)\n return result;\n // 编译期穷尽守卫:EvalResult 新增字段却没在上面两侧明确归类时,这里不再能赋值。\n const allFieldsClassified: EvalResultRedactionUnclassifiedKey extends never ? true : never = true;\n void allFieldsClassified;\n const redact = <Value>(value: Value): Value => redactSensitiveEvidence(value, sensitiveValues);\n const redactedEvidence = Object.fromEntries(EVAL_RESULT_REDACTED_EVIDENCE_KEYS.flatMap((key) => {\n const value = result[key];\n return value === undefined ? [] : [[key, redact(value)] as const];\n }));\n return {\n ...result,\n ...redactedEvidence,\n };\n}\n/**\n * 命令时间树包装:四个公开 run* 方法的最外层调用各记一个 command 子节点\n * (有界脱敏摘要 + exitCode;env 值不进入时间树)。Proxy 拦截 checked 与 unchecked 两组方法,\n * provider 内部 `this.runCommand(...)` 转调不经过它——不形成重复节点。每条命令(成功与非零\n * 退出都算)额外把已按已知敏感值脱敏的 `CommandResult` 登记进 `commands` 累加器,登记发生在\n * 把结果交还调用方**之前**\n * (docs/feature/record/architecture.md「commandsjson」);登记不改变 `runCommand` 的\n * 返回/抛错语义,调用方可以处理非零退出并继续,证据仍保留。checked 方法抛出的\n * `SandboxCommandExitError` 自带 `CommandResult`,同样登记;没有结果的 transport 错误只落\n * 时间树 `failed` 标记,同时保留 manifest 和准确的非正常终态。\n */\nfunction isCommandSpawnFailure(error: unknown): boolean {\n if (typeof error !== \"object\" || error === null)\n return false;\n const candidate = error as {\n readonly code?: unknown;\n readonly syscall?: unknown;\n };\n return ((candidate.code === \"ENOENT\" || candidate.code === \"EACCES\") &&\n typeof candidate.syscall === \"string\" &&\n candidate.syscall.startsWith(\"spawn\"));\n}\nfunction withCommandTiming(sandbox: Sandbox, recorder: TimingRecorder, getPhase: () => LifecyclePhase | undefined, commands: CommandExitEvidence[], sensitiveValues: Set<string>, deadlineAt: number | undefined, observabilityRuntime: RunnerAttemptObservabilityRuntime, attemptSignal: AbortSignal): Sandbox {\n const recordCommandExit = (node: TimingActivity | undefined, display: string, result: {\n exitCode: number;\n stdout?: unknown;\n stderr?: unknown;\n }, checked: boolean): void => {\n if (!node)\n return;\n commands.push({\n timingNodeId: node.id,\n phase: getPhase() ?? \"eval.run\",\n display,\n exitCode: result.exitCode,\n checked,\n stdout: redactSensitiveText(typeof result.stdout === \"string\" ? result.stdout : \"\", sensitiveValues),\n stderr: redactSensitiveText(typeof result.stderr === \"string\" ? result.stderr : \"\", sensitiveValues),\n });\n };\n const wrap = async <T>(cmd: string, args: readonly string[] | undefined, opts: unknown, checked: boolean, invocationKind: \"argv\" | \"shell\", fn: () => Promise<T>): Promise<T> => {\n rememberSensitiveValues(sensitiveValues, commandSensitiveValues(opts));\n const display = commandDisplay(cmd, args, sensitiveValues);\n // Register the command manifest capability before process launch. The\n // later result can only be attached through this opaque handle.\n const observabilityCommand = captureRunnerCommandStart({\n runtime: observabilityRuntime,\n phase: getPhase() ?? \"eval.run\",\n invocationKind,\n command: cmd,\n ...(args === undefined ? {} : { args }),\n ...(opts === undefined ? {} : { options: opts }),\n });\n const startOffsetMs = recorder.offsetNow();\n const wallStartedAt = Date.now();\n // 这条命令这次生效的线:显式 timeout 归命令自己那层,否则是 attempt deadline 在**命令开始\n // 这一刻**的剩余量——同一台沙箱上的第二条命令拿到的不是一整份上限。\n const limit = commandLimitAttribution(opts as {\n timeoutMs?: number;\n } | undefined, { deadlineAt }, wallStartedAt);\n try {\n const result = await fn();\n const exitCode = (result as {\n exitCode?: unknown;\n })?.exitCode;\n const nonZero = typeof exitCode === \"number\" && exitCode !== 0;\n const node = recorder.child(commandNode({\n display,\n startOffsetMs,\n durationMs: Math.max(0, recorder.offsetNow() - startOffsetMs),\n checked,\n ...(limit !== undefined ? { limit } : {}),\n ...(typeof exitCode === \"number\"\n ? {\n exitCode,\n ...(nonZero\n ? {\n ...(checked ? { failed: true } : {}),\n }\n : {}),\n }\n : {}),\n }));\n if (typeof exitCode === \"number\") {\n recordCommandExit(node, display, {\n exitCode,\n ...(result as {\n stdout?: unknown;\n stderr?: unknown;\n }),\n }, checked);\n captureRunnerCommandResult({\n handle: observabilityCommand,\n exitCode,\n stdout: (result as {\n stdout?: unknown;\n }).stdout,\n stderr: (result as {\n stderr?: unknown;\n }).stderr,\n });\n }\n else {\n captureRunnerCommandCaptureFailed(observabilityCommand);\n }\n // CommandResult.command:最外层公开调用恰好是「eval 实际跑了什么」的定义点,摘要\n // 与时间树节点同一份。记录边界是权威来源,provider 即使给过原始 command 也必须覆盖,\n // 不能让它从 CommandResult → assertion/error 旁路带出未脱敏文本。\n if (result !== null && typeof result === \"object\") {\n return { ...result, command: display } as T;\n }\n return result;\n }\n catch (e) {\n const commandResult = e instanceof SandboxCommandExitError ? e.result : undefined;\n const exitCode = commandResult?.exitCode;\n // 撞线失败的节点带 provider 实际执行的那条线(`SandboxCommandTimeoutError` 自带上限与\n // 「是不是显式声明」),不是这里事前算的那份——两者同源,但 provider 那份是真正掐断它的值。\n const hit = e instanceof SandboxCommandTimeoutError\n ? {\n source: e.explicit ? (\"command-timeout\" as const) : (\"attempt-deadline\" as const),\n limitMs: e.limitMs,\n timedOut: true as const,\n }\n : limit;\n const node = recorder.child(commandNode({\n display,\n startOffsetMs,\n durationMs: Math.max(0, recorder.offsetNow() - startOffsetMs),\n checked,\n ...(typeof exitCode === \"number\"\n ? {\n exitCode,\n ...(checked && exitCode !== 0 ? { failed: true } : {}),\n }\n : { failed: true }),\n ...(hit !== undefined ? { limit: hit } : {}),\n }));\n if (commandResult !== undefined) {\n recordCommandExit(node, display, commandResult, checked);\n captureRunnerCommandResult({\n handle: observabilityCommand,\n exitCode: commandResult.exitCode,\n stdout: commandResult.stdout,\n stderr: commandResult.stderr,\n });\n }\n else if (e instanceof SandboxCommandTimeoutError) {\n captureRunnerCommandTimeout(observabilityCommand);\n }\n else if (attemptSignal.aborted ||\n ((opts as {\n signal?: AbortSignal;\n } | undefined)?.signal?.aborted === true)) {\n // The provider call was already entered, so cancellation terminates\n // this registered command rather than claiming it never started.\n captureRunnerCommandInterrupted(observabilityCommand);\n }\n else {\n captureRunnerCommandCaptureFailed(observabilityCommand, isCommandSpawnFailure(e) ? \"spawn-failed\" : \"transport-lost\");\n }\n throw e;\n }\n };\n const timed = new Proxy(sandbox, {\n get(target, prop, receiver) {\n if (prop === \"runCommand\") {\n return (cmd: string, args?: readonly string[], opts?: unknown) => wrap(cmd, args, opts, false, \"argv\", () => (target.runCommand as (...a: unknown[]) => Promise<unknown>)(cmd, args, opts));\n }\n if (prop === \"runShell\") {\n return (script: string, opts?: unknown) => wrap(script, undefined, opts, false, \"shell\", () => (target.runShell as (...a: unknown[]) => Promise<unknown>)(script, opts));\n }\n if (prop === \"runCommandOrThrow\") {\n return (cmd: string, args?: readonly string[], opts?: unknown) => wrap(cmd, args, opts, true, \"argv\", () => (target.runCommandOrThrow as (...a: unknown[]) => Promise<unknown>)(cmd, args, opts));\n }\n if (prop === \"runShellOrThrow\") {\n return (script: string, opts?: unknown) => wrap(script, undefined, opts, true, \"shell\", () => (target.runShellOrThrow as (...a: unknown[]) => Promise<unknown>)(script, opts));\n }\n const value = Reflect.get(target, prop, receiver);\n return typeof value === \"function\" ? (value as (...a: unknown[]) => unknown).bind(target) : value;\n },\n });\n inheritSandboxCapabilities(sandbox, timed);\n return timed;\n}\nasync function collectSources(evalSource: CapturedEvalSource, registry: SourceRegistry): Promise<SourceArtifact[]> {\n // The registry holds only discovery input plus bytes captured at the action\n // boundary. Deliberately never reread today's workspace to fill history.\n return registry.artifacts({ path: evalSource.path, content: evalSource.content, role: \"entry\" });\n}\n/** 解析后运行配置的穷尽投影(ExperimentRunInfo,见 docs/feature/record/architecture.md):\n * agent/model 只在快照顶层,这里不复制;sandbox 只经 provider 的公开参数投影落盘。\n * 第二个参数收整份项目配置(而不是只收 sandbox):`sandbox` 与 `timeoutMs` 记录真正生效的\n * run 级值;Judge 则连同 Eval 层逐字段解析并按 pair 落盘,使同一 Eval 的裁判 A/B 可回放。 */\nexport function experimentRunInfo(run: AgentRun, plan: Attempt[\"plan\"], sandboxPlansByEval: globalThis.Record<string, import(\"../types.ts\").JsonValue>, config?: Pick<Config, \"timeoutMs\">, judge?: ResolvedJudgeConfig): EvalResult[\"experiment\"] {\n const runLevelTimeoutMs = run.timeoutMs ?? config?.timeoutMs;\n return {\n ...(run.description !== undefined ? { description: run.description } : {}),\n ...(run.reasoningEffort !== undefined ? { reasoningEffort: run.reasoningEffort } : {}),\n ...(Object.keys(run.flags).length > 0 ? { flags: run.flags } : {}),\n ...(run.labels !== undefined && Object.keys(run.labels).length > 0 ? { labels: run.labels } : {}),\n ...(run.pluginBehavior === undefined ? {} : { plugins: run.pluginBehavior }),\n attempts: run.attempts,\n earlyExit: run.earlyExit,\n ...(runLevelTimeoutMs !== undefined ? { timeoutMs: runLevelTimeoutMs } : {}),\n ...(run.budget !== undefined ? { budget: run.budget } : {}),\n ...(run.maxConcurrency !== undefined ? { maxConcurrency: run.maxConcurrency } : {}),\n sandboxLayer: sandboxLayerIdentityFor(plan.pair, \"experiment\"),\n sandboxPlansByEval: { ...sandboxPlansByEval },\n ...(run.sandboxReuse ? { sandboxReuse: true } : {}),\n ...(run.sharedState === undefined ? {} : { sharedState: { key: run.sharedState.key } }),\n ...(judge\n ? { judge: { model: judge.model, baseUrl: judge.baseUrl, apiKeyEnv: judge.apiKeyEnv, timeoutMs: judge.timeoutMs } }\n : {}),\n agentInstalls: [...agentInstallPlansForRun(run)],\n };\n}\n"]}
|