spawnfile 0.1.13 → 0.1.14

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 (598) hide show
  1. package/README.md +50 -11
  2. package/dist/audit/auditCli.d.ts +19 -0
  3. package/dist/audit/auditCli.js +63 -0
  4. package/dist/audit/checks.d.ts +100 -0
  5. package/dist/audit/checks.js +279 -0
  6. package/dist/audit/checksShared.d.ts +74 -0
  7. package/dist/audit/checksShared.js +37 -0
  8. package/dist/audit/generateAudit.d.ts +19 -0
  9. package/dist/audit/generateAudit.js +122 -0
  10. package/dist/audit/index.d.ts +4 -0
  11. package/dist/audit/index.js +4 -0
  12. package/dist/audit/readAudit.d.ts +50 -0
  13. package/dist/audit/readAudit.js +59 -0
  14. package/dist/audit/types.d.ts +40 -0
  15. package/dist/audit/types.js +8 -0
  16. package/dist/auth/credentialEnvFile.d.ts +11 -0
  17. package/dist/auth/credentialEnvFile.js +60 -0
  18. package/dist/auth/credentialProvisioning.d.ts +15 -0
  19. package/dist/auth/credentialProvisioning.js +75 -0
  20. package/dist/auth/credentialProvisioningReceipt.d.ts +28 -0
  21. package/dist/auth/credentialProvisioningReceipt.js +70 -0
  22. package/dist/auth/credentialProvisioningRequest.d.ts +51 -0
  23. package/dist/auth/credentialProvisioningRequest.js +169 -0
  24. package/dist/auth/credentialWorldBindings.d.ts +21 -0
  25. package/dist/auth/credentialWorldBindings.js +104 -0
  26. package/dist/auth/index.d.ts +7 -0
  27. package/dist/auth/index.js +7 -0
  28. package/dist/auth/paths.d.ts +11 -0
  29. package/dist/auth/paths.js +21 -0
  30. package/dist/auth/targetSecretSourceAuthor.d.ts +18 -0
  31. package/dist/auth/targetSecretSourceAuthor.js +52 -0
  32. package/dist/auth/targetSecretSourceFsPublish.d.ts +15 -0
  33. package/dist/auth/targetSecretSourceFsPublish.js +49 -0
  34. package/dist/auth/targetSecretSourceFsPublishImmutable.d.ts +16 -0
  35. package/dist/auth/targetSecretSourceFsPublishImmutable.js +435 -0
  36. package/dist/auth/targetSecretSourceFsRead.d.ts +14 -0
  37. package/dist/auth/targetSecretSourceFsRead.js +198 -0
  38. package/dist/auth/targetSecretSourceGrant.d.ts +16 -0
  39. package/dist/auth/targetSecretSourceGrant.js +99 -0
  40. package/dist/auth/targetSecretSourceGrantRecords.d.ts +84 -0
  41. package/dist/auth/targetSecretSourceGrantRecords.js +214 -0
  42. package/dist/auth/targetSecretSourceLifecycle.d.ts +30 -0
  43. package/dist/auth/targetSecretSourceLifecycle.js +52 -0
  44. package/dist/auth/targetSecretSourceOwnerEntropy.d.ts +6 -0
  45. package/dist/auth/targetSecretSourceOwnerEntropy.js +28 -0
  46. package/dist/auth/targetSecretSourceRecordCommon.d.ts +14 -0
  47. package/dist/auth/targetSecretSourceRecordCommon.js +100 -0
  48. package/dist/auth/targetSecretSourceRecordPublish.d.ts +10 -0
  49. package/dist/auth/targetSecretSourceRecordPublish.js +104 -0
  50. package/dist/auth/targetSecretSourceResolver.d.ts +10 -0
  51. package/dist/auth/targetSecretSourceResolver.js +137 -0
  52. package/dist/auth/targetSecretSourceRevoke.d.ts +20 -0
  53. package/dist/auth/targetSecretSourceRevoke.js +92 -0
  54. package/dist/auth/targetSecretSourceRotate.d.ts +19 -0
  55. package/dist/auth/targetSecretSourceRotate.js +121 -0
  56. package/dist/auth/targetSecretSourceVersionRecords.d.ts +49 -0
  57. package/dist/auth/targetSecretSourceVersionRecords.js +166 -0
  58. package/dist/cli/artifactsCommands.d.ts +27 -0
  59. package/dist/cli/artifactsCommands.js +132 -0
  60. package/dist/cli/authCommands.d.ts +5 -0
  61. package/dist/cli/authCommands.js +221 -0
  62. package/dist/cli/compileBuildCommands.d.ts +3 -0
  63. package/dist/cli/compileBuildCommands.js +35 -0
  64. package/dist/cli/containerBundleCommand.d.ts +6 -0
  65. package/dist/cli/containerBundleCommand.js +116 -0
  66. package/dist/cli/downCommand.d.ts +25 -0
  67. package/dist/cli/downCommand.js +134 -0
  68. package/dist/cli/index.js +6 -3
  69. package/dist/cli/lifecycleCommands.d.ts +1 -1
  70. package/dist/cli/lifecycleCommands.js +11 -181
  71. package/dist/cli/lifecycleMachine.d.ts +19 -0
  72. package/dist/cli/lifecycleMachine.js +78 -0
  73. package/dist/cli/lifecyclePlan.d.ts +35 -0
  74. package/dist/cli/lifecyclePlan.js +240 -0
  75. package/dist/cli/lifecyclePlanningCommands.d.ts +3 -0
  76. package/dist/cli/lifecyclePlanningCommands.js +30 -0
  77. package/dist/cli/runCli.d.ts +9 -2
  78. package/dist/cli/runCli.js +27 -71
  79. package/dist/cli/runPublishCommands.d.ts +3 -0
  80. package/dist/cli/runPublishCommands.js +70 -0
  81. package/dist/cli/statusCommand.d.ts +3 -33
  82. package/dist/cli/statusCommand.js +19 -249
  83. package/dist/cli/statusCommandLive.d.ts +20 -0
  84. package/dist/cli/statusCommandLive.js +188 -0
  85. package/dist/cli/statusCommandOptions.d.ts +40 -0
  86. package/dist/cli/statusCommandOptions.js +42 -0
  87. package/dist/cli/targetCliRoute.d.ts +2 -0
  88. package/dist/cli/targetCliRoute.js +30 -0
  89. package/dist/cli/targetCommands.d.ts +33 -0
  90. package/dist/cli/targetCommands.js +257 -0
  91. package/dist/cli/targetComposedPreparationCommand.d.ts +6 -0
  92. package/dist/cli/targetComposedPreparationCommand.js +39 -0
  93. package/dist/cli/targetDefaultArtifactAuthority.d.ts +5 -0
  94. package/dist/cli/targetDefaultArtifactAuthority.js +28 -0
  95. package/dist/cli/targetDefaultAuthorities.d.ts +53 -0
  96. package/dist/cli/targetDefaultAuthorities.js +210 -0
  97. package/dist/cli/targetDefaultConfig.d.ts +68 -0
  98. package/dist/cli/targetDefaultConfig.js +317 -0
  99. package/dist/cli/targetDefaultConfigStdin.d.ts +13 -0
  100. package/dist/cli/targetDefaultConfigStdin.js +215 -0
  101. package/dist/cli/targetDefaultEnvelope.d.ts +1 -0
  102. package/dist/cli/targetDefaultEnvelope.js +13 -0
  103. package/dist/cli/targetDefaultHandlerFactory.d.ts +28 -0
  104. package/dist/cli/targetDefaultHandlerFactory.js +247 -0
  105. package/dist/cli/targetDefaultHandlers.d.ts +21 -0
  106. package/dist/cli/targetDefaultHandlers.js +72 -0
  107. package/dist/cli/targetDefaultJournalAuthority.d.ts +35 -0
  108. package/dist/cli/targetDefaultJournalAuthority.js +135 -0
  109. package/dist/cli/targetDefaultWorldClock.d.ts +4 -0
  110. package/dist/cli/targetDefaultWorldClock.js +14 -0
  111. package/dist/cli/targetDefaultWorldQueries.d.ts +5 -0
  112. package/dist/cli/targetDefaultWorldQueries.js +11 -0
  113. package/dist/cli/targetDefaultWorldReadiness.d.ts +4 -0
  114. package/dist/cli/targetDefaultWorldReadiness.js +17 -0
  115. package/dist/cli/targetEvidenceHelperResolution.d.ts +14 -0
  116. package/dist/cli/targetEvidenceHelperResolution.js +23 -0
  117. package/dist/cli/targetLookupCli.d.ts +3 -0
  118. package/dist/cli/targetLookupCli.js +31 -0
  119. package/dist/cli/targetLookupCommands.d.ts +12 -0
  120. package/dist/cli/targetLookupCommands.js +69 -0
  121. package/dist/cli/targetOperationDispatch.d.ts +58 -0
  122. package/dist/cli/targetOperationDispatch.js +21 -0
  123. package/dist/cli/targetReceiptOutput.d.ts +14 -0
  124. package/dist/cli/targetReceiptOutput.js +21 -0
  125. package/dist/cli/targetRequestFile.d.ts +14 -0
  126. package/dist/cli/targetRequestFile.js +63 -0
  127. package/dist/cli/targetSecretSourceInput.d.ts +28 -0
  128. package/dist/cli/targetSecretSourceInput.js +121 -0
  129. package/dist/cli/targetWorldClockCommand.d.ts +10 -0
  130. package/dist/cli/targetWorldClockCommand.js +42 -0
  131. package/dist/cli/targetWorldClockCrossProcess.test-helper.d.ts +13 -0
  132. package/dist/cli/targetWorldClockCrossProcess.test-helper.js +109 -0
  133. package/dist/cli/targetWorldReadinessCommand.d.ts +10 -0
  134. package/dist/cli/targetWorldReadinessCommand.js +43 -0
  135. package/dist/cli/upCommand.d.ts +3 -0
  136. package/dist/cli/upCommand.js +133 -0
  137. package/dist/cli/upImageCommand.d.ts +11 -0
  138. package/dist/cli/upImageCommand.js +41 -0
  139. package/dist/cli/upLifecycleInvocation.d.ts +41 -0
  140. package/dist/cli/upLifecycleInvocation.js +48 -0
  141. package/dist/cli/upLifecycleRecovery.d.ts +4 -0
  142. package/dist/cli/upLifecycleRecovery.js +53 -0
  143. package/dist/compiler/agentNodeMerge.d.ts +2 -0
  144. package/dist/compiler/agentNodeMerge.js +79 -0
  145. package/dist/compiler/agentSurfaces.js +11 -1
  146. package/dist/compiler/buildCompilePlan.js +17 -0
  147. package/dist/compiler/buildCompilePlanAgent.d.ts +11 -0
  148. package/dist/compiler/buildCompilePlanAgent.js +56 -0
  149. package/dist/compiler/buildCompilePlanTeams.d.ts +1 -0
  150. package/dist/compiler/buildCompilePlanTeams.js +4 -1
  151. package/dist/compiler/buildCompilePlanTraversal.js +75 -82
  152. package/dist/compiler/buildProject.d.ts +11 -0
  153. package/dist/compiler/buildProject.js +77 -2
  154. package/dist/compiler/compilePlanHelpers.js +2 -0
  155. package/dist/compiler/compileProject.d.ts +13 -0
  156. package/dist/compiler/compileProject.js +26 -74
  157. package/dist/compiler/compileProjectPolicy.d.ts +5 -0
  158. package/dist/compiler/compileProjectPolicy.js +21 -0
  159. package/dist/compiler/compileProjectReports.d.ts +9 -0
  160. package/dist/compiler/compileProjectReports.js +52 -0
  161. package/dist/compiler/containerArtifactSummaries.d.ts +7 -0
  162. package/dist/compiler/containerArtifactSummaries.js +138 -0
  163. package/dist/compiler/containerArtifacts.d.ts +10 -0
  164. package/dist/compiler/containerArtifacts.js +126 -125
  165. package/dist/compiler/containerArtifactsPlans.d.ts +5 -3
  166. package/dist/compiler/containerArtifactsPlans.js +31 -118
  167. package/dist/compiler/containerArtifactsRender.d.ts +3 -1
  168. package/dist/compiler/containerArtifactsRender.js +15 -12
  169. package/dist/compiler/containerArtifactsTypes.d.ts +12 -0
  170. package/dist/compiler/containerConfigEnvRender.d.ts +3 -0
  171. package/dist/compiler/containerConfigEnvRender.js +54 -0
  172. package/dist/compiler/containerEntrypointRender.d.ts +1 -0
  173. package/dist/compiler/containerEntrypointRender.js +56 -52
  174. package/dist/compiler/containerEntrypointShell.d.ts +5 -0
  175. package/dist/compiler/containerEntrypointShell.js +29 -0
  176. package/dist/compiler/containerPackageOverrides.d.ts +27 -0
  177. package/dist/compiler/containerPackageOverrides.js +63 -0
  178. package/dist/compiler/containerTargetPlanResolution.d.ts +20 -0
  179. package/dist/compiler/containerTargetPlanResolution.js +97 -0
  180. package/dist/compiler/daimonTelemetryArtifacts.d.ts +22 -0
  181. package/dist/compiler/daimonTelemetryArtifacts.js +61 -0
  182. package/dist/compiler/dockerBuildContext.d.ts +16 -0
  183. package/dist/compiler/dockerBuildContext.js +159 -0
  184. package/dist/compiler/dockerBuildSkip.d.ts +30 -0
  185. package/dist/compiler/dockerBuildSkip.js +81 -0
  186. package/dist/compiler/index.d.ts +4 -0
  187. package/dist/compiler/index.js +4 -0
  188. package/dist/compiler/memoryArtifacts.d.ts +26 -0
  189. package/dist/compiler/memoryArtifacts.js +134 -0
  190. package/dist/compiler/memoryResolution.d.ts +4 -0
  191. package/dist/compiler/memoryResolution.js +147 -0
  192. package/dist/compiler/modelEnv.d.ts +2 -0
  193. package/dist/compiler/modelEnv.js +6 -0
  194. package/dist/compiler/moltnetAllowedWakeSendersValidation.d.ts +2 -0
  195. package/dist/compiler/moltnetAllowedWakeSendersValidation.js +42 -0
  196. package/dist/compiler/moltnetArtifactPaths.d.ts +26 -0
  197. package/dist/compiler/moltnetArtifactPaths.js +49 -0
  198. package/dist/compiler/moltnetArtifactTypes.d.ts +46 -0
  199. package/dist/compiler/moltnetArtifactTypes.js +1 -0
  200. package/dist/compiler/moltnetArtifacts.d.ts +2 -40
  201. package/dist/compiler/moltnetArtifacts.js +43 -97
  202. package/dist/compiler/moltnetBinaries.d.ts +21 -4
  203. package/dist/compiler/moltnetBinaries.js +134 -27
  204. package/dist/compiler/moltnetClientConfig.js +7 -2
  205. package/dist/compiler/moltnetConfigLowering.d.ts +16 -1
  206. package/dist/compiler/moltnetConfigLowering.js +67 -5
  207. package/dist/compiler/moltnetExternalParticipantArtifact.d.ts +38 -0
  208. package/dist/compiler/moltnetExternalParticipantArtifact.js +188 -0
  209. package/dist/compiler/moltnetNodeConfig.js +7 -2
  210. package/dist/compiler/moltnetReleaseAuthority.d.ts +17 -0
  211. package/dist/compiler/moltnetReleaseAuthority.js +73 -0
  212. package/dist/compiler/moltnetReleaseDownload.d.ts +12 -0
  213. package/dist/compiler/moltnetReleaseDownload.js +85 -0
  214. package/dist/compiler/moltnetRepresentativeResolution.d.ts +1 -0
  215. package/dist/compiler/moltnetRepresentativeResolution.js +16 -2
  216. package/dist/compiler/moltnetResolution.js +72 -20
  217. package/dist/compiler/moltnetRoomMemberships.js +37 -9
  218. package/dist/compiler/moltnetServerPlans.d.ts +9 -0
  219. package/dist/compiler/moltnetServerPlans.js +132 -0
  220. package/dist/compiler/organizationIdentity.d.ts +27 -0
  221. package/dist/compiler/organizationIdentity.js +297 -0
  222. package/dist/compiler/organizationReadyEvidence.d.ts +49 -0
  223. package/dist/compiler/organizationReadyEvidence.js +261 -0
  224. package/dist/compiler/projectManifestGraph.d.ts +4 -0
  225. package/dist/compiler/projectManifestGraph.js +24 -0
  226. package/dist/compiler/runProject.d.ts +4 -0
  227. package/dist/compiler/runProject.js +30 -21
  228. package/dist/compiler/runProjectAuth.d.ts +7 -1
  229. package/dist/compiler/runProjectAuth.js +87 -9
  230. package/dist/compiler/runProjectDocker.d.ts +7 -0
  231. package/dist/compiler/runProjectDocker.js +31 -8
  232. package/dist/compiler/runProjectLifecycle.d.ts +7 -0
  233. package/dist/compiler/runProjectLifecycle.js +40 -0
  234. package/dist/compiler/syncProjectAuth.js +4 -1
  235. package/dist/compiler/teamContextActiveEnvironments.d.ts +13 -0
  236. package/dist/compiler/teamContextActiveEnvironments.js +255 -0
  237. package/dist/compiler/teamContextSupport.js +32 -40
  238. package/dist/compiler/teamContextTypes.d.ts +2 -0
  239. package/dist/compiler/types.d.ts +82 -1
  240. package/dist/compiler/upProject.d.ts +5 -0
  241. package/dist/compiler/upProject.js +256 -20
  242. package/dist/compiler/upReceipt.d.ts +36 -0
  243. package/dist/compiler/upReceipt.js +82 -0
  244. package/dist/compiler/updateProjectModels.js +42 -60
  245. package/dist/compiler/updateProjectRuntime.js +22 -35
  246. package/dist/compiler/updateProjectSurfaces.js +53 -47
  247. package/dist/compiler/worldBindings.d.ts +39 -0
  248. package/dist/compiler/worldBindings.js +247 -0
  249. package/dist/compiler/worldBindingsFile.d.ts +5 -0
  250. package/dist/compiler/worldBindingsFile.js +162 -0
  251. package/dist/deployment/artifactsExport.d.ts +49 -0
  252. package/dist/deployment/artifactsExport.js +217 -0
  253. package/dist/deployment/artifactsExportDocker.d.ts +48 -0
  254. package/dist/deployment/artifactsExportDocker.js +91 -0
  255. package/dist/deployment/artifactsExportPlan.d.ts +24 -0
  256. package/dist/deployment/artifactsExportPlan.js +135 -0
  257. package/dist/deployment/artifactsExportTypes.d.ts +50 -0
  258. package/dist/deployment/artifactsExportTypes.js +52 -0
  259. package/dist/deployment/buildImageCacheStore.d.ts +23 -0
  260. package/dist/deployment/buildImageCacheStore.js +54 -0
  261. package/dist/deployment/deploymentLifecycleCorrelation.d.ts +11 -0
  262. package/dist/deployment/deploymentLifecycleCorrelation.js +33 -0
  263. package/dist/deployment/dockerInspect.d.ts +9 -0
  264. package/dist/deployment/dockerInspect.js +24 -1
  265. package/dist/deployment/dockerLabels.d.ts +2 -0
  266. package/dist/deployment/dockerLabels.js +2 -0
  267. package/dist/deployment/dockerLogs.js +2 -10
  268. package/dist/deployment/dockerManager.d.ts +51 -0
  269. package/dist/deployment/dockerManager.js +118 -1
  270. package/dist/deployment/dockerProbeGateway.js +64 -5
  271. package/dist/deployment/dockerRecover.js +9 -1
  272. package/dist/deployment/dockerTeardown.d.ts +32 -0
  273. package/dist/deployment/dockerTeardown.js +61 -0
  274. package/dist/deployment/downDeployment.d.ts +34 -0
  275. package/dist/deployment/downDeployment.js +147 -0
  276. package/dist/deployment/downReceiptTypes.d.ts +21 -0
  277. package/dist/deployment/downReceiptTypes.js +30 -0
  278. package/dist/deployment/index.d.ts +16 -0
  279. package/dist/deployment/index.js +17 -0
  280. package/dist/deployment/lifecycleCompletion.d.ts +37 -0
  281. package/dist/deployment/lifecycleCompletion.js +236 -0
  282. package/dist/deployment/lifecycleCompletionContracts.d.ts +158 -0
  283. package/dist/deployment/lifecycleCompletionContracts.js +106 -0
  284. package/dist/deployment/lifecycleCompletionHeartbeat.d.ts +2 -0
  285. package/dist/deployment/lifecycleCompletionHeartbeat.js +50 -0
  286. package/dist/deployment/lifecycleCompletionLookup.d.ts +18 -0
  287. package/dist/deployment/lifecycleCompletionLookup.js +88 -0
  288. package/dist/deployment/lifecycleCompletionOwner.d.ts +8 -0
  289. package/dist/deployment/lifecycleCompletionOwner.js +31 -0
  290. package/dist/deployment/lifecycleCompletionParsing.d.ts +12 -0
  291. package/dist/deployment/lifecycleCompletionParsing.js +108 -0
  292. package/dist/deployment/lifecycleCompletionPaths.d.ts +9 -0
  293. package/dist/deployment/lifecycleCompletionPaths.js +16 -0
  294. package/dist/deployment/lifecycleCompletionPublication.d.ts +5 -0
  295. package/dist/deployment/lifecycleCompletionPublication.js +35 -0
  296. package/dist/deployment/lifecycleCompletionRecovery.d.ts +21 -0
  297. package/dist/deployment/lifecycleCompletionRecovery.js +56 -0
  298. package/dist/deployment/lifecycleCompletionRoot.d.ts +21 -0
  299. package/dist/deployment/lifecycleCompletionRoot.js +243 -0
  300. package/dist/deployment/lifecycleCompletionStore.d.ts +6 -0
  301. package/dist/deployment/lifecycleCompletionStore.js +151 -0
  302. package/dist/deployment/organizationHandoffAuthorityFsClient.d.ts +17 -0
  303. package/dist/deployment/organizationHandoffAuthorityFsClient.js +132 -0
  304. package/dist/deployment/organizationHandoffAuthorityFsWorker.d.ts +1 -0
  305. package/dist/deployment/organizationHandoffAuthorityFsWorker.js +285 -0
  306. package/dist/deployment/organizationHandoffAuthorityFsWorkerParent.fixture.d.ts +1 -0
  307. package/dist/deployment/organizationHandoffAuthorityFsWorkerParent.fixture.js +26 -0
  308. package/dist/deployment/organizationHandoffAuthorityStore.d.ts +41 -0
  309. package/dist/deployment/organizationHandoffAuthorityStore.js +348 -0
  310. package/dist/deployment/organizationHandoffAuthorityTypes.d.ts +76 -0
  311. package/dist/deployment/organizationHandoffAuthorityTypes.js +148 -0
  312. package/dist/deployment/organizationHandoffTypes.d.ts +29 -0
  313. package/dist/deployment/organizationHandoffTypes.js +80 -0
  314. package/dist/deployment/organizationReady.d.ts +52 -0
  315. package/dist/deployment/organizationReady.js +200 -0
  316. package/dist/deployment/privateArtifactsExport.d.ts +18 -0
  317. package/dist/deployment/privateArtifactsExport.js +80 -0
  318. package/dist/deployment/providerRuntimeBoundaryScanner.test-helper.d.ts +8 -0
  319. package/dist/deployment/providerRuntimeBoundaryScanner.test-helper.js +60 -0
  320. package/dist/deployment/record.d.ts +26 -1
  321. package/dist/deployment/record.js +49 -4
  322. package/dist/deployment/simfileFixtureBoundary.test-helper.d.ts +8 -0
  323. package/dist/deployment/simfileFixtureBoundary.test-helper.js +103 -0
  324. package/dist/deployment/target.d.ts +1 -35
  325. package/dist/deployment/target.js +1 -96
  326. package/dist/deployment/upReceiptTypes.d.ts +111 -0
  327. package/dist/deployment/upReceiptTypes.js +164 -0
  328. package/dist/dev/project.js +15 -9
  329. package/dist/distribution/buildDistributionReport.d.ts +2 -1
  330. package/dist/distribution/buildDistributionReport.js +2 -1
  331. package/dist/distribution/distributionReportSchema.d.ts +5 -0
  332. package/dist/distribution/distributionReportSchema.js +7 -2
  333. package/dist/distribution/index.d.ts +2 -2
  334. package/dist/distribution/index.js +1 -1
  335. package/dist/distribution/types.d.ts +7 -0
  336. package/dist/distribution/types.js +1 -0
  337. package/dist/filesystem/paths.js +10 -1
  338. package/dist/ledger/causalConformanceCli.d.ts +1 -0
  339. package/dist/ledger/causalConformanceCli.js +41 -0
  340. package/dist/ledger/causeNamespace.d.ts +8 -0
  341. package/dist/ledger/causeNamespace.js +24 -0
  342. package/dist/ledger/conformance.d.ts +83 -0
  343. package/dist/ledger/conformance.js +259 -0
  344. package/dist/ledger/emitters.d.ts +76 -0
  345. package/dist/ledger/emitters.js +188 -0
  346. package/dist/ledger/index.d.ts +4 -0
  347. package/dist/ledger/index.js +4 -0
  348. package/dist/ledger/principal.d.ts +96 -0
  349. package/dist/ledger/principal.js +121 -0
  350. package/dist/manifest/externalParticipantSchemas.d.ts +18 -0
  351. package/dist/manifest/externalParticipantSchemas.js +17 -0
  352. package/dist/manifest/index.d.ts +1 -0
  353. package/dist/manifest/index.js +1 -0
  354. package/dist/manifest/inlineAgentMember.d.ts +2 -0
  355. package/dist/manifest/inlineAgentMember.js +9 -0
  356. package/dist/manifest/loadManifest.js +14 -8
  357. package/dist/manifest/mcpSchemas.d.ts +17 -0
  358. package/dist/manifest/mcpSchemas.js +41 -0
  359. package/dist/manifest/memorySchemas.d.ts +245 -0
  360. package/dist/manifest/memorySchemas.js +148 -0
  361. package/dist/manifest/renderSpawnfile.js +22 -131
  362. package/dist/manifest/renderSpawnfileNetworks.js +9 -2
  363. package/dist/manifest/renderSpawnfileSurfaces.d.ts +2 -0
  364. package/dist/manifest/renderSpawnfileSurfaces.js +134 -0
  365. package/dist/manifest/schemas.d.ts +1868 -99
  366. package/dist/manifest/schemas.js +78 -32
  367. package/dist/manifest/surfaceSchemas.d.ts +17 -0
  368. package/dist/manifest/surfaceSchemas.js +24 -1
  369. package/dist/manifest/teamNetworkAccessSchemas.d.ts +1 -1
  370. package/dist/manifest/teamNetworkAuthSchemas.d.ts +48 -0
  371. package/dist/manifest/teamNetworkAuthSchemas.js +103 -0
  372. package/dist/manifest/teamNetworkSchemas.d.ts +8 -187
  373. package/dist/manifest/teamNetworkSchemas.js +3 -317
  374. package/dist/manifest/teamNetworkServerSchemas.d.ts +150 -0
  375. package/dist/manifest/teamNetworkServerSchemas.js +199 -0
  376. package/dist/ownership/siblingBuildFreshness.d.ts +20 -0
  377. package/dist/ownership/siblingBuildFreshness.js +20 -0
  378. package/dist/ownership/simfileRunOperatorInputs.d.ts +103 -0
  379. package/dist/ownership/simfileRunOperatorInputs.js +139 -0
  380. package/dist/report/types.d.ts +142 -0
  381. package/dist/runtime/common.d.ts +35 -0
  382. package/dist/runtime/common.js +55 -0
  383. package/dist/runtime/container.d.ts +28 -1
  384. package/dist/runtime/container.js +38 -5
  385. package/dist/runtime/containerPackageOverrides.d.ts +37 -0
  386. package/dist/runtime/containerPackageOverrides.js +33 -0
  387. package/dist/runtime/index.d.ts +2 -0
  388. package/dist/runtime/index.js +2 -0
  389. package/dist/runtime/mnemeMcp.d.ts +15 -0
  390. package/dist/runtime/mnemeMcp.js +109 -0
  391. package/dist/runtime/openclaw/adapter.js +15 -4
  392. package/dist/runtime/openclaw/mcp.d.ts +10 -0
  393. package/dist/runtime/openclaw/mcp.js +69 -0
  394. package/dist/runtime/openclaw/runAuth.js +2 -2
  395. package/dist/runtime/openclaw/scaffold.js +1 -1
  396. package/dist/runtime/openclaw/schedules.d.ts +38 -0
  397. package/dist/runtime/openclaw/schedules.js +74 -0
  398. package/dist/runtime/pi/adapter.d.ts +1 -1
  399. package/dist/runtime/pi/adapter.js +86 -53
  400. package/dist/runtime/pi/appActivitySource.js +114 -2
  401. package/dist/runtime/pi/appAgentConfig.d.ts +11 -0
  402. package/dist/runtime/pi/appAgentConfig.js +264 -0
  403. package/dist/runtime/pi/appCliEnginesSource.d.ts +1 -0
  404. package/dist/runtime/pi/appCliEnginesSource.js +183 -0
  405. package/dist/runtime/pi/appCliSource.d.ts +1 -0
  406. package/dist/runtime/pi/appCliSource.js +353 -0
  407. package/dist/runtime/pi/appControlSource.d.ts +1 -0
  408. package/dist/runtime/pi/appControlSource.js +390 -0
  409. package/dist/runtime/pi/appControlWakeIdentitySource.d.ts +1 -0
  410. package/dist/runtime/pi/appControlWakeIdentitySource.js +19 -0
  411. package/dist/runtime/pi/appCoreSource.d.ts +4 -1
  412. package/dist/runtime/pi/appCoreSource.js +104 -214
  413. package/dist/runtime/pi/appPreludeSource.js +140 -52
  414. package/dist/runtime/pi/appScheduleSource.d.ts +1 -0
  415. package/dist/runtime/pi/appScheduleSource.js +80 -0
  416. package/dist/runtime/pi/appScriptedEngine.d.ts +31 -0
  417. package/dist/runtime/pi/appScriptedEngine.js +42 -0
  418. package/dist/runtime/pi/appSource.d.ts +4 -1
  419. package/dist/runtime/pi/appSource.js +6 -2
  420. package/dist/runtime/pi/appTemplate.d.ts +8 -22
  421. package/dist/runtime/pi/appTemplate.js +9 -126
  422. package/dist/runtime/pi/appTemplateTypes.d.ts +64 -0
  423. package/dist/runtime/pi/appTemplateTypes.js +18 -0
  424. package/dist/runtime/pi/appWakeContextSource.d.ts +1 -0
  425. package/dist/runtime/pi/appWakeContextSource.js +398 -0
  426. package/dist/runtime/pi/containerTargets.d.ts +4 -0
  427. package/dist/runtime/pi/containerTargets.js +57 -0
  428. package/dist/runtime/pi/runAuth.js +126 -9
  429. package/dist/runtime/pi/testHelpers.d.ts +2 -0
  430. package/dist/runtime/pi/testHelpers.js +40 -0
  431. package/dist/runtime/picoclaw/adapter.js +23 -27
  432. package/dist/runtime/picoclaw/mcp.d.ts +4 -0
  433. package/dist/runtime/picoclaw/mcp.js +43 -0
  434. package/dist/runtime/picoclaw/memory.d.ts +7 -0
  435. package/dist/runtime/picoclaw/memory.js +17 -0
  436. package/dist/runtime/picoclaw/runAuth.js +1 -1
  437. package/dist/runtime/picoclaw/scaffold.js +1 -1
  438. package/dist/runtime/picoclaw/schedules.d.ts +26 -0
  439. package/dist/runtime/picoclaw/schedules.js +62 -3
  440. package/dist/runtime/scheduleUtils.d.ts +2 -0
  441. package/dist/runtime/scheduleUtils.js +15 -0
  442. package/dist/runtime/types.d.ts +25 -2
  443. package/dist/shared/errors.d.ts +1 -1
  444. package/dist/shared/errors.js +2 -2
  445. package/dist/shared/index.d.ts +1 -0
  446. package/dist/shared/index.js +1 -0
  447. package/dist/shared/redaction.d.ts +2 -0
  448. package/dist/shared/redaction.js +10 -0
  449. package/dist/status/buildStatus.d.ts +1 -0
  450. package/dist/status/buildStatus.js +2 -0
  451. package/dist/status/compileReport.d.ts +22 -0
  452. package/dist/status/compileReport.js +16 -2
  453. package/dist/status/compiledProbeCollection.d.ts +21 -0
  454. package/dist/status/compiledProbeCollection.js +27 -0
  455. package/dist/status/imageStatusReport.js +6 -0
  456. package/dist/status/index.d.ts +3 -0
  457. package/dist/status/index.js +3 -0
  458. package/dist/status/lifecycleProbes.d.ts +19 -0
  459. package/dist/status/lifecycleProbes.js +174 -0
  460. package/dist/status/moltnetProbes.d.ts +7 -8
  461. package/dist/status/moltnetProbes.js +27 -198
  462. package/dist/status/moltnetWiringProbes.d.ts +19 -0
  463. package/dist/status/moltnetWiringProbes.js +178 -0
  464. package/dist/target/cleanupRun.d.ts +41 -0
  465. package/dist/target/cleanupRun.js +139 -0
  466. package/dist/target/cleanupRunDocker.d.ts +16 -0
  467. package/dist/target/cleanupRunDocker.js +66 -0
  468. package/dist/target/cleanupRunDocker.test-helper.d.ts +67 -0
  469. package/dist/target/cleanupRunDocker.test-helper.js +238 -0
  470. package/dist/target/cleanupRunDockerPreflight.d.ts +17 -0
  471. package/dist/target/cleanupRunDockerPreflight.js +224 -0
  472. package/dist/target/composedPreparation.d.ts +205 -0
  473. package/dist/target/composedPreparation.js +223 -0
  474. package/dist/target/containerBundle.d.ts +82 -0
  475. package/dist/target/containerBundle.js +243 -0
  476. package/dist/target/containerBundleArchive.d.ts +31 -0
  477. package/dist/target/containerBundleArchive.js +140 -0
  478. package/dist/target/containerBundleAuthority.d.ts +25 -0
  479. package/dist/target/containerBundleAuthority.js +65 -0
  480. package/dist/target/containerBundleContracts.d.ts +114 -0
  481. package/dist/target/containerBundleContracts.js +173 -0
  482. package/dist/target/containerBundleFilesystemStore.d.ts +3 -0
  483. package/dist/target/containerBundleFilesystemStore.js +247 -0
  484. package/dist/target/containerBundlePolicy.d.ts +33 -0
  485. package/dist/target/containerBundlePolicy.js +64 -0
  486. package/dist/target/containerBundleStore.d.ts +127 -0
  487. package/dist/target/containerBundleStore.js +284 -0
  488. package/dist/target/contracts.d.ts +538 -0
  489. package/dist/target/contracts.js +373 -0
  490. package/dist/target/dockerArtifactIdentityTypes.d.ts +56 -0
  491. package/dist/target/dockerArtifactIdentityTypes.js +1 -0
  492. package/dist/target/dockerArtifactInspection.d.ts +40 -0
  493. package/dist/target/dockerArtifactInspection.js +125 -0
  494. package/dist/target/dockerArtifacts.d.ts +21 -0
  495. package/dist/target/dockerArtifacts.js +110 -0
  496. package/dist/target/dockerArtifactsProvider.d.ts +41 -0
  497. package/dist/target/dockerArtifactsProvider.js +449 -0
  498. package/dist/target/dockerCommandExecutor.d.ts +27 -0
  499. package/dist/target/dockerCommandExecutor.js +200 -0
  500. package/dist/target/dockerCommandExecutorCore.d.ts +34 -0
  501. package/dist/target/dockerCommandExecutorCore.js +273 -0
  502. package/dist/target/dockerContainerBundleBuilder.d.ts +8 -0
  503. package/dist/target/dockerContainerBundleBuilder.js +256 -0
  504. package/dist/target/dockerContextSnapshot.d.ts +21 -0
  505. package/dist/target/dockerContextSnapshot.js +158 -0
  506. package/dist/target/dockerEndpointFingerprint.d.ts +1 -0
  507. package/dist/target/dockerEndpointFingerprint.js +9 -0
  508. package/dist/target/dockerPreparedArtifact.d.ts +48 -0
  509. package/dist/target/dockerPreparedArtifact.js +131 -0
  510. package/dist/target/dockerProjectionJson.d.ts +1 -0
  511. package/dist/target/dockerProjectionJson.js +80 -0
  512. package/dist/target/dockerPublicArtifactSnapshot.d.ts +17 -0
  513. package/dist/target/dockerPublicArtifactSnapshot.js +99 -0
  514. package/dist/target/dockerResources.d.ts +26 -0
  515. package/dist/target/dockerResources.js +162 -0
  516. package/dist/target/dockerResourcesProvider.d.ts +44 -0
  517. package/dist/target/dockerResourcesProvider.js +207 -0
  518. package/dist/target/dockerSecrets.d.ts +39 -0
  519. package/dist/target/dockerSecrets.js +249 -0
  520. package/dist/target/dockerSecretsAuthority.d.ts +26 -0
  521. package/dist/target/dockerSecretsAuthority.js +216 -0
  522. package/dist/target/dockerSecretsLifecycle.d.ts +25 -0
  523. package/dist/target/dockerSecretsLifecycle.js +133 -0
  524. package/dist/target/dockerSecretsProvider.d.ts +68 -0
  525. package/dist/target/dockerSecretsProvider.js +329 -0
  526. package/dist/target/dockerTarget.d.ts +52 -0
  527. package/dist/target/dockerTarget.js +48 -0
  528. package/dist/target/dockerTargetBinding.d.ts +14 -0
  529. package/dist/target/dockerTargetBinding.js +96 -0
  530. package/dist/target/dockerWorldClock.d.ts +17 -0
  531. package/dist/target/dockerWorldClock.js +111 -0
  532. package/dist/target/dockerWorldReadiness.d.ts +17 -0
  533. package/dist/target/dockerWorldReadiness.js +119 -0
  534. package/dist/target/dockerWorldService.d.ts +23 -0
  535. package/dist/target/dockerWorldService.js +216 -0
  536. package/dist/target/dockerWorldServiceAuthority.d.ts +80 -0
  537. package/dist/target/dockerWorldServiceAuthority.js +182 -0
  538. package/dist/target/dockerWorldServiceLifecycle.d.ts +41 -0
  539. package/dist/target/dockerWorldServiceLifecycle.js +275 -0
  540. package/dist/target/dockerWorldServiceProvider.d.ts +60 -0
  541. package/dist/target/dockerWorldServiceProvider.js +318 -0
  542. package/dist/target/dockerWorldServiceStore.d.ts +73 -0
  543. package/dist/target/dockerWorldServiceStore.js +367 -0
  544. package/dist/target/evidenceExport.d.ts +55 -0
  545. package/dist/target/evidenceExport.js +518 -0
  546. package/dist/target/evidenceExportArchive.d.ts +10 -0
  547. package/dist/target/evidenceExportArchive.js +302 -0
  548. package/dist/target/evidenceExportContract.d.ts +27 -0
  549. package/dist/target/evidenceExportContract.js +40 -0
  550. package/dist/target/evidenceExportOperationsTestKit.d.ts +87 -0
  551. package/dist/target/evidenceExportOperationsTestKit.js +312 -0
  552. package/dist/target/evidenceExportProvider.d.ts +85 -0
  553. package/dist/target/evidenceExportProvider.js +187 -0
  554. package/dist/target/evidenceExportPublicationTypes.d.ts +16 -0
  555. package/dist/target/evidenceExportPublicationTypes.js +1 -0
  556. package/dist/target/evidenceExportStore.d.ts +70 -0
  557. package/dist/target/evidenceExportStore.js +498 -0
  558. package/dist/target/evidenceExportStorePublication.d.ts +7 -0
  559. package/dist/target/evidenceExportStorePublication.js +395 -0
  560. package/dist/target/handles.d.ts +20 -0
  561. package/dist/target/handles.js +56 -0
  562. package/dist/target/index.d.ts +12 -0
  563. package/dist/target/index.js +11 -0
  564. package/dist/target/journal.d.ts +59 -0
  565. package/dist/target/journal.js +529 -0
  566. package/dist/target/journalFilesystem.d.ts +3 -0
  567. package/dist/target/journalFilesystem.js +111 -0
  568. package/dist/target/journalRoot.d.ts +4 -0
  569. package/dist/target/journalRoot.js +6 -0
  570. package/dist/target/organizationAttachment.d.ts +23 -0
  571. package/dist/target/organizationAttachment.js +263 -0
  572. package/dist/target/organizationAttachmentAuthority.d.ts +65 -0
  573. package/dist/target/organizationAttachmentAuthority.js +161 -0
  574. package/dist/target/organizationAttachmentLifecycle.d.ts +17 -0
  575. package/dist/target/organizationAttachmentLifecycle.js +101 -0
  576. package/dist/target/organizationAttachmentProvider.d.ts +76 -0
  577. package/dist/target/organizationAttachmentProvider.js +289 -0
  578. package/dist/target/organizationAttachmentStore.d.ts +51 -0
  579. package/dist/target/organizationAttachmentStore.js +316 -0
  580. package/dist/target/publicArtifactSnapshot.d.ts +41 -0
  581. package/dist/target/publicArtifactSnapshot.js +150 -0
  582. package/dist/target/topologyActivation.d.ts +51 -0
  583. package/dist/target/topologyActivation.js +149 -0
  584. package/dist/target/topologyAttestation.d.ts +37 -0
  585. package/dist/target/topologyAttestation.js +300 -0
  586. package/dist/target/topologyAttestationErrors.d.ts +1 -0
  587. package/dist/target/topologyAttestationErrors.js +1 -0
  588. package/dist/target/worldClock.d.ts +60 -0
  589. package/dist/target/worldClock.js +129 -0
  590. package/dist/target/worldReadiness.d.ts +103 -0
  591. package/dist/target/worldReadiness.js +153 -0
  592. package/moltnet-releases.json +20 -0
  593. package/package.json +27 -11
  594. package/runtimes.yaml +8 -23
  595. package/dist/runtime/openclaw/scaffold-assets/CLAUDE.md +0 -5
  596. package/dist/runtime/picoclaw/scaffold-assets/CLAUDE.md +0 -5
  597. /package/dist/runtime/openclaw/scaffold-assets/{AGENTS.md → WORKSPACE_AGENTS.md} +0 -0
  598. /package/dist/runtime/picoclaw/scaffold-assets/{AGENTS.md → WORKSPACE_AGENTS.md} +0 -0
@@ -0,0 +1,162 @@
1
+ import path from "node:path";
2
+ import { constants } from "node:fs";
3
+ import { open } from "node:fs/promises";
4
+ import { SpawnfileError } from "../shared/index.js";
5
+ import { resolveWorldBindings, SIMFILE_WORLD_BINDINGS_VERSION } from "./worldBindings.js";
6
+ export const MAX_WORLD_BINDINGS_FILE_BYTES = 1_048_576;
7
+ class DuplicateJsonKeyError extends Error {
8
+ }
9
+ const fail = (message) => {
10
+ throw new SpawnfileError("validation_error", `invalid ${SIMFILE_WORLD_BINDINGS_VERSION} file: ${message}`);
11
+ };
12
+ const assertNoDuplicateJsonKeys = (source) => {
13
+ let offset = 0;
14
+ const whitespace = () => {
15
+ while (/\s/u.test(source[offset] ?? ""))
16
+ offset += 1;
17
+ };
18
+ const string = () => {
19
+ const start = offset;
20
+ offset += 1;
21
+ while (offset < source.length) {
22
+ if (source[offset] === "\\") {
23
+ offset += 2;
24
+ }
25
+ else if (source[offset] === "\"") {
26
+ offset += 1;
27
+ return JSON.parse(source.slice(start, offset));
28
+ }
29
+ else {
30
+ offset += 1;
31
+ }
32
+ }
33
+ return fail("JSON is malformed");
34
+ };
35
+ const value = () => {
36
+ whitespace();
37
+ if (source[offset] === "{") {
38
+ object();
39
+ return;
40
+ }
41
+ if (source[offset] === "[") {
42
+ array();
43
+ return;
44
+ }
45
+ if (source[offset] === "\"") {
46
+ string();
47
+ return;
48
+ }
49
+ while (offset < source.length && !/[\s,\]}]/u.test(source[offset] ?? "")) {
50
+ offset += 1;
51
+ }
52
+ };
53
+ const object = () => {
54
+ offset += 1;
55
+ whitespace();
56
+ const keys = new Set();
57
+ if (source[offset] === "}") {
58
+ offset += 1;
59
+ return;
60
+ }
61
+ while (offset < source.length) {
62
+ const key = string();
63
+ if (keys.has(key))
64
+ throw new DuplicateJsonKeyError();
65
+ keys.add(key);
66
+ whitespace();
67
+ offset += 1;
68
+ value();
69
+ whitespace();
70
+ if (source[offset] === "}") {
71
+ offset += 1;
72
+ return;
73
+ }
74
+ offset += 1;
75
+ whitespace();
76
+ }
77
+ };
78
+ const array = () => {
79
+ offset += 1;
80
+ whitespace();
81
+ if (source[offset] === "]") {
82
+ offset += 1;
83
+ return;
84
+ }
85
+ while (offset < source.length) {
86
+ value();
87
+ whitespace();
88
+ if (source[offset] === "]") {
89
+ offset += 1;
90
+ return;
91
+ }
92
+ offset += 1;
93
+ whitespace();
94
+ }
95
+ };
96
+ value();
97
+ whitespace();
98
+ if (offset !== source.length)
99
+ fail("JSON must contain exactly one value");
100
+ };
101
+ const decodeJson = (bytes) => {
102
+ let source;
103
+ try {
104
+ source = new TextDecoder("utf-8", { fatal: true }).decode(bytes);
105
+ }
106
+ catch {
107
+ return fail("content must be valid UTF-8");
108
+ }
109
+ let parsed;
110
+ try {
111
+ parsed = JSON.parse(source);
112
+ }
113
+ catch {
114
+ return fail("content must be exactly one valid JSON value");
115
+ }
116
+ try {
117
+ assertNoDuplicateJsonKeys(source);
118
+ }
119
+ catch (error) {
120
+ if (error instanceof DuplicateJsonKeyError)
121
+ return fail("duplicate JSON keys are not allowed");
122
+ throw error;
123
+ }
124
+ return parsed;
125
+ };
126
+ export const readSimfileWorldBindingsFile = async (inputPath) => {
127
+ const filePath = path.resolve(inputPath);
128
+ let handle;
129
+ try {
130
+ handle = await open(filePath, constants.O_RDONLY | constants.O_NONBLOCK);
131
+ const metadata = await handle.stat();
132
+ if (!metadata.isFile() || metadata.size <= 0
133
+ || metadata.size > MAX_WORLD_BINDINGS_FILE_BYTES) {
134
+ return fail(`content must be a non-empty regular file no larger than ${MAX_WORLD_BINDINGS_FILE_BYTES} bytes`);
135
+ }
136
+ const buffer = new Uint8Array(MAX_WORLD_BINDINGS_FILE_BYTES + 1);
137
+ const { bytesRead } = await handle.read(buffer, 0, buffer.byteLength, 0);
138
+ const afterRead = await handle.stat();
139
+ if (bytesRead !== metadata.size || afterRead.size !== metadata.size
140
+ || bytesRead > MAX_WORLD_BINDINGS_FILE_BYTES) {
141
+ return fail("content changed while it was being read or exceeds the byte limit");
142
+ }
143
+ return decodeJson(buffer.subarray(0, bytesRead));
144
+ }
145
+ catch (error) {
146
+ if (error instanceof SpawnfileError)
147
+ throw error;
148
+ return fail("content could not be read");
149
+ }
150
+ finally {
151
+ await handle?.close().catch(() => undefined);
152
+ }
153
+ };
154
+ export const loadWorldBindingsForCompile = async (plan, inputPath, expectedRunId) => {
155
+ if (!expectedRunId)
156
+ return fail("NOOPOLIS_RUN_ID must be set before compile");
157
+ const resolved = resolveWorldBindings(plan, await readSimfileWorldBindingsFile(inputPath));
158
+ if (resolved.artifact.bindings[0]?.run_id !== expectedRunId) {
159
+ return fail("binding run_id does not match the compile NOOPOLIS_RUN_ID");
160
+ }
161
+ return resolved;
162
+ };
@@ -0,0 +1,49 @@
1
+ import { type DockerArtifactExecFile } from "./artifactsExportDocker.js";
2
+ import { type ExportIndex } from "./artifactsExportTypes.js";
3
+ import { type DeploymentLifecycleCorrelation } from "./deploymentLifecycleCorrelation.js";
4
+ export interface ExportRunArtifactsOptions {
5
+ /** Where the deployment record + compile report already live (the compile's own
6
+ * `--out` directory) — NOT the export destination. */
7
+ compiledOutputDirectory: string;
8
+ deploymentName?: string;
9
+ /** Where `raw/**` and `spawnfile/export-index.json` are written. */
10
+ destinationDirectory: string;
11
+ dockerCommand?: string;
12
+ execFile?: DockerArtifactExecFile;
13
+ /** Explicitly export unredacted private runtime training artifacts. */
14
+ includePrivate?: boolean;
15
+ /** Overrides the image used to read named volumes; defaults to the deployment's own
16
+ * recorded `image_tag` (already present locally — see artifactsExportDocker.ts). */
17
+ readerImage?: string;
18
+ runId?: string;
19
+ timeoutMs?: number;
20
+ expectedLifecycleCorrelation?: DeploymentLifecycleCorrelation;
21
+ }
22
+ export interface ExportRunArtifactsResult {
23
+ deploymentName: string;
24
+ /** Planned files that failed to copy despite the container/volume being reachable
25
+ * (a real per-file problem, worth surfacing — as opposed to `missingOptionalFiles`). */
26
+ failedFiles: string[];
27
+ index: ExportIndex;
28
+ indexPath: string;
29
+ /** Planned files that were legitimately absent (e.g. no recall yet) — not failures. */
30
+ missingOptionalFiles: string[];
31
+ }
32
+ export declare const resolveArtifactsExportLifecycleCorrelation: (options: Pick<ExportRunArtifactsOptions, "compiledOutputDirectory" | "deploymentName" | "runId">) => Promise<DeploymentLifecycleCorrelation>;
33
+ /**
34
+ * `spawnfile artifacts export` — mechanical egress of a run's durable artifacts (moltnet
35
+ * causal log, mneme bank ledgers, daimon per-agent telemetry) into the compose-and-observe
36
+ * run-dir layout (`decisions.md` Decision 21 §2), plus the `spawnfile.export-index.v1`
37
+ * index simfile's observer folds into its own run manifest.
38
+ *
39
+ * As of Piece 4b, every planned file is volume-sourced (moltnet + mneme already were;
40
+ * daimon telemetry joined them — see `artifactsExportPlan.ts`'s `planDaimonFiles`), and a
41
+ * named volume outlives its container across a plain `docker rm` (no `--volumes`). So this
42
+ * no longer requires the deployment's container to still be alive in the general case: the
43
+ * container-liveness check below (`requiresLiveContainer`) only runs when the plan actually
44
+ * contains a `kind: "container"` file, which today only happens for a legacy pre-Piece-4b
45
+ * compile report. This is the real relaxation of the export-before-teardown invariant
46
+ * Piece 4b unlocks: `spawnfile down` (without `--volumes`) can run BEFORE `spawnfile
47
+ * artifacts export`, and export still recovers everything from the named volumes.
48
+ */
49
+ export declare const exportRunArtifacts: (options: ExportRunArtifactsOptions) => Promise<ExportRunArtifactsResult>;
@@ -0,0 +1,217 @@
1
+ import { createHash } from "node:crypto";
2
+ import path from "node:path";
3
+ import { readFile, rm } from "node:fs/promises";
4
+ import { ensureDirectory, fileExists, readUtf8File, writeUtf8File } from "../filesystem/index.js";
5
+ import { SpawnfileError } from "../shared/index.js";
6
+ import { REPORT_FILENAME } from "../shared/index.js";
7
+ import { containerExists, copyContainerFileToHost, copyVolumeFileToHost, defaultDockerArtifactExecFile } from "./artifactsExportDocker.js";
8
+ import { EXPORT_INDEX_VERSION } from "./artifactsExportTypes.js";
9
+ import { planArtifactExports } from "./artifactsExportPlan.js";
10
+ import { exportPrivateRuntimeArtifacts } from "./privateArtifactsExport.js";
11
+ import { assertDeploymentLifecycleCorrelation, createDeploymentLifecycleCorrelation, } from "./deploymentLifecycleCorrelation.js";
12
+ import { listDeploymentRecords, readDeploymentRecordFromOutput, writeDeploymentRecord } from "./record.js";
13
+ const sha256Hex = (buffer) => createHash("sha256").update(buffer).digest("hex");
14
+ const targetRefForUnit = (unit) => unit.container_id ?? unit.container_name;
15
+ const resolveDeploymentRecord = async (compiledOutputDirectory, options) => {
16
+ if (options.deploymentName && options.runId) {
17
+ throw new SpawnfileError("validation_error", "spawnfile artifacts export accepts only one of --deployment or --run-id");
18
+ }
19
+ if (!options.deploymentName && !options.runId) {
20
+ throw new SpawnfileError("validation_error", "spawnfile artifacts export requires --deployment <name> or --run-id <id>");
21
+ }
22
+ if (options.deploymentName) {
23
+ try {
24
+ return await readDeploymentRecordFromOutput(compiledOutputDirectory, options.deploymentName);
25
+ }
26
+ catch (error) {
27
+ const reason = error instanceof Error ? error.message : String(error);
28
+ throw new SpawnfileError("runtime_error", `No deployment record named "${options.deploymentName}" under ${compiledOutputDirectory}. ` +
29
+ `Has it already been torn down, or never brought up with --detach? (${reason})`);
30
+ }
31
+ }
32
+ const records = await listDeploymentRecords(compiledOutputDirectory);
33
+ const match = records.find((entry) => entry.record.run_id === options.runId);
34
+ if (!match) {
35
+ const known = records.map((entry) => entry.record.name).sort().join(", ") || "none";
36
+ throw new SpawnfileError("runtime_error", `No deployment record found for run id "${options.runId}" under ${compiledOutputDirectory}. ` +
37
+ `Known deployments: ${known}`);
38
+ }
39
+ return match.record;
40
+ };
41
+ export const resolveArtifactsExportLifecycleCorrelation = async (options) => createDeploymentLifecycleCorrelation(await resolveDeploymentRecord(path.resolve(options.compiledOutputDirectory), options));
42
+ const readCompileReport = async (compiledOutputDirectory) => {
43
+ const reportPath = path.join(compiledOutputDirectory, REPORT_FILENAME);
44
+ if (!(await fileExists(reportPath))) {
45
+ throw new SpawnfileError("validation_error", `No compile report found at ${reportPath}; recompile the project before exporting artifacts.`);
46
+ }
47
+ const parsed = JSON.parse(await readUtf8File(reportPath));
48
+ if (!parsed.container) {
49
+ throw new SpawnfileError("validation_error", `Compile report at ${reportPath} has no container section; nothing to export.`);
50
+ }
51
+ return parsed;
52
+ };
53
+ const hostPathFor = (destinationDirectory, relativePath) => path.join(destinationDirectory, ...relativePath.split("/"));
54
+ const exportOnePlannedFile = async (input) => {
55
+ const hostPath = hostPathFor(input.destinationDirectory, input.plan.relativePath);
56
+ await ensureDirectory(path.dirname(hostPath));
57
+ const runnerOptions = { dockerCommand: input.dockerCommand, execFile: input.execFile, timeoutMs: input.timeoutMs };
58
+ let copied;
59
+ let source;
60
+ if (input.plan.source.kind === "container") {
61
+ copied = await copyContainerFileToHost({
62
+ containerPath: input.plan.source.containerPath,
63
+ containerRef: input.containerRef,
64
+ hostPath,
65
+ target: input.target,
66
+ ...runnerOptions
67
+ });
68
+ source = { kind: "container", ref: `${input.containerRef}:${input.plan.source.containerPath}` };
69
+ }
70
+ else {
71
+ copied = await copyVolumeFileToHost({
72
+ hostPath,
73
+ readerImage: input.readerImage,
74
+ target: input.target,
75
+ volumeName: input.plan.source.volumeName,
76
+ volumePath: input.plan.source.volumePath,
77
+ ...runnerOptions
78
+ });
79
+ source = { kind: "volume", ref: `${input.plan.source.volumeName}:/${input.plan.source.volumePath}` };
80
+ }
81
+ if (!copied) {
82
+ // docker cp never creates a partial file on failure, but be defensive: never leave a
83
+ // stray empty file behind for a copy this function considers failed.
84
+ await rm(hostPath, { force: true });
85
+ return null;
86
+ }
87
+ const buffer = await readFile(hostPath);
88
+ return {
89
+ bytes: buffer.byteLength,
90
+ path: input.plan.relativePath,
91
+ sha256: sha256Hex(buffer),
92
+ source
93
+ };
94
+ };
95
+ /**
96
+ * `spawnfile artifacts export` — mechanical egress of a run's durable artifacts (moltnet
97
+ * causal log, mneme bank ledgers, daimon per-agent telemetry) into the compose-and-observe
98
+ * run-dir layout (`decisions.md` Decision 21 §2), plus the `spawnfile.export-index.v1`
99
+ * index simfile's observer folds into its own run manifest.
100
+ *
101
+ * As of Piece 4b, every planned file is volume-sourced (moltnet + mneme already were;
102
+ * daimon telemetry joined them — see `artifactsExportPlan.ts`'s `planDaimonFiles`), and a
103
+ * named volume outlives its container across a plain `docker rm` (no `--volumes`). So this
104
+ * no longer requires the deployment's container to still be alive in the general case: the
105
+ * container-liveness check below (`requiresLiveContainer`) only runs when the plan actually
106
+ * contains a `kind: "container"` file, which today only happens for a legacy pre-Piece-4b
107
+ * compile report. This is the real relaxation of the export-before-teardown invariant
108
+ * Piece 4b unlocks: `spawnfile down` (without `--volumes`) can run BEFORE `spawnfile
109
+ * artifacts export`, and export still recovers everything from the named volumes.
110
+ */
111
+ export const exportRunArtifacts = async (options) => {
112
+ const compiledOutputDirectory = path.resolve(options.compiledOutputDirectory);
113
+ const destinationDirectory = path.resolve(options.destinationDirectory);
114
+ const dockerCommand = options.dockerCommand ?? "docker";
115
+ const execFileImpl = options.execFile ?? defaultDockerArtifactExecFile;
116
+ const timeoutMs = options.timeoutMs ?? 30_000;
117
+ const record = await resolveDeploymentRecord(compiledOutputDirectory, options);
118
+ assertDeploymentLifecycleCorrelation(record, options.expectedLifecycleCorrelation);
119
+ const unit = record.units[0];
120
+ if (!unit) {
121
+ throw new SpawnfileError("validation_error", `Deployment "${record.name}" has no recorded container unit`);
122
+ }
123
+ const containerRef = targetRefForUnit(unit);
124
+ if (!containerRef) {
125
+ throw new SpawnfileError("validation_error", `Deployment "${record.name}" has no recorded container id or name`);
126
+ }
127
+ const runId = record.run_id;
128
+ if (!runId) {
129
+ throw new SpawnfileError("validation_error", `Deployment "${record.name}" has no recorded run id (it predates run-id tracking, or was ` +
130
+ "compiled with no NOOPOLIS_RUN_ID set), so a conformant export-index.json cannot be " +
131
+ "written. Recompile and redeploy the project (with NOOPOLIS_RUN_ID set, or via a plain " +
132
+ "`spawnfile up --detach`, which always generates one) before exporting artifacts.");
133
+ }
134
+ const report = await readCompileReport(compiledOutputDirectory);
135
+ const planned = planArtifactExports(report);
136
+ // Only a `kind: "container"` planned file needs the live container (see this function's
137
+ // own doc comment) — every other source reads a named volume, which survives a plain
138
+ // `docker rm` on its own. Gating on this, rather than checking unconditionally, is the
139
+ // actual export-before-teardown relaxation Piece 4b delivers.
140
+ const requiresLiveContainer = options.includePrivate === true
141
+ || planned.some((entry) => entry.source.kind === "container");
142
+ if (requiresLiveContainer) {
143
+ const exists = await containerExists(record.target, containerRef, {
144
+ dockerCommand,
145
+ execFile: execFileImpl,
146
+ timeoutMs
147
+ });
148
+ if (!exists) {
149
+ throw new SpawnfileError("runtime_error", `Deployment "${record.name}" has no live container ("${containerRef}"), and its planned export ` +
150
+ "includes at least one file that can only be read from a live container (a legacy, " +
151
+ "pre-Piece-4b compile report — recompile to move it onto a durable volume). Run " +
152
+ "`spawnfile artifacts export` BEFORE `spawnfile down` removes the container, or recompile.");
153
+ }
154
+ }
155
+ const readerImage = options.readerImage ?? unit.image_tag;
156
+ const files = [];
157
+ const missingOptionalFiles = [];
158
+ const failedFiles = [];
159
+ for (const plan of planned) {
160
+ const entry = await exportOnePlannedFile({
161
+ containerRef,
162
+ destinationDirectory,
163
+ dockerCommand,
164
+ execFile: execFileImpl,
165
+ plan,
166
+ readerImage,
167
+ target: record.target,
168
+ timeoutMs
169
+ });
170
+ if (entry) {
171
+ files.push(entry);
172
+ }
173
+ else if (plan.optional) {
174
+ missingOptionalFiles.push(plan.relativePath);
175
+ }
176
+ else {
177
+ failedFiles.push(plan.relativePath);
178
+ }
179
+ }
180
+ if (options.includePrivate === true) {
181
+ const privateResult = await exportPrivateRuntimeArtifacts({
182
+ containerRef,
183
+ destinationDirectory,
184
+ dockerCommand,
185
+ execFile: execFileImpl,
186
+ report,
187
+ target: record.target,
188
+ timeoutMs,
189
+ });
190
+ files.push(...privateResult.files);
191
+ failedFiles.push(...privateResult.missing);
192
+ }
193
+ const index = {
194
+ deployment: record.name,
195
+ exported_at: new Date().toISOString(),
196
+ files: files.sort((left, right) => left.path.localeCompare(right.path)),
197
+ run_id: runId,
198
+ version: EXPORT_INDEX_VERSION
199
+ };
200
+ const indexPath = path.join(destinationDirectory, "spawnfile", "export-index.json");
201
+ await ensureDirectory(path.dirname(indexPath));
202
+ await writeUtf8File(indexPath, `${JSON.stringify(index, null, 2)}\n`);
203
+ // Stamp the export-before-teardown marker onto the SAME deployment record `spawnfile
204
+ // down` resolves (record.ts's `export_index`), so down never needs a second, out-of-band
205
+ // way to learn that this run's artifacts are already safe to discard the container for.
206
+ await writeDeploymentRecord(compiledOutputDirectory, {
207
+ ...record,
208
+ export_index: { exported_at: index.exported_at, path: indexPath, run_id: runId }
209
+ });
210
+ return {
211
+ deploymentName: record.name,
212
+ failedFiles,
213
+ index,
214
+ indexPath,
215
+ missingOptionalFiles
216
+ };
217
+ };
@@ -0,0 +1,48 @@
1
+ import type { DeploymentRecord } from "./record.js";
2
+ /** Same injectable exec shape as `dockerInspect.ts`/`dockerLogs.ts` — real Docker calls
3
+ * are the default, tests inject a fake. */
4
+ export type DockerArtifactExecFile = (file: string, args: string[], options: {
5
+ timeout: number;
6
+ }) => Promise<{
7
+ stderr: string;
8
+ stdout: string;
9
+ }>;
10
+ export interface DockerRunnerOptions {
11
+ dockerCommand: string;
12
+ execFile: DockerArtifactExecFile;
13
+ timeoutMs: number;
14
+ }
15
+ /**
16
+ * True when `containerRef` (an id or name) still exists in Docker, false when Docker
17
+ * reports it missing (a stopped-and-removed container, or one never created). Any other
18
+ * Docker failure (daemon unreachable, context misconfigured, ...) is re-thrown rather than
19
+ * folded into "missing" — export-before-teardown detection must not misreport a genuine
20
+ * Docker connectivity problem as "this deployment was already torn down".
21
+ */
22
+ export declare const containerExists: (target: DeploymentRecord["target"], containerRef: string, options: DockerRunnerOptions) => Promise<boolean>;
23
+ /** `docker cp <containerRef>:<containerPath> <hostPath>` — best-effort, returns false
24
+ * instead of throwing (a single missing file inside an otherwise-live container is a
25
+ * per-file concern, handled by the caller via each planned file's `optional` flag). */
26
+ export declare const copyContainerFileToHost: (input: {
27
+ containerPath: string;
28
+ containerRef: string;
29
+ hostPath: string;
30
+ target: DeploymentRecord["target"];
31
+ } & DockerRunnerOptions) => Promise<boolean>;
32
+ /**
33
+ * Reads one file out of a named Docker volume without needing the volume's original
34
+ * container: creates a throwaway container (never started — its own entrypoint never
35
+ * runs) with the volume read-only mounted, `docker cp`s the single file out, then always
36
+ * removes the throwaway container. `readerImage` is expected to be an image already
37
+ * present locally (the deployment's own `unit.image_tag` is the natural choice — it is
38
+ * guaranteed to exist wherever the deployment itself ran, so this never needs to pull a
39
+ * new "tiny image" from a registry).
40
+ */
41
+ export declare const copyVolumeFileToHost: (input: {
42
+ hostPath: string;
43
+ readerImage: string;
44
+ target: DeploymentRecord["target"];
45
+ volumeName: string;
46
+ volumePath: string;
47
+ } & DockerRunnerOptions) => Promise<boolean>;
48
+ export declare const defaultDockerArtifactExecFile: DockerArtifactExecFile;
@@ -0,0 +1,91 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { execFile as execFileCallback } from "node:child_process";
3
+ import { promisify } from "node:util";
4
+ import { dockerContextNameForTarget } from "./target.js";
5
+ const execFile = promisify(execFileCallback);
6
+ const withDockerTarget = (target, args) => {
7
+ const context = dockerContextNameForTarget(target);
8
+ if (context) {
9
+ return ["--context", context, ...args];
10
+ }
11
+ if (target.kind === "host") {
12
+ return ["--host", target.value, ...args];
13
+ }
14
+ return args;
15
+ };
16
+ const toErrorMessage = (error) => {
17
+ if (typeof error === "object" && error !== null && "stderr" in error) {
18
+ const stderr = error.stderr;
19
+ if (typeof stderr === "string" && stderr.length > 0) {
20
+ return stderr.trim();
21
+ }
22
+ }
23
+ return error instanceof Error ? error.message : String(error);
24
+ };
25
+ /**
26
+ * True when `containerRef` (an id or name) still exists in Docker, false when Docker
27
+ * reports it missing (a stopped-and-removed container, or one never created). Any other
28
+ * Docker failure (daemon unreachable, context misconfigured, ...) is re-thrown rather than
29
+ * folded into "missing" — export-before-teardown detection must not misreport a genuine
30
+ * Docker connectivity problem as "this deployment was already torn down".
31
+ */
32
+ export const containerExists = async (target, containerRef, options) => {
33
+ try {
34
+ await options.execFile(options.dockerCommand, withDockerTarget(target, ["inspect", "--type", "container", containerRef]), { timeout: options.timeoutMs });
35
+ return true;
36
+ }
37
+ catch (error) {
38
+ const message = toErrorMessage(error);
39
+ if (/No such (?:object|container)/i.test(message)) {
40
+ return false;
41
+ }
42
+ throw new Error(`Unable to check whether container "${containerRef}" exists: ${message}`);
43
+ }
44
+ };
45
+ /** `docker cp <containerRef>:<containerPath> <hostPath>` — best-effort, returns false
46
+ * instead of throwing (a single missing file inside an otherwise-live container is a
47
+ * per-file concern, handled by the caller via each planned file's `optional` flag). */
48
+ export const copyContainerFileToHost = async (input) => {
49
+ try {
50
+ await input.execFile(input.dockerCommand, withDockerTarget(input.target, ["cp", `${input.containerRef}:${input.containerPath}`, input.hostPath]), { timeout: input.timeoutMs });
51
+ return true;
52
+ }
53
+ catch {
54
+ return false;
55
+ }
56
+ };
57
+ /**
58
+ * Reads one file out of a named Docker volume without needing the volume's original
59
+ * container: creates a throwaway container (never started — its own entrypoint never
60
+ * runs) with the volume read-only mounted, `docker cp`s the single file out, then always
61
+ * removes the throwaway container. `readerImage` is expected to be an image already
62
+ * present locally (the deployment's own `unit.image_tag` is the natural choice — it is
63
+ * guaranteed to exist wherever the deployment itself ran, so this never needs to pull a
64
+ * new "tiny image" from a registry).
65
+ */
66
+ export const copyVolumeFileToHost = async (input) => {
67
+ const mountPoint = "/spawnfile-export-src";
68
+ const readerContainerName = `spawnfile-artifacts-export-${randomUUID()}`;
69
+ try {
70
+ await input.execFile(input.dockerCommand, withDockerTarget(input.target, [
71
+ "create",
72
+ "--name", readerContainerName,
73
+ "-v", `${input.volumeName}:${mountPoint}:ro`,
74
+ input.readerImage
75
+ ]), { timeout: input.timeoutMs });
76
+ }
77
+ catch {
78
+ return false;
79
+ }
80
+ try {
81
+ await input.execFile(input.dockerCommand, withDockerTarget(input.target, ["cp", `${readerContainerName}:${mountPoint}/${input.volumePath}`, input.hostPath]), { timeout: input.timeoutMs });
82
+ return true;
83
+ }
84
+ catch {
85
+ return false;
86
+ }
87
+ finally {
88
+ await input.execFile(input.dockerCommand, withDockerTarget(input.target, ["rm", "-f", readerContainerName]), { timeout: input.timeoutMs }).catch(() => undefined);
89
+ }
90
+ };
91
+ export const defaultDockerArtifactExecFile = execFile;
@@ -0,0 +1,24 @@
1
+ import type { CompileReport } from "../report/index.js";
2
+ /** One durable-artifact file `spawnfile artifacts export` egresses, and where it lands
3
+ * under `<out>` (Decision 21 §2 run-dir layout). Pure planning data — no Docker/IO here;
4
+ * `artifactsExport.ts` executes each plan entry and `artifactsExportDocker.ts` knows how. */
5
+ export interface PlannedExportFile {
6
+ /** Path relative to the export destination directory, e.g. "raw/moltnet/causal.jsonl". */
7
+ relativePath: string;
8
+ source: {
9
+ kind: "volume";
10
+ volumeName: string;
11
+ volumePath: string;
12
+ } | {
13
+ kind: "container";
14
+ containerPath: string;
15
+ };
16
+ /** True when the file may legitimately be absent (e.g. a bank's causal.jsonl before any
17
+ * recall event, or events.jsonl before any memory write) — a missing optional file is a
18
+ * silent skip, never a diagnostic. Non-optional sources missing is worth flagging. */
19
+ optional: boolean;
20
+ }
21
+ /** Resolves every durable artifact file this run's compile report declares, and where each
22
+ * one is read from. Pure function of the compile report alone (no deployment record, no
23
+ * Docker) — `artifactsExport.ts` supplies the live container name at execution time. */
24
+ export declare const planArtifactExports: (report: CompileReport) => PlannedExportFile[];