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,48 +0,0 @@
1
- import { z } from "zod";
2
- export declare const TRAINING_EVALUATOR_ROUTES_FILE = "/run/spawnfile-training/evaluator-routes.json";
3
- export declare const TRAINING_TYPESAFE_SECRET_FILE = "/run/spawnfile-training/secrets/typesafe";
4
- export declare const TRAINING_TYPESAFE_SECRET_INGRESS = "/run/spawnfile-training/secret-ingress/typesafe";
5
- export declare const trainingEvaluatorRouteSchema: z.ZodObject<{
6
- purpose: z.ZodEnum<{
7
- decisions: "decisions";
8
- extraction: "extraction";
9
- proposals: "proposals";
10
- }>;
11
- provider: z.ZodEnum<{
12
- "codex-subscription": "codex-subscription";
13
- typesafe: "typesafe";
14
- }>;
15
- model: z.ZodString;
16
- maxRequests: z.ZodNumber;
17
- maxSpendUsd: z.ZodOptional<z.ZodNumber>;
18
- }, z.core.$strict>;
19
- export declare const trainingEvaluatorRoutesSchema: z.ZodArray<z.ZodObject<{
20
- purpose: z.ZodEnum<{
21
- decisions: "decisions";
22
- extraction: "extraction";
23
- proposals: "proposals";
24
- }>;
25
- provider: z.ZodEnum<{
26
- "codex-subscription": "codex-subscription";
27
- typesafe: "typesafe";
28
- }>;
29
- model: z.ZodString;
30
- maxRequests: z.ZodNumber;
31
- maxSpendUsd: z.ZodOptional<z.ZodNumber>;
32
- }, z.core.$strict>>;
33
- /** Only a reference is declared. Secret bytes are never read by the compiler or launcher. */
34
- export declare const trainingEvaluatorSecretsSchema: (source: z.ZodString) => z.ZodArray<z.ZodObject<{
35
- provider: z.ZodLiteral<"typesafe">;
36
- source: z.ZodString;
37
- }, z.core.$strict>>;
38
- export declare const prepareTrainingEvaluators: (root: string, config: {
39
- evaluatorRoutes?: z.infer<typeof trainingEvaluatorRoutesSchema>;
40
- evaluatorSecrets?: {
41
- provider: "typesafe";
42
- source: string;
43
- }[];
44
- subjectIsolation?: "codex-native-sandbox";
45
- }, mappedArgs: readonly string[]) => Promise<{
46
- mounts: string[];
47
- env: string[];
48
- }>;
@@ -1,50 +0,0 @@
1
- import { writeFile } from "node:fs/promises";
2
- import path from "node:path";
3
- import { z } from "zod";
4
- export const TRAINING_EVALUATOR_ROUTES_FILE = "/run/spawnfile-training/evaluator-routes.json";
5
- export const TRAINING_TYPESAFE_SECRET_FILE = "/run/spawnfile-training/secrets/typesafe";
6
- export const TRAINING_TYPESAFE_SECRET_INGRESS = "/run/spawnfile-training/secret-ingress/typesafe";
7
- export const trainingEvaluatorRouteSchema = z.object({
8
- purpose: z.enum(["extraction", "proposals", "decisions"]),
9
- provider: z.enum(["codex-subscription", "typesafe"]),
10
- model: z.string().min(1).max(128).regex(/^[A-Za-z0-9._:-]+$/u),
11
- maxRequests: z.number().int().positive().max(Number.MAX_SAFE_INTEGER),
12
- maxSpendUsd: z.number().finite().nonnegative().optional()
13
- }).strict().superRefine((route, context) => {
14
- if (route.provider === "codex-subscription" ? route.purpose === "decisions" || route.maxSpendUsd !== undefined
15
- : route.purpose !== "decisions" || route.maxSpendUsd === undefined) {
16
- context.addIssue({ code: "custom", message: "Evaluator provider/purpose mismatch or missing TypeSafe spend budget" });
17
- }
18
- });
19
- export const trainingEvaluatorRoutesSchema = z.array(trainingEvaluatorRouteSchema).min(1).max(64)
20
- .refine(routes => new Set(routes.map(route => JSON.stringify([route.purpose, route.provider, route.model]))).size === routes.length, "Duplicate evaluator route");
21
- /** Only a reference is declared. Secret bytes are never read by the compiler or launcher. */
22
- export const trainingEvaluatorSecretsSchema = (source) => z.array(z.object({
23
- provider: z.literal("typesafe"), source
24
- }).strict()).min(1).max(1);
25
- export const prepareTrainingEvaluators = async (root, config, mappedArgs) => {
26
- const mounts = [], env = [];
27
- if (config.evaluatorRoutes) {
28
- const outputs = mappedArgs.flatMap((arg, index) => arg === "--out" ? [mappedArgs[index + 1]] : []);
29
- const output = outputs[0];
30
- if (outputs.length !== 1 || !output || path.posix.normalize(output) !== output ||
31
- !(output === "/run/training/output" || output.startsWith("/run/training/output/"))) {
32
- throw Error("Evaluator receipts require one mapped training --out directory");
33
- }
34
- const source = path.join(root, "evaluator-routes.json");
35
- await writeFile(source, JSON.stringify({ version: "spawnfile.training.evaluator-routes.v1", routes: config.evaluatorRoutes,
36
- receiptPath: path.posix.join(output, "evaluator-requests.jsonl") }), { mode: 0o444, flag: "wx" });
37
- mounts.push(`type=bind,src=${source},dst=${TRAINING_EVALUATOR_ROUTES_FILE},readonly`);
38
- env.push(`SPAWNFILE_TRAINING_EVALUATOR_ROUTES_FILE=${TRAINING_EVALUATOR_ROUTES_FILE}`);
39
- }
40
- for (const secret of config.evaluatorSecrets ?? []) {
41
- // The host-uid v1 launcher cannot stage a root-owned copy; bind the canonical leaf at the consumer path.
42
- if (config.subjectIsolation === "codex-native-sandbox") {
43
- mounts.push(`type=bind,src=${secret.source},dst=${TRAINING_TYPESAFE_SECRET_FILE},readonly`);
44
- }
45
- else
46
- mounts.push(`type=bind,src=${secret.source},dst=${TRAINING_TYPESAFE_SECRET_INGRESS},readonly`);
47
- env.push(`SPAWNFILE_TRAINING_TYPESAFE_SECRET_FILE=${TRAINING_TYPESAFE_SECRET_FILE}`);
48
- }
49
- return { mounts, env };
50
- };
@@ -1,8 +0,0 @@
1
- type DockerCall = (args: string[], cleanup: boolean) => Promise<{
2
- code: number;
3
- stdout: string;
4
- stderr: string;
5
- }>;
6
- /** Called only for an ownership-verified container, before removal, including failure/cancellation. */
7
- export declare const persistTrainingGrokCredential: (id: string, profile: string, scratch: string, call: DockerCall) => Promise<void>;
8
- export {};
@@ -1,26 +0,0 @@
1
- import path from "node:path";
2
- import { writeBackTrainingGrokCredential } from "../../../auth/index.js";
3
- import { DAIMON_GROK_ENGINE_BROKER } from "../../../runtime/daimon/contractManifest.js";
4
- /** Called only for an ownership-verified container, before removal, including failure/cancellation. */
5
- export const persistTrainingGrokCredential = async (id, profile, scratch, call) => {
6
- const state = await call(["inspect", "--format", "{{json .State}}", id], true);
7
- if (state.code !== 0)
8
- throw Error("Cannot verify training credential writer state");
9
- if (JSON.parse(state.stdout).Running === true) {
10
- const stopped = await call(["stop", "--time", "5", id], true);
11
- if (stopped.code !== 0)
12
- throw Error("Cannot stop training credential writer");
13
- }
14
- const terminal = await call(["inspect", "--format", "{{json .State}}", id], true);
15
- if (terminal.code !== 0 || JSON.parse(terminal.stdout).Running !== false)
16
- throw Error("Training credential writer is still active");
17
- const realm = DAIMON_GROK_ENGINE_BROKER.credentialHomePath;
18
- const candidate = path.join(scratch, "grok-auth.json"), journal = path.join(scratch, "grok-journal.json");
19
- // Docker writes directly into a host-private directory: no credential bytes in stdout, logs or arguments.
20
- const copied = await call(["cp", `${id}:${realm}/auth.json`, candidate], true);
21
- if (copied.code !== 0)
22
- throw Error("Cannot export training Grok credential");
23
- const journalCopy = await call(["cp", `${id}:${realm}/.daimon-broker/credential-journal.json`, journal], true);
24
- // A realm that never rotated has no journal. The auth owner accepts only unchanged bytes in that case.
25
- await writeBackTrainingGrokCredential(profile, candidate, journalCopy.code === 0 ? journal : `${journal}.absent`);
26
- };
@@ -1,5 +0,0 @@
1
- export { TRAINING_FAKETIME_LIBRARY_PATH, trainingContainerConfigSchema, trainingImageSchema } from "./contract.js";
2
- export type { TrainingContainerConfig } from "./contract.js";
3
- export { launchTrainingContainer } from "./launch.js";
4
- export type { LaunchTrainingContainerOptions } from "./launch.js";
5
- export { trainingEvaluatorRouteSchema, trainingEvaluatorRoutesSchema, trainingEvaluatorSecretsSchema, TRAINING_EVALUATOR_ROUTES_FILE, TRAINING_TYPESAFE_SECRET_FILE } from "./evaluators.js";
@@ -1,3 +0,0 @@
1
- export { TRAINING_FAKETIME_LIBRARY_PATH, trainingContainerConfigSchema, trainingImageSchema } from "./contract.js";
2
- export { launchTrainingContainer } from "./launch.js";
3
- export { trainingEvaluatorRouteSchema, trainingEvaluatorRoutesSchema, trainingEvaluatorSecretsSchema, TRAINING_EVALUATOR_ROUTES_FILE, TRAINING_TYPESAFE_SECRET_FILE } from "./evaluators.js";
@@ -1,21 +0,0 @@
1
- import { type TrainingExecution } from "../execution.js";
2
- import type { TrainingContext } from "../contract.js";
3
- import { type TrainingDockerProcess } from "./process.js";
4
- export declare const TRAINING_INPUTS_GID = 2000;
5
- export interface LaunchTrainingContainerOptions {
6
- image: string;
7
- configPath: string;
8
- context: TrainingContext;
9
- args: readonly string[];
10
- timeoutMs: number;
11
- signal?: AbortSignal;
12
- streams: {
13
- stdout(line: string): void;
14
- stderr(line: string): void;
15
- };
16
- process?: TrainingDockerProcess;
17
- execution?: TrainingExecution;
18
- preparationPath?: string;
19
- repairPath?: string;
20
- }
21
- export declare const launchTrainingContainer: (options: LaunchTrainingContainerOptions) => Promise<number>;
@@ -1,280 +0,0 @@
1
- import { getRegisteredRuntime } from '../../../runtime/registry.js';
2
- import { randomUUID } from "node:crypto";
3
- import { chmod, mkdtemp, readFile, realpath, stat, writeFile } from "node:fs/promises";
4
- import path from "node:path";
5
- import { DAIMON_CODEX_NATIVE_SANDBOX_DOCKER_SECURITY_OPTS } from "../../../shared/index.js";
6
- import { parseTrainingBrokerDeclaration } from "../broker/declaration.js";
7
- import { trainingSlotsDocument, TRAINING_SLOTS_FILE } from "../broker/paths.js";
8
- import { assertNotDesktopGrokAuth } from "../broker/entrypoint.js";
9
- import { TRAINING_BROKER_ENTRYPOINT, trainingBrokerMounts, trainingBrokerSecurityArgs, trainingBrokerTmpfsTargets, trainingRunRequestMount } from "./security.js";
10
- import { parseDetachedContainerInspect } from "../../runProjectDocker.js";
11
- import { mapTrainingExecution, trainingExecutionSchema, TRAINING_EXECUTION_FILE, TRAINING_EXECUTION_CAPABILITY_LABEL, TRAINING_EXECUTION_VERSION } from "../execution.js";
12
- import { verifyCanonicalPins } from "../preparation/inputs.js";
13
- import { removeTrainingPreparationScratch } from "../preparation/scratch.js";
14
- import { trainingImageSchema } from "./contract.js";
15
- import { prepareTrainingEvaluators } from "./evaluators.js";
16
- import { prepareTrainingContainer } from "./prepare.js";
17
- import { runTrainingDocker } from "./process.js";
18
- import { repairEnvelopeSchema } from "../repair/contract.js";
19
- import { hashJson } from "../preparation/files.js";
20
- import { parseTrainingMappedPreparation } from "../preparation/contract.js";
21
- import { persistTrainingGrokCredential } from "./grokWriteback.js";
22
- import { nativeTrainingSlotsDocument } from "./nativeSlots.js";
23
- import { createTrainingOutputVolume, trainingOutputVolumeEnabled } from "./outputVolume.js";
24
- import { prepareTrainingCodexAuthority } from '../../../auth/index.js';
25
- import { DAIMON_CODEX_SUBSCRIPTION_REALM } from '../../../runtime/daimon/contractManifest.js';
26
- // The image bakes /run/training/inputs as 0:2000 0750 for brokered worker isolation; the
27
- // non-brokered host-uid evaluator joins that group so it can still traverse its own inputs.
28
- export const TRAINING_INPUTS_GID = 2_000;
29
- const inspectFormat = "{{json .Id}}\n{{json .Name}}\n{{json .Image}}\n{{json .Config.Labels}}";
30
- export const launchTrainingContainer = async (options) => {
31
- if (options.signal?.aborted)
32
- return 130;
33
- const image = trainingImageSchema.parse(options.image);
34
- const volumeEnabled = trainingOutputVolumeEnabled();
35
- const uid = process.getuid?.(), gid = process.getgid?.();
36
- if (uid === undefined || gid === undefined || uid === 0)
37
- throw Error("Training requires an explicit non-root local user");
38
- const configBytes = await readFile(options.configPath, "utf8");
39
- if (Buffer.byteLength(configBytes) > 1024 * 1024)
40
- throw Error("Training launch config exceeds 1 MiB");
41
- const raw = JSON.parse(configBytes);
42
- const prepared = await prepareTrainingContainer(options.execution
43
- ? { ...raw, output: { ...raw.output, source: options.execution.output } } : raw, options.context, options.args, { createOutput: options.execution !== undefined && !options.args.includes("--resume") });
44
- const execution = options.execution ? mapTrainingExecution(options.execution, file => {
45
- const absolute = path.resolve(file);
46
- const binding = [...prepared.config.inputs, prepared.config.output].find(entry => absolute === entry.source || absolute.startsWith(entry.source + path.sep));
47
- if (!binding)
48
- throw Error(`Training execution path is not covered by a declared mount: ${file}`);
49
- return path.posix.join(binding.destination, path.relative(binding.source, absolute).split(path.sep).join("/"));
50
- }) : undefined;
51
- if (options.execution)
52
- await verifyCanonicalPins(prepared.config.inputs.map((input, index) => ({ ...input, id: String(index), digest: "" })), options.execution.datasetPins, prepared.config.inputs.map(input => input.source));
53
- // D2: the training Grok login is a dedicated one. Refuse the developer's desktop leaf before Docker ever sees it.
54
- if (prepared.config.broker) {
55
- assertNotDesktopGrokAuth(prepared.config.broker.bootstrap);
56
- const declaration = parseTrainingBrokerDeclaration(JSON.parse(await readFile(prepared.config.broker.declaration, "utf8")));
57
- if (declaration.slots !== prepared.config.slots)
58
- throw Error("Training launch and broker declaration slots differ");
59
- }
60
- if (options.preparationPath) {
61
- if (await realpath(options.preparationPath) !== options.preparationPath)
62
- throw Error("Preparation receipt path must be canonical");
63
- parseTrainingMappedPreparation(JSON.parse(await readFile(options.preparationPath, "utf8")));
64
- }
65
- if (options.repairPath) {
66
- if (await realpath(options.repairPath) !== options.repairPath)
67
- throw Error("Repair receipt path must be canonical");
68
- const raw = JSON.parse(await readFile(options.repairPath, "utf8"));
69
- const envelope = repairEnvelopeSchema.parse(raw);
70
- if (["native", "trials", "optimizer"].some(name => name in envelope.receipt.compatibility.components)) {
71
- throw Error("Repair receipt references external training components; re-prepare with Spawnfile before repairing measurements");
72
- }
73
- const registered = await getRegisteredRuntime(options.context.agent.runtime);
74
- if (!registered?.training?.adapterId || envelope.receipt.current.adapterId !== registered.training.adapterId) {
75
- throw Error("Repair receipt adapter is not registered for the selected runtime");
76
- }
77
- if (hashJson(raw.receipt) !== envelope.digest || envelope.receipt.current.imageId !== image ||
78
- !prepared.config.inputs.some(input => input.destination === envelope.receipt.parent.root))
79
- throw Error("Repair receipt launch identity mismatch");
80
- }
81
- const execute = options.process ?? runTrainingDocker;
82
- const controller = new AbortController(), deadline = Date.now() + options.timeoutMs;
83
- let interrupted = false, timedOut = false;
84
- const interrupt = () => { interrupted = true; controller.abort(); };
85
- const timer = setTimeout(() => { timedOut = true; controller.abort(); }, options.timeoutMs);
86
- options.signal?.addEventListener("abort", interrupt, { once: true });
87
- process.on("SIGINT", interrupt);
88
- process.on("SIGTERM", interrupt);
89
- if (options.signal?.aborted)
90
- interrupt();
91
- const prefix = ["--context", prepared.config.dockerContext];
92
- const call = async (args, cleanup = false, stream = false, cleanupTimeoutMs = 10_000) => {
93
- if (!cleanup && controller.signal.aborted)
94
- throw Error("Container operation cancelled");
95
- return execute([...prefix, ...args], {
96
- timeoutMs: cleanup ? cleanupTimeoutMs : Math.max(1, deadline - Date.now()),
97
- ...(cleanup ? {} : { signal: controller.signal }), ...(stream ? options.streams : {})
98
- });
99
- };
100
- const name = `spawnfile-training-${randomUUID()}`;
101
- const labels = { "com.spawnfile.training.owner": name };
102
- let privateRoot, containerId, creationAttempted = false, startAttempted = false;
103
- let expectedImage, lastLine = "", closureVerified = false;
104
- let outputVolume;
105
- try {
106
- const endpoint = await execute(["context", "inspect", prepared.config.dockerContext, "--format", "{{json .Endpoints.docker.Host}}"], { timeoutMs: 10_000, signal: controller.signal });
107
- if (endpoint.code !== 0 || !/^unix:\/\//u.test(JSON.parse(endpoint.stdout)))
108
- throw Error("Training requires an explicitly selected local Unix Docker context");
109
- const inspected = await call(["image", "inspect", image, "--format", "{{.Id}}"]);
110
- expectedImage = inspected.stdout.trim();
111
- if (inspected.code !== 0 || !/^sha256:[a-f0-9]{64}$/u.test(expectedImage) || (image.startsWith("sha256:") && image !== expectedImage))
112
- throw Error("Training image must be locally available with an immutable identity");
113
- if (execution) {
114
- const capability = await call(["image", "inspect", expectedImage, "--format", `{{json (index .Config.Labels "${TRAINING_EXECUTION_CAPABILITY_LABEL}")}}`]);
115
- if (capability.code !== 0 || capability.stdout.trim() !== JSON.stringify(TRAINING_EXECUTION_VERSION)) {
116
- throw Error(`Authored training requires an image implementing --spawnfile-execution ${TRAINING_EXECUTION_FILE} and labelled ${TRAINING_EXECUTION_CAPABILITY_LABEL}=${TRAINING_EXECUTION_VERSION}; legacy Training datasets are incompatible`);
117
- }
118
- }
119
- privateRoot = await realpath(await mkdtemp(path.join(path.dirname(prepared.config.output.source), ".spawnfile-training-container-")));
120
- await chmod(privateRoot, 0o700);
121
- const contextFile = path.join(privateRoot, "context.json");
122
- await writeFile(contextFile, JSON.stringify(prepared.context), { mode: 0o444, flag: "wx" });
123
- const executionFile = path.join(privateRoot, "execution.json");
124
- if (execution)
125
- await writeFile(executionFile, JSON.stringify(trainingExecutionSchema.parse(execution)), { mode: 0o444, flag: "wx" });
126
- const evaluators = await prepareTrainingEvaluators(privateRoot, prepared.config, prepared.args);
127
- if (volumeEnabled) {
128
- outputVolume = createTrainingOutputVolume({ name, image: expectedImage, host: prepared.config.output.source, scratch: privateRoot,
129
- uid, gid, runtimeUid: prepared.config.broker ? 2000 : uid, runtimeGid: prepared.config.broker ? 2000 : gid,
130
- authSources: [...prepared.config.auth, ...prepared.config.evaluatorSecrets ?? []].map(auth => auth.source),
131
- context: prepared.config.dockerContext, call: (args, cleanup) => call(args, cleanup, false, 120_000), stderr: options.streams.stderr });
132
- await outputVolume.seed();
133
- }
134
- const mounts = [...evaluators.mounts, ...prepared.config.inputs.map((entry) => `type=bind,src=${entry.source},dst=${entry.destination},readonly`),
135
- outputVolume?.mount ?? `type=bind,src=${prepared.config.output.source},dst=/run/training/output`,
136
- `type=bind,src=${contextFile},dst=/run/spawnfile-training/context.json,readonly`,
137
- ...execution ? [`type=bind,src=${executionFile},dst=${TRAINING_EXECUTION_FILE},readonly`] : [],
138
- ...options.preparationPath ? [`type=bind,src=${options.preparationPath},dst=/run/spawnfile-training/preparation.json,readonly`] : [],
139
- ...options.repairPath ? [`type=bind,src=${options.repairPath},dst=/run/spawnfile-training/repair.json,readonly`] : [],
140
- ...prepared.config.auth.map((entry) => `type=bind,src=${entry.source},dst=/run/spawnfile-training-auth/${entry.provider},readonly`)];
141
- const broker = prepared.config.broker;
142
- const codex = prepared.config.auth.find(entry => entry.provider === 'codex');
143
- if (codex && !broker) {
144
- const account = await prepareTrainingCodexAuthority(codex.source, prepared.config.dockerContext);
145
- mounts.push(`type=bind,src=${account},dst=${DAIMON_CODEX_SUBSCRIPTION_REALM.durableMountPath}`, `type=bind,src=${codex.source},dst=${DAIMON_CODEX_SUBSCRIPTION_REALM.bootstrapMountPath},readonly`);
146
- }
147
- if (broker) {
148
- mounts.push(trainingRunRequestMount(prepared.config.output.source, prepared.args));
149
- const slotsFile = path.join(privateRoot, "slots.json");
150
- await writeFile(slotsFile, `${JSON.stringify(trainingSlotsDocument(prepared.config.slots))}\n`, { mode: 0o444, flag: "wx" });
151
- mounts.push(`type=bind,src=${slotsFile},dst=${TRAINING_SLOTS_FILE},readonly`);
152
- }
153
- else {
154
- const slotsFile = path.join(privateRoot, "slots.json");
155
- await writeFile(slotsFile, `${JSON.stringify(nativeTrainingSlotsDocument(prepared.config.slots, uid))}\n`, { mode: 0o444, flag: "wx" });
156
- mounts.push(`type=bind,src=${slotsFile},dst=${TRAINING_SLOTS_FILE},readonly`);
157
- }
158
- // A brokered Grok slot runs the launcher, the broker and the model's own worker uid inside this container, so it
159
- // starts as root with the production Daimon capability set instead of the host user with no capabilities at all.
160
- const privilege = broker
161
- ? [...await trainingBrokerSecurityArgs(privateRoot), "--pids-limit", "2048",
162
- ...trainingBrokerTmpfsTargets(prepared.config.slots).flatMap((entry) => ["--tmpfs", `${entry.path}:rw,nosuid,nodev,size=${entry.size},mode=${entry.mode}`])]
163
- : ["--user", `${uid}:${gid}`, "--group-add", String(TRAINING_INPUTS_GID), "--cap-drop", "ALL", "--security-opt", "no-new-privileges",
164
- ...DAIMON_CODEX_NATIVE_SANDBOX_DOCKER_SECURITY_OPTS, "--pids-limit", String(512 * prepared.config.slots),
165
- "--tmpfs", `/tmp:rw,nosuid,nodev,size=${prepared.config.slots}g,uid=${uid},gid=${gid},mode=1777`, "--tmpfs", `/work:rw,nosuid,nodev,size=${4 * prepared.config.slots}g,uid=${uid},gid=${gid},mode=700`,
166
- "--tmpfs", `/home/training:rw,nosuid,nodev,size=${prepared.config.slots}g,uid=${uid},gid=${gid},mode=700`];
167
- const args = ["create", "--name", name, "--label", `com.spawnfile.training.owner=${name}`,
168
- "--init", "--read-only", ...privilege,
169
- "--env", "HOME=/home/training", "--workdir", "/work", "--entrypoint", broker ? TRAINING_BROKER_ENTRYPOINT : "/opt/training/bin/train",
170
- ...(broker ? ["--env", "SPAWNFILE_TRAINING_MODEL_REQUEST_CAP=broker"] : []),
171
- ...evaluators.env.flatMap(value => ["--env", value]),
172
- ...[...mounts, ...(broker ? trainingBrokerMounts(broker) : [])].flatMap((mount) => ["--mount", mount]),
173
- ...(prepared.viewerPort === undefined ? [] : ["--publish", `127.0.0.1:${prepared.viewerPort}:${prepared.viewerPort}`]), expectedImage,
174
- "train", "--spawnfile-context", "/run/spawnfile-training/context.json",
175
- ...(execution ? ["--spawnfile-execution", TRAINING_EXECUTION_FILE] : []), ...prepared.args];
176
- creationAttempted = true;
177
- const created = await call(args);
178
- containerId = created.stdout.trim();
179
- if (created.code !== 0 || !/^[a-f0-9]{64}$/u.test(containerId)) {
180
- let diagnostic = created.stderr;
181
- for (const auth of [...prepared.config.auth, ...prepared.config.evaluatorSecrets ?? []])
182
- diagnostic = diagnostic.replaceAll(auth.source, "[auth source]");
183
- diagnostic = diagnostic.replace(/\p{Cc}/gu, " ").trim().slice(0, 2048);
184
- throw Error(`Docker did not return a valid training container identity${diagnostic ? `: ${diagnostic}` : ""}`);
185
- }
186
- const identity = await call(["inspect", "--format", inspectFormat, containerId]);
187
- if (identity.code !== 0 || parseDetachedContainerInspect(identity.stdout, containerId, labels, name).imageId !== expectedImage)
188
- throw Error("Training container identity mismatch");
189
- if (controller.signal.aborted)
190
- throw Error("Container operation cancelled");
191
- startAttempted = true;
192
- const result = await execute([...prefix, "start", "--attach", containerId], {
193
- timeoutMs: Math.max(1, deadline - Date.now()), signal: controller.signal,
194
- stdout: (line) => { if (line.trim())
195
- lastLine = line; options.streams.stdout(line); }, stderr: options.streams.stderr
196
- });
197
- const terminal = await call(["inspect", "--format", "{{json .State}}", containerId]);
198
- const state = JSON.parse(terminal.stdout);
199
- if (terminal.code !== 0 || state.Running !== false || !Number.isInteger(state.ExitCode) || result.code !== state.ExitCode)
200
- throw Error("Training container final state is unverified");
201
- await outputVolume?.export();
202
- if (state.ExitCode !== 0 && state.ExitCode !== 1)
203
- return state.ExitCode;
204
- const receipt = JSON.parse(lastLine);
205
- if (receipt.status !== "completed" || typeof receipt.index !== "string" || !receipt.index.startsWith("/run/training/output/") || path.posix.normalize(receipt.index) !== receipt.index)
206
- throw Error("Training exited without a valid final receipt");
207
- const artifact = path.join(prepared.config.output.source, receipt.index.slice("/run/training/output/".length));
208
- if (await realpath(artifact) !== artifact || !(await stat(artifact)).isFile())
209
- throw Error("Training completion artifact is missing or escapes output");
210
- return state.ExitCode;
211
- }
212
- catch (error) {
213
- if (interrupted)
214
- return 130;
215
- if (timedOut)
216
- throw Error("Container training exceeded command deadline");
217
- throw error;
218
- }
219
- finally {
220
- clearTimeout(timer);
221
- try {
222
- if (creationAttempted) {
223
- // A timed-out create may still have created our uniquely labelled container.
224
- const found = await call(["inspect", "--format", inspectFormat, name], true);
225
- if (found.code === 0) {
226
- const id = JSON.parse(found.stdout.split("\n")[0]);
227
- if (typeof id !== "string" || parseDetachedContainerInspect(found.stdout, id, labels, name).imageId !== expectedImage || (containerId && /^[a-f0-9]{64}$/u.test(containerId) && id !== containerId))
228
- throw Error("Refusing cleanup of unverified training container");
229
- try {
230
- if (startAttempted) {
231
- const current = await call(["inspect", "--format", "{{json .State}}", id], true);
232
- if (current.code !== 0)
233
- throw Error("Cannot verify training writer state");
234
- if (JSON.parse(current.stdout).Running === true) {
235
- const stopped = await call(["stop", "--time", "5", id], true);
236
- if (stopped.code !== 0)
237
- throw Error("Cannot stop training output writer");
238
- }
239
- }
240
- if (startAttempted && prepared.config.broker && privateRoot) {
241
- await persistTrainingGrokCredential(id, prepared.config.broker.bootstrap, privateRoot, call);
242
- }
243
- }
244
- finally {
245
- const removed = await call(["rm", "--force", id], true);
246
- const remaining = await call(["container", "ls", "--all", "--no-trunc", "--filter", `id=${id}`, "--format", "{{.ID}}"], true);
247
- if (removed.code !== 0 || remaining.code !== 0 || remaining.stdout.trim())
248
- throw Error("Training container cleanup is unverified");
249
- closureVerified = true;
250
- }
251
- }
252
- else {
253
- const remaining = await call(["container", "ls", "--all", "--filter", `name=^/${name}$`, "--format", "{{.ID}}"], true);
254
- if (remaining.code !== 0 || remaining.stdout.trim())
255
- throw Error("Training container closure is unknown");
256
- closureVerified = true;
257
- }
258
- }
259
- }
260
- finally {
261
- try {
262
- const closed = !creationAttempted || closureVerified;
263
- try {
264
- if (closed)
265
- await outputVolume?.export();
266
- }
267
- finally {
268
- await outputVolume?.dispose(closed);
269
- }
270
- }
271
- finally {
272
- options.signal?.removeEventListener("abort", interrupt);
273
- process.removeListener("SIGINT", interrupt);
274
- process.removeListener("SIGTERM", interrupt);
275
- if (privateRoot && (!creationAttempted || closureVerified) && (!outputVolume || outputVolume.safeToCleanup()))
276
- await removeTrainingPreparationScratch(privateRoot);
277
- }
278
- }
279
- }
280
- };
@@ -1,14 +0,0 @@
1
- /** Native trials keep fresh per-trial roots; only their port blocks are provisioned. */
2
- export declare const nativeTrainingSlotsDocument: (slots: number, workerUid: number) => {
3
- schema: "spawnfile.training-slots.v2";
4
- slots: {
5
- index: number;
6
- workerUid: number;
7
- isolation: "shared-uid";
8
- roots: {};
9
- ports: {
10
- base: number;
11
- count: number;
12
- };
13
- }[];
14
- };
@@ -1,13 +0,0 @@
1
- import { assertTrainingSlotCount, TRAINING_PORT_BASE, TRAINING_PORT_STRIDE } from "../broker/paths.js";
2
- /** Native trials keep fresh per-trial roots; only their port blocks are provisioned. */
3
- export const nativeTrainingSlotsDocument = (slots, workerUid) => {
4
- if (!Number.isInteger(workerUid) || workerUid <= 0 || workerUid > 4_294_967_294)
5
- throw Error("Native slots require a non-root worker uid");
6
- return {
7
- schema: "spawnfile.training-slots.v2",
8
- slots: Array.from({ length: assertTrainingSlotCount(slots) }, (_, index) => ({
9
- index, workerUid, isolation: "shared-uid", roots: {},
10
- ports: { base: TRAINING_PORT_BASE + index * TRAINING_PORT_STRIDE, count: TRAINING_PORT_STRIDE }
11
- }))
12
- };
13
- };
@@ -1,2 +0,0 @@
1
- /** Runs only in the verified Linux training image. No project code is imported. */
2
- export declare const trainingOutputCopyProgram: string;
@@ -1,72 +0,0 @@
1
- /** Runs only in the verified Linux training image. No project code is imported. */
2
- export const trainingOutputCopyProgram = String.raw `
3
- const fs = require('node:fs');
4
- const path = require('node:path');
5
- const [source, destination, owner, group] = process.argv.slice(1);
6
- const uid = Number(owner), gid = Number(group);
7
- const limits = { entries: 1_000_000, bytes: 64 * 1024 ** 3, depth: 64 };
8
- let entries = 0, bytes = 0;
9
- const links = new Map();
10
- const buffer = Buffer.alloc(1024 * 1024);
11
- // Linux fd-relative traversal keeps renamed directories and symlink swaps from
12
- // redirecting reads/writes outside the two mounts. The fallback permits local QA.
13
- const fdPath = (fd, file) => process.platform === 'linux' ? '/proc/self/fd/' + fd : file;
14
- const directory = fs.constants.O_RDONLY | fs.constants.O_DIRECTORY | fs.constants.O_NOFOLLOW;
15
- function copy(src, dst, depth) {
16
- if (++entries > limits.entries || depth > limits.depth) throw Error('Output tree exceeds entry/depth limit');
17
- const info = fs.lstatSync(src);
18
- if (info.isSymbolicLink()) {
19
- const target = fs.readlinkSync(src);
20
- bytes += Buffer.byteLength(target);
21
- if (bytes > limits.bytes) throw Error('Output exceeds 64 GiB');
22
- fs.symlinkSync(target, dst); fs.lchownSync(dst, uid, gid);
23
- fs.lutimesSync(dst, info.atime, info.mtime);
24
- return;
25
- }
26
- if (info.isDirectory()) {
27
- const input = fs.openSync(src, directory);
28
- let output;
29
- try {
30
- if (depth !== 0) fs.mkdirSync(dst, { mode: 0o700 });
31
- output = fs.openSync(dst, directory);
32
- fs.fchownSync(output, uid, gid);
33
- const from = fdPath(input, src), to = fdPath(output, dst);
34
- if (depth === 0 && fs.readdirSync(to).length) throw Error('Output copy destination must be empty');
35
- for (const name of fs.readdirSync(from)) copy(path.join(from, name), path.join(to, name), depth + 1);
36
- fs.fchownSync(output, uid, gid); fs.fchmodSync(output, info.mode & 0o7777);
37
- fs.futimesSync(output, info.atime, info.mtime); fs.fsyncSync(output);
38
- } finally { if (output !== undefined) fs.closeSync(output); fs.closeSync(input); }
39
- return;
40
- }
41
- if (!info.isFile()) throw Error('Output contains a special file');
42
- const input = fs.openSync(src, fs.constants.O_RDONLY | fs.constants.O_NOFOLLOW | fs.constants.O_NONBLOCK);
43
- let output;
44
- try {
45
- const opened = fs.fstatSync(input);
46
- if (!opened.isFile() || opened.dev !== info.dev || opened.ino !== info.ino) throw Error('Output changed during copy');
47
- const key = info.dev + ':' + info.ino;
48
- // Store a path rooted at the destination mount, not an fd that closes after recursion.
49
- const previous = links.get(key);
50
- if (previous) { fs.linkSync(previous, dst); return; }
51
- bytes += info.size;
52
- if (bytes > limits.bytes) throw Error('Output exceeds 64 GiB');
53
- output = fs.openSync(dst, fs.constants.O_WRONLY | fs.constants.O_CREAT | fs.constants.O_EXCL | fs.constants.O_NOFOLLOW, 0o600);
54
- fs.fchownSync(output, uid, gid);
55
- let position = 0;
56
- while (position < info.size) {
57
- const count = fs.readSync(input, buffer, 0, Math.min(buffer.length, info.size - position), position);
58
- if (!count) throw Error('Output truncated during copy');
59
- let written = 0;
60
- while (written < count) written += fs.writeSync(output, buffer, written, count - written);
61
- position += count;
62
- }
63
- const after = fs.fstatSync(input);
64
- if (after.size !== info.size || after.mtimeMs !== info.mtimeMs) throw Error('Output changed during copy');
65
- fs.fchownSync(output, uid, gid); fs.fchmodSync(output, info.mode & 0o7777);
66
- fs.futimesSync(output, info.atime, info.mtime); fs.fsyncSync(output);
67
- links.set(key, fs.realpathSync(dst));
68
- } finally { if (output !== undefined) fs.closeSync(output); fs.closeSync(input); }
69
- }
70
- copy(source, destination, 0);
71
- console.log('spawnfile-output-copy-complete');
72
- `;
@@ -1,28 +0,0 @@
1
- type DockerCall = (args: string[], cleanup?: boolean) => Promise<{
2
- code: number;
3
- stdout: string;
4
- stderr: string;
5
- }>;
6
- export declare const trainingOutputVolumeEnabled: () => boolean;
7
- /** One launch owns this volume; budgets and auth volumes are never touched. */
8
- export declare const createTrainingOutputVolume: (options: {
9
- name: string;
10
- image: string;
11
- host: string;
12
- scratch: string;
13
- uid: number;
14
- gid: number;
15
- runtimeUid: number;
16
- runtimeGid: number;
17
- context: string;
18
- authSources?: readonly string[];
19
- call: DockerCall;
20
- stderr(line: string): void;
21
- }) => {
22
- safeToCleanup: () => boolean;
23
- mount: string;
24
- seed(): Promise<void>;
25
- export(): Promise<void>;
26
- dispose(closureVerified: boolean): Promise<void>;
27
- };
28
- export {};