niceeval 0.13.3-canary.37 → 0.13.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/bub.cjs +4 -4
- package/dist/agents/bub.cjs.map +1 -1
- package/dist/agents/bub.d.cts +2 -2
- package/dist/agents/bub.d.mts +2 -2
- package/dist/agents/bub.d.ts +2 -2
- package/dist/agents/codex-app-server.cjs +2 -3
- package/dist/agents/codex-app-server.cjs.map +1 -1
- package/dist/agents/codex.cjs +4 -4
- package/dist/agents/codex.cjs.map +1 -1
- package/dist/agents/codex.d.cts +3 -3
- package/dist/agents/codex.d.mts +3 -3
- package/dist/agents/codex.d.ts +3 -3
- package/dist/agents/sdk-streams.cjs +11 -4
- package/dist/agents/sdk-streams.cjs.map +1 -1
- package/dist/analysis/bindings.cjs +74 -19
- package/dist/analysis/bindings.cjs.map +1 -1
- package/dist/analysis/bindings.d.cts +534 -156
- package/dist/analysis/bindings.d.mts +534 -156
- package/dist/analysis/bindings.d.ts +534 -156
- package/dist/analysis/domain-view.cjs.map +1 -1
- package/dist/analysis/domain-view.d.cts +137 -8
- package/dist/analysis/domain-view.d.mts +137 -8
- package/dist/analysis/domain-view.d.ts +137 -8
- package/dist/analysis/index.cjs.map +1 -1
- package/dist/analysis/index.d.cts +1 -1
- package/dist/analysis/index.d.mts +1 -1
- package/dist/analysis/index.d.ts +1 -1
- package/dist/assertions/api.cjs.map +1 -1
- package/dist/assertions/api.d.cts +62 -0
- package/dist/assertions/api.d.mts +62 -0
- package/dist/assertions/api.d.ts +62 -0
- package/dist/assertions/judge.cjs +56 -5
- package/dist/assertions/judge.cjs.map +1 -1
- package/dist/assertions/match.cjs +66 -42
- package/dist/assertions/match.cjs.map +1 -1
- package/dist/assertions/match.d.cts +13 -0
- package/dist/assertions/match.d.mts +13 -0
- package/dist/assertions/match.d.ts +13 -0
- package/dist/assertions/record/attachment.cjs +104 -33
- package/dist/assertions/record/attachment.cjs.map +1 -1
- package/dist/assertions/record/attachment.d.cts +294 -57
- package/dist/assertions/record/attachment.d.mts +294 -57
- package/dist/assertions/record/attachment.d.ts +294 -57
- package/dist/assertions/record/codec.cjs +91 -17
- package/dist/assertions/record/codec.cjs.map +1 -1
- package/dist/assertions/record/codec.d.cts +280 -52
- package/dist/assertions/record/codec.d.mts +280 -52
- package/dist/assertions/record/codec.d.ts +280 -52
- package/dist/assertions/record/index.js +2 -0
- package/dist/assertions/record/model.cjs +16 -0
- package/dist/assertions/record/model.cjs.map +1 -1
- package/dist/assertions/record/model.d.cts +120 -13
- package/dist/assertions/record/model.d.mts +120 -13
- package/dist/assertions/record/model.d.ts +120 -13
- package/dist/assertions/record/model.js +2 -0
- package/dist/assertions/record/producer.cjs +70 -50
- package/dist/assertions/record/producer.cjs.map +1 -1
- package/dist/assertions/record/producer.d.cts +8 -7
- package/dist/assertions/record/producer.d.mts +8 -7
- package/dist/assertions/record/producer.d.ts +8 -7
- package/dist/assertions/runtime.cjs +49 -7
- package/dist/assertions/runtime.cjs.map +1 -1
- package/dist/cli/application.cjs +40 -0
- package/dist/cli/application.cjs.map +1 -0
- package/dist/cli/application.d.cts +129 -0
- package/dist/cli/application.d.mts +129 -0
- package/dist/cli/application.d.ts +129 -0
- package/dist/cli/application.js +24 -0
- package/dist/cli/application.js.map +1 -0
- package/dist/cli/bootstrap.cjs +10 -4
- package/dist/cli/bootstrap.cjs.map +1 -1
- package/dist/cli/node-application.cjs +123 -0
- package/dist/cli/node-application.cjs.map +1 -0
- package/dist/cli/node-application.d.cts +14 -0
- package/dist/cli/node-application.d.mts +14 -0
- package/dist/cli/node-application.d.ts +14 -0
- package/dist/cli/node-application.js +26 -0
- package/dist/cli/node-application.js.map +1 -0
- package/dist/cli/program.cjs +2807 -0
- package/dist/cli/program.cjs.map +1 -0
- package/dist/cli/program.d.cts +352 -0
- package/dist/cli/program.d.mts +352 -0
- package/dist/cli/program.d.ts +352 -0
- package/dist/cli/program.js +36 -0
- package/dist/cli/program.js.map +1 -0
- package/dist/cli/project-configuration.cjs +134 -0
- package/dist/cli/project-configuration.cjs.map +1 -0
- package/dist/cli/project-configuration.d.cts +64 -0
- package/dist/cli/project-configuration.d.mts +64 -0
- package/dist/cli/project-configuration.d.ts +64 -0
- package/dist/cli/project-configuration.js +22 -0
- package/dist/cli/project-configuration.js.map +1 -0
- package/dist/cli/record.cjs +20 -4
- package/dist/cli/record.cjs.map +1 -1
- package/dist/cli/record.d.cts +3 -3
- package/dist/cli/record.d.mts +3 -3
- package/dist/cli/record.d.ts +3 -3
- package/dist/cli.cjs +19 -3130
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.d.cts +2 -148
- package/dist/cli.d.mts +2 -148
- package/dist/cli.d.ts +2 -148
- package/dist/cli.js +22 -30
- package/dist/context/assert-first.cjs +20 -15
- package/dist/context/assert-first.cjs.map +1 -1
- package/dist/eval/record/verdict.cjs +3 -2
- package/dist/eval/record/verdict.cjs.map +1 -1
- package/dist/experiment/host/index.cjs +1 -6
- package/dist/experiment/host/index.cjs.map +1 -1
- package/dist/experiment/host/index.d.cts +1 -0
- package/dist/experiment/host/index.d.mts +1 -0
- package/dist/experiment/host/index.d.ts +1 -0
- package/dist/load-config.cjs +13 -4
- package/dist/load-config.cjs.map +1 -1
- package/dist/load-config.d.cts +4 -3
- package/dist/load-config.d.mts +4 -3
- package/dist/load-config.d.ts +4 -3
- package/dist/load-config.js +4 -2
- package/dist/o11y/parsers/codex.cjs +29 -7
- package/dist/o11y/parsers/codex.cjs.map +1 -1
- package/dist/record/codec/core.d.cts +0 -2
- package/dist/record/codec/core.d.mts +0 -2
- package/dist/record/codec/core.d.ts +0 -2
- package/dist/record/codec/identifiers.cjs +2 -3
- package/dist/record/codec/identifiers.cjs.map +1 -1
- package/dist/record/codec/identifiers.d.cts +1 -2
- package/dist/record/codec/identifiers.d.mts +1 -2
- package/dist/record/codec/identifiers.d.ts +1 -2
- package/dist/record/codec/identifiers.js +10 -12
- package/dist/record/codec/index.js +42 -44
- package/dist/record/definition/attachment.cjs +1 -0
- package/dist/record/definition/attachment.cjs.map +1 -1
- package/dist/record/definition/attachment.d.cts +14 -0
- package/dist/record/definition/attachment.d.mts +14 -0
- package/dist/record/definition/attachment.d.ts +14 -0
- package/dist/record/family/assertions-v1.cjs +104 -0
- package/dist/record/family/assertions-v1.cjs.map +1 -0
- package/dist/record/family/assertions-v1.d.cts +2 -0
- package/dist/record/family/assertions-v1.d.mts +2 -0
- package/dist/record/family/assertions-v1.d.ts +2 -0
- package/dist/record/family/assertions-v1.js +6 -0
- package/dist/record/family/assertions-v1.js.map +1 -0
- package/dist/record/family/assertions.cjs +16 -5
- package/dist/record/family/assertions.cjs.map +1 -1
- package/dist/record/family/assertions.d.cts +510 -56
- package/dist/record/family/assertions.d.mts +510 -56
- package/dist/record/family/assertions.d.ts +510 -56
- package/dist/record/family/assertions.js +14 -10
- package/dist/record/family/catalog.cjs +17 -1
- package/dist/record/family/catalog.cjs.map +1 -1
- package/dist/record/family/catalog.d.cts +1292 -104
- package/dist/record/family/catalog.d.mts +1292 -104
- package/dist/record/family/catalog.d.ts +1292 -104
- package/dist/record/family/catalog.js +22 -20
- package/dist/record/family/index.js +144 -138
- package/dist/record/family/observability-v1.cjs +5 -0
- package/dist/record/family/observability-v1.cjs.map +1 -1
- package/dist/record/family/observability.cjs +1 -1
- package/dist/record/family/observability.cjs.map +1 -1
- package/dist/record/host/runtime.cjs +323 -173
- package/dist/record/host/runtime.cjs.map +1 -1
- package/dist/record/host/types.cjs.map +1 -1
- package/dist/record/host/types.d.cts +9 -7
- package/dist/record/host/types.d.mts +9 -7
- package/dist/record/host/types.d.ts +9 -7
- package/dist/record/model/core.cjs.map +1 -1
- package/dist/record/model/core.d.cts +1 -2
- package/dist/record/model/core.d.mts +1 -2
- package/dist/record/model/core.d.ts +1 -2
- package/dist/record/model/definition.cjs +1 -2
- package/dist/record/model/definition.cjs.map +1 -1
- package/dist/record/model/definition.d.cts +1 -7
- package/dist/record/model/definition.d.mts +1 -7
- package/dist/record/model/definition.d.ts +1 -7
- package/dist/record/model/identifiers.cjs +2 -3
- package/dist/record/model/identifiers.cjs.map +1 -1
- package/dist/record/model/identifiers.d.cts +1 -3
- package/dist/record/model/identifiers.d.mts +1 -3
- package/dist/record/model/identifiers.d.ts +1 -3
- package/dist/record/model/identifiers.js +36 -38
- package/dist/record/model/index.js +60 -62
- package/dist/record/platform/node.cjs +17 -7
- package/dist/record/platform/node.cjs.map +1 -1
- package/dist/record/platform/services.cjs.map +1 -1
- package/dist/record/platform/services.d.cts +8 -3
- package/dist/record/platform/services.d.mts +8 -3
- package/dist/record/platform/services.d.ts +8 -3
- package/dist/record/reader/format.cjs +16 -65
- package/dist/record/reader/format.cjs.map +1 -1
- package/dist/record/reader/format.d.cts +5 -9
- package/dist/record/reader/format.d.mts +5 -9
- package/dist/record/reader/format.d.ts +5 -9
- package/dist/record/reader/index.js +10 -8
- package/dist/record/reader/runtime.cjs +63 -32
- package/dist/record/reader/runtime.cjs.map +1 -1
- package/dist/record/reader/runtime.d.cts +40 -4
- package/dist/record/reader/runtime.d.mts +40 -4
- package/dist/record/reader/runtime.d.ts +40 -4
- package/dist/record/reader/runtime.js +6 -4
- package/dist/report/assets/enhance.js +5 -5
- package/dist/report/assets/styles.css +186 -24
- package/dist/report/built-in/result-components.cjs +8 -5
- package/dist/report/built-in/result-components.cjs.map +1 -1
- package/dist/report/built-in/standard.cjs +3 -0
- package/dist/report/built-in/standard.cjs.map +1 -1
- package/dist/report/built-in/standard.d.cts +2 -0
- package/dist/report/built-in/standard.d.mts +2 -0
- package/dist/report/built-in/standard.d.ts +2 -0
- package/dist/report/client-dist/app.js +53 -0
- package/dist/report/components/attempt-detail/compute.cjs +106 -231
- package/dist/report/components/attempt-detail/compute.cjs.map +1 -1
- package/dist/report/components/attempt-detail/compute.d.cts +9 -43
- package/dist/report/components/attempt-detail/compute.d.mts +9 -43
- package/dist/report/components/attempt-detail/compute.d.ts +9 -43
- package/dist/report/components/attempt-detail/compute.js +2 -4
- package/dist/report/components/attempt-detail/content.cjs +3 -4
- package/dist/report/components/attempt-detail/content.cjs.map +1 -1
- package/dist/report/components/attempt-detail/validate.cjs +44 -2
- package/dist/report/components/attempt-detail/validate.cjs.map +1 -1
- package/dist/report/components/entity-lists/compute.cjs +9 -15
- package/dist/report/components/entity-lists/compute.cjs.map +1 -1
- package/dist/report/components/entity-lists/content.cjs +53 -40
- package/dist/report/components/entity-lists/content.cjs.map +1 -1
- package/dist/report/components/entity-lists/index.cjs +1 -3
- package/dist/report/components/entity-lists/index.cjs.map +1 -1
- package/dist/report/components/experiment-detail/compute.cjs +4 -6
- package/dist/report/components/experiment-detail/compute.cjs.map +1 -1
- package/dist/report/definition/cell.cjs +14 -7
- package/dist/report/definition/cell.cjs.map +1 -1
- package/dist/report/definition/cell.d.cts +4 -0
- package/dist/report/definition/cell.d.mts +4 -0
- package/dist/report/definition/cell.d.ts +4 -0
- package/dist/report/definition/primitives/assertion-evidence.cjs +96 -0
- package/dist/report/definition/primitives/assertion-evidence.cjs.map +1 -0
- package/dist/report/definition/primitives/assertion-evidence.d.cts +11 -0
- package/dist/report/definition/primitives/assertion-evidence.d.mts +11 -0
- package/dist/report/definition/primitives/assertion-evidence.d.ts +11 -0
- package/dist/report/definition/primitives/assertion-evidence.js +6 -0
- package/dist/report/definition/primitives/assertion-evidence.js.map +1 -0
- package/dist/report/definition/primitives.cjs +14 -1
- package/dist/report/definition/primitives.cjs.map +1 -1
- package/dist/report/definition/report.cjs +16 -8
- package/dist/report/definition/report.cjs.map +1 -1
- package/dist/report/definition/report.d.cts +6 -0
- package/dist/report/definition/report.d.mts +6 -0
- package/dist/report/definition/report.d.ts +6 -0
- package/dist/report/definition/table-text.cjs +12 -3
- package/dist/report/definition/table-text.cjs.map +1 -1
- package/dist/report/definition/table-text.d.cts +6 -1
- package/dist/report/definition/table-text.d.mts +6 -1
- package/dist/report/definition/table-text.d.ts +6 -1
- package/dist/report/execution/model.cjs +6 -14
- package/dist/report/execution/model.cjs.map +1 -1
- package/dist/report/execution/model.d.cts +5 -10
- package/dist/report/execution/model.d.mts +5 -10
- package/dist/report/execution/model.d.ts +5 -10
- package/dist/report/execution/model.js +6 -6
- package/dist/report/execution/paths.cjs +0 -11
- package/dist/report/execution/paths.cjs.map +1 -1
- package/dist/report/execution/paths.d.cts +0 -1
- package/dist/report/execution/paths.d.mts +0 -1
- package/dist/report/execution/paths.d.ts +0 -1
- package/dist/report/execution/paths.js +6 -8
- package/dist/report/host/execute.cjs +13 -22
- package/dist/report/host/execute.cjs.map +1 -1
- package/dist/report/host/execute.d.cts +1 -4
- package/dist/report/host/execute.d.mts +1 -4
- package/dist/report/host/execute.d.ts +1 -4
- package/dist/report/host/from-record.cjs +3 -0
- package/dist/report/host/from-record.cjs.map +1 -1
- package/dist/report/host/from-record.d.cts +4 -1
- package/dist/report/host/from-record.d.mts +4 -1
- package/dist/report/host/from-record.d.ts +4 -1
- package/dist/report/host/site-assets.cjs +1 -2
- package/dist/report/host/site-assets.cjs.map +1 -1
- package/dist/report/host/site-assets.d.cts +0 -1
- package/dist/report/host/site-assets.d.mts +0 -1
- package/dist/report/host/site-assets.d.ts +0 -1
- package/dist/report/host/site-assets.js +2 -4
- package/dist/report/host/static.cjs +71 -346
- package/dist/report/host/static.cjs.map +1 -1
- package/dist/report/host/static.d.cts +1 -3
- package/dist/report/host/static.d.mts +1 -3
- package/dist/report/host/static.d.ts +1 -3
- package/dist/report/host/static.js +2 -2
- package/dist/report/host/view-session.cjs.map +1 -1
- package/dist/report/host/view-session.d.cts +1 -1
- package/dist/report/host/view-session.d.mts +1 -1
- package/dist/report/host/view-session.d.ts +1 -1
- package/dist/report/model/locale.cjs +1 -1
- package/dist/report/model/locale.cjs.map +1 -1
- package/dist/report/model/locale.d.cts +1 -1
- package/dist/report/model/locale.d.mts +1 -1
- package/dist/report/model/locale.d.ts +1 -1
- package/dist/report/model/pricing.cjs +2 -2
- package/dist/report/model/pricing.cjs.map +1 -1
- package/dist/report/react/enhance.js +5 -5
- package/dist/report/react/styles.css +186 -24
- package/dist/runner/adoption.cjs +4 -7
- package/dist/runner/adoption.cjs.map +1 -1
- package/dist/runner/feedback/failure.cjs +77 -2
- package/dist/runner/feedback/failure.cjs.map +1 -1
- package/dist/runner/feedback/failure.d.cts +2 -1
- package/dist/runner/feedback/failure.d.mts +2 -1
- package/dist/runner/feedback/failure.d.ts +2 -1
- package/dist/runner/project-current.cjs +2 -13
- package/dist/runner/project-current.cjs.map +1 -1
- package/dist/runner/project-current.d.cts +4 -2
- package/dist/runner/project-current.d.mts +4 -2
- package/dist/runner/project-current.d.ts +4 -2
- package/dist/runner/reporters/braintrust.cjs +7 -7
- package/dist/runner/reporters/braintrust.cjs.map +1 -1
- package/dist/runner/reuse-readback.cjs +3 -4
- package/dist/runner/reuse-readback.cjs.map +1 -1
- package/dist/runner/run.cjs +5 -2
- package/dist/runner/run.cjs.map +1 -1
- package/dist/view/server.cjs +2 -37
- package/dist/view/server.cjs.map +1 -1
- package/dist/view/server.d.cts +0 -3
- package/dist/view/server.d.mts +0 -3
- package/dist/view/server.d.ts +0 -3
- package/docs-site/zh/reference/builtin-agents.mdx +7 -7
- package/docs-site/zh/reference/official-adapters.mdx +4 -4
- package/docs-site/zh/reference/report-components.mdx +2 -2
- package/docs-site/zh/tutorials/configuration.mdx +2 -2
- package/docs-site/zh/tutorials/deploy-report-site.mdx +24 -2
- package/docs-site/zh/tutorials/publish-report.mdx +4 -4
- package/docs-site/zh/tutorials/sandbox-agent.mdx +5 -5
- package/docs-site/zh/tutorials/theming.mdx +2 -2
- package/package.json +4 -6
- package/dist/record/migration/index.cjs +0 -5
- package/dist/record/migration/index.cjs.map +0 -1
- package/dist/record/migration/index.d.cts +0 -11
- package/dist/record/migration/index.d.mts +0 -11
- package/dist/record/migration/index.d.ts +0 -11
- package/dist/record/migration/index.js +0 -6
- package/dist/record/migration/index.js.map +0 -1
- package/dist/report/host/site-runtime.cjs +0 -92
- package/dist/report/host/site-runtime.cjs.map +0 -1
- package/dist/report/host/site-runtime.d.cts +0 -9
- package/dist/report/host/site-runtime.d.mts +0 -9
- package/dist/report/host/site-runtime.d.ts +0 -9
- package/dist/report/host/site-runtime.js +0 -10
- package/dist/report/host/site-runtime.js.map +0 -1
- package/dist/view/client-dist/app.css +0 -2
- package/dist/view/client-dist/app.js +0 -49
- package/dist/view/data.cjs +0 -3
- package/dist/view/data.cjs.map +0 -1
- package/dist/view/data.d.cts +0 -9
- package/dist/view/data.d.mts +0 -9
- package/dist/view/data.d.ts +0 -9
- package/dist/view/data.js +0 -4
- package/dist/view/data.js.map +0 -1
- package/dist/view/index.cjs +0 -24
- package/dist/view/index.cjs.map +0 -1
- package/dist/view/index.d.cts +0 -9
- package/dist/view/index.d.mts +0 -9
- package/dist/view/index.d.ts +0 -9
- package/dist/view/index.js +0 -28
- package/dist/view/index.js.map +0 -1
- package/dist/view/report-view-cache.cjs +0 -200
- package/dist/view/report-view-cache.cjs.map +0 -1
- package/dist/view/report-view-cache.d.cts +0 -67
- package/dist/view/report-view-cache.d.mts +0 -67
- package/dist/view/report-view-cache.d.ts +0 -67
- package/dist/view/report-view-cache.js +0 -8
- package/dist/view/report-view-cache.js.map +0 -1
- package/dist/view/shared/types.cjs +0 -3
- package/dist/view/shared/types.cjs.map +0 -1
- package/dist/view/shared/types.d.cts +0 -51
- package/dist/view/shared/types.d.mts +0 -51
- package/dist/view/shared/types.d.ts +0 -51
- package/dist/view/shared/types.js +0 -4
- package/dist/view/shared/types.js.map +0 -1
- package/dist/view/site.cjs +0 -32
- package/dist/view/site.cjs.map +0 -1
- package/dist/view/site.d.cts +0 -24
- package/dist/view/site.d.mts +0 -24
- package/dist/view/site.d.ts +0 -24
- package/dist/view/site.js +0 -8
- package/dist/view/site.js.map +0 -1
- package/dist/view/styles.css +0 -170
- package/dist/view/template.html +0 -17
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
const __niceevalDynamicImport = (specifier) => import(specifier);
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.assertionsRecordAttachment = exports.AssertionsAttachmentSchema = exports.AssertionSourceSitesSchema = exports.AssertionsEntriesSchema = exports.AssertionSourceSiteSchema = void 0;
|
|
4
|
+
exports.assertionsRecordAttachment = exports.AssertionsAttachmentV1Schema = exports.AssertionsAttachmentSchema = exports.AssertionSourceSitesSchema = exports.AssertionsEntriesV1Schema = exports.AssertionsEntriesSchema = exports.AssertionSourceSiteSchema = void 0;
|
|
4
5
|
exports.assertionsBlobRefs = assertionsBlobRefs;
|
|
5
6
|
exports.assertionsAttachmentIntegrityIssues = assertionsAttachmentIntegrityIssues;
|
|
6
7
|
exports.assertionsSourceSiteIntegrityIssues = assertionsSourceSiteIntegrityIssues;
|
|
@@ -34,10 +35,11 @@ exports.AssertionSourceSiteSchema = effect_1.Schema.Struct({
|
|
|
34
35
|
const assertionSchemas = (0, codec_ts_1.createAssertionsRecordSchemas)(blob_ref_ts_1.RecordBlobRefSchema);
|
|
35
36
|
/** Reuse the existing v1 entry schema inside the one direct attachment schema. */
|
|
36
37
|
exports.AssertionsEntriesSchema = assertionSchemas.entries;
|
|
38
|
+
exports.AssertionsEntriesV1Schema = assertionSchemas.historicalEntries;
|
|
37
39
|
exports.AssertionSourceSitesSchema = effect_1.Schema.Array(exports.AssertionSourceSiteSchema);
|
|
38
40
|
function hasNoLegacyAttachmentMaterial(document) {
|
|
39
41
|
const materialIsAllowed = (material) => material.kind !== "record-attachment";
|
|
40
|
-
return document.entries.every((entry) => materialIsAllowed(entry.
|
|
42
|
+
return document.entries.every((entry) => materialIsAllowed(entry.materials.source) && entry.materials.evidence.every(materialIsAllowed));
|
|
41
43
|
}
|
|
42
44
|
function hasCanonicalSourceSites(payload) {
|
|
43
45
|
const entryIds = new Set(payload.entries.map((entry) => entry.entryId));
|
|
@@ -94,6 +96,11 @@ exports.AssertionsAttachmentSchema = effect_1.Schema.Struct({
|
|
|
94
96
|
identifier: "AssertionsSourceSites",
|
|
95
97
|
description: "source sites join local entries with unique canonical source order",
|
|
96
98
|
}));
|
|
99
|
+
/** @internal Package-private historical wire codec, loaded only by maintenance. */
|
|
100
|
+
exports.AssertionsAttachmentV1Schema = effect_1.Schema.Struct({
|
|
101
|
+
entries: effect_1.Schema.propertySignature(exports.AssertionsEntriesV1Schema).pipe(effect_1.Schema.fromKey("entries-data")),
|
|
102
|
+
sourceSites: effect_1.Schema.propertySignature(exports.AssertionSourceSitesSchema).pipe(effect_1.Schema.fromKey("source-sites-data")),
|
|
103
|
+
});
|
|
97
104
|
/** Complete closure projection for `niceeval.assertions`. */
|
|
98
105
|
function assertionsBlobRefs(payload) {
|
|
99
106
|
return (0, attachment_ts_1.assertionBlobRefs)(payload);
|
|
@@ -121,8 +128,8 @@ function assertionsAttachmentIntegrityIssues(payload, blobs) {
|
|
|
121
128
|
}
|
|
122
129
|
};
|
|
123
130
|
for (const [index, entry] of payload.entries.entries()) {
|
|
124
|
-
validateMaterial(entry.
|
|
125
|
-
for (const [evidenceIndex, material] of entry.evidence.entries()) {
|
|
131
|
+
validateMaterial(entry.materials.source, ["entries", String(index), "materials", "source"]);
|
|
132
|
+
for (const [evidenceIndex, material] of entry.materials.evidence.entries()) {
|
|
126
133
|
validateMaterial(material, ["entries", String(index), "evidence", String(evidenceIndex)]);
|
|
127
134
|
}
|
|
128
135
|
}
|
|
@@ -155,7 +162,7 @@ const AssertionsBlobBudget = Object.freeze({
|
|
|
155
162
|
exports.assertionsRecordAttachment = (0, index_ts_1.defineRecordAttachment)({
|
|
156
163
|
family: "niceeval.assertions",
|
|
157
164
|
current: {
|
|
158
|
-
schemaVersion:
|
|
165
|
+
schemaVersion: 2,
|
|
159
166
|
owners: {
|
|
160
167
|
attempt: {
|
|
161
168
|
schema: exports.AssertionsAttachmentSchema,
|
|
@@ -168,5 +175,9 @@ exports.assertionsRecordAttachment = (0, index_ts_1.defineRecordAttachment)({
|
|
|
168
175
|
},
|
|
169
176
|
},
|
|
170
177
|
},
|
|
178
|
+
maintenance: () => __niceevalDynamicImport("./assertions-v1.cjs").then(({ assertionsV1Maintenance }) => assertionsV1Maintenance),
|
|
179
|
+
adjacentMigrationLinks: Object.freeze([
|
|
180
|
+
Object.freeze({ fromSchemaVersion: 1, toSchemaVersion: 2, rewritePayload: true }),
|
|
181
|
+
]),
|
|
171
182
|
});
|
|
172
183
|
//# sourceMappingURL=assertions.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assertions.js","sourceRoot":"","sources":["assertions.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport { Schema } from \"effect\";\nimport { assertionBlobRefs } from \"../../assertions/record/attachment.ts\";\nimport { AssertionEntryIdSchema, MAX_ASSERTION_DOCUMENT_BYTES, createAssertionsRecordSchemas, } from \"../../assertions/record/codec.ts\";\nimport { RecordBlobRefSchema, type RecordBlobRef, } from \"../attachment/blob-ref.ts\";\nimport { recordAttachmentIssue, type RecordAttachmentIssue } from \"../attachment/errors.ts\";\nimport { defineRecordAttachment } from \"../definition/index.ts\";\nimport { Sha256DigestSchema, SourceItemIdSchema, } from \"../codec/identifiers.ts\";\nimport { FixedAttachmentValueLimits, PositiveSafeIntegerSchema, } from \"./common.ts\";\nimport type { SourcesAttachment } from \"./sources.ts\";\nconst AssertionSourceRoleSchema = Schema.Literal(\"declaration\", \"threshold\", \"score\", \"gate\", \"optional\", \"stop\");\nconst AssertionSourcePositionSchema = Schema.Struct({\n line: PositiveSafeIntegerSchema,\n column: PositiveSafeIntegerSchema,\n});\n/**\n * A source site is a semantic join only. It names an item in the exact origin\n * Run Sources payload and never gains that payload's blob capability.\n */\nexport const AssertionSourceSiteSchema = Schema.Struct({\n entryId: AssertionEntryIdSchema,\n sourceOrder: PositiveSafeIntegerSchema,\n role: AssertionSourceRoleSchema,\n sourceItemId: SourceItemIdSchema,\n sha256: Sha256DigestSchema,\n start: AssertionSourcePositionSchema,\n end: AssertionSourcePositionSchema,\n});\nexport type AssertionSourceSite = Schema.Schema.Type<typeof AssertionSourceSiteSchema>;\nconst assertionSchemas = createAssertionsRecordSchemas(RecordBlobRefSchema);\n/** Reuse the existing v1 entry schema inside the one direct attachment schema. */\nexport const AssertionsEntriesSchema = assertionSchemas.entries;\nexport const AssertionSourceSitesSchema = Schema.Array(AssertionSourceSiteSchema);\nfunction hasNoLegacyAttachmentMaterial(document: {\n readonly entries: readonly {\n readonly subject: {\n readonly kind: string;\n };\n readonly evidence: readonly {\n readonly kind: string;\n }[];\n }[];\n}): boolean {\n const materialIsAllowed = (material: {\n readonly kind: string;\n }): boolean => material.kind !== \"record-attachment\";\n return document.entries.every((entry) => materialIsAllowed(entry.subject) && entry.evidence.every(materialIsAllowed));\n}\nfunction hasCanonicalSourceSites(payload: {\n readonly entries: readonly {\n readonly entryId: string;\n }[];\n readonly sourceSites: readonly AssertionSourceSite[];\n}): boolean {\n const entryIds = new Set(payload.entries.map((entry) => entry.entryId));\n const seenOrders = new Set<number>();\n let previous: string | undefined;\n for (const site of payload.sourceSites) {\n if (!entryIds.has(site.entryId) || seenOrders.has(site.sourceOrder))\n return false;\n seenOrders.add(site.sourceOrder);\n const key = `${site.entryId}\\u0000${site.sourceOrder.toString().padStart(16, \"0\")}`;\n if (previous !== undefined && previous >= key)\n return false;\n previous = key;\n }\n return true;\n}\nfunction hasUniqueAssertionEntryIds(document: {\n readonly entries: readonly {\n readonly entryId: string;\n }[];\n}): boolean {\n const entryIds = new Set<string>();\n for (const entry of document.entries) {\n if (entryIds.has(entry.entryId))\n return false;\n entryIds.add(entry.entryId);\n }\n return true;\n}\nfunction isAssertionsDocumentWithinSizeLimit(value: unknown): boolean {\n try {\n const serialized = JSON.stringify(value);\n return typeof serialized === \"string\" &&\n new TextEncoder().encode(serialized).byteLength <= MAX_ASSERTION_DOCUMENT_BYTES;\n }\n catch {\n return false;\n }\n}\n/**\n * `sourceSites` is embedded in the fixed Assertions payload. The former\n * `niceeval.assertion-source-sites/v1` family is not part of Record v1.\n */\n/** One direct current schema: Type fields and durable keys share all v1 filters. */\nexport const AssertionsAttachmentSchema = Schema.Struct({\n entries: Schema.propertySignature(AssertionsEntriesSchema).pipe(Schema.fromKey(\"entries-data\")),\n sourceSites: Schema.propertySignature(AssertionSourceSitesSchema).pipe(Schema.fromKey(\"source-sites-data\")),\n}).pipe(Schema.filter(hasUniqueAssertionEntryIds, {\n identifier: \"AssertionsUniqueEntryIds\",\n description: \"unique attachment-local assertion entry IDs\",\n}), Schema.filter(isAssertionsDocumentWithinSizeLimit, {\n identifier: \"AssertionsDocumentSize\",\n description: \"a JSON document no larger than 4 MiB\",\n}), Schema.filter(hasNoLegacyAttachmentMaterial, {\n identifier: \"AssertionsNoLegacyAttachmentMaterial\",\n description: \"Assertions do not reference retired attachment families\",\n}), Schema.filter(hasCanonicalSourceSites, {\n identifier: \"AssertionsSourceSites\",\n description: \"source sites join local entries with unique canonical source order\",\n}));\nexport type AssertionsAttachment = Schema.Schema.Type<typeof AssertionsAttachmentSchema>;\n/** Complete closure projection for `niceeval.assertions`. */\nexport function assertionsBlobRefs(payload: AssertionsAttachment): readonly RecordBlobRef[] {\n return assertionBlobRefs(payload);\n}\n/** Binds every Assertions blob declaration to its exact materialized bytes. */\nexport function assertionsAttachmentIntegrityIssues(payload: AssertionsAttachment, blobs: readonly {\n readonly ref: RecordBlobRef;\n readonly bytes: Uint8Array;\n}[]): readonly RecordAttachmentIssue[] {\n const bytesByRef = new Map<RecordBlobRef, Uint8Array>(blobs.map((blob) => [blob.ref, blob.bytes] as const));\n const issues: RecordAttachmentIssue[] = [];\n const validateMaterial = (material: AssertionsAttachment[\"entries\"][number][\"subject\"], path: readonly string[]) => {\n if (material.kind !== \"blob\")\n return;\n const bytes = bytesByRef.get(material.ref);\n if (bytes === undefined || bytes.byteLength !== material.byteLength) {\n issues.push(recordAttachmentIssue(\"record-attachment-materialized-invalid\", [\n ...path,\n bytes === undefined ? \"ref\" : \"byteLength\",\n ]));\n return;\n }\n if (createHash(\"sha256\").update(bytes).digest(\"hex\") !== material.sha256) {\n issues.push(recordAttachmentIssue(\"record-attachment-materialized-invalid\", [\n ...path,\n \"sha256\",\n ]));\n }\n };\n for (const [index, entry] of payload.entries.entries()) {\n validateMaterial(entry.subject, [\"entries\", String(index), \"subject\"]);\n for (const [evidenceIndex, material] of entry.evidence.entries()) {\n validateMaterial(material, [\"entries\", String(index), \"evidence\", String(evidenceIndex)]);\n }\n }\n return Object.freeze(issues);\n}\n/**\n * Host-only semantic join to the exact origin Sources manifest. The row owns\n * neither source bytes nor a blob capability, so this check deliberately\n * compares only the explicit item identity, digest, and stored coordinates.\n */\nexport function assertionsSourceSiteIntegrityIssues(payload: AssertionsAttachment, sources: SourcesAttachment): readonly RecordAttachmentIssue[] {\n const sourceById = new Map(sources.items.map((item) => [item.sourceItemId, item] as const));\n const issues: RecordAttachmentIssue[] = [];\n for (const [index, site] of payload.sourceSites.entries()) {\n const source = sourceById.get(site.sourceItemId);\n const startsAfterEnd = site.start.line > site.end.line ||\n (site.start.line === site.end.line && site.start.column > site.end.column);\n if (source === undefined || source.sha256 !== site.sha256 || startsAfterEnd) {\n issues.push(recordAttachmentIssue(\"record-attachment-materialized-invalid\", [\"sourceSites\", String(index)]));\n }\n }\n return Object.freeze(issues);\n}\nconst AssertionsBlobBudget = Object.freeze({\n maximumBlobs: 20000,\n maximumBlobBytes: 16 * 1024 * 1024,\n maximumTotalBytes: 64 * 1024 * 1024,\n});\n/** The sole current declaration for the Attempt-owned Assertions family. */\nexport const assertionsRecordAttachment = defineRecordAttachment({\n family: \"niceeval.assertions\",\n current: {\n schemaVersion: 1,\n owners: {\n attempt: {\n schema: AssertionsAttachmentSchema,\n limits: FixedAttachmentValueLimits,\n blobs: {\n refs: assertionsBlobRefs,\n budget: AssertionsBlobBudget,\n verify: assertionsAttachmentIntegrityIssues,\n },\n },\n },\n },\n});\n"]}
|
|
1
|
+
{"version":3,"file":"assertions.js","sourceRoot":"","sources":["assertions.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport { Schema } from \"effect\";\nimport { assertionBlobRefs } from \"../../assertions/record/attachment.ts\";\nimport { AssertionEntryIdSchema, MAX_ASSERTION_DOCUMENT_BYTES, createAssertionsRecordSchemas, } from \"../../assertions/record/codec.ts\";\nimport { RecordBlobRefSchema, type RecordBlobRef, } from \"../attachment/blob-ref.ts\";\nimport { recordAttachmentIssue, type RecordAttachmentIssue } from \"../attachment/errors.ts\";\nimport { defineRecordAttachment } from \"../definition/index.ts\";\nimport { Sha256DigestSchema, SourceItemIdSchema, } from \"../codec/identifiers.ts\";\nimport { FixedAttachmentValueLimits, PositiveSafeIntegerSchema, } from \"./common.ts\";\nimport type { SourcesAttachment } from \"./sources.ts\";\nconst AssertionSourceRoleSchema = Schema.Literal(\"declaration\", \"threshold\", \"score\", \"gate\", \"optional\", \"stop\");\nconst AssertionSourcePositionSchema = Schema.Struct({\n line: PositiveSafeIntegerSchema,\n column: PositiveSafeIntegerSchema,\n});\n/**\n * A source site is a semantic join only. It names an item in the exact origin\n * Run Sources payload and never gains that payload's blob capability.\n */\nexport const AssertionSourceSiteSchema = Schema.Struct({\n entryId: AssertionEntryIdSchema,\n sourceOrder: PositiveSafeIntegerSchema,\n role: AssertionSourceRoleSchema,\n sourceItemId: SourceItemIdSchema,\n sha256: Sha256DigestSchema,\n start: AssertionSourcePositionSchema,\n end: AssertionSourcePositionSchema,\n});\nexport type AssertionSourceSite = Schema.Schema.Type<typeof AssertionSourceSiteSchema>;\nconst assertionSchemas = createAssertionsRecordSchemas(RecordBlobRefSchema);\n/** Reuse the existing v1 entry schema inside the one direct attachment schema. */\nexport const AssertionsEntriesSchema = assertionSchemas.entries;\nexport const AssertionsEntriesV1Schema = assertionSchemas.historicalEntries;\nexport const AssertionSourceSitesSchema = Schema.Array(AssertionSourceSiteSchema);\nfunction hasNoLegacyAttachmentMaterial(document: {\n readonly entries: readonly {\n readonly materials: {\n readonly source: {\n readonly kind: string;\n };\n readonly evidence: readonly {\n readonly kind: string;\n }[];\n };\n }[];\n}): boolean {\n const materialIsAllowed = (material: {\n readonly kind: string;\n }): boolean => material.kind !== \"record-attachment\";\n return document.entries.every((entry) => materialIsAllowed(entry.materials.source) && entry.materials.evidence.every(materialIsAllowed));\n}\nfunction hasCanonicalSourceSites(payload: {\n readonly entries: readonly {\n readonly entryId: string;\n }[];\n readonly sourceSites: readonly AssertionSourceSite[];\n}): boolean {\n const entryIds = new Set(payload.entries.map((entry) => entry.entryId));\n const seenOrders = new Set<number>();\n let previous: string | undefined;\n for (const site of payload.sourceSites) {\n if (!entryIds.has(site.entryId) || seenOrders.has(site.sourceOrder))\n return false;\n seenOrders.add(site.sourceOrder);\n const key = `${site.entryId}\\u0000${site.sourceOrder.toString().padStart(16, \"0\")}`;\n if (previous !== undefined && previous >= key)\n return false;\n previous = key;\n }\n return true;\n}\nfunction hasUniqueAssertionEntryIds(document: {\n readonly entries: readonly {\n readonly entryId: string;\n }[];\n}): boolean {\n const entryIds = new Set<string>();\n for (const entry of document.entries) {\n if (entryIds.has(entry.entryId))\n return false;\n entryIds.add(entry.entryId);\n }\n return true;\n}\nfunction isAssertionsDocumentWithinSizeLimit(value: unknown): boolean {\n try {\n const serialized = JSON.stringify(value);\n return typeof serialized === \"string\" &&\n new TextEncoder().encode(serialized).byteLength <= MAX_ASSERTION_DOCUMENT_BYTES;\n }\n catch {\n return false;\n }\n}\n/**\n * `sourceSites` is embedded in the fixed Assertions payload. The former\n * `niceeval.assertion-source-sites/v1` family is not part of Record v1.\n */\n/** One direct current schema: Type fields and durable keys share all v1 filters. */\nexport const AssertionsAttachmentSchema = Schema.Struct({\n entries: Schema.propertySignature(AssertionsEntriesSchema).pipe(Schema.fromKey(\"entries-data\")),\n sourceSites: Schema.propertySignature(AssertionSourceSitesSchema).pipe(Schema.fromKey(\"source-sites-data\")),\n}).pipe(Schema.filter(hasUniqueAssertionEntryIds, {\n identifier: \"AssertionsUniqueEntryIds\",\n description: \"unique attachment-local assertion entry IDs\",\n}), Schema.filter(isAssertionsDocumentWithinSizeLimit, {\n identifier: \"AssertionsDocumentSize\",\n description: \"a JSON document no larger than 4 MiB\",\n}), Schema.filter(hasNoLegacyAttachmentMaterial, {\n identifier: \"AssertionsNoLegacyAttachmentMaterial\",\n description: \"Assertions do not reference retired attachment families\",\n}), Schema.filter(hasCanonicalSourceSites, {\n identifier: \"AssertionsSourceSites\",\n description: \"source sites join local entries with unique canonical source order\",\n}));\n/** @internal Package-private historical wire codec, loaded only by maintenance. */\nexport const AssertionsAttachmentV1Schema = Schema.Struct({\n entries: Schema.propertySignature(AssertionsEntriesV1Schema).pipe(Schema.fromKey(\"entries-data\")),\n sourceSites: Schema.propertySignature(AssertionSourceSitesSchema).pipe(Schema.fromKey(\"source-sites-data\")),\n});\nexport type AssertionsAttachment = Schema.Schema.Type<typeof AssertionsAttachmentSchema>;\n/** Complete closure projection for `niceeval.assertions`. */\nexport function assertionsBlobRefs(payload: AssertionsAttachment): readonly RecordBlobRef[] {\n return assertionBlobRefs(payload);\n}\n/** Binds every Assertions blob declaration to its exact materialized bytes. */\nexport function assertionsAttachmentIntegrityIssues(payload: AssertionsAttachment, blobs: readonly {\n readonly ref: RecordBlobRef;\n readonly bytes: Uint8Array;\n}[]): readonly RecordAttachmentIssue[] {\n const bytesByRef = new Map<RecordBlobRef, Uint8Array>(blobs.map((blob) => [blob.ref, blob.bytes] as const));\n const issues: RecordAttachmentIssue[] = [];\n const validateMaterial = (material: AssertionsAttachment[\"entries\"][number][\"materials\"][\"source\"], path: readonly string[]) => {\n if (material.kind !== \"blob\")\n return;\n const bytes = bytesByRef.get(material.ref);\n if (bytes === undefined || bytes.byteLength !== material.byteLength) {\n issues.push(recordAttachmentIssue(\"record-attachment-materialized-invalid\", [\n ...path,\n bytes === undefined ? \"ref\" : \"byteLength\",\n ]));\n return;\n }\n if (createHash(\"sha256\").update(bytes).digest(\"hex\") !== material.sha256) {\n issues.push(recordAttachmentIssue(\"record-attachment-materialized-invalid\", [\n ...path,\n \"sha256\",\n ]));\n }\n };\n for (const [index, entry] of payload.entries.entries()) {\n validateMaterial(entry.materials.source, [\"entries\", String(index), \"materials\", \"source\"]);\n for (const [evidenceIndex, material] of entry.materials.evidence.entries()) {\n validateMaterial(material, [\"entries\", String(index), \"evidence\", String(evidenceIndex)]);\n }\n }\n return Object.freeze(issues);\n}\n/**\n * Host-only semantic join to the exact origin Sources manifest. The row owns\n * neither source bytes nor a blob capability, so this check deliberately\n * compares only the explicit item identity, digest, and stored coordinates.\n */\nexport function assertionsSourceSiteIntegrityIssues(payload: AssertionsAttachment, sources: SourcesAttachment): readonly RecordAttachmentIssue[] {\n const sourceById = new Map(sources.items.map((item) => [item.sourceItemId, item] as const));\n const issues: RecordAttachmentIssue[] = [];\n for (const [index, site] of payload.sourceSites.entries()) {\n const source = sourceById.get(site.sourceItemId);\n const startsAfterEnd = site.start.line > site.end.line ||\n (site.start.line === site.end.line && site.start.column > site.end.column);\n if (source === undefined || source.sha256 !== site.sha256 || startsAfterEnd) {\n issues.push(recordAttachmentIssue(\"record-attachment-materialized-invalid\", [\"sourceSites\", String(index)]));\n }\n }\n return Object.freeze(issues);\n}\nconst AssertionsBlobBudget = Object.freeze({\n maximumBlobs: 20000,\n maximumBlobBytes: 16 * 1024 * 1024,\n maximumTotalBytes: 64 * 1024 * 1024,\n});\n/** The sole current declaration for the Attempt-owned Assertions family. */\nexport const assertionsRecordAttachment = defineRecordAttachment({\n family: \"niceeval.assertions\",\n current: {\n schemaVersion: 2,\n owners: {\n attempt: {\n schema: AssertionsAttachmentSchema,\n limits: FixedAttachmentValueLimits,\n blobs: {\n refs: assertionsBlobRefs,\n budget: AssertionsBlobBudget,\n verify: assertionsAttachmentIntegrityIssues,\n },\n },\n },\n },\n maintenance: () => __niceevalDynamicImport(\"./assertions-v1.cjs\").then(({ assertionsV1Maintenance }) => assertionsV1Maintenance),\n adjacentMigrationLinks: Object.freeze([\n Object.freeze({ fromSchemaVersion: 1, toSchemaVersion: 2, rewritePayload: true }),\n ]),\n});\n"]}
|