niceeval 0.12.2-canary.31 → 0.13.1
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 +10 -10
- package/README.md +2 -0
- package/README.zh.md +2 -0
- package/bin/niceeval.js +15 -0
- package/dist/agents/claude-code.cjs +9 -1
- package/dist/agents/claude-code.cjs.map +1 -1
- package/dist/agents/post-setup.cjs +0 -2
- package/dist/agents/post-setup.cjs.map +1 -1
- package/dist/agents/provisioner.cjs +2 -13
- package/dist/agents/provisioner.cjs.map +1 -1
- package/dist/agents/provisioner.d.cts +0 -5
- package/dist/agents/provisioner.d.mts +0 -5
- package/dist/agents/provisioner.d.ts +0 -5
- package/dist/agents/provisioner.js +22 -26
- package/dist/agents/sdk-streams.cjs +2 -1
- package/dist/agents/sdk-streams.cjs.map +1 -1
- package/dist/agents/types.cjs.map +1 -1
- package/dist/agents/types.d.cts +2 -10
- package/dist/agents/types.d.mts +2 -10
- package/dist/agents/types.d.ts +2 -10
- package/dist/analysis/api.cjs +689 -0
- package/dist/analysis/api.cjs.map +1 -0
- package/dist/analysis/api.d.cts +126 -0
- package/dist/analysis/api.d.mts +126 -0
- package/dist/analysis/api.d.ts +126 -0
- package/dist/analysis/api.js +24 -0
- package/dist/analysis/api.js.map +1 -0
- package/dist/analysis/bindings.cjs +617 -0
- package/dist/analysis/bindings.cjs.map +1 -0
- package/dist/analysis/bindings.d.cts +8313 -0
- package/dist/analysis/bindings.d.mts +8313 -0
- package/dist/analysis/bindings.d.ts +8313 -0
- package/dist/analysis/bindings.js +22 -0
- package/dist/analysis/bindings.js.map +1 -0
- package/dist/analysis/contracts.cjs +39 -0
- package/dist/analysis/contracts.cjs.map +1 -0
- package/dist/analysis/contracts.d.cts +293 -0
- package/dist/analysis/contracts.d.mts +293 -0
- package/dist/analysis/contracts.d.ts +293 -0
- package/dist/analysis/contracts.js +12 -0
- package/dist/analysis/contracts.js.map +1 -0
- package/dist/analysis/cost-decimal.cjs +177 -0
- package/dist/analysis/cost-decimal.cjs.map +1 -0
- package/dist/analysis/cost-decimal.d.cts +51 -0
- package/dist/analysis/cost-decimal.d.mts +51 -0
- package/dist/analysis/cost-decimal.d.ts +51 -0
- package/dist/analysis/cost-decimal.js +28 -0
- package/dist/analysis/cost-decimal.js.map +1 -0
- package/dist/analysis/cost-projection.cjs +430 -0
- package/dist/analysis/cost-projection.cjs.map +1 -0
- package/dist/analysis/cost-projection.d.cts +37 -0
- package/dist/analysis/cost-projection.d.mts +37 -0
- package/dist/analysis/cost-projection.d.ts +37 -0
- package/dist/analysis/cost-projection.js +10 -0
- package/dist/analysis/cost-projection.js.map +1 -0
- package/dist/analysis/cost.cjs +814 -0
- package/dist/analysis/cost.cjs.map +1 -0
- package/dist/analysis/cost.d.cts +310 -0
- package/dist/analysis/cost.d.mts +310 -0
- package/dist/analysis/cost.d.ts +310 -0
- package/dist/analysis/cost.js +26 -0
- package/dist/analysis/cost.js.map +1 -0
- package/dist/analysis/definitions.cjs +346 -0
- package/dist/analysis/definitions.cjs.map +1 -0
- package/dist/analysis/definitions.d.cts +230 -0
- package/dist/analysis/definitions.d.mts +230 -0
- package/dist/analysis/definitions.d.ts +230 -0
- package/dist/analysis/definitions.js +70 -0
- package/dist/analysis/definitions.js.map +1 -0
- package/dist/analysis/domain-view.cjs +3 -0
- package/dist/analysis/domain-view.cjs.map +1 -0
- package/dist/analysis/domain-view.d.cts +367 -0
- package/dist/analysis/domain-view.d.mts +367 -0
- package/dist/analysis/domain-view.d.ts +367 -0
- package/dist/analysis/domain-view.js +4 -0
- package/dist/analysis/domain-view.js.map +1 -0
- package/dist/analysis/file-changes.cjs +225 -0
- package/dist/analysis/file-changes.cjs.map +1 -0
- package/dist/analysis/file-changes.d.cts +30 -0
- package/dist/analysis/file-changes.d.mts +30 -0
- package/dist/analysis/file-changes.d.ts +30 -0
- package/dist/analysis/file-changes.js +6 -0
- package/dist/analysis/file-changes.js.map +1 -0
- package/dist/analysis/host.cjs +8 -0
- package/dist/analysis/host.cjs.map +1 -0
- package/dist/analysis/host.d.cts +19 -0
- package/dist/analysis/host.d.mts +19 -0
- package/dist/analysis/host.d.ts +19 -0
- package/dist/analysis/host.js +6 -0
- package/dist/analysis/host.js.map +1 -0
- package/dist/analysis/host.mjs +6 -0
- package/dist/analysis/host.mjs.map +1 -0
- package/dist/analysis/index.cjs +45 -8
- package/dist/analysis/index.cjs.map +1 -1
- package/dist/analysis/index.d.cts +10 -2
- package/dist/analysis/index.d.mts +10 -2
- package/dist/analysis/index.d.ts +10 -2
- package/dist/analysis/index.js +70 -6
- package/dist/analysis/index.mjs +70 -6
- package/dist/assertions/api.cjs.map +1 -1
- package/dist/assertions/api.d.cts +1 -1
- package/dist/assertions/api.d.mts +1 -1
- package/dist/assertions/api.d.ts +1 -1
- package/dist/assertions/diff.cjs +2 -2
- package/dist/assertions/diff.cjs.map +1 -1
- package/dist/assertions/diff.d.cts +2 -2
- package/dist/assertions/diff.d.mts +2 -2
- package/dist/assertions/diff.d.ts +2 -2
- package/dist/assertions/judge.cjs +11 -10
- package/dist/assertions/judge.cjs.map +1 -1
- package/dist/assertions/record/attachment.cjs +64 -81
- package/dist/assertions/record/attachment.cjs.map +1 -1
- package/dist/assertions/record/attachment.d.cts +88 -143
- package/dist/assertions/record/attachment.d.mts +88 -143
- package/dist/assertions/record/attachment.d.ts +88 -143
- package/dist/assertions/record/attachment.js +12 -16
- package/dist/assertions/record/codec.cjs +178 -100
- package/dist/assertions/record/codec.cjs.map +1 -1
- package/dist/assertions/record/codec.d.cts +75 -56
- package/dist/assertions/record/codec.d.mts +75 -56
- package/dist/assertions/record/codec.d.ts +75 -56
- package/dist/assertions/record/codec.js +36 -32
- package/dist/assertions/record/diff.cjs +545 -134
- package/dist/assertions/record/diff.cjs.map +1 -1
- package/dist/assertions/record/diff.d.cts +73 -25
- package/dist/assertions/record/diff.d.mts +73 -25
- package/dist/assertions/record/diff.d.ts +73 -25
- package/dist/assertions/record/diff.js +12 -14
- package/dist/assertions/record/index.js +70 -72
- package/dist/assertions/record/model.cjs.map +1 -1
- package/dist/assertions/record/model.d.cts +62 -70
- package/dist/assertions/record/model.d.mts +62 -70
- package/dist/assertions/record/model.d.ts +62 -70
- package/dist/assertions/record/producer.cjs +5 -2
- package/dist/assertions/record/producer.cjs.map +1 -1
- package/dist/assertions/record/producer.d.cts +18 -18
- package/dist/assertions/record/producer.d.mts +18 -18
- package/dist/assertions/record/producer.d.ts +18 -18
- package/dist/assertions/record/producer.js +2 -2
- package/dist/assertions/runtime.cjs +14 -9
- package/dist/assertions/runtime.cjs.map +1 -1
- package/dist/assertions/workspace-diff.cjs +18 -4
- package/dist/assertions/workspace-diff.cjs.map +1 -1
- package/dist/assertions/workspace-diff.d.cts +3 -1
- package/dist/assertions/workspace-diff.d.mts +3 -1
- package/dist/assertions/workspace-diff.d.ts +3 -1
- package/dist/assertions/workspace-diff.js +14 -12
- package/dist/attempt-locator-resolution.cjs +33 -38
- package/dist/attempt-locator-resolution.cjs.map +1 -1
- package/dist/attempt-locator-resolution.d.cts +15 -8
- package/dist/attempt-locator-resolution.d.mts +15 -8
- package/dist/attempt-locator-resolution.d.ts +15 -8
- package/dist/cli/record.cjs +16 -89
- package/dist/cli/record.cjs.map +1 -1
- package/dist/cli/record.d.cts +2 -9
- package/dist/cli/record.d.mts +2 -9
- package/dist/cli/record.d.ts +2 -9
- package/dist/cli/record.js +2 -6
- package/dist/cli.cjs +619 -246
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.d.cts +6 -5
- package/dist/cli.d.mts +6 -5
- package/dist/cli.d.ts +6 -5
- package/dist/context/assert-first.cjs +13 -4
- package/dist/context/assert-first.cjs.map +1 -1
- package/dist/context/assert-first.d.cts +3 -4
- package/dist/context/assert-first.d.mts +3 -4
- package/dist/context/assert-first.d.ts +3 -4
- package/dist/context/send-retry.cjs +18 -21
- package/dist/context/send-retry.cjs.map +1 -1
- package/dist/context/send-retry.d.cts +0 -3
- package/dist/context/send-retry.d.mts +0 -3
- package/dist/context/send-retry.d.ts +0 -3
- package/dist/context/session.cjs +46 -42
- package/dist/context/session.cjs.map +1 -1
- package/dist/context/session.d.cts +4 -6
- package/dist/context/session.d.mts +4 -6
- package/dist/context/session.d.ts +4 -6
- package/dist/coordination/host/index.cjs +10 -0
- package/dist/coordination/host/index.cjs.map +1 -0
- package/dist/coordination/host/index.d.cts +6 -0
- package/dist/coordination/host/index.d.mts +6 -0
- package/dist/coordination/host/index.d.ts +6 -0
- package/dist/coordination/host/index.js +6 -0
- package/dist/coordination/host/index.mjs +6 -0
- package/dist/coordination/host/runtime.cjs +57 -0
- package/dist/coordination/host/runtime.cjs.map +1 -0
- package/dist/coordination/host/runtime.d.cts +13 -0
- package/dist/coordination/host/runtime.d.mts +13 -0
- package/dist/coordination/host/runtime.d.ts +13 -0
- package/dist/coordination/host/runtime.js +8 -0
- package/dist/coordination/host/types.cjs.map +1 -0
- package/dist/coordination/host/types.d.cts +37 -0
- package/dist/coordination/host/types.d.mts +37 -0
- package/dist/coordination/host/types.d.ts +37 -0
- package/dist/coordination/identity.cjs +48 -0
- package/dist/coordination/identity.cjs.map +1 -0
- package/dist/coordination/identity.d.cts +14 -0
- package/dist/coordination/identity.d.mts +14 -0
- package/dist/coordination/identity.d.ts +14 -0
- package/dist/coordination/identity.js +6 -0
- package/dist/coordination/index.cjs +23 -0
- package/dist/coordination/index.cjs.map +1 -0
- package/dist/coordination/index.d.cts +6 -0
- package/dist/coordination/index.d.mts +6 -0
- package/dist/coordination/index.d.ts +6 -0
- package/dist/coordination/index.js +16 -0
- package/dist/coordination/platform/index.cjs +18 -0
- package/dist/coordination/platform/index.cjs.map +1 -0
- package/dist/coordination/platform/index.d.cts +1 -0
- package/dist/coordination/platform/index.d.mts +1 -0
- package/dist/coordination/platform/index.d.ts +1 -0
- package/dist/coordination/platform/index.js +6 -0
- package/dist/coordination/platform/node.cjs +251 -0
- package/dist/coordination/platform/node.cjs.map +1 -0
- package/dist/coordination/platform/node.d.cts +3 -0
- package/dist/coordination/platform/node.d.mts +3 -0
- package/dist/coordination/platform/node.d.ts +3 -0
- package/dist/coordination/platform/node.js +6 -0
- package/dist/coordination/platform/node.js.map +1 -0
- package/dist/coordination/record-leases.cjs +22 -0
- package/dist/coordination/record-leases.cjs.map +1 -0
- package/dist/coordination/record-leases.d.cts +39 -0
- package/dist/coordination/record-leases.d.mts +39 -0
- package/dist/coordination/record-leases.d.ts +39 -0
- package/dist/coordination/record-leases.js +10 -0
- package/dist/coordination/record-leases.js.map +1 -0
- package/dist/eval/experiment-id.cjs +1 -5
- package/dist/eval/experiment-id.cjs.map +1 -1
- package/dist/eval/experiment-id.d.cts +0 -2
- package/dist/eval/experiment-id.d.mts +0 -2
- package/dist/eval/experiment-id.d.ts +0 -2
- package/dist/eval/experiment-id.js +0 -4
- package/dist/eval/record/attachment.cjs +7 -47
- package/dist/eval/record/attachment.cjs.map +1 -1
- package/dist/eval/record/attachment.d.cts +8 -24
- package/dist/eval/record/attachment.d.mts +8 -24
- package/dist/eval/record/attachment.d.ts +8 -24
- package/dist/eval/record/attachment.js +4 -10
- package/dist/eval/record/coherence.cjs +6 -6
- package/dist/eval/record/coherence.cjs.map +1 -1
- package/dist/eval/record/coherence.d.cts +16 -16
- package/dist/eval/record/coherence.d.mts +16 -16
- package/dist/eval/record/coherence.d.ts +16 -16
- package/dist/eval/record/coherence.js +2 -2
- package/dist/eval/record/eligibility.cjs +53 -135
- package/dist/eval/record/eligibility.cjs.map +1 -1
- package/dist/eval/record/eligibility.d.cts +38 -140
- package/dist/eval/record/eligibility.d.mts +38 -140
- package/dist/eval/record/eligibility.d.ts +38 -140
- package/dist/eval/record/eligibility.js +16 -38
- package/dist/eval/record/evaluation-plan.cjs +18 -23
- package/dist/eval/record/evaluation-plan.cjs.map +1 -1
- package/dist/eval/record/evaluation-plan.d.cts +6 -9
- package/dist/eval/record/evaluation-plan.d.mts +6 -9
- package/dist/eval/record/evaluation-plan.d.ts +6 -9
- package/dist/eval/record/evaluation-plan.js +2 -2
- package/dist/eval/record/evaluation-record.cjs +161 -454
- package/dist/eval/record/evaluation-record.cjs.map +1 -1
- package/dist/eval/record/evaluation-record.d.cts +67 -128
- package/dist/eval/record/evaluation-record.d.mts +67 -128
- package/dist/eval/record/evaluation-record.d.ts +67 -128
- package/dist/eval/record/evaluation-record.js +16 -16
- package/dist/eval/record/evaluation.cjs +59 -174
- package/dist/eval/record/evaluation.cjs.map +1 -1
- package/dist/eval/record/evaluation.d.cts +43 -119
- package/dist/eval/record/evaluation.d.mts +43 -119
- package/dist/eval/record/evaluation.d.ts +43 -119
- package/dist/eval/record/evaluation.js +20 -32
- package/dist/eval/record/index.js +144 -238
- package/dist/eval/record/membership-provenance.cjs +58 -191
- package/dist/eval/record/membership-provenance.cjs.map +1 -1
- package/dist/eval/record/membership-provenance.d.cts +83 -659
- package/dist/eval/record/membership-provenance.d.mts +83 -659
- package/dist/eval/record/membership-provenance.d.ts +83 -659
- package/dist/eval/record/membership-provenance.js +34 -54
- package/dist/eval/record/score.cjs +58 -170
- package/dist/eval/record/score.cjs.map +1 -1
- package/dist/eval/record/score.d.cts +36 -104
- package/dist/eval/record/score.d.mts +36 -104
- package/dist/eval/record/score.d.ts +36 -104
- package/dist/eval/record/score.js +22 -40
- package/dist/eval/record/sealed-assertion.cjs +10 -10
- package/dist/eval/record/sealed-assertion.cjs.map +1 -1
- package/dist/eval/record/sealed-assertion.d.cts +12 -12
- package/dist/eval/record/sealed-assertion.d.mts +12 -12
- package/dist/eval/record/sealed-assertion.d.ts +12 -12
- package/dist/eval/record/sealed-assertion.js +10 -10
- package/dist/eval/record/verdict.cjs +42 -64
- package/dist/eval/record/verdict.cjs.map +1 -1
- package/dist/eval/record/verdict.d.cts +35 -48
- package/dist/eval/record/verdict.d.mts +35 -48
- package/dist/eval/record/verdict.d.ts +35 -48
- package/dist/eval/record/verdict.js +16 -32
- package/dist/experiment/host/index.cjs +210 -0
- package/dist/experiment/host/index.cjs.map +1 -0
- package/dist/experiment/host/index.d.cts +125 -0
- package/dist/experiment/host/index.d.mts +125 -0
- package/dist/experiment/host/index.d.ts +125 -0
- package/dist/experiment/host/index.js +6 -0
- package/dist/experiment/host/index.mjs +6 -0
- package/dist/experiment/host/index.mjs.map +1 -0
- package/dist/fresh-import.cjs +33 -119
- package/dist/fresh-import.cjs.map +1 -1
- package/dist/i18n/en.cjs +10 -5
- package/dist/i18n/en.cjs.map +1 -1
- package/dist/i18n/en.d.cts +9 -4
- package/dist/i18n/en.d.mts +9 -4
- package/dist/i18n/en.d.ts +9 -4
- package/dist/index.cjs +1 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +0 -2
- package/dist/index.d.mts +0 -2
- package/dist/index.d.ts +0 -2
- package/dist/index.js +18 -20
- package/dist/index.mjs +18 -20
- package/dist/o11y/cost.cjs +16 -6
- package/dist/o11y/cost.cjs.map +1 -1
- package/dist/o11y/parsers/bub.cjs +16 -4
- package/dist/o11y/parsers/bub.cjs.map +1 -1
- package/dist/o11y/parsers/hermes.cjs +19 -6
- package/dist/o11y/parsers/hermes.cjs.map +1 -1
- package/dist/o11y/parsers/openclaw.cjs +5 -10
- package/dist/o11y/parsers/openclaw.cjs.map +1 -1
- package/dist/o11y/parsers/opencode.cjs +6 -11
- package/dist/o11y/parsers/opencode.cjs.map +1 -1
- package/dist/o11y/prices.json +1335 -557
- package/dist/o11y/record/capture.cjs +38 -38
- package/dist/o11y/record/capture.cjs.map +1 -1
- package/dist/o11y/record/capture.d.cts +25 -25
- package/dist/o11y/record/capture.d.mts +25 -25
- package/dist/o11y/record/capture.d.ts +25 -25
- package/dist/o11y/record/capture.js +26 -26
- package/dist/o11y/record/codec.cjs +139 -140
- package/dist/o11y/record/codec.cjs.map +1 -1
- package/dist/o11y/record/codec.d.cts +262 -266
- package/dist/o11y/record/codec.d.mts +262 -266
- package/dist/o11y/record/codec.d.ts +262 -266
- package/dist/o11y/record/codec.js +58 -60
- package/dist/o11y/record/errors.cjs +20 -20
- package/dist/o11y/record/errors.cjs.map +1 -1
- package/dist/o11y/record/errors.d.cts +18 -18
- package/dist/o11y/record/errors.d.mts +18 -18
- package/dist/o11y/record/errors.d.ts +18 -18
- package/dist/o11y/record/errors.js +20 -20
- package/dist/o11y/record/families.cjs +269 -264
- package/dist/o11y/record/families.cjs.map +1 -1
- package/dist/o11y/record/families.d.cts +1589 -1573
- package/dist/o11y/record/families.d.mts +1589 -1573
- package/dist/o11y/record/families.d.ts +1589 -1573
- package/dist/o11y/record/families.js +64 -64
- package/dist/o11y/record/family-projectors.cjs +31 -58
- package/dist/o11y/record/family-projectors.cjs.map +1 -1
- package/dist/o11y/record/family-projectors.d.cts +2933 -34
- package/dist/o11y/record/family-projectors.d.mts +2933 -34
- package/dist/o11y/record/family-projectors.d.ts +2933 -34
- package/dist/o11y/record/family-projectors.js +10 -4
- package/dist/o11y/record/family-writers.cjs +207 -336
- package/dist/o11y/record/family-writers.cjs.map +1 -1
- package/dist/o11y/record/family-writers.d.cts +637 -5260
- package/dist/o11y/record/family-writers.d.mts +637 -5260
- package/dist/o11y/record/family-writers.d.ts +637 -5260
- package/dist/o11y/record/family-writers.js +14 -56
- package/dist/o11y/record/index.js +446 -484
- package/dist/o11y/record/limits.cjs +45 -45
- package/dist/o11y/record/limits.cjs.map +1 -1
- package/dist/o11y/record/limits.d.cts +32 -32
- package/dist/o11y/record/limits.d.mts +32 -32
- package/dist/o11y/record/limits.d.ts +32 -32
- package/dist/o11y/record/limits.js +64 -64
- package/dist/o11y/record/model.cjs +271 -277
- package/dist/o11y/record/model.cjs.map +1 -1
- package/dist/o11y/record/model.d.cts +160 -186
- package/dist/o11y/record/model.d.mts +160 -186
- package/dist/o11y/record/model.d.ts +160 -186
- package/dist/o11y/record/model.js +154 -154
- package/dist/o11y/record/runner-producer.cjs +649 -520
- package/dist/o11y/record/runner-producer.cjs.map +1 -1
- package/dist/o11y/record/runner-producer.d.cts +39 -25
- package/dist/o11y/record/runner-producer.d.mts +39 -25
- package/dist/o11y/record/runner-producer.d.ts +39 -25
- package/dist/o11y/record/runner-producer.js +26 -22
- package/dist/o11y/record/validation.cjs +75 -75
- package/dist/o11y/record/validation.cjs.map +1 -1
- package/dist/o11y/record/validation.d.cts +35 -35
- package/dist/o11y/record/validation.d.mts +35 -35
- package/dist/o11y/record/validation.d.ts +35 -35
- package/dist/o11y/record/validation.js +24 -24
- package/dist/o11y/types.cjs.map +1 -1
- package/dist/o11y/types.d.cts +7 -5
- package/dist/o11y/types.d.mts +7 -5
- package/dist/o11y/types.d.ts +7 -5
- package/dist/plugin/contracts.cjs.map +1 -1
- package/dist/plugin/contracts.d.cts +0 -3
- package/dist/plugin/contracts.d.mts +0 -3
- package/dist/plugin/contracts.d.ts +0 -3
- package/dist/plugins/record/attachment.cjs +0 -59
- package/dist/plugins/record/attachment.cjs.map +1 -1
- package/dist/plugins/record/attachment.d.cts +6 -14
- package/dist/plugins/record/attachment.d.mts +6 -14
- package/dist/plugins/record/attachment.d.ts +6 -14
- package/dist/plugins/record/attachment.js +0 -16
- package/dist/plugins/record/capability.cjs +0 -255
- package/dist/plugins/record/capability.cjs.map +1 -1
- package/dist/plugins/record/capability.d.cts +1 -93
- package/dist/plugins/record/capability.d.mts +1 -93
- package/dist/plugins/record/capability.d.ts +1 -93
- package/dist/plugins/record/capability.js +0 -22
- package/dist/plugins/record/codec.cjs +0 -241
- package/dist/plugins/record/codec.cjs.map +1 -1
- package/dist/plugins/record/codec.d.cts +2 -28
- package/dist/plugins/record/codec.d.mts +2 -28
- package/dist/plugins/record/codec.d.ts +2 -28
- package/dist/plugins/record/codec.js +0 -44
- package/dist/plugins/record/index.cjs +0 -51
- package/dist/plugins/record/index.cjs.map +1 -1
- package/dist/plugins/record/index.d.cts +5 -9
- package/dist/plugins/record/index.d.mts +5 -9
- package/dist/plugins/record/index.d.ts +5 -9
- package/dist/plugins/record/index.js +0 -90
- package/dist/plugins/record/migration.cjs +0 -30
- package/dist/plugins/record/migration.cjs.map +1 -1
- package/dist/plugins/record/migration.d.cts +3 -20
- package/dist/plugins/record/migration.d.mts +3 -20
- package/dist/plugins/record/migration.d.ts +3 -20
- package/dist/plugins/record/migration.js +0 -2
- package/dist/plugins/record/model.cjs.map +1 -1
- package/dist/plugins/record/model.d.cts +2 -93
- package/dist/plugins/record/model.d.mts +2 -93
- package/dist/plugins/record/model.d.ts +2 -93
- package/dist/plugins/record/provenance.cjs +0 -316
- package/dist/plugins/record/provenance.cjs.map +1 -1
- package/dist/plugins/record/provenance.d.cts +1 -78
- package/dist/plugins/record/provenance.d.mts +1 -78
- package/dist/plugins/record/provenance.d.ts +1 -78
- package/dist/plugins/record/provenance.js +0 -20
- package/dist/record/attachment/blob-policy.cjs +3 -0
- package/dist/record/attachment/blob-policy.cjs.map +1 -0
- package/dist/record/attachment/blob-policy.d.cts +18 -0
- package/dist/record/attachment/blob-policy.d.mts +18 -0
- package/dist/record/attachment/blob-policy.d.ts +18 -0
- package/dist/record/attachment/blob-policy.js +4 -0
- package/dist/record/attachment/blob-policy.js.map +1 -0
- package/dist/record/attachment/blob-ref.cjs +42 -0
- package/dist/record/attachment/blob-ref.cjs.map +1 -0
- package/dist/record/attachment/blob-ref.d.cts +22 -0
- package/dist/record/attachment/blob-ref.d.mts +22 -0
- package/dist/record/attachment/blob-ref.d.ts +22 -0
- package/dist/record/attachment/blob-ref.js +14 -0
- package/dist/record/attachment/blob-ref.js.map +1 -0
- package/dist/record/attachment/errors.cjs +6 -34
- package/dist/record/attachment/errors.cjs.map +1 -1
- package/dist/record/attachment/errors.d.cts +2 -24
- package/dist/record/attachment/errors.d.mts +2 -24
- package/dist/record/attachment/errors.d.ts +2 -24
- package/dist/record/attachment/errors.js +4 -10
- package/dist/record/attachment/index.cjs +2 -8
- package/dist/record/attachment/index.cjs.map +1 -1
- package/dist/record/attachment/index.d.cts +3 -3
- package/dist/record/attachment/index.d.mts +3 -3
- package/dist/record/attachment/index.d.ts +3 -3
- package/dist/record/attachment/index.js +6 -18
- package/dist/record/attachment/internal.cjs +5 -14
- package/dist/record/attachment/internal.cjs.map +1 -1
- package/dist/record/attachment/internal.d.cts +3 -2
- package/dist/record/attachment/internal.d.mts +3 -2
- package/dist/record/attachment/internal.d.ts +3 -2
- package/dist/record/attachment/internal.js +12 -30
- package/dist/record/attachment/runtime.cjs +155 -745
- package/dist/record/attachment/runtime.cjs.map +1 -1
- package/dist/record/attachment/runtime.d.cts +25 -68
- package/dist/record/attachment/runtime.d.mts +25 -68
- package/dist/record/attachment/runtime.d.ts +25 -68
- package/dist/record/attachment/runtime.js +16 -48
- package/dist/record/attachment/types.cjs +3 -26
- package/dist/record/attachment/types.cjs.map +1 -1
- package/dist/record/attachment/types.d.cts +33 -132
- package/dist/record/attachment/types.d.mts +33 -132
- package/dist/record/attachment/types.d.ts +33 -132
- package/dist/record/attachment/types.js +10 -22
- package/dist/record/codec/core.cjs +102 -85
- package/dist/record/codec/core.cjs.map +1 -1
- package/dist/record/codec/core.d.cts +205 -55
- package/dist/record/codec/core.d.mts +205 -55
- package/dist/record/codec/core.d.ts +205 -55
- package/dist/record/codec/core.js +50 -42
- package/dist/record/codec/identifiers.cjs +24 -2
- package/dist/record/codec/identifiers.cjs.map +1 -1
- package/dist/record/codec/identifiers.d.cts +11 -2
- package/dist/record/codec/identifiers.d.mts +11 -2
- package/dist/record/codec/identifiers.d.ts +11 -2
- package/dist/record/codec/identifiers.js +36 -18
- package/dist/record/codec/index.js +86 -60
- package/dist/record/definition/attachment.cjs +108 -0
- package/dist/record/definition/attachment.cjs.map +1 -0
- package/dist/record/definition/attachment.d.cts +77 -0
- package/dist/record/definition/attachment.d.mts +77 -0
- package/dist/record/definition/attachment.d.ts +77 -0
- package/dist/record/definition/attachment.js +8 -0
- package/dist/record/definition/attachment.js.map +1 -0
- package/dist/record/definition/canonical.cjs +271 -0
- package/dist/record/definition/canonical.cjs.map +1 -0
- package/dist/record/definition/canonical.d.cts +38 -0
- package/dist/record/definition/canonical.d.mts +38 -0
- package/dist/record/definition/canonical.d.ts +38 -0
- package/dist/record/definition/canonical.js +10 -0
- package/dist/record/definition/canonical.js.map +1 -0
- package/dist/record/definition/core.cjs +13 -0
- package/dist/record/definition/core.cjs.map +1 -0
- package/dist/record/definition/core.d.cts +10 -0
- package/dist/record/definition/core.d.mts +10 -0
- package/dist/record/definition/core.d.ts +10 -0
- package/dist/record/definition/core.js +6 -0
- package/dist/record/definition/core.js.map +1 -0
- package/dist/record/definition/index.cjs +21 -0
- package/dist/record/definition/index.cjs.map +1 -0
- package/dist/record/definition/index.d.cts +4 -0
- package/dist/record/definition/index.d.mts +4 -0
- package/dist/record/definition/index.d.ts +4 -0
- package/dist/record/definition/index.js +16 -0
- package/dist/record/definition/index.js.map +1 -0
- package/dist/record/definition/schema-codec.cjs +347 -0
- package/dist/record/definition/schema-codec.cjs.map +1 -0
- package/dist/record/definition/schema-codec.d.cts +48 -0
- package/dist/record/definition/schema-codec.d.mts +48 -0
- package/dist/record/definition/schema-codec.d.ts +48 -0
- package/dist/record/definition/schema-codec.js +8 -0
- package/dist/record/definition/schema-codec.js.map +1 -0
- package/dist/record/errors/record-errors.cjs +2 -2
- package/dist/record/errors/record-errors.cjs.map +1 -1
- package/dist/record/errors/record-errors.d.cts +2 -2
- package/dist/record/errors/record-errors.d.mts +2 -2
- package/dist/record/errors/record-errors.d.ts +2 -2
- package/dist/record/family/artifacts.cjs +83 -0
- package/dist/record/family/artifacts.cjs.map +1 -0
- package/dist/record/family/artifacts.d.cts +225 -0
- package/dist/record/family/artifacts.d.mts +225 -0
- package/dist/record/family/artifacts.d.ts +225 -0
- package/dist/record/family/artifacts.js +14 -0
- package/dist/record/family/artifacts.js.map +1 -0
- package/dist/record/family/assertions.cjs +172 -0
- package/dist/record/family/assertions.cjs.map +1 -0
- package/dist/record/family/assertions.d.cts +292 -0
- package/dist/record/family/assertions.d.mts +292 -0
- package/dist/record/family/assertions.d.ts +292 -0
- package/dist/record/family/assertions.js +20 -0
- package/dist/record/family/assertions.js.map +1 -0
- package/dist/record/family/catalog.cjs +91 -0
- package/dist/record/family/catalog.cjs.map +1 -0
- package/dist/record/family/catalog.d.cts +3653 -0
- package/dist/record/family/catalog.d.mts +3653 -0
- package/dist/record/family/catalog.d.ts +3653 -0
- package/dist/record/family/catalog.js +34 -0
- package/dist/record/family/catalog.js.map +1 -0
- package/dist/record/family/common.cjs +80 -0
- package/dist/record/family/common.cjs.map +1 -0
- package/dist/record/family/common.d.cts +44 -0
- package/dist/record/family/common.d.mts +44 -0
- package/dist/record/family/common.d.ts +44 -0
- package/dist/record/family/common.js +28 -0
- package/dist/record/family/common.js.map +1 -0
- package/dist/record/family/file-changes.cjs +278 -0
- package/dist/record/family/file-changes.cjs.map +1 -0
- package/dist/record/family/file-changes.d.cts +643 -0
- package/dist/record/family/file-changes.d.mts +643 -0
- package/dist/record/family/file-changes.d.ts +643 -0
- package/dist/record/family/file-changes.js +32 -0
- package/dist/record/family/file-changes.js.map +1 -0
- package/dist/record/family/index.cjs +24 -0
- package/dist/record/family/index.cjs.map +1 -0
- package/dist/record/family/index.d.cts +7 -0
- package/dist/record/family/index.d.mts +7 -0
- package/dist/record/family/index.d.ts +7 -0
- package/dist/record/family/index.js +148 -0
- package/dist/record/family/index.js.map +1 -0
- package/dist/record/family/observability.cjs +511 -0
- package/dist/record/family/observability.cjs.map +1 -0
- package/dist/record/family/observability.d.cts +2879 -0
- package/dist/record/family/observability.d.mts +2879 -0
- package/dist/record/family/observability.d.ts +2879 -0
- package/dist/record/family/observability.js +30 -0
- package/dist/record/family/observability.js.map +1 -0
- package/dist/record/family/source-navigation.cjs +215 -0
- package/dist/record/family/source-navigation.cjs.map +1 -0
- package/dist/record/family/source-navigation.d.cts +330 -0
- package/dist/record/family/source-navigation.d.mts +330 -0
- package/dist/record/family/source-navigation.d.ts +330 -0
- package/dist/record/family/source-navigation.js +24 -0
- package/dist/record/family/source-navigation.js.map +1 -0
- package/dist/record/family/sources.cjs +82 -0
- package/dist/record/family/sources.cjs.map +1 -0
- package/dist/record/family/sources.d.cts +81 -0
- package/dist/record/family/sources.d.mts +81 -0
- package/dist/record/family/sources.d.ts +81 -0
- package/dist/record/family/sources.js +14 -0
- package/dist/record/family/sources.js.map +1 -0
- package/dist/record/host/index.cjs +11 -0
- package/dist/record/host/index.cjs.map +1 -0
- package/dist/record/host/index.d.cts +7 -0
- package/dist/record/host/index.d.mts +7 -0
- package/dist/record/host/index.d.ts +7 -0
- package/dist/record/host/index.js +6 -0
- package/dist/record/host/index.js.map +1 -0
- package/dist/record/host/index.mjs +6 -0
- package/dist/record/host/index.mjs.map +1 -0
- package/dist/record/host/runtime.cjs +1696 -0
- package/dist/record/host/runtime.cjs.map +1 -0
- package/dist/record/host/runtime.d.cts +2 -0
- package/dist/record/host/runtime.d.mts +2 -0
- package/dist/record/host/runtime.d.ts +2 -0
- package/dist/record/host/runtime.js +6 -0
- package/dist/record/host/types.cjs +9 -0
- package/dist/record/host/types.cjs.map +1 -0
- package/dist/record/host/types.d.cts +259 -0
- package/dist/record/host/types.d.mts +259 -0
- package/dist/record/host/types.d.ts +259 -0
- package/dist/record/host/types.js +14 -0
- package/dist/record/host/types.js.map +1 -0
- package/dist/record/index.cjs +19 -52
- package/dist/record/index.cjs.map +1 -1
- package/dist/record/index.d.cts +14 -11
- package/dist/record/index.d.mts +14 -11
- package/dist/record/index.d.ts +14 -11
- package/dist/record/index.js +16 -310
- package/dist/record/index.mjs +20 -0
- package/dist/record/index.mjs.map +1 -0
- package/dist/record/maintenance/runtime.cjs +9 -11
- package/dist/record/maintenance/runtime.cjs.map +1 -1
- package/dist/record/maintenance/runtime.d.cts +4 -5
- package/dist/record/maintenance/runtime.d.mts +4 -5
- package/dist/record/maintenance/runtime.d.ts +4 -5
- package/dist/record/maintenance/types.cjs.map +1 -1
- package/dist/record/maintenance/types.d.cts +7 -8
- package/dist/record/maintenance/types.d.mts +7 -8
- package/dist/record/maintenance/types.d.ts +7 -8
- package/dist/record/migration/index.cjs +2 -25
- package/dist/record/migration/index.cjs.map +1 -1
- package/dist/record/migration/index.d.cts +11 -8
- package/dist/record/migration/index.d.mts +11 -8
- package/dist/record/migration/index.d.ts +11 -8
- package/dist/record/migration/index.js +2 -44
- package/dist/record/model/core.cjs +1 -4
- package/dist/record/model/core.cjs.map +1 -1
- package/dist/record/model/core.d.cts +59 -39
- package/dist/record/model/core.d.mts +59 -39
- package/dist/record/model/core.d.ts +59 -39
- package/dist/record/model/definition.cjs +147 -0
- package/dist/record/model/definition.cjs.map +1 -0
- package/dist/record/model/definition.d.cts +463 -0
- package/dist/record/model/definition.d.mts +463 -0
- package/dist/record/model/definition.d.ts +463 -0
- package/dist/record/model/definition.js +40 -0
- package/dist/record/model/definition.js.map +1 -0
- package/dist/record/model/identifiers.cjs +52 -10
- package/dist/record/model/identifiers.cjs.map +1 -1
- package/dist/record/model/identifiers.d.cts +44 -3
- package/dist/record/model/identifiers.d.mts +44 -3
- package/dist/record/model/identifiers.d.ts +44 -3
- package/dist/record/model/identifiers.js +62 -36
- package/dist/record/model/index.cjs +1 -0
- package/dist/record/model/index.cjs.map +1 -1
- package/dist/record/model/index.d.cts +1 -0
- package/dist/record/model/index.d.mts +1 -0
- package/dist/record/model/index.d.ts +1 -0
- package/dist/record/model/index.js +86 -48
- package/dist/record/model/read-state.cjs.map +1 -1
- package/dist/record/model/read-state.d.cts +6 -9
- package/dist/record/model/read-state.d.mts +6 -9
- package/dist/record/model/read-state.d.ts +6 -9
- package/dist/record/model/run-context.cjs +80 -0
- package/dist/record/model/run-context.cjs.map +1 -0
- package/dist/record/model/run-context.d.cts +30 -0
- package/dist/record/model/run-context.d.mts +30 -0
- package/dist/record/model/run-context.d.ts +30 -0
- package/dist/record/model/run-context.js +14 -0
- package/dist/record/model/run-context.js.map +1 -0
- package/dist/record/model/validation.cjs +155 -54
- package/dist/record/model/validation.cjs.map +1 -1
- package/dist/record/model/validation.d.cts +16 -11
- package/dist/record/model/validation.d.mts +16 -11
- package/dist/record/model/validation.d.ts +16 -11
- package/dist/record/model/validation.js +10 -8
- package/dist/record/platform/errors.cjs +2 -8
- package/dist/record/platform/errors.cjs.map +1 -1
- package/dist/record/platform/errors.d.cts +3 -13
- package/dist/record/platform/errors.d.mts +3 -13
- package/dist/record/platform/errors.d.ts +3 -13
- package/dist/record/platform/errors.js +0 -2
- package/dist/record/platform/index.js +38 -48
- package/dist/record/platform/node.cjs +3 -142
- package/dist/record/platform/node.cjs.map +1 -1
- package/dist/record/platform/node.d.cts +2 -4
- package/dist/record/platform/node.d.mts +2 -4
- package/dist/record/platform/node.d.ts +2 -4
- package/dist/record/platform/node.js +0 -4
- package/dist/record/platform/root.cjs +0 -11
- package/dist/record/platform/root.cjs.map +1 -1
- package/dist/record/platform/root.d.cts +0 -2
- package/dist/record/platform/root.d.mts +0 -2
- package/dist/record/platform/root.d.ts +0 -2
- package/dist/record/platform/services.cjs +1 -7
- package/dist/record/platform/services.cjs.map +1 -1
- package/dist/record/platform/services.d.cts +2 -29
- package/dist/record/platform/services.d.mts +2 -29
- package/dist/record/platform/services.d.ts +2 -29
- package/dist/record/platform/services.js +2 -6
- package/dist/record/reader/errors.cjs.map +1 -1
- package/dist/record/reader/errors.d.cts +3 -2
- package/dist/record/reader/errors.d.mts +3 -2
- package/dist/record/reader/errors.d.ts +3 -2
- package/dist/record/reader/format.cjs +26 -40
- package/dist/record/reader/format.cjs.map +1 -1
- package/dist/record/reader/format.d.cts +6 -7
- package/dist/record/reader/format.d.mts +6 -7
- package/dist/record/reader/format.d.ts +6 -7
- package/dist/record/reader/index.js +22 -30
- package/dist/record/reader/runtime.cjs +112 -636
- package/dist/record/reader/runtime.cjs.map +1 -1
- package/dist/record/reader/runtime.d.cts +43 -12
- package/dist/record/reader/runtime.d.mts +43 -12
- package/dist/record/reader/runtime.d.ts +43 -12
- package/dist/record/reader/runtime.js +6 -10
- package/dist/record/reader/types.cjs +3 -6
- package/dist/record/reader/types.cjs.map +1 -1
- package/dist/record/reader/types.d.cts +3 -42
- package/dist/record/reader/types.d.mts +3 -42
- package/dist/record/reader/types.d.ts +3 -42
- package/dist/record/reader/types.js +0 -4
- package/dist/record/writer/errors.cjs +7 -0
- package/dist/record/writer/errors.cjs.map +1 -1
- package/dist/record/writer/errors.d.cts +5 -0
- package/dist/record/writer/errors.d.mts +5 -0
- package/dist/record/writer/errors.d.ts +5 -0
- package/dist/record/writer/errors.js +6 -4
- package/dist/record/writer/index.cjs +0 -1
- package/dist/record/writer/index.cjs.map +1 -1
- package/dist/record/writer/index.d.cts +0 -1
- package/dist/record/writer/index.d.mts +0 -1
- package/dist/record/writer/index.d.ts +0 -1
- package/dist/record/writer/index.js +10 -10
- package/dist/record/writer/types.cjs.map +1 -1
- package/dist/record/writer/types.d.cts +12 -17
- package/dist/record/writer/types.d.mts +12 -17
- package/dist/record/writer/types.d.ts +12 -17
- package/dist/report/assets/colors.cjs +70 -0
- package/dist/report/assets/colors.cjs.map +1 -0
- package/dist/report/assets/colors.d.cts +22 -0
- package/dist/report/assets/colors.d.mts +22 -0
- package/dist/report/assets/colors.d.ts +22 -0
- package/dist/report/assets/colors.js +18 -0
- package/dist/report/assets/colors.js.map +1 -0
- package/dist/report/assets/enhance.js +466 -0
- package/dist/report/assets/series-encoding.cjs +116 -0
- package/dist/report/assets/series-encoding.cjs.map +1 -0
- package/dist/report/assets/series-encoding.d.cts +36 -0
- package/dist/report/assets/series-encoding.d.mts +36 -0
- package/dist/report/assets/series-encoding.d.ts +36 -0
- package/dist/report/assets/series-encoding.js +22 -0
- package/dist/report/assets/series-encoding.js.map +1 -0
- package/dist/report/assets/styles.css +2678 -0
- package/dist/report/built-in/analysis-values.cjs +28 -0
- package/dist/report/built-in/analysis-values.cjs.map +1 -0
- package/dist/report/built-in/analysis-values.d.cts +41 -0
- package/dist/report/built-in/analysis-values.d.mts +41 -0
- package/dist/report/built-in/analysis-values.d.ts +41 -0
- package/dist/report/built-in/analysis-values.js +10 -0
- package/dist/report/built-in/analysis-values.js.map +1 -0
- package/dist/report/built-in/attempt-overview.cjs +62 -384
- package/dist/report/built-in/attempt-overview.cjs.map +1 -1
- package/dist/report/built-in/attempt-overview.d.cts +4 -8
- package/dist/report/built-in/attempt-overview.d.mts +4 -8
- package/dist/report/built-in/attempt-overview.d.ts +4 -8
- package/dist/report/built-in/execution.cjs +40 -747
- package/dist/report/built-in/execution.cjs.map +1 -1
- package/dist/report/built-in/execution.d.cts +10 -19
- package/dist/report/built-in/execution.d.mts +10 -19
- package/dist/report/built-in/execution.d.ts +10 -19
- package/dist/report/built-in/index.cjs +15 -28
- package/dist/report/built-in/index.cjs.map +1 -1
- package/dist/report/built-in/index.d.cts +4 -6
- package/dist/report/built-in/index.d.mts +4 -6
- package/dist/report/built-in/index.d.ts +4 -6
- package/dist/report/built-in/index.js +22 -31
- package/dist/report/built-in/index.mjs +22 -31
- package/dist/report/built-in/machine.cjs +41 -0
- package/dist/report/built-in/machine.cjs.map +1 -0
- package/dist/report/built-in/machine.d.cts +29 -0
- package/dist/report/built-in/machine.d.mts +29 -0
- package/dist/report/built-in/machine.d.ts +29 -0
- package/dist/report/built-in/machine.js +8 -0
- package/dist/report/built-in/machine.js.map +1 -0
- package/dist/report/built-in/overview.cjs +38 -200
- package/dist/report/built-in/overview.cjs.map +1 -1
- package/dist/report/built-in/overview.d.cts +5 -5
- package/dist/report/built-in/overview.d.mts +5 -5
- package/dist/report/built-in/overview.d.ts +5 -5
- package/dist/report/built-in/overview.js +0 -2
- package/dist/report/built-in/result-components.cjs +325 -0
- package/dist/report/built-in/result-components.cjs.map +1 -0
- package/dist/report/built-in/result-components.d.cts +94 -0
- package/dist/report/built-in/result-components.d.mts +94 -0
- package/dist/report/built-in/result-components.d.ts +94 -0
- package/dist/report/built-in/result-components.js +24 -0
- package/dist/report/built-in/result-components.js.map +1 -0
- package/dist/report/built-in/run-membership-overview.cjs +48 -184
- package/dist/report/built-in/run-membership-overview.cjs.map +1 -1
- package/dist/report/built-in/run-membership-overview.d.cts +5 -5
- package/dist/report/built-in/run-membership-overview.d.mts +5 -5
- package/dist/report/built-in/run-membership-overview.d.ts +5 -5
- package/dist/report/built-in/sandbox-history.cjs +31 -372
- package/dist/report/built-in/sandbox-history.cjs.map +1 -1
- package/dist/report/built-in/sandbox-history.d.cts +5 -8
- package/dist/report/built-in/sandbox-history.d.mts +5 -8
- package/dist/report/built-in/sandbox-history.d.ts +5 -8
- package/dist/report/built-in/source.cjs +40 -150
- package/dist/report/built-in/source.cjs.map +1 -1
- package/dist/report/built-in/source.d.cts +10 -11
- package/dist/report/built-in/source.d.mts +10 -11
- package/dist/report/built-in/source.d.ts +10 -11
- package/dist/report/built-in/source.js +1 -0
- package/dist/report/built-in/standard.cjs +135 -0
- package/dist/report/built-in/standard.cjs.map +1 -0
- package/dist/report/built-in/standard.d.cts +91 -0
- package/dist/report/built-in/standard.d.mts +91 -0
- package/dist/report/built-in/standard.d.ts +91 -0
- package/dist/report/built-in/standard.js +17 -0
- package/dist/report/built-in/standard.js.map +1 -0
- package/dist/report/components/attempt-detail/compute.cjs +763 -0
- package/dist/report/components/attempt-detail/compute.cjs.map +1 -0
- package/dist/report/components/attempt-detail/compute.d.cts +370 -0
- package/dist/report/components/attempt-detail/compute.d.mts +370 -0
- package/dist/report/components/attempt-detail/compute.d.ts +370 -0
- package/dist/report/components/attempt-detail/compute.js +46 -0
- package/dist/report/components/attempt-detail/compute.js.map +1 -0
- package/dist/report/components/attempt-detail/content.cjs +411 -0
- package/dist/report/components/attempt-detail/content.cjs.map +1 -0
- package/dist/report/components/attempt-detail/content.d.cts +34 -0
- package/dist/report/components/attempt-detail/content.d.mts +34 -0
- package/dist/report/components/attempt-detail/content.d.ts +34 -0
- package/dist/report/components/attempt-detail/content.js +30 -0
- package/dist/report/components/attempt-detail/content.js.map +1 -0
- package/dist/report/components/attempt-detail/index.cjs +314 -0
- package/dist/report/components/attempt-detail/index.cjs.map +1 -0
- package/dist/report/components/attempt-detail/index.d.cts +27 -0
- package/dist/report/components/attempt-detail/index.d.mts +27 -0
- package/dist/report/components/attempt-detail/index.d.ts +27 -0
- package/dist/report/components/attempt-detail/index.js +34 -0
- package/dist/report/components/attempt-detail/index.js.map +1 -0
- package/dist/report/components/attempt-detail/validate.cjs +497 -0
- package/dist/report/components/attempt-detail/validate.cjs.map +1 -0
- package/dist/report/components/attempt-detail/validate.d.cts +14 -0
- package/dist/report/components/attempt-detail/validate.d.mts +14 -0
- package/dist/report/components/attempt-detail/validate.d.ts +14 -0
- package/dist/report/components/attempt-detail/validate.js +30 -0
- package/dist/report/components/attempt-detail/validate.js.map +1 -0
- package/dist/report/components/entity-lists/compute.cjs +426 -0
- package/dist/report/components/entity-lists/compute.cjs.map +1 -0
- package/dist/report/components/entity-lists/compute.d.cts +107 -0
- package/dist/report/components/entity-lists/compute.d.mts +107 -0
- package/dist/report/components/entity-lists/compute.d.ts +107 -0
- package/dist/report/components/entity-lists/compute.js +12 -0
- package/dist/report/components/entity-lists/compute.js.map +1 -0
- package/dist/report/components/entity-lists/content.cjs +275 -0
- package/dist/report/components/entity-lists/content.cjs.map +1 -0
- package/dist/report/components/entity-lists/content.d.cts +4 -0
- package/dist/report/components/entity-lists/content.d.mts +4 -0
- package/dist/report/components/entity-lists/content.d.ts +4 -0
- package/dist/report/components/entity-lists/content.js +8 -0
- package/dist/report/components/entity-lists/content.js.map +1 -0
- package/dist/report/components/entity-lists/index.cjs +48 -0
- package/dist/report/components/entity-lists/index.cjs.map +1 -0
- package/dist/report/components/entity-lists/index.d.cts +39 -0
- package/dist/report/components/entity-lists/index.d.mts +39 -0
- package/dist/report/components/entity-lists/index.d.ts +39 -0
- package/dist/report/components/entity-lists/index.js +22 -0
- package/dist/report/components/entity-lists/index.js.map +1 -0
- package/dist/report/components/experiment-detail/compute.cjs +228 -0
- package/dist/report/components/experiment-detail/compute.cjs.map +1 -0
- package/dist/report/components/experiment-detail/compute.d.cts +72 -0
- package/dist/report/components/experiment-detail/compute.d.mts +72 -0
- package/dist/report/components/experiment-detail/compute.d.ts +72 -0
- package/dist/report/components/experiment-detail/compute.js +6 -0
- package/dist/report/components/experiment-detail/compute.js.map +1 -0
- package/dist/report/components/experiment-detail/index.cjs +84 -0
- package/dist/report/components/experiment-detail/index.cjs.map +1 -0
- package/dist/report/components/experiment-detail/index.d.cts +13 -0
- package/dist/report/components/experiment-detail/index.d.mts +13 -0
- package/dist/report/components/experiment-detail/index.d.ts +13 -0
- package/dist/report/components/experiment-detail/index.js +6 -0
- package/dist/report/components/experiment-detail/index.js.map +1 -0
- package/dist/report/components/site-components/HeroCard.cjs +38 -0
- package/dist/report/components/site-components/HeroCard.cjs.map +1 -0
- package/dist/report/components/site-components/HeroCard.d.cts +14 -0
- package/dist/report/components/site-components/HeroCard.d.mts +14 -0
- package/dist/report/components/site-components/HeroCard.d.ts +14 -0
- package/dist/report/components/site-components/HeroCard.js +6 -0
- package/dist/report/components/site-components/HeroCard.js.map +1 -0
- package/dist/report/components/site-components/PoweredBy.cjs +12 -0
- package/dist/report/components/site-components/PoweredBy.cjs.map +1 -0
- package/dist/report/components/site-components/PoweredBy.d.cts +5 -0
- package/dist/report/components/site-components/PoweredBy.d.mts +5 -0
- package/dist/report/components/site-components/PoweredBy.d.ts +5 -0
- package/dist/report/components/site-components/PoweredBy.js +8 -0
- package/dist/report/components/site-components/PoweredBy.js.map +1 -0
- package/dist/report/components/site-components/compute.cjs +130 -0
- package/dist/report/components/site-components/compute.cjs.map +1 -0
- package/dist/report/components/site-components/compute.d.cts +36 -0
- package/dist/report/components/site-components/compute.d.mts +36 -0
- package/dist/report/components/site-components/compute.d.ts +36 -0
- package/dist/report/components/site-components/compute.js +16 -0
- package/dist/report/components/site-components/compute.js.map +1 -0
- package/dist/report/components/site-components/content.cjs +9 -0
- package/dist/report/components/site-components/content.cjs.map +1 -0
- package/dist/report/components/site-components/content.d.cts +118 -0
- package/dist/report/components/site-components/content.d.mts +118 -0
- package/dist/report/components/site-components/content.d.ts +118 -0
- package/dist/report/components/site-components/content.js +12 -0
- package/dist/report/components/site-components/content.js.map +1 -0
- package/dist/report/components/site-components/faces.cjs +33 -0
- package/dist/report/components/site-components/faces.cjs.map +1 -0
- package/dist/report/components/site-components/faces.d.cts +9 -0
- package/dist/report/components/site-components/faces.d.mts +9 -0
- package/dist/report/components/site-components/faces.d.ts +9 -0
- package/dist/report/components/site-components/faces.js +6 -0
- package/dist/report/components/site-components/faces.js.map +1 -0
- package/dist/report/components/site-components/hero-types.cjs +3 -0
- package/dist/report/components/site-components/hero-types.cjs.map +1 -0
- package/dist/report/components/site-components/hero-types.d.cts +17 -0
- package/dist/report/components/site-components/hero-types.d.mts +17 -0
- package/dist/report/components/site-components/hero-types.d.ts +17 -0
- package/dist/report/components/site-components/hero-types.js +4 -0
- package/dist/report/components/site-components/hero-types.js.map +1 -0
- package/dist/report/components/site-components/index.cjs +90 -0
- package/dist/report/components/site-components/index.cjs.map +1 -0
- package/dist/report/components/site-components/index.d.cts +58 -0
- package/dist/report/components/site-components/index.d.mts +58 -0
- package/dist/report/components/site-components/index.d.ts +58 -0
- package/dist/report/components/site-components/index.js +26 -0
- package/dist/report/components/site-components/index.js.map +1 -0
- package/dist/report/components/site-components/projections.cjs +86 -0
- package/dist/report/components/site-components/projections.cjs.map +1 -0
- package/dist/report/components/site-components/projections.d.cts +11 -0
- package/dist/report/components/site-components/projections.d.mts +11 -0
- package/dist/report/components/site-components/projections.d.ts +11 -0
- package/dist/report/components/site-components/projections.js +12 -0
- package/dist/report/components/site-components/projections.js.map +1 -0
- package/dist/report/components/site-components/scope-warnings.cjs +89 -0
- package/dist/report/components/site-components/scope-warnings.cjs.map +1 -0
- package/dist/report/components/site-components/scope-warnings.d.cts +34 -0
- package/dist/report/components/site-components/scope-warnings.d.mts +34 -0
- package/dist/report/components/site-components/scope-warnings.d.ts +34 -0
- package/dist/report/components/site-components/scope-warnings.js +8 -0
- package/dist/report/components/site-components/scope-warnings.js.map +1 -0
- package/dist/report/components/site-components/snapshot-diagnostics.cjs +43 -0
- package/dist/report/components/site-components/snapshot-diagnostics.cjs.map +1 -0
- package/dist/report/components/site-components/snapshot-diagnostics.d.cts +15 -0
- package/dist/report/components/site-components/snapshot-diagnostics.d.mts +15 -0
- package/dist/report/components/site-components/snapshot-diagnostics.d.ts +15 -0
- package/dist/report/components/site-components/snapshot-diagnostics.js +8 -0
- package/dist/report/components/site-components/snapshot-diagnostics.js.map +1 -0
- package/dist/report/components/site-components/validators.cjs +140 -0
- package/dist/report/components/site-components/validators.cjs.map +1 -0
- package/dist/report/components/site-components/validators.d.cts +9 -0
- package/dist/report/components/site-components/validators.d.mts +9 -0
- package/dist/report/components/site-components/validators.d.ts +9 -0
- package/dist/report/components/site-components/validators.js +16 -0
- package/dist/report/components/site-components/validators.js.map +1 -0
- package/dist/report/components/summaries/compute.cjs +224 -0
- package/dist/report/components/summaries/compute.cjs.map +1 -0
- package/dist/report/components/summaries/compute.d.cts +78 -0
- package/dist/report/components/summaries/compute.d.mts +78 -0
- package/dist/report/components/summaries/compute.d.ts +78 -0
- package/dist/report/components/summaries/compute.js +10 -0
- package/dist/report/components/summaries/compute.js.map +1 -0
- package/dist/report/components/summaries/index.cjs +68 -0
- package/dist/report/components/summaries/index.cjs.map +1 -0
- package/dist/report/components/summaries/index.d.cts +42 -0
- package/dist/report/components/summaries/index.d.mts +42 -0
- package/dist/report/components/summaries/index.d.ts +42 -0
- package/dist/report/components/summaries/index.js +12 -0
- package/dist/report/components/summaries/index.js.map +1 -0
- package/dist/report/components/summaries/stability-overview.cjs +27 -0
- package/dist/report/components/summaries/stability-overview.cjs.map +1 -0
- package/dist/report/components/summaries/stability-overview.d.cts +19 -0
- package/dist/report/components/summaries/stability-overview.d.mts +19 -0
- package/dist/report/components/summaries/stability-overview.d.ts +19 -0
- package/dist/report/components/summaries/stability-overview.js +6 -0
- package/dist/report/components/summaries/stability-overview.js.map +1 -0
- package/dist/report/definition/cell.cjs +90 -0
- package/dist/report/definition/cell.cjs.map +1 -0
- package/dist/report/definition/cell.d.cts +99 -0
- package/dist/report/definition/cell.d.mts +99 -0
- package/dist/report/definition/cell.d.ts +99 -0
- package/dist/report/definition/cell.js +8 -0
- package/dist/report/definition/cell.js.map +1 -0
- package/dist/report/definition/grid-layout.cjs +151 -0
- package/dist/report/definition/grid-layout.cjs.map +1 -0
- package/dist/report/definition/grid-layout.d.cts +77 -0
- package/dist/report/definition/grid-layout.d.mts +77 -0
- package/dist/report/definition/grid-layout.d.ts +77 -0
- package/dist/report/definition/grid-layout.js +20 -0
- package/dist/report/definition/grid-layout.js.map +1 -0
- package/dist/report/definition/primitives/callouts-logic.cjs +113 -0
- package/dist/report/definition/primitives/callouts-logic.cjs.map +1 -0
- package/dist/report/definition/primitives/callouts-logic.d.cts +26 -0
- package/dist/report/definition/primitives/callouts-logic.d.mts +26 -0
- package/dist/report/definition/primitives/callouts-logic.d.ts +26 -0
- package/dist/report/definition/primitives/callouts-logic.js +20 -0
- package/dist/report/definition/primitives/callouts-logic.js.map +1 -0
- package/dist/report/definition/primitives/callouts.cjs +105 -0
- package/dist/report/definition/primitives/callouts.cjs.map +1 -0
- package/dist/report/definition/primitives/callouts.d.cts +9 -0
- package/dist/report/definition/primitives/callouts.d.mts +9 -0
- package/dist/report/definition/primitives/callouts.d.ts +9 -0
- package/dist/report/definition/primitives/callouts.js +6 -0
- package/dist/report/definition/primitives/callouts.js.map +1 -0
- package/dist/report/definition/primitives/chart-map.cjs +138 -0
- package/dist/report/definition/primitives/chart-map.cjs.map +1 -0
- package/dist/report/definition/primitives/chart-map.d.cts +77 -0
- package/dist/report/definition/primitives/chart-map.d.mts +77 -0
- package/dist/report/definition/primitives/chart-map.d.ts +77 -0
- package/dist/report/definition/primitives/chart-map.js +12 -0
- package/dist/report/definition/primitives/chart-map.js.map +1 -0
- package/dist/report/definition/primitives/chart.cjs +651 -0
- package/dist/report/definition/primitives/chart.cjs.map +1 -0
- package/dist/report/definition/primitives/chart.d.cts +43 -0
- package/dist/report/definition/primitives/chart.d.mts +43 -0
- package/dist/report/definition/primitives/chart.d.ts +43 -0
- package/dist/report/definition/primitives/chart.js +8 -0
- package/dist/report/definition/primitives/chart.js.map +1 -0
- package/dist/report/definition/primitives/conversation.cjs +255 -0
- package/dist/report/definition/primitives/conversation.cjs.map +1 -0
- package/dist/report/definition/primitives/conversation.d.cts +71 -0
- package/dist/report/definition/primitives/conversation.d.mts +71 -0
- package/dist/report/definition/primitives/conversation.d.ts +71 -0
- package/dist/report/definition/primitives/conversation.js +16 -0
- package/dist/report/definition/primitives/conversation.js.map +1 -0
- package/dist/report/definition/primitives/copy-block.cjs +55 -0
- package/dist/report/definition/primitives/copy-block.cjs.map +1 -0
- package/dist/report/definition/primitives/copy-block.d.cts +19 -0
- package/dist/report/definition/primitives/copy-block.d.mts +19 -0
- package/dist/report/definition/primitives/copy-block.d.ts +19 -0
- package/dist/report/definition/primitives/copy-block.js +6 -0
- package/dist/report/definition/primitives/copy-block.js.map +1 -0
- package/dist/report/definition/primitives/diff-lines.cjs +163 -0
- package/dist/report/definition/primitives/diff-lines.cjs.map +1 -0
- package/dist/report/definition/primitives/diff-lines.d.cts +68 -0
- package/dist/report/definition/primitives/diff-lines.d.mts +68 -0
- package/dist/report/definition/primitives/diff-lines.d.ts +68 -0
- package/dist/report/definition/primitives/diff-lines.js +28 -0
- package/dist/report/definition/primitives/diff-lines.js.map +1 -0
- package/dist/report/definition/primitives/diff-view.cjs +155 -0
- package/dist/report/definition/primitives/diff-view.cjs.map +1 -0
- package/dist/report/definition/primitives/diff-view.d.cts +14 -0
- package/dist/report/definition/primitives/diff-view.d.mts +14 -0
- package/dist/report/definition/primitives/diff-view.d.ts +14 -0
- package/dist/report/definition/primitives/diff-view.js +8 -0
- package/dist/report/definition/primitives/diff-view.js.map +1 -0
- package/dist/report/definition/primitives/downloads.cjs +89 -0
- package/dist/report/definition/primitives/downloads.cjs.map +1 -0
- package/dist/report/definition/primitives/downloads.d.cts +28 -0
- package/dist/report/definition/primitives/downloads.d.mts +28 -0
- package/dist/report/definition/primitives/downloads.d.ts +28 -0
- package/dist/report/definition/primitives/downloads.js +8 -0
- package/dist/report/definition/primitives/downloads.js.map +1 -0
- package/dist/report/definition/primitives/markdown.cjs +290 -0
- package/dist/report/definition/primitives/markdown.cjs.map +1 -0
- package/dist/report/definition/primitives/markdown.d.cts +29 -0
- package/dist/report/definition/primitives/markdown.d.mts +29 -0
- package/dist/report/definition/primitives/markdown.d.ts +29 -0
- package/dist/report/definition/primitives/markdown.js +16 -0
- package/dist/report/definition/primitives/markdown.js.map +1 -0
- package/dist/report/definition/primitives/marks.cjs +96 -0
- package/dist/report/definition/primitives/marks.cjs.map +1 -0
- package/dist/report/definition/primitives/marks.d.cts +125 -0
- package/dist/report/definition/primitives/marks.d.mts +125 -0
- package/dist/report/definition/primitives/marks.d.ts +125 -0
- package/dist/report/definition/primitives/marks.js +14 -0
- package/dist/report/definition/primitives/marks.js.map +1 -0
- package/dist/report/definition/primitives/points-dataset.cjs +147 -0
- package/dist/report/definition/primitives/points-dataset.cjs.map +1 -0
- package/dist/report/definition/primitives/points-dataset.d.cts +17 -0
- package/dist/report/definition/primitives/points-dataset.d.mts +17 -0
- package/dist/report/definition/primitives/points-dataset.d.ts +17 -0
- package/dist/report/definition/primitives/points-dataset.js +6 -0
- package/dist/report/definition/primitives/points-dataset.js.map +1 -0
- package/dist/report/definition/primitives/shared.cjs +131 -0
- package/dist/report/definition/primitives/shared.cjs.map +1 -0
- package/dist/report/definition/primitives/shared.d.cts +67 -0
- package/dist/report/definition/primitives/shared.d.mts +67 -0
- package/dist/report/definition/primitives/shared.d.ts +67 -0
- package/dist/report/definition/primitives/shared.js +34 -0
- package/dist/report/definition/primitives/shared.js.map +1 -0
- package/dist/report/definition/primitives/source-view.cjs +204 -0
- package/dist/report/definition/primitives/source-view.cjs.map +1 -0
- package/dist/report/definition/primitives/source-view.d.cts +47 -0
- package/dist/report/definition/primitives/source-view.d.mts +47 -0
- package/dist/report/definition/primitives/source-view.d.ts +47 -0
- package/dist/report/definition/primitives/source-view.js +8 -0
- package/dist/report/definition/primitives/source-view.js.map +1 -0
- package/dist/report/definition/primitives/text-panel-state.cjs +38 -0
- package/dist/report/definition/primitives/text-panel-state.cjs.map +1 -0
- package/dist/report/definition/primitives/text-panel-state.d.cts +9 -0
- package/dist/report/definition/primitives/text-panel-state.d.mts +9 -0
- package/dist/report/definition/primitives/text-panel-state.d.ts +9 -0
- package/dist/report/definition/primitives/text-panel-state.js +12 -0
- package/dist/report/definition/primitives/text-panel-state.js.map +1 -0
- package/dist/report/definition/primitives/tool-evidence.cjs +95 -0
- package/dist/report/definition/primitives/tool-evidence.cjs.map +1 -0
- package/dist/report/definition/primitives/tool-evidence.d.cts +11 -0
- package/dist/report/definition/primitives/tool-evidence.d.mts +11 -0
- package/dist/report/definition/primitives/tool-evidence.d.ts +11 -0
- package/dist/report/definition/primitives/tool-evidence.js +6 -0
- package/dist/report/definition/primitives/tool-evidence.js.map +1 -0
- package/dist/report/definition/primitives/turn-trace.cjs +205 -0
- package/dist/report/definition/primitives/turn-trace.cjs.map +1 -0
- package/dist/report/definition/primitives/turn-trace.d.cts +8 -0
- package/dist/report/definition/primitives/turn-trace.d.mts +8 -0
- package/dist/report/definition/primitives/turn-trace.d.ts +8 -0
- package/dist/report/definition/primitives/turn-trace.js +6 -0
- package/dist/report/definition/primitives/turn-trace.js.map +1 -0
- package/dist/report/definition/primitives/waterfall.cjs +206 -0
- package/dist/report/definition/primitives/waterfall.cjs.map +1 -0
- package/dist/report/definition/primitives/waterfall.d.cts +34 -0
- package/dist/report/definition/primitives/waterfall.d.mts +34 -0
- package/dist/report/definition/primitives/waterfall.d.ts +34 -0
- package/dist/report/definition/primitives/waterfall.js +8 -0
- package/dist/report/definition/primitives/waterfall.js.map +1 -0
- package/dist/report/definition/primitives.cjs +826 -0
- package/dist/report/definition/primitives.cjs.map +1 -0
- package/dist/report/definition/primitives.d.cts +194 -0
- package/dist/report/definition/primitives.d.mts +194 -0
- package/dist/report/definition/primitives.d.ts +194 -0
- package/dist/report/definition/primitives.js +84 -0
- package/dist/report/definition/primitives.js.map +1 -0
- package/dist/report/definition/report.cjs +778 -0
- package/dist/report/definition/report.cjs.map +1 -0
- package/dist/report/definition/report.d.cts +203 -0
- package/dist/report/definition/report.d.mts +203 -0
- package/dist/report/definition/report.d.ts +203 -0
- package/dist/report/definition/report.js +16 -0
- package/dist/report/definition/report.js.map +1 -0
- package/dist/report/definition/table-text.cjs +184 -0
- package/dist/report/definition/table-text.cjs.map +1 -0
- package/dist/report/definition/table-text.d.cts +14 -0
- package/dist/report/definition/table-text.d.mts +14 -0
- package/dist/report/definition/table-text.d.ts +14 -0
- package/dist/report/definition/table-text.js +6 -0
- package/dist/report/definition/table-text.js.map +1 -0
- package/dist/report/definition/tree.cjs +685 -0
- package/dist/report/definition/tree.cjs.map +1 -0
- package/dist/report/definition/tree.d.cts +165 -0
- package/dist/report/definition/tree.d.mts +165 -0
- package/dist/report/definition/tree.d.ts +165 -0
- package/dist/report/definition/tree.js +44 -0
- package/dist/report/definition/tree.js.map +1 -0
- package/dist/report/execution/machine.cjs +587 -0
- package/dist/report/execution/machine.cjs.map +1 -0
- package/dist/report/execution/machine.d.cts +291 -0
- package/dist/report/execution/machine.d.mts +291 -0
- package/dist/report/execution/machine.d.ts +291 -0
- package/dist/report/execution/machine.js +36 -0
- package/dist/report/execution/machine.js.map +1 -0
- package/dist/report/execution/model.cjs +91 -463
- package/dist/report/execution/model.cjs.map +1 -1
- package/dist/report/execution/model.d.cts +57 -39
- package/dist/report/execution/model.d.mts +57 -39
- package/dist/report/execution/model.d.ts +57 -39
- package/dist/report/execution/model.js +36 -12
- package/dist/report/execution/paths.cjs +182 -0
- package/dist/report/execution/paths.cjs.map +1 -0
- package/dist/report/execution/paths.d.cts +27 -0
- package/dist/report/execution/paths.d.mts +27 -0
- package/dist/report/execution/paths.d.ts +27 -0
- package/dist/report/execution/paths.js +20 -0
- package/dist/report/execution/paths.js.map +1 -0
- package/dist/report/extension/assets.cjs +143 -0
- package/dist/report/extension/assets.cjs.map +1 -0
- package/dist/report/extension/assets.d.cts +17 -0
- package/dist/report/extension/assets.d.mts +17 -0
- package/dist/report/extension/assets.d.ts +17 -0
- package/dist/report/extension/assets.js +10 -0
- package/dist/report/extension/assets.js.map +1 -0
- package/dist/report/extension/define.cjs +119 -0
- package/dist/report/extension/define.cjs.map +1 -0
- package/dist/report/extension/define.d.cts +11 -0
- package/dist/report/extension/define.d.mts +11 -0
- package/dist/report/extension/define.d.ts +11 -0
- package/dist/report/extension/define.js +6 -0
- package/dist/report/extension/define.js.map +1 -0
- package/dist/report/extension/index.cjs +10 -0
- package/dist/report/extension/index.cjs.map +1 -0
- package/dist/report/extension/index.d.cts +6 -0
- package/dist/report/extension/index.d.mts +6 -0
- package/dist/report/extension/index.d.ts +6 -0
- package/dist/report/extension/index.js +10 -0
- package/dist/report/extension/index.js.map +1 -0
- package/dist/report/extension/index.mjs +10 -0
- package/dist/report/extension/index.mjs.map +1 -0
- package/dist/report/extension/meta.cjs +59 -0
- package/dist/report/extension/meta.cjs.map +1 -0
- package/dist/report/extension/meta.d.cts +13 -0
- package/dist/report/extension/meta.d.mts +13 -0
- package/dist/report/extension/meta.d.ts +13 -0
- package/dist/report/extension/meta.js +12 -0
- package/dist/report/extension/meta.js.map +1 -0
- package/dist/report/extension/types.cjs +3 -0
- package/dist/report/extension/types.cjs.map +1 -0
- package/dist/report/extension/types.d.cts +44 -0
- package/dist/report/extension/types.d.mts +44 -0
- package/dist/report/extension/types.d.ts +44 -0
- package/dist/report/extension/types.js +4 -0
- package/dist/report/extension/types.js.map +1 -0
- package/dist/report/host/execute.cjs +467 -1238
- package/dist/report/host/execute.cjs.map +1 -1
- package/dist/report/host/execute.d.cts +71 -19
- package/dist/report/host/execute.d.mts +71 -19
- package/dist/report/host/execute.d.ts +71 -19
- package/dist/report/host/execute.js +10 -2
- package/dist/report/host/from-record.cjs +446 -27
- package/dist/report/host/from-record.cjs.map +1 -1
- package/dist/report/host/from-record.d.cts +67 -30
- package/dist/report/host/from-record.d.mts +67 -30
- package/dist/report/host/from-record.d.ts +67 -30
- package/dist/report/host/from-record.js +8 -4
- package/dist/report/host/index.cjs +31 -18
- package/dist/report/host/index.cjs.map +1 -1
- package/dist/report/host/index.d.cts +20 -11
- package/dist/report/host/index.d.mts +20 -11
- package/dist/report/host/index.d.ts +20 -11
- package/dist/report/host/index.js +2 -20
- package/dist/report/host/index.mjs +6 -0
- package/dist/report/host/index.mjs.map +1 -0
- package/dist/report/host/machine.cjs +102 -0
- package/dist/report/host/machine.cjs.map +1 -0
- package/dist/report/host/machine.d.cts +7 -0
- package/dist/report/host/machine.d.mts +7 -0
- package/dist/report/host/machine.d.ts +7 -0
- package/dist/report/host/machine.js +6 -0
- package/dist/report/host/machine.js.map +1 -0
- package/dist/report/host/node/loader.cjs +40 -19
- package/dist/report/host/node/loader.cjs.map +1 -1
- package/dist/report/host/node/loader.d.cts +8 -7
- package/dist/report/host/node/loader.d.mts +8 -7
- package/dist/report/host/node/loader.d.ts +8 -7
- package/dist/report/host/node.cjs +1 -1
- package/dist/report/host/node.cjs.map +1 -1
- package/dist/report/host/node.d.cts +3 -3
- package/dist/report/host/node.d.mts +3 -3
- package/dist/report/host/node.d.ts +3 -3
- package/dist/report/host/progress.cjs +41 -0
- package/dist/report/host/progress.cjs.map +1 -0
- package/dist/report/host/progress.d.cts +22 -0
- package/dist/report/host/progress.d.mts +22 -0
- package/dist/report/host/progress.d.ts +22 -0
- package/dist/report/host/progress.js +8 -0
- package/dist/report/host/progress.js.map +1 -0
- package/dist/report/host/show-target.cjs +214 -0
- package/dist/report/host/show-target.cjs.map +1 -0
- package/dist/report/host/show-target.d.cts +107 -0
- package/dist/report/host/show-target.d.mts +107 -0
- package/dist/report/host/show-target.d.ts +107 -0
- package/dist/report/host/show-target.js +8 -0
- package/dist/report/host/show-target.js.map +1 -0
- package/dist/report/host/site-assets.cjs +11 -0
- package/dist/report/host/site-assets.cjs.map +1 -0
- package/dist/report/host/site-assets.d.cts +7 -0
- package/dist/report/host/site-assets.d.mts +7 -0
- package/dist/report/host/site-assets.d.ts +7 -0
- package/dist/report/host/site-assets.js +8 -0
- package/dist/report/host/site-assets.js.map +1 -0
- package/dist/report/host/site-runtime.cjs +91 -0
- package/dist/report/host/site-runtime.cjs.map +1 -0
- package/dist/report/host/site-runtime.d.cts +9 -0
- package/dist/report/host/site-runtime.d.mts +9 -0
- package/dist/report/host/site-runtime.d.ts +9 -0
- package/dist/report/host/site-runtime.js +10 -0
- package/dist/report/host/site-runtime.js.map +1 -0
- package/dist/report/host/static.cjs +694 -99
- package/dist/report/host/static.cjs.map +1 -1
- package/dist/report/host/static.d.cts +36 -19
- package/dist/report/host/static.d.mts +36 -19
- package/dist/report/host/static.d.ts +36 -19
- package/dist/report/host/static.js +14 -4
- package/dist/report/host/target-route.cjs +58 -0
- package/dist/report/host/target-route.cjs.map +1 -0
- package/dist/report/host/target-route.d.cts +15 -0
- package/dist/report/host/target-route.d.mts +15 -0
- package/dist/report/host/target-route.d.ts +15 -0
- package/dist/report/host/target-route.js +8 -0
- package/dist/report/host/target-route.js.map +1 -0
- package/dist/report/host/view-session.cjs +68 -51
- package/dist/report/host/view-session.cjs.map +1 -1
- package/dist/report/host/view-session.d.cts +38 -44
- package/dist/report/host/view-session.d.mts +38 -44
- package/dist/report/host/view-session.d.ts +38 -44
- package/dist/report/index.cjs +111 -52
- package/dist/report/index.cjs.map +1 -1
- package/dist/report/index.d.cts +39 -11
- package/dist/report/index.d.mts +39 -11
- package/dist/report/index.d.ts +39 -11
- package/dist/report/index.js +188 -116
- package/dist/report/index.mjs +188 -116
- package/dist/report/library/details.cjs +166 -0
- package/dist/report/library/details.cjs.map +1 -0
- package/dist/report/library/details.d.cts +29 -0
- package/dist/report/library/details.d.mts +29 -0
- package/dist/report/library/details.d.ts +29 -0
- package/dist/report/library/details.js +18 -0
- package/dist/report/library/details.js.map +1 -0
- package/dist/report/model/aggregate.cjs +243 -0
- package/dist/report/model/aggregate.cjs.map +1 -0
- package/dist/report/model/aggregate.d.cts +88 -0
- package/dist/report/model/aggregate.d.mts +88 -0
- package/dist/report/model/aggregate.d.ts +88 -0
- package/dist/report/model/aggregate.js +26 -0
- package/dist/report/model/aggregate.js.map +1 -0
- package/dist/report/model/chart/math.cjs +206 -0
- package/dist/report/model/chart/math.cjs.map +1 -0
- package/dist/report/model/chart/math.d.cts +73 -0
- package/dist/report/model/chart/math.d.mts +73 -0
- package/dist/report/model/chart/math.d.ts +73 -0
- package/dist/report/model/chart/math.js +14 -0
- package/dist/report/model/chart/math.js.map +1 -0
- package/dist/report/model/chart/plot.cjs +94 -0
- package/dist/report/model/chart/plot.cjs.map +1 -0
- package/dist/report/model/chart/plot.d.cts +52 -0
- package/dist/report/model/chart/plot.d.mts +52 -0
- package/dist/report/model/chart/plot.d.ts +52 -0
- package/dist/report/model/chart/plot.js +8 -0
- package/dist/report/model/chart/plot.js.map +1 -0
- package/dist/report/model/conversions.cjs +100 -0
- package/dist/report/model/conversions.cjs.map +1 -0
- package/dist/report/model/conversions.d.cts +40 -0
- package/dist/report/model/conversions.d.mts +40 -0
- package/dist/report/model/conversions.d.ts +40 -0
- package/dist/report/model/conversions.js +24 -0
- package/dist/report/model/conversions.js.map +1 -0
- package/dist/report/model/dataset.cjs +255 -0
- package/dist/report/model/dataset.cjs.map +1 -0
- package/dist/report/model/dataset.d.cts +33 -0
- package/dist/report/model/dataset.d.mts +33 -0
- package/dist/report/model/dataset.d.ts +33 -0
- package/dist/report/model/dataset.js +22 -0
- package/dist/report/model/dataset.js.map +1 -0
- package/dist/report/model/format.cjs +377 -0
- package/dist/report/model/format.cjs.map +1 -0
- package/dist/report/model/format.d.cts +98 -0
- package/dist/report/model/format.d.mts +98 -0
- package/dist/report/model/format.d.ts +98 -0
- package/dist/report/model/format.js +38 -0
- package/dist/report/model/format.js.map +1 -0
- package/dist/report/model/locale.cjs +437 -0
- package/dist/report/model/locale.cjs.map +1 -0
- package/dist/report/model/locale.d.cts +220 -0
- package/dist/report/model/locale.d.mts +220 -0
- package/dist/report/model/locale.d.ts +220 -0
- package/dist/report/model/locale.js +20 -0
- package/dist/report/model/locale.js.map +1 -0
- package/dist/report/model/metrics.cjs +254 -0
- package/dist/report/model/metrics.cjs.map +1 -0
- package/dist/report/model/metrics.d.cts +73 -0
- package/dist/report/model/metrics.d.mts +73 -0
- package/dist/report/model/metrics.d.ts +73 -0
- package/dist/report/model/metrics.js +26 -0
- package/dist/report/model/metrics.js.map +1 -0
- package/dist/report/model/pricing.cjs +126 -0
- package/dist/report/model/pricing.cjs.map +1 -0
- package/dist/report/model/pricing.d.cts +37 -0
- package/dist/report/model/pricing.d.mts +37 -0
- package/dist/report/model/pricing.d.ts +37 -0
- package/dist/report/model/pricing.js +16 -0
- package/dist/report/model/pricing.js.map +1 -0
- package/dist/report/model/text-layout.cjs +8 -0
- package/dist/report/model/text-layout.cjs.map +1 -1
- package/dist/report/model/text-layout.d.cts +7 -0
- package/dist/report/model/text-layout.d.mts +7 -0
- package/dist/report/model/text-layout.d.ts +7 -0
- package/dist/report/model/text-layout.js +30 -18
- package/dist/report/model/types.cjs +3 -0
- package/dist/report/model/types.cjs.map +1 -0
- package/dist/report/model/types.d.cts +64 -0
- package/dist/report/model/types.d.mts +64 -0
- package/dist/report/model/types.d.ts +64 -0
- package/dist/report/model/types.js +4 -0
- package/dist/report/model/types.js.map +1 -0
- package/dist/report/presentation.cjs +219 -0
- package/dist/report/presentation.cjs.map +1 -0
- package/dist/report/presentation.d.cts +114 -0
- package/dist/report/presentation.d.mts +114 -0
- package/dist/report/presentation.d.ts +114 -0
- package/dist/report/presentation.js +18 -0
- package/dist/report/react/enhance.js +466 -0
- package/dist/report/react/index.cjs +40 -0
- package/dist/report/react/index.cjs.map +1 -0
- package/dist/report/react/index.d.cts +9 -0
- package/dist/report/react/index.d.mts +9 -0
- package/dist/report/react/index.d.ts +9 -0
- package/dist/report/react/index.js +64 -0
- package/dist/report/react/index.js.map +1 -0
- package/dist/report/react/index.mjs +64 -0
- package/dist/report/react/index.mjs.map +1 -0
- package/dist/report/react/styles.css +2678 -0
- package/dist/report/runtime/resolved-page.cjs +327 -0
- package/dist/report/runtime/resolved-page.cjs.map +1 -0
- package/dist/report/runtime/resolved-page.d.cts +136 -0
- package/dist/report/runtime/resolved-page.d.mts +136 -0
- package/dist/report/runtime/resolved-page.d.ts +136 -0
- package/dist/report/runtime/resolved-page.js +14 -0
- package/dist/report/runtime/resolved-page.js.map +1 -0
- package/dist/report/runtime/text.cjs +33 -0
- package/dist/report/runtime/text.cjs.map +1 -0
- package/dist/report/runtime/text.d.cts +28 -0
- package/dist/report/runtime/text.d.mts +28 -0
- package/dist/report/runtime/text.d.ts +28 -0
- package/dist/report/runtime/text.js +8 -0
- package/dist/report/runtime/text.js.map +1 -0
- package/dist/report/runtime/web.cjs +31 -0
- package/dist/report/runtime/web.cjs.map +1 -0
- package/dist/report/runtime/web.d.cts +21 -0
- package/dist/report/runtime/web.d.mts +21 -0
- package/dist/report/runtime/web.d.ts +21 -0
- package/dist/report/runtime/web.js +8 -0
- package/dist/report/runtime/web.js.map +1 -0
- package/dist/report/theme.cjs +141 -0
- package/dist/report/theme.cjs.map +1 -0
- package/dist/report/theme.d.cts +57 -0
- package/dist/report/theme.d.mts +57 -0
- package/dist/report/theme.d.ts +57 -0
- package/dist/report/theme.js +20 -0
- package/dist/runner/accept.cjs +74 -87
- package/dist/runner/accept.cjs.map +1 -1
- package/dist/runner/accept.d.cts +14 -17
- package/dist/runner/accept.d.mts +14 -17
- package/dist/runner/accept.d.ts +14 -17
- package/dist/runner/accept.js +4 -8
- package/dist/runner/adoption.cjs +346 -408
- package/dist/runner/adoption.cjs.map +1 -1
- package/dist/runner/adoption.d.cts +132 -116
- package/dist/runner/adoption.d.mts +132 -116
- package/dist/runner/adoption.d.ts +132 -116
- package/dist/runner/adoption.js +42 -46
- package/dist/runner/attempt.cjs +175 -74
- package/dist/runner/attempt.cjs.map +1 -1
- package/dist/runner/attempt.d.cts +1 -1
- package/dist/runner/attempt.d.mts +1 -1
- package/dist/runner/attempt.d.ts +1 -1
- package/dist/runner/cleanup-timeout.cjs +12 -6
- package/dist/runner/cleanup-timeout.cjs.map +1 -1
- package/dist/runner/cleanup-timeout.d.cts +5 -5
- package/dist/runner/cleanup-timeout.d.mts +5 -5
- package/dist/runner/cleanup-timeout.d.ts +5 -5
- package/dist/runner/execution-identity.cjs +25 -0
- package/dist/runner/execution-identity.cjs.map +1 -0
- package/dist/runner/execution-identity.d.cts +39 -0
- package/dist/runner/execution-identity.d.mts +39 -0
- package/dist/runner/execution-identity.d.ts +39 -0
- package/dist/runner/execution-identity.js +8 -0
- package/dist/runner/execution-identity.js.map +1 -0
- package/dist/runner/feedback/failure.cjs +0 -2
- package/dist/runner/feedback/failure.cjs.map +1 -1
- package/dist/runner/feedback/human.cjs +47 -20
- package/dist/runner/feedback/human.cjs.map +1 -1
- package/dist/runner/feedback/index.cjs.map +1 -1
- package/dist/runner/feedback/index.d.cts +1 -1
- package/dist/runner/feedback/index.d.mts +1 -1
- package/dist/runner/feedback/index.d.ts +1 -1
- package/dist/runner/feedback/json.cjs +29 -7
- package/dist/runner/feedback/json.cjs.map +1 -1
- package/dist/runner/feedback/json.d.cts +14 -1
- package/dist/runner/feedback/json.d.mts +14 -1
- package/dist/runner/feedback/json.d.ts +14 -1
- package/dist/runner/feedback/reducer.cjs +3 -1
- package/dist/runner/feedback/reducer.cjs.map +1 -1
- package/dist/runner/feedback/sink.cjs +1 -1
- package/dist/runner/feedback/sink.cjs.map +1 -1
- package/dist/runner/feedback/sink.d.cts +6 -6
- package/dist/runner/feedback/sink.d.mts +6 -6
- package/dist/runner/feedback/sink.d.ts +6 -6
- package/dist/runner/fingerprint.cjs +8 -2
- package/dist/runner/fingerprint.cjs.map +1 -1
- package/dist/runner/fingerprint.d.cts +9 -0
- package/dist/runner/fingerprint.d.mts +9 -0
- package/dist/runner/fingerprint.d.ts +9 -0
- package/dist/runner/fingerprint.js +4 -2
- package/dist/runner/gate-lease.cjs +24 -12
- package/dist/runner/gate-lease.cjs.map +1 -1
- package/dist/runner/ledger.cjs +27 -5
- package/dist/runner/ledger.cjs.map +1 -1
- package/dist/runner/lock.cjs +24 -11
- package/dist/runner/lock.cjs.map +1 -1
- package/dist/runner/project-current.cjs +63 -0
- package/dist/runner/project-current.cjs.map +1 -1
- package/dist/runner/project-current.d.cts +2 -0
- package/dist/runner/project-current.d.mts +2 -0
- package/dist/runner/project-current.d.ts +2 -0
- package/dist/runner/record.cjs +659 -667
- package/dist/runner/record.cjs.map +1 -1
- package/dist/runner/record.d.cts +54 -81
- package/dist/runner/record.d.mts +54 -81
- package/dist/runner/record.d.ts +54 -81
- package/dist/runner/rename-experiment.cjs +95 -54
- package/dist/runner/rename-experiment.cjs.map +1 -1
- package/dist/runner/rename-experiment.d.cts +19 -21
- package/dist/runner/rename-experiment.d.mts +19 -21
- package/dist/runner/rename-experiment.d.ts +19 -21
- package/dist/runner/rename-experiment.js +2 -4
- package/dist/runner/report.cjs +7 -2
- package/dist/runner/report.cjs.map +1 -1
- package/dist/runner/reporters/braintrust.cjs +4 -16
- package/dist/runner/reporters/braintrust.cjs.map +1 -1
- package/dist/runner/reporters/braintrust.d.cts +22 -5
- package/dist/runner/reporters/braintrust.d.mts +22 -5
- package/dist/runner/reporters/braintrust.d.ts +22 -5
- package/dist/runner/reuse-plan.cjs +256 -435
- package/dist/runner/reuse-plan.cjs.map +1 -1
- package/dist/runner/reuse-plan.d.cts +43 -63
- package/dist/runner/reuse-plan.d.mts +43 -63
- package/dist/runner/reuse-plan.d.ts +43 -63
- package/dist/runner/reuse-plan.js +6 -8
- package/dist/runner/reuse-readback.cjs +157 -170
- package/dist/runner/reuse-readback.cjs.map +1 -1
- package/dist/runner/reuse-readback.d.cts +46 -62
- package/dist/runner/reuse-readback.d.mts +46 -62
- package/dist/runner/reuse-readback.d.ts +46 -62
- package/dist/runner/reuse-readback.js +0 -2
- package/dist/runner/run.cjs +110 -135
- package/dist/runner/run.cjs.map +1 -1
- package/dist/runner/run.d.cts +1 -1
- package/dist/runner/run.d.mts +1 -1
- package/dist/runner/run.d.ts +1 -1
- package/dist/runner/sandbox-pool.cjs +55 -43
- package/dist/runner/sandbox-pool.cjs.map +1 -1
- package/dist/runner/sandbox-record-producer.cjs +21 -6
- package/dist/runner/sandbox-record-producer.cjs.map +1 -1
- package/dist/runner/sandbox-record-producer.d.cts +6 -4
- package/dist/runner/sandbox-record-producer.d.mts +6 -4
- package/dist/runner/sandbox-record-producer.d.ts +6 -4
- package/dist/runner/sandbox-record-producer.js +4 -0
- package/dist/runner/source-producer.cjs +208 -268
- package/dist/runner/source-producer.cjs.map +1 -1
- package/dist/runner/source-producer.d.cts +32 -17
- package/dist/runner/source-producer.d.mts +32 -17
- package/dist/runner/source-producer.d.ts +32 -17
- package/dist/runner/source-producer.js +6 -4
- package/dist/runner/timing.cjs +13 -9
- package/dist/runner/timing.cjs.map +1 -1
- package/dist/runner/types.cjs +3 -2
- package/dist/runner/types.cjs.map +1 -1
- package/dist/runner/types.d.cts +34 -52
- package/dist/runner/types.d.mts +34 -52
- package/dist/runner/types.d.ts +34 -52
- package/dist/runner/types.js +30 -28
- package/dist/sample/analysis.cjs +925 -919
- package/dist/sample/analysis.cjs.map +1 -1
- package/dist/sample/analysis.d.cts +32 -144
- package/dist/sample/analysis.d.mts +32 -144
- package/dist/sample/analysis.d.ts +32 -144
- package/dist/sample/analysis.js +14 -26
- package/dist/sample/capability.cjs +761 -0
- package/dist/sample/capability.cjs.map +1 -0
- package/dist/sample/capability.d.cts +189 -0
- package/dist/sample/capability.d.mts +189 -0
- package/dist/sample/capability.d.ts +189 -0
- package/dist/sample/capability.js +36 -0
- package/dist/sample/capability.js.map +1 -0
- package/dist/sample/index.cjs +9 -13
- package/dist/sample/index.cjs.map +1 -1
- package/dist/sample/index.d.cts +2 -2
- package/dist/sample/index.d.mts +2 -2
- package/dist/sample/index.d.ts +2 -2
- package/dist/sample/index.js +10 -24
- package/dist/sandbox/build-coordinator.cjs +146 -147
- package/dist/sandbox/build-coordinator.cjs.map +1 -1
- package/dist/sandbox/case-types.cjs.map +1 -1
- package/dist/sandbox/case-types.d.cts +6 -0
- package/dist/sandbox/case-types.d.mts +6 -0
- package/dist/sandbox/case-types.d.ts +6 -0
- package/dist/sandbox/commands.cjs.map +1 -1
- package/dist/sandbox/commands.d.cts +0 -2
- package/dist/sandbox/commands.d.mts +0 -2
- package/dist/sandbox/commands.d.ts +0 -2
- package/dist/sandbox/compose.cjs +212 -153
- package/dist/sandbox/compose.cjs.map +1 -1
- package/dist/sandbox/compose.d.cts +11 -2
- package/dist/sandbox/compose.d.mts +11 -2
- package/dist/sandbox/compose.d.ts +11 -2
- package/dist/sandbox/compose.js +32 -30
- package/dist/sandbox/docker.cjs +59 -38
- package/dist/sandbox/docker.cjs.map +1 -1
- package/dist/sandbox/docker.d.cts +2 -1
- package/dist/sandbox/docker.d.mts +2 -1
- package/dist/sandbox/docker.d.ts +2 -1
- package/dist/sandbox/e2b.cjs +30 -18
- package/dist/sandbox/e2b.cjs.map +1 -1
- package/dist/sandbox/index.cjs +2 -2
- package/dist/sandbox/index.cjs.map +1 -1
- package/dist/sandbox/index.d.cts +2 -2
- package/dist/sandbox/index.d.mts +2 -2
- package/dist/sandbox/index.d.ts +2 -2
- package/dist/sandbox/index.js +52 -52
- package/dist/sandbox/index.mjs +52 -52
- package/dist/sandbox/io-retry.cjs +18 -14
- package/dist/sandbox/io-retry.cjs.map +1 -1
- package/dist/sandbox/io-retry.d.cts +7 -4
- package/dist/sandbox/io-retry.d.mts +7 -4
- package/dist/sandbox/io-retry.d.ts +7 -4
- package/dist/sandbox/keep.cjs +79 -52
- package/dist/sandbox/keep.cjs.map +1 -1
- package/dist/sandbox/layer.cjs.map +1 -1
- package/dist/sandbox/layer.d.cts +3 -3
- package/dist/sandbox/layer.d.mts +3 -3
- package/dist/sandbox/layer.d.ts +3 -3
- package/dist/sandbox/paths.cjs +96 -12
- package/dist/sandbox/paths.cjs.map +1 -1
- package/dist/sandbox/paths.d.cts +16 -0
- package/dist/sandbox/paths.d.mts +16 -0
- package/dist/sandbox/paths.d.ts +16 -0
- package/dist/sandbox/paths.js +10 -8
- package/dist/sandbox/prepare-commands.cjs +0 -5
- package/dist/sandbox/prepare-commands.cjs.map +1 -1
- package/dist/sandbox/prepare-commands.d.cts +1 -1
- package/dist/sandbox/prepare-commands.d.mts +1 -1
- package/dist/sandbox/prepare-commands.d.ts +1 -1
- package/dist/sandbox/record/attachment.cjs +16 -53
- package/dist/sandbox/record/attachment.cjs.map +1 -1
- package/dist/sandbox/record/attachment.d.cts +11 -15
- package/dist/sandbox/record/attachment.d.mts +11 -15
- package/dist/sandbox/record/attachment.d.ts +11 -15
- package/dist/sandbox/record/attachment.js +2 -6
- package/dist/sandbox/record/codec.cjs +17 -17
- package/dist/sandbox/record/codec.cjs.map +1 -1
- package/dist/sandbox/record/codec.d.cts +12 -12
- package/dist/sandbox/record/codec.d.mts +12 -12
- package/dist/sandbox/record/codec.d.ts +12 -12
- package/dist/sandbox/record/codec.js +4 -4
- package/dist/sandbox/record/model.cjs +7 -7
- package/dist/sandbox/record/model.cjs.map +1 -1
- package/dist/sandbox/record/model.d.cts +13 -13
- package/dist/sandbox/record/model.d.mts +13 -13
- package/dist/sandbox/record/model.d.ts +13 -13
- package/dist/sandbox/record/model.js +6 -6
- package/dist/sandbox/record/projector.cjs +16 -25
- package/dist/sandbox/record/projector.cjs.map +1 -1
- package/dist/sandbox/record/projector.d.cts +4 -18
- package/dist/sandbox/record/projector.d.mts +4 -18
- package/dist/sandbox/record/projector.d.ts +4 -18
- package/dist/sandbox/record/projector.js +2 -2
- package/dist/sandbox/registry.cjs +19 -9
- package/dist/sandbox/registry.cjs.map +1 -1
- package/dist/sandbox/request-executor.cjs +63 -0
- package/dist/sandbox/request-executor.cjs.map +1 -0
- package/dist/sandbox/request-executor.d.cts +16 -0
- package/dist/sandbox/request-executor.d.mts +16 -0
- package/dist/sandbox/request-executor.d.ts +16 -0
- package/dist/sandbox/request-executor.js +8 -0
- package/dist/sandbox/request-executor.js.map +1 -0
- package/dist/sandbox/retry.cjs +42 -38
- package/dist/sandbox/retry.cjs.map +1 -1
- package/dist/sandbox/retry.d.cts +6 -6
- package/dist/sandbox/retry.d.mts +6 -6
- package/dist/sandbox/retry.d.ts +6 -6
- package/dist/sandbox/runtime.cjs +47 -56
- package/dist/sandbox/runtime.cjs.map +1 -1
- package/dist/sandbox/runtime.d.cts +1 -1
- package/dist/sandbox/runtime.d.mts +1 -1
- package/dist/sandbox/runtime.d.ts +1 -1
- package/dist/sandbox/transfer-errors.cjs +37 -5
- package/dist/sandbox/transfer-errors.cjs.map +1 -1
- package/dist/sandbox/transfer-errors.d.cts +14 -0
- package/dist/sandbox/transfer-errors.d.mts +14 -0
- package/dist/sandbox/transfer-errors.d.ts +14 -0
- package/dist/sandbox/transfer-errors.js +12 -8
- package/dist/sandbox/types.cjs.map +1 -1
- package/dist/sandbox/types.d.cts +0 -7
- package/dist/sandbox/types.d.mts +0 -7
- package/dist/sandbox/types.d.ts +0 -7
- package/dist/sandbox/vercel.cjs +10 -14
- package/dist/sandbox/vercel.cjs.map +1 -1
- package/dist/sources/attachment.cjs +103 -248
- package/dist/sources/attachment.cjs.map +1 -1
- package/dist/sources/attachment.d.cts +47 -319
- package/dist/sources/attachment.d.mts +47 -319
- package/dist/sources/attachment.d.ts +47 -319
- package/dist/sources/attachment.js +8 -18
- package/dist/sources/codec.cjs +56 -56
- package/dist/sources/codec.cjs.map +1 -1
- package/dist/sources/codec.d.cts +63 -63
- package/dist/sources/codec.d.mts +63 -63
- package/dist/sources/codec.d.ts +63 -63
- package/dist/sources/codec.js +44 -44
- package/dist/sources/index.cjs +0 -2
- package/dist/sources/index.cjs.map +1 -1
- package/dist/sources/index.d.cts +0 -2
- package/dist/sources/index.d.mts +0 -2
- package/dist/sources/index.d.ts +0 -2
- package/dist/sources/index.js +72 -86
- package/dist/sources/model.cjs +2 -2
- package/dist/sources/model.cjs.map +1 -1
- package/dist/sources/model.d.cts +41 -41
- package/dist/sources/model.d.mts +41 -41
- package/dist/sources/model.d.ts +41 -41
- package/dist/sources/model.js +2 -2
- package/dist/sources/projector.cjs +39 -268
- package/dist/sources/projector.cjs.map +1 -1
- package/dist/sources/projector.d.cts +40 -8
- package/dist/sources/projector.d.mts +40 -8
- package/dist/sources/projector.d.ts +40 -8
- package/dist/sources/projector.js +4 -6
- package/dist/types.js +30 -28
- package/dist/view/data.cjs.map +1 -1
- package/dist/view/data.d.cts +5 -4
- package/dist/view/data.d.mts +5 -4
- package/dist/view/data.d.ts +5 -4
- package/dist/view/index.cjs +3 -4
- package/dist/view/index.cjs.map +1 -1
- package/dist/view/index.d.cts +2 -2
- package/dist/view/index.d.mts +2 -2
- package/dist/view/index.d.ts +2 -2
- package/dist/view/index.js +2 -4
- package/dist/view/report-view-cache.cjs +200 -0
- package/dist/view/report-view-cache.cjs.map +1 -0
- package/dist/view/report-view-cache.d.cts +67 -0
- package/dist/view/report-view-cache.d.mts +67 -0
- package/dist/view/report-view-cache.d.ts +67 -0
- package/dist/view/report-view-cache.js +8 -0
- package/dist/view/report-view-cache.js.map +1 -0
- package/dist/view/server.cjs +99 -102
- package/dist/view/server.cjs.map +1 -1
- package/dist/view/server.d.cts +0 -6
- package/dist/view/server.d.mts +0 -6
- package/dist/view/server.d.ts +0 -6
- package/dist/view/shared/types.cjs.map +1 -1
- package/dist/view/site.cjs +19 -27
- package/dist/view/site.cjs.map +1 -1
- package/dist/view/site.d.cts +10 -12
- package/dist/view/site.d.mts +10 -12
- package/dist/view/site.d.ts +10 -12
- package/dist/view/site.js +2 -4
- package/docs-site/zh/examples/integrations/ai-sdk-v7.mdx +8 -8
- package/docs-site/zh/examples/integrations/claude-sdk.mdx +8 -8
- package/docs-site/zh/examples/integrations/codex-sdk.mdx +4 -4
- package/docs-site/zh/examples/integrations/langgraph.mdx +6 -6
- package/docs-site/zh/examples/integrations/pi-sdk.mdx +9 -9
- package/docs-site/zh/explanation/adapter.mdx +3 -1
- package/docs-site/zh/explanation/assert.mdx +6 -6
- package/docs-site/zh/explanation/drive.mdx +1 -1
- package/docs-site/zh/explanation/evals.mdx +6 -3
- package/docs-site/zh/explanation/hitl.mdx +4 -2
- package/docs-site/zh/explanation/judge.mdx +6 -6
- package/docs-site/zh/explanation/overview.mdx +28 -29
- package/docs-site/zh/explanation/record.mdx +26 -36
- package/docs-site/zh/explanation/runner.mdx +9 -10
- package/docs-site/zh/index.mdx +3 -3
- package/docs-site/zh/introduction.mdx +1 -1
- package/docs-site/zh/reference/cli.mdx +27 -30
- package/docs-site/zh/reference/define-agent.mdx +0 -8
- package/docs-site/zh/reference/define-config.mdx +6 -2
- package/docs-site/zh/reference/define-eval.mdx +7 -5
- package/docs-site/zh/reference/events.mdx +7 -4
- package/docs-site/zh/reference/report-components.mdx +92 -88
- package/docs-site/zh/reference/results-data.mdx +39 -49
- package/docs-site/zh/troubleshooting/debug-sandbox.mdx +1 -1
- package/docs-site/zh/troubleshooting/debugging.mdx +27 -28
- package/docs-site/zh/tutorials/agent-feedback-loop.mdx +6 -6
- package/docs-site/zh/tutorials/agent-onboarding.mdx +2 -2
- package/docs-site/zh/tutorials/authoring.mdx +6 -3
- package/docs-site/zh/tutorials/ci-integration.mdx +1 -1
- package/docs-site/zh/tutorials/connect-your-agent.mdx +4 -4
- package/docs-site/zh/tutorials/custom-reports.mdx +148 -76
- package/docs-site/zh/tutorials/deploy-report-site.mdx +16 -19
- package/docs-site/zh/tutorials/evaluation-kinds.mdx +3 -3
- package/docs-site/zh/tutorials/experiments.mdx +2 -2
- package/docs-site/zh/tutorials/fixtures.mdx +5 -5
- package/docs-site/zh/tutorials/handle-execution-failures.mdx +1 -1
- package/docs-site/zh/tutorials/install-custom-sandbox-agent.mdx +1 -1
- package/docs-site/zh/tutorials/publish-report.mdx +30 -30
- package/docs-site/zh/tutorials/quickstart.mdx +2 -2
- package/docs-site/zh/tutorials/reporters.mdx +5 -5
- package/docs-site/zh/tutorials/rerun-and-cache.mdx +5 -5
- package/docs-site/zh/tutorials/sandbox-agent.mdx +2 -2
- package/docs-site/zh/tutorials/sandbox-providers.mdx +3 -3
- package/docs-site/zh/tutorials/theming.mdx +47 -19
- package/docs-site/zh/tutorials/viewing-results.mdx +45 -82
- package/docs-site/zh/tutorials/write-experiment.mdx +16 -11
- package/docs-site/zh/tutorials/write-send.mdx +11 -3
- package/package.json +83 -11
- package/dist/assertions/record/diff-model.cjs +0 -120
- package/dist/assertions/record/diff-model.cjs.map +0 -1
- package/dist/assertions/record/diff-model.d.cts +0 -47
- package/dist/assertions/record/diff-model.d.mts +0 -47
- package/dist/assertions/record/diff-model.d.ts +0 -47
- package/dist/assertions/record/diff-model.js +0 -12
- package/dist/assertions/record/diff-model.js.map +0 -1
- package/dist/projection/attachment-result.cjs +0 -50
- package/dist/projection/attachment-result.cjs.map +0 -1
- package/dist/projection/attachment-result.d.cts +0 -38
- package/dist/projection/attachment-result.d.mts +0 -38
- package/dist/projection/attachment-result.d.ts +0 -38
- package/dist/projection/attachment-result.js +0 -6
- package/dist/projection/attachment-result.js.map +0 -1
- package/dist/projection/attempt-selection.cjs +0 -87
- package/dist/projection/attempt-selection.cjs.map +0 -1
- package/dist/projection/attempt-selection.d.cts +0 -40
- package/dist/projection/attempt-selection.d.mts +0 -40
- package/dist/projection/attempt-selection.d.ts +0 -40
- package/dist/projection/attempt-selection.js +0 -8
- package/dist/projection/attempt-selection.js.map +0 -1
- package/dist/projection/coverage.cjs +0 -106
- package/dist/projection/coverage.cjs.map +0 -1
- package/dist/projection/coverage.d.cts +0 -43
- package/dist/projection/coverage.d.mts +0 -43
- package/dist/projection/coverage.d.ts +0 -43
- package/dist/projection/coverage.js +0 -6
- package/dist/projection/coverage.js.map +0 -1
- package/dist/projection/index.cjs +0 -36
- package/dist/projection/index.cjs.map +0 -1
- package/dist/projection/index.d.cts +0 -25
- package/dist/projection/index.d.mts +0 -25
- package/dist/projection/index.d.ts +0 -25
- package/dist/projection/index.js +0 -46
- package/dist/projection/index.mjs +0 -46
- package/dist/projection/model.cjs +0 -3
- package/dist/projection/model.cjs.map +0 -1
- package/dist/projection/model.d.cts +0 -49
- package/dist/projection/model.d.mts +0 -49
- package/dist/projection/model.d.ts +0 -49
- package/dist/projection/model.js +0 -4
- package/dist/projection/model.js.map +0 -1
- package/dist/projection/projector.cjs +0 -111
- package/dist/projection/projector.cjs.map +0 -1
- package/dist/projection/projector.d.cts +0 -51
- package/dist/projection/projector.d.mts +0 -51
- package/dist/projection/projector.d.ts +0 -51
- package/dist/projection/projector.js +0 -16
- package/dist/projection/projector.js.map +0 -1
- package/dist/projection/runtime.cjs +0 -246
- package/dist/projection/runtime.cjs.map +0 -1
- package/dist/projection/runtime.d.cts +0 -14
- package/dist/projection/runtime.d.mts +0 -14
- package/dist/projection/runtime.d.ts +0 -14
- package/dist/projection/runtime.js +0 -6
- package/dist/record/migration/errors.cjs +0 -68
- package/dist/record/migration/errors.cjs.map +0 -1
- package/dist/record/migration/errors.d.cts +0 -73
- package/dist/record/migration/errors.d.mts +0 -73
- package/dist/record/migration/errors.d.ts +0 -73
- package/dist/record/migration/errors.js +0 -22
- package/dist/record/migration/errors.js.map +0 -1
- package/dist/record/migration/identity.cjs +0 -27
- package/dist/record/migration/identity.cjs.map +0 -1
- package/dist/record/migration/identity.d.cts +0 -5
- package/dist/record/migration/identity.d.mts +0 -5
- package/dist/record/migration/identity.d.ts +0 -5
- package/dist/record/migration/identity.js +0 -8
- package/dist/record/migration/internal.cjs +0 -3
- package/dist/record/migration/internal.cjs.map +0 -1
- package/dist/record/migration/internal.d.cts +0 -111
- package/dist/record/migration/internal.d.mts +0 -111
- package/dist/record/migration/internal.d.ts +0 -111
- package/dist/record/migration/internal.js +0 -4
- package/dist/record/migration/internal.js.map +0 -1
- package/dist/record/migration/orchestrate.cjs +0 -368
- package/dist/record/migration/orchestrate.cjs.map +0 -1
- package/dist/record/migration/orchestrate.d.cts +0 -113
- package/dist/record/migration/orchestrate.d.mts +0 -113
- package/dist/record/migration/orchestrate.d.ts +0 -113
- package/dist/record/migration/orchestrate.js +0 -16
- package/dist/record/migration/orchestrate.js.map +0 -1
- package/dist/record/migration/plan.cjs +0 -63
- package/dist/record/migration/plan.cjs.map +0 -1
- package/dist/record/migration/plan.d.cts +0 -32
- package/dist/record/migration/plan.d.mts +0 -32
- package/dist/record/migration/plan.d.ts +0 -32
- package/dist/record/migration/plan.js +0 -10
- package/dist/record/migration/plan.js.map +0 -1
- package/dist/record/migration/registry.cjs +0 -150
- package/dist/record/migration/registry.cjs.map +0 -1
- package/dist/record/migration/registry.d.cts +0 -61
- package/dist/record/migration/registry.d.mts +0 -61
- package/dist/record/migration/registry.d.ts +0 -61
- package/dist/record/migration/registry.js +0 -14
- package/dist/record/migration/registry.js.map +0 -1
- package/dist/record/migration/storage.cjs +0 -382
- package/dist/record/migration/storage.cjs.map +0 -1
- package/dist/record/migration/storage.d.cts +0 -18
- package/dist/record/migration/storage.d.mts +0 -18
- package/dist/record/migration/storage.d.ts +0 -18
- package/dist/record/migration/storage.js +0 -6
- package/dist/record/migration/storage.js.map +0 -1
- package/dist/record/migration/types.cjs.map +0 -1
- package/dist/record/migration/types.d.cts +0 -16
- package/dist/record/migration/types.d.mts +0 -16
- package/dist/record/migration/types.d.ts +0 -16
- package/dist/record/reader/internal.cjs +0 -17
- package/dist/record/reader/internal.cjs.map +0 -1
- package/dist/record/reader/internal.d.cts +0 -26
- package/dist/record/reader/internal.d.mts +0 -26
- package/dist/record/reader/internal.d.ts +0 -26
- package/dist/record/reader/internal.js +0 -8
- package/dist/record/reader/internal.js.map +0 -1
- package/dist/record/writer/runtime.cjs +0 -656
- package/dist/record/writer/runtime.cjs.map +0 -1
- package/dist/record/writer/runtime.d.cts +0 -7
- package/dist/record/writer/runtime.d.mts +0 -7
- package/dist/record/writer/runtime.d.ts +0 -7
- package/dist/record/writer/runtime.js +0 -6
- package/dist/report/author/identity.cjs +0 -268
- package/dist/report/author/identity.cjs.map +0 -1
- package/dist/report/author/identity.d.cts +0 -75
- package/dist/report/author/identity.d.mts +0 -75
- package/dist/report/author/identity.d.ts +0 -75
- package/dist/report/author/identity.js +0 -34
- package/dist/report/author/identity.js.map +0 -1
- package/dist/report/author/index.cjs +0 -19
- package/dist/report/author/index.cjs.map +0 -1
- package/dist/report/author/index.d.cts +0 -4
- package/dist/report/author/index.d.mts +0 -4
- package/dist/report/author/index.d.ts +0 -4
- package/dist/report/author/index.js +0 -30
- package/dist/report/author/internal.cjs +0 -98
- package/dist/report/author/internal.cjs.map +0 -1
- package/dist/report/author/internal.d.cts +0 -91
- package/dist/report/author/internal.d.mts +0 -91
- package/dist/report/author/internal.d.ts +0 -91
- package/dist/report/author/internal.js +0 -18
- package/dist/report/author/internal.js.map +0 -1
- package/dist/report/author/model.cjs +0 -467
- package/dist/report/author/model.cjs.map +0 -1
- package/dist/report/author/model.d.cts +0 -241
- package/dist/report/author/model.d.mts +0 -241
- package/dist/report/author/model.d.ts +0 -241
- package/dist/report/author/model.js +0 -32
- package/dist/report/author/model.js.map +0 -1
- package/dist/report/execution/index.cjs +0 -20
- package/dist/report/execution/index.cjs.map +0 -1
- package/dist/report/execution/index.d.cts +0 -3
- package/dist/report/execution/index.d.mts +0 -3
- package/dist/report/execution/index.d.ts +0 -3
- package/dist/report/execution/index.js +0 -30
- package/dist/report/execution/problems.cjs +0 -210
- package/dist/report/execution/problems.cjs.map +0 -1
- package/dist/report/execution/problems.d.cts +0 -54
- package/dist/report/execution/problems.d.mts +0 -54
- package/dist/report/execution/problems.d.ts +0 -54
- package/dist/report/execution/problems.js +0 -14
- package/dist/report/execution/problems.js.map +0 -1
- package/dist/report/execution/results.cjs +0 -26
- package/dist/report/execution/results.cjs.map +0 -1
- package/dist/report/execution/results.d.cts +0 -102
- package/dist/report/execution/results.d.mts +0 -102
- package/dist/report/execution/results.d.ts +0 -102
- package/dist/report/execution/results.js +0 -8
- package/dist/report/execution/results.js.map +0 -1
- package/dist/report/host/html.cjs +0 -424
- package/dist/report/host/html.cjs.map +0 -1
- package/dist/report/host/html.d.cts +0 -28
- package/dist/report/host/html.d.mts +0 -28
- package/dist/report/host/html.d.ts +0 -28
- package/dist/report/host/html.js +0 -6
- package/dist/report/host/html.js.map +0 -1
- package/dist/report/host/node/theme.cjs +0 -21
- package/dist/report/host/node/theme.cjs.map +0 -1
- package/dist/report/host/node/theme.d.cts +0 -1
- package/dist/report/host/node/theme.d.mts +0 -1
- package/dist/report/host/node/theme.d.ts +0 -1
- package/dist/report/host/node/theme.js +0 -14
- package/dist/report/host/presentation.cjs +0 -423
- package/dist/report/host/presentation.cjs.map +0 -1
- package/dist/report/host/presentation.d.cts +0 -42
- package/dist/report/host/presentation.d.mts +0 -42
- package/dist/report/host/presentation.d.ts +0 -42
- package/dist/report/host/presentation.js +0 -16
- package/dist/report/host/theme.cjs +0 -223
- package/dist/report/host/theme.cjs.map +0 -1
- package/dist/report/host/theme.d.cts +0 -64
- package/dist/report/host/theme.d.mts +0 -64
- package/dist/report/host/theme.d.ts +0 -64
- package/dist/report/host/theme.js +0 -14
- package/dist/report/host/theme.js.map +0 -1
- package/dist/report/semantic/document.cjs +0 -593
- package/dist/report/semantic/document.cjs.map +0 -1
- package/dist/report/semantic/document.d.cts +0 -162
- package/dist/report/semantic/document.d.mts +0 -162
- package/dist/report/semantic/document.d.ts +0 -162
- package/dist/report/semantic/document.js +0 -38
- package/dist/report/semantic/document.js.map +0 -1
- package/dist/report/semantic/index.cjs +0 -18
- package/dist/report/semantic/index.cjs.map +0 -1
- package/dist/report/semantic/index.d.cts +0 -1
- package/dist/report/semantic/index.d.mts +0 -1
- package/dist/report/semantic/index.d.ts +0 -1
- package/dist/report/semantic/index.js +0 -38
- package/dist/shared/facts.cjs +0 -24
- package/dist/shared/facts.cjs.map +0 -1
- package/dist/shared/facts.d.cts +0 -7
- package/dist/shared/facts.d.mts +0 -7
- package/dist/shared/facts.d.ts +0 -7
- package/dist/shared/facts.js +0 -6
- package/dist/shared/facts.js.map +0 -1
- package/dist/show/json.cjs +0 -8
- package/dist/show/json.cjs.map +0 -1
- package/dist/show/json.d.cts +0 -2
- package/dist/show/json.d.mts +0 -2
- package/dist/show/json.d.ts +0 -2
- package/dist/show/json.js +0 -8
- package/dist/show/json.js.map +0 -1
- package/dist/show/render.cjs +0 -7
- package/dist/show/render.cjs.map +0 -1
- package/dist/show/render.d.cts +0 -2
- package/dist/show/render.d.mts +0 -2
- package/dist/show/render.d.ts +0 -2
- package/dist/show/render.js +0 -6
- package/dist/show/render.js.map +0 -1
- package/dist/sources/assemble.cjs +0 -634
- package/dist/sources/assemble.cjs.map +0 -1
- package/dist/sources/assemble.d.cts +0 -6
- package/dist/sources/assemble.d.mts +0 -6
- package/dist/sources/assemble.d.ts +0 -6
- package/dist/sources/assemble.js +0 -6
- package/dist/sources/assemble.js.map +0 -1
- package/dist/sources/projection-model.cjs +0 -3
- package/dist/sources/projection-model.cjs.map +0 -1
- package/dist/sources/projection-model.d.cts +0 -327
- package/dist/sources/projection-model.d.mts +0 -327
- package/dist/sources/projection-model.d.ts +0 -327
- package/dist/sources/projection-model.js +0 -4
- package/dist/sources/projection-model.js.map +0 -1
- /package/dist/{projection → coordination/host}/index.js.map +0 -0
- /package/dist/{projection → coordination/host}/index.mjs.map +0 -0
- /package/dist/{projection → coordination/host}/runtime.js.map +0 -0
- /package/dist/{record/migration → coordination/host}/types.cjs +0 -0
- /package/dist/{record/migration → coordination/host}/types.js +0 -0
- /package/dist/{record/migration → coordination/host}/types.js.map +0 -0
- /package/dist/{record/migration → coordination}/identity.js.map +0 -0
- /package/dist/{report/author → coordination}/index.js.map +0 -0
- /package/dist/{report/execution → coordination/platform}/index.js.map +0 -0
- /package/dist/{report/semantic → experiment/host}/index.js.map +0 -0
- /package/dist/record/{writer → host}/runtime.js.map +0 -0
- /package/dist/report/{host/presentation.js.map → presentation.js.map} +0 -0
- /package/dist/report/{host/node/theme.js.map → theme.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate-lease.js","sourceRoot":"","sources":["gate-lease.ts"],"names":[],"mappings":"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","sourcesContent":["// 实验闸租约:把实验级 `maxConcurrency` 的 N 个名额做成跨 Invocation 共用的逐槽租约。\n// 与 ./lock.ts 的用例锁同一套文件纪律(O_EXCL 独占创建、心跳续租、过期判据、rename 接管、\n// 释放即删除),建在 ../shared/entry-file-store.ts 的原语之上,不复制第三份纪律。\n// 契约见 docs/feature/experiments/architecture.md「并发 Invocation:用例锁」末条与\n// docs/runner.md#调度有界并发。\nimport { mkdir, open, rm, type FileHandle } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { Effect, Fiber } from \"effect\";\nimport { claimEntryFileEffect, fsyncDirEffect, readAllEntryFilesEffect, readEntryFileEffect, slugHashEntryId, writeEntryFileEffect, } from \"../shared/entry-file-store.ts\";\nimport { CASE_LOCK_EXPIRY_MS, CASE_LOCK_HEARTBEAT_INTERVAL_MS, locksDirOf } from \"./lock.ts\";\n/** 逐槽租约文件的 JSON 形状。身份的权威在内容,文件名只须无碰撞、不承载解析。 */\nexport interface GateLeaseRecord {\n experimentId: string;\n /** 槽位序号,取值 0..N-1。 */\n slot: number;\n /** 本持有者 resolved 的名额上限 N。用于 min-N:生效名额取在场声明的最小值。 */\n declaredN: number;\n pid: number;\n host: string;\n startedAt: string; // ISO\n heartbeatAt: string; // ISO\n}\ntype GateSlotAcquired = {\n kind: \"acquired\";\n slot: number;\n takenOver: boolean;\n takenOverFrom?: GateLeaseRecord;\n record: GateLeaseRecord;\n};\ntype GateSlotAttempt = GateSlotAcquired | {\n kind: \"full\";\n holders: GateLeaseRecord[];\n};\nfunction recordOf(value: unknown): globalThis.Record<string, unknown> | undefined {\n return typeof value === \"object\" && value !== null && !Array.isArray(value)\n ? value as globalThis.Record<string, unknown>\n : undefined;\n}\nfunction isPositiveInteger(value: unknown): value is number {\n return typeof value === \"number\" && Number.isSafeInteger(value) && value > 0;\n}\nfunction isSlot(value: unknown): value is number {\n return typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0;\n}\nfunction isTimestamp(value: unknown): value is string {\n return typeof value === \"string\" && Number.isFinite(Date.parse(value));\n}\nfunction errnoCode(cause: unknown): string | undefined {\n return typeof cause === \"object\" && cause !== null && \"code\" in cause && typeof cause.code === \"string\"\n ? cause.code\n : undefined;\n}\nfunction nodeIo<A>(operation: (signal: AbortSignal) => Promise<A>): Effect.Effect<A, unknown> {\n return Effect.tryPromise({ try: operation, catch: (cause) => cause });\n}\nfunction withOpenFile<A>(path: string, flags: string, use: (handle: FileHandle) => Effect.Effect<A, unknown>): Effect.Effect<A, unknown> {\n return Effect.scoped(Effect.acquireRelease(nodeIo(() => open(path, flags)), (handle) => nodeIo(() => handle.close()).pipe(Effect.orDie)).pipe(Effect.flatMap(use)));\n}\n/** 验证租约的全部持久字段;按槽读取时还会核对身份,防止错位记录冒充当前持有者。 */\nfunction decodeGateLeaseRecord(value: unknown, expected: {\n experimentId?: string;\n slot?: number;\n} = {}): GateLeaseRecord | undefined {\n const record = recordOf(value);\n if (record === undefined ||\n typeof record.experimentId !== \"string\" ||\n !isSlot(record.slot) ||\n !isPositiveInteger(record.declaredN) ||\n !isPositiveInteger(record.pid) ||\n typeof record.host !== \"string\" ||\n !isTimestamp(record.startedAt) ||\n !isTimestamp(record.heartbeatAt) ||\n (expected.experimentId !== undefined && record.experimentId !== expected.experimentId) ||\n (expected.slot !== undefined && record.slot !== expected.slot)) {\n return undefined;\n }\n return {\n experimentId: record.experimentId,\n slot: record.slot,\n declaredN: record.declaredN,\n pid: record.pid,\n host: record.host,\n startedAt: record.startedAt,\n heartbeatAt: record.heartbeatAt,\n };\n}\n/** 持有者续租心跳的周期。与用例锁同参数。 */\nexport const GATE_LEASE_HEARTBEAT_INTERVAL_MS = CASE_LOCK_HEARTBEAT_INTERVAL_MS;\n/** `heartbeatAt` 落后当前时间超过这个阈值(三个心跳周期)即视为持有者已死。 */\nexport const GATE_LEASE_EXPIRY_MS = CASE_LOCK_EXPIRY_MS;\nexport function gateLeasesDirOf(niceevalRoot: string): string {\n return locksDirOf(niceevalRoot);\n}\nfunction gateLeaseEntryId(experimentId: string, slot: number): string {\n return slugHashEntryId(`gate-${experimentId}-${slot}`, [\"gate-lease\", experimentId, String(slot)]);\n}\n/** Effect 主 API:读取该实验当前在场的全部租约记录,无副作用。 */\nexport function readGateLeasesEffect(niceevalRoot: string, experimentId: string): Effect.Effect<GateLeaseRecord[], unknown> {\n return readAllEntryFilesEffect(gateLeasesDirOf(niceevalRoot), decodeGateLeaseRecord).pipe(Effect.map((entries) => entries\n .map(({ entry }) => entry)\n .filter((entry) => entry.experimentId === experimentId)\n .sort((a, b) => a.slot - b.slot)));\n}\n/** 过期判据:只看心跳时间戳,不看 pid。 */\nexport function isGateLeaseExpired(record: GateLeaseRecord, nowMs: number): boolean {\n const heartbeatMs = Date.parse(record.heartbeatAt);\n if (Number.isNaN(heartbeatMs))\n return true;\n return nowMs - heartbeatMs > GATE_LEASE_EXPIRY_MS;\n}\n/** 本进程声明的 N:非法值收敛到 1,避免永久满位。 */\nfunction normalizeN(n: number): number {\n const floored = Math.floor(n);\n return Number.isFinite(floored) && floored >= 1 ? floored : 1;\n}\n/** min-N:有效名额取自己声明和所有新鲜租约声明的最小值。 */\nfunction effectiveSlotCount(maxConcurrency: number, leases: readonly GateLeaseRecord[], nowMs: number): number {\n let n = normalizeN(maxConcurrency);\n for (const lease of leases) {\n if (isGateLeaseExpired(lease, nowMs))\n continue;\n const declared = normalizeN(lease.declaredN);\n if (declared < n)\n n = declared;\n }\n return n;\n}\n/** O_EXCL 独占创建租约文件;存在时返回 false,不覆盖。 */\nfunction createLeaseFileExclusiveEffect(dir: string, id: string, record: GateLeaseRecord): Effect.Effect<boolean, unknown> {\n const path = join(dir, `${id}.json`);\n return nodeIo(() => mkdir(dir, { recursive: true })).pipe(Effect.zipRight(withOpenFile(path, \"wx\", (handle) => nodeIo(() => handle.writeFile(JSON.stringify(record, null, 2), \"utf-8\")).pipe(Effect.zipRight(nodeIo(() => handle.sync()))))), Effect.zipRight(fsyncDirEffect(dir)), Effect.as(true), Effect.catchAll((cause) => errnoCode(cause) === \"EEXIST\" ? Effect.succeed(false) : Effect.fail(cause)));\n}\n/** 同一持有者判定:身份(pid/host)加上取位时刻——接管重建后 `startedAt` 必然不同。 */\nfunction isSameHolder(record: GateLeaseRecord, mine: GateLeaseRecord): boolean {\n return record.pid === mine.pid && record.host === mine.host && record.startedAt === mine.startedAt;\n}\n/** 一次非阻塞取位:空槽 O_EXCL 创建,满位时只接管过期或损坏槽。 */\nexport function tryAcquireGateSlotOnceEffect(niceevalRoot: string, experimentId: string, maxConcurrency: number, identity: {\n pid: number;\n host: string;\n}, nowMs: number): Effect.Effect<GateSlotAttempt, unknown> {\n const dir = gateLeasesDirOf(niceevalRoot);\n return Effect.gen(function* () {\n const effectiveN = effectiveSlotCount(maxConcurrency, yield* readGateLeasesEffect(niceevalRoot, experimentId), nowMs);\n const stamp = new Date(nowMs).toISOString();\n const recordFor = (slot: number): GateLeaseRecord => ({\n experimentId,\n slot,\n declaredN: normalizeN(maxConcurrency),\n pid: identity.pid,\n host: identity.host,\n startedAt: stamp,\n heartbeatAt: stamp,\n });\n const acquired = (slot: number, record: GateLeaseRecord, options: {\n takenOver: boolean;\n takenOverFrom?: GateLeaseRecord;\n }): GateSlotAcquired => ({ kind: \"acquired\", slot, record, ...options });\n // 第一趟不预读占用情况:O_EXCL 本身就是判据。\n for (let slot = 0; slot < effectiveN; slot += 1) {\n const record = recordFor(slot);\n if (yield* createLeaseFileExclusiveEffect(dir, gateLeaseEntryId(experimentId, slot), record)) {\n return acquired(slot, record, { takenOver: false });\n }\n }\n // 第二趟只对坏条目或过期条目执行 rename 认领;输掉竞态后继续下一槽。\n for (let slot = 0; slot < effectiveN; slot += 1) {\n const id = gateLeaseEntryId(experimentId, slot);\n const current = yield* readEntryFileEffect(dir, id, (value) => decodeGateLeaseRecord(value, { experimentId, slot }));\n if (current === undefined) {\n if (!(yield* claimEntryFileEffect(dir, id)))\n continue;\n const record = recordFor(slot);\n if (!(yield* createLeaseFileExclusiveEffect(dir, id, record)))\n continue;\n return acquired(slot, record, { takenOver: false });\n }\n if (!isGateLeaseExpired(current, nowMs))\n continue;\n if (!(yield* claimEntryFileEffect(dir, id)))\n continue;\n const record = recordFor(slot);\n if (!(yield* createLeaseFileExclusiveEffect(dir, id, record)))\n continue;\n return acquired(slot, record, { takenOver: true, takenOverFrom: current });\n }\n const holders = (yield* readGateLeasesEffect(niceevalRoot, experimentId)).filter((lease) => !isGateLeaseExpired(lease, nowMs));\n return { kind: \"full\", holders };\n });\n}\n/** 续租只改 heartbeat;槽被接管后不写、不删别人的租约。 */\nfunction renewHeartbeatEffect(dir: string, id: string, mine: GateLeaseRecord, nowMs: number, isReleased: () => boolean): Effect.Effect<void, unknown> {\n if (isReleased())\n return Effect.void;\n return readEntryFileEffect(dir, id, (value) => decodeGateLeaseRecord(value, { experimentId: mine.experimentId, slot: mine.slot })).pipe(Effect.flatMap((current) => {\n if (current === undefined || !isSameHolder(current, mine) || isReleased())\n return Effect.void;\n return writeEntryFileEffect(dir, id, { ...current, heartbeatAt: new Date(nowMs).toISOString() });\n }));\n}\nfunction makeAbortError(signal: AbortSignal | undefined): Error {\n const reason = signal?.reason;\n if (reason instanceof Error)\n return reason;\n const err = new Error(\"aborted while waiting for experiment gate slot\");\n err.name = \"AbortError\";\n return err;\n}\nfunction awaitAbort(signal: AbortSignal | undefined): Effect.Effect<never, Error> {\n return Effect.async((resume, effectSignal) => {\n if (signal === undefined)\n return;\n const cleanup = (): void => {\n signal.removeEventListener(\"abort\", onAbort);\n effectSignal.removeEventListener(\"abort\", cleanup);\n };\n const onAbort = (): void => {\n cleanup();\n resume(Effect.fail(makeAbortError(signal)));\n };\n if (signal.aborted) {\n onAbort();\n return;\n }\n signal.addEventListener(\"abort\", onAbort, { once: true });\n effectSignal.addEventListener(\"abort\", cleanup, { once: true });\n });\n}\nfunction delayOrAbortEffect(ms: number, signal: AbortSignal | undefined): Effect.Effect<void, Error> {\n if (signal?.aborted)\n return Effect.fail(makeAbortError(signal));\n return Effect.raceFirst(Effect.sleep(ms), awaitAbort(signal)).pipe(Effect.asVoid);\n}\nexport interface GateLeaseEffectClaim {\n readonly slot: number;\n readonly release: Effect.Effect<void, unknown>;\n}\nexport interface AcquireGateSlotEffectResult {\n claim: GateLeaseEffectClaim;\n takenOver: boolean;\n takenOverFrom?: GateLeaseRecord;\n}\nconst held = new Map<string, Effect.Effect<void, unknown>>();\nfunction heldKey(niceevalRoot: string, id: string): string {\n return `${niceevalRoot} ${id}`;\n}\n/** 高层 Effect 入口:等待可中断;心跳顺序化,release 等正在飞的不可中断续租结束再删除。 */\nexport function acquireGateSlotEffect(niceevalRoot: string, experimentId: string, maxConcurrency: number, identity: {\n pid: number;\n host: string;\n}, opts: {\n signal?: AbortSignal;\n pollIntervalMs?: number;\n heartbeatIntervalMs?: number;\n onWaitStart?: (holders: GateLeaseRecord[]) => void;\n} = {}): Effect.Effect<AcquireGateSlotEffectResult, unknown> {\n const heartbeatIntervalMs = opts.heartbeatIntervalMs ?? GATE_LEASE_HEARTBEAT_INTERVAL_MS;\n const pollIntervalMs = opts.pollIntervalMs ?? heartbeatIntervalMs;\n let waitStarted = false;\n const acquireLoop = (): Effect.Effect<{\n slot: number;\n takenOver: boolean;\n takenOverFrom?: GateLeaseRecord;\n record: GateLeaseRecord;\n }, unknown> => Effect.suspend(() => {\n if (opts.signal?.aborted)\n return Effect.fail(makeAbortError(opts.signal));\n return tryAcquireGateSlotOnceEffect(niceevalRoot, experimentId, maxConcurrency, identity, Date.now()).pipe(Effect.flatMap((result) => {\n if (result.kind === \"acquired\")\n return Effect.succeed(result);\n const reportWait = waitStarted\n ? Effect.void\n : Effect.sync(() => {\n waitStarted = true;\n opts.onWaitStart?.(result.holders);\n });\n return reportWait.pipe(Effect.zipRight(delayOrAbortEffect(pollIntervalMs, opts.signal)), Effect.zipRight(acquireLoop()));\n }));\n });\n return Effect.uninterruptibleMask((restore) => restore(acquireLoop()).pipe(Effect.flatMap(({ slot, takenOver, takenOverFrom, record }) => {\n const dir = gateLeasesDirOf(niceevalRoot);\n const id = gateLeaseEntryId(experimentId, slot);\n const key = heldKey(niceevalRoot, id);\n let released = false;\n const heartbeat = Effect.forever(Effect.sleep(heartbeatIntervalMs).pipe(Effect.zipRight(Effect.suspend(() => Effect.uninterruptible(renewHeartbeatEffect(dir, id, record, Date.now(), () => released)))\n .pipe(Effect.ignore))));\n // A child inherits the parent's interruptibility. This branch still\n // runs under the acquisition mask, so restore the heartbeat before\n // forking; otherwise release would wait forever while interrupting an\n // uninterruptible sleeping fiber.\n return Effect.forkDaemon(restore(heartbeat)).pipe(Effect.map((fiber) => {\n const release = Effect.uninterruptible(Effect.suspend(() => {\n if (released)\n return Effect.void;\n released = true;\n held.delete(key);\n return Fiber.interrupt(fiber).pipe(Effect.zipRight(readEntryFileEffect(dir, id, (value) => decodeGateLeaseRecord(value, { experimentId, slot }))), Effect.flatMap((current) => current !== undefined && !isSameHolder(current, record)\n ? Effect.void\n : nodeIo(() => rm(join(dir, `${id}.json`), { force: true })).pipe(Effect.zipRight(fsyncDirEffect(dir)))));\n }));\n held.set(key, release);\n return { claim: { slot, release }, takenOver, ...(takenOverFrom === undefined ? {} : { takenOverFrom }) };\n }));\n })));\n}\n/** 强清兜底:尽力释放当前进程持有的每一条租约。 */\nexport function drainHeldGateLeasesEffect(): Effect.Effect<number> {\n const releases = [...held.values()];\n return Effect.forEach(releases, (release) => Effect.exit(release), { discard: true }).pipe(Effect.as(releases.length));\n}\n/** 当前进程仍持有的实验闸租约数量,供退出清理与可观察状态汇总。 */\nexport function pendingHeldGateLeaseCount(): number {\n return held.size;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"gate-lease.js","sourceRoot":"","sources":["gate-lease.ts"],"names":[],"mappings":"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","sourcesContent":["// 实验闸租约:把实验级 `maxConcurrency` 的 N 个名额做成跨 Invocation 共用的逐槽租约。\n// 与 ./lock.ts 的用例锁同一套文件纪律(O_EXCL 独占创建、心跳续租、过期判据、rename 接管、\n// 释放即删除),建在 ../shared/entry-file-store.ts 的原语之上,不复制第三份纪律。\n// 契约见 docs/feature/experiments/architecture.md「并发 Invocation:用例锁」末条与\n// docs/runner.md#调度有界并发。\nimport { mkdir, open, rm, type FileHandle } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { Clock, Effect, Fiber } from \"effect\";\nimport { claimEntryFileEffect, fsyncDirEffect, readAllEntryFilesEffect, readEntryFileEffect, slugHashEntryId, writeEntryFileEffect, } from \"../shared/entry-file-store.ts\";\nimport { CASE_LOCK_EXPIRY_MS, CASE_LOCK_HEARTBEAT_INTERVAL_MS, locksDirOf } from \"./lock.ts\";\n/** 逐槽租约文件的 JSON 形状。身份的权威在内容,文件名只须无碰撞、不承载解析。 */\nexport interface GateLeaseRecord {\n experimentId: string;\n /** 槽位序号,取值 0..N-1。 */\n slot: number;\n /** 本持有者 resolved 的名额上限 N。用于 min-N:生效名额取在场声明的最小值。 */\n declaredN: number;\n pid: number;\n host: string;\n startedAt: string; // ISO\n heartbeatAt: string; // ISO\n}\ntype GateSlotAcquired = {\n kind: \"acquired\";\n slot: number;\n takenOver: boolean;\n takenOverFrom?: GateLeaseRecord;\n record: GateLeaseRecord;\n};\ntype GateSlotAttempt = GateSlotAcquired | {\n kind: \"full\";\n holders: GateLeaseRecord[];\n};\nfunction recordOf(value: unknown): globalThis.Record<string, unknown> | undefined {\n return typeof value === \"object\" && value !== null && !Array.isArray(value)\n ? value as globalThis.Record<string, unknown>\n : undefined;\n}\nfunction isPositiveInteger(value: unknown): value is number {\n return typeof value === \"number\" && Number.isSafeInteger(value) && value > 0;\n}\nfunction isSlot(value: unknown): value is number {\n return typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0;\n}\nfunction isTimestamp(value: unknown): value is string {\n return typeof value === \"string\" && Number.isFinite(Date.parse(value));\n}\nfunction errnoCode(cause: unknown): string | undefined {\n return typeof cause === \"object\" && cause !== null && \"code\" in cause && typeof cause.code === \"string\"\n ? cause.code\n : undefined;\n}\nfunction nodeIo<A>(operation: (signal: AbortSignal) => Promise<A>): Effect.Effect<A, unknown> {\n return Effect.tryPromise({ try: operation, catch: (cause) => cause });\n}\nfunction withOpenFile<A>(path: string, flags: string, use: (handle: FileHandle) => Effect.Effect<A, unknown>): Effect.Effect<A, unknown> {\n return Effect.scoped(Effect.acquireRelease(nodeIo(() => open(path, flags)), (handle) => nodeIo(() => handle.close()).pipe(Effect.orDie)).pipe(Effect.flatMap(use)));\n}\n/** 验证租约的全部持久字段;按槽读取时还会核对身份,防止错位记录冒充当前持有者。 */\nfunction decodeGateLeaseRecord(value: unknown, expected: {\n experimentId?: string;\n slot?: number;\n} = {}): GateLeaseRecord | undefined {\n const record = recordOf(value);\n if (record === undefined ||\n typeof record.experimentId !== \"string\" ||\n !isSlot(record.slot) ||\n !isPositiveInteger(record.declaredN) ||\n !isPositiveInteger(record.pid) ||\n typeof record.host !== \"string\" ||\n !isTimestamp(record.startedAt) ||\n !isTimestamp(record.heartbeatAt) ||\n (expected.experimentId !== undefined && record.experimentId !== expected.experimentId) ||\n (expected.slot !== undefined && record.slot !== expected.slot)) {\n return undefined;\n }\n return {\n experimentId: record.experimentId,\n slot: record.slot,\n declaredN: record.declaredN,\n pid: record.pid,\n host: record.host,\n startedAt: record.startedAt,\n heartbeatAt: record.heartbeatAt,\n };\n}\n/** 持有者续租心跳的周期。与用例锁同参数。 */\nexport const GATE_LEASE_HEARTBEAT_INTERVAL_MS = CASE_LOCK_HEARTBEAT_INTERVAL_MS;\n/** `heartbeatAt` 落后当前时间超过这个阈值(三个心跳周期)即视为持有者已死。 */\nexport const GATE_LEASE_EXPIRY_MS = CASE_LOCK_EXPIRY_MS;\nexport function gateLeasesDirOf(niceevalRoot: string): string {\n return locksDirOf(niceevalRoot);\n}\nfunction gateLeaseEntryId(experimentId: string, slot: number): string {\n return slugHashEntryId(`gate-${experimentId}-${slot}`, [\"gate-lease\", experimentId, String(slot)]);\n}\n/** Effect 主 API:读取该实验当前在场的全部租约记录,无副作用。 */\nexport function readGateLeasesEffect(niceevalRoot: string, experimentId: string): Effect.Effect<GateLeaseRecord[], unknown> {\n return readAllEntryFilesEffect(gateLeasesDirOf(niceevalRoot), decodeGateLeaseRecord).pipe(Effect.map((entries) => entries\n .map(({ entry }) => entry)\n .filter((entry) => entry.experimentId === experimentId)\n .sort((a, b) => a.slot - b.slot)));\n}\n/** 过期判据:只看心跳时间戳,不看 pid。 */\nexport function isGateLeaseExpired(record: GateLeaseRecord, nowMs: number): boolean {\n const heartbeatMs = Date.parse(record.heartbeatAt);\n if (Number.isNaN(heartbeatMs))\n return true;\n return nowMs - heartbeatMs > GATE_LEASE_EXPIRY_MS;\n}\n/** 本进程声明的 N:非法值收敛到 1,避免永久满位。 */\nfunction normalizeN(n: number): number {\n const floored = Math.floor(n);\n return Number.isFinite(floored) && floored >= 1 ? floored : 1;\n}\n/** min-N:有效名额取自己声明和所有新鲜租约声明的最小值。 */\nfunction effectiveSlotCount(maxConcurrency: number, leases: readonly GateLeaseRecord[], nowMs: number): number {\n let n = normalizeN(maxConcurrency);\n for (const lease of leases) {\n if (isGateLeaseExpired(lease, nowMs))\n continue;\n const declared = normalizeN(lease.declaredN);\n if (declared < n)\n n = declared;\n }\n return n;\n}\n/** O_EXCL 独占创建租约文件;存在时返回 false,不覆盖。 */\nfunction createLeaseFileExclusiveEffect(dir: string, id: string, record: GateLeaseRecord): Effect.Effect<boolean, unknown> {\n const path = join(dir, `${id}.json`);\n return nodeIo(() => mkdir(dir, { recursive: true })).pipe(Effect.zipRight(withOpenFile(path, \"wx\", (handle) => nodeIo(() => handle.writeFile(JSON.stringify(record, null, 2), \"utf-8\")).pipe(Effect.zipRight(nodeIo(() => handle.sync()))))), Effect.zipRight(fsyncDirEffect(dir)), Effect.as(true), Effect.catchAll((cause) => errnoCode(cause) === \"EEXIST\" ? Effect.succeed(false) : Effect.fail(cause)));\n}\n/** 同一持有者判定:身份(pid/host)加上取位时刻——接管重建后 `startedAt` 必然不同。 */\nfunction isSameHolder(record: GateLeaseRecord, mine: GateLeaseRecord): boolean {\n return record.pid === mine.pid && record.host === mine.host && record.startedAt === mine.startedAt;\n}\n/** 一次非阻塞取位:空槽 O_EXCL 创建,满位时只接管过期或损坏槽。 */\nexport function tryAcquireGateSlotOnceEffect(niceevalRoot: string, experimentId: string, maxConcurrency: number, identity: {\n pid: number;\n host: string;\n}, nowMs: number): Effect.Effect<GateSlotAttempt, unknown> {\n const dir = gateLeasesDirOf(niceevalRoot);\n return Effect.gen(function* () {\n const effectiveN = effectiveSlotCount(maxConcurrency, yield* readGateLeasesEffect(niceevalRoot, experimentId), nowMs);\n const stamp = new Date(nowMs).toISOString();\n const recordFor = (slot: number): GateLeaseRecord => ({\n experimentId,\n slot,\n declaredN: normalizeN(maxConcurrency),\n pid: identity.pid,\n host: identity.host,\n startedAt: stamp,\n heartbeatAt: stamp,\n });\n const acquired = (slot: number, record: GateLeaseRecord, options: {\n takenOver: boolean;\n takenOverFrom?: GateLeaseRecord;\n }): GateSlotAcquired => ({ kind: \"acquired\", slot, record, ...options });\n // 第一趟不预读占用情况:O_EXCL 本身就是判据。\n for (let slot = 0; slot < effectiveN; slot += 1) {\n const record = recordFor(slot);\n if (yield* createLeaseFileExclusiveEffect(dir, gateLeaseEntryId(experimentId, slot), record)) {\n return acquired(slot, record, { takenOver: false });\n }\n }\n // 第二趟只对坏条目或过期条目执行 rename 认领;输掉竞态后继续下一槽。\n for (let slot = 0; slot < effectiveN; slot += 1) {\n const id = gateLeaseEntryId(experimentId, slot);\n const current = yield* readEntryFileEffect(dir, id, (value) => decodeGateLeaseRecord(value, { experimentId, slot }));\n if (current === undefined) {\n if (!(yield* claimEntryFileEffect(dir, id)))\n continue;\n const record = recordFor(slot);\n if (!(yield* createLeaseFileExclusiveEffect(dir, id, record)))\n continue;\n return acquired(slot, record, { takenOver: false });\n }\n if (!isGateLeaseExpired(current, nowMs))\n continue;\n if (!(yield* claimEntryFileEffect(dir, id)))\n continue;\n const record = recordFor(slot);\n if (!(yield* createLeaseFileExclusiveEffect(dir, id, record)))\n continue;\n return acquired(slot, record, { takenOver: true, takenOverFrom: current });\n }\n const holders = (yield* readGateLeasesEffect(niceevalRoot, experimentId)).filter((lease) => !isGateLeaseExpired(lease, nowMs));\n return { kind: \"full\", holders };\n });\n}\n/** 续租只改 heartbeat;槽被接管后不写、不删别人的租约。 */\nfunction renewHeartbeatEffect(dir: string, id: string, mine: GateLeaseRecord, nowMs: number, isReleased: () => boolean): Effect.Effect<void, unknown> {\n if (isReleased())\n return Effect.void;\n return readEntryFileEffect(dir, id, (value) => decodeGateLeaseRecord(value, { experimentId: mine.experimentId, slot: mine.slot })).pipe(Effect.flatMap((current) => {\n if (current === undefined || !isSameHolder(current, mine) || isReleased())\n return Effect.void;\n return writeEntryFileEffect(dir, id, { ...current, heartbeatAt: new Date(nowMs).toISOString() });\n }));\n}\nfunction makeAbortError(signal: AbortSignal | undefined): Error {\n const reason = signal?.reason;\n if (reason instanceof Error)\n return reason;\n const err = new Error(\"aborted while waiting for experiment gate slot\");\n err.name = \"AbortError\";\n return err;\n}\nfunction awaitAbort(signal: AbortSignal | undefined): Effect.Effect<never, Error> {\n if (signal === undefined)\n return Effect.never;\n return Effect.async((resume, effectSignal) => {\n let completed = false;\n const cleanup = (): void => {\n signal.removeEventListener(\"abort\", onAbort);\n effectSignal.removeEventListener(\"abort\", onEffectAbort);\n };\n const cancel = (): void => {\n if (completed)\n return;\n completed = true;\n cleanup();\n };\n const onAbort = (): void => {\n if (completed)\n return;\n cancel();\n resume(Effect.fail(makeAbortError(signal)));\n };\n const onEffectAbort = (): void => cancel();\n signal.addEventListener(\"abort\", onAbort, { once: true });\n effectSignal.addEventListener(\"abort\", onEffectAbort, { once: true });\n // Both listeners must be live before inspecting either signal: otherwise\n // an abort between inspection and registration could strand the waiter.\n if (effectSignal.aborted)\n onEffectAbort();\n else if (signal.aborted)\n onAbort();\n return Effect.sync(cancel);\n });\n}\nfunction delayOrAbortEffect(ms: number, signal: AbortSignal | undefined): Effect.Effect<void, Error> {\n if (signal?.aborted)\n return Effect.fail(makeAbortError(signal));\n return Effect.raceFirst(Effect.sleep(ms), awaitAbort(signal)).pipe(Effect.asVoid);\n}\nexport interface GateLeaseEffectClaim {\n readonly slot: number;\n readonly release: Effect.Effect<void, unknown>;\n}\nexport interface AcquireGateSlotEffectResult {\n claim: GateLeaseEffectClaim;\n takenOver: boolean;\n takenOverFrom?: GateLeaseRecord;\n}\nconst held = new Map<string, Effect.Effect<void, unknown>>();\nfunction heldKey(niceevalRoot: string, id: string): string {\n return `${niceevalRoot} ${id}`;\n}\n/** 高层 Effect 入口:等待可中断;心跳顺序化,release 等正在飞的不可中断续租结束再删除。 */\nexport function acquireGateSlotEffect(niceevalRoot: string, experimentId: string, maxConcurrency: number, identity: {\n pid: number;\n host: string;\n}, opts: {\n signal?: AbortSignal;\n pollIntervalMs?: number;\n heartbeatIntervalMs?: number;\n onWaitStart?: (holders: GateLeaseRecord[]) => void;\n} = {}): Effect.Effect<AcquireGateSlotEffectResult, unknown> {\n const heartbeatIntervalMs = opts.heartbeatIntervalMs ?? GATE_LEASE_HEARTBEAT_INTERVAL_MS;\n const pollIntervalMs = opts.pollIntervalMs ?? heartbeatIntervalMs;\n let waitStarted = false;\n const acquireLoop = (): Effect.Effect<{\n slot: number;\n takenOver: boolean;\n takenOverFrom?: GateLeaseRecord;\n record: GateLeaseRecord;\n }, unknown> => Effect.suspend(() => {\n if (opts.signal?.aborted)\n return Effect.fail(makeAbortError(opts.signal));\n return Clock.currentTimeMillis.pipe(Effect.flatMap((nowMs) => tryAcquireGateSlotOnceEffect(niceevalRoot, experimentId, maxConcurrency, identity, nowMs)), Effect.flatMap((result) => {\n if (result.kind === \"acquired\")\n return Effect.succeed(result);\n const reportWait = waitStarted\n ? Effect.void\n : Effect.sync(() => {\n waitStarted = true;\n opts.onWaitStart?.(result.holders);\n });\n return reportWait.pipe(Effect.zipRight(delayOrAbortEffect(pollIntervalMs, opts.signal)), Effect.zipRight(acquireLoop()));\n }));\n });\n return Effect.uninterruptibleMask((restore) => restore(acquireLoop()).pipe(Effect.flatMap(({ slot, takenOver, takenOverFrom, record }) => {\n const dir = gateLeasesDirOf(niceevalRoot);\n const id = gateLeaseEntryId(experimentId, slot);\n const key = heldKey(niceevalRoot, id);\n let released = false;\n const heartbeat = Effect.forever(Effect.sleep(heartbeatIntervalMs).pipe(Effect.zipRight(Effect.uninterruptible(Clock.currentTimeMillis.pipe(Effect.flatMap((nowMs) => renewHeartbeatEffect(dir, id, record, nowMs, () => released)))).pipe(Effect.ignore))));\n // A child inherits the parent's interruptibility. This branch still\n // runs under the acquisition mask, so restore the heartbeat before\n // forking; otherwise release would wait forever while interrupting an\n // uninterruptible sleeping fiber.\n return Effect.forkDaemon(restore(heartbeat)).pipe(Effect.map((fiber) => {\n const release = Effect.uninterruptible(Effect.suspend(() => {\n if (released)\n return Effect.void;\n released = true;\n held.delete(key);\n return Fiber.interrupt(fiber).pipe(Effect.zipRight(readEntryFileEffect(dir, id, (value) => decodeGateLeaseRecord(value, { experimentId, slot }))), Effect.flatMap((current) => current !== undefined && !isSameHolder(current, record)\n ? Effect.void\n : nodeIo(() => rm(join(dir, `${id}.json`), { force: true })).pipe(Effect.zipRight(fsyncDirEffect(dir)))));\n }));\n held.set(key, release);\n return { claim: { slot, release }, takenOver, ...(takenOverFrom === undefined ? {} : { takenOverFrom }) };\n }));\n })));\n}\n/** 强清兜底:尽力释放当前进程持有的每一条租约。 */\nexport function drainHeldGateLeasesEffect(): Effect.Effect<number> {\n const releases = [...held.values()];\n return Effect.forEach(releases, (release) => Effect.exit(release), { discard: true }).pipe(Effect.as(releases.length));\n}\n/** 当前进程仍持有的实验闸租约数量,供退出清理与可观察状态汇总。 */\nexport function pendingHeldGateLeaseCount(): number {\n return held.size;\n}\n"]}
|
package/dist/runner/ledger.cjs
CHANGED
|
@@ -33,6 +33,27 @@ const DEFAULT_EXCLUDES = [
|
|
|
33
33
|
".venv",
|
|
34
34
|
"__pycache__",
|
|
35
35
|
];
|
|
36
|
+
const MAX_POLICY_ENTRIES = 256;
|
|
37
|
+
const MAX_POLICY_ENTRY_UTF8_BYTES = 4096;
|
|
38
|
+
const policyEncoder = new TextEncoder();
|
|
39
|
+
function compareAscii(left, right) {
|
|
40
|
+
return left === right ? 0 : left < right ? -1 : 1;
|
|
41
|
+
}
|
|
42
|
+
/** Reject an unrecordable policy before the collector starts, then freeze its canonical evidence form. */
|
|
43
|
+
function canonicalPolicyEntries(entries, name) {
|
|
44
|
+
if (entries.length > MAX_POLICY_ENTRIES) {
|
|
45
|
+
throw new Error(`defineEval({ diff }).${name} may contain at most ${MAX_POLICY_ENTRIES} entries`);
|
|
46
|
+
}
|
|
47
|
+
for (const [index, entry] of entries.entries()) {
|
|
48
|
+
if (typeof entry !== "string") {
|
|
49
|
+
throw new TypeError(`defineEval({ diff }).${name}[${index}] must be a string`);
|
|
50
|
+
}
|
|
51
|
+
if (policyEncoder.encode(entry).byteLength > MAX_POLICY_ENTRY_UTF8_BYTES) {
|
|
52
|
+
throw new Error(`defineEval({ diff }).${name}[${index}] exceeds ${MAX_POLICY_ENTRY_UTF8_BYTES} UTF-8 bytes`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return Object.freeze([...new Set(entries)].sort(compareAscii));
|
|
56
|
+
}
|
|
36
57
|
/**
|
|
37
58
|
* 单个 send 窗口的证据安全上限。越界必须让 workspace.diff 失败,不能产出误导性的空窗口。
|
|
38
59
|
* 字节预算只数**真正要传输的文本** before/after:二进制与超过单文件阈值的文本不内联内容、
|
|
@@ -215,8 +236,9 @@ function gitignorePathspecs(pattern, exclude) {
|
|
|
215
236
|
}
|
|
216
237
|
/** 打分类账锚点(workspace.baseline 阶段,环境层钩子之后):git init + 冻结排除清单 + 首笔 commit。 */
|
|
217
238
|
async function createChangeLedger(sandbox, opts) {
|
|
218
|
-
const
|
|
219
|
-
const
|
|
239
|
+
const includes = canonicalPolicyEntries(opts?.include ?? [], "include");
|
|
240
|
+
const ignored = canonicalPolicyEntries(opts?.ignore ?? [], "ignore");
|
|
241
|
+
const excludes = [...DEFAULT_EXCLUDES, ...ignored];
|
|
220
242
|
// 多数 provider 用固定的宿主内私有路径(每实例全新隔离文件系统,天然不冲突);宿主本身即
|
|
221
243
|
// 工作树的 provider(如 local)按 sandboxId 登记专属路径,避免同机多次运行互相踩踏
|
|
222
244
|
// (见 sandbox/ledger-paths.ts —— 这里不认 provider 名,只问登记表)。
|
|
@@ -260,9 +282,9 @@ async function createChangeLedger(sandbox, opts) {
|
|
|
260
282
|
return {
|
|
261
283
|
rootExecutionIdentity: ordinaryUid === "0",
|
|
262
284
|
attribution: Object.freeze({
|
|
263
|
-
defaultPolicy: "niceeval-default-excludes",
|
|
264
|
-
include:
|
|
265
|
-
ignore:
|
|
285
|
+
defaultPolicy: "niceeval.sandbox-ledger/default-excludes/v1",
|
|
286
|
+
include: includes,
|
|
287
|
+
ignore: ignored,
|
|
266
288
|
}),
|
|
267
289
|
async commitEvalWindow(label) {
|
|
268
290
|
// 有未记录变化才落这一笔;干净时不产生空的 eval 归因 commit。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["ledger.ts"],"names":[],"mappings":"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","sourcesContent":["// 变更分类账(私有 git ledger):回答「**agent** 改了什么」,不是「workspace 相对空目录变了什么」。\n// 契约见 docs/feature/sandbox/architecture.md「变更归因:send 窗口与分类账」:\n// - ledger 的 git 目录在沙箱内、workdir 外(runner 私有路径),以 workdir 为 work-tree——\n// workdir 保持素净:agent 看不到 runner 的 .git,eval 需要真实 git repo 时自己 git init,\n// agent 在 workdir 里的任何 git 操作都碰不到分类账。\n// - 三类 commit 时点:锚点一笔(workspace.baseline);每次 t.send() 进入前 workdir 有未记录\n// 变化就落一笔 eval 归因;t.send() 返回后落一笔 agent 归因(send 窗口内的全部变化)。\n// - 归因排除清单 runner 私有、锚点时冻结:项目自己的 .gitignore 不参与归因判断(add -f 绕过),\n// 排除靠 pathspec,include 显式打洞加回。\n// - agent 归因增量 = 逐窗口 delta 序列(DiffWindow[]),不做跨窗口压缩。\nimport type { DiffArtifact, DiffWindow, Sandbox, WindowChange } from \"../types.ts\";\nimport type { AgentWorkspaceDiffPolicy } from \"../assertions/workspace-diff.ts\";\nimport { sandboxSupportsRootCommands } from \"../sandbox/backend.ts\";\nimport { DEFAULT_LEDGER_GIT_DIR, ledgerPathsFor } from \"../sandbox/ledger-paths.ts\";\n/**\n * ledger 的私有 git 目录:workdir 之外、runner 控制;agent 的工具默认不会去 /tmp 翻它。这是\n * 沙箱内 provider(docker/e2b/vercel)的默认值——每个实例都是全新隔离文件系统,固定路径不会\n * 跨实例踩踏。宿主本身即工作树的 provider(如 local)按 sandboxId 登记专属路径覆盖它\n * (见 sandbox/ledger-paths.ts),避免同机多次运行共享同一个 /tmp。\n */\nexport const LEDGER_GIT_DIR = DEFAULT_LEDGER_GIT_DIR;\n/** 整相导出文件的落点(与 ledger 同前缀,同样是 runner 私有路径;覆盖规则同上)。 */\nconst EXPORT_DIR = \"/tmp/.niceeval-ledger-export\";\n/** 默认归因排除清单(锚点时冻结):依赖、构建产物、包管理器缓存与用户项目里的 .niceeval 记录目录。\n * 框架自己不往 workdir 写任何东西(见 docs/observability.md「宿主侧行为断言:t.o11y」),\n * 所以这里没有框架路径要排。 */\nconst DEFAULT_EXCLUDES = [\n \".git\",\n \"node_modules\",\n \".next\",\n \"dist\",\n \"build\",\n \".turbo\",\n \".niceeval\",\n \"coverage\",\n \".cache\",\n \".pnpm-store\",\n \".npm\",\n \".yarn\",\n \"*venv*/\",\n \".venv\",\n \"__pycache__\",\n];\n/**\n * 单个 send 窗口的证据安全上限。越界必须让 workspace.diff 失败,不能产出误导性的空窗口。\n * 字节预算只数**真正要传输的文本** before/after:二进制与超过单文件阈值的文本不内联内容、\n * 只记字节数(WindowChange.elided),因此不占预算——编译产物型窗口(成百上千个 .o 加几个大\n * 文本)不该因为「按尺寸计」被判越界。\n */\nconst MAX_WINDOW_PATHS = 10000;\nconst MAX_WINDOW_TEXT_BYTES = 64 * 1024 * 1024;\n/** 单个文本 blob 的内联阈值:任一侧超过它,该条目按二进制同款处理(记字节数、内容省略)。 */\nconst MAX_FILE_TEXT_BYTES = 1024 * 1024;\n/**\n * 整相导出:一条 POSIX shell 命令枚举**全部** agent 窗口并把证据写进沙箱内导出文件,宿主随后\n * 经文件通道一次下载——provider 往返数与窗口数、文件数都无关。对沙箱环境的全部要求是 git 与\n * POSIX 工具(sh/awk/wc/sort/grep),不依赖 node、python 等运行时。\n *\n * 沙箱内不组装 JSON:导出文件直接拼接 git 原生输出——每窗口四段,`diff-tree -z`(状态 + 前后\n * blob sha + 路径,NUL 安全)、`numstat -z`(二进制识别)、`cat-file --batch-check`(全部 blob\n * 尺寸)、`cat-file --batch`(要内联的文本 blob 内容,输出自带长度帧)——解析与校验全部在宿主侧完成。\n * 需要在沙箱内做的两个判断都不解析路径列:sha 提取用 awk 取 diff-tree 原始输出的第 3/4 列\n * (路径在其后,含空格也不影响);二进制排除靠 numstat 与 diff-tree 输出的行号对齐。\n * 尺寸核算(--batch-check)先于内容读取(--batch),越界在产出任何内容前失败;预算只累计真正\n * 要传输的文本 blob(二进制与单文件超限文本只出字节数,不进 --batch 请求、不计预算)。\n * 宿主侧从 sizes + numstat 两段就能判出哪些条目内容被省略,沙箱不额外输出一份判定清单。\n */\nfunction buildExportScript(exportDir: string): string {\n return [\n \"set -eu\",\n // shellQuote:多数 provider 的 exportDir 是固定字面量(无空格);local 的 exportDir 来自\n // mkdtemp(可能落在含空格的自定义 TMPDIR 下),赋值行不加引号会被 shell 拆成多个词。\n `D=${shellQuote(exportDir)}`,\n 'rm -rf \"$D\" && mkdir -p \"$D\"',\n 'OUT=$D/export.bin',\n ': > \"$OUT\"',\n 'fail() { printf \"%s\\\\n\" \"$1\" >&2; exit 2; }',\n // 帧格式:`section <name> <bytes>` 头一行,后跟原始字节;长度前缀让内容里的任意字节都安全。\n 'emit() { printf \"section %s %s\\\\n\" \"$1\" \"$(($(wc -c < \"$2\")))\" >> \"$OUT\"; cat \"$2\" >> \"$OUT\"; }',\n 'git log --reverse --format=\"%H %s\" > \"$D/log.txt\"',\n \"while IFS= read -r line; do\",\n ' hash=${line%% *}',\n ' subject=${line#* }',\n ' case $subject in \"agent \"*) ;; *) continue ;; esac',\n ' label=${subject#agent }',\n // 非 -z 的 diff-tree 把特殊路径引号转义成单行,一行 = 一个条目:wc -l 即路径数,awk 列取 sha 不碰路径。\n ' git diff-tree -r --no-renames \"$hash^\" \"$hash\" > \"$D/dt.txt\"',\n ' n=$(($(wc -l < \"$D/dt.txt\")))',\n ` [ \"$n\" -le ${MAX_WINDOW_PATHS} ] || fail \"niceeval diff window contains $n paths; limit is ${MAX_WINDOW_PATHS}\"`,\n ' git diff-tree -r --no-renames --numstat \"$hash^\" \"$hash\" > \"$D/ns.txt\"',\n // 全部 blob 出现次数(before + after,零 sha = 无此侧,排除)→ 逐次尺寸核算。\n \" awk '$3 !~ /^0+$/ { print $3 } $4 !~ /^0+$/ { print $4 }' \\\"$D/dt.txt\\\" > \\\"$D/occ.txt\\\"\",\n ' git cat-file --batch-check < \"$D/occ.txt\" > \"$D/sizes.txt\"',\n ' if grep -q \" missing$\" \"$D/sizes.txt\"; then fail \"niceeval ledger export: blob object missing\"; fi',\n // 逐条目分类:numstat 第 1 列为 \"-\" 的行是二进制,按行号对齐标 B,其余标 T,后跟前后 blob sha。\n ' awk \\'NR==FNR { bin[FNR] = ($1 == \"-\"); next } { printf \"%s %s %s\\\\n\", (bin[FNR] ? \"B\" : \"T\"), $3, $4 }\\' \"$D/ns.txt\" \"$D/dt.txt\" > \"$D/entries.txt\"',\n // 要内联的文本 blob(去重):二进制条目与任一侧超过单文件阈值的文本条目都不请求内容,\n // 也不计入窗口预算——它们只出字节数(宿主据同一份 sizes 判成 elided)。\n ` awk -v LIMIT=${MAX_FILE_TEXT_BYTES} -v TOTAL=\"$D/total.txt\" 'NR==FNR { sz[$1] = $3; next } $1 == \"T\" { b = $2; a = $3; if (b !~ /^0+$/ && sz[b] > LIMIT) next; if (a !~ /^0+$/ && sz[a] > LIMIT) next; if (b !~ /^0+$/ && !(b in seen)) { seen[b] = 1; total += sz[b]; print b } if (a !~ /^0+$/ && !(a in seen)) { seen[a] = 1; total += sz[a]; print a } } END { print total+0 > TOTAL }' \"$D/sizes.txt\" \"$D/entries.txt\" > \"$D/text.txt\"`,\n ' bytes=$(cat \"$D/total.txt\")',\n ` [ \"$bytes\" -le ${MAX_WINDOW_TEXT_BYTES} ] || fail \"niceeval diff window transfers $bytes text blob bytes; limit is ${MAX_WINDOW_TEXT_BYTES}; narrow defineEval({ diff }) include/ignore rules\"`,\n ' git cat-file --batch < \"$D/text.txt\" > \"$D/blobs.bin\"',\n ' git diff-tree -r --no-renames -z \"$hash^\" \"$hash\" > \"$D/dtz.bin\"',\n ' git diff-tree -r --no-renames --numstat -z \"$hash^\" \"$hash\" > \"$D/nsz.bin\"',\n ' printf \"window %s %s\\\\n\" \"$hash\" \"$label\" >> \"$OUT\"',\n ' emit difftree \"$D/dtz.bin\"',\n ' emit numstat \"$D/nsz.bin\"',\n ' emit sizes \"$D/sizes.txt\"',\n ' emit blobs \"$D/blobs.bin\"',\n 'done < \"$D/log.txt\"',\n // root ledger commands may create the private export with a restrictive umask. The file is outside\n // workdir; making only this runner artifact readable lets the provider file channel fetch it.\n 'chmod 0644 \"$OUT\"',\n ].join(\"\\n\");\n}\nexport interface ChangeLedger {\n /** send 进入前:workdir 有未记录变化就落一笔 eval 归因(fixture / setup / runCommand 副作用)。 */\n commitEvalWindow(label: string): Promise<void>;\n /** send 返回后:落一笔 agent 归因——这个 send 窗口内的全部 workspace 变化(无变化也落空窗口)。 */\n commitAgentWindow(label: string): Promise<void>;\n /** workspace.diff 阶段:从分类账导出每个 send 窗口自己的 before/after,按时序。 */\n exportWindows(): Promise<DiffArtifact>;\n /** 回到创建时的题间锚点,并保留归因排除清单排除的动态环境。 */\n resetToAnchor(): Promise<void>;\n /**\n * 建账时探测到的执行身份是否为 root(仅当 provider 支持 root ledger 命令时才探测得到,\n * 否则恒为 false)。sandboxReuse 复用池据此在实例进池前拒绝(见 docs/feature/sandbox/reuse.md);\n * `resetToAnchor()` 内的同款判断作纵深防御保留。\n */\n readonly rootExecutionIdentity: boolean;\n /** Frozen semantic identity consumed by the Attempt-owned diff Attachment. */\n readonly attribution: AgentWorkspaceDiffPolicy;\n}\ninterface LedgerOptions {\n /** defineEval({ diff }) 的归因调整:ignore 追加排除,include 打洞加回(优先级最高)。 */\n include?: string[];\n ignore?: string[];\n}\n/** 每条 git 命令都带上私有 GIT_DIR + workdir work-tree;项目/全局 gitignore 一律不参与。 */\nfunction gitEnv(sandbox: Sandbox, gitDir: string): globalThis.Record<string, string> {\n return {\n GIT_DIR: gitDir,\n GIT_WORK_TREE: sandbox.workdir,\n GIT_AUTHOR_NAME: \"niceeval\",\n GIT_AUTHOR_EMAIL: \"niceeval@localhost\",\n GIT_COMMITTER_NAME: \"niceeval\",\n GIT_COMMITTER_EMAIL: \"niceeval@localhost\",\n // Internal root Git must never consume configuration or hooks writable by the Agent.\n GIT_CONFIG_NOSYSTEM: \"1\",\n GIT_CONFIG_GLOBAL: \"/dev/null\",\n GIT_CONFIG_COUNT: \"1\",\n GIT_CONFIG_KEY_0: \"core.hooksPath\",\n GIT_CONFIG_VALUE_0: \"/dev/null\",\n GIT_TERMINAL_PROMPT: \"0\",\n HOME: \"/tmp\",\n };\n}\nfunction shellQuote(s: string): string {\n return `'${s.replaceAll(\"'\", `'\\\\''`)}'`;\n}\n/**\n * Root Git can faithfully restore bytes but would otherwise recreate ordinary fixture files as root.\n * Keep a content-free metadata mirror inside the private (0700) ledger and reapply uid/gid/mode after\n * reset. The batched xargs loops preserve arbitrary Git path bytes without exposing objects to the Agent.\n */\nfunction captureBaselineMetadataScript(): string {\n return [\n 'META=\"$GIT_DIR/niceeval-baseline-metadata\"',\n 'rm -rf \"$META\" && mkdir -p \"$META/files\" \"$META/dirs\"',\n \"export META\",\n \"git ls-files -z | xargs -0 -n 100 sh -c '\",\n \" for p do\",\n ' src=\"$GIT_WORK_TREE/$p\"',\n ' ref=\"$META/files/$p\"',\n ' mkdir -p \"$(dirname \"$ref\")\" && : > \"$ref\"',\n ' owner=$(stat -c \"%u:%g\" \"$src\") && mode=$(stat -c \"%a\" \"$src\")',\n ' chown -h \"$owner\" \"$ref\" && chmod \"$mode\" \"$ref\"',\n ' d=$(dirname \"$p\")',\n ' while [ \"$d\" != \".\" ]; do',\n ' dref=\"$META/dirs/$d/.ref\"',\n ' if [ ! -e \"$dref\" ]; then',\n ' mkdir -p \"$(dirname \"$dref\")\" && : > \"$dref\"',\n ' downer=$(stat -c \"%u:%g\" \"$GIT_WORK_TREE/$d\") && dmode=$(stat -c \"%a\" \"$GIT_WORK_TREE/$d\")',\n ' chown \"$downer\" \"$dref\" && chmod \"$dmode\" \"$dref\"',\n \" fi\",\n ' d=$(dirname \"$d\")',\n \" done\",\n \" done\",\n \"' niceeval-meta\",\n // Agent and any background process share the ordinary sandbox uid. Keep both objects and the\n // metadata mirror root-private for the whole attempt; reset never opens this directory to that uid.\n 'chmod go-rwx \"$GIT_DIR\"',\n ].join(\"\\n\");\n}\nfunction restoreBaselineMetadataScript(): string {\n return [\n 'META=\"$GIT_DIR/niceeval-baseline-metadata\"',\n \"export META\",\n 'if [ -d \"$META/files\" ]; then',\n \" find \\\"$META/files\\\" -type f -print0 | xargs -0 -n 100 sh -c '\",\n \" for ref do\",\n ' p=${ref#\"$META/files/\"}',\n ' target=\"$GIT_WORK_TREE/$p\"',\n ' if [ -e \"$target\" ] || [ -L \"$target\" ]; then',\n ' owner=$(stat -c \"%u:%g\" \"$ref\") && mode=$(stat -c \"%a\" \"$ref\")',\n ' chown -h \"$owner\" \"$target\"',\n ' [ -L \"$target\" ] || chmod \"$mode\" \"$target\"',\n \" fi\",\n \" done\",\n \" ' niceeval-meta-restore\",\n \"fi\",\n // Apply directory metadata last so restrictive parent modes cannot interfere with child repair.\n 'if [ -d \"$META/dirs\" ]; then',\n \" find \\\"$META/dirs\\\" -type f -name .ref -print0 | xargs -0 -n 100 sh -c '\",\n \" for ref do\",\n ' d=${ref%/.ref}',\n ' p=${d#\"$META/dirs/\"}',\n ' target=\"$GIT_WORK_TREE/$p\"',\n ' if [ -d \"$target\" ]; then',\n ' owner=$(stat -c \"%u:%g\" \"$ref\") && mode=$(stat -c \"%a\" \"$ref\")',\n ' chown \"$owner\" \"$target\" && chmod \"$mode\" \"$target\"',\n \" fi\",\n \" done\",\n \" ' niceeval-dir-meta-restore\",\n \"fi\",\n 'chmod go-rwx \"$GIT_DIR\"',\n ].join(\"\\n\");\n}\n/**\n * 把仓库根语义的 gitignore 风格规则编译成 ledger pathspec。\n * 无斜杠的名字匹配任意深度;有斜杠的规则相对 workdir 根;目录本身与后代一起处理。\n */\nfunction gitignorePathspecs(pattern: string, exclude: boolean): string[] {\n let normalized = pattern;\n while (normalized.startsWith(\"./\"))\n normalized = normalized.slice(2);\n if (normalized.startsWith(\"/\"))\n normalized = normalized.slice(1);\n normalized = normalized.replace(/\\/+$/, \"\");\n if (!normalized)\n return [];\n const glob = normalized.includes(\"/\") ? normalized : `**/${normalized}`;\n const globs = exclude && !glob.endsWith(\"/**\") ? [glob, `${glob}/**`] : [glob];\n const magic = exclude ? \":(glob,exclude)\" : \":(glob)\";\n return [...new Set(globs)].map((value) => `${magic}${value}`);\n}\n/** 打分类账锚点(workspace.baseline 阶段,环境层钩子之后):git init + 冻结排除清单 + 首笔 commit。 */\nexport async function createChangeLedger(sandbox: Sandbox, opts?: LedgerOptions): Promise<ChangeLedger> {\n const excludes = [...DEFAULT_EXCLUDES, ...(opts?.ignore ?? [])];\n const includes = opts?.include ?? [];\n // 多数 provider 用固定的宿主内私有路径(每实例全新隔离文件系统,天然不冲突);宿主本身即\n // 工作树的 provider(如 local)按 sandboxId 登记专属路径,避免同机多次运行互相踩踏\n // (见 sandbox/ledger-paths.ts —— 这里不认 provider 名,只问登记表)。\n const paths = ledgerPathsFor(sandbox.sandboxId);\n const gitDir = paths?.gitDir ?? LEDGER_GIT_DIR;\n const exportDir = paths?.exportDir ?? EXPORT_DIR;\n const env = gitEnv(sandbox, gitDir);\n const rootCommands = sandboxSupportsRootCommands(sandbox);\n // 只给 runner 私有 ledger 命令提权,以便读取题目故意设置的受限文件。脚本不 chmod/chown\n // workdir,Agent 命令仍沿标准非 root 身份;不支持提权的 provider 保持既有用户态路径。\n const commandOptions = rootCommands ? { env, user: \"root\" as const } : { env };\n const captureMetadata = rootCommands ? ` && ${captureBaselineMetadataScript()}` : \"\";\n const lockPrivateLedger = rootCommands ? ' && chmod go-rwx \"$GIT_DIR\"' : \"\";\n let ordinaryUid: string | undefined;\n if (rootCommands) {\n // Capture before Agent setup/send can mutate the VM. A post-attempt `id` probe would not be a\n // trustworthy boundary when the configured execution identity itself is root.\n const identity = await sandbox.runShell(\"command -p id -u\", { env });\n ensureCommandSucceeded(identity, \"detect sandbox execution identity for reuse\", false);\n ordinaryUid = identity.stdout.trim();\n }\n // add -A -f:绕过项目自己的 .gitignore(项目 ignore 的文件照常记录);排除靠 pathspec\n // (runner 私有清单,agent / fixture 写 .gitignore 影响不了它);include 用第二次 add 打洞加回。\n const excludeSpecs = excludes.flatMap((pattern) => gitignorePathspecs(pattern, true)).map(shellQuote).join(\" \");\n // include 打洞:路径此刻可能还不存在(如 agent 之后才写),unmatched pathspec 不算错。\n const includeSpecs = includes.flatMap((pattern) => gitignorePathspecs(pattern, false)).map(shellQuote).join(\" \");\n const includeAdd = includeSpecs.length > 0 ? ` && { git -c advice.addEmbeddedRepo=false add -A -f -- ${includeSpecs} 2>/dev/null || true; }` : \"\";\n const rejectGitlinks = \" && nested=$(git ls-files --stage | awk '$1 == \\\"160000\\\" { sub(/^[^\\\\t]*\\\\t/, \\\"\\\"); print; exit }')\" +\n ' && if [ -n \"$nested\" ]; then printf \\'%s\\\\n\\' \"niceeval ledger cannot track nested Git repository $nested as file-level evidence; move the checkout to sandbox.workdir root, or add the whole path to defineEval({ diff: { ignore: [...] } }) when it is intentionally out of scope\" >&2; exit 2; fi';\n const addAll = `git -c advice.addEmbeddedRepo=false add -A -f -- . ${excludeSpecs}${includeAdd}${rejectGitlinks}`;\n const anchor = await sandbox.runShell(\n // The path is predictable inside an isolated VM. Remove any image/prepare-time occupant or\n // symlink, then recreate the exact runner-private directory as root 0700 before Git touches it.\n `rm -rf -- ${shellQuote(gitDir)} && mkdir -p -m 0700 -- ${shellQuote(gitDir)} && ` +\n `git init -q \"${gitDir}\" && ${addAll} && git commit -q --allow-empty -m \"anchor\" && ` +\n `(git rev-parse -q --verify niceeval-reuse-anchor >/dev/null || git tag niceeval-reuse-anchor)` +\n captureMetadata, {\n ...commandOptions,\n });\n ensureCommandSucceeded(anchor, \"create change ledger anchor\", rootCommands);\n return {\n rootExecutionIdentity: ordinaryUid === \"0\",\n attribution: Object.freeze({\n defaultPolicy: \"niceeval-default-excludes\" as const,\n include: Object.freeze([...includes]),\n ignore: Object.freeze([...(opts?.ignore ?? [])]),\n }),\n async commitEvalWindow(label: string): Promise<void> {\n // 有未记录变化才落这一笔;干净时不产生空的 eval 归因 commit。\n const result = await sandbox.runShell(`${addAll} && (git diff --cached --quiet || git commit -q -m ${shellQuote(`eval ${label}`)})${lockPrivateLedger}`, {\n ...commandOptions,\n });\n ensureCommandSucceeded(result, `commit eval window ${label}`, rootCommands);\n },\n async commitAgentWindow(label: string): Promise<void> {\n // 窗口内没有变化时也落一条(--allow-empty),diff.json 里该窗口 changes 为空对象。\n const result = await sandbox.runShell(`${addAll} && git commit -q --allow-empty -m ${shellQuote(`agent ${label}`)}${lockPrivateLedger}`, commandOptions);\n ensureCommandSucceeded(result, `commit agent window ${label}`, rootCommands);\n },\n async exportWindows(): Promise<DiffArtifact> {\n return exportAgentWindows(sandbox, commandOptions, exportDir, rootCommands);\n },\n async resetToAnchor(): Promise<void> {\n if (ordinaryUid === \"0\") {\n throw new Error(\"sandboxReuse cannot safely reuse a root-agent sandbox: the Agent could read private ledger objects from prior attempts; use a non-root execution user or disable sandboxReuse\");\n }\n // Root performs the byte reset, then reapplies the content-free baseline metadata mirror so\n // ordinary files return to their original uid/gid/mode instead of becoming root-owned. The\n // private object database stays 0700 throughout; no Agent/background process can read it.\n const result = await sandbox.runShell(`git reset -q --hard niceeval-reuse-anchor && ` +\n `git clean -fd ${excludes.map((pattern) => `-e ${shellQuote(pattern)}`).join(\" \")} && ` +\n restoreBaselineMetadataScript(), commandOptions);\n ensureCommandSucceeded(result, \"reset reusable sandbox to anchor and restore ownership\", rootCommands);\n },\n };\n}\nasync function exportAgentWindows(sandbox: Sandbox, commandOptions: {\n readonly env: globalThis.Record<string, string>;\n readonly user?: \"root\";\n}, exportDir: string, rootCommands: boolean): Promise<DiffArtifact> {\n const result = await sandbox.runShell(buildExportScript(exportDir), commandOptions);\n ensureCommandSucceeded(result, \"export agent windows\", rootCommands);\n const payload = await sandbox.readBytes(`${exportDir}/export.bin`);\n return parseExportPayload(Buffer.from(payload));\n}\nfunction ensureCommandSucceeded(result: {\n exitCode: number;\n stderr: string;\n}, operation: string, rootCommands: boolean, permissionGuidance?: string): void {\n if (result.exitCode === 0)\n return;\n const lines = result.stderr.trim().split(\"\\n\").filter(Boolean);\n const permission = lines.find((line) => /permission denied|operation not permitted/i.test(line));\n if (permission !== undefined) {\n const guidance = permissionGuidance ?? (rootCommands\n ? \"the provider declared root command support, but root ledger execution still could not read the workspace; check its root command mapping\"\n : \"this sandbox provider does not support root ledger commands; use a root-capable provider for tasks that intentionally start with unreadable files instead of chmod/chowning away the task condition\");\n throw new Error(`${operation} failed (exit ${result.exitCode}): ${permission}; ${guidance}`);\n }\n // git 可能先输出 advisory warning,再输出 niceeval 的可操作诊断;最后一行最接近失败根因。\n const detail = lines.at(-1);\n throw new Error(`${operation} failed (exit ${result.exitCode})${detail ? `: ${detail}` : \"\"}`);\n}\n// ---------- 导出文件的宿主侧解析(严格校验:帧、git 输出形状、尺寸与内容的完备性) ----------\nconst ZERO_SHA = /^0+$/;\nfunction parseExportPayload(payload: Buffer): DiffArtifact {\n const windows: DiffWindow[] = [];\n let offset = 0;\n const readLine = (): string => {\n const newline = payload.indexOf(0x0a, offset);\n if (newline === -1)\n throw new Error(\"niceeval ledger export: truncated header\");\n const line = payload.subarray(offset, newline).toString(\"utf8\");\n offset = newline + 1;\n return line;\n };\n const readSection = (expected: string): Buffer => {\n const header = readLine().split(\" \");\n if (header.length !== 3 || header[0] !== \"section\" || header[1] !== expected) {\n throw new Error(`niceeval ledger export: expected section ${expected}, got ${JSON.stringify(header.join(\" \"))}`);\n }\n const length = Number(header[2]);\n if (!isNonNegativeInteger(length) || offset + length > payload.length) {\n throw new Error(`niceeval ledger export: invalid ${expected} section length`);\n }\n const body = payload.subarray(offset, offset + length);\n offset += length;\n return body;\n };\n while (offset < payload.length) {\n const header = readLine();\n if (!header.startsWith(\"window \"))\n throw new Error(`niceeval ledger export: expected window header, got ${JSON.stringify(header)}`);\n const rest = header.slice(\"window \".length);\n const space = rest.indexOf(\" \");\n const label = space === -1 ? \"\" : rest.slice(space + 1);\n const entries = parseDiffTree(readSection(\"difftree\"), label);\n const binaryPaths = parseBinaryPaths(readSection(\"numstat\"), label);\n const sizeBySha = parseSizes(readSection(\"sizes\"), label);\n const contentBySha = parseBlobBatch(readSection(\"blobs\"), label);\n const changes: globalThis.Record<string, WindowChange> = {};\n for (const entry of entries) {\n const change: WindowChange = { status: entry.status };\n // 沙箱侧决定「哪些文本 blob 进 --batch」的两条判据在宿主侧同样成立(binary 段 + sizes 段\n // 都在导出文件里),所以这里独立重算,不需要沙箱再输出一份省略清单。\n const beforeBytes = entry.status === \"added\" ? undefined : requireSize(sizeBySha, entry.beforeSha, label, entry.path);\n const afterBytes = entry.status === \"deleted\" ? undefined : requireSize(sizeBySha, entry.afterSha, label, entry.path);\n const binary = binaryPaths.has(entry.path);\n const oversized = (beforeBytes ?? 0) > MAX_FILE_TEXT_BYTES || (afterBytes ?? 0) > MAX_FILE_TEXT_BYTES;\n if (binary || oversized) {\n change.elided = { reason: binary ? \"binary\" : \"oversized-text\" };\n if (beforeBytes !== undefined)\n change.elided.beforeBytes = beforeBytes;\n if (afterBytes !== undefined)\n change.elided.afterBytes = afterBytes;\n }\n else {\n if (entry.status !== \"added\")\n change.before = requireContent(contentBySha, entry.beforeSha, label, entry.path);\n if (entry.status !== \"deleted\")\n change.after = requireContent(contentBySha, entry.afterSha, label, entry.path);\n }\n changes[entry.path] = change;\n }\n windows.push({ window: label, changes });\n }\n return windows;\n}\ninterface DiffTreeEntry {\n path: string;\n status: WindowChange[\"status\"];\n beforeSha: string;\n afterSha: string;\n}\n/** `git diff-tree -r --no-renames -z` 原始输出:`:mode mode sha sha status NUL path NUL` 重复。 */\nfunction parseDiffTree(section: Buffer, label: string): DiffTreeEntry[] {\n const parts = section.toString(\"utf8\").split(\"\\0\");\n const entries: DiffTreeEntry[] = [];\n for (let i = 0; i < parts.length;) {\n const meta = parts[i++];\n if (!meta)\n continue;\n const path = parts[i++];\n const fields = meta.split(\" \");\n if (path === undefined || fields.length !== 5 || !fields[0]!.startsWith(\":\")) {\n throw new Error(`export window ${label}: malformed git diff-tree output`);\n }\n const code = fields[4]!;\n const status = code.startsWith(\"A\") ? \"added\" : code.startsWith(\"D\") ? \"deleted\" : \"modified\";\n entries.push({ path, status, beforeSha: fields[2]!, afterSha: fields[3]! });\n }\n return entries;\n}\n/** `git diff-tree --numstat -z`:二进制条目的 added/removed 计数是 `-`。 */\nfunction parseBinaryPaths(section: Buffer, label: string): Set<string> {\n const paths = new Set<string>();\n for (const record of section.toString(\"utf8\").split(\"\\0\")) {\n if (!record)\n continue;\n const firstTab = record.indexOf(\"\\t\");\n const secondTab = record.indexOf(\"\\t\", firstTab + 1);\n if (firstTab === -1 || secondTab === -1)\n throw new Error(`export window ${label}: malformed git --numstat output`);\n if (record.slice(0, firstTab) === \"-\" && record.slice(firstTab + 1, secondTab) === \"-\") {\n paths.add(record.slice(secondTab + 1));\n }\n }\n return paths;\n}\n/** `git cat-file --batch-check`:每行 `sha type size`(输入是逐出现次数的 sha,重复无害)。 */\nfunction parseSizes(section: Buffer, label: string): Map<string, number> {\n const sizes = new Map<string, number>();\n for (const line of section.toString(\"utf8\").split(\"\\n\")) {\n if (!line)\n continue;\n const fields = line.split(\" \");\n const size = Number(fields[fields.length - 1]);\n if (fields.length < 3 || !isNonNegativeInteger(size)) {\n throw new Error(`export window ${label}: malformed git cat-file --batch-check output`);\n }\n sizes.set(fields[0]!, size);\n }\n return sizes;\n}\n/** `git cat-file --batch`:自带长度帧——`sha type size\\n` + size 字节内容 + `\\n`。 */\nfunction parseBlobBatch(section: Buffer, label: string): Map<string, string> {\n const contents = new Map<string, string>();\n let offset = 0;\n while (offset < section.length) {\n const newline = section.indexOf(0x0a, offset);\n if (newline === -1)\n throw new Error(`export window ${label}: malformed git cat-file --batch header`);\n const fields = section.subarray(offset, newline).toString(\"utf8\").split(\" \");\n const size = Number(fields[fields.length - 1]);\n if (fields.length < 3 || !isNonNegativeInteger(size)) {\n throw new Error(`export window ${label}: malformed git cat-file --batch header`);\n }\n const contentStart = newline + 1;\n const contentEnd = contentStart + size;\n if (contentEnd >= section.length || section[contentEnd] !== 0x0a) {\n throw new Error(`export window ${label}: truncated git cat-file --batch content`);\n }\n contents.set(fields[0]!, section.subarray(contentStart, contentEnd).toString(\"utf8\"));\n offset = contentEnd + 1;\n }\n return contents;\n}\nfunction requireSize(sizes: Map<string, number>, sha: string, label: string, path: string): number {\n const size = sizes.get(sha);\n if (size === undefined || ZERO_SHA.test(sha))\n throw new Error(`export window ${label}: missing blob size for ${JSON.stringify(path)}`);\n return size;\n}\nfunction requireContent(contents: Map<string, string>, sha: string, label: string, path: string): string {\n const content = contents.get(sha);\n if (content === undefined || ZERO_SHA.test(sha))\n throw new Error(`export window ${label}: missing blob content for ${JSON.stringify(path)}`);\n return content;\n}\nfunction isNonNegativeInteger(value: unknown): value is number {\n return typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["ledger.ts"],"names":[],"mappings":"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","sourcesContent":["// 变更分类账(私有 git ledger):回答「**agent** 改了什么」,不是「workspace 相对空目录变了什么」。\n// 契约见 docs/feature/sandbox/architecture.md「变更归因:send 窗口与分类账」:\n// - ledger 的 git 目录在沙箱内、workdir 外(runner 私有路径),以 workdir 为 work-tree——\n// workdir 保持素净:agent 看不到 runner 的 .git,eval 需要真实 git repo 时自己 git init,\n// agent 在 workdir 里的任何 git 操作都碰不到分类账。\n// - 三类 commit 时点:锚点一笔(workspace.baseline);每次 t.send() 进入前 workdir 有未记录\n// 变化就落一笔 eval 归因;t.send() 返回后落一笔 agent 归因(send 窗口内的全部变化)。\n// - 归因排除清单 runner 私有、锚点时冻结:项目自己的 .gitignore 不参与归因判断(add -f 绕过),\n// 排除靠 pathspec,include 显式打洞加回。\n// - agent 归因增量 = 逐窗口 delta 序列(DiffWindow[]),不做跨窗口压缩。\nimport type { DiffArtifact, DiffWindow, Sandbox, WindowChange } from \"../types.ts\";\nimport type { AgentWorkspaceDiffPolicy } from \"../assertions/workspace-diff.ts\";\nimport { sandboxSupportsRootCommands } from \"../sandbox/backend.ts\";\nimport { DEFAULT_LEDGER_GIT_DIR, ledgerPathsFor } from \"../sandbox/ledger-paths.ts\";\n/**\n * ledger 的私有 git 目录:workdir 之外、runner 控制;agent 的工具默认不会去 /tmp 翻它。这是\n * 沙箱内 provider(docker/e2b/vercel)的默认值——每个实例都是全新隔离文件系统,固定路径不会\n * 跨实例踩踏。宿主本身即工作树的 provider(如 local)按 sandboxId 登记专属路径覆盖它\n * (见 sandbox/ledger-paths.ts),避免同机多次运行共享同一个 /tmp。\n */\nexport const LEDGER_GIT_DIR = DEFAULT_LEDGER_GIT_DIR;\n/** 整相导出文件的落点(与 ledger 同前缀,同样是 runner 私有路径;覆盖规则同上)。 */\nconst EXPORT_DIR = \"/tmp/.niceeval-ledger-export\";\n/** 默认归因排除清单(锚点时冻结):依赖、构建产物、包管理器缓存与用户项目里的 .niceeval 记录目录。\n * 框架自己不往 workdir 写任何东西(见 docs/observability.md「宿主侧行为断言:t.o11y」),\n * 所以这里没有框架路径要排。 */\nconst DEFAULT_EXCLUDES = [\n \".git\",\n \"node_modules\",\n \".next\",\n \"dist\",\n \"build\",\n \".turbo\",\n \".niceeval\",\n \"coverage\",\n \".cache\",\n \".pnpm-store\",\n \".npm\",\n \".yarn\",\n \"*venv*/\",\n \".venv\",\n \"__pycache__\",\n];\nconst MAX_POLICY_ENTRIES = 256;\nconst MAX_POLICY_ENTRY_UTF8_BYTES = 4096;\nconst policyEncoder = new TextEncoder();\nfunction compareAscii(left: string, right: string): number {\n return left === right ? 0 : left < right ? -1 : 1;\n}\n/** Reject an unrecordable policy before the collector starts, then freeze its canonical evidence form. */\nfunction canonicalPolicyEntries(entries: readonly string[], name: \"include\" | \"ignore\"): readonly string[] {\n if (entries.length > MAX_POLICY_ENTRIES) {\n throw new Error(`defineEval({ diff }).${name} may contain at most ${MAX_POLICY_ENTRIES} entries`);\n }\n for (const [index, entry] of entries.entries()) {\n if (typeof entry !== \"string\") {\n throw new TypeError(`defineEval({ diff }).${name}[${index}] must be a string`);\n }\n if (policyEncoder.encode(entry).byteLength > MAX_POLICY_ENTRY_UTF8_BYTES) {\n throw new Error(`defineEval({ diff }).${name}[${index}] exceeds ${MAX_POLICY_ENTRY_UTF8_BYTES} UTF-8 bytes`);\n }\n }\n return Object.freeze([...new Set(entries)].sort(compareAscii));\n}\n/**\n * 单个 send 窗口的证据安全上限。越界必须让 workspace.diff 失败,不能产出误导性的空窗口。\n * 字节预算只数**真正要传输的文本** before/after:二进制与超过单文件阈值的文本不内联内容、\n * 只记字节数(WindowChange.elided),因此不占预算——编译产物型窗口(成百上千个 .o 加几个大\n * 文本)不该因为「按尺寸计」被判越界。\n */\nconst MAX_WINDOW_PATHS = 10000;\nconst MAX_WINDOW_TEXT_BYTES = 64 * 1024 * 1024;\n/** 单个文本 blob 的内联阈值:任一侧超过它,该条目按二进制同款处理(记字节数、内容省略)。 */\nconst MAX_FILE_TEXT_BYTES = 1024 * 1024;\n/**\n * 整相导出:一条 POSIX shell 命令枚举**全部** agent 窗口并把证据写进沙箱内导出文件,宿主随后\n * 经文件通道一次下载——provider 往返数与窗口数、文件数都无关。对沙箱环境的全部要求是 git 与\n * POSIX 工具(sh/awk/wc/sort/grep),不依赖 node、python 等运行时。\n *\n * 沙箱内不组装 JSON:导出文件直接拼接 git 原生输出——每窗口四段,`diff-tree -z`(状态 + 前后\n * blob sha + 路径,NUL 安全)、`numstat -z`(二进制识别)、`cat-file --batch-check`(全部 blob\n * 尺寸)、`cat-file --batch`(要内联的文本 blob 内容,输出自带长度帧)——解析与校验全部在宿主侧完成。\n * 需要在沙箱内做的两个判断都不解析路径列:sha 提取用 awk 取 diff-tree 原始输出的第 3/4 列\n * (路径在其后,含空格也不影响);二进制排除靠 numstat 与 diff-tree 输出的行号对齐。\n * 尺寸核算(--batch-check)先于内容读取(--batch),越界在产出任何内容前失败;预算只累计真正\n * 要传输的文本 blob(二进制与单文件超限文本只出字节数,不进 --batch 请求、不计预算)。\n * 宿主侧从 sizes + numstat 两段就能判出哪些条目内容被省略,沙箱不额外输出一份判定清单。\n */\nfunction buildExportScript(exportDir: string): string {\n return [\n \"set -eu\",\n // shellQuote:多数 provider 的 exportDir 是固定字面量(无空格);local 的 exportDir 来自\n // mkdtemp(可能落在含空格的自定义 TMPDIR 下),赋值行不加引号会被 shell 拆成多个词。\n `D=${shellQuote(exportDir)}`,\n 'rm -rf \"$D\" && mkdir -p \"$D\"',\n 'OUT=$D/export.bin',\n ': > \"$OUT\"',\n 'fail() { printf \"%s\\\\n\" \"$1\" >&2; exit 2; }',\n // 帧格式:`section <name> <bytes>` 头一行,后跟原始字节;长度前缀让内容里的任意字节都安全。\n 'emit() { printf \"section %s %s\\\\n\" \"$1\" \"$(($(wc -c < \"$2\")))\" >> \"$OUT\"; cat \"$2\" >> \"$OUT\"; }',\n 'git log --reverse --format=\"%H %s\" > \"$D/log.txt\"',\n \"while IFS= read -r line; do\",\n ' hash=${line%% *}',\n ' subject=${line#* }',\n ' case $subject in \"agent \"*) ;; *) continue ;; esac',\n ' label=${subject#agent }',\n // 非 -z 的 diff-tree 把特殊路径引号转义成单行,一行 = 一个条目:wc -l 即路径数,awk 列取 sha 不碰路径。\n ' git diff-tree -r --no-renames \"$hash^\" \"$hash\" > \"$D/dt.txt\"',\n ' n=$(($(wc -l < \"$D/dt.txt\")))',\n ` [ \"$n\" -le ${MAX_WINDOW_PATHS} ] || fail \"niceeval diff window contains $n paths; limit is ${MAX_WINDOW_PATHS}\"`,\n ' git diff-tree -r --no-renames --numstat \"$hash^\" \"$hash\" > \"$D/ns.txt\"',\n // 全部 blob 出现次数(before + after,零 sha = 无此侧,排除)→ 逐次尺寸核算。\n \" awk '$3 !~ /^0+$/ { print $3 } $4 !~ /^0+$/ { print $4 }' \\\"$D/dt.txt\\\" > \\\"$D/occ.txt\\\"\",\n ' git cat-file --batch-check < \"$D/occ.txt\" > \"$D/sizes.txt\"',\n ' if grep -q \" missing$\" \"$D/sizes.txt\"; then fail \"niceeval ledger export: blob object missing\"; fi',\n // 逐条目分类:numstat 第 1 列为 \"-\" 的行是二进制,按行号对齐标 B,其余标 T,后跟前后 blob sha。\n ' awk \\'NR==FNR { bin[FNR] = ($1 == \"-\"); next } { printf \"%s %s %s\\\\n\", (bin[FNR] ? \"B\" : \"T\"), $3, $4 }\\' \"$D/ns.txt\" \"$D/dt.txt\" > \"$D/entries.txt\"',\n // 要内联的文本 blob(去重):二进制条目与任一侧超过单文件阈值的文本条目都不请求内容,\n // 也不计入窗口预算——它们只出字节数(宿主据同一份 sizes 判成 elided)。\n ` awk -v LIMIT=${MAX_FILE_TEXT_BYTES} -v TOTAL=\"$D/total.txt\" 'NR==FNR { sz[$1] = $3; next } $1 == \"T\" { b = $2; a = $3; if (b !~ /^0+$/ && sz[b] > LIMIT) next; if (a !~ /^0+$/ && sz[a] > LIMIT) next; if (b !~ /^0+$/ && !(b in seen)) { seen[b] = 1; total += sz[b]; print b } if (a !~ /^0+$/ && !(a in seen)) { seen[a] = 1; total += sz[a]; print a } } END { print total+0 > TOTAL }' \"$D/sizes.txt\" \"$D/entries.txt\" > \"$D/text.txt\"`,\n ' bytes=$(cat \"$D/total.txt\")',\n ` [ \"$bytes\" -le ${MAX_WINDOW_TEXT_BYTES} ] || fail \"niceeval diff window transfers $bytes text blob bytes; limit is ${MAX_WINDOW_TEXT_BYTES}; narrow defineEval({ diff }) include/ignore rules\"`,\n ' git cat-file --batch < \"$D/text.txt\" > \"$D/blobs.bin\"',\n ' git diff-tree -r --no-renames -z \"$hash^\" \"$hash\" > \"$D/dtz.bin\"',\n ' git diff-tree -r --no-renames --numstat -z \"$hash^\" \"$hash\" > \"$D/nsz.bin\"',\n ' printf \"window %s %s\\\\n\" \"$hash\" \"$label\" >> \"$OUT\"',\n ' emit difftree \"$D/dtz.bin\"',\n ' emit numstat \"$D/nsz.bin\"',\n ' emit sizes \"$D/sizes.txt\"',\n ' emit blobs \"$D/blobs.bin\"',\n 'done < \"$D/log.txt\"',\n // root ledger commands may create the private export with a restrictive umask. The file is outside\n // workdir; making only this runner artifact readable lets the provider file channel fetch it.\n 'chmod 0644 \"$OUT\"',\n ].join(\"\\n\");\n}\nexport interface ChangeLedger {\n /** send 进入前:workdir 有未记录变化就落一笔 eval 归因(fixture / setup / runCommand 副作用)。 */\n commitEvalWindow(label: string): Promise<void>;\n /** send 返回后:落一笔 agent 归因——这个 send 窗口内的全部 workspace 变化(无变化也落空窗口)。 */\n commitAgentWindow(label: string): Promise<void>;\n /** workspace.diff 阶段:从分类账导出每个 send 窗口自己的 before/after,按时序。 */\n exportWindows(): Promise<DiffArtifact>;\n /** 回到创建时的题间锚点,并保留归因排除清单排除的动态环境。 */\n resetToAnchor(): Promise<void>;\n /**\n * 建账时探测到的执行身份是否为 root(仅当 provider 支持 root ledger 命令时才探测得到,\n * 否则恒为 false)。sandboxReuse 复用池据此在实例进池前拒绝(见 docs/feature/sandbox/reuse.md);\n * `resetToAnchor()` 内的同款判断作纵深防御保留。\n */\n readonly rootExecutionIdentity: boolean;\n /** Frozen semantic identity consumed by the Attempt-owned diff Attachment. */\n readonly attribution: AgentWorkspaceDiffPolicy;\n}\ninterface LedgerOptions {\n /** defineEval({ diff }) 的归因调整:ignore 追加排除,include 打洞加回(优先级最高)。 */\n include?: string[];\n ignore?: string[];\n}\n/** 每条 git 命令都带上私有 GIT_DIR + workdir work-tree;项目/全局 gitignore 一律不参与。 */\nfunction gitEnv(sandbox: Sandbox, gitDir: string): globalThis.Record<string, string> {\n return {\n GIT_DIR: gitDir,\n GIT_WORK_TREE: sandbox.workdir,\n GIT_AUTHOR_NAME: \"niceeval\",\n GIT_AUTHOR_EMAIL: \"niceeval@localhost\",\n GIT_COMMITTER_NAME: \"niceeval\",\n GIT_COMMITTER_EMAIL: \"niceeval@localhost\",\n // Internal root Git must never consume configuration or hooks writable by the Agent.\n GIT_CONFIG_NOSYSTEM: \"1\",\n GIT_CONFIG_GLOBAL: \"/dev/null\",\n GIT_CONFIG_COUNT: \"1\",\n GIT_CONFIG_KEY_0: \"core.hooksPath\",\n GIT_CONFIG_VALUE_0: \"/dev/null\",\n GIT_TERMINAL_PROMPT: \"0\",\n HOME: \"/tmp\",\n };\n}\nfunction shellQuote(s: string): string {\n return `'${s.replaceAll(\"'\", `'\\\\''`)}'`;\n}\n/**\n * Root Git can faithfully restore bytes but would otherwise recreate ordinary fixture files as root.\n * Keep a content-free metadata mirror inside the private (0700) ledger and reapply uid/gid/mode after\n * reset. The batched xargs loops preserve arbitrary Git path bytes without exposing objects to the Agent.\n */\nfunction captureBaselineMetadataScript(): string {\n return [\n 'META=\"$GIT_DIR/niceeval-baseline-metadata\"',\n 'rm -rf \"$META\" && mkdir -p \"$META/files\" \"$META/dirs\"',\n \"export META\",\n \"git ls-files -z | xargs -0 -n 100 sh -c '\",\n \" for p do\",\n ' src=\"$GIT_WORK_TREE/$p\"',\n ' ref=\"$META/files/$p\"',\n ' mkdir -p \"$(dirname \"$ref\")\" && : > \"$ref\"',\n ' owner=$(stat -c \"%u:%g\" \"$src\") && mode=$(stat -c \"%a\" \"$src\")',\n ' chown -h \"$owner\" \"$ref\" && chmod \"$mode\" \"$ref\"',\n ' d=$(dirname \"$p\")',\n ' while [ \"$d\" != \".\" ]; do',\n ' dref=\"$META/dirs/$d/.ref\"',\n ' if [ ! -e \"$dref\" ]; then',\n ' mkdir -p \"$(dirname \"$dref\")\" && : > \"$dref\"',\n ' downer=$(stat -c \"%u:%g\" \"$GIT_WORK_TREE/$d\") && dmode=$(stat -c \"%a\" \"$GIT_WORK_TREE/$d\")',\n ' chown \"$downer\" \"$dref\" && chmod \"$dmode\" \"$dref\"',\n \" fi\",\n ' d=$(dirname \"$d\")',\n \" done\",\n \" done\",\n \"' niceeval-meta\",\n // Agent and any background process share the ordinary sandbox uid. Keep both objects and the\n // metadata mirror root-private for the whole attempt; reset never opens this directory to that uid.\n 'chmod go-rwx \"$GIT_DIR\"',\n ].join(\"\\n\");\n}\nfunction restoreBaselineMetadataScript(): string {\n return [\n 'META=\"$GIT_DIR/niceeval-baseline-metadata\"',\n \"export META\",\n 'if [ -d \"$META/files\" ]; then',\n \" find \\\"$META/files\\\" -type f -print0 | xargs -0 -n 100 sh -c '\",\n \" for ref do\",\n ' p=${ref#\"$META/files/\"}',\n ' target=\"$GIT_WORK_TREE/$p\"',\n ' if [ -e \"$target\" ] || [ -L \"$target\" ]; then',\n ' owner=$(stat -c \"%u:%g\" \"$ref\") && mode=$(stat -c \"%a\" \"$ref\")',\n ' chown -h \"$owner\" \"$target\"',\n ' [ -L \"$target\" ] || chmod \"$mode\" \"$target\"',\n \" fi\",\n \" done\",\n \" ' niceeval-meta-restore\",\n \"fi\",\n // Apply directory metadata last so restrictive parent modes cannot interfere with child repair.\n 'if [ -d \"$META/dirs\" ]; then',\n \" find \\\"$META/dirs\\\" -type f -name .ref -print0 | xargs -0 -n 100 sh -c '\",\n \" for ref do\",\n ' d=${ref%/.ref}',\n ' p=${d#\"$META/dirs/\"}',\n ' target=\"$GIT_WORK_TREE/$p\"',\n ' if [ -d \"$target\" ]; then',\n ' owner=$(stat -c \"%u:%g\" \"$ref\") && mode=$(stat -c \"%a\" \"$ref\")',\n ' chown \"$owner\" \"$target\" && chmod \"$mode\" \"$target\"',\n \" fi\",\n \" done\",\n \" ' niceeval-dir-meta-restore\",\n \"fi\",\n 'chmod go-rwx \"$GIT_DIR\"',\n ].join(\"\\n\");\n}\n/**\n * 把仓库根语义的 gitignore 风格规则编译成 ledger pathspec。\n * 无斜杠的名字匹配任意深度;有斜杠的规则相对 workdir 根;目录本身与后代一起处理。\n */\nfunction gitignorePathspecs(pattern: string, exclude: boolean): string[] {\n let normalized = pattern;\n while (normalized.startsWith(\"./\"))\n normalized = normalized.slice(2);\n if (normalized.startsWith(\"/\"))\n normalized = normalized.slice(1);\n normalized = normalized.replace(/\\/+$/, \"\");\n if (!normalized)\n return [];\n const glob = normalized.includes(\"/\") ? normalized : `**/${normalized}`;\n const globs = exclude && !glob.endsWith(\"/**\") ? [glob, `${glob}/**`] : [glob];\n const magic = exclude ? \":(glob,exclude)\" : \":(glob)\";\n return [...new Set(globs)].map((value) => `${magic}${value}`);\n}\n/** 打分类账锚点(workspace.baseline 阶段,环境层钩子之后):git init + 冻结排除清单 + 首笔 commit。 */\nexport async function createChangeLedger(sandbox: Sandbox, opts?: LedgerOptions): Promise<ChangeLedger> {\n const includes = canonicalPolicyEntries(opts?.include ?? [], \"include\");\n const ignored = canonicalPolicyEntries(opts?.ignore ?? [], \"ignore\");\n const excludes = [...DEFAULT_EXCLUDES, ...ignored];\n // 多数 provider 用固定的宿主内私有路径(每实例全新隔离文件系统,天然不冲突);宿主本身即\n // 工作树的 provider(如 local)按 sandboxId 登记专属路径,避免同机多次运行互相踩踏\n // (见 sandbox/ledger-paths.ts —— 这里不认 provider 名,只问登记表)。\n const paths = ledgerPathsFor(sandbox.sandboxId);\n const gitDir = paths?.gitDir ?? LEDGER_GIT_DIR;\n const exportDir = paths?.exportDir ?? EXPORT_DIR;\n const env = gitEnv(sandbox, gitDir);\n const rootCommands = sandboxSupportsRootCommands(sandbox);\n // 只给 runner 私有 ledger 命令提权,以便读取题目故意设置的受限文件。脚本不 chmod/chown\n // workdir,Agent 命令仍沿标准非 root 身份;不支持提权的 provider 保持既有用户态路径。\n const commandOptions = rootCommands ? { env, user: \"root\" as const } : { env };\n const captureMetadata = rootCommands ? ` && ${captureBaselineMetadataScript()}` : \"\";\n const lockPrivateLedger = rootCommands ? ' && chmod go-rwx \"$GIT_DIR\"' : \"\";\n let ordinaryUid: string | undefined;\n if (rootCommands) {\n // Capture before Agent setup/send can mutate the VM. A post-attempt `id` probe would not be a\n // trustworthy boundary when the configured execution identity itself is root.\n const identity = await sandbox.runShell(\"command -p id -u\", { env });\n ensureCommandSucceeded(identity, \"detect sandbox execution identity for reuse\", false);\n ordinaryUid = identity.stdout.trim();\n }\n // add -A -f:绕过项目自己的 .gitignore(项目 ignore 的文件照常记录);排除靠 pathspec\n // (runner 私有清单,agent / fixture 写 .gitignore 影响不了它);include 用第二次 add 打洞加回。\n const excludeSpecs = excludes.flatMap((pattern) => gitignorePathspecs(pattern, true)).map(shellQuote).join(\" \");\n // include 打洞:路径此刻可能还不存在(如 agent 之后才写),unmatched pathspec 不算错。\n const includeSpecs = includes.flatMap((pattern) => gitignorePathspecs(pattern, false)).map(shellQuote).join(\" \");\n const includeAdd = includeSpecs.length > 0 ? ` && { git -c advice.addEmbeddedRepo=false add -A -f -- ${includeSpecs} 2>/dev/null || true; }` : \"\";\n const rejectGitlinks = \" && nested=$(git ls-files --stage | awk '$1 == \\\"160000\\\" { sub(/^[^\\\\t]*\\\\t/, \\\"\\\"); print; exit }')\" +\n ' && if [ -n \"$nested\" ]; then printf \\'%s\\\\n\\' \"niceeval ledger cannot track nested Git repository $nested as file-level evidence; move the checkout to sandbox.workdir root, or add the whole path to defineEval({ diff: { ignore: [...] } }) when it is intentionally out of scope\" >&2; exit 2; fi';\n const addAll = `git -c advice.addEmbeddedRepo=false add -A -f -- . ${excludeSpecs}${includeAdd}${rejectGitlinks}`;\n const anchor = await sandbox.runShell(\n // The path is predictable inside an isolated VM. Remove any image/prepare-time occupant or\n // symlink, then recreate the exact runner-private directory as root 0700 before Git touches it.\n `rm -rf -- ${shellQuote(gitDir)} && mkdir -p -m 0700 -- ${shellQuote(gitDir)} && ` +\n `git init -q \"${gitDir}\" && ${addAll} && git commit -q --allow-empty -m \"anchor\" && ` +\n `(git rev-parse -q --verify niceeval-reuse-anchor >/dev/null || git tag niceeval-reuse-anchor)` +\n captureMetadata, {\n ...commandOptions,\n });\n ensureCommandSucceeded(anchor, \"create change ledger anchor\", rootCommands);\n return {\n rootExecutionIdentity: ordinaryUid === \"0\",\n attribution: Object.freeze({\n defaultPolicy: \"niceeval.sandbox-ledger/default-excludes/v1\" as const,\n include: includes,\n ignore: ignored,\n }),\n async commitEvalWindow(label: string): Promise<void> {\n // 有未记录变化才落这一笔;干净时不产生空的 eval 归因 commit。\n const result = await sandbox.runShell(`${addAll} && (git diff --cached --quiet || git commit -q -m ${shellQuote(`eval ${label}`)})${lockPrivateLedger}`, {\n ...commandOptions,\n });\n ensureCommandSucceeded(result, `commit eval window ${label}`, rootCommands);\n },\n async commitAgentWindow(label: string): Promise<void> {\n // 窗口内没有变化时也落一条(--allow-empty),diff.json 里该窗口 changes 为空对象。\n const result = await sandbox.runShell(`${addAll} && git commit -q --allow-empty -m ${shellQuote(`agent ${label}`)}${lockPrivateLedger}`, commandOptions);\n ensureCommandSucceeded(result, `commit agent window ${label}`, rootCommands);\n },\n async exportWindows(): Promise<DiffArtifact> {\n return exportAgentWindows(sandbox, commandOptions, exportDir, rootCommands);\n },\n async resetToAnchor(): Promise<void> {\n if (ordinaryUid === \"0\") {\n throw new Error(\"sandboxReuse cannot safely reuse a root-agent sandbox: the Agent could read private ledger objects from prior attempts; use a non-root execution user or disable sandboxReuse\");\n }\n // Root performs the byte reset, then reapplies the content-free baseline metadata mirror so\n // ordinary files return to their original uid/gid/mode instead of becoming root-owned. The\n // private object database stays 0700 throughout; no Agent/background process can read it.\n const result = await sandbox.runShell(`git reset -q --hard niceeval-reuse-anchor && ` +\n `git clean -fd ${excludes.map((pattern) => `-e ${shellQuote(pattern)}`).join(\" \")} && ` +\n restoreBaselineMetadataScript(), commandOptions);\n ensureCommandSucceeded(result, \"reset reusable sandbox to anchor and restore ownership\", rootCommands);\n },\n };\n}\nasync function exportAgentWindows(sandbox: Sandbox, commandOptions: {\n readonly env: globalThis.Record<string, string>;\n readonly user?: \"root\";\n}, exportDir: string, rootCommands: boolean): Promise<DiffArtifact> {\n const result = await sandbox.runShell(buildExportScript(exportDir), commandOptions);\n ensureCommandSucceeded(result, \"export agent windows\", rootCommands);\n const payload = await sandbox.readBytes(`${exportDir}/export.bin`);\n return parseExportPayload(Buffer.from(payload));\n}\nfunction ensureCommandSucceeded(result: {\n exitCode: number;\n stderr: string;\n}, operation: string, rootCommands: boolean, permissionGuidance?: string): void {\n if (result.exitCode === 0)\n return;\n const lines = result.stderr.trim().split(\"\\n\").filter(Boolean);\n const permission = lines.find((line) => /permission denied|operation not permitted/i.test(line));\n if (permission !== undefined) {\n const guidance = permissionGuidance ?? (rootCommands\n ? \"the provider declared root command support, but root ledger execution still could not read the workspace; check its root command mapping\"\n : \"this sandbox provider does not support root ledger commands; use a root-capable provider for tasks that intentionally start with unreadable files instead of chmod/chowning away the task condition\");\n throw new Error(`${operation} failed (exit ${result.exitCode}): ${permission}; ${guidance}`);\n }\n // git 可能先输出 advisory warning,再输出 niceeval 的可操作诊断;最后一行最接近失败根因。\n const detail = lines.at(-1);\n throw new Error(`${operation} failed (exit ${result.exitCode})${detail ? `: ${detail}` : \"\"}`);\n}\n// ---------- 导出文件的宿主侧解析(严格校验:帧、git 输出形状、尺寸与内容的完备性) ----------\nconst ZERO_SHA = /^0+$/;\nfunction parseExportPayload(payload: Buffer): DiffArtifact {\n const windows: DiffWindow[] = [];\n let offset = 0;\n const readLine = (): string => {\n const newline = payload.indexOf(0x0a, offset);\n if (newline === -1)\n throw new Error(\"niceeval ledger export: truncated header\");\n const line = payload.subarray(offset, newline).toString(\"utf8\");\n offset = newline + 1;\n return line;\n };\n const readSection = (expected: string): Buffer => {\n const header = readLine().split(\" \");\n if (header.length !== 3 || header[0] !== \"section\" || header[1] !== expected) {\n throw new Error(`niceeval ledger export: expected section ${expected}, got ${JSON.stringify(header.join(\" \"))}`);\n }\n const length = Number(header[2]);\n if (!isNonNegativeInteger(length) || offset + length > payload.length) {\n throw new Error(`niceeval ledger export: invalid ${expected} section length`);\n }\n const body = payload.subarray(offset, offset + length);\n offset += length;\n return body;\n };\n while (offset < payload.length) {\n const header = readLine();\n if (!header.startsWith(\"window \"))\n throw new Error(`niceeval ledger export: expected window header, got ${JSON.stringify(header)}`);\n const rest = header.slice(\"window \".length);\n const space = rest.indexOf(\" \");\n const label = space === -1 ? \"\" : rest.slice(space + 1);\n const entries = parseDiffTree(readSection(\"difftree\"), label);\n const binaryPaths = parseBinaryPaths(readSection(\"numstat\"), label);\n const sizeBySha = parseSizes(readSection(\"sizes\"), label);\n const contentBySha = parseBlobBatch(readSection(\"blobs\"), label);\n const changes: globalThis.Record<string, WindowChange> = {};\n for (const entry of entries) {\n const change: WindowChange = { status: entry.status };\n // 沙箱侧决定「哪些文本 blob 进 --batch」的两条判据在宿主侧同样成立(binary 段 + sizes 段\n // 都在导出文件里),所以这里独立重算,不需要沙箱再输出一份省略清单。\n const beforeBytes = entry.status === \"added\" ? undefined : requireSize(sizeBySha, entry.beforeSha, label, entry.path);\n const afterBytes = entry.status === \"deleted\" ? undefined : requireSize(sizeBySha, entry.afterSha, label, entry.path);\n const binary = binaryPaths.has(entry.path);\n const oversized = (beforeBytes ?? 0) > MAX_FILE_TEXT_BYTES || (afterBytes ?? 0) > MAX_FILE_TEXT_BYTES;\n if (binary || oversized) {\n change.elided = { reason: binary ? \"binary\" : \"oversized-text\" };\n if (beforeBytes !== undefined)\n change.elided.beforeBytes = beforeBytes;\n if (afterBytes !== undefined)\n change.elided.afterBytes = afterBytes;\n }\n else {\n if (entry.status !== \"added\")\n change.before = requireContent(contentBySha, entry.beforeSha, label, entry.path);\n if (entry.status !== \"deleted\")\n change.after = requireContent(contentBySha, entry.afterSha, label, entry.path);\n }\n changes[entry.path] = change;\n }\n windows.push({ window: label, changes });\n }\n return windows;\n}\ninterface DiffTreeEntry {\n path: string;\n status: WindowChange[\"status\"];\n beforeSha: string;\n afterSha: string;\n}\n/** `git diff-tree -r --no-renames -z` 原始输出:`:mode mode sha sha status NUL path NUL` 重复。 */\nfunction parseDiffTree(section: Buffer, label: string): DiffTreeEntry[] {\n const parts = section.toString(\"utf8\").split(\"\\0\");\n const entries: DiffTreeEntry[] = [];\n for (let i = 0; i < parts.length;) {\n const meta = parts[i++];\n if (!meta)\n continue;\n const path = parts[i++];\n const fields = meta.split(\" \");\n if (path === undefined || fields.length !== 5 || !fields[0]!.startsWith(\":\")) {\n throw new Error(`export window ${label}: malformed git diff-tree output`);\n }\n const code = fields[4]!;\n const status = code.startsWith(\"A\") ? \"added\" : code.startsWith(\"D\") ? \"deleted\" : \"modified\";\n entries.push({ path, status, beforeSha: fields[2]!, afterSha: fields[3]! });\n }\n return entries;\n}\n/** `git diff-tree --numstat -z`:二进制条目的 added/removed 计数是 `-`。 */\nfunction parseBinaryPaths(section: Buffer, label: string): Set<string> {\n const paths = new Set<string>();\n for (const record of section.toString(\"utf8\").split(\"\\0\")) {\n if (!record)\n continue;\n const firstTab = record.indexOf(\"\\t\");\n const secondTab = record.indexOf(\"\\t\", firstTab + 1);\n if (firstTab === -1 || secondTab === -1)\n throw new Error(`export window ${label}: malformed git --numstat output`);\n if (record.slice(0, firstTab) === \"-\" && record.slice(firstTab + 1, secondTab) === \"-\") {\n paths.add(record.slice(secondTab + 1));\n }\n }\n return paths;\n}\n/** `git cat-file --batch-check`:每行 `sha type size`(输入是逐出现次数的 sha,重复无害)。 */\nfunction parseSizes(section: Buffer, label: string): Map<string, number> {\n const sizes = new Map<string, number>();\n for (const line of section.toString(\"utf8\").split(\"\\n\")) {\n if (!line)\n continue;\n const fields = line.split(\" \");\n const size = Number(fields[fields.length - 1]);\n if (fields.length < 3 || !isNonNegativeInteger(size)) {\n throw new Error(`export window ${label}: malformed git cat-file --batch-check output`);\n }\n sizes.set(fields[0]!, size);\n }\n return sizes;\n}\n/** `git cat-file --batch`:自带长度帧——`sha type size\\n` + size 字节内容 + `\\n`。 */\nfunction parseBlobBatch(section: Buffer, label: string): Map<string, string> {\n const contents = new Map<string, string>();\n let offset = 0;\n while (offset < section.length) {\n const newline = section.indexOf(0x0a, offset);\n if (newline === -1)\n throw new Error(`export window ${label}: malformed git cat-file --batch header`);\n const fields = section.subarray(offset, newline).toString(\"utf8\").split(\" \");\n const size = Number(fields[fields.length - 1]);\n if (fields.length < 3 || !isNonNegativeInteger(size)) {\n throw new Error(`export window ${label}: malformed git cat-file --batch header`);\n }\n const contentStart = newline + 1;\n const contentEnd = contentStart + size;\n if (contentEnd >= section.length || section[contentEnd] !== 0x0a) {\n throw new Error(`export window ${label}: truncated git cat-file --batch content`);\n }\n contents.set(fields[0]!, section.subarray(contentStart, contentEnd).toString(\"utf8\"));\n offset = contentEnd + 1;\n }\n return contents;\n}\nfunction requireSize(sizes: Map<string, number>, sha: string, label: string, path: string): number {\n const size = sizes.get(sha);\n if (size === undefined || ZERO_SHA.test(sha))\n throw new Error(`export window ${label}: missing blob size for ${JSON.stringify(path)}`);\n return size;\n}\nfunction requireContent(contents: Map<string, string>, sha: string, label: string, path: string): string {\n const content = contents.get(sha);\n if (content === undefined || ZERO_SHA.test(sha))\n throw new Error(`export window ${label}: missing blob content for ${JSON.stringify(path)}`);\n return content;\n}\nfunction isNonNegativeInteger(value: unknown): value is number {\n return typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0;\n}\n"]}
|
package/dist/runner/lock.cjs
CHANGED
|
@@ -145,23 +145,36 @@ function makeAbortError(signal) {
|
|
|
145
145
|
return err;
|
|
146
146
|
}
|
|
147
147
|
function awaitAbort(signal) {
|
|
148
|
+
if (signal === undefined)
|
|
149
|
+
return effect_1.Effect.never;
|
|
148
150
|
return effect_1.Effect.async((resume, effectSignal) => {
|
|
149
|
-
|
|
150
|
-
return;
|
|
151
|
+
let completed = false;
|
|
151
152
|
const cleanup = () => {
|
|
152
153
|
signal.removeEventListener("abort", onAbort);
|
|
153
|
-
effectSignal.removeEventListener("abort",
|
|
154
|
+
effectSignal.removeEventListener("abort", onEffectAbort);
|
|
154
155
|
};
|
|
155
|
-
const
|
|
156
|
+
const cancel = () => {
|
|
157
|
+
if (completed)
|
|
158
|
+
return;
|
|
159
|
+
completed = true;
|
|
156
160
|
cleanup();
|
|
161
|
+
};
|
|
162
|
+
const onAbort = () => {
|
|
163
|
+
if (completed)
|
|
164
|
+
return;
|
|
165
|
+
cancel();
|
|
157
166
|
resume(effect_1.Effect.fail(makeAbortError(signal)));
|
|
158
167
|
};
|
|
159
|
-
|
|
160
|
-
onAbort();
|
|
161
|
-
return;
|
|
162
|
-
}
|
|
168
|
+
const onEffectAbort = () => cancel();
|
|
163
169
|
signal.addEventListener("abort", onAbort, { once: true });
|
|
164
|
-
effectSignal.addEventListener("abort",
|
|
170
|
+
effectSignal.addEventListener("abort", onEffectAbort, { once: true });
|
|
171
|
+
// Both listeners must be live before inspecting either signal: otherwise
|
|
172
|
+
// an abort between inspection and registration could strand the waiter.
|
|
173
|
+
if (effectSignal.aborted)
|
|
174
|
+
onEffectAbort();
|
|
175
|
+
else if (signal.aborted)
|
|
176
|
+
onAbort();
|
|
177
|
+
return effect_1.Effect.sync(cancel);
|
|
165
178
|
});
|
|
166
179
|
}
|
|
167
180
|
/** 可被外部 AbortSignal 或 Effect interruption 立刻打断的轮询延时。 */
|
|
@@ -186,7 +199,7 @@ function acquireCaseLockEffect(niceevalRoot, experimentId, evalId, identity, opt
|
|
|
186
199
|
const acquire = () => effect_1.Effect.suspend(() => {
|
|
187
200
|
if (opts.signal?.aborted)
|
|
188
201
|
return effect_1.Effect.fail(makeAbortError(opts.signal));
|
|
189
|
-
return tryAcquireCaseLockOnceEffect(niceevalRoot, experimentId, evalId, identity,
|
|
202
|
+
return effect_1.Clock.currentTimeMillis.pipe(effect_1.Effect.flatMap((nowMs) => tryAcquireCaseLockOnceEffect(niceevalRoot, experimentId, evalId, identity, nowMs)), effect_1.Effect.flatMap((result) => {
|
|
190
203
|
if (result.kind === "acquired")
|
|
191
204
|
return effect_1.Effect.succeed({ takenOver: result.takenOver });
|
|
192
205
|
const reportWait = waitStarted
|
|
@@ -206,7 +219,7 @@ function acquireCaseLockEffect(niceevalRoot, experimentId, evalId, identity, opt
|
|
|
206
219
|
const heartbeat = effect_1.Effect.forever(effect_1.Effect.sleep(heartbeatIntervalMs).pipe(effect_1.Effect.zipRight(
|
|
207
220
|
// File-system promises do not guarantee AbortSignal support. Keep one renewal uninterruptible so
|
|
208
221
|
// Fiber.interrupt below waits for any started write before rm can make the path reusable.
|
|
209
|
-
effect_1.Effect.
|
|
222
|
+
effect_1.Effect.uninterruptible(effect_1.Clock.currentTimeMillis.pipe(effect_1.Effect.flatMap((nowMs) => renewHeartbeatEffect(niceevalRoot, experimentId, evalId, nowMs, () => released)))).pipe(effect_1.Effect.ignore))));
|
|
210
223
|
// A child inherits the parent's interruptibility. This branch still
|
|
211
224
|
// runs under the acquisition mask, so restore the heartbeat before
|
|
212
225
|
// forking; otherwise release would wait forever while interrupting an
|