spawnfile 0.1.13 → 0.1.17

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 (950) hide show
  1. package/README.md +61 -121
  2. package/dist/audit/auditCli.d.ts +19 -0
  3. package/dist/audit/auditCli.js +63 -0
  4. package/dist/audit/checks.d.ts +100 -0
  5. package/dist/audit/checks.js +279 -0
  6. package/dist/audit/checksShared.d.ts +74 -0
  7. package/dist/audit/checksShared.js +37 -0
  8. package/dist/audit/generateAudit.d.ts +19 -0
  9. package/dist/audit/generateAudit.js +122 -0
  10. package/dist/audit/index.d.ts +4 -0
  11. package/dist/audit/index.js +4 -0
  12. package/dist/audit/readAudit.d.ts +50 -0
  13. package/dist/audit/readAudit.js +59 -0
  14. package/dist/audit/types.d.ts +40 -0
  15. package/dist/audit/types.js +8 -0
  16. package/dist/auth/credentialEnvFile.d.ts +11 -0
  17. package/dist/auth/credentialEnvFile.js +60 -0
  18. package/dist/auth/credentialProvisioning.d.ts +15 -0
  19. package/dist/auth/credentialProvisioning.js +75 -0
  20. package/dist/auth/credentialProvisioningReceipt.d.ts +28 -0
  21. package/dist/auth/credentialProvisioningReceipt.js +70 -0
  22. package/dist/auth/credentialProvisioningRequest.d.ts +51 -0
  23. package/dist/auth/credentialProvisioningRequest.js +169 -0
  24. package/dist/auth/credentialWorldBindings.d.ts +21 -0
  25. package/dist/auth/credentialWorldBindings.js +104 -0
  26. package/dist/auth/importers.d.ts +10 -0
  27. package/dist/auth/importers.js +29 -4
  28. package/dist/auth/index.d.ts +9 -0
  29. package/dist/auth/index.js +8 -0
  30. package/dist/auth/paths.d.ts +12 -1
  31. package/dist/auth/paths.js +21 -0
  32. package/dist/auth/profileStore.js +9 -9
  33. package/dist/auth/targetSecretSourceAuthor.d.ts +18 -0
  34. package/dist/auth/targetSecretSourceAuthor.js +52 -0
  35. package/dist/auth/targetSecretSourceFsIdentity.d.ts +40 -0
  36. package/dist/auth/targetSecretSourceFsIdentity.js +42 -0
  37. package/dist/auth/targetSecretSourceFsPublish.d.ts +17 -0
  38. package/dist/auth/targetSecretSourceFsPublish.js +51 -0
  39. package/dist/auth/targetSecretSourceFsPublishImmutable.d.ts +17 -0
  40. package/dist/auth/targetSecretSourceFsPublishImmutable.js +468 -0
  41. package/dist/auth/targetSecretSourceFsRead.d.ts +14 -0
  42. package/dist/auth/targetSecretSourceFsRead.js +189 -0
  43. package/dist/auth/targetSecretSourceGrant.d.ts +16 -0
  44. package/dist/auth/targetSecretSourceGrant.js +99 -0
  45. package/dist/auth/targetSecretSourceGrantRecords.d.ts +84 -0
  46. package/dist/auth/targetSecretSourceGrantRecords.js +214 -0
  47. package/dist/auth/targetSecretSourceLifecycle.d.ts +30 -0
  48. package/dist/auth/targetSecretSourceLifecycle.js +52 -0
  49. package/dist/auth/targetSecretSourceOwnerEntropy.d.ts +6 -0
  50. package/dist/auth/targetSecretSourceOwnerEntropy.js +28 -0
  51. package/dist/auth/targetSecretSourceRecordCommon.d.ts +14 -0
  52. package/dist/auth/targetSecretSourceRecordCommon.js +100 -0
  53. package/dist/auth/targetSecretSourceRecordPublish.d.ts +10 -0
  54. package/dist/auth/targetSecretSourceRecordPublish.js +104 -0
  55. package/dist/auth/targetSecretSourceResolver.d.ts +10 -0
  56. package/dist/auth/targetSecretSourceResolver.js +137 -0
  57. package/dist/auth/targetSecretSourceRevoke.d.ts +20 -0
  58. package/dist/auth/targetSecretSourceRevoke.js +92 -0
  59. package/dist/auth/targetSecretSourceRotate.d.ts +19 -0
  60. package/dist/auth/targetSecretSourceRotate.js +121 -0
  61. package/dist/auth/targetSecretSourceVersionRecords.d.ts +49 -0
  62. package/dist/auth/targetSecretSourceVersionRecords.js +166 -0
  63. package/dist/auth/trainingAuth.d.ts +21 -0
  64. package/dist/auth/trainingAuth.js +86 -0
  65. package/dist/auth/types.d.ts +1 -1
  66. package/dist/cli/artifactsCommands.d.ts +27 -0
  67. package/dist/cli/artifactsCommands.js +132 -0
  68. package/dist/cli/authCommands.d.ts +5 -0
  69. package/dist/cli/authCommands.js +230 -0
  70. package/dist/cli/canaryCutoverCommand.d.ts +2 -0
  71. package/dist/cli/canaryCutoverCommand.js +30 -0
  72. package/dist/cli/capabilitiesCommand.d.ts +3 -0
  73. package/dist/cli/capabilitiesCommand.js +12 -0
  74. package/dist/cli/capabilitiesReceipt.d.ts +56 -0
  75. package/dist/cli/capabilitiesReceipt.js +56 -0
  76. package/dist/cli/compileBuildCommands.d.ts +3 -0
  77. package/dist/cli/compileBuildCommands.js +48 -0
  78. package/dist/cli/composedLifecycleContractSet.d.ts +21 -0
  79. package/dist/cli/composedLifecycleContractSet.js +204 -0
  80. package/dist/cli/containerBundleCommand.d.ts +6 -0
  81. package/dist/cli/containerBundleCommand.js +116 -0
  82. package/dist/cli/devCommands.js +2 -0
  83. package/dist/cli/downCommand.d.ts +25 -0
  84. package/dist/cli/downCommand.js +145 -0
  85. package/dist/cli/evidenceExportHelperCommand.d.ts +13 -0
  86. package/dist/cli/evidenceExportHelperCommand.js +51 -0
  87. package/dist/cli/index.js +15 -3
  88. package/dist/cli/lifecycleCommands.d.ts +1 -1
  89. package/dist/cli/lifecycleCommands.js +11 -181
  90. package/dist/cli/lifecycleMachine.d.ts +25 -0
  91. package/dist/cli/lifecycleMachine.js +78 -0
  92. package/dist/cli/lifecyclePlan.d.ts +35 -0
  93. package/dist/cli/lifecyclePlan.js +240 -0
  94. package/dist/cli/lifecyclePlanningCommands.d.ts +3 -0
  95. package/dist/cli/lifecyclePlanningCommands.js +30 -0
  96. package/dist/cli/paideiaDelegation.d.ts +17 -0
  97. package/dist/cli/paideiaDelegation.js +210 -0
  98. package/dist/cli/paideiaSupervisor.d.ts +17 -0
  99. package/dist/cli/paideiaSupervisor.js +48 -0
  100. package/dist/cli/productStateCloneCommand.d.ts +2 -0
  101. package/dist/cli/productStateCloneCommand.js +34 -0
  102. package/dist/cli/runCli.d.ts +19 -2
  103. package/dist/cli/runCli.js +58 -74
  104. package/dist/cli/runPublishCommands.d.ts +3 -0
  105. package/dist/cli/runPublishCommands.js +70 -0
  106. package/dist/cli/statusCommand.d.ts +3 -33
  107. package/dist/cli/statusCommand.js +19 -249
  108. package/dist/cli/statusCommandLive.d.ts +20 -0
  109. package/dist/cli/statusCommandLive.js +188 -0
  110. package/dist/cli/statusCommandOptions.d.ts +40 -0
  111. package/dist/cli/statusCommandOptions.js +42 -0
  112. package/dist/cli/targetCliRoute.d.ts +2 -0
  113. package/dist/cli/targetCliRoute.js +30 -0
  114. package/dist/cli/targetCommands.d.ts +30 -0
  115. package/dist/cli/targetCommands.js +227 -0
  116. package/dist/cli/targetComposedPreparationCommand.d.ts +6 -0
  117. package/dist/cli/targetComposedPreparationCommand.js +39 -0
  118. package/dist/cli/targetConfigPreparedPlan.d.ts +3 -0
  119. package/dist/cli/targetConfigPreparedPlan.js +74 -0
  120. package/dist/cli/targetConfigResolver.d.ts +3 -0
  121. package/dist/cli/targetConfigResolver.js +111 -0
  122. package/dist/cli/targetConfigResolverCommand.d.ts +6 -0
  123. package/dist/cli/targetConfigResolverCommand.js +43 -0
  124. package/dist/cli/targetConfigResolverContracts.d.ts +56 -0
  125. package/dist/cli/targetConfigResolverContracts.js +30 -0
  126. package/dist/cli/targetConfigResolverDocker.d.ts +4 -0
  127. package/dist/cli/targetConfigResolverDocker.js +47 -0
  128. package/dist/cli/targetConfigResolverValidation.d.ts +10 -0
  129. package/dist/cli/targetConfigResolverValidation.js +94 -0
  130. package/dist/cli/targetDefaultArtifactAuthority.d.ts +5 -0
  131. package/dist/cli/targetDefaultArtifactAuthority.js +28 -0
  132. package/dist/cli/targetDefaultAuthorities.d.ts +55 -0
  133. package/dist/cli/targetDefaultAuthorities.js +213 -0
  134. package/dist/cli/targetDefaultConfig.d.ts +75 -0
  135. package/dist/cli/targetDefaultConfig.js +334 -0
  136. package/dist/cli/targetDefaultConfigStdin.d.ts +13 -0
  137. package/dist/cli/targetDefaultConfigStdin.js +221 -0
  138. package/dist/cli/targetDefaultEnvelope.d.ts +1 -0
  139. package/dist/cli/targetDefaultEnvelope.js +13 -0
  140. package/dist/cli/targetDefaultHandlerFactory.d.ts +28 -0
  141. package/dist/cli/targetDefaultHandlerFactory.js +268 -0
  142. package/dist/cli/targetDefaultHandlers.d.ts +21 -0
  143. package/dist/cli/targetDefaultHandlers.js +72 -0
  144. package/dist/cli/targetDefaultJournalAuthority.d.ts +35 -0
  145. package/dist/cli/targetDefaultJournalAuthority.js +135 -0
  146. package/dist/cli/targetDefaultWorldClock.d.ts +4 -0
  147. package/dist/cli/targetDefaultWorldClock.js +14 -0
  148. package/dist/cli/targetDefaultWorldQueries.d.ts +5 -0
  149. package/dist/cli/targetDefaultWorldQueries.js +11 -0
  150. package/dist/cli/targetDefaultWorldReadiness.d.ts +4 -0
  151. package/dist/cli/targetDefaultWorldReadiness.js +17 -0
  152. package/dist/cli/targetEvidenceHelperResolution.d.ts +14 -0
  153. package/dist/cli/targetEvidenceHelperResolution.js +23 -0
  154. package/dist/cli/targetLookupCli.d.ts +3 -0
  155. package/dist/cli/targetLookupCli.js +31 -0
  156. package/dist/cli/targetLookupCommands.d.ts +12 -0
  157. package/dist/cli/targetLookupCommands.js +69 -0
  158. package/dist/cli/targetOperationDispatch.d.ts +58 -0
  159. package/dist/cli/targetOperationDispatch.js +21 -0
  160. package/dist/cli/targetProductionCommands.d.ts +5 -0
  161. package/dist/cli/targetProductionCommands.js +45 -0
  162. package/dist/cli/targetReceiptOutput.d.ts +14 -0
  163. package/dist/cli/targetReceiptOutput.js +21 -0
  164. package/dist/cli/targetRequestFile.d.ts +14 -0
  165. package/dist/cli/targetRequestFile.js +63 -0
  166. package/dist/cli/targetSecretSourceInput.d.ts +28 -0
  167. package/dist/cli/targetSecretSourceInput.js +121 -0
  168. package/dist/cli/targetWorldClockCommand.d.ts +10 -0
  169. package/dist/cli/targetWorldClockCommand.js +42 -0
  170. package/dist/cli/targetWorldReadinessCommand.d.ts +10 -0
  171. package/dist/cli/targetWorldReadinessCommand.js +43 -0
  172. package/dist/cli/trainCommand.d.ts +3 -0
  173. package/dist/cli/trainCommand.js +61 -0
  174. package/dist/cli/upCommand.d.ts +3 -0
  175. package/dist/cli/upCommand.js +162 -0
  176. package/dist/cli/upImageCommand.d.ts +11 -0
  177. package/dist/cli/upImageCommand.js +41 -0
  178. package/dist/cli/upLifecycleInvocation.d.ts +41 -0
  179. package/dist/cli/upLifecycleInvocation.js +48 -0
  180. package/dist/cli/upLifecycleRecovery.d.ts +4 -0
  181. package/dist/cli/upLifecycleRecovery.js +197 -0
  182. package/dist/cli/usageCommand.d.ts +40 -0
  183. package/dist/cli/usageCommand.js +284 -0
  184. package/dist/cli/usageCommandLive.d.ts +84 -0
  185. package/dist/cli/usageCommandLive.js +95 -0
  186. package/dist/cli/usageDeploymentSource.d.ts +9 -0
  187. package/dist/cli/usageDeploymentSource.js +22 -0
  188. package/dist/cli/workspaceResourceMigrationCommand.d.ts +8 -0
  189. package/dist/cli/workspaceResourceMigrationCommand.js +36 -0
  190. package/dist/compiler/agentNodeMerge.d.ts +2 -0
  191. package/dist/compiler/agentNodeMerge.js +79 -0
  192. package/dist/compiler/agentSurfaces.js +11 -1
  193. package/dist/compiler/buildCompilePlan.js +17 -0
  194. package/dist/compiler/buildCompilePlanAgent.d.ts +11 -0
  195. package/dist/compiler/buildCompilePlanAgent.js +56 -0
  196. package/dist/compiler/buildCompilePlanTeams.d.ts +2 -1
  197. package/dist/compiler/buildCompilePlanTeams.js +9 -1
  198. package/dist/compiler/buildCompilePlanTraversal.js +75 -82
  199. package/dist/compiler/buildProject.d.ts +11 -0
  200. package/dist/compiler/buildProject.js +77 -2
  201. package/dist/compiler/compilePlanHelpers.js +5 -0
  202. package/dist/compiler/compileProject.d.ts +15 -0
  203. package/dist/compiler/compileProject.js +31 -75
  204. package/dist/compiler/compileProjectPolicy.d.ts +5 -0
  205. package/dist/compiler/compileProjectPolicy.js +21 -0
  206. package/dist/compiler/compileProjectReports.d.ts +9 -0
  207. package/dist/compiler/compileProjectReports.js +52 -0
  208. package/dist/compiler/compileProjectSupport.js +9 -0
  209. package/dist/compiler/containerArtifactSummaries.d.ts +7 -0
  210. package/dist/compiler/containerArtifactSummaries.js +138 -0
  211. package/dist/compiler/containerArtifacts.d.ts +12 -0
  212. package/dist/compiler/containerArtifacts.js +180 -127
  213. package/dist/compiler/containerArtifactsPlans.d.ts +5 -3
  214. package/dist/compiler/containerArtifactsPlans.js +54 -124
  215. package/dist/compiler/containerArtifactsRender.d.ts +5 -2
  216. package/dist/compiler/containerArtifactsRender.js +106 -70
  217. package/dist/compiler/containerArtifactsTypes.d.ts +20 -0
  218. package/dist/compiler/containerBackedMountRender.d.ts +56 -0
  219. package/dist/compiler/containerBackedMountRender.js +101 -0
  220. package/dist/compiler/containerConfigEnvRender.d.ts +3 -0
  221. package/dist/compiler/containerConfigEnvRender.js +54 -0
  222. package/dist/compiler/containerDaimonBrokerRender.d.ts +112 -0
  223. package/dist/compiler/containerDaimonBrokerRender.js +191 -0
  224. package/dist/compiler/containerDaimonGrokWorkerProvisioning.d.ts +38 -0
  225. package/dist/compiler/containerDaimonGrokWorkerProvisioning.js +108 -0
  226. package/dist/compiler/containerDaimonGrokWorkerRender.d.ts +172 -0
  227. package/dist/compiler/containerDaimonGrokWorkerRender.js +268 -0
  228. package/dist/compiler/containerDaimonOwnershipGuardRender.d.ts +12 -0
  229. package/dist/compiler/containerDaimonOwnershipGuardRender.js +191 -0
  230. package/dist/compiler/containerDaimonUidEntrypointRender.d.ts +24 -0
  231. package/dist/compiler/containerDaimonUidEntrypointRender.js +297 -0
  232. package/dist/compiler/containerEntrypointRender.d.ts +8 -0
  233. package/dist/compiler/containerEntrypointRender.js +82 -72
  234. package/dist/compiler/containerEntrypointShell.d.ts +5 -0
  235. package/dist/compiler/containerEntrypointShell.js +29 -0
  236. package/dist/compiler/containerPackageOverrides.d.ts +27 -0
  237. package/dist/compiler/containerPackageOverrides.js +63 -0
  238. package/dist/compiler/containerPersistentMounts.d.ts +30 -0
  239. package/dist/compiler/containerPersistentMounts.js +66 -0
  240. package/dist/compiler/containerReadinessPaths.d.ts +1 -0
  241. package/dist/compiler/containerReadinessPaths.js +1 -0
  242. package/dist/compiler/containerRuntimeLinkMaterializer.d.ts +2 -0
  243. package/dist/compiler/containerRuntimeLinkMaterializer.js +12 -0
  244. package/dist/compiler/containerRuntimeReadinessRender.d.ts +7 -0
  245. package/dist/compiler/containerRuntimeReadinessRender.js +40 -0
  246. package/dist/compiler/containerStateOwnershipRender.d.ts +4 -0
  247. package/dist/compiler/containerStateOwnershipRender.js +75 -0
  248. package/dist/compiler/containerTargetPlanResolution.d.ts +20 -0
  249. package/dist/compiler/containerTargetPlanResolution.js +97 -0
  250. package/dist/compiler/containerTargetResources.d.ts +22 -1
  251. package/dist/compiler/containerTargetResources.js +94 -2
  252. package/dist/compiler/containerVolumeBootstrap.d.ts +3 -0
  253. package/dist/compiler/containerVolumeBootstrap.js +3 -0
  254. package/dist/compiler/containerWorkspaceResourceRender.js +49 -1
  255. package/dist/compiler/daimonTelemetryArtifacts.d.ts +22 -0
  256. package/dist/compiler/daimonTelemetryArtifacts.js +56 -0
  257. package/dist/compiler/deploymentLineage.d.ts +40 -0
  258. package/dist/compiler/deploymentLineage.js +50 -0
  259. package/dist/compiler/dockerBuildContext.d.ts +16 -0
  260. package/dist/compiler/dockerBuildContext.js +159 -0
  261. package/dist/compiler/dockerBuildSkip.d.ts +30 -0
  262. package/dist/compiler/dockerBuildSkip.js +81 -0
  263. package/dist/compiler/index.d.ts +7 -0
  264. package/dist/compiler/index.js +7 -0
  265. package/dist/compiler/initProject.d.ts +2 -0
  266. package/dist/compiler/initProject.js +39 -1
  267. package/dist/compiler/localMoltnetAuthority.d.ts +64 -0
  268. package/dist/compiler/localMoltnetAuthority.js +177 -0
  269. package/dist/compiler/memoryArtifacts.d.ts +26 -0
  270. package/dist/compiler/memoryArtifacts.js +210 -0
  271. package/dist/compiler/memoryResolution.d.ts +4 -0
  272. package/dist/compiler/memoryResolution.js +147 -0
  273. package/dist/compiler/modelEnv.d.ts +7 -0
  274. package/dist/compiler/modelEnv.js +13 -1
  275. package/dist/compiler/moltnetAllowedWakeSendersValidation.d.ts +2 -0
  276. package/dist/compiler/moltnetAllowedWakeSendersValidation.js +42 -0
  277. package/dist/compiler/moltnetArtifactPaths.d.ts +31 -0
  278. package/dist/compiler/moltnetArtifactPaths.js +51 -0
  279. package/dist/compiler/moltnetArtifactTypes.d.ts +56 -0
  280. package/dist/compiler/moltnetArtifactTypes.js +1 -0
  281. package/dist/compiler/moltnetArtifacts.d.ts +3 -41
  282. package/dist/compiler/moltnetArtifacts.js +87 -101
  283. package/dist/compiler/moltnetBinaries.d.ts +33 -4
  284. package/dist/compiler/moltnetBinaries.js +173 -26
  285. package/dist/compiler/moltnetClientConfig.js +7 -2
  286. package/dist/compiler/moltnetConfigLowering.d.ts +18 -1
  287. package/dist/compiler/moltnetConfigLowering.js +92 -6
  288. package/dist/compiler/moltnetExternalParticipantArtifact.d.ts +38 -0
  289. package/dist/compiler/moltnetExternalParticipantArtifact.js +188 -0
  290. package/dist/compiler/moltnetNodeConfig.js +7 -2
  291. package/dist/compiler/moltnetReleaseAuthority.d.ts +40 -0
  292. package/dist/compiler/moltnetReleaseAuthority.js +102 -0
  293. package/dist/compiler/moltnetReleaseDownload.d.ts +12 -0
  294. package/dist/compiler/moltnetReleaseDownload.js +85 -0
  295. package/dist/compiler/moltnetRepresentativeResolution.d.ts +2 -1
  296. package/dist/compiler/moltnetRepresentativeResolution.js +17 -3
  297. package/dist/compiler/moltnetResolution.js +67 -21
  298. package/dist/compiler/moltnetRoomMemberships.js +52 -9
  299. package/dist/compiler/moltnetRoomPolicyCompatibility.d.ts +1 -1
  300. package/dist/compiler/moltnetRoomPolicyCompatibility.js +3 -1
  301. package/dist/compiler/moltnetRuntimeConfig.d.ts +1 -1
  302. package/dist/compiler/moltnetRuntimeConfig.js +22 -2
  303. package/dist/compiler/moltnetServerPlans.d.ts +9 -0
  304. package/dist/compiler/moltnetServerPlans.js +151 -0
  305. package/dist/compiler/organizationExternalParticipants.d.ts +3 -0
  306. package/dist/compiler/organizationExternalParticipants.js +176 -0
  307. package/dist/compiler/organizationIdentity.d.ts +21 -0
  308. package/dist/compiler/organizationIdentity.js +64 -0
  309. package/dist/compiler/organizationIdentityGraph.d.ts +15 -0
  310. package/dist/compiler/organizationIdentityGraph.js +115 -0
  311. package/dist/compiler/organizationReadyEvidence.d.ts +57 -0
  312. package/dist/compiler/organizationReadyEvidence.js +281 -0
  313. package/dist/compiler/projectManifestGraph.d.ts +4 -0
  314. package/dist/compiler/projectManifestGraph.js +24 -0
  315. package/dist/compiler/runProject.d.ts +8 -2
  316. package/dist/compiler/runProject.js +62 -27
  317. package/dist/compiler/runProjectAuth.d.ts +10 -2
  318. package/dist/compiler/runProjectAuth.js +105 -11
  319. package/dist/compiler/runProjectDaimonCodexDocker.d.ts +3 -0
  320. package/dist/compiler/runProjectDaimonCodexDocker.js +36 -0
  321. package/dist/compiler/runProjectDocker.d.ts +11 -0
  322. package/dist/compiler/runProjectDocker.js +64 -16
  323. package/dist/compiler/runProjectDockerDaimonGuards.d.ts +15 -0
  324. package/dist/compiler/runProjectDockerDaimonGuards.js +122 -0
  325. package/dist/compiler/runProjectDockerReservation.d.ts +3 -0
  326. package/dist/compiler/runProjectDockerReservation.js +118 -0
  327. package/dist/compiler/runProjectLifecycle.d.ts +7 -0
  328. package/dist/compiler/runProjectLifecycle.js +40 -0
  329. package/dist/compiler/syncProjectAuth.js +4 -1
  330. package/dist/compiler/teamContextActiveEnvironments.d.ts +13 -0
  331. package/dist/compiler/teamContextActiveEnvironments.js +255 -0
  332. package/dist/compiler/teamContextSupport.js +32 -40
  333. package/dist/compiler/teamContextTypes.d.ts +2 -0
  334. package/dist/compiler/training/broker/declaration.d.ts +45 -0
  335. package/dist/compiler/training/broker/declaration.js +55 -0
  336. package/dist/compiler/training/broker/entrypoint.d.ts +39 -0
  337. package/dist/compiler/training/broker/entrypoint.js +111 -0
  338. package/dist/compiler/training/broker/index.d.ts +10 -0
  339. package/dist/compiler/training/broker/index.js +10 -0
  340. package/dist/compiler/training/broker/main.d.ts +2 -0
  341. package/dist/compiler/training/broker/main.js +14 -0
  342. package/dist/compiler/training/broker/paths.d.ts +196 -0
  343. package/dist/compiler/training/broker/paths.js +241 -0
  344. package/dist/compiler/training/broker/processes.d.ts +42 -0
  345. package/dist/compiler/training/broker/processes.js +99 -0
  346. package/dist/compiler/training/broker/projection.d.ts +51 -0
  347. package/dist/compiler/training/broker/projection.js +76 -0
  348. package/dist/compiler/training/broker/provisioning.d.ts +87 -0
  349. package/dist/compiler/training/broker/provisioning.js +213 -0
  350. package/dist/compiler/training/broker/receipt.d.ts +77 -0
  351. package/dist/compiler/training/broker/receipt.js +110 -0
  352. package/dist/compiler/training/broker/registration.d.ts +41 -0
  353. package/dist/compiler/training/broker/registration.js +102 -0
  354. package/dist/compiler/training/broker/runtime.d.ts +25 -0
  355. package/dist/compiler/training/broker/runtime.js +173 -0
  356. package/dist/compiler/training/broker/seccompRoutes.d.ts +31 -0
  357. package/dist/compiler/training/broker/seccompRoutes.js +36 -0
  358. package/dist/compiler/training/broker/supervisor.d.ts +109 -0
  359. package/dist/compiler/training/broker/supervisor.js +173 -0
  360. package/dist/compiler/training/container/contract.d.ts +31 -0
  361. package/dist/compiler/training/container/contract.js +33 -0
  362. package/dist/compiler/training/container/index.d.ts +4 -0
  363. package/dist/compiler/training/container/index.js +2 -0
  364. package/dist/compiler/training/container/launch.d.ts +18 -0
  365. package/dist/compiler/training/container/launch.js +173 -0
  366. package/dist/compiler/training/container/prepare.d.ts +8 -0
  367. package/dist/compiler/training/container/prepare.js +80 -0
  368. package/dist/compiler/training/container/process.d.ts +14 -0
  369. package/dist/compiler/training/container/process.js +70 -0
  370. package/dist/compiler/training/container/security.d.ts +36 -0
  371. package/dist/compiler/training/container/security.js +58 -0
  372. package/dist/compiler/training/context.d.ts +7 -0
  373. package/dist/compiler/training/context.js +93 -0
  374. package/dist/compiler/training/contract.d.ts +142 -0
  375. package/dist/compiler/training/contract.js +34 -0
  376. package/dist/compiler/training/index.d.ts +4 -0
  377. package/dist/compiler/training/index.js +3 -0
  378. package/dist/compiler/training/preparation/assets/Dockerfile +98 -0
  379. package/dist/compiler/training/preparation/assets/package-lock.json +3787 -0
  380. package/dist/compiler/training/preparation/broker.d.ts +21 -0
  381. package/dist/compiler/training/preparation/broker.js +43 -0
  382. package/dist/compiler/training/preparation/contextModes.d.ts +12 -0
  383. package/dist/compiler/training/preparation/contextModes.js +38 -0
  384. package/dist/compiler/training/preparation/contract.d.ts +182 -0
  385. package/dist/compiler/training/preparation/contract.js +94 -0
  386. package/dist/compiler/training/preparation/copyAssets.d.ts +1 -0
  387. package/dist/compiler/training/preparation/copyAssets.js +8 -0
  388. package/dist/compiler/training/preparation/daimonParent.d.ts +42 -0
  389. package/dist/compiler/training/preparation/daimonParent.js +114 -0
  390. package/dist/compiler/training/preparation/files.d.ts +25 -0
  391. package/dist/compiler/training/preparation/files.js +85 -0
  392. package/dist/compiler/training/preparation/image.d.ts +28 -0
  393. package/dist/compiler/training/preparation/image.js +102 -0
  394. package/dist/compiler/training/preparation/index.d.ts +3 -0
  395. package/dist/compiler/training/preparation/index.js +2 -0
  396. package/dist/compiler/training/preparation/inputs.d.ts +23 -0
  397. package/dist/compiler/training/preparation/inputs.js +93 -0
  398. package/dist/compiler/training/preparation/prepare.d.ts +33 -0
  399. package/dist/compiler/training/preparation/prepare.js +186 -0
  400. package/dist/compiler/training/preparation/scratch.d.ts +19 -0
  401. package/dist/compiler/training/preparation/scratch.js +48 -0
  402. package/dist/compiler/training/repair/compatibility.d.ts +11 -0
  403. package/dist/compiler/training/repair/compatibility.js +34 -0
  404. package/dist/compiler/training/repair/contract.d.ts +506 -0
  405. package/dist/compiler/training/repair/contract.js +31 -0
  406. package/dist/compiler/training/repair/index.d.ts +3 -0
  407. package/dist/compiler/training/repair/index.js +3 -0
  408. package/dist/compiler/training/repair/prepare.d.ts +230 -0
  409. package/dist/compiler/training/repair/prepare.js +74 -0
  410. package/dist/compiler/training/repair/witness.d.ts +203 -0
  411. package/dist/compiler/training/repair/witness.js +42 -0
  412. package/dist/compiler/types.d.ts +84 -1
  413. package/dist/compiler/upProject.d.ts +31 -1
  414. package/dist/compiler/upProject.js +197 -22
  415. package/dist/compiler/upProjectHandoff.d.ts +62 -0
  416. package/dist/compiler/upProjectHandoff.js +204 -0
  417. package/dist/compiler/upReceipt.d.ts +36 -0
  418. package/dist/compiler/upReceipt.js +127 -0
  419. package/dist/compiler/updateProjectModels.js +43 -60
  420. package/dist/compiler/updateProjectRuntime.js +22 -35
  421. package/dist/compiler/updateProjectSurfaces.js +53 -47
  422. package/dist/compiler/view/types.d.ts +1 -1
  423. package/dist/compiler/workspaceBundleArtifacts.d.ts +3 -0
  424. package/dist/compiler/workspaceBundleArtifacts.js +106 -0
  425. package/dist/compiler/workspaceResources.d.ts +4 -1
  426. package/dist/compiler/workspaceResources.js +12 -7
  427. package/dist/compiler/worldBindings.d.ts +39 -0
  428. package/dist/compiler/worldBindings.js +247 -0
  429. package/dist/compiler/worldBindingsFile.d.ts +5 -0
  430. package/dist/compiler/worldBindingsFile.js +162 -0
  431. package/dist/deployment/artifactsExport.d.ts +49 -0
  432. package/dist/deployment/artifactsExport.js +217 -0
  433. package/dist/deployment/artifactsExportDocker.d.ts +48 -0
  434. package/dist/deployment/artifactsExportDocker.js +91 -0
  435. package/dist/deployment/artifactsExportPlan.d.ts +24 -0
  436. package/dist/deployment/artifactsExportPlan.js +185 -0
  437. package/dist/deployment/artifactsExportTypes.d.ts +50 -0
  438. package/dist/deployment/artifactsExportTypes.js +52 -0
  439. package/dist/deployment/buildImageCacheStore.d.ts +23 -0
  440. package/dist/deployment/buildImageCacheStore.js +54 -0
  441. package/dist/deployment/canaryCutover.d.ts +42 -0
  442. package/dist/deployment/canaryCutover.js +140 -0
  443. package/dist/deployment/candidateDiagnostics.d.ts +15 -0
  444. package/dist/deployment/candidateDiagnostics.js +90 -0
  445. package/dist/deployment/deploymentLifecycleCorrelation.d.ts +11 -0
  446. package/dist/deployment/deploymentLifecycleCorrelation.js +33 -0
  447. package/dist/deployment/dockerInspect.d.ts +9 -0
  448. package/dist/deployment/dockerInspect.js +24 -1
  449. package/dist/deployment/dockerLabels.d.ts +2 -0
  450. package/dist/deployment/dockerLabels.js +2 -0
  451. package/dist/deployment/dockerLogs.js +5 -10
  452. package/dist/deployment/dockerManager.d.ts +51 -0
  453. package/dist/deployment/dockerManager.js +124 -1
  454. package/dist/deployment/dockerProbeGateway.d.ts +17 -0
  455. package/dist/deployment/dockerProbeGateway.js +80 -6
  456. package/dist/deployment/dockerRecover.js +9 -1
  457. package/dist/deployment/dockerTeardown.d.ts +32 -0
  458. package/dist/deployment/dockerTeardown.js +61 -0
  459. package/dist/deployment/downDeployment.d.ts +39 -0
  460. package/dist/deployment/downDeployment.js +248 -0
  461. package/dist/deployment/downReceiptTypes.d.ts +36 -0
  462. package/dist/deployment/downReceiptTypes.js +45 -0
  463. package/dist/deployment/index.d.ts +20 -0
  464. package/dist/deployment/index.js +21 -0
  465. package/dist/deployment/lifecycleCompletion.d.ts +37 -0
  466. package/dist/deployment/lifecycleCompletion.js +236 -0
  467. package/dist/deployment/lifecycleCompletionContracts.d.ts +224 -0
  468. package/dist/deployment/lifecycleCompletionContracts.js +140 -0
  469. package/dist/deployment/lifecycleCompletionHeartbeat.d.ts +2 -0
  470. package/dist/deployment/lifecycleCompletionHeartbeat.js +50 -0
  471. package/dist/deployment/lifecycleCompletionLookup.d.ts +18 -0
  472. package/dist/deployment/lifecycleCompletionLookup.js +88 -0
  473. package/dist/deployment/lifecycleCompletionOwner.d.ts +8 -0
  474. package/dist/deployment/lifecycleCompletionOwner.js +31 -0
  475. package/dist/deployment/lifecycleCompletionParsing.d.ts +12 -0
  476. package/dist/deployment/lifecycleCompletionParsing.js +108 -0
  477. package/dist/deployment/lifecycleCompletionPaths.d.ts +12 -0
  478. package/dist/deployment/lifecycleCompletionPaths.js +19 -0
  479. package/dist/deployment/lifecycleCompletionPublication.d.ts +7 -0
  480. package/dist/deployment/lifecycleCompletionPublication.js +49 -0
  481. package/dist/deployment/lifecycleCompletionRecovery.d.ts +21 -0
  482. package/dist/deployment/lifecycleCompletionRecovery.js +56 -0
  483. package/dist/deployment/lifecycleCompletionRoot.d.ts +21 -0
  484. package/dist/deployment/lifecycleCompletionRoot.js +243 -0
  485. package/dist/deployment/lifecycleCompletionStore.d.ts +6 -0
  486. package/dist/deployment/lifecycleCompletionStore.js +151 -0
  487. package/dist/deployment/lifecycleUpRecords.d.ts +11 -0
  488. package/dist/deployment/lifecycleUpRecords.js +127 -0
  489. package/dist/deployment/native/AGENTS.md +11 -0
  490. package/dist/deployment/native/rename-noreplace-arm64 +0 -0
  491. package/dist/deployment/native/rename-noreplace-arm64.provenance.json +1 -0
  492. package/dist/deployment/native/rename-noreplace-x64 +0 -0
  493. package/dist/deployment/native/rename-noreplace-x64.provenance.json +1 -0
  494. package/dist/deployment/noReplaceActivation.d.ts +17 -0
  495. package/dist/deployment/noReplaceActivation.js +50 -0
  496. package/dist/deployment/organizationHandoffAuthorityFsBudget.d.ts +110 -0
  497. package/dist/deployment/organizationHandoffAuthorityFsBudget.js +156 -0
  498. package/dist/deployment/organizationHandoffAuthorityFsClient.d.ts +17 -0
  499. package/dist/deployment/organizationHandoffAuthorityFsClient.js +187 -0
  500. package/dist/deployment/organizationHandoffAuthorityFsElection.d.ts +21 -0
  501. package/dist/deployment/organizationHandoffAuthorityFsElection.js +57 -0
  502. package/dist/deployment/organizationHandoffAuthorityFsWorker.d.ts +1 -0
  503. package/dist/deployment/organizationHandoffAuthorityFsWorker.js +431 -0
  504. package/dist/deployment/organizationHandoffAuthorityFsWorkerParent.fixture.d.ts +1 -0
  505. package/dist/deployment/organizationHandoffAuthorityFsWorkerParent.fixture.js +26 -0
  506. package/dist/deployment/organizationHandoffAuthorityFsWorkerStall.fixture.d.ts +1 -0
  507. package/dist/deployment/organizationHandoffAuthorityFsWorkerStall.fixture.js +16 -0
  508. package/dist/deployment/organizationHandoffAuthorityStore.d.ts +41 -0
  509. package/dist/deployment/organizationHandoffAuthorityStore.js +355 -0
  510. package/dist/deployment/organizationHandoffAuthorityTypes.d.ts +76 -0
  511. package/dist/deployment/organizationHandoffAuthorityTypes.js +149 -0
  512. package/dist/deployment/organizationHandoffTypes.d.ts +29 -0
  513. package/dist/deployment/organizationHandoffTypes.js +80 -0
  514. package/dist/deployment/organizationReady.d.ts +54 -0
  515. package/dist/deployment/organizationReady.js +232 -0
  516. package/dist/deployment/privateArtifactsExport.d.ts +18 -0
  517. package/dist/deployment/privateArtifactsExport.js +80 -0
  518. package/dist/deployment/productStateClone.d.ts +43 -0
  519. package/dist/deployment/productStateClone.js +319 -0
  520. package/dist/deployment/record.d.ts +26 -1
  521. package/dist/deployment/record.js +49 -4
  522. package/dist/deployment/target.d.ts +1 -35
  523. package/dist/deployment/target.js +1 -96
  524. package/dist/deployment/upLifecycleRecoveryState.d.ts +23 -0
  525. package/dist/deployment/upLifecycleRecoveryState.js +12 -0
  526. package/dist/deployment/upReceiptTypes.d.ts +137 -0
  527. package/dist/deployment/upReceiptTypes.js +191 -0
  528. package/dist/deployment/workspaceResourceMigration.d.ts +55 -0
  529. package/dist/deployment/workspaceResourceMigration.js +315 -0
  530. package/dist/dev/project.d.ts +7 -0
  531. package/dist/dev/project.js +24 -9
  532. package/dist/distribution/buildDistributionReport.d.ts +2 -1
  533. package/dist/distribution/buildDistributionReport.js +2 -1
  534. package/dist/distribution/consumeImage.d.ts +2 -0
  535. package/dist/distribution/consumeImage.js +98 -73
  536. package/dist/distribution/consumeImageDaimonDocker.d.ts +3 -0
  537. package/dist/distribution/consumeImageDaimonDocker.js +45 -0
  538. package/dist/distribution/consumeImageLifecycle.d.ts +17 -0
  539. package/dist/distribution/consumeImageLifecycle.js +231 -0
  540. package/dist/distribution/consumeImageSupport.d.ts +12 -0
  541. package/dist/distribution/consumeImageSupport.js +15 -0
  542. package/dist/distribution/distributionReportSchema.d.ts +16 -1
  543. package/dist/distribution/distributionReportSchema.js +21 -3
  544. package/dist/distribution/dockerRunner.d.ts +6 -1
  545. package/dist/distribution/dockerRunner.js +31 -4
  546. package/dist/distribution/imageRuntimeAuth.d.ts +9 -1
  547. package/dist/distribution/imageRuntimeAuth.js +70 -1
  548. package/dist/distribution/index.d.ts +3 -3
  549. package/dist/distribution/index.js +2 -2
  550. package/dist/distribution/preflight.js +5 -1
  551. package/dist/distribution/types.d.ts +21 -1
  552. package/dist/distribution/types.js +4 -0
  553. package/dist/evidenceExportHelper/boundedExecutor.d.ts +3 -0
  554. package/dist/evidenceExportHelper/boundedExecutor.js +33 -0
  555. package/dist/evidenceExportHelper/helperProgram.mjs +156 -0
  556. package/dist/evidenceExportHelper/index.d.ts +4 -0
  557. package/dist/evidenceExportHelper/index.js +4 -0
  558. package/dist/evidenceExportHelper/preparedAuthority.d.ts +64 -0
  559. package/dist/evidenceExportHelper/preparedAuthority.js +228 -0
  560. package/dist/evidenceExportHelper/preparedBuilder.d.ts +10 -0
  561. package/dist/evidenceExportHelper/preparedBuilder.js +183 -0
  562. package/dist/evidenceExportHelper/preparedBuilderTypes.d.ts +19 -0
  563. package/dist/evidenceExportHelper/preparedBuilderTypes.js +1 -0
  564. package/dist/evidenceExportHelper/recipe.d.ts +7 -0
  565. package/dist/evidenceExportHelper/recipe.js +83 -0
  566. package/dist/filesystem/io.d.ts +2 -0
  567. package/dist/filesystem/io.js +16 -1
  568. package/dist/filesystem/paths.js +10 -1
  569. package/dist/ledger/causalConformanceCli.d.ts +1 -0
  570. package/dist/ledger/causalConformanceCli.js +41 -0
  571. package/dist/ledger/causeNamespace.d.ts +8 -0
  572. package/dist/ledger/causeNamespace.js +24 -0
  573. package/dist/ledger/conformance.d.ts +83 -0
  574. package/dist/ledger/conformance.js +259 -0
  575. package/dist/ledger/emitters.d.ts +76 -0
  576. package/dist/ledger/emitters.js +188 -0
  577. package/dist/ledger/index.d.ts +4 -0
  578. package/dist/ledger/index.js +4 -0
  579. package/dist/ledger/principal.d.ts +96 -0
  580. package/dist/ledger/principal.js +121 -0
  581. package/dist/manifest/executionSchemas.d.ts +27 -0
  582. package/dist/manifest/executionSchemas.js +21 -2
  583. package/dist/manifest/externalParticipantSchemas.d.ts +18 -0
  584. package/dist/manifest/externalParticipantSchemas.js +17 -0
  585. package/dist/manifest/index.d.ts +1 -0
  586. package/dist/manifest/index.js +1 -0
  587. package/dist/manifest/inlineAgentMember.d.ts +2 -0
  588. package/dist/manifest/inlineAgentMember.js +9 -0
  589. package/dist/manifest/loadManifest.js +14 -8
  590. package/dist/manifest/mcpSchemas.d.ts +18 -0
  591. package/dist/manifest/mcpSchemas.js +44 -0
  592. package/dist/manifest/memorySchemas.d.ts +245 -0
  593. package/dist/manifest/memorySchemas.js +148 -0
  594. package/dist/manifest/renderSpawnfile.js +22 -131
  595. package/dist/manifest/renderSpawnfileNetworks.js +20 -2
  596. package/dist/manifest/renderSpawnfileSurfaces.d.ts +2 -0
  597. package/dist/manifest/renderSpawnfileSurfaces.js +134 -0
  598. package/dist/manifest/renderSpawnfileWorkspace.js +5 -0
  599. package/dist/manifest/scheduleSchemas.d.ts +3 -1
  600. package/dist/manifest/scheduleSchemas.js +91 -5
  601. package/dist/manifest/schemas.d.ts +2034 -40
  602. package/dist/manifest/schemas.js +82 -33
  603. package/dist/manifest/surfaceSchemas.d.ts +17 -0
  604. package/dist/manifest/surfaceSchemas.js +24 -1
  605. package/dist/manifest/teamNetworkAccessSchemas.d.ts +6 -2
  606. package/dist/manifest/teamNetworkAccessSchemas.js +11 -0
  607. package/dist/manifest/teamNetworkAuthSchemas.d.ts +48 -0
  608. package/dist/manifest/teamNetworkAuthSchemas.js +103 -0
  609. package/dist/manifest/teamNetworkSchemas.d.ts +25 -190
  610. package/dist/manifest/teamNetworkSchemas.js +21 -317
  611. package/dist/manifest/teamNetworkServerSchemas.d.ts +155 -0
  612. package/dist/manifest/teamNetworkServerSchemas.js +215 -0
  613. package/dist/manifest/workspaceSchemas.d.ts +16 -0
  614. package/dist/manifest/workspaceSchemas.js +11 -0
  615. package/dist/ownership/siblingBuildFreshness.d.ts +20 -0
  616. package/dist/ownership/siblingBuildFreshness.js +20 -0
  617. package/dist/report/types.d.ts +173 -1
  618. package/dist/runtime/common.d.ts +63 -1
  619. package/dist/runtime/common.js +88 -3
  620. package/dist/runtime/container.d.ts +28 -1
  621. package/dist/runtime/container.js +78 -29
  622. package/dist/runtime/containerPackageOverrides.d.ts +37 -0
  623. package/dist/runtime/containerPackageOverrides.js +33 -0
  624. package/dist/runtime/daimon/adapter.d.ts +14 -0
  625. package/dist/runtime/daimon/adapter.js +243 -0
  626. package/dist/runtime/daimon/attention.d.ts +8 -0
  627. package/dist/runtime/daimon/attention.js +32 -0
  628. package/dist/runtime/daimon/config.d.ts +25 -0
  629. package/dist/runtime/daimon/config.js +272 -0
  630. package/dist/runtime/daimon/contractManifest.d.ts +295 -0
  631. package/dist/runtime/daimon/contractManifest.js +319 -0
  632. package/dist/runtime/daimon/grokModel.d.ts +19 -0
  633. package/dist/runtime/daimon/grokModel.js +33 -0
  634. package/dist/runtime/daimon/grokWorkerConfigBytes.d.ts +26 -0
  635. package/dist/runtime/daimon/grokWorkerConfigBytes.js +36 -0
  636. package/dist/runtime/daimon/grokWorkerContract.d.ts +22 -0
  637. package/dist/runtime/daimon/grokWorkerContract.js +48 -0
  638. package/dist/runtime/daimon/memory.d.ts +57 -0
  639. package/dist/runtime/daimon/memory.js +125 -0
  640. package/dist/runtime/daimon/runAuth.d.ts +51 -0
  641. package/dist/runtime/daimon/runAuth.js +279 -0
  642. package/dist/runtime/daimon/runtimeIdentity.d.ts +22 -0
  643. package/dist/runtime/daimon/runtimeIdentity.js +22 -0
  644. package/dist/runtime/daimon/scheduleAuthority.d.ts +3 -0
  645. package/dist/runtime/daimon/scheduleAuthority.js +17 -0
  646. package/dist/runtime/index.d.ts +6 -0
  647. package/dist/runtime/index.js +6 -0
  648. package/dist/runtime/install.d.ts +3 -0
  649. package/dist/runtime/install.js +3 -0
  650. package/dist/runtime/localDaimonAuthority.d.ts +11 -0
  651. package/dist/runtime/localDaimonAuthority.js +77 -0
  652. package/dist/runtime/mnemeMcp.d.ts +28 -0
  653. package/dist/runtime/mnemeMcp.js +135 -0
  654. package/dist/runtime/openclaw/adapter.js +17 -6
  655. package/dist/runtime/openclaw/mcp.d.ts +10 -0
  656. package/dist/runtime/openclaw/mcp.js +69 -0
  657. package/dist/runtime/openclaw/runAuth.js +2 -2
  658. package/dist/runtime/openclaw/scaffold.js +1 -1
  659. package/dist/runtime/openclaw/schedules.d.ts +38 -0
  660. package/dist/runtime/openclaw/schedules.js +74 -0
  661. package/dist/runtime/pi/adapter.d.ts +1 -2
  662. package/dist/runtime/pi/adapter.js +87 -58
  663. package/dist/runtime/pi/appActivitySource.js +114 -2
  664. package/dist/runtime/pi/appAgentConfig.d.ts +11 -0
  665. package/dist/runtime/pi/appAgentConfig.js +264 -0
  666. package/dist/runtime/pi/appCliEnginesSource.d.ts +1 -0
  667. package/dist/runtime/pi/appCliEnginesSource.js +183 -0
  668. package/dist/runtime/pi/appCliSource.d.ts +1 -0
  669. package/dist/runtime/pi/appCliSource.js +353 -0
  670. package/dist/runtime/pi/appControlSource.d.ts +1 -0
  671. package/dist/runtime/pi/appControlSource.js +390 -0
  672. package/dist/runtime/pi/appControlWakeIdentitySource.d.ts +1 -0
  673. package/dist/runtime/pi/appControlWakeIdentitySource.js +19 -0
  674. package/dist/runtime/pi/appCoreSource.d.ts +4 -1
  675. package/dist/runtime/pi/appCoreSource.js +104 -214
  676. package/dist/runtime/pi/appPreludeSource.js +140 -52
  677. package/dist/runtime/pi/appScheduleSource.d.ts +1 -0
  678. package/dist/runtime/pi/appScheduleSource.js +84 -0
  679. package/dist/runtime/pi/appScriptedEngine.d.ts +31 -0
  680. package/dist/runtime/pi/appScriptedEngine.js +42 -0
  681. package/dist/runtime/pi/appSource.d.ts +4 -1
  682. package/dist/runtime/pi/appSource.js +6 -2
  683. package/dist/runtime/pi/appTemplate.d.ts +8 -22
  684. package/dist/runtime/pi/appTemplate.js +9 -126
  685. package/dist/runtime/pi/appTemplateTypes.d.ts +64 -0
  686. package/dist/runtime/pi/appTemplateTypes.js +18 -0
  687. package/dist/runtime/pi/appWakeContextSource.d.ts +1 -0
  688. package/dist/runtime/pi/appWakeContextSource.js +398 -0
  689. package/dist/runtime/pi/containerTargets.d.ts +4 -0
  690. package/dist/runtime/pi/containerTargets.js +57 -0
  691. package/dist/runtime/pi/runAuth.js +126 -9
  692. package/dist/runtime/pi/testHelpers.d.ts +2 -0
  693. package/dist/runtime/pi/testHelpers.js +40 -0
  694. package/dist/runtime/picoclaw/adapter.js +25 -29
  695. package/dist/runtime/picoclaw/mcp.d.ts +4 -0
  696. package/dist/runtime/picoclaw/mcp.js +43 -0
  697. package/dist/runtime/picoclaw/memory.d.ts +7 -0
  698. package/dist/runtime/picoclaw/memory.js +17 -0
  699. package/dist/runtime/picoclaw/runAuth.js +1 -1
  700. package/dist/runtime/picoclaw/scaffold.js +1 -1
  701. package/dist/runtime/picoclaw/schedules.d.ts +26 -0
  702. package/dist/runtime/picoclaw/schedules.js +62 -3
  703. package/dist/runtime/registry.d.ts +3 -0
  704. package/dist/runtime/registry.js +19 -2
  705. package/dist/runtime/scheduleUtils.d.ts +3 -0
  706. package/dist/runtime/scheduleUtils.js +19 -0
  707. package/dist/runtime/types.d.ts +50 -2
  708. package/dist/runtime/usageLedger.d.ts +158 -0
  709. package/dist/runtime/usageLedger.js +269 -0
  710. package/dist/runtime/usageLedgerRead.d.ts +48 -0
  711. package/dist/runtime/usageLedgerRead.js +102 -0
  712. package/dist/runtime/usageRequestLedger.d.ts +42 -0
  713. package/dist/runtime/usageRequestLedger.js +72 -0
  714. package/dist/shared/daimonCodexDocker.d.ts +32 -0
  715. package/dist/shared/daimonCodexDocker.js +120 -0
  716. package/dist/shared/daimonGrokSeccompProfile.d.ts +10 -0
  717. package/dist/shared/daimonGrokSeccompProfile.js +11 -0
  718. package/dist/shared/errors.d.ts +1 -1
  719. package/dist/shared/errors.js +2 -2
  720. package/dist/shared/index.d.ts +3 -0
  721. package/dist/shared/index.js +3 -0
  722. package/dist/shared/redaction.d.ts +2 -0
  723. package/dist/shared/redaction.js +10 -0
  724. package/dist/shared/types.d.ts +1 -1
  725. package/dist/shared/volumeNames.d.ts +6 -0
  726. package/dist/shared/volumeNames.js +14 -0
  727. package/dist/status/buildStatus.d.ts +1 -0
  728. package/dist/status/buildStatus.js +2 -0
  729. package/dist/status/compileReport.d.ts +22 -0
  730. package/dist/status/compileReport.js +16 -2
  731. package/dist/status/compiledProbeCollection.d.ts +21 -0
  732. package/dist/status/compiledProbeCollection.js +27 -0
  733. package/dist/status/imageStatusReport.js +6 -0
  734. package/dist/status/index.d.ts +3 -0
  735. package/dist/status/index.js +3 -0
  736. package/dist/status/lifecycleProbes.d.ts +19 -0
  737. package/dist/status/lifecycleProbes.js +174 -0
  738. package/dist/status/moltnetProbes.d.ts +7 -8
  739. package/dist/status/moltnetProbes.js +27 -198
  740. package/dist/status/moltnetWiringProbes.d.ts +19 -0
  741. package/dist/status/moltnetWiringProbes.js +178 -0
  742. package/dist/target/cleanupRun.d.ts +41 -0
  743. package/dist/target/cleanupRun.js +139 -0
  744. package/dist/target/cleanupRunDocker.d.ts +16 -0
  745. package/dist/target/cleanupRunDocker.js +66 -0
  746. package/dist/target/cleanupRunDockerPreflight.d.ts +17 -0
  747. package/dist/target/cleanupRunDockerPreflight.js +224 -0
  748. package/dist/target/composedPreparation.d.ts +205 -0
  749. package/dist/target/composedPreparation.js +223 -0
  750. package/dist/target/containerBundle.d.ts +82 -0
  751. package/dist/target/containerBundle.js +243 -0
  752. package/dist/target/containerBundleArchive.d.ts +31 -0
  753. package/dist/target/containerBundleArchive.js +140 -0
  754. package/dist/target/containerBundleAuthority.d.ts +25 -0
  755. package/dist/target/containerBundleAuthority.js +65 -0
  756. package/dist/target/containerBundleContracts.d.ts +114 -0
  757. package/dist/target/containerBundleContracts.js +173 -0
  758. package/dist/target/containerBundleFilesystemStore.d.ts +3 -0
  759. package/dist/target/containerBundleFilesystemStore.js +247 -0
  760. package/dist/target/containerBundlePolicy.d.ts +33 -0
  761. package/dist/target/containerBundlePolicy.js +64 -0
  762. package/dist/target/containerBundleStore.d.ts +127 -0
  763. package/dist/target/containerBundleStore.js +284 -0
  764. package/dist/target/contracts.d.ts +538 -0
  765. package/dist/target/contracts.js +373 -0
  766. package/dist/target/dockerArtifactIdentityTypes.d.ts +56 -0
  767. package/dist/target/dockerArtifactIdentityTypes.js +1 -0
  768. package/dist/target/dockerArtifactInspection.d.ts +40 -0
  769. package/dist/target/dockerArtifactInspection.js +125 -0
  770. package/dist/target/dockerArtifacts.d.ts +21 -0
  771. package/dist/target/dockerArtifacts.js +110 -0
  772. package/dist/target/dockerArtifactsProvider.d.ts +41 -0
  773. package/dist/target/dockerArtifactsProvider.js +476 -0
  774. package/dist/target/dockerBaseImage.d.ts +2 -0
  775. package/dist/target/dockerBaseImage.js +11 -0
  776. package/dist/target/dockerCommandExecutor.d.ts +38 -0
  777. package/dist/target/dockerCommandExecutor.js +251 -0
  778. package/dist/target/dockerCommandExecutorCore.d.ts +35 -0
  779. package/dist/target/dockerCommandExecutorCore.js +275 -0
  780. package/dist/target/dockerContainerBundleBuilder.d.ts +8 -0
  781. package/dist/target/dockerContainerBundleBuilder.js +256 -0
  782. package/dist/target/dockerContextSnapshot.d.ts +21 -0
  783. package/dist/target/dockerContextSnapshot.js +158 -0
  784. package/dist/target/dockerEndpointFingerprint.d.ts +1 -0
  785. package/dist/target/dockerEndpointFingerprint.js +9 -0
  786. package/dist/target/dockerPreparedArtifact.d.ts +48 -0
  787. package/dist/target/dockerPreparedArtifact.js +131 -0
  788. package/dist/target/dockerProjectionJson.d.ts +1 -0
  789. package/dist/target/dockerProjectionJson.js +80 -0
  790. package/dist/target/dockerPublicArtifactSnapshot.d.ts +17 -0
  791. package/dist/target/dockerPublicArtifactSnapshot.js +83 -0
  792. package/dist/target/dockerResources.d.ts +26 -0
  793. package/dist/target/dockerResources.js +162 -0
  794. package/dist/target/dockerResourcesProvider.d.ts +44 -0
  795. package/dist/target/dockerResourcesProvider.js +207 -0
  796. package/dist/target/dockerSecrets.d.ts +39 -0
  797. package/dist/target/dockerSecrets.js +249 -0
  798. package/dist/target/dockerSecretsAuthority.d.ts +26 -0
  799. package/dist/target/dockerSecretsAuthority.js +216 -0
  800. package/dist/target/dockerSecretsLifecycle.d.ts +25 -0
  801. package/dist/target/dockerSecretsLifecycle.js +133 -0
  802. package/dist/target/dockerSecretsProvider.d.ts +68 -0
  803. package/dist/target/dockerSecretsProvider.js +329 -0
  804. package/dist/target/dockerTarget.d.ts +53 -0
  805. package/dist/target/dockerTarget.js +48 -0
  806. package/dist/target/dockerTargetBinding.d.ts +13 -0
  807. package/dist/target/dockerTargetBinding.js +95 -0
  808. package/dist/target/dockerTargetExecFile.d.ts +19 -0
  809. package/dist/target/dockerTargetExecFile.js +194 -0
  810. package/dist/target/dockerWorldClock.d.ts +17 -0
  811. package/dist/target/dockerWorldClock.js +111 -0
  812. package/dist/target/dockerWorldReadiness.d.ts +17 -0
  813. package/dist/target/dockerWorldReadiness.js +119 -0
  814. package/dist/target/dockerWorldService.d.ts +23 -0
  815. package/dist/target/dockerWorldService.js +216 -0
  816. package/dist/target/dockerWorldServiceAuthority.d.ts +80 -0
  817. package/dist/target/dockerWorldServiceAuthority.js +182 -0
  818. package/dist/target/dockerWorldServiceLifecycle.d.ts +41 -0
  819. package/dist/target/dockerWorldServiceLifecycle.js +275 -0
  820. package/dist/target/dockerWorldServiceProvider.d.ts +64 -0
  821. package/dist/target/dockerWorldServiceProvider.js +330 -0
  822. package/dist/target/dockerWorldServiceStore.d.ts +73 -0
  823. package/dist/target/dockerWorldServiceStore.js +367 -0
  824. package/dist/target/evidenceExport.d.ts +57 -0
  825. package/dist/target/evidenceExport.js +527 -0
  826. package/dist/target/evidenceExportArchive.d.ts +10 -0
  827. package/dist/target/evidenceExportArchive.js +302 -0
  828. package/dist/target/evidenceExportContract.d.ts +27 -0
  829. package/dist/target/evidenceExportContract.js +40 -0
  830. package/dist/target/evidenceExportOperationsTestKit.d.ts +87 -0
  831. package/dist/target/evidenceExportOperationsTestKit.js +312 -0
  832. package/dist/target/evidenceExportProvider.d.ts +87 -0
  833. package/dist/target/evidenceExportProvider.js +197 -0
  834. package/dist/target/evidenceExportPublicationTypes.d.ts +16 -0
  835. package/dist/target/evidenceExportPublicationTypes.js +1 -0
  836. package/dist/target/evidenceExportStore.d.ts +70 -0
  837. package/dist/target/evidenceExportStore.js +498 -0
  838. package/dist/target/evidenceExportStorePublication.d.ts +7 -0
  839. package/dist/target/evidenceExportStorePublication.js +395 -0
  840. package/dist/target/handles.d.ts +20 -0
  841. package/dist/target/handles.js +56 -0
  842. package/dist/target/index.d.ts +12 -0
  843. package/dist/target/index.js +11 -0
  844. package/dist/target/journal.d.ts +59 -0
  845. package/dist/target/journal.js +529 -0
  846. package/dist/target/journalFilesystem.d.ts +3 -0
  847. package/dist/target/journalFilesystem.js +111 -0
  848. package/dist/target/journalRoot.d.ts +4 -0
  849. package/dist/target/journalRoot.js +6 -0
  850. package/dist/target/organizationAttachment.d.ts +23 -0
  851. package/dist/target/organizationAttachment.js +263 -0
  852. package/dist/target/organizationAttachmentAuthority.d.ts +65 -0
  853. package/dist/target/organizationAttachmentAuthority.js +161 -0
  854. package/dist/target/organizationAttachmentLifecycle.d.ts +17 -0
  855. package/dist/target/organizationAttachmentLifecycle.js +101 -0
  856. package/dist/target/organizationAttachmentProvider.d.ts +76 -0
  857. package/dist/target/organizationAttachmentProvider.js +289 -0
  858. package/dist/target/organizationAttachmentStore.d.ts +51 -0
  859. package/dist/target/organizationAttachmentStore.js +316 -0
  860. package/dist/target/publicArtifactSnapshot.d.ts +72 -0
  861. package/dist/target/publicArtifactSnapshot.js +184 -0
  862. package/dist/target/topologyActivation.d.ts +51 -0
  863. package/dist/target/topologyActivation.js +149 -0
  864. package/dist/target/topologyAttestation.d.ts +37 -0
  865. package/dist/target/topologyAttestation.js +300 -0
  866. package/dist/target/topologyAttestationErrors.d.ts +1 -0
  867. package/dist/target/topologyAttestationErrors.js +1 -0
  868. package/dist/target/worldClock.d.ts +60 -0
  869. package/dist/target/worldClock.js +129 -0
  870. package/dist/target/worldReadiness.d.ts +103 -0
  871. package/dist/target/worldReadiness.js +153 -0
  872. package/examples/README.md +45 -0
  873. package/examples/agent-with-subagents/AGENTS.md +3 -0
  874. package/examples/agent-with-subagents/Spawnfile +30 -0
  875. package/examples/agent-with-subagents/subagents/critic/AGENTS.md +3 -0
  876. package/examples/agent-with-subagents/subagents/critic/Spawnfile +15 -0
  877. package/examples/agent-with-subagents/subagents/researcher/AGENTS.md +3 -0
  878. package/examples/agent-with-subagents/subagents/researcher/Spawnfile +17 -0
  879. package/examples/daimon-org/Spawnfile +68 -0
  880. package/examples/daimon-org/TEAM.md +4 -0
  881. package/examples/daimon-org/agents/mapper/AGENTS.md +4 -0
  882. package/examples/daimon-org/agents/mapper/Spawnfile +37 -0
  883. package/examples/daimon-org/shared/skills/file-note/SKILL.md +9 -0
  884. package/examples/daimon-org/teams/review/Spawnfile +53 -0
  885. package/examples/daimon-org/teams/review/agents/reviewer/AGENTS.md +4 -0
  886. package/examples/daimon-org/teams/review/agents/reviewer/Spawnfile +37 -0
  887. package/examples/daimon-public-host/AGENTS.md +3 -0
  888. package/examples/daimon-public-host/Spawnfile +21 -0
  889. package/examples/distribution-org/Spawnfile +43 -0
  890. package/examples/distribution-org/TEAM.md +4 -0
  891. package/examples/distribution-org/agents/coordinator/AGENTS.md +1 -0
  892. package/examples/distribution-org/agents/coordinator/Spawnfile +20 -0
  893. package/examples/distribution-org/agents/researcher/AGENTS.md +1 -0
  894. package/examples/distribution-org/agents/researcher/Spawnfile +20 -0
  895. package/examples/jungian-daimon-org/Spawnfile +41 -0
  896. package/examples/jungian-daimon-org/TEAM.md +21 -0
  897. package/examples/jungian-daimon-org/teams/luna/Spawnfile +47 -0
  898. package/examples/jungian-daimon-org/teams/luna/TEAM.md +4 -0
  899. package/examples/jungian-daimon-org/teams/luna/agents/animus/AGENTS.md +10 -0
  900. package/examples/jungian-daimon-org/teams/luna/agents/animus/Spawnfile +33 -0
  901. package/examples/jungian-daimon-org/teams/luna/agents/representative/AGENTS.md +21 -0
  902. package/examples/jungian-daimon-org/teams/luna/agents/representative/Spawnfile +30 -0
  903. package/examples/jungian-daimon-org/teams/luna/agents/shadow/AGENTS.md +10 -0
  904. package/examples/jungian-daimon-org/teams/luna/agents/shadow/Spawnfile +33 -0
  905. package/examples/jungian-daimon-org/teams/selene/Spawnfile +47 -0
  906. package/examples/jungian-daimon-org/teams/selene/TEAM.md +4 -0
  907. package/examples/jungian-daimon-org/teams/selene/agents/animus/AGENTS.md +10 -0
  908. package/examples/jungian-daimon-org/teams/selene/agents/animus/Spawnfile +33 -0
  909. package/examples/jungian-daimon-org/teams/selene/agents/representative/AGENTS.md +19 -0
  910. package/examples/jungian-daimon-org/teams/selene/agents/representative/Spawnfile +33 -0
  911. package/examples/jungian-daimon-org/teams/selene/agents/shadow/AGENTS.md +10 -0
  912. package/examples/jungian-daimon-org/teams/selene/agents/shadow/Spawnfile +30 -0
  913. package/examples/mixed-runtime-org/Spawnfile +71 -0
  914. package/examples/mixed-runtime-org/TEAM.md +8 -0
  915. package/examples/mixed-runtime-org/agents/analyst/AGENTS.md +8 -0
  916. package/examples/mixed-runtime-org/agents/analyst/Spawnfile +27 -0
  917. package/examples/mixed-runtime-org/agents/conductor/AGENTS.md +8 -0
  918. package/examples/mixed-runtime-org/agents/conductor/Spawnfile +27 -0
  919. package/examples/mixed-runtime-org/agents/localist/AGENTS.md +7 -0
  920. package/examples/mixed-runtime-org/agents/localist/Spawnfile +50 -0
  921. package/examples/moltnet-team-chat/Spawnfile +43 -0
  922. package/examples/moltnet-team-chat/TEAM.md +5 -0
  923. package/examples/moltnet-team-chat/agents/coordinator/AGENTS.md +9 -0
  924. package/examples/moltnet-team-chat/agents/coordinator/Spawnfile +26 -0
  925. package/examples/moltnet-team-chat/teams/analysis/Spawnfile +23 -0
  926. package/examples/moltnet-team-chat/teams/analysis/TEAM.md +3 -0
  927. package/examples/moltnet-team-chat/teams/analysis/agents/observer/AGENTS.md +5 -0
  928. package/examples/moltnet-team-chat/teams/analysis/agents/observer/Spawnfile +19 -0
  929. package/examples/moltnet-team-chat/teams/analysis/agents/representative/AGENTS.md +5 -0
  930. package/examples/moltnet-team-chat/teams/analysis/agents/representative/Spawnfile +19 -0
  931. package/examples/moltnet-team-chat/teams/field/Spawnfile +41 -0
  932. package/examples/moltnet-team-chat/teams/field/TEAM.md +3 -0
  933. package/examples/moltnet-team-chat/teams/field/agents/observer/AGENTS.md +5 -0
  934. package/examples/moltnet-team-chat/teams/field/agents/observer/Spawnfile +26 -0
  935. package/examples/moltnet-team-chat/teams/field/agents/representative/AGENTS.md +11 -0
  936. package/examples/moltnet-team-chat/teams/field/agents/representative/Spawnfile +26 -0
  937. package/examples/single-agent/AGENTS.md +3 -0
  938. package/examples/single-agent/HEARTBEAT.md +3 -0
  939. package/examples/single-agent/IDENTITY.md +3 -0
  940. package/examples/single-agent/MEMORY.md +3 -0
  941. package/examples/single-agent/SOUL.md +3 -0
  942. package/examples/single-agent/Spawnfile +41 -0
  943. package/examples/single-agent/skills/web_search/SKILL.md +6 -0
  944. package/moltnet-releases.json +21 -0
  945. package/package.json +57 -14
  946. package/runtimes.yaml +11 -23
  947. package/dist/runtime/openclaw/scaffold-assets/CLAUDE.md +0 -5
  948. package/dist/runtime/picoclaw/scaffold-assets/CLAUDE.md +0 -5
  949. /package/dist/runtime/openclaw/scaffold-assets/{AGENTS.md → WORKSPACE_AGENTS.md} +0 -0
  950. /package/dist/runtime/picoclaw/scaffold-assets/{AGENTS.md → WORKSPACE_AGENTS.md} +0 -0
@@ -0,0 +1,111 @@
1
+ import { spawn } from "node:child_process";
2
+ import { randomBytes } from "node:crypto";
3
+ import { lstat, readFile } from "node:fs/promises";
4
+ import os from "node:os";
5
+ import path from "node:path";
6
+ import { SpawnfileError } from "../../../shared/index.js";
7
+ import { DAIMON_GROK_ENGINE_BROKER } from "../../../runtime/daimon/contractManifest.js";
8
+ import { parseTrainingBrokerDeclaration } from "./declaration.js";
9
+ import { loadDaimonProjectionModule, resolveTrainingGrokProjection } from "./projection.js";
10
+ import { resolveTrainingGrokRegistration } from "./registration.js";
11
+ import { createTrainingSlotRuntime } from "./runtime.js";
12
+ import { createTrainingSlotSupervisor, serveTrainingSlotSupervisor, startTrainingSlot } from "./supervisor.js";
13
+ import { DAIMON_ORGANIZATION_UID, TRAINING_BOOTSTRAP_MOUNT, TRAINING_BROKER_DECLARATION_FILE, TRAINING_GRANT_HOME_ROOT, TRAINING_SUPERVISOR_SOCKET } from "./paths.js";
14
+ export const TRAINING_GROK_BROKER_CONTROL_SOCKET_ENV = "PAIDEIA_GROK_BROKER_CONTROL_SOCKET";
15
+ export const TRAINING_GROK_GRANT_HOME_ROOT_ENV = "PAIDEIA_GROK_GRANT_HOME_ROOT";
16
+ export const TRAINING_ENTRYPOINT_COMMAND = "/opt/training/bin/train";
17
+ /**
18
+ * The desktop Grok login, in every spelling a caller might reach it by.
19
+ *
20
+ * D2 is explicit: training uses one dedicated Grok login and never the
21
+ * developer's own. An in-container refresh rotates the credential, so mounting
22
+ * the desktop leaf would invalidate the developer's desktop session as a side
23
+ * effect of a training run — and the refreshed token would live on tmpfs, so
24
+ * the desktop login would be gone rather than moved.
25
+ */
26
+ export const desktopGrokAuthPaths = (home = os.homedir()) => [path.resolve(home, ".grok/auth.json"), path.resolve(home, ".grok", "auth.json")];
27
+ export const assertNotDesktopGrokAuth = (source, home = os.homedir()) => {
28
+ if (desktopGrokAuthPaths(home).includes(path.resolve(source))) {
29
+ throw new SpawnfileError("validation_error", "Training refuses the desktop ~/.grok/auth.json as its Grok bootstrap; import a dedicated login with `spawnfile auth import grok --profile paideia-training --from <dir>`");
30
+ }
31
+ return source;
32
+ };
33
+ /** The bootstrap leaf inside the container: the fixed read-only mount, a bounded regular file, never a symlink. */
34
+ const assertBootstrap = async (declaration) => {
35
+ if (declaration.bootstrap !== TRAINING_BOOTSTRAP_MOUNT) {
36
+ throw new SpawnfileError("validation_error", `The training Grok bootstrap must be mounted at ${TRAINING_BOOTSTRAP_MOUNT}`);
37
+ }
38
+ const info = await lstat(declaration.bootstrap);
39
+ if (!info.isFile() || info.isSymbolicLink() || info.size < 2 || info.size > DAIMON_GROK_SUBSCRIPTION_MAX_BYTES) {
40
+ throw new SpawnfileError("validation_error", "The training Grok bootstrap must be a bounded regular credential leaf");
41
+ }
42
+ };
43
+ const DAIMON_GROK_SUBSCRIPTION_MAX_BYTES = 64 * 1024;
44
+ /**
45
+ * The broker-capable training container's root entrypoint.
46
+ *
47
+ * Order matters and is the whole privilege model: provision as root with the
48
+ * production capability set, start the launcher (root) and the broker and
49
+ * relay (2100) and prove each one's post-drop identity, publish the slot
50
+ * supervisor socket, and only then drop to uid 2000 with an empty capability
51
+ * bounding set to run `train`. Paideia, DSPy and the judges are that uid; the
52
+ * model's own tools are the worker uid the launcher alone can reach.
53
+ */
54
+ export const runTrainingBrokerEntrypoint = async (options) => {
55
+ const log = options.log ?? ((line) => process.stderr.write(`[training-entrypoint] ${line}\n`));
56
+ if (process.getuid?.() !== 0)
57
+ throw new SpawnfileError("runtime_error", "The broker-capable training container must start as root");
58
+ const declaration = parseTrainingBrokerDeclaration(JSON.parse(await readFile(options.declarationPath ?? TRAINING_BROKER_DECLARATION_FILE, "utf8")));
59
+ await assertBootstrap(declaration);
60
+ const registration = resolveTrainingGrokRegistration(declaration);
61
+ const daimon = await (options.loadDaimon ?? loadDaimonProjectionModule)();
62
+ // Daimon's projection is I/O-free, so the digest the receipt will bind is known before anything is provisioned.
63
+ const { projectionSha256 } = await resolveTrainingGrokProjection(declaration, registration, daimon);
64
+ const runtime = createTrainingSlotRuntime({ declaration, registration, projectionSha256 });
65
+ // Provision, start, canary and publish the slot preflight receipt before `train` exists at all: the
66
+ // first trial must not be the one trial that runs on no worker-uid denial evidence, and a refusal
67
+ // here costs nothing while the same refusal after the first wake costs that trial's spend.
68
+ const preflight = await startTrainingSlot(runtime, randomBytes(32).toString("hex"));
69
+ const supervisor = createTrainingSlotSupervisor({ runtime, organizationUid: declaration.organizationUid });
70
+ const server = serveTrainingSlotSupervisor(supervisor, TRAINING_SUPERVISOR_SOCKET, log, declaration.organizationUid);
71
+ log(`slot ${registration.slot} provisioned for ${registration.agentId} (${registration.model}/${registration.reasoningEffort}), projection ${projectionSha256}, `
72
+ + `generation ${preflight.generation} with ${preflight.canaries} denied canaries at ${preflight.receipt}`);
73
+ const status = await runTrainingChild(options.argv, declaration, log);
74
+ server.close();
75
+ await runtime.stop();
76
+ return status;
77
+ };
78
+ /**
79
+ * `train` as uid 2000 with an empty bounding set, proven inside the child
80
+ * before it execs: `setpriv --bounding-set=-all` silently does nothing without
81
+ * `CAP_SETPCAP`, so the guard has to read `/proc/self/status` rather than
82
+ * trust the flag.
83
+ */
84
+ export const trainingChildArgv = (argv, uid = DAIMON_ORGANIZATION_UID) => [
85
+ "setpriv", "--clear-groups", `--reuid=${uid}`, `--regid=${uid}`, "--inh-caps=-all", "--ambient-caps=-all", "--bounding-set=-all",
86
+ "--", "/bin/bash", "-ceu",
87
+ 'if [ "$EUID" -eq 0 ]; then echo "training must not run as root" >&2; exit 1; fi\n'
88
+ + 'test "$(sed -n "s/^CapBnd:[[:space:]]*//p" /proc/self/status)" = 0000000000000000\n'
89
+ + 'test "$(sed -n "s/^CapEff:[[:space:]]*//p" /proc/self/status)" = 0000000000000000\n'
90
+ + 'exec "$@"',
91
+ "bash", TRAINING_ENTRYPOINT_COMMAND, ...argv
92
+ ];
93
+ const runTrainingChild = (argv, declaration, log) => new Promise((resolve) => {
94
+ const command = trainingChildArgv(argv, declaration.organizationUid);
95
+ const child = spawn(command[0], command.slice(1), {
96
+ stdio: ["ignore", "inherit", "inherit"],
97
+ env: {
98
+ ...process.env,
99
+ [TRAINING_GROK_BROKER_CONTROL_SOCKET_ENV]: DAIMON_GROK_ENGINE_BROKER.controlSocketPath,
100
+ [TRAINING_GROK_GRANT_HOME_ROOT_ENV]: TRAINING_GRANT_HOME_ROOT,
101
+ HOME: "/home/training"
102
+ }
103
+ });
104
+ const forward = (signal) => () => child.kill(signal);
105
+ for (const signal of ["SIGTERM", "SIGINT", "SIGHUP"])
106
+ process.on(signal, forward(signal));
107
+ child.once("exit", (code, signal) => {
108
+ log(`training exited code=${code ?? "null"} signal=${signal ?? "none"}`);
109
+ resolve(signal ? (signal === "SIGINT" ? 130 : 143) : code ?? 1);
110
+ });
111
+ });
@@ -0,0 +1,10 @@
1
+ export { parseTrainingBrokerDeclaration, trainingBrokerDeclarationSchema, type TrainingBrokerDeclaration } from "./declaration.js";
2
+ export { assertNotDesktopGrokAuth, desktopGrokAuthPaths, runTrainingBrokerEntrypoint, trainingChildArgv, TRAINING_GROK_BROKER_CONTROL_SOCKET_ENV, TRAINING_GROK_GRANT_HOME_ROOT_ENV } from "./entrypoint.js";
3
+ export { brokerProcessPlan, startBrokerProcesses, stopBrokerProcesses } from "./processes.js";
4
+ export { loadDaimonProjectionModule, resolveTrainingGrokProjection, trainingOrganizationRuntimeConfig } from "./projection.js";
5
+ export { renderTrainingBrokerProvisioning, renderTrainingIdentities, trainingSlotDirectories } from "./provisioning.js";
6
+ export { buildTrainingSlotReceipt, readGrokExecutableSha256, resolveBackingFilesystem, resolveTrainingCanaries } from "./receipt.js";
7
+ export { resolveTrainingGrokDenyPaths, resolveTrainingGrokRegistration } from "./registration.js";
8
+ export { createTrainingSlotRuntime } from "./runtime.js";
9
+ export { assertTrainingSupervisorSocketIdentity, createTrainingSlotSupervisor, serveTrainingSlotSupervisor, TRAINING_SUPERVISOR_PROTOCOL, type TrainingSlotRuntime } from "./supervisor.js";
10
+ export * from "./paths.js";
@@ -0,0 +1,10 @@
1
+ export { parseTrainingBrokerDeclaration, trainingBrokerDeclarationSchema } from "./declaration.js";
2
+ export { assertNotDesktopGrokAuth, desktopGrokAuthPaths, runTrainingBrokerEntrypoint, trainingChildArgv, TRAINING_GROK_BROKER_CONTROL_SOCKET_ENV, TRAINING_GROK_GRANT_HOME_ROOT_ENV } from "./entrypoint.js";
3
+ export { brokerProcessPlan, startBrokerProcesses, stopBrokerProcesses } from "./processes.js";
4
+ export { loadDaimonProjectionModule, resolveTrainingGrokProjection, trainingOrganizationRuntimeConfig } from "./projection.js";
5
+ export { renderTrainingBrokerProvisioning, renderTrainingIdentities, trainingSlotDirectories } from "./provisioning.js";
6
+ export { buildTrainingSlotReceipt, readGrokExecutableSha256, resolveBackingFilesystem, resolveTrainingCanaries } from "./receipt.js";
7
+ export { resolveTrainingGrokDenyPaths, resolveTrainingGrokRegistration } from "./registration.js";
8
+ export { createTrainingSlotRuntime } from "./runtime.js";
9
+ export { assertTrainingSupervisorSocketIdentity, createTrainingSlotSupervisor, serveTrainingSlotSupervisor, TRAINING_SUPERVISOR_PROTOCOL } from "./supervisor.js";
10
+ export * from "./paths.js";
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env node
2
+ import { runTrainingBrokerEntrypoint } from "./entrypoint.js";
3
+ /**
4
+ * The broker-capable training image's root entrypoint process. The image ships
5
+ * it; the host supplies only the read-only `spawnfile.training-broker.v1`
6
+ * declaration and never a script, so no host executable enters the container.
7
+ */
8
+ const main = async () => {
9
+ process.exitCode = await runTrainingBrokerEntrypoint({ argv: process.argv.slice(2) });
10
+ };
11
+ main().catch((error) => {
12
+ process.stderr.write(`[training-entrypoint] ${error instanceof Error ? error.message : String(error)}\n`);
13
+ process.exitCode = 1;
14
+ });
@@ -0,0 +1,196 @@
1
+ import { DAIMON_BROKER_UID, DAIMON_ORGANIZATION_UID } from "../../../runtime/daimon/runtimeIdentity.js";
2
+ /**
3
+ * Every container path the broker-capable training container fixes.
4
+ *
5
+ * They are fixed rather than derived because three parties must agree on them
6
+ * without talking to each other: the root entrypoint that provisions them, the
7
+ * root slot supervisor that wipes and re-provisions them on recycle, and
8
+ * Paideia's native adapter, which writes them into `paideia.daimon-native.launch.v2`
9
+ * and has no way to ask the container what it chose. Daimon's projection never
10
+ * resolves a path, so each one must also be canonical and never a symlink; the
11
+ * provisioning program asserts that before a slot is used.
12
+ *
13
+ * Everything under `/run/training/slot` is per-trial state on tmpfs — never the
14
+ * Grok realm volume (R2). The realm volume holds only `auth.json` and the
15
+ * broker credential journal, so a recycle can wipe the slot without touching
16
+ * the one durable rotating credential.
17
+ */
18
+ export declare const TRAINING_RUN_ROOT = "/run/training/output";
19
+ export declare const TRAINING_SEALED_INPUTS_ROOT = "/run/training/inputs";
20
+ export declare const TRAINING_PAIDEIA_ROOT = "/run/paideia";
21
+ export declare const TRAINING_CONTEXT_FILE = "/run/paideia/context.json";
22
+ /** Host-written, read-only `spawnfile.training-broker.v1` declaration the root entrypoint reads. */
23
+ export declare const TRAINING_BROKER_DECLARATION_FILE = "/run/paideia/training-broker.json";
24
+ export declare const TRAINING_SLOT_ROOT = "/run/training/slot";
25
+ export declare const TRAINING_SLOT_WORKSPACE = "/run/training/slot/workspace";
26
+ export declare const TRAINING_SLOT_RUNTIME_HOME = "/run/training/slot/runtime-home";
27
+ export declare const TRAINING_SLOT_STATE_ROOT = "/run/training/slot/state";
28
+ export declare const TRAINING_SLOT_ACCEPTANCE_STORE = "/run/training/slot/state/wake-acceptance";
29
+ /** Per-slot turn store. On tmpfs on purpose: a replayed turn from trial N must never satisfy trial N+1 (R2). */
30
+ export declare const TRAINING_SLOT_TURN_STORE = "/run/training/slot/turns";
31
+ export declare const TRAINING_SLOT_USAGE_DIRECTORY = "/run/training/slot/usage";
32
+ export declare const TRAINING_SLOT_USAGE_LEDGER = "/run/training/slot/usage/usage.jsonl";
33
+ export declare const TRAINING_SLOT_PREFLIGHT_RECEIPT = "/run/training/slot/preflight.json";
34
+ /** Supervisor-owned monotonic generation counter; survives a recycle, never a container restart. */
35
+ export declare const TRAINING_SLOT_GENERATION_FILE = "/run/training/slot/generation.json";
36
+ export declare const TRAINING_INFERENCE_DIRECTORY = "/run/training/inference";
37
+ export declare const TRAINING_INFERENCE_LEDGER = "/run/training/inference/inference.jsonl";
38
+ /** Judge grant homes: `2000:2000 0700`, denied to every worker uid. Paideia reads it as `PAIDEIA_GROK_GRANT_HOME_ROOT`. */
39
+ export declare const TRAINING_GRANT_HOME_ROOT = "/run/training/grants";
40
+ /**
41
+ * Private temp for the broker and its relay (uid 2100, outside the organization
42
+ * group), deliberately **outside** `/run/daimon-engine-broker`.
43
+ *
44
+ * Production puts it at `<control root>/tmp`, which is fine there: that root is
45
+ * removed and recreated exactly once, at container start. Training
46
+ * re-provisions the same root on every recycle, and the launch mounts this
47
+ * directory as its own tmpfs — so a `tmp/` inside the cleared root is a *mount
48
+ * point*, and clearing a mount point fails `EBUSY`. A live P8 launch died
49
+ * exactly there. Its own tmpfs under `/run/training` is never a wipe target and
50
+ * is denied to every worker uid.
51
+ */
52
+ export declare const TRAINING_BROKER_TMPDIR = "/run/training/broker-tmp";
53
+ export declare const TRAINING_SUPERVISOR_DIRECTORY = "/run/training/supervisor";
54
+ export declare const TRAINING_SUPERVISOR_SOCKET = "/run/training/supervisor/control.sock";
55
+ export declare const TRAINING_SUPERVISOR_LOG = "/run/training/supervisor/supervisor.log";
56
+ export declare const TRAINING_WORKER_ROOT = "/var/lib/daimon-workers";
57
+ export declare const TRAINING_SLOT_INDEX = 0;
58
+ export declare const TRAINING_WORKER_UID: number;
59
+ export declare const TRAINING_WORKER_HOME: string;
60
+ /**
61
+ * Paideia's own fixed container paths (`containerPaths` in its native launch
62
+ * schema). They are *not* individual deny entries: Grok 1.0.34 materializes
63
+ * every `deny` target inside bubblewrap as the worker uid, and it cannot
64
+ * create a file inside `/run/paideia`, which belongs to uid 2000 alone. The
65
+ * single `/run/paideia` mask below covers all of them, which is also stronger
66
+ * — a file Paideia adds later is covered without re-provisioning the slot.
67
+ */
68
+ export declare const TRAINING_CALLER_PROTECTED_PATHS: readonly ["/run/paideia/config.json", "/run/paideia/control", "/run/paideia/launch.json", "/run/paideia/token", "/run/paideia/env", "/run/paideia/preparation.json", "/run/paideia/repair.json"];
69
+ /**
70
+ * `paideia.daimon-native.launch.v2`'s `broker.evaluatorPaths`, in full.
71
+ *
72
+ * This is not a summary of the five roles — it is the **whole** set of deny
73
+ * entries this container adds beyond Daimon's own protected paths, because
74
+ * Paideia's worker resolves the projection from exactly
75
+ * `[...new Set(broker.evaluatorPaths.map(row => row.path))].sort()`. A launch
76
+ * that carried only the five roles made Daimon hash a different deny list than
77
+ * the one provisioning wrote, and a live run died on
78
+ * `Grok broker projection digest differs from the launch receipt`.
79
+ *
80
+ * `role` is Paideia's closed five-value enum and may repeat; only `path` is
81
+ * unique. The four roles with a dedicated path keep it, and everything else is
82
+ * tagged `context` — the caller-state role — since there is no other way to
83
+ * carry a path through that contract.
84
+ */
85
+ export declare const TRAINING_EVALUATOR_PATHS: readonly {
86
+ role: "run-root" | "context" | "sealed-inputs" | "judge-home" | "slot-ledger";
87
+ path: string;
88
+ }[];
89
+ /**
90
+ * One entry per evaluator role, in declaration order: the launch receipt requires all five roles,
91
+ * and several `context` paths share that role, so the first of each role is the role's root.
92
+ */
93
+ export declare const TRAINING_EVALUATOR_ROOTS: {
94
+ role: "run-root" | "context" | "sealed-inputs" | "judge-home" | "slot-ledger";
95
+ path: string;
96
+ }[];
97
+ /**
98
+ * What `paideia.daimon-native.launch.v2`'s `controlRoot` must be.
99
+ *
100
+ * Paideia's worker passes it to Daimon as `acceptanceStorePath`, and Daimon adds
101
+ * it to the projection's deny list, so it has to be the same path this
102
+ * container masks as its slot state root. Its own default
103
+ * (`/run/paideia/control`) would both change the digest and nest inside the
104
+ * `/run/paideia` mask, which Grok refuses — Daimon renders a nested mask
105
+ * without complaining, so the failure would only appear at the first turn.
106
+ */
107
+ export declare const TRAINING_CALLER_CONTROL_ROOT = "/run/training/slot/state";
108
+ /**
109
+ * Everything this container provisions that the one training worker must not
110
+ * read, beyond Daimon's own protected set (realm, bootstrap, acceptance store).
111
+ * Each entry sits strictly below a Grok 1.0.34 base-profile grant — Grok
112
+ * refuses a profile whose deny entry equals or contains `/run`, `/var`, `/etc`
113
+ * or `/tmp` — and no entry covers another, because masks cannot nest.
114
+ */
115
+ /**
116
+ * The added deny set is exactly the launch's `evaluatorPaths`, so Spawnfile and
117
+ * Paideia hand Daimon's resolver the same list. `TRAINING_SLOT_STATE_ROOT` is
118
+ * deliberately absent: Daimon adds it itself, from the control root above.
119
+ */
120
+ export declare const TRAINING_ADDED_DENY_PATHS: readonly string[];
121
+ /** Paths the provisioning program creates root-owned `0700` when absent, so every deny entry always has a target inode. */
122
+ export declare const TRAINING_OPTIONAL_DENY_DIRECTORIES: readonly string[];
123
+ /**
124
+ * Deny entries a launch may legitimately not have mounted. Everything else must
125
+ * exist before a worker turn: Grok 1.0.34 creates an absent `deny` target as
126
+ * the worker uid inside bubblewrap and refuses the whole profile when it
127
+ * cannot, so provisioning materializes every other entry itself.
128
+ */
129
+ export declare const TRAINING_DEFERRED_DENY_PATHS: readonly string[];
130
+ /**
131
+ * Deny entries the launch binds from the host, named so a refusal can say why.
132
+ *
133
+ * Only the run root is one. The sealed inputs root is **not**: the launch binds
134
+ * each declared input at `/run/training/inputs/<id>`, so `/run/training/inputs`
135
+ * itself is the binds' *parent*, a directory on the read-only image root — and
136
+ * that is exactly what makes it sealable (see `TRAINING_SEALED_DENY_PATHS`).
137
+ *
138
+ * Being a host bind is no longer a waiver on its own. On Docker Desktop and
139
+ * Colima a bind lands on virtiofs/grpcfuse, which ignores `chown`, and there a
140
+ * worker-uid probe carries no information; on a Linux daemon over ext4, xfs,
141
+ * btrfs or overlay the same bind enforces ownership and the probe is real. The
142
+ * canary resolver asks the backing filesystem rather than this list, which is
143
+ * why the documented `refuse` default is reachable at all.
144
+ */
145
+ export declare const TRAINING_HOST_BIND_DENY_PATHS: readonly string[];
146
+ /**
147
+ * Deny entries whose denial must be proven by the kernel under **every**
148
+ * policy, because the experiment's central claim depends on them.
149
+ *
150
+ * `/run/training/inputs` holds the sealed train and test datasets. A bubblewrap
151
+ * `deny` mask is not a boundary the subject cannot lift: the pinned seccomp
152
+ * profile must allow `clone/unshare/mount/umount2/pivot_root/setns` for
153
+ * bubblewrap itself, and the container runs `apparmor=unconfined`, so a
154
+ * worker-uid process can open a user + mount namespace of its own and either
155
+ * detach the mask or bind the mask's parent somewhere fresh.
156
+ *
157
+ * What survives that is DAC on the datasets' ancestor. The image bakes this
158
+ * directory `0:<organization gid> 0750` on the read-only root, so:
159
+ *
160
+ * - the worker uid is in neither the owner nor the group class and loses
161
+ * search permission on the one directory every dataset read must traverse;
162
+ * - the inode is owned by real uid 0, which a `unshare --map-root-user`
163
+ * namespace does not map, so `CAP_DAC_OVERRIDE` there cannot override it;
164
+ * - the root filesystem is read-only, so nothing in the container — root
165
+ * included — can loosen the mode after the image is built.
166
+ *
167
+ * Provisioning asserts the mode and then attacks it as the worker uid, and the
168
+ * canary resolver refuses the slot rather than certifying one of these on the
169
+ * sandbox profile alone.
170
+ */
171
+ export declare const TRAINING_SEALED_DENY_PATHS: readonly string[];
172
+ /** Spawnfile-owned per-route seal attestation, written by provisioning beside the slot preflight receipt. */
173
+ export declare const TRAINING_SEALED_INPUTS_ATTESTATION = "/run/training/slot/sealed-inputs.json";
174
+ /** The image-baked identity of the sealed inputs root, asserted before every slot and never writable at runtime. */
175
+ export declare const TRAINING_SEALED_INPUTS_IDENTITY: {
176
+ readonly uid: 0;
177
+ readonly gid: 2000;
178
+ readonly mode: "750";
179
+ };
180
+ /**
181
+ * What a recycle removes outright, and what it only empties.
182
+ *
183
+ * Nothing the launch mounts may be at or below any of these. A mount point
184
+ * cannot be unlinked while it is mounted, so a wipe target holding one aborts
185
+ * the recycle — which is how the broker/relay `TMPDIR` took down a live launch
186
+ * when it still lived at `<control root>/tmp`. `paths.test.ts` enforces that
187
+ * against the launch's own mount list; the rendered shell skips mount points
188
+ * anyway, so an undeclared one degrades to "left in place and reported" rather
189
+ * than a failed provision.
190
+ */
191
+ export declare const TRAINING_WIPE_TARGETS: readonly string[];
192
+ /** Emptied but kept: their paths are registered with Daimon and must stay canonical across a recycle. */
193
+ export declare const TRAINING_CLEAR_TARGETS: readonly string[];
194
+ export declare const TRAINING_REALM_MOUNT: "/var/lib/spawnfile/daimon/grok-subscription-realm";
195
+ export declare const TRAINING_BOOTSTRAP_MOUNT: "/var/lib/spawnfile/daimon/grok-bootstrap-auth";
196
+ export { DAIMON_BROKER_UID, DAIMON_ORGANIZATION_UID };
@@ -0,0 +1,241 @@
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 fixed rather than derived 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/slot` 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.v1` declaration the root entrypoint reads. */
27
+ export const TRAINING_BROKER_DECLARATION_FILE = `${TRAINING_PAIDEIA_ROOT}/training-broker.json`;
28
+ export const TRAINING_SLOT_ROOT = "/run/training/slot";
29
+ export const TRAINING_SLOT_WORKSPACE = `${TRAINING_SLOT_ROOT}/workspace`;
30
+ export const TRAINING_SLOT_RUNTIME_HOME = `${TRAINING_SLOT_ROOT}/runtime-home`;
31
+ export const TRAINING_SLOT_STATE_ROOT = `${TRAINING_SLOT_ROOT}/state`;
32
+ export const TRAINING_SLOT_ACCEPTANCE_STORE = `${TRAINING_SLOT_STATE_ROOT}/wake-acceptance`;
33
+ /** Per-slot turn store. On tmpfs on purpose: a replayed turn from trial N must never satisfy trial N+1 (R2). */
34
+ export const TRAINING_SLOT_TURN_STORE = `${TRAINING_SLOT_ROOT}/turns`;
35
+ export const TRAINING_SLOT_USAGE_DIRECTORY = `${TRAINING_SLOT_ROOT}/usage`;
36
+ export const TRAINING_SLOT_USAGE_LEDGER = `${TRAINING_SLOT_USAGE_DIRECTORY}/usage.jsonl`;
37
+ export const TRAINING_SLOT_PREFLIGHT_RECEIPT = `${TRAINING_SLOT_ROOT}/preflight.json`;
38
+ /** Supervisor-owned monotonic generation counter; survives a recycle, never a container restart. */
39
+ export const TRAINING_SLOT_GENERATION_FILE = `${TRAINING_SLOT_ROOT}/generation.json`;
40
+ export const TRAINING_INFERENCE_DIRECTORY = "/run/training/inference";
41
+ export const TRAINING_INFERENCE_LEDGER = `${TRAINING_INFERENCE_DIRECTORY}/inference.jsonl`;
42
+ /** Judge grant homes: `2000:2000 0700`, denied to every worker uid. Paideia reads it as `PAIDEIA_GROK_GRANT_HOME_ROOT`. */
43
+ export const TRAINING_GRANT_HOME_ROOT = "/run/training/grants";
44
+ /**
45
+ * Private temp for the broker and its relay (uid 2100, outside the organization
46
+ * group), deliberately **outside** `/run/daimon-engine-broker`.
47
+ *
48
+ * Production puts it at `<control root>/tmp`, which is fine there: that root is
49
+ * removed and recreated exactly once, at container start. Training
50
+ * re-provisions the same root on every recycle, and the launch mounts this
51
+ * directory as its own tmpfs — so a `tmp/` inside the cleared root is a *mount
52
+ * point*, and clearing a mount point fails `EBUSY`. A live P8 launch died
53
+ * exactly there. Its own tmpfs under `/run/training` is never a wipe target and
54
+ * is denied to every worker uid.
55
+ */
56
+ export const TRAINING_BROKER_TMPDIR = "/run/training/broker-tmp";
57
+ export const TRAINING_SUPERVISOR_DIRECTORY = "/run/training/supervisor";
58
+ export const TRAINING_SUPERVISOR_SOCKET = `${TRAINING_SUPERVISOR_DIRECTORY}/control.sock`;
59
+ export const TRAINING_SUPERVISOR_LOG = `${TRAINING_SUPERVISOR_DIRECTORY}/supervisor.log`;
60
+ export const TRAINING_WORKER_ROOT = DAIMON_WORKER_ROOT;
61
+ export const TRAINING_SLOT_INDEX = 0;
62
+ export const TRAINING_WORKER_UID = DAIMON_FIRST_WORKER_UID + TRAINING_SLOT_INDEX;
63
+ export const TRAINING_WORKER_HOME = path.posix.join(TRAINING_WORKER_ROOT, String(TRAINING_WORKER_UID));
64
+ /**
65
+ * Paideia's own fixed container paths (`containerPaths` in its native launch
66
+ * schema). They are *not* individual deny entries: Grok 1.0.34 materializes
67
+ * every `deny` target inside bubblewrap as the worker uid, and it cannot
68
+ * create a file inside `/run/paideia`, which belongs to uid 2000 alone. The
69
+ * single `/run/paideia` mask below covers all of them, which is also stronger
70
+ * — a file Paideia adds later is covered without re-provisioning the slot.
71
+ */
72
+ export const TRAINING_CALLER_PROTECTED_PATHS = [
73
+ `${TRAINING_PAIDEIA_ROOT}/config.json`,
74
+ `${TRAINING_PAIDEIA_ROOT}/control`,
75
+ `${TRAINING_PAIDEIA_ROOT}/launch.json`,
76
+ `${TRAINING_PAIDEIA_ROOT}/token`,
77
+ `${TRAINING_PAIDEIA_ROOT}/env`,
78
+ `${TRAINING_PAIDEIA_ROOT}/preparation.json`,
79
+ `${TRAINING_PAIDEIA_ROOT}/repair.json`
80
+ ];
81
+ /**
82
+ * `paideia.daimon-native.launch.v2`'s `broker.evaluatorPaths`, in full.
83
+ *
84
+ * This is not a summary of the five roles — it is the **whole** set of deny
85
+ * entries this container adds beyond Daimon's own protected paths, because
86
+ * Paideia's worker resolves the projection from exactly
87
+ * `[...new Set(broker.evaluatorPaths.map(row => row.path))].sort()`. A launch
88
+ * that carried only the five roles made Daimon hash a different deny list than
89
+ * the one provisioning wrote, and a live run died on
90
+ * `Grok broker projection digest differs from the launch receipt`.
91
+ *
92
+ * `role` is Paideia's closed five-value enum and may repeat; only `path` is
93
+ * unique. The four roles with a dedicated path keep it, and everything else is
94
+ * tagged `context` — the caller-state role — since there is no other way to
95
+ * carry a path through that contract.
96
+ */
97
+ export const TRAINING_EVALUATOR_PATHS = [
98
+ { role: "run-root", path: TRAINING_RUN_ROOT },
99
+ { role: "sealed-inputs", path: TRAINING_SEALED_INPUTS_ROOT },
100
+ { role: "judge-home", path: TRAINING_GRANT_HOME_ROOT },
101
+ { role: "slot-ledger", path: TRAINING_SLOT_USAGE_DIRECTORY },
102
+ { role: "context", path: TRAINING_PAIDEIA_ROOT },
103
+ { role: "context", path: TRAINING_BROKER_TMPDIR },
104
+ { role: "context", path: TRAINING_INFERENCE_DIRECTORY },
105
+ { role: "context", path: TRAINING_SLOT_TURN_STORE },
106
+ { role: "context", path: TRAINING_SUPERVISOR_DIRECTORY },
107
+ { role: "context", path: path.posix.dirname(DAIMON_GROK_ENGINE_BROKER.controlSocketPath) },
108
+ { role: "context", path: path.posix.dirname(DAIMON_GROK_ENGINE_BROKER.registrationPath) },
109
+ { role: "context", path: DAIMON_GROK_TURN_USAGE_LEDGER.directoryPath },
110
+ { role: "context", path: DAIMON_WAKE_FUSE_DIRECTORY }
111
+ ];
112
+ /**
113
+ * One entry per evaluator role, in declaration order: the launch receipt requires all five roles,
114
+ * and several `context` paths share that role, so the first of each role is the role's root.
115
+ */
116
+ export const TRAINING_EVALUATOR_ROOTS = TRAINING_EVALUATOR_PATHS
117
+ .filter((entry, index) => TRAINING_EVALUATOR_PATHS.findIndex((first) => first.role === entry.role) === index);
118
+ /**
119
+ * What `paideia.daimon-native.launch.v2`'s `controlRoot` must be.
120
+ *
121
+ * Paideia's worker passes it to Daimon as `acceptanceStorePath`, and Daimon adds
122
+ * it to the projection's deny list, so it has to be the same path this
123
+ * container masks as its slot state root. Its own default
124
+ * (`/run/paideia/control`) would both change the digest and nest inside the
125
+ * `/run/paideia` mask, which Grok refuses — Daimon renders a nested mask
126
+ * without complaining, so the failure would only appear at the first turn.
127
+ */
128
+ export const TRAINING_CALLER_CONTROL_ROOT = TRAINING_SLOT_STATE_ROOT;
129
+ /**
130
+ * Everything this container provisions that the one training worker must not
131
+ * read, beyond Daimon's own protected set (realm, bootstrap, acceptance store).
132
+ * Each entry sits strictly below a Grok 1.0.34 base-profile grant — Grok
133
+ * refuses a profile whose deny entry equals or contains `/run`, `/var`, `/etc`
134
+ * or `/tmp` — and no entry covers another, because masks cannot nest.
135
+ */
136
+ /**
137
+ * The added deny set is exactly the launch's `evaluatorPaths`, so Spawnfile and
138
+ * Paideia hand Daimon's resolver the same list. `TRAINING_SLOT_STATE_ROOT` is
139
+ * deliberately absent: Daimon adds it itself, from the control root above.
140
+ */
141
+ export const TRAINING_ADDED_DENY_PATHS = [...new Set(TRAINING_EVALUATOR_PATHS.map((entry) => entry.path))].sort();
142
+ /** Paths the provisioning program creates root-owned `0700` when absent, so every deny entry always has a target inode. */
143
+ export const TRAINING_OPTIONAL_DENY_DIRECTORIES = [
144
+ TRAINING_BROKER_TMPDIR,
145
+ TRAINING_INFERENCE_DIRECTORY,
146
+ TRAINING_SLOT_STATE_ROOT,
147
+ TRAINING_SLOT_TURN_STORE,
148
+ TRAINING_SUPERVISOR_DIRECTORY,
149
+ TRAINING_GRANT_HOME_ROOT,
150
+ // Denied and unused here — training meters per slot — but the mask still needs an inode. The launch
151
+ // mounts each as tmpfs, so this only creates them when a caller ran the entrypoint without them.
152
+ DAIMON_GROK_TURN_USAGE_LEDGER.directoryPath,
153
+ DAIMON_WAKE_FUSE_DIRECTORY
154
+ ];
155
+ /**
156
+ * Deny entries a launch may legitimately not have mounted. Everything else must
157
+ * exist before a worker turn: Grok 1.0.34 creates an absent `deny` target as
158
+ * the worker uid inside bubblewrap and refuses the whole profile when it
159
+ * cannot, so provisioning materializes every other entry itself.
160
+ */
161
+ export const TRAINING_DEFERRED_DENY_PATHS = [
162
+ // Docker materializes both host binds before the entrypoint runs. They sit on the read-only image
163
+ // root, which root cannot create into, so provisioning must tolerate a launch that declared neither.
164
+ TRAINING_RUN_ROOT,
165
+ TRAINING_SEALED_INPUTS_ROOT
166
+ ];
167
+ /**
168
+ * Deny entries the launch binds from the host, named so a refusal can say why.
169
+ *
170
+ * Only the run root is one. The sealed inputs root is **not**: the launch binds
171
+ * each declared input at `/run/training/inputs/<id>`, so `/run/training/inputs`
172
+ * itself is the binds' *parent*, a directory on the read-only image root — and
173
+ * that is exactly what makes it sealable (see `TRAINING_SEALED_DENY_PATHS`).
174
+ *
175
+ * Being a host bind is no longer a waiver on its own. On Docker Desktop and
176
+ * Colima a bind lands on virtiofs/grpcfuse, which ignores `chown`, and there a
177
+ * worker-uid probe carries no information; on a Linux daemon over ext4, xfs,
178
+ * btrfs or overlay the same bind enforces ownership and the probe is real. The
179
+ * canary resolver asks the backing filesystem rather than this list, which is
180
+ * why the documented `refuse` default is reachable at all.
181
+ */
182
+ export const TRAINING_HOST_BIND_DENY_PATHS = [TRAINING_RUN_ROOT, DAIMON_GROK_SUBSCRIPTION_REALM.bootstrapMountPath];
183
+ /**
184
+ * Deny entries whose denial must be proven by the kernel under **every**
185
+ * policy, because the experiment's central claim depends on them.
186
+ *
187
+ * `/run/training/inputs` holds the sealed train and test datasets. A bubblewrap
188
+ * `deny` mask is not a boundary the subject cannot lift: the pinned seccomp
189
+ * profile must allow `clone/unshare/mount/umount2/pivot_root/setns` for
190
+ * bubblewrap itself, and the container runs `apparmor=unconfined`, so a
191
+ * worker-uid process can open a user + mount namespace of its own and either
192
+ * detach the mask or bind the mask's parent somewhere fresh.
193
+ *
194
+ * What survives that is DAC on the datasets' ancestor. The image bakes this
195
+ * directory `0:<organization gid> 0750` on the read-only root, so:
196
+ *
197
+ * - the worker uid is in neither the owner nor the group class and loses
198
+ * search permission on the one directory every dataset read must traverse;
199
+ * - the inode is owned by real uid 0, which a `unshare --map-root-user`
200
+ * namespace does not map, so `CAP_DAC_OVERRIDE` there cannot override it;
201
+ * - the root filesystem is read-only, so nothing in the container — root
202
+ * included — can loosen the mode after the image is built.
203
+ *
204
+ * Provisioning asserts the mode and then attacks it as the worker uid, and the
205
+ * canary resolver refuses the slot rather than certifying one of these on the
206
+ * sandbox profile alone.
207
+ */
208
+ export const TRAINING_SEALED_DENY_PATHS = [TRAINING_SEALED_INPUTS_ROOT];
209
+ /** Spawnfile-owned per-route seal attestation, written by provisioning beside the slot preflight receipt. */
210
+ export const TRAINING_SEALED_INPUTS_ATTESTATION = `${TRAINING_SLOT_ROOT}/sealed-inputs.json`;
211
+ /** The image-baked identity of the sealed inputs root, asserted before every slot and never writable at runtime. */
212
+ export const TRAINING_SEALED_INPUTS_IDENTITY = { uid: 0, gid: DAIMON_ORGANIZATION_UID, mode: "750" };
213
+ /**
214
+ * What a recycle removes outright, and what it only empties.
215
+ *
216
+ * Nothing the launch mounts may be at or below any of these. A mount point
217
+ * cannot be unlinked while it is mounted, so a wipe target holding one aborts
218
+ * the recycle — which is how the broker/relay `TMPDIR` took down a live launch
219
+ * when it still lived at `<control root>/tmp`. `paths.test.ts` enforces that
220
+ * against the launch's own mount list; the rendered shell skips mount points
221
+ * anyway, so an undeclared one degrades to "left in place and reported" rather
222
+ * than a failed provision.
223
+ */
224
+ export const TRAINING_WIPE_TARGETS = [
225
+ TRAINING_WORKER_HOME,
226
+ TRAINING_SLOT_RUNTIME_HOME,
227
+ TRAINING_SLOT_TURN_STORE,
228
+ TRAINING_SLOT_ACCEPTANCE_STORE,
229
+ DAIMON_GROK_ENGINE_BROKER.serviceConfigPath,
230
+ DAIMON_GROK_ENGINE_BROKER.registrationPath
231
+ ];
232
+ /** Emptied but kept: their paths are registered with Daimon and must stay canonical across a recycle. */
233
+ export const TRAINING_CLEAR_TARGETS = [
234
+ TRAINING_SLOT_WORKSPACE,
235
+ TRAINING_SLOT_USAGE_DIRECTORY,
236
+ path.posix.dirname(DAIMON_GROK_ENGINE_BROKER.controlSocketPath),
237
+ path.posix.dirname(DAIMON_GROK_ENGINE_BROKER.registrationPath)
238
+ ];
239
+ export const TRAINING_REALM_MOUNT = DAIMON_GROK_SUBSCRIPTION_REALM.durableMountPath;
240
+ export const TRAINING_BOOTSTRAP_MOUNT = DAIMON_GROK_SUBSCRIPTION_REALM.bootstrapMountPath;
241
+ export { DAIMON_BROKER_UID, DAIMON_ORGANIZATION_UID };
@@ -0,0 +1,42 @@
1
+ import { type ChildProcess } from "node:child_process";
2
+ export declare const DAIMON_RUNTIME_ROOT = "/opt/spawnfile/runtime-installs/daimon";
3
+ /** `00000000000000c1` = CHOWN|SETGID|SETUID, the launcher's bounding set after `setpriv`. */
4
+ export declare const LAUNCHER_CAPABILITY_BOUND = "00000000000000c1";
5
+ export declare const DROPPED_CAPABILITY_BOUND = "0000000000000000";
6
+ export interface BrokerChild {
7
+ name: string;
8
+ pid: number;
9
+ child: ChildProcess;
10
+ uid: number;
11
+ capBnd: string;
12
+ }
13
+ /**
14
+ * The three broker processes, in the order and with the identities production
15
+ * starts them: the root launcher (which alone may `setuid` to a worker uid),
16
+ * the broker backend as uid 2100, and the native control relay as uid 2100.
17
+ * Each one runs with the same bounding set the production entrypoint verifies,
18
+ * and the broker and relay carry their own `TMPDIR` because shared `/tmp` is
19
+ * closed to every process outside the organization group.
20
+ */
21
+ export declare const brokerProcessPlan: () => {
22
+ name: string;
23
+ argv: string[];
24
+ socket: string;
25
+ uid: number;
26
+ capBnd: string;
27
+ }[];
28
+ export interface StartBrokerOptions {
29
+ timeoutMs?: number;
30
+ pollMs?: number;
31
+ procRoot?: string;
32
+ log(line: string): void;
33
+ }
34
+ /**
35
+ * Starts all three, then proves each one reached its socket *and* its expected
36
+ * post-drop identity before the next starts. A broker that is alive but still
37
+ * root, or a relay whose socket never appeared, fails the slot here rather
38
+ * than at the first trial wake.
39
+ */
40
+ export declare const startBrokerProcesses: (options: StartBrokerOptions) => Promise<BrokerChild[]>;
41
+ /** Graceful stop in reverse start order: relay, backend, launcher. `SIGKILL` only after the grace window. */
42
+ export declare const stopBrokerProcesses: (children: readonly BrokerChild[], log: (line: string) => void, graceMs?: number) => Promise<void>;