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,373 @@
1
+ import { Buffer } from "node:buffer";
2
+ import { types as nodeTypes } from "node:util";
3
+ import { z } from "zod";
4
+ import { targetResourceExportIndexSchema } from "./evidenceExportContract.js";
5
+ export { TARGET_EXPORT_INDEX_VERSION, targetResourceExportIndexSchema } from "./evidenceExportContract.js";
6
+ export const TARGET_RESOURCE_REQUEST_VERSION = "spawnfile.target-resource.request.v1";
7
+ export const TARGET_RESOURCE_RECEIPT_VERSION = "spawnfile.target-resource.receipt.v1";
8
+ export const SELECTED_TARGET_VERSION = "spawnfile.target-resource.selected-target.v1";
9
+ export const TARGET_JOURNAL_VERSION = "spawnfile.target-resource.journal.v1";
10
+ export const TARGET_OPERATION_LOOKUP_VERSION = "spawnfile.target-resource.operation-lookup.v1";
11
+ /**
12
+ * Read-only owner attestation. This is deliberately not a target-resource
13
+ * mutation: it neither reserves a journal operation nor grants a Docker
14
+ * capability to its caller.
15
+ */
16
+ export const TARGET_TOPOLOGY_ATTESTATION_REQUEST_VERSION = "spawnfile.target-topology-attestation.request.v1";
17
+ export const TARGET_TOPOLOGY_RECEIPT_VERSION = "spawnfile.target-topology-receipt.v1";
18
+ const identifierSchema = z.string().regex(/^[a-z][a-z0-9_-]{0,63}$/u);
19
+ const containerPathSchema = z.string().max(255).regex(/^\/(?:run|var\/lib)\/[A-Za-z0-9][A-Za-z0-9._/-]*$/u)
20
+ .refine((value) => !value.includes("//") && !value.endsWith("/")
21
+ && !value.split("/").some((part) => part === "." || part === ".."))
22
+ .refine((value) => value !== "/run/spawnfile-secrets"
23
+ && !value.startsWith("/run/spawnfile-secrets/")
24
+ && !"/run/spawnfile-secrets".startsWith(`${value}/`));
25
+ const RUN_ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/u;
26
+ export const runIdSchema = z.string()
27
+ .regex(RUN_ID_PATTERN)
28
+ .refine((value) => Buffer.byteLength(value, "utf8") <= 128)
29
+ .transform((value) => value);
30
+ export const parseRunId = (raw) => {
31
+ assertOrdinaryJsonGraph(raw);
32
+ return runIdSchema.parse(raw);
33
+ };
34
+ export const opaqueTargetHandleSchema = z.string().regex(/^opaque_[a-z0-9]{16,64}$/u).transform((value) => value);
35
+ export const parseOpaqueTargetHandle = (raw) => {
36
+ assertOrdinaryJsonGraph(raw);
37
+ return opaqueTargetHandleSchema.parse(raw);
38
+ };
39
+ const digestSchema = z.string().regex(/^sha256:[0-9a-f]{64}$/u);
40
+ const fingerprintSchema = z.string().regex(/^sha256:[0-9a-f]{32}$/u);
41
+ const revisionSchema = z.number().int().min(0).max(2_147_483_647);
42
+ const idempotencyKeySchema = z.string().regex(/^idem_[a-z0-9]{16,64}$/u);
43
+ const operationSchema = z.enum([
44
+ "select_target", "resolve_world_artifact", "prepare_secret_bindings", "create_data_network",
45
+ "create_evidence_volume", "attach_organization", "create_world_service", "start_world_service",
46
+ "stop_world_service", "detach_organization", "export_evidence_volume", "revoke_secret_bindings",
47
+ "cleanup_run", "recover_operation"
48
+ ]);
49
+ export const selectedTargetSchema = z.object({
50
+ fingerprint: fingerprintSchema,
51
+ handle: opaqueTargetHandleSchema
52
+ }).strict();
53
+ const mutationEnvelopeSchema = {
54
+ descriptor_digest: digestSchema,
55
+ expected_revision: revisionSchema,
56
+ idempotency_key: idempotencyKeySchema,
57
+ run_id: runIdSchema,
58
+ selected_target: selectedTargetSchema
59
+ };
60
+ const selectTargetRequestSchema = z.object({
61
+ idempotency_key: idempotencyKeySchema,
62
+ operation: z.literal("select_target"),
63
+ target_reference: identifierSchema,
64
+ version: z.literal(TARGET_RESOURCE_REQUEST_VERSION)
65
+ }).strict();
66
+ const resolveWorldArtifactRequestSchema = z.object({
67
+ ...mutationEnvelopeSchema,
68
+ artifact_manifest_digest: digestSchema,
69
+ operation: z.literal("resolve_world_artifact"),
70
+ version: z.literal(TARGET_RESOURCE_REQUEST_VERSION)
71
+ }).strict();
72
+ const prepareSecretBindingsRequestSchema = z.object({
73
+ ...mutationEnvelopeSchema,
74
+ bindings: z.array(z.object({ name: identifierSchema, scope: identifierSchema, source_handle: opaqueTargetHandleSchema }).strict()).min(1).max(32),
75
+ operation: z.literal("prepare_secret_bindings"),
76
+ version: z.literal(TARGET_RESOURCE_REQUEST_VERSION)
77
+ }).strict();
78
+ const createDataNetworkRequestSchema = z.object({ ...mutationEnvelopeSchema, operation: z.literal("create_data_network"), version: z.literal(TARGET_RESOURCE_REQUEST_VERSION) }).strict();
79
+ const createEvidenceVolumeRequestSchema = z.object({ ...mutationEnvelopeSchema, operation: z.literal("create_evidence_volume"), version: z.literal(TARGET_RESOURCE_REQUEST_VERSION) }).strict();
80
+ const attachOrganizationRequestSchema = z.object({
81
+ ...mutationEnvelopeSchema,
82
+ data_network_handle: opaqueTargetHandleSchema,
83
+ organization_handoff_handle: opaqueTargetHandleSchema,
84
+ operation: z.literal("attach_organization"),
85
+ version: z.literal(TARGET_RESOURCE_REQUEST_VERSION)
86
+ }).strict();
87
+ const createWorldServiceRequestSchema = z.object({
88
+ ...mutationEnvelopeSchema,
89
+ data_network_handle: opaqueTargetHandleSchema,
90
+ evidence_mount_path: containerPathSchema,
91
+ evidence_volume_handle: opaqueTargetHandleSchema,
92
+ operation: z.literal("create_world_service"),
93
+ secret_bindings_handle: opaqueTargetHandleSchema,
94
+ world_artifact_handle: opaqueTargetHandleSchema,
95
+ version: z.literal(TARGET_RESOURCE_REQUEST_VERSION)
96
+ }).strict();
97
+ const serviceRequest = (operation) => z.object({
98
+ ...mutationEnvelopeSchema,
99
+ operation: z.literal(operation),
100
+ world_service_handle: opaqueTargetHandleSchema,
101
+ version: z.literal(TARGET_RESOURCE_REQUEST_VERSION)
102
+ }).strict();
103
+ const detachOrganizationRequestSchema = z.object({
104
+ ...mutationEnvelopeSchema,
105
+ data_network_handle: opaqueTargetHandleSchema,
106
+ operation: z.literal("detach_organization"),
107
+ organization_attachment_handle: opaqueTargetHandleSchema,
108
+ version: z.literal(TARGET_RESOURCE_REQUEST_VERSION)
109
+ }).strict();
110
+ const exportEvidenceVolumeRequestSchema = z.object({ ...mutationEnvelopeSchema, evidence_volume_handle: opaqueTargetHandleSchema, operation: z.literal("export_evidence_volume"), version: z.literal(TARGET_RESOURCE_REQUEST_VERSION) }).strict();
111
+ const revokeSecretBindingsRequestSchema = z.object({ ...mutationEnvelopeSchema, operation: z.literal("revoke_secret_bindings"), secret_bindings_handle: opaqueTargetHandleSchema, version: z.literal(TARGET_RESOURCE_REQUEST_VERSION) }).strict();
112
+ const cleanupRunRequestSchema = z.object({
113
+ ...mutationEnvelopeSchema,
114
+ cleanup_policy: z.enum(["discard_evidence", "remove", "preserve_evidence"]),
115
+ evidence_volume_handle: opaqueTargetHandleSchema.optional(),
116
+ operation: z.literal("cleanup_run"),
117
+ organization_attachment_handle: opaqueTargetHandleSchema.optional(),
118
+ secret_bindings_handle: opaqueTargetHandleSchema.optional(),
119
+ version: z.literal(TARGET_RESOURCE_REQUEST_VERSION),
120
+ world_service_handle: opaqueTargetHandleSchema.optional()
121
+ }).strict();
122
+ const recoverOperationRequestSchema = z.object({ ...mutationEnvelopeSchema, operation: z.literal("recover_operation"), operation_handle: opaqueTargetHandleSchema, version: z.literal(TARGET_RESOURCE_REQUEST_VERSION) }).strict();
123
+ export const targetResourceRequestSchema = z.discriminatedUnion("operation", [
124
+ selectTargetRequestSchema, resolveWorldArtifactRequestSchema, prepareSecretBindingsRequestSchema,
125
+ createDataNetworkRequestSchema, createEvidenceVolumeRequestSchema, attachOrganizationRequestSchema,
126
+ createWorldServiceRequestSchema, serviceRequest("start_world_service"), serviceRequest("stop_world_service"),
127
+ detachOrganizationRequestSchema, exportEvidenceVolumeRequestSchema, revokeSecretBindingsRequestSchema,
128
+ cleanupRunRequestSchema, recoverOperationRequestSchema
129
+ ]);
130
+ const labelSchema = z.object({ key: identifierSchema, value: identifierSchema }).strict();
131
+ const receiptSchema = z.object({
132
+ cleanup_state: z.enum(["not_requested", "preserved", "removed", "incomplete"]).nullable(),
133
+ descriptor_digest: digestSchema.nullable(),
134
+ evidence_index: targetResourceExportIndexSchema.optional(),
135
+ export_state: z.enum(["not_requested", "exported", "incomplete"]).nullable(),
136
+ labels: z.array(labelSchema).max(16),
137
+ operation: operationSchema,
138
+ operation_handle: opaqueTargetHandleSchema,
139
+ receipt_digest: digestSchema,
140
+ request_digest: digestSchema,
141
+ result_handle: opaqueTargetHandleSchema.nullable(),
142
+ resulting_revision: revisionSchema.nullable(),
143
+ run_id: runIdSchema.nullable(),
144
+ selected_target: selectedTargetSchema.nullable(),
145
+ version: z.literal(TARGET_RESOURCE_RECEIPT_VERSION)
146
+ }).strict().superRefine((value, context) => {
147
+ const selection = value.operation === "select_target";
148
+ if (selection && (value.run_id !== null || value.selected_target === null))
149
+ context.addIssue({ code: z.ZodIssueCode.custom, message: "selection correlation is invalid" });
150
+ if (!selection && (value.run_id === null || value.selected_target === null || value.descriptor_digest === null || value.resulting_revision === null))
151
+ context.addIssue({ code: z.ZodIssueCode.custom, message: "mutation correlation is invalid" });
152
+ if (selection && (value.descriptor_digest !== null || value.resulting_revision !== null))
153
+ context.addIssue({ code: z.ZodIssueCode.custom, message: "selection mutation fields are invalid" });
154
+ if ((value.operation === "export_evidence_volume") !== (value.evidence_index !== undefined)) {
155
+ context.addIssue({ code: z.ZodIssueCode.custom, message: "evidence export index is invalid" });
156
+ }
157
+ if (value.evidence_index !== undefined && (value.export_state !== "exported"
158
+ || value.result_handle !== value.evidence_index.export_handle
159
+ || value.run_id !== value.evidence_index.run_id
160
+ || JSON.stringify(value.labels) !== JSON.stringify(value.evidence_index.labels))) {
161
+ context.addIssue({ code: z.ZodIssueCode.custom, message: "evidence export receipt is invalid" });
162
+ }
163
+ });
164
+ export const targetResourceReceiptSchema = receiptSchema;
165
+ export const selectedTargetReceiptSchema = z.object({ fingerprint: fingerprintSchema, handle: opaqueTargetHandleSchema, version: z.literal(SELECTED_TARGET_VERSION) }).strict();
166
+ const targetOperationLookupBaseSchema = {
167
+ idempotency_key: idempotencyKeySchema,
168
+ operation: operationSchema.exclude(["select_target"]),
169
+ request_digest: digestSchema,
170
+ version: z.literal(TARGET_OPERATION_LOOKUP_VERSION)
171
+ };
172
+ const targetOperationNotAppliedSchema = z.object({
173
+ ...targetOperationLookupBaseSchema,
174
+ status: z.literal("not_applied")
175
+ }).strict();
176
+ const targetOperationPendingSchema = z.object({
177
+ ...targetOperationLookupBaseSchema,
178
+ operation_handle: opaqueTargetHandleSchema,
179
+ status: z.literal("pending")
180
+ }).strict();
181
+ const targetOperationCompletedSchema = z.object({
182
+ ...targetOperationLookupBaseSchema,
183
+ operation_handle: opaqueTargetHandleSchema,
184
+ receipt: receiptSchema,
185
+ status: z.literal("completed")
186
+ }).strict().superRefine((value, context) => {
187
+ if (value.receipt.operation !== value.operation
188
+ || value.receipt.operation_handle !== value.operation_handle
189
+ || value.receipt.request_digest !== value.request_digest) {
190
+ context.addIssue({
191
+ code: z.ZodIssueCode.custom,
192
+ message: "lookup receipt correlation is invalid"
193
+ });
194
+ }
195
+ });
196
+ export const targetOperationLookupSchema = z.discriminatedUnion("status", [
197
+ targetOperationNotAppliedSchema,
198
+ targetOperationPendingSchema,
199
+ targetOperationCompletedSchema
200
+ ]);
201
+ const journalEntrySchema = z.object({ operation: operationSchema, operation_handle: opaqueTargetHandleSchema, receipt_digest: digestSchema, request_digest: digestSchema, state: z.enum(["pending", "completed", "incomplete"]) }).strict();
202
+ export const targetResourceJournalSchema = z.object({
203
+ descriptor_digest: digestSchema,
204
+ entries: z.array(journalEntrySchema).max(128),
205
+ revision: revisionSchema,
206
+ run_id: runIdSchema,
207
+ selected_target: selectedTargetSchema,
208
+ version: z.literal(TARGET_JOURNAL_VERSION)
209
+ }).strict();
210
+ const completedOperationSchema = z.object({
211
+ operation_handle: opaqueTargetHandleSchema,
212
+ request_digest: digestSchema,
213
+ result_handle: opaqueTargetHandleSchema
214
+ }).strict();
215
+ /**
216
+ * Public correlation packet for one already-created composed deployment. The
217
+ * owner resolves every handle against its private stores; these values are
218
+ * never Docker references.
219
+ */
220
+ export const targetTopologyAttestationRequestSchema = z.object({
221
+ data_network: completedOperationSchema,
222
+ descriptor_digest: digestSchema,
223
+ organization_attachment: completedOperationSchema,
224
+ run_id: runIdSchema,
225
+ selected_target: selectedTargetSchema,
226
+ version: z.literal(TARGET_TOPOLOGY_ATTESTATION_REQUEST_VERSION),
227
+ world_service: z.object({
228
+ create: completedOperationSchema,
229
+ start: completedOperationSchema
230
+ }).strict()
231
+ }).strict().superRefine((value, context) => {
232
+ if (value.world_service.create.result_handle !== value.world_service.start.result_handle) {
233
+ context.addIssue({ code: z.ZodIssueCode.custom, message: "world service handles disagree" });
234
+ }
235
+ const handles = [
236
+ value.data_network.result_handle,
237
+ value.organization_attachment.result_handle,
238
+ value.world_service.create.result_handle
239
+ ];
240
+ if (new Set(handles).size !== handles.length) {
241
+ context.addIssue({ code: z.ZodIssueCode.custom, message: "resource handles must be distinct" });
242
+ }
243
+ const operations = [
244
+ value.data_network.operation_handle,
245
+ value.organization_attachment.operation_handle,
246
+ value.world_service.create.operation_handle,
247
+ value.world_service.start.operation_handle
248
+ ];
249
+ if (new Set(operations).size !== operations.length) {
250
+ context.addIssue({ code: z.ZodIssueCode.custom, message: "operation handles must be distinct" });
251
+ }
252
+ });
253
+ /**
254
+ * Semantic-only projection. It intentionally excludes every Docker name,
255
+ * ID, context, endpoint, path, port value and provider observation.
256
+ */
257
+ export const targetTopologyReceiptSchema = z.object({
258
+ descriptor_digest: digestSchema,
259
+ handoff_scope: z.literal("organization_to_private_service"),
260
+ organization: z.object({
261
+ data_network_attachment: z.literal("exact"),
262
+ egress_policy: z.literal("egress_only")
263
+ }).strict(),
264
+ receipt_digest: digestSchema,
265
+ request_digest: digestSchema,
266
+ run_id: runIdSchema,
267
+ selected_target: selectedTargetSchema,
268
+ service_discovery: z.literal("dns_only"),
269
+ version: z.literal(TARGET_TOPOLOGY_RECEIPT_VERSION),
270
+ world_service: z.object({
271
+ data_network_attachment: z.literal("exactly_one"),
272
+ egress_policy: z.literal("none"),
273
+ published_ports: z.literal("none")
274
+ }).strict(),
275
+ world_network: z.literal("private_internal")
276
+ }).strict();
277
+ export const MAX_JSON_GRAPH_DEPTH = 32;
278
+ export const MAX_JSON_GRAPH_NODES = 1_024;
279
+ export const MAX_JSON_GRAPH_KEYS = 128;
280
+ export const MAX_JSON_GRAPH_STRING_BYTES = 65_536;
281
+ const JSON_GRAPH_ERROR = "invalid JSON-like graph";
282
+ const ARRAY_INDEX = /^(?:0|[1-9][0-9]*)$/u;
283
+ export const assertOrdinaryJsonGraph = (raw) => {
284
+ try {
285
+ const seen = new WeakSet();
286
+ const pending = [{ value: raw, depth: 0 }];
287
+ let nodes = 0;
288
+ let stringBytes = 0;
289
+ while (pending.length > 0) {
290
+ const item = pending.pop();
291
+ const value = item.value;
292
+ if (typeof value === "string") {
293
+ stringBytes += Buffer.byteLength(value, "utf8");
294
+ if (stringBytes > MAX_JSON_GRAPH_STRING_BYTES)
295
+ throw new Error();
296
+ continue;
297
+ }
298
+ if (value === null || typeof value === "boolean")
299
+ continue;
300
+ if (typeof value === "number") {
301
+ if (!Number.isFinite(value))
302
+ throw new Error();
303
+ continue;
304
+ }
305
+ if (typeof value !== "object" || nodeTypes.isProxy(value))
306
+ throw new Error();
307
+ if (item.depth > MAX_JSON_GRAPH_DEPTH || seen.has(value))
308
+ throw new Error();
309
+ seen.add(value);
310
+ nodes += 1;
311
+ if (nodes > MAX_JSON_GRAPH_NODES)
312
+ throw new Error();
313
+ if (Array.isArray(value)) {
314
+ if (Object.getPrototypeOf(value) !== Array.prototype)
315
+ throw new Error();
316
+ const length = Object.getOwnPropertyDescriptor(value, "length");
317
+ if (!length || !("value" in length) || !Number.isSafeInteger(length.value)
318
+ || length.enumerable || length.configurable || length.value > MAX_JSON_GRAPH_KEYS)
319
+ throw new Error();
320
+ const keys = Reflect.ownKeys(value);
321
+ if (keys.length !== length.value + 1 || keys.length > MAX_JSON_GRAPH_KEYS + 1)
322
+ throw new Error();
323
+ for (let index = 0; index < length.value; index += 1) {
324
+ const key = String(index);
325
+ if (!ARRAY_INDEX.test(key))
326
+ throw new Error();
327
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
328
+ if (!descriptor || !("value" in descriptor) || !descriptor.enumerable)
329
+ throw new Error();
330
+ pending.push({ value: descriptor.value, depth: item.depth + 1 });
331
+ }
332
+ continue;
333
+ }
334
+ const prototype = Object.getPrototypeOf(value);
335
+ if (prototype !== Object.prototype && prototype !== null)
336
+ throw new Error();
337
+ const keys = Reflect.ownKeys(value);
338
+ if (keys.length > MAX_JSON_GRAPH_KEYS)
339
+ throw new Error();
340
+ for (const key of keys) {
341
+ if (typeof key !== "string")
342
+ throw new Error();
343
+ stringBytes += Buffer.byteLength(key, "utf8");
344
+ if (stringBytes > MAX_JSON_GRAPH_STRING_BYTES)
345
+ throw new Error();
346
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
347
+ if (!descriptor || !("value" in descriptor) || !descriptor.enumerable)
348
+ throw new Error();
349
+ pending.push({ value: descriptor.value, depth: item.depth + 1 });
350
+ }
351
+ }
352
+ }
353
+ catch {
354
+ throw new TypeError(JSON_GRAPH_ERROR);
355
+ }
356
+ };
357
+ export const parseTargetResourceRequest = (raw) => { assertOrdinaryJsonGraph(raw); return targetResourceRequestSchema.parse(raw); };
358
+ export const parseTargetResourceReceipt = (raw) => { assertOrdinaryJsonGraph(raw); return targetResourceReceiptSchema.parse(raw); };
359
+ export const parseSelectedTargetReceipt = (raw) => { assertOrdinaryJsonGraph(raw); return selectedTargetReceiptSchema.parse(raw); };
360
+ export const parseTargetResourceJournal = (raw) => { assertOrdinaryJsonGraph(raw); return targetResourceJournalSchema.parse(raw); };
361
+ export const parseTargetResourceExportIndex = (raw) => { assertOrdinaryJsonGraph(raw); return targetResourceExportIndexSchema.parse(raw); };
362
+ export const parseTargetOperationLookup = (raw) => {
363
+ assertOrdinaryJsonGraph(raw);
364
+ return targetOperationLookupSchema.parse(raw);
365
+ };
366
+ export const parseTargetTopologyAttestationRequest = (raw) => {
367
+ assertOrdinaryJsonGraph(raw);
368
+ return targetTopologyAttestationRequestSchema.parse(raw);
369
+ };
370
+ export const parseTargetTopologyReceipt = (raw) => {
371
+ assertOrdinaryJsonGraph(raw);
372
+ return targetTopologyReceiptSchema.parse(raw);
373
+ };
@@ -0,0 +1,56 @@
1
+ import type { OpaqueTargetHandle } from "./contracts.js";
2
+ export interface DockerOciArtifactIdentityBinding {
3
+ readonly artifactManifestDigest: string;
4
+ /** Omitted only at the in-process writer API; persisted records always carry it. */
5
+ readonly identityKind?: "oci_image_manifest";
6
+ readonly imageDigest: string;
7
+ readonly imageReference: string;
8
+ readonly operationHandle: OpaqueTargetHandle;
9
+ readonly requestDigest: string;
10
+ readonly resultHandle: OpaqueTargetHandle;
11
+ readonly selectedTargetHandle: OpaqueTargetHandle;
12
+ }
13
+ export interface DockerConfigArtifactIdentityBinding {
14
+ readonly archiveDigest: string;
15
+ readonly artifactManifestDigest: string;
16
+ readonly baseImageConfigDigest: string;
17
+ readonly buildPolicyDigest: string;
18
+ readonly bundleDigest: string;
19
+ readonly configId: string;
20
+ readonly daemonEpoch: string;
21
+ readonly entrypoint: string;
22
+ /** Private deterministic GC anchor paired with this local config identity. */
23
+ readonly gcTag: string;
24
+ readonly identityKind: "docker_image_config_digest";
25
+ readonly launcherDigest: string;
26
+ readonly networkAlias: string;
27
+ readonly operationHandle: OpaqueTargetHandle;
28
+ readonly requestDigest: string;
29
+ readonly resultHandle: OpaqueTargetHandle;
30
+ readonly selectedTargetHandle: OpaqueTargetHandle;
31
+ readonly platform: {
32
+ readonly architecture: "amd64" | "arm64";
33
+ readonly os: "linux";
34
+ };
35
+ readonly platformDigest: string;
36
+ /** Exact bundle-prepare authority that minted gcTag/configId. */
37
+ readonly preparedOperationHandle: OpaqueTargetHandle;
38
+ readonly preparedRequestDigest: string;
39
+ }
40
+ /** Private authority only; persisted discriminator prevents variant confusion. */
41
+ export type DockerArtifactIdentityBinding = DockerOciArtifactIdentityBinding | DockerConfigArtifactIdentityBinding;
42
+ export interface DockerArtifactIdentityStore {
43
+ bind(input: DockerArtifactIdentityBinding): Promise<void>;
44
+ /** Exact private lookup; there is intentionally no result inverse or listing API. */
45
+ resolveOperation(operationHandle: OpaqueTargetHandle, requestDigest: string): Promise<DockerArtifactIdentityBinding | null>;
46
+ }
47
+ export interface DockerArtifactIdentityStoreOptions {
48
+ /** Test-only crash seam: runs after durable pending creation and before final linking. */
49
+ readonly beforePublish?: () => Promise<void>;
50
+ /** Test-only race seam after O_EXCL observes a pending name and before re-read. */
51
+ readonly afterPendingExists?: () => Promise<void>;
52
+ /** Test-only race seam after an exact pending proof and before its link attempt. */
53
+ readonly beforeLink?: () => Promise<void>;
54
+ /** Test-only crash seam: runs after the final link and before pending cleanup. */
55
+ readonly afterLinkBeforePendingUnlink?: () => Promise<void>;
56
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,40 @@
1
+ import { type OpaqueTargetHandle } from "./contracts.js";
2
+ import { type DockerArtifactExecutor, type DockerArtifactSpec, type DockerConfigArtifactSpec } from "./dockerArtifactsProvider.js";
3
+ export declare const createDockerArtifactSpec: (input: {
4
+ artifactManifestDigest: string;
5
+ imageDigest: string;
6
+ imageReference: string;
7
+ operationHandle: OpaqueTargetHandle;
8
+ requestDigest: string;
9
+ selectedTargetHandle: OpaqueTargetHandle;
10
+ }) => DockerArtifactSpec;
11
+ export declare const createDockerConfigArtifactSpec: (input: {
12
+ archiveDigest: string;
13
+ artifactManifestDigest: string;
14
+ baseImageConfigDigest: string;
15
+ buildPolicyDigest: string;
16
+ bundleDigest: string;
17
+ configId: string;
18
+ daemonEpoch: string;
19
+ entrypoint: string;
20
+ launcherDigest: string;
21
+ networkAlias: string;
22
+ operationHandle: OpaqueTargetHandle;
23
+ requestDigest: string;
24
+ selectedTargetHandle: OpaqueTargetHandle;
25
+ platform: {
26
+ readonly architecture: "amd64" | "arm64";
27
+ readonly os: "linux";
28
+ };
29
+ platformDigest: string;
30
+ }) => DockerConfigArtifactSpec;
31
+ export declare const executeDockerArtifact: (input: {
32
+ args: string[];
33
+ executor: DockerArtifactExecutor;
34
+ signal?: AbortSignal;
35
+ timeoutMs: number;
36
+ }) => Promise<{
37
+ stderr: string;
38
+ stdout: string;
39
+ }>;
40
+ export declare const isExpectedDockerArtifact: (stdout: string, spec: DockerArtifactSpec) => boolean;
@@ -0,0 +1,125 @@
1
+ import { Buffer } from "node:buffer";
2
+ import { createHash } from "node:crypto";
3
+ import { assertOrdinaryJsonGraph, parseOpaqueTargetHandle } from "./contracts.js";
4
+ import { isImmutableDockerImageReference } from "./dockerArtifactsProvider.js";
5
+ const ERROR = "Docker artifact resolution failed";
6
+ const DIGEST = /^sha256:[0-9a-f]{64}$/u;
7
+ const fail = () => { throw new Error(ERROR); };
8
+ const digest = (domain, value) => createHash("sha256")
9
+ .update(`spawnfile.target-artifact.${domain}.v1\0`, "utf8").update(value, "utf8").digest("hex");
10
+ const label = (prefix, value) => `${prefix}${digest("label", value).slice(0, 63)}`;
11
+ const validDigest = (value) => typeof value === "string" && DIGEST.test(value);
12
+ const reference = (value) => isImmutableDockerImageReference(value);
13
+ export const createDockerArtifactSpec = (input) => {
14
+ if (!validDigest(input.artifactManifestDigest) || !validDigest(input.imageDigest) || !validDigest(input.requestDigest)
15
+ || !reference(input.imageReference) || !input.imageReference.endsWith(`@${input.imageDigest}`))
16
+ return fail();
17
+ parseOpaqueTargetHandle(input.operationHandle);
18
+ parseOpaqueTargetHandle(input.selectedTargetHandle);
19
+ const authority = `${input.operationHandle}\0${input.requestDigest}\0${input.artifactManifestDigest}\0${input.imageDigest}`;
20
+ return Object.freeze({ imageDigest: input.imageDigest, imageReference: input.imageReference,
21
+ inspectionFormat: "[{\"RepoDigests\":{{json .RepoDigests}}}]",
22
+ labels: Object.freeze({ spawnfile_artifact_v1_image: label("i", input.imageDigest), spawnfile_artifact_v1_kind: "world_artifact",
23
+ spawnfile_artifact_v1_manifest: label("m", input.artifactManifestDigest), spawnfile_artifact_v1_operation: label("o", `${input.operationHandle}\0${input.requestDigest}`),
24
+ spawnfile_artifact_v1_target: label("t", input.selectedTargetHandle), spawnfile_artifact_v1_version: "v1" }),
25
+ resultHandle: parseOpaqueTargetHandle(`opaque_${digest("result", authority)}`) });
26
+ };
27
+ export const createDockerConfigArtifactSpec = (input) => {
28
+ if (![input.archiveDigest, input.artifactManifestDigest, input.baseImageConfigDigest, input.buildPolicyDigest, input.bundleDigest, input.configId, input.daemonEpoch, input.launcherDigest, input.platformDigest, input.requestDigest].every(validDigest)
29
+ || !/^[A-Za-z0-9][A-Za-z0-9._/-]{0,239}$/u.test(input.entrypoint) || input.entrypoint.includes("//") || input.entrypoint.split("/").some((part) => part === "." || part === "..")
30
+ || !/^[a-z][a-z0-9-]{0,62}$/u.test(input.networkAlias) || (input.platform.architecture !== "amd64" && input.platform.architecture !== "arm64") || input.platform.os !== "linux")
31
+ return fail();
32
+ parseOpaqueTargetHandle(input.operationHandle);
33
+ parseOpaqueTargetHandle(input.selectedTargetHandle);
34
+ const authority = [input.operationHandle, input.requestDigest, input.archiveDigest, input.artifactManifestDigest, input.baseImageConfigDigest, input.bundleDigest, input.buildPolicyDigest, input.configId, input.daemonEpoch, input.entrypoint, input.launcherDigest, input.networkAlias, input.platform.os, input.platform.architecture, input.platformDigest].join("\0");
35
+ return Object.freeze({ configId: input.configId, imageDigest: input.configId, imageReference: input.configId,
36
+ labels: Object.freeze({ spawnfile_artifact_v1_config: label("c", input.configId), spawnfile_artifact_v1_kind: "world_artifact",
37
+ spawnfile_artifact_v1_manifest: label("m", input.artifactManifestDigest), spawnfile_artifact_v1_operation: label("o", `${input.operationHandle}\0${input.requestDigest}`),
38
+ spawnfile_artifact_v1_target: label("t", input.selectedTargetHandle), spawnfile_artifact_v1_version: "v1" }),
39
+ resultHandle: parseOpaqueTargetHandle(`opaque_${digest("config-result", authority)}`) });
40
+ };
41
+ const bounded = (value) => typeof value === "string" && Buffer.byteLength(value, "utf8") <= 32_768 && Buffer.from(value, "utf8").toString("utf8") === value;
42
+ export const executeDockerArtifact = async (input) => {
43
+ try {
44
+ const result = await input.executor("docker", input.args, { signal: input.signal, timeout: input.timeoutMs });
45
+ if (!result || !bounded(result.stdout) || !bounded(result.stderr))
46
+ return fail();
47
+ return result;
48
+ }
49
+ catch {
50
+ return fail();
51
+ }
52
+ };
53
+ const skip = (source, index) => { while (/[\t\n\r ]/u.test(source[index] ?? ""))
54
+ index += 1; return index; };
55
+ const stringEnd = (source, index) => { for (let cursor = index + 1; cursor < source.length; cursor += 1) {
56
+ if (source[cursor] === "\\") {
57
+ cursor += 1;
58
+ continue;
59
+ }
60
+ if (source[cursor] === "\"")
61
+ return cursor + 1;
62
+ } return fail(); };
63
+ const uniqueJson = (source, start) => {
64
+ let index = skip(source, start);
65
+ const token = source[index];
66
+ if (token === "\"")
67
+ return stringEnd(source, index);
68
+ if (token === "{") {
69
+ index = skip(source, index + 1);
70
+ const keys = new Set();
71
+ if (source[index] === "}")
72
+ return index + 1;
73
+ while (true) {
74
+ if (source[index] !== "\"")
75
+ return fail();
76
+ const end = stringEnd(source, index);
77
+ const key = JSON.parse(source.slice(index, end));
78
+ if (keys.has(key))
79
+ return fail();
80
+ keys.add(key);
81
+ index = skip(source, end);
82
+ if (source[index] !== ":")
83
+ return fail();
84
+ index = skip(source, uniqueJson(source, index + 1));
85
+ if (source[index] === "}")
86
+ return index + 1;
87
+ if (source[index] !== ",")
88
+ return fail();
89
+ index = skip(source, index + 1);
90
+ }
91
+ }
92
+ if (token === "[") {
93
+ index = skip(source, index + 1);
94
+ if (source[index] === "]")
95
+ return index + 1;
96
+ while (true) {
97
+ index = skip(source, uniqueJson(source, index));
98
+ if (source[index] === "]")
99
+ return index + 1;
100
+ if (source[index] !== ",")
101
+ return fail();
102
+ index = skip(source, index + 1);
103
+ }
104
+ }
105
+ const end = source.slice(index).search(/[\t\n\r ,}\]]/u);
106
+ if (end === 0)
107
+ return fail();
108
+ return end < 0 ? source.length : index + end;
109
+ };
110
+ const parse = (stdout) => { if (!bounded(stdout) || skip(stdout, uniqueJson(stdout, 0)) !== stdout.length)
111
+ return fail(); const value = JSON.parse(stdout); assertOrdinaryJsonGraph(value); return value; };
112
+ export const isExpectedDockerArtifact = (stdout, spec) => {
113
+ try {
114
+ const value = parse(stdout);
115
+ if (!Array.isArray(value) || value.length !== 1 || !value[0] || typeof value[0] !== "object" || Array.isArray(value[0]))
116
+ return false;
117
+ const item = value[0];
118
+ const repo = item.RepoDigests;
119
+ return Object.keys(item).length === 1 && Array.isArray(repo) && repo.length > 0 && repo.length <= 32 && repo.every(reference)
120
+ && new Set(repo).size === repo.length && repo.includes(spec.imageReference);
121
+ }
122
+ catch {
123
+ return false;
124
+ }
125
+ };
@@ -0,0 +1,21 @@
1
+ import { type TargetResourceReceipt } from "./contracts.js";
2
+ import { type DockerArtifactExecutor, type DockerArtifactIdentityStore } from "./dockerArtifactsProvider.js";
3
+ import { type TargetJournalStore } from "./journal.js";
4
+ type ArtifactResult = {
5
+ readonly receipt: TargetResourceReceipt;
6
+ readonly receiptBytes: string;
7
+ };
8
+ export interface DockerArtifactOperationsOptions {
9
+ readonly context: unknown;
10
+ readonly executor: DockerArtifactExecutor;
11
+ readonly identityStore: DockerArtifactIdentityStore;
12
+ readonly journal: TargetJournalStore;
13
+ readonly mappings: unknown;
14
+ readonly signal?: AbortSignal;
15
+ readonly timeoutMs?: unknown;
16
+ }
17
+ export interface DockerArtifactOperations {
18
+ execute(raw: unknown): Promise<ArtifactResult>;
19
+ }
20
+ export declare const createDockerArtifactOperations: (options: DockerArtifactOperationsOptions) => DockerArtifactOperations;
21
+ export {};