spawnfile 0.1.33 → 0.1.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/auth/trainingAuth.d.ts +2 -5
- package/dist/cli/devCommands.d.ts +1 -1
- package/dist/cli/devCommands.js +0 -66
- package/dist/cli/runCli.d.ts +1 -4
- package/dist/cli/runCli.js +2 -2
- package/dist/cli/trainCommand.js +9 -15
- package/dist/cli/trainingBooted.d.ts +7 -0
- package/dist/cli/trainingBooted.js +41 -0
- package/dist/cli/trainingExecution.d.ts +4 -7
- package/dist/cli/trainingExecution.js +4 -32
- package/dist/compiler/containerArtifacts.js +0 -5
- package/dist/compiler/containerBackedMountRender.js +5 -1
- package/dist/compiler/containerDaimonBrokerRender.d.ts +5 -50
- package/dist/compiler/containerDaimonBrokerRender.js +7 -88
- package/dist/compiler/containerDaimonGatewayRender.d.ts +50 -0
- package/dist/compiler/containerDaimonGatewayRender.js +157 -0
- package/dist/compiler/containerDaimonGrokWorkerProvisioning.d.ts +2 -10
- package/dist/compiler/containerDaimonGrokWorkerProvisioning.js +13 -25
- package/dist/compiler/containerDaimonGrokWorkerRender.d.ts +11 -49
- package/dist/compiler/containerDaimonGrokWorkerRender.js +15 -39
- package/dist/compiler/containerDaimonStartupSupervision.d.ts +8 -0
- package/dist/compiler/containerDaimonStartupSupervision.js +39 -0
- package/dist/compiler/containerDaimonUidEntrypointRender.d.ts +1 -2
- package/dist/compiler/containerDaimonUidEntrypointRender.js +26 -46
- package/dist/compiler/containerRuntimeReadinessRender.js +1 -1
- package/dist/compiler/memoryArtifacts.js +0 -1
- package/dist/compiler/moltnetArtifacts.js +1 -17
- package/dist/compiler/moltnetClientConfig.js +1 -1
- package/dist/compiler/moltnetRuntimeConfig.js +0 -10
- package/dist/compiler/runProject.d.ts +1 -0
- package/dist/compiler/runProject.js +9 -3
- package/dist/compiler/runProjectAuth.js +2 -17
- package/dist/compiler/training/contract.d.ts +0 -2
- package/dist/compiler/training/contract.js +0 -2
- package/dist/compiler/training/execution.d.ts +1 -128
- package/dist/compiler/training/execution.js +7 -68
- package/dist/compiler/training/index.d.ts +0 -8
- package/dist/compiler/training/index.js +0 -7
- package/dist/compiler/training/output.d.ts +1 -0
- package/dist/compiler/training/output.js +1 -1
- package/dist/compiler/training/trial/boot.d.ts +53 -0
- package/dist/compiler/training/trial/boot.js +147 -0
- package/dist/compiler/training/trial/docker.d.ts +8 -0
- package/dist/compiler/training/trial/docker.js +22 -0
- package/dist/compiler/training/trial/gateway.d.ts +42 -0
- package/dist/compiler/training/trial/gateway.js +98 -0
- package/dist/compiler/training/trial/index.d.ts +4 -0
- package/dist/compiler/training/trial/index.js +4 -0
- package/dist/compiler/training/trial/launcher.d.ts +32 -0
- package/dist/compiler/training/trial/launcher.js +49 -0
- package/dist/compiler/training/trial/project.d.ts +11 -0
- package/dist/compiler/training/trial/project.js +31 -0
- package/dist/compiler/upReceipt.d.ts +2 -17
- package/dist/compiler/upReceipt.js +2 -17
- package/dist/deployment/artifactsExportPlan.js +2 -18
- package/dist/deployment/privateArtifactsExport.js +1 -1
- package/dist/dev/docker.d.ts +0 -5
- package/dist/dev/docker.js +0 -46
- package/dist/dev/index.d.ts +0 -1
- package/dist/dev/index.js +0 -1
- package/dist/dev/project.d.ts +0 -16
- package/dist/dev/project.js +1 -128
- package/dist/distribution/distributionReportSchema.js +1 -1
- package/dist/distribution/imageRuntimeAuth.js +3 -2
- package/dist/release/drainControl.d.ts +5 -19
- package/dist/release/drainControl.js +12 -67
- package/dist/report/types.d.ts +3 -6
- package/dist/runtime/common.d.ts +1 -1
- package/dist/runtime/common.js +1 -1
- package/dist/runtime/container.d.ts +2 -2
- package/dist/runtime/container.js +1 -39
- package/dist/runtime/daimon/config.js +6 -12
- package/dist/runtime/daimon/contractManifest.js +0 -1
- package/dist/runtime/daimon/contractManifestSchema.js +0 -1
- package/dist/runtime/daimon/control.d.ts +31 -0
- package/dist/runtime/daimon/control.js +83 -0
- package/dist/runtime/daimon/engineDescriptorSchema.js +0 -1
- package/dist/runtime/daimon/engineDescriptors.generated.d.ts +1 -1
- package/dist/runtime/daimon/engineDescriptors.generated.js +1 -2
- package/dist/runtime/daimon/engines.js +0 -1
- package/dist/runtime/daimon/gateway.d.ts +62 -0
- package/dist/runtime/daimon/gateway.js +77 -0
- package/dist/runtime/daimon/grokWorkerContract.d.ts +0 -5
- package/dist/runtime/daimon/grokWorkerContract.js +1 -13
- package/dist/runtime/daimon/index.d.ts +2 -0
- package/dist/runtime/daimon/index.js +2 -1
- package/dist/runtime/daimon/memory.js +1 -1
- package/dist/runtime/daimon/packageName.js +0 -1
- package/dist/runtime/daimon/runAuth.js +7 -4
- package/dist/runtime/daimon/runtimeIdentity.d.ts +2 -0
- package/dist/runtime/daimon/runtimeIdentity.js +2 -0
- package/dist/runtime/daimon/subscriptionRealms.d.ts +9 -3
- package/dist/runtime/daimon/subscriptionRealms.js +22 -13
- package/dist/runtime/daimon/testHelpers.d.ts +2 -0
- package/dist/runtime/{pi → daimon}/testHelpers.js +3 -3
- package/dist/runtime/daimon/training/booted/adapter.d.ts +46 -0
- package/dist/runtime/daimon/training/booted/adapter.js +59 -0
- package/dist/runtime/daimon/training/booted/adapter.js.map +1 -0
- package/dist/runtime/daimon/training/booted/index.d.ts +2 -0
- package/dist/runtime/daimon/training/booted/index.js +2 -0
- package/dist/runtime/daimon/training/booted/index.js.map +1 -0
- package/dist/runtime/daimon/training/index.d.ts +5 -0
- package/dist/runtime/daimon/training/index.js +8 -4
- package/dist/runtime/daimon/training/index.js.map +1 -1
- package/dist/runtime/daimon/training/providers/codex-subscription/index.js.map +1 -0
- package/dist/runtime/daimon/training/providers/codex-subscription/protocol.js.map +1 -0
- package/dist/runtime/daimon/training/providers/codex-subscription/provider.js.map +1 -0
- package/dist/runtime/daimon/training/providers/codex-subscription/strict-schema.js.map +1 -0
- package/dist/runtime/daimon/training/providers/grok-subscription/cli.d.ts +1 -3
- package/dist/runtime/daimon/training/providers/grok-subscription/cli.js +5 -5
- package/dist/runtime/daimon/training/providers/grok-subscription/cli.js.map +1 -1
- package/dist/runtime/daimon/training/providers/grok-subscription/index.d.ts +1 -2
- package/dist/runtime/daimon/training/providers/grok-subscription/index.js +0 -1
- package/dist/runtime/daimon/training/providers/grok-subscription/index.js.map +1 -1
- package/dist/runtime/daimon/training/providers/grok-subscription/protocol.d.ts +5 -17
- package/dist/runtime/daimon/training/providers/grok-subscription/protocol.js +18 -31
- package/dist/runtime/daimon/training/providers/grok-subscription/protocol.js.map +1 -1
- package/dist/runtime/daimon/training/providers/grok-subscription/provider.js +1 -2
- package/dist/runtime/daimon/training/providers/grok-subscription/provider.js.map +1 -1
- package/dist/runtime/daimon/wakeMoments.js +0 -1
- package/dist/runtime/install.js +0 -21
- package/dist/runtime/registry.js +0 -2
- package/dist/runtime/trainingGraderProviders.js +1 -1
- package/dist/runtime/trainingProviders.d.ts +1 -2
- package/dist/runtime/trainingProviders.js +9 -19
- package/dist/runtime/trainingSubjects.d.ts +0 -121
- package/dist/runtime/trainingSubjects.js +2 -13
- package/dist/runtime/types.d.ts +1 -8
- package/dist/shared/errors.js +0 -1
- package/dist/status/lifecycleProbes.js +3 -6
- package/dist/status/moltnetWiringProbes.js +1 -17
- package/dist/training/subjects/index.d.ts +0 -1
- package/dist/training/subjects/index.js +0 -1
- package/dist/training/subjects/index.js.map +1 -1
- package/examples/README.md +0 -1
- package/examples/daimon-org/agents/mapper/Spawnfile +4 -1
- package/examples/daimon-org/teams/review/agents/reviewer/Spawnfile +4 -1
- package/examples/jungian-daimon-org/teams/luna/agents/animus/Spawnfile +5 -8
- package/examples/jungian-daimon-org/teams/luna/agents/representative/Spawnfile +1 -1
- package/examples/jungian-daimon-org/teams/luna/agents/shadow/Spawnfile +5 -8
- package/examples/jungian-daimon-org/teams/selene/agents/animus/Spawnfile +5 -8
- package/examples/jungian-daimon-org/teams/selene/agents/representative/Spawnfile +5 -8
- package/examples/jungian-daimon-org/teams/selene/agents/shadow/Spawnfile +1 -1
- package/examples/mixed-runtime-org/agents/localist/Spawnfile +7 -7
- package/package.json +4 -13
- package/runtimes.yaml +5 -15
- package/dist/compiler/containerDaimonGrokTaskClock.d.ts +0 -5
- package/dist/compiler/containerDaimonGrokTaskClock.js +0 -29
- package/dist/compiler/daimonTelemetryArtifacts.d.ts +0 -22
- package/dist/compiler/daimonTelemetryArtifacts.js +0 -56
- package/dist/compiler/training/broker/clockProbe.d.ts +0 -6
- package/dist/compiler/training/broker/clockProbe.js +0 -27
- package/dist/compiler/training/broker/declaration.d.ts +0 -54
- package/dist/compiler/training/broker/declaration.js +0 -70
- package/dist/compiler/training/broker/entrypoint.d.ts +0 -39
- package/dist/compiler/training/broker/entrypoint.js +0 -124
- package/dist/compiler/training/broker/evaluatorSecrets.d.ts +0 -2
- package/dist/compiler/training/broker/evaluatorSecrets.js +0 -62
- package/dist/compiler/training/broker/index.d.ts +0 -12
- package/dist/compiler/training/broker/index.js +0 -12
- package/dist/compiler/training/broker/main.d.ts +0 -2
- package/dist/compiler/training/broker/main.js +0 -14
- package/dist/compiler/training/broker/paths.d.ts +0 -236
- package/dist/compiler/training/broker/paths.js +0 -249
- package/dist/compiler/training/broker/processes.d.ts +0 -51
- package/dist/compiler/training/broker/processes.js +0 -102
- package/dist/compiler/training/broker/projection.d.ts +0 -61
- package/dist/compiler/training/broker/projection.js +0 -109
- package/dist/compiler/training/broker/provisioning.d.ts +0 -78
- package/dist/compiler/training/broker/provisioning.js +0 -231
- package/dist/compiler/training/broker/receipt.d.ts +0 -77
- package/dist/compiler/training/broker/receipt.js +0 -110
- package/dist/compiler/training/broker/recycleClient.d.ts +0 -33
- package/dist/compiler/training/broker/recycleClient.js +0 -112
- package/dist/compiler/training/broker/registration.d.ts +0 -46
- package/dist/compiler/training/broker/registration.js +0 -113
- package/dist/compiler/training/broker/reset.d.ts +0 -9
- package/dist/compiler/training/broker/reset.js +0 -71
- package/dist/compiler/training/broker/rootScript.d.ts +0 -32
- package/dist/compiler/training/broker/rootScript.js +0 -33
- package/dist/compiler/training/broker/runtime.d.ts +0 -22
- package/dist/compiler/training/broker/runtime.js +0 -128
- package/dist/compiler/training/broker/seccompRoutes.d.ts +0 -31
- package/dist/compiler/training/broker/seccompRoutes.js +0 -36
- package/dist/compiler/training/broker/supervisor.d.ts +0 -108
- package/dist/compiler/training/broker/supervisor.js +0 -172
- package/dist/compiler/training/broker/taskClock.d.ts +0 -5
- package/dist/compiler/training/broker/taskClock.js +0 -41
- package/dist/compiler/training/container/contract.d.ts +0 -54
- package/dist/compiler/training/container/contract.js +0 -52
- package/dist/compiler/training/container/evaluators.d.ts +0 -48
- package/dist/compiler/training/container/evaluators.js +0 -50
- package/dist/compiler/training/container/grokWriteback.d.ts +0 -8
- package/dist/compiler/training/container/grokWriteback.js +0 -26
- package/dist/compiler/training/container/index.d.ts +0 -5
- package/dist/compiler/training/container/index.js +0 -3
- package/dist/compiler/training/container/launch.d.ts +0 -21
- package/dist/compiler/training/container/launch.js +0 -280
- package/dist/compiler/training/container/nativeSlots.d.ts +0 -14
- package/dist/compiler/training/container/nativeSlots.js +0 -13
- package/dist/compiler/training/container/outputCopy.d.ts +0 -2
- package/dist/compiler/training/container/outputCopy.js +0 -72
- package/dist/compiler/training/container/outputVolume.d.ts +0 -28
- package/dist/compiler/training/container/outputVolume.js +0 -185
- package/dist/compiler/training/container/prepare.d.ts +0 -10
- package/dist/compiler/training/container/prepare.js +0 -125
- package/dist/compiler/training/container/process.d.ts +0 -14
- package/dist/compiler/training/container/process.js +0 -70
- package/dist/compiler/training/container/security.d.ts +0 -38
- package/dist/compiler/training/container/security.js +0 -68
- package/dist/compiler/training/container/subjectIsolation.d.ts +0 -5
- package/dist/compiler/training/container/subjectIsolation.js +0 -16
- package/dist/compiler/training/preparation/assets/Dockerfile +0 -100
- package/dist/compiler/training/preparation/assets/package-lock.json +0 -5483
- package/dist/compiler/training/preparation/broker.d.ts +0 -30
- package/dist/compiler/training/preparation/broker.js +0 -68
- package/dist/compiler/training/preparation/contextModes.d.ts +0 -12
- package/dist/compiler/training/preparation/contextModes.js +0 -38
- package/dist/compiler/training/preparation/contract.d.ts +0 -203
- package/dist/compiler/training/preparation/contract.js +0 -114
- package/dist/compiler/training/preparation/copyAssets.d.ts +0 -1
- package/dist/compiler/training/preparation/copyAssets.js +0 -8
- package/dist/compiler/training/preparation/daimonParent.d.ts +0 -42
- package/dist/compiler/training/preparation/daimonParent.js +0 -114
- package/dist/compiler/training/preparation/files.d.ts +0 -29
- package/dist/compiler/training/preparation/files.js +0 -146
- package/dist/compiler/training/preparation/image.d.ts +0 -28
- package/dist/compiler/training/preparation/image.js +0 -105
- package/dist/compiler/training/preparation/index.d.ts +0 -3
- package/dist/compiler/training/preparation/index.js +0 -2
- package/dist/compiler/training/preparation/inputs.d.ts +0 -24
- package/dist/compiler/training/preparation/inputs.js +0 -101
- package/dist/compiler/training/preparation/prepare.d.ts +0 -38
- package/dist/compiler/training/preparation/prepare.js +0 -224
- package/dist/compiler/training/preparation/scratch.d.ts +0 -8
- package/dist/compiler/training/preparation/scratch.js +0 -114
- package/dist/compiler/training/repair/compatibility.d.ts +0 -11
- package/dist/compiler/training/repair/compatibility.js +0 -45
- package/dist/compiler/training/repair/contract.d.ts +0 -832
- package/dist/compiler/training/repair/contract.js +0 -34
- package/dist/compiler/training/repair/index.d.ts +0 -3
- package/dist/compiler/training/repair/index.js +0 -3
- package/dist/compiler/training/repair/prepare.d.ts +0 -378
- package/dist/compiler/training/repair/prepare.js +0 -84
- package/dist/compiler/training/repair/witness.d.ts +0 -348
- package/dist/compiler/training/repair/witness.js +0 -62
- package/dist/compiler/training/subjectDeclaration.d.ts +0 -26
- package/dist/compiler/training/subjectDeclaration.js +0 -54
- package/dist/compiler/training/subjectLease.d.ts +0 -115
- package/dist/compiler/training/subjectLease.js +0 -179
- package/dist/dev/activity.d.ts +0 -14
- package/dist/dev/activity.js +0 -48
- package/dist/runtime/codex-exec/training/adapter.d.ts +0 -13
- package/dist/runtime/codex-exec/training/adapter.js +0 -101
- package/dist/runtime/codex-exec/training/adapter.js.map +0 -1
- package/dist/runtime/codex-exec/training/environment.d.ts +0 -3
- package/dist/runtime/codex-exec/training/environment.js +0 -26
- package/dist/runtime/codex-exec/training/environment.js.map +0 -1
- package/dist/runtime/codex-exec/training/index.d.ts +0 -2
- package/dist/runtime/codex-exec/training/index.js +0 -3
- package/dist/runtime/codex-exec/training/index.js.map +0 -1
- package/dist/runtime/codex-exec/training/protocol.d.ts +0 -15
- package/dist/runtime/codex-exec/training/protocol.js +0 -102
- package/dist/runtime/codex-exec/training/protocol.js.map +0 -1
- package/dist/runtime/codex-exec/training/providers/codex-subscription/index.js.map +0 -1
- package/dist/runtime/codex-exec/training/providers/codex-subscription/protocol.js.map +0 -1
- package/dist/runtime/codex-exec/training/providers/codex-subscription/provider.js.map +0 -1
- package/dist/runtime/codex-exec/training/providers/codex-subscription/strict-schema.js.map +0 -1
- package/dist/runtime/daimon/contractManifest.js.map +0 -1
- package/dist/runtime/daimon/contractManifestSchema.js.map +0 -1
- package/dist/runtime/daimon/engineDescriptorSchema.js.map +0 -1
- package/dist/runtime/daimon/engineDescriptors.generated.js.map +0 -1
- package/dist/runtime/daimon/engines.js.map +0 -1
- package/dist/runtime/daimon/index.js.map +0 -1
- package/dist/runtime/daimon/packageName.js.map +0 -1
- package/dist/runtime/daimon/training/legacy/adapter.d.ts +0 -11
- package/dist/runtime/daimon/training/legacy/adapter.js +0 -175
- package/dist/runtime/daimon/training/legacy/adapter.js.map +0 -1
- package/dist/runtime/daimon/training/legacy/index.d.ts +0 -2
- package/dist/runtime/daimon/training/legacy/index.js +0 -3
- package/dist/runtime/daimon/training/legacy/index.js.map +0 -1
- package/dist/runtime/daimon/training/legacy/public.d.ts +0 -49
- package/dist/runtime/daimon/training/legacy/public.js +0 -16
- package/dist/runtime/daimon/training/legacy/public.js.map +0 -1
- package/dist/runtime/daimon/training/native/adapter.d.ts +0 -18
- package/dist/runtime/daimon/training/native/adapter.js +0 -252
- package/dist/runtime/daimon/training/native/adapter.js.map +0 -1
- package/dist/runtime/daimon/training/native/admission.d.ts +0 -7
- package/dist/runtime/daimon/training/native/admission.js +0 -52
- package/dist/runtime/daimon/training/native/admission.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/arguments.d.ts +0 -16
- package/dist/runtime/daimon/training/native/child/arguments.js +0 -70
- package/dist/runtime/daimon/training/native/child/arguments.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/deferred-trial.d.ts +0 -24
- package/dist/runtime/daimon/training/native/child/deferred-trial.js +0 -63
- package/dist/runtime/daimon/training/native/child/deferred-trial.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/diagnostics.d.ts +0 -58
- package/dist/runtime/daimon/training/native/child/diagnostics.js +0 -215
- package/dist/runtime/daimon/training/native/child/diagnostics.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/fixture.d.ts +0 -16
- package/dist/runtime/daimon/training/native/child/fixture.js +0 -159
- package/dist/runtime/daimon/training/native/child/fixture.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/grok.d.ts +0 -14
- package/dist/runtime/daimon/training/native/child/grok.js +0 -47
- package/dist/runtime/daimon/training/native/child/grok.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/index.d.ts +0 -7
- package/dist/runtime/daimon/training/native/child/index.js +0 -5
- package/dist/runtime/daimon/training/native/child/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/lifecycle.d.ts +0 -40
- package/dist/runtime/daimon/training/native/child/lifecycle.js +0 -400
- package/dist/runtime/daimon/training/native/child/lifecycle.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/probe.d.ts +0 -2
- package/dist/runtime/daimon/training/native/child/probe.js +0 -11
- package/dist/runtime/daimon/training/native/child/probe.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/sandbox.d.ts +0 -4
- package/dist/runtime/daimon/training/native/child/sandbox.js +0 -76
- package/dist/runtime/daimon/training/native/child/sandbox.js.map +0 -1
- package/dist/runtime/daimon/training/native/child/types.d.ts +0 -15
- package/dist/runtime/daimon/training/native/child/types.js +0 -2
- package/dist/runtime/daimon/training/native/child/types.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/docker.d.ts +0 -29
- package/dist/runtime/daimon/training/native/container/docker.js +0 -105
- package/dist/runtime/daimon/training/native/container/docker.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/grok-slot.d.ts +0 -22
- package/dist/runtime/daimon/training/native/container/grok-slot.js +0 -38
- package/dist/runtime/daimon/training/native/container/grok-slot.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/index.d.ts +0 -6
- package/dist/runtime/daimon/training/native/container/index.js +0 -6
- package/dist/runtime/daimon/training/native/container/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/lifecycle.d.ts +0 -8
- package/dist/runtime/daimon/training/native/container/lifecycle.js +0 -111
- package/dist/runtime/daimon/training/native/container/lifecycle.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/manifest.d.ts +0 -17
- package/dist/runtime/daimon/training/native/container/manifest.js +0 -164
- package/dist/runtime/daimon/training/native/container/manifest.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/native-preflight.d.ts +0 -8
- package/dist/runtime/daimon/training/native/container/native-preflight.js +0 -40
- package/dist/runtime/daimon/training/native/container/native-preflight.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/preflight.d.ts +0 -15
- package/dist/runtime/daimon/training/native/container/preflight.js +0 -79
- package/dist/runtime/daimon/training/native/container/preflight.js.map +0 -1
- package/dist/runtime/daimon/training/native/container/slot.d.ts +0 -4
- package/dist/runtime/daimon/training/native/container/slot.js +0 -58
- package/dist/runtime/daimon/training/native/container/slot.js.map +0 -1
- package/dist/runtime/daimon/training/native/external.d.ts +0 -37
- package/dist/runtime/daimon/training/native/external.js +0 -75
- package/dist/runtime/daimon/training/native/external.js.map +0 -1
- package/dist/runtime/daimon/training/native/grants/authority.d.ts +0 -36
- package/dist/runtime/daimon/training/native/grants/authority.js +0 -49
- package/dist/runtime/daimon/training/native/grants/authority.js.map +0 -1
- package/dist/runtime/daimon/training/native/grants/index.d.ts +0 -2
- package/dist/runtime/daimon/training/native/grants/index.js +0 -3
- package/dist/runtime/daimon/training/native/grants/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/grants/pins.d.ts +0 -30
- package/dist/runtime/daimon/training/native/grants/pins.js +0 -20
- package/dist/runtime/daimon/training/native/grants/pins.js.map +0 -1
- package/dist/runtime/daimon/training/native/grants/test-socket.d.ts +0 -6
- package/dist/runtime/daimon/training/native/grants/test-socket.js +0 -35
- package/dist/runtime/daimon/training/native/grants/test-socket.js.map +0 -1
- package/dist/runtime/daimon/training/native/grok-fixtures.d.ts +0 -34
- package/dist/runtime/daimon/training/native/grok-fixtures.js +0 -179
- package/dist/runtime/daimon/training/native/grok-fixtures.js.map +0 -1
- package/dist/runtime/daimon/training/native/index.d.ts +0 -38
- package/dist/runtime/daimon/training/native/index.js +0 -27
- package/dist/runtime/daimon/training/native/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/live-checkout.d.ts +0 -2
- package/dist/runtime/daimon/training/native/live-checkout.js +0 -15
- package/dist/runtime/daimon/training/native/live-checkout.js.map +0 -1
- package/dist/runtime/daimon/training/native/observations.d.ts +0 -51
- package/dist/runtime/daimon/training/native/observations.js +0 -217
- package/dist/runtime/daimon/training/native/observations.js.map +0 -1
- package/dist/runtime/daimon/training/native/outcome.d.ts +0 -13
- package/dist/runtime/daimon/training/native/outcome.js +0 -37
- package/dist/runtime/daimon/training/native/outcome.js.map +0 -1
- package/dist/runtime/daimon/training/native/preparation/engine-config.d.ts +0 -21
- package/dist/runtime/daimon/training/native/preparation/engine-config.js +0 -30
- package/dist/runtime/daimon/training/native/preparation/engine-config.js.map +0 -1
- package/dist/runtime/daimon/training/native/preparation/fixtures.d.ts +0 -17
- package/dist/runtime/daimon/training/native/preparation/fixtures.js +0 -52
- package/dist/runtime/daimon/training/native/preparation/fixtures.js.map +0 -1
- package/dist/runtime/daimon/training/native/preparation/index.d.ts +0 -7
- package/dist/runtime/daimon/training/native/preparation/index.js +0 -5
- package/dist/runtime/daimon/training/native/preparation/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/preparation/layout.d.ts +0 -66
- package/dist/runtime/daimon/training/native/preparation/layout.js +0 -87
- package/dist/runtime/daimon/training/native/preparation/layout.js.map +0 -1
- package/dist/runtime/daimon/training/native/preparation/subject.d.ts +0 -14
- package/dist/runtime/daimon/training/native/preparation/subject.js +0 -67
- package/dist/runtime/daimon/training/native/preparation/subject.js.map +0 -1
- package/dist/runtime/daimon/training/native/preparation/types.d.ts +0 -69
- package/dist/runtime/daimon/training/native/preparation/types.js +0 -2
- package/dist/runtime/daimon/training/native/preparation/types.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/artifacts.d.ts +0 -25
- package/dist/runtime/daimon/training/native/receipt/artifacts.js +0 -32
- package/dist/runtime/daimon/training/native/receipt/artifacts.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/grok-clocked-pins.d.ts +0 -129
- package/dist/runtime/daimon/training/native/receipt/grok-clocked-pins.js +0 -45
- package/dist/runtime/daimon/training/native/receipt/grok-clocked-pins.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/grok.d.ts +0 -246
- package/dist/runtime/daimon/training/native/receipt/grok.js +0 -195
- package/dist/runtime/daimon/training/native/receipt/grok.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/index.d.ts +0 -11
- package/dist/runtime/daimon/training/native/receipt/index.js +0 -8
- package/dist/runtime/daimon/training/native/receipt/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/paths.d.ts +0 -3
- package/dist/runtime/daimon/training/native/receipt/paths.js +0 -18
- package/dist/runtime/daimon/training/native/receipt/paths.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/sandbox.d.ts +0 -42
- package/dist/runtime/daimon/training/native/receipt/sandbox.js +0 -35
- package/dist/runtime/daimon/training/native/receipt/sandbox.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/schema.d.ts +0 -490
- package/dist/runtime/daimon/training/native/receipt/schema.js +0 -138
- package/dist/runtime/daimon/training/native/receipt/schema.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/subscription.d.ts +0 -13
- package/dist/runtime/daimon/training/native/receipt/subscription.js +0 -13
- package/dist/runtime/daimon/training/native/receipt/subscription.js.map +0 -1
- package/dist/runtime/daimon/training/native/receipt/task-clock.d.ts +0 -19
- package/dist/runtime/daimon/training/native/receipt/task-clock.js +0 -49
- package/dist/runtime/daimon/training/native/receipt/task-clock.js.map +0 -1
- package/dist/runtime/daimon/training/native/sealed-usage.d.ts +0 -218
- package/dist/runtime/daimon/training/native/sealed-usage.js +0 -261
- package/dist/runtime/daimon/training/native/sealed-usage.js.map +0 -1
- package/dist/runtime/daimon/training/native/test-fixtures.d.ts +0 -27
- package/dist/runtime/daimon/training/native/test-fixtures.js +0 -162
- package/dist/runtime/daimon/training/native/test-fixtures.js.map +0 -1
- package/dist/runtime/daimon/training/native/transcript.d.ts +0 -96
- package/dist/runtime/daimon/training/native/transcript.js +0 -239
- package/dist/runtime/daimon/training/native/transcript.js.map +0 -1
- package/dist/runtime/daimon/training/native/transport/delivery.d.ts +0 -27
- package/dist/runtime/daimon/training/native/transport/delivery.js +0 -98
- package/dist/runtime/daimon/training/native/transport/delivery.js.map +0 -1
- package/dist/runtime/daimon/training/native/transport/http.d.ts +0 -3
- package/dist/runtime/daimon/training/native/transport/http.js +0 -81
- package/dist/runtime/daimon/training/native/transport/http.js.map +0 -1
- package/dist/runtime/daimon/training/native/transport/index.d.ts +0 -4
- package/dist/runtime/daimon/training/native/transport/index.js +0 -3
- package/dist/runtime/daimon/training/native/transport/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/transport/types.d.ts +0 -15
- package/dist/runtime/daimon/training/native/transport/types.js +0 -2
- package/dist/runtime/daimon/training/native/transport/types.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/cli.d.ts +0 -1
- package/dist/runtime/daimon/training/native/worker/cli.js +0 -17
- package/dist/runtime/daimon/training/native/worker/cli.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/control.d.ts +0 -20
- package/dist/runtime/daimon/training/native/worker/control.js +0 -266
- package/dist/runtime/daimon/training/native/worker/control.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/deliveries.d.ts +0 -38
- package/dist/runtime/daimon/training/native/worker/deliveries.js +0 -91
- package/dist/runtime/daimon/training/native/worker/deliveries.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/evidence/collect.d.ts +0 -54
- package/dist/runtime/daimon/training/native/worker/evidence/collect.js +0 -278
- package/dist/runtime/daimon/training/native/worker/evidence/collect.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/evidence/execution.d.ts +0 -102
- package/dist/runtime/daimon/training/native/worker/evidence/execution.js +0 -191
- package/dist/runtime/daimon/training/native/worker/evidence/execution.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/evidence/index.d.ts +0 -3
- package/dist/runtime/daimon/training/native/worker/evidence/index.js +0 -4
- package/dist/runtime/daimon/training/native/worker/evidence/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/evidence/io.d.ts +0 -20
- package/dist/runtime/daimon/training/native/worker/evidence/io.js +0 -130
- package/dist/runtime/daimon/training/native/worker/evidence/io.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/evidence/seal.d.ts +0 -3
- package/dist/runtime/daimon/training/native/worker/evidence/seal.js +0 -67
- package/dist/runtime/daimon/training/native/worker/evidence/seal.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/index.d.ts +0 -11
- package/dist/runtime/daimon/training/native/worker/index.js +0 -8
- package/dist/runtime/daimon/training/native/worker/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/profile.d.ts +0 -23
- package/dist/runtime/daimon/training/native/worker/profile.js +0 -149
- package/dist/runtime/daimon/training/native/worker/profile.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/public.d.ts +0 -53
- package/dist/runtime/daimon/training/native/worker/public.js +0 -22
- package/dist/runtime/daimon/training/native/worker/public.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/sandbox.d.ts +0 -4
- package/dist/runtime/daimon/training/native/worker/sandbox.js +0 -54
- package/dist/runtime/daimon/training/native/worker/sandbox.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/server.d.ts +0 -4
- package/dist/runtime/daimon/training/native/worker/server.js +0 -102
- package/dist/runtime/daimon/training/native/worker/server.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/types.d.ts +0 -318
- package/dist/runtime/daimon/training/native/worker/types.js +0 -2
- package/dist/runtime/daimon/training/native/worker/types.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/wake-delivery/index.d.ts +0 -4
- package/dist/runtime/daimon/training/native/worker/wake-delivery/index.js +0 -4
- package/dist/runtime/daimon/training/native/worker/wake-delivery/index.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/wake-delivery/source.d.ts +0 -3
- package/dist/runtime/daimon/training/native/worker/wake-delivery/source.js +0 -16
- package/dist/runtime/daimon/training/native/worker/wake-delivery/source.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/wake-delivery/terminal.d.ts +0 -4
- package/dist/runtime/daimon/training/native/worker/wake-delivery/terminal.js +0 -52
- package/dist/runtime/daimon/training/native/worker/wake-delivery/terminal.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/wake-delivery/transport.d.ts +0 -21
- package/dist/runtime/daimon/training/native/worker/wake-delivery/transport.js +0 -198
- package/dist/runtime/daimon/training/native/worker/wake-delivery/transport.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/wake-delivery/types.d.ts +0 -91
- package/dist/runtime/daimon/training/native/worker/wake-delivery/types.js +0 -2
- package/dist/runtime/daimon/training/native/worker/wake-delivery/types.js.map +0 -1
- package/dist/runtime/daimon/training/native/worker/worker.d.ts +0 -1
- package/dist/runtime/daimon/training/native/worker/worker.js +0 -105
- package/dist/runtime/daimon/training/native/worker/worker.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-broker/broker.d.ts +0 -20
- package/dist/runtime/daimon/training/providers/grok-broker/broker.js +0 -55
- package/dist/runtime/daimon/training/providers/grok-broker/broker.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-broker/grant-fixtures.d.ts +0 -15
- package/dist/runtime/daimon/training/providers/grok-broker/grant-fixtures.js +0 -29
- package/dist/runtime/daimon/training/providers/grok-broker/grant-fixtures.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-broker/grant-home.d.ts +0 -16
- package/dist/runtime/daimon/training/providers/grok-broker/grant-home.js +0 -60
- package/dist/runtime/daimon/training/providers/grok-broker/grant-home.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-broker/grant-pool.d.ts +0 -81
- package/dist/runtime/daimon/training/providers/grok-broker/grant-pool.js +0 -221
- package/dist/runtime/daimon/training/providers/grok-broker/grant-pool.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-broker/grant-releases.d.ts +0 -31
- package/dist/runtime/daimon/training/providers/grok-broker/grant-releases.js +0 -78
- package/dist/runtime/daimon/training/providers/grok-broker/grant-releases.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-broker/grants.d.ts +0 -63
- package/dist/runtime/daimon/training/providers/grok-broker/grants.js +0 -20
- package/dist/runtime/daimon/training/providers/grok-broker/grants.js.map +0 -1
- package/dist/runtime/daimon/training/providers/grok-broker/index.d.ts +0 -3
- package/dist/runtime/daimon/training/providers/grok-broker/index.js +0 -4
- package/dist/runtime/daimon/training/providers/grok-broker/index.js.map +0 -1
- package/dist/runtime/daimon/training/public.d.ts +0 -6
- package/dist/runtime/daimon/training/public.js +0 -5
- package/dist/runtime/daimon/training/public.js.map +0 -1
- package/dist/runtime/daimon/training/services/account-lease.d.ts +0 -7
- package/dist/runtime/daimon/training/services/account-lease.js +0 -76
- package/dist/runtime/daimon/training/services/account-lease.js.map +0 -1
- package/dist/runtime/daimon/training/services/freshness.d.ts +0 -15
- package/dist/runtime/daimon/training/services/freshness.js +0 -19
- package/dist/runtime/daimon/training/services/freshness.js.map +0 -1
- package/dist/runtime/daimon/training/services/index.d.ts +0 -4
- package/dist/runtime/daimon/training/services/index.js +0 -4
- package/dist/runtime/daimon/training/services/index.js.map +0 -1
- package/dist/runtime/daimon/training/services/slot-freshness.d.ts +0 -34
- package/dist/runtime/daimon/training/services/slot-freshness.js +0 -178
- package/dist/runtime/daimon/training/services/slot-freshness.js.map +0 -1
- package/dist/runtime/daimon/wakeMoments.js.map +0 -1
- package/dist/runtime/pi/adapter.d.ts +0 -3
- package/dist/runtime/pi/adapter.js +0 -230
- package/dist/runtime/pi/appActivitySource.d.ts +0 -1
- package/dist/runtime/pi/appActivitySource.js +0 -199
- package/dist/runtime/pi/appAgentConfig.d.ts +0 -11
- package/dist/runtime/pi/appAgentConfig.js +0 -264
- package/dist/runtime/pi/appCliEnginesSource.d.ts +0 -1
- package/dist/runtime/pi/appCliEnginesSource.js +0 -183
- package/dist/runtime/pi/appCliSource.d.ts +0 -1
- package/dist/runtime/pi/appCliSource.js +0 -353
- package/dist/runtime/pi/appControlSource.d.ts +0 -1
- package/dist/runtime/pi/appControlSource.js +0 -390
- package/dist/runtime/pi/appControlWakeIdentitySource.d.ts +0 -1
- package/dist/runtime/pi/appControlWakeIdentitySource.js +0 -19
- package/dist/runtime/pi/appCoreSource.d.ts +0 -4
- package/dist/runtime/pi/appCoreSource.js +0 -244
- package/dist/runtime/pi/appPreludeSource.d.ts +0 -1
- package/dist/runtime/pi/appPreludeSource.js +0 -192
- package/dist/runtime/pi/appScheduleSource.d.ts +0 -1
- package/dist/runtime/pi/appScheduleSource.js +0 -84
- package/dist/runtime/pi/appScriptedEngine.d.ts +0 -31
- package/dist/runtime/pi/appScriptedEngine.js +0 -42
- package/dist/runtime/pi/appSource.d.ts +0 -4
- package/dist/runtime/pi/appSource.js +0 -12
- package/dist/runtime/pi/appTemplate.d.ts +0 -14
- package/dist/runtime/pi/appTemplate.js +0 -28
- package/dist/runtime/pi/appTemplateTypes.d.ts +0 -64
- package/dist/runtime/pi/appTemplateTypes.js +0 -18
- package/dist/runtime/pi/appWakeContextSource.d.ts +0 -1
- package/dist/runtime/pi/appWakeContextSource.js +0 -398
- package/dist/runtime/pi/containerTargets.d.ts +0 -4
- package/dist/runtime/pi/containerTargets.js +0 -63
- package/dist/runtime/pi/runAuth.d.ts +0 -2
- package/dist/runtime/pi/runAuth.js +0 -185
- package/dist/runtime/pi/testHelpers.d.ts +0 -2
- package/dist/shared/errors.js.map +0 -1
- package/dist/training/subjects/environment.d.ts +0 -2
- package/dist/training/subjects/environment.js +0 -14
- package/dist/training/subjects/environment.js.map +0 -1
- /package/dist/runtime/{codex-exec → daimon}/training/providers/codex-subscription/index.d.ts +0 -0
- /package/dist/runtime/{codex-exec → daimon}/training/providers/codex-subscription/index.js +0 -0
- /package/dist/runtime/{codex-exec → daimon}/training/providers/codex-subscription/protocol.d.ts +0 -0
- /package/dist/runtime/{codex-exec → daimon}/training/providers/codex-subscription/protocol.js +0 -0
- /package/dist/runtime/{codex-exec → daimon}/training/providers/codex-subscription/provider.d.ts +0 -0
- /package/dist/runtime/{codex-exec → daimon}/training/providers/codex-subscription/provider.js +0 -0
- /package/dist/runtime/{codex-exec → daimon}/training/providers/codex-subscription/strict-schema.d.ts +0 -0
- /package/dist/runtime/{codex-exec → daimon}/training/providers/codex-subscription/strict-schema.js +0 -0
|
@@ -1,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;
|