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
@@ -2,13 +2,6 @@ export * from "./contract.js";
2
2
  export * from "./context.js";
3
3
  export * from "./plan/index.js";
4
4
  export * from "./rewind/index.js";
5
- export { parseTrainingMappedPreparation, trainingPreparationSchema } from "./preparation/contract.js";
6
- export { prepareTrainingEvaluators } from "./container/evaluators.js";
7
- export { TRAINING_SLOTS_FILE, TRAINING_SLOTS_VERSION, trainingSlotPaths, trainingSlotDescriptors, trainingSlotsDocument } from "./broker/paths.js";
8
5
  export * from "./execution.js";
9
6
  export * from "./moments.js";
10
7
  export * from "./compiledAgent.js";
11
- export { TRAINING_FAKETIME_LIBRARY_PATH } from "./container/contract.js";
12
- export * from "./subjectLease.js";
13
- export * from "./subjectDeclaration.js";
14
- export { recycleTrainingSlot } from "./broker/recycleClient.js";
@@ -1,2 +1,3 @@
1
+ export declare const within: (root: string, file: string) => boolean;
1
2
  /** Durable default namespace disjoint from every declared input, even a project ancestor. */
2
3
  export declare const defaultTrainingOutputRoot: (projectRoot: string, inputs?: readonly string[]) => string;
@@ -1,6 +1,6 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import path from "node:path";
3
- import { within } from "./preparation/files.js";
3
+ export const within = (root, file) => file === root || file.startsWith(root + path.sep);
4
4
  /** Durable default namespace disjoint from every declared input, even a project ancestor. */
5
5
  export const defaultTrainingOutputRoot = (projectRoot, inputs = []) => {
6
6
  const sources = [projectRoot, ...inputs].map(source => path.resolve(source));
@@ -0,0 +1,53 @@
1
+ import { type DaimonControlCall } from "../../../runtime/daimon/control.js";
2
+ import { type UsageRecord } from "../../../runtime/usageLedger.js";
3
+ import { type TrialDocker } from "./docker.js";
4
+ import type { TrainingGatewayAccess } from "./gateway.js";
5
+ /**
6
+ * Lineage namespace for training trials: every trial derives its own durable
7
+ * volume names, so no trial ever attaches production's, dev's or another
8
+ * trial's state (see `deploymentLineage.ts`).
9
+ */
10
+ export declare const TRAINING_TRIAL_LINEAGE_NAMESPACE = "training";
11
+ export interface TrialOptions {
12
+ agentManifestPath: string;
13
+ instructions: string;
14
+ trialId: string;
15
+ /** Fresh per trial; holds the trial project, compile output and boot env file. */
16
+ directory: string;
17
+ docker?: TrialDocker;
18
+ control?: DaimonControlCall;
19
+ }
20
+ export interface TrialWake {
21
+ state: "completed" | "failed" | "stopped" | "timeout";
22
+ acceptanceId: string;
23
+ executionId: string | null;
24
+ code: string | null;
25
+ text: string;
26
+ /** Usage ledger rows this wake appended; empty means none were written, never zero spend. */
27
+ usage: UsageRecord[];
28
+ /** The engine's own newest session record, bounded; null when none exists. */
29
+ transcript: string | null;
30
+ }
31
+ export interface BootedTrial {
32
+ container: string;
33
+ wake(text: string, options: {
34
+ deliveryId: string;
35
+ timeoutMs: number;
36
+ signal?: AbortSignal;
37
+ }): Promise<TrialWake>;
38
+ /** Credential-shaped files anywhere in the trial container (expected: none). */
39
+ scanCredentials(): Promise<string[]>;
40
+ teardown(): Promise<void>;
41
+ }
42
+ export interface PreparedTrial {
43
+ image: string;
44
+ runtimeRoot: string;
45
+ engines: string[];
46
+ agentId: string;
47
+ boot(gateway: TrainingGatewayAccess, options?: {
48
+ readyTimeoutMs?: number;
49
+ }): Promise<BootedTrial>;
50
+ dispose(): Promise<void>;
51
+ }
52
+ /** Compiles and builds the trial's one-agent organization under its own lineage, as production does. */
53
+ export declare const prepareTrial: (options: TrialOptions) => Promise<PreparedTrial>;
@@ -0,0 +1,147 @@
1
+ import { createHash, randomBytes } from "node:crypto";
2
+ import { mkdir, rm, writeFile } from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { DAIMON_GATEWAY_KEY_ENV, DAIMON_GATEWAY_URL_ENV, getDaimonEngineDescriptor, isDaimonGatewayRealmMountId } from "../../../runtime/daimon/index.js";
5
+ import { daimonHelperControlCall } from "../../../runtime/daimon/control.js";
6
+ import { RUNTIME_INSTALL_ROOT } from "../../../runtime/container.js";
7
+ import { parseUsageLedger } from "../../../runtime/usageLedger.js";
8
+ import { DAIMON_GROK_TURN_USAGE_LEDGER } from "../../../runtime/daimon/contractManifest.js";
9
+ import { SpawnfileError } from "../../../shared/index.js";
10
+ import { buildCompiledProject } from "../../buildProject.js";
11
+ import { compileProject } from "../../compileProject.js";
12
+ import { resolveDeploymentLineage } from "../../deploymentLineage.js";
13
+ import { slugify } from "../../helpers.js";
14
+ import { createDockerRunInvocation, runDockerContainer } from "../../runProject.js";
15
+ import { executeDockerRunWithSupportCleanup } from "../../runProjectLifecycle.js";
16
+ import { createTrialDocker, waitFor } from "./docker.js";
17
+ import { writeTrialProject } from "./project.js";
18
+ /**
19
+ * Lineage namespace for training trials: every trial derives its own durable
20
+ * volume names, so no trial ever attaches production's, dev's or another
21
+ * trial's state (see `deploymentLineage.ts`).
22
+ */
23
+ export const TRAINING_TRIAL_LINEAGE_NAMESPACE = "training";
24
+ const CONTROL_TOKEN_ENV = "SPAWNFILE_DAIMON_CONTROL_TOKEN";
25
+ const WAKE_VERSION = "noopolis.daimon.wake.v2";
26
+ const TERMINAL = new Set(["completed", "failed", "stopped"]);
27
+ const MAX_TRANSCRIPT_BYTES = 1024 * 1024;
28
+ /** Compiles and builds the trial's one-agent organization under its own lineage, as production does. */
29
+ export const prepareTrial = async (options) => {
30
+ const docker = options.docker ?? createTrialDocker();
31
+ // Readable and collision-free: trial ids may share long prefixes.
32
+ const slug = `${slugify(options.trialId).slice(0, 32) || "trial"}-${createHash("sha256").update(options.trialId).digest("hex").slice(0, 8)}`;
33
+ const project = await writeTrialProject(options.agentManifestPath, options.instructions, path.join(options.directory, "project"));
34
+ const compiled = await compileProject(project, {
35
+ deploymentLineage: resolveDeploymentLineage(slug, TRAINING_TRIAL_LINEAGE_NAMESPACE),
36
+ outputDirectory: path.join(options.directory, "out")
37
+ });
38
+ const image = `spawnfile-training-trial:${slug}`;
39
+ await buildCompiledProject(project, compiled, { imageTag: image });
40
+ const instance = compiled.report.container?.runtime_instances.find((entry) => entry.runtime === "daimon");
41
+ const agents = Object.entries(instance?.engine_by_node_id ?? {});
42
+ if (!instance || agents.length !== 1)
43
+ throw new SpawnfileError("validation_error", "A production-booted trial compiles exactly one Daimon agent");
44
+ const [agentId] = agents[0];
45
+ const home = instance.agent_paths?.[agentId]?.home_path;
46
+ // The engine writes its own session records under its home inside the agent's runtime home.
47
+ const engineHome = getDaimonEngineDescriptor(agents[0][1])?.homeDirectory;
48
+ const sessionsPath = home && engineHome !== undefined ? path.posix.join(home, engineHome, "sessions") : null;
49
+ const dispose = async () => {
50
+ await docker(["image", "rm", "-f", image]).catch(() => undefined);
51
+ await rm(options.directory, { recursive: true, force: true });
52
+ };
53
+ return {
54
+ agentId, dispose, image,
55
+ engines: agents.map(([, engine]) => engine),
56
+ runtimeRoot: `${RUNTIME_INSTALL_ROOT}/daimon`,
57
+ boot: async (gateway, bootOptions = {}) => {
58
+ const token = randomBytes(32).toString("base64url");
59
+ const container = `spawnfile-trial-${slug}`;
60
+ await mkdir(options.directory, { recursive: true });
61
+ const envFilePath = path.join(options.directory, "boot.env");
62
+ // The boot inputs: control token, gateway URL and key. No login, no realm.
63
+ await writeFile(envFilePath, `${CONTROL_TOKEN_ENV}=${token}\n${DAIMON_GATEWAY_URL_ENV}=${gateway.url}\n${DAIMON_GATEWAY_KEY_ENV}=${gateway.key}\n`, { mode: 0o600 });
64
+ const invocation = await createDockerRunInvocation(compiled, image, {
65
+ containerName: container, deploymentName: slug, detach: true, envFilePath, network: gateway.network
66
+ });
67
+ const volumes = (compiled.report.container?.persistent_mounts ?? [])
68
+ .filter((mount) => !isDaimonGatewayRealmMountId(mount.id)).map((mount) => mount.volume_name);
69
+ const teardown = async () => {
70
+ await docker(["rm", "-f", container]).catch(() => undefined);
71
+ for (const volume of volumes)
72
+ await docker(["volume", "rm", "-f", volume]).catch(() => undefined);
73
+ await rm(invocation.supportDirectory, { recursive: true, force: true });
74
+ await rm(envFilePath, { force: true });
75
+ };
76
+ try {
77
+ await executeDockerRunWithSupportCleanup(invocation, runDockerContainer);
78
+ await rm(envFilePath, { force: true });
79
+ const target = { containerRef: container, dockerArgs: [], dockerCommand: "docker", imageRef: image, token };
80
+ const call = options.control ?? daimonHelperControlCall;
81
+ await waitFor(async () => {
82
+ if (await docker(["inspect", "--format", "{{.State.Running}}", container]) !== "true") {
83
+ const logs = await docker(["logs", "--tail", "30", container]).catch(() => "");
84
+ throw new SpawnfileError("runtime_error", `trial organization exited before readiness: ${logs.replace(/\s+/gu, " ").slice(-600)}`);
85
+ }
86
+ return call(target, "GET", "/v2/availability").then((response) => response.status === 200, () => false);
87
+ }, bootOptions.readyTimeoutMs ?? 180_000, "trial organization readiness", 1_000);
88
+ return createBootedTrial({ agentId, call, container, docker, sessionsPath, target, teardown });
89
+ }
90
+ catch (error) {
91
+ await teardown();
92
+ throw error;
93
+ }
94
+ }
95
+ };
96
+ };
97
+ const readLedger = async (docker, container) => {
98
+ const text = await docker(["exec", container, "cat", DAIMON_GROK_TURN_USAGE_LEDGER.filePath]).catch(() => "");
99
+ return parseUsageLedger(text);
100
+ };
101
+ const createBootedTrial = (input) => {
102
+ let seenRows = 0;
103
+ return {
104
+ container: input.container,
105
+ teardown: input.teardown,
106
+ scanCredentials: async () => {
107
+ const found = await input.docker(["exec", input.container, "find", "/", "-xdev", "(", "-name", "auth.json", "-o", "-name", "*token*", "-o", "-name", "*bootstrap-auth*", ")",
108
+ "-not", "-path", "/proc/*", "-not", "-path", "/sys/*", "-not", "-path", "/usr/*", "-not", "-path", "/opt/spawnfile/runtime-installs/*"], { timeoutMs: 60_000 }).catch((error) => error.message);
109
+ return found.split("\n").filter(Boolean);
110
+ },
111
+ wake: async (text, options) => {
112
+ const body = { agent_id: input.agentId, delivery_id: options.deliveryId,
113
+ event: { version: WAKE_VERSION, kind: "manual", text, occurred_at: new Date().toISOString() } };
114
+ const accepted = await input.call(input.target, "POST", "/v2/wakes", body);
115
+ const acceptance = JSON.parse(accepted.body);
116
+ if (accepted.status !== 202 || acceptance.state !== "accepted" || !acceptance.acceptance_id) {
117
+ throw new SpawnfileError("runtime_error", `trial wake was not accepted (HTTP ${accepted.status}${acceptance.code ? `, ${acceptance.code}` : ""})`);
118
+ }
119
+ const id = acceptance.acceptance_id;
120
+ let receipt = {};
121
+ const deadline = Date.now() + options.timeoutMs;
122
+ while (!TERMINAL.has(receipt.state ?? "") && Date.now() < deadline && !options.signal?.aborted) {
123
+ await new Promise((resolve) => setTimeout(resolve, 1_000));
124
+ const response = await input.call(input.target, "GET", `/v2/wake-receipts/${id}`);
125
+ if (response.status === 200)
126
+ receipt = JSON.parse(response.body);
127
+ }
128
+ const rows = await readLedger(input.docker, input.container);
129
+ const usage = rows.slice(seenRows).filter((row) => row.agent === input.agentId);
130
+ seenRows = rows.length;
131
+ return {
132
+ acceptanceId: id, code: receipt.code ?? null, executionId: receipt.execution_id ?? null, usage,
133
+ state: TERMINAL.has(receipt.state ?? "") ? receipt.state : "timeout",
134
+ text: receipt.text ?? "",
135
+ transcript: input.sessionsPath === null ? null : await readTranscript(input.docker, input.container, input.sessionsPath)
136
+ };
137
+ }
138
+ };
139
+ };
140
+ /** The engine's newest session record, bounded. */
141
+ const readTranscript = async (docker, container, sessionsPath) => {
142
+ const newest = await docker(["exec", container, "sh", "-c", 'find "$1" -name "*.jsonl" -type f -printf "%T@ %p\\n" 2>/dev/null | sort -n | tail -1 | cut -d" " -f2-', "sh", sessionsPath]).catch(() => "");
143
+ if (!newest)
144
+ return null;
145
+ const text = await docker(["exec", container, "head", "-c", String(MAX_TRANSCRIPT_BYTES), newest]).catch(() => "");
146
+ return text || null;
147
+ };
@@ -0,0 +1,8 @@
1
+ /** Bounded Docker CLI call for trial lifecycle; stdout trimmed, stderr bounded into the error. */
2
+ export type TrialDocker = (args: readonly string[], options?: {
3
+ timeoutMs?: number;
4
+ stdin?: string;
5
+ }) => Promise<string>;
6
+ export declare const createTrialDocker: (dockerCommand?: string) => TrialDocker;
7
+ /** Poll `probe` until it resolves true, or fail after `timeoutMs`. */
8
+ export declare const waitFor: (probe: () => Promise<boolean>, timeoutMs: number, label: string, pollMs?: number) => Promise<void>;
@@ -0,0 +1,22 @@
1
+ import { execFile } from "node:child_process";
2
+ import { SpawnfileError } from "../../../shared/index.js";
3
+ export const createTrialDocker = (dockerCommand = "docker") => (args, options = {}) => new Promise((resolve, reject) => {
4
+ const child = execFile(dockerCommand, [...args], { maxBuffer: 16 * 1024 * 1024, timeout: options.timeoutMs ?? 120_000 }, (error, stdout, stderr) => error
5
+ ? reject(new SpawnfileError("runtime_error", `docker ${args[0]} ${args[1] ?? ""} failed: ${String(stderr).replace(/\s+/gu, " ").slice(-400)}`))
6
+ : resolve(String(stdout).trim()));
7
+ if (options.stdin !== undefined)
8
+ child.stdin?.end(options.stdin);
9
+ else
10
+ child.stdin?.end();
11
+ });
12
+ /** Poll `probe` until it resolves true, or fail after `timeoutMs`. */
13
+ export const waitFor = async (probe, timeoutMs, label, pollMs = 500) => {
14
+ const deadline = Date.now() + timeoutMs;
15
+ for (;;) {
16
+ if (await probe())
17
+ return;
18
+ if (Date.now() >= deadline)
19
+ throw new SpawnfileError("runtime_error", `${label} timed out after ${timeoutMs}ms`);
20
+ await new Promise((resolve) => setTimeout(resolve, pollMs));
21
+ }
22
+ };
@@ -0,0 +1,42 @@
1
+ import type { ResolvedAuthProfile } from "../../../auth/index.js";
2
+ import { type TrialDocker } from "./docker.js";
3
+ export interface TrainingGatewayOptions {
4
+ /** Any compiled image of the subject: it carries the pinned Daimon runtime the gateway binary comes from. */
5
+ image: string;
6
+ runtimeRoot: string;
7
+ engines: readonly string[];
8
+ authProfile: ResolvedAuthProfile;
9
+ /** Training run identity; names the run's networks and labels every resource. */
10
+ runId: string;
11
+ docker?: TrialDocker;
12
+ /** Overrides the rendered sidecar script (tests and diagnostics only). */
13
+ script?: (script: string) => string;
14
+ readyTimeoutMs?: number;
15
+ }
16
+ /** What a trial needs to boot against the sidecar: one agent contract, never a login. */
17
+ export interface TrainingGatewayAccess {
18
+ url: string;
19
+ key: string;
20
+ /** Internal (no egress) network the trials join; only the gateway reaches the internet. */
21
+ network: string;
22
+ }
23
+ export interface TrainingGateway extends TrainingGatewayAccess {
24
+ container: string;
25
+ realmVolumes: readonly string[];
26
+ /** Stops and removes the sidecar and both networks. The realm volumes stay: they are the login. */
27
+ stop(): Promise<void>;
28
+ /** Replaces a dead or stuck sidecar in place: same key, networks and realm, so booted trials keep working. */
29
+ restart(script?: (script: string) => string): Promise<void>;
30
+ }
31
+ /** One durable realm volume per auth profile and engine: the gateway is its sole holder (exclusive flock). */
32
+ export declare const trainingGatewayRealmVolume: (profile: string, engine: string) => string;
33
+ /**
34
+ * Places Daimon's auth gateway as a sidecar for one training run: a container
35
+ * from the subject's own compiled image (the pinned Daimon runtime is a
36
+ * scratch copy source and runs nothing by itself), with the production Docker
37
+ * security posture, owning the engine realm volume, on a dedicated egress
38
+ * network plus the run's internal network that the trials join. Nothing is
39
+ * published to the host. The bootstrap leaf of the selected auth profile is
40
+ * staged through the same gate as `spawnfile up`.
41
+ */
42
+ export declare const startTrainingGateway: (options: TrainingGatewayOptions) => Promise<TrainingGateway>;
@@ -0,0 +1,98 @@
1
+ import { createHash, randomBytes } from "node:crypto";
2
+ import { mkdtemp, rm, writeFile } from "node:fs/promises";
3
+ import os from "node:os";
4
+ import path from "node:path";
5
+ import { DAIMON_GATEWAY_PORT, daimonGatewayBootstrapMountPath, daimonGatewayedEngines, daimonGatewayRealmPath } from "../../../runtime/daimon/gateway.js";
6
+ import { assertSafeDaimonSourceFile, daimonSourcePathForEngine } from "../../../runtime/daimon/runAuth.js";
7
+ import { DAIMON_DOCKER_RUNTIME_SECURITY_ARGS, SpawnfileError } from "../../../shared/index.js";
8
+ import { createDockerTargetExecutors } from "../../../target/dockerCommandExecutor.js";
9
+ import { removeExactDockerResource } from "../../../target/dockerResources.js";
10
+ import { createDockerResourceSpec, executeDockerResource } from "../../../target/dockerResourcesProvider.js";
11
+ import { parseOpaqueTargetHandle } from "../../../target/contracts.js";
12
+ import { DAIMON_GATEWAY_SIDECAR_ALIAS, DAIMON_GATEWAY_SIDECAR_KEY_ENV, DAIMON_GATEWAY_SIDECAR_URL, renderDaimonGatewaySidecarScript } from "../../containerDaimonGatewayRender.js";
13
+ import { slugify } from "../../helpers.js";
14
+ import { createTrialDocker, waitFor } from "./docker.js";
15
+ const hex = (value) => createHash("sha256").update(value).digest("hex");
16
+ const opaque = (value) => parseOpaqueTargetHandle(`opaque_${hex(value)}`);
17
+ const LABEL = "spawnfile.training-gateway";
18
+ /** One durable realm volume per auth profile and engine: the gateway is its sole holder (exclusive flock). */
19
+ export const trainingGatewayRealmVolume = (profile, engine) => `spawnfile-training-${slugify(profile) || "profile"}-${engine}-realm`;
20
+ /**
21
+ * Places Daimon's auth gateway as a sidecar for one training run: a container
22
+ * from the subject's own compiled image (the pinned Daimon runtime is a
23
+ * scratch copy source and runs nothing by itself), with the production Docker
24
+ * security posture, owning the engine realm volume, on a dedicated egress
25
+ * network plus the run's internal network that the trials join. Nothing is
26
+ * published to the host. The bootstrap leaf of the selected auth profile is
27
+ * staged through the same gate as `spawnfile up`.
28
+ */
29
+ export const startTrainingGateway = async (options) => {
30
+ const docker = options.docker ?? createTrialDocker();
31
+ const descriptors = daimonGatewayedEngines(options.engines);
32
+ if (descriptors.length === 0)
33
+ throw new SpawnfileError("validation_error", "Training gateway needs a gatewayed engine");
34
+ const context = await docker(["context", "show"]);
35
+ const executor = createDockerTargetExecutors().resource;
36
+ const internal = createDockerResourceSpec({
37
+ kind: "data_network", operationHandle: opaque(`${options.runId}\0network`), requestDigest: `sha256:${hex(options.runId)}`,
38
+ runId: options.runId, selectedTargetHandle: opaque(context)
39
+ });
40
+ const suffix = hex(options.runId).slice(0, 16);
41
+ const egress = `spawnfile-training-egress-${suffix}`;
42
+ const container = `spawnfile-training-gateway-${suffix}`;
43
+ const key = randomBytes(32).toString("hex");
44
+ const mounts = [];
45
+ const realmVolumes = [];
46
+ for (const descriptor of descriptors) {
47
+ const source = daimonSourcePathForEngine(descriptor.id, process.env, options.authProfile);
48
+ await assertSafeDaimonSourceFile(source, descriptor.id, descriptor.auth.maxCredentialBytes, descriptor.id);
49
+ const volume = trainingGatewayRealmVolume(options.authProfile.name, descriptor.id);
50
+ realmVolumes.push(volume);
51
+ mounts.push("--mount", `type=volume,source=${volume},target=${daimonGatewayRealmPath(descriptor)}`, "-v", `${source}:${daimonGatewayBootstrapMountPath(descriptor.auth.realm)}:ro`);
52
+ }
53
+ const stop = async () => {
54
+ await docker(["rm", "-f", container]).catch(() => undefined);
55
+ await docker(["network", "rm", egress]).catch(() => undefined);
56
+ await removeExactDockerResource(internal, { context, executor, timeoutMs: 30_000 }).catch(() => undefined);
57
+ };
58
+ const launch = async (wrap = options.script) => {
59
+ const support = await mkdtemp(path.join(os.tmpdir(), "spawnfile-training-gateway-"));
60
+ try {
61
+ const envFile = path.join(support, "gateway.env");
62
+ await writeFile(envFile, `${DAIMON_GATEWAY_SIDECAR_KEY_ENV}=${key}\n`, { mode: 0o600 });
63
+ const script = renderDaimonGatewaySidecarScript(options.engines, options.runtimeRoot);
64
+ await docker(["create", "--name", container, "--restart", "no", "--network", egress, "--label", `${LABEL}=${suffix}`,
65
+ ...DAIMON_DOCKER_RUNTIME_SECURITY_ARGS, ...mounts, "--env-file", envFile,
66
+ "--entrypoint", "bash", options.image, "-ceu", wrap ? wrap(script) : script]);
67
+ }
68
+ finally {
69
+ await rm(support, { recursive: true, force: true });
70
+ }
71
+ await docker(["network", "connect", "--alias", DAIMON_GATEWAY_SIDECAR_ALIAS, internal.name, container]);
72
+ await docker(["start", container]);
73
+ await waitFor(async () => {
74
+ const state = await docker(["inspect", "--format", "{{.State.Running}}", container]);
75
+ if (state !== "true") {
76
+ const logs = await docker(["logs", "--tail", "20", container]).catch(() => "");
77
+ throw new SpawnfileError("runtime_error", `training auth gateway exited before readiness: ${logs.replace(/\s+/gu, " ").slice(-400)}`);
78
+ }
79
+ return docker(["exec", container, "bash", "-c", `(exec 3<>/dev/tcp/127.0.0.1/${DAIMON_GATEWAY_PORT})`]).then(() => true, () => false);
80
+ }, options.readyTimeoutMs ?? 60_000, "training auth gateway readiness");
81
+ };
82
+ try {
83
+ await executeDockerResource({ args: ["--context", context, ...internal.args], executor, timeoutMs: 30_000 });
84
+ await docker(["network", "create", "--label", `${LABEL}=${suffix}`, egress]);
85
+ await launch();
86
+ }
87
+ catch (error) {
88
+ await stop();
89
+ throw error;
90
+ }
91
+ return {
92
+ container, key, network: internal.name, realmVolumes, stop, url: DAIMON_GATEWAY_SIDECAR_URL,
93
+ restart: async (wrap) => {
94
+ await docker(["rm", "-f", container]);
95
+ await launch(wrap);
96
+ }
97
+ };
98
+ };
@@ -0,0 +1,4 @@
1
+ export { TRAINING_TRIAL_LINEAGE_NAMESPACE, prepareTrial, type BootedTrial, type PreparedTrial, type TrialOptions, type TrialWake } from "./boot.js";
2
+ export { startTrainingGateway, trainingGatewayRealmVolume, type TrainingGateway, type TrainingGatewayAccess, type TrainingGatewayOptions } from "./gateway.js";
3
+ export { createBootedTrialRun, type BootedTrialLauncherOptions, type BootedTrialRun } from "./launcher.js";
4
+ export { TRIAL_INSTRUCTIONS_FILE, writeTrialProject } from "./project.js";
@@ -0,0 +1,4 @@
1
+ export { TRAINING_TRIAL_LINEAGE_NAMESPACE, prepareTrial } from "./boot.js";
2
+ export { startTrainingGateway, trainingGatewayRealmVolume } from "./gateway.js";
3
+ export { createBootedTrialRun } from "./launcher.js";
4
+ export { TRIAL_INSTRUCTIONS_FILE, writeTrialProject } from "./project.js";
@@ -0,0 +1,32 @@
1
+ import type { ResolvedAuthProfile } from "../../../auth/index.js";
2
+ import { type TrialWake } from "./boot.js";
3
+ import { type TrialDocker } from "./docker.js";
4
+ export interface BootedTrialLauncherOptions {
5
+ /** The subject agent's own Spawnfile. */
6
+ agentManifestPath: string;
7
+ authProfile: ResolvedAuthProfile;
8
+ /** Trial projects, compile outputs and boot env files live here, one fresh directory per trial. */
9
+ scratchRoot: string;
10
+ docker?: TrialDocker;
11
+ }
12
+ export interface BootedTrialRun {
13
+ boot(input: {
14
+ trialId: string;
15
+ instructions: string;
16
+ }): Promise<{
17
+ wake(text: string, options: {
18
+ deliveryId: string;
19
+ timeoutMs: number;
20
+ signal?: AbortSignal;
21
+ }): Promise<TrialWake>;
22
+ teardown(): Promise<void>;
23
+ }>;
24
+ /** Stops the run's gateway and removes its image and networks; the realm volume stays. */
25
+ close(): Promise<void>;
26
+ }
27
+ /**
28
+ * One training run's trials: each boot compiles and starts the subject's
29
+ * one-agent organization, and every trial shares the run's single auth
30
+ * gateway, started from the first trial's image on first use.
31
+ */
32
+ export declare const createBootedTrialRun: (options: BootedTrialLauncherOptions) => BootedTrialRun;
@@ -0,0 +1,49 @@
1
+ import { mkdir, mkdtemp } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { ensureNoopolisRunId } from "../../../runtime/index.js";
4
+ import { prepareTrial } from "./boot.js";
5
+ import { createTrialDocker } from "./docker.js";
6
+ import { startTrainingGateway } from "./gateway.js";
7
+ /**
8
+ * One training run's trials: each boot compiles and starts the subject's
9
+ * one-agent organization, and every trial shares the run's single auth
10
+ * gateway, started from the first trial's image on first use.
11
+ */
12
+ export const createBootedTrialRun = (options) => {
13
+ const docker = options.docker ?? createTrialDocker();
14
+ const runId = ensureNoopolisRunId();
15
+ let gateway;
16
+ return {
17
+ boot: async ({ trialId, instructions }) => {
18
+ await mkdir(options.scratchRoot, { recursive: true });
19
+ const prepared = await prepareTrial({ agentManifestPath: options.agentManifestPath, docker, instructions, trialId,
20
+ directory: await mkdtemp(path.join(options.scratchRoot, "trial-")) });
21
+ try {
22
+ gateway ??= (async () => {
23
+ const image = `spawnfile-training-gateway:${runId.replace(/[^A-Za-z0-9_.-]/gu, "-").slice(0, 100)}`;
24
+ await docker(["tag", prepared.image, image]);
25
+ return { image, gateway: await startTrainingGateway({ authProfile: options.authProfile, docker, engines: prepared.engines,
26
+ image, runId, runtimeRoot: prepared.runtimeRoot }) };
27
+ })();
28
+ const booted = await prepared.boot((await gateway).gateway);
29
+ return { wake: booted.wake, teardown: async () => { try {
30
+ await booted.teardown();
31
+ }
32
+ finally {
33
+ await prepared.dispose();
34
+ } } };
35
+ }
36
+ catch (error) {
37
+ await prepared.dispose();
38
+ throw error;
39
+ }
40
+ },
41
+ close: async () => {
42
+ const started = await gateway?.catch(() => undefined);
43
+ if (!started)
44
+ return;
45
+ await started.gateway.stop();
46
+ await docker(["image", "rm", "-f", started.image]).catch(() => undefined);
47
+ }
48
+ };
49
+ };
@@ -0,0 +1,11 @@
1
+ /** The candidate's instructions become this agent's system document. */
2
+ export declare const TRIAL_INSTRUCTIONS_FILE = "TRAINING_INSTRUCTIONS.md";
3
+ /**
4
+ * Writes the trial's one-agent organization: a copy of the subject agent's own
5
+ * declaration directory (so every relative doc, skill and resource keeps
6
+ * resolving) whose Spawnfile is the subject's, re-rendered with the candidate
7
+ * prompt as its system document and with every surface (federation), its
8
+ * schedule and its training block removed. Nothing else changes: runtime,
9
+ * engine, model, memory and tools are the subject's.
10
+ */
11
+ export declare const writeTrialProject: (agentManifestPath: string, instructions: string, directory: string) => Promise<string>;
@@ -0,0 +1,31 @@
1
+ import { cp, writeFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { isAgentManifest, loadManifest, renderSpawnfile } from "../../../manifest/index.js";
4
+ import { SpawnfileError } from "../../../shared/index.js";
5
+ /** The candidate's instructions become this agent's system document. */
6
+ export const TRIAL_INSTRUCTIONS_FILE = "TRAINING_INSTRUCTIONS.md";
7
+ const SKIPPED = new Set([".git", "node_modules", ".runtime", ".spawn", ".spawn-dev", ".sim"]);
8
+ /**
9
+ * Writes the trial's one-agent organization: a copy of the subject agent's own
10
+ * declaration directory (so every relative doc, skill and resource keeps
11
+ * resolving) whose Spawnfile is the subject's, re-rendered with the candidate
12
+ * prompt as its system document and with every surface (federation), its
13
+ * schedule and its training block removed. Nothing else changes: runtime,
14
+ * engine, model, memory and tools are the subject's.
15
+ */
16
+ export const writeTrialProject = async (agentManifestPath, instructions, directory) => {
17
+ const { manifest } = await loadManifest(agentManifestPath);
18
+ if (!isAgentManifest(manifest)) {
19
+ throw new SpawnfileError("validation_error", "A production-booted training subject must be declared in its own agent Spawnfile");
20
+ }
21
+ await cp(path.dirname(agentManifestPath), directory, {
22
+ recursive: true,
23
+ filter: (source) => !SKIPPED.has(path.basename(source))
24
+ });
25
+ const { schedule: _schedule, surfaces: _surfaces, training: _training, ...kept } = manifest;
26
+ const trial = { ...kept, workspace: { ...kept.workspace, docs: { ...kept.workspace?.docs, system: TRIAL_INSTRUCTIONS_FILE } } };
27
+ await writeFile(path.join(directory, TRIAL_INSTRUCTIONS_FILE), instructions);
28
+ const manifestPath = path.join(directory, "Spawnfile");
29
+ await writeFile(manifestPath, renderSpawnfile(trial));
30
+ return manifestPath;
31
+ };
@@ -1,24 +1,9 @@
1
1
  import { type CompiledEngineEntry, type CompiledScheduleEntry, type UpReceipt } from "../deployment/index.js";
2
2
  import type { CompilePlan } from "./types.js";
3
3
  import type { UpProjectResult } from "./upProject.js";
4
- /**
5
- * Extracts the `{agent, cron}` pairs an up-receipt's `compiled_schedule` field carries
6
- * (Decision 21 Piece 4) — the raw material for simfile's wake-diff denominator oracle.
7
- * Only `kind: "cron"` schedules are represented; `every`/`disabled` schedules have no
8
- * cron-fire cadence to diff against sim-time and are intentionally omitted, not zeroed.
9
- */
4
+ /** Reads adapter-resolved engine kinds from the compiled report for the up receipt. */
10
5
  export declare const resolveCompiledSchedule: (plan: CompilePlan) => CompiledScheduleEntry[];
11
- /**
12
- * Extracts `{agent, engine}` pairs (Piece 5, Slice B) — disclosure ground truth for the
13
- * run-manifest's `pinned-engine` field, so a `scripted` (or any non-default) pi engine is
14
- * visibly disclosed rather than an invisible test-only branch. Reads
15
- * `report.container.runtime_instances[].engine_by_node_id`, the single source of truth
16
- * `containerArtifacts.ts` already stamps from the pi adapter's own resolved engine kinds
17
- * (see `src/runtime/pi/adapter.ts`'s `createContainerTargets`) — deliberately not
18
- * re-derived from a fresh `buildCompilePlan` walk (unlike `resolveCompiledSchedule` above),
19
- * since that would recompute the exact same fact from pi-adapter-internal logic
20
- * (`resolvePiEngine`) that compiler code has no business reaching into directly.
21
- */
6
+ /** Reads adapter-resolved engine kinds from the compiled report for the up receipt. */
22
7
  export declare const resolveCompiledEngines: (report: UpProjectResult["report"]) => CompiledEngineEntry[];
23
8
  /**
24
9
  * Builds `spawnfile.up-receipt.v1` from a project-path `upProject()` result. Reads back
@@ -1,12 +1,7 @@
1
1
  import { readDeploymentRecord, UP_RECEIPT_VERSION } from "../deployment/index.js";
2
2
  import { SpawnfileError } from "../shared/index.js";
3
3
  import { buildCompilePlan } from "./buildCompilePlan.js";
4
- /**
5
- * Extracts the `{agent, cron}` pairs an up-receipt's `compiled_schedule` field carries
6
- * (Decision 21 Piece 4) — the raw material for simfile's wake-diff denominator oracle.
7
- * Only `kind: "cron"` schedules are represented; `every`/`disabled` schedules have no
8
- * cron-fire cadence to diff against sim-time and are intentionally omitted, not zeroed.
9
- */
4
+ /** Reads adapter-resolved engine kinds from the compiled report for the up receipt. */
10
5
  export const resolveCompiledSchedule = (plan) => plan.nodes
11
6
  .filter((node) => node.kind === "agent")
12
7
  .flatMap((node) => {
@@ -14,17 +9,7 @@ export const resolveCompiledSchedule = (plan) => plan.nodes
14
9
  return schedule?.kind === "cron" ? [{ agent: node.id, cron: schedule.cron }] : [];
15
10
  })
16
11
  .sort((left, right) => left.agent.localeCompare(right.agent));
17
- /**
18
- * Extracts `{agent, engine}` pairs (Piece 5, Slice B) — disclosure ground truth for the
19
- * run-manifest's `pinned-engine` field, so a `scripted` (or any non-default) pi engine is
20
- * visibly disclosed rather than an invisible test-only branch. Reads
21
- * `report.container.runtime_instances[].engine_by_node_id`, the single source of truth
22
- * `containerArtifacts.ts` already stamps from the pi adapter's own resolved engine kinds
23
- * (see `src/runtime/pi/adapter.ts`'s `createContainerTargets`) — deliberately not
24
- * re-derived from a fresh `buildCompilePlan` walk (unlike `resolveCompiledSchedule` above),
25
- * since that would recompute the exact same fact from pi-adapter-internal logic
26
- * (`resolvePiEngine`) that compiler code has no business reaching into directly.
27
- */
12
+ /** Reads adapter-resolved engine kinds from the compiled report for the up receipt. */
28
13
  export const resolveCompiledEngines = (report) => (report.container?.runtime_instances ?? [])
29
14
  .flatMap((instance) => Object.entries(instance.engine_by_node_id ?? {}))
30
15
  .map(([agent, engine]) => ({ agent, engine }))
@@ -73,25 +73,9 @@ const planMnemeFiles = (report, mounts) => (report.container?.memory ?? []).flat
73
73
  }
74
74
  }));
75
75
  });
76
- /** Daimon: per pi/daimon runtime instance, per agent it covers, the turn-causal telemetry
77
- * stream at `runtime/agents/<slug>/telemetry/causal.jsonl` under the instance root (see
78
- * `ecosystem/daimon/src/observability/causalEvents.ts`). As of Piece 4b, that directory is
79
- * a run-scoped durable volume (`daimonTelemetryArtifacts.ts`, mirroring how
80
- * `moltnetArtifacts.ts` mounts the Moltnet causal directory), resolved here via each
81
- * instance's `telemetry_mount_ids` (node id -> persistent mount id). This is the real
82
- * relaxation of the export-before-teardown invariant (Decision 21) for daimon truth:
83
- * `spawnfile down` (without `--volumes`) can run BEFORE `spawnfile artifacts export`, and
84
- * export still recovers every agent's causal.jsonl from its named volume.
85
- *
86
- * The `instance.home_path`-keyed branch below is a legacy fallback for a compile report
87
- * written before Piece 4b (no `telemetry_mount_ids` yet) — it reads the old container-local
88
- * path with `docker cp`, which only works while the container is still live. Any report
89
- * produced by this compiler build always populates `telemetry_mount_ids` for a pi/daimon
90
- * instance, so that branch never fires today; it exists only so an out-of-date report
91
- * doesn't silently export zero daimon files. Optional either way: a fresh instance that
92
- * never woke has no telemetry file yet. */
76
+ /** Plans optional Daimon causal telemetry exports from declared mounts or a legacy instance home. */
93
77
  const planDaimonFiles = (report, mounts) => (report.container?.runtime_instances ?? [])
94
- .filter((instance) => instance.runtime === "pi" || instance.runtime === "daimon")
78
+ .filter((instance) => instance.runtime === "daimon")
95
79
  .flatMap((instance) => (instance.node_ids ?? []).flatMap((nodeId) => {
96
80
  const slug = agentSlugFromNodeId(nodeId);
97
81
  if (!slug) {