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
@@ -1,30 +0,0 @@
1
- import { type DaimonAgentSkill } from "../../../runtime/daimon/grokWorkerSkills.js";
2
- import type { TrainingContext } from "../contract.js";
3
- import type { TrainingPreparationConfig } from "./contract.js";
4
- export interface PreparedTrainingBroker {
5
- declarationPath: string;
6
- launch: {
7
- engine: "grok";
8
- realmVolume: string;
9
- bootstrap: string;
10
- declaration: string;
11
- };
12
- }
13
- /**
14
- * Lowers `spawnfile.training-container.v4`'s broker block into the read-only
15
- * `spawnfile.training-broker.v2` declaration the container's own root
16
- * entrypoint reads, plus the launch bindings that carry the realm volume and
17
- * bootstrap leaf.
18
- *
19
- * The bootstrap is checked here as well as at launch: a run that never reaches
20
- * `docker create` — a dry run, a failed build — must still refuse the
21
- * developer's desktop Grok login rather than report it later.
22
- */
23
- /**
24
- * The subject's declared skills, read from the context's pinned sources and
25
- * refused if any byte changed since capture: exactly the `SKILL.md` files the
26
- * compiler emits into its `.agents/skills`, in Daimon's engine-neutral form.
27
- * `undefined` for none keeps a skill-less declaration byte-identical.
28
- */
29
- export declare const trainingBrokerSkills: (context: Pick<TrainingContext, "skills">) => Promise<DaimonAgentSkill[] | undefined>;
30
- export declare const prepareTrainingBroker: (broker: NonNullable<TrainingPreparationConfig["broker"]>, root: string, staging: string, write: boolean, slots?: number, skills?: readonly DaimonAgentSkill[]) => Promise<PreparedTrainingBroker>;
@@ -1,68 +0,0 @@
1
- import { DAIMON_BROKER_ENGINE_ID } from "../../../runtime/daimon/index.js";
2
- import { createHash } from "node:crypto";
3
- import { lstat, readFile, writeFile } from "node:fs/promises";
4
- import path from "node:path";
5
- import { daimonAgentSkillsFromResolved, parseDaimonAgentSkills } from "../../../runtime/daimon/grokWorkerSkills.js";
6
- import { SpawnfileError } from "../../../shared/index.js";
7
- import { DAIMON_GROK_SECCOMP_PROFILE_SHA256 } from "../../../shared/daimonGrokSeccompProfile.js";
8
- import { assertNotDesktopGrokAuth } from "../broker/entrypoint.js";
9
- import { parseTrainingBrokerDeclaration } from "../broker/declaration.js";
10
- import { TRAINING_BOOTSTRAP_MOUNT } from "../broker/paths.js";
11
- import { DAIMON_ORGANIZATION_UID } from "../../../runtime/daimon/runtimeIdentity.js";
12
- /**
13
- * Lowers `spawnfile.training-container.v4`'s broker block into the read-only
14
- * `spawnfile.training-broker.v2` declaration the container's own root
15
- * entrypoint reads, plus the launch bindings that carry the realm volume and
16
- * bootstrap leaf.
17
- *
18
- * The bootstrap is checked here as well as at launch: a run that never reaches
19
- * `docker create` — a dry run, a failed build — must still refuse the
20
- * developer's desktop Grok login rather than report it later.
21
- */
22
- /**
23
- * The subject's declared skills, read from the context's pinned sources and
24
- * refused if any byte changed since capture: exactly the `SKILL.md` files the
25
- * compiler emits into its `.agents/skills`, in Daimon's engine-neutral form.
26
- * `undefined` for none keeps a skill-less declaration byte-identical.
27
- */
28
- export const trainingBrokerSkills = async (context) => {
29
- if (context.skills.length === 0)
30
- return undefined;
31
- const skills = await Promise.all(context.skills.map(async (skill) => {
32
- const bytes = await readFile(skill.sourcePath);
33
- if (`sha256:${createHash("sha256").update(bytes).digest("hex")}` !== skill.sha256) {
34
- throw new SpawnfileError("validation_error", `Training skill ${skill.name} changed since its context was captured`);
35
- }
36
- return { name: skill.name, content: bytes.toString("utf8") };
37
- }));
38
- return parseDaimonAgentSkills(daimonAgentSkillsFromResolved(skills));
39
- };
40
- export const prepareTrainingBroker = async (broker, root, staging, write, slots = 4, skills) => {
41
- const bootstrap = path.resolve(root, broker.bootstrap);
42
- assertNotDesktopGrokAuth(bootstrap);
43
- const info = await lstat(bootstrap).catch(() => undefined);
44
- if (!info?.isFile() || info.isSymbolicLink())
45
- throw Error("The training Grok bootstrap must be an existing regular credential leaf");
46
- if ((info.mode & 0o077) !== 0)
47
- throw Error("The training Grok bootstrap must not be group- or world-accessible");
48
- const declaration = parseTrainingBrokerDeclaration({
49
- version: "spawnfile.training-broker.v2",
50
- slots,
51
- maxRunRequests: broker.maxRunRequests,
52
- engine: broker.engine,
53
- agentId: broker.agentId,
54
- model: broker.model,
55
- reasoningEffort: broker.reasoningEffort,
56
- architecture: broker.architecture,
57
- limits: broker.limits,
58
- bootstrap: TRAINING_BOOTSTRAP_MOUNT,
59
- organizationUid: DAIMON_ORGANIZATION_UID,
60
- seccompProfileSha256: DAIMON_GROK_SECCOMP_PROFILE_SHA256,
61
- ...(broker.unenforcedBindPolicy === undefined ? {} : { unenforcedBindPolicy: broker.unenforcedBindPolicy }),
62
- ...(skills?.length ? { skills } : {})
63
- });
64
- const declarationPath = path.join(staging, "training-broker.json");
65
- if (write)
66
- await writeFile(declarationPath, `${JSON.stringify(declaration)}\n`, { mode: 0o444, flag: "wx" });
67
- return { declarationPath, launch: { engine: DAIMON_BROKER_ENGINE_ID, realmVolume: broker.realmVolume, bootstrap, declaration: declarationPath } };
68
- };
@@ -1,12 +0,0 @@
1
- /** Fixed staged timestamp: deterministic context bytes, and still valid in ZIP-based Python builds. */
2
- export declare const TRAINING_CONTEXT_MTIME: Date;
3
- /**
4
- * `chmod a+rX` closure: every directory gains 0555; every other entry gains 0444,
5
- * plus 0111 when any execute bit is already present. Symlinks are never staged.
6
- */
7
- export declare const readableClosure: (mode: number, directory: boolean) => number;
8
- /**
9
- * Fix staged build-context modes and times so COPY produces exactly the modes the
10
- * former in-image `chmod 0555 grok train && chmod -R a+rX /opt/training` produced.
11
- */
12
- export declare function normalizeTrainingContext(staging: string): Promise<void>;
@@ -1,38 +0,0 @@
1
- import { chmod, lstat, readdir, utimes } from "node:fs/promises";
2
- import path from "node:path";
3
- /** Fixed staged timestamp: deterministic context bytes, and still valid in ZIP-based Python builds. */
4
- export const TRAINING_CONTEXT_MTIME = new Date("2000-01-01T00:00:00Z");
5
- /**
6
- * Executables the recipe previously forced to 0555 before its recursive closure.
7
- * `spawnfile.training-container.v3` stages no Grok binary — judges use the native
8
- * parent's pinned `/usr/local/bin/grok` — and adds the root broker entrypoint.
9
- */
10
- const EXACT_MODES = { train: 0o555, "train-broker": 0o555 };
11
- /**
12
- * `chmod a+rX` closure: every directory gains 0555; every other entry gains 0444,
13
- * plus 0111 when any execute bit is already present. Symlinks are never staged.
14
- */
15
- export const readableClosure = (mode, directory) => directory ? (mode & 0o7777) | 0o555 : (mode & 0o7777) | 0o444 | ((mode & 0o111) !== 0 ? 0o111 : 0);
16
- /**
17
- * Fix staged build-context modes and times so COPY produces exactly the modes the
18
- * former in-image `chmod 0555 grok train && chmod -R a+rX /opt/training` produced.
19
- */
20
- export async function normalizeTrainingContext(staging) {
21
- const visit = async (entry, relative) => {
22
- const stat = await lstat(entry);
23
- if (stat.isSymbolicLink())
24
- throw Error("Training build context must not contain symlinks");
25
- if (stat.isDirectory()) {
26
- for (const name of (await readdir(entry)).sort())
27
- await visit(path.join(entry, name), path.posix.join(relative, name));
28
- if (relative)
29
- await chmod(entry, readableClosure(stat.mode, true));
30
- }
31
- else {
32
- await chmod(entry, EXACT_MODES[relative] ?? readableClosure(stat.mode, false));
33
- }
34
- if (relative)
35
- await utimes(entry, TRAINING_CONTEXT_MTIME, TRAINING_CONTEXT_MTIME);
36
- };
37
- await visit(staging, "");
38
- }
@@ -1,203 +0,0 @@
1
- import { z } from "zod";
2
- export declare const trainingBuildSchema: z.ZodObject<{
3
- recipe: z.ZodLiteral<"daimon-dspy.v1">;
4
- nativeImage: z.ZodString;
5
- pythonImage: z.ZodString;
6
- platform: z.ZodEnum<{
7
- "linux/amd64": "linux/amd64";
8
- "linux/arm64": "linux/arm64";
9
- }>;
10
- claude: z.ZodString;
11
- compiler: z.ZodOptional<z.ZodString>;
12
- grok: z.ZodOptional<z.ZodObject<{
13
- source: z.ZodString;
14
- sha256: z.ZodString;
15
- }, z.core.$strict>>;
16
- integration: z.ZodObject<{
17
- source: z.ZodString;
18
- entry: z.ZodString;
19
- execution: z.ZodOptional<z.ZodLiteral<"spawnfile.training-execution.v1">>;
20
- }, z.core.$strict>;
21
- bootstrap: z.ZodOptional<z.ZodString>;
22
- }, z.core.$strict>;
23
- /**
24
- * `spawnfile.training-container.v3`'s brokered Grok slot.
25
- *
26
- * It is the whole difference from v2: the container starts as root with the
27
- * production capability set, runs one broker slot for the subject, holds the
28
- * dedicated training Grok login in a named realm volume seeded from
29
- * `bootstrap`, and serves judge inference grants out of the same credential.
30
- * No Grok binary and no Grok auth staging enter the image.
31
- */
32
- export declare const trainingBrokerSchema: z.ZodObject<{
33
- maxRunRequests: z.ZodDefault<z.ZodNumber>;
34
- engine: z.ZodLiteral<"grok">;
35
- agentId: z.ZodString;
36
- model: z.ZodEnum<{
37
- "grok-4.6": "grok-4.6";
38
- "grok-4.5": "grok-4.5";
39
- "grok-build": "grok-build";
40
- }>;
41
- reasoningEffort: z.ZodEnum<{
42
- low: "low";
43
- medium: "medium";
44
- high: "high";
45
- }>;
46
- architecture: z.ZodEnum<{
47
- arm64: "arm64";
48
- x64: "x64";
49
- }>;
50
- limits: z.ZodObject<{
51
- maxRequests: z.ZodNumber;
52
- maxTokens: z.ZodNumber;
53
- timeoutMs: z.ZodNumber;
54
- }, z.core.$strict>;
55
- realmVolume: z.ZodString;
56
- bootstrap: z.ZodString;
57
- unenforcedBindPolicy: z.ZodOptional<z.ZodEnum<{
58
- refuse: "refuse";
59
- "profile-only": "profile-only";
60
- }>>;
61
- }, z.core.$strict>;
62
- export declare const trainingPreparationSchema: z.ZodObject<{
63
- version: z.ZodEnum<{
64
- "spawnfile.training-container.v3": "spawnfile.training-container.v3";
65
- "spawnfile.training-container.v4": "spawnfile.training-container.v4";
66
- "spawnfile.training-container.v2": "spawnfile.training-container.v2";
67
- }>;
68
- slots: z.ZodDefault<z.ZodNumber>;
69
- dockerContext: z.ZodString;
70
- image: z.ZodUnion<readonly [z.ZodObject<{
71
- ref: z.ZodString;
72
- }, z.core.$strict>, z.ZodObject<{
73
- build: z.ZodObject<{
74
- recipe: z.ZodLiteral<"daimon-dspy.v1">;
75
- nativeImage: z.ZodString;
76
- pythonImage: z.ZodString;
77
- platform: z.ZodEnum<{
78
- "linux/amd64": "linux/amd64";
79
- "linux/arm64": "linux/arm64";
80
- }>;
81
- claude: z.ZodString;
82
- compiler: z.ZodOptional<z.ZodString>;
83
- grok: z.ZodOptional<z.ZodObject<{
84
- source: z.ZodString;
85
- sha256: z.ZodString;
86
- }, z.core.$strict>>;
87
- integration: z.ZodObject<{
88
- source: z.ZodString;
89
- entry: z.ZodString;
90
- execution: z.ZodOptional<z.ZodLiteral<"spawnfile.training-execution.v1">>;
91
- }, z.core.$strict>;
92
- bootstrap: z.ZodOptional<z.ZodString>;
93
- }, z.core.$strict>;
94
- }, z.core.$strict>]>;
95
- integration: z.ZodObject<{
96
- settings: z.ZodObject<{
97
- input: z.ZodString;
98
- path: z.ZodUnion<readonly [z.ZodLiteral<".">, z.ZodString]>;
99
- }, z.core.$strict>;
100
- }, z.core.$strict>;
101
- inputs: z.ZodArray<z.ZodObject<{
102
- id: z.ZodString;
103
- source: z.ZodString;
104
- destination: z.ZodString;
105
- include: z.ZodOptional<z.ZodArray<z.ZodString>>;
106
- git: z.ZodOptional<z.ZodObject<{
107
- revision: z.ZodString;
108
- overlays: z.ZodDefault<z.ZodArray<z.ZodObject<{
109
- source: z.ZodString;
110
- path: z.ZodString;
111
- sha256: z.ZodString;
112
- }, z.core.$strict>>>;
113
- }, z.core.$strict>>;
114
- }, z.core.$strict>>;
115
- output: z.ZodObject<{
116
- source: z.ZodString;
117
- destination: z.ZodLiteral<"/run/training/output">;
118
- }, z.core.$strict>;
119
- auth: z.ZodArray<z.ZodObject<{
120
- source: z.ZodString;
121
- provider: z.ZodEnum<{
122
- codex: "codex";
123
- claude: "claude";
124
- }>;
125
- }, z.core.$strict>>;
126
- evaluatorRoutes: z.ZodOptional<z.ZodArray<z.ZodObject<{
127
- purpose: z.ZodEnum<{
128
- decisions: "decisions";
129
- extraction: "extraction";
130
- proposals: "proposals";
131
- }>;
132
- provider: z.ZodEnum<{
133
- "codex-subscription": "codex-subscription";
134
- typesafe: "typesafe";
135
- }>;
136
- model: z.ZodString;
137
- maxRequests: z.ZodNumber;
138
- maxSpendUsd: z.ZodOptional<z.ZodNumber>;
139
- }, z.core.$strict>>>;
140
- evaluatorSecrets: z.ZodOptional<z.ZodArray<z.ZodObject<{
141
- provider: z.ZodLiteral<"typesafe">;
142
- source: z.ZodString;
143
- }, z.core.$strict>>>;
144
- subjectIsolation: z.ZodOptional<z.ZodLiteral<"codex-native-sandbox">>;
145
- broker: z.ZodOptional<z.ZodObject<{
146
- maxRunRequests: z.ZodDefault<z.ZodNumber>;
147
- engine: z.ZodLiteral<"grok">;
148
- agentId: z.ZodString;
149
- model: z.ZodEnum<{
150
- "grok-4.6": "grok-4.6";
151
- "grok-4.5": "grok-4.5";
152
- "grok-build": "grok-build";
153
- }>;
154
- reasoningEffort: z.ZodEnum<{
155
- low: "low";
156
- medium: "medium";
157
- high: "high";
158
- }>;
159
- architecture: z.ZodEnum<{
160
- arm64: "arm64";
161
- x64: "x64";
162
- }>;
163
- limits: z.ZodObject<{
164
- maxRequests: z.ZodNumber;
165
- maxTokens: z.ZodNumber;
166
- timeoutMs: z.ZodNumber;
167
- }, z.core.$strict>;
168
- realmVolume: z.ZodString;
169
- bootstrap: z.ZodString;
170
- unenforcedBindPolicy: z.ZodOptional<z.ZodEnum<{
171
- refuse: "refuse";
172
- "profile-only": "profile-only";
173
- }>>;
174
- }, z.core.$strict>>;
175
- }, z.core.$strict>;
176
- export type TrainingPreparationConfig = z.infer<typeof trainingPreparationSchema>;
177
- export type TrainingImageBuild = z.infer<typeof trainingBuildSchema>;
178
- /** Image integration reads this protected, container-addressed receipt, never host paths. */
179
- export interface TrainingMappedPreparation {
180
- version: "spawnfile.training-preparation.v1";
181
- preparationDigest: string;
182
- imageId: string;
183
- bindings: {
184
- inputId: string;
185
- destination: string;
186
- }[];
187
- outputRoot: "/run/training/output";
188
- packagePaths: {
189
- spawnfile: string;
190
- training: string;
191
- bridge: string;
192
- nativeWorker: string;
193
- integration: string;
194
- bootstrap: string;
195
- };
196
- integration: {
197
- settings: {
198
- input: string;
199
- path: string;
200
- };
201
- };
202
- }
203
- export declare const parseTrainingMappedPreparation: (value: unknown) => TrainingMappedPreparation;
@@ -1,114 +0,0 @@
1
- import { DAIMON_BROKER_ENGINE_ID } from "../../../runtime/daimon/index.js";
2
- import path from "node:path";
3
- import { z } from "zod";
4
- import { trainingEvaluatorRoutesSchema, trainingEvaluatorSecretsSchema } from "../container/evaluators.js";
5
- import { trainingImageSchema } from "../container/contract.js";
6
- import { TRAINING_EXECUTION_VERSION } from "../contract.js";
7
- import { DAIMON_GROK_BROKER_MODELS, DAIMON_GROK_BROKER_REASONING_EFFORTS, DAIMON_GROK_ENGINE_BROKER } from "../../../runtime/daimon/contractManifest.js";
8
- const local = z.string().min(1).refine(value => !/[,\r\n\0]/u.test(value));
9
- const relative = local.refine(value => !path.isAbsolute(value) && !value.includes("\\") && value.split("/").every(part => part !== "" && part !== "." && part !== ".." && part !== ".git"));
10
- const reference = z.object({ input: z.string().min(1), path: z.union([z.literal("."), relative]) }).strict();
11
- const sha = z.string().regex(/^sha256:[a-f0-9]{64}$/u);
12
- const destination = z.string().regex(/^\/run\/training\/inputs\/[A-Za-z0-9._/-]+$/u).refine(value => path.posix.normalize(value) === value && !value.endsWith("/"));
13
- export const trainingBuildSchema = z.object({
14
- recipe: z.literal("daimon-dspy.v1"), nativeImage: trainingImageSchema, pythonImage: trainingImageSchema,
15
- platform: z.enum(["linux/arm64", "linux/amd64"]),
16
- claude: local, compiler: local.optional(),
17
- /**
18
- * Deprecated with `spawnfile.training-container.v3`: the image no longer
19
- * copies a Grok binary at all. Judges run the native parent's pinned
20
- * `/usr/local/bin/grok` through a broker inference grant, so a second copy
21
- * could only ever be a different, unattested build.
22
- */
23
- grok: z.object({ source: local, sha256: sha }).strict().optional(),
24
- integration: z.object({ source: local, entry: relative.refine(value => /^[A-Za-z0-9._/-]+$/u.test(value)),
25
- execution: z.literal(TRAINING_EXECUTION_VERSION).optional() }).strict(), bootstrap: local.optional()
26
- }).strict();
27
- const bounds = DAIMON_GROK_ENGINE_BROKER.turnLimits.bounds;
28
- /**
29
- * `spawnfile.training-container.v3`'s brokered Grok slot.
30
- *
31
- * It is the whole difference from v2: the container starts as root with the
32
- * production capability set, runs one broker slot for the subject, holds the
33
- * dedicated training Grok login in a named realm volume seeded from
34
- * `bootstrap`, and serves judge inference grants out of the same credential.
35
- * No Grok binary and no Grok auth staging enter the image.
36
- */
37
- export const trainingBrokerSchema = z.object({
38
- maxRunRequests: z.number().int().positive().max(Number.MAX_SAFE_INTEGER).default(1000),
39
- engine: z.literal(DAIMON_BROKER_ENGINE_ID),
40
- agentId: z.string().min(1).max(128).regex(/^[A-Za-z0-9][A-Za-z0-9._:-]*$/u),
41
- model: z.enum(DAIMON_GROK_BROKER_MODELS),
42
- reasoningEffort: z.enum(DAIMON_GROK_BROKER_REASONING_EFFORTS),
43
- architecture: z.enum(["arm64", "x64"]),
44
- limits: z.object({
45
- maxRequests: z.number().int().min(bounds.maxRequests[0]).max(bounds.maxRequests[1]),
46
- maxTokens: z.number().int().min(bounds.maxTokens[0]).max(bounds.maxTokens[1]),
47
- timeoutMs: z.number().int().min(bounds.timeoutMs[0]).max(bounds.timeoutMs[1])
48
- }).strict(),
49
- /** Named Docker volume for the rotating training credential and its journal; never a host bind. */
50
- realmVolume: z.string().regex(/^[A-Za-z0-9][A-Za-z0-9_.-]{0,127}$/u),
51
- /** The dedicated training Grok login leaf, relative to the declaration. Never the desktop `~/.grok/auth.json`. */
52
- bootstrap: local,
53
- unenforcedBindPolicy: z.enum(["refuse", "profile-only"]).optional()
54
- }).strict();
55
- export const trainingPreparationSchema = z.object({
56
- version: z.enum(["spawnfile.training-container.v2", "spawnfile.training-container.v3", "spawnfile.training-container.v4"]),
57
- slots: z.number().int().min(1).max(8).default(4),
58
- dockerContext: z.string().regex(/^[A-Za-z0-9][A-Za-z0-9_.-]{0,127}$/u),
59
- image: z.union([z.object({ ref: trainingImageSchema }).strict(), z.object({ build: trainingBuildSchema }).strict()]),
60
- integration: z.object({ settings: reference }).strict(),
61
- inputs: z.array(z.object({
62
- id: z.string().regex(/^[A-Za-z][A-Za-z0-9_-]{0,63}$/u), source: local, destination,
63
- include: z.array(relative).min(1).max(256).optional(),
64
- git: z.object({ revision: z.string().regex(/^[a-f0-9]{40}$/u),
65
- overlays: z.array(z.object({ source: local, path: relative, sha256: sha }).strict()).max(256).default([])
66
- }).strict().optional()
67
- }).strict()).min(1).max(64),
68
- output: z.object({ source: local, destination: z.literal("/run/training/output") }).strict(),
69
- auth: z.array(z.object({ source: local, provider: z.enum(["codex", "claude"]) }).strict()).max(2),
70
- evaluatorRoutes: trainingEvaluatorRoutesSchema.optional(),
71
- evaluatorSecrets: trainingEvaluatorSecretsSchema(local).optional(),
72
- subjectIsolation: z.literal("codex-native-sandbox").optional(),
73
- broker: trainingBrokerSchema.optional()
74
- }).strict().superRefine((value, context) => {
75
- if (value.evaluatorSecrets && !value.broker && !value.subjectIsolation)
76
- context.addIssue({ code: "custom", message: "Evaluator secrets require brokered v4 isolation or explicit codex-native-sandbox subject isolation" });
77
- if (value.subjectIsolation && value.version !== "spawnfile.training-container.v2")
78
- context.addIssue({ code: "custom", message: "Codex native subject isolation requires a non-brokered v2 preparation" });
79
- if (value.subjectIsolation && !value.evaluatorRoutes?.some(route => route.provider === "typesafe"))
80
- context.addIssue({ code: "custom", message: "Codex native subject isolation requires a TypeSafe evaluator route" });
81
- if (value.evaluatorSecrets && !value.evaluatorRoutes?.some(route => route.provider === "typesafe")) {
82
- context.addIssue({ code: "custom", message: "TypeSafe secret requires a declared evaluator route" });
83
- }
84
- if (value.version === "spawnfile.training-container.v3")
85
- context.addIssue({ code: "custom", message: "Training-container v3 is unsupported; migrate to v4 with slots: 1" });
86
- if ((value.version === "spawnfile.training-container.v4") !== (value.broker !== undefined)) {
87
- context.addIssue({ code: "custom", message: "Only spawnfile.training-container.v4 declares broker slots; migrate v3 by setting version to v4 and slots to 1" });
88
- }
89
- if (value.broker && "build" in value.image && value.image.build.grok) {
90
- context.addIssue({ code: "custom", message: "A v3 training image never copies a Grok binary; judges use the native parent's pinned /usr/local/bin/grok" });
91
- }
92
- if (new Set(value.inputs.map(input => input.id)).size !== value.inputs.length)
93
- context.addIssue({ code: "custom", message: "Input IDs must be unique" });
94
- if (new Set(value.auth.map(auth => auth.provider)).size !== value.auth.length)
95
- context.addIssue({ code: "custom", message: "Auth providers must be unique" });
96
- if (!value.inputs.some(input => input.id === value.integration.settings.input))
97
- context.addIssue({ code: "custom", message: "Integration settings require a declared input" });
98
- if (value.inputs.some(input => input.git && input.include))
99
- context.addIssue({ code: "custom", message: "Git snapshots and selective local inputs are separate modes" });
100
- });
101
- const containerPath = z.string().regex(/^\/(?:run|opt)\/[A-Za-z0-9._/-]+$/u).refine(value => path.posix.normalize(value) === value);
102
- const mappedSchema = z.object({
103
- version: z.literal("spawnfile.training-preparation.v1"), preparationDigest: sha, imageId: trainingImageSchema,
104
- bindings: z.array(z.object({ inputId: z.string().min(1), destination }).strict()).min(1).max(64),
105
- outputRoot: z.literal("/run/training/output"),
106
- packagePaths: z.object({ spawnfile: containerPath, training: containerPath, bridge: containerPath,
107
- nativeWorker: containerPath, integration: containerPath, bootstrap: containerPath }).strict(),
108
- integration: z.object({ settings: reference }).strict()
109
- }).strict().superRefine((value, context) => {
110
- if (new Set(value.bindings.map(binding => binding.inputId)).size !== value.bindings.length ||
111
- !value.bindings.some(binding => binding.inputId === value.integration.settings.input))
112
- context.addIssue({ code: "custom", message: "Invalid preparation binding IDs" });
113
- });
114
- export const parseTrainingMappedPreparation = (value) => mappedSchema.parse(value);
@@ -1 +0,0 @@
1
- export {};
@@ -1,8 +0,0 @@
1
- import { cp, mkdir } from "node:fs/promises";
2
- import path from "node:path";
3
- import { fileURLToPath } from "node:url";
4
- const root = fileURLToPath(new URL("../../../../", import.meta.url));
5
- const target = path.join(root, "dist/compiler/training/preparation/assets");
6
- await mkdir(target, { recursive: true });
7
- await cp(path.join(root, "runtime-images/training/Dockerfile"), path.join(target, "Dockerfile"));
8
- await cp(path.join(root, "package-lock.json"), path.join(target, "package-lock.json"));
@@ -1,42 +0,0 @@
1
- import { type LocalDaimonRuntimeIdentity } from "../../../runtime/index.js";
2
- import type { TrainingImageBuild } from "./contract.js";
3
- /**
4
- * The declared native parent (`image.build.nativeImage`) and the attested local
5
- * Daimon runtime identity (`SPAWNFILE_DAIMON_LOCAL_RUNTIME_IDENTITY`) are two
6
- * independent pointers at one composed run, and they are never the same digest:
7
- * `runtime-images/daimon/Dockerfile` ends in `FROM scratch`, so the identity can
8
- * only ever attest a *scratch* image that a runnable native parent copies
9
- * `/opt/spawnfile/runtime-installs/daimon` out of. Nothing host-side can compare
10
- * the two digests, so the binding is by content: the capability receipt and
11
- * contract-manifest digest the identity attests must be the ones actually baked
12
- * into the declared parent. `src/runtime/container.ts` verifies exactly this for
13
- * a compiled organization image; this is the same check for a training image.
14
- */
15
- export declare const DAIMON_RUNTIME_INSTALL_ROOT = "/opt/spawnfile/runtime-installs/daimon";
16
- export interface TrainingDaimonParent {
17
- declarationPath: string;
18
- identity: LocalDaimonRuntimeIdentity;
19
- identityPath: string;
20
- nativeImage: string;
21
- }
22
- /**
23
- * Resolves the identity that must match the declared native parent. Runs before
24
- * any Docker call, so an absent, stale-pinned or architecture-drifted identity
25
- * refuses the run — including `--dry-run` — before a container or a token is spent.
26
- */
27
- export declare const resolveTrainingDaimonParent: (build: TrainingImageBuild, declarationPath: string, env?: NodeJS.ProcessEnv) => Promise<TrainingDaimonParent | undefined>;
28
- /**
29
- * One `sh` command, executed as the first instruction of the `${NATIVE_IMAGE}`
30
- * stage, that refuses the build when the declared parent does not carry the exact
31
- * Daimon install the identity attests. This is the only place both values exist
32
- * in one process: the receipt lives inside the image, so no host-side read can
33
- * reach it without starting something.
34
- */
35
- export declare const daimonParentVerificationScript: (parent: TrainingDaimonParent) => string;
36
- /**
37
- * Injects the verification as the first instruction of the native stage, so a
38
- * mismatched pair fails in seconds instead of after the whole distribution copy.
39
- * The recipe text is part of the image plan digest, so the identity is bound into
40
- * the training image's identity too — a rotated identity can never be cached over.
41
- */
42
- export declare const bindDaimonParentVerification: (dockerfile: string, parent: TrainingDaimonParent) => string;
@@ -1,114 +0,0 @@
1
- import { SpawnfileError } from "../../../shared/index.js";
2
- import { DAIMON_LOCAL_RUNTIME_IDENTITY_ENV, loadLocalDaimonRuntimeIdentity } from "../../../runtime/index.js";
3
- /**
4
- * The declared native parent (`image.build.nativeImage`) and the attested local
5
- * Daimon runtime identity (`SPAWNFILE_DAIMON_LOCAL_RUNTIME_IDENTITY`) are two
6
- * independent pointers at one composed run, and they are never the same digest:
7
- * `runtime-images/daimon/Dockerfile` ends in `FROM scratch`, so the identity can
8
- * only ever attest a *scratch* image that a runnable native parent copies
9
- * `/opt/spawnfile/runtime-installs/daimon` out of. Nothing host-side can compare
10
- * the two digests, so the binding is by content: the capability receipt and
11
- * contract-manifest digest the identity attests must be the ones actually baked
12
- * into the declared parent. `src/runtime/container.ts` verifies exactly this for
13
- * a compiled organization image; this is the same check for a training image.
14
- */
15
- export const DAIMON_RUNTIME_INSTALL_ROOT = "/opt/spawnfile/runtime-installs/daimon";
16
- /** A native parent served by the attested loopback development registry is always a local build. */
17
- const LOOPBACK_NATIVE_PARENT = /^127\.0\.0\.1:(?:[1-9]\d{0,4})\//u;
18
- const FROM_NATIVE_IMAGE = /^FROM \$\{NATIVE_IMAGE\}.*$/mu;
19
- /** Everything embedded in the single-quoted shell literals below must be inert. */
20
- const SHELL_SAFE = /^[A-Za-z0-9 ._:@/=+,()~-]+$/u;
21
- const refuse = (lines) => {
22
- throw new SpawnfileError("validation_error", lines.join("\n"));
23
- };
24
- const safe = (label, value) => {
25
- if (!SHELL_SAFE.test(value)) {
26
- refuse([
27
- `Training cannot bind its native parent to a local Daimon runtime identity: ${label} contains characters that cannot be embedded in the image recipe.`,
28
- ` ${label} = ${JSON.stringify(value)}`
29
- ]);
30
- }
31
- return value;
32
- };
33
- /**
34
- * Resolves the identity that must match the declared native parent. Runs before
35
- * any Docker call, so an absent, stale-pinned or architecture-drifted identity
36
- * refuses the run — including `--dry-run` — before a container or a token is spent.
37
- */
38
- export const resolveTrainingDaimonParent = async (build, declarationPath, env = process.env) => {
39
- const identityPath = env[DAIMON_LOCAL_RUNTIME_IDENTITY_ENV]?.trim();
40
- if (!identityPath) {
41
- if (LOOPBACK_NATIVE_PARENT.test(build.nativeImage)) {
42
- refuse([
43
- "Training refuses a locally built native parent with no attested Daimon runtime identity.",
44
- ` ${declarationPath} image.build.nativeImage = ${build.nativeImage}`,
45
- ` ${DAIMON_LOCAL_RUNTIME_IDENTITY_ENV} = (unset)`,
46
- `Point ${DAIMON_LOCAL_RUNTIME_IDENTITY_ENV} at the runtime identity written by the same rebuild that baked ${DAIMON_RUNTIME_INSTALL_ROOT} into that image.`
47
- ]);
48
- }
49
- return undefined;
50
- }
51
- // Keeps the existing contract-pin refusal: this is the first time a training
52
- // run applies it at all, and it stays exactly as strict as it already was.
53
- const identity = await loadLocalDaimonRuntimeIdentity(identityPath);
54
- const expected = build.platform === "linux/amd64" ? "amd64" : "arm64";
55
- if (identity.imageArchitecture !== expected) {
56
- refuse([
57
- "Training native parent and local Daimon runtime identity disagree on architecture.",
58
- ` ${declarationPath} image.build.platform = ${build.platform}`,
59
- ` ${identityPath} image_architecture = ${identity.imageArchitecture}`,
60
- "Rebuild both from one architecture, or repoint both at one rebuild."
61
- ]);
62
- }
63
- return {
64
- declarationPath: safe("the training declaration path", declarationPath),
65
- identity,
66
- identityPath: safe(DAIMON_LOCAL_RUNTIME_IDENTITY_ENV, identityPath),
67
- nativeImage: safe("image.build.nativeImage", build.nativeImage)
68
- };
69
- };
70
- /**
71
- * One `sh` command, executed as the first instruction of the `${NATIVE_IMAGE}`
72
- * stage, that refuses the build when the declared parent does not carry the exact
73
- * Daimon install the identity attests. This is the only place both values exist
74
- * in one process: the receipt lives inside the image, so no host-side read can
75
- * reach it without starting something.
76
- */
77
- export const daimonParentVerificationScript = (parent) => {
78
- const receipt = `${DAIMON_RUNTIME_INSTALL_ROOT}/capability-receipt.json`;
79
- const manifest = `${DAIMON_RUNTIME_INSTALL_ROOT}/contract-manifest.sha256`;
80
- const report = [
81
- `printf '%s\\n'`,
82
- `'REFUSED: the declared training native parent does not carry the Daimon install its runtime identity attests.'`,
83
- `" ${parent.declarationPath} image.build.nativeImage = ${parent.nativeImage}"`,
84
- `" ${parent.identityPath} capability_receipt_sha256 = ${parent.identity.capabilityReceipt}"`,
85
- `" ${parent.identityPath} manifest_sha256 = ${parent.identity.manifestSha256}"`,
86
- `" native parent ${receipt} = $found_receipt"`,
87
- `" native parent ${manifest} = $found_manifest"`,
88
- `'Repoint image.build.nativeImage and ${DAIMON_LOCAL_RUNTIME_IDENTITY_ENV} at the same rebuild.'`,
89
- `>&2`
90
- ].join(" ");
91
- return [
92
- "set -u",
93
- `test -f '${receipt}' || { echo "REFUSED: ${parent.nativeImage} has no ${receipt}; it is not a Daimon native parent." >&2; exit 1; }`,
94
- `test -f '${manifest}' || { echo "REFUSED: ${parent.nativeImage} has no ${manifest}; it is not a Daimon native parent." >&2; exit 1; }`,
95
- `found_receipt="sha256:$(sha256sum '${receipt}' | cut -d' ' -f1)"`,
96
- `found_manifest="$(cat '${manifest}')"`,
97
- `if [ "$found_receipt" != '${parent.identity.capabilityReceipt}' ] || [ "$found_manifest" != '${parent.identity.manifestSha256}' ]; then ${report}; exit 1; fi`
98
- ].join("; ");
99
- };
100
- /**
101
- * Injects the verification as the first instruction of the native stage, so a
102
- * mismatched pair fails in seconds instead of after the whole distribution copy.
103
- * The recipe text is part of the image plan digest, so the identity is bound into
104
- * the training image's identity too — a rotated identity can never be cached over.
105
- */
106
- export const bindDaimonParentVerification = (dockerfile, parent) => {
107
- if (!FROM_NATIVE_IMAGE.test(dockerfile)) {
108
- refuse([
109
- "Training recipe declares no ${NATIVE_IMAGE} stage, so its native parent cannot be bound to the Daimon runtime identity.",
110
- ` ${parent.identityPath} image_reference = ${parent.identity.imageReference}`
111
- ]);
112
- }
113
- return dockerfile.replace(FROM_NATIVE_IMAGE, (line) => `${line}\nRUN ${daimonParentVerificationScript(parent)}`);
114
- };