spawnfile 0.1.17 → 0.1.18

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 (489) hide show
  1. package/README.md +1 -1
  2. package/dist/auth/importers.js +21 -5
  3. package/dist/auth/index.d.ts +1 -0
  4. package/dist/auth/index.js +1 -0
  5. package/dist/auth/profileStore.js +4 -1
  6. package/dist/auth/trainingGrokWriteback.d.ts +4 -0
  7. package/dist/auth/trainingGrokWriteback.js +119 -0
  8. package/dist/auth/trainingGrokWritebackLock.d.ts +5 -0
  9. package/dist/auth/trainingGrokWritebackLock.js +56 -0
  10. package/dist/cli/authCommands.js +9 -5
  11. package/dist/cli/compileBuildCommands.js +4 -0
  12. package/dist/cli/devCommands.js +4 -2
  13. package/dist/cli/downCommand.d.ts +2 -0
  14. package/dist/cli/downCommand.js +3 -0
  15. package/dist/cli/envFileOption.d.ts +18 -0
  16. package/dist/cli/envFileOption.js +20 -0
  17. package/dist/cli/lifecycleCommands.d.ts +1 -1
  18. package/dist/cli/lifecycleCommands.js +3 -1
  19. package/dist/cli/lifecyclePlan.d.ts +1 -0
  20. package/dist/cli/lifecyclePlan.js +2 -0
  21. package/dist/cli/paideiaDelegation.d.ts +2 -1
  22. package/dist/cli/paideiaDelegation.js +5 -4
  23. package/dist/cli/recordCommands.d.ts +17 -0
  24. package/dist/cli/recordCommands.js +43 -0
  25. package/dist/cli/releaseCommand.d.ts +6 -0
  26. package/dist/cli/releaseCommand.js +91 -0
  27. package/dist/cli/runCli.d.ts +7 -1
  28. package/dist/cli/runCli.js +11 -6
  29. package/dist/cli/runPublishCommands.js +5 -3
  30. package/dist/cli/trainCommand.js +73 -20
  31. package/dist/cli/upCommand.js +5 -1
  32. package/dist/cli/volumeCommands.d.ts +8 -0
  33. package/dist/cli/volumeCommands.js +53 -0
  34. package/dist/compiler/agentNodeMerge.js +3 -2
  35. package/dist/compiler/buildCompilePlan.js +4 -0
  36. package/dist/compiler/buildCompilePlanAgent.js +3 -1
  37. package/dist/compiler/buildCompilePlanTraversal.js +2 -0
  38. package/dist/compiler/buildCompilePlanTraversalHelpers.d.ts +2 -2
  39. package/dist/compiler/buildCompilePlanTraversalHelpers.js +4 -3
  40. package/dist/compiler/buildProject.d.ts +10 -0
  41. package/dist/compiler/buildProject.js +14 -2
  42. package/dist/compiler/cleanCompileOutput.d.ts +2 -0
  43. package/dist/compiler/cleanCompileOutput.js +14 -0
  44. package/dist/compiler/compilePlanHelpers.js +2 -0
  45. package/dist/compiler/compileProject.d.ts +10 -0
  46. package/dist/compiler/compileProject.js +29 -3
  47. package/dist/compiler/containerArtifactSummaries.js +1 -0
  48. package/dist/compiler/containerArtifacts.d.ts +4 -4
  49. package/dist/compiler/containerArtifacts.js +18 -34
  50. package/dist/compiler/containerArtifactsPlans.js +7 -0
  51. package/dist/compiler/containerArtifactsTypes.d.ts +7 -0
  52. package/dist/compiler/containerDaimonBrokerRender.d.ts +3 -1
  53. package/dist/compiler/containerDaimonBrokerRender.js +6 -3
  54. package/dist/compiler/containerDaimonGrokTaskClock.d.ts +5 -0
  55. package/dist/compiler/containerDaimonGrokTaskClock.js +29 -0
  56. package/dist/compiler/containerDaimonGrokWorkerProvisioning.d.ts +1 -1
  57. package/dist/compiler/containerDaimonGrokWorkerProvisioning.js +38 -16
  58. package/dist/compiler/containerDaimonGrokWorkerRender.d.ts +33 -8
  59. package/dist/compiler/containerDaimonGrokWorkerRender.js +18 -5
  60. package/dist/compiler/containerDaimonOwnershipGuardRender.d.ts +14 -1
  61. package/dist/compiler/containerDaimonOwnershipGuardRender.js +15 -2
  62. package/dist/compiler/containerDaimonUidEntrypointRender.js +6 -12
  63. package/dist/compiler/containerTargetResources.d.ts +10 -0
  64. package/dist/compiler/containerTargetResources.js +21 -13
  65. package/dist/compiler/containerWorkspaceResourceRender.js +4 -1
  66. package/dist/compiler/index.d.ts +2 -0
  67. package/dist/compiler/index.js +2 -0
  68. package/dist/compiler/mcpPlaceholders.d.ts +11 -0
  69. package/dist/compiler/mcpPlaceholders.js +58 -0
  70. package/dist/compiler/mcpServerInheritance.d.ts +18 -0
  71. package/dist/compiler/mcpServerInheritance.js +43 -0
  72. package/dist/compiler/moltnetArtifactTypes.d.ts +1 -0
  73. package/dist/compiler/moltnetArtifacts.js +1 -0
  74. package/dist/compiler/preflightCompilePlan.d.ts +9 -0
  75. package/dist/compiler/preflightCompilePlan.js +38 -0
  76. package/dist/compiler/recordingAgentFacts.d.ts +4 -0
  77. package/dist/compiler/recordingAgentFacts.js +35 -0
  78. package/dist/compiler/recordingCapability.d.ts +4 -0
  79. package/dist/compiler/recordingCapability.js +22 -0
  80. package/dist/compiler/recordingReport.d.ts +4 -0
  81. package/dist/compiler/recordingReport.js +18 -0
  82. package/dist/compiler/runProject.d.ts +2 -1
  83. package/dist/compiler/runProject.js +2 -0
  84. package/dist/compiler/surfaces.d.ts +1 -2
  85. package/dist/compiler/surfaces.js +0 -1
  86. package/dist/compiler/syncProjectAuth.js +2 -1
  87. package/dist/compiler/training/broker/clockProbe.d.ts +6 -0
  88. package/dist/compiler/training/broker/clockProbe.js +27 -0
  89. package/dist/compiler/training/broker/declaration.d.ts +4 -2
  90. package/dist/compiler/training/broker/declaration.js +4 -2
  91. package/dist/compiler/training/broker/entrypoint.js +33 -18
  92. package/dist/compiler/training/broker/evaluatorSecrets.d.ts +2 -0
  93. package/dist/compiler/training/broker/evaluatorSecrets.js +60 -0
  94. package/dist/compiler/training/broker/index.d.ts +3 -2
  95. package/dist/compiler/training/broker/index.js +3 -2
  96. package/dist/compiler/training/broker/main.js +1 -1
  97. package/dist/compiler/training/broker/paths.d.ts +96 -56
  98. package/dist/compiler/training/broker/paths.js +97 -89
  99. package/dist/compiler/training/broker/processes.d.ts +9 -0
  100. package/dist/compiler/training/broker/processes.js +4 -1
  101. package/dist/compiler/training/broker/projection.d.ts +3 -2
  102. package/dist/compiler/training/broker/projection.js +21 -9
  103. package/dist/compiler/training/broker/provisioning.d.ts +6 -15
  104. package/dist/compiler/training/broker/provisioning.js +71 -53
  105. package/dist/compiler/training/broker/registration.d.ts +3 -1
  106. package/dist/compiler/training/broker/registration.js +29 -21
  107. package/dist/compiler/training/broker/reset.d.ts +9 -0
  108. package/dist/compiler/training/broker/reset.js +71 -0
  109. package/dist/compiler/training/broker/runtime.d.ts +10 -13
  110. package/dist/compiler/training/broker/runtime.js +69 -115
  111. package/dist/compiler/training/broker/supervisor.d.ts +10 -11
  112. package/dist/compiler/training/broker/supervisor.js +22 -23
  113. package/dist/compiler/training/broker/taskClock.d.ts +5 -0
  114. package/dist/compiler/training/broker/taskClock.js +41 -0
  115. package/dist/compiler/training/compiledAgent.d.ts +21 -0
  116. package/dist/compiler/training/compiledAgent.js +62 -0
  117. package/dist/compiler/training/container/contract.d.ts +23 -0
  118. package/dist/compiler/training/container/contract.js +23 -5
  119. package/dist/compiler/training/container/evaluators.d.ts +48 -0
  120. package/dist/compiler/training/container/evaluators.js +50 -0
  121. package/dist/compiler/training/container/grokWriteback.d.ts +8 -0
  122. package/dist/compiler/training/container/grokWriteback.js +26 -0
  123. package/dist/compiler/training/container/index.d.ts +2 -1
  124. package/dist/compiler/training/container/index.js +2 -1
  125. package/dist/compiler/training/container/launch.d.ts +3 -0
  126. package/dist/compiler/training/container/launch.js +119 -28
  127. package/dist/compiler/training/container/nativeSlots.d.ts +14 -0
  128. package/dist/compiler/training/container/nativeSlots.js +13 -0
  129. package/dist/compiler/training/container/outputCopy.d.ts +2 -0
  130. package/dist/compiler/training/container/outputCopy.js +72 -0
  131. package/dist/compiler/training/container/outputVolume.d.ts +27 -0
  132. package/dist/compiler/training/container/outputVolume.js +161 -0
  133. package/dist/compiler/training/container/prepare.d.ts +3 -1
  134. package/dist/compiler/training/container/prepare.js +57 -12
  135. package/dist/compiler/training/container/security.d.ts +5 -3
  136. package/dist/compiler/training/container/security.js +15 -5
  137. package/dist/compiler/training/container/subjectIsolation.d.ts +5 -0
  138. package/dist/compiler/training/container/subjectIsolation.js +15 -0
  139. package/dist/compiler/training/context.d.ts +8 -0
  140. package/dist/compiler/training/context.js +12 -12
  141. package/dist/compiler/training/contract.d.ts +2 -0
  142. package/dist/compiler/training/contract.js +2 -0
  143. package/dist/compiler/training/execution.d.ts +417 -0
  144. package/dist/compiler/training/execution.js +160 -0
  145. package/dist/compiler/training/index.d.ts +8 -0
  146. package/dist/compiler/training/index.js +7 -0
  147. package/dist/compiler/training/moments.d.ts +80 -0
  148. package/dist/compiler/training/moments.js +118 -0
  149. package/dist/compiler/training/output.d.ts +2 -0
  150. package/dist/compiler/training/output.js +20 -0
  151. package/dist/compiler/training/plan/contract.d.ts +287 -0
  152. package/dist/compiler/training/plan/contract.js +49 -0
  153. package/dist/compiler/training/plan/index.d.ts +5 -0
  154. package/dist/compiler/training/plan/index.js +4 -0
  155. package/dist/compiler/training/plan/load.d.ts +9 -0
  156. package/dist/compiler/training/plan/load.js +153 -0
  157. package/dist/compiler/training/plan/references.d.ts +19 -0
  158. package/dist/compiler/training/plan/references.js +57 -0
  159. package/dist/compiler/training/plan/resolve.d.ts +4 -0
  160. package/dist/compiler/training/plan/resolve.js +73 -0
  161. package/dist/compiler/training/plan/targets.d.ts +11 -0
  162. package/dist/compiler/training/plan/targets.js +71 -0
  163. package/dist/compiler/training/plan/types.d.ts +36 -0
  164. package/dist/compiler/training/plan/types.js +1 -0
  165. package/dist/compiler/training/preparation/assets/Dockerfile +13 -2
  166. package/dist/compiler/training/preparation/assets/package-lock.json +2 -2
  167. package/dist/compiler/training/preparation/broker.d.ts +3 -3
  168. package/dist/compiler/training/preparation/broker.js +6 -4
  169. package/dist/compiler/training/preparation/contract.d.ts +27 -2
  170. package/dist/compiler/training/preparation/contract.js +23 -4
  171. package/dist/compiler/training/preparation/files.d.ts +5 -1
  172. package/dist/compiler/training/preparation/files.js +76 -15
  173. package/dist/compiler/training/preparation/image.js +9 -4
  174. package/dist/compiler/training/preparation/inputs.d.ts +1 -0
  175. package/dist/compiler/training/preparation/inputs.js +18 -10
  176. package/dist/compiler/training/preparation/prepare.d.ts +5 -0
  177. package/dist/compiler/training/preparation/prepare.js +66 -29
  178. package/dist/compiler/training/preparation/scratch.d.ts +6 -17
  179. package/dist/compiler/training/preparation/scratch.js +89 -23
  180. package/dist/compiler/training/repair/contract.d.ts +338 -4
  181. package/dist/compiler/training/repair/contract.js +2 -0
  182. package/dist/compiler/training/repair/index.d.ts +1 -1
  183. package/dist/compiler/training/repair/index.js +1 -1
  184. package/dist/compiler/training/repair/prepare.d.ts +155 -3
  185. package/dist/compiler/training/repair/prepare.js +6 -2
  186. package/dist/compiler/training/repair/witness.d.ts +152 -3
  187. package/dist/compiler/training/repair/witness.js +8 -2
  188. package/dist/compiler/training/resolution.d.ts +25 -0
  189. package/dist/compiler/training/resolution.js +69 -0
  190. package/dist/compiler/training/rewind/contract.d.ts +321 -0
  191. package/dist/compiler/training/rewind/contract.js +39 -0
  192. package/dist/compiler/training/rewind/deployedResource.d.ts +22 -0
  193. package/dist/compiler/training/rewind/deployedResource.js +19 -0
  194. package/dist/compiler/training/rewind/feed.d.ts +12 -0
  195. package/dist/compiler/training/rewind/feed.js +182 -0
  196. package/dist/compiler/training/rewind/feedContent.d.ts +6 -0
  197. package/dist/compiler/training/rewind/feedContent.js +38 -0
  198. package/dist/compiler/training/rewind/git.d.ts +8 -0
  199. package/dist/compiler/training/rewind/git.js +159 -0
  200. package/dist/compiler/training/rewind/gitArchive.d.ts +2 -0
  201. package/dist/compiler/training/rewind/gitArchive.js +7 -0
  202. package/dist/compiler/training/rewind/gitHistory.d.ts +3 -0
  203. package/dist/compiler/training/rewind/gitHistory.js +55 -0
  204. package/dist/compiler/training/rewind/gitProcess.d.ts +19 -0
  205. package/dist/compiler/training/rewind/gitProcess.js +81 -0
  206. package/dist/compiler/training/rewind/gitTree.d.ts +14 -0
  207. package/dist/compiler/training/rewind/gitTree.js +90 -0
  208. package/dist/compiler/training/rewind/history.d.ts +28 -0
  209. package/dist/compiler/training/rewind/history.js +239 -0
  210. package/dist/compiler/training/rewind/index.d.ts +18 -0
  211. package/dist/compiler/training/rewind/index.js +15 -0
  212. package/dist/compiler/training/rewind/inputs.d.ts +9 -0
  213. package/dist/compiler/training/rewind/inputs.js +67 -0
  214. package/dist/compiler/training/rewind/instant.d.ts +4 -0
  215. package/dist/compiler/training/rewind/instant.js +24 -0
  216. package/dist/compiler/training/rewind/leakCheck.d.ts +10 -0
  217. package/dist/compiler/training/rewind/leakCheck.js +56 -0
  218. package/dist/compiler/training/rewind/leakFeed.d.ts +5 -0
  219. package/dist/compiler/training/rewind/leakFeed.js +25 -0
  220. package/dist/compiler/training/rewind/leakFiles.d.ts +10 -0
  221. package/dist/compiler/training/rewind/leakFiles.js +106 -0
  222. package/dist/compiler/training/rewind/leakGit.d.ts +3 -0
  223. package/dist/compiler/training/rewind/leakGit.js +78 -0
  224. package/dist/compiler/training/rewind/leakGitPayload.d.ts +4 -0
  225. package/dist/compiler/training/rewind/leakGitPayload.js +57 -0
  226. package/dist/compiler/training/rewind/leakInputs.d.ts +7 -0
  227. package/dist/compiler/training/rewind/leakInputs.js +135 -0
  228. package/dist/compiler/training/rewind/leakLayout.d.ts +2 -0
  229. package/dist/compiler/training/rewind/leakLayout.js +17 -0
  230. package/dist/compiler/training/rewind/leakProvenance.d.ts +3 -0
  231. package/dist/compiler/training/rewind/leakProvenance.js +88 -0
  232. package/dist/compiler/training/rewind/materialize.d.ts +136 -0
  233. package/dist/compiler/training/rewind/materialize.js +212 -0
  234. package/dist/compiler/training/rewind/memory.d.ts +10 -0
  235. package/dist/compiler/training/rewind/memory.js +84 -0
  236. package/dist/compiler/training/rewind/memorySchemas.d.ts +87 -0
  237. package/dist/compiler/training/rewind/memorySchemas.js +50 -0
  238. package/dist/compiler/training/rewind/moltnet.d.ts +2 -0
  239. package/dist/compiler/training/rewind/moltnet.js +54 -0
  240. package/dist/compiler/training/rewind/moltnetJson.d.ts +13 -0
  241. package/dist/compiler/training/rewind/moltnetJson.js +180 -0
  242. package/dist/compiler/training/rewind/moltnetSchemas.d.ts +1226 -0
  243. package/dist/compiler/training/rewind/moltnetSchemas.js +75 -0
  244. package/dist/compiler/training/rewind/moltnetSqlite.d.ts +31 -0
  245. package/dist/compiler/training/rewind/moltnetSqlite.js +192 -0
  246. package/dist/compiler/training/rewind/moltnetSqliteData.d.ts +10 -0
  247. package/dist/compiler/training/rewind/moltnetSqliteData.js +113 -0
  248. package/dist/compiler/training/rewind/recordInput.d.ts +40 -0
  249. package/dist/compiler/training/rewind/recordInput.js +49 -0
  250. package/dist/compiler/training/rewind/recordedBundle.d.ts +4 -0
  251. package/dist/compiler/training/rewind/recordedBundle.js +58 -0
  252. package/dist/compiler/training/rewind/recordedCommit.d.ts +2 -0
  253. package/dist/compiler/training/rewind/recordedCommit.js +10 -0
  254. package/dist/compiler/training/rewind/select.d.ts +18 -0
  255. package/dist/compiler/training/rewind/select.js +64 -0
  256. package/dist/compiler/training/rewind/snapshotManifest.d.ts +42 -0
  257. package/dist/compiler/training/rewind/snapshotManifest.js +134 -0
  258. package/dist/compiler/training/rewind/taskClock.d.ts +12 -0
  259. package/dist/compiler/training/rewind/taskClock.js +40 -0
  260. package/dist/compiler/training/rewind/timestamps.d.ts +4 -0
  261. package/dist/compiler/training/rewind/timestamps.js +26 -0
  262. package/dist/compiler/training/rewind/types.d.ts +43 -0
  263. package/dist/compiler/training/rewind/types.js +1 -0
  264. package/dist/compiler/training/rewind/volumes.d.ts +12 -0
  265. package/dist/compiler/training/rewind/volumes.js +58 -0
  266. package/dist/compiler/training/selection.d.ts +7 -0
  267. package/dist/compiler/training/selection.js +15 -0
  268. package/dist/compiler/types.d.ts +6 -3
  269. package/dist/compiler/upProject.d.ts +1 -0
  270. package/dist/compiler/upProject.js +21 -5
  271. package/dist/compiler/workspaceBundleArtifacts.d.ts +16 -1
  272. package/dist/compiler/workspaceBundleArtifacts.js +69 -20
  273. package/dist/compiler/workspaceBundleCache.d.ts +23 -0
  274. package/dist/compiler/workspaceBundleCache.js +79 -0
  275. package/dist/compiler/workspaceBundleDependencies.d.ts +21 -0
  276. package/dist/compiler/workspaceBundleDependencies.js +122 -0
  277. package/dist/compiler/workspaceBundleFiles.d.ts +51 -0
  278. package/dist/compiler/workspaceBundleFiles.js +251 -0
  279. package/dist/compiler/workspaceBundleGenerated.d.ts +25 -0
  280. package/dist/compiler/workspaceBundleGenerated.js +103 -0
  281. package/dist/compiler/workspaceBundleGit.d.ts +64 -0
  282. package/dist/compiler/workspaceBundleGit.js +154 -0
  283. package/dist/compiler/workspaceBundleKey.d.ts +34 -0
  284. package/dist/compiler/workspaceBundleKey.js +17 -0
  285. package/dist/compiler/workspaceBundleResolve.d.ts +56 -0
  286. package/dist/compiler/workspaceBundleResolve.js +144 -0
  287. package/dist/compiler/workspaceBundleRun.d.ts +41 -0
  288. package/dist/compiler/workspaceBundleRun.js +79 -0
  289. package/dist/compiler/workspaceBundleTar.d.ts +47 -0
  290. package/dist/compiler/workspaceBundleTar.js +140 -0
  291. package/dist/compiler/workspaceBundleTree.d.ts +15 -0
  292. package/dist/compiler/workspaceBundleTree.js +58 -0
  293. package/dist/compiler/workspaceGitFetch.d.ts +41 -0
  294. package/dist/compiler/workspaceGitFetch.js +155 -0
  295. package/dist/compiler/workspaceGitPins.d.ts +33 -0
  296. package/dist/compiler/workspaceGitPins.js +127 -0
  297. package/dist/compiler/workspaceResources.d.ts +5 -1
  298. package/dist/compiler/workspaceResources.js +32 -5
  299. package/dist/deployment/activation.d.ts +3 -0
  300. package/dist/deployment/activation.js +12 -0
  301. package/dist/deployment/canaryCutover.d.ts +1 -1
  302. package/dist/deployment/candidateRecording.d.ts +8 -0
  303. package/dist/deployment/candidateRecording.js +22 -0
  304. package/dist/deployment/dockerManager.d.ts +5 -3
  305. package/dist/deployment/dockerManager.js +12 -2
  306. package/dist/deployment/downDeployment.d.ts +2 -0
  307. package/dist/deployment/downDeployment.js +6 -2
  308. package/dist/deployment/homeStore.d.ts +9 -1
  309. package/dist/deployment/homeStore.js +16 -53
  310. package/dist/deployment/index.d.ts +6 -0
  311. package/dist/deployment/index.js +6 -0
  312. package/dist/deployment/pidLock.d.ts +25 -0
  313. package/dist/deployment/pidLock.js +81 -0
  314. package/dist/deployment/record.d.ts +85 -1
  315. package/dist/deployment/record.js +11 -5
  316. package/dist/deployment/recordPublication.d.ts +15 -0
  317. package/dist/deployment/recordPublication.js +76 -0
  318. package/dist/deployment/recordedMemoryRetention.d.ts +18 -0
  319. package/dist/deployment/recordedMemoryRetention.js +27 -0
  320. package/dist/deployment/resourceLog.d.ts +140 -0
  321. package/dist/deployment/resourceLog.js +78 -0
  322. package/dist/distribution/buildDistributionReport.d.ts +3 -0
  323. package/dist/distribution/buildDistributionReport.js +5 -0
  324. package/dist/distribution/consumeImage.d.ts +3 -0
  325. package/dist/distribution/consumeImage.js +23 -31
  326. package/dist/distribution/consumeImageLifecycle.d.ts +4 -1
  327. package/dist/distribution/consumeImageLifecycle.js +14 -3
  328. package/dist/distribution/consumeImageSupport.d.ts +7 -0
  329. package/dist/distribution/consumeImageSupport.js +25 -0
  330. package/dist/distribution/distributionReportSchema.d.ts +47 -0
  331. package/dist/distribution/distributionReportSchema.js +20 -0
  332. package/dist/distribution/renderImageInterface.js +1 -1
  333. package/dist/distribution/types.d.ts +15 -0
  334. package/dist/filesystem/durableWrite.d.ts +10 -0
  335. package/dist/filesystem/durableWrite.js +87 -0
  336. package/dist/filesystem/index.d.ts +2 -0
  337. package/dist/filesystem/index.js +2 -0
  338. package/dist/filesystem/retainedJsonl.d.ts +23 -0
  339. package/dist/filesystem/retainedJsonl.js +123 -0
  340. package/dist/manifest/commandSchemas.d.ts +5 -0
  341. package/dist/manifest/commandSchemas.js +5 -0
  342. package/dist/manifest/executionSchemas.d.ts +20 -0
  343. package/dist/manifest/executionSchemas.js +13 -3
  344. package/dist/manifest/index.d.ts +2 -0
  345. package/dist/manifest/index.js +2 -0
  346. package/dist/manifest/loadManifest.js +3 -26
  347. package/dist/manifest/mcpSchemas.d.ts +61 -0
  348. package/dist/manifest/mcpSchemas.js +57 -11
  349. package/dist/manifest/memorySchemas.d.ts +1 -1
  350. package/dist/manifest/memorySchemas.js +1 -1
  351. package/dist/manifest/parseManifest.d.ts +7 -0
  352. package/dist/manifest/parseManifest.js +65 -0
  353. package/dist/manifest/renderSpawnfile.js +4 -1
  354. package/dist/manifest/renderSpawnfileWorkspace.js +6 -2
  355. package/dist/manifest/schemas.d.ts +1206 -132
  356. package/dist/manifest/schemas.js +14 -4
  357. package/dist/manifest/teamNetworkSchemas.d.ts +1 -1
  358. package/dist/manifest/trainingDataSchemas.d.ts +357 -0
  359. package/dist/manifest/trainingDataSchemas.js +31 -0
  360. package/dist/manifest/trainingSchemas.d.ts +49 -0
  361. package/dist/manifest/trainingSchemas.js +44 -0
  362. package/dist/manifest/volumeFeedSchemas.d.ts +52 -0
  363. package/dist/manifest/volumeFeedSchemas.js +104 -0
  364. package/dist/manifest/workspaceSchemas.d.ts +182 -5
  365. package/dist/manifest/workspaceSchemas.js +111 -7
  366. package/dist/recording/compose.d.ts +3 -0
  367. package/dist/recording/compose.js +93 -0
  368. package/dist/recording/deployment.d.ts +15 -0
  369. package/dist/recording/deployment.js +38 -0
  370. package/dist/recording/history.d.ts +16 -0
  371. package/dist/recording/history.js +47 -0
  372. package/dist/recording/index.d.ts +9 -0
  373. package/dist/recording/index.js +9 -0
  374. package/dist/recording/moment.d.ts +61 -0
  375. package/dist/recording/moment.js +36 -0
  376. package/dist/recording/parse.d.ts +15 -0
  377. package/dist/recording/parse.js +74 -0
  378. package/dist/recording/read.d.ts +8 -0
  379. package/dist/recording/read.js +61 -0
  380. package/dist/recording/store.d.ts +10 -0
  381. package/dist/recording/store.js +94 -0
  382. package/dist/recording/sync.d.ts +24 -0
  383. package/dist/recording/sync.js +126 -0
  384. package/dist/recording/types.d.ts +45 -0
  385. package/dist/recording/types.js +2 -0
  386. package/dist/release/drainControl.d.ts +54 -0
  387. package/dist/release/drainControl.js +137 -0
  388. package/dist/release/drainPhase.d.ts +37 -0
  389. package/dist/release/drainPhase.js +161 -0
  390. package/dist/release/index.d.ts +11 -0
  391. package/dist/release/index.js +11 -0
  392. package/dist/release/ledger.d.ts +75 -0
  393. package/dist/release/ledger.js +111 -0
  394. package/dist/release/notify.d.ts +58 -0
  395. package/dist/release/notify.js +126 -0
  396. package/dist/release/pending.d.ts +35 -0
  397. package/dist/release/pending.js +60 -0
  398. package/dist/release/postDeploy.d.ts +32 -0
  399. package/dist/release/postDeploy.js +62 -0
  400. package/dist/release/releaseDefaults.d.ts +9 -0
  401. package/dist/release/releaseDefaults.js +115 -0
  402. package/dist/release/releaseDocker.d.ts +38 -0
  403. package/dist/release/releaseDocker.js +94 -0
  404. package/dist/release/releaseTypes.d.ts +94 -0
  405. package/dist/release/releaseTypes.js +1 -0
  406. package/dist/release/runRelease.d.ts +9 -0
  407. package/dist/release/runRelease.js +218 -0
  408. package/dist/release/swap.d.ts +23 -0
  409. package/dist/release/swap.js +55 -0
  410. package/dist/release/types.d.ts +50 -0
  411. package/dist/release/types.js +29 -0
  412. package/dist/report/index.d.ts +1 -0
  413. package/dist/report/index.js +1 -0
  414. package/dist/report/recording.d.ts +57 -0
  415. package/dist/report/recording.js +26 -0
  416. package/dist/report/types.d.ts +58 -0
  417. package/dist/runtime/container.js +8 -13
  418. package/dist/runtime/daimon/adapter.js +15 -4
  419. package/dist/runtime/daimon/config.d.ts +4 -0
  420. package/dist/runtime/daimon/config.js +53 -4
  421. package/dist/runtime/daimon/contract-manifest.json +1 -0
  422. package/dist/runtime/daimon/contract-manifest.sha256 +1 -0
  423. package/dist/runtime/daimon/contractManifest.d.ts +59 -8
  424. package/dist/runtime/daimon/contractManifest.js +26 -10
  425. package/dist/runtime/daimon/grokTurnLimits.d.ts +25 -0
  426. package/dist/runtime/daimon/grokTurnLimits.js +51 -0
  427. package/dist/runtime/daimon/grokWorkerConfigBytes.d.ts +17 -0
  428. package/dist/runtime/daimon/grokWorkerConfigBytes.js +17 -0
  429. package/dist/runtime/daimon/grokWorkerContract.d.ts +5 -0
  430. package/dist/runtime/daimon/grokWorkerContract.js +13 -1
  431. package/dist/runtime/daimon/recording.d.ts +19 -0
  432. package/dist/runtime/daimon/recording.js +50 -0
  433. package/dist/runtime/daimon/scheduleAuthority.d.ts +8 -0
  434. package/dist/runtime/daimon/scheduleAuthority.js +19 -5
  435. package/dist/runtime/daimon/wakeMoments.d.ts +15 -0
  436. package/dist/runtime/daimon/wakeMoments.js +17 -0
  437. package/dist/runtime/daimonInstall.d.ts +3 -0
  438. package/dist/runtime/daimonInstall.js +25 -0
  439. package/dist/runtime/index.d.ts +1 -0
  440. package/dist/runtime/index.js +1 -0
  441. package/dist/runtime/install.d.ts +2 -0
  442. package/dist/runtime/install.js +1 -0
  443. package/dist/runtime/openclaw/adapter.js +3 -0
  444. package/dist/runtime/pi/adapter.js +3 -0
  445. package/dist/runtime/pi/containerTargets.js +6 -0
  446. package/dist/runtime/picoclaw/adapter.js +3 -0
  447. package/dist/runtime/registry.d.ts +3 -0
  448. package/dist/runtime/registry.js +13 -1
  449. package/dist/runtime/types.d.ts +15 -0
  450. package/dist/runtime/usageLedgerRead.d.ts +6 -0
  451. package/dist/runtime/usageLedgerRead.js +3 -3
  452. package/dist/shared/index.d.ts +1 -0
  453. package/dist/shared/index.js +1 -0
  454. package/dist/shared/recording.d.ts +8 -0
  455. package/dist/shared/recording.js +25 -0
  456. package/dist/target/dockerCommandExecutorCore.js +1 -1
  457. package/dist/target/dockerTargetBinding.js +2 -1
  458. package/dist/volume/feedLand.d.ts +31 -0
  459. package/dist/volume/feedLand.js +174 -0
  460. package/dist/volume/feedLandings.d.ts +45 -0
  461. package/dist/volume/feedLandings.js +111 -0
  462. package/dist/volume/feedLayout.d.ts +61 -0
  463. package/dist/volume/feedLayout.js +234 -0
  464. package/dist/volume/feedLock.d.ts +7 -0
  465. package/dist/volume/feedLock.js +131 -0
  466. package/dist/volume/feedManifest.d.ts +27 -0
  467. package/dist/volume/feedManifest.js +123 -0
  468. package/dist/volume/feedPrepare.d.ts +16 -0
  469. package/dist/volume/feedPrepare.js +228 -0
  470. package/dist/volume/feedProject.d.ts +39 -0
  471. package/dist/volume/feedProject.js +92 -0
  472. package/dist/volume/feedRecord.d.ts +55 -0
  473. package/dist/volume/feedRecord.js +148 -0
  474. package/dist/volume/feedRef.d.ts +43 -0
  475. package/dist/volume/feedRef.js +117 -0
  476. package/dist/volume/feedRefresh.d.ts +15 -0
  477. package/dist/volume/feedRefresh.js +187 -0
  478. package/dist/volume/feedSource.d.ts +66 -0
  479. package/dist/volume/feedSource.js +104 -0
  480. package/dist/volume/feedTarget.d.ts +70 -0
  481. package/dist/volume/feedTarget.js +9 -0
  482. package/dist/volume/feedTestKit.d.ts +11 -0
  483. package/dist/volume/feedTestKit.js +45 -0
  484. package/dist/volume/feedVerify.d.ts +18 -0
  485. package/dist/volume/feedVerify.js +104 -0
  486. package/dist/volume/index.d.ts +13 -0
  487. package/dist/volume/index.js +13 -0
  488. package/package.json +3 -3
  489. package/runtimes.yaml +8 -6
@@ -1,6 +1,11 @@
1
1
  import type { TrainingContext } from "../contract.js";
2
2
  import type { TrainingImagePlan } from "../preparation/image.js";
3
3
  import type { PlannedInput } from "../preparation/inputs.js";
4
+ export declare function validateMeasurementRepairOutput(options: {
5
+ parent: string;
6
+ output: string;
7
+ resume: boolean;
8
+ }): Promise<string>;
4
9
  export declare function planMeasurementRepair(options: {
5
10
  parent: string;
6
11
  witness?: string;
@@ -20,7 +25,8 @@ export declare function planMeasurementRepair(options: {
20
25
  parentPreparationDigest: string;
21
26
  imagePlanDigest: string;
22
27
  config: {
23
- version: "spawnfile.training-container.v3" | "spawnfile.training-container.v2";
28
+ version: "spawnfile.training-container.v3" | "spawnfile.training-container.v4" | "spawnfile.training-container.v2";
29
+ slots: number;
24
30
  dockerContext: string;
25
31
  image: {
26
32
  ref: string;
@@ -29,13 +35,14 @@ export declare function planMeasurementRepair(options: {
29
35
  recipe: "daimon-dspy.v1";
30
36
  nativeImage: string;
31
37
  pythonImage: string;
32
- platform: "linux/arm64" | "linux/amd64";
38
+ platform: "linux/amd64" | "linux/arm64";
33
39
  paideia: string;
34
40
  bridge: string;
35
41
  claude: string;
36
42
  integration: {
37
43
  source: string;
38
44
  entry: string;
45
+ execution?: "spawnfile.training-execution.v1" | undefined;
39
46
  };
40
47
  compiler?: string | undefined;
41
48
  grok?: {
@@ -73,7 +80,20 @@ export declare function planMeasurementRepair(options: {
73
80
  source: string;
74
81
  provider: "codex" | "claude";
75
82
  }[];
83
+ evaluatorRoutes?: {
84
+ purpose: "decisions" | "extraction" | "proposals";
85
+ provider: "codex-subscription" | "typesafe";
86
+ model: string;
87
+ maxRequests: number;
88
+ maxSpendUsd?: number | undefined;
89
+ }[] | undefined;
90
+ evaluatorSecrets?: {
91
+ provider: "typesafe";
92
+ source: string;
93
+ }[] | undefined;
94
+ subjectIsolation?: "codex-native-sandbox" | undefined;
76
95
  broker?: {
96
+ maxRunRequests: number;
77
97
  engine: "grok";
78
98
  agentId: string;
79
99
  model: "grok-4.6" | "grok-4.5" | "grok-build";
@@ -162,13 +182,14 @@ export declare function planMeasurementRepair(options: {
162
182
  recipe: "daimon-dspy.v1";
163
183
  nativeImage: string;
164
184
  pythonImage: string;
165
- platform: "linux/arm64" | "linux/amd64";
185
+ platform: "linux/amd64" | "linux/arm64";
166
186
  paideia: string;
167
187
  bridge: string;
168
188
  claude: string;
169
189
  integration: {
170
190
  source: string;
171
191
  entry: string;
192
+ execution?: "spawnfile.training-execution.v1" | undefined;
172
193
  };
173
194
  compiler?: string | undefined;
174
195
  grok?: {
@@ -187,6 +208,137 @@ export declare function planMeasurementRepair(options: {
187
208
  size: number;
188
209
  }[];
189
210
  };
211
+ execution?: {
212
+ version: "spawnfile.training-execution.v1";
213
+ authoring: {
214
+ version: "spawnfile.training-plan.v1";
215
+ producer: {
216
+ package: "spawnfile";
217
+ version: string;
218
+ };
219
+ project: {
220
+ root: string;
221
+ manifest: string;
222
+ };
223
+ agent: {
224
+ id: string;
225
+ name: string;
226
+ };
227
+ record: {
228
+ keep: string | null;
229
+ volumes: {
230
+ id: string;
231
+ declaredBy: string;
232
+ }[];
233
+ } | null;
234
+ optimizer: {
235
+ method: string;
236
+ model: string;
237
+ variants: number;
238
+ keep: number;
239
+ budget: {
240
+ rounds: number;
241
+ };
242
+ } | null;
243
+ graders: {
244
+ sourcePath: string;
245
+ path: string;
246
+ name: string;
247
+ declaredBy: string;
248
+ }[];
249
+ targets: {
250
+ declaredBy: string;
251
+ grader: string;
252
+ files: {
253
+ sourcePath: string;
254
+ path: string;
255
+ consumers: string[];
256
+ }[];
257
+ datasets: {
258
+ train: {
259
+ sourcePath: string;
260
+ path: string;
261
+ examples: {
262
+ id: string;
263
+ at: string;
264
+ wake: {
265
+ surface: "moltnet";
266
+ room: string;
267
+ from: string;
268
+ text: string;
269
+ };
270
+ overrides: {
271
+ id: string;
272
+ declaredBy: string;
273
+ section: "memory" | "resources" | "networks";
274
+ }[];
275
+ }[];
276
+ };
277
+ validation: {
278
+ sourcePath: string;
279
+ path: string;
280
+ examples: {
281
+ id: string;
282
+ at: string;
283
+ wake: {
284
+ surface: "moltnet";
285
+ room: string;
286
+ from: string;
287
+ text: string;
288
+ };
289
+ overrides: {
290
+ id: string;
291
+ declaredBy: string;
292
+ section: "memory" | "resources" | "networks";
293
+ }[];
294
+ }[];
295
+ } | null;
296
+ test: {
297
+ sourcePath: string;
298
+ path: string;
299
+ examples: {
300
+ id: string;
301
+ at: string;
302
+ wake: {
303
+ surface: "moltnet";
304
+ room: string;
305
+ from: string;
306
+ text: string;
307
+ };
308
+ overrides: {
309
+ id: string;
310
+ declaredBy: string;
311
+ section: "memory" | "resources" | "networks";
312
+ }[];
313
+ }[];
314
+ };
315
+ };
316
+ }[];
317
+ deadlines?: {
318
+ experiment_ms: number;
319
+ trial_ms?: number | undefined;
320
+ } | undefined;
321
+ preparation?: {
322
+ hook: string;
323
+ history?: string | undefined;
324
+ } | undefined;
325
+ };
326
+ datasetPins: {
327
+ sourcePath: string;
328
+ sha256: string;
329
+ }[];
330
+ optimizer: {
331
+ method: string;
332
+ model: string;
333
+ variants: number;
334
+ keep: number;
335
+ budget: {
336
+ rounds: number;
337
+ };
338
+ };
339
+ args: string[];
340
+ output: string;
341
+ } | undefined;
190
342
  repair?: {
191
343
  witness: string;
192
344
  parent: string;
@@ -9,9 +9,8 @@ const commandSchema = z.object({ schema: z.literal("paideia.command-checkpoint.v
9
9
  identity: z.string().regex(/^[a-f0-9]{64}$/u),
10
10
  lineage: z.object({ parentId: z.string().uuid(), parentIdentity: z.string().regex(/^[a-f0-9]{64}$/u),
11
11
  receiptDigest: z.string().regex(/^sha256:[a-f0-9]{64}$/u) }).strict().optional() }).strict();
12
- export async function planMeasurementRepair(options) {
12
+ export async function validateMeasurementRepairOutput(options) {
13
13
  const parent = await exactPath(options.parent);
14
- assertInputRoot(parent, options.auth);
15
14
  if (within(parent, options.output) || within(options.output, parent))
16
15
  throw Error("Repair output must be disjoint from parent");
17
16
  if (!options.resume) {
@@ -24,6 +23,11 @@ export async function planMeasurementRepair(options) {
24
23
  throw error;
25
24
  }
26
25
  }
26
+ return parent;
27
+ }
28
+ export async function planMeasurementRepair(options) {
29
+ const parent = await validateMeasurementRepairOutput(options);
30
+ assertInputRoot(parent, options.auth);
27
31
  const staging = path.join(path.dirname(parent), `.spawnfile-training-preparation-${hashJson(parent).slice(7, 23)}`);
28
32
  const witness = await readTrainingWitness(options.witness ?? path.join(staging, "witness/manifest.json"));
29
33
  const state = JSON.parse(await readFile(path.join(staging, "state.json"), "utf8"));
@@ -1,4 +1,5 @@
1
1
  import type { TrainingContext } from "../contract.js";
2
+ import { type TrainingExecution } from "../execution.js";
2
3
  import type { TrainingPreparationConfig } from "../preparation/contract.js";
3
4
  import type { TrainingImagePlan } from "../preparation/image.js";
4
5
  import type { PlannedInput } from "../preparation/inputs.js";
@@ -10,7 +11,8 @@ export declare function readTrainingWitness(file: string): Promise<{
10
11
  parentPreparationDigest: string;
11
12
  imagePlanDigest: string;
12
13
  config: {
13
- version: "spawnfile.training-container.v3" | "spawnfile.training-container.v2";
14
+ version: "spawnfile.training-container.v3" | "spawnfile.training-container.v4" | "spawnfile.training-container.v2";
15
+ slots: number;
14
16
  dockerContext: string;
15
17
  image: {
16
18
  ref: string;
@@ -19,13 +21,14 @@ export declare function readTrainingWitness(file: string): Promise<{
19
21
  recipe: "daimon-dspy.v1";
20
22
  nativeImage: string;
21
23
  pythonImage: string;
22
- platform: "linux/arm64" | "linux/amd64";
24
+ platform: "linux/amd64" | "linux/arm64";
23
25
  paideia: string;
24
26
  bridge: string;
25
27
  claude: string;
26
28
  integration: {
27
29
  source: string;
28
30
  entry: string;
31
+ execution?: "spawnfile.training-execution.v1" | undefined;
29
32
  };
30
33
  compiler?: string | undefined;
31
34
  grok?: {
@@ -63,7 +66,20 @@ export declare function readTrainingWitness(file: string): Promise<{
63
66
  source: string;
64
67
  provider: "codex" | "claude";
65
68
  }[];
69
+ evaluatorRoutes?: {
70
+ purpose: "decisions" | "extraction" | "proposals";
71
+ provider: "codex-subscription" | "typesafe";
72
+ model: string;
73
+ maxRequests: number;
74
+ maxSpendUsd?: number | undefined;
75
+ }[] | undefined;
76
+ evaluatorSecrets?: {
77
+ provider: "typesafe";
78
+ source: string;
79
+ }[] | undefined;
80
+ subjectIsolation?: "codex-native-sandbox" | undefined;
66
81
  broker?: {
82
+ maxRunRequests: number;
67
83
  engine: "grok";
68
84
  agentId: string;
69
85
  model: "grok-4.6" | "grok-4.5" | "grok-build";
@@ -152,13 +168,14 @@ export declare function readTrainingWitness(file: string): Promise<{
152
168
  recipe: "daimon-dspy.v1";
153
169
  nativeImage: string;
154
170
  pythonImage: string;
155
- platform: "linux/arm64" | "linux/amd64";
171
+ platform: "linux/amd64" | "linux/arm64";
156
172
  paideia: string;
157
173
  bridge: string;
158
174
  claude: string;
159
175
  integration: {
160
176
  source: string;
161
177
  entry: string;
178
+ execution?: "spawnfile.training-execution.v1" | undefined;
162
179
  };
163
180
  compiler?: string | undefined;
164
181
  grok?: {
@@ -177,6 +194,137 @@ export declare function readTrainingWitness(file: string): Promise<{
177
194
  size: number;
178
195
  }[];
179
196
  };
197
+ execution?: {
198
+ version: "spawnfile.training-execution.v1";
199
+ authoring: {
200
+ version: "spawnfile.training-plan.v1";
201
+ producer: {
202
+ package: "spawnfile";
203
+ version: string;
204
+ };
205
+ project: {
206
+ root: string;
207
+ manifest: string;
208
+ };
209
+ agent: {
210
+ id: string;
211
+ name: string;
212
+ };
213
+ record: {
214
+ keep: string | null;
215
+ volumes: {
216
+ id: string;
217
+ declaredBy: string;
218
+ }[];
219
+ } | null;
220
+ optimizer: {
221
+ method: string;
222
+ model: string;
223
+ variants: number;
224
+ keep: number;
225
+ budget: {
226
+ rounds: number;
227
+ };
228
+ } | null;
229
+ graders: {
230
+ sourcePath: string;
231
+ path: string;
232
+ name: string;
233
+ declaredBy: string;
234
+ }[];
235
+ targets: {
236
+ declaredBy: string;
237
+ grader: string;
238
+ files: {
239
+ sourcePath: string;
240
+ path: string;
241
+ consumers: string[];
242
+ }[];
243
+ datasets: {
244
+ train: {
245
+ sourcePath: string;
246
+ path: string;
247
+ examples: {
248
+ id: string;
249
+ at: string;
250
+ wake: {
251
+ surface: "moltnet";
252
+ room: string;
253
+ from: string;
254
+ text: string;
255
+ };
256
+ overrides: {
257
+ id: string;
258
+ declaredBy: string;
259
+ section: "memory" | "resources" | "networks";
260
+ }[];
261
+ }[];
262
+ };
263
+ validation: {
264
+ sourcePath: string;
265
+ path: string;
266
+ examples: {
267
+ id: string;
268
+ at: string;
269
+ wake: {
270
+ surface: "moltnet";
271
+ room: string;
272
+ from: string;
273
+ text: string;
274
+ };
275
+ overrides: {
276
+ id: string;
277
+ declaredBy: string;
278
+ section: "memory" | "resources" | "networks";
279
+ }[];
280
+ }[];
281
+ } | null;
282
+ test: {
283
+ sourcePath: string;
284
+ path: string;
285
+ examples: {
286
+ id: string;
287
+ at: string;
288
+ wake: {
289
+ surface: "moltnet";
290
+ room: string;
291
+ from: string;
292
+ text: string;
293
+ };
294
+ overrides: {
295
+ id: string;
296
+ declaredBy: string;
297
+ section: "memory" | "resources" | "networks";
298
+ }[];
299
+ }[];
300
+ };
301
+ };
302
+ }[];
303
+ deadlines?: {
304
+ experiment_ms: number;
305
+ trial_ms?: number | undefined;
306
+ } | undefined;
307
+ preparation?: {
308
+ hook: string;
309
+ history?: string | undefined;
310
+ } | undefined;
311
+ };
312
+ datasetPins: {
313
+ sourcePath: string;
314
+ sha256: string;
315
+ }[];
316
+ optimizer: {
317
+ method: string;
318
+ model: string;
319
+ variants: number;
320
+ keep: number;
321
+ budget: {
322
+ rounds: number;
323
+ };
324
+ };
325
+ args: string[];
326
+ output: string;
327
+ } | undefined;
180
328
  repair?: {
181
329
  witness: string;
182
330
  parent: string;
@@ -192,6 +340,7 @@ export declare function writeTrainingWitness(options: {
192
340
  config: TrainingPreparationConfig;
193
341
  context: TrainingContext;
194
342
  args: readonly string[];
343
+ execution?: TrainingExecution;
195
344
  inputs: PlannedInput[];
196
345
  staged: string[];
197
346
  snapshots: (string | null)[];
@@ -1,5 +1,6 @@
1
1
  import { mkdir, readFile, writeFile } from "node:fs/promises";
2
2
  import path from "node:path";
3
+ import { trainingExecutionIdentity } from "../execution.js";
3
4
  import { copySealed, exactPath, fileIdentity, hashJson, sealTree } from "../preparation/files.js";
4
5
  import { witnessEnvelopeSchema } from "./contract.js";
5
6
  export async function readTrainingWitness(file) {
@@ -18,9 +19,13 @@ export async function readTrainingWitness(file) {
18
19
  if (hashJson({ recipe, nativeImage, pythonImage, platform, files: witness.image.files,
19
20
  dockerfile: witness.image.dockerfile, entry: witness.image.entry, brokerEntry: witness.image.brokerEntry }) !== witness.imagePlanDigest)
20
21
  throw Error("Training witness recipe identity mismatch");
21
- const expected = hashJson({ config: raw.manifest && raw.manifest.config,
22
+ // Validate with the schemas above, but hash the original property order used by preparation.
23
+ const manifest = raw.manifest;
24
+ const expected = hashJson({ config: manifest.config,
22
25
  sources: witness.inputs.map(input => ({ id: input.id, digest: input.digest })),
23
- image: witness.imagePlanDigest, canonical: witness.context.project.sourceDigest, ...(witness.repair ? { repair: witness.repair } : {}) });
26
+ image: witness.imagePlanDigest, canonical: witness.context.project.sourceDigest,
27
+ ...(manifest.execution ? { execution: trainingExecutionIdentity(manifest.execution) } : {}),
28
+ ...(witness.repair ? { repair: witness.repair } : {}) });
24
29
  if (expected !== witness.parentPreparationDigest)
25
30
  throw Error("Training witness preparation identity mismatch");
26
31
  return { ...parsed, path: canonical };
@@ -32,6 +37,7 @@ export async function writeTrainingWitness(options) {
32
37
  await copySealed(options.plan.files, path.join(directory, "image-files"));
33
38
  const manifest = { schema: "spawnfile.training-witness.v1", parentImage: options.image,
34
39
  parentPreparationDigest: options.digest, imagePlanDigest: options.plan.digest, config: options.config,
40
+ ...(options.execution ? { execution: options.execution } : {}),
35
41
  ...(options.repair ? { repair: options.repair } : {}),
36
42
  context: options.context, command: { args: [...options.args] },
37
43
  inputs: options.inputs.map((input, index) => ({ id: input.id, source: input.source, destination: input.destination,
@@ -0,0 +1,25 @@
1
+ import type { TrainingDeclaration, TrainingTarget } from "../../manifest/index.js";
2
+ import type { CompilePlanNode } from "../types.js";
3
+ export interface ResolvedTrainingGrader {
4
+ sourcePath: string;
5
+ /** A source key during traversal; a stable node ID in the finished compile plan. */
6
+ declaredBy: string;
7
+ }
8
+ export interface ResolvedTraining {
9
+ deadlines?: TrainingDeclaration["deadlines"];
10
+ preparation?: {
11
+ hook: string;
12
+ history?: string;
13
+ };
14
+ record?: TrainingDeclaration["record"];
15
+ optimizer?: TrainingDeclaration["optimizer"];
16
+ graders: Record<string, ResolvedTrainingGrader>;
17
+ /** Only this node's targets, with absolute file and dataset paths. */
18
+ targets: TrainingTarget[];
19
+ }
20
+ /** Resolve declaration-relative paths before any inheritance or shadowing. */
21
+ export declare const resolveTrainingDeclaration: (declaration: TrainingDeclaration | undefined, manifestPath: string, declaredBy: string) => ResolvedTraining | undefined;
22
+ /** Direct team membership only: field merges, local arrays, local targets. */
23
+ export declare const mergeTrainingDeclarations: (inherited: ResolvedTraining | undefined, local: ResolvedTraining | undefined) => ResolvedTraining | undefined;
24
+ /** Provenance uses the same stable IDs as every finished graph consumer. */
25
+ export declare const resolvePlanTrainingSources: (nodes: CompilePlanNode[]) => void;
@@ -0,0 +1,69 @@
1
+ import path from "node:path";
2
+ import { SpawnfileError } from "../../shared/index.js";
3
+ /** Resolve declaration-relative paths before any inheritance or shadowing. */
4
+ export const resolveTrainingDeclaration = (declaration, manifestPath, declaredBy) => {
5
+ if (declaration === undefined)
6
+ return undefined;
7
+ const resolve = (value) => path.resolve(path.dirname(manifestPath), value);
8
+ return {
9
+ ...(declaration.deadlines === undefined ? {} : { deadlines: { ...declaration.deadlines } }),
10
+ ...(declaration.preparation === undefined ? {} : { preparation: { ...declaration.preparation,
11
+ ...(declaration.preparation.history === undefined ? {} : { history: resolve(declaration.preparation.history) }) } }),
12
+ ...(declaration.record === undefined ? {} : { record: { ...declaration.record,
13
+ ...(declaration.record.volumes === undefined ? {} : { volumes: [...declaration.record.volumes] }) } }),
14
+ ...(declaration.optimizer === undefined ? {} : { optimizer: { ...declaration.optimizer,
15
+ ...(declaration.optimizer.budget === undefined ? {} : { budget: { ...declaration.optimizer.budget } }) } }),
16
+ graders: Object.fromEntries(Object.entries(declaration.graders ?? {})
17
+ .sort(([left], [right]) => left.localeCompare(right))
18
+ .map(([name, value]) => [name, { sourcePath: resolve(value), declaredBy }])),
19
+ targets: (declaration.targets ?? []).map((target) => ({
20
+ files: target.files.map(resolve),
21
+ grader: target.grader,
22
+ datasets: {
23
+ train: resolve(target.datasets.train),
24
+ ...(target.datasets.validation === undefined ? {} : { validation: resolve(target.datasets.validation) }),
25
+ test: resolve(target.datasets.test)
26
+ }
27
+ }))
28
+ };
29
+ };
30
+ /** Direct team membership only: field merges, local arrays, local targets. */
31
+ export const mergeTrainingDeclarations = (inherited, local) => {
32
+ const deadlines = inherited?.deadlines === undefined && local?.deadlines === undefined
33
+ ? undefined : { ...inherited?.deadlines, ...local?.deadlines };
34
+ const record = inherited?.record === undefined && local?.record === undefined
35
+ ? undefined : { ...inherited?.record, ...local?.record };
36
+ const budget = inherited?.optimizer?.budget === undefined && local?.optimizer?.budget === undefined
37
+ ? undefined : { ...inherited?.optimizer?.budget, ...local?.optimizer?.budget };
38
+ const optimizer = inherited?.optimizer === undefined && local?.optimizer === undefined
39
+ ? undefined : { ...inherited?.optimizer, ...local?.optimizer, ...(budget === undefined ? {} : { budget }) };
40
+ const graders = { ...inherited?.graders, ...local?.graders };
41
+ const targets = local?.targets ?? [];
42
+ const preparation = local?.preparation ?? inherited?.preparation;
43
+ if (deadlines === undefined && preparation === undefined && record === undefined && optimizer === undefined && Object.keys(graders).length === 0 && targets.length === 0) {
44
+ return undefined;
45
+ }
46
+ return {
47
+ ...(deadlines === undefined ? {} : { deadlines }),
48
+ ...(preparation === undefined ? {} : { preparation }),
49
+ ...(record === undefined ? {} : { record }),
50
+ ...(optimizer === undefined ? {} : { optimizer }),
51
+ graders: Object.fromEntries(Object.entries(graders).sort(([left], [right]) => left.localeCompare(right))),
52
+ targets
53
+ };
54
+ };
55
+ /** Provenance uses the same stable IDs as every finished graph consumer. */
56
+ export const resolvePlanTrainingSources = (nodes) => {
57
+ const idBySource = new Map(nodes.map((node) => [node.value.source, node.id]));
58
+ for (const node of nodes) {
59
+ if (!node.value.training)
60
+ continue;
61
+ node.value.training.graders = Object.fromEntries(Object.entries(node.value.training.graders).map(([name, grader]) => {
62
+ const declaredBy = idBySource.get(grader.declaredBy);
63
+ if (declaredBy === undefined) {
64
+ throw new SpawnfileError("compile_error", `Training grader ${name} has unknown declaring source ${grader.declaredBy}`);
65
+ }
66
+ return [name, { ...grader, declaredBy }];
67
+ }));
68
+ }
69
+ };