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,39 @@
1
+ import { type OpaqueTargetHandle, type TargetResourceReceipt } from "./contracts.js";
2
+ import { type TargetJournalStore } from "./journal.js";
3
+ import { type TargetSecretSourceAuthorization, type TargetSecretVersionAuthorityStore } from "./dockerSecretsAuthority.js";
4
+ import { type DockerSecretExecutor } from "./dockerSecretsProvider.js";
5
+ type OperationResult = {
6
+ readonly receipt: TargetResourceReceipt;
7
+ readonly receiptBytes: string;
8
+ };
9
+ export interface TargetSecretSourceResolverInput {
10
+ readonly authorization: TargetSecretSourceAuthorization;
11
+ readonly signal?: AbortSignal;
12
+ }
13
+ export interface TargetSecretSourceResolution {
14
+ readonly authorization: TargetSecretSourceAuthorization;
15
+ readonly sourceVersionHandle: OpaqueTargetHandle;
16
+ readonly value: Uint8Array;
17
+ }
18
+ /**
19
+ * Trusted operator seam. Returned bytes transfer to the caller and are zeroed
20
+ * after the one stdin write; a source handle must resolve immutably on retry.
21
+ */
22
+ export interface TargetSecretSourceResolver {
23
+ resolve(input: TargetSecretSourceResolverInput): Promise<TargetSecretSourceResolution>;
24
+ }
25
+ export interface DockerSecretOperationsOptions {
26
+ readonly authorityStore: TargetSecretVersionAuthorityStore;
27
+ readonly context: unknown;
28
+ readonly executor: DockerSecretExecutor;
29
+ readonly journal: TargetJournalStore;
30
+ readonly resolver: TargetSecretSourceResolver;
31
+ readonly signal?: AbortSignal;
32
+ readonly timeoutMs?: unknown;
33
+ }
34
+ export interface DockerSecretOperations {
35
+ execute(raw: unknown): Promise<OperationResult>;
36
+ }
37
+ export declare const createDockerSecretOperations: (options: DockerSecretOperationsOptions) => DockerSecretOperations;
38
+ export declare const createDockerSecrets: (options: DockerSecretOperationsOptions) => DockerSecretOperations;
39
+ export {};
@@ -0,0 +1,249 @@
1
+ import { Buffer } from "node:buffer";
2
+ import { SpawnfileError } from "../shared/index.js";
3
+ import { parseOpaqueTargetHandle, parseTargetResourceRequest } from "./contracts.js";
4
+ import { selectTarget } from "./dockerTarget.js";
5
+ import { createTargetReceiptDigest } from "./handles.js";
6
+ import { createTargetSecretSourceAuthorization, parseTargetSecretSourceAuthorization } from "./dockerSecretsAuthority.js";
7
+ import { DOCKER_SECRET_ERROR, DockerSecretProviderError, createDockerSecretArchive, createExistingDockerSecretSpec, createPreparedDockerSecretSpec } from "./dockerSecretsProvider.js";
8
+ import { cleanupExactDockerSecretBindings, executeSecretLifecycleCommand, inspectExactSecretVolume, inspectExactSecretWriter } from "./dockerSecretsLifecycle.js";
9
+ const CONTEXT_PATTERN = /^[a-z][a-z0-9_-]{0,63}$/u;
10
+ const fail = () => { throw new SpawnfileError("runtime_error", DOCKER_SECRET_ERROR); };
11
+ const same = (left, right) => JSON.stringify(left) === JSON.stringify(right);
12
+ const validOptions = (raw) => {
13
+ if (!raw.authorityStore || typeof raw.authorityStore.bind !== "function"
14
+ || typeof raw.context !== "string" || !CONTEXT_PATTERN.test(raw.context)
15
+ || typeof raw.executor !== "function" || !raw.journal || !raw.resolver || typeof raw.resolver.resolve !== "function"
16
+ || typeof raw.timeoutMs !== "undefined" && (typeof raw.timeoutMs !== "number" || !Number.isSafeInteger(raw.timeoutMs) || raw.timeoutMs < 1 || raw.timeoutMs > 120_000))
17
+ fail();
18
+ return {
19
+ authorityStore: raw.authorityStore, context: raw.context, executor: raw.executor, journal: raw.journal,
20
+ resolver: raw.resolver, signal: raw.signal, timeoutMs: (raw.timeoutMs ?? 30_000)
21
+ };
22
+ };
23
+ const parseSecretRequest = (raw) => {
24
+ const request = parseTargetResourceRequest(raw);
25
+ if (request.operation !== "prepare_secret_bindings" && request.operation !== "revoke_secret_bindings")
26
+ fail();
27
+ if (request.operation === "prepare_secret_bindings") {
28
+ const keys = request.bindings.map((binding) => `${binding.scope}\0${binding.name}`);
29
+ const sources = request.bindings.map((binding) => binding.source_handle);
30
+ if (new Set(keys).size !== keys.length || new Set(sources).size !== sources.length)
31
+ fail();
32
+ }
33
+ return request;
34
+ };
35
+ const command = async (args, options, input) => executeSecretLifecycleCommand(args, options, input);
36
+ const selectedContextMatches = async (request, options) => {
37
+ const selected = await selectTarget({
38
+ context: options.context,
39
+ dockerCommand: "docker",
40
+ execFile: async (_file, args, commandOptions) => command(args, { ...options, signal: commandOptions.signal, timeoutMs: commandOptions.timeout }),
41
+ signal: options.signal,
42
+ timeoutMs: options.timeoutMs
43
+ });
44
+ if (!same({ fingerprint: selected.fingerprint, handle: selected.handle }, request.selected_target))
45
+ fail();
46
+ };
47
+ const inspectVolume = (spec, options) => inspectExactSecretVolume(spec, options);
48
+ const createVolume = async (spec, options) => {
49
+ const labels = Object.entries(spec.labels).flatMap(([key, value]) => ["--label", `${key}=${value}`]);
50
+ const result = await command(["--context", options.context, "volume", "create", "--driver", "local", ...labels, spec.volumeName], options);
51
+ if (result.stderr !== "" || result.stdout.trim() !== spec.volumeName || await inspectVolume(spec, options) !== "present")
52
+ fail();
53
+ };
54
+ const inspectWriter = (spec, options) => inspectExactSecretWriter(spec, options);
55
+ const removePrepareWriter = async (spec, options) => {
56
+ try {
57
+ const result = await command(["--context", options.context, "container", "rm", "--force", spec.writerName], options);
58
+ if (result.stderr !== "" || result.stdout.trim() !== spec.writerName)
59
+ fail();
60
+ }
61
+ catch (error) {
62
+ if (!(error instanceof DockerSecretProviderError) || error.kind !== "not_found")
63
+ throw error;
64
+ }
65
+ };
66
+ const waitWriter = async (spec, options) => {
67
+ try {
68
+ const result = await command(["--context", options.context, "container", "wait", spec.writerName], options);
69
+ if (result.stderr !== "" || !/^[0-9]{1,3}\n?$/u.test(result.stdout))
70
+ fail();
71
+ return Number(result.stdout.trim()) === 0;
72
+ }
73
+ catch (error) {
74
+ if (error instanceof DockerSecretProviderError && error.kind === "not_found")
75
+ return false;
76
+ throw error;
77
+ }
78
+ };
79
+ const recoverWriter = async (spec, options) => {
80
+ const state = await inspectWriter(spec, options);
81
+ if (state === "absent")
82
+ return false;
83
+ if (state.status === "running" && await waitWriter(spec, options))
84
+ return true;
85
+ await removePrepareWriter(spec, options);
86
+ return false;
87
+ };
88
+ const runWriter = async (spec, archive, options) => {
89
+ try {
90
+ await command(["--context", options.context, ...spec.writerRunArgs], options, { requireSilent: true, stdin: archive });
91
+ }
92
+ catch (error) {
93
+ if (!(error instanceof DockerSecretProviderError) || error.kind !== "collision")
94
+ throw error;
95
+ if (await recoverWriter(spec, options))
96
+ return;
97
+ await command(["--context", options.context, ...spec.writerRunArgs], options, { requireSilent: true, stdin: archive });
98
+ }
99
+ };
100
+ const exactResolution = (raw) => {
101
+ if (!raw || typeof raw !== "object" || Array.isArray(raw)
102
+ || Object.getPrototypeOf(raw) !== Object.prototype)
103
+ return fail();
104
+ const keys = Reflect.ownKeys(raw);
105
+ if (keys.length !== 3
106
+ || !["authorization", "sourceVersionHandle", "value"].every((key) => keys.includes(key)))
107
+ return fail();
108
+ const record = raw;
109
+ for (const key of keys) {
110
+ const descriptor = Object.getOwnPropertyDescriptor(raw, key);
111
+ if (!descriptor || !("value" in descriptor) || !descriptor.enumerable)
112
+ return fail();
113
+ }
114
+ if (!(record.value instanceof Uint8Array))
115
+ return fail();
116
+ return {
117
+ authorization: parseTargetSecretSourceAuthorization(record.authorization),
118
+ sourceVersionHandle: parseOpaqueTargetHandle(record.sourceVersionHandle),
119
+ value: record.value
120
+ };
121
+ };
122
+ const resolveArchive = async (request, claim, options) => {
123
+ const resolved = [];
124
+ const versions = [];
125
+ try {
126
+ const sorted = [...request.bindings].sort((left, right) => left.scope.localeCompare(right.scope) || left.name.localeCompare(right.name));
127
+ for (const binding of sorted) {
128
+ let source;
129
+ try {
130
+ const authorization = createTargetSecretSourceAuthorization({
131
+ descriptorDigest: request.descriptor_digest, name: binding.name,
132
+ operationHandle: claim.operationHandle, requestDigest: claim.requestDigest, runId: request.run_id,
133
+ scope: binding.scope, selectedTarget: request.selected_target, sourceHandle: binding.source_handle
134
+ });
135
+ const rawResolution = await options.resolver.resolve({ authorization, signal: options.signal });
136
+ if (rawResolution && typeof rawResolution === "object") {
137
+ const value = Object.getOwnPropertyDescriptor(rawResolution, "value");
138
+ if (value && "value" in value && value.value instanceof Uint8Array)
139
+ source = value.value;
140
+ }
141
+ const resolution = exactResolution(rawResolution);
142
+ if (!same(resolution.authorization, authorization))
143
+ fail();
144
+ source = resolution.value;
145
+ versions.push({ authorization, sourceVersionHandle: resolution.sourceVersionHandle });
146
+ resolved.push({ name: binding.name, scope: binding.scope, value: Buffer.from(source) });
147
+ }
148
+ finally {
149
+ if (source instanceof Uint8Array)
150
+ source.fill(0);
151
+ }
152
+ }
153
+ await options.authorityStore.bind(versions);
154
+ return createDockerSecretArchive(resolved);
155
+ }
156
+ catch {
157
+ return fail();
158
+ }
159
+ finally {
160
+ for (const binding of resolved)
161
+ binding.value.fill(0);
162
+ }
163
+ };
164
+ const receiptFor = (input) => {
165
+ const labels = Object.entries(input.spec.labels).map(([key, value]) => ({ key, value }));
166
+ const raw = {
167
+ cleanup_state: "not_requested", descriptor_digest: input.request.descriptor_digest, export_state: "not_requested",
168
+ labels, operation: input.request.operation, operation_handle: input.claim.operationHandle,
169
+ receipt_digest: `sha256:${"0".repeat(64)}`, request_digest: input.claim.requestDigest,
170
+ result_handle: input.resultHandle, resulting_revision: input.request.expected_revision + 1,
171
+ run_id: input.request.run_id, selected_target: input.request.selected_target,
172
+ version: "spawnfile.target-resource.receipt.v1"
173
+ };
174
+ return { ...raw, receipt_digest: createTargetReceiptDigest(raw) };
175
+ };
176
+ class DockerSecretOperationsImpl {
177
+ #options;
178
+ #live = new Map();
179
+ constructor(options) { this.#options = options; }
180
+ execute(raw) {
181
+ let request;
182
+ try {
183
+ request = parseSecretRequest(raw);
184
+ }
185
+ catch {
186
+ return Promise.reject(new SpawnfileError("runtime_error", DOCKER_SECRET_ERROR));
187
+ }
188
+ const active = this.#live.get(request.idempotency_key);
189
+ if (active)
190
+ return same(active.request, request) ? active.promise : Promise.reject(new SpawnfileError("runtime_error", DOCKER_SECRET_ERROR));
191
+ const promise = this.executeOwner(request);
192
+ this.#live.set(request.idempotency_key, { promise, request });
193
+ void promise.finally(() => { if (this.#live.get(request.idempotency_key)?.promise === promise)
194
+ this.#live.delete(request.idempotency_key); }).catch(() => undefined);
195
+ return promise;
196
+ }
197
+ async executeOwner(request) {
198
+ try {
199
+ const reservation = await this.#options.journal.reserve(request);
200
+ if (reservation.kind === "replay")
201
+ return { receipt: reservation.receipt, receiptBytes: reservation.receiptBytes };
202
+ await selectedContextMatches(request, this.#options);
203
+ if (request.operation === "prepare_secret_bindings")
204
+ return await this.prepare(request, reservation, reservation.claim);
205
+ return await this.revoke(request, reservation.claim);
206
+ }
207
+ catch {
208
+ return fail();
209
+ }
210
+ }
211
+ async prepare(request, reservation, claim) {
212
+ const spec = createPreparedDockerSecretSpec({ operationHandle: claim.operationHandle, requestDigest: claim.requestDigest, runId: request.run_id, selectedTargetHandle: request.selected_target.handle });
213
+ const archive = await resolveArchive(request, claim, this.#options);
214
+ try {
215
+ const volumeState = await inspectVolume(spec, this.#options);
216
+ const writerState = await inspectWriter(spec, this.#options);
217
+ if (reservation.kind === "owner" && writerState !== "absent")
218
+ fail();
219
+ if (writerState !== "absent") {
220
+ if (volumeState !== "present")
221
+ fail();
222
+ if (await recoverWriter(spec, this.#options)) {
223
+ const receipt = receiptFor({ claim, request, resultHandle: spec.resultHandle, spec });
224
+ return await this.#options.journal.complete(claim, receipt);
225
+ }
226
+ }
227
+ if (volumeState === "absent")
228
+ await createVolume(spec, this.#options);
229
+ await runWriter(spec, archive, this.#options);
230
+ }
231
+ finally {
232
+ archive.fill(0);
233
+ }
234
+ const receipt = receiptFor({ claim, request, resultHandle: spec.resultHandle, spec });
235
+ return await this.#options.journal.complete(claim, receipt);
236
+ }
237
+ async revoke(request, claim) {
238
+ const spec = createExistingDockerSecretSpec({ bindingsHandle: request.secret_bindings_handle, runId: request.run_id, selectedTargetHandle: request.selected_target.handle });
239
+ await cleanupExactDockerSecretBindings({
240
+ bindingsHandle: request.secret_bindings_handle,
241
+ runId: request.run_id,
242
+ selectedTargetHandle: request.selected_target.handle
243
+ }, this.#options);
244
+ const receipt = receiptFor({ claim, request, resultHandle: null, spec });
245
+ return await this.#options.journal.complete(claim, receipt);
246
+ }
247
+ }
248
+ export const createDockerSecretOperations = (options) => new DockerSecretOperationsImpl(validOptions(options));
249
+ export const createDockerSecrets = createDockerSecretOperations;
@@ -0,0 +1,26 @@
1
+ import { type OpaqueTargetHandle } from "./contracts.js";
2
+ export declare const TARGET_SECRET_SOURCE_AUTHORIZATION_VERSION: "spawnfile.target-secret-source.authorization.v1";
3
+ export interface TargetSecretSourceAuthorization {
4
+ readonly descriptorDigest: string;
5
+ readonly name: string;
6
+ readonly operationHandle: OpaqueTargetHandle;
7
+ readonly requestDigest: string;
8
+ readonly runId: string;
9
+ readonly scope: string;
10
+ readonly selectedTarget: {
11
+ readonly fingerprint: string;
12
+ readonly handle: OpaqueTargetHandle;
13
+ };
14
+ readonly sourceHandle: OpaqueTargetHandle;
15
+ readonly version: typeof TARGET_SECRET_SOURCE_AUTHORIZATION_VERSION;
16
+ }
17
+ export interface TargetSecretVersionBinding {
18
+ readonly authorization: TargetSecretSourceAuthorization;
19
+ readonly sourceVersionHandle: OpaqueTargetHandle;
20
+ }
21
+ export interface TargetSecretVersionAuthorityStore {
22
+ bind(bindings: readonly TargetSecretVersionBinding[]): Promise<void>;
23
+ }
24
+ export declare const parseTargetSecretSourceAuthorization: (raw: unknown) => TargetSecretSourceAuthorization;
25
+ export declare const createTargetSecretSourceAuthorization: (raw: Omit<TargetSecretSourceAuthorization, "version">) => TargetSecretSourceAuthorization;
26
+ export declare const initializeTargetSecretVersionAuthorityStore: (root: unknown) => Promise<TargetSecretVersionAuthorityStore>;
@@ -0,0 +1,216 @@
1
+ import { Buffer } from "node:buffer";
2
+ import { createHash, randomUUID } from "node:crypto";
3
+ import { constants } from "node:fs";
4
+ import { chmod, link, lstat, mkdir, open, unlink } from "node:fs/promises";
5
+ import path from "node:path";
6
+ import { assertOrdinaryJsonGraph, parseOpaqueTargetHandle, parseRunId } from "./contracts.js";
7
+ import { DOCKER_SECRET_ERROR } from "./dockerSecretsProvider.js";
8
+ export const TARGET_SECRET_SOURCE_AUTHORIZATION_VERSION = "spawnfile.target-secret-source.authorization.v1";
9
+ const TARGET_SECRET_VERSION_STORE = "spawnfile.target-secret-source.private-version-store.v1";
10
+ const TARGET_SECRET_SOURCE_BINDING = "spawnfile.target-secret-source.private-binding.v1";
11
+ const MAX_RECORD_BYTES = 32_768;
12
+ const IDENTIFIER_PATTERN = /^[a-z][a-z0-9_-]{0,63}$/u;
13
+ const DIGEST_PATTERN = /^sha256:[a-f0-9]{64}$/u;
14
+ const FINGERPRINT_PATTERN = /^sha256:[a-f0-9]{32}$/u;
15
+ const fail = () => { throw new Error(DOCKER_SECRET_ERROR); };
16
+ const bytes = (value) => Buffer.byteLength(value, "utf8");
17
+ const digest = (domain, value) => createHash("sha256")
18
+ .update(`spawnfile.target-secret-authority.${domain}.v1\0`, "utf8").update(value, "utf8").digest("hex");
19
+ const exactKeys = (value, keys) => {
20
+ const actual = Object.keys(value).sort();
21
+ const expected = [...keys].sort();
22
+ return actual.length === expected.length && actual.every((key, index) => key === expected[index]);
23
+ };
24
+ export const parseTargetSecretSourceAuthorization = (raw) => {
25
+ assertOrdinaryJsonGraph(raw);
26
+ if (!raw || typeof raw !== "object" || Array.isArray(raw))
27
+ return fail();
28
+ const value = raw;
29
+ if (!exactKeys(value, [
30
+ "descriptorDigest", "name", "operationHandle", "requestDigest", "runId", "scope",
31
+ "selectedTarget", "sourceHandle", "version"
32
+ ]) || value.version !== TARGET_SECRET_SOURCE_AUTHORIZATION_VERSION
33
+ || typeof value.descriptorDigest !== "string" || !DIGEST_PATTERN.test(value.descriptorDigest)
34
+ || typeof value.requestDigest !== "string" || !DIGEST_PATTERN.test(value.requestDigest)
35
+ || typeof value.name !== "string" || !IDENTIFIER_PATTERN.test(value.name)
36
+ || typeof value.scope !== "string" || !IDENTIFIER_PATTERN.test(value.scope))
37
+ return fail();
38
+ const selected = value.selectedTarget;
39
+ if (!selected || typeof selected !== "object" || Array.isArray(selected)
40
+ || !exactKeys(selected, ["fingerprint", "handle"]))
41
+ return fail();
42
+ const target = selected;
43
+ if (typeof target.fingerprint !== "string" || !FINGERPRINT_PATTERN.test(target.fingerprint))
44
+ return fail();
45
+ return Object.freeze({
46
+ descriptorDigest: value.descriptorDigest, name: value.name,
47
+ operationHandle: parseOpaqueTargetHandle(value.operationHandle), requestDigest: value.requestDigest,
48
+ runId: parseRunId(value.runId), scope: value.scope,
49
+ selectedTarget: Object.freeze({ fingerprint: target.fingerprint, handle: parseOpaqueTargetHandle(target.handle) }),
50
+ sourceHandle: parseOpaqueTargetHandle(value.sourceHandle), version: TARGET_SECRET_SOURCE_AUTHORIZATION_VERSION
51
+ });
52
+ };
53
+ export const createTargetSecretSourceAuthorization = (raw) => {
54
+ assertOrdinaryJsonGraph(raw);
55
+ return parseTargetSecretSourceAuthorization({ ...raw, version: TARGET_SECRET_SOURCE_AUTHORIZATION_VERSION });
56
+ };
57
+ const bindingBytes = (raw) => {
58
+ if (!Array.isArray(raw) || raw.length < 1 || raw.length > 32)
59
+ return fail();
60
+ const bindings = raw.map((entry) => {
61
+ if (!entry || typeof entry !== "object" || Array.isArray(entry))
62
+ return fail();
63
+ const authorization = parseTargetSecretSourceAuthorization(entry.authorization);
64
+ return Object.freeze({ authorization, sourceVersionHandle: parseOpaqueTargetHandle(entry.sourceVersionHandle) });
65
+ }).sort((left, right) => left.authorization.scope.localeCompare(right.authorization.scope)
66
+ || left.authorization.name.localeCompare(right.authorization.name));
67
+ const first = bindings[0].authorization;
68
+ const destinations = new Set();
69
+ const sources = new Set();
70
+ for (const binding of bindings) {
71
+ const authorization = binding.authorization;
72
+ if (authorization.operationHandle !== first.operationHandle || authorization.requestDigest !== first.requestDigest
73
+ || authorization.runId !== first.runId || authorization.descriptorDigest !== first.descriptorDigest
74
+ || authorization.selectedTarget.fingerprint !== first.selectedTarget.fingerprint
75
+ || authorization.selectedTarget.handle !== first.selectedTarget.handle)
76
+ return fail();
77
+ const destination = `${authorization.scope}\0${authorization.name}`;
78
+ if (destinations.has(destination) || sources.has(authorization.sourceHandle))
79
+ return fail();
80
+ destinations.add(destination);
81
+ sources.add(authorization.sourceHandle);
82
+ }
83
+ const content = JSON.stringify({ bindings, version: TARGET_SECRET_VERSION_STORE });
84
+ if (bytes(content) > MAX_RECORD_BYTES)
85
+ return fail();
86
+ const sourcesRecords = bindings.map((binding) => {
87
+ const sourceContent = JSON.stringify({ ...binding, version: TARGET_SECRET_SOURCE_BINDING });
88
+ if (bytes(sourceContent) > MAX_RECORD_BYTES)
89
+ return fail();
90
+ return { content: sourceContent, key: digest("source-file", binding.authorization.sourceHandle) };
91
+ });
92
+ return {
93
+ claim: { content, key: digest("claim-file", `${first.operationHandle}\0${first.requestDigest}`) },
94
+ sources: sourcesRecords
95
+ };
96
+ };
97
+ const checkRoot = async (raw) => {
98
+ if (typeof raw !== "string" || raw.length < 1 || bytes(raw) > 4_096)
99
+ return fail();
100
+ const root = path.resolve(raw);
101
+ const parsed = path.parse(root);
102
+ let current = parsed.root;
103
+ for (const part of root.slice(parsed.root.length).split(path.sep).filter(Boolean)) {
104
+ current = path.join(current, part);
105
+ let stats;
106
+ try {
107
+ stats = await lstat(current);
108
+ }
109
+ catch (error) {
110
+ if (error.code !== "ENOENT")
111
+ return fail();
112
+ await mkdir(current, { mode: 0o700 }).catch((mkdirError) => {
113
+ if (mkdirError.code !== "EEXIST")
114
+ return fail();
115
+ });
116
+ stats = await lstat(current).catch(fail);
117
+ }
118
+ if (!stats.isDirectory() || stats.isSymbolicLink())
119
+ return fail();
120
+ }
121
+ await chmod(root, 0o700).catch(fail);
122
+ return root;
123
+ };
124
+ const readRecord = async (filePath) => {
125
+ let stats;
126
+ try {
127
+ stats = await lstat(filePath);
128
+ }
129
+ catch (error) {
130
+ if (error.code === "ENOENT")
131
+ return null;
132
+ return fail();
133
+ }
134
+ if (!stats.isFile() || stats.isSymbolicLink() || stats.size > MAX_RECORD_BYTES || (stats.mode & 0o077) !== 0)
135
+ return fail();
136
+ let handle;
137
+ try {
138
+ handle = await open(filePath, constants.O_RDONLY | constants.O_NOFOLLOW);
139
+ }
140
+ catch {
141
+ return fail();
142
+ }
143
+ try {
144
+ const current = await handle.stat();
145
+ if (!current.isFile() || current.size > MAX_RECORD_BYTES || (current.mode & 0o077) !== 0)
146
+ return fail();
147
+ return await handle.readFile({ encoding: "utf8" });
148
+ }
149
+ catch {
150
+ return fail();
151
+ }
152
+ finally {
153
+ await handle.close().catch(() => undefined);
154
+ }
155
+ };
156
+ const syncDirectory = async (directory) => {
157
+ const handle = await open(directory, constants.O_RDONLY);
158
+ try {
159
+ await handle.sync();
160
+ }
161
+ finally {
162
+ await handle.close();
163
+ }
164
+ };
165
+ class FileTargetSecretVersionAuthorityStore {
166
+ #root;
167
+ constructor(root) { this.#root = root; }
168
+ async bindRecord(record) {
169
+ const finalPath = path.join(this.#root, `${record.key}.json`);
170
+ const existing = await readRecord(finalPath);
171
+ if (existing !== null) {
172
+ if (existing !== record.content)
173
+ return fail();
174
+ return;
175
+ }
176
+ const temporaryPath = path.join(this.#root, `.${record.key}.${process.pid}.${randomUUID()}.tmp`);
177
+ let handle;
178
+ try {
179
+ handle = await open(temporaryPath, constants.O_CREAT | constants.O_EXCL | constants.O_WRONLY | constants.O_NOFOLLOW, 0o600);
180
+ await handle.chmod(0o600);
181
+ await handle.writeFile(record.content, "utf8");
182
+ await handle.sync();
183
+ await handle.close();
184
+ handle = undefined;
185
+ try {
186
+ await link(temporaryPath, finalPath);
187
+ await syncDirectory(this.#root);
188
+ }
189
+ catch (error) {
190
+ if (error.code !== "EEXIST")
191
+ throw error;
192
+ }
193
+ }
194
+ finally {
195
+ if (handle)
196
+ await handle.close().catch(() => undefined);
197
+ await unlink(temporaryPath).catch((error) => { if (error.code !== "ENOENT")
198
+ throw error; });
199
+ await syncDirectory(this.#root);
200
+ }
201
+ if (await readRecord(finalPath) !== record.content)
202
+ return fail();
203
+ }
204
+ async bind(bindings) {
205
+ try {
206
+ const records = bindingBytes(bindings);
207
+ for (const source of records.sources)
208
+ await this.bindRecord(source);
209
+ await this.bindRecord(records.claim);
210
+ }
211
+ catch {
212
+ return fail();
213
+ }
214
+ }
215
+ }
216
+ export const initializeTargetSecretVersionAuthorityStore = async (root) => new FileTargetSecretVersionAuthorityStore(await checkRoot(root));
@@ -0,0 +1,25 @@
1
+ import { type OpaqueTargetHandle } from "./contracts.js";
2
+ import { type DockerSecretExecutor, type DockerSecretSpec, type DockerSecretWriterState } from "./dockerSecretsProvider.js";
3
+ export interface DockerSecretLifecycleOptions {
4
+ readonly context: string;
5
+ readonly executor: DockerSecretExecutor;
6
+ readonly signal?: AbortSignal;
7
+ readonly timeoutMs: number;
8
+ }
9
+ export interface DockerSecretCleanupAuthority {
10
+ readonly bindingsHandle: OpaqueTargetHandle;
11
+ readonly runId: string;
12
+ readonly selectedTargetHandle: OpaqueTargetHandle;
13
+ }
14
+ export declare const validateDockerSecretLifecycleOptions: (raw: DockerSecretLifecycleOptions) => DockerSecretLifecycleOptions;
15
+ export declare const executeSecretLifecycleCommand: (args: string[], options: DockerSecretLifecycleOptions, input?: {
16
+ readonly requireSilent?: boolean;
17
+ readonly stdin?: Uint8Array;
18
+ }) => Promise<{
19
+ stderr: string;
20
+ stdout: string;
21
+ }>;
22
+ export declare const inspectExactSecretVolume: (spec: DockerSecretSpec, options: DockerSecretLifecycleOptions) => Promise<"absent" | "present">;
23
+ export declare const inspectExactSecretWriter: (spec: DockerSecretSpec, options: DockerSecretLifecycleOptions) => Promise<"absent" | DockerSecretWriterState>;
24
+ /** Journal-free exact cleanup for one already-authorized secret binding. */
25
+ export declare const cleanupExactDockerSecretBindings: (rawAuthority: unknown, rawOptions: DockerSecretLifecycleOptions) => Promise<void>;