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,279 @@
1
+ import os from "node:os";
2
+ import path from "node:path";
3
+ import { constants } from "node:fs";
4
+ import { chmod, lstat, mkdir, open, readFile } from "node:fs/promises";
5
+ import { SpawnfileError } from "../../shared/index.js";
6
+ import { DAIMON_AGY_SUBSCRIPTION_REALM, assertDaimonRuntimeHome, DAIMON_ENGINE_CREDENTIALS, DAIMON_ENGINE_KINDS, DAIMON_GROK_SUBSCRIPTION_REALM, DAIMON_ORGANIZATION_RUNTIME_CONFIG_VERSIONS } from "./contractManifest.js";
7
+ import { DAIMON_ORGANIZATION_UID } from "./runtimeIdentity.js";
8
+ const MAX_OPAQUE_CREDENTIAL_BYTES = 64 * 1024;
9
+ export const DAIMON_GROK_ACCESS_TOKEN_MIN_BYTES = 32;
10
+ export const DAIMON_GROK_REFRESH_TOKEN_MIN_BYTES = 16;
11
+ export const DAIMON_AGY_UNLOCK_SOURCE_ENV = "SPAWNFILE_DAIMON_SOURCE_AGY_UNLOCK_SECRET";
12
+ const fail = (message) => {
13
+ throw new SpawnfileError("validation_error", `Daimon runtime auth ${message}`);
14
+ };
15
+ export const daimonSourceEnvironmentName = (slot) => `SPAWNFILE_DAIMON_SOURCE_${slot.replace(/[^A-Za-z0-9]+/g, "_").toUpperCase()}`;
16
+ export const daimonSourcePathForEngine = (engine, environment = process.env, authProfile = null) => {
17
+ const declaredSource = environment[daimonSourceEnvironmentName(engine === "grok"
18
+ ? DAIMON_GROK_SUBSCRIPTION_REALM.bootstrapSourceSlot
19
+ : DAIMON_ENGINE_CREDENTIALS.codex.sourceSlot)]?.trim();
20
+ if (declaredSource)
21
+ return declaredSource;
22
+ if (engine === "codex" && authProfile) {
23
+ const imported = authProfile.imports.codex;
24
+ return path.join(imported?.path ?? fail("selected auth profile has no imported codex credential"), "auth.json");
25
+ }
26
+ const home = os.homedir();
27
+ switch (engine) {
28
+ case "codex":
29
+ return path.join(process.env.CODEX_HOME || path.join(home, ".codex"), "auth.json");
30
+ case "grok":
31
+ return path.join(process.env.GROK_HOME || path.join(home, ".grok"), "auth.json");
32
+ }
33
+ };
34
+ const sourceFileIdentity = (entry) => [entry.dev, entry.ino, entry.size, entry.mtimeMs, entry.uid, entry.mode, entry.nlink].join(":");
35
+ /**
36
+ * The uid a bind-mounted Daimon credential must be owned by on the host.
37
+ *
38
+ * Daimon compares the file's owner against its own `process.getuid()` inside
39
+ * the container, the container runs as {@link DAIMON_ORGANIZATION_UID}, and a
40
+ * read-only bind mount carries the host uid through unchanged, so the two are
41
+ * the same number. See `runtimeIdentity.ts` for the full chain.
42
+ */
43
+ export const DAIMON_CREDENTIAL_CONTAINER_UID = DAIMON_ORGANIZATION_UID;
44
+ /**
45
+ * The host-side safety gate, isolated from `lstat` so every branch is directly
46
+ * exercisable. A credential the deploying process does not own is material it
47
+ * cannot vouch for, and a root deploy (`callerUid <= 0`) is refused outright
48
+ * so a privileged process never launders someone else's credential into a
49
+ * container.
50
+ */
51
+ export const isUnsafeDaimonSourceFile = (entry, callerUid, maxBytes) => !entry.isFile ||
52
+ entry.isSymbolicLink ||
53
+ entry.size === 0 ||
54
+ entry.size > maxBytes ||
55
+ entry.nlink !== 1 ||
56
+ (entry.mode & 0o777) !== 0o600 ||
57
+ typeof callerUid !== "number" ||
58
+ callerUid <= 0 ||
59
+ entry.uid !== callerUid;
60
+ /**
61
+ * Refuses, at deploy time, a credential whose owner is not the uid the
62
+ * container will demand.
63
+ *
64
+ * Without this the host gate above and Daimon's in-container gate impose two
65
+ * uncoordinated uid requirements on the same file: the host one passes for any
66
+ * non-root deploying account, and the container one then fails at readiness
67
+ * with an opaque "credential materialization failed" inside a candidate that
68
+ * lives ~15 seconds. Naming both numbers here turns that into a refusal the
69
+ * operator can act on.
70
+ */
71
+ export const assertDaimonCredentialContainerOwner = (observedUid, label, requiredUid = DAIMON_CREDENTIAL_CONTAINER_UID) => {
72
+ if (observedUid === requiredUid)
73
+ return;
74
+ fail(`selected ${label} artifact is owned by uid ${observedUid} but the Daimon container reads it as uid ` +
75
+ `${requiredUid}; the credential is bind-mounted read-only and keeps its host owner, so deploy from an ` +
76
+ `account whose uid is exactly ${requiredUid} (for example \`usermod -u ${requiredUid} <deploy-user>\` ` +
77
+ `followed by \`chown -R ${requiredUid} <deploy-home>\`) instead of uid ${observedUid}`);
78
+ };
79
+ export const assertSafeDaimonSourceFile = async (sourcePath, label, maxBytes = MAX_OPAQUE_CREDENTIAL_BYTES, portableKind) => {
80
+ let entry;
81
+ try {
82
+ entry = await lstat(sourcePath);
83
+ }
84
+ catch {
85
+ return fail(`is missing the selected ${label} artifact`);
86
+ }
87
+ const callerUid = process.getuid?.();
88
+ if (isUnsafeDaimonSourceFile({
89
+ isFile: entry.isFile(),
90
+ isSymbolicLink: entry.isSymbolicLink(),
91
+ mode: entry.mode,
92
+ nlink: entry.nlink,
93
+ size: entry.size,
94
+ uid: entry.uid
95
+ }, callerUid, maxBytes) || typeof callerUid !== "number") {
96
+ return fail(`selected ${label} artifact must be one bounded caller-owned 0600 regular file`);
97
+ }
98
+ if (portableKind !== undefined) {
99
+ let handle;
100
+ let bytes;
101
+ try {
102
+ handle = await open(sourcePath, constants.O_RDONLY | (constants.O_NOFOLLOW ?? 0));
103
+ const opened = await handle.stat();
104
+ if (sourceFileIdentity(opened) !== sourceFileIdentity(entry)) {
105
+ return fail(`selected ${label} artifact changed during validation`);
106
+ }
107
+ bytes = await handle.readFile();
108
+ const after = await handle.stat();
109
+ if (sourceFileIdentity(after) !== sourceFileIdentity(opened)) {
110
+ return fail(`selected ${label} artifact changed during validation`);
111
+ }
112
+ if (!hasRefreshableCredential(portableKind, bytes)) {
113
+ return fail(`selected ${label} artifact is not a refreshable subscription credential`);
114
+ }
115
+ }
116
+ catch (error) {
117
+ if (error instanceof SpawnfileError)
118
+ throw error;
119
+ return fail(`selected ${label} artifact could not be validated`);
120
+ }
121
+ finally {
122
+ bytes?.fill(0);
123
+ await handle?.close().catch(() => undefined);
124
+ }
125
+ }
126
+ return callerUid;
127
+ };
128
+ const hasRefreshableCredential = (kind, bytes) => {
129
+ let parsed;
130
+ try {
131
+ parsed = JSON.parse(bytes.toString("utf8"));
132
+ }
133
+ catch {
134
+ return false;
135
+ }
136
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
137
+ return false;
138
+ const root = parsed;
139
+ const source = kind === "codex"
140
+ ? ((root.tokens && typeof root.tokens === "object" && !Array.isArray(root.tokens)) ? root.tokens : root)
141
+ : Object.entries(root).find(([key, value]) => /^https:\/\/auth\.x\.ai::/u.test(key) && value && typeof value === "object" && !Array.isArray(value))?.[1];
142
+ if (!source)
143
+ return false;
144
+ const access = kind === "grok" ? source.key : source.access_token ?? source.accessToken ?? source.token;
145
+ const refresh = kind === "grok" ? source.refresh_token : source.refresh_token ?? source.refreshToken;
146
+ if (typeof access !== "string" || !access.trim() || typeof refresh !== "string" || !refresh.trim())
147
+ return false;
148
+ if (kind === "grok" && (access.length < DAIMON_GROK_ACCESS_TOKEN_MIN_BYTES
149
+ || refresh.length < DAIMON_GROK_REFRESH_TOKEN_MIN_BYTES))
150
+ return false;
151
+ return kind !== "grok" || (typeof source.expires_at === "string" && Number.isFinite(Date.parse(source.expires_at)));
152
+ };
153
+ const assertContainedPath = (root, candidate) => {
154
+ const normalizedRoot = path.resolve(root);
155
+ const normalizedCandidate = path.resolve(candidate);
156
+ const relative = path.relative(normalizedRoot, normalizedCandidate);
157
+ if (relative === "" || relative === ".." || relative.startsWith(`..${path.sep}`) || path.isAbsolute(relative)) {
158
+ return fail("attempted to stage outside its ephemeral support root");
159
+ }
160
+ return normalizedCandidate;
161
+ };
162
+ const configPathInOutput = (input) => {
163
+ if (!input.instance.config_path.startsWith("/"))
164
+ fail("has a non-absolute generated config path");
165
+ return assertContainedPath(path.join(input.outputDirectory, "container", "rootfs"), path.join(input.outputDirectory, "container", "rootfs", `.${input.instance.config_path}`));
166
+ };
167
+ const parseConfigAgents = (source) => {
168
+ let parsed;
169
+ try {
170
+ parsed = JSON.parse(source);
171
+ }
172
+ catch {
173
+ return fail("generated organization config is not JSON");
174
+ }
175
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
176
+ fail("generated organization config has an invalid shape");
177
+ const root = parsed;
178
+ if (!DAIMON_ORGANIZATION_RUNTIME_CONFIG_VERSIONS.includes(root.version) || !Array.isArray(root.agents))
179
+ fail("generated organization config is not a supported v1/v2 contract");
180
+ const rawAgents = root.agents;
181
+ const seenHomes = new Set();
182
+ const agents = [];
183
+ for (const value of rawAgents) {
184
+ if (!value || typeof value !== "object" || Array.isArray(value))
185
+ fail("generated organization config has an invalid agent");
186
+ const agent = value;
187
+ const engine = agent.engine;
188
+ const engineKind = engine && typeof engine === "object" && !Array.isArray(engine)
189
+ ? engine.kind
190
+ : undefined;
191
+ if (typeof agent.id !== "string" || !agent.id || typeof agent.runtimeHomePath !== "string"
192
+ || typeof engineKind !== "string"
193
+ || !DAIMON_ENGINE_KINDS.includes(engineKind)) {
194
+ fail("generated organization config has an invalid agent credential target");
195
+ }
196
+ const agentId = agent.id;
197
+ const runtimeHomePath = assertDaimonRuntimeHome(agent.runtimeHomePath);
198
+ if (seenHomes.has(runtimeHomePath))
199
+ fail("generated organization config has overlapping runtime homes");
200
+ seenHomes.add(runtimeHomePath);
201
+ agents.push({
202
+ engine: { kind: engineKind },
203
+ id: agentId,
204
+ runtimeHomePath
205
+ });
206
+ }
207
+ return agents.sort((left, right) => left.id.localeCompare(right.id));
208
+ };
209
+ const resolveCredentialSource = (agent, authProfile) => daimonSourcePathForEngine(agent.engine.kind, process.env, authProfile);
210
+ const prepareNeutralIngress = async (outputDirectory, agent) => {
211
+ const rootfs = path.join(outputDirectory, "container", "rootfs");
212
+ const runtimeHome = assertContainedPath(rootfs, path.join(rootfs, `.${agent.runtimeHomePath}`));
213
+ const inbound = assertContainedPath(runtimeHome, path.join(runtimeHome, path.posix.dirname(DAIMON_ENGINE_CREDENTIALS[agent.engine.kind].sourceRelativePath)));
214
+ await mkdir(runtimeHome, { mode: 0o700, recursive: true });
215
+ await chmod(runtimeHome, 0o700);
216
+ await mkdir(inbound, { mode: 0o700, recursive: true });
217
+ await chmod(inbound, 0o700);
218
+ return path.posix.join(agent.runtimeHomePath, DAIMON_ENGINE_CREDENTIALS[agent.engine.kind].sourceRelativePath);
219
+ };
220
+ /**
221
+ * Binds Codex leaves per agent and one Grok bootstrap leaf per organization.
222
+ * Every leaf is validated from a stable descriptor and mounted read-only;
223
+ * Daimon alone owns writable credential state and refresh reconciliation.
224
+ */
225
+ export const prepareDaimonRuntimeAuth = async (input) => {
226
+ const containerCredentialUid = input.containerCredentialUid ?? DAIMON_CREDENTIAL_CONTAINER_UID;
227
+ const allowedSourceEnvironments = new Set([
228
+ ...Object.values(DAIMON_ENGINE_CREDENTIALS).map((credential) => daimonSourceEnvironmentName(credential.sourceSlot)),
229
+ daimonSourceEnvironmentName(DAIMON_GROK_SUBSCRIPTION_REALM.bootstrapSourceSlot),
230
+ DAIMON_AGY_UNLOCK_SOURCE_ENV
231
+ ]);
232
+ for (const name of Object.keys(process.env)) {
233
+ if (name.startsWith("SPAWNFILE_DAIMON_SOURCE_") && !allowedSourceEnvironments.has(name)) {
234
+ return fail(`source slot environment ${name} is not declared by the consumed manifest`);
235
+ }
236
+ }
237
+ const configPath = configPathInOutput(input);
238
+ let configSource;
239
+ try {
240
+ configSource = await readFile(configPath, "utf8");
241
+ }
242
+ catch {
243
+ return fail("could not read its generated organization config");
244
+ }
245
+ const agents = parseConfigAgents(configSource);
246
+ const mountArgs = [];
247
+ for (const agent of agents) {
248
+ if (agent.engine.kind !== "codex")
249
+ continue;
250
+ const portableAgent = agent;
251
+ const sourcePath = resolveCredentialSource(portableAgent, input.authProfile);
252
+ const ingressPath = await prepareNeutralIngress(input.outputDirectory, portableAgent);
253
+ const ownerUid = await assertSafeDaimonSourceFile(sourcePath, agent.engine.kind, MAX_OPAQUE_CREDENTIAL_BYTES, "codex");
254
+ assertDaimonCredentialContainerOwner(ownerUid, agent.engine.kind, containerCredentialUid);
255
+ mountArgs.push("-v", `${sourcePath}:${ingressPath}:ro`);
256
+ }
257
+ // No container-owner assertion for the Grok bootstrap leaf: unlike the Codex
258
+ // credential and the AGY unlock secret, nothing in the organization runtime
259
+ // process reads it. The live Grok path goes through the engine broker, which
260
+ // runs under its own uid and reads only its durable realm, so pinning this
261
+ // leaf to the organization uid would refuse deployments that work today.
262
+ if (agents.some((agent) => agent.engine.kind === "grok")) {
263
+ const sourcePath = daimonSourcePathForEngine("grok");
264
+ await assertSafeDaimonSourceFile(sourcePath, "grok", DAIMON_GROK_SUBSCRIPTION_REALM.maxCredentialBytes, "grok");
265
+ mountArgs.push("-v", `${sourcePath}:${DAIMON_GROK_SUBSCRIPTION_REALM.bootstrapMountPath}:ro`);
266
+ }
267
+ if (agents.some((agent) => agent.engine.kind === "agy")) {
268
+ const source = process.env[DAIMON_AGY_UNLOCK_SOURCE_ENV]?.trim();
269
+ if (!source)
270
+ return fail("is missing the operator-authorized AGY realm unlock artifact");
271
+ const ownerUid = await assertSafeDaimonSourceFile(source, "AGY realm unlock", DAIMON_AGY_SUBSCRIPTION_REALM.maxUnlockBytes);
272
+ assertDaimonCredentialContainerOwner(ownerUid, "AGY realm unlock", containerCredentialUid);
273
+ mountArgs.push("-v", `${source}:${DAIMON_AGY_SUBSCRIPTION_REALM.unlockMountPath}:ro`);
274
+ }
275
+ return {
276
+ coveredModelSecrets: [],
277
+ mountArgs
278
+ };
279
+ };
@@ -0,0 +1,22 @@
1
+ /**
2
+ * The fixed container-side uids a compiled Daimon image runs under.
3
+ *
4
+ * These are compiler-wide constants, not per-organization values: the rendered
5
+ * Daimon entrypoint pins `uid=DAIMON_ORGANIZATION_UID` and drops to it through
6
+ * `setpriv --reuid`, so every organization's Daimon runtime process shares the
7
+ * same uid. The engine broker and its Grok workers run under their own fixed
8
+ * uids alongside it.
9
+ *
10
+ * Why the deploy path cares: Daimon's own credential guards compare a
11
+ * credential file's owner against `process.getuid()` *inside* the container
12
+ * (`portableCredentialMaterial.ts` for Codex, `agySubscriptionRealm.ts` for the
13
+ * AGY unlock secret). Spawnfile bind-mounts those files read-only from the
14
+ * host, the daemon applies no user-namespace remapping, and the credential
15
+ * leaves are declared opaque so the entrypoint ownership guard never chowns
16
+ * them. A host file therefore keeps its host uid inside the container, which
17
+ * makes "owned by DAIMON_ORGANIZATION_UID" a host-side deployment requirement
18
+ * rather than something the container can repair.
19
+ */
20
+ export declare const DAIMON_ORGANIZATION_UID = 2000;
21
+ export declare const DAIMON_BROKER_UID = 2100;
22
+ export declare const DAIMON_FIRST_WORKER_UID = 2200;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * The fixed container-side uids a compiled Daimon image runs under.
3
+ *
4
+ * These are compiler-wide constants, not per-organization values: the rendered
5
+ * Daimon entrypoint pins `uid=DAIMON_ORGANIZATION_UID` and drops to it through
6
+ * `setpriv --reuid`, so every organization's Daimon runtime process shares the
7
+ * same uid. The engine broker and its Grok workers run under their own fixed
8
+ * uids alongside it.
9
+ *
10
+ * Why the deploy path cares: Daimon's own credential guards compare a
11
+ * credential file's owner against `process.getuid()` *inside* the container
12
+ * (`portableCredentialMaterial.ts` for Codex, `agySubscriptionRealm.ts` for the
13
+ * AGY unlock secret). Spawnfile bind-mounts those files read-only from the
14
+ * host, the daemon applies no user-namespace remapping, and the credential
15
+ * leaves are declared opaque so the entrypoint ownership guard never chowns
16
+ * them. A host file therefore keeps its host uid inside the container, which
17
+ * makes "owned by DAIMON_ORGANIZATION_UID" a host-side deployment requirement
18
+ * rather than something the container can repair.
19
+ */
20
+ export const DAIMON_ORGANIZATION_UID = 2_000;
21
+ export const DAIMON_BROKER_UID = 2_100;
22
+ export const DAIMON_FIRST_WORKER_UID = 2_200;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * True when the image the build will select attests the compiler's exact
3
+ * contract manifest (organization runtime v2): either the explicit local
4
+ * development identity, or the published registry pin with a digest, its
5
+ * per-architecture capability receipts and a matching contract manifest.
6
+ * The published receipts embed that manifest digest; the generated image
7
+ * re-checks the receipt it copies, so the pin is the attestation.
8
+ */
9
+ export declare const hasDaimonScheduleAuthority: () => Promise<boolean>;
10
+ /** Schedule lowering is allowed only when the selected image receipt binds v2. */
11
+ export declare const assertDaimonScheduleAuthority: () => Promise<void>;
@@ -0,0 +1,31 @@
1
+ import { SpawnfileError } from "../../shared/index.js";
2
+ import { DAIMON_LOCAL_RUNTIME_IDENTITY_ENV, loadLocalDaimonRuntimeIdentity } from "../localDaimonAuthority.js";
3
+ import { DAIMON_CONTRACT_MANIFEST_SHA256 } from "./contractManifest.js";
4
+ /**
5
+ * True when the image the build will select attests the compiler's exact
6
+ * contract manifest (organization runtime v2): either the explicit local
7
+ * development identity, or the published registry pin with a digest, its
8
+ * per-architecture capability receipts and a matching contract manifest.
9
+ * The published receipts embed that manifest digest; the generated image
10
+ * re-checks the receipt it copies, so the pin is the attestation.
11
+ */
12
+ export const hasDaimonScheduleAuthority = async () => {
13
+ const identityPath = process.env[DAIMON_LOCAL_RUNTIME_IDENTITY_ENV]?.trim();
14
+ if (identityPath) {
15
+ return (await loadLocalDaimonRuntimeIdentity(identityPath)).manifestSha256 ===
16
+ DAIMON_CONTRACT_MANIFEST_SHA256;
17
+ }
18
+ // Lazy: install.js -> registry.js -> this adapter would otherwise form an import cycle.
19
+ const { resolveRuntimeInstallSelection } = await import("../install.js");
20
+ const selection = await resolveRuntimeInstallSelection("daimon");
21
+ return selection.kind === "container_image" &&
22
+ Boolean(selection.digest) &&
23
+ Boolean(selection.capabilityReceipt || selection.capabilityReceipts) &&
24
+ selection.contractManifestSha256 === DAIMON_CONTRACT_MANIFEST_SHA256;
25
+ };
26
+ /** Schedule lowering is allowed only when the selected image receipt binds v2. */
27
+ export const assertDaimonScheduleAuthority = async () => {
28
+ if (!await hasDaimonScheduleAuthority()) {
29
+ throw new SpawnfileError("runtime_error", "Daimon schedules are disabled: the selected image capability receipt does not attest organization runtime v2");
30
+ }
31
+ };
@@ -0,0 +1,15 @@
1
+ /** Exact data-only wake recording contract advertised by Daimon's image receipt. */
2
+ export declare const DAIMON_WAKE_MOMENTS: {
3
+ readonly version: "noopolis.daimon.wake-moment.v1";
4
+ readonly rowsFile: "wake-moments.jsonl";
5
+ readonly snapshotsDirectory: "snapshots";
6
+ readonly completionSuffix: ".complete";
7
+ readonly maxSnapshotRoots: 16;
8
+ readonly maxSnapshotEntries: 200000;
9
+ readonly maxRowBytes: 4194304;
10
+ readonly maxManifestBytes: 134217728;
11
+ readonly captureDeadlineMs: 60000;
12
+ readonly finalizationDeadlineMs: 1000;
13
+ readonly configField: "agents[].recording";
14
+ };
15
+ export declare const isDaimonWakeMoments: (value: unknown) => value is typeof DAIMON_WAKE_MOMENTS;
@@ -0,0 +1,17 @@
1
+ /** Exact data-only wake recording contract advertised by Daimon's image receipt. */
2
+ export const DAIMON_WAKE_MOMENTS = {
3
+ version: "noopolis.daimon.wake-moment.v1",
4
+ rowsFile: "wake-moments.jsonl",
5
+ snapshotsDirectory: "snapshots",
6
+ completionSuffix: ".complete",
7
+ maxSnapshotRoots: 16,
8
+ maxSnapshotEntries: 200_000,
9
+ maxRowBytes: 4_194_304,
10
+ maxManifestBytes: 134_217_728,
11
+ captureDeadlineMs: 60_000,
12
+ finalizationDeadlineMs: 1_000,
13
+ configField: "agents[].recording"
14
+ };
15
+ export const isDaimonWakeMoments = (value) => value !== null && typeof value === "object" && !Array.isArray(value)
16
+ && Object.keys(value).length === Object.keys(DAIMON_WAKE_MOMENTS).length
17
+ && Object.entries(DAIMON_WAKE_MOMENTS).every(([key, expected]) => Object.hasOwn(value, key) && value[key] === expected);
@@ -0,0 +1,3 @@
1
+ import type { DaimonCapabilityReceipts } from "./registry.js";
2
+ /** Shared install verification and launchers for organization and training images. */
3
+ export declare const createDaimonInstallCommands: (installRoot: string, capabilityReceipt: string | DaimonCapabilityReceipts) => string[];
@@ -0,0 +1,25 @@
1
+ import { DAIMON_CONTRACT_MANIFEST_SHA256, DAIMON_GROK_ENGINE_BROKER } from "./daimon/contractManifest.js";
2
+ /**
3
+ * A published multi-architecture Daimon index embeds a different receipt per
4
+ * platform (the packaged broker and pinned CLIs are per-architecture), so the
5
+ * generated image checks the receipt pinned for the architecture it builds.
6
+ */
7
+ const createDaimonReceiptCheck = (receiptPath, receipt) => {
8
+ const actual = `test -f ${receiptPath} && actual="$(sha256sum ${receiptPath} | awk '{print "sha256:" $1}')"`;
9
+ if (typeof receipt === "string")
10
+ return `${actual} && test "$actual" = ${JSON.stringify(receipt)}`;
11
+ const cases = Object.entries(receipt)
12
+ .map(([architecture, digest]) => `${architecture}) expected=${JSON.stringify(digest)} ;;`)
13
+ .join(" ");
14
+ return `${actual} && arch="$(dpkg --print-architecture)" && case "$arch" in ${cases} *) echo "No pinned Daimon capability receipt for $arch" >&2; exit 1 ;; esac && test "$actual" = "$expected"`;
15
+ };
16
+ /** Shared install verification and launchers for organization and training images. */
17
+ export const createDaimonInstallCommands = (installRoot, capabilityReceipt) => [
18
+ createDaimonReceiptCheck(`${installRoot}/capability-receipt.json`, capabilityReceipt),
19
+ `test -f ${installRoot}/contract-manifest.json && test -f ${installRoot}/contract-manifest.sha256 && manifest="$(cat ${installRoot}/contract-manifest.sha256)" && test "$manifest" = ${JSON.stringify(DAIMON_CONTRACT_MANIFEST_SHA256)} && test "$(sha256sum ${installRoot}/contract-manifest.json | awk '{print "sha256:" $1}')" = "$manifest" && node -e 'const fs=require("fs");const r=JSON.parse(fs.readFileSync(process.argv[1],"utf8"));if(r.manifest_sha256!==process.argv[2])process.exit(1)' ${installRoot}/capability-receipt.json "$manifest"`,
20
+ `ln -sf ${installRoot}/bin/daimon-runtime /usr/local/bin/daimon-runtime`,
21
+ `ln -sf ${installRoot}/bin/codex /usr/local/bin/codex`,
22
+ `install -o root -g root -m 0555 ${installRoot}/bin/grok /usr/local/bin/grok && arch="$(dpkg --print-architecture)" && case "$arch" in amd64) expected=${DAIMON_GROK_ENGINE_BROKER.grokCliArtifacts.x64.sha256} ;; arm64) expected=${DAIMON_GROK_ENGINE_BROKER.grokCliArtifacts.arm64.sha256} ;; *) exit 1 ;; esac && test "$(sha256sum /usr/local/bin/grok | awk '{print $1}')" = "$expected"`,
23
+ `ln -sf ${installRoot}/bin/agy /usr/local/bin/agy`,
24
+ `mkdir -p /opt/daimon/bin && install -o root -g root -m 0555 ${installRoot}/bin/daimon-engine-broker /opt/daimon/bin/daimon-engine-broker && arch="$(dpkg --print-architecture)" && case "$arch" in amd64) expected=${DAIMON_GROK_ENGINE_BROKER.artifacts.x64Sha256} ;; arm64) expected=${DAIMON_GROK_ENGINE_BROKER.artifacts.arm64Sha256} ;; *) exit 1 ;; esac && test "$(sha256sum /opt/daimon/bin/daimon-engine-broker | awk '{print $1}')" = "$expected"`
25
+ ];
@@ -2,6 +2,11 @@ export * from "./common.js";
2
2
  export * from "./container.js";
3
3
  export * from "./containerPackageOverrides.js";
4
4
  export * from "./install.js";
5
+ export * from "./localDaimonAuthority.js";
5
6
  export * from "./registry.js";
6
7
  export * from "./statusProbes.js";
7
8
  export * from "./types.js";
9
+ export * from "./usageLedger.js";
10
+ export * from "./usageLedgerRead.js";
11
+ export * from "./usageRequestLedger.js";
12
+ export * from "./daimonInstall.js";
@@ -2,6 +2,11 @@ export * from "./common.js";
2
2
  export * from "./container.js";
3
3
  export * from "./containerPackageOverrides.js";
4
4
  export * from "./install.js";
5
+ export * from "./localDaimonAuthority.js";
5
6
  export * from "./registry.js";
6
7
  export * from "./statusProbes.js";
7
8
  export * from "./types.js";
9
+ export * from "./usageLedger.js";
10
+ export * from "./usageLedgerRead.js";
11
+ export * from "./usageRequestLedger.js";
12
+ export * from "./daimonInstall.js";
@@ -1,5 +1,10 @@
1
+ import { type DaimonCapabilityReceipts } from "./registry.js";
1
2
  export type RuntimeInstallSelection = {
2
3
  ecosystem: "go" | "node";
4
+ capabilityReceipt?: string;
5
+ capabilityReceipts?: DaimonCapabilityReceipts;
6
+ contractManifestSha256?: string;
7
+ digest?: string;
3
8
  image: string;
4
9
  installHint: string;
5
10
  kind: "container_image";
@@ -104,6 +104,10 @@ export const resolveRuntimeInstallSelection = async (runtimeName) => {
104
104
  case "container_image":
105
105
  return {
106
106
  ecosystem: installProfile.container_image.ecosystem,
107
+ capabilityReceipt: runtime.install.capabilityReceipt,
108
+ ...(runtime.install.capabilityReceipts ? { capabilityReceipts: runtime.install.capabilityReceipts } : {}),
109
+ contractManifestSha256: runtime.install.contractManifestSha256,
110
+ digest: runtime.install.digest,
107
111
  image: runtime.install.image,
108
112
  installHint: installProfile.container_image.installHint,
109
113
  kind: "container_image",
@@ -0,0 +1,11 @@
1
+ export declare const DAIMON_LOCAL_RUNTIME_IDENTITY_ENV = "SPAWNFILE_DAIMON_LOCAL_RUNTIME_IDENTITY";
2
+ export interface LocalDaimonRuntimeIdentity {
3
+ capabilityReceipt: string;
4
+ imageArchitecture: "amd64" | "arm64";
5
+ imageConfigDigest: string;
6
+ imageManifestDigest: string;
7
+ imageReference: string;
8
+ manifestSha256: string;
9
+ registryAuthority: string;
10
+ }
11
+ export declare const loadLocalDaimonRuntimeIdentity: (identityPath: string) => Promise<LocalDaimonRuntimeIdentity>;
@@ -0,0 +1,77 @@
1
+ import { lstat, readFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { z } from "zod";
4
+ import { SpawnfileError } from "../shared/index.js";
5
+ import { DAIMON_CONTRACT_MANIFEST_SHA256 } from "./daimon/contractManifest.js";
6
+ export const DAIMON_LOCAL_RUNTIME_IDENTITY_ENV = "SPAWNFILE_DAIMON_LOCAL_RUNTIME_IDENTITY";
7
+ const LOCAL_DAIMON_REPOSITORY_PATH = "noopolis/spawnfile-runtime-daimon";
8
+ const DIGEST = /^sha256:[a-f0-9]{64}$/u;
9
+ const MAX_IDENTITY_BYTES = 16 * 1024;
10
+ const localDaimonRuntimeIdentitySchema = z
11
+ .object({
12
+ capability_receipt_sha256: z.string().regex(DIGEST),
13
+ development: z
14
+ .object({
15
+ mode: z.literal("local-development"),
16
+ non_production: z.literal(true),
17
+ unpublished: z.literal(true),
18
+ unsigned: z.literal(true)
19
+ })
20
+ .strict(),
21
+ image_architecture: z.union([z.literal("amd64"), z.literal("arm64")]),
22
+ image_config_digest: z.string().regex(DIGEST),
23
+ image_manifest_digest: z.string().regex(DIGEST),
24
+ image_reference: z.string(),
25
+ manifest_sha256: z.string().regex(DIGEST),
26
+ registry_authority: z.string().regex(/^127\.0\.0\.1:(?:[1-9]\d{0,3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/u),
27
+ version: z.literal("spawnfile.local-daimon-runtime-identity.v3")
28
+ })
29
+ .strict()
30
+ .superRefine((identity, context) => {
31
+ const expected = `${identity.registry_authority}/${LOCAL_DAIMON_REPOSITORY_PATH}@${identity.image_manifest_digest}`;
32
+ if (identity.image_reference !== expected) {
33
+ context.addIssue({
34
+ code: "custom",
35
+ message: "image_reference must bind the approved local registry repository and manifest digest",
36
+ path: ["image_reference"]
37
+ });
38
+ }
39
+ });
40
+ const fail = (message) => {
41
+ throw new SpawnfileError("runtime_error", message);
42
+ };
43
+ export const loadLocalDaimonRuntimeIdentity = async (identityPath) => {
44
+ if (!path.isAbsolute(identityPath)) {
45
+ return fail("Local Daimon runtime identity path must be absolute");
46
+ }
47
+ let entry;
48
+ try {
49
+ entry = await lstat(identityPath);
50
+ }
51
+ catch {
52
+ return fail("Local Daimon runtime identity is missing or unreadable");
53
+ }
54
+ if (!entry.isFile() || entry.isSymbolicLink() || entry.size === 0 || entry.size > MAX_IDENTITY_BYTES) {
55
+ return fail("Local Daimon runtime identity must be a bounded nonempty regular file");
56
+ }
57
+ let value;
58
+ try {
59
+ value = JSON.parse(await readFile(identityPath, "utf8"));
60
+ }
61
+ catch {
62
+ return fail("Local Daimon runtime identity must contain valid JSON");
63
+ }
64
+ const parsed = localDaimonRuntimeIdentitySchema.safeParse(value);
65
+ if (!parsed.success || parsed.data.manifest_sha256 !== DAIMON_CONTRACT_MANIFEST_SHA256) {
66
+ return fail("Local Daimon runtime identity is invalid or incomplete");
67
+ }
68
+ return Object.freeze({
69
+ capabilityReceipt: parsed.data.capability_receipt_sha256,
70
+ imageArchitecture: parsed.data.image_architecture,
71
+ imageConfigDigest: parsed.data.image_config_digest,
72
+ imageManifestDigest: parsed.data.image_manifest_digest,
73
+ imageReference: parsed.data.image_reference,
74
+ manifestSha256: parsed.data.manifest_sha256,
75
+ registryAuthority: parsed.data.registry_authority
76
+ });
77
+ };
@@ -7,6 +7,19 @@ interface MnemeMcpServerOptions {
7
7
  }
8
8
  export declare const resolveMnemeMemoryRuntimeHomePath: (access: MnemeMemoryAccess) => string | null;
9
9
  export declare const isMnemeMemoryAccessSupported: (access: MnemeMemoryAccess) => boolean;
10
+ /**
11
+ * The container path a bank's Mneme runtime home is durably mounted at, or
12
+ * `null` when the compiler emits no persistent volume for it.
13
+ *
14
+ * This is the single authority shared by two sides that must never disagree:
15
+ * `src/compiler/memoryArtifacts.ts`, which emits the persistent mount (and
16
+ * therefore the directory the Daimon UID entrypoint creates and chowns to the
17
+ * runtime uid), and the runtime config emitters, which may only point an
18
+ * in-process Mneme runtime at a path the container actually mounts. A path
19
+ * without a mount is either absent at runtime or root-owned, so an in-process
20
+ * runtime pointed at one fails its first `mkdir`/write instead of degrading.
21
+ */
22
+ export declare const resolveMnemeDurableMemoryMountPath: (bank: MnemeMemoryAccess["bank"]) => string | null;
10
23
  export declare const mnemeMemoryServerBaseName: (node: ResolvedAgentNode, access: MnemeMemoryAccess) => string;
11
24
  export declare const mnemeMemoryServerName: (node: ResolvedAgentNode, access: MnemeMemoryAccess, mode: MnemeMcpMode) => string;
12
25
  export declare const buildMnemeMemoryMcpServers: (node: ResolvedAgentNode, options?: MnemeMcpServerOptions) => Record<string, Record<string, unknown>>;
@@ -13,6 +13,32 @@ export const resolveMnemeMemoryRuntimeHomePath = (access) => {
13
13
  return store.path ? path.dirname(store.path) : null;
14
14
  };
15
15
  export const isMnemeMemoryAccessSupported = (access) => resolveMnemeMemoryRuntimeHomePath(access) !== null;
16
+ const normalizePosixPath = (value) => path.normalize(value).replace(/\/+$/u, "") || "/";
17
+ /**
18
+ * The container path a bank's Mneme runtime home is durably mounted at, or
19
+ * `null` when the compiler emits no persistent volume for it.
20
+ *
21
+ * This is the single authority shared by two sides that must never disagree:
22
+ * `src/compiler/memoryArtifacts.ts`, which emits the persistent mount (and
23
+ * therefore the directory the Daimon UID entrypoint creates and chowns to the
24
+ * runtime uid), and the runtime config emitters, which may only point an
25
+ * in-process Mneme runtime at a path the container actually mounts. A path
26
+ * without a mount is either absent at runtime or root-owned, so an in-process
27
+ * runtime pointed at one fails its first `mkdir`/write instead of degrading.
28
+ */
29
+ export const resolveMnemeDurableMemoryMountPath = (bank) => {
30
+ const store = bank.store;
31
+ if (store.kind !== "sqlite" && store.kind !== "json") {
32
+ return null;
33
+ }
34
+ if (store.persistence?.mode === "ephemeral") {
35
+ return null;
36
+ }
37
+ if (store.persistence?.mount) {
38
+ return normalizePosixPath(store.persistence.mount);
39
+ }
40
+ return store.path ? path.dirname(normalizePosixPath(store.path)) : null;
41
+ };
16
42
  const memoryAccessKey = (access) => `${access.source}:${access.bank.id}`;
17
43
  const sourceDiscriminatorFor = (access) => {
18
44
  const nameSlug = slugify(`${access.declaringKind}-${access.bank.declaredName}`) || access.declaringKind;