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
@@ -49,8 +49,6 @@ export interface DaimonGrokRegistration {
49
49
  agentId: string;
50
50
  config: string;
51
51
  configSha256: string;
52
- /** Selects trusted config bytes; production retains the unclocked default. */
53
- configVariant?: "unclocked" | "clocked";
54
52
  denyPaths: string[];
55
53
  /** Deny entries the main entrypoint materializes after root provisioning (workspace resource backings); absent is allowed there, a symlink never. */
56
54
  deferredDenyPaths: string[];
@@ -138,26 +136,20 @@ export declare const DAIMON_GROK_DENIED_STATE_ROOTS: readonly ["/var/lib/spawnfi
138
136
  */
139
137
  export declare const resolveDaimonGrokWorkerDenyPaths: (plans: readonly RuntimeTargetPlan[], plan: RuntimeTargetPlan, agentId: string, workerHomes: readonly string[], ownHome: string) => string[];
140
138
  export declare const resolveDaimonGrokRegistrations: (plans: RuntimeTargetPlan[]) => DaimonGrokRegistration[];
141
- export interface DaimonGrokServiceConfigOptions {
142
- /** Repeated agent IDs use v3 slot policies; production retains v2 by default. */
143
- version?: "v3";
144
- maxRunRequests?: number;
145
- runRequestStore?: string;
146
- /**
147
- * Where the broker keeps its durable turn registry. Production keeps it on
148
- * the realm volume beside the credential; training overrides it to per-slot
149
- * tmpfs so a recycled slot can never replay trial N's sealed turn in trial
150
- * N+1 (R2), and refuses any path on the realm volume for that reason.
151
- */
152
- turnStore?: string;
153
- /** `service.json` v2's optional evaluator inference ledger. Without it the broker refuses every grant. */
154
- inferenceLedgerPath?: string;
155
- }
156
139
  /** `service.json` v2, exactly the shape Daimon's strict `parseEngineBrokerServiceConfig` accepts. */
157
- export declare const renderDaimonGrokServiceConfig: (registrations: readonly DaimonGrokRegistration[], options?: DaimonGrokServiceConfigOptions) => {
158
- slotPolicies?: {
140
+ export declare const renderDaimonGrokServiceConfig: (registrations: readonly DaimonGrokRegistration[]) => {
141
+ version: "noopolis.daimon.engine-broker-service.v2";
142
+ credentialHome: "/var/lib/spawnfile/daimon/grok-subscription-realm";
143
+ turnStore: "/var/lib/spawnfile/daimon/grok-subscription-realm/turns";
144
+ registrations: {
159
145
  skillsSha256?: string | undefined;
146
+ agentId: string;
160
147
  slot: number;
148
+ workerUid: number;
149
+ workspace: string;
150
+ profilePath: string;
151
+ eventsPath: string;
152
+ profileSha256: string;
161
153
  usageLedgerPath: string;
162
154
  limits: {
163
155
  maxRequests: 32;
@@ -172,35 +164,5 @@ export declare const renderDaimonGrokServiceConfig: (registrations: readonly Dai
172
164
  id: "grok-4.6" | "grok-4.5" | "grok-build";
173
165
  reasoningEffort: "low" | "medium" | "high";
174
166
  };
175
- }[] | undefined;
176
- registrations: {
177
- skillsSha256?: string | undefined;
178
- usageLedgerPath?: string | undefined;
179
- limits?: {
180
- maxRequests: 32;
181
- maxTokens: 300000;
182
- timeoutMs: 240000;
183
- } | {
184
- maxRequests: number;
185
- maxTokens: number;
186
- timeoutMs: number;
187
- } | undefined;
188
- model?: {
189
- id: "grok-4.6" | "grok-4.5" | "grok-build";
190
- reasoningEffort: "low" | "medium" | "high";
191
- } | undefined;
192
- agentId: string;
193
- slot: number;
194
- workerUid: number;
195
- workspace: string;
196
- profilePath: string;
197
- eventsPath: string;
198
- profileSha256: string;
199
167
  }[];
200
- inferenceLedgerPath?: string | undefined;
201
- runRequestStore?: string | undefined;
202
- maxRunRequests?: number | undefined;
203
- version: "noopolis.daimon.engine-broker-service.v2" | "noopolis.daimon.engine-broker-service.v3";
204
- credentialHome: "/var/lib/spawnfile/daimon/grok-subscription-realm";
205
- turnStore: string;
206
168
  };
@@ -1,3 +1,4 @@
1
+ import { DAIMON_GATEWAY_BOOTSTRAP_ROOT, DAIMON_GATEWAY_ETC, DAIMON_GATEWAY_RUN, daimonGatewayRealmPath, isDaimonGatewayedEngine } from "../runtime/daimon/gateway.js";
1
2
  import { daimonEngineHasBroker, getDaimonEngineDescriptor } from "../runtime/daimon/index.js";
2
3
  import path from "node:path";
3
4
  import { SpawnfileError } from "../shared/index.js";
@@ -125,10 +126,13 @@ export const resolveDaimonGrokWorkerDenyPaths = (plans, plan, agentId, workerHom
125
126
  const peers = agents.filter(([id]) => id !== agentId).map(([id]) => nodeSlug(id));
126
127
  const daimonOwn = [
127
128
  ...[...new Set(agents.map(([, engine]) => engine))].flatMap((engine) => {
128
- const auth = getDaimonEngineDescriptor(engine)?.auth;
129
- return auth?.staging === "portable-realm" ? [auth.realm.bootstrapMountPath, auth.realm.durableMountPath] : [];
129
+ const descriptor = getDaimonEngineDescriptor(engine);
130
+ // A gatewayed bootstrap leaf sits under the root-only gateway root; mask that root, the realm and the gateway's state.
131
+ return isDaimonGatewayedEngine(descriptor)
132
+ ? [DAIMON_GATEWAY_BOOTSTRAP_ROOT, daimonGatewayRealmPath(descriptor), DAIMON_GATEWAY_ETC, DAIMON_GATEWAY_RUN]
133
+ : [];
130
134
  }),
131
- DAIMON_GROK_SUBSCRIPTION_REALM.bootstrapMountPath,
135
+ // The broker's local turn-state home (it holds no credential in gateway mode).
132
136
  DAIMON_GROK_SUBSCRIPTION_REALM.durableMountPath,
133
137
  ...(agents.some(([, engine]) => getDaimonEngineDescriptor(engine)?.auth.staging === "secret-service") ? [DAIMON_AGY_SUBSCRIPTION_REALM.unlockMountPath, DAIMON_AGY_SUBSCRIPTION_REALM.durableMountPath] : []),
134
138
  daimonGrokAcceptanceStoreDenyPath(instanceRoot),
@@ -242,33 +246,11 @@ export const resolveDaimonGrokRegistrations = (plans) => {
242
246
  };
243
247
  });
244
248
  };
245
- const resolveDaimonGrokTurnStore = (turnStore) => {
246
- if (turnStore === undefined)
247
- return DAIMON_GROK_ENGINE_BROKER.turnStorePath;
248
- assertCanonicalRegisteredPath("turn store", turnStore);
249
- if (turnStore === DAIMON_GROK_SUBSCRIPTION_REALM.durableMountPath || turnStore.startsWith(`${DAIMON_GROK_SUBSCRIPTION_REALM.durableMountPath}/`)) {
250
- fail(`Grok broker turn store ${turnStore} is on the durable credential realm; a recycled slot would replay the previous trial's sealed turns`);
251
- }
252
- return turnStore;
253
- };
254
- const resolveDaimonGrokInferenceLedger = (inferenceLedgerPath, registrations) => {
255
- assertCanonicalRegisteredPath("inference ledger", inferenceLedgerPath);
256
- if (!inferenceLedgerPath.endsWith(".jsonl"))
257
- fail(`Grok inference ledger must be a .jsonl path: ${inferenceLedgerPath}`);
258
- const subject = new Set([DAIMON_GROK_TURN_USAGE_LEDGER.filePath, path.posix.join(DAIMON_GROK_TURN_USAGE_LEDGER.directoryPath, "requests.jsonl"),
259
- ...registrations.flatMap((entry) => [entry.usageLedgerPath, path.posix.join(path.posix.dirname(entry.usageLedgerPath), "requests.jsonl")])]);
260
- if (subject.has(inferenceLedgerPath))
261
- fail(`Grok inference ledger ${inferenceLedgerPath} is a subject usage ledger; judge spend must never reach the wake fuse`);
262
- return inferenceLedgerPath;
263
- };
264
249
  /** `service.json` v2, exactly the shape Daimon's strict `parseEngineBrokerServiceConfig` accepts. */
265
- export const renderDaimonGrokServiceConfig = (registrations, options = {}) => ({
266
- version: DAIMON_GROK_ENGINE_BROKER.serviceConfigVersions[options.version === "v3" ? 2 : 1],
250
+ export const renderDaimonGrokServiceConfig = (registrations) => ({
251
+ version: DAIMON_GROK_ENGINE_BROKER.serviceConfigVersions[1],
267
252
  credentialHome: DAIMON_GROK_ENGINE_BROKER.credentialHomePath,
268
- turnStore: resolveDaimonGrokTurnStore(options.turnStore),
269
- ...(options.maxRunRequests === undefined ? {} : { maxRunRequests: options.maxRunRequests }),
270
- ...(options.runRequestStore === undefined ? {} : { runRequestStore: assertCanonicalRegisteredPath("run request store", options.runRequestStore) }),
271
- ...(options.inferenceLedgerPath === undefined ? {} : { inferenceLedgerPath: resolveDaimonGrokInferenceLedger(options.inferenceLedgerPath, registrations) }),
253
+ turnStore: DAIMON_GROK_ENGINE_BROKER.turnStorePath,
272
254
  registrations: registrations.map((entry) => ({
273
255
  agentId: entry.agentId,
274
256
  slot: entry.slot,
@@ -277,15 +259,9 @@ export const renderDaimonGrokServiceConfig = (registrations, options = {}) => ({
277
259
  profilePath: entry.profilePath,
278
260
  eventsPath: entry.eventsPath,
279
261
  profileSha256: entry.profileSha256,
280
- ...(options.version === "v3" ? {} : { usageLedgerPath: entry.usageLedgerPath,
281
- limits: { ...(entry.limits ?? DAIMON_GROK_ENGINE_BROKER.turnLimits.v1Defaults) },
282
- model: { id: entry.model, reasoningEffort: entry.reasoningEffort },
283
- ...(entry.skills ? { skillsSha256: entry.skills.sha256 } : {}) })
284
- })),
285
- ...(options.version === "v3" ? { slotPolicies: registrations.map(entry => ({
286
- slot: entry.slot, usageLedgerPath: entry.usageLedgerPath,
287
- limits: { ...(entry.limits ?? DAIMON_GROK_ENGINE_BROKER.turnLimits.v1Defaults) },
288
- model: { id: entry.model, reasoningEffort: entry.reasoningEffort },
289
- ...(entry.skills ? { skillsSha256: entry.skills.sha256 } : {})
290
- })) } : {})
262
+ usageLedgerPath: entry.usageLedgerPath,
263
+ limits: { ...(entry.limits ?? DAIMON_GROK_ENGINE_BROKER.turnLimits.v1Defaults) },
264
+ model: { id: entry.model, reasoningEffort: entry.reasoningEffort },
265
+ ...(entry.skills ? { skillsSha256: entry.skills.sha256 } : {})
266
+ }))
291
267
  });
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Root-side supervision for the privileged startup children (engine broker,
3
+ * relay, launcher and auth gateway): bounded readiness waits plus one EXIT
4
+ * trap that terminates every started child if startup fails.
5
+ */
6
+ export declare const DAIMON_BROKER_STARTUP_TIMEOUT_SECONDS = 60;
7
+ export declare const renderDaimonBrokerSocketWait: (timeoutSeconds?: number, pollSeconds?: number) => string[];
8
+ export declare const renderDaimonStartupSupervision: () => string[];
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Root-side supervision for the privileged startup children (engine broker,
3
+ * relay, launcher and auth gateway): bounded readiness waits plus one EXIT
4
+ * trap that terminates every started child if startup fails.
5
+ */
6
+ export const DAIMON_BROKER_STARTUP_TIMEOUT_SECONDS = 60;
7
+ export const renderDaimonBrokerSocketWait = (timeoutSeconds = DAIMON_BROKER_STARTUP_TIMEOUT_SECONDS, pollSeconds = 0.1) => [
8
+ `broker_startup_timeout_seconds=${timeoutSeconds}`,
9
+ `broker_startup_poll_seconds=${pollSeconds}`,
10
+ "broker_startup_started=$SECONDS",
11
+ "broker_process_status_root=/proc",
12
+ "wait_for_broker_socket() {",
13
+ " socket=$1; child=$2; label=$3",
14
+ " while [ ! -S \"$socket\" ]; do",
15
+ " if ! kill -0 \"$child\" 2>/dev/null; then set +e; wait \"$child\"; child_status=$?; set -e; echo \"$label exited before readiness (status $child_status)\" >&2; return 1; fi",
16
+ " if [ $((SECONDS - broker_startup_started)) -ge \"$broker_startup_timeout_seconds\" ]; then echo \"$label readiness timed out after ${broker_startup_timeout_seconds}s\" >&2; return 1; fi",
17
+ " sleep \"$broker_startup_poll_seconds\"",
18
+ " done",
19
+ "}",
20
+ "wait_for_broker_identity() {",
21
+ " child=$1; expected_uid=$2; expected_caps=$3; label=$4",
22
+ " while kill -0 \"$child\" 2>/dev/null; do",
23
+ " status_path=$broker_process_status_root/$child/status",
24
+ " observed_uid=$(awk '/^Uid:/{print $2}' \"$status_path\" 2>/dev/null || true)",
25
+ " observed_caps=$(awk '/^CapBnd:/{print $2}' \"$status_path\" 2>/dev/null || true)",
26
+ " if [ \"$observed_uid\" = \"$expected_uid\" ] && [ \"$observed_caps\" = \"$expected_caps\" ]; then return 0; fi",
27
+ " if [ $((SECONDS - broker_startup_started)) -ge \"$broker_startup_timeout_seconds\" ]; then echo \"$label identity readiness timed out after ${broker_startup_timeout_seconds}s\" >&2; return 1; fi",
28
+ " sleep \"$broker_startup_poll_seconds\"",
29
+ " done",
30
+ " set +e; wait \"$child\"; child_status=$?; set -e; echo \"$label exited before identity readiness (status $child_status)\" >&2; return 1",
31
+ "}"
32
+ ];
33
+ export const renderDaimonStartupSupervision = () => [
34
+ ...renderDaimonBrokerSocketWait(),
35
+ "startup_children=()",
36
+ "cleanup_broker_startup() { status=$?; trap - EXIT; for child in \"${startup_children[@]}\"; do kill -TERM \"$child\" 2>/dev/null || true; wait \"$child\" 2>/dev/null || true; done; return \"$status\"; }",
37
+ "trap cleanup_broker_startup EXIT",
38
+ "trap 'exit 143' TERM INT HUP"
39
+ ];
@@ -2,12 +2,11 @@ import type { RuntimeTargetPlan } from "./containerArtifactsTypes.js";
2
2
  import type { EntrypointOptions } from "./containerEntrypointRender.js";
3
3
  import { type BackedMountRequirement } from "./containerBackedMountRender.js";
4
4
  export { resolveDaimonVolumeIdentityFiles } from "./containerDaimonOwnershipGuardRender.js";
5
+ export { DAIMON_BROKER_STARTUP_TIMEOUT_SECONDS, renderDaimonBrokerSocketWait } from "./containerDaimonStartupSupervision.js";
5
6
  export declare const DAIMON_AUTHORIZED_UID_ENV = "SPAWNFILE_DAIMON_AUTHORIZED_UID";
6
7
  export declare const DAIMON_RUNTIME_UID = 2000;
7
8
  export declare const DAIMON_UID_ENTRYPOINT_PATH = "/opt/spawnfile/daimon-uid-entrypoint.sh";
8
9
  export declare const DAIMON_RUNTIME_HOMES_DIRECTORY = "runtime-homes";
9
- export declare const DAIMON_BROKER_STARTUP_TIMEOUT_SECONDS = 60;
10
- export declare const renderDaimonBrokerSocketWait: (timeoutSeconds?: number, pollSeconds?: number) => string[];
11
10
  export declare const resolveDaimonUidEntrypointStateRoots: (runtimePlans: RuntimeTargetPlan[]) => string[];
12
11
  export interface DaimonUidEntrypointOwnershipPlan {
13
12
  creatablePrivateDirectories: Array<{
@@ -1,4 +1,4 @@
1
- import { DAIMON_ENGINE_DESCRIPTORS, DAIMON_SECRET_SERVICE_ENGINE_ID, getDaimonEngineDescriptor } from "../runtime/daimon/index.js";
1
+ import { DAIMON_SECRET_SERVICE_ENGINE_ID, getDaimonEngineDescriptor } from "../runtime/daimon/index.js";
2
2
  import path from "node:path";
3
3
  import { DAIMON_RUNTIME_ACCEPTANCE_STORE_MOUNT_ID, DAIMON_WAKE_FUSE_DIRECTORY } from "../runtime/daimon/config.js";
4
4
  import { DAIMON_GROK_TURN_USAGE_LEDGER } from "../runtime/daimon/contractManifest.js";
@@ -9,37 +9,13 @@ import { renderDaimonOwnershipProgram, resolveDaimonVolumeIdentityFiles } from "
9
9
  export { resolveDaimonVolumeIdentityFiles } from "./containerDaimonOwnershipGuardRender.js";
10
10
  import { renderDaimonGrokHostPreflight } from "./containerDaimonGrokWorkerProvisioning.js";
11
11
  import { DAIMON_BROKER_EXECUTABLE, DAIMON_BROKER_BACKEND_SOCKET, DAIMON_BROKER_LAUNCHER_SOCKET, DAIMON_BROKER_REALM, DAIMON_BROKER_SOCKET, DAIMON_BROKER_TMPDIR, DAIMON_BROKER_UID, DAIMON_ORGANIZATION_UID, renderDaimonBrokerProvisioning, renderDaimonUsageLedgerProvisioning, resolveDaimonGrokRegistrations } from "./containerDaimonBrokerRender.js";
12
+ import { renderDaimonStartupSupervision } from "./containerDaimonStartupSupervision.js";
13
+ import { DAIMON_GATEWAY_UID, renderDaimonGatewayLaunch, renderDaimonGatewayProvisioning, renderDaimonGatewayRuntimeEnv, resolveDaimonGatewayRealmPaths } from "./containerDaimonGatewayRender.js";
14
+ export { DAIMON_BROKER_STARTUP_TIMEOUT_SECONDS, renderDaimonBrokerSocketWait } from "./containerDaimonStartupSupervision.js";
12
15
  export const DAIMON_AUTHORIZED_UID_ENV = "SPAWNFILE_DAIMON_AUTHORIZED_UID";
13
16
  export const DAIMON_RUNTIME_UID = DAIMON_ORGANIZATION_UID;
14
17
  export const DAIMON_UID_ENTRYPOINT_PATH = "/opt/spawnfile/daimon-uid-entrypoint.sh";
15
18
  export const DAIMON_RUNTIME_HOMES_DIRECTORY = "runtime-homes";
16
- export const DAIMON_BROKER_STARTUP_TIMEOUT_SECONDS = 60;
17
- export const renderDaimonBrokerSocketWait = (timeoutSeconds = DAIMON_BROKER_STARTUP_TIMEOUT_SECONDS, pollSeconds = 0.1) => [
18
- `broker_startup_timeout_seconds=${timeoutSeconds}`,
19
- `broker_startup_poll_seconds=${pollSeconds}`,
20
- "broker_startup_started=$SECONDS",
21
- "broker_process_status_root=/proc",
22
- "wait_for_broker_socket() {",
23
- " socket=$1; child=$2; label=$3",
24
- " while [ ! -S \"$socket\" ]; do",
25
- " if ! kill -0 \"$child\" 2>/dev/null; then set +e; wait \"$child\"; child_status=$?; set -e; echo \"$label exited before readiness (status $child_status)\" >&2; return 1; fi",
26
- " if [ $((SECONDS - broker_startup_started)) -ge \"$broker_startup_timeout_seconds\" ]; then echo \"$label readiness timed out after ${broker_startup_timeout_seconds}s\" >&2; return 1; fi",
27
- " sleep \"$broker_startup_poll_seconds\"",
28
- " done",
29
- "}",
30
- "wait_for_broker_identity() {",
31
- " child=$1; expected_uid=$2; expected_caps=$3; label=$4",
32
- " while kill -0 \"$child\" 2>/dev/null; do",
33
- " status_path=$broker_process_status_root/$child/status",
34
- " observed_uid=$(awk '/^Uid:/{print $2}' \"$status_path\" 2>/dev/null || true)",
35
- " observed_caps=$(awk '/^CapBnd:/{print $2}' \"$status_path\" 2>/dev/null || true)",
36
- " if [ \"$observed_uid\" = \"$expected_uid\" ] && [ \"$observed_caps\" = \"$expected_caps\" ]; then return 0; fi",
37
- " if [ $((SECONDS - broker_startup_started)) -ge \"$broker_startup_timeout_seconds\" ]; then echo \"$label identity readiness timed out after ${broker_startup_timeout_seconds}s\" >&2; return 1; fi",
38
- " sleep \"$broker_startup_poll_seconds\"",
39
- " done",
40
- " set +e; wait \"$child\"; child_status=$?; set -e; echo \"$label exited before identity readiness (status $child_status)\" >&2; return 1",
41
- "}"
42
- ];
43
19
  const SPAWNFILE_PRIVATE_STATE_ROOT = "/var/lib/spawnfile";
44
20
  /**
45
21
  * `/var/lib/spawnfile/daimon` hosts several independently-owned children —
@@ -96,7 +72,8 @@ const writableStateRoots = (runtimePlans, persistentMountPaths) => [
96
72
  ].filter((root) => root.startsWith("/")
97
73
  && root !== DAIMON_BROKER_REALM
98
74
  && root !== DAIMON_GROK_TURN_USAGE_LEDGER.directoryPath
99
- && root !== DAIMON_WAKE_FUSE_DIRECTORY).sort();
75
+ && root !== DAIMON_WAKE_FUSE_DIRECTORY
76
+ && !resolveDaimonGatewayRealmPaths(runtimePlans).includes(root)).sort();
100
77
  const privateDirectoriesThrough = (target) => {
101
78
  if (target !== SPAWNFILE_PRIVATE_STATE_ROOT &&
102
79
  !target.startsWith(`${SPAWNFILE_PRIVATE_STATE_ROOT}/`))
@@ -114,8 +91,6 @@ const privateModeDirectories = (runtimePlans, moltnet) => [
114
91
  .flatMap((plan) => plan.persistentMounts ?? [])
115
92
  .filter((mount) => mount.id === DAIMON_RUNTIME_ACCEPTANCE_STORE_MOUNT_ID
116
93
  || mount.id === DAIMON_AGY_SUBSCRIPTION_REALM_MOUNT_ID
117
- || Object.values(DAIMON_ENGINE_DESCRIPTORS).some(({ id, auth }) => auth.staging === "portable-realm"
118
- && mount.id === `daimon-${id}-subscription-realm` && mount.mount_path === auth.realm.durableMountPath)
119
94
  || mount.id.startsWith(DAIMON_AGY_RUNTIME_HOME_MOUNT_ID_PREFIX)
120
95
  || mount.id.startsWith(DAIMON_RECORDING_MOUNT_ID_PREFIX)
121
96
  || mount.id.startsWith(DAIMON_PORTABLE_ENGINE_HOME_MOUNT_ID_PREFIX))
@@ -206,6 +181,9 @@ export const renderDaimonUidEntrypoint = (runtimePlans, persistentMountPaths = [
206
181
  .filter((runtimeRoot) => runtimeRoot.startsWith("/opt/spawnfile/runtime-installs/")))
207
182
  ].sort();
208
183
  const volumeIdentityFiles = resolveDaimonVolumeIdentityFiles(runtimePlans);
184
+ const grokRegistrations = resolveDaimonGrokRegistrations(runtimePlans);
185
+ const gateway = resolveDaimonGatewayRealmPaths(runtimePlans).length > 0;
186
+ const gatewayPid = gateway ? '"${gateway_pid:-}" ' : "";
209
187
  return [
210
188
  "#!/usr/bin/env bash",
211
189
  "set -euo pipefail",
@@ -222,13 +200,15 @@ export const renderDaimonUidEntrypoint = (runtimePlans, persistentMountPaths = [
222
200
  ...createBackedMountGuard(persistentMounts),
223
201
  `state_roots=(${ownershipPlan.stateRoots.map(quote).join(" ")})`,
224
202
  "node - \"$uid\" \"${state_roots[@]}\" <<'SPAWNFILE_DAIMON_OWNERSHIP'",
225
- renderDaimonOwnershipProgram(opaqueTargets, ownershipPlan.opaqueDescendantRoots, immutableRuntimeRoots, volumeIdentityFiles, ownershipPlan.privateDirectories, ownershipPlan.privateFiles, ownershipPlan.privateModeDirectories, ownershipPlan.creatablePrivateDirectories, resolveDaimonGrokRegistrations(runtimePlans).length > 0),
203
+ renderDaimonOwnershipProgram(opaqueTargets, ownershipPlan.opaqueDescendantRoots, immutableRuntimeRoots, volumeIdentityFiles, ownershipPlan.privateDirectories, ownershipPlan.privateFiles, ownershipPlan.privateModeDirectories, ownershipPlan.creatablePrivateDirectories, grokRegistrations.length > 0),
226
204
  "SPAWNFILE_DAIMON_OWNERSHIP",
227
- `for fixed_uid in ${DAIMON_ORGANIZATION_UID} ${DAIMON_BROKER_UID} ${resolveDaimonGrokRegistrations(runtimePlans).map((entry) => entry.uid).join(" ")}; do`,
205
+ `for fixed_uid in ${DAIMON_ORGANIZATION_UID} ${DAIMON_BROKER_UID}${gateway ? ` ${DAIMON_GATEWAY_UID}` : ""} ${grokRegistrations.map((entry) => entry.uid).join(" ")}; do`,
228
206
  ' if ! getent group "$fixed_uid" >/dev/null; then groupadd -K GID_MIN=1 --gid "$fixed_uid" "daimon-$fixed_uid"; fi',
229
207
  ' if ! getent passwd "$fixed_uid" >/dev/null; then useradd -K UID_MIN=1 --no-create-home --no-log-init --uid "$fixed_uid" --gid "$fixed_uid" --home-dir /nonexistent --shell /usr/sbin/nologin "daimon-$fixed_uid"; fi',
230
208
  "done",
231
- ...(resolveDaimonGrokRegistrations(runtimePlans).length === 0 ? [] : renderDaimonGrokHostPreflight()),
209
+ ...(grokRegistrations.length === 0 ? [] : renderDaimonGrokHostPreflight()),
210
+ // Before broker provisioning: a Grok worker's deny list masks the gateway's paths, which must exist.
211
+ ...renderDaimonGatewayProvisioning(runtimePlans),
232
212
  ...renderDaimonBrokerProvisioning(runtimePlans),
233
213
  'if ! getent passwd "$uid" >/dev/null; then',
234
214
  ' runtime_identity="daimon-$uid"',
@@ -242,23 +222,21 @@ export const renderDaimonUidEntrypoint = (runtimePlans, persistentMountPaths = [
242
222
  // organization-uid runtime process below, not the (Grok-only) broker, so
243
223
  // this cannot be gated on `resolveDaimonGrokRegistrations`.
244
224
  ...renderDaimonUsageLedgerProvisioning(),
245
- ...(resolveDaimonGrokRegistrations(runtimePlans).length === 0 ? [] : [
246
- ...renderDaimonBrokerSocketWait(),
247
- "startup_children=()",
248
- "cleanup_broker_startup() { status=$?; trap - EXIT; for child in \"${startup_children[@]}\"; do kill -TERM \"$child\" 2>/dev/null || true; wait \"$child\" 2>/dev/null || true; done; return \"$status\"; }",
249
- "trap cleanup_broker_startup EXIT",
250
- "trap 'exit 143' TERM INT HUP",
225
+ ...(grokRegistrations.length === 0 && !gateway ? [] : renderDaimonStartupSupervision()),
226
+ // The gateway starts first: the broker's readiness probes it for its Grok key.
227
+ ...renderDaimonGatewayLaunch(runtimePlans, daimonPlan?.runtimeRoot ?? ""),
228
+ ...(grokRegistrations.length === 0 ? [] : [
251
229
  `install -d -o ${DAIMON_BROKER_UID} -g ${DAIMON_BROKER_UID} -m 0700 ${quote(DAIMON_BROKER_REALM)}`,
252
230
  `if [ -e ${quote(`${DAIMON_BROKER_REALM}/auth.json`)} ]; then test -f ${quote(`${DAIMON_BROKER_REALM}/auth.json`)} && test ! -L ${quote(`${DAIMON_BROKER_REALM}/auth.json`)}; chown 0:0 ${quote(`${DAIMON_BROKER_REALM}/auth.json`)}; chmod 0600 ${quote(`${DAIMON_BROKER_REALM}/auth.json`)}; chown ${DAIMON_BROKER_UID}:${DAIMON_BROKER_UID} ${quote(`${DAIMON_BROKER_REALM}/auth.json`)}; fi`,
253
231
  `setpriv --clear-groups --reuid ${DAIMON_BROKER_UID} --regid ${DAIMON_BROKER_UID} --inh-caps=-all --ambient-caps=-all --bounding-set=-all -- bash -ceu 'probe=${DAIMON_BROKER_REALM}/.daimon-ancestry-probe; umask 077; : > "$probe"; rm "$probe"'`,
254
232
  `setpriv --clear-groups --reuid ${DAIMON_ORGANIZATION_UID} --regid ${DAIMON_ORGANIZATION_UID} --inh-caps=-all --ambient-caps=-all --bounding-set=-all -- bash -ceu '! test -r ${DAIMON_BROKER_REALM}'`,
255
- ...resolveDaimonGrokRegistrations(runtimePlans).map((entry) => `setpriv --clear-groups --reuid ${entry.uid} --regid ${entry.uid} --inh-caps=-all --ambient-caps=-all --bounding-set=-all -- bash -ceu '! test -r ${DAIMON_BROKER_REALM}'`),
233
+ ...grokRegistrations.map((entry) => `setpriv --clear-groups --reuid ${entry.uid} --regid ${entry.uid} --inh-caps=-all --ambient-caps=-all --bounding-set=-all -- bash -ceu '! test -r ${DAIMON_BROKER_REALM}'`),
256
234
  `setpriv --inh-caps=-all --ambient-caps=-all --bounding-set=-all,+chown,+setuid,+setgid -- ${quote(DAIMON_BROKER_EXECUTABLE)} &`,
257
235
  "launcher_pid=$!",
258
236
  "startup_children+=(\"$launcher_pid\")",
259
237
  `wait_for_broker_socket ${quote(DAIMON_BROKER_LAUNCHER_SOCKET)} "$launcher_pid" "engine broker launcher"`,
260
238
  `wait_for_broker_identity "$launcher_pid" 0 00000000000000c1 "engine broker launcher"`,
261
- `setpriv --clear-groups --reuid ${DAIMON_BROKER_UID} --regid ${DAIMON_BROKER_UID} --inh-caps=-all --ambient-caps=-all --bounding-set=-all -- env TMPDIR=${quote(DAIMON_BROKER_TMPDIR)} ${quote(path.posix.join(daimonPlan?.runtimeRoot ?? "", "bin/daimon-runtime"))} engine-broker serve &`,
239
+ `setpriv --clear-groups --reuid ${DAIMON_BROKER_UID} --regid ${DAIMON_BROKER_UID} --inh-caps=-all --ambient-caps=-all --bounding-set=-all -- env TMPDIR=${quote(DAIMON_BROKER_TMPDIR)} ${renderDaimonGatewayRuntimeEnv(runtimePlans)}${quote(path.posix.join(daimonPlan?.runtimeRoot ?? "", "bin/daimon-runtime"))} engine-broker serve &`,
262
240
  "broker_pid=$!",
263
241
  "startup_children+=(\"$broker_pid\")",
264
242
  `wait_for_broker_socket ${quote(DAIMON_BROKER_BACKEND_SOCKET)} "$broker_pid" "engine broker backend"`,
@@ -271,23 +249,27 @@ export const renderDaimonUidEntrypoint = (runtimePlans, persistentMountPaths = [
271
249
  `[ -S ${quote(DAIMON_BROKER_SOCKET)} ] || exit 1`,
272
250
  "for child_spec in \"$launcher_pid:0:00000000000000c1\" \"$relay_pid:2100:0000000000000000\" \"$broker_pid:2100:0000000000000000\"; do child=${child_spec%%:*}; rest=${child_spec#*:}; expected_uid=${rest%%:*}; expected_caps=${rest##*:}; observed_uid=$(awk '/^Uid:/{print $2}' \"/proc/$child/status\"); cap_bnd=$(awk '/^CapBnd:/{print $2}' \"/proc/$child/status\"); [ \"$observed_uid\" = \"$expected_uid\" ] && [ \"$cap_bnd\" = \"$expected_caps\" ] || exit 1; done"
273
251
  ]),
274
- "setpriv --clear-groups --reuid \"$uid\" --regid \"$gid\" --inh-caps=-all --ambient-caps=-all --bounding-set=-all -- bash -ceu '",
252
+ `${renderDaimonGatewayRuntimeEnv(runtimePlans)}setpriv --clear-groups --reuid "$uid" --regid "$gid" --inh-caps=-all --ambient-caps=-all --bounding-set=-all -- bash -ceu '`,
275
253
  " if [ \"$EUID\" -eq 0 ]; then exit 1; fi",
276
254
  " test \"$(sed -n \"s/^CapEff:[[:space:]]*//p\" /proc/self/status)\" = 0000000000000000",
277
255
  " exec \"$@\"",
278
- `' bash "\${runtime_command[@]}" &`,
256
+ // Explicit stdin: a non-interactive shell gives `&` jobs /dev/null, which would
257
+ // starve the interactive `auth <engine> login` of the operator's terminal.
258
+ `' bash "\${runtime_command[@]}" <&0 &`,
279
259
  "runtime_pid=$!",
280
260
  "trap - EXIT TERM INT HUP",
281
261
  "stopping=0",
282
- "stop_children() { stopping=1; kill -TERM \"$runtime_pid\" 2>/dev/null || true; for child in \"${relay_pid:-}\" \"${broker_pid:-}\" \"${launcher_pid:-}\"; do [ -z \"$child\" ] || kill -TERM \"$child\" 2>/dev/null || true; done; }",
262
+ `stop_children() { stopping=1; kill -TERM "$runtime_pid" 2>/dev/null || true; for child in ${gatewayPid}"\${relay_pid:-}" "\${broker_pid:-}" "\${launcher_pid:-}"; do [ -z "$child" ] || kill -TERM "$child" 2>/dev/null || true; done; }`,
283
263
  "trap stop_children TERM INT HUP",
284
264
  'watch_pids=("$runtime_pid")',
285
- ...(resolveDaimonGrokRegistrations(runtimePlans).length === 0 ? [] : ['watch_pids+=("$relay_pid" "$broker_pid" "$launcher_pid")']),
265
+ ...(grokRegistrations.length === 0 ? [] : ['watch_pids+=("$relay_pid" "$broker_pid" "$launcher_pid")']),
266
+ // An external gateway (training sidecar) leaves no local gateway to watch.
267
+ ...(gateway ? ['[ -z "${gateway_pid:-}" ] || watch_pids+=("$gateway_pid")'] : []),
286
268
  "finished_pid=",
287
269
  'set +e; wait -n -p finished_pid "${watch_pids[@]}"; status=$?; set -e',
288
270
  'if [ "${finished_pid:-}" != "$runtime_pid" ]; then status=1; fi',
289
271
  'kill -TERM "$runtime_pid" 2>/dev/null || true',
290
- "for child in \"${relay_pid:-}\" \"${broker_pid:-}\" \"${launcher_pid:-}\"; do [ -z \"$child\" ] || { kill -TERM \"$child\" 2>/dev/null || true; wait \"$child\" 2>/dev/null || true; }; done",
272
+ `for child in "\${relay_pid:-}" "\${broker_pid:-}" "\${launcher_pid:-}"${gatewayPid ? ` ${gatewayPid.trim()}` : ""}; do [ -z "$child" ] || { kill -TERM "$child" 2>/dev/null || true; wait "$child" 2>/dev/null || true; }; done`,
291
273
  'wait "$runtime_pid" 2>/dev/null || true',
292
274
  "exit \"$status\""
293
275
  ].join("\n") + "\n";
@@ -22,7 +22,7 @@ export const createRuntimeReadinessWait = (plan, pidVariable) => {
22
22
  ""
23
23
  ];
24
24
  }
25
- if (!["openclaw", "pi"].includes(plan.runtimeName))
25
+ if (!["openclaw"].includes(plan.runtimeName))
26
26
  return [];
27
27
  return [
28
28
  "attempts=0",
@@ -6,7 +6,6 @@ const createMountId = (mountPath) => `memory-${safeSlug(mountPath)}`;
6
6
  const isFileBackedMemoryStore = (bank) => bank.store.kind === "sqlite" || bank.store.kind === "json";
7
7
  const transportFromRuntime = (runtimeName, bank) => {
8
8
  switch (runtimeName) {
9
- case "pi":
10
9
  case "daimon":
11
10
  // Mneme runs in-process for these runtimes (no MCP subprocess), but
12
11
  // whether that in-process runtime is reachable -- and whether it
@@ -1,6 +1,6 @@
1
1
  import { resolveNoopolisRunId } from "../runtime/index.js";
2
2
  import { createExclusiveReattachVolumeName, SpawnfileError } from "../shared/index.js";
3
- import { createMoltnetCausalDirectory, createMoltnetDaimonReceiptStorePath, createMoltnetNetworkStateDirectory, createMoltnetServerConfigPath, createMoltnetOpenTokenDirectory, createMoltnetNativeServerConfig, createMoltnetNodeConfigPath, resolveMoltnetClientAuth, resolveMoltnetStorePersistenceMountPath } from "./moltnetConfigLowering.js";
3
+ import { createMoltnetCausalDirectory, createMoltnetDaimonReceiptStorePath, createMoltnetNetworkStateDirectory, createMoltnetServerConfigPath, createMoltnetOpenTokenDirectory, createMoltnetNativeServerConfig, createMoltnetNodeConfigPath, resolveMoltnetStorePersistenceMountPath } from "./moltnetConfigLowering.js";
4
4
  import { assertNetworkBindingEnvUniqueness } from "./networkBinding.js";
5
5
  import { createMoltnetNodeConfigContent } from "./moltnetNodeConfig.js";
6
6
  import { createPersistentVolumeName, isNetworkHttpEnabled, toContainerRootfsPath } from "./moltnetArtifactPaths.js";
@@ -152,22 +152,6 @@ export const generateMoltnetArtifacts = async (plan, deploymentLineage = "compil
152
152
  throw new SpawnfileError("validation_error", `Duplicate Moltnet node attachment for ${attachment.network}/${attachment.memberId}`);
153
153
  }
154
154
  nodePlanKeys.add(nodePlanKey);
155
- if (agentNode.runtime.name === "pi") {
156
- const clientAuth = resolveMoltnetClientAuth(serverPlan.server, attachment.network, attachment.memberId, node.slug, attachment.auth?.tokenId);
157
- const usesPerAttachmentOpenToken = clientAuth.mode === "open" &&
158
- clientAuth.staticToken !== true &&
159
- Boolean(clientAuth.tokenEnv || clientAuth.tokenPath);
160
- if (usesPerAttachmentOpenToken && clientAuth.tokenPath) {
161
- const mountId = `agent-${node.slug}-moltnet-tokens`;
162
- addPersistentMount({
163
- id: mountId,
164
- lifecycle: "exclusive-reattach",
165
- mountPath: createMoltnetOpenTokenDirectory(node.slug),
166
- reason: `Moltnet open-mode generated agent tokens for ${agentNode.name}`,
167
- volumeName: durableVolumeName(mountId)
168
- });
169
- }
170
- }
171
155
  const nodeConfig = createMoltnetNodeConfigContent({
172
156
  agentNode,
173
157
  attachment: { ...attachment, memberId: attachment.memberId },
@@ -68,7 +68,7 @@ const createAttachmentConfig = (node, artifacts, attachment, agentSlug) => {
68
68
  };
69
69
  };
70
70
  export const resolveMoltnetWorkspaceLayout = (runtimeName, _agentName) => {
71
- if (runtimeName === "daimon" || runtimeName === "pi") {
71
+ if (runtimeName === "daimon") {
72
72
  return {
73
73
  clientConfigPath: `workspace/.moltnet/config.json`,
74
74
  cliRuntime: "codex",
@@ -72,16 +72,6 @@ export const resolveRuntimeConfig = (plan, agentNode, nodeSlug, networkId, moltn
72
72
  token_env: "SPAWNFILE_DAIMON_CONTROL_TOKEN"
73
73
  };
74
74
  }
75
- case "pi": {
76
- const port = getRuntimeAdapter(agentNode.runtime.name).container.port;
77
- if (!port) {
78
- throw new SpawnfileError("compile_error", `Unable to resolve ${agentNode.runtime.name} control port for Moltnet agent ${agentNode.name}`);
79
- }
80
- return {
81
- control_url: `http://127.0.0.1:${port}/agents/${nodeSlug}/wake`,
82
- kind: "pi"
83
- };
84
- }
85
75
  default:
86
76
  throw new SpawnfileError("compile_error", `Moltnet does not know how to attach runtime ${agentNode.runtime.name} directly`);
87
77
  }
@@ -29,6 +29,7 @@ export declare const createDockerRunInvocation: (compileResult: CompileProjectRe
29
29
  name: string;
30
30
  value: string;
31
31
  };
32
+ command?: readonly string[];
32
33
  /** See `RuntimeAuthPreparationInput.containerCredentialUid`. */
33
34
  containerCredentialUid?: number;
34
35
  containerName?: string;
@@ -38,6 +39,8 @@ export declare const createDockerRunInvocation: (compileResult: CompileProjectRe
38
39
  dockerContext?: string;
39
40
  dockerHost?: string;
40
41
  envFilePath?: string;
42
+ interactive?: boolean;
43
+ network?: string;
41
44
  }) => Promise<DockerRunInvocation>;
42
45
  interface ResolvedRunDeploymentOptions {
43
46
  previousRecord?: DeploymentRecord;
@@ -6,6 +6,7 @@ import { ensureDirectory, fileExists, removeDirectory, writeUtf8File } from "../
6
6
  import { appendDockerLabelArgs, createDockerDeploymentLabels, createDockerDeploymentUnitId, createDockerProjectLabel, dockerContextNameForTarget, dockerHostValueForTarget, normalizeDeploymentName, readDeploymentRecordFromOutput, resolveDeploymentRecordPath, verifyDockerDeploymentTarget, writeDockerDeploymentRecordForRun } from "../deployment/index.js";
7
7
  import { DAIMON_DOCKER_RUNTIME_SECURITY_ARGS, DEFAULT_OUTPUT_DIRECTORY, SpawnfileError } from "../shared/index.js";
8
8
  import { ensureNoopolisRunId, resolveNoopolisRunId } from "../runtime/index.js";
9
+ import { DAIMON_GATEWAY_URL_ENV, daimonProfileRealmVolume, isDaimonGatewayRealmMountId } from "../runtime/daimon/index.js";
9
10
  import { compileProject } from "./compileProject.js";
10
11
  import { createDefaultImageTag, resolveDockerBuildArchitecture } from "./buildProject.js";
11
12
  import { slugify } from "./helpers.js";
@@ -59,9 +60,11 @@ export const createDockerRunInvocation = async (compileResult, imageTag, options
59
60
  args.push("-d", "--restart", "unless-stopped");
60
61
  }
61
62
  else {
62
- args.push("--rm");
63
+ args.push("--rm", ...(options.interactive ? ["-it"] : []));
63
64
  }
64
65
  args.push("--name", containerName);
66
+ if (options.network)
67
+ args.push("--network", options.network);
65
68
  if (hasDaimon) {
66
69
  args.push(...DAIMON_DOCKER_RUNTIME_SECURITY_ARGS, ...(await resolveDaimonCodexNativeSandboxDockerSecurityOptions(compileResult)));
67
70
  }
@@ -80,7 +83,11 @@ export const createDockerRunInvocation = async (compileResult, imageTag, options
80
83
  // reattached volume that already holds state is untouched by dropping it.
81
84
  // (Target/secrets volumes under src/target/* keep `volume-nocopy`: no
82
85
  // image content backs those paths and they must stay opaque.)
83
- for (const mount of containerReport.persistent_mounts ?? []) {
86
+ // An external auth gateway holds every gatewayed realm (the org mounts none); a profile-held login reattaches its volume.
87
+ const persistentMounts = (containerReport.persistent_mounts ?? [])
88
+ .filter((mount) => !env[DAIMON_GATEWAY_URL_ENV] || !isDaimonGatewayRealmMountId(mount.id))
89
+ .map((mount) => ({ ...mount, volume_name: daimonProfileRealmVolume(mount.id, options.authProfile) ?? mount.volume_name }));
90
+ for (const mount of persistentMounts) {
84
91
  args.push("--mount", `type=volume,source=${mount.volume_name},target=${mount.mount_path}`);
85
92
  }
86
93
  const deploymentLabels = options.detach && deploymentName ? (() => {
@@ -97,7 +104,7 @@ export const createDockerRunInvocation = async (compileResult, imageTag, options
97
104
  args.push("--env-file", envFilePath);
98
105
  args.push(...(await resolveAuthMountArgs(containerReport, options.authProfile ?? null)));
99
106
  args.push(...preparedRuntimeAuth.mountArgs);
100
- args.push(imageTag);
107
+ args.push(imageTag, ...(options.command ?? []));
101
108
  return {
102
109
  args,
103
110
  command: options.dockerCommand ?? "docker",
@@ -109,8 +116,8 @@ export const createDockerRunInvocation = async (compileResult, imageTag, options
109
116
  dockerContext: options.dockerContext ?? null,
110
117
  dockerHost: options.dockerHost ?? null,
111
118
  envFilePath,
112
- ...((containerReport.persistent_mounts ?? []).some((mount) => mount.lifecycle === "exclusive-reattach") ? {
113
- exclusiveReattachVolumes: (containerReport.persistent_mounts ?? [])
119
+ ...(persistentMounts.some((mount) => mount.lifecycle === "exclusive-reattach") ? {
120
+ exclusiveReattachVolumes: persistentMounts
114
121
  .filter((mount) => mount.lifecycle === "exclusive-reattach")
115
122
  .map((mount) => mount.volume_name)
116
123
  .sort()
@@ -46,13 +46,7 @@ const addCoveredModelSecrets = (coveredModelSecrets, instanceId, secretNames) =>
46
46
  }
47
47
  };
48
48
  export const prepareRuntimeAuthMounts = async (outputDirectory, containerReport, authProfile, env, tempRoot, containerCredentialUid) => {
49
- // No early return when `authProfile` is null: an adapter's
50
- // `prepareRuntimeAuth` may still have host-credential staging to do that
51
- // does not depend on an imported Spawnfile auth profile (e.g. the Pi
52
- // adapter mounting the host's `~/.grok`/`~/.codex`/antigravity CLI homes
53
- // for a real-engine org — see `src/runtime/pi/runAuth.ts`). Each adapter is
54
- // responsible for treating a `null` `authProfile` as "no profile-derived
55
- // imports available" rather than failing.
49
+ // Adapters receive null profiles so they can handle runtime-owned credentials.
56
50
  const coveredModelSecrets = new Set();
57
51
  let launchIdentity;
58
52
  const mountArgs = [];
@@ -113,6 +107,7 @@ export const assertDeclaredModelAuthSatisfied = (containerReport, authProfile, c
113
107
  throw new SpawnfileError("validation_error", `Auth profile ${authProfile.name} is missing required auth imports: ${missingImportKinds.join(", ")}`);
114
108
  }
115
109
  };
110
+ const RUNTIME_HOME_IMPORT_KINDS = ["claude-code", "codex"];
116
111
  const getImportMountTargetName = (kind) => kind === "claude-code" ? ".claude" : ".codex";
117
112
  const createGeneratedRuntimeSecret = (secretName, generatedMoltnetSecrets) => {
118
113
  if (secretName === "OPENCLAW_GATEWAY_TOKEN" || secretName === "OPENCLAW_HOOKS_TOKEN") {
@@ -227,23 +222,16 @@ export const resolveAuthMountArgs = async (containerReport, authProfile) => {
227
222
  return [];
228
223
  }
229
224
  const args = [];
230
- // Pi owns its model and CLI-engine auth projection in preparePiRuntimeAuth.
231
- // Mounting the generic imported home onto the same destination would create
232
- // duplicate Docker mount points and bypass the adapter's minimal-file staging.
233
- const piRuntimeHomes = new Set(containerReport.runtime_instances
234
- .filter((instance) => instance.runtime === "pi")
235
- .map((instance) => instance.home_path)
236
- .filter((homePath) => homePath !== null));
237
- const genericRuntimeHomes = containerReport.runtime_homes
238
- .filter((runtimeHome) => !piRuntimeHomes.has(runtimeHome));
239
- for (const [kind, entry] of Object.entries(authProfile.imports)) {
225
+ // Only runtime-home logins are bind-mounted; a Grok import belongs to the auth gateway alone.
226
+ for (const kind of RUNTIME_HOME_IMPORT_KINDS) {
227
+ const entry = authProfile.imports[kind];
240
228
  if (!entry) {
241
229
  continue;
242
230
  }
243
231
  if (!(await fileExists(entry.path))) {
244
232
  throw new SpawnfileError("validation_error", `Imported auth path for ${kind} does not exist: ${entry.path}`);
245
233
  }
246
- for (const runtimeHome of genericRuntimeHomes) {
234
+ for (const runtimeHome of containerReport.runtime_homes) {
247
235
  args.push("-v", `${entry.path}:${path.posix.join(runtimeHome, getImportMountTargetName(kind))}`);
248
236
  }
249
237
  }
@@ -1,7 +1,5 @@
1
1
  import { z } from "zod";
2
2
  export declare const TRAINING_CONTEXT_VERSION: "spawnfile.training-context.v1";
3
- export declare const TRAINING_EXECUTION_CAPABILITY_LABEL = "com.spawnfile.training.execution";
4
- export declare const TRAINING_EXECUTION_VERSION = "spawnfile.training-execution.v1";
5
3
  export declare const trainingSourceSchema: z.ZodObject<{
6
4
  sourcePath: z.ZodString;
7
5
  destinationPath: z.ZodString;
@@ -1,7 +1,5 @@
1
1
  import { z } from "zod";
2
2
  export const TRAINING_CONTEXT_VERSION = "spawnfile.training-context.v1";
3
- export const TRAINING_EXECUTION_CAPABILITY_LABEL = "com.spawnfile.training.execution";
4
- export const TRAINING_EXECUTION_VERSION = "spawnfile.training-execution.v1";
5
3
  const digest = z.string().regex(/^sha256:[a-f0-9]{64}$/u);
6
4
  const absolutePath = z.string().min(1).regex(/^(?:\/|[A-Za-z]:[\\/])/u);
7
5
  const relativePath = z.string().min(1).regex(/^(?!\/)(?!.*(?:^|\/)\.\.(?:\/|$))[^\\]+$/u);