spawnfile 0.1.33 → 0.1.35

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 (606) hide show
  1. package/README.md +1 -1
  2. package/dist/audit/readAudit.d.ts +3 -3
  3. package/dist/auth/profileStore.d.ts +3 -1
  4. package/dist/auth/profileStore.js +31 -30
  5. package/dist/auth/trainingAuth.d.ts +2 -5
  6. package/dist/auth/types.d.ts +16 -0
  7. package/dist/cli/authCommands.d.ts +1 -1
  8. package/dist/cli/authCommands.js +21 -1
  9. package/dist/cli/devCommands.d.ts +1 -1
  10. package/dist/cli/devCommands.js +0 -66
  11. package/dist/cli/runCli.d.ts +3 -4
  12. package/dist/cli/runCli.js +4 -3
  13. package/dist/cli/trainCommand.js +9 -15
  14. package/dist/cli/trainingBooted.d.ts +9 -0
  15. package/dist/cli/trainingBooted.js +45 -0
  16. package/dist/cli/trainingExecution.d.ts +4 -7
  17. package/dist/cli/trainingExecution.js +4 -32
  18. package/dist/compiler/containerArtifacts.js +0 -5
  19. package/dist/compiler/containerBackedMountRender.js +5 -1
  20. package/dist/compiler/containerDaimonBrokerRender.d.ts +5 -50
  21. package/dist/compiler/containerDaimonBrokerRender.js +19 -90
  22. package/dist/compiler/containerDaimonGatewayRender.d.ts +50 -0
  23. package/dist/compiler/containerDaimonGatewayRender.js +161 -0
  24. package/dist/compiler/containerDaimonGrokWorkerProvisioning.d.ts +2 -10
  25. package/dist/compiler/containerDaimonGrokWorkerProvisioning.js +13 -25
  26. package/dist/compiler/containerDaimonGrokWorkerRender.d.ts +11 -49
  27. package/dist/compiler/containerDaimonGrokWorkerRender.js +15 -39
  28. package/dist/compiler/containerDaimonStartupSupervision.d.ts +8 -0
  29. package/dist/compiler/containerDaimonStartupSupervision.js +39 -0
  30. package/dist/compiler/containerDaimonUidEntrypointRender.d.ts +1 -2
  31. package/dist/compiler/containerDaimonUidEntrypointRender.js +29 -47
  32. package/dist/compiler/containerRuntimeReadinessRender.js +1 -1
  33. package/dist/compiler/memoryArtifacts.js +0 -1
  34. package/dist/compiler/moltnetArtifacts.js +1 -17
  35. package/dist/compiler/moltnetClientConfig.js +1 -1
  36. package/dist/compiler/moltnetRuntimeConfig.js +0 -10
  37. package/dist/compiler/runProject.d.ts +3 -0
  38. package/dist/compiler/runProject.js +12 -5
  39. package/dist/compiler/runProjectAuth.js +6 -18
  40. package/dist/compiler/training/contract.d.ts +0 -2
  41. package/dist/compiler/training/contract.js +0 -2
  42. package/dist/compiler/training/execution.d.ts +1 -128
  43. package/dist/compiler/training/execution.js +7 -68
  44. package/dist/compiler/training/index.d.ts +0 -8
  45. package/dist/compiler/training/index.js +0 -7
  46. package/dist/compiler/training/output.d.ts +1 -0
  47. package/dist/compiler/training/output.js +1 -1
  48. package/dist/compiler/training/rewind/contract.d.ts +6 -6
  49. package/dist/compiler/training/trial/boot.d.ts +72 -0
  50. package/dist/compiler/training/trial/boot.js +225 -0
  51. package/dist/compiler/training/trial/docker.d.ts +10 -0
  52. package/dist/compiler/training/trial/docker.js +22 -0
  53. package/dist/compiler/training/trial/gateway.d.ts +47 -0
  54. package/dist/compiler/training/trial/gateway.js +113 -0
  55. package/dist/compiler/training/trial/homeLogin.d.ts +31 -0
  56. package/dist/compiler/training/trial/homeLogin.js +69 -0
  57. package/dist/compiler/training/trial/index.d.ts +8 -0
  58. package/dist/compiler/training/trial/index.js +8 -0
  59. package/dist/compiler/training/trial/judge.d.ts +15 -0
  60. package/dist/compiler/training/trial/judge.js +42 -0
  61. package/dist/compiler/training/trial/launcher.d.ts +47 -0
  62. package/dist/compiler/training/trial/launcher.js +193 -0
  63. package/dist/compiler/training/trial/login.d.ts +35 -0
  64. package/dist/compiler/training/trial/login.js +85 -0
  65. package/dist/compiler/training/trial/project.d.ts +11 -0
  66. package/dist/compiler/training/trial/project.js +31 -0
  67. package/dist/compiler/training/trial/realmTurns.d.ts +20 -0
  68. package/dist/compiler/training/trial/realmTurns.js +69 -0
  69. package/dist/compiler/upReceipt.d.ts +2 -17
  70. package/dist/compiler/upReceipt.js +2 -17
  71. package/dist/deployment/artifactsExportPlan.js +2 -18
  72. package/dist/deployment/privateArtifactsExport.js +1 -1
  73. package/dist/dev/docker.d.ts +0 -5
  74. package/dist/dev/docker.js +0 -46
  75. package/dist/dev/index.d.ts +0 -1
  76. package/dist/dev/index.js +0 -1
  77. package/dist/dev/project.d.ts +0 -16
  78. package/dist/dev/project.js +1 -128
  79. package/dist/distribution/distributionReportSchema.js +1 -1
  80. package/dist/distribution/imageRuntimeAuth.js +3 -2
  81. package/dist/manifest/renderSpawnfile.js +2 -1
  82. package/dist/release/drainControl.d.ts +5 -19
  83. package/dist/release/drainControl.js +12 -67
  84. package/dist/report/types.d.ts +3 -6
  85. package/dist/runtime/common.d.ts +1 -1
  86. package/dist/runtime/common.js +1 -1
  87. package/dist/runtime/container.d.ts +2 -2
  88. package/dist/runtime/container.js +1 -39
  89. package/dist/runtime/daimon/config.js +8 -14
  90. package/dist/runtime/daimon/contractManifest.js +0 -1
  91. package/dist/runtime/daimon/contractManifestSchema.js +0 -1
  92. package/dist/runtime/daimon/control.d.ts +31 -0
  93. package/dist/runtime/daimon/control.js +83 -0
  94. package/dist/runtime/daimon/engineDescriptorSchema.js +0 -1
  95. package/dist/runtime/daimon/engineDescriptors.generated.d.ts +1 -1
  96. package/dist/runtime/daimon/engineDescriptors.generated.js +1 -2
  97. package/dist/runtime/daimon/engines.js +0 -1
  98. package/dist/runtime/daimon/gateway.d.ts +62 -0
  99. package/dist/runtime/daimon/gateway.js +77 -0
  100. package/dist/runtime/daimon/grokWorkerContract.d.ts +0 -5
  101. package/dist/runtime/daimon/grokWorkerContract.js +1 -13
  102. package/dist/runtime/daimon/index.d.ts +2 -0
  103. package/dist/runtime/daimon/index.js +2 -1
  104. package/dist/runtime/daimon/memory.js +1 -1
  105. package/dist/runtime/daimon/packageName.js +0 -1
  106. package/dist/runtime/daimon/runAuth.js +15 -4
  107. package/dist/runtime/daimon/runtimeIdentity.d.ts +2 -0
  108. package/dist/runtime/daimon/runtimeIdentity.js +2 -0
  109. package/dist/runtime/daimon/subscriptionRealms.d.ts +27 -3
  110. package/dist/runtime/daimon/subscriptionRealms.js +35 -13
  111. package/dist/runtime/daimon/testHelpers.d.ts +2 -0
  112. package/dist/runtime/{pi → daimon}/testHelpers.js +3 -3
  113. package/dist/runtime/daimon/training/booted/adapter.d.ts +50 -0
  114. package/dist/runtime/daimon/training/booted/adapter.js +60 -0
  115. package/dist/runtime/daimon/training/booted/adapter.js.map +1 -0
  116. package/dist/runtime/daimon/training/booted/index.d.ts +4 -0
  117. package/dist/runtime/daimon/training/booted/index.js +3 -0
  118. package/dist/runtime/daimon/training/booted/index.js.map +1 -0
  119. package/dist/runtime/daimon/training/booted/judge.d.ts +39 -0
  120. package/dist/runtime/daimon/training/booted/judge.js +122 -0
  121. package/dist/runtime/daimon/training/booted/judge.js.map +1 -0
  122. package/dist/runtime/daimon/training/index.d.ts +5 -0
  123. package/dist/runtime/daimon/training/index.js +8 -4
  124. package/dist/runtime/daimon/training/index.js.map +1 -1
  125. package/dist/runtime/daimon/wakeMoments.js +0 -1
  126. package/dist/runtime/install.js +0 -21
  127. package/dist/runtime/registry.js +0 -2
  128. package/dist/runtime/trainingGraderProviders.js +10 -4
  129. package/dist/runtime/trainingProviders.d.ts +5 -3
  130. package/dist/runtime/trainingProviders.js +21 -24
  131. package/dist/runtime/trainingSubjects.d.ts +0 -121
  132. package/dist/runtime/trainingSubjects.js +2 -13
  133. package/dist/runtime/types.d.ts +1 -8
  134. package/dist/runtime/usageRequestLedger.d.ts +2 -0
  135. package/dist/runtime/usageRequestLedger.js +3 -1
  136. package/dist/shared/errors.js +0 -1
  137. package/dist/shared/trainingLegacy/trainingLegacyHashDomains.d.ts +1 -0
  138. package/dist/shared/trainingLegacy/trainingLegacyHashDomains.js +1 -0
  139. package/dist/shared/trainingLegacy/trainingLegacyHashDomains.js.map +1 -1
  140. package/dist/status/lifecycleProbes.js +3 -6
  141. package/dist/status/moltnetWiringProbes.js +1 -17
  142. package/dist/training/subjects/index.d.ts +0 -1
  143. package/dist/training/subjects/index.js +0 -1
  144. package/dist/training/subjects/index.js.map +1 -1
  145. package/examples/README.md +0 -1
  146. package/examples/daimon-org/agents/mapper/Spawnfile +4 -1
  147. package/examples/daimon-org/teams/review/agents/reviewer/Spawnfile +4 -1
  148. package/examples/jungian-daimon-org/teams/luna/agents/animus/Spawnfile +5 -8
  149. package/examples/jungian-daimon-org/teams/luna/agents/representative/Spawnfile +1 -1
  150. package/examples/jungian-daimon-org/teams/luna/agents/shadow/Spawnfile +5 -8
  151. package/examples/jungian-daimon-org/teams/selene/agents/animus/Spawnfile +5 -8
  152. package/examples/jungian-daimon-org/teams/selene/agents/representative/Spawnfile +5 -8
  153. package/examples/jungian-daimon-org/teams/selene/agents/shadow/Spawnfile +1 -1
  154. package/examples/mixed-runtime-org/agents/localist/Spawnfile +7 -7
  155. package/package.json +4 -13
  156. package/runtimes.yaml +5 -15
  157. package/dist/compiler/containerDaimonGrokTaskClock.d.ts +0 -5
  158. package/dist/compiler/containerDaimonGrokTaskClock.js +0 -29
  159. package/dist/compiler/daimonTelemetryArtifacts.d.ts +0 -22
  160. package/dist/compiler/daimonTelemetryArtifacts.js +0 -56
  161. package/dist/compiler/training/broker/clockProbe.d.ts +0 -6
  162. package/dist/compiler/training/broker/clockProbe.js +0 -27
  163. package/dist/compiler/training/broker/declaration.d.ts +0 -54
  164. package/dist/compiler/training/broker/declaration.js +0 -70
  165. package/dist/compiler/training/broker/entrypoint.d.ts +0 -39
  166. package/dist/compiler/training/broker/entrypoint.js +0 -124
  167. package/dist/compiler/training/broker/evaluatorSecrets.d.ts +0 -2
  168. package/dist/compiler/training/broker/evaluatorSecrets.js +0 -62
  169. package/dist/compiler/training/broker/index.d.ts +0 -12
  170. package/dist/compiler/training/broker/index.js +0 -12
  171. package/dist/compiler/training/broker/main.d.ts +0 -2
  172. package/dist/compiler/training/broker/main.js +0 -14
  173. package/dist/compiler/training/broker/paths.d.ts +0 -236
  174. package/dist/compiler/training/broker/paths.js +0 -249
  175. package/dist/compiler/training/broker/processes.d.ts +0 -51
  176. package/dist/compiler/training/broker/processes.js +0 -102
  177. package/dist/compiler/training/broker/projection.d.ts +0 -61
  178. package/dist/compiler/training/broker/projection.js +0 -109
  179. package/dist/compiler/training/broker/provisioning.d.ts +0 -78
  180. package/dist/compiler/training/broker/provisioning.js +0 -231
  181. package/dist/compiler/training/broker/receipt.d.ts +0 -77
  182. package/dist/compiler/training/broker/receipt.js +0 -110
  183. package/dist/compiler/training/broker/recycleClient.d.ts +0 -33
  184. package/dist/compiler/training/broker/recycleClient.js +0 -112
  185. package/dist/compiler/training/broker/registration.d.ts +0 -46
  186. package/dist/compiler/training/broker/registration.js +0 -113
  187. package/dist/compiler/training/broker/reset.d.ts +0 -9
  188. package/dist/compiler/training/broker/reset.js +0 -71
  189. package/dist/compiler/training/broker/rootScript.d.ts +0 -32
  190. package/dist/compiler/training/broker/rootScript.js +0 -33
  191. package/dist/compiler/training/broker/runtime.d.ts +0 -22
  192. package/dist/compiler/training/broker/runtime.js +0 -128
  193. package/dist/compiler/training/broker/seccompRoutes.d.ts +0 -31
  194. package/dist/compiler/training/broker/seccompRoutes.js +0 -36
  195. package/dist/compiler/training/broker/supervisor.d.ts +0 -108
  196. package/dist/compiler/training/broker/supervisor.js +0 -172
  197. package/dist/compiler/training/broker/taskClock.d.ts +0 -5
  198. package/dist/compiler/training/broker/taskClock.js +0 -41
  199. package/dist/compiler/training/container/contract.d.ts +0 -54
  200. package/dist/compiler/training/container/contract.js +0 -52
  201. package/dist/compiler/training/container/evaluators.d.ts +0 -48
  202. package/dist/compiler/training/container/evaluators.js +0 -50
  203. package/dist/compiler/training/container/grokWriteback.d.ts +0 -8
  204. package/dist/compiler/training/container/grokWriteback.js +0 -26
  205. package/dist/compiler/training/container/index.d.ts +0 -5
  206. package/dist/compiler/training/container/index.js +0 -3
  207. package/dist/compiler/training/container/launch.d.ts +0 -21
  208. package/dist/compiler/training/container/launch.js +0 -280
  209. package/dist/compiler/training/container/nativeSlots.d.ts +0 -14
  210. package/dist/compiler/training/container/nativeSlots.js +0 -13
  211. package/dist/compiler/training/container/outputCopy.d.ts +0 -2
  212. package/dist/compiler/training/container/outputCopy.js +0 -72
  213. package/dist/compiler/training/container/outputVolume.d.ts +0 -28
  214. package/dist/compiler/training/container/outputVolume.js +0 -185
  215. package/dist/compiler/training/container/prepare.d.ts +0 -10
  216. package/dist/compiler/training/container/prepare.js +0 -125
  217. package/dist/compiler/training/container/process.d.ts +0 -14
  218. package/dist/compiler/training/container/process.js +0 -70
  219. package/dist/compiler/training/container/security.d.ts +0 -38
  220. package/dist/compiler/training/container/security.js +0 -68
  221. package/dist/compiler/training/container/subjectIsolation.d.ts +0 -5
  222. package/dist/compiler/training/container/subjectIsolation.js +0 -16
  223. package/dist/compiler/training/preparation/assets/Dockerfile +0 -100
  224. package/dist/compiler/training/preparation/assets/package-lock.json +0 -5483
  225. package/dist/compiler/training/preparation/broker.d.ts +0 -30
  226. package/dist/compiler/training/preparation/broker.js +0 -68
  227. package/dist/compiler/training/preparation/contextModes.d.ts +0 -12
  228. package/dist/compiler/training/preparation/contextModes.js +0 -38
  229. package/dist/compiler/training/preparation/contract.d.ts +0 -203
  230. package/dist/compiler/training/preparation/contract.js +0 -114
  231. package/dist/compiler/training/preparation/copyAssets.d.ts +0 -1
  232. package/dist/compiler/training/preparation/copyAssets.js +0 -8
  233. package/dist/compiler/training/preparation/daimonParent.d.ts +0 -42
  234. package/dist/compiler/training/preparation/daimonParent.js +0 -114
  235. package/dist/compiler/training/preparation/files.d.ts +0 -29
  236. package/dist/compiler/training/preparation/files.js +0 -146
  237. package/dist/compiler/training/preparation/image.d.ts +0 -28
  238. package/dist/compiler/training/preparation/image.js +0 -105
  239. package/dist/compiler/training/preparation/index.d.ts +0 -3
  240. package/dist/compiler/training/preparation/index.js +0 -2
  241. package/dist/compiler/training/preparation/inputs.d.ts +0 -24
  242. package/dist/compiler/training/preparation/inputs.js +0 -101
  243. package/dist/compiler/training/preparation/prepare.d.ts +0 -38
  244. package/dist/compiler/training/preparation/prepare.js +0 -224
  245. package/dist/compiler/training/preparation/scratch.d.ts +0 -8
  246. package/dist/compiler/training/preparation/scratch.js +0 -114
  247. package/dist/compiler/training/repair/compatibility.d.ts +0 -11
  248. package/dist/compiler/training/repair/compatibility.js +0 -45
  249. package/dist/compiler/training/repair/contract.d.ts +0 -832
  250. package/dist/compiler/training/repair/contract.js +0 -34
  251. package/dist/compiler/training/repair/index.d.ts +0 -3
  252. package/dist/compiler/training/repair/index.js +0 -3
  253. package/dist/compiler/training/repair/prepare.d.ts +0 -378
  254. package/dist/compiler/training/repair/prepare.js +0 -84
  255. package/dist/compiler/training/repair/witness.d.ts +0 -348
  256. package/dist/compiler/training/repair/witness.js +0 -62
  257. package/dist/compiler/training/subjectDeclaration.d.ts +0 -26
  258. package/dist/compiler/training/subjectDeclaration.js +0 -54
  259. package/dist/compiler/training/subjectLease.d.ts +0 -115
  260. package/dist/compiler/training/subjectLease.js +0 -179
  261. package/dist/dev/activity.d.ts +0 -14
  262. package/dist/dev/activity.js +0 -48
  263. package/dist/runtime/codex-exec/training/adapter.d.ts +0 -13
  264. package/dist/runtime/codex-exec/training/adapter.js +0 -101
  265. package/dist/runtime/codex-exec/training/adapter.js.map +0 -1
  266. package/dist/runtime/codex-exec/training/environment.d.ts +0 -3
  267. package/dist/runtime/codex-exec/training/environment.js +0 -26
  268. package/dist/runtime/codex-exec/training/environment.js.map +0 -1
  269. package/dist/runtime/codex-exec/training/index.d.ts +0 -2
  270. package/dist/runtime/codex-exec/training/index.js +0 -3
  271. package/dist/runtime/codex-exec/training/index.js.map +0 -1
  272. package/dist/runtime/codex-exec/training/protocol.d.ts +0 -15
  273. package/dist/runtime/codex-exec/training/protocol.js +0 -102
  274. package/dist/runtime/codex-exec/training/protocol.js.map +0 -1
  275. package/dist/runtime/codex-exec/training/providers/codex-subscription/index.d.ts +0 -1
  276. package/dist/runtime/codex-exec/training/providers/codex-subscription/index.js +0 -2
  277. package/dist/runtime/codex-exec/training/providers/codex-subscription/index.js.map +0 -1
  278. package/dist/runtime/codex-exec/training/providers/codex-subscription/protocol.d.ts +0 -17
  279. package/dist/runtime/codex-exec/training/providers/codex-subscription/protocol.js +0 -80
  280. package/dist/runtime/codex-exec/training/providers/codex-subscription/protocol.js.map +0 -1
  281. package/dist/runtime/codex-exec/training/providers/codex-subscription/provider.d.ts +0 -12
  282. package/dist/runtime/codex-exec/training/providers/codex-subscription/provider.js +0 -125
  283. package/dist/runtime/codex-exec/training/providers/codex-subscription/provider.js.map +0 -1
  284. package/dist/runtime/codex-exec/training/providers/codex-subscription/strict-schema.d.ts +0 -6
  285. package/dist/runtime/codex-exec/training/providers/codex-subscription/strict-schema.js +0 -219
  286. package/dist/runtime/codex-exec/training/providers/codex-subscription/strict-schema.js.map +0 -1
  287. package/dist/runtime/daimon/contractManifest.js.map +0 -1
  288. package/dist/runtime/daimon/contractManifestSchema.js.map +0 -1
  289. package/dist/runtime/daimon/engineDescriptorSchema.js.map +0 -1
  290. package/dist/runtime/daimon/engineDescriptors.generated.js.map +0 -1
  291. package/dist/runtime/daimon/engines.js.map +0 -1
  292. package/dist/runtime/daimon/index.js.map +0 -1
  293. package/dist/runtime/daimon/packageName.js.map +0 -1
  294. package/dist/runtime/daimon/training/legacy/adapter.d.ts +0 -11
  295. package/dist/runtime/daimon/training/legacy/adapter.js +0 -175
  296. package/dist/runtime/daimon/training/legacy/adapter.js.map +0 -1
  297. package/dist/runtime/daimon/training/legacy/index.d.ts +0 -2
  298. package/dist/runtime/daimon/training/legacy/index.js +0 -3
  299. package/dist/runtime/daimon/training/legacy/index.js.map +0 -1
  300. package/dist/runtime/daimon/training/legacy/public.d.ts +0 -49
  301. package/dist/runtime/daimon/training/legacy/public.js +0 -16
  302. package/dist/runtime/daimon/training/legacy/public.js.map +0 -1
  303. package/dist/runtime/daimon/training/native/adapter.d.ts +0 -18
  304. package/dist/runtime/daimon/training/native/adapter.js +0 -252
  305. package/dist/runtime/daimon/training/native/adapter.js.map +0 -1
  306. package/dist/runtime/daimon/training/native/admission.d.ts +0 -7
  307. package/dist/runtime/daimon/training/native/admission.js +0 -52
  308. package/dist/runtime/daimon/training/native/admission.js.map +0 -1
  309. package/dist/runtime/daimon/training/native/child/arguments.d.ts +0 -16
  310. package/dist/runtime/daimon/training/native/child/arguments.js +0 -70
  311. package/dist/runtime/daimon/training/native/child/arguments.js.map +0 -1
  312. package/dist/runtime/daimon/training/native/child/deferred-trial.d.ts +0 -24
  313. package/dist/runtime/daimon/training/native/child/deferred-trial.js +0 -63
  314. package/dist/runtime/daimon/training/native/child/deferred-trial.js.map +0 -1
  315. package/dist/runtime/daimon/training/native/child/diagnostics.d.ts +0 -58
  316. package/dist/runtime/daimon/training/native/child/diagnostics.js +0 -215
  317. package/dist/runtime/daimon/training/native/child/diagnostics.js.map +0 -1
  318. package/dist/runtime/daimon/training/native/child/fixture.d.ts +0 -16
  319. package/dist/runtime/daimon/training/native/child/fixture.js +0 -159
  320. package/dist/runtime/daimon/training/native/child/fixture.js.map +0 -1
  321. package/dist/runtime/daimon/training/native/child/grok.d.ts +0 -14
  322. package/dist/runtime/daimon/training/native/child/grok.js +0 -47
  323. package/dist/runtime/daimon/training/native/child/grok.js.map +0 -1
  324. package/dist/runtime/daimon/training/native/child/index.d.ts +0 -7
  325. package/dist/runtime/daimon/training/native/child/index.js +0 -5
  326. package/dist/runtime/daimon/training/native/child/index.js.map +0 -1
  327. package/dist/runtime/daimon/training/native/child/lifecycle.d.ts +0 -40
  328. package/dist/runtime/daimon/training/native/child/lifecycle.js +0 -400
  329. package/dist/runtime/daimon/training/native/child/lifecycle.js.map +0 -1
  330. package/dist/runtime/daimon/training/native/child/probe.d.ts +0 -2
  331. package/dist/runtime/daimon/training/native/child/probe.js +0 -11
  332. package/dist/runtime/daimon/training/native/child/probe.js.map +0 -1
  333. package/dist/runtime/daimon/training/native/child/sandbox.d.ts +0 -4
  334. package/dist/runtime/daimon/training/native/child/sandbox.js +0 -76
  335. package/dist/runtime/daimon/training/native/child/sandbox.js.map +0 -1
  336. package/dist/runtime/daimon/training/native/child/types.d.ts +0 -15
  337. package/dist/runtime/daimon/training/native/child/types.js +0 -2
  338. package/dist/runtime/daimon/training/native/child/types.js.map +0 -1
  339. package/dist/runtime/daimon/training/native/container/docker.d.ts +0 -29
  340. package/dist/runtime/daimon/training/native/container/docker.js +0 -105
  341. package/dist/runtime/daimon/training/native/container/docker.js.map +0 -1
  342. package/dist/runtime/daimon/training/native/container/grok-slot.d.ts +0 -22
  343. package/dist/runtime/daimon/training/native/container/grok-slot.js +0 -38
  344. package/dist/runtime/daimon/training/native/container/grok-slot.js.map +0 -1
  345. package/dist/runtime/daimon/training/native/container/index.d.ts +0 -6
  346. package/dist/runtime/daimon/training/native/container/index.js +0 -6
  347. package/dist/runtime/daimon/training/native/container/index.js.map +0 -1
  348. package/dist/runtime/daimon/training/native/container/lifecycle.d.ts +0 -8
  349. package/dist/runtime/daimon/training/native/container/lifecycle.js +0 -111
  350. package/dist/runtime/daimon/training/native/container/lifecycle.js.map +0 -1
  351. package/dist/runtime/daimon/training/native/container/manifest.d.ts +0 -17
  352. package/dist/runtime/daimon/training/native/container/manifest.js +0 -164
  353. package/dist/runtime/daimon/training/native/container/manifest.js.map +0 -1
  354. package/dist/runtime/daimon/training/native/container/native-preflight.d.ts +0 -8
  355. package/dist/runtime/daimon/training/native/container/native-preflight.js +0 -40
  356. package/dist/runtime/daimon/training/native/container/native-preflight.js.map +0 -1
  357. package/dist/runtime/daimon/training/native/container/preflight.d.ts +0 -15
  358. package/dist/runtime/daimon/training/native/container/preflight.js +0 -79
  359. package/dist/runtime/daimon/training/native/container/preflight.js.map +0 -1
  360. package/dist/runtime/daimon/training/native/container/slot.d.ts +0 -4
  361. package/dist/runtime/daimon/training/native/container/slot.js +0 -58
  362. package/dist/runtime/daimon/training/native/container/slot.js.map +0 -1
  363. package/dist/runtime/daimon/training/native/external.d.ts +0 -37
  364. package/dist/runtime/daimon/training/native/external.js +0 -75
  365. package/dist/runtime/daimon/training/native/external.js.map +0 -1
  366. package/dist/runtime/daimon/training/native/grants/authority.d.ts +0 -36
  367. package/dist/runtime/daimon/training/native/grants/authority.js +0 -49
  368. package/dist/runtime/daimon/training/native/grants/authority.js.map +0 -1
  369. package/dist/runtime/daimon/training/native/grants/index.d.ts +0 -2
  370. package/dist/runtime/daimon/training/native/grants/index.js +0 -3
  371. package/dist/runtime/daimon/training/native/grants/index.js.map +0 -1
  372. package/dist/runtime/daimon/training/native/grants/pins.d.ts +0 -30
  373. package/dist/runtime/daimon/training/native/grants/pins.js +0 -20
  374. package/dist/runtime/daimon/training/native/grants/pins.js.map +0 -1
  375. package/dist/runtime/daimon/training/native/grants/test-socket.d.ts +0 -6
  376. package/dist/runtime/daimon/training/native/grants/test-socket.js +0 -35
  377. package/dist/runtime/daimon/training/native/grants/test-socket.js.map +0 -1
  378. package/dist/runtime/daimon/training/native/grok-fixtures.d.ts +0 -34
  379. package/dist/runtime/daimon/training/native/grok-fixtures.js +0 -179
  380. package/dist/runtime/daimon/training/native/grok-fixtures.js.map +0 -1
  381. package/dist/runtime/daimon/training/native/index.d.ts +0 -38
  382. package/dist/runtime/daimon/training/native/index.js +0 -27
  383. package/dist/runtime/daimon/training/native/index.js.map +0 -1
  384. package/dist/runtime/daimon/training/native/live-checkout.d.ts +0 -2
  385. package/dist/runtime/daimon/training/native/live-checkout.js +0 -15
  386. package/dist/runtime/daimon/training/native/live-checkout.js.map +0 -1
  387. package/dist/runtime/daimon/training/native/observations.d.ts +0 -51
  388. package/dist/runtime/daimon/training/native/observations.js +0 -217
  389. package/dist/runtime/daimon/training/native/observations.js.map +0 -1
  390. package/dist/runtime/daimon/training/native/outcome.d.ts +0 -13
  391. package/dist/runtime/daimon/training/native/outcome.js +0 -37
  392. package/dist/runtime/daimon/training/native/outcome.js.map +0 -1
  393. package/dist/runtime/daimon/training/native/preparation/engine-config.d.ts +0 -21
  394. package/dist/runtime/daimon/training/native/preparation/engine-config.js +0 -30
  395. package/dist/runtime/daimon/training/native/preparation/engine-config.js.map +0 -1
  396. package/dist/runtime/daimon/training/native/preparation/fixtures.d.ts +0 -17
  397. package/dist/runtime/daimon/training/native/preparation/fixtures.js +0 -52
  398. package/dist/runtime/daimon/training/native/preparation/fixtures.js.map +0 -1
  399. package/dist/runtime/daimon/training/native/preparation/index.d.ts +0 -7
  400. package/dist/runtime/daimon/training/native/preparation/index.js +0 -5
  401. package/dist/runtime/daimon/training/native/preparation/index.js.map +0 -1
  402. package/dist/runtime/daimon/training/native/preparation/layout.d.ts +0 -66
  403. package/dist/runtime/daimon/training/native/preparation/layout.js +0 -87
  404. package/dist/runtime/daimon/training/native/preparation/layout.js.map +0 -1
  405. package/dist/runtime/daimon/training/native/preparation/subject.d.ts +0 -14
  406. package/dist/runtime/daimon/training/native/preparation/subject.js +0 -67
  407. package/dist/runtime/daimon/training/native/preparation/subject.js.map +0 -1
  408. package/dist/runtime/daimon/training/native/preparation/types.d.ts +0 -69
  409. package/dist/runtime/daimon/training/native/preparation/types.js +0 -2
  410. package/dist/runtime/daimon/training/native/preparation/types.js.map +0 -1
  411. package/dist/runtime/daimon/training/native/receipt/artifacts.d.ts +0 -25
  412. package/dist/runtime/daimon/training/native/receipt/artifacts.js +0 -32
  413. package/dist/runtime/daimon/training/native/receipt/artifacts.js.map +0 -1
  414. package/dist/runtime/daimon/training/native/receipt/grok-clocked-pins.d.ts +0 -129
  415. package/dist/runtime/daimon/training/native/receipt/grok-clocked-pins.js +0 -45
  416. package/dist/runtime/daimon/training/native/receipt/grok-clocked-pins.js.map +0 -1
  417. package/dist/runtime/daimon/training/native/receipt/grok.d.ts +0 -246
  418. package/dist/runtime/daimon/training/native/receipt/grok.js +0 -195
  419. package/dist/runtime/daimon/training/native/receipt/grok.js.map +0 -1
  420. package/dist/runtime/daimon/training/native/receipt/index.d.ts +0 -11
  421. package/dist/runtime/daimon/training/native/receipt/index.js +0 -8
  422. package/dist/runtime/daimon/training/native/receipt/index.js.map +0 -1
  423. package/dist/runtime/daimon/training/native/receipt/paths.d.ts +0 -3
  424. package/dist/runtime/daimon/training/native/receipt/paths.js +0 -18
  425. package/dist/runtime/daimon/training/native/receipt/paths.js.map +0 -1
  426. package/dist/runtime/daimon/training/native/receipt/sandbox.d.ts +0 -42
  427. package/dist/runtime/daimon/training/native/receipt/sandbox.js +0 -35
  428. package/dist/runtime/daimon/training/native/receipt/sandbox.js.map +0 -1
  429. package/dist/runtime/daimon/training/native/receipt/schema.d.ts +0 -490
  430. package/dist/runtime/daimon/training/native/receipt/schema.js +0 -138
  431. package/dist/runtime/daimon/training/native/receipt/schema.js.map +0 -1
  432. package/dist/runtime/daimon/training/native/receipt/subscription.d.ts +0 -13
  433. package/dist/runtime/daimon/training/native/receipt/subscription.js +0 -13
  434. package/dist/runtime/daimon/training/native/receipt/subscription.js.map +0 -1
  435. package/dist/runtime/daimon/training/native/receipt/task-clock.d.ts +0 -19
  436. package/dist/runtime/daimon/training/native/receipt/task-clock.js +0 -49
  437. package/dist/runtime/daimon/training/native/receipt/task-clock.js.map +0 -1
  438. package/dist/runtime/daimon/training/native/sealed-usage.d.ts +0 -218
  439. package/dist/runtime/daimon/training/native/sealed-usage.js +0 -261
  440. package/dist/runtime/daimon/training/native/sealed-usage.js.map +0 -1
  441. package/dist/runtime/daimon/training/native/test-fixtures.d.ts +0 -27
  442. package/dist/runtime/daimon/training/native/test-fixtures.js +0 -162
  443. package/dist/runtime/daimon/training/native/test-fixtures.js.map +0 -1
  444. package/dist/runtime/daimon/training/native/transcript.d.ts +0 -96
  445. package/dist/runtime/daimon/training/native/transcript.js +0 -239
  446. package/dist/runtime/daimon/training/native/transcript.js.map +0 -1
  447. package/dist/runtime/daimon/training/native/transport/delivery.d.ts +0 -27
  448. package/dist/runtime/daimon/training/native/transport/delivery.js +0 -98
  449. package/dist/runtime/daimon/training/native/transport/delivery.js.map +0 -1
  450. package/dist/runtime/daimon/training/native/transport/http.d.ts +0 -3
  451. package/dist/runtime/daimon/training/native/transport/http.js +0 -81
  452. package/dist/runtime/daimon/training/native/transport/http.js.map +0 -1
  453. package/dist/runtime/daimon/training/native/transport/index.d.ts +0 -4
  454. package/dist/runtime/daimon/training/native/transport/index.js +0 -3
  455. package/dist/runtime/daimon/training/native/transport/index.js.map +0 -1
  456. package/dist/runtime/daimon/training/native/transport/types.d.ts +0 -15
  457. package/dist/runtime/daimon/training/native/transport/types.js +0 -2
  458. package/dist/runtime/daimon/training/native/transport/types.js.map +0 -1
  459. package/dist/runtime/daimon/training/native/worker/cli.d.ts +0 -1
  460. package/dist/runtime/daimon/training/native/worker/cli.js +0 -17
  461. package/dist/runtime/daimon/training/native/worker/cli.js.map +0 -1
  462. package/dist/runtime/daimon/training/native/worker/control.d.ts +0 -20
  463. package/dist/runtime/daimon/training/native/worker/control.js +0 -266
  464. package/dist/runtime/daimon/training/native/worker/control.js.map +0 -1
  465. package/dist/runtime/daimon/training/native/worker/deliveries.d.ts +0 -38
  466. package/dist/runtime/daimon/training/native/worker/deliveries.js +0 -91
  467. package/dist/runtime/daimon/training/native/worker/deliveries.js.map +0 -1
  468. package/dist/runtime/daimon/training/native/worker/evidence/collect.d.ts +0 -54
  469. package/dist/runtime/daimon/training/native/worker/evidence/collect.js +0 -278
  470. package/dist/runtime/daimon/training/native/worker/evidence/collect.js.map +0 -1
  471. package/dist/runtime/daimon/training/native/worker/evidence/execution.d.ts +0 -102
  472. package/dist/runtime/daimon/training/native/worker/evidence/execution.js +0 -191
  473. package/dist/runtime/daimon/training/native/worker/evidence/execution.js.map +0 -1
  474. package/dist/runtime/daimon/training/native/worker/evidence/index.d.ts +0 -3
  475. package/dist/runtime/daimon/training/native/worker/evidence/index.js +0 -4
  476. package/dist/runtime/daimon/training/native/worker/evidence/index.js.map +0 -1
  477. package/dist/runtime/daimon/training/native/worker/evidence/io.d.ts +0 -20
  478. package/dist/runtime/daimon/training/native/worker/evidence/io.js +0 -130
  479. package/dist/runtime/daimon/training/native/worker/evidence/io.js.map +0 -1
  480. package/dist/runtime/daimon/training/native/worker/evidence/seal.d.ts +0 -3
  481. package/dist/runtime/daimon/training/native/worker/evidence/seal.js +0 -67
  482. package/dist/runtime/daimon/training/native/worker/evidence/seal.js.map +0 -1
  483. package/dist/runtime/daimon/training/native/worker/index.d.ts +0 -11
  484. package/dist/runtime/daimon/training/native/worker/index.js +0 -8
  485. package/dist/runtime/daimon/training/native/worker/index.js.map +0 -1
  486. package/dist/runtime/daimon/training/native/worker/profile.d.ts +0 -23
  487. package/dist/runtime/daimon/training/native/worker/profile.js +0 -149
  488. package/dist/runtime/daimon/training/native/worker/profile.js.map +0 -1
  489. package/dist/runtime/daimon/training/native/worker/public.d.ts +0 -53
  490. package/dist/runtime/daimon/training/native/worker/public.js +0 -22
  491. package/dist/runtime/daimon/training/native/worker/public.js.map +0 -1
  492. package/dist/runtime/daimon/training/native/worker/sandbox.d.ts +0 -4
  493. package/dist/runtime/daimon/training/native/worker/sandbox.js +0 -54
  494. package/dist/runtime/daimon/training/native/worker/sandbox.js.map +0 -1
  495. package/dist/runtime/daimon/training/native/worker/server.d.ts +0 -4
  496. package/dist/runtime/daimon/training/native/worker/server.js +0 -102
  497. package/dist/runtime/daimon/training/native/worker/server.js.map +0 -1
  498. package/dist/runtime/daimon/training/native/worker/types.d.ts +0 -318
  499. package/dist/runtime/daimon/training/native/worker/types.js +0 -2
  500. package/dist/runtime/daimon/training/native/worker/types.js.map +0 -1
  501. package/dist/runtime/daimon/training/native/worker/wake-delivery/index.d.ts +0 -4
  502. package/dist/runtime/daimon/training/native/worker/wake-delivery/index.js +0 -4
  503. package/dist/runtime/daimon/training/native/worker/wake-delivery/index.js.map +0 -1
  504. package/dist/runtime/daimon/training/native/worker/wake-delivery/source.d.ts +0 -3
  505. package/dist/runtime/daimon/training/native/worker/wake-delivery/source.js +0 -16
  506. package/dist/runtime/daimon/training/native/worker/wake-delivery/source.js.map +0 -1
  507. package/dist/runtime/daimon/training/native/worker/wake-delivery/terminal.d.ts +0 -4
  508. package/dist/runtime/daimon/training/native/worker/wake-delivery/terminal.js +0 -52
  509. package/dist/runtime/daimon/training/native/worker/wake-delivery/terminal.js.map +0 -1
  510. package/dist/runtime/daimon/training/native/worker/wake-delivery/transport.d.ts +0 -21
  511. package/dist/runtime/daimon/training/native/worker/wake-delivery/transport.js +0 -198
  512. package/dist/runtime/daimon/training/native/worker/wake-delivery/transport.js.map +0 -1
  513. package/dist/runtime/daimon/training/native/worker/wake-delivery/types.d.ts +0 -91
  514. package/dist/runtime/daimon/training/native/worker/wake-delivery/types.js +0 -2
  515. package/dist/runtime/daimon/training/native/worker/wake-delivery/types.js.map +0 -1
  516. package/dist/runtime/daimon/training/native/worker/worker.d.ts +0 -1
  517. package/dist/runtime/daimon/training/native/worker/worker.js +0 -105
  518. package/dist/runtime/daimon/training/native/worker/worker.js.map +0 -1
  519. package/dist/runtime/daimon/training/providers/grok-broker/broker.d.ts +0 -20
  520. package/dist/runtime/daimon/training/providers/grok-broker/broker.js +0 -55
  521. package/dist/runtime/daimon/training/providers/grok-broker/broker.js.map +0 -1
  522. package/dist/runtime/daimon/training/providers/grok-broker/grant-fixtures.d.ts +0 -15
  523. package/dist/runtime/daimon/training/providers/grok-broker/grant-fixtures.js +0 -29
  524. package/dist/runtime/daimon/training/providers/grok-broker/grant-fixtures.js.map +0 -1
  525. package/dist/runtime/daimon/training/providers/grok-broker/grant-home.d.ts +0 -16
  526. package/dist/runtime/daimon/training/providers/grok-broker/grant-home.js +0 -60
  527. package/dist/runtime/daimon/training/providers/grok-broker/grant-home.js.map +0 -1
  528. package/dist/runtime/daimon/training/providers/grok-broker/grant-pool.d.ts +0 -81
  529. package/dist/runtime/daimon/training/providers/grok-broker/grant-pool.js +0 -221
  530. package/dist/runtime/daimon/training/providers/grok-broker/grant-pool.js.map +0 -1
  531. package/dist/runtime/daimon/training/providers/grok-broker/grant-releases.d.ts +0 -31
  532. package/dist/runtime/daimon/training/providers/grok-broker/grant-releases.js +0 -78
  533. package/dist/runtime/daimon/training/providers/grok-broker/grant-releases.js.map +0 -1
  534. package/dist/runtime/daimon/training/providers/grok-broker/grants.d.ts +0 -63
  535. package/dist/runtime/daimon/training/providers/grok-broker/grants.js +0 -20
  536. package/dist/runtime/daimon/training/providers/grok-broker/grants.js.map +0 -1
  537. package/dist/runtime/daimon/training/providers/grok-broker/index.d.ts +0 -3
  538. package/dist/runtime/daimon/training/providers/grok-broker/index.js +0 -4
  539. package/dist/runtime/daimon/training/providers/grok-broker/index.js.map +0 -1
  540. package/dist/runtime/daimon/training/providers/grok-subscription/cli.d.ts +0 -21
  541. package/dist/runtime/daimon/training/providers/grok-subscription/cli.js +0 -81
  542. package/dist/runtime/daimon/training/providers/grok-subscription/cli.js.map +0 -1
  543. package/dist/runtime/daimon/training/providers/grok-subscription/index.d.ts +0 -4
  544. package/dist/runtime/daimon/training/providers/grok-subscription/index.js +0 -5
  545. package/dist/runtime/daimon/training/providers/grok-subscription/index.js.map +0 -1
  546. package/dist/runtime/daimon/training/providers/grok-subscription/protocol.d.ts +0 -26
  547. package/dist/runtime/daimon/training/providers/grok-subscription/protocol.js +0 -102
  548. package/dist/runtime/daimon/training/providers/grok-subscription/protocol.js.map +0 -1
  549. package/dist/runtime/daimon/training/providers/grok-subscription/provider.d.ts +0 -9
  550. package/dist/runtime/daimon/training/providers/grok-subscription/provider.js +0 -38
  551. package/dist/runtime/daimon/training/providers/grok-subscription/provider.js.map +0 -1
  552. package/dist/runtime/daimon/training/public.d.ts +0 -6
  553. package/dist/runtime/daimon/training/public.js +0 -5
  554. package/dist/runtime/daimon/training/public.js.map +0 -1
  555. package/dist/runtime/daimon/training/services/account-lease.d.ts +0 -7
  556. package/dist/runtime/daimon/training/services/account-lease.js +0 -76
  557. package/dist/runtime/daimon/training/services/account-lease.js.map +0 -1
  558. package/dist/runtime/daimon/training/services/freshness.d.ts +0 -15
  559. package/dist/runtime/daimon/training/services/freshness.js +0 -19
  560. package/dist/runtime/daimon/training/services/freshness.js.map +0 -1
  561. package/dist/runtime/daimon/training/services/index.d.ts +0 -4
  562. package/dist/runtime/daimon/training/services/index.js +0 -4
  563. package/dist/runtime/daimon/training/services/index.js.map +0 -1
  564. package/dist/runtime/daimon/training/services/slot-freshness.d.ts +0 -34
  565. package/dist/runtime/daimon/training/services/slot-freshness.js +0 -178
  566. package/dist/runtime/daimon/training/services/slot-freshness.js.map +0 -1
  567. package/dist/runtime/daimon/wakeMoments.js.map +0 -1
  568. package/dist/runtime/pi/adapter.d.ts +0 -3
  569. package/dist/runtime/pi/adapter.js +0 -230
  570. package/dist/runtime/pi/appActivitySource.d.ts +0 -1
  571. package/dist/runtime/pi/appActivitySource.js +0 -199
  572. package/dist/runtime/pi/appAgentConfig.d.ts +0 -11
  573. package/dist/runtime/pi/appAgentConfig.js +0 -264
  574. package/dist/runtime/pi/appCliEnginesSource.d.ts +0 -1
  575. package/dist/runtime/pi/appCliEnginesSource.js +0 -183
  576. package/dist/runtime/pi/appCliSource.d.ts +0 -1
  577. package/dist/runtime/pi/appCliSource.js +0 -353
  578. package/dist/runtime/pi/appControlSource.d.ts +0 -1
  579. package/dist/runtime/pi/appControlSource.js +0 -390
  580. package/dist/runtime/pi/appControlWakeIdentitySource.d.ts +0 -1
  581. package/dist/runtime/pi/appControlWakeIdentitySource.js +0 -19
  582. package/dist/runtime/pi/appCoreSource.d.ts +0 -4
  583. package/dist/runtime/pi/appCoreSource.js +0 -244
  584. package/dist/runtime/pi/appPreludeSource.d.ts +0 -1
  585. package/dist/runtime/pi/appPreludeSource.js +0 -192
  586. package/dist/runtime/pi/appScheduleSource.d.ts +0 -1
  587. package/dist/runtime/pi/appScheduleSource.js +0 -84
  588. package/dist/runtime/pi/appScriptedEngine.d.ts +0 -31
  589. package/dist/runtime/pi/appScriptedEngine.js +0 -42
  590. package/dist/runtime/pi/appSource.d.ts +0 -4
  591. package/dist/runtime/pi/appSource.js +0 -12
  592. package/dist/runtime/pi/appTemplate.d.ts +0 -14
  593. package/dist/runtime/pi/appTemplate.js +0 -28
  594. package/dist/runtime/pi/appTemplateTypes.d.ts +0 -64
  595. package/dist/runtime/pi/appTemplateTypes.js +0 -18
  596. package/dist/runtime/pi/appWakeContextSource.d.ts +0 -1
  597. package/dist/runtime/pi/appWakeContextSource.js +0 -398
  598. package/dist/runtime/pi/containerTargets.d.ts +0 -4
  599. package/dist/runtime/pi/containerTargets.js +0 -63
  600. package/dist/runtime/pi/runAuth.d.ts +0 -2
  601. package/dist/runtime/pi/runAuth.js +0 -185
  602. package/dist/runtime/pi/testHelpers.d.ts +0 -2
  603. package/dist/shared/errors.js.map +0 -1
  604. package/dist/training/subjects/environment.d.ts +0 -2
  605. package/dist/training/subjects/environment.js +0 -14
  606. package/dist/training/subjects/environment.js.map +0 -1
@@ -0,0 +1,85 @@
1
+ import { mkdir, mkdtemp, rm } from "node:fs/promises";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { ensureAuthProfile, registerSubscriptionRealm } from "../../../auth/index.js";
5
+ import { getDaimonEngineDescriptor } from "../../../runtime/daimon/index.js";
6
+ import { DAIMON_ORGANIZATION_UID } from "../../../runtime/daimon/runtimeIdentity.js";
7
+ import { DAIMON_PROFILE_UNLOCK_FILE } from "../../../runtime/daimon/subscriptionRealms.js";
8
+ import { SpawnfileError } from "../../../shared/index.js";
9
+ import { slugify } from "../../helpers.js";
10
+ import { prepareTrial } from "./boot.js";
11
+ import { createTrialDocker } from "./docker.js";
12
+ import { trainingGatewayRealmVolume } from "./gateway.js";
13
+ import { JUDGE_INSTRUCTIONS, writeJudgeAgent } from "./judge.js";
14
+ const LABEL = "spawnfile.subscription-realm";
15
+ /** The profile's volume names for an engine's volume-held login. */
16
+ export const subscriptionRealmBinding = (profileName, engine) => {
17
+ const prefix = `spawnfile-training-${slugify(profileName) || "profile"}-${engine}`;
18
+ return { homeVolume: `${prefix}-home`, realmVolume: trainingGatewayRealmVolume(profileName, engine), unlockVolume: `${prefix}-unlock` };
19
+ };
20
+ /**
21
+ * Creates the unlock secret inside its volume exactly once, as the organization
22
+ * uid Daimon checks it against (one `0600` regular file, no newline). Generated
23
+ * and written inside a network-less container: the bytes never reach the host.
24
+ * An existing secret is kept (replacing it would orphan the encrypted keyring)
25
+ * unless it is unsafe, which is refused.
26
+ */
27
+ const UNLOCK_PROGRAM = [
28
+ "const fs = require('node:fs'), crypto = require('node:crypto');",
29
+ "const [uid, name] = process.argv.slice(1); const target = `/unlock/${name}`;",
30
+ "try { const entry = fs.lstatSync(target);",
31
+ " if (!entry.isFile() || entry.nlink !== 1 || entry.uid !== Number(uid) || (entry.mode & 0o777) !== 0o600 || entry.size < 1) { console.error('existing unlock secret is unsafe'); process.exit(3); }",
32
+ " process.exit(0);",
33
+ "} catch (error) { if (error.code !== 'ENOENT') throw error; }",
34
+ "const fd = fs.openSync(target, fs.constants.O_WRONLY | fs.constants.O_CREAT | fs.constants.O_EXCL | fs.constants.O_NOFOLLOW, 0o600);",
35
+ "const bytes = Buffer.from(crypto.randomBytes(32).toString('hex'));",
36
+ "fs.writeSync(fd, bytes); bytes.fill(0); fs.fchmodSync(fd, 0o600); fs.fsyncSync(fd); fs.fchownSync(fd, Number(uid), Number(uid)); fs.closeSync(fd);"
37
+ ].join("\n");
38
+ export const ensureSubscriptionRealmVolumes = async (docker, image, engine, binding) => {
39
+ for (const volume of [binding.realmVolume, binding.unlockVolume, ...(binding.homeVolume ? [binding.homeVolume] : [])]) {
40
+ await docker(["volume", "create", "--label", `${LABEL}=${engine}`, volume]);
41
+ }
42
+ await docker(["run", "--rm", "--network", "none", "--user", "0:0", "--cap-drop", "ALL", "--cap-add", "CHOWN",
43
+ "--security-opt", "no-new-privileges", "--entrypoint", "node", "--mount", `type=volume,source=${binding.unlockVolume},target=/unlock`,
44
+ image, "-e", UNLOCK_PROGRAM, String(DAIMON_ORGANIZATION_UID), DAIMON_PROFILE_UNLOCK_FILE]);
45
+ };
46
+ /**
47
+ * `spawnfile auth login <engine>`: gives an auth profile its own volume-held
48
+ * login for an engine that keeps its login in a Daimon secret-service realm
49
+ * (AGY). Creates the profile's realm, unlock and home login volumes, then runs
50
+ * Daimon's own interactive `auth <engine> login` in a throwaway,
51
+ * production-booted one-agent organization (a tool-free judge) attached to the
52
+ * operator's terminal, keeps the engine's login files from that throwaway home
53
+ * in the home login volume, and records the volume names on the profile once
54
+ * it succeeds.
55
+ * Spawnfile never reads the login or the unlock secret.
56
+ */
57
+ export const loginSubscriptionRealm = async (options) => {
58
+ const descriptor = getDaimonEngineDescriptor(options.engine);
59
+ if (descriptor?.auth.staging !== "secret-service") {
60
+ throw new SpawnfileError("validation_error", `Engine ${options.engine} has no volume-held login; use \`spawnfile auth import ${options.engine}\``);
61
+ }
62
+ const docker = options.docker ?? createTrialDocker();
63
+ const current = await ensureAuthProfile(options.profileName);
64
+ // An earlier login keeps its volumes; one recorded before home login files were kept gains its home volume.
65
+ const binding = { ...subscriptionRealmBinding(current.name, options.engine), ...current.realms?.[options.engine] };
66
+ const realms = { ...current, env: {}, imports: {}, realms: { [options.engine]: binding } };
67
+ const scratch = options.scratchRoot ?? os.tmpdir();
68
+ await mkdir(scratch, { recursive: true });
69
+ const root = await mkdtemp(path.join(scratch, "spawnfile-auth-login-"));
70
+ let prepared;
71
+ try {
72
+ prepared = await (options.prepare ?? prepareTrial)({
73
+ agentManifestPath: await writeJudgeAgent({ engine: options.engine, model: "default" }, path.join(root, "source")),
74
+ directory: root, docker, instructions: JUDGE_INSTRUCTIONS, trialId: `login-${options.engine}-${current.name}`
75
+ });
76
+ await ensureSubscriptionRealmVolumes(docker, prepared.image, options.engine, binding);
77
+ const command = await prepared.login(realms, { dryRun: options.dryRun === true });
78
+ const profile = options.dryRun ? current : await registerSubscriptionRealm(current.name, options.engine, binding);
79
+ return { binding, command, profile };
80
+ }
81
+ finally {
82
+ await prepared?.dispose();
83
+ await rm(root, { recursive: true, force: true });
84
+ }
85
+ };
@@ -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
+ };
@@ -0,0 +1,20 @@
1
+ /** Gives the turn back; idempotent. */
2
+ export type ReleaseRealmTurn = () => void;
3
+ export interface RealmTurnOptions {
4
+ /** Called once on the holder when another caller starts waiting: a warm holder should hand the turn over. */
5
+ onContended?: () => void;
6
+ /** Bound on the wait; on expiry the caller is refused instead of waiting forever. */
7
+ timeoutMs?: number;
8
+ signal?: AbortSignal;
9
+ }
10
+ /**
11
+ * First-come turns on exclusive login realms, one holder per realm at a time.
12
+ * An engine whose login is one realm held under an exclusive lock (Daimon's
13
+ * AGY keyring, `flock` on `.daimon-lease`) admits one container per login:
14
+ * every container of a run that mounts that realm takes a turn here first, so
15
+ * a second container never boots into the lock and dies at readiness.
16
+ */
17
+ export interface RealmTurns {
18
+ take(realm: string, options?: RealmTurnOptions): Promise<ReleaseRealmTurn>;
19
+ }
20
+ export declare const createRealmTurns: () => RealmTurns;
@@ -0,0 +1,69 @@
1
+ import { SpawnfileError } from "../../../shared/index.js";
2
+ export const createRealmTurns = () => {
3
+ const realms = new Map();
4
+ const release = (key, state) => {
5
+ let released = false;
6
+ return () => {
7
+ if (released)
8
+ return;
9
+ released = true;
10
+ const next = state.queue.shift();
11
+ if (!next) {
12
+ realms.delete(key);
13
+ return;
14
+ }
15
+ state.holder = next.options;
16
+ state.contended = false;
17
+ next.grant();
18
+ if (state.queue.length > 0)
19
+ notify(state);
20
+ };
21
+ };
22
+ const notify = (state) => {
23
+ if (state.contended)
24
+ return;
25
+ state.contended = true;
26
+ state.holder?.onContended?.();
27
+ };
28
+ return {
29
+ take: (key, options = {}) => {
30
+ if (options.signal?.aborted)
31
+ return Promise.reject(new SpawnfileError("runtime_error", `cancelled waiting for login realm ${key}`));
32
+ const state = realms.get(key);
33
+ if (!state) {
34
+ const fresh = { holder: options, contended: false, queue: [] };
35
+ realms.set(key, fresh);
36
+ return Promise.resolve(release(key, fresh));
37
+ }
38
+ return new Promise((resolve, reject) => {
39
+ let timer;
40
+ const leave = (message) => {
41
+ const index = state.queue.indexOf(waiter);
42
+ if (index < 0)
43
+ return;
44
+ state.queue.splice(index, 1);
45
+ if (timer)
46
+ clearTimeout(timer);
47
+ options.signal?.removeEventListener("abort", onAbort);
48
+ reject(new SpawnfileError("runtime_error", message));
49
+ };
50
+ const onAbort = () => leave(`cancelled waiting for login realm ${key}`);
51
+ const waiter = {
52
+ options,
53
+ grant: () => {
54
+ if (timer)
55
+ clearTimeout(timer);
56
+ options.signal?.removeEventListener("abort", onAbort);
57
+ resolve(release(key, state));
58
+ }
59
+ };
60
+ state.queue.push(waiter);
61
+ if (options.timeoutMs !== undefined) {
62
+ timer = setTimeout(() => leave(`login realm ${key} stayed held by another container for ${options.timeoutMs}ms; one login admits one container at a time`), options.timeoutMs);
63
+ }
64
+ options.signal?.addEventListener("abort", onAbort, { once: true });
65
+ notify(state);
66
+ });
67
+ }
68
+ };
69
+ };
@@ -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) {
@@ -4,7 +4,7 @@ import path from "node:path";
4
4
  import { ensureDirectory } from "../filesystem/index.js";
5
5
  import { copyContainerFileToHost, } from "./artifactsExportDocker.js";
6
6
  const plans = (report) => (report.container?.runtime_instances ?? [])
7
- .filter((instance) => (instance.runtime === "pi" || instance.runtime === "daimon")
7
+ .filter((instance) => instance.runtime === "daimon"
8
8
  && instance.home_path !== null)
9
9
  .flatMap((instance) => {
10
10
  const instanceRoot = path.posix.dirname(instance.home_path);
@@ -1,4 +1,3 @@
1
- import { type CompileProjectResult } from "../compiler/index.js";
2
1
  import { type DeploymentRecord } from "../deployment/index.js";
3
2
  export type DevExecFile = (file: string, args: string[], options: {
4
3
  timeout: number;
@@ -9,8 +8,4 @@ export type DevExecFile = (file: string, args: string[], options: {
9
8
  export declare const defaultExecFile: DevExecFile;
10
9
  export declare const dockerArgsForRecord: (record: DeploymentRecord) => string[];
11
10
  export declare const firstContainerName: (record: DeploymentRecord) => string;
12
- export declare const compileForDevApply: (inputPath: string, outputDirectory: string, record: DeploymentRecord, dockerCommand: string, execFileImpl: DevExecFile) => Promise<CompileProjectResult>;
13
11
  export declare const runDocker: (command: string, args: string[], execFileImpl: DevExecFile, timeout?: number) => Promise<string>;
14
- export declare const copyIntoContainer: (dockerCommand: string, dockerPrefix: string[], source: string, destination: string, execFileImpl: DevExecFile) => Promise<void>;
15
- export declare const ensureContainerDirectories: (dockerCommand: string, dockerPrefix: string[], containerName: string, paths: string[], execFileImpl: DevExecFile) => Promise<void>;
16
- export declare const chownContainerPaths: (dockerCommand: string, dockerPrefix: string[], containerName: string, paths: string[], execFileImpl: DevExecFile) => Promise<void>;
@@ -1,6 +1,5 @@
1
1
  import { execFile as execFileCallback } from "node:child_process";
2
2
  import { promisify } from "node:util";
3
- import { compileProject, normalizeDockerArchitecture } from "../compiler/index.js";
4
3
  import { dockerContextNameForTarget, dockerHostValueForTarget } from "../deployment/index.js";
5
4
  import { SpawnfileError } from "../shared/index.js";
6
5
  export const defaultExecFile = promisify(execFileCallback);
@@ -20,52 +19,7 @@ export const firstContainerName = (record) => {
20
19
  }
21
20
  return name;
22
21
  };
23
- export const compileForDevApply = async (inputPath, outputDirectory, record, dockerCommand, execFileImpl) => {
24
- const dockerContext = dockerContextNameForTarget(record.target) ?? undefined;
25
- const architecture = dockerContext
26
- ? normalizeDockerArchitecture((await execFileImpl(dockerCommand, ["--context", dockerContext, "info", "--format", "{{.Architecture}}"], { timeout: 10_000 })).stdout)
27
- : undefined;
28
- return compileProject(inputPath, {
29
- clean: false,
30
- containerArchitecture: architecture,
31
- outputDirectory
32
- });
33
- };
34
22
  export const runDocker = async (command, args, execFileImpl, timeout = 30_000) => {
35
23
  const { stdout } = await execFileImpl(command, args, { timeout });
36
24
  return stdout;
37
25
  };
38
- export const copyIntoContainer = async (dockerCommand, dockerPrefix, source, destination, execFileImpl) => {
39
- await runDocker(dockerCommand, [...dockerPrefix, "cp", source, destination], execFileImpl, 60_000);
40
- };
41
- export const ensureContainerDirectories = async (dockerCommand, dockerPrefix, containerName, paths, execFileImpl) => {
42
- if (paths.length === 0) {
43
- return;
44
- }
45
- await runDocker(dockerCommand, [
46
- ...dockerPrefix,
47
- "exec",
48
- "--user",
49
- "root",
50
- containerName,
51
- "mkdir",
52
- "-p",
53
- ...paths
54
- ], execFileImpl);
55
- };
56
- export const chownContainerPaths = async (dockerCommand, dockerPrefix, containerName, paths, execFileImpl) => {
57
- if (paths.length === 0) {
58
- return;
59
- }
60
- await runDocker(dockerCommand, [
61
- ...dockerPrefix,
62
- "exec",
63
- "--user",
64
- "root",
65
- containerName,
66
- "chown",
67
- "-R",
68
- "spawnfile:spawnfile",
69
- ...paths
70
- ], execFileImpl);
71
- };
@@ -1,2 +1 @@
1
- export * from "./activity.js";
2
1
  export * from "./project.js";
package/dist/dev/index.js CHANGED
@@ -1,2 +1 @@
1
- export * from "./activity.js";
2
1
  export * from "./project.js";
@@ -1,25 +1,11 @@
1
1
  import { type UpProjectOptions, type UpProjectResult } from "../compiler/index.js";
2
2
  import { type DeploymentRecord } from "../deployment/index.js";
3
3
  import { type DevExecFile } from "./docker.js";
4
- export declare const PI_CONTROL_URL = "http://127.0.0.1:19690";
5
4
  export interface DevProjectOptions {
6
5
  deploymentName?: string;
7
6
  dockerCommand?: string;
8
7
  outputDirectory?: string;
9
8
  }
10
- export interface DevApplyProjectOptions extends DevProjectOptions {
11
- agent: string;
12
- execFile?: DevExecFile;
13
- restart?: boolean;
14
- }
15
- export interface DevApplyProjectResult {
16
- agentId: string;
17
- bridgeStarted: boolean;
18
- containerName: string;
19
- deploymentName: string;
20
- existingAgent: boolean;
21
- outputDirectory: string;
22
- }
23
9
  export interface DevStopProjectResult {
24
10
  containerName: string;
25
11
  deploymentName: string;
@@ -35,8 +21,6 @@ export declare const resolveDevOutputDirectory: (inputPath: string, outputDirect
35
21
  */
36
22
  export declare const devUpProject: (inputPath: string, options?: UpProjectOptions) => Promise<UpProjectResult>;
37
23
  export declare const selectDeploymentRecord: (outputDirectory: string, deploymentName?: string) => Promise<DeploymentRecord>;
38
- export declare const devApplyProject: (inputPath: string, options: DevApplyProjectOptions) => Promise<DevApplyProjectResult>;
39
- export declare const devRestartProject: (inputPath: string, options: DevApplyProjectOptions) => Promise<DevApplyProjectResult>;
40
24
  export declare const devStopProject: (inputPath: string, options?: DevProjectOptions & {
41
25
  execFile?: DevExecFile;
42
26
  }) => Promise<DevStopProjectResult>;
@@ -1,12 +1,10 @@
1
1
  import path from "node:path";
2
- import { readFile } from "node:fs/promises";
3
2
  import { buildCompilePlan, upProject } from "../compiler/index.js";
4
3
  import { listDeploymentRecords, normalizeDeploymentName } from "../deployment/index.js";
5
4
  import { SpawnfileError } from "../shared/index.js";
6
5
  import { DEV_DEPLOYMENT_LINEAGE_NAMESPACE } from "../compiler/deploymentLineage.js";
7
- import { chownContainerPaths, compileForDevApply, copyIntoContainer, defaultExecFile, dockerArgsForRecord, ensureContainerDirectories, firstContainerName, runDocker } from "./docker.js";
6
+ import { defaultExecFile, dockerArgsForRecord, firstContainerName, runDocker } from "./docker.js";
8
7
  const DEV_OUTPUT_DIRECTORY = ".spawn-dev";
9
- export const PI_CONTROL_URL = "http://127.0.0.1:19690";
10
8
  export const resolveDevOutputDirectory = async (inputPath, outputDirectory) => {
11
9
  if (outputDirectory) {
12
10
  return path.resolve(outputDirectory);
@@ -45,131 +43,6 @@ export const selectDeploymentRecord = async (outputDirectory, deploymentName) =>
45
43
  }
46
44
  return records[0].record;
47
45
  };
48
- const readJson = async (filePath) => JSON.parse(await readFile(filePath, "utf8"));
49
- const rootfsPath = (outputDirectory, containerPath) => path.join(outputDirectory, "container", "rootfs", containerPath.replace(/^\/+/u, ""));
50
- const matchesAgent = (agent, input) => agent.slug === input || agent.id === input || agent.name === input || agent.id === `agent:${input}`;
51
- const selectPiAgent = async (compileResult, agentInput) => {
52
- const instance = compileResult.report.container?.runtime_instances.find((candidate) => candidate.id === "pi-app" && ["daimon", "pi"].includes(candidate.runtime));
53
- if (!instance?.config_path || !instance.workspace_path || !instance.home_path) {
54
- throw new SpawnfileError("runtime_error", "Compiled output does not contain a generated Daimon runtime instance");
55
- }
56
- const configPath = rootfsPath(compileResult.outputDirectory, instance.config_path);
57
- const config = await readJson(configPath);
58
- const agent = (config.agents ?? []).find((candidate) => matchesAgent(candidate, agentInput));
59
- if (!agent) {
60
- throw new SpawnfileError("validation_error", `Daimon agent "${agentInput}" was not found in compiled output`);
61
- }
62
- return {
63
- agent,
64
- configPath,
65
- instanceRoot: path.posix.dirname(instance.home_path),
66
- remoteConfigPath: instance.config_path,
67
- remoteWorkspaceRoot: `${instance.workspace_path}/agents`,
68
- workspacePath: rootfsPath(compileResult.outputDirectory, `${instance.workspace_path}/agents/${agent.slug}`)
69
- };
70
- };
71
- const selectMoltnetNodes = async (result, agent) => {
72
- const nodePlans = result.report.container?.moltnet?.node_plans ?? [];
73
- const matches = [];
74
- for (const plan of nodePlans) {
75
- const configPath = rootfsPath(result.outputDirectory, plan.config_path);
76
- const config = await readJson(configPath);
77
- const attachment = (config.attachments ?? []).find((candidate) => {
78
- const id = candidate.agent?.id ?? "";
79
- const name = candidate.agent?.name ?? "";
80
- return id === agent.slug || id === agent.id || name === agent.name;
81
- });
82
- if (attachment?.agent?.id) {
83
- matches.push({
84
- configPath,
85
- remotePath: plan.config_path,
86
- ...(attachment.moltnet?.token_path
87
- ? { tokenDirectory: path.posix.dirname(attachment.moltnet.token_path) }
88
- : {})
89
- });
90
- }
91
- }
92
- return matches;
93
- };
94
- const selectManagedMoltnetServers = (result) => (result.report.container?.moltnet?.server_plans ?? [])
95
- .filter((plan) => plan.mode === "managed" && Boolean(plan.config_path))
96
- .map((plan) => ({
97
- configPath: rootfsPath(result.outputDirectory, plan.config_path),
98
- remotePath: plan.config_path
99
- }));
100
- const shellQuote = (value) => `'${value.replaceAll("'", "'\"'\"'")}'`;
101
- const listRunningPiAgents = async (dockerCommand, dockerPrefix, containerName, execFileImpl) => {
102
- const stdout = await runDocker(dockerCommand, [...dockerPrefix, "exec", containerName, "curl", "-fsS", `${PI_CONTROL_URL}/spawnfile/agents`], execFileImpl);
103
- const parsed = JSON.parse(stdout);
104
- return parsed.agents ?? [];
105
- };
106
- const loadPiAgent = async (dockerCommand, dockerPrefix, containerName, slug, action, execFileImpl) => {
107
- await runDocker(dockerCommand, [
108
- ...dockerPrefix,
109
- "exec",
110
- containerName,
111
- "curl",
112
- "-fsS",
113
- "-X",
114
- "POST",
115
- "-H",
116
- "content-type: application/json",
117
- "--data",
118
- JSON.stringify({ slug }),
119
- `${PI_CONTROL_URL}/spawnfile/agents/${action}`
120
- ], execFileImpl, 120_000);
121
- };
122
- export const devApplyProject = async (inputPath, options) => {
123
- const outputDirectory = await resolveDevOutputDirectory(inputPath, options.outputDirectory);
124
- const record = await selectDeploymentRecord(outputDirectory, options.deploymentName);
125
- const dockerCommand = options.dockerCommand ?? "docker";
126
- const dockerPrefix = dockerArgsForRecord(record);
127
- const containerName = firstContainerName(record);
128
- const execFileImpl = options.execFile ?? defaultExecFile;
129
- const existingAgents = await listRunningPiAgents(dockerCommand, dockerPrefix, containerName, execFileImpl);
130
- const compileResult = await compileForDevApply(inputPath, outputDirectory, record, dockerCommand, execFileImpl);
131
- const { agent, configPath, instanceRoot, remoteConfigPath, remoteWorkspaceRoot, workspacePath } = await selectPiAgent(compileResult, options.agent);
132
- const nodes = await selectMoltnetNodes(compileResult, agent);
133
- const serverConfigs = selectManagedMoltnetServers(compileResult);
134
- const existingAgent = existingAgents.some((candidate) => matchesAgent(candidate, agent.slug));
135
- await copyIntoContainer(dockerCommand, dockerPrefix, configPath, `${containerName}:${remoteConfigPath}`, execFileImpl);
136
- await copyIntoContainer(dockerCommand, dockerPrefix, workspacePath, `${containerName}:${remoteWorkspaceRoot}`, execFileImpl);
137
- for (const node of nodes) {
138
- await copyIntoContainer(dockerCommand, dockerPrefix, node.configPath, `${containerName}:${node.remotePath}`, execFileImpl);
139
- }
140
- for (const serverConfig of serverConfigs) {
141
- await copyIntoContainer(dockerCommand, dockerPrefix, serverConfig.configPath, `${containerName}:${serverConfig.remotePath}`, execFileImpl);
142
- }
143
- const tokenDirectories = nodes
144
- .map((node) => node.tokenDirectory)
145
- .filter((directory) => Boolean(directory));
146
- await ensureContainerDirectories(dockerCommand, dockerPrefix, containerName, tokenDirectories, execFileImpl);
147
- await chownContainerPaths(dockerCommand, dockerPrefix, containerName, [
148
- instanceRoot,
149
- ...nodes.flatMap((node) => [
150
- node.remotePath,
151
- ...(node.tokenDirectory ? [node.tokenDirectory] : [])
152
- ]),
153
- ...serverConfigs.map((serverConfig) => serverConfig.remotePath)
154
- ], execFileImpl);
155
- await loadPiAgent(dockerCommand, dockerPrefix, containerName, agent.slug, options.restart === true ? "restart" : "load", execFileImpl);
156
- if (!existingAgent) {
157
- for (const node of nodes) {
158
- const prepare = node.tokenDirectory ? `mkdir -p ${shellQuote(node.tokenDirectory)} && ` : "";
159
- const command = `${prepare}/usr/local/bin/moltnet node ${shellQuote(node.remotePath)}`;
160
- await runDocker(dockerCommand, [...dockerPrefix, "exec", "-d", "--user", "spawnfile", containerName, "sh", "-lc", command], execFileImpl);
161
- }
162
- }
163
- return {
164
- agentId: agent.id,
165
- bridgeStarted: !existingAgent && nodes.length > 0,
166
- containerName,
167
- deploymentName: record.name,
168
- existingAgent,
169
- outputDirectory
170
- };
171
- };
172
- export const devRestartProject = async (inputPath, options) => devApplyProject(inputPath, { ...options, restart: true });
173
46
  export const devStopProject = async (inputPath, options = {}) => {
174
47
  const outputDirectory = await resolveDevOutputDirectory(inputPath, options.outputDirectory);
175
48
  const record = await selectDeploymentRecord(outputDirectory, options.deploymentName);
@@ -42,7 +42,7 @@ const runtimeInstanceSchema = z.object({
42
42
  node_ids: z.array(z.string()),
43
43
  published_port: portSchema.nullable(),
44
44
  runtime: z.string().min(1),
45
- // node id -> persistent mount id for per-agent telemetry; every pi/Daimon
45
+ // node id -> persistent mount id for per-agent telemetry; every Daimon
46
46
  // image this compiler builds carries it, so a strict schema without it
47
47
  // refused image-mode `up` of the compiler's own output.
48
48
  telemetry_mount_ids: z.record(z.string().min(1), instanceIdSchema).optional(),
@@ -1,3 +1,4 @@
1
+ import { daimonGatewayBootstrapMountPath } from "../runtime/daimon/gateway.js";
1
2
  import { DAIMON_ENGINE_DESCRIPTORS } from "../runtime/daimon/engines.js";
2
3
  import path from "node:path";
3
4
  import { loadImportedClaudeCodeCredential, loadImportedCodexCredential } from "../auth/index.js";
@@ -60,7 +61,7 @@ export const prepareDaimonImageAuthMounts = async (instance, environment, authPr
60
61
  const source = daimonSourcePathForEngine(descriptor.id, environment, authProfile, descriptor);
61
62
  const ownerUid = await assertSafeDaimonSourceFile(source, descriptor.id, descriptor.auth.maxCredentialBytes, descriptor);
62
63
  assertDaimonCredentialContainerOwner(ownerUid, descriptor.id, containerCredentialUid);
63
- mounts.push("-v", `${source}:${descriptor.auth.realm.bootstrapMountPath}:ro`);
64
+ mounts.push("-v", `${source}:${daimonGatewayBootstrapMountPath(descriptor.auth.realm)}:ro`);
64
65
  }
65
66
  for (const descriptor of descriptors) {
66
67
  if (descriptor.auth.staging !== "broker-realm")
@@ -69,7 +70,7 @@ export const prepareDaimonImageAuthMounts = async (instance, environment, authPr
69
70
  // do not require ownership by the eventual organization uid.
70
71
  const source = daimonSourcePathForEngine(descriptor.id, environment, null, descriptor);
71
72
  await assertSafeDaimonSourceFile(source, descriptor.id, descriptor.auth.maxCredentialBytes, descriptor);
72
- mounts.push("-v", `${source}:${descriptor.auth.realm.bootstrapMountPath}:ro`);
73
+ mounts.push("-v", `${source}:${daimonGatewayBootstrapMountPath(descriptor.auth.realm)}:ro`);
73
74
  }
74
75
  for (const descriptor of descriptors) {
75
76
  if (descriptor.auth.staging !== "secret-service")
@@ -31,7 +31,8 @@ const orderModelTarget = (target) => {
31
31
  ["provider", target.provider],
32
32
  ["name", target.name],
33
33
  ["auth", orderModelEntryAuth(target.auth)],
34
- ["endpoint", target.endpoint]
34
+ ["endpoint", target.endpoint],
35
+ ["reasoning_effort", target.reasoning_effort]
35
36
  ]);
36
37
  };
37
38
  const orderExecution = (execution) => {