spawnfile 0.1.33 → 0.1.34
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/auth/trainingAuth.d.ts +2 -5
- package/dist/cli/devCommands.d.ts +1 -1
- package/dist/cli/devCommands.js +0 -66
- package/dist/cli/runCli.d.ts +1 -4
- package/dist/cli/runCli.js +2 -2
- package/dist/cli/trainCommand.js +9 -15
- package/dist/cli/trainingBooted.d.ts +7 -0
- package/dist/cli/trainingBooted.js +41 -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 +7 -88
- package/dist/compiler/containerDaimonGatewayRender.d.ts +50 -0
- package/dist/compiler/containerDaimonGatewayRender.js +157 -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 +26 -46
- 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 +1 -0
- package/dist/compiler/runProject.js +9 -3
- package/dist/compiler/runProjectAuth.js +2 -17
- 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/trial/boot.d.ts +53 -0
- package/dist/compiler/training/trial/boot.js +147 -0
- package/dist/compiler/training/trial/docker.d.ts +8 -0
- package/dist/compiler/training/trial/docker.js +22 -0
- package/dist/compiler/training/trial/gateway.d.ts +42 -0
- package/dist/compiler/training/trial/gateway.js +98 -0
- package/dist/compiler/training/trial/index.d.ts +4 -0
- package/dist/compiler/training/trial/index.js +4 -0
- package/dist/compiler/training/trial/launcher.d.ts +32 -0
- package/dist/compiler/training/trial/launcher.js +49 -0
- package/dist/compiler/training/trial/project.d.ts +11 -0
- package/dist/compiler/training/trial/project.js +31 -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/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 +6 -12
- 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 +7 -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 +9 -3
- package/dist/runtime/daimon/subscriptionRealms.js +22 -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 +46 -0
- package/dist/runtime/daimon/training/booted/adapter.js +59 -0
- package/dist/runtime/daimon/training/booted/adapter.js.map +1 -0
- package/dist/runtime/daimon/training/booted/index.d.ts +2 -0
- package/dist/runtime/daimon/training/booted/index.js +2 -0
- package/dist/runtime/daimon/training/booted/index.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/training/providers/codex-subscription/index.js.map +1 -0
- package/dist/runtime/daimon/training/providers/codex-subscription/protocol.js.map +1 -0
- package/dist/runtime/daimon/training/providers/codex-subscription/provider.js.map +1 -0
- package/dist/runtime/daimon/training/providers/codex-subscription/strict-schema.js.map +1 -0
- package/dist/runtime/daimon/training/providers/grok-subscription/cli.d.ts +1 -3
- package/dist/runtime/daimon/training/providers/grok-subscription/cli.js +5 -5
- package/dist/runtime/daimon/training/providers/grok-subscription/cli.js.map +1 -1
- package/dist/runtime/daimon/training/providers/grok-subscription/index.d.ts +1 -2
- package/dist/runtime/daimon/training/providers/grok-subscription/index.js +0 -1
- package/dist/runtime/daimon/training/providers/grok-subscription/index.js.map +1 -1
- package/dist/runtime/daimon/training/providers/grok-subscription/protocol.d.ts +5 -17
- package/dist/runtime/daimon/training/providers/grok-subscription/protocol.js +18 -31
- package/dist/runtime/daimon/training/providers/grok-subscription/protocol.js.map +1 -1
- package/dist/runtime/daimon/training/providers/grok-subscription/provider.js +1 -2
- package/dist/runtime/daimon/training/providers/grok-subscription/provider.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 +1 -1
- package/dist/runtime/trainingProviders.d.ts +1 -2
- package/dist/runtime/trainingProviders.js +9 -19
- 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/shared/errors.js +0 -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.js.map +0 -1
- package/dist/runtime/codex-exec/training/providers/codex-subscription/protocol.js.map +0 -1
- 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.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/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
- /package/dist/runtime/{codex-exec → daimon}/training/providers/codex-subscription/index.d.ts +0 -0
- /package/dist/runtime/{codex-exec → daimon}/training/providers/codex-subscription/index.js +0 -0
- /package/dist/runtime/{codex-exec → daimon}/training/providers/codex-subscription/protocol.d.ts +0 -0
- /package/dist/runtime/{codex-exec → daimon}/training/providers/codex-subscription/protocol.js +0 -0
- /package/dist/runtime/{codex-exec → daimon}/training/providers/codex-subscription/provider.d.ts +0 -0
- /package/dist/runtime/{codex-exec → daimon}/training/providers/codex-subscription/provider.js +0 -0
- /package/dist/runtime/{codex-exec → daimon}/training/providers/codex-subscription/strict-schema.d.ts +0 -0
- /package/dist/runtime/{codex-exec → daimon}/training/providers/codex-subscription/strict-schema.js +0 -0
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import path from "node:path/posix";
|
|
2
|
-
import { resolveNoopolisRunId } from "../runtime/index.js";
|
|
3
|
-
import { createPersistentVolumeName } from "./moltnetArtifactPaths.js";
|
|
4
|
-
/** Only the legacy generated Pi application writes this telemetry layout. */
|
|
5
|
-
const PI_TELEMETRY_RUNTIME_NAMES = new Set(["pi"]);
|
|
6
|
-
const createTelemetryMountId = (agentSlug) => `agent-${agentSlug}-daimon-telemetry`;
|
|
7
|
-
/**
|
|
8
|
-
* Registers one run-scoped durable volume per legacy Pi agent for its daimon turn/wake
|
|
9
|
-
* causal telemetry directory (`<instanceRoot>/runtime/agents/<slug>/telemetry` — the parent
|
|
10
|
-
* of `causal.jsonl`, see `appCoreSource.ts`'s `runtimeHomePath`/`instanceRoot`), mirroring
|
|
11
|
-
* exactly how `moltnetArtifacts.ts` mounts the Moltnet causal directory (Piece 4b,
|
|
12
|
-
* Decision 21: daimon inner-truth telemetry was container-local — `docker cp` only — until
|
|
13
|
-
* now). Daimon's own write path is untouched: this only makes the HOST side of that same
|
|
14
|
-
* directory a named volume, so `docker rm` no longer discards it.
|
|
15
|
-
*/
|
|
16
|
-
export const createDaimonTelemetryArtifacts = (plan, runtimePlans, compiledNodes) => {
|
|
17
|
-
// Same run-scoping key as every other durable mount (see
|
|
18
|
-
// moltnetArtifactPaths.ts's createPersistentVolumeName doc comment): present for
|
|
19
|
-
// `spawnfile run`/`up` (which always call ensureNoopolisRunId() first), absent for a
|
|
20
|
-
// bare `spawnfile compile`/`build`, keeping those byte-identical to before this module
|
|
21
|
-
// existed.
|
|
22
|
-
const runId = resolveNoopolisRunId(process.env);
|
|
23
|
-
const agentSlugByNodeId = new Map(compiledNodes
|
|
24
|
-
.filter((node) => node.kind === "agent" && Boolean(node.id))
|
|
25
|
-
.map((node) => [node.id, node.slug]));
|
|
26
|
-
const mounts = [];
|
|
27
|
-
const telemetryMountIdsByInstance = new Map();
|
|
28
|
-
for (const runtimePlan of runtimePlans) {
|
|
29
|
-
if (!PI_TELEMETRY_RUNTIME_NAMES.has(runtimePlan.runtimeName) || !runtimePlan.instancePaths.homePath) {
|
|
30
|
-
continue;
|
|
31
|
-
}
|
|
32
|
-
const instanceRoot = runtimePlan.instancePaths.instanceRoot ?? path.dirname(runtimePlan.instancePaths.homePath);
|
|
33
|
-
const mountIdsByNodeId = {};
|
|
34
|
-
for (const nodeId of runtimePlan.sourceIds ?? []) {
|
|
35
|
-
const agentSlug = agentSlugByNodeId.get(nodeId);
|
|
36
|
-
if (!agentSlug) {
|
|
37
|
-
continue;
|
|
38
|
-
}
|
|
39
|
-
const mountId = createTelemetryMountId(agentSlug);
|
|
40
|
-
mounts.push({
|
|
41
|
-
id: mountId,
|
|
42
|
-
mount_path: path.join(instanceRoot, "runtime", "agents", agentSlug, "telemetry"),
|
|
43
|
-
reason: `daimon turn/wake causal telemetry for ${agentSlug}`,
|
|
44
|
-
volume_name: createPersistentVolumeName(plan.root, mountId, runId)
|
|
45
|
-
});
|
|
46
|
-
mountIdsByNodeId[nodeId] = mountId;
|
|
47
|
-
}
|
|
48
|
-
if (Object.keys(mountIdsByNodeId).length > 0) {
|
|
49
|
-
telemetryMountIdsByInstance.set(runtimePlan.id, mountIdsByNodeId);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
return {
|
|
53
|
-
mounts: mounts.sort((left, right) => left.id.localeCompare(right.id)),
|
|
54
|
-
telemetryMountIdsByInstance
|
|
55
|
-
};
|
|
56
|
-
};
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/** Clock directories are public by contract; prove the sibling mask in the worker's mount namespace. */
|
|
2
|
-
export declare const probeTrainingSiblingClock: (slot: number, target: string, execute?: (command: string, args: string[], options: {
|
|
3
|
-
timeout: number;
|
|
4
|
-
}) => Promise<{
|
|
5
|
-
stdout: string;
|
|
6
|
-
}>) => Promise<boolean>;
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { execFile } from "node:child_process";
|
|
2
|
-
import { promisify } from "node:util";
|
|
3
|
-
import { SpawnfileError } from "../../../shared/index.js";
|
|
4
|
-
import { trainingSlotPaths } from "./paths.js";
|
|
5
|
-
const run = promisify(execFile);
|
|
6
|
-
const quote = (value) => `'${value.replace(/'/gu, `'"'"'`)}'`;
|
|
7
|
-
/** Clock directories are public by contract; prove the sibling mask in the worker's mount namespace. */
|
|
8
|
-
export const probeTrainingSiblingClock = async (slot, target, execute = run) => {
|
|
9
|
-
const p = trainingSlotPaths(slot);
|
|
10
|
-
const script = [
|
|
11
|
-
'set -eu',
|
|
12
|
-
`cat ${quote(p.clockFile)} >/dev/null`,
|
|
13
|
-
// Use the same mode-000 directory bind as Grok's deny mounts. Neither an unavailable
|
|
14
|
-
// namespace nor a hidden own clock is a successful denial.
|
|
15
|
-
`blocked=$(mktemp -d ${quote(`${p.privateTmp}/clock-probe.XXXXXX`)})`,
|
|
16
|
-
'trap \'chmod 700 "$blocked"; rmdir "$blocked"\' EXIT',
|
|
17
|
-
'chmod 000 "$blocked"',
|
|
18
|
-
`bwrap --die-with-parent --cap-drop ALL --ro-bind / / --dev /dev --ro-bind "$blocked" ${quote(target)} -- /bin/sh -ceu ${quote(`cat ${quote(p.clockFile)} >/dev/null; if ls -A ${quote(target)} >/dev/null 2>&1; then echo reachable; else echo denied; fi`)}`
|
|
19
|
-
].join("\n");
|
|
20
|
-
const result = await execute("setpriv", ["--clear-groups", `--reuid=${p.workerUid}`, `--regid=${p.workerUid}`,
|
|
21
|
-
"--inh-caps=-all", "--ambient-caps=-all", "--bounding-set=-all", "--", "/bin/sh", "-ceu", script], { timeout: 10_000 });
|
|
22
|
-
if (result.stdout.trim() === "denied")
|
|
23
|
-
return true;
|
|
24
|
-
if (result.stdout.trim() === "reachable")
|
|
25
|
-
return false;
|
|
26
|
-
throw new SpawnfileError("runtime_error", "Training clock canary returned no verified verdict");
|
|
27
|
-
};
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
/**
|
|
3
|
-
* `spawnfile.training-broker.v2`: the only thing the host tells the
|
|
4
|
-
* broker-capable training container about its slot. It is data, never code —
|
|
5
|
-
* the image's own Spawnfile distribution renders the provisioning from it with
|
|
6
|
-
* the same renderers production uses, so no host-written executable is ever
|
|
7
|
-
* mounted (`../container/AGENTS.md`).
|
|
8
|
-
*
|
|
9
|
-
* It carries no credentials: the training Grok login reaches the container only
|
|
10
|
-
* as the read-only bootstrap leaf bind, and the rotating credential lives on
|
|
11
|
-
* the named realm volume.
|
|
12
|
-
*/
|
|
13
|
-
export declare const trainingBrokerDeclarationSchema: z.ZodObject<{
|
|
14
|
-
version: z.ZodLiteral<"spawnfile.training-broker.v2">;
|
|
15
|
-
maxRunRequests: z.ZodDefault<z.ZodNumber>;
|
|
16
|
-
slots: z.ZodDefault<z.ZodNumber>;
|
|
17
|
-
engine: z.ZodLiteral<"grok">;
|
|
18
|
-
agentId: z.ZodString;
|
|
19
|
-
model: z.ZodEnum<{
|
|
20
|
-
"grok-4.6": "grok-4.6";
|
|
21
|
-
"grok-4.5": "grok-4.5";
|
|
22
|
-
"grok-build": "grok-build";
|
|
23
|
-
}>;
|
|
24
|
-
reasoningEffort: z.ZodEnum<{
|
|
25
|
-
low: "low";
|
|
26
|
-
medium: "medium";
|
|
27
|
-
high: "high";
|
|
28
|
-
}>;
|
|
29
|
-
architecture: z.ZodEnum<{
|
|
30
|
-
arm64: "arm64";
|
|
31
|
-
x64: "x64";
|
|
32
|
-
}>;
|
|
33
|
-
limits: z.ZodObject<{
|
|
34
|
-
maxRequests: z.ZodNumber;
|
|
35
|
-
maxTokens: z.ZodNumber;
|
|
36
|
-
timeoutMs: z.ZodNumber;
|
|
37
|
-
}, z.core.$strict>;
|
|
38
|
-
bootstrap: z.ZodString;
|
|
39
|
-
organizationUid: z.ZodLiteral<2000>;
|
|
40
|
-
seccompProfileSha256: z.ZodString;
|
|
41
|
-
unenforcedBindPolicy: z.ZodDefault<z.ZodEnum<{
|
|
42
|
-
refuse: "refuse";
|
|
43
|
-
"profile-only": "profile-only";
|
|
44
|
-
}>>;
|
|
45
|
-
skills: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
46
|
-
name: z.ZodString;
|
|
47
|
-
files: z.ZodArray<z.ZodObject<{
|
|
48
|
-
path: z.ZodString;
|
|
49
|
-
content: z.ZodString;
|
|
50
|
-
}, z.core.$strict>>;
|
|
51
|
-
}, z.core.$strict>>>;
|
|
52
|
-
}, z.core.$strict>;
|
|
53
|
-
export type TrainingBrokerDeclaration = z.infer<typeof trainingBrokerDeclarationSchema>;
|
|
54
|
-
export declare const parseTrainingBrokerDeclaration: (value: unknown) => TrainingBrokerDeclaration;
|
|
@@ -1,70 +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 { DAIMON_GROK_BROKER_MODELS, DAIMON_GROK_BROKER_REASONING_EFFORTS, DAIMON_GROK_ENGINE_BROKER } from "../../../runtime/daimon/contractManifest.js";
|
|
5
|
-
const canonical = z.string().min(2).max(4_096).refine((value) => path.posix.isAbsolute(value) && path.posix.normalize(value) === value && !value.endsWith("/") && !value.includes("\0"), "canonical absolute path");
|
|
6
|
-
/**
|
|
7
|
-
* `spawnfile.training-broker.v2`: the only thing the host tells the
|
|
8
|
-
* broker-capable training container about its slot. It is data, never code —
|
|
9
|
-
* the image's own Spawnfile distribution renders the provisioning from it with
|
|
10
|
-
* the same renderers production uses, so no host-written executable is ever
|
|
11
|
-
* mounted (`../container/AGENTS.md`).
|
|
12
|
-
*
|
|
13
|
-
* It carries no credentials: the training Grok login reaches the container only
|
|
14
|
-
* as the read-only bootstrap leaf bind, and the rotating credential lives on
|
|
15
|
-
* the named realm volume.
|
|
16
|
-
*/
|
|
17
|
-
export const trainingBrokerDeclarationSchema = z.strictObject({
|
|
18
|
-
version: z.literal("spawnfile.training-broker.v2"),
|
|
19
|
-
maxRunRequests: z.number().int().positive().max(Number.MAX_SAFE_INTEGER).default(1000),
|
|
20
|
-
slots: z.number().int().min(1).max(8).default(4),
|
|
21
|
-
engine: z.literal(DAIMON_BROKER_ENGINE_ID),
|
|
22
|
-
agentId: z.string().min(1).max(128).regex(/^[A-Za-z0-9][A-Za-z0-9._:-]*$/u),
|
|
23
|
-
model: z.enum(DAIMON_GROK_BROKER_MODELS),
|
|
24
|
-
reasoningEffort: z.enum(DAIMON_GROK_BROKER_REASONING_EFFORTS),
|
|
25
|
-
architecture: z.enum(["arm64", "x64"]),
|
|
26
|
-
limits: z.strictObject({
|
|
27
|
-
maxRequests: z.number().int().min(DAIMON_GROK_ENGINE_BROKER.turnLimits.bounds.maxRequests[0]).max(DAIMON_GROK_ENGINE_BROKER.turnLimits.bounds.maxRequests[1]),
|
|
28
|
-
maxTokens: z.number().int().min(DAIMON_GROK_ENGINE_BROKER.turnLimits.bounds.maxTokens[0]).max(DAIMON_GROK_ENGINE_BROKER.turnLimits.bounds.maxTokens[1]),
|
|
29
|
-
timeoutMs: z.number().int().min(DAIMON_GROK_ENGINE_BROKER.turnLimits.bounds.timeoutMs[0]).max(DAIMON_GROK_ENGINE_BROKER.turnLimits.bounds.timeoutMs[1])
|
|
30
|
-
}),
|
|
31
|
-
/** The read-only bootstrap credential leaf, already refused if it is the desktop `~/.grok/auth.json`. */
|
|
32
|
-
bootstrap: canonical,
|
|
33
|
-
/** The uid the trained evaluator (Training, DSPy, judges) runs as; the only uid the slot supervisor serves. */
|
|
34
|
-
organizationUid: z.literal(DAIMON_GROK_ENGINE_BROKER.identities.organizationUid),
|
|
35
|
-
seccompProfileSha256: z.string().regex(/^[a-f0-9]{64}$/u),
|
|
36
|
-
/**
|
|
37
|
-
* What the slot supervisor does with a deny path whose backing filesystem
|
|
38
|
-
* does not enforce unix ownership — virtiofs and grpcfuse under Docker
|
|
39
|
-
* Desktop and Colima, where `chown` is silently ignored and uid 2200 reads a
|
|
40
|
-
* root `0600` file (P0 §5). The backing filesystem decides, not the fact of
|
|
41
|
-
* being a host bind: the same bind over ext4 or overlay on a Linux daemon is
|
|
42
|
-
* probed for real, which is what makes `refuse` a default a run can meet.
|
|
43
|
-
*
|
|
44
|
-
* `refuse` (the default) fails the slot and writes no receipt: a worker-uid
|
|
45
|
-
* probe over such a path carries no information, so the supervisor will not
|
|
46
|
-
* certify it. `profile-only` is the operator's explicit acceptance that for
|
|
47
|
-
* those paths the boundary is the bubblewrap-enforced `deny` list alone —
|
|
48
|
-
* verified to block both shell `cat` and `read_file` on 1.0.34 (P0 §4), but
|
|
49
|
-
* *not* a boundary a worker-uid namespace cannot lift — and the supervisor
|
|
50
|
-
* records every path that used that weaker evidence in its log.
|
|
51
|
-
*
|
|
52
|
-
* It does not reach `TRAINING_SEALED_DENY_PATHS`. The sealed train and test
|
|
53
|
-
* datasets are held by DAC on their ancestor under both values, and a slot
|
|
54
|
-
* that cannot prove that denial is refused whatever this says.
|
|
55
|
-
*/
|
|
56
|
-
unenforcedBindPolicy: z.enum(["refuse", "profile-only"]).default("refuse"),
|
|
57
|
-
/**
|
|
58
|
-
* The subject's declared skills in Daimon's engine-neutral form (the
|
|
59
|
-
* compiled `.agents/skills` tree), omitted when it declares none. Root
|
|
60
|
-
* provisioning renders them into every slot's `$GROK_HOME/skills`, and the
|
|
61
|
-
* entrypoint, supervisor and lease all resolve the projection from this one
|
|
62
|
-
* read-only input, so they bind the same `skillsSha256`. Daimon's own parser
|
|
63
|
-
* (mirrored in `runtime/daimon/grokWorkerSkills.ts`) enforces the bounds.
|
|
64
|
-
*/
|
|
65
|
-
skills: z.array(z.strictObject({
|
|
66
|
-
name: z.string().min(1).max(128),
|
|
67
|
-
files: z.array(z.strictObject({ path: z.string().min(1).max(1_024), content: z.string() })).min(1).max(64)
|
|
68
|
-
})).min(1).max(64).optional()
|
|
69
|
-
}).strict();
|
|
70
|
-
export const parseTrainingBrokerDeclaration = (value) => trainingBrokerDeclarationSchema.parse(value);
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { type DaimonProjectionModule } from "./projection.js";
|
|
2
|
-
export declare const TRAINING_GROK_BROKER_CONTROL_SOCKET_ENV = "SPAWNFILE_TRAINING_GROK_BROKER_CONTROL_SOCKET";
|
|
3
|
-
export declare const TRAINING_GROK_GRANT_HOME_ROOT_ENV = "SPAWNFILE_TRAINING_GROK_GRANT_HOME_ROOT";
|
|
4
|
-
export declare const TRAINING_ENTRYPOINT_COMMAND = "/opt/training/bin/train";
|
|
5
|
-
/**
|
|
6
|
-
* The desktop Grok login, in every spelling a caller might reach it by.
|
|
7
|
-
*
|
|
8
|
-
* D2 is explicit: training uses one dedicated Grok login and never the
|
|
9
|
-
* developer's own. An in-container refresh rotates the credential, so mounting
|
|
10
|
-
* the desktop leaf would invalidate the developer's desktop session as a side
|
|
11
|
-
* effect of a training run — and the refreshed token would live on tmpfs, so
|
|
12
|
-
* the desktop login would be gone rather than moved.
|
|
13
|
-
*/
|
|
14
|
-
export declare const desktopGrokAuthPaths: (home?: string) => string[];
|
|
15
|
-
export declare const assertNotDesktopGrokAuth: (source: string, home?: string) => string;
|
|
16
|
-
export interface TrainingEntrypointOptions {
|
|
17
|
-
argv: readonly string[];
|
|
18
|
-
declarationPath?: string;
|
|
19
|
-
loadDaimon?: () => Promise<DaimonProjectionModule>;
|
|
20
|
-
log?: (line: string) => void;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* The broker-capable training container's root entrypoint.
|
|
24
|
-
*
|
|
25
|
-
* Order matters and is the whole privilege model: provision as root with the
|
|
26
|
-
* production capability set, start the launcher (root) and the broker and
|
|
27
|
-
* relay (2100) and prove each one's post-drop identity, publish the slot
|
|
28
|
-
* supervisor socket, and only then drop to uid 2000 with an empty capability
|
|
29
|
-
* bounding set to run `train`. The training core, DSPy and the judges are that uid; the
|
|
30
|
-
* model's own tools are the worker uid the launcher alone can reach.
|
|
31
|
-
*/
|
|
32
|
-
export declare const runTrainingBrokerEntrypoint: (options: TrainingEntrypointOptions) => Promise<number>;
|
|
33
|
-
/**
|
|
34
|
-
* `train` as uid 2000 with an empty bounding set, proven inside the child
|
|
35
|
-
* before it execs: `setpriv --bounding-set=-all` silently does nothing without
|
|
36
|
-
* `CAP_SETPCAP`, so the guard has to read `/proc/self/status` rather than
|
|
37
|
-
* trust the flag.
|
|
38
|
-
*/
|
|
39
|
-
export declare const trainingChildArgv: (argv: readonly string[], uid?: number) => string[];
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import { normalizedTrainingEnvironment } from "../../../shared/index.js";
|
|
2
|
-
import { spawn } from "node:child_process";
|
|
3
|
-
import { randomBytes } from "node:crypto";
|
|
4
|
-
import { lstat, readFile } from "node:fs/promises";
|
|
5
|
-
import os from "node:os";
|
|
6
|
-
import { renderTrainingBrokerProvisioning } from "./provisioning.js";
|
|
7
|
-
import { runTrainingRootScript } from "./rootScript.js";
|
|
8
|
-
import { stageTrainingEvaluatorSecret } from "./evaluatorSecrets.js";
|
|
9
|
-
import { startBrokerProcesses, stopBrokerProcesses } from "./processes.js";
|
|
10
|
-
import { resetTrainingBrokerSlotAsOrganization } from "./reset.js";
|
|
11
|
-
import path from "node:path";
|
|
12
|
-
import { SpawnfileError } from "../../../shared/index.js";
|
|
13
|
-
import { DAIMON_GROK_ENGINE_BROKER } from "../../../runtime/daimon/contractManifest.js";
|
|
14
|
-
import { parseTrainingBrokerDeclaration } from "./declaration.js";
|
|
15
|
-
import { loadDaimonProjectionModule, resolveTrainingSlotProjection } from "./projection.js";
|
|
16
|
-
import { createTrainingSlotRuntime } from "./runtime.js";
|
|
17
|
-
import { createTrainingSlotSupervisor, serveTrainingSlotSupervisor, startTrainingSlot } from "./supervisor.js";
|
|
18
|
-
import { trainingSlotDescriptors, assertTrainingSlotsDocument, TRAINING_SLOTS_FILE, DAIMON_ORGANIZATION_UID, TRAINING_BOOTSTRAP_MOUNT, TRAINING_BROKER_DECLARATION_FILE, TRAINING_GRANT_HOME_ROOT, TRAINING_SUPERVISOR_SOCKET } from "./paths.js";
|
|
19
|
-
export const TRAINING_GROK_BROKER_CONTROL_SOCKET_ENV = "SPAWNFILE_TRAINING_GROK_BROKER_CONTROL_SOCKET";
|
|
20
|
-
export const TRAINING_GROK_GRANT_HOME_ROOT_ENV = "SPAWNFILE_TRAINING_GROK_GRANT_HOME_ROOT";
|
|
21
|
-
export const TRAINING_ENTRYPOINT_COMMAND = "/opt/training/bin/train";
|
|
22
|
-
/**
|
|
23
|
-
* The desktop Grok login, in every spelling a caller might reach it by.
|
|
24
|
-
*
|
|
25
|
-
* D2 is explicit: training uses one dedicated Grok login and never the
|
|
26
|
-
* developer's own. An in-container refresh rotates the credential, so mounting
|
|
27
|
-
* the desktop leaf would invalidate the developer's desktop session as a side
|
|
28
|
-
* effect of a training run — and the refreshed token would live on tmpfs, so
|
|
29
|
-
* the desktop login would be gone rather than moved.
|
|
30
|
-
*/
|
|
31
|
-
export const desktopGrokAuthPaths = (home = os.homedir()) => [path.resolve(home, ".grok/auth.json"), path.resolve(home, ".grok", "auth.json")];
|
|
32
|
-
export const assertNotDesktopGrokAuth = (source, home = os.homedir()) => {
|
|
33
|
-
if (desktopGrokAuthPaths(home).includes(path.resolve(source))) {
|
|
34
|
-
throw new SpawnfileError("validation_error", "Training refuses the desktop ~/.grok/auth.json as its Grok bootstrap; import a dedicated login with `spawnfile auth import grok --profile spawnfile-training --from <dir>`");
|
|
35
|
-
}
|
|
36
|
-
return source;
|
|
37
|
-
};
|
|
38
|
-
/** The bootstrap leaf inside the container: the fixed read-only mount, a bounded regular file, never a symlink. */
|
|
39
|
-
const assertBootstrap = async (declaration) => {
|
|
40
|
-
if (declaration.bootstrap !== TRAINING_BOOTSTRAP_MOUNT) {
|
|
41
|
-
throw new SpawnfileError("validation_error", `The training Grok bootstrap must be mounted at ${TRAINING_BOOTSTRAP_MOUNT}`);
|
|
42
|
-
}
|
|
43
|
-
const info = await lstat(declaration.bootstrap);
|
|
44
|
-
if (!info.isFile() || info.isSymbolicLink() || info.size < 2 || info.size > DAIMON_GROK_SUBSCRIPTION_MAX_BYTES) {
|
|
45
|
-
throw new SpawnfileError("validation_error", "The training Grok bootstrap must be a bounded regular credential leaf");
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
const DAIMON_GROK_SUBSCRIPTION_MAX_BYTES = 64 * 1024;
|
|
49
|
-
/**
|
|
50
|
-
* The broker-capable training container's root entrypoint.
|
|
51
|
-
*
|
|
52
|
-
* Order matters and is the whole privilege model: provision as root with the
|
|
53
|
-
* production capability set, start the launcher (root) and the broker and
|
|
54
|
-
* relay (2100) and prove each one's post-drop identity, publish the slot
|
|
55
|
-
* supervisor socket, and only then drop to uid 2000 with an empty capability
|
|
56
|
-
* bounding set to run `train`. The training core, DSPy and the judges are that uid; the
|
|
57
|
-
* model's own tools are the worker uid the launcher alone can reach.
|
|
58
|
-
*/
|
|
59
|
-
export const runTrainingBrokerEntrypoint = async (options) => {
|
|
60
|
-
const log = options.log ?? ((line) => process.stderr.write(`[training-entrypoint] ${line}\n`));
|
|
61
|
-
if (process.getuid?.() !== 0)
|
|
62
|
-
throw new SpawnfileError("runtime_error", "The broker-capable training container must start as root");
|
|
63
|
-
const declaration = parseTrainingBrokerDeclaration(JSON.parse(await readFile(options.declarationPath ?? TRAINING_BROKER_DECLARATION_FILE, "utf8")));
|
|
64
|
-
await assertBootstrap(declaration);
|
|
65
|
-
const descriptors = trainingSlotDescriptors(declaration.slots);
|
|
66
|
-
const document = JSON.parse(await readFile(TRAINING_SLOTS_FILE, "utf8"));
|
|
67
|
-
assertTrainingSlotsDocument(document, declaration.slots);
|
|
68
|
-
const daimon = await (options.loadDaimon ?? loadDaimonProjectionModule)();
|
|
69
|
-
const reset = resetTrainingBrokerSlotAsOrganization;
|
|
70
|
-
const slots = await Promise.all(descriptors.map(p => resolveTrainingSlotProjection(declaration, p.slot, daimon)));
|
|
71
|
-
const registrations = slots.map(slot => slot.registration);
|
|
72
|
-
const runtimes = slots.map(({ registration, projectionSha256 }) => createTrainingSlotRuntime({ declaration, registration, projectionSha256, reset }));
|
|
73
|
-
await stageTrainingEvaluatorSecret();
|
|
74
|
-
await runTrainingRootScript(renderTrainingBrokerProvisioning(registrations, declaration.maxRunRequests).join("\n"), { maxBuffer: 8 * 1024 * 1024 });
|
|
75
|
-
const children = await startBrokerProcesses({ log });
|
|
76
|
-
let server;
|
|
77
|
-
try {
|
|
78
|
-
for (const runtime of runtimes)
|
|
79
|
-
await startTrainingSlot(runtime, randomBytes(32).toString("hex"));
|
|
80
|
-
const supervisor = createTrainingSlotSupervisor({ runtimes, organizationUid: declaration.organizationUid });
|
|
81
|
-
server = serveTrainingSlotSupervisor(supervisor, TRAINING_SUPERVISOR_SOCKET, log, declaration.organizationUid);
|
|
82
|
-
log(`provisioned ${registrations.length} training slots with one broker process set`);
|
|
83
|
-
return await runTrainingChild(options.argv, declaration, log);
|
|
84
|
-
}
|
|
85
|
-
finally {
|
|
86
|
-
server?.close();
|
|
87
|
-
await stopBrokerProcesses(children, log);
|
|
88
|
-
}
|
|
89
|
-
};
|
|
90
|
-
/**
|
|
91
|
-
* `train` as uid 2000 with an empty bounding set, proven inside the child
|
|
92
|
-
* before it execs: `setpriv --bounding-set=-all` silently does nothing without
|
|
93
|
-
* `CAP_SETPCAP`, so the guard has to read `/proc/self/status` rather than
|
|
94
|
-
* trust the flag.
|
|
95
|
-
*/
|
|
96
|
-
export const trainingChildArgv = (argv, uid = DAIMON_ORGANIZATION_UID) => [
|
|
97
|
-
"setpriv", "--clear-groups", `--reuid=${uid}`, `--regid=${uid}`, "--inh-caps=-all", "--ambient-caps=-all", "--bounding-set=-all",
|
|
98
|
-
"--", "/bin/bash", "-ceu",
|
|
99
|
-
'if [ "$EUID" -eq 0 ]; then echo "training must not run as root" >&2; exit 1; fi\n'
|
|
100
|
-
+ 'test "$(sed -n "s/^CapBnd:[[:space:]]*//p" /proc/self/status)" = 0000000000000000\n'
|
|
101
|
-
+ 'test "$(sed -n "s/^CapEff:[[:space:]]*//p" /proc/self/status)" = 0000000000000000\n'
|
|
102
|
-
+ 'exec "$@"',
|
|
103
|
-
"bash", TRAINING_ENTRYPOINT_COMMAND, ...argv
|
|
104
|
-
];
|
|
105
|
-
const runTrainingChild = (argv, declaration, log) => new Promise((resolve) => {
|
|
106
|
-
const command = trainingChildArgv(argv, declaration.organizationUid);
|
|
107
|
-
const child = spawn(command[0], command.slice(1), {
|
|
108
|
-
stdio: ["ignore", "inherit", "inherit"],
|
|
109
|
-
env: {
|
|
110
|
-
...normalizedTrainingEnvironment(),
|
|
111
|
-
[TRAINING_GROK_BROKER_CONTROL_SOCKET_ENV]: DAIMON_GROK_ENGINE_BROKER.controlSocketPath,
|
|
112
|
-
[TRAINING_GROK_GRANT_HOME_ROOT_ENV]: TRAINING_GRANT_HOME_ROOT,
|
|
113
|
-
SPAWNFILE_TRAINING_SLOTS_FILE: TRAINING_SLOTS_FILE,
|
|
114
|
-
HOME: "/home/training"
|
|
115
|
-
}
|
|
116
|
-
});
|
|
117
|
-
const forward = (signal) => () => child.kill(signal);
|
|
118
|
-
for (const signal of ["SIGTERM", "SIGINT", "SIGHUP"])
|
|
119
|
-
process.on(signal, forward(signal));
|
|
120
|
-
child.once("exit", (code, signal) => {
|
|
121
|
-
log(`training exited code=${code ?? "null"} signal=${signal ?? "none"}`);
|
|
122
|
-
resolve(signal ? (signal === "SIGINT" ? 130 : 143) : code ?? 1);
|
|
123
|
-
});
|
|
124
|
-
});
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { trainingEnvironment } from "../../../shared/index.js";
|
|
2
|
-
import { constants } from "node:fs";
|
|
3
|
-
import { chmod, chown, lstat, mkdir, open } from "node:fs/promises";
|
|
4
|
-
import path from "node:path";
|
|
5
|
-
import { TRAINING_TYPESAFE_SECRET_FILE, TRAINING_TYPESAFE_SECRET_INGRESS } from "../container/evaluators.js";
|
|
6
|
-
import { DAIMON_ORGANIZATION_UID } from "./paths.js";
|
|
7
|
-
/** Root stages into tmpfs before provisioning drops directory ownership and evaluator capabilities. */
|
|
8
|
-
export const stageTrainingEvaluatorSecret = async (env = process.env) => {
|
|
9
|
-
const secretFile = trainingEnvironment("SPAWNFILE_TRAINING_TYPESAFE_SECRET_FILE", env);
|
|
10
|
-
if (secretFile === undefined)
|
|
11
|
-
return;
|
|
12
|
-
if (process.getuid?.() !== 0 || secretFile !== TRAINING_TYPESAFE_SECRET_FILE) {
|
|
13
|
-
throw Error("Invalid evaluator secret staging declaration");
|
|
14
|
-
}
|
|
15
|
-
try {
|
|
16
|
-
const ingress = path.posix.dirname(TRAINING_TYPESAFE_SECRET_INGRESS);
|
|
17
|
-
const parent = await lstat(ingress);
|
|
18
|
-
if (!parent.isDirectory() || parent.isSymbolicLink() || parent.uid !== 0)
|
|
19
|
-
throw Error("Invalid ingress directory");
|
|
20
|
-
// This directory is tmpfs, never the mounted credential inode.
|
|
21
|
-
await chmod(ingress, 0o700);
|
|
22
|
-
const source = await open(TRAINING_TYPESAFE_SECRET_INGRESS, constants.O_RDONLY | constants.O_NOFOLLOW);
|
|
23
|
-
let bytes;
|
|
24
|
-
try {
|
|
25
|
-
const info = await source.stat();
|
|
26
|
-
if (!info.isFile() || info.nlink !== 1 || info.size < 1 || info.size > 64 * 1024)
|
|
27
|
-
throw Error("Invalid ingress leaf");
|
|
28
|
-
const buffer = Buffer.alloc(64 * 1024 + 1);
|
|
29
|
-
const { bytesRead } = await source.read(buffer, 0, buffer.length, 0);
|
|
30
|
-
const after = await source.stat();
|
|
31
|
-
if (bytesRead !== info.size || after.size !== info.size || after.mtimeMs !== info.mtimeMs || after.ctimeMs !== info.ctimeMs) {
|
|
32
|
-
throw Error("Secret changed while staging");
|
|
33
|
-
}
|
|
34
|
-
bytes = buffer.subarray(0, bytesRead);
|
|
35
|
-
}
|
|
36
|
-
finally {
|
|
37
|
-
await source.close();
|
|
38
|
-
}
|
|
39
|
-
const destination = path.posix.dirname(TRAINING_TYPESAFE_SECRET_FILE);
|
|
40
|
-
await mkdir(destination, { mode: 0o700 });
|
|
41
|
-
const target = await open(TRAINING_TYPESAFE_SECRET_FILE, constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL | constants.O_NOFOLLOW, 0o600);
|
|
42
|
-
try {
|
|
43
|
-
await target.writeFile(bytes);
|
|
44
|
-
await target.sync();
|
|
45
|
-
await target.chown(DAIMON_ORGANIZATION_UID, DAIMON_ORGANIZATION_UID);
|
|
46
|
-
}
|
|
47
|
-
finally {
|
|
48
|
-
bytes.fill(0);
|
|
49
|
-
await target.close();
|
|
50
|
-
}
|
|
51
|
-
await chown(destination, DAIMON_ORGANIZATION_UID, DAIMON_ORGANIZATION_UID);
|
|
52
|
-
const info = await lstat(TRAINING_TYPESAFE_SECRET_FILE), directory = await lstat(destination);
|
|
53
|
-
if (info.uid !== DAIMON_ORGANIZATION_UID || info.gid !== DAIMON_ORGANIZATION_UID || (info.mode & 0o777) !== 0o600 ||
|
|
54
|
-
directory.uid !== DAIMON_ORGANIZATION_UID || directory.gid !== DAIMON_ORGANIZATION_UID || (directory.mode & 0o777) !== 0o700) {
|
|
55
|
-
throw Error("Invalid evaluator secret ownership");
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
catch {
|
|
59
|
-
// Filesystem errors may contain credential bytes supplied by a transport; emit only a fixed diagnostic.
|
|
60
|
-
throw Error("Evaluator secret staging failed");
|
|
61
|
-
}
|
|
62
|
-
};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export { parseTrainingBrokerDeclaration, trainingBrokerDeclarationSchema, type TrainingBrokerDeclaration } from "./declaration.js";
|
|
2
|
-
export { assertNotDesktopGrokAuth, desktopGrokAuthPaths, runTrainingBrokerEntrypoint, trainingChildArgv, TRAINING_GROK_BROKER_CONTROL_SOCKET_ENV, TRAINING_GROK_GRANT_HOME_ROOT_ENV } from "./entrypoint.js";
|
|
3
|
-
export { brokerProcessPlan, startBrokerProcesses, stopBrokerProcesses } from "./processes.js";
|
|
4
|
-
export { loadDaimonProjectionModule, resolveTrainingGrokProjection, resolveTrainingSlotProjection, trainingOrganizationRuntimeConfig } from "./projection.js";
|
|
5
|
-
export { recycleTrainingSlot, TRAINING_RECYCLE_DEFAULT_TIMEOUT_MS, TRAINING_RECYCLE_MAX_REPLY_BYTES, type RecycleTrainingSlotOptions, type TrainingSlotRecycleReceipt } from "./recycleClient.js";
|
|
6
|
-
export { renderTrainingBrokerProvisioning, renderTrainingIdentities, renderTrainingSlotProvisioning, trainingSlotDirectories } from "./provisioning.js";
|
|
7
|
-
export { buildTrainingSlotReceipt, readGrokExecutableSha256, resolveBackingFilesystem, resolveTrainingCanaries } from "./receipt.js";
|
|
8
|
-
export { resolveTrainingGrokDenyPaths, resolveTrainingGrokRegistration } from "./registration.js";
|
|
9
|
-
export { resetTrainingBrokerSlot, resetTrainingBrokerSlotAsOrganization } from "./reset.js";
|
|
10
|
-
export { createTrainingSlotRuntime, renderTrainingSlotWipe } from "./runtime.js";
|
|
11
|
-
export { assertTrainingSupervisorSocketIdentity, createTrainingSlotSupervisor, serveTrainingSlotSupervisor, TRAINING_SUPERVISOR_PROTOCOL, type TrainingSlotRuntime } from "./supervisor.js";
|
|
12
|
-
export * from "./paths.js";
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export { parseTrainingBrokerDeclaration, trainingBrokerDeclarationSchema } from "./declaration.js";
|
|
2
|
-
export { assertNotDesktopGrokAuth, desktopGrokAuthPaths, runTrainingBrokerEntrypoint, trainingChildArgv, TRAINING_GROK_BROKER_CONTROL_SOCKET_ENV, TRAINING_GROK_GRANT_HOME_ROOT_ENV } from "./entrypoint.js";
|
|
3
|
-
export { brokerProcessPlan, startBrokerProcesses, stopBrokerProcesses } from "./processes.js";
|
|
4
|
-
export { loadDaimonProjectionModule, resolveTrainingGrokProjection, resolveTrainingSlotProjection, trainingOrganizationRuntimeConfig } from "./projection.js";
|
|
5
|
-
export { recycleTrainingSlot, TRAINING_RECYCLE_DEFAULT_TIMEOUT_MS, TRAINING_RECYCLE_MAX_REPLY_BYTES } from "./recycleClient.js";
|
|
6
|
-
export { renderTrainingBrokerProvisioning, renderTrainingIdentities, renderTrainingSlotProvisioning, trainingSlotDirectories } from "./provisioning.js";
|
|
7
|
-
export { buildTrainingSlotReceipt, readGrokExecutableSha256, resolveBackingFilesystem, resolveTrainingCanaries } from "./receipt.js";
|
|
8
|
-
export { resolveTrainingGrokDenyPaths, resolveTrainingGrokRegistration } from "./registration.js";
|
|
9
|
-
export { resetTrainingBrokerSlot, resetTrainingBrokerSlotAsOrganization } from "./reset.js";
|
|
10
|
-
export { createTrainingSlotRuntime, renderTrainingSlotWipe } from "./runtime.js";
|
|
11
|
-
export { assertTrainingSupervisorSocketIdentity, createTrainingSlotSupervisor, serveTrainingSlotSupervisor, TRAINING_SUPERVISOR_PROTOCOL } from "./supervisor.js";
|
|
12
|
-
export * from "./paths.js";
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { runTrainingBrokerEntrypoint } from "./entrypoint.js";
|
|
3
|
-
/**
|
|
4
|
-
* The broker-capable training image's root entrypoint process. The image ships
|
|
5
|
-
* it; the host supplies only the read-only `spawnfile.training-broker.v2`
|
|
6
|
-
* declaration and never a script, so no host executable enters the container.
|
|
7
|
-
*/
|
|
8
|
-
const main = async () => {
|
|
9
|
-
process.exitCode = await runTrainingBrokerEntrypoint({ argv: process.argv.slice(2) });
|
|
10
|
-
};
|
|
11
|
-
main().catch((error) => {
|
|
12
|
-
process.stderr.write(`[training-entrypoint] ${error instanceof Error ? error.message : String(error)}\n`);
|
|
13
|
-
process.exitCode = 1;
|
|
14
|
-
});
|