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":"codex.js","sourceRoot":"","sources":["codex.ts"],"names":[],"mappings":"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","sourcesContent":["import { completeEvidenceCoverage } from \"../assertions/coverage.ts\";\nimport { Effect } from \"effect\";\nimport { defineSandboxAgent } from \"../define.ts\";\nimport { requireEnv, getEnv } from \"../util.ts\";\nimport { shared } from \"./shared.ts\";\nimport { appendProjectInstruction, installSkills, installedSkillNames, skillDiscoveryInstruction, } from \"./skills.ts\";\nimport { verifyMarketplaceName } from \"./marketplace.ts\";\nimport { appendNativeConfigFileEffect, assertTomlNativeConfig, loadNativeConfigFileEffect, type LoadedNativeConfig, } from \"./native-config.ts\";\nimport { mapCodexSpans } from \"../o11y/otlp/mappers/codex.ts\";\nimport { unclassifiedToolActionsCoverage } from \"../o11y/command-projection.ts\";\nimport { t } from \"../i18n/index.ts\";\nimport { DEFAULT_CODEX_CLI_VERSION, AGENT_BASELINE_RECIPE_REVISION } from \"./coding-cli-versions.ts\";\nimport { assertMcpServers, isHttpMcp, mcpManifestEntries } from \"./mcp.ts\";\nimport { registerAgentLifecycleHookCommands, runPostSetupHooks, runPreTeardownHooks, } from \"./post-setup.ts\";\nimport { createNpmCliInstaller } from \"./npm-staged.ts\";\nimport type { Agent, AgentSetupManifest, McpServer, Sandbox, SkillSpec, TurnEvidenceCoverage } from \"../types.ts\";\nimport type { SandboxCommand } from \"../sandbox/commands.ts\";\nimport type { AgentArtifactPlatform } from \"./types.ts\";\nimport { makeSendFailure, sendAcceptanceFromEvents, sendFailureText, type SendFailure, } from \"../context/send-failures.ts\";\nimport { normalizeExternalCause } from \"../shared/external-cause.ts\";\nimport type { FailureClass } from \"../shared/failure-class.ts\";\n// ───────────────────────────────────────────────────────────────────────────\n// OpenAI Codex CLI 的 agent adapter(沙箱型)。\n//\n// 连接方式:在沙箱里 spawn `codex exec --json`,stdout JSONL → parseCodex → 标准事件流。\n// 配置:鉴权本地(config / env),模型交给实验(ctx.model),推理努力程度经 ctx.reasoningEffort,\n// 其余参数经 ctx.flags。\n// 扩展(skill / plugin / MCP)是构造参数,setup 翻译成 codex 的原生形态并写 manifest。\n// ───────────────────────────────────────────────────────────────────────────\n/** codex 的 skill 目录(`skills` 生态的「通用」目录);codex 不原生扫描它,靠下面的发现指引。 */\nconst SKILL_DIR = \".agents/skills\";\n/**\n * `configFile` 的保留键:model / provider 路由 / 推理努力归 experiment 与 Adapter 的生成层,\n * MCP 表与 OTel 导出归 Adapter。清单定稿见 docs/feature/adapters/sdk/codex-cli/README.md。\n */\nconst RESERVED_CONFIG_KEYS = [\n \"model\",\n \"model_provider\",\n \"model_providers\",\n \"model_reasoning_effort\",\n \"mcp_servers\",\n \"otel\",\n] as const;\n/**\n * Codex 的原生 Plugin —— **只属于 Codex**,不能传给 Claude Code(它有自己的\n * {@link import(\"./claude-code.ts\").ClaudeCodePluginSpec})。字段当前相似不等于同一个类型:\n * 任一方的 Marketplace 鉴权、锁文件、选择规则或安装参数变化时,另一方不必接受无意义字段。\n */\nexport interface CodexPluginSpec {\n marketplace: {\n /** 目标仓库 manifest 声明的真实 name;CLI 不支持由调用方另取连接别名。 */\n name: string;\n /** Marketplace 来源:`owner/repo`、Git URL 或本地路径。 */\n source: string;\n /** 固定 Marketplace 的 Tag、Commit 或 Branch(→ `codex plugin marketplace add --ref`)。 */\n ref?: string;\n /**\n * sparse 拉取的路径列表,每项生成一个 `codex plugin marketplace add --sparse <path>`\n * (codex 的 `--sparse` 必须带路径参数、可重复):大仓库只取插件所需路径,省略或空数组即全量 clone。\n * 只影响拉取速度,不影响装出来的内容;manifest 不记录它。\n */\n sparse?: readonly string[];\n };\n /** Marketplace 中的 Plugin 名。 */\n name: string;\n}\nexport interface CodexConfig {\n /** 代理 / OpenAI API key。省略时读 CODEX_API_KEY env。 */\n apiKey?: string;\n /** OpenAI 兼容代理 base URL(如 https://s2a.example.com/v1)。省略时读 CODEX_BASE_URL env。 */\n baseUrl?: string;\n /**\n * 注入每次 Codex CLI 进程的额外环境变量。首轮 `codex exec` 与续轮 `codex exec resume`\n * 使用同一份声明;Codex 启动的 lifecycle Hook、MCP 动态 header 与命令子进程都会继承。\n * 值只经 Sandbox command options 传入,不拼进 shell 文本或写入 setup manifest,并全部按\n * 潜在敏感值从 timing / execution / error 证据中脱敏。`CODEX_API_KEY` 仍由 `apiKey` 或\n * 宿主同名环境变量提供,Adapter 的鉴权值会覆盖这里的同名键。\n * env value 不进入 carry 身份。会改变被测行为的非敏感值必须同时声明在 Experiment flags\n * 或所属 Plugin identity;只轮换凭据不会让旧结果失效。\n * `PATH` 是 Sandbox 受管变量,不接受经这里声明——出现即在 factory 构造时报错,改用\n * Sandbox factory 的 `pathPrepend`(见 docs/feature/sandbox/library.md)。\n */\n env?: Readonly<globalThis.Record<string, string>>;\n /**\n * 额外 MCP server(每个 Sandbox setup 时追加进 ~/.codex/config.toml)。\n * stdio 形态(command/args/env)写 [mcp_servers.<name>] 的 command 行;\n * Streamable HTTP 形态(url/headers)写 url 行,headers 进 [mcp_servers.<name>.http_headers] 子表。\n */\n mcpServers?: readonly McpServer[];\n /**\n * 装进 Sandbox 的 Skill(本地目录/文件,或 repo + 可钉 ref + 可选启用集)。\n * 落在 `.agents/skills/<name>/`,并写一段发现指引进 AGENTS.md —— codex 没有 Claude Code 那种\n * 原生 Skill 工具,只把文件装进去它不会自己去读(见 memory/codex-no-native-skill-tool.md)。\n */\n skills?: readonly SkillSpec[];\n /** Codex 原生 Plugin(先连 Marketplace,再从中装指定 Plugin)。 */\n plugins?: readonly CodexPluginSpec[];\n /**\n * 一份完整的 Codex `config.toml`(官方 TOML 格式)在本地项目里的路径 —— 相对运行\n * niceeval 的项目根(含 `niceeval.config.ts` 的目录)解析,不是 Sandbox 内路径;只接受\n * 项目根内的相对路径,包含 `..` 的路径、绝对路径、`~` 路径和解析后逃出项目根的符号链接\n * 都在 setup 阶段报错。原始字节原样并入 Sandbox 里原本为空的用户级 `~/.codex/config.toml`\n * (不继承宿主机配置、不解析后重写);保留键 `model`、`model_provider`、`model_providers`、\n * `model_reasoning_effort`、`mcp_servers`、`otel` 出现在文件里 setup 报错。manifest 只记\n * 项目相对路径与字节 SHA-256,不落正文。\n */\n configFile?: string;\n /**\n * 安装后按数组顺序运行的用户 Hook(复用 SandboxCommand 的窄上下文):在写主配置、挂 MCP、\n * 装 Skills / Plugin、写 manifest 全部完成后执行,适合跑插件自带的 setup 脚本这类\n * 「安装产物就位后才能跑」的过程动作。抛错按基础设施错误计(attempt errored)。\n * 见 docs/feature/adapters/library/coding-agent-extensions.md「安装后运行脚本」。\n */\n postSetup?: readonly SandboxCommand[];\n /**\n * 与 `postSetup` 成对的收尾 Hook:按 `postSetup` 的逆序语义,在 agent 自己的 teardown 步骤\n * 之前执行(LIFO 镜像 —— `postSetup` 跑在 agent 安装之后,`preTeardown` 就跑在 agent 收尾\n * 之前),当且仅当 `postSetup` 的时点走到过才触发。抛错按基础设施错误计,由 teardown 段\n * 按 teardown-failed 诊断收束。\n * 见 docs/feature/adapters/library/coding-agent-extensions.md「安装后运行脚本」。\n */\n preTeardown?: readonly SandboxCommand[];\n}\nconst CODEX_CAPACITY_CODES = new Set([\n \"ADMISSION_FAILED\",\n \"ADMISSION_FAILURE\",\n \"ADMISSION_REJECTED\",\n \"MODEL_AT_CAPACITY\",\n \"MODEL_CAPACITY\",\n \"MODEL_OVERLOADED\",\n]);\nfunction normalizedCodexCode(value: unknown): string | undefined {\n if (typeof value !== \"string\")\n return undefined;\n return value.trim().toUpperCase().replace(/[ -]+/g, \"_\");\n}\nfunction codexCapacityCode(raw: string | undefined): string | undefined {\n if (raw === undefined)\n return undefined;\n for (const line of raw.split(\"\\n\")) {\n try {\n const value: unknown = JSON.parse(line);\n if (!value || typeof value !== \"object\")\n continue;\n const record = value as globalThis.Record<string, unknown>;\n const error = record.error;\n const candidates = [\n record.code,\n record.reason,\n record.type,\n error && typeof error === \"object\" ? (error as globalThis.Record<string, unknown>).code : undefined,\n error && typeof error === \"object\" ? (error as globalThis.Record<string, unknown>).reason : undefined,\n error && typeof error === \"object\" ? (error as globalThis.Record<string, unknown>).type : undefined,\n ];\n const code = candidates.map(normalizedCodexCode).find((candidate) => candidate !== undefined && CODEX_CAPACITY_CODES.has(candidate));\n if (code !== undefined)\n return code;\n }\n catch {\n // Native stderr fallback is handled separately and remains deliberately narrow.\n }\n }\n return undefined;\n}\nfunction codexCapacityMessage(raw: string | undefined): string {\n if (raw === undefined)\n return \"\";\n const messages: string[] = [];\n for (const line of raw.split(\"\\n\")) {\n try {\n const value: unknown = JSON.parse(line);\n if (!value || typeof value !== \"object\")\n continue;\n const record = value as globalThis.Record<string, unknown>;\n if (record.type !== \"turn.failed\" && record.type !== \"response.failed\")\n continue;\n const error = record.error;\n if (error && typeof error === \"object\") {\n const message = (error as globalThis.Record<string, unknown>).message;\n if (typeof message === \"string\")\n messages.push(message);\n }\n }\n catch {\n // Native stderr fallback is handled separately and remains deliberately narrow.\n }\n }\n return messages.join(\"\\n\");\n}\nconst CODEX_CAPACITY_TEXT = /\\bmodel(?:[ _-]+is)?[ _-]+at[ _-]+capacity\\b|\\badmission[ _-]+(?:failed|failure|rejected)\\b/i;\nfunction codexCapacityFromFailure(failure: SendFailure): boolean {\n if (failure.acceptance !== \"rejected\")\n return false;\n if (failure.events !== undefined && sendAcceptanceFromEvents(failure.events) === \"started\")\n return false;\n for (let cause = failure.cause; cause !== undefined;) {\n if (cause._tag === \"Error\" || cause._tag === \"Object\") {\n const code = cause.code._tag === \"Present\" ? normalizedCodexCode(cause.code.value) : undefined;\n if (code !== undefined && CODEX_CAPACITY_CODES.has(code))\n return true;\n cause = cause.cause._tag === \"Cause\" ? cause.cause.value : undefined;\n continue;\n }\n cause = undefined;\n }\n return CODEX_CAPACITY_TEXT.test(sendFailureText(failure));\n}\nfunction classifyCodexSendFailure(failure: SendFailure): FailureClass | undefined {\n return codexCapacityFromFailure(failure) ? { retryable: true, reason: \"model_capacity\" } : undefined;\n}\nfunction codexAcceptance(raw: string | undefined, events: readonly import(\"../types.ts\").StreamEvent[], nativeErrorText = \"\"): \"rejected\" | \"started\" | \"unknown\" {\n const acceptance = sendAcceptanceFromEvents(events);\n if (acceptance === \"started\")\n return \"started\";\n return codexCapacityCode(raw) !== undefined || CODEX_CAPACITY_TEXT.test(`${codexCapacityMessage(raw)}\\n${nativeErrorText}`)\n ? \"rejected\"\n : acceptance;\n}\n/**\n * `@openai/codex` 的 npm 主包只是个 node shim,真正的 CLI 在平台包里\n * (`npm:@openai/codex@<ver>-linux-arm64`),是自带运行时的 musl 静态二进制。\n * 装这一份:沙箱里不需要 node / npm,任务镜像带什么都能装。\n */\nfunction codexPlatformPackage(platform: AgentArtifactPlatform, version: string): {\n spec: string;\n binPath: string;\n} | undefined {\n const target = platform.os === \"linux\" && platform.arch === \"x64\"\n ? { suffix: \"linux-x64\", triple: \"x86_64-unknown-linux-musl\" }\n : platform.os === \"linux\" && platform.arch === \"arm64\"\n ? { suffix: \"linux-arm64\", triple: \"aarch64-unknown-linux-musl\" }\n : platform.os === \"darwin\" && platform.arch === \"x64\"\n ? { suffix: \"darwin-x64\", triple: \"x86_64-apple-darwin\" }\n : platform.os === \"darwin\" && platform.arch === \"arm64\"\n ? { suffix: \"darwin-arm64\", triple: \"aarch64-apple-darwin\" }\n : undefined;\n if (target === undefined)\n return undefined;\n return {\n spec: `@openai/codex@${version}-${target.suffix}`,\n binPath: `vendor/${target.triple}/bin/codex`,\n };\n}\n// Codex 0.144.1 会把「hook 命令已正常退出、随后写 stdin 撞 BrokenPipe」误判成 hook\n// 失败并丢掉 stdout。0.146.0 的官方 command runner 已忽略这个竞态;配置 Plugin 时必须\n// 选择包含该修复的 CLI。未配置 Plugin 的官方基线仍保持当前已发布版本,避免引用尚未发布\n// 的 Docker/E2B 制品。\nconst CODEX_PLUGIN_HOOK_SAFE_CLI_VERSION = \"0.146.0\";\nexport function codexAgent(config?: CodexConfig): Agent {\n const getApiKey = () => config?.apiKey ?? requireEnv(\"CODEX_API_KEY\");\n const getBaseUrl = () => config?.baseUrl ?? getEnv(\"CODEX_BASE_URL\");\n // PATH 是 Sandbox 受管变量,在 factory 构造时(link/配置校验期)同步拒绝,不留到 setup()\n // 才炸,也不静默丢弃——被覆盖的 PATH 会让 hooks / 子进程读到错误的可执行文件而零报错\n // (见 docs/feature/sandbox/library.md「PATH:受管变量与 pathPrepend」)。\n if (config?.env && \"PATH\" in config.env) {\n throw new TypeError(t(\"codex.envPathManaged\"));\n }\n // factory 构造时快照:一份 Agent 配置服务并发 attempt,不能让调用方随后改原对象造成\n // 不同 run/resume 轮拿到不同 Space。值不进入 shell 或 manifest,只交给 command options。\n const agentEnv = Object.freeze({ ...(config?.env ?? {}) });\n const agentEnvSensitiveValues = Object.freeze(Object.values(agentEnv));\n const cliVersion = config?.plugins?.length\n ? CODEX_PLUGIN_HOOK_SAFE_CLI_VERSION\n : DEFAULT_CODEX_CLI_VERSION;\n const cliRecipeRevision = config?.plugins?.length\n ? \"plugin-hook-safe-r1\"\n : String(AGENT_BASELINE_RECIPE_REVISION.codex);\n const { ensure, installer } = createNpmCliInstaller({\n identity: {\n agent: \"codex\",\n version: cliVersion,\n revision: cliRecipeRevision,\n },\n packageName: \"@openai/codex\",\n bin: \"codex\",\n platformPackage: (platform) => codexPlatformPackage(platform, cliVersion),\n progress: {\n checking: `checking Codex CLI ${cliVersion}`,\n installing: `installing official OpenAI Codex CLI ${cliVersion}`,\n ready: `Codex CLI ${cliVersion} ready`,\n },\n });\n return registerAgentLifecycleHookCommands(defineSandboxAgent({\n name: \"codex\",\n // 官方 adapter:transcript 经生命周期 fixture 验证,全通道 complete。\n evidenceCoverage: completeEvidenceCoverage,\n spanMapper: mapCodexSpans,\n classifySendFailure: classifyCodexSendFailure,\n ensure,\n installers: [installer],\n setup: (sb, ctx) => Effect.runPromise(Effect.scoped(Effect.gen(function* () {\n // 用户的原生配置文件:本地读原始字节 → 验 TOML 语法与保留键。字节 SHA-256 进\n // manifest 与安装 checkpoint key(见 native-config.ts 的 nativeConfigCheckpointItem)。\n let nativeConfig: LoadedNativeConfig | undefined;\n if (config?.configFile !== undefined) {\n nativeConfig = yield* loadNativeConfigFileEffect({ agent: \"codex\", field: \"configFile\", path: config.configFile });\n yield* Effect.try({\n try: () => assertTomlNativeConfig(nativeConfig!, {\n agent: \"codex\",\n field: \"configFile\",\n reservedKeys: RESERVED_CONFIG_KEYS,\n }),\n catch: (cause) => cause,\n });\n }\n // Codex 把 Plugin 的声明态写在 config.toml、安装体写在 cache。必须在覆盖用户配置前\n // 同时摘掉两边:覆盖后 `plugin list` 已看不见旧声明,旧安装体却仍会影响下一次 add\n // 的版本选择。先完整收敛,再写本 Attempt 的唯一配置层。\n if (config?.plugins?.length) {\n const plugins = config.plugins;\n yield* Effect.tryPromise({\n try: () => resetPluginState(sb, plugins),\n catch: (cause) => cause,\n });\n }\n // model 归属:实验决定(ctx.model);省略时不写 model 行,交给 codex CLI 原生默认,\n // 不在 adapter 里硬编码一个会过期的模型名。\n const modelLine = ctx.model ? `model = \"${ctx.model}\"\\n` : \"\";\n const effortLine = ctx.reasoningEffort === undefined\n ? \"\"\n : `model_reasoning_effort = \"${ctx.reasoningEffort}\"\\n`;\n const base = getBaseUrl();\n // 自定义 endpoint 常从项目的私有环境注入。它仍是 Codex 的真实运行配置,但不能因\n // Adapter 用 heredoc 写 config.toml 而进入 command/timing/error 证据;一旦在这里登记,\n // Attempt 最终封口也会清掉随后 hook 或 CLI 错误里回显的同一值。\n const providerSensitiveValues = base ? [base] : [];\n const topLevel = base\n ? modelLine + `model_provider = \"s2a\"\\n` + effortLine\n : modelLine + effortLine;\n const providerTable = base\n ? `[model_providers.s2a]\\n` +\n `name = \"s2a\"\\n` +\n `base_url = \"${base}\"\\n` +\n `env_key = \"CODEX_API_KEY\"\\n` +\n `wire_api = \"responses\"\\n`\n : \"\";\n if (!nativeConfig) {\n yield* Effect.tryPromise({\n try: () => shared.writeFile(sb, \"~/.codex/config.toml\", providerTable ? `${topLevel}\\n${providerTable}` : topLevel, { sensitiveValues: providerSensitiveValues }),\n catch: (cause) => cause,\n });\n }\n else {\n // codex 只读一份用户级 config.toml(没有 include / 第二配置层),Adapter 生成层与\n // 用户文件只能同文件分段共存。TOML 没有「回到根表」的语法,顶层键必须先于任何表头,\n // 所以布局固定为:Adapter 顶层键 → 用户文件原始字节(逐字节保留,自带表随意)→\n // Adapter 的表([model_providers.*] 以及后续追加的 [mcp_servers.*]、[otel])。\n // 保留键校验保证两层键不重叠,用户内容不被解析重写。\n yield* Effect.tryPromise({\n try: () => shared.writeFile(sb, \"~/.codex/config.toml\", topLevel),\n catch: (cause) => cause,\n });\n yield* appendNativeConfigFileEffect(sb, nativeConfig, \"~/.codex/config.toml\");\n if (providerTable) {\n yield* Effect.tryPromise({\n try: (signal) => sb.runShell(`cat >> ~/.codex/config.toml <<'NICEEVAL_PROVIDER_EOF'\\n\\n${providerTable}NICEEVAL_PROVIDER_EOF\\n`, { signal, sensitiveValues: providerSensitiveValues }),\n catch: (cause) => cause,\n });\n }\n }\n yield* Effect.tryPromise({\n try: async (signal) => {\n if (config?.mcpServers?.length) {\n assertMcpServers(config.mcpServers);\n const sensitiveValues: string[] = [];\n const mcpToml = config.mcpServers\n .map((s) => {\n // 注意是复数 mcp_servers:单数 [mcp_server.x] 会被 codex 静默忽略,\n // MCP 压根挂不上(实测 codex-cli 0.142.x,`codex mcp list` 可核对)。\n const lines: string[] = [`[mcp_servers.${s.name}]`];\n if (isHttpMcp(s)) {\n lines.push(`url = \"${s.url}\"`);\n const headers = s.headers;\n if (headers && Object.keys(headers).length) {\n lines.push(`[mcp_servers.${s.name}.http_headers]`);\n for (const [k, v] of Object.entries(headers)) {\n sensitiveValues.push(v);\n lines.push(`\"${k}\" = \"${v}\"`);\n }\n }\n }\n else {\n lines.push(`command = \"${s.command}\"`);\n if (s.args?.length)\n lines.push(`args = [${s.args.map((a) => `\"${a}\"`).join(\", \")}]`);\n const env = s.env;\n if (env && Object.keys(env).length) {\n lines.push(`[mcp_servers.${s.name}.env]`);\n for (const [k, v] of Object.entries(env)) {\n sensitiveValues.push(v);\n lines.push(`${k} = \"${v}\"`);\n }\n }\n }\n return lines.join(\"\\n\");\n })\n .join(\"\\n\\n\");\n await sb.runShell(`cat >> ~/.codex/config.toml <<'MCPEOF'\\n\\n${mcpToml}\\nMCPEOF\\n`, { sensitiveValues, signal });\n }\n const manifest: AgentSetupManifest = { skills: [] };\n if (config?.skills?.length) {\n manifest.skills = await installSkills(sb, config.skills, { dir: SKILL_DIR });\n // 发现指引不是可选装饰:没有它,codex 连一次读 skill 文件的 shell 调用都不会发生。\n await appendProjectInstruction(sb, skillDiscoveryInstruction(SKILL_DIR, installedSkillNames(manifest.skills)));\n }\n if (config?.plugins?.length) {\n manifest.nativePlugins = await installPluginsFromResetState(sb, config.plugins);\n }\n if (config?.mcpServers?.length) {\n // manifest 只记「挂了哪个 server、怎么连」;env / headers 里可能有 token,不落盘。\n manifest.mcpServers = mcpManifestEntries(config.mcpServers);\n }\n if (nativeConfig) {\n // 只记来源路径与字节哈希,不落正文(任意官方配置都可能带敏感字符串)。\n manifest.nativeConfigFile = { agent: \"codex\", path: nativeConfig.path, sha256: nativeConfig.sha256 };\n }\n if (manifest.skills.length ||\n manifest.nativePlugins?.length ||\n manifest.mcpServers?.length ||\n manifest.nativeConfigFile) {\n ctx.reportSetup(manifest);\n }\n // 安装后钩子(postSetup):排在 manifest 之后——manifest 审计 Adapter 自身的安装事实,\n // 钩子失败不该丢掉这份证据。\n await runPostSetupHooks(sb, ctx, \"codex\", config?.postSetup);\n },\n catch: (cause) => cause,\n });\n })), { signal: ctx.signal }),\n async teardown(sb, ctx) {\n // preTeardown 与 postSetup 成对:LIFO 镜像,先于 agent 自己的收尾步骤执行。\n // codex 目前没有其它收尾步骤,这段就是整个 teardown。\n await runPreTeardownHooks(sb, ctx, \"codex\", config?.preTeardown);\n },\n tracing: {\n protocol: \"http/json\",\n async configure(sb, ctx) {\n const endpoint = ctx.telemetry!.endpoint;\n const otel = `\\n[otel]\\n` +\n `environment = \"niceeval\"\\n` +\n `exporter = \"none\"\\n` +\n `metrics_exporter = \"none\"\\n\\n` +\n `[otel.trace_exporter.otlp-http]\\n` +\n `endpoint = \"${endpoint}\"\\n` +\n `protocol = \"json\"\\n`;\n await sb.runShell(`cat >> ~/.codex/config.toml <<'EOF'\\n${otel}EOF\\n`);\n },\n },\n async send(input, ctx) {\n const sb = ctx.sandbox;\n // hook trust bypass 是 runtime-only(config.toml 设不了):headless 下 codex 对非 managed\n // 来源 hook 的交互式授信永远无人应答,不带它插件装的 hook 会被静默跳过、零报错\n // (见 memory/codex-hook-trust-headless-silent-skip.md)。沙箱内 hook 来源全部由实验配置\n // 声明,与 approvals/sandbox bypass 同一信任层级。\n const flags = \"--json --dangerously-bypass-approvals-and-sandbox --skip-git-repo-check --dangerously-bypass-hook-trust\";\n const prompt = shared.shellQuote(input.text);\n const resuming = ctx.session.id;\n const cmd = resuming\n ? `${shared.agentBin(\"codex\")} exec resume ${ctx.session.id} ${flags} ${prompt}`\n : `${shared.agentBin(\"codex\")} exec ${flags} ${prompt}`;\n // `codex exec --json` 持续写出 ThreadEvent JSONL。把它压成短 step 送进 runner\n // progress,human dashboard 因而能显示真正的 tool / reasoning / assistant 活动;完整\n // transcript 仍在命令结束后一次解析并落入 events artifact,不能让 live 文案变成第二份结果。\n const onStdout = codexProgressReporter(ctx);\n const apiKey = getApiKey();\n const res = await sb.runShell(cmd, {\n // ambient env 由 Codex 进程自然传给 SessionStart/SessionStop hooks、env_http_headers\n // 与 agent 调起的 nmem 等子进程。鉴权字段最后覆盖,避免 env 形成第二条 key 来源。\n env: { ...agentEnv, CODEX_API_KEY: apiKey },\n sensitiveValues: [apiKey, ...agentEnvSensitiveValues],\n stream: true,\n onStdout,\n });\n const raw = shared.extractJsonlFromStdout(res.stdout);\n ctx.session.capture(shared.codexThreadId(res.stdout));\n const parsed = shared.parseCodex(raw);\n const events = [...parsed.events];\n let turnEvidenceCoverage: TurnEvidenceCoverage | undefined;\n if (!raw?.trim()) {\n const reason = \"Codex JSONL transcript was unavailable; tool trajectory was not observed.\";\n turnEvidenceCoverage = {\n events: { status: \"unavailable\", reason },\n actions: { status: \"unavailable\", reason },\n usage: { status: \"unavailable\", reason },\n };\n }\n else if (!parsed.parseSuccess) {\n const reason = \"Some Codex JSONL transcript lines could not be parsed.\";\n turnEvidenceCoverage = {\n events: { status: \"partial\", reason },\n actions: { status: \"partial\", reason },\n };\n }\n else {\n turnEvidenceCoverage = unclassifiedToolActionsCoverage(events);\n }\n if (res.exitCode !== 0) {\n throw makeSendFailure({\n acceptance: codexAcceptance(raw, events, res.stderr),\n message: shared.diagnoseFailure(res, parsed.events, raw),\n ...(codexCapacityCode(raw) !== undefined\n ? { cause: normalizeExternalCause({ code: codexCapacityCode(raw) }) }\n : {}),\n events,\n usage: parsed.usage,\n process: res,\n });\n }\n return {\n events,\n usage: parsed.usage,\n status: \"completed\",\n ...(turnEvidenceCoverage === undefined ? {} : { evidenceCoverage: turnEvidenceCoverage }),\n };\n },\n }), config?.postSetup, config?.preTeardown);\n}\n/** 把 Codex JSONL 的高频原始帧收敛成 dashboard 当前行的一条短 detail。 */\nfunction codexProgressReporter(ctx: import(\"../types.ts\").AgentContext): (chunk: string) => void {\n let remainder = \"\";\n return (chunk) => {\n remainder += chunk;\n const lines = remainder.split(\"\\n\");\n remainder = lines.pop() ?? \"\";\n for (const line of lines) {\n const detail = codexProgressDetail(line);\n if (detail)\n ctx.progress({ message: detail });\n }\n };\n}\nfunction codexProgressDetail(line: string): string | undefined {\n let event: globalThis.Record<string, unknown>;\n try {\n const parsed: unknown = JSON.parse(line);\n if (!parsed || typeof parsed !== \"object\")\n return undefined;\n event = parsed as globalThis.Record<string, unknown>;\n }\n catch {\n return undefined;\n }\n const item = event.item;\n if (!item || typeof item !== \"object\")\n return undefined;\n const data = item as globalThis.Record<string, unknown>;\n const type = typeof data.type === \"string\" ? data.type : \"\";\n const completed = event.type === \"item.completed\";\n const preview = (value: unknown, limit = 96): string | undefined => {\n if (typeof value !== \"string\")\n return undefined;\n const text = value.replace(/\\s+/g, \" \").trim();\n if (!text)\n return undefined;\n return text.length > limit ? `${text.slice(0, limit - 1)}…` : text;\n };\n if (type === \"command_execution\") {\n const command = preview(data.command) ?? \"shell\";\n return completed ? `tool: ${command} · completed` : `tool: ${command}`;\n }\n if (type === \"mcp_tool_call\") {\n const tool = typeof data.tool === \"string\" ? data.tool : \"MCP\";\n const server = typeof data.server === \"string\" ? `${data.server}.` : \"\";\n return completed ? `tool: ${server}${tool} · completed` : `tool: ${server}${tool}`;\n }\n if (type === \"web_search\")\n return completed ? \"tool: web search · completed\" : \"tool: web search\";\n if (type === \"file_change\")\n return completed ? \"tool: file change · completed\" : \"tool: file change\";\n if (type === \"reasoning\") {\n const text = preview(data.text ?? data.content);\n return text ? `thinking: ${text}` : \"thinking\";\n }\n if (type === \"agent_message\") {\n const text = preview(data.text ?? data.message);\n return text ? `assistant: ${text}` : \"assistant response\";\n }\n return undefined;\n}\n/**\n * 先按 `marketplace.name` 连 Marketplace(同名只连一次,`--ref` 钉版本,add 后回读注册\n * 列表校验名字真的注册上了),再装指定 Plugin。\n * 只按 codex 自己的 marketplace / plugin 协议走 —— 与 claude-code 的实现不共用命令、不共用类型。\n *\n * 注册类命令是追加式的,而 Sandbox 复用下沙箱带着上一条 attempt 的 `$HOME` 进场,所以每一步\n * 先读沙箱真实状态、把它收敛到声明,再执行 add / install(契约见 docs/feature/adapters/\n * architecture/coding-agent-extensions.md「安装收敛:不假设沙箱空白」)。空白沙箱读回为空,\n * 走的是同一条代码路径。\n */\nexport async function installPlugins(sb: Sandbox, plugins: readonly CodexPluginSpec[]): Promise<NonNullable<AgentSetupManifest[\"nativePlugins\"]>> {\n await resetPluginState(sb, plugins);\n return installPluginsFromResetState(sb, plugins);\n}\n/**\n * 在 config.toml 仍保留上一条 Attempt 的 Plugin 声明时清理声明态与安装体。\n * setup 必须先调用它再覆盖 config;直接调用 installPlugins() 时也走同一收敛入口。\n */\nasync function resetPluginState(sb: Sandbox, plugins: readonly CodexPluginSpec[]): Promise<void> {\n // 摘除顺序固定「先卸完全部同名插件、后摘 marketplace」:marketplace 注册一摘,\n // `codex plugin list` 就不再列出挂在它名下的安装(真机核对 codex-cli 0.146.0),\n // 残留的那份从此定位不到。多个插件共用一个 marketplace 时只需摘一次注册。\n for (const plugin of plugins) {\n await removeInstalledPlugins(sb, plugin.name);\n }\n const marketplaces = new Set<string>();\n for (const plugin of plugins) {\n if (marketplaces.has(plugin.marketplace.name))\n continue;\n await dropRegisteredMarketplace(sb, plugin.marketplace.name);\n marketplaces.add(plugin.marketplace.name);\n }\n}\n/** 安装阶段只接受已经由 resetPluginState() 收敛过的 Sandbox。 */\nasync function installPluginsFromResetState(sb: Sandbox, plugins: readonly CodexPluginSpec[]): Promise<NonNullable<AgentSetupManifest[\"nativePlugins\"]>> {\n const connected = new Set<string>();\n const out: NonNullable<AgentSetupManifest[\"nativePlugins\"]> = [];\n for (const plugin of plugins) {\n const { marketplace } = plugin;\n if (!connected.has(marketplace.name)) {\n const refFlag = marketplace.ref ? ` --ref ${shared.shellQuote(marketplace.ref)}` : \"\";\n // --sparse 只影响拉取速度,不影响装出来的内容;manifest 不记录它。\n const sparseFlags = (marketplace.sparse ?? [])\n .map((path) => ` --sparse ${shared.shellQuote(path)}`)\n .join(\"\");\n const add = await sb.runShell(`${shared.agentBin(\"codex\")} plugin marketplace add ${shared.shellQuote(marketplace.source)}${refFlag}${sparseFlags}`);\n if (add.exitCode !== 0) {\n throw new Error(t(\"plugin.marketplaceFailed\", {\n agent: \"codex\",\n name: marketplace.name,\n source: marketplace.source,\n ref: marketplace.ref ?? \"(default)\",\n tail: outputTail(add),\n }));\n }\n // add 静默按目标仓库 manifest 的 name 注册,错名会拖到 plugin add 才炸;\n // 回读注册列表立刻校验(契约与真机复现见 marketplace.ts 顶部说明)。\n await verifyMarketplaceName(sb, {\n agent: \"codex\",\n listCommand: \"codex plugin marketplace list --json\",\n marketplace,\n knownNames: connected,\n });\n connected.add(marketplace.name);\n }\n const install = await sb.runShell(`${shared.agentBin(\"codex\")} plugin add ${shared.shellQuote(`${plugin.name}@${marketplace.name}`)}`);\n if (install.exitCode !== 0) {\n throw new Error(t(\"plugin.installFailed\", {\n agent: \"codex\",\n name: plugin.name,\n marketplace: marketplace.name,\n tail: outputTail(install),\n }));\n }\n const resolvedVersion = await installedVersion(sb, plugin.name, marketplace.name);\n out.push({\n agent: \"codex\",\n marketplace: {\n name: marketplace.name,\n source: marketplace.source,\n ...(marketplace.ref !== undefined ? { ref: marketplace.ref } : {}),\n },\n name: plugin.name,\n ...(resolvedVersion !== undefined ? { resolvedVersion } : {}),\n });\n }\n return out;\n}\n/**\n * `codex plugin list --json` 的已安装条目。真实输出(实测 codex-cli 0.144.1 / 0.146.0)是\n * `{ installed: [...], available: [...] }`,已安装的这条在 `installed` 数组里,字段名是\n * `pluginId`(不是 `id`)——早前按裸数组 / `{ plugins: [...] }` 猜的形状全部猜错,\n * `installedVersion` 曾对任何真实安装恒返回 undefined(见\n * memory/native-plugin-marketplace-name-not-caller-assignable.md 的姊妹发现,2026-07-13 e2e 复现)。\n * 形状按 CLI 宽容解析,抠不出(非 JSON / 未知形状)返回 undefined,由调用方决定放行还是抛错。\n */\ninterface CodexInstalledPlugin {\n pluginId?: string;\n id?: string;\n name?: string;\n marketplaceName?: string;\n version?: string;\n}\nfunction codexInstalledPlugins(stdout: string): CodexInstalledPlugin[] | undefined {\n let raw: unknown;\n try {\n raw = JSON.parse(stdout);\n }\n catch {\n return undefined;\n }\n const arr = Array.isArray(raw)\n ? raw\n : raw && typeof raw === \"object\"\n ? (raw as {\n installed?: unknown;\n }).installed\n : undefined;\n if (!Array.isArray(arr))\n return undefined;\n return arr.filter((item): item is CodexInstalledPlugin => !!item && typeof item === \"object\");\n}\n/** 已安装条目的可寻址 id(`<plugin>@<marketplace>`);codex 的 remove 不接受裸插件名。 */\nfunction codexPluginId(entry: CodexInstalledPlugin): string | undefined {\n const id = entry.pluginId ??\n entry.id ??\n (entry.name && entry.marketplaceName ? `${entry.name}@${entry.marketplaceName}` : undefined);\n return id?.includes(\"@\") ? id : undefined;\n}\n/**\n * 与声明同名的 Plugin 已安装就先移除(不论它出自哪个 marketplace),让本条 attempt 的安装与\n * manifest 里的解析版本同源。已装即跳过会把上一条 attempt 装出的内容记成本条的安装事实。\n */\nasync function removeInstalledPlugins(sb: Sandbox, name: string): Promise<void> {\n const listCommand = \"codex plugin list --json\";\n const res = await sb.runShell(`${shared.agentBin(\"codex\")} plugin list --json`);\n const list = res.exitCode === 0 ? codexInstalledPlugins(res.stdout) : undefined;\n if (list === undefined) {\n throw new Error(t(\"plugin.listFailed\", { agent: \"codex\", command: listCommand, tail: outputTail(res) }));\n }\n const ids = new Set<string>();\n for (const entry of list) {\n const id = codexPluginId(entry);\n if (id && (entry.name ?? id.split(\"@\")[0]) === name)\n ids.add(id);\n }\n for (const id of ids) {\n const remove = await sb.runShell(`${shared.agentBin(\"codex\")} plugin remove ${shared.shellQuote(id)}`);\n if (remove.exitCode !== 0) {\n throw new Error(t(\"plugin.removeFailed\", { agent: \"codex\", name: id, tail: outputTail(remove) }));\n }\n }\n}\n/**\n * 按声明名字无条件摘除同名 marketplace 注册,再由调用方按声明 source 与 ref 重新 add。\n * 不以「注册在 `marketplace list --json` 里可见」为前提:注册状态分两半——用户配置里的注册项\n * 和磁盘上的 marketplace 数据。原生配置整层替换会抹掉前一半,残下的后一半 list 报告不出来,\n * add 却会撞它报 `marketplace '<name>' is already added from a different source`\n * (复用沙箱第二条 attempt 真机复现,codex-cli 0.146.0;`remove` 对这种残根照样清得掉)。\n * 「本就没有可摘的」(`is not configured or installed`,exit 1)按已收敛处理;其它失败也不在\n * 这里报错——紧随其后的 add 是权威失败面,摘不干净它会带着 codex 的原话失败。\n */\nasync function dropRegisteredMarketplace(sb: Sandbox, name: string): Promise<void> {\n await sb.runShell(`${shared.agentBin(\"codex\")} plugin marketplace remove ${shared.shellQuote(name)}`);\n}\n/** 装完回读版本;取不到不阻断安装(manifest 里 resolvedVersion 省略)。 */\nasync function installedVersion(sb: Sandbox, name: string, marketplace: string): Promise<string | undefined> {\n const res = await sb.runShell(`${shared.agentBin(\"codex\")} plugin list --json --marketplace ${shared.shellQuote(marketplace)}`);\n if (res.exitCode !== 0)\n return undefined;\n const list = codexInstalledPlugins(res.stdout);\n const hit = list?.find((p) => p.pluginId === `${name}@${marketplace}` || p.id === `${name}@${marketplace}` || p.name === name);\n return typeof hit?.version === \"string\" ? hit.version : undefined;\n}\nfunction outputTail(res: {\n stdout: string;\n stderr: string;\n}, n = 12): string {\n return (res.stdout + res.stderr).trim().split(\"\\n\").slice(-n).join(\"\\n\");\n}\nexport default codexAgent();\n"]}
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["codex.ts"],"names":[],"mappings":"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","sourcesContent":["import { completeEvidenceCoverage } from \"../assertions/coverage.ts\";\nimport { Effect } from \"effect\";\nimport { defineSandboxAgent } from \"../define.ts\";\nimport { requireEnv, getEnv } from \"../util.ts\";\nimport { shared } from \"./shared.ts\";\nimport { appendProjectInstruction, installSkills, installedSkillNames, skillDiscoveryInstruction, } from \"./skills.ts\";\nimport { verifyMarketplaceName } from \"./marketplace.ts\";\nimport { appendNativeConfigFileEffect, assertTomlNativeConfig, loadNativeConfigFileEffect, type LoadedNativeConfig, } from \"./native-config.ts\";\nimport { mapCodexSpans } from \"../o11y/otlp/mappers/codex.ts\";\nimport { unclassifiedToolActionsCoverage } from \"../o11y/command-projection.ts\";\nimport { t } from \"../i18n/index.ts\";\nimport { DEFAULT_CODEX_CLI_VERSION, AGENT_BASELINE_RECIPE_REVISION } from \"./coding-cli-versions.ts\";\nimport { assertMcpServers, isHttpMcp, mcpManifestEntries } from \"./mcp.ts\";\nimport { registerAgentLifecycleHookCommands, runPostSetupHooks, runPreTeardownHooks, } from \"./post-setup.ts\";\nimport { createNpmCliInstaller } from \"./npm-staged.ts\";\nimport type { Agent, AgentSetupManifest, McpServer, Sandbox, SkillSpec, TurnEvidenceCoverage } from \"../types.ts\";\nimport type { SandboxCommand } from \"../sandbox/commands.ts\";\nimport type { AgentArtifactPlatform } from \"./types.ts\";\nimport { makeSendFailure, sendAcceptanceFromEvents, sendFailureText, type SendFailure, } from \"../context/send-failures.ts\";\nimport { normalizeExternalCause } from \"../shared/external-cause.ts\";\nimport type { FailureClass } from \"../shared/failure-class.ts\";\n// ───────────────────────────────────────────────────────────────────────────\n// OpenAI Codex CLI 的 agent adapter(沙箱型)。\n//\n// 连接方式:在沙箱里 spawn `codex exec --json`,stdout JSONL → parseCodex → 标准事件流。\n// 配置:鉴权本地(config / env),模型交给实验(ctx.model),推理努力程度经 ctx.reasoningEffort,\n// 其余参数经 ctx.flags。\n// 扩展(skill / plugin / MCP)是构造参数,setup 翻译成 codex 的原生形态并写 manifest。\n// ───────────────────────────────────────────────────────────────────────────\n/** codex 的 skill 目录(`skills` 生态的「通用」目录);codex 不原生扫描它,靠下面的发现指引。 */\nconst SKILL_DIR = \".agents/skills\";\n/**\n * `configFile` 的保留键:model / provider 路由 / 推理努力归 experiment 与 Adapter 的生成层,\n * MCP 表与 OTel 导出归 Adapter。清单定稿见 docs/feature/adapters/sdk/codex-cli/README.md。\n */\nconst RESERVED_CONFIG_KEYS = [\n \"model\",\n \"model_provider\",\n \"model_providers\",\n \"model_reasoning_effort\",\n \"mcp_servers\",\n \"otel\",\n] as const;\n/**\n * Codex 的原生 Plugin —— **只属于 Codex**,不能传给 Claude Code(它有自己的\n * {@link import(\"./claude-code.ts\").ClaudeCodePluginSpec})。字段当前相似不等于同一个类型:\n * 任一方的 Marketplace 鉴权、锁文件、选择规则或安装参数变化时,另一方不必接受无意义字段。\n */\nexport interface CodexPluginSpec {\n marketplace: {\n /** 目标仓库 manifest 声明的真实 name;CLI 不支持由调用方另取连接别名。 */\n name: string;\n /** Marketplace 来源:`owner/repo`、Git URL 或本地路径。 */\n source: string;\n /** 固定 Marketplace 的 Tag、Commit 或 Branch(→ `codex plugin marketplace add --ref`)。 */\n ref?: string;\n /**\n * sparse 拉取的路径列表,每项生成一个 `codex plugin marketplace add --sparse <path>`\n * (codex 的 `--sparse` 必须带路径参数、可重复):大仓库只取插件所需路径,省略或空数组即全量 clone。\n * 只影响拉取速度,不影响装出来的内容;manifest 不记录它。\n */\n sparse?: readonly string[];\n };\n /** Marketplace 中的 Plugin 名。 */\n name: string;\n}\nexport interface CodexConfig {\n /** 代理 / OpenAI API key。省略时读 OPENAI_API_KEY env。 */\n apiKey?: string;\n /** OpenAI 兼容代理 base URL(如 https://s2a.example.com/v1)。省略时读 OPENAI_BASE_URL env。 */\n baseUrl?: string;\n /**\n * 注入每次 Codex CLI 进程的额外环境变量。首轮 `codex exec` 与续轮 `codex exec resume`\n * 使用同一份声明;Codex 启动的 lifecycle Hook、MCP 动态 header 与命令子进程都会继承。\n * 值只经 Sandbox command options 传入,不拼进 shell 文本或写入 setup manifest,并全部按\n * 潜在敏感值从 timing / execution / error 证据中脱敏。`OPENAI_API_KEY` 仍由 `apiKey` 或\n * 宿主同名环境变量提供,Adapter 的鉴权值会覆盖这里的同名键。\n * env value 不进入 carry 身份。会改变被测行为的非敏感值必须同时声明在 Experiment flags\n * 或所属 Plugin identity;只轮换凭据不会让旧结果失效。\n * `PATH` 是 Sandbox 受管变量,不接受经这里声明——出现即在 factory 构造时报错,改用\n * Sandbox factory 的 `pathPrepend`(见 docs/feature/sandbox/library.md)。\n */\n env?: Readonly<globalThis.Record<string, string>>;\n /**\n * 额外 MCP server(每个 Sandbox setup 时追加进 ~/.codex/config.toml)。\n * stdio 形态(command/args/env)写 [mcp_servers.<name>] 的 command 行;\n * Streamable HTTP 形态(url/headers)写 url 行,headers 进 [mcp_servers.<name>.http_headers] 子表。\n */\n mcpServers?: readonly McpServer[];\n /**\n * 装进 Sandbox 的 Skill(本地目录/文件,或 repo + 可钉 ref + 可选启用集)。\n * 落在 `.agents/skills/<name>/`,并写一段发现指引进 AGENTS.md —— codex 没有 Claude Code 那种\n * 原生 Skill 工具,只把文件装进去它不会自己去读(见 memory/codex-no-native-skill-tool.md)。\n */\n skills?: readonly SkillSpec[];\n /** Codex 原生 Plugin(先连 Marketplace,再从中装指定 Plugin)。 */\n plugins?: readonly CodexPluginSpec[];\n /**\n * 一份完整的 Codex `config.toml`(官方 TOML 格式)在本地项目里的路径 —— 相对运行\n * niceeval 的项目根(含 `niceeval.config.ts` 的目录)解析,不是 Sandbox 内路径;只接受\n * 项目根内的相对路径,包含 `..` 的路径、绝对路径、`~` 路径和解析后逃出项目根的符号链接\n * 都在 setup 阶段报错。原始字节原样并入 Sandbox 里原本为空的用户级 `~/.codex/config.toml`\n * (不继承宿主机配置、不解析后重写);保留键 `model`、`model_provider`、`model_providers`、\n * `model_reasoning_effort`、`mcp_servers`、`otel` 出现在文件里 setup 报错。manifest 只记\n * 项目相对路径与字节 SHA-256,不落正文。\n */\n configFile?: string;\n /**\n * 安装后按数组顺序运行的用户 Hook(复用 SandboxCommand 的窄上下文):在写主配置、挂 MCP、\n * 装 Skills / Plugin、写 manifest 全部完成后执行,适合跑插件自带的 setup 脚本这类\n * 「安装产物就位后才能跑」的过程动作。抛错按基础设施错误计(attempt errored)。\n * 见 docs/feature/adapters/library/coding-agent-extensions.md「安装后运行脚本」。\n */\n postSetup?: readonly SandboxCommand[];\n /**\n * 与 `postSetup` 成对的收尾 Hook:按 `postSetup` 的逆序语义,在 agent 自己的 teardown 步骤\n * 之前执行(LIFO 镜像 —— `postSetup` 跑在 agent 安装之后,`preTeardown` 就跑在 agent 收尾\n * 之前),当且仅当 `postSetup` 的时点走到过才触发。抛错按基础设施错误计,由 teardown 段\n * 按 teardown-failed 诊断收束。\n * 见 docs/feature/adapters/library/coding-agent-extensions.md「安装后运行脚本」。\n */\n preTeardown?: readonly SandboxCommand[];\n}\nconst CODEX_CAPACITY_CODES = new Set([\n \"ADMISSION_FAILED\",\n \"ADMISSION_FAILURE\",\n \"ADMISSION_REJECTED\",\n \"MODEL_AT_CAPACITY\",\n \"MODEL_CAPACITY\",\n \"MODEL_OVERLOADED\",\n]);\nfunction normalizedCodexCode(value: unknown): string | undefined {\n if (typeof value !== \"string\")\n return undefined;\n return value.trim().toUpperCase().replace(/[ -]+/g, \"_\");\n}\nfunction codexCapacityCode(raw: string | undefined): string | undefined {\n if (raw === undefined)\n return undefined;\n for (const line of raw.split(\"\\n\")) {\n try {\n const value: unknown = JSON.parse(line);\n if (!value || typeof value !== \"object\")\n continue;\n const record = value as globalThis.Record<string, unknown>;\n const error = record.error;\n const candidates = [\n record.code,\n record.reason,\n record.type,\n error && typeof error === \"object\" ? (error as globalThis.Record<string, unknown>).code : undefined,\n error && typeof error === \"object\" ? (error as globalThis.Record<string, unknown>).reason : undefined,\n error && typeof error === \"object\" ? (error as globalThis.Record<string, unknown>).type : undefined,\n ];\n const code = candidates.map(normalizedCodexCode).find((candidate) => candidate !== undefined && CODEX_CAPACITY_CODES.has(candidate));\n if (code !== undefined)\n return code;\n }\n catch {\n // Native stderr fallback is handled separately and remains deliberately narrow.\n }\n }\n return undefined;\n}\nfunction codexCapacityMessage(raw: string | undefined): string {\n if (raw === undefined)\n return \"\";\n const messages: string[] = [];\n for (const line of raw.split(\"\\n\")) {\n try {\n const value: unknown = JSON.parse(line);\n if (!value || typeof value !== \"object\")\n continue;\n const record = value as globalThis.Record<string, unknown>;\n if (record.type !== \"turn.failed\" && record.type !== \"response.failed\")\n continue;\n const error = record.error;\n if (error && typeof error === \"object\") {\n const message = (error as globalThis.Record<string, unknown>).message;\n if (typeof message === \"string\")\n messages.push(message);\n }\n }\n catch {\n // Native stderr fallback is handled separately and remains deliberately narrow.\n }\n }\n return messages.join(\"\\n\");\n}\nconst CODEX_CAPACITY_TEXT = /\\bmodel(?:[ _-]+is)?[ _-]+at[ _-]+capacity\\b|\\badmission[ _-]+(?:failed|failure|rejected)\\b/i;\nfunction codexCapacityFromFailure(failure: SendFailure): boolean {\n if (failure.acceptance !== \"rejected\")\n return false;\n if (failure.events !== undefined && sendAcceptanceFromEvents(failure.events) === \"started\")\n return false;\n for (let cause = failure.cause; cause !== undefined;) {\n if (cause._tag === \"Error\" || cause._tag === \"Object\") {\n const code = cause.code._tag === \"Present\" ? normalizedCodexCode(cause.code.value) : undefined;\n if (code !== undefined && CODEX_CAPACITY_CODES.has(code))\n return true;\n cause = cause.cause._tag === \"Cause\" ? cause.cause.value : undefined;\n continue;\n }\n cause = undefined;\n }\n return CODEX_CAPACITY_TEXT.test(sendFailureText(failure));\n}\nfunction classifyCodexSendFailure(failure: SendFailure): FailureClass | undefined {\n return codexCapacityFromFailure(failure) ? { retryable: true, reason: \"model_capacity\" } : undefined;\n}\nfunction codexAcceptance(raw: string | undefined, events: readonly import(\"../types.ts\").StreamEvent[], nativeErrorText = \"\"): \"rejected\" | \"started\" | \"unknown\" {\n const acceptance = sendAcceptanceFromEvents(events);\n if (acceptance === \"started\")\n return \"started\";\n return codexCapacityCode(raw) !== undefined || CODEX_CAPACITY_TEXT.test(`${codexCapacityMessage(raw)}\\n${nativeErrorText}`)\n ? \"rejected\"\n : acceptance;\n}\n/**\n * `@openai/codex` 的 npm 主包只是个 node shim,真正的 CLI 在平台包里\n * (`npm:@openai/codex@<ver>-linux-arm64`),是自带运行时的 musl 静态二进制。\n * 装这一份:沙箱里不需要 node / npm,任务镜像带什么都能装。\n */\nfunction codexPlatformPackage(platform: AgentArtifactPlatform, version: string): {\n spec: string;\n binPath: string;\n} | undefined {\n const target = platform.os === \"linux\" && platform.arch === \"x64\"\n ? { suffix: \"linux-x64\", triple: \"x86_64-unknown-linux-musl\" }\n : platform.os === \"linux\" && platform.arch === \"arm64\"\n ? { suffix: \"linux-arm64\", triple: \"aarch64-unknown-linux-musl\" }\n : platform.os === \"darwin\" && platform.arch === \"x64\"\n ? { suffix: \"darwin-x64\", triple: \"x86_64-apple-darwin\" }\n : platform.os === \"darwin\" && platform.arch === \"arm64\"\n ? { suffix: \"darwin-arm64\", triple: \"aarch64-apple-darwin\" }\n : undefined;\n if (target === undefined)\n return undefined;\n return {\n spec: `@openai/codex@${version}-${target.suffix}`,\n binPath: `vendor/${target.triple}/bin/codex`,\n };\n}\n// Codex 0.144.1 会把「hook 命令已正常退出、随后写 stdin 撞 BrokenPipe」误判成 hook\n// 失败并丢掉 stdout。0.146.0 的官方 command runner 已忽略这个竞态;配置 Plugin 时必须\n// 选择包含该修复的 CLI。未配置 Plugin 的官方基线仍保持当前已发布版本,避免引用尚未发布\n// 的 Docker/E2B 制品。\nconst CODEX_PLUGIN_HOOK_SAFE_CLI_VERSION = \"0.146.0\";\nexport function codexAgent(config?: CodexConfig): Agent {\n const getApiKey = () => config?.apiKey ?? requireEnv(\"OPENAI_API_KEY\");\n const getBaseUrl = () => config?.baseUrl ?? getEnv(\"OPENAI_BASE_URL\");\n // PATH 是 Sandbox 受管变量,在 factory 构造时(link/配置校验期)同步拒绝,不留到 setup()\n // 才炸,也不静默丢弃——被覆盖的 PATH 会让 hooks / 子进程读到错误的可执行文件而零报错\n // (见 docs/feature/sandbox/library.md「PATH:受管变量与 pathPrepend」)。\n if (config?.env && \"PATH\" in config.env) {\n throw new TypeError(t(\"codex.envPathManaged\"));\n }\n // factory 构造时快照:一份 Agent 配置服务并发 attempt,不能让调用方随后改原对象造成\n // 不同 run/resume 轮拿到不同 Space。值不进入 shell 或 manifest,只交给 command options。\n const agentEnv = Object.freeze({ ...(config?.env ?? {}) });\n const agentEnvSensitiveValues = Object.freeze(Object.values(agentEnv));\n const cliVersion = config?.plugins?.length\n ? CODEX_PLUGIN_HOOK_SAFE_CLI_VERSION\n : DEFAULT_CODEX_CLI_VERSION;\n const cliRecipeRevision = config?.plugins?.length\n ? \"plugin-hook-safe-r1\"\n : String(AGENT_BASELINE_RECIPE_REVISION.codex);\n const { ensure, installer } = createNpmCliInstaller({\n identity: {\n agent: \"codex\",\n version: cliVersion,\n revision: cliRecipeRevision,\n },\n packageName: \"@openai/codex\",\n bin: \"codex\",\n platformPackage: (platform) => codexPlatformPackage(platform, cliVersion),\n progress: {\n checking: `checking Codex CLI ${cliVersion}`,\n installing: `installing official OpenAI Codex CLI ${cliVersion}`,\n ready: `Codex CLI ${cliVersion} ready`,\n },\n });\n return registerAgentLifecycleHookCommands(defineSandboxAgent({\n name: \"codex\",\n // 官方 adapter:transcript 经生命周期 fixture 验证,全通道 complete。\n evidenceCoverage: completeEvidenceCoverage,\n spanMapper: mapCodexSpans,\n classifySendFailure: classifyCodexSendFailure,\n ensure,\n installers: [installer],\n setup: (sb, ctx) => Effect.runPromise(Effect.scoped(Effect.gen(function* () {\n // 用户的原生配置文件:本地读原始字节 → 验 TOML 语法与保留键。字节 SHA-256 进\n // manifest 与安装 checkpoint key(见 native-config.ts 的 nativeConfigCheckpointItem)。\n let nativeConfig: LoadedNativeConfig | undefined;\n if (config?.configFile !== undefined) {\n nativeConfig = yield* loadNativeConfigFileEffect({ agent: \"codex\", field: \"configFile\", path: config.configFile });\n yield* Effect.try({\n try: () => assertTomlNativeConfig(nativeConfig!, {\n agent: \"codex\",\n field: \"configFile\",\n reservedKeys: RESERVED_CONFIG_KEYS,\n }),\n catch: (cause) => cause,\n });\n }\n // Codex 把 Plugin 的声明态写在 config.toml、安装体写在 cache。必须在覆盖用户配置前\n // 同时摘掉两边:覆盖后 `plugin list` 已看不见旧声明,旧安装体却仍会影响下一次 add\n // 的版本选择。先完整收敛,再写本 Attempt 的唯一配置层。\n if (config?.plugins?.length) {\n const plugins = config.plugins;\n yield* Effect.tryPromise({\n try: () => resetPluginState(sb, plugins),\n catch: (cause) => cause,\n });\n }\n // model 归属:实验决定(ctx.model);省略时不写 model 行,交给 codex CLI 原生默认,\n // 不在 adapter 里硬编码一个会过期的模型名。\n const modelLine = ctx.model ? `model = \"${ctx.model}\"\\n` : \"\";\n const effortLine = ctx.reasoningEffort === undefined\n ? \"\"\n : `model_reasoning_effort = \"${ctx.reasoningEffort}\"\\n`;\n const base = getBaseUrl();\n // 自定义 endpoint 常从项目的私有环境注入。它仍是 Codex 的真实运行配置,但不能因\n // Adapter 用 heredoc 写 config.toml 而进入 command/timing/error 证据;一旦在这里登记,\n // Attempt 最终封口也会清掉随后 hook 或 CLI 错误里回显的同一值。\n const providerSensitiveValues = base ? [base] : [];\n const topLevel = base\n ? modelLine + `model_provider = \"s2a\"\\n` + effortLine\n : modelLine + effortLine;\n const providerTable = base\n ? `[model_providers.s2a]\\n` +\n `name = \"s2a\"\\n` +\n `base_url = \"${base}\"\\n` +\n `env_key = \"OPENAI_API_KEY\"\\n` +\n `wire_api = \"responses\"\\n`\n : \"\";\n if (!nativeConfig) {\n yield* Effect.tryPromise({\n try: () => shared.writeFile(sb, \"~/.codex/config.toml\", providerTable ? `${topLevel}\\n${providerTable}` : topLevel, { sensitiveValues: providerSensitiveValues }),\n catch: (cause) => cause,\n });\n }\n else {\n // codex 只读一份用户级 config.toml(没有 include / 第二配置层),Adapter 生成层与\n // 用户文件只能同文件分段共存。TOML 没有「回到根表」的语法,顶层键必须先于任何表头,\n // 所以布局固定为:Adapter 顶层键 → 用户文件原始字节(逐字节保留,自带表随意)→\n // Adapter 的表([model_providers.*] 以及后续追加的 [mcp_servers.*]、[otel])。\n // 保留键校验保证两层键不重叠,用户内容不被解析重写。\n yield* Effect.tryPromise({\n try: () => shared.writeFile(sb, \"~/.codex/config.toml\", topLevel),\n catch: (cause) => cause,\n });\n yield* appendNativeConfigFileEffect(sb, nativeConfig, \"~/.codex/config.toml\");\n if (providerTable) {\n yield* Effect.tryPromise({\n try: (signal) => sb.runShell(`cat >> ~/.codex/config.toml <<'NICEEVAL_PROVIDER_EOF'\\n\\n${providerTable}NICEEVAL_PROVIDER_EOF\\n`, { signal, sensitiveValues: providerSensitiveValues }),\n catch: (cause) => cause,\n });\n }\n }\n yield* Effect.tryPromise({\n try: async (signal) => {\n if (config?.mcpServers?.length) {\n assertMcpServers(config.mcpServers);\n const sensitiveValues: string[] = [];\n const mcpToml = config.mcpServers\n .map((s) => {\n // 注意是复数 mcp_servers:单数 [mcp_server.x] 会被 codex 静默忽略,\n // MCP 压根挂不上(实测 codex-cli 0.142.x,`codex mcp list` 可核对)。\n const lines: string[] = [`[mcp_servers.${s.name}]`];\n if (isHttpMcp(s)) {\n lines.push(`url = \"${s.url}\"`);\n const headers = s.headers;\n if (headers && Object.keys(headers).length) {\n lines.push(`[mcp_servers.${s.name}.http_headers]`);\n for (const [k, v] of Object.entries(headers)) {\n sensitiveValues.push(v);\n lines.push(`\"${k}\" = \"${v}\"`);\n }\n }\n }\n else {\n lines.push(`command = \"${s.command}\"`);\n if (s.args?.length)\n lines.push(`args = [${s.args.map((a) => `\"${a}\"`).join(\", \")}]`);\n const env = s.env;\n if (env && Object.keys(env).length) {\n lines.push(`[mcp_servers.${s.name}.env]`);\n for (const [k, v] of Object.entries(env)) {\n sensitiveValues.push(v);\n lines.push(`${k} = \"${v}\"`);\n }\n }\n }\n return lines.join(\"\\n\");\n })\n .join(\"\\n\\n\");\n await sb.runShell(`cat >> ~/.codex/config.toml <<'MCPEOF'\\n\\n${mcpToml}\\nMCPEOF\\n`, { sensitiveValues, signal });\n }\n const manifest: AgentSetupManifest = { skills: [] };\n if (config?.skills?.length) {\n manifest.skills = await installSkills(sb, config.skills, { dir: SKILL_DIR });\n // 发现指引不是可选装饰:没有它,codex 连一次读 skill 文件的 shell 调用都不会发生。\n await appendProjectInstruction(sb, skillDiscoveryInstruction(SKILL_DIR, installedSkillNames(manifest.skills)));\n }\n if (config?.plugins?.length) {\n manifest.nativePlugins = await installPluginsFromResetState(sb, config.plugins);\n }\n if (config?.mcpServers?.length) {\n // manifest 只记「挂了哪个 server、怎么连」;env / headers 里可能有 token,不落盘。\n manifest.mcpServers = mcpManifestEntries(config.mcpServers);\n }\n if (nativeConfig) {\n // 只记来源路径与字节哈希,不落正文(任意官方配置都可能带敏感字符串)。\n manifest.nativeConfigFile = { agent: \"codex\", path: nativeConfig.path, sha256: nativeConfig.sha256 };\n }\n if (manifest.skills.length ||\n manifest.nativePlugins?.length ||\n manifest.mcpServers?.length ||\n manifest.nativeConfigFile) {\n ctx.reportSetup(manifest);\n }\n // 安装后钩子(postSetup):排在 manifest 之后——manifest 审计 Adapter 自身的安装事实,\n // 钩子失败不该丢掉这份证据。\n await runPostSetupHooks(sb, ctx, \"codex\", config?.postSetup);\n },\n catch: (cause) => cause,\n });\n })), { signal: ctx.signal }),\n async teardown(sb, ctx) {\n // preTeardown 与 postSetup 成对:LIFO 镜像,先于 agent 自己的收尾步骤执行。\n // codex 目前没有其它收尾步骤,这段就是整个 teardown。\n await runPreTeardownHooks(sb, ctx, \"codex\", config?.preTeardown);\n },\n tracing: {\n protocol: \"http/json\",\n async configure(sb, ctx) {\n const endpoint = ctx.telemetry!.endpoint;\n const otel = `\\n[otel]\\n` +\n `environment = \"niceeval\"\\n` +\n `exporter = \"none\"\\n` +\n `metrics_exporter = \"none\"\\n\\n` +\n `[otel.trace_exporter.otlp-http]\\n` +\n `endpoint = \"${endpoint}\"\\n` +\n `protocol = \"json\"\\n`;\n await sb.runShell(`cat >> ~/.codex/config.toml <<'EOF'\\n${otel}EOF\\n`);\n },\n },\n async send(input, ctx) {\n const sb = ctx.sandbox;\n // hook trust bypass 是 runtime-only(config.toml 设不了):headless 下 codex 对非 managed\n // 来源 hook 的交互式授信永远无人应答,不带它插件装的 hook 会被静默跳过、零报错\n // (见 memory/codex-hook-trust-headless-silent-skip.md)。沙箱内 hook 来源全部由实验配置\n // 声明,与 approvals/sandbox bypass 同一信任层级。\n const flags = \"--json --dangerously-bypass-approvals-and-sandbox --skip-git-repo-check --dangerously-bypass-hook-trust\";\n const prompt = shared.shellQuote(input.text);\n const resuming = ctx.session.id;\n const cmd = resuming\n ? `${shared.agentBin(\"codex\")} exec resume ${ctx.session.id} ${flags} ${prompt}`\n : `${shared.agentBin(\"codex\")} exec ${flags} ${prompt}`;\n // `codex exec --json` 持续写出 ThreadEvent JSONL。把它压成短 step 送进 runner\n // progress,human dashboard 因而能显示真正的 tool / reasoning / assistant 活动;完整\n // transcript 仍在命令结束后一次解析并落入 events artifact,不能让 live 文案变成第二份结果。\n const onStdout = codexProgressReporter(ctx);\n const apiKey = getApiKey();\n const res = await sb.runShell(cmd, {\n // ambient env 由 Codex 进程自然传给 SessionStart/SessionStop hooks、env_http_headers\n // 与 agent 调起的 nmem 等子进程。鉴权字段最后覆盖,避免 env 形成第二条 key 来源。\n env: { ...agentEnv, OPENAI_API_KEY: apiKey },\n sensitiveValues: [apiKey, ...agentEnvSensitiveValues],\n stream: true,\n onStdout,\n });\n const raw = shared.extractJsonlFromStdout(res.stdout);\n ctx.session.capture(shared.codexThreadId(res.stdout));\n const parsed = shared.parseCodex(raw);\n const events = [...parsed.events];\n let turnEvidenceCoverage: TurnEvidenceCoverage | undefined;\n if (!raw?.trim()) {\n const reason = \"Codex JSONL transcript was unavailable; tool trajectory was not observed.\";\n turnEvidenceCoverage = {\n events: { status: \"unavailable\", reason },\n actions: { status: \"unavailable\", reason },\n usage: { status: \"unavailable\", reason },\n };\n }\n else if (!parsed.parseSuccess) {\n const reason = \"Some Codex JSONL transcript lines could not be parsed.\";\n turnEvidenceCoverage = {\n events: { status: \"partial\", reason },\n actions: { status: \"partial\", reason },\n };\n }\n else {\n turnEvidenceCoverage = unclassifiedToolActionsCoverage(events);\n }\n if (res.exitCode !== 0) {\n throw makeSendFailure({\n acceptance: codexAcceptance(raw, events, res.stderr),\n message: shared.diagnoseFailure(res, parsed.events, raw),\n ...(codexCapacityCode(raw) !== undefined\n ? { cause: normalizeExternalCause({ code: codexCapacityCode(raw) }) }\n : {}),\n events,\n usage: parsed.usage,\n process: res,\n });\n }\n return {\n events,\n usage: parsed.usage,\n status: \"completed\",\n ...(turnEvidenceCoverage === undefined ? {} : { evidenceCoverage: turnEvidenceCoverage }),\n };\n },\n }), config?.postSetup, config?.preTeardown);\n}\n/** 把 Codex JSONL 的高频原始帧收敛成 dashboard 当前行的一条短 detail。 */\nfunction codexProgressReporter(ctx: import(\"../types.ts\").AgentContext): (chunk: string) => void {\n let remainder = \"\";\n return (chunk) => {\n remainder += chunk;\n const lines = remainder.split(\"\\n\");\n remainder = lines.pop() ?? \"\";\n for (const line of lines) {\n const detail = codexProgressDetail(line);\n if (detail)\n ctx.progress({ message: detail });\n }\n };\n}\nfunction codexProgressDetail(line: string): string | undefined {\n let event: globalThis.Record<string, unknown>;\n try {\n const parsed: unknown = JSON.parse(line);\n if (!parsed || typeof parsed !== \"object\")\n return undefined;\n event = parsed as globalThis.Record<string, unknown>;\n }\n catch {\n return undefined;\n }\n const item = event.item;\n if (!item || typeof item !== \"object\")\n return undefined;\n const data = item as globalThis.Record<string, unknown>;\n const type = typeof data.type === \"string\" ? data.type : \"\";\n const completed = event.type === \"item.completed\";\n const preview = (value: unknown, limit = 96): string | undefined => {\n if (typeof value !== \"string\")\n return undefined;\n const text = value.replace(/\\s+/g, \" \").trim();\n if (!text)\n return undefined;\n return text.length > limit ? `${text.slice(0, limit - 1)}…` : text;\n };\n if (type === \"command_execution\") {\n const command = preview(data.command) ?? \"shell\";\n return completed ? `tool: ${command} · completed` : `tool: ${command}`;\n }\n if (type === \"mcp_tool_call\") {\n const tool = typeof data.tool === \"string\" ? data.tool : \"MCP\";\n const server = typeof data.server === \"string\" ? `${data.server}.` : \"\";\n return completed ? `tool: ${server}${tool} · completed` : `tool: ${server}${tool}`;\n }\n if (type === \"web_search\")\n return completed ? \"tool: web search · completed\" : \"tool: web search\";\n if (type === \"file_change\")\n return completed ? \"tool: file change · completed\" : \"tool: file change\";\n if (type === \"reasoning\") {\n const text = preview(data.text ?? data.content);\n return text ? `thinking: ${text}` : \"thinking\";\n }\n if (type === \"agent_message\") {\n const text = preview(data.text ?? data.message);\n return text ? `assistant: ${text}` : \"assistant response\";\n }\n return undefined;\n}\n/**\n * 先按 `marketplace.name` 连 Marketplace(同名只连一次,`--ref` 钉版本,add 后回读注册\n * 列表校验名字真的注册上了),再装指定 Plugin。\n * 只按 codex 自己的 marketplace / plugin 协议走 —— 与 claude-code 的实现不共用命令、不共用类型。\n *\n * 注册类命令是追加式的,而 Sandbox 复用下沙箱带着上一条 attempt 的 `$HOME` 进场,所以每一步\n * 先读沙箱真实状态、把它收敛到声明,再执行 add / install(契约见 docs/feature/adapters/\n * architecture/coding-agent-extensions.md「安装收敛:不假设沙箱空白」)。空白沙箱读回为空,\n * 走的是同一条代码路径。\n */\nexport async function installPlugins(sb: Sandbox, plugins: readonly CodexPluginSpec[]): Promise<NonNullable<AgentSetupManifest[\"nativePlugins\"]>> {\n await resetPluginState(sb, plugins);\n return installPluginsFromResetState(sb, plugins);\n}\n/**\n * 在 config.toml 仍保留上一条 Attempt 的 Plugin 声明时清理声明态与安装体。\n * setup 必须先调用它再覆盖 config;直接调用 installPlugins() 时也走同一收敛入口。\n */\nasync function resetPluginState(sb: Sandbox, plugins: readonly CodexPluginSpec[]): Promise<void> {\n // 摘除顺序固定「先卸完全部同名插件、后摘 marketplace」:marketplace 注册一摘,\n // `codex plugin list` 就不再列出挂在它名下的安装(真机核对 codex-cli 0.146.0),\n // 残留的那份从此定位不到。多个插件共用一个 marketplace 时只需摘一次注册。\n for (const plugin of plugins) {\n await removeInstalledPlugins(sb, plugin.name);\n }\n const marketplaces = new Set<string>();\n for (const plugin of plugins) {\n if (marketplaces.has(plugin.marketplace.name))\n continue;\n await dropRegisteredMarketplace(sb, plugin.marketplace.name);\n marketplaces.add(plugin.marketplace.name);\n }\n}\n/** 安装阶段只接受已经由 resetPluginState() 收敛过的 Sandbox。 */\nasync function installPluginsFromResetState(sb: Sandbox, plugins: readonly CodexPluginSpec[]): Promise<NonNullable<AgentSetupManifest[\"nativePlugins\"]>> {\n const connected = new Set<string>();\n const out: NonNullable<AgentSetupManifest[\"nativePlugins\"]> = [];\n for (const plugin of plugins) {\n const { marketplace } = plugin;\n if (!connected.has(marketplace.name)) {\n const refFlag = marketplace.ref ? ` --ref ${shared.shellQuote(marketplace.ref)}` : \"\";\n // --sparse 只影响拉取速度,不影响装出来的内容;manifest 不记录它。\n const sparseFlags = (marketplace.sparse ?? [])\n .map((path) => ` --sparse ${shared.shellQuote(path)}`)\n .join(\"\");\n const add = await sb.runShell(`${shared.agentBin(\"codex\")} plugin marketplace add ${shared.shellQuote(marketplace.source)}${refFlag}${sparseFlags}`);\n if (add.exitCode !== 0) {\n throw new Error(t(\"plugin.marketplaceFailed\", {\n agent: \"codex\",\n name: marketplace.name,\n source: marketplace.source,\n ref: marketplace.ref ?? \"(default)\",\n tail: outputTail(add),\n }));\n }\n // add 静默按目标仓库 manifest 的 name 注册,错名会拖到 plugin add 才炸;\n // 回读注册列表立刻校验(契约与真机复现见 marketplace.ts 顶部说明)。\n await verifyMarketplaceName(sb, {\n agent: \"codex\",\n listCommand: \"codex plugin marketplace list --json\",\n marketplace,\n knownNames: connected,\n });\n connected.add(marketplace.name);\n }\n const install = await sb.runShell(`${shared.agentBin(\"codex\")} plugin add ${shared.shellQuote(`${plugin.name}@${marketplace.name}`)}`);\n if (install.exitCode !== 0) {\n throw new Error(t(\"plugin.installFailed\", {\n agent: \"codex\",\n name: plugin.name,\n marketplace: marketplace.name,\n tail: outputTail(install),\n }));\n }\n const resolvedVersion = await installedVersion(sb, plugin.name, marketplace.name);\n out.push({\n agent: \"codex\",\n marketplace: {\n name: marketplace.name,\n source: marketplace.source,\n ...(marketplace.ref !== undefined ? { ref: marketplace.ref } : {}),\n },\n name: plugin.name,\n ...(resolvedVersion !== undefined ? { resolvedVersion } : {}),\n });\n }\n return out;\n}\n/**\n * `codex plugin list --json` 的已安装条目。真实输出(实测 codex-cli 0.144.1 / 0.146.0)是\n * `{ installed: [...], available: [...] }`,已安装的这条在 `installed` 数组里,字段名是\n * `pluginId`(不是 `id`)——早前按裸数组 / `{ plugins: [...] }` 猜的形状全部猜错,\n * `installedVersion` 曾对任何真实安装恒返回 undefined(见\n * memory/native-plugin-marketplace-name-not-caller-assignable.md 的姊妹发现,2026-07-13 e2e 复现)。\n * 形状按 CLI 宽容解析,抠不出(非 JSON / 未知形状)返回 undefined,由调用方决定放行还是抛错。\n */\ninterface CodexInstalledPlugin {\n pluginId?: string;\n id?: string;\n name?: string;\n marketplaceName?: string;\n version?: string;\n}\nfunction codexInstalledPlugins(stdout: string): CodexInstalledPlugin[] | undefined {\n let raw: unknown;\n try {\n raw = JSON.parse(stdout);\n }\n catch {\n return undefined;\n }\n const arr = Array.isArray(raw)\n ? raw\n : raw && typeof raw === \"object\"\n ? (raw as {\n installed?: unknown;\n }).installed\n : undefined;\n if (!Array.isArray(arr))\n return undefined;\n return arr.filter((item): item is CodexInstalledPlugin => !!item && typeof item === \"object\");\n}\n/** 已安装条目的可寻址 id(`<plugin>@<marketplace>`);codex 的 remove 不接受裸插件名。 */\nfunction codexPluginId(entry: CodexInstalledPlugin): string | undefined {\n const id = entry.pluginId ??\n entry.id ??\n (entry.name && entry.marketplaceName ? `${entry.name}@${entry.marketplaceName}` : undefined);\n return id?.includes(\"@\") ? id : undefined;\n}\n/**\n * 与声明同名的 Plugin 已安装就先移除(不论它出自哪个 marketplace),让本条 attempt 的安装与\n * manifest 里的解析版本同源。已装即跳过会把上一条 attempt 装出的内容记成本条的安装事实。\n */\nasync function removeInstalledPlugins(sb: Sandbox, name: string): Promise<void> {\n const listCommand = \"codex plugin list --json\";\n const res = await sb.runShell(`${shared.agentBin(\"codex\")} plugin list --json`);\n const list = res.exitCode === 0 ? codexInstalledPlugins(res.stdout) : undefined;\n if (list === undefined) {\n throw new Error(t(\"plugin.listFailed\", { agent: \"codex\", command: listCommand, tail: outputTail(res) }));\n }\n const ids = new Set<string>();\n for (const entry of list) {\n const id = codexPluginId(entry);\n if (id && (entry.name ?? id.split(\"@\")[0]) === name)\n ids.add(id);\n }\n for (const id of ids) {\n const remove = await sb.runShell(`${shared.agentBin(\"codex\")} plugin remove ${shared.shellQuote(id)}`);\n if (remove.exitCode !== 0) {\n throw new Error(t(\"plugin.removeFailed\", { agent: \"codex\", name: id, tail: outputTail(remove) }));\n }\n }\n}\n/**\n * 按声明名字无条件摘除同名 marketplace 注册,再由调用方按声明 source 与 ref 重新 add。\n * 不以「注册在 `marketplace list --json` 里可见」为前提:注册状态分两半——用户配置里的注册项\n * 和磁盘上的 marketplace 数据。原生配置整层替换会抹掉前一半,残下的后一半 list 报告不出来,\n * add 却会撞它报 `marketplace '<name>' is already added from a different source`\n * (复用沙箱第二条 attempt 真机复现,codex-cli 0.146.0;`remove` 对这种残根照样清得掉)。\n * 「本就没有可摘的」(`is not configured or installed`,exit 1)按已收敛处理;其它失败也不在\n * 这里报错——紧随其后的 add 是权威失败面,摘不干净它会带着 codex 的原话失败。\n */\nasync function dropRegisteredMarketplace(sb: Sandbox, name: string): Promise<void> {\n await sb.runShell(`${shared.agentBin(\"codex\")} plugin marketplace remove ${shared.shellQuote(name)}`);\n}\n/** 装完回读版本;取不到不阻断安装(manifest 里 resolvedVersion 省略)。 */\nasync function installedVersion(sb: Sandbox, name: string, marketplace: string): Promise<string | undefined> {\n const res = await sb.runShell(`${shared.agentBin(\"codex\")} plugin list --json --marketplace ${shared.shellQuote(marketplace)}`);\n if (res.exitCode !== 0)\n return undefined;\n const list = codexInstalledPlugins(res.stdout);\n const hit = list?.find((p) => p.pluginId === `${name}@${marketplace}` || p.id === `${name}@${marketplace}` || p.name === name);\n return typeof hit?.version === \"string\" ? hit.version : undefined;\n}\nfunction outputTail(res: {\n stdout: string;\n stderr: string;\n}, n = 12): string {\n return (res.stdout + res.stderr).trim().split(\"\\n\").slice(-n).join(\"\\n\");\n}\nexport default codexAgent();\n"]}
|
package/dist/agents/codex.d.cts
CHANGED
|
@@ -24,15 +24,15 @@ export interface CodexPluginSpec {
|
|
|
24
24
|
name: string;
|
|
25
25
|
}
|
|
26
26
|
export interface CodexConfig {
|
|
27
|
-
/** 代理 / OpenAI API key。省略时读
|
|
27
|
+
/** 代理 / OpenAI API key。省略时读 OPENAI_API_KEY env。 */
|
|
28
28
|
apiKey?: string;
|
|
29
|
-
/** OpenAI 兼容代理 base URL(如 https://s2a.example.com/v1)。省略时读
|
|
29
|
+
/** OpenAI 兼容代理 base URL(如 https://s2a.example.com/v1)。省略时读 OPENAI_BASE_URL env。 */
|
|
30
30
|
baseUrl?: string;
|
|
31
31
|
/**
|
|
32
32
|
* 注入每次 Codex CLI 进程的额外环境变量。首轮 `codex exec` 与续轮 `codex exec resume`
|
|
33
33
|
* 使用同一份声明;Codex 启动的 lifecycle Hook、MCP 动态 header 与命令子进程都会继承。
|
|
34
34
|
* 值只经 Sandbox command options 传入,不拼进 shell 文本或写入 setup manifest,并全部按
|
|
35
|
-
* 潜在敏感值从 timing / execution / error 证据中脱敏。`
|
|
35
|
+
* 潜在敏感值从 timing / execution / error 证据中脱敏。`OPENAI_API_KEY` 仍由 `apiKey` 或
|
|
36
36
|
* 宿主同名环境变量提供,Adapter 的鉴权值会覆盖这里的同名键。
|
|
37
37
|
* env value 不进入 carry 身份。会改变被测行为的非敏感值必须同时声明在 Experiment flags
|
|
38
38
|
* 或所属 Plugin identity;只轮换凭据不会让旧结果失效。
|
package/dist/agents/codex.d.mts
CHANGED
|
@@ -24,15 +24,15 @@ export interface CodexPluginSpec {
|
|
|
24
24
|
name: string;
|
|
25
25
|
}
|
|
26
26
|
export interface CodexConfig {
|
|
27
|
-
/** 代理 / OpenAI API key。省略时读
|
|
27
|
+
/** 代理 / OpenAI API key。省略时读 OPENAI_API_KEY env。 */
|
|
28
28
|
apiKey?: string;
|
|
29
|
-
/** OpenAI 兼容代理 base URL(如 https://s2a.example.com/v1)。省略时读
|
|
29
|
+
/** OpenAI 兼容代理 base URL(如 https://s2a.example.com/v1)。省略时读 OPENAI_BASE_URL env。 */
|
|
30
30
|
baseUrl?: string;
|
|
31
31
|
/**
|
|
32
32
|
* 注入每次 Codex CLI 进程的额外环境变量。首轮 `codex exec` 与续轮 `codex exec resume`
|
|
33
33
|
* 使用同一份声明;Codex 启动的 lifecycle Hook、MCP 动态 header 与命令子进程都会继承。
|
|
34
34
|
* 值只经 Sandbox command options 传入,不拼进 shell 文本或写入 setup manifest,并全部按
|
|
35
|
-
* 潜在敏感值从 timing / execution / error 证据中脱敏。`
|
|
35
|
+
* 潜在敏感值从 timing / execution / error 证据中脱敏。`OPENAI_API_KEY` 仍由 `apiKey` 或
|
|
36
36
|
* 宿主同名环境变量提供,Adapter 的鉴权值会覆盖这里的同名键。
|
|
37
37
|
* env value 不进入 carry 身份。会改变被测行为的非敏感值必须同时声明在 Experiment flags
|
|
38
38
|
* 或所属 Plugin identity;只轮换凭据不会让旧结果失效。
|
package/dist/agents/codex.d.ts
CHANGED
|
@@ -24,15 +24,15 @@ export interface CodexPluginSpec {
|
|
|
24
24
|
name: string;
|
|
25
25
|
}
|
|
26
26
|
export interface CodexConfig {
|
|
27
|
-
/** 代理 / OpenAI API key。省略时读
|
|
27
|
+
/** 代理 / OpenAI API key。省略时读 OPENAI_API_KEY env。 */
|
|
28
28
|
apiKey?: string;
|
|
29
|
-
/** OpenAI 兼容代理 base URL(如 https://s2a.example.com/v1)。省略时读
|
|
29
|
+
/** OpenAI 兼容代理 base URL(如 https://s2a.example.com/v1)。省略时读 OPENAI_BASE_URL env。 */
|
|
30
30
|
baseUrl?: string;
|
|
31
31
|
/**
|
|
32
32
|
* 注入每次 Codex CLI 进程的额外环境变量。首轮 `codex exec` 与续轮 `codex exec resume`
|
|
33
33
|
* 使用同一份声明;Codex 启动的 lifecycle Hook、MCP 动态 header 与命令子进程都会继承。
|
|
34
34
|
* 值只经 Sandbox command options 传入,不拼进 shell 文本或写入 setup manifest,并全部按
|
|
35
|
-
* 潜在敏感值从 timing / execution / error 证据中脱敏。`
|
|
35
|
+
* 潜在敏感值从 timing / execution / error 证据中脱敏。`OPENAI_API_KEY` 仍由 `apiKey` 或
|
|
36
36
|
* 宿主同名环境变量提供,Adapter 的鉴权值会覆盖这里的同名键。
|
|
37
37
|
* env value 不进入 carry 身份。会改变被测行为的非敏感值必须同时声明在 Experiment flags
|
|
38
38
|
* 或所属 Plugin identity;只轮换凭据不会让旧结果失效。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AGENT_BASELINE_RECIPE_REVISION = exports.AGENT_BASELINE_VERSION = exports.DEFAULT_OPENCLAW_CLI_VERSION = exports.DEFAULT_HERMES_CLI_VERSION = exports.DEFAULT_OPENCODE_CLI_VERSION = exports.DEFAULT_BUB_VERSION = exports.DEFAULT_CLAUDE_CODE_CLI_VERSION = exports.DEFAULT_CODEX_CLI_VERSION = void 0;
|
|
3
|
+
exports.AGENT_BASELINE_RECIPE_REVISION = exports.AGENT_BASELINE_VERSION = exports.DEFAULT_DEEPSEEK_HARNESS_CLI_VERSION = exports.DEFAULT_BUN_VERSION = exports.DEFAULT_OMP_CLI_VERSION = exports.DEFAULT_OPENCLAW_CLI_VERSION = exports.DEFAULT_HERMES_CLI_VERSION = exports.DEFAULT_OPENCODE_CLI_VERSION = exports.DEFAULT_BUB_VERSION = exports.DEFAULT_CLAUDE_CODE_CLI_VERSION = exports.DEFAULT_CODEX_CLI_VERSION = void 0;
|
|
4
4
|
exports.agentBaselineVersionTag = agentBaselineVersionTag;
|
|
5
5
|
/** Coding-agent CLI versions used by runtime fallback installs and official sandbox recipes. */
|
|
6
6
|
exports.DEFAULT_CODEX_CLI_VERSION = "0.144.1";
|
|
@@ -18,6 +18,11 @@ exports.DEFAULT_OPENCODE_CLI_VERSION = "1.18.5";
|
|
|
18
18
|
exports.DEFAULT_HERMES_CLI_VERSION = "0.19.0";
|
|
19
19
|
/** OpenClaw CLI(npm `openclaw`)默认钉的版本。 */
|
|
20
20
|
exports.DEFAULT_OPENCLAW_CLI_VERSION = "2026.7.1-2";
|
|
21
|
+
/** Oh My Pi coding-agent CLI (npm) and its Bun runtime. */
|
|
22
|
+
exports.DEFAULT_OMP_CLI_VERSION = "17.3.5";
|
|
23
|
+
exports.DEFAULT_BUN_VERSION = "1.3.14";
|
|
24
|
+
/** DeepSeek Harness CLI (npm `@deepseek-ai/dsh`). */
|
|
25
|
+
exports.DEFAULT_DEEPSEEK_HARNESS_CLI_VERSION = "0.1.0-rc.7";
|
|
21
26
|
/** 每个官方基线制品里装的那个 Agent 的版本——制品版本号的版本位。 */
|
|
22
27
|
exports.AGENT_BASELINE_VERSION = {
|
|
23
28
|
"claude-code": exports.DEFAULT_CLAUDE_CODE_CLI_VERSION,
|
|
@@ -26,6 +31,8 @@ exports.AGENT_BASELINE_VERSION = {
|
|
|
26
31
|
opencode: exports.DEFAULT_OPENCODE_CLI_VERSION,
|
|
27
32
|
hermes: exports.DEFAULT_HERMES_CLI_VERSION,
|
|
28
33
|
openclaw: exports.DEFAULT_OPENCLAW_CLI_VERSION,
|
|
34
|
+
omp: exports.DEFAULT_OMP_CLI_VERSION,
|
|
35
|
+
"deepseek-harness": exports.DEFAULT_DEEPSEEK_HARNESS_CLI_VERSION,
|
|
29
36
|
};
|
|
30
37
|
/**
|
|
31
38
|
* NiceEval 基线配方自身的修订号——制品版本号的 `-r` 位。
|
|
@@ -58,6 +65,8 @@ exports.AGENT_BASELINE_RECIPE_REVISION = {
|
|
|
58
65
|
// r2: 同上「USER node」配方变更
|
|
59
66
|
// r3: 同上「跨 provider 基线工具面统一」配方变更(含可写性)
|
|
60
67
|
openclaw: 3,
|
|
68
|
+
omp: 1,
|
|
69
|
+
"deepseek-harness": 1,
|
|
61
70
|
};
|
|
62
71
|
/**
|
|
63
72
|
* 官方基线制品的版本 tag:`<Agent 版本>-r<配方修订>`,如 `0.144.1-r2`。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coding-cli-versions.js","sourceRoot":"","sources":["coding-cli-versions.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"coding-cli-versions.js","sourceRoot":"","sources":["coding-cli-versions.ts"],"names":[],"mappings":";;;AA+EA,0DAEC;AAjFD,gGAAgG;AACnF,QAAA,yBAAyB,GAAG,SAAS,CAAC;AACtC,QAAA,+BAA+B,GAAG,SAAS,CAAC;AACzD;;;;;GAKG;AACU,QAAA,mBAAmB,GAAG,OAAO,CAAC;AAC3C,6CAA6C;AAChC,QAAA,4BAA4B,GAAG,QAAQ,CAAC;AACrD,+CAA+C;AAClC,QAAA,0BAA0B,GAAG,QAAQ,CAAC;AACnD,0CAA0C;AAC7B,QAAA,4BAA4B,GAAG,YAAY,CAAC;AACzD,2DAA2D;AAC9C,QAAA,uBAAuB,GAAG,QAAQ,CAAC;AACnC,QAAA,mBAAmB,GAAG,QAAQ,CAAC;AAC5C,qDAAqD;AACxC,QAAA,oCAAoC,GAAG,YAAY,CAAC;AAQjE,0CAA0C;AAC7B,QAAA,sBAAsB,GAAmD;IAClF,aAAa,EAAE,uCAA+B;IAC9C,KAAK,EAAE,iCAAyB;IAChC,GAAG,EAAE,2BAAmB;IACxB,QAAQ,EAAE,oCAA4B;IACtC,MAAM,EAAE,kCAA0B;IAClC,QAAQ,EAAE,oCAA4B;IACtC,GAAG,EAAE,+BAAuB;IAC5B,kBAAkB,EAAE,4CAAoC;CAC3D,CAAC;AACF;;;;;;GAMG;AACH,0EAA0E;AAC1E,kDAAkD;AACrC,QAAA,8BAA8B,GAAmD;IAC1F,yDAAyD;IACzD,6EAA6E;IAC7E,kDAAkD;IAClD,8EAA8E;IAC9E,sBAAsB;IACtB,aAAa,EAAE,CAAC;IAChB,kDAAkD;IAClD,wBAAwB;IACxB,uCAAuC;IACvC,KAAK,EAAE,CAAC;IACR,kCAAkC;IAClC,GAAG,EAAE,CAAC;IACN,wBAAwB;IACxB,uCAAuC;IACvC,QAAQ,EAAE,CAAC;IACX,gEAAgE;IAChE,iCAAiC;IACjC,MAAM,EAAE,CAAC;IACT,wBAAwB;IACxB,uCAAuC;IACvC,QAAQ,EAAE,CAAC;IACX,GAAG,EAAE,CAAC;IACN,kBAAkB,EAAE,CAAC;CACxB,CAAC;AACF;;;;;GAKG;AACH,SAAgB,uBAAuB,CAAC,KAA0B;IAC9D,OAAO,GAAG,8BAAsB,CAAC,KAAK,CAAC,KAAK,sCAA8B,CAAC,KAAK,CAAC,EAAE,CAAC;AACxF,CAAC","sourcesContent":["/** Coding-agent CLI versions used by runtime fallback installs and official sandbox recipes. */\nexport const DEFAULT_CODEX_CLI_VERSION = \"0.144.1\";\nexport const DEFAULT_CLAUDE_CODE_CLI_VERSION = \"2.1.207\";\n/**\n * Bub release installed from PyPI by runtime fallback installs and official sandbox recipes.\n *\n * 换版本时同批核对 `bub-install-spec.ts` 的 OTel 插件 pin:插件与 Bub 的 tape 协议同代,\n * 配错代不会安装失败,而是时间轨静默为空。\n */\nexport const DEFAULT_BUB_VERSION = \"0.4.0\";\n/** OpenCode CLI(npm `opencode-ai`)默认钉的版本。 */\nexport const DEFAULT_OPENCODE_CLI_VERSION = \"1.18.5\";\n/** Hermes Agent(PyPI `hermes-agent`)默认钉的版本。 */\nexport const DEFAULT_HERMES_CLI_VERSION = \"0.19.0\";\n/** OpenClaw CLI(npm `openclaw`)默认钉的版本。 */\nexport const DEFAULT_OPENCLAW_CLI_VERSION = \"2026.7.1-2\";\n/** Oh My Pi coding-agent CLI (npm) and its Bun runtime. */\nexport const DEFAULT_OMP_CLI_VERSION = \"17.3.5\";\nexport const DEFAULT_BUN_VERSION = \"1.3.14\";\n/** DeepSeek Harness CLI (npm `@deepseek-ai/dsh`). */\nexport const DEFAULT_DEEPSEEK_HARNESS_CLI_VERSION = \"0.1.0-rc.7\";\n/**\n * 有官方公共基线制品的 coding agent。\n *\n * Docker 侧八家齐全;E2B 侧目前只发布 Claude Code / Codex / Bub\n *(见 `E2BCodingAgent`),其余 Agent 的 E2B 模板尚未进台账。\n */\nexport type CodingAgentBaseline = \"claude-code\" | \"codex\" | \"bub\" | \"opencode\" | \"hermes\" | \"openclaw\" | \"omp\" | \"deepseek-harness\";\n/** 每个官方基线制品里装的那个 Agent 的版本——制品版本号的版本位。 */\nexport const AGENT_BASELINE_VERSION: globalThis.Record<CodingAgentBaseline, string> = {\n \"claude-code\": DEFAULT_CLAUDE_CODE_CLI_VERSION,\n codex: DEFAULT_CODEX_CLI_VERSION,\n bub: DEFAULT_BUB_VERSION,\n opencode: DEFAULT_OPENCODE_CLI_VERSION,\n hermes: DEFAULT_HERMES_CLI_VERSION,\n openclaw: DEFAULT_OPENCLAW_CLI_VERSION,\n omp: DEFAULT_OMP_CLI_VERSION,\n \"deepseek-harness\": DEFAULT_DEEPSEEK_HARNESS_CLI_VERSION,\n};\n/**\n * NiceEval 基线配方自身的修订号——制品版本号的 `-r` 位。\n *\n * Agent 版本没变、配方变了(Node 工具契约、PATH 规范化、换 pin 的 commit、插件集合)就 +1;\n * Agent 版本一变归 1。已发布的 tag 不可原地覆盖,配方变更必须在版本里有位置表达。\n * 一个 Agent 的 E2B 与 Docker 制品共用这个号:一个版本号 = 一套基线配方,两侧同步重建。\n */\n// r4/r5(视 Agent 而定)未发布过镜像:补的「/usr/local/bin 与 /usr/local/lib/node_modules\n// 对运行用户可写」(跨 provider 基线工具面第三条)并进这次未发布修订,不再额外 +1。\nexport const AGENT_BASELINE_RECIPE_REVISION: globalThis.Record<CodingAgentBaseline, number> = {\n // r3: Dockerfile 里 npm 全局装完后显式 `USER node`——运行时不再强加执行身份,\n // 改为沿用镜像自己声明的 USER,非 root 必须由配方自己声明(见 docs/feature/sandbox/library.md「执行身份」)\n // r4: 跨 provider 基线工具面统一——不预装 yarn 实体,补齐 python3,\n // 并补 /usr/local 对运行用户可写(docs/feature/sandbox/library/prebuilt-environments.md\n // 「跨 provider 基线工具面」)\n \"claude-code\": 4,\n // r3: staged 安装改用自带运行时的原生平台包(不再要求沙箱里有 node / npm)\n // r4: 同上「USER node」配方变更\n // r5: 同上「跨 provider 基线工具面统一」配方变更(含可写性)\n codex: 5,\n // r2: 跨 provider 基线工具面统一(同上,含可写性)\n bub: 2,\n // r2: 同上「USER node」配方变更\n // r3: 同上「跨 provider 基线工具面统一」配方变更(含可写性)\n opencode: 3,\n // r2: 跨 provider 基线工具面统一——本 target 原本单独装的 python3 现由 base 统一提供,\n // 配方内容变了但不预装 yarn 不改变行为(同上,含可写性)\n hermes: 2,\n // r2: 同上「USER node」配方变更\n // r3: 同上「跨 provider 基线工具面统一」配方变更(含可写性)\n openclaw: 3,\n omp: 1,\n \"deepseek-harness\": 1,\n};\n/**\n * 官方基线制品的版本 tag:`<Agent 版本>-r<配方修订>`,如 `0.144.1-r2`。\n *\n * niceeval 自身的版本不参与命名——库与制品内容无关,发版不该连带重建没变的制品,\n * 换 Agent 版本也不该等库发版。\n */\nexport function agentBaselineVersionTag(agent: CodingAgentBaseline): string {\n return `${AGENT_BASELINE_VERSION[agent]}-r${AGENT_BASELINE_RECIPE_REVISION[agent]}`;\n}\n"]}
|
|
@@ -14,13 +14,18 @@ export declare const DEFAULT_OPENCODE_CLI_VERSION = "1.18.5";
|
|
|
14
14
|
export declare const DEFAULT_HERMES_CLI_VERSION = "0.19.0";
|
|
15
15
|
/** OpenClaw CLI(npm `openclaw`)默认钉的版本。 */
|
|
16
16
|
export declare const DEFAULT_OPENCLAW_CLI_VERSION = "2026.7.1-2";
|
|
17
|
+
/** Oh My Pi coding-agent CLI (npm) and its Bun runtime. */
|
|
18
|
+
export declare const DEFAULT_OMP_CLI_VERSION = "17.3.5";
|
|
19
|
+
export declare const DEFAULT_BUN_VERSION = "1.3.14";
|
|
20
|
+
/** DeepSeek Harness CLI (npm `@deepseek-ai/dsh`). */
|
|
21
|
+
export declare const DEFAULT_DEEPSEEK_HARNESS_CLI_VERSION = "0.1.0-rc.7";
|
|
17
22
|
/**
|
|
18
|
-
*
|
|
23
|
+
* 有官方公共基线制品的 coding agent。
|
|
19
24
|
*
|
|
20
|
-
* Docker
|
|
25
|
+
* Docker 侧八家齐全;E2B 侧目前只发布 Claude Code / Codex / Bub
|
|
21
26
|
*(见 `E2BCodingAgent`),其余 Agent 的 E2B 模板尚未进台账。
|
|
22
27
|
*/
|
|
23
|
-
export type CodingAgentBaseline = "claude-code" | "codex" | "bub" | "opencode" | "hermes" | "openclaw";
|
|
28
|
+
export type CodingAgentBaseline = "claude-code" | "codex" | "bub" | "opencode" | "hermes" | "openclaw" | "omp" | "deepseek-harness";
|
|
24
29
|
/** 每个官方基线制品里装的那个 Agent 的版本——制品版本号的版本位。 */
|
|
25
30
|
export declare const AGENT_BASELINE_VERSION: globalThis.Record<CodingAgentBaseline, string>;
|
|
26
31
|
/**
|
|
@@ -14,13 +14,18 @@ export declare const DEFAULT_OPENCODE_CLI_VERSION = "1.18.5";
|
|
|
14
14
|
export declare const DEFAULT_HERMES_CLI_VERSION = "0.19.0";
|
|
15
15
|
/** OpenClaw CLI(npm `openclaw`)默认钉的版本。 */
|
|
16
16
|
export declare const DEFAULT_OPENCLAW_CLI_VERSION = "2026.7.1-2";
|
|
17
|
+
/** Oh My Pi coding-agent CLI (npm) and its Bun runtime. */
|
|
18
|
+
export declare const DEFAULT_OMP_CLI_VERSION = "17.3.5";
|
|
19
|
+
export declare const DEFAULT_BUN_VERSION = "1.3.14";
|
|
20
|
+
/** DeepSeek Harness CLI (npm `@deepseek-ai/dsh`). */
|
|
21
|
+
export declare const DEFAULT_DEEPSEEK_HARNESS_CLI_VERSION = "0.1.0-rc.7";
|
|
17
22
|
/**
|
|
18
|
-
*
|
|
23
|
+
* 有官方公共基线制品的 coding agent。
|
|
19
24
|
*
|
|
20
|
-
* Docker
|
|
25
|
+
* Docker 侧八家齐全;E2B 侧目前只发布 Claude Code / Codex / Bub
|
|
21
26
|
*(见 `E2BCodingAgent`),其余 Agent 的 E2B 模板尚未进台账。
|
|
22
27
|
*/
|
|
23
|
-
export type CodingAgentBaseline = "claude-code" | "codex" | "bub" | "opencode" | "hermes" | "openclaw";
|
|
28
|
+
export type CodingAgentBaseline = "claude-code" | "codex" | "bub" | "opencode" | "hermes" | "openclaw" | "omp" | "deepseek-harness";
|
|
24
29
|
/** 每个官方基线制品里装的那个 Agent 的版本——制品版本号的版本位。 */
|
|
25
30
|
export declare const AGENT_BASELINE_VERSION: globalThis.Record<CodingAgentBaseline, string>;
|
|
26
31
|
/**
|
|
@@ -14,13 +14,18 @@ export declare const DEFAULT_OPENCODE_CLI_VERSION = "1.18.5";
|
|
|
14
14
|
export declare const DEFAULT_HERMES_CLI_VERSION = "0.19.0";
|
|
15
15
|
/** OpenClaw CLI(npm `openclaw`)默认钉的版本。 */
|
|
16
16
|
export declare const DEFAULT_OPENCLAW_CLI_VERSION = "2026.7.1-2";
|
|
17
|
+
/** Oh My Pi coding-agent CLI (npm) and its Bun runtime. */
|
|
18
|
+
export declare const DEFAULT_OMP_CLI_VERSION = "17.3.5";
|
|
19
|
+
export declare const DEFAULT_BUN_VERSION = "1.3.14";
|
|
20
|
+
/** DeepSeek Harness CLI (npm `@deepseek-ai/dsh`). */
|
|
21
|
+
export declare const DEFAULT_DEEPSEEK_HARNESS_CLI_VERSION = "0.1.0-rc.7";
|
|
17
22
|
/**
|
|
18
|
-
*
|
|
23
|
+
* 有官方公共基线制品的 coding agent。
|
|
19
24
|
*
|
|
20
|
-
* Docker
|
|
25
|
+
* Docker 侧八家齐全;E2B 侧目前只发布 Claude Code / Codex / Bub
|
|
21
26
|
*(见 `E2BCodingAgent`),其余 Agent 的 E2B 模板尚未进台账。
|
|
22
27
|
*/
|
|
23
|
-
export type CodingAgentBaseline = "claude-code" | "codex" | "bub" | "opencode" | "hermes" | "openclaw";
|
|
28
|
+
export type CodingAgentBaseline = "claude-code" | "codex" | "bub" | "opencode" | "hermes" | "openclaw" | "omp" | "deepseek-harness";
|
|
24
29
|
/** 每个官方基线制品里装的那个 Agent 的版本——制品版本号的版本位。 */
|
|
25
30
|
export declare const AGENT_BASELINE_VERSION: globalThis.Record<CodingAgentBaseline, string>;
|
|
26
31
|
/**
|
|
@@ -7,16 +7,22 @@ const __niceevalExport1 = __niceevalCanonical["AGENT_BASELINE_VERSION"];
|
|
|
7
7
|
export { __niceevalExport1 as AGENT_BASELINE_VERSION };
|
|
8
8
|
const __niceevalExport2 = __niceevalCanonical["DEFAULT_BUB_VERSION"];
|
|
9
9
|
export { __niceevalExport2 as DEFAULT_BUB_VERSION };
|
|
10
|
-
const __niceevalExport3 = __niceevalCanonical["
|
|
11
|
-
export { __niceevalExport3 as
|
|
12
|
-
const __niceevalExport4 = __niceevalCanonical["
|
|
13
|
-
export { __niceevalExport4 as
|
|
14
|
-
const __niceevalExport5 = __niceevalCanonical["
|
|
15
|
-
export { __niceevalExport5 as
|
|
16
|
-
const __niceevalExport6 = __niceevalCanonical["
|
|
17
|
-
export { __niceevalExport6 as
|
|
18
|
-
const __niceevalExport7 = __niceevalCanonical["
|
|
19
|
-
export { __niceevalExport7 as
|
|
20
|
-
const __niceevalExport8 = __niceevalCanonical["
|
|
21
|
-
export { __niceevalExport8 as
|
|
10
|
+
const __niceevalExport3 = __niceevalCanonical["DEFAULT_BUN_VERSION"];
|
|
11
|
+
export { __niceevalExport3 as DEFAULT_BUN_VERSION };
|
|
12
|
+
const __niceevalExport4 = __niceevalCanonical["DEFAULT_CLAUDE_CODE_CLI_VERSION"];
|
|
13
|
+
export { __niceevalExport4 as DEFAULT_CLAUDE_CODE_CLI_VERSION };
|
|
14
|
+
const __niceevalExport5 = __niceevalCanonical["DEFAULT_CODEX_CLI_VERSION"];
|
|
15
|
+
export { __niceevalExport5 as DEFAULT_CODEX_CLI_VERSION };
|
|
16
|
+
const __niceevalExport6 = __niceevalCanonical["DEFAULT_DEEPSEEK_HARNESS_CLI_VERSION"];
|
|
17
|
+
export { __niceevalExport6 as DEFAULT_DEEPSEEK_HARNESS_CLI_VERSION };
|
|
18
|
+
const __niceevalExport7 = __niceevalCanonical["DEFAULT_HERMES_CLI_VERSION"];
|
|
19
|
+
export { __niceevalExport7 as DEFAULT_HERMES_CLI_VERSION };
|
|
20
|
+
const __niceevalExport8 = __niceevalCanonical["DEFAULT_OMP_CLI_VERSION"];
|
|
21
|
+
export { __niceevalExport8 as DEFAULT_OMP_CLI_VERSION };
|
|
22
|
+
const __niceevalExport9 = __niceevalCanonical["DEFAULT_OPENCLAW_CLI_VERSION"];
|
|
23
|
+
export { __niceevalExport9 as DEFAULT_OPENCLAW_CLI_VERSION };
|
|
24
|
+
const __niceevalExport10 = __niceevalCanonical["DEFAULT_OPENCODE_CLI_VERSION"];
|
|
25
|
+
export { __niceevalExport10 as DEFAULT_OPENCODE_CLI_VERSION };
|
|
26
|
+
const __niceevalExport11 = __niceevalCanonical["agentBaselineVersionTag"];
|
|
27
|
+
export { __niceevalExport11 as agentBaselineVersionTag };
|
|
22
28
|
//# sourceMappingURL=coding-cli-versions.js.map
|