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
@@ -1,8 +1,11 @@
1
1
  import { createRuntimeInstallRecipe, getRuntimeAdapter } from "../runtime/index.js";
2
+ import { resolveNoopolisRunId } from "../runtime/index.js";
2
3
  import { listAgentSurfaceSecretNames } from "./agentSurfaces.js";
3
4
  import { resolveTargetResources } from "./containerTargetResources.js";
4
5
  import { assertTargetHasConfig, createDefaultTargets, resolveInstancePaths, resolveTargetConfigEnvBindings, resolveTargetEnvFiles, resolveTargetExposure, resolveTargetModelAuthMethods, resolveTargetModelSecrets, resolveTargetPackages } from "./containerTargetPlanResolution.js";
5
6
  import { listExecutionModelSecretNames } from "./modelEnv.js";
7
+ import { createPersistentVolumeName } from "./moltnetArtifactPaths.js";
8
+ import { createExclusiveReattachVolumeName } from "../shared/index.js";
6
9
  import { findWorldBindingForNode } from "./worldBindings.js";
7
10
  export const createEnvVariableMap = (compiledNodes, runtimePlans, moltnet) => {
8
11
  const variables = new Map();
@@ -32,8 +35,10 @@ export const createEnvVariableMap = (compiledNodes, runtimePlans, moltnet) => {
32
35
  if (node.value.kind === "agent") {
33
36
  for (const secret of node.value.secrets)
34
37
  registerSecret(secret);
35
- for (const secretName of listExecutionModelSecretNames(node.value.execution)) {
36
- register(secretName, true, `Model provider auth for ${secretName}`, "model");
38
+ if (node.runtimeName !== "daimon") {
39
+ for (const secretName of listExecutionModelSecretNames(node.value.execution)) {
40
+ register(secretName, true, `Model provider auth for ${secretName}`, "model");
41
+ }
37
42
  }
38
43
  for (const secretName of listAgentSurfaceSecretNames(node.value.surfaces)) {
39
44
  register(secretName, true, "Bot token for declared agent surfaces", "surface");
@@ -58,14 +63,15 @@ export const createEnvVariableMap = (compiledNodes, runtimePlans, moltnet) => {
58
63
  }
59
64
  return variables;
60
65
  };
61
- export const createRuntimeTargetPlans = async (plan, compiledNodes, worldBindings) => {
66
+ export const createRuntimeTargetPlans = async (plan, compiledNodes, worldBindings, deploymentLineage = "compile") => {
62
67
  const runtimeNames = Object.keys(plan.runtimes).sort();
68
+ const runId = resolveNoopolisRunId(process.env);
63
69
  const runtimePlans = [];
64
70
  for (const runtimeName of runtimeNames) {
65
71
  const adapter = getRuntimeAdapter(runtimeName);
66
72
  const recipe = await createRuntimeInstallRecipe(runtimeName);
67
73
  const targetInputs = compiledNodes
68
- .filter((node) => node.runtimeName === runtimeName && node.emittedFiles.length > 0)
74
+ .filter((node) => node.runtimeName === runtimeName && (node.emittedFiles.length > 0 || runtimeName === "daimon"))
69
75
  .map((node) => {
70
76
  const id = node.id ?? `${node.kind}:${node.slug}`;
71
77
  const worldBinding = node.kind === "agent"
@@ -87,21 +93,39 @@ export const createRuntimeTargetPlans = async (plan, compiledNodes, worldBinding
87
93
  const instancePaths = resolveInstancePaths(runtimeName, target.id, adapter.container);
88
94
  const portStride = adapter.container.portStride ?? 1;
89
95
  runtimePlans.push({
96
+ ...(target.agentPathsByNodeId ? { agentPathsByNodeId: Object.fromEntries(Object.entries(target.agentPathsByNodeId).map(([id, paths]) => {
97
+ const expand = (value) => value.replaceAll("<instance-root>", instancePaths.instanceRoot)
98
+ .replaceAll("<workspace-path>", instancePaths.workspacePath);
99
+ return [id, { workspacePath: expand(paths.workspacePath),
100
+ homePath: paths.homePath === null ? null : expand(paths.homePath), skillRoots: paths.skillRoots.map(expand) }];
101
+ })) } : {}),
90
102
  configEnvBindings: resolveTargetConfigEnvBindings(adapter.container, target) ?? [],
91
103
  ...(target.engineByNodeId ? { engineByNodeId: target.engineByNodeId } : {}),
104
+ ...(target.grokModelByNodeId ? { grokModelByNodeId: target.grokModelByNodeId } : {}),
105
+ ...(target.grokTurnLimitsByNodeId ? { grokTurnLimitsByNodeId: target.grokTurnLimitsByNodeId } : {}),
92
106
  envFiles: resolveTargetEnvFiles(instancePaths.configPath, target),
93
107
  packages: resolveTargetPackages(target, targetInputs),
94
108
  id: target.id,
95
109
  instancePaths,
96
110
  meta: adapter.container,
97
- modelAuthMethods: resolveTargetModelAuthMethods(target, targetInputs),
98
- modelSecretsRequired: resolveTargetModelSecrets(target, targetInputs),
111
+ modelAuthMethods: runtimeName === "daimon" ? {} : resolveTargetModelAuthMethods(target, targetInputs),
112
+ modelSecretsRequired: runtimeName === "daimon" ? [] : resolveTargetModelSecrets(target, targetInputs),
113
+ ...(target.opaqueMountTargets ? { opaqueMountTargets: [...target.opaqueMountTargets].sort() } : {}),
114
+ ...(target.persistentMounts ? { persistentMounts: target.persistentMounts.map((mount) => ({
115
+ id: mount.id,
116
+ ...(mount.lifecycle ? { lifecycle: mount.lifecycle } : {}),
117
+ mount_path: mount.mountPath.replaceAll("<instance-root>", instancePaths.instanceRoot),
118
+ reason: mount.reason,
119
+ volume_name: mount.lifecycle === "exclusive-reattach"
120
+ ? createExclusiveReattachVolumeName(`${plan.root}\0${deploymentLineage}`, mount.id)
121
+ : createPersistentVolumeName(plan.root, mount.id, runId)
122
+ })).sort((left, right) => left.id.localeCompare(right.id)) } : {}),
99
123
  port: adapter.container.port ? adapter.container.port + (index * portStride) : undefined,
100
124
  publishedPort: resolveTargetExposure(target, targetInputs) && adapter.container.port
101
125
  ? adapter.container.port + (index * portStride)
102
126
  : undefined,
103
127
  recipeEnv: recipe.env,
104
- resources: resolveTargetResources(target, targetInputs, instancePaths, adapter.container),
128
+ resources: resolveTargetResources(target, targetInputs, instancePaths, adapter.container, plan.root, deploymentLineage),
105
129
  runtimeName,
106
130
  runtimeRoot: recipe.runtimeRoot,
107
131
  sourceIds: [...(target.sourceIds ?? [])].sort(),
@@ -3,6 +3,7 @@ import type { ContainerEnvVariable, RuntimeTargetPlan } from "./containerArtifac
3
3
  import type { EntrypointOptions } from "./containerEntrypointRender.js";
4
4
  export { renderEntrypoint } from "./containerEntrypointRender.js";
5
5
  export type { EntrypointOptions } from "./containerEntrypointRender.js";
6
+ import type { BackedMountRequirement } from "./containerBackedMountRender.js";
6
7
  export declare const renderEnvExample: (variables: ContainerEnvVariable[]) => string;
7
8
  export interface DockerfileDistributionOptions {
8
9
  labels: Record<string, string>;
@@ -13,4 +14,4 @@ export declare const renderDockerfile: (runtimePlans: RuntimeTargetPlan[], optio
13
14
  distribution?: DockerfileDistributionOptions;
14
15
  runtimePackageOverrides?: RuntimeContainerPackageOverrides;
15
16
  }) => Promise<string>;
16
- export declare const createRootfsFiles: (runtimePlans: RuntimeTargetPlan[]) => EmittedFile[];
17
+ export declare const createRootfsFiles: (runtimePlans: RuntimeTargetPlan[], persistentMountPaths?: string[], moltnet?: EntrypointOptions["moltnet"], persistentMounts?: readonly BackedMountRequirement[]) => EmittedFile[];
@@ -3,30 +3,20 @@ import { DISTRIBUTION_REPORT_IMAGE_PATH, WORLD_BINDINGS_IMAGE_PATH } from "../di
3
3
  import { createRuntimeInstallRecipe } from "../runtime/index.js";
4
4
  import { SpawnfileError } from "../shared/index.js";
5
5
  export { renderEntrypoint } from "./containerEntrypointRender.js";
6
+ import { DAIMON_RUNTIME_UID, DAIMON_UID_ENTRYPOINT_PATH, renderDaimonUidEntrypoint } from "./containerDaimonUidEntrypointRender.js";
7
+ import { createStateOwnershipCommand } from "./containerStateOwnershipRender.js";
8
+ import { RUNTIME_LINK_MATERIALIZER_PATH, renderRuntimeLinkMaterializer } from "./containerRuntimeLinkMaterializer.js";
6
9
  import { MOLTNET_BIN_DIRECTORY, MOLTNET_BINARY_NAMES } from "./moltnetBinaries.js";
7
10
  import { collectPackagesByManager, createAptPackageInstallItem, createNpmPackageInstallCommand, createNpmPackageInstallItem, createPackageInstallCommand, createPipxPackageInstallCommand, createPipxPackageInstallItem, getNpmInstallItemName } from "./containerPackageRender.js";
8
11
  const CONTAINER_ROOTFS_ROOT = "container/rootfs";
9
12
  const GATEWAY_PORT_PLACEHOLDER = "<gateway-port>";
10
13
  const WORKSPACE_PLACEHOLDER = "<workspace-path>";
11
14
  const RUNTIME_ROOT_PLACEHOLDER = "<runtime-root>";
15
+ const PREBUILT_FINAL_SYSTEM_DEPS_BY_RUNTIME = {
16
+ daimon: new Set(["bubblewrap", "dbus-daemon", "gnome-keyring", "util-linux"])
17
+ };
12
18
  const shellQuote = (value) => `'${value.replace(/'/g, `'\"'\"'`)}'`;
13
19
  const extractNodeMajorVersion = (image) => Number(image.match(/^node:(\d+)/)?.[1] ?? "0");
14
- const createStateOwnershipCommand = (persistentMountPaths = []) => {
15
- const mountPaths = [...new Set(persistentMountPaths)].sort();
16
- const mkdirPaths = [...new Set(["/var/lib/spawnfile", ...mountPaths])].sort();
17
- const markerCommands = mountPaths.map((mountPath) => `touch ${shellQuote(path.posix.join(mountPath, ".spawnfile-volume-init"))}`);
18
- const chownPaths = [
19
- ...new Set([
20
- "/var/lib/spawnfile",
21
- ...mountPaths.filter((mountPath) => !mountPath.startsWith("/var/lib/spawnfile/"))
22
- ])
23
- ].sort();
24
- return [
25
- `mkdir -p ${mkdirPaths.map(shellQuote).join(" ")}`,
26
- ...markerCommands,
27
- `chown -R spawnfile:spawnfile ${chownPaths.map(shellQuote).join(" ")}`
28
- ].join(" && ");
29
- };
30
20
  const selectBaseImage = (runtimePlans, runtimeRecipes) => {
31
21
  const recipeBaseImages = [
32
22
  ...new Set(runtimeRecipes.flatMap((recipe) => recipe.baseImage ? [recipe.baseImage] : []))
@@ -74,6 +64,7 @@ export const renderDockerfile = async (runtimePlans, options = {}) => {
74
64
  throw new SpawnfileError("compile_error", "Moltnet must be supplied as a pinned, digest-verified, pi-bridge-stamped release; unpinned latest installation is disabled");
75
65
  }
76
66
  const runtimeNames = [...new Set(runtimePlans.map((plan) => plan.runtimeName))];
67
+ const hasDaimon = runtimeNames.includes("daimon");
77
68
  const runtimeRecipes = await Promise.all(runtimeNames.map((runtimeName) => createRuntimeInstallRecipe(runtimeName, { packageOverrides: options.runtimePackageOverrides })));
78
69
  const recipeByRuntimeName = new Map(runtimeRecipes.map((recipe) => [recipe.runtimeName, recipe]));
79
70
  const baseImage = selectBaseImage(runtimePlans, runtimeRecipes);
@@ -82,10 +73,14 @@ export const renderDockerfile = async (runtimePlans, options = {}) => {
82
73
  && plan.configPath !== null
83
74
  && plan.secretPatches.length > 0);
84
75
  const needsGit = runtimePlans.some((plan) => (plan.resources ?? []).some((resource) => resource.kind === "git"));
76
+ const needsBundle = runtimePlans.some((plan) => (plan.resources ?? []).some((resource) => resource.kind === "bundle"));
85
77
  const systemDeps = [
86
78
  ...new Set([
87
- ...runtimePlans.flatMap((plan) => recipeByRuntimeName.get(plan.runtimeName)?.baseImage ? [] : plan.meta.systemDeps),
79
+ ...runtimePlans.flatMap((plan) => recipeByRuntimeName.get(plan.runtimeName)?.baseImage
80
+ ? plan.meta.systemDeps.filter((dependency) => PREBUILT_FINAL_SYSTEM_DEPS_BY_RUNTIME[plan.runtimeName]?.has(dependency))
81
+ : plan.meta.systemDeps),
88
82
  ...(needsGit ? ["git"] : []),
83
+ ...(needsBundle ? ["tar"] : []),
89
84
  ...(needsJsonEnvWriter ? ["python3"] : [])
90
85
  ])
91
86
  ].sort();
@@ -124,6 +119,8 @@ export const renderDockerfile = async (runtimePlans, options = {}) => {
124
119
  if (options.hasMoltnet && options.hasStagedMoltnetBinaries) {
125
120
  lines.push(`COPY ${MOLTNET_BIN_DIRECTORY}/ /usr/local/bin/`, `RUN chmod +x ${MOLTNET_BINARY_NAMES.map((binaryName) => `/usr/local/bin/${binaryName}`).join(" ")}`, "");
126
121
  }
122
+ if (options.hasWorkspaceBundles)
123
+ lines.push("COPY container/workspace-bundles/ /opt/spawnfile/workspace-bundles/", "");
127
124
  for (const recipe of runtimeRecipes) {
128
125
  for (const copyCommand of recipe.copyCommands) {
129
126
  lines.push(copyCommand);
@@ -133,8 +130,19 @@ export const renderDockerfile = async (runtimePlans, options = {}) => {
133
130
  }
134
131
  lines.push("");
135
132
  }
136
- lines.push('RUN if ! id -u spawnfile >/dev/null 2>&1; then useradd --create-home --home-dir /home/spawnfile --shell /bin/bash spawnfile; fi', "");
137
- lines.push("COPY container/rootfs/ /", "COPY .env.example /opt/spawnfile/.env.example", 'COPY entrypoint.sh /opt/spawnfile/entrypoint.sh', "RUN chmod +x /opt/spawnfile/entrypoint.sh");
133
+ lines.push(hasDaimon
134
+ ? `RUN if ! getent group spawnfile >/dev/null 2>&1; then groupadd --gid ${DAIMON_RUNTIME_UID} spawnfile; fi && if ! id -u spawnfile >/dev/null 2>&1; then useradd --uid ${DAIMON_RUNTIME_UID} --gid spawnfile --create-home --home-dir /home/spawnfile --shell /bin/bash spawnfile; fi`
135
+ : 'RUN if ! id -u spawnfile >/dev/null 2>&1; then useradd --create-home --home-dir /home/spawnfile --shell /bin/bash spawnfile; fi', "");
136
+ lines.push("COPY container/rootfs/ /", ...(hasDaimon
137
+ ? ["RUN chown root:root /var /var/lib /var/lib/spawnfile && chmod 755 /var /var/lib && chmod 711 /var/lib/spawnfile"]
138
+ : []), "COPY .env.example /opt/spawnfile/.env.example", 'COPY entrypoint.sh /opt/spawnfile/entrypoint.sh', `RUN chmod +x /opt/spawnfile/entrypoint.sh${hasDaimon ? ` ${DAIMON_UID_ENTRYPOINT_PATH}` : ""}${hasDaimon ? " && chmod 711 /opt /opt/spawnfile" : ""}`);
139
+ if (hasDaimon) {
140
+ for (const runtimeRoot of [...new Set(runtimePlans
141
+ .filter((plan) => plan.runtimeName === "daimon")
142
+ .map((plan) => plan.runtimeRoot))].sort()) {
143
+ lines.push(`RUN node ${shellQuote(RUNTIME_LINK_MATERIALIZER_PATH)} ${shellQuote(runtimeRoot)} && rm ${shellQuote(RUNTIME_LINK_MATERIALIZER_PATH)} && test -d ${shellQuote(runtimeRoot)} && test ! -L ${shellQuote(runtimeRoot)} && test -z "$(find -P ${shellQuote(runtimeRoot)} \\( -type l -o ! -user root -o ! -group root \\) -print -quit)" && chmod 711 /opt/spawnfile/runtime-installs ${shellQuote(runtimeRoot)} && find -P ${shellQuote(runtimeRoot)} -type d -exec chmod 711 {} + && find -P ${shellQuote(runtimeRoot)} -type f -perm /111 -exec chmod 555 {} + && find -P ${shellQuote(runtimeRoot)} -type f ! -perm /111 -exec chmod 444 {} + && chmod 555 ${shellQuote(path.posix.join(runtimeRoot, "daimon-start.sh"))}`);
144
+ }
145
+ }
138
146
  const postRootfsCommands = [
139
147
  ...new Set(runtimePlans.flatMap((plan) => plan.meta.postRootfsCommands ?? []))
140
148
  ];
@@ -151,48 +159,73 @@ export const renderDockerfile = async (runtimePlans, options = {}) => {
151
159
  .sort(([left], [right]) => left.localeCompare(right))
152
160
  .map(([name, value]) => `LABEL ${name}=${shellQuote(value)}`));
153
161
  }
154
- lines.push(`RUN ${createStateOwnershipCommand(options.persistentMountPaths)}`);
162
+ lines.push(`RUN ${createStateOwnershipCommand(runtimePlans, options.persistentMountPaths, options.moltnet)}`);
155
163
  if (exposedPorts.length > 0) {
156
164
  lines.push(`EXPOSE ${exposedPorts.join(" ")}`);
157
165
  }
158
- lines.push("USER spawnfile");
159
- lines.push('ENTRYPOINT ["/opt/spawnfile/entrypoint.sh"]');
166
+ if (hasDaimon) {
167
+ const daimonConfig = runtimePlans.find((plan) => plan.runtimeName === "daimon")?.instancePaths.configPath;
168
+ if (!daimonConfig)
169
+ throw new Error("Daimon container plan is missing its runtime config path");
170
+ const healthProgram = "const fs=require('node:fs');const c=JSON.parse(fs.readFileSync(process.argv[1],'utf8'));fetch(`http://127.0.0.1:${c.host.port}/healthz`).then(async r=>{if(!r.ok||JSON.stringify(await r.json())!==JSON.stringify({status:'ok'}))process.exit(1)}).catch(()=>process.exit(1))";
171
+ lines.push(`HEALTHCHECK --interval=5s --timeout=3s --start-period=10s --retries=12 CMD ["node","-e",${JSON.stringify(healthProgram)},${JSON.stringify(daimonConfig)}]`);
172
+ }
173
+ lines.push(hasDaimon ? "USER root" : "USER spawnfile");
174
+ lines.push(hasDaimon
175
+ ? `ENTRYPOINT ["${DAIMON_UID_ENTRYPOINT_PATH}"]`
176
+ : 'ENTRYPOINT ["/opt/spawnfile/entrypoint.sh"]');
160
177
  return `${lines.join("\n").trimEnd()}\n`;
161
178
  };
162
- export const createRootfsFiles = (runtimePlans) => runtimePlans.flatMap((plan) => plan.targetFiles.map((file) => {
163
- if (file.path === plan.meta.configFileName) {
164
- return {
165
- content: file.content
166
- .replaceAll(WORKSPACE_PLACEHOLDER, plan.instancePaths.workspacePath)
167
- .replaceAll(RUNTIME_ROOT_PLACEHOLDER, plan.runtimeRoot)
168
- .replaceAll(`"${GATEWAY_PORT_PLACEHOLDER}"`, plan.port ? String(plan.port) : "0")
169
- .replaceAll(GATEWAY_PORT_PLACEHOLDER, plan.port ? String(plan.port) : ""),
170
- path: `${CONTAINER_ROOTFS_ROOT}${plan.instancePaths.configPath}`
171
- };
172
- }
173
- if (file.path.startsWith("runtime/")) {
174
- const relativeRuntimePath = file.path.slice("runtime/".length);
175
- return {
176
- content: file.content,
177
- path: `${CONTAINER_ROOTFS_ROOT}${path.posix.join(plan.runtimeRoot, relativeRuntimePath)}`
178
- };
179
- }
180
- if (file.path.startsWith("workspace/")) {
181
- const relativeWorkspacePath = file.path.slice("workspace/".length);
182
- return {
183
- content: file.content,
184
- path: `${CONTAINER_ROOTFS_ROOT}${path.posix.join(plan.instancePaths.workspacePath, relativeWorkspacePath)}`
185
- };
186
- }
187
- if (file.path.startsWith("home/")) {
188
- if (!plan.instancePaths.homePath) {
189
- throw new SpawnfileError("runtime_error", `Container target ${plan.id} for ${plan.runtimeName} emitted home-scoped files without a home path`);
179
+ export const createRootfsFiles = (runtimePlans, persistentMountPaths = [], moltnet, persistentMounts = []) => {
180
+ const files = runtimePlans.flatMap((plan) => plan.targetFiles.map((file) => {
181
+ const renderedContent = file.content
182
+ .replaceAll("<config-path>", plan.instancePaths.configPath)
183
+ .replaceAll(WORKSPACE_PLACEHOLDER, plan.instancePaths.workspacePath)
184
+ .replaceAll("<instance-root>", plan.instancePaths.instanceRoot ?? "")
185
+ .replaceAll(RUNTIME_ROOT_PLACEHOLDER, plan.runtimeRoot)
186
+ .replaceAll(`"${GATEWAY_PORT_PLACEHOLDER}"`, plan.port ? String(plan.port) : "0")
187
+ .replaceAll(GATEWAY_PORT_PLACEHOLDER, plan.port ? String(plan.port) : "");
188
+ if (file.path === plan.meta.configFileName) {
189
+ return {
190
+ content: renderedContent,
191
+ path: `${CONTAINER_ROOTFS_ROOT}${plan.instancePaths.configPath}`
192
+ };
193
+ }
194
+ if (file.path.startsWith("runtime/")) {
195
+ const relativeRuntimePath = file.path.slice("runtime/".length);
196
+ return {
197
+ content: renderedContent,
198
+ path: `${CONTAINER_ROOTFS_ROOT}${path.posix.join(plan.runtimeRoot, relativeRuntimePath)}`
199
+ };
200
+ }
201
+ if (file.path.startsWith("workspace/")) {
202
+ const relativeWorkspacePath = file.path.slice("workspace/".length);
203
+ return {
204
+ content: file.content,
205
+ path: `${CONTAINER_ROOTFS_ROOT}${path.posix.join(plan.instancePaths.workspacePath, relativeWorkspacePath)}`
206
+ };
190
207
  }
191
- const relativeHomePath = file.path.slice("home/".length);
192
- return {
193
- content: file.content,
194
- path: `${CONTAINER_ROOTFS_ROOT}${path.posix.join(plan.instancePaths.homePath, relativeHomePath)}`
195
- };
196
- }
197
- throw new SpawnfileError("runtime_error", `Container target ${plan.id} for ${plan.runtimeName} emitted unsupported path ${file.path}`);
198
- }));
208
+ if (file.path.startsWith("home/")) {
209
+ if (!plan.instancePaths.homePath) {
210
+ throw new SpawnfileError("runtime_error", `Container target ${plan.id} for ${plan.runtimeName} emitted home-scoped files without a home path`);
211
+ }
212
+ const relativeHomePath = file.path.slice("home/".length);
213
+ return {
214
+ content: file.content,
215
+ path: `${CONTAINER_ROOTFS_ROOT}${path.posix.join(plan.instancePaths.homePath, relativeHomePath)}`
216
+ };
217
+ }
218
+ throw new SpawnfileError("runtime_error", `Container target ${plan.id} for ${plan.runtimeName} emitted unsupported path ${file.path}`);
219
+ }));
220
+ return runtimePlans.some((plan) => plan.runtimeName === "daimon")
221
+ ? [{
222
+ content: renderRuntimeLinkMaterializer(),
223
+ mode: 0o600,
224
+ path: `${CONTAINER_ROOTFS_ROOT}${RUNTIME_LINK_MATERIALIZER_PATH}`
225
+ }, {
226
+ content: renderDaimonUidEntrypoint(runtimePlans, persistentMountPaths, moltnet, persistentMounts),
227
+ mode: 0o755,
228
+ path: `${CONTAINER_ROOTFS_ROOT}${DAIMON_UID_ENTRYPOINT_PATH}`
229
+ }, ...files]
230
+ : files;
231
+ };
@@ -1,5 +1,6 @@
1
1
  import type { DistributionReport } from "../distribution/index.js";
2
2
  import type { ContainerReport } from "../report/index.js";
3
+ import type { ContainerPersistentMountReport } from "../report/index.js";
3
4
  import type { EmittedFile, RuntimeContainerConfigEnvBinding, RuntimeContainerMeta } from "../runtime/index.js";
4
5
  import type { ModelAuthMethod } from "../shared/index.js";
5
6
  import type { ResolvedAgentNode, ResolvedPackage, ResolvedTeamNode } from "./types.js";
@@ -13,10 +14,22 @@ export interface ContainerEnvVariable {
13
14
  required: boolean;
14
15
  }
15
16
  export interface RuntimeTargetPlan {
17
+ agentPathsByNodeId?: import("../runtime/types.js").ContainerTarget["agentPathsByNodeId"];
16
18
  configEnvBindings?: RuntimeContainerConfigEnvBinding[];
17
19
  /** Passthrough of `ContainerTarget.engineByNodeId` (see `runtime/types.ts`), for
18
20
  * `containerArtifacts.ts` to stamp onto `ContainerRuntimeInstanceReport.engine_by_node_id`. */
19
21
  engineByNodeId?: Record<string, string>;
22
+ /** Passthrough of `ContainerTarget.grokModelByNodeId` for the Daimon broker worker render. */
23
+ grokModelByNodeId?: Record<string, {
24
+ model: string;
25
+ reasoningEffort: string;
26
+ }>;
27
+ /** Passthrough of `ContainerTarget.grokTurnLimitsByNodeId` for the Daimon broker worker render. */
28
+ grokTurnLimitsByNodeId?: Record<string, {
29
+ maxRequests?: number;
30
+ maxTokens?: number;
31
+ timeoutMs?: number;
32
+ }>;
20
33
  packages?: ResolvedPackage[];
21
34
  envFiles: Array<{
22
35
  envName: string;
@@ -32,6 +45,8 @@ export interface RuntimeTargetPlan {
32
45
  meta: RuntimeContainerMeta;
33
46
  modelAuthMethods: Record<string, ModelAuthMethod>;
34
47
  modelSecretsRequired: string[];
48
+ opaqueMountTargets?: string[];
49
+ persistentMounts?: ContainerPersistentMountReport[];
35
50
  port?: number;
36
51
  publishedPort?: number;
37
52
  /**
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Fail-closed guard for durable container state.
3
+ *
4
+ * Every path in `container.persistent_mounts[]` is state the compiler expects
5
+ * a host-backed named volume to hold. `spawnfile run`/`spawnfile up` and
6
+ * `spawnfile deploy` mount them; a hand-rolled `docker run` of the same image
7
+ * does not, and nothing in the image declares `VOLUME`, so the container would
8
+ * silently write its whole durable record onto the container's own writable
9
+ * layer and lose it on `docker rm`. That is exactly how a newsroom's message
10
+ * history was destroyed by a routine recreate.
11
+ *
12
+ * These checks make that case loud instead of silent: the entrypoint refuses
13
+ * to start unless each durable path is a real mount point, naming the mount
14
+ * id, the path, and the volume name to attach. `SPAWNFILE_ALLOW_EPHEMERAL_STATE=1`
15
+ * is the deliberate opt-out for throwaway containers.
16
+ *
17
+ * Detection reads `/proc/self/mountinfo` and looks for an EXACT mount point,
18
+ * rather than comparing `stat -c %d` against the parent directory: two nested
19
+ * durable volumes live on the same host filesystem and therefore share a
20
+ * device number, which would make a device comparison report a genuinely
21
+ * backed inner mount as unbacked.
22
+ *
23
+ * The kernel octal-escapes four characters in the mountinfo mount-point field
24
+ * (`show_mountinfo` passes `" \t\n\\"` to `seq_path_root`), so a declared
25
+ * `mount: "/var/lib/my store"` appears there as `/var/lib/my\040store`. The
26
+ * comparison is therefore made against the compiler-escaped form — computed
27
+ * here, where it is exactly testable — while the operator-facing message keeps
28
+ * the real path. Escaping at compile time rather than decoding in shell keeps
29
+ * the check a deterministic string compare with no dependence on how a
30
+ * particular `printf %b` implementation treats `\nnn` vs `\0nnn`. For a path
31
+ * containing none of those four characters both forms are identical.
32
+ */
33
+ export declare const EPHEMERAL_STATE_OPT_OUT_ENV = "SPAWNFILE_ALLOW_EPHEMERAL_STATE";
34
+ export interface BackedMountRequirement {
35
+ id: string;
36
+ mount_path: string;
37
+ volume_name: string;
38
+ }
39
+ /** The mount-point field exactly as `/proc/self/mountinfo` renders this path. */
40
+ export declare const escapeMountInfoPath: (value: string) => string;
41
+ export declare const createBackedMountShellFunction: () => string[];
42
+ /**
43
+ * One check per durable mount, deduplicated by path and ordered by path so the
44
+ * rendered entrypoint is a deterministic function of the compile plan.
45
+ */
46
+ export declare const createBackedMountChecks: (mounts: readonly BackedMountRequirement[]) => string[];
47
+ /**
48
+ * The full guard — function plus checks — or nothing at all when the compile
49
+ * declares no durable mounts.
50
+ */
51
+ export declare const createBackedMountGuard: (mounts: readonly BackedMountRequirement[]) => string[];
52
+ /**
53
+ * Compile-time operator surface: how many durable mounts this organization
54
+ * requires a launcher to attach.
55
+ */
56
+ export declare const describeBackedMountRequirement: (mounts: readonly BackedMountRequirement[]) => string | null;
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Fail-closed guard for durable container state.
3
+ *
4
+ * Every path in `container.persistent_mounts[]` is state the compiler expects
5
+ * a host-backed named volume to hold. `spawnfile run`/`spawnfile up` and
6
+ * `spawnfile deploy` mount them; a hand-rolled `docker run` of the same image
7
+ * does not, and nothing in the image declares `VOLUME`, so the container would
8
+ * silently write its whole durable record onto the container's own writable
9
+ * layer and lose it on `docker rm`. That is exactly how a newsroom's message
10
+ * history was destroyed by a routine recreate.
11
+ *
12
+ * These checks make that case loud instead of silent: the entrypoint refuses
13
+ * to start unless each durable path is a real mount point, naming the mount
14
+ * id, the path, and the volume name to attach. `SPAWNFILE_ALLOW_EPHEMERAL_STATE=1`
15
+ * is the deliberate opt-out for throwaway containers.
16
+ *
17
+ * Detection reads `/proc/self/mountinfo` and looks for an EXACT mount point,
18
+ * rather than comparing `stat -c %d` against the parent directory: two nested
19
+ * durable volumes live on the same host filesystem and therefore share a
20
+ * device number, which would make a device comparison report a genuinely
21
+ * backed inner mount as unbacked.
22
+ *
23
+ * The kernel octal-escapes four characters in the mountinfo mount-point field
24
+ * (`show_mountinfo` passes `" \t\n\\"` to `seq_path_root`), so a declared
25
+ * `mount: "/var/lib/my store"` appears there as `/var/lib/my\040store`. The
26
+ * comparison is therefore made against the compiler-escaped form — computed
27
+ * here, where it is exactly testable — while the operator-facing message keeps
28
+ * the real path. Escaping at compile time rather than decoding in shell keeps
29
+ * the check a deterministic string compare with no dependence on how a
30
+ * particular `printf %b` implementation treats `\nnn` vs `\0nnn`. For a path
31
+ * containing none of those four characters both forms are identical.
32
+ */
33
+ export const EPHEMERAL_STATE_OPT_OUT_ENV = "SPAWNFILE_ALLOW_EPHEMERAL_STATE";
34
+ const shellQuote = (value) => `'${value.replace(/'/g, `'"'"'`)}'`;
35
+ const MOUNTINFO_ESCAPES = {
36
+ "\\": "\\134",
37
+ " ": "\\040",
38
+ "\t": "\\011",
39
+ "\n": "\\012"
40
+ };
41
+ /** The mount-point field exactly as `/proc/self/mountinfo` renders this path. */
42
+ export const escapeMountInfoPath = (value) => value.replace(/[\\ \t\n]/gu, (character) => MOUNTINFO_ESCAPES[character]);
43
+ export const createBackedMountShellFunction = () => [
44
+ "require_backed_mount() {",
45
+ ' local mount_id="$1"',
46
+ // As mountinfo renders it (octal-escaped), for the comparison only.
47
+ ' local mount_field="$2"',
48
+ // The real path, for every operator-facing message.
49
+ ' local mount_target="$3"',
50
+ ' local mount_volume="$4"',
51
+ " local mount_point",
52
+ ` if [ "\${${EPHEMERAL_STATE_OPT_OUT_ENV}:-}" = "1" ]; then`,
53
+ " return 0",
54
+ " fi",
55
+ " if [ ! -r /proc/self/mountinfo ]; then",
56
+ ' echo "Durable mount $mount_id at $mount_target cannot be verified: /proc/self/mountinfo is unreadable" >&2',
57
+ " exit 1",
58
+ " fi",
59
+ " while read -r _ _ _ _ mount_point _; do",
60
+ ' if [ "$mount_point" = "$mount_field" ]; then',
61
+ " return 0",
62
+ " fi",
63
+ " done < /proc/self/mountinfo",
64
+ ' echo "Durable mount $mount_id is not backed by a volume at $mount_target; this container would lose that state when it is removed." >&2',
65
+ ` echo "Start this image with 'spawnfile run' or 'spawnfile up', or pass: --mount type=volume,source=\$mount_volume,target=\$mount_target" >&2`,
66
+ ` echo "Set ${EPHEMERAL_STATE_OPT_OUT_ENV}=1 to run this container without durable state." >&2`,
67
+ " exit 1",
68
+ "}"
69
+ ];
70
+ /**
71
+ * One check per durable mount, deduplicated by path and ordered by path so the
72
+ * rendered entrypoint is a deterministic function of the compile plan.
73
+ */
74
+ export const createBackedMountChecks = (mounts) => {
75
+ const byPath = new Map();
76
+ for (const mount of mounts) {
77
+ if (!byPath.has(mount.mount_path))
78
+ byPath.set(mount.mount_path, mount);
79
+ }
80
+ return [...byPath.values()]
81
+ .sort((left, right) => left.mount_path.localeCompare(right.mount_path))
82
+ .map((mount) => `require_backed_mount ${shellQuote(mount.id)} ${shellQuote(escapeMountInfoPath(mount.mount_path))} ${shellQuote(mount.mount_path)} ${shellQuote(mount.volume_name)}`);
83
+ };
84
+ /**
85
+ * The full guard — function plus checks — or nothing at all when the compile
86
+ * declares no durable mounts.
87
+ */
88
+ export const createBackedMountGuard = (mounts) => {
89
+ const checks = createBackedMountChecks(mounts);
90
+ return checks.length === 0 ? [] : [...createBackedMountShellFunction(), "", ...checks, ""];
91
+ };
92
+ /**
93
+ * Compile-time operator surface: how many durable mounts this organization
94
+ * requires a launcher to attach.
95
+ */
96
+ export const describeBackedMountRequirement = (mounts) => {
97
+ const count = new Set(mounts.map((mount) => mount.mount_path)).size;
98
+ if (count === 0)
99
+ return null;
100
+ return `${count} durable mount${count === 1 ? "" : "s"} must be attached at start: use 'spawnfile run'/'spawnfile up', or pass matching --mount type=volume args. The entrypoint refuses to start otherwise (set ${EPHEMERAL_STATE_OPT_OUT_ENV}=1 to accept state loss).`;
101
+ };
@@ -0,0 +1,114 @@
1
+ import type { RuntimeTargetPlan } from "./containerArtifactsTypes.js";
2
+ import { type DaimonGrokRegistration, type DaimonGrokServiceConfigOptions } from "./containerDaimonGrokWorkerRender.js";
3
+ import { DAIMON_BROKER_UID, DAIMON_FIRST_WORKER_UID, DAIMON_ORGANIZATION_UID } from "../runtime/daimon/runtimeIdentity.js";
4
+ export { DAIMON_BROKER_UID, DAIMON_FIRST_WORKER_UID, DAIMON_ORGANIZATION_UID };
5
+ export declare const DAIMON_BROKER_EXECUTABLE = "/opt/daimon/bin/daimon-engine-broker";
6
+ export declare const DAIMON_BROKER_REGISTRATIONS = "/etc/daimon-engine-broker/registrations.bin";
7
+ export declare const DAIMON_BROKER_SOCKET = "/run/daimon-engine-broker/control.sock";
8
+ export declare const DAIMON_BROKER_BACKEND_SOCKET = "/run/daimon-engine-broker/backend.sock";
9
+ export declare const DAIMON_BROKER_LAUNCHER_SOCKET = "/run/daimon-engine-broker/launcher.sock";
10
+ export declare const DAIMON_BROKER_SERVICE_CONFIG = "/etc/daimon-engine-broker/service.json";
11
+ export declare const DAIMON_BROKER_REALM = "/var/lib/spawnfile/daimon/grok-subscription-realm";
12
+ /**
13
+ * Private temp for the broker and its relay (uid 2100, outside the organization
14
+ * group): shared `/tmp` and `/var/tmp` are `root:2000 1774` in a Grok
15
+ * organization, so any non-root process outside group 2000 needs its own
16
+ * `TMPDIR`. It lives in the broker's `/run` directory, which every worker denies.
17
+ */
18
+ export declare const DAIMON_BROKER_TMPDIR = "/run/daimon-engine-broker/tmp";
19
+ export { DAIMON_ORGANIZATION_STATE_DIRECTORY, DAIMON_WORKER_ROOT, resolveDaimonGrokRegistrations } from "./containerDaimonGrokWorkerRender.js";
20
+ interface WorkspaceSecurityResource {
21
+ backingPath: string;
22
+ kind: "bundle" | "git" | "volume";
23
+ linkPath: string;
24
+ mode: "mutable" | "readonly";
25
+ resolvedIdentity: string | null;
26
+ }
27
+ export declare const renderDaimonWorkspaceResourceSecurity: (resources: WorkspaceSecurityResource[], owners?: {
28
+ linkUid: number;
29
+ linkGid: number;
30
+ readonlyUid: number;
31
+ readonlyGid: number;
32
+ privilegedUid: number;
33
+ privilegedGid: number;
34
+ }, resourceRoot?: string) => string[];
35
+ /**
36
+ * Fixes ownership and mode of the per-turn usage ledger directory for every
37
+ * Daimon organization, not just ones with a Grok agent. AGY and Codex both
38
+ * write here too (`onTurnUsage` in Daimon's `engineDispatcher.ts`), from the
39
+ * organization-uid runtime process (`uid`/`gid` below, set in
40
+ * `renderDaimonUidEntrypoint`) rather than the privileged broker — so this
41
+ * must run whether or not any Grok registration exists, and the directory
42
+ * must be group-writable (0770), not merely group-readable (0750): a mode
43
+ * that only lets the group list the directory silently defeated every
44
+ * AGY/Codex advisory usage write and, with it, Daimon's wake-fuse token
45
+ * ceiling, which now refuses to start at all if this ledger is missing or
46
+ * unreadable (`wakeFuse.ts`'s `ensureUsageLedgerReadable`).
47
+ *
48
+ * The directory itself is never created here: it is a persistent volume
49
+ * mount (`daimon-grok-usage-ledger` in `config.ts`, unconditional for every
50
+ * Daimon organization) that Docker always materializes before the entrypoint
51
+ * runs — exactly like `DAIMON_WAKE_FUSE_DIRECTORY`, whose own fix-up
52
+ * (`renderDaimonUidEntrypoint`) uses this same three-step order. `chown` to
53
+ * root first, `chmod` next, `chown` to the final owner last — never
54
+ * `install -d`'s create-then-chown-then-chmod order, and never a single
55
+ * `chown owner:group` followed by `chmod`: root only ever chmods a path it
56
+ * currently owns, so it never needs `CAP_FOWNER` (`runProject.ts`'s
57
+ * capability set grants `CAP_CHOWN` but not `CAP_FOWNER`) — chmod-ing
58
+ * *after* the final `chown` hands ownership to the broker uid fails with
59
+ * `EPERM` the moment root no longer owns the path.
60
+ */
61
+ export declare const renderDaimonUsageLedgerProvisioning: () => string[];
62
+ /**
63
+ * Empties a directory without touching a mount point inside it.
64
+ *
65
+ * `rm -rf` and `find -delete` both fail `EBUSY` on a mount point — it is
66
+ * another filesystem's root, and its entry cannot be unlinked while it is
67
+ * mounted. A deployment that mounts a tmpfs below a directory it later clears
68
+ * would otherwise abort provisioning on a bare `find` failure, which is exactly
69
+ * how a live training launch died. Mount points are left in place and descended
70
+ * into; anything else that cannot be removed is reported by name.
71
+ *
72
+ * Mount points come from `/proc/self/mountinfo` field 5. The kernel
73
+ * octal-escapes space, tab, newline and backslash there; every path this
74
+ * compiler provisions is free of all four, and a path that is not would simply
75
+ * fail to match and be treated as an ordinary directory.
76
+ */
77
+ export declare const MOUNT_AWARE_CLEAR_HELPER: string[];
78
+ export declare const renderDaimonBrokerProvisioning: (plans: RuntimeTargetPlan[]) => string[];
79
+ /**
80
+ * The root broker provisioning program itself, over already-resolved
81
+ * registrations and workspace resources.
82
+ *
83
+ * Production reaches it through {@link renderDaimonBrokerProvisioning}; the
84
+ * broker-capable training container reaches it directly for its single fixed
85
+ * slot, with `serviceOptions` pointing the turn store at per-slot tmpfs and
86
+ * declaring the evaluator inference ledger. Both callers get byte-identical
87
+ * credential, registration, worker-home, temp and spill provisioning — the
88
+ * whole point of sharing it rather than writing a second root program.
89
+ *
90
+ * It is re-runnable: the shell wrapper removes `/etc/daimon-engine-broker` and
91
+ * `/run/daimon-engine-broker` first, so a slot recycle replays exactly the
92
+ * audited start-up path, credential-journal recovery included.
93
+ */
94
+ export declare const renderDaimonBrokerProvisioningProgram: (registrations: readonly DaimonGrokRegistration[], workspaceResources: WorkspaceSecurityResource[], serviceOptions?: DaimonGrokServiceConfigOptions,
95
+ /**
96
+ * How the broker's `/etc` and `/run` roots are reset before provisioning.
97
+ * A production organization owns both as ordinary image directories and
98
+ * removes them outright. The training container mounts each as its own
99
+ * tmpfs, which cannot be unlinked, so it empties them instead — the same
100
+ * end state, reached the only way a mount point allows.
101
+ */
102
+ rootReset?: "remove" | "clear",
103
+ /** Deny targets the worker provisioning creates when absent; see `renderDaimonGrokWorkerProvisioning`. */
104
+ optionalDenyPaths?: readonly string[],
105
+ /**
106
+ * Where the broker and relay get their private `TMPDIR`. Production keeps it
107
+ * inside the control root, which it removes and recreates exactly once. A
108
+ * deployment that re-provisions that root — the training slot recycle — must
109
+ * pass a path outside it: a `tmp/` inside a cleared root is a mount point in
110
+ * the training launch, and clearing a mount point fails `EBUSY`.
111
+ */
112
+ brokerTmpdir?: string,
113
+ /** Root-owned training deny targets, created after root reset and before worker attestation. */
114
+ beforeWorkerProvisioning?: readonly string[]) => string[];