niceeval 0.13.1 → 0.13.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/INDEX.md +25 -2
- package/README.md +9 -10
- package/README.zh.md +9 -10
- package/dist/agents/ai-sdk.cjs.map +1 -1
- package/dist/agents/ai-sdk.d.cts +1 -1
- package/dist/agents/ai-sdk.d.mts +1 -1
- package/dist/agents/ai-sdk.d.ts +1 -1
- package/dist/agents/bub-install-spec.cjs +19 -5
- package/dist/agents/bub-install-spec.cjs.map +1 -1
- package/dist/agents/bub-install-spec.d.cts +9 -2
- package/dist/agents/bub-install-spec.d.mts +9 -2
- package/dist/agents/bub-install-spec.d.ts +9 -2
- package/dist/agents/bub-install-spec.js +14 -12
- package/dist/agents/bub.cjs +10 -6
- package/dist/agents/bub.cjs.map +1 -1
- package/dist/agents/bub.d.cts +2 -2
- package/dist/agents/bub.d.mts +2 -2
- package/dist/agents/bub.d.ts +2 -2
- package/dist/agents/claude-code.cjs.map +1 -1
- package/dist/agents/claude-code.d.cts +2 -2
- package/dist/agents/claude-code.d.mts +2 -2
- package/dist/agents/claude-code.d.ts +2 -2
- package/dist/agents/codex.cjs +4 -4
- package/dist/agents/codex.cjs.map +1 -1
- package/dist/agents/codex.d.cts +3 -3
- package/dist/agents/codex.d.mts +3 -3
- package/dist/agents/codex.d.ts +3 -3
- package/dist/agents/coding-cli-versions.cjs +10 -1
- package/dist/agents/coding-cli-versions.cjs.map +1 -1
- package/dist/agents/coding-cli-versions.d.cts +8 -3
- package/dist/agents/coding-cli-versions.d.mts +8 -3
- package/dist/agents/coding-cli-versions.d.ts +8 -3
- package/dist/agents/coding-cli-versions.js +18 -12
- package/dist/agents/deepseek-harness.cjs +151 -0
- package/dist/agents/deepseek-harness.cjs.map +1 -0
- package/dist/agents/deepseek-harness.d.cts +14 -0
- package/dist/agents/deepseek-harness.d.mts +14 -0
- package/dist/agents/deepseek-harness.d.ts +14 -0
- package/dist/agents/deepseek-harness.js +7 -0
- package/dist/agents/deepseek-harness.js.map +1 -0
- package/dist/agents/exact-npm-plugins.cjs +28 -0
- package/dist/agents/exact-npm-plugins.cjs.map +1 -0
- package/dist/agents/exact-npm-plugins.d.cts +10 -0
- package/dist/agents/exact-npm-plugins.d.mts +10 -0
- package/dist/agents/exact-npm-plugins.d.ts +10 -0
- package/dist/agents/exact-npm-plugins.js +8 -0
- package/dist/agents/exact-npm-plugins.js.map +1 -0
- package/dist/agents/index.cjs +5 -1
- package/dist/agents/index.cjs.map +1 -1
- package/dist/agents/index.d.cts +4 -0
- package/dist/agents/index.d.mts +4 -0
- package/dist/agents/index.d.ts +4 -0
- package/dist/agents/index.js +54 -50
- package/dist/agents/index.mjs +54 -50
- package/dist/agents/omp.cjs +170 -0
- package/dist/agents/omp.cjs.map +1 -0
- package/dist/agents/omp.d.cts +14 -0
- package/dist/agents/omp.d.mts +14 -0
- package/dist/agents/omp.d.ts +14 -0
- package/dist/agents/omp.js +7 -0
- package/dist/agents/omp.js.map +1 -0
- package/dist/agents/openclaw.cjs +51 -2
- package/dist/agents/openclaw.cjs.map +1 -1
- package/dist/agents/openclaw.d.cts +2 -0
- package/dist/agents/openclaw.d.mts +2 -0
- package/dist/agents/openclaw.d.ts +2 -0
- package/dist/agents/types.cjs.map +1 -1
- package/dist/agents/types.d.cts +4 -4
- package/dist/agents/types.d.mts +4 -4
- package/dist/agents/types.d.ts +4 -4
- package/dist/agents/ui-message-stream.cjs +24 -7
- package/dist/agents/ui-message-stream.cjs.map +1 -1
- package/dist/analysis/api.cjs +28 -2
- package/dist/analysis/api.cjs.map +1 -1
- package/dist/analysis/api.d.cts +22 -1
- package/dist/analysis/api.d.mts +22 -1
- package/dist/analysis/api.d.ts +22 -1
- package/dist/analysis/api.js +8 -6
- package/dist/analysis/bindings.cjs +11 -18
- package/dist/analysis/bindings.cjs.map +1 -1
- package/dist/analysis/bindings.d.cts +177 -49
- package/dist/analysis/bindings.d.mts +177 -49
- package/dist/analysis/bindings.d.ts +177 -49
- package/dist/analysis/contracts.cjs +1 -0
- package/dist/analysis/contracts.cjs.map +1 -1
- package/dist/analysis/contracts.d.cts +43 -3
- package/dist/analysis/contracts.d.mts +43 -3
- package/dist/analysis/contracts.d.ts +43 -3
- package/dist/analysis/cost-projection.cjs +2 -1
- package/dist/analysis/cost-projection.cjs.map +1 -1
- package/dist/analysis/cost-projection.d.cts +1 -1
- package/dist/analysis/cost-projection.d.mts +1 -1
- package/dist/analysis/cost-projection.d.ts +1 -1
- package/dist/analysis/cost.cjs +13 -3
- package/dist/analysis/cost.cjs.map +1 -1
- package/dist/analysis/cost.d.cts +10 -3
- package/dist/analysis/cost.d.mts +10 -3
- package/dist/analysis/cost.d.ts +10 -3
- package/dist/analysis/experiment-groups.cjs +96 -0
- package/dist/analysis/experiment-groups.cjs.map +1 -0
- package/dist/analysis/experiment-groups.d.cts +9 -0
- package/dist/analysis/experiment-groups.d.mts +9 -0
- package/dist/analysis/experiment-groups.d.ts +9 -0
- package/dist/analysis/experiment-groups.js +10 -0
- package/dist/analysis/experiment-groups.js.map +1 -0
- package/dist/analysis/index.cjs +4 -1
- package/dist/analysis/index.cjs.map +1 -1
- package/dist/analysis/index.d.cts +4 -2
- package/dist/analysis/index.d.mts +4 -2
- package/dist/analysis/index.d.ts +4 -2
- package/dist/analysis/index.js +40 -36
- package/dist/analysis/index.mjs +40 -36
- package/dist/assertions/limits.cjs +4 -0
- package/dist/assertions/limits.cjs.map +1 -1
- package/dist/assertions/limits.d.cts +4 -0
- package/dist/assertions/limits.d.mts +4 -0
- package/dist/assertions/limits.d.ts +4 -0
- package/dist/assertions/match.cjs +63 -25
- package/dist/assertions/match.cjs.map +1 -1
- package/dist/assertions/match.d.cts +7 -0
- package/dist/assertions/match.d.mts +7 -0
- package/dist/assertions/match.d.ts +7 -0
- package/dist/assertions/record/attachment.cjs +32 -4
- package/dist/assertions/record/attachment.cjs.map +1 -1
- package/dist/assertions/record/diff.cjs +10 -4
- package/dist/assertions/record/diff.cjs.map +1 -1
- package/dist/assertions/record/producer.cjs +101 -4
- package/dist/assertions/record/producer.cjs.map +1 -1
- package/dist/assertions/record/producer.d.cts +4 -1
- package/dist/assertions/record/producer.d.mts +4 -1
- package/dist/assertions/record/producer.d.ts +4 -1
- package/dist/assertions/runtime.cjs +45 -5
- package/dist/assertions/runtime.cjs.map +1 -1
- package/dist/cli/record.cjs +113 -8
- package/dist/cli/record.cjs.map +1 -1
- package/dist/cli/record.d.cts +20 -1
- package/dist/cli/record.d.mts +20 -1
- package/dist/cli/record.d.ts +20 -1
- package/dist/cli/record.js +4 -2
- package/dist/cli.cjs +386 -31
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.d.cts +10 -2
- package/dist/cli.d.mts +10 -2
- package/dist/cli.d.ts +10 -2
- package/dist/context/send-retry.cjs +4 -4
- package/dist/context/send-retry.cjs.map +1 -1
- package/dist/coordination/host/runtime.cjs +8 -30
- package/dist/coordination/host/runtime.cjs.map +1 -1
- package/dist/coordination/host/runtime.d.cts +3 -3
- package/dist/coordination/host/runtime.d.mts +3 -3
- package/dist/coordination/host/runtime.d.ts +3 -3
- package/dist/coordination/host/types.cjs.map +1 -1
- package/dist/coordination/host/types.d.cts +0 -5
- package/dist/coordination/host/types.d.mts +0 -5
- package/dist/coordination/host/types.d.ts +0 -5
- package/dist/coordination/platform/node.cjs +90 -9
- package/dist/coordination/platform/node.cjs.map +1 -1
- package/dist/define.cjs +25 -1
- package/dist/define.cjs.map +1 -1
- package/dist/experiment/host/index.cjs +1 -0
- package/dist/experiment/host/index.cjs.map +1 -1
- package/dist/i18n/en.cjs +26 -8
- package/dist/i18n/en.cjs.map +1 -1
- package/dist/i18n/en.d.cts +19 -6
- package/dist/i18n/en.d.mts +19 -6
- package/dist/i18n/en.d.ts +19 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/o11y/parsers/hermes.cjs +1 -1
- package/dist/o11y/parsers/hermes.cjs.map +1 -1
- package/dist/o11y/prices.json +1 -1
- package/dist/o11y/record/families.cjs +12 -3
- package/dist/o11y/record/families.cjs.map +1 -1
- package/dist/o11y/record/families.d.cts +8 -8
- package/dist/o11y/record/families.d.mts +8 -8
- package/dist/o11y/record/families.d.ts +8 -8
- package/dist/o11y/record/family-projectors.d.cts +66 -18
- package/dist/o11y/record/family-projectors.d.mts +66 -18
- package/dist/o11y/record/family-projectors.d.ts +66 -18
- package/dist/o11y/record/family-writers.d.cts +11 -3
- package/dist/o11y/record/family-writers.d.mts +11 -3
- package/dist/o11y/record/family-writers.d.ts +11 -3
- package/dist/o11y/record/runner-producer.cjs +14 -4
- package/dist/o11y/record/runner-producer.cjs.map +1 -1
- package/dist/record/codec/core.d.cts +2 -2
- package/dist/record/codec/core.d.mts +2 -2
- package/dist/record/codec/core.d.ts +2 -2
- package/dist/record/family/catalog.d.cts +44 -12
- package/dist/record/family/catalog.d.mts +44 -12
- package/dist/record/family/catalog.d.ts +44 -12
- package/dist/record/family/index.js +128 -124
- package/dist/record/family/observability-v1.cjs +35 -0
- package/dist/record/family/observability-v1.cjs.map +1 -0
- package/dist/record/family/observability-v1.d.cts +3 -0
- package/dist/record/family/observability-v1.d.mts +3 -0
- package/dist/record/family/observability-v1.d.ts +3 -0
- package/dist/record/family/observability-v1.js +6 -0
- package/dist/record/family/observability-v1.js.map +1 -0
- package/dist/record/family/observability.cjs +58 -9
- package/dist/record/family/observability.cjs.map +1 -1
- package/dist/record/family/observability.d.cts +1014 -15
- package/dist/record/family/observability.d.mts +1014 -15
- package/dist/record/family/observability.d.ts +1014 -15
- package/dist/record/family/observability.js +22 -18
- package/dist/record/host/runtime.cjs +600 -31
- package/dist/record/host/runtime.cjs.map +1 -1
- package/dist/record/host/types.cjs.map +1 -1
- package/dist/record/host/types.d.cts +33 -9
- package/dist/record/host/types.d.mts +33 -9
- package/dist/record/host/types.d.ts +33 -9
- package/dist/record/maintenance/runtime.cjs +1 -2
- package/dist/record/maintenance/runtime.cjs.map +1 -1
- package/dist/record/model/core.cjs.map +1 -1
- package/dist/record/model/core.d.cts +1 -1
- package/dist/record/model/core.d.mts +1 -1
- package/dist/record/model/core.d.ts +1 -1
- package/dist/record/model/definition.d.cts +6 -6
- package/dist/record/model/definition.d.mts +6 -6
- package/dist/record/model/definition.d.ts +6 -6
- package/dist/record/model/identifiers.cjs +1 -1
- package/dist/record/model/identifiers.cjs.map +1 -1
- package/dist/record/model/identifiers.d.cts +1 -1
- package/dist/record/model/identifiers.d.mts +1 -1
- package/dist/record/model/identifiers.d.ts +1 -1
- package/dist/record/platform/node.cjs +159 -23
- package/dist/record/platform/node.cjs.map +1 -1
- package/dist/record/platform/services.cjs.map +1 -1
- package/dist/record/platform/services.d.cts +15 -2
- package/dist/record/platform/services.d.mts +15 -2
- package/dist/record/platform/services.d.ts +15 -2
- package/dist/record/reader/errors.cjs +37 -1
- package/dist/record/reader/errors.cjs.map +1 -1
- package/dist/record/reader/errors.d.cts +49 -1
- package/dist/record/reader/errors.d.mts +49 -1
- package/dist/record/reader/errors.d.ts +49 -1
- package/dist/record/reader/errors.js +22 -12
- package/dist/record/reader/format.cjs +76 -17
- package/dist/record/reader/format.cjs.map +1 -1
- package/dist/record/reader/format.d.cts +11 -4
- package/dist/record/reader/format.d.mts +11 -4
- package/dist/record/reader/format.d.ts +11 -4
- package/dist/record/reader/format.js +2 -0
- package/dist/record/reader/index.js +32 -18
- package/dist/record/reader/runtime.cjs +64 -0
- package/dist/record/reader/runtime.cjs.map +1 -1
- package/dist/record/reader/runtime.d.cts +15 -0
- package/dist/record/reader/runtime.d.mts +15 -0
- package/dist/record/reader/runtime.d.ts +15 -0
- package/dist/record/reader/runtime.js +2 -0
- package/dist/report/assets/styles.css +53 -29
- package/dist/report/built-in/analysis-values.cjs +21 -13
- package/dist/report/built-in/analysis-values.cjs.map +1 -1
- package/dist/report/built-in/analysis-values.d.cts +11 -22
- package/dist/report/built-in/analysis-values.d.mts +11 -22
- package/dist/report/built-in/analysis-values.d.ts +11 -22
- package/dist/report/built-in/analysis-values.js +4 -6
- package/dist/report/built-in/index.cjs +1 -3
- package/dist/report/built-in/index.cjs.map +1 -1
- package/dist/report/built-in/index.d.cts +1 -1
- package/dist/report/built-in/index.d.mts +1 -1
- package/dist/report/built-in/index.d.ts +1 -1
- package/dist/report/built-in/index.js +4 -8
- package/dist/report/built-in/index.mjs +4 -8
- package/dist/report/built-in/machine.cjs +0 -2
- package/dist/report/built-in/machine.cjs.map +1 -1
- package/dist/report/built-in/machine.d.cts +0 -2
- package/dist/report/built-in/machine.d.mts +0 -2
- package/dist/report/built-in/machine.d.ts +0 -2
- package/dist/report/built-in/result-components.cjs +49 -51
- package/dist/report/built-in/result-components.cjs.map +1 -1
- package/dist/report/built-in/result-components.d.cts +16 -17
- package/dist/report/built-in/result-components.d.mts +16 -17
- package/dist/report/built-in/result-components.d.ts +16 -17
- package/dist/report/built-in/result-components.js +0 -4
- package/dist/report/built-in/run-membership-overview.cjs +126 -17
- package/dist/report/built-in/run-membership-overview.cjs.map +1 -1
- package/dist/report/built-in/run-membership-overview.d.cts +14 -0
- package/dist/report/built-in/run-membership-overview.d.mts +14 -0
- package/dist/report/built-in/run-membership-overview.d.ts +14 -0
- package/dist/report/built-in/run-membership-overview.js +4 -2
- package/dist/report/built-in/standard.cjs +80 -45
- package/dist/report/built-in/standard.cjs.map +1 -1
- package/dist/report/built-in/standard.d.cts +19 -41
- package/dist/report/built-in/standard.d.mts +19 -41
- package/dist/report/built-in/standard.d.ts +19 -41
- package/dist/report/built-in/standard.js +6 -6
- package/dist/report/components/attempt-detail/compute.cjs +78 -2
- package/dist/report/components/attempt-detail/compute.cjs.map +1 -1
- package/dist/report/components/attempt-detail/compute.d.cts +1 -1
- package/dist/report/components/attempt-detail/compute.d.mts +1 -1
- package/dist/report/components/attempt-detail/compute.d.ts +1 -1
- package/dist/report/components/attempt-detail/content.cjs +1 -1
- package/dist/report/components/attempt-detail/content.cjs.map +1 -1
- package/dist/report/components/entity-lists/compute.cjs +42 -5
- package/dist/report/components/entity-lists/compute.cjs.map +1 -1
- package/dist/report/components/entity-lists/compute.d.cts +10 -8
- package/dist/report/components/entity-lists/compute.d.mts +10 -8
- package/dist/report/components/entity-lists/compute.d.ts +10 -8
- package/dist/report/components/entity-lists/content.cjs +31 -6
- package/dist/report/components/entity-lists/content.cjs.map +1 -1
- package/dist/report/components/entity-lists/index.cjs +9 -4
- package/dist/report/components/entity-lists/index.cjs.map +1 -1
- package/dist/report/components/entity-lists/index.d.cts +4 -7
- package/dist/report/components/entity-lists/index.d.mts +4 -7
- package/dist/report/components/entity-lists/index.d.ts +4 -7
- package/dist/report/components/summaries/compute.cjs +8 -1
- package/dist/report/components/summaries/compute.cjs.map +1 -1
- package/dist/report/components/summaries/compute.d.cts +9 -1
- package/dist/report/components/summaries/compute.d.mts +9 -1
- package/dist/report/components/summaries/compute.d.ts +9 -1
- package/dist/report/components/summaries/index.cjs +48 -4
- package/dist/report/components/summaries/index.cjs.map +1 -1
- package/dist/report/components/summaries/index.d.cts +7 -4
- package/dist/report/components/summaries/index.d.mts +7 -4
- package/dist/report/components/summaries/index.d.ts +7 -4
- package/dist/report/definition/cell.cjs +3 -0
- package/dist/report/definition/cell.cjs.map +1 -1
- package/dist/report/definition/cell.d.cts +2 -0
- package/dist/report/definition/cell.d.mts +2 -0
- package/dist/report/definition/cell.d.ts +2 -0
- package/dist/report/definition/primitives/chart.cjs +8 -5
- package/dist/report/definition/primitives/chart.cjs.map +1 -1
- package/dist/report/definition/primitives/points-dataset.cjs +1 -0
- package/dist/report/definition/primitives/points-dataset.cjs.map +1 -1
- package/dist/report/definition/primitives.cjs +15 -2
- package/dist/report/definition/primitives.cjs.map +1 -1
- package/dist/report/definition/report.cjs +27 -3
- package/dist/report/definition/report.cjs.map +1 -1
- package/dist/report/definition/report.d.cts +8 -0
- package/dist/report/definition/report.d.mts +8 -0
- package/dist/report/definition/report.d.ts +8 -0
- package/dist/report/execution/machine.cjs +30 -14
- package/dist/report/execution/machine.cjs.map +1 -1
- package/dist/report/execution/machine.d.cts +20 -10
- package/dist/report/execution/machine.d.mts +20 -10
- package/dist/report/execution/machine.d.ts +20 -10
- package/dist/report/execution/machine.js +6 -6
- package/dist/report/host/execute.cjs +25 -16
- package/dist/report/host/execute.cjs.map +1 -1
- package/dist/report/host/execute.d.cts +4 -0
- package/dist/report/host/execute.d.mts +4 -0
- package/dist/report/host/execute.d.ts +4 -0
- package/dist/report/host/from-record.cjs +22 -5
- package/dist/report/host/from-record.cjs.map +1 -1
- package/dist/report/host/machine.cjs +53 -11
- package/dist/report/host/machine.cjs.map +1 -1
- package/dist/report/host/site-runtime.cjs +9 -8
- package/dist/report/host/site-runtime.cjs.map +1 -1
- package/dist/report/host/site-runtime.d.cts +1 -1
- package/dist/report/host/site-runtime.d.mts +1 -1
- package/dist/report/host/site-runtime.d.ts +1 -1
- package/dist/report/host/static.cjs +56 -9
- package/dist/report/host/static.cjs.map +1 -1
- package/dist/report/index.cjs.map +1 -1
- package/dist/report/index.d.cts +1 -1
- package/dist/report/index.d.mts +1 -1
- package/dist/report/index.d.ts +1 -1
- package/dist/report/model/dataset.cjs +7 -2
- package/dist/report/model/dataset.cjs.map +1 -1
- package/dist/report/model/locale.cjs +2 -0
- package/dist/report/model/locale.cjs.map +1 -1
- package/dist/report/model/locale.d.cts +1 -0
- package/dist/report/model/locale.d.mts +1 -0
- package/dist/report/model/locale.d.ts +1 -0
- package/dist/report/model/metrics.cjs +3 -1
- package/dist/report/model/metrics.cjs.map +1 -1
- package/dist/report/model/pricing.cjs +16 -11
- package/dist/report/model/pricing.cjs.map +1 -1
- package/dist/report/react/styles.css +53 -29
- package/dist/runner/adoption.cjs +1 -0
- package/dist/runner/adoption.cjs.map +1 -1
- package/dist/runner/attempt.cjs +44 -5
- package/dist/runner/attempt.cjs.map +1 -1
- package/dist/runner/attempt.d.cts +13 -1
- package/dist/runner/attempt.d.mts +13 -1
- package/dist/runner/attempt.d.ts +13 -1
- package/dist/runner/config-identity.cjs +10 -2
- package/dist/runner/config-identity.cjs.map +1 -1
- package/dist/runner/config-identity.d.cts +4 -2
- package/dist/runner/config-identity.d.mts +4 -2
- package/dist/runner/config-identity.d.ts +4 -2
- package/dist/runner/feedback/human.cjs +298 -59
- package/dist/runner/feedback/human.cjs.map +1 -1
- package/dist/runner/feedback/json.cjs +14 -6
- package/dist/runner/feedback/json.cjs.map +1 -1
- package/dist/runner/feedback/json.d.cts +3 -2
- package/dist/runner/feedback/json.d.mts +3 -2
- package/dist/runner/feedback/json.d.ts +3 -2
- package/dist/runner/feedback/reducer.cjs +2 -0
- package/dist/runner/feedback/reducer.cjs.map +1 -1
- package/dist/runner/judge-config.cjs +1 -1
- package/dist/runner/judge-config.cjs.map +1 -1
- package/dist/runner/ledger.cjs +124 -12
- package/dist/runner/ledger.cjs.map +1 -1
- package/dist/runner/project-current.cjs +13 -5
- package/dist/runner/project-current.cjs.map +1 -1
- package/dist/runner/run.cjs +564 -256
- package/dist/runner/run.cjs.map +1 -1
- package/dist/runner/sandbox-pool.cjs +161 -30
- package/dist/runner/sandbox-pool.cjs.map +1 -1
- package/dist/runner/sandbox-pool.d.cts +34 -2
- package/dist/runner/sandbox-pool.d.mts +34 -2
- package/dist/runner/sandbox-pool.d.ts +34 -2
- package/dist/runner/shared-state-lease.cjs +803 -0
- package/dist/runner/shared-state-lease.cjs.map +1 -0
- package/dist/runner/shared-state-lease.d.cts +121 -0
- package/dist/runner/shared-state-lease.d.mts +121 -0
- package/dist/runner/shared-state-lease.d.ts +121 -0
- package/dist/runner/shared-state-lease.js +24 -0
- package/dist/runner/shared-state-lease.js.map +1 -0
- package/dist/runner/teardown-registry.cjs +97 -34
- package/dist/runner/teardown-registry.cjs.map +1 -1
- package/dist/runner/teardown-registry.d.cts +27 -1
- package/dist/runner/teardown-registry.d.mts +27 -1
- package/dist/runner/teardown-registry.d.ts +27 -1
- package/dist/runner/teardown-registry.js +20 -16
- package/dist/runner/types.cjs.map +1 -1
- package/dist/runner/types.d.cts +31 -5
- package/dist/runner/types.d.mts +31 -5
- package/dist/runner/types.d.ts +31 -5
- package/dist/sample/analysis.cjs +249 -459
- package/dist/sample/analysis.cjs.map +1 -1
- package/dist/sample/capability.cjs +138 -7
- package/dist/sample/capability.cjs.map +1 -1
- package/dist/sample/capability.d.cts +3 -1
- package/dist/sample/capability.d.mts +3 -1
- package/dist/sample/capability.d.ts +3 -1
- package/dist/sample/capability.js +8 -6
- package/dist/sandbox/docker-agent-image.cjs +5 -1
- package/dist/sandbox/docker-agent-image.cjs.map +1 -1
- package/dist/sandbox/docker-agent-image.d.cts +2 -0
- package/dist/sandbox/docker-agent-image.d.mts +2 -0
- package/dist/sandbox/docker-agent-image.d.ts +2 -0
- package/dist/sandbox/docker-agent-image.js +14 -10
- package/dist/sandbox/docker-profile/schema.cjs +283 -534
- package/dist/sandbox/docker-profile/schema.cjs.map +1 -1
- package/dist/sandbox/docker-profile/schema.d.cts +10 -27
- package/dist/sandbox/docker-profile/schema.d.mts +10 -27
- package/dist/sandbox/docker-profile/schema.d.ts +10 -27
- package/dist/sandbox/e2b-agent-template.cjs +5 -2
- package/dist/sandbox/e2b-agent-template.cjs.map +1 -1
- package/dist/sandbox/index.cjs +4 -2
- package/dist/sandbox/index.cjs.map +1 -1
- package/dist/sandbox/index.d.cts +1 -1
- package/dist/sandbox/index.d.mts +1 -1
- package/dist/sandbox/index.d.ts +1 -1
- package/dist/sandbox/index.js +120 -116
- package/dist/sandbox/index.mjs +120 -116
- package/dist/sandbox/keep-registry.cjs +28 -66
- package/dist/sandbox/keep-registry.cjs.map +1 -1
- package/dist/sandbox/types.cjs.map +1 -1
- package/dist/sandbox/types.d.cts +1 -1
- package/dist/sandbox/types.d.mts +1 -1
- package/dist/sandbox/types.d.ts +1 -1
- package/dist/shared/aggregate.cjs +16 -6
- package/dist/shared/aggregate.cjs.map +1 -1
- package/dist/shared/aggregate.d.cts +12 -4
- package/dist/shared/aggregate.d.mts +12 -4
- package/dist/shared/aggregate.d.ts +12 -4
- package/dist/shared/turn-label.cjs +20 -2
- package/dist/shared/turn-label.cjs.map +1 -1
- package/dist/shared/turn-label.d.cts +2 -0
- package/dist/shared/turn-label.d.mts +2 -0
- package/dist/shared/turn-label.d.ts +2 -0
- package/dist/shared/turn-label.js +4 -2
- package/dist/vendor/remark/remark-gfm.cjs +7 -7
- package/dist/vendor/remark/remark-gfm.cjs.map +1 -1
- package/dist/vendor/remark/remark-parse.cjs +12 -12
- package/dist/vendor/remark/remark-parse.cjs.map +1 -1
- package/dist/vendor/remark/remark.cjs +13 -13
- package/dist/vendor/remark/remark.cjs.map +1 -1
- package/dist/view/server.cjs +6 -0
- package/dist/view/server.cjs.map +1 -1
- package/docs-site/images/hitl-handshake-zh.svg +3 -3
- package/docs-site/zh/examples/ai-agent-application.mdx +1 -1
- package/docs-site/zh/examples/coding-agent-extensions.mdx +1 -1
- package/docs-site/zh/examples/integrations/ai-sdk-v7.mdx +4 -3
- package/docs-site/zh/examples/integrations/claude-sdk.mdx +3 -3
- package/docs-site/zh/examples/integrations/codex-sdk.mdx +5 -5
- package/docs-site/zh/examples/integrations/langgraph.mdx +4 -4
- package/docs-site/zh/examples/integrations/pi-sdk.mdx +5 -5
- package/docs-site/zh/explanation/adapter.mdx +5 -5
- package/docs-site/zh/explanation/assert.mdx +7 -7
- package/docs-site/zh/explanation/drive.mdx +4 -2
- package/docs-site/zh/explanation/evals.mdx +10 -8
- package/docs-site/zh/explanation/experiment.mdx +2 -2
- package/docs-site/zh/explanation/hitl.mdx +9 -9
- package/docs-site/zh/explanation/judge.mdx +5 -5
- package/docs-site/zh/explanation/overview.mdx +3 -3
- package/docs-site/zh/explanation/runner.mdx +1 -1
- package/docs-site/zh/index.mdx +3 -3
- package/docs-site/zh/reference/builtin-agents.mdx +13 -13
- package/docs-site/zh/reference/capabilities.mdx +1 -1
- package/docs-site/zh/reference/cli.mdx +18 -12
- package/docs-site/zh/reference/define-agent.mdx +130 -5
- package/docs-site/zh/reference/define-config.mdx +2 -2
- package/docs-site/zh/reference/define-eval.mdx +4 -4
- package/docs-site/zh/reference/events.mdx +11 -11
- package/docs-site/zh/reference/official-adapters.mdx +6 -6
- package/docs-site/zh/reference/results-data.mdx +6 -0
- package/docs-site/zh/troubleshooting/debugging.mdx +1 -1
- package/docs-site/zh/troubleshooting/recover-after-kill.mdx +37 -5
- package/docs-site/zh/tutorials/accept-results.mdx +72 -0
- package/docs-site/zh/tutorials/agent-onboarding.mdx +6 -6
- package/docs-site/zh/tutorials/authoring.mdx +9 -13
- package/docs-site/zh/tutorials/ci-integration.mdx +6 -6
- package/docs-site/zh/tutorials/compare-runs.mdx +61 -0
- package/docs-site/zh/tutorials/concurrency.mdx +13 -12
- package/docs-site/zh/tutorials/configuration.mdx +4 -6
- package/docs-site/zh/tutorials/connect-your-agent.mdx +1 -1
- package/docs-site/zh/tutorials/control-run-cost.mdx +58 -0
- package/docs-site/zh/tutorials/criteria-files.mdx +2 -2
- package/docs-site/zh/tutorials/custom-reports.mdx +2 -2
- package/docs-site/zh/tutorials/debug-lifecycle-plan.mdx +46 -0
- package/docs-site/zh/tutorials/docker-in-docker.mdx +52 -43
- package/docs-site/zh/tutorials/eval-groups.mdx +6 -6
- package/docs-site/zh/tutorials/evaluation-kinds.mdx +3 -3
- package/docs-site/zh/tutorials/experiments.mdx +2 -3
- package/docs-site/zh/tutorials/handle-execution-failures.mdx +18 -10
- package/docs-site/zh/tutorials/install-custom-sandbox-agent.mdx +16 -8
- package/docs-site/zh/tutorials/nixos-managed-dind.mdx +160 -0
- package/docs-site/zh/tutorials/plugins.mdx +14 -0
- package/docs-site/zh/tutorials/rerun-and-cache.mdx +4 -2
- package/docs-site/zh/tutorials/sandbox-agent.mdx +17 -11
- package/docs-site/zh/tutorials/sandbox-providers.mdx +17 -13
- package/docs-site/zh/tutorials/sandbox-reuse.mdx +12 -19
- package/docs-site/zh/tutorials/select-and-preview.mdx +65 -0
- package/docs-site/zh/tutorials/verify-judge.mdx +78 -0
- package/docs-site/zh/tutorials/viewing-results.mdx +38 -1
- package/docs-site/zh/tutorials/write-experiment.mdx +7 -5
- package/docs-site/zh/tutorials/write-send.mdx +9 -8
- package/package.json +9 -5
- package/dist/report/built-in/overview.cjs +0 -44
- package/dist/report/built-in/overview.cjs.map +0 -1
- package/dist/report/built-in/overview.d.cts +0 -6
- package/dist/report/built-in/overview.d.mts +0 -6
- package/dist/report/built-in/overview.d.ts +0 -6
- package/dist/report/built-in/overview.js +0 -9
- package/dist/report/built-in/overview.js.map +0 -1
- package/dist/runner/gate-lease.cjs +0 -283
- package/dist/runner/gate-lease.cjs.map +0 -1
- package/dist/runner/gate-lease.d.cts +0 -62
- package/dist/runner/gate-lease.d.mts +0 -62
- package/dist/runner/gate-lease.d.ts +0 -62
- package/dist/runner/gate-lease.js +0 -22
- package/dist/runner/gate-lease.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":";;;AAgBa,QAAA,mBAAmB,GAAkB,MAAM,CAAC,iCAAiC,CAAC,CAAC;AAC/E,QAAA,uBAAuB,GAAkB,MAAM,CAAC,qCAAqC,CAAC,CAAC;AACvF,QAAA,qBAAqB,GAAkB,MAAM,CAAC,mCAAmC,CAAC,CAAC;AACnF,QAAA,oBAAoB,GAAkB,MAAM,CAAC,kCAAkC,CAAC,CAAC;AACjF,QAAA,wBAAwB,GAAkB,MAAM,CAAC,sCAAsC,CAAC,CAAC","sourcesContent":["import type { Effect } from \"effect\";\nimport type { RecordAttachmentBlobs, RecordAttachmentPayloadSnapshot, RecordAttachmentWrite, } from \"../attachment/types.ts\";\nimport type { AssertionsAttachment, } from \"../family/assertions.ts\";\nimport type { ArtifactsAttachment, } from \"../family/artifacts.ts\";\nimport type { FileChangesAttachment, } from \"../family/file-changes.ts\";\nimport type { AttemptObservabilityAttachment, RunObservabilityAttachment, } from \"../family/observability.ts\";\nimport type { SourcesAttachment, } from \"../family/sources.ts\";\nimport type { SourceNavigationAttachment, } from \"../family/source-navigation.ts\";\nimport type { AttemptDocument, MemberDocument, RecordSlotIdentity, RunDocument, } from \"../model/core.ts\";\nimport type { RunContext } from \"../model/run-context.ts\";\nimport type { AttemptId, ExperimentId, RunId, SlotId, UtcMillis, } from \"../model/identifiers.ts\";\nimport type { RecordRoot } from \"../platform/root.ts\";\nimport type { RecordCoreRead, RecordWarning } from \"../model/read-state.ts\";\nimport type { NonEmptyRecordIssues } from \"../errors/record-errors.ts\";\nimport type { RecordReaderOpenError, RecordReaderReadError } from \"../reader/errors.ts\";\nimport type { RecordWriteError } from \"../writer/types.ts\";\nexport const selectedRunRefBrand: unique symbol = Symbol(\"@niceeval/record/SelectedRunRef\");\nexport const selectedAttemptRefBrand: unique symbol = Symbol(\"@niceeval/record/SelectedAttemptRef\");\nexport const selectedOwnerRefBrand: unique symbol = Symbol(\"@niceeval/record/SelectedOwnerRef\");\nexport const runWriteSessionBrand: unique symbol = Symbol(\"@niceeval/record/RunWriteSession\");\nexport const attemptWriteSessionBrand: unique symbol = Symbol(\"@niceeval/record/AttemptWriteSession\");\n/** Nominal ref issued only by one live RecordReadSession. */\nexport interface SelectedRunRef {\n readonly runId: RunId;\n readonly [selectedRunRefBrand]: () => void;\n}\n/** Nominal exact reference to one immutable origin Attempt. */\nexport interface SelectedAttemptRef {\n readonly originRunId: RunId;\n readonly attemptId: AttemptId;\n readonly [selectedAttemptRefBrand]: () => void;\n}\n/** Owner handle for a later lazy fixed-family read. */\nexport interface SelectedOwnerRef {\n readonly [selectedOwnerRefBrand]: () => void;\n}\n/**\n * The Host exposes the fixed-family states without importing maintenance.\n * A reachable older version is migration-required. Any other well-formed,\n * non-current version remains unsupported data; malformed envelopes and\n * closures are invalid, never a reader-wide failure.\n */\nexport type FixedFamilyRead<Payload> = {\n readonly state: \"migration-required\";\n readonly family: string;\n readonly fromSchemaVersion: number;\n readonly toSchemaVersion: number;\n readonly command: \"niceeval migrate\";\n} | {\n readonly state: \"available\";\n /** Direct business fields from the current owner value definition. */\n readonly value: RecordAttachmentPayloadSnapshot<Payload>;\n /** Owner-local blob closure for refs found inside `value`. */\n readonly blobs: RecordAttachmentBlobs;\n} | {\n readonly state: \"not-recorded\";\n} | {\n readonly state: \"unsupported\";\n readonly family: string;\n readonly schemaVersion: number;\n} | {\n readonly state: \"invalid\";\n readonly issues: NonEmptyRecordIssues;\n};\n/**\n * These aliases are deliberately owner- and method-specific. Runtime checks\n * additionally require the one installed static descriptor for each method,\n * so a caller cannot introduce another family through this boundary.\n */\nexport type SourcesWrite<E = never, R = never> = RecordAttachmentWrite<\"run\", E, R>;\nexport type RunObservabilityWrite<E = never, R = never> = RecordAttachmentWrite<\"run\", E, R>;\nexport type RunArtifactsWrite<E = never, R = never> = RecordAttachmentWrite<\"run\", E, R>;\nexport type AssertionsWrite<E = never, R = never> = RecordAttachmentWrite<\"attempt\", E, R>;\nexport type AttemptObservabilityWrite<E = never, R = never> = RecordAttachmentWrite<\"attempt\", E, R>;\nexport type FileChangesWrite<E = never, R = never> = RecordAttachmentWrite<\"attempt\", E, R>;\nexport type SourceNavigationWrite<E = never, R = never> = RecordAttachmentWrite<\"attempt\", E, R>;\nexport type AttemptArtifactsWrite<E = never, R = never> = RecordAttachmentWrite<\"attempt\", E, R>;\nexport type RecordSelectionProblem = {\n readonly code: \"incomplete-run\";\n readonly runId: RunId;\n} | {\n readonly code: \"record-core-invalid\";\n readonly runId: RunId;\n} | {\n readonly code: \"selection-run-missing\";\n readonly runId: RunId;\n};\nexport interface RecordSelectionRequest {\n /** Omitted means every Run whose complete marker existed during this scan. */\n readonly runIds?: readonly RunId[];\n}\n/**\n * Closed Run facts verified by scanSelection. They retain the denominator\n * frame if a later member read becomes unavailable; they are not a durable\n * schema and contain no owner capability.\n */\nexport interface SelectedRunFacts {\n readonly run: SelectedRunRef;\n readonly experimentId: ExperimentId;\n readonly startedAt: UtcMillis;\n readonly completedAt: UtcMillis;\n readonly expectedSlots: readonly RecordSlotIdentity[];\n}\n/** A closed candidate set with only selected minimal Core; never Attachment payloads. */\nexport interface RecordSelection {\n readonly runRefs: readonly SelectedRunRef[];\n readonly runFacts: readonly SelectedRunFacts[];\n readonly expectedSlots: readonly {\n readonly run: SelectedRunRef;\n /** Closed at scan time from the selected Run, not stored in RecordSlotIdentity. */\n readonly experimentId: ExperimentId;\n readonly slot: RecordSlotIdentity;\n }[];\n readonly problems: readonly RecordSelectionProblem[];\n readonly warnings: readonly RecordWarning[];\n}\nexport interface ReadableRun {\n readonly ref: SelectedRunRef;\n readonly owner: SelectedOwnerRef;\n readonly document: RunDocument;\n readonly members: readonly {\n readonly document: MemberDocument;\n readonly attempt: SelectedAttemptRef | null;\n }[];\n}\nexport interface ReadableAttempt {\n readonly ref: SelectedAttemptRef;\n readonly owner: SelectedOwnerRef;\n readonly document: AttemptDocument;\n /**\n * Verified while resolving the exact nominal Attempt reference. It is the\n * only origin Run Core projection Sample may use. In particular, a carried\n * or accepted member must retain this origin's execution facts rather than\n * substituting the selected target Run.\n */\n readonly origin: {\n readonly owner: SelectedOwnerRef;\n readonly runId: RunId;\n readonly experimentId: ExperimentId;\n readonly startedAt: UtcMillis;\n readonly context: RunContext;\n };\n}\nexport interface RecordReadSession {\n readonly selectRuns: (request?: RecordSelectionRequest) => Effect.Effect<RecordSelection, RecordReaderReadError>;\n readonly readRun: (ref: SelectedRunRef) => Effect.Effect<RecordCoreRead<ReadableRun>, RecordReaderReadError>;\n readonly readAttempt: (ref: SelectedAttemptRef) => Effect.Effect<RecordCoreRead<ReadableAttempt>, RecordReaderReadError>;\n readonly readAssertions: (owner: SelectedOwnerRef) => Effect.Effect<FixedFamilyRead<AssertionsAttachment>, RecordReaderReadError>;\n readonly readAttemptObservability: (owner: SelectedOwnerRef) => Effect.Effect<FixedFamilyRead<AttemptObservabilityAttachment>, RecordReaderReadError>;\n readonly readFileChanges: (owner: SelectedOwnerRef) => Effect.Effect<FixedFamilyRead<FileChangesAttachment>, RecordReaderReadError>;\n readonly readSourceNavigation: (owner: SelectedOwnerRef) => Effect.Effect<FixedFamilyRead<SourceNavigationAttachment>, RecordReaderReadError>;\n readonly readAttemptArtifacts: (owner: SelectedOwnerRef) => Effect.Effect<FixedFamilyRead<ArtifactsAttachment>, RecordReaderReadError>;\n readonly readSources: (owner: SelectedOwnerRef) => Effect.Effect<FixedFamilyRead<SourcesAttachment>, RecordReaderReadError>;\n readonly readRunObservability: (owner: SelectedOwnerRef) => Effect.Effect<FixedFamilyRead<RunObservabilityAttachment>, RecordReaderReadError>;\n readonly readRunArtifacts: (owner: SelectedOwnerRef) => Effect.Effect<FixedFamilyRead<ArtifactsAttachment>, RecordReaderReadError>;\n}\nexport interface CreateRunRequest {\n readonly root: RecordRoot;\n readonly experimentId: ExperimentId;\n /** Required historical interpretation facts, written once into `run.json`. */\n readonly context: RunContext;\n readonly startedAt: UtcMillis;\n readonly expectedSlots: readonly RecordSlotIdentity[];\n}\nexport interface CreateReferenceRunRequest extends CreateRunRequest {\n}\nexport interface RunCompletion {\n readonly completedAt: UtcMillis;\n}\nexport interface RecordSealReceipt {\n readonly runId: RunId;\n readonly state: \"sealed\";\n}\nexport interface AttemptWriteSession {\n readonly attemptId: AttemptId;\n readonly slotId: SlotId;\n readonly [attemptWriteSessionBrand]: () => void;\n readonly complete: (outcome: AttemptDocument[\"outcome\"]) => Effect.Effect<void, RecordWriteError>;\n readonly writeAssertions: <E, R>(value: AssertionsWrite<E, R>) => Effect.Effect<void, RecordWriteError | E, R>;\n readonly writeAttemptObservability: <E, R>(value: AttemptObservabilityWrite<E, R>) => Effect.Effect<void, RecordWriteError | E, R>;\n readonly writeFileChanges: <E, R>(value: FileChangesWrite<E, R>) => Effect.Effect<void, RecordWriteError | E, R>;\n readonly writeSourceNavigation: <E, R>(value: SourceNavigationWrite<E, R>) => Effect.Effect<void, RecordWriteError | E, R>;\n readonly writeAttemptArtifacts: <E, R>(value: AttemptArtifactsWrite<E, R>) => Effect.Effect<void, RecordWriteError | E, R>;\n}\n/** One session owns exactly one freshly exclusive RunId directory. */\nexport interface RunWriteSession {\n readonly runId: RunId;\n readonly [runWriteSessionBrand]: () => void;\n readonly createAttempt: (input: {\n readonly slotId: SlotId;\n }) => Effect.Effect<AttemptWriteSession, RecordWriteError>;\n readonly referenceAttempt: (input: {\n readonly slotId: SlotId;\n readonly action: \"carried\" | \"accepted\";\n readonly attempt: SelectedAttemptRef;\n }) => Effect.Effect<void, RecordWriteError>;\n /**\n * Explicit adoption / rename: occupy one current target Slot with an already\n * selected origin Attempt. The target Slot identity may differ from the\n * origin Attempt. This is not a generic Attachment writer.\n */\n readonly recordAcceptedMembership: (input: {\n readonly slotId: SlotId;\n readonly attempt: SelectedAttemptRef;\n }) => Effect.Effect<void, RecordWriteError>;\n readonly recordTerminalMember: (input: {\n readonly slotId: SlotId;\n readonly action: \"not-dispatched\" | \"interrupted\";\n }) => Effect.Effect<void, RecordWriteError>;\n readonly writeSources: <E, R>(value: SourcesWrite<E, R>) => Effect.Effect<void, RecordWriteError | E, R>;\n readonly writeRunObservability: <E, R>(value: RunObservabilityWrite<E, R>) => Effect.Effect<void, RecordWriteError | E, R>;\n readonly writeRunArtifacts: <E, R>(value: RunArtifactsWrite<E, R>) => Effect.Effect<void, RecordWriteError | E, R>;\n readonly seal: (completion: RunCompletion) => Effect.Effect<RecordSealReceipt, RecordWriteError>;\n}\n/** A Run created solely from already-selected, sealed Attempts. */\nexport interface ReferenceRunWriteSession {\n readonly runId: RunId;\n readonly [runWriteSessionBrand]: () => void;\n readonly referenceAttempt: RunWriteSession[\"referenceAttempt\"];\n readonly recordAcceptedMembership: RunWriteSession[\"recordAcceptedMembership\"];\n readonly recordTerminalMember: RunWriteSession[\"recordTerminalMember\"];\n readonly writeRunObservability: RunWriteSession[\"writeRunObservability\"];\n readonly writeRunArtifacts: RunWriteSession[\"writeRunArtifacts\"];\n readonly seal: RunWriteSession[\"seal\"];\n}\nexport type RecordFormatInspection = {\n readonly state: \"already-current\";\n readonly format: \"niceeval.record\";\n} | {\n readonly state: \"unsupported-format\";\n readonly format: string;\n};\nexport interface RecordMigrationPlan {\n readonly state: \"already-current\" | \"unsupported-format\";\n readonly format: string;\n}\nexport interface RecordMigrationReceipt {\n readonly state: \"already-current\";\n readonly format: \"niceeval.record\";\n}\nexport interface RecordMaintenanceSession {\n readonly inspect: () => Effect.Effect<RecordFormatInspection, RecordReaderOpenError>;\n readonly planMigrate: () => Effect.Effect<RecordMigrationPlan, RecordReaderOpenError>;\n readonly applyMigrate: (plan: RecordMigrationPlan) => Effect.Effect<RecordMigrationReceipt, RecordReaderOpenError>;\n}\nexport interface RecordHostSDK {\n readonly current: {\n readonly openRead: (input: {\n readonly root: RecordRoot;\n }) => Effect.Effect<RecordReadSession, RecordReaderOpenError, import(\"effect\").Scope.Scope | import(\"../platform/services.ts\").RecordFileSystem | import(\"../../coordination/record-leases.ts\").RecordCoordination>;\n readonly createRun: (request: CreateRunRequest) => Effect.Effect<RunWriteSession, RecordReaderOpenError | RecordWriteError, import(\"effect\").Scope.Scope | import(\"../platform/services.ts\").RecordFileSystem | import(\"../platform/services.ts\").RecordEntropy | import(\"../../coordination/record-leases.ts\").RecordCoordination>;\n readonly createReferenceRun: (request: CreateReferenceRunRequest) => Effect.Effect<ReferenceRunWriteSession, RecordReaderOpenError | RecordWriteError, import(\"effect\").Scope.Scope | import(\"../platform/services.ts\").RecordFileSystem | import(\"../platform/services.ts\").RecordEntropy | import(\"../../coordination/record-leases.ts\").RecordCoordination>;\n };\n readonly maintenance: {\n readonly open: (input: {\n readonly root: RecordRoot;\n }) => Effect.Effect<RecordMaintenanceSession, RecordReaderOpenError, import(\"effect\").Scope.Scope | import(\"../platform/services.ts\").RecordFileSystem | import(\"../../coordination/record-leases.ts\").RecordCoordination>;\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":";;;AAiBa,QAAA,mBAAmB,GAAkB,MAAM,CAAC,iCAAiC,CAAC,CAAC;AAC/E,QAAA,uBAAuB,GAAkB,MAAM,CAAC,qCAAqC,CAAC,CAAC;AACvF,QAAA,qBAAqB,GAAkB,MAAM,CAAC,mCAAmC,CAAC,CAAC;AACnF,QAAA,oBAAoB,GAAkB,MAAM,CAAC,kCAAkC,CAAC,CAAC;AACjF,QAAA,wBAAwB,GAAkB,MAAM,CAAC,sCAAsC,CAAC,CAAC","sourcesContent":["import type { Effect } from \"effect\";\nimport type { RecordAttachmentBlobs, RecordAttachmentPayloadSnapshot, RecordAttachmentWrite, } from \"../attachment/types.ts\";\nimport type { AssertionsAttachment, } from \"../family/assertions.ts\";\nimport type { ArtifactsAttachment, } from \"../family/artifacts.ts\";\nimport type { FileChangesAttachment, } from \"../family/file-changes.ts\";\nimport type { AttemptObservabilityAttachment, RunObservabilityAttachment, } from \"../family/observability.ts\";\nimport type { SourcesAttachment, } from \"../family/sources.ts\";\nimport type { SourceNavigationAttachment, } from \"../family/source-navigation.ts\";\nimport type { AttemptDocument, MemberDocument, RecordSlotIdentity, RunDocument, } from \"../model/core.ts\";\nimport type { RunContext } from \"../model/run-context.ts\";\nimport type { AttemptId, ExperimentId, RunId, SlotId, UtcMillis, } from \"../model/identifiers.ts\";\nimport type { RecordRoot } from \"../platform/root.ts\";\nimport type { RecordBackupState } from \"../platform/services.ts\";\nimport type { RecordCoreRead, RecordWarning } from \"../model/read-state.ts\";\nimport type { NonEmptyRecordIssues } from \"../errors/record-errors.ts\";\nimport type { RecordMaintenanceError, RecordMaintenanceOpenError, RecordReaderOpenError, RecordReaderReadError, } from \"../reader/errors.ts\";\nimport type { RecordWriteError } from \"../writer/types.ts\";\nexport const selectedRunRefBrand: unique symbol = Symbol(\"@niceeval/record/SelectedRunRef\");\nexport const selectedAttemptRefBrand: unique symbol = Symbol(\"@niceeval/record/SelectedAttemptRef\");\nexport const selectedOwnerRefBrand: unique symbol = Symbol(\"@niceeval/record/SelectedOwnerRef\");\nexport const runWriteSessionBrand: unique symbol = Symbol(\"@niceeval/record/RunWriteSession\");\nexport const attemptWriteSessionBrand: unique symbol = Symbol(\"@niceeval/record/AttemptWriteSession\");\n/** Nominal ref issued only by one live RecordReadSession. */\nexport interface SelectedRunRef {\n readonly runId: RunId;\n readonly [selectedRunRefBrand]: () => void;\n}\n/** Nominal exact reference to one immutable origin Attempt. */\nexport interface SelectedAttemptRef {\n readonly originRunId: RunId;\n readonly attemptId: AttemptId;\n readonly [selectedAttemptRefBrand]: () => void;\n}\n/** Owner handle for a later lazy fixed-family read. */\nexport interface SelectedOwnerRef {\n readonly [selectedOwnerRefBrand]: () => void;\n}\n/**\n * The Host exposes the fixed-family states without importing maintenance.\n * A reachable older version is migration-required. Any other well-formed,\n * non-current version remains unsupported data; malformed envelopes and\n * closures are invalid, never a reader-wide failure.\n */\nexport type FixedFamilyRead<Payload> = {\n readonly state: \"migration-required\";\n readonly family: string;\n readonly fromSchemaVersion: number;\n readonly toSchemaVersion: number;\n readonly command: \"niceeval migrate\";\n} | {\n readonly state: \"available\";\n /** Direct business fields from the current owner value definition. */\n readonly value: RecordAttachmentPayloadSnapshot<Payload>;\n /** Owner-local blob closure for refs found inside `value`. */\n readonly blobs: RecordAttachmentBlobs;\n} | {\n readonly state: \"not-recorded\";\n} | {\n readonly state: \"unsupported\";\n readonly family: string;\n readonly schemaVersion: number;\n} | {\n readonly state: \"invalid\";\n readonly issues: NonEmptyRecordIssues;\n};\n/**\n * These aliases are deliberately owner- and method-specific. Runtime checks\n * additionally require the one installed static descriptor for each method,\n * so a caller cannot introduce another family through this boundary.\n */\nexport type SourcesWrite<E = never, R = never> = RecordAttachmentWrite<\"run\", E, R>;\nexport type RunObservabilityWrite<E = never, R = never> = RecordAttachmentWrite<\"run\", E, R>;\nexport type RunArtifactsWrite<E = never, R = never> = RecordAttachmentWrite<\"run\", E, R>;\nexport type AssertionsWrite<E = never, R = never> = RecordAttachmentWrite<\"attempt\", E, R>;\nexport type AttemptObservabilityWrite<E = never, R = never> = RecordAttachmentWrite<\"attempt\", E, R>;\nexport type FileChangesWrite<E = never, R = never> = RecordAttachmentWrite<\"attempt\", E, R>;\nexport type SourceNavigationWrite<E = never, R = never> = RecordAttachmentWrite<\"attempt\", E, R>;\nexport type AttemptArtifactsWrite<E = never, R = never> = RecordAttachmentWrite<\"attempt\", E, R>;\nexport type RecordSelectionProblem = {\n readonly code: \"incomplete-run\";\n readonly runId: RunId;\n} | {\n readonly code: \"record-core-invalid\";\n readonly runId: RunId;\n} | {\n readonly code: \"selection-run-missing\";\n readonly runId: RunId;\n};\nexport interface RecordSelectionRequest {\n /** Omitted means every Run whose complete marker existed during this scan. */\n readonly runIds?: readonly RunId[];\n}\n/**\n * Closed Run facts verified by scanSelection. They retain the denominator\n * frame if a later member read becomes unavailable; they are not a durable\n * schema and contain no owner capability.\n */\nexport interface SelectedRunFacts {\n readonly run: SelectedRunRef;\n readonly experimentId: ExperimentId;\n readonly startedAt: UtcMillis;\n readonly completedAt: UtcMillis;\n readonly expectedSlots: readonly RecordSlotIdentity[];\n}\n/** A closed candidate set with only selected minimal Core; never Attachment payloads. */\nexport interface RecordSelection {\n readonly runRefs: readonly SelectedRunRef[];\n readonly runFacts: readonly SelectedRunFacts[];\n readonly expectedSlots: readonly {\n readonly run: SelectedRunRef;\n /** Closed at scan time from the selected Run, not stored in RecordSlotIdentity. */\n readonly experimentId: ExperimentId;\n readonly slot: RecordSlotIdentity;\n }[];\n readonly problems: readonly RecordSelectionProblem[];\n readonly warnings: readonly RecordWarning[];\n}\nexport interface ReadableRun {\n readonly ref: SelectedRunRef;\n readonly owner: SelectedOwnerRef;\n readonly document: RunDocument;\n readonly members: readonly {\n readonly document: MemberDocument;\n readonly attempt: SelectedAttemptRef | null;\n }[];\n}\nexport interface ReadableAttempt {\n readonly ref: SelectedAttemptRef;\n readonly owner: SelectedOwnerRef;\n readonly document: AttemptDocument;\n /**\n * Verified while resolving the exact nominal Attempt reference. It is the\n * only origin Run Core projection Sample may use. In particular, a carried\n * or accepted member must retain this origin's execution facts rather than\n * substituting the selected target Run.\n */\n readonly origin: {\n readonly owner: SelectedOwnerRef;\n readonly runId: RunId;\n readonly experimentId: ExperimentId;\n readonly startedAt: UtcMillis;\n readonly context: RunContext;\n };\n}\nexport interface RecordReadSession {\n readonly selectRuns: (request?: RecordSelectionRequest) => Effect.Effect<RecordSelection, RecordReaderReadError>;\n readonly readRun: (ref: SelectedRunRef) => Effect.Effect<RecordCoreRead<ReadableRun>, RecordReaderReadError>;\n readonly readAttempt: (ref: SelectedAttemptRef) => Effect.Effect<RecordCoreRead<ReadableAttempt>, RecordReaderReadError>;\n readonly readAssertions: (owner: SelectedOwnerRef) => Effect.Effect<FixedFamilyRead<AssertionsAttachment>, RecordReaderReadError>;\n readonly readAttemptObservability: (owner: SelectedOwnerRef) => Effect.Effect<FixedFamilyRead<AttemptObservabilityAttachment>, RecordReaderReadError>;\n readonly readFileChanges: (owner: SelectedOwnerRef) => Effect.Effect<FixedFamilyRead<FileChangesAttachment>, RecordReaderReadError>;\n readonly readSourceNavigation: (owner: SelectedOwnerRef) => Effect.Effect<FixedFamilyRead<SourceNavigationAttachment>, RecordReaderReadError>;\n readonly readAttemptArtifacts: (owner: SelectedOwnerRef) => Effect.Effect<FixedFamilyRead<ArtifactsAttachment>, RecordReaderReadError>;\n readonly readSources: (owner: SelectedOwnerRef) => Effect.Effect<FixedFamilyRead<SourcesAttachment>, RecordReaderReadError>;\n readonly readRunObservability: (owner: SelectedOwnerRef) => Effect.Effect<FixedFamilyRead<RunObservabilityAttachment>, RecordReaderReadError>;\n readonly readRunArtifacts: (owner: SelectedOwnerRef) => Effect.Effect<FixedFamilyRead<ArtifactsAttachment>, RecordReaderReadError>;\n}\nexport interface CreateRunRequest {\n readonly root: RecordRoot;\n readonly experimentId: ExperimentId;\n /** Required historical interpretation facts, written once into `run.json`. */\n readonly context: RunContext;\n readonly startedAt: UtcMillis;\n readonly expectedSlots: readonly RecordSlotIdentity[];\n}\nexport interface CreateReferenceRunRequest extends CreateRunRequest {\n}\nexport interface RunCompletion {\n readonly completedAt: UtcMillis;\n}\nexport interface RecordSealReceipt {\n readonly runId: RunId;\n readonly state: \"sealed\";\n}\nexport interface AttemptWriteSession {\n readonly attemptId: AttemptId;\n readonly slotId: SlotId;\n readonly [attemptWriteSessionBrand]: () => void;\n readonly complete: (outcome: AttemptDocument[\"outcome\"]) => Effect.Effect<void, RecordWriteError>;\n readonly writeAssertions: <E, R>(value: AssertionsWrite<E, R>) => Effect.Effect<void, RecordWriteError | E, R>;\n readonly writeAttemptObservability: <E, R>(value: AttemptObservabilityWrite<E, R>) => Effect.Effect<void, RecordWriteError | E, R>;\n readonly writeFileChanges: <E, R>(value: FileChangesWrite<E, R>) => Effect.Effect<void, RecordWriteError | E, R>;\n readonly writeSourceNavigation: <E, R>(value: SourceNavigationWrite<E, R>) => Effect.Effect<void, RecordWriteError | E, R>;\n readonly writeAttemptArtifacts: <E, R>(value: AttemptArtifactsWrite<E, R>) => Effect.Effect<void, RecordWriteError | E, R>;\n}\n/** One session owns exactly one freshly exclusive RunId directory. */\nexport interface RunWriteSession {\n readonly runId: RunId;\n readonly [runWriteSessionBrand]: () => void;\n readonly createAttempt: (input: {\n readonly slotId: SlotId;\n }) => Effect.Effect<AttemptWriteSession, RecordWriteError>;\n readonly referenceAttempt: (input: {\n readonly slotId: SlotId;\n readonly action: \"carried\" | \"accepted\";\n readonly attempt: SelectedAttemptRef;\n }) => Effect.Effect<void, RecordWriteError>;\n /**\n * Explicit adoption / rename: occupy one current target Slot with an already\n * selected origin Attempt. The target Slot identity may differ from the\n * origin Attempt. This is not a generic Attachment writer.\n */\n readonly recordAcceptedMembership: (input: {\n readonly slotId: SlotId;\n readonly attempt: SelectedAttemptRef;\n }) => Effect.Effect<void, RecordWriteError>;\n readonly recordTerminalMember: (input: {\n readonly slotId: SlotId;\n readonly action: \"not-dispatched\" | \"interrupted\";\n }) => Effect.Effect<void, RecordWriteError>;\n readonly writeSources: <E, R>(value: SourcesWrite<E, R>) => Effect.Effect<void, RecordWriteError | E, R>;\n readonly writeRunObservability: <E, R>(value: RunObservabilityWrite<E, R>) => Effect.Effect<void, RecordWriteError | E, R>;\n readonly writeRunArtifacts: <E, R>(value: RunArtifactsWrite<E, R>) => Effect.Effect<void, RecordWriteError | E, R>;\n readonly seal: (completion: RunCompletion) => Effect.Effect<RecordSealReceipt, RecordWriteError>;\n}\n/** A Run created solely from already-selected, sealed Attempts. */\nexport interface ReferenceRunWriteSession {\n readonly runId: RunId;\n readonly [runWriteSessionBrand]: () => void;\n readonly referenceAttempt: RunWriteSession[\"referenceAttempt\"];\n readonly recordAcceptedMembership: RunWriteSession[\"recordAcceptedMembership\"];\n readonly recordTerminalMember: RunWriteSession[\"recordTerminalMember\"];\n readonly writeRunObservability: RunWriteSession[\"writeRunObservability\"];\n readonly writeRunArtifacts: RunWriteSession[\"writeRunArtifacts\"];\n readonly seal: RunWriteSession[\"seal\"];\n}\nexport type RecordFormatInspection = {\n readonly state: \"already-current\";\n readonly format: \"niceeval.record\";\n} | {\n readonly state: \"migration-required\";\n readonly format: \"niceeval.record\";\n} | {\n readonly state: \"unsupported-format\";\n readonly format: string;\n};\nexport interface RecordAttachmentMigrationTarget {\n readonly family: string;\n readonly owner: \"attempt\" | \"run\";\n readonly runId: RunId;\n readonly attemptId?: AttemptId;\n readonly fromSchemaVersion: number;\n readonly toSchemaVersion: number;\n}\nexport type RecordMigrationPlan = {\n readonly state: \"already-current\";\n readonly format: \"niceeval.record\";\n} | {\n readonly state: \"migration-required\";\n readonly format: \"niceeval.record\";\n readonly backup: RecordBackupState;\n readonly root: {\n readonly fromSchemaVersion: number;\n readonly toSchemaVersion: number;\n } | null;\n readonly attachments: readonly RecordAttachmentMigrationTarget[];\n} | {\n readonly state: \"unsupported-format\";\n readonly format: string;\n};\nexport interface RecordMigrationReceipt {\n readonly state: \"already-current\" | \"migrated\";\n readonly format: \"niceeval.record\";\n}\nexport interface RecordMaintenanceSession {\n readonly inspect: () => Effect.Effect<RecordFormatInspection, RecordMaintenanceError>;\n readonly planMigrate: () => Effect.Effect<RecordMigrationPlan, RecordMaintenanceError>;\n readonly applyMigrate: (plan: RecordMigrationPlan) => Effect.Effect<RecordMigrationReceipt, RecordMaintenanceError>;\n}\nexport interface RecordHostSDK {\n readonly current: {\n readonly openRead: (input: {\n readonly root: RecordRoot;\n }) => Effect.Effect<RecordReadSession, RecordReaderOpenError, import(\"effect\").Scope.Scope | import(\"../platform/services.ts\").RecordFileSystem | import(\"../../coordination/record-leases.ts\").RecordCoordination>;\n readonly createRun: (request: CreateRunRequest) => Effect.Effect<RunWriteSession, RecordReaderOpenError | RecordWriteError, import(\"effect\").Scope.Scope | import(\"../platform/services.ts\").RecordFileSystem | import(\"../platform/services.ts\").RecordEntropy | import(\"../../coordination/record-leases.ts\").RecordCoordination>;\n readonly createReferenceRun: (request: CreateReferenceRunRequest) => Effect.Effect<ReferenceRunWriteSession, RecordReaderOpenError | RecordWriteError, import(\"effect\").Scope.Scope | import(\"../platform/services.ts\").RecordFileSystem | import(\"../platform/services.ts\").RecordEntropy | import(\"../../coordination/record-leases.ts\").RecordCoordination>;\n };\n readonly maintenance: {\n readonly open: (input: {\n readonly root: RecordRoot;\n }) => Effect.Effect<RecordMaintenanceSession, RecordMaintenanceOpenError, import(\"effect\").Scope.Scope | import(\"../platform/services.ts\").RecordFileSystem | import(\"../platform/services.ts\").RecordGit | import(\"../../coordination/record-leases.ts\").RecordCoordination>;\n };\n}\n"]}
|
|
@@ -10,9 +10,10 @@ import type { AttemptDocument, MemberDocument, RecordSlotIdentity, RunDocument }
|
|
|
10
10
|
import type { RunContext } from "../model/run-context.cjs";
|
|
11
11
|
import type { AttemptId, ExperimentId, RunId, SlotId, UtcMillis } from "../model/identifiers.cjs";
|
|
12
12
|
import type { RecordRoot } from "../platform/root.cjs";
|
|
13
|
+
import type { RecordBackupState } from "../platform/services.cjs";
|
|
13
14
|
import type { RecordCoreRead, RecordWarning } from "../model/read-state.cjs";
|
|
14
15
|
import type { NonEmptyRecordIssues } from "../errors/record-errors.cjs";
|
|
15
|
-
import type { RecordReaderOpenError, RecordReaderReadError } from "../reader/errors.cjs";
|
|
16
|
+
import type { RecordMaintenanceError, RecordMaintenanceOpenError, RecordReaderOpenError, RecordReaderReadError } from "../reader/errors.cjs";
|
|
16
17
|
import type { RecordWriteError } from "../writer/types.cjs";
|
|
17
18
|
export declare const selectedRunRefBrand: unique symbol;
|
|
18
19
|
export declare const selectedAttemptRefBrand: unique symbol;
|
|
@@ -226,22 +227,45 @@ export interface ReferenceRunWriteSession {
|
|
|
226
227
|
export type RecordFormatInspection = {
|
|
227
228
|
readonly state: "already-current";
|
|
228
229
|
readonly format: "niceeval.record";
|
|
230
|
+
} | {
|
|
231
|
+
readonly state: "migration-required";
|
|
232
|
+
readonly format: "niceeval.record";
|
|
229
233
|
} | {
|
|
230
234
|
readonly state: "unsupported-format";
|
|
231
235
|
readonly format: string;
|
|
232
236
|
};
|
|
233
|
-
export interface
|
|
234
|
-
readonly
|
|
235
|
-
readonly
|
|
237
|
+
export interface RecordAttachmentMigrationTarget {
|
|
238
|
+
readonly family: string;
|
|
239
|
+
readonly owner: "attempt" | "run";
|
|
240
|
+
readonly runId: RunId;
|
|
241
|
+
readonly attemptId?: AttemptId;
|
|
242
|
+
readonly fromSchemaVersion: number;
|
|
243
|
+
readonly toSchemaVersion: number;
|
|
236
244
|
}
|
|
237
|
-
export
|
|
245
|
+
export type RecordMigrationPlan = {
|
|
238
246
|
readonly state: "already-current";
|
|
239
247
|
readonly format: "niceeval.record";
|
|
248
|
+
} | {
|
|
249
|
+
readonly state: "migration-required";
|
|
250
|
+
readonly format: "niceeval.record";
|
|
251
|
+
readonly backup: RecordBackupState;
|
|
252
|
+
readonly root: {
|
|
253
|
+
readonly fromSchemaVersion: number;
|
|
254
|
+
readonly toSchemaVersion: number;
|
|
255
|
+
} | null;
|
|
256
|
+
readonly attachments: readonly RecordAttachmentMigrationTarget[];
|
|
257
|
+
} | {
|
|
258
|
+
readonly state: "unsupported-format";
|
|
259
|
+
readonly format: string;
|
|
260
|
+
};
|
|
261
|
+
export interface RecordMigrationReceipt {
|
|
262
|
+
readonly state: "already-current" | "migrated";
|
|
263
|
+
readonly format: "niceeval.record";
|
|
240
264
|
}
|
|
241
265
|
export interface RecordMaintenanceSession {
|
|
242
|
-
readonly inspect: () => Effect.Effect<RecordFormatInspection,
|
|
243
|
-
readonly planMigrate: () => Effect.Effect<RecordMigrationPlan,
|
|
244
|
-
readonly applyMigrate: (plan: RecordMigrationPlan) => Effect.Effect<RecordMigrationReceipt,
|
|
266
|
+
readonly inspect: () => Effect.Effect<RecordFormatInspection, RecordMaintenanceError>;
|
|
267
|
+
readonly planMigrate: () => Effect.Effect<RecordMigrationPlan, RecordMaintenanceError>;
|
|
268
|
+
readonly applyMigrate: (plan: RecordMigrationPlan) => Effect.Effect<RecordMigrationReceipt, RecordMaintenanceError>;
|
|
245
269
|
}
|
|
246
270
|
export interface RecordHostSDK {
|
|
247
271
|
readonly current: {
|
|
@@ -254,6 +278,6 @@ export interface RecordHostSDK {
|
|
|
254
278
|
readonly maintenance: {
|
|
255
279
|
readonly open: (input: {
|
|
256
280
|
readonly root: RecordRoot;
|
|
257
|
-
}) => Effect.Effect<RecordMaintenanceSession,
|
|
281
|
+
}) => Effect.Effect<RecordMaintenanceSession, RecordMaintenanceOpenError, import("effect").Scope.Scope | import("../platform/services.cjs").RecordFileSystem | import("../platform/services.cjs").RecordGit | import("../../coordination/record-leases.cjs").RecordCoordination>;
|
|
258
282
|
};
|
|
259
283
|
}
|
|
@@ -10,9 +10,10 @@ import type { AttemptDocument, MemberDocument, RecordSlotIdentity, RunDocument }
|
|
|
10
10
|
import type { RunContext } from "../model/run-context.mjs";
|
|
11
11
|
import type { AttemptId, ExperimentId, RunId, SlotId, UtcMillis } from "../model/identifiers.mjs";
|
|
12
12
|
import type { RecordRoot } from "../platform/root.mjs";
|
|
13
|
+
import type { RecordBackupState } from "../platform/services.mjs";
|
|
13
14
|
import type { RecordCoreRead, RecordWarning } from "../model/read-state.mjs";
|
|
14
15
|
import type { NonEmptyRecordIssues } from "../errors/record-errors.mjs";
|
|
15
|
-
import type { RecordReaderOpenError, RecordReaderReadError } from "../reader/errors.mjs";
|
|
16
|
+
import type { RecordMaintenanceError, RecordMaintenanceOpenError, RecordReaderOpenError, RecordReaderReadError } from "../reader/errors.mjs";
|
|
16
17
|
import type { RecordWriteError } from "../writer/types.mjs";
|
|
17
18
|
export declare const selectedRunRefBrand: unique symbol;
|
|
18
19
|
export declare const selectedAttemptRefBrand: unique symbol;
|
|
@@ -226,22 +227,45 @@ export interface ReferenceRunWriteSession {
|
|
|
226
227
|
export type RecordFormatInspection = {
|
|
227
228
|
readonly state: "already-current";
|
|
228
229
|
readonly format: "niceeval.record";
|
|
230
|
+
} | {
|
|
231
|
+
readonly state: "migration-required";
|
|
232
|
+
readonly format: "niceeval.record";
|
|
229
233
|
} | {
|
|
230
234
|
readonly state: "unsupported-format";
|
|
231
235
|
readonly format: string;
|
|
232
236
|
};
|
|
233
|
-
export interface
|
|
234
|
-
readonly
|
|
235
|
-
readonly
|
|
237
|
+
export interface RecordAttachmentMigrationTarget {
|
|
238
|
+
readonly family: string;
|
|
239
|
+
readonly owner: "attempt" | "run";
|
|
240
|
+
readonly runId: RunId;
|
|
241
|
+
readonly attemptId?: AttemptId;
|
|
242
|
+
readonly fromSchemaVersion: number;
|
|
243
|
+
readonly toSchemaVersion: number;
|
|
236
244
|
}
|
|
237
|
-
export
|
|
245
|
+
export type RecordMigrationPlan = {
|
|
238
246
|
readonly state: "already-current";
|
|
239
247
|
readonly format: "niceeval.record";
|
|
248
|
+
} | {
|
|
249
|
+
readonly state: "migration-required";
|
|
250
|
+
readonly format: "niceeval.record";
|
|
251
|
+
readonly backup: RecordBackupState;
|
|
252
|
+
readonly root: {
|
|
253
|
+
readonly fromSchemaVersion: number;
|
|
254
|
+
readonly toSchemaVersion: number;
|
|
255
|
+
} | null;
|
|
256
|
+
readonly attachments: readonly RecordAttachmentMigrationTarget[];
|
|
257
|
+
} | {
|
|
258
|
+
readonly state: "unsupported-format";
|
|
259
|
+
readonly format: string;
|
|
260
|
+
};
|
|
261
|
+
export interface RecordMigrationReceipt {
|
|
262
|
+
readonly state: "already-current" | "migrated";
|
|
263
|
+
readonly format: "niceeval.record";
|
|
240
264
|
}
|
|
241
265
|
export interface RecordMaintenanceSession {
|
|
242
|
-
readonly inspect: () => Effect.Effect<RecordFormatInspection,
|
|
243
|
-
readonly planMigrate: () => Effect.Effect<RecordMigrationPlan,
|
|
244
|
-
readonly applyMigrate: (plan: RecordMigrationPlan) => Effect.Effect<RecordMigrationReceipt,
|
|
266
|
+
readonly inspect: () => Effect.Effect<RecordFormatInspection, RecordMaintenanceError>;
|
|
267
|
+
readonly planMigrate: () => Effect.Effect<RecordMigrationPlan, RecordMaintenanceError>;
|
|
268
|
+
readonly applyMigrate: (plan: RecordMigrationPlan) => Effect.Effect<RecordMigrationReceipt, RecordMaintenanceError>;
|
|
245
269
|
}
|
|
246
270
|
export interface RecordHostSDK {
|
|
247
271
|
readonly current: {
|
|
@@ -254,6 +278,6 @@ export interface RecordHostSDK {
|
|
|
254
278
|
readonly maintenance: {
|
|
255
279
|
readonly open: (input: {
|
|
256
280
|
readonly root: RecordRoot;
|
|
257
|
-
}) => Effect.Effect<RecordMaintenanceSession,
|
|
281
|
+
}) => Effect.Effect<RecordMaintenanceSession, RecordMaintenanceOpenError, import("effect").Scope.Scope | import("../platform/services.mjs").RecordFileSystem | import("../platform/services.mjs").RecordGit | import("../../coordination/record-leases.mjs").RecordCoordination>;
|
|
258
282
|
};
|
|
259
283
|
}
|
|
@@ -10,9 +10,10 @@ import type { AttemptDocument, MemberDocument, RecordSlotIdentity, RunDocument }
|
|
|
10
10
|
import type { RunContext } from "../model/run-context.js";
|
|
11
11
|
import type { AttemptId, ExperimentId, RunId, SlotId, UtcMillis } from "../model/identifiers.js";
|
|
12
12
|
import type { RecordRoot } from "../platform/root.js";
|
|
13
|
+
import type { RecordBackupState } from "../platform/services.js";
|
|
13
14
|
import type { RecordCoreRead, RecordWarning } from "../model/read-state.js";
|
|
14
15
|
import type { NonEmptyRecordIssues } from "../errors/record-errors.js";
|
|
15
|
-
import type { RecordReaderOpenError, RecordReaderReadError } from "../reader/errors.js";
|
|
16
|
+
import type { RecordMaintenanceError, RecordMaintenanceOpenError, RecordReaderOpenError, RecordReaderReadError } from "../reader/errors.js";
|
|
16
17
|
import type { RecordWriteError } from "../writer/types.js";
|
|
17
18
|
export declare const selectedRunRefBrand: unique symbol;
|
|
18
19
|
export declare const selectedAttemptRefBrand: unique symbol;
|
|
@@ -226,22 +227,45 @@ export interface ReferenceRunWriteSession {
|
|
|
226
227
|
export type RecordFormatInspection = {
|
|
227
228
|
readonly state: "already-current";
|
|
228
229
|
readonly format: "niceeval.record";
|
|
230
|
+
} | {
|
|
231
|
+
readonly state: "migration-required";
|
|
232
|
+
readonly format: "niceeval.record";
|
|
229
233
|
} | {
|
|
230
234
|
readonly state: "unsupported-format";
|
|
231
235
|
readonly format: string;
|
|
232
236
|
};
|
|
233
|
-
export interface
|
|
234
|
-
readonly
|
|
235
|
-
readonly
|
|
237
|
+
export interface RecordAttachmentMigrationTarget {
|
|
238
|
+
readonly family: string;
|
|
239
|
+
readonly owner: "attempt" | "run";
|
|
240
|
+
readonly runId: RunId;
|
|
241
|
+
readonly attemptId?: AttemptId;
|
|
242
|
+
readonly fromSchemaVersion: number;
|
|
243
|
+
readonly toSchemaVersion: number;
|
|
236
244
|
}
|
|
237
|
-
export
|
|
245
|
+
export type RecordMigrationPlan = {
|
|
238
246
|
readonly state: "already-current";
|
|
239
247
|
readonly format: "niceeval.record";
|
|
248
|
+
} | {
|
|
249
|
+
readonly state: "migration-required";
|
|
250
|
+
readonly format: "niceeval.record";
|
|
251
|
+
readonly backup: RecordBackupState;
|
|
252
|
+
readonly root: {
|
|
253
|
+
readonly fromSchemaVersion: number;
|
|
254
|
+
readonly toSchemaVersion: number;
|
|
255
|
+
} | null;
|
|
256
|
+
readonly attachments: readonly RecordAttachmentMigrationTarget[];
|
|
257
|
+
} | {
|
|
258
|
+
readonly state: "unsupported-format";
|
|
259
|
+
readonly format: string;
|
|
260
|
+
};
|
|
261
|
+
export interface RecordMigrationReceipt {
|
|
262
|
+
readonly state: "already-current" | "migrated";
|
|
263
|
+
readonly format: "niceeval.record";
|
|
240
264
|
}
|
|
241
265
|
export interface RecordMaintenanceSession {
|
|
242
|
-
readonly inspect: () => Effect.Effect<RecordFormatInspection,
|
|
243
|
-
readonly planMigrate: () => Effect.Effect<RecordMigrationPlan,
|
|
244
|
-
readonly applyMigrate: (plan: RecordMigrationPlan) => Effect.Effect<RecordMigrationReceipt,
|
|
266
|
+
readonly inspect: () => Effect.Effect<RecordFormatInspection, RecordMaintenanceError>;
|
|
267
|
+
readonly planMigrate: () => Effect.Effect<RecordMigrationPlan, RecordMaintenanceError>;
|
|
268
|
+
readonly applyMigrate: (plan: RecordMigrationPlan) => Effect.Effect<RecordMigrationReceipt, RecordMaintenanceError>;
|
|
245
269
|
}
|
|
246
270
|
export interface RecordHostSDK {
|
|
247
271
|
readonly current: {
|
|
@@ -254,6 +278,6 @@ export interface RecordHostSDK {
|
|
|
254
278
|
readonly maintenance: {
|
|
255
279
|
readonly open: (input: {
|
|
256
280
|
readonly root: RecordRoot;
|
|
257
|
-
}) => Effect.Effect<RecordMaintenanceSession,
|
|
281
|
+
}) => Effect.Effect<RecordMaintenanceSession, RecordMaintenanceOpenError, import("effect").Scope.Scope | import("../platform/services.js").RecordFileSystem | import("../platform/services.js").RecordGit | import("../../coordination/record-leases.js").RecordCoordination>;
|
|
258
282
|
};
|
|
259
283
|
}
|
|
@@ -52,8 +52,7 @@ const inspectIncompleteRuns = ({ root }) => effect_1.Effect.scoped(effect_1.Effe
|
|
|
52
52
|
if (effect_1.Either.isLeft(decoded)) {
|
|
53
53
|
continue;
|
|
54
54
|
}
|
|
55
|
-
|
|
56
|
-
if (completeKind === "missing") {
|
|
55
|
+
if (!(yield* fileSystem.isCompleteMarker({ root, runId: decoded.right }))) {
|
|
57
56
|
incomplete.push(incompleteRun(decoded.right));
|
|
58
57
|
}
|
|
59
58
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["runtime.ts"],"names":[],"mappings":";;;AA0BA,sDAEC;AA5BD,mCAAgD;AAChD,0EAAyE;AACzE,4DAAsD;AACtD,4DAAgF;AAEhF,yDAA6D;AAC7D,yDAA4D;AAC5D,yCAA0M;AAC1M,SAAS,eAAe,CAAC,MAAwB;IAC7C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,yCAAwB,CAAC,CAAC,CAAC;AAC9E,CAAC;AACD,SAAS,aAAa,CAAC,KAAY;IAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACpC,CAAC;AACD,SAAS,oBAAoB,CAAC,KAAY;IACtC,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,IAAI,EAAE,gBAAgB;QACtB,KAAK;QACL,cAAc,EAAE,gBAAgB;KACnC,CAAC,CAAC;AACP,CAAC;AACD;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,cAA8C;IAChF,OAAO,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAChH,CAAC;AACD;;;;GAIG;AACI,MAAM,qBAAqB,GAA0B,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,eAAM,CAAC,MAAM,CAAC,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IACxG,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,8BAAgB,CAAC;IAC3C,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,qCAAkB,CAAC;IAC/C,KAAK,CAAC,CAAC,YAAY,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC;QAC5C,SAAS,EAAE,IAAA,gCAAkB,EAAC,IAAI,EAAE,MAAM,CAAC;QAC3C,cAAc,EAAE,0CAA+B;KAClD,CAAC,CAAC;IACH,MAAM,UAAU,GAA0B,EAAE,CAAC;IAC7C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC7B,SAAS;QACb,CAAC;QACD,MAAM,OAAO,GAAG,eAAM,CAAC,mBAAmB,CAAC,4BAAW,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpE,IAAI,eAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,SAAS;QACb,CAAC;QACD,
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import { Effect, Either, Schema } from \"effect\";\nimport { RecordCoordination } from \"../../coordination/record-leases.ts\";\nimport { RunIdSchema } from \"../codec/identifiers.ts\";\nimport { compareCanonicalIdentity, type RunId, } from \"../model/identifiers.ts\";\nimport type { RecordIncompleteRunWarning } from \"../model/read-state.ts\";\nimport { recordPortablePath } from \"../platform/services.ts\";\nimport { RecordFileSystem, } from \"../platform/services.ts\";\nimport { RECORD_MAINTENANCE_MAXIMUM_RUNS, type CleanIncompleteRuns, type InspectIncompleteRunWarnings, type InspectIncompleteRuns, type RecordCleanReceipt, type RecordIncompleteRun, } from \"./types.ts\";\nfunction canonicalRunIds(runIds: readonly RunId[]): readonly RunId[] {\n return Object.freeze([...new Set(runIds)].sort(compareCanonicalIdentity));\n}\nfunction incompleteRun(runId: RunId): RecordIncompleteRun {\n return Object.freeze({ runId });\n}\nfunction incompleteRunWarning(runId: RunId): RecordIncompleteRunWarning {\n return Object.freeze({\n code: \"incomplete-run\",\n runId,\n cleanupCommand: \"niceeval clean\",\n });\n}\n/**\n * Translate bounded discovery output into the exact warning model shared with\n * readers. The canonical ordering also makes this safe for a CLI that merges\n * results from multiple maintenance calls.\n */\nexport function incompleteRunWarnings(incompleteRuns: readonly RecordIncompleteRun[]): readonly RecordIncompleteRunWarning[] {\n return Object.freeze(canonicalRunIds(incompleteRuns.map((entry) => entry.runId)).map(incompleteRunWarning));\n}\n/**\n * Discover incomplete Runs under the exclusive maintenance lease. This keeps\n * the scan truthful for a following clean/migrate decision and never shares a\n * lease with portable mutation.\n */\nexport const inspectIncompleteRuns: InspectIncompleteRuns = ({ root }) => Effect.scoped(Effect.gen(function* () {\n const fileSystem = yield* RecordFileSystem;\n const coordination = yield* RecordCoordination;\n yield* coordination.enterRecordMaintenance(root);\n const entries = yield* fileSystem.listDirectory({\n directory: recordPortablePath(root, \"runs\"),\n maximumEntries: RECORD_MAINTENANCE_MAXIMUM_RUNS,\n });\n const incomplete: RecordIncompleteRun[] = [];\n for (const entry of entries) {\n if (entry.kind !== \"directory\") {\n continue;\n }\n const decoded = Schema.decodeUnknownEither(RunIdSchema)(entry.name);\n if (Either.isLeft(decoded)) {\n continue;\n }\n if (!(yield* fileSystem.isCompleteMarker({ root, runId: decoded.right }))) {\n incomplete.push(incompleteRun(decoded.right));\n }\n }\n return Object.freeze(canonicalRunIds(incomplete.map((entry) => entry.runId)).map(incompleteRun));\n}));\n/** A convenience composition for reader and CLI layers that need warnings. */\nexport const inspectIncompleteRunWarnings: InspectIncompleteRunWarnings = (input) => Effect.map(inspectIncompleteRuns(input), incompleteRunWarnings);\nfunction cleanReceipt(input: {\n readonly deleted: readonly RunId[];\n readonly skipped: readonly RunId[];\n}): RecordCleanReceipt {\n return Object.freeze({\n deleted: Object.freeze([...input.deleted]),\n skipped: Object.freeze([...input.skipped]),\n });\n}\n/**\n * Explicitly remove selected unpublished Run directories. The platform owns\n * the final `complete` recheck; one uninterruptible deletion keeps that check,\n * removal, and its directory sync within the maintenance-lease lifetime while an\n * interruption still propagates after the current deletion boundary.\n */\nexport const cleanIncompleteRuns: CleanIncompleteRuns = ({ root, runIds }) => Effect.scoped(Effect.gen(function* () {\n const fileSystem = yield* RecordFileSystem;\n const coordination = yield* RecordCoordination;\n yield* coordination.enterRecordMaintenance(root);\n const deleted: RunId[] = [];\n const skipped: RunId[] = [];\n for (const runId of canonicalRunIds(runIds)) {\n const outcome = yield* Effect.uninterruptible(fileSystem.deleteIncompleteRun({ root, runId }));\n if (outcome.state === \"deleted\") {\n deleted.push(runId);\n }\n else {\n skipped.push(runId);\n }\n }\n return cleanReceipt({ deleted, skipped });\n}));\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["core.ts"],"names":[],"mappings":";;AAwEA,8DAEC;AAHD,kFAAkF;AAClF,SAAgB,yBAAyB,CAAC,GAAqB;IAC3D,OAAO,GAAG,GAAG,CAAC,WAAW,SAAS,GAAG,CAAC,SAAS,EAAE,CAAC;AACtD,CAAC","sourcesContent":["import type { AttemptId, EvalId, ExecutionIdentityDigest, ExperimentId, RecordFormat, RecordId, RunId, SlotId, UtcMillis, } from \"./identifiers.ts\";\nimport type { RunContext } from \"./run-context.ts\";\n/** The current root header keeps stable identity separate from schema version. */\nexport interface RecordDocument {\n readonly format: RecordFormat;\n readonly schemaVersion:
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["core.ts"],"names":[],"mappings":";;AAwEA,8DAEC;AAHD,kFAAkF;AAClF,SAAgB,yBAAyB,CAAC,GAAqB;IAC3D,OAAO,GAAG,GAAG,CAAC,WAAW,SAAS,GAAG,CAAC,SAAS,EAAE,CAAC;AACtD,CAAC","sourcesContent":["import type { AttemptId, EvalId, ExecutionIdentityDigest, ExperimentId, RecordFormat, RecordId, RunId, SlotId, UtcMillis, } from \"./identifiers.ts\";\nimport type { RunContext } from \"./run-context.ts\";\n/** The current root header keeps stable identity separate from schema version. */\nexport interface RecordDocument {\n readonly format: RecordFormat;\n readonly schemaVersion: 2;\n readonly recordId: RecordId;\n}\n/** An exact reference to an immutable origin Attempt. */\nexport interface RecordAttemptRef {\n readonly originRunId: RunId;\n readonly attemptId: AttemptId;\n}\n/** The terminal execution fact required to interpret an origin Attempt. */\nexport type AttemptOutcome = \"completed\" | \"errored\" | \"cancelled\" | \"interrupted\";\n/** The immutable final action for one planned denominator Slot. */\nexport type MembershipAction = \"executed\" | \"carried\" | \"accepted\" | \"not-dispatched\" | \"interrupted\";\n/** Exact planned identity; its existing digest remains the only execution identity. */\nexport interface RecordSlotIdentity {\n readonly slotId: SlotId;\n readonly evalId: EvalId;\n /** Zero-based planned attempt identity; never inferred from array position. */\n readonly attemptOrdinal: number;\n readonly executionIdentityDigest: ExecutionIdentityDigest;\n}\n/** The exact durable contents of one sealed `run.json`. */\nexport interface RunDocument {\n readonly runId: RunId;\n readonly experimentId: ExperimentId;\n /** Mandatory historical Core, sealed once with the Run. */\n readonly context: RunContext;\n readonly startedAt: UtcMillis;\n readonly completedAt: UtcMillis;\n readonly expectedSlots: readonly RecordSlotIdentity[];\n}\n/** The exact durable contents of `members/<SlotId>.json`. */\nexport type MemberDocument = {\n readonly slotId: SlotId;\n readonly action: \"executed\" | \"carried\" | \"accepted\";\n readonly attempt: RecordAttemptRef;\n} | {\n readonly slotId: SlotId;\n readonly action: \"not-dispatched\" | \"interrupted\";\n readonly attempt: null;\n};\n/** The exact durable contents of `attempts/<AttemptId>/attempt.json`. */\nexport interface AttemptDocument {\n readonly attemptId: AttemptId;\n readonly originRunId: RunId;\n readonly slotId: SlotId;\n readonly evalId: EvalId;\n readonly executionIdentityDigest: ExecutionIdentityDigest;\n readonly outcome: AttemptOutcome;\n}\n/** Stable fixed-family identity plus the numeric shape version. */\nexport interface RecordAttachmentEnvelope<Family extends string = string> {\n readonly family: Family;\n readonly schemaVersion: number;\n}\nexport type RecordAttachmentOwner = \"run\" | \"attempt\";\n/** In-memory aggregate for cross-document Core refine; never a second disk document. */\nexport interface RunCore {\n readonly run: RunDocument;\n readonly members: readonly MemberDocument[];\n readonly attempts: readonly AttemptDocument[];\n}\n/** A complete already-published Record Core snapshot. */\nexport interface RecordCore {\n readonly record: RecordDocument;\n readonly runs: readonly RunCore[];\n}\n/** NUL cannot appear in a portable segment, so this map key is collision-free. */\nexport function recordAttemptReferenceKey(ref: RecordAttemptRef): string {\n return `${ref.originRunId}\\u0000${ref.attemptId}`;\n}\n"]}
|
|
@@ -3,7 +3,7 @@ import type { RunContext } from "./run-context.cjs";
|
|
|
3
3
|
/** The current root header keeps stable identity separate from schema version. */
|
|
4
4
|
export interface RecordDocument {
|
|
5
5
|
readonly format: RecordFormat;
|
|
6
|
-
readonly schemaVersion:
|
|
6
|
+
readonly schemaVersion: 2;
|
|
7
7
|
readonly recordId: RecordId;
|
|
8
8
|
}
|
|
9
9
|
/** An exact reference to an immutable origin Attempt. */
|
|
@@ -3,7 +3,7 @@ import type { RunContext } from "./run-context.mjs";
|
|
|
3
3
|
/** The current root header keeps stable identity separate from schema version. */
|
|
4
4
|
export interface RecordDocument {
|
|
5
5
|
readonly format: RecordFormat;
|
|
6
|
-
readonly schemaVersion:
|
|
6
|
+
readonly schemaVersion: 2;
|
|
7
7
|
readonly recordId: RecordId;
|
|
8
8
|
}
|
|
9
9
|
/** An exact reference to an immutable origin Attempt. */
|
|
@@ -3,7 +3,7 @@ import type { RunContext } from "./run-context.js";
|
|
|
3
3
|
/** The current root header keeps stable identity separate from schema version. */
|
|
4
4
|
export interface RecordDocument {
|
|
5
5
|
readonly format: RecordFormat;
|
|
6
|
-
readonly schemaVersion:
|
|
6
|
+
readonly schemaVersion: 2;
|
|
7
7
|
readonly recordId: RecordId;
|
|
8
8
|
}
|
|
9
9
|
/** An exact reference to an immutable origin Attempt. */
|
|
@@ -35,17 +35,17 @@ export declare const RecordSlotIdentitySchema: Schema.Struct<{
|
|
|
35
35
|
}>;
|
|
36
36
|
/** The current root header definition, with identity separate from numeric version. */
|
|
37
37
|
export declare const RecordDocumentDefinition: import("../definition/core.cjs").RecordCoreDefinition<{
|
|
38
|
-
readonly schemaVersion:
|
|
38
|
+
readonly schemaVersion: 2;
|
|
39
39
|
readonly format: import("./identifiers.cjs").RecordFormat;
|
|
40
40
|
readonly recordId: import("./identifiers.cjs").RecordId;
|
|
41
41
|
}, Schema.Struct<{
|
|
42
42
|
format: Schema.Schema<import("./identifiers.cjs").RecordFormat, "niceeval.record", never>;
|
|
43
|
-
schemaVersion: Schema.Schema<
|
|
43
|
+
schemaVersion: Schema.Schema<2, 2, never>;
|
|
44
44
|
recordId: Schema.Schema<import("./identifiers.cjs").RecordId, string, never>;
|
|
45
45
|
}>>;
|
|
46
46
|
export declare const RecordDocumentSchema: Schema.Struct<{
|
|
47
47
|
format: Schema.Schema<import("./identifiers.cjs").RecordFormat, "niceeval.record", never>;
|
|
48
|
-
schemaVersion: Schema.Schema<
|
|
48
|
+
schemaVersion: Schema.Schema<2, 2, never>;
|
|
49
49
|
recordId: Schema.Schema<import("./identifiers.cjs").RecordId, string, never>;
|
|
50
50
|
}>;
|
|
51
51
|
/** Current sealed `run.json`; its contextual and ordering axioms live in this Schema. */
|
|
@@ -310,7 +310,7 @@ export declare const RunCoreSchema: Schema.Struct<{
|
|
|
310
310
|
/** Cross-document Run/Member/Attempt axioms are owned by this Schema. */
|
|
311
311
|
export declare const RecordCoreDefinition: import("../definition/core.cjs").RecordCoreDefinition<{
|
|
312
312
|
readonly record: {
|
|
313
|
-
readonly schemaVersion:
|
|
313
|
+
readonly schemaVersion: 2;
|
|
314
314
|
readonly format: import("./identifiers.cjs").RecordFormat;
|
|
315
315
|
readonly recordId: import("./identifiers.cjs").RecordId;
|
|
316
316
|
};
|
|
@@ -352,7 +352,7 @@ export declare const RecordCoreDefinition: import("../definition/core.cjs").Reco
|
|
|
352
352
|
}, Schema.filter<Schema.Struct<{
|
|
353
353
|
record: Schema.Struct<{
|
|
354
354
|
format: Schema.Schema<import("./identifiers.cjs").RecordFormat, "niceeval.record", never>;
|
|
355
|
-
schemaVersion: Schema.Schema<
|
|
355
|
+
schemaVersion: Schema.Schema<2, 2, never>;
|
|
356
356
|
recordId: Schema.Schema<import("./identifiers.cjs").RecordId, string, never>;
|
|
357
357
|
}>;
|
|
358
358
|
runs: Schema.Array$<Schema.Struct<{
|
|
@@ -408,7 +408,7 @@ export declare const RecordCoreDefinition: import("../definition/core.cjs").Reco
|
|
|
408
408
|
export declare const RecordCoreSchema: Schema.filter<Schema.Struct<{
|
|
409
409
|
record: Schema.Struct<{
|
|
410
410
|
format: Schema.Schema<import("./identifiers.cjs").RecordFormat, "niceeval.record", never>;
|
|
411
|
-
schemaVersion: Schema.Schema<
|
|
411
|
+
schemaVersion: Schema.Schema<2, 2, never>;
|
|
412
412
|
recordId: Schema.Schema<import("./identifiers.cjs").RecordId, string, never>;
|
|
413
413
|
}>;
|
|
414
414
|
runs: Schema.Array$<Schema.Struct<{
|
|
@@ -35,17 +35,17 @@ export declare const RecordSlotIdentitySchema: Schema.Struct<{
|
|
|
35
35
|
}>;
|
|
36
36
|
/** The current root header definition, with identity separate from numeric version. */
|
|
37
37
|
export declare const RecordDocumentDefinition: import("../definition/core.mjs").RecordCoreDefinition<{
|
|
38
|
-
readonly schemaVersion:
|
|
38
|
+
readonly schemaVersion: 2;
|
|
39
39
|
readonly format: import("./identifiers.mjs").RecordFormat;
|
|
40
40
|
readonly recordId: import("./identifiers.mjs").RecordId;
|
|
41
41
|
}, Schema.Struct<{
|
|
42
42
|
format: Schema.Schema<import("./identifiers.mjs").RecordFormat, "niceeval.record", never>;
|
|
43
|
-
schemaVersion: Schema.Schema<
|
|
43
|
+
schemaVersion: Schema.Schema<2, 2, never>;
|
|
44
44
|
recordId: Schema.Schema<import("./identifiers.mjs").RecordId, string, never>;
|
|
45
45
|
}>>;
|
|
46
46
|
export declare const RecordDocumentSchema: Schema.Struct<{
|
|
47
47
|
format: Schema.Schema<import("./identifiers.mjs").RecordFormat, "niceeval.record", never>;
|
|
48
|
-
schemaVersion: Schema.Schema<
|
|
48
|
+
schemaVersion: Schema.Schema<2, 2, never>;
|
|
49
49
|
recordId: Schema.Schema<import("./identifiers.mjs").RecordId, string, never>;
|
|
50
50
|
}>;
|
|
51
51
|
/** Current sealed `run.json`; its contextual and ordering axioms live in this Schema. */
|
|
@@ -310,7 +310,7 @@ export declare const RunCoreSchema: Schema.Struct<{
|
|
|
310
310
|
/** Cross-document Run/Member/Attempt axioms are owned by this Schema. */
|
|
311
311
|
export declare const RecordCoreDefinition: import("../definition/core.mjs").RecordCoreDefinition<{
|
|
312
312
|
readonly record: {
|
|
313
|
-
readonly schemaVersion:
|
|
313
|
+
readonly schemaVersion: 2;
|
|
314
314
|
readonly format: import("./identifiers.mjs").RecordFormat;
|
|
315
315
|
readonly recordId: import("./identifiers.mjs").RecordId;
|
|
316
316
|
};
|
|
@@ -352,7 +352,7 @@ export declare const RecordCoreDefinition: import("../definition/core.mjs").Reco
|
|
|
352
352
|
}, Schema.filter<Schema.Struct<{
|
|
353
353
|
record: Schema.Struct<{
|
|
354
354
|
format: Schema.Schema<import("./identifiers.mjs").RecordFormat, "niceeval.record", never>;
|
|
355
|
-
schemaVersion: Schema.Schema<
|
|
355
|
+
schemaVersion: Schema.Schema<2, 2, never>;
|
|
356
356
|
recordId: Schema.Schema<import("./identifiers.mjs").RecordId, string, never>;
|
|
357
357
|
}>;
|
|
358
358
|
runs: Schema.Array$<Schema.Struct<{
|
|
@@ -408,7 +408,7 @@ export declare const RecordCoreDefinition: import("../definition/core.mjs").Reco
|
|
|
408
408
|
export declare const RecordCoreSchema: Schema.filter<Schema.Struct<{
|
|
409
409
|
record: Schema.Struct<{
|
|
410
410
|
format: Schema.Schema<import("./identifiers.mjs").RecordFormat, "niceeval.record", never>;
|
|
411
|
-
schemaVersion: Schema.Schema<
|
|
411
|
+
schemaVersion: Schema.Schema<2, 2, never>;
|
|
412
412
|
recordId: Schema.Schema<import("./identifiers.mjs").RecordId, string, never>;
|
|
413
413
|
}>;
|
|
414
414
|
runs: Schema.Array$<Schema.Struct<{
|
|
@@ -35,17 +35,17 @@ export declare const RecordSlotIdentitySchema: Schema.Struct<{
|
|
|
35
35
|
}>;
|
|
36
36
|
/** The current root header definition, with identity separate from numeric version. */
|
|
37
37
|
export declare const RecordDocumentDefinition: import("../definition/core.js").RecordCoreDefinition<{
|
|
38
|
-
readonly schemaVersion:
|
|
38
|
+
readonly schemaVersion: 2;
|
|
39
39
|
readonly format: import("./identifiers.js").RecordFormat;
|
|
40
40
|
readonly recordId: import("./identifiers.js").RecordId;
|
|
41
41
|
}, Schema.Struct<{
|
|
42
42
|
format: Schema.Schema<import("./identifiers.js").RecordFormat, "niceeval.record", never>;
|
|
43
|
-
schemaVersion: Schema.Schema<
|
|
43
|
+
schemaVersion: Schema.Schema<2, 2, never>;
|
|
44
44
|
recordId: Schema.Schema<import("./identifiers.js").RecordId, string, never>;
|
|
45
45
|
}>>;
|
|
46
46
|
export declare const RecordDocumentSchema: Schema.Struct<{
|
|
47
47
|
format: Schema.Schema<import("./identifiers.js").RecordFormat, "niceeval.record", never>;
|
|
48
|
-
schemaVersion: Schema.Schema<
|
|
48
|
+
schemaVersion: Schema.Schema<2, 2, never>;
|
|
49
49
|
recordId: Schema.Schema<import("./identifiers.js").RecordId, string, never>;
|
|
50
50
|
}>;
|
|
51
51
|
/** Current sealed `run.json`; its contextual and ordering axioms live in this Schema. */
|
|
@@ -310,7 +310,7 @@ export declare const RunCoreSchema: Schema.Struct<{
|
|
|
310
310
|
/** Cross-document Run/Member/Attempt axioms are owned by this Schema. */
|
|
311
311
|
export declare const RecordCoreDefinition: import("../definition/core.js").RecordCoreDefinition<{
|
|
312
312
|
readonly record: {
|
|
313
|
-
readonly schemaVersion:
|
|
313
|
+
readonly schemaVersion: 2;
|
|
314
314
|
readonly format: import("./identifiers.js").RecordFormat;
|
|
315
315
|
readonly recordId: import("./identifiers.js").RecordId;
|
|
316
316
|
};
|
|
@@ -352,7 +352,7 @@ export declare const RecordCoreDefinition: import("../definition/core.js").Recor
|
|
|
352
352
|
}, Schema.filter<Schema.Struct<{
|
|
353
353
|
record: Schema.Struct<{
|
|
354
354
|
format: Schema.Schema<import("./identifiers.js").RecordFormat, "niceeval.record", never>;
|
|
355
|
-
schemaVersion: Schema.Schema<
|
|
355
|
+
schemaVersion: Schema.Schema<2, 2, never>;
|
|
356
356
|
recordId: Schema.Schema<import("./identifiers.js").RecordId, string, never>;
|
|
357
357
|
}>;
|
|
358
358
|
runs: Schema.Array$<Schema.Struct<{
|
|
@@ -408,7 +408,7 @@ export declare const RecordCoreDefinition: import("../definition/core.js").Recor
|
|
|
408
408
|
export declare const RecordCoreSchema: Schema.filter<Schema.Struct<{
|
|
409
409
|
record: Schema.Struct<{
|
|
410
410
|
format: Schema.Schema<import("./identifiers.js").RecordFormat, "niceeval.record", never>;
|
|
411
|
-
schemaVersion: Schema.Schema<
|
|
411
|
+
schemaVersion: Schema.Schema<2, 2, never>;
|
|
412
412
|
recordId: Schema.Schema<import("./identifiers.js").RecordId, string, never>;
|
|
413
413
|
}>;
|
|
414
414
|
runs: Schema.Array$<Schema.Struct<{
|
|
@@ -36,7 +36,7 @@ exports.ARTIFACT_ID_BRAND = "@niceeval/record/ArtifactId";
|
|
|
36
36
|
exports.CANONICAL_PROJECT_RELATIVE_PATH_BRAND = "@niceeval/record/CanonicalProjectRelativePath";
|
|
37
37
|
/** Stable root identity; evolution is carried by the separate numeric header. */
|
|
38
38
|
exports.RECORD_FORMAT = "niceeval.record";
|
|
39
|
-
exports.RECORD_SCHEMA_VERSION =
|
|
39
|
+
exports.RECORD_SCHEMA_VERSION = 2;
|
|
40
40
|
const PORTABLE_SEGMENT_PATTERN = /^[A-Za-z0-9](?:[A-Za-z0-9._-]{0,253}[A-Za-z0-9])?$/;
|
|
41
41
|
const WINDOWS_RESERVED_SEGMENT_PATTERN = /^(?:con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\..*)?$/i;
|
|
42
42
|
const RECORD_ATTACHMENT_LABEL = "[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identifiers.js","sourceRoot":"","sources":["identifiers.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Brand } from \"effect\";\n/**\n * Brand identifiers are deliberately package-local names. Their runtime values\n * remain portable strings; construction belongs to the exact codecs.\n */\nexport const RECORD_ID_BRAND = \"@niceeval/record/RecordId\" as const;\nexport const RUN_ID_BRAND = \"@niceeval/record/RunId\" as const;\nexport const SLOT_ID_BRAND = \"@niceeval/record/SlotId\" as const;\nexport const ATTEMPT_ID_BRAND = \"@niceeval/record/AttemptId\" as const;\nexport const UTC_MILLIS_BRAND = \"@niceeval/record/UtcMillis\" as const;\nexport const RECORD_ATTACHMENT_NAME_BRAND = \"@niceeval/record/RecordAttachmentName\" as const;\nexport const RECORD_ATTACHMENT_SCHEMA_ID_BRAND = \"@niceeval/record/RecordAttachmentSchemaId\" as const;\nexport const RECORD_FORMAT_ID_BRAND = \"@niceeval/record/RecordFormatId\" as const;\nexport const EXPERIMENT_ID_BRAND = \"@niceeval/record/ExperimentId\" as const;\nexport const EVAL_ID_BRAND = \"@niceeval/record/EvalId\" as const;\nexport const EXECUTION_IDENTITY_DIGEST_BRAND = \"@niceeval/record/ExecutionIdentityDigest\" as const;\nexport const SHA256_DIGEST_BRAND = \"@niceeval/record/Sha256Digest\" as const;\nexport const SOURCE_ITEM_ID_BRAND = \"@niceeval/record/SourceItemId\" as const;\nexport const FILE_CHANGE_ID_BRAND = \"@niceeval/record/FileChangeId\" as const;\nexport const ARTIFACT_ID_BRAND = \"@niceeval/record/ArtifactId\" as const;\nexport const CANONICAL_PROJECT_RELATIVE_PATH_BRAND = \"@niceeval/record/CanonicalProjectRelativePath\" as const;\nexport type RecordId = string & Brand.Brand<typeof RECORD_ID_BRAND>;\nexport type RunId = string & Brand.Brand<typeof RUN_ID_BRAND>;\nexport type SlotId = string & Brand.Brand<typeof SLOT_ID_BRAND>;\nexport type AttemptId = string & Brand.Brand<typeof ATTEMPT_ID_BRAND>;\nexport type UtcMillis = number & Brand.Brand<typeof UTC_MILLIS_BRAND>;\nexport type RecordAttachmentName = string & Brand.Brand<typeof RECORD_ATTACHMENT_NAME_BRAND>;\nexport type RecordAttachmentSchemaId = string & Brand.Brand<typeof RECORD_ATTACHMENT_SCHEMA_ID_BRAND>;\nexport type RecordFormatId = string & Brand.Brand<typeof RECORD_FORMAT_ID_BRAND>;\n/** A durable Experiment identity. It is not a host path or a display label. */\nexport type ExperimentId = string & Brand.Brand<typeof EXPERIMENT_ID_BRAND>;\n/** A durable Eval identity. It is not reconstructed from the current worktree. */\nexport type EvalId = string & Brand.Brand<typeof EVAL_ID_BRAND>;\n/** SHA-256 identity of the exact execution inputs/configuration for a Slot. */\nexport type ExecutionIdentityDigest = string & Brand.Brand<typeof EXECUTION_IDENTITY_DIGEST_BRAND>;\n/** A lowercase hexadecimal SHA-256 digest for recorded bytes. */\nexport type Sha256Digest = string & Brand.Brand<typeof SHA256_DIGEST_BRAND>;\n/** An opaque identity inside one origin Run's Sources manifest. */\nexport type SourceItemId = string & Brand.Brand<typeof SOURCE_ITEM_ID_BRAND>;\n/** An opaque identity inside one FileChanges payload. */\nexport type FileChangeId = string & Brand.Brand<typeof FILE_CHANGE_ID_BRAND>;\n/** An opaque identity inside one Artifacts payload. */\nexport type ArtifactId = string & Brand.Brand<typeof ARTIFACT_ID_BRAND>;\n/** Slash-separated path relative to the recorded project root. */\nexport type CanonicalProjectRelativePath = string & Brand.Brand<typeof CANONICAL_PROJECT_RELATIVE_PATH_BRAND>;\n/** Stable root identity; evolution is carried by the separate numeric header. */\nexport const RECORD_FORMAT = \"niceeval.record\" as const;\nexport const RECORD_SCHEMA_VERSION = 1 as const;\nexport type RecordFormat = typeof RECORD_FORMAT & Brand.Brand<typeof RECORD_FORMAT_ID_BRAND>;\nexport type RecordSchemaVersion = typeof RECORD_SCHEMA_VERSION;\nconst PORTABLE_SEGMENT_PATTERN = /^[A-Za-z0-9](?:[A-Za-z0-9._-]{0,253}[A-Za-z0-9])?$/;\nconst WINDOWS_RESERVED_SEGMENT_PATTERN = /^(?:con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\\..*)?$/i;\nconst RECORD_ATTACHMENT_LABEL = \"[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\";\nconst RECORD_ATTACHMENT_NAME_PATTERN = new RegExp(`^(?:${RECORD_ATTACHMENT_LABEL}\\\\.)+${RECORD_ATTACHMENT_LABEL}$`);\nconst RECORD_FORMAT_ID_PATTERN = /^niceeval\\.record$/;\nconst SHA256_DIGEST_PATTERN = /^[a-f0-9]{64}$/;\n/**\n * A file-name segment that is safe to copy between the supported Record roots.\n * It is ASCII-only, has no platform separator, and excludes DOS device names.\n */\nexport function isPortableSegment(value: string): boolean {\n return (PORTABLE_SEGMENT_PATTERN.test(value) &&\n !WINDOWS_RESERVED_SEGMENT_PATTERN.test(value));\n}\n/** Canonical identity ordering is ASCII code-unit ordering, never locale order. */\nexport function compareCanonicalIdentity(left: string, right: string): number {\n if (left === right) {\n return 0;\n }\n return left < right ? -1 : 1;\n}\n/** Unix-epoch milliseconds that can round-trip through a JSON number exactly. */\nexport function isUtcMillis(value: number): boolean {\n return Number.isSafeInteger(value) && value >= 0;\n}\n/**\n * Domain identity is deliberately broader than a directory segment: Eval and\n * Experiment identities may be path-derived, but portable Core never accepts\n * controls, NUL, or an unbounded display value.\n */\nexport function isRecordDomainIdentity(value: string): boolean {\n return (value.length > 0 &&\n value.length <= 1024 &&\n !/[\\u0000-\\u001f\\u007f]/.test(value));\n}\nexport function isSha256Digest(value: string): boolean {\n return SHA256_DIGEST_PATTERN.test(value);\n}\n/** A project-relative portable path; it is never a host filesystem path. */\nexport function isCanonicalProjectRelativePath(value: string): boolean {\n return (value.length > 0 &&\n value.length <= 4096 &&\n !value.startsWith(\"/\") &&\n !value.startsWith(\"\\\\\") &&\n !value.includes(\"\\\\\") &&\n !/[\\u0000-\\u001f\\u007f]/.test(value) &&\n value.split(\"/\").every((segment) => segment.length > 0 && segment !== \".\" && segment !== \"..\"));\n}\n/** A RecordAttachment directory name is a lowercase reverse-domain namespace. */\nexport function isRecordAttachmentName(value: string): boolean {\n return (value.length <= 255 &&\n isPortableSegment(value) &&\n RECORD_ATTACHMENT_NAME_PATTERN.test(value));\n}\nexport interface RecordAttachmentSchemaIdParts {\n readonly name: string;\n readonly version: string;\n}\n/**\n * Legacy internal callers still use this structural helper while the fixed\n * catalog is being materialized. The durable identity is now the stable\n * family name; its numeric version is carried separately in the envelope.\n */\nexport function parseRecordAttachmentSchemaId(value: string): RecordAttachmentSchemaIdParts | undefined {\n return isRecordAttachmentName(value)\n ? { name: value, version: \"1\" }\n : undefined;\n}\nexport function isRecordAttachmentSchemaId(value: string): boolean {\n const parts = parseRecordAttachmentSchemaId(value);\n return parts !== undefined && isRecordAttachmentName(parts.name);\n}\nexport function recordAttachmentNameTextOfSchemaId(schemaId: string): string | undefined {\n return parseRecordAttachmentSchemaId(schemaId)?.name;\n}\nexport function isRecordFormatId(value: string): boolean {\n return RECORD_FORMAT_ID_PATTERN.test(value);\n}\nexport function isRecordFormat(value: string): value is typeof RECORD_FORMAT {\n return value === RECORD_FORMAT;\n}\nexport function isNiceEvalRecordAttachmentName(name: RecordAttachmentName): boolean {\n return name.startsWith(\"niceeval.\");\n}\n"]}
|
|
1
|
+
{"version":3,"file":"identifiers.js","sourceRoot":"","sources":["identifiers.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Brand } from \"effect\";\n/**\n * Brand identifiers are deliberately package-local names. Their runtime values\n * remain portable strings; construction belongs to the exact codecs.\n */\nexport const RECORD_ID_BRAND = \"@niceeval/record/RecordId\" as const;\nexport const RUN_ID_BRAND = \"@niceeval/record/RunId\" as const;\nexport const SLOT_ID_BRAND = \"@niceeval/record/SlotId\" as const;\nexport const ATTEMPT_ID_BRAND = \"@niceeval/record/AttemptId\" as const;\nexport const UTC_MILLIS_BRAND = \"@niceeval/record/UtcMillis\" as const;\nexport const RECORD_ATTACHMENT_NAME_BRAND = \"@niceeval/record/RecordAttachmentName\" as const;\nexport const RECORD_ATTACHMENT_SCHEMA_ID_BRAND = \"@niceeval/record/RecordAttachmentSchemaId\" as const;\nexport const RECORD_FORMAT_ID_BRAND = \"@niceeval/record/RecordFormatId\" as const;\nexport const EXPERIMENT_ID_BRAND = \"@niceeval/record/ExperimentId\" as const;\nexport const EVAL_ID_BRAND = \"@niceeval/record/EvalId\" as const;\nexport const EXECUTION_IDENTITY_DIGEST_BRAND = \"@niceeval/record/ExecutionIdentityDigest\" as const;\nexport const SHA256_DIGEST_BRAND = \"@niceeval/record/Sha256Digest\" as const;\nexport const SOURCE_ITEM_ID_BRAND = \"@niceeval/record/SourceItemId\" as const;\nexport const FILE_CHANGE_ID_BRAND = \"@niceeval/record/FileChangeId\" as const;\nexport const ARTIFACT_ID_BRAND = \"@niceeval/record/ArtifactId\" as const;\nexport const CANONICAL_PROJECT_RELATIVE_PATH_BRAND = \"@niceeval/record/CanonicalProjectRelativePath\" as const;\nexport type RecordId = string & Brand.Brand<typeof RECORD_ID_BRAND>;\nexport type RunId = string & Brand.Brand<typeof RUN_ID_BRAND>;\nexport type SlotId = string & Brand.Brand<typeof SLOT_ID_BRAND>;\nexport type AttemptId = string & Brand.Brand<typeof ATTEMPT_ID_BRAND>;\nexport type UtcMillis = number & Brand.Brand<typeof UTC_MILLIS_BRAND>;\nexport type RecordAttachmentName = string & Brand.Brand<typeof RECORD_ATTACHMENT_NAME_BRAND>;\nexport type RecordAttachmentSchemaId = string & Brand.Brand<typeof RECORD_ATTACHMENT_SCHEMA_ID_BRAND>;\nexport type RecordFormatId = string & Brand.Brand<typeof RECORD_FORMAT_ID_BRAND>;\n/** A durable Experiment identity. It is not a host path or a display label. */\nexport type ExperimentId = string & Brand.Brand<typeof EXPERIMENT_ID_BRAND>;\n/** A durable Eval identity. It is not reconstructed from the current worktree. */\nexport type EvalId = string & Brand.Brand<typeof EVAL_ID_BRAND>;\n/** SHA-256 identity of the exact execution inputs/configuration for a Slot. */\nexport type ExecutionIdentityDigest = string & Brand.Brand<typeof EXECUTION_IDENTITY_DIGEST_BRAND>;\n/** A lowercase hexadecimal SHA-256 digest for recorded bytes. */\nexport type Sha256Digest = string & Brand.Brand<typeof SHA256_DIGEST_BRAND>;\n/** An opaque identity inside one origin Run's Sources manifest. */\nexport type SourceItemId = string & Brand.Brand<typeof SOURCE_ITEM_ID_BRAND>;\n/** An opaque identity inside one FileChanges payload. */\nexport type FileChangeId = string & Brand.Brand<typeof FILE_CHANGE_ID_BRAND>;\n/** An opaque identity inside one Artifacts payload. */\nexport type ArtifactId = string & Brand.Brand<typeof ARTIFACT_ID_BRAND>;\n/** Slash-separated path relative to the recorded project root. */\nexport type CanonicalProjectRelativePath = string & Brand.Brand<typeof CANONICAL_PROJECT_RELATIVE_PATH_BRAND>;\n/** Stable root identity; evolution is carried by the separate numeric header. */\nexport const RECORD_FORMAT = \"niceeval.record\" as const;\nexport const RECORD_SCHEMA_VERSION = 2 as const;\nexport type RecordFormat = typeof RECORD_FORMAT & Brand.Brand<typeof RECORD_FORMAT_ID_BRAND>;\nexport type RecordSchemaVersion = typeof RECORD_SCHEMA_VERSION;\nconst PORTABLE_SEGMENT_PATTERN = /^[A-Za-z0-9](?:[A-Za-z0-9._-]{0,253}[A-Za-z0-9])?$/;\nconst WINDOWS_RESERVED_SEGMENT_PATTERN = /^(?:con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\\..*)?$/i;\nconst RECORD_ATTACHMENT_LABEL = \"[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\";\nconst RECORD_ATTACHMENT_NAME_PATTERN = new RegExp(`^(?:${RECORD_ATTACHMENT_LABEL}\\\\.)+${RECORD_ATTACHMENT_LABEL}$`);\nconst RECORD_FORMAT_ID_PATTERN = /^niceeval\\.record$/;\nconst SHA256_DIGEST_PATTERN = /^[a-f0-9]{64}$/;\n/**\n * A file-name segment that is safe to copy between the supported Record roots.\n * It is ASCII-only, has no platform separator, and excludes DOS device names.\n */\nexport function isPortableSegment(value: string): boolean {\n return (PORTABLE_SEGMENT_PATTERN.test(value) &&\n !WINDOWS_RESERVED_SEGMENT_PATTERN.test(value));\n}\n/** Canonical identity ordering is ASCII code-unit ordering, never locale order. */\nexport function compareCanonicalIdentity(left: string, right: string): number {\n if (left === right) {\n return 0;\n }\n return left < right ? -1 : 1;\n}\n/** Unix-epoch milliseconds that can round-trip through a JSON number exactly. */\nexport function isUtcMillis(value: number): boolean {\n return Number.isSafeInteger(value) && value >= 0;\n}\n/**\n * Domain identity is deliberately broader than a directory segment: Eval and\n * Experiment identities may be path-derived, but portable Core never accepts\n * controls, NUL, or an unbounded display value.\n */\nexport function isRecordDomainIdentity(value: string): boolean {\n return (value.length > 0 &&\n value.length <= 1024 &&\n !/[\\u0000-\\u001f\\u007f]/.test(value));\n}\nexport function isSha256Digest(value: string): boolean {\n return SHA256_DIGEST_PATTERN.test(value);\n}\n/** A project-relative portable path; it is never a host filesystem path. */\nexport function isCanonicalProjectRelativePath(value: string): boolean {\n return (value.length > 0 &&\n value.length <= 4096 &&\n !value.startsWith(\"/\") &&\n !value.startsWith(\"\\\\\") &&\n !value.includes(\"\\\\\") &&\n !/[\\u0000-\\u001f\\u007f]/.test(value) &&\n value.split(\"/\").every((segment) => segment.length > 0 && segment !== \".\" && segment !== \"..\"));\n}\n/** A RecordAttachment directory name is a lowercase reverse-domain namespace. */\nexport function isRecordAttachmentName(value: string): boolean {\n return (value.length <= 255 &&\n isPortableSegment(value) &&\n RECORD_ATTACHMENT_NAME_PATTERN.test(value));\n}\nexport interface RecordAttachmentSchemaIdParts {\n readonly name: string;\n readonly version: string;\n}\n/**\n * Legacy internal callers still use this structural helper while the fixed\n * catalog is being materialized. The durable identity is now the stable\n * family name; its numeric version is carried separately in the envelope.\n */\nexport function parseRecordAttachmentSchemaId(value: string): RecordAttachmentSchemaIdParts | undefined {\n return isRecordAttachmentName(value)\n ? { name: value, version: \"1\" }\n : undefined;\n}\nexport function isRecordAttachmentSchemaId(value: string): boolean {\n const parts = parseRecordAttachmentSchemaId(value);\n return parts !== undefined && isRecordAttachmentName(parts.name);\n}\nexport function recordAttachmentNameTextOfSchemaId(schemaId: string): string | undefined {\n return parseRecordAttachmentSchemaId(schemaId)?.name;\n}\nexport function isRecordFormatId(value: string): boolean {\n return RECORD_FORMAT_ID_PATTERN.test(value);\n}\nexport function isRecordFormat(value: string): value is typeof RECORD_FORMAT {\n return value === RECORD_FORMAT;\n}\nexport function isNiceEvalRecordAttachmentName(name: RecordAttachmentName): boolean {\n return name.startsWith(\"niceeval.\");\n}\n"]}
|