niceeval 0.13.3 → 0.13.4-canary.39
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 +5 -5
- package/dist/agents/index.cjs +2 -2
- package/dist/agents/index.cjs.map +1 -1
- package/dist/agents/project.json +6 -0
- package/dist/agents/streaming.cjs.map +1 -1
- package/dist/agents/types.cjs.map +1 -1
- package/dist/agents/types.d.cts +1 -1
- package/dist/agents/types.d.mts +1 -1
- package/dist/agents/types.d.ts +1 -1
- package/dist/analysis/bindings.d.cts +8 -8
- package/dist/analysis/bindings.d.mts +8 -8
- package/dist/analysis/bindings.d.ts +8 -8
- package/dist/analysis/contracts.cjs.map +1 -1
- package/dist/analysis/contracts.d.cts +8 -19
- package/dist/analysis/contracts.d.mts +8 -19
- package/dist/analysis/contracts.d.ts +8 -19
- package/dist/analysis/experiment-groups.cjs +7 -14
- package/dist/analysis/experiment-groups.cjs.map +1 -1
- 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/cli/application.cjs +4 -13
- package/dist/cli/application.cjs.map +1 -1
- package/dist/cli/application.d.cts +62 -59
- package/dist/cli/application.d.mts +62 -59
- package/dist/cli/application.d.ts +62 -59
- package/dist/cli/application.js +6 -12
- package/dist/cli/bootstrap.cjs +28 -2
- package/dist/cli/bootstrap.cjs.map +1 -1
- package/dist/cli/contribution.cjs +185 -0
- package/dist/cli/contribution.cjs.map +1 -0
- package/dist/cli/contribution.d.cts +55 -0
- package/dist/cli/contribution.d.mts +55 -0
- package/dist/cli/contribution.d.ts +55 -0
- package/dist/cli/contribution.js +20 -0
- package/dist/cli/contribution.js.map +1 -0
- package/dist/cli/node-application.cjs +119 -87
- package/dist/cli/node-application.cjs.map +1 -1
- package/dist/cli/node-application.d.cts +2 -8
- package/dist/cli/node-application.d.mts +2 -8
- package/dist/cli/node-application.d.ts +2 -8
- package/dist/cli/node-application.js +12 -22
- package/dist/cli/program.cjs +87 -2756
- package/dist/cli/program.cjs.map +1 -1
- package/dist/cli/program.d.cts +11 -332
- package/dist/cli/program.d.mts +11 -332
- package/dist/cli/program.d.ts +11 -332
- package/dist/cli/program.js +4 -28
- package/dist/cli.cjs +0 -3
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.d.cts +0 -1
- package/dist/cli.d.mts +0 -1
- package/dist/cli.d.ts +0 -1
- package/dist/cli.js +6 -14
- package/dist/define.cjs +1 -1
- package/dist/define.cjs.map +1 -1
- package/dist/docker/cache-administration.cjs +8 -0
- package/dist/docker/cache-administration.cjs.map +1 -0
- package/dist/docker/cache-administration.d.cts +33 -0
- package/dist/docker/cache-administration.d.mts +33 -0
- package/dist/docker/cache-administration.d.ts +33 -0
- package/dist/docker/cache-administration.js +6 -0
- package/dist/docker/cache-administration.js.map +1 -0
- package/dist/docker/cache-live.cjs +27 -0
- package/dist/docker/cache-live.cjs.map +1 -0
- package/dist/docker/cache-live.d.cts +3 -0
- package/dist/docker/cache-live.d.mts +3 -0
- package/dist/docker/cache-live.d.ts +3 -0
- package/dist/docker/cache-live.js +6 -0
- package/dist/docker/cache-live.js.map +1 -0
- package/dist/docker/cli/contribution.cjs +223 -0
- package/dist/docker/cli/contribution.cjs.map +1 -0
- package/dist/docker/cli/contribution.d.cts +48 -0
- package/dist/docker/cli/contribution.d.mts +48 -0
- package/dist/docker/cli/contribution.d.ts +48 -0
- package/dist/docker/cli/contribution.js +8 -0
- package/dist/docker/cli/contribution.js.map +1 -0
- package/dist/eval/cli/contribution.cjs +62 -0
- package/dist/eval/cli/contribution.cjs.map +1 -0
- package/dist/eval/cli/contribution.d.cts +21 -0
- package/dist/eval/cli/contribution.d.mts +21 -0
- package/dist/eval/cli/contribution.d.ts +21 -0
- package/dist/eval/cli/contribution.js +8 -0
- package/dist/eval/cli/contribution.js.map +1 -0
- package/dist/eval/host/index.cjs +23 -0
- package/dist/eval/host/index.cjs.map +1 -0
- package/dist/eval/host/index.d.cts +27 -0
- package/dist/eval/host/index.d.mts +27 -0
- package/dist/eval/host/index.d.ts +27 -0
- package/dist/eval/host/index.js +8 -0
- package/dist/eval/host/index.js.map +1 -0
- package/dist/eval/host/index.mjs +8 -0
- package/dist/eval/host/index.mjs.map +1 -0
- package/dist/experiment/host/cli/contribution.cjs +835 -0
- package/dist/experiment/host/cli/contribution.cjs.map +1 -0
- package/dist/experiment/host/cli/contribution.d.cts +329 -0
- package/dist/experiment/host/cli/contribution.d.mts +329 -0
- package/dist/experiment/host/cli/contribution.d.ts +329 -0
- package/dist/experiment/host/cli/contribution.js +22 -0
- package/dist/experiment/host/cli/contribution.js.map +1 -0
- package/dist/experiment/host/cli/index.cjs +9 -0
- package/dist/experiment/host/cli/index.cjs.map +1 -0
- package/dist/experiment/host/cli/index.d.cts +2 -0
- package/dist/experiment/host/cli/index.d.mts +2 -0
- package/dist/experiment/host/cli/index.d.ts +2 -0
- package/dist/experiment/host/cli/index.js +10 -0
- package/dist/experiment/host/cli/index.js.map +1 -0
- package/dist/experiment/host/cli/terminal.cjs +15 -0
- package/dist/experiment/host/cli/terminal.cjs.map +1 -0
- package/dist/experiment/host/cli/terminal.d.cts +14 -0
- package/dist/experiment/host/cli/terminal.d.mts +14 -0
- package/dist/experiment/host/cli/terminal.d.ts +14 -0
- package/dist/experiment/host/cli/terminal.js +8 -0
- package/dist/experiment/host/cli/terminal.js.map +1 -0
- package/dist/experiment/host/index.cjs +35 -58
- package/dist/experiment/host/index.cjs.map +1 -1
- package/dist/experiment/host/index.d.cts +5 -79
- package/dist/experiment/host/index.d.mts +5 -79
- package/dist/experiment/host/index.d.ts +5 -79
- package/dist/experiment/host/index.js +4 -2
- package/dist/experiment/host/index.mjs +4 -2
- package/dist/experiment/host/operations.cjs +678 -0
- package/dist/experiment/host/operations.cjs.map +1 -0
- package/dist/experiment/host/operations.d.cts +19 -0
- package/dist/experiment/host/operations.d.mts +19 -0
- package/dist/experiment/host/operations.d.ts +19 -0
- package/dist/experiment/host/operations.js +24 -0
- package/dist/experiment/host/operations.js.map +1 -0
- package/dist/experiment/host/presentation.cjs +81 -0
- package/dist/experiment/host/presentation.cjs.map +1 -0
- package/dist/experiment/host/presentation.d.cts +9 -0
- package/dist/experiment/host/presentation.d.mts +9 -0
- package/dist/experiment/host/presentation.d.ts +9 -0
- package/dist/experiment/host/presentation.js +8 -0
- package/dist/experiment/host/presentation.js.map +1 -0
- package/dist/experiment/host/teardown.cjs +394 -0
- package/dist/experiment/host/teardown.cjs.map +1 -0
- package/dist/experiment/host/teardown.d.cts +5 -0
- package/dist/experiment/host/teardown.d.mts +5 -0
- package/dist/experiment/host/teardown.d.ts +5 -0
- package/dist/experiment/host/teardown.js +8 -0
- package/dist/experiment/host/teardown.js.map +1 -0
- package/dist/experiment/host/types.cjs +9 -0
- package/dist/experiment/host/types.cjs.map +1 -0
- package/dist/experiment/host/types.d.cts +423 -0
- package/dist/experiment/host/types.d.mts +423 -0
- package/dist/experiment/host/types.d.ts +423 -0
- package/dist/experiment/host/types.js +6 -0
- package/dist/experiment/host/types.js.map +1 -0
- package/dist/i18n/en.cjs +8 -50
- package/dist/i18n/en.cjs.map +1 -1
- package/dist/i18n/en.d.cts +2 -6
- package/dist/i18n/en.d.mts +2 -6
- package/dist/i18n/en.d.ts +2 -6
- package/dist/o11y/project.json +6 -0
- package/dist/project/cli/contribution.cjs +66 -0
- package/dist/project/cli/contribution.cjs.map +1 -0
- package/dist/project/cli/contribution.d.cts +17 -0
- package/dist/project/cli/contribution.d.mts +17 -0
- package/dist/project/cli/contribution.d.ts +17 -0
- package/dist/project/cli/contribution.js +8 -0
- package/dist/project/cli/contribution.js.map +1 -0
- package/dist/project/cli/index.cjs +7 -0
- package/dist/project/cli/index.cjs.map +1 -0
- package/dist/project/cli/index.d.cts +1 -0
- package/dist/project/cli/index.d.mts +1 -0
- package/dist/project/cli/index.d.ts +1 -0
- package/dist/project/cli/index.js +8 -0
- package/dist/project/cli/index.js.map +1 -0
- package/dist/project/host/index.cjs +11 -0
- package/dist/project/host/index.cjs.map +1 -0
- package/dist/project/host/index.d.cts +4 -0
- package/dist/project/host/index.d.mts +4 -0
- package/dist/project/host/index.d.ts +4 -0
- package/dist/project/host/index.js +14 -0
- package/dist/project/host/index.js.map +1 -0
- package/dist/project/host/index.mjs +14 -0
- package/dist/project/host/index.mjs.map +1 -0
- package/dist/project/host.cjs +59 -0
- package/dist/project/host.cjs.map +1 -0
- package/dist/project/host.d.cts +17 -0
- package/dist/project/host.d.mts +17 -0
- package/dist/project/host.d.ts +17 -0
- package/dist/project/host.js +6 -0
- package/dist/project/host.js.map +1 -0
- package/dist/project/index.cjs +11 -0
- package/dist/project/index.cjs.map +1 -0
- package/dist/project/index.d.cts +4 -0
- package/dist/project/index.d.mts +4 -0
- package/dist/project/index.d.ts +4 -0
- package/dist/project/index.js +14 -0
- package/dist/project/index.js.map +1 -0
- package/dist/project/node.cjs +91 -0
- package/dist/project/node.cjs.map +1 -0
- package/dist/project/node.d.cts +6 -0
- package/dist/project/node.d.mts +6 -0
- package/dist/project/node.d.ts +6 -0
- package/dist/project/node.js +12 -0
- package/dist/project/node.js.map +1 -0
- package/dist/project/services.cjs +17 -0
- package/dist/project/services.cjs.map +1 -0
- package/dist/project/services.d.cts +47 -0
- package/dist/project/services.d.mts +47 -0
- package/dist/project/services.d.ts +47 -0
- package/dist/project/services.js +12 -0
- package/dist/project/services.js.map +1 -0
- package/dist/project/templates.cjs +28 -0
- package/dist/project/templates.cjs.map +1 -0
- package/dist/project/templates.d.cts +4 -0
- package/dist/project/templates.d.mts +4 -0
- package/dist/project/templates.d.ts +4 -0
- package/dist/project/templates.js +12 -0
- package/dist/project/templates.js.map +1 -0
- package/dist/project.json +6 -0
- package/dist/record/family/catalog.d.cts +10 -10
- package/dist/record/family/catalog.d.mts +10 -10
- package/dist/record/family/catalog.d.ts +10 -10
- package/dist/record/family/file-changes.d.cts +8 -8
- package/dist/record/family/file-changes.d.mts +8 -8
- package/dist/record/family/file-changes.d.ts +8 -8
- package/dist/record/host/cli/contribution.cjs +206 -0
- package/dist/record/host/cli/contribution.cjs.map +1 -0
- package/dist/record/host/cli/contribution.d.cts +32 -0
- package/dist/record/host/cli/contribution.d.mts +32 -0
- package/dist/record/host/cli/contribution.d.ts +32 -0
- package/dist/record/host/cli/contribution.js +10 -0
- package/dist/record/host/cli/contribution.js.map +1 -0
- package/dist/record/host/cli/index.cjs +8 -0
- package/dist/record/host/cli/index.cjs.map +1 -0
- package/dist/record/host/cli/index.d.cts +1 -0
- package/dist/record/host/cli/index.d.mts +1 -0
- package/dist/record/host/cli/index.d.ts +1 -0
- package/dist/record/host/cli/index.js +10 -0
- package/dist/record/host/cli/index.js.map +1 -0
- package/dist/record/host/cli/presentation.cjs +122 -0
- package/dist/record/host/cli/presentation.cjs.map +1 -0
- package/dist/record/host/cli/presentation.d.cts +7 -0
- package/dist/record/host/cli/presentation.d.mts +7 -0
- package/dist/record/host/cli/presentation.d.ts +7 -0
- package/dist/record/host/cli/presentation.js +12 -0
- package/dist/record/host/cli/presentation.js.map +1 -0
- package/dist/record/host/index.cjs.map +1 -1
- package/dist/record/host/index.d.cts +1 -1
- package/dist/record/host/index.d.mts +1 -1
- package/dist/record/host/index.d.ts +1 -1
- package/dist/record/host/runtime.cjs +184 -1
- 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 +120 -0
- package/dist/record/host/types.d.mts +120 -0
- package/dist/record/host/types.d.ts +120 -0
- package/dist/record/project.json +6 -0
- package/dist/report/assets/styles.css +80 -0
- package/dist/report/cli/contribution.cjs +325 -0
- package/dist/report/cli/contribution.cjs.map +1 -0
- package/dist/report/cli/contribution.d.cts +143 -0
- package/dist/report/cli/contribution.d.mts +143 -0
- package/dist/report/cli/contribution.d.ts +143 -0
- package/dist/report/cli/contribution.js +12 -0
- package/dist/report/cli/contribution.js.map +1 -0
- package/dist/report/client-dist/app.js +9 -9
- package/dist/report/components/attempt-detail/content.cjs +1 -1
- package/dist/report/components/attempt-detail/content.cjs.map +1 -1
- package/dist/report/components/entity-lists/compute.cjs +5 -0
- package/dist/report/components/entity-lists/compute.cjs.map +1 -1
- package/dist/report/components/entity-lists/compute.d.cts +2 -0
- package/dist/report/components/entity-lists/compute.d.mts +2 -0
- package/dist/report/components/entity-lists/compute.d.ts +2 -0
- package/dist/report/components/entity-lists/content.cjs +35 -12
- package/dist/report/components/entity-lists/content.cjs.map +1 -1
- package/dist/report/components/entity-lists/index.cjs +0 -3
- package/dist/report/components/entity-lists/index.cjs.map +1 -1
- package/dist/report/components/summaries/index.cjs +2 -4
- package/dist/report/components/summaries/index.cjs.map +1 -1
- package/dist/report/definition/cell.cjs +7 -2
- package/dist/report/definition/cell.cjs.map +1 -1
- package/dist/report/definition/cell.d.cts +2 -0
- package/dist/report/definition/cell.d.mts +2 -0
- package/dist/report/definition/cell.d.ts +2 -0
- package/dist/report/definition/primitives/assertion-evidence.cjs +190 -4
- package/dist/report/definition/primitives/assertion-evidence.cjs.map +1 -1
- package/dist/report/definition/primitives/assertion-evidence.d.cts +4 -0
- package/dist/report/definition/primitives/assertion-evidence.d.mts +4 -0
- package/dist/report/definition/primitives/assertion-evidence.d.ts +4 -0
- package/dist/report/execution/machine.cjs +2 -3
- package/dist/report/execution/machine.cjs.map +1 -1
- package/dist/report/execution/machine.d.cts +11 -8
- package/dist/report/execution/machine.d.mts +11 -8
- package/dist/report/execution/machine.d.ts +11 -8
- package/dist/report/host/from-record.cjs +13 -8
- package/dist/report/host/from-record.cjs.map +1 -1
- package/dist/report/host/index.cjs +5 -1
- package/dist/report/host/index.cjs.map +1 -1
- package/dist/report/host/index.d.cts +1 -0
- package/dist/report/host/index.d.mts +1 -0
- package/dist/report/host/index.d.ts +1 -0
- package/dist/report/host/index.js +8 -2
- package/dist/report/host/index.mjs +8 -2
- package/dist/report/host/machine.cjs +23 -22
- package/dist/report/host/machine.cjs.map +1 -1
- package/dist/report/host/machine.d.cts +1 -1
- package/dist/report/host/machine.d.mts +1 -1
- package/dist/report/host/machine.d.ts +1 -1
- package/dist/report/host/node/loader.cjs +4 -2
- package/dist/report/host/node/loader.cjs.map +1 -1
- package/dist/report/host/node/loader.d.cts +3 -1
- package/dist/report/host/node/loader.d.mts +3 -1
- package/dist/report/host/node/loader.d.ts +3 -1
- package/dist/report/host/node.cjs +44 -9
- package/dist/report/host/node.cjs.map +1 -1
- package/dist/report/host/node.d.cts +13 -3
- package/dist/report/host/node.d.mts +13 -3
- package/dist/report/host/node.d.ts +13 -3
- package/dist/report/host/node.js +44 -32
- package/dist/report/host/operations.cjs +14 -0
- package/dist/report/host/operations.cjs.map +1 -0
- package/dist/report/host/operations.d.cts +39 -0
- package/dist/report/host/operations.d.mts +39 -0
- package/dist/report/host/operations.d.ts +39 -0
- package/dist/report/host/operations.js +10 -0
- package/dist/report/host/operations.js.map +1 -0
- package/dist/report/model/chart/plot.cjs +1 -1
- package/dist/report/model/chart/plot.cjs.map +1 -1
- package/dist/report/model/locale.cjs +4 -0
- package/dist/report/model/locale.cjs.map +1 -1
- package/dist/report/model/locale.d.cts +3 -1
- package/dist/report/model/locale.d.mts +3 -1
- package/dist/report/model/locale.d.ts +3 -1
- package/dist/report/react/styles.css +80 -0
- package/dist/runner/build-preparation.cjs +5 -5
- package/dist/runner/build-preparation.cjs.map +1 -1
- package/dist/runner/build-preparation.d.cts +2 -3
- package/dist/runner/build-preparation.d.mts +2 -3
- package/dist/runner/build-preparation.d.ts +2 -3
- package/dist/runner/feedback/coordinator.cjs +18 -15
- package/dist/runner/feedback/coordinator.cjs.map +1 -1
- package/dist/runner/feedback/coordinator.d.cts +6 -0
- package/dist/runner/feedback/coordinator.d.mts +6 -0
- package/dist/runner/feedback/coordinator.d.ts +6 -0
- package/dist/runner/ledger.cjs +3 -13
- package/dist/runner/ledger.cjs.map +1 -1
- package/dist/runner/ledger.d.cts +1 -3
- package/dist/runner/ledger.d.mts +1 -3
- package/dist/runner/ledger.d.ts +1 -3
- package/dist/runner/run.cjs +63 -18
- package/dist/runner/run.cjs.map +1 -1
- package/dist/runner/session.cjs +10 -0
- package/dist/runner/session.cjs.map +1 -1
- package/dist/runner/session.d.cts +25 -0
- package/dist/runner/session.d.mts +25 -0
- package/dist/runner/session.d.ts +25 -0
- package/dist/runner/types.cjs.map +1 -1
- package/dist/runner/types.d.cts +1 -2
- package/dist/runner/types.d.mts +1 -2
- package/dist/runner/types.d.ts +1 -2
- package/dist/sandbox/build-coordinator.cjs +38 -19
- package/dist/sandbox/build-coordinator.cjs.map +1 -1
- package/dist/sandbox/build-coordinator.d.cts +47 -7
- package/dist/sandbox/build-coordinator.d.mts +47 -7
- package/dist/sandbox/build-coordinator.d.ts +47 -7
- package/dist/sandbox/build-coordinator.js +8 -4
- package/dist/sandbox/cli/contribution.cjs +128 -0
- package/dist/sandbox/cli/contribution.cjs.map +1 -0
- package/dist/sandbox/cli/contribution.d.cts +71 -0
- package/dist/sandbox/cli/contribution.d.mts +71 -0
- package/dist/sandbox/cli/contribution.d.ts +71 -0
- package/dist/sandbox/cli/contribution.js +8 -0
- package/dist/sandbox/cli/contribution.js.map +1 -0
- package/dist/sandbox/cli-commands.cjs +14 -21
- package/dist/sandbox/cli-commands.cjs.map +1 -1
- package/dist/sandbox/cli-commands.d.cts +12 -8
- package/dist/sandbox/cli-commands.d.mts +12 -8
- package/dist/sandbox/cli-commands.d.ts +12 -8
- package/dist/sandbox/compose.cjs +22 -2
- package/dist/sandbox/compose.cjs.map +1 -1
- package/dist/sandbox/compose.d.cts +1 -1
- package/dist/sandbox/compose.d.mts +1 -1
- package/dist/sandbox/compose.d.ts +1 -1
- package/dist/sandbox/docker-profile/cli.cjs +13 -9
- package/dist/sandbox/docker-profile/cli.cjs.map +1 -1
- package/dist/sandbox/docker-profile/cli.d.cts +2 -0
- package/dist/sandbox/docker-profile/cli.d.mts +2 -0
- package/dist/sandbox/docker-profile/cli.d.ts +2 -0
- package/dist/sandbox/docker-profile/runtime.cjs +68 -7
- package/dist/sandbox/docker-profile/runtime.cjs.map +1 -1
- package/dist/sandbox/docker-profile/runtime.d.cts +19 -1
- package/dist/sandbox/docker-profile/runtime.d.mts +19 -1
- package/dist/sandbox/docker-profile/runtime.d.ts +19 -1
- package/dist/sandbox/docker-profile/runtime.js +10 -8
- package/dist/sandbox/docker-profile/schema.cjs +68 -19
- package/dist/sandbox/docker-profile/schema.cjs.map +1 -1
- package/dist/sandbox/docker-profile/schema.d.cts +23 -9
- package/dist/sandbox/docker-profile/schema.d.mts +23 -9
- package/dist/sandbox/docker-profile/schema.d.ts +23 -9
- package/dist/sandbox/docker-task-build-cache.cjs +532 -0
- package/dist/sandbox/docker-task-build-cache.cjs.map +1 -0
- package/dist/sandbox/docker-task-build-cache.d.cts +68 -0
- package/dist/sandbox/docker-task-build-cache.d.mts +68 -0
- package/dist/sandbox/docker-task-build-cache.d.ts +68 -0
- package/dist/sandbox/docker-task-build-cache.js +20 -0
- package/dist/sandbox/docker-task-build-cache.js.map +1 -0
- package/dist/sandbox/docker.cjs +50 -0
- package/dist/sandbox/docker.cjs.map +1 -1
- package/dist/sandbox/docker.d.cts +15 -0
- package/dist/sandbox/docker.d.mts +15 -0
- package/dist/sandbox/docker.d.ts +15 -0
- package/dist/sandbox/dockerfile-build.cjs +55 -5
- package/dist/sandbox/dockerfile-build.cjs.map +1 -1
- package/dist/sandbox/dockerfile-build.d.cts +2 -2
- package/dist/sandbox/dockerfile-build.d.mts +2 -2
- package/dist/sandbox/dockerfile-build.d.ts +2 -2
- package/dist/sandbox/index.cjs +5 -3
- package/dist/sandbox/index.cjs.map +1 -1
- package/dist/sandbox/index.d.cts +4 -3
- package/dist/sandbox/index.d.mts +4 -3
- package/dist/sandbox/index.d.ts +4 -3
- package/dist/sandbox/index.js +16 -14
- package/dist/sandbox/index.mjs +16 -14
- package/dist/sandbox/keep.cjs +1 -3
- package/dist/sandbox/keep.cjs.map +1 -1
- package/dist/sandbox/layer.cjs +70 -79
- package/dist/sandbox/layer.cjs.map +1 -1
- package/dist/sandbox/layer.d.cts +6 -12
- package/dist/sandbox/layer.d.mts +6 -12
- package/dist/sandbox/layer.d.ts +6 -12
- package/dist/sandbox/layer.js +16 -18
- package/dist/sandbox/ledger-paths.cjs +4 -18
- package/dist/sandbox/ledger-paths.cjs.map +1 -1
- package/dist/sandbox/ledger-paths.d.cts +3 -13
- package/dist/sandbox/ledger-paths.d.mts +3 -13
- package/dist/sandbox/ledger-paths.d.ts +3 -13
- package/dist/sandbox/ledger-paths.js +4 -8
- package/dist/sandbox/registry.cjs +1 -1
- package/dist/sandbox/registry.cjs.map +1 -1
- package/dist/sandbox/runtime.cjs +27 -37
- package/dist/sandbox/runtime.cjs.map +1 -1
- package/dist/sandbox/runtime.d.cts +1 -2
- package/dist/sandbox/runtime.d.mts +1 -2
- package/dist/sandbox/runtime.d.ts +1 -2
- package/dist/sandbox/runtime.js +6 -8
- package/dist/sandbox/types.cjs.map +1 -1
- package/dist/sandbox/types.d.cts +3 -3
- package/dist/sandbox/types.d.mts +3 -3
- package/dist/sandbox/types.d.ts +3 -3
- package/dist/sources/project.json +6 -0
- package/dist/vendor/remark/remark-gfm.cjs +72 -72
- package/dist/vendor/remark/remark-gfm.cjs.map +1 -1
- package/dist/vendor/remark/remark-parse.cjs +54 -54
- package/dist/vendor/remark/remark-parse.cjs.map +1 -1
- package/dist/vendor/remark/remark.cjs +125 -125
- package/dist/vendor/remark/remark.cjs.map +2 -2
- package/docs-site/zh/README.md +1 -1
- package/docs-site/zh/explanation/assert.mdx +4 -0
- package/docs-site/zh/explanation/judge.mdx +40 -9
- package/docs-site/zh/reference/cli.mdx +67 -43
- package/docs-site/zh/reference/define-agent.mdx +2 -2
- package/docs-site/zh/reference/report-components.mdx +4 -3
- package/docs-site/zh/troubleshooting/debug-sandbox.mdx +6 -0
- package/docs-site/zh/troubleshooting/debugging.mdx +28 -1
- package/docs-site/zh/tutorials/agent-feedback-loop.mdx +4 -2
- package/docs-site/zh/tutorials/concurrency.mdx +2 -2
- package/docs-site/zh/tutorials/custom-reports.mdx +175 -9
- package/docs-site/zh/tutorials/docker-in-docker.mdx +52 -7
- package/docs-site/zh/tutorials/eval-groups.mdx +1 -2
- package/docs-site/zh/tutorials/evaluation-kinds.mdx +39 -6
- package/docs-site/zh/tutorials/nixos-managed-dind.mdx +14 -5
- package/docs-site/zh/tutorials/sandbox-providers.mdx +1 -28
- package/docs-site/zh/tutorials/sandbox-reuse.mdx +1 -1
- package/docs-site/zh/tutorials/viewing-results.mdx +2 -0
- package/package.json +24 -19
- package/README.md +0 -176
- package/README.zh.md +0 -176
- package/dist/cli/record.cjs +0 -246
- package/dist/cli/record.cjs.map +0 -1
- package/dist/cli/record.d.cts +0 -40
- package/dist/cli/record.d.mts +0 -40
- package/dist/cli/record.d.ts +0 -40
- package/dist/cli/record.js +0 -10
- package/dist/cli/record.js.map +0 -1
- package/dist/sandbox/local.cjs +0 -361
- package/dist/sandbox/local.cjs.map +0 -1
- package/dist/sandbox/local.d.cts +0 -80
- package/dist/sandbox/local.d.mts +0 -80
- package/dist/sandbox/local.d.ts +0 -80
- package/dist/sandbox/local.js +0 -6
- package/dist/sandbox/local.js.map +0 -1
|
@@ -118,6 +118,7 @@ const CapacitySchema = plainStruct({
|
|
|
118
118
|
pids: positiveSafeInteger("DockerProfileCapacityPids"),
|
|
119
119
|
maxContainers: positiveSafeInteger("DockerProfileCapacityMaxContainers"),
|
|
120
120
|
maxBuilds: positiveSafeInteger("DockerProfileCapacityMaxBuilds"),
|
|
121
|
+
ephemeralDiskBytes: positiveSafeInteger("DockerProfileCapacityEphemeralDiskBytes"),
|
|
121
122
|
aggregate: plainStruct({
|
|
122
123
|
cpus: positiveFinite("DockerProfileAggregateCpus"),
|
|
123
124
|
memoryBytes: positiveSafeInteger("DockerProfileAggregateMemoryBytes"),
|
|
@@ -134,7 +135,7 @@ const CapacitySchema = plainStruct({
|
|
|
134
135
|
exports.DockerExecutionProfileV1Schema = plainStruct({
|
|
135
136
|
schemaVersion: effect_1.Schema.Literal(1),
|
|
136
137
|
profileId: nonEmptyString("DockerProfileId"),
|
|
137
|
-
securityLevel: effect_1.Schema.Literal("managed-rootless/v1", "
|
|
138
|
+
securityLevel: effect_1.Schema.Literal("managed-rootless/v1", "raw-dind-storage/v1"),
|
|
138
139
|
semanticPolicyRevision: nonEmptyString("DockerProfileSemanticPolicyRevision"),
|
|
139
140
|
transport: plainStruct({
|
|
140
141
|
kind: effect_1.Schema.Literal("unix"),
|
|
@@ -158,6 +159,11 @@ exports.DockerExecutionProfileV1Schema = plainStruct({
|
|
|
158
159
|
mountPath: absolutePath("DockerProfileMountPath"),
|
|
159
160
|
dockerRootDir: absolutePath("DockerProfileDockerRootDir"),
|
|
160
161
|
limitBytes: positiveSafeInteger("DockerProfileFilesystemLimitBytes"),
|
|
162
|
+
dockerDataPool: plainStruct({
|
|
163
|
+
count: positiveSafeInteger("DockerProfileDockerDataSlotCount"),
|
|
164
|
+
bytesPerAllocation: positiveSafeInteger("DockerProfileDockerDataAllocationLimitBytes"),
|
|
165
|
+
attestation: effect_1.Schema.Literal("linux-project-quota/v1"),
|
|
166
|
+
}),
|
|
161
167
|
}),
|
|
162
168
|
cgroup: plainStruct({
|
|
163
169
|
aggregatePath: absolutePath("DockerProfileAggregatePath"),
|
|
@@ -166,14 +172,20 @@ exports.DockerExecutionProfileV1Schema = plainStruct({
|
|
|
166
172
|
}),
|
|
167
173
|
}),
|
|
168
174
|
capacity: CapacitySchema,
|
|
169
|
-
policy: plainStruct({
|
|
175
|
+
policy: effect_1.Schema.Union(plainStruct({
|
|
176
|
+
level: effect_1.Schema.Literal("raw-dind-storage/v1"),
|
|
177
|
+
privilegedTranslation: effect_1.Schema.Literal("host-daemon"),
|
|
178
|
+
dockerData: effect_1.Schema.Literal("private-project-quota-allocation/v1"),
|
|
179
|
+
}), plainStruct({
|
|
180
|
+
level: effect_1.Schema.Literal("managed-rootless/v1"),
|
|
170
181
|
hostLoopback: effect_1.Schema.Literal(false),
|
|
171
182
|
tcpDockerEndpoint: effect_1.Schema.Literal(false),
|
|
172
183
|
outerSocketInjection: effect_1.Schema.Literal(false),
|
|
173
184
|
privilegedTranslation: effect_1.Schema.Literal("rootless-userns"),
|
|
174
185
|
writableRoot: effect_1.Schema.Literal("declared-tmpfs-only"),
|
|
186
|
+
dockerData: effect_1.Schema.Literal("private-project-quota-allocation/v1"),
|
|
175
187
|
network: NetworkSchema,
|
|
176
|
-
}),
|
|
188
|
+
})),
|
|
177
189
|
});
|
|
178
190
|
exports.DockerExecutionProfileSchema = exports.DockerExecutionProfileV1Schema;
|
|
179
191
|
function frozenNonEmptyStrings(values) {
|
|
@@ -194,7 +206,10 @@ function freezeProfile(profile) {
|
|
|
194
206
|
backend: Object.freeze({
|
|
195
207
|
...profile.backend,
|
|
196
208
|
owner: Object.freeze({ ...profile.backend.owner }),
|
|
197
|
-
filesystem: Object.freeze({
|
|
209
|
+
filesystem: Object.freeze({
|
|
210
|
+
...profile.backend.filesystem,
|
|
211
|
+
dockerDataPool: Object.freeze({ ...profile.backend.filesystem.dockerDataPool }),
|
|
212
|
+
}),
|
|
198
213
|
cgroup: Object.freeze({ ...profile.backend.cgroup, controllers: PROFILE_CONTROLLERS }),
|
|
199
214
|
}),
|
|
200
215
|
capacity: Object.freeze({
|
|
@@ -202,21 +217,23 @@ function freezeProfile(profile) {
|
|
|
202
217
|
memorySwapBytes: 0,
|
|
203
218
|
aggregate: Object.freeze({ ...profile.capacity.aggregate, memorySwapBytes: 0 }),
|
|
204
219
|
}),
|
|
205
|
-
policy:
|
|
206
|
-
...profile.policy
|
|
207
|
-
|
|
208
|
-
...profile.policy
|
|
209
|
-
|
|
210
|
-
...profile.policy.network
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
220
|
+
policy: profile.policy.level === "raw-dind-storage/v1"
|
|
221
|
+
? Object.freeze({ ...profile.policy })
|
|
222
|
+
: Object.freeze({
|
|
223
|
+
...profile.policy,
|
|
224
|
+
network: Object.freeze({
|
|
225
|
+
...profile.policy.network,
|
|
226
|
+
dns: Object.freeze({
|
|
227
|
+
...profile.policy.network.dns,
|
|
228
|
+
servers: frozenNonEmptyStrings(profile.policy.network.dns.servers),
|
|
229
|
+
}),
|
|
230
|
+
egress: Object.freeze({
|
|
231
|
+
...profile.policy.network.egress,
|
|
232
|
+
allowedProtocols: NETWORK_ALLOWED_PROTOCOLS,
|
|
233
|
+
denyCidrs: exports.DOCKER_PROFILE_NETWORK_DENY_CIDRS,
|
|
234
|
+
}),
|
|
217
235
|
}),
|
|
218
236
|
}),
|
|
219
|
-
}),
|
|
220
237
|
});
|
|
221
238
|
}
|
|
222
239
|
function semanticPolicyJson(input) {
|
|
@@ -230,12 +247,18 @@ function semanticPolicyJson(input) {
|
|
|
230
247
|
controllers: [...input.backend.cgroup.controllers],
|
|
231
248
|
},
|
|
232
249
|
},
|
|
233
|
-
policy: {
|
|
250
|
+
policy: input.policy.level === "raw-dind-storage/v1" ? {
|
|
251
|
+
level: input.policy.level,
|
|
252
|
+
privilegedTranslation: input.policy.privilegedTranslation,
|
|
253
|
+
dockerData: input.policy.dockerData,
|
|
254
|
+
} : {
|
|
255
|
+
level: input.policy.level,
|
|
234
256
|
hostLoopback: input.policy.hostLoopback,
|
|
235
257
|
tcpDockerEndpoint: input.policy.tcpDockerEndpoint,
|
|
236
258
|
outerSocketInjection: input.policy.outerSocketInjection,
|
|
237
259
|
privilegedTranslation: input.policy.privilegedTranslation,
|
|
238
260
|
writableRoot: input.policy.writableRoot,
|
|
261
|
+
dockerData: input.policy.dockerData,
|
|
239
262
|
network: {
|
|
240
263
|
version: input.policy.network.version,
|
|
241
264
|
dns: { mode: input.policy.network.dns.mode, servers: [...input.policy.network.dns.servers] },
|
|
@@ -308,6 +331,26 @@ function parseDockerExecutionProfileV1(value) {
|
|
|
308
331
|
if (effect_1.Either.isLeft(decoded))
|
|
309
332
|
throw schemaError(value, decoded.left);
|
|
310
333
|
const profile = freezeProfile(decoded.right);
|
|
334
|
+
if (profile.backend.filesystem.dockerDataPool.count < profile.capacity.maxContainers ||
|
|
335
|
+
profile.backend.filesystem.dockerDataPool.count *
|
|
336
|
+
profile.backend.filesystem.dockerDataPool.bytesPerAllocation < profile.capacity.ephemeralDiskBytes) {
|
|
337
|
+
throw (0, errors_ts_1.dockerProfileError)({
|
|
338
|
+
code: "sandbox.docker-profile-capacity-invalid",
|
|
339
|
+
path: "profile.backend.filesystem.dockerDataPool",
|
|
340
|
+
message: "Docker data allocations must cover maxContainers and allocatable ephemeralDiskBytes",
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
const rawStorage = profile.securityLevel === "raw-dind-storage/v1";
|
|
344
|
+
if (profile.policy.level !== profile.securityLevel ||
|
|
345
|
+
(rawStorage
|
|
346
|
+
? profile.policy.privilegedTranslation !== "host-daemon"
|
|
347
|
+
: profile.policy.privilegedTranslation !== "rootless-userns")) {
|
|
348
|
+
throw (0, errors_ts_1.dockerProfileError)({
|
|
349
|
+
code: "sandbox.docker-profile-security-level-unsupported",
|
|
350
|
+
path: "profile.policy",
|
|
351
|
+
message: "Docker profile policy level and privileged translation must match its security level",
|
|
352
|
+
});
|
|
353
|
+
}
|
|
311
354
|
const expected = dockerExecutionProfileSemanticPolicyRevisionOf(profile);
|
|
312
355
|
if (profile.semanticPolicyRevision !== expected) {
|
|
313
356
|
throw (0, errors_ts_1.dockerProfileError)({
|
|
@@ -361,12 +404,18 @@ function canonicalJson(profile) {
|
|
|
361
404
|
...profile.capacity,
|
|
362
405
|
aggregate: { ...profile.capacity.aggregate },
|
|
363
406
|
},
|
|
364
|
-
policy: {
|
|
407
|
+
policy: profile.policy.level === "raw-dind-storage/v1" ? {
|
|
408
|
+
level: profile.policy.level,
|
|
409
|
+
privilegedTranslation: profile.policy.privilegedTranslation,
|
|
410
|
+
dockerData: profile.policy.dockerData,
|
|
411
|
+
} : {
|
|
412
|
+
level: profile.policy.level,
|
|
365
413
|
hostLoopback: profile.policy.hostLoopback,
|
|
366
414
|
tcpDockerEndpoint: profile.policy.tcpDockerEndpoint,
|
|
367
415
|
outerSocketInjection: profile.policy.outerSocketInjection,
|
|
368
416
|
privilegedTranslation: profile.policy.privilegedTranslation,
|
|
369
417
|
writableRoot: profile.policy.writableRoot,
|
|
418
|
+
dockerData: profile.policy.dockerData,
|
|
370
419
|
network: {
|
|
371
420
|
version: profile.policy.network.version,
|
|
372
421
|
dns: { mode: profile.policy.network.dns.mode, servers: [...profile.policy.network.dns.servers] },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["schema.ts"],"names":[],"mappings":"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","sourcesContent":["import { Either, ParseResult, Schema } from \"effect\";\nimport { isIP } from \"node:net\";\nimport { isAbsolute } from \"node:path\";\nimport { digestOf } from \"../identity.ts\";\nimport type { JsonValue } from \"../../shared/types.ts\";\nimport { dockerProfileError, type DockerProfileError } from \"./errors.ts\";\nexport const DOCKER_EXECUTION_PROFILE_SCHEMA_VERSION: 1 = 1;\nexport const DOCKER_PROFILE_SCHEMA_VERSION = DOCKER_EXECUTION_PROFILE_SCHEMA_VERSION;\nexport const DOCKER_PROFILE_NETWORK_POLICY_VERSION: 1 = 1;\nexport const DOCKER_PROFILE_NETWORK_DENY_CIDRS: readonly [\n string,\n ...string[]\n] = Object.freeze([\n \"0.0.0.0/8\", \"10.0.0.0/8\", \"100.64.0.0/10\", \"127.0.0.0/8\", \"169.254.0.0/16\",\n \"172.16.0.0/12\", \"192.0.0.0/24\", \"192.0.2.0/24\", \"192.168.0.0/16\",\n \"198.18.0.0/15\", \"198.51.100.0/24\", \"203.0.113.0/24\", \"224.0.0.0/4\",\n \"240.0.0.0/4\", \"::/0\",\n]);\nconst NETWORK_ALLOWED_PROTOCOLS: readonly [\n \"dns\",\n \"https\"\n] = Object.freeze([\"dns\", \"https\"]);\nconst PROFILE_CONTROLLERS: readonly [\n \"cpu\",\n \"memory\",\n \"pids\"\n] = Object.freeze([\n \"cpu\", \"memory\", \"pids\",\n]);\nexport type DockerExecutionProfileSecurityLevel = \"managed-rootless/v1\" | \"managed-vm-rootless/v1\";\nexport interface DockerProfileUnixEndpoint {\n readonly path: string;\n readonly peerUid: number;\n}\n/** Callback-free descriptor data that crosses the host deployment trust boundary. */\nexport interface DockerProfileNetworkPolicy {\n readonly version: 1;\n readonly dns: {\n readonly mode: \"explicit\";\n readonly servers: readonly [\n string,\n ...string[]\n ];\n };\n readonly egress: {\n readonly mode: \"rootless-nat\";\n readonly allowedProtocols: readonly [\n \"dns\",\n \"https\"\n ];\n readonly denyPrivateNetworks: true;\n readonly denySiblingSyntheticEndpoints: true;\n readonly denyCidrs: readonly [\n string,\n ...string[]\n ];\n readonly ipv6: \"disabled\";\n readonly disableHostLoopback: true;\n readonly portDriver: \"none\";\n readonly daemonBridge: \"none\";\n readonly exclusiveNetwork: true;\n readonly icc: false;\n };\n}\nexport interface DockerExecutionProfileV1 {\n readonly schemaVersion: 1;\n readonly profileId: string;\n readonly securityLevel: DockerExecutionProfileSecurityLevel;\n readonly semanticPolicyRevision: string;\n readonly transport: {\n readonly kind: \"unix\";\n readonly hostMachineIdentity: string;\n readonly dockerSocket: DockerProfileUnixEndpoint;\n readonly controlSocket: DockerProfileUnixEndpoint & {\n readonly protocol: \"niceeval-docker-profile-control/v1\";\n };\n };\n readonly backend: {\n readonly kind: \"local-systemd\" | \"dedicated-linux-vm\";\n readonly machineIdentity: string;\n readonly owner: {\n readonly uid: number;\n readonly gid: number;\n };\n readonly filesystem: {\n readonly identity: string;\n readonly mountPath: string;\n readonly dockerRootDir: string;\n readonly limitBytes: number;\n };\n readonly cgroup: {\n readonly aggregatePath: string;\n readonly policyRevision: string;\n readonly controllers: readonly [\n \"cpu\",\n \"memory\",\n \"pids\"\n ];\n };\n };\n readonly capacity: {\n readonly cpus: number;\n readonly memoryBytes: number;\n readonly memorySwapBytes: 0;\n readonly pids: number;\n readonly maxContainers: number;\n readonly maxBuilds: number;\n readonly aggregate: {\n readonly cpus: number;\n readonly memoryBytes: number;\n readonly memorySwapBytes: 0;\n readonly pids: number;\n };\n };\n readonly policy: {\n readonly hostLoopback: false;\n readonly tcpDockerEndpoint: false;\n readonly outerSocketInjection: false;\n readonly privilegedTranslation: \"rootless-userns\";\n readonly writableRoot: \"declared-tmpfs-only\";\n readonly network: DockerProfileNetworkPolicy;\n };\n}\nexport type DockerExecutionProfileV1Draft = Omit<DockerExecutionProfileV1, \"semanticPolicyRevision\">;\n/** A deliberately narrow view: never exposes host endpoints, paths, owners, or policy. */\nexport interface DockerProfilePublicSummary {\n readonly schemaVersion: 1;\n readonly profileId: string;\n readonly securityLevel: DockerExecutionProfileSecurityLevel;\n readonly semanticPolicyRevision: string;\n readonly capacity: DockerExecutionProfileV1[\"capacity\"];\n}\ntype DockerExecutionProfileSemanticInput = Pick<DockerExecutionProfileV1, \"securityLevel\" | \"backend\" | \"policy\">;\nconst ParseOptions = Object.freeze({\n errors: \"all\" as const,\n exact: true,\n onExcessProperty: \"error\" as const,\n});\ntype PlainObject = Readonly<Record<PropertyKey, unknown>>;\nconst PlainObjectSchema = Schema.declare<PlainObject>((value): value is PlainObject => {\n if (typeof value !== \"object\" || value === null || Array.isArray(value))\n return false;\n const prototype = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n}, {\n identifier: \"DockerProfilePlainObject\",\n description: \"a plain object or null-prototype record\",\n});\nconst plainStruct = <Fields extends Schema.Struct.Fields>(fields: Fields) => Schema.compose(Schema.Struct(fields), { strict: false })(PlainObjectSchema);\nconst nonEmptyString = (identifier: string) => Schema.String.pipe(Schema.filter((value) => value.trim() !== \"\" && !value.includes(\"\\0\"), { identifier, description: \"a non-empty string without NUL\" }));\nconst absolutePath = (identifier: string) => nonEmptyString(identifier).pipe(Schema.filter(isAbsolute, { identifier, description: \"an absolute path\" }));\nconst nonNegativeSafeInteger = (identifier: string) => Schema.JsonNumber.pipe(Schema.filter((value) => Number.isSafeInteger(value) && value >= 0, { identifier, description: \"a non-negative safe integer\" }));\nconst positiveSafeInteger = (identifier: string) => Schema.JsonNumber.pipe(Schema.filter((value) => Number.isSafeInteger(value) && value > 0, { identifier, description: \"a positive safe integer\" }));\nconst positiveFinite = (identifier: string) => Schema.JsonNumber.pipe(Schema.filter((value) => Number.isFinite(value) && value > 0, { identifier, description: \"a positive finite number\" }));\nfunction isPublicDnsServer(value: string): boolean {\n const kind = isIP(value);\n if (kind === 4) {\n const [first, second, third] = value.split(\".\").map(Number);\n if (first === undefined || second === undefined || third === undefined)\n return false;\n if (first === 0 || first === 10 || first === 127 || first >= 224)\n return false;\n if (first === 100 && second >= 64 && second <= 127)\n return false;\n if (first === 169 && second === 254)\n return false;\n if (first === 172 && second >= 16 && second <= 31)\n return false;\n if (first === 192 && second === 168)\n return false;\n if (first === 192 && second === 0 && (third === 0 || third === 2))\n return false;\n if (first === 198 && (second === 18 || second === 19))\n return false;\n if (first === 198 && second === 51 && third === 100)\n return false;\n return !(first === 203 && second === 0 && third === 113);\n }\n if (kind !== 6)\n return false;\n const normalized = value.toLowerCase();\n if (normalized.startsWith(\"::ffff:\")) {\n return isPublicDnsServer(normalized.slice(\"::ffff:\".length));\n }\n return normalized !== \"::\" && normalized !== \"::1\" &&\n !normalized.startsWith(\"fc\") && !normalized.startsWith(\"fd\") &&\n !normalized.startsWith(\"fe8\") && !normalized.startsWith(\"fe9\") &&\n !normalized.startsWith(\"fea\") && !normalized.startsWith(\"feb\") &&\n !normalized.startsWith(\"ff\") && !normalized.startsWith(\"2001:db8:\");\n}\nconst DnsServerSchema = nonEmptyString(\"DockerProfilePublicDnsServer\").pipe(Schema.filter(isPublicDnsServer, {\n identifier: \"DockerProfilePublicDnsServer\",\n description: \"a public IP address, not a private or synthetic endpoint\",\n}));\nconst CidrsSchema = Schema.NonEmptyArray(Schema.String).pipe(Schema.filter((value) => value.length === DOCKER_PROFILE_NETWORK_DENY_CIDRS.length &&\n value.every((cidr, index) => cidr === DOCKER_PROFILE_NETWORK_DENY_CIDRS[index]), { identifier: \"DockerProfileDenyCidrs\", description: \"the v1 fail-closed CIDR set\" }));\nconst EndpointSchema = plainStruct({\n path: absolutePath(\"DockerProfileSocketPath\"),\n peerUid: nonNegativeSafeInteger(\"DockerProfilePeerUid\"),\n});\nconst NetworkSchema = plainStruct({\n version: Schema.Literal(1),\n dns: plainStruct({\n mode: Schema.Literal(\"explicit\"),\n servers: Schema.NonEmptyArray(DnsServerSchema),\n }),\n egress: plainStruct({\n mode: Schema.Literal(\"rootless-nat\"),\n allowedProtocols: Schema.Tuple(Schema.Literal(\"dns\"), Schema.Literal(\"https\")),\n denyPrivateNetworks: Schema.Literal(true),\n denySiblingSyntheticEndpoints: Schema.Literal(true),\n denyCidrs: CidrsSchema,\n ipv6: Schema.Literal(\"disabled\"),\n disableHostLoopback: Schema.Literal(true),\n portDriver: Schema.Literal(\"none\"),\n daemonBridge: Schema.Literal(\"none\"),\n exclusiveNetwork: Schema.Literal(true),\n icc: Schema.Literal(false),\n }),\n});\nconst CapacitySchema = plainStruct({\n cpus: positiveFinite(\"DockerProfileCapacityCpus\"),\n memoryBytes: positiveSafeInteger(\"DockerProfileCapacityMemoryBytes\"),\n memorySwapBytes: Schema.Literal(0),\n pids: positiveSafeInteger(\"DockerProfileCapacityPids\"),\n maxContainers: positiveSafeInteger(\"DockerProfileCapacityMaxContainers\"),\n maxBuilds: positiveSafeInteger(\"DockerProfileCapacityMaxBuilds\"),\n aggregate: plainStruct({\n cpus: positiveFinite(\"DockerProfileAggregateCpus\"),\n memoryBytes: positiveSafeInteger(\"DockerProfileAggregateMemoryBytes\"),\n memorySwapBytes: Schema.Literal(0),\n pids: positiveSafeInteger(\"DockerProfileAggregatePids\"),\n }),\n}).pipe(Schema.filter((value) => value.aggregate.cpus >= value.cpus &&\n value.aggregate.memoryBytes >= value.memoryBytes &&\n value.aggregate.pids >= value.pids, {\n identifier: \"DockerProfileCapacity\",\n description: \"aggregate capacity at least as large as allocatable CPU, memory and PID capacity\",\n}));\n/** Wire structure only; semantic revision and frozen canonical values are checked after decode. */\nexport const DockerExecutionProfileV1Schema: Schema.Schema<DockerExecutionProfileV1, PlainObject> = plainStruct({\n schemaVersion: Schema.Literal(1),\n profileId: nonEmptyString(\"DockerProfileId\"),\n securityLevel: Schema.Literal(\"managed-rootless/v1\", \"managed-vm-rootless/v1\"),\n semanticPolicyRevision: nonEmptyString(\"DockerProfileSemanticPolicyRevision\"),\n transport: plainStruct({\n kind: Schema.Literal(\"unix\"),\n hostMachineIdentity: nonEmptyString(\"DockerProfileHostMachineIdentity\"),\n dockerSocket: EndpointSchema,\n controlSocket: plainStruct({\n path: absolutePath(\"DockerProfileControlSocketPath\"),\n peerUid: nonNegativeSafeInteger(\"DockerProfileControlPeerUid\"),\n protocol: Schema.Literal(\"niceeval-docker-profile-control/v1\"),\n }),\n }),\n backend: plainStruct({\n kind: Schema.Literal(\"local-systemd\", \"dedicated-linux-vm\"),\n machineIdentity: nonEmptyString(\"DockerProfileBackendMachineIdentity\"),\n owner: plainStruct({\n uid: nonNegativeSafeInteger(\"DockerProfileOwnerUid\"),\n gid: nonNegativeSafeInteger(\"DockerProfileOwnerGid\"),\n }),\n filesystem: plainStruct({\n identity: nonEmptyString(\"DockerProfileFilesystemIdentity\"),\n mountPath: absolutePath(\"DockerProfileMountPath\"),\n dockerRootDir: absolutePath(\"DockerProfileDockerRootDir\"),\n limitBytes: positiveSafeInteger(\"DockerProfileFilesystemLimitBytes\"),\n }),\n cgroup: plainStruct({\n aggregatePath: absolutePath(\"DockerProfileAggregatePath\"),\n policyRevision: nonEmptyString(\"DockerProfileCgroupPolicyRevision\"),\n controllers: Schema.Tuple(Schema.Literal(\"cpu\"), Schema.Literal(\"memory\"), Schema.Literal(\"pids\")),\n }),\n }),\n capacity: CapacitySchema,\n policy: plainStruct({\n hostLoopback: Schema.Literal(false),\n tcpDockerEndpoint: Schema.Literal(false),\n outerSocketInjection: Schema.Literal(false),\n privilegedTranslation: Schema.Literal(\"rootless-userns\"),\n writableRoot: Schema.Literal(\"declared-tmpfs-only\"),\n network: NetworkSchema,\n }),\n});\nexport const DockerExecutionProfileSchema = DockerExecutionProfileV1Schema;\nfunction frozenNonEmptyStrings(values: readonly string[]): readonly [\n string,\n ...string[]\n] {\n const [first, ...rest] = values;\n if (first === undefined)\n throw new Error(\"expected a non-empty string tuple\");\n return Object.freeze([first, ...rest]);\n}\n/** Canonicalize only after structural decoding; nested containers are immutable to callers. */\nfunction freezeProfile(profile: DockerExecutionProfileV1): DockerExecutionProfileV1 {\n return Object.freeze({\n ...profile,\n transport: Object.freeze({\n ...profile.transport,\n dockerSocket: Object.freeze({ ...profile.transport.dockerSocket }),\n controlSocket: Object.freeze({ ...profile.transport.controlSocket }),\n }),\n backend: Object.freeze({\n ...profile.backend,\n owner: Object.freeze({ ...profile.backend.owner }),\n filesystem: Object.freeze({ ...profile.backend.filesystem }),\n cgroup: Object.freeze({ ...profile.backend.cgroup, controllers: PROFILE_CONTROLLERS }),\n }),\n capacity: Object.freeze({\n ...profile.capacity,\n memorySwapBytes: 0,\n aggregate: Object.freeze({ ...profile.capacity.aggregate, memorySwapBytes: 0 }),\n }),\n policy: Object.freeze({\n ...profile.policy,\n network: Object.freeze({\n ...profile.policy.network,\n dns: Object.freeze({\n ...profile.policy.network.dns,\n servers: frozenNonEmptyStrings(profile.policy.network.dns.servers),\n }),\n egress: Object.freeze({\n ...profile.policy.network.egress,\n allowedProtocols: NETWORK_ALLOWED_PROTOCOLS,\n denyCidrs: DOCKER_PROFILE_NETWORK_DENY_CIDRS,\n }),\n }),\n }),\n });\n}\nfunction semanticPolicyJson(input: DockerExecutionProfileSemanticInput): JsonValue {\n return {\n schemaVersion: DOCKER_EXECUTION_PROFILE_SCHEMA_VERSION,\n securityLevel: input.securityLevel,\n backend: {\n kind: input.backend.kind,\n cgroup: {\n policyRevision: input.backend.cgroup.policyRevision,\n controllers: [...input.backend.cgroup.controllers],\n },\n },\n policy: {\n hostLoopback: input.policy.hostLoopback,\n tcpDockerEndpoint: input.policy.tcpDockerEndpoint,\n outerSocketInjection: input.policy.outerSocketInjection,\n privilegedTranslation: input.policy.privilegedTranslation,\n writableRoot: input.policy.writableRoot,\n network: {\n version: input.policy.network.version,\n dns: { mode: input.policy.network.dns.mode, servers: [...input.policy.network.dns.servers] },\n egress: {\n mode: input.policy.network.egress.mode,\n allowedProtocols: [...input.policy.network.egress.allowedProtocols],\n denyPrivateNetworks: input.policy.network.egress.denyPrivateNetworks,\n denySiblingSyntheticEndpoints: input.policy.network.egress.denySiblingSyntheticEndpoints,\n denyCidrs: [...input.policy.network.egress.denyCidrs],\n ipv6: input.policy.network.egress.ipv6,\n disableHostLoopback: input.policy.network.egress.disableHostLoopback,\n portDriver: input.policy.network.egress.portDriver,\n daemonBridge: input.policy.network.egress.daemonBridge,\n exclusiveNetwork: input.policy.network.egress.exclusiveNetwork,\n icc: input.policy.network.egress.icc,\n },\n },\n },\n };\n}\nexport function dockerExecutionProfileSemanticPolicyRevisionOf(input: DockerExecutionProfileSemanticInput): string {\n return digestOf(semanticPolicyJson(input)).slice(0, 8);\n}\nexport const dockerProfileSemanticPolicyRevisionOf = dockerExecutionProfileSemanticPolicyRevisionOf;\nfunction formatSchemaPath(path: readonly PropertyKey[]): string {\n return path.reduce<string>((result, segment) => typeof segment === \"number\" ||\n (typeof segment === \"string\" && /^\\\\d+$/.test(segment))\n ? `${result}[${String(segment)}]`\n : `${result}.${String(segment)}`, \"profile\");\n}\nfunction schemaError(value: unknown, error: ParseResult.ParseError): DockerProfileError {\n const issue = ParseResult.ArrayFormatter.formatErrorSync(error)[0];\n const path = issue === undefined ? \"profile\" : formatSchemaPath(issue.path);\n const root = typeof value === \"object\" && value !== null && !Array.isArray(value)\n ? value as Record<string, unknown>\n : undefined;\n if (path === \"profile.schemaVersion\") {\n if (root?.schemaVersion === undefined) {\n return dockerProfileError({\n code: \"sandbox.docker-profile-schema-invalid\",\n path,\n message: \"profile.schemaVersion is required\",\n });\n }\n return dockerProfileError({\n code: \"sandbox.docker-profile-unknown-version\",\n path,\n message: `Unsupported Docker execution profile schema version ${JSON.stringify(root.schemaVersion)}; expected 1`,\n });\n }\n if (path === \"profile.securityLevel\") {\n return dockerProfileError({\n code: \"sandbox.docker-profile-security-level-unsupported\",\n path,\n message: `Unsupported Docker execution profile security level ${JSON.stringify(root?.securityLevel)}`,\n });\n }\n return dockerProfileError({\n code: path === \"profile.capacity\"\n ? \"sandbox.docker-profile-capacity-invalid\"\n : \"sandbox.docker-profile-schema-invalid\",\n path,\n message: issue === undefined\n ? \"profile is not a valid Docker execution profile v1\"\n : `${path} ${issue.message}`,\n });\n}\nexport function parseDockerExecutionProfileV1(value: unknown): DockerExecutionProfileV1 {\n const decoded = Schema.decodeUnknownEither(DockerExecutionProfileV1Schema, ParseOptions)(value);\n if (Either.isLeft(decoded))\n throw schemaError(value, decoded.left);\n const profile = freezeProfile(decoded.right);\n const expected = dockerExecutionProfileSemanticPolicyRevisionOf(profile);\n if (profile.semanticPolicyRevision !== expected) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-semantic-policy-mismatch\",\n path: \"profile.semanticPolicyRevision\",\n message: `profile.semanticPolicyRevision does not match the canonical semantic policy revision ${expected}`,\n details: { expected, actual: profile.semanticPolicyRevision },\n });\n }\n return profile;\n}\nexport const parseDockerExecutionProfile = parseDockerExecutionProfileV1;\nexport const decodeDockerExecutionProfileV1 = parseDockerExecutionProfileV1;\nexport function makeDockerExecutionProfileV1(input: DockerExecutionProfileV1Draft): DockerExecutionProfileV1 {\n return parseDockerExecutionProfileV1({\n ...input,\n semanticPolicyRevision: dockerExecutionProfileSemanticPolicyRevisionOf(input),\n });\n}\nexport const createDockerExecutionProfileV1 = makeDockerExecutionProfileV1;\nexport function isDockerExecutionProfileV1(value: unknown): value is DockerExecutionProfileV1 {\n try {\n parseDockerExecutionProfileV1(value);\n return true;\n }\n catch {\n return false;\n }\n}\n/** Digest the fixed v1 wire shape, not incidental object insertion order. */\nfunction canonicalJson(profile: DockerExecutionProfileV1): JsonValue {\n return {\n schemaVersion: profile.schemaVersion,\n profileId: profile.profileId,\n securityLevel: profile.securityLevel,\n semanticPolicyRevision: profile.semanticPolicyRevision,\n transport: {\n kind: profile.transport.kind,\n hostMachineIdentity: profile.transport.hostMachineIdentity,\n dockerSocket: { ...profile.transport.dockerSocket },\n controlSocket: { ...profile.transport.controlSocket },\n },\n backend: {\n kind: profile.backend.kind,\n machineIdentity: profile.backend.machineIdentity,\n owner: { ...profile.backend.owner },\n filesystem: { ...profile.backend.filesystem },\n cgroup: { ...profile.backend.cgroup, controllers: [...profile.backend.cgroup.controllers] },\n },\n capacity: {\n ...profile.capacity,\n aggregate: { ...profile.capacity.aggregate },\n },\n policy: {\n hostLoopback: profile.policy.hostLoopback,\n tcpDockerEndpoint: profile.policy.tcpDockerEndpoint,\n outerSocketInjection: profile.policy.outerSocketInjection,\n privilegedTranslation: profile.policy.privilegedTranslation,\n writableRoot: profile.policy.writableRoot,\n network: {\n version: profile.policy.network.version,\n dns: { mode: profile.policy.network.dns.mode, servers: [...profile.policy.network.dns.servers] },\n egress: {\n ...profile.policy.network.egress,\n allowedProtocols: [...profile.policy.network.egress.allowedProtocols],\n denyCidrs: [...profile.policy.network.egress.denyCidrs],\n },\n },\n },\n };\n}\nexport function dockerExecutionProfileV1Digest(profile: DockerExecutionProfileV1): string {\n return `sha256:${digestOf(canonicalJson(parseDockerExecutionProfileV1(profile)))}`;\n}\nexport const dockerProfileDigestOf = dockerExecutionProfileV1Digest;\nexport function dockerProfilePublicSummaryOf(profile: DockerExecutionProfileV1): DockerProfilePublicSummary {\n const normalized = parseDockerExecutionProfileV1(profile);\n return Object.freeze({\n schemaVersion: 1,\n profileId: normalized.profileId,\n securityLevel: normalized.securityLevel,\n semanticPolicyRevision: normalized.semanticPolicyRevision,\n capacity: Object.freeze({\n ...normalized.capacity,\n aggregate: Object.freeze({ ...normalized.capacity.aggregate }),\n }),\n });\n}\n"]}
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["schema.ts"],"names":[],"mappings":"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","sourcesContent":["import { Either, ParseResult, Schema } from \"effect\";\nimport { isIP } from \"node:net\";\nimport { isAbsolute } from \"node:path\";\nimport { digestOf } from \"../identity.ts\";\nimport type { JsonValue } from \"../../shared/types.ts\";\nimport { dockerProfileError, type DockerProfileError } from \"./errors.ts\";\nexport const DOCKER_EXECUTION_PROFILE_SCHEMA_VERSION: 1 = 1;\nexport const DOCKER_PROFILE_SCHEMA_VERSION = DOCKER_EXECUTION_PROFILE_SCHEMA_VERSION;\nexport const DOCKER_PROFILE_NETWORK_POLICY_VERSION: 1 = 1;\nexport const DOCKER_PROFILE_NETWORK_DENY_CIDRS: readonly [\n string,\n ...string[]\n] = Object.freeze([\n \"0.0.0.0/8\", \"10.0.0.0/8\", \"100.64.0.0/10\", \"127.0.0.0/8\", \"169.254.0.0/16\",\n \"172.16.0.0/12\", \"192.0.0.0/24\", \"192.0.2.0/24\", \"192.168.0.0/16\",\n \"198.18.0.0/15\", \"198.51.100.0/24\", \"203.0.113.0/24\", \"224.0.0.0/4\",\n \"240.0.0.0/4\", \"::/0\",\n]);\nconst NETWORK_ALLOWED_PROTOCOLS: readonly [\n \"dns\",\n \"https\"\n] = Object.freeze([\"dns\", \"https\"]);\nconst PROFILE_CONTROLLERS: readonly [\n \"cpu\",\n \"memory\",\n \"pids\"\n] = Object.freeze([\n \"cpu\", \"memory\", \"pids\",\n]);\nexport type DockerExecutionProfileSecurityLevel = \"managed-rootless/v1\" | \"raw-dind-storage/v1\";\nexport interface DockerProfileUnixEndpoint {\n readonly path: string;\n readonly peerUid: number;\n}\n/** Callback-free descriptor data that crosses the host deployment trust boundary. */\nexport interface DockerProfileNetworkPolicy {\n readonly version: 1;\n readonly dns: {\n readonly mode: \"explicit\";\n readonly servers: readonly [\n string,\n ...string[]\n ];\n };\n readonly egress: {\n readonly mode: \"rootless-nat\";\n readonly allowedProtocols: readonly [\n \"dns\",\n \"https\"\n ];\n readonly denyPrivateNetworks: true;\n readonly denySiblingSyntheticEndpoints: true;\n readonly denyCidrs: readonly [\n string,\n ...string[]\n ];\n readonly ipv6: \"disabled\";\n readonly disableHostLoopback: true;\n readonly portDriver: \"none\";\n readonly daemonBridge: \"none\";\n readonly exclusiveNetwork: true;\n readonly icc: false;\n };\n}\nexport interface DockerRawStoragePolicy {\n readonly level: \"raw-dind-storage/v1\";\n readonly privilegedTranslation: \"host-daemon\";\n readonly dockerData: \"private-project-quota-allocation/v1\";\n}\nexport interface DockerManagedRootlessPolicy {\n readonly level: \"managed-rootless/v1\";\n readonly hostLoopback: false;\n readonly tcpDockerEndpoint: false;\n readonly outerSocketInjection: false;\n readonly privilegedTranslation: \"rootless-userns\";\n readonly writableRoot: \"declared-tmpfs-only\";\n readonly dockerData: \"private-project-quota-allocation/v1\";\n readonly network: DockerProfileNetworkPolicy;\n}\nexport interface DockerExecutionProfileV1 {\n readonly schemaVersion: 1;\n readonly profileId: string;\n readonly securityLevel: DockerExecutionProfileSecurityLevel;\n readonly semanticPolicyRevision: string;\n readonly transport: {\n readonly kind: \"unix\";\n readonly hostMachineIdentity: string;\n readonly dockerSocket: DockerProfileUnixEndpoint;\n readonly controlSocket: DockerProfileUnixEndpoint & {\n readonly protocol: \"niceeval-docker-profile-control/v1\";\n };\n };\n readonly backend: {\n readonly kind: \"local-systemd\" | \"dedicated-linux-vm\";\n readonly machineIdentity: string;\n readonly owner: {\n readonly uid: number;\n readonly gid: number;\n };\n readonly filesystem: {\n readonly identity: string;\n readonly mountPath: string;\n readonly dockerRootDir: string;\n readonly limitBytes: number;\n readonly dockerDataPool: {\n readonly count: number;\n readonly bytesPerAllocation: number;\n readonly attestation: \"linux-project-quota/v1\";\n };\n };\n readonly cgroup: {\n readonly aggregatePath: string;\n readonly policyRevision: string;\n readonly controllers: readonly [\n \"cpu\",\n \"memory\",\n \"pids\"\n ];\n };\n };\n readonly capacity: {\n readonly cpus: number;\n readonly memoryBytes: number;\n readonly memorySwapBytes: 0;\n readonly pids: number;\n readonly maxContainers: number;\n readonly maxBuilds: number;\n readonly ephemeralDiskBytes: number;\n readonly aggregate: {\n readonly cpus: number;\n readonly memoryBytes: number;\n readonly memorySwapBytes: 0;\n readonly pids: number;\n };\n };\n readonly policy: DockerRawStoragePolicy | DockerManagedRootlessPolicy;\n}\nexport type DockerExecutionProfileV1Draft = Omit<DockerExecutionProfileV1, \"semanticPolicyRevision\">;\n/** A deliberately narrow view: never exposes host endpoints, paths, owners, or policy. */\nexport interface DockerProfilePublicSummary {\n readonly schemaVersion: 1;\n readonly profileId: string;\n readonly securityLevel: DockerExecutionProfileSecurityLevel;\n readonly semanticPolicyRevision: string;\n readonly capacity: DockerExecutionProfileV1[\"capacity\"];\n}\ntype DockerExecutionProfileSemanticInput = Pick<DockerExecutionProfileV1, \"securityLevel\" | \"backend\" | \"policy\">;\nconst ParseOptions = Object.freeze({\n errors: \"all\" as const,\n exact: true,\n onExcessProperty: \"error\" as const,\n});\ntype PlainObject = Readonly<Record<PropertyKey, unknown>>;\nconst PlainObjectSchema = Schema.declare<PlainObject>((value): value is PlainObject => {\n if (typeof value !== \"object\" || value === null || Array.isArray(value))\n return false;\n const prototype = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n}, {\n identifier: \"DockerProfilePlainObject\",\n description: \"a plain object or null-prototype record\",\n});\nconst plainStruct = <Fields extends Schema.Struct.Fields>(fields: Fields) => Schema.compose(Schema.Struct(fields), { strict: false })(PlainObjectSchema);\nconst nonEmptyString = (identifier: string) => Schema.String.pipe(Schema.filter((value) => value.trim() !== \"\" && !value.includes(\"\\0\"), { identifier, description: \"a non-empty string without NUL\" }));\nconst absolutePath = (identifier: string) => nonEmptyString(identifier).pipe(Schema.filter(isAbsolute, { identifier, description: \"an absolute path\" }));\nconst nonNegativeSafeInteger = (identifier: string) => Schema.JsonNumber.pipe(Schema.filter((value) => Number.isSafeInteger(value) && value >= 0, { identifier, description: \"a non-negative safe integer\" }));\nconst positiveSafeInteger = (identifier: string) => Schema.JsonNumber.pipe(Schema.filter((value) => Number.isSafeInteger(value) && value > 0, { identifier, description: \"a positive safe integer\" }));\nconst positiveFinite = (identifier: string) => Schema.JsonNumber.pipe(Schema.filter((value) => Number.isFinite(value) && value > 0, { identifier, description: \"a positive finite number\" }));\nfunction isPublicDnsServer(value: string): boolean {\n const kind = isIP(value);\n if (kind === 4) {\n const [first, second, third] = value.split(\".\").map(Number);\n if (first === undefined || second === undefined || third === undefined)\n return false;\n if (first === 0 || first === 10 || first === 127 || first >= 224)\n return false;\n if (first === 100 && second >= 64 && second <= 127)\n return false;\n if (first === 169 && second === 254)\n return false;\n if (first === 172 && second >= 16 && second <= 31)\n return false;\n if (first === 192 && second === 168)\n return false;\n if (first === 192 && second === 0 && (third === 0 || third === 2))\n return false;\n if (first === 198 && (second === 18 || second === 19))\n return false;\n if (first === 198 && second === 51 && third === 100)\n return false;\n return !(first === 203 && second === 0 && third === 113);\n }\n if (kind !== 6)\n return false;\n const normalized = value.toLowerCase();\n if (normalized.startsWith(\"::ffff:\")) {\n return isPublicDnsServer(normalized.slice(\"::ffff:\".length));\n }\n return normalized !== \"::\" && normalized !== \"::1\" &&\n !normalized.startsWith(\"fc\") && !normalized.startsWith(\"fd\") &&\n !normalized.startsWith(\"fe8\") && !normalized.startsWith(\"fe9\") &&\n !normalized.startsWith(\"fea\") && !normalized.startsWith(\"feb\") &&\n !normalized.startsWith(\"ff\") && !normalized.startsWith(\"2001:db8:\");\n}\nconst DnsServerSchema = nonEmptyString(\"DockerProfilePublicDnsServer\").pipe(Schema.filter(isPublicDnsServer, {\n identifier: \"DockerProfilePublicDnsServer\",\n description: \"a public IP address, not a private or synthetic endpoint\",\n}));\nconst CidrsSchema = Schema.NonEmptyArray(Schema.String).pipe(Schema.filter((value) => value.length === DOCKER_PROFILE_NETWORK_DENY_CIDRS.length &&\n value.every((cidr, index) => cidr === DOCKER_PROFILE_NETWORK_DENY_CIDRS[index]), { identifier: \"DockerProfileDenyCidrs\", description: \"the v1 fail-closed CIDR set\" }));\nconst EndpointSchema = plainStruct({\n path: absolutePath(\"DockerProfileSocketPath\"),\n peerUid: nonNegativeSafeInteger(\"DockerProfilePeerUid\"),\n});\nconst NetworkSchema = plainStruct({\n version: Schema.Literal(1),\n dns: plainStruct({\n mode: Schema.Literal(\"explicit\"),\n servers: Schema.NonEmptyArray(DnsServerSchema),\n }),\n egress: plainStruct({\n mode: Schema.Literal(\"rootless-nat\"),\n allowedProtocols: Schema.Tuple(Schema.Literal(\"dns\"), Schema.Literal(\"https\")),\n denyPrivateNetworks: Schema.Literal(true),\n denySiblingSyntheticEndpoints: Schema.Literal(true),\n denyCidrs: CidrsSchema,\n ipv6: Schema.Literal(\"disabled\"),\n disableHostLoopback: Schema.Literal(true),\n portDriver: Schema.Literal(\"none\"),\n daemonBridge: Schema.Literal(\"none\"),\n exclusiveNetwork: Schema.Literal(true),\n icc: Schema.Literal(false),\n }),\n});\nconst CapacitySchema = plainStruct({\n cpus: positiveFinite(\"DockerProfileCapacityCpus\"),\n memoryBytes: positiveSafeInteger(\"DockerProfileCapacityMemoryBytes\"),\n memorySwapBytes: Schema.Literal(0),\n pids: positiveSafeInteger(\"DockerProfileCapacityPids\"),\n maxContainers: positiveSafeInteger(\"DockerProfileCapacityMaxContainers\"),\n maxBuilds: positiveSafeInteger(\"DockerProfileCapacityMaxBuilds\"),\n ephemeralDiskBytes: positiveSafeInteger(\"DockerProfileCapacityEphemeralDiskBytes\"),\n aggregate: plainStruct({\n cpus: positiveFinite(\"DockerProfileAggregateCpus\"),\n memoryBytes: positiveSafeInteger(\"DockerProfileAggregateMemoryBytes\"),\n memorySwapBytes: Schema.Literal(0),\n pids: positiveSafeInteger(\"DockerProfileAggregatePids\"),\n }),\n}).pipe(Schema.filter((value) => value.aggregate.cpus >= value.cpus &&\n value.aggregate.memoryBytes >= value.memoryBytes &&\n value.aggregate.pids >= value.pids, {\n identifier: \"DockerProfileCapacity\",\n description: \"aggregate capacity at least as large as allocatable CPU, memory and PID capacity\",\n}));\n/** Wire structure only; semantic revision and frozen canonical values are checked after decode. */\nexport const DockerExecutionProfileV1Schema: Schema.Schema<DockerExecutionProfileV1, PlainObject> = plainStruct({\n schemaVersion: Schema.Literal(1),\n profileId: nonEmptyString(\"DockerProfileId\"),\n securityLevel: Schema.Literal(\"managed-rootless/v1\", \"raw-dind-storage/v1\"),\n semanticPolicyRevision: nonEmptyString(\"DockerProfileSemanticPolicyRevision\"),\n transport: plainStruct({\n kind: Schema.Literal(\"unix\"),\n hostMachineIdentity: nonEmptyString(\"DockerProfileHostMachineIdentity\"),\n dockerSocket: EndpointSchema,\n controlSocket: plainStruct({\n path: absolutePath(\"DockerProfileControlSocketPath\"),\n peerUid: nonNegativeSafeInteger(\"DockerProfileControlPeerUid\"),\n protocol: Schema.Literal(\"niceeval-docker-profile-control/v1\"),\n }),\n }),\n backend: plainStruct({\n kind: Schema.Literal(\"local-systemd\", \"dedicated-linux-vm\"),\n machineIdentity: nonEmptyString(\"DockerProfileBackendMachineIdentity\"),\n owner: plainStruct({\n uid: nonNegativeSafeInteger(\"DockerProfileOwnerUid\"),\n gid: nonNegativeSafeInteger(\"DockerProfileOwnerGid\"),\n }),\n filesystem: plainStruct({\n identity: nonEmptyString(\"DockerProfileFilesystemIdentity\"),\n mountPath: absolutePath(\"DockerProfileMountPath\"),\n dockerRootDir: absolutePath(\"DockerProfileDockerRootDir\"),\n limitBytes: positiveSafeInteger(\"DockerProfileFilesystemLimitBytes\"),\n dockerDataPool: plainStruct({\n count: positiveSafeInteger(\"DockerProfileDockerDataSlotCount\"),\n bytesPerAllocation: positiveSafeInteger(\"DockerProfileDockerDataAllocationLimitBytes\"),\n attestation: Schema.Literal(\"linux-project-quota/v1\"),\n }),\n }),\n cgroup: plainStruct({\n aggregatePath: absolutePath(\"DockerProfileAggregatePath\"),\n policyRevision: nonEmptyString(\"DockerProfileCgroupPolicyRevision\"),\n controllers: Schema.Tuple(Schema.Literal(\"cpu\"), Schema.Literal(\"memory\"), Schema.Literal(\"pids\")),\n }),\n }),\n capacity: CapacitySchema,\n policy: Schema.Union(plainStruct({\n level: Schema.Literal(\"raw-dind-storage/v1\"),\n privilegedTranslation: Schema.Literal(\"host-daemon\"),\n dockerData: Schema.Literal(\"private-project-quota-allocation/v1\"),\n }), plainStruct({\n level: Schema.Literal(\"managed-rootless/v1\"),\n hostLoopback: Schema.Literal(false),\n tcpDockerEndpoint: Schema.Literal(false),\n outerSocketInjection: Schema.Literal(false),\n privilegedTranslation: Schema.Literal(\"rootless-userns\"),\n writableRoot: Schema.Literal(\"declared-tmpfs-only\"),\n dockerData: Schema.Literal(\"private-project-quota-allocation/v1\"),\n network: NetworkSchema,\n })),\n});\nexport const DockerExecutionProfileSchema = DockerExecutionProfileV1Schema;\nfunction frozenNonEmptyStrings(values: readonly string[]): readonly [\n string,\n ...string[]\n] {\n const [first, ...rest] = values;\n if (first === undefined)\n throw new Error(\"expected a non-empty string tuple\");\n return Object.freeze([first, ...rest]);\n}\n/** Canonicalize only after structural decoding; nested containers are immutable to callers. */\nfunction freezeProfile(profile: DockerExecutionProfileV1): DockerExecutionProfileV1 {\n return Object.freeze({\n ...profile,\n transport: Object.freeze({\n ...profile.transport,\n dockerSocket: Object.freeze({ ...profile.transport.dockerSocket }),\n controlSocket: Object.freeze({ ...profile.transport.controlSocket }),\n }),\n backend: Object.freeze({\n ...profile.backend,\n owner: Object.freeze({ ...profile.backend.owner }),\n filesystem: Object.freeze({\n ...profile.backend.filesystem,\n dockerDataPool: Object.freeze({ ...profile.backend.filesystem.dockerDataPool }),\n }),\n cgroup: Object.freeze({ ...profile.backend.cgroup, controllers: PROFILE_CONTROLLERS }),\n }),\n capacity: Object.freeze({\n ...profile.capacity,\n memorySwapBytes: 0,\n aggregate: Object.freeze({ ...profile.capacity.aggregate, memorySwapBytes: 0 }),\n }),\n policy: profile.policy.level === \"raw-dind-storage/v1\"\n ? Object.freeze({ ...profile.policy })\n : Object.freeze({\n ...profile.policy,\n network: Object.freeze({\n ...profile.policy.network,\n dns: Object.freeze({\n ...profile.policy.network.dns,\n servers: frozenNonEmptyStrings(profile.policy.network.dns.servers),\n }),\n egress: Object.freeze({\n ...profile.policy.network.egress,\n allowedProtocols: NETWORK_ALLOWED_PROTOCOLS,\n denyCidrs: DOCKER_PROFILE_NETWORK_DENY_CIDRS,\n }),\n }),\n }),\n });\n}\nfunction semanticPolicyJson(input: DockerExecutionProfileSemanticInput): JsonValue {\n return {\n schemaVersion: DOCKER_EXECUTION_PROFILE_SCHEMA_VERSION,\n securityLevel: input.securityLevel,\n backend: {\n kind: input.backend.kind,\n cgroup: {\n policyRevision: input.backend.cgroup.policyRevision,\n controllers: [...input.backend.cgroup.controllers],\n },\n },\n policy: input.policy.level === \"raw-dind-storage/v1\" ? {\n level: input.policy.level,\n privilegedTranslation: input.policy.privilegedTranslation,\n dockerData: input.policy.dockerData,\n } : {\n level: input.policy.level,\n hostLoopback: input.policy.hostLoopback,\n tcpDockerEndpoint: input.policy.tcpDockerEndpoint,\n outerSocketInjection: input.policy.outerSocketInjection,\n privilegedTranslation: input.policy.privilegedTranslation,\n writableRoot: input.policy.writableRoot,\n dockerData: input.policy.dockerData,\n network: {\n version: input.policy.network.version,\n dns: { mode: input.policy.network.dns.mode, servers: [...input.policy.network.dns.servers] },\n egress: {\n mode: input.policy.network.egress.mode,\n allowedProtocols: [...input.policy.network.egress.allowedProtocols],\n denyPrivateNetworks: input.policy.network.egress.denyPrivateNetworks,\n denySiblingSyntheticEndpoints: input.policy.network.egress.denySiblingSyntheticEndpoints,\n denyCidrs: [...input.policy.network.egress.denyCidrs],\n ipv6: input.policy.network.egress.ipv6,\n disableHostLoopback: input.policy.network.egress.disableHostLoopback,\n portDriver: input.policy.network.egress.portDriver,\n daemonBridge: input.policy.network.egress.daemonBridge,\n exclusiveNetwork: input.policy.network.egress.exclusiveNetwork,\n icc: input.policy.network.egress.icc,\n },\n },\n },\n };\n}\nexport function dockerExecutionProfileSemanticPolicyRevisionOf(input: DockerExecutionProfileSemanticInput): string {\n return digestOf(semanticPolicyJson(input)).slice(0, 8);\n}\nexport const dockerProfileSemanticPolicyRevisionOf = dockerExecutionProfileSemanticPolicyRevisionOf;\nfunction formatSchemaPath(path: readonly PropertyKey[]): string {\n return path.reduce<string>((result, segment) => typeof segment === \"number\" ||\n (typeof segment === \"string\" && /^\\\\d+$/.test(segment))\n ? `${result}[${String(segment)}]`\n : `${result}.${String(segment)}`, \"profile\");\n}\nfunction schemaError(value: unknown, error: ParseResult.ParseError): DockerProfileError {\n const issue = ParseResult.ArrayFormatter.formatErrorSync(error)[0];\n const path = issue === undefined ? \"profile\" : formatSchemaPath(issue.path);\n const root = typeof value === \"object\" && value !== null && !Array.isArray(value)\n ? value as Record<string, unknown>\n : undefined;\n if (path === \"profile.schemaVersion\") {\n if (root?.schemaVersion === undefined) {\n return dockerProfileError({\n code: \"sandbox.docker-profile-schema-invalid\",\n path,\n message: \"profile.schemaVersion is required\",\n });\n }\n return dockerProfileError({\n code: \"sandbox.docker-profile-unknown-version\",\n path,\n message: `Unsupported Docker execution profile schema version ${JSON.stringify(root.schemaVersion)}; expected 1`,\n });\n }\n if (path === \"profile.securityLevel\") {\n return dockerProfileError({\n code: \"sandbox.docker-profile-security-level-unsupported\",\n path,\n message: `Unsupported Docker execution profile security level ${JSON.stringify(root?.securityLevel)}`,\n });\n }\n return dockerProfileError({\n code: path === \"profile.capacity\"\n ? \"sandbox.docker-profile-capacity-invalid\"\n : \"sandbox.docker-profile-schema-invalid\",\n path,\n message: issue === undefined\n ? \"profile is not a valid Docker execution profile v1\"\n : `${path} ${issue.message}`,\n });\n}\nexport function parseDockerExecutionProfileV1(value: unknown): DockerExecutionProfileV1 {\n const decoded = Schema.decodeUnknownEither(DockerExecutionProfileV1Schema, ParseOptions)(value);\n if (Either.isLeft(decoded))\n throw schemaError(value, decoded.left);\n const profile = freezeProfile(decoded.right);\n if (profile.backend.filesystem.dockerDataPool.count < profile.capacity.maxContainers ||\n profile.backend.filesystem.dockerDataPool.count *\n profile.backend.filesystem.dockerDataPool.bytesPerAllocation < profile.capacity.ephemeralDiskBytes) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-capacity-invalid\",\n path: \"profile.backend.filesystem.dockerDataPool\",\n message: \"Docker data allocations must cover maxContainers and allocatable ephemeralDiskBytes\",\n });\n }\n const rawStorage = profile.securityLevel === \"raw-dind-storage/v1\";\n if (profile.policy.level !== profile.securityLevel ||\n (rawStorage\n ? profile.policy.privilegedTranslation !== \"host-daemon\"\n : profile.policy.privilegedTranslation !== \"rootless-userns\")) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-security-level-unsupported\",\n path: \"profile.policy\",\n message: \"Docker profile policy level and privileged translation must match its security level\",\n });\n }\n const expected = dockerExecutionProfileSemanticPolicyRevisionOf(profile);\n if (profile.semanticPolicyRevision !== expected) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-semantic-policy-mismatch\",\n path: \"profile.semanticPolicyRevision\",\n message: `profile.semanticPolicyRevision does not match the canonical semantic policy revision ${expected}`,\n details: { expected, actual: profile.semanticPolicyRevision },\n });\n }\n return profile;\n}\nexport const parseDockerExecutionProfile = parseDockerExecutionProfileV1;\nexport const decodeDockerExecutionProfileV1 = parseDockerExecutionProfileV1;\nexport function makeDockerExecutionProfileV1(input: DockerExecutionProfileV1Draft): DockerExecutionProfileV1 {\n return parseDockerExecutionProfileV1({\n ...input,\n semanticPolicyRevision: dockerExecutionProfileSemanticPolicyRevisionOf(input),\n });\n}\nexport const createDockerExecutionProfileV1 = makeDockerExecutionProfileV1;\nexport function isDockerExecutionProfileV1(value: unknown): value is DockerExecutionProfileV1 {\n try {\n parseDockerExecutionProfileV1(value);\n return true;\n }\n catch {\n return false;\n }\n}\n/** Digest the fixed v1 wire shape, not incidental object insertion order. */\nfunction canonicalJson(profile: DockerExecutionProfileV1): JsonValue {\n return {\n schemaVersion: profile.schemaVersion,\n profileId: profile.profileId,\n securityLevel: profile.securityLevel,\n semanticPolicyRevision: profile.semanticPolicyRevision,\n transport: {\n kind: profile.transport.kind,\n hostMachineIdentity: profile.transport.hostMachineIdentity,\n dockerSocket: { ...profile.transport.dockerSocket },\n controlSocket: { ...profile.transport.controlSocket },\n },\n backend: {\n kind: profile.backend.kind,\n machineIdentity: profile.backend.machineIdentity,\n owner: { ...profile.backend.owner },\n filesystem: { ...profile.backend.filesystem },\n cgroup: { ...profile.backend.cgroup, controllers: [...profile.backend.cgroup.controllers] },\n },\n capacity: {\n ...profile.capacity,\n aggregate: { ...profile.capacity.aggregate },\n },\n policy: profile.policy.level === \"raw-dind-storage/v1\" ? {\n level: profile.policy.level,\n privilegedTranslation: profile.policy.privilegedTranslation,\n dockerData: profile.policy.dockerData,\n } : {\n level: profile.policy.level,\n hostLoopback: profile.policy.hostLoopback,\n tcpDockerEndpoint: profile.policy.tcpDockerEndpoint,\n outerSocketInjection: profile.policy.outerSocketInjection,\n privilegedTranslation: profile.policy.privilegedTranslation,\n writableRoot: profile.policy.writableRoot,\n dockerData: profile.policy.dockerData,\n network: {\n version: profile.policy.network.version,\n dns: { mode: profile.policy.network.dns.mode, servers: [...profile.policy.network.dns.servers] },\n egress: {\n ...profile.policy.network.egress,\n allowedProtocols: [...profile.policy.network.egress.allowedProtocols],\n denyCidrs: [...profile.policy.network.egress.denyCidrs],\n },\n },\n },\n };\n}\nexport function dockerExecutionProfileV1Digest(profile: DockerExecutionProfileV1): string {\n return `sha256:${digestOf(canonicalJson(parseDockerExecutionProfileV1(profile)))}`;\n}\nexport const dockerProfileDigestOf = dockerExecutionProfileV1Digest;\nexport function dockerProfilePublicSummaryOf(profile: DockerExecutionProfileV1): DockerProfilePublicSummary {\n const normalized = parseDockerExecutionProfileV1(profile);\n return Object.freeze({\n schemaVersion: 1,\n profileId: normalized.profileId,\n securityLevel: normalized.securityLevel,\n semanticPolicyRevision: normalized.semanticPolicyRevision,\n capacity: Object.freeze({\n ...normalized.capacity,\n aggregate: Object.freeze({ ...normalized.capacity.aggregate }),\n }),\n });\n}\n"]}
|
|
@@ -3,7 +3,7 @@ export declare const DOCKER_EXECUTION_PROFILE_SCHEMA_VERSION: 1;
|
|
|
3
3
|
export declare const DOCKER_PROFILE_SCHEMA_VERSION: 1;
|
|
4
4
|
export declare const DOCKER_PROFILE_NETWORK_POLICY_VERSION: 1;
|
|
5
5
|
export declare const DOCKER_PROFILE_NETWORK_DENY_CIDRS: readonly [string, ...string[]];
|
|
6
|
-
export type DockerExecutionProfileSecurityLevel = "managed-rootless/v1" | "
|
|
6
|
+
export type DockerExecutionProfileSecurityLevel = "managed-rootless/v1" | "raw-dind-storage/v1";
|
|
7
7
|
export interface DockerProfileUnixEndpoint {
|
|
8
8
|
readonly path: string;
|
|
9
9
|
readonly peerUid: number;
|
|
@@ -29,6 +29,21 @@ export interface DockerProfileNetworkPolicy {
|
|
|
29
29
|
readonly icc: false;
|
|
30
30
|
};
|
|
31
31
|
}
|
|
32
|
+
export interface DockerRawStoragePolicy {
|
|
33
|
+
readonly level: "raw-dind-storage/v1";
|
|
34
|
+
readonly privilegedTranslation: "host-daemon";
|
|
35
|
+
readonly dockerData: "private-project-quota-allocation/v1";
|
|
36
|
+
}
|
|
37
|
+
export interface DockerManagedRootlessPolicy {
|
|
38
|
+
readonly level: "managed-rootless/v1";
|
|
39
|
+
readonly hostLoopback: false;
|
|
40
|
+
readonly tcpDockerEndpoint: false;
|
|
41
|
+
readonly outerSocketInjection: false;
|
|
42
|
+
readonly privilegedTranslation: "rootless-userns";
|
|
43
|
+
readonly writableRoot: "declared-tmpfs-only";
|
|
44
|
+
readonly dockerData: "private-project-quota-allocation/v1";
|
|
45
|
+
readonly network: DockerProfileNetworkPolicy;
|
|
46
|
+
}
|
|
32
47
|
export interface DockerExecutionProfileV1 {
|
|
33
48
|
readonly schemaVersion: 1;
|
|
34
49
|
readonly profileId: string;
|
|
@@ -54,6 +69,11 @@ export interface DockerExecutionProfileV1 {
|
|
|
54
69
|
readonly mountPath: string;
|
|
55
70
|
readonly dockerRootDir: string;
|
|
56
71
|
readonly limitBytes: number;
|
|
72
|
+
readonly dockerDataPool: {
|
|
73
|
+
readonly count: number;
|
|
74
|
+
readonly bytesPerAllocation: number;
|
|
75
|
+
readonly attestation: "linux-project-quota/v1";
|
|
76
|
+
};
|
|
57
77
|
};
|
|
58
78
|
readonly cgroup: {
|
|
59
79
|
readonly aggregatePath: string;
|
|
@@ -68,6 +88,7 @@ export interface DockerExecutionProfileV1 {
|
|
|
68
88
|
readonly pids: number;
|
|
69
89
|
readonly maxContainers: number;
|
|
70
90
|
readonly maxBuilds: number;
|
|
91
|
+
readonly ephemeralDiskBytes: number;
|
|
71
92
|
readonly aggregate: {
|
|
72
93
|
readonly cpus: number;
|
|
73
94
|
readonly memoryBytes: number;
|
|
@@ -75,14 +96,7 @@ export interface DockerExecutionProfileV1 {
|
|
|
75
96
|
readonly pids: number;
|
|
76
97
|
};
|
|
77
98
|
};
|
|
78
|
-
readonly policy:
|
|
79
|
-
readonly hostLoopback: false;
|
|
80
|
-
readonly tcpDockerEndpoint: false;
|
|
81
|
-
readonly outerSocketInjection: false;
|
|
82
|
-
readonly privilegedTranslation: "rootless-userns";
|
|
83
|
-
readonly writableRoot: "declared-tmpfs-only";
|
|
84
|
-
readonly network: DockerProfileNetworkPolicy;
|
|
85
|
-
};
|
|
99
|
+
readonly policy: DockerRawStoragePolicy | DockerManagedRootlessPolicy;
|
|
86
100
|
}
|
|
87
101
|
export type DockerExecutionProfileV1Draft = Omit<DockerExecutionProfileV1, "semanticPolicyRevision">;
|
|
88
102
|
/** A deliberately narrow view: never exposes host endpoints, paths, owners, or policy. */
|
|
@@ -3,7 +3,7 @@ export declare const DOCKER_EXECUTION_PROFILE_SCHEMA_VERSION: 1;
|
|
|
3
3
|
export declare const DOCKER_PROFILE_SCHEMA_VERSION: 1;
|
|
4
4
|
export declare const DOCKER_PROFILE_NETWORK_POLICY_VERSION: 1;
|
|
5
5
|
export declare const DOCKER_PROFILE_NETWORK_DENY_CIDRS: readonly [string, ...string[]];
|
|
6
|
-
export type DockerExecutionProfileSecurityLevel = "managed-rootless/v1" | "
|
|
6
|
+
export type DockerExecutionProfileSecurityLevel = "managed-rootless/v1" | "raw-dind-storage/v1";
|
|
7
7
|
export interface DockerProfileUnixEndpoint {
|
|
8
8
|
readonly path: string;
|
|
9
9
|
readonly peerUid: number;
|
|
@@ -29,6 +29,21 @@ export interface DockerProfileNetworkPolicy {
|
|
|
29
29
|
readonly icc: false;
|
|
30
30
|
};
|
|
31
31
|
}
|
|
32
|
+
export interface DockerRawStoragePolicy {
|
|
33
|
+
readonly level: "raw-dind-storage/v1";
|
|
34
|
+
readonly privilegedTranslation: "host-daemon";
|
|
35
|
+
readonly dockerData: "private-project-quota-allocation/v1";
|
|
36
|
+
}
|
|
37
|
+
export interface DockerManagedRootlessPolicy {
|
|
38
|
+
readonly level: "managed-rootless/v1";
|
|
39
|
+
readonly hostLoopback: false;
|
|
40
|
+
readonly tcpDockerEndpoint: false;
|
|
41
|
+
readonly outerSocketInjection: false;
|
|
42
|
+
readonly privilegedTranslation: "rootless-userns";
|
|
43
|
+
readonly writableRoot: "declared-tmpfs-only";
|
|
44
|
+
readonly dockerData: "private-project-quota-allocation/v1";
|
|
45
|
+
readonly network: DockerProfileNetworkPolicy;
|
|
46
|
+
}
|
|
32
47
|
export interface DockerExecutionProfileV1 {
|
|
33
48
|
readonly schemaVersion: 1;
|
|
34
49
|
readonly profileId: string;
|
|
@@ -54,6 +69,11 @@ export interface DockerExecutionProfileV1 {
|
|
|
54
69
|
readonly mountPath: string;
|
|
55
70
|
readonly dockerRootDir: string;
|
|
56
71
|
readonly limitBytes: number;
|
|
72
|
+
readonly dockerDataPool: {
|
|
73
|
+
readonly count: number;
|
|
74
|
+
readonly bytesPerAllocation: number;
|
|
75
|
+
readonly attestation: "linux-project-quota/v1";
|
|
76
|
+
};
|
|
57
77
|
};
|
|
58
78
|
readonly cgroup: {
|
|
59
79
|
readonly aggregatePath: string;
|
|
@@ -68,6 +88,7 @@ export interface DockerExecutionProfileV1 {
|
|
|
68
88
|
readonly pids: number;
|
|
69
89
|
readonly maxContainers: number;
|
|
70
90
|
readonly maxBuilds: number;
|
|
91
|
+
readonly ephemeralDiskBytes: number;
|
|
71
92
|
readonly aggregate: {
|
|
72
93
|
readonly cpus: number;
|
|
73
94
|
readonly memoryBytes: number;
|
|
@@ -75,14 +96,7 @@ export interface DockerExecutionProfileV1 {
|
|
|
75
96
|
readonly pids: number;
|
|
76
97
|
};
|
|
77
98
|
};
|
|
78
|
-
readonly policy:
|
|
79
|
-
readonly hostLoopback: false;
|
|
80
|
-
readonly tcpDockerEndpoint: false;
|
|
81
|
-
readonly outerSocketInjection: false;
|
|
82
|
-
readonly privilegedTranslation: "rootless-userns";
|
|
83
|
-
readonly writableRoot: "declared-tmpfs-only";
|
|
84
|
-
readonly network: DockerProfileNetworkPolicy;
|
|
85
|
-
};
|
|
99
|
+
readonly policy: DockerRawStoragePolicy | DockerManagedRootlessPolicy;
|
|
86
100
|
}
|
|
87
101
|
export type DockerExecutionProfileV1Draft = Omit<DockerExecutionProfileV1, "semanticPolicyRevision">;
|
|
88
102
|
/** A deliberately narrow view: never exposes host endpoints, paths, owners, or policy. */
|
|
@@ -3,7 +3,7 @@ export declare const DOCKER_EXECUTION_PROFILE_SCHEMA_VERSION: 1;
|
|
|
3
3
|
export declare const DOCKER_PROFILE_SCHEMA_VERSION: 1;
|
|
4
4
|
export declare const DOCKER_PROFILE_NETWORK_POLICY_VERSION: 1;
|
|
5
5
|
export declare const DOCKER_PROFILE_NETWORK_DENY_CIDRS: readonly [string, ...string[]];
|
|
6
|
-
export type DockerExecutionProfileSecurityLevel = "managed-rootless/v1" | "
|
|
6
|
+
export type DockerExecutionProfileSecurityLevel = "managed-rootless/v1" | "raw-dind-storage/v1";
|
|
7
7
|
export interface DockerProfileUnixEndpoint {
|
|
8
8
|
readonly path: string;
|
|
9
9
|
readonly peerUid: number;
|
|
@@ -29,6 +29,21 @@ export interface DockerProfileNetworkPolicy {
|
|
|
29
29
|
readonly icc: false;
|
|
30
30
|
};
|
|
31
31
|
}
|
|
32
|
+
export interface DockerRawStoragePolicy {
|
|
33
|
+
readonly level: "raw-dind-storage/v1";
|
|
34
|
+
readonly privilegedTranslation: "host-daemon";
|
|
35
|
+
readonly dockerData: "private-project-quota-allocation/v1";
|
|
36
|
+
}
|
|
37
|
+
export interface DockerManagedRootlessPolicy {
|
|
38
|
+
readonly level: "managed-rootless/v1";
|
|
39
|
+
readonly hostLoopback: false;
|
|
40
|
+
readonly tcpDockerEndpoint: false;
|
|
41
|
+
readonly outerSocketInjection: false;
|
|
42
|
+
readonly privilegedTranslation: "rootless-userns";
|
|
43
|
+
readonly writableRoot: "declared-tmpfs-only";
|
|
44
|
+
readonly dockerData: "private-project-quota-allocation/v1";
|
|
45
|
+
readonly network: DockerProfileNetworkPolicy;
|
|
46
|
+
}
|
|
32
47
|
export interface DockerExecutionProfileV1 {
|
|
33
48
|
readonly schemaVersion: 1;
|
|
34
49
|
readonly profileId: string;
|
|
@@ -54,6 +69,11 @@ export interface DockerExecutionProfileV1 {
|
|
|
54
69
|
readonly mountPath: string;
|
|
55
70
|
readonly dockerRootDir: string;
|
|
56
71
|
readonly limitBytes: number;
|
|
72
|
+
readonly dockerDataPool: {
|
|
73
|
+
readonly count: number;
|
|
74
|
+
readonly bytesPerAllocation: number;
|
|
75
|
+
readonly attestation: "linux-project-quota/v1";
|
|
76
|
+
};
|
|
57
77
|
};
|
|
58
78
|
readonly cgroup: {
|
|
59
79
|
readonly aggregatePath: string;
|
|
@@ -68,6 +88,7 @@ export interface DockerExecutionProfileV1 {
|
|
|
68
88
|
readonly pids: number;
|
|
69
89
|
readonly maxContainers: number;
|
|
70
90
|
readonly maxBuilds: number;
|
|
91
|
+
readonly ephemeralDiskBytes: number;
|
|
71
92
|
readonly aggregate: {
|
|
72
93
|
readonly cpus: number;
|
|
73
94
|
readonly memoryBytes: number;
|
|
@@ -75,14 +96,7 @@ export interface DockerExecutionProfileV1 {
|
|
|
75
96
|
readonly pids: number;
|
|
76
97
|
};
|
|
77
98
|
};
|
|
78
|
-
readonly policy:
|
|
79
|
-
readonly hostLoopback: false;
|
|
80
|
-
readonly tcpDockerEndpoint: false;
|
|
81
|
-
readonly outerSocketInjection: false;
|
|
82
|
-
readonly privilegedTranslation: "rootless-userns";
|
|
83
|
-
readonly writableRoot: "declared-tmpfs-only";
|
|
84
|
-
readonly network: DockerProfileNetworkPolicy;
|
|
85
|
-
};
|
|
99
|
+
readonly policy: DockerRawStoragePolicy | DockerManagedRootlessPolicy;
|
|
86
100
|
}
|
|
87
101
|
export type DockerExecutionProfileV1Draft = Omit<DockerExecutionProfileV1, "semanticPolicyRevision">;
|
|
88
102
|
/** A deliberately narrow view: never exposes host endpoints, paths, owners, or policy. */
|