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
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { getRuntimeAdapter } from "../runtime/index.js";
|
|
2
|
+
import { SpawnfileError } from "../shared/index.js";
|
|
3
|
+
import { expandSourceWorkspacePathTemplate } from "./containerTargetResources.js";
|
|
4
|
+
/**
|
|
5
|
+
* Compiler-owned placeholders an MCP server may use in `command`, `args` and
|
|
6
|
+
* `env` values. They are resolved per agent after the compile plan assigns
|
|
7
|
+
* node ids, so one `shared.environment.mcp_servers` entry serves every member:
|
|
8
|
+
*
|
|
9
|
+
* - `${workspace}` the agent's workspace path inside its runtime target
|
|
10
|
+
* (the same path `./` workspace resource mounts link under)
|
|
11
|
+
* - `${agent.id}` the agent's compile-plan node id, e.g. `agent:writer`
|
|
12
|
+
* - `${agent.name}` the agent manifest name
|
|
13
|
+
*
|
|
14
|
+
* `${workspace}` and anything under `${agent.` are reserved: an unknown name
|
|
15
|
+
* fails the compile instead of reaching a runtime as a literal string. Other
|
|
16
|
+
* `${...}` text is left untouched.
|
|
17
|
+
*/
|
|
18
|
+
const RESERVED_PLACEHOLDER = /\$\{(workspace|agent\.[^}]*)\}/gu;
|
|
19
|
+
const SUPPORTED = "${workspace}, ${agent.id}, ${agent.name}";
|
|
20
|
+
const fail = (context, server, detail) => {
|
|
21
|
+
throw new SpawnfileError("validation_error", `Agent ${context.agentName} MCP server ${server.name}: ${detail}`);
|
|
22
|
+
};
|
|
23
|
+
const resolveValue = (value, server, context) => value.replace(RESERVED_PLACEHOLDER, (match, name) => {
|
|
24
|
+
if (name === "workspace")
|
|
25
|
+
return context.workspace();
|
|
26
|
+
if (name === "agent.id")
|
|
27
|
+
return context.agentId;
|
|
28
|
+
if (name === "agent.name")
|
|
29
|
+
return context.agentName;
|
|
30
|
+
return fail(context, server, `unknown placeholder ${match}; supported placeholders are ${SUPPORTED}`);
|
|
31
|
+
});
|
|
32
|
+
const hasReservedPlaceholder = (value) => value !== undefined && new RegExp(RESERVED_PLACEHOLDER.source, "u").test(value);
|
|
33
|
+
export const resolveMcpServerPlaceholders = (servers, context) => servers.map((server) => {
|
|
34
|
+
if (hasReservedPlaceholder(server.url) || hasReservedPlaceholder(server.auth?.secret)) {
|
|
35
|
+
fail(context, server, `placeholders (${SUPPORTED}) are only supported in command, args and env values`);
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
...server,
|
|
39
|
+
...(server.command === undefined ? {} : { command: resolveValue(server.command, server, context) }),
|
|
40
|
+
...(server.args === undefined ? {} : { args: server.args.map((arg) => resolveValue(arg, server, context)) }),
|
|
41
|
+
...(server.env === undefined ? {} : {
|
|
42
|
+
env: Object.fromEntries(Object.entries(server.env).map(([key, value]) => [key, resolveValue(value, server, context)]))
|
|
43
|
+
})
|
|
44
|
+
};
|
|
45
|
+
});
|
|
46
|
+
/** Resolves every agent node's MCP placeholders in place, once node ids and slugs exist. */
|
|
47
|
+
export const resolvePlanMcpPlaceholders = (nodes) => {
|
|
48
|
+
for (const node of nodes) {
|
|
49
|
+
if (node.value.kind !== "agent" || node.value.mcpServers.length === 0)
|
|
50
|
+
continue;
|
|
51
|
+
const agent = node.value;
|
|
52
|
+
agent.mcpServers = resolveMcpServerPlaceholders(agent.mcpServers, {
|
|
53
|
+
agentId: node.id,
|
|
54
|
+
agentName: agent.name,
|
|
55
|
+
workspace: () => expandSourceWorkspacePathTemplate(getRuntimeAdapter(node.runtimeName ?? agent.runtime.name).container, { agentName: agent.name, slug: node.slug })
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type McpServer, type McpServerEntry, type SharedMcpServer } from "../manifest/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Resolves an agent's effective MCP servers from its team's
|
|
4
|
+
* `shared.environment.mcp_servers` and its own entries.
|
|
5
|
+
*
|
|
6
|
+
* - A local entry that declares `transport` is a complete server and replaces
|
|
7
|
+
* any inherited server of the same name (SPEC §4.4: member-local wins).
|
|
8
|
+
* - A local entry without `transport` narrows the inherited server of the same
|
|
9
|
+
* name: `tools` replaces the inherited allowlist, `env` merges key by key
|
|
10
|
+
* with local keys winning. Every other field stays inherited.
|
|
11
|
+
* - A bare `{ name }` takes the inherited server unchanged.
|
|
12
|
+
* - A shared server marked `opt_in: true` is inherited only by members that
|
|
13
|
+
* list its name (bare or narrowing). Members never remove an inherited
|
|
14
|
+
* server (SPEC §4.4); an opt-in server is simply not offered by default.
|
|
15
|
+
* - An override with no shared server to narrow is a compile error naming
|
|
16
|
+
* the agent, because there is nothing to complete it from.
|
|
17
|
+
*/
|
|
18
|
+
export declare const resolveInheritedMcpServers: (agentName: string, sharedServers?: SharedMcpServer[], localEntries?: McpServerEntry[]) => McpServer[];
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { isMcpServerDeclaration } from "../manifest/index.js";
|
|
2
|
+
import { SpawnfileError } from "../shared/index.js";
|
|
3
|
+
/**
|
|
4
|
+
* Resolves an agent's effective MCP servers from its team's
|
|
5
|
+
* `shared.environment.mcp_servers` and its own entries.
|
|
6
|
+
*
|
|
7
|
+
* - A local entry that declares `transport` is a complete server and replaces
|
|
8
|
+
* any inherited server of the same name (SPEC §4.4: member-local wins).
|
|
9
|
+
* - A local entry without `transport` narrows the inherited server of the same
|
|
10
|
+
* name: `tools` replaces the inherited allowlist, `env` merges key by key
|
|
11
|
+
* with local keys winning. Every other field stays inherited.
|
|
12
|
+
* - A bare `{ name }` takes the inherited server unchanged.
|
|
13
|
+
* - A shared server marked `opt_in: true` is inherited only by members that
|
|
14
|
+
* list its name (bare or narrowing). Members never remove an inherited
|
|
15
|
+
* server (SPEC §4.4); an opt-in server is simply not offered by default.
|
|
16
|
+
* - An override with no shared server to narrow is a compile error naming
|
|
17
|
+
* the agent, because there is nothing to complete it from.
|
|
18
|
+
*/
|
|
19
|
+
export const resolveInheritedMcpServers = (agentName, sharedServers = [], localEntries = []) => {
|
|
20
|
+
const inherited = new Map();
|
|
21
|
+
const resolved = new Map();
|
|
22
|
+
for (const { opt_in: optIn, ...server } of sharedServers) {
|
|
23
|
+
inherited.set(server.name, server);
|
|
24
|
+
if (optIn !== true)
|
|
25
|
+
resolved.set(server.name, server);
|
|
26
|
+
}
|
|
27
|
+
for (const entry of localEntries) {
|
|
28
|
+
if (isMcpServerDeclaration(entry)) {
|
|
29
|
+
resolved.set(entry.name, entry);
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
const base = inherited.get(entry.name);
|
|
33
|
+
if (!base) {
|
|
34
|
+
throw new SpawnfileError("validation_error", `Agent ${agentName} overrides MCP server ${entry.name}, but its team declares no shared.environment.mcp_servers entry named ${entry.name}; declare transport to define the server locally`);
|
|
35
|
+
}
|
|
36
|
+
resolved.set(entry.name, {
|
|
37
|
+
...base,
|
|
38
|
+
...(entry.tools === undefined ? {} : { tools: entry.tools }),
|
|
39
|
+
...(entry.env === undefined ? {} : { env: { ...base.env, ...entry.env } })
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
return [...resolved.values()];
|
|
43
|
+
};
|
|
@@ -22,5 +22,5 @@ export interface MemoryArtifactBundle {
|
|
|
22
22
|
mounts: ContainerPersistentMountReport[];
|
|
23
23
|
memories: MemoryArtifactSummary[];
|
|
24
24
|
}
|
|
25
|
-
export declare const createMemoryArtifactBundle: (plan: CompilePlan) => MemoryArtifactBundle;
|
|
25
|
+
export declare const createMemoryArtifactBundle: (plan: CompilePlan, deploymentLineage?: string) => MemoryArtifactBundle;
|
|
26
26
|
export {};
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import { resolveMnemeDurableMemoryMountPath } from "../runtime/mnemeMcp.js";
|
|
2
|
+
import { createExclusiveReattachVolumeName, SpawnfileError } from "../shared/index.js";
|
|
3
3
|
import { slugify } from "./helpers.js";
|
|
4
|
-
import { createPersistentVolumeName } from "./moltnetArtifactPaths.js";
|
|
5
|
-
const normalizePosixPath = (value) => path.normalize(value).replace(/\/+$/u, "") || "/";
|
|
6
4
|
const safeSlug = (value) => slugify(value).trim() || "memory";
|
|
7
5
|
const createMountId = (mountPath) => `memory-${safeSlug(mountPath)}`;
|
|
8
6
|
const isFileBackedMemoryStore = (bank) => bank.store.kind === "sqlite" || bank.store.kind === "json";
|
|
@@ -10,7 +8,33 @@ const transportFromRuntime = (runtimeName, bank) => {
|
|
|
10
8
|
switch (runtimeName) {
|
|
11
9
|
case "pi":
|
|
12
10
|
case "daimon":
|
|
13
|
-
|
|
11
|
+
// Mneme runs in-process for these runtimes (no MCP subprocess), but
|
|
12
|
+
// whether that in-process runtime is reachable -- and whether it
|
|
13
|
+
// persists anything -- depends on the store:
|
|
14
|
+
// - sqlite/json WITH a durable mount: a real runtime home backed by
|
|
15
|
+
// a persistent volume this same module emits.
|
|
16
|
+
// - sqlite/json WITHOUT one (persistence.mode "ephemeral", or no
|
|
17
|
+
// resolvable path at all): no volume is mounted and Daimon emits no
|
|
18
|
+
// memory block, so recall lasts at most the container's lifetime --
|
|
19
|
+
// exactly the "memory" kind's situation, and reported the same way.
|
|
20
|
+
// - memory: Mneme still runs in-process against a synthesized runtime
|
|
21
|
+
// home path, but no persistent volume is emitted for this kind.
|
|
22
|
+
// - postgres: no runtime home path at all; the in-process runtime
|
|
23
|
+
// gets no memory whatsoever.
|
|
24
|
+
//
|
|
25
|
+
// The durable/ephemeral half of that decision is NOT re-derived here:
|
|
26
|
+
// it comes from resolveMnemeDurableMemoryMountPath, the same authority
|
|
27
|
+
// that decides the mount below, so the report cannot disagree with what
|
|
28
|
+
// was actually emitted.
|
|
29
|
+
switch (bank.store.kind) {
|
|
30
|
+
case "sqlite":
|
|
31
|
+
case "json":
|
|
32
|
+
return resolveMnemeDurableMemoryMountPath(bank) === null ? "degraded" : "direct";
|
|
33
|
+
case "memory":
|
|
34
|
+
return "degraded";
|
|
35
|
+
default:
|
|
36
|
+
return "unsupported";
|
|
37
|
+
}
|
|
14
38
|
case "picoclaw":
|
|
15
39
|
case "openclaw":
|
|
16
40
|
return isFileBackedMemoryStore(bank) ? "mcp" : "degraded_mcp";
|
|
@@ -18,20 +42,10 @@ const transportFromRuntime = (runtimeName, bank) => {
|
|
|
18
42
|
return "unsupported";
|
|
19
43
|
}
|
|
20
44
|
};
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
if (bank.store.persistence?.mode === "ephemeral") {
|
|
26
|
-
return null;
|
|
27
|
-
}
|
|
28
|
-
if (bank.store.persistence?.mount) {
|
|
29
|
-
return normalizePosixPath(bank.store.persistence.mount);
|
|
30
|
-
}
|
|
31
|
-
return bank.store.path
|
|
32
|
-
? path.dirname(normalizePosixPath(bank.store.path))
|
|
33
|
-
: null;
|
|
34
|
-
};
|
|
45
|
+
// The mount decision itself lives in runtime/mnemeMcp.ts so that runtime config
|
|
46
|
+
// emitters (which must only point an in-process Mneme runtime at a path this
|
|
47
|
+
// module actually mounts) and this module cannot drift apart.
|
|
48
|
+
const memoryMountPath = resolveMnemeDurableMemoryMountPath;
|
|
35
49
|
const summarizeMemoryStore = (bank, mountId) => {
|
|
36
50
|
const persistenceMode = bank.store.kind === "sqlite" || bank.store.kind === "json"
|
|
37
51
|
? (bank.store.persistence?.mode ?? "durable")
|
|
@@ -44,13 +58,69 @@ const summarizeMemoryStore = (bank, mountId) => {
|
|
|
44
58
|
...(bank.store.kind === "postgres" ? { dsn_secret: bank.store.dsn_secret } : {})
|
|
45
59
|
};
|
|
46
60
|
};
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
61
|
+
/**
|
|
62
|
+
* The identity of the PHYSICAL store a declared bank resolves to.
|
|
63
|
+
*
|
|
64
|
+
* Mneme addresses a store by its runtime home directory and then discards the
|
|
65
|
+
* declared filename: `JsonlMemoryStore` always writes `<home>/memory/events.jsonl`
|
|
66
|
+
* and `SQLiteMemoryIndex` always opens `<home>/memory/<default>.db`
|
|
67
|
+
* (mneme/src/store/store.ts, mneme/src/store/sqliteIndex.ts). Spawnfile resolves
|
|
68
|
+
* that home as `dirname(store.path)` unless `persistence.mount` overrides it, so
|
|
69
|
+
* `/data/mem/a.jsonl` and `/data/mem/b.jsonl` are ONE physical store wearing two
|
|
70
|
+
* declared names — two concurrent MemoryRuntimes appending to one file and
|
|
71
|
+
* opening one SQLite database.
|
|
72
|
+
*
|
|
73
|
+
* Two declarations may therefore share a durable directory only when they are
|
|
74
|
+
* the same bank said twice (the legitimate case: one bank declared in an org
|
|
75
|
+
* scope and again in a nested team scope so both sides can access it). Anything
|
|
76
|
+
* that differs — a different id, a different declared file, a different index
|
|
77
|
+
* intent — means the author believes they have two stores and the runtime will
|
|
78
|
+
* silently give them one.
|
|
79
|
+
*/
|
|
80
|
+
const physicalStoreIdentity = (bank) => JSON.stringify({
|
|
81
|
+
consolidation: bank.consolidation,
|
|
82
|
+
id: bank.id,
|
|
83
|
+
index: bank.index,
|
|
84
|
+
retention: bank.retention,
|
|
85
|
+
store: {
|
|
86
|
+
kind: bank.store.kind,
|
|
87
|
+
mount: bank.store.persistence?.mount ?? null,
|
|
88
|
+
name: bank.store.persistence?.name ?? null,
|
|
89
|
+
path: bank.store.path ?? null
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
const collidingBankMessage = (mountPath, prior, next) => `Memory banks ${prior.bankId} (declared in ${prior.source}) and ${next.bankId} `
|
|
93
|
+
+ `(declared in ${next.source}) both resolve to the durable memory directory ${mountPath}, `
|
|
94
|
+
+ "but do not declare the same store. Mneme keys a store by that directory and ignores the "
|
|
95
|
+
+ "declared filename, so these two banks would silently become one physical store with two "
|
|
96
|
+
+ "runtimes writing it. Give each bank its own directory (a distinct store.path parent or "
|
|
97
|
+
+ "persistence.mount), or declare them identically if one shared bank is what you meant.";
|
|
98
|
+
/**
|
|
99
|
+
* The docker volume name for a durable memory directory.
|
|
100
|
+
*
|
|
101
|
+
* Deliberately NOT run-scoped. `createPersistentVolumeName` folds NOOPOLIS_RUN_ID
|
|
102
|
+
* into the name, and `ensureNoopolisRunId` mints a fresh id on every `spawnfile
|
|
103
|
+
* run`/`up`, so a run-scoped memory volume means the organization you redeploy
|
|
104
|
+
* tomorrow starts with an empty memory bank. There is no working escape hatch
|
|
105
|
+
* today either: `spawnfile product-state clone` refuses SQLite paths, and reusing
|
|
106
|
+
* yesterday's NOOPOLIS_RUN_ID to reproduce the volume name would collapse two
|
|
107
|
+
* distinct causal runs onto one run_id in the ledger (specs/CAUSAL.md).
|
|
108
|
+
*
|
|
109
|
+
* `exclusive-reattach` is the existing lifecycle for exactly this: a host-stable
|
|
110
|
+
* name derived from the project root plus the deployment lineage, with a
|
|
111
|
+
* daemon-side reservation that refuses to start when another live container
|
|
112
|
+
* already holds the volume (src/compiler/runProjectDockerReservation.ts). That
|
|
113
|
+
* mutual exclusion is a requirement here rather than a cost — Mneme's append-only
|
|
114
|
+
* JSONL plus its SQLite index are single-writer — and it is why an organization
|
|
115
|
+
* with durable memory cannot use the concurrent blue/green canary workflow and
|
|
116
|
+
* must stop-and-reattach instead (specs/CONTAINERS.md).
|
|
117
|
+
*
|
|
118
|
+
* An author-declared `persistence.name` is honored verbatim: naming a volume is
|
|
119
|
+
* precisely a request for a host-stable identity.
|
|
120
|
+
*/
|
|
121
|
+
const durableMemoryVolumeName = (planRoot, mountId, declaredName, deploymentLineage) => declaredName?.trim()
|
|
122
|
+
|| createExclusiveReattachVolumeName(`${planRoot}\0${deploymentLineage}`, mountId);
|
|
123
|
+
export const createMemoryArtifactBundle = (plan, deploymentLineage = "compile") => {
|
|
54
124
|
const sourceToNode = new Map(plan.nodes.map((node) => [node.value.source, node]));
|
|
55
125
|
const groupedMemory = new Map();
|
|
56
126
|
for (const access of plan.memoryAccess ?? []) {
|
|
@@ -66,6 +136,7 @@ export const createMemoryArtifactBundle = (plan) => {
|
|
|
66
136
|
const mounts = [];
|
|
67
137
|
const mountPathMemoryMap = new Map();
|
|
68
138
|
const mountByPath = new Map();
|
|
139
|
+
const claimantByPath = new Map();
|
|
69
140
|
const memories = [...groupedMemory.entries()]
|
|
70
141
|
.sort(([left], [right]) => left.localeCompare(right))
|
|
71
142
|
.map(([, entry]) => {
|
|
@@ -89,18 +160,23 @@ export const createMemoryArtifactBundle = (plan) => {
|
|
|
89
160
|
let persistentMountId;
|
|
90
161
|
if (mountPath !== null) {
|
|
91
162
|
const mountId = createMountId(mountPath);
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
163
|
+
const declaredVolumeName = entry.bank.store.persistence?.name?.trim();
|
|
164
|
+
const volumeName = durableMemoryVolumeName(plan.root, mountId, entry.bank.store.persistence?.name, deploymentLineage);
|
|
165
|
+
const identity = physicalStoreIdentity(entry.bank);
|
|
166
|
+
const claimant = { bankId: entry.bank.id, identity, source: entry.source };
|
|
167
|
+
const priorClaimant = claimantByPath.get(mountPath);
|
|
168
|
+
if (priorClaimant && priorClaimant.identity !== identity) {
|
|
169
|
+
throw new SpawnfileError("validation_error", collidingBankMessage(mountPath, priorClaimant, claimant));
|
|
170
|
+
}
|
|
171
|
+
claimantByPath.set(mountPath, claimant);
|
|
98
172
|
const existingMount = mountByPath.get(mountPath);
|
|
99
173
|
if (existingMount && existingMount.volume_name !== volumeName) {
|
|
100
174
|
throw new Error(`Memory store mount ${mountPath} resolves to conflicting volume names`);
|
|
101
175
|
}
|
|
102
176
|
const mount = existingMount ?? {
|
|
177
|
+
...(declaredVolumeName ? { declared_volume_name: declaredVolumeName } : {}),
|
|
103
178
|
id: mountId,
|
|
179
|
+
lifecycle: "exclusive-reattach",
|
|
104
180
|
mount_path: mountPath,
|
|
105
181
|
reason: `durable memory stores under ${mountPath}`,
|
|
106
182
|
volume_name: volumeName
|
|
@@ -2,6 +2,11 @@ import type { ExecutionBlock, ModelTarget } from "../manifest/index.js";
|
|
|
2
2
|
import { type ModelAuthMethod } from "../shared/index.js";
|
|
3
3
|
import type { EffectiveModelTarget } from "./types.js";
|
|
4
4
|
export declare const CLI_CREDENTIAL_SECRET_NAME = "SPAWNFILE_CLI_AUTH_JSON";
|
|
5
|
+
/**
|
|
6
|
+
* Only the host-imported CLI logins travel as `SPAWNFILE_CLI_AUTH_JSON`. `grok`
|
|
7
|
+
* is a Daimon-owned subscription: its credential is the broker's bootstrap
|
|
8
|
+
* slot (`runtime/daimon/runAuth.ts`), never this secret.
|
|
9
|
+
*/
|
|
5
10
|
export declare const modelAuthMethodNeedsCliCredential: (method: ModelAuthMethod) => boolean;
|
|
6
11
|
export declare const resolveModelProviderEnvName: (provider: string) => string;
|
|
7
12
|
export declare const listExecutionModelTargets: (execution: ExecutionBlock | undefined) => ModelTarget[];
|
|
@@ -9,7 +9,12 @@ const MODEL_PROVIDER_ENV_VARS = new Map([
|
|
|
9
9
|
["xai", "XAI_API_KEY"]
|
|
10
10
|
]);
|
|
11
11
|
export const CLI_CREDENTIAL_SECRET_NAME = "SPAWNFILE_CLI_AUTH_JSON";
|
|
12
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Only the host-imported CLI logins travel as `SPAWNFILE_CLI_AUTH_JSON`. `grok`
|
|
14
|
+
* is a Daimon-owned subscription: its credential is the broker's bootstrap
|
|
15
|
+
* slot (`runtime/daimon/runAuth.ts`), never this secret.
|
|
16
|
+
*/
|
|
17
|
+
export const modelAuthMethodNeedsCliCredential = (method) => method === "claude-code" || method === "codex";
|
|
13
18
|
const resolveLegacyModelAuthMethod = (execution, provider) => {
|
|
14
19
|
const auth = execution?.model?.auth;
|
|
15
20
|
if (!auth) {
|
|
@@ -68,7 +73,8 @@ export const resolveEffectiveModelTarget = (target, execution) => {
|
|
|
68
73
|
},
|
|
69
74
|
...(target.endpoint ? { endpoint: target.endpoint } : {}),
|
|
70
75
|
name: target.name,
|
|
71
|
-
provider: target.provider
|
|
76
|
+
provider: target.provider,
|
|
77
|
+
...(target.reasoning_effort ? { reasoningEffort: target.reasoning_effort } : {})
|
|
72
78
|
};
|
|
73
79
|
};
|
|
74
80
|
export const listEffectiveExecutionModelTargets = (execution) => listExecutionModelTargets(execution).map((target) => resolveEffectiveModelTarget(target, execution));
|
|
@@ -1,26 +1,31 @@
|
|
|
1
1
|
import type { ResolvedTeamNode } from "./types.js";
|
|
2
2
|
export declare const createMoltnetExternalParticipantArtifactPath: (networkId: string, memberId: string) => string;
|
|
3
3
|
/**
|
|
4
|
-
* Derives the host-mounted docker volume name for a durable
|
|
4
|
+
* Derives the host-mounted docker volume name for a **run-scoped** durable
|
|
5
|
+
* mount — state whose whole point is to be fresh per run (today: the Moltnet
|
|
6
|
+
* causal event log, Daimon telemetry, per-network Moltnet runtime state).
|
|
5
7
|
*
|
|
6
8
|
* `runId` (the compiling process's resolved NOOPOLIS_RUN_ID, see
|
|
7
9
|
* src/runtime/common.ts) is the run-scoping key: `spawnfile run`/`spawnfile
|
|
8
10
|
* up` always call `ensureNoopolisRunId()` before compiling, so a fresh
|
|
9
11
|
* invocation with no host-pinned run id gets a fresh generated one and
|
|
10
12
|
* therefore a fresh volume — two concurrent/successive runs (e.g. two
|
|
11
|
-
* memetics replicates) never share
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* compiles stay byte-identical.
|
|
13
|
+
* memetics replicates) never share it. A cold restart that wants the same
|
|
14
|
+
* run's state sets the SAME `NOOPOLIS_RUN_ID` before re-running, which
|
|
15
|
+
* reproduces this name and remounts it. Omitted (a bare `spawnfile
|
|
16
|
+
* compile`/`spawnfile build` with no run id in the host env) reproduces the
|
|
17
|
+
* pre-run-scoping name exactly, so standard compiles stay byte-identical.
|
|
17
18
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
19
|
+
* State that must SURVIVE a redeploy — workspace `kind: volume` resources,
|
|
20
|
+
* durable Moltnet stores, open-mode agent token directories, durable memory
|
|
21
|
+
* banks, the Daimon usage ledger — must NEVER be named here. Those are
|
|
22
|
+
* `lifecycle: "exclusive-reattach"` and are named by
|
|
23
|
+
* `createExclusiveReattachVolumeName` from the plan root and the deployment
|
|
24
|
+
* lineage, honouring an author-declared name verbatim. This function
|
|
25
|
+
* deliberately takes no author-declared name: a run-scoped volume is never
|
|
26
|
+
* the thing an author names.
|
|
22
27
|
*/
|
|
23
|
-
export declare const createPersistentVolumeName: (planRoot: string, id: string,
|
|
28
|
+
export declare const createPersistentVolumeName: (planRoot: string, id: string, runId?: string) => string;
|
|
24
29
|
export declare const toContainerRootfsPath: (rootfsPath: string) => string;
|
|
25
30
|
export declare const isNetworkHttpEnabled: (network: NonNullable<ResolvedTeamNode["networks"]>[number]) => boolean;
|
|
26
31
|
export declare const resolveNetworkPort: (network: NonNullable<ResolvedTeamNode["networks"]>[number], fallbackPort: number) => number;
|
|
@@ -12,29 +12,31 @@ export const createMoltnetExternalParticipantArtifactPath = (networkId, memberId
|
|
|
12
12
|
};
|
|
13
13
|
const truncateSegment = (value, maxLength) => value.length > maxLength ? value.slice(0, maxLength).replace(/[-_.]+$/u, "") : value;
|
|
14
14
|
/**
|
|
15
|
-
* Derives the host-mounted docker volume name for a durable
|
|
15
|
+
* Derives the host-mounted docker volume name for a **run-scoped** durable
|
|
16
|
+
* mount — state whose whole point is to be fresh per run (today: the Moltnet
|
|
17
|
+
* causal event log, Daimon telemetry, per-network Moltnet runtime state).
|
|
16
18
|
*
|
|
17
19
|
* `runId` (the compiling process's resolved NOOPOLIS_RUN_ID, see
|
|
18
20
|
* src/runtime/common.ts) is the run-scoping key: `spawnfile run`/`spawnfile
|
|
19
21
|
* up` always call `ensureNoopolisRunId()` before compiling, so a fresh
|
|
20
22
|
* invocation with no host-pinned run id gets a fresh generated one and
|
|
21
23
|
* therefore a fresh volume — two concurrent/successive runs (e.g. two
|
|
22
|
-
* memetics replicates) never share
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* compiles stay byte-identical.
|
|
24
|
+
* memetics replicates) never share it. A cold restart that wants the same
|
|
25
|
+
* run's state sets the SAME `NOOPOLIS_RUN_ID` before re-running, which
|
|
26
|
+
* reproduces this name and remounts it. Omitted (a bare `spawnfile
|
|
27
|
+
* compile`/`spawnfile build` with no run id in the host env) reproduces the
|
|
28
|
+
* pre-run-scoping name exactly, so standard compiles stay byte-identical.
|
|
28
29
|
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
30
|
+
* State that must SURVIVE a redeploy — workspace `kind: volume` resources,
|
|
31
|
+
* durable Moltnet stores, open-mode agent token directories, durable memory
|
|
32
|
+
* banks, the Daimon usage ledger — must NEVER be named here. Those are
|
|
33
|
+
* `lifecycle: "exclusive-reattach"` and are named by
|
|
34
|
+
* `createExclusiveReattachVolumeName` from the plan root and the deployment
|
|
35
|
+
* lineage, honouring an author-declared name verbatim. This function
|
|
36
|
+
* deliberately takes no author-declared name: a run-scoped volume is never
|
|
37
|
+
* the thing an author names.
|
|
33
38
|
*/
|
|
34
|
-
export const createPersistentVolumeName = (planRoot, id,
|
|
35
|
-
if (explicitName && explicitName.trim().length > 0) {
|
|
36
|
-
return explicitName.trim();
|
|
37
|
-
}
|
|
39
|
+
export const createPersistentVolumeName = (planRoot, id, runId) => {
|
|
38
40
|
const project = truncateSegment(slugify(planRoot.split("/").slice(-2, -1)[0] ?? "project") || "project", 32);
|
|
39
41
|
const suffix = truncateSegment(slugify(id) || "state", 48);
|
|
40
42
|
const trimmedRunId = runId?.trim();
|
|
@@ -11,6 +11,7 @@ export interface MoltnetServerPlan {
|
|
|
11
11
|
networkId: string;
|
|
12
12
|
port?: number;
|
|
13
13
|
rooms: Array<{
|
|
14
|
+
federation?: "all" | "none" | string[];
|
|
14
15
|
id: string;
|
|
15
16
|
members: string[];
|
|
16
17
|
name?: string;
|
|
@@ -22,15 +23,25 @@ export interface MoltnetServerPlan {
|
|
|
22
23
|
teamSource: string;
|
|
23
24
|
}
|
|
24
25
|
export interface MoltnetNodePlan {
|
|
26
|
+
sourceNodeId?: string;
|
|
25
27
|
configPath: string;
|
|
26
28
|
credentialAgentId?: string;
|
|
27
29
|
credentialId?: string;
|
|
28
30
|
credentialSecret?: string;
|
|
29
31
|
memberId?: string;
|
|
30
32
|
networkId: string;
|
|
33
|
+
receiptStorePath?: string;
|
|
31
34
|
}
|
|
32
35
|
export interface MoltnetPersistentMount {
|
|
36
|
+
/** The author's `store.persistence.name`, when declared. */
|
|
37
|
+
declaredVolumeName?: string;
|
|
33
38
|
id: string;
|
|
39
|
+
/**
|
|
40
|
+
* `exclusive-reattach` marks state that MUST survive container replacement
|
|
41
|
+
* and redeploy: its volume name is deployment-stable (never run-scoped) and
|
|
42
|
+
* only one live container may hold it at a time.
|
|
43
|
+
*/
|
|
44
|
+
lifecycle?: "exclusive-reattach";
|
|
34
45
|
mountPath: string;
|
|
35
46
|
reason: string;
|
|
36
47
|
volumeName: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { MoltnetArtifacts } from "./moltnetArtifactTypes.js";
|
|
2
2
|
import type { CompilePlan } from "./types.js";
|
|
3
3
|
export type { MoltnetArtifacts, MoltnetNodePlan, MoltnetPersistentMount, MoltnetServerPlan } from "./moltnetArtifactTypes.js";
|
|
4
|
-
export declare const generateMoltnetArtifacts: (plan: CompilePlan) => Promise<MoltnetArtifacts | null>;
|
|
4
|
+
export declare const generateMoltnetArtifacts: (plan: CompilePlan, deploymentLineage?: string) => Promise<MoltnetArtifacts | null>;
|
|
@@ -1,29 +1,44 @@
|
|
|
1
1
|
import { resolveNoopolisRunId } from "../runtime/index.js";
|
|
2
|
-
import { SpawnfileError } from "../shared/index.js";
|
|
3
|
-
import { createMoltnetCausalDirectory, createMoltnetServerConfigPath, createMoltnetOpenTokenDirectory, createMoltnetNativeServerConfig, createMoltnetNodeConfigPath, resolveMoltnetClientAuth, resolveMoltnetStorePersistenceMountPath } from "./moltnetConfigLowering.js";
|
|
2
|
+
import { createExclusiveReattachVolumeName, SpawnfileError } from "../shared/index.js";
|
|
3
|
+
import { createMoltnetCausalDirectory, createMoltnetDaimonReceiptStorePath, createMoltnetNetworkStateDirectory, createMoltnetServerConfigPath, createMoltnetOpenTokenDirectory, createMoltnetNativeServerConfig, createMoltnetNodeConfigPath, resolveMoltnetClientAuth, resolveMoltnetStorePersistenceMountPath } from "./moltnetConfigLowering.js";
|
|
4
4
|
import { assertNetworkBindingEnvUniqueness } from "./networkBinding.js";
|
|
5
5
|
import { createMoltnetNodeConfigContent } from "./moltnetNodeConfig.js";
|
|
6
6
|
import { createPersistentVolumeName, isNetworkHttpEnabled, toContainerRootfsPath } from "./moltnetArtifactPaths.js";
|
|
7
7
|
import { createMoltnetExternalParticipantArtifactFiles } from "./moltnetExternalParticipantArtifact.js";
|
|
8
8
|
import { resolveMoltnetServerPlans } from "./moltnetServerPlans.js";
|
|
9
9
|
const createServerKey = (networkId) => networkId;
|
|
10
|
-
export const generateMoltnetArtifacts = async (plan) => {
|
|
10
|
+
export const generateMoltnetArtifacts = async (plan, deploymentLineage = "compile") => {
|
|
11
11
|
const teamNodes = plan.nodes
|
|
12
12
|
.filter((node) => node.kind === "team")
|
|
13
13
|
.filter((node) => (node.value.networks?.length ?? 0) > 0);
|
|
14
14
|
if (teamNodes.length === 0) {
|
|
15
15
|
return null;
|
|
16
16
|
}
|
|
17
|
-
// Run-scoping key for
|
|
18
|
-
//
|
|
19
|
-
//
|
|
17
|
+
// Run-scoping key for the RUN-SCOPED mounts derived below — the causal
|
|
18
|
+
// event log and per-network Moltnet runtime state (see
|
|
19
|
+
// createPersistentVolumeName's doc comment). Read once per compile so every
|
|
20
|
+
// such mount in this compile agrees on the same value. Durable stores and
|
|
21
|
+
// token directories deliberately do NOT use it; see durableVolumeName.
|
|
20
22
|
const runId = resolveNoopolisRunId(process.env);
|
|
23
|
+
/**
|
|
24
|
+
* Deployment-stable name for state that must be REATTACHED across a
|
|
25
|
+
* redeploy, never recreated empty: durable Moltnet `sqlite`/`json` stores
|
|
26
|
+
* and the open-mode agent token directories. An author-declared name
|
|
27
|
+
* (`server.store.persistence.name`) is honoured verbatim so an operator can
|
|
28
|
+
* pre-create or migrate the volume under that exact name; otherwise the
|
|
29
|
+
* name comes from the plan root plus the deployment lineage, exactly as
|
|
30
|
+
* durable memory banks are named (`memoryArtifacts.ts`'s
|
|
31
|
+
* `durableMemoryVolumeName`).
|
|
32
|
+
*/
|
|
33
|
+
const durableVolumeName = (mountId, declaredName) => declaredName?.trim()
|
|
34
|
+
|| createExclusiveReattachVolumeName(`${plan.root}\0${deploymentLineage}`, mountId);
|
|
21
35
|
const serverPlans = resolveMoltnetServerPlans(plan, teamNodes);
|
|
22
36
|
const nodePlans = [];
|
|
23
37
|
const nodePlanKeys = new Set();
|
|
24
38
|
const configFiles = [];
|
|
25
39
|
const persistentMounts = new Map();
|
|
26
40
|
const external = createMoltnetExternalParticipantArtifactFiles(plan.moltnetExternalParticipantIntents ?? []);
|
|
41
|
+
const receiptStoreOwners = new Map();
|
|
27
42
|
configFiles.push(...external.files);
|
|
28
43
|
const addPersistentMount = (mount) => {
|
|
29
44
|
const existing = persistentMounts.get(mount.id);
|
|
@@ -31,7 +46,10 @@ export const generateMoltnetArtifacts = async (plan) => {
|
|
|
31
46
|
persistentMounts.set(mount.id, mount);
|
|
32
47
|
return;
|
|
33
48
|
}
|
|
34
|
-
if (existing.mountPath !== mount.mountPath ||
|
|
49
|
+
if (existing.mountPath !== mount.mountPath ||
|
|
50
|
+
existing.volumeName !== mount.volumeName ||
|
|
51
|
+
existing.lifecycle !== mount.lifecycle ||
|
|
52
|
+
existing.declaredVolumeName !== mount.declaredVolumeName) {
|
|
35
53
|
throw new SpawnfileError("validation_error", `Moltnet persistent mount ${mount.id} resolves to conflicting targets`);
|
|
36
54
|
}
|
|
37
55
|
};
|
|
@@ -63,7 +81,7 @@ export const generateMoltnetArtifacts = async (plan) => {
|
|
|
63
81
|
id: causalMountId,
|
|
64
82
|
mountPath: createMoltnetCausalDirectory(serverPlan.configPath),
|
|
65
83
|
reason: `managed Moltnet causal event log for ${serverPlan.networkId}`,
|
|
66
|
-
volumeName: createPersistentVolumeName(plan.root, causalMountId,
|
|
84
|
+
volumeName: createPersistentVolumeName(plan.root, causalMountId, runId)
|
|
67
85
|
});
|
|
68
86
|
const storeMountPath = resolveMoltnetStorePersistenceMountPath(serverPlan.networkId, serverPlan.server.store);
|
|
69
87
|
if (storeMountPath) {
|
|
@@ -73,10 +91,12 @@ export const generateMoltnetArtifacts = async (plan) => {
|
|
|
73
91
|
? store.persistence?.name
|
|
74
92
|
: undefined;
|
|
75
93
|
addPersistentMount({
|
|
94
|
+
...(explicitVolumeName?.trim() ? { declaredVolumeName: explicitVolumeName.trim() } : {}),
|
|
76
95
|
id: mountId,
|
|
96
|
+
lifecycle: "exclusive-reattach",
|
|
77
97
|
mountPath: storeMountPath,
|
|
78
98
|
reason: `managed Moltnet ${serverPlan.server.store.kind} store for ${serverPlan.networkId}`,
|
|
79
|
-
volumeName:
|
|
99
|
+
volumeName: durableVolumeName(mountId, explicitVolumeName)
|
|
80
100
|
});
|
|
81
101
|
}
|
|
82
102
|
}
|
|
@@ -110,6 +130,23 @@ export const generateMoltnetArtifacts = async (plan) => {
|
|
|
110
130
|
throw new SpawnfileError("validation_error", `Moltnet network ${attachment.network} disables direct messages but ${agentNode.name} declares dms`);
|
|
111
131
|
}
|
|
112
132
|
const configPath = createMoltnetNodeConfigPath(teamNode.slug, attachment.network, attachment.memberId);
|
|
133
|
+
const receiptStorePath = agentNode.runtime.name === "daimon"
|
|
134
|
+
? createMoltnetDaimonReceiptStorePath(attachment.network, attachment.memberId)
|
|
135
|
+
: undefined;
|
|
136
|
+
if (receiptStorePath) {
|
|
137
|
+
const owner = `${attachment.network}\u0000${attachment.memberId}`;
|
|
138
|
+
const existingOwner = receiptStoreOwners.get(receiptStorePath);
|
|
139
|
+
if (existingOwner !== undefined && existingOwner !== owner) {
|
|
140
|
+
throw new SpawnfileError("validation_error", "Daimon receipt-store paths collide");
|
|
141
|
+
}
|
|
142
|
+
receiptStoreOwners.set(receiptStorePath, owner);
|
|
143
|
+
const networkRoot = createMoltnetNetworkStateDirectory(attachment.network);
|
|
144
|
+
const covered = [...persistentMounts.values()].some((mount) => networkRoot === mount.mountPath || networkRoot.startsWith(`${mount.mountPath}/`));
|
|
145
|
+
if (!covered) {
|
|
146
|
+
const mountId = `moltnet-${attachment.network}-runtime-state`;
|
|
147
|
+
addPersistentMount({ id: mountId, mountPath: networkRoot, reason: `Moltnet runtime state for ${attachment.network}`, volumeName: createPersistentVolumeName(plan.root, mountId, runId) });
|
|
148
|
+
}
|
|
149
|
+
}
|
|
113
150
|
const nodePlanKey = `${attachment.network}::${attachment.memberId}`;
|
|
114
151
|
if (nodePlanKeys.has(nodePlanKey)) {
|
|
115
152
|
throw new SpawnfileError("validation_error", `Duplicate Moltnet node attachment for ${attachment.network}/${attachment.memberId}`);
|
|
@@ -124,9 +161,10 @@ export const generateMoltnetArtifacts = async (plan) => {
|
|
|
124
161
|
const mountId = `agent-${node.slug}-moltnet-tokens`;
|
|
125
162
|
addPersistentMount({
|
|
126
163
|
id: mountId,
|
|
164
|
+
lifecycle: "exclusive-reattach",
|
|
127
165
|
mountPath: createMoltnetOpenTokenDirectory(node.slug),
|
|
128
166
|
reason: `Moltnet open-mode generated agent tokens for ${agentNode.name}`,
|
|
129
|
-
volumeName:
|
|
167
|
+
volumeName: durableVolumeName(mountId)
|
|
130
168
|
});
|
|
131
169
|
}
|
|
132
170
|
}
|
|
@@ -143,9 +181,10 @@ export const generateMoltnetArtifacts = async (plan) => {
|
|
|
143
181
|
const mountId = `agent-${node.slug}-moltnet-tokens`;
|
|
144
182
|
addPersistentMount({
|
|
145
183
|
id: mountId,
|
|
184
|
+
lifecycle: "exclusive-reattach",
|
|
146
185
|
mountPath: createMoltnetOpenTokenDirectory(node.slug),
|
|
147
186
|
reason: `Moltnet open-mode generated agent tokens for ${agentNode.name}`,
|
|
148
|
-
volumeName:
|
|
187
|
+
volumeName: durableVolumeName(mountId)
|
|
149
188
|
});
|
|
150
189
|
}
|
|
151
190
|
configFiles.push({
|
|
@@ -154,6 +193,7 @@ export const generateMoltnetArtifacts = async (plan) => {
|
|
|
154
193
|
path: configPath
|
|
155
194
|
});
|
|
156
195
|
nodePlans.push({
|
|
196
|
+
sourceNodeId: node.id,
|
|
157
197
|
configPath: toContainerRootfsPath(configPath),
|
|
158
198
|
...(clientAuth.credentialAgentId
|
|
159
199
|
? { credentialAgentId: clientAuth.credentialAgentId }
|
|
@@ -161,7 +201,8 @@ export const generateMoltnetArtifacts = async (plan) => {
|
|
|
161
201
|
...(clientAuth.credentialId ? { credentialId: clientAuth.credentialId } : {}),
|
|
162
202
|
...(clientAuth.tokenEnv ? { credentialSecret: clientAuth.tokenEnv } : {}),
|
|
163
203
|
memberId: attachment.memberId,
|
|
164
|
-
networkId: attachment.network
|
|
204
|
+
networkId: attachment.network,
|
|
205
|
+
...(receiptStorePath ? { receiptStorePath } : {})
|
|
165
206
|
});
|
|
166
207
|
}
|
|
167
208
|
}
|