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,249 @@
1
+ import path from "node:path";
2
+ import { DAIMON_GROK_ENGINE_BROKER, DAIMON_GROK_SUBSCRIPTION_REALM, DAIMON_GROK_TURN_USAGE_LEDGER } from "../../../runtime/daimon/contractManifest.js";
3
+ import { DAIMON_BROKER_UID, DAIMON_FIRST_WORKER_UID, DAIMON_ORGANIZATION_UID } from "../../../runtime/daimon/runtimeIdentity.js";
4
+ import { DAIMON_WAKE_FUSE_DIRECTORY } from "../../../runtime/daimon/config.js";
5
+ import { DAIMON_WORKER_ROOT } from "../../containerDaimonGrokWorkerRender.js";
6
+ /**
7
+ * Every container path the broker-capable training container fixes.
8
+ *
9
+ * They are deterministic because three parties must agree on them
10
+ * without talking to each other: the root entrypoint that provisions them, the
11
+ * root slot supervisor that wipes and re-provisions them on recycle, and
12
+ * Paideia's native adapter, which writes them into `paideia.daimon-native.launch.v2`
13
+ * and has no way to ask the container what it chose. Daimon's projection never
14
+ * resolves a path, so each one must also be canonical and never a symlink; the
15
+ * provisioning program asserts that before a slot is used.
16
+ *
17
+ * Everything under `/run/training/slots/<i>` is per-trial state on tmpfs — never the
18
+ * Grok realm volume (R2). The realm volume holds only `auth.json` and the
19
+ * broker credential journal, so a recycle can wipe the slot without touching
20
+ * the one durable rotating credential.
21
+ */
22
+ export const TRAINING_RUN_ROOT = "/run/training/output";
23
+ export const TRAINING_SEALED_INPUTS_ROOT = "/run/training/inputs";
24
+ export const TRAINING_PAIDEIA_ROOT = "/run/paideia";
25
+ export const TRAINING_CONTEXT_FILE = `${TRAINING_PAIDEIA_ROOT}/context.json`;
26
+ /** Host-written, read-only `spawnfile.training-broker.v2` declaration the root entrypoint reads. */
27
+ export const TRAINING_BROKER_DECLARATION_FILE = `${TRAINING_PAIDEIA_ROOT}/training-broker.json`;
28
+ export const TRAINING_INFERENCE_DIRECTORY = "/run/training/inference";
29
+ export const TRAINING_INFERENCE_LEDGER = `${TRAINING_INFERENCE_DIRECTORY}/inference.jsonl`;
30
+ /** Judge grant homes: `2000:2000 0700`, denied to every worker uid. Paideia reads it as `PAIDEIA_GROK_GRANT_HOME_ROOT`. */
31
+ export const TRAINING_GRANT_HOME_ROOT = "/run/training/grants";
32
+ /**
33
+ * Private temp for the broker and its relay (uid 2100, outside the organization
34
+ * group), deliberately **outside** `/run/daimon-engine-broker`.
35
+ *
36
+ * Production puts it at `<control root>/tmp`, which is fine there: that root is
37
+ * removed and recreated exactly once, at container start. Training
38
+ * re-provisions the same root on every recycle, and the launch mounts this
39
+ * directory as its own tmpfs — so a `tmp/` inside the cleared root is a *mount
40
+ * point*, and clearing a mount point fails `EBUSY`. A live P8 launch died
41
+ * exactly there. Its own tmpfs under `/run/training` is never a wipe target and
42
+ * is denied to every worker uid.
43
+ */
44
+ export const TRAINING_BROKER_TMPDIR = "/run/training/broker-tmp";
45
+ export const TRAINING_SUPERVISOR_DIRECTORY = "/run/training/supervisor";
46
+ export const TRAINING_SUPERVISOR_SOCKET = `${TRAINING_SUPERVISOR_DIRECTORY}/control.sock`;
47
+ export const TRAINING_SUPERVISOR_LOG = `${TRAINING_SUPERVISOR_DIRECTORY}/supervisor.log`;
48
+ export const TRAINING_WORKER_ROOT = DAIMON_WORKER_ROOT;
49
+ /**
50
+ * Paideia's own fixed container paths (`containerPaths` in its native launch
51
+ * schema). They are *not* individual deny entries: Grok 1.0.34 materializes
52
+ * every `deny` target inside bubblewrap as the worker uid, and it cannot
53
+ * create a file inside `/run/paideia`, which belongs to uid 2000 alone. The
54
+ * single `/run/paideia` mask below covers all of them, which is also stronger
55
+ * — a file Paideia adds later is covered without re-provisioning the slot.
56
+ */
57
+ export const TRAINING_CALLER_PROTECTED_PATHS = [
58
+ `${TRAINING_PAIDEIA_ROOT}/config.json`,
59
+ `${TRAINING_PAIDEIA_ROOT}/control`,
60
+ `${TRAINING_PAIDEIA_ROOT}/launch.json`,
61
+ `${TRAINING_PAIDEIA_ROOT}/token`,
62
+ `${TRAINING_PAIDEIA_ROOT}/env`,
63
+ `${TRAINING_PAIDEIA_ROOT}/preparation.json`,
64
+ `${TRAINING_PAIDEIA_ROOT}/repair.json`
65
+ ];
66
+ /**
67
+ * `paideia.daimon-native.launch.v2`'s `broker.evaluatorPaths`, in full.
68
+ *
69
+ * This is not a summary of the five roles — it is the **whole** set of deny
70
+ * entries this container adds beyond Daimon's own protected paths, because
71
+ * Paideia's worker resolves the projection from exactly
72
+ * `[...new Set(broker.evaluatorPaths.map(row => row.path))].sort()`. A launch
73
+ * that carried only the five roles made Daimon hash a different deny list than
74
+ * the one provisioning wrote, and a live run died on
75
+ * `Grok broker projection digest differs from the launch receipt`.
76
+ *
77
+ * `role` is Paideia's closed five-value enum and may repeat; only `path` is
78
+ * unique. The four roles with a dedicated path keep it, and everything else is
79
+ * tagged `context` — the caller-state role — since there is no other way to
80
+ * carry a path through that contract.
81
+ */
82
+ export const TRAINING_SLOTS_FILE = `${TRAINING_PAIDEIA_ROOT}/slots.json`;
83
+ export const TRAINING_SLOTS_VERSION = "spawnfile.training-slots.v1";
84
+ export const TRAINING_DEFAULT_SLOTS = 4;
85
+ export const TRAINING_MAX_SLOTS = 8;
86
+ /** 100 ports per slot: offsets 0=Moltnet, 1=worker control, 2=bridge; 3..99 reserved. */
87
+ export const TRAINING_PORT_BASE = 20_000;
88
+ export const TRAINING_PORT_STRIDE = 100;
89
+ export const TRAINING_BROKER_SOCKET_PATHS = [
90
+ DAIMON_GROK_ENGINE_BROKER.controlSocketPath, DAIMON_GROK_ENGINE_BROKER.backendSocketPath,
91
+ DAIMON_GROK_ENGINE_BROKER.launcherSocketPath
92
+ ];
93
+ export const TRAINING_TURN_STORE_ROOT = "/run/training/turns";
94
+ /** Persistent, broker-only run counter; never part of a slot recycle. */
95
+ export const TRAINING_RUN_REQUEST_STORE = "/run/training/request-budget";
96
+ export const assertTrainingSlotCount = (slots) => {
97
+ if (!Number.isInteger(slots) || slots < 1 || slots > TRAINING_MAX_SLOTS)
98
+ throw Error("Training slots must be an integer from 1 to 8");
99
+ return slots;
100
+ };
101
+ export const trainingSlotPaths = (slot) => {
102
+ if (!Number.isInteger(slot) || slot < 0 || slot >= TRAINING_MAX_SLOTS)
103
+ throw Error("Training slot index must be an integer from 0 to 7");
104
+ const root = `/run/training/slots/${slot}`;
105
+ const workerUid = DAIMON_FIRST_WORKER_UID + slot;
106
+ const workerHome = `${TRAINING_WORKER_ROOT}/${workerUid}`;
107
+ const portBase = TRAINING_PORT_BASE + slot * TRAINING_PORT_STRIDE;
108
+ const clockDirectory = `/run/daimon-engine-broker/task-clock/slot-${slot}`;
109
+ return {
110
+ slot, workerUid, root, workerHome, workspace: `${root}/workspace`, runtimeHome: `${root}/runtime-home`,
111
+ state: `${root}/state`, acceptanceStore: `${root}/state/wake-acceptance`,
112
+ turns: `${TRAINING_TURN_STORE_ROOT}/slot-${slot}`, usageDirectory: `${root}/usage`, usageLedger: `${root}/usage/usage.jsonl`,
113
+ preflightReceipt: `${root}/preflight.json`, generationFile: `${root}/generation.json`,
114
+ sealedInputsAttestation: `${root}/sealed-inputs.json`, privateTmp: `${workerHome}/tmp`,
115
+ clockDirectory, clockFile: `${clockDirectory}/faketime`,
116
+ ports: { base: portBase, stride: TRAINING_PORT_STRIDE, moltnet: portBase, workerControl: portBase + 1, bridge: portBase + 2 }
117
+ };
118
+ };
119
+ /** The complete additional projection deny set. Sibling roots and homes never nest with own masks. */
120
+ export const trainingEvaluatorPaths = (slot, slots) => {
121
+ assertTrainingSlotCount(slots);
122
+ if (slot >= slots)
123
+ throw Error("Training slot is outside the declared pool");
124
+ const own = trainingSlotPaths(slot);
125
+ return [
126
+ { role: "run-root", path: TRAINING_RUN_ROOT },
127
+ { role: "sealed-inputs", path: TRAINING_SEALED_INPUTS_ROOT },
128
+ { role: "judge-home", path: TRAINING_GRANT_HOME_ROOT },
129
+ { role: "slot-ledger", path: own.usageDirectory },
130
+ ...[TRAINING_PAIDEIA_ROOT, TRAINING_BROKER_TMPDIR, TRAINING_INFERENCE_DIRECTORY,
131
+ TRAINING_TURN_STORE_ROOT, TRAINING_RUN_REQUEST_STORE, TRAINING_SUPERVISOR_DIRECTORY,
132
+ ...TRAINING_BROKER_SOCKET_PATHS,
133
+ path.posix.dirname(DAIMON_GROK_ENGINE_BROKER.registrationPath),
134
+ DAIMON_GROK_TURN_USAGE_LEDGER.directoryPath, DAIMON_WAKE_FUSE_DIRECTORY,
135
+ ...Array.from({ length: slots }, (_, i) => trainingSlotPaths(i)).filter(p => p.slot !== slot)
136
+ .flatMap(p => [p.root, p.workerHome, p.clockDirectory])
137
+ ].map(path => ({ role: "context", path }))
138
+ ];
139
+ };
140
+ export const trainingSlotDescriptors = (slots = TRAINING_DEFAULT_SLOTS) => Array.from({ length: assertTrainingSlotCount(slots) }, (_, slot) => ({
141
+ ...trainingSlotPaths(slot), evaluatorPaths: trainingEvaluatorPaths(slot, slots),
142
+ containerPaths: TRAINING_CALLER_PROTECTED_PATHS.map(path => ({ path })),
143
+ controlRoot: trainingSlotPaths(slot).state
144
+ }));
145
+ export const trainingSlotsDocument = (slots = TRAINING_DEFAULT_SLOTS) => ({
146
+ schema: TRAINING_SLOTS_VERSION,
147
+ slots: trainingSlotDescriptors(slots).map(p => ({
148
+ index: p.slot, workerUid: p.workerUid,
149
+ // Paideia owns a runtime-neutral lease pool: its strict descriptor carries opaque named paths.
150
+ roots: {
151
+ ...Object.fromEntries(Object.entries(p).filter((entry) => typeof entry[1] === "string")),
152
+ home: p.runtimeHome, control: p.state, context: TRAINING_PAIDEIA_ROOT,
153
+ ...Object.fromEntries(p.evaluatorPaths.map((entry, index) => [`evaluator:${entry.role}:${index}`, entry.path])),
154
+ ...Object.fromEntries(p.containerPaths.map((entry, index) => [`container:${index}`, entry.path]))
155
+ },
156
+ ports: { base: p.ports.base, count: p.ports.stride }
157
+ }))
158
+ });
159
+ /** Both sides derive the descriptor bytes; a stale or edited bind must never certify a different pool. */
160
+ export const assertTrainingSlotsDocument = (value, slots) => {
161
+ if (JSON.stringify(value) !== JSON.stringify(trainingSlotsDocument(slots)))
162
+ throw Error("Training slots manifest differs from the broker declaration");
163
+ };
164
+ /** Shared deny targets exist before worker attestation; no per-slot subtree is touched here. */
165
+ export const TRAINING_OPTIONAL_DENY_DIRECTORIES = [
166
+ TRAINING_BROKER_TMPDIR, TRAINING_INFERENCE_DIRECTORY, TRAINING_TURN_STORE_ROOT,
167
+ TRAINING_SUPERVISOR_DIRECTORY, TRAINING_GRANT_HOME_ROOT,
168
+ DAIMON_GROK_TURN_USAGE_LEDGER.directoryPath, DAIMON_WAKE_FUSE_DIRECTORY
169
+ ];
170
+ /**
171
+ * Deny entries a launch may legitimately not have mounted. Everything else must
172
+ * exist before a worker turn: Grok 1.0.34 creates an absent `deny` target as
173
+ * the worker uid inside bubblewrap and refuses the whole profile when it
174
+ * cannot, so provisioning materializes every other entry itself.
175
+ */
176
+ export const TRAINING_DEFERRED_DENY_PATHS = [
177
+ // Docker materializes both host binds before the entrypoint runs. They sit on the read-only image
178
+ // root, which root cannot create into, so provisioning must tolerate a launch that declared neither.
179
+ TRAINING_RUN_ROOT,
180
+ TRAINING_SEALED_INPUTS_ROOT
181
+ ];
182
+ /**
183
+ * Deny entries the launch binds from the host, named so a refusal can say why.
184
+ *
185
+ * Only the run root is one. The sealed inputs root is **not**: the launch binds
186
+ * each declared input at `/run/training/inputs/<id>`, so `/run/training/inputs`
187
+ * itself is the binds' *parent*, a directory on the read-only image root — and
188
+ * that is exactly what makes it sealable (see `TRAINING_SEALED_DENY_PATHS`).
189
+ *
190
+ * Being a host bind is no longer a waiver on its own. On Docker Desktop and
191
+ * Colima a bind lands on virtiofs/grpcfuse, which ignores `chown`, and there a
192
+ * worker-uid probe carries no information; on a Linux daemon over ext4, xfs,
193
+ * btrfs or overlay the same bind enforces ownership and the probe is real. The
194
+ * canary resolver asks the backing filesystem rather than this list, which is
195
+ * why the documented `refuse` default is reachable at all.
196
+ */
197
+ export const TRAINING_HOST_BIND_DENY_PATHS = [TRAINING_RUN_ROOT, DAIMON_GROK_SUBSCRIPTION_REALM.bootstrapMountPath];
198
+ /**
199
+ * Deny entries whose denial must be proven by the kernel under **every**
200
+ * policy, because the experiment's central claim depends on them.
201
+ *
202
+ * `/run/training/inputs` holds the sealed train and test datasets. A bubblewrap
203
+ * `deny` mask is not a boundary the subject cannot lift: the pinned seccomp
204
+ * profile must allow `clone/unshare/mount/umount2/pivot_root/setns` for
205
+ * bubblewrap itself, and the container runs `apparmor=unconfined`, so a
206
+ * worker-uid process can open a user + mount namespace of its own and either
207
+ * detach the mask or bind the mask's parent somewhere fresh.
208
+ *
209
+ * What survives that is DAC on the datasets' ancestor. The image bakes this
210
+ * directory `0:<organization gid> 0750` on the read-only root, so:
211
+ *
212
+ * - the worker uid is in neither the owner nor the group class and loses
213
+ * search permission on the one directory every dataset read must traverse;
214
+ * - the inode is owned by real uid 0, which a `unshare --map-root-user`
215
+ * namespace does not map, so `CAP_DAC_OVERRIDE` there cannot override it;
216
+ * - the root filesystem is read-only, so nothing in the container — root
217
+ * included — can loosen the mode after the image is built.
218
+ *
219
+ * Provisioning asserts the mode and then attacks it as the worker uid, and the
220
+ * canary resolver refuses the slot rather than certifying one of these on the
221
+ * sandbox profile alone.
222
+ */
223
+ export const TRAINING_SEALED_DENY_PATHS = [TRAINING_SEALED_INPUTS_ROOT];
224
+ /** Spawnfile-owned per-route seal attestation, written by provisioning beside the slot preflight receipt. */
225
+ /** The image-baked identity of the sealed inputs root, asserted before every slot and never writable at runtime. */
226
+ export const TRAINING_SEALED_INPUTS_IDENTITY = { uid: 0, gid: DAIMON_ORGANIZATION_UID, mode: "750" };
227
+ /**
228
+ * What a recycle removes outright, and what it only empties.
229
+ *
230
+ * Nothing the launch mounts may be at or below any of these. A mount point
231
+ * cannot be unlinked while it is mounted, so a wipe target holding one aborts
232
+ * the recycle — which is how the broker/relay `TMPDIR` took down a live launch
233
+ * when it still lived at `<control root>/tmp`. `paths.test.ts` enforces that
234
+ * against the launch's own mount list; the rendered shell skips mount points
235
+ * anyway, so an undeclared one degrades to "left in place and reported" rather
236
+ * than a failed provision.
237
+ */
238
+ export const trainingWipeTargets = (slot) => {
239
+ const p = trainingSlotPaths(slot);
240
+ return [p.runtimeHome, p.state, p.preflightReceipt, p.sealedInputsAttestation];
241
+ };
242
+ /** Broker-owned turns and clocks are reset through its control seam, never by filesystem deletion. */
243
+ export const trainingClearTargets = (slot) => {
244
+ const p = trainingSlotPaths(slot);
245
+ return [p.workspace, p.usageDirectory];
246
+ };
247
+ export const TRAINING_REALM_MOUNT = DAIMON_GROK_SUBSCRIPTION_REALM.durableMountPath;
248
+ export const TRAINING_BOOTSTRAP_MOUNT = DAIMON_GROK_SUBSCRIPTION_REALM.bootstrapMountPath;
249
+ export { DAIMON_BROKER_UID, DAIMON_ORGANIZATION_UID };
@@ -0,0 +1,51 @@
1
+ import { type ChildProcess } from "node:child_process";
2
+ interface SocketIdentity {
3
+ dev: number;
4
+ ino: number;
5
+ ctimeMs: number;
6
+ isSocket(): boolean;
7
+ }
8
+ /** An existing placement socket is not readiness. Its inode (or reuse timestamp) must change. */
9
+ export declare const isStartedBrokerSocket: (current: SocketIdentity | undefined, previous: SocketIdentity | undefined) => boolean;
10
+ export declare const DAIMON_RUNTIME_ROOT = "/opt/spawnfile/runtime-installs/daimon";
11
+ /** `00000000000000c1` = CHOWN|SETGID|SETUID, the launcher's bounding set after `setpriv`. */
12
+ export declare const LAUNCHER_CAPABILITY_BOUND = "00000000000000c1";
13
+ export declare const DROPPED_CAPABILITY_BOUND = "0000000000000000";
14
+ export interface BrokerChild {
15
+ name: string;
16
+ pid: number;
17
+ child: ChildProcess;
18
+ uid: number;
19
+ capBnd: string;
20
+ }
21
+ /**
22
+ * The three broker processes, in the order and with the identities production
23
+ * starts them: the root launcher (which alone may `setuid` to a worker uid),
24
+ * the broker backend as uid 2100, and the native control relay as uid 2100.
25
+ * Each one runs with the same bounding set the production entrypoint verifies,
26
+ * and the broker and relay carry their own `TMPDIR` because shared `/tmp` is
27
+ * closed to every process outside the organization group.
28
+ */
29
+ export declare const brokerProcessPlan: () => {
30
+ name: string;
31
+ argv: string[];
32
+ socket: string;
33
+ uid: number;
34
+ capBnd: string;
35
+ }[];
36
+ export interface StartBrokerOptions {
37
+ timeoutMs?: number;
38
+ pollMs?: number;
39
+ procRoot?: string;
40
+ log(line: string): void;
41
+ }
42
+ /**
43
+ * Starts all three, then proves each one reached its socket *and* its expected
44
+ * post-drop identity before the next starts. A broker that is alive but still
45
+ * root, or a relay whose socket never appeared, fails the slot here rather
46
+ * than at the first trial wake.
47
+ */
48
+ export declare const startBrokerProcesses: (options: StartBrokerOptions) => Promise<BrokerChild[]>;
49
+ /** Graceful stop in reverse start order: relay, backend, launcher. `SIGKILL` only after the grace window. */
50
+ export declare const stopBrokerProcesses: (children: readonly BrokerChild[], log: (line: string) => void, graceMs?: number) => Promise<void>;
51
+ export {};
@@ -0,0 +1,102 @@
1
+ import { spawn } from "node:child_process";
2
+ import { readFile, stat } from "node:fs/promises";
3
+ import { setTimeout as pause } from "node:timers/promises";
4
+ import { SpawnfileError } from "../../../shared/index.js";
5
+ import { DAIMON_GROK_ENGINE_BROKER } from "../../../runtime/daimon/contractManifest.js";
6
+ import { DAIMON_BROKER_UID, TRAINING_BROKER_TMPDIR } from "./paths.js";
7
+ /** An existing placement socket is not readiness. Its inode (or reuse timestamp) must change. */
8
+ export const isStartedBrokerSocket = (current, previous) => current?.isSocket() === true && (!previous || current.dev !== previous.dev || current.ino !== previous.ino || current.ctimeMs !== previous.ctimeMs);
9
+ export const DAIMON_RUNTIME_ROOT = "/opt/spawnfile/runtime-installs/daimon";
10
+ /** `00000000000000c1` = CHOWN|SETGID|SETUID, the launcher's bounding set after `setpriv`. */
11
+ export const LAUNCHER_CAPABILITY_BOUND = "00000000000000c1";
12
+ export const DROPPED_CAPABILITY_BOUND = "0000000000000000";
13
+ const setpriv = (args) => ["setpriv", ...args];
14
+ /**
15
+ * The three broker processes, in the order and with the identities production
16
+ * starts them: the root launcher (which alone may `setuid` to a worker uid),
17
+ * the broker backend as uid 2100, and the native control relay as uid 2100.
18
+ * Each one runs with the same bounding set the production entrypoint verifies,
19
+ * and the broker and relay carry their own `TMPDIR` because shared `/tmp` is
20
+ * closed to every process outside the organization group.
21
+ */
22
+ export const brokerProcessPlan = () => [
23
+ {
24
+ name: "engine broker launcher", socket: DAIMON_GROK_ENGINE_BROKER.launcherSocketPath, uid: 0, capBnd: LAUNCHER_CAPABILITY_BOUND,
25
+ argv: setpriv(["--inh-caps=-all", "--ambient-caps=-all", "--bounding-set=-all,+chown,+setuid,+setgid", "--", DAIMON_GROK_ENGINE_BROKER.nativeExecutablePath])
26
+ },
27
+ {
28
+ name: "engine broker backend", socket: DAIMON_GROK_ENGINE_BROKER.backendSocketPath, uid: DAIMON_BROKER_UID, capBnd: DROPPED_CAPABILITY_BOUND,
29
+ argv: setpriv(["--clear-groups", `--reuid=${DAIMON_BROKER_UID}`, `--regid=${DAIMON_BROKER_UID}`, "--inh-caps=-all", "--ambient-caps=-all", "--bounding-set=-all",
30
+ "--", "env", `TMPDIR=${TRAINING_BROKER_TMPDIR}`, `${DAIMON_RUNTIME_ROOT}/bin/daimon-runtime`, "engine-broker", "serve"])
31
+ },
32
+ {
33
+ name: "engine broker control relay", socket: DAIMON_GROK_ENGINE_BROKER.controlSocketPath, uid: DAIMON_BROKER_UID, capBnd: DROPPED_CAPABILITY_BOUND,
34
+ argv: setpriv(["--inh-caps=-all", "--ambient-caps=-all", "--bounding-set=-all,+chown,+setuid,+setgid,+setpcap", "--", "env", `TMPDIR=${TRAINING_BROKER_TMPDIR}`,
35
+ DAIMON_GROK_ENGINE_BROKER.nativeExecutablePath, "--relay"])
36
+ }
37
+ ];
38
+ const processIdentity = async (pid, procRoot) => {
39
+ const status = await readFile(`${procRoot}/${pid}/status`, "utf8");
40
+ return {
41
+ uid: /^Uid:\s+(\d+)/mu.exec(status)?.[1] ?? "",
42
+ capBnd: /^CapBnd:\s+([0-9a-f]+)/mu.exec(status)?.[1] ?? ""
43
+ };
44
+ };
45
+ /**
46
+ * Starts all three, then proves each one reached its socket *and* its expected
47
+ * post-drop identity before the next starts. A broker that is alive but still
48
+ * root, or a relay whose socket never appeared, fails the slot here rather
49
+ * than at the first trial wake.
50
+ */
51
+ export const startBrokerProcesses = async (options) => {
52
+ const timeoutMs = options.timeoutMs ?? 60_000, pollMs = options.pollMs ?? 100, procRoot = options.procRoot ?? "/proc";
53
+ const started = [];
54
+ const deadline = Date.now() + timeoutMs;
55
+ try {
56
+ for (const entry of brokerProcessPlan()) {
57
+ const previousSocket = await stat(entry.socket).catch(() => undefined);
58
+ const child = spawn(entry.argv[0], entry.argv.slice(1), { stdio: ["ignore", "inherit", "inherit"] });
59
+ if (child.pid === undefined)
60
+ throw new SpawnfileError("runtime_error", `${entry.name} did not start`);
61
+ let exited = false;
62
+ child.once("exit", (code) => { exited = true; options.log(`${entry.name} exited with status ${code ?? "signal"}`); });
63
+ started.push({ name: entry.name, pid: child.pid, child, uid: entry.uid, capBnd: entry.capBnd });
64
+ for (;;) {
65
+ if (exited)
66
+ throw new SpawnfileError("runtime_error", `${entry.name} exited before readiness`);
67
+ if (Date.now() > deadline)
68
+ throw new SpawnfileError("runtime_error", `${entry.name} readiness timed out`);
69
+ const socket = await stat(entry.socket).catch(() => undefined);
70
+ if (isStartedBrokerSocket(socket, previousSocket)) {
71
+ const identity = await processIdentity(child.pid, procRoot);
72
+ if (identity.uid === String(entry.uid) && identity.capBnd === entry.capBnd)
73
+ break;
74
+ }
75
+ await pause(pollMs);
76
+ }
77
+ options.log(`${entry.name} ready pid=${child.pid} uid=${entry.uid} capbnd=${entry.capBnd}`);
78
+ }
79
+ return started;
80
+ }
81
+ catch (error) {
82
+ await stopBrokerProcesses(started, options.log);
83
+ throw error;
84
+ }
85
+ };
86
+ /** Graceful stop in reverse start order: relay, backend, launcher. `SIGKILL` only after the grace window. */
87
+ export const stopBrokerProcesses = async (children, log, graceMs = 5_000) => {
88
+ for (const entry of [...children].reverse()) {
89
+ if (entry.child.exitCode !== null || entry.child.signalCode !== null)
90
+ continue;
91
+ entry.child.kill("SIGTERM");
92
+ const deadline = Date.now() + graceMs;
93
+ while (entry.child.exitCode === null && entry.child.signalCode === null && Date.now() < deadline)
94
+ await pause(25);
95
+ if (entry.child.exitCode === null && entry.child.signalCode === null) {
96
+ log(`${entry.name} did not stop gracefully; killing`);
97
+ entry.child.kill("SIGKILL");
98
+ }
99
+ while (entry.child.exitCode === null && entry.child.signalCode === null)
100
+ await pause(25);
101
+ }
102
+ };
@@ -0,0 +1,52 @@
1
+ import { type DaimonGrokBrokerModel, type DaimonGrokBrokerReasoningEffort } from "../../../runtime/daimon/contractManifest.js";
2
+ import type { DaimonGrokRegistration } from "../../containerDaimonGrokWorkerRender.js";
3
+ import type { TrainingBrokerDeclaration } from "./declaration.js";
4
+ /**
5
+ * The slice of Daimon's public `@noopolis/daimon/runtime` export the slot
6
+ * supervisor needs. Daimon stays the resolver: the slot preflight receipt binds
7
+ * `projection_sha256`, and a second implementation of that digest would fork
8
+ * the contract the moment either side changed a member.
9
+ */
10
+ export interface DaimonProjectionModule {
11
+ resolveOrganizationGrokBrokerProjection(config: unknown, agentId: string, options: Record<string, unknown>): {
12
+ version: string;
13
+ profileSha256: string;
14
+ denyPaths: readonly string[];
15
+ };
16
+ grokBrokerProjectionSha256(projection: unknown): string;
17
+ GROK_ENGINE_BROKER: {
18
+ projectionVersion: string;
19
+ slotPreflightVersion: string;
20
+ nativeAbiVersion: number;
21
+ controlProtocolVersion: string;
22
+ };
23
+ }
24
+ export declare const loadDaimonProjectionModule: (load?: () => Promise<unknown>) => Promise<DaimonProjectionModule>;
25
+ /**
26
+ * The one-agent organization runtime config the training slot's projection is
27
+ * resolved from.
28
+ *
29
+ * It is a projection *input*, never a runtime config Daimon hosts: the trial's
30
+ * real config is Paideia's. Only `agents[].id`, `workspacePath`,
31
+ * `runtimeHomePath`, the engine's declared model and effort, and the *absence*
32
+ * of peers reach `resolveOrganizationGrokBrokerProjection`, so this minimal
33
+ * config and Paideia's fuller one compute the same projection digest. A peer
34
+ * agent would change Daimon's protected set and the digest with it, which is
35
+ * why each slot resolves its own one-agent projection with explicit sibling deny paths.
36
+ */
37
+ export declare const trainingOrganizationRuntimeConfig: (declaration: {
38
+ agentId: string;
39
+ model: DaimonGrokBrokerModel;
40
+ reasoningEffort: DaimonGrokBrokerReasoningEffort;
41
+ }, slot?: number) => Record<string, unknown>;
42
+ export interface TrainingGrokProjection {
43
+ projection: Record<string, unknown>;
44
+ projectionSha256: string;
45
+ }
46
+ /**
47
+ * Resolve the slot's public Grok broker projection through Daimon, over exactly
48
+ * the provisioned registration. A profile digest that differs from Daimon's own
49
+ * render is refused there, so the receipt can never certify a slot whose deny
50
+ * list drifted from the bytes provisioning wrote.
51
+ */
52
+ export declare const resolveTrainingGrokProjection: (declaration: TrainingBrokerDeclaration, registration: DaimonGrokRegistration, daimon: DaimonProjectionModule) => Promise<TrainingGrokProjection>;
@@ -0,0 +1,88 @@
1
+ import { SpawnfileError } from "../../../shared/index.js";
2
+ import { DAIMON_GROK_ENGINE_BROKER } from "../../../runtime/daimon/contractManifest.js";
3
+ import { trainingSlotPaths } from "./paths.js";
4
+ /** Indirect specifier: Daimon is an in-image runtime peer of the training container, never a Spawnfile source dependency. */
5
+ const loadRuntime = async () => {
6
+ const packageName = "@noopolis/daimon/runtime";
7
+ return import(packageName);
8
+ };
9
+ export const loadDaimonProjectionModule = async (load = loadRuntime) => {
10
+ let daimon;
11
+ try {
12
+ daimon = await load();
13
+ }
14
+ catch {
15
+ throw new SpawnfileError("runtime_error", "The training image must install @noopolis/daimon with its public /runtime export");
16
+ }
17
+ if (typeof daimon.resolveOrganizationGrokBrokerProjection !== "function" || typeof daimon.grokBrokerProjectionSha256 !== "function"
18
+ || daimon.GROK_ENGINE_BROKER?.projectionVersion !== DAIMON_GROK_ENGINE_BROKER.projectionVersion
19
+ || daimon.GROK_ENGINE_BROKER.controlProtocolVersion !== DAIMON_GROK_ENGINE_BROKER.controlProtocolVersion
20
+ || daimon.GROK_ENGINE_BROKER.slotPreflightVersion !== DAIMON_GROK_ENGINE_BROKER.slotPreflightVersion
21
+ || daimon.GROK_ENGINE_BROKER.nativeAbiVersion !== DAIMON_GROK_ENGINE_BROKER.nativeAbiVersion) {
22
+ throw new SpawnfileError("runtime_error", "The installed Daimon Grok broker contract differs from this compiler's vendored manifest");
23
+ }
24
+ return daimon;
25
+ };
26
+ /**
27
+ * The one-agent organization runtime config the training slot's projection is
28
+ * resolved from.
29
+ *
30
+ * It is a projection *input*, never a runtime config Daimon hosts: the trial's
31
+ * real config is Paideia's. Only `agents[].id`, `workspacePath`,
32
+ * `runtimeHomePath`, the engine's declared model and effort, and the *absence*
33
+ * of peers reach `resolveOrganizationGrokBrokerProjection`, so this minimal
34
+ * config and Paideia's fuller one compute the same projection digest. A peer
35
+ * agent would change Daimon's protected set and the digest with it, which is
36
+ * why each slot resolves its own one-agent projection with explicit sibling deny paths.
37
+ */
38
+ export const trainingOrganizationRuntimeConfig = (declaration, slot = 0) => ({
39
+ version: "noopolis.daimon.organization-runtime.v1",
40
+ host: { bindHost: "127.0.0.1", port: trainingSlotPaths(slot).ports.workerControl, controlTokenEnv: "SPAWNFILE_DAIMON_CONTROL_TOKEN" },
41
+ agents: [{
42
+ id: declaration.agentId,
43
+ name: declaration.agentId,
44
+ instructions: "training subject",
45
+ workspacePath: trainingSlotPaths(slot).workspace,
46
+ runtimeHomePath: trainingSlotPaths(slot).runtimeHome,
47
+ engine: { kind: "grok", model: declaration.model, reasoningEffort: declaration.reasoningEffort }
48
+ }]
49
+ });
50
+ /**
51
+ * Resolve the slot's public Grok broker projection through Daimon, over exactly
52
+ * the provisioned registration. A profile digest that differs from Daimon's own
53
+ * render is refused there, so the receipt can never certify a slot whose deny
54
+ * list drifted from the bytes provisioning wrote.
55
+ */
56
+ export const resolveTrainingGrokProjection = async (declaration, registration, daimon) => {
57
+ const projection = daimon.resolveOrganizationGrokBrokerProjection(trainingOrganizationRuntimeConfig(declaration, registration.slot), declaration.agentId, {
58
+ slot: registration.slot,
59
+ workerConfigVariant: "clocked",
60
+ workerUid: registration.uid,
61
+ workerHomePath: registration.home,
62
+ architecture: declaration.architecture,
63
+ usageLedgerPath: registration.usageLedgerPath,
64
+ limits: declaration.limits,
65
+ // The mask that protects the wake-acceptance store is the slot state root it lives in: the store's
66
+ // own parent is `2000:2000 0700`, so bubblewrap could not materialize a deny target inside it as
67
+ // the worker uid. Every party that recomputes this projection must pass the same value.
68
+ acceptanceStorePath: trainingSlotPaths(registration.slot).state,
69
+ denyPaths: registration.denyPaths,
70
+ seccompProfileSha256: declaration.seccompProfileSha256,
71
+ profileSha256: registration.profileSha256
72
+ });
73
+ const clock = DAIMON_GROK_ENGINE_BROKER.worker.taskClock;
74
+ const expectedClock = { ...clock, directoryPath: clock.slotDirectoryPattern.replace("{slot}", String(registration.slot)),
75
+ timestampFilePath: clock.slotFilePattern.replace("{slot}", String(registration.slot)) };
76
+ const actualClock = projection.taskClock;
77
+ if (registration.configVariant !== "clocked" || projection.version !== DAIMON_GROK_ENGINE_BROKER.projectionVersion
78
+ || projection.profileSha256 !== registration.profileSha256 || actualClock === undefined
79
+ || Object.entries(expectedClock).some(([key, value]) => actualClock[key] !== value)
80
+ || projection.workerConfigVariant !== "clocked" || projection.workerConfigSha256 !== registration.configSha256) {
81
+ throw new SpawnfileError("runtime_error", "Daimon's clocked worker config differs from the provisioned registration");
82
+ }
83
+ const denied = [...projection.denyPaths];
84
+ if (denied.length !== registration.denyPaths.length || denied.some((entry, index) => entry !== registration.denyPaths[index])) {
85
+ throw new SpawnfileError("runtime_error", "Daimon's Grok broker projection deny list differs from the provisioned sandbox profile");
86
+ }
87
+ return { projection, projectionSha256: daimon.grokBrokerProjectionSha256(projection) };
88
+ };
@@ -0,0 +1,78 @@
1
+ import type { DaimonGrokRegistration } from "../../containerDaimonGrokWorkerRender.js";
2
+ /**
3
+ * Every directory the training slot owns, with the identity that must hold it.
4
+ *
5
+ * The two ledger directories are setgid to the organization group on purpose:
6
+ * the broker writes its rows `0640` owned by the broker group, so without
7
+ * `2100:2000 2750` uid 2000 — Paideia, DSPy and every judge — cannot read a
8
+ * single subject usage row or inference row it paid for.
9
+ */
10
+ export declare const trainingSlotDirectories: (slot?: number) => readonly {
11
+ path: string;
12
+ mode: string;
13
+ uid: number;
14
+ gid: number;
15
+ }[];
16
+ /**
17
+ * The fixed identities the slot needs, checked rather than created.
18
+ *
19
+ * The broker-capable training container runs on a read-only root, so
20
+ * `/etc/passwd` and `/etc/group` cannot be written at start-up the way the
21
+ * production Daimon entrypoint writes them. The image bakes uid/gid 2000, 2100
22
+ * and the worker uid instead, and this refuses to provision a slot in an image
23
+ * that did not.
24
+ */
25
+ export declare const renderTrainingIdentities: (slots?: number) => string[];
26
+ /** Full container provisioning runs exactly once, before any broker process starts. */
27
+ export declare const renderTrainingBrokerProvisioning: (input: DaimonGrokRegistration | readonly DaimonGrokRegistration[], maxRunRequests?: number) => string[];
28
+ /** Reuse the audited worker renderer; never touch service config, credentials, shared temps or siblings. */
29
+ export declare const renderTrainingSlotProvisioning: (registration: DaimonGrokRegistration) => string[];
30
+ /**
31
+ * The sealed-inputs seal, asserted and then attacked before any slot is used.
32
+ *
33
+ * The declared datasets are bind-mounted at `/run/training/inputs/<id>`, so
34
+ * `/run/training/inputs` is their common ancestor and the only inode in the
35
+ * chain the container controls: it lives on the read-only image root, the image
36
+ * bakes it `0:<organization gid> 0750`, and nothing in the container can widen
37
+ * it afterwards. The worker uid is in neither its owner nor its group class, so
38
+ * it loses *search* permission on the directory every dataset read must
39
+ * traverse.
40
+ *
41
+ * Four attacker routes, not a cooperating tool's read: a direct
42
+ * read/search/list; a user + mount namespace of the worker's own with the
43
+ * bubblewrap mask and its parent lazily unmounted; a fresh `mount --bind` of
44
+ * `/run/training` made inside that namespace; and, per dataset, a `mount --bind`
45
+ * of the dataset's *own* mount, which carries no mask and — unlike its parent —
46
+ * is not refused for locked children. A live control container left at Docker's
47
+ * own `0755 root:root` hands the held-out answer key to uid 2200 through routes
48
+ * one, two and four (`.runtime/sealed-inputs-dac/EVIDENCE.md`).
49
+ *
50
+ * Every route reports one verdict, and the verdicts are deliberately not
51
+ * interchangeable:
52
+ *
53
+ * - `reachable` — the bytes were read. Refuse.
54
+ * - `denied at-read` — the route ran and the kernel's permission check refused
55
+ * the open or the list. This is the DAC seal doing the work.
56
+ * - `denied at-mount` — the mount the route needs was refused although the
57
+ * syscall is available.
58
+ * - `unavailable seccomp` / `unavailable kernel` — the worker uid cannot open
59
+ * the namespace the route needs at all, so the route provably cannot happen.
60
+ * That is a *stronger* denial than DAC, and naming which layer refused is
61
+ * the point: `EPERM` from a seccomp filter and `EPERM` from a kernel or LSM
62
+ * policy are indistinguishable by errno, so the mechanism is derived from
63
+ * the pinned profile Spawnfile ships and the declaration's digest binds
64
+ * (`seccompRoutes.ts`), never guessed.
65
+ * - anything else — no verdict. Refuse. "Provably cannot happen" and "could
66
+ * not tell" must never collapse into one pass.
67
+ *
68
+ * The probe's workspace is the worker's **private** tmp, never `/tmp`: the
69
+ * shared temps are provisioned `root:<organization gid> 1774` so a worker lists
70
+ * names only, and probing from there is what made the first live run refuse
71
+ * every trial on `namespace-rebind reached no verdict` — the `mkdir` failed, not
72
+ * the seal. The private tmp is also the workspace the subject itself has.
73
+ */
74
+ export declare const renderTrainingSealedInputsAssertions: (workerUid?: number, privateTmp?: string, mechanism?: "seccomp" | "kernel") => string[];
75
+ /** Where the broker's own `service.json` lands, so the supervisor can prove the slot it restarted is the slot it provisioned. */
76
+ export declare const TRAINING_SERVICE_CONFIG_PATH: "/etc/daimon-engine-broker/service.json";
77
+ export declare const TRAINING_REGISTRATION_PATH: "/etc/daimon-engine-broker/registrations.bin";
78
+ export declare const TRAINING_BROKER_CONTROL_ROOT: string;