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.
Files changed (873) hide show
  1. package/README.md +60 -159
  2. package/dist/audit/checksShared.d.ts +1 -1
  3. package/dist/auth/importers.d.ts +10 -0
  4. package/dist/auth/importers.js +46 -5
  5. package/dist/auth/index.d.ts +3 -0
  6. package/dist/auth/index.js +2 -0
  7. package/dist/auth/paths.d.ts +1 -1
  8. package/dist/auth/profileStore.js +13 -10
  9. package/dist/auth/targetSecretSourceFsIdentity.d.ts +40 -0
  10. package/dist/auth/targetSecretSourceFsIdentity.js +42 -0
  11. package/dist/auth/targetSecretSourceFsPublish.d.ts +2 -0
  12. package/dist/auth/targetSecretSourceFsPublish.js +3 -1
  13. package/dist/auth/targetSecretSourceFsPublishImmutable.d.ts +2 -1
  14. package/dist/auth/targetSecretSourceFsPublishImmutable.js +104 -71
  15. package/dist/auth/targetSecretSourceFsRead.js +5 -14
  16. package/dist/auth/trainingAuth.d.ts +21 -0
  17. package/dist/auth/trainingAuth.js +86 -0
  18. package/dist/auth/trainingGrokWriteback.d.ts +4 -0
  19. package/dist/auth/trainingGrokWriteback.js +119 -0
  20. package/dist/auth/trainingGrokWritebackLock.d.ts +5 -0
  21. package/dist/auth/trainingGrokWritebackLock.js +56 -0
  22. package/dist/auth/types.d.ts +1 -1
  23. package/dist/cli/authCommands.d.ts +1 -1
  24. package/dist/cli/authCommands.js +18 -5
  25. package/dist/cli/canaryCutoverCommand.d.ts +2 -0
  26. package/dist/cli/canaryCutoverCommand.js +30 -0
  27. package/dist/cli/capabilitiesCommand.d.ts +3 -0
  28. package/dist/cli/capabilitiesCommand.js +12 -0
  29. package/dist/cli/capabilitiesReceipt.d.ts +56 -0
  30. package/dist/cli/capabilitiesReceipt.js +56 -0
  31. package/dist/cli/compileBuildCommands.js +17 -0
  32. package/dist/cli/composedLifecycleContractSet.d.ts +21 -0
  33. package/dist/cli/composedLifecycleContractSet.js +204 -0
  34. package/dist/cli/devCommands.js +6 -2
  35. package/dist/cli/downCommand.d.ts +2 -0
  36. package/dist/cli/downCommand.js +22 -8
  37. package/dist/cli/envFileOption.d.ts +18 -0
  38. package/dist/cli/envFileOption.js +20 -0
  39. package/dist/cli/evidenceExportHelperCommand.d.ts +13 -0
  40. package/dist/cli/evidenceExportHelperCommand.js +51 -0
  41. package/dist/cli/index.js +12 -3
  42. package/dist/cli/lifecycleCommands.d.ts +1 -1
  43. package/dist/cli/lifecycleCommands.js +3 -1
  44. package/dist/cli/lifecycleMachine.d.ts +7 -1
  45. package/dist/cli/lifecycleMachine.js +2 -2
  46. package/dist/cli/lifecyclePlan.d.ts +1 -0
  47. package/dist/cli/lifecyclePlan.js +2 -0
  48. package/dist/cli/paideiaDelegation.d.ts +18 -0
  49. package/dist/cli/paideiaDelegation.js +211 -0
  50. package/dist/cli/paideiaSupervisor.d.ts +17 -0
  51. package/dist/cli/paideiaSupervisor.js +48 -0
  52. package/dist/cli/productStateCloneCommand.d.ts +2 -0
  53. package/dist/cli/productStateCloneCommand.js +34 -0
  54. package/dist/cli/recordCommands.d.ts +17 -0
  55. package/dist/cli/recordCommands.js +43 -0
  56. package/dist/cli/releaseCommand.d.ts +6 -0
  57. package/dist/cli/releaseCommand.js +91 -0
  58. package/dist/cli/runCli.d.ts +19 -3
  59. package/dist/cli/runCli.js +43 -10
  60. package/dist/cli/runPublishCommands.js +5 -3
  61. package/dist/cli/targetCommands.d.ts +4 -7
  62. package/dist/cli/targetCommands.js +16 -46
  63. package/dist/cli/targetConfigPreparedPlan.d.ts +3 -0
  64. package/dist/cli/targetConfigPreparedPlan.js +74 -0
  65. package/dist/cli/targetConfigResolver.d.ts +3 -0
  66. package/dist/cli/targetConfigResolver.js +111 -0
  67. package/dist/cli/targetConfigResolverCommand.d.ts +6 -0
  68. package/dist/cli/targetConfigResolverCommand.js +43 -0
  69. package/dist/cli/targetConfigResolverContracts.d.ts +56 -0
  70. package/dist/cli/targetConfigResolverContracts.js +30 -0
  71. package/dist/cli/targetConfigResolverDocker.d.ts +4 -0
  72. package/dist/cli/targetConfigResolverDocker.js +47 -0
  73. package/dist/cli/targetConfigResolverValidation.d.ts +10 -0
  74. package/dist/cli/targetConfigResolverValidation.js +94 -0
  75. package/dist/cli/targetDefaultAuthorities.d.ts +2 -0
  76. package/dist/cli/targetDefaultAuthorities.js +3 -0
  77. package/dist/cli/targetDefaultConfig.d.ts +7 -0
  78. package/dist/cli/targetDefaultConfig.js +22 -5
  79. package/dist/cli/targetDefaultConfigStdin.js +7 -1
  80. package/dist/cli/targetDefaultHandlerFactory.js +23 -2
  81. package/dist/cli/targetDefaultHandlers.d.ts +2 -2
  82. package/dist/cli/targetProductionCommands.d.ts +5 -0
  83. package/dist/cli/targetProductionCommands.js +45 -0
  84. package/dist/cli/trainCommand.d.ts +3 -0
  85. package/dist/cli/trainCommand.js +114 -0
  86. package/dist/cli/upCommand.js +40 -7
  87. package/dist/cli/upLifecycleRecovery.d.ts +2 -2
  88. package/dist/cli/upLifecycleRecovery.js +188 -44
  89. package/dist/cli/usageCommand.d.ts +40 -0
  90. package/dist/cli/usageCommand.js +284 -0
  91. package/dist/cli/usageCommandLive.d.ts +84 -0
  92. package/dist/cli/usageCommandLive.js +95 -0
  93. package/dist/cli/usageDeploymentSource.d.ts +9 -0
  94. package/dist/cli/usageDeploymentSource.js +22 -0
  95. package/dist/cli/volumeCommands.d.ts +8 -0
  96. package/dist/cli/volumeCommands.js +53 -0
  97. package/dist/cli/workspaceResourceMigrationCommand.d.ts +8 -0
  98. package/dist/cli/workspaceResourceMigrationCommand.js +36 -0
  99. package/dist/compiler/agentNodeMerge.js +3 -2
  100. package/dist/compiler/buildCompilePlan.js +4 -0
  101. package/dist/compiler/buildCompilePlanAgent.js +3 -1
  102. package/dist/compiler/buildCompilePlanTeams.d.ts +1 -1
  103. package/dist/compiler/buildCompilePlanTeams.js +6 -1
  104. package/dist/compiler/buildCompilePlanTraversal.js +2 -0
  105. package/dist/compiler/buildCompilePlanTraversalHelpers.d.ts +2 -2
  106. package/dist/compiler/buildCompilePlanTraversalHelpers.js +4 -3
  107. package/dist/compiler/buildProject.d.ts +10 -0
  108. package/dist/compiler/buildProject.js +14 -2
  109. package/dist/compiler/cleanCompileOutput.d.ts +2 -0
  110. package/dist/compiler/cleanCompileOutput.js +14 -0
  111. package/dist/compiler/compilePlanHelpers.js +5 -0
  112. package/dist/compiler/compileProject.d.ts +12 -0
  113. package/dist/compiler/compileProject.js +33 -3
  114. package/dist/compiler/compileProjectSupport.js +9 -0
  115. package/dist/compiler/containerArtifactSummaries.js +1 -0
  116. package/dist/compiler/containerArtifacts.d.ts +7 -5
  117. package/dist/compiler/containerArtifacts.js +77 -41
  118. package/dist/compiler/containerArtifactsPlans.d.ts +1 -1
  119. package/dist/compiler/containerArtifactsPlans.js +31 -7
  120. package/dist/compiler/containerArtifactsRender.d.ts +2 -1
  121. package/dist/compiler/containerArtifactsRender.js +91 -58
  122. package/dist/compiler/containerArtifactsTypes.d.ts +15 -0
  123. package/dist/compiler/containerBackedMountRender.d.ts +56 -0
  124. package/dist/compiler/containerBackedMountRender.js +101 -0
  125. package/dist/compiler/containerDaimonBrokerRender.d.ts +114 -0
  126. package/dist/compiler/containerDaimonBrokerRender.js +194 -0
  127. package/dist/compiler/containerDaimonGrokTaskClock.d.ts +5 -0
  128. package/dist/compiler/containerDaimonGrokTaskClock.js +29 -0
  129. package/dist/compiler/containerDaimonGrokWorkerProvisioning.d.ts +38 -0
  130. package/dist/compiler/containerDaimonGrokWorkerProvisioning.js +130 -0
  131. package/dist/compiler/containerDaimonGrokWorkerRender.d.ts +197 -0
  132. package/dist/compiler/containerDaimonGrokWorkerRender.js +281 -0
  133. package/dist/compiler/containerDaimonOwnershipGuardRender.d.ts +25 -0
  134. package/dist/compiler/containerDaimonOwnershipGuardRender.js +204 -0
  135. package/dist/compiler/containerDaimonUidEntrypointRender.d.ts +24 -0
  136. package/dist/compiler/containerDaimonUidEntrypointRender.js +291 -0
  137. package/dist/compiler/containerEntrypointRender.d.ts +7 -0
  138. package/dist/compiler/containerEntrypointRender.js +28 -22
  139. package/dist/compiler/containerPersistentMounts.d.ts +30 -0
  140. package/dist/compiler/containerPersistentMounts.js +66 -0
  141. package/dist/compiler/containerReadinessPaths.d.ts +1 -0
  142. package/dist/compiler/containerReadinessPaths.js +1 -0
  143. package/dist/compiler/containerRuntimeLinkMaterializer.d.ts +2 -0
  144. package/dist/compiler/containerRuntimeLinkMaterializer.js +12 -0
  145. package/dist/compiler/containerRuntimeReadinessRender.d.ts +7 -0
  146. package/dist/compiler/containerRuntimeReadinessRender.js +40 -0
  147. package/dist/compiler/containerStateOwnershipRender.d.ts +4 -0
  148. package/dist/compiler/containerStateOwnershipRender.js +75 -0
  149. package/dist/compiler/containerTargetResources.d.ts +32 -1
  150. package/dist/compiler/containerTargetResources.js +115 -15
  151. package/dist/compiler/containerVolumeBootstrap.d.ts +3 -0
  152. package/dist/compiler/containerVolumeBootstrap.js +3 -0
  153. package/dist/compiler/containerWorkspaceResourceRender.js +52 -1
  154. package/dist/compiler/daimonTelemetryArtifacts.d.ts +2 -2
  155. package/dist/compiler/daimonTelemetryArtifacts.js +5 -10
  156. package/dist/compiler/deploymentLineage.d.ts +40 -0
  157. package/dist/compiler/deploymentLineage.js +50 -0
  158. package/dist/compiler/index.d.ts +5 -0
  159. package/dist/compiler/index.js +5 -0
  160. package/dist/compiler/initProject.d.ts +2 -0
  161. package/dist/compiler/initProject.js +39 -1
  162. package/dist/compiler/localMoltnetAuthority.d.ts +64 -0
  163. package/dist/compiler/localMoltnetAuthority.js +177 -0
  164. package/dist/compiler/mcpPlaceholders.d.ts +11 -0
  165. package/dist/compiler/mcpPlaceholders.js +58 -0
  166. package/dist/compiler/mcpServerInheritance.d.ts +18 -0
  167. package/dist/compiler/mcpServerInheritance.js +43 -0
  168. package/dist/compiler/memoryArtifacts.d.ts +1 -1
  169. package/dist/compiler/memoryArtifacts.js +108 -32
  170. package/dist/compiler/modelEnv.d.ts +5 -0
  171. package/dist/compiler/modelEnv.js +8 -2
  172. package/dist/compiler/moltnetArtifactPaths.d.ts +17 -12
  173. package/dist/compiler/moltnetArtifactPaths.js +17 -15
  174. package/dist/compiler/moltnetArtifactTypes.d.ts +11 -0
  175. package/dist/compiler/moltnetArtifacts.d.ts +1 -1
  176. package/dist/compiler/moltnetArtifacts.js +53 -12
  177. package/dist/compiler/moltnetBinaries.d.ts +16 -4
  178. package/dist/compiler/moltnetBinaries.js +46 -6
  179. package/dist/compiler/moltnetClientConfig.js +1 -1
  180. package/dist/compiler/moltnetConfigLowering.d.ts +3 -1
  181. package/dist/compiler/moltnetConfigLowering.js +30 -6
  182. package/dist/compiler/moltnetNodeConfig.js +1 -1
  183. package/dist/compiler/moltnetReleaseAuthority.d.ts +24 -1
  184. package/dist/compiler/moltnetReleaseAuthority.js +33 -4
  185. package/dist/compiler/moltnetRepresentativeResolution.d.ts +1 -1
  186. package/dist/compiler/moltnetRepresentativeResolution.js +2 -2
  187. package/dist/compiler/moltnetResolution.js +9 -15
  188. package/dist/compiler/moltnetRoomMemberships.js +20 -5
  189. package/dist/compiler/moltnetRoomPolicyCompatibility.d.ts +1 -1
  190. package/dist/compiler/moltnetRoomPolicyCompatibility.js +3 -1
  191. package/dist/compiler/moltnetRuntimeConfig.d.ts +1 -1
  192. package/dist/compiler/moltnetRuntimeConfig.js +22 -2
  193. package/dist/compiler/moltnetServerPlans.js +19 -0
  194. package/dist/compiler/organizationExternalParticipants.d.ts +3 -0
  195. package/dist/compiler/organizationExternalParticipants.js +176 -0
  196. package/dist/compiler/organizationIdentity.d.ts +3 -9
  197. package/dist/compiler/organizationIdentity.js +37 -270
  198. package/dist/compiler/organizationIdentityGraph.d.ts +15 -0
  199. package/dist/compiler/organizationIdentityGraph.js +115 -0
  200. package/dist/compiler/organizationReadyEvidence.d.ts +8 -0
  201. package/dist/compiler/organizationReadyEvidence.js +23 -3
  202. package/dist/compiler/preflightCompilePlan.d.ts +9 -0
  203. package/dist/compiler/preflightCompilePlan.js +38 -0
  204. package/dist/compiler/recordingAgentFacts.d.ts +4 -0
  205. package/dist/compiler/recordingAgentFacts.js +35 -0
  206. package/dist/compiler/recordingCapability.d.ts +4 -0
  207. package/dist/compiler/recordingCapability.js +22 -0
  208. package/dist/compiler/recordingReport.d.ts +4 -0
  209. package/dist/compiler/recordingReport.js +18 -0
  210. package/dist/compiler/runProject.d.ts +6 -3
  211. package/dist/compiler/runProject.js +34 -6
  212. package/dist/compiler/runProjectAuth.d.ts +3 -1
  213. package/dist/compiler/runProjectAuth.js +19 -3
  214. package/dist/compiler/runProjectDaimonCodexDocker.d.ts +3 -0
  215. package/dist/compiler/runProjectDaimonCodexDocker.js +36 -0
  216. package/dist/compiler/runProjectDocker.d.ts +8 -4
  217. package/dist/compiler/runProjectDocker.js +43 -18
  218. package/dist/compiler/runProjectDockerDaimonGuards.d.ts +15 -0
  219. package/dist/compiler/runProjectDockerDaimonGuards.js +122 -0
  220. package/dist/compiler/runProjectDockerReservation.d.ts +3 -0
  221. package/dist/compiler/runProjectDockerReservation.js +118 -0
  222. package/dist/compiler/runProjectLifecycle.js +1 -1
  223. package/dist/compiler/surfaces.d.ts +1 -2
  224. package/dist/compiler/surfaces.js +0 -1
  225. package/dist/compiler/syncProjectAuth.js +2 -1
  226. package/dist/compiler/training/broker/clockProbe.d.ts +6 -0
  227. package/dist/compiler/training/broker/clockProbe.js +27 -0
  228. package/dist/compiler/training/broker/declaration.d.ts +47 -0
  229. package/dist/compiler/training/broker/declaration.js +57 -0
  230. package/dist/compiler/training/broker/entrypoint.d.ts +39 -0
  231. package/dist/compiler/training/broker/entrypoint.js +126 -0
  232. package/dist/compiler/training/broker/evaluatorSecrets.d.ts +2 -0
  233. package/dist/compiler/training/broker/evaluatorSecrets.js +60 -0
  234. package/dist/compiler/training/broker/index.d.ts +11 -0
  235. package/dist/compiler/training/broker/index.js +11 -0
  236. package/dist/compiler/training/broker/main.d.ts +2 -0
  237. package/dist/compiler/training/broker/main.js +14 -0
  238. package/dist/compiler/training/broker/paths.d.ts +236 -0
  239. package/dist/compiler/training/broker/paths.js +249 -0
  240. package/dist/compiler/training/broker/processes.d.ts +51 -0
  241. package/dist/compiler/training/broker/processes.js +102 -0
  242. package/dist/compiler/training/broker/projection.d.ts +52 -0
  243. package/dist/compiler/training/broker/projection.js +88 -0
  244. package/dist/compiler/training/broker/provisioning.d.ts +78 -0
  245. package/dist/compiler/training/broker/provisioning.js +231 -0
  246. package/dist/compiler/training/broker/receipt.d.ts +77 -0
  247. package/dist/compiler/training/broker/receipt.js +110 -0
  248. package/dist/compiler/training/broker/registration.d.ts +43 -0
  249. package/dist/compiler/training/broker/registration.js +110 -0
  250. package/dist/compiler/training/broker/reset.d.ts +9 -0
  251. package/dist/compiler/training/broker/reset.js +71 -0
  252. package/dist/compiler/training/broker/runtime.d.ts +22 -0
  253. package/dist/compiler/training/broker/runtime.js +127 -0
  254. package/dist/compiler/training/broker/seccompRoutes.d.ts +31 -0
  255. package/dist/compiler/training/broker/seccompRoutes.js +36 -0
  256. package/dist/compiler/training/broker/supervisor.d.ts +108 -0
  257. package/dist/compiler/training/broker/supervisor.js +172 -0
  258. package/dist/compiler/training/broker/taskClock.d.ts +5 -0
  259. package/dist/compiler/training/broker/taskClock.js +41 -0
  260. package/dist/compiler/training/compiledAgent.d.ts +21 -0
  261. package/dist/compiler/training/compiledAgent.js +62 -0
  262. package/dist/compiler/training/container/contract.d.ts +54 -0
  263. package/dist/compiler/training/container/contract.js +51 -0
  264. package/dist/compiler/training/container/evaluators.d.ts +48 -0
  265. package/dist/compiler/training/container/evaluators.js +50 -0
  266. package/dist/compiler/training/container/grokWriteback.d.ts +8 -0
  267. package/dist/compiler/training/container/grokWriteback.js +26 -0
  268. package/dist/compiler/training/container/index.d.ts +5 -0
  269. package/dist/compiler/training/container/index.js +3 -0
  270. package/dist/compiler/training/container/launch.d.ts +21 -0
  271. package/dist/compiler/training/container/launch.js +264 -0
  272. package/dist/compiler/training/container/nativeSlots.d.ts +14 -0
  273. package/dist/compiler/training/container/nativeSlots.js +13 -0
  274. package/dist/compiler/training/container/outputCopy.d.ts +2 -0
  275. package/dist/compiler/training/container/outputCopy.js +72 -0
  276. package/dist/compiler/training/container/outputVolume.d.ts +27 -0
  277. package/dist/compiler/training/container/outputVolume.js +161 -0
  278. package/dist/compiler/training/container/prepare.d.ts +10 -0
  279. package/dist/compiler/training/container/prepare.js +125 -0
  280. package/dist/compiler/training/container/process.d.ts +14 -0
  281. package/dist/compiler/training/container/process.js +70 -0
  282. package/dist/compiler/training/container/security.d.ts +38 -0
  283. package/dist/compiler/training/container/security.js +68 -0
  284. package/dist/compiler/training/container/subjectIsolation.d.ts +5 -0
  285. package/dist/compiler/training/container/subjectIsolation.js +15 -0
  286. package/dist/compiler/training/context.d.ts +15 -0
  287. package/dist/compiler/training/context.js +93 -0
  288. package/dist/compiler/training/contract.d.ts +144 -0
  289. package/dist/compiler/training/contract.js +36 -0
  290. package/dist/compiler/training/execution.d.ts +417 -0
  291. package/dist/compiler/training/execution.js +160 -0
  292. package/dist/compiler/training/index.d.ts +12 -0
  293. package/dist/compiler/training/index.js +10 -0
  294. package/dist/compiler/training/moments.d.ts +80 -0
  295. package/dist/compiler/training/moments.js +118 -0
  296. package/dist/compiler/training/output.d.ts +2 -0
  297. package/dist/compiler/training/output.js +20 -0
  298. package/dist/compiler/training/plan/contract.d.ts +287 -0
  299. package/dist/compiler/training/plan/contract.js +49 -0
  300. package/dist/compiler/training/plan/index.d.ts +5 -0
  301. package/dist/compiler/training/plan/index.js +4 -0
  302. package/dist/compiler/training/plan/load.d.ts +9 -0
  303. package/dist/compiler/training/plan/load.js +153 -0
  304. package/dist/compiler/training/plan/references.d.ts +19 -0
  305. package/dist/compiler/training/plan/references.js +57 -0
  306. package/dist/compiler/training/plan/resolve.d.ts +4 -0
  307. package/dist/compiler/training/plan/resolve.js +73 -0
  308. package/dist/compiler/training/plan/targets.d.ts +11 -0
  309. package/dist/compiler/training/plan/targets.js +71 -0
  310. package/dist/compiler/training/plan/types.d.ts +36 -0
  311. package/dist/compiler/training/plan/types.js +1 -0
  312. package/dist/compiler/training/preparation/assets/Dockerfile +109 -0
  313. package/dist/compiler/training/preparation/assets/package-lock.json +3787 -0
  314. package/dist/compiler/training/preparation/broker.d.ts +21 -0
  315. package/dist/compiler/training/preparation/broker.js +45 -0
  316. package/dist/compiler/training/preparation/contextModes.d.ts +12 -0
  317. package/dist/compiler/training/preparation/contextModes.js +38 -0
  318. package/dist/compiler/training/preparation/contract.d.ts +207 -0
  319. package/dist/compiler/training/preparation/contract.js +113 -0
  320. package/dist/compiler/training/preparation/copyAssets.d.ts +1 -0
  321. package/dist/compiler/training/preparation/copyAssets.js +8 -0
  322. package/dist/compiler/training/preparation/daimonParent.d.ts +42 -0
  323. package/dist/compiler/training/preparation/daimonParent.js +114 -0
  324. package/dist/compiler/training/preparation/files.d.ts +29 -0
  325. package/dist/compiler/training/preparation/files.js +146 -0
  326. package/dist/compiler/training/preparation/image.d.ts +28 -0
  327. package/dist/compiler/training/preparation/image.js +107 -0
  328. package/dist/compiler/training/preparation/index.d.ts +3 -0
  329. package/dist/compiler/training/preparation/index.js +2 -0
  330. package/dist/compiler/training/preparation/inputs.d.ts +24 -0
  331. package/dist/compiler/training/preparation/inputs.js +101 -0
  332. package/dist/compiler/training/preparation/prepare.d.ts +38 -0
  333. package/dist/compiler/training/preparation/prepare.js +223 -0
  334. package/dist/compiler/training/preparation/scratch.d.ts +8 -0
  335. package/dist/compiler/training/preparation/scratch.js +114 -0
  336. package/dist/compiler/training/repair/compatibility.d.ts +11 -0
  337. package/dist/compiler/training/repair/compatibility.js +34 -0
  338. package/dist/compiler/training/repair/contract.d.ts +840 -0
  339. package/dist/compiler/training/repair/contract.js +33 -0
  340. package/dist/compiler/training/repair/index.d.ts +3 -0
  341. package/dist/compiler/training/repair/index.js +3 -0
  342. package/dist/compiler/training/repair/prepare.d.ts +382 -0
  343. package/dist/compiler/training/repair/prepare.js +78 -0
  344. package/dist/compiler/training/repair/witness.d.ts +352 -0
  345. package/dist/compiler/training/repair/witness.js +48 -0
  346. package/dist/compiler/training/resolution.d.ts +25 -0
  347. package/dist/compiler/training/resolution.js +69 -0
  348. package/dist/compiler/training/rewind/contract.d.ts +321 -0
  349. package/dist/compiler/training/rewind/contract.js +39 -0
  350. package/dist/compiler/training/rewind/deployedResource.d.ts +22 -0
  351. package/dist/compiler/training/rewind/deployedResource.js +19 -0
  352. package/dist/compiler/training/rewind/feed.d.ts +12 -0
  353. package/dist/compiler/training/rewind/feed.js +182 -0
  354. package/dist/compiler/training/rewind/feedContent.d.ts +6 -0
  355. package/dist/compiler/training/rewind/feedContent.js +38 -0
  356. package/dist/compiler/training/rewind/git.d.ts +8 -0
  357. package/dist/compiler/training/rewind/git.js +159 -0
  358. package/dist/compiler/training/rewind/gitArchive.d.ts +2 -0
  359. package/dist/compiler/training/rewind/gitArchive.js +7 -0
  360. package/dist/compiler/training/rewind/gitHistory.d.ts +3 -0
  361. package/dist/compiler/training/rewind/gitHistory.js +55 -0
  362. package/dist/compiler/training/rewind/gitProcess.d.ts +19 -0
  363. package/dist/compiler/training/rewind/gitProcess.js +81 -0
  364. package/dist/compiler/training/rewind/gitTree.d.ts +14 -0
  365. package/dist/compiler/training/rewind/gitTree.js +90 -0
  366. package/dist/compiler/training/rewind/history.d.ts +28 -0
  367. package/dist/compiler/training/rewind/history.js +239 -0
  368. package/dist/compiler/training/rewind/index.d.ts +18 -0
  369. package/dist/compiler/training/rewind/index.js +15 -0
  370. package/dist/compiler/training/rewind/inputs.d.ts +9 -0
  371. package/dist/compiler/training/rewind/inputs.js +67 -0
  372. package/dist/compiler/training/rewind/instant.d.ts +4 -0
  373. package/dist/compiler/training/rewind/instant.js +24 -0
  374. package/dist/compiler/training/rewind/leakCheck.d.ts +10 -0
  375. package/dist/compiler/training/rewind/leakCheck.js +56 -0
  376. package/dist/compiler/training/rewind/leakFeed.d.ts +5 -0
  377. package/dist/compiler/training/rewind/leakFeed.js +25 -0
  378. package/dist/compiler/training/rewind/leakFiles.d.ts +10 -0
  379. package/dist/compiler/training/rewind/leakFiles.js +106 -0
  380. package/dist/compiler/training/rewind/leakGit.d.ts +3 -0
  381. package/dist/compiler/training/rewind/leakGit.js +78 -0
  382. package/dist/compiler/training/rewind/leakGitPayload.d.ts +4 -0
  383. package/dist/compiler/training/rewind/leakGitPayload.js +57 -0
  384. package/dist/compiler/training/rewind/leakInputs.d.ts +7 -0
  385. package/dist/compiler/training/rewind/leakInputs.js +135 -0
  386. package/dist/compiler/training/rewind/leakLayout.d.ts +2 -0
  387. package/dist/compiler/training/rewind/leakLayout.js +17 -0
  388. package/dist/compiler/training/rewind/leakProvenance.d.ts +3 -0
  389. package/dist/compiler/training/rewind/leakProvenance.js +88 -0
  390. package/dist/compiler/training/rewind/materialize.d.ts +136 -0
  391. package/dist/compiler/training/rewind/materialize.js +212 -0
  392. package/dist/compiler/training/rewind/memory.d.ts +10 -0
  393. package/dist/compiler/training/rewind/memory.js +84 -0
  394. package/dist/compiler/training/rewind/memorySchemas.d.ts +87 -0
  395. package/dist/compiler/training/rewind/memorySchemas.js +50 -0
  396. package/dist/compiler/training/rewind/moltnet.d.ts +2 -0
  397. package/dist/compiler/training/rewind/moltnet.js +54 -0
  398. package/dist/compiler/training/rewind/moltnetJson.d.ts +13 -0
  399. package/dist/compiler/training/rewind/moltnetJson.js +180 -0
  400. package/dist/compiler/training/rewind/moltnetSchemas.d.ts +1226 -0
  401. package/dist/compiler/training/rewind/moltnetSchemas.js +75 -0
  402. package/dist/compiler/training/rewind/moltnetSqlite.d.ts +31 -0
  403. package/dist/compiler/training/rewind/moltnetSqlite.js +192 -0
  404. package/dist/compiler/training/rewind/moltnetSqliteData.d.ts +10 -0
  405. package/dist/compiler/training/rewind/moltnetSqliteData.js +113 -0
  406. package/dist/compiler/training/rewind/recordInput.d.ts +40 -0
  407. package/dist/compiler/training/rewind/recordInput.js +49 -0
  408. package/dist/compiler/training/rewind/recordedBundle.d.ts +4 -0
  409. package/dist/compiler/training/rewind/recordedBundle.js +58 -0
  410. package/dist/compiler/training/rewind/recordedCommit.d.ts +2 -0
  411. package/dist/compiler/training/rewind/recordedCommit.js +10 -0
  412. package/dist/compiler/training/rewind/select.d.ts +18 -0
  413. package/dist/compiler/training/rewind/select.js +64 -0
  414. package/dist/compiler/training/rewind/snapshotManifest.d.ts +42 -0
  415. package/dist/compiler/training/rewind/snapshotManifest.js +134 -0
  416. package/dist/compiler/training/rewind/taskClock.d.ts +12 -0
  417. package/dist/compiler/training/rewind/taskClock.js +40 -0
  418. package/dist/compiler/training/rewind/timestamps.d.ts +4 -0
  419. package/dist/compiler/training/rewind/timestamps.js +26 -0
  420. package/dist/compiler/training/rewind/types.d.ts +43 -0
  421. package/dist/compiler/training/rewind/types.js +1 -0
  422. package/dist/compiler/training/rewind/volumes.d.ts +12 -0
  423. package/dist/compiler/training/rewind/volumes.js +58 -0
  424. package/dist/compiler/training/selection.d.ts +7 -0
  425. package/dist/compiler/training/selection.js +15 -0
  426. package/dist/compiler/types.d.ts +7 -2
  427. package/dist/compiler/upProject.d.ts +27 -1
  428. package/dist/compiler/upProject.js +135 -180
  429. package/dist/compiler/upProjectHandoff.d.ts +62 -0
  430. package/dist/compiler/upProjectHandoff.js +204 -0
  431. package/dist/compiler/upReceipt.js +49 -4
  432. package/dist/compiler/updateProjectModels.js +1 -0
  433. package/dist/compiler/view/types.d.ts +1 -1
  434. package/dist/compiler/workspaceBundleArtifacts.d.ts +18 -0
  435. package/dist/compiler/workspaceBundleArtifacts.js +155 -0
  436. package/dist/compiler/workspaceBundleCache.d.ts +23 -0
  437. package/dist/compiler/workspaceBundleCache.js +79 -0
  438. package/dist/compiler/workspaceBundleDependencies.d.ts +21 -0
  439. package/dist/compiler/workspaceBundleDependencies.js +122 -0
  440. package/dist/compiler/workspaceBundleFiles.d.ts +51 -0
  441. package/dist/compiler/workspaceBundleFiles.js +251 -0
  442. package/dist/compiler/workspaceBundleGenerated.d.ts +25 -0
  443. package/dist/compiler/workspaceBundleGenerated.js +103 -0
  444. package/dist/compiler/workspaceBundleGit.d.ts +64 -0
  445. package/dist/compiler/workspaceBundleGit.js +154 -0
  446. package/dist/compiler/workspaceBundleKey.d.ts +34 -0
  447. package/dist/compiler/workspaceBundleKey.js +17 -0
  448. package/dist/compiler/workspaceBundleResolve.d.ts +56 -0
  449. package/dist/compiler/workspaceBundleResolve.js +144 -0
  450. package/dist/compiler/workspaceBundleRun.d.ts +41 -0
  451. package/dist/compiler/workspaceBundleRun.js +79 -0
  452. package/dist/compiler/workspaceBundleTar.d.ts +47 -0
  453. package/dist/compiler/workspaceBundleTar.js +140 -0
  454. package/dist/compiler/workspaceBundleTree.d.ts +15 -0
  455. package/dist/compiler/workspaceBundleTree.js +58 -0
  456. package/dist/compiler/workspaceGitFetch.d.ts +41 -0
  457. package/dist/compiler/workspaceGitFetch.js +155 -0
  458. package/dist/compiler/workspaceGitPins.d.ts +33 -0
  459. package/dist/compiler/workspaceGitPins.js +127 -0
  460. package/dist/compiler/workspaceResources.d.ts +9 -2
  461. package/dist/compiler/workspaceResources.js +39 -7
  462. package/dist/deployment/activation.d.ts +3 -0
  463. package/dist/deployment/activation.js +12 -0
  464. package/dist/deployment/artifactsExportPlan.js +51 -1
  465. package/dist/deployment/canaryCutover.d.ts +42 -0
  466. package/dist/deployment/canaryCutover.js +140 -0
  467. package/dist/deployment/candidateDiagnostics.d.ts +15 -0
  468. package/dist/deployment/candidateDiagnostics.js +90 -0
  469. package/dist/deployment/candidateRecording.d.ts +8 -0
  470. package/dist/deployment/candidateRecording.js +22 -0
  471. package/dist/deployment/dockerLogs.js +4 -1
  472. package/dist/deployment/dockerManager.d.ts +5 -3
  473. package/dist/deployment/dockerManager.js +21 -5
  474. package/dist/deployment/dockerProbeGateway.d.ts +17 -0
  475. package/dist/deployment/dockerProbeGateway.js +17 -2
  476. package/dist/deployment/downDeployment.d.ts +7 -0
  477. package/dist/deployment/downDeployment.js +114 -9
  478. package/dist/deployment/downReceiptTypes.d.ts +17 -2
  479. package/dist/deployment/downReceiptTypes.js +17 -2
  480. package/dist/deployment/homeStore.d.ts +9 -1
  481. package/dist/deployment/homeStore.js +16 -53
  482. package/dist/deployment/index.d.ts +10 -0
  483. package/dist/deployment/index.js +10 -0
  484. package/dist/deployment/lifecycleCompletionContracts.d.ts +66 -0
  485. package/dist/deployment/lifecycleCompletionContracts.js +34 -0
  486. package/dist/deployment/lifecycleCompletionPaths.d.ts +4 -1
  487. package/dist/deployment/lifecycleCompletionPaths.js +3 -0
  488. package/dist/deployment/lifecycleCompletionPublication.d.ts +2 -0
  489. package/dist/deployment/lifecycleCompletionPublication.js +18 -4
  490. package/dist/deployment/lifecycleCompletionStore.d.ts +1 -1
  491. package/dist/deployment/lifecycleCompletionStore.js +7 -7
  492. package/dist/deployment/lifecycleUpRecords.d.ts +11 -0
  493. package/dist/deployment/lifecycleUpRecords.js +127 -0
  494. package/dist/deployment/native/AGENTS.md +11 -0
  495. package/dist/deployment/native/rename-noreplace-arm64 +0 -0
  496. package/dist/deployment/native/rename-noreplace-arm64.provenance.json +1 -0
  497. package/dist/deployment/native/rename-noreplace-x64 +0 -0
  498. package/dist/deployment/native/rename-noreplace-x64.provenance.json +1 -0
  499. package/dist/deployment/noReplaceActivation.d.ts +17 -0
  500. package/dist/deployment/noReplaceActivation.js +50 -0
  501. package/dist/deployment/organizationHandoffAuthorityFsBudget.d.ts +110 -0
  502. package/dist/deployment/organizationHandoffAuthorityFsBudget.js +156 -0
  503. package/dist/deployment/organizationHandoffAuthorityFsClient.js +82 -27
  504. package/dist/deployment/organizationHandoffAuthorityFsElection.d.ts +21 -0
  505. package/dist/deployment/organizationHandoffAuthorityFsElection.js +57 -0
  506. package/dist/deployment/organizationHandoffAuthorityFsWorker.js +254 -108
  507. package/dist/deployment/organizationHandoffAuthorityFsWorkerStall.fixture.d.ts +1 -0
  508. package/dist/deployment/organizationHandoffAuthorityFsWorkerStall.fixture.js +16 -0
  509. package/dist/deployment/organizationHandoffAuthorityStore.js +14 -7
  510. package/dist/deployment/organizationHandoffAuthorityTypes.d.ts +2 -2
  511. package/dist/deployment/organizationHandoffAuthorityTypes.js +2 -1
  512. package/dist/deployment/organizationReady.d.ts +2 -0
  513. package/dist/deployment/organizationReady.js +36 -4
  514. package/dist/deployment/pidLock.d.ts +25 -0
  515. package/dist/deployment/pidLock.js +81 -0
  516. package/dist/deployment/productStateClone.d.ts +43 -0
  517. package/dist/deployment/productStateClone.js +319 -0
  518. package/dist/deployment/record.d.ts +85 -1
  519. package/dist/deployment/record.js +11 -5
  520. package/dist/deployment/recordPublication.d.ts +15 -0
  521. package/dist/deployment/recordPublication.js +76 -0
  522. package/dist/deployment/recordedMemoryRetention.d.ts +18 -0
  523. package/dist/deployment/recordedMemoryRetention.js +27 -0
  524. package/dist/deployment/resourceLog.d.ts +140 -0
  525. package/dist/deployment/resourceLog.js +78 -0
  526. package/dist/deployment/upLifecycleRecoveryState.d.ts +23 -0
  527. package/dist/deployment/upLifecycleRecoveryState.js +12 -0
  528. package/dist/deployment/upReceiptTypes.d.ts +32 -6
  529. package/dist/deployment/upReceiptTypes.js +29 -2
  530. package/dist/deployment/workspaceResourceMigration.d.ts +55 -0
  531. package/dist/deployment/workspaceResourceMigration.js +315 -0
  532. package/dist/dev/project.d.ts +7 -0
  533. package/dist/dev/project.js +9 -0
  534. package/dist/distribution/buildDistributionReport.d.ts +3 -0
  535. package/dist/distribution/buildDistributionReport.js +5 -0
  536. package/dist/distribution/consumeImage.d.ts +5 -0
  537. package/dist/distribution/consumeImage.js +115 -98
  538. package/dist/distribution/consumeImageDaimonDocker.d.ts +3 -0
  539. package/dist/distribution/consumeImageDaimonDocker.js +45 -0
  540. package/dist/distribution/consumeImageLifecycle.d.ts +20 -0
  541. package/dist/distribution/consumeImageLifecycle.js +242 -0
  542. package/dist/distribution/consumeImageSupport.d.ts +19 -0
  543. package/dist/distribution/consumeImageSupport.js +40 -0
  544. package/dist/distribution/distributionReportSchema.d.ts +58 -1
  545. package/dist/distribution/distributionReportSchema.js +35 -2
  546. package/dist/distribution/dockerRunner.d.ts +6 -1
  547. package/dist/distribution/dockerRunner.js +31 -4
  548. package/dist/distribution/imageRuntimeAuth.d.ts +9 -1
  549. package/dist/distribution/imageRuntimeAuth.js +70 -1
  550. package/dist/distribution/index.d.ts +1 -1
  551. package/dist/distribution/index.js +1 -1
  552. package/dist/distribution/preflight.js +5 -1
  553. package/dist/distribution/renderImageInterface.js +1 -1
  554. package/dist/distribution/types.d.ts +29 -1
  555. package/dist/distribution/types.js +3 -0
  556. package/dist/evidenceExportHelper/boundedExecutor.d.ts +3 -0
  557. package/dist/evidenceExportHelper/boundedExecutor.js +33 -0
  558. package/dist/evidenceExportHelper/helperProgram.mjs +156 -0
  559. package/dist/evidenceExportHelper/index.d.ts +4 -0
  560. package/dist/evidenceExportHelper/index.js +4 -0
  561. package/dist/evidenceExportHelper/preparedAuthority.d.ts +64 -0
  562. package/dist/evidenceExportHelper/preparedAuthority.js +228 -0
  563. package/dist/evidenceExportHelper/preparedBuilder.d.ts +10 -0
  564. package/dist/evidenceExportHelper/preparedBuilder.js +183 -0
  565. package/dist/evidenceExportHelper/preparedBuilderTypes.d.ts +19 -0
  566. package/dist/evidenceExportHelper/preparedBuilderTypes.js +1 -0
  567. package/dist/evidenceExportHelper/recipe.d.ts +7 -0
  568. package/dist/evidenceExportHelper/recipe.js +83 -0
  569. package/dist/filesystem/durableWrite.d.ts +10 -0
  570. package/dist/filesystem/durableWrite.js +87 -0
  571. package/dist/filesystem/index.d.ts +2 -0
  572. package/dist/filesystem/index.js +2 -0
  573. package/dist/filesystem/io.d.ts +2 -0
  574. package/dist/filesystem/io.js +16 -1
  575. package/dist/filesystem/retainedJsonl.d.ts +23 -0
  576. package/dist/filesystem/retainedJsonl.js +123 -0
  577. package/dist/manifest/commandSchemas.d.ts +5 -0
  578. package/dist/manifest/commandSchemas.js +5 -0
  579. package/dist/manifest/executionSchemas.d.ts +47 -0
  580. package/dist/manifest/executionSchemas.js +31 -2
  581. package/dist/manifest/index.d.ts +2 -0
  582. package/dist/manifest/index.js +2 -0
  583. package/dist/manifest/loadManifest.js +3 -26
  584. package/dist/manifest/mcpSchemas.d.ts +62 -0
  585. package/dist/manifest/mcpSchemas.js +57 -8
  586. package/dist/manifest/memorySchemas.d.ts +1 -1
  587. package/dist/manifest/memorySchemas.js +1 -1
  588. package/dist/manifest/parseManifest.d.ts +7 -0
  589. package/dist/manifest/parseManifest.js +65 -0
  590. package/dist/manifest/renderSpawnfile.js +4 -1
  591. package/dist/manifest/renderSpawnfileNetworks.js +11 -0
  592. package/dist/manifest/renderSpawnfileWorkspace.js +10 -1
  593. package/dist/manifest/scheduleSchemas.d.ts +3 -1
  594. package/dist/manifest/scheduleSchemas.js +91 -5
  595. package/dist/manifest/schemas.d.ts +1419 -120
  596. package/dist/manifest/schemas.js +19 -6
  597. package/dist/manifest/teamNetworkAccessSchemas.d.ts +5 -1
  598. package/dist/manifest/teamNetworkAccessSchemas.js +11 -0
  599. package/dist/manifest/teamNetworkAuthSchemas.d.ts +1 -1
  600. package/dist/manifest/teamNetworkSchemas.d.ts +18 -4
  601. package/dist/manifest/teamNetworkSchemas.js +19 -1
  602. package/dist/manifest/teamNetworkServerSchemas.d.ts +8 -3
  603. package/dist/manifest/teamNetworkServerSchemas.js +18 -2
  604. package/dist/manifest/trainingDataSchemas.d.ts +357 -0
  605. package/dist/manifest/trainingDataSchemas.js +31 -0
  606. package/dist/manifest/trainingSchemas.d.ts +49 -0
  607. package/dist/manifest/trainingSchemas.js +44 -0
  608. package/dist/manifest/volumeFeedSchemas.d.ts +52 -0
  609. package/dist/manifest/volumeFeedSchemas.js +104 -0
  610. package/dist/manifest/workspaceSchemas.d.ts +194 -1
  611. package/dist/manifest/workspaceSchemas.js +117 -2
  612. package/dist/recording/compose.d.ts +3 -0
  613. package/dist/recording/compose.js +93 -0
  614. package/dist/recording/deployment.d.ts +15 -0
  615. package/dist/recording/deployment.js +38 -0
  616. package/dist/recording/history.d.ts +16 -0
  617. package/dist/recording/history.js +47 -0
  618. package/dist/recording/index.d.ts +9 -0
  619. package/dist/recording/index.js +9 -0
  620. package/dist/recording/moment.d.ts +61 -0
  621. package/dist/recording/moment.js +36 -0
  622. package/dist/recording/parse.d.ts +15 -0
  623. package/dist/recording/parse.js +74 -0
  624. package/dist/recording/read.d.ts +8 -0
  625. package/dist/recording/read.js +61 -0
  626. package/dist/recording/store.d.ts +10 -0
  627. package/dist/recording/store.js +94 -0
  628. package/dist/recording/sync.d.ts +24 -0
  629. package/dist/recording/sync.js +126 -0
  630. package/dist/recording/types.d.ts +45 -0
  631. package/dist/recording/types.js +2 -0
  632. package/dist/release/drainControl.d.ts +54 -0
  633. package/dist/release/drainControl.js +137 -0
  634. package/dist/release/drainPhase.d.ts +37 -0
  635. package/dist/release/drainPhase.js +161 -0
  636. package/dist/release/index.d.ts +11 -0
  637. package/dist/release/index.js +11 -0
  638. package/dist/release/ledger.d.ts +75 -0
  639. package/dist/release/ledger.js +111 -0
  640. package/dist/release/notify.d.ts +58 -0
  641. package/dist/release/notify.js +126 -0
  642. package/dist/release/pending.d.ts +35 -0
  643. package/dist/release/pending.js +60 -0
  644. package/dist/release/postDeploy.d.ts +32 -0
  645. package/dist/release/postDeploy.js +62 -0
  646. package/dist/release/releaseDefaults.d.ts +9 -0
  647. package/dist/release/releaseDefaults.js +115 -0
  648. package/dist/release/releaseDocker.d.ts +38 -0
  649. package/dist/release/releaseDocker.js +94 -0
  650. package/dist/release/releaseTypes.d.ts +94 -0
  651. package/dist/release/releaseTypes.js +1 -0
  652. package/dist/release/runRelease.d.ts +9 -0
  653. package/dist/release/runRelease.js +218 -0
  654. package/dist/release/swap.d.ts +23 -0
  655. package/dist/release/swap.js +55 -0
  656. package/dist/release/types.d.ts +50 -0
  657. package/dist/release/types.js +29 -0
  658. package/dist/report/index.d.ts +1 -0
  659. package/dist/report/index.js +1 -0
  660. package/dist/report/recording.d.ts +57 -0
  661. package/dist/report/recording.js +26 -0
  662. package/dist/report/types.d.ts +92 -4
  663. package/dist/runtime/common.d.ts +28 -1
  664. package/dist/runtime/common.js +33 -3
  665. package/dist/runtime/container.js +46 -35
  666. package/dist/runtime/daimon/adapter.d.ts +14 -0
  667. package/dist/runtime/daimon/adapter.js +254 -0
  668. package/dist/runtime/daimon/attention.d.ts +8 -0
  669. package/dist/runtime/daimon/attention.js +32 -0
  670. package/dist/runtime/daimon/config.d.ts +29 -0
  671. package/dist/runtime/daimon/config.js +321 -0
  672. package/dist/runtime/daimon/contract-manifest.json +1 -0
  673. package/dist/runtime/daimon/contract-manifest.sha256 +1 -0
  674. package/dist/runtime/daimon/contractManifest.d.ts +346 -0
  675. package/dist/runtime/daimon/contractManifest.js +335 -0
  676. package/dist/runtime/daimon/grokModel.d.ts +19 -0
  677. package/dist/runtime/daimon/grokModel.js +33 -0
  678. package/dist/runtime/daimon/grokTurnLimits.d.ts +25 -0
  679. package/dist/runtime/daimon/grokTurnLimits.js +51 -0
  680. package/dist/runtime/daimon/grokWorkerConfigBytes.d.ts +43 -0
  681. package/dist/runtime/daimon/grokWorkerConfigBytes.js +53 -0
  682. package/dist/runtime/daimon/grokWorkerContract.d.ts +27 -0
  683. package/dist/runtime/daimon/grokWorkerContract.js +60 -0
  684. package/dist/runtime/daimon/memory.d.ts +57 -0
  685. package/dist/runtime/daimon/memory.js +125 -0
  686. package/dist/runtime/daimon/recording.d.ts +19 -0
  687. package/dist/runtime/daimon/recording.js +50 -0
  688. package/dist/runtime/daimon/runAuth.d.ts +51 -0
  689. package/dist/runtime/daimon/runAuth.js +279 -0
  690. package/dist/runtime/daimon/runtimeIdentity.d.ts +22 -0
  691. package/dist/runtime/daimon/runtimeIdentity.js +22 -0
  692. package/dist/runtime/daimon/scheduleAuthority.d.ts +11 -0
  693. package/dist/runtime/daimon/scheduleAuthority.js +31 -0
  694. package/dist/runtime/daimon/wakeMoments.d.ts +15 -0
  695. package/dist/runtime/daimon/wakeMoments.js +17 -0
  696. package/dist/runtime/daimonInstall.d.ts +3 -0
  697. package/dist/runtime/daimonInstall.js +25 -0
  698. package/dist/runtime/index.d.ts +5 -0
  699. package/dist/runtime/index.js +5 -0
  700. package/dist/runtime/install.d.ts +5 -0
  701. package/dist/runtime/install.js +4 -0
  702. package/dist/runtime/localDaimonAuthority.d.ts +11 -0
  703. package/dist/runtime/localDaimonAuthority.js +77 -0
  704. package/dist/runtime/mnemeMcp.d.ts +13 -0
  705. package/dist/runtime/mnemeMcp.js +26 -0
  706. package/dist/runtime/openclaw/adapter.js +5 -2
  707. package/dist/runtime/pi/adapter.d.ts +0 -1
  708. package/dist/runtime/pi/adapter.js +5 -6
  709. package/dist/runtime/pi/appCliSource.js +1 -1
  710. package/dist/runtime/pi/appScheduleSource.js +6 -2
  711. package/dist/runtime/pi/appTemplateTypes.d.ts +1 -1
  712. package/dist/runtime/pi/containerTargets.js +6 -0
  713. package/dist/runtime/picoclaw/adapter.js +5 -2
  714. package/dist/runtime/registry.d.ts +6 -0
  715. package/dist/runtime/registry.js +32 -3
  716. package/dist/runtime/scheduleUtils.d.ts +1 -0
  717. package/dist/runtime/scheduleUtils.js +5 -1
  718. package/dist/runtime/types.d.ts +40 -0
  719. package/dist/runtime/usageLedger.d.ts +158 -0
  720. package/dist/runtime/usageLedger.js +269 -0
  721. package/dist/runtime/usageLedgerRead.d.ts +54 -0
  722. package/dist/runtime/usageLedgerRead.js +102 -0
  723. package/dist/runtime/usageRequestLedger.d.ts +42 -0
  724. package/dist/runtime/usageRequestLedger.js +72 -0
  725. package/dist/shared/daimonCodexDocker.d.ts +32 -0
  726. package/dist/shared/daimonCodexDocker.js +120 -0
  727. package/dist/shared/daimonGrokSeccompProfile.d.ts +10 -0
  728. package/dist/shared/daimonGrokSeccompProfile.js +11 -0
  729. package/dist/shared/index.d.ts +3 -0
  730. package/dist/shared/index.js +3 -0
  731. package/dist/shared/recording.d.ts +8 -0
  732. package/dist/shared/recording.js +25 -0
  733. package/dist/shared/types.d.ts +1 -1
  734. package/dist/shared/volumeNames.d.ts +6 -0
  735. package/dist/shared/volumeNames.js +14 -0
  736. package/dist/target/dockerArtifactsProvider.js +34 -7
  737. package/dist/target/dockerBaseImage.d.ts +2 -0
  738. package/dist/target/dockerBaseImage.js +11 -0
  739. package/dist/target/dockerCommandExecutor.d.ts +11 -0
  740. package/dist/target/dockerCommandExecutor.js +53 -2
  741. package/dist/target/dockerCommandExecutorCore.d.ts +2 -1
  742. package/dist/target/dockerCommandExecutorCore.js +5 -3
  743. package/dist/target/dockerPublicArtifactSnapshot.d.ts +3 -3
  744. package/dist/target/dockerPublicArtifactSnapshot.js +17 -33
  745. package/dist/target/dockerTarget.d.ts +1 -0
  746. package/dist/target/dockerTargetBinding.d.ts +1 -2
  747. package/dist/target/dockerTargetBinding.js +4 -4
  748. package/dist/target/dockerTargetExecFile.d.ts +19 -0
  749. package/dist/target/dockerTargetExecFile.js +194 -0
  750. package/dist/target/dockerWorldServiceProvider.d.ts +4 -0
  751. package/dist/target/dockerWorldServiceProvider.js +13 -1
  752. package/dist/target/evidenceExport.d.ts +3 -1
  753. package/dist/target/evidenceExport.js +12 -3
  754. package/dist/target/evidenceExportOperationsTestKit.js +3 -3
  755. package/dist/target/evidenceExportProvider.d.ts +2 -0
  756. package/dist/target/evidenceExportProvider.js +15 -5
  757. package/dist/target/publicArtifactSnapshot.d.ts +31 -0
  758. package/dist/target/publicArtifactSnapshot.js +37 -3
  759. package/dist/volume/feedLand.d.ts +31 -0
  760. package/dist/volume/feedLand.js +174 -0
  761. package/dist/volume/feedLandings.d.ts +45 -0
  762. package/dist/volume/feedLandings.js +111 -0
  763. package/dist/volume/feedLayout.d.ts +61 -0
  764. package/dist/volume/feedLayout.js +234 -0
  765. package/dist/volume/feedLock.d.ts +7 -0
  766. package/dist/volume/feedLock.js +131 -0
  767. package/dist/volume/feedManifest.d.ts +27 -0
  768. package/dist/volume/feedManifest.js +123 -0
  769. package/dist/volume/feedPrepare.d.ts +16 -0
  770. package/dist/volume/feedPrepare.js +228 -0
  771. package/dist/volume/feedProject.d.ts +39 -0
  772. package/dist/volume/feedProject.js +92 -0
  773. package/dist/volume/feedRecord.d.ts +55 -0
  774. package/dist/volume/feedRecord.js +148 -0
  775. package/dist/volume/feedRef.d.ts +43 -0
  776. package/dist/volume/feedRef.js +117 -0
  777. package/dist/volume/feedRefresh.d.ts +15 -0
  778. package/dist/volume/feedRefresh.js +187 -0
  779. package/dist/volume/feedSource.d.ts +66 -0
  780. package/dist/volume/feedSource.js +104 -0
  781. package/dist/volume/feedTarget.d.ts +70 -0
  782. package/dist/volume/feedTarget.js +9 -0
  783. package/dist/volume/feedTestKit.d.ts +11 -0
  784. package/dist/volume/feedTestKit.js +45 -0
  785. package/dist/volume/feedVerify.d.ts +18 -0
  786. package/dist/volume/feedVerify.js +104 -0
  787. package/dist/volume/index.d.ts +13 -0
  788. package/dist/volume/index.js +13 -0
  789. package/examples/README.md +45 -0
  790. package/examples/agent-with-subagents/AGENTS.md +3 -0
  791. package/examples/agent-with-subagents/Spawnfile +30 -0
  792. package/examples/agent-with-subagents/subagents/critic/AGENTS.md +3 -0
  793. package/examples/agent-with-subagents/subagents/critic/Spawnfile +15 -0
  794. package/examples/agent-with-subagents/subagents/researcher/AGENTS.md +3 -0
  795. package/examples/agent-with-subagents/subagents/researcher/Spawnfile +17 -0
  796. package/examples/daimon-org/Spawnfile +68 -0
  797. package/examples/daimon-org/TEAM.md +4 -0
  798. package/examples/daimon-org/agents/mapper/AGENTS.md +4 -0
  799. package/examples/daimon-org/agents/mapper/Spawnfile +37 -0
  800. package/examples/daimon-org/shared/skills/file-note/SKILL.md +9 -0
  801. package/examples/daimon-org/teams/review/Spawnfile +53 -0
  802. package/examples/daimon-org/teams/review/agents/reviewer/AGENTS.md +4 -0
  803. package/examples/daimon-org/teams/review/agents/reviewer/Spawnfile +37 -0
  804. package/examples/daimon-public-host/AGENTS.md +3 -0
  805. package/examples/daimon-public-host/Spawnfile +21 -0
  806. package/examples/distribution-org/Spawnfile +43 -0
  807. package/examples/distribution-org/TEAM.md +4 -0
  808. package/examples/distribution-org/agents/coordinator/AGENTS.md +1 -0
  809. package/examples/distribution-org/agents/coordinator/Spawnfile +20 -0
  810. package/examples/distribution-org/agents/researcher/AGENTS.md +1 -0
  811. package/examples/distribution-org/agents/researcher/Spawnfile +20 -0
  812. package/examples/jungian-daimon-org/Spawnfile +41 -0
  813. package/examples/jungian-daimon-org/TEAM.md +21 -0
  814. package/examples/jungian-daimon-org/teams/luna/Spawnfile +47 -0
  815. package/examples/jungian-daimon-org/teams/luna/TEAM.md +4 -0
  816. package/examples/jungian-daimon-org/teams/luna/agents/animus/AGENTS.md +10 -0
  817. package/examples/jungian-daimon-org/teams/luna/agents/animus/Spawnfile +33 -0
  818. package/examples/jungian-daimon-org/teams/luna/agents/representative/AGENTS.md +21 -0
  819. package/examples/jungian-daimon-org/teams/luna/agents/representative/Spawnfile +30 -0
  820. package/examples/jungian-daimon-org/teams/luna/agents/shadow/AGENTS.md +10 -0
  821. package/examples/jungian-daimon-org/teams/luna/agents/shadow/Spawnfile +33 -0
  822. package/examples/jungian-daimon-org/teams/selene/Spawnfile +47 -0
  823. package/examples/jungian-daimon-org/teams/selene/TEAM.md +4 -0
  824. package/examples/jungian-daimon-org/teams/selene/agents/animus/AGENTS.md +10 -0
  825. package/examples/jungian-daimon-org/teams/selene/agents/animus/Spawnfile +33 -0
  826. package/examples/jungian-daimon-org/teams/selene/agents/representative/AGENTS.md +19 -0
  827. package/examples/jungian-daimon-org/teams/selene/agents/representative/Spawnfile +33 -0
  828. package/examples/jungian-daimon-org/teams/selene/agents/shadow/AGENTS.md +10 -0
  829. package/examples/jungian-daimon-org/teams/selene/agents/shadow/Spawnfile +30 -0
  830. package/examples/mixed-runtime-org/Spawnfile +71 -0
  831. package/examples/mixed-runtime-org/TEAM.md +8 -0
  832. package/examples/mixed-runtime-org/agents/analyst/AGENTS.md +8 -0
  833. package/examples/mixed-runtime-org/agents/analyst/Spawnfile +27 -0
  834. package/examples/mixed-runtime-org/agents/conductor/AGENTS.md +8 -0
  835. package/examples/mixed-runtime-org/agents/conductor/Spawnfile +27 -0
  836. package/examples/mixed-runtime-org/agents/localist/AGENTS.md +7 -0
  837. package/examples/mixed-runtime-org/agents/localist/Spawnfile +50 -0
  838. package/examples/moltnet-team-chat/Spawnfile +43 -0
  839. package/examples/moltnet-team-chat/TEAM.md +5 -0
  840. package/examples/moltnet-team-chat/agents/coordinator/AGENTS.md +9 -0
  841. package/examples/moltnet-team-chat/agents/coordinator/Spawnfile +26 -0
  842. package/examples/moltnet-team-chat/teams/analysis/Spawnfile +23 -0
  843. package/examples/moltnet-team-chat/teams/analysis/TEAM.md +3 -0
  844. package/examples/moltnet-team-chat/teams/analysis/agents/observer/AGENTS.md +5 -0
  845. package/examples/moltnet-team-chat/teams/analysis/agents/observer/Spawnfile +19 -0
  846. package/examples/moltnet-team-chat/teams/analysis/agents/representative/AGENTS.md +5 -0
  847. package/examples/moltnet-team-chat/teams/analysis/agents/representative/Spawnfile +19 -0
  848. package/examples/moltnet-team-chat/teams/field/Spawnfile +41 -0
  849. package/examples/moltnet-team-chat/teams/field/TEAM.md +3 -0
  850. package/examples/moltnet-team-chat/teams/field/agents/observer/AGENTS.md +5 -0
  851. package/examples/moltnet-team-chat/teams/field/agents/observer/Spawnfile +26 -0
  852. package/examples/moltnet-team-chat/teams/field/agents/representative/AGENTS.md +11 -0
  853. package/examples/moltnet-team-chat/teams/field/agents/representative/Spawnfile +26 -0
  854. package/examples/single-agent/AGENTS.md +3 -0
  855. package/examples/single-agent/HEARTBEAT.md +3 -0
  856. package/examples/single-agent/IDENTITY.md +3 -0
  857. package/examples/single-agent/MEMORY.md +3 -0
  858. package/examples/single-agent/SOUL.md +3 -0
  859. package/examples/single-agent/Spawnfile +41 -0
  860. package/examples/single-agent/skills/web_search/SKILL.md +6 -0
  861. package/moltnet-releases.json +5 -4
  862. package/package.json +36 -9
  863. package/runtimes.yaml +8 -3
  864. package/dist/cli/targetWorldClockCrossProcess.test-helper.d.ts +0 -13
  865. package/dist/cli/targetWorldClockCrossProcess.test-helper.js +0 -109
  866. package/dist/deployment/providerRuntimeBoundaryScanner.test-helper.d.ts +0 -8
  867. package/dist/deployment/providerRuntimeBoundaryScanner.test-helper.js +0 -60
  868. package/dist/deployment/simfileFixtureBoundary.test-helper.d.ts +0 -8
  869. package/dist/deployment/simfileFixtureBoundary.test-helper.js +0 -103
  870. package/dist/ownership/simfileRunOperatorInputs.d.ts +0 -103
  871. package/dist/ownership/simfileRunOperatorInputs.js +0 -139
  872. package/dist/target/cleanupRunDocker.test-helper.d.ts +0 -67
  873. 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 path from "node:path/posix";
2
- import { resolveNoopolisRunId } from "../runtime/index.js";
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
- return "direct";
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
- const memoryMountPath = (bank) => {
22
- if (bank.store.kind !== "sqlite" && bank.store.kind !== "json") {
23
- return null;
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
- export const createMemoryArtifactBundle = (plan) => {
48
- // Run-scoping key for every derived volume name below (see
49
- // createPersistentVolumeName's doc comment in moltnetArtifactPaths.ts):
50
- // present whenever this compile was driven by `spawnfile run`/`up`
51
- // (which always call ensureNoopolisRunId() first), absent for a bare
52
- // `spawnfile compile`/`spawnfile build`.
53
- const runId = resolveNoopolisRunId(process.env);
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
- // createPersistentVolumeName also folds in plan.root (previously
93
- // missing here entirely), so two different projects that happen to
94
- // share a mount-path convention no longer derive the same volume
95
- // name — the same isolation moltnet's own persistent mounts already
96
- // had before this change.
97
- const volumeName = createPersistentVolumeName(plan.root, mountId, entry.bank.store.persistence?.name, runId);
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
- export const modelAuthMethodNeedsCliCredential = (method) => method !== "api_key" && method !== "none";
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 mount.
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 durable state. A cold restart that wants
12
- * to recall the same run's memory sets the SAME `NOOPOLIS_RUN_ID` before
13
- * re-running, which reproduces this same volume name and remounts it.
14
- * Omitted (a bare `spawnfile compile`/`spawnfile build` with no run id in
15
- * the host env) reproduces the pre-run-scoping name exactly, so standard
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
- * `explicitName` (an author-declared `persistence.name`) always wins over
19
- * both project/id and run scoping — an explicit name is opt-in shared/
20
- * reused state by author intent, not something this helper should silently
21
- * fragment across runs.
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, explicitName?: string, runId?: string) => 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 mount.
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 durable state. A cold restart that wants
23
- * to recall the same run's memory sets the SAME `NOOPOLIS_RUN_ID` before
24
- * re-running, which reproduces this same volume name and remounts it.
25
- * Omitted (a bare `spawnfile compile`/`spawnfile build` with no run id in
26
- * the host env) reproduces the pre-run-scoping name exactly, so standard
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
- * `explicitName` (an author-declared `persistence.name`) always wins over
30
- * both project/id and run scoping — an explicit name is opt-in shared/
31
- * reused state by author intent, not something this helper should silently
32
- * fragment across runs.
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, explicitName, runId) => {
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 every persistent volume name derived below (see
18
- // createPersistentVolumeName's doc comment). Read once per compile so
19
- // every mount in this compile agrees on the same value.
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 || existing.volumeName !== mount.volumeName) {
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, undefined, runId)
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: createPersistentVolumeName(plan.root, mountId, explicitVolumeName, runId)
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: createPersistentVolumeName(plan.root, mountId, undefined, runId)
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: createPersistentVolumeName(plan.root, mountId, undefined, runId)
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
  }