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
@@ -1,113 +0,0 @@
1
- import path from "node:path";
2
- import { SpawnfileError } from "../../../shared/index.js";
3
- import { DAIMON_GROK_BROKER_MODELS, DAIMON_GROK_BROKER_REASONING_EFFORTS, DAIMON_GROK_ENGINE_BROKER } from "../../../runtime/daimon/contractManifest.js";
4
- import { DAIMON_GROK_WORKER_HOME_DIRECTORY, daimonGrokWorkerSandboxProfileSha256, renderDaimonGrokWorkerSandboxProfile, resolveDaimonGrokClockedWorkerConfig } from "../../../runtime/daimon/grokWorkerContract.js";
5
- import { resolveDaimonGrokWorkerSkills } from "../../../runtime/daimon/grokWorkerSkills.js";
6
- import { DAIMON_GROK_BASE_PROFILE_GRANTS, assertCanonicalRegisteredPath } from "../../containerDaimonGrokWorkerRender.js";
7
- import { trainingSlotPaths, trainingEvaluatorPaths, TRAINING_BOOTSTRAP_MOUNT, TRAINING_REALM_MOUNT, TRAINING_DEFERRED_DENY_PATHS } from "./paths.js";
8
- const fail = (message) => {
9
- throw new SpawnfileError("compile_error", message);
10
- };
11
- const within = (candidate, root) => candidate === root || candidate.startsWith(`${root}/`);
12
- /**
13
- * The one training slot's deny list: Daimon's own protected set for a
14
- * single-agent organization (Grok bootstrap, realm, and the slot state root that
15
- * holds the wake-acceptance store) plus everything this container provisions that the subject must not read —
16
- * the evaluator roots, the caller's protected `/run/spawnfile-training` paths, the broker
17
- * control and registration roots, the grant home root, the inference ledger,
18
- * the per-slot ledger, turn store and supervisor socket directory.
19
- *
20
- * The same two refusals the production render enforces apply here: an entry
21
- * that equals or contains a Grok 1.0.34 base-profile grant makes Grok refuse
22
- * the profile outright, and masks cannot nest, so an entry covered by another
23
- * entry is a provisioning bug rather than something to silently drop.
24
- */
25
- export const resolveTrainingGrokDenyPaths = (added = undefined, slot = 0, slots = 1) => {
26
- const p = trainingSlotPaths(slot);
27
- const required = trainingEvaluatorPaths(slot, slots).map(entry => entry.path);
28
- // The wake-acceptance store is masked through `p.state`, never directly: Grok 1.0.34
29
- // materializes every deny target inside bubblewrap AS THE WORKER UID, and the store's parent is
30
- // `2000:2000 0700`, so the store itself is unplaceable and would make Grok refuse the whole profile
31
- // (`.runtime/grok-deny-placement/EVIDENCE.md`). The state root covers it and nothing else lives there.
32
- const daimonOwn = [TRAINING_BOOTSTRAP_MOUNT, TRAINING_REALM_MOUNT, p.state];
33
- const grokHome = path.posix.join(p.workerHome, DAIMON_GROK_WORKER_HOME_DIRECTORY);
34
- const grants = [
35
- ...DAIMON_GROK_BASE_PROFILE_GRANTS, p.workspace, grokHome,
36
- path.posix.join(grokHome, "sessions"), path.posix.join(p.workerHome, "tmp")
37
- ];
38
- const candidates = [...new Set([...daimonOwn, ...required, ...(added ?? [])])].sort();
39
- for (const entry of candidates) {
40
- assertCanonicalRegisteredPath("deny path", entry);
41
- const grant = grants.find((candidate) => within(candidate, entry));
42
- if (grant)
43
- fail(`Training Grok deny path ${entry} equals or contains the base profile grant ${grant}; Grok refuses such a profile`);
44
- if (within(p.workspace, entry) || within(p.workerHome, entry) || within(p.runtimeHome, entry)) {
45
- fail(`Training Grok deny path ${entry} would hide the subject's own workspace, home, or runtime home`);
46
- }
47
- if ([p.clockFile, DAIMON_GROK_ENGINE_BROKER.worker.taskClock.preloadPath,
48
- "/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1", "/usr/lib/aarch64-linux-gnu/faketime/libfaketime.so.1"].some(file => within(file, entry))) {
49
- fail(`Training Grok deny path ${entry} would hide the subject's task clock`);
50
- }
51
- const ancestor = candidates.find((other) => other !== entry && within(entry, other));
52
- if (ancestor)
53
- fail(`Training Grok deny path ${ancestor} would cover ${entry}; masks cannot nest`);
54
- }
55
- return candidates;
56
- };
57
- /**
58
- * The single brokered Grok registration a training container runs, at the
59
- * fixed container paths in `paths.ts`. Unlike production it points
60
- * `usageLedgerPath` at the per-slot ledger, because each trial's spend must be
61
- * separable and a recycle wipes it; the container-wide ledger and wake fuse do
62
- * not exist here.
63
- */
64
- export const resolveTrainingGrokRegistration = (input) => {
65
- const p = trainingSlotPaths(input.slot ?? 0);
66
- if (!input.agentId.trim())
67
- fail("Training Grok slot requires an agent id");
68
- if (!DAIMON_GROK_BROKER_MODELS.includes(input.model)
69
- || !DAIMON_GROK_BROKER_REASONING_EFFORTS.includes(input.reasoningEffort)) {
70
- fail(`Training Grok slot has no declared broker model and reasoning effort: ${input.agentId}`);
71
- }
72
- const home = assertCanonicalRegisteredPath("home", p.workerHome);
73
- const grokHome = path.posix.join(home, DAIMON_GROK_WORKER_HOME_DIRECTORY);
74
- const config = resolveDaimonGrokClockedWorkerConfig(input.model, input.reasoningEffort, p.slot);
75
- const denyPaths = resolveTrainingGrokDenyPaths(input.denyPaths, p.slot, input.slots ?? 1);
76
- const profile = renderDaimonGrokWorkerSandboxProfile(denyPaths);
77
- const eventsPath = path.posix.join(grokHome, DAIMON_GROK_ENGINE_BROKER.worker.home.sandboxEvents.relativePath);
78
- const profilePath = path.posix.join(grokHome, "sandbox.toml");
79
- for (const [label, value] of [["GROK_HOME", grokHome], ["profile", profilePath], ["events", eventsPath],
80
- ["workspace", p.workspace], ["runtime home", p.runtimeHome],
81
- ["usage ledger", p.usageLedger]])
82
- assertCanonicalRegisteredPath(label, value);
83
- const skills = resolveDaimonGrokWorkerSkills(input.skills);
84
- return {
85
- ...(skills ? { skills } : {}),
86
- agentId: input.agentId,
87
- config: config.bytes,
88
- configVariant: "clocked",
89
- ...(input.limits === undefined ? {} : { limits: { ...input.limits } }),
90
- configSha256: config.sha256,
91
- deferredDenyPaths: denyPaths.filter((entry) => TRAINING_DEFERRED_DENY_PATHS.includes(entry)),
92
- denyPaths,
93
- eventsPath,
94
- grokHome,
95
- home,
96
- model: input.model,
97
- profile,
98
- profilePath,
99
- profileSha256: daimonGrokWorkerSandboxProfileSha256(denyPaths),
100
- privateTmp: path.posix.join(home, DAIMON_GROK_ENGINE_BROKER.worker.home.privateTmp.relativeToWorkerHome),
101
- reasoningEffort: input.reasoningEffort,
102
- runtimeHome: p.runtimeHome,
103
- // Empty on purpose: training has no persistent mounts at all. Everything a trial writes under the slot
104
- // runtime home is per-slot tmpfs the recycle wipes, and the only thing provisioned inside it is the
105
- // setgid `tool-output/` spill directory, so the traversable `0710` home exposes nothing else.
106
- runtimeHomeMounts: [],
107
- slot: p.slot,
108
- spillDirectory: path.posix.join(p.runtimeHome, DAIMON_GROK_ENGINE_BROKER.worker.home.spillDirectory.relativeToRuntimeHome),
109
- uid: p.workerUid,
110
- usageLedgerPath: p.usageLedger,
111
- workspace: p.workspace
112
- };
113
- };
@@ -1,9 +0,0 @@
1
- /** Root uses the broker's slot reset seam; the broker owns active-turn, worker-reap and clock checks. */
2
- export declare const resetTrainingBrokerSlot: (slot: number, signal: AbortSignal, socketPath?: "/run/daimon-engine-broker/control.sock") => Promise<void>;
3
- /** The native control relay authenticates SO_PEERCRED uid 2000 and rejects root. */
4
- export declare const resetTrainingBrokerSlotAsOrganization: (slot: number, signal: AbortSignal, execute?: (file: string, args: string[], options: {
5
- signal: AbortSignal;
6
- timeout: number;
7
- }) => Promise<{
8
- stdout: string;
9
- }>) => Promise<void>;
@@ -1,71 +0,0 @@
1
- import { execFile } from "node:child_process";
2
- import { promisify } from "node:util";
3
- import { randomUUID } from "node:crypto";
4
- import { createConnection } from "node:net";
5
- import { DAIMON_GROK_ENGINE_BROKER } from "../../../runtime/daimon/contractManifest.js";
6
- import { trainingSlotPaths } from "./paths.js";
7
- /** Root uses the broker's slot reset seam; the broker owns active-turn, worker-reap and clock checks. */
8
- export const resetTrainingBrokerSlot = (slot, signal, socketPath = DAIMON_GROK_ENGINE_BROKER.controlSocketPath) => {
9
- trainingSlotPaths(slot);
10
- signal.throwIfAborted();
11
- const requestId = randomUUID();
12
- const version = DAIMON_GROK_ENGINE_BROKER.controlProtocolVersion;
13
- const payload = Buffer.from(JSON.stringify({ version, kind: "reset_slot", requestId, slot }));
14
- const frame = Buffer.alloc(4 + payload.length);
15
- frame.writeUInt32BE(payload.length);
16
- payload.copy(frame, 4);
17
- return new Promise((resolve, reject) => {
18
- const socket = createConnection(socketPath);
19
- let buffer = Buffer.alloc(0), settled = false;
20
- const finish = (error) => {
21
- if (settled)
22
- return;
23
- settled = true;
24
- signal.removeEventListener("abort", abort);
25
- socket.destroy();
26
- if (error)
27
- reject(error);
28
- else
29
- resolve();
30
- };
31
- const abort = () => finish(new Error("Training broker reset aborted; slot must be quarantined"));
32
- signal.addEventListener("abort", abort, { once: true });
33
- socket.once("error", error => finish(error));
34
- socket.once("close", () => finish(new Error("Training broker reset refused: slot active, unavailable, or reset failed")));
35
- socket.once("connect", () => socket.write(frame));
36
- socket.on("data", chunk => {
37
- buffer = Buffer.concat([buffer, chunk]);
38
- if (buffer.length < 4)
39
- return;
40
- const size = buffer.readUInt32BE(0);
41
- if (size < 2 || size > 4096 || buffer.length > size + 4) {
42
- finish(new Error("Invalid broker reset response frame"));
43
- return;
44
- }
45
- if (buffer.length < size + 4)
46
- return;
47
- try {
48
- const response = JSON.parse(buffer.subarray(4).toString("utf8"));
49
- if (!response || response.version !== version || response.kind !== "slot_reset" || response.requestId !== requestId
50
- || response.slot !== slot || Object.keys(response).length !== 4)
51
- throw Error("Invalid broker reset acknowledgement");
52
- finish();
53
- }
54
- catch (error) {
55
- finish(error instanceof Error ? error : new Error("Invalid broker reset response"));
56
- }
57
- });
58
- });
59
- };
60
- /** The native control relay authenticates SO_PEERCRED uid 2000 and rejects root. */
61
- export const resetTrainingBrokerSlotAsOrganization = async (slot, signal, execute = promisify(execFile)) => {
62
- trainingSlotPaths(slot);
63
- signal.throwIfAborted();
64
- const uid = DAIMON_GROK_ENGINE_BROKER.identities.organizationUid;
65
- const program = `import { resetTrainingBrokerSlot } from ${JSON.stringify(import.meta.url)}; await resetTrainingBrokerSlot(Number(process.argv[1]), AbortSignal.timeout(10000)); process.stdout.write("slot-reset-complete\\n");`;
66
- const result = await execute("setpriv", ["--clear-groups", `--reuid=${uid}`, `--regid=${uid}`,
67
- "--inh-caps=-all", "--ambient-caps=-all", "--bounding-set=-all", "--", process.execPath,
68
- "--input-type=module", "--eval", program, String(slot)], { signal, timeout: 15_000 });
69
- if (result.stdout !== "slot-reset-complete\n")
70
- throw Error("Broker reset child returned no verified acknowledgement");
71
- };
@@ -1,32 +0,0 @@
1
- /**
2
- * Linux `MAX_ARG_STRLEN`: the most bytes one `execve` argument may carry. A
3
- * generated root program passed as `bash -c <script>` dies with `E2BIG` past
4
- * it — and a slot program embeds its declared skills, so the size grows with
5
- * the declaration. macOS has no per-argument limit, which is why this is
6
- * asserted in tests rather than observed.
7
- */
8
- export declare const LINUX_MAX_ARG_STRLEN = 131072;
9
- export type TrainingRootScriptRunner = (file: string, args: readonly string[], options: {
10
- maxBuffer: number;
11
- }) => Promise<{
12
- stdout: string;
13
- stderr: string;
14
- }>;
15
- export interface TrainingRootScriptOptions {
16
- shell?: string;
17
- maxBuffer?: number;
18
- run?: TrainingRootScriptRunner;
19
- tmpRoot?: string;
20
- }
21
- /** The argv a generated script runs under: bounded and independent of the script's size. */
22
- export declare const trainingRootScriptArgv: (scriptFile: string) => string[];
23
- /**
24
- * Runs a generated root shell program from a fresh `0700` directory holding a
25
- * `0600` script file, never from argv and never from stdin (a child that reads
26
- * stdin would consume the rest of the program). The directory is removed
27
- * afterwards, whatever the outcome.
28
- */
29
- export declare const runTrainingRootScript: (script: string, options?: TrainingRootScriptOptions) => Promise<{
30
- stdout: string;
31
- stderr: string;
32
- }>;
@@ -1,33 +0,0 @@
1
- import { execFile } from "node:child_process";
2
- import { mkdtemp, rm, writeFile } from "node:fs/promises";
3
- import os from "node:os";
4
- import path from "node:path";
5
- import { promisify } from "node:util";
6
- /**
7
- * Linux `MAX_ARG_STRLEN`: the most bytes one `execve` argument may carry. A
8
- * generated root program passed as `bash -c <script>` dies with `E2BIG` past
9
- * it — and a slot program embeds its declared skills, so the size grows with
10
- * the declaration. macOS has no per-argument limit, which is why this is
11
- * asserted in tests rather than observed.
12
- */
13
- export const LINUX_MAX_ARG_STRLEN = 131_072;
14
- const execFileAsync = promisify(execFile);
15
- /** The argv a generated script runs under: bounded and independent of the script's size. */
16
- export const trainingRootScriptArgv = (scriptFile) => ["--noprofile", "--norc", "-eu", scriptFile];
17
- /**
18
- * Runs a generated root shell program from a fresh `0700` directory holding a
19
- * `0600` script file, never from argv and never from stdin (a child that reads
20
- * stdin would consume the rest of the program). The directory is removed
21
- * afterwards, whatever the outcome.
22
- */
23
- export const runTrainingRootScript = async (script, options = {}) => {
24
- const directory = await mkdtemp(path.join(options.tmpRoot ?? os.tmpdir(), "spawnfile-root-script-"));
25
- try {
26
- const file = path.join(directory, "script.sh");
27
- await writeFile(file, script, { mode: 0o600, flag: "wx" });
28
- return await (options.run ?? execFileAsync)(options.shell ?? "/bin/bash", trainingRootScriptArgv(file), { maxBuffer: options.maxBuffer ?? 1024 * 1024 });
29
- }
30
- finally {
31
- await rm(directory, { recursive: true, force: true });
32
- }
33
- };
@@ -1,22 +0,0 @@
1
- import type { DaimonGrokRegistration } from "../../containerDaimonGrokWorkerRender.js";
2
- import type { TrainingBrokerDeclaration } from "./declaration.js";
3
- import type { TrainingSlotRuntime } from "./supervisor.js";
4
- export interface TrainingSlotRuntimeOptions {
5
- declaration: TrainingBrokerDeclaration;
6
- registration: DaimonGrokRegistration;
7
- projectionSha256: string;
8
- reset: (slot: number, signal: AbortSignal) => Promise<void>;
9
- /** Test seam: the shell the provisioning script runs in and the `/proc` it reads identities from. */
10
- shell?: string;
11
- procRoot?: string;
12
- logPath?: string;
13
- }
14
- export declare const createTrainingSlotRuntime: (options: TrainingSlotRuntimeOptions) => TrainingSlotRuntime;
15
- /** Never remove or change the ownership/mode of a worker home or tmp: siblings attest those inodes. */
16
- export declare const renderTrainingSlotWipe: (slot: number) => string[];
17
- /** A failed privilege drop is not evidence of denial; require a positive worker verdict. */
18
- export declare const probeTrainingWorker: (uid: number, target: string, depth: "read" | "enter", execute?: (command: string, args: string[], options: {
19
- timeout: number;
20
- }) => Promise<{
21
- stdout: string;
22
- }>) => Promise<boolean>;
@@ -1,128 +0,0 @@
1
- import { execFile } from "node:child_process";
2
- import { randomUUID } from "node:crypto";
3
- import { appendFileSync } from "node:fs";
4
- import { chmod, chown, mkdir, readFile, rename, writeFile } from "node:fs/promises";
5
- import path from "node:path";
6
- import { promisify } from "node:util";
7
- import { SpawnfileError } from "../../../shared/index.js";
8
- import { MOUNT_AWARE_CLEAR_HELPER } from "../../containerDaimonBrokerRender.js";
9
- import { probeTrainingSiblingClock } from "./clockProbe.js";
10
- import { renderTrainingTaskClockAssertions } from "./taskClock.js";
11
- import { renderTrainingSlotProvisioning } from "./provisioning.js";
12
- import { runTrainingRootScript } from "./rootScript.js";
13
- import { buildTrainingSlotReceipt, readGrokExecutableSha256, resolveTrainingCanaries } from "./receipt.js";
14
- import { DAIMON_ORGANIZATION_UID, TRAINING_HOST_BIND_DENY_PATHS, TRAINING_SEALED_DENY_PATHS, trainingSlotPaths, trainingWipeTargets, trainingClearTargets, TRAINING_SUPERVISOR_LOG } from "./paths.js";
15
- const run = promisify(execFile);
16
- const quote = (value) => `'${value.replace(/'/gu, `'"'"'`)}'`;
17
- export const createTrainingSlotRuntime = (options) => {
18
- const shell = options.shell ?? "/bin/bash";
19
- const logPath = options.logPath ?? TRAINING_SUPERVISOR_LOG;
20
- const p = trainingSlotPaths(options.registration.slot);
21
- const script = renderTrainingSlotProvisioning(options.registration).join("\n");
22
- const log = (line) => {
23
- const entry = `${new Date().toISOString()} ${line}\n`;
24
- process.stderr.write(`[slot-supervisor] ${entry}`);
25
- try {
26
- appendFileSync(logPath, entry, { mode: 0o640 });
27
- }
28
- catch { /* the log is diagnostics, never the gate */ }
29
- };
30
- const siblingClocks = Array.from({ length: options.declaration.slots }, (_, slot) => trainingSlotPaths(slot))
31
- .filter(peer => peer.slot !== p.slot).map(peer => peer.clockDirectory);
32
- const probe = (target, depth) => siblingClocks.includes(target)
33
- ? probeTrainingSiblingClock(p.slot, target)
34
- : probeTrainingWorker(options.registration.uid, target, depth);
35
- return {
36
- log,
37
- reset: signal => options.reset(p.slot, signal),
38
- wipe: async () => {
39
- // Root holds `CAP_CHOWN` and `CAP_DAC_READ_SEARCH` but not `CAP_DAC_OVERRIDE`, so it cannot delete
40
- // inside a directory it handed to the worker or the broker. Reclaim each tree first, then remove it.
41
- const script = renderTrainingSlotWipe(p.slot).join("\n");
42
- await runTrainingRootScript(script, { shell, maxBuffer: 1024 * 1024 }).catch((error) => {
43
- const detail = error;
44
- throw new SpawnfileError("runtime_error", `Training slot wipe failed: ${(detail.stderr ?? "").slice(-1024).trim() || "no diagnostic"}`);
45
- });
46
- },
47
- provision: async () => {
48
- const result = await runTrainingRootScript(script, { shell, maxBuffer: 8 * 1024 * 1024 }).catch((error) => {
49
- const detail = error;
50
- throw new SpawnfileError("runtime_error", `Training slot provisioning failed: ${(detail.stderr ?? detail.stdout ?? "").slice(-2048).trim()}`);
51
- });
52
- if (result.stdout.trim())
53
- log(`provisioning: ${result.stdout.trim().slice(-2048)}`);
54
- },
55
- canaries: async () => {
56
- await runTrainingRootScript(renderTrainingTaskClockAssertions(options.registration).join("\n"), { shell });
57
- return resolveTrainingCanaries({
58
- denyPaths: options.registration.denyPaths, probe, log, hostBindPaths: TRAINING_HOST_BIND_DENY_PATHS,
59
- sealedPaths: TRAINING_SEALED_DENY_PATHS,
60
- mountinfo: await readFile(`${options.procRoot ?? "/proc"}/self/mountinfo`, "utf8"),
61
- unenforcedBindPolicy: options.declaration.unenforcedBindPolicy
62
- });
63
- },
64
- nextGeneration: async () => {
65
- const previous = await readFile(p.generationFile, "utf8").catch(() => "");
66
- const parsed = Number.parseInt(JSON.parse(previous || "{}").generation ?? "0", 10);
67
- // Seeded from the wall clock so a container restart cannot hand out a generation an evaluator already accepted.
68
- const generation = Math.max(Number.isSafeInteger(parsed) && parsed > 0 ? parsed + 1 : 1, Math.floor(Date.now() / 1000));
69
- await writeFile(p.generationFile, `${JSON.stringify({ generation })}\n`, { mode: 0o600 });
70
- return generation;
71
- },
72
- publishReceipt: async ({ generation, nonce, canaries }) => {
73
- const receipt = buildTrainingSlotReceipt({
74
- slot: options.registration.slot, workerUid: options.registration.uid, generation, nonce,
75
- projectionSha256: options.projectionSha256, sandboxProfileSha256: options.registration.profileSha256,
76
- seccompProfileSha256: options.declaration.seccompProfileSha256,
77
- grokExecutableSha256: readGrokExecutableSha256(), canaries, createdAt: new Date()
78
- });
79
- const temporary = `${p.preflightReceipt}.${randomUUID()}.tmp`;
80
- await mkdir(path.dirname(p.preflightReceipt), { recursive: true });
81
- await writeFile(temporary, `${JSON.stringify(receipt)}\n`, { mode: 0o600, flag: "wx" });
82
- await chown(temporary, 0, DAIMON_ORGANIZATION_UID);
83
- await chmod(temporary, 0o640);
84
- await rename(temporary, p.preflightReceipt);
85
- return p.preflightReceipt;
86
- }
87
- };
88
- };
89
- /** Never remove or change the ownership/mode of a worker home or tmp: siblings attest those inodes. */
90
- export const renderTrainingSlotWipe = (slot) => {
91
- const p = trainingSlotPaths(slot);
92
- const worker = `setpriv --clear-groups --reuid=${p.workerUid} --regid=${p.workerUid} --inh-caps=-all --ambient-caps=-all --bounding-set=-all --`;
93
- return [
94
- ...MOUNT_AWARE_CLEAR_HELPER,
95
- // Attested roots must still be canonical before any recursive mutation.
96
- ...[p.workerHome, p.privateTmp, ...trainingWipeTargets(slot), ...trainingClearTargets(slot)].map(target => `if [ -e ${quote(target)} ] || [ -L ${quote(target)} ]; then if [ -L ${quote(target)} ] || [ "$(realpath ${quote(target)})" != ${quote(target)} ]; then echo "noncanonical slot wipe target" >&2; exit 1; fi; fi`),
97
- 'reclaim() { parent=$(dirname "$1"); chown 0:0 "$parent"; chmod u+rwx "$parent"; if [ -e "$1" ]; then chown -R 0:0 "$1"; chmod -R u+rwX "$1"; fi; }',
98
- ...trainingWipeTargets(slot).map(target => `reclaim ${quote(target)}; spawnfile_remove_tree ${quote(target)}`),
99
- ...trainingClearTargets(slot).map(target => `reclaim ${quote(target)}; spawnfile_clear_tree ${quote(target)}`),
100
- // Reclaim descendants only, then unlink as the worker, who owns the stable parent. No sibling inode changes.
101
- `for worker_entry in ${quote(p.workerHome)}/* ${quote(p.workerHome)}/.[!.]* ${quote(p.workerHome)}/..?*; do`,
102
- ' if [ ! -e "$worker_entry" ] && [ ! -L "$worker_entry" ]; then continue; fi',
103
- ` if [ "$worker_entry" = ${quote(p.privateTmp)} ]; then continue; fi`,
104
- ' if spawnfile_holds_mount "$worker_entry"; then echo "worker home contains a mount" >&2; exit 1; fi',
105
- ` chown -hR ${p.workerUid}:${p.workerUid} "$worker_entry"`,
106
- ` ${worker} /bin/sh -ceu 'if [ ! -L "$1" ]; then chmod -R u+rwX "$1"; fi; rm -rf "$1"' sh "$worker_entry"`,
107
- 'done',
108
- `for worker_entry in ${quote(p.privateTmp)}/* ${quote(p.privateTmp)}/.[!.]* ${quote(p.privateTmp)}/..?*; do`,
109
- ' if [ ! -e "$worker_entry" ] && [ ! -L "$worker_entry" ]; then continue; fi',
110
- ' if spawnfile_holds_mount "$worker_entry"; then echo "worker tmp contains a mount" >&2; exit 1; fi',
111
- ` chown -hR ${p.workerUid}:${p.workerUid} "$worker_entry"`,
112
- ` ${worker} /bin/sh -ceu 'if [ ! -L "$1" ]; then chmod -R u+rwX "$1"; fi; rm -rf "$1"' sh "$worker_entry"`,
113
- 'done'
114
- ];
115
- };
116
- /** A failed privilege drop is not evidence of denial; require a positive worker verdict. */
117
- export const probeTrainingWorker = async (uid, target, depth, execute = run) => {
118
- const q = quote(target);
119
- const reachable = depth === "enter" ? `test -r ${q} || test -x ${q} || ls -1 ${q} >/dev/null 2>&1` : `test -r ${q}`;
120
- const result = await execute("setpriv", ["--clear-groups", `--reuid=${uid}`, `--regid=${uid}`,
121
- "--inh-caps=-all", "--ambient-caps=-all", "--bounding-set=-all", "--", "/bin/sh", "-c",
122
- `if ${reachable}; then echo reachable; else echo denied; fi`], { timeout: 10_000 });
123
- if (result.stdout.trim() === "denied")
124
- return true;
125
- if (result.stdout.trim() === "reachable")
126
- return false;
127
- throw new SpawnfileError("runtime_error", "Training worker canary returned no verified verdict");
128
- };
@@ -1,31 +0,0 @@
1
- /**
2
- * The syscalls a worker-uid namespace escape needs before it can even be
3
- * attempted: a new user namespace, a new mount namespace, and the mount and
4
- * unmount calls inside them.
5
- *
6
- * `clone`/`clone3` are deliberately absent. The pinned profile allows them only
7
- * under an argument filter, so a static "is it allowed" question has no honest
8
- * yes/no answer for them, and `unshare` already gates the route.
9
- */
10
- export declare const TRAINING_NAMESPACE_ROUTE_SYSCALLS: readonly ["unshare", "mount", "umount2", "setns"];
11
- /**
12
- * Whether the pinned seccomp profile lets the worker uid attempt a namespace
13
- * escape at all — an **unconditional** `SCMP_ACT_ALLOW`, with no
14
- * `includes.caps` (the container drops `CAP_SYS_ADMIN`) and no argument filter.
15
- *
16
- * This exists to keep one specific lie out of the slot receipt. When a probe
17
- * route cannot run, the honest record is *which layer refused it*: a syscall
18
- * the profile filters is a stronger denial than DAC and must be named as
19
- * `seccomp`, while the same syscall refused by a profile that allows it came
20
- * from the kernel or an LSM and must be named `kernel`. Merging the two into
21
- * "denied" would let a filtered-syscall run read as though DAC had held.
22
- */
23
- export declare const pinnedProfileAllowsNamespaceRoutes: (bytes?: string) => boolean;
24
- /**
25
- * What to blame when the worker uid cannot open the namespace a route needs.
26
- *
27
- * Derived, never guessed: seccomp and a DAC/LSM refusal both surface as
28
- * `EPERM`, so errno cannot tell them apart. The pinned profile can — Spawnfile
29
- * ships its bytes and the declaration binds their digest.
30
- */
31
- export declare const trainingNamespaceDenialMechanism: (bytes?: string) => "seccomp" | "kernel";
@@ -1,36 +0,0 @@
1
- import { DAIMON_GROK_SECCOMP_PROFILE_BYTES } from "../../../shared/daimonGrokSeccompProfile.js";
2
- /**
3
- * The syscalls a worker-uid namespace escape needs before it can even be
4
- * attempted: a new user namespace, a new mount namespace, and the mount and
5
- * unmount calls inside them.
6
- *
7
- * `clone`/`clone3` are deliberately absent. The pinned profile allows them only
8
- * under an argument filter, so a static "is it allowed" question has no honest
9
- * yes/no answer for them, and `unshare` already gates the route.
10
- */
11
- export const TRAINING_NAMESPACE_ROUTE_SYSCALLS = ["unshare", "mount", "umount2", "setns"];
12
- /**
13
- * Whether the pinned seccomp profile lets the worker uid attempt a namespace
14
- * escape at all — an **unconditional** `SCMP_ACT_ALLOW`, with no
15
- * `includes.caps` (the container drops `CAP_SYS_ADMIN`) and no argument filter.
16
- *
17
- * This exists to keep one specific lie out of the slot receipt. When a probe
18
- * route cannot run, the honest record is *which layer refused it*: a syscall
19
- * the profile filters is a stronger denial than DAC and must be named as
20
- * `seccomp`, while the same syscall refused by a profile that allows it came
21
- * from the kernel or an LSM and must be named `kernel`. Merging the two into
22
- * "denied" would let a filtered-syscall run read as though DAC had held.
23
- */
24
- export const pinnedProfileAllowsNamespaceRoutes = (bytes = DAIMON_GROK_SECCOMP_PROFILE_BYTES) => {
25
- const profile = JSON.parse(bytes);
26
- return TRAINING_NAMESPACE_ROUTE_SYSCALLS.every((syscall) => (profile.syscalls ?? []).some((rule) => (rule.names ?? []).includes(syscall) && rule.action === "SCMP_ACT_ALLOW"
27
- && (rule.includes?.caps ?? []).length === 0 && (rule.args ?? []).length === 0));
28
- };
29
- /**
30
- * What to blame when the worker uid cannot open the namespace a route needs.
31
- *
32
- * Derived, never guessed: seccomp and a DAC/LSM refusal both surface as
33
- * `EPERM`, so errno cannot tell them apart. The pinned profile can — Spawnfile
34
- * ships its bytes and the declaration binds their digest.
35
- */
36
- export const trainingNamespaceDenialMechanism = (bytes) => pinnedProfileAllowsNamespaceRoutes(bytes) ? "kernel" : "seccomp";
@@ -1,108 +0,0 @@
1
- export declare const TRAINING_SUPERVISOR_PROTOCOL: "spawnfile.training-slot-supervisor.v2";
2
- export declare const TRAINING_SUPERVISOR_MAX_REQUEST_BYTES = 4096;
3
- /**
4
- * Everything the recycle verb does to the running slot. It is an interface so
5
- * the state machine below can be tested without Docker, a broker, or root:
6
- * the order of these calls *is* the contract, and getting it wrong (wiping
7
- * before draining, writing a receipt before the canaries) is exactly the class
8
- * of bug a live check finds far too late.
9
- */
10
- export interface TrainingSlotRuntime {
11
- /** Broker refuses active turns and live workers, then resets only this slot clock/turn store. */
12
- reset(signal: AbortSignal): Promise<void>;
13
- /** Clears this slot while preserving the worker-home/tmp identities attested by sibling turns. */
14
- wipe(): Promise<void>;
15
- /** Reuses the audited worker provisioning; shared broker files are untouched. */
16
- provision(): Promise<void>;
17
- /** Worker-uid denial canaries over every deny path; throws when one is still reachable. */
18
- canaries(): Promise<{
19
- path: string;
20
- method: "sandboxed-read";
21
- result: "denied";
22
- }[]>;
23
- /** Writes the slot preflight receipt v2 atomically, readable by the organization uid. */
24
- publishReceipt(input: {
25
- generation: number;
26
- nonce: string;
27
- canaries: readonly {
28
- path: string;
29
- method: "sandboxed-read";
30
- result: "denied";
31
- }[];
32
- }): Promise<string>;
33
- /** Monotonic per-slot generation; strictly greater than every generation this slot has ever published. */
34
- nextGeneration(): Promise<number>;
35
- log(line: string): void;
36
- }
37
- /**
38
- * Bringing a slot up, receipt included — the only way this container starts one.
39
- *
40
- * `provision → start` alone was the whole start-up path, and `canaries` and
41
- * `publishReceipt` were reachable only from `recycle`. The first trial of every
42
- * run therefore executed with no worker-uid denial evidence at all, and a
43
- * refusal that should have cost nothing surfaced only after that trial's spend.
44
- * Trial 1 is exactly the trial whose sealed datasets have never been probed, so
45
- * it is the one that most needs the evidence.
46
- *
47
- * The receipt this publishes carries generation 1..N and a nonce of the
48
- * container's own, so an evaluator that reads `preflight.json` before its first
49
- * wake sees the same `noopolis.daimon.grok-slot-preflight.v2` shape a recycle
50
- * publishes, from the same canaries.
51
- */
52
- export declare const startTrainingSlot: (runtime: TrainingSlotRuntime, nonce: string) => Promise<{
53
- generation: number;
54
- receipt: string;
55
- canaries: number;
56
- }>;
57
- export interface TrainingSlotSupervisorOptions {
58
- runtimes: readonly TrainingSlotRuntime[];
59
- /** Only this uid may recycle. Training, DSPy and the judges all run as it; every worker uid is refused. */
60
- organizationUid?: number;
61
- drainTimeoutMs?: number;
62
- now?: () => number;
63
- }
64
- export interface TrainingRecycleResult {
65
- ok: true;
66
- verb: "recycle";
67
- slot: number;
68
- generation: number;
69
- nonce: string;
70
- receipt: string;
71
- durationMs: number;
72
- }
73
- /**
74
- * The single-verb root slot supervisor.
75
- *
76
- * One verb, slot and nonce, no path or command ever supplied by the caller: the
77
- * whole point of D4 is that recycling replays the container's own audited
78
- * provisioning rather than exposing a root file-system API to the evaluator.
79
- * Recycles of the same slot are serialized — a second caller waits rather than interleaving a
80
- * wipe with a provision.
81
- */
82
- export declare const createTrainingSlotSupervisor: (options: TrainingSlotSupervisorOptions) => {
83
- /** Serialized: a recycle already in flight completes before the next one starts. */
84
- recycle: (slot: number, nonce: string, peerUid: number) => Promise<TrainingRecycleResult>;
85
- };
86
- export type TrainingSlotSupervisor = ReturnType<typeof createTrainingSlotSupervisor>;
87
- /**
88
- * Re-establishes, and re-checks on every connection, the only uid gate this
89
- * socket has.
90
- *
91
- * The scope asked for `SO_PEERCRED`. Node exposes no ancillary-data or
92
- * peer-credential API on a unix socket and no native addon ships in this
93
- * image, so the gate is the socket node itself, which the kernel enforces on
94
- * `connect()` exactly as it does on `open()`: the node is
95
- * `root:<organization gid> 0660` inside a root-owned `0711` directory on
96
- * tmpfs, where modes *are* enforced. Only uid 2000 (and root) can connect;
97
- * uid 2200 gets `EACCES` before a byte is written. A `0600` root-owned socket
98
- * — the literal reading of the scope — would deny the one caller it exists
99
- * for, so this is the same restriction stated in the only mechanism available.
100
- * The directory holds no write permission for anyone but root, so the node
101
- * cannot be replaced by a laxer one.
102
- */
103
- export declare const assertTrainingSupervisorSocketIdentity: (socketPath: string, organizationGid: number) => void;
104
- /**
105
- * Line-delimited JSON over a unix socket. Every request is bounded,
106
- * single-line, and must name the protocol, the one verb and nothing else.
107
- */
108
- export declare const serveTrainingSlotSupervisor: (supervisor: TrainingSlotSupervisor, socketPath: string, log: (line: string) => void, organizationUid?: number) => import("net").Server;