spawnfile 0.1.32 → 0.1.34

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 (585) hide show
  1. package/README.md +1 -1
  2. package/dist/auth/trainingAuth.d.ts +2 -5
  3. package/dist/cli/devCommands.d.ts +1 -1
  4. package/dist/cli/devCommands.js +0 -66
  5. package/dist/cli/runCli.d.ts +1 -4
  6. package/dist/cli/runCli.js +2 -2
  7. package/dist/cli/trainCommand.js +9 -15
  8. package/dist/cli/trainingBooted.d.ts +7 -0
  9. package/dist/cli/trainingBooted.js +41 -0
  10. package/dist/cli/trainingExecution.d.ts +4 -7
  11. package/dist/cli/trainingExecution.js +4 -32
  12. package/dist/compiler/containerArtifacts.js +0 -5
  13. package/dist/compiler/containerBackedMountRender.js +5 -1
  14. package/dist/compiler/containerDaimonBrokerRender.d.ts +5 -50
  15. package/dist/compiler/containerDaimonBrokerRender.js +7 -88
  16. package/dist/compiler/containerDaimonGatewayRender.d.ts +50 -0
  17. package/dist/compiler/containerDaimonGatewayRender.js +157 -0
  18. package/dist/compiler/containerDaimonGrokWorkerProvisioning.d.ts +2 -10
  19. package/dist/compiler/containerDaimonGrokWorkerProvisioning.js +13 -25
  20. package/dist/compiler/containerDaimonGrokWorkerRender.d.ts +11 -49
  21. package/dist/compiler/containerDaimonGrokWorkerRender.js +15 -39
  22. package/dist/compiler/containerDaimonStartupSupervision.d.ts +8 -0
  23. package/dist/compiler/containerDaimonStartupSupervision.js +39 -0
  24. package/dist/compiler/containerDaimonUidEntrypointRender.d.ts +1 -2
  25. package/dist/compiler/containerDaimonUidEntrypointRender.js +26 -46
  26. package/dist/compiler/containerRuntimeReadinessRender.js +1 -1
  27. package/dist/compiler/memoryArtifacts.js +0 -1
  28. package/dist/compiler/moltnetArtifacts.js +1 -17
  29. package/dist/compiler/moltnetClientConfig.js +1 -1
  30. package/dist/compiler/moltnetRuntimeConfig.js +0 -10
  31. package/dist/compiler/runProject.d.ts +1 -0
  32. package/dist/compiler/runProject.js +9 -3
  33. package/dist/compiler/runProjectAuth.js +2 -17
  34. package/dist/compiler/training/contract.d.ts +0 -2
  35. package/dist/compiler/training/contract.js +0 -2
  36. package/dist/compiler/training/execution.d.ts +1 -128
  37. package/dist/compiler/training/execution.js +7 -68
  38. package/dist/compiler/training/index.d.ts +0 -8
  39. package/dist/compiler/training/index.js +0 -7
  40. package/dist/compiler/training/output.d.ts +1 -0
  41. package/dist/compiler/training/output.js +1 -1
  42. package/dist/compiler/training/trial/boot.d.ts +53 -0
  43. package/dist/compiler/training/trial/boot.js +147 -0
  44. package/dist/compiler/training/trial/docker.d.ts +8 -0
  45. package/dist/compiler/training/trial/docker.js +22 -0
  46. package/dist/compiler/training/trial/gateway.d.ts +42 -0
  47. package/dist/compiler/training/trial/gateway.js +98 -0
  48. package/dist/compiler/training/trial/index.d.ts +4 -0
  49. package/dist/compiler/training/trial/index.js +4 -0
  50. package/dist/compiler/training/trial/launcher.d.ts +32 -0
  51. package/dist/compiler/training/trial/launcher.js +49 -0
  52. package/dist/compiler/training/trial/project.d.ts +11 -0
  53. package/dist/compiler/training/trial/project.js +31 -0
  54. package/dist/compiler/upReceipt.d.ts +2 -17
  55. package/dist/compiler/upReceipt.js +2 -17
  56. package/dist/deployment/artifactsExportPlan.js +2 -18
  57. package/dist/deployment/privateArtifactsExport.js +1 -1
  58. package/dist/dev/docker.d.ts +0 -5
  59. package/dist/dev/docker.js +0 -46
  60. package/dist/dev/index.d.ts +0 -1
  61. package/dist/dev/index.js +0 -1
  62. package/dist/dev/project.d.ts +0 -16
  63. package/dist/dev/project.js +1 -128
  64. package/dist/distribution/distributionReportSchema.js +1 -1
  65. package/dist/distribution/imageRuntimeAuth.js +3 -2
  66. package/dist/release/drainControl.d.ts +5 -19
  67. package/dist/release/drainControl.js +12 -67
  68. package/dist/report/types.d.ts +3 -6
  69. package/dist/runtime/common.d.ts +1 -1
  70. package/dist/runtime/common.js +1 -1
  71. package/dist/runtime/container.d.ts +2 -2
  72. package/dist/runtime/container.js +1 -39
  73. package/dist/runtime/daimon/config.js +6 -12
  74. package/dist/runtime/daimon/contractManifest.js +0 -1
  75. package/dist/runtime/daimon/contractManifestSchema.js +0 -1
  76. package/dist/runtime/daimon/control.d.ts +31 -0
  77. package/dist/runtime/daimon/control.js +83 -0
  78. package/dist/runtime/daimon/engineDescriptorSchema.js +0 -1
  79. package/dist/runtime/daimon/engineDescriptors.generated.d.ts +1 -1
  80. package/dist/runtime/daimon/engineDescriptors.generated.js +1 -2
  81. package/dist/runtime/daimon/engines.js +0 -1
  82. package/dist/runtime/daimon/gateway.d.ts +62 -0
  83. package/dist/runtime/daimon/gateway.js +77 -0
  84. package/dist/runtime/daimon/grokWorkerContract.d.ts +0 -5
  85. package/dist/runtime/daimon/grokWorkerContract.js +1 -13
  86. package/dist/runtime/daimon/index.d.ts +2 -0
  87. package/dist/runtime/daimon/index.js +2 -1
  88. package/dist/runtime/daimon/memory.js +1 -1
  89. package/dist/runtime/daimon/packageName.js +0 -1
  90. package/dist/runtime/daimon/runAuth.js +7 -4
  91. package/dist/runtime/daimon/runtimeIdentity.d.ts +2 -0
  92. package/dist/runtime/daimon/runtimeIdentity.js +2 -0
  93. package/dist/runtime/daimon/subscriptionRealms.d.ts +9 -3
  94. package/dist/runtime/daimon/subscriptionRealms.js +22 -13
  95. package/dist/runtime/daimon/testHelpers.d.ts +2 -0
  96. package/dist/runtime/{pi → daimon}/testHelpers.js +3 -3
  97. package/dist/runtime/daimon/training/booted/adapter.d.ts +46 -0
  98. package/dist/runtime/daimon/training/booted/adapter.js +59 -0
  99. package/dist/runtime/daimon/training/booted/adapter.js.map +1 -0
  100. package/dist/runtime/daimon/training/booted/index.d.ts +2 -0
  101. package/dist/runtime/daimon/training/booted/index.js +2 -0
  102. package/dist/runtime/daimon/training/booted/index.js.map +1 -0
  103. package/dist/runtime/daimon/training/index.d.ts +5 -0
  104. package/dist/runtime/daimon/training/index.js +8 -4
  105. package/dist/runtime/daimon/training/index.js.map +1 -1
  106. package/dist/runtime/daimon/training/providers/codex-subscription/index.js.map +1 -0
  107. package/dist/runtime/daimon/training/providers/codex-subscription/protocol.js.map +1 -0
  108. package/dist/runtime/daimon/training/providers/codex-subscription/provider.js.map +1 -0
  109. package/dist/runtime/daimon/training/providers/codex-subscription/strict-schema.js.map +1 -0
  110. package/dist/runtime/daimon/training/providers/grok-subscription/cli.d.ts +1 -3
  111. package/dist/runtime/daimon/training/providers/grok-subscription/cli.js +5 -5
  112. package/dist/runtime/daimon/training/providers/grok-subscription/cli.js.map +1 -1
  113. package/dist/runtime/daimon/training/providers/grok-subscription/index.d.ts +1 -2
  114. package/dist/runtime/daimon/training/providers/grok-subscription/index.js +0 -1
  115. package/dist/runtime/daimon/training/providers/grok-subscription/index.js.map +1 -1
  116. package/dist/runtime/daimon/training/providers/grok-subscription/protocol.d.ts +5 -17
  117. package/dist/runtime/daimon/training/providers/grok-subscription/protocol.js +18 -31
  118. package/dist/runtime/daimon/training/providers/grok-subscription/protocol.js.map +1 -1
  119. package/dist/runtime/daimon/training/providers/grok-subscription/provider.js +1 -2
  120. package/dist/runtime/daimon/training/providers/grok-subscription/provider.js.map +1 -1
  121. package/dist/runtime/daimon/wakeMoments.js +0 -1
  122. package/dist/runtime/install.js +0 -21
  123. package/dist/runtime/registry.js +0 -2
  124. package/dist/runtime/trainingGraderProviders.js +1 -1
  125. package/dist/runtime/trainingProviders.d.ts +1 -2
  126. package/dist/runtime/trainingProviders.js +9 -19
  127. package/dist/runtime/trainingSubjects.d.ts +0 -121
  128. package/dist/runtime/trainingSubjects.js +2 -13
  129. package/dist/runtime/types.d.ts +1 -8
  130. package/dist/shared/errors.js +0 -1
  131. package/dist/status/lifecycleProbes.js +3 -6
  132. package/dist/status/moltnetWiringProbes.js +1 -17
  133. package/dist/training/subjects/index.d.ts +0 -1
  134. package/dist/training/subjects/index.js +0 -1
  135. package/dist/training/subjects/index.js.map +1 -1
  136. package/examples/README.md +0 -1
  137. package/examples/daimon-org/agents/mapper/Spawnfile +4 -1
  138. package/examples/daimon-org/teams/review/agents/reviewer/Spawnfile +4 -1
  139. package/examples/jungian-daimon-org/teams/luna/agents/animus/Spawnfile +5 -8
  140. package/examples/jungian-daimon-org/teams/luna/agents/representative/Spawnfile +1 -1
  141. package/examples/jungian-daimon-org/teams/luna/agents/shadow/Spawnfile +5 -8
  142. package/examples/jungian-daimon-org/teams/selene/agents/animus/Spawnfile +5 -8
  143. package/examples/jungian-daimon-org/teams/selene/agents/representative/Spawnfile +5 -8
  144. package/examples/jungian-daimon-org/teams/selene/agents/shadow/Spawnfile +1 -1
  145. package/examples/mixed-runtime-org/agents/localist/Spawnfile +7 -7
  146. package/package.json +4 -13
  147. package/runtimes.yaml +5 -15
  148. package/dist/compiler/containerDaimonGrokTaskClock.d.ts +0 -5
  149. package/dist/compiler/containerDaimonGrokTaskClock.js +0 -29
  150. package/dist/compiler/daimonTelemetryArtifacts.d.ts +0 -22
  151. package/dist/compiler/daimonTelemetryArtifacts.js +0 -56
  152. package/dist/compiler/training/broker/clockProbe.d.ts +0 -6
  153. package/dist/compiler/training/broker/clockProbe.js +0 -27
  154. package/dist/compiler/training/broker/declaration.d.ts +0 -54
  155. package/dist/compiler/training/broker/declaration.js +0 -70
  156. package/dist/compiler/training/broker/entrypoint.d.ts +0 -39
  157. package/dist/compiler/training/broker/entrypoint.js +0 -124
  158. package/dist/compiler/training/broker/evaluatorSecrets.d.ts +0 -2
  159. package/dist/compiler/training/broker/evaluatorSecrets.js +0 -62
  160. package/dist/compiler/training/broker/index.d.ts +0 -12
  161. package/dist/compiler/training/broker/index.js +0 -12
  162. package/dist/compiler/training/broker/main.d.ts +0 -2
  163. package/dist/compiler/training/broker/main.js +0 -14
  164. package/dist/compiler/training/broker/paths.d.ts +0 -236
  165. package/dist/compiler/training/broker/paths.js +0 -249
  166. package/dist/compiler/training/broker/processes.d.ts +0 -51
  167. package/dist/compiler/training/broker/processes.js +0 -102
  168. package/dist/compiler/training/broker/projection.d.ts +0 -61
  169. package/dist/compiler/training/broker/projection.js +0 -109
  170. package/dist/compiler/training/broker/provisioning.d.ts +0 -78
  171. package/dist/compiler/training/broker/provisioning.js +0 -231
  172. package/dist/compiler/training/broker/receipt.d.ts +0 -77
  173. package/dist/compiler/training/broker/receipt.js +0 -110
  174. package/dist/compiler/training/broker/recycleClient.d.ts +0 -33
  175. package/dist/compiler/training/broker/recycleClient.js +0 -112
  176. package/dist/compiler/training/broker/registration.d.ts +0 -46
  177. package/dist/compiler/training/broker/registration.js +0 -113
  178. package/dist/compiler/training/broker/reset.d.ts +0 -9
  179. package/dist/compiler/training/broker/reset.js +0 -71
  180. package/dist/compiler/training/broker/rootScript.d.ts +0 -32
  181. package/dist/compiler/training/broker/rootScript.js +0 -33
  182. package/dist/compiler/training/broker/runtime.d.ts +0 -22
  183. package/dist/compiler/training/broker/runtime.js +0 -128
  184. package/dist/compiler/training/broker/seccompRoutes.d.ts +0 -31
  185. package/dist/compiler/training/broker/seccompRoutes.js +0 -36
  186. package/dist/compiler/training/broker/supervisor.d.ts +0 -108
  187. package/dist/compiler/training/broker/supervisor.js +0 -172
  188. package/dist/compiler/training/broker/taskClock.d.ts +0 -5
  189. package/dist/compiler/training/broker/taskClock.js +0 -41
  190. package/dist/compiler/training/container/contract.d.ts +0 -54
  191. package/dist/compiler/training/container/contract.js +0 -52
  192. package/dist/compiler/training/container/evaluators.d.ts +0 -48
  193. package/dist/compiler/training/container/evaluators.js +0 -50
  194. package/dist/compiler/training/container/grokWriteback.d.ts +0 -8
  195. package/dist/compiler/training/container/grokWriteback.js +0 -26
  196. package/dist/compiler/training/container/index.d.ts +0 -5
  197. package/dist/compiler/training/container/index.js +0 -3
  198. package/dist/compiler/training/container/launch.d.ts +0 -21
  199. package/dist/compiler/training/container/launch.js +0 -280
  200. package/dist/compiler/training/container/nativeSlots.d.ts +0 -14
  201. package/dist/compiler/training/container/nativeSlots.js +0 -13
  202. package/dist/compiler/training/container/outputCopy.d.ts +0 -2
  203. package/dist/compiler/training/container/outputCopy.js +0 -72
  204. package/dist/compiler/training/container/outputVolume.d.ts +0 -28
  205. package/dist/compiler/training/container/outputVolume.js +0 -185
  206. package/dist/compiler/training/container/prepare.d.ts +0 -10
  207. package/dist/compiler/training/container/prepare.js +0 -125
  208. package/dist/compiler/training/container/process.d.ts +0 -14
  209. package/dist/compiler/training/container/process.js +0 -70
  210. package/dist/compiler/training/container/security.d.ts +0 -38
  211. package/dist/compiler/training/container/security.js +0 -68
  212. package/dist/compiler/training/container/subjectIsolation.d.ts +0 -5
  213. package/dist/compiler/training/container/subjectIsolation.js +0 -16
  214. package/dist/compiler/training/preparation/assets/Dockerfile +0 -100
  215. package/dist/compiler/training/preparation/assets/package-lock.json +0 -5483
  216. package/dist/compiler/training/preparation/broker.d.ts +0 -30
  217. package/dist/compiler/training/preparation/broker.js +0 -68
  218. package/dist/compiler/training/preparation/contextModes.d.ts +0 -12
  219. package/dist/compiler/training/preparation/contextModes.js +0 -38
  220. package/dist/compiler/training/preparation/contract.d.ts +0 -203
  221. package/dist/compiler/training/preparation/contract.js +0 -114
  222. package/dist/compiler/training/preparation/copyAssets.d.ts +0 -1
  223. package/dist/compiler/training/preparation/copyAssets.js +0 -8
  224. package/dist/compiler/training/preparation/daimonParent.d.ts +0 -42
  225. package/dist/compiler/training/preparation/daimonParent.js +0 -114
  226. package/dist/compiler/training/preparation/files.d.ts +0 -29
  227. package/dist/compiler/training/preparation/files.js +0 -146
  228. package/dist/compiler/training/preparation/image.d.ts +0 -28
  229. package/dist/compiler/training/preparation/image.js +0 -105
  230. package/dist/compiler/training/preparation/index.d.ts +0 -3
  231. package/dist/compiler/training/preparation/index.js +0 -2
  232. package/dist/compiler/training/preparation/inputs.d.ts +0 -24
  233. package/dist/compiler/training/preparation/inputs.js +0 -101
  234. package/dist/compiler/training/preparation/prepare.d.ts +0 -38
  235. package/dist/compiler/training/preparation/prepare.js +0 -224
  236. package/dist/compiler/training/preparation/scratch.d.ts +0 -8
  237. package/dist/compiler/training/preparation/scratch.js +0 -114
  238. package/dist/compiler/training/repair/compatibility.d.ts +0 -11
  239. package/dist/compiler/training/repair/compatibility.js +0 -45
  240. package/dist/compiler/training/repair/contract.d.ts +0 -832
  241. package/dist/compiler/training/repair/contract.js +0 -34
  242. package/dist/compiler/training/repair/index.d.ts +0 -3
  243. package/dist/compiler/training/repair/index.js +0 -3
  244. package/dist/compiler/training/repair/prepare.d.ts +0 -378
  245. package/dist/compiler/training/repair/prepare.js +0 -84
  246. package/dist/compiler/training/repair/witness.d.ts +0 -348
  247. package/dist/compiler/training/repair/witness.js +0 -62
  248. package/dist/compiler/training/subjectDeclaration.d.ts +0 -26
  249. package/dist/compiler/training/subjectDeclaration.js +0 -54
  250. package/dist/compiler/training/subjectLease.d.ts +0 -115
  251. package/dist/compiler/training/subjectLease.js +0 -179
  252. package/dist/dev/activity.d.ts +0 -14
  253. package/dist/dev/activity.js +0 -48
  254. package/dist/runtime/codex-exec/training/adapter.d.ts +0 -13
  255. package/dist/runtime/codex-exec/training/adapter.js +0 -101
  256. package/dist/runtime/codex-exec/training/adapter.js.map +0 -1
  257. package/dist/runtime/codex-exec/training/environment.d.ts +0 -3
  258. package/dist/runtime/codex-exec/training/environment.js +0 -26
  259. package/dist/runtime/codex-exec/training/environment.js.map +0 -1
  260. package/dist/runtime/codex-exec/training/index.d.ts +0 -2
  261. package/dist/runtime/codex-exec/training/index.js +0 -3
  262. package/dist/runtime/codex-exec/training/index.js.map +0 -1
  263. package/dist/runtime/codex-exec/training/protocol.d.ts +0 -15
  264. package/dist/runtime/codex-exec/training/protocol.js +0 -102
  265. package/dist/runtime/codex-exec/training/protocol.js.map +0 -1
  266. package/dist/runtime/codex-exec/training/providers/codex-subscription/index.js.map +0 -1
  267. package/dist/runtime/codex-exec/training/providers/codex-subscription/protocol.js.map +0 -1
  268. package/dist/runtime/codex-exec/training/providers/codex-subscription/provider.js.map +0 -1
  269. package/dist/runtime/codex-exec/training/providers/codex-subscription/strict-schema.js.map +0 -1
  270. package/dist/runtime/daimon/contractManifest.js.map +0 -1
  271. package/dist/runtime/daimon/contractManifestSchema.js.map +0 -1
  272. package/dist/runtime/daimon/engineDescriptorSchema.js.map +0 -1
  273. package/dist/runtime/daimon/engineDescriptors.generated.js.map +0 -1
  274. package/dist/runtime/daimon/engines.js.map +0 -1
  275. package/dist/runtime/daimon/index.js.map +0 -1
  276. package/dist/runtime/daimon/packageName.js.map +0 -1
  277. package/dist/runtime/daimon/training/legacy/adapter.d.ts +0 -11
  278. package/dist/runtime/daimon/training/legacy/adapter.js +0 -175
  279. package/dist/runtime/daimon/training/legacy/adapter.js.map +0 -1
  280. package/dist/runtime/daimon/training/legacy/index.d.ts +0 -2
  281. package/dist/runtime/daimon/training/legacy/index.js +0 -3
  282. package/dist/runtime/daimon/training/legacy/index.js.map +0 -1
  283. package/dist/runtime/daimon/training/legacy/public.d.ts +0 -49
  284. package/dist/runtime/daimon/training/legacy/public.js +0 -16
  285. package/dist/runtime/daimon/training/legacy/public.js.map +0 -1
  286. package/dist/runtime/daimon/training/native/adapter.d.ts +0 -18
  287. package/dist/runtime/daimon/training/native/adapter.js +0 -252
  288. package/dist/runtime/daimon/training/native/adapter.js.map +0 -1
  289. package/dist/runtime/daimon/training/native/admission.d.ts +0 -7
  290. package/dist/runtime/daimon/training/native/admission.js +0 -52
  291. package/dist/runtime/daimon/training/native/admission.js.map +0 -1
  292. package/dist/runtime/daimon/training/native/child/arguments.d.ts +0 -16
  293. package/dist/runtime/daimon/training/native/child/arguments.js +0 -70
  294. package/dist/runtime/daimon/training/native/child/arguments.js.map +0 -1
  295. package/dist/runtime/daimon/training/native/child/deferred-trial.d.ts +0 -24
  296. package/dist/runtime/daimon/training/native/child/deferred-trial.js +0 -63
  297. package/dist/runtime/daimon/training/native/child/deferred-trial.js.map +0 -1
  298. package/dist/runtime/daimon/training/native/child/diagnostics.d.ts +0 -58
  299. package/dist/runtime/daimon/training/native/child/diagnostics.js +0 -215
  300. package/dist/runtime/daimon/training/native/child/diagnostics.js.map +0 -1
  301. package/dist/runtime/daimon/training/native/child/fixture.d.ts +0 -16
  302. package/dist/runtime/daimon/training/native/child/fixture.js +0 -159
  303. package/dist/runtime/daimon/training/native/child/fixture.js.map +0 -1
  304. package/dist/runtime/daimon/training/native/child/grok.d.ts +0 -14
  305. package/dist/runtime/daimon/training/native/child/grok.js +0 -47
  306. package/dist/runtime/daimon/training/native/child/grok.js.map +0 -1
  307. package/dist/runtime/daimon/training/native/child/index.d.ts +0 -7
  308. package/dist/runtime/daimon/training/native/child/index.js +0 -5
  309. package/dist/runtime/daimon/training/native/child/index.js.map +0 -1
  310. package/dist/runtime/daimon/training/native/child/lifecycle.d.ts +0 -40
  311. package/dist/runtime/daimon/training/native/child/lifecycle.js +0 -400
  312. package/dist/runtime/daimon/training/native/child/lifecycle.js.map +0 -1
  313. package/dist/runtime/daimon/training/native/child/probe.d.ts +0 -2
  314. package/dist/runtime/daimon/training/native/child/probe.js +0 -11
  315. package/dist/runtime/daimon/training/native/child/probe.js.map +0 -1
  316. package/dist/runtime/daimon/training/native/child/sandbox.d.ts +0 -4
  317. package/dist/runtime/daimon/training/native/child/sandbox.js +0 -76
  318. package/dist/runtime/daimon/training/native/child/sandbox.js.map +0 -1
  319. package/dist/runtime/daimon/training/native/child/types.d.ts +0 -15
  320. package/dist/runtime/daimon/training/native/child/types.js +0 -2
  321. package/dist/runtime/daimon/training/native/child/types.js.map +0 -1
  322. package/dist/runtime/daimon/training/native/container/docker.d.ts +0 -29
  323. package/dist/runtime/daimon/training/native/container/docker.js +0 -105
  324. package/dist/runtime/daimon/training/native/container/docker.js.map +0 -1
  325. package/dist/runtime/daimon/training/native/container/grok-slot.d.ts +0 -22
  326. package/dist/runtime/daimon/training/native/container/grok-slot.js +0 -38
  327. package/dist/runtime/daimon/training/native/container/grok-slot.js.map +0 -1
  328. package/dist/runtime/daimon/training/native/container/index.d.ts +0 -6
  329. package/dist/runtime/daimon/training/native/container/index.js +0 -6
  330. package/dist/runtime/daimon/training/native/container/index.js.map +0 -1
  331. package/dist/runtime/daimon/training/native/container/lifecycle.d.ts +0 -8
  332. package/dist/runtime/daimon/training/native/container/lifecycle.js +0 -111
  333. package/dist/runtime/daimon/training/native/container/lifecycle.js.map +0 -1
  334. package/dist/runtime/daimon/training/native/container/manifest.d.ts +0 -17
  335. package/dist/runtime/daimon/training/native/container/manifest.js +0 -164
  336. package/dist/runtime/daimon/training/native/container/manifest.js.map +0 -1
  337. package/dist/runtime/daimon/training/native/container/native-preflight.d.ts +0 -8
  338. package/dist/runtime/daimon/training/native/container/native-preflight.js +0 -40
  339. package/dist/runtime/daimon/training/native/container/native-preflight.js.map +0 -1
  340. package/dist/runtime/daimon/training/native/container/preflight.d.ts +0 -15
  341. package/dist/runtime/daimon/training/native/container/preflight.js +0 -79
  342. package/dist/runtime/daimon/training/native/container/preflight.js.map +0 -1
  343. package/dist/runtime/daimon/training/native/container/slot.d.ts +0 -4
  344. package/dist/runtime/daimon/training/native/container/slot.js +0 -58
  345. package/dist/runtime/daimon/training/native/container/slot.js.map +0 -1
  346. package/dist/runtime/daimon/training/native/external.d.ts +0 -37
  347. package/dist/runtime/daimon/training/native/external.js +0 -75
  348. package/dist/runtime/daimon/training/native/external.js.map +0 -1
  349. package/dist/runtime/daimon/training/native/grants/authority.d.ts +0 -36
  350. package/dist/runtime/daimon/training/native/grants/authority.js +0 -49
  351. package/dist/runtime/daimon/training/native/grants/authority.js.map +0 -1
  352. package/dist/runtime/daimon/training/native/grants/index.d.ts +0 -2
  353. package/dist/runtime/daimon/training/native/grants/index.js +0 -3
  354. package/dist/runtime/daimon/training/native/grants/index.js.map +0 -1
  355. package/dist/runtime/daimon/training/native/grants/pins.d.ts +0 -30
  356. package/dist/runtime/daimon/training/native/grants/pins.js +0 -20
  357. package/dist/runtime/daimon/training/native/grants/pins.js.map +0 -1
  358. package/dist/runtime/daimon/training/native/grants/test-socket.d.ts +0 -6
  359. package/dist/runtime/daimon/training/native/grants/test-socket.js +0 -35
  360. package/dist/runtime/daimon/training/native/grants/test-socket.js.map +0 -1
  361. package/dist/runtime/daimon/training/native/grok-fixtures.d.ts +0 -34
  362. package/dist/runtime/daimon/training/native/grok-fixtures.js +0 -179
  363. package/dist/runtime/daimon/training/native/grok-fixtures.js.map +0 -1
  364. package/dist/runtime/daimon/training/native/index.d.ts +0 -38
  365. package/dist/runtime/daimon/training/native/index.js +0 -27
  366. package/dist/runtime/daimon/training/native/index.js.map +0 -1
  367. package/dist/runtime/daimon/training/native/live-checkout.d.ts +0 -2
  368. package/dist/runtime/daimon/training/native/live-checkout.js +0 -15
  369. package/dist/runtime/daimon/training/native/live-checkout.js.map +0 -1
  370. package/dist/runtime/daimon/training/native/observations.d.ts +0 -51
  371. package/dist/runtime/daimon/training/native/observations.js +0 -217
  372. package/dist/runtime/daimon/training/native/observations.js.map +0 -1
  373. package/dist/runtime/daimon/training/native/outcome.d.ts +0 -13
  374. package/dist/runtime/daimon/training/native/outcome.js +0 -37
  375. package/dist/runtime/daimon/training/native/outcome.js.map +0 -1
  376. package/dist/runtime/daimon/training/native/preparation/engine-config.d.ts +0 -21
  377. package/dist/runtime/daimon/training/native/preparation/engine-config.js +0 -30
  378. package/dist/runtime/daimon/training/native/preparation/engine-config.js.map +0 -1
  379. package/dist/runtime/daimon/training/native/preparation/fixtures.d.ts +0 -17
  380. package/dist/runtime/daimon/training/native/preparation/fixtures.js +0 -52
  381. package/dist/runtime/daimon/training/native/preparation/fixtures.js.map +0 -1
  382. package/dist/runtime/daimon/training/native/preparation/index.d.ts +0 -7
  383. package/dist/runtime/daimon/training/native/preparation/index.js +0 -5
  384. package/dist/runtime/daimon/training/native/preparation/index.js.map +0 -1
  385. package/dist/runtime/daimon/training/native/preparation/layout.d.ts +0 -66
  386. package/dist/runtime/daimon/training/native/preparation/layout.js +0 -87
  387. package/dist/runtime/daimon/training/native/preparation/layout.js.map +0 -1
  388. package/dist/runtime/daimon/training/native/preparation/subject.d.ts +0 -14
  389. package/dist/runtime/daimon/training/native/preparation/subject.js +0 -67
  390. package/dist/runtime/daimon/training/native/preparation/subject.js.map +0 -1
  391. package/dist/runtime/daimon/training/native/preparation/types.d.ts +0 -69
  392. package/dist/runtime/daimon/training/native/preparation/types.js +0 -2
  393. package/dist/runtime/daimon/training/native/preparation/types.js.map +0 -1
  394. package/dist/runtime/daimon/training/native/receipt/artifacts.d.ts +0 -25
  395. package/dist/runtime/daimon/training/native/receipt/artifacts.js +0 -32
  396. package/dist/runtime/daimon/training/native/receipt/artifacts.js.map +0 -1
  397. package/dist/runtime/daimon/training/native/receipt/grok-clocked-pins.d.ts +0 -129
  398. package/dist/runtime/daimon/training/native/receipt/grok-clocked-pins.js +0 -45
  399. package/dist/runtime/daimon/training/native/receipt/grok-clocked-pins.js.map +0 -1
  400. package/dist/runtime/daimon/training/native/receipt/grok.d.ts +0 -246
  401. package/dist/runtime/daimon/training/native/receipt/grok.js +0 -195
  402. package/dist/runtime/daimon/training/native/receipt/grok.js.map +0 -1
  403. package/dist/runtime/daimon/training/native/receipt/index.d.ts +0 -11
  404. package/dist/runtime/daimon/training/native/receipt/index.js +0 -8
  405. package/dist/runtime/daimon/training/native/receipt/index.js.map +0 -1
  406. package/dist/runtime/daimon/training/native/receipt/paths.d.ts +0 -3
  407. package/dist/runtime/daimon/training/native/receipt/paths.js +0 -18
  408. package/dist/runtime/daimon/training/native/receipt/paths.js.map +0 -1
  409. package/dist/runtime/daimon/training/native/receipt/sandbox.d.ts +0 -42
  410. package/dist/runtime/daimon/training/native/receipt/sandbox.js +0 -35
  411. package/dist/runtime/daimon/training/native/receipt/sandbox.js.map +0 -1
  412. package/dist/runtime/daimon/training/native/receipt/schema.d.ts +0 -490
  413. package/dist/runtime/daimon/training/native/receipt/schema.js +0 -138
  414. package/dist/runtime/daimon/training/native/receipt/schema.js.map +0 -1
  415. package/dist/runtime/daimon/training/native/receipt/subscription.d.ts +0 -13
  416. package/dist/runtime/daimon/training/native/receipt/subscription.js +0 -13
  417. package/dist/runtime/daimon/training/native/receipt/subscription.js.map +0 -1
  418. package/dist/runtime/daimon/training/native/receipt/task-clock.d.ts +0 -19
  419. package/dist/runtime/daimon/training/native/receipt/task-clock.js +0 -49
  420. package/dist/runtime/daimon/training/native/receipt/task-clock.js.map +0 -1
  421. package/dist/runtime/daimon/training/native/sealed-usage.d.ts +0 -218
  422. package/dist/runtime/daimon/training/native/sealed-usage.js +0 -261
  423. package/dist/runtime/daimon/training/native/sealed-usage.js.map +0 -1
  424. package/dist/runtime/daimon/training/native/test-fixtures.d.ts +0 -27
  425. package/dist/runtime/daimon/training/native/test-fixtures.js +0 -162
  426. package/dist/runtime/daimon/training/native/test-fixtures.js.map +0 -1
  427. package/dist/runtime/daimon/training/native/transcript.d.ts +0 -96
  428. package/dist/runtime/daimon/training/native/transcript.js +0 -239
  429. package/dist/runtime/daimon/training/native/transcript.js.map +0 -1
  430. package/dist/runtime/daimon/training/native/transport/delivery.d.ts +0 -27
  431. package/dist/runtime/daimon/training/native/transport/delivery.js +0 -98
  432. package/dist/runtime/daimon/training/native/transport/delivery.js.map +0 -1
  433. package/dist/runtime/daimon/training/native/transport/http.d.ts +0 -3
  434. package/dist/runtime/daimon/training/native/transport/http.js +0 -81
  435. package/dist/runtime/daimon/training/native/transport/http.js.map +0 -1
  436. package/dist/runtime/daimon/training/native/transport/index.d.ts +0 -4
  437. package/dist/runtime/daimon/training/native/transport/index.js +0 -3
  438. package/dist/runtime/daimon/training/native/transport/index.js.map +0 -1
  439. package/dist/runtime/daimon/training/native/transport/types.d.ts +0 -15
  440. package/dist/runtime/daimon/training/native/transport/types.js +0 -2
  441. package/dist/runtime/daimon/training/native/transport/types.js.map +0 -1
  442. package/dist/runtime/daimon/training/native/worker/cli.d.ts +0 -1
  443. package/dist/runtime/daimon/training/native/worker/cli.js +0 -17
  444. package/dist/runtime/daimon/training/native/worker/cli.js.map +0 -1
  445. package/dist/runtime/daimon/training/native/worker/control.d.ts +0 -20
  446. package/dist/runtime/daimon/training/native/worker/control.js +0 -266
  447. package/dist/runtime/daimon/training/native/worker/control.js.map +0 -1
  448. package/dist/runtime/daimon/training/native/worker/deliveries.d.ts +0 -38
  449. package/dist/runtime/daimon/training/native/worker/deliveries.js +0 -91
  450. package/dist/runtime/daimon/training/native/worker/deliveries.js.map +0 -1
  451. package/dist/runtime/daimon/training/native/worker/evidence/collect.d.ts +0 -54
  452. package/dist/runtime/daimon/training/native/worker/evidence/collect.js +0 -278
  453. package/dist/runtime/daimon/training/native/worker/evidence/collect.js.map +0 -1
  454. package/dist/runtime/daimon/training/native/worker/evidence/execution.d.ts +0 -102
  455. package/dist/runtime/daimon/training/native/worker/evidence/execution.js +0 -191
  456. package/dist/runtime/daimon/training/native/worker/evidence/execution.js.map +0 -1
  457. package/dist/runtime/daimon/training/native/worker/evidence/index.d.ts +0 -3
  458. package/dist/runtime/daimon/training/native/worker/evidence/index.js +0 -4
  459. package/dist/runtime/daimon/training/native/worker/evidence/index.js.map +0 -1
  460. package/dist/runtime/daimon/training/native/worker/evidence/io.d.ts +0 -20
  461. package/dist/runtime/daimon/training/native/worker/evidence/io.js +0 -130
  462. package/dist/runtime/daimon/training/native/worker/evidence/io.js.map +0 -1
  463. package/dist/runtime/daimon/training/native/worker/evidence/seal.d.ts +0 -3
  464. package/dist/runtime/daimon/training/native/worker/evidence/seal.js +0 -67
  465. package/dist/runtime/daimon/training/native/worker/evidence/seal.js.map +0 -1
  466. package/dist/runtime/daimon/training/native/worker/index.d.ts +0 -11
  467. package/dist/runtime/daimon/training/native/worker/index.js +0 -8
  468. package/dist/runtime/daimon/training/native/worker/index.js.map +0 -1
  469. package/dist/runtime/daimon/training/native/worker/profile.d.ts +0 -23
  470. package/dist/runtime/daimon/training/native/worker/profile.js +0 -149
  471. package/dist/runtime/daimon/training/native/worker/profile.js.map +0 -1
  472. package/dist/runtime/daimon/training/native/worker/public.d.ts +0 -53
  473. package/dist/runtime/daimon/training/native/worker/public.js +0 -22
  474. package/dist/runtime/daimon/training/native/worker/public.js.map +0 -1
  475. package/dist/runtime/daimon/training/native/worker/sandbox.d.ts +0 -4
  476. package/dist/runtime/daimon/training/native/worker/sandbox.js +0 -54
  477. package/dist/runtime/daimon/training/native/worker/sandbox.js.map +0 -1
  478. package/dist/runtime/daimon/training/native/worker/server.d.ts +0 -4
  479. package/dist/runtime/daimon/training/native/worker/server.js +0 -102
  480. package/dist/runtime/daimon/training/native/worker/server.js.map +0 -1
  481. package/dist/runtime/daimon/training/native/worker/types.d.ts +0 -318
  482. package/dist/runtime/daimon/training/native/worker/types.js +0 -2
  483. package/dist/runtime/daimon/training/native/worker/types.js.map +0 -1
  484. package/dist/runtime/daimon/training/native/worker/wake-delivery/index.d.ts +0 -4
  485. package/dist/runtime/daimon/training/native/worker/wake-delivery/index.js +0 -4
  486. package/dist/runtime/daimon/training/native/worker/wake-delivery/index.js.map +0 -1
  487. package/dist/runtime/daimon/training/native/worker/wake-delivery/source.d.ts +0 -3
  488. package/dist/runtime/daimon/training/native/worker/wake-delivery/source.js +0 -16
  489. package/dist/runtime/daimon/training/native/worker/wake-delivery/source.js.map +0 -1
  490. package/dist/runtime/daimon/training/native/worker/wake-delivery/terminal.d.ts +0 -4
  491. package/dist/runtime/daimon/training/native/worker/wake-delivery/terminal.js +0 -52
  492. package/dist/runtime/daimon/training/native/worker/wake-delivery/terminal.js.map +0 -1
  493. package/dist/runtime/daimon/training/native/worker/wake-delivery/transport.d.ts +0 -21
  494. package/dist/runtime/daimon/training/native/worker/wake-delivery/transport.js +0 -198
  495. package/dist/runtime/daimon/training/native/worker/wake-delivery/transport.js.map +0 -1
  496. package/dist/runtime/daimon/training/native/worker/wake-delivery/types.d.ts +0 -91
  497. package/dist/runtime/daimon/training/native/worker/wake-delivery/types.js +0 -2
  498. package/dist/runtime/daimon/training/native/worker/wake-delivery/types.js.map +0 -1
  499. package/dist/runtime/daimon/training/native/worker/worker.d.ts +0 -1
  500. package/dist/runtime/daimon/training/native/worker/worker.js +0 -105
  501. package/dist/runtime/daimon/training/native/worker/worker.js.map +0 -1
  502. package/dist/runtime/daimon/training/providers/grok-broker/broker.d.ts +0 -20
  503. package/dist/runtime/daimon/training/providers/grok-broker/broker.js +0 -55
  504. package/dist/runtime/daimon/training/providers/grok-broker/broker.js.map +0 -1
  505. package/dist/runtime/daimon/training/providers/grok-broker/grant-fixtures.d.ts +0 -15
  506. package/dist/runtime/daimon/training/providers/grok-broker/grant-fixtures.js +0 -29
  507. package/dist/runtime/daimon/training/providers/grok-broker/grant-fixtures.js.map +0 -1
  508. package/dist/runtime/daimon/training/providers/grok-broker/grant-home.d.ts +0 -16
  509. package/dist/runtime/daimon/training/providers/grok-broker/grant-home.js +0 -60
  510. package/dist/runtime/daimon/training/providers/grok-broker/grant-home.js.map +0 -1
  511. package/dist/runtime/daimon/training/providers/grok-broker/grant-pool.d.ts +0 -81
  512. package/dist/runtime/daimon/training/providers/grok-broker/grant-pool.js +0 -221
  513. package/dist/runtime/daimon/training/providers/grok-broker/grant-pool.js.map +0 -1
  514. package/dist/runtime/daimon/training/providers/grok-broker/grant-releases.d.ts +0 -31
  515. package/dist/runtime/daimon/training/providers/grok-broker/grant-releases.js +0 -78
  516. package/dist/runtime/daimon/training/providers/grok-broker/grant-releases.js.map +0 -1
  517. package/dist/runtime/daimon/training/providers/grok-broker/grants.d.ts +0 -63
  518. package/dist/runtime/daimon/training/providers/grok-broker/grants.js +0 -20
  519. package/dist/runtime/daimon/training/providers/grok-broker/grants.js.map +0 -1
  520. package/dist/runtime/daimon/training/providers/grok-broker/index.d.ts +0 -3
  521. package/dist/runtime/daimon/training/providers/grok-broker/index.js +0 -4
  522. package/dist/runtime/daimon/training/providers/grok-broker/index.js.map +0 -1
  523. package/dist/runtime/daimon/training/public.d.ts +0 -6
  524. package/dist/runtime/daimon/training/public.js +0 -5
  525. package/dist/runtime/daimon/training/public.js.map +0 -1
  526. package/dist/runtime/daimon/training/services/account-lease.d.ts +0 -7
  527. package/dist/runtime/daimon/training/services/account-lease.js +0 -76
  528. package/dist/runtime/daimon/training/services/account-lease.js.map +0 -1
  529. package/dist/runtime/daimon/training/services/freshness.d.ts +0 -15
  530. package/dist/runtime/daimon/training/services/freshness.js +0 -19
  531. package/dist/runtime/daimon/training/services/freshness.js.map +0 -1
  532. package/dist/runtime/daimon/training/services/index.d.ts +0 -4
  533. package/dist/runtime/daimon/training/services/index.js +0 -4
  534. package/dist/runtime/daimon/training/services/index.js.map +0 -1
  535. package/dist/runtime/daimon/training/services/slot-freshness.d.ts +0 -34
  536. package/dist/runtime/daimon/training/services/slot-freshness.js +0 -178
  537. package/dist/runtime/daimon/training/services/slot-freshness.js.map +0 -1
  538. package/dist/runtime/daimon/wakeMoments.js.map +0 -1
  539. package/dist/runtime/pi/adapter.d.ts +0 -3
  540. package/dist/runtime/pi/adapter.js +0 -230
  541. package/dist/runtime/pi/appActivitySource.d.ts +0 -1
  542. package/dist/runtime/pi/appActivitySource.js +0 -199
  543. package/dist/runtime/pi/appAgentConfig.d.ts +0 -11
  544. package/dist/runtime/pi/appAgentConfig.js +0 -264
  545. package/dist/runtime/pi/appCliEnginesSource.d.ts +0 -1
  546. package/dist/runtime/pi/appCliEnginesSource.js +0 -183
  547. package/dist/runtime/pi/appCliSource.d.ts +0 -1
  548. package/dist/runtime/pi/appCliSource.js +0 -353
  549. package/dist/runtime/pi/appControlSource.d.ts +0 -1
  550. package/dist/runtime/pi/appControlSource.js +0 -390
  551. package/dist/runtime/pi/appControlWakeIdentitySource.d.ts +0 -1
  552. package/dist/runtime/pi/appControlWakeIdentitySource.js +0 -19
  553. package/dist/runtime/pi/appCoreSource.d.ts +0 -4
  554. package/dist/runtime/pi/appCoreSource.js +0 -244
  555. package/dist/runtime/pi/appPreludeSource.d.ts +0 -1
  556. package/dist/runtime/pi/appPreludeSource.js +0 -192
  557. package/dist/runtime/pi/appScheduleSource.d.ts +0 -1
  558. package/dist/runtime/pi/appScheduleSource.js +0 -84
  559. package/dist/runtime/pi/appScriptedEngine.d.ts +0 -31
  560. package/dist/runtime/pi/appScriptedEngine.js +0 -42
  561. package/dist/runtime/pi/appSource.d.ts +0 -4
  562. package/dist/runtime/pi/appSource.js +0 -12
  563. package/dist/runtime/pi/appTemplate.d.ts +0 -14
  564. package/dist/runtime/pi/appTemplate.js +0 -28
  565. package/dist/runtime/pi/appTemplateTypes.d.ts +0 -64
  566. package/dist/runtime/pi/appTemplateTypes.js +0 -18
  567. package/dist/runtime/pi/appWakeContextSource.d.ts +0 -1
  568. package/dist/runtime/pi/appWakeContextSource.js +0 -398
  569. package/dist/runtime/pi/containerTargets.d.ts +0 -4
  570. package/dist/runtime/pi/containerTargets.js +0 -63
  571. package/dist/runtime/pi/runAuth.d.ts +0 -2
  572. package/dist/runtime/pi/runAuth.js +0 -185
  573. package/dist/runtime/pi/testHelpers.d.ts +0 -2
  574. package/dist/shared/errors.js.map +0 -1
  575. package/dist/training/subjects/environment.d.ts +0 -2
  576. package/dist/training/subjects/environment.js +0 -14
  577. package/dist/training/subjects/environment.js.map +0 -1
  578. /package/dist/runtime/{codex-exec → daimon}/training/providers/codex-subscription/index.d.ts +0 -0
  579. /package/dist/runtime/{codex-exec → daimon}/training/providers/codex-subscription/index.js +0 -0
  580. /package/dist/runtime/{codex-exec → daimon}/training/providers/codex-subscription/protocol.d.ts +0 -0
  581. /package/dist/runtime/{codex-exec → daimon}/training/providers/codex-subscription/protocol.js +0 -0
  582. /package/dist/runtime/{codex-exec → daimon}/training/providers/codex-subscription/provider.d.ts +0 -0
  583. /package/dist/runtime/{codex-exec → daimon}/training/providers/codex-subscription/provider.js +0 -0
  584. /package/dist/runtime/{codex-exec → daimon}/training/providers/codex-subscription/strict-schema.d.ts +0 -0
  585. /package/dist/runtime/{codex-exec → daimon}/training/providers/codex-subscription/strict-schema.js +0 -0
package/README.md CHANGED
@@ -83,7 +83,7 @@ See [container deployment](specs/CONTAINERS.md), [status](specs/STATUS.md), and
83
83
  | **OpenClaw** | OpenClaw agents and their native messaging surfaces. The default agent scaffold. |
84
84
  | **PicoClaw** | PicoClaw agents and their native messaging surfaces. |
85
85
 
86
- Daimon requires a pinned runtime image matching the compiler contract. The older `pi` adapter remains available for existing projects.
86
+ Daimon requires a pinned runtime image matching the compiler contract.
87
87
 
88
88
  Portability is capability-specific: the compiler reports each feature as **supported**, **degraded**, or **unsupported**. Read that report before switching runtimes. Exact versions live in [runtimes.yaml](runtimes.yaml); the [runtime specification](specs/RUNTIMES.md) describes the adapter model.
89
89
 
@@ -1,9 +1,6 @@
1
1
  /**
2
- * Grok is deliberately absent. `spawnfile.training-container.v3` holds the one
3
- * dedicated training Grok login in a broker-owned realm volume seeded from a
4
- * read-only bootstrap leaf, and judges spend it through short inference grants
5
- * (D2). Staging a Grok credential into a shared runtime home would put a
6
- * rotating login where the evaluator and the image both reach it.
2
+ * Grok is deliberately absent: a training run's Grok login lives in its auth
3
+ * gateway's realm volume, never in a staged runtime home.
7
4
  */
8
5
  export type TrainingAuthProvider = "codex" | "claude";
9
6
  export interface TrainingAuthStageOptions {
@@ -1,3 +1,3 @@
1
- import { type Command } from "commander";
1
+ import type { Command } from "commander";
2
2
  import type { CliHandlers, CliStreams } from "./runCli.js";
3
3
  export declare const registerDevCommands: (program: Command, handlers: CliHandlers, streams: CliStreams) => void;
@@ -1,11 +1,4 @@
1
- import { InvalidArgumentError } from "commander";
2
1
  import { envFileAliasOption, resolveEnvFileOption, runtimeEnvFileOption } from "./envFileOption.js";
3
- const parsePositiveIntegerOption = (value) => {
4
- if (!/^[1-9]\d*$/u.test(value)) {
5
- throw new InvalidArgumentError("must be a positive integer");
6
- }
7
- return Number(value);
8
- };
9
2
  export const registerDevCommands = (program, handlers, streams) => {
10
3
  const dev = program.command("dev").description("Run an interactive Spawnfile development deployment");
11
4
  dev
@@ -41,65 +34,6 @@ export const registerDevCommands = (program, handlers, streams) => {
41
34
  streams.stdout(`record: ${result.deploymentRecordPath}`);
42
35
  }
43
36
  });
44
- dev
45
- .command("apply")
46
- .description("Hot-apply one agent into a running dev deployment")
47
- .argument("[path]", "Project directory or Spawnfile path", process.cwd())
48
- .requiredOption("--agent <id>", "Agent id, slug, or name to hot-apply")
49
- .option("--deployment <name>", "Detached deployment record name")
50
- .option("--docker-command <command>", "Docker command")
51
- .option("-o, --out <directory>", "Dev output directory")
52
- .action(async (inputPath, options) => {
53
- const result = await handlers.devApplyProject(inputPath, {
54
- agent: options.agent,
55
- deploymentName: options.deployment,
56
- dockerCommand: options.dockerCommand,
57
- outputDirectory: options.out
58
- });
59
- streams.stdout(`applied agent ${result.agentId}`);
60
- streams.stdout(`container: ${result.containerName}`);
61
- streams.stdout(`bridge: ${result.bridgeStarted ? "started" : "unchanged"}`);
62
- });
63
- dev
64
- .command("restart")
65
- .description("Reload one agent in a running dev deployment")
66
- .argument("[path]", "Project directory or Spawnfile path", process.cwd())
67
- .requiredOption("--agent <id>", "Agent id, slug, or name to reload")
68
- .option("--deployment <name>", "Detached deployment record name")
69
- .option("--docker-command <command>", "Docker command")
70
- .option("-o, --out <directory>", "Dev output directory")
71
- .action(async (inputPath, options) => {
72
- const result = await handlers.devRestartProject(inputPath, {
73
- agent: options.agent,
74
- deploymentName: options.deployment,
75
- dockerCommand: options.dockerCommand,
76
- outputDirectory: options.out
77
- });
78
- streams.stdout(`restarted agent ${result.agentId}`);
79
- streams.stdout(`container: ${result.containerName}`);
80
- streams.stdout(`bridge: ${result.bridgeStarted ? "started" : "unchanged"}`);
81
- });
82
- dev
83
- .command("activity")
84
- .description("Print the current Pi agent activity buffer from a running dev deployment")
85
- .argument("[path]", "Project directory or Spawnfile path", process.cwd())
86
- .option("--agent <id>", "Only show events for one agent id, slug, or name")
87
- .option("--deployment <name>", "Detached deployment record name")
88
- .option("--docker-command <command>", "Docker command")
89
- .option("-o, --out <directory>", "Dev output directory")
90
- .option("--tail <count>", "Maximum buffered events to print", parsePositiveIntegerOption)
91
- .action(async (inputPath, options) => {
92
- const result = await handlers.devActivityProject(inputPath, {
93
- agent: options.agent,
94
- deploymentName: options.deployment,
95
- dockerCommand: options.dockerCommand,
96
- outputDirectory: options.out,
97
- tail: options.tail
98
- });
99
- for (const event of result.events) {
100
- streams.stdout(JSON.stringify(event));
101
- }
102
- });
103
37
  dev
104
38
  .command("stop")
105
39
  .description("Stop the recorded dev deployment container")
@@ -1,6 +1,6 @@
1
1
  import { importClaudeCodeAuth, importCodexAuth, importGrokAuth, importEnvFile, initializeTargetSecretSourceLifecycle, provisionCredentials, requireAuthProfile } from "../auth/index.js";
2
2
  import { addAgentProject, addProjectSurface, addProjectModelFallback, addSubagentProject, addTeamProject, buildOrganizationView, buildCompilePlan, buildProject, buildUpReceipt, clearProjectModelFallbacks, compileProject, createTrainingContext, createTrainingPlan, loadTrainingProject, resolveTrainingPlan, materializeTrainingMoment, lowerTrainingExecution, allocateTrainingOutputParent, initProject, listInitTemplates, publishProject, upProject, removeProjectSurface, runProject, setProjectPrimaryModel, setProjectRuntime, setProjectSurfaceAccess, showProjectSurfaces, syncProjectAuth } from "../compiler/index.js";
3
- import { devActivityProject, devApplyProject, devRestartProject, devStopProject, devUpProject } from "../dev/index.js";
3
+ import { devStopProject, devUpProject } from "../dev/index.js";
4
4
  import { consumeImageUp } from "../distribution/index.js";
5
5
  import { createDockerProbeGateway, downDeployment, exportRunArtifacts, inspectDockerDeployment, listDeploymentRecords, listHomeDeploymentRecords } from "../deployment/index.js";
6
6
  import { listRuntimeAdapters } from "../runtime/index.js";
@@ -55,9 +55,6 @@ export interface CliHandlers {
55
55
  upProject: typeof upProject;
56
56
  buildUpReceipt: typeof buildUpReceipt;
57
57
  consumeImageUp: typeof consumeImageUp;
58
- devActivityProject: typeof devActivityProject;
59
- devApplyProject: typeof devApplyProject;
60
- devRestartProject: typeof devRestartProject;
61
58
  devStopProject: typeof devStopProject;
62
59
  devUpProject: typeof devUpProject;
63
60
  setProjectPrimaryModel: typeof setProjectPrimaryModel;
@@ -2,7 +2,7 @@ import { readFileSync } from "node:fs";
2
2
  import { Command } from "commander";
3
3
  import { importClaudeCodeAuth, importCodexAuth, importGrokAuth, importEnvFile, initializeTargetSecretSourceLifecycle, provisionCredentials, requireAuthProfile } from "../auth/index.js";
4
4
  import { addAgentProject, addProjectSurface, addProjectModelFallback, addSubagentProject, addTeamProject, buildOrganizationView, buildCompilePlan, buildProject, buildUpReceipt, clearProjectModelFallbacks, compileProject, createTrainingContext, createTrainingPlan, loadTrainingProject, resolveTrainingPlan, materializeTrainingMoment, lowerTrainingExecution, allocateTrainingOutputParent, initProject, listInitTemplates, preflightCompilePlan, publishProject, upProject, removeProjectSurface, runProject, setProjectPrimaryModel, setProjectRuntime, setProjectSurfaceAccess, showProjectSurfaces, syncProjectAuth } from "../compiler/index.js";
5
- import { devActivityProject, devApplyProject, devRestartProject, devStopProject, devUpProject } from "../dev/index.js";
5
+ import { devStopProject, devUpProject } from "../dev/index.js";
6
6
  import { consumeImageUp } from "../distribution/index.js";
7
7
  import { createDockerProbeGateway, downDeployment, exportRunArtifacts, inspectDockerDeployment, listDeploymentRecords, listHomeDeploymentRecords } from "../deployment/index.js";
8
8
  import { errorExitCode, isSpawnfileError } from "../shared/index.js";
@@ -49,7 +49,7 @@ const createDefaultHandlers = () => ({
49
49
  listDeploymentRecords, listHomeDeploymentRecords,
50
50
  initProject, listInitTemplates, listRuntimeAdapters, removeProjectSurface, requireAuthProfile,
51
51
  runProject, setProjectPrimaryModel, setProjectRuntime, upProject, buildUpReceipt, consumeImageUp,
52
- devActivityProject, devApplyProject, devRestartProject, devStopProject, devUpProject,
52
+ devStopProject, devUpProject,
53
53
  setProjectSurfaceAccess, showProjectSurfaces, syncProjectAuth
54
54
  });
55
55
  const isCliStreams = (value) => {
@@ -8,14 +8,11 @@ export const registerTrainCommand = (program, handlers, streams, packageVersion,
8
8
  .description("Plan, rewind, or train one canonical agent through its declared training inputs")
9
9
  .argument("[path]", "Canonical project directory or Spawnfile path", process.cwd())
10
10
  .option("--agent <id>", "Canonical agent id or unambiguous short name (inferred for one agent)")
11
- .option("--training-image <immutable-image>", "Pinned image containing the complete training environment")
12
- .option("--training-config <json>", "V2 image recipe and declared inputs, or advanced v1 local bindings")
11
+ .option("--auth-profile <name>", "Login for production-booted Daimon trials (held by the run's auth gateway)")
13
12
  .option("--plan", "Print the resolved training authoring plan without executing training")
14
13
  .option("--materialize <example>", "Rewind an authored example into --out without running training")
15
14
  .option("--history <directory>", "Local recorded history for --materialize")
16
15
  .option("--dry-run", "Validate and estimate without compiling, authenticating or starting models")
17
- .option("--repair-measurements <parent-out>", "Fork captured work into a fresh output for authorized measurement repair")
18
- .option("--repair-witness <manifest>", "Explicit verified image witness for a legacy parent")
19
16
  .option("--resume", "Resume the exact persisted training experiment in --out");
20
17
  for (const name of forwarded) {
21
18
  const flag = `--${name} <value>`;
@@ -83,11 +80,9 @@ export const registerTrainCommand = (program, handlers, streams, packageVersion,
83
80
  args.push("--experiment-timeout-ms", String(timeout));
84
81
  if (options.trialTimeoutMs === undefined && plan.deadlines?.trial_ms !== undefined)
85
82
  args.push("--trial-timeout-ms", String(plan.deadlines.trial_ms));
86
- const lowered = plan.targets.length > 0 ? await handlers.lowerTrainingExecution({ project, plan, args,
87
- trainingConfig: options.trainingConfig, trainingImage: options.trainingImage }) : undefined;
83
+ const lowered = plan.targets.length > 0 ? await handlers.lowerTrainingExecution({ project, plan, args }) : undefined;
88
84
  if (lowered && options.dryRun === true) {
89
- streams.stdout(JSON.stringify({ ...lowered.execution, container: { configPath: lowered.trainingConfig,
90
- declaration: lowered.declaration, ...(lowered.trainingImage ? { imageOverride: lowered.trainingImage } : {}) } }, null, 2));
85
+ streams.stdout(JSON.stringify(lowered.execution, null, 2));
91
86
  setExitCode(0);
92
87
  return;
93
88
  }
@@ -97,16 +92,15 @@ export const registerTrainCommand = (program, handlers, streams, packageVersion,
97
92
  if (!lowered && options.dryRun !== true && typeof options.out !== "string") {
98
93
  throw new SpawnfileError("validation_error", "Actual training requires --out when no training targets are declared");
99
94
  }
100
- if (!lowered && options.dryRun !== true && typeof options.trainingConfig !== "string") {
101
- throw new SpawnfileError("validation_error", "Actual training requires --training-config when no training targets are declared; host execution is disabled");
102
- }
103
95
  const context = await handlers.createTrainingContext(inputPath, { agent: plan.agent.id, packageVersion });
96
+ // Trials are production-booted Daimon organizations: the container per trial is the isolation.
97
+ if (options.dryRun !== true && context.agent.runtime !== "daimon") {
98
+ throw new SpawnfileError("validation_error", `Actual training boots Daimon trials; agent ${context.agent.id} runs on ${context.agent.runtime}`);
99
+ }
104
100
  if (lowered)
105
101
  await handlers.allocateTrainingOutputParent(lowered.execution.output);
106
- setExitCode(await handlers.runTraining({ context, args: lowered?.execution.args ?? args, execution: lowered?.execution,
107
- repairMeasurements: options.repairMeasurements, repairWitness: options.repairWitness,
108
- trainingImage: lowered?.trainingImage ?? options.trainingImage,
109
- trainingConfig: lowered?.trainingConfig ?? options.trainingConfig,
102
+ setExitCode(await handlers.runTraining({ context, args: lowered?.execution.args ?? args,
103
+ authProfile: options.authProfile,
110
104
  dryRun: options.dryRun === true,
111
105
  timeoutMs: timeout + 5000, streams, signal }));
112
106
  });
@@ -0,0 +1,7 @@
1
+ import type { RunTrainingOptions } from "./trainingExecution.js";
2
+ /**
3
+ * Production-booted training for a Daimon subject: the training core and the
4
+ * grader run here, and every trial is the subject's own compiled organization
5
+ * in its own container, sharing the run's one auth gateway (and so one login).
6
+ */
7
+ export declare const runBootedTraining: (options: RunTrainingOptions) => Promise<number>;
@@ -0,0 +1,41 @@
1
+ import path from "node:path";
2
+ import { requireAuthProfile } from "../auth/index.js";
3
+ import { createBootedTrialRun } from "../compiler/training/trial/index.js";
4
+ import { createDaimonBootedAdapter } from "../runtime/daimon/training/booted/index.js";
5
+ import { SpawnfileError } from "../shared/index.js";
6
+ const failure = (message) => new SpawnfileError("runtime_error", message);
7
+ const flag = (args, name) => {
8
+ const index = args.indexOf(`--${name}`);
9
+ return index < 0 ? undefined : args[index + 1];
10
+ };
11
+ /**
12
+ * Production-booted training for a Daimon subject: the training core and the
13
+ * grader run here, and every trial is the subject's own compiled organization
14
+ * in its own container, sharing the run's one auth gateway (and so one login).
15
+ */
16
+ export const runBootedTraining = async (options) => {
17
+ if (!options.authProfile)
18
+ throw failure("Production-booted Daimon training requires --auth-profile (the login its auth gateway holds)");
19
+ const out = flag(options.args, "out");
20
+ if (!out)
21
+ throw failure("Production-booted Daimon training requires --out");
22
+ const system = options.context.documents.find((document) => document.role === "system");
23
+ const instructions = flag(options.args, "instructions") === undefined
24
+ ? system ? ["--source-root", options.context.project.root, "--instructions", system.destinationPath]
25
+ : (() => { throw failure(`Agent ${options.context.agent.id} declares no system document to train`); })()
26
+ : [];
27
+ const run = createBootedTrialRun({
28
+ agentManifestPath: options.context.agent.source,
29
+ authProfile: await requireAuthProfile(options.authProfile),
30
+ scratchRoot: path.join(path.resolve(out), "booted-trials")
31
+ });
32
+ try {
33
+ const { main } = await import("../runtime/trainingCli.js");
34
+ return await main(["train", ...options.args, ...(flag(options.args, "runtime") ? [] : ["--runtime", "daimon"]), ...instructions], {
35
+ cwd: process.cwd(), signal: options.signal, stdout: options.streams.stdout, stderr: options.streams.stderr
36
+ }, { adapter: (_runtime, adapter) => createDaimonBootedAdapter({ launcher: run, timeoutMs: adapter.timeoutMs }) });
37
+ }
38
+ finally {
39
+ await run.close();
40
+ }
41
+ };
@@ -1,17 +1,14 @@
1
- import { type TrainingContext, type TrainingExecution } from "../compiler/training/index.js";
1
+ import type { TrainingContext } from "../compiler/training/index.js";
2
2
  import type { CliStreams } from "./runCli.js";
3
3
  export interface RunTrainingOptions {
4
4
  context: TrainingContext;
5
- execution?: TrainingExecution;
6
5
  args: readonly string[];
7
6
  dryRun: boolean;
8
- repairMeasurements?: string;
9
- repairWitness?: string;
10
- trainingImage?: string;
11
- trainingConfig?: string;
7
+ /** Auth profile whose login a production-booted run's gateway holds. */
8
+ authProfile?: string;
12
9
  timeoutMs: number;
13
10
  streams: CliStreams;
14
11
  signal?: AbortSignal;
15
12
  }
16
- /** Owns image preparation/launch and invokes host estimates through the training composition. */
13
+ /** Actual training boots production trials; dry-run estimates run on the host through the training composition. */
17
14
  export declare const runTraining: (options: RunTrainingOptions) => Promise<number>;
@@ -1,9 +1,6 @@
1
1
  import { canonicalWireId } from '../shared/index.js';
2
- import { launchTrainingContainer } from "../compiler/training/container/index.js";
3
- import { runTrainingDocker } from "../compiler/training/container/process.js";
4
- import { prepareTraining } from "../compiler/training/preparation/index.js";
5
- import { readBoundedJson } from "../compiler/training/preparation/inputs.js";
6
2
  import { SpawnfileError } from "../shared/index.js";
3
+ import { runBootedTraining } from "./trainingBooted.js";
7
4
  const failure = (message) => new SpawnfileError("runtime_error", message);
8
5
  const validCostReceipt = (line) => {
9
6
  try {
@@ -16,37 +13,12 @@ const validCostReceipt = (line) => {
16
13
  return false;
17
14
  }
18
15
  };
19
- /** Owns image preparation/launch and invokes host estimates through the training composition. */
16
+ /** Actual training boots production trials; dry-run estimates run on the host through the training composition. */
20
17
  export const runTraining = async (options) => {
21
18
  if (options.signal?.aborted)
22
19
  return 130;
23
- if (options.repairWitness && !options.repairMeasurements)
24
- throw failure("--repair-witness requires --repair-measurements");
25
- if (options.trainingConfig) {
26
- const config = await readBoundedJson(options.trainingConfig);
27
- // Image declarations go through preparation; lowered launch configurations go straight to Docker.
28
- if (config.version === "spawnfile.training-container.v2" || (["spawnfile.training-container.v3", "spawnfile.training-container.v4"].includes(String(config.version)) && config.image !== undefined)) {
29
- if (options.trainingImage && !options.execution)
30
- throw failure("V2 owns its image declaration; --training-image is only for v1");
31
- const prepared = await prepareTraining({ configPath: options.trainingConfig, context: options.context, args: options.args,
32
- repairMeasurements: options.repairMeasurements, repairWitness: options.repairWitness,
33
- execution: options.execution, outputOverride: options.execution?.output, imageOverride: options.execution ? options.trainingImage : undefined,
34
- dryRun: options.dryRun, process: runTrainingDocker, timeoutMs: options.timeoutMs, signal: options.signal, streams: options.streams });
35
- if (!("dryRun" in prepared))
36
- return launchTrainingContainer({ ...prepared,
37
- timeoutMs: options.timeoutMs, signal: options.signal, streams: options.streams });
38
- options.streams.stderr(`Training preparation plan ${prepared.digest}; no Docker, auth or filesystem mutations`);
39
- options = { ...options, repairMeasurements: undefined, repairWitness: undefined };
40
- }
41
- }
42
- if (options.repairMeasurements)
43
- throw failure("Measurement repair requires the v2 preparation declaration");
44
- if (!options.dryRun) {
45
- if (!options.trainingImage || !options.trainingConfig)
46
- throw failure("Actual training requires --training-image and --training-config; host execution is disabled");
47
- return launchTrainingContainer({ image: options.trainingImage, configPath: options.trainingConfig,
48
- context: options.context, args: options.args, execution: options.execution, timeoutMs: options.timeoutMs, streams: options.streams, signal: options.signal });
49
- }
20
+ if (!options.dryRun)
21
+ return runBootedTraining(options);
50
22
  const controller = new AbortController();
51
23
  const deadline = performance.now() + options.timeoutMs;
52
24
  let active = true, lastLine = "";
@@ -5,7 +5,6 @@ import { SpawnfileError } from "../shared/index.js";
5
5
  import { createMoltnetSummary, createOrganizationSummary } from "./containerArtifactSummaries.js";
6
6
  import { createEnvVariableMap, createRuntimeTargetPlans } from "./containerArtifactsPlans.js";
7
7
  import { createDockerIgnoreContent } from "./dockerBuildContext.js";
8
- import { createDaimonTelemetryArtifacts } from "./daimonTelemetryArtifacts.js";
9
8
  import { createRootfsFiles, renderDockerfile, renderEntrypoint, renderEnvExample } from "./containerArtifactsRender.js";
10
9
  import { createMemoryArtifactBundle } from "./memoryArtifacts.js";
11
10
  import { resolveRecordingReport } from "./recordingReport.js";
@@ -39,7 +38,6 @@ export const createContainerArtifacts = async (plan, compiledNodes, options = {}
39
38
  const localDaimonIdentityPath = process.env[DAIMON_LOCAL_RUNTIME_IDENTITY_ENV]?.trim();
40
39
  const localDaimonIdentity = localDaimonIdentityPath ? await loadLocalDaimonRuntimeIdentity(localDaimonIdentityPath) : undefined;
41
40
  const runtimePlans = await createRuntimeTargetPlans(plan, compiledNodes, options.worldBindings, options.deploymentLineage);
42
- const daimonTelemetryArtifacts = createDaimonTelemetryArtifacts(plan, runtimePlans, compiledNodes);
43
41
  const envVariableMap = createEnvVariableMap(compiledNodes, runtimePlans, options.moltnet);
44
42
  const projectedWorldTokenEnvNames = [...new Set(runtimePlans.flatMap((runtimePlan) => runtimePlan.worldTokenEnvNames ?? []))].sort();
45
43
  const worldTokenEnvNames = (options.worldBindings?.artifact.bindings ?? [])
@@ -80,7 +78,6 @@ export const createContainerArtifacts = async (plan, compiledNodes, options = {}
80
78
  const persistentMountCandidates = [
81
79
  ...memoryArtifacts.mounts,
82
80
  ...workspaceResourceMounts,
83
- ...daimonTelemetryArtifacts.mounts,
84
81
  ...runtimePlans.flatMap((runtimePlan) => runtimePlan.persistentMounts ?? []),
85
82
  ...((options.moltnet?.persistentMounts ?? []).map((mount) => ({
86
83
  ...(mount.declaredVolumeName ? { declared_volume_name: mount.declaredVolumeName } : {}),
@@ -109,7 +106,6 @@ export const createContainerArtifacts = async (plan, compiledNodes, options = {}
109
106
  ].sort();
110
107
  const runtimeInstances = runtimePlans
111
108
  .map((plan) => {
112
- const telemetryMountIds = daimonTelemetryArtifacts.telemetryMountIdsByInstance.get(plan.id);
113
109
  return {
114
110
  ...(plan.agentPathsByNodeId ? { agent_paths: Object.fromEntries(Object.entries(plan.agentPathsByNodeId).map(([id, paths]) => [id, {
115
111
  workspace_path: paths.workspacePath, home_path: paths.homePath, skill_roots: paths.skillRoots
@@ -126,7 +122,6 @@ export const createContainerArtifacts = async (plan, compiledNodes, options = {}
126
122
  node_ids: [...(plan.sourceIds ?? [])],
127
123
  published_port: plan.publishedPort ?? null,
128
124
  runtime: plan.runtimeName,
129
- ...(telemetryMountIds ? { telemetry_mount_ids: telemetryMountIds } : {}),
130
125
  workspace_path: plan.instancePaths.workspacePath
131
126
  };
132
127
  })
@@ -30,6 +30,8 @@
30
30
  * particular `printf %b` implementation treats `\nnn` vs `\0nnn`. For a path
31
31
  * containing none of those four characters both forms are identical.
32
32
  */
33
+ import { DAIMON_GATEWAY_URL_ENV } from "../runtime/daimon/gateway.js";
34
+ import { isDaimonGatewayRealmMountId } from "../runtime/daimon/subscriptionRealms.js";
33
35
  export const EPHEMERAL_STATE_OPT_OUT_ENV = "SPAWNFILE_ALLOW_EPHEMERAL_STATE";
34
36
  const shellQuote = (value) => `'${value.replace(/'/g, `'"'"'`)}'`;
35
37
  const MOUNTINFO_ESCAPES = {
@@ -79,7 +81,9 @@ export const createBackedMountChecks = (mounts) => {
79
81
  }
80
82
  return [...byPath.values()]
81
83
  .sort((left, right) => left.mount_path.localeCompare(right.mount_path))
82
- .map((mount) => `require_backed_mount ${shellQuote(mount.id)} ${shellQuote(escapeMountInfoPath(mount.mount_path))} ${shellQuote(mount.mount_path)} ${shellQuote(mount.volume_name)}`);
84
+ .map((mount) =>
85
+ // An organization booted against an external auth gateway mounts no realm.
86
+ `${isDaimonGatewayRealmMountId(mount.id) ? `[ -n "\${${DAIMON_GATEWAY_URL_ENV}:-}" ] || ` : ""}require_backed_mount ${shellQuote(mount.id)} ${shellQuote(escapeMountInfoPath(mount.mount_path))} ${shellQuote(mount.mount_path)} ${shellQuote(mount.volume_name)}`);
83
87
  };
84
88
  /**
85
89
  * The full guard — function plus checks — or nothing at all when the compile
@@ -1,5 +1,5 @@
1
1
  import type { RuntimeTargetPlan } from "./containerArtifactsTypes.js";
2
- import { type DaimonGrokRegistration, type DaimonGrokServiceConfigOptions } from "./containerDaimonGrokWorkerRender.js";
2
+ import { type DaimonGrokRegistration } from "./containerDaimonGrokWorkerRender.js";
3
3
  import { DAIMON_BROKER_UID, DAIMON_FIRST_WORKER_UID, DAIMON_ORGANIZATION_UID } from "../runtime/daimon/runtimeIdentity.js";
4
4
  export { DAIMON_BROKER_UID, DAIMON_FIRST_WORKER_UID, DAIMON_ORGANIZATION_UID };
5
5
  export declare const DAIMON_BROKER_EXECUTABLE = "/opt/daimon/bin/daimon-engine-broker";
@@ -59,56 +59,11 @@ export declare const renderDaimonWorkspaceResourceSecurity: (resources: Workspac
59
59
  * `EPERM` the moment root no longer owns the path.
60
60
  */
61
61
  export declare const renderDaimonUsageLedgerProvisioning: () => string[];
62
- /**
63
- * Empties a directory without touching a mount point inside it.
64
- *
65
- * `rm -rf` and `find -delete` both fail `EBUSY` on a mount point — it is
66
- * another filesystem's root, and its entry cannot be unlinked while it is
67
- * mounted. A deployment that mounts a tmpfs below a directory it later clears
68
- * would otherwise abort provisioning on a bare `find` failure, which is exactly
69
- * how a live training launch died. Mount points are left in place and descended
70
- * into; anything else that cannot be removed is reported by name.
71
- *
72
- * Mount points come from `/proc/self/mountinfo` field 5. The kernel
73
- * octal-escapes space, tab, newline and backslash there; every path this
74
- * compiler provisions is free of all four, and a path that is not would simply
75
- * fail to match and be treated as an ordinary directory.
76
- */
77
- export declare const MOUNT_AWARE_CLEAR_HELPER: string[];
78
62
  export declare const renderDaimonBrokerProvisioning: (plans: RuntimeTargetPlan[]) => string[];
79
63
  /**
80
64
  * The root broker provisioning program itself, over already-resolved
81
- * registrations and workspace resources.
82
- *
83
- * Production reaches it through {@link renderDaimonBrokerProvisioning}; the
84
- * broker-capable training container reaches it directly for its single fixed
85
- * slot, with `serviceOptions` pointing the turn store at per-slot tmpfs and
86
- * declaring the evaluator inference ledger. Both callers get byte-identical
87
- * credential, registration, worker-home, temp and spill provisioning — the
88
- * whole point of sharing it rather than writing a second root program.
89
- *
90
- * It is re-runnable: the shell wrapper removes `/etc/daimon-engine-broker` and
91
- * `/run/daimon-engine-broker` first, so a slot recycle replays exactly the
92
- * audited start-up path, credential-journal recovery included.
93
- */
94
- export declare const renderDaimonBrokerProvisioningProgram: (registrations: readonly DaimonGrokRegistration[], workspaceResources: WorkspaceSecurityResource[], serviceOptions?: DaimonGrokServiceConfigOptions,
95
- /**
96
- * How the broker's `/etc` and `/run` roots are reset before provisioning.
97
- * A production organization owns both as ordinary image directories and
98
- * removes them outright. The training container mounts each as its own
99
- * tmpfs, which cannot be unlinked, so it empties them instead — the same
100
- * end state, reached the only way a mount point allows.
101
- */
102
- rootReset?: "remove" | "clear",
103
- /** Deny targets the worker provisioning creates when absent; see `renderDaimonGrokWorkerProvisioning`. */
104
- optionalDenyPaths?: readonly string[],
105
- /**
106
- * Where the broker and relay get their private `TMPDIR`. Production keeps it
107
- * inside the control root, which it removes and recreates exactly once. A
108
- * deployment that re-provisions that root — the training slot recycle — must
109
- * pass a path outside it: a `tmp/` inside a cleared root is a mount point in
110
- * the training launch, and clearing a mount point fails `EBUSY`.
65
+ * registrations and workspace resources. The auth gateway owns the Grok login,
66
+ * so the broker home is a plain turn-state folder and no bootstrap, authority or
67
+ * journal is staged here.
111
68
  */
112
- brokerTmpdir?: string,
113
- /** Root-owned training deny targets, created after root reset and before worker attestation. */
114
- beforeWorkerProvisioning?: readonly string[]) => string[];
69
+ export declare const renderDaimonBrokerProvisioningProgram: (registrations: readonly DaimonGrokRegistration[], workspaceResources: WorkspaceSecurityResource[]) => string[];
@@ -57,43 +57,6 @@ export const renderDaimonUsageLedgerProvisioning = () => {
57
57
  `setpriv --clear-groups --reuid ${DAIMON_ORGANIZATION_UID} --regid ${DAIMON_ORGANIZATION_UID} --inh-caps=-all --ambient-caps=-all --bounding-set=-all -- bash -ceu 'probe=${directoryPath}/.daimon-usage-probe; umask 007; : > "$probe"; rm "$probe"'`
58
58
  ];
59
59
  };
60
- /**
61
- * Empties a directory without touching a mount point inside it.
62
- *
63
- * `rm -rf` and `find -delete` both fail `EBUSY` on a mount point — it is
64
- * another filesystem's root, and its entry cannot be unlinked while it is
65
- * mounted. A deployment that mounts a tmpfs below a directory it later clears
66
- * would otherwise abort provisioning on a bare `find` failure, which is exactly
67
- * how a live training launch died. Mount points are left in place and descended
68
- * into; anything else that cannot be removed is reported by name.
69
- *
70
- * Mount points come from `/proc/self/mountinfo` field 5. The kernel
71
- * octal-escapes space, tab, newline and backslash there; every path this
72
- * compiler provisions is free of all four, and a path that is not would simply
73
- * fail to match and be treated as an ordinary directory.
74
- */
75
- export const MOUNT_AWARE_CLEAR_HELPER = [
76
- "spawnfile_mount_points=$(awk '{print $5}' /proc/self/mountinfo)",
77
- "spawnfile_is_mount() { printf '%s\\n' \"$spawnfile_mount_points\" | grep -qxF \"$1\"; }",
78
- "spawnfile_holds_mount() { printf '%s\\n' \"$spawnfile_mount_points\" | grep -qE \"^$(printf '%s' \"$1\" | sed 's/[][\\.*^$/]/\\\\&/g')(/|$)\"; }",
79
- "spawnfile_clear_tree() {",
80
- " spawnfile_root=$1",
81
- " [ -d \"$spawnfile_root\" ] || return 0",
82
- " for spawnfile_entry in \"$spawnfile_root\"/* \"$spawnfile_root\"/.[!.]* \"$spawnfile_root\"/..?*; do",
83
- " if [ ! -e \"$spawnfile_entry\" ] && [ ! -L \"$spawnfile_entry\" ]; then continue; fi",
84
- " if spawnfile_is_mount \"$spawnfile_entry\"; then continue; fi",
85
- " if spawnfile_holds_mount \"$spawnfile_entry\"; then spawnfile_clear_tree \"$spawnfile_entry\"; continue; fi",
86
- " rm -rf \"$spawnfile_entry\" || { echo \"cannot clear $spawnfile_entry: it is in use; a mount below a provisioned root must be declared outside it\" >&2; return 1; }",
87
- " done",
88
- "}",
89
- // Removes the target outright, unless it is or contains a mount point: then its contents go and the
90
- // mount points and the directories holding them stay, because neither can be unlinked while mounted.
91
- "spawnfile_remove_tree() {",
92
- " if [ ! -e \"$1\" ] && [ ! -L \"$1\" ]; then return 0; fi",
93
- " if spawnfile_holds_mount \"$1\"; then spawnfile_clear_tree \"$1\"; return $?; fi",
94
- " rm -rf \"$1\" || { echo \"cannot remove $1: it is in use\" >&2; return 1; }",
95
- "}"
96
- ];
97
60
  export const renderDaimonBrokerProvisioning = (plans) => {
98
61
  const registrations = resolveDaimonGrokRegistrations(plans);
99
62
  if (registrations.length === 0)
@@ -115,40 +78,11 @@ export const renderDaimonBrokerProvisioning = (plans) => {
115
78
  };
116
79
  /**
117
80
  * The root broker provisioning program itself, over already-resolved
118
- * registrations and workspace resources.
119
- *
120
- * Production reaches it through {@link renderDaimonBrokerProvisioning}; the
121
- * broker-capable training container reaches it directly for its single fixed
122
- * slot, with `serviceOptions` pointing the turn store at per-slot tmpfs and
123
- * declaring the evaluator inference ledger. Both callers get byte-identical
124
- * credential, registration, worker-home, temp and spill provisioning — the
125
- * whole point of sharing it rather than writing a second root program.
126
- *
127
- * It is re-runnable: the shell wrapper removes `/etc/daimon-engine-broker` and
128
- * `/run/daimon-engine-broker` first, so a slot recycle replays exactly the
129
- * audited start-up path, credential-journal recovery included.
130
- */
131
- export const renderDaimonBrokerProvisioningProgram = (registrations, workspaceResources, serviceOptions = {},
132
- /**
133
- * How the broker's `/etc` and `/run` roots are reset before provisioning.
134
- * A production organization owns both as ordinary image directories and
135
- * removes them outright. The training container mounts each as its own
136
- * tmpfs, which cannot be unlinked, so it empties them instead — the same
137
- * end state, reached the only way a mount point allows.
138
- */
139
- rootReset = "remove",
140
- /** Deny targets the worker provisioning creates when absent; see `renderDaimonGrokWorkerProvisioning`. */
141
- optionalDenyPaths,
142
- /**
143
- * Where the broker and relay get their private `TMPDIR`. Production keeps it
144
- * inside the control root, which it removes and recreates exactly once. A
145
- * deployment that re-provisions that root — the training slot recycle — must
146
- * pass a path outside it: a `tmp/` inside a cleared root is a mount point in
147
- * the training launch, and clearing a mount point fails `EBUSY`.
81
+ * registrations and workspace resources. The auth gateway owns the Grok login,
82
+ * so the broker home is a plain turn-state folder and no bootstrap, authority or
83
+ * journal is staged here.
148
84
  */
149
- brokerTmpdir = DAIMON_BROKER_TMPDIR,
150
- /** Root-owned training deny targets, created after root reset and before worker attestation. */
151
- beforeWorkerProvisioning = []) => {
85
+ export const renderDaimonBrokerProvisioningProgram = (registrations, workspaceResources) => {
152
86
  const program = [
153
87
  "const crypto = require('node:crypto'); const fs = require('node:fs');",
154
88
  `const registrations = ${JSON.stringify(registrations.map(({ agentId, home, slot, uid, workspace }) => ({ agentId, home, slot, uid, workspace })))};`,
@@ -161,32 +95,17 @@ beforeWorkerProvisioning = []) => {
161
95
  "fs.writeFileSync('/etc/daimon-engine-broker/registrations.bin', Buffer.concat(records), { mode: 0o400, flag: 'wx' });",
162
96
  "fs.chownSync('/etc/daimon-engine-broker/registrations.bin', 0, 0); fs.chmodSync('/etc/daimon-engine-broker/registrations.bin', 0o400);",
163
97
  `fs.mkdirSync('${DAIMON_BROKER_REALM}', { recursive: true, mode: 0o700 }); fs.chownSync('${DAIMON_BROKER_REALM}', 0, 0); fs.chmodSync('${DAIMON_BROKER_REALM}', 0o700);`,
164
- // The usage ledger directory itself is provisioned unconditionally by
165
- // `renderDaimonUsageLedgerProvisioning` (every Daimon organization writes
166
- // here, not just Grok ones) before this script's caller reaches the
167
- // broker startup this function guards; this script only ever reads the
168
- // path below, for the sandbox denylist.
169
- `const bootstrap = '/var/lib/spawnfile/daimon/grok-bootstrap-auth', authority = '${DAIMON_BROKER_REALM}/auth.json';`,
170
- "const readSecure = (file, owner, label) => { const before = fs.lstatSync(file); if (!before.isFile() || before.isSymbolicLink() || (owner !== undefined && (before.uid !== owner || before.gid !== owner)) || (before.mode & 0o777) !== 0o600 || before.nlink !== 1 || before.size < 2 || before.size > 65536) throw new Error(`unsafe broker credential ${label}`); const fd = fs.openSync(file, fs.constants.O_RDONLY | fs.constants.O_NOFOLLOW | fs.constants.O_NONBLOCK); try { const opened = fs.fstatSync(fd); if (opened.dev !== before.dev || opened.ino !== before.ino) throw new Error(`unsafe broker credential ${label}`); const bytes = Buffer.alloc(opened.size); let offset = 0; while (offset < bytes.length) { const count = fs.readSync(fd, bytes, offset, bytes.length - offset, offset); if (count < 1) throw new Error(`unsafe broker credential ${label}`); offset += count; } return bytes; } finally { fs.closeSync(fd); } };",
171
- `const atomicOwned = (target, bytes) => { const temporary = \`${"${target}"}.\${process.pid}.\${crypto.randomUUID()}.tmp\`; try { const output = fs.openSync(temporary, fs.constants.O_WRONLY | fs.constants.O_CREAT | fs.constants.O_EXCL | fs.constants.O_NOFOLLOW, 0o600); try { let written = 0; while (written < bytes.length) written += fs.writeSync(output, bytes, written, bytes.length - written, written); fs.fchmodSync(output, 0o600); fs.fchownSync(output, 2100, 2100); fs.fsyncSync(output); } finally { fs.closeSync(output); } fs.renameSync(temporary, target); const directory = fs.openSync(require('node:path').dirname(target), fs.constants.O_RDONLY | fs.constants.O_DIRECTORY); try { fs.fsyncSync(directory); } finally { fs.closeSync(directory); } } catch (error) { try { fs.unlinkSync(temporary); } catch {} throw error; } };`,
172
- "let existing; try { existing = fs.lstatSync(authority); } catch (error) { if (error.code !== 'ENOENT') throw error; } const bootstrapBytes = readSecure(bootstrap, undefined, 'bootstrap'); let bootstrapRecord; try { const root = JSON.parse(bootstrapBytes.toString('utf8')), rows = root && typeof root === 'object' && !Array.isArray(root) ? Object.entries(root).filter(([key, value]) => /^https:\\/\\/auth\\.x\\.ai::/.test(key) && value && typeof value === 'object' && !Array.isArray(value)).map(([, value]) => value) : []; if (rows.length !== 1 || typeof rows[0].key !== 'string' || !rows[0].key.trim() || typeof rows[0].refresh_token !== 'string' || !rows[0].refresh_token.trim() || typeof rows[0].expires_at !== 'string' || !Number.isFinite(Date.parse(rows[0].expires_at))) throw new Error(); bootstrapRecord = true; } catch { bootstrapBytes.fill(0); throw new Error('invalid broker credential bootstrap'); } if (!bootstrapRecord) throw new Error('invalid broker credential bootstrap'); const bootstrapDigest = crypto.createHash('sha256').update(bootstrapBytes).digest('hex');",
173
- `const journalRoot = '${DAIMON_BROKER_REALM}/.daimon-broker'; let journalRootExists = false; try { const info = fs.lstatSync(journalRoot); if (!info.isDirectory() || info.isSymbolicLink() || info.uid !== 2100 || info.gid !== 2100 || (info.mode & 0o777) !== 0o700) throw new Error('unsafe broker credential journal directory'); fs.chownSync(journalRoot, 0, 0); fs.chmodSync(journalRoot, 0o700); journalRootExists = true; } catch (error) { if (error.code !== 'ENOENT') throw error; }`,
174
- "const credentialExpiry = (bytes) => { try { const rows = Object.entries(JSON.parse(bytes.toString('utf8'))).filter(([key]) => /^https:\\/\\/auth\\.x\\.ai::/.test(key)).map(([, value]) => value); const expiry = rows.length === 1 && typeof rows[0]?.expires_at === 'string' ? Date.parse(rows[0].expires_at) : NaN; if (!Number.isFinite(expiry)) throw new Error(); return expiry; } catch { throw new Error('invalid broker credential expiry'); } };",
175
- `try { const journalPath = '${DAIMON_BROKER_REALM}/.daimon-broker/credential-journal.json'; let journal; try { const raw = readSecure(journalPath, 2100, 'recovery journal'); journal = JSON.parse(raw.toString('utf8')); raw.fill(0); } catch (error) { if (error.code !== 'ENOENT') throw error; } const stale = journal?.version === 'noopolis.daimon.broker-credential-journal.v1' && journal.state === 'stale'; const recover = () => { if (!stale || !Number.isSafeInteger(journal.generation) || journal.generation < 0 || !/^[a-f0-9]{64}$/.test(journal.sourceDigest) || journal.sourceDigest !== journal.promotedDigest || bootstrapDigest === journal.sourceDigest) throw new Error('unsafe broker credential recovery'); atomicOwned(authority, bootstrapBytes); const recovered = Buffer.from(\`${"${JSON.stringify({ version: 'noopolis.daimon.broker-credential-journal.v1', state: 'promoted', generation: journal.generation + 1, sourceDigest: journal.sourceDigest, promotedDigest: bootstrapDigest })}"}\\n\`); try { atomicOwned(journalPath, recovered); } finally { recovered.fill(0); } }; if (!existing) { if (journal) throw new Error('broker credential authority missing; refusing bootstrap rollback'); else atomicOwned(authority, bootstrapBytes); } else { const authorityBytes = readSecure(authority, 2100, 'authority'); try { const authorityDigest = crypto.createHash('sha256').update(authorityBytes).digest('hex'); if (stale) { if (authorityDigest !== journal.sourceDigest && authorityDigest !== bootstrapDigest) throw new Error('unsafe broker credential recovery'); if (authorityDigest === bootstrapDigest && bootstrapDigest === journal.sourceDigest) throw new Error('unsafe broker credential recovery'); if (authorityDigest !== bootstrapDigest && credentialExpiry(bootstrapBytes) <= credentialExpiry(authorityBytes)) throw new Error('older broker bootstrap cannot recover newer realm'); if (authorityDigest === bootstrapDigest) { const recovered = Buffer.from(\`${"${JSON.stringify({ version: 'noopolis.daimon.broker-credential-journal.v1', state: 'promoted', generation: journal.generation + 1, sourceDigest: journal.sourceDigest, promotedDigest: bootstrapDigest })}"}\\n\`); try { atomicOwned(journalPath, recovered); } finally { recovered.fill(0); } } else recover(); } } finally { authorityBytes.fill(0); } } } finally { bootstrapBytes.fill(0); if (journalRootExists) { fs.chownSync(journalRoot, 0, 0); fs.chmodSync(journalRoot, 0o700); fs.chownSync(journalRoot, 2100, 2100); } fs.chownSync('${DAIMON_BROKER_REALM}', 0, 0); fs.chmodSync('${DAIMON_BROKER_REALM}', 0o700); fs.chownSync('${DAIMON_BROKER_REALM}', 2100, 2100); }`,
176
98
  ...renderDaimonWorkspaceResourceSecurity(workspaceResources),
177
- ...renderDaimonGrokWorkerProvisioning(registrations, serviceOptions, ...(optionalDenyPaths ? [optionalDenyPaths] : [])),
99
+ ...renderDaimonGrokWorkerProvisioning(registrations),
178
100
  `fs.chownSync('${DAIMON_BROKER_REALM}', 0, 0); fs.chmodSync('${DAIMON_BROKER_REALM}', 0o700); fs.chownSync('${DAIMON_BROKER_REALM}', 2100, 2100);`,
179
101
  "fs.chmodSync('/etc/daimon-engine-broker', 0o555);"
180
102
  ].join("\n");
181
103
  return [
182
104
  "if [ -d /etc/daimon-engine-broker ]; then chmod u+rwx /etc/daimon-engine-broker; fi",
183
105
  "if [ -d /run/daimon-engine-broker ]; then chmod u+rwx /run/daimon-engine-broker; fi",
184
- ...(rootReset === "remove"
185
- ? ["rm -rf /etc/daimon-engine-broker /run/daimon-engine-broker"]
186
- : [...MOUNT_AWARE_CLEAR_HELPER, "for broker_root in /etc/daimon-engine-broker /run/daimon-engine-broker; do spawnfile_clear_tree \"$broker_root\"; done"]),
106
+ "rm -rf /etc/daimon-engine-broker /run/daimon-engine-broker",
187
107
  `install -d -o root -g ${DAIMON_BROKER_UID} -m 0731 /run/daimon-engine-broker`,
188
- `install -d -o ${DAIMON_BROKER_UID} -g ${DAIMON_BROKER_UID} -m 0700 ${brokerTmpdir}`,
189
- ...beforeWorkerProvisioning,
108
+ `install -d -o ${DAIMON_BROKER_UID} -g ${DAIMON_BROKER_UID} -m 0700 ${DAIMON_BROKER_TMPDIR}`,
190
109
  "node <<'SPAWNFILE_DAIMON_BROKER_PROVISION'",
191
110
  program,
192
111
  "SPAWNFILE_DAIMON_BROKER_PROVISION"