spawnfile 0.1.33 → 0.1.35
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/README.md +1 -1
- package/dist/audit/readAudit.d.ts +3 -3
- package/dist/auth/profileStore.d.ts +3 -1
- package/dist/auth/profileStore.js +31 -30
- package/dist/auth/trainingAuth.d.ts +2 -5
- package/dist/auth/types.d.ts +16 -0
- package/dist/cli/authCommands.d.ts +1 -1
- package/dist/cli/authCommands.js +21 -1
- package/dist/cli/devCommands.d.ts +1 -1
- package/dist/cli/devCommands.js +0 -66
- package/dist/cli/runCli.d.ts +3 -4
- package/dist/cli/runCli.js +4 -3
- package/dist/cli/trainCommand.js +9 -15
- package/dist/cli/trainingBooted.d.ts +9 -0
- package/dist/cli/trainingBooted.js +45 -0
- package/dist/cli/trainingExecution.d.ts +4 -7
- package/dist/cli/trainingExecution.js +4 -32
- package/dist/compiler/containerArtifacts.js +0 -5
- package/dist/compiler/containerBackedMountRender.js +5 -1
- package/dist/compiler/containerDaimonBrokerRender.d.ts +5 -50
- package/dist/compiler/containerDaimonBrokerRender.js +19 -90
- package/dist/compiler/containerDaimonGatewayRender.d.ts +50 -0
- package/dist/compiler/containerDaimonGatewayRender.js +161 -0
- package/dist/compiler/containerDaimonGrokWorkerProvisioning.d.ts +2 -10
- package/dist/compiler/containerDaimonGrokWorkerProvisioning.js +13 -25
- package/dist/compiler/containerDaimonGrokWorkerRender.d.ts +11 -49
- package/dist/compiler/containerDaimonGrokWorkerRender.js +15 -39
- package/dist/compiler/containerDaimonStartupSupervision.d.ts +8 -0
- package/dist/compiler/containerDaimonStartupSupervision.js +39 -0
- package/dist/compiler/containerDaimonUidEntrypointRender.d.ts +1 -2
- package/dist/compiler/containerDaimonUidEntrypointRender.js +29 -47
- package/dist/compiler/containerRuntimeReadinessRender.js +1 -1
- package/dist/compiler/memoryArtifacts.js +0 -1
- package/dist/compiler/moltnetArtifacts.js +1 -17
- package/dist/compiler/moltnetClientConfig.js +1 -1
- package/dist/compiler/moltnetRuntimeConfig.js +0 -10
- package/dist/compiler/runProject.d.ts +3 -0
- package/dist/compiler/runProject.js +12 -5
- package/dist/compiler/runProjectAuth.js +6 -18
- package/dist/compiler/training/contract.d.ts +0 -2
- package/dist/compiler/training/contract.js +0 -2
- package/dist/compiler/training/execution.d.ts +1 -128
- package/dist/compiler/training/execution.js +7 -68
- package/dist/compiler/training/index.d.ts +0 -8
- package/dist/compiler/training/index.js +0 -7
- package/dist/compiler/training/output.d.ts +1 -0
- package/dist/compiler/training/output.js +1 -1
- package/dist/compiler/training/rewind/contract.d.ts +6 -6
- package/dist/compiler/training/trial/boot.d.ts +72 -0
- package/dist/compiler/training/trial/boot.js +225 -0
- package/dist/compiler/training/trial/docker.d.ts +10 -0
- package/dist/compiler/training/trial/docker.js +22 -0
- package/dist/compiler/training/trial/gateway.d.ts +47 -0
- package/dist/compiler/training/trial/gateway.js +113 -0
- package/dist/compiler/training/trial/homeLogin.d.ts +31 -0
- package/dist/compiler/training/trial/homeLogin.js +69 -0
- package/dist/compiler/training/trial/index.d.ts +8 -0
- package/dist/compiler/training/trial/index.js +8 -0
- package/dist/compiler/training/trial/judge.d.ts +15 -0
- package/dist/compiler/training/trial/judge.js +42 -0
- package/dist/compiler/training/trial/launcher.d.ts +47 -0
- package/dist/compiler/training/trial/launcher.js +193 -0
- package/dist/compiler/training/trial/login.d.ts +35 -0
- package/dist/compiler/training/trial/login.js +85 -0
- package/dist/compiler/training/trial/project.d.ts +11 -0
- package/dist/compiler/training/trial/project.js +31 -0
- package/dist/compiler/training/trial/realmTurns.d.ts +20 -0
- package/dist/compiler/training/trial/realmTurns.js +69 -0
- package/dist/compiler/upReceipt.d.ts +2 -17
- package/dist/compiler/upReceipt.js +2 -17
- package/dist/deployment/artifactsExportPlan.js +2 -18
- package/dist/deployment/privateArtifactsExport.js +1 -1
- package/dist/dev/docker.d.ts +0 -5
- package/dist/dev/docker.js +0 -46
- package/dist/dev/index.d.ts +0 -1
- package/dist/dev/index.js +0 -1
- package/dist/dev/project.d.ts +0 -16
- package/dist/dev/project.js +1 -128
- package/dist/distribution/distributionReportSchema.js +1 -1
- package/dist/distribution/imageRuntimeAuth.js +3 -2
- package/dist/manifest/renderSpawnfile.js +2 -1
- package/dist/release/drainControl.d.ts +5 -19
- package/dist/release/drainControl.js +12 -67
- package/dist/report/types.d.ts +3 -6
- package/dist/runtime/common.d.ts +1 -1
- package/dist/runtime/common.js +1 -1
- package/dist/runtime/container.d.ts +2 -2
- package/dist/runtime/container.js +1 -39
- package/dist/runtime/daimon/config.js +8 -14
- package/dist/runtime/daimon/contractManifest.js +0 -1
- package/dist/runtime/daimon/contractManifestSchema.js +0 -1
- package/dist/runtime/daimon/control.d.ts +31 -0
- package/dist/runtime/daimon/control.js +83 -0
- package/dist/runtime/daimon/engineDescriptorSchema.js +0 -1
- package/dist/runtime/daimon/engineDescriptors.generated.d.ts +1 -1
- package/dist/runtime/daimon/engineDescriptors.generated.js +1 -2
- package/dist/runtime/daimon/engines.js +0 -1
- package/dist/runtime/daimon/gateway.d.ts +62 -0
- package/dist/runtime/daimon/gateway.js +77 -0
- package/dist/runtime/daimon/grokWorkerContract.d.ts +0 -5
- package/dist/runtime/daimon/grokWorkerContract.js +1 -13
- package/dist/runtime/daimon/index.d.ts +2 -0
- package/dist/runtime/daimon/index.js +2 -1
- package/dist/runtime/daimon/memory.js +1 -1
- package/dist/runtime/daimon/packageName.js +0 -1
- package/dist/runtime/daimon/runAuth.js +15 -4
- package/dist/runtime/daimon/runtimeIdentity.d.ts +2 -0
- package/dist/runtime/daimon/runtimeIdentity.js +2 -0
- package/dist/runtime/daimon/subscriptionRealms.d.ts +27 -3
- package/dist/runtime/daimon/subscriptionRealms.js +35 -13
- package/dist/runtime/daimon/testHelpers.d.ts +2 -0
- package/dist/runtime/{pi → daimon}/testHelpers.js +3 -3
- package/dist/runtime/daimon/training/booted/adapter.d.ts +50 -0
- package/dist/runtime/daimon/training/booted/adapter.js +60 -0
- package/dist/runtime/daimon/training/booted/adapter.js.map +1 -0
- package/dist/runtime/daimon/training/booted/index.d.ts +4 -0
- package/dist/runtime/daimon/training/booted/index.js +3 -0
- package/dist/runtime/daimon/training/booted/index.js.map +1 -0
- package/dist/runtime/daimon/training/booted/judge.d.ts +39 -0
- package/dist/runtime/daimon/training/booted/judge.js +122 -0
- package/dist/runtime/daimon/training/booted/judge.js.map +1 -0
- package/dist/runtime/daimon/training/index.d.ts +5 -0
- package/dist/runtime/daimon/training/index.js +8 -4
- package/dist/runtime/daimon/training/index.js.map +1 -1
- package/dist/runtime/daimon/wakeMoments.js +0 -1
- package/dist/runtime/install.js +0 -21
- package/dist/runtime/registry.js +0 -2
- package/dist/runtime/trainingGraderProviders.js +10 -4
- package/dist/runtime/trainingProviders.d.ts +5 -3
- package/dist/runtime/trainingProviders.js +21 -24
- package/dist/runtime/trainingSubjects.d.ts +0 -121
- package/dist/runtime/trainingSubjects.js +2 -13
- package/dist/runtime/types.d.ts +1 -8
- package/dist/runtime/usageRequestLedger.d.ts +2 -0
- package/dist/runtime/usageRequestLedger.js +3 -1
- package/dist/shared/errors.js +0 -1
- package/dist/shared/trainingLegacy/trainingLegacyHashDomains.d.ts +1 -0
- package/dist/shared/trainingLegacy/trainingLegacyHashDomains.js +1 -0
- package/dist/shared/trainingLegacy/trainingLegacyHashDomains.js.map +1 -1
- package/dist/status/lifecycleProbes.js +3 -6
- package/dist/status/moltnetWiringProbes.js +1 -17
- package/dist/training/subjects/index.d.ts +0 -1
- package/dist/training/subjects/index.js +0 -1
- package/dist/training/subjects/index.js.map +1 -1
- package/examples/README.md +0 -1
- package/examples/daimon-org/agents/mapper/Spawnfile +4 -1
- package/examples/daimon-org/teams/review/agents/reviewer/Spawnfile +4 -1
- package/examples/jungian-daimon-org/teams/luna/agents/animus/Spawnfile +5 -8
- package/examples/jungian-daimon-org/teams/luna/agents/representative/Spawnfile +1 -1
- package/examples/jungian-daimon-org/teams/luna/agents/shadow/Spawnfile +5 -8
- package/examples/jungian-daimon-org/teams/selene/agents/animus/Spawnfile +5 -8
- package/examples/jungian-daimon-org/teams/selene/agents/representative/Spawnfile +5 -8
- package/examples/jungian-daimon-org/teams/selene/agents/shadow/Spawnfile +1 -1
- package/examples/mixed-runtime-org/agents/localist/Spawnfile +7 -7
- package/package.json +4 -13
- package/runtimes.yaml +5 -15
- package/dist/compiler/containerDaimonGrokTaskClock.d.ts +0 -5
- package/dist/compiler/containerDaimonGrokTaskClock.js +0 -29
- package/dist/compiler/daimonTelemetryArtifacts.d.ts +0 -22
- package/dist/compiler/daimonTelemetryArtifacts.js +0 -56
- package/dist/compiler/training/broker/clockProbe.d.ts +0 -6
- package/dist/compiler/training/broker/clockProbe.js +0 -27
- package/dist/compiler/training/broker/declaration.d.ts +0 -54
- package/dist/compiler/training/broker/declaration.js +0 -70
- package/dist/compiler/training/broker/entrypoint.d.ts +0 -39
- package/dist/compiler/training/broker/entrypoint.js +0 -124
- package/dist/compiler/training/broker/evaluatorSecrets.d.ts +0 -2
- package/dist/compiler/training/broker/evaluatorSecrets.js +0 -62
- package/dist/compiler/training/broker/index.d.ts +0 -12
- package/dist/compiler/training/broker/index.js +0 -12
- package/dist/compiler/training/broker/main.d.ts +0 -2
- package/dist/compiler/training/broker/main.js +0 -14
- package/dist/compiler/training/broker/paths.d.ts +0 -236
- package/dist/compiler/training/broker/paths.js +0 -249
- package/dist/compiler/training/broker/processes.d.ts +0 -51
- package/dist/compiler/training/broker/processes.js +0 -102
- package/dist/compiler/training/broker/projection.d.ts +0 -61
- package/dist/compiler/training/broker/projection.js +0 -109
- package/dist/compiler/training/broker/provisioning.d.ts +0 -78
- package/dist/compiler/training/broker/provisioning.js +0 -231
- package/dist/compiler/training/broker/receipt.d.ts +0 -77
- package/dist/compiler/training/broker/receipt.js +0 -110
- package/dist/compiler/training/broker/recycleClient.d.ts +0 -33
- package/dist/compiler/training/broker/recycleClient.js +0 -112
- package/dist/compiler/training/broker/registration.d.ts +0 -46
- package/dist/compiler/training/broker/registration.js +0 -113
- package/dist/compiler/training/broker/reset.d.ts +0 -9
- package/dist/compiler/training/broker/reset.js +0 -71
- package/dist/compiler/training/broker/rootScript.d.ts +0 -32
- package/dist/compiler/training/broker/rootScript.js +0 -33
- package/dist/compiler/training/broker/runtime.d.ts +0 -22
- package/dist/compiler/training/broker/runtime.js +0 -128
- package/dist/compiler/training/broker/seccompRoutes.d.ts +0 -31
- package/dist/compiler/training/broker/seccompRoutes.js +0 -36
- package/dist/compiler/training/broker/supervisor.d.ts +0 -108
- package/dist/compiler/training/broker/supervisor.js +0 -172
- package/dist/compiler/training/broker/taskClock.d.ts +0 -5
- package/dist/compiler/training/broker/taskClock.js +0 -41
- package/dist/compiler/training/container/contract.d.ts +0 -54
- package/dist/compiler/training/container/contract.js +0 -52
- package/dist/compiler/training/container/evaluators.d.ts +0 -48
- package/dist/compiler/training/container/evaluators.js +0 -50
- package/dist/compiler/training/container/grokWriteback.d.ts +0 -8
- package/dist/compiler/training/container/grokWriteback.js +0 -26
- package/dist/compiler/training/container/index.d.ts +0 -5
- package/dist/compiler/training/container/index.js +0 -3
- package/dist/compiler/training/container/launch.d.ts +0 -21
- package/dist/compiler/training/container/launch.js +0 -280
- package/dist/compiler/training/container/nativeSlots.d.ts +0 -14
- package/dist/compiler/training/container/nativeSlots.js +0 -13
- package/dist/compiler/training/container/outputCopy.d.ts +0 -2
- package/dist/compiler/training/container/outputCopy.js +0 -72
- package/dist/compiler/training/container/outputVolume.d.ts +0 -28
- package/dist/compiler/training/container/outputVolume.js +0 -185
- package/dist/compiler/training/container/prepare.d.ts +0 -10
- package/dist/compiler/training/container/prepare.js +0 -125
- package/dist/compiler/training/container/process.d.ts +0 -14
- package/dist/compiler/training/container/process.js +0 -70
- package/dist/compiler/training/container/security.d.ts +0 -38
- package/dist/compiler/training/container/security.js +0 -68
- package/dist/compiler/training/container/subjectIsolation.d.ts +0 -5
- package/dist/compiler/training/container/subjectIsolation.js +0 -16
- package/dist/compiler/training/preparation/assets/Dockerfile +0 -100
- package/dist/compiler/training/preparation/assets/package-lock.json +0 -5483
- package/dist/compiler/training/preparation/broker.d.ts +0 -30
- package/dist/compiler/training/preparation/broker.js +0 -68
- package/dist/compiler/training/preparation/contextModes.d.ts +0 -12
- package/dist/compiler/training/preparation/contextModes.js +0 -38
- package/dist/compiler/training/preparation/contract.d.ts +0 -203
- package/dist/compiler/training/preparation/contract.js +0 -114
- package/dist/compiler/training/preparation/copyAssets.d.ts +0 -1
- package/dist/compiler/training/preparation/copyAssets.js +0 -8
- package/dist/compiler/training/preparation/daimonParent.d.ts +0 -42
- package/dist/compiler/training/preparation/daimonParent.js +0 -114
- package/dist/compiler/training/preparation/files.d.ts +0 -29
- package/dist/compiler/training/preparation/files.js +0 -146
- package/dist/compiler/training/preparation/image.d.ts +0 -28
- package/dist/compiler/training/preparation/image.js +0 -105
- package/dist/compiler/training/preparation/index.d.ts +0 -3
- package/dist/compiler/training/preparation/index.js +0 -2
- package/dist/compiler/training/preparation/inputs.d.ts +0 -24
- package/dist/compiler/training/preparation/inputs.js +0 -101
- package/dist/compiler/training/preparation/prepare.d.ts +0 -38
- package/dist/compiler/training/preparation/prepare.js +0 -224
- package/dist/compiler/training/preparation/scratch.d.ts +0 -8
- package/dist/compiler/training/preparation/scratch.js +0 -114
- package/dist/compiler/training/repair/compatibility.d.ts +0 -11
- package/dist/compiler/training/repair/compatibility.js +0 -45
- package/dist/compiler/training/repair/contract.d.ts +0 -832
- package/dist/compiler/training/repair/contract.js +0 -34
- package/dist/compiler/training/repair/index.d.ts +0 -3
- package/dist/compiler/training/repair/index.js +0 -3
- package/dist/compiler/training/repair/prepare.d.ts +0 -378
- package/dist/compiler/training/repair/prepare.js +0 -84
- package/dist/compiler/training/repair/witness.d.ts +0 -348
- package/dist/compiler/training/repair/witness.js +0 -62
- package/dist/compiler/training/subjectDeclaration.d.ts +0 -26
- package/dist/compiler/training/subjectDeclaration.js +0 -54
- package/dist/compiler/training/subjectLease.d.ts +0 -115
- package/dist/compiler/training/subjectLease.js +0 -179
- package/dist/dev/activity.d.ts +0 -14
- package/dist/dev/activity.js +0 -48
- package/dist/runtime/codex-exec/training/adapter.d.ts +0 -13
- package/dist/runtime/codex-exec/training/adapter.js +0 -101
- package/dist/runtime/codex-exec/training/adapter.js.map +0 -1
- package/dist/runtime/codex-exec/training/environment.d.ts +0 -3
- package/dist/runtime/codex-exec/training/environment.js +0 -26
- package/dist/runtime/codex-exec/training/environment.js.map +0 -1
- package/dist/runtime/codex-exec/training/index.d.ts +0 -2
- package/dist/runtime/codex-exec/training/index.js +0 -3
- package/dist/runtime/codex-exec/training/index.js.map +0 -1
- package/dist/runtime/codex-exec/training/protocol.d.ts +0 -15
- package/dist/runtime/codex-exec/training/protocol.js +0 -102
- package/dist/runtime/codex-exec/training/protocol.js.map +0 -1
- package/dist/runtime/codex-exec/training/providers/codex-subscription/index.d.ts +0 -1
- package/dist/runtime/codex-exec/training/providers/codex-subscription/index.js +0 -2
- package/dist/runtime/codex-exec/training/providers/codex-subscription/index.js.map +0 -1
- package/dist/runtime/codex-exec/training/providers/codex-subscription/protocol.d.ts +0 -17
- package/dist/runtime/codex-exec/training/providers/codex-subscription/protocol.js +0 -80
- package/dist/runtime/codex-exec/training/providers/codex-subscription/protocol.js.map +0 -1
- package/dist/runtime/codex-exec/training/providers/codex-subscription/provider.d.ts +0 -12
- package/dist/runtime/codex-exec/training/providers/codex-subscription/provider.js +0 -125
- package/dist/runtime/codex-exec/training/providers/codex-subscription/provider.js.map +0 -1
- package/dist/runtime/codex-exec/training/providers/codex-subscription/strict-schema.d.ts +0 -6
- package/dist/runtime/codex-exec/training/providers/codex-subscription/strict-schema.js +0 -219
- package/dist/runtime/codex-exec/training/providers/codex-subscription/strict-schema.js.map +0 -1
- package/dist/runtime/daimon/contractManifest.js.map +0 -1
- package/dist/runtime/daimon/contractManifestSchema.js.map +0 -1
- package/dist/runtime/daimon/engineDescriptorSchema.js.map +0 -1
- package/dist/runtime/daimon/engineDescriptors.generated.js.map +0 -1
- package/dist/runtime/daimon/engines.js.map +0 -1
- package/dist/runtime/daimon/index.js.map +0 -1
- package/dist/runtime/daimon/packageName.js.map +0 -1
- package/dist/runtime/daimon/training/legacy/adapter.d.ts +0 -11
- package/dist/runtime/daimon/training/legacy/adapter.js +0 -175
- package/dist/runtime/daimon/training/legacy/adapter.js.map +0 -1
- package/dist/runtime/daimon/training/legacy/index.d.ts +0 -2
- package/dist/runtime/daimon/training/legacy/index.js +0 -3
- package/dist/runtime/daimon/training/legacy/index.js.map +0 -1
- package/dist/runtime/daimon/training/legacy/public.d.ts +0 -49
- package/dist/runtime/daimon/training/legacy/public.js +0 -16
- package/dist/runtime/daimon/training/legacy/public.js.map +0 -1
- package/dist/runtime/daimon/training/native/adapter.d.ts +0 -18
- package/dist/runtime/daimon/training/native/adapter.js +0 -252
- package/dist/runtime/daimon/training/native/adapter.js.map +0 -1
- package/dist/runtime/daimon/training/native/admission.d.ts +0 -7
- package/dist/runtime/daimon/training/native/admission.js +0 -52
- package/dist/runtime/daimon/training/native/admission.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/arguments.d.ts +0 -16
- package/dist/runtime/daimon/training/native/child/arguments.js +0 -70
- package/dist/runtime/daimon/training/native/child/arguments.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/deferred-trial.d.ts +0 -24
- package/dist/runtime/daimon/training/native/child/deferred-trial.js +0 -63
- package/dist/runtime/daimon/training/native/child/deferred-trial.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/diagnostics.d.ts +0 -58
- package/dist/runtime/daimon/training/native/child/diagnostics.js +0 -215
- package/dist/runtime/daimon/training/native/child/diagnostics.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/fixture.d.ts +0 -16
- package/dist/runtime/daimon/training/native/child/fixture.js +0 -159
- package/dist/runtime/daimon/training/native/child/fixture.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/grok.d.ts +0 -14
- package/dist/runtime/daimon/training/native/child/grok.js +0 -47
- package/dist/runtime/daimon/training/native/child/grok.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/index.d.ts +0 -7
- package/dist/runtime/daimon/training/native/child/index.js +0 -5
- package/dist/runtime/daimon/training/native/child/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/lifecycle.d.ts +0 -40
- package/dist/runtime/daimon/training/native/child/lifecycle.js +0 -400
- package/dist/runtime/daimon/training/native/child/lifecycle.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/probe.d.ts +0 -2
- package/dist/runtime/daimon/training/native/child/probe.js +0 -11
- package/dist/runtime/daimon/training/native/child/probe.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/sandbox.d.ts +0 -4
- package/dist/runtime/daimon/training/native/child/sandbox.js +0 -76
- package/dist/runtime/daimon/training/native/child/sandbox.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/types.d.ts +0 -15
- package/dist/runtime/daimon/training/native/child/types.js +0 -2
- package/dist/runtime/daimon/training/native/child/types.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/docker.d.ts +0 -29
- package/dist/runtime/daimon/training/native/container/docker.js +0 -105
- package/dist/runtime/daimon/training/native/container/docker.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/grok-slot.d.ts +0 -22
- package/dist/runtime/daimon/training/native/container/grok-slot.js +0 -38
- package/dist/runtime/daimon/training/native/container/grok-slot.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/index.d.ts +0 -6
- package/dist/runtime/daimon/training/native/container/index.js +0 -6
- package/dist/runtime/daimon/training/native/container/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/lifecycle.d.ts +0 -8
- package/dist/runtime/daimon/training/native/container/lifecycle.js +0 -111
- package/dist/runtime/daimon/training/native/container/lifecycle.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/manifest.d.ts +0 -17
- package/dist/runtime/daimon/training/native/container/manifest.js +0 -164
- package/dist/runtime/daimon/training/native/container/manifest.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/native-preflight.d.ts +0 -8
- package/dist/runtime/daimon/training/native/container/native-preflight.js +0 -40
- package/dist/runtime/daimon/training/native/container/native-preflight.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/preflight.d.ts +0 -15
- package/dist/runtime/daimon/training/native/container/preflight.js +0 -79
- package/dist/runtime/daimon/training/native/container/preflight.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/slot.d.ts +0 -4
- package/dist/runtime/daimon/training/native/container/slot.js +0 -58
- package/dist/runtime/daimon/training/native/container/slot.js.map +0 -1
- package/dist/runtime/daimon/training/native/external.d.ts +0 -37
- package/dist/runtime/daimon/training/native/external.js +0 -75
- package/dist/runtime/daimon/training/native/external.js.map +0 -1
- package/dist/runtime/daimon/training/native/grants/authority.d.ts +0 -36
- package/dist/runtime/daimon/training/native/grants/authority.js +0 -49
- package/dist/runtime/daimon/training/native/grants/authority.js.map +0 -1
- package/dist/runtime/daimon/training/native/grants/index.d.ts +0 -2
- package/dist/runtime/daimon/training/native/grants/index.js +0 -3
- package/dist/runtime/daimon/training/native/grants/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/grants/pins.d.ts +0 -30
- package/dist/runtime/daimon/training/native/grants/pins.js +0 -20
- package/dist/runtime/daimon/training/native/grants/pins.js.map +0 -1
- package/dist/runtime/daimon/training/native/grants/test-socket.d.ts +0 -6
- package/dist/runtime/daimon/training/native/grants/test-socket.js +0 -35
- package/dist/runtime/daimon/training/native/grants/test-socket.js.map +0 -1
- package/dist/runtime/daimon/training/native/grok-fixtures.d.ts +0 -34
- package/dist/runtime/daimon/training/native/grok-fixtures.js +0 -179
- package/dist/runtime/daimon/training/native/grok-fixtures.js.map +0 -1
- package/dist/runtime/daimon/training/native/index.d.ts +0 -38
- package/dist/runtime/daimon/training/native/index.js +0 -27
- package/dist/runtime/daimon/training/native/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/live-checkout.d.ts +0 -2
- package/dist/runtime/daimon/training/native/live-checkout.js +0 -15
- package/dist/runtime/daimon/training/native/live-checkout.js.map +0 -1
- package/dist/runtime/daimon/training/native/observations.d.ts +0 -51
- package/dist/runtime/daimon/training/native/observations.js +0 -217
- package/dist/runtime/daimon/training/native/observations.js.map +0 -1
- package/dist/runtime/daimon/training/native/outcome.d.ts +0 -13
- package/dist/runtime/daimon/training/native/outcome.js +0 -37
- package/dist/runtime/daimon/training/native/outcome.js.map +0 -1
- package/dist/runtime/daimon/training/native/preparation/engine-config.d.ts +0 -21
- package/dist/runtime/daimon/training/native/preparation/engine-config.js +0 -30
- package/dist/runtime/daimon/training/native/preparation/engine-config.js.map +0 -1
- package/dist/runtime/daimon/training/native/preparation/fixtures.d.ts +0 -17
- package/dist/runtime/daimon/training/native/preparation/fixtures.js +0 -52
- package/dist/runtime/daimon/training/native/preparation/fixtures.js.map +0 -1
- package/dist/runtime/daimon/training/native/preparation/index.d.ts +0 -7
- package/dist/runtime/daimon/training/native/preparation/index.js +0 -5
- package/dist/runtime/daimon/training/native/preparation/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/preparation/layout.d.ts +0 -66
- package/dist/runtime/daimon/training/native/preparation/layout.js +0 -87
- package/dist/runtime/daimon/training/native/preparation/layout.js.map +0 -1
- package/dist/runtime/daimon/training/native/preparation/subject.d.ts +0 -14
- package/dist/runtime/daimon/training/native/preparation/subject.js +0 -67
- package/dist/runtime/daimon/training/native/preparation/subject.js.map +0 -1
- package/dist/runtime/daimon/training/native/preparation/types.d.ts +0 -69
- package/dist/runtime/daimon/training/native/preparation/types.js +0 -2
- package/dist/runtime/daimon/training/native/preparation/types.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/artifacts.d.ts +0 -25
- package/dist/runtime/daimon/training/native/receipt/artifacts.js +0 -32
- package/dist/runtime/daimon/training/native/receipt/artifacts.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/grok-clocked-pins.d.ts +0 -129
- package/dist/runtime/daimon/training/native/receipt/grok-clocked-pins.js +0 -45
- package/dist/runtime/daimon/training/native/receipt/grok-clocked-pins.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/grok.d.ts +0 -246
- package/dist/runtime/daimon/training/native/receipt/grok.js +0 -195
- package/dist/runtime/daimon/training/native/receipt/grok.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/index.d.ts +0 -11
- package/dist/runtime/daimon/training/native/receipt/index.js +0 -8
- package/dist/runtime/daimon/training/native/receipt/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/paths.d.ts +0 -3
- package/dist/runtime/daimon/training/native/receipt/paths.js +0 -18
- package/dist/runtime/daimon/training/native/receipt/paths.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/sandbox.d.ts +0 -42
- package/dist/runtime/daimon/training/native/receipt/sandbox.js +0 -35
- package/dist/runtime/daimon/training/native/receipt/sandbox.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/schema.d.ts +0 -490
- package/dist/runtime/daimon/training/native/receipt/schema.js +0 -138
- package/dist/runtime/daimon/training/native/receipt/schema.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/subscription.d.ts +0 -13
- package/dist/runtime/daimon/training/native/receipt/subscription.js +0 -13
- package/dist/runtime/daimon/training/native/receipt/subscription.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/task-clock.d.ts +0 -19
- package/dist/runtime/daimon/training/native/receipt/task-clock.js +0 -49
- package/dist/runtime/daimon/training/native/receipt/task-clock.js.map +0 -1
- package/dist/runtime/daimon/training/native/sealed-usage.d.ts +0 -218
- package/dist/runtime/daimon/training/native/sealed-usage.js +0 -261
- package/dist/runtime/daimon/training/native/sealed-usage.js.map +0 -1
- package/dist/runtime/daimon/training/native/test-fixtures.d.ts +0 -27
- package/dist/runtime/daimon/training/native/test-fixtures.js +0 -162
- package/dist/runtime/daimon/training/native/test-fixtures.js.map +0 -1
- package/dist/runtime/daimon/training/native/transcript.d.ts +0 -96
- package/dist/runtime/daimon/training/native/transcript.js +0 -239
- package/dist/runtime/daimon/training/native/transcript.js.map +0 -1
- package/dist/runtime/daimon/training/native/transport/delivery.d.ts +0 -27
- package/dist/runtime/daimon/training/native/transport/delivery.js +0 -98
- package/dist/runtime/daimon/training/native/transport/delivery.js.map +0 -1
- package/dist/runtime/daimon/training/native/transport/http.d.ts +0 -3
- package/dist/runtime/daimon/training/native/transport/http.js +0 -81
- package/dist/runtime/daimon/training/native/transport/http.js.map +0 -1
- package/dist/runtime/daimon/training/native/transport/index.d.ts +0 -4
- package/dist/runtime/daimon/training/native/transport/index.js +0 -3
- package/dist/runtime/daimon/training/native/transport/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/transport/types.d.ts +0 -15
- package/dist/runtime/daimon/training/native/transport/types.js +0 -2
- package/dist/runtime/daimon/training/native/transport/types.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/cli.d.ts +0 -1
- package/dist/runtime/daimon/training/native/worker/cli.js +0 -17
- package/dist/runtime/daimon/training/native/worker/cli.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/control.d.ts +0 -20
- package/dist/runtime/daimon/training/native/worker/control.js +0 -266
- package/dist/runtime/daimon/training/native/worker/control.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/deliveries.d.ts +0 -38
- package/dist/runtime/daimon/training/native/worker/deliveries.js +0 -91
- package/dist/runtime/daimon/training/native/worker/deliveries.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/evidence/collect.d.ts +0 -54
- package/dist/runtime/daimon/training/native/worker/evidence/collect.js +0 -278
- package/dist/runtime/daimon/training/native/worker/evidence/collect.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/evidence/execution.d.ts +0 -102
- package/dist/runtime/daimon/training/native/worker/evidence/execution.js +0 -191
- package/dist/runtime/daimon/training/native/worker/evidence/execution.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/evidence/index.d.ts +0 -3
- package/dist/runtime/daimon/training/native/worker/evidence/index.js +0 -4
- package/dist/runtime/daimon/training/native/worker/evidence/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/evidence/io.d.ts +0 -20
- package/dist/runtime/daimon/training/native/worker/evidence/io.js +0 -130
- package/dist/runtime/daimon/training/native/worker/evidence/io.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/evidence/seal.d.ts +0 -3
- package/dist/runtime/daimon/training/native/worker/evidence/seal.js +0 -67
- package/dist/runtime/daimon/training/native/worker/evidence/seal.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/index.d.ts +0 -11
- package/dist/runtime/daimon/training/native/worker/index.js +0 -8
- package/dist/runtime/daimon/training/native/worker/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/profile.d.ts +0 -23
- package/dist/runtime/daimon/training/native/worker/profile.js +0 -149
- package/dist/runtime/daimon/training/native/worker/profile.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/public.d.ts +0 -53
- package/dist/runtime/daimon/training/native/worker/public.js +0 -22
- package/dist/runtime/daimon/training/native/worker/public.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/sandbox.d.ts +0 -4
- package/dist/runtime/daimon/training/native/worker/sandbox.js +0 -54
- package/dist/runtime/daimon/training/native/worker/sandbox.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/server.d.ts +0 -4
- package/dist/runtime/daimon/training/native/worker/server.js +0 -102
- package/dist/runtime/daimon/training/native/worker/server.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/types.d.ts +0 -318
- package/dist/runtime/daimon/training/native/worker/types.js +0 -2
- package/dist/runtime/daimon/training/native/worker/types.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/wake-delivery/index.d.ts +0 -4
- package/dist/runtime/daimon/training/native/worker/wake-delivery/index.js +0 -4
- package/dist/runtime/daimon/training/native/worker/wake-delivery/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/wake-delivery/source.d.ts +0 -3
- package/dist/runtime/daimon/training/native/worker/wake-delivery/source.js +0 -16
- package/dist/runtime/daimon/training/native/worker/wake-delivery/source.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/wake-delivery/terminal.d.ts +0 -4
- package/dist/runtime/daimon/training/native/worker/wake-delivery/terminal.js +0 -52
- package/dist/runtime/daimon/training/native/worker/wake-delivery/terminal.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/wake-delivery/transport.d.ts +0 -21
- package/dist/runtime/daimon/training/native/worker/wake-delivery/transport.js +0 -198
- package/dist/runtime/daimon/training/native/worker/wake-delivery/transport.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/wake-delivery/types.d.ts +0 -91
- package/dist/runtime/daimon/training/native/worker/wake-delivery/types.js +0 -2
- package/dist/runtime/daimon/training/native/worker/wake-delivery/types.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/worker.d.ts +0 -1
- package/dist/runtime/daimon/training/native/worker/worker.js +0 -105
- package/dist/runtime/daimon/training/native/worker/worker.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-broker/broker.d.ts +0 -20
- package/dist/runtime/daimon/training/providers/grok-broker/broker.js +0 -55
- package/dist/runtime/daimon/training/providers/grok-broker/broker.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-broker/grant-fixtures.d.ts +0 -15
- package/dist/runtime/daimon/training/providers/grok-broker/grant-fixtures.js +0 -29
- package/dist/runtime/daimon/training/providers/grok-broker/grant-fixtures.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-broker/grant-home.d.ts +0 -16
- package/dist/runtime/daimon/training/providers/grok-broker/grant-home.js +0 -60
- package/dist/runtime/daimon/training/providers/grok-broker/grant-home.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-broker/grant-pool.d.ts +0 -81
- package/dist/runtime/daimon/training/providers/grok-broker/grant-pool.js +0 -221
- package/dist/runtime/daimon/training/providers/grok-broker/grant-pool.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-broker/grant-releases.d.ts +0 -31
- package/dist/runtime/daimon/training/providers/grok-broker/grant-releases.js +0 -78
- package/dist/runtime/daimon/training/providers/grok-broker/grant-releases.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-broker/grants.d.ts +0 -63
- package/dist/runtime/daimon/training/providers/grok-broker/grants.js +0 -20
- package/dist/runtime/daimon/training/providers/grok-broker/grants.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-broker/index.d.ts +0 -3
- package/dist/runtime/daimon/training/providers/grok-broker/index.js +0 -4
- package/dist/runtime/daimon/training/providers/grok-broker/index.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-subscription/cli.d.ts +0 -21
- package/dist/runtime/daimon/training/providers/grok-subscription/cli.js +0 -81
- package/dist/runtime/daimon/training/providers/grok-subscription/cli.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-subscription/index.d.ts +0 -4
- package/dist/runtime/daimon/training/providers/grok-subscription/index.js +0 -5
- package/dist/runtime/daimon/training/providers/grok-subscription/index.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-subscription/protocol.d.ts +0 -26
- package/dist/runtime/daimon/training/providers/grok-subscription/protocol.js +0 -102
- package/dist/runtime/daimon/training/providers/grok-subscription/protocol.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-subscription/provider.d.ts +0 -9
- package/dist/runtime/daimon/training/providers/grok-subscription/provider.js +0 -38
- package/dist/runtime/daimon/training/providers/grok-subscription/provider.js.map +0 -1
- package/dist/runtime/daimon/training/public.d.ts +0 -6
- package/dist/runtime/daimon/training/public.js +0 -5
- package/dist/runtime/daimon/training/public.js.map +0 -1
- package/dist/runtime/daimon/training/services/account-lease.d.ts +0 -7
- package/dist/runtime/daimon/training/services/account-lease.js +0 -76
- package/dist/runtime/daimon/training/services/account-lease.js.map +0 -1
- package/dist/runtime/daimon/training/services/freshness.d.ts +0 -15
- package/dist/runtime/daimon/training/services/freshness.js +0 -19
- package/dist/runtime/daimon/training/services/freshness.js.map +0 -1
- package/dist/runtime/daimon/training/services/index.d.ts +0 -4
- package/dist/runtime/daimon/training/services/index.js +0 -4
- package/dist/runtime/daimon/training/services/index.js.map +0 -1
- package/dist/runtime/daimon/training/services/slot-freshness.d.ts +0 -34
- package/dist/runtime/daimon/training/services/slot-freshness.js +0 -178
- package/dist/runtime/daimon/training/services/slot-freshness.js.map +0 -1
- package/dist/runtime/daimon/wakeMoments.js.map +0 -1
- package/dist/runtime/pi/adapter.d.ts +0 -3
- package/dist/runtime/pi/adapter.js +0 -230
- package/dist/runtime/pi/appActivitySource.d.ts +0 -1
- package/dist/runtime/pi/appActivitySource.js +0 -199
- package/dist/runtime/pi/appAgentConfig.d.ts +0 -11
- package/dist/runtime/pi/appAgentConfig.js +0 -264
- package/dist/runtime/pi/appCliEnginesSource.d.ts +0 -1
- package/dist/runtime/pi/appCliEnginesSource.js +0 -183
- package/dist/runtime/pi/appCliSource.d.ts +0 -1
- package/dist/runtime/pi/appCliSource.js +0 -353
- package/dist/runtime/pi/appControlSource.d.ts +0 -1
- package/dist/runtime/pi/appControlSource.js +0 -390
- package/dist/runtime/pi/appControlWakeIdentitySource.d.ts +0 -1
- package/dist/runtime/pi/appControlWakeIdentitySource.js +0 -19
- package/dist/runtime/pi/appCoreSource.d.ts +0 -4
- package/dist/runtime/pi/appCoreSource.js +0 -244
- package/dist/runtime/pi/appPreludeSource.d.ts +0 -1
- package/dist/runtime/pi/appPreludeSource.js +0 -192
- package/dist/runtime/pi/appScheduleSource.d.ts +0 -1
- package/dist/runtime/pi/appScheduleSource.js +0 -84
- package/dist/runtime/pi/appScriptedEngine.d.ts +0 -31
- package/dist/runtime/pi/appScriptedEngine.js +0 -42
- package/dist/runtime/pi/appSource.d.ts +0 -4
- package/dist/runtime/pi/appSource.js +0 -12
- package/dist/runtime/pi/appTemplate.d.ts +0 -14
- package/dist/runtime/pi/appTemplate.js +0 -28
- package/dist/runtime/pi/appTemplateTypes.d.ts +0 -64
- package/dist/runtime/pi/appTemplateTypes.js +0 -18
- package/dist/runtime/pi/appWakeContextSource.d.ts +0 -1
- package/dist/runtime/pi/appWakeContextSource.js +0 -398
- package/dist/runtime/pi/containerTargets.d.ts +0 -4
- package/dist/runtime/pi/containerTargets.js +0 -63
- package/dist/runtime/pi/runAuth.d.ts +0 -2
- package/dist/runtime/pi/runAuth.js +0 -185
- package/dist/runtime/pi/testHelpers.d.ts +0 -2
- package/dist/shared/errors.js.map +0 -1
- package/dist/training/subjects/environment.d.ts +0 -2
- package/dist/training/subjects/environment.js +0 -14
- package/dist/training/subjects/environment.js.map +0 -1
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import { chmodSync, chownSync, lstatSync, rmSync } from "node:fs";
|
|
2
|
-
import { createServer } from "node:net";
|
|
3
|
-
import path from "node:path";
|
|
4
|
-
import { SpawnfileError } from "../../../shared/index.js";
|
|
5
|
-
import { DAIMON_ORGANIZATION_UID } from "./paths.js";
|
|
6
|
-
export const TRAINING_SUPERVISOR_PROTOCOL = "spawnfile.training-slot-supervisor.v2";
|
|
7
|
-
export const TRAINING_SUPERVISOR_MAX_REQUEST_BYTES = 4_096;
|
|
8
|
-
const NONCE = /^[a-f0-9]{64}$/u;
|
|
9
|
-
/**
|
|
10
|
-
* Bringing a slot up, receipt included — the only way this container starts one.
|
|
11
|
-
*
|
|
12
|
-
* `provision → start` alone was the whole start-up path, and `canaries` and
|
|
13
|
-
* `publishReceipt` were reachable only from `recycle`. The first trial of every
|
|
14
|
-
* run therefore executed with no worker-uid denial evidence at all, and a
|
|
15
|
-
* refusal that should have cost nothing surfaced only after that trial's spend.
|
|
16
|
-
* Trial 1 is exactly the trial whose sealed datasets have never been probed, so
|
|
17
|
-
* it is the one that most needs the evidence.
|
|
18
|
-
*
|
|
19
|
-
* The receipt this publishes carries generation 1..N and a nonce of the
|
|
20
|
-
* container's own, so an evaluator that reads `preflight.json` before its first
|
|
21
|
-
* wake sees the same `noopolis.daimon.grok-slot-preflight.v2` shape a recycle
|
|
22
|
-
* publishes, from the same canaries.
|
|
23
|
-
*/
|
|
24
|
-
export const startTrainingSlot = async (runtime, nonce) => {
|
|
25
|
-
const canaries = await runtime.canaries();
|
|
26
|
-
const generation = await runtime.nextGeneration();
|
|
27
|
-
const receipt = await runtime.publishReceipt({ generation, nonce, canaries });
|
|
28
|
-
runtime.log(`slot start generation=${generation} canaries=${canaries.length} receipt=${receipt}`);
|
|
29
|
-
return { generation, receipt, canaries: canaries.length };
|
|
30
|
-
};
|
|
31
|
-
/**
|
|
32
|
-
* The single-verb root slot supervisor.
|
|
33
|
-
*
|
|
34
|
-
* One verb, slot and nonce, no path or command ever supplied by the caller: the
|
|
35
|
-
* whole point of D4 is that recycling replays the container's own audited
|
|
36
|
-
* provisioning rather than exposing a root file-system API to the evaluator.
|
|
37
|
-
* Recycles of the same slot are serialized — a second caller waits rather than interleaving a
|
|
38
|
-
* wipe with a provision.
|
|
39
|
-
*/
|
|
40
|
-
export const createTrainingSlotSupervisor = (options) => {
|
|
41
|
-
const organizationUid = options.organizationUid ?? DAIMON_ORGANIZATION_UID;
|
|
42
|
-
const drainTimeoutMs = options.drainTimeoutMs ?? 120_000;
|
|
43
|
-
const now = options.now ?? Date.now;
|
|
44
|
-
const queues = new Map();
|
|
45
|
-
const recycle = async (slot, nonce, peerUid) => {
|
|
46
|
-
if (peerUid !== organizationUid)
|
|
47
|
-
throw new SpawnfileError("validation_error", `Grok slot recycle refused for uid ${peerUid}`);
|
|
48
|
-
if (!NONCE.test(nonce))
|
|
49
|
-
throw new SpawnfileError("validation_error", "Grok slot recycle requires a 32-byte hex nonce");
|
|
50
|
-
if (!Number.isInteger(slot) || slot < 0 || slot >= options.runtimes.length)
|
|
51
|
-
throw new SpawnfileError("validation_error", "Grok slot recycle requires a declared slot index");
|
|
52
|
-
const runtime = options.runtimes[slot];
|
|
53
|
-
const started = now();
|
|
54
|
-
const controller = new AbortController();
|
|
55
|
-
const timer = setTimeout(() => controller.abort(), drainTimeoutMs);
|
|
56
|
-
try {
|
|
57
|
-
await runtime.reset(controller.signal);
|
|
58
|
-
}
|
|
59
|
-
finally {
|
|
60
|
-
clearTimeout(timer);
|
|
61
|
-
}
|
|
62
|
-
await runtime.wipe();
|
|
63
|
-
await runtime.provision();
|
|
64
|
-
const canaries = await runtime.canaries();
|
|
65
|
-
const generation = await runtime.nextGeneration();
|
|
66
|
-
const receipt = await runtime.publishReceipt({ generation, nonce, canaries });
|
|
67
|
-
const durationMs = now() - started;
|
|
68
|
-
runtime.log(`recycle generation=${generation} canaries=${canaries.length} durationMs=${durationMs}`);
|
|
69
|
-
return { ok: true, verb: "recycle", slot, generation, nonce, receipt, durationMs };
|
|
70
|
-
};
|
|
71
|
-
return {
|
|
72
|
-
/** Serialized: a recycle already in flight completes before the next one starts. */
|
|
73
|
-
recycle: (slot, nonce, peerUid) => {
|
|
74
|
-
const next = (queues.get(slot) ?? Promise.resolve()).then(() => recycle(slot, nonce, peerUid));
|
|
75
|
-
queues.set(slot, next.catch(() => undefined));
|
|
76
|
-
return next;
|
|
77
|
-
}
|
|
78
|
-
};
|
|
79
|
-
};
|
|
80
|
-
const failure = (message) => `${JSON.stringify({ v: TRAINING_SUPERVISOR_PROTOCOL, ok: false, error: message })}\n`;
|
|
81
|
-
/**
|
|
82
|
-
* Re-establishes, and re-checks on every connection, the only uid gate this
|
|
83
|
-
* socket has.
|
|
84
|
-
*
|
|
85
|
-
* The scope asked for `SO_PEERCRED`. Node exposes no ancillary-data or
|
|
86
|
-
* peer-credential API on a unix socket and no native addon ships in this
|
|
87
|
-
* image, so the gate is the socket node itself, which the kernel enforces on
|
|
88
|
-
* `connect()` exactly as it does on `open()`: the node is
|
|
89
|
-
* `root:<organization gid> 0660` inside a root-owned `0711` directory on
|
|
90
|
-
* tmpfs, where modes *are* enforced. Only uid 2000 (and root) can connect;
|
|
91
|
-
* uid 2200 gets `EACCES` before a byte is written. A `0600` root-owned socket
|
|
92
|
-
* — the literal reading of the scope — would deny the one caller it exists
|
|
93
|
-
* for, so this is the same restriction stated in the only mechanism available.
|
|
94
|
-
* The directory holds no write permission for anyone but root, so the node
|
|
95
|
-
* cannot be replaced by a laxer one.
|
|
96
|
-
*/
|
|
97
|
-
export const assertTrainingSupervisorSocketIdentity = (socketPath, organizationGid) => {
|
|
98
|
-
const directory = lstatSync(path.posix.dirname(socketPath));
|
|
99
|
-
if (!directory.isDirectory() || directory.uid !== 0 || directory.gid !== 0 || (directory.mode & 0o777) !== 0o711) {
|
|
100
|
-
throw new SpawnfileError("runtime_error", "The slot supervisor socket directory must be root-owned 0711");
|
|
101
|
-
}
|
|
102
|
-
const node = lstatSync(socketPath);
|
|
103
|
-
if (!node.isSocket() || node.uid !== 0 || node.gid !== organizationGid || (node.mode & 0o777) !== 0o660) {
|
|
104
|
-
throw new SpawnfileError("runtime_error", "The slot supervisor socket must be root-owned, organization-group 0660");
|
|
105
|
-
}
|
|
106
|
-
};
|
|
107
|
-
/**
|
|
108
|
-
* Line-delimited JSON over a unix socket. Every request is bounded,
|
|
109
|
-
* single-line, and must name the protocol, the one verb and nothing else.
|
|
110
|
-
*/
|
|
111
|
-
export const serveTrainingSlotSupervisor = (supervisor, socketPath, log, organizationUid = DAIMON_ORGANIZATION_UID) => {
|
|
112
|
-
const server = createServer((socket) => {
|
|
113
|
-
let peerUid;
|
|
114
|
-
try {
|
|
115
|
-
assertTrainingSupervisorSocketIdentity(socketPath, organizationUid);
|
|
116
|
-
peerUid = organizationUid;
|
|
117
|
-
}
|
|
118
|
-
catch (error) {
|
|
119
|
-
log(`refusing a connection on an unverified supervisor socket: ${error instanceof Error ? error.message : "unknown"}`);
|
|
120
|
-
}
|
|
121
|
-
let buffer = "", settled = false;
|
|
122
|
-
socket.setTimeout(600_000, () => socket.destroy());
|
|
123
|
-
const answer = (line) => { settled = true; socket.end(line); };
|
|
124
|
-
socket.on("data", (chunk) => {
|
|
125
|
-
if (settled)
|
|
126
|
-
return;
|
|
127
|
-
buffer += chunk.toString("utf8");
|
|
128
|
-
if (Buffer.byteLength(buffer) > TRAINING_SUPERVISOR_MAX_REQUEST_BYTES) {
|
|
129
|
-
answer(failure("request too large"));
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
const newline = buffer.indexOf("\n");
|
|
133
|
-
if (newline < 0)
|
|
134
|
-
return;
|
|
135
|
-
const line = buffer.slice(0, newline);
|
|
136
|
-
let request;
|
|
137
|
-
try {
|
|
138
|
-
request = JSON.parse(line);
|
|
139
|
-
}
|
|
140
|
-
catch {
|
|
141
|
-
answer(failure("request is not JSON"));
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
if (!request || typeof request !== "object" || Array.isArray(request) || request.v !== TRAINING_SUPERVISOR_PROTOCOL || request.verb !== "recycle" || typeof request.nonce !== "string"
|
|
145
|
-
|| typeof request.slot !== "number" || Object.keys(request).length !== 4) {
|
|
146
|
-
answer(failure("unsupported request"));
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
if (peerUid === undefined) {
|
|
150
|
-
answer(failure("peer identity is unavailable"));
|
|
151
|
-
return;
|
|
152
|
-
}
|
|
153
|
-
supervisor.recycle(request.slot, request.nonce, peerUid)
|
|
154
|
-
.then((result) => answer(`${JSON.stringify({ v: TRAINING_SUPERVISOR_PROTOCOL, ...result })}\n`))
|
|
155
|
-
.catch((error) => {
|
|
156
|
-
const message = error instanceof Error ? error.message : "recycle failed";
|
|
157
|
-
log(`recycle failed: ${message}`);
|
|
158
|
-
answer(failure(message));
|
|
159
|
-
});
|
|
160
|
-
});
|
|
161
|
-
socket.on("error", () => socket.destroy());
|
|
162
|
-
});
|
|
163
|
-
rmSync(socketPath, { force: true });
|
|
164
|
-
server.listen(socketPath, () => {
|
|
165
|
-
chownSync(socketPath, 0, 0);
|
|
166
|
-
chmodSync(socketPath, 0o660);
|
|
167
|
-
chownSync(socketPath, 0, organizationUid);
|
|
168
|
-
assertTrainingSupervisorSocketIdentity(socketPath, organizationUid);
|
|
169
|
-
log(`slot supervisor listening on ${socketPath}`);
|
|
170
|
-
});
|
|
171
|
-
return server;
|
|
172
|
-
};
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { DaimonGrokRegistration } from "../../containerDaimonGrokWorkerRender.js";
|
|
2
|
-
/** Reclaim only the clock subtree before the shared program clears the control root at startup. */
|
|
3
|
-
export declare const renderTrainingTaskClockReset: () => string[];
|
|
4
|
-
/** Before a receipt, bind the actual installed bytes and worker access to the clocked projection. */
|
|
5
|
-
export declare const renderTrainingTaskClockAssertions: (registration: DaimonGrokRegistration) => string[];
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { DAIMON_GROK_ENGINE_BROKER } from "../../../runtime/daimon/contractManifest.js";
|
|
2
|
-
import { SpawnfileError } from "../../../shared/index.js";
|
|
3
|
-
import { resolveDaimonGrokClockedWorkerConfig } from "../../../runtime/daimon/grokWorkerContract.js";
|
|
4
|
-
const clock = DAIMON_GROK_ENGINE_BROKER.worker.taskClock;
|
|
5
|
-
const quote = (value) => `'${value.replace(/'/gu, `'"'"'`)}'`;
|
|
6
|
-
/** Reclaim only the clock subtree before the shared program clears the control root at startup. */
|
|
7
|
-
export const renderTrainingTaskClockReset = () => [
|
|
8
|
-
`test ! -L ${quote(clock.rootDirectoryPath)}`,
|
|
9
|
-
`if [ -d ${quote(clock.rootDirectoryPath)} ]; then chown -R 0:0 ${quote(clock.rootDirectoryPath)}; chmod -R u+rwX ${quote(clock.rootDirectoryPath)}; fi`
|
|
10
|
-
];
|
|
11
|
-
/** Before a receipt, bind the actual installed bytes and worker access to the clocked projection. */
|
|
12
|
-
export const renderTrainingTaskClockAssertions = (registration) => {
|
|
13
|
-
const pin = resolveDaimonGrokClockedWorkerConfig(registration.model, registration.reasoningEffort, registration.slot).sha256;
|
|
14
|
-
const directoryPath = clock.slotDirectoryPattern.replace("{slot}", String(registration.slot));
|
|
15
|
-
const timestampFilePath = clock.slotFilePattern.replace("{slot}", String(registration.slot));
|
|
16
|
-
if (registration.configVariant !== "clocked" || registration.configSha256 !== pin) {
|
|
17
|
-
throw new SpawnfileError("runtime_error", "Training slot requires the pinned clocked worker config");
|
|
18
|
-
}
|
|
19
|
-
const worker = [
|
|
20
|
-
`test -r ${quote(timestampFilePath)}`, `test ! -w ${quote(timestampFilePath)}`,
|
|
21
|
-
`test -x ${quote(directoryPath)}`, `test ! -w ${quote(directoryPath)}`,
|
|
22
|
-
`test -r ${quote(clock.preloadPath)}`
|
|
23
|
-
].join(" && ");
|
|
24
|
-
return [
|
|
25
|
-
`test ! -L ${quote(directoryPath)} && test -d ${quote(directoryPath)}`,
|
|
26
|
-
`test ! -L ${quote(timestampFilePath)} && test -f ${quote(timestampFilePath)}`,
|
|
27
|
-
`test "$(stat -c '%u:%g %a' ${quote(directoryPath)})" = "${clock.ownerUid}:${clock.ownerUid} ${clock.directoryMode.toString(8)}"`,
|
|
28
|
-
`test "$(stat -c '%u:%g %a %h' ${quote(timestampFilePath)})" = "${clock.ownerUid}:${clock.ownerUid} ${clock.fileMode.toString(8)} 1"`,
|
|
29
|
-
`test "$(sha256sum ${quote(`${registration.grokHome}/config.toml`)} | cut -d ' ' -f1)" = ${quote(pin)}`,
|
|
30
|
-
// The read-only image bakes both the fixed symlink and the distro target. Refuse writable or
|
|
31
|
-
// non-root-owned ancestors/targets; a missing library must never masquerade as a working clock.
|
|
32
|
-
"node <<'SPAWNFILE_TASK_CLOCK_LIBRARY'",
|
|
33
|
-
"const fs = require('node:fs'), path = require('node:path');",
|
|
34
|
-
`const preload = ${JSON.stringify(clock.preloadPath)};`,
|
|
35
|
-
"const link = fs.lstatSync(preload); if (!link.isSymbolicLink() || link.uid !== 0 || link.gid !== 0) throw new Error('unsafe task clock preload link');",
|
|
36
|
-
"const library = fs.realpathSync(preload); if (!/^\\/usr\\/lib\\/(x86_64|aarch64)-linux-gnu\\/faketime\\/libfaketime\\.so\\.1$/.test(library) || !fs.statSync(library).isFile()) throw new Error('unexpected task clock library');",
|
|
37
|
-
"for (const root of [path.dirname(preload), library]) { for (let at = root;; at = path.dirname(at)) { const info = fs.lstatSync(at); if (info.isSymbolicLink() || info.uid !== 0 || info.gid !== 0 || (info.mode & 0o022)) throw new Error(`unsafe task clock library path: ${at}`); if (at === '/') break; } }",
|
|
38
|
-
"SPAWNFILE_TASK_CLOCK_LIBRARY",
|
|
39
|
-
`setpriv --clear-groups --reuid ${registration.uid} --regid ${registration.uid} --inh-caps=-all --ambient-caps=-all --bounding-set=-all -- /bin/sh -ceu ${quote(worker)}`
|
|
40
|
-
];
|
|
41
|
-
};
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
/** Fixed libfaketime symlink installed and mode-verified by the training image. */
|
|
3
|
-
export declare const TRAINING_FAKETIME_LIBRARY_PATH: "/usr/local/lib/daimon/libfaketime.so.1";
|
|
4
|
-
export declare const trainingImageSchema: z.ZodString;
|
|
5
|
-
export declare const trainingContainerConfigSchema: z.ZodObject<{
|
|
6
|
-
version: z.ZodEnum<{
|
|
7
|
-
"spawnfile.training-container.v1": "spawnfile.training-container.v1";
|
|
8
|
-
"spawnfile.training-container.v3": "spawnfile.training-container.v3";
|
|
9
|
-
"spawnfile.training-container.v4": "spawnfile.training-container.v4";
|
|
10
|
-
}>;
|
|
11
|
-
slots: z.ZodDefault<z.ZodNumber>;
|
|
12
|
-
dockerContext: z.ZodString;
|
|
13
|
-
inputs: z.ZodArray<z.ZodObject<{
|
|
14
|
-
source: z.ZodString;
|
|
15
|
-
destination: z.ZodString;
|
|
16
|
-
}, z.core.$strict>>;
|
|
17
|
-
output: z.ZodObject<{
|
|
18
|
-
source: z.ZodString;
|
|
19
|
-
destination: z.ZodLiteral<"/run/training/output">;
|
|
20
|
-
}, z.core.$strict>;
|
|
21
|
-
auth: z.ZodArray<z.ZodObject<{
|
|
22
|
-
source: z.ZodString;
|
|
23
|
-
provider: z.ZodEnum<{
|
|
24
|
-
codex: "codex";
|
|
25
|
-
claude: "claude";
|
|
26
|
-
}>;
|
|
27
|
-
}, z.core.$strict>>;
|
|
28
|
-
evaluatorRoutes: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
29
|
-
purpose: z.ZodEnum<{
|
|
30
|
-
decisions: "decisions";
|
|
31
|
-
extraction: "extraction";
|
|
32
|
-
proposals: "proposals";
|
|
33
|
-
}>;
|
|
34
|
-
provider: z.ZodEnum<{
|
|
35
|
-
"codex-subscription": "codex-subscription";
|
|
36
|
-
typesafe: "typesafe";
|
|
37
|
-
}>;
|
|
38
|
-
model: z.ZodString;
|
|
39
|
-
maxRequests: z.ZodNumber;
|
|
40
|
-
maxSpendUsd: z.ZodOptional<z.ZodNumber>;
|
|
41
|
-
}, z.core.$strict>>>;
|
|
42
|
-
evaluatorSecrets: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
43
|
-
provider: z.ZodLiteral<"typesafe">;
|
|
44
|
-
source: z.ZodString;
|
|
45
|
-
}, z.core.$strict>>>;
|
|
46
|
-
subjectIsolation: z.ZodOptional<z.ZodLiteral<"codex-native-sandbox">>;
|
|
47
|
-
broker: z.ZodOptional<z.ZodObject<{
|
|
48
|
-
engine: z.ZodLiteral<"grok">;
|
|
49
|
-
realmVolume: z.ZodString;
|
|
50
|
-
bootstrap: z.ZodString;
|
|
51
|
-
declaration: z.ZodString;
|
|
52
|
-
}, z.core.$strict>>;
|
|
53
|
-
}, z.core.$strict>;
|
|
54
|
-
export type TrainingContainerConfig = z.infer<typeof trainingContainerConfigSchema>;
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { DAIMON_BROKER_ENGINE_ID } from "../../../runtime/daimon/index.js";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import { z } from "zod";
|
|
4
|
-
import { trainingEvaluatorRoutesSchema, trainingEvaluatorSecretsSchema } from "./evaluators.js";
|
|
5
|
-
/** Fixed libfaketime symlink installed and mode-verified by the training image. */
|
|
6
|
-
export const TRAINING_FAKETIME_LIBRARY_PATH = "/usr/local/lib/daimon/libfaketime.so.1";
|
|
7
|
-
const hostPath = z.string().min(1).refine((value) => path.isAbsolute(value) && !/[,\r\n\0]/u.test(value), "Expected an absolute bind path");
|
|
8
|
-
const inputPath = z.string().regex(/^\/run\/training\/inputs\/[A-Za-z0-9._/-]+$/u).refine((value) => path.posix.normalize(value) === value && !value.endsWith("/"));
|
|
9
|
-
export const trainingImageSchema = z.string().regex(/^(?:sha256:[a-f0-9]{64}|[A-Za-z0-9][A-Za-z0-9._:/-]*@sha256:[a-f0-9]{64})$/u);
|
|
10
|
-
const brokerLaunchSchema = z.object({
|
|
11
|
-
engine: z.literal(DAIMON_BROKER_ENGINE_ID),
|
|
12
|
-
/** The named Docker volume holding the training Grok realm: `auth.json` and the broker credential journal, nothing else. */
|
|
13
|
-
realmVolume: z.string().regex(/^[A-Za-z0-9][A-Za-z0-9_.-]{0,127}$/u),
|
|
14
|
-
/** Host leaf of the dedicated training Grok login. Never the desktop `~/.grok/auth.json`. */
|
|
15
|
-
bootstrap: hostPath,
|
|
16
|
-
/** `spawnfile.training-broker.v2`, written beside the launch config and bound read-only into the container. */
|
|
17
|
-
declaration: hostPath
|
|
18
|
-
}).strict();
|
|
19
|
-
export const trainingContainerConfigSchema = z.object({
|
|
20
|
-
version: z.enum(["spawnfile.training-container.v1", "spawnfile.training-container.v3", "spawnfile.training-container.v4"]),
|
|
21
|
-
slots: z.number().int().min(1).max(8).default(4),
|
|
22
|
-
dockerContext: z.string().regex(/^[A-Za-z0-9][A-Za-z0-9_.-]{0,127}$/u),
|
|
23
|
-
inputs: z.array(z.object({ source: hostPath, destination: inputPath }).strict()).min(1).max(64),
|
|
24
|
-
output: z.object({ source: hostPath, destination: z.literal("/run/training/output") }).strict(),
|
|
25
|
-
auth: z.array(z.object({ source: hostPath, provider: z.enum(["codex", "claude"]) }).strict()).max(2),
|
|
26
|
-
evaluatorRoutes: trainingEvaluatorRoutesSchema.optional(),
|
|
27
|
-
evaluatorSecrets: trainingEvaluatorSecretsSchema(hostPath).optional(),
|
|
28
|
-
subjectIsolation: z.literal("codex-native-sandbox").optional(),
|
|
29
|
-
/** Present only on `spawnfile.training-container.v4`: the brokered Grok slot this container runs as root. */
|
|
30
|
-
broker: brokerLaunchSchema.optional()
|
|
31
|
-
}).strict().superRefine((value, context) => {
|
|
32
|
-
if (value.evaluatorSecrets && !value.broker && !value.subjectIsolation)
|
|
33
|
-
context.addIssue({ code: "custom", message: "Evaluator secrets require brokered v4 isolation or explicit codex-native-sandbox subject isolation" });
|
|
34
|
-
if (value.subjectIsolation && value.version !== "spawnfile.training-container.v1")
|
|
35
|
-
context.addIssue({ code: "custom", message: "Codex native subject isolation requires a non-brokered v1 launch" });
|
|
36
|
-
if (value.subjectIsolation && !value.evaluatorRoutes?.some(route => route.provider === "typesafe"))
|
|
37
|
-
context.addIssue({ code: "custom", message: "Codex native subject isolation requires a TypeSafe evaluator route" });
|
|
38
|
-
if (value.evaluatorSecrets && !value.evaluatorRoutes?.some(route => route.provider === "typesafe")) {
|
|
39
|
-
context.addIssue({ code: "custom", message: "TypeSafe secret requires a declared evaluator route" });
|
|
40
|
-
}
|
|
41
|
-
if (value.version === "spawnfile.training-container.v3")
|
|
42
|
-
context.addIssue({ code: "custom", message: "Training-container v3 is unsupported; migrate to v4 with slots: 1" });
|
|
43
|
-
const destinations = value.inputs.map((entry) => entry.destination);
|
|
44
|
-
if (destinations.some((entry, index) => destinations.some((other, otherIndex) => otherIndex !== index && (entry === other || entry.startsWith(`${other}/`))))) {
|
|
45
|
-
context.addIssue({ code: "custom", message: "Input destinations must not overlap" });
|
|
46
|
-
}
|
|
47
|
-
if (new Set(value.auth.map((entry) => entry.provider)).size !== value.auth.length)
|
|
48
|
-
context.addIssue({ code: "custom", message: "Duplicate auth provider" });
|
|
49
|
-
if ((value.version === "spawnfile.training-container.v4") !== (value.broker !== undefined)) {
|
|
50
|
-
context.addIssue({ code: "custom", message: "Only spawnfile.training-container.v4 declares broker slots; migrate v3 by setting version to v4 and slots to 1" });
|
|
51
|
-
}
|
|
52
|
-
});
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
export declare const TRAINING_EVALUATOR_ROUTES_FILE = "/run/spawnfile-training/evaluator-routes.json";
|
|
3
|
-
export declare const TRAINING_TYPESAFE_SECRET_FILE = "/run/spawnfile-training/secrets/typesafe";
|
|
4
|
-
export declare const TRAINING_TYPESAFE_SECRET_INGRESS = "/run/spawnfile-training/secret-ingress/typesafe";
|
|
5
|
-
export declare const trainingEvaluatorRouteSchema: z.ZodObject<{
|
|
6
|
-
purpose: z.ZodEnum<{
|
|
7
|
-
decisions: "decisions";
|
|
8
|
-
extraction: "extraction";
|
|
9
|
-
proposals: "proposals";
|
|
10
|
-
}>;
|
|
11
|
-
provider: z.ZodEnum<{
|
|
12
|
-
"codex-subscription": "codex-subscription";
|
|
13
|
-
typesafe: "typesafe";
|
|
14
|
-
}>;
|
|
15
|
-
model: z.ZodString;
|
|
16
|
-
maxRequests: z.ZodNumber;
|
|
17
|
-
maxSpendUsd: z.ZodOptional<z.ZodNumber>;
|
|
18
|
-
}, z.core.$strict>;
|
|
19
|
-
export declare const trainingEvaluatorRoutesSchema: z.ZodArray<z.ZodObject<{
|
|
20
|
-
purpose: z.ZodEnum<{
|
|
21
|
-
decisions: "decisions";
|
|
22
|
-
extraction: "extraction";
|
|
23
|
-
proposals: "proposals";
|
|
24
|
-
}>;
|
|
25
|
-
provider: z.ZodEnum<{
|
|
26
|
-
"codex-subscription": "codex-subscription";
|
|
27
|
-
typesafe: "typesafe";
|
|
28
|
-
}>;
|
|
29
|
-
model: z.ZodString;
|
|
30
|
-
maxRequests: z.ZodNumber;
|
|
31
|
-
maxSpendUsd: z.ZodOptional<z.ZodNumber>;
|
|
32
|
-
}, z.core.$strict>>;
|
|
33
|
-
/** Only a reference is declared. Secret bytes are never read by the compiler or launcher. */
|
|
34
|
-
export declare const trainingEvaluatorSecretsSchema: (source: z.ZodString) => z.ZodArray<z.ZodObject<{
|
|
35
|
-
provider: z.ZodLiteral<"typesafe">;
|
|
36
|
-
source: z.ZodString;
|
|
37
|
-
}, z.core.$strict>>;
|
|
38
|
-
export declare const prepareTrainingEvaluators: (root: string, config: {
|
|
39
|
-
evaluatorRoutes?: z.infer<typeof trainingEvaluatorRoutesSchema>;
|
|
40
|
-
evaluatorSecrets?: {
|
|
41
|
-
provider: "typesafe";
|
|
42
|
-
source: string;
|
|
43
|
-
}[];
|
|
44
|
-
subjectIsolation?: "codex-native-sandbox";
|
|
45
|
-
}, mappedArgs: readonly string[]) => Promise<{
|
|
46
|
-
mounts: string[];
|
|
47
|
-
env: string[];
|
|
48
|
-
}>;
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { writeFile } from "node:fs/promises";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import { z } from "zod";
|
|
4
|
-
export const TRAINING_EVALUATOR_ROUTES_FILE = "/run/spawnfile-training/evaluator-routes.json";
|
|
5
|
-
export const TRAINING_TYPESAFE_SECRET_FILE = "/run/spawnfile-training/secrets/typesafe";
|
|
6
|
-
export const TRAINING_TYPESAFE_SECRET_INGRESS = "/run/spawnfile-training/secret-ingress/typesafe";
|
|
7
|
-
export const trainingEvaluatorRouteSchema = z.object({
|
|
8
|
-
purpose: z.enum(["extraction", "proposals", "decisions"]),
|
|
9
|
-
provider: z.enum(["codex-subscription", "typesafe"]),
|
|
10
|
-
model: z.string().min(1).max(128).regex(/^[A-Za-z0-9._:-]+$/u),
|
|
11
|
-
maxRequests: z.number().int().positive().max(Number.MAX_SAFE_INTEGER),
|
|
12
|
-
maxSpendUsd: z.number().finite().nonnegative().optional()
|
|
13
|
-
}).strict().superRefine((route, context) => {
|
|
14
|
-
if (route.provider === "codex-subscription" ? route.purpose === "decisions" || route.maxSpendUsd !== undefined
|
|
15
|
-
: route.purpose !== "decisions" || route.maxSpendUsd === undefined) {
|
|
16
|
-
context.addIssue({ code: "custom", message: "Evaluator provider/purpose mismatch or missing TypeSafe spend budget" });
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
export const trainingEvaluatorRoutesSchema = z.array(trainingEvaluatorRouteSchema).min(1).max(64)
|
|
20
|
-
.refine(routes => new Set(routes.map(route => JSON.stringify([route.purpose, route.provider, route.model]))).size === routes.length, "Duplicate evaluator route");
|
|
21
|
-
/** Only a reference is declared. Secret bytes are never read by the compiler or launcher. */
|
|
22
|
-
export const trainingEvaluatorSecretsSchema = (source) => z.array(z.object({
|
|
23
|
-
provider: z.literal("typesafe"), source
|
|
24
|
-
}).strict()).min(1).max(1);
|
|
25
|
-
export const prepareTrainingEvaluators = async (root, config, mappedArgs) => {
|
|
26
|
-
const mounts = [], env = [];
|
|
27
|
-
if (config.evaluatorRoutes) {
|
|
28
|
-
const outputs = mappedArgs.flatMap((arg, index) => arg === "--out" ? [mappedArgs[index + 1]] : []);
|
|
29
|
-
const output = outputs[0];
|
|
30
|
-
if (outputs.length !== 1 || !output || path.posix.normalize(output) !== output ||
|
|
31
|
-
!(output === "/run/training/output" || output.startsWith("/run/training/output/"))) {
|
|
32
|
-
throw Error("Evaluator receipts require one mapped training --out directory");
|
|
33
|
-
}
|
|
34
|
-
const source = path.join(root, "evaluator-routes.json");
|
|
35
|
-
await writeFile(source, JSON.stringify({ version: "spawnfile.training.evaluator-routes.v1", routes: config.evaluatorRoutes,
|
|
36
|
-
receiptPath: path.posix.join(output, "evaluator-requests.jsonl") }), { mode: 0o444, flag: "wx" });
|
|
37
|
-
mounts.push(`type=bind,src=${source},dst=${TRAINING_EVALUATOR_ROUTES_FILE},readonly`);
|
|
38
|
-
env.push(`SPAWNFILE_TRAINING_EVALUATOR_ROUTES_FILE=${TRAINING_EVALUATOR_ROUTES_FILE}`);
|
|
39
|
-
}
|
|
40
|
-
for (const secret of config.evaluatorSecrets ?? []) {
|
|
41
|
-
// The host-uid v1 launcher cannot stage a root-owned copy; bind the canonical leaf at the consumer path.
|
|
42
|
-
if (config.subjectIsolation === "codex-native-sandbox") {
|
|
43
|
-
mounts.push(`type=bind,src=${secret.source},dst=${TRAINING_TYPESAFE_SECRET_FILE},readonly`);
|
|
44
|
-
}
|
|
45
|
-
else
|
|
46
|
-
mounts.push(`type=bind,src=${secret.source},dst=${TRAINING_TYPESAFE_SECRET_INGRESS},readonly`);
|
|
47
|
-
env.push(`SPAWNFILE_TRAINING_TYPESAFE_SECRET_FILE=${TRAINING_TYPESAFE_SECRET_FILE}`);
|
|
48
|
-
}
|
|
49
|
-
return { mounts, env };
|
|
50
|
-
};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
type DockerCall = (args: string[], cleanup: boolean) => Promise<{
|
|
2
|
-
code: number;
|
|
3
|
-
stdout: string;
|
|
4
|
-
stderr: string;
|
|
5
|
-
}>;
|
|
6
|
-
/** Called only for an ownership-verified container, before removal, including failure/cancellation. */
|
|
7
|
-
export declare const persistTrainingGrokCredential: (id: string, profile: string, scratch: string, call: DockerCall) => Promise<void>;
|
|
8
|
-
export {};
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
|
-
import { writeBackTrainingGrokCredential } from "../../../auth/index.js";
|
|
3
|
-
import { DAIMON_GROK_ENGINE_BROKER } from "../../../runtime/daimon/contractManifest.js";
|
|
4
|
-
/** Called only for an ownership-verified container, before removal, including failure/cancellation. */
|
|
5
|
-
export const persistTrainingGrokCredential = async (id, profile, scratch, call) => {
|
|
6
|
-
const state = await call(["inspect", "--format", "{{json .State}}", id], true);
|
|
7
|
-
if (state.code !== 0)
|
|
8
|
-
throw Error("Cannot verify training credential writer state");
|
|
9
|
-
if (JSON.parse(state.stdout).Running === true) {
|
|
10
|
-
const stopped = await call(["stop", "--time", "5", id], true);
|
|
11
|
-
if (stopped.code !== 0)
|
|
12
|
-
throw Error("Cannot stop training credential writer");
|
|
13
|
-
}
|
|
14
|
-
const terminal = await call(["inspect", "--format", "{{json .State}}", id], true);
|
|
15
|
-
if (terminal.code !== 0 || JSON.parse(terminal.stdout).Running !== false)
|
|
16
|
-
throw Error("Training credential writer is still active");
|
|
17
|
-
const realm = DAIMON_GROK_ENGINE_BROKER.credentialHomePath;
|
|
18
|
-
const candidate = path.join(scratch, "grok-auth.json"), journal = path.join(scratch, "grok-journal.json");
|
|
19
|
-
// Docker writes directly into a host-private directory: no credential bytes in stdout, logs or arguments.
|
|
20
|
-
const copied = await call(["cp", `${id}:${realm}/auth.json`, candidate], true);
|
|
21
|
-
if (copied.code !== 0)
|
|
22
|
-
throw Error("Cannot export training Grok credential");
|
|
23
|
-
const journalCopy = await call(["cp", `${id}:${realm}/.daimon-broker/credential-journal.json`, journal], true);
|
|
24
|
-
// A realm that never rotated has no journal. The auth owner accepts only unchanged bytes in that case.
|
|
25
|
-
await writeBackTrainingGrokCredential(profile, candidate, journalCopy.code === 0 ? journal : `${journal}.absent`);
|
|
26
|
-
};
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export { TRAINING_FAKETIME_LIBRARY_PATH, trainingContainerConfigSchema, trainingImageSchema } from "./contract.js";
|
|
2
|
-
export type { TrainingContainerConfig } from "./contract.js";
|
|
3
|
-
export { launchTrainingContainer } from "./launch.js";
|
|
4
|
-
export type { LaunchTrainingContainerOptions } from "./launch.js";
|
|
5
|
-
export { trainingEvaluatorRouteSchema, trainingEvaluatorRoutesSchema, trainingEvaluatorSecretsSchema, TRAINING_EVALUATOR_ROUTES_FILE, TRAINING_TYPESAFE_SECRET_FILE } from "./evaluators.js";
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export { TRAINING_FAKETIME_LIBRARY_PATH, trainingContainerConfigSchema, trainingImageSchema } from "./contract.js";
|
|
2
|
-
export { launchTrainingContainer } from "./launch.js";
|
|
3
|
-
export { trainingEvaluatorRouteSchema, trainingEvaluatorRoutesSchema, trainingEvaluatorSecretsSchema, TRAINING_EVALUATOR_ROUTES_FILE, TRAINING_TYPESAFE_SECRET_FILE } from "./evaluators.js";
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { type TrainingExecution } from "../execution.js";
|
|
2
|
-
import type { TrainingContext } from "../contract.js";
|
|
3
|
-
import { type TrainingDockerProcess } from "./process.js";
|
|
4
|
-
export declare const TRAINING_INPUTS_GID = 2000;
|
|
5
|
-
export interface LaunchTrainingContainerOptions {
|
|
6
|
-
image: string;
|
|
7
|
-
configPath: string;
|
|
8
|
-
context: TrainingContext;
|
|
9
|
-
args: readonly string[];
|
|
10
|
-
timeoutMs: number;
|
|
11
|
-
signal?: AbortSignal;
|
|
12
|
-
streams: {
|
|
13
|
-
stdout(line: string): void;
|
|
14
|
-
stderr(line: string): void;
|
|
15
|
-
};
|
|
16
|
-
process?: TrainingDockerProcess;
|
|
17
|
-
execution?: TrainingExecution;
|
|
18
|
-
preparationPath?: string;
|
|
19
|
-
repairPath?: string;
|
|
20
|
-
}
|
|
21
|
-
export declare const launchTrainingContainer: (options: LaunchTrainingContainerOptions) => Promise<number>;
|