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
|
@@ -93,7 +93,7 @@ function executeReportSite(input) {
|
|
|
93
93
|
request: { kind: "page", pageId: definition.id },
|
|
94
94
|
capturePage: (capture) => capturedProjectionCosts(capture, definition.path, definition.id),
|
|
95
95
|
});
|
|
96
|
-
yield* addSitePage(pages, routeOwners, page, definition.navigation);
|
|
96
|
+
yield* addSitePage(pages, routeOwners, page, definition.navigation, "page");
|
|
97
97
|
yield* registerProjectionCosts(pricingProfile, projectionCosts, pageCosts);
|
|
98
98
|
siteProblems.push(...analysisProblems(issues, page.target.pageId));
|
|
99
99
|
continue;
|
|
@@ -129,7 +129,7 @@ function executeReportSite(input) {
|
|
|
129
129
|
},
|
|
130
130
|
capturePage: (capture) => capturedProjectionCosts(capture, route, definition.id),
|
|
131
131
|
});
|
|
132
|
-
yield* addSitePage(pages, routeOwners, page, false, definition.
|
|
132
|
+
yield* addSitePage(pages, routeOwners, page, false, definition.presentation);
|
|
133
133
|
yield* registerProjectionCosts(pricingProfile, projectionCosts, pageCosts);
|
|
134
134
|
siteProblems.push(...analysisProblems(issues, page.target.pageId));
|
|
135
135
|
yield* checkBuildBudgets(input.budget);
|
|
@@ -317,7 +317,7 @@ function invokeAuthor(pageId, phase, capture, callback) {
|
|
|
317
317
|
catch: (cause) => pageFailure(pageId, phase, boundedReason(cause)),
|
|
318
318
|
});
|
|
319
319
|
}
|
|
320
|
-
function addSitePage(pages, routeOwners, page, navigation,
|
|
320
|
+
function addSitePage(pages, routeOwners, page, navigation, presentation) {
|
|
321
321
|
const owner = routeOwners.get(page.target.route);
|
|
322
322
|
if (owner !== undefined) {
|
|
323
323
|
return effect_1.Effect.fail(Object.freeze({
|
|
@@ -330,7 +330,7 @@ function addSitePage(pages, routeOwners, page, navigation, role) {
|
|
|
330
330
|
return effect_1.Effect.fail((0, model_ts_1.reportBuildBudgetExceeded)("pages", model_ts_1.REPORT_PAGES_MAX, pages.length + 1));
|
|
331
331
|
}
|
|
332
332
|
routeOwners.set(page.target.route, page.target.pageId);
|
|
333
|
-
pages.push(Object.freeze({ page, navigation,
|
|
333
|
+
pages.push(Object.freeze({ page, navigation, presentation }));
|
|
334
334
|
return effect_1.Effect.void;
|
|
335
335
|
}
|
|
336
336
|
/** Starts the budget before Record selection opens the fixed Sample. */
|
|
@@ -403,34 +403,24 @@ function routeForTarget(pages, target) {
|
|
|
403
403
|
return undefined;
|
|
404
404
|
}
|
|
405
405
|
}
|
|
406
|
-
function hrefForTarget(pages,
|
|
407
|
-
const source = (0, paths_ts_1.staticPathForRoute)(sourceRoute).posix;
|
|
406
|
+
function hrefForTarget(pages, _sourceRoute, target) {
|
|
408
407
|
if (target.page === primitives_tsx_1.DOWNLOAD_TARGET_PAGE) {
|
|
409
408
|
const path = isJsonRecord(target.params) ? target.params.path : undefined;
|
|
410
409
|
if (typeof path !== "string" || (0, paths_ts_1.validateDownloadPath)(path) !== undefined)
|
|
411
410
|
return undefined;
|
|
412
|
-
return
|
|
411
|
+
return (0, paths_ts_1.staticPathForDownload)(path).posix;
|
|
413
412
|
}
|
|
414
413
|
const route = routeForTarget(pages, target);
|
|
415
|
-
|
|
414
|
+
if (route === undefined)
|
|
415
|
+
return undefined;
|
|
416
|
+
const page = pages.find((candidate) => candidate.id === target.page);
|
|
417
|
+
if (page === undefined)
|
|
418
|
+
return undefined;
|
|
419
|
+
return `#${route}`;
|
|
416
420
|
}
|
|
417
421
|
function isJsonRecord(value) {
|
|
418
422
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
419
423
|
}
|
|
420
|
-
function relativeHref(sourceFile, targetFile) {
|
|
421
|
-
const sourceSegments = sourceFile.split("/");
|
|
422
|
-
sourceSegments.pop();
|
|
423
|
-
const targetSegments = targetFile.split("/");
|
|
424
|
-
let common = 0;
|
|
425
|
-
while (common < sourceSegments.length && common < targetSegments.length &&
|
|
426
|
-
sourceSegments[common] === targetSegments[common])
|
|
427
|
-
common += 1;
|
|
428
|
-
const relative = [
|
|
429
|
-
...sourceSegments.slice(common).map(() => ".."),
|
|
430
|
-
...targetSegments.slice(common),
|
|
431
|
-
].join("/");
|
|
432
|
-
return relative || "./";
|
|
433
|
-
}
|
|
434
424
|
function commandForTarget(pages, target) {
|
|
435
425
|
const route = routeForTarget(pages, target);
|
|
436
426
|
if (route === undefined)
|
|
@@ -466,6 +456,7 @@ function reportDefinitionIdentity(report) {
|
|
|
466
456
|
path: page.path,
|
|
467
457
|
title: page.title,
|
|
468
458
|
navigation: page.navigation,
|
|
459
|
+
presentation: page.presentation,
|
|
469
460
|
parameterized: page.params !== undefined,
|
|
470
461
|
load: page.load?.toString() ?? null,
|
|
471
462
|
render: page.render.toString(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.js","sourceRoot":"","sources":["execute.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport { readFile } from \"node:fs/promises\";\nimport { Effect } from \"effect\";\nimport type * as Scope from \"effect/Scope\";\nimport { createElement, Fragment as ReactFragment, type ReactNode } from \"react\";\nimport { renderToStaticMarkup } from \"react-dom/server\";\nimport { attemptEvidenceView, query, type AnalysisIssue, type AnalysisRequestError, type JsonValue, type Sample, type SampleClosedError, } from \"../../analysis/index.ts\";\nimport { captureAnalysisIssues, type AnalysisIssueCapture, } from \"../../sample/capability.ts\";\nimport { buildReportMeta, resolveReportTitle, type PageContext, type ReportDefinition, type ReportTarget, } from \"../definition/report.ts\";\nimport { COMPONENT_RAW_CHILDREN, Fragment, collectPageDimensions, createTextContext, renderNodeToText, resolveReportTree, runWithWebContext, validateReportTree, withPageDimensions, type ReportElement, type ReportNode, type WebContext, } from \"../definition/tree.ts\";\nimport { collectDownloads } from \"../definition/primitives/downloads.ts\";\nimport { DOWNLOAD_TARGET_PAGE } from \"../definition/primitives.tsx\";\nimport { REPORT_BUILD_RSS_BYTES_MAX, REPORT_BUILD_TIME_MS_MAX, REPORT_DOCUMENT_DEPTH_MAX, REPORT_DOCUMENT_NODES_MAX, REPORT_PAGES_MAX, reportBuildBudgetExceeded, type ReportBuildBudgetExceeded, } from \"../execution/model.ts\";\nimport type { ReportProblem } from \"../execution/machine.ts\";\nimport { routeWithParameterKey, staticPathForDownload, staticPathForRoute, validateDownloadPath, validateParameterKey, validateReportRoute, } from \"../execution/paths.ts\";\nimport { collectRendererAssetDeclarations, materializeRendererAssets, } from \"../extension/assets.ts\";\nimport { resolveLocalizedText } from \"../model/locale.ts\";\nimport type { PanelMode } from \"../model/panel.ts\";\nimport { type ResolvedPage, type ResolvedPageAssetOutput, type ResolvedPageClosureError, type ResolvedPageOutput, } from \"../runtime/resolved-page.ts\";\nimport type { ThemeDefinition } from \"../theme.ts\";\nimport { executeShowTarget, type ShowTargetError, type ShowTargetRequest, } from \"./show-target.ts\";\nimport { isReportTargetRouteInvalid, showTargetRequestForRoute, type ReportTargetRouteInvalid, } from \"./target-route.ts\";\nimport { buildReportProjections, closePricingProfileJson, reportProjectionFailure, type ReportProjectionBuildFailure, type ReportProjectionCostInput, type ReportProjections, } from \"../execution/machine.ts\";\nconst TEXT_WIDTH = 80;\nconst WEB_LOCALES = [\"en\", \"zh-CN\"] as const;\nexport interface ReportPageExecutionFailed {\n readonly code: \"report-page-execution-failed\";\n readonly pageId: string;\n readonly phase: \"enumerate\" | \"params-encode\" | \"resolve\" | \"text\" | \"web\" | \"assets\";\n readonly reason: string;\n}\nexport interface ReportSiteRouteConflict {\n readonly code: \"report-site-route-conflict\";\n readonly route: string;\n readonly pageIds: readonly [\n string,\n string\n ];\n}\nexport type ReportExecutionError = SampleClosedError | AnalysisRequestError | ShowTargetError | ResolvedPageClosureError | ReportTargetRouteInvalid | ReportPageExecutionFailed | ReportSiteRouteConflict | ReportProjectionBuildFailure | ReportBuildBudgetExceeded;\nexport interface ClosedTargetExecution {\n readonly page: ResolvedPage;\n readonly projections: ReportProjections;\n readonly problems: readonly ReportProblem[];\n}\nexport interface ClosedSitePage {\n readonly page: ResolvedPage;\n readonly navigation: boolean;\n readonly role?: {\n readonly kind: \"experiment-group\";\n readonly groupKind: \"named\" | \"singleton\";\n };\n}\n/** Host-private complete page closure used only while forming a revision. */\nexport interface ClosedReportSite {\n /** Monotonic-enough wall clock anchor for the full Sample-open + byte build budget. */\n readonly startedAtMs: number;\n /** Process RSS immediately before the Record-backed Sample is opened. */\n readonly baselineRssBytes: number;\n readonly sampleIdentity: string;\n readonly reportIdentity: string;\n readonly title: import(\"../model/locale.ts\").LocalizedText;\n readonly theme?: ThemeDefinition;\n readonly pages: readonly ClosedSitePage[];\n readonly projections: ReportProjections;\n readonly problems: readonly ReportProblem[];\n}\n/**\n * Executes exactly one selected route. It intentionally delegates selection to\n * show-target.ts, whose parameterized branch never calls enumerate().\n */\nexport function executeReportTarget(input: {\n readonly sample: Sample;\n readonly report: ReportDefinition;\n readonly route?: string;\n readonly textProjection?: {\n readonly width: number;\n readonly panelMode: PanelMode;\n };\n}): Effect.Effect<ClosedTargetExecution, ReportExecutionError, Scope.Scope> {\n const request = showTargetRequestForRoute(input.report, input.route);\n if (isReportTargetRouteInvalid(request))\n return Effect.fail(request);\n return Effect.gen(function* () {\n const capture = yield* captureAnalysisIssues(input.sample);\n return yield* Effect.ensuring(Effect.flatMap(\n // show keeps the exact author declaration and never enumerates an\n // unselected parameterized Page.\n executeTarget({\n ...input,\n pages: input.report.pages,\n request,\n capture,\n }), (page) => {\n const costs = capturedProjectionCosts(capture, page.target.route, page.target.pageId);\n const pricingProfile = reportPricingProfileJson(input.report);\n const failure = reportProjectionFailure({ pricingProfile, costs });\n if (failure !== undefined)\n return Effect.fail(failure);\n return Effect.succeed(Object.freeze({\n page,\n // Every cost entry captured during this one Page execution binds\n // to that route/page and retains Analysis's measure/row/profile.\n projections: buildReportProjections({\n pricingProfile,\n costs,\n }),\n problems: analysisProblems(capture.issues(), page.target.pageId),\n }));\n }), Effect.sync(() => capture.close()));\n });\n}\n/** One normalized Page declaration owned by the selected Report. */\ntype ReportPageDefinition = ReportDefinition[\"pages\"][number];\n/** Enumerates and closes every page instance exactly once for view/static. */\nexport function executeReportSite(input: {\n readonly sample: Sample;\n readonly report: ReportDefinition;\n readonly budget: ReportBuildBudgetAnchor;\n}): Effect.Effect<ClosedReportSite, ReportExecutionError, Scope.Scope> {\n return Effect.gen(function* () {\n const { startedAtMs, baselineRssBytes } = input.budget;\n // The outer capture covers enumerate()/params encode phases for generic\n // Analysis issues only. Cost projections belong only to actual Page\n // executions, where the Host can bind a real route/pageId.\n const outerCapture = yield* captureAnalysisIssues(input.sample);\n return yield* Effect.ensuring(Effect.gen(function* () {\n const pages: ClosedSitePage[] = [];\n const routeOwners = new Map<string, string>();\n const siteProblems: ReportProblem[] = [];\n const projectionCosts: ReportProjectionCostInput[] = [];\n const pricingProfile = reportPricingProfileJson(input.report);\n // The Report declaration is the only page owner. A custom Report that\n // wants official drill-down Pages composes those exported Pages\n // explicitly; the Host never merges another Report by id.\n const definitions = input.report.pages;\n const plainCount = definitions.filter((page) => page.params === undefined).length;\n if (plainCount > REPORT_PAGES_MAX) {\n return yield* Effect.fail(reportBuildBudgetExceeded(\"pages\", REPORT_PAGES_MAX, plainCount));\n }\n for (const definition of definitions) {\n yield* checkBuildBudgets(input.budget);\n if (definition.params === undefined) {\n const { page, projectionCosts: pageCosts, issues } = yield* executePageWithCapture({\n ...input,\n pages: definitions,\n request: { kind: \"page\", pageId: definition.id },\n capturePage: (capture) => capturedProjectionCosts(capture, definition.path, definition.id),\n });\n yield* addSitePage(pages, routeOwners, page, definition.navigation);\n yield* registerProjectionCosts(pricingProfile, projectionCosts, pageCosts);\n siteProblems.push(...analysisProblems(issues, page.target.pageId));\n continue;\n }\n const values = yield* invokeAuthor(definition.id, \"enumerate\", outerCapture, () => definition.params.enumerate(input.sample));\n if (values === null || values === undefined || typeof (values as Iterable<JsonValue>)[Symbol.iterator] !== \"function\") {\n return yield* Effect.fail(pageFailure(definition.id, \"enumerate\", \"params.enumerate() must return a finite Iterable\"));\n }\n for (const params of values as Iterable<JsonValue>) {\n if (pages.length >= REPORT_PAGES_MAX) {\n return yield* Effect.fail(reportBuildBudgetExceeded(\"pages\", REPORT_PAGES_MAX, pages.length + 1));\n }\n const key = yield* invokeAuthor(definition.id, \"params-encode\", outerCapture, () => definition.params.encode(params));\n const invalidKey = typeof key === \"string\" ? validateParameterKey(key) : undefined;\n if (typeof key !== \"string\" || invalidKey !== undefined) {\n return yield* Effect.fail(pageFailure(definition.id, \"params-encode\", invalidKey?.reason ?? \"params.encode() must return a canonical parameter key\"));\n }\n const route = routeWithParameterKey(definition.path, key);\n const routeIssue = validateReportRoute(route);\n if (routeIssue !== undefined) {\n return yield* Effect.fail(pageFailure(definition.id, \"params-encode\", routeIssue.reason));\n }\n // executeShowTarget supplies the required decode -> encode\n // canonical round trip, but does not enumerate this page again.\n const { page, projectionCosts: pageCosts, issues } = yield* executePageWithCapture({\n ...input,\n pages: definitions,\n request: {\n kind: \"parameterized-page\",\n pageId: definition.id,\n key,\n route,\n },\n capturePage: (capture) => capturedProjectionCosts(capture, route, definition.id),\n });\n yield* addSitePage(pages, routeOwners, page, false, definition.role);\n yield* registerProjectionCosts(pricingProfile, projectionCosts, pageCosts);\n siteProblems.push(...analysisProblems(issues, page.target.pageId));\n yield* checkBuildBudgets(input.budget);\n }\n }\n siteProblems.push(...analysisProblems(outerCapture.issues()));\n return Object.freeze({\n startedAtMs,\n baselineRssBytes,\n sampleIdentity: input.sample.snapshot.identity.id,\n reportIdentity: reportDefinitionIdentity(input.report),\n title: resolveReportTitle(input.report),\n ...(input.report.theme === undefined ? {} : { theme: input.report.theme }),\n pages: Object.freeze(pages),\n projections: buildReportProjections({\n pricingProfile,\n costs: projectionCosts,\n }),\n problems: mergeReportProblems(siteProblems),\n });\n }), Effect.sync(() => outerCapture.close()));\n });\n}\n/** One Page execution with its own capture: page, bound projection costs, and issues. */\nfunction executePageWithCapture(input: {\n readonly sample: Sample;\n readonly report: ReportDefinition;\n readonly pages: readonly ReportPageDefinition[];\n readonly request: ShowTargetRequest;\n readonly capturePage: (capture: AnalysisIssueCapture) => ReportProjectionCostInput[];\n}): Effect.Effect<{\n readonly page: ResolvedPage;\n readonly projectionCosts: readonly ReportProjectionCostInput[];\n readonly issues: readonly AnalysisIssue[];\n}, ReportExecutionError, Scope.Scope> {\n return Effect.gen(function* () {\n const capture = yield* captureAnalysisIssues(input.sample);\n return yield* Effect.ensuring(Effect.map(executeTarget({ ...input, capture }), (page) => Object.freeze({\n page,\n projectionCosts: Object.freeze(input.capturePage(capture)),\n issues: capture.issues(),\n })), Effect.sync(() => capture.close()));\n });\n}\n/**\n * Validates one Page's capture before retaining it. Route ownership makes\n * capture keys page-local, so re-closing every prior Page here would only\n * repeat canonical JSON work quadratically; the final site closure performs\n * the one whole-site canonicalization.\n */\nfunction registerProjectionCosts(pricingProfile: JsonValue | null, output: ReportProjectionCostInput[], costs: readonly ReportProjectionCostInput[]): Effect.Effect<void, ReportProjectionBuildFailure> {\n const failure = reportProjectionFailure({ pricingProfile, costs });\n if (failure !== undefined)\n return Effect.fail(failure);\n output.push(...costs);\n return Effect.void;\n}\n/**\n * Reads the cost entries an Analysis execution capture recorded and binds them\n * to one Page execution. The Host never rebuilds a projection from a\n * MetricValue.value or from the built-in show data.\n */\nfunction capturedProjectionCosts(capture: AnalysisIssueCapture, route: string, pageId: string): ReportProjectionCostInput[] {\n return capture.costEntries().map((entry) => Object.freeze({\n page: Object.freeze({ pageId, route }),\n measureId: entry.measureId,\n row: Object.freeze({ key: entry.row.key, dimensions: entry.row.dimensions }),\n profileIdentity: entry.profileIdentity,\n projection: entry.projection,\n }));\n}\n/** The closed JSON form of the Report's PricingProfile, or null without one. */\nfunction reportPricingProfileJson(report: ReportDefinition): JsonValue | null {\n return report.pricing === null ? null : closePricingProfileJson(report.pricing);\n}\n/** Merges captures without discarding the Page scope that produced each issue. */\nfunction mergeReportProblems(problems: readonly ReportProblem[]): readonly ReportProblem[] {\n const unique = new Map<string, ReportProblem>();\n for (const problem of problems) {\n const key = `${problem.code}\\u0000${problem.path.join(\"\\u0001\")}\\u0000${problem.refs.join(\"\\u0001\")}\\u0000${problem.summary ?? \"\"}`;\n if (!unique.has(key))\n unique.set(key, problem);\n }\n return Object.freeze([...unique.values()].sort((left, right) => compareUtf8(left.code, right.code) ||\n compareUtf8(left.path.join(\"\\u0001\"), right.path.join(\"\\u0001\")) ||\n compareUtf8(left.refs.join(\"\\u0001\"), right.refs.join(\"\\u0001\")) ||\n compareUtf8(left.summary ?? \"\", right.summary ?? \"\")));\n}\nfunction executeTarget(input: {\n readonly sample: Sample;\n readonly report: ReportDefinition;\n /** The target-visible Page set from the selected Report declaration. */\n readonly pages: readonly ReportPageDefinition[];\n readonly request: ShowTargetRequest;\n readonly capture: AnalysisIssueCapture;\n readonly textProjection?: {\n readonly width: number;\n readonly panelMode: PanelMode;\n };\n}): Effect.Effect<ResolvedPage, ReportExecutionError, Scope.Scope> {\n return executeShowTarget<ReportPageExecutionFailed, never>({\n definition: { pages: input.pages },\n sample: input.sample,\n request: input.request,\n evidence: (locator) => query(input.sample, {\n kind: \"domain-view\",\n view: attemptEvidenceView,\n locator,\n }),\n runAuthor: input.capture.run,\n close: (rendered, context) => closeRenderedPage({\n rendered: rendered as ReportNode,\n sample: input.sample,\n report: input.report,\n capture: input.capture,\n hrefPages: input.pages,\n page: context.page,\n route: context.target.route,\n ...(input.textProjection === undefined ? {} : { textProjection: input.textProjection }),\n }),\n });\n}\nfunction closeRenderedPage(input: {\n readonly rendered: ReportNode;\n readonly sample: Sample;\n readonly report: ReportDefinition;\n /** Keeps Analysis calls made while resolving component trees page-bound. */\n readonly capture: AnalysisIssueCapture;\n /** Link targets are resolved only against the selected Report declaration. */\n readonly hrefPages: readonly ReportPageDefinition[];\n readonly page: PageContext;\n readonly route: string;\n readonly textProjection?: {\n readonly width: number;\n readonly panelMode: PanelMode;\n };\n}): Effect.Effect<ResolvedPageOutput, ReportPageExecutionFailed> {\n return Effect.tryPromise({\n try: () => input.capture.run(async (): Promise<ResolvedPageOutput> => {\n const resolved = await resolveReportTree(input.rendered, {\n scope: input.sample,\n page: input.page,\n report: buildReportMeta(input.report),\n });\n validateReportTree(resolved);\n assertDocumentBudget(resolved, input.page.id, input.page.path);\n const requestedTextProjections = [\n { width: TEXT_WIDTH, panelMode: \"plain\" as const },\n ...(input.textProjection === undefined ||\n (input.textProjection.width === TEXT_WIDTH && input.textProjection.panelMode === \"plain\")\n ? []\n : [input.textProjection]),\n ];\n const text = WEB_LOCALES.flatMap((locale) => requestedTextProjections.map((projection) => {\n const pageDimensions = collectPageDimensions(resolved, input.report.dimensionPins, \"text\");\n const context = createTextContext({\n width: projection.width,\n locale,\n panelMode: projection.panelMode,\n pageDimensions,\n command: (target) => commandForTarget(input.hrefPages, target),\n });\n return Object.freeze({\n locale,\n width: projection.width,\n panelMode: projection.panelMode,\n text: renderNodeToText(resolved, context),\n });\n }));\n const web = WEB_LOCALES.map((locale) => {\n const pageDimensions = collectPageDimensions(resolved, input.report.dimensionPins, \"web\");\n const context = withPageDimensions<WebContext>({\n locale,\n href: (target) => hrefForTarget(input.hrefPages, input.route, target),\n dimension: () => {\n throw new Error(\"a Report web face queried an undeclared dimension\");\n },\n }, pageDimensions);\n const html = runWithWebContext(Object.freeze(context), () => renderToStaticMarkup(createElement(ReactFragment, null, resolved as ReactNode)));\n return Object.freeze({ locale, html });\n });\n const downloads = collectDownloads(resolved).map((download) => Object.freeze({\n id: download.path,\n path: download.path,\n mediaType: download.mediaType,\n bytes: download.bytes,\n }));\n const rendererAssets = await materializeRendererAssets(collectRendererAssetDeclarations(resolved), async (path) => new Uint8Array(await readFile(path)));\n const assets: ResolvedPageAssetOutput[] = [\n ...rendererAssets.styles.map((asset) => Object.freeze({\n kind: \"style\" as const,\n path: asset.path,\n mediaType: \"text/css; charset=utf-8\",\n bytes: asset.content,\n sha256: asset.hash,\n })),\n ...rendererAssets.scripts.map((asset) => Object.freeze({\n kind: \"script\" as const,\n path: asset.path,\n mediaType: \"text/javascript; charset=utf-8\",\n bytes: asset.content,\n sha256: asset.hash,\n })),\n ];\n return Object.freeze({\n title: input.page.title,\n head: input.report.head as unknown as JsonValue,\n text: Object.freeze(text),\n web: Object.freeze(web),\n downloads: Object.freeze(downloads),\n assets: Object.freeze(assets),\n });\n }),\n catch: (cause): ReportPageExecutionFailed => pageFailure(input.page.id, classifyCloseFailure(cause), boundedReason(cause)),\n });\n}\nfunction invokeAuthor<Value>(pageId: string, phase: ReportPageExecutionFailed[\"phase\"], capture: AnalysisIssueCapture, callback: () => Value | PromiseLike<Value>): Effect.Effect<Value, ReportPageExecutionFailed> {\n return Effect.tryPromise({\n try: () => new Promise<Value>((resolve) => resolve(capture.run(callback))),\n catch: (cause) => pageFailure(pageId, phase, boundedReason(cause)),\n });\n}\nfunction addSitePage(pages: ClosedSitePage[], routeOwners: Map<string, string>, page: ResolvedPage, navigation: boolean, role?: ClosedSitePage[\"role\"]): Effect.Effect<void, ReportSiteRouteConflict | ReportBuildBudgetExceeded> {\n const owner = routeOwners.get(page.target.route);\n if (owner !== undefined) {\n return Effect.fail(Object.freeze({\n code: \"report-site-route-conflict\" as const,\n route: page.target.route,\n pageIds: Object.freeze([owner, page.target.pageId]) as readonly [\n string,\n string\n ],\n }));\n }\n if (pages.length >= REPORT_PAGES_MAX) {\n return Effect.fail(reportBuildBudgetExceeded(\"pages\", REPORT_PAGES_MAX, pages.length + 1));\n }\n routeOwners.set(page.target.route, page.target.pageId);\n pages.push(Object.freeze({ page, navigation, ...(role === undefined ? {} : { role }) }));\n return Effect.void;\n}\nexport interface ReportBuildBudgetAnchor {\n readonly startedAtMs: number;\n readonly baselineRssBytes: number;\n}\n/** Starts the budget before Record selection opens the fixed Sample. */\nexport function startReportBuildBudget(): ReportBuildBudgetAnchor {\n return Object.freeze({\n startedAtMs: Date.now(),\n baselineRssBytes: process.memoryUsage().rss,\n });\n}\nfunction checkBuildBudgets(anchor: ReportBuildBudgetAnchor): Effect.Effect<void, ReportBuildBudgetExceeded> {\n const elapsed = Date.now() - anchor.startedAtMs;\n if (elapsed > REPORT_BUILD_TIME_MS_MAX) {\n return Effect.fail(reportBuildBudgetExceeded(\"build-time\", REPORT_BUILD_TIME_MS_MAX, elapsed));\n }\n const rssGrowth = Math.max(0, process.memoryUsage().rss - anchor.baselineRssBytes);\n if (rssGrowth > REPORT_BUILD_RSS_BYTES_MAX) {\n return Effect.fail(reportBuildBudgetExceeded(\"build-rss\", REPORT_BUILD_RSS_BYTES_MAX, rssGrowth));\n }\n return Effect.void;\n}\nfunction assertDocumentBudget(node: ReportNode, pageId: string, route: string): void {\n const observed = countDocument(node, 0);\n if (observed.nodes > REPORT_DOCUMENT_NODES_MAX) {\n throw reportBuildBudgetExceeded(\"document-nodes\", REPORT_DOCUMENT_NODES_MAX, observed.nodes, { pageId, route });\n }\n if (observed.depth > REPORT_DOCUMENT_DEPTH_MAX) {\n throw reportBuildBudgetExceeded(\"document-depth\", REPORT_DOCUMENT_DEPTH_MAX, observed.depth, { pageId, route });\n }\n}\nfunction countDocument(node: ReportNode, depth: number): {\n readonly nodes: number;\n readonly depth: number;\n} {\n if (node === null || node === undefined || typeof node === \"boolean\")\n return { nodes: 0, depth };\n if (Array.isArray(node)) {\n return node.reduce((total, child) => {\n const counted = countDocument(child, depth);\n return { nodes: total.nodes + counted.nodes, depth: Math.max(total.depth, counted.depth) };\n }, { nodes: 0, depth });\n }\n if (!isElement(node))\n return { nodes: 1, depth: depth + 1 };\n const currentDepth = depth + 1;\n if (node.type !== Fragment && typeof node.type === \"function\" &&\n (node.type as unknown as Record<symbol, unknown>)[COMPONENT_RAW_CHILDREN] === true) {\n return { nodes: 1, depth: currentDepth };\n }\n const child = countDocument(node.props.children as ReportNode, currentDepth);\n return { nodes: child.nodes + 1, depth: Math.max(currentDepth, child.depth) };\n}\nfunction isElement(value: unknown): value is ReportElement {\n if (typeof value !== \"object\" || value === null || Array.isArray(value))\n return false;\n const candidate = value as Partial<ReportElement>;\n return typeof candidate.$$typeof === \"symbol\" &&\n (candidate.$$typeof === Symbol.for(\"react.element\") || candidate.$$typeof === Symbol.for(\"react.transitional.element\")) &&\n typeof candidate.props === \"object\" && candidate.props !== null;\n}\nfunction routeForTarget(pages: readonly ReportPageDefinition[], target: ReportTarget): string | undefined {\n const page = pages.find((candidate) => candidate.id === target.page);\n if (page === undefined)\n return undefined;\n if (page.params === undefined)\n return target.params === undefined ? page.path : undefined;\n if (target.params === undefined)\n return undefined;\n try {\n const key = page.params.encode(target.params);\n return validateParameterKey(key) === undefined ? routeWithParameterKey(page.path, key) : undefined;\n }\n catch {\n return undefined;\n }\n}\nfunction hrefForTarget(pages: readonly ReportPageDefinition[], sourceRoute: string, target: ReportTarget): string | undefined {\n const source = staticPathForRoute(sourceRoute).posix;\n if (target.page === DOWNLOAD_TARGET_PAGE) {\n const path = isJsonRecord(target.params) ? target.params.path : undefined;\n if (typeof path !== \"string\" || validateDownloadPath(path) !== undefined)\n return undefined;\n return relativeHref(source, staticPathForDownload(path).posix);\n }\n const route = routeForTarget(pages, target);\n return route === undefined ? undefined : relativeHref(source, staticPathForRoute(route).posix);\n}\nfunction isJsonRecord(value: JsonValue | undefined): value is Readonly<Record<string, JsonValue>> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction relativeHref(sourceFile: string, targetFile: string): string {\n const sourceSegments = sourceFile.split(\"/\");\n sourceSegments.pop();\n const targetSegments = targetFile.split(\"/\");\n let common = 0;\n while (common < sourceSegments.length && common < targetSegments.length &&\n sourceSegments[common] === targetSegments[common])\n common += 1;\n const relative = [\n ...sourceSegments.slice(common).map(() => \"..\"),\n ...targetSegments.slice(common),\n ].join(\"/\");\n return relative || \"./\";\n}\nfunction commandForTarget(pages: readonly ReportPageDefinition[], target: ReportTarget): string | undefined {\n const route = routeForTarget(pages, target);\n if (route === undefined)\n return undefined;\n const page = pages.find((candidate) => candidate.id === target.page);\n if (page?.params !== undefined && page.role?.kind === \"experiment-group\") {\n const key = route.slice(page.path.length + 1);\n return `niceeval show --experiment ${shellQuote(key)}`;\n }\n return `niceeval show --page ${shellQuote(route)}`;\n}\nfunction shellQuote(value: string): string {\n return `'${value.replaceAll(\"'\", `'\\\\''`)}'`;\n}\nfunction analysisProblems(issues: readonly AnalysisIssue[], pageId?: string): readonly ReportProblem[] {\n return Object.freeze(issues.map((issue) => Object.freeze({\n code: `analysis-${issue.code}`,\n path: Object.freeze(pageId === undefined ? [] : [\"page\", pageId]),\n refs: Object.freeze(issue.refs.map((reference) => String(reference.identity.locator)).sort(compareUtf8)),\n summary: issue.message,\n })));\n}\nexport function reportDefinitionIdentity(report: ReportDefinition): string {\n const closed = {\n title: resolveReportTitle(report),\n head: report.head,\n theme: report.theme ?? null,\n // The Analysis-computed pricing content identity joins the definition\n // identity, so a Profile change is a new Report execution.\n pricing: report.pricing === null ? null : report.pricing.contentIdentity,\n pages: report.pages.map((page) => ({\n id: page.id,\n path: page.path,\n title: page.title,\n navigation: page.navigation,\n parameterized: page.params !== undefined,\n load: page.load?.toString() ?? null,\n render: page.render.toString(),\n params: page.params === undefined\n ? null\n : {\n encode: page.params.encode.toString(),\n decode: page.params.decode.toString(),\n enumerate: page.params.enumerate.toString(),\n },\n })),\n };\n return createHash(\"sha256\").update(canonicalJson(closed)).digest(\"hex\");\n}\nfunction canonicalJson(value: unknown): string {\n if (value === null)\n return \"null\";\n if (typeof value === \"string\" || typeof value === \"boolean\")\n return JSON.stringify(value);\n if (typeof value === \"number\")\n return Number.isFinite(value) ? JSON.stringify(Object.is(value, -0) ? 0 : value) : \"null\";\n if (Array.isArray(value))\n return `[${value.map(canonicalJson).join(\",\")}]`;\n if (typeof value === \"object\") {\n return `{${Object.entries(value).filter(([, entry]) => entry !== undefined).sort(([left], [right]) => compareUtf8(left, right))\n .map(([key, entry]) => `${JSON.stringify(key)}:${canonicalJson(entry)}`).join(\",\")}}`;\n }\n return JSON.stringify(String(value));\n}\nfunction classifyCloseFailure(cause: unknown): ReportPageExecutionFailed[\"phase\"] {\n const message = boundedReason(cause).toLowerCase();\n if (message.includes(\"asset\") || message.includes(\"enoent\"))\n return \"assets\";\n if (message.includes(\"text\"))\n return \"text\";\n if (message.includes(\"web\") || message.includes(\"react\"))\n return \"web\";\n return \"resolve\";\n}\nfunction pageFailure(pageId: string, phase: ReportPageExecutionFailed[\"phase\"], reason: string): ReportPageExecutionFailed {\n return Object.freeze({ code: \"report-page-execution-failed\" as const, pageId, phase, reason });\n}\nfunction boundedReason(cause: unknown): string {\n const raw = cause instanceof Error ? cause.message : typeof cause === \"object\" && cause !== null &&\n typeof Reflect.get(cause, \"code\") === \"string\"\n ? String(Reflect.get(cause, \"code\"))\n : String(cause);\n return raw.replace(/[\\u0000-\\u001f\\u007f-\\u009f]/g, \" \").slice(0, 512).trim() || \"Report callback failed\";\n}\nfunction compareUtf8(left: string, right: string): number {\n return Buffer.compare(Buffer.from(left), Buffer.from(right));\n}\n/** Used by the site shell without re-running any author callback. */\nexport function closedPageTitle(page: ResolvedPage, locale: string): string {\n return resolveLocalizedText(page.title, locale);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"execute.js","sourceRoot":"","sources":["execute.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport { readFile } from \"node:fs/promises\";\nimport { Effect } from \"effect\";\nimport type * as Scope from \"effect/Scope\";\nimport { createElement, Fragment as ReactFragment, type ReactNode } from \"react\";\nimport { renderToStaticMarkup } from \"react-dom/server\";\nimport { attemptEvidenceView, query, type AnalysisIssue, type AnalysisRequestError, type JsonValue, type Sample, type SampleClosedError, } from \"../../analysis/index.ts\";\nimport { captureAnalysisIssues, type AnalysisIssueCapture, } from \"../../sample/capability.ts\";\nimport { buildReportMeta, resolveReportTitle, type PageContext, type ReportDefinition, type ReportTarget, } from \"../definition/report.ts\";\nimport { COMPONENT_RAW_CHILDREN, Fragment, collectPageDimensions, createTextContext, renderNodeToText, resolveReportTree, runWithWebContext, validateReportTree, withPageDimensions, type ReportElement, type ReportNode, type WebContext, } from \"../definition/tree.ts\";\nimport { collectDownloads } from \"../definition/primitives/downloads.ts\";\nimport { DOWNLOAD_TARGET_PAGE } from \"../definition/primitives.tsx\";\nimport { REPORT_BUILD_RSS_BYTES_MAX, REPORT_BUILD_TIME_MS_MAX, REPORT_DOCUMENT_DEPTH_MAX, REPORT_DOCUMENT_NODES_MAX, REPORT_PAGES_MAX, reportBuildBudgetExceeded, type ReportBuildBudgetExceeded, } from \"../execution/model.ts\";\nimport type { ReportProblem } from \"../execution/machine.ts\";\nimport { routeWithParameterKey, staticPathForDownload, validateDownloadPath, validateParameterKey, validateReportRoute, } from \"../execution/paths.ts\";\nimport { collectRendererAssetDeclarations, materializeRendererAssets, } from \"../extension/assets.ts\";\nimport { resolveLocalizedText } from \"../model/locale.ts\";\nimport type { PanelMode } from \"../model/panel.ts\";\nimport { type ResolvedPage, type ResolvedPageAssetOutput, type ResolvedPageClosureError, type ResolvedPageOutput, } from \"../runtime/resolved-page.ts\";\nimport type { ThemeDefinition } from \"../theme.ts\";\nimport { executeShowTarget, type ShowTargetError, type ShowTargetRequest, } from \"./show-target.ts\";\nimport { isReportTargetRouteInvalid, showTargetRequestForRoute, type ReportTargetRouteInvalid, } from \"./target-route.ts\";\nimport { buildReportProjections, closePricingProfileJson, reportProjectionFailure, type ReportProjectionBuildFailure, type ReportProjectionCostInput, type ReportProjections, } from \"../execution/machine.ts\";\nconst TEXT_WIDTH = 80;\nconst WEB_LOCALES = [\"en\", \"zh-CN\"] as const;\nexport interface ReportPageExecutionFailed {\n readonly code: \"report-page-execution-failed\";\n readonly pageId: string;\n readonly phase: \"enumerate\" | \"params-encode\" | \"resolve\" | \"text\" | \"web\" | \"assets\";\n readonly reason: string;\n}\nexport interface ReportSiteRouteConflict {\n readonly code: \"report-site-route-conflict\";\n readonly route: string;\n readonly pageIds: readonly [\n string,\n string\n ];\n}\nexport type ReportExecutionError = SampleClosedError | AnalysisRequestError | ShowTargetError | ResolvedPageClosureError | ReportTargetRouteInvalid | ReportPageExecutionFailed | ReportSiteRouteConflict | ReportProjectionBuildFailure | ReportBuildBudgetExceeded;\nexport interface ClosedTargetExecution {\n readonly page: ResolvedPage;\n readonly projections: ReportProjections;\n readonly problems: readonly ReportProblem[];\n}\nexport interface ClosedSitePage {\n readonly page: ResolvedPage;\n readonly navigation: boolean;\n readonly presentation: \"page\" | \"overlay\";\n}\n/** Host-private complete page closure used only while forming a revision. */\nexport interface ClosedReportSite {\n /** Monotonic-enough wall clock anchor for the full Sample-open + byte build budget. */\n readonly startedAtMs: number;\n /** Process RSS immediately before the Record-backed Sample is opened. */\n readonly baselineRssBytes: number;\n readonly sampleIdentity: string;\n readonly reportIdentity: string;\n readonly title: import(\"../model/locale.ts\").LocalizedText;\n readonly theme?: ThemeDefinition;\n readonly pages: readonly ClosedSitePage[];\n readonly projections: ReportProjections;\n readonly problems: readonly ReportProblem[];\n}\n/**\n * Executes exactly one selected route. It intentionally delegates selection to\n * show-target.ts, whose parameterized branch never calls enumerate().\n */\nexport function executeReportTarget(input: {\n readonly sample: Sample;\n readonly report: ReportDefinition;\n readonly route?: string;\n readonly textProjection?: {\n readonly width: number;\n readonly panelMode: PanelMode;\n };\n}): Effect.Effect<ClosedTargetExecution, ReportExecutionError, Scope.Scope> {\n const request = showTargetRequestForRoute(input.report, input.route);\n if (isReportTargetRouteInvalid(request))\n return Effect.fail(request);\n return Effect.gen(function* () {\n const capture = yield* captureAnalysisIssues(input.sample);\n return yield* Effect.ensuring(Effect.flatMap(\n // show keeps the exact author declaration and never enumerates an\n // unselected parameterized Page.\n executeTarget({\n ...input,\n pages: input.report.pages,\n request,\n capture,\n }), (page) => {\n const costs = capturedProjectionCosts(capture, page.target.route, page.target.pageId);\n const pricingProfile = reportPricingProfileJson(input.report);\n const failure = reportProjectionFailure({ pricingProfile, costs });\n if (failure !== undefined)\n return Effect.fail(failure);\n return Effect.succeed(Object.freeze({\n page,\n // Every cost entry captured during this one Page execution binds\n // to that route/page and retains Analysis's measure/row/profile.\n projections: buildReportProjections({\n pricingProfile,\n costs,\n }),\n problems: analysisProblems(capture.issues(), page.target.pageId),\n }));\n }), Effect.sync(() => capture.close()));\n });\n}\n/** One normalized Page declaration owned by the selected Report. */\ntype ReportPageDefinition = ReportDefinition[\"pages\"][number];\n/** Enumerates and closes every page instance exactly once for view/static. */\nexport function executeReportSite(input: {\n readonly sample: Sample;\n readonly report: ReportDefinition;\n readonly budget: ReportBuildBudgetAnchor;\n}): Effect.Effect<ClosedReportSite, ReportExecutionError, Scope.Scope> {\n return Effect.gen(function* () {\n const { startedAtMs, baselineRssBytes } = input.budget;\n // The outer capture covers enumerate()/params encode phases for generic\n // Analysis issues only. Cost projections belong only to actual Page\n // executions, where the Host can bind a real route/pageId.\n const outerCapture = yield* captureAnalysisIssues(input.sample);\n return yield* Effect.ensuring(Effect.gen(function* () {\n const pages: ClosedSitePage[] = [];\n const routeOwners = new Map<string, string>();\n const siteProblems: ReportProblem[] = [];\n const projectionCosts: ReportProjectionCostInput[] = [];\n const pricingProfile = reportPricingProfileJson(input.report);\n // The Report declaration is the only page owner. A custom Report that\n // wants official drill-down Pages composes those exported Pages\n // explicitly; the Host never merges another Report by id.\n const definitions = input.report.pages;\n const plainCount = definitions.filter((page) => page.params === undefined).length;\n if (plainCount > REPORT_PAGES_MAX) {\n return yield* Effect.fail(reportBuildBudgetExceeded(\"pages\", REPORT_PAGES_MAX, plainCount));\n }\n for (const definition of definitions) {\n yield* checkBuildBudgets(input.budget);\n if (definition.params === undefined) {\n const { page, projectionCosts: pageCosts, issues } = yield* executePageWithCapture({\n ...input,\n pages: definitions,\n request: { kind: \"page\", pageId: definition.id },\n capturePage: (capture) => capturedProjectionCosts(capture, definition.path, definition.id),\n });\n yield* addSitePage(pages, routeOwners, page, definition.navigation, \"page\");\n yield* registerProjectionCosts(pricingProfile, projectionCosts, pageCosts);\n siteProblems.push(...analysisProblems(issues, page.target.pageId));\n continue;\n }\n const values = yield* invokeAuthor(definition.id, \"enumerate\", outerCapture, () => definition.params.enumerate(input.sample));\n if (values === null || values === undefined || typeof (values as Iterable<JsonValue>)[Symbol.iterator] !== \"function\") {\n return yield* Effect.fail(pageFailure(definition.id, \"enumerate\", \"params.enumerate() must return a finite Iterable\"));\n }\n for (const params of values as Iterable<JsonValue>) {\n if (pages.length >= REPORT_PAGES_MAX) {\n return yield* Effect.fail(reportBuildBudgetExceeded(\"pages\", REPORT_PAGES_MAX, pages.length + 1));\n }\n const key = yield* invokeAuthor(definition.id, \"params-encode\", outerCapture, () => definition.params.encode(params));\n const invalidKey = typeof key === \"string\" ? validateParameterKey(key) : undefined;\n if (typeof key !== \"string\" || invalidKey !== undefined) {\n return yield* Effect.fail(pageFailure(definition.id, \"params-encode\", invalidKey?.reason ?? \"params.encode() must return a canonical parameter key\"));\n }\n const route = routeWithParameterKey(definition.path, key);\n const routeIssue = validateReportRoute(route);\n if (routeIssue !== undefined) {\n return yield* Effect.fail(pageFailure(definition.id, \"params-encode\", routeIssue.reason));\n }\n // executeShowTarget supplies the required decode -> encode\n // canonical round trip, but does not enumerate this page again.\n const { page, projectionCosts: pageCosts, issues } = yield* executePageWithCapture({\n ...input,\n pages: definitions,\n request: {\n kind: \"parameterized-page\",\n pageId: definition.id,\n key,\n route,\n },\n capturePage: (capture) => capturedProjectionCosts(capture, route, definition.id),\n });\n yield* addSitePage(pages, routeOwners, page, false, definition.presentation);\n yield* registerProjectionCosts(pricingProfile, projectionCosts, pageCosts);\n siteProblems.push(...analysisProblems(issues, page.target.pageId));\n yield* checkBuildBudgets(input.budget);\n }\n }\n siteProblems.push(...analysisProblems(outerCapture.issues()));\n return Object.freeze({\n startedAtMs,\n baselineRssBytes,\n sampleIdentity: input.sample.snapshot.identity.id,\n reportIdentity: reportDefinitionIdentity(input.report),\n title: resolveReportTitle(input.report),\n ...(input.report.theme === undefined ? {} : { theme: input.report.theme }),\n pages: Object.freeze(pages),\n projections: buildReportProjections({\n pricingProfile,\n costs: projectionCosts,\n }),\n problems: mergeReportProblems(siteProblems),\n });\n }), Effect.sync(() => outerCapture.close()));\n });\n}\n/** One Page execution with its own capture: page, bound projection costs, and issues. */\nfunction executePageWithCapture(input: {\n readonly sample: Sample;\n readonly report: ReportDefinition;\n readonly pages: readonly ReportPageDefinition[];\n readonly request: ShowTargetRequest;\n readonly capturePage: (capture: AnalysisIssueCapture) => ReportProjectionCostInput[];\n}): Effect.Effect<{\n readonly page: ResolvedPage;\n readonly projectionCosts: readonly ReportProjectionCostInput[];\n readonly issues: readonly AnalysisIssue[];\n}, ReportExecutionError, Scope.Scope> {\n return Effect.gen(function* () {\n const capture = yield* captureAnalysisIssues(input.sample);\n return yield* Effect.ensuring(Effect.map(executeTarget({ ...input, capture }), (page) => Object.freeze({\n page,\n projectionCosts: Object.freeze(input.capturePage(capture)),\n issues: capture.issues(),\n })), Effect.sync(() => capture.close()));\n });\n}\n/**\n * Validates one Page's capture before retaining it. Route ownership makes\n * capture keys page-local, so re-closing every prior Page here would only\n * repeat canonical JSON work quadratically; the final site closure performs\n * the one whole-site canonicalization.\n */\nfunction registerProjectionCosts(pricingProfile: JsonValue | null, output: ReportProjectionCostInput[], costs: readonly ReportProjectionCostInput[]): Effect.Effect<void, ReportProjectionBuildFailure> {\n const failure = reportProjectionFailure({ pricingProfile, costs });\n if (failure !== undefined)\n return Effect.fail(failure);\n output.push(...costs);\n return Effect.void;\n}\n/**\n * Reads the cost entries an Analysis execution capture recorded and binds them\n * to one Page execution. The Host never rebuilds a projection from a\n * MetricValue.value or from the built-in show data.\n */\nfunction capturedProjectionCosts(capture: AnalysisIssueCapture, route: string, pageId: string): ReportProjectionCostInput[] {\n return capture.costEntries().map((entry) => Object.freeze({\n page: Object.freeze({ pageId, route }),\n measureId: entry.measureId,\n row: Object.freeze({ key: entry.row.key, dimensions: entry.row.dimensions }),\n profileIdentity: entry.profileIdentity,\n projection: entry.projection,\n }));\n}\n/** The closed JSON form of the Report's PricingProfile, or null without one. */\nfunction reportPricingProfileJson(report: ReportDefinition): JsonValue | null {\n return report.pricing === null ? null : closePricingProfileJson(report.pricing);\n}\n/** Merges captures without discarding the Page scope that produced each issue. */\nfunction mergeReportProblems(problems: readonly ReportProblem[]): readonly ReportProblem[] {\n const unique = new Map<string, ReportProblem>();\n for (const problem of problems) {\n const key = `${problem.code}\\u0000${problem.path.join(\"\\u0001\")}\\u0000${problem.refs.join(\"\\u0001\")}\\u0000${problem.summary ?? \"\"}`;\n if (!unique.has(key))\n unique.set(key, problem);\n }\n return Object.freeze([...unique.values()].sort((left, right) => compareUtf8(left.code, right.code) ||\n compareUtf8(left.path.join(\"\\u0001\"), right.path.join(\"\\u0001\")) ||\n compareUtf8(left.refs.join(\"\\u0001\"), right.refs.join(\"\\u0001\")) ||\n compareUtf8(left.summary ?? \"\", right.summary ?? \"\")));\n}\nfunction executeTarget(input: {\n readonly sample: Sample;\n readonly report: ReportDefinition;\n /** The target-visible Page set from the selected Report declaration. */\n readonly pages: readonly ReportPageDefinition[];\n readonly request: ShowTargetRequest;\n readonly capture: AnalysisIssueCapture;\n readonly textProjection?: {\n readonly width: number;\n readonly panelMode: PanelMode;\n };\n}): Effect.Effect<ResolvedPage, ReportExecutionError, Scope.Scope> {\n return executeShowTarget<ReportPageExecutionFailed, never>({\n definition: { pages: input.pages },\n sample: input.sample,\n request: input.request,\n evidence: (locator) => query(input.sample, {\n kind: \"domain-view\",\n view: attemptEvidenceView,\n locator,\n }),\n runAuthor: input.capture.run,\n close: (rendered, context) => closeRenderedPage({\n rendered: rendered as ReportNode,\n sample: input.sample,\n report: input.report,\n capture: input.capture,\n hrefPages: input.pages,\n page: context.page,\n route: context.target.route,\n ...(input.textProjection === undefined ? {} : { textProjection: input.textProjection }),\n }),\n });\n}\nfunction closeRenderedPage(input: {\n readonly rendered: ReportNode;\n readonly sample: Sample;\n readonly report: ReportDefinition;\n /** Keeps Analysis calls made while resolving component trees page-bound. */\n readonly capture: AnalysisIssueCapture;\n /** Link targets are resolved only against the selected Report declaration. */\n readonly hrefPages: readonly ReportPageDefinition[];\n readonly page: PageContext;\n readonly route: string;\n readonly textProjection?: {\n readonly width: number;\n readonly panelMode: PanelMode;\n };\n}): Effect.Effect<ResolvedPageOutput, ReportPageExecutionFailed> {\n return Effect.tryPromise({\n try: () => input.capture.run(async (): Promise<ResolvedPageOutput> => {\n const resolved = await resolveReportTree(input.rendered, {\n scope: input.sample,\n page: input.page,\n report: buildReportMeta(input.report),\n });\n validateReportTree(resolved);\n assertDocumentBudget(resolved, input.page.id, input.page.path);\n const requestedTextProjections = [\n { width: TEXT_WIDTH, panelMode: \"plain\" as const },\n ...(input.textProjection === undefined ||\n (input.textProjection.width === TEXT_WIDTH && input.textProjection.panelMode === \"plain\")\n ? []\n : [input.textProjection]),\n ];\n const text = WEB_LOCALES.flatMap((locale) => requestedTextProjections.map((projection) => {\n const pageDimensions = collectPageDimensions(resolved, input.report.dimensionPins, \"text\");\n const context = createTextContext({\n width: projection.width,\n locale,\n panelMode: projection.panelMode,\n pageDimensions,\n command: (target) => commandForTarget(input.hrefPages, target),\n });\n return Object.freeze({\n locale,\n width: projection.width,\n panelMode: projection.panelMode,\n text: renderNodeToText(resolved, context),\n });\n }));\n const web = WEB_LOCALES.map((locale) => {\n const pageDimensions = collectPageDimensions(resolved, input.report.dimensionPins, \"web\");\n const context = withPageDimensions<WebContext>({\n locale,\n href: (target) => hrefForTarget(input.hrefPages, input.route, target),\n dimension: () => {\n throw new Error(\"a Report web face queried an undeclared dimension\");\n },\n }, pageDimensions);\n const html = runWithWebContext(Object.freeze(context), () => renderToStaticMarkup(createElement(ReactFragment, null, resolved as ReactNode)));\n return Object.freeze({ locale, html });\n });\n const downloads = collectDownloads(resolved).map((download) => Object.freeze({\n id: download.path,\n path: download.path,\n mediaType: download.mediaType,\n bytes: download.bytes,\n }));\n const rendererAssets = await materializeRendererAssets(collectRendererAssetDeclarations(resolved), async (path) => new Uint8Array(await readFile(path)));\n const assets: ResolvedPageAssetOutput[] = [\n ...rendererAssets.styles.map((asset) => Object.freeze({\n kind: \"style\" as const,\n path: asset.path,\n mediaType: \"text/css; charset=utf-8\",\n bytes: asset.content,\n sha256: asset.hash,\n })),\n ...rendererAssets.scripts.map((asset) => Object.freeze({\n kind: \"script\" as const,\n path: asset.path,\n mediaType: \"text/javascript; charset=utf-8\",\n bytes: asset.content,\n sha256: asset.hash,\n })),\n ];\n return Object.freeze({\n title: input.page.title,\n head: input.report.head as unknown as JsonValue,\n text: Object.freeze(text),\n web: Object.freeze(web),\n downloads: Object.freeze(downloads),\n assets: Object.freeze(assets),\n });\n }),\n catch: (cause): ReportPageExecutionFailed => pageFailure(input.page.id, classifyCloseFailure(cause), boundedReason(cause)),\n });\n}\nfunction invokeAuthor<Value>(pageId: string, phase: ReportPageExecutionFailed[\"phase\"], capture: AnalysisIssueCapture, callback: () => Value | PromiseLike<Value>): Effect.Effect<Value, ReportPageExecutionFailed> {\n return Effect.tryPromise({\n try: () => new Promise<Value>((resolve) => resolve(capture.run(callback))),\n catch: (cause) => pageFailure(pageId, phase, boundedReason(cause)),\n });\n}\nfunction addSitePage(pages: ClosedSitePage[], routeOwners: Map<string, string>, page: ResolvedPage, navigation: boolean, presentation: \"page\" | \"overlay\"): Effect.Effect<void, ReportSiteRouteConflict | ReportBuildBudgetExceeded> {\n const owner = routeOwners.get(page.target.route);\n if (owner !== undefined) {\n return Effect.fail(Object.freeze({\n code: \"report-site-route-conflict\" as const,\n route: page.target.route,\n pageIds: Object.freeze([owner, page.target.pageId]) as readonly [\n string,\n string\n ],\n }));\n }\n if (pages.length >= REPORT_PAGES_MAX) {\n return Effect.fail(reportBuildBudgetExceeded(\"pages\", REPORT_PAGES_MAX, pages.length + 1));\n }\n routeOwners.set(page.target.route, page.target.pageId);\n pages.push(Object.freeze({ page, navigation, presentation }));\n return Effect.void;\n}\nexport interface ReportBuildBudgetAnchor {\n readonly startedAtMs: number;\n readonly baselineRssBytes: number;\n}\n/** Starts the budget before Record selection opens the fixed Sample. */\nexport function startReportBuildBudget(): ReportBuildBudgetAnchor {\n return Object.freeze({\n startedAtMs: Date.now(),\n baselineRssBytes: process.memoryUsage().rss,\n });\n}\nfunction checkBuildBudgets(anchor: ReportBuildBudgetAnchor): Effect.Effect<void, ReportBuildBudgetExceeded> {\n const elapsed = Date.now() - anchor.startedAtMs;\n if (elapsed > REPORT_BUILD_TIME_MS_MAX) {\n return Effect.fail(reportBuildBudgetExceeded(\"build-time\", REPORT_BUILD_TIME_MS_MAX, elapsed));\n }\n const rssGrowth = Math.max(0, process.memoryUsage().rss - anchor.baselineRssBytes);\n if (rssGrowth > REPORT_BUILD_RSS_BYTES_MAX) {\n return Effect.fail(reportBuildBudgetExceeded(\"build-rss\", REPORT_BUILD_RSS_BYTES_MAX, rssGrowth));\n }\n return Effect.void;\n}\nfunction assertDocumentBudget(node: ReportNode, pageId: string, route: string): void {\n const observed = countDocument(node, 0);\n if (observed.nodes > REPORT_DOCUMENT_NODES_MAX) {\n throw reportBuildBudgetExceeded(\"document-nodes\", REPORT_DOCUMENT_NODES_MAX, observed.nodes, { pageId, route });\n }\n if (observed.depth > REPORT_DOCUMENT_DEPTH_MAX) {\n throw reportBuildBudgetExceeded(\"document-depth\", REPORT_DOCUMENT_DEPTH_MAX, observed.depth, { pageId, route });\n }\n}\nfunction countDocument(node: ReportNode, depth: number): {\n readonly nodes: number;\n readonly depth: number;\n} {\n if (node === null || node === undefined || typeof node === \"boolean\")\n return { nodes: 0, depth };\n if (Array.isArray(node)) {\n return node.reduce((total, child) => {\n const counted = countDocument(child, depth);\n return { nodes: total.nodes + counted.nodes, depth: Math.max(total.depth, counted.depth) };\n }, { nodes: 0, depth });\n }\n if (!isElement(node))\n return { nodes: 1, depth: depth + 1 };\n const currentDepth = depth + 1;\n if (node.type !== Fragment && typeof node.type === \"function\" &&\n (node.type as unknown as Record<symbol, unknown>)[COMPONENT_RAW_CHILDREN] === true) {\n return { nodes: 1, depth: currentDepth };\n }\n const child = countDocument(node.props.children as ReportNode, currentDepth);\n return { nodes: child.nodes + 1, depth: Math.max(currentDepth, child.depth) };\n}\nfunction isElement(value: unknown): value is ReportElement {\n if (typeof value !== \"object\" || value === null || Array.isArray(value))\n return false;\n const candidate = value as Partial<ReportElement>;\n return typeof candidate.$$typeof === \"symbol\" &&\n (candidate.$$typeof === Symbol.for(\"react.element\") || candidate.$$typeof === Symbol.for(\"react.transitional.element\")) &&\n typeof candidate.props === \"object\" && candidate.props !== null;\n}\nfunction routeForTarget(pages: readonly ReportPageDefinition[], target: ReportTarget): string | undefined {\n const page = pages.find((candidate) => candidate.id === target.page);\n if (page === undefined)\n return undefined;\n if (page.params === undefined)\n return target.params === undefined ? page.path : undefined;\n if (target.params === undefined)\n return undefined;\n try {\n const key = page.params.encode(target.params);\n return validateParameterKey(key) === undefined ? routeWithParameterKey(page.path, key) : undefined;\n }\n catch {\n return undefined;\n }\n}\nfunction hrefForTarget(pages: readonly ReportPageDefinition[], _sourceRoute: string, target: ReportTarget): string | undefined {\n if (target.page === DOWNLOAD_TARGET_PAGE) {\n const path = isJsonRecord(target.params) ? target.params.path : undefined;\n if (typeof path !== \"string\" || validateDownloadPath(path) !== undefined)\n return undefined;\n return staticPathForDownload(path).posix;\n }\n const route = routeForTarget(pages, target);\n if (route === undefined)\n return undefined;\n const page = pages.find((candidate) => candidate.id === target.page);\n if (page === undefined)\n return undefined;\n return `#${route}`;\n}\nfunction isJsonRecord(value: JsonValue | undefined): value is Readonly<Record<string, JsonValue>> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction commandForTarget(pages: readonly ReportPageDefinition[], target: ReportTarget): string | undefined {\n const route = routeForTarget(pages, target);\n if (route === undefined)\n return undefined;\n const page = pages.find((candidate) => candidate.id === target.page);\n if (page?.params !== undefined && page.role?.kind === \"experiment-group\") {\n const key = route.slice(page.path.length + 1);\n return `niceeval show --experiment ${shellQuote(key)}`;\n }\n return `niceeval show --page ${shellQuote(route)}`;\n}\nfunction shellQuote(value: string): string {\n return `'${value.replaceAll(\"'\", `'\\\\''`)}'`;\n}\nfunction analysisProblems(issues: readonly AnalysisIssue[], pageId?: string): readonly ReportProblem[] {\n return Object.freeze(issues.map((issue) => Object.freeze({\n code: `analysis-${issue.code}`,\n path: Object.freeze(pageId === undefined ? [] : [\"page\", pageId]),\n refs: Object.freeze(issue.refs.map((reference) => String(reference.identity.locator)).sort(compareUtf8)),\n summary: issue.message,\n })));\n}\nexport function reportDefinitionIdentity(report: ReportDefinition): string {\n const closed = {\n title: resolveReportTitle(report),\n head: report.head,\n theme: report.theme ?? null,\n // The Analysis-computed pricing content identity joins the definition\n // identity, so a Profile change is a new Report execution.\n pricing: report.pricing === null ? null : report.pricing.contentIdentity,\n pages: report.pages.map((page) => ({\n id: page.id,\n path: page.path,\n title: page.title,\n navigation: page.navigation,\n presentation: page.presentation,\n parameterized: page.params !== undefined,\n load: page.load?.toString() ?? null,\n render: page.render.toString(),\n params: page.params === undefined\n ? null\n : {\n encode: page.params.encode.toString(),\n decode: page.params.decode.toString(),\n enumerate: page.params.enumerate.toString(),\n },\n })),\n };\n return createHash(\"sha256\").update(canonicalJson(closed)).digest(\"hex\");\n}\nfunction canonicalJson(value: unknown): string {\n if (value === null)\n return \"null\";\n if (typeof value === \"string\" || typeof value === \"boolean\")\n return JSON.stringify(value);\n if (typeof value === \"number\")\n return Number.isFinite(value) ? JSON.stringify(Object.is(value, -0) ? 0 : value) : \"null\";\n if (Array.isArray(value))\n return `[${value.map(canonicalJson).join(\",\")}]`;\n if (typeof value === \"object\") {\n return `{${Object.entries(value).filter(([, entry]) => entry !== undefined).sort(([left], [right]) => compareUtf8(left, right))\n .map(([key, entry]) => `${JSON.stringify(key)}:${canonicalJson(entry)}`).join(\",\")}}`;\n }\n return JSON.stringify(String(value));\n}\nfunction classifyCloseFailure(cause: unknown): ReportPageExecutionFailed[\"phase\"] {\n const message = boundedReason(cause).toLowerCase();\n if (message.includes(\"asset\") || message.includes(\"enoent\"))\n return \"assets\";\n if (message.includes(\"text\"))\n return \"text\";\n if (message.includes(\"web\") || message.includes(\"react\"))\n return \"web\";\n return \"resolve\";\n}\nfunction pageFailure(pageId: string, phase: ReportPageExecutionFailed[\"phase\"], reason: string): ReportPageExecutionFailed {\n return Object.freeze({ code: \"report-page-execution-failed\" as const, pageId, phase, reason });\n}\nfunction boundedReason(cause: unknown): string {\n const raw = cause instanceof Error ? cause.message : typeof cause === \"object\" && cause !== null &&\n typeof Reflect.get(cause, \"code\") === \"string\"\n ? String(Reflect.get(cause, \"code\"))\n : String(cause);\n return raw.replace(/[\\u0000-\\u001f\\u007f-\\u009f]/g, \" \").slice(0, 512).trim() || \"Report callback failed\";\n}\nfunction compareUtf8(left: string, right: string): number {\n return Buffer.compare(Buffer.from(left), Buffer.from(right));\n}\n/** Used by the site shell without re-running any author callback. */\nexport function closedPageTitle(page: ResolvedPage, locale: string): string {\n return resolveLocalizedText(page.title, locale);\n}\n"]}
|
|
@@ -30,10 +30,7 @@ export interface ClosedTargetExecution {
|
|
|
30
30
|
export interface ClosedSitePage {
|
|
31
31
|
readonly page: ResolvedPage;
|
|
32
32
|
readonly navigation: boolean;
|
|
33
|
-
readonly
|
|
34
|
-
readonly kind: "experiment-group";
|
|
35
|
-
readonly groupKind: "named" | "singleton";
|
|
36
|
-
};
|
|
33
|
+
readonly presentation: "page" | "overlay";
|
|
37
34
|
}
|
|
38
35
|
/** Host-private complete page closure used only while forming a revision. */
|
|
39
36
|
export interface ClosedReportSite {
|
|
@@ -30,10 +30,7 @@ export interface ClosedTargetExecution {
|
|
|
30
30
|
export interface ClosedSitePage {
|
|
31
31
|
readonly page: ResolvedPage;
|
|
32
32
|
readonly navigation: boolean;
|
|
33
|
-
readonly
|
|
34
|
-
readonly kind: "experiment-group";
|
|
35
|
-
readonly groupKind: "named" | "singleton";
|
|
36
|
-
};
|
|
33
|
+
readonly presentation: "page" | "overlay";
|
|
37
34
|
}
|
|
38
35
|
/** Host-private complete page closure used only while forming a revision. */
|
|
39
36
|
export interface ClosedReportSite {
|
|
@@ -30,10 +30,7 @@ export interface ClosedTargetExecution {
|
|
|
30
30
|
export interface ClosedSitePage {
|
|
31
31
|
readonly page: ResolvedPage;
|
|
32
32
|
readonly navigation: boolean;
|
|
33
|
-
readonly
|
|
34
|
-
readonly kind: "experiment-group";
|
|
35
|
-
readonly groupKind: "named" | "singleton";
|
|
36
|
-
};
|
|
33
|
+
readonly presentation: "page" | "overlay";
|
|
37
34
|
}
|
|
38
35
|
/** Host-private complete page closure used only while forming a revision. */
|
|
39
36
|
export interface ClosedReportSite {
|
|
@@ -224,6 +224,9 @@ function presentBuiltInMachineShow(input) {
|
|
|
224
224
|
function closeSelectionSiteFromRecord(input, budget) {
|
|
225
225
|
return effect_1.Effect.scoped(effect_1.Effect.gen(function* () {
|
|
226
226
|
const sample = yield* openSelectionSample(input.root, input.selection);
|
|
227
|
+
if (sample.snapshot.coverage.selected === 0) {
|
|
228
|
+
return yield* effect_1.Effect.fail(Object.freeze({ code: "report-sample-empty" }));
|
|
229
|
+
}
|
|
227
230
|
return yield* (0, progress_ts_1.withReportHostPhase)("report-execution", (0, execute_ts_1.executeReportSite)({
|
|
228
231
|
sample,
|
|
229
232
|
report: input.report ?? defaultReportForSelection(input.selection),
|