spawnfile 0.1.33 → 0.1.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/audit/readAudit.d.ts +3 -3
- package/dist/auth/profileStore.d.ts +3 -1
- package/dist/auth/profileStore.js +31 -30
- package/dist/auth/trainingAuth.d.ts +2 -5
- package/dist/auth/types.d.ts +16 -0
- package/dist/cli/authCommands.d.ts +1 -1
- package/dist/cli/authCommands.js +21 -1
- package/dist/cli/devCommands.d.ts +1 -1
- package/dist/cli/devCommands.js +0 -66
- package/dist/cli/runCli.d.ts +3 -4
- package/dist/cli/runCli.js +4 -3
- package/dist/cli/trainCommand.js +9 -15
- package/dist/cli/trainingBooted.d.ts +9 -0
- package/dist/cli/trainingBooted.js +45 -0
- package/dist/cli/trainingExecution.d.ts +4 -7
- package/dist/cli/trainingExecution.js +4 -32
- package/dist/compiler/containerArtifacts.js +0 -5
- package/dist/compiler/containerBackedMountRender.js +5 -1
- package/dist/compiler/containerDaimonBrokerRender.d.ts +5 -50
- package/dist/compiler/containerDaimonBrokerRender.js +19 -90
- package/dist/compiler/containerDaimonGatewayRender.d.ts +50 -0
- package/dist/compiler/containerDaimonGatewayRender.js +161 -0
- package/dist/compiler/containerDaimonGrokWorkerProvisioning.d.ts +2 -10
- package/dist/compiler/containerDaimonGrokWorkerProvisioning.js +13 -25
- package/dist/compiler/containerDaimonGrokWorkerRender.d.ts +11 -49
- package/dist/compiler/containerDaimonGrokWorkerRender.js +15 -39
- package/dist/compiler/containerDaimonStartupSupervision.d.ts +8 -0
- package/dist/compiler/containerDaimonStartupSupervision.js +39 -0
- package/dist/compiler/containerDaimonUidEntrypointRender.d.ts +1 -2
- package/dist/compiler/containerDaimonUidEntrypointRender.js +29 -47
- package/dist/compiler/containerRuntimeReadinessRender.js +1 -1
- package/dist/compiler/memoryArtifacts.js +0 -1
- package/dist/compiler/moltnetArtifacts.js +1 -17
- package/dist/compiler/moltnetClientConfig.js +1 -1
- package/dist/compiler/moltnetRuntimeConfig.js +0 -10
- package/dist/compiler/runProject.d.ts +3 -0
- package/dist/compiler/runProject.js +12 -5
- package/dist/compiler/runProjectAuth.js +6 -18
- package/dist/compiler/training/contract.d.ts +0 -2
- package/dist/compiler/training/contract.js +0 -2
- package/dist/compiler/training/execution.d.ts +1 -128
- package/dist/compiler/training/execution.js +7 -68
- package/dist/compiler/training/index.d.ts +0 -8
- package/dist/compiler/training/index.js +0 -7
- package/dist/compiler/training/output.d.ts +1 -0
- package/dist/compiler/training/output.js +1 -1
- package/dist/compiler/training/rewind/contract.d.ts +6 -6
- package/dist/compiler/training/trial/boot.d.ts +72 -0
- package/dist/compiler/training/trial/boot.js +225 -0
- package/dist/compiler/training/trial/docker.d.ts +10 -0
- package/dist/compiler/training/trial/docker.js +22 -0
- package/dist/compiler/training/trial/gateway.d.ts +47 -0
- package/dist/compiler/training/trial/gateway.js +113 -0
- package/dist/compiler/training/trial/homeLogin.d.ts +31 -0
- package/dist/compiler/training/trial/homeLogin.js +69 -0
- package/dist/compiler/training/trial/index.d.ts +8 -0
- package/dist/compiler/training/trial/index.js +8 -0
- package/dist/compiler/training/trial/judge.d.ts +15 -0
- package/dist/compiler/training/trial/judge.js +42 -0
- package/dist/compiler/training/trial/launcher.d.ts +47 -0
- package/dist/compiler/training/trial/launcher.js +193 -0
- package/dist/compiler/training/trial/login.d.ts +35 -0
- package/dist/compiler/training/trial/login.js +85 -0
- package/dist/compiler/training/trial/project.d.ts +11 -0
- package/dist/compiler/training/trial/project.js +31 -0
- package/dist/compiler/training/trial/realmTurns.d.ts +20 -0
- package/dist/compiler/training/trial/realmTurns.js +69 -0
- package/dist/compiler/upReceipt.d.ts +2 -17
- package/dist/compiler/upReceipt.js +2 -17
- package/dist/deployment/artifactsExportPlan.js +2 -18
- package/dist/deployment/privateArtifactsExport.js +1 -1
- package/dist/dev/docker.d.ts +0 -5
- package/dist/dev/docker.js +0 -46
- package/dist/dev/index.d.ts +0 -1
- package/dist/dev/index.js +0 -1
- package/dist/dev/project.d.ts +0 -16
- package/dist/dev/project.js +1 -128
- package/dist/distribution/distributionReportSchema.js +1 -1
- package/dist/distribution/imageRuntimeAuth.js +3 -2
- package/dist/manifest/renderSpawnfile.js +2 -1
- package/dist/release/drainControl.d.ts +5 -19
- package/dist/release/drainControl.js +12 -67
- package/dist/report/types.d.ts +3 -6
- package/dist/runtime/common.d.ts +1 -1
- package/dist/runtime/common.js +1 -1
- package/dist/runtime/container.d.ts +2 -2
- package/dist/runtime/container.js +1 -39
- package/dist/runtime/daimon/config.js +8 -14
- package/dist/runtime/daimon/contractManifest.js +0 -1
- package/dist/runtime/daimon/contractManifestSchema.js +0 -1
- package/dist/runtime/daimon/control.d.ts +31 -0
- package/dist/runtime/daimon/control.js +83 -0
- package/dist/runtime/daimon/engineDescriptorSchema.js +0 -1
- package/dist/runtime/daimon/engineDescriptors.generated.d.ts +1 -1
- package/dist/runtime/daimon/engineDescriptors.generated.js +1 -2
- package/dist/runtime/daimon/engines.js +0 -1
- package/dist/runtime/daimon/gateway.d.ts +62 -0
- package/dist/runtime/daimon/gateway.js +77 -0
- package/dist/runtime/daimon/grokWorkerContract.d.ts +0 -5
- package/dist/runtime/daimon/grokWorkerContract.js +1 -13
- package/dist/runtime/daimon/index.d.ts +2 -0
- package/dist/runtime/daimon/index.js +2 -1
- package/dist/runtime/daimon/memory.js +1 -1
- package/dist/runtime/daimon/packageName.js +0 -1
- package/dist/runtime/daimon/runAuth.js +15 -4
- package/dist/runtime/daimon/runtimeIdentity.d.ts +2 -0
- package/dist/runtime/daimon/runtimeIdentity.js +2 -0
- package/dist/runtime/daimon/subscriptionRealms.d.ts +27 -3
- package/dist/runtime/daimon/subscriptionRealms.js +35 -13
- package/dist/runtime/daimon/testHelpers.d.ts +2 -0
- package/dist/runtime/{pi → daimon}/testHelpers.js +3 -3
- package/dist/runtime/daimon/training/booted/adapter.d.ts +50 -0
- package/dist/runtime/daimon/training/booted/adapter.js +60 -0
- package/dist/runtime/daimon/training/booted/adapter.js.map +1 -0
- package/dist/runtime/daimon/training/booted/index.d.ts +4 -0
- package/dist/runtime/daimon/training/booted/index.js +3 -0
- package/dist/runtime/daimon/training/booted/index.js.map +1 -0
- package/dist/runtime/daimon/training/booted/judge.d.ts +39 -0
- package/dist/runtime/daimon/training/booted/judge.js +122 -0
- package/dist/runtime/daimon/training/booted/judge.js.map +1 -0
- package/dist/runtime/daimon/training/index.d.ts +5 -0
- package/dist/runtime/daimon/training/index.js +8 -4
- package/dist/runtime/daimon/training/index.js.map +1 -1
- package/dist/runtime/daimon/wakeMoments.js +0 -1
- package/dist/runtime/install.js +0 -21
- package/dist/runtime/registry.js +0 -2
- package/dist/runtime/trainingGraderProviders.js +10 -4
- package/dist/runtime/trainingProviders.d.ts +5 -3
- package/dist/runtime/trainingProviders.js +21 -24
- package/dist/runtime/trainingSubjects.d.ts +0 -121
- package/dist/runtime/trainingSubjects.js +2 -13
- package/dist/runtime/types.d.ts +1 -8
- package/dist/runtime/usageRequestLedger.d.ts +2 -0
- package/dist/runtime/usageRequestLedger.js +3 -1
- package/dist/shared/errors.js +0 -1
- package/dist/shared/trainingLegacy/trainingLegacyHashDomains.d.ts +1 -0
- package/dist/shared/trainingLegacy/trainingLegacyHashDomains.js +1 -0
- package/dist/shared/trainingLegacy/trainingLegacyHashDomains.js.map +1 -1
- package/dist/status/lifecycleProbes.js +3 -6
- package/dist/status/moltnetWiringProbes.js +1 -17
- package/dist/training/subjects/index.d.ts +0 -1
- package/dist/training/subjects/index.js +0 -1
- package/dist/training/subjects/index.js.map +1 -1
- package/examples/README.md +0 -1
- package/examples/daimon-org/agents/mapper/Spawnfile +4 -1
- package/examples/daimon-org/teams/review/agents/reviewer/Spawnfile +4 -1
- package/examples/jungian-daimon-org/teams/luna/agents/animus/Spawnfile +5 -8
- package/examples/jungian-daimon-org/teams/luna/agents/representative/Spawnfile +1 -1
- package/examples/jungian-daimon-org/teams/luna/agents/shadow/Spawnfile +5 -8
- package/examples/jungian-daimon-org/teams/selene/agents/animus/Spawnfile +5 -8
- package/examples/jungian-daimon-org/teams/selene/agents/representative/Spawnfile +5 -8
- package/examples/jungian-daimon-org/teams/selene/agents/shadow/Spawnfile +1 -1
- package/examples/mixed-runtime-org/agents/localist/Spawnfile +7 -7
- package/package.json +4 -13
- package/runtimes.yaml +5 -15
- package/dist/compiler/containerDaimonGrokTaskClock.d.ts +0 -5
- package/dist/compiler/containerDaimonGrokTaskClock.js +0 -29
- package/dist/compiler/daimonTelemetryArtifacts.d.ts +0 -22
- package/dist/compiler/daimonTelemetryArtifacts.js +0 -56
- package/dist/compiler/training/broker/clockProbe.d.ts +0 -6
- package/dist/compiler/training/broker/clockProbe.js +0 -27
- package/dist/compiler/training/broker/declaration.d.ts +0 -54
- package/dist/compiler/training/broker/declaration.js +0 -70
- package/dist/compiler/training/broker/entrypoint.d.ts +0 -39
- package/dist/compiler/training/broker/entrypoint.js +0 -124
- package/dist/compiler/training/broker/evaluatorSecrets.d.ts +0 -2
- package/dist/compiler/training/broker/evaluatorSecrets.js +0 -62
- package/dist/compiler/training/broker/index.d.ts +0 -12
- package/dist/compiler/training/broker/index.js +0 -12
- package/dist/compiler/training/broker/main.d.ts +0 -2
- package/dist/compiler/training/broker/main.js +0 -14
- package/dist/compiler/training/broker/paths.d.ts +0 -236
- package/dist/compiler/training/broker/paths.js +0 -249
- package/dist/compiler/training/broker/processes.d.ts +0 -51
- package/dist/compiler/training/broker/processes.js +0 -102
- package/dist/compiler/training/broker/projection.d.ts +0 -61
- package/dist/compiler/training/broker/projection.js +0 -109
- package/dist/compiler/training/broker/provisioning.d.ts +0 -78
- package/dist/compiler/training/broker/provisioning.js +0 -231
- package/dist/compiler/training/broker/receipt.d.ts +0 -77
- package/dist/compiler/training/broker/receipt.js +0 -110
- package/dist/compiler/training/broker/recycleClient.d.ts +0 -33
- package/dist/compiler/training/broker/recycleClient.js +0 -112
- package/dist/compiler/training/broker/registration.d.ts +0 -46
- package/dist/compiler/training/broker/registration.js +0 -113
- package/dist/compiler/training/broker/reset.d.ts +0 -9
- package/dist/compiler/training/broker/reset.js +0 -71
- package/dist/compiler/training/broker/rootScript.d.ts +0 -32
- package/dist/compiler/training/broker/rootScript.js +0 -33
- package/dist/compiler/training/broker/runtime.d.ts +0 -22
- package/dist/compiler/training/broker/runtime.js +0 -128
- package/dist/compiler/training/broker/seccompRoutes.d.ts +0 -31
- package/dist/compiler/training/broker/seccompRoutes.js +0 -36
- package/dist/compiler/training/broker/supervisor.d.ts +0 -108
- package/dist/compiler/training/broker/supervisor.js +0 -172
- package/dist/compiler/training/broker/taskClock.d.ts +0 -5
- package/dist/compiler/training/broker/taskClock.js +0 -41
- package/dist/compiler/training/container/contract.d.ts +0 -54
- package/dist/compiler/training/container/contract.js +0 -52
- package/dist/compiler/training/container/evaluators.d.ts +0 -48
- package/dist/compiler/training/container/evaluators.js +0 -50
- package/dist/compiler/training/container/grokWriteback.d.ts +0 -8
- package/dist/compiler/training/container/grokWriteback.js +0 -26
- package/dist/compiler/training/container/index.d.ts +0 -5
- package/dist/compiler/training/container/index.js +0 -3
- package/dist/compiler/training/container/launch.d.ts +0 -21
- package/dist/compiler/training/container/launch.js +0 -280
- package/dist/compiler/training/container/nativeSlots.d.ts +0 -14
- package/dist/compiler/training/container/nativeSlots.js +0 -13
- package/dist/compiler/training/container/outputCopy.d.ts +0 -2
- package/dist/compiler/training/container/outputCopy.js +0 -72
- package/dist/compiler/training/container/outputVolume.d.ts +0 -28
- package/dist/compiler/training/container/outputVolume.js +0 -185
- package/dist/compiler/training/container/prepare.d.ts +0 -10
- package/dist/compiler/training/container/prepare.js +0 -125
- package/dist/compiler/training/container/process.d.ts +0 -14
- package/dist/compiler/training/container/process.js +0 -70
- package/dist/compiler/training/container/security.d.ts +0 -38
- package/dist/compiler/training/container/security.js +0 -68
- package/dist/compiler/training/container/subjectIsolation.d.ts +0 -5
- package/dist/compiler/training/container/subjectIsolation.js +0 -16
- package/dist/compiler/training/preparation/assets/Dockerfile +0 -100
- package/dist/compiler/training/preparation/assets/package-lock.json +0 -5483
- package/dist/compiler/training/preparation/broker.d.ts +0 -30
- package/dist/compiler/training/preparation/broker.js +0 -68
- package/dist/compiler/training/preparation/contextModes.d.ts +0 -12
- package/dist/compiler/training/preparation/contextModes.js +0 -38
- package/dist/compiler/training/preparation/contract.d.ts +0 -203
- package/dist/compiler/training/preparation/contract.js +0 -114
- package/dist/compiler/training/preparation/copyAssets.d.ts +0 -1
- package/dist/compiler/training/preparation/copyAssets.js +0 -8
- package/dist/compiler/training/preparation/daimonParent.d.ts +0 -42
- package/dist/compiler/training/preparation/daimonParent.js +0 -114
- package/dist/compiler/training/preparation/files.d.ts +0 -29
- package/dist/compiler/training/preparation/files.js +0 -146
- package/dist/compiler/training/preparation/image.d.ts +0 -28
- package/dist/compiler/training/preparation/image.js +0 -105
- package/dist/compiler/training/preparation/index.d.ts +0 -3
- package/dist/compiler/training/preparation/index.js +0 -2
- package/dist/compiler/training/preparation/inputs.d.ts +0 -24
- package/dist/compiler/training/preparation/inputs.js +0 -101
- package/dist/compiler/training/preparation/prepare.d.ts +0 -38
- package/dist/compiler/training/preparation/prepare.js +0 -224
- package/dist/compiler/training/preparation/scratch.d.ts +0 -8
- package/dist/compiler/training/preparation/scratch.js +0 -114
- package/dist/compiler/training/repair/compatibility.d.ts +0 -11
- package/dist/compiler/training/repair/compatibility.js +0 -45
- package/dist/compiler/training/repair/contract.d.ts +0 -832
- package/dist/compiler/training/repair/contract.js +0 -34
- package/dist/compiler/training/repair/index.d.ts +0 -3
- package/dist/compiler/training/repair/index.js +0 -3
- package/dist/compiler/training/repair/prepare.d.ts +0 -378
- package/dist/compiler/training/repair/prepare.js +0 -84
- package/dist/compiler/training/repair/witness.d.ts +0 -348
- package/dist/compiler/training/repair/witness.js +0 -62
- package/dist/compiler/training/subjectDeclaration.d.ts +0 -26
- package/dist/compiler/training/subjectDeclaration.js +0 -54
- package/dist/compiler/training/subjectLease.d.ts +0 -115
- package/dist/compiler/training/subjectLease.js +0 -179
- package/dist/dev/activity.d.ts +0 -14
- package/dist/dev/activity.js +0 -48
- package/dist/runtime/codex-exec/training/adapter.d.ts +0 -13
- package/dist/runtime/codex-exec/training/adapter.js +0 -101
- package/dist/runtime/codex-exec/training/adapter.js.map +0 -1
- package/dist/runtime/codex-exec/training/environment.d.ts +0 -3
- package/dist/runtime/codex-exec/training/environment.js +0 -26
- package/dist/runtime/codex-exec/training/environment.js.map +0 -1
- package/dist/runtime/codex-exec/training/index.d.ts +0 -2
- package/dist/runtime/codex-exec/training/index.js +0 -3
- package/dist/runtime/codex-exec/training/index.js.map +0 -1
- package/dist/runtime/codex-exec/training/protocol.d.ts +0 -15
- package/dist/runtime/codex-exec/training/protocol.js +0 -102
- package/dist/runtime/codex-exec/training/protocol.js.map +0 -1
- package/dist/runtime/codex-exec/training/providers/codex-subscription/index.d.ts +0 -1
- package/dist/runtime/codex-exec/training/providers/codex-subscription/index.js +0 -2
- package/dist/runtime/codex-exec/training/providers/codex-subscription/index.js.map +0 -1
- package/dist/runtime/codex-exec/training/providers/codex-subscription/protocol.d.ts +0 -17
- package/dist/runtime/codex-exec/training/providers/codex-subscription/protocol.js +0 -80
- package/dist/runtime/codex-exec/training/providers/codex-subscription/protocol.js.map +0 -1
- package/dist/runtime/codex-exec/training/providers/codex-subscription/provider.d.ts +0 -12
- package/dist/runtime/codex-exec/training/providers/codex-subscription/provider.js +0 -125
- package/dist/runtime/codex-exec/training/providers/codex-subscription/provider.js.map +0 -1
- package/dist/runtime/codex-exec/training/providers/codex-subscription/strict-schema.d.ts +0 -6
- package/dist/runtime/codex-exec/training/providers/codex-subscription/strict-schema.js +0 -219
- package/dist/runtime/codex-exec/training/providers/codex-subscription/strict-schema.js.map +0 -1
- package/dist/runtime/daimon/contractManifest.js.map +0 -1
- package/dist/runtime/daimon/contractManifestSchema.js.map +0 -1
- package/dist/runtime/daimon/engineDescriptorSchema.js.map +0 -1
- package/dist/runtime/daimon/engineDescriptors.generated.js.map +0 -1
- package/dist/runtime/daimon/engines.js.map +0 -1
- package/dist/runtime/daimon/index.js.map +0 -1
- package/dist/runtime/daimon/packageName.js.map +0 -1
- package/dist/runtime/daimon/training/legacy/adapter.d.ts +0 -11
- package/dist/runtime/daimon/training/legacy/adapter.js +0 -175
- package/dist/runtime/daimon/training/legacy/adapter.js.map +0 -1
- package/dist/runtime/daimon/training/legacy/index.d.ts +0 -2
- package/dist/runtime/daimon/training/legacy/index.js +0 -3
- package/dist/runtime/daimon/training/legacy/index.js.map +0 -1
- package/dist/runtime/daimon/training/legacy/public.d.ts +0 -49
- package/dist/runtime/daimon/training/legacy/public.js +0 -16
- package/dist/runtime/daimon/training/legacy/public.js.map +0 -1
- package/dist/runtime/daimon/training/native/adapter.d.ts +0 -18
- package/dist/runtime/daimon/training/native/adapter.js +0 -252
- package/dist/runtime/daimon/training/native/adapter.js.map +0 -1
- package/dist/runtime/daimon/training/native/admission.d.ts +0 -7
- package/dist/runtime/daimon/training/native/admission.js +0 -52
- package/dist/runtime/daimon/training/native/admission.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/arguments.d.ts +0 -16
- package/dist/runtime/daimon/training/native/child/arguments.js +0 -70
- package/dist/runtime/daimon/training/native/child/arguments.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/deferred-trial.d.ts +0 -24
- package/dist/runtime/daimon/training/native/child/deferred-trial.js +0 -63
- package/dist/runtime/daimon/training/native/child/deferred-trial.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/diagnostics.d.ts +0 -58
- package/dist/runtime/daimon/training/native/child/diagnostics.js +0 -215
- package/dist/runtime/daimon/training/native/child/diagnostics.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/fixture.d.ts +0 -16
- package/dist/runtime/daimon/training/native/child/fixture.js +0 -159
- package/dist/runtime/daimon/training/native/child/fixture.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/grok.d.ts +0 -14
- package/dist/runtime/daimon/training/native/child/grok.js +0 -47
- package/dist/runtime/daimon/training/native/child/grok.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/index.d.ts +0 -7
- package/dist/runtime/daimon/training/native/child/index.js +0 -5
- package/dist/runtime/daimon/training/native/child/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/lifecycle.d.ts +0 -40
- package/dist/runtime/daimon/training/native/child/lifecycle.js +0 -400
- package/dist/runtime/daimon/training/native/child/lifecycle.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/probe.d.ts +0 -2
- package/dist/runtime/daimon/training/native/child/probe.js +0 -11
- package/dist/runtime/daimon/training/native/child/probe.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/sandbox.d.ts +0 -4
- package/dist/runtime/daimon/training/native/child/sandbox.js +0 -76
- package/dist/runtime/daimon/training/native/child/sandbox.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/types.d.ts +0 -15
- package/dist/runtime/daimon/training/native/child/types.js +0 -2
- package/dist/runtime/daimon/training/native/child/types.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/docker.d.ts +0 -29
- package/dist/runtime/daimon/training/native/container/docker.js +0 -105
- package/dist/runtime/daimon/training/native/container/docker.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/grok-slot.d.ts +0 -22
- package/dist/runtime/daimon/training/native/container/grok-slot.js +0 -38
- package/dist/runtime/daimon/training/native/container/grok-slot.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/index.d.ts +0 -6
- package/dist/runtime/daimon/training/native/container/index.js +0 -6
- package/dist/runtime/daimon/training/native/container/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/lifecycle.d.ts +0 -8
- package/dist/runtime/daimon/training/native/container/lifecycle.js +0 -111
- package/dist/runtime/daimon/training/native/container/lifecycle.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/manifest.d.ts +0 -17
- package/dist/runtime/daimon/training/native/container/manifest.js +0 -164
- package/dist/runtime/daimon/training/native/container/manifest.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/native-preflight.d.ts +0 -8
- package/dist/runtime/daimon/training/native/container/native-preflight.js +0 -40
- package/dist/runtime/daimon/training/native/container/native-preflight.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/preflight.d.ts +0 -15
- package/dist/runtime/daimon/training/native/container/preflight.js +0 -79
- package/dist/runtime/daimon/training/native/container/preflight.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/slot.d.ts +0 -4
- package/dist/runtime/daimon/training/native/container/slot.js +0 -58
- package/dist/runtime/daimon/training/native/container/slot.js.map +0 -1
- package/dist/runtime/daimon/training/native/external.d.ts +0 -37
- package/dist/runtime/daimon/training/native/external.js +0 -75
- package/dist/runtime/daimon/training/native/external.js.map +0 -1
- package/dist/runtime/daimon/training/native/grants/authority.d.ts +0 -36
- package/dist/runtime/daimon/training/native/grants/authority.js +0 -49
- package/dist/runtime/daimon/training/native/grants/authority.js.map +0 -1
- package/dist/runtime/daimon/training/native/grants/index.d.ts +0 -2
- package/dist/runtime/daimon/training/native/grants/index.js +0 -3
- package/dist/runtime/daimon/training/native/grants/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/grants/pins.d.ts +0 -30
- package/dist/runtime/daimon/training/native/grants/pins.js +0 -20
- package/dist/runtime/daimon/training/native/grants/pins.js.map +0 -1
- package/dist/runtime/daimon/training/native/grants/test-socket.d.ts +0 -6
- package/dist/runtime/daimon/training/native/grants/test-socket.js +0 -35
- package/dist/runtime/daimon/training/native/grants/test-socket.js.map +0 -1
- package/dist/runtime/daimon/training/native/grok-fixtures.d.ts +0 -34
- package/dist/runtime/daimon/training/native/grok-fixtures.js +0 -179
- package/dist/runtime/daimon/training/native/grok-fixtures.js.map +0 -1
- package/dist/runtime/daimon/training/native/index.d.ts +0 -38
- package/dist/runtime/daimon/training/native/index.js +0 -27
- package/dist/runtime/daimon/training/native/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/live-checkout.d.ts +0 -2
- package/dist/runtime/daimon/training/native/live-checkout.js +0 -15
- package/dist/runtime/daimon/training/native/live-checkout.js.map +0 -1
- package/dist/runtime/daimon/training/native/observations.d.ts +0 -51
- package/dist/runtime/daimon/training/native/observations.js +0 -217
- package/dist/runtime/daimon/training/native/observations.js.map +0 -1
- package/dist/runtime/daimon/training/native/outcome.d.ts +0 -13
- package/dist/runtime/daimon/training/native/outcome.js +0 -37
- package/dist/runtime/daimon/training/native/outcome.js.map +0 -1
- package/dist/runtime/daimon/training/native/preparation/engine-config.d.ts +0 -21
- package/dist/runtime/daimon/training/native/preparation/engine-config.js +0 -30
- package/dist/runtime/daimon/training/native/preparation/engine-config.js.map +0 -1
- package/dist/runtime/daimon/training/native/preparation/fixtures.d.ts +0 -17
- package/dist/runtime/daimon/training/native/preparation/fixtures.js +0 -52
- package/dist/runtime/daimon/training/native/preparation/fixtures.js.map +0 -1
- package/dist/runtime/daimon/training/native/preparation/index.d.ts +0 -7
- package/dist/runtime/daimon/training/native/preparation/index.js +0 -5
- package/dist/runtime/daimon/training/native/preparation/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/preparation/layout.d.ts +0 -66
- package/dist/runtime/daimon/training/native/preparation/layout.js +0 -87
- package/dist/runtime/daimon/training/native/preparation/layout.js.map +0 -1
- package/dist/runtime/daimon/training/native/preparation/subject.d.ts +0 -14
- package/dist/runtime/daimon/training/native/preparation/subject.js +0 -67
- package/dist/runtime/daimon/training/native/preparation/subject.js.map +0 -1
- package/dist/runtime/daimon/training/native/preparation/types.d.ts +0 -69
- package/dist/runtime/daimon/training/native/preparation/types.js +0 -2
- package/dist/runtime/daimon/training/native/preparation/types.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/artifacts.d.ts +0 -25
- package/dist/runtime/daimon/training/native/receipt/artifacts.js +0 -32
- package/dist/runtime/daimon/training/native/receipt/artifacts.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/grok-clocked-pins.d.ts +0 -129
- package/dist/runtime/daimon/training/native/receipt/grok-clocked-pins.js +0 -45
- package/dist/runtime/daimon/training/native/receipt/grok-clocked-pins.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/grok.d.ts +0 -246
- package/dist/runtime/daimon/training/native/receipt/grok.js +0 -195
- package/dist/runtime/daimon/training/native/receipt/grok.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/index.d.ts +0 -11
- package/dist/runtime/daimon/training/native/receipt/index.js +0 -8
- package/dist/runtime/daimon/training/native/receipt/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/paths.d.ts +0 -3
- package/dist/runtime/daimon/training/native/receipt/paths.js +0 -18
- package/dist/runtime/daimon/training/native/receipt/paths.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/sandbox.d.ts +0 -42
- package/dist/runtime/daimon/training/native/receipt/sandbox.js +0 -35
- package/dist/runtime/daimon/training/native/receipt/sandbox.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/schema.d.ts +0 -490
- package/dist/runtime/daimon/training/native/receipt/schema.js +0 -138
- package/dist/runtime/daimon/training/native/receipt/schema.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/subscription.d.ts +0 -13
- package/dist/runtime/daimon/training/native/receipt/subscription.js +0 -13
- package/dist/runtime/daimon/training/native/receipt/subscription.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/task-clock.d.ts +0 -19
- package/dist/runtime/daimon/training/native/receipt/task-clock.js +0 -49
- package/dist/runtime/daimon/training/native/receipt/task-clock.js.map +0 -1
- package/dist/runtime/daimon/training/native/sealed-usage.d.ts +0 -218
- package/dist/runtime/daimon/training/native/sealed-usage.js +0 -261
- package/dist/runtime/daimon/training/native/sealed-usage.js.map +0 -1
- package/dist/runtime/daimon/training/native/test-fixtures.d.ts +0 -27
- package/dist/runtime/daimon/training/native/test-fixtures.js +0 -162
- package/dist/runtime/daimon/training/native/test-fixtures.js.map +0 -1
- package/dist/runtime/daimon/training/native/transcript.d.ts +0 -96
- package/dist/runtime/daimon/training/native/transcript.js +0 -239
- package/dist/runtime/daimon/training/native/transcript.js.map +0 -1
- package/dist/runtime/daimon/training/native/transport/delivery.d.ts +0 -27
- package/dist/runtime/daimon/training/native/transport/delivery.js +0 -98
- package/dist/runtime/daimon/training/native/transport/delivery.js.map +0 -1
- package/dist/runtime/daimon/training/native/transport/http.d.ts +0 -3
- package/dist/runtime/daimon/training/native/transport/http.js +0 -81
- package/dist/runtime/daimon/training/native/transport/http.js.map +0 -1
- package/dist/runtime/daimon/training/native/transport/index.d.ts +0 -4
- package/dist/runtime/daimon/training/native/transport/index.js +0 -3
- package/dist/runtime/daimon/training/native/transport/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/transport/types.d.ts +0 -15
- package/dist/runtime/daimon/training/native/transport/types.js +0 -2
- package/dist/runtime/daimon/training/native/transport/types.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/cli.d.ts +0 -1
- package/dist/runtime/daimon/training/native/worker/cli.js +0 -17
- package/dist/runtime/daimon/training/native/worker/cli.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/control.d.ts +0 -20
- package/dist/runtime/daimon/training/native/worker/control.js +0 -266
- package/dist/runtime/daimon/training/native/worker/control.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/deliveries.d.ts +0 -38
- package/dist/runtime/daimon/training/native/worker/deliveries.js +0 -91
- package/dist/runtime/daimon/training/native/worker/deliveries.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/evidence/collect.d.ts +0 -54
- package/dist/runtime/daimon/training/native/worker/evidence/collect.js +0 -278
- package/dist/runtime/daimon/training/native/worker/evidence/collect.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/evidence/execution.d.ts +0 -102
- package/dist/runtime/daimon/training/native/worker/evidence/execution.js +0 -191
- package/dist/runtime/daimon/training/native/worker/evidence/execution.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/evidence/index.d.ts +0 -3
- package/dist/runtime/daimon/training/native/worker/evidence/index.js +0 -4
- package/dist/runtime/daimon/training/native/worker/evidence/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/evidence/io.d.ts +0 -20
- package/dist/runtime/daimon/training/native/worker/evidence/io.js +0 -130
- package/dist/runtime/daimon/training/native/worker/evidence/io.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/evidence/seal.d.ts +0 -3
- package/dist/runtime/daimon/training/native/worker/evidence/seal.js +0 -67
- package/dist/runtime/daimon/training/native/worker/evidence/seal.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/index.d.ts +0 -11
- package/dist/runtime/daimon/training/native/worker/index.js +0 -8
- package/dist/runtime/daimon/training/native/worker/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/profile.d.ts +0 -23
- package/dist/runtime/daimon/training/native/worker/profile.js +0 -149
- package/dist/runtime/daimon/training/native/worker/profile.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/public.d.ts +0 -53
- package/dist/runtime/daimon/training/native/worker/public.js +0 -22
- package/dist/runtime/daimon/training/native/worker/public.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/sandbox.d.ts +0 -4
- package/dist/runtime/daimon/training/native/worker/sandbox.js +0 -54
- package/dist/runtime/daimon/training/native/worker/sandbox.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/server.d.ts +0 -4
- package/dist/runtime/daimon/training/native/worker/server.js +0 -102
- package/dist/runtime/daimon/training/native/worker/server.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/types.d.ts +0 -318
- package/dist/runtime/daimon/training/native/worker/types.js +0 -2
- package/dist/runtime/daimon/training/native/worker/types.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/wake-delivery/index.d.ts +0 -4
- package/dist/runtime/daimon/training/native/worker/wake-delivery/index.js +0 -4
- package/dist/runtime/daimon/training/native/worker/wake-delivery/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/wake-delivery/source.d.ts +0 -3
- package/dist/runtime/daimon/training/native/worker/wake-delivery/source.js +0 -16
- package/dist/runtime/daimon/training/native/worker/wake-delivery/source.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/wake-delivery/terminal.d.ts +0 -4
- package/dist/runtime/daimon/training/native/worker/wake-delivery/terminal.js +0 -52
- package/dist/runtime/daimon/training/native/worker/wake-delivery/terminal.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/wake-delivery/transport.d.ts +0 -21
- package/dist/runtime/daimon/training/native/worker/wake-delivery/transport.js +0 -198
- package/dist/runtime/daimon/training/native/worker/wake-delivery/transport.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/wake-delivery/types.d.ts +0 -91
- package/dist/runtime/daimon/training/native/worker/wake-delivery/types.js +0 -2
- package/dist/runtime/daimon/training/native/worker/wake-delivery/types.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/worker.d.ts +0 -1
- package/dist/runtime/daimon/training/native/worker/worker.js +0 -105
- package/dist/runtime/daimon/training/native/worker/worker.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-broker/broker.d.ts +0 -20
- package/dist/runtime/daimon/training/providers/grok-broker/broker.js +0 -55
- package/dist/runtime/daimon/training/providers/grok-broker/broker.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-broker/grant-fixtures.d.ts +0 -15
- package/dist/runtime/daimon/training/providers/grok-broker/grant-fixtures.js +0 -29
- package/dist/runtime/daimon/training/providers/grok-broker/grant-fixtures.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-broker/grant-home.d.ts +0 -16
- package/dist/runtime/daimon/training/providers/grok-broker/grant-home.js +0 -60
- package/dist/runtime/daimon/training/providers/grok-broker/grant-home.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-broker/grant-pool.d.ts +0 -81
- package/dist/runtime/daimon/training/providers/grok-broker/grant-pool.js +0 -221
- package/dist/runtime/daimon/training/providers/grok-broker/grant-pool.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-broker/grant-releases.d.ts +0 -31
- package/dist/runtime/daimon/training/providers/grok-broker/grant-releases.js +0 -78
- package/dist/runtime/daimon/training/providers/grok-broker/grant-releases.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-broker/grants.d.ts +0 -63
- package/dist/runtime/daimon/training/providers/grok-broker/grants.js +0 -20
- package/dist/runtime/daimon/training/providers/grok-broker/grants.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-broker/index.d.ts +0 -3
- package/dist/runtime/daimon/training/providers/grok-broker/index.js +0 -4
- package/dist/runtime/daimon/training/providers/grok-broker/index.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-subscription/cli.d.ts +0 -21
- package/dist/runtime/daimon/training/providers/grok-subscription/cli.js +0 -81
- package/dist/runtime/daimon/training/providers/grok-subscription/cli.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-subscription/index.d.ts +0 -4
- package/dist/runtime/daimon/training/providers/grok-subscription/index.js +0 -5
- package/dist/runtime/daimon/training/providers/grok-subscription/index.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-subscription/protocol.d.ts +0 -26
- package/dist/runtime/daimon/training/providers/grok-subscription/protocol.js +0 -102
- package/dist/runtime/daimon/training/providers/grok-subscription/protocol.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-subscription/provider.d.ts +0 -9
- package/dist/runtime/daimon/training/providers/grok-subscription/provider.js +0 -38
- package/dist/runtime/daimon/training/providers/grok-subscription/provider.js.map +0 -1
- package/dist/runtime/daimon/training/public.d.ts +0 -6
- package/dist/runtime/daimon/training/public.js +0 -5
- package/dist/runtime/daimon/training/public.js.map +0 -1
- package/dist/runtime/daimon/training/services/account-lease.d.ts +0 -7
- package/dist/runtime/daimon/training/services/account-lease.js +0 -76
- package/dist/runtime/daimon/training/services/account-lease.js.map +0 -1
- package/dist/runtime/daimon/training/services/freshness.d.ts +0 -15
- package/dist/runtime/daimon/training/services/freshness.js +0 -19
- package/dist/runtime/daimon/training/services/freshness.js.map +0 -1
- package/dist/runtime/daimon/training/services/index.d.ts +0 -4
- package/dist/runtime/daimon/training/services/index.js +0 -4
- package/dist/runtime/daimon/training/services/index.js.map +0 -1
- package/dist/runtime/daimon/training/services/slot-freshness.d.ts +0 -34
- package/dist/runtime/daimon/training/services/slot-freshness.js +0 -178
- package/dist/runtime/daimon/training/services/slot-freshness.js.map +0 -1
- package/dist/runtime/daimon/wakeMoments.js.map +0 -1
- package/dist/runtime/pi/adapter.d.ts +0 -3
- package/dist/runtime/pi/adapter.js +0 -230
- package/dist/runtime/pi/appActivitySource.d.ts +0 -1
- package/dist/runtime/pi/appActivitySource.js +0 -199
- package/dist/runtime/pi/appAgentConfig.d.ts +0 -11
- package/dist/runtime/pi/appAgentConfig.js +0 -264
- package/dist/runtime/pi/appCliEnginesSource.d.ts +0 -1
- package/dist/runtime/pi/appCliEnginesSource.js +0 -183
- package/dist/runtime/pi/appCliSource.d.ts +0 -1
- package/dist/runtime/pi/appCliSource.js +0 -353
- package/dist/runtime/pi/appControlSource.d.ts +0 -1
- package/dist/runtime/pi/appControlSource.js +0 -390
- package/dist/runtime/pi/appControlWakeIdentitySource.d.ts +0 -1
- package/dist/runtime/pi/appControlWakeIdentitySource.js +0 -19
- package/dist/runtime/pi/appCoreSource.d.ts +0 -4
- package/dist/runtime/pi/appCoreSource.js +0 -244
- package/dist/runtime/pi/appPreludeSource.d.ts +0 -1
- package/dist/runtime/pi/appPreludeSource.js +0 -192
- package/dist/runtime/pi/appScheduleSource.d.ts +0 -1
- package/dist/runtime/pi/appScheduleSource.js +0 -84
- package/dist/runtime/pi/appScriptedEngine.d.ts +0 -31
- package/dist/runtime/pi/appScriptedEngine.js +0 -42
- package/dist/runtime/pi/appSource.d.ts +0 -4
- package/dist/runtime/pi/appSource.js +0 -12
- package/dist/runtime/pi/appTemplate.d.ts +0 -14
- package/dist/runtime/pi/appTemplate.js +0 -28
- package/dist/runtime/pi/appTemplateTypes.d.ts +0 -64
- package/dist/runtime/pi/appTemplateTypes.js +0 -18
- package/dist/runtime/pi/appWakeContextSource.d.ts +0 -1
- package/dist/runtime/pi/appWakeContextSource.js +0 -398
- package/dist/runtime/pi/containerTargets.d.ts +0 -4
- package/dist/runtime/pi/containerTargets.js +0 -63
- package/dist/runtime/pi/runAuth.d.ts +0 -2
- package/dist/runtime/pi/runAuth.js +0 -185
- package/dist/runtime/pi/testHelpers.d.ts +0 -2
- package/dist/shared/errors.js.map +0 -1
- package/dist/training/subjects/environment.d.ts +0 -2
- package/dist/training/subjects/environment.js +0 -14
- package/dist/training/subjects/environment.js.map +0 -1
|
@@ -1,390 +0,0 @@
|
|
|
1
|
-
import { renderPiControlWakeIdentitySource } from "./appControlWakeIdentitySource.js";
|
|
2
|
-
export const renderPiControlSource = () => String.raw `const rebuildAgentKeys = (agents) => {
|
|
3
|
-
const keys = new Map();
|
|
4
|
-
for (const agent of agents) {
|
|
5
|
-
const candidates = [
|
|
6
|
-
agent.config.id,
|
|
7
|
-
agent.config.name,
|
|
8
|
-
agent.config.slug,
|
|
9
|
-
typeof agent.config.id === "string" && agent.config.id.startsWith("agent:")
|
|
10
|
-
? agent.config.id.slice("agent:".length)
|
|
11
|
-
: ""
|
|
12
|
-
];
|
|
13
|
-
for (const candidate of candidates) {
|
|
14
|
-
if (typeof candidate === "string" && candidate.length > 0) {
|
|
15
|
-
keys.set(candidate, agent);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
return keys;
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
const formatControlEventId = (payload, fallbackPrefix) => {
|
|
23
|
-
if (typeof payload.event_id === "string" && payload.event_id.length > 0) {
|
|
24
|
-
return payload.event_id;
|
|
25
|
-
}
|
|
26
|
-
if (typeof payload.context_id === "string" && payload.context_id.length > 0) {
|
|
27
|
-
return payload.context_id + ":" + Date.now();
|
|
28
|
-
}
|
|
29
|
-
return fallbackPrefix + Date.now();
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
// B62 Option B (two wake endpoints split by authenticating authority):
|
|
33
|
-
// POST /spawnfile/agents/:slug/wake is the operator-only mutating endpoint
|
|
34
|
-
// gated by a bearer token below — the only mutating control endpoint gated
|
|
35
|
-
// today (see AGENTS.md / B62 for why the load/restart dev-reload endpoints
|
|
36
|
-
// stay out of this slice's scope). POST /agents/:slug/wake is the loopback
|
|
37
|
-
// Moltnet->Pi delivery endpoint (server.listen("127.0.0.1") below): it is
|
|
38
|
-
// NOT operator-only, is never gated by this token, and stamps a different
|
|
39
|
-
// principal (system:moltnet, never operator:control) — see the delivery
|
|
40
|
-
// handler further down. SPAWNFILE_PI_CONTROL_TOKEN is trusted env minted by
|
|
41
|
-
// the generator/harness (same trust shape as SPAWNFILE_PI_CONTROL_PORT and
|
|
42
|
-
// NOOPOLIS_RUN_ID, src/runtime/common.ts) — read only from process.env,
|
|
43
|
-
// NEVER from the request body, headers content, or model output. When the
|
|
44
|
-
// env var is unset there is "no operator configured": every operator wake
|
|
45
|
-
// request fails closed with 401, it is never treated as "auth disabled".
|
|
46
|
-
${renderPiControlWakeIdentitySource()}
|
|
47
|
-
const validateDeliveryMetadata = (payload) => {
|
|
48
|
-
if (
|
|
49
|
-
typeof payload.event_id !== "string" || payload.event_id.trim().length === 0 ||
|
|
50
|
-
typeof payload.from !== "string" || payload.from.trim().length === 0 ||
|
|
51
|
-
typeof payload.to !== "string" || payload.to.trim().length === 0 ||
|
|
52
|
-
typeof payload.context_id !== "string" || payload.context_id.trim().length === 0
|
|
53
|
-
) {
|
|
54
|
-
return null;
|
|
55
|
-
}
|
|
56
|
-
return {
|
|
57
|
-
eventId: payload.event_id,
|
|
58
|
-
sender: payload.from,
|
|
59
|
-
target: payload.to,
|
|
60
|
-
contextId: payload.context_id
|
|
61
|
-
};
|
|
62
|
-
};
|
|
63
|
-
const extractBearerToken = (request) => {
|
|
64
|
-
const header = request.headers && (request.headers.authorization ?? request.headers.Authorization);
|
|
65
|
-
if (typeof header !== "string") {
|
|
66
|
-
return "";
|
|
67
|
-
}
|
|
68
|
-
const match = /^Bearer\s+(.+)$/u.exec(header.trim());
|
|
69
|
-
return match ? match[1].trim() : "";
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Authorizes a mutating wake request against SPAWNFILE_PI_CONTROL_TOKEN.
|
|
74
|
-
* Fails closed (ok: false) on every path: no configured token, no bearer
|
|
75
|
-
* header, or a bearer value that does not match — there is no "auth
|
|
76
|
-
* disabled" state.
|
|
77
|
-
*/
|
|
78
|
-
const authorizeControlWake = (request) => {
|
|
79
|
-
const configuredToken = typeof process.env[CONTROL_TOKEN_ENV] === "string" ? process.env[CONTROL_TOKEN_ENV].trim() : "";
|
|
80
|
-
if (!configuredToken) {
|
|
81
|
-
return { ok: false, reason: "no operator token configured (" + CONTROL_TOKEN_ENV + " is unset)" };
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
const providedToken = extractBearerToken(request);
|
|
85
|
-
if (!providedToken) {
|
|
86
|
-
return { ok: false, reason: "missing bearer token" };
|
|
87
|
-
}
|
|
88
|
-
if (providedToken !== configuredToken) {
|
|
89
|
-
return { ok: false, reason: "invalid bearer token" };
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
return { ok: true };
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* B62 enforcement point #3 (specs/CAUSAL.md): stamps control.wake.denied
|
|
97
|
-
* for a rejected wake request via daimon's observability emitters. Never
|
|
98
|
-
* lets a telemetry write failure break the HTTP 401 response — this is
|
|
99
|
-
* best-effort like every other causal stamp in this generated app.
|
|
100
|
-
*/
|
|
101
|
-
const recordControlWakeDenied = async (reason, targetAgentId, runtimeHomePath, requestId) => {
|
|
102
|
-
try {
|
|
103
|
-
await emitControlWakeDenied({
|
|
104
|
-
operatorName: CONTROL_OPERATOR_NAME,
|
|
105
|
-
reason,
|
|
106
|
-
requestId,
|
|
107
|
-
runtimeHomePath,
|
|
108
|
-
targetAgentId
|
|
109
|
-
});
|
|
110
|
-
} catch (error) {
|
|
111
|
-
console.error("[pi] failed to record control.wake.denied: " + (error instanceof Error ? error.message : String(error)));
|
|
112
|
-
}
|
|
113
|
-
};
|
|
114
|
-
|
|
115
|
-
/** B62 enforcement point #3, operator path: stamps control.wake.accepted (principal operator:control) for an authorized, executed wake. */
|
|
116
|
-
const recordControlWakeAccepted = async (targetAgentId, wakeKind, runtimeHomePath, requestId, causeEventIds) => {
|
|
117
|
-
try {
|
|
118
|
-
await emitControlWakeAccepted({
|
|
119
|
-
causeEventIds,
|
|
120
|
-
operatorName: CONTROL_OPERATOR_NAME,
|
|
121
|
-
requestId,
|
|
122
|
-
runtimeHomePath,
|
|
123
|
-
targetAgentId,
|
|
124
|
-
wakeKind
|
|
125
|
-
});
|
|
126
|
-
} catch (error) {
|
|
127
|
-
console.error("[pi] failed to record control.wake.accepted: " + (error instanceof Error ? error.message : String(error)));
|
|
128
|
-
}
|
|
129
|
-
};
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* B62 enforcement point #3, Moltnet delivery path (Option B): stamps
|
|
133
|
-
* control.wake.accepted for a tokenless delivery wake via daimon's
|
|
134
|
-
* emitDeliveryWakeAccepted, which always stamps principal_id "system:moltnet"
|
|
135
|
-
* — the delivering authority itself — NEVER operator:control, and NEVER a
|
|
136
|
-
* value read from the request body's "from"/agent field. This is the
|
|
137
|
-
* attribution that distinguishes a real inter-agent delivery from an
|
|
138
|
-
* operator-issued wake without needing a second bearer token.
|
|
139
|
-
*/
|
|
140
|
-
const recordDeliveryWakeAccepted = async (targetAgentId, wakeKind, runtimeHomePath, requestId, causeEventIds) => {
|
|
141
|
-
try {
|
|
142
|
-
await emitDeliveryWakeAccepted({
|
|
143
|
-
causeEventIds,
|
|
144
|
-
requestId,
|
|
145
|
-
runtimeHomePath,
|
|
146
|
-
targetAgentId,
|
|
147
|
-
wakeKind
|
|
148
|
-
});
|
|
149
|
-
} catch (error) {
|
|
150
|
-
console.error("[pi] failed to record delivery control.wake.accepted: " + (error instanceof Error ? error.message : String(error)));
|
|
151
|
-
}
|
|
152
|
-
};
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* Shared wake-execution core for both /agents/:slug/wake (delivery) and
|
|
156
|
-
* /spawnfile/agents/:slug/wake (operator): reads the request body, runs
|
|
157
|
-
* the agent's wake, and returns the response shape both endpoints send.
|
|
158
|
-
* A blank/missing message is treated as a no-op (matches pre-B62 behavior)
|
|
159
|
-
* and is reported as executed: false so callers skip the causal stamp for
|
|
160
|
-
* it, exactly like the original single-endpoint handler did. Auth and
|
|
161
|
-
* attribution (which principal to stamp) are the caller's responsibility —
|
|
162
|
-
* this helper has no knowledge of either.
|
|
163
|
-
*/
|
|
164
|
-
const executeAgentWake = async (agent, payload, requireDeliveryMetadata, agentsByKey) => {
|
|
165
|
-
const deliveryMetadata = requireDeliveryMetadata ? validateDeliveryMetadata(payload) : null;
|
|
166
|
-
if (requireDeliveryMetadata && !deliveryMetadata) {
|
|
167
|
-
throw new Error(DELIVERY_METADATA_INVALID_ERROR);
|
|
168
|
-
}
|
|
169
|
-
const deliveryTarget = requireDeliveryMetadata ? agentsByKey.get(deliveryMetadata.target) : null;
|
|
170
|
-
if (requireDeliveryMetadata && deliveryTarget !== agent) {
|
|
171
|
-
throw new Error(DELIVERY_METADATA_INVALID_ERROR);
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
const eventId = requireDeliveryMetadata ? deliveryMetadata.eventId : formatControlEventId(payload, "message-");
|
|
175
|
-
if (typeof payload.message !== "string" || payload.message.trim().length === 0) {
|
|
176
|
-
return { eventId: undefined, executed: false, from: agent.config.id, message: "", wakeKind: undefined };
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
const wakeKind = normalizeWakeKind(typeof payload.wake_kind === "string" ? payload.wake_kind : payload.kind);
|
|
180
|
-
const message = await agent.wake({
|
|
181
|
-
id: eventId,
|
|
182
|
-
kind: wakeKind,
|
|
183
|
-
...(deliveryMetadata
|
|
184
|
-
? {
|
|
185
|
-
delivery: {
|
|
186
|
-
eventId: deliveryMetadata.eventId,
|
|
187
|
-
sender: deliveryMetadata.sender,
|
|
188
|
-
target: agent.config.id,
|
|
189
|
-
contextId: deliveryMetadata.contextId
|
|
190
|
-
},
|
|
191
|
-
transportText: typeof payload.transport_text === "string"
|
|
192
|
-
? payload.transport_text
|
|
193
|
-
: payload.message
|
|
194
|
-
}
|
|
195
|
-
: undefined),
|
|
196
|
-
from: typeof payload.from === "string" ? payload.from : "moltnet",
|
|
197
|
-
context: payload.context && typeof payload.context === "object" ? payload.context : undefined,
|
|
198
|
-
context_id: typeof payload.context_id === "string" ? payload.context_id : undefined,
|
|
199
|
-
text: typeof payload.message === "string" ? payload.message : ""
|
|
200
|
-
});
|
|
201
|
-
|
|
202
|
-
return { eventId, executed: true, from: agent.config.id, message, wakeKind };
|
|
203
|
-
};
|
|
204
|
-
|
|
205
|
-
const loadManagedAgent = async (agents, configPath, slug, instanceRoot, services) => {
|
|
206
|
-
const config = await readJson(configPath);
|
|
207
|
-
const agentConfig = (config.agents ?? []).find((agent) => agent.slug === slug || agent.id === slug || agent.name === slug);
|
|
208
|
-
if (!agentConfig) {
|
|
209
|
-
throw new Error("unknown agent " + slug);
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
const oldIndex = agents.findIndex((agent) => agent.config.slug === agentConfig.slug || agent.config.id === agentConfig.id || agent.config.name === agentConfig.name);
|
|
213
|
-
if (oldIndex >= 0) {
|
|
214
|
-
agents[oldIndex].stop();
|
|
215
|
-
agents.splice(oldIndex, 1);
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
const managed = new PiManagedAgent(agentConfig, {
|
|
219
|
-
runtimeHomePath: path.join(instanceRoot, "runtime", "agents", agentConfig.slug),
|
|
220
|
-
homePath: path.join(instanceRoot, "home"),
|
|
221
|
-
workspacePath: path.join(instanceRoot, "workspace", "agents", agentConfig.slug)
|
|
222
|
-
}, services);
|
|
223
|
-
await managed.start();
|
|
224
|
-
agents.push(managed);
|
|
225
|
-
return managed;
|
|
226
|
-
};
|
|
227
|
-
|
|
228
|
-
const startControlServer = async (agents, portValue, configPath, instanceRoot, services) => {
|
|
229
|
-
if (!portValue) {
|
|
230
|
-
return null;
|
|
231
|
-
}
|
|
232
|
-
const port = Number(portValue);
|
|
233
|
-
if (!Number.isInteger(port) || port <= 0 || port > 65535) {
|
|
234
|
-
throw new Error("Invalid SPAWNFILE_PI_CONTROL_PORT: " + portValue);
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
let agentsByKey = rebuildAgentKeys(agents);
|
|
238
|
-
|
|
239
|
-
const server = createServer(async (request, response) => {
|
|
240
|
-
const url = new URL(request.url ?? "/", "http://127.0.0.1");
|
|
241
|
-
|
|
242
|
-
if (request.method === "GET" && url.pathname === "/healthz") {
|
|
243
|
-
sendJson(response, 200, { status: "ok" });
|
|
244
|
-
return;
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
if (request.method === "GET" && url.pathname === "/spawnfile/agents") {
|
|
248
|
-
sendJson(response, 200, {
|
|
249
|
-
agents: agents.map((agent) => ({
|
|
250
|
-
id: agent.config.id,
|
|
251
|
-
name: agent.config.name,
|
|
252
|
-
slug: agent.config.slug
|
|
253
|
-
}))
|
|
254
|
-
});
|
|
255
|
-
return;
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
if (request.method === "GET" && url.pathname === "/spawnfile/activity") {
|
|
259
|
-
sendJson(response, 200, { events: services.activity.list(url.searchParams.get("agent"), url.searchParams.get("tail")) });
|
|
260
|
-
return;
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
if (request.method === "GET" && url.pathname === "/spawnfile/activity/stream") {
|
|
264
|
-
services.activity.stream(request, response, url.searchParams.get("agent"), url.searchParams.get("tail"));
|
|
265
|
-
return;
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
const activityMatch = /^\/spawnfile\/agents\/([^/]+)\/activity(\/stream)?$/u.exec(url.pathname);
|
|
269
|
-
if (request.method === "GET" && activityMatch) {
|
|
270
|
-
const agentFilter = decodeURIComponent(activityMatch[1]);
|
|
271
|
-
if (activityMatch[2]) {
|
|
272
|
-
services.activity.stream(request, response, agentFilter, url.searchParams.get("tail"));
|
|
273
|
-
} else {
|
|
274
|
-
sendJson(response, 200, { events: services.activity.list(agentFilter, url.searchParams.get("tail")) });
|
|
275
|
-
}
|
|
276
|
-
return;
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
if (request.method === "POST" && (url.pathname === "/spawnfile/agents/load" || url.pathname === "/spawnfile/agents/restart")) {
|
|
280
|
-
try {
|
|
281
|
-
const payload = await readRequestJson(request);
|
|
282
|
-
const slug = typeof payload.slug === "string"
|
|
283
|
-
? payload.slug
|
|
284
|
-
: typeof payload.agent === "string"
|
|
285
|
-
? payload.agent
|
|
286
|
-
: "";
|
|
287
|
-
const agent = await loadManagedAgent(agents, configPath, slug, instanceRoot, services);
|
|
288
|
-
agentsByKey = rebuildAgentKeys(agents);
|
|
289
|
-
sendJson(response, 200, { id: agent.config.id, loaded: true, name: agent.config.name, slug: agent.config.slug });
|
|
290
|
-
} catch (error) {
|
|
291
|
-
sendJson(response, 400, { error: error instanceof Error ? error.message : String(error) });
|
|
292
|
-
}
|
|
293
|
-
return;
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
// B62 Option B, operator path: fail-closed on SPAWNFILE_PI_CONTROL_TOKEN,
|
|
297
|
-
// stamps operator:control via emitControlWakeAccepted/Denied. This is the
|
|
298
|
-
// ONLY wake path gated by a bearer token.
|
|
299
|
-
const operatorWakeMatch = /^\/spawnfile\/agents\/([^/]+)\/wake$/u.exec(url.pathname);
|
|
300
|
-
if (request.method === "POST" && operatorWakeMatch) {
|
|
301
|
-
const key = decodeURIComponent(operatorWakeMatch[1]);
|
|
302
|
-
const requestId = controlWakeRequestId(key);
|
|
303
|
-
|
|
304
|
-
const authResult = authorizeControlWake(request);
|
|
305
|
-
if (!authResult.ok) {
|
|
306
|
-
const knownAgent = agentsByKey.get(key);
|
|
307
|
-
const deniedRuntimeHomePath = knownAgent
|
|
308
|
-
? knownAgent.paths.runtimeHomePath
|
|
309
|
-
: path.join(instanceRoot, "runtime", "control");
|
|
310
|
-
await recordControlWakeDenied(authResult.reason, key, deniedRuntimeHomePath, requestId);
|
|
311
|
-
sendJson(response, 401, { error: authResult.reason });
|
|
312
|
-
return;
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
const agent = agentsByKey.get(key);
|
|
316
|
-
if (!agent) {
|
|
317
|
-
sendJson(response, 404, { error: "unknown agent " + key });
|
|
318
|
-
return;
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
try {
|
|
322
|
-
const payload = await readRequestJson(request);
|
|
323
|
-
const result = await executeAgentWake(agent, payload);
|
|
324
|
-
if (result.executed) {
|
|
325
|
-
await recordControlWakeAccepted(
|
|
326
|
-
key,
|
|
327
|
-
result.wakeKind,
|
|
328
|
-
agent.paths.runtimeHomePath,
|
|
329
|
-
requestId,
|
|
330
|
-
causeEventIdsForWake(result.wakeKind, result.eventId)
|
|
331
|
-
);
|
|
332
|
-
}
|
|
333
|
-
sendJson(response, 200, { from: result.from, message: result.message });
|
|
334
|
-
} catch (error) {
|
|
335
|
-
sendJson(response, 400, { error: error instanceof Error ? error.message : String(error) });
|
|
336
|
-
}
|
|
337
|
-
return;
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
// B62 Option B, Moltnet delivery path: the loopback (127.0.0.1) endpoint
|
|
341
|
-
// the Moltnet->Pi bridge POSTs normal inter-agent deliveries to. NOT
|
|
342
|
-
// operator-only, NEVER gated by SPAWNFILE_PI_CONTROL_TOKEN (sender
|
|
343
|
-
// authority is already enforced moltnet-side before a message reaches
|
|
344
|
-
// here), and stamps principal_id "system:moltnet" via
|
|
345
|
-
// recordDeliveryWakeAccepted — NEVER operator:control, and NEVER read
|
|
346
|
-
// from the request body's "from"/agent field.
|
|
347
|
-
const deliveryWakeMatch = /^\/agents\/([^/]+)\/wake$/u.exec(url.pathname);
|
|
348
|
-
if (request.method !== "POST" || !deliveryWakeMatch) {
|
|
349
|
-
sendJson(response, 404, { error: "not found" });
|
|
350
|
-
return;
|
|
351
|
-
}
|
|
352
|
-
|
|
353
|
-
const deliveryKey = decodeURIComponent(deliveryWakeMatch[1]);
|
|
354
|
-
const deliveryRequestId = controlWakeRequestId(deliveryKey);
|
|
355
|
-
|
|
356
|
-
const deliveryAgent = agentsByKey.get(deliveryKey);
|
|
357
|
-
if (!deliveryAgent) {
|
|
358
|
-
sendJson(response, 404, { error: "unknown agent " + deliveryKey });
|
|
359
|
-
return;
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
try {
|
|
363
|
-
const payload = await readRequestJson(request);
|
|
364
|
-
const result = await executeAgentWake(deliveryAgent, payload, true, agentsByKey);
|
|
365
|
-
if (result.executed) {
|
|
366
|
-
await recordDeliveryWakeAccepted(
|
|
367
|
-
deliveryKey,
|
|
368
|
-
result.wakeKind,
|
|
369
|
-
deliveryAgent.paths.runtimeHomePath,
|
|
370
|
-
deliveryRequestId,
|
|
371
|
-
causeEventIdsForWake(result.wakeKind, result.eventId)
|
|
372
|
-
);
|
|
373
|
-
}
|
|
374
|
-
sendJson(response, 200, { from: result.from, message: result.message });
|
|
375
|
-
} catch (error) {
|
|
376
|
-
sendJson(response, 400, { error: error instanceof Error ? error.message : String(error) });
|
|
377
|
-
}
|
|
378
|
-
});
|
|
379
|
-
|
|
380
|
-
await new Promise((resolve, reject) => {
|
|
381
|
-
server.once("error", reject);
|
|
382
|
-
server.listen(port, "127.0.0.1", () => {
|
|
383
|
-
server.off("error", reject);
|
|
384
|
-
resolve();
|
|
385
|
-
});
|
|
386
|
-
});
|
|
387
|
-
console.log("[pi] control listening on 127.0.0.1:" + port);
|
|
388
|
-
return server;
|
|
389
|
-
};
|
|
390
|
-
`;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const renderPiControlWakeIdentitySource: () => string;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export const renderPiControlWakeIdentitySource = () => String.raw `const CONTROL_TOKEN_ENV = "SPAWNFILE_PI_CONTROL_TOKEN";
|
|
2
|
-
const DELIVERY_METADATA_INVALID_ERROR = "invalid delivery metadata";
|
|
3
|
-
// The authenticated principal stamped on control.wake.accepted/denied
|
|
4
|
-
// events for this endpoint (operator:control, specs/CAUSAL.md §3). Root
|
|
5
|
-
// has exactly one operator-control bearer token today, so one static
|
|
6
|
-
// operator identity is enough; a future multi-operator token scheme would
|
|
7
|
-
// resolve this from the verified token instead.
|
|
8
|
-
const CONTROL_OPERATOR_NAME = "control";
|
|
9
|
-
|
|
10
|
-
const controlWakeRequestId = (targetAgentId) =>
|
|
11
|
-
"wake-" + targetAgentId + "-" + Date.now() + "-" + Math.random().toString(16).slice(2);
|
|
12
|
-
|
|
13
|
-
// control.wake.accepted should chain to the real inbound moltnet event only
|
|
14
|
-
// for message-triggered wakes (the WakeEvent id moltnet's bridge stamped,
|
|
15
|
-
// see formatControlEventId above); schedule/dream-kind wakes legitimately
|
|
16
|
-
// have no moltnet cause and stay [].
|
|
17
|
-
const causeEventIdsForWake = (wakeKind, eventId) =>
|
|
18
|
-
wakeKind === "message" && typeof eventId === "string" && eventId.length > 0 ? [eventId] : [];
|
|
19
|
-
`;
|
|
@@ -1,244 +0,0 @@
|
|
|
1
|
-
import { renderPiControlSource } from "./appControlSource.js";
|
|
2
|
-
import { renderPiWakeContextSource } from "./appWakeContextSource.js";
|
|
3
|
-
export const renderPiCoreSource = (options = {}) => String.raw `const createConfigModel = (agentConfig) => ({
|
|
4
|
-
provider: typeof agentConfig?.model?.provider === "string" ? agentConfig.model.provider : "openai-codex",
|
|
5
|
-
name: typeof agentConfig?.model?.name === "string" ? agentConfig.model.name : "gpt-5.4-mini"
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
const normalizeWakeKind = (value) => {
|
|
9
|
-
return value === "manual" || value === "message" || value === "schedule" || value === "dream"
|
|
10
|
-
? value
|
|
11
|
-
: "message";
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
${renderPiWakeContextSource()}
|
|
15
|
-
|
|
16
|
-
${renderPiControlSource()}
|
|
17
|
-
|
|
18
|
-
class PiManagedAgent {
|
|
19
|
-
constructor(config, paths, services) {
|
|
20
|
-
this.config = config;
|
|
21
|
-
this.paths = paths;
|
|
22
|
-
this.services = services;
|
|
23
|
-
this.engine = normalizeAgentEngineKind(config);
|
|
24
|
-
this.adapter = this.engine === "pi"
|
|
25
|
-
? new PiHarnessAdapter({
|
|
26
|
-
authPath: path.join(paths.homePath, ".pi", "agent", "auth.json"),
|
|
27
|
-
modelsPath: path.join(paths.homePath, ".pi", "agent", "models.json"),
|
|
28
|
-
model: createConfigModel(config),
|
|
29
|
-
memory: createMemoryRuntimeOptions(config),
|
|
30
|
-
rawTrainingCapture: config.raw_training_capture,
|
|
31
|
-
thinkingLevel: config.thinking_level${options.world ? ",\n world: config.world" : ""}
|
|
32
|
-
})
|
|
33
|
-
: null;
|
|
34
|
-
this.running = false;
|
|
35
|
-
this.queued = [];
|
|
36
|
-
}
|
|
37
|
-
async start() {
|
|
38
|
-
if (this.engine === "pi") {
|
|
39
|
-
this.handle = await this.adapter.startAgent({
|
|
40
|
-
id: this.config.id,
|
|
41
|
-
name: this.config.name,
|
|
42
|
-
instructions: createAgentInstructions(this.config, this.paths.workspacePath),
|
|
43
|
-
runtimeHomePath: this.paths.runtimeHomePath,
|
|
44
|
-
tools: this.config.tools,
|
|
45
|
-
workspacePath: this.paths.workspacePath
|
|
46
|
-
});
|
|
47
|
-
} else {
|
|
48
|
-
this.handle = new CliEngineAgentHandle(this.config, this.paths);
|
|
49
|
-
}
|
|
50
|
-
this.publish("agent.loaded", { engine: this.engine });
|
|
51
|
-
}
|
|
52
|
-
listDreamEnvironmentKeys() {
|
|
53
|
-
return listDreamEnvironmentKeys(this.paths.workspacePath);
|
|
54
|
-
}
|
|
55
|
-
publish(type, fields = {}) {
|
|
56
|
-
this.services.activity?.publish({
|
|
57
|
-
type,
|
|
58
|
-
agent_id: this.config.id,
|
|
59
|
-
agent_name: this.config.name,
|
|
60
|
-
agent_slug: this.config.slug,
|
|
61
|
-
engine: this.engine,
|
|
62
|
-
...fields
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
async wake(event) {
|
|
66
|
-
const enriched = await enrichWakeContext(this.paths.workspacePath, event);
|
|
67
|
-
const messageFrom = asStringOrUndefined(enriched.messageFrom);
|
|
68
|
-
const isRoomWake = enriched.isRoomWake;
|
|
69
|
-
const deliveryFrom = asStringOrUndefined(event.delivery?.sender);
|
|
70
|
-
const from = deliveryFrom ?? (isRoomWake
|
|
71
|
-
? "moltnet"
|
|
72
|
-
: (asStringOrUndefined(enriched.eventFrom) ?? messageFrom ?? "moltnet"));
|
|
73
|
-
const kind = normalizeWakeKind(event.kind);
|
|
74
|
-
const rawText = typeof event.text === "string" ? event.text : "";
|
|
75
|
-
const resolvedContext = enriched.context;
|
|
76
|
-
const context = asObject(resolvedContext) ? {
|
|
77
|
-
...resolvedContext,
|
|
78
|
-
activeEnvironment: enriched.activeEnvironment,
|
|
79
|
-
active_environment: enriched.activeEnvironment
|
|
80
|
-
} : enriched.context;
|
|
81
|
-
const promptFrom = isRoomWake ? messageFrom : from;
|
|
82
|
-
const contextualText = kind === "message" || kind === "manual"
|
|
83
|
-
? controlEventText({ ...event, message: rawText, from: promptFrom, activeEnvironment: enriched.activeEnvironment })
|
|
84
|
-
: [
|
|
85
|
-
rawText,
|
|
86
|
-
...formatActiveEnvironmentBlock(enriched.activeEnvironment)
|
|
87
|
-
].filter((line) => line.trim().length > 0).join("\n\n");
|
|
88
|
-
|
|
89
|
-
const enrichedEvent = {
|
|
90
|
-
...event,
|
|
91
|
-
context,
|
|
92
|
-
from,
|
|
93
|
-
text: contextualText,
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
return new Promise((resolve, reject) => {
|
|
97
|
-
this.queued.push({ event: enrichedEvent, reject, resolve });
|
|
98
|
-
this.publish("agent.wake.queued", {
|
|
99
|
-
queue_length: this.queued.length,
|
|
100
|
-
wake_id: event.id,
|
|
101
|
-
wake_kind: kind
|
|
102
|
-
});
|
|
103
|
-
void this.drainQueue();
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
async drainQueue() {
|
|
107
|
-
if (this.running) {
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
this.running = true;
|
|
112
|
-
try {
|
|
113
|
-
while (this.queued.length > 0) {
|
|
114
|
-
const next = this.queued.shift();
|
|
115
|
-
try {
|
|
116
|
-
next.resolve(await this.runWake(next.event));
|
|
117
|
-
} catch (error) {
|
|
118
|
-
next.reject(error);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
} finally {
|
|
122
|
-
this.running = false;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
async runWake(event) {
|
|
126
|
-
const startedAt = Date.now();
|
|
127
|
-
this.publish("agent.turn.started", {
|
|
128
|
-
wake_id: event.id,
|
|
129
|
-
wake_kind: event.kind
|
|
130
|
-
});
|
|
131
|
-
try {
|
|
132
|
-
const result = await this.handle.wake({
|
|
133
|
-
context: event.context,
|
|
134
|
-
context_id: event.context_id,
|
|
135
|
-
delivery: event.delivery,
|
|
136
|
-
id: event.id,
|
|
137
|
-
kind: event.kind,
|
|
138
|
-
from: event.from,
|
|
139
|
-
text: event.text,
|
|
140
|
-
transportText: event.transportText
|
|
141
|
-
});
|
|
142
|
-
const finalText = typeof result.text === "string" ? result.text.trim() : "";
|
|
143
|
-
console.log("[pi:" + this.config.id + "] " + finalText);
|
|
144
|
-
if (finalText.length > 0) {
|
|
145
|
-
this.publish("agent.output.completed", {
|
|
146
|
-
text: finalText,
|
|
147
|
-
wake_id: event.id,
|
|
148
|
-
wake_kind: event.kind
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
this.publish("agent.turn.completed", {
|
|
152
|
-
duration_ms: result.durationMs ?? (Date.now() - startedAt),
|
|
153
|
-
output_length: finalText.length,
|
|
154
|
-
trace_path: turnTracePath(this.paths, event.id),
|
|
155
|
-
wake_id: event.id,
|
|
156
|
-
wake_kind: event.kind
|
|
157
|
-
});
|
|
158
|
-
return finalText;
|
|
159
|
-
} catch (error) {
|
|
160
|
-
console.error("[pi:" + this.config.id + "] failed " + event.id + ": " + (error instanceof Error ? error.message : String(error)));
|
|
161
|
-
this.publish("agent.turn.failed", {
|
|
162
|
-
duration_ms: Date.now() - startedAt,
|
|
163
|
-
error: formatActivityError(error),
|
|
164
|
-
trace_path: turnTracePath(this.paths, event.id),
|
|
165
|
-
wake_id: event.id,
|
|
166
|
-
wake_kind: event.kind
|
|
167
|
-
});
|
|
168
|
-
throw error;
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
stop() {
|
|
172
|
-
this.handle?.stop();
|
|
173
|
-
this.publish("agent.stopped");
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
const main = async () => {
|
|
178
|
-
const configPath = process.argv[2];
|
|
179
|
-
if (!configPath) {
|
|
180
|
-
throw new Error("Usage: node app.mjs <pi-app.json>");
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
const config = await readJson(configPath);
|
|
184
|
-
const instanceRoot = path.resolve(path.dirname(configPath), "..");
|
|
185
|
-
const activityLogPath = path.join(instanceRoot, "runtime", "activity.ndjson");
|
|
186
|
-
await mkdir(path.dirname(activityLogPath), { recursive: true });
|
|
187
|
-
const activity = createActivityBroker({ logPath: activityLogPath });
|
|
188
|
-
const services = { activity };
|
|
189
|
-
const agents = [];
|
|
190
|
-
|
|
191
|
-
for (const agentConfig of config.agents ?? []) {
|
|
192
|
-
const managed = new PiManagedAgent(
|
|
193
|
-
agentConfig,
|
|
194
|
-
{
|
|
195
|
-
runtimeHomePath: path.join(instanceRoot, "runtime", "agents", agentConfig.slug),
|
|
196
|
-
homePath: path.join(instanceRoot, "home"),
|
|
197
|
-
workspacePath: path.join(instanceRoot, "workspace", "agents", agentConfig.slug)
|
|
198
|
-
},
|
|
199
|
-
services
|
|
200
|
-
);
|
|
201
|
-
await managed.start();
|
|
202
|
-
agents.push(managed);
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
const timers = [];
|
|
206
|
-
const runOnce = process.env.SPAWNFILE_PI_RUN_ONCE === "1";
|
|
207
|
-
const controlServer = runOnce
|
|
208
|
-
? null
|
|
209
|
-
: await startControlServer(agents, process.env.SPAWNFILE_PI_CONTROL_PORT, configPath, instanceRoot, services);
|
|
210
|
-
|
|
211
|
-
const scheduledCount = await installAgentSchedules(agents, timers, runOnce);
|
|
212
|
-
|
|
213
|
-
if (runOnce) {
|
|
214
|
-
if (scheduledCount === 0) {
|
|
215
|
-
console.log("[pi] no schedules to run");
|
|
216
|
-
}
|
|
217
|
-
for (const agent of agents) {
|
|
218
|
-
agent.stop();
|
|
219
|
-
}
|
|
220
|
-
return;
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
console.log("[pi] started " + agents.length + " agents");
|
|
224
|
-
const shutdown = () => {
|
|
225
|
-
for (const timer of timers) {
|
|
226
|
-
clearInterval(timer);
|
|
227
|
-
}
|
|
228
|
-
for (const agent of agents) {
|
|
229
|
-
agent.stop();
|
|
230
|
-
}
|
|
231
|
-
controlServer?.close(() => process.exit(0));
|
|
232
|
-
if (!controlServer) {
|
|
233
|
-
process.exit(0);
|
|
234
|
-
}
|
|
235
|
-
};
|
|
236
|
-
process.on("SIGINT", shutdown);
|
|
237
|
-
process.on("SIGTERM", shutdown);
|
|
238
|
-
};
|
|
239
|
-
|
|
240
|
-
main().catch((error) => {
|
|
241
|
-
console.error(error instanceof Error ? error.stack ?? error.message : String(error));
|
|
242
|
-
process.exit(1);
|
|
243
|
-
});
|
|
244
|
-
`;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const renderPiPreludeSource: () => string;
|