spawnfile 0.1.33 → 0.1.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/audit/readAudit.d.ts +3 -3
- package/dist/auth/profileStore.d.ts +3 -1
- package/dist/auth/profileStore.js +31 -30
- package/dist/auth/trainingAuth.d.ts +2 -5
- package/dist/auth/types.d.ts +16 -0
- package/dist/cli/authCommands.d.ts +1 -1
- package/dist/cli/authCommands.js +21 -1
- package/dist/cli/devCommands.d.ts +1 -1
- package/dist/cli/devCommands.js +0 -66
- package/dist/cli/runCli.d.ts +3 -4
- package/dist/cli/runCli.js +4 -3
- package/dist/cli/trainCommand.js +9 -15
- package/dist/cli/trainingBooted.d.ts +9 -0
- package/dist/cli/trainingBooted.js +45 -0
- package/dist/cli/trainingExecution.d.ts +4 -7
- package/dist/cli/trainingExecution.js +4 -32
- package/dist/compiler/containerArtifacts.js +0 -5
- package/dist/compiler/containerBackedMountRender.js +5 -1
- package/dist/compiler/containerDaimonBrokerRender.d.ts +5 -50
- package/dist/compiler/containerDaimonBrokerRender.js +19 -90
- package/dist/compiler/containerDaimonGatewayRender.d.ts +50 -0
- package/dist/compiler/containerDaimonGatewayRender.js +161 -0
- package/dist/compiler/containerDaimonGrokWorkerProvisioning.d.ts +2 -10
- package/dist/compiler/containerDaimonGrokWorkerProvisioning.js +13 -25
- package/dist/compiler/containerDaimonGrokWorkerRender.d.ts +11 -49
- package/dist/compiler/containerDaimonGrokWorkerRender.js +15 -39
- package/dist/compiler/containerDaimonStartupSupervision.d.ts +8 -0
- package/dist/compiler/containerDaimonStartupSupervision.js +39 -0
- package/dist/compiler/containerDaimonUidEntrypointRender.d.ts +1 -2
- package/dist/compiler/containerDaimonUidEntrypointRender.js +29 -47
- package/dist/compiler/containerRuntimeReadinessRender.js +1 -1
- package/dist/compiler/memoryArtifacts.js +0 -1
- package/dist/compiler/moltnetArtifacts.js +1 -17
- package/dist/compiler/moltnetClientConfig.js +1 -1
- package/dist/compiler/moltnetRuntimeConfig.js +0 -10
- package/dist/compiler/runProject.d.ts +3 -0
- package/dist/compiler/runProject.js +12 -5
- package/dist/compiler/runProjectAuth.js +6 -18
- package/dist/compiler/training/contract.d.ts +0 -2
- package/dist/compiler/training/contract.js +0 -2
- package/dist/compiler/training/execution.d.ts +1 -128
- package/dist/compiler/training/execution.js +7 -68
- package/dist/compiler/training/index.d.ts +0 -8
- package/dist/compiler/training/index.js +0 -7
- package/dist/compiler/training/output.d.ts +1 -0
- package/dist/compiler/training/output.js +1 -1
- package/dist/compiler/training/rewind/contract.d.ts +6 -6
- package/dist/compiler/training/trial/boot.d.ts +72 -0
- package/dist/compiler/training/trial/boot.js +225 -0
- package/dist/compiler/training/trial/docker.d.ts +10 -0
- package/dist/compiler/training/trial/docker.js +22 -0
- package/dist/compiler/training/trial/gateway.d.ts +47 -0
- package/dist/compiler/training/trial/gateway.js +113 -0
- package/dist/compiler/training/trial/homeLogin.d.ts +31 -0
- package/dist/compiler/training/trial/homeLogin.js +69 -0
- package/dist/compiler/training/trial/index.d.ts +8 -0
- package/dist/compiler/training/trial/index.js +8 -0
- package/dist/compiler/training/trial/judge.d.ts +15 -0
- package/dist/compiler/training/trial/judge.js +42 -0
- package/dist/compiler/training/trial/launcher.d.ts +47 -0
- package/dist/compiler/training/trial/launcher.js +193 -0
- package/dist/compiler/training/trial/login.d.ts +35 -0
- package/dist/compiler/training/trial/login.js +85 -0
- package/dist/compiler/training/trial/project.d.ts +11 -0
- package/dist/compiler/training/trial/project.js +31 -0
- package/dist/compiler/training/trial/realmTurns.d.ts +20 -0
- package/dist/compiler/training/trial/realmTurns.js +69 -0
- package/dist/compiler/upReceipt.d.ts +2 -17
- package/dist/compiler/upReceipt.js +2 -17
- package/dist/deployment/artifactsExportPlan.js +2 -18
- package/dist/deployment/privateArtifactsExport.js +1 -1
- package/dist/dev/docker.d.ts +0 -5
- package/dist/dev/docker.js +0 -46
- package/dist/dev/index.d.ts +0 -1
- package/dist/dev/index.js +0 -1
- package/dist/dev/project.d.ts +0 -16
- package/dist/dev/project.js +1 -128
- package/dist/distribution/distributionReportSchema.js +1 -1
- package/dist/distribution/imageRuntimeAuth.js +3 -2
- package/dist/manifest/renderSpawnfile.js +2 -1
- package/dist/release/drainControl.d.ts +5 -19
- package/dist/release/drainControl.js +12 -67
- package/dist/report/types.d.ts +3 -6
- package/dist/runtime/common.d.ts +1 -1
- package/dist/runtime/common.js +1 -1
- package/dist/runtime/container.d.ts +2 -2
- package/dist/runtime/container.js +1 -39
- package/dist/runtime/daimon/config.js +8 -14
- package/dist/runtime/daimon/contractManifest.js +0 -1
- package/dist/runtime/daimon/contractManifestSchema.js +0 -1
- package/dist/runtime/daimon/control.d.ts +31 -0
- package/dist/runtime/daimon/control.js +83 -0
- package/dist/runtime/daimon/engineDescriptorSchema.js +0 -1
- package/dist/runtime/daimon/engineDescriptors.generated.d.ts +1 -1
- package/dist/runtime/daimon/engineDescriptors.generated.js +1 -2
- package/dist/runtime/daimon/engines.js +0 -1
- package/dist/runtime/daimon/gateway.d.ts +62 -0
- package/dist/runtime/daimon/gateway.js +77 -0
- package/dist/runtime/daimon/grokWorkerContract.d.ts +0 -5
- package/dist/runtime/daimon/grokWorkerContract.js +1 -13
- package/dist/runtime/daimon/index.d.ts +2 -0
- package/dist/runtime/daimon/index.js +2 -1
- package/dist/runtime/daimon/memory.js +1 -1
- package/dist/runtime/daimon/packageName.js +0 -1
- package/dist/runtime/daimon/runAuth.js +15 -4
- package/dist/runtime/daimon/runtimeIdentity.d.ts +2 -0
- package/dist/runtime/daimon/runtimeIdentity.js +2 -0
- package/dist/runtime/daimon/subscriptionRealms.d.ts +27 -3
- package/dist/runtime/daimon/subscriptionRealms.js +35 -13
- package/dist/runtime/daimon/testHelpers.d.ts +2 -0
- package/dist/runtime/{pi → daimon}/testHelpers.js +3 -3
- package/dist/runtime/daimon/training/booted/adapter.d.ts +50 -0
- package/dist/runtime/daimon/training/booted/adapter.js +60 -0
- package/dist/runtime/daimon/training/booted/adapter.js.map +1 -0
- package/dist/runtime/daimon/training/booted/index.d.ts +4 -0
- package/dist/runtime/daimon/training/booted/index.js +3 -0
- package/dist/runtime/daimon/training/booted/index.js.map +1 -0
- package/dist/runtime/daimon/training/booted/judge.d.ts +39 -0
- package/dist/runtime/daimon/training/booted/judge.js +122 -0
- package/dist/runtime/daimon/training/booted/judge.js.map +1 -0
- package/dist/runtime/daimon/training/index.d.ts +5 -0
- package/dist/runtime/daimon/training/index.js +8 -4
- package/dist/runtime/daimon/training/index.js.map +1 -1
- package/dist/runtime/daimon/wakeMoments.js +0 -1
- package/dist/runtime/install.js +0 -21
- package/dist/runtime/registry.js +0 -2
- package/dist/runtime/trainingGraderProviders.js +10 -4
- package/dist/runtime/trainingProviders.d.ts +5 -3
- package/dist/runtime/trainingProviders.js +21 -24
- package/dist/runtime/trainingSubjects.d.ts +0 -121
- package/dist/runtime/trainingSubjects.js +2 -13
- package/dist/runtime/types.d.ts +1 -8
- package/dist/runtime/usageRequestLedger.d.ts +2 -0
- package/dist/runtime/usageRequestLedger.js +3 -1
- package/dist/shared/errors.js +0 -1
- package/dist/shared/trainingLegacy/trainingLegacyHashDomains.d.ts +1 -0
- package/dist/shared/trainingLegacy/trainingLegacyHashDomains.js +1 -0
- package/dist/shared/trainingLegacy/trainingLegacyHashDomains.js.map +1 -1
- package/dist/status/lifecycleProbes.js +3 -6
- package/dist/status/moltnetWiringProbes.js +1 -17
- package/dist/training/subjects/index.d.ts +0 -1
- package/dist/training/subjects/index.js +0 -1
- package/dist/training/subjects/index.js.map +1 -1
- package/examples/README.md +0 -1
- package/examples/daimon-org/agents/mapper/Spawnfile +4 -1
- package/examples/daimon-org/teams/review/agents/reviewer/Spawnfile +4 -1
- package/examples/jungian-daimon-org/teams/luna/agents/animus/Spawnfile +5 -8
- package/examples/jungian-daimon-org/teams/luna/agents/representative/Spawnfile +1 -1
- package/examples/jungian-daimon-org/teams/luna/agents/shadow/Spawnfile +5 -8
- package/examples/jungian-daimon-org/teams/selene/agents/animus/Spawnfile +5 -8
- package/examples/jungian-daimon-org/teams/selene/agents/representative/Spawnfile +5 -8
- package/examples/jungian-daimon-org/teams/selene/agents/shadow/Spawnfile +1 -1
- package/examples/mixed-runtime-org/agents/localist/Spawnfile +7 -7
- package/package.json +4 -13
- package/runtimes.yaml +5 -15
- package/dist/compiler/containerDaimonGrokTaskClock.d.ts +0 -5
- package/dist/compiler/containerDaimonGrokTaskClock.js +0 -29
- package/dist/compiler/daimonTelemetryArtifacts.d.ts +0 -22
- package/dist/compiler/daimonTelemetryArtifacts.js +0 -56
- package/dist/compiler/training/broker/clockProbe.d.ts +0 -6
- package/dist/compiler/training/broker/clockProbe.js +0 -27
- package/dist/compiler/training/broker/declaration.d.ts +0 -54
- package/dist/compiler/training/broker/declaration.js +0 -70
- package/dist/compiler/training/broker/entrypoint.d.ts +0 -39
- package/dist/compiler/training/broker/entrypoint.js +0 -124
- package/dist/compiler/training/broker/evaluatorSecrets.d.ts +0 -2
- package/dist/compiler/training/broker/evaluatorSecrets.js +0 -62
- package/dist/compiler/training/broker/index.d.ts +0 -12
- package/dist/compiler/training/broker/index.js +0 -12
- package/dist/compiler/training/broker/main.d.ts +0 -2
- package/dist/compiler/training/broker/main.js +0 -14
- package/dist/compiler/training/broker/paths.d.ts +0 -236
- package/dist/compiler/training/broker/paths.js +0 -249
- package/dist/compiler/training/broker/processes.d.ts +0 -51
- package/dist/compiler/training/broker/processes.js +0 -102
- package/dist/compiler/training/broker/projection.d.ts +0 -61
- package/dist/compiler/training/broker/projection.js +0 -109
- package/dist/compiler/training/broker/provisioning.d.ts +0 -78
- package/dist/compiler/training/broker/provisioning.js +0 -231
- package/dist/compiler/training/broker/receipt.d.ts +0 -77
- package/dist/compiler/training/broker/receipt.js +0 -110
- package/dist/compiler/training/broker/recycleClient.d.ts +0 -33
- package/dist/compiler/training/broker/recycleClient.js +0 -112
- package/dist/compiler/training/broker/registration.d.ts +0 -46
- package/dist/compiler/training/broker/registration.js +0 -113
- package/dist/compiler/training/broker/reset.d.ts +0 -9
- package/dist/compiler/training/broker/reset.js +0 -71
- package/dist/compiler/training/broker/rootScript.d.ts +0 -32
- package/dist/compiler/training/broker/rootScript.js +0 -33
- package/dist/compiler/training/broker/runtime.d.ts +0 -22
- package/dist/compiler/training/broker/runtime.js +0 -128
- package/dist/compiler/training/broker/seccompRoutes.d.ts +0 -31
- package/dist/compiler/training/broker/seccompRoutes.js +0 -36
- package/dist/compiler/training/broker/supervisor.d.ts +0 -108
- package/dist/compiler/training/broker/supervisor.js +0 -172
- package/dist/compiler/training/broker/taskClock.d.ts +0 -5
- package/dist/compiler/training/broker/taskClock.js +0 -41
- package/dist/compiler/training/container/contract.d.ts +0 -54
- package/dist/compiler/training/container/contract.js +0 -52
- package/dist/compiler/training/container/evaluators.d.ts +0 -48
- package/dist/compiler/training/container/evaluators.js +0 -50
- package/dist/compiler/training/container/grokWriteback.d.ts +0 -8
- package/dist/compiler/training/container/grokWriteback.js +0 -26
- package/dist/compiler/training/container/index.d.ts +0 -5
- package/dist/compiler/training/container/index.js +0 -3
- package/dist/compiler/training/container/launch.d.ts +0 -21
- package/dist/compiler/training/container/launch.js +0 -280
- package/dist/compiler/training/container/nativeSlots.d.ts +0 -14
- package/dist/compiler/training/container/nativeSlots.js +0 -13
- package/dist/compiler/training/container/outputCopy.d.ts +0 -2
- package/dist/compiler/training/container/outputCopy.js +0 -72
- package/dist/compiler/training/container/outputVolume.d.ts +0 -28
- package/dist/compiler/training/container/outputVolume.js +0 -185
- package/dist/compiler/training/container/prepare.d.ts +0 -10
- package/dist/compiler/training/container/prepare.js +0 -125
- package/dist/compiler/training/container/process.d.ts +0 -14
- package/dist/compiler/training/container/process.js +0 -70
- package/dist/compiler/training/container/security.d.ts +0 -38
- package/dist/compiler/training/container/security.js +0 -68
- package/dist/compiler/training/container/subjectIsolation.d.ts +0 -5
- package/dist/compiler/training/container/subjectIsolation.js +0 -16
- package/dist/compiler/training/preparation/assets/Dockerfile +0 -100
- package/dist/compiler/training/preparation/assets/package-lock.json +0 -5483
- package/dist/compiler/training/preparation/broker.d.ts +0 -30
- package/dist/compiler/training/preparation/broker.js +0 -68
- package/dist/compiler/training/preparation/contextModes.d.ts +0 -12
- package/dist/compiler/training/preparation/contextModes.js +0 -38
- package/dist/compiler/training/preparation/contract.d.ts +0 -203
- package/dist/compiler/training/preparation/contract.js +0 -114
- package/dist/compiler/training/preparation/copyAssets.d.ts +0 -1
- package/dist/compiler/training/preparation/copyAssets.js +0 -8
- package/dist/compiler/training/preparation/daimonParent.d.ts +0 -42
- package/dist/compiler/training/preparation/daimonParent.js +0 -114
- package/dist/compiler/training/preparation/files.d.ts +0 -29
- package/dist/compiler/training/preparation/files.js +0 -146
- package/dist/compiler/training/preparation/image.d.ts +0 -28
- package/dist/compiler/training/preparation/image.js +0 -105
- package/dist/compiler/training/preparation/index.d.ts +0 -3
- package/dist/compiler/training/preparation/index.js +0 -2
- package/dist/compiler/training/preparation/inputs.d.ts +0 -24
- package/dist/compiler/training/preparation/inputs.js +0 -101
- package/dist/compiler/training/preparation/prepare.d.ts +0 -38
- package/dist/compiler/training/preparation/prepare.js +0 -224
- package/dist/compiler/training/preparation/scratch.d.ts +0 -8
- package/dist/compiler/training/preparation/scratch.js +0 -114
- package/dist/compiler/training/repair/compatibility.d.ts +0 -11
- package/dist/compiler/training/repair/compatibility.js +0 -45
- package/dist/compiler/training/repair/contract.d.ts +0 -832
- package/dist/compiler/training/repair/contract.js +0 -34
- package/dist/compiler/training/repair/index.d.ts +0 -3
- package/dist/compiler/training/repair/index.js +0 -3
- package/dist/compiler/training/repair/prepare.d.ts +0 -378
- package/dist/compiler/training/repair/prepare.js +0 -84
- package/dist/compiler/training/repair/witness.d.ts +0 -348
- package/dist/compiler/training/repair/witness.js +0 -62
- package/dist/compiler/training/subjectDeclaration.d.ts +0 -26
- package/dist/compiler/training/subjectDeclaration.js +0 -54
- package/dist/compiler/training/subjectLease.d.ts +0 -115
- package/dist/compiler/training/subjectLease.js +0 -179
- package/dist/dev/activity.d.ts +0 -14
- package/dist/dev/activity.js +0 -48
- package/dist/runtime/codex-exec/training/adapter.d.ts +0 -13
- package/dist/runtime/codex-exec/training/adapter.js +0 -101
- package/dist/runtime/codex-exec/training/adapter.js.map +0 -1
- package/dist/runtime/codex-exec/training/environment.d.ts +0 -3
- package/dist/runtime/codex-exec/training/environment.js +0 -26
- package/dist/runtime/codex-exec/training/environment.js.map +0 -1
- package/dist/runtime/codex-exec/training/index.d.ts +0 -2
- package/dist/runtime/codex-exec/training/index.js +0 -3
- package/dist/runtime/codex-exec/training/index.js.map +0 -1
- package/dist/runtime/codex-exec/training/protocol.d.ts +0 -15
- package/dist/runtime/codex-exec/training/protocol.js +0 -102
- package/dist/runtime/codex-exec/training/protocol.js.map +0 -1
- package/dist/runtime/codex-exec/training/providers/codex-subscription/index.d.ts +0 -1
- package/dist/runtime/codex-exec/training/providers/codex-subscription/index.js +0 -2
- package/dist/runtime/codex-exec/training/providers/codex-subscription/index.js.map +0 -1
- package/dist/runtime/codex-exec/training/providers/codex-subscription/protocol.d.ts +0 -17
- package/dist/runtime/codex-exec/training/providers/codex-subscription/protocol.js +0 -80
- package/dist/runtime/codex-exec/training/providers/codex-subscription/protocol.js.map +0 -1
- package/dist/runtime/codex-exec/training/providers/codex-subscription/provider.d.ts +0 -12
- package/dist/runtime/codex-exec/training/providers/codex-subscription/provider.js +0 -125
- package/dist/runtime/codex-exec/training/providers/codex-subscription/provider.js.map +0 -1
- package/dist/runtime/codex-exec/training/providers/codex-subscription/strict-schema.d.ts +0 -6
- package/dist/runtime/codex-exec/training/providers/codex-subscription/strict-schema.js +0 -219
- package/dist/runtime/codex-exec/training/providers/codex-subscription/strict-schema.js.map +0 -1
- package/dist/runtime/daimon/contractManifest.js.map +0 -1
- package/dist/runtime/daimon/contractManifestSchema.js.map +0 -1
- package/dist/runtime/daimon/engineDescriptorSchema.js.map +0 -1
- package/dist/runtime/daimon/engineDescriptors.generated.js.map +0 -1
- package/dist/runtime/daimon/engines.js.map +0 -1
- package/dist/runtime/daimon/index.js.map +0 -1
- package/dist/runtime/daimon/packageName.js.map +0 -1
- package/dist/runtime/daimon/training/legacy/adapter.d.ts +0 -11
- package/dist/runtime/daimon/training/legacy/adapter.js +0 -175
- package/dist/runtime/daimon/training/legacy/adapter.js.map +0 -1
- package/dist/runtime/daimon/training/legacy/index.d.ts +0 -2
- package/dist/runtime/daimon/training/legacy/index.js +0 -3
- package/dist/runtime/daimon/training/legacy/index.js.map +0 -1
- package/dist/runtime/daimon/training/legacy/public.d.ts +0 -49
- package/dist/runtime/daimon/training/legacy/public.js +0 -16
- package/dist/runtime/daimon/training/legacy/public.js.map +0 -1
- package/dist/runtime/daimon/training/native/adapter.d.ts +0 -18
- package/dist/runtime/daimon/training/native/adapter.js +0 -252
- package/dist/runtime/daimon/training/native/adapter.js.map +0 -1
- package/dist/runtime/daimon/training/native/admission.d.ts +0 -7
- package/dist/runtime/daimon/training/native/admission.js +0 -52
- package/dist/runtime/daimon/training/native/admission.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/arguments.d.ts +0 -16
- package/dist/runtime/daimon/training/native/child/arguments.js +0 -70
- package/dist/runtime/daimon/training/native/child/arguments.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/deferred-trial.d.ts +0 -24
- package/dist/runtime/daimon/training/native/child/deferred-trial.js +0 -63
- package/dist/runtime/daimon/training/native/child/deferred-trial.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/diagnostics.d.ts +0 -58
- package/dist/runtime/daimon/training/native/child/diagnostics.js +0 -215
- package/dist/runtime/daimon/training/native/child/diagnostics.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/fixture.d.ts +0 -16
- package/dist/runtime/daimon/training/native/child/fixture.js +0 -159
- package/dist/runtime/daimon/training/native/child/fixture.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/grok.d.ts +0 -14
- package/dist/runtime/daimon/training/native/child/grok.js +0 -47
- package/dist/runtime/daimon/training/native/child/grok.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/index.d.ts +0 -7
- package/dist/runtime/daimon/training/native/child/index.js +0 -5
- package/dist/runtime/daimon/training/native/child/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/lifecycle.d.ts +0 -40
- package/dist/runtime/daimon/training/native/child/lifecycle.js +0 -400
- package/dist/runtime/daimon/training/native/child/lifecycle.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/probe.d.ts +0 -2
- package/dist/runtime/daimon/training/native/child/probe.js +0 -11
- package/dist/runtime/daimon/training/native/child/probe.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/sandbox.d.ts +0 -4
- package/dist/runtime/daimon/training/native/child/sandbox.js +0 -76
- package/dist/runtime/daimon/training/native/child/sandbox.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/types.d.ts +0 -15
- package/dist/runtime/daimon/training/native/child/types.js +0 -2
- package/dist/runtime/daimon/training/native/child/types.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/docker.d.ts +0 -29
- package/dist/runtime/daimon/training/native/container/docker.js +0 -105
- package/dist/runtime/daimon/training/native/container/docker.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/grok-slot.d.ts +0 -22
- package/dist/runtime/daimon/training/native/container/grok-slot.js +0 -38
- package/dist/runtime/daimon/training/native/container/grok-slot.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/index.d.ts +0 -6
- package/dist/runtime/daimon/training/native/container/index.js +0 -6
- package/dist/runtime/daimon/training/native/container/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/lifecycle.d.ts +0 -8
- package/dist/runtime/daimon/training/native/container/lifecycle.js +0 -111
- package/dist/runtime/daimon/training/native/container/lifecycle.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/manifest.d.ts +0 -17
- package/dist/runtime/daimon/training/native/container/manifest.js +0 -164
- package/dist/runtime/daimon/training/native/container/manifest.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/native-preflight.d.ts +0 -8
- package/dist/runtime/daimon/training/native/container/native-preflight.js +0 -40
- package/dist/runtime/daimon/training/native/container/native-preflight.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/preflight.d.ts +0 -15
- package/dist/runtime/daimon/training/native/container/preflight.js +0 -79
- package/dist/runtime/daimon/training/native/container/preflight.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/slot.d.ts +0 -4
- package/dist/runtime/daimon/training/native/container/slot.js +0 -58
- package/dist/runtime/daimon/training/native/container/slot.js.map +0 -1
- package/dist/runtime/daimon/training/native/external.d.ts +0 -37
- package/dist/runtime/daimon/training/native/external.js +0 -75
- package/dist/runtime/daimon/training/native/external.js.map +0 -1
- package/dist/runtime/daimon/training/native/grants/authority.d.ts +0 -36
- package/dist/runtime/daimon/training/native/grants/authority.js +0 -49
- package/dist/runtime/daimon/training/native/grants/authority.js.map +0 -1
- package/dist/runtime/daimon/training/native/grants/index.d.ts +0 -2
- package/dist/runtime/daimon/training/native/grants/index.js +0 -3
- package/dist/runtime/daimon/training/native/grants/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/grants/pins.d.ts +0 -30
- package/dist/runtime/daimon/training/native/grants/pins.js +0 -20
- package/dist/runtime/daimon/training/native/grants/pins.js.map +0 -1
- package/dist/runtime/daimon/training/native/grants/test-socket.d.ts +0 -6
- package/dist/runtime/daimon/training/native/grants/test-socket.js +0 -35
- package/dist/runtime/daimon/training/native/grants/test-socket.js.map +0 -1
- package/dist/runtime/daimon/training/native/grok-fixtures.d.ts +0 -34
- package/dist/runtime/daimon/training/native/grok-fixtures.js +0 -179
- package/dist/runtime/daimon/training/native/grok-fixtures.js.map +0 -1
- package/dist/runtime/daimon/training/native/index.d.ts +0 -38
- package/dist/runtime/daimon/training/native/index.js +0 -27
- package/dist/runtime/daimon/training/native/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/live-checkout.d.ts +0 -2
- package/dist/runtime/daimon/training/native/live-checkout.js +0 -15
- package/dist/runtime/daimon/training/native/live-checkout.js.map +0 -1
- package/dist/runtime/daimon/training/native/observations.d.ts +0 -51
- package/dist/runtime/daimon/training/native/observations.js +0 -217
- package/dist/runtime/daimon/training/native/observations.js.map +0 -1
- package/dist/runtime/daimon/training/native/outcome.d.ts +0 -13
- package/dist/runtime/daimon/training/native/outcome.js +0 -37
- package/dist/runtime/daimon/training/native/outcome.js.map +0 -1
- package/dist/runtime/daimon/training/native/preparation/engine-config.d.ts +0 -21
- package/dist/runtime/daimon/training/native/preparation/engine-config.js +0 -30
- package/dist/runtime/daimon/training/native/preparation/engine-config.js.map +0 -1
- package/dist/runtime/daimon/training/native/preparation/fixtures.d.ts +0 -17
- package/dist/runtime/daimon/training/native/preparation/fixtures.js +0 -52
- package/dist/runtime/daimon/training/native/preparation/fixtures.js.map +0 -1
- package/dist/runtime/daimon/training/native/preparation/index.d.ts +0 -7
- package/dist/runtime/daimon/training/native/preparation/index.js +0 -5
- package/dist/runtime/daimon/training/native/preparation/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/preparation/layout.d.ts +0 -66
- package/dist/runtime/daimon/training/native/preparation/layout.js +0 -87
- package/dist/runtime/daimon/training/native/preparation/layout.js.map +0 -1
- package/dist/runtime/daimon/training/native/preparation/subject.d.ts +0 -14
- package/dist/runtime/daimon/training/native/preparation/subject.js +0 -67
- package/dist/runtime/daimon/training/native/preparation/subject.js.map +0 -1
- package/dist/runtime/daimon/training/native/preparation/types.d.ts +0 -69
- package/dist/runtime/daimon/training/native/preparation/types.js +0 -2
- package/dist/runtime/daimon/training/native/preparation/types.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/artifacts.d.ts +0 -25
- package/dist/runtime/daimon/training/native/receipt/artifacts.js +0 -32
- package/dist/runtime/daimon/training/native/receipt/artifacts.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/grok-clocked-pins.d.ts +0 -129
- package/dist/runtime/daimon/training/native/receipt/grok-clocked-pins.js +0 -45
- package/dist/runtime/daimon/training/native/receipt/grok-clocked-pins.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/grok.d.ts +0 -246
- package/dist/runtime/daimon/training/native/receipt/grok.js +0 -195
- package/dist/runtime/daimon/training/native/receipt/grok.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/index.d.ts +0 -11
- package/dist/runtime/daimon/training/native/receipt/index.js +0 -8
- package/dist/runtime/daimon/training/native/receipt/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/paths.d.ts +0 -3
- package/dist/runtime/daimon/training/native/receipt/paths.js +0 -18
- package/dist/runtime/daimon/training/native/receipt/paths.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/sandbox.d.ts +0 -42
- package/dist/runtime/daimon/training/native/receipt/sandbox.js +0 -35
- package/dist/runtime/daimon/training/native/receipt/sandbox.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/schema.d.ts +0 -490
- package/dist/runtime/daimon/training/native/receipt/schema.js +0 -138
- package/dist/runtime/daimon/training/native/receipt/schema.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/subscription.d.ts +0 -13
- package/dist/runtime/daimon/training/native/receipt/subscription.js +0 -13
- package/dist/runtime/daimon/training/native/receipt/subscription.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/task-clock.d.ts +0 -19
- package/dist/runtime/daimon/training/native/receipt/task-clock.js +0 -49
- package/dist/runtime/daimon/training/native/receipt/task-clock.js.map +0 -1
- package/dist/runtime/daimon/training/native/sealed-usage.d.ts +0 -218
- package/dist/runtime/daimon/training/native/sealed-usage.js +0 -261
- package/dist/runtime/daimon/training/native/sealed-usage.js.map +0 -1
- package/dist/runtime/daimon/training/native/test-fixtures.d.ts +0 -27
- package/dist/runtime/daimon/training/native/test-fixtures.js +0 -162
- package/dist/runtime/daimon/training/native/test-fixtures.js.map +0 -1
- package/dist/runtime/daimon/training/native/transcript.d.ts +0 -96
- package/dist/runtime/daimon/training/native/transcript.js +0 -239
- package/dist/runtime/daimon/training/native/transcript.js.map +0 -1
- package/dist/runtime/daimon/training/native/transport/delivery.d.ts +0 -27
- package/dist/runtime/daimon/training/native/transport/delivery.js +0 -98
- package/dist/runtime/daimon/training/native/transport/delivery.js.map +0 -1
- package/dist/runtime/daimon/training/native/transport/http.d.ts +0 -3
- package/dist/runtime/daimon/training/native/transport/http.js +0 -81
- package/dist/runtime/daimon/training/native/transport/http.js.map +0 -1
- package/dist/runtime/daimon/training/native/transport/index.d.ts +0 -4
- package/dist/runtime/daimon/training/native/transport/index.js +0 -3
- package/dist/runtime/daimon/training/native/transport/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/transport/types.d.ts +0 -15
- package/dist/runtime/daimon/training/native/transport/types.js +0 -2
- package/dist/runtime/daimon/training/native/transport/types.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/cli.d.ts +0 -1
- package/dist/runtime/daimon/training/native/worker/cli.js +0 -17
- package/dist/runtime/daimon/training/native/worker/cli.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/control.d.ts +0 -20
- package/dist/runtime/daimon/training/native/worker/control.js +0 -266
- package/dist/runtime/daimon/training/native/worker/control.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/deliveries.d.ts +0 -38
- package/dist/runtime/daimon/training/native/worker/deliveries.js +0 -91
- package/dist/runtime/daimon/training/native/worker/deliveries.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/evidence/collect.d.ts +0 -54
- package/dist/runtime/daimon/training/native/worker/evidence/collect.js +0 -278
- package/dist/runtime/daimon/training/native/worker/evidence/collect.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/evidence/execution.d.ts +0 -102
- package/dist/runtime/daimon/training/native/worker/evidence/execution.js +0 -191
- package/dist/runtime/daimon/training/native/worker/evidence/execution.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/evidence/index.d.ts +0 -3
- package/dist/runtime/daimon/training/native/worker/evidence/index.js +0 -4
- package/dist/runtime/daimon/training/native/worker/evidence/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/evidence/io.d.ts +0 -20
- package/dist/runtime/daimon/training/native/worker/evidence/io.js +0 -130
- package/dist/runtime/daimon/training/native/worker/evidence/io.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/evidence/seal.d.ts +0 -3
- package/dist/runtime/daimon/training/native/worker/evidence/seal.js +0 -67
- package/dist/runtime/daimon/training/native/worker/evidence/seal.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/index.d.ts +0 -11
- package/dist/runtime/daimon/training/native/worker/index.js +0 -8
- package/dist/runtime/daimon/training/native/worker/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/profile.d.ts +0 -23
- package/dist/runtime/daimon/training/native/worker/profile.js +0 -149
- package/dist/runtime/daimon/training/native/worker/profile.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/public.d.ts +0 -53
- package/dist/runtime/daimon/training/native/worker/public.js +0 -22
- package/dist/runtime/daimon/training/native/worker/public.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/sandbox.d.ts +0 -4
- package/dist/runtime/daimon/training/native/worker/sandbox.js +0 -54
- package/dist/runtime/daimon/training/native/worker/sandbox.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/server.d.ts +0 -4
- package/dist/runtime/daimon/training/native/worker/server.js +0 -102
- package/dist/runtime/daimon/training/native/worker/server.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/types.d.ts +0 -318
- package/dist/runtime/daimon/training/native/worker/types.js +0 -2
- package/dist/runtime/daimon/training/native/worker/types.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/wake-delivery/index.d.ts +0 -4
- package/dist/runtime/daimon/training/native/worker/wake-delivery/index.js +0 -4
- package/dist/runtime/daimon/training/native/worker/wake-delivery/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/wake-delivery/source.d.ts +0 -3
- package/dist/runtime/daimon/training/native/worker/wake-delivery/source.js +0 -16
- package/dist/runtime/daimon/training/native/worker/wake-delivery/source.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/wake-delivery/terminal.d.ts +0 -4
- package/dist/runtime/daimon/training/native/worker/wake-delivery/terminal.js +0 -52
- package/dist/runtime/daimon/training/native/worker/wake-delivery/terminal.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/wake-delivery/transport.d.ts +0 -21
- package/dist/runtime/daimon/training/native/worker/wake-delivery/transport.js +0 -198
- package/dist/runtime/daimon/training/native/worker/wake-delivery/transport.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/wake-delivery/types.d.ts +0 -91
- package/dist/runtime/daimon/training/native/worker/wake-delivery/types.js +0 -2
- package/dist/runtime/daimon/training/native/worker/wake-delivery/types.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/worker.d.ts +0 -1
- package/dist/runtime/daimon/training/native/worker/worker.js +0 -105
- package/dist/runtime/daimon/training/native/worker/worker.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-broker/broker.d.ts +0 -20
- package/dist/runtime/daimon/training/providers/grok-broker/broker.js +0 -55
- package/dist/runtime/daimon/training/providers/grok-broker/broker.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-broker/grant-fixtures.d.ts +0 -15
- package/dist/runtime/daimon/training/providers/grok-broker/grant-fixtures.js +0 -29
- package/dist/runtime/daimon/training/providers/grok-broker/grant-fixtures.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-broker/grant-home.d.ts +0 -16
- package/dist/runtime/daimon/training/providers/grok-broker/grant-home.js +0 -60
- package/dist/runtime/daimon/training/providers/grok-broker/grant-home.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-broker/grant-pool.d.ts +0 -81
- package/dist/runtime/daimon/training/providers/grok-broker/grant-pool.js +0 -221
- package/dist/runtime/daimon/training/providers/grok-broker/grant-pool.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-broker/grant-releases.d.ts +0 -31
- package/dist/runtime/daimon/training/providers/grok-broker/grant-releases.js +0 -78
- package/dist/runtime/daimon/training/providers/grok-broker/grant-releases.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-broker/grants.d.ts +0 -63
- package/dist/runtime/daimon/training/providers/grok-broker/grants.js +0 -20
- package/dist/runtime/daimon/training/providers/grok-broker/grants.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-broker/index.d.ts +0 -3
- package/dist/runtime/daimon/training/providers/grok-broker/index.js +0 -4
- package/dist/runtime/daimon/training/providers/grok-broker/index.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-subscription/cli.d.ts +0 -21
- package/dist/runtime/daimon/training/providers/grok-subscription/cli.js +0 -81
- package/dist/runtime/daimon/training/providers/grok-subscription/cli.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-subscription/index.d.ts +0 -4
- package/dist/runtime/daimon/training/providers/grok-subscription/index.js +0 -5
- package/dist/runtime/daimon/training/providers/grok-subscription/index.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-subscription/protocol.d.ts +0 -26
- package/dist/runtime/daimon/training/providers/grok-subscription/protocol.js +0 -102
- package/dist/runtime/daimon/training/providers/grok-subscription/protocol.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-subscription/provider.d.ts +0 -9
- package/dist/runtime/daimon/training/providers/grok-subscription/provider.js +0 -38
- package/dist/runtime/daimon/training/providers/grok-subscription/provider.js.map +0 -1
- package/dist/runtime/daimon/training/public.d.ts +0 -6
- package/dist/runtime/daimon/training/public.js +0 -5
- package/dist/runtime/daimon/training/public.js.map +0 -1
- package/dist/runtime/daimon/training/services/account-lease.d.ts +0 -7
- package/dist/runtime/daimon/training/services/account-lease.js +0 -76
- package/dist/runtime/daimon/training/services/account-lease.js.map +0 -1
- package/dist/runtime/daimon/training/services/freshness.d.ts +0 -15
- package/dist/runtime/daimon/training/services/freshness.js +0 -19
- package/dist/runtime/daimon/training/services/freshness.js.map +0 -1
- package/dist/runtime/daimon/training/services/index.d.ts +0 -4
- package/dist/runtime/daimon/training/services/index.js +0 -4
- package/dist/runtime/daimon/training/services/index.js.map +0 -1
- package/dist/runtime/daimon/training/services/slot-freshness.d.ts +0 -34
- package/dist/runtime/daimon/training/services/slot-freshness.js +0 -178
- package/dist/runtime/daimon/training/services/slot-freshness.js.map +0 -1
- package/dist/runtime/daimon/wakeMoments.js.map +0 -1
- package/dist/runtime/pi/adapter.d.ts +0 -3
- package/dist/runtime/pi/adapter.js +0 -230
- package/dist/runtime/pi/appActivitySource.d.ts +0 -1
- package/dist/runtime/pi/appActivitySource.js +0 -199
- package/dist/runtime/pi/appAgentConfig.d.ts +0 -11
- package/dist/runtime/pi/appAgentConfig.js +0 -264
- package/dist/runtime/pi/appCliEnginesSource.d.ts +0 -1
- package/dist/runtime/pi/appCliEnginesSource.js +0 -183
- package/dist/runtime/pi/appCliSource.d.ts +0 -1
- package/dist/runtime/pi/appCliSource.js +0 -353
- package/dist/runtime/pi/appControlSource.d.ts +0 -1
- package/dist/runtime/pi/appControlSource.js +0 -390
- package/dist/runtime/pi/appControlWakeIdentitySource.d.ts +0 -1
- package/dist/runtime/pi/appControlWakeIdentitySource.js +0 -19
- package/dist/runtime/pi/appCoreSource.d.ts +0 -4
- package/dist/runtime/pi/appCoreSource.js +0 -244
- package/dist/runtime/pi/appPreludeSource.d.ts +0 -1
- package/dist/runtime/pi/appPreludeSource.js +0 -192
- package/dist/runtime/pi/appScheduleSource.d.ts +0 -1
- package/dist/runtime/pi/appScheduleSource.js +0 -84
- package/dist/runtime/pi/appScriptedEngine.d.ts +0 -31
- package/dist/runtime/pi/appScriptedEngine.js +0 -42
- package/dist/runtime/pi/appSource.d.ts +0 -4
- package/dist/runtime/pi/appSource.js +0 -12
- package/dist/runtime/pi/appTemplate.d.ts +0 -14
- package/dist/runtime/pi/appTemplate.js +0 -28
- package/dist/runtime/pi/appTemplateTypes.d.ts +0 -64
- package/dist/runtime/pi/appTemplateTypes.js +0 -18
- package/dist/runtime/pi/appWakeContextSource.d.ts +0 -1
- package/dist/runtime/pi/appWakeContextSource.js +0 -398
- package/dist/runtime/pi/containerTargets.d.ts +0 -4
- package/dist/runtime/pi/containerTargets.js +0 -63
- package/dist/runtime/pi/runAuth.d.ts +0 -2
- package/dist/runtime/pi/runAuth.js +0 -185
- package/dist/runtime/pi/testHelpers.d.ts +0 -2
- package/dist/shared/errors.js.map +0 -1
- package/dist/training/subjects/environment.d.ts +0 -2
- package/dist/training/subjects/environment.js +0 -14
- package/dist/training/subjects/environment.js.map +0 -1
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { getDaimonEngineDescriptor } from "./engines.js";
|
|
3
|
+
/**
|
|
4
|
+
* In-container placement of Daimon's auth gateway (`daimon-runtime gateway`).
|
|
5
|
+
*
|
|
6
|
+
* The gateway is the only process that holds a gatewayed engine's subscription
|
|
7
|
+
* login. It runs as its own uid on loopback; the organization runtime gets a
|
|
8
|
+
* URL and a key instead of a realm. These names are Daimon's public contract
|
|
9
|
+
* (`src/gateway/` and `engines/codex/gatewayProvider.ts` in Daimon).
|
|
10
|
+
*/
|
|
11
|
+
export const DAIMON_GATEWAY_URL_ENV = "DAIMON_GATEWAY_URL";
|
|
12
|
+
/** Must keep its `_KEY` suffix: Codex's shell policy keeps `*KEY*` out of model-run commands. */
|
|
13
|
+
export const DAIMON_GATEWAY_KEY_ENV = "DAIMON_GATEWAY_KEY";
|
|
14
|
+
export const DAIMON_GATEWAY_CONFIG_VERSION = "noopolis.daimon.gateway.v1";
|
|
15
|
+
export const DAIMON_GATEWAY_KEY_TABLE_VERSION = "noopolis.daimon.gateway-keys.v1";
|
|
16
|
+
export const DAIMON_GATEWAY_HOST = "127.0.0.1";
|
|
17
|
+
export const DAIMON_GATEWAY_PORT = 43_200;
|
|
18
|
+
export const DAIMON_GATEWAY_URL = `http://${DAIMON_GATEWAY_HOST}:${DAIMON_GATEWAY_PORT}`;
|
|
19
|
+
/** Root-owned, gateway-group-readable: config and key table. */
|
|
20
|
+
export const DAIMON_GATEWAY_ETC = "/etc/daimon-gateway";
|
|
21
|
+
export const DAIMON_GATEWAY_CONFIG = `${DAIMON_GATEWAY_ETC}/config.json`;
|
|
22
|
+
export const DAIMON_GATEWAY_KEY_TABLE = `${DAIMON_GATEWAY_ETC}/keys.json`;
|
|
23
|
+
/** Gateway-private copies of bootstrap leaves, rewritten on every start. */
|
|
24
|
+
export const DAIMON_GATEWAY_RUN = "/run/daimon-gateway";
|
|
25
|
+
/**
|
|
26
|
+
* Bind target directory for gatewayed bootstrap leaves. The host leaf keeps its
|
|
27
|
+
* host owner (the organization uid), so it is mounted under a root-only 0700
|
|
28
|
+
* directory the organization uid cannot traverse; root copies it for the gateway.
|
|
29
|
+
*/
|
|
30
|
+
export const DAIMON_GATEWAY_BOOTSTRAP_ROOT = "/var/lib/spawnfile/daimon/gateway-bootstrap";
|
|
31
|
+
/** Key-table principal: Daimon reads one gateway key per organization runtime process. */
|
|
32
|
+
export const DAIMON_GATEWAY_PRINCIPAL = "daimon-organization";
|
|
33
|
+
/** Staging kinds whose login is one durable realm seeded from a bootstrap leaf: exactly what the gateway owns. */
|
|
34
|
+
const GATEWAYED_STAGINGS = new Set(["portable-realm", "broker-realm"]);
|
|
35
|
+
/**
|
|
36
|
+
* Whether Spawnfile places a gateway for this engine. The descriptors carry
|
|
37
|
+
* no gateway field, so the seam is the staging role: every realm-staged login
|
|
38
|
+
* (portable or brokered) is gatewayed; per-agent files and AGY's secret
|
|
39
|
+
* service never are. Replace with Daimon's own declaration once published.
|
|
40
|
+
*/
|
|
41
|
+
export const isDaimonGatewayedEngine = (descriptor) => descriptor !== undefined && GATEWAYED_STAGINGS.has(descriptor.auth.staging);
|
|
42
|
+
export const daimonGatewayedEngines = (engines) => [...new Set(engines)].sort().flatMap((engine) => {
|
|
43
|
+
const descriptor = getDaimonEngineDescriptor(engine);
|
|
44
|
+
return isDaimonGatewayedEngine(descriptor) ? [descriptor] : [];
|
|
45
|
+
});
|
|
46
|
+
/** Where a gatewayed engine's read-only bootstrap leaf is bind-mounted. */
|
|
47
|
+
export const daimonGatewayBootstrapMountPath = (realm) => path.posix.join(DAIMON_GATEWAY_BOOTSTRAP_ROOT, path.posix.basename(realm.bootstrapMountPath));
|
|
48
|
+
/** The gateway-owned copy the gateway reads as its bootstrap. */
|
|
49
|
+
export const daimonGatewayBootstrapCopyPath = (realm) => path.posix.join(DAIMON_GATEWAY_RUN, path.posix.basename(realm.bootstrapMountPath));
|
|
50
|
+
/**
|
|
51
|
+
* Where the gateway mounts a realm volume. A brokered engine's descriptor
|
|
52
|
+
* realm path is also its broker's local turn-state home, so its volume moves
|
|
53
|
+
* to a sibling `gateway-` path; every other realm keeps its descriptor path.
|
|
54
|
+
*/
|
|
55
|
+
export const daimonGatewayRealmPath = (descriptor) => {
|
|
56
|
+
const durable = descriptor.auth.realm.durableMountPath;
|
|
57
|
+
return descriptor.broker?.credentialHomePath === durable
|
|
58
|
+
? path.posix.join(path.posix.dirname(durable), `gateway-${path.posix.basename(durable)}`)
|
|
59
|
+
: durable;
|
|
60
|
+
};
|
|
61
|
+
/** Gateway-private refresh home for a brokered engine, whose CLI refreshes its own login. */
|
|
62
|
+
export const daimonGatewayRefreshScratchPath = (descriptor) => descriptor.broker === null ? undefined : path.posix.join(DAIMON_GATEWAY_RUN, `${descriptor.id}-refresh`);
|
|
63
|
+
/** `host` is loopback in-container; the training sidecar binds its private network (`0.0.0.0`). */
|
|
64
|
+
export const renderDaimonGatewayConfig = (descriptors, host = DAIMON_GATEWAY_HOST) => `${JSON.stringify({
|
|
65
|
+
version: DAIMON_GATEWAY_CONFIG_VERSION,
|
|
66
|
+
host,
|
|
67
|
+
port: DAIMON_GATEWAY_PORT,
|
|
68
|
+
key_table_path: DAIMON_GATEWAY_KEY_TABLE,
|
|
69
|
+
...Object.fromEntries(descriptors.map((descriptor) => [descriptor.id, {
|
|
70
|
+
realm_path: daimonGatewayRealmPath(descriptor),
|
|
71
|
+
bootstrap_path: daimonGatewayBootstrapCopyPath(descriptor.auth.realm),
|
|
72
|
+
...(descriptor.broker === null ? {} : {
|
|
73
|
+
command: descriptor.broker.grokExecutablePath,
|
|
74
|
+
scratch_path: daimonGatewayRefreshScratchPath(descriptor)
|
|
75
|
+
})
|
|
76
|
+
}]))
|
|
77
|
+
})}\n`;
|
|
@@ -10,11 +10,6 @@ export declare const resolveDaimonGrokWorkerConfig: (model: DaimonGrokBrokerMode
|
|
|
10
10
|
bytes: string;
|
|
11
11
|
sha256: string;
|
|
12
12
|
};
|
|
13
|
-
/** Validate Daimon's slot-zero template before substituting only the canonical slot path. */
|
|
14
|
-
export declare const resolveDaimonGrokClockedWorkerConfig: (model: DaimonGrokBrokerModel, reasoningEffort: DaimonGrokBrokerReasoningEffort, slot: number, vendored?: Readonly<Record<string, Readonly<Record<string, string>>>>) => {
|
|
15
|
-
bytes: string;
|
|
16
|
-
sha256: string;
|
|
17
|
-
};
|
|
18
13
|
/**
|
|
19
14
|
* Byte mirror of Daimon's `renderGrokWorkerSandboxProfile`
|
|
20
15
|
* (`daimon/src/runtime/grokWorkerSandboxProfile.ts`), pinned to Daimon's own
|
|
@@ -2,7 +2,7 @@ import { DAIMON_BROKER_ENGINE_ID, getDaimonEngineDescriptor, DAIMON_ENGINE_BROKE
|
|
|
2
2
|
import { createHash } from "node:crypto";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { SpawnfileError } from "../../shared/index.js";
|
|
5
|
-
import { DAIMON_GROK_WORKER_CONFIG_BYTES
|
|
5
|
+
import { DAIMON_GROK_WORKER_CONFIG_BYTES } from "./grokWorkerConfigBytes.js";
|
|
6
6
|
const workerDescriptor = getDaimonEngineDescriptor(DAIMON_BROKER_ENGINE_ID);
|
|
7
7
|
export const DAIMON_GROK_WORKER_SANDBOX_PROFILE = workerDescriptor.sandbox.profile;
|
|
8
8
|
export const DAIMON_GROK_WORKER_HOME_DIRECTORY = workerDescriptor.homeDirectory;
|
|
@@ -23,18 +23,6 @@ export const resolveDaimonGrokWorkerConfig = (model, reasoningEffort, vendored =
|
|
|
23
23
|
}
|
|
24
24
|
return { bytes, sha256: pin };
|
|
25
25
|
};
|
|
26
|
-
/** Validate Daimon's slot-zero template before substituting only the canonical slot path. */
|
|
27
|
-
export const resolveDaimonGrokClockedWorkerConfig = (model, reasoningEffort, slot, vendored = DAIMON_GROK_CLOCKED_WORKER_CONFIG_BYTES) => {
|
|
28
|
-
if (!Number.isSafeInteger(slot) || slot < 0)
|
|
29
|
-
throw new SpawnfileError("compile_error", "Invalid Grok clock slot");
|
|
30
|
-
const template = vendored[model]?.[reasoningEffort];
|
|
31
|
-
const pin = DAIMON_ENGINE_BROKER.worker.clockedConfigSha256[model]?.[reasoningEffort];
|
|
32
|
-
if (!template || sha256(template) !== pin)
|
|
33
|
-
throw new SpawnfileError("compile_error", "Clocked worker config does not match the contract manifest pin");
|
|
34
|
-
const clock = DAIMON_ENGINE_BROKER.worker.taskClock;
|
|
35
|
-
const bytes = template.replaceAll(clock.timestampFilePath, clock.slotFilePattern.replace("{slot}", String(slot)));
|
|
36
|
-
return { bytes, sha256: sha256(bytes) };
|
|
37
|
-
};
|
|
38
26
|
/**
|
|
39
27
|
* Byte mirror of Daimon's `renderGrokWorkerSandboxProfile`
|
|
40
28
|
* (`daimon/src/runtime/grokWorkerSandboxProfile.ts`), pinned to Daimon's own
|
|
@@ -2,3 +2,5 @@ export * from './contractManifest.js';
|
|
|
2
2
|
export { DAIMON_PACKAGE_NAME } from './packageName.js';
|
|
3
3
|
export * from './engines.js';
|
|
4
4
|
export * from './contractManifestSchema.js';
|
|
5
|
+
export { DAIMON_GATEWAY_KEY_ENV, DAIMON_GATEWAY_URL_ENV } from './gateway.js';
|
|
6
|
+
export { daimonProfileRealmVolume, daimonSubscriptionRealmMountId, isDaimonGatewayRealmMountId } from './subscriptionRealms.js';
|
|
@@ -2,4 +2,5 @@ export * from './contractManifest.js';
|
|
|
2
2
|
export { DAIMON_PACKAGE_NAME } from './packageName.js';
|
|
3
3
|
export * from './engines.js';
|
|
4
4
|
export * from './contractManifestSchema.js';
|
|
5
|
-
|
|
5
|
+
export { DAIMON_GATEWAY_KEY_ENV, DAIMON_GATEWAY_URL_ENV } from './gateway.js';
|
|
6
|
+
export { daimonProfileRealmVolume, daimonSubscriptionRealmMountId, isDaimonGatewayRealmMountId } from './subscriptionRealms.js';
|
|
@@ -4,7 +4,7 @@ import { SpawnfileError } from "../../shared/index.js";
|
|
|
4
4
|
* Daimon's organization runtime accepts exactly one `memory` block per agent
|
|
5
5
|
* (`OrganizationRuntimeMemory` = `{ runtimeHomePath, source?, tokenBudget? }`),
|
|
6
6
|
* so lowering picks one declared bank deterministically, the same way the
|
|
7
|
-
* legacy generated-Pi emitter
|
|
7
|
+
* legacy generated-Pi emitter did.
|
|
8
8
|
*/
|
|
9
9
|
const memoryAccessKey = (access) => `${access.source}:${access.bank.id}`;
|
|
10
10
|
const selectDaimonMemoryAccess = (node) => [...(node.memoryAccess ?? [])].sort((left, right) => memoryAccessKey(left).localeCompare(memoryAccessKey(right)))[0];
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { DAIMON_GATEWAY_URL_ENV, daimonGatewayBootstrapMountPath } from "./gateway.js";
|
|
1
2
|
import os from "node:os";
|
|
2
3
|
import path from "node:path";
|
|
3
4
|
import { constants } from "node:fs";
|
|
@@ -6,6 +7,7 @@ import { SpawnfileError } from "../../shared/index.js";
|
|
|
6
7
|
import { assertDaimonRuntimeHome, DAIMON_ORGANIZATION_RUNTIME_CONFIG_VERSIONS } from "./contractManifest.js";
|
|
7
8
|
import { DAIMON_ENGINE_DESCRIPTORS, DAIMON_ENGINES, DAIMON_PORTABLE_ENGINE_ID, DAIMON_SECRET_SERVICE_ENGINE_ID, getDaimonEngineDescriptor } from "./engines.js";
|
|
8
9
|
import { DAIMON_ORGANIZATION_UID } from "./runtimeIdentity.js";
|
|
10
|
+
import { daimonProfileUnlockMountArgs } from "./subscriptionRealms.js";
|
|
9
11
|
const MAX_OPAQUE_CREDENTIAL_BYTES = 64 * 1024;
|
|
10
12
|
export const DAIMON_GROK_ACCESS_TOKEN_MIN_BYTES = 32;
|
|
11
13
|
export const DAIMON_GROK_REFRESH_TOKEN_MIN_BYTES = 16;
|
|
@@ -268,22 +270,31 @@ export const prepareDaimonRuntimeAuth = async (input) => {
|
|
|
268
270
|
mountArgs.push("-v", `${sourcePath}:${ingressPath}:ro`);
|
|
269
271
|
}
|
|
270
272
|
// Realm auth is staged once per organization, in the historical mount order.
|
|
271
|
-
|
|
273
|
+
// An external auth gateway supplied at boot holds every gatewayed login itself.
|
|
274
|
+
const externalGateway = Boolean(input.env[DAIMON_GATEWAY_URL_ENV]);
|
|
275
|
+
for (const staging of externalGateway ? ["secret-service"] : ["portable-realm", "broker-realm", "secret-service"]) {
|
|
272
276
|
for (const engine of new Set(agents.map((agent) => agent.engine.kind))) {
|
|
273
277
|
const descriptor = descriptorForEngine(engine);
|
|
274
278
|
if (descriptor.auth.staging !== staging)
|
|
275
279
|
continue;
|
|
280
|
+
const bound = descriptor.auth.staging === "secret-service" ? input.authProfile?.realms?.[engine] : undefined;
|
|
281
|
+
if (bound && descriptor.auth.staging === "secret-service") {
|
|
282
|
+
// The profile's own login (`spawnfile auth login`): its unlock secret lives in a
|
|
283
|
+
// volume Daimon checks in-container, so no host file and no host owner gate.
|
|
284
|
+
mountArgs.push(...daimonProfileUnlockMountArgs(bound.unlockVolume, descriptor.auth.realm.unlockMountPath));
|
|
285
|
+
continue;
|
|
286
|
+
}
|
|
276
287
|
const source = daimonSourcePathForEngine(engine, process.env, input.authProfile);
|
|
277
288
|
if (descriptor.auth.staging === "portable-realm") {
|
|
278
289
|
const ownerUid = await assertSafeDaimonSourceFile(source, engine, descriptor.auth.maxCredentialBytes, engine);
|
|
279
290
|
assertDaimonCredentialContainerOwner(ownerUid, engine, containerCredentialUid);
|
|
280
|
-
mountArgs.push("-v", `${source}:${descriptor.auth.realm
|
|
291
|
+
mountArgs.push("-v", `${source}:${daimonGatewayBootstrapMountPath(descriptor.auth.realm)}:ro`);
|
|
281
292
|
}
|
|
282
293
|
else if (descriptor.auth.staging === "broker-realm") {
|
|
283
294
|
const realm = descriptor.auth.realm;
|
|
284
|
-
//
|
|
295
|
+
// Root stages broker bootstrap material for the gateway; the organization uid never reads it.
|
|
285
296
|
await assertSafeDaimonSourceFile(source, engine, descriptor.auth.maxCredentialBytes, engine);
|
|
286
|
-
mountArgs.push("-v", `${source}:${realm
|
|
297
|
+
mountArgs.push("-v", `${source}:${daimonGatewayBootstrapMountPath(realm)}:ro`);
|
|
287
298
|
}
|
|
288
299
|
else if (descriptor.auth.staging === "secret-service") {
|
|
289
300
|
const realm = descriptor.auth.realm;
|
|
@@ -18,5 +18,7 @@
|
|
|
18
18
|
* rather than something the container can repair.
|
|
19
19
|
*/
|
|
20
20
|
export declare const DAIMON_ORGANIZATION_UID = 2000;
|
|
21
|
+
/** The auth gateway: sole holder of every gatewayed subscription realm. */
|
|
22
|
+
export declare const DAIMON_GATEWAY_UID = 2050;
|
|
21
23
|
export declare const DAIMON_BROKER_UID = 2100;
|
|
22
24
|
export declare const DAIMON_FIRST_WORKER_UID = 2200;
|
|
@@ -18,5 +18,7 @@
|
|
|
18
18
|
* rather than something the container can repair.
|
|
19
19
|
*/
|
|
20
20
|
export const DAIMON_ORGANIZATION_UID = 2_000;
|
|
21
|
+
/** The auth gateway: sole holder of every gatewayed subscription realm. */
|
|
22
|
+
export const DAIMON_GATEWAY_UID = 2_050;
|
|
21
23
|
export const DAIMON_BROKER_UID = 2_100;
|
|
22
24
|
export const DAIMON_FIRST_WORKER_UID = 2_200;
|
|
@@ -1,9 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import type { ResolvedAuthProfile } from "../../auth/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Realm resources for every gatewayed engine: one exclusive-reattach realm
|
|
4
|
+
* volume the auth gateway alone owns, and one opaque bootstrap leaf mounted
|
|
5
|
+
* under the gateway-private root. The volume id is the realm's identity, so a
|
|
6
|
+
* moved mount path still reattaches the same login.
|
|
7
|
+
*/
|
|
8
|
+
export declare const daimonSubscriptionRealmMountId: (engine: string) => string;
|
|
9
|
+
/** The file inside a profile's unlock volume that is mounted as the realm unlock secret. */
|
|
10
|
+
export declare const DAIMON_PROFILE_UNLOCK_FILE = "unlock";
|
|
11
|
+
/**
|
|
12
|
+
* The volume a compiled realm mount reattaches when the selected auth profile
|
|
13
|
+
* holds that engine's login (`spawnfile auth login <engine>`): the profile's
|
|
14
|
+
* realm volume instead of the deployment-lineage one.
|
|
15
|
+
*/
|
|
16
|
+
export declare const daimonProfileRealmVolume: (mountId: string, profile: Pick<ResolvedAuthProfile, "realms"> | null | undefined) => string | undefined;
|
|
17
|
+
/** The read-only mount of a profile's unlock secret at the engine's declared unlock path. */
|
|
18
|
+
export declare const daimonProfileUnlockMountArgs: (unlockVolume: string, unlockMountPath: string) => string[];
|
|
19
|
+
/**
|
|
20
|
+
* Whether a compiled persistent mount is a gatewayed realm. An organization
|
|
21
|
+
* booted against an external gateway (`DAIMON_GATEWAY_URL` at boot) mounts
|
|
22
|
+
* none of these and stages no bootstrap leaf: the gateway alone holds them.
|
|
23
|
+
*/
|
|
24
|
+
export declare const isDaimonGatewayRealmMountId: (id: string) => boolean;
|
|
25
|
+
export declare const daimonGatewayedSubscriptionRealms: (engines: readonly string[]) => {
|
|
26
|
+
opaqueMountTargets: string[];
|
|
3
27
|
persistentMounts: {
|
|
4
28
|
id: string;
|
|
5
29
|
lifecycle: "exclusive-reattach";
|
|
6
|
-
mountPath:
|
|
30
|
+
mountPath: string;
|
|
7
31
|
reason: string;
|
|
8
32
|
}[];
|
|
9
33
|
};
|
|
@@ -1,18 +1,40 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { daimonGatewayBootstrapMountPath, daimonGatewayedEngines, daimonGatewayRealmPath } from "./gateway.js";
|
|
2
|
+
import { DAIMON_ENGINES } from "./engines.js";
|
|
3
|
+
/**
|
|
4
|
+
* Realm resources for every gatewayed engine: one exclusive-reattach realm
|
|
5
|
+
* volume the auth gateway alone owns, and one opaque bootstrap leaf mounted
|
|
6
|
+
* under the gateway-private root. The volume id is the realm's identity, so a
|
|
7
|
+
* moved mount path still reattaches the same login.
|
|
8
|
+
*/
|
|
9
|
+
export const daimonSubscriptionRealmMountId = (engine) => `daimon-${engine}-subscription-realm`;
|
|
10
|
+
const realmMountId = daimonSubscriptionRealmMountId;
|
|
11
|
+
/** The file inside a profile's unlock volume that is mounted as the realm unlock secret. */
|
|
12
|
+
export const DAIMON_PROFILE_UNLOCK_FILE = "unlock";
|
|
13
|
+
/**
|
|
14
|
+
* The volume a compiled realm mount reattaches when the selected auth profile
|
|
15
|
+
* holds that engine's login (`spawnfile auth login <engine>`): the profile's
|
|
16
|
+
* realm volume instead of the deployment-lineage one.
|
|
17
|
+
*/
|
|
18
|
+
export const daimonProfileRealmVolume = (mountId, profile) => Object.entries(profile?.realms ?? {}).find(([engine]) => realmMountId(engine) === mountId)?.[1].realmVolume;
|
|
19
|
+
/** The read-only mount of a profile's unlock secret at the engine's declared unlock path. */
|
|
20
|
+
export const daimonProfileUnlockMountArgs = (unlockVolume, unlockMountPath) => [
|
|
21
|
+
"--mount", `type=volume,source=${unlockVolume},target=${unlockMountPath},volume-subpath=${DAIMON_PROFILE_UNLOCK_FILE},readonly`
|
|
22
|
+
];
|
|
23
|
+
/**
|
|
24
|
+
* Whether a compiled persistent mount is a gatewayed realm. An organization
|
|
25
|
+
* booted against an external gateway (`DAIMON_GATEWAY_URL` at boot) mounts
|
|
26
|
+
* none of these and stages no bootstrap leaf: the gateway alone holds them.
|
|
27
|
+
*/
|
|
28
|
+
export const isDaimonGatewayRealmMountId = (id) => daimonGatewayedEngines(DAIMON_ENGINES).some((descriptor) => realmMountId(descriptor.id) === id);
|
|
29
|
+
export const daimonGatewayedSubscriptionRealms = (engines) => {
|
|
30
|
+
const descriptors = daimonGatewayedEngines(engines);
|
|
9
31
|
return {
|
|
10
|
-
opaqueMountTargets:
|
|
11
|
-
persistentMounts:
|
|
12
|
-
id:
|
|
32
|
+
opaqueMountTargets: descriptors.map((descriptor) => daimonGatewayBootstrapMountPath(descriptor.auth.realm)),
|
|
33
|
+
persistentMounts: descriptors.map((descriptor) => ({
|
|
34
|
+
id: realmMountId(descriptor.id),
|
|
13
35
|
lifecycle: "exclusive-reattach",
|
|
14
|
-
mountPath:
|
|
15
|
-
reason: `Daimon host ${
|
|
36
|
+
mountPath: daimonGatewayRealmPath(descriptor),
|
|
37
|
+
reason: `Daimon host ${descriptor.id} subscription credential realm`
|
|
16
38
|
}))
|
|
17
39
|
};
|
|
18
40
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export const
|
|
2
|
-
description: "
|
|
1
|
+
export const createDaimonTestNode = (overrides = {}) => ({
|
|
2
|
+
description: "Daimon test agent",
|
|
3
3
|
docs: [
|
|
4
4
|
{
|
|
5
5
|
content: "# Instructions\n",
|
|
@@ -23,7 +23,7 @@ export const createPiTestNode = (overrides = {}) => ({
|
|
|
23
23
|
name: "assistant",
|
|
24
24
|
policyMode: null,
|
|
25
25
|
policyOnDegrade: null,
|
|
26
|
-
runtime: { name: "
|
|
26
|
+
runtime: { name: "daimon", options: {} },
|
|
27
27
|
secrets: [],
|
|
28
28
|
skills: [
|
|
29
29
|
{
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { SubjectAdapter, Usage } from '../../../../training/index.js';
|
|
2
|
+
export declare const BOOTED_ADAPTER_ID = "daimon-booted";
|
|
3
|
+
export declare const BOOTED_EVIDENCE_SCHEMA = "spawnfile.training.daimon-booted.wake.v1";
|
|
4
|
+
/** One ledger row a wake appended (`noopolis.daimon.turn-usage.v1`), as far as Training reads it. */
|
|
5
|
+
export interface BootedUsageRow {
|
|
6
|
+
input: number;
|
|
7
|
+
cache_read: number;
|
|
8
|
+
output: number;
|
|
9
|
+
notional_usd: number;
|
|
10
|
+
complete: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface BootedWake {
|
|
13
|
+
state: 'completed' | 'failed' | 'stopped' | 'timeout';
|
|
14
|
+
acceptanceId: string;
|
|
15
|
+
executionId: string | null;
|
|
16
|
+
code: string | null;
|
|
17
|
+
text: string;
|
|
18
|
+
usage: readonly BootedUsageRow[];
|
|
19
|
+
transcript: string | null;
|
|
20
|
+
/** Per model request, the tool-call names its response carried; null where the runtime could not say. */
|
|
21
|
+
requestToolCalls?: readonly (readonly string[] | null)[];
|
|
22
|
+
}
|
|
23
|
+
export interface BootedTrialHandle {
|
|
24
|
+
wake(text: string, options: {
|
|
25
|
+
deliveryId: string;
|
|
26
|
+
timeoutMs: number;
|
|
27
|
+
signal?: AbortSignal;
|
|
28
|
+
}): Promise<BootedWake>;
|
|
29
|
+
teardown(): Promise<void>;
|
|
30
|
+
}
|
|
31
|
+
/** Boots one trial organization of the subject with the candidate's instructions. */
|
|
32
|
+
export interface BootedTrialLauncher {
|
|
33
|
+
boot(input: {
|
|
34
|
+
trialId: string;
|
|
35
|
+
instructions: string;
|
|
36
|
+
signal?: AbortSignal;
|
|
37
|
+
}): Promise<BootedTrialHandle>;
|
|
38
|
+
}
|
|
39
|
+
export interface BootedAdapterOptions {
|
|
40
|
+
launcher: BootedTrialLauncher;
|
|
41
|
+
timeoutMs: number;
|
|
42
|
+
}
|
|
43
|
+
/** Ledger rows to `Usage`; no rows means unmetered, never zero. */
|
|
44
|
+
export declare const bootedUsage: (rows: readonly BootedUsageRow[]) => Usage | null;
|
|
45
|
+
/**
|
|
46
|
+
* A training trial as a production-booted organization: the container is the
|
|
47
|
+
* isolation, the wake is the turn, and the evidence is what the runtime itself
|
|
48
|
+
* recorded (receipt, usage ledger, engine transcript).
|
|
49
|
+
*/
|
|
50
|
+
export declare function createDaimonBootedAdapter(options: BootedAdapterOptions): SubjectAdapter;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export const BOOTED_ADAPTER_ID = 'daimon-booted';
|
|
2
|
+
export const BOOTED_EVIDENCE_SCHEMA = 'spawnfile.training.daimon-booted.wake.v1';
|
|
3
|
+
/** Ledger rows to `Usage`; no rows means unmetered, never zero. */
|
|
4
|
+
export const bootedUsage = (rows) => rows.length === 0 ? null : {
|
|
5
|
+
inputTokens: rows.reduce((sum, row) => sum + row.input, 0),
|
|
6
|
+
cachedInputTokens: rows.reduce((sum, row) => sum + row.cache_read, 0),
|
|
7
|
+
outputTokens: rows.reduce((sum, row) => sum + row.output, 0),
|
|
8
|
+
reasoningTokens: null,
|
|
9
|
+
notionalUsd: rows.reduce((sum, row) => sum + row.notional_usd, 0),
|
|
10
|
+
source: 'daimon-turn-usage-ledger',
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* A training trial as a production-booted organization: the container is the
|
|
14
|
+
* isolation, the wake is the turn, and the evidence is what the runtime itself
|
|
15
|
+
* recorded (receipt, usage ledger, engine transcript).
|
|
16
|
+
*/
|
|
17
|
+
export function createDaimonBootedAdapter(options) {
|
|
18
|
+
return {
|
|
19
|
+
id: BOOTED_ADAPTER_ID,
|
|
20
|
+
capabilities: { toolTrace: 'none', liveObservations: false, cancellation: 'native-handle', multiTurn: true,
|
|
21
|
+
resources: ['instructions'], readIsolation: 'none', protectedPaths: false,
|
|
22
|
+
isolation: 'One production-booted organization container per trial; the subscription login stays in the run auth gateway.' },
|
|
23
|
+
async start(input) {
|
|
24
|
+
const trial = await options.launcher.boot({ trialId: input.trialId, instructions: input.instructions, signal: input.signal });
|
|
25
|
+
const source = `${BOOTED_ADAPTER_ID}:${input.trialId}`;
|
|
26
|
+
let seq = 0;
|
|
27
|
+
let stopped;
|
|
28
|
+
const emit = (wakeId, value) => input.onObservation({ id: `${source}:${++seq}`, source, seq, trialId: input.trialId, wakeId, timestamp: new Date().toISOString(), ...value });
|
|
29
|
+
const stop = (reason) => stopped ??= trial.teardown().then(() => ({ state: 'acknowledged', scope: 'native-handle', quiescence: 'confirmed', remoteWork: 'unknown', reason, detail: 'trial organization container removed' }), (error) => ({ state: 'unknown', scope: 'native-handle', quiescence: 'unknown', remoteWork: 'unknown', reason, detail: error instanceof Error ? error.message : String(error) }));
|
|
30
|
+
return {
|
|
31
|
+
stop,
|
|
32
|
+
async run(turn, signal) {
|
|
33
|
+
if (stopped)
|
|
34
|
+
throw new Error('trial organization was already stopped');
|
|
35
|
+
const wake = await trial.wake(turn.text, { deliveryId: `${input.trialId}:${turn.id}`, timeoutMs: options.timeoutMs, signal: signal ?? input.signal });
|
|
36
|
+
const usage = bootedUsage(wake.usage);
|
|
37
|
+
if (wake.text)
|
|
38
|
+
await emit(turn.id, { type: 'output', text: wake.text });
|
|
39
|
+
if (usage)
|
|
40
|
+
await emit(turn.id, { type: 'usage', usage });
|
|
41
|
+
if (wake.transcript)
|
|
42
|
+
await emit(turn.id, { type: 'diagnostic', native: { schema: BOOTED_EVIDENCE_SCHEMA, transcript: wake.transcript } });
|
|
43
|
+
const status = wake.state === 'completed' ? 'completed' : wake.state === 'stopped' ? 'cancelled' : 'failed';
|
|
44
|
+
return {
|
|
45
|
+
status, text: wake.text, usage,
|
|
46
|
+
evidence: { adapterId: BOOTED_ADAPTER_ID, payload: { schema: BOOTED_EVIDENCE_SCHEMA, acceptanceId: wake.acceptanceId,
|
|
47
|
+
executionId: wake.executionId, state: wake.state, code: wake.code } },
|
|
48
|
+
coverage: [
|
|
49
|
+
{ channel: 'output', completeness: wake.state === 'completed' ? 'complete' : 'partial', ordering: 'none' },
|
|
50
|
+
{ channel: 'usage', completeness: usage === null ? 'absent' : wake.usage.every((row) => row.complete) ? 'complete' : 'partial', ordering: 'none' },
|
|
51
|
+
{ channel: 'tools', completeness: 'absent', ordering: 'none' },
|
|
52
|
+
],
|
|
53
|
+
...(status === 'completed' ? {} : { error: `trial wake ${wake.state}${wake.code ? ` (${wake.code})` : ''}` }),
|
|
54
|
+
};
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../../../src/runtime/daimon/training/booted/adapter.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAC;AACjD,MAAM,CAAC,MAAM,sBAAsB,GAAG,0CAA0C,CAAC;AA6BjF,mEAAmE;AACnE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAA+B,EAAgB,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACvG,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1D,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IACrE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5D,eAAe,EAAE,IAAI;IACrB,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;IACjE,MAAM,EAAE,0BAA0B;CACnC,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAA6B;IACrE,OAAO;QACL,EAAE,EAAE,iBAAiB;QACrB,YAAY,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI;YACxG,SAAS,EAAE,CAAC,cAAc,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK;YACzE,SAAS,EAAE,+GAA+G,EAAE;QAC9H,KAAK,CAAC,KAAK,CAAC,KAAK;YACf,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9H,MAAM,MAAM,GAAG,GAAG,iBAAiB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACvD,IAAI,GAAG,GAAG,CAAC,CAAC;YACZ,IAAI,OAAyC,CAAC;YAC9C,MAAM,IAAI,GAAG,CAAC,MAAc,EAAE,KAAuD,EAAE,EAAE,CACvF,KAAK,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,IAAI,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;YAChJ,MAAM,IAAI,GAAG,CAAC,MAAc,EAAwB,EAAE,CAAC,OAAO,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,CACtF,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,sCAAsC,EAAE,CAAC,EACjK,CAAC,KAAc,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5L,OAAO;gBACL,IAAI;gBACJ,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM;oBACpB,IAAI,OAAO;wBAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;oBACvE,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;oBACtJ,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACtC,IAAI,IAAI,CAAC,IAAI;wBAAE,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;oBACxE,IAAI,KAAK;wBAAE,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;oBACzD,IAAI,IAAI,CAAC,UAAU;wBAAE,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;oBAC1I,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;oBAC5G,OAAO;wBACL,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK;wBAC9B,QAAQ,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,sBAAsB,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY;gCAClH,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE;wBACvE,QAAQ,EAAE;4BACR,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE;4BAC1G,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE;4BAClJ,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE;yBAC/D;wBACD,GAAG,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBAC9G,CAAC;gBACJ,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { BOOTED_ADAPTER_ID, BOOTED_EVIDENCE_SCHEMA, bootedUsage, createDaimonBootedAdapter } from './adapter.js';
|
|
2
|
+
export type { BootedAdapterOptions, BootedTrialHandle, BootedTrialLauncher, BootedUsageRow, BootedWake } from './adapter.js';
|
|
3
|
+
export { bindBootedJudges, createBootedJudgeInference, transcriptToolActivity } from './judge.js';
|
|
4
|
+
export type { BootedJudgeLauncher, BootedJudgeOptions, BootedJudgeSpec } from './judge.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/runtime/daimon/training/booted/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAEjH,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { InferenceProvider } from '../../../../training/index.js';
|
|
2
|
+
import { type BootedWake } from './adapter.js';
|
|
3
|
+
/** One judge identity: the engine, and the model and effort its compiled organization pins. */
|
|
4
|
+
export interface BootedJudgeSpec {
|
|
5
|
+
engine: string;
|
|
6
|
+
model: string;
|
|
7
|
+
effort?: string;
|
|
8
|
+
}
|
|
9
|
+
/** The run's warm judges: one booted container per judge identity, woken once per judgment. */
|
|
10
|
+
export interface BootedJudgeLauncher {
|
|
11
|
+
judge(spec: BootedJudgeSpec): Promise<{
|
|
12
|
+
wake(text: string, options: {
|
|
13
|
+
deliveryId: string;
|
|
14
|
+
timeoutMs: number;
|
|
15
|
+
signal?: AbortSignal;
|
|
16
|
+
}): Promise<BootedWake>;
|
|
17
|
+
}>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Composition binds the training run's judge launcher for the run's duration
|
|
21
|
+
* (`spawnfile train` runs one run per process). Providers resolve it per
|
|
22
|
+
* judgment, so grader and model registries stay static data.
|
|
23
|
+
*/
|
|
24
|
+
export declare function bindBootedJudges(launcher: BootedJudgeLauncher | undefined): void;
|
|
25
|
+
export interface BootedJudgeOptions {
|
|
26
|
+
engine: string;
|
|
27
|
+
effort?: string;
|
|
28
|
+
timeoutMs?: number;
|
|
29
|
+
}
|
|
30
|
+
export declare function transcriptToolActivity(transcript: string): string[];
|
|
31
|
+
/**
|
|
32
|
+
* The one subscription inference path of a training run: each judgment is
|
|
33
|
+
* one wake of the run's warm, tool-free judge organization for this engine,
|
|
34
|
+
* whose login lives only in the run's auth gateway (or the engine's own
|
|
35
|
+
* realm). The reply is validated against the requested schema after the
|
|
36
|
+
* wake. A wake whose transcript or per-request tool record shows any tool
|
|
37
|
+
* activity is refused, and so is one that left no evidence either way.
|
|
38
|
+
*/
|
|
39
|
+
export declare function createBootedJudgeInference(options: BootedJudgeOptions): InferenceProvider;
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { InferenceFailure, validateInferenceResponse, validateInferenceSchema } from '../../../../training/index.js';
|
|
3
|
+
import { bootedUsage } from './adapter.js';
|
|
4
|
+
let bound;
|
|
5
|
+
/**
|
|
6
|
+
* Composition binds the training run's judge launcher for the run's duration
|
|
7
|
+
* (`spawnfile train` runs one run per process). Providers resolve it per
|
|
8
|
+
* judgment, so grader and model registries stay static data.
|
|
9
|
+
*/
|
|
10
|
+
export function bindBootedJudges(launcher) { bound = launcher; }
|
|
11
|
+
/**
|
|
12
|
+
* Structured records of a wake transcript that are not a message or
|
|
13
|
+
* reasoning: any other item kind is tool activity, including future native
|
|
14
|
+
* tool families. Engine-neutral: it reads record and item kinds only.
|
|
15
|
+
*/
|
|
16
|
+
const TEXT_KINDS = /^(message|reasoning|agent_message|agent_reasoning|user_message|text|thinking)$/u;
|
|
17
|
+
const TOOL_KINDS = /tool|function|shell|exec|command|mcp|web_search|patch|file_change|search_tool|use_tool|call/iu;
|
|
18
|
+
export function transcriptToolActivity(transcript) {
|
|
19
|
+
const found = new Set();
|
|
20
|
+
for (const line of transcript.split('\n')) {
|
|
21
|
+
if (!line.trim())
|
|
22
|
+
continue;
|
|
23
|
+
let record;
|
|
24
|
+
try {
|
|
25
|
+
record = JSON.parse(line);
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
found.add('unparseable-record');
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
if (record === null || typeof record !== 'object')
|
|
32
|
+
continue;
|
|
33
|
+
const visit = (value, depth) => {
|
|
34
|
+
if (depth > 3 || value === null || typeof value !== 'object' || Array.isArray(value))
|
|
35
|
+
return;
|
|
36
|
+
const entry = value;
|
|
37
|
+
const kind = entry['type'];
|
|
38
|
+
if (typeof kind === 'string' && !TEXT_KINDS.test(kind) && TOOL_KINDS.test(kind))
|
|
39
|
+
found.add(kind);
|
|
40
|
+
for (const key of ['payload', 'item', 'message', 'content']) {
|
|
41
|
+
const nested = entry[key];
|
|
42
|
+
if (Array.isArray(nested))
|
|
43
|
+
nested.forEach(child => visit(child, depth + 1));
|
|
44
|
+
else
|
|
45
|
+
visit(nested, depth + 1);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
visit(record, 0);
|
|
49
|
+
}
|
|
50
|
+
return [...found].sort();
|
|
51
|
+
}
|
|
52
|
+
function wakeFailure(wake) {
|
|
53
|
+
if (wake.state === 'timeout')
|
|
54
|
+
return 'timeout';
|
|
55
|
+
if (wake.state === 'stopped')
|
|
56
|
+
return 'cancelled';
|
|
57
|
+
const evidence = `${wake.code ?? ''} ${wake.text}`;
|
|
58
|
+
if (/auth_stale|unauthorized|authentication|sign in|login|401|403/iu.test(evidence))
|
|
59
|
+
return 'authentication';
|
|
60
|
+
if (/quota|usage limit|rate limit|429|402/iu.test(evidence))
|
|
61
|
+
return 'quota';
|
|
62
|
+
return 'unavailable';
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* The one subscription inference path of a training run: each judgment is
|
|
66
|
+
* one wake of the run's warm, tool-free judge organization for this engine,
|
|
67
|
+
* whose login lives only in the run's auth gateway (or the engine's own
|
|
68
|
+
* realm). The reply is validated against the requested schema after the
|
|
69
|
+
* wake. A wake whose transcript or per-request tool record shows any tool
|
|
70
|
+
* activity is refused, and so is one that left no evidence either way.
|
|
71
|
+
*/
|
|
72
|
+
export function createBootedJudgeInference(options) {
|
|
73
|
+
const route = `${options.engine}-subscription`;
|
|
74
|
+
return {
|
|
75
|
+
id: route,
|
|
76
|
+
capabilities: { tools: 'disabled', billing: 'subscription', temperature: false, seed: false },
|
|
77
|
+
async generate(request) {
|
|
78
|
+
validateInferenceSchema(request.responseSchema);
|
|
79
|
+
if (!request.prompt.trim() || !request.model.trim() || request.temperature !== undefined || request.seed !== undefined) {
|
|
80
|
+
throw new InferenceFailure('unsupported', `Invalid ${route} inference controls`);
|
|
81
|
+
}
|
|
82
|
+
if (request.signal?.aborted)
|
|
83
|
+
throw new InferenceFailure('cancelled', `${route} cancelled before the wake`);
|
|
84
|
+
if (!bound)
|
|
85
|
+
throw new InferenceFailure('unavailable', 'Subscription judges run only as booted containers inside `spawnfile train --auth-profile <name>`');
|
|
86
|
+
const evidence = { responseModel: null, responseRoute: route };
|
|
87
|
+
const judge = await bound.judge({ engine: options.engine, model: request.model, ...(options.effort === undefined ? {} : { effort: options.effort }) })
|
|
88
|
+
.catch((error) => { throw new InferenceFailure('unavailable', `${route} judge did not boot: ${error instanceof Error ? error.message : String(error)}`, evidence); });
|
|
89
|
+
const schema = request.responseSchema === undefined ? '' : [
|
|
90
|
+
'', '', 'Reply with exactly one JSON value that validates against this JSON Schema and nothing else:',
|
|
91
|
+
JSON.stringify(request.responseSchema),
|
|
92
|
+
].join('\n');
|
|
93
|
+
const text = `${request.system === undefined ? '' : `${request.system}\n\n`}${request.prompt}${schema}`;
|
|
94
|
+
const wake = await judge.wake(text, { deliveryId: `judge-${randomUUID()}`, timeoutMs: options.timeoutMs ?? 180_000, signal: request.signal });
|
|
95
|
+
const usage = bootedUsage(wake.usage);
|
|
96
|
+
const withUsage = { ...evidence, usage };
|
|
97
|
+
if (request.signal?.aborted)
|
|
98
|
+
throw new InferenceFailure('cancelled', `${route} judgment cancelled`, withUsage);
|
|
99
|
+
if (wake.state !== 'completed')
|
|
100
|
+
throw new InferenceFailure(wakeFailure(wake), `${route} judge wake ${wake.state}${wake.code ? ` (${wake.code})` : ''}`, withUsage);
|
|
101
|
+
const requests = wake.requestToolCalls ?? [];
|
|
102
|
+
if ((wake.transcript !== null && transcriptToolActivity(wake.transcript).length > 0) || requests.some(calls => calls !== null && calls.length > 0)) {
|
|
103
|
+
throw new InferenceFailure('protocol', `${route} attempt refused: tool-call`, { ...withUsage, detail: 'tool-call' });
|
|
104
|
+
}
|
|
105
|
+
// Proof of a tool-free wake: the engine transcript, or every model request's own tool-call record.
|
|
106
|
+
if (wake.transcript === null && (requests.length === 0 || requests.some(calls => calls === null))) {
|
|
107
|
+
throw new InferenceFailure('protocol', `${route} judge left no evidence to prove a tool-free judgment`, withUsage);
|
|
108
|
+
}
|
|
109
|
+
const reply = wake.text.trim();
|
|
110
|
+
if (!reply)
|
|
111
|
+
throw new InferenceFailure('protocol', `${route} judge replied with nothing`, withUsage);
|
|
112
|
+
try {
|
|
113
|
+
validateInferenceResponse(reply, request.responseSchema, request.responseJsonFence);
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
throw new InferenceFailure('invalid-response', `${route} answer violated the requested schema`, withUsage);
|
|
117
|
+
}
|
|
118
|
+
return { text: reply, model: request.model, modelBasis: 'requested-assumption', usage, route };
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=judge.js.map
|