spawnfile 0.1.14 → 0.1.17

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 (546) hide show
  1. package/README.md +60 -159
  2. package/dist/audit/checksShared.d.ts +1 -1
  3. package/dist/auth/importers.d.ts +10 -0
  4. package/dist/auth/importers.js +29 -4
  5. package/dist/auth/index.d.ts +2 -0
  6. package/dist/auth/index.js +1 -0
  7. package/dist/auth/paths.d.ts +1 -1
  8. package/dist/auth/profileStore.js +9 -9
  9. package/dist/auth/targetSecretSourceFsIdentity.d.ts +40 -0
  10. package/dist/auth/targetSecretSourceFsIdentity.js +42 -0
  11. package/dist/auth/targetSecretSourceFsPublish.d.ts +2 -0
  12. package/dist/auth/targetSecretSourceFsPublish.js +3 -1
  13. package/dist/auth/targetSecretSourceFsPublishImmutable.d.ts +2 -1
  14. package/dist/auth/targetSecretSourceFsPublishImmutable.js +104 -71
  15. package/dist/auth/targetSecretSourceFsRead.js +5 -14
  16. package/dist/auth/trainingAuth.d.ts +21 -0
  17. package/dist/auth/trainingAuth.js +86 -0
  18. package/dist/auth/types.d.ts +1 -1
  19. package/dist/cli/authCommands.d.ts +1 -1
  20. package/dist/cli/authCommands.js +9 -0
  21. package/dist/cli/canaryCutoverCommand.d.ts +2 -0
  22. package/dist/cli/canaryCutoverCommand.js +30 -0
  23. package/dist/cli/capabilitiesCommand.d.ts +3 -0
  24. package/dist/cli/capabilitiesCommand.js +12 -0
  25. package/dist/cli/capabilitiesReceipt.d.ts +56 -0
  26. package/dist/cli/capabilitiesReceipt.js +56 -0
  27. package/dist/cli/compileBuildCommands.js +13 -0
  28. package/dist/cli/composedLifecycleContractSet.d.ts +21 -0
  29. package/dist/cli/composedLifecycleContractSet.js +204 -0
  30. package/dist/cli/devCommands.js +2 -0
  31. package/dist/cli/downCommand.js +19 -8
  32. package/dist/cli/evidenceExportHelperCommand.d.ts +13 -0
  33. package/dist/cli/evidenceExportHelperCommand.js +51 -0
  34. package/dist/cli/index.js +12 -3
  35. package/dist/cli/lifecycleMachine.d.ts +7 -1
  36. package/dist/cli/lifecycleMachine.js +2 -2
  37. package/dist/cli/paideiaDelegation.d.ts +17 -0
  38. package/dist/cli/paideiaDelegation.js +210 -0
  39. package/dist/cli/paideiaSupervisor.d.ts +17 -0
  40. package/dist/cli/paideiaSupervisor.js +48 -0
  41. package/dist/cli/productStateCloneCommand.d.ts +2 -0
  42. package/dist/cli/productStateCloneCommand.js +34 -0
  43. package/dist/cli/runCli.d.ts +13 -3
  44. package/dist/cli/runCli.js +37 -9
  45. package/dist/cli/targetCommands.d.ts +4 -7
  46. package/dist/cli/targetCommands.js +16 -46
  47. package/dist/cli/targetConfigPreparedPlan.d.ts +3 -0
  48. package/dist/cli/targetConfigPreparedPlan.js +74 -0
  49. package/dist/cli/targetConfigResolver.d.ts +3 -0
  50. package/dist/cli/targetConfigResolver.js +111 -0
  51. package/dist/cli/targetConfigResolverCommand.d.ts +6 -0
  52. package/dist/cli/targetConfigResolverCommand.js +43 -0
  53. package/dist/cli/targetConfigResolverContracts.d.ts +56 -0
  54. package/dist/cli/targetConfigResolverContracts.js +30 -0
  55. package/dist/cli/targetConfigResolverDocker.d.ts +4 -0
  56. package/dist/cli/targetConfigResolverDocker.js +47 -0
  57. package/dist/cli/targetConfigResolverValidation.d.ts +10 -0
  58. package/dist/cli/targetConfigResolverValidation.js +94 -0
  59. package/dist/cli/targetDefaultAuthorities.d.ts +2 -0
  60. package/dist/cli/targetDefaultAuthorities.js +3 -0
  61. package/dist/cli/targetDefaultConfig.d.ts +7 -0
  62. package/dist/cli/targetDefaultConfig.js +22 -5
  63. package/dist/cli/targetDefaultConfigStdin.js +7 -1
  64. package/dist/cli/targetDefaultHandlerFactory.js +23 -2
  65. package/dist/cli/targetDefaultHandlers.d.ts +2 -2
  66. package/dist/cli/targetProductionCommands.d.ts +5 -0
  67. package/dist/cli/targetProductionCommands.js +45 -0
  68. package/dist/cli/trainCommand.d.ts +3 -0
  69. package/dist/cli/trainCommand.js +61 -0
  70. package/dist/cli/upCommand.js +35 -6
  71. package/dist/cli/upLifecycleRecovery.d.ts +2 -2
  72. package/dist/cli/upLifecycleRecovery.js +188 -44
  73. package/dist/cli/usageCommand.d.ts +40 -0
  74. package/dist/cli/usageCommand.js +284 -0
  75. package/dist/cli/usageCommandLive.d.ts +84 -0
  76. package/dist/cli/usageCommandLive.js +95 -0
  77. package/dist/cli/usageDeploymentSource.d.ts +9 -0
  78. package/dist/cli/usageDeploymentSource.js +22 -0
  79. package/dist/cli/workspaceResourceMigrationCommand.d.ts +8 -0
  80. package/dist/cli/workspaceResourceMigrationCommand.js +36 -0
  81. package/dist/compiler/buildCompilePlanTeams.d.ts +1 -1
  82. package/dist/compiler/buildCompilePlanTeams.js +6 -1
  83. package/dist/compiler/compilePlanHelpers.js +3 -0
  84. package/dist/compiler/compileProject.d.ts +2 -0
  85. package/dist/compiler/compileProject.js +5 -1
  86. package/dist/compiler/compileProjectSupport.js +9 -0
  87. package/dist/compiler/containerArtifacts.d.ts +3 -1
  88. package/dist/compiler/containerArtifacts.js +92 -40
  89. package/dist/compiler/containerArtifactsPlans.d.ts +1 -1
  90. package/dist/compiler/containerArtifactsPlans.js +24 -7
  91. package/dist/compiler/containerArtifactsRender.d.ts +2 -1
  92. package/dist/compiler/containerArtifactsRender.js +91 -58
  93. package/dist/compiler/containerArtifactsTypes.d.ts +8 -0
  94. package/dist/compiler/containerBackedMountRender.d.ts +56 -0
  95. package/dist/compiler/containerBackedMountRender.js +101 -0
  96. package/dist/compiler/containerDaimonBrokerRender.d.ts +112 -0
  97. package/dist/compiler/containerDaimonBrokerRender.js +191 -0
  98. package/dist/compiler/containerDaimonGrokWorkerProvisioning.d.ts +38 -0
  99. package/dist/compiler/containerDaimonGrokWorkerProvisioning.js +108 -0
  100. package/dist/compiler/containerDaimonGrokWorkerRender.d.ts +172 -0
  101. package/dist/compiler/containerDaimonGrokWorkerRender.js +268 -0
  102. package/dist/compiler/containerDaimonOwnershipGuardRender.d.ts +12 -0
  103. package/dist/compiler/containerDaimonOwnershipGuardRender.js +191 -0
  104. package/dist/compiler/containerDaimonUidEntrypointRender.d.ts +24 -0
  105. package/dist/compiler/containerDaimonUidEntrypointRender.js +297 -0
  106. package/dist/compiler/containerEntrypointRender.d.ts +7 -0
  107. package/dist/compiler/containerEntrypointRender.js +28 -22
  108. package/dist/compiler/containerPersistentMounts.d.ts +30 -0
  109. package/dist/compiler/containerPersistentMounts.js +66 -0
  110. package/dist/compiler/containerReadinessPaths.d.ts +1 -0
  111. package/dist/compiler/containerReadinessPaths.js +1 -0
  112. package/dist/compiler/containerRuntimeLinkMaterializer.d.ts +2 -0
  113. package/dist/compiler/containerRuntimeLinkMaterializer.js +12 -0
  114. package/dist/compiler/containerRuntimeReadinessRender.d.ts +7 -0
  115. package/dist/compiler/containerRuntimeReadinessRender.js +40 -0
  116. package/dist/compiler/containerStateOwnershipRender.d.ts +4 -0
  117. package/dist/compiler/containerStateOwnershipRender.js +75 -0
  118. package/dist/compiler/containerTargetResources.d.ts +22 -1
  119. package/dist/compiler/containerTargetResources.js +94 -2
  120. package/dist/compiler/containerVolumeBootstrap.d.ts +3 -0
  121. package/dist/compiler/containerVolumeBootstrap.js +3 -0
  122. package/dist/compiler/containerWorkspaceResourceRender.js +49 -1
  123. package/dist/compiler/daimonTelemetryArtifacts.d.ts +2 -2
  124. package/dist/compiler/daimonTelemetryArtifacts.js +5 -10
  125. package/dist/compiler/deploymentLineage.d.ts +40 -0
  126. package/dist/compiler/deploymentLineage.js +50 -0
  127. package/dist/compiler/index.d.ts +3 -0
  128. package/dist/compiler/index.js +3 -0
  129. package/dist/compiler/initProject.d.ts +2 -0
  130. package/dist/compiler/initProject.js +39 -1
  131. package/dist/compiler/localMoltnetAuthority.d.ts +64 -0
  132. package/dist/compiler/localMoltnetAuthority.js +177 -0
  133. package/dist/compiler/memoryArtifacts.d.ts +1 -1
  134. package/dist/compiler/memoryArtifacts.js +108 -32
  135. package/dist/compiler/modelEnv.d.ts +5 -0
  136. package/dist/compiler/modelEnv.js +8 -2
  137. package/dist/compiler/moltnetArtifactPaths.d.ts +17 -12
  138. package/dist/compiler/moltnetArtifactPaths.js +17 -15
  139. package/dist/compiler/moltnetArtifactTypes.d.ts +10 -0
  140. package/dist/compiler/moltnetArtifacts.d.ts +1 -1
  141. package/dist/compiler/moltnetArtifacts.js +52 -12
  142. package/dist/compiler/moltnetBinaries.d.ts +16 -4
  143. package/dist/compiler/moltnetBinaries.js +46 -6
  144. package/dist/compiler/moltnetClientConfig.js +1 -1
  145. package/dist/compiler/moltnetConfigLowering.d.ts +3 -1
  146. package/dist/compiler/moltnetConfigLowering.js +30 -6
  147. package/dist/compiler/moltnetNodeConfig.js +1 -1
  148. package/dist/compiler/moltnetReleaseAuthority.d.ts +24 -1
  149. package/dist/compiler/moltnetReleaseAuthority.js +33 -4
  150. package/dist/compiler/moltnetRepresentativeResolution.d.ts +1 -1
  151. package/dist/compiler/moltnetRepresentativeResolution.js +2 -2
  152. package/dist/compiler/moltnetResolution.js +9 -15
  153. package/dist/compiler/moltnetRoomMemberships.js +20 -5
  154. package/dist/compiler/moltnetRoomPolicyCompatibility.d.ts +1 -1
  155. package/dist/compiler/moltnetRoomPolicyCompatibility.js +3 -1
  156. package/dist/compiler/moltnetRuntimeConfig.d.ts +1 -1
  157. package/dist/compiler/moltnetRuntimeConfig.js +22 -2
  158. package/dist/compiler/moltnetServerPlans.js +19 -0
  159. package/dist/compiler/organizationExternalParticipants.d.ts +3 -0
  160. package/dist/compiler/organizationExternalParticipants.js +176 -0
  161. package/dist/compiler/organizationIdentity.d.ts +3 -9
  162. package/dist/compiler/organizationIdentity.js +37 -270
  163. package/dist/compiler/organizationIdentityGraph.d.ts +15 -0
  164. package/dist/compiler/organizationIdentityGraph.js +115 -0
  165. package/dist/compiler/organizationReadyEvidence.d.ts +8 -0
  166. package/dist/compiler/organizationReadyEvidence.js +23 -3
  167. package/dist/compiler/runProject.d.ts +4 -2
  168. package/dist/compiler/runProject.js +32 -6
  169. package/dist/compiler/runProjectAuth.d.ts +3 -1
  170. package/dist/compiler/runProjectAuth.js +19 -3
  171. package/dist/compiler/runProjectDaimonCodexDocker.d.ts +3 -0
  172. package/dist/compiler/runProjectDaimonCodexDocker.js +36 -0
  173. package/dist/compiler/runProjectDocker.d.ts +8 -4
  174. package/dist/compiler/runProjectDocker.js +43 -18
  175. package/dist/compiler/runProjectDockerDaimonGuards.d.ts +15 -0
  176. package/dist/compiler/runProjectDockerDaimonGuards.js +122 -0
  177. package/dist/compiler/runProjectDockerReservation.d.ts +3 -0
  178. package/dist/compiler/runProjectDockerReservation.js +118 -0
  179. package/dist/compiler/runProjectLifecycle.js +1 -1
  180. package/dist/compiler/training/broker/declaration.d.ts +45 -0
  181. package/dist/compiler/training/broker/declaration.js +55 -0
  182. package/dist/compiler/training/broker/entrypoint.d.ts +39 -0
  183. package/dist/compiler/training/broker/entrypoint.js +111 -0
  184. package/dist/compiler/training/broker/index.d.ts +10 -0
  185. package/dist/compiler/training/broker/index.js +10 -0
  186. package/dist/compiler/training/broker/main.d.ts +2 -0
  187. package/dist/compiler/training/broker/main.js +14 -0
  188. package/dist/compiler/training/broker/paths.d.ts +196 -0
  189. package/dist/compiler/training/broker/paths.js +241 -0
  190. package/dist/compiler/training/broker/processes.d.ts +42 -0
  191. package/dist/compiler/training/broker/processes.js +99 -0
  192. package/dist/compiler/training/broker/projection.d.ts +51 -0
  193. package/dist/compiler/training/broker/projection.js +76 -0
  194. package/dist/compiler/training/broker/provisioning.d.ts +87 -0
  195. package/dist/compiler/training/broker/provisioning.js +213 -0
  196. package/dist/compiler/training/broker/receipt.d.ts +77 -0
  197. package/dist/compiler/training/broker/receipt.js +110 -0
  198. package/dist/compiler/training/broker/registration.d.ts +41 -0
  199. package/dist/compiler/training/broker/registration.js +102 -0
  200. package/dist/compiler/training/broker/runtime.d.ts +25 -0
  201. package/dist/compiler/training/broker/runtime.js +173 -0
  202. package/dist/compiler/training/broker/seccompRoutes.d.ts +31 -0
  203. package/dist/compiler/training/broker/seccompRoutes.js +36 -0
  204. package/dist/compiler/training/broker/supervisor.d.ts +109 -0
  205. package/dist/compiler/training/broker/supervisor.js +173 -0
  206. package/dist/compiler/training/container/contract.d.ts +31 -0
  207. package/dist/compiler/training/container/contract.js +33 -0
  208. package/dist/compiler/training/container/index.d.ts +4 -0
  209. package/dist/compiler/training/container/index.js +2 -0
  210. package/dist/compiler/training/container/launch.d.ts +18 -0
  211. package/dist/compiler/training/container/launch.js +173 -0
  212. package/dist/compiler/training/container/prepare.d.ts +8 -0
  213. package/dist/compiler/training/container/prepare.js +80 -0
  214. package/dist/compiler/training/container/process.d.ts +14 -0
  215. package/dist/compiler/training/container/process.js +70 -0
  216. package/dist/compiler/training/container/security.d.ts +36 -0
  217. package/dist/compiler/training/container/security.js +58 -0
  218. package/dist/compiler/training/context.d.ts +7 -0
  219. package/dist/compiler/training/context.js +93 -0
  220. package/dist/compiler/training/contract.d.ts +142 -0
  221. package/dist/compiler/training/contract.js +34 -0
  222. package/dist/compiler/training/index.d.ts +4 -0
  223. package/dist/compiler/training/index.js +3 -0
  224. package/dist/compiler/training/preparation/assets/Dockerfile +98 -0
  225. package/dist/compiler/training/preparation/assets/package-lock.json +3787 -0
  226. package/dist/compiler/training/preparation/broker.d.ts +21 -0
  227. package/dist/compiler/training/preparation/broker.js +43 -0
  228. package/dist/compiler/training/preparation/contextModes.d.ts +12 -0
  229. package/dist/compiler/training/preparation/contextModes.js +38 -0
  230. package/dist/compiler/training/preparation/contract.d.ts +182 -0
  231. package/dist/compiler/training/preparation/contract.js +94 -0
  232. package/dist/compiler/training/preparation/copyAssets.d.ts +1 -0
  233. package/dist/compiler/training/preparation/copyAssets.js +8 -0
  234. package/dist/compiler/training/preparation/daimonParent.d.ts +42 -0
  235. package/dist/compiler/training/preparation/daimonParent.js +114 -0
  236. package/dist/compiler/training/preparation/files.d.ts +25 -0
  237. package/dist/compiler/training/preparation/files.js +85 -0
  238. package/dist/compiler/training/preparation/image.d.ts +28 -0
  239. package/dist/compiler/training/preparation/image.js +102 -0
  240. package/dist/compiler/training/preparation/index.d.ts +3 -0
  241. package/dist/compiler/training/preparation/index.js +2 -0
  242. package/dist/compiler/training/preparation/inputs.d.ts +23 -0
  243. package/dist/compiler/training/preparation/inputs.js +93 -0
  244. package/dist/compiler/training/preparation/prepare.d.ts +33 -0
  245. package/dist/compiler/training/preparation/prepare.js +186 -0
  246. package/dist/compiler/training/preparation/scratch.d.ts +19 -0
  247. package/dist/compiler/training/preparation/scratch.js +48 -0
  248. package/dist/compiler/training/repair/compatibility.d.ts +11 -0
  249. package/dist/compiler/training/repair/compatibility.js +34 -0
  250. package/dist/compiler/training/repair/contract.d.ts +506 -0
  251. package/dist/compiler/training/repair/contract.js +31 -0
  252. package/dist/compiler/training/repair/index.d.ts +3 -0
  253. package/dist/compiler/training/repair/index.js +3 -0
  254. package/dist/compiler/training/repair/prepare.d.ts +230 -0
  255. package/dist/compiler/training/repair/prepare.js +74 -0
  256. package/dist/compiler/training/repair/witness.d.ts +203 -0
  257. package/dist/compiler/training/repair/witness.js +42 -0
  258. package/dist/compiler/types.d.ts +2 -0
  259. package/dist/compiler/upProject.d.ts +26 -1
  260. package/dist/compiler/upProject.js +117 -178
  261. package/dist/compiler/upProjectHandoff.d.ts +62 -0
  262. package/dist/compiler/upProjectHandoff.js +204 -0
  263. package/dist/compiler/upReceipt.js +49 -4
  264. package/dist/compiler/updateProjectModels.js +1 -0
  265. package/dist/compiler/view/types.d.ts +1 -1
  266. package/dist/compiler/workspaceBundleArtifacts.d.ts +3 -0
  267. package/dist/compiler/workspaceBundleArtifacts.js +106 -0
  268. package/dist/compiler/workspaceResources.d.ts +4 -1
  269. package/dist/compiler/workspaceResources.js +12 -7
  270. package/dist/deployment/artifactsExportPlan.js +51 -1
  271. package/dist/deployment/canaryCutover.d.ts +42 -0
  272. package/dist/deployment/canaryCutover.js +140 -0
  273. package/dist/deployment/candidateDiagnostics.d.ts +15 -0
  274. package/dist/deployment/candidateDiagnostics.js +90 -0
  275. package/dist/deployment/dockerLogs.js +4 -1
  276. package/dist/deployment/dockerManager.js +9 -3
  277. package/dist/deployment/dockerProbeGateway.d.ts +17 -0
  278. package/dist/deployment/dockerProbeGateway.js +17 -2
  279. package/dist/deployment/downDeployment.d.ts +5 -0
  280. package/dist/deployment/downDeployment.js +109 -8
  281. package/dist/deployment/downReceiptTypes.d.ts +17 -2
  282. package/dist/deployment/downReceiptTypes.js +17 -2
  283. package/dist/deployment/index.d.ts +4 -0
  284. package/dist/deployment/index.js +4 -0
  285. package/dist/deployment/lifecycleCompletionContracts.d.ts +66 -0
  286. package/dist/deployment/lifecycleCompletionContracts.js +34 -0
  287. package/dist/deployment/lifecycleCompletionPaths.d.ts +4 -1
  288. package/dist/deployment/lifecycleCompletionPaths.js +3 -0
  289. package/dist/deployment/lifecycleCompletionPublication.d.ts +2 -0
  290. package/dist/deployment/lifecycleCompletionPublication.js +18 -4
  291. package/dist/deployment/lifecycleCompletionStore.d.ts +1 -1
  292. package/dist/deployment/lifecycleCompletionStore.js +7 -7
  293. package/dist/deployment/lifecycleUpRecords.d.ts +11 -0
  294. package/dist/deployment/lifecycleUpRecords.js +127 -0
  295. package/dist/deployment/native/AGENTS.md +11 -0
  296. package/dist/deployment/native/rename-noreplace-arm64 +0 -0
  297. package/dist/deployment/native/rename-noreplace-arm64.provenance.json +1 -0
  298. package/dist/deployment/native/rename-noreplace-x64 +0 -0
  299. package/dist/deployment/native/rename-noreplace-x64.provenance.json +1 -0
  300. package/dist/deployment/noReplaceActivation.d.ts +17 -0
  301. package/dist/deployment/noReplaceActivation.js +50 -0
  302. package/dist/deployment/organizationHandoffAuthorityFsBudget.d.ts +110 -0
  303. package/dist/deployment/organizationHandoffAuthorityFsBudget.js +156 -0
  304. package/dist/deployment/organizationHandoffAuthorityFsClient.js +82 -27
  305. package/dist/deployment/organizationHandoffAuthorityFsElection.d.ts +21 -0
  306. package/dist/deployment/organizationHandoffAuthorityFsElection.js +57 -0
  307. package/dist/deployment/organizationHandoffAuthorityFsWorker.js +254 -108
  308. package/dist/deployment/organizationHandoffAuthorityFsWorkerStall.fixture.d.ts +1 -0
  309. package/dist/deployment/organizationHandoffAuthorityFsWorkerStall.fixture.js +16 -0
  310. package/dist/deployment/organizationHandoffAuthorityStore.js +14 -7
  311. package/dist/deployment/organizationHandoffAuthorityTypes.d.ts +2 -2
  312. package/dist/deployment/organizationHandoffAuthorityTypes.js +2 -1
  313. package/dist/deployment/organizationReady.d.ts +2 -0
  314. package/dist/deployment/organizationReady.js +36 -4
  315. package/dist/deployment/productStateClone.d.ts +43 -0
  316. package/dist/deployment/productStateClone.js +319 -0
  317. package/dist/deployment/upLifecycleRecoveryState.d.ts +23 -0
  318. package/dist/deployment/upLifecycleRecoveryState.js +12 -0
  319. package/dist/deployment/upReceiptTypes.d.ts +32 -6
  320. package/dist/deployment/upReceiptTypes.js +29 -2
  321. package/dist/deployment/workspaceResourceMigration.d.ts +55 -0
  322. package/dist/deployment/workspaceResourceMigration.js +315 -0
  323. package/dist/dev/project.d.ts +7 -0
  324. package/dist/dev/project.js +9 -0
  325. package/dist/distribution/consumeImage.d.ts +2 -0
  326. package/dist/distribution/consumeImage.js +98 -73
  327. package/dist/distribution/consumeImageDaimonDocker.d.ts +3 -0
  328. package/dist/distribution/consumeImageDaimonDocker.js +45 -0
  329. package/dist/distribution/consumeImageLifecycle.d.ts +17 -0
  330. package/dist/distribution/consumeImageLifecycle.js +231 -0
  331. package/dist/distribution/consumeImageSupport.d.ts +12 -0
  332. package/dist/distribution/consumeImageSupport.js +15 -0
  333. package/dist/distribution/distributionReportSchema.d.ts +11 -1
  334. package/dist/distribution/distributionReportSchema.js +15 -2
  335. package/dist/distribution/dockerRunner.d.ts +6 -1
  336. package/dist/distribution/dockerRunner.js +31 -4
  337. package/dist/distribution/imageRuntimeAuth.d.ts +9 -1
  338. package/dist/distribution/imageRuntimeAuth.js +70 -1
  339. package/dist/distribution/index.d.ts +1 -1
  340. package/dist/distribution/index.js +1 -1
  341. package/dist/distribution/preflight.js +5 -1
  342. package/dist/distribution/types.d.ts +14 -1
  343. package/dist/distribution/types.js +3 -0
  344. package/dist/evidenceExportHelper/boundedExecutor.d.ts +3 -0
  345. package/dist/evidenceExportHelper/boundedExecutor.js +33 -0
  346. package/dist/evidenceExportHelper/helperProgram.mjs +156 -0
  347. package/dist/evidenceExportHelper/index.d.ts +4 -0
  348. package/dist/evidenceExportHelper/index.js +4 -0
  349. package/dist/evidenceExportHelper/preparedAuthority.d.ts +64 -0
  350. package/dist/evidenceExportHelper/preparedAuthority.js +228 -0
  351. package/dist/evidenceExportHelper/preparedBuilder.d.ts +10 -0
  352. package/dist/evidenceExportHelper/preparedBuilder.js +183 -0
  353. package/dist/evidenceExportHelper/preparedBuilderTypes.d.ts +19 -0
  354. package/dist/evidenceExportHelper/preparedBuilderTypes.js +1 -0
  355. package/dist/evidenceExportHelper/recipe.d.ts +7 -0
  356. package/dist/evidenceExportHelper/recipe.js +83 -0
  357. package/dist/filesystem/io.d.ts +2 -0
  358. package/dist/filesystem/io.js +16 -1
  359. package/dist/manifest/executionSchemas.d.ts +27 -0
  360. package/dist/manifest/executionSchemas.js +21 -2
  361. package/dist/manifest/mcpSchemas.d.ts +1 -0
  362. package/dist/manifest/mcpSchemas.js +3 -0
  363. package/dist/manifest/renderSpawnfileNetworks.js +11 -0
  364. package/dist/manifest/renderSpawnfileWorkspace.js +5 -0
  365. package/dist/manifest/scheduleSchemas.d.ts +3 -1
  366. package/dist/manifest/scheduleSchemas.js +91 -5
  367. package/dist/manifest/schemas.d.ts +237 -12
  368. package/dist/manifest/schemas.js +5 -2
  369. package/dist/manifest/teamNetworkAccessSchemas.d.ts +5 -1
  370. package/dist/manifest/teamNetworkAccessSchemas.js +11 -0
  371. package/dist/manifest/teamNetworkAuthSchemas.d.ts +1 -1
  372. package/dist/manifest/teamNetworkSchemas.d.ts +17 -3
  373. package/dist/manifest/teamNetworkSchemas.js +19 -1
  374. package/dist/manifest/teamNetworkServerSchemas.d.ts +8 -3
  375. package/dist/manifest/teamNetworkServerSchemas.js +18 -2
  376. package/dist/manifest/workspaceSchemas.d.ts +16 -0
  377. package/dist/manifest/workspaceSchemas.js +11 -0
  378. package/dist/report/types.d.ts +34 -4
  379. package/dist/runtime/common.d.ts +28 -1
  380. package/dist/runtime/common.js +33 -3
  381. package/dist/runtime/container.js +49 -33
  382. package/dist/runtime/daimon/adapter.d.ts +14 -0
  383. package/dist/runtime/daimon/adapter.js +243 -0
  384. package/dist/runtime/daimon/attention.d.ts +8 -0
  385. package/dist/runtime/daimon/attention.js +32 -0
  386. package/dist/runtime/daimon/config.d.ts +25 -0
  387. package/dist/runtime/daimon/config.js +272 -0
  388. package/dist/runtime/daimon/contractManifest.d.ts +295 -0
  389. package/dist/runtime/daimon/contractManifest.js +319 -0
  390. package/dist/runtime/daimon/grokModel.d.ts +19 -0
  391. package/dist/runtime/daimon/grokModel.js +33 -0
  392. package/dist/runtime/daimon/grokWorkerConfigBytes.d.ts +26 -0
  393. package/dist/runtime/daimon/grokWorkerConfigBytes.js +36 -0
  394. package/dist/runtime/daimon/grokWorkerContract.d.ts +22 -0
  395. package/dist/runtime/daimon/grokWorkerContract.js +48 -0
  396. package/dist/runtime/daimon/memory.d.ts +57 -0
  397. package/dist/runtime/daimon/memory.js +125 -0
  398. package/dist/runtime/daimon/runAuth.d.ts +51 -0
  399. package/dist/runtime/daimon/runAuth.js +279 -0
  400. package/dist/runtime/daimon/runtimeIdentity.d.ts +22 -0
  401. package/dist/runtime/daimon/runtimeIdentity.js +22 -0
  402. package/dist/runtime/daimon/scheduleAuthority.d.ts +3 -0
  403. package/dist/runtime/daimon/scheduleAuthority.js +17 -0
  404. package/dist/runtime/index.d.ts +4 -0
  405. package/dist/runtime/index.js +4 -0
  406. package/dist/runtime/install.d.ts +3 -0
  407. package/dist/runtime/install.js +3 -0
  408. package/dist/runtime/localDaimonAuthority.d.ts +11 -0
  409. package/dist/runtime/localDaimonAuthority.js +77 -0
  410. package/dist/runtime/mnemeMcp.d.ts +13 -0
  411. package/dist/runtime/mnemeMcp.js +26 -0
  412. package/dist/runtime/openclaw/adapter.js +2 -2
  413. package/dist/runtime/pi/adapter.d.ts +0 -1
  414. package/dist/runtime/pi/adapter.js +2 -6
  415. package/dist/runtime/pi/appCliSource.js +1 -1
  416. package/dist/runtime/pi/appScheduleSource.js +6 -2
  417. package/dist/runtime/pi/appTemplateTypes.d.ts +1 -1
  418. package/dist/runtime/picoclaw/adapter.js +2 -2
  419. package/dist/runtime/registry.d.ts +3 -0
  420. package/dist/runtime/registry.js +19 -2
  421. package/dist/runtime/scheduleUtils.d.ts +1 -0
  422. package/dist/runtime/scheduleUtils.js +5 -1
  423. package/dist/runtime/types.d.ts +25 -0
  424. package/dist/runtime/usageLedger.d.ts +158 -0
  425. package/dist/runtime/usageLedger.js +269 -0
  426. package/dist/runtime/usageLedgerRead.d.ts +48 -0
  427. package/dist/runtime/usageLedgerRead.js +102 -0
  428. package/dist/runtime/usageRequestLedger.d.ts +42 -0
  429. package/dist/runtime/usageRequestLedger.js +72 -0
  430. package/dist/shared/daimonCodexDocker.d.ts +32 -0
  431. package/dist/shared/daimonCodexDocker.js +120 -0
  432. package/dist/shared/daimonGrokSeccompProfile.d.ts +10 -0
  433. package/dist/shared/daimonGrokSeccompProfile.js +11 -0
  434. package/dist/shared/index.d.ts +2 -0
  435. package/dist/shared/index.js +2 -0
  436. package/dist/shared/types.d.ts +1 -1
  437. package/dist/shared/volumeNames.d.ts +6 -0
  438. package/dist/shared/volumeNames.js +14 -0
  439. package/dist/target/dockerArtifactsProvider.js +34 -7
  440. package/dist/target/dockerBaseImage.d.ts +2 -0
  441. package/dist/target/dockerBaseImage.js +11 -0
  442. package/dist/target/dockerCommandExecutor.d.ts +11 -0
  443. package/dist/target/dockerCommandExecutor.js +53 -2
  444. package/dist/target/dockerCommandExecutorCore.d.ts +2 -1
  445. package/dist/target/dockerCommandExecutorCore.js +4 -2
  446. package/dist/target/dockerPublicArtifactSnapshot.d.ts +3 -3
  447. package/dist/target/dockerPublicArtifactSnapshot.js +17 -33
  448. package/dist/target/dockerTarget.d.ts +1 -0
  449. package/dist/target/dockerTargetBinding.d.ts +1 -2
  450. package/dist/target/dockerTargetBinding.js +2 -3
  451. package/dist/target/dockerTargetExecFile.d.ts +19 -0
  452. package/dist/target/dockerTargetExecFile.js +194 -0
  453. package/dist/target/dockerWorldServiceProvider.d.ts +4 -0
  454. package/dist/target/dockerWorldServiceProvider.js +13 -1
  455. package/dist/target/evidenceExport.d.ts +3 -1
  456. package/dist/target/evidenceExport.js +12 -3
  457. package/dist/target/evidenceExportOperationsTestKit.js +3 -3
  458. package/dist/target/evidenceExportProvider.d.ts +2 -0
  459. package/dist/target/evidenceExportProvider.js +15 -5
  460. package/dist/target/publicArtifactSnapshot.d.ts +31 -0
  461. package/dist/target/publicArtifactSnapshot.js +37 -3
  462. package/examples/README.md +45 -0
  463. package/examples/agent-with-subagents/AGENTS.md +3 -0
  464. package/examples/agent-with-subagents/Spawnfile +30 -0
  465. package/examples/agent-with-subagents/subagents/critic/AGENTS.md +3 -0
  466. package/examples/agent-with-subagents/subagents/critic/Spawnfile +15 -0
  467. package/examples/agent-with-subagents/subagents/researcher/AGENTS.md +3 -0
  468. package/examples/agent-with-subagents/subagents/researcher/Spawnfile +17 -0
  469. package/examples/daimon-org/Spawnfile +68 -0
  470. package/examples/daimon-org/TEAM.md +4 -0
  471. package/examples/daimon-org/agents/mapper/AGENTS.md +4 -0
  472. package/examples/daimon-org/agents/mapper/Spawnfile +37 -0
  473. package/examples/daimon-org/shared/skills/file-note/SKILL.md +9 -0
  474. package/examples/daimon-org/teams/review/Spawnfile +53 -0
  475. package/examples/daimon-org/teams/review/agents/reviewer/AGENTS.md +4 -0
  476. package/examples/daimon-org/teams/review/agents/reviewer/Spawnfile +37 -0
  477. package/examples/daimon-public-host/AGENTS.md +3 -0
  478. package/examples/daimon-public-host/Spawnfile +21 -0
  479. package/examples/distribution-org/Spawnfile +43 -0
  480. package/examples/distribution-org/TEAM.md +4 -0
  481. package/examples/distribution-org/agents/coordinator/AGENTS.md +1 -0
  482. package/examples/distribution-org/agents/coordinator/Spawnfile +20 -0
  483. package/examples/distribution-org/agents/researcher/AGENTS.md +1 -0
  484. package/examples/distribution-org/agents/researcher/Spawnfile +20 -0
  485. package/examples/jungian-daimon-org/Spawnfile +41 -0
  486. package/examples/jungian-daimon-org/TEAM.md +21 -0
  487. package/examples/jungian-daimon-org/teams/luna/Spawnfile +47 -0
  488. package/examples/jungian-daimon-org/teams/luna/TEAM.md +4 -0
  489. package/examples/jungian-daimon-org/teams/luna/agents/animus/AGENTS.md +10 -0
  490. package/examples/jungian-daimon-org/teams/luna/agents/animus/Spawnfile +33 -0
  491. package/examples/jungian-daimon-org/teams/luna/agents/representative/AGENTS.md +21 -0
  492. package/examples/jungian-daimon-org/teams/luna/agents/representative/Spawnfile +30 -0
  493. package/examples/jungian-daimon-org/teams/luna/agents/shadow/AGENTS.md +10 -0
  494. package/examples/jungian-daimon-org/teams/luna/agents/shadow/Spawnfile +33 -0
  495. package/examples/jungian-daimon-org/teams/selene/Spawnfile +47 -0
  496. package/examples/jungian-daimon-org/teams/selene/TEAM.md +4 -0
  497. package/examples/jungian-daimon-org/teams/selene/agents/animus/AGENTS.md +10 -0
  498. package/examples/jungian-daimon-org/teams/selene/agents/animus/Spawnfile +33 -0
  499. package/examples/jungian-daimon-org/teams/selene/agents/representative/AGENTS.md +19 -0
  500. package/examples/jungian-daimon-org/teams/selene/agents/representative/Spawnfile +33 -0
  501. package/examples/jungian-daimon-org/teams/selene/agents/shadow/AGENTS.md +10 -0
  502. package/examples/jungian-daimon-org/teams/selene/agents/shadow/Spawnfile +30 -0
  503. package/examples/mixed-runtime-org/Spawnfile +71 -0
  504. package/examples/mixed-runtime-org/TEAM.md +8 -0
  505. package/examples/mixed-runtime-org/agents/analyst/AGENTS.md +8 -0
  506. package/examples/mixed-runtime-org/agents/analyst/Spawnfile +27 -0
  507. package/examples/mixed-runtime-org/agents/conductor/AGENTS.md +8 -0
  508. package/examples/mixed-runtime-org/agents/conductor/Spawnfile +27 -0
  509. package/examples/mixed-runtime-org/agents/localist/AGENTS.md +7 -0
  510. package/examples/mixed-runtime-org/agents/localist/Spawnfile +50 -0
  511. package/examples/moltnet-team-chat/Spawnfile +43 -0
  512. package/examples/moltnet-team-chat/TEAM.md +5 -0
  513. package/examples/moltnet-team-chat/agents/coordinator/AGENTS.md +9 -0
  514. package/examples/moltnet-team-chat/agents/coordinator/Spawnfile +26 -0
  515. package/examples/moltnet-team-chat/teams/analysis/Spawnfile +23 -0
  516. package/examples/moltnet-team-chat/teams/analysis/TEAM.md +3 -0
  517. package/examples/moltnet-team-chat/teams/analysis/agents/observer/AGENTS.md +5 -0
  518. package/examples/moltnet-team-chat/teams/analysis/agents/observer/Spawnfile +19 -0
  519. package/examples/moltnet-team-chat/teams/analysis/agents/representative/AGENTS.md +5 -0
  520. package/examples/moltnet-team-chat/teams/analysis/agents/representative/Spawnfile +19 -0
  521. package/examples/moltnet-team-chat/teams/field/Spawnfile +41 -0
  522. package/examples/moltnet-team-chat/teams/field/TEAM.md +3 -0
  523. package/examples/moltnet-team-chat/teams/field/agents/observer/AGENTS.md +5 -0
  524. package/examples/moltnet-team-chat/teams/field/agents/observer/Spawnfile +26 -0
  525. package/examples/moltnet-team-chat/teams/field/agents/representative/AGENTS.md +11 -0
  526. package/examples/moltnet-team-chat/teams/field/agents/representative/Spawnfile +26 -0
  527. package/examples/single-agent/AGENTS.md +3 -0
  528. package/examples/single-agent/HEARTBEAT.md +3 -0
  529. package/examples/single-agent/IDENTITY.md +3 -0
  530. package/examples/single-agent/MEMORY.md +3 -0
  531. package/examples/single-agent/SOUL.md +3 -0
  532. package/examples/single-agent/Spawnfile +41 -0
  533. package/examples/single-agent/skills/web_search/SKILL.md +6 -0
  534. package/moltnet-releases.json +5 -4
  535. package/package.json +36 -9
  536. package/runtimes.yaml +5 -2
  537. package/dist/cli/targetWorldClockCrossProcess.test-helper.d.ts +0 -13
  538. package/dist/cli/targetWorldClockCrossProcess.test-helper.js +0 -109
  539. package/dist/deployment/providerRuntimeBoundaryScanner.test-helper.d.ts +0 -8
  540. package/dist/deployment/providerRuntimeBoundaryScanner.test-helper.js +0 -60
  541. package/dist/deployment/simfileFixtureBoundary.test-helper.d.ts +0 -8
  542. package/dist/deployment/simfileFixtureBoundary.test-helper.js +0 -103
  543. package/dist/ownership/simfileRunOperatorInputs.d.ts +0 -103
  544. package/dist/ownership/simfileRunOperatorInputs.js +0 -139
  545. package/dist/target/cleanupRunDocker.test-helper.d.ts +0 -67
  546. package/dist/target/cleanupRunDocker.test-helper.js +0 -238
@@ -0,0 +1,210 @@
1
+ import { spawn } 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 { setTimeout as delay } from "node:timers/promises";
6
+ import { fileURLToPath } from "node:url";
7
+ import { trainingContextSchema } from "../compiler/training/index.js";
8
+ import { launchTrainingContainer } from "../compiler/training/container/index.js";
9
+ import { runTrainingDocker } from "../compiler/training/container/process.js";
10
+ import { prepareTraining } from "../compiler/training/preparation/index.js";
11
+ import { readBoundedJson } from "../compiler/training/preparation/inputs.js";
12
+ import { SpawnfileError } from "../shared/index.js";
13
+ const MAX_LINE_BYTES = 1024 * 1024;
14
+ const validReceipt = (line, dryRun) => {
15
+ try {
16
+ const value = JSON.parse(line);
17
+ if (typeof value !== "object" || value === null)
18
+ return false;
19
+ const receipt = value;
20
+ return dryRun
21
+ ? receipt.schema === "paideia.training-cost-plan.v1" && receipt.modelCallsMade === 0
22
+ : receipt.status === "completed" && typeof receipt.index === "string" && receipt.index.length > 0;
23
+ }
24
+ catch {
25
+ return false;
26
+ }
27
+ };
28
+ const failure = (message) => new SpawnfileError("runtime_error", message);
29
+ const runChild = (options, contextPath) => new Promise((resolve, reject) => {
30
+ if (options.signal?.aborted) {
31
+ resolve(130);
32
+ return;
33
+ }
34
+ // Node strips types in a source checkout; the packaged build selects its emitted JS.
35
+ const extension = path.extname(fileURLToPath(import.meta.url));
36
+ const supervisor = fileURLToPath(new URL(`./paideiaSupervisor${extension}`, import.meta.url));
37
+ const child = spawn(process.execPath, ["--experimental-strip-types", supervisor, options.command,
38
+ "train", "--spawnfile-context", contextPath, ...options.args], {
39
+ shell: false, detached: true, stdio: ["ignore", "pipe", "pipe", "ipc"]
40
+ });
41
+ const pid = child.pid;
42
+ let stdout = "", stderr = "", lastLine = "";
43
+ let stopCode, error, outcome;
44
+ let reaped = false, closed = false, finished = false;
45
+ let killTimer;
46
+ const kill = (signal) => {
47
+ if (pid === undefined || reaped)
48
+ return;
49
+ try {
50
+ process.kill(-pid, signal);
51
+ }
52
+ catch (caught) {
53
+ if (caught.code !== "ESRCH")
54
+ error = failure("Could not signal the owned Paideia process group");
55
+ }
56
+ };
57
+ const groupExists = () => {
58
+ if (pid === undefined)
59
+ return false;
60
+ try {
61
+ process.kill(-pid, 0);
62
+ return true;
63
+ }
64
+ catch (caught) {
65
+ return caught.code !== "ESRCH";
66
+ }
67
+ };
68
+ const stop = (code, cause) => {
69
+ if (stopCode !== undefined)
70
+ return;
71
+ stopCode = code;
72
+ error = cause;
73
+ kill("SIGTERM");
74
+ killTimer = setTimeout(() => kill("SIGKILL"), 1000);
75
+ killTimer.unref();
76
+ };
77
+ const interrupt = () => stop(130), terminate = () => stop(143), abort = () => stop(130);
78
+ const timer = setTimeout(() => stop(1, failure("Paideia training exceeded its command deadline")), options.timeoutMs);
79
+ timer.unref();
80
+ process.once("SIGINT", interrupt);
81
+ process.once("SIGTERM", terminate);
82
+ options.signal?.addEventListener("abort", abort, { once: true });
83
+ if (options.signal?.aborted)
84
+ abort();
85
+ const consume = (chunk, channel) => {
86
+ const lines = ((channel === "stdout" ? stdout : stderr) + chunk).split("\n");
87
+ const remainder = lines.pop();
88
+ if ([remainder, ...lines].some((line) => Buffer.byteLength(line, "utf8") > MAX_LINE_BYTES)) {
89
+ stop(1, failure("Paideia output exceeded the bounded JSON-line contract"));
90
+ return;
91
+ }
92
+ for (const raw of lines) {
93
+ const line = raw.replace(/\r$/u, "");
94
+ if (!line.trim())
95
+ continue;
96
+ if (channel === "stdout")
97
+ lastLine = line;
98
+ options.streams[channel](line);
99
+ }
100
+ if (channel === "stdout")
101
+ stdout = remainder;
102
+ else
103
+ stderr = remainder;
104
+ };
105
+ child.stdout.setEncoding("utf8").on("data", (chunk) => consume(chunk, "stdout"));
106
+ child.stderr.setEncoding("utf8").on("data", (chunk) => consume(chunk, "stderr"));
107
+ child.once("message", (message) => {
108
+ outcome = message;
109
+ if (message.type === "paideia.process.launch-error")
110
+ error = failure(`Could not start Paideia: ${message.message}`);
111
+ // The native child exited, but our supervisor still holds the group identity.
112
+ // Stop stragglers before permitting its leader to disappear or reporting completion.
113
+ kill("SIGKILL");
114
+ });
115
+ const finish = async () => {
116
+ if (finished)
117
+ return;
118
+ finished = true;
119
+ clearTimeout(timer);
120
+ clearTimeout(killTimer);
121
+ process.removeListener("SIGINT", interrupt);
122
+ process.removeListener("SIGTERM", terminate);
123
+ options.signal?.removeEventListener("abort", abort);
124
+ const deadline = Date.now() + 1500;
125
+ // Check only: never signal a numeric group identity after its supervisor was reaped.
126
+ while ((groupExists() || !closed) && Date.now() < deadline)
127
+ await delay(20);
128
+ if (groupExists() || !closed) {
129
+ error = failure("Paideia process cleanup is incomplete; group or output quiescence is unknown");
130
+ child.stdout.destroy();
131
+ child.stderr.destroy();
132
+ }
133
+ if (stdout.trim()) {
134
+ lastLine = stdout;
135
+ options.streams.stdout(stdout);
136
+ }
137
+ if (stderr.trim())
138
+ options.streams.stderr(stderr);
139
+ if (error) {
140
+ reject(error);
141
+ return;
142
+ }
143
+ if (stopCode !== undefined) {
144
+ resolve(stopCode);
145
+ return;
146
+ }
147
+ if (outcome?.type !== "paideia.process.exited") {
148
+ reject(failure("Paideia supervisor exited without a native outcome"));
149
+ return;
150
+ }
151
+ if (outcome.signal) {
152
+ resolve(outcome.signal === "SIGINT" ? 130 : outcome.signal === "SIGTERM" ? 143 : 1);
153
+ return;
154
+ }
155
+ const exitCode = outcome.code ?? 1;
156
+ if ((exitCode === 0 || exitCode === 1) && !validReceipt(lastLine, options.dryRun)) {
157
+ reject(failure("Paideia exited without the required final training receipt"));
158
+ return;
159
+ }
160
+ resolve(exitCode);
161
+ };
162
+ child.once("error", (caught) => { error = failure(`Could not start Paideia supervisor: ${caught.message}`); });
163
+ child.once("exit", () => { reaped = true; void finish(); });
164
+ child.once("close", () => { closed = true; void finish(); });
165
+ });
166
+ /** Delegates through the public CLI, never importing Paideia or selecting a fallback adapter. */
167
+ export const delegatePaideiaTraining = async (options) => {
168
+ if (options.signal?.aborted)
169
+ return 130;
170
+ if (options.repairWitness && !options.repairMeasurements)
171
+ throw failure("--repair-witness requires --repair-measurements");
172
+ if (options.trainingConfig) {
173
+ const config = await readBoundedJson(options.trainingConfig);
174
+ // v2 and v3 are both declarative preparations; a v3 *launch* config (already lowered, with `inputs`) goes straight to Docker.
175
+ if (config.version === "spawnfile.training-container.v2" || (config.version === "spawnfile.training-container.v3" && config.image !== undefined)) {
176
+ if (options.trainingImage)
177
+ throw failure("V2 owns its image declaration; --training-image is only for v1");
178
+ const prepared = await prepareTraining({ configPath: options.trainingConfig, context: options.context, args: options.args,
179
+ repairMeasurements: options.repairMeasurements, repairWitness: options.repairWitness,
180
+ dryRun: options.dryRun, process: runTrainingDocker, timeoutMs: options.timeoutMs, signal: options.signal, streams: options.streams });
181
+ if (!("dryRun" in prepared))
182
+ return launchTrainingContainer({ ...prepared,
183
+ timeoutMs: options.timeoutMs, signal: options.signal, streams: options.streams });
184
+ options.streams.stderr(`Training preparation plan ${prepared.digest}; no Docker, auth or filesystem mutations`);
185
+ options = { ...options, repairMeasurements: undefined, repairWitness: undefined };
186
+ }
187
+ }
188
+ if (options.repairMeasurements)
189
+ throw failure("Measurement repair requires the v2 preparation declaration");
190
+ if (!options.dryRun) {
191
+ if (!options.trainingImage || !options.trainingConfig)
192
+ throw failure("Actual training requires --training-image and --training-config; host execution is disabled");
193
+ return launchTrainingContainer({ image: options.trainingImage, configPath: options.trainingConfig,
194
+ context: options.context, args: options.args, timeoutMs: options.timeoutMs, streams: options.streams, signal: options.signal });
195
+ }
196
+ if (process.platform === "win32")
197
+ throw failure("Paideia delegation requires POSIX process-group supervision");
198
+ const bytes = JSON.stringify(trainingContextSchema.parse(options.context));
199
+ if (Buffer.byteLength(bytes, "utf8") > MAX_LINE_BYTES)
200
+ throw new SpawnfileError("validation_error", "Training context exceeds 1 MiB");
201
+ const temporary = await mkdtemp(path.join(os.tmpdir(), "spawnfile-training-"));
202
+ const contextPath = path.join(temporary, "context.json");
203
+ try {
204
+ await writeFile(contextPath, bytes, { mode: 0o600, flag: "wx" });
205
+ return await runChild(options, contextPath);
206
+ }
207
+ finally {
208
+ await rm(temporary, { recursive: true, force: true });
209
+ }
210
+ };
@@ -0,0 +1,17 @@
1
+ import { type ChildProcess } from "node:child_process";
2
+ export type PaideiaProcessOutcome = {
3
+ type: "paideia.process.exited";
4
+ code: number | null;
5
+ signal: NodeJS.Signals | null;
6
+ } | {
7
+ type: "paideia.process.launch-error";
8
+ message: string;
9
+ };
10
+ type SupervisorProcess = Pick<NodeJS.Process, "send" | "pid" | "on" | "removeListener" | "kill" | "exit">;
11
+ export interface PaideiaSupervisorHost {
12
+ process: SupervisorProcess;
13
+ launch(command: string, args: string[]): ChildProcess;
14
+ }
15
+ /** Remains the owned group leader until the parent closes the entire group. */
16
+ export declare const supervisePaideia: (argv: readonly string[], host?: PaideiaSupervisorHost) => (() => void);
17
+ export {};
@@ -0,0 +1,48 @@
1
+ import { spawn } from "node:child_process";
2
+ import path from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ const defaultHost = {
5
+ process,
6
+ launch: (command, args) => spawn(command, args, { shell: false, stdio: ["ignore", "inherit", "inherit"] })
7
+ };
8
+ /** Remains the owned group leader until the parent closes the entire group. */
9
+ export const supervisePaideia = (argv, host = defaultHost) => {
10
+ const [command, ...args] = argv;
11
+ if (!command || !host.process.send)
12
+ throw new Error("Paideia supervisor requires an executable and private IPC");
13
+ const hold = setInterval(() => undefined, 1000);
14
+ const ignore = () => undefined;
15
+ const disconnect = () => {
16
+ // This process is still alive: its own group identity cannot have been recycled.
17
+ try {
18
+ host.process.kill(-host.process.pid, "SIGKILL");
19
+ }
20
+ finally {
21
+ host.process.exit(1);
22
+ }
23
+ };
24
+ host.process.on("SIGINT", ignore).on("SIGTERM", ignore).on("disconnect", disconnect);
25
+ let reported = false;
26
+ const report = (outcome) => {
27
+ if (reported)
28
+ return;
29
+ reported = true;
30
+ host.process.send(outcome);
31
+ };
32
+ const child = host.launch(command, args);
33
+ child.once("error", (error) => report({ type: "paideia.process.launch-error", message: error.message }));
34
+ child.once("exit", (code, signal) => report({ type: "paideia.process.exited", code, signal }));
35
+ return () => {
36
+ clearInterval(hold);
37
+ host.process.removeListener("SIGINT", ignore).removeListener("SIGTERM", ignore).removeListener("disconnect", disconnect);
38
+ };
39
+ };
40
+ if (process.argv[1] && path.resolve(process.argv[1]) === fileURLToPath(import.meta.url)) {
41
+ try {
42
+ supervisePaideia(process.argv.slice(2));
43
+ }
44
+ catch (error) {
45
+ process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
46
+ process.exitCode = 1;
47
+ }
48
+ }
@@ -0,0 +1,2 @@
1
+ export declare const isProductStateCloneInvocation: (argv: readonly string[]) => boolean;
2
+ export declare const runProductStateCloneCommand: (argv: readonly string[]) => Promise<number>;
@@ -0,0 +1,34 @@
1
+ import { mkdir, readFile, writeFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { z } from "zod";
4
+ import { issueProductStateSourceSnapshot, runProductStateCloneWorkflow } from "../deployment/productStateClone.js";
5
+ const requestSchema = z.object({ version: z.literal("spawnfile.product-state-clone-request.v1"), authority_receipt_path: z.string().min(1).max(4096), docker_command: z.string().min(1).max(4096), destination: z.string().min(1).max(4096), proof_path: z.string().min(1).max(4096), receipt_path: z.string().min(1).max(4096), candidate_run_id: z.string().regex(/^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$/u) }).strict();
6
+ const authorityRequestSchema = z.object({ version: z.literal("spawnfile.product-state-source-authority-request.v1"), docker_command: z.string().min(1).max(4096), container: z.string().min(1).max(255), source_run_id: z.string().min(1).max(128), mount_path: z.string().min(1).max(4096), candidate_volume_name: z.string().min(1).max(255), candidate_resource_identity: z.string().regex(/^sha256:[a-f0-9]{64}$/u), receipt_path: z.string().min(1).max(4096), proof_path: z.string().min(1).max(4096) }).strict();
7
+ export const isProductStateCloneInvocation = (argv) => argv[0] === "product-state" && ["authority", "clone"].includes(argv[1] ?? "");
8
+ export const runProductStateCloneCommand = async (argv) => {
9
+ try {
10
+ if (argv.length !== 3)
11
+ throw new Error("usage");
12
+ const bytes = await readFile(argv[2]);
13
+ if (bytes.length > 65_536)
14
+ throw new Error("oversized");
15
+ if (argv[1] === "authority") {
16
+ const request = authorityRequestSchema.parse(JSON.parse(bytes.toString("utf8"))), snapshot = await issueProductStateSourceSnapshot({ dockerCommand: request.docker_command, container: request.container, sourceRunId: request.source_run_id, mountPath: request.mount_path, candidateVolumeName: request.candidate_volume_name, candidateResourceIdentity: request.candidate_resource_identity });
17
+ await mkdir(path.dirname(request.receipt_path), { recursive: true, mode: 0o700 });
18
+ await writeFile(request.proof_path, `${JSON.stringify(snapshot.proof)}\n`, { flag: "wx", mode: 0o600 });
19
+ await writeFile(request.receipt_path, `${JSON.stringify(snapshot.authority)}\n`, { flag: "wx", mode: 0o600 });
20
+ process.stdout.write(`${JSON.stringify(snapshot.authority)}\n`);
21
+ return 0;
22
+ }
23
+ const request = requestSchema.parse(JSON.parse(bytes.toString("utf8")));
24
+ process.stdout.write(`${JSON.stringify(await runProductStateCloneWorkflow({ authorityReceiptPath: request.authority_receipt_path, dockerCommand: request.docker_command, destination: request.destination, proofPath: request.proof_path, receiptPath: request.receipt_path, candidateRunId: request.candidate_run_id }))}\n`);
25
+ return 0;
26
+ }
27
+ catch (error) {
28
+ // Carry the cause. A bare "failed" is undiagnosable in CI, where this runs
29
+ // against a different Docker and architecture than any developer machine.
30
+ const detail = error instanceof Error ? error.message : String(error);
31
+ process.stderr.write(`error: Product-state clone failed: ${detail}\n`);
32
+ return 1;
33
+ }
34
+ };
@@ -1,9 +1,10 @@
1
- import { importClaudeCodeAuth, importCodexAuth, importEnvFile, initializeTargetSecretSourceLifecycle, provisionCredentials, requireAuthProfile } from "../auth/index.js";
2
- import { addAgentProject, addProjectSurface, addProjectModelFallback, addSubagentProject, addTeamProject, buildOrganizationView, buildCompilePlan, buildProject, buildUpReceipt, clearProjectModelFallbacks, compileProject, initProject, publishProject, upProject, removeProjectSurface, runProject, setProjectPrimaryModel, setProjectRuntime, setProjectSurfaceAccess, showProjectSurfaces, syncProjectAuth } from "../compiler/index.js";
1
+ import { importClaudeCodeAuth, importCodexAuth, importGrokAuth, importEnvFile, initializeTargetSecretSourceLifecycle, provisionCredentials, requireAuthProfile } from "../auth/index.js";
2
+ import { addAgentProject, addProjectSurface, addProjectModelFallback, addSubagentProject, addTeamProject, buildOrganizationView, buildCompilePlan, buildProject, buildUpReceipt, clearProjectModelFallbacks, compileProject, createTrainingContext, initProject, listInitTemplates, publishProject, upProject, removeProjectSurface, runProject, setProjectPrimaryModel, setProjectRuntime, setProjectSurfaceAccess, showProjectSurfaces, syncProjectAuth } from "../compiler/index.js";
3
3
  import { devActivityProject, devApplyProject, devRestartProject, devStopProject, devUpProject } from "../dev/index.js";
4
4
  import { consumeImageUp } from "../distribution/index.js";
5
- import { downDeployment, exportRunArtifacts } from "../deployment/index.js";
5
+ import { createDockerProbeGateway, downDeployment, exportRunArtifacts, inspectDockerDeployment, listDeploymentRecords, listHomeDeploymentRecords } from "../deployment/index.js";
6
6
  import { listRuntimeAdapters } from "../runtime/index.js";
7
+ import { delegatePaideiaTraining } from "./paideiaDelegation.js";
7
8
  export interface CliStreams {
8
9
  stderr: (message: string) => void;
9
10
  stdout: (message: string) => void;
@@ -14,6 +15,8 @@ export interface CliRenderEnvironment {
14
15
  stdoutIsTty: boolean;
15
16
  }
16
17
  export interface CliHandlers {
18
+ createTrainingContext: typeof createTrainingContext;
19
+ delegatePaideiaTraining: typeof delegatePaideiaTraining;
17
20
  buildCompilePlan: typeof buildCompilePlan;
18
21
  buildOrganizationView: typeof buildOrganizationView;
19
22
  buildProject: typeof buildProject;
@@ -27,12 +30,18 @@ export interface CliHandlers {
27
30
  clearProjectModelFallbacks: typeof clearProjectModelFallbacks;
28
31
  importClaudeCodeAuth: typeof importClaudeCodeAuth;
29
32
  importCodexAuth: typeof importCodexAuth;
33
+ importGrokAuth: typeof importGrokAuth;
30
34
  importEnvFile: typeof importEnvFile;
31
35
  initProject: typeof initProject;
36
+ listInitTemplates: typeof listInitTemplates;
32
37
  initializeTargetSecretSourceLifecycle: typeof initializeTargetSecretSourceLifecycle;
33
38
  provisionCredentials: typeof provisionCredentials;
34
39
  exportRunArtifacts: typeof exportRunArtifacts;
35
40
  downDeployment: typeof downDeployment;
41
+ createDockerProbeGateway: typeof createDockerProbeGateway;
42
+ inspectDockerDeployment: typeof inspectDockerDeployment;
43
+ listDeploymentRecords: typeof listDeploymentRecords;
44
+ listHomeDeploymentRecords: typeof listHomeDeploymentRecords;
36
45
  listRuntimeAdapters: typeof listRuntimeAdapters;
37
46
  removeProjectSurface: typeof removeProjectSurface;
38
47
  requireAuthProfile: typeof requireAuthProfile;
@@ -56,6 +65,7 @@ export interface RunCliOptions {
56
65
  renderEnvironment?: CliRenderEnvironment;
57
66
  stdin?: AsyncIterable<unknown>;
58
67
  streams?: CliStreams;
68
+ signal?: AbortSignal;
59
69
  }
60
70
  type RunCli = {
61
71
  (argv: string[], options?: RunCliOptions): Promise<number>;
@@ -1,22 +1,27 @@
1
1
  import { readFileSync } from "node:fs";
2
2
  import { Command } from "commander";
3
- import { importClaudeCodeAuth, importCodexAuth, importEnvFile, initializeTargetSecretSourceLifecycle, provisionCredentials, requireAuthProfile } from "../auth/index.js";
4
- import { addAgentProject, addProjectSurface, addProjectModelFallback, addSubagentProject, addTeamProject, buildOrganizationView, buildCompilePlan, buildProject, buildUpReceipt, clearProjectModelFallbacks, compileProject, initProject, publishProject, upProject, removeProjectSurface, runProject, setProjectPrimaryModel, setProjectRuntime, setProjectSurfaceAccess, showProjectSurfaces, syncProjectAuth } from "../compiler/index.js";
3
+ import { importClaudeCodeAuth, importCodexAuth, importGrokAuth, importEnvFile, initializeTargetSecretSourceLifecycle, provisionCredentials, requireAuthProfile } from "../auth/index.js";
4
+ import { addAgentProject, addProjectSurface, addProjectModelFallback, addSubagentProject, addTeamProject, buildOrganizationView, buildCompilePlan, buildProject, buildUpReceipt, clearProjectModelFallbacks, compileProject, createTrainingContext, initProject, listInitTemplates, publishProject, upProject, removeProjectSurface, runProject, setProjectPrimaryModel, setProjectRuntime, setProjectSurfaceAccess, showProjectSurfaces, syncProjectAuth } from "../compiler/index.js";
5
5
  import { devActivityProject, devApplyProject, devRestartProject, devStopProject, devUpProject } from "../dev/index.js";
6
6
  import { consumeImageUp } from "../distribution/index.js";
7
- import { downDeployment, exportRunArtifacts } from "../deployment/index.js";
7
+ import { createDockerProbeGateway, downDeployment, exportRunArtifacts, inspectDockerDeployment, listDeploymentRecords, listHomeDeploymentRecords } from "../deployment/index.js";
8
8
  import { errorExitCode, isSpawnfileError } from "../shared/index.js";
9
9
  import { listRuntimeAdapters } from "../runtime/index.js";
10
10
  import { registerArtifactsCommands } from "./artifactsCommands.js";
11
11
  import { registerAuthCommands } from "./authCommands.js";
12
+ import { registerCapabilitiesCommand } from "./capabilitiesCommand.js";
12
13
  import { registerDevCommands } from "./devCommands.js";
14
+ import { registerEvidenceExportHelperCommand } from "./evidenceExportHelperCommand.js";
13
15
  import { registerLifecycleCommands } from "./lifecycleCommands.js";
14
16
  import { registerModelCommands } from "./modelCommands.js";
15
17
  import { registerRuntimeCommands } from "./runtimeCommands.js";
16
18
  import { registerSurfaceCommands } from "./surfaceCommands.js";
17
19
  import { registerStatusCommand } from "./statusCommand.js";
18
- import { registerProductionTargetCommands } from "./targetCommands.js";
20
+ import { registerUsageCommand } from "./usageCommand.js";
21
+ import { registerProductionTargetCommands } from "./targetProductionCommands.js";
19
22
  import { registerViewCommand } from "./viewCommand.js";
23
+ import { registerTrainCommand } from "./trainCommand.js";
24
+ import { delegatePaideiaTraining } from "./paideiaDelegation.js";
20
25
  const packageJsonPath = new URL("../../package.json", import.meta.url);
21
26
  const readPackageVersion = () => {
22
27
  const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf8"));
@@ -32,13 +37,15 @@ const createDefaultRenderEnvironment = () => ({
32
37
  stdoutIsTty: process.stdout.isTTY === true
33
38
  });
34
39
  const createDefaultHandlers = () => ({
40
+ createTrainingContext, delegatePaideiaTraining,
35
41
  buildCompilePlan, buildOrganizationView, buildProject, compileProject, publishProject,
36
42
  addAgentProject, addProjectModelFallback, addProjectSurface,
37
43
  addSubagentProject, addTeamProject, clearProjectModelFallbacks,
38
- importClaudeCodeAuth, importCodexAuth, importEnvFile, initializeTargetSecretSourceLifecycle,
44
+ importClaudeCodeAuth, importCodexAuth, importGrokAuth, importEnvFile, initializeTargetSecretSourceLifecycle,
39
45
  provisionCredentials,
40
- exportRunArtifacts, downDeployment,
41
- initProject, listRuntimeAdapters, removeProjectSurface, requireAuthProfile,
46
+ createDockerProbeGateway, exportRunArtifacts, downDeployment, inspectDockerDeployment,
47
+ listDeploymentRecords, listHomeDeploymentRecords,
48
+ initProject, listInitTemplates, listRuntimeAdapters, removeProjectSurface, requireAuthProfile,
42
49
  runProject, setProjectPrimaryModel, setProjectRuntime, upProject, buildUpReceipt, consumeImageUp,
43
50
  devActivityProject, devApplyProject, devRestartProject, devStopProject, devUpProject,
44
51
  setProjectSurfaceAccess, showProjectSurfaces, syncProjectAuth
@@ -58,7 +65,8 @@ const normalizeRunCliOptions = (optionsOrStreams, handlerOverrides = {}) => isCl
58
65
  handlers: optionsOrStreams?.handlers ?? handlerOverrides,
59
66
  renderEnvironment: optionsOrStreams?.renderEnvironment ?? createDefaultRenderEnvironment(),
60
67
  stdin: optionsOrStreams?.stdin ?? process.stdin,
61
- streams: optionsOrStreams?.streams ?? createDefaultStreams()
68
+ streams: optionsOrStreams?.streams ?? createDefaultStreams(),
69
+ signal: optionsOrStreams?.signal
62
70
  };
63
71
  const writeCommanderOutput = (write, message) => {
64
72
  const normalized = message.replace(/\n$/, "");
@@ -113,17 +121,31 @@ export const runCli = async (argv, optionsOrStreams, handlerOverrides = {}) => {
113
121
  registerLifecycleCommands(program, handlers, streams, cliOptions.stdin);
114
122
  registerDevCommands(program, handlers, streams);
115
123
  registerArtifactsCommands(program, handlers, streams);
124
+ registerCapabilitiesCommand(program, streams, readPackageVersion());
125
+ registerEvidenceExportHelperCommand(program, streams, (exitCode) => {
126
+ commandExitCode = exitCode;
127
+ });
116
128
  program
117
129
  .command("init")
118
130
  .description("Scaffold a new Spawnfile project or team in a directory")
119
131
  .argument("[path]", "Directory to initialize", process.cwd())
120
132
  .option("--team", "Initialize a team project")
121
133
  .option("--runtime <name>", "Runtime for agent scaffolds")
134
+ .option("--template <name>", "Scaffold from a bundled example template")
135
+ .option("--list-templates", "List available example templates and exit")
122
136
  .action(async (inputPath, options) => {
137
+ if (options.listTemplates) {
138
+ const templates = await handlers.listInitTemplates();
139
+ for (const template of templates) {
140
+ streams.stdout(template);
141
+ }
142
+ return;
143
+ }
123
144
  const result = await handlers.initProject({
124
145
  directory: inputPath,
125
146
  runtime: options.runtime,
126
- team: options.team
147
+ team: options.team,
148
+ template: options.template
127
149
  });
128
150
  streams.stdout(`initialized ${result.directory}`);
129
151
  emitFileLines(streams, "created", result.createdFiles);
@@ -176,7 +198,13 @@ export const runCli = async (argv, optionsOrStreams, handlerOverrides = {}) => {
176
198
  registerStatusCommand(program, handlers, streams, (exitCode) => {
177
199
  commandExitCode = exitCode;
178
200
  });
201
+ registerUsageCommand(program, streams, (exitCode) => {
202
+ commandExitCode = exitCode;
203
+ }, handlers);
179
204
  registerViewCommand(program, handlers, streams, cliOptions.renderEnvironment);
205
+ registerTrainCommand(program, handlers, streams, readPackageVersion(), (code) => {
206
+ commandExitCode = code;
207
+ }, cliOptions.signal);
180
208
  registerProductionTargetCommands(program, streams, cliOptions.stdin, (exitCode) => {
181
209
  commandExitCode = exitCode;
182
210
  });
@@ -1,10 +1,9 @@
1
1
  import type { Command } from "commander";
2
- import { type TargetPublicArtifactSnapshot, type TargetPublicArtifactSnapshotRequest } from "../target/publicArtifactSnapshot.js";
2
+ import { type TargetPublicArtifactSnapshotRequest, type TargetPublicArtifactSnapshotResult } from "../target/publicArtifactSnapshot.js";
3
3
  import { type TargetTopologyActivationResult } from "../target/topologyActivation.js";
4
4
  import { type SelectedTargetReceipt, type TargetResourceRequest, type TargetTopologyAttestationRequest } from "../target/contracts.js";
5
5
  import { type TargetOperation } from "./targetOperationDispatch.js";
6
6
  import { type TargetMutationResult } from "./targetReceiptOutput.js";
7
- import type { TargetDefaultConfig } from "./targetDefaultConfig.js";
8
7
  import { type TargetOperationLookupLoader } from "./targetLookupCommands.js";
9
8
  import type { TargetTopologyAttestationResult } from "../target/topologyAttestation.js";
10
9
  import { type TargetWorldClockSession } from "./targetWorldClockCommand.js";
@@ -20,14 +19,12 @@ export interface TargetCommandHandlerSession extends TargetWorldReadinessSession
20
19
  run<Result>(invoke: (handlers: TargetCommandHandlers) => Promise<Result>): Promise<Result>;
21
20
  activateTopology?(request: TargetTopologyAttestationRequest): Promise<TargetTopologyActivationResult>;
22
21
  attestTopology?(request: TargetTopologyAttestationRequest): Promise<TargetTopologyAttestationResult>;
23
- snapshotPublicArtifact?(request: TargetPublicArtifactSnapshotRequest): Promise<TargetPublicArtifactSnapshot>;
22
+ snapshotPublicArtifact?(request: TargetPublicArtifactSnapshotRequest): Promise<TargetPublicArtifactSnapshotResult>;
24
23
  }
25
24
  export interface TargetCommandStreams {
26
25
  stderr(message: string): void;
27
26
  stdout(message: string): void;
28
27
  }
29
- type SetTargetCommandExitCode = (exitCode: 1 | 2) => void;
30
- export declare const registerTargetCommands: (program: Command, session: TargetCommandHandlerSession | TargetCommandSessionLoader, streams: TargetCommandStreams, setExitCode: SetTargetCommandExitCode, lookupLoader?: TargetOperationLookupLoader, worldReadinessSession?: (configInput: unknown) => Promise<TargetWorldReadinessSession & TargetWorldClockSession>) => Command;
31
- export declare const createProductionTargetCommandSession: (config: TargetDefaultConfig) => TargetCommandHandlerSession;
32
- export declare const registerProductionTargetCommands: (program: Command, streams: TargetCommandStreams, stdin: AsyncIterable<unknown>, setExitCode: SetTargetCommandExitCode) => void;
28
+ export type SetTargetCommandExitCode = (exitCode: 1 | 2) => void;
29
+ export declare const registerTargetCommands: (program: Command, session: TargetCommandHandlerSession | TargetCommandSessionLoader, streams: TargetCommandStreams, setExitCode: SetTargetCommandExitCode, lookupLoader?: TargetOperationLookupLoader, worldReadinessSession?: (configInput: unknown) => Promise<TargetWorldReadinessSession & TargetWorldClockSession>, configFreeCommands?: readonly string[]) => Command;
33
30
  export {};
@@ -1,17 +1,14 @@
1
1
  import { createCanonicalTargetTopologyReceiptBytes, createCanonicalSelectedTargetReceiptBytes, createTargetTopologyReceiptDigest } from "../target/handles.js";
2
- import { createCanonicalTargetPublicArtifactSnapshotBytes } from "../target/publicArtifactSnapshot.js";
2
+ import { createCanonicalTargetPublicArtifactSnapshotResultBytes } from "../target/publicArtifactSnapshot.js";
3
3
  import { createCanonicalTargetTopologyActivationReceiptBytes, createTargetTopologyActivationReceiptDigest, parseTargetTopologyActivationReceipt } from "../target/topologyActivation.js";
4
4
  import { parseSelectedTargetReceipt, parseTargetTopologyReceipt } from "../target/contracts.js";
5
5
  import { TARGET_OPERATION_DISPATCH } from "./targetOperationDispatch.js";
6
6
  import { emitCanonicalTargetMutationReceipt, formatCaughtTargetCliError, formatTargetCliError } from "./targetReceiptOutput.js";
7
7
  import { readTargetRequestFile, readTargetPublicArtifactSnapshotRequestFile, readTargetTopologyAttestationRequestFile } from "./targetRequestFile.js";
8
- import { readTargetDefaultConfigStdin, readTargetWorldReadinessConfigStdin } from "./targetDefaultConfigStdin.js";
9
- import { createProductionTargetLookupLoader, registerTargetOperationLookup } from "./targetLookupCommands.js";
10
- import { registerContainerBundleCommand } from "./containerBundleCommand.js";
8
+ import { registerTargetOperationLookup } from "./targetLookupCommands.js";
11
9
  import { registerTargetWorldClockCommand } from "./targetWorldClockCommand.js";
12
10
  import { registerTargetWorldReadinessCommand, } from "./targetWorldReadinessCommand.js";
13
11
  import { registerTargetComposedPreparationCommand } from "./targetComposedPreparationCommand.js";
14
- import { createProductionTargetWorldQuerySession } from "./targetDefaultWorldQueries.js";
15
12
  const operations = Object.keys(TARGET_OPERATION_DISPATCH);
16
13
  const invoke = async (handlers, request) => {
17
14
  const handler = handlers[request.operation];
@@ -181,7 +178,7 @@ const registerPublicArtifactSnapshot = (target, session, streams, setExitCode) =
181
178
  return;
182
179
  }
183
180
  try {
184
- streams.stdout(createCanonicalTargetPublicArtifactSnapshotBytes(await activeSession.snapshotPublicArtifact(request)));
181
+ streams.stdout(createCanonicalTargetPublicArtifactSnapshotResultBytes(await activeSession.snapshotPublicArtifact(request)));
185
182
  }
186
183
  catch (error) {
187
184
  streams.stderr(formatCaughtTargetCliError(error, "Target public artifact snapshot crashed"));
@@ -189,10 +186,21 @@ const registerPublicArtifactSnapshot = (target, session, streams, setExitCode) =
189
186
  }
190
187
  });
191
188
  };
192
- export const registerTargetCommands = (program, session, streams, setExitCode, lookupLoader, worldReadinessSession) => {
189
+ export const registerTargetCommands = (program, session, streams, setExitCode, lookupLoader, worldReadinessSession, configFreeCommands = []) => {
193
190
  const target = program.command("target").description("Execute target-resource operations");
194
191
  if (typeof session === "function") {
195
- target.requiredOption("--config <config-input>", "Strict target configuration JSON stdin; use -");
192
+ if (configFreeCommands.length === 0) {
193
+ target.requiredOption("--config <config-input>", "Strict target configuration JSON stdin; use -");
194
+ }
195
+ else {
196
+ target.option("--config <config-input>", "Strict target configuration JSON stdin; use -");
197
+ target.hook("preAction", (_command, actionCommand) => {
198
+ if (!configFreeCommands.includes(actionCommand.name())
199
+ && target.opts().config === undefined) {
200
+ target.error("required option '--config <config-input>' not specified");
201
+ }
202
+ });
203
+ }
196
204
  }
197
205
  for (const operation of operations) {
198
206
  registerOperation(target, operation, session, streams, setExitCode);
@@ -217,41 +225,3 @@ export const registerTargetCommands = (program, session, streams, setExitCode, l
217
225
  registerTargetOperationLookup(target, lookupLoader, streams, setExitCode);
218
226
  return target;
219
227
  };
220
- export const createProductionTargetCommandSession = (config) => Object.freeze({
221
- activateTopology: async (request) => {
222
- const { activateTargetDefaultTopology } = await import("./targetDefaultHandlers.js");
223
- return activateTargetDefaultTopology(config, request);
224
- },
225
- run: async (invokeHandlers) => {
226
- const { withTargetDefaultHandlerSession } = await import("./targetDefaultHandlers.js");
227
- return withTargetDefaultHandlerSession(config, invokeHandlers);
228
- },
229
- attestTopology: async (request) => {
230
- const { attestTargetDefaultTopology } = await import("./targetDefaultHandlers.js");
231
- return attestTargetDefaultTopology(config, request);
232
- },
233
- queryWorldReadiness: async (request) => {
234
- const { queryTargetDefaultWorldReadiness } = await import("./targetDefaultWorldReadiness.js");
235
- return queryTargetDefaultWorldReadiness(config, request);
236
- },
237
- queryWorldClock: async (request) => {
238
- const { queryTargetDefaultWorldClock } = await import("./targetDefaultWorldClock.js");
239
- return queryTargetDefaultWorldClock(config, request);
240
- },
241
- snapshotPublicArtifact: async (request) => {
242
- const { snapshotTargetDefaultPublicArtifact } = await import("./targetDefaultHandlers.js");
243
- return snapshotTargetDefaultPublicArtifact(config, request);
244
- }
245
- });
246
- export const registerProductionTargetCommands = (program, streams, stdin, setExitCode) => {
247
- const target = registerTargetCommands(program, async (configInput) => {
248
- if (configInput !== "-")
249
- throw new TypeError("Invalid target configuration");
250
- return createProductionTargetCommandSession(await readTargetDefaultConfigStdin(stdin));
251
- }, streams, setExitCode, createProductionTargetLookupLoader(stdin), async (configInput) => {
252
- if (configInput !== "-")
253
- throw new TypeError("Invalid target configuration");
254
- return createProductionTargetWorldQuerySession(await readTargetWorldReadinessConfigStdin(stdin));
255
- });
256
- registerContainerBundleCommand(target, stdin, streams, setExitCode);
257
- };
@@ -0,0 +1,3 @@
1
+ import { type PreparedArtifactMapping } from "./targetDefaultConfig.js";
2
+ export declare const TARGET_CONFIG_PREPARED_PLAN_VERSION: "spawnfile.target-config-prepared-plan.v1";
3
+ export declare const readTargetConfigPreparedPlan: (rawPath: string | undefined, evidenceDestination: string) => Promise<readonly PreparedArtifactMapping[] | undefined>;