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,74 @@
1
+ import { constants } from "node:fs";
2
+ import { lstat, open } from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { SpawnfileError } from "../shared/index.js";
5
+ import { parseTargetPreparedArtifactMappings, } from "./targetDefaultConfig.js";
6
+ export const TARGET_CONFIG_PREPARED_PLAN_VERSION = "spawnfile.target-config-prepared-plan.v1";
7
+ const MAX_PATH_BYTES = 4_096;
8
+ const MAX_PREPARED_PLAN_BYTES = 128 * 1_024;
9
+ const fail = (message) => {
10
+ throw new SpawnfileError("validation_error", message);
11
+ };
12
+ const planPath = (value) => {
13
+ if (typeof value !== "string" || value.includes("\0")
14
+ || Buffer.byteLength(value, "utf8") > MAX_PATH_BYTES
15
+ || !path.isAbsolute(value) || path.normalize(value) !== value) {
16
+ return fail("Prepared target plan path must be absolute and normalized");
17
+ }
18
+ return value;
19
+ };
20
+ export const readTargetConfigPreparedPlan = async (rawPath, evidenceDestination) => {
21
+ if (rawPath === undefined)
22
+ return undefined;
23
+ const resolved = planPath(rawPath);
24
+ const owner = process.getuid?.();
25
+ let handle;
26
+ try {
27
+ const before = await lstat(resolved);
28
+ if (!before.isFile() || before.isSymbolicLink() || before.size < 1
29
+ || before.size > MAX_PREPARED_PLAN_BYTES || (before.mode & 0o777) !== 0o600
30
+ || owner !== undefined && before.uid !== owner) {
31
+ return fail("Prepared target plan must be a private bounded regular file");
32
+ }
33
+ handle = await open(resolved, constants.O_RDONLY | constants.O_NOFOLLOW);
34
+ const bytes = await handle.readFile();
35
+ const after = await handle.stat();
36
+ if (after.dev !== before.dev || after.ino !== before.ino || after.size !== bytes.byteLength) {
37
+ return fail("Prepared target plan changed while it was read");
38
+ }
39
+ let source;
40
+ try {
41
+ source = new TextDecoder("utf-8", { fatal: true, ignoreBOM: true }).decode(bytes);
42
+ }
43
+ catch {
44
+ return fail("Prepared target plan must be UTF-8 JSON");
45
+ }
46
+ const parsed = JSON.parse(source);
47
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)
48
+ || Object.keys(parsed).sort().join("\0")
49
+ !== "evidence_destination\0prepared_artifact_mapping\0version") {
50
+ return fail("Prepared target plan has an invalid shape");
51
+ }
52
+ const value = parsed;
53
+ if (value.version !== TARGET_CONFIG_PREPARED_PLAN_VERSION) {
54
+ return fail("Prepared target plan version is invalid");
55
+ }
56
+ if (value.evidence_destination !== evidenceDestination) {
57
+ return fail("Prepared target plan evidence destination does not match");
58
+ }
59
+ try {
60
+ return parseTargetPreparedArtifactMappings([value.prepared_artifact_mapping]);
61
+ }
62
+ catch {
63
+ return fail("Prepared target plan artifact mapping is invalid");
64
+ }
65
+ }
66
+ catch (error) {
67
+ if (error instanceof SpawnfileError)
68
+ throw error;
69
+ return fail("Prepared target plan is unavailable");
70
+ }
71
+ finally {
72
+ await handle?.close().catch(() => undefined);
73
+ }
74
+ };
@@ -0,0 +1,3 @@
1
+ import { type ResolveTargetConfigDependencies, type ResolveTargetConfigInput, type TargetConfigResolution } from "./targetConfigResolverContracts.js";
2
+ export { createCanonicalTargetConfigBytes, createTargetConfigDigest, createTargetConfigResolutionBytes, STANDARD_WORLD_BASE_IMAGE, TARGET_CONFIG_DIGEST_VERSION, TARGET_CONFIG_PREPARED_PLAN_ABI_VERSION, TARGET_CONFIG_RESOLUTION_VERSION, type ResolveTargetConfigDependencies, type ResolveTargetConfigInput, type TargetConfigResolution, } from "./targetConfigResolverContracts.js";
3
+ export declare const resolveTargetConfig: (input: ResolveTargetConfigInput, dependencies?: ResolveTargetConfigDependencies) => Promise<TargetConfigResolution>;
@@ -0,0 +1,111 @@
1
+ import path from "node:path";
2
+ import { resolveSpawnfileHome } from "../auth/index.js";
3
+ import { createPreparedEvidenceHelperExecutor, parsePreparedEvidenceHelperReceipt, prepareEvidenceExportHelper, } from "../evidenceExportHelper/index.js";
4
+ import { defaultDockerTargetExecFile, resolveDockerContextEndpoint } from "../target/dockerTargetBinding.js";
5
+ import { createTargetConfigDigest, STANDARD_WORLD_BASE_IMAGE, TARGET_CONFIG_RESOLUTION_VERSION, } from "./targetConfigResolverContracts.js";
6
+ import { exactJson, executeDocker, resolveCurrentDockerContext } from "./targetConfigResolverDocker.js";
7
+ import { classifyEndpoint, normalizeArchitecture, parseBaseImage, parseContext, parseDockerCommand, parseTimeout, runtimeFailure, validateEvidenceDestination, validationFailure, } from "./targetConfigResolverValidation.js";
8
+ import { readTargetConfigPreparedPlan } from "./targetConfigPreparedPlan.js";
9
+ import { TARGET_DEFAULT_CONFIG_STDIN_VERSION } from "./targetDefaultConfigStdin.js";
10
+ export { createCanonicalTargetConfigBytes, createTargetConfigDigest, createTargetConfigResolutionBytes, STANDARD_WORLD_BASE_IMAGE, TARGET_CONFIG_DIGEST_VERSION, TARGET_CONFIG_PREPARED_PLAN_ABI_VERSION, TARGET_CONFIG_RESOLUTION_VERSION, } from "./targetConfigResolverContracts.js";
11
+ export const resolveTargetConfig = async (input, dependencies = {}) => {
12
+ const baseImage = parseBaseImage(input.baseImage ?? STANDARD_WORLD_BASE_IMAGE);
13
+ const dockerCommand = parseDockerCommand(input.dockerCommand ?? "docker");
14
+ const timeoutMs = parseTimeout(input.timeoutMs ?? 10_000);
15
+ const evidenceDestination = await validateEvidenceDestination(input.evidenceDestination);
16
+ const preparedArtifactMappings = await readTargetConfigPreparedPlan(input.preparedPlanPath, evidenceDestination);
17
+ const execFile = input.execFile ?? defaultDockerTargetExecFile;
18
+ const contextSelection = input.context === undefined ? "auto-local" : "explicit";
19
+ const context = input.context === undefined
20
+ ? await resolveCurrentDockerContext(execFile, dockerCommand, timeoutMs, input.signal)
21
+ : parseContext(input.context);
22
+ let endpointValue;
23
+ try {
24
+ endpointValue = await resolveDockerContextEndpoint(context, {
25
+ dockerCommand, execFile, signal: input.signal, timeoutMs,
26
+ });
27
+ }
28
+ catch {
29
+ return runtimeFailure(`Unable to inspect Docker context "${context}"`);
30
+ }
31
+ const endpoint = classifyEndpoint(endpointValue);
32
+ if (contextSelection === "auto-local" && endpoint.class !== "local") {
33
+ return validationFailure("Current Docker context is remote; pass --context explicitly to select a remote target");
34
+ }
35
+ if (input.prepareEvidenceHelper === true
36
+ && (contextSelection !== "explicit" || endpoint.class !== "local")) {
37
+ return validationFailure("Evidence helper preparation requires an explicitly selected local Docker context");
38
+ }
39
+ if (input.pull === true && endpoint.class === "remote" && input.allowRemotePull !== true) {
40
+ return validationFailure("Pulling on a remote Docker context requires --allow-remote-pull");
41
+ }
42
+ const infoSource = await executeDocker(execFile, dockerCommand, context, ["info", "--format", "{\"Architecture\":{{json .Architecture}},\"OSType\":{{json .OSType}}}"], timeoutMs, input.signal, "Unable to inspect Docker target platform");
43
+ const info = exactJson(infoSource, ["Architecture", "OSType"], "Docker target platform is invalid");
44
+ if (info.OSType !== "linux")
45
+ return runtimeFailure("Docker target operating system is unsupported");
46
+ const architecture = normalizeArchitecture(info.Architecture);
47
+ if (input.pull === true) {
48
+ await executeDocker(execFile, dockerCommand, context, ["image", "pull", "--quiet", baseImage], timeoutMs, input.signal, "Unable to pull the requested base image");
49
+ }
50
+ const imageSource = await executeDocker(execFile, dockerCommand, context, ["image", "inspect", baseImage, "--format",
51
+ "{\"Architecture\":{{json .Architecture}},\"Id\":{{json .Id}},\"Os\":{{json .Os}}}"], timeoutMs, input.signal, input.pull === true
52
+ ? "Unable to inspect the pulled base image"
53
+ : "Base image is unavailable in the Docker context; rerun with --pull to fetch it");
54
+ const image = exactJson(imageSource, ["Architecture", "Id", "Os"], "Docker base image inspection is invalid");
55
+ const imageArchitecture = normalizeArchitecture(image.Architecture);
56
+ if (image.Os !== "linux" || imageArchitecture !== architecture) {
57
+ return runtimeFailure("Docker base image platform does not match the selected target");
58
+ }
59
+ if (typeof image.Id !== "string" || !/^sha256:[a-f0-9]{64}$/u.test(image.Id)) {
60
+ return runtimeFailure("Docker base image config ID is invalid");
61
+ }
62
+ let preparedEvidenceHelper;
63
+ if (input.prepareEvidenceHelper === true) {
64
+ try {
65
+ preparedEvidenceHelper = parsePreparedEvidenceHelperReceipt(await (dependencies.prepareEvidenceExportHelper ?? prepareEvidenceExportHelper)({
66
+ baseImage,
67
+ context,
68
+ executor: input.execFile === undefined
69
+ ? createPreparedEvidenceHelperExecutor(dockerCommand)
70
+ : async (file, args, options) => {
71
+ if (file !== "docker")
72
+ throw new Error("unexpected helper executable");
73
+ return execFile(dockerCommand, args, {
74
+ signal: options.signal,
75
+ stdin: options.stdin,
76
+ timeout: options.timeout,
77
+ });
78
+ },
79
+ privateRoot: path.join(resolveSpawnfileHome(), "target", "evidence-helper"),
80
+ signal: input.signal,
81
+ timeoutMs,
82
+ }));
83
+ }
84
+ catch {
85
+ return runtimeFailure("Evidence helper preparation failed for the selected local target");
86
+ }
87
+ }
88
+ const targetConfig = Object.freeze({
89
+ context, dockerCommand, evidenceDestination,
90
+ ...(preparedEvidenceHelper === undefined ? {} : {
91
+ evidenceHelperBaseImage: baseImage, preparedEvidenceHelper,
92
+ }),
93
+ ...(preparedArtifactMappings === undefined ? {} : { preparedArtifactMappings }),
94
+ timeoutMs,
95
+ version: TARGET_DEFAULT_CONFIG_STDIN_VERSION,
96
+ });
97
+ return Object.freeze({
98
+ base_image: Object.freeze({
99
+ config_digest: image.Id, reference: baseImage,
100
+ }),
101
+ context_selection: contextSelection,
102
+ endpoint,
103
+ platform: Object.freeze({ architecture, os: "linux" }),
104
+ ...(preparedEvidenceHelper === undefined ? {} : {
105
+ prepared_evidence_helper: preparedEvidenceHelper,
106
+ }),
107
+ target_config: targetConfig,
108
+ target_config_digest: createTargetConfigDigest(targetConfig),
109
+ version: TARGET_CONFIG_RESOLUTION_VERSION,
110
+ });
111
+ };
@@ -0,0 +1,6 @@
1
+ import type { Command } from "commander";
2
+ import { type ResolveTargetConfigInput, type TargetConfigResolution } from "./targetConfigResolver.js";
3
+ import type { SetTargetCommandExitCode, TargetCommandStreams } from "./targetCommands.js";
4
+ export declare const TARGET_CONFIG_RESOLVER_COMMAND = "resolve_config";
5
+ export type TargetConfigResolver = (input: ResolveTargetConfigInput) => Promise<TargetConfigResolution>;
6
+ export declare const registerTargetConfigResolverCommand: (target: Command, streams: TargetCommandStreams, setExitCode: SetTargetCommandExitCode, resolver?: TargetConfigResolver) => void;
@@ -0,0 +1,43 @@
1
+ import { errorExitCode, SpawnfileError } from "../shared/index.js";
2
+ import { createTargetConfigResolutionBytes, resolveTargetConfig, } from "./targetConfigResolver.js";
3
+ import { formatCaughtTargetCliError } from "./targetReceiptOutput.js";
4
+ export const TARGET_CONFIG_RESOLVER_COMMAND = "resolve_config";
5
+ const timeout = (value) => {
6
+ if (!/^[1-9][0-9]{0,5}$/u.test(value)) {
7
+ throw new SpawnfileError("validation_error", "Target timeout must be an integer from 1 to 120000 milliseconds");
8
+ }
9
+ return Number(value);
10
+ };
11
+ export const registerTargetConfigResolverCommand = (target, streams, setExitCode, resolver = resolveTargetConfig) => {
12
+ target.command(TARGET_CONFIG_RESOLVER_COMMAND)
13
+ .description("Resolve one explicit Docker context and base image into target configuration")
14
+ .option("--context <name>", "Explicit named Docker context; omitted accepts only the current local context")
15
+ .option("--base-image <reference>", "Portable base image reference; defaults to Spawnfile's standard world base")
16
+ .requiredOption("--evidence-destination <path>", "Absolute private evidence archive destination")
17
+ .option("--docker-command <command>", "Docker-compatible command", "docker")
18
+ .option("--prepare-evidence-helper", "Prepare the package-owned evidence helper on an explicitly selected local Docker context")
19
+ .option("--timeout-ms <milliseconds>", "Bounded Docker command timeout", "10000")
20
+ .option("--prepared-plan <path>", "Absolute private composed target plan containing one prepared artifact mapping")
21
+ .option("--pull", "Explicitly pull the base image before inspection")
22
+ .option("--allow-remote-pull", "Allow --pull to mutate the explicitly named remote Docker context")
23
+ .action(async (options) => {
24
+ try {
25
+ const resolution = await resolver({
26
+ allowRemotePull: options.allowRemotePull,
27
+ baseImage: options.baseImage,
28
+ context: options.context,
29
+ dockerCommand: options.dockerCommand,
30
+ evidenceDestination: options.evidenceDestination,
31
+ prepareEvidenceHelper: options.prepareEvidenceHelper,
32
+ preparedPlanPath: options.preparedPlan,
33
+ pull: options.pull,
34
+ timeoutMs: timeout(options.timeoutMs),
35
+ });
36
+ streams.stdout(createTargetConfigResolutionBytes(resolution));
37
+ }
38
+ catch (error) {
39
+ streams.stderr(formatCaughtTargetCliError(error, "Target configuration resolution failed"));
40
+ setExitCode(errorExitCode(error));
41
+ }
42
+ });
43
+ };
@@ -0,0 +1,56 @@
1
+ import type { PreparedEvidenceHelperReceipt, PrepareEvidenceHelperInput } from "../evidenceExportHelper/index.js";
2
+ import type { DockerTargetExecFile } from "../target/dockerTarget.js";
3
+ import type { PreparedArtifactMapping } from "./targetDefaultConfig.js";
4
+ import { TARGET_DEFAULT_CONFIG_STDIN_VERSION } from "./targetDefaultConfigStdin.js";
5
+ export declare const TARGET_CONFIG_RESOLUTION_VERSION: "spawnfile.target-config-resolution.v1";
6
+ export declare const TARGET_CONFIG_DIGEST_VERSION: "spawnfile.target-config-digest.v1";
7
+ /** Exact version for the strict `resolve_config --prepared-plan` document. */
8
+ export declare const TARGET_CONFIG_PREPARED_PLAN_ABI_VERSION: "spawnfile.target-config-prepared-plan.v1";
9
+ export declare const STANDARD_WORLD_BASE_IMAGE = "node:22-bookworm-slim";
10
+ export interface ResolveTargetConfigInput {
11
+ readonly allowRemotePull?: boolean;
12
+ readonly baseImage?: string;
13
+ readonly context?: string;
14
+ readonly dockerCommand?: string;
15
+ readonly evidenceDestination: string;
16
+ readonly prepareEvidenceHelper?: boolean;
17
+ readonly execFile?: DockerTargetExecFile;
18
+ readonly preparedPlanPath?: string;
19
+ readonly pull?: boolean;
20
+ readonly signal?: AbortSignal;
21
+ readonly timeoutMs?: number;
22
+ }
23
+ export interface TargetConfigResolution {
24
+ readonly base_image: {
25
+ readonly config_digest: `sha256:${string}`;
26
+ readonly reference: string;
27
+ };
28
+ readonly endpoint: {
29
+ readonly class: "local" | "remote";
30
+ readonly transport: "fd" | "http" | "https" | "npipe" | "ssh" | "tcp" | "unix";
31
+ };
32
+ readonly context_selection: "auto-local" | "explicit";
33
+ readonly platform: {
34
+ readonly architecture: "amd64" | "arm64";
35
+ readonly os: "linux";
36
+ };
37
+ readonly prepared_evidence_helper?: PreparedEvidenceHelperReceipt;
38
+ readonly target_config: {
39
+ readonly context: string;
40
+ readonly dockerCommand: string;
41
+ readonly evidenceDestination: string;
42
+ readonly evidenceHelperBaseImage?: string;
43
+ readonly preparedEvidenceHelper?: PreparedEvidenceHelperReceipt;
44
+ readonly preparedArtifactMappings?: readonly PreparedArtifactMapping[];
45
+ readonly timeoutMs: number;
46
+ readonly version: typeof TARGET_DEFAULT_CONFIG_STDIN_VERSION;
47
+ };
48
+ readonly target_config_digest: `sha256:${string}`;
49
+ readonly version: typeof TARGET_CONFIG_RESOLUTION_VERSION;
50
+ }
51
+ export interface ResolveTargetConfigDependencies {
52
+ readonly prepareEvidenceExportHelper?: (input: PrepareEvidenceHelperInput) => Promise<PreparedEvidenceHelperReceipt>;
53
+ }
54
+ export declare const createCanonicalTargetConfigBytes: (targetConfig: TargetConfigResolution["target_config"]) => string;
55
+ export declare const createTargetConfigDigest: (targetConfig: TargetConfigResolution["target_config"]) => `sha256:${string}`;
56
+ export declare const createTargetConfigResolutionBytes: (resolution: TargetConfigResolution) => string;
@@ -0,0 +1,30 @@
1
+ import { createHash } from "node:crypto";
2
+ import { TARGET_CONFIG_PREPARED_PLAN_VERSION } from "./targetConfigPreparedPlan.js";
3
+ export const TARGET_CONFIG_RESOLUTION_VERSION = "spawnfile.target-config-resolution.v1";
4
+ export const TARGET_CONFIG_DIGEST_VERSION = "spawnfile.target-config-digest.v1";
5
+ /** Exact version for the strict `resolve_config --prepared-plan` document. */
6
+ export const TARGET_CONFIG_PREPARED_PLAN_ABI_VERSION = TARGET_CONFIG_PREPARED_PLAN_VERSION;
7
+ export const STANDARD_WORLD_BASE_IMAGE = "node:22-bookworm-slim";
8
+ const canonicalJson = (value) => {
9
+ if (value === null)
10
+ return "null";
11
+ if (typeof value === "string" || typeof value === "boolean")
12
+ return JSON.stringify(value);
13
+ if (typeof value === "number") {
14
+ if (!Number.isFinite(value))
15
+ throw new TypeError("Target configuration is not JSON");
16
+ return JSON.stringify(value);
17
+ }
18
+ if (Array.isArray(value))
19
+ return `[${value.map(canonicalJson).join(",")}]`;
20
+ if (typeof value !== "object")
21
+ throw new TypeError("Target configuration is not JSON");
22
+ const record = value;
23
+ return `{${Object.keys(record).sort().map((key) => `${JSON.stringify(key)}:${canonicalJson(record[key])}`).join(",")}}`;
24
+ };
25
+ export const createCanonicalTargetConfigBytes = (targetConfig) => canonicalJson(targetConfig);
26
+ export const createTargetConfigDigest = (targetConfig) => `sha256:${createHash("sha256")
27
+ .update(`${TARGET_CONFIG_DIGEST_VERSION}\0`, "utf8")
28
+ .update(createCanonicalTargetConfigBytes(targetConfig), "utf8")
29
+ .digest("hex")}`;
30
+ export const createTargetConfigResolutionBytes = (resolution) => JSON.stringify(resolution);
@@ -0,0 +1,4 @@
1
+ import type { DockerTargetExecFile } from "../target/dockerTarget.js";
2
+ export declare const exactJson: (source: string, keys: readonly string[], failureMessage: string) => Record<string, unknown>;
3
+ export declare const executeDocker: (execFile: DockerTargetExecFile, command: string, context: string, args: string[], timeout: number, signal: AbortSignal | undefined, failureMessage: string) => Promise<string>;
4
+ export declare const resolveCurrentDockerContext: (execFile: DockerTargetExecFile, dockerCommand: string, timeoutMs: number, signal: AbortSignal | undefined) => Promise<string>;
@@ -0,0 +1,47 @@
1
+ import { SpawnfileError } from "../shared/index.js";
2
+ import { parseContext, runtimeFailure } from "./targetConfigResolverValidation.js";
3
+ const MAX_DOCKER_OUTPUT_BYTES = 64 * 1_024;
4
+ export const exactJson = (source, keys, failureMessage) => {
5
+ if (Buffer.byteLength(source, "utf8") > MAX_DOCKER_OUTPUT_BYTES) {
6
+ return runtimeFailure(failureMessage);
7
+ }
8
+ try {
9
+ const parsed = JSON.parse(source);
10
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)
11
+ || Object.keys(parsed).sort().join("\0") !== [...keys].sort().join("\0")) {
12
+ return runtimeFailure(failureMessage);
13
+ }
14
+ return parsed;
15
+ }
16
+ catch {
17
+ return runtimeFailure(failureMessage);
18
+ }
19
+ };
20
+ export const executeDocker = async (execFile, command, context, args, timeout, signal, failureMessage) => {
21
+ try {
22
+ const result = await execFile(command, ["--context", context, ...args], { signal, timeout });
23
+ if (Buffer.byteLength(result.stdout, "utf8") > MAX_DOCKER_OUTPUT_BYTES) {
24
+ return runtimeFailure(failureMessage);
25
+ }
26
+ return result.stdout;
27
+ }
28
+ catch {
29
+ return runtimeFailure(failureMessage);
30
+ }
31
+ };
32
+ export const resolveCurrentDockerContext = async (execFile, dockerCommand, timeoutMs, signal) => {
33
+ try {
34
+ const result = await execFile(dockerCommand, ["context", "show"], {
35
+ signal, timeout: timeoutMs,
36
+ });
37
+ if (Buffer.byteLength(result.stdout, "utf8") > 4_096) {
38
+ return runtimeFailure("Current Docker context is invalid");
39
+ }
40
+ return parseContext(result.stdout.trim());
41
+ }
42
+ catch (error) {
43
+ if (error instanceof SpawnfileError)
44
+ throw error;
45
+ return runtimeFailure("Unable to resolve the current Docker context");
46
+ }
47
+ };
@@ -0,0 +1,10 @@
1
+ import type { TargetConfigResolution } from "./targetConfigResolverContracts.js";
2
+ export declare const validationFailure: (message: string) => never;
3
+ export declare const runtimeFailure: (message: string) => never;
4
+ export declare const parseContext: (value: unknown) => string;
5
+ export declare const parseDockerCommand: (value: unknown) => string;
6
+ export declare const parseTimeout: (value: unknown) => number;
7
+ export declare const parseBaseImage: (value: unknown) => string;
8
+ export declare const validateEvidenceDestination: (value: unknown) => Promise<string>;
9
+ export declare const classifyEndpoint: (endpoint: string) => TargetConfigResolution["endpoint"];
10
+ export declare const normalizeArchitecture: (value: unknown) => "amd64" | "arm64";
@@ -0,0 +1,94 @@
1
+ import { lstat, realpath } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { SpawnfileError } from "../shared/index.js";
4
+ import { parseDockerBaseImageReference } from "../target/dockerBaseImage.js";
5
+ const CONTEXT = /^[a-z][a-z0-9_-]{0,63}$/u;
6
+ const COMMAND_NAME = /^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/u;
7
+ const MAX_PATH_BYTES = 4_096;
8
+ export const validationFailure = (message) => {
9
+ throw new SpawnfileError("validation_error", message);
10
+ };
11
+ export const runtimeFailure = (message) => {
12
+ throw new SpawnfileError("runtime_error", message);
13
+ };
14
+ export const parseContext = (value) => typeof value === "string" && CONTEXT.test(value)
15
+ ? value
16
+ : validationFailure("Docker context must be an explicit bounded context name");
17
+ export const parseDockerCommand = (value) => {
18
+ if (typeof value !== "string" || value.includes("\0")
19
+ || Buffer.byteLength(value, "utf8") > 1_024) {
20
+ return validationFailure("Docker command is invalid");
21
+ }
22
+ if (COMMAND_NAME.test(value))
23
+ return value;
24
+ if (path.isAbsolute(value) && path.normalize(value) === value)
25
+ return value;
26
+ return validationFailure("Docker command is invalid");
27
+ };
28
+ export const parseTimeout = (value) => typeof value === "number" && Number.isSafeInteger(value) && value >= 1 && value <= 120_000
29
+ ? value
30
+ : validationFailure("Target timeout must be an integer from 1 to 120000 milliseconds");
31
+ export const parseBaseImage = (value) => parseDockerBaseImageReference(value)
32
+ ?? validationFailure("Base image must be an explicit portable image reference");
33
+ export const validateEvidenceDestination = async (value) => {
34
+ if (typeof value !== "string" || value.includes("\0")
35
+ || Buffer.byteLength(value, "utf8") > MAX_PATH_BYTES
36
+ || !path.isAbsolute(value) || path.normalize(value) !== value) {
37
+ return validationFailure("Evidence destination must be an absolute normalized path");
38
+ }
39
+ const parent = path.dirname(value);
40
+ const owner = process.getuid?.();
41
+ try {
42
+ const parentInfo = await lstat(parent);
43
+ if (!parentInfo.isDirectory() || parentInfo.isSymbolicLink()
44
+ || (parentInfo.mode & 0o777) !== 0o700
45
+ || owner !== undefined && parentInfo.uid !== owner
46
+ || await realpath(parent) !== parent) {
47
+ return validationFailure("Evidence destination parent must be a private physical directory");
48
+ }
49
+ try {
50
+ const destinationInfo = await lstat(value);
51
+ if (!destinationInfo.isFile() || destinationInfo.isSymbolicLink()
52
+ || (destinationInfo.mode & 0o777) !== 0o600
53
+ || owner !== undefined && destinationInfo.uid !== owner) {
54
+ return validationFailure("Existing evidence destination must be a private regular file");
55
+ }
56
+ }
57
+ catch (error) {
58
+ if (error.code !== "ENOENT")
59
+ throw error;
60
+ }
61
+ }
62
+ catch (error) {
63
+ if (error instanceof SpawnfileError)
64
+ throw error;
65
+ return validationFailure("Evidence destination parent is unavailable");
66
+ }
67
+ return value;
68
+ };
69
+ export const classifyEndpoint = (endpoint) => {
70
+ if (Buffer.byteLength(endpoint, "utf8") > 4_096 || /\s/u.test(endpoint)) {
71
+ return runtimeFailure("Docker context returned an invalid endpoint");
72
+ }
73
+ const match = /^(fd|http|https|npipe|ssh|tcp|unix):\/\/.+$/u.exec(endpoint);
74
+ if (!match)
75
+ return runtimeFailure("Docker context returned an unsupported endpoint transport");
76
+ const transport = match[1];
77
+ return Object.freeze({
78
+ class: transport === "fd" || transport === "npipe" || transport === "unix"
79
+ ? "local" : "remote",
80
+ transport,
81
+ });
82
+ };
83
+ export const normalizeArchitecture = (value) => {
84
+ if (typeof value !== "string")
85
+ return runtimeFailure("Docker architecture is invalid");
86
+ switch (value.trim()) {
87
+ case "amd64":
88
+ case "x64":
89
+ case "x86_64": return "amd64";
90
+ case "aarch64":
91
+ case "arm64": return "arm64";
92
+ default: return runtimeFailure("Docker architecture is unsupported");
93
+ }
94
+ };
@@ -1,4 +1,5 @@
1
1
  import { type DockerArtifactIdentityBinding, type DockerArtifactIdentityStore, type DockerArtifactMapping } from "../target/dockerArtifactsProvider.js";
2
+ import type { DockerArtifactExecutor } from "../target/dockerArtifactsProvider.js";
2
3
  import { type DockerTargetExecutors } from "../target/dockerCommandExecutor.js";
3
4
  import { type TargetSecretVersionAuthorityStore } from "../target/dockerSecretsAuthority.js";
4
5
  import { type WorldServiceResolver } from "../target/dockerWorldServiceAuthority.js";
@@ -32,6 +33,7 @@ export interface TargetDefaultAuthorities {
32
33
  readonly evidenceExportAuthorityStore: EvidenceExportAuthorityStore;
33
34
  readonly executors: DockerTargetExecutors;
34
35
  readonly handoffResolver: OrganizationAttachmentResolver;
36
+ readonly helperExecutor: DockerArtifactExecutor;
35
37
  /** Omitted when this invocation cannot export evidence. */
36
38
  readonly helperArtifactResolver?: HelperArtifactResolver;
37
39
  readonly journals: TargetJournalResolver;
@@ -1,4 +1,5 @@
1
1
  import { initializeDockerArtifactIdentityStore } from "../target/dockerArtifactsProvider.js";
2
+ import { createPreparedEvidenceHelperExecutor } from "../evidenceExportHelper/index.js";
2
3
  import { createDockerTargetExecutors } from "../target/dockerCommandExecutor.js";
3
4
  import { initializeTargetSecretVersionAuthorityStore } from "../target/dockerSecretsAuthority.js";
4
5
  import { parseWorldServiceAuthorization, parseWorldServiceResolution } from "../target/dockerWorldServiceAuthority.js";
@@ -37,6 +38,7 @@ export const initializeTargetDefaultAuthoritySession = async (config) => {
37
38
  handoffAuthority = await initializeOrganizationHandoffAuthorityStore();
38
39
  const handoffResolver = handoffAuthority.resolver;
39
40
  const executors = createDockerTargetExecutors({ dockerCommand: config.dockerCommand });
41
+ const helperExecutor = createPreparedEvidenceHelperExecutor(config.dockerCommand);
40
42
  const preparedBuilder = createDockerTargetLocalBundleBuilder({ context: config.context,
41
43
  executor: executors.artifact, timeoutMs: config.timeoutMs });
42
44
  const preparedStore = await initializeFilesystemTargetLocalBundleStore(config.paths.containerBundles);
@@ -185,6 +187,7 @@ export const initializeTargetDefaultAuthoritySession = async (config) => {
185
187
  evidenceExportAuthorityStore,
186
188
  executors,
187
189
  handoffResolver,
190
+ helperExecutor,
188
191
  ...(helperArtifactResolver ? { helperArtifactResolver } : {}),
189
192
  journals,
190
193
  secretAuthorityStore,
@@ -1,3 +1,4 @@
1
+ import { type PreparedEvidenceHelperReceipt } from "../evidenceExportHelper/index.js";
1
2
  import { type DockerArtifactMapping } from "../target/dockerArtifactsProvider.js";
2
3
  export { resolveTargetDefaultJournalRoot } from "../target/journalRoot.js";
3
4
  export declare const TARGET_DEFAULT_CONFIG_ERROR = "Target configuration failed";
@@ -14,6 +15,8 @@ export interface TargetDefaultConfigInputs {
14
15
  readonly containerBundleStoreRoot?: string;
15
16
  readonly context: string;
16
17
  readonly dockerCommand: string;
18
+ readonly evidenceHelperBaseImage?: string;
19
+ readonly preparedEvidenceHelper?: PreparedEvidenceHelperReceipt;
17
20
  readonly evidenceDestination: string;
18
21
  readonly helperArtifactManifestDigest?: string;
19
22
  /** Local-Daemon prepared images, admitted only by manifest/bundle/policy. */
@@ -39,6 +42,8 @@ export interface TargetDefaultConfig {
39
42
  readonly artifactMappings: readonly DockerArtifactMapping[];
40
43
  readonly context: string;
41
44
  readonly dockerCommand: string;
45
+ readonly evidenceHelperBaseImage?: string;
46
+ readonly preparedEvidenceHelper?: PreparedEvidenceHelperReceipt;
42
47
  readonly evidenceDestination: string;
43
48
  /** Present only when the private evidence-export helper was configured. */
44
49
  readonly helperArtifact?: DockerArtifactMapping;
@@ -47,6 +52,7 @@ export interface TargetDefaultConfig {
47
52
  readonly artifactIdentities: string;
48
53
  readonly attachmentAuthority: string;
49
54
  readonly evidenceExport: string;
55
+ readonly evidenceHelper: string;
50
56
  readonly containerBundles: string;
51
57
  readonly journals: string;
52
58
  readonly root: string;
@@ -63,6 +69,7 @@ export interface TargetDefaultWorldReadinessConfig {
63
69
  };
64
70
  readonly timeoutMs: number;
65
71
  }
72
+ export declare const parseTargetPreparedArtifactMappings: (raw: unknown) => readonly PreparedArtifactMapping[];
66
73
  export declare const loadTargetDefaultConfig: (raw: TargetDefaultConfigInputs) => Promise<TargetDefaultConfig>;
67
74
  /** Resolves only the paths required by a world-readiness query; performs no I/O. */
68
75
  export declare const resolveTargetDefaultWorldReadinessConfig: (raw: TargetDefaultConfigInputs) => TargetDefaultWorldReadinessConfig;