spawnfile 0.1.32 → 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
package/README.md
CHANGED
|
@@ -83,7 +83,7 @@ See [container deployment](specs/CONTAINERS.md), [status](specs/STATUS.md), and
|
|
|
83
83
|
| **OpenClaw** | OpenClaw agents and their native messaging surfaces. The default agent scaffold. |
|
|
84
84
|
| **PicoClaw** | PicoClaw agents and their native messaging surfaces. |
|
|
85
85
|
|
|
86
|
-
Daimon requires a pinned runtime image matching the compiler contract.
|
|
86
|
+
Daimon requires a pinned runtime image matching the compiler contract.
|
|
87
87
|
|
|
88
88
|
Portability is capability-specific: the compiler reports each feature as **supported**, **degraded**, or **unsupported**. Read that report before switching runtimes. Exact versions live in [runtimes.yaml](runtimes.yaml); the [runtime specification](specs/RUNTIMES.md) describes the adapter model.
|
|
89
89
|
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Grok is deliberately absent
|
|
3
|
-
*
|
|
4
|
-
* read-only bootstrap leaf, and judges spend it through short inference grants
|
|
5
|
-
* (D2). Staging a Grok credential into a shared runtime home would put a
|
|
6
|
-
* rotating login where the evaluator and the image both reach it.
|
|
2
|
+
* Grok is deliberately absent: a training run's Grok login lives in its auth
|
|
3
|
+
* gateway's realm volume, never in a staged runtime home.
|
|
7
4
|
*/
|
|
8
5
|
export type TrainingAuthProvider = "codex" | "claude";
|
|
9
6
|
export interface TrainingAuthStageOptions {
|
package/dist/cli/devCommands.js
CHANGED
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
import { InvalidArgumentError } from "commander";
|
|
2
1
|
import { envFileAliasOption, resolveEnvFileOption, runtimeEnvFileOption } from "./envFileOption.js";
|
|
3
|
-
const parsePositiveIntegerOption = (value) => {
|
|
4
|
-
if (!/^[1-9]\d*$/u.test(value)) {
|
|
5
|
-
throw new InvalidArgumentError("must be a positive integer");
|
|
6
|
-
}
|
|
7
|
-
return Number(value);
|
|
8
|
-
};
|
|
9
2
|
export const registerDevCommands = (program, handlers, streams) => {
|
|
10
3
|
const dev = program.command("dev").description("Run an interactive Spawnfile development deployment");
|
|
11
4
|
dev
|
|
@@ -41,65 +34,6 @@ export const registerDevCommands = (program, handlers, streams) => {
|
|
|
41
34
|
streams.stdout(`record: ${result.deploymentRecordPath}`);
|
|
42
35
|
}
|
|
43
36
|
});
|
|
44
|
-
dev
|
|
45
|
-
.command("apply")
|
|
46
|
-
.description("Hot-apply one agent into a running dev deployment")
|
|
47
|
-
.argument("[path]", "Project directory or Spawnfile path", process.cwd())
|
|
48
|
-
.requiredOption("--agent <id>", "Agent id, slug, or name to hot-apply")
|
|
49
|
-
.option("--deployment <name>", "Detached deployment record name")
|
|
50
|
-
.option("--docker-command <command>", "Docker command")
|
|
51
|
-
.option("-o, --out <directory>", "Dev output directory")
|
|
52
|
-
.action(async (inputPath, options) => {
|
|
53
|
-
const result = await handlers.devApplyProject(inputPath, {
|
|
54
|
-
agent: options.agent,
|
|
55
|
-
deploymentName: options.deployment,
|
|
56
|
-
dockerCommand: options.dockerCommand,
|
|
57
|
-
outputDirectory: options.out
|
|
58
|
-
});
|
|
59
|
-
streams.stdout(`applied agent ${result.agentId}`);
|
|
60
|
-
streams.stdout(`container: ${result.containerName}`);
|
|
61
|
-
streams.stdout(`bridge: ${result.bridgeStarted ? "started" : "unchanged"}`);
|
|
62
|
-
});
|
|
63
|
-
dev
|
|
64
|
-
.command("restart")
|
|
65
|
-
.description("Reload one agent in a running dev deployment")
|
|
66
|
-
.argument("[path]", "Project directory or Spawnfile path", process.cwd())
|
|
67
|
-
.requiredOption("--agent <id>", "Agent id, slug, or name to reload")
|
|
68
|
-
.option("--deployment <name>", "Detached deployment record name")
|
|
69
|
-
.option("--docker-command <command>", "Docker command")
|
|
70
|
-
.option("-o, --out <directory>", "Dev output directory")
|
|
71
|
-
.action(async (inputPath, options) => {
|
|
72
|
-
const result = await handlers.devRestartProject(inputPath, {
|
|
73
|
-
agent: options.agent,
|
|
74
|
-
deploymentName: options.deployment,
|
|
75
|
-
dockerCommand: options.dockerCommand,
|
|
76
|
-
outputDirectory: options.out
|
|
77
|
-
});
|
|
78
|
-
streams.stdout(`restarted agent ${result.agentId}`);
|
|
79
|
-
streams.stdout(`container: ${result.containerName}`);
|
|
80
|
-
streams.stdout(`bridge: ${result.bridgeStarted ? "started" : "unchanged"}`);
|
|
81
|
-
});
|
|
82
|
-
dev
|
|
83
|
-
.command("activity")
|
|
84
|
-
.description("Print the current Pi agent activity buffer from a running dev deployment")
|
|
85
|
-
.argument("[path]", "Project directory or Spawnfile path", process.cwd())
|
|
86
|
-
.option("--agent <id>", "Only show events for one agent id, slug, or name")
|
|
87
|
-
.option("--deployment <name>", "Detached deployment record name")
|
|
88
|
-
.option("--docker-command <command>", "Docker command")
|
|
89
|
-
.option("-o, --out <directory>", "Dev output directory")
|
|
90
|
-
.option("--tail <count>", "Maximum buffered events to print", parsePositiveIntegerOption)
|
|
91
|
-
.action(async (inputPath, options) => {
|
|
92
|
-
const result = await handlers.devActivityProject(inputPath, {
|
|
93
|
-
agent: options.agent,
|
|
94
|
-
deploymentName: options.deployment,
|
|
95
|
-
dockerCommand: options.dockerCommand,
|
|
96
|
-
outputDirectory: options.out,
|
|
97
|
-
tail: options.tail
|
|
98
|
-
});
|
|
99
|
-
for (const event of result.events) {
|
|
100
|
-
streams.stdout(JSON.stringify(event));
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
37
|
dev
|
|
104
38
|
.command("stop")
|
|
105
39
|
.description("Stop the recorded dev deployment container")
|
package/dist/cli/runCli.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { importClaudeCodeAuth, importCodexAuth, importGrokAuth, importEnvFile, initializeTargetSecretSourceLifecycle, provisionCredentials, requireAuthProfile } from "../auth/index.js";
|
|
2
2
|
import { addAgentProject, addProjectSurface, addProjectModelFallback, addSubagentProject, addTeamProject, buildOrganizationView, buildCompilePlan, buildProject, buildUpReceipt, clearProjectModelFallbacks, compileProject, createTrainingContext, createTrainingPlan, loadTrainingProject, resolveTrainingPlan, materializeTrainingMoment, lowerTrainingExecution, allocateTrainingOutputParent, initProject, listInitTemplates, publishProject, upProject, removeProjectSurface, runProject, setProjectPrimaryModel, setProjectRuntime, setProjectSurfaceAccess, showProjectSurfaces, syncProjectAuth } from "../compiler/index.js";
|
|
3
|
-
import {
|
|
3
|
+
import { devStopProject, devUpProject } from "../dev/index.js";
|
|
4
4
|
import { consumeImageUp } from "../distribution/index.js";
|
|
5
5
|
import { createDockerProbeGateway, downDeployment, exportRunArtifacts, inspectDockerDeployment, listDeploymentRecords, listHomeDeploymentRecords } from "../deployment/index.js";
|
|
6
6
|
import { listRuntimeAdapters } from "../runtime/index.js";
|
|
@@ -55,9 +55,6 @@ export interface CliHandlers {
|
|
|
55
55
|
upProject: typeof upProject;
|
|
56
56
|
buildUpReceipt: typeof buildUpReceipt;
|
|
57
57
|
consumeImageUp: typeof consumeImageUp;
|
|
58
|
-
devActivityProject: typeof devActivityProject;
|
|
59
|
-
devApplyProject: typeof devApplyProject;
|
|
60
|
-
devRestartProject: typeof devRestartProject;
|
|
61
58
|
devStopProject: typeof devStopProject;
|
|
62
59
|
devUpProject: typeof devUpProject;
|
|
63
60
|
setProjectPrimaryModel: typeof setProjectPrimaryModel;
|
package/dist/cli/runCli.js
CHANGED
|
@@ -2,7 +2,7 @@ import { readFileSync } from "node:fs";
|
|
|
2
2
|
import { Command } from "commander";
|
|
3
3
|
import { importClaudeCodeAuth, importCodexAuth, importGrokAuth, importEnvFile, initializeTargetSecretSourceLifecycle, provisionCredentials, requireAuthProfile } from "../auth/index.js";
|
|
4
4
|
import { addAgentProject, addProjectSurface, addProjectModelFallback, addSubagentProject, addTeamProject, buildOrganizationView, buildCompilePlan, buildProject, buildUpReceipt, clearProjectModelFallbacks, compileProject, createTrainingContext, createTrainingPlan, loadTrainingProject, resolveTrainingPlan, materializeTrainingMoment, lowerTrainingExecution, allocateTrainingOutputParent, initProject, listInitTemplates, preflightCompilePlan, publishProject, upProject, removeProjectSurface, runProject, setProjectPrimaryModel, setProjectRuntime, setProjectSurfaceAccess, showProjectSurfaces, syncProjectAuth } from "../compiler/index.js";
|
|
5
|
-
import {
|
|
5
|
+
import { devStopProject, devUpProject } from "../dev/index.js";
|
|
6
6
|
import { consumeImageUp } from "../distribution/index.js";
|
|
7
7
|
import { createDockerProbeGateway, downDeployment, exportRunArtifacts, inspectDockerDeployment, listDeploymentRecords, listHomeDeploymentRecords } from "../deployment/index.js";
|
|
8
8
|
import { errorExitCode, isSpawnfileError } from "../shared/index.js";
|
|
@@ -49,7 +49,7 @@ const createDefaultHandlers = () => ({
|
|
|
49
49
|
listDeploymentRecords, listHomeDeploymentRecords,
|
|
50
50
|
initProject, listInitTemplates, listRuntimeAdapters, removeProjectSurface, requireAuthProfile,
|
|
51
51
|
runProject, setProjectPrimaryModel, setProjectRuntime, upProject, buildUpReceipt, consumeImageUp,
|
|
52
|
-
|
|
52
|
+
devStopProject, devUpProject,
|
|
53
53
|
setProjectSurfaceAccess, showProjectSurfaces, syncProjectAuth
|
|
54
54
|
});
|
|
55
55
|
const isCliStreams = (value) => {
|
package/dist/cli/trainCommand.js
CHANGED
|
@@ -8,14 +8,11 @@ export const registerTrainCommand = (program, handlers, streams, packageVersion,
|
|
|
8
8
|
.description("Plan, rewind, or train one canonical agent through its declared training inputs")
|
|
9
9
|
.argument("[path]", "Canonical project directory or Spawnfile path", process.cwd())
|
|
10
10
|
.option("--agent <id>", "Canonical agent id or unambiguous short name (inferred for one agent)")
|
|
11
|
-
.option("--
|
|
12
|
-
.option("--training-config <json>", "V2 image recipe and declared inputs, or advanced v1 local bindings")
|
|
11
|
+
.option("--auth-profile <name>", "Login for production-booted Daimon trials (held by the run's auth gateway)")
|
|
13
12
|
.option("--plan", "Print the resolved training authoring plan without executing training")
|
|
14
13
|
.option("--materialize <example>", "Rewind an authored example into --out without running training")
|
|
15
14
|
.option("--history <directory>", "Local recorded history for --materialize")
|
|
16
15
|
.option("--dry-run", "Validate and estimate without compiling, authenticating or starting models")
|
|
17
|
-
.option("--repair-measurements <parent-out>", "Fork captured work into a fresh output for authorized measurement repair")
|
|
18
|
-
.option("--repair-witness <manifest>", "Explicit verified image witness for a legacy parent")
|
|
19
16
|
.option("--resume", "Resume the exact persisted training experiment in --out");
|
|
20
17
|
for (const name of forwarded) {
|
|
21
18
|
const flag = `--${name} <value>`;
|
|
@@ -83,11 +80,9 @@ export const registerTrainCommand = (program, handlers, streams, packageVersion,
|
|
|
83
80
|
args.push("--experiment-timeout-ms", String(timeout));
|
|
84
81
|
if (options.trialTimeoutMs === undefined && plan.deadlines?.trial_ms !== undefined)
|
|
85
82
|
args.push("--trial-timeout-ms", String(plan.deadlines.trial_ms));
|
|
86
|
-
const lowered = plan.targets.length > 0 ? await handlers.lowerTrainingExecution({ project, plan, args
|
|
87
|
-
trainingConfig: options.trainingConfig, trainingImage: options.trainingImage }) : undefined;
|
|
83
|
+
const lowered = plan.targets.length > 0 ? await handlers.lowerTrainingExecution({ project, plan, args }) : undefined;
|
|
88
84
|
if (lowered && options.dryRun === true) {
|
|
89
|
-
streams.stdout(JSON.stringify(
|
|
90
|
-
declaration: lowered.declaration, ...(lowered.trainingImage ? { imageOverride: lowered.trainingImage } : {}) } }, null, 2));
|
|
85
|
+
streams.stdout(JSON.stringify(lowered.execution, null, 2));
|
|
91
86
|
setExitCode(0);
|
|
92
87
|
return;
|
|
93
88
|
}
|
|
@@ -97,16 +92,15 @@ export const registerTrainCommand = (program, handlers, streams, packageVersion,
|
|
|
97
92
|
if (!lowered && options.dryRun !== true && typeof options.out !== "string") {
|
|
98
93
|
throw new SpawnfileError("validation_error", "Actual training requires --out when no training targets are declared");
|
|
99
94
|
}
|
|
100
|
-
if (!lowered && options.dryRun !== true && typeof options.trainingConfig !== "string") {
|
|
101
|
-
throw new SpawnfileError("validation_error", "Actual training requires --training-config when no training targets are declared; host execution is disabled");
|
|
102
|
-
}
|
|
103
95
|
const context = await handlers.createTrainingContext(inputPath, { agent: plan.agent.id, packageVersion });
|
|
96
|
+
// Trials are production-booted Daimon organizations: the container per trial is the isolation.
|
|
97
|
+
if (options.dryRun !== true && context.agent.runtime !== "daimon") {
|
|
98
|
+
throw new SpawnfileError("validation_error", `Actual training boots Daimon trials; agent ${context.agent.id} runs on ${context.agent.runtime}`);
|
|
99
|
+
}
|
|
104
100
|
if (lowered)
|
|
105
101
|
await handlers.allocateTrainingOutputParent(lowered.execution.output);
|
|
106
|
-
setExitCode(await handlers.runTraining({ context, args: lowered?.execution.args ?? args,
|
|
107
|
-
|
|
108
|
-
trainingImage: lowered?.trainingImage ?? options.trainingImage,
|
|
109
|
-
trainingConfig: lowered?.trainingConfig ?? options.trainingConfig,
|
|
102
|
+
setExitCode(await handlers.runTraining({ context, args: lowered?.execution.args ?? args,
|
|
103
|
+
authProfile: options.authProfile,
|
|
110
104
|
dryRun: options.dryRun === true,
|
|
111
105
|
timeoutMs: timeout + 5000, streams, signal }));
|
|
112
106
|
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { RunTrainingOptions } from "./trainingExecution.js";
|
|
2
|
+
/**
|
|
3
|
+
* Production-booted training for a Daimon subject: the training core and the
|
|
4
|
+
* grader run here, and every trial is the subject's own compiled organization
|
|
5
|
+
* in its own container, sharing the run's one auth gateway (and so one login).
|
|
6
|
+
*/
|
|
7
|
+
export declare const runBootedTraining: (options: RunTrainingOptions) => Promise<number>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { requireAuthProfile } from "../auth/index.js";
|
|
3
|
+
import { createBootedTrialRun } from "../compiler/training/trial/index.js";
|
|
4
|
+
import { createDaimonBootedAdapter } from "../runtime/daimon/training/booted/index.js";
|
|
5
|
+
import { SpawnfileError } from "../shared/index.js";
|
|
6
|
+
const failure = (message) => new SpawnfileError("runtime_error", message);
|
|
7
|
+
const flag = (args, name) => {
|
|
8
|
+
const index = args.indexOf(`--${name}`);
|
|
9
|
+
return index < 0 ? undefined : args[index + 1];
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Production-booted training for a Daimon subject: the training core and the
|
|
13
|
+
* grader run here, and every trial is the subject's own compiled organization
|
|
14
|
+
* in its own container, sharing the run's one auth gateway (and so one login).
|
|
15
|
+
*/
|
|
16
|
+
export const runBootedTraining = async (options) => {
|
|
17
|
+
if (!options.authProfile)
|
|
18
|
+
throw failure("Production-booted Daimon training requires --auth-profile (the login its auth gateway holds)");
|
|
19
|
+
const out = flag(options.args, "out");
|
|
20
|
+
if (!out)
|
|
21
|
+
throw failure("Production-booted Daimon training requires --out");
|
|
22
|
+
const system = options.context.documents.find((document) => document.role === "system");
|
|
23
|
+
const instructions = flag(options.args, "instructions") === undefined
|
|
24
|
+
? system ? ["--source-root", options.context.project.root, "--instructions", system.destinationPath]
|
|
25
|
+
: (() => { throw failure(`Agent ${options.context.agent.id} declares no system document to train`); })()
|
|
26
|
+
: [];
|
|
27
|
+
const run = createBootedTrialRun({
|
|
28
|
+
agentManifestPath: options.context.agent.source,
|
|
29
|
+
authProfile: await requireAuthProfile(options.authProfile),
|
|
30
|
+
scratchRoot: path.join(path.resolve(out), "booted-trials")
|
|
31
|
+
});
|
|
32
|
+
try {
|
|
33
|
+
const { main } = await import("../runtime/trainingCli.js");
|
|
34
|
+
return await main(["train", ...options.args, ...(flag(options.args, "runtime") ? [] : ["--runtime", "daimon"]), ...instructions], {
|
|
35
|
+
cwd: process.cwd(), signal: options.signal, stdout: options.streams.stdout, stderr: options.streams.stderr
|
|
36
|
+
}, { adapter: (_runtime, adapter) => createDaimonBootedAdapter({ launcher: run, timeoutMs: adapter.timeoutMs }) });
|
|
37
|
+
}
|
|
38
|
+
finally {
|
|
39
|
+
await run.close();
|
|
40
|
+
}
|
|
41
|
+
};
|
|
@@ -1,17 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { TrainingContext } from "../compiler/training/index.js";
|
|
2
2
|
import type { CliStreams } from "./runCli.js";
|
|
3
3
|
export interface RunTrainingOptions {
|
|
4
4
|
context: TrainingContext;
|
|
5
|
-
execution?: TrainingExecution;
|
|
6
5
|
args: readonly string[];
|
|
7
6
|
dryRun: boolean;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
trainingImage?: string;
|
|
11
|
-
trainingConfig?: string;
|
|
7
|
+
/** Auth profile whose login a production-booted run's gateway holds. */
|
|
8
|
+
authProfile?: string;
|
|
12
9
|
timeoutMs: number;
|
|
13
10
|
streams: CliStreams;
|
|
14
11
|
signal?: AbortSignal;
|
|
15
12
|
}
|
|
16
|
-
/**
|
|
13
|
+
/** Actual training boots production trials; dry-run estimates run on the host through the training composition. */
|
|
17
14
|
export declare const runTraining: (options: RunTrainingOptions) => Promise<number>;
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import { canonicalWireId } from '../shared/index.js';
|
|
2
|
-
import { launchTrainingContainer } from "../compiler/training/container/index.js";
|
|
3
|
-
import { runTrainingDocker } from "../compiler/training/container/process.js";
|
|
4
|
-
import { prepareTraining } from "../compiler/training/preparation/index.js";
|
|
5
|
-
import { readBoundedJson } from "../compiler/training/preparation/inputs.js";
|
|
6
2
|
import { SpawnfileError } from "../shared/index.js";
|
|
3
|
+
import { runBootedTraining } from "./trainingBooted.js";
|
|
7
4
|
const failure = (message) => new SpawnfileError("runtime_error", message);
|
|
8
5
|
const validCostReceipt = (line) => {
|
|
9
6
|
try {
|
|
@@ -16,37 +13,12 @@ const validCostReceipt = (line) => {
|
|
|
16
13
|
return false;
|
|
17
14
|
}
|
|
18
15
|
};
|
|
19
|
-
/**
|
|
16
|
+
/** Actual training boots production trials; dry-run estimates run on the host through the training composition. */
|
|
20
17
|
export const runTraining = async (options) => {
|
|
21
18
|
if (options.signal?.aborted)
|
|
22
19
|
return 130;
|
|
23
|
-
if (
|
|
24
|
-
|
|
25
|
-
if (options.trainingConfig) {
|
|
26
|
-
const config = await readBoundedJson(options.trainingConfig);
|
|
27
|
-
// Image declarations go through preparation; lowered launch configurations go straight to Docker.
|
|
28
|
-
if (config.version === "spawnfile.training-container.v2" || (["spawnfile.training-container.v3", "spawnfile.training-container.v4"].includes(String(config.version)) && config.image !== undefined)) {
|
|
29
|
-
if (options.trainingImage && !options.execution)
|
|
30
|
-
throw failure("V2 owns its image declaration; --training-image is only for v1");
|
|
31
|
-
const prepared = await prepareTraining({ configPath: options.trainingConfig, context: options.context, args: options.args,
|
|
32
|
-
repairMeasurements: options.repairMeasurements, repairWitness: options.repairWitness,
|
|
33
|
-
execution: options.execution, outputOverride: options.execution?.output, imageOverride: options.execution ? options.trainingImage : undefined,
|
|
34
|
-
dryRun: options.dryRun, process: runTrainingDocker, timeoutMs: options.timeoutMs, signal: options.signal, streams: options.streams });
|
|
35
|
-
if (!("dryRun" in prepared))
|
|
36
|
-
return launchTrainingContainer({ ...prepared,
|
|
37
|
-
timeoutMs: options.timeoutMs, signal: options.signal, streams: options.streams });
|
|
38
|
-
options.streams.stderr(`Training preparation plan ${prepared.digest}; no Docker, auth or filesystem mutations`);
|
|
39
|
-
options = { ...options, repairMeasurements: undefined, repairWitness: undefined };
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
if (options.repairMeasurements)
|
|
43
|
-
throw failure("Measurement repair requires the v2 preparation declaration");
|
|
44
|
-
if (!options.dryRun) {
|
|
45
|
-
if (!options.trainingImage || !options.trainingConfig)
|
|
46
|
-
throw failure("Actual training requires --training-image and --training-config; host execution is disabled");
|
|
47
|
-
return launchTrainingContainer({ image: options.trainingImage, configPath: options.trainingConfig,
|
|
48
|
-
context: options.context, args: options.args, execution: options.execution, timeoutMs: options.timeoutMs, streams: options.streams, signal: options.signal });
|
|
49
|
-
}
|
|
20
|
+
if (!options.dryRun)
|
|
21
|
+
return runBootedTraining(options);
|
|
50
22
|
const controller = new AbortController();
|
|
51
23
|
const deadline = performance.now() + options.timeoutMs;
|
|
52
24
|
let active = true, lastLine = "";
|
|
@@ -5,7 +5,6 @@ import { SpawnfileError } from "../shared/index.js";
|
|
|
5
5
|
import { createMoltnetSummary, createOrganizationSummary } from "./containerArtifactSummaries.js";
|
|
6
6
|
import { createEnvVariableMap, createRuntimeTargetPlans } from "./containerArtifactsPlans.js";
|
|
7
7
|
import { createDockerIgnoreContent } from "./dockerBuildContext.js";
|
|
8
|
-
import { createDaimonTelemetryArtifacts } from "./daimonTelemetryArtifacts.js";
|
|
9
8
|
import { createRootfsFiles, renderDockerfile, renderEntrypoint, renderEnvExample } from "./containerArtifactsRender.js";
|
|
10
9
|
import { createMemoryArtifactBundle } from "./memoryArtifacts.js";
|
|
11
10
|
import { resolveRecordingReport } from "./recordingReport.js";
|
|
@@ -39,7 +38,6 @@ export const createContainerArtifacts = async (plan, compiledNodes, options = {}
|
|
|
39
38
|
const localDaimonIdentityPath = process.env[DAIMON_LOCAL_RUNTIME_IDENTITY_ENV]?.trim();
|
|
40
39
|
const localDaimonIdentity = localDaimonIdentityPath ? await loadLocalDaimonRuntimeIdentity(localDaimonIdentityPath) : undefined;
|
|
41
40
|
const runtimePlans = await createRuntimeTargetPlans(plan, compiledNodes, options.worldBindings, options.deploymentLineage);
|
|
42
|
-
const daimonTelemetryArtifacts = createDaimonTelemetryArtifacts(plan, runtimePlans, compiledNodes);
|
|
43
41
|
const envVariableMap = createEnvVariableMap(compiledNodes, runtimePlans, options.moltnet);
|
|
44
42
|
const projectedWorldTokenEnvNames = [...new Set(runtimePlans.flatMap((runtimePlan) => runtimePlan.worldTokenEnvNames ?? []))].sort();
|
|
45
43
|
const worldTokenEnvNames = (options.worldBindings?.artifact.bindings ?? [])
|
|
@@ -80,7 +78,6 @@ export const createContainerArtifacts = async (plan, compiledNodes, options = {}
|
|
|
80
78
|
const persistentMountCandidates = [
|
|
81
79
|
...memoryArtifacts.mounts,
|
|
82
80
|
...workspaceResourceMounts,
|
|
83
|
-
...daimonTelemetryArtifacts.mounts,
|
|
84
81
|
...runtimePlans.flatMap((runtimePlan) => runtimePlan.persistentMounts ?? []),
|
|
85
82
|
...((options.moltnet?.persistentMounts ?? []).map((mount) => ({
|
|
86
83
|
...(mount.declaredVolumeName ? { declared_volume_name: mount.declaredVolumeName } : {}),
|
|
@@ -109,7 +106,6 @@ export const createContainerArtifacts = async (plan, compiledNodes, options = {}
|
|
|
109
106
|
].sort();
|
|
110
107
|
const runtimeInstances = runtimePlans
|
|
111
108
|
.map((plan) => {
|
|
112
|
-
const telemetryMountIds = daimonTelemetryArtifacts.telemetryMountIdsByInstance.get(plan.id);
|
|
113
109
|
return {
|
|
114
110
|
...(plan.agentPathsByNodeId ? { agent_paths: Object.fromEntries(Object.entries(plan.agentPathsByNodeId).map(([id, paths]) => [id, {
|
|
115
111
|
workspace_path: paths.workspacePath, home_path: paths.homePath, skill_roots: paths.skillRoots
|
|
@@ -126,7 +122,6 @@ export const createContainerArtifacts = async (plan, compiledNodes, options = {}
|
|
|
126
122
|
node_ids: [...(plan.sourceIds ?? [])],
|
|
127
123
|
published_port: plan.publishedPort ?? null,
|
|
128
124
|
runtime: plan.runtimeName,
|
|
129
|
-
...(telemetryMountIds ? { telemetry_mount_ids: telemetryMountIds } : {}),
|
|
130
125
|
workspace_path: plan.instancePaths.workspacePath
|
|
131
126
|
};
|
|
132
127
|
})
|
|
@@ -30,6 +30,8 @@
|
|
|
30
30
|
* particular `printf %b` implementation treats `\nnn` vs `\0nnn`. For a path
|
|
31
31
|
* containing none of those four characters both forms are identical.
|
|
32
32
|
*/
|
|
33
|
+
import { DAIMON_GATEWAY_URL_ENV } from "../runtime/daimon/gateway.js";
|
|
34
|
+
import { isDaimonGatewayRealmMountId } from "../runtime/daimon/subscriptionRealms.js";
|
|
33
35
|
export const EPHEMERAL_STATE_OPT_OUT_ENV = "SPAWNFILE_ALLOW_EPHEMERAL_STATE";
|
|
34
36
|
const shellQuote = (value) => `'${value.replace(/'/g, `'"'"'`)}'`;
|
|
35
37
|
const MOUNTINFO_ESCAPES = {
|
|
@@ -79,7 +81,9 @@ export const createBackedMountChecks = (mounts) => {
|
|
|
79
81
|
}
|
|
80
82
|
return [...byPath.values()]
|
|
81
83
|
.sort((left, right) => left.mount_path.localeCompare(right.mount_path))
|
|
82
|
-
.map((mount) =>
|
|
84
|
+
.map((mount) =>
|
|
85
|
+
// An organization booted against an external auth gateway mounts no realm.
|
|
86
|
+
`${isDaimonGatewayRealmMountId(mount.id) ? `[ -n "\${${DAIMON_GATEWAY_URL_ENV}:-}" ] || ` : ""}require_backed_mount ${shellQuote(mount.id)} ${shellQuote(escapeMountInfoPath(mount.mount_path))} ${shellQuote(mount.mount_path)} ${shellQuote(mount.volume_name)}`);
|
|
83
87
|
};
|
|
84
88
|
/**
|
|
85
89
|
* The full guard — function plus checks — or nothing at all when the compile
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { RuntimeTargetPlan } from "./containerArtifactsTypes.js";
|
|
2
|
-
import { type DaimonGrokRegistration
|
|
2
|
+
import { type DaimonGrokRegistration } from "./containerDaimonGrokWorkerRender.js";
|
|
3
3
|
import { DAIMON_BROKER_UID, DAIMON_FIRST_WORKER_UID, DAIMON_ORGANIZATION_UID } from "../runtime/daimon/runtimeIdentity.js";
|
|
4
4
|
export { DAIMON_BROKER_UID, DAIMON_FIRST_WORKER_UID, DAIMON_ORGANIZATION_UID };
|
|
5
5
|
export declare const DAIMON_BROKER_EXECUTABLE = "/opt/daimon/bin/daimon-engine-broker";
|
|
@@ -59,56 +59,11 @@ export declare const renderDaimonWorkspaceResourceSecurity: (resources: Workspac
|
|
|
59
59
|
* `EPERM` the moment root no longer owns the path.
|
|
60
60
|
*/
|
|
61
61
|
export declare const renderDaimonUsageLedgerProvisioning: () => string[];
|
|
62
|
-
/**
|
|
63
|
-
* Empties a directory without touching a mount point inside it.
|
|
64
|
-
*
|
|
65
|
-
* `rm -rf` and `find -delete` both fail `EBUSY` on a mount point — it is
|
|
66
|
-
* another filesystem's root, and its entry cannot be unlinked while it is
|
|
67
|
-
* mounted. A deployment that mounts a tmpfs below a directory it later clears
|
|
68
|
-
* would otherwise abort provisioning on a bare `find` failure, which is exactly
|
|
69
|
-
* how a live training launch died. Mount points are left in place and descended
|
|
70
|
-
* into; anything else that cannot be removed is reported by name.
|
|
71
|
-
*
|
|
72
|
-
* Mount points come from `/proc/self/mountinfo` field 5. The kernel
|
|
73
|
-
* octal-escapes space, tab, newline and backslash there; every path this
|
|
74
|
-
* compiler provisions is free of all four, and a path that is not would simply
|
|
75
|
-
* fail to match and be treated as an ordinary directory.
|
|
76
|
-
*/
|
|
77
|
-
export declare const MOUNT_AWARE_CLEAR_HELPER: string[];
|
|
78
62
|
export declare const renderDaimonBrokerProvisioning: (plans: RuntimeTargetPlan[]) => string[];
|
|
79
63
|
/**
|
|
80
64
|
* The root broker provisioning program itself, over already-resolved
|
|
81
|
-
* registrations and workspace resources.
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
* broker-capable training container reaches it directly for its single fixed
|
|
85
|
-
* slot, with `serviceOptions` pointing the turn store at per-slot tmpfs and
|
|
86
|
-
* declaring the evaluator inference ledger. Both callers get byte-identical
|
|
87
|
-
* credential, registration, worker-home, temp and spill provisioning — the
|
|
88
|
-
* whole point of sharing it rather than writing a second root program.
|
|
89
|
-
*
|
|
90
|
-
* It is re-runnable: the shell wrapper removes `/etc/daimon-engine-broker` and
|
|
91
|
-
* `/run/daimon-engine-broker` first, so a slot recycle replays exactly the
|
|
92
|
-
* audited start-up path, credential-journal recovery included.
|
|
93
|
-
*/
|
|
94
|
-
export declare const renderDaimonBrokerProvisioningProgram: (registrations: readonly DaimonGrokRegistration[], workspaceResources: WorkspaceSecurityResource[], serviceOptions?: DaimonGrokServiceConfigOptions,
|
|
95
|
-
/**
|
|
96
|
-
* How the broker's `/etc` and `/run` roots are reset before provisioning.
|
|
97
|
-
* A production organization owns both as ordinary image directories and
|
|
98
|
-
* removes them outright. The training container mounts each as its own
|
|
99
|
-
* tmpfs, which cannot be unlinked, so it empties them instead — the same
|
|
100
|
-
* end state, reached the only way a mount point allows.
|
|
101
|
-
*/
|
|
102
|
-
rootReset?: "remove" | "clear",
|
|
103
|
-
/** Deny targets the worker provisioning creates when absent; see `renderDaimonGrokWorkerProvisioning`. */
|
|
104
|
-
optionalDenyPaths?: readonly string[],
|
|
105
|
-
/**
|
|
106
|
-
* Where the broker and relay get their private `TMPDIR`. Production keeps it
|
|
107
|
-
* inside the control root, which it removes and recreates exactly once. A
|
|
108
|
-
* deployment that re-provisions that root — the training slot recycle — must
|
|
109
|
-
* pass a path outside it: a `tmp/` inside a cleared root is a mount point in
|
|
110
|
-
* the training launch, and clearing a mount point fails `EBUSY`.
|
|
65
|
+
* registrations and workspace resources. The auth gateway owns the Grok login,
|
|
66
|
+
* so the broker home is a plain turn-state folder and no bootstrap, authority or
|
|
67
|
+
* journal is staged here.
|
|
111
68
|
*/
|
|
112
|
-
|
|
113
|
-
/** Root-owned training deny targets, created after root reset and before worker attestation. */
|
|
114
|
-
beforeWorkerProvisioning?: readonly string[]) => string[];
|
|
69
|
+
export declare const renderDaimonBrokerProvisioningProgram: (registrations: readonly DaimonGrokRegistration[], workspaceResources: WorkspaceSecurityResource[]) => string[];
|
|
@@ -57,43 +57,6 @@ export const renderDaimonUsageLedgerProvisioning = () => {
|
|
|
57
57
|
`setpriv --clear-groups --reuid ${DAIMON_ORGANIZATION_UID} --regid ${DAIMON_ORGANIZATION_UID} --inh-caps=-all --ambient-caps=-all --bounding-set=-all -- bash -ceu 'probe=${directoryPath}/.daimon-usage-probe; umask 007; : > "$probe"; rm "$probe"'`
|
|
58
58
|
];
|
|
59
59
|
};
|
|
60
|
-
/**
|
|
61
|
-
* Empties a directory without touching a mount point inside it.
|
|
62
|
-
*
|
|
63
|
-
* `rm -rf` and `find -delete` both fail `EBUSY` on a mount point — it is
|
|
64
|
-
* another filesystem's root, and its entry cannot be unlinked while it is
|
|
65
|
-
* mounted. A deployment that mounts a tmpfs below a directory it later clears
|
|
66
|
-
* would otherwise abort provisioning on a bare `find` failure, which is exactly
|
|
67
|
-
* how a live training launch died. Mount points are left in place and descended
|
|
68
|
-
* into; anything else that cannot be removed is reported by name.
|
|
69
|
-
*
|
|
70
|
-
* Mount points come from `/proc/self/mountinfo` field 5. The kernel
|
|
71
|
-
* octal-escapes space, tab, newline and backslash there; every path this
|
|
72
|
-
* compiler provisions is free of all four, and a path that is not would simply
|
|
73
|
-
* fail to match and be treated as an ordinary directory.
|
|
74
|
-
*/
|
|
75
|
-
export const MOUNT_AWARE_CLEAR_HELPER = [
|
|
76
|
-
"spawnfile_mount_points=$(awk '{print $5}' /proc/self/mountinfo)",
|
|
77
|
-
"spawnfile_is_mount() { printf '%s\\n' \"$spawnfile_mount_points\" | grep -qxF \"$1\"; }",
|
|
78
|
-
"spawnfile_holds_mount() { printf '%s\\n' \"$spawnfile_mount_points\" | grep -qE \"^$(printf '%s' \"$1\" | sed 's/[][\\.*^$/]/\\\\&/g')(/|$)\"; }",
|
|
79
|
-
"spawnfile_clear_tree() {",
|
|
80
|
-
" spawnfile_root=$1",
|
|
81
|
-
" [ -d \"$spawnfile_root\" ] || return 0",
|
|
82
|
-
" for spawnfile_entry in \"$spawnfile_root\"/* \"$spawnfile_root\"/.[!.]* \"$spawnfile_root\"/..?*; do",
|
|
83
|
-
" if [ ! -e \"$spawnfile_entry\" ] && [ ! -L \"$spawnfile_entry\" ]; then continue; fi",
|
|
84
|
-
" if spawnfile_is_mount \"$spawnfile_entry\"; then continue; fi",
|
|
85
|
-
" if spawnfile_holds_mount \"$spawnfile_entry\"; then spawnfile_clear_tree \"$spawnfile_entry\"; continue; fi",
|
|
86
|
-
" rm -rf \"$spawnfile_entry\" || { echo \"cannot clear $spawnfile_entry: it is in use; a mount below a provisioned root must be declared outside it\" >&2; return 1; }",
|
|
87
|
-
" done",
|
|
88
|
-
"}",
|
|
89
|
-
// Removes the target outright, unless it is or contains a mount point: then its contents go and the
|
|
90
|
-
// mount points and the directories holding them stay, because neither can be unlinked while mounted.
|
|
91
|
-
"spawnfile_remove_tree() {",
|
|
92
|
-
" if [ ! -e \"$1\" ] && [ ! -L \"$1\" ]; then return 0; fi",
|
|
93
|
-
" if spawnfile_holds_mount \"$1\"; then spawnfile_clear_tree \"$1\"; return $?; fi",
|
|
94
|
-
" rm -rf \"$1\" || { echo \"cannot remove $1: it is in use\" >&2; return 1; }",
|
|
95
|
-
"}"
|
|
96
|
-
];
|
|
97
60
|
export const renderDaimonBrokerProvisioning = (plans) => {
|
|
98
61
|
const registrations = resolveDaimonGrokRegistrations(plans);
|
|
99
62
|
if (registrations.length === 0)
|
|
@@ -115,40 +78,11 @@ export const renderDaimonBrokerProvisioning = (plans) => {
|
|
|
115
78
|
};
|
|
116
79
|
/**
|
|
117
80
|
* The root broker provisioning program itself, over already-resolved
|
|
118
|
-
* registrations and workspace resources.
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
* broker-capable training container reaches it directly for its single fixed
|
|
122
|
-
* slot, with `serviceOptions` pointing the turn store at per-slot tmpfs and
|
|
123
|
-
* declaring the evaluator inference ledger. Both callers get byte-identical
|
|
124
|
-
* credential, registration, worker-home, temp and spill provisioning — the
|
|
125
|
-
* whole point of sharing it rather than writing a second root program.
|
|
126
|
-
*
|
|
127
|
-
* It is re-runnable: the shell wrapper removes `/etc/daimon-engine-broker` and
|
|
128
|
-
* `/run/daimon-engine-broker` first, so a slot recycle replays exactly the
|
|
129
|
-
* audited start-up path, credential-journal recovery included.
|
|
130
|
-
*/
|
|
131
|
-
export const renderDaimonBrokerProvisioningProgram = (registrations, workspaceResources, serviceOptions = {},
|
|
132
|
-
/**
|
|
133
|
-
* How the broker's `/etc` and `/run` roots are reset before provisioning.
|
|
134
|
-
* A production organization owns both as ordinary image directories and
|
|
135
|
-
* removes them outright. The training container mounts each as its own
|
|
136
|
-
* tmpfs, which cannot be unlinked, so it empties them instead — the same
|
|
137
|
-
* end state, reached the only way a mount point allows.
|
|
138
|
-
*/
|
|
139
|
-
rootReset = "remove",
|
|
140
|
-
/** Deny targets the worker provisioning creates when absent; see `renderDaimonGrokWorkerProvisioning`. */
|
|
141
|
-
optionalDenyPaths,
|
|
142
|
-
/**
|
|
143
|
-
* Where the broker and relay get their private `TMPDIR`. Production keeps it
|
|
144
|
-
* inside the control root, which it removes and recreates exactly once. A
|
|
145
|
-
* deployment that re-provisions that root — the training slot recycle — must
|
|
146
|
-
* pass a path outside it: a `tmp/` inside a cleared root is a mount point in
|
|
147
|
-
* the training launch, and clearing a mount point fails `EBUSY`.
|
|
81
|
+
* registrations and workspace resources. The auth gateway owns the Grok login,
|
|
82
|
+
* so the broker home is a plain turn-state folder and no bootstrap, authority or
|
|
83
|
+
* journal is staged here.
|
|
148
84
|
*/
|
|
149
|
-
|
|
150
|
-
/** Root-owned training deny targets, created after root reset and before worker attestation. */
|
|
151
|
-
beforeWorkerProvisioning = []) => {
|
|
85
|
+
export const renderDaimonBrokerProvisioningProgram = (registrations, workspaceResources) => {
|
|
152
86
|
const program = [
|
|
153
87
|
"const crypto = require('node:crypto'); const fs = require('node:fs');",
|
|
154
88
|
`const registrations = ${JSON.stringify(registrations.map(({ agentId, home, slot, uid, workspace }) => ({ agentId, home, slot, uid, workspace })))};`,
|
|
@@ -161,32 +95,17 @@ beforeWorkerProvisioning = []) => {
|
|
|
161
95
|
"fs.writeFileSync('/etc/daimon-engine-broker/registrations.bin', Buffer.concat(records), { mode: 0o400, flag: 'wx' });",
|
|
162
96
|
"fs.chownSync('/etc/daimon-engine-broker/registrations.bin', 0, 0); fs.chmodSync('/etc/daimon-engine-broker/registrations.bin', 0o400);",
|
|
163
97
|
`fs.mkdirSync('${DAIMON_BROKER_REALM}', { recursive: true, mode: 0o700 }); fs.chownSync('${DAIMON_BROKER_REALM}', 0, 0); fs.chmodSync('${DAIMON_BROKER_REALM}', 0o700);`,
|
|
164
|
-
// The usage ledger directory itself is provisioned unconditionally by
|
|
165
|
-
// `renderDaimonUsageLedgerProvisioning` (every Daimon organization writes
|
|
166
|
-
// here, not just Grok ones) before this script's caller reaches the
|
|
167
|
-
// broker startup this function guards; this script only ever reads the
|
|
168
|
-
// path below, for the sandbox denylist.
|
|
169
|
-
`const bootstrap = '/var/lib/spawnfile/daimon/grok-bootstrap-auth', authority = '${DAIMON_BROKER_REALM}/auth.json';`,
|
|
170
|
-
"const readSecure = (file, owner, label) => { const before = fs.lstatSync(file); if (!before.isFile() || before.isSymbolicLink() || (owner !== undefined && (before.uid !== owner || before.gid !== owner)) || (before.mode & 0o777) !== 0o600 || before.nlink !== 1 || before.size < 2 || before.size > 65536) throw new Error(`unsafe broker credential ${label}`); const fd = fs.openSync(file, fs.constants.O_RDONLY | fs.constants.O_NOFOLLOW | fs.constants.O_NONBLOCK); try { const opened = fs.fstatSync(fd); if (opened.dev !== before.dev || opened.ino !== before.ino) throw new Error(`unsafe broker credential ${label}`); const bytes = Buffer.alloc(opened.size); let offset = 0; while (offset < bytes.length) { const count = fs.readSync(fd, bytes, offset, bytes.length - offset, offset); if (count < 1) throw new Error(`unsafe broker credential ${label}`); offset += count; } return bytes; } finally { fs.closeSync(fd); } };",
|
|
171
|
-
`const atomicOwned = (target, bytes) => { const temporary = \`${"${target}"}.\${process.pid}.\${crypto.randomUUID()}.tmp\`; try { const output = fs.openSync(temporary, fs.constants.O_WRONLY | fs.constants.O_CREAT | fs.constants.O_EXCL | fs.constants.O_NOFOLLOW, 0o600); try { let written = 0; while (written < bytes.length) written += fs.writeSync(output, bytes, written, bytes.length - written, written); fs.fchmodSync(output, 0o600); fs.fchownSync(output, 2100, 2100); fs.fsyncSync(output); } finally { fs.closeSync(output); } fs.renameSync(temporary, target); const directory = fs.openSync(require('node:path').dirname(target), fs.constants.O_RDONLY | fs.constants.O_DIRECTORY); try { fs.fsyncSync(directory); } finally { fs.closeSync(directory); } } catch (error) { try { fs.unlinkSync(temporary); } catch {} throw error; } };`,
|
|
172
|
-
"let existing; try { existing = fs.lstatSync(authority); } catch (error) { if (error.code !== 'ENOENT') throw error; } const bootstrapBytes = readSecure(bootstrap, undefined, 'bootstrap'); let bootstrapRecord; try { const root = JSON.parse(bootstrapBytes.toString('utf8')), rows = root && typeof root === 'object' && !Array.isArray(root) ? Object.entries(root).filter(([key, value]) => /^https:\\/\\/auth\\.x\\.ai::/.test(key) && value && typeof value === 'object' && !Array.isArray(value)).map(([, value]) => value) : []; if (rows.length !== 1 || typeof rows[0].key !== 'string' || !rows[0].key.trim() || typeof rows[0].refresh_token !== 'string' || !rows[0].refresh_token.trim() || typeof rows[0].expires_at !== 'string' || !Number.isFinite(Date.parse(rows[0].expires_at))) throw new Error(); bootstrapRecord = true; } catch { bootstrapBytes.fill(0); throw new Error('invalid broker credential bootstrap'); } if (!bootstrapRecord) throw new Error('invalid broker credential bootstrap'); const bootstrapDigest = crypto.createHash('sha256').update(bootstrapBytes).digest('hex');",
|
|
173
|
-
`const journalRoot = '${DAIMON_BROKER_REALM}/.daimon-broker'; let journalRootExists = false; try { const info = fs.lstatSync(journalRoot); if (!info.isDirectory() || info.isSymbolicLink() || info.uid !== 2100 || info.gid !== 2100 || (info.mode & 0o777) !== 0o700) throw new Error('unsafe broker credential journal directory'); fs.chownSync(journalRoot, 0, 0); fs.chmodSync(journalRoot, 0o700); journalRootExists = true; } catch (error) { if (error.code !== 'ENOENT') throw error; }`,
|
|
174
|
-
"const credentialExpiry = (bytes) => { try { const rows = Object.entries(JSON.parse(bytes.toString('utf8'))).filter(([key]) => /^https:\\/\\/auth\\.x\\.ai::/.test(key)).map(([, value]) => value); const expiry = rows.length === 1 && typeof rows[0]?.expires_at === 'string' ? Date.parse(rows[0].expires_at) : NaN; if (!Number.isFinite(expiry)) throw new Error(); return expiry; } catch { throw new Error('invalid broker credential expiry'); } };",
|
|
175
|
-
`try { const journalPath = '${DAIMON_BROKER_REALM}/.daimon-broker/credential-journal.json'; let journal; try { const raw = readSecure(journalPath, 2100, 'recovery journal'); journal = JSON.parse(raw.toString('utf8')); raw.fill(0); } catch (error) { if (error.code !== 'ENOENT') throw error; } const stale = journal?.version === 'noopolis.daimon.broker-credential-journal.v1' && journal.state === 'stale'; const recover = () => { if (!stale || !Number.isSafeInteger(journal.generation) || journal.generation < 0 || !/^[a-f0-9]{64}$/.test(journal.sourceDigest) || journal.sourceDigest !== journal.promotedDigest || bootstrapDigest === journal.sourceDigest) throw new Error('unsafe broker credential recovery'); atomicOwned(authority, bootstrapBytes); const recovered = Buffer.from(\`${"${JSON.stringify({ version: 'noopolis.daimon.broker-credential-journal.v1', state: 'promoted', generation: journal.generation + 1, sourceDigest: journal.sourceDigest, promotedDigest: bootstrapDigest })}"}\\n\`); try { atomicOwned(journalPath, recovered); } finally { recovered.fill(0); } }; if (!existing) { if (journal) throw new Error('broker credential authority missing; refusing bootstrap rollback'); else atomicOwned(authority, bootstrapBytes); } else { const authorityBytes = readSecure(authority, 2100, 'authority'); try { const authorityDigest = crypto.createHash('sha256').update(authorityBytes).digest('hex'); if (stale) { if (authorityDigest !== journal.sourceDigest && authorityDigest !== bootstrapDigest) throw new Error('unsafe broker credential recovery'); if (authorityDigest === bootstrapDigest && bootstrapDigest === journal.sourceDigest) throw new Error('unsafe broker credential recovery'); if (authorityDigest !== bootstrapDigest && credentialExpiry(bootstrapBytes) <= credentialExpiry(authorityBytes)) throw new Error('older broker bootstrap cannot recover newer realm'); if (authorityDigest === bootstrapDigest) { const recovered = Buffer.from(\`${"${JSON.stringify({ version: 'noopolis.daimon.broker-credential-journal.v1', state: 'promoted', generation: journal.generation + 1, sourceDigest: journal.sourceDigest, promotedDigest: bootstrapDigest })}"}\\n\`); try { atomicOwned(journalPath, recovered); } finally { recovered.fill(0); } } else recover(); } } finally { authorityBytes.fill(0); } } } finally { bootstrapBytes.fill(0); if (journalRootExists) { fs.chownSync(journalRoot, 0, 0); fs.chmodSync(journalRoot, 0o700); fs.chownSync(journalRoot, 2100, 2100); } fs.chownSync('${DAIMON_BROKER_REALM}', 0, 0); fs.chmodSync('${DAIMON_BROKER_REALM}', 0o700); fs.chownSync('${DAIMON_BROKER_REALM}', 2100, 2100); }`,
|
|
176
98
|
...renderDaimonWorkspaceResourceSecurity(workspaceResources),
|
|
177
|
-
...renderDaimonGrokWorkerProvisioning(registrations
|
|
99
|
+
...renderDaimonGrokWorkerProvisioning(registrations),
|
|
178
100
|
`fs.chownSync('${DAIMON_BROKER_REALM}', 0, 0); fs.chmodSync('${DAIMON_BROKER_REALM}', 0o700); fs.chownSync('${DAIMON_BROKER_REALM}', 2100, 2100);`,
|
|
179
101
|
"fs.chmodSync('/etc/daimon-engine-broker', 0o555);"
|
|
180
102
|
].join("\n");
|
|
181
103
|
return [
|
|
182
104
|
"if [ -d /etc/daimon-engine-broker ]; then chmod u+rwx /etc/daimon-engine-broker; fi",
|
|
183
105
|
"if [ -d /run/daimon-engine-broker ]; then chmod u+rwx /run/daimon-engine-broker; fi",
|
|
184
|
-
|
|
185
|
-
? ["rm -rf /etc/daimon-engine-broker /run/daimon-engine-broker"]
|
|
186
|
-
: [...MOUNT_AWARE_CLEAR_HELPER, "for broker_root in /etc/daimon-engine-broker /run/daimon-engine-broker; do spawnfile_clear_tree \"$broker_root\"; done"]),
|
|
106
|
+
"rm -rf /etc/daimon-engine-broker /run/daimon-engine-broker",
|
|
187
107
|
`install -d -o root -g ${DAIMON_BROKER_UID} -m 0731 /run/daimon-engine-broker`,
|
|
188
|
-
`install -d -o ${DAIMON_BROKER_UID} -g ${DAIMON_BROKER_UID} -m 0700 ${
|
|
189
|
-
...beforeWorkerProvisioning,
|
|
108
|
+
`install -d -o ${DAIMON_BROKER_UID} -g ${DAIMON_BROKER_UID} -m 0700 ${DAIMON_BROKER_TMPDIR}`,
|
|
190
109
|
"node <<'SPAWNFILE_DAIMON_BROKER_PROVISION'",
|
|
191
110
|
program,
|
|
192
111
|
"SPAWNFILE_DAIMON_BROKER_PROVISION"
|