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,37 @@
1
+ import { DEFAULT_PAYLOAD_MINIMUMS } from "../ledger/index.js";
2
+ export const notApplicable = (id, category, severity, reason) => ({
3
+ category,
4
+ evidence: { reason },
5
+ id,
6
+ severity,
7
+ status: "not_applicable"
8
+ });
9
+ export const statusFor = (ok) => (ok ? "pass" : "fail");
10
+ /** `conformance.ts`'s `checkPayloadMinimums` is not exported (it is that module's private helper); this is the same one-line key-presence rule applied directly to already-parsed events, not a reimplementation of `validateConformanceSources`'s schema/seq/stitch pipeline. */
11
+ export const missingRequiredKeys = (event, requiredKeys) => requiredKeys.filter((key) => !(key in event.payload) || event.payload[key] === undefined);
12
+ export const DENIAL_MINIMUMS_BY_TYPE = new Map(DEFAULT_PAYLOAD_MINIMUMS.filter((minimum) => minimum.type.endsWith(".denied")).map((minimum) => [
13
+ minimum.type,
14
+ minimum.requiredKeys
15
+ ]));
16
+ /** Env name gating the operator-only wake endpoint (appControlSource.ts:45, `CONTROL_TOKEN_ENV`). */
17
+ export const CONTROL_TOKEN_ENV = "SPAWNFILE_PI_CONTROL_TOKEN";
18
+ /**
19
+ * Verbatim source-text substring of appControlSource.ts:75's fail-closed
20
+ * rejection branch (`return { ok: false, reason: "no operator token
21
+ * configured (" + CONTROL_TOKEN_ENV + " is unset)" }`). The literal string
22
+ * checked here is only the first concatenated chunk — the source
23
+ * concatenates `CONTROL_TOKEN_ENV` in with `+`, so the fully-assembled
24
+ * runtime message never appears as one literal in the source text itself.
25
+ * Its presence is direct evidence the fail-closed branch was actually
26
+ * emitted, not paraphrased.
27
+ */
28
+ export const FAIL_CLOSED_MARKER = "no operator token configured (";
29
+ export const escapeRegExp = (value) => value.replace(/[.*+?^${}()|[\]\\]/gu, "\\$&");
30
+ /**
31
+ * Matches a literal (non-`$`-expansion) shell/Dockerfile assignment
32
+ * `NAME=<value>` — never a `require_env 'NAME'` call (no `=` follows the
33
+ * name there at all) and never a same-name passthrough reference like
34
+ * `NAME="$NAME"`/`NAME=${NAME}` (an optional quote followed by `$`), both of
35
+ * which read the env rather than bake a value into it.
36
+ */
37
+ export const literalAssignmentPattern = (name) => new RegExp(`\\b${escapeRegExp(name)}=(?!['"]?\\$)\\S`, "u");
@@ -0,0 +1,19 @@
1
+ import type { AuditReport } from "./types.js";
2
+ export interface GenerateAuditOptions {
3
+ /** Required. The compiled-output directory (`spawnfile compile`'s emitted `Dockerfile`, `entrypoint.sh`, and — for a Pi-targeted compile — `runtime/app.mjs`). Static checks 3-4 always evaluate pass/fail against whatever is (or is not) present here; a missing file reads as an empty string, never a silent skip. */
4
+ compiledOutputDirPath: string;
5
+ /** Optional. A directory of `*.jsonl` ledger fixture files plus an optional `expected-denials.json` manifest (see checks.ts's `RunLedgerEvidence`). Omitting it (or an empty directory) is what makes run-mode checks 1, 2, 5, 6 report `not_applicable` — they never `pass` without it. */
6
+ ledgerDirPath?: string;
7
+ /** Injectable clock for `generated_at`, defaulting to `() => new Date()`. Every other report field is deterministic given the same inputs. */
8
+ now?: () => Date;
9
+ /** Secret env var NAMES this compile declared required (`requiredSecrets` passed to `renderEntrypoint`). Defaults to `[]`. */
10
+ requiredSecrets?: string[];
11
+ }
12
+ /**
13
+ * Orchestrator: the only I/O-performing function in src/audit/. Reads the
14
+ * compiled-output directory and, if given, the ledger directory, then runs
15
+ * the seven pure checks (checks.ts) and assembles the `AuditReport`.
16
+ * Deterministic across repeated calls with the same inputs except for
17
+ * `generated_at`.
18
+ */
19
+ export declare const generateAudit: (options: GenerateAuditOptions) => Promise<AuditReport>;
@@ -0,0 +1,122 @@
1
+ import { readdir } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { fileExists, readUtf8File } from "../filesystem/index.js";
4
+ import { runRealConformance } from "../ledger/index.js";
5
+ import { checkContainerNoBakedSecrets, checkControlWakeFailClosed, checkDeniedLedgerVisible, checkMemoryCrossScopeCapability, checkNonMemberWriteDenied, checkPrincipalsAuthenticated, checkProvenanceSignedReport } from "./checks.js";
6
+ import { SPAWNFILE_AUDIT_SCHEMA } from "./types.js";
7
+ const readOptionalFile = async (filePath) => (await fileExists(filePath)) ? readUtf8File(filePath) : "";
8
+ const readExpectedDenials = async (ledgerDirPath) => {
9
+ const manifestPath = path.join(ledgerDirPath, "expected-denials.json");
10
+ if (!(await fileExists(manifestPath))) {
11
+ return { expectedDenialTypes: [], manifestPresent: false };
12
+ }
13
+ const raw = await readUtf8File(manifestPath);
14
+ const parsed = JSON.parse(raw);
15
+ if (!Array.isArray(parsed.expectedDenialTypes)) {
16
+ return { expectedDenialTypes: [], manifestPresent: true };
17
+ }
18
+ return {
19
+ expectedDenialTypes: parsed.expectedDenialTypes.filter((value) => typeof value === "string"),
20
+ manifestPresent: true
21
+ };
22
+ };
23
+ /**
24
+ * Reads every `*.jsonl` file in `ledgerDirPath` and feeds it to
25
+ * `runRealConformance` (src/ledger/conformance.ts) through an injected
26
+ * `exec` that returns each file's pre-read text instead of spawning a real
27
+ * sibling emitter process. This is what keeps the whole B54 generator
28
+ * offline while still reusing `runRealConformance`'s real schema/seq/
29
+ * payload-minimum/principal-grammar/chain-stitch pipeline rather than
30
+ * reimplementing any of it — see src/ledger/emitters.ts for the `Exec`/
31
+ * `EmitterSpec` contract this fills in. Returns `undefined` (never an empty
32
+ * evidence object) when the directory has no `*.jsonl` files, so callers can
33
+ * distinguish "no run artifacts" from "ledger with zero events".
34
+ */
35
+ const collectRunLedgerEvidence = async (ledgerDirPath) => {
36
+ const entries = await readdir(ledgerDirPath, { withFileTypes: true }).catch(() => []);
37
+ const jsonlFileNames = entries
38
+ .filter((entry) => entry.isFile() && entry.name.endsWith(".jsonl"))
39
+ .map((entry) => entry.name)
40
+ .sort((left, right) => left.localeCompare(right));
41
+ if (jsonlFileNames.length === 0) {
42
+ return undefined;
43
+ }
44
+ const contentByFileName = new Map();
45
+ for (const fileName of jsonlFileNames) {
46
+ contentByFileName.set(fileName, await readUtf8File(path.join(ledgerDirPath, fileName)));
47
+ }
48
+ const specs = jsonlFileNames.map((fileName) => ({
49
+ command: [fileName],
50
+ cwd: ledgerDirPath,
51
+ name: fileName.replace(/\.jsonl$/u, ""),
52
+ output: "stdout-jsonl"
53
+ }));
54
+ // Offline exec: returns the pre-read fixture text for the named source,
55
+ // never spawns a process. Matches src/ledger/emitters.ts's `Exec` contract.
56
+ const exec = (spec) => Promise.resolve({
57
+ exitCode: 0,
58
+ stderr: "",
59
+ stdout: contentByFileName.get(`${spec.name}.jsonl`) ?? "",
60
+ timedOut: false
61
+ });
62
+ const report = await runRealConformance({ exec, specs });
63
+ const { expectedDenialTypes, manifestPresent } = await readExpectedDenials(ledgerDirPath);
64
+ return {
65
+ eventCount: report.eventCount,
66
+ events: report.events,
67
+ expectedDenialTypes,
68
+ issues: report.issues,
69
+ manifestPresent,
70
+ sources: report.sourceCounts.map((entry) => entry.source)
71
+ };
72
+ };
73
+ const collectStaticEvidence = async (compiledOutputDirPath, requiredSecrets) => ({
74
+ dockerfile: await readOptionalFile(path.join(compiledOutputDirPath, "Dockerfile")),
75
+ entrypoint: await readOptionalFile(path.join(compiledOutputDirPath, "entrypoint.sh")),
76
+ piAppSource: await readOptionalFile(path.join(compiledOutputDirPath, "runtime", "app.mjs")),
77
+ requiredSecrets
78
+ });
79
+ const summarize = (checks) => ({
80
+ failed: checks.filter((check) => check.status === "fail").length,
81
+ na: checks.filter((check) => check.status === "not_applicable").length,
82
+ passed: checks.filter((check) => check.status === "pass").length
83
+ });
84
+ /** `null` unless every ledger event shares one `run_id` (see specs/CAUSAL.md — a single audit always covers one run). */
85
+ const resolveRunId = (events) => {
86
+ if (events.length === 0) {
87
+ return null;
88
+ }
89
+ const runIds = new Set(events.map((event) => event.run_id));
90
+ return runIds.size === 1 ? runIds.values().next().value : null;
91
+ };
92
+ /**
93
+ * Orchestrator: the only I/O-performing function in src/audit/. Reads the
94
+ * compiled-output directory and, if given, the ledger directory, then runs
95
+ * the seven pure checks (checks.ts) and assembles the `AuditReport`.
96
+ * Deterministic across repeated calls with the same inputs except for
97
+ * `generated_at`.
98
+ */
99
+ export const generateAudit = async (options) => {
100
+ const now = options.now ?? (() => new Date());
101
+ const requiredSecrets = options.requiredSecrets ?? [];
102
+ const [ledgerEvidence, staticEvidence] = await Promise.all([
103
+ options.ledgerDirPath ? collectRunLedgerEvidence(options.ledgerDirPath) : Promise.resolve(undefined),
104
+ collectStaticEvidence(options.compiledOutputDirPath, requiredSecrets)
105
+ ]);
106
+ const checks = [
107
+ checkPrincipalsAuthenticated(ledgerEvidence),
108
+ checkDeniedLedgerVisible(ledgerEvidence),
109
+ checkControlWakeFailClosed(staticEvidence),
110
+ checkContainerNoBakedSecrets(staticEvidence),
111
+ checkMemoryCrossScopeCapability(ledgerEvidence),
112
+ checkNonMemberWriteDenied(ledgerEvidence),
113
+ checkProvenanceSignedReport()
114
+ ];
115
+ return {
116
+ checks,
117
+ generated_at: now().toISOString(),
118
+ run_id: ledgerEvidence ? resolveRunId(ledgerEvidence.events) : null,
119
+ schema: SPAWNFILE_AUDIT_SCHEMA,
120
+ summary: summarize(checks)
121
+ };
122
+ };
@@ -0,0 +1,4 @@
1
+ export * from "./checks.js";
2
+ export * from "./generateAudit.js";
3
+ export * from "./readAudit.js";
4
+ export * from "./types.js";
@@ -0,0 +1,4 @@
1
+ export * from "./checks.js";
2
+ export * from "./generateAudit.js";
3
+ export * from "./readAudit.js";
4
+ export * from "./types.js";
@@ -0,0 +1,50 @@
1
+ import { z } from "zod";
2
+ import type { AuditReport } from "./types.js";
3
+ export declare const auditReportSchema: z.ZodObject<{
4
+ checks: z.ZodArray<z.ZodObject<{
5
+ category: z.ZodEnum<{
6
+ provenance: "provenance";
7
+ causal: "causal";
8
+ container: "container";
9
+ control: "control";
10
+ memory: "memory";
11
+ network: "network";
12
+ }>;
13
+ evidence: z.ZodRecord<z.ZodString, z.ZodUnknown>;
14
+ id: z.ZodString;
15
+ severity: z.ZodEnum<{
16
+ critical: "critical";
17
+ high: "high";
18
+ medium: "medium";
19
+ }>;
20
+ status: z.ZodEnum<{
21
+ pass: "pass";
22
+ fail: "fail";
23
+ not_applicable: "not_applicable";
24
+ }>;
25
+ }, z.core.$strict>>;
26
+ generated_at: z.ZodString;
27
+ run_id: z.ZodNullable<z.ZodString>;
28
+ schema: z.ZodLiteral<"spawnfile.audit.v1">;
29
+ summary: z.ZodObject<{
30
+ failed: z.ZodNumber;
31
+ na: z.ZodNumber;
32
+ passed: z.ZodNumber;
33
+ }, z.core.$strict>;
34
+ }, z.core.$strict>;
35
+ export interface AuditReadError {
36
+ message: string;
37
+ }
38
+ /**
39
+ * Safe (non-throwing) validator. Rejects an unknown `schema` string as a
40
+ * top-level structural mismatch — `z.literal` already fails it — rather
41
+ * than accepting any string and comparing separately, so a caller cannot
42
+ * bypass the schema gate with a structurally-valid-but-wrong-version report.
43
+ */
44
+ export declare const validateAuditReport: (value: unknown) => {
45
+ report: AuditReport;
46
+ } | {
47
+ error: AuditReadError;
48
+ };
49
+ /** Throwing counterpart of `validateAuditReport`, mirroring `envelope.ts`'s `parseCausalEvent`. */
50
+ export declare const readAuditReport: (value: unknown) => AuditReport;
@@ -0,0 +1,59 @@
1
+ import { z } from "zod";
2
+ import { SPAWNFILE_AUDIT_SCHEMA } from "./types.js";
3
+ /**
4
+ * Pure reader/validator for an existing `spawnfile.audit.v1` report — the
5
+ * `envelope.ts` precedent (a zod schema mirroring the hand-written
6
+ * `AuditReport` interface, plus a `parse*`/`validate*` pair). No I/O:
7
+ * callers pass already-read JSON (typically `JSON.parse`d from a file
8
+ * `generateAudit.ts` wrote), this module only checks shape.
9
+ */
10
+ const auditCheckSchema = z
11
+ .object({
12
+ category: z.enum(["causal", "container", "control", "memory", "network", "provenance"]),
13
+ evidence: z.record(z.string(), z.unknown()),
14
+ id: z.string().min(1),
15
+ severity: z.enum(["critical", "high", "medium"]),
16
+ status: z.enum(["pass", "fail", "not_applicable"])
17
+ })
18
+ .strict();
19
+ const auditSummarySchema = z
20
+ .object({
21
+ failed: z.number().int().min(0),
22
+ na: z.number().int().min(0),
23
+ passed: z.number().int().min(0)
24
+ })
25
+ .strict();
26
+ export const auditReportSchema = z
27
+ .object({
28
+ checks: z.array(auditCheckSchema),
29
+ generated_at: z.string().min(1),
30
+ run_id: z.string().min(1).nullable(),
31
+ schema: z.literal(SPAWNFILE_AUDIT_SCHEMA),
32
+ summary: auditSummarySchema
33
+ })
34
+ .strict();
35
+ /**
36
+ * Safe (non-throwing) validator. Rejects an unknown `schema` string as a
37
+ * top-level structural mismatch — `z.literal` already fails it — rather
38
+ * than accepting any string and comparing separately, so a caller cannot
39
+ * bypass the schema gate with a structurally-valid-but-wrong-version report.
40
+ */
41
+ export const validateAuditReport = (value) => {
42
+ const result = auditReportSchema.safeParse(value);
43
+ if (!result.success) {
44
+ return {
45
+ error: {
46
+ message: result.error.issues.map((issue) => `${issue.path.join(".")}: ${issue.message}`).join("; ")
47
+ }
48
+ };
49
+ }
50
+ return { report: result.data };
51
+ };
52
+ /** Throwing counterpart of `validateAuditReport`, mirroring `envelope.ts`'s `parseCausalEvent`. */
53
+ export const readAuditReport = (value) => {
54
+ const result = validateAuditReport(value);
55
+ if ("error" in result) {
56
+ throw new Error(`invalid spawnfile.audit.v1 report: ${result.error.message}`);
57
+ }
58
+ return result.report;
59
+ };
@@ -0,0 +1,40 @@
1
+ /**
2
+ * B54 — spawnfile.audit.v1 contract types. This module is type-only (no
3
+ * logic, no I/O): the schema constant plus the AuditCheck/AuditReport shapes
4
+ * every other file in src/audit/ produces or consumes. See AGENTS.md for the
5
+ * folder-wide "reports, never enforces" rule this contract exists to serve.
6
+ */
7
+ /** Versioned schema identifier stamped on every generated report, mirroring the `noopolis.causal-event.v1` precedent (src/ledger/envelope.ts). */
8
+ export declare const SPAWNFILE_AUDIT_SCHEMA: "spawnfile.audit.v1";
9
+ /**
10
+ * The five ledger/runtime categories checks 1-6 are grounded in, plus
11
+ * "provenance" for check 7 (`provenance.signed-report`). The frozen B54
12
+ * packet's contract line only lists five category values; "provenance" is
13
+ * added here to keep every check's `id` prefix equal to its `category`
14
+ * (checks 1-6 already follow that pattern exactly), rather than
15
+ * mis-bucketing check 7 under an unrelated category. See AGENTS.md
16
+ * "Deviations from the frozen packet".
17
+ */
18
+ export type AuditCheckCategory = "causal" | "container" | "control" | "memory" | "network" | "provenance";
19
+ export type AuditCheckStatus = "pass" | "fail" | "not_applicable";
20
+ export type AuditCheckSeverity = "critical" | "high" | "medium";
21
+ export interface AuditCheck {
22
+ category: AuditCheckCategory;
23
+ evidence: Record<string, unknown>;
24
+ id: string;
25
+ severity: AuditCheckSeverity;
26
+ status: AuditCheckStatus;
27
+ }
28
+ export interface AuditSummary {
29
+ failed: number;
30
+ na: number;
31
+ passed: number;
32
+ }
33
+ export interface AuditReport {
34
+ checks: AuditCheck[];
35
+ /** Diagnostic only — excluded from determinism comparisons (two otherwise-identical generator runs may differ only here). */
36
+ generated_at: string;
37
+ run_id: string | null;
38
+ schema: typeof SPAWNFILE_AUDIT_SCHEMA;
39
+ summary: AuditSummary;
40
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * B54 — spawnfile.audit.v1 contract types. This module is type-only (no
3
+ * logic, no I/O): the schema constant plus the AuditCheck/AuditReport shapes
4
+ * every other file in src/audit/ produces or consumes. See AGENTS.md for the
5
+ * folder-wide "reports, never enforces" rule this contract exists to serve.
6
+ */
7
+ /** Versioned schema identifier stamped on every generated report, mirroring the `noopolis.causal-event.v1` precedent (src/ledger/envelope.ts). */
8
+ export const SPAWNFILE_AUDIT_SCHEMA = "spawnfile.audit.v1";
@@ -0,0 +1,11 @@
1
+ import type { CredentialProvisioningReceipt } from "./credentialProvisioningReceipt.js";
2
+ import type { ProvisionedCredentialMaterials } from "./credentialProvisioning.js";
3
+ export type ProvisionedEnvFileResult = Readonly<{
4
+ digest: string;
5
+ path: string;
6
+ }>;
7
+ export declare const writeProvisionedEnvFile: (input: Readonly<{
8
+ materials: ProvisionedCredentialMaterials;
9
+ path: string;
10
+ receipt: CredentialProvisioningReceipt;
11
+ }>) => Promise<ProvisionedEnvFileResult>;
@@ -0,0 +1,60 @@
1
+ import { createHash } from "node:crypto";
2
+ import { open, unlink } from "node:fs/promises";
3
+ import { TARGET_SECRET_SOURCE_ERROR } from "./targetSecretSourceRecordCommon.js";
4
+ const fail = () => { throw new Error(TARGET_SECRET_SOURCE_ERROR); };
5
+ export const writeProvisionedEnvFile = async (input) => {
6
+ let bytes;
7
+ let handle;
8
+ let created = false;
9
+ try {
10
+ const credentials = [...input.receipt.credentials].sort((left, right) => left.env < right.env ? -1 : left.env > right.env ? 1 : 0);
11
+ if (credentials.length === 0 || input.materials.size !== credentials.length)
12
+ fail();
13
+ const prefixes = credentials.map(({ env }) => new TextEncoder().encode(`${env}=`));
14
+ try {
15
+ const size = credentials.reduce((total, credential, index) => {
16
+ const prefix = prefixes[index] ?? fail();
17
+ const material = input.materials.get(credential.name) ?? fail();
18
+ if (!material || material.length === 0 || material.some((byte) => byte === 0 || byte === 10 || byte === 13))
19
+ fail();
20
+ return total + prefix.length + material.length + 1;
21
+ }, 0);
22
+ bytes = new Uint8Array(size);
23
+ let offset = 0;
24
+ for (const [index, credential] of credentials.entries()) {
25
+ const prefix = prefixes[index] ?? fail();
26
+ const material = input.materials.get(credential.name) ?? fail();
27
+ bytes.set(prefix, offset);
28
+ offset += prefix.length;
29
+ bytes.set(material, offset);
30
+ offset += material.length;
31
+ bytes[offset] = 10;
32
+ offset += 1;
33
+ }
34
+ }
35
+ finally {
36
+ for (const prefix of prefixes)
37
+ prefix.fill(0);
38
+ }
39
+ handle = await open(input.path, "wx", 0o600);
40
+ created = true;
41
+ await handle.chmod(0o600);
42
+ await handle.writeFile(bytes);
43
+ await handle.sync();
44
+ const digest = `sha256:${createHash("sha256").update(bytes).digest("hex")}`;
45
+ await handle.close();
46
+ handle = undefined;
47
+ return Object.freeze({ digest, path: input.path });
48
+ }
49
+ catch {
50
+ await handle?.close().catch(() => undefined);
51
+ handle = undefined;
52
+ if (created)
53
+ await unlink(input.path).catch(() => undefined);
54
+ return fail();
55
+ }
56
+ finally {
57
+ bytes?.fill(0);
58
+ await handle?.close().catch(() => undefined);
59
+ }
60
+ };
@@ -0,0 +1,15 @@
1
+ import { type CredentialProvisioningReceipt } from "./credentialProvisioningReceipt.js";
2
+ import type { CredentialProvisioningRequest } from "./credentialProvisioningRequest.js";
3
+ import type { TargetSecretSourceLifecycle } from "./targetSecretSourceLifecycle.js";
4
+ export type ProvisionedCredentialMaterials = Map<string, Uint8Array>;
5
+ export type CredentialProvisioningEntropy = (bytes: number) => Uint8Array;
6
+ export interface CredentialProvisioningOptions {
7
+ readonly entropy?: CredentialProvisioningEntropy;
8
+ readonly lifecycle?: Pick<TargetSecretSourceLifecycle, "author" | "grant">;
9
+ }
10
+ export type ProvisionedCredentials = Readonly<{
11
+ materials: ProvisionedCredentialMaterials;
12
+ receipt: CredentialProvisioningReceipt;
13
+ }>;
14
+ export declare const disposeProvisionedMaterials: (materials: ProvisionedCredentialMaterials) => void;
15
+ export declare const provisionCredentials: (request: CredentialProvisioningRequest, options?: CredentialProvisioningOptions) => Promise<ProvisionedCredentials>;
@@ -0,0 +1,75 @@
1
+ import { Buffer } from "node:buffer";
2
+ import { randomBytes } from "node:crypto";
3
+ import { createCredentialProvisioningReceipt } from "./credentialProvisioningReceipt.js";
4
+ import { TARGET_SECRET_SOURCE_ERROR, createCanonicalTargetSecretSourceJson } from "./targetSecretSourceRecordCommon.js";
5
+ const fail = () => { throw new Error(TARGET_SECRET_SOURCE_ERROR); };
6
+ const defaultEntropy = (size) => {
7
+ const bytes = randomBytes(size);
8
+ try {
9
+ return Uint8Array.from(bytes);
10
+ }
11
+ finally {
12
+ bytes.fill(0);
13
+ }
14
+ };
15
+ const generatedToken = (size, entropy) => {
16
+ let raw;
17
+ let encoded;
18
+ try {
19
+ raw = entropy(size);
20
+ if (!(raw instanceof Uint8Array) || raw.length !== size)
21
+ fail();
22
+ encoded = Buffer.from(raw);
23
+ return new TextEncoder().encode(encoded.toString("hex"));
24
+ }
25
+ finally {
26
+ encoded?.fill(0);
27
+ raw?.fill(0);
28
+ }
29
+ };
30
+ export const disposeProvisionedMaterials = (materials) => {
31
+ for (const material of materials.values())
32
+ material.fill(0);
33
+ materials.clear();
34
+ };
35
+ export const provisionCredentials = async (request, options = {}) => {
36
+ const materials = new Map();
37
+ try {
38
+ const lifecycle = options.lifecycle
39
+ ?? await (await import("./targetSecretSourceLifecycle.js")).initializeTargetSecretSourceLifecycle();
40
+ const entropy = options.entropy ?? defaultEntropy;
41
+ for (const credential of request.credentials) {
42
+ const material = credential.kind === "generated-token"
43
+ ? generatedToken(credential.bytes, entropy)
44
+ : createCanonicalTargetSecretSourceJson(credential.content);
45
+ materials.set(credential.name, material);
46
+ }
47
+ const sources = new Map();
48
+ for (const credential of request.credentials) {
49
+ const material = materials.get(credential.name) ?? fail();
50
+ const authored = await lifecycle.author(material);
51
+ sources.set(credential.name, authored.source_handle);
52
+ }
53
+ for (const credential of request.credentials) {
54
+ const sourceHandle = sources.get(credential.name);
55
+ const granted = await lifecycle.grant({
56
+ descriptor_digest: request.descriptor_digest,
57
+ name: credential.name,
58
+ run_id: request.run_id,
59
+ scope: request.scope,
60
+ selected_target: request.selected_target,
61
+ source_handle: sourceHandle
62
+ });
63
+ if (granted.source_handle !== sourceHandle)
64
+ fail();
65
+ }
66
+ return Object.freeze({
67
+ materials,
68
+ receipt: createCredentialProvisioningReceipt({ request, source_handles: sources })
69
+ });
70
+ }
71
+ catch {
72
+ disposeProvisionedMaterials(materials);
73
+ return fail();
74
+ }
75
+ };
@@ -0,0 +1,28 @@
1
+ import type { CredentialProvisioningRequest } from "./credentialProvisioningRequest.js";
2
+ import { type OpaqueTargetSecretSourceHandle } from "./targetSecretSourceRecordCommon.js";
3
+ export declare const CREDENTIAL_PROVISIONING_RECEIPT_VERSION: "spawnfile.auth.credential-provisioning.receipt.v1";
4
+ export type CredentialProvisioningPhase = "author" | "grant" | "model_engine_auth" | "env_file" | "world_bindings";
5
+ export type CredentialProvisioningReceiptCredential = Readonly<{
6
+ env: string;
7
+ name: string;
8
+ scope: string;
9
+ source_handle: OpaqueTargetSecretSourceHandle;
10
+ }>;
11
+ export type CredentialProvisioningReceipt = Readonly<{
12
+ credentials: readonly CredentialProvisioningReceiptCredential[];
13
+ env_file_digest?: string;
14
+ phases: readonly CredentialProvisioningPhase[];
15
+ run_id: string;
16
+ scope: string;
17
+ version: typeof CREDENTIAL_PROVISIONING_RECEIPT_VERSION;
18
+ world_bindings_digest?: string;
19
+ }>;
20
+ export declare const createCredentialProvisioningReceipt: (input: Readonly<{
21
+ request: CredentialProvisioningRequest;
22
+ source_handles: ReadonlyMap<string, unknown>;
23
+ }>) => CredentialProvisioningReceipt;
24
+ export declare const finalizeCredentialProvisioningReceipt: (receipt: CredentialProvisioningReceipt, outputs: Readonly<{
25
+ env_file_digest?: string;
26
+ model_engine_auth?: boolean;
27
+ world_bindings_digest?: string;
28
+ }>) => CredentialProvisioningReceipt;
@@ -0,0 +1,70 @@
1
+ import { TARGET_SECRET_SOURCE_ERROR, parseTargetSecretSourceOpaqueHandle } from "./targetSecretSourceRecordCommon.js";
2
+ export const CREDENTIAL_PROVISIONING_RECEIPT_VERSION = "spawnfile.auth.credential-provisioning.receipt.v1";
3
+ const DIGEST = /^sha256:[a-f0-9]{64}$/u;
4
+ const fail = () => { throw new Error(TARGET_SECRET_SOURCE_ERROR); };
5
+ const digest = (raw) => typeof raw === "string" && DIGEST.test(raw) ? raw : fail();
6
+ export const createCredentialProvisioningReceipt = (input) => {
7
+ try {
8
+ const credentials = input.request.credentials.map((credential) => {
9
+ const sourceHandle = input.source_handles.get(credential.name);
10
+ return Object.freeze({
11
+ env: credential.env,
12
+ name: credential.name,
13
+ scope: input.request.scope,
14
+ source_handle: parseTargetSecretSourceOpaqueHandle(sourceHandle)
15
+ });
16
+ });
17
+ if (input.source_handles.size !== credentials.length)
18
+ fail();
19
+ return Object.freeze({
20
+ credentials: Object.freeze(credentials),
21
+ phases: Object.freeze(["author", "grant"]),
22
+ run_id: input.request.run_id,
23
+ scope: input.request.scope,
24
+ version: CREDENTIAL_PROVISIONING_RECEIPT_VERSION
25
+ });
26
+ }
27
+ catch {
28
+ return fail();
29
+ }
30
+ };
31
+ export const finalizeCredentialProvisioningReceipt = (receipt, outputs) => {
32
+ try {
33
+ if (receipt.version !== CREDENTIAL_PROVISIONING_RECEIPT_VERSION
34
+ || receipt.phases.length !== 2
35
+ || receipt.phases[0] !== "author"
36
+ || receipt.phases[1] !== "grant")
37
+ fail();
38
+ const credentials = receipt.credentials.map((credential) => Object.freeze({
39
+ env: credential.env,
40
+ name: credential.name,
41
+ scope: credential.scope,
42
+ source_handle: parseTargetSecretSourceOpaqueHandle(credential.source_handle)
43
+ }));
44
+ const envFileDigest = outputs.env_file_digest === undefined
45
+ ? undefined
46
+ : digest(outputs.env_file_digest);
47
+ const worldBindingsDigest = outputs.world_bindings_digest === undefined
48
+ ? undefined
49
+ : digest(outputs.world_bindings_digest);
50
+ const phases = ["author", "grant"];
51
+ if (outputs.model_engine_auth === true)
52
+ phases.push("model_engine_auth");
53
+ if (envFileDigest !== undefined)
54
+ phases.push("env_file");
55
+ if (worldBindingsDigest !== undefined)
56
+ phases.push("world_bindings");
57
+ return Object.freeze({
58
+ credentials: Object.freeze(credentials),
59
+ ...(envFileDigest === undefined ? {} : { env_file_digest: envFileDigest }),
60
+ phases: Object.freeze(phases),
61
+ run_id: receipt.run_id,
62
+ scope: receipt.scope,
63
+ version: CREDENTIAL_PROVISIONING_RECEIPT_VERSION,
64
+ ...(worldBindingsDigest === undefined ? {} : { world_bindings_digest: worldBindingsDigest })
65
+ });
66
+ }
67
+ catch {
68
+ return fail();
69
+ }
70
+ };