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,22 +1,34 @@
|
|
|
1
|
-
import { type MoltnetTargetArchitecture } from "./moltnetReleaseAuthority.js";
|
|
1
|
+
import { type MoltnetBridgeCapabilities, type MoltnetTargetArchitecture } from "./moltnetReleaseAuthority.js";
|
|
2
|
+
import { type MoltnetExecutionHost, type LocalMoltnetReleaseIdentity } from "./localMoltnetAuthority.js";
|
|
2
3
|
/** Explicit operator override for a locally staged, authority-bound release. */
|
|
3
4
|
export declare const MOLTNET_RELEASE_DIR_ENV = "SPAWNFILE_MOLTNET_RELEASE_DIR";
|
|
5
|
+
/** Explicit development-only local archive authority; never consulted by production compiles. */
|
|
6
|
+
export declare const MOLTNET_LOCAL_RELEASE_DIR_ENV = "SPAWNFILE_LOCAL_MOLTNET_RELEASE_DIR";
|
|
7
|
+
export declare const MOLTNET_ALLOW_LOCAL_E2E_ENV = "SPAWNFILE_ALLOW_LOCAL_E2E";
|
|
4
8
|
export declare const MOLTNET_BIN_DIRECTORY = "moltnet-bin";
|
|
5
9
|
export declare const MOLTNET_BINARY_NAMES: readonly ["moltnet"];
|
|
6
10
|
export declare const MOLTNET_RELEASE_IDENTITY_VERSION: "spawnfile.moltnet-release-identity.v1";
|
|
7
11
|
export declare const MOLTNET_RELEASE_STAMP_VERSION: "spawnfile.moltnet-release-stamp.v1";
|
|
8
12
|
export type { MoltnetTargetArchitecture } from "./moltnetReleaseAuthority.js";
|
|
9
|
-
|
|
13
|
+
/** Re-exported so existing importers keep one shape; defined in the lowest layer. */
|
|
14
|
+
export type { MoltnetBridgeCapabilities } from "./moltnetReleaseAuthority.js";
|
|
15
|
+
interface MoltnetIdentityBase {
|
|
10
16
|
readonly architecture: MoltnetTargetArchitecture;
|
|
11
17
|
readonly asset: string;
|
|
12
18
|
readonly asset_sha256: `sha256:${string}`;
|
|
13
|
-
readonly capabilities:
|
|
19
|
+
readonly capabilities: MoltnetBridgeCapabilities;
|
|
20
|
+
readonly version: typeof MOLTNET_RELEASE_IDENTITY_VERSION;
|
|
21
|
+
}
|
|
22
|
+
export interface PublishedMoltnetReleaseIdentity extends MoltnetIdentityBase {
|
|
23
|
+
readonly capabilities: MoltnetBridgeCapabilities;
|
|
14
24
|
readonly release_version: string;
|
|
15
25
|
readonly source_revision: string;
|
|
16
|
-
readonly version: typeof MOLTNET_RELEASE_IDENTITY_VERSION;
|
|
17
26
|
}
|
|
27
|
+
export type MoltnetReleaseIdentity = PublishedMoltnetReleaseIdentity | LocalMoltnetReleaseIdentity;
|
|
18
28
|
export interface MoltnetBinaryStageOptions {
|
|
19
29
|
readonly architecture?: MoltnetTargetArchitecture;
|
|
30
|
+
/** Overrides the detected execution host for the local-build capability probe. Tests only. */
|
|
31
|
+
readonly executionHost?: MoltnetExecutionHost;
|
|
20
32
|
/** Explicit local source directory; bytes remain bound to trusted authority. */
|
|
21
33
|
readonly releaseDirectory?: string;
|
|
22
34
|
}
|
|
@@ -5,12 +5,16 @@ import { chmod, readFile } from "node:fs/promises";
|
|
|
5
5
|
import { promisify } from "node:util";
|
|
6
6
|
import { ensureDirectory, fileExists } from "../filesystem/index.js";
|
|
7
7
|
import { SpawnfileError } from "../shared/index.js";
|
|
8
|
-
import { parseTrustedMoltnetReleaseAuthority, readTrustedMoltnetReleaseAuthority, trustedMoltnetReleaseAsset } from "./moltnetReleaseAuthority.js";
|
|
8
|
+
import { parseMoltnetBridgeCapabilities, parseTrustedMoltnetReleaseAuthority, readTrustedMoltnetReleaseAuthority, trustedMoltnetReleaseAsset } from "./moltnetReleaseAuthority.js";
|
|
9
9
|
import { downloadTrustedMoltnetReleaseAsset } from "./moltnetReleaseDownload.js";
|
|
10
|
+
import { readLocalMoltnetReleaseIdentity } from "./localMoltnetAuthority.js";
|
|
10
11
|
const execFile = promisify(execFileCallback);
|
|
11
12
|
const MOLTNET_CLI_ENV = "SPAWNFILE_MOLTNET_CLI";
|
|
12
13
|
/** Explicit operator override for a locally staged, authority-bound release. */
|
|
13
14
|
export const MOLTNET_RELEASE_DIR_ENV = "SPAWNFILE_MOLTNET_RELEASE_DIR";
|
|
15
|
+
/** Explicit development-only local archive authority; never consulted by production compiles. */
|
|
16
|
+
export const MOLTNET_LOCAL_RELEASE_DIR_ENV = "SPAWNFILE_LOCAL_MOLTNET_RELEASE_DIR";
|
|
17
|
+
export const MOLTNET_ALLOW_LOCAL_E2E_ENV = "SPAWNFILE_ALLOW_LOCAL_E2E";
|
|
14
18
|
const MOLTNET_TARGET_ARCH_ENV = "SPAWNFILE_MOLTNET_TARGET_ARCH";
|
|
15
19
|
const MOLTNET_TARGET_OS = "linux";
|
|
16
20
|
export const MOLTNET_BIN_DIRECTORY = "moltnet-bin";
|
|
@@ -50,6 +54,26 @@ const resolveTargetArchitecture = (architecture) => {
|
|
|
50
54
|
throw new SpawnfileError("compile_error", `Moltnet container installs do not support host architecture ${process.arch}`);
|
|
51
55
|
}
|
|
52
56
|
};
|
|
57
|
+
/**
|
|
58
|
+
* The platform executing this compile, for the local-build capability probe.
|
|
59
|
+
*
|
|
60
|
+
* Deliberately NOT `resolveTargetArchitecture()`: that helper honours the
|
|
61
|
+
* `SPAWNFILE_MOLTNET_TARGET_ARCH` build-target override and falls back to
|
|
62
|
+
* `process.arch`, so passing it as the host made the host and the target the
|
|
63
|
+
* same value by construction and pinned the probe to its direct-exec branch.
|
|
64
|
+
* This reads the real host only, and reports `architecture: undefined` for a
|
|
65
|
+
* CPU that is not a nameable Moltnet target rather than throwing -- an
|
|
66
|
+
* unsupported host is not a compile error, it just cannot exec the binary
|
|
67
|
+
* directly.
|
|
68
|
+
*
|
|
69
|
+
* Private: this module's export surface is pinned by test.
|
|
70
|
+
*/
|
|
71
|
+
const resolveMoltnetExecutionHost = () => ({
|
|
72
|
+
...(process.arch === "arm64"
|
|
73
|
+
? { architecture: "arm64" }
|
|
74
|
+
: process.arch === "x64" ? { architecture: "amd64" } : {}),
|
|
75
|
+
platform: process.platform
|
|
76
|
+
});
|
|
53
77
|
const createReleaseAssetName = (architecture) => `moltnet_${MOLTNET_TARGET_OS}_${architecture}.tar.gz`;
|
|
54
78
|
const createReleaseStampName = (architecture) => `moltnet_release_stamp_${architecture}.json`;
|
|
55
79
|
const exactKeys = (value, keys) => Object.keys(value).sort().join("\0") === [...keys].sort().join("\0");
|
|
@@ -76,9 +100,7 @@ const parseReleaseStamp = (raw, architecture) => {
|
|
|
76
100
|
|| value.asset !== createReleaseAssetName(architecture)
|
|
77
101
|
|| typeof value.built_at !== "string"
|
|
78
102
|
|| !Number.isFinite(Date.parse(value.built_at))
|
|
79
|
-
||
|
|
80
|
-
|| capabilities.length !== 1
|
|
81
|
-
|| capabilities[0] !== "pi-bridge"
|
|
103
|
+
|| parseMoltnetBridgeCapabilities(capabilities) === null
|
|
82
104
|
|| value.pi_bridge !== true
|
|
83
105
|
|| typeof value.sha256 !== "string"
|
|
84
106
|
|| !SHA256.test(value.sha256)
|
|
@@ -121,7 +143,7 @@ const verifyReleaseIdentity = async (releaseDirectory, architecture, authority)
|
|
|
121
143
|
architecture,
|
|
122
144
|
asset,
|
|
123
145
|
asset_sha256: `sha256:${sha256}`,
|
|
124
|
-
capabilities:
|
|
146
|
+
capabilities: stamp.capabilities,
|
|
125
147
|
release_version: stamp.version,
|
|
126
148
|
source_revision: stamp.source_revision,
|
|
127
149
|
version: MOLTNET_RELEASE_IDENTITY_VERSION
|
|
@@ -170,6 +192,18 @@ const resolveConfiguredReleaseDirectory = async () => {
|
|
|
170
192
|
}
|
|
171
193
|
return configuredDirectory;
|
|
172
194
|
};
|
|
195
|
+
const resolveConfiguredLocalReleaseDirectory = async () => {
|
|
196
|
+
const configuredDirectory = process.env[MOLTNET_LOCAL_RELEASE_DIR_ENV]?.trim();
|
|
197
|
+
if (!configuredDirectory)
|
|
198
|
+
return null;
|
|
199
|
+
if (process.env[MOLTNET_ALLOW_LOCAL_E2E_ENV] !== "1") {
|
|
200
|
+
throw new SpawnfileError("compile_error", "Local Moltnet identity requires explicit SPAWNFILE_ALLOW_LOCAL_E2E=1 opt-in");
|
|
201
|
+
}
|
|
202
|
+
if (!path.isAbsolute(configuredDirectory) || !(await fileExists(configuredDirectory))) {
|
|
203
|
+
throw new SpawnfileError("compile_error", "Local Moltnet release directory is invalid");
|
|
204
|
+
}
|
|
205
|
+
return configuredDirectory;
|
|
206
|
+
};
|
|
173
207
|
const findPathMoltnetCli = async () => {
|
|
174
208
|
try {
|
|
175
209
|
await execFile("moltnet", ["version"]);
|
|
@@ -205,6 +239,12 @@ const stageMoltnetBinariesAtReleaseDirectory = async (outputDirectory, releaseDi
|
|
|
205
239
|
return stageMoltnetReleaseAsset(outputDirectory, releaseAssetPath, identity);
|
|
206
240
|
};
|
|
207
241
|
export const stageMoltnetBinaries = async (outputDirectory, options = {}) => {
|
|
242
|
+
const localReleaseDirectory = await resolveConfiguredLocalReleaseDirectory();
|
|
243
|
+
if (localReleaseDirectory) {
|
|
244
|
+
const architecture = resolveTargetArchitecture(options.architecture);
|
|
245
|
+
const identity = await readLocalMoltnetReleaseIdentity(localReleaseDirectory, architecture, options.executionHost ?? resolveMoltnetExecutionHost());
|
|
246
|
+
return stageMoltnetReleaseAsset(outputDirectory, path.join(localReleaseDirectory, createReleaseAssetName(architecture)), identity);
|
|
247
|
+
}
|
|
208
248
|
const releaseDirectory = options.releaseDirectory
|
|
209
249
|
?? await resolveConfiguredReleaseDirectory();
|
|
210
250
|
if (releaseDirectory) {
|
|
@@ -219,7 +259,7 @@ export const stageMoltnetBinaries = async (outputDirectory, options = {}) => {
|
|
|
219
259
|
architecture,
|
|
220
260
|
asset: trustedAsset.asset,
|
|
221
261
|
asset_sha256: trustedAsset.asset_sha256,
|
|
222
|
-
capabilities:
|
|
262
|
+
capabilities: authority.capabilities,
|
|
223
263
|
release_version: authority.release_version,
|
|
224
264
|
source_revision: authority.source_revision,
|
|
225
265
|
version: MOLTNET_RELEASE_IDENTITY_VERSION
|
|
@@ -24,7 +24,7 @@ const createAttachmentConfig = (node, artifacts, attachment, agentSlug) => {
|
|
|
24
24
|
throw new SpawnfileError("compile_error", `Moltnet client config requires a resolved member id for ${node.name}`);
|
|
25
25
|
}
|
|
26
26
|
const serverPlan = findServerPlan(artifacts, attachment);
|
|
27
|
-
const auth = resolveMoltnetClientAuth(serverPlan.server, attachment.network, attachment.memberId, agentSlug, attachment.auth?.tokenId);
|
|
27
|
+
const auth = resolveMoltnetClientAuth(serverPlan.server, attachment.network, attachment.memberId, agentSlug, attachment.auth?.tokenId, node.runtime.name);
|
|
28
28
|
return {
|
|
29
29
|
agent_name: node.name,
|
|
30
30
|
auth: {
|
|
@@ -13,6 +13,7 @@ export interface MoltnetClientAuthPlan {
|
|
|
13
13
|
tokenPath?: string;
|
|
14
14
|
}
|
|
15
15
|
export interface MoltnetNativeRoomConfig {
|
|
16
|
+
federation?: "all" | "none" | string[];
|
|
16
17
|
id: string;
|
|
17
18
|
members: string[];
|
|
18
19
|
name?: string;
|
|
@@ -33,6 +34,7 @@ type ManagedMoltnetStore = Extract<TeamNetworkServer, {
|
|
|
33
34
|
export declare const createMoltnetOpenTokenDirectory: (agentSlug: string) => string;
|
|
34
35
|
export declare const createMoltnetOpenTokenPath: (networkId: string, memberId: string, agentSlug?: string) => string;
|
|
35
36
|
export declare const createMoltnetNetworkStateDirectory: (networkId: string) => string;
|
|
37
|
+
export declare const createMoltnetDaimonReceiptStorePath: (networkId: string, memberId: string) => string;
|
|
36
38
|
export declare const createDefaultMoltnetStorePath: (networkId: string, kind: "json" | "sqlite", mountPath?: string) => string;
|
|
37
39
|
export declare const resolveMoltnetStorePath: (networkId: string, store: ManagedMoltnetStore) => string | null;
|
|
38
40
|
export declare const resolveMoltnetStorePersistenceMountPath: (networkId: string, store: ManagedMoltnetStore) => string | null;
|
|
@@ -55,7 +57,7 @@ export declare const renderMoltnetListenAddr: (server: Extract<TeamNetworkServer
|
|
|
55
57
|
mode: "managed";
|
|
56
58
|
}>) => string;
|
|
57
59
|
export declare const resolveMoltnetBaseUrl: (server: TeamNetworkServer) => string;
|
|
58
|
-
export declare const resolveMoltnetClientAuth: (server: TeamNetworkServer, networkId: string, memberId: string, agentSlug?: string, attachmentTokenId?: string) => MoltnetClientAuthPlan;
|
|
60
|
+
export declare const resolveMoltnetClientAuth: (server: TeamNetworkServer, networkId: string, memberId: string, agentSlug?: string, attachmentTokenId?: string, runtimeName?: string) => MoltnetClientAuthPlan;
|
|
59
61
|
export declare const createMoltnetNativeServerConfig: ({ networkId, networkName, rooms, server }: MoltnetNativeServerConfigInput) => {
|
|
60
62
|
config: Record<string, unknown>;
|
|
61
63
|
secretPatches: MoltnetSecretPatch[];
|
|
@@ -5,6 +5,14 @@ const normalizePosixPath = (value) => value.replace(/\/+/g, "/").replace(/\/+$/u
|
|
|
5
5
|
export const createMoltnetOpenTokenDirectory = (agentSlug) => `/var/lib/spawnfile/agents/${pathSafeSegment(agentSlug)}/state/moltnet`;
|
|
6
6
|
export const createMoltnetOpenTokenPath = (networkId, memberId, agentSlug = memberId) => `${createMoltnetOpenTokenDirectory(agentSlug)}/${pathSafeSegment(networkId)}-${pathSafeSegment(memberId)}.token`;
|
|
7
7
|
export const createMoltnetNetworkStateDirectory = (networkId) => `/var/lib/spawnfile/moltnet/networks/${pathSafeSegment(networkId)}`;
|
|
8
|
+
export const createMoltnetDaimonReceiptStorePath = (networkId, memberId) => {
|
|
9
|
+
const network = pathSafeSegment(networkId);
|
|
10
|
+
const member = pathSafeSegment(memberId);
|
|
11
|
+
if (network !== networkId || member !== memberId || !/^[A-Za-z0-9][A-Za-z0-9_.-]{0,254}$/u.test(memberId)) {
|
|
12
|
+
throw new SpawnfileError("validation_error", "invalid Daimon receipt-store path segment");
|
|
13
|
+
}
|
|
14
|
+
return `${createMoltnetNetworkStateDirectory(networkId)}/daimon-receipts/${member}.json`;
|
|
15
|
+
};
|
|
8
16
|
export const createDefaultMoltnetStorePath = (networkId, kind, mountPath) => {
|
|
9
17
|
const directory = mountPath
|
|
10
18
|
? normalizePosixPath(mountPath)
|
|
@@ -64,7 +72,7 @@ export const resolveMoltnetBaseUrl = (server) => {
|
|
|
64
72
|
: bind;
|
|
65
73
|
return `http://${host}:${server.listen.port}`;
|
|
66
74
|
};
|
|
67
|
-
export const resolveMoltnetClientAuth = (server, networkId, memberId, agentSlug, attachmentTokenId) => {
|
|
75
|
+
export const resolveMoltnetClientAuth = (server, networkId, memberId, agentSlug, attachmentTokenId, runtimeName) => {
|
|
68
76
|
if (server.auth.mode === "none") {
|
|
69
77
|
if (attachmentTokenId !== undefined) {
|
|
70
78
|
throw new SpawnfileError("validation_error", `Moltnet attachment ${networkId}/${memberId} cannot select token ${attachmentTokenId} when auth.mode is none`);
|
|
@@ -83,10 +91,12 @@ export const resolveMoltnetClientAuth = (server, networkId, memberId, agentSlug,
|
|
|
83
91
|
if (tokens.length !== 1) {
|
|
84
92
|
throw new SpawnfileError("validation_error", `invalid Moltnet actor token ${attachmentTokenId} for ${memberId}: token id must exist exactly once`);
|
|
85
93
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
94
|
+
const requiredScopes = runtimeName === "daimon"
|
|
95
|
+
? ["attach", "observe", "write"]
|
|
96
|
+
: ["attach", "write"];
|
|
97
|
+
if (token.scopes.length !== requiredScopes.length
|
|
98
|
+
|| token.scopes.some((scope, index) => scope !== requiredScopes[index])) {
|
|
99
|
+
throw new SpawnfileError("validation_error", `invalid Moltnet actor token ${attachmentTokenId} for ${memberId}: token must include ${requiredScopes.join(", ")} scopes exactly`);
|
|
90
100
|
}
|
|
91
101
|
if (token.agents?.length !== 1 || token.agents[0] !== memberId) {
|
|
92
102
|
throw new SpawnfileError("validation_error", `invalid Moltnet actor token ${attachmentTokenId} for ${memberId}: token must declare exactly agents: [${memberId}]`);
|
|
@@ -174,11 +184,20 @@ export const createMoltnetNativeServerConfig = ({ networkId, networkName, rooms,
|
|
|
174
184
|
envName: pairing.token_secret,
|
|
175
185
|
jsonPath: `pairings.${index}.token`
|
|
176
186
|
});
|
|
187
|
+
if (pairing.relay) {
|
|
188
|
+
secretPatches.push({
|
|
189
|
+
envName: pairing.relay.token_secret,
|
|
190
|
+
jsonPath: `pairings.${index}.relay.token`
|
|
191
|
+
});
|
|
192
|
+
}
|
|
177
193
|
return {
|
|
178
194
|
id: pairing.id,
|
|
179
195
|
remote_network_id: pairing.remote_network_id,
|
|
180
196
|
remote_network_name: pairing.remote_network_name,
|
|
181
|
-
remote_base_url: pairing.remote_base_url,
|
|
197
|
+
...(pairing.remote_base_url ? { remote_base_url: pairing.remote_base_url } : {}),
|
|
198
|
+
...(pairing.relay
|
|
199
|
+
? { relay: { room: pairing.relay.room, token: "", url: pairing.relay.url } }
|
|
200
|
+
: {}),
|
|
182
201
|
token: ""
|
|
183
202
|
};
|
|
184
203
|
});
|
|
@@ -214,6 +233,11 @@ export const createMoltnetNativeServerConfig = ({ networkId, networkName, rooms,
|
|
|
214
233
|
},
|
|
215
234
|
storage: storageConfigFor(networkId, server.store),
|
|
216
235
|
rooms: rooms.map((room) => ({
|
|
236
|
+
...(room.federation !== undefined
|
|
237
|
+
? { federation: room.federation }
|
|
238
|
+
: pairings.length > 0
|
|
239
|
+
? { federation: "none" }
|
|
240
|
+
: {}),
|
|
217
241
|
id: room.id,
|
|
218
242
|
...(room.name ? { name: room.name } : {}),
|
|
219
243
|
...(room.visibility ? { visibility: room.visibility } : {}),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { resolveMoltnetClientAuth } from "./moltnetConfigLowering.js";
|
|
2
2
|
import { resolveRuntimeConfig } from "./moltnetRuntimeConfig.js";
|
|
3
3
|
export const createMoltnetNodeConfigContent = ({ agentNode, attachment, networkServer, nodeSlug, plan, serverPlan }) => {
|
|
4
|
-
const clientAuth = resolveMoltnetClientAuth(networkServer, attachment.network, attachment.memberId, nodeSlug, attachment.auth?.tokenId);
|
|
4
|
+
const clientAuth = resolveMoltnetClientAuth(networkServer, attachment.network, attachment.memberId, nodeSlug, attachment.auth?.tokenId, agentNode.runtime.name);
|
|
5
5
|
const usesPerAttachmentOpenToken = clientAuth.mode === "open" &&
|
|
6
6
|
clientAuth.staticToken !== true &&
|
|
7
7
|
Boolean(clientAuth.tokenEnv || clientAuth.tokenPath);
|
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
export declare const MOLTNET_RELEASE_AUTHORITY_VERSION: "spawnfile.moltnet-release-authority.v1";
|
|
2
2
|
export type MoltnetTargetArchitecture = "amd64" | "arm64";
|
|
3
|
+
/**
|
|
4
|
+
* The bridge capabilities a Moltnet build can advertise.
|
|
5
|
+
*
|
|
6
|
+
* CANONICAL ORDERING: `daimon-bridge` before `pi-bridge`. Several places
|
|
7
|
+
* compare this list by exact equality (`upReceipt.ts`, `localMoltnetAuthority.ts`)
|
|
8
|
+
* rather than as a set, so a differently ordered but equivalent list is
|
|
9
|
+
* rejected as a different release. The local builder
|
|
10
|
+
* (`scripts/build-local-moltnet.ts`) already writes this order; every producer
|
|
11
|
+
* must match it, and `moltnetReleaseAuthority.test.ts` asserts it.
|
|
12
|
+
*
|
|
13
|
+
* This is a UNION, never a replacement: an older pi-only release must keep
|
|
14
|
+
* pinning cleanly after a dual-capability one is published.
|
|
15
|
+
*/
|
|
16
|
+
export declare const MOLTNET_PI_ONLY_CAPABILITIES: readonly ["pi-bridge"];
|
|
17
|
+
export declare const MOLTNET_DUAL_BRIDGE_CAPABILITIES: readonly ["daimon-bridge", "pi-bridge"];
|
|
18
|
+
export type MoltnetBridgeCapabilities = typeof MOLTNET_PI_ONLY_CAPABILITIES | typeof MOLTNET_DUAL_BRIDGE_CAPABILITIES;
|
|
19
|
+
/**
|
|
20
|
+
* The single runtime check for an advertised capability list. Every producer
|
|
21
|
+
* and parser funnels through this so the type and the runtime check can never
|
|
22
|
+
* drift apart — widening one without the other is precisely how a release
|
|
23
|
+
* becomes typecheck-green and runtime-rejected.
|
|
24
|
+
*/
|
|
25
|
+
export declare const parseMoltnetBridgeCapabilities: (value: unknown) => MoltnetBridgeCapabilities | null;
|
|
3
26
|
export interface TrustedMoltnetReleaseAsset {
|
|
4
27
|
readonly architecture: MoltnetTargetArchitecture;
|
|
5
28
|
readonly asset: string;
|
|
@@ -9,7 +32,7 @@ export interface TrustedMoltnetReleaseAuthority {
|
|
|
9
32
|
readonly version: typeof MOLTNET_RELEASE_AUTHORITY_VERSION;
|
|
10
33
|
readonly release_version: string;
|
|
11
34
|
readonly source_revision: string;
|
|
12
|
-
readonly capabilities:
|
|
35
|
+
readonly capabilities: MoltnetBridgeCapabilities;
|
|
13
36
|
readonly assets: readonly TrustedMoltnetReleaseAsset[];
|
|
14
37
|
}
|
|
15
38
|
export declare const parseTrustedMoltnetReleaseAuthority: (raw: unknown) => TrustedMoltnetReleaseAuthority;
|
|
@@ -1,6 +1,37 @@
|
|
|
1
1
|
import { readFile } from "node:fs/promises";
|
|
2
2
|
import { SpawnfileError } from "../shared/index.js";
|
|
3
3
|
export const MOLTNET_RELEASE_AUTHORITY_VERSION = "spawnfile.moltnet-release-authority.v1";
|
|
4
|
+
/**
|
|
5
|
+
* The bridge capabilities a Moltnet build can advertise.
|
|
6
|
+
*
|
|
7
|
+
* CANONICAL ORDERING: `daimon-bridge` before `pi-bridge`. Several places
|
|
8
|
+
* compare this list by exact equality (`upReceipt.ts`, `localMoltnetAuthority.ts`)
|
|
9
|
+
* rather than as a set, so a differently ordered but equivalent list is
|
|
10
|
+
* rejected as a different release. The local builder
|
|
11
|
+
* (`scripts/build-local-moltnet.ts`) already writes this order; every producer
|
|
12
|
+
* must match it, and `moltnetReleaseAuthority.test.ts` asserts it.
|
|
13
|
+
*
|
|
14
|
+
* This is a UNION, never a replacement: an older pi-only release must keep
|
|
15
|
+
* pinning cleanly after a dual-capability one is published.
|
|
16
|
+
*/
|
|
17
|
+
export const MOLTNET_PI_ONLY_CAPABILITIES = ["pi-bridge"];
|
|
18
|
+
export const MOLTNET_DUAL_BRIDGE_CAPABILITIES = ["daimon-bridge", "pi-bridge"];
|
|
19
|
+
/**
|
|
20
|
+
* The single runtime check for an advertised capability list. Every producer
|
|
21
|
+
* and parser funnels through this so the type and the runtime check can never
|
|
22
|
+
* drift apart — widening one without the other is precisely how a release
|
|
23
|
+
* becomes typecheck-green and runtime-rejected.
|
|
24
|
+
*/
|
|
25
|
+
export const parseMoltnetBridgeCapabilities = (value) => {
|
|
26
|
+
if (!Array.isArray(value))
|
|
27
|
+
return null;
|
|
28
|
+
const joined = value.join("\0");
|
|
29
|
+
if (joined === MOLTNET_PI_ONLY_CAPABILITIES.join("\0"))
|
|
30
|
+
return MOLTNET_PI_ONLY_CAPABILITIES;
|
|
31
|
+
if (joined === MOLTNET_DUAL_BRIDGE_CAPABILITIES.join("\0"))
|
|
32
|
+
return MOLTNET_DUAL_BRIDGE_CAPABILITIES;
|
|
33
|
+
return null;
|
|
34
|
+
};
|
|
4
35
|
const SHA256 = /^sha256:[a-f0-9]{64}$/u;
|
|
5
36
|
const REVISION = /^[a-f0-9]{40}$/u;
|
|
6
37
|
const VERSION = /^v?\d+\.\d+\.\d+(?:-\d+-g[a-f0-9]{7,40})?$/u;
|
|
@@ -20,9 +51,7 @@ export const parseTrustedMoltnetReleaseAuthority = (raw) => {
|
|
|
20
51
|
|| !VERSION.test(value.release_version)
|
|
21
52
|
|| typeof value.source_revision !== "string"
|
|
22
53
|
|| !REVISION.test(value.source_revision)
|
|
23
|
-
||
|
|
24
|
-
|| value.capabilities.length !== 1
|
|
25
|
-
|| value.capabilities[0] !== "pi-bridge"
|
|
54
|
+
|| parseMoltnetBridgeCapabilities(value.capabilities) === null
|
|
26
55
|
|| !Array.isArray(value.assets)
|
|
27
56
|
|| value.assets.length !== 2)
|
|
28
57
|
return fail();
|
|
@@ -52,7 +81,7 @@ export const parseTrustedMoltnetReleaseAuthority = (raw) => {
|
|
|
52
81
|
version: MOLTNET_RELEASE_AUTHORITY_VERSION,
|
|
53
82
|
release_version: value.release_version,
|
|
54
83
|
source_revision: value.source_revision,
|
|
55
|
-
capabilities:
|
|
84
|
+
capabilities: parseMoltnetBridgeCapabilities(value.capabilities),
|
|
56
85
|
assets: Object.freeze(assets)
|
|
57
86
|
});
|
|
58
87
|
};
|
|
@@ -14,4 +14,4 @@ export interface TeamRepresentativeResolution {
|
|
|
14
14
|
sourceTeamSource: string;
|
|
15
15
|
}
|
|
16
16
|
export declare const resolveTeamRepresentatives: (plan: CompilePlan, teamNode: ResolvedTeamNode, seen?: string[]) => TeamRepresentativeResolution[];
|
|
17
|
-
export declare const resolveMoltnetAttachments: (attachments: ResolvedMoltnetAttachment[] | undefined, context: MoltnetTeamContext | undefined, nodeName: string) => ResolvedMoltnetAttachment[] | undefined;
|
|
17
|
+
export declare const resolveMoltnetAttachments: (attachments: ResolvedMoltnetAttachment[] | undefined, context: MoltnetTeamContext | undefined, nodeName: string, runtimeName?: string) => ResolvedMoltnetAttachment[] | undefined;
|
|
@@ -71,7 +71,7 @@ export const resolveTeamRepresentatives = (plan, teamNode, seen = []) => {
|
|
|
71
71
|
}
|
|
72
72
|
return representatives;
|
|
73
73
|
};
|
|
74
|
-
export const resolveMoltnetAttachments = (attachments, context, nodeName) => {
|
|
74
|
+
export const resolveMoltnetAttachments = (attachments, context, nodeName, runtimeName) => {
|
|
75
75
|
if (!attachments || attachments.length === 0) {
|
|
76
76
|
return undefined;
|
|
77
77
|
}
|
|
@@ -84,7 +84,7 @@ export const resolveMoltnetAttachments = (attachments, context, nodeName) => {
|
|
|
84
84
|
throw new SpawnfileError("validation_error", `Agent ${nodeName} references unknown Moltnet network ${attachment.network} on team ${context.teamName}`);
|
|
85
85
|
}
|
|
86
86
|
if (network.server) {
|
|
87
|
-
resolveMoltnetClientAuth(network.server, network.id, context.memberId, undefined, attachment.auth?.tokenId);
|
|
87
|
+
resolveMoltnetClientAuth(network.server, network.id, context.memberId, undefined, attachment.auth?.tokenId, runtimeName);
|
|
88
88
|
}
|
|
89
89
|
for (const roomId of Object.keys(attachment.rooms ?? {})) {
|
|
90
90
|
const room = network.rooms.find((entry) => entry.id === roomId);
|
|
@@ -26,15 +26,9 @@ const validateGlobalMemberIds = (plan) => {
|
|
|
26
26
|
context
|
|
27
27
|
]));
|
|
28
28
|
for (const context of uniqueContexts.values()) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const matches = plan.organizationIdentity.agentMembers.filter((member) => member.memberId === canonicalMemberId);
|
|
33
|
-
if (!canonicalMemberId || matches.length !== 1) {
|
|
34
|
-
throw new SpawnfileError("validation_error", `Unable to resolve exactly one canonical Moltnet member id for ${context.agentSource}`);
|
|
35
|
-
}
|
|
36
|
-
memberId = canonicalMemberId;
|
|
37
|
-
}
|
|
29
|
+
const memberId = (plan.organizationIdentity?.externalParticipants.length ?? 0) > 0
|
|
30
|
+
? resolveCanonicalAgentMemberId(plan, context.agentSource) ?? context.memberId
|
|
31
|
+
: context.memberId;
|
|
38
32
|
const previous = seen.get(memberId);
|
|
39
33
|
const label = `${context.teamName} (${context.teamSource}) member ${context.memberId}`;
|
|
40
34
|
if (previous &&
|
|
@@ -181,9 +175,7 @@ export const resolvePlanMoltnetAttachments = (plan) => {
|
|
|
181
175
|
for (const synthesized of synthesizedAttachments) {
|
|
182
176
|
const { agentSource, attachment, directTeamSource } = synthesized;
|
|
183
177
|
const representativeContext = (plan.memberships ?? []).find((context) => context.agentSource === agentSource &&
|
|
184
|
-
|
|
185
|
-
? context.teamSource === directTeamSource
|
|
186
|
-
: context.memberId === attachment.memberId));
|
|
178
|
+
context.teamSource === directTeamSource);
|
|
187
179
|
if (!representativeContext) {
|
|
188
180
|
throw new SpawnfileError("validation_error", `Unable to find direct member context for synthesized Moltnet member ${attachment.memberId ?? "unknown"}`);
|
|
189
181
|
}
|
|
@@ -207,14 +199,16 @@ export const resolvePlanMoltnetAttachments = (plan) => {
|
|
|
207
199
|
continue;
|
|
208
200
|
}
|
|
209
201
|
const teamNode = findTeamBySource(plan, context.teamSource);
|
|
210
|
-
const
|
|
202
|
+
const resolvedMemberId = (plan.organizationIdentity?.externalParticipants.length ?? 0) > 0
|
|
203
|
+
? resolveCanonicalAgentMemberId(plan, context.agentSource) ?? context.memberId
|
|
204
|
+
: context.memberId;
|
|
211
205
|
const resolved = resolveMoltnetAttachments(declaredAttachments, {
|
|
212
206
|
memberId: context.memberId,
|
|
213
207
|
networks: teamNode.networks ?? [],
|
|
214
|
-
resolvedMemberId
|
|
208
|
+
resolvedMemberId,
|
|
215
209
|
teamName: context.teamName,
|
|
216
210
|
teamSource: context.teamSource
|
|
217
|
-
}, agentNode.name);
|
|
211
|
+
}, agentNode.name, agentNode.runtime.name);
|
|
218
212
|
resolvedAttachments.push(...(resolved ?? []));
|
|
219
213
|
}
|
|
220
214
|
resolvedAttachments.push(...(synthesizedByAgent.get(agentNode.source) ?? []));
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { SpawnfileError } from "../shared/index.js";
|
|
2
2
|
import { resolveTeamRepresentatives } from "./moltnetRepresentativeResolution.js";
|
|
3
3
|
import { resolveCanonicalAgentMemberId } from "./organizationIdentity.js";
|
|
4
|
+
import { isDeclaredPairedRemoteRoomMember } from "../manifest/index.js";
|
|
4
5
|
import { isAttachedExternalRoomMember } from "./buildCompilePlanTeams.js";
|
|
5
6
|
const hasOwn = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
|
|
6
7
|
const findAgentBySource = (plan, source) => {
|
|
@@ -23,13 +24,15 @@ const clonePolicy = (policy) => ({
|
|
|
23
24
|
const defaultNestedRepresentativePolicy = () => ({
|
|
24
25
|
wake: "mentions"
|
|
25
26
|
});
|
|
27
|
+
// Ordinary Moltnet uses direct member slots. B31's externally authorized
|
|
28
|
+
// organization uses its canonical nested principal identifiers instead.
|
|
26
29
|
const resolveConcreteMemberId = (plan, agentSource, authoredMemberId) => {
|
|
27
|
-
if (
|
|
30
|
+
if ((plan.organizationIdentity?.externalParticipants.length ?? 0) === 0) {
|
|
28
31
|
return authoredMemberId;
|
|
32
|
+
}
|
|
29
33
|
const canonicalMemberId = resolveCanonicalAgentMemberId(plan, agentSource);
|
|
30
|
-
if (!canonicalMemberId
|
|
31
|
-
|
|
32
|
-
throw new SpawnfileError("validation_error", `Unable to resolve exactly one canonical Moltnet member id for ${agentSource}`);
|
|
34
|
+
if (!canonicalMemberId) {
|
|
35
|
+
throw new SpawnfileError("validation_error", `Unable to resolve canonical Moltnet member id for ${agentSource}`);
|
|
33
36
|
}
|
|
34
37
|
return canonicalMemberId;
|
|
35
38
|
};
|
|
@@ -62,7 +65,11 @@ const compareRoomMemberships = (left, right) => [
|
|
|
62
65
|
left.agentSource.localeCompare(right.agentSource)
|
|
63
66
|
].find((result) => result !== 0) ?? 0;
|
|
64
67
|
export const listConcreteMoltnetRoomMemberIds = (plan, teamNode, networkId, room, memberships = plan.moltnetRoomMemberships) => {
|
|
68
|
+
const network = teamNode.networks?.find((candidate) => candidate.id === networkId);
|
|
65
69
|
const externalMembers = room.members.filter((memberId) => isAttachedExternalRoomMember(teamNode, networkId, memberId));
|
|
70
|
+
const remoteMembers = network
|
|
71
|
+
? room.members.filter((memberId) => isDeclaredPairedRemoteRoomMember(network, room, memberId))
|
|
72
|
+
: [];
|
|
66
73
|
if (memberships) {
|
|
67
74
|
return [
|
|
68
75
|
...new Set([
|
|
@@ -71,7 +78,8 @@ export const listConcreteMoltnetRoomMemberIds = (plan, teamNode, networkId, room
|
|
|
71
78
|
&& membership.networkId === networkId
|
|
72
79
|
&& membership.roomId === room.id)
|
|
73
80
|
.map((membership) => membership.concreteMemberId),
|
|
74
|
-
...externalMembers
|
|
81
|
+
...externalMembers,
|
|
82
|
+
...remoteMembers
|
|
75
83
|
])
|
|
76
84
|
].sort();
|
|
77
85
|
}
|
|
@@ -83,6 +91,10 @@ export const listConcreteMoltnetRoomMemberIds = (plan, teamNode, networkId, room
|
|
|
83
91
|
concreteMembers.push(declaredSlot);
|
|
84
92
|
continue;
|
|
85
93
|
}
|
|
94
|
+
if (network && isDeclaredPairedRemoteRoomMember(network, room, declaredSlot)) {
|
|
95
|
+
concreteMembers.push(declaredSlot);
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
86
98
|
throw new SpawnfileError("validation_error", `Team ${teamNode.name} Moltnet room ${room.id} references unknown member ${declaredSlot}`);
|
|
87
99
|
}
|
|
88
100
|
if (member.kind === "agent") {
|
|
@@ -113,6 +125,9 @@ export const resolveMoltnetRoomMemberships = (plan) => {
|
|
|
113
125
|
if (isAttachedExternalRoomMember(teamNode, network.id, declaredSlot)) {
|
|
114
126
|
continue;
|
|
115
127
|
}
|
|
128
|
+
if (isDeclaredPairedRemoteRoomMember(network, room, declaredSlot)) {
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
116
131
|
throw new SpawnfileError("validation_error", `Team ${teamNode.name} Moltnet room ${room.id} references unknown member ${declaredSlot}`);
|
|
117
132
|
}
|
|
118
133
|
if (declaredMember.kind === "agent") {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { TeamNetworkServer } from "../manifest/index.js";
|
|
2
2
|
export declare const assertCompatibleMoltnetNetworkName: (networkId: string, existing: string | undefined, next: string | undefined) => void;
|
|
3
3
|
export declare const assertCompatibleMoltnetServer: (networkId: string, existing: TeamNetworkServer, next: TeamNetworkServer) => void;
|
|
4
|
-
export declare const assertCompatibleMoltnetRoomPolicy: (networkId: string, roomId: string, field: "visibility" | "write_policy", existing: string | undefined, next: string | undefined) => void;
|
|
4
|
+
export declare const assertCompatibleMoltnetRoomPolicy: (networkId: string, roomId: string, field: "federation" | "visibility" | "write_policy", existing: string | string[] | undefined, next: string | string[] | undefined) => void;
|
|
@@ -22,7 +22,9 @@ export const assertCompatibleMoltnetServer = (networkId, existing, next) => {
|
|
|
22
22
|
}
|
|
23
23
|
};
|
|
24
24
|
export const assertCompatibleMoltnetRoomPolicy = (networkId, roomId, field, existing, next) => {
|
|
25
|
-
if (existing !== undefined
|
|
25
|
+
if (existing !== undefined
|
|
26
|
+
&& next !== undefined
|
|
27
|
+
&& stableStringify(existing) !== stableStringify(next)) {
|
|
26
28
|
throw new SpawnfileError("validation_error", `Duplicate Moltnet network ${networkId} room ${roomId} declares conflicting ${field}: ${existing} vs ${next}`);
|
|
27
29
|
}
|
|
28
30
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { CompilePlan, ResolvedAgentNode } from "./types.js";
|
|
2
|
-
export declare const resolveRuntimeConfig: (plan: CompilePlan, agentNode: ResolvedAgentNode, nodeSlug: string,
|
|
2
|
+
export declare const resolveRuntimeConfig: (plan: CompilePlan, agentNode: ResolvedAgentNode, nodeSlug: string, networkId: string, moltnetAgentId: string) => Record<string, string>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { getRuntimeAdapter } from "../runtime/index.js";
|
|
2
2
|
import { SpawnfileError } from "../shared/index.js";
|
|
3
|
+
import { createMoltnetDaimonReceiptStorePath } from "./moltnetConfigLowering.js";
|
|
3
4
|
const INSTANCE_ROOT_PLACEHOLDER = "<instance-root>";
|
|
4
5
|
const CONFIG_FILE_PLACEHOLDER = "<config-file>";
|
|
5
6
|
const resolveSequentialRuntimePort = (plan, runtimeName, slug) => {
|
|
@@ -28,7 +29,14 @@ const resolveRuntimeInstancePaths = (runtimeName, slug) => {
|
|
|
28
29
|
: undefined
|
|
29
30
|
};
|
|
30
31
|
};
|
|
31
|
-
|
|
32
|
+
const resolveDaimonAgentId = (plan, agentNode) => {
|
|
33
|
+
const compiled = plan.nodes.find((node) => node.kind === "agent" && node.value.source === agentNode.source);
|
|
34
|
+
if (!compiled) {
|
|
35
|
+
throw new SpawnfileError("compile_error", `Unable to resolve Daimon runtime agent identity for ${agentNode.name}`);
|
|
36
|
+
}
|
|
37
|
+
return compiled.id;
|
|
38
|
+
};
|
|
39
|
+
export const resolveRuntimeConfig = (plan, agentNode, nodeSlug, networkId, moltnetAgentId) => {
|
|
32
40
|
switch (agentNode.runtime.name) {
|
|
33
41
|
case "openclaw": {
|
|
34
42
|
const port = resolveSequentialRuntimePort(plan, "openclaw", nodeSlug);
|
|
@@ -51,7 +59,19 @@ export const resolveRuntimeConfig = (plan, agentNode, nodeSlug, _networkId, _age
|
|
|
51
59
|
kind: "picoclaw"
|
|
52
60
|
};
|
|
53
61
|
}
|
|
54
|
-
case "daimon":
|
|
62
|
+
case "daimon": {
|
|
63
|
+
const port = getRuntimeAdapter("daimon").container.port;
|
|
64
|
+
if (!port) {
|
|
65
|
+
throw new SpawnfileError("compile_error", `Unable to resolve Daimon control port for Moltnet agent ${agentNode.name}`);
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
agent_id: resolveDaimonAgentId(plan, agentNode),
|
|
69
|
+
control_url: `http://127.0.0.1:${port}`,
|
|
70
|
+
kind: "daimon",
|
|
71
|
+
receipt_store_path: createMoltnetDaimonReceiptStorePath(networkId, moltnetAgentId),
|
|
72
|
+
token_env: "SPAWNFILE_DAIMON_CONTROL_TOKEN"
|
|
73
|
+
};
|
|
74
|
+
}
|
|
55
75
|
case "pi": {
|
|
56
76
|
const port = getRuntimeAdapter(agentNode.runtime.name).container.port;
|
|
57
77
|
if (!port) {
|
|
@@ -71,6 +71,7 @@ const mergeRooms = (plan, serverPlan, declaration) => {
|
|
|
71
71
|
const existingRoom = serverPlan.rooms.find((entry) => entry.id === room.id);
|
|
72
72
|
if (!existingRoom) {
|
|
73
73
|
serverPlan.rooms.push({
|
|
74
|
+
...(room.federation ? { federation: room.federation } : {}),
|
|
74
75
|
id: room.id,
|
|
75
76
|
members: concreteMembers,
|
|
76
77
|
...(room.name ? { name: room.name } : {}),
|
|
@@ -82,8 +83,10 @@ const mergeRooms = (plan, serverPlan, declaration) => {
|
|
|
82
83
|
existingRoom.members = [
|
|
83
84
|
...new Set([...existingRoom.members, ...concreteMembers])
|
|
84
85
|
].sort();
|
|
86
|
+
assertCompatibleMoltnetRoomPolicy(network.id, room.id, "federation", existingRoom.federation, room.federation);
|
|
85
87
|
assertCompatibleMoltnetRoomPolicy(network.id, room.id, "visibility", existingRoom.visibility, room.visibility);
|
|
86
88
|
assertCompatibleMoltnetRoomPolicy(network.id, room.id, "write_policy", existingRoom.write_policy, room.write_policy);
|
|
89
|
+
existingRoom.federation ??= room.federation;
|
|
87
90
|
existingRoom.visibility ??= room.visibility;
|
|
88
91
|
existingRoom.write_policy ??= room.write_policy;
|
|
89
92
|
}
|
|
@@ -128,5 +131,21 @@ export const resolveMoltnetServerPlans = (plan, teamNodes) => {
|
|
|
128
131
|
if (count > 1)
|
|
129
132
|
serverPlans.get(networkId)?.rooms.sort((left, right) => left.id.localeCompare(right.id));
|
|
130
133
|
}
|
|
134
|
+
for (const serverPlan of serverPlans.values()) {
|
|
135
|
+
const pairingIds = new Set(serverPlan.server.mode === "managed"
|
|
136
|
+
? (serverPlan.server.pairings ?? []).map((pairing) => pairing.id)
|
|
137
|
+
: []);
|
|
138
|
+
for (const room of serverPlan.rooms) {
|
|
139
|
+
if (serverPlan.server.mode === "external" && room.federation !== undefined) {
|
|
140
|
+
throw new SpawnfileError("validation_error", `External Moltnet network ${serverPlan.networkId} room ${room.id} cannot declare federation`);
|
|
141
|
+
}
|
|
142
|
+
if (!Array.isArray(room.federation))
|
|
143
|
+
continue;
|
|
144
|
+
const unknownPairing = room.federation.find((pairingId) => !pairingIds.has(pairingId));
|
|
145
|
+
if (unknownPairing) {
|
|
146
|
+
throw new SpawnfileError("validation_error", `Moltnet network ${serverPlan.networkId} room ${room.id} federation references unknown pairing ${unknownPairing}`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
131
150
|
return serverPlans;
|
|
132
151
|
};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { CompilePlan, MoltnetExternalParticipantIntent } from "./types.js";
|
|
2
|
+
export declare const validateB31MoltnetAuth: (plan: CompilePlan) => void;
|
|
3
|
+
export declare const resolveMoltnetExternalParticipantIntents: (plan: CompilePlan) => MoltnetExternalParticipantIntent[];
|