niceeval 0.13.2 → 0.13.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/bub.cjs +4 -4
- 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-native.cjs +213 -0
- package/dist/agents/claude-code-native.cjs.map +1 -0
- package/dist/agents/claude-code-native.d.cts +5 -0
- package/dist/agents/claude-code-native.d.mts +5 -0
- package/dist/agents/claude-code-native.d.ts +5 -0
- package/dist/agents/claude-code-native.js +6 -0
- package/dist/agents/claude-code-native.js.map +1 -0
- package/dist/agents/claude-code.cjs +26 -80
- package/dist/agents/claude-code.cjs.map +1 -1
- package/dist/agents/codex-app-server.cjs +314 -0
- package/dist/agents/codex-app-server.cjs.map +1 -0
- package/dist/agents/codex-app-server.d.cts +9 -0
- package/dist/agents/codex-app-server.d.mts +9 -0
- package/dist/agents/codex-app-server.d.ts +9 -0
- package/dist/agents/codex-app-server.js +6 -0
- package/dist/agents/codex-app-server.js.map +1 -0
- package/dist/agents/codex.cjs +19 -68
- 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/index.cjs +3 -1
- package/dist/agents/index.cjs.map +1 -1
- package/dist/agents/index.d.cts +1 -0
- package/dist/agents/index.d.mts +1 -0
- package/dist/agents/index.d.ts +1 -0
- package/dist/agents/index.js +84 -82
- package/dist/agents/index.mjs +84 -82
- package/dist/agents/managed-jsonl.cjs +207 -0
- package/dist/agents/managed-jsonl.cjs.map +1 -0
- package/dist/agents/managed-jsonl.d.cts +39 -0
- package/dist/agents/managed-jsonl.d.mts +39 -0
- package/dist/agents/managed-jsonl.d.ts +39 -0
- package/dist/agents/managed-jsonl.js +6 -0
- package/dist/agents/managed-jsonl.js.map +1 -0
- package/dist/agents/managed-process.cjs +31 -0
- package/dist/agents/managed-process.cjs.map +1 -0
- package/dist/agents/managed-process.d.cts +3 -0
- package/dist/agents/managed-process.d.mts +3 -0
- package/dist/agents/managed-process.d.ts +3 -0
- package/dist/agents/managed-process.js +6 -0
- package/dist/agents/managed-process.js.map +1 -0
- package/dist/agents/omp.cjs +18 -1
- package/dist/agents/omp.cjs.map +1 -1
- package/dist/agents/sdk-streams.cjs +11 -4
- package/dist/agents/sdk-streams.cjs.map +1 -1
- package/dist/agents/types.cjs.map +1 -1
- package/dist/agents/types.d.cts +8 -0
- package/dist/agents/types.d.mts +8 -0
- package/dist/agents/types.d.ts +8 -0
- package/dist/analysis/bindings.cjs +74 -19
- package/dist/analysis/bindings.cjs.map +1 -1
- package/dist/analysis/bindings.d.cts +534 -156
- package/dist/analysis/bindings.d.mts +534 -156
- package/dist/analysis/bindings.d.ts +534 -156
- package/dist/analysis/domain-view.cjs.map +1 -1
- package/dist/analysis/domain-view.d.cts +137 -8
- package/dist/analysis/domain-view.d.mts +137 -8
- package/dist/analysis/domain-view.d.ts +137 -8
- package/dist/analysis/index.cjs.map +1 -1
- package/dist/analysis/index.d.cts +1 -1
- package/dist/analysis/index.d.mts +1 -1
- package/dist/analysis/index.d.ts +1 -1
- package/dist/assertions/api.cjs.map +1 -1
- package/dist/assertions/api.d.cts +62 -0
- package/dist/assertions/api.d.mts +62 -0
- package/dist/assertions/api.d.ts +62 -0
- package/dist/assertions/judge.cjs +56 -5
- package/dist/assertions/judge.cjs.map +1 -1
- package/dist/assertions/match.cjs +66 -42
- package/dist/assertions/match.cjs.map +1 -1
- package/dist/assertions/match.d.cts +13 -0
- package/dist/assertions/match.d.mts +13 -0
- package/dist/assertions/match.d.ts +13 -0
- package/dist/assertions/record/attachment.cjs +104 -33
- package/dist/assertions/record/attachment.cjs.map +1 -1
- package/dist/assertions/record/attachment.d.cts +294 -57
- package/dist/assertions/record/attachment.d.mts +294 -57
- package/dist/assertions/record/attachment.d.ts +294 -57
- package/dist/assertions/record/codec.cjs +91 -17
- package/dist/assertions/record/codec.cjs.map +1 -1
- package/dist/assertions/record/codec.d.cts +280 -52
- package/dist/assertions/record/codec.d.mts +280 -52
- package/dist/assertions/record/codec.d.ts +280 -52
- package/dist/assertions/record/index.js +2 -0
- package/dist/assertions/record/model.cjs +16 -0
- package/dist/assertions/record/model.cjs.map +1 -1
- package/dist/assertions/record/model.d.cts +120 -13
- package/dist/assertions/record/model.d.mts +120 -13
- package/dist/assertions/record/model.d.ts +120 -13
- package/dist/assertions/record/model.js +2 -0
- package/dist/assertions/record/producer.cjs +70 -50
- package/dist/assertions/record/producer.cjs.map +1 -1
- package/dist/assertions/record/producer.d.cts +8 -7
- package/dist/assertions/record/producer.d.mts +8 -7
- package/dist/assertions/record/producer.d.ts +8 -7
- package/dist/assertions/runtime.cjs +49 -7
- package/dist/assertions/runtime.cjs.map +1 -1
- package/dist/cli/application.cjs +40 -0
- package/dist/cli/application.cjs.map +1 -0
- package/dist/cli/application.d.cts +129 -0
- package/dist/cli/application.d.mts +129 -0
- package/dist/cli/application.d.ts +129 -0
- package/dist/cli/application.js +24 -0
- package/dist/cli/application.js.map +1 -0
- package/dist/cli/bootstrap.cjs +10 -4
- package/dist/cli/bootstrap.cjs.map +1 -1
- package/dist/cli/node-application.cjs +123 -0
- package/dist/cli/node-application.cjs.map +1 -0
- package/dist/cli/node-application.d.cts +14 -0
- package/dist/cli/node-application.d.mts +14 -0
- package/dist/cli/node-application.d.ts +14 -0
- package/dist/cli/node-application.js +26 -0
- package/dist/cli/node-application.js.map +1 -0
- package/dist/cli/program.cjs +2807 -0
- package/dist/cli/program.cjs.map +1 -0
- package/dist/cli/program.d.cts +352 -0
- package/dist/cli/program.d.mts +352 -0
- package/dist/cli/program.d.ts +352 -0
- package/dist/cli/program.js +36 -0
- package/dist/cli/program.js.map +1 -0
- package/dist/cli/project-configuration.cjs +134 -0
- package/dist/cli/project-configuration.cjs.map +1 -0
- package/dist/cli/project-configuration.d.cts +64 -0
- package/dist/cli/project-configuration.d.mts +64 -0
- package/dist/cli/project-configuration.d.ts +64 -0
- package/dist/cli/project-configuration.js +22 -0
- package/dist/cli/project-configuration.js.map +1 -0
- package/dist/cli/record.cjs +20 -4
- package/dist/cli/record.cjs.map +1 -1
- package/dist/cli/record.d.cts +3 -3
- package/dist/cli/record.d.mts +3 -3
- package/dist/cli/record.d.ts +3 -3
- package/dist/cli.cjs +19 -3130
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.d.cts +2 -148
- package/dist/cli.d.mts +2 -148
- package/dist/cli.d.ts +2 -148
- package/dist/cli.js +22 -30
- package/dist/context/assert-first.cjs +21 -15
- package/dist/context/assert-first.cjs.map +1 -1
- package/dist/context/assert-first.d.cts +1 -0
- package/dist/context/assert-first.d.mts +1 -0
- package/dist/context/assert-first.d.ts +1 -0
- package/dist/context/attempt-resources.cjs +13 -0
- package/dist/context/attempt-resources.cjs.map +1 -0
- package/dist/context/attempt-resources.d.cts +3 -0
- package/dist/context/attempt-resources.d.mts +3 -0
- package/dist/context/attempt-resources.d.ts +3 -0
- package/dist/context/attempt-resources.js +8 -0
- package/dist/context/attempt-resources.js.map +1 -0
- package/dist/context/session.cjs +4 -3
- package/dist/context/session.cjs.map +1 -1
- package/dist/context/session.d.cts +1 -0
- package/dist/context/session.d.mts +1 -0
- package/dist/context/session.d.ts +1 -0
- package/dist/eval/record/verdict.cjs +3 -2
- package/dist/eval/record/verdict.cjs.map +1 -1
- package/dist/experiment/host/index.cjs +1 -6
- package/dist/experiment/host/index.cjs.map +1 -1
- package/dist/experiment/host/index.d.cts +1 -0
- package/dist/experiment/host/index.d.mts +1 -0
- package/dist/experiment/host/index.d.ts +1 -0
- package/dist/load-config.cjs +13 -4
- package/dist/load-config.cjs.map +1 -1
- package/dist/load-config.d.cts +4 -3
- package/dist/load-config.d.mts +4 -3
- package/dist/load-config.d.ts +4 -3
- package/dist/load-config.js +4 -2
- package/dist/o11y/parsers/codex.cjs +29 -7
- package/dist/o11y/parsers/codex.cjs.map +1 -1
- package/dist/record/codec/core.d.cts +0 -2
- package/dist/record/codec/core.d.mts +0 -2
- package/dist/record/codec/core.d.ts +0 -2
- package/dist/record/codec/identifiers.cjs +2 -3
- package/dist/record/codec/identifiers.cjs.map +1 -1
- package/dist/record/codec/identifiers.d.cts +1 -2
- package/dist/record/codec/identifiers.d.mts +1 -2
- package/dist/record/codec/identifiers.d.ts +1 -2
- package/dist/record/codec/identifiers.js +10 -12
- package/dist/record/codec/index.js +42 -44
- package/dist/record/definition/attachment.cjs +1 -0
- package/dist/record/definition/attachment.cjs.map +1 -1
- package/dist/record/definition/attachment.d.cts +14 -0
- package/dist/record/definition/attachment.d.mts +14 -0
- package/dist/record/definition/attachment.d.ts +14 -0
- package/dist/record/family/assertions-v1.cjs +104 -0
- package/dist/record/family/assertions-v1.cjs.map +1 -0
- package/dist/record/family/assertions-v1.d.cts +2 -0
- package/dist/record/family/assertions-v1.d.mts +2 -0
- package/dist/record/family/assertions-v1.d.ts +2 -0
- package/dist/record/family/assertions-v1.js +6 -0
- package/dist/record/family/assertions-v1.js.map +1 -0
- package/dist/record/family/assertions.cjs +16 -5
- package/dist/record/family/assertions.cjs.map +1 -1
- package/dist/record/family/assertions.d.cts +510 -56
- package/dist/record/family/assertions.d.mts +510 -56
- package/dist/record/family/assertions.d.ts +510 -56
- package/dist/record/family/assertions.js +14 -10
- package/dist/record/family/catalog.cjs +17 -1
- package/dist/record/family/catalog.cjs.map +1 -1
- package/dist/record/family/catalog.d.cts +1292 -104
- package/dist/record/family/catalog.d.mts +1292 -104
- package/dist/record/family/catalog.d.ts +1292 -104
- package/dist/record/family/catalog.js +22 -20
- package/dist/record/family/index.js +144 -138
- package/dist/record/family/observability-v1.cjs +5 -0
- package/dist/record/family/observability-v1.cjs.map +1 -1
- package/dist/record/family/observability.cjs +1 -1
- package/dist/record/family/observability.cjs.map +1 -1
- package/dist/record/host/runtime.cjs +323 -173
- 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 +9 -7
- package/dist/record/host/types.d.mts +9 -7
- package/dist/record/host/types.d.ts +9 -7
- package/dist/record/model/core.cjs.map +1 -1
- package/dist/record/model/core.d.cts +1 -2
- package/dist/record/model/core.d.mts +1 -2
- package/dist/record/model/core.d.ts +1 -2
- package/dist/record/model/definition.cjs +1 -2
- package/dist/record/model/definition.cjs.map +1 -1
- package/dist/record/model/definition.d.cts +1 -7
- package/dist/record/model/definition.d.mts +1 -7
- package/dist/record/model/definition.d.ts +1 -7
- package/dist/record/model/identifiers.cjs +2 -3
- package/dist/record/model/identifiers.cjs.map +1 -1
- package/dist/record/model/identifiers.d.cts +1 -3
- package/dist/record/model/identifiers.d.mts +1 -3
- package/dist/record/model/identifiers.d.ts +1 -3
- package/dist/record/model/identifiers.js +36 -38
- package/dist/record/model/index.js +60 -62
- package/dist/record/platform/node.cjs +17 -7
- 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 +8 -3
- package/dist/record/platform/services.d.mts +8 -3
- package/dist/record/platform/services.d.ts +8 -3
- package/dist/record/reader/format.cjs +16 -65
- package/dist/record/reader/format.cjs.map +1 -1
- package/dist/record/reader/format.d.cts +5 -9
- package/dist/record/reader/format.d.mts +5 -9
- package/dist/record/reader/format.d.ts +5 -9
- package/dist/record/reader/index.js +10 -8
- package/dist/record/reader/runtime.cjs +63 -32
- package/dist/record/reader/runtime.cjs.map +1 -1
- package/dist/record/reader/runtime.d.cts +40 -4
- package/dist/record/reader/runtime.d.mts +40 -4
- package/dist/record/reader/runtime.d.ts +40 -4
- package/dist/record/reader/runtime.js +6 -4
- package/dist/report/assets/enhance.js +5 -5
- package/dist/report/assets/styles.css +190 -24
- package/dist/report/built-in/result-components.cjs +8 -5
- package/dist/report/built-in/result-components.cjs.map +1 -1
- package/dist/report/built-in/standard.cjs +3 -0
- package/dist/report/built-in/standard.cjs.map +1 -1
- package/dist/report/built-in/standard.d.cts +2 -0
- package/dist/report/built-in/standard.d.mts +2 -0
- package/dist/report/built-in/standard.d.ts +2 -0
- package/dist/report/client-dist/app.js +53 -0
- package/dist/report/components/attempt-detail/compute.cjs +108 -231
- package/dist/report/components/attempt-detail/compute.cjs.map +1 -1
- package/dist/report/components/attempt-detail/compute.d.cts +11 -45
- package/dist/report/components/attempt-detail/compute.d.mts +11 -45
- package/dist/report/components/attempt-detail/compute.d.ts +11 -45
- package/dist/report/components/attempt-detail/compute.js +2 -4
- package/dist/report/components/attempt-detail/content.cjs +4 -4
- package/dist/report/components/attempt-detail/content.cjs.map +1 -1
- package/dist/report/components/attempt-detail/validate.cjs +47 -4
- package/dist/report/components/attempt-detail/validate.cjs.map +1 -1
- package/dist/report/components/entity-lists/compute.cjs +9 -15
- package/dist/report/components/entity-lists/compute.cjs.map +1 -1
- package/dist/report/components/entity-lists/content.cjs +53 -40
- package/dist/report/components/entity-lists/content.cjs.map +1 -1
- package/dist/report/components/entity-lists/index.cjs +1 -3
- package/dist/report/components/entity-lists/index.cjs.map +1 -1
- package/dist/report/components/experiment-detail/compute.cjs +4 -6
- package/dist/report/components/experiment-detail/compute.cjs.map +1 -1
- package/dist/report/components/summaries/index.cjs +5 -1
- package/dist/report/components/summaries/index.cjs.map +1 -1
- package/dist/report/definition/cell.cjs +14 -7
- package/dist/report/definition/cell.cjs.map +1 -1
- package/dist/report/definition/cell.d.cts +4 -0
- package/dist/report/definition/cell.d.mts +4 -0
- package/dist/report/definition/cell.d.ts +4 -0
- package/dist/report/definition/primitives/assertion-evidence.cjs +96 -0
- package/dist/report/definition/primitives/assertion-evidence.cjs.map +1 -0
- package/dist/report/definition/primitives/assertion-evidence.d.cts +11 -0
- package/dist/report/definition/primitives/assertion-evidence.d.mts +11 -0
- package/dist/report/definition/primitives/assertion-evidence.d.ts +11 -0
- package/dist/report/definition/primitives/assertion-evidence.js +6 -0
- package/dist/report/definition/primitives/assertion-evidence.js.map +1 -0
- package/dist/report/definition/primitives/conversation.cjs +7 -0
- package/dist/report/definition/primitives/conversation.cjs.map +1 -1
- package/dist/report/definition/primitives/conversation.d.cts +2 -0
- package/dist/report/definition/primitives/conversation.d.mts +2 -0
- package/dist/report/definition/primitives/conversation.d.ts +2 -0
- package/dist/report/definition/primitives/turn-trace.cjs +53 -3
- package/dist/report/definition/primitives/turn-trace.cjs.map +1 -1
- package/dist/report/definition/primitives.cjs +14 -1
- package/dist/report/definition/primitives.cjs.map +1 -1
- package/dist/report/definition/report.cjs +16 -8
- package/dist/report/definition/report.cjs.map +1 -1
- package/dist/report/definition/report.d.cts +6 -0
- package/dist/report/definition/report.d.mts +6 -0
- package/dist/report/definition/report.d.ts +6 -0
- package/dist/report/definition/table-text.cjs +12 -3
- package/dist/report/definition/table-text.cjs.map +1 -1
- package/dist/report/definition/table-text.d.cts +6 -1
- package/dist/report/definition/table-text.d.mts +6 -1
- package/dist/report/definition/table-text.d.ts +6 -1
- package/dist/report/execution/model.cjs +6 -14
- package/dist/report/execution/model.cjs.map +1 -1
- package/dist/report/execution/model.d.cts +5 -10
- package/dist/report/execution/model.d.mts +5 -10
- package/dist/report/execution/model.d.ts +5 -10
- package/dist/report/execution/model.js +6 -6
- package/dist/report/execution/paths.cjs +0 -11
- package/dist/report/execution/paths.cjs.map +1 -1
- package/dist/report/execution/paths.d.cts +0 -1
- package/dist/report/execution/paths.d.mts +0 -1
- package/dist/report/execution/paths.d.ts +0 -1
- package/dist/report/execution/paths.js +6 -8
- package/dist/report/host/execute.cjs +13 -22
- package/dist/report/host/execute.cjs.map +1 -1
- package/dist/report/host/execute.d.cts +1 -4
- package/dist/report/host/execute.d.mts +1 -4
- package/dist/report/host/execute.d.ts +1 -4
- package/dist/report/host/from-record.cjs +3 -0
- package/dist/report/host/from-record.cjs.map +1 -1
- package/dist/report/host/from-record.d.cts +4 -1
- package/dist/report/host/from-record.d.mts +4 -1
- package/dist/report/host/from-record.d.ts +4 -1
- package/dist/report/host/site-assets.cjs +1 -2
- package/dist/report/host/site-assets.cjs.map +1 -1
- package/dist/report/host/site-assets.d.cts +0 -1
- package/dist/report/host/site-assets.d.mts +0 -1
- package/dist/report/host/site-assets.d.ts +0 -1
- package/dist/report/host/site-assets.js +2 -4
- package/dist/report/host/static.cjs +71 -346
- package/dist/report/host/static.cjs.map +1 -1
- package/dist/report/host/static.d.cts +1 -3
- package/dist/report/host/static.d.mts +1 -3
- package/dist/report/host/static.d.ts +1 -3
- package/dist/report/host/static.js +2 -2
- package/dist/report/host/view-session.cjs.map +1 -1
- package/dist/report/host/view-session.d.cts +1 -1
- package/dist/report/host/view-session.d.mts +1 -1
- package/dist/report/host/view-session.d.ts +1 -1
- package/dist/report/model/locale.cjs +1 -1
- package/dist/report/model/locale.cjs.map +1 -1
- package/dist/report/model/locale.d.cts +1 -1
- package/dist/report/model/locale.d.mts +1 -1
- package/dist/report/model/locale.d.ts +1 -1
- package/dist/report/model/pricing.cjs +2 -2
- package/dist/report/model/pricing.cjs.map +1 -1
- package/dist/report/react/enhance.js +5 -5
- package/dist/report/react/styles.css +190 -24
- package/dist/runner/adoption.cjs +4 -7
- package/dist/runner/adoption.cjs.map +1 -1
- package/dist/runner/attempt-resources.cjs +60 -0
- package/dist/runner/attempt-resources.cjs.map +1 -0
- package/dist/runner/attempt-resources.d.cts +13 -0
- package/dist/runner/attempt-resources.d.mts +13 -0
- package/dist/runner/attempt-resources.d.ts +13 -0
- package/dist/runner/attempt-resources.js +6 -0
- package/dist/runner/attempt-resources.js.map +1 -0
- package/dist/runner/attempt.cjs +37 -3
- package/dist/runner/attempt.cjs.map +1 -1
- package/dist/runner/feedback/failure.cjs +77 -2
- package/dist/runner/feedback/failure.cjs.map +1 -1
- package/dist/runner/feedback/failure.d.cts +2 -1
- package/dist/runner/feedback/failure.d.mts +2 -1
- package/dist/runner/feedback/failure.d.ts +2 -1
- package/dist/runner/project-current.cjs +2 -13
- package/dist/runner/project-current.cjs.map +1 -1
- package/dist/runner/project-current.d.cts +4 -2
- package/dist/runner/project-current.d.mts +4 -2
- package/dist/runner/project-current.d.ts +4 -2
- package/dist/runner/reporters/braintrust.cjs +7 -7
- package/dist/runner/reporters/braintrust.cjs.map +1 -1
- package/dist/runner/reuse-readback.cjs +3 -4
- package/dist/runner/reuse-readback.cjs.map +1 -1
- package/dist/runner/run.cjs +5 -2
- package/dist/runner/run.cjs.map +1 -1
- package/dist/sandbox/backend.cjs +32 -2
- package/dist/sandbox/backend.cjs.map +1 -1
- package/dist/sandbox/backend.d.cts +12 -1
- package/dist/sandbox/backend.d.mts +12 -1
- package/dist/sandbox/backend.d.ts +12 -1
- package/dist/sandbox/backend.js +28 -22
- package/dist/sandbox/docker.cjs +140 -0
- package/dist/sandbox/docker.cjs.map +1 -1
- package/dist/sandbox/docker.d.cts +3 -1
- package/dist/sandbox/docker.d.mts +3 -1
- package/dist/sandbox/docker.d.ts +3 -1
- package/dist/sandbox/e2b.cjs +42 -0
- package/dist/sandbox/e2b.cjs.map +1 -1
- package/dist/sandbox/e2b.d.cts +2 -0
- package/dist/sandbox/e2b.d.mts +2 -0
- package/dist/sandbox/e2b.d.ts +2 -0
- package/dist/sandbox/local.cjs +64 -0
- package/dist/sandbox/local.cjs.map +1 -1
- package/dist/sandbox/local.d.cts +3 -1
- package/dist/sandbox/local.d.mts +3 -1
- package/dist/sandbox/local.d.ts +3 -1
- package/dist/sandbox/managed-process.cjs +49 -0
- package/dist/sandbox/managed-process.cjs.map +1 -0
- package/dist/sandbox/managed-process.d.cts +11 -0
- package/dist/sandbox/managed-process.d.mts +11 -0
- package/dist/sandbox/managed-process.d.ts +11 -0
- package/dist/sandbox/managed-process.js +6 -0
- package/dist/sandbox/managed-process.js.map +1 -0
- package/dist/sandbox/types.cjs.map +1 -1
- package/dist/sandbox/types.d.cts +24 -0
- package/dist/sandbox/types.d.mts +24 -0
- package/dist/sandbox/types.d.ts +24 -0
- package/dist/sandbox/vercel.cjs +1 -0
- package/dist/sandbox/vercel.cjs.map +1 -1
- package/dist/sandbox/vercel.d.cts +1 -0
- package/dist/sandbox/vercel.d.mts +1 -0
- package/dist/sandbox/vercel.d.ts +1 -0
- package/dist/view/server.cjs +2 -37
- package/dist/view/server.cjs.map +1 -1
- package/dist/view/server.d.cts +0 -3
- package/dist/view/server.d.mts +0 -3
- package/dist/view/server.d.ts +0 -3
- package/docs-site/zh/reference/builtin-agents.mdx +7 -7
- package/docs-site/zh/reference/official-adapters.mdx +4 -4
- package/docs-site/zh/reference/report-components.mdx +2 -2
- package/docs-site/zh/tutorials/configuration.mdx +2 -2
- package/docs-site/zh/tutorials/deploy-report-site.mdx +24 -2
- package/docs-site/zh/tutorials/publish-report.mdx +4 -4
- package/docs-site/zh/tutorials/sandbox-agent.mdx +5 -5
- package/docs-site/zh/tutorials/theming.mdx +2 -2
- package/package.json +4 -6
- package/dist/record/migration/index.cjs +0 -5
- package/dist/record/migration/index.cjs.map +0 -1
- package/dist/record/migration/index.d.cts +0 -11
- package/dist/record/migration/index.d.mts +0 -11
- package/dist/record/migration/index.d.ts +0 -11
- package/dist/record/migration/index.js +0 -6
- package/dist/record/migration/index.js.map +0 -1
- package/dist/report/host/site-runtime.cjs +0 -92
- package/dist/report/host/site-runtime.cjs.map +0 -1
- package/dist/report/host/site-runtime.d.cts +0 -9
- package/dist/report/host/site-runtime.d.mts +0 -9
- package/dist/report/host/site-runtime.d.ts +0 -9
- package/dist/report/host/site-runtime.js +0 -10
- package/dist/report/host/site-runtime.js.map +0 -1
- package/dist/view/client-dist/app.css +0 -2
- package/dist/view/client-dist/app.js +0 -49
- package/dist/view/data.cjs +0 -3
- package/dist/view/data.cjs.map +0 -1
- package/dist/view/data.d.cts +0 -9
- package/dist/view/data.d.mts +0 -9
- package/dist/view/data.d.ts +0 -9
- package/dist/view/data.js +0 -4
- package/dist/view/data.js.map +0 -1
- package/dist/view/index.cjs +0 -24
- package/dist/view/index.cjs.map +0 -1
- package/dist/view/index.d.cts +0 -9
- package/dist/view/index.d.mts +0 -9
- package/dist/view/index.d.ts +0 -9
- package/dist/view/index.js +0 -28
- package/dist/view/index.js.map +0 -1
- package/dist/view/report-view-cache.cjs +0 -200
- package/dist/view/report-view-cache.cjs.map +0 -1
- package/dist/view/report-view-cache.d.cts +0 -67
- package/dist/view/report-view-cache.d.mts +0 -67
- package/dist/view/report-view-cache.d.ts +0 -67
- package/dist/view/report-view-cache.js +0 -8
- package/dist/view/report-view-cache.js.map +0 -1
- package/dist/view/shared/types.cjs +0 -3
- package/dist/view/shared/types.cjs.map +0 -1
- package/dist/view/shared/types.d.cts +0 -51
- package/dist/view/shared/types.d.mts +0 -51
- package/dist/view/shared/types.d.ts +0 -51
- package/dist/view/shared/types.js +0 -4
- package/dist/view/shared/types.js.map +0 -1
- package/dist/view/site.cjs +0 -32
- package/dist/view/site.cjs.map +0 -1
- package/dist/view/site.d.cts +0 -24
- package/dist/view/site.d.mts +0 -24
- package/dist/view/site.d.ts +0 -24
- package/dist/view/site.js +0 -8
- package/dist/view/site.js.map +0 -1
- package/dist/view/styles.css +0 -170
- package/dist/view/template.html +0 -17
|
@@ -37,6 +37,7 @@ declare function list(input: {
|
|
|
37
37
|
}): Effect.Effect<ExperimentHostListResult, unknown>;
|
|
38
38
|
export interface ExperimentHostDebugPlanRequest {
|
|
39
39
|
readonly cwd: string;
|
|
40
|
+
readonly config: Config;
|
|
40
41
|
readonly experimentSelector: string;
|
|
41
42
|
readonly evalSelector: string;
|
|
42
43
|
}
|
|
@@ -37,6 +37,7 @@ declare function list(input: {
|
|
|
37
37
|
}): Effect.Effect<ExperimentHostListResult, unknown>;
|
|
38
38
|
export interface ExperimentHostDebugPlanRequest {
|
|
39
39
|
readonly cwd: string;
|
|
40
|
+
readonly config: Config;
|
|
40
41
|
readonly experimentSelector: string;
|
|
41
42
|
readonly evalSelector: string;
|
|
42
43
|
}
|
package/dist/load-config.cjs
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const __niceevalDynamicImport = (specifier) => import(specifier);
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.
|
|
4
|
+
exports.loadConfigModuleOnce = loadConfigModuleOnce;
|
|
5
|
+
exports.rebuildConfigModule = rebuildConfigModule;
|
|
5
6
|
// niceeval.config.ts 装载:CLI 与 view 共用。view 本地模式每次重建传 freshImport,
|
|
6
7
|
// 让 config.report / config.theme 及其整棵 import 图失效(docs/feature/reports/README.md)。
|
|
7
8
|
const node_fs_1 = require("node:fs");
|
|
@@ -16,14 +17,14 @@ function needsAdditionalTsxLoader(error) {
|
|
|
16
17
|
"code" in error &&
|
|
17
18
|
error.code === "ERR_UNKNOWN_FILE_EXTENSION");
|
|
18
19
|
}
|
|
19
|
-
async function
|
|
20
|
+
async function loadConfigModule(cwd, rebuild) {
|
|
20
21
|
const path = (0, node_path_1.join)(cwd, "niceeval.config.ts");
|
|
21
22
|
if (!(0, node_fs_1.existsSync)(path)) {
|
|
22
23
|
throw new Error((0, index_ts_1.t)("cli.config.missing"));
|
|
23
24
|
}
|
|
24
25
|
let mod;
|
|
25
26
|
try {
|
|
26
|
-
mod =
|
|
27
|
+
mod = rebuild
|
|
27
28
|
? (await (0, fresh_import_ts_1.freshImportModule)(path))
|
|
28
29
|
: (await __niceevalDynamicImport((0, node_url_1.pathToFileURL)(path).href));
|
|
29
30
|
}
|
|
@@ -33,7 +34,7 @@ async function loadConfigFile(cwd, options) {
|
|
|
33
34
|
// ERR_UNKNOWN_FILE_EXTENSION。只对普通一次性装载的能力错误补一层 tsx hook
|
|
34
35
|
// 重试,用户模块自己抛错时不重放副作用。fresh 装载不能退回 canonical URL:
|
|
35
36
|
// 它可能已被 view 启动时缓存,从而用上一代成功配置掩盖当前损坏。
|
|
36
|
-
if (!
|
|
37
|
+
if (!rebuild && needsAdditionalTsxLoader(e)) {
|
|
37
38
|
const url = (0, node_url_1.pathToFileURL)(path).href;
|
|
38
39
|
(0, api_1.register)();
|
|
39
40
|
// 这是一次性 CLI 装载器:保留 hook 到进程结束。不用 namespace——
|
|
@@ -49,4 +50,12 @@ async function loadConfigFile(cwd, options) {
|
|
|
49
50
|
throw new Error((0, index_ts_1.t)("cli.config.noDefault"));
|
|
50
51
|
return mod.default;
|
|
51
52
|
}
|
|
53
|
+
/** Canonical trusted module load; callers that need fresh evaluation use rebuild. */
|
|
54
|
+
function loadConfigModuleOnce(cwd) {
|
|
55
|
+
return loadConfigModule(cwd, false);
|
|
56
|
+
}
|
|
57
|
+
/** Serial callers deliberately request a new module graph rather than a boolean mode. */
|
|
58
|
+
function rebuildConfigModule(cwd) {
|
|
59
|
+
return loadConfigModule(cwd, true);
|
|
60
|
+
}
|
|
52
61
|
//# sourceMappingURL=load-config.cjs.map
|
package/dist/load-config.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-config.js","sourceRoot":"","sources":["load-config.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"load-config.js","sourceRoot":"","sources":["load-config.ts"],"names":[],"mappings":";;AA2DA,oDAEC;AAED,kDAEC;AAjED,kEAAkE;AAClE,kFAAkF;AAClF,qCAAqC;AACrC,yCAAiC;AACjC,uCAAyC;AACzC,qCAAuC;AACvC,uDAAsD;AACtD,8CAAoC;AAEpC,SAAS,wBAAwB,CAAC,KAAc;IAC5C,OAAO,CAAC,OAAO,KAAK,KAAK,QAAQ;QAC7B,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACd,KAEC,CAAC,IAAI,KAAK,4BAA4B,CAAC,CAAC;AAClD,CAAC;AACD,KAAK,UAAU,gBAAgB,CAAC,GAAW,EAAE,OAAgB;IACzD,MAAM,IAAI,GAAG,IAAA,gBAAI,EAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;IAC7C,IAAI,CAAC,IAAA,oBAAU,EAAC,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,IAAA,YAAC,EAAC,oBAAoB,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,GAEH,CAAC;IACF,IAAI,CAAC;QACD,GAAG,GAAG,OAAO;YACT,CAAC,CAAE,CAAC,MAAM,IAAA,mCAAiB,EAAC,IAAI,CAAC,CAE/B;YACF,CAAC,CAAE,CAAC,MAAM,uBAAuB,CAAC,IAAA,wBAAa,EAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAEzD,CAAC;IACX,CAAC;IACD,OAAO,CAAC,EAAE,CAAC;QACP,sDAAsD;QACtD,uDAAuD;QACvD,wDAAwD;QACxD,iDAAiD;QACjD,qCAAqC;QACrC,IAAI,CAAC,OAAO,IAAI,wBAAwB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1C,MAAM,GAAG,GAAG,IAAA,wBAAa,EAAC,IAAI,CAAC,CAAC,IAAI,CAAC;YACrC,IAAA,cAAQ,GAAE,CAAC;YACX,6CAA6C;YAC7C,sEAAsE;YACtE,+CAA+C;YAC/C,GAAG,GAAG,CAAC,MAAM,uBAAuB,CAAC,GAAG,GAAG,oBAAoB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAE3E,CAAC;QACN,CAAC;aACI,CAAC;YACF,MAAM,CAAC,CAAC;QACZ,CAAC;IACL,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,OAAO;QACZ,MAAM,IAAI,KAAK,CAAC,IAAA,YAAC,EAAC,sBAAsB,CAAC,CAAC,CAAC;IAC/C,OAAO,GAAG,CAAC,OAAO,CAAC;AACvB,CAAC;AACD,qFAAqF;AACrF,SAAgB,oBAAoB,CAAC,GAAW;IAC5C,OAAO,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACxC,CAAC;AACD,yFAAyF;AACzF,SAAgB,mBAAmB,CAAC,GAAW;IAC3C,OAAO,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACvC,CAAC","sourcesContent":["// niceeval.config.ts 装载:CLI 与 view 共用。view 本地模式每次重建传 freshImport,\n// 让 config.report / config.theme 及其整棵 import 图失效(docs/feature/reports/README.md)。\nimport { existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport { register } from \"tsx/esm/api\";\nimport { freshImportModule } from \"./fresh-import.ts\";\nimport { t } from \"./i18n/index.ts\";\nimport type { Config } from \"./runner/types.ts\";\nfunction needsAdditionalTsxLoader(error: unknown): boolean {\n return (typeof error === \"object\" &&\n error !== null &&\n \"code\" in error &&\n (error as {\n code?: unknown;\n }).code === \"ERR_UNKNOWN_FILE_EXTENSION\");\n}\nasync function loadConfigModule(cwd: string, rebuild: boolean): Promise<Config> {\n const path = join(cwd, \"niceeval.config.ts\");\n if (!existsSync(path)) {\n throw new Error(t(\"cli.config.missing\"));\n }\n let mod: {\n default?: Config;\n };\n try {\n mod = rebuild\n ? ((await freshImportModule(path)) as {\n default?: Config;\n })\n : ((await __niceevalDynamicImport(pathToFileURL(path).href)) as {\n default?: Config;\n });\n }\n catch (e) {\n // 全局 tsx hook 能装载 config.ts,但 Node ESM 在某些项目形态下会让它的静态\n // import 回落原生 loader;config 一旦 import 了 Report .tsx 就报\n // ERR_UNKNOWN_FILE_EXTENSION。只对普通一次性装载的能力错误补一层 tsx hook\n // 重试,用户模块自己抛错时不重放副作用。fresh 装载不能退回 canonical URL:\n // 它可能已被 view 启动时缓存,从而用上一代成功配置掩盖当前损坏。\n if (!rebuild && needsAdditionalTsxLoader(e)) {\n const url = pathToFileURL(path).href;\n register();\n // 这是一次性 CLI 装载器:保留 hook 到进程结束。不用 namespace——\n // config 图可能进入 CJS package,tsx 在 Node builtin URL 上传播 namespace query\n // 会把 node:util 误当文件读取。query 只击穿上一次失败的入口 cache。\n mod = (await __niceevalDynamicImport(`${url}?niceeval-config=${Date.now()}`)) as {\n default?: Config;\n };\n }\n else {\n throw e;\n }\n }\n if (!mod.default)\n throw new Error(t(\"cli.config.noDefault\"));\n return mod.default;\n}\n/** Canonical trusted module load; callers that need fresh evaluation use rebuild. */\nexport function loadConfigModuleOnce(cwd: string): Promise<Config> {\n return loadConfigModule(cwd, false);\n}\n/** Serial callers deliberately request a new module graph rather than a boolean mode. */\nexport function rebuildConfigModule(cwd: string): Promise<Config> {\n return loadConfigModule(cwd, true);\n}\n"]}
|
package/dist/load-config.d.cts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Config } from "./runner/types.cjs";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
/** Canonical trusted module load; callers that need fresh evaluation use rebuild. */
|
|
3
|
+
export declare function loadConfigModuleOnce(cwd: string): Promise<Config>;
|
|
4
|
+
/** Serial callers deliberately request a new module graph rather than a boolean mode. */
|
|
5
|
+
export declare function rebuildConfigModule(cwd: string): Promise<Config>;
|
package/dist/load-config.d.mts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Config } from "./runner/types.mjs";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
/** Canonical trusted module load; callers that need fresh evaluation use rebuild. */
|
|
3
|
+
export declare function loadConfigModuleOnce(cwd: string): Promise<Config>;
|
|
4
|
+
/** Serial callers deliberately request a new module graph rather than a boolean mode. */
|
|
5
|
+
export declare function rebuildConfigModule(cwd: string): Promise<Config>;
|
package/dist/load-config.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Config } from "./runner/types.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
/** Canonical trusted module load; callers that need fresh evaluation use rebuild. */
|
|
3
|
+
export declare function loadConfigModuleOnce(cwd: string): Promise<Config>;
|
|
4
|
+
/** Serial callers deliberately request a new module graph rather than a boolean mode. */
|
|
5
|
+
export declare function rebuildConfigModule(cwd: string): Promise<Config>;
|
package/dist/load-config.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { createRequire as __niceevalCreateRequire } from "node:module";
|
|
2
2
|
const __niceevalRequire = __niceevalCreateRequire(import.meta.url);
|
|
3
3
|
const __niceevalCanonical = __niceevalRequire("./load-config.cjs");
|
|
4
|
-
const __niceevalExport0 = __niceevalCanonical["
|
|
5
|
-
export { __niceevalExport0 as
|
|
4
|
+
const __niceevalExport0 = __niceevalCanonical["loadConfigModuleOnce"];
|
|
5
|
+
export { __niceevalExport0 as loadConfigModuleOnce };
|
|
6
|
+
const __niceevalExport1 = __niceevalCanonical["rebuildConfigModule"];
|
|
7
|
+
export { __niceevalExport1 as rebuildConfigModule };
|
|
6
8
|
//# sourceMappingURL=load-config.js.map
|
|
@@ -191,13 +191,27 @@ function parseCodexTranscript(raw) {
|
|
|
191
191
|
if (!startedCallIds.has(callId)) {
|
|
192
192
|
emitCall(callId, "command_execution", { command }, "shell", (0, command_projection_ts_1.opaqueCommandProjection)("unsupported-protocol"));
|
|
193
193
|
}
|
|
194
|
-
|
|
194
|
+
// `codex exec --json` uses snake_case while app-server v2 keeps the
|
|
195
|
+
// protocol's camelCase fields after normalizeItem() rewrites only the
|
|
196
|
+
// tagged-union type. Both are public Codex transports and must close
|
|
197
|
+
// to the same provider-neutral result.
|
|
198
|
+
const exit = get(item, "exit_code") ?? get(item, "exitCode");
|
|
199
|
+
const output = get(item, "aggregated_output") ??
|
|
200
|
+
get(item, "aggregatedOutput") ??
|
|
201
|
+
get(item, "output");
|
|
195
202
|
const statusStr = get(item, "status");
|
|
196
|
-
const
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
203
|
+
const status = statusStr === "declined" || statusStr === "rejected"
|
|
204
|
+
? "rejected"
|
|
205
|
+
: exit === 0 || (exit == null && statusStr !== "failed" && statusStr !== "error")
|
|
206
|
+
? "completed"
|
|
207
|
+
: "failed";
|
|
208
|
+
const result = output === undefined && exit === undefined
|
|
209
|
+
? undefined
|
|
210
|
+
: {
|
|
211
|
+
output: (output ?? null),
|
|
212
|
+
exit_code: (exit ?? null),
|
|
213
|
+
};
|
|
214
|
+
emitResult(callId, result, status);
|
|
201
215
|
return;
|
|
202
216
|
}
|
|
203
217
|
case "mcp_tool_call": {
|
|
@@ -284,11 +298,19 @@ function parseCodexTranscript(raw) {
|
|
|
284
298
|
case "thread.started":
|
|
285
299
|
case "thread.completed":
|
|
286
300
|
case "turn.started":
|
|
287
|
-
case "turn.completed":
|
|
288
301
|
case "response.created":
|
|
289
302
|
case "response.completed":
|
|
290
303
|
case "response.cancelled":
|
|
291
304
|
break;
|
|
305
|
+
case "turn.completed": {
|
|
306
|
+
const turn = get(data, "turn");
|
|
307
|
+
if (get(turn, "status") !== "failed")
|
|
308
|
+
break;
|
|
309
|
+
const err = get(turn, "error");
|
|
310
|
+
const msg = get(err, "message") ?? get(data, "message") ?? "turn failed";
|
|
311
|
+
events.push({ type: "error", message: String(msg) });
|
|
312
|
+
break;
|
|
313
|
+
}
|
|
292
314
|
case "turn.failed":
|
|
293
315
|
case "response.failed": {
|
|
294
316
|
const err = get(data, "error");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","sourceRoot":"","sources":["codex.ts"],"names":[],"mappings":"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","sourcesContent":["// OpenAI Codex CLI transcript 解析器(关键路径)。\n// 两类输入都吃:\n// 1. `codex exec --json` 打到 stdout 的事件 JSONL(thread.* / turn.* / item.* / response.*);\n// 2. 磁盘上 session rollout JSONL(ResponseItem:message / function_call / reasoning ...)。\n// 唯一硬活:把这堆五花八门的原始事件归一成 niceeval 的 StreamEvent[]。\nimport type { CommandProjection, StreamEvent, Usage, ToolName, JsonValue } from \"../../types.ts\";\nimport type { ParsedTranscript } from \"./index.ts\";\nimport { GENERIC_VERB_ALIASES, normalizeToolName as normalizeShared } from \"../tool-names.ts\";\nimport { normalizeJsonValue } from \"../../shared/json-value.ts\";\nimport { notCommandProjection, opaqueCommandProjection } from \"../command-projection.ts\";\n// ───────────────────────── 工具名归一 ─────────────────────────\n/** Codex 特有别名 + 裸动词(codex transcript 的工具名由 CLI 控制,裸动词安全);通用别名走基表。 */\nexport const CODEX_TOOL_ALIASES: globalThis.Record<string, ToolName> = {\n ...GENERIC_VERB_ALIASES,\n file_change: \"file_edit\",\n update_plan: \"agent_task\",\n};\nfunction normalizeToolName(name: string): ToolName {\n return normalizeShared(name, CODEX_TOOL_ALIASES);\n}\n// ───────────────────────── 小工具 ─────────────────────────\n/** 宽松取一个对象字段(原始 JSON 尚未验证,这里只做存在性收口)。 */\nfunction get(obj: unknown, key: string): unknown {\n return obj && typeof obj === \"object\" ? (obj as globalThis.Record<string, unknown>)[key] : undefined;\n}\n/** 字符串则尝试 JSON.parse,失败原样返回;对象原样返回。 */\nfunction coerceArgs(value: unknown): JsonValue {\n if (typeof value === \"string\") {\n try {\n const parsed: unknown = JSON.parse(value);\n return normalizeJsonValue(parsed, value);\n }\n catch {\n return value;\n }\n }\n return normalizeJsonValue(value, {});\n}\n/** 从 content(string | block[])里抠出纯文本。 */\nfunction extractText(content: unknown): string {\n if (typeof content === \"string\")\n return content;\n if (Array.isArray(content)) {\n const parts: string[] = [];\n for (const block of content) {\n if (typeof block === \"string\") {\n parts.push(block);\n continue;\n }\n const t = get(block, \"text\") ?? get(block, \"content\") ?? get(block, \"thinking\");\n if (typeof t === \"string\")\n parts.push(t);\n }\n return parts.join(\"\\n\");\n }\n return \"\";\n}\n/** 从 reasoning item 抠文本(text / content / summary[].text)。 */\nfunction extractReasoning(item: unknown): string {\n const direct = get(item, \"text\") ?? get(item, \"content\");\n if (typeof direct === \"string\" && direct)\n return direct;\n const summary = get(item, \"summary\");\n if (Array.isArray(summary))\n return extractText(summary);\n return extractText(direct);\n}\n// ───────────────────────── usage 聚合 ─────────────────────────\n/** 从一个 usage-like 对象读出增量(支持 input/output_tokens 与 prompt/completion_tokens 两套命名)。 */\nfunction readUsage(u: unknown): {\n input: number;\n output: number;\n cacheRead: number;\n reasoning: number;\n} | null {\n if (!u || typeof u !== \"object\")\n return null;\n const o = u as globalThis.Record<string, unknown>;\n const num = (...keys: string[]): number => {\n for (const k of keys) {\n const v = o[k];\n if (typeof v === \"number\" && Number.isFinite(v))\n return v;\n }\n return 0;\n };\n const rawInput = num(\"input_tokens\", \"prompt_tokens\", \"inputTokens\", \"promptTokens\");\n const cacheRead = num(\"cached_input_tokens\", \"cache_read_input_tokens\", \"cache_read_tokens\", \"cacheReadTokens\");\n // codex-rs TokenUsage 的 cached_input_tokens 是 input_tokens 的子集,落互斥桶前扣掉\n // (docs/feature/adapters/sdk/codex-cli/cost.md)\n const input = Math.max(0, rawInput - cacheRead);\n const output = num(\"output_tokens\", \"completion_tokens\", \"outputTokens\", \"completionTokens\");\n // codex-rs TokenUsage 结构体与 Responses API usage.output_tokens_details 都拆出这项:\n // 推理模型(o-series/gpt-5 系列)的思考 token,已计入 output 但值得单列展示。\n const reasoning = num(\"reasoning_output_tokens\", \"reasoning_tokens\", \"reasoningOutputTokens\", \"reasoningTokens\");\n if (input === 0 && output === 0 && cacheRead === 0 && reasoning === 0)\n return null;\n return { input, output, cacheRead, reasoning };\n}\n/** 防御式地从一行事件里找到第一处 usage(优先级顺序,每行至多取一次,避免重复计数)。 */\nfunction pickUsage(data: unknown): unknown {\n return (get(data, \"usage\") ??\n get(get(data, \"payload\"), \"usage\") ??\n get(get(data, \"item\"), \"usage\") ??\n get(get(data, \"turn\"), \"usage\") ??\n get(get(data, \"response\"), \"usage\") ??\n null);\n}\n// ───────────────────────── compaction 标记 ─────────────────────────\n/**\n * 仅在出现可信压缩标记时才认(保守):type / item.type / subtype 含 compact 或 context_truncat。\n * 不再匹配 \"summariz\"——任何名字带 summarize 的工具 / item(如 summarization_tool)都会被\n * 误判成压缩边界并整条吞掉,污染计数且丢事件。命中即吞整条事件,匹配面必须窄。\n */\nfunction isCompactionMarker(eventType: unknown, data: unknown): boolean {\n const candidates = [eventType, get(get(data, \"item\"), \"type\"), get(data, \"subtype\")];\n for (const c of candidates) {\n if (typeof c !== \"string\")\n continue;\n const s = c.toLowerCase();\n if (s.includes(\"compact\") || s.includes(\"context_truncat\"))\n return true;\n }\n return false;\n}\n// ───────────────────────── 主解析 ─────────────────────────\nexport function parseCodexTranscript(raw: string | undefined): ParsedTranscript {\n const events: StreamEvent[] = [];\n let inputTokens = 0;\n let outputTokens = 0;\n let cacheReadTokens = 0;\n let reasoningTokens = 0;\n let requests = 0;\n let compactions = 0;\n let parseSuccess = true;\n if (!raw || !raw.trim()) {\n return { events, usage: {}, compactions: 0, parseSuccess: true };\n }\n // 配对状态:已 started 的 callId(命令类工具的 started/completed 收口),\n // 以及无显式 call_id 时的 FIFO 兜底队列(老式 function_call_output 配对)。\n const startedCallIds = new Set<string>();\n const pendingCallIds: string[] = [];\n let synth = 0;\n const nextSynthId = (prefix: string): string => `${prefix}_${++synth}`;\n const addUsageFrom = (data: unknown): void => {\n const u = readUsage(pickUsage(data));\n if (!u)\n return;\n inputTokens += u.input;\n outputTokens += u.output;\n cacheReadTokens += u.cacheRead;\n reasoningTokens += u.reasoning;\n requests += 1;\n };\n const emitCall = (callId: string, name: string, input: JsonValue, tool: ToolName, command: CommandProjection): void => {\n startedCallIds.add(callId);\n events.push({ type: \"operation.started\", operationId: callId, operation: { kind: \"tool\", name, input, tool, command } });\n };\n const emitResult = (callId: string, output: JsonValue | undefined, status: \"completed\" | \"failed\" | \"rejected\"): void => {\n events.push({ type: \"operation.finished\", operationId: callId, kind: \"tool\", output, status });\n };\n // 处理 item.started / item.completed 里的 item。\n const handleItem = (item: unknown, isCompleted: boolean): void => {\n if (!item || typeof item !== \"object\")\n return;\n const itemType = get(item, \"type\");\n const idRaw = get(item, \"id\");\n const baseId = typeof idRaw === \"string\" || typeof idRaw === \"number\" ? String(idRaw) : \"\";\n switch (itemType) {\n case \"reasoning\":\n case \"thinking\": {\n // 思考只在 completed 落一次,避免 started/completed 重复。\n if (!isCompleted)\n return;\n const text = extractReasoning(item);\n if (text)\n events.push({ type: \"thinking\", text });\n return;\n }\n case \"agent_message\":\n case \"assistant_message\":\n case \"message\": {\n if (!isCompleted)\n return;\n const text = extractText(get(item, \"text\") ?? get(item, \"content\") ?? get(item, \"message\"));\n if (text)\n events.push({ type: \"message\", role: \"assistant\", text });\n return;\n }\n case \"command_execution\":\n case \"local_shell_call\": {\n const callId = baseId || nextSynthId(\"cmd\");\n const command = get(item, \"command\") ?? get(get(item, \"action\"), \"command\");\n if (!isCompleted) {\n emitCall(callId, \"command_execution\", { command } as JsonValue, \"shell\", opaqueCommandProjection(\"unsupported-protocol\"));\n return;\n }\n if (!startedCallIds.has(callId)) {\n emitCall(callId, \"command_execution\", { command } as JsonValue, \"shell\", opaqueCommandProjection(\"unsupported-protocol\"));\n }\n const exit = get(item, \"exit_code\");\n const statusStr = get(item, \"status\");\n const success = exit === 0 || (exit == null && statusStr !== \"failed\" && statusStr !== \"error\");\n emitResult(callId, {\n output: (get(item, \"aggregated_output\") ?? get(item, \"output\") ?? null) as JsonValue,\n exit_code: (exit ?? null) as JsonValue,\n }, success ? \"completed\" : \"failed\");\n return;\n }\n case \"mcp_tool_call\": {\n const callId = baseId || nextSynthId(\"mcp\");\n const server = get(item, \"server\");\n const toolRaw = get(item, \"tool\") ?? get(item, \"name\") ?? \"unknown\";\n const originalName = typeof server === \"string\" ? `${server}.${String(toolRaw)}` : String(toolRaw);\n const input = coerceArgs(get(item, \"arguments\") ?? get(item, \"input\"));\n if (!isCompleted) {\n emitCall(callId, originalName, input, normalizeToolName(String(toolRaw)), notCommandProjection());\n return;\n }\n if (!startedCallIds.has(callId)) {\n emitCall(callId, originalName, input, normalizeToolName(String(toolRaw)), notCommandProjection());\n }\n const statusStr = get(item, \"status\");\n const success = !get(item, \"error\") && statusStr !== \"failed\";\n emitResult(callId, (get(item, \"result\") ?? null) as JsonValue, success ? \"completed\" : \"failed\");\n return;\n }\n case \"web_search\": {\n const callId = baseId || nextSynthId(\"web\");\n const query = get(item, \"query\") ?? get(item, \"search\");\n if (!isCompleted) {\n emitCall(callId, \"web_search\", { query } as JsonValue, \"web_search\", notCommandProjection());\n return;\n }\n if (!startedCallIds.has(callId)) {\n emitCall(callId, \"web_search\", { query } as JsonValue, \"web_search\", notCommandProjection());\n }\n emitResult(callId, (get(item, \"results\") ?? get(item, \"result\") ?? null) as JsonValue, \"completed\");\n return;\n }\n case \"file_change\":\n case \"patch\":\n case \"file_patch\": {\n if (!isCompleted)\n return;\n const changes = get(item, \"changes\");\n const list = Array.isArray(changes) ? changes : [{ path: get(item, \"path\") }];\n list.forEach((ch, i) => {\n const path = get(ch, \"path\") ?? get(ch, \"file\");\n const kindRaw = get(ch, \"kind\") ?? get(ch, \"type\") ?? get(item, \"kind\");\n const kind = typeof kindRaw === \"string\" ? kindRaw.toLowerCase() : \"update\";\n const tool: ToolName = kind === \"add\" || kind === \"delete\" ? \"file_write\" : \"file_edit\";\n const callId = `${baseId || \"patch\"}#${i}`;\n emitCall(callId, \"file_change\", { path, kind } as JsonValue, tool, notCommandProjection());\n emitResult(callId, { path, kind } as JsonValue, \"completed\");\n });\n return;\n }\n case \"error\": {\n const msg = get(item, \"message\") ?? get(item, \"text\") ?? \"error\";\n events.push({ type: \"error\", message: String(msg) });\n return;\n }\n default:\n return; // todo_list / 其它 item 类型暂不映射\n }\n };\n const lines = raw.split(\"\\n\");\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed)\n continue;\n let data: unknown;\n try {\n data = JSON.parse(trimmed);\n }\n catch {\n parseSuccess = false;\n continue;\n }\n try {\n addUsageFrom(data);\n const eventType = (get(data, \"type\") ?? get(data, \"event\") ?? get(data, \"kind\")) as unknown;\n if (isCompactionMarker(eventType, data)) {\n events.push({ type: \"compaction\" });\n compactions += 1;\n continue;\n }\n switch (eventType) {\n // ── 控制流:仅在失败时落 error ──\n case \"thread.started\":\n case \"thread.completed\":\n case \"turn.started\":\n case \"turn.completed\":\n case \"response.created\":\n case \"response.completed\":\n case \"response.cancelled\":\n break;\n case \"turn.failed\":\n case \"response.failed\": {\n const err = get(data, \"error\");\n const msg = get(err, \"message\") ?? get(data, \"message\") ?? \"turn failed\";\n events.push({ type: \"error\", message: String(msg) });\n break;\n }\n // ── 主路径:item.* ──\n case \"item.started\":\n handleItem(get(data, \"item\"), false);\n break;\n case \"item.updated\":\n // 中间态忽略,等 completed\n break;\n case \"item.completed\":\n handleItem(get(data, \"item\"), true);\n break;\n // ── 老式 / session rollout ResponseItem ──\n case \"message\":\n case \"chat\": {\n const roleRaw = get(data, \"role\") ?? (get(data, \"from\") === \"assistant\" ? \"assistant\" : \"user\");\n const role = roleRaw === \"user\" ? \"user\" : \"assistant\";\n const text = extractText(get(data, \"content\") ?? get(data, \"text\") ?? get(data, \"message\"));\n if (text)\n events.push({ type: \"message\", role, text });\n break;\n }\n case \"reasoning\":\n case \"thinking\":\n case \"thought\": {\n const text = extractReasoning(data);\n if (text)\n events.push({ type: \"thinking\", text });\n break;\n }\n case \"function_call\":\n case \"tool_call\":\n case \"tool_use\":\n case \"custom_tool_call\":\n case \"action\":\n case \"local_shell_call\": {\n const isShell = eventType === \"local_shell_call\";\n const nameRaw = isShell\n ? \"shell\"\n : (get(data, \"name\") ?? get(get(data, \"function\"), \"name\") ?? get(data, \"tool\") ?? get(data, \"action\") ?? \"unknown\");\n const name = String(nameRaw);\n const rawArgs = isShell\n ? (get(data, \"action\") ?? get(data, \"input\"))\n : (get(get(data, \"function\"), \"arguments\") ?? get(data, \"arguments\") ?? get(data, \"input\") ?? get(data, \"params\"));\n const input = coerceArgs(rawArgs);\n const explicit = get(data, \"call_id\") ?? get(data, \"id\") ?? get(data, \"tool_call_id\");\n const callId = explicit != null ? String(explicit) : nextSynthId(\"call\");\n if (explicit == null)\n pendingCallIds.push(callId);\n emitCall(callId, name, input, normalizeToolName(name), isShell ? opaqueCommandProjection(\"unsupported-protocol\") : notCommandProjection());\n break;\n }\n case \"function_call_output\":\n case \"tool_result\":\n case \"tool_response\":\n case \"action_result\":\n case \"local_shell_call_output\": {\n const explicit = get(data, \"call_id\") ?? get(data, \"tool_call_id\") ?? get(data, \"id\");\n const callId = explicit != null ? String(explicit) : pendingCallIds.shift() ?? nextSynthId(\"result\");\n const rawOut = get(data, \"output\") ?? get(data, \"result\") ?? get(data, \"content\");\n const { output, status } = interpretOutput(rawOut, data);\n emitResult(callId, output, status);\n break;\n }\n case \"error\": {\n const err = get(data, \"error\");\n const msg = get(err, \"message\") ?? get(data, \"message\") ?? get(data, \"content\") ?? \"error\";\n events.push({ type: \"error\", message: String(msg) });\n break;\n }\n // output_text.delta / output_text.done 是同一条 assistant 文本的流式分片,\n // 最终文本会经 agent_message item / message ResponseItem 落地,这里直接丢弃避免重复。\n case \"output_text.delta\":\n case \"output_text.done\":\n break;\n default: {\n // 兜底:按结构猜。\n const role = get(data, \"role\");\n if (role === \"assistant\" || role === \"user\") {\n const text = extractText(get(data, \"content\") ?? get(data, \"text\"));\n if (text)\n events.push({ type: \"message\", role, text });\n }\n }\n }\n }\n catch {\n // 单行处理异常不应拖垮整条 transcript。\n parseSuccess = false;\n }\n }\n // requests > 0 意味着至少一行真的带回了 usage;整份 transcript 没有任何 usage 行时\n // input/output 也不该垫成 0(见 docs/feature/record/architecture.md#usage)。\n const usage: Usage = requests > 0 ? { inputTokens, outputTokens } : {};\n if (cacheReadTokens > 0)\n usage.cacheReadTokens = cacheReadTokens;\n if (reasoningTokens > 0)\n usage.reasoningTokens = reasoningTokens;\n if (requests > 0)\n usage.requests = requests;\n return { events, usage, compactions, parseSuccess };\n}\n/**\n * 解读一条工具结果输出:显式 success/error → status 字符串 → exit_code,层层找成败证据。\n * 都没有才默认 completed —— 这是乐观兜底:codex 不带任何成败字段的结果会被记成成功,\n * noFailedActions() 这类负断言可能因此假通过。所以证据检查要尽量全,别轻易走到兜底。\n */\nfunction interpretOutput(rawOut: unknown, data: unknown): {\n output: JsonValue | undefined;\n status: \"completed\" | \"failed\" | \"rejected\";\n} {\n // 显式 success / error 优先。\n const explicitSuccess = get(data, \"success\");\n if (explicitSuccess === false)\n return { output: (rawOut ?? null) as JsonValue, status: \"failed\" };\n if (get(data, \"error\"))\n return { output: (rawOut ?? null) as JsonValue, status: \"failed\" };\n // 事件自带 status 字符串(item/data 两层都看)。\n const statusStr = get(data, \"status\") ?? get(get(data, \"item\"), \"status\");\n if (statusStr === \"failed\" || statusStr === \"error\") {\n return { output: (rawOut ?? null) as JsonValue, status: \"failed\" };\n }\n if (statusStr === \"rejected\" || statusStr === \"declined\") {\n return { output: (rawOut ?? null) as JsonValue, status: \"rejected\" };\n }\n // 字符串输出尝试解析 exit_code(codex shell 结果常见)。\n let parsed: unknown = rawOut;\n if (typeof rawOut === \"string\") {\n try {\n parsed = JSON.parse(rawOut);\n }\n catch {\n parsed = rawOut;\n }\n }\n const exit = get(parsed, \"exit_code\") ?? get(parsed, \"exitCode\") ?? get(get(parsed, \"metadata\"), \"exit_code\");\n if (typeof exit === \"number\") {\n return { output: (parsed ?? null) as JsonValue, status: exit === 0 ? \"completed\" : \"failed\" };\n }\n return { output: (parsed ?? null) as JsonValue, status: \"completed\" };\n}\n/** 便捷形态:只要 StreamEvent[]。 */\nexport function parseCodex(raw: string | undefined): StreamEvent[] {\n return parseCodexTranscript(raw).events;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["codex.ts"],"names":[],"mappings":"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","sourcesContent":["// OpenAI Codex CLI transcript 解析器(关键路径)。\n// 两类输入都吃:\n// 1. `codex exec --json` 打到 stdout 的事件 JSONL(thread.* / turn.* / item.* / response.*);\n// 2. 磁盘上 session rollout JSONL(ResponseItem:message / function_call / reasoning ...)。\n// 唯一硬活:把这堆五花八门的原始事件归一成 niceeval 的 StreamEvent[]。\nimport type { CommandProjection, StreamEvent, Usage, ToolName, JsonValue } from \"../../types.ts\";\nimport type { ParsedTranscript } from \"./index.ts\";\nimport { GENERIC_VERB_ALIASES, normalizeToolName as normalizeShared } from \"../tool-names.ts\";\nimport { normalizeJsonValue } from \"../../shared/json-value.ts\";\nimport { notCommandProjection, opaqueCommandProjection } from \"../command-projection.ts\";\n// ───────────────────────── 工具名归一 ─────────────────────────\n/** Codex 特有别名 + 裸动词(codex transcript 的工具名由 CLI 控制,裸动词安全);通用别名走基表。 */\nexport const CODEX_TOOL_ALIASES: globalThis.Record<string, ToolName> = {\n ...GENERIC_VERB_ALIASES,\n file_change: \"file_edit\",\n update_plan: \"agent_task\",\n};\nfunction normalizeToolName(name: string): ToolName {\n return normalizeShared(name, CODEX_TOOL_ALIASES);\n}\n// ───────────────────────── 小工具 ─────────────────────────\n/** 宽松取一个对象字段(原始 JSON 尚未验证,这里只做存在性收口)。 */\nfunction get(obj: unknown, key: string): unknown {\n return obj && typeof obj === \"object\" ? (obj as globalThis.Record<string, unknown>)[key] : undefined;\n}\n/** 字符串则尝试 JSON.parse,失败原样返回;对象原样返回。 */\nfunction coerceArgs(value: unknown): JsonValue {\n if (typeof value === \"string\") {\n try {\n const parsed: unknown = JSON.parse(value);\n return normalizeJsonValue(parsed, value);\n }\n catch {\n return value;\n }\n }\n return normalizeJsonValue(value, {});\n}\n/** 从 content(string | block[])里抠出纯文本。 */\nfunction extractText(content: unknown): string {\n if (typeof content === \"string\")\n return content;\n if (Array.isArray(content)) {\n const parts: string[] = [];\n for (const block of content) {\n if (typeof block === \"string\") {\n parts.push(block);\n continue;\n }\n const t = get(block, \"text\") ?? get(block, \"content\") ?? get(block, \"thinking\");\n if (typeof t === \"string\")\n parts.push(t);\n }\n return parts.join(\"\\n\");\n }\n return \"\";\n}\n/** 从 reasoning item 抠文本(text / content / summary[].text)。 */\nfunction extractReasoning(item: unknown): string {\n const direct = get(item, \"text\") ?? get(item, \"content\");\n if (typeof direct === \"string\" && direct)\n return direct;\n const summary = get(item, \"summary\");\n if (Array.isArray(summary))\n return extractText(summary);\n return extractText(direct);\n}\n// ───────────────────────── usage 聚合 ─────────────────────────\n/** 从一个 usage-like 对象读出增量(支持 input/output_tokens 与 prompt/completion_tokens 两套命名)。 */\nfunction readUsage(u: unknown): {\n input: number;\n output: number;\n cacheRead: number;\n reasoning: number;\n} | null {\n if (!u || typeof u !== \"object\")\n return null;\n const o = u as globalThis.Record<string, unknown>;\n const num = (...keys: string[]): number => {\n for (const k of keys) {\n const v = o[k];\n if (typeof v === \"number\" && Number.isFinite(v))\n return v;\n }\n return 0;\n };\n const rawInput = num(\"input_tokens\", \"prompt_tokens\", \"inputTokens\", \"promptTokens\");\n const cacheRead = num(\"cached_input_tokens\", \"cache_read_input_tokens\", \"cache_read_tokens\", \"cacheReadTokens\");\n // codex-rs TokenUsage 的 cached_input_tokens 是 input_tokens 的子集,落互斥桶前扣掉\n // (docs/feature/adapters/sdk/codex-cli/cost.md)\n const input = Math.max(0, rawInput - cacheRead);\n const output = num(\"output_tokens\", \"completion_tokens\", \"outputTokens\", \"completionTokens\");\n // codex-rs TokenUsage 结构体与 Responses API usage.output_tokens_details 都拆出这项:\n // 推理模型(o-series/gpt-5 系列)的思考 token,已计入 output 但值得单列展示。\n const reasoning = num(\"reasoning_output_tokens\", \"reasoning_tokens\", \"reasoningOutputTokens\", \"reasoningTokens\");\n if (input === 0 && output === 0 && cacheRead === 0 && reasoning === 0)\n return null;\n return { input, output, cacheRead, reasoning };\n}\n/** 防御式地从一行事件里找到第一处 usage(优先级顺序,每行至多取一次,避免重复计数)。 */\nfunction pickUsage(data: unknown): unknown {\n return (get(data, \"usage\") ??\n get(get(data, \"payload\"), \"usage\") ??\n get(get(data, \"item\"), \"usage\") ??\n get(get(data, \"turn\"), \"usage\") ??\n get(get(data, \"response\"), \"usage\") ??\n null);\n}\n// ───────────────────────── compaction 标记 ─────────────────────────\n/**\n * 仅在出现可信压缩标记时才认(保守):type / item.type / subtype 含 compact 或 context_truncat。\n * 不再匹配 \"summariz\"——任何名字带 summarize 的工具 / item(如 summarization_tool)都会被\n * 误判成压缩边界并整条吞掉,污染计数且丢事件。命中即吞整条事件,匹配面必须窄。\n */\nfunction isCompactionMarker(eventType: unknown, data: unknown): boolean {\n const candidates = [eventType, get(get(data, \"item\"), \"type\"), get(data, \"subtype\")];\n for (const c of candidates) {\n if (typeof c !== \"string\")\n continue;\n const s = c.toLowerCase();\n if (s.includes(\"compact\") || s.includes(\"context_truncat\"))\n return true;\n }\n return false;\n}\n// ───────────────────────── 主解析 ─────────────────────────\nexport function parseCodexTranscript(raw: string | undefined): ParsedTranscript {\n const events: StreamEvent[] = [];\n let inputTokens = 0;\n let outputTokens = 0;\n let cacheReadTokens = 0;\n let reasoningTokens = 0;\n let requests = 0;\n let compactions = 0;\n let parseSuccess = true;\n if (!raw || !raw.trim()) {\n return { events, usage: {}, compactions: 0, parseSuccess: true };\n }\n // 配对状态:已 started 的 callId(命令类工具的 started/completed 收口),\n // 以及无显式 call_id 时的 FIFO 兜底队列(老式 function_call_output 配对)。\n const startedCallIds = new Set<string>();\n const pendingCallIds: string[] = [];\n let synth = 0;\n const nextSynthId = (prefix: string): string => `${prefix}_${++synth}`;\n const addUsageFrom = (data: unknown): void => {\n const u = readUsage(pickUsage(data));\n if (!u)\n return;\n inputTokens += u.input;\n outputTokens += u.output;\n cacheReadTokens += u.cacheRead;\n reasoningTokens += u.reasoning;\n requests += 1;\n };\n const emitCall = (callId: string, name: string, input: JsonValue, tool: ToolName, command: CommandProjection): void => {\n startedCallIds.add(callId);\n events.push({ type: \"operation.started\", operationId: callId, operation: { kind: \"tool\", name, input, tool, command } });\n };\n const emitResult = (callId: string, output: JsonValue | undefined, status: \"completed\" | \"failed\" | \"rejected\"): void => {\n events.push({ type: \"operation.finished\", operationId: callId, kind: \"tool\", output, status });\n };\n // 处理 item.started / item.completed 里的 item。\n const handleItem = (item: unknown, isCompleted: boolean): void => {\n if (!item || typeof item !== \"object\")\n return;\n const itemType = get(item, \"type\");\n const idRaw = get(item, \"id\");\n const baseId = typeof idRaw === \"string\" || typeof idRaw === \"number\" ? String(idRaw) : \"\";\n switch (itemType) {\n case \"reasoning\":\n case \"thinking\": {\n // 思考只在 completed 落一次,避免 started/completed 重复。\n if (!isCompleted)\n return;\n const text = extractReasoning(item);\n if (text)\n events.push({ type: \"thinking\", text });\n return;\n }\n case \"agent_message\":\n case \"assistant_message\":\n case \"message\": {\n if (!isCompleted)\n return;\n const text = extractText(get(item, \"text\") ?? get(item, \"content\") ?? get(item, \"message\"));\n if (text)\n events.push({ type: \"message\", role: \"assistant\", text });\n return;\n }\n case \"command_execution\":\n case \"local_shell_call\": {\n const callId = baseId || nextSynthId(\"cmd\");\n const command = get(item, \"command\") ?? get(get(item, \"action\"), \"command\");\n if (!isCompleted) {\n emitCall(callId, \"command_execution\", { command } as JsonValue, \"shell\", opaqueCommandProjection(\"unsupported-protocol\"));\n return;\n }\n if (!startedCallIds.has(callId)) {\n emitCall(callId, \"command_execution\", { command } as JsonValue, \"shell\", opaqueCommandProjection(\"unsupported-protocol\"));\n }\n // `codex exec --json` uses snake_case while app-server v2 keeps the\n // protocol's camelCase fields after normalizeItem() rewrites only the\n // tagged-union type. Both are public Codex transports and must close\n // to the same provider-neutral result.\n const exit = get(item, \"exit_code\") ?? get(item, \"exitCode\");\n const output = get(item, \"aggregated_output\") ??\n get(item, \"aggregatedOutput\") ??\n get(item, \"output\");\n const statusStr = get(item, \"status\");\n const status = statusStr === \"declined\" || statusStr === \"rejected\"\n ? \"rejected\" as const\n : exit === 0 || (exit == null && statusStr !== \"failed\" && statusStr !== \"error\")\n ? \"completed\" as const\n : \"failed\" as const;\n const result = output === undefined && exit === undefined\n ? undefined\n : {\n output: (output ?? null) as JsonValue,\n exit_code: (exit ?? null) as JsonValue,\n };\n emitResult(callId, result, status);\n return;\n }\n case \"mcp_tool_call\": {\n const callId = baseId || nextSynthId(\"mcp\");\n const server = get(item, \"server\");\n const toolRaw = get(item, \"tool\") ?? get(item, \"name\") ?? \"unknown\";\n const originalName = typeof server === \"string\" ? `${server}.${String(toolRaw)}` : String(toolRaw);\n const input = coerceArgs(get(item, \"arguments\") ?? get(item, \"input\"));\n if (!isCompleted) {\n emitCall(callId, originalName, input, normalizeToolName(String(toolRaw)), notCommandProjection());\n return;\n }\n if (!startedCallIds.has(callId)) {\n emitCall(callId, originalName, input, normalizeToolName(String(toolRaw)), notCommandProjection());\n }\n const statusStr = get(item, \"status\");\n const success = !get(item, \"error\") && statusStr !== \"failed\";\n emitResult(callId, (get(item, \"result\") ?? null) as JsonValue, success ? \"completed\" : \"failed\");\n return;\n }\n case \"web_search\": {\n const callId = baseId || nextSynthId(\"web\");\n const query = get(item, \"query\") ?? get(item, \"search\");\n if (!isCompleted) {\n emitCall(callId, \"web_search\", { query } as JsonValue, \"web_search\", notCommandProjection());\n return;\n }\n if (!startedCallIds.has(callId)) {\n emitCall(callId, \"web_search\", { query } as JsonValue, \"web_search\", notCommandProjection());\n }\n emitResult(callId, (get(item, \"results\") ?? get(item, \"result\") ?? null) as JsonValue, \"completed\");\n return;\n }\n case \"file_change\":\n case \"patch\":\n case \"file_patch\": {\n if (!isCompleted)\n return;\n const changes = get(item, \"changes\");\n const list = Array.isArray(changes) ? changes : [{ path: get(item, \"path\") }];\n list.forEach((ch, i) => {\n const path = get(ch, \"path\") ?? get(ch, \"file\");\n const kindRaw = get(ch, \"kind\") ?? get(ch, \"type\") ?? get(item, \"kind\");\n const kind = typeof kindRaw === \"string\" ? kindRaw.toLowerCase() : \"update\";\n const tool: ToolName = kind === \"add\" || kind === \"delete\" ? \"file_write\" : \"file_edit\";\n const callId = `${baseId || \"patch\"}#${i}`;\n emitCall(callId, \"file_change\", { path, kind } as JsonValue, tool, notCommandProjection());\n emitResult(callId, { path, kind } as JsonValue, \"completed\");\n });\n return;\n }\n case \"error\": {\n const msg = get(item, \"message\") ?? get(item, \"text\") ?? \"error\";\n events.push({ type: \"error\", message: String(msg) });\n return;\n }\n default:\n return; // todo_list / 其它 item 类型暂不映射\n }\n };\n const lines = raw.split(\"\\n\");\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed)\n continue;\n let data: unknown;\n try {\n data = JSON.parse(trimmed);\n }\n catch {\n parseSuccess = false;\n continue;\n }\n try {\n addUsageFrom(data);\n const eventType = (get(data, \"type\") ?? get(data, \"event\") ?? get(data, \"kind\")) as unknown;\n if (isCompactionMarker(eventType, data)) {\n events.push({ type: \"compaction\" });\n compactions += 1;\n continue;\n }\n switch (eventType) {\n // ── 控制流:仅在失败时落 error ──\n case \"thread.started\":\n case \"thread.completed\":\n case \"turn.started\":\n case \"response.created\":\n case \"response.completed\":\n case \"response.cancelled\":\n break;\n case \"turn.completed\": {\n const turn = get(data, \"turn\");\n if (get(turn, \"status\") !== \"failed\")\n break;\n const err = get(turn, \"error\");\n const msg = get(err, \"message\") ?? get(data, \"message\") ?? \"turn failed\";\n events.push({ type: \"error\", message: String(msg) });\n break;\n }\n case \"turn.failed\":\n case \"response.failed\": {\n const err = get(data, \"error\");\n const msg = get(err, \"message\") ?? get(data, \"message\") ?? \"turn failed\";\n events.push({ type: \"error\", message: String(msg) });\n break;\n }\n // ── 主路径:item.* ──\n case \"item.started\":\n handleItem(get(data, \"item\"), false);\n break;\n case \"item.updated\":\n // 中间态忽略,等 completed\n break;\n case \"item.completed\":\n handleItem(get(data, \"item\"), true);\n break;\n // ── 老式 / session rollout ResponseItem ──\n case \"message\":\n case \"chat\": {\n const roleRaw = get(data, \"role\") ?? (get(data, \"from\") === \"assistant\" ? \"assistant\" : \"user\");\n const role = roleRaw === \"user\" ? \"user\" : \"assistant\";\n const text = extractText(get(data, \"content\") ?? get(data, \"text\") ?? get(data, \"message\"));\n if (text)\n events.push({ type: \"message\", role, text });\n break;\n }\n case \"reasoning\":\n case \"thinking\":\n case \"thought\": {\n const text = extractReasoning(data);\n if (text)\n events.push({ type: \"thinking\", text });\n break;\n }\n case \"function_call\":\n case \"tool_call\":\n case \"tool_use\":\n case \"custom_tool_call\":\n case \"action\":\n case \"local_shell_call\": {\n const isShell = eventType === \"local_shell_call\";\n const nameRaw = isShell\n ? \"shell\"\n : (get(data, \"name\") ?? get(get(data, \"function\"), \"name\") ?? get(data, \"tool\") ?? get(data, \"action\") ?? \"unknown\");\n const name = String(nameRaw);\n const rawArgs = isShell\n ? (get(data, \"action\") ?? get(data, \"input\"))\n : (get(get(data, \"function\"), \"arguments\") ?? get(data, \"arguments\") ?? get(data, \"input\") ?? get(data, \"params\"));\n const input = coerceArgs(rawArgs);\n const explicit = get(data, \"call_id\") ?? get(data, \"id\") ?? get(data, \"tool_call_id\");\n const callId = explicit != null ? String(explicit) : nextSynthId(\"call\");\n if (explicit == null)\n pendingCallIds.push(callId);\n emitCall(callId, name, input, normalizeToolName(name), isShell ? opaqueCommandProjection(\"unsupported-protocol\") : notCommandProjection());\n break;\n }\n case \"function_call_output\":\n case \"tool_result\":\n case \"tool_response\":\n case \"action_result\":\n case \"local_shell_call_output\": {\n const explicit = get(data, \"call_id\") ?? get(data, \"tool_call_id\") ?? get(data, \"id\");\n const callId = explicit != null ? String(explicit) : pendingCallIds.shift() ?? nextSynthId(\"result\");\n const rawOut = get(data, \"output\") ?? get(data, \"result\") ?? get(data, \"content\");\n const { output, status } = interpretOutput(rawOut, data);\n emitResult(callId, output, status);\n break;\n }\n case \"error\": {\n const err = get(data, \"error\");\n const msg = get(err, \"message\") ?? get(data, \"message\") ?? get(data, \"content\") ?? \"error\";\n events.push({ type: \"error\", message: String(msg) });\n break;\n }\n // output_text.delta / output_text.done 是同一条 assistant 文本的流式分片,\n // 最终文本会经 agent_message item / message ResponseItem 落地,这里直接丢弃避免重复。\n case \"output_text.delta\":\n case \"output_text.done\":\n break;\n default: {\n // 兜底:按结构猜。\n const role = get(data, \"role\");\n if (role === \"assistant\" || role === \"user\") {\n const text = extractText(get(data, \"content\") ?? get(data, \"text\"));\n if (text)\n events.push({ type: \"message\", role, text });\n }\n }\n }\n }\n catch {\n // 单行处理异常不应拖垮整条 transcript。\n parseSuccess = false;\n }\n }\n // requests > 0 意味着至少一行真的带回了 usage;整份 transcript 没有任何 usage 行时\n // input/output 也不该垫成 0(见 docs/feature/record/architecture.md#usage)。\n const usage: Usage = requests > 0 ? { inputTokens, outputTokens } : {};\n if (cacheReadTokens > 0)\n usage.cacheReadTokens = cacheReadTokens;\n if (reasoningTokens > 0)\n usage.reasoningTokens = reasoningTokens;\n if (requests > 0)\n usage.requests = requests;\n return { events, usage, compactions, parseSuccess };\n}\n/**\n * 解读一条工具结果输出:显式 success/error → status 字符串 → exit_code,层层找成败证据。\n * 都没有才默认 completed —— 这是乐观兜底:codex 不带任何成败字段的结果会被记成成功,\n * noFailedActions() 这类负断言可能因此假通过。所以证据检查要尽量全,别轻易走到兜底。\n */\nfunction interpretOutput(rawOut: unknown, data: unknown): {\n output: JsonValue | undefined;\n status: \"completed\" | \"failed\" | \"rejected\";\n} {\n // 显式 success / error 优先。\n const explicitSuccess = get(data, \"success\");\n if (explicitSuccess === false)\n return { output: (rawOut ?? null) as JsonValue, status: \"failed\" };\n if (get(data, \"error\"))\n return { output: (rawOut ?? null) as JsonValue, status: \"failed\" };\n // 事件自带 status 字符串(item/data 两层都看)。\n const statusStr = get(data, \"status\") ?? get(get(data, \"item\"), \"status\");\n if (statusStr === \"failed\" || statusStr === \"error\") {\n return { output: (rawOut ?? null) as JsonValue, status: \"failed\" };\n }\n if (statusStr === \"rejected\" || statusStr === \"declined\") {\n return { output: (rawOut ?? null) as JsonValue, status: \"rejected\" };\n }\n // 字符串输出尝试解析 exit_code(codex shell 结果常见)。\n let parsed: unknown = rawOut;\n if (typeof rawOut === \"string\") {\n try {\n parsed = JSON.parse(rawOut);\n }\n catch {\n parsed = rawOut;\n }\n }\n const exit = get(parsed, \"exit_code\") ?? get(parsed, \"exitCode\") ?? get(get(parsed, \"metadata\"), \"exit_code\");\n if (typeof exit === \"number\") {\n return { output: (parsed ?? null) as JsonValue, status: exit === 0 ? \"completed\" : \"failed\" };\n }\n return { output: (parsed ?? null) as JsonValue, status: \"completed\" };\n}\n/** 便捷形态:只要 StreamEvent[]。 */\nexport function parseCodex(raw: string | undefined): StreamEvent[] {\n return parseCodexTranscript(raw).events;\n}\n"]}
|
|
@@ -27,7 +27,6 @@ export declare const RecordAttemptRefSchema: Schema.Struct<{
|
|
|
27
27
|
}>;
|
|
28
28
|
export declare const RecordDocumentSchema: Schema.Struct<{
|
|
29
29
|
format: Schema.Schema<import("../model/identifiers.cjs").RecordFormat, "niceeval.record", never>;
|
|
30
|
-
schemaVersion: Schema.Schema<2, 2, never>;
|
|
31
30
|
recordId: Schema.Schema<import("../model/identifiers.cjs").RecordId, string, never>;
|
|
32
31
|
}>;
|
|
33
32
|
export declare const RecordSlotIdentitySchema: Schema.Struct<{
|
|
@@ -135,7 +134,6 @@ export declare const RunCoreSchema: Schema.Struct<{
|
|
|
135
134
|
export declare const RecordCoreSchema: Schema.filter<Schema.Struct<{
|
|
136
135
|
record: Schema.Struct<{
|
|
137
136
|
format: Schema.Schema<import("../model/identifiers.cjs").RecordFormat, "niceeval.record", never>;
|
|
138
|
-
schemaVersion: Schema.Schema<2, 2, never>;
|
|
139
137
|
recordId: Schema.Schema<import("../model/identifiers.cjs").RecordId, string, never>;
|
|
140
138
|
}>;
|
|
141
139
|
runs: Schema.Array$<Schema.Struct<{
|
|
@@ -27,7 +27,6 @@ export declare const RecordAttemptRefSchema: Schema.Struct<{
|
|
|
27
27
|
}>;
|
|
28
28
|
export declare const RecordDocumentSchema: Schema.Struct<{
|
|
29
29
|
format: Schema.Schema<import("../model/identifiers.mjs").RecordFormat, "niceeval.record", never>;
|
|
30
|
-
schemaVersion: Schema.Schema<2, 2, never>;
|
|
31
30
|
recordId: Schema.Schema<import("../model/identifiers.mjs").RecordId, string, never>;
|
|
32
31
|
}>;
|
|
33
32
|
export declare const RecordSlotIdentitySchema: Schema.Struct<{
|
|
@@ -135,7 +134,6 @@ export declare const RunCoreSchema: Schema.Struct<{
|
|
|
135
134
|
export declare const RecordCoreSchema: Schema.filter<Schema.Struct<{
|
|
136
135
|
record: Schema.Struct<{
|
|
137
136
|
format: Schema.Schema<import("../model/identifiers.mjs").RecordFormat, "niceeval.record", never>;
|
|
138
|
-
schemaVersion: Schema.Schema<2, 2, never>;
|
|
139
137
|
recordId: Schema.Schema<import("../model/identifiers.mjs").RecordId, string, never>;
|
|
140
138
|
}>;
|
|
141
139
|
runs: Schema.Array$<Schema.Struct<{
|
|
@@ -27,7 +27,6 @@ export declare const RecordAttemptRefSchema: Schema.Struct<{
|
|
|
27
27
|
}>;
|
|
28
28
|
export declare const RecordDocumentSchema: Schema.Struct<{
|
|
29
29
|
format: Schema.Schema<import("../model/identifiers.js").RecordFormat, "niceeval.record", never>;
|
|
30
|
-
schemaVersion: Schema.Schema<2, 2, never>;
|
|
31
30
|
recordId: Schema.Schema<import("../model/identifiers.js").RecordId, string, never>;
|
|
32
31
|
}>;
|
|
33
32
|
export declare const RecordSlotIdentitySchema: Schema.Struct<{
|
|
@@ -135,7 +134,6 @@ export declare const RunCoreSchema: Schema.Struct<{
|
|
|
135
134
|
export declare const RecordCoreSchema: Schema.filter<Schema.Struct<{
|
|
136
135
|
record: Schema.Struct<{
|
|
137
136
|
format: Schema.Schema<import("../model/identifiers.js").RecordFormat, "niceeval.record", never>;
|
|
138
|
-
schemaVersion: Schema.Schema<2, 2, never>;
|
|
139
137
|
recordId: Schema.Schema<import("../model/identifiers.js").RecordId, string, never>;
|
|
140
138
|
}>;
|
|
141
139
|
runs: Schema.Array$<Schema.Struct<{
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RecordFormatSchema = exports.
|
|
3
|
+
exports.RecordFormatSchema = exports.RecordFormatIdSchema = exports.RecordAttachmentSchemaIdSchema = exports.RecordAttachmentNameSchema = exports.UtcMillisSchema = exports.CanonicalProjectRelativePathSchema = exports.ArtifactIdSchema = exports.FileChangeIdSchema = exports.SourceItemIdSchema = exports.Sha256DigestSchema = exports.ExecutionIdentityDigestSchema = exports.EvalIdSchema = exports.ExperimentIdSchema = exports.AttemptIdSchema = exports.SlotIdSchema = exports.RunIdSchema = exports.RecordIdSchema = void 0;
|
|
4
4
|
const effect_1 = require("effect");
|
|
5
5
|
const identifiers_ts_1 = require("../model/identifiers.cjs");
|
|
6
6
|
const PortableSegmentTextSchema = effect_1.Schema.String.pipe(effect_1.Schema.filter(identifiers_ts_1.isPortableSegment, {
|
|
@@ -46,8 +46,7 @@ exports.RecordAttachmentSchemaIdSchema = effect_1.Schema.String.pipe(effect_1.Sc
|
|
|
46
46
|
}), effect_1.Schema.brand(identifiers_ts_1.RECORD_ATTACHMENT_SCHEMA_ID_BRAND));
|
|
47
47
|
exports.RecordFormatIdSchema = effect_1.Schema.String.pipe(effect_1.Schema.filter(identifiers_ts_1.isRecordFormatId, {
|
|
48
48
|
identifier: "RecordFormatId",
|
|
49
|
-
description: "a niceeval.record
|
|
49
|
+
description: "a fixed niceeval.record format identity",
|
|
50
50
|
}), effect_1.Schema.brand(identifiers_ts_1.RECORD_FORMAT_ID_BRAND));
|
|
51
|
-
exports.RecordSchemaVersionSchema = effect_1.Schema.Literal(identifiers_ts_1.RECORD_SCHEMA_VERSION);
|
|
52
51
|
exports.RecordFormatSchema = effect_1.Schema.Literal(identifiers_ts_1.RECORD_FORMAT).pipe(effect_1.Schema.brand(identifiers_ts_1.RECORD_FORMAT_ID_BRAND));
|
|
53
52
|
//# sourceMappingURL=identifiers.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identifiers.js","sourceRoot":"","sources":["identifiers.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAChC,
|
|
1
|
+
{"version":3,"file":"identifiers.js","sourceRoot":"","sources":["identifiers.ts"],"names":[],"mappings":"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","sourcesContent":["import { Schema } from \"effect\";\nimport { ATTEMPT_ID_BRAND, ARTIFACT_ID_BRAND, CANONICAL_PROJECT_RELATIVE_PATH_BRAND, EVAL_ID_BRAND, EXECUTION_IDENTITY_DIGEST_BRAND, EXPERIMENT_ID_BRAND, FILE_CHANGE_ID_BRAND, isPortableSegment, isCanonicalProjectRelativePath, isRecordDomainIdentity, isRecordAttachmentName, isRecordAttachmentSchemaId, isRecordFormatId, isSha256Digest, isUtcMillis, RECORD_ATTACHMENT_NAME_BRAND, RECORD_ATTACHMENT_SCHEMA_ID_BRAND, RECORD_FORMAT, RECORD_FORMAT_ID_BRAND, RECORD_ID_BRAND, RUN_ID_BRAND, SHA256_DIGEST_BRAND, SLOT_ID_BRAND, SOURCE_ITEM_ID_BRAND, UTC_MILLIS_BRAND, type AttemptId, type ArtifactId, type CanonicalProjectRelativePath, type EvalId, type ExecutionIdentityDigest, type ExperimentId, type FileChangeId, type RecordAttachmentName, type RecordAttachmentSchemaId, type RecordFormat, type RecordFormatId, type RecordId, type RunId, type Sha256Digest, type SlotId, type SourceItemId, type UtcMillis, } from \"../model/identifiers.ts\";\nconst PortableSegmentTextSchema = Schema.String.pipe(Schema.filter(isPortableSegment, {\n identifier: \"RecordPortableSegment\",\n description: \"an ASCII portable file-name segment without path separators or reserved device names\",\n}));\nexport const RecordIdSchema: Schema.Schema<RecordId, string> = PortableSegmentTextSchema.pipe(Schema.brand(RECORD_ID_BRAND));\nexport const RunIdSchema: Schema.Schema<RunId, string> = PortableSegmentTextSchema.pipe(Schema.brand(RUN_ID_BRAND));\nexport const SlotIdSchema: Schema.Schema<SlotId, string> = PortableSegmentTextSchema.pipe(Schema.brand(SLOT_ID_BRAND));\nexport const AttemptIdSchema: Schema.Schema<AttemptId, string> = PortableSegmentTextSchema.pipe(Schema.brand(ATTEMPT_ID_BRAND));\nconst RecordDomainIdentitySchema = Schema.String.pipe(Schema.filter(isRecordDomainIdentity, {\n identifier: \"RecordDomainIdentity\",\n description: \"a bounded durable identity without control characters\",\n}));\nexport const ExperimentIdSchema: Schema.Schema<ExperimentId, string> = RecordDomainIdentitySchema.pipe(Schema.brand(EXPERIMENT_ID_BRAND));\nexport const EvalIdSchema: Schema.Schema<EvalId, string> = RecordDomainIdentitySchema.pipe(Schema.brand(EVAL_ID_BRAND));\nexport const ExecutionIdentityDigestSchema: Schema.Schema<ExecutionIdentityDigest, string> = Schema.String.pipe(Schema.filter(isSha256Digest, {\n identifier: \"ExecutionIdentityDigest\",\n description: \"a lowercase hexadecimal SHA-256 execution identity digest\",\n}), Schema.brand(EXECUTION_IDENTITY_DIGEST_BRAND));\nexport const Sha256DigestSchema: Schema.Schema<Sha256Digest, string> = Schema.String.pipe(Schema.filter(isSha256Digest, {\n identifier: \"Sha256Digest\",\n description: \"a lowercase hexadecimal SHA-256 digest\",\n}), Schema.brand(SHA256_DIGEST_BRAND));\nexport const SourceItemIdSchema: Schema.Schema<SourceItemId, string> = PortableSegmentTextSchema.pipe(Schema.brand(SOURCE_ITEM_ID_BRAND));\nexport const FileChangeIdSchema: Schema.Schema<FileChangeId, string> = PortableSegmentTextSchema.pipe(Schema.brand(FILE_CHANGE_ID_BRAND));\nexport const ArtifactIdSchema: Schema.Schema<ArtifactId, string> = PortableSegmentTextSchema.pipe(Schema.brand(ARTIFACT_ID_BRAND));\nexport const CanonicalProjectRelativePathSchema: Schema.Schema<CanonicalProjectRelativePath, string> = Schema.String.pipe(Schema.filter(isCanonicalProjectRelativePath, {\n identifier: \"CanonicalProjectRelativePath\",\n description: \"a slash-separated project-relative path without dot segments\",\n}), Schema.brand(CANONICAL_PROJECT_RELATIVE_PATH_BRAND));\nexport const UtcMillisSchema: Schema.Schema<UtcMillis, number> = Schema.Number.pipe(Schema.filter(isUtcMillis, {\n identifier: \"UtcMillis\",\n description: \"a non-negative JSON-safe Unix-epoch millisecond value\",\n}), Schema.brand(UTC_MILLIS_BRAND));\nexport const RecordAttachmentNameSchema: Schema.Schema<RecordAttachmentName, string> = Schema.String.pipe(Schema.filter(isRecordAttachmentName, {\n identifier: \"RecordAttachmentName\",\n description: \"a lowercase reverse-domain portable Attachment name\",\n}), Schema.brand(RECORD_ATTACHMENT_NAME_BRAND));\nexport const RecordAttachmentSchemaIdSchema: Schema.Schema<RecordAttachmentSchemaId, string> = Schema.String.pipe(Schema.filter(isRecordAttachmentSchemaId, {\n identifier: \"RecordAttachmentSchemaId\",\n description: \"a RecordAttachment name followed by /vN\",\n}), Schema.brand(RECORD_ATTACHMENT_SCHEMA_ID_BRAND));\nexport const RecordFormatIdSchema: Schema.Schema<RecordFormatId, string> = Schema.String.pipe(Schema.filter(isRecordFormatId, {\n identifier: \"RecordFormatId\",\n description: \"a fixed niceeval.record format identity\",\n}), Schema.brand(RECORD_FORMAT_ID_BRAND));\nexport const RecordFormatSchema: Schema.Schema<RecordFormat, typeof RECORD_FORMAT> = Schema.Literal(RECORD_FORMAT).pipe(Schema.brand(RECORD_FORMAT_ID_BRAND));\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Schema } from "effect";
|
|
2
|
-
import { RECORD_FORMAT,
|
|
2
|
+
import { RECORD_FORMAT, type AttemptId, type ArtifactId, type CanonicalProjectRelativePath, type EvalId, type ExecutionIdentityDigest, type ExperimentId, type FileChangeId, type RecordAttachmentName, type RecordAttachmentSchemaId, type RecordFormat, type RecordFormatId, type RecordId, type RunId, type Sha256Digest, type SlotId, type SourceItemId, type UtcMillis } from "../model/identifiers.cjs";
|
|
3
3
|
export declare const RecordIdSchema: Schema.Schema<RecordId, string>;
|
|
4
4
|
export declare const RunIdSchema: Schema.Schema<RunId, string>;
|
|
5
5
|
export declare const SlotIdSchema: Schema.Schema<SlotId, string>;
|
|
@@ -16,5 +16,4 @@ export declare const UtcMillisSchema: Schema.Schema<UtcMillis, number>;
|
|
|
16
16
|
export declare const RecordAttachmentNameSchema: Schema.Schema<RecordAttachmentName, string>;
|
|
17
17
|
export declare const RecordAttachmentSchemaIdSchema: Schema.Schema<RecordAttachmentSchemaId, string>;
|
|
18
18
|
export declare const RecordFormatIdSchema: Schema.Schema<RecordFormatId, string>;
|
|
19
|
-
export declare const RecordSchemaVersionSchema: Schema.Schema<RecordSchemaVersion, typeof RECORD_SCHEMA_VERSION>;
|
|
20
19
|
export declare const RecordFormatSchema: Schema.Schema<RecordFormat, typeof RECORD_FORMAT>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Schema } from "effect";
|
|
2
|
-
import { RECORD_FORMAT,
|
|
2
|
+
import { RECORD_FORMAT, type AttemptId, type ArtifactId, type CanonicalProjectRelativePath, type EvalId, type ExecutionIdentityDigest, type ExperimentId, type FileChangeId, type RecordAttachmentName, type RecordAttachmentSchemaId, type RecordFormat, type RecordFormatId, type RecordId, type RunId, type Sha256Digest, type SlotId, type SourceItemId, type UtcMillis } from "../model/identifiers.mjs";
|
|
3
3
|
export declare const RecordIdSchema: Schema.Schema<RecordId, string>;
|
|
4
4
|
export declare const RunIdSchema: Schema.Schema<RunId, string>;
|
|
5
5
|
export declare const SlotIdSchema: Schema.Schema<SlotId, string>;
|
|
@@ -16,5 +16,4 @@ export declare const UtcMillisSchema: Schema.Schema<UtcMillis, number>;
|
|
|
16
16
|
export declare const RecordAttachmentNameSchema: Schema.Schema<RecordAttachmentName, string>;
|
|
17
17
|
export declare const RecordAttachmentSchemaIdSchema: Schema.Schema<RecordAttachmentSchemaId, string>;
|
|
18
18
|
export declare const RecordFormatIdSchema: Schema.Schema<RecordFormatId, string>;
|
|
19
|
-
export declare const RecordSchemaVersionSchema: Schema.Schema<RecordSchemaVersion, typeof RECORD_SCHEMA_VERSION>;
|
|
20
19
|
export declare const RecordFormatSchema: Schema.Schema<RecordFormat, typeof RECORD_FORMAT>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Schema } from "effect";
|
|
2
|
-
import { RECORD_FORMAT,
|
|
2
|
+
import { RECORD_FORMAT, type AttemptId, type ArtifactId, type CanonicalProjectRelativePath, type EvalId, type ExecutionIdentityDigest, type ExperimentId, type FileChangeId, type RecordAttachmentName, type RecordAttachmentSchemaId, type RecordFormat, type RecordFormatId, type RecordId, type RunId, type Sha256Digest, type SlotId, type SourceItemId, type UtcMillis } from "../model/identifiers.js";
|
|
3
3
|
export declare const RecordIdSchema: Schema.Schema<RecordId, string>;
|
|
4
4
|
export declare const RunIdSchema: Schema.Schema<RunId, string>;
|
|
5
5
|
export declare const SlotIdSchema: Schema.Schema<SlotId, string>;
|
|
@@ -16,5 +16,4 @@ export declare const UtcMillisSchema: Schema.Schema<UtcMillis, number>;
|
|
|
16
16
|
export declare const RecordAttachmentNameSchema: Schema.Schema<RecordAttachmentName, string>;
|
|
17
17
|
export declare const RecordAttachmentSchemaIdSchema: Schema.Schema<RecordAttachmentSchemaId, string>;
|
|
18
18
|
export declare const RecordFormatIdSchema: Schema.Schema<RecordFormatId, string>;
|
|
19
|
-
export declare const RecordSchemaVersionSchema: Schema.Schema<RecordSchemaVersion, typeof RECORD_SCHEMA_VERSION>;
|
|
20
19
|
export declare const RecordFormatSchema: Schema.Schema<RecordFormat, typeof RECORD_FORMAT>;
|
|
@@ -25,16 +25,14 @@ const __niceevalExport10 = __niceevalCanonical["RecordFormatSchema"];
|
|
|
25
25
|
export { __niceevalExport10 as RecordFormatSchema };
|
|
26
26
|
const __niceevalExport11 = __niceevalCanonical["RecordIdSchema"];
|
|
27
27
|
export { __niceevalExport11 as RecordIdSchema };
|
|
28
|
-
const __niceevalExport12 = __niceevalCanonical["
|
|
29
|
-
export { __niceevalExport12 as
|
|
30
|
-
const __niceevalExport13 = __niceevalCanonical["
|
|
31
|
-
export { __niceevalExport13 as
|
|
32
|
-
const __niceevalExport14 = __niceevalCanonical["
|
|
33
|
-
export { __niceevalExport14 as
|
|
34
|
-
const __niceevalExport15 = __niceevalCanonical["
|
|
35
|
-
export { __niceevalExport15 as
|
|
36
|
-
const __niceevalExport16 = __niceevalCanonical["
|
|
37
|
-
export { __niceevalExport16 as
|
|
38
|
-
const __niceevalExport17 = __niceevalCanonical["UtcMillisSchema"];
|
|
39
|
-
export { __niceevalExport17 as UtcMillisSchema };
|
|
28
|
+
const __niceevalExport12 = __niceevalCanonical["RunIdSchema"];
|
|
29
|
+
export { __niceevalExport12 as RunIdSchema };
|
|
30
|
+
const __niceevalExport13 = __niceevalCanonical["Sha256DigestSchema"];
|
|
31
|
+
export { __niceevalExport13 as Sha256DigestSchema };
|
|
32
|
+
const __niceevalExport14 = __niceevalCanonical["SlotIdSchema"];
|
|
33
|
+
export { __niceevalExport14 as SlotIdSchema };
|
|
34
|
+
const __niceevalExport15 = __niceevalCanonical["SourceItemIdSchema"];
|
|
35
|
+
export { __niceevalExport15 as SourceItemIdSchema };
|
|
36
|
+
const __niceevalExport16 = __niceevalCanonical["UtcMillisSchema"];
|
|
37
|
+
export { __niceevalExport16 as UtcMillisSchema };
|
|
40
38
|
//# sourceMappingURL=identifiers.js.map
|