spawnfile 0.1.14 → 0.1.18
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 +60 -159
- package/dist/audit/checksShared.d.ts +1 -1
- package/dist/auth/importers.d.ts +10 -0
- package/dist/auth/importers.js +46 -5
- package/dist/auth/index.d.ts +3 -0
- package/dist/auth/index.js +2 -0
- package/dist/auth/paths.d.ts +1 -1
- package/dist/auth/profileStore.js +13 -10
- package/dist/auth/targetSecretSourceFsIdentity.d.ts +40 -0
- package/dist/auth/targetSecretSourceFsIdentity.js +42 -0
- package/dist/auth/targetSecretSourceFsPublish.d.ts +2 -0
- package/dist/auth/targetSecretSourceFsPublish.js +3 -1
- package/dist/auth/targetSecretSourceFsPublishImmutable.d.ts +2 -1
- package/dist/auth/targetSecretSourceFsPublishImmutable.js +104 -71
- package/dist/auth/targetSecretSourceFsRead.js +5 -14
- package/dist/auth/trainingAuth.d.ts +21 -0
- package/dist/auth/trainingAuth.js +86 -0
- package/dist/auth/trainingGrokWriteback.d.ts +4 -0
- package/dist/auth/trainingGrokWriteback.js +119 -0
- package/dist/auth/trainingGrokWritebackLock.d.ts +5 -0
- package/dist/auth/trainingGrokWritebackLock.js +56 -0
- package/dist/auth/types.d.ts +1 -1
- package/dist/cli/authCommands.d.ts +1 -1
- package/dist/cli/authCommands.js +18 -5
- package/dist/cli/canaryCutoverCommand.d.ts +2 -0
- package/dist/cli/canaryCutoverCommand.js +30 -0
- package/dist/cli/capabilitiesCommand.d.ts +3 -0
- package/dist/cli/capabilitiesCommand.js +12 -0
- package/dist/cli/capabilitiesReceipt.d.ts +56 -0
- package/dist/cli/capabilitiesReceipt.js +56 -0
- package/dist/cli/compileBuildCommands.js +17 -0
- package/dist/cli/composedLifecycleContractSet.d.ts +21 -0
- package/dist/cli/composedLifecycleContractSet.js +204 -0
- package/dist/cli/devCommands.js +6 -2
- package/dist/cli/downCommand.d.ts +2 -0
- package/dist/cli/downCommand.js +22 -8
- package/dist/cli/envFileOption.d.ts +18 -0
- package/dist/cli/envFileOption.js +20 -0
- package/dist/cli/evidenceExportHelperCommand.d.ts +13 -0
- package/dist/cli/evidenceExportHelperCommand.js +51 -0
- package/dist/cli/index.js +12 -3
- package/dist/cli/lifecycleCommands.d.ts +1 -1
- package/dist/cli/lifecycleCommands.js +3 -1
- package/dist/cli/lifecycleMachine.d.ts +7 -1
- package/dist/cli/lifecycleMachine.js +2 -2
- package/dist/cli/lifecyclePlan.d.ts +1 -0
- package/dist/cli/lifecyclePlan.js +2 -0
- package/dist/cli/paideiaDelegation.d.ts +18 -0
- package/dist/cli/paideiaDelegation.js +211 -0
- package/dist/cli/paideiaSupervisor.d.ts +17 -0
- package/dist/cli/paideiaSupervisor.js +48 -0
- package/dist/cli/productStateCloneCommand.d.ts +2 -0
- package/dist/cli/productStateCloneCommand.js +34 -0
- package/dist/cli/recordCommands.d.ts +17 -0
- package/dist/cli/recordCommands.js +43 -0
- package/dist/cli/releaseCommand.d.ts +6 -0
- package/dist/cli/releaseCommand.js +91 -0
- package/dist/cli/runCli.d.ts +19 -3
- package/dist/cli/runCli.js +43 -10
- package/dist/cli/runPublishCommands.js +5 -3
- package/dist/cli/targetCommands.d.ts +4 -7
- package/dist/cli/targetCommands.js +16 -46
- package/dist/cli/targetConfigPreparedPlan.d.ts +3 -0
- package/dist/cli/targetConfigPreparedPlan.js +74 -0
- package/dist/cli/targetConfigResolver.d.ts +3 -0
- package/dist/cli/targetConfigResolver.js +111 -0
- package/dist/cli/targetConfigResolverCommand.d.ts +6 -0
- package/dist/cli/targetConfigResolverCommand.js +43 -0
- package/dist/cli/targetConfigResolverContracts.d.ts +56 -0
- package/dist/cli/targetConfigResolverContracts.js +30 -0
- package/dist/cli/targetConfigResolverDocker.d.ts +4 -0
- package/dist/cli/targetConfigResolverDocker.js +47 -0
- package/dist/cli/targetConfigResolverValidation.d.ts +10 -0
- package/dist/cli/targetConfigResolverValidation.js +94 -0
- package/dist/cli/targetDefaultAuthorities.d.ts +2 -0
- package/dist/cli/targetDefaultAuthorities.js +3 -0
- package/dist/cli/targetDefaultConfig.d.ts +7 -0
- package/dist/cli/targetDefaultConfig.js +22 -5
- package/dist/cli/targetDefaultConfigStdin.js +7 -1
- package/dist/cli/targetDefaultHandlerFactory.js +23 -2
- package/dist/cli/targetDefaultHandlers.d.ts +2 -2
- package/dist/cli/targetProductionCommands.d.ts +5 -0
- package/dist/cli/targetProductionCommands.js +45 -0
- package/dist/cli/trainCommand.d.ts +3 -0
- package/dist/cli/trainCommand.js +114 -0
- package/dist/cli/upCommand.js +40 -7
- package/dist/cli/upLifecycleRecovery.d.ts +2 -2
- package/dist/cli/upLifecycleRecovery.js +188 -44
- package/dist/cli/usageCommand.d.ts +40 -0
- package/dist/cli/usageCommand.js +284 -0
- package/dist/cli/usageCommandLive.d.ts +84 -0
- package/dist/cli/usageCommandLive.js +95 -0
- package/dist/cli/usageDeploymentSource.d.ts +9 -0
- package/dist/cli/usageDeploymentSource.js +22 -0
- package/dist/cli/volumeCommands.d.ts +8 -0
- package/dist/cli/volumeCommands.js +53 -0
- package/dist/cli/workspaceResourceMigrationCommand.d.ts +8 -0
- package/dist/cli/workspaceResourceMigrationCommand.js +36 -0
- package/dist/compiler/agentNodeMerge.js +3 -2
- package/dist/compiler/buildCompilePlan.js +4 -0
- package/dist/compiler/buildCompilePlanAgent.js +3 -1
- package/dist/compiler/buildCompilePlanTeams.d.ts +1 -1
- package/dist/compiler/buildCompilePlanTeams.js +6 -1
- package/dist/compiler/buildCompilePlanTraversal.js +2 -0
- package/dist/compiler/buildCompilePlanTraversalHelpers.d.ts +2 -2
- package/dist/compiler/buildCompilePlanTraversalHelpers.js +4 -3
- package/dist/compiler/buildProject.d.ts +10 -0
- package/dist/compiler/buildProject.js +14 -2
- package/dist/compiler/cleanCompileOutput.d.ts +2 -0
- package/dist/compiler/cleanCompileOutput.js +14 -0
- package/dist/compiler/compilePlanHelpers.js +5 -0
- package/dist/compiler/compileProject.d.ts +12 -0
- package/dist/compiler/compileProject.js +33 -3
- package/dist/compiler/compileProjectSupport.js +9 -0
- package/dist/compiler/containerArtifactSummaries.js +1 -0
- package/dist/compiler/containerArtifacts.d.ts +7 -5
- package/dist/compiler/containerArtifacts.js +77 -41
- package/dist/compiler/containerArtifactsPlans.d.ts +1 -1
- package/dist/compiler/containerArtifactsPlans.js +31 -7
- package/dist/compiler/containerArtifactsRender.d.ts +2 -1
- package/dist/compiler/containerArtifactsRender.js +91 -58
- package/dist/compiler/containerArtifactsTypes.d.ts +15 -0
- package/dist/compiler/containerBackedMountRender.d.ts +56 -0
- package/dist/compiler/containerBackedMountRender.js +101 -0
- package/dist/compiler/containerDaimonBrokerRender.d.ts +114 -0
- package/dist/compiler/containerDaimonBrokerRender.js +194 -0
- package/dist/compiler/containerDaimonGrokTaskClock.d.ts +5 -0
- package/dist/compiler/containerDaimonGrokTaskClock.js +29 -0
- package/dist/compiler/containerDaimonGrokWorkerProvisioning.d.ts +38 -0
- package/dist/compiler/containerDaimonGrokWorkerProvisioning.js +130 -0
- package/dist/compiler/containerDaimonGrokWorkerRender.d.ts +197 -0
- package/dist/compiler/containerDaimonGrokWorkerRender.js +281 -0
- package/dist/compiler/containerDaimonOwnershipGuardRender.d.ts +25 -0
- package/dist/compiler/containerDaimonOwnershipGuardRender.js +204 -0
- package/dist/compiler/containerDaimonUidEntrypointRender.d.ts +24 -0
- package/dist/compiler/containerDaimonUidEntrypointRender.js +291 -0
- package/dist/compiler/containerEntrypointRender.d.ts +7 -0
- package/dist/compiler/containerEntrypointRender.js +28 -22
- package/dist/compiler/containerPersistentMounts.d.ts +30 -0
- package/dist/compiler/containerPersistentMounts.js +66 -0
- package/dist/compiler/containerReadinessPaths.d.ts +1 -0
- package/dist/compiler/containerReadinessPaths.js +1 -0
- package/dist/compiler/containerRuntimeLinkMaterializer.d.ts +2 -0
- package/dist/compiler/containerRuntimeLinkMaterializer.js +12 -0
- package/dist/compiler/containerRuntimeReadinessRender.d.ts +7 -0
- package/dist/compiler/containerRuntimeReadinessRender.js +40 -0
- package/dist/compiler/containerStateOwnershipRender.d.ts +4 -0
- package/dist/compiler/containerStateOwnershipRender.js +75 -0
- package/dist/compiler/containerTargetResources.d.ts +32 -1
- package/dist/compiler/containerTargetResources.js +115 -15
- package/dist/compiler/containerVolumeBootstrap.d.ts +3 -0
- package/dist/compiler/containerVolumeBootstrap.js +3 -0
- package/dist/compiler/containerWorkspaceResourceRender.js +52 -1
- package/dist/compiler/daimonTelemetryArtifacts.d.ts +2 -2
- package/dist/compiler/daimonTelemetryArtifacts.js +5 -10
- package/dist/compiler/deploymentLineage.d.ts +40 -0
- package/dist/compiler/deploymentLineage.js +50 -0
- package/dist/compiler/index.d.ts +5 -0
- package/dist/compiler/index.js +5 -0
- package/dist/compiler/initProject.d.ts +2 -0
- package/dist/compiler/initProject.js +39 -1
- package/dist/compiler/localMoltnetAuthority.d.ts +64 -0
- package/dist/compiler/localMoltnetAuthority.js +177 -0
- package/dist/compiler/mcpPlaceholders.d.ts +11 -0
- package/dist/compiler/mcpPlaceholders.js +58 -0
- package/dist/compiler/mcpServerInheritance.d.ts +18 -0
- package/dist/compiler/mcpServerInheritance.js +43 -0
- package/dist/compiler/memoryArtifacts.d.ts +1 -1
- package/dist/compiler/memoryArtifacts.js +108 -32
- package/dist/compiler/modelEnv.d.ts +5 -0
- package/dist/compiler/modelEnv.js +8 -2
- package/dist/compiler/moltnetArtifactPaths.d.ts +17 -12
- package/dist/compiler/moltnetArtifactPaths.js +17 -15
- package/dist/compiler/moltnetArtifactTypes.d.ts +11 -0
- package/dist/compiler/moltnetArtifacts.d.ts +1 -1
- package/dist/compiler/moltnetArtifacts.js +53 -12
- package/dist/compiler/moltnetBinaries.d.ts +16 -4
- package/dist/compiler/moltnetBinaries.js +46 -6
- package/dist/compiler/moltnetClientConfig.js +1 -1
- package/dist/compiler/moltnetConfigLowering.d.ts +3 -1
- package/dist/compiler/moltnetConfigLowering.js +30 -6
- package/dist/compiler/moltnetNodeConfig.js +1 -1
- package/dist/compiler/moltnetReleaseAuthority.d.ts +24 -1
- package/dist/compiler/moltnetReleaseAuthority.js +33 -4
- package/dist/compiler/moltnetRepresentativeResolution.d.ts +1 -1
- package/dist/compiler/moltnetRepresentativeResolution.js +2 -2
- package/dist/compiler/moltnetResolution.js +9 -15
- package/dist/compiler/moltnetRoomMemberships.js +20 -5
- package/dist/compiler/moltnetRoomPolicyCompatibility.d.ts +1 -1
- package/dist/compiler/moltnetRoomPolicyCompatibility.js +3 -1
- package/dist/compiler/moltnetRuntimeConfig.d.ts +1 -1
- package/dist/compiler/moltnetRuntimeConfig.js +22 -2
- package/dist/compiler/moltnetServerPlans.js +19 -0
- package/dist/compiler/organizationExternalParticipants.d.ts +3 -0
- package/dist/compiler/organizationExternalParticipants.js +176 -0
- package/dist/compiler/organizationIdentity.d.ts +3 -9
- package/dist/compiler/organizationIdentity.js +37 -270
- package/dist/compiler/organizationIdentityGraph.d.ts +15 -0
- package/dist/compiler/organizationIdentityGraph.js +115 -0
- package/dist/compiler/organizationReadyEvidence.d.ts +8 -0
- package/dist/compiler/organizationReadyEvidence.js +23 -3
- package/dist/compiler/preflightCompilePlan.d.ts +9 -0
- package/dist/compiler/preflightCompilePlan.js +38 -0
- package/dist/compiler/recordingAgentFacts.d.ts +4 -0
- package/dist/compiler/recordingAgentFacts.js +35 -0
- package/dist/compiler/recordingCapability.d.ts +4 -0
- package/dist/compiler/recordingCapability.js +22 -0
- package/dist/compiler/recordingReport.d.ts +4 -0
- package/dist/compiler/recordingReport.js +18 -0
- package/dist/compiler/runProject.d.ts +6 -3
- package/dist/compiler/runProject.js +34 -6
- package/dist/compiler/runProjectAuth.d.ts +3 -1
- package/dist/compiler/runProjectAuth.js +19 -3
- package/dist/compiler/runProjectDaimonCodexDocker.d.ts +3 -0
- package/dist/compiler/runProjectDaimonCodexDocker.js +36 -0
- package/dist/compiler/runProjectDocker.d.ts +8 -4
- package/dist/compiler/runProjectDocker.js +43 -18
- package/dist/compiler/runProjectDockerDaimonGuards.d.ts +15 -0
- package/dist/compiler/runProjectDockerDaimonGuards.js +122 -0
- package/dist/compiler/runProjectDockerReservation.d.ts +3 -0
- package/dist/compiler/runProjectDockerReservation.js +118 -0
- package/dist/compiler/runProjectLifecycle.js +1 -1
- package/dist/compiler/surfaces.d.ts +1 -2
- package/dist/compiler/surfaces.js +0 -1
- package/dist/compiler/syncProjectAuth.js +2 -1
- package/dist/compiler/training/broker/clockProbe.d.ts +6 -0
- package/dist/compiler/training/broker/clockProbe.js +27 -0
- package/dist/compiler/training/broker/declaration.d.ts +47 -0
- package/dist/compiler/training/broker/declaration.js +57 -0
- package/dist/compiler/training/broker/entrypoint.d.ts +39 -0
- package/dist/compiler/training/broker/entrypoint.js +126 -0
- package/dist/compiler/training/broker/evaluatorSecrets.d.ts +2 -0
- package/dist/compiler/training/broker/evaluatorSecrets.js +60 -0
- package/dist/compiler/training/broker/index.d.ts +11 -0
- package/dist/compiler/training/broker/index.js +11 -0
- package/dist/compiler/training/broker/main.d.ts +2 -0
- package/dist/compiler/training/broker/main.js +14 -0
- package/dist/compiler/training/broker/paths.d.ts +236 -0
- package/dist/compiler/training/broker/paths.js +249 -0
- package/dist/compiler/training/broker/processes.d.ts +51 -0
- package/dist/compiler/training/broker/processes.js +102 -0
- package/dist/compiler/training/broker/projection.d.ts +52 -0
- package/dist/compiler/training/broker/projection.js +88 -0
- package/dist/compiler/training/broker/provisioning.d.ts +78 -0
- package/dist/compiler/training/broker/provisioning.js +231 -0
- package/dist/compiler/training/broker/receipt.d.ts +77 -0
- package/dist/compiler/training/broker/receipt.js +110 -0
- package/dist/compiler/training/broker/registration.d.ts +43 -0
- package/dist/compiler/training/broker/registration.js +110 -0
- package/dist/compiler/training/broker/reset.d.ts +9 -0
- package/dist/compiler/training/broker/reset.js +71 -0
- package/dist/compiler/training/broker/runtime.d.ts +22 -0
- package/dist/compiler/training/broker/runtime.js +127 -0
- package/dist/compiler/training/broker/seccompRoutes.d.ts +31 -0
- package/dist/compiler/training/broker/seccompRoutes.js +36 -0
- package/dist/compiler/training/broker/supervisor.d.ts +108 -0
- package/dist/compiler/training/broker/supervisor.js +172 -0
- package/dist/compiler/training/broker/taskClock.d.ts +5 -0
- package/dist/compiler/training/broker/taskClock.js +41 -0
- package/dist/compiler/training/compiledAgent.d.ts +21 -0
- package/dist/compiler/training/compiledAgent.js +62 -0
- package/dist/compiler/training/container/contract.d.ts +54 -0
- package/dist/compiler/training/container/contract.js +51 -0
- package/dist/compiler/training/container/evaluators.d.ts +48 -0
- package/dist/compiler/training/container/evaluators.js +50 -0
- package/dist/compiler/training/container/grokWriteback.d.ts +8 -0
- package/dist/compiler/training/container/grokWriteback.js +26 -0
- package/dist/compiler/training/container/index.d.ts +5 -0
- package/dist/compiler/training/container/index.js +3 -0
- package/dist/compiler/training/container/launch.d.ts +21 -0
- package/dist/compiler/training/container/launch.js +264 -0
- package/dist/compiler/training/container/nativeSlots.d.ts +14 -0
- package/dist/compiler/training/container/nativeSlots.js +13 -0
- package/dist/compiler/training/container/outputCopy.d.ts +2 -0
- package/dist/compiler/training/container/outputCopy.js +72 -0
- package/dist/compiler/training/container/outputVolume.d.ts +27 -0
- package/dist/compiler/training/container/outputVolume.js +161 -0
- package/dist/compiler/training/container/prepare.d.ts +10 -0
- package/dist/compiler/training/container/prepare.js +125 -0
- package/dist/compiler/training/container/process.d.ts +14 -0
- package/dist/compiler/training/container/process.js +70 -0
- package/dist/compiler/training/container/security.d.ts +38 -0
- package/dist/compiler/training/container/security.js +68 -0
- package/dist/compiler/training/container/subjectIsolation.d.ts +5 -0
- package/dist/compiler/training/container/subjectIsolation.js +15 -0
- package/dist/compiler/training/context.d.ts +15 -0
- package/dist/compiler/training/context.js +93 -0
- package/dist/compiler/training/contract.d.ts +144 -0
- package/dist/compiler/training/contract.js +36 -0
- package/dist/compiler/training/execution.d.ts +417 -0
- package/dist/compiler/training/execution.js +160 -0
- package/dist/compiler/training/index.d.ts +12 -0
- package/dist/compiler/training/index.js +10 -0
- package/dist/compiler/training/moments.d.ts +80 -0
- package/dist/compiler/training/moments.js +118 -0
- package/dist/compiler/training/output.d.ts +2 -0
- package/dist/compiler/training/output.js +20 -0
- package/dist/compiler/training/plan/contract.d.ts +287 -0
- package/dist/compiler/training/plan/contract.js +49 -0
- package/dist/compiler/training/plan/index.d.ts +5 -0
- package/dist/compiler/training/plan/index.js +4 -0
- package/dist/compiler/training/plan/load.d.ts +9 -0
- package/dist/compiler/training/plan/load.js +153 -0
- package/dist/compiler/training/plan/references.d.ts +19 -0
- package/dist/compiler/training/plan/references.js +57 -0
- package/dist/compiler/training/plan/resolve.d.ts +4 -0
- package/dist/compiler/training/plan/resolve.js +73 -0
- package/dist/compiler/training/plan/targets.d.ts +11 -0
- package/dist/compiler/training/plan/targets.js +71 -0
- package/dist/compiler/training/plan/types.d.ts +36 -0
- package/dist/compiler/training/plan/types.js +1 -0
- package/dist/compiler/training/preparation/assets/Dockerfile +109 -0
- package/dist/compiler/training/preparation/assets/package-lock.json +3787 -0
- package/dist/compiler/training/preparation/broker.d.ts +21 -0
- package/dist/compiler/training/preparation/broker.js +45 -0
- package/dist/compiler/training/preparation/contextModes.d.ts +12 -0
- package/dist/compiler/training/preparation/contextModes.js +38 -0
- package/dist/compiler/training/preparation/contract.d.ts +207 -0
- package/dist/compiler/training/preparation/contract.js +113 -0
- package/dist/compiler/training/preparation/copyAssets.d.ts +1 -0
- package/dist/compiler/training/preparation/copyAssets.js +8 -0
- package/dist/compiler/training/preparation/daimonParent.d.ts +42 -0
- package/dist/compiler/training/preparation/daimonParent.js +114 -0
- package/dist/compiler/training/preparation/files.d.ts +29 -0
- package/dist/compiler/training/preparation/files.js +146 -0
- package/dist/compiler/training/preparation/image.d.ts +28 -0
- package/dist/compiler/training/preparation/image.js +107 -0
- package/dist/compiler/training/preparation/index.d.ts +3 -0
- package/dist/compiler/training/preparation/index.js +2 -0
- package/dist/compiler/training/preparation/inputs.d.ts +24 -0
- package/dist/compiler/training/preparation/inputs.js +101 -0
- package/dist/compiler/training/preparation/prepare.d.ts +38 -0
- package/dist/compiler/training/preparation/prepare.js +223 -0
- package/dist/compiler/training/preparation/scratch.d.ts +8 -0
- package/dist/compiler/training/preparation/scratch.js +114 -0
- package/dist/compiler/training/repair/compatibility.d.ts +11 -0
- package/dist/compiler/training/repair/compatibility.js +34 -0
- package/dist/compiler/training/repair/contract.d.ts +840 -0
- package/dist/compiler/training/repair/contract.js +33 -0
- package/dist/compiler/training/repair/index.d.ts +3 -0
- package/dist/compiler/training/repair/index.js +3 -0
- package/dist/compiler/training/repair/prepare.d.ts +382 -0
- package/dist/compiler/training/repair/prepare.js +78 -0
- package/dist/compiler/training/repair/witness.d.ts +352 -0
- package/dist/compiler/training/repair/witness.js +48 -0
- package/dist/compiler/training/resolution.d.ts +25 -0
- package/dist/compiler/training/resolution.js +69 -0
- package/dist/compiler/training/rewind/contract.d.ts +321 -0
- package/dist/compiler/training/rewind/contract.js +39 -0
- package/dist/compiler/training/rewind/deployedResource.d.ts +22 -0
- package/dist/compiler/training/rewind/deployedResource.js +19 -0
- package/dist/compiler/training/rewind/feed.d.ts +12 -0
- package/dist/compiler/training/rewind/feed.js +182 -0
- package/dist/compiler/training/rewind/feedContent.d.ts +6 -0
- package/dist/compiler/training/rewind/feedContent.js +38 -0
- package/dist/compiler/training/rewind/git.d.ts +8 -0
- package/dist/compiler/training/rewind/git.js +159 -0
- package/dist/compiler/training/rewind/gitArchive.d.ts +2 -0
- package/dist/compiler/training/rewind/gitArchive.js +7 -0
- package/dist/compiler/training/rewind/gitHistory.d.ts +3 -0
- package/dist/compiler/training/rewind/gitHistory.js +55 -0
- package/dist/compiler/training/rewind/gitProcess.d.ts +19 -0
- package/dist/compiler/training/rewind/gitProcess.js +81 -0
- package/dist/compiler/training/rewind/gitTree.d.ts +14 -0
- package/dist/compiler/training/rewind/gitTree.js +90 -0
- package/dist/compiler/training/rewind/history.d.ts +28 -0
- package/dist/compiler/training/rewind/history.js +239 -0
- package/dist/compiler/training/rewind/index.d.ts +18 -0
- package/dist/compiler/training/rewind/index.js +15 -0
- package/dist/compiler/training/rewind/inputs.d.ts +9 -0
- package/dist/compiler/training/rewind/inputs.js +67 -0
- package/dist/compiler/training/rewind/instant.d.ts +4 -0
- package/dist/compiler/training/rewind/instant.js +24 -0
- package/dist/compiler/training/rewind/leakCheck.d.ts +10 -0
- package/dist/compiler/training/rewind/leakCheck.js +56 -0
- package/dist/compiler/training/rewind/leakFeed.d.ts +5 -0
- package/dist/compiler/training/rewind/leakFeed.js +25 -0
- package/dist/compiler/training/rewind/leakFiles.d.ts +10 -0
- package/dist/compiler/training/rewind/leakFiles.js +106 -0
- package/dist/compiler/training/rewind/leakGit.d.ts +3 -0
- package/dist/compiler/training/rewind/leakGit.js +78 -0
- package/dist/compiler/training/rewind/leakGitPayload.d.ts +4 -0
- package/dist/compiler/training/rewind/leakGitPayload.js +57 -0
- package/dist/compiler/training/rewind/leakInputs.d.ts +7 -0
- package/dist/compiler/training/rewind/leakInputs.js +135 -0
- package/dist/compiler/training/rewind/leakLayout.d.ts +2 -0
- package/dist/compiler/training/rewind/leakLayout.js +17 -0
- package/dist/compiler/training/rewind/leakProvenance.d.ts +3 -0
- package/dist/compiler/training/rewind/leakProvenance.js +88 -0
- package/dist/compiler/training/rewind/materialize.d.ts +136 -0
- package/dist/compiler/training/rewind/materialize.js +212 -0
- package/dist/compiler/training/rewind/memory.d.ts +10 -0
- package/dist/compiler/training/rewind/memory.js +84 -0
- package/dist/compiler/training/rewind/memorySchemas.d.ts +87 -0
- package/dist/compiler/training/rewind/memorySchemas.js +50 -0
- package/dist/compiler/training/rewind/moltnet.d.ts +2 -0
- package/dist/compiler/training/rewind/moltnet.js +54 -0
- package/dist/compiler/training/rewind/moltnetJson.d.ts +13 -0
- package/dist/compiler/training/rewind/moltnetJson.js +180 -0
- package/dist/compiler/training/rewind/moltnetSchemas.d.ts +1226 -0
- package/dist/compiler/training/rewind/moltnetSchemas.js +75 -0
- package/dist/compiler/training/rewind/moltnetSqlite.d.ts +31 -0
- package/dist/compiler/training/rewind/moltnetSqlite.js +192 -0
- package/dist/compiler/training/rewind/moltnetSqliteData.d.ts +10 -0
- package/dist/compiler/training/rewind/moltnetSqliteData.js +113 -0
- package/dist/compiler/training/rewind/recordInput.d.ts +40 -0
- package/dist/compiler/training/rewind/recordInput.js +49 -0
- package/dist/compiler/training/rewind/recordedBundle.d.ts +4 -0
- package/dist/compiler/training/rewind/recordedBundle.js +58 -0
- package/dist/compiler/training/rewind/recordedCommit.d.ts +2 -0
- package/dist/compiler/training/rewind/recordedCommit.js +10 -0
- package/dist/compiler/training/rewind/select.d.ts +18 -0
- package/dist/compiler/training/rewind/select.js +64 -0
- package/dist/compiler/training/rewind/snapshotManifest.d.ts +42 -0
- package/dist/compiler/training/rewind/snapshotManifest.js +134 -0
- package/dist/compiler/training/rewind/taskClock.d.ts +12 -0
- package/dist/compiler/training/rewind/taskClock.js +40 -0
- package/dist/compiler/training/rewind/timestamps.d.ts +4 -0
- package/dist/compiler/training/rewind/timestamps.js +26 -0
- package/dist/compiler/training/rewind/types.d.ts +43 -0
- package/dist/compiler/training/rewind/types.js +1 -0
- package/dist/compiler/training/rewind/volumes.d.ts +12 -0
- package/dist/compiler/training/rewind/volumes.js +58 -0
- package/dist/compiler/training/selection.d.ts +7 -0
- package/dist/compiler/training/selection.js +15 -0
- package/dist/compiler/types.d.ts +7 -2
- package/dist/compiler/upProject.d.ts +27 -1
- package/dist/compiler/upProject.js +135 -180
- package/dist/compiler/upProjectHandoff.d.ts +62 -0
- package/dist/compiler/upProjectHandoff.js +204 -0
- package/dist/compiler/upReceipt.js +49 -4
- package/dist/compiler/updateProjectModels.js +1 -0
- package/dist/compiler/view/types.d.ts +1 -1
- package/dist/compiler/workspaceBundleArtifacts.d.ts +18 -0
- package/dist/compiler/workspaceBundleArtifacts.js +155 -0
- package/dist/compiler/workspaceBundleCache.d.ts +23 -0
- package/dist/compiler/workspaceBundleCache.js +79 -0
- package/dist/compiler/workspaceBundleDependencies.d.ts +21 -0
- package/dist/compiler/workspaceBundleDependencies.js +122 -0
- package/dist/compiler/workspaceBundleFiles.d.ts +51 -0
- package/dist/compiler/workspaceBundleFiles.js +251 -0
- package/dist/compiler/workspaceBundleGenerated.d.ts +25 -0
- package/dist/compiler/workspaceBundleGenerated.js +103 -0
- package/dist/compiler/workspaceBundleGit.d.ts +64 -0
- package/dist/compiler/workspaceBundleGit.js +154 -0
- package/dist/compiler/workspaceBundleKey.d.ts +34 -0
- package/dist/compiler/workspaceBundleKey.js +17 -0
- package/dist/compiler/workspaceBundleResolve.d.ts +56 -0
- package/dist/compiler/workspaceBundleResolve.js +144 -0
- package/dist/compiler/workspaceBundleRun.d.ts +41 -0
- package/dist/compiler/workspaceBundleRun.js +79 -0
- package/dist/compiler/workspaceBundleTar.d.ts +47 -0
- package/dist/compiler/workspaceBundleTar.js +140 -0
- package/dist/compiler/workspaceBundleTree.d.ts +15 -0
- package/dist/compiler/workspaceBundleTree.js +58 -0
- package/dist/compiler/workspaceGitFetch.d.ts +41 -0
- package/dist/compiler/workspaceGitFetch.js +155 -0
- package/dist/compiler/workspaceGitPins.d.ts +33 -0
- package/dist/compiler/workspaceGitPins.js +127 -0
- package/dist/compiler/workspaceResources.d.ts +9 -2
- package/dist/compiler/workspaceResources.js +39 -7
- package/dist/deployment/activation.d.ts +3 -0
- package/dist/deployment/activation.js +12 -0
- package/dist/deployment/artifactsExportPlan.js +51 -1
- package/dist/deployment/canaryCutover.d.ts +42 -0
- package/dist/deployment/canaryCutover.js +140 -0
- package/dist/deployment/candidateDiagnostics.d.ts +15 -0
- package/dist/deployment/candidateDiagnostics.js +90 -0
- package/dist/deployment/candidateRecording.d.ts +8 -0
- package/dist/deployment/candidateRecording.js +22 -0
- package/dist/deployment/dockerLogs.js +4 -1
- package/dist/deployment/dockerManager.d.ts +5 -3
- package/dist/deployment/dockerManager.js +21 -5
- package/dist/deployment/dockerProbeGateway.d.ts +17 -0
- package/dist/deployment/dockerProbeGateway.js +17 -2
- package/dist/deployment/downDeployment.d.ts +7 -0
- package/dist/deployment/downDeployment.js +114 -9
- package/dist/deployment/downReceiptTypes.d.ts +17 -2
- package/dist/deployment/downReceiptTypes.js +17 -2
- package/dist/deployment/homeStore.d.ts +9 -1
- package/dist/deployment/homeStore.js +16 -53
- package/dist/deployment/index.d.ts +10 -0
- package/dist/deployment/index.js +10 -0
- package/dist/deployment/lifecycleCompletionContracts.d.ts +66 -0
- package/dist/deployment/lifecycleCompletionContracts.js +34 -0
- package/dist/deployment/lifecycleCompletionPaths.d.ts +4 -1
- package/dist/deployment/lifecycleCompletionPaths.js +3 -0
- package/dist/deployment/lifecycleCompletionPublication.d.ts +2 -0
- package/dist/deployment/lifecycleCompletionPublication.js +18 -4
- package/dist/deployment/lifecycleCompletionStore.d.ts +1 -1
- package/dist/deployment/lifecycleCompletionStore.js +7 -7
- package/dist/deployment/lifecycleUpRecords.d.ts +11 -0
- package/dist/deployment/lifecycleUpRecords.js +127 -0
- package/dist/deployment/native/AGENTS.md +11 -0
- package/dist/deployment/native/rename-noreplace-arm64 +0 -0
- package/dist/deployment/native/rename-noreplace-arm64.provenance.json +1 -0
- package/dist/deployment/native/rename-noreplace-x64 +0 -0
- package/dist/deployment/native/rename-noreplace-x64.provenance.json +1 -0
- package/dist/deployment/noReplaceActivation.d.ts +17 -0
- package/dist/deployment/noReplaceActivation.js +50 -0
- package/dist/deployment/organizationHandoffAuthorityFsBudget.d.ts +110 -0
- package/dist/deployment/organizationHandoffAuthorityFsBudget.js +156 -0
- package/dist/deployment/organizationHandoffAuthorityFsClient.js +82 -27
- package/dist/deployment/organizationHandoffAuthorityFsElection.d.ts +21 -0
- package/dist/deployment/organizationHandoffAuthorityFsElection.js +57 -0
- package/dist/deployment/organizationHandoffAuthorityFsWorker.js +254 -108
- package/dist/deployment/organizationHandoffAuthorityFsWorkerStall.fixture.d.ts +1 -0
- package/dist/deployment/organizationHandoffAuthorityFsWorkerStall.fixture.js +16 -0
- package/dist/deployment/organizationHandoffAuthorityStore.js +14 -7
- package/dist/deployment/organizationHandoffAuthorityTypes.d.ts +2 -2
- package/dist/deployment/organizationHandoffAuthorityTypes.js +2 -1
- package/dist/deployment/organizationReady.d.ts +2 -0
- package/dist/deployment/organizationReady.js +36 -4
- package/dist/deployment/pidLock.d.ts +25 -0
- package/dist/deployment/pidLock.js +81 -0
- package/dist/deployment/productStateClone.d.ts +43 -0
- package/dist/deployment/productStateClone.js +319 -0
- package/dist/deployment/record.d.ts +85 -1
- package/dist/deployment/record.js +11 -5
- package/dist/deployment/recordPublication.d.ts +15 -0
- package/dist/deployment/recordPublication.js +76 -0
- package/dist/deployment/recordedMemoryRetention.d.ts +18 -0
- package/dist/deployment/recordedMemoryRetention.js +27 -0
- package/dist/deployment/resourceLog.d.ts +140 -0
- package/dist/deployment/resourceLog.js +78 -0
- package/dist/deployment/upLifecycleRecoveryState.d.ts +23 -0
- package/dist/deployment/upLifecycleRecoveryState.js +12 -0
- package/dist/deployment/upReceiptTypes.d.ts +32 -6
- package/dist/deployment/upReceiptTypes.js +29 -2
- package/dist/deployment/workspaceResourceMigration.d.ts +55 -0
- package/dist/deployment/workspaceResourceMigration.js +315 -0
- package/dist/dev/project.d.ts +7 -0
- package/dist/dev/project.js +9 -0
- package/dist/distribution/buildDistributionReport.d.ts +3 -0
- package/dist/distribution/buildDistributionReport.js +5 -0
- package/dist/distribution/consumeImage.d.ts +5 -0
- package/dist/distribution/consumeImage.js +115 -98
- package/dist/distribution/consumeImageDaimonDocker.d.ts +3 -0
- package/dist/distribution/consumeImageDaimonDocker.js +45 -0
- package/dist/distribution/consumeImageLifecycle.d.ts +20 -0
- package/dist/distribution/consumeImageLifecycle.js +242 -0
- package/dist/distribution/consumeImageSupport.d.ts +19 -0
- package/dist/distribution/consumeImageSupport.js +40 -0
- package/dist/distribution/distributionReportSchema.d.ts +58 -1
- package/dist/distribution/distributionReportSchema.js +35 -2
- package/dist/distribution/dockerRunner.d.ts +6 -1
- package/dist/distribution/dockerRunner.js +31 -4
- package/dist/distribution/imageRuntimeAuth.d.ts +9 -1
- package/dist/distribution/imageRuntimeAuth.js +70 -1
- package/dist/distribution/index.d.ts +1 -1
- package/dist/distribution/index.js +1 -1
- package/dist/distribution/preflight.js +5 -1
- package/dist/distribution/renderImageInterface.js +1 -1
- package/dist/distribution/types.d.ts +29 -1
- package/dist/distribution/types.js +3 -0
- package/dist/evidenceExportHelper/boundedExecutor.d.ts +3 -0
- package/dist/evidenceExportHelper/boundedExecutor.js +33 -0
- package/dist/evidenceExportHelper/helperProgram.mjs +156 -0
- package/dist/evidenceExportHelper/index.d.ts +4 -0
- package/dist/evidenceExportHelper/index.js +4 -0
- package/dist/evidenceExportHelper/preparedAuthority.d.ts +64 -0
- package/dist/evidenceExportHelper/preparedAuthority.js +228 -0
- package/dist/evidenceExportHelper/preparedBuilder.d.ts +10 -0
- package/dist/evidenceExportHelper/preparedBuilder.js +183 -0
- package/dist/evidenceExportHelper/preparedBuilderTypes.d.ts +19 -0
- package/dist/evidenceExportHelper/preparedBuilderTypes.js +1 -0
- package/dist/evidenceExportHelper/recipe.d.ts +7 -0
- package/dist/evidenceExportHelper/recipe.js +83 -0
- package/dist/filesystem/durableWrite.d.ts +10 -0
- package/dist/filesystem/durableWrite.js +87 -0
- package/dist/filesystem/index.d.ts +2 -0
- package/dist/filesystem/index.js +2 -0
- package/dist/filesystem/io.d.ts +2 -0
- package/dist/filesystem/io.js +16 -1
- package/dist/filesystem/retainedJsonl.d.ts +23 -0
- package/dist/filesystem/retainedJsonl.js +123 -0
- package/dist/manifest/commandSchemas.d.ts +5 -0
- package/dist/manifest/commandSchemas.js +5 -0
- package/dist/manifest/executionSchemas.d.ts +47 -0
- package/dist/manifest/executionSchemas.js +31 -2
- package/dist/manifest/index.d.ts +2 -0
- package/dist/manifest/index.js +2 -0
- package/dist/manifest/loadManifest.js +3 -26
- package/dist/manifest/mcpSchemas.d.ts +62 -0
- package/dist/manifest/mcpSchemas.js +57 -8
- package/dist/manifest/memorySchemas.d.ts +1 -1
- package/dist/manifest/memorySchemas.js +1 -1
- package/dist/manifest/parseManifest.d.ts +7 -0
- package/dist/manifest/parseManifest.js +65 -0
- package/dist/manifest/renderSpawnfile.js +4 -1
- package/dist/manifest/renderSpawnfileNetworks.js +11 -0
- package/dist/manifest/renderSpawnfileWorkspace.js +10 -1
- package/dist/manifest/scheduleSchemas.d.ts +3 -1
- package/dist/manifest/scheduleSchemas.js +91 -5
- package/dist/manifest/schemas.d.ts +1419 -120
- package/dist/manifest/schemas.js +19 -6
- package/dist/manifest/teamNetworkAccessSchemas.d.ts +5 -1
- package/dist/manifest/teamNetworkAccessSchemas.js +11 -0
- package/dist/manifest/teamNetworkAuthSchemas.d.ts +1 -1
- package/dist/manifest/teamNetworkSchemas.d.ts +18 -4
- package/dist/manifest/teamNetworkSchemas.js +19 -1
- package/dist/manifest/teamNetworkServerSchemas.d.ts +8 -3
- package/dist/manifest/teamNetworkServerSchemas.js +18 -2
- package/dist/manifest/trainingDataSchemas.d.ts +357 -0
- package/dist/manifest/trainingDataSchemas.js +31 -0
- package/dist/manifest/trainingSchemas.d.ts +49 -0
- package/dist/manifest/trainingSchemas.js +44 -0
- package/dist/manifest/volumeFeedSchemas.d.ts +52 -0
- package/dist/manifest/volumeFeedSchemas.js +104 -0
- package/dist/manifest/workspaceSchemas.d.ts +194 -1
- package/dist/manifest/workspaceSchemas.js +117 -2
- package/dist/recording/compose.d.ts +3 -0
- package/dist/recording/compose.js +93 -0
- package/dist/recording/deployment.d.ts +15 -0
- package/dist/recording/deployment.js +38 -0
- package/dist/recording/history.d.ts +16 -0
- package/dist/recording/history.js +47 -0
- package/dist/recording/index.d.ts +9 -0
- package/dist/recording/index.js +9 -0
- package/dist/recording/moment.d.ts +61 -0
- package/dist/recording/moment.js +36 -0
- package/dist/recording/parse.d.ts +15 -0
- package/dist/recording/parse.js +74 -0
- package/dist/recording/read.d.ts +8 -0
- package/dist/recording/read.js +61 -0
- package/dist/recording/store.d.ts +10 -0
- package/dist/recording/store.js +94 -0
- package/dist/recording/sync.d.ts +24 -0
- package/dist/recording/sync.js +126 -0
- package/dist/recording/types.d.ts +45 -0
- package/dist/recording/types.js +2 -0
- package/dist/release/drainControl.d.ts +54 -0
- package/dist/release/drainControl.js +137 -0
- package/dist/release/drainPhase.d.ts +37 -0
- package/dist/release/drainPhase.js +161 -0
- package/dist/release/index.d.ts +11 -0
- package/dist/release/index.js +11 -0
- package/dist/release/ledger.d.ts +75 -0
- package/dist/release/ledger.js +111 -0
- package/dist/release/notify.d.ts +58 -0
- package/dist/release/notify.js +126 -0
- package/dist/release/pending.d.ts +35 -0
- package/dist/release/pending.js +60 -0
- package/dist/release/postDeploy.d.ts +32 -0
- package/dist/release/postDeploy.js +62 -0
- package/dist/release/releaseDefaults.d.ts +9 -0
- package/dist/release/releaseDefaults.js +115 -0
- package/dist/release/releaseDocker.d.ts +38 -0
- package/dist/release/releaseDocker.js +94 -0
- package/dist/release/releaseTypes.d.ts +94 -0
- package/dist/release/releaseTypes.js +1 -0
- package/dist/release/runRelease.d.ts +9 -0
- package/dist/release/runRelease.js +218 -0
- package/dist/release/swap.d.ts +23 -0
- package/dist/release/swap.js +55 -0
- package/dist/release/types.d.ts +50 -0
- package/dist/release/types.js +29 -0
- package/dist/report/index.d.ts +1 -0
- package/dist/report/index.js +1 -0
- package/dist/report/recording.d.ts +57 -0
- package/dist/report/recording.js +26 -0
- package/dist/report/types.d.ts +92 -4
- package/dist/runtime/common.d.ts +28 -1
- package/dist/runtime/common.js +33 -3
- package/dist/runtime/container.js +46 -35
- package/dist/runtime/daimon/adapter.d.ts +14 -0
- package/dist/runtime/daimon/adapter.js +254 -0
- package/dist/runtime/daimon/attention.d.ts +8 -0
- package/dist/runtime/daimon/attention.js +32 -0
- package/dist/runtime/daimon/config.d.ts +29 -0
- package/dist/runtime/daimon/config.js +321 -0
- package/dist/runtime/daimon/contract-manifest.json +1 -0
- package/dist/runtime/daimon/contract-manifest.sha256 +1 -0
- package/dist/runtime/daimon/contractManifest.d.ts +346 -0
- package/dist/runtime/daimon/contractManifest.js +335 -0
- package/dist/runtime/daimon/grokModel.d.ts +19 -0
- package/dist/runtime/daimon/grokModel.js +33 -0
- package/dist/runtime/daimon/grokTurnLimits.d.ts +25 -0
- package/dist/runtime/daimon/grokTurnLimits.js +51 -0
- package/dist/runtime/daimon/grokWorkerConfigBytes.d.ts +43 -0
- package/dist/runtime/daimon/grokWorkerConfigBytes.js +53 -0
- package/dist/runtime/daimon/grokWorkerContract.d.ts +27 -0
- package/dist/runtime/daimon/grokWorkerContract.js +60 -0
- package/dist/runtime/daimon/memory.d.ts +57 -0
- package/dist/runtime/daimon/memory.js +125 -0
- package/dist/runtime/daimon/recording.d.ts +19 -0
- package/dist/runtime/daimon/recording.js +50 -0
- package/dist/runtime/daimon/runAuth.d.ts +51 -0
- package/dist/runtime/daimon/runAuth.js +279 -0
- package/dist/runtime/daimon/runtimeIdentity.d.ts +22 -0
- package/dist/runtime/daimon/runtimeIdentity.js +22 -0
- package/dist/runtime/daimon/scheduleAuthority.d.ts +11 -0
- package/dist/runtime/daimon/scheduleAuthority.js +31 -0
- package/dist/runtime/daimon/wakeMoments.d.ts +15 -0
- package/dist/runtime/daimon/wakeMoments.js +17 -0
- package/dist/runtime/daimonInstall.d.ts +3 -0
- package/dist/runtime/daimonInstall.js +25 -0
- package/dist/runtime/index.d.ts +5 -0
- package/dist/runtime/index.js +5 -0
- package/dist/runtime/install.d.ts +5 -0
- package/dist/runtime/install.js +4 -0
- package/dist/runtime/localDaimonAuthority.d.ts +11 -0
- package/dist/runtime/localDaimonAuthority.js +77 -0
- package/dist/runtime/mnemeMcp.d.ts +13 -0
- package/dist/runtime/mnemeMcp.js +26 -0
- package/dist/runtime/openclaw/adapter.js +5 -2
- package/dist/runtime/pi/adapter.d.ts +0 -1
- package/dist/runtime/pi/adapter.js +5 -6
- package/dist/runtime/pi/appCliSource.js +1 -1
- package/dist/runtime/pi/appScheduleSource.js +6 -2
- package/dist/runtime/pi/appTemplateTypes.d.ts +1 -1
- package/dist/runtime/pi/containerTargets.js +6 -0
- package/dist/runtime/picoclaw/adapter.js +5 -2
- package/dist/runtime/registry.d.ts +6 -0
- package/dist/runtime/registry.js +32 -3
- package/dist/runtime/scheduleUtils.d.ts +1 -0
- package/dist/runtime/scheduleUtils.js +5 -1
- package/dist/runtime/types.d.ts +40 -0
- package/dist/runtime/usageLedger.d.ts +158 -0
- package/dist/runtime/usageLedger.js +269 -0
- package/dist/runtime/usageLedgerRead.d.ts +54 -0
- package/dist/runtime/usageLedgerRead.js +102 -0
- package/dist/runtime/usageRequestLedger.d.ts +42 -0
- package/dist/runtime/usageRequestLedger.js +72 -0
- package/dist/shared/daimonCodexDocker.d.ts +32 -0
- package/dist/shared/daimonCodexDocker.js +120 -0
- package/dist/shared/daimonGrokSeccompProfile.d.ts +10 -0
- package/dist/shared/daimonGrokSeccompProfile.js +11 -0
- package/dist/shared/index.d.ts +3 -0
- package/dist/shared/index.js +3 -0
- package/dist/shared/recording.d.ts +8 -0
- package/dist/shared/recording.js +25 -0
- package/dist/shared/types.d.ts +1 -1
- package/dist/shared/volumeNames.d.ts +6 -0
- package/dist/shared/volumeNames.js +14 -0
- package/dist/target/dockerArtifactsProvider.js +34 -7
- package/dist/target/dockerBaseImage.d.ts +2 -0
- package/dist/target/dockerBaseImage.js +11 -0
- package/dist/target/dockerCommandExecutor.d.ts +11 -0
- package/dist/target/dockerCommandExecutor.js +53 -2
- package/dist/target/dockerCommandExecutorCore.d.ts +2 -1
- package/dist/target/dockerCommandExecutorCore.js +5 -3
- package/dist/target/dockerPublicArtifactSnapshot.d.ts +3 -3
- package/dist/target/dockerPublicArtifactSnapshot.js +17 -33
- package/dist/target/dockerTarget.d.ts +1 -0
- package/dist/target/dockerTargetBinding.d.ts +1 -2
- package/dist/target/dockerTargetBinding.js +4 -4
- package/dist/target/dockerTargetExecFile.d.ts +19 -0
- package/dist/target/dockerTargetExecFile.js +194 -0
- package/dist/target/dockerWorldServiceProvider.d.ts +4 -0
- package/dist/target/dockerWorldServiceProvider.js +13 -1
- package/dist/target/evidenceExport.d.ts +3 -1
- package/dist/target/evidenceExport.js +12 -3
- package/dist/target/evidenceExportOperationsTestKit.js +3 -3
- package/dist/target/evidenceExportProvider.d.ts +2 -0
- package/dist/target/evidenceExportProvider.js +15 -5
- package/dist/target/publicArtifactSnapshot.d.ts +31 -0
- package/dist/target/publicArtifactSnapshot.js +37 -3
- package/dist/volume/feedLand.d.ts +31 -0
- package/dist/volume/feedLand.js +174 -0
- package/dist/volume/feedLandings.d.ts +45 -0
- package/dist/volume/feedLandings.js +111 -0
- package/dist/volume/feedLayout.d.ts +61 -0
- package/dist/volume/feedLayout.js +234 -0
- package/dist/volume/feedLock.d.ts +7 -0
- package/dist/volume/feedLock.js +131 -0
- package/dist/volume/feedManifest.d.ts +27 -0
- package/dist/volume/feedManifest.js +123 -0
- package/dist/volume/feedPrepare.d.ts +16 -0
- package/dist/volume/feedPrepare.js +228 -0
- package/dist/volume/feedProject.d.ts +39 -0
- package/dist/volume/feedProject.js +92 -0
- package/dist/volume/feedRecord.d.ts +55 -0
- package/dist/volume/feedRecord.js +148 -0
- package/dist/volume/feedRef.d.ts +43 -0
- package/dist/volume/feedRef.js +117 -0
- package/dist/volume/feedRefresh.d.ts +15 -0
- package/dist/volume/feedRefresh.js +187 -0
- package/dist/volume/feedSource.d.ts +66 -0
- package/dist/volume/feedSource.js +104 -0
- package/dist/volume/feedTarget.d.ts +70 -0
- package/dist/volume/feedTarget.js +9 -0
- package/dist/volume/feedTestKit.d.ts +11 -0
- package/dist/volume/feedTestKit.js +45 -0
- package/dist/volume/feedVerify.d.ts +18 -0
- package/dist/volume/feedVerify.js +104 -0
- package/dist/volume/index.d.ts +13 -0
- package/dist/volume/index.js +13 -0
- package/examples/README.md +45 -0
- package/examples/agent-with-subagents/AGENTS.md +3 -0
- package/examples/agent-with-subagents/Spawnfile +30 -0
- package/examples/agent-with-subagents/subagents/critic/AGENTS.md +3 -0
- package/examples/agent-with-subagents/subagents/critic/Spawnfile +15 -0
- package/examples/agent-with-subagents/subagents/researcher/AGENTS.md +3 -0
- package/examples/agent-with-subagents/subagents/researcher/Spawnfile +17 -0
- package/examples/daimon-org/Spawnfile +68 -0
- package/examples/daimon-org/TEAM.md +4 -0
- package/examples/daimon-org/agents/mapper/AGENTS.md +4 -0
- package/examples/daimon-org/agents/mapper/Spawnfile +37 -0
- package/examples/daimon-org/shared/skills/file-note/SKILL.md +9 -0
- package/examples/daimon-org/teams/review/Spawnfile +53 -0
- package/examples/daimon-org/teams/review/agents/reviewer/AGENTS.md +4 -0
- package/examples/daimon-org/teams/review/agents/reviewer/Spawnfile +37 -0
- package/examples/daimon-public-host/AGENTS.md +3 -0
- package/examples/daimon-public-host/Spawnfile +21 -0
- package/examples/distribution-org/Spawnfile +43 -0
- package/examples/distribution-org/TEAM.md +4 -0
- package/examples/distribution-org/agents/coordinator/AGENTS.md +1 -0
- package/examples/distribution-org/agents/coordinator/Spawnfile +20 -0
- package/examples/distribution-org/agents/researcher/AGENTS.md +1 -0
- package/examples/distribution-org/agents/researcher/Spawnfile +20 -0
- package/examples/jungian-daimon-org/Spawnfile +41 -0
- package/examples/jungian-daimon-org/TEAM.md +21 -0
- package/examples/jungian-daimon-org/teams/luna/Spawnfile +47 -0
- package/examples/jungian-daimon-org/teams/luna/TEAM.md +4 -0
- package/examples/jungian-daimon-org/teams/luna/agents/animus/AGENTS.md +10 -0
- package/examples/jungian-daimon-org/teams/luna/agents/animus/Spawnfile +33 -0
- package/examples/jungian-daimon-org/teams/luna/agents/representative/AGENTS.md +21 -0
- package/examples/jungian-daimon-org/teams/luna/agents/representative/Spawnfile +30 -0
- package/examples/jungian-daimon-org/teams/luna/agents/shadow/AGENTS.md +10 -0
- package/examples/jungian-daimon-org/teams/luna/agents/shadow/Spawnfile +33 -0
- package/examples/jungian-daimon-org/teams/selene/Spawnfile +47 -0
- package/examples/jungian-daimon-org/teams/selene/TEAM.md +4 -0
- package/examples/jungian-daimon-org/teams/selene/agents/animus/AGENTS.md +10 -0
- package/examples/jungian-daimon-org/teams/selene/agents/animus/Spawnfile +33 -0
- package/examples/jungian-daimon-org/teams/selene/agents/representative/AGENTS.md +19 -0
- package/examples/jungian-daimon-org/teams/selene/agents/representative/Spawnfile +33 -0
- package/examples/jungian-daimon-org/teams/selene/agents/shadow/AGENTS.md +10 -0
- package/examples/jungian-daimon-org/teams/selene/agents/shadow/Spawnfile +30 -0
- package/examples/mixed-runtime-org/Spawnfile +71 -0
- package/examples/mixed-runtime-org/TEAM.md +8 -0
- package/examples/mixed-runtime-org/agents/analyst/AGENTS.md +8 -0
- package/examples/mixed-runtime-org/agents/analyst/Spawnfile +27 -0
- package/examples/mixed-runtime-org/agents/conductor/AGENTS.md +8 -0
- package/examples/mixed-runtime-org/agents/conductor/Spawnfile +27 -0
- package/examples/mixed-runtime-org/agents/localist/AGENTS.md +7 -0
- package/examples/mixed-runtime-org/agents/localist/Spawnfile +50 -0
- package/examples/moltnet-team-chat/Spawnfile +43 -0
- package/examples/moltnet-team-chat/TEAM.md +5 -0
- package/examples/moltnet-team-chat/agents/coordinator/AGENTS.md +9 -0
- package/examples/moltnet-team-chat/agents/coordinator/Spawnfile +26 -0
- package/examples/moltnet-team-chat/teams/analysis/Spawnfile +23 -0
- package/examples/moltnet-team-chat/teams/analysis/TEAM.md +3 -0
- package/examples/moltnet-team-chat/teams/analysis/agents/observer/AGENTS.md +5 -0
- package/examples/moltnet-team-chat/teams/analysis/agents/observer/Spawnfile +19 -0
- package/examples/moltnet-team-chat/teams/analysis/agents/representative/AGENTS.md +5 -0
- package/examples/moltnet-team-chat/teams/analysis/agents/representative/Spawnfile +19 -0
- package/examples/moltnet-team-chat/teams/field/Spawnfile +41 -0
- package/examples/moltnet-team-chat/teams/field/TEAM.md +3 -0
- package/examples/moltnet-team-chat/teams/field/agents/observer/AGENTS.md +5 -0
- package/examples/moltnet-team-chat/teams/field/agents/observer/Spawnfile +26 -0
- package/examples/moltnet-team-chat/teams/field/agents/representative/AGENTS.md +11 -0
- package/examples/moltnet-team-chat/teams/field/agents/representative/Spawnfile +26 -0
- package/examples/single-agent/AGENTS.md +3 -0
- package/examples/single-agent/HEARTBEAT.md +3 -0
- package/examples/single-agent/IDENTITY.md +3 -0
- package/examples/single-agent/MEMORY.md +3 -0
- package/examples/single-agent/SOUL.md +3 -0
- package/examples/single-agent/Spawnfile +41 -0
- package/examples/single-agent/skills/web_search/SKILL.md +6 -0
- package/moltnet-releases.json +5 -4
- package/package.json +36 -9
- package/runtimes.yaml +8 -3
- package/dist/cli/targetWorldClockCrossProcess.test-helper.d.ts +0 -13
- package/dist/cli/targetWorldClockCrossProcess.test-helper.js +0 -109
- package/dist/deployment/providerRuntimeBoundaryScanner.test-helper.d.ts +0 -8
- package/dist/deployment/providerRuntimeBoundaryScanner.test-helper.js +0 -60
- package/dist/deployment/simfileFixtureBoundary.test-helper.d.ts +0 -8
- package/dist/deployment/simfileFixtureBoundary.test-helper.js +0 -103
- package/dist/ownership/simfileRunOperatorInputs.d.ts +0 -103
- package/dist/ownership/simfileRunOperatorInputs.js +0 -139
- package/dist/target/cleanupRunDocker.test-helper.d.ts +0 -67
- package/dist/target/cleanupRunDocker.test-helper.js +0 -238
|
@@ -1,11 +1,17 @@
|
|
|
1
|
+
import { VOLUME_BOOTSTRAP_MARKER, VOLUME_BOOTSTRAP_MARKER_CONTENT } from "./containerVolumeBootstrap.js";
|
|
1
2
|
const shellQuote = (value) => `'${value.replace(/'/g, `'\"'\"'`)}'`;
|
|
2
3
|
export const createWorkspaceResourceCommands = (plan) => (plan.resources ?? []).flatMap((resource) => {
|
|
3
4
|
const readonlyFlag = resource.mode === "readonly" ? "readonly" : "mutable";
|
|
4
5
|
if (resource.kind === "volume") {
|
|
6
|
+
const resolved = resource;
|
|
5
7
|
return [
|
|
6
|
-
`prepare_volume_resource ${shellQuote(resource.id)} ${shellQuote(resource.linkPath)} ${shellQuote(resource.backingPath)} ${shellQuote(readonlyFlag)}`
|
|
8
|
+
`prepare_volume_resource ${shellQuote(resource.id)} ${shellQuote(resource.linkPath)} ${shellQuote(resource.backingPath)} ${shellQuote(readonlyFlag)} ${shellQuote(resolved.resolvedIdentity ?? "")}`
|
|
7
9
|
];
|
|
8
10
|
}
|
|
11
|
+
if (resource.kind === "bundle")
|
|
12
|
+
return [
|
|
13
|
+
`prepare_bundle_resource ${shellQuote(resource.id)} ${shellQuote(resource.linkPath)} ${shellQuote(resource.backingPath)} ${shellQuote(resource.archivePath ?? "")} ${shellQuote(resource.sha256 ?? "")}`
|
|
14
|
+
];
|
|
9
15
|
const selectorKind = resource.branch
|
|
10
16
|
? "branch"
|
|
11
17
|
: resource.tag
|
|
@@ -58,15 +64,60 @@ export const createWorkspaceResourceShellFunctions = () => [
|
|
|
58
64
|
' local link_path="$2"',
|
|
59
65
|
' local backing_path="$3"',
|
|
60
66
|
' local mode="$4"',
|
|
67
|
+
' local identity="$5"',
|
|
61
68
|
' mkdir -p "$backing_path"',
|
|
62
69
|
' if [ ! -d "$backing_path" ]; then',
|
|
63
70
|
' echo "Workspace volume resource $id backing path is not a directory: $backing_path" >&2',
|
|
64
71
|
" exit 1",
|
|
65
72
|
" fi",
|
|
73
|
+
' local sentinel="$backing_path/.spawnfile-resource-identity"',
|
|
74
|
+
' if [ -f "$sentinel" ]; then',
|
|
75
|
+
' if [ "$(cat "$sentinel")" != "$identity" ]; then',
|
|
76
|
+
' echo "Workspace volume resource $id replacement sentinel mismatch" >&2',
|
|
77
|
+
" exit 1",
|
|
78
|
+
" fi",
|
|
79
|
+
" else",
|
|
80
|
+
` local bootstrap="$backing_path/${VOLUME_BOOTSTRAP_MARKER}"`,
|
|
81
|
+
` local bootstrap_claim="$backing_path/${VOLUME_BOOTSTRAP_MARKER}.claim"`,
|
|
82
|
+
' local first_entry',
|
|
83
|
+
' first_entry="$(find "$backing_path" -mindepth 1 -maxdepth 1 -print -quit)"',
|
|
84
|
+
' if [ -n "$first_entry" ]; then',
|
|
85
|
+
' if [ "$first_entry" = "$bootstrap" ]; then',
|
|
86
|
+
' mv -T --no-clobber -- "$bootstrap" "$bootstrap_claim"',
|
|
87
|
+
' elif [ "$first_entry" != "$bootstrap_claim" ]; then',
|
|
88
|
+
' echo "Workspace volume resource $id is nonempty without an authenticated replacement sentinel" >&2',
|
|
89
|
+
" exit 1",
|
|
90
|
+
" fi",
|
|
91
|
+
' if [ "$(find "$backing_path" -mindepth 1 -maxdepth 1 ! -name ' + `'${VOLUME_BOOTSTRAP_MARKER}.claim'` + ' -print -quit)" != "" ] || [ -L "$bootstrap_claim" ] || [ ! -f "$bootstrap_claim" ] || [ "$(stat -c "%u:%g:%a:%h" "$bootstrap_claim")" != "${volume_bootstrap_uid}:${volume_bootstrap_gid}:600:1" ] || [ "$(cat "$bootstrap_claim")" != "' + VOLUME_BOOTSTRAP_MARKER_CONTENT + '" ]; then',
|
|
92
|
+
' echo "Workspace volume resource $id bootstrap marker mismatch" >&2',
|
|
93
|
+
" exit 1",
|
|
94
|
+
" fi",
|
|
95
|
+
' rm -- "$bootstrap_claim"',
|
|
96
|
+
" fi",
|
|
97
|
+
' printf "%s\\n" "$identity" > "$sentinel"',
|
|
98
|
+
" fi",
|
|
66
99
|
' mark_readonly_resource "$backing_path" "$mode"',
|
|
67
100
|
' prepare_resource_link "$id" "$link_path" "$backing_path"',
|
|
68
101
|
"}",
|
|
69
102
|
"",
|
|
103
|
+
"prepare_bundle_resource() {",
|
|
104
|
+
' local id="$1" link_path="$2" backing_path="$3" archive="$4" identity="$5"',
|
|
105
|
+
' [ -f "$archive" ] || { echo "Workspace bundle $id archive missing" >&2; exit 1; }',
|
|
106
|
+
' local sentinel="$backing_path/.spawnfile-bundle-identity"',
|
|
107
|
+
// An empty directory is not a materialized bundle: the Grok broker preflight starts before this runs and
|
|
108
|
+
// needs every worker deny target to exist, so the Daimon entrypoint pre-creates missing resource backings
|
|
109
|
+
// empty. Anything with content still has to attest its identity, exactly as a git backing does above.
|
|
110
|
+
' if [ -e "$backing_path" ] && { [ ! -d "$backing_path" ] || [ -L "$backing_path" ] || ! directory_is_empty "$backing_path"; }; then',
|
|
111
|
+
' [ -f "$sentinel" ] && [ "$(cat "$sentinel")" = "$identity" ] || { echo "Workspace bundle $id identity mismatch" >&2; exit 1; }',
|
|
112
|
+
" else",
|
|
113
|
+
' mkdir -p "$backing_path"',
|
|
114
|
+
' tar --no-same-owner --no-same-permissions -xf "$archive" -C "$backing_path"',
|
|
115
|
+
' printf %s "$identity" > "$sentinel"',
|
|
116
|
+
" fi",
|
|
117
|
+
' mark_readonly_resource "$backing_path" readonly',
|
|
118
|
+
' prepare_resource_link "$id" "$link_path" "$backing_path"',
|
|
119
|
+
"}",
|
|
120
|
+
"",
|
|
70
121
|
"prepare_git_resource() {",
|
|
71
122
|
' local id="$1"',
|
|
72
123
|
' local link_path="$2"',
|
|
@@ -2,7 +2,7 @@ import type { ContainerPersistentMountReport } from "../report/index.js";
|
|
|
2
2
|
import type { CompiledNodeArtifact, RuntimeTargetPlan } from "./containerArtifactsTypes.js";
|
|
3
3
|
import type { CompilePlan } from "./types.js";
|
|
4
4
|
export interface DaimonTelemetryArtifactBundle {
|
|
5
|
-
/** One durable volume per
|
|
5
|
+
/** One durable volume per legacy Pi agent, mounted onto its telemetry directory. */
|
|
6
6
|
mounts: ContainerPersistentMountReport[];
|
|
7
7
|
/** Runtime target plan id (e.g. "pi-app") -> { node id -> telemetry persistent mount id
|
|
8
8
|
* }, so `containerArtifacts.ts` can stamp `runtime_instances[].telemetry_mount_ids` and
|
|
@@ -11,7 +11,7 @@ export interface DaimonTelemetryArtifactBundle {
|
|
|
11
11
|
telemetryMountIdsByInstance: Map<string, Record<string, string>>;
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
|
-
* Registers one run-scoped durable volume per
|
|
14
|
+
* Registers one run-scoped durable volume per legacy Pi agent for its daimon turn/wake
|
|
15
15
|
* causal telemetry directory (`<instanceRoot>/runtime/agents/<slug>/telemetry` — the parent
|
|
16
16
|
* of `causal.jsonl`, see `appCoreSource.ts`'s `runtimeHomePath`/`instanceRoot`), mirroring
|
|
17
17
|
* exactly how `moltnetArtifacts.ts` mounts the Moltnet causal directory (Piece 4b,
|
|
@@ -1,16 +1,11 @@
|
|
|
1
1
|
import path from "node:path/posix";
|
|
2
2
|
import { resolveNoopolisRunId } from "../runtime/index.js";
|
|
3
3
|
import { createPersistentVolumeName } from "./moltnetArtifactPaths.js";
|
|
4
|
-
/**
|
|
5
|
-
|
|
6
|
-
* `export const daimonAdapter: RuntimeAdapter = { ...piAdapter, name: "daimon" }`, which
|
|
7
|
-
* shares `piAdapter.container`/`createContainerTargets` byte-for-byte). Both write daimon
|
|
8
|
-
* turn/wake causal telemetry the same way, under `runtimeHomePath` (appCoreSource.ts:189),
|
|
9
|
-
* so both need the telemetry mount, not just the literal "pi" runtime name. */
|
|
10
|
-
const DAIMON_TELEMETRY_RUNTIME_NAMES = new Set(["daimon", "pi"]);
|
|
4
|
+
/** Only the legacy generated Pi application writes this telemetry layout. */
|
|
5
|
+
const PI_TELEMETRY_RUNTIME_NAMES = new Set(["pi"]);
|
|
11
6
|
const createTelemetryMountId = (agentSlug) => `agent-${agentSlug}-daimon-telemetry`;
|
|
12
7
|
/**
|
|
13
|
-
* Registers one run-scoped durable volume per
|
|
8
|
+
* Registers one run-scoped durable volume per legacy Pi agent for its daimon turn/wake
|
|
14
9
|
* causal telemetry directory (`<instanceRoot>/runtime/agents/<slug>/telemetry` — the parent
|
|
15
10
|
* of `causal.jsonl`, see `appCoreSource.ts`'s `runtimeHomePath`/`instanceRoot`), mirroring
|
|
16
11
|
* exactly how `moltnetArtifacts.ts` mounts the Moltnet causal directory (Piece 4b,
|
|
@@ -31,7 +26,7 @@ export const createDaimonTelemetryArtifacts = (plan, runtimePlans, compiledNodes
|
|
|
31
26
|
const mounts = [];
|
|
32
27
|
const telemetryMountIdsByInstance = new Map();
|
|
33
28
|
for (const runtimePlan of runtimePlans) {
|
|
34
|
-
if (!
|
|
29
|
+
if (!PI_TELEMETRY_RUNTIME_NAMES.has(runtimePlan.runtimeName) || !runtimePlan.instancePaths.homePath) {
|
|
35
30
|
continue;
|
|
36
31
|
}
|
|
37
32
|
const instanceRoot = runtimePlan.instancePaths.instanceRoot ?? path.dirname(runtimePlan.instancePaths.homePath);
|
|
@@ -46,7 +41,7 @@ export const createDaimonTelemetryArtifacts = (plan, runtimePlans, compiledNodes
|
|
|
46
41
|
id: mountId,
|
|
47
42
|
mount_path: path.join(instanceRoot, "runtime", "agents", agentSlug, "telemetry"),
|
|
48
43
|
reason: `daimon turn/wake causal telemetry for ${agentSlug}`,
|
|
49
|
-
volume_name: createPersistentVolumeName(plan.root, mountId,
|
|
44
|
+
volume_name: createPersistentVolumeName(plan.root, mountId, runId)
|
|
50
45
|
});
|
|
51
46
|
mountIdsByNodeId[nodeId] = mountId;
|
|
52
47
|
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { ContainerPersistentMountReport } from "../report/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Lineage namespace for `spawnfile dev up`.
|
|
4
|
+
*
|
|
5
|
+
* A derived `exclusive-reattach` volume name folds in the deployment lineage,
|
|
6
|
+
* and `dev up` used to delegate straight to `up` with no distinguishing
|
|
7
|
+
* identity — so both defaulted to the lineage `default` and resolved to the
|
|
8
|
+
* SAME host volumes. A dev deployment started while production was stopped
|
|
9
|
+
* therefore attached production's volumes and wrote into live state. That is
|
|
10
|
+
* strictly worse than the loss this branch set out to fix: loss is recoverable
|
|
11
|
+
* from a backup, a dev agent editing production's message store is not.
|
|
12
|
+
*
|
|
13
|
+
* The namespace applies to the lineage only, never to the deployment name, so
|
|
14
|
+
* deployment records, labels, and `spawnfile dev stop --deployment <name>` are
|
|
15
|
+
* unchanged. It also applies regardless of `--deployment`, so `dev up
|
|
16
|
+
* --deployment blue` and `up --deployment blue` still cannot collide.
|
|
17
|
+
*/
|
|
18
|
+
export declare const DEV_DEPLOYMENT_LINEAGE_NAMESPACE = "dev";
|
|
19
|
+
/**
|
|
20
|
+
* Combines a lineage namespace with a deployment name. The result is only ever
|
|
21
|
+
* a hash input (`createExclusiveReattachVolumeName`), so any injective
|
|
22
|
+
* encoding works; `\0` cannot occur in a deployment name and therefore cannot
|
|
23
|
+
* be used to forge a collision with a production lineage.
|
|
24
|
+
*/
|
|
25
|
+
export declare const resolveDeploymentLineage: (deploymentName: string, namespace?: string) => string;
|
|
26
|
+
/**
|
|
27
|
+
* An author-declared volume name carries no lineage — that is the point of
|
|
28
|
+
* declaring it, and it is what lets an operator pre-create or migrate the
|
|
29
|
+
* volume. It also means the namespace above cannot protect a declared volume:
|
|
30
|
+
* `dev up` would attach production's `clank-newsroom-store` by that exact name.
|
|
31
|
+
*
|
|
32
|
+
* "I declared a stable host volume name" and "this is a throwaway dev
|
|
33
|
+
* deployment" are contradictory intentions, and the branch's established
|
|
34
|
+
* posture for that situation is to fail closed with a named, explicit
|
|
35
|
+
* override rather than to warn into a scrolling log. So `dev up` refuses,
|
|
36
|
+
* listing the exact volumes it would have attached, and `--allow-declared-volumes`
|
|
37
|
+
* is how an operator says they meant it (a scratch clone of the project, or a
|
|
38
|
+
* deliberate read of real state).
|
|
39
|
+
*/
|
|
40
|
+
export declare const assertNoDeclaredVolumeNames: (mounts: readonly ContainerPersistentMountReport[]) => void;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { SpawnfileError } from "../shared/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Lineage namespace for `spawnfile dev up`.
|
|
4
|
+
*
|
|
5
|
+
* A derived `exclusive-reattach` volume name folds in the deployment lineage,
|
|
6
|
+
* and `dev up` used to delegate straight to `up` with no distinguishing
|
|
7
|
+
* identity — so both defaulted to the lineage `default` and resolved to the
|
|
8
|
+
* SAME host volumes. A dev deployment started while production was stopped
|
|
9
|
+
* therefore attached production's volumes and wrote into live state. That is
|
|
10
|
+
* strictly worse than the loss this branch set out to fix: loss is recoverable
|
|
11
|
+
* from a backup, a dev agent editing production's message store is not.
|
|
12
|
+
*
|
|
13
|
+
* The namespace applies to the lineage only, never to the deployment name, so
|
|
14
|
+
* deployment records, labels, and `spawnfile dev stop --deployment <name>` are
|
|
15
|
+
* unchanged. It also applies regardless of `--deployment`, so `dev up
|
|
16
|
+
* --deployment blue` and `up --deployment blue` still cannot collide.
|
|
17
|
+
*/
|
|
18
|
+
export const DEV_DEPLOYMENT_LINEAGE_NAMESPACE = "dev";
|
|
19
|
+
/**
|
|
20
|
+
* Combines a lineage namespace with a deployment name. The result is only ever
|
|
21
|
+
* a hash input (`createExclusiveReattachVolumeName`), so any injective
|
|
22
|
+
* encoding works; `\0` cannot occur in a deployment name and therefore cannot
|
|
23
|
+
* be used to forge a collision with a production lineage.
|
|
24
|
+
*/
|
|
25
|
+
export const resolveDeploymentLineage = (deploymentName, namespace) => namespace ? `${namespace}\0${deploymentName}` : deploymentName;
|
|
26
|
+
/**
|
|
27
|
+
* An author-declared volume name carries no lineage — that is the point of
|
|
28
|
+
* declaring it, and it is what lets an operator pre-create or migrate the
|
|
29
|
+
* volume. It also means the namespace above cannot protect a declared volume:
|
|
30
|
+
* `dev up` would attach production's `clank-newsroom-store` by that exact name.
|
|
31
|
+
*
|
|
32
|
+
* "I declared a stable host volume name" and "this is a throwaway dev
|
|
33
|
+
* deployment" are contradictory intentions, and the branch's established
|
|
34
|
+
* posture for that situation is to fail closed with a named, explicit
|
|
35
|
+
* override rather than to warn into a scrolling log. So `dev up` refuses,
|
|
36
|
+
* listing the exact volumes it would have attached, and `--allow-declared-volumes`
|
|
37
|
+
* is how an operator says they meant it (a scratch clone of the project, or a
|
|
38
|
+
* deliberate read of real state).
|
|
39
|
+
*/
|
|
40
|
+
export const assertNoDeclaredVolumeNames = (mounts) => {
|
|
41
|
+
const declared = [...new Set(mounts.flatMap((mount) => mount.declared_volume_name ? [mount.declared_volume_name] : []))].sort();
|
|
42
|
+
if (declared.length === 0)
|
|
43
|
+
return;
|
|
44
|
+
throw new SpawnfileError("validation_error", `This dev deployment would attach ${declared.length} author-declared volume`
|
|
45
|
+
+ `${declared.length === 1 ? "" : "s"} by name, which a production deployment of `
|
|
46
|
+
+ `this project uses too: ${declared.join(", ")}. A declared name carries no `
|
|
47
|
+
+ "deployment identity, so dev would write into that live state. Remove the "
|
|
48
|
+
+ "declared name, run dev against a copy of the project, or pass "
|
|
49
|
+
+ "--allow-declared-volumes to attach them deliberately.");
|
|
50
|
+
};
|
package/dist/compiler/index.d.ts
CHANGED
|
@@ -4,10 +4,13 @@ export * from "./buildProject.js";
|
|
|
4
4
|
export * from "./publishProject.js";
|
|
5
5
|
export * from "./upProject.js";
|
|
6
6
|
export * from "./compileProject.js";
|
|
7
|
+
export * from "./containerBackedMountRender.js";
|
|
8
|
+
export * from "./deploymentLineage.js";
|
|
7
9
|
export * from "./dockerBuildContext.js";
|
|
8
10
|
export * from "./dockerBuildSkip.js";
|
|
9
11
|
export * from "./initProject.js";
|
|
10
12
|
export * from "./moltnetRoomMemberships.js";
|
|
13
|
+
export * from "./preflightCompilePlan.js";
|
|
11
14
|
export * from "./runProject.js";
|
|
12
15
|
export * from "./syncProjectAuth.js";
|
|
13
16
|
export * from "./types.js";
|
|
@@ -17,3 +20,5 @@ export * from "./updateProjectSurfaces.js";
|
|
|
17
20
|
export * from "./upReceipt.js";
|
|
18
21
|
export * from "./worldBindings.js";
|
|
19
22
|
export * from "./view/index.js";
|
|
23
|
+
export * from "./training/index.js";
|
|
24
|
+
export * from "./recordingReport.js";
|
package/dist/compiler/index.js
CHANGED
|
@@ -4,10 +4,13 @@ export * from "./buildProject.js";
|
|
|
4
4
|
export * from "./publishProject.js";
|
|
5
5
|
export * from "./upProject.js";
|
|
6
6
|
export * from "./compileProject.js";
|
|
7
|
+
export * from "./containerBackedMountRender.js";
|
|
8
|
+
export * from "./deploymentLineage.js";
|
|
7
9
|
export * from "./dockerBuildContext.js";
|
|
8
10
|
export * from "./dockerBuildSkip.js";
|
|
9
11
|
export * from "./initProject.js";
|
|
10
12
|
export * from "./moltnetRoomMemberships.js";
|
|
13
|
+
export * from "./preflightCompilePlan.js";
|
|
11
14
|
export * from "./runProject.js";
|
|
12
15
|
export * from "./syncProjectAuth.js";
|
|
13
16
|
export * from "./types.js";
|
|
@@ -17,3 +20,5 @@ export * from "./updateProjectSurfaces.js";
|
|
|
17
20
|
export * from "./upReceipt.js";
|
|
18
21
|
export * from "./worldBindings.js";
|
|
19
22
|
export * from "./view/index.js";
|
|
23
|
+
export * from "./training/index.js";
|
|
24
|
+
export * from "./recordingReport.js";
|
|
@@ -2,7 +2,9 @@ export interface InitProjectOptions {
|
|
|
2
2
|
directory?: string;
|
|
3
3
|
runtime?: string;
|
|
4
4
|
team?: boolean;
|
|
5
|
+
template?: string;
|
|
5
6
|
}
|
|
7
|
+
export declare const listInitTemplates: () => Promise<string[]>;
|
|
6
8
|
export declare const initProject: (options?: InitProjectOptions) => Promise<{
|
|
7
9
|
createdFiles: string[];
|
|
8
10
|
directory: string;
|
|
@@ -1,9 +1,22 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
-
import {
|
|
2
|
+
import { readdir } from "node:fs/promises";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { copyDirectory, ensureDirectory, ensureGitignoreEntry, fileExists, writeUtf8File } from "../filesystem/index.js";
|
|
3
5
|
import { createTeamScaffoldManifest, renderSpawnfile } from "../manifest/index.js";
|
|
4
6
|
import { getRuntimeAdapter } from "../runtime/index.js";
|
|
5
7
|
import { DEFAULT_OUTPUT_DIRECTORY, SpawnfileError } from "../shared/index.js";
|
|
6
8
|
const DEFAULT_AGENT_RUNTIME = "openclaw";
|
|
9
|
+
// Bundled example org projects double as `init --template` starting points.
|
|
10
|
+
// Resolves to the package's examples/ dir in both dev (src/) and the published
|
|
11
|
+
// package (dist/), so examples/ must ship in package.json "files".
|
|
12
|
+
const EXAMPLES_ROOT = fileURLToPath(new URL("../../examples", import.meta.url));
|
|
13
|
+
export const listInitTemplates = async () => {
|
|
14
|
+
const entries = await readdir(EXAMPLES_ROOT, { withFileTypes: true });
|
|
15
|
+
return entries
|
|
16
|
+
.filter((entry) => entry.isDirectory())
|
|
17
|
+
.map((entry) => entry.name)
|
|
18
|
+
.sort();
|
|
19
|
+
};
|
|
7
20
|
export const initProject = async (options = {}) => {
|
|
8
21
|
const directory = path.resolve(options.directory ?? process.cwd());
|
|
9
22
|
const manifestPath = path.join(directory, "Spawnfile");
|
|
@@ -11,10 +24,35 @@ export const initProject = async (options = {}) => {
|
|
|
11
24
|
if (await fileExists(manifestPath)) {
|
|
12
25
|
throw new SpawnfileError("io_error", `Refusing to overwrite existing Spawnfile at ${manifestPath}`);
|
|
13
26
|
}
|
|
27
|
+
if (options.template && (options.team || options.runtime)) {
|
|
28
|
+
throw new SpawnfileError("validation_error", "--template cannot be combined with --team or --runtime");
|
|
29
|
+
}
|
|
14
30
|
if (options.team && options.runtime) {
|
|
15
31
|
throw new SpawnfileError("validation_error", "Team scaffolds do not accept --runtime");
|
|
16
32
|
}
|
|
33
|
+
// Resolve and validate the template before creating anything, so an unknown
|
|
34
|
+
// template name never leaves an empty directory behind.
|
|
35
|
+
let templateSource;
|
|
36
|
+
if (options.template) {
|
|
37
|
+
const templates = await listInitTemplates();
|
|
38
|
+
if (!templates.includes(options.template)) {
|
|
39
|
+
throw new SpawnfileError("validation_error", `Unknown template "${options.template}". Available templates: ${templates.join(", ")}`);
|
|
40
|
+
}
|
|
41
|
+
templateSource = path.join(EXAMPLES_ROOT, options.template);
|
|
42
|
+
}
|
|
17
43
|
await ensureDirectory(directory);
|
|
44
|
+
if (templateSource) {
|
|
45
|
+
await copyDirectory(templateSource, directory);
|
|
46
|
+
await ensureGitignoreEntry(directory, `${DEFAULT_OUTPUT_DIRECTORY}/`);
|
|
47
|
+
// Report only the files this template contributed — never pre-existing
|
|
48
|
+
// contents of the target directory.
|
|
49
|
+
const sourceEntries = await readdir(templateSource, { recursive: true, withFileTypes: true });
|
|
50
|
+
const createdFiles = sourceEntries
|
|
51
|
+
.filter((entry) => entry.isFile())
|
|
52
|
+
.map((entry) => path.join(directory, path.relative(templateSource, path.join(entry.parentPath, entry.name))))
|
|
53
|
+
.sort();
|
|
54
|
+
return { createdFiles, directory };
|
|
55
|
+
}
|
|
18
56
|
const createdFiles = [manifestPath];
|
|
19
57
|
const gitignorePath = path.join(directory, ".gitignore");
|
|
20
58
|
const hadGitignore = await fileExists(gitignorePath);
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { MoltnetTargetArchitecture } from "./moltnetReleaseAuthority.js";
|
|
2
|
+
export interface LocalMoltnetReleaseIdentity {
|
|
3
|
+
readonly architecture: MoltnetTargetArchitecture;
|
|
4
|
+
readonly asset: string;
|
|
5
|
+
readonly asset_sha256: `sha256:${string}`;
|
|
6
|
+
readonly capabilities: readonly ["daimon-bridge", "pi-bridge"];
|
|
7
|
+
readonly development: Readonly<{
|
|
8
|
+
mode: "local-development";
|
|
9
|
+
non_production: true;
|
|
10
|
+
unsigned: true;
|
|
11
|
+
unpublished: true;
|
|
12
|
+
}>;
|
|
13
|
+
readonly source_sha256: `sha256:${string}`;
|
|
14
|
+
readonly source_inputs?: Readonly<{
|
|
15
|
+
dependencies_sha256: `sha256:${string}`;
|
|
16
|
+
mode: "source-bundle";
|
|
17
|
+
source_sha256: `sha256:${string}`;
|
|
18
|
+
toolchain: string;
|
|
19
|
+
}>;
|
|
20
|
+
readonly version: "spawnfile.moltnet-release-identity.v1";
|
|
21
|
+
}
|
|
22
|
+
interface LocalMoltnetReleaseStamp {
|
|
23
|
+
readonly arch: MoltnetTargetArchitecture;
|
|
24
|
+
readonly asset: string;
|
|
25
|
+
readonly capabilities: readonly ["daimon-bridge", "pi-bridge"];
|
|
26
|
+
readonly development: LocalMoltnetReleaseIdentity["development"];
|
|
27
|
+
readonly sha256: string;
|
|
28
|
+
readonly source_sha256: `sha256:${string}`;
|
|
29
|
+
readonly source_inputs?: LocalMoltnetReleaseIdentity["source_inputs"];
|
|
30
|
+
readonly stamp_version: "spawnfile.local-moltnet-release-stamp.v1";
|
|
31
|
+
}
|
|
32
|
+
/** @internal Complete synthetic bridge contract used by local artifact verification. */
|
|
33
|
+
export declare const createLocalMoltnetBridgeProbeConfig: (kind: "daimon" | "pi", directory: string) => string;
|
|
34
|
+
/** @internal Strict parser shared with provenance regression tests. */
|
|
35
|
+
export declare const parseLocalReleaseStamp: (raw: string, architecture: MoltnetTargetArchitecture) => LocalMoltnetReleaseStamp;
|
|
36
|
+
/**
|
|
37
|
+
* The platform actually executing this compile -- never the build target.
|
|
38
|
+
*
|
|
39
|
+
* `architecture` is absent when the host CPU is one Spawnfile cannot name as a
|
|
40
|
+
* Moltnet target (so it can never accidentally equal one), and `platform` is a
|
|
41
|
+
* raw `process.platform`.
|
|
42
|
+
*/
|
|
43
|
+
export interface MoltnetExecutionHost {
|
|
44
|
+
readonly architecture?: MoltnetTargetArchitecture;
|
|
45
|
+
readonly platform: NodeJS.Platform;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Whether this host can run the built binary directly, deciding between the
|
|
49
|
+
* direct-exec probe and the Docker cross-platform probe below.
|
|
50
|
+
*
|
|
51
|
+
* A local Moltnet build is ALWAYS `GOOS=linux` (the asset is
|
|
52
|
+
* `moltnet_linux_<arch>.tar.gz`), so matching the architecture alone is not
|
|
53
|
+
* enough: a darwin/arm64 host and a linux/arm64 binary share a CPU
|
|
54
|
+
* architecture and share nothing else. Executing that ELF on macOS fails with
|
|
55
|
+
* ENOEXEC and the probe reports the binary as unprovable, rejecting a
|
|
56
|
+
* perfectly good build. The host must therefore match on OS *and*
|
|
57
|
+
* architecture; everything else goes through Docker, which can run a
|
|
58
|
+
* linux/<arch> image anywhere.
|
|
59
|
+
*
|
|
60
|
+
* @internal Exported for the branch-selection tests.
|
|
61
|
+
*/
|
|
62
|
+
export declare const moltnetBinaryIsDirectlyExecutable: (architecture: MoltnetTargetArchitecture, host: MoltnetExecutionHost) => boolean;
|
|
63
|
+
export declare const readLocalMoltnetReleaseIdentity: (releaseDirectory: string, architecture: MoltnetTargetArchitecture, host: MoltnetExecutionHost) => Promise<LocalMoltnetReleaseIdentity>;
|
|
64
|
+
export {};
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { execFile as execFileCallback } from "node:child_process";
|
|
2
|
+
import { createHash } from "node:crypto";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { chmod, readFile, rm, writeFile } from "node:fs/promises";
|
|
5
|
+
import { promisify } from "node:util";
|
|
6
|
+
import { ensureDirectory, fileExists } from "../filesystem/index.js";
|
|
7
|
+
import { SpawnfileError } from "../shared/index.js";
|
|
8
|
+
const execFile = promisify(execFileCallback);
|
|
9
|
+
const SHA256 = /^[a-f0-9]{64}$/u;
|
|
10
|
+
const exactKeys = (value, keys) => Object.keys(value).sort().join("\0") === [...keys].sort().join("\0");
|
|
11
|
+
const assetName = (architecture) => `moltnet_linux_${architecture}.tar.gz`;
|
|
12
|
+
/** @internal Complete synthetic bridge contract used by local artifact verification. */
|
|
13
|
+
export const createLocalMoltnetBridgeProbeConfig = (kind, directory) => JSON.stringify({
|
|
14
|
+
attachments: [{
|
|
15
|
+
agent: { id: `${kind}-capability-probe`, name: `${kind} capability probe` },
|
|
16
|
+
runtime: kind === "daimon"
|
|
17
|
+
? {
|
|
18
|
+
control_url: "http://127.0.0.1:9",
|
|
19
|
+
kind,
|
|
20
|
+
receipt_store_path: path.join(directory, "daimon-receipts", "daimon-capability-probe.json"),
|
|
21
|
+
token_env: "SPAWNFILE_DAIMON_CONTROL_TOKEN"
|
|
22
|
+
}
|
|
23
|
+
: { control_url: "http://127.0.0.1:9/agents/pi-capability-probe/wake", kind }
|
|
24
|
+
}],
|
|
25
|
+
moltnet: { base_url: "http://127.0.0.1:9", network_id: "capability-probe" },
|
|
26
|
+
version: "moltnet.node.v1"
|
|
27
|
+
});
|
|
28
|
+
const assertBridgeCapability = async (binaryPath, directory, kind) => {
|
|
29
|
+
const configPath = path.join(directory, `${kind}-bridge-probe.json`);
|
|
30
|
+
const receiptDirectory = path.join(directory, "daimon-receipts");
|
|
31
|
+
await ensureDirectory(receiptDirectory);
|
|
32
|
+
await chmod(receiptDirectory, 0o700);
|
|
33
|
+
await writeFile(configPath, createLocalMoltnetBridgeProbeConfig(kind, directory), { mode: 0o600 });
|
|
34
|
+
try {
|
|
35
|
+
await execFile(binaryPath, ["node", configPath], {
|
|
36
|
+
env: { ...process.env, SPAWNFILE_DAIMON_CONTROL_TOKEN: "capability-probe" },
|
|
37
|
+
timeout: 1_000
|
|
38
|
+
});
|
|
39
|
+
throw new SpawnfileError("compile_error", `Local Moltnet binary exited before proving its ${kind}-bridge capability`);
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
if (error instanceof SpawnfileError)
|
|
43
|
+
throw error;
|
|
44
|
+
const execution = error;
|
|
45
|
+
const output = `${String(execution.stdout ?? "")}\n${String(execution.stderr ?? "")}`;
|
|
46
|
+
if (/unsupported|only supported|required|invalid|unknown runtime/i.test(output)) {
|
|
47
|
+
throw new SpawnfileError("compile_error", `Local Moltnet binary does not accept ${kind}-bridge configuration`);
|
|
48
|
+
}
|
|
49
|
+
if (execution.killed === true || execution.signal === "SIGTERM" || execution.code === "ETIMEDOUT")
|
|
50
|
+
return;
|
|
51
|
+
if (/connection refused|connect:|dial tcp|network is unreachable/i.test(output))
|
|
52
|
+
return;
|
|
53
|
+
throw new SpawnfileError("compile_error", `Local Moltnet binary could not prove its ${kind}-bridge capability`);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
/** @internal Strict parser shared with provenance regression tests. */
|
|
57
|
+
export const parseLocalReleaseStamp = (raw, architecture) => {
|
|
58
|
+
let parsed;
|
|
59
|
+
try {
|
|
60
|
+
parsed = JSON.parse(raw);
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
throw new SpawnfileError("compile_error", "Local Moltnet release stamp is not valid JSON");
|
|
64
|
+
}
|
|
65
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
66
|
+
throw new SpawnfileError("compile_error", "Local Moltnet release stamp has an invalid shape");
|
|
67
|
+
}
|
|
68
|
+
const value = parsed;
|
|
69
|
+
const development = value.development;
|
|
70
|
+
const sourceInputs = value.source_inputs;
|
|
71
|
+
if (!exactKeys(value, ["arch", "asset", "capabilities", "development", "sha256", "source_sha256", "stamp_version", ...(sourceInputs ? ["source_inputs"] : [])])
|
|
72
|
+
|| value.stamp_version !== "spawnfile.local-moltnet-release-stamp.v1"
|
|
73
|
+
|| value.arch !== architecture
|
|
74
|
+
|| value.asset !== assetName(architecture)
|
|
75
|
+
|| !Array.isArray(value.capabilities)
|
|
76
|
+
|| value.capabilities.join("\0") !== "daimon-bridge\0pi-bridge"
|
|
77
|
+
|| !development
|
|
78
|
+
|| !exactKeys(development, ["mode", "non_production", "unsigned", "unpublished"])
|
|
79
|
+
|| development.mode !== "local-development"
|
|
80
|
+
|| development.non_production !== true
|
|
81
|
+
|| development.unsigned !== true
|
|
82
|
+
|| development.unpublished !== true
|
|
83
|
+
|| typeof value.sha256 !== "string"
|
|
84
|
+
|| !SHA256.test(value.sha256)
|
|
85
|
+
|| typeof value.source_sha256 !== "string"
|
|
86
|
+
|| !/^sha256:[a-f0-9]{64}$/u.test(value.source_sha256)
|
|
87
|
+
|| (sourceInputs && (!exactKeys(sourceInputs, ["dependencies_sha256", "mode", "source_sha256", "toolchain"]) || sourceInputs.mode !== "source-bundle" || !/^sha256:[a-f0-9]{64}$/u.test(String(sourceInputs.dependencies_sha256)) || sourceInputs.source_sha256 !== value.source_sha256 || sourceInputs.toolchain !== "golang:1.24-bookworm@sha256:1a6d4452c65dea36aac2e2d606b01b4a029ec90cc1ae53890540ce6173ea77ac"))) {
|
|
88
|
+
throw new SpawnfileError("compile_error", "Local Moltnet release stamp must be a complete development-only dual-bridge identity");
|
|
89
|
+
}
|
|
90
|
+
return value;
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Whether this host can run the built binary directly, deciding between the
|
|
94
|
+
* direct-exec probe and the Docker cross-platform probe below.
|
|
95
|
+
*
|
|
96
|
+
* A local Moltnet build is ALWAYS `GOOS=linux` (the asset is
|
|
97
|
+
* `moltnet_linux_<arch>.tar.gz`), so matching the architecture alone is not
|
|
98
|
+
* enough: a darwin/arm64 host and a linux/arm64 binary share a CPU
|
|
99
|
+
* architecture and share nothing else. Executing that ELF on macOS fails with
|
|
100
|
+
* ENOEXEC and the probe reports the binary as unprovable, rejecting a
|
|
101
|
+
* perfectly good build. The host must therefore match on OS *and*
|
|
102
|
+
* architecture; everything else goes through Docker, which can run a
|
|
103
|
+
* linux/<arch> image anywhere.
|
|
104
|
+
*
|
|
105
|
+
* @internal Exported for the branch-selection tests.
|
|
106
|
+
*/
|
|
107
|
+
export const moltnetBinaryIsDirectlyExecutable = (architecture, host) => host.platform === "linux" && host.architecture === architecture;
|
|
108
|
+
const verifyBuiltMoltnetArchive = async (releaseAssetPath, architecture, host) => {
|
|
109
|
+
const temporaryDirectory = path.join(path.dirname(releaseAssetPath), `.spawnfile-moltnet-verify-${process.pid}-${Date.now()}`);
|
|
110
|
+
try {
|
|
111
|
+
await ensureDirectory(temporaryDirectory);
|
|
112
|
+
await execFile("tar", ["-C", temporaryDirectory, "-xzf", releaseAssetPath]);
|
|
113
|
+
const binaryPath = path.join(temporaryDirectory, "moltnet");
|
|
114
|
+
if (!(await fileExists(binaryPath))) {
|
|
115
|
+
throw new SpawnfileError("compile_error", "Local Moltnet archive does not contain its moltnet binary");
|
|
116
|
+
}
|
|
117
|
+
await chmod(binaryPath, 0o755);
|
|
118
|
+
if (moltnetBinaryIsDirectlyExecutable(architecture, host)) {
|
|
119
|
+
const { stdout } = await execFile(binaryPath, ["version"]);
|
|
120
|
+
if (!stdout.trim())
|
|
121
|
+
throw new SpawnfileError("compile_error", "Local Moltnet binary did not produce a bounded version identity");
|
|
122
|
+
await assertBridgeCapability(binaryPath, temporaryDirectory, "pi");
|
|
123
|
+
await assertBridgeCapability(binaryPath, temporaryDirectory, "daimon");
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
for (const kind of ["pi", "daimon"]) {
|
|
127
|
+
const configPath = path.join(temporaryDirectory, `${kind}-docker-probe.json`);
|
|
128
|
+
await writeFile(configPath, createLocalMoltnetBridgeProbeConfig(kind, "/receipts"));
|
|
129
|
+
const { stdout: rawId } = await execFile("docker", ["create", "--platform", `linux/${architecture}`, "--env", "SPAWNFILE_DAIMON_CONTROL_TOKEN=probe", "node:24-bookworm-slim@sha256:a9f5f7c91a432850b2a8a7797adf5eadb6c733ceed61167806cee7ea7fbc29df", "timeout", "2", "/moltnet", "node", "/config.json"]);
|
|
130
|
+
const id = rawId.trim();
|
|
131
|
+
try {
|
|
132
|
+
await execFile("docker", ["cp", binaryPath, `${id}:/moltnet`]);
|
|
133
|
+
await execFile("docker", ["cp", configPath, `${id}:/config.json`]);
|
|
134
|
+
try {
|
|
135
|
+
await execFile("docker", ["start", "--attach", id]);
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
const result = error;
|
|
139
|
+
const output = `${String(result.stdout ?? "")}\n${String(result.stderr ?? "")}`;
|
|
140
|
+
if (result.code !== 124 && !/connection refused|connect:|dial tcp|network is unreachable/iu.test(output))
|
|
141
|
+
throw new SpawnfileError("compile_error", `Local Moltnet cross-host ${kind} capability probe failed`);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
finally {
|
|
145
|
+
await execFile("docker", ["rm", "--force", id]);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
finally {
|
|
151
|
+
await rm(temporaryDirectory, { force: true, recursive: true });
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
export const readLocalMoltnetReleaseIdentity = async (releaseDirectory, architecture, host) => {
|
|
155
|
+
const asset = assetName(architecture);
|
|
156
|
+
const assetPath = path.join(releaseDirectory, asset);
|
|
157
|
+
const stampPath = path.join(releaseDirectory, `local_moltnet_release_stamp_${architecture}.json`);
|
|
158
|
+
if (!(await fileExists(assetPath)) || !(await fileExists(stampPath))) {
|
|
159
|
+
throw new SpawnfileError("compile_error", "Local Moltnet release requires its exact archive and development identity stamp");
|
|
160
|
+
}
|
|
161
|
+
const stamp = parseLocalReleaseStamp(await readFile(stampPath, "utf8"), architecture);
|
|
162
|
+
const sha256 = createHash("sha256").update(await readFile(assetPath)).digest("hex");
|
|
163
|
+
if (stamp.sha256 !== sha256) {
|
|
164
|
+
throw new SpawnfileError("compile_error", "Local Moltnet development stamp does not match its archive bytes");
|
|
165
|
+
}
|
|
166
|
+
await verifyBuiltMoltnetArchive(assetPath, architecture, host);
|
|
167
|
+
return Object.freeze({
|
|
168
|
+
architecture,
|
|
169
|
+
asset,
|
|
170
|
+
asset_sha256: `sha256:${sha256}`,
|
|
171
|
+
capabilities: Object.freeze(["daimon-bridge", "pi-bridge"]),
|
|
172
|
+
development: Object.freeze({ mode: "local-development", non_production: true, unsigned: true, unpublished: true }),
|
|
173
|
+
source_sha256: stamp.source_sha256,
|
|
174
|
+
...(stamp.source_inputs ? { source_inputs: Object.freeze(stamp.source_inputs) } : {}),
|
|
175
|
+
version: "spawnfile.moltnet-release-identity.v1"
|
|
176
|
+
});
|
|
177
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { McpServer } from "../manifest/index.js";
|
|
2
|
+
import type { CompilePlanNode } from "./types.js";
|
|
3
|
+
export interface McpPlaceholderContext {
|
|
4
|
+
agentId: string;
|
|
5
|
+
agentName: string;
|
|
6
|
+
/** Lazy: only runtimes whose servers use `${workspace}` need a resolvable path. */
|
|
7
|
+
workspace: () => string;
|
|
8
|
+
}
|
|
9
|
+
export declare const resolveMcpServerPlaceholders: (servers: McpServer[], context: McpPlaceholderContext) => McpServer[];
|
|
10
|
+
/** Resolves every agent node's MCP placeholders in place, once node ids and slugs exist. */
|
|
11
|
+
export declare const resolvePlanMcpPlaceholders: (nodes: CompilePlanNode[]) => void;
|