spawnfile 0.1.12 → 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 (620) hide show
  1. package/README.md +58 -12
  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/runtimeCredentials.js +18 -2
  31. package/dist/auth/targetSecretSourceAuthor.d.ts +18 -0
  32. package/dist/auth/targetSecretSourceAuthor.js +52 -0
  33. package/dist/auth/targetSecretSourceFsPublish.d.ts +15 -0
  34. package/dist/auth/targetSecretSourceFsPublish.js +49 -0
  35. package/dist/auth/targetSecretSourceFsPublishImmutable.d.ts +16 -0
  36. package/dist/auth/targetSecretSourceFsPublishImmutable.js +435 -0
  37. package/dist/auth/targetSecretSourceFsRead.d.ts +14 -0
  38. package/dist/auth/targetSecretSourceFsRead.js +198 -0
  39. package/dist/auth/targetSecretSourceGrant.d.ts +16 -0
  40. package/dist/auth/targetSecretSourceGrant.js +99 -0
  41. package/dist/auth/targetSecretSourceGrantRecords.d.ts +84 -0
  42. package/dist/auth/targetSecretSourceGrantRecords.js +214 -0
  43. package/dist/auth/targetSecretSourceLifecycle.d.ts +30 -0
  44. package/dist/auth/targetSecretSourceLifecycle.js +52 -0
  45. package/dist/auth/targetSecretSourceOwnerEntropy.d.ts +6 -0
  46. package/dist/auth/targetSecretSourceOwnerEntropy.js +28 -0
  47. package/dist/auth/targetSecretSourceRecordCommon.d.ts +14 -0
  48. package/dist/auth/targetSecretSourceRecordCommon.js +100 -0
  49. package/dist/auth/targetSecretSourceRecordPublish.d.ts +10 -0
  50. package/dist/auth/targetSecretSourceRecordPublish.js +104 -0
  51. package/dist/auth/targetSecretSourceResolver.d.ts +10 -0
  52. package/dist/auth/targetSecretSourceResolver.js +137 -0
  53. package/dist/auth/targetSecretSourceRevoke.d.ts +20 -0
  54. package/dist/auth/targetSecretSourceRevoke.js +92 -0
  55. package/dist/auth/targetSecretSourceRotate.d.ts +19 -0
  56. package/dist/auth/targetSecretSourceRotate.js +121 -0
  57. package/dist/auth/targetSecretSourceVersionRecords.d.ts +49 -0
  58. package/dist/auth/targetSecretSourceVersionRecords.js +166 -0
  59. package/dist/cli/artifactsCommands.d.ts +27 -0
  60. package/dist/cli/artifactsCommands.js +132 -0
  61. package/dist/cli/authCommands.d.ts +5 -0
  62. package/dist/cli/authCommands.js +221 -0
  63. package/dist/cli/compileBuildCommands.d.ts +3 -0
  64. package/dist/cli/compileBuildCommands.js +35 -0
  65. package/dist/cli/containerBundleCommand.d.ts +6 -0
  66. package/dist/cli/containerBundleCommand.js +116 -0
  67. package/dist/cli/devCommands.d.ts +3 -0
  68. package/dist/cli/devCommands.js +115 -0
  69. package/dist/cli/downCommand.d.ts +25 -0
  70. package/dist/cli/downCommand.js +134 -0
  71. package/dist/cli/index.js +6 -3
  72. package/dist/cli/lifecycleCommands.d.ts +1 -1
  73. package/dist/cli/lifecycleCommands.js +11 -179
  74. package/dist/cli/lifecycleMachine.d.ts +19 -0
  75. package/dist/cli/lifecycleMachine.js +78 -0
  76. package/dist/cli/lifecyclePlan.d.ts +35 -0
  77. package/dist/cli/lifecyclePlan.js +240 -0
  78. package/dist/cli/lifecyclePlanningCommands.d.ts +3 -0
  79. package/dist/cli/lifecyclePlanningCommands.js +30 -0
  80. package/dist/cli/runCli.d.ts +15 -2
  81. package/dist/cli/runCli.js +31 -71
  82. package/dist/cli/runPublishCommands.d.ts +3 -0
  83. package/dist/cli/runPublishCommands.js +70 -0
  84. package/dist/cli/statusCommand.d.ts +3 -32
  85. package/dist/cli/statusCommand.js +37 -233
  86. package/dist/cli/statusCommandLive.d.ts +20 -0
  87. package/dist/cli/statusCommandLive.js +188 -0
  88. package/dist/cli/statusCommandOptions.d.ts +40 -0
  89. package/dist/cli/statusCommandOptions.js +42 -0
  90. package/dist/cli/targetCliRoute.d.ts +2 -0
  91. package/dist/cli/targetCliRoute.js +30 -0
  92. package/dist/cli/targetCommands.d.ts +33 -0
  93. package/dist/cli/targetCommands.js +257 -0
  94. package/dist/cli/targetComposedPreparationCommand.d.ts +6 -0
  95. package/dist/cli/targetComposedPreparationCommand.js +39 -0
  96. package/dist/cli/targetDefaultArtifactAuthority.d.ts +5 -0
  97. package/dist/cli/targetDefaultArtifactAuthority.js +28 -0
  98. package/dist/cli/targetDefaultAuthorities.d.ts +53 -0
  99. package/dist/cli/targetDefaultAuthorities.js +210 -0
  100. package/dist/cli/targetDefaultConfig.d.ts +68 -0
  101. package/dist/cli/targetDefaultConfig.js +317 -0
  102. package/dist/cli/targetDefaultConfigStdin.d.ts +13 -0
  103. package/dist/cli/targetDefaultConfigStdin.js +215 -0
  104. package/dist/cli/targetDefaultEnvelope.d.ts +1 -0
  105. package/dist/cli/targetDefaultEnvelope.js +13 -0
  106. package/dist/cli/targetDefaultHandlerFactory.d.ts +28 -0
  107. package/dist/cli/targetDefaultHandlerFactory.js +247 -0
  108. package/dist/cli/targetDefaultHandlers.d.ts +21 -0
  109. package/dist/cli/targetDefaultHandlers.js +72 -0
  110. package/dist/cli/targetDefaultJournalAuthority.d.ts +35 -0
  111. package/dist/cli/targetDefaultJournalAuthority.js +135 -0
  112. package/dist/cli/targetDefaultWorldClock.d.ts +4 -0
  113. package/dist/cli/targetDefaultWorldClock.js +14 -0
  114. package/dist/cli/targetDefaultWorldQueries.d.ts +5 -0
  115. package/dist/cli/targetDefaultWorldQueries.js +11 -0
  116. package/dist/cli/targetDefaultWorldReadiness.d.ts +4 -0
  117. package/dist/cli/targetDefaultWorldReadiness.js +17 -0
  118. package/dist/cli/targetEvidenceHelperResolution.d.ts +14 -0
  119. package/dist/cli/targetEvidenceHelperResolution.js +23 -0
  120. package/dist/cli/targetLookupCli.d.ts +3 -0
  121. package/dist/cli/targetLookupCli.js +31 -0
  122. package/dist/cli/targetLookupCommands.d.ts +12 -0
  123. package/dist/cli/targetLookupCommands.js +69 -0
  124. package/dist/cli/targetOperationDispatch.d.ts +58 -0
  125. package/dist/cli/targetOperationDispatch.js +21 -0
  126. package/dist/cli/targetReceiptOutput.d.ts +14 -0
  127. package/dist/cli/targetReceiptOutput.js +21 -0
  128. package/dist/cli/targetRequestFile.d.ts +14 -0
  129. package/dist/cli/targetRequestFile.js +63 -0
  130. package/dist/cli/targetSecretSourceInput.d.ts +28 -0
  131. package/dist/cli/targetSecretSourceInput.js +121 -0
  132. package/dist/cli/targetWorldClockCommand.d.ts +10 -0
  133. package/dist/cli/targetWorldClockCommand.js +42 -0
  134. package/dist/cli/targetWorldClockCrossProcess.test-helper.d.ts +13 -0
  135. package/dist/cli/targetWorldClockCrossProcess.test-helper.js +109 -0
  136. package/dist/cli/targetWorldReadinessCommand.d.ts +10 -0
  137. package/dist/cli/targetWorldReadinessCommand.js +43 -0
  138. package/dist/cli/upCommand.d.ts +3 -0
  139. package/dist/cli/upCommand.js +133 -0
  140. package/dist/cli/upImageCommand.d.ts +11 -0
  141. package/dist/cli/upImageCommand.js +41 -0
  142. package/dist/cli/upLifecycleInvocation.d.ts +41 -0
  143. package/dist/cli/upLifecycleInvocation.js +48 -0
  144. package/dist/cli/upLifecycleRecovery.d.ts +4 -0
  145. package/dist/cli/upLifecycleRecovery.js +53 -0
  146. package/dist/compiler/agentNodeMerge.d.ts +2 -0
  147. package/dist/compiler/agentNodeMerge.js +79 -0
  148. package/dist/compiler/agentSurfaces.js +11 -1
  149. package/dist/compiler/buildCompilePlan.js +17 -0
  150. package/dist/compiler/buildCompilePlanAgent.d.ts +11 -0
  151. package/dist/compiler/buildCompilePlanAgent.js +56 -0
  152. package/dist/compiler/buildCompilePlanTeams.d.ts +1 -0
  153. package/dist/compiler/buildCompilePlanTeams.js +4 -1
  154. package/dist/compiler/buildCompilePlanTraversal.js +75 -82
  155. package/dist/compiler/buildProject.d.ts +20 -1
  156. package/dist/compiler/buildProject.js +121 -7
  157. package/dist/compiler/compilePlanHelpers.js +2 -0
  158. package/dist/compiler/compileProject.d.ts +15 -0
  159. package/dist/compiler/compileProject.js +29 -75
  160. package/dist/compiler/compileProjectPolicy.d.ts +5 -0
  161. package/dist/compiler/compileProjectPolicy.js +21 -0
  162. package/dist/compiler/compileProjectReports.d.ts +9 -0
  163. package/dist/compiler/compileProjectReports.js +52 -0
  164. package/dist/compiler/containerArtifactSummaries.d.ts +7 -0
  165. package/dist/compiler/containerArtifactSummaries.js +138 -0
  166. package/dist/compiler/containerArtifacts.d.ts +10 -0
  167. package/dist/compiler/containerArtifacts.js +126 -125
  168. package/dist/compiler/containerArtifactsPlans.d.ts +5 -3
  169. package/dist/compiler/containerArtifactsPlans.js +31 -118
  170. package/dist/compiler/containerArtifactsRender.d.ts +3 -1
  171. package/dist/compiler/containerArtifactsRender.js +40 -81
  172. package/dist/compiler/containerArtifactsTypes.d.ts +12 -0
  173. package/dist/compiler/containerConfigEnvRender.d.ts +3 -0
  174. package/dist/compiler/containerConfigEnvRender.js +54 -0
  175. package/dist/compiler/containerEntrypointRender.d.ts +1 -0
  176. package/dist/compiler/containerEntrypointRender.js +60 -53
  177. package/dist/compiler/containerEntrypointShell.d.ts +5 -0
  178. package/dist/compiler/containerEntrypointShell.js +29 -0
  179. package/dist/compiler/containerPackageOverrides.d.ts +27 -0
  180. package/dist/compiler/containerPackageOverrides.js +63 -0
  181. package/dist/compiler/containerPackageRender.d.ts +15 -0
  182. package/dist/compiler/containerPackageRender.js +63 -0
  183. package/dist/compiler/containerTargetPlanResolution.d.ts +20 -0
  184. package/dist/compiler/containerTargetPlanResolution.js +97 -0
  185. package/dist/compiler/containerTargetResources.js +3 -1
  186. package/dist/compiler/daimonTelemetryArtifacts.d.ts +22 -0
  187. package/dist/compiler/daimonTelemetryArtifacts.js +61 -0
  188. package/dist/compiler/dockerBuildContext.d.ts +16 -0
  189. package/dist/compiler/dockerBuildContext.js +159 -0
  190. package/dist/compiler/dockerBuildSkip.d.ts +30 -0
  191. package/dist/compiler/dockerBuildSkip.js +81 -0
  192. package/dist/compiler/index.d.ts +4 -0
  193. package/dist/compiler/index.js +4 -0
  194. package/dist/compiler/memoryArtifacts.d.ts +26 -0
  195. package/dist/compiler/memoryArtifacts.js +134 -0
  196. package/dist/compiler/memoryResolution.d.ts +4 -0
  197. package/dist/compiler/memoryResolution.js +147 -0
  198. package/dist/compiler/modelEnv.d.ts +2 -0
  199. package/dist/compiler/modelEnv.js +6 -0
  200. package/dist/compiler/moltnetAllowedWakeSendersValidation.d.ts +2 -0
  201. package/dist/compiler/moltnetAllowedWakeSendersValidation.js +42 -0
  202. package/dist/compiler/moltnetArtifactPaths.d.ts +26 -0
  203. package/dist/compiler/moltnetArtifactPaths.js +49 -0
  204. package/dist/compiler/moltnetArtifactTypes.d.ts +46 -0
  205. package/dist/compiler/moltnetArtifactTypes.js +1 -0
  206. package/dist/compiler/moltnetArtifacts.d.ts +2 -40
  207. package/dist/compiler/moltnetArtifacts.js +56 -95
  208. package/dist/compiler/moltnetBinaries.d.ts +21 -1
  209. package/dist/compiler/moltnetBinaries.js +156 -28
  210. package/dist/compiler/moltnetClientConfig.js +18 -2
  211. package/dist/compiler/moltnetConfigLowering.d.ts +16 -1
  212. package/dist/compiler/moltnetConfigLowering.js +67 -5
  213. package/dist/compiler/moltnetExternalParticipantArtifact.d.ts +38 -0
  214. package/dist/compiler/moltnetExternalParticipantArtifact.js +188 -0
  215. package/dist/compiler/moltnetNodeConfig.js +7 -2
  216. package/dist/compiler/moltnetReleaseAuthority.d.ts +17 -0
  217. package/dist/compiler/moltnetReleaseAuthority.js +73 -0
  218. package/dist/compiler/moltnetReleaseDownload.d.ts +12 -0
  219. package/dist/compiler/moltnetReleaseDownload.js +85 -0
  220. package/dist/compiler/moltnetRepresentativeResolution.d.ts +1 -0
  221. package/dist/compiler/moltnetRepresentativeResolution.js +16 -2
  222. package/dist/compiler/moltnetResolution.js +72 -20
  223. package/dist/compiler/moltnetRoomMemberships.js +37 -9
  224. package/dist/compiler/moltnetRuntimeConfig.js +11 -0
  225. package/dist/compiler/moltnetServerPlans.d.ts +9 -0
  226. package/dist/compiler/moltnetServerPlans.js +132 -0
  227. package/dist/compiler/organizationIdentity.d.ts +27 -0
  228. package/dist/compiler/organizationIdentity.js +297 -0
  229. package/dist/compiler/organizationReadyEvidence.d.ts +49 -0
  230. package/dist/compiler/organizationReadyEvidence.js +261 -0
  231. package/dist/compiler/projectManifestGraph.d.ts +4 -0
  232. package/dist/compiler/projectManifestGraph.js +24 -0
  233. package/dist/compiler/runProject.d.ts +4 -0
  234. package/dist/compiler/runProject.js +37 -22
  235. package/dist/compiler/runProjectAuth.d.ts +7 -1
  236. package/dist/compiler/runProjectAuth.js +87 -9
  237. package/dist/compiler/runProjectDocker.d.ts +7 -0
  238. package/dist/compiler/runProjectDocker.js +187 -19
  239. package/dist/compiler/runProjectLifecycle.d.ts +7 -0
  240. package/dist/compiler/runProjectLifecycle.js +40 -0
  241. package/dist/compiler/syncProjectAuth.js +4 -1
  242. package/dist/compiler/teamContextActiveEnvironments.d.ts +13 -0
  243. package/dist/compiler/teamContextActiveEnvironments.js +255 -0
  244. package/dist/compiler/teamContextSupport.js +32 -40
  245. package/dist/compiler/teamContextTypes.d.ts +2 -0
  246. package/dist/compiler/types.d.ts +82 -1
  247. package/dist/compiler/upProject.d.ts +5 -0
  248. package/dist/compiler/upProject.js +257 -20
  249. package/dist/compiler/upReceipt.d.ts +36 -0
  250. package/dist/compiler/upReceipt.js +82 -0
  251. package/dist/compiler/updateProjectModels.js +42 -60
  252. package/dist/compiler/updateProjectRuntime.js +22 -35
  253. package/dist/compiler/updateProjectSurfaces.js +53 -47
  254. package/dist/compiler/worldBindings.d.ts +39 -0
  255. package/dist/compiler/worldBindings.js +247 -0
  256. package/dist/compiler/worldBindingsFile.d.ts +5 -0
  257. package/dist/compiler/worldBindingsFile.js +162 -0
  258. package/dist/deployment/artifactsExport.d.ts +49 -0
  259. package/dist/deployment/artifactsExport.js +217 -0
  260. package/dist/deployment/artifactsExportDocker.d.ts +48 -0
  261. package/dist/deployment/artifactsExportDocker.js +91 -0
  262. package/dist/deployment/artifactsExportPlan.d.ts +24 -0
  263. package/dist/deployment/artifactsExportPlan.js +135 -0
  264. package/dist/deployment/artifactsExportTypes.d.ts +50 -0
  265. package/dist/deployment/artifactsExportTypes.js +52 -0
  266. package/dist/deployment/buildImageCacheStore.d.ts +23 -0
  267. package/dist/deployment/buildImageCacheStore.js +54 -0
  268. package/dist/deployment/deploymentLifecycleCorrelation.d.ts +11 -0
  269. package/dist/deployment/deploymentLifecycleCorrelation.js +33 -0
  270. package/dist/deployment/dockerInspect.d.ts +9 -0
  271. package/dist/deployment/dockerInspect.js +24 -1
  272. package/dist/deployment/dockerLabels.d.ts +2 -0
  273. package/dist/deployment/dockerLabels.js +2 -0
  274. package/dist/deployment/dockerLogs.js +2 -10
  275. package/dist/deployment/dockerManager.d.ts +51 -0
  276. package/dist/deployment/dockerManager.js +118 -1
  277. package/dist/deployment/dockerProbeGateway.js +64 -5
  278. package/dist/deployment/dockerRecover.d.ts +17 -0
  279. package/dist/deployment/dockerRecover.js +137 -0
  280. package/dist/deployment/dockerTeardown.d.ts +32 -0
  281. package/dist/deployment/dockerTeardown.js +61 -0
  282. package/dist/deployment/downDeployment.d.ts +34 -0
  283. package/dist/deployment/downDeployment.js +147 -0
  284. package/dist/deployment/downReceiptTypes.d.ts +21 -0
  285. package/dist/deployment/downReceiptTypes.js +30 -0
  286. package/dist/deployment/index.d.ts +17 -0
  287. package/dist/deployment/index.js +18 -0
  288. package/dist/deployment/lifecycleCompletion.d.ts +37 -0
  289. package/dist/deployment/lifecycleCompletion.js +236 -0
  290. package/dist/deployment/lifecycleCompletionContracts.d.ts +158 -0
  291. package/dist/deployment/lifecycleCompletionContracts.js +106 -0
  292. package/dist/deployment/lifecycleCompletionHeartbeat.d.ts +2 -0
  293. package/dist/deployment/lifecycleCompletionHeartbeat.js +50 -0
  294. package/dist/deployment/lifecycleCompletionLookup.d.ts +18 -0
  295. package/dist/deployment/lifecycleCompletionLookup.js +88 -0
  296. package/dist/deployment/lifecycleCompletionOwner.d.ts +8 -0
  297. package/dist/deployment/lifecycleCompletionOwner.js +31 -0
  298. package/dist/deployment/lifecycleCompletionParsing.d.ts +12 -0
  299. package/dist/deployment/lifecycleCompletionParsing.js +108 -0
  300. package/dist/deployment/lifecycleCompletionPaths.d.ts +9 -0
  301. package/dist/deployment/lifecycleCompletionPaths.js +16 -0
  302. package/dist/deployment/lifecycleCompletionPublication.d.ts +5 -0
  303. package/dist/deployment/lifecycleCompletionPublication.js +35 -0
  304. package/dist/deployment/lifecycleCompletionRecovery.d.ts +21 -0
  305. package/dist/deployment/lifecycleCompletionRecovery.js +56 -0
  306. package/dist/deployment/lifecycleCompletionRoot.d.ts +21 -0
  307. package/dist/deployment/lifecycleCompletionRoot.js +243 -0
  308. package/dist/deployment/lifecycleCompletionStore.d.ts +6 -0
  309. package/dist/deployment/lifecycleCompletionStore.js +151 -0
  310. package/dist/deployment/organizationHandoffAuthorityFsClient.d.ts +17 -0
  311. package/dist/deployment/organizationHandoffAuthorityFsClient.js +132 -0
  312. package/dist/deployment/organizationHandoffAuthorityFsWorker.d.ts +1 -0
  313. package/dist/deployment/organizationHandoffAuthorityFsWorker.js +285 -0
  314. package/dist/deployment/organizationHandoffAuthorityFsWorkerParent.fixture.d.ts +1 -0
  315. package/dist/deployment/organizationHandoffAuthorityFsWorkerParent.fixture.js +26 -0
  316. package/dist/deployment/organizationHandoffAuthorityStore.d.ts +41 -0
  317. package/dist/deployment/organizationHandoffAuthorityStore.js +348 -0
  318. package/dist/deployment/organizationHandoffAuthorityTypes.d.ts +76 -0
  319. package/dist/deployment/organizationHandoffAuthorityTypes.js +148 -0
  320. package/dist/deployment/organizationHandoffTypes.d.ts +29 -0
  321. package/dist/deployment/organizationHandoffTypes.js +80 -0
  322. package/dist/deployment/organizationReady.d.ts +52 -0
  323. package/dist/deployment/organizationReady.js +200 -0
  324. package/dist/deployment/privateArtifactsExport.d.ts +18 -0
  325. package/dist/deployment/privateArtifactsExport.js +80 -0
  326. package/dist/deployment/providerRuntimeBoundaryScanner.test-helper.d.ts +8 -0
  327. package/dist/deployment/providerRuntimeBoundaryScanner.test-helper.js +60 -0
  328. package/dist/deployment/record.d.ts +26 -1
  329. package/dist/deployment/record.js +49 -4
  330. package/dist/deployment/simfileFixtureBoundary.test-helper.d.ts +8 -0
  331. package/dist/deployment/simfileFixtureBoundary.test-helper.js +103 -0
  332. package/dist/deployment/target.d.ts +1 -35
  333. package/dist/deployment/target.js +1 -96
  334. package/dist/deployment/upReceiptTypes.d.ts +111 -0
  335. package/dist/deployment/upReceiptTypes.js +164 -0
  336. package/dist/dev/activity.d.ts +14 -0
  337. package/dist/dev/activity.js +48 -0
  338. package/dist/dev/docker.d.ts +16 -0
  339. package/dist/dev/docker.js +71 -0
  340. package/dist/dev/index.d.ts +2 -0
  341. package/dist/dev/index.js +2 -0
  342. package/dist/dev/project.d.ts +35 -0
  343. package/dist/dev/project.js +170 -0
  344. package/dist/distribution/buildDistributionReport.d.ts +2 -1
  345. package/dist/distribution/buildDistributionReport.js +2 -1
  346. package/dist/distribution/distributionReportSchema.d.ts +5 -0
  347. package/dist/distribution/distributionReportSchema.js +7 -2
  348. package/dist/distribution/index.d.ts +2 -2
  349. package/dist/distribution/index.js +1 -1
  350. package/dist/distribution/types.d.ts +7 -0
  351. package/dist/distribution/types.js +1 -0
  352. package/dist/filesystem/paths.js +10 -1
  353. package/dist/ledger/causalConformanceCli.d.ts +1 -0
  354. package/dist/ledger/causalConformanceCli.js +41 -0
  355. package/dist/ledger/causeNamespace.d.ts +8 -0
  356. package/dist/ledger/causeNamespace.js +24 -0
  357. package/dist/ledger/conformance.d.ts +83 -0
  358. package/dist/ledger/conformance.js +259 -0
  359. package/dist/ledger/emitters.d.ts +76 -0
  360. package/dist/ledger/emitters.js +188 -0
  361. package/dist/ledger/index.d.ts +4 -0
  362. package/dist/ledger/index.js +4 -0
  363. package/dist/ledger/principal.d.ts +96 -0
  364. package/dist/ledger/principal.js +121 -0
  365. package/dist/manifest/externalParticipantSchemas.d.ts +18 -0
  366. package/dist/manifest/externalParticipantSchemas.js +17 -0
  367. package/dist/manifest/index.d.ts +1 -0
  368. package/dist/manifest/index.js +1 -0
  369. package/dist/manifest/inlineAgentMember.d.ts +2 -0
  370. package/dist/manifest/inlineAgentMember.js +9 -0
  371. package/dist/manifest/loadManifest.js +14 -8
  372. package/dist/manifest/mcpSchemas.d.ts +17 -0
  373. package/dist/manifest/mcpSchemas.js +41 -0
  374. package/dist/manifest/memorySchemas.d.ts +245 -0
  375. package/dist/manifest/memorySchemas.js +148 -0
  376. package/dist/manifest/renderSpawnfile.js +22 -131
  377. package/dist/manifest/renderSpawnfileNetworks.js +9 -2
  378. package/dist/manifest/renderSpawnfileSurfaces.d.ts +2 -0
  379. package/dist/manifest/renderSpawnfileSurfaces.js +134 -0
  380. package/dist/manifest/schemas.d.ts +1868 -99
  381. package/dist/manifest/schemas.js +78 -32
  382. package/dist/manifest/surfaceSchemas.d.ts +17 -0
  383. package/dist/manifest/surfaceSchemas.js +24 -1
  384. package/dist/manifest/teamNetworkAccessSchemas.d.ts +1 -1
  385. package/dist/manifest/teamNetworkAuthSchemas.d.ts +48 -0
  386. package/dist/manifest/teamNetworkAuthSchemas.js +103 -0
  387. package/dist/manifest/teamNetworkSchemas.d.ts +8 -187
  388. package/dist/manifest/teamNetworkSchemas.js +3 -317
  389. package/dist/manifest/teamNetworkServerSchemas.d.ts +150 -0
  390. package/dist/manifest/teamNetworkServerSchemas.js +199 -0
  391. package/dist/ownership/siblingBuildFreshness.d.ts +20 -0
  392. package/dist/ownership/siblingBuildFreshness.js +20 -0
  393. package/dist/ownership/simfileRunOperatorInputs.d.ts +103 -0
  394. package/dist/ownership/simfileRunOperatorInputs.js +139 -0
  395. package/dist/report/types.d.ts +142 -0
  396. package/dist/runtime/common.d.ts +37 -0
  397. package/dist/runtime/common.js +56 -1
  398. package/dist/runtime/container.d.ts +29 -1
  399. package/dist/runtime/container.js +127 -11
  400. package/dist/runtime/containerPackageOverrides.d.ts +37 -0
  401. package/dist/runtime/containerPackageOverrides.js +33 -0
  402. package/dist/runtime/index.d.ts +2 -0
  403. package/dist/runtime/index.js +2 -0
  404. package/dist/runtime/install.d.ts +1 -1
  405. package/dist/runtime/install.js +43 -1
  406. package/dist/runtime/mnemeMcp.d.ts +15 -0
  407. package/dist/runtime/mnemeMcp.js +109 -0
  408. package/dist/runtime/openclaw/adapter.js +15 -4
  409. package/dist/runtime/openclaw/mcp.d.ts +10 -0
  410. package/dist/runtime/openclaw/mcp.js +69 -0
  411. package/dist/runtime/openclaw/runAuth.js +2 -2
  412. package/dist/runtime/openclaw/scaffold.js +1 -1
  413. package/dist/runtime/openclaw/schedules.d.ts +38 -0
  414. package/dist/runtime/openclaw/schedules.js +74 -0
  415. package/dist/runtime/pi/adapter.d.ts +4 -0
  416. package/dist/runtime/pi/adapter.js +231 -0
  417. package/dist/runtime/pi/appActivitySource.d.ts +1 -0
  418. package/dist/runtime/pi/appActivitySource.js +199 -0
  419. package/dist/runtime/pi/appAgentConfig.d.ts +11 -0
  420. package/dist/runtime/pi/appAgentConfig.js +264 -0
  421. package/dist/runtime/pi/appCliEnginesSource.d.ts +1 -0
  422. package/dist/runtime/pi/appCliEnginesSource.js +183 -0
  423. package/dist/runtime/pi/appCliSource.d.ts +1 -0
  424. package/dist/runtime/pi/appCliSource.js +353 -0
  425. package/dist/runtime/pi/appControlSource.d.ts +1 -0
  426. package/dist/runtime/pi/appControlSource.js +390 -0
  427. package/dist/runtime/pi/appControlWakeIdentitySource.d.ts +1 -0
  428. package/dist/runtime/pi/appControlWakeIdentitySource.js +19 -0
  429. package/dist/runtime/pi/appCoreSource.d.ts +4 -0
  430. package/dist/runtime/pi/appCoreSource.js +244 -0
  431. package/dist/runtime/pi/appPreludeSource.d.ts +1 -0
  432. package/dist/runtime/pi/appPreludeSource.js +191 -0
  433. package/dist/runtime/pi/appScheduleSource.d.ts +1 -0
  434. package/dist/runtime/pi/appScheduleSource.js +80 -0
  435. package/dist/runtime/pi/appScriptedEngine.d.ts +31 -0
  436. package/dist/runtime/pi/appScriptedEngine.js +42 -0
  437. package/dist/runtime/pi/appSource.d.ts +4 -0
  438. package/dist/runtime/pi/appSource.js +12 -0
  439. package/dist/runtime/pi/appTemplate.d.ts +14 -0
  440. package/dist/runtime/pi/appTemplate.js +27 -0
  441. package/dist/runtime/pi/appTemplateTypes.d.ts +64 -0
  442. package/dist/runtime/pi/appTemplateTypes.js +18 -0
  443. package/dist/runtime/pi/appWakeContextSource.d.ts +1 -0
  444. package/dist/runtime/pi/appWakeContextSource.js +398 -0
  445. package/dist/runtime/pi/containerTargets.d.ts +4 -0
  446. package/dist/runtime/pi/containerTargets.js +57 -0
  447. package/dist/runtime/pi/runAuth.d.ts +2 -0
  448. package/dist/runtime/pi/runAuth.js +185 -0
  449. package/dist/runtime/pi/testHelpers.d.ts +2 -0
  450. package/dist/runtime/pi/testHelpers.js +40 -0
  451. package/dist/runtime/picoclaw/adapter.js +23 -27
  452. package/dist/runtime/picoclaw/mcp.d.ts +4 -0
  453. package/dist/runtime/picoclaw/mcp.js +43 -0
  454. package/dist/runtime/picoclaw/memory.d.ts +7 -0
  455. package/dist/runtime/picoclaw/memory.js +17 -0
  456. package/dist/runtime/picoclaw/runAuth.js +1 -1
  457. package/dist/runtime/picoclaw/scaffold.js +1 -1
  458. package/dist/runtime/picoclaw/schedules.d.ts +26 -0
  459. package/dist/runtime/picoclaw/schedules.js +62 -3
  460. package/dist/runtime/registry.js +3 -0
  461. package/dist/runtime/scheduleUtils.d.ts +2 -0
  462. package/dist/runtime/scheduleUtils.js +15 -0
  463. package/dist/runtime/types.d.ts +26 -2
  464. package/dist/shared/errors.d.ts +1 -1
  465. package/dist/shared/errors.js +2 -2
  466. package/dist/shared/index.d.ts +1 -0
  467. package/dist/shared/index.js +1 -0
  468. package/dist/shared/redaction.d.ts +2 -0
  469. package/dist/shared/redaction.js +10 -0
  470. package/dist/status/buildStatus.d.ts +1 -0
  471. package/dist/status/buildStatus.js +2 -0
  472. package/dist/status/compileReport.d.ts +22 -0
  473. package/dist/status/compileReport.js +16 -2
  474. package/dist/status/compiledProbeCollection.d.ts +21 -0
  475. package/dist/status/compiledProbeCollection.js +27 -0
  476. package/dist/status/deployments.js +5 -12
  477. package/dist/status/imageStatusReport.js +6 -0
  478. package/dist/status/index.d.ts +3 -0
  479. package/dist/status/index.js +3 -0
  480. package/dist/status/lifecycleProbes.d.ts +19 -0
  481. package/dist/status/lifecycleProbes.js +174 -0
  482. package/dist/status/moltnetProbes.d.ts +7 -8
  483. package/dist/status/moltnetProbes.js +27 -198
  484. package/dist/status/moltnetWiringProbes.d.ts +19 -0
  485. package/dist/status/moltnetWiringProbes.js +178 -0
  486. package/dist/target/cleanupRun.d.ts +41 -0
  487. package/dist/target/cleanupRun.js +139 -0
  488. package/dist/target/cleanupRunDocker.d.ts +16 -0
  489. package/dist/target/cleanupRunDocker.js +66 -0
  490. package/dist/target/cleanupRunDocker.test-helper.d.ts +67 -0
  491. package/dist/target/cleanupRunDocker.test-helper.js +238 -0
  492. package/dist/target/cleanupRunDockerPreflight.d.ts +17 -0
  493. package/dist/target/cleanupRunDockerPreflight.js +224 -0
  494. package/dist/target/composedPreparation.d.ts +205 -0
  495. package/dist/target/composedPreparation.js +223 -0
  496. package/dist/target/containerBundle.d.ts +82 -0
  497. package/dist/target/containerBundle.js +243 -0
  498. package/dist/target/containerBundleArchive.d.ts +31 -0
  499. package/dist/target/containerBundleArchive.js +140 -0
  500. package/dist/target/containerBundleAuthority.d.ts +25 -0
  501. package/dist/target/containerBundleAuthority.js +65 -0
  502. package/dist/target/containerBundleContracts.d.ts +114 -0
  503. package/dist/target/containerBundleContracts.js +173 -0
  504. package/dist/target/containerBundleFilesystemStore.d.ts +3 -0
  505. package/dist/target/containerBundleFilesystemStore.js +247 -0
  506. package/dist/target/containerBundlePolicy.d.ts +33 -0
  507. package/dist/target/containerBundlePolicy.js +64 -0
  508. package/dist/target/containerBundleStore.d.ts +127 -0
  509. package/dist/target/containerBundleStore.js +284 -0
  510. package/dist/target/contracts.d.ts +538 -0
  511. package/dist/target/contracts.js +373 -0
  512. package/dist/target/dockerArtifactIdentityTypes.d.ts +56 -0
  513. package/dist/target/dockerArtifactIdentityTypes.js +1 -0
  514. package/dist/target/dockerArtifactInspection.d.ts +40 -0
  515. package/dist/target/dockerArtifactInspection.js +125 -0
  516. package/dist/target/dockerArtifacts.d.ts +21 -0
  517. package/dist/target/dockerArtifacts.js +110 -0
  518. package/dist/target/dockerArtifactsProvider.d.ts +41 -0
  519. package/dist/target/dockerArtifactsProvider.js +449 -0
  520. package/dist/target/dockerCommandExecutor.d.ts +27 -0
  521. package/dist/target/dockerCommandExecutor.js +200 -0
  522. package/dist/target/dockerCommandExecutorCore.d.ts +34 -0
  523. package/dist/target/dockerCommandExecutorCore.js +273 -0
  524. package/dist/target/dockerContainerBundleBuilder.d.ts +8 -0
  525. package/dist/target/dockerContainerBundleBuilder.js +256 -0
  526. package/dist/target/dockerContextSnapshot.d.ts +21 -0
  527. package/dist/target/dockerContextSnapshot.js +158 -0
  528. package/dist/target/dockerEndpointFingerprint.d.ts +1 -0
  529. package/dist/target/dockerEndpointFingerprint.js +9 -0
  530. package/dist/target/dockerPreparedArtifact.d.ts +48 -0
  531. package/dist/target/dockerPreparedArtifact.js +131 -0
  532. package/dist/target/dockerProjectionJson.d.ts +1 -0
  533. package/dist/target/dockerProjectionJson.js +80 -0
  534. package/dist/target/dockerPublicArtifactSnapshot.d.ts +17 -0
  535. package/dist/target/dockerPublicArtifactSnapshot.js +99 -0
  536. package/dist/target/dockerResources.d.ts +26 -0
  537. package/dist/target/dockerResources.js +162 -0
  538. package/dist/target/dockerResourcesProvider.d.ts +44 -0
  539. package/dist/target/dockerResourcesProvider.js +207 -0
  540. package/dist/target/dockerSecrets.d.ts +39 -0
  541. package/dist/target/dockerSecrets.js +249 -0
  542. package/dist/target/dockerSecretsAuthority.d.ts +26 -0
  543. package/dist/target/dockerSecretsAuthority.js +216 -0
  544. package/dist/target/dockerSecretsLifecycle.d.ts +25 -0
  545. package/dist/target/dockerSecretsLifecycle.js +133 -0
  546. package/dist/target/dockerSecretsProvider.d.ts +68 -0
  547. package/dist/target/dockerSecretsProvider.js +329 -0
  548. package/dist/target/dockerTarget.d.ts +52 -0
  549. package/dist/target/dockerTarget.js +48 -0
  550. package/dist/target/dockerTargetBinding.d.ts +14 -0
  551. package/dist/target/dockerTargetBinding.js +96 -0
  552. package/dist/target/dockerWorldClock.d.ts +17 -0
  553. package/dist/target/dockerWorldClock.js +111 -0
  554. package/dist/target/dockerWorldReadiness.d.ts +17 -0
  555. package/dist/target/dockerWorldReadiness.js +119 -0
  556. package/dist/target/dockerWorldService.d.ts +23 -0
  557. package/dist/target/dockerWorldService.js +216 -0
  558. package/dist/target/dockerWorldServiceAuthority.d.ts +80 -0
  559. package/dist/target/dockerWorldServiceAuthority.js +182 -0
  560. package/dist/target/dockerWorldServiceLifecycle.d.ts +41 -0
  561. package/dist/target/dockerWorldServiceLifecycle.js +275 -0
  562. package/dist/target/dockerWorldServiceProvider.d.ts +60 -0
  563. package/dist/target/dockerWorldServiceProvider.js +318 -0
  564. package/dist/target/dockerWorldServiceStore.d.ts +73 -0
  565. package/dist/target/dockerWorldServiceStore.js +367 -0
  566. package/dist/target/evidenceExport.d.ts +55 -0
  567. package/dist/target/evidenceExport.js +518 -0
  568. package/dist/target/evidenceExportArchive.d.ts +10 -0
  569. package/dist/target/evidenceExportArchive.js +302 -0
  570. package/dist/target/evidenceExportContract.d.ts +27 -0
  571. package/dist/target/evidenceExportContract.js +40 -0
  572. package/dist/target/evidenceExportOperationsTestKit.d.ts +87 -0
  573. package/dist/target/evidenceExportOperationsTestKit.js +312 -0
  574. package/dist/target/evidenceExportProvider.d.ts +85 -0
  575. package/dist/target/evidenceExportProvider.js +187 -0
  576. package/dist/target/evidenceExportPublicationTypes.d.ts +16 -0
  577. package/dist/target/evidenceExportPublicationTypes.js +1 -0
  578. package/dist/target/evidenceExportStore.d.ts +70 -0
  579. package/dist/target/evidenceExportStore.js +498 -0
  580. package/dist/target/evidenceExportStorePublication.d.ts +7 -0
  581. package/dist/target/evidenceExportStorePublication.js +395 -0
  582. package/dist/target/handles.d.ts +20 -0
  583. package/dist/target/handles.js +56 -0
  584. package/dist/target/index.d.ts +12 -0
  585. package/dist/target/index.js +11 -0
  586. package/dist/target/journal.d.ts +59 -0
  587. package/dist/target/journal.js +529 -0
  588. package/dist/target/journalFilesystem.d.ts +3 -0
  589. package/dist/target/journalFilesystem.js +111 -0
  590. package/dist/target/journalRoot.d.ts +4 -0
  591. package/dist/target/journalRoot.js +6 -0
  592. package/dist/target/organizationAttachment.d.ts +23 -0
  593. package/dist/target/organizationAttachment.js +263 -0
  594. package/dist/target/organizationAttachmentAuthority.d.ts +65 -0
  595. package/dist/target/organizationAttachmentAuthority.js +161 -0
  596. package/dist/target/organizationAttachmentLifecycle.d.ts +17 -0
  597. package/dist/target/organizationAttachmentLifecycle.js +101 -0
  598. package/dist/target/organizationAttachmentProvider.d.ts +76 -0
  599. package/dist/target/organizationAttachmentProvider.js +289 -0
  600. package/dist/target/organizationAttachmentStore.d.ts +51 -0
  601. package/dist/target/organizationAttachmentStore.js +316 -0
  602. package/dist/target/publicArtifactSnapshot.d.ts +41 -0
  603. package/dist/target/publicArtifactSnapshot.js +150 -0
  604. package/dist/target/topologyActivation.d.ts +51 -0
  605. package/dist/target/topologyActivation.js +149 -0
  606. package/dist/target/topologyAttestation.d.ts +37 -0
  607. package/dist/target/topologyAttestation.js +300 -0
  608. package/dist/target/topologyAttestationErrors.d.ts +1 -0
  609. package/dist/target/topologyAttestationErrors.js +1 -0
  610. package/dist/target/worldClock.d.ts +60 -0
  611. package/dist/target/worldClock.js +129 -0
  612. package/dist/target/worldReadiness.d.ts +103 -0
  613. package/dist/target/worldReadiness.js +153 -0
  614. package/moltnet-releases.json +20 -0
  615. package/package.json +29 -8
  616. package/runtimes.yaml +28 -27
  617. package/dist/runtime/openclaw/scaffold-assets/CLAUDE.md +0 -5
  618. package/dist/runtime/picoclaw/scaffold-assets/CLAUDE.md +0 -5
  619. /package/dist/runtime/openclaw/scaffold-assets/{AGENTS.md → WORKSPACE_AGENTS.md} +0 -0
  620. /package/dist/runtime/picoclaw/scaffold-assets/{AGENTS.md → WORKSPACE_AGENTS.md} +0 -0
@@ -0,0 +1,121 @@
1
+ import { Buffer } from "node:buffer";
2
+ import { open } from "node:fs/promises";
3
+ import { MAX_TARGET_SECRET_SOURCE_SECRET_BYTES, TARGET_SECRET_SOURCE_ERROR, assertOrdinaryJsonGraph, createCanonicalTargetSecretSourceJson, parseCanonicalTargetSecretSourceJson, parseTargetSecretSourceOpaqueHandle } from "../auth/targetSecretSourceRecordCommon.js";
4
+ import { parseTargetSecretSourceGrantCommandInput } from "../auth/targetSecretSourceGrantRecords.js";
5
+ export const TARGET_SECRET_SOURCE_REQUEST_VERSION = "spawnfile.auth.target-secret.source-request.v1";
6
+ export const TARGET_SECRET_SOURCE_GRANT_REQUEST_VERSION = "spawnfile.auth.target-secret.grant-request.v1";
7
+ export const TARGET_SECRET_SOURCE_RECEIPT_VERSION = "spawnfile.auth.target-secret.receipt.v1";
8
+ export const MAX_TARGET_SECRET_SOURCE_REQUEST_FILE_BYTES = 65_536;
9
+ const fail = () => { throw new Error(TARGET_SECRET_SOURCE_ERROR); };
10
+ const exact = (raw, keys) => {
11
+ assertOrdinaryJsonGraph(raw);
12
+ if (!raw || typeof raw !== "object" || Array.isArray(raw))
13
+ return fail();
14
+ const record = raw;
15
+ const actual = Object.keys(record).sort();
16
+ if (actual.length !== keys.length || actual.some((key, index) => key !== keys[index]))
17
+ fail();
18
+ return record;
19
+ };
20
+ export const parseTargetSecretSourceRequestBytes = (bytes) => {
21
+ const record = exact(parseCanonicalTargetSecretSourceJson(bytes), ["source_handle", "version"]);
22
+ if (record.version !== TARGET_SECRET_SOURCE_REQUEST_VERSION)
23
+ fail();
24
+ return Object.freeze({
25
+ source_handle: parseTargetSecretSourceOpaqueHandle(record.source_handle),
26
+ version: TARGET_SECRET_SOURCE_REQUEST_VERSION
27
+ });
28
+ };
29
+ export const parseTargetSecretSourceGrantRequestBytes = (bytes) => {
30
+ const record = exact(parseCanonicalTargetSecretSourceJson(bytes), ["grant", "version"]);
31
+ if (record.version !== TARGET_SECRET_SOURCE_GRANT_REQUEST_VERSION)
32
+ fail();
33
+ return parseTargetSecretSourceGrantCommandInput(record.grant);
34
+ };
35
+ const readRequestFile = async (filePath, parse, options) => {
36
+ let bytes;
37
+ let handle;
38
+ try {
39
+ handle = await open(filePath, "r");
40
+ const info = await handle.stat();
41
+ if (!info.isFile() || info.size < 1 || info.size > MAX_TARGET_SECRET_SOURCE_REQUEST_FILE_BYTES)
42
+ fail();
43
+ await options.beforeReadForTest?.();
44
+ bytes = Buffer.alloc(info.size + 1);
45
+ let offset = 0;
46
+ while (offset < bytes.length) {
47
+ const { bytesRead } = await handle.read(bytes, offset, bytes.length - offset, offset);
48
+ if (bytesRead === 0)
49
+ break;
50
+ offset += bytesRead;
51
+ }
52
+ if (offset !== info.size)
53
+ fail();
54
+ return parse(bytes.subarray(0, offset));
55
+ }
56
+ catch {
57
+ return fail();
58
+ }
59
+ finally {
60
+ bytes?.fill(0);
61
+ await handle?.close().catch(() => undefined);
62
+ }
63
+ };
64
+ export const readTargetSecretSourceRequestFile = (filePath, options = {}) => readRequestFile(filePath, parseTargetSecretSourceRequestBytes, options);
65
+ export const readTargetSecretSourceGrantRequestFile = (filePath, options = {}) => readRequestFile(filePath, parseTargetSecretSourceGrantRequestBytes, options);
66
+ export const createTargetSecretSourceReceiptBytes = (raw) => {
67
+ try {
68
+ const record = exact(raw, ["kind", "source_handle"]);
69
+ const kinds = ["author", "grant", "revoke-grant", "revoke-version", "rotate"];
70
+ if (!kinds.includes(record.kind))
71
+ fail();
72
+ const receipt = Object.freeze({
73
+ kind: record.kind,
74
+ source_handle: parseTargetSecretSourceOpaqueHandle(record.source_handle),
75
+ version: TARGET_SECRET_SOURCE_RECEIPT_VERSION
76
+ });
77
+ const canonical = createCanonicalTargetSecretSourceJson(receipt);
78
+ return canonical;
79
+ }
80
+ catch {
81
+ return fail();
82
+ }
83
+ };
84
+ export const readBoundedTargetSecretStdin = async (input, maximumBytes) => {
85
+ const chunks = [];
86
+ let total = 0;
87
+ try {
88
+ if (!input || typeof input[Symbol.asyncIterator] !== "function"
89
+ || !Number.isSafeInteger(maximumBytes) || maximumBytes < 1
90
+ || maximumBytes > MAX_TARGET_SECRET_SOURCE_SECRET_BYTES)
91
+ fail();
92
+ for await (const raw of input) {
93
+ if (typeof raw === "string" && Buffer.byteLength(raw, "utf8") > maximumBytes - total)
94
+ fail();
95
+ if (raw instanceof Uint8Array && raw.byteLength > maximumBytes - total)
96
+ fail();
97
+ const chunk = typeof raw === "string" ? new TextEncoder().encode(raw)
98
+ : raw instanceof Uint8Array ? Uint8Array.from(raw) : fail();
99
+ chunks.push(chunk);
100
+ total += chunk.length;
101
+ if (total > maximumBytes)
102
+ fail();
103
+ }
104
+ if (total === 0)
105
+ fail();
106
+ const result = new Uint8Array(total);
107
+ let offset = 0;
108
+ for (const chunk of chunks) {
109
+ result.set(chunk, offset);
110
+ offset += chunk.length;
111
+ }
112
+ return result;
113
+ }
114
+ catch {
115
+ return fail();
116
+ }
117
+ finally {
118
+ for (const chunk of chunks)
119
+ chunk.fill(0);
120
+ }
121
+ };
@@ -0,0 +1,10 @@
1
+ import type { Command } from "commander";
2
+ import { type TargetWorldClockReceipt, type TargetWorldClockRequest } from "../target/worldClock.js";
3
+ export interface TargetWorldClockSession {
4
+ queryWorldClock?(request: TargetWorldClockRequest): Promise<TargetWorldClockReceipt>;
5
+ }
6
+ export type TargetWorldClockSessionLoader = (configInput: unknown) => Promise<TargetWorldClockSession>;
7
+ export declare const registerTargetWorldClockCommand: (target: Command, session: TargetWorldClockSession | TargetWorldClockSessionLoader, streams: {
8
+ readonly stderr: (message: string) => void;
9
+ readonly stdout: (message: string) => void;
10
+ }, setExitCode: (exitCode: 1 | 2) => void) => void;
@@ -0,0 +1,42 @@
1
+ import { createCanonicalTargetWorldClockReceiptBytes, verifyTargetWorldClockReceipt, } from "../target/worldClock.js";
2
+ import { formatCaughtTargetCliError } from "./targetReceiptOutput.js";
3
+ import { readTargetWorldClockRequestFile } from "./targetRequestFile.js";
4
+ export const registerTargetWorldClockCommand = (target, session, streams, setExitCode) => {
5
+ target.command("query_world_clock")
6
+ .description("Query one exact activated world's observed public clock")
7
+ .argument("<request-file>", "Strict world clock request JSON file")
8
+ .action(async (requestFile) => {
9
+ let request;
10
+ try {
11
+ request = await readTargetWorldClockRequestFile(requestFile);
12
+ }
13
+ catch {
14
+ streams.stderr("error: Invalid world clock request");
15
+ setExitCode(2);
16
+ return;
17
+ }
18
+ let active;
19
+ try {
20
+ active = typeof session === "function"
21
+ ? await session(target.opts().config)
22
+ : session;
23
+ if (typeof active.queryWorldClock !== "function")
24
+ throw new TypeError();
25
+ }
26
+ catch {
27
+ streams.stderr("error: Invalid target configuration");
28
+ setExitCode(2);
29
+ return;
30
+ }
31
+ try {
32
+ const receipt = verifyTargetWorldClockReceipt({
33
+ receipt: await active.queryWorldClock(request), request,
34
+ });
35
+ streams.stdout(createCanonicalTargetWorldClockReceiptBytes(receipt));
36
+ }
37
+ catch (error) {
38
+ streams.stderr(formatCaughtTargetCliError(error, "Target world clock query crashed"));
39
+ setExitCode(1);
40
+ }
41
+ });
42
+ };
@@ -0,0 +1,13 @@
1
+ import { type TargetWorldClockRequest } from "../target/worldClock.js";
2
+ export type BuiltWorldClockMode = "success" | "tick-zero" | "stale" | "topology" | "activation" | "nonzero-action";
3
+ export interface BuiltWorldClockState {
4
+ readonly callsPath: string;
5
+ readonly config: Readonly<Record<string, unknown>>;
6
+ readonly home: string;
7
+ readonly modePath: string;
8
+ readonly request: TargetWorldClockRequest;
9
+ readonly requestPath: string;
10
+ readonly root: string;
11
+ }
12
+ export declare const createBuiltWorldClockState: () => Promise<BuiltWorldClockState>;
13
+ export declare const selectBuiltWorldClockMode: (state: BuiltWorldClockState, mode: BuiltWorldClockMode) => Promise<void>;
@@ -0,0 +1,109 @@
1
+ import { chmod, mkdtemp, realpath, writeFile } from "node:fs/promises";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { parseOpaqueTargetHandle } from "../target/contracts.js";
5
+ import { createDockerArtifactSpec } from "../target/dockerArtifactsProvider.js";
6
+ import { createDockerResourceSpec } from "../target/dockerResourcesProvider.js";
7
+ import { createWorldServiceAuthorization, parseWorldServiceResolution } from "../target/dockerWorldServiceAuthority.js";
8
+ import { worldServiceSpecForBinding } from "../target/dockerWorldServiceLifecycle.js";
9
+ import { createWorldServiceBinding, initializeWorldServiceAuthorityStore, worldServiceResourceBindings, } from "../target/dockerWorldServiceStore.js";
10
+ import { createCanonicalWorldServiceActivationBytes, createTargetTopologyActivationReceiptDigest, createWorldServiceActivationDigest, parseWorldServiceActivation, } from "../target/topologyActivation.js";
11
+ import { parseTargetWorldClockRequest } from "../target/worldClock.js";
12
+ const d = (value) => `sha256:${value.repeat(64).slice(0, 64)}`;
13
+ const h = (value) => parseOpaqueTargetHandle(`opaque_${value.repeat(16)}`);
14
+ const containerId = "c".repeat(64);
15
+ const after = (args, flag) => args[args.indexOf(flag) + 1];
16
+ const inspection = (spec) => ({
17
+ AutoRemove: false, BindCount: 0, CapAddCount: 0, CapDrop: ["ALL"], CgroupnsMode: "private", DeviceCount: 0,
18
+ DeviceRequestCount: 0, DnsCount: 0, Domainname: "", ExposedPortCount: 0, ExtraHostCount: 0, GroupAddCount: 0,
19
+ Hostname: spec.containerName, Id: containerId, Image: spec.imageReference, IpcMode: "none", Labels: spec.receiptLabels,
20
+ LinkCount: 0, LogType: "none", Mounts: spec.createArgs.filter((value, index, values) => values[index - 1] === "--mount")
21
+ .map((value) => Object.fromEntries(value.split(",").map((part) => part.split("=", 2))))
22
+ .map((mount) => ({ Destination: mount.dst, Name: mount.src, RW: mount.dst === spec.evidenceMountPath, Type: "volume" })),
23
+ Name: `/${spec.containerName}`, NetworkAliases: spec.networkAlias ? [spec.networkAlias] : null,
24
+ NetworkAttachmentCount: 1, NetworkAttachmentId: "b".repeat(64), NetworkAttachmentName: after(spec.createArgs, "--network"),
25
+ NetworkMode: after(spec.createArgs, "--network"), PidMode: "", PortBindingCount: 0, Privileged: false,
26
+ PublishAllPorts: false, ReadonlyRootfs: true, RestartMaximumRetryCount: 0, RestartPolicyName: "no",
27
+ SecurityOpt: ["no-new-privileges=true"], Status: "running", Tmpfs: { "/tmp": "rw,noexec,nosuid,nodev,size=1m,mode=1777" },
28
+ UTSMode: "", UsernsMode: "", VolumesFromCount: 0,
29
+ });
30
+ const fixture = () => {
31
+ const selectedTarget = { fingerprint: `sha256:${"1".repeat(32)}`, handle: h("1") };
32
+ const runId = "run-built-clock";
33
+ const dataClaim = { operationHandle: h("2"), requestDigest: d("2") };
34
+ const evidenceClaim = { operationHandle: h("3"), requestDigest: d("3") };
35
+ const data = createDockerResourceSpec({ kind: "data_network", ...dataClaim, runId, selectedTargetHandle: selectedTarget.handle });
36
+ const evidence = createDockerResourceSpec({ kind: "evidence_volume", ...evidenceClaim, runId, selectedTargetHandle: selectedTarget.handle });
37
+ const artifact = createDockerArtifactSpec({ artifactManifestDigest: d("4"), imageDigest: d("5"),
38
+ imageReference: `registry.example/world@${d("5")}`, operationHandle: h("4"), requestDigest: d("4"),
39
+ selectedTargetHandle: selectedTarget.handle });
40
+ const authorization = createWorldServiceAuthorization({ dataNetworkHandle: data.resultHandle, descriptorDigest: d("6"),
41
+ evidenceMountPath: "/run/world/evidence", evidenceVolumeHandle: evidence.resultHandle, operationHandle: h("6"),
42
+ requestDigest: d("6"), runId, secretBindingsHandle: h("7"), selectedTarget, worldArtifactHandle: artifact.resultHandle });
43
+ const resolution = parseWorldServiceResolution({ artifact: { artifact_manifest_digest: d("4"), identity_kind: "oci_image_manifest",
44
+ image_digest: artifact.imageDigest, image_reference: artifact.imageReference, operation_handle: h("4"),
45
+ request_digest: d("4"), result_handle: artifact.resultHandle }, authorization });
46
+ const resources = worldServiceResourceBindings({ dataNetworkClaim: dataClaim, evidenceVolumeClaim: evidenceClaim, resolution });
47
+ const spec = worldServiceSpecForBinding({ resolution, resources });
48
+ const binding = createWorldServiceBinding({ containerId, dataNetwork: resources.data_network, evidenceVolume: resources.evidence_volume,
49
+ resolution, secretBindings: resources.secret_bindings, spec });
50
+ const marker = parseWorldServiceActivation({ bundle_digest: d("8"), run_id: runId, state: "activated",
51
+ topology_receipt_digest: d("9"), topology_request_digest: d("a"), version: "spawnfile.world-service-activation.v1" });
52
+ const activationDigest = createWorldServiceActivationDigest(marker);
53
+ const activationReceiptDigest = createTargetTopologyActivationReceiptDigest({ activation_digest: activationDigest,
54
+ bundle_digest: marker.bundle_digest, receipt_digest: d("0"), run_id: runId, state: "activated",
55
+ topology_receipt_digest: marker.topology_receipt_digest, topology_request_digest: marker.topology_request_digest,
56
+ version: "spawnfile.target-topology-activation-receipt.v1" });
57
+ const request = parseTargetWorldClockRequest({ activation_digest: activationDigest,
58
+ activation_receipt_digest: activationReceiptDigest, descriptor_digest: authorization.descriptor_digest,
59
+ endpoint: { internal_port: 4_070, path: "/v1/world/clock" },
60
+ expected: { document_version: "world.clock-document.v1", world_instance_id: "world-built-clock" }, run_id: runId,
61
+ selected_target: selectedTarget, topology_receipt_digest: marker.topology_receipt_digest,
62
+ topology_request_digest: marker.topology_request_digest, version: "spawnfile.target-world-clock.request.v1",
63
+ world_service_handle: binding.world_service_handle });
64
+ return { binding, marker, request, spec };
65
+ };
66
+ export const createBuiltWorldClockState = async () => {
67
+ const root = await realpath(await mkdtemp(path.join(os.tmpdir(), "spawnfile-built-world-clock-")));
68
+ const home = path.join(root, "home");
69
+ const callsPath = path.join(root, "docker-calls.ndjson");
70
+ const modePath = path.join(root, "mode");
71
+ const scenariosPath = path.join(root, "scenarios.json");
72
+ const fakeDocker = path.join(root, "docker-clock");
73
+ const requestPath = path.join(root, "request.json");
74
+ const { binding, marker, request, spec } = fixture();
75
+ const store = await initializeWorldServiceAuthorityStore(path.join(home, "target", "world-authority"));
76
+ await store.bindService(binding);
77
+ const observation = { action_count: 0, clock: { completed_tick: 1, next_tick: 2, state: "running" },
78
+ run_id: request.run_id, version: request.expected.document_version, world_instance_id: request.expected.world_instance_id };
79
+ const topologyMarker = parseWorldServiceActivation({ ...marker, topology_receipt_digest: d("b") });
80
+ const activationMarker = parseWorldServiceActivation({ ...marker, bundle_digest: d("c") });
81
+ const scenarios = {
82
+ success: { marker: createCanonicalWorldServiceActivationBytes(marker), observation: JSON.stringify(observation) },
83
+ "tick-zero": { marker: createCanonicalWorldServiceActivationBytes(marker), observation: JSON.stringify({ ...observation,
84
+ clock: { completed_tick: 0, next_tick: 1, state: "running" } }) },
85
+ stale: { marker: createCanonicalWorldServiceActivationBytes(marker), observation: JSON.stringify({ ...observation, run_id: "run-stale-clock" }) },
86
+ topology: { marker: createCanonicalWorldServiceActivationBytes(topologyMarker), observation: JSON.stringify(observation) },
87
+ activation: { marker: createCanonicalWorldServiceActivationBytes(activationMarker), observation: JSON.stringify(observation) },
88
+ "nonzero-action": { marker: createCanonicalWorldServiceActivationBytes(marker), observation: JSON.stringify({ ...observation, action_count: 1 }) },
89
+ };
90
+ await writeFile(callsPath, "", { mode: 0o600 });
91
+ await writeFile(modePath, "success", { mode: 0o600 });
92
+ await writeFile(scenariosPath, JSON.stringify(scenarios), { mode: 0o600 });
93
+ await writeFile(requestPath, JSON.stringify(request), { mode: 0o600 });
94
+ await writeFile(fakeDocker, `#!${process.execPath}
95
+ const fs=require("node:fs");const args=process.argv.slice(2);
96
+ fs.appendFileSync(${JSON.stringify(callsPath)},JSON.stringify(args)+"\\n");
97
+ const all=JSON.parse(fs.readFileSync(${JSON.stringify(scenariosPath)},"utf8"));
98
+ const current=all[fs.readFileSync(${JSON.stringify(modePath)},"utf8").trim()];
99
+ if(args[2]==="container"&&args[3]==="inspect")process.stdout.write(${JSON.stringify(JSON.stringify([inspection(spec)]))});
100
+ else if(args[2]==="container"&&args[3]==="exec"&&args.includes("/bin/cat"))process.stdout.write(current.marker);
101
+ else if(args[2]==="container"&&args[3]==="exec"&&args.includes("/usr/local/bin/node"))process.stdout.write(current.observation);
102
+ else{process.stderr.write("unexpected fake Docker command\\n");process.exitCode=71;}
103
+ `, { mode: 0o700 });
104
+ await chmod(fakeDocker, 0o700);
105
+ return { callsPath, config: { context: "built_clock", dockerCommand: fakeDocker,
106
+ evidenceDestination: path.join(root, "unused.tar"), timeoutMs: 10_000,
107
+ version: "spawnfile.target-default-config.v1" }, home, modePath, request, requestPath, root };
108
+ };
109
+ export const selectBuiltWorldClockMode = async (state, mode) => { await writeFile(state.modePath, mode, { mode: 0o600 }); };
@@ -0,0 +1,10 @@
1
+ import type { Command } from "commander";
2
+ import { type TargetWorldReadinessRequest, type TargetWorldReadinessReceipt } from "../target/worldReadiness.js";
3
+ export interface TargetWorldReadinessSession {
4
+ queryWorldReadiness?(request: TargetWorldReadinessRequest): Promise<TargetWorldReadinessReceipt>;
5
+ }
6
+ export type TargetWorldReadinessSessionLoader = (configInput: unknown) => Promise<TargetWorldReadinessSession>;
7
+ export declare const registerTargetWorldReadinessCommand: (target: Command, session: TargetWorldReadinessSession | TargetWorldReadinessSessionLoader, streams: {
8
+ readonly stderr: (message: string) => void;
9
+ readonly stdout: (message: string) => void;
10
+ }, setExitCode: (exitCode: 1 | 2) => void) => void;
@@ -0,0 +1,43 @@
1
+ import { createCanonicalTargetWorldReadinessReceiptBytes, verifyTargetWorldReadinessReceipt } from "../target/worldReadiness.js";
2
+ import { formatCaughtTargetCliError } from "./targetReceiptOutput.js";
3
+ import { readTargetWorldReadinessRequestFile } from "./targetRequestFile.js";
4
+ export const registerTargetWorldReadinessCommand = (target, session, streams, setExitCode) => {
5
+ target.command("query_world_readiness")
6
+ .description("Query one exact running world's public readiness document")
7
+ .argument("<request-file>", "Strict world readiness request JSON file")
8
+ .action(async (requestFile) => {
9
+ let request;
10
+ try {
11
+ request = await readTargetWorldReadinessRequestFile(requestFile);
12
+ }
13
+ catch {
14
+ streams.stderr("error: Invalid world readiness request");
15
+ setExitCode(2);
16
+ return;
17
+ }
18
+ let activeSession;
19
+ try {
20
+ activeSession = typeof session === "function"
21
+ ? await session(target.opts().config)
22
+ : session;
23
+ if (typeof activeSession.queryWorldReadiness !== "function")
24
+ throw new TypeError();
25
+ }
26
+ catch {
27
+ streams.stderr("error: Invalid target configuration");
28
+ setExitCode(2);
29
+ return;
30
+ }
31
+ try {
32
+ const receipt = verifyTargetWorldReadinessReceipt({
33
+ receipt: await activeSession.queryWorldReadiness(request),
34
+ request
35
+ });
36
+ streams.stdout(createCanonicalTargetWorldReadinessReceiptBytes(receipt));
37
+ }
38
+ catch (error) {
39
+ streams.stderr(formatCaughtTargetCliError(error, "Target world readiness query crashed"));
40
+ setExitCode(1);
41
+ }
42
+ });
43
+ };
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ import type { CliHandlers, CliStreams } from "./runCli.js";
3
+ export declare const registerUpCommand: (program: Command, handlers: CliHandlers, streams: CliStreams) => void;
@@ -0,0 +1,133 @@
1
+ import { constants } from "node:fs";
2
+ import { open } from "node:fs/promises";
3
+ import { createDeploymentInstanceDigest, readDeploymentRecord, recordLifecycleOutcomeEvidence } from "../deployment/index.js";
4
+ import { SpawnfileError } from "../shared/index.js";
5
+ import { requireMachineLifecycle, runMachineLifecycle } from "./lifecycleMachine.js";
6
+ import { resolveCommandInput } from "./resolveCommandInput.js";
7
+ import { runImageUpCommand } from "./upImageCommand.js";
8
+ import { createUpLifecycleInvocation, createUpProjectOptions } from "./upLifecycleInvocation.js";
9
+ import { reconcileUpLifecycle } from "./upLifecycleRecovery.js";
10
+ const readSelectedTargetReceipt = async (file) => {
11
+ if (typeof file !== "string" || file.length < 1 || Buffer.byteLength(file, "utf8") > 4096) {
12
+ throw new SpawnfileError("validation_error", "Invalid selected target receipt");
13
+ }
14
+ let handle;
15
+ try {
16
+ handle = await open(file, constants.O_RDONLY | constants.O_NOFOLLOW);
17
+ const stat = await handle.stat();
18
+ if (!stat.isFile() || stat.size < 1 || stat.size > 65_536)
19
+ throw new Error();
20
+ return JSON.parse(await handle.readFile("utf8"));
21
+ }
22
+ catch {
23
+ throw new SpawnfileError("validation_error", "Invalid selected target receipt");
24
+ }
25
+ finally {
26
+ await handle?.close().catch(() => undefined);
27
+ }
28
+ };
29
+ export const registerUpCommand = (program, handlers, streams) => {
30
+ program
31
+ .command("up")
32
+ .description("Deploy an organization from a project or a published image reference")
33
+ .argument("[path]", "Project directory, Spawnfile path, or image reference", process.cwd())
34
+ .option("-o, --out <directory>", "Output directory")
35
+ .option("-t, --tag <image>", "Docker image tag")
36
+ .option("--auth-profile <name>", "Local Spawnfile auth profile")
37
+ .option("--context <name>", "Docker context for the deployment target")
38
+ .option("--deployment <name>", "Detached deployment record name")
39
+ .option("--docker-command <command>", "Docker command")
40
+ .option("--name <container>", "Docker container name")
41
+ .option("--env-file <file>", "Path to an env file for runtime secrets")
42
+ .option("--world-bindings <file>", "Path to a versioned world-bindings artifact")
43
+ .option("--selected-target-receipt-digest <digest>", "Selected target receipt digest for an organization handoff")
44
+ .option("--selected-target-receipt <file>", "Selected target receipt for an organization handoff")
45
+ .option("--network-attachment-handle <handle>", "Opaque network attachment handle for an organization handoff")
46
+ .option("--organization-handoff-run-id <id>", "Authorized run id for an organization handoff")
47
+ .option("--descriptor-digest <digest>", "Production descriptor digest for an organization handoff")
48
+ .option("--image", "Interpret the argument as an image reference")
49
+ .option("--pull", "Pull the image before deploying")
50
+ .option("-d, --detach", "Run the container in detached mode")
51
+ .option("--json", "Render a spawnfile.up-receipt.v1 machine-readable receipt")
52
+ .option("--lifecycle-invocation <id>", "Durably bind this exact JSON lifecycle invocation")
53
+ .action(async (inputPath, options) => {
54
+ requireMachineLifecycle(options.lifecycleInvocation, options.json);
55
+ const upInput = resolveCommandInput(inputPath, { forceImage: options.image });
56
+ if (upInput.kind === "invalid") {
57
+ throw new SpawnfileError("validation_error", `Cannot resolve "${inputPath}" as a project path or image reference. ` +
58
+ "Pass a project directory, a Spawnfile path, or an image like 'name:tag' (use --image to force image mode).");
59
+ }
60
+ if (upInput.kind === "image") {
61
+ if (options.selectedTargetReceiptDigest !== undefined ||
62
+ options.selectedTargetReceipt !== undefined ||
63
+ options.networkAttachmentHandle !== undefined ||
64
+ options.organizationHandoffRunId !== undefined ||
65
+ options.descriptorDigest !== undefined) {
66
+ throw new SpawnfileError("validation_error", "Organization handoff inputs are only supported for project-mode deployments");
67
+ }
68
+ if (options.worldBindings !== undefined) {
69
+ throw new SpawnfileError("validation_error", "`--world-bindings` is only supported for project-mode deployments");
70
+ }
71
+ if (options.json) {
72
+ throw new SpawnfileError("validation_error", "`spawnfile up --json` is not yet supported for image-mode deployments " +
73
+ "(there is no source Spawnfile to derive compiled_schedule from).");
74
+ }
75
+ await runImageUpCommand(upInput.ref, options, handlers, streams);
76
+ return;
77
+ }
78
+ const handoffValues = [
79
+ options.descriptorDigest,
80
+ options.organizationHandoffRunId,
81
+ options.selectedTargetReceipt,
82
+ options.selectedTargetReceiptDigest,
83
+ options.networkAttachmentHandle,
84
+ options.worldBindings
85
+ ];
86
+ if (handoffValues.some((value) => value !== undefined) &&
87
+ handoffValues.some((value) => value === undefined)) {
88
+ throw new SpawnfileError("validation_error", "Organization handoff requires --organization-handoff-run-id, --descriptor-digest, --selected-target-receipt, --selected-target-receipt-digest, --network-attachment-handle, and --world-bindings");
89
+ }
90
+ if (options.lifecycleInvocation !== undefined &&
91
+ (!options.detach ||
92
+ !options.deployment ||
93
+ handoffValues.some((value) => value === undefined))) {
94
+ throw new SpawnfileError("validation_error", "Machine lifecycle up requires a detached deployment with durable organization handoff authority");
95
+ }
96
+ if (options.json) {
97
+ const exactInvocation = options.lifecycleInvocation === undefined
98
+ ? undefined
99
+ : createUpLifecycleInvocation(inputPath, {
100
+ ...options,
101
+ forceImage: options.image,
102
+ lifecycleInvocation: options.lifecycleInvocation
103
+ });
104
+ const render = async (capability) => {
105
+ const selectedTargetReceipt = options.selectedTargetReceipt === undefined
106
+ ? undefined
107
+ : await readSelectedTargetReceipt(options.selectedTargetReceipt);
108
+ const result = await handlers.upProject(inputPath, createUpProjectOptions({ ...options, selectedTargetReceipt }));
109
+ const receipt = await handlers.buildUpReceipt(inputPath, result);
110
+ const bytes = JSON.stringify(receipt, null, 2);
111
+ if (exactInvocation && capability) {
112
+ await recordLifecycleOutcomeEvidence(exactInvocation, bytes, capability, result.deploymentRecordPath
113
+ ? createDeploymentInstanceDigest(await readDeploymentRecord(result.deploymentRecordPath))
114
+ : "");
115
+ }
116
+ return bytes;
117
+ };
118
+ const output = options.lifecycleInvocation === undefined
119
+ ? await render()
120
+ : await runMachineLifecycle(exactInvocation, render, () => reconcileUpLifecycle(inputPath, options, exactInvocation));
121
+ streams.stdout(output);
122
+ return;
123
+ }
124
+ const result = await handlers.upProject(inputPath, createUpProjectOptions(options));
125
+ streams.stdout(`built image ${result.imageTag}`);
126
+ streams.stdout(`compiled to ${result.outputDirectory}`);
127
+ streams.stdout(`report: ${result.reportPath}`);
128
+ if (options.detach) {
129
+ streams.stdout(`running container ${result.containerName ?? "unknown"}`);
130
+ streams.stdout(`image: ${result.imageTag}`);
131
+ }
132
+ });
133
+ };
@@ -0,0 +1,11 @@
1
+ import type { CliHandlers, CliStreams } from "./runCli.js";
2
+ interface ImageUpOptions {
3
+ authProfile?: string;
4
+ context?: string;
5
+ deployment?: string;
6
+ dockerCommand?: string;
7
+ envFile?: string;
8
+ pull?: boolean;
9
+ }
10
+ export declare const runImageUpCommand: (ref: string, options: ImageUpOptions, handlers: CliHandlers, streams: CliStreams) => Promise<void>;
11
+ export {};
@@ -0,0 +1,41 @@
1
+ import { readRunEnvFile } from "../compiler/runProjectAuth.js";
2
+ const shortDigest = (digest) => digest ? digest.replace(/^sha256:/, "").slice(0, 12) : "unknown";
3
+ const redeploySummary = (previous, newRef, newDigest) => {
4
+ if (previous.ref === newRef &&
5
+ newDigest !== null &&
6
+ previous.digest === newDigest) {
7
+ return `redeployed image ${newRef} (digest unchanged ${shortDigest(newDigest)})`;
8
+ }
9
+ return (`redeployed image: ${previous.ref} (${shortDigest(previous.digest)}) ` +
10
+ `→ ${newRef} (${shortDigest(newDigest)})`);
11
+ };
12
+ export const runImageUpCommand = async (ref, options, handlers, streams) => {
13
+ const authProfile = options.authProfile && handlers.requireAuthProfile
14
+ ? await handlers.requireAuthProfile(options.authProfile)
15
+ : null;
16
+ const envFileEnv = await readRunEnvFile(options.envFile);
17
+ const consumed = await handlers.consumeImageUp(ref, {
18
+ authProfile,
19
+ authProfileName: options.authProfile ?? null,
20
+ authValues: authProfile?.env ?? {},
21
+ deploymentName: options.deployment,
22
+ dockerCommand: options.dockerCommand,
23
+ dockerContext: options.context,
24
+ envFileEnv,
25
+ envFilePath: options.envFile ?? null,
26
+ pull: options.pull,
27
+ });
28
+ if (consumed.previous) {
29
+ const digest = consumed.record.source.kind === "image"
30
+ ? consumed.record.source.digest
31
+ : null;
32
+ streams.stdout(redeploySummary(consumed.previous, consumed.imageRef, digest));
33
+ }
34
+ else {
35
+ streams.stdout(`deployed image ${consumed.imageRef}`);
36
+ }
37
+ streams.stdout(`deployment: ${consumed.deploymentName}`);
38
+ streams.stdout(`running container ${consumed.containerName}`);
39
+ streams.stdout(`record: ${consumed.recordPath}`);
40
+ streams.stdout(`next: spawnfile status --deployment ${consumed.deploymentName} --live`);
41
+ };
@@ -0,0 +1,41 @@
1
+ import type { LifecycleInvocation } from "../deployment/index.js";
2
+ export interface UpLifecycleOptions {
3
+ authProfile?: string;
4
+ context?: string;
5
+ deployment?: string;
6
+ descriptorDigest?: string;
7
+ detach?: boolean;
8
+ dockerCommand?: string;
9
+ envFile?: string;
10
+ forceImage?: boolean;
11
+ lifecycleInvocation?: string;
12
+ name?: string;
13
+ networkAttachmentHandle?: string;
14
+ organizationHandoffRunId?: string;
15
+ out?: string;
16
+ pull?: boolean;
17
+ selectedTargetReceipt?: unknown;
18
+ selectedTargetReceiptDigest?: string;
19
+ tag?: string;
20
+ worldBindings?: string;
21
+ }
22
+ export declare const createUpLifecycleInvocation: (inputPath: string, options: UpLifecycleOptions & {
23
+ lifecycleInvocation: string;
24
+ }) => LifecycleInvocation;
25
+ export declare const createUpProjectOptions: (options: UpLifecycleOptions) => {
26
+ worldBindingsPath?: string | undefined;
27
+ selectedTargetReceipt?: {} | null | undefined;
28
+ selectedTargetReceiptDigest?: string | undefined;
29
+ networkAttachmentHandle?: string | undefined;
30
+ authProfile: string | undefined;
31
+ containerName: string | undefined;
32
+ detach: boolean | undefined;
33
+ deploymentName: string | undefined;
34
+ dockerCommand: string | undefined;
35
+ dockerContext: string | undefined;
36
+ descriptorDigest: string | undefined;
37
+ envFilePath: string | undefined;
38
+ imageTag: string | undefined;
39
+ organizationHandoffRunId: string | undefined;
40
+ outputDirectory: string | undefined;
41
+ };
@@ -0,0 +1,48 @@
1
+ import path from "node:path";
2
+ import { createLifecycleInvocation, digestLifecycleBinding, } from "./lifecycleMachine.js";
3
+ export const createUpLifecycleInvocation = (inputPath, options) => createLifecycleInvocation(options.lifecycleInvocation, "up", {
4
+ input_kind: "project",
5
+ project_path: path.resolve(inputPath),
6
+ }, {
7
+ auth_profile_digest: digestLifecycleBinding(options.authProfile),
8
+ container_name: options.name ?? null,
9
+ deployment: options.deployment ?? null,
10
+ detach: options.detach ?? false,
11
+ docker_command_digest: digestLifecycleBinding(options.dockerCommand),
12
+ docker_context: options.context ?? null,
13
+ descriptor_digest: options.descriptorDigest ?? null,
14
+ env_file_digest: digestLifecycleBinding(options.envFile),
15
+ force_image: options.forceImage ?? false,
16
+ image_tag: options.tag ?? null,
17
+ network_attachment_handle_digest: digestLifecycleBinding(options.networkAttachmentHandle),
18
+ organization_handoff_run_id: options.organizationHandoffRunId ?? null,
19
+ output_directory: options.out ? path.resolve(options.out) : null,
20
+ pull: options.pull ?? false,
21
+ selected_target_receipt_digest: options.selectedTargetReceiptDigest ?? null,
22
+ world_bindings_digest: digestLifecycleBinding(options.worldBindings),
23
+ });
24
+ export const createUpProjectOptions = (options) => ({
25
+ authProfile: options.authProfile,
26
+ containerName: options.name,
27
+ detach: options.detach,
28
+ deploymentName: options.deployment,
29
+ dockerCommand: options.dockerCommand,
30
+ dockerContext: options.context,
31
+ descriptorDigest: options.descriptorDigest,
32
+ envFilePath: options.envFile,
33
+ imageTag: options.tag,
34
+ organizationHandoffRunId: options.organizationHandoffRunId,
35
+ outputDirectory: options.out,
36
+ ...(options.networkAttachmentHandle !== undefined
37
+ ? { networkAttachmentHandle: options.networkAttachmentHandle }
38
+ : {}),
39
+ ...(options.selectedTargetReceiptDigest !== undefined
40
+ ? { selectedTargetReceiptDigest: options.selectedTargetReceiptDigest }
41
+ : {}),
42
+ ...(options.selectedTargetReceipt !== undefined
43
+ ? { selectedTargetReceipt: options.selectedTargetReceipt }
44
+ : {}),
45
+ ...(options.worldBindings !== undefined
46
+ ? { worldBindingsPath: options.worldBindings }
47
+ : {}),
48
+ });
@@ -0,0 +1,4 @@
1
+ import { findLifecycleOutcomeEvidence } from "../deployment/index.js";
2
+ import type { LifecycleReconciliation } from "./lifecycleMachine.js";
3
+ import type { UpLifecycleOptions } from "./upLifecycleInvocation.js";
4
+ export declare const reconcileUpLifecycle: (inputPath: string, options: UpLifecycleOptions, invocation: Parameters<typeof findLifecycleOutcomeEvidence>[0]) => Promise<LifecycleReconciliation>;