spawnfile 0.1.12 → 0.1.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (620) hide show
  1. package/README.md +58 -12
  2. package/dist/audit/auditCli.d.ts +19 -0
  3. package/dist/audit/auditCli.js +63 -0
  4. package/dist/audit/checks.d.ts +100 -0
  5. package/dist/audit/checks.js +279 -0
  6. package/dist/audit/checksShared.d.ts +74 -0
  7. package/dist/audit/checksShared.js +37 -0
  8. package/dist/audit/generateAudit.d.ts +19 -0
  9. package/dist/audit/generateAudit.js +122 -0
  10. package/dist/audit/index.d.ts +4 -0
  11. package/dist/audit/index.js +4 -0
  12. package/dist/audit/readAudit.d.ts +50 -0
  13. package/dist/audit/readAudit.js +59 -0
  14. package/dist/audit/types.d.ts +40 -0
  15. package/dist/audit/types.js +8 -0
  16. package/dist/auth/credentialEnvFile.d.ts +11 -0
  17. package/dist/auth/credentialEnvFile.js +60 -0
  18. package/dist/auth/credentialProvisioning.d.ts +15 -0
  19. package/dist/auth/credentialProvisioning.js +75 -0
  20. package/dist/auth/credentialProvisioningReceipt.d.ts +28 -0
  21. package/dist/auth/credentialProvisioningReceipt.js +70 -0
  22. package/dist/auth/credentialProvisioningRequest.d.ts +51 -0
  23. package/dist/auth/credentialProvisioningRequest.js +169 -0
  24. package/dist/auth/credentialWorldBindings.d.ts +21 -0
  25. package/dist/auth/credentialWorldBindings.js +104 -0
  26. package/dist/auth/index.d.ts +7 -0
  27. package/dist/auth/index.js +7 -0
  28. package/dist/auth/paths.d.ts +11 -0
  29. package/dist/auth/paths.js +21 -0
  30. package/dist/auth/runtimeCredentials.js +18 -2
  31. package/dist/auth/targetSecretSourceAuthor.d.ts +18 -0
  32. package/dist/auth/targetSecretSourceAuthor.js +52 -0
  33. package/dist/auth/targetSecretSourceFsPublish.d.ts +15 -0
  34. package/dist/auth/targetSecretSourceFsPublish.js +49 -0
  35. package/dist/auth/targetSecretSourceFsPublishImmutable.d.ts +16 -0
  36. package/dist/auth/targetSecretSourceFsPublishImmutable.js +435 -0
  37. package/dist/auth/targetSecretSourceFsRead.d.ts +14 -0
  38. package/dist/auth/targetSecretSourceFsRead.js +198 -0
  39. package/dist/auth/targetSecretSourceGrant.d.ts +16 -0
  40. package/dist/auth/targetSecretSourceGrant.js +99 -0
  41. package/dist/auth/targetSecretSourceGrantRecords.d.ts +84 -0
  42. package/dist/auth/targetSecretSourceGrantRecords.js +214 -0
  43. package/dist/auth/targetSecretSourceLifecycle.d.ts +30 -0
  44. package/dist/auth/targetSecretSourceLifecycle.js +52 -0
  45. package/dist/auth/targetSecretSourceOwnerEntropy.d.ts +6 -0
  46. package/dist/auth/targetSecretSourceOwnerEntropy.js +28 -0
  47. package/dist/auth/targetSecretSourceRecordCommon.d.ts +14 -0
  48. package/dist/auth/targetSecretSourceRecordCommon.js +100 -0
  49. package/dist/auth/targetSecretSourceRecordPublish.d.ts +10 -0
  50. package/dist/auth/targetSecretSourceRecordPublish.js +104 -0
  51. package/dist/auth/targetSecretSourceResolver.d.ts +10 -0
  52. package/dist/auth/targetSecretSourceResolver.js +137 -0
  53. package/dist/auth/targetSecretSourceRevoke.d.ts +20 -0
  54. package/dist/auth/targetSecretSourceRevoke.js +92 -0
  55. package/dist/auth/targetSecretSourceRotate.d.ts +19 -0
  56. package/dist/auth/targetSecretSourceRotate.js +121 -0
  57. package/dist/auth/targetSecretSourceVersionRecords.d.ts +49 -0
  58. package/dist/auth/targetSecretSourceVersionRecords.js +166 -0
  59. package/dist/cli/artifactsCommands.d.ts +27 -0
  60. package/dist/cli/artifactsCommands.js +132 -0
  61. package/dist/cli/authCommands.d.ts +5 -0
  62. package/dist/cli/authCommands.js +221 -0
  63. package/dist/cli/compileBuildCommands.d.ts +3 -0
  64. package/dist/cli/compileBuildCommands.js +35 -0
  65. package/dist/cli/containerBundleCommand.d.ts +6 -0
  66. package/dist/cli/containerBundleCommand.js +116 -0
  67. package/dist/cli/devCommands.d.ts +3 -0
  68. package/dist/cli/devCommands.js +115 -0
  69. package/dist/cli/downCommand.d.ts +25 -0
  70. package/dist/cli/downCommand.js +134 -0
  71. package/dist/cli/index.js +6 -3
  72. package/dist/cli/lifecycleCommands.d.ts +1 -1
  73. package/dist/cli/lifecycleCommands.js +11 -179
  74. package/dist/cli/lifecycleMachine.d.ts +19 -0
  75. package/dist/cli/lifecycleMachine.js +78 -0
  76. package/dist/cli/lifecyclePlan.d.ts +35 -0
  77. package/dist/cli/lifecyclePlan.js +240 -0
  78. package/dist/cli/lifecyclePlanningCommands.d.ts +3 -0
  79. package/dist/cli/lifecyclePlanningCommands.js +30 -0
  80. package/dist/cli/runCli.d.ts +15 -2
  81. package/dist/cli/runCli.js +31 -71
  82. package/dist/cli/runPublishCommands.d.ts +3 -0
  83. package/dist/cli/runPublishCommands.js +70 -0
  84. package/dist/cli/statusCommand.d.ts +3 -32
  85. package/dist/cli/statusCommand.js +37 -233
  86. package/dist/cli/statusCommandLive.d.ts +20 -0
  87. package/dist/cli/statusCommandLive.js +188 -0
  88. package/dist/cli/statusCommandOptions.d.ts +40 -0
  89. package/dist/cli/statusCommandOptions.js +42 -0
  90. package/dist/cli/targetCliRoute.d.ts +2 -0
  91. package/dist/cli/targetCliRoute.js +30 -0
  92. package/dist/cli/targetCommands.d.ts +33 -0
  93. package/dist/cli/targetCommands.js +257 -0
  94. package/dist/cli/targetComposedPreparationCommand.d.ts +6 -0
  95. package/dist/cli/targetComposedPreparationCommand.js +39 -0
  96. package/dist/cli/targetDefaultArtifactAuthority.d.ts +5 -0
  97. package/dist/cli/targetDefaultArtifactAuthority.js +28 -0
  98. package/dist/cli/targetDefaultAuthorities.d.ts +53 -0
  99. package/dist/cli/targetDefaultAuthorities.js +210 -0
  100. package/dist/cli/targetDefaultConfig.d.ts +68 -0
  101. package/dist/cli/targetDefaultConfig.js +317 -0
  102. package/dist/cli/targetDefaultConfigStdin.d.ts +13 -0
  103. package/dist/cli/targetDefaultConfigStdin.js +215 -0
  104. package/dist/cli/targetDefaultEnvelope.d.ts +1 -0
  105. package/dist/cli/targetDefaultEnvelope.js +13 -0
  106. package/dist/cli/targetDefaultHandlerFactory.d.ts +28 -0
  107. package/dist/cli/targetDefaultHandlerFactory.js +247 -0
  108. package/dist/cli/targetDefaultHandlers.d.ts +21 -0
  109. package/dist/cli/targetDefaultHandlers.js +72 -0
  110. package/dist/cli/targetDefaultJournalAuthority.d.ts +35 -0
  111. package/dist/cli/targetDefaultJournalAuthority.js +135 -0
  112. package/dist/cli/targetDefaultWorldClock.d.ts +4 -0
  113. package/dist/cli/targetDefaultWorldClock.js +14 -0
  114. package/dist/cli/targetDefaultWorldQueries.d.ts +5 -0
  115. package/dist/cli/targetDefaultWorldQueries.js +11 -0
  116. package/dist/cli/targetDefaultWorldReadiness.d.ts +4 -0
  117. package/dist/cli/targetDefaultWorldReadiness.js +17 -0
  118. package/dist/cli/targetEvidenceHelperResolution.d.ts +14 -0
  119. package/dist/cli/targetEvidenceHelperResolution.js +23 -0
  120. package/dist/cli/targetLookupCli.d.ts +3 -0
  121. package/dist/cli/targetLookupCli.js +31 -0
  122. package/dist/cli/targetLookupCommands.d.ts +12 -0
  123. package/dist/cli/targetLookupCommands.js +69 -0
  124. package/dist/cli/targetOperationDispatch.d.ts +58 -0
  125. package/dist/cli/targetOperationDispatch.js +21 -0
  126. package/dist/cli/targetReceiptOutput.d.ts +14 -0
  127. package/dist/cli/targetReceiptOutput.js +21 -0
  128. package/dist/cli/targetRequestFile.d.ts +14 -0
  129. package/dist/cli/targetRequestFile.js +63 -0
  130. package/dist/cli/targetSecretSourceInput.d.ts +28 -0
  131. package/dist/cli/targetSecretSourceInput.js +121 -0
  132. package/dist/cli/targetWorldClockCommand.d.ts +10 -0
  133. package/dist/cli/targetWorldClockCommand.js +42 -0
  134. package/dist/cli/targetWorldClockCrossProcess.test-helper.d.ts +13 -0
  135. package/dist/cli/targetWorldClockCrossProcess.test-helper.js +109 -0
  136. package/dist/cli/targetWorldReadinessCommand.d.ts +10 -0
  137. package/dist/cli/targetWorldReadinessCommand.js +43 -0
  138. package/dist/cli/upCommand.d.ts +3 -0
  139. package/dist/cli/upCommand.js +133 -0
  140. package/dist/cli/upImageCommand.d.ts +11 -0
  141. package/dist/cli/upImageCommand.js +41 -0
  142. package/dist/cli/upLifecycleInvocation.d.ts +41 -0
  143. package/dist/cli/upLifecycleInvocation.js +48 -0
  144. package/dist/cli/upLifecycleRecovery.d.ts +4 -0
  145. package/dist/cli/upLifecycleRecovery.js +53 -0
  146. package/dist/compiler/agentNodeMerge.d.ts +2 -0
  147. package/dist/compiler/agentNodeMerge.js +79 -0
  148. package/dist/compiler/agentSurfaces.js +11 -1
  149. package/dist/compiler/buildCompilePlan.js +17 -0
  150. package/dist/compiler/buildCompilePlanAgent.d.ts +11 -0
  151. package/dist/compiler/buildCompilePlanAgent.js +56 -0
  152. package/dist/compiler/buildCompilePlanTeams.d.ts +1 -0
  153. package/dist/compiler/buildCompilePlanTeams.js +4 -1
  154. package/dist/compiler/buildCompilePlanTraversal.js +75 -82
  155. package/dist/compiler/buildProject.d.ts +20 -1
  156. package/dist/compiler/buildProject.js +121 -7
  157. package/dist/compiler/compilePlanHelpers.js +2 -0
  158. package/dist/compiler/compileProject.d.ts +15 -0
  159. package/dist/compiler/compileProject.js +29 -75
  160. package/dist/compiler/compileProjectPolicy.d.ts +5 -0
  161. package/dist/compiler/compileProjectPolicy.js +21 -0
  162. package/dist/compiler/compileProjectReports.d.ts +9 -0
  163. package/dist/compiler/compileProjectReports.js +52 -0
  164. package/dist/compiler/containerArtifactSummaries.d.ts +7 -0
  165. package/dist/compiler/containerArtifactSummaries.js +138 -0
  166. package/dist/compiler/containerArtifacts.d.ts +10 -0
  167. package/dist/compiler/containerArtifacts.js +126 -125
  168. package/dist/compiler/containerArtifactsPlans.d.ts +5 -3
  169. package/dist/compiler/containerArtifactsPlans.js +31 -118
  170. package/dist/compiler/containerArtifactsRender.d.ts +3 -1
  171. package/dist/compiler/containerArtifactsRender.js +40 -81
  172. package/dist/compiler/containerArtifactsTypes.d.ts +12 -0
  173. package/dist/compiler/containerConfigEnvRender.d.ts +3 -0
  174. package/dist/compiler/containerConfigEnvRender.js +54 -0
  175. package/dist/compiler/containerEntrypointRender.d.ts +1 -0
  176. package/dist/compiler/containerEntrypointRender.js +60 -53
  177. package/dist/compiler/containerEntrypointShell.d.ts +5 -0
  178. package/dist/compiler/containerEntrypointShell.js +29 -0
  179. package/dist/compiler/containerPackageOverrides.d.ts +27 -0
  180. package/dist/compiler/containerPackageOverrides.js +63 -0
  181. package/dist/compiler/containerPackageRender.d.ts +15 -0
  182. package/dist/compiler/containerPackageRender.js +63 -0
  183. package/dist/compiler/containerTargetPlanResolution.d.ts +20 -0
  184. package/dist/compiler/containerTargetPlanResolution.js +97 -0
  185. package/dist/compiler/containerTargetResources.js +3 -1
  186. package/dist/compiler/daimonTelemetryArtifacts.d.ts +22 -0
  187. package/dist/compiler/daimonTelemetryArtifacts.js +61 -0
  188. package/dist/compiler/dockerBuildContext.d.ts +16 -0
  189. package/dist/compiler/dockerBuildContext.js +159 -0
  190. package/dist/compiler/dockerBuildSkip.d.ts +30 -0
  191. package/dist/compiler/dockerBuildSkip.js +81 -0
  192. package/dist/compiler/index.d.ts +4 -0
  193. package/dist/compiler/index.js +4 -0
  194. package/dist/compiler/memoryArtifacts.d.ts +26 -0
  195. package/dist/compiler/memoryArtifacts.js +134 -0
  196. package/dist/compiler/memoryResolution.d.ts +4 -0
  197. package/dist/compiler/memoryResolution.js +147 -0
  198. package/dist/compiler/modelEnv.d.ts +2 -0
  199. package/dist/compiler/modelEnv.js +6 -0
  200. package/dist/compiler/moltnetAllowedWakeSendersValidation.d.ts +2 -0
  201. package/dist/compiler/moltnetAllowedWakeSendersValidation.js +42 -0
  202. package/dist/compiler/moltnetArtifactPaths.d.ts +26 -0
  203. package/dist/compiler/moltnetArtifactPaths.js +49 -0
  204. package/dist/compiler/moltnetArtifactTypes.d.ts +46 -0
  205. package/dist/compiler/moltnetArtifactTypes.js +1 -0
  206. package/dist/compiler/moltnetArtifacts.d.ts +2 -40
  207. package/dist/compiler/moltnetArtifacts.js +56 -95
  208. package/dist/compiler/moltnetBinaries.d.ts +21 -1
  209. package/dist/compiler/moltnetBinaries.js +156 -28
  210. package/dist/compiler/moltnetClientConfig.js +18 -2
  211. package/dist/compiler/moltnetConfigLowering.d.ts +16 -1
  212. package/dist/compiler/moltnetConfigLowering.js +67 -5
  213. package/dist/compiler/moltnetExternalParticipantArtifact.d.ts +38 -0
  214. package/dist/compiler/moltnetExternalParticipantArtifact.js +188 -0
  215. package/dist/compiler/moltnetNodeConfig.js +7 -2
  216. package/dist/compiler/moltnetReleaseAuthority.d.ts +17 -0
  217. package/dist/compiler/moltnetReleaseAuthority.js +73 -0
  218. package/dist/compiler/moltnetReleaseDownload.d.ts +12 -0
  219. package/dist/compiler/moltnetReleaseDownload.js +85 -0
  220. package/dist/compiler/moltnetRepresentativeResolution.d.ts +1 -0
  221. package/dist/compiler/moltnetRepresentativeResolution.js +16 -2
  222. package/dist/compiler/moltnetResolution.js +72 -20
  223. package/dist/compiler/moltnetRoomMemberships.js +37 -9
  224. package/dist/compiler/moltnetRuntimeConfig.js +11 -0
  225. package/dist/compiler/moltnetServerPlans.d.ts +9 -0
  226. package/dist/compiler/moltnetServerPlans.js +132 -0
  227. package/dist/compiler/organizationIdentity.d.ts +27 -0
  228. package/dist/compiler/organizationIdentity.js +297 -0
  229. package/dist/compiler/organizationReadyEvidence.d.ts +49 -0
  230. package/dist/compiler/organizationReadyEvidence.js +261 -0
  231. package/dist/compiler/projectManifestGraph.d.ts +4 -0
  232. package/dist/compiler/projectManifestGraph.js +24 -0
  233. package/dist/compiler/runProject.d.ts +4 -0
  234. package/dist/compiler/runProject.js +37 -22
  235. package/dist/compiler/runProjectAuth.d.ts +7 -1
  236. package/dist/compiler/runProjectAuth.js +87 -9
  237. package/dist/compiler/runProjectDocker.d.ts +7 -0
  238. package/dist/compiler/runProjectDocker.js +187 -19
  239. package/dist/compiler/runProjectLifecycle.d.ts +7 -0
  240. package/dist/compiler/runProjectLifecycle.js +40 -0
  241. package/dist/compiler/syncProjectAuth.js +4 -1
  242. package/dist/compiler/teamContextActiveEnvironments.d.ts +13 -0
  243. package/dist/compiler/teamContextActiveEnvironments.js +255 -0
  244. package/dist/compiler/teamContextSupport.js +32 -40
  245. package/dist/compiler/teamContextTypes.d.ts +2 -0
  246. package/dist/compiler/types.d.ts +82 -1
  247. package/dist/compiler/upProject.d.ts +5 -0
  248. package/dist/compiler/upProject.js +257 -20
  249. package/dist/compiler/upReceipt.d.ts +36 -0
  250. package/dist/compiler/upReceipt.js +82 -0
  251. package/dist/compiler/updateProjectModels.js +42 -60
  252. package/dist/compiler/updateProjectRuntime.js +22 -35
  253. package/dist/compiler/updateProjectSurfaces.js +53 -47
  254. package/dist/compiler/worldBindings.d.ts +39 -0
  255. package/dist/compiler/worldBindings.js +247 -0
  256. package/dist/compiler/worldBindingsFile.d.ts +5 -0
  257. package/dist/compiler/worldBindingsFile.js +162 -0
  258. package/dist/deployment/artifactsExport.d.ts +49 -0
  259. package/dist/deployment/artifactsExport.js +217 -0
  260. package/dist/deployment/artifactsExportDocker.d.ts +48 -0
  261. package/dist/deployment/artifactsExportDocker.js +91 -0
  262. package/dist/deployment/artifactsExportPlan.d.ts +24 -0
  263. package/dist/deployment/artifactsExportPlan.js +135 -0
  264. package/dist/deployment/artifactsExportTypes.d.ts +50 -0
  265. package/dist/deployment/artifactsExportTypes.js +52 -0
  266. package/dist/deployment/buildImageCacheStore.d.ts +23 -0
  267. package/dist/deployment/buildImageCacheStore.js +54 -0
  268. package/dist/deployment/deploymentLifecycleCorrelation.d.ts +11 -0
  269. package/dist/deployment/deploymentLifecycleCorrelation.js +33 -0
  270. package/dist/deployment/dockerInspect.d.ts +9 -0
  271. package/dist/deployment/dockerInspect.js +24 -1
  272. package/dist/deployment/dockerLabels.d.ts +2 -0
  273. package/dist/deployment/dockerLabels.js +2 -0
  274. package/dist/deployment/dockerLogs.js +2 -10
  275. package/dist/deployment/dockerManager.d.ts +51 -0
  276. package/dist/deployment/dockerManager.js +118 -1
  277. package/dist/deployment/dockerProbeGateway.js +64 -5
  278. package/dist/deployment/dockerRecover.d.ts +17 -0
  279. package/dist/deployment/dockerRecover.js +137 -0
  280. package/dist/deployment/dockerTeardown.d.ts +32 -0
  281. package/dist/deployment/dockerTeardown.js +61 -0
  282. package/dist/deployment/downDeployment.d.ts +34 -0
  283. package/dist/deployment/downDeployment.js +147 -0
  284. package/dist/deployment/downReceiptTypes.d.ts +21 -0
  285. package/dist/deployment/downReceiptTypes.js +30 -0
  286. package/dist/deployment/index.d.ts +17 -0
  287. package/dist/deployment/index.js +18 -0
  288. package/dist/deployment/lifecycleCompletion.d.ts +37 -0
  289. package/dist/deployment/lifecycleCompletion.js +236 -0
  290. package/dist/deployment/lifecycleCompletionContracts.d.ts +158 -0
  291. package/dist/deployment/lifecycleCompletionContracts.js +106 -0
  292. package/dist/deployment/lifecycleCompletionHeartbeat.d.ts +2 -0
  293. package/dist/deployment/lifecycleCompletionHeartbeat.js +50 -0
  294. package/dist/deployment/lifecycleCompletionLookup.d.ts +18 -0
  295. package/dist/deployment/lifecycleCompletionLookup.js +88 -0
  296. package/dist/deployment/lifecycleCompletionOwner.d.ts +8 -0
  297. package/dist/deployment/lifecycleCompletionOwner.js +31 -0
  298. package/dist/deployment/lifecycleCompletionParsing.d.ts +12 -0
  299. package/dist/deployment/lifecycleCompletionParsing.js +108 -0
  300. package/dist/deployment/lifecycleCompletionPaths.d.ts +9 -0
  301. package/dist/deployment/lifecycleCompletionPaths.js +16 -0
  302. package/dist/deployment/lifecycleCompletionPublication.d.ts +5 -0
  303. package/dist/deployment/lifecycleCompletionPublication.js +35 -0
  304. package/dist/deployment/lifecycleCompletionRecovery.d.ts +21 -0
  305. package/dist/deployment/lifecycleCompletionRecovery.js +56 -0
  306. package/dist/deployment/lifecycleCompletionRoot.d.ts +21 -0
  307. package/dist/deployment/lifecycleCompletionRoot.js +243 -0
  308. package/dist/deployment/lifecycleCompletionStore.d.ts +6 -0
  309. package/dist/deployment/lifecycleCompletionStore.js +151 -0
  310. package/dist/deployment/organizationHandoffAuthorityFsClient.d.ts +17 -0
  311. package/dist/deployment/organizationHandoffAuthorityFsClient.js +132 -0
  312. package/dist/deployment/organizationHandoffAuthorityFsWorker.d.ts +1 -0
  313. package/dist/deployment/organizationHandoffAuthorityFsWorker.js +285 -0
  314. package/dist/deployment/organizationHandoffAuthorityFsWorkerParent.fixture.d.ts +1 -0
  315. package/dist/deployment/organizationHandoffAuthorityFsWorkerParent.fixture.js +26 -0
  316. package/dist/deployment/organizationHandoffAuthorityStore.d.ts +41 -0
  317. package/dist/deployment/organizationHandoffAuthorityStore.js +348 -0
  318. package/dist/deployment/organizationHandoffAuthorityTypes.d.ts +76 -0
  319. package/dist/deployment/organizationHandoffAuthorityTypes.js +148 -0
  320. package/dist/deployment/organizationHandoffTypes.d.ts +29 -0
  321. package/dist/deployment/organizationHandoffTypes.js +80 -0
  322. package/dist/deployment/organizationReady.d.ts +52 -0
  323. package/dist/deployment/organizationReady.js +200 -0
  324. package/dist/deployment/privateArtifactsExport.d.ts +18 -0
  325. package/dist/deployment/privateArtifactsExport.js +80 -0
  326. package/dist/deployment/providerRuntimeBoundaryScanner.test-helper.d.ts +8 -0
  327. package/dist/deployment/providerRuntimeBoundaryScanner.test-helper.js +60 -0
  328. package/dist/deployment/record.d.ts +26 -1
  329. package/dist/deployment/record.js +49 -4
  330. package/dist/deployment/simfileFixtureBoundary.test-helper.d.ts +8 -0
  331. package/dist/deployment/simfileFixtureBoundary.test-helper.js +103 -0
  332. package/dist/deployment/target.d.ts +1 -35
  333. package/dist/deployment/target.js +1 -96
  334. package/dist/deployment/upReceiptTypes.d.ts +111 -0
  335. package/dist/deployment/upReceiptTypes.js +164 -0
  336. package/dist/dev/activity.d.ts +14 -0
  337. package/dist/dev/activity.js +48 -0
  338. package/dist/dev/docker.d.ts +16 -0
  339. package/dist/dev/docker.js +71 -0
  340. package/dist/dev/index.d.ts +2 -0
  341. package/dist/dev/index.js +2 -0
  342. package/dist/dev/project.d.ts +35 -0
  343. package/dist/dev/project.js +170 -0
  344. package/dist/distribution/buildDistributionReport.d.ts +2 -1
  345. package/dist/distribution/buildDistributionReport.js +2 -1
  346. package/dist/distribution/distributionReportSchema.d.ts +5 -0
  347. package/dist/distribution/distributionReportSchema.js +7 -2
  348. package/dist/distribution/index.d.ts +2 -2
  349. package/dist/distribution/index.js +1 -1
  350. package/dist/distribution/types.d.ts +7 -0
  351. package/dist/distribution/types.js +1 -0
  352. package/dist/filesystem/paths.js +10 -1
  353. package/dist/ledger/causalConformanceCli.d.ts +1 -0
  354. package/dist/ledger/causalConformanceCli.js +41 -0
  355. package/dist/ledger/causeNamespace.d.ts +8 -0
  356. package/dist/ledger/causeNamespace.js +24 -0
  357. package/dist/ledger/conformance.d.ts +83 -0
  358. package/dist/ledger/conformance.js +259 -0
  359. package/dist/ledger/emitters.d.ts +76 -0
  360. package/dist/ledger/emitters.js +188 -0
  361. package/dist/ledger/index.d.ts +4 -0
  362. package/dist/ledger/index.js +4 -0
  363. package/dist/ledger/principal.d.ts +96 -0
  364. package/dist/ledger/principal.js +121 -0
  365. package/dist/manifest/externalParticipantSchemas.d.ts +18 -0
  366. package/dist/manifest/externalParticipantSchemas.js +17 -0
  367. package/dist/manifest/index.d.ts +1 -0
  368. package/dist/manifest/index.js +1 -0
  369. package/dist/manifest/inlineAgentMember.d.ts +2 -0
  370. package/dist/manifest/inlineAgentMember.js +9 -0
  371. package/dist/manifest/loadManifest.js +14 -8
  372. package/dist/manifest/mcpSchemas.d.ts +17 -0
  373. package/dist/manifest/mcpSchemas.js +41 -0
  374. package/dist/manifest/memorySchemas.d.ts +245 -0
  375. package/dist/manifest/memorySchemas.js +148 -0
  376. package/dist/manifest/renderSpawnfile.js +22 -131
  377. package/dist/manifest/renderSpawnfileNetworks.js +9 -2
  378. package/dist/manifest/renderSpawnfileSurfaces.d.ts +2 -0
  379. package/dist/manifest/renderSpawnfileSurfaces.js +134 -0
  380. package/dist/manifest/schemas.d.ts +1868 -99
  381. package/dist/manifest/schemas.js +78 -32
  382. package/dist/manifest/surfaceSchemas.d.ts +17 -0
  383. package/dist/manifest/surfaceSchemas.js +24 -1
  384. package/dist/manifest/teamNetworkAccessSchemas.d.ts +1 -1
  385. package/dist/manifest/teamNetworkAuthSchemas.d.ts +48 -0
  386. package/dist/manifest/teamNetworkAuthSchemas.js +103 -0
  387. package/dist/manifest/teamNetworkSchemas.d.ts +8 -187
  388. package/dist/manifest/teamNetworkSchemas.js +3 -317
  389. package/dist/manifest/teamNetworkServerSchemas.d.ts +150 -0
  390. package/dist/manifest/teamNetworkServerSchemas.js +199 -0
  391. package/dist/ownership/siblingBuildFreshness.d.ts +20 -0
  392. package/dist/ownership/siblingBuildFreshness.js +20 -0
  393. package/dist/ownership/simfileRunOperatorInputs.d.ts +103 -0
  394. package/dist/ownership/simfileRunOperatorInputs.js +139 -0
  395. package/dist/report/types.d.ts +142 -0
  396. package/dist/runtime/common.d.ts +37 -0
  397. package/dist/runtime/common.js +56 -1
  398. package/dist/runtime/container.d.ts +29 -1
  399. package/dist/runtime/container.js +127 -11
  400. package/dist/runtime/containerPackageOverrides.d.ts +37 -0
  401. package/dist/runtime/containerPackageOverrides.js +33 -0
  402. package/dist/runtime/index.d.ts +2 -0
  403. package/dist/runtime/index.js +2 -0
  404. package/dist/runtime/install.d.ts +1 -1
  405. package/dist/runtime/install.js +43 -1
  406. package/dist/runtime/mnemeMcp.d.ts +15 -0
  407. package/dist/runtime/mnemeMcp.js +109 -0
  408. package/dist/runtime/openclaw/adapter.js +15 -4
  409. package/dist/runtime/openclaw/mcp.d.ts +10 -0
  410. package/dist/runtime/openclaw/mcp.js +69 -0
  411. package/dist/runtime/openclaw/runAuth.js +2 -2
  412. package/dist/runtime/openclaw/scaffold.js +1 -1
  413. package/dist/runtime/openclaw/schedules.d.ts +38 -0
  414. package/dist/runtime/openclaw/schedules.js +74 -0
  415. package/dist/runtime/pi/adapter.d.ts +4 -0
  416. package/dist/runtime/pi/adapter.js +231 -0
  417. package/dist/runtime/pi/appActivitySource.d.ts +1 -0
  418. package/dist/runtime/pi/appActivitySource.js +199 -0
  419. package/dist/runtime/pi/appAgentConfig.d.ts +11 -0
  420. package/dist/runtime/pi/appAgentConfig.js +264 -0
  421. package/dist/runtime/pi/appCliEnginesSource.d.ts +1 -0
  422. package/dist/runtime/pi/appCliEnginesSource.js +183 -0
  423. package/dist/runtime/pi/appCliSource.d.ts +1 -0
  424. package/dist/runtime/pi/appCliSource.js +353 -0
  425. package/dist/runtime/pi/appControlSource.d.ts +1 -0
  426. package/dist/runtime/pi/appControlSource.js +390 -0
  427. package/dist/runtime/pi/appControlWakeIdentitySource.d.ts +1 -0
  428. package/dist/runtime/pi/appControlWakeIdentitySource.js +19 -0
  429. package/dist/runtime/pi/appCoreSource.d.ts +4 -0
  430. package/dist/runtime/pi/appCoreSource.js +244 -0
  431. package/dist/runtime/pi/appPreludeSource.d.ts +1 -0
  432. package/dist/runtime/pi/appPreludeSource.js +191 -0
  433. package/dist/runtime/pi/appScheduleSource.d.ts +1 -0
  434. package/dist/runtime/pi/appScheduleSource.js +80 -0
  435. package/dist/runtime/pi/appScriptedEngine.d.ts +31 -0
  436. package/dist/runtime/pi/appScriptedEngine.js +42 -0
  437. package/dist/runtime/pi/appSource.d.ts +4 -0
  438. package/dist/runtime/pi/appSource.js +12 -0
  439. package/dist/runtime/pi/appTemplate.d.ts +14 -0
  440. package/dist/runtime/pi/appTemplate.js +27 -0
  441. package/dist/runtime/pi/appTemplateTypes.d.ts +64 -0
  442. package/dist/runtime/pi/appTemplateTypes.js +18 -0
  443. package/dist/runtime/pi/appWakeContextSource.d.ts +1 -0
  444. package/dist/runtime/pi/appWakeContextSource.js +398 -0
  445. package/dist/runtime/pi/containerTargets.d.ts +4 -0
  446. package/dist/runtime/pi/containerTargets.js +57 -0
  447. package/dist/runtime/pi/runAuth.d.ts +2 -0
  448. package/dist/runtime/pi/runAuth.js +185 -0
  449. package/dist/runtime/pi/testHelpers.d.ts +2 -0
  450. package/dist/runtime/pi/testHelpers.js +40 -0
  451. package/dist/runtime/picoclaw/adapter.js +23 -27
  452. package/dist/runtime/picoclaw/mcp.d.ts +4 -0
  453. package/dist/runtime/picoclaw/mcp.js +43 -0
  454. package/dist/runtime/picoclaw/memory.d.ts +7 -0
  455. package/dist/runtime/picoclaw/memory.js +17 -0
  456. package/dist/runtime/picoclaw/runAuth.js +1 -1
  457. package/dist/runtime/picoclaw/scaffold.js +1 -1
  458. package/dist/runtime/picoclaw/schedules.d.ts +26 -0
  459. package/dist/runtime/picoclaw/schedules.js +62 -3
  460. package/dist/runtime/registry.js +3 -0
  461. package/dist/runtime/scheduleUtils.d.ts +2 -0
  462. package/dist/runtime/scheduleUtils.js +15 -0
  463. package/dist/runtime/types.d.ts +26 -2
  464. package/dist/shared/errors.d.ts +1 -1
  465. package/dist/shared/errors.js +2 -2
  466. package/dist/shared/index.d.ts +1 -0
  467. package/dist/shared/index.js +1 -0
  468. package/dist/shared/redaction.d.ts +2 -0
  469. package/dist/shared/redaction.js +10 -0
  470. package/dist/status/buildStatus.d.ts +1 -0
  471. package/dist/status/buildStatus.js +2 -0
  472. package/dist/status/compileReport.d.ts +22 -0
  473. package/dist/status/compileReport.js +16 -2
  474. package/dist/status/compiledProbeCollection.d.ts +21 -0
  475. package/dist/status/compiledProbeCollection.js +27 -0
  476. package/dist/status/deployments.js +5 -12
  477. package/dist/status/imageStatusReport.js +6 -0
  478. package/dist/status/index.d.ts +3 -0
  479. package/dist/status/index.js +3 -0
  480. package/dist/status/lifecycleProbes.d.ts +19 -0
  481. package/dist/status/lifecycleProbes.js +174 -0
  482. package/dist/status/moltnetProbes.d.ts +7 -8
  483. package/dist/status/moltnetProbes.js +27 -198
  484. package/dist/status/moltnetWiringProbes.d.ts +19 -0
  485. package/dist/status/moltnetWiringProbes.js +178 -0
  486. package/dist/target/cleanupRun.d.ts +41 -0
  487. package/dist/target/cleanupRun.js +139 -0
  488. package/dist/target/cleanupRunDocker.d.ts +16 -0
  489. package/dist/target/cleanupRunDocker.js +66 -0
  490. package/dist/target/cleanupRunDocker.test-helper.d.ts +67 -0
  491. package/dist/target/cleanupRunDocker.test-helper.js +238 -0
  492. package/dist/target/cleanupRunDockerPreflight.d.ts +17 -0
  493. package/dist/target/cleanupRunDockerPreflight.js +224 -0
  494. package/dist/target/composedPreparation.d.ts +205 -0
  495. package/dist/target/composedPreparation.js +223 -0
  496. package/dist/target/containerBundle.d.ts +82 -0
  497. package/dist/target/containerBundle.js +243 -0
  498. package/dist/target/containerBundleArchive.d.ts +31 -0
  499. package/dist/target/containerBundleArchive.js +140 -0
  500. package/dist/target/containerBundleAuthority.d.ts +25 -0
  501. package/dist/target/containerBundleAuthority.js +65 -0
  502. package/dist/target/containerBundleContracts.d.ts +114 -0
  503. package/dist/target/containerBundleContracts.js +173 -0
  504. package/dist/target/containerBundleFilesystemStore.d.ts +3 -0
  505. package/dist/target/containerBundleFilesystemStore.js +247 -0
  506. package/dist/target/containerBundlePolicy.d.ts +33 -0
  507. package/dist/target/containerBundlePolicy.js +64 -0
  508. package/dist/target/containerBundleStore.d.ts +127 -0
  509. package/dist/target/containerBundleStore.js +284 -0
  510. package/dist/target/contracts.d.ts +538 -0
  511. package/dist/target/contracts.js +373 -0
  512. package/dist/target/dockerArtifactIdentityTypes.d.ts +56 -0
  513. package/dist/target/dockerArtifactIdentityTypes.js +1 -0
  514. package/dist/target/dockerArtifactInspection.d.ts +40 -0
  515. package/dist/target/dockerArtifactInspection.js +125 -0
  516. package/dist/target/dockerArtifacts.d.ts +21 -0
  517. package/dist/target/dockerArtifacts.js +110 -0
  518. package/dist/target/dockerArtifactsProvider.d.ts +41 -0
  519. package/dist/target/dockerArtifactsProvider.js +449 -0
  520. package/dist/target/dockerCommandExecutor.d.ts +27 -0
  521. package/dist/target/dockerCommandExecutor.js +200 -0
  522. package/dist/target/dockerCommandExecutorCore.d.ts +34 -0
  523. package/dist/target/dockerCommandExecutorCore.js +273 -0
  524. package/dist/target/dockerContainerBundleBuilder.d.ts +8 -0
  525. package/dist/target/dockerContainerBundleBuilder.js +256 -0
  526. package/dist/target/dockerContextSnapshot.d.ts +21 -0
  527. package/dist/target/dockerContextSnapshot.js +158 -0
  528. package/dist/target/dockerEndpointFingerprint.d.ts +1 -0
  529. package/dist/target/dockerEndpointFingerprint.js +9 -0
  530. package/dist/target/dockerPreparedArtifact.d.ts +48 -0
  531. package/dist/target/dockerPreparedArtifact.js +131 -0
  532. package/dist/target/dockerProjectionJson.d.ts +1 -0
  533. package/dist/target/dockerProjectionJson.js +80 -0
  534. package/dist/target/dockerPublicArtifactSnapshot.d.ts +17 -0
  535. package/dist/target/dockerPublicArtifactSnapshot.js +99 -0
  536. package/dist/target/dockerResources.d.ts +26 -0
  537. package/dist/target/dockerResources.js +162 -0
  538. package/dist/target/dockerResourcesProvider.d.ts +44 -0
  539. package/dist/target/dockerResourcesProvider.js +207 -0
  540. package/dist/target/dockerSecrets.d.ts +39 -0
  541. package/dist/target/dockerSecrets.js +249 -0
  542. package/dist/target/dockerSecretsAuthority.d.ts +26 -0
  543. package/dist/target/dockerSecretsAuthority.js +216 -0
  544. package/dist/target/dockerSecretsLifecycle.d.ts +25 -0
  545. package/dist/target/dockerSecretsLifecycle.js +133 -0
  546. package/dist/target/dockerSecretsProvider.d.ts +68 -0
  547. package/dist/target/dockerSecretsProvider.js +329 -0
  548. package/dist/target/dockerTarget.d.ts +52 -0
  549. package/dist/target/dockerTarget.js +48 -0
  550. package/dist/target/dockerTargetBinding.d.ts +14 -0
  551. package/dist/target/dockerTargetBinding.js +96 -0
  552. package/dist/target/dockerWorldClock.d.ts +17 -0
  553. package/dist/target/dockerWorldClock.js +111 -0
  554. package/dist/target/dockerWorldReadiness.d.ts +17 -0
  555. package/dist/target/dockerWorldReadiness.js +119 -0
  556. package/dist/target/dockerWorldService.d.ts +23 -0
  557. package/dist/target/dockerWorldService.js +216 -0
  558. package/dist/target/dockerWorldServiceAuthority.d.ts +80 -0
  559. package/dist/target/dockerWorldServiceAuthority.js +182 -0
  560. package/dist/target/dockerWorldServiceLifecycle.d.ts +41 -0
  561. package/dist/target/dockerWorldServiceLifecycle.js +275 -0
  562. package/dist/target/dockerWorldServiceProvider.d.ts +60 -0
  563. package/dist/target/dockerWorldServiceProvider.js +318 -0
  564. package/dist/target/dockerWorldServiceStore.d.ts +73 -0
  565. package/dist/target/dockerWorldServiceStore.js +367 -0
  566. package/dist/target/evidenceExport.d.ts +55 -0
  567. package/dist/target/evidenceExport.js +518 -0
  568. package/dist/target/evidenceExportArchive.d.ts +10 -0
  569. package/dist/target/evidenceExportArchive.js +302 -0
  570. package/dist/target/evidenceExportContract.d.ts +27 -0
  571. package/dist/target/evidenceExportContract.js +40 -0
  572. package/dist/target/evidenceExportOperationsTestKit.d.ts +87 -0
  573. package/dist/target/evidenceExportOperationsTestKit.js +312 -0
  574. package/dist/target/evidenceExportProvider.d.ts +85 -0
  575. package/dist/target/evidenceExportProvider.js +187 -0
  576. package/dist/target/evidenceExportPublicationTypes.d.ts +16 -0
  577. package/dist/target/evidenceExportPublicationTypes.js +1 -0
  578. package/dist/target/evidenceExportStore.d.ts +70 -0
  579. package/dist/target/evidenceExportStore.js +498 -0
  580. package/dist/target/evidenceExportStorePublication.d.ts +7 -0
  581. package/dist/target/evidenceExportStorePublication.js +395 -0
  582. package/dist/target/handles.d.ts +20 -0
  583. package/dist/target/handles.js +56 -0
  584. package/dist/target/index.d.ts +12 -0
  585. package/dist/target/index.js +11 -0
  586. package/dist/target/journal.d.ts +59 -0
  587. package/dist/target/journal.js +529 -0
  588. package/dist/target/journalFilesystem.d.ts +3 -0
  589. package/dist/target/journalFilesystem.js +111 -0
  590. package/dist/target/journalRoot.d.ts +4 -0
  591. package/dist/target/journalRoot.js +6 -0
  592. package/dist/target/organizationAttachment.d.ts +23 -0
  593. package/dist/target/organizationAttachment.js +263 -0
  594. package/dist/target/organizationAttachmentAuthority.d.ts +65 -0
  595. package/dist/target/organizationAttachmentAuthority.js +161 -0
  596. package/dist/target/organizationAttachmentLifecycle.d.ts +17 -0
  597. package/dist/target/organizationAttachmentLifecycle.js +101 -0
  598. package/dist/target/organizationAttachmentProvider.d.ts +76 -0
  599. package/dist/target/organizationAttachmentProvider.js +289 -0
  600. package/dist/target/organizationAttachmentStore.d.ts +51 -0
  601. package/dist/target/organizationAttachmentStore.js +316 -0
  602. package/dist/target/publicArtifactSnapshot.d.ts +41 -0
  603. package/dist/target/publicArtifactSnapshot.js +150 -0
  604. package/dist/target/topologyActivation.d.ts +51 -0
  605. package/dist/target/topologyActivation.js +149 -0
  606. package/dist/target/topologyAttestation.d.ts +37 -0
  607. package/dist/target/topologyAttestation.js +300 -0
  608. package/dist/target/topologyAttestationErrors.d.ts +1 -0
  609. package/dist/target/topologyAttestationErrors.js +1 -0
  610. package/dist/target/worldClock.d.ts +60 -0
  611. package/dist/target/worldClock.js +129 -0
  612. package/dist/target/worldReadiness.d.ts +103 -0
  613. package/dist/target/worldReadiness.js +153 -0
  614. package/moltnet-releases.json +20 -0
  615. package/package.json +29 -8
  616. package/runtimes.yaml +28 -27
  617. package/dist/runtime/openclaw/scaffold-assets/CLAUDE.md +0 -5
  618. package/dist/runtime/picoclaw/scaffold-assets/CLAUDE.md +0 -5
  619. /package/dist/runtime/openclaw/scaffold-assets/{AGENTS.md → WORKSPACE_AGENTS.md} +0 -0
  620. /package/dist/runtime/picoclaw/scaffold-assets/{AGENTS.md → WORKSPACE_AGENTS.md} +0 -0
@@ -0,0 +1,99 @@
1
+ import { TARGET_SECRET_SOURCE_ERROR } from "./targetSecretSourceRecordCommon.js";
2
+ import { initializeTargetSecretSourceFsRead } from "./targetSecretSourceFsRead.js";
3
+ import { createTargetSecretSourceGrantRecordBytes, createTargetSecretSourceGrantMetadata } from "./targetSecretSourceGrantRecords.js";
4
+ import { initializeTargetSecretSourceRecordPublish } from "./targetSecretSourceRecordPublish.js";
5
+ import { deriveTargetSecretSourceOwnerEntropy } from "./targetSecretSourceOwnerEntropy.js";
6
+ import { assertTargetSecretSourceAliasCorrelation } from "./targetSecretSourceVersionRecords.js";
7
+ const fail = () => { throw new Error(TARGET_SECRET_SOURCE_ERROR); };
8
+ const sameGrant = (left, right) => left.descriptor_digest === right.descriptor_digest
9
+ && left.name === right.name
10
+ && left.run_id === right.run_id
11
+ && left.scope === right.scope
12
+ && left.source_handle === right.source_handle
13
+ && left.source_version_handle === right.source_version_handle
14
+ && left.selected_target.fingerprint === right.selected_target.fingerprint
15
+ && left.selected_target.handle === right.selected_target.handle
16
+ && left.selected_target.version === right.selected_target.version;
17
+ export const initializeTargetSecretSourceGrant = async (options = {}) => {
18
+ const reader = options.reader ?? await initializeTargetSecretSourceFsRead();
19
+ const publisher = options.publisher ?? await initializeTargetSecretSourceRecordPublish();
20
+ return Object.freeze({
21
+ grantSource: async (input) => {
22
+ let versionSecret;
23
+ let grantBytes;
24
+ try {
25
+ const alias = await reader.readAlias(input?.source_handle);
26
+ if (!alias)
27
+ return fail();
28
+ const version = await reader.readVersion(alias.source_version_handle);
29
+ if (!version)
30
+ return fail();
31
+ versionSecret = version.secret;
32
+ const aliasMetadata = {
33
+ source_handle: alias.source_handle,
34
+ source_version_handle: alias.source_version_handle,
35
+ version: alias.version
36
+ };
37
+ const versionMetadata = {
38
+ source_version_handle: version.source_version_handle,
39
+ version: version.version
40
+ };
41
+ assertTargetSecretSourceAliasCorrelation(aliasMetadata, versionMetadata);
42
+ if (alias.publication_handle === version.publication_handle)
43
+ fail();
44
+ const assertNotRevoked = async () => {
45
+ const [grantRevocation, versionRevocation] = await Promise.all([
46
+ reader.readRevocation(alias.source_handle),
47
+ reader.readRevocation(alias.source_version_handle)
48
+ ]);
49
+ if (grantRevocation || versionRevocation)
50
+ fail();
51
+ };
52
+ await assertNotRevoked();
53
+ const expected = createTargetSecretSourceGrantMetadata({
54
+ ...input,
55
+ source_handle: alias.source_handle,
56
+ source_version_handle: alias.source_version_handle
57
+ });
58
+ let existing;
59
+ try {
60
+ existing = await reader.readGrant(alias.source_handle);
61
+ }
62
+ catch {
63
+ existing = null;
64
+ }
65
+ if (existing) {
66
+ if (!sameGrant(existing, expected))
67
+ fail();
68
+ await assertNotRevoked();
69
+ return Object.freeze({ source_handle: alias.source_handle });
70
+ }
71
+ const { version: _grantVersion, ...grantInput } = expected;
72
+ const grant = createTargetSecretSourceGrantRecordBytes(grantInput, {
73
+ publicationEntropy: options.publicationEntropy
74
+ ?? (() => deriveTargetSecretSourceOwnerEntropy("grant.publication_handle", expected))
75
+ });
76
+ grantBytes = grant.private_bytes;
77
+ if (grant.private_metadata.publication_handle === alias.publication_handle
78
+ || grant.private_metadata.publication_handle === version.publication_handle)
79
+ fail();
80
+ try {
81
+ await publisher.publishGrant(grantBytes);
82
+ }
83
+ catch { /* prove the durable result below */ }
84
+ const joined = await reader.readGrant(alias.source_handle);
85
+ if (!joined || !sameGrant(joined, grant.metadata))
86
+ fail();
87
+ await assertNotRevoked();
88
+ return Object.freeze({ source_handle: alias.source_handle });
89
+ }
90
+ catch {
91
+ return fail();
92
+ }
93
+ finally {
94
+ versionSecret?.fill(0);
95
+ grantBytes?.fill(0);
96
+ }
97
+ }
98
+ });
99
+ };
@@ -0,0 +1,84 @@
1
+ import { type TargetSecretSourceAuthorization } from "../target/dockerSecretsAuthority.js";
2
+ import { type SelectedTargetReceipt } from "../target/contracts.js";
3
+ import { parseTargetSecretSourceOpaqueHandle } from "./targetSecretSourceRecordCommon.js";
4
+ export declare const TARGET_SECRET_SOURCE_GRANT_RECORD_VERSION: "spawnfile.auth.target-secret.grant.v1";
5
+ export declare const TARGET_SECRET_SOURCE_REDEMPTION_RECORD_VERSION: "spawnfile.auth.target-secret.redemption.v1";
6
+ export declare const TARGET_SECRET_SOURCE_REVOCATION_RECORD_VERSION: "spawnfile.auth.target-secret.revocation.v1";
7
+ export type TargetSecretSourceOpaqueHandle = ReturnType<typeof parseTargetSecretSourceOpaqueHandle>;
8
+ export type TargetSecretSourceEntropy = () => Uint8Array;
9
+ export type TargetSecretSourceGrantMetadata = Readonly<{
10
+ descriptor_digest: string;
11
+ name: string;
12
+ run_id: string;
13
+ scope: string;
14
+ selected_target: SelectedTargetReceipt;
15
+ source_handle: TargetSecretSourceOpaqueHandle;
16
+ source_version_handle: TargetSecretSourceOpaqueHandle;
17
+ version: typeof TARGET_SECRET_SOURCE_GRANT_RECORD_VERSION;
18
+ }>;
19
+ export type TargetSecretSourceGrantCommandInput = Readonly<Omit<TargetSecretSourceGrantMetadata, "source_version_handle" | "version">>;
20
+ export type TargetSecretSourceGrantRecord = Readonly<TargetSecretSourceGrantMetadata & {
21
+ publication_handle: TargetSecretSourceOpaqueHandle;
22
+ }>;
23
+ export type TargetSecretSourceRedemptionMetadata = Readonly<{
24
+ authorization: TargetSecretSourceAuthorization;
25
+ source_handle: TargetSecretSourceOpaqueHandle;
26
+ source_version_handle: TargetSecretSourceOpaqueHandle;
27
+ version: typeof TARGET_SECRET_SOURCE_REDEMPTION_RECORD_VERSION;
28
+ }>;
29
+ export type TargetSecretSourceRedemptionRecord = Readonly<TargetSecretSourceRedemptionMetadata & {
30
+ publication_handle: TargetSecretSourceOpaqueHandle;
31
+ }>;
32
+ export type TargetSecretSourceRevocationMetadata = Readonly<{
33
+ kind: "grant" | "version";
34
+ revocation_handle: TargetSecretSourceOpaqueHandle;
35
+ revoked_handle: TargetSecretSourceOpaqueHandle;
36
+ version: typeof TARGET_SECRET_SOURCE_REVOCATION_RECORD_VERSION;
37
+ }>;
38
+ export type TargetSecretSourceRevocationRecord = Readonly<TargetSecretSourceRevocationMetadata & {
39
+ publication_handle: TargetSecretSourceOpaqueHandle;
40
+ }>;
41
+ export type TargetSecretSourceGrantRecordBytes = Uint8Array & {
42
+ readonly __brand: "TargetSecretSourceGrantRecordBytes";
43
+ };
44
+ export type TargetSecretSourceRedemptionRecordBytes = Uint8Array & {
45
+ readonly __brand: "TargetSecretSourceRedemptionRecordBytes";
46
+ };
47
+ export type TargetSecretSourceRevocationRecordBytes = Uint8Array & {
48
+ readonly __brand: "TargetSecretSourceRevocationRecordBytes";
49
+ };
50
+ export declare const parseTargetSecretSourceGrantCommandInput: (value: unknown) => TargetSecretSourceGrantCommandInput;
51
+ export declare const createTargetSecretSourceGrantMetadata: (raw: unknown) => TargetSecretSourceGrantMetadata;
52
+ export declare const createTargetSecretSourceGrantRecordBytes: (raw: unknown, options?: {
53
+ readonly publicationEntropy?: TargetSecretSourceEntropy;
54
+ }) => {
55
+ readonly private_bytes: TargetSecretSourceGrantRecordBytes;
56
+ readonly private_metadata: TargetSecretSourceGrantRecord;
57
+ readonly metadata: TargetSecretSourceGrantMetadata;
58
+ };
59
+ export declare const parseTargetSecretSourceGrantRecordBytes: (raw: Uint8Array, expectedLeafHandle: TargetSecretSourceOpaqueHandle) => TargetSecretSourceGrantRecord;
60
+ export declare const parseTargetSecretSourceGrantRecordBytesForPublication: (raw: Uint8Array) => TargetSecretSourceGrantRecord;
61
+ export declare const createTargetSecretSourceRedemptionMetadata: (grant: TargetSecretSourceGrantMetadata, authorization: TargetSecretSourceAuthorization) => TargetSecretSourceRedemptionMetadata;
62
+ export declare const createTargetSecretSourceRedemptionRecordBytes: (grant: TargetSecretSourceGrantMetadata, authorization: TargetSecretSourceAuthorization, options?: {
63
+ readonly publicationEntropy?: TargetSecretSourceEntropy;
64
+ }) => {
65
+ readonly private_bytes: TargetSecretSourceRedemptionRecordBytes;
66
+ readonly private_metadata: TargetSecretSourceRedemptionRecord;
67
+ readonly metadata: TargetSecretSourceRedemptionMetadata;
68
+ };
69
+ export declare const parseTargetSecretSourceRedemptionRecordBytes: (raw: Uint8Array, expectedLeafHandle: TargetSecretSourceOpaqueHandle) => TargetSecretSourceRedemptionRecord;
70
+ export declare const parseTargetSecretSourceRedemptionRecordBytesForPublication: (raw: Uint8Array) => TargetSecretSourceRedemptionRecord;
71
+ export declare const assertTargetSecretSourceRedemptionCorrelation: (redemption: TargetSecretSourceRedemptionMetadata, grant: TargetSecretSourceGrantMetadata) => void;
72
+ export declare const createTargetSecretSourceRevocationRecordBytes: (raw: {
73
+ readonly kind: "grant" | "version";
74
+ readonly revoked_handle: TargetSecretSourceOpaqueHandle;
75
+ }, options?: {
76
+ readonly entropy?: TargetSecretSourceEntropy;
77
+ readonly publicationEntropy?: TargetSecretSourceEntropy;
78
+ }) => {
79
+ readonly private_bytes: TargetSecretSourceRevocationRecordBytes;
80
+ readonly private_metadata: TargetSecretSourceRevocationRecord;
81
+ readonly metadata: TargetSecretSourceRevocationMetadata;
82
+ };
83
+ export declare const parseTargetSecretSourceRevocationRecordBytes: (raw: Uint8Array, expectedLeafHandle: TargetSecretSourceOpaqueHandle) => TargetSecretSourceRevocationRecord;
84
+ export declare const parseTargetSecretSourceRevocationRecordBytesForPublication: (raw: Uint8Array) => TargetSecretSourceRevocationRecord;
@@ -0,0 +1,214 @@
1
+ import { Buffer } from "node:buffer";
2
+ import { randomBytes } from "node:crypto";
3
+ import { parseTargetSecretSourceAuthorization } from "../target/dockerSecretsAuthority.js";
4
+ import { parseSelectedTargetReceipt } from "../target/contracts.js";
5
+ import { TARGET_SECRET_SOURCE_ERROR, assertOrdinaryJsonGraph, createCanonicalTargetSecretSourceJson, parseCanonicalTargetSecretSourceJson, parseTargetSecretSourceOpaqueHandle } from "./targetSecretSourceRecordCommon.js";
6
+ export const TARGET_SECRET_SOURCE_GRANT_RECORD_VERSION = "spawnfile.auth.target-secret.grant.v1";
7
+ export const TARGET_SECRET_SOURCE_REDEMPTION_RECORD_VERSION = "spawnfile.auth.target-secret.redemption.v1";
8
+ export const TARGET_SECRET_SOURCE_REVOCATION_RECORD_VERSION = "spawnfile.auth.target-secret.revocation.v1";
9
+ const GRANT_KEYS = ["descriptor_digest", "name", "publication_handle", "run_id", "scope", "selected_target", "source_handle", "source_version_handle", "version"];
10
+ const GRANT_METADATA_KEYS = GRANT_KEYS.filter((key) => key !== "publication_handle");
11
+ const GRANT_INPUT_KEYS = GRANT_METADATA_KEYS.filter((key) => key !== "version");
12
+ const GRANT_COMMAND_INPUT_KEYS = GRANT_INPUT_KEYS.filter((key) => key !== "source_version_handle");
13
+ const REDEMPTION_KEYS = ["authorization", "publication_handle", "source_handle", "source_version_handle", "version"];
14
+ const REDEMPTION_METADATA_KEYS = REDEMPTION_KEYS.filter((key) => key !== "publication_handle");
15
+ const REVOCATION_KEYS = ["kind", "publication_handle", "revocation_handle", "revoked_handle", "version"];
16
+ const REVOCATION_METADATA_KEYS = REVOCATION_KEYS.filter((key) => key !== "publication_handle");
17
+ const PLACEHOLDER_HANDLE = "opaque_0000000000000000";
18
+ const PLACEHOLDER_DIGEST = `sha256:${"0".repeat(64)}`;
19
+ const fail = () => { throw new Error(TARGET_SECRET_SOURCE_ERROR); };
20
+ const normalize = (work) => { try {
21
+ return work();
22
+ }
23
+ catch {
24
+ return fail();
25
+ } };
26
+ const freeze = (value) => Object.freeze(value);
27
+ const defaultEntropy = () => {
28
+ const bytes = randomBytes(16);
29
+ try {
30
+ return Uint8Array.from(bytes);
31
+ }
32
+ finally {
33
+ bytes.fill(0);
34
+ }
35
+ };
36
+ const opaqueFromEntropy = (entropy) => normalize(() => {
37
+ const raw = entropy();
38
+ if (!(raw instanceof Uint8Array) || raw.length < 8 || raw.length > 32)
39
+ fail();
40
+ const copy = Uint8Array.from(raw);
41
+ const encoded = Buffer.from(copy);
42
+ try {
43
+ return parseTargetSecretSourceOpaqueHandle(`opaque_${encoded.toString("hex")}`);
44
+ }
45
+ finally {
46
+ encoded.fill(0);
47
+ copy.fill(0);
48
+ }
49
+ });
50
+ const exact = (value, keys) => {
51
+ assertOrdinaryJsonGraph(value);
52
+ if (value === null || typeof value !== "object" || Array.isArray(value))
53
+ fail();
54
+ const record = value;
55
+ const actual = Object.keys(record).sort();
56
+ if (actual.length !== keys.length || actual.some((key, index) => key !== keys[index]))
57
+ fail();
58
+ return record;
59
+ };
60
+ export const parseTargetSecretSourceGrantCommandInput = (value) => normalize(() => {
61
+ const record = exact(value, GRANT_COMMAND_INPUT_KEYS);
62
+ const selected = parseSelectedTargetReceipt(record.selected_target);
63
+ const sourceHandle = parseTargetSecretSourceOpaqueHandle(record.source_handle);
64
+ const authorization = parseTargetSecretSourceAuthorization({
65
+ descriptorDigest: record.descriptor_digest, name: record.name, operationHandle: PLACEHOLDER_HANDLE,
66
+ requestDigest: PLACEHOLDER_DIGEST, runId: record.run_id, scope: record.scope,
67
+ selectedTarget: { fingerprint: selected.fingerprint, handle: selected.handle }, sourceHandle,
68
+ version: "spawnfile.target-secret-source.authorization.v1"
69
+ });
70
+ if (sourceHandle === selected.handle)
71
+ fail();
72
+ return freeze({ descriptor_digest: authorization.descriptorDigest, name: authorization.name,
73
+ run_id: authorization.runId, scope: authorization.scope, selected_target: freeze({ ...selected }),
74
+ source_handle: sourceHandle });
75
+ });
76
+ const parseGrantMetadata = (value, expectedKeys = GRANT_METADATA_KEYS) => normalize(() => {
77
+ const record = exact(value, expectedKeys);
78
+ if (expectedKeys === GRANT_METADATA_KEYS && record.version !== TARGET_SECRET_SOURCE_GRANT_RECORD_VERSION)
79
+ fail();
80
+ const command = parseTargetSecretSourceGrantCommandInput(Object.fromEntries(GRANT_COMMAND_INPUT_KEYS.map((key) => [key, record[key]])));
81
+ const sourceVersionHandle = parseTargetSecretSourceOpaqueHandle(record.source_version_handle);
82
+ if (command.source_handle === sourceVersionHandle
83
+ || sourceVersionHandle === command.selected_target.handle)
84
+ fail();
85
+ return freeze({ ...command,
86
+ source_version_handle: sourceVersionHandle, version: TARGET_SECRET_SOURCE_GRANT_RECORD_VERSION });
87
+ });
88
+ const parseGrant = (value) => normalize(() => {
89
+ const record = exact(value, GRANT_KEYS);
90
+ const metadata = parseGrantMetadata(Object.fromEntries(GRANT_METADATA_KEYS.map((key) => [key, record[key]])));
91
+ const publicationHandle = parseTargetSecretSourceOpaqueHandle(record.publication_handle);
92
+ if (publicationHandle === metadata.source_handle || publicationHandle === metadata.source_version_handle
93
+ || publicationHandle === metadata.selected_target.handle)
94
+ fail();
95
+ return freeze({ publication_handle: publicationHandle, ...metadata });
96
+ });
97
+ const sameGrantAuthorization = (grant, authorization) => grant.descriptor_digest === authorization.descriptorDigest && grant.name === authorization.name && grant.run_id === authorization.runId
98
+ && grant.scope === authorization.scope && grant.source_handle === authorization.sourceHandle
99
+ && grant.selected_target.fingerprint === authorization.selectedTarget.fingerprint && grant.selected_target.handle === authorization.selectedTarget.handle;
100
+ export const createTargetSecretSourceGrantMetadata = (raw) => normalize(() => parseGrantMetadata(raw, GRANT_INPUT_KEYS));
101
+ const parseRedemptionMetadata = (value) => normalize(() => {
102
+ const record = exact(value, REDEMPTION_METADATA_KEYS);
103
+ if (record.version !== TARGET_SECRET_SOURCE_REDEMPTION_RECORD_VERSION)
104
+ fail();
105
+ const authorization = parseTargetSecretSourceAuthorization(record.authorization);
106
+ const sourceHandle = parseTargetSecretSourceOpaqueHandle(record.source_handle);
107
+ const sourceVersionHandle = parseTargetSecretSourceOpaqueHandle(record.source_version_handle);
108
+ if (new Set([
109
+ sourceHandle, sourceVersionHandle, authorization.operationHandle, authorization.selectedTarget.handle
110
+ ]).size !== 4)
111
+ fail();
112
+ return freeze({ authorization, source_handle: sourceHandle,
113
+ source_version_handle: sourceVersionHandle, version: TARGET_SECRET_SOURCE_REDEMPTION_RECORD_VERSION });
114
+ });
115
+ const parseRedemption = (value) => normalize(() => {
116
+ const record = exact(value, REDEMPTION_KEYS);
117
+ const metadata = parseRedemptionMetadata(Object.fromEntries(REDEMPTION_METADATA_KEYS.map((key) => [key, record[key]])));
118
+ const publicationHandle = parseTargetSecretSourceOpaqueHandle(record.publication_handle);
119
+ if (publicationHandle === metadata.source_handle || publicationHandle === metadata.source_version_handle
120
+ || publicationHandle === metadata.authorization.operationHandle
121
+ || publicationHandle === metadata.authorization.selectedTarget.handle)
122
+ fail();
123
+ return freeze({ publication_handle: publicationHandle, ...metadata });
124
+ });
125
+ const parseRevocationMetadata = (value) => normalize(() => {
126
+ const record = exact(value, REVOCATION_METADATA_KEYS);
127
+ if (record.version !== TARGET_SECRET_SOURCE_REVOCATION_RECORD_VERSION || (record.kind !== "grant" && record.kind !== "version"))
128
+ fail();
129
+ const revoked = parseTargetSecretSourceOpaqueHandle(record.revoked_handle);
130
+ const handle = parseTargetSecretSourceOpaqueHandle(record.revocation_handle);
131
+ if (revoked === handle)
132
+ fail();
133
+ return freeze({ kind: record.kind, revoked_handle: revoked, revocation_handle: handle, version: TARGET_SECRET_SOURCE_REVOCATION_RECORD_VERSION });
134
+ });
135
+ const parseRevocation = (value) => normalize(() => {
136
+ const record = exact(value, REVOCATION_KEYS);
137
+ const metadata = parseRevocationMetadata(Object.fromEntries(REVOCATION_METADATA_KEYS.map((key) => [key, record[key]])));
138
+ const publicationHandle = parseTargetSecretSourceOpaqueHandle(record.publication_handle);
139
+ if (publicationHandle === metadata.revoked_handle || publicationHandle === metadata.revocation_handle)
140
+ fail();
141
+ return freeze({ publication_handle: publicationHandle, ...metadata });
142
+ });
143
+ export const createTargetSecretSourceGrantRecordBytes = (raw, options = {}) => normalize(() => {
144
+ const input = createTargetSecretSourceGrantMetadata(raw);
145
+ const metadata = freeze(input);
146
+ const publicationHandle = opaqueFromEntropy(options.publicationEntropy ?? defaultEntropy);
147
+ if (publicationHandle === metadata.source_handle || publicationHandle === metadata.source_version_handle
148
+ || publicationHandle === metadata.selected_target.handle)
149
+ fail();
150
+ const privateMetadata = freeze({ publication_handle: publicationHandle, ...metadata });
151
+ return { private_bytes: createCanonicalTargetSecretSourceJson(privateMetadata), private_metadata: privateMetadata, metadata };
152
+ });
153
+ export const parseTargetSecretSourceGrantRecordBytes = (raw, expectedLeafHandle) => normalize(() => {
154
+ const expected = parseTargetSecretSourceOpaqueHandle(expectedLeafHandle);
155
+ const grant = parseTargetSecretSourceGrantRecordBytesForPublication(raw);
156
+ if (grant.source_handle !== expected)
157
+ fail();
158
+ return grant;
159
+ });
160
+ export const parseTargetSecretSourceGrantRecordBytesForPublication = (raw) => normalize(() => parseGrant(parseCanonicalTargetSecretSourceJson(raw)));
161
+ export const createTargetSecretSourceRedemptionMetadata = (grant, authorization) => normalize(() => {
162
+ const parsedGrant = parseGrantMetadata(grant);
163
+ const parsedAuthorization = parseTargetSecretSourceAuthorization(authorization);
164
+ if (!sameGrantAuthorization(parsedGrant, parsedAuthorization))
165
+ fail();
166
+ return parseRedemptionMetadata({ authorization: parsedAuthorization, source_handle: parsedGrant.source_handle,
167
+ source_version_handle: parsedGrant.source_version_handle, version: TARGET_SECRET_SOURCE_REDEMPTION_RECORD_VERSION });
168
+ });
169
+ export const createTargetSecretSourceRedemptionRecordBytes = (grant, authorization, options = {}) => normalize(() => {
170
+ const metadata = createTargetSecretSourceRedemptionMetadata(grant, authorization);
171
+ const publicationHandle = opaqueFromEntropy(options.publicationEntropy ?? defaultEntropy);
172
+ if (publicationHandle === metadata.source_handle || publicationHandle === metadata.source_version_handle
173
+ || publicationHandle === metadata.authorization.operationHandle
174
+ || publicationHandle === metadata.authorization.selectedTarget.handle)
175
+ fail();
176
+ const privateMetadata = freeze({ publication_handle: publicationHandle, ...metadata });
177
+ return { private_bytes: createCanonicalTargetSecretSourceJson(privateMetadata), private_metadata: privateMetadata, metadata };
178
+ });
179
+ export const parseTargetSecretSourceRedemptionRecordBytes = (raw, expectedLeafHandle) => normalize(() => {
180
+ const expected = parseTargetSecretSourceOpaqueHandle(expectedLeafHandle);
181
+ const redemption = parseTargetSecretSourceRedemptionRecordBytesForPublication(raw);
182
+ if (redemption.source_handle !== expected)
183
+ fail();
184
+ return redemption;
185
+ });
186
+ export const parseTargetSecretSourceRedemptionRecordBytesForPublication = (raw) => normalize(() => parseRedemption(parseCanonicalTargetSecretSourceJson(raw)));
187
+ export const assertTargetSecretSourceRedemptionCorrelation = (redemption, grant) => normalize(() => {
188
+ const parsedRedemption = parseRedemptionMetadata(redemption);
189
+ const parsedGrant = parseGrantMetadata(grant);
190
+ if (parsedRedemption.source_handle !== parsedGrant.source_handle || parsedRedemption.source_version_handle !== parsedGrant.source_version_handle
191
+ || !sameGrantAuthorization(parsedGrant, parsedRedemption.authorization))
192
+ fail();
193
+ });
194
+ export const createTargetSecretSourceRevocationRecordBytes = (raw, options = {}) => normalize(() => {
195
+ const input = exact(raw, ["kind", "revoked_handle"]);
196
+ if (input.kind !== "grant" && input.kind !== "version")
197
+ fail();
198
+ const revoked = parseTargetSecretSourceOpaqueHandle(input.revoked_handle);
199
+ const revocation = opaqueFromEntropy(options.entropy ?? defaultEntropy);
200
+ const publicationHandle = opaqueFromEntropy(options.publicationEntropy ?? defaultEntropy);
201
+ if (revoked === revocation || publicationHandle === revoked || publicationHandle === revocation)
202
+ fail();
203
+ const metadata = freeze({ kind: input.kind, revoked_handle: revoked, revocation_handle: revocation, version: TARGET_SECRET_SOURCE_REVOCATION_RECORD_VERSION });
204
+ const privateMetadata = freeze({ publication_handle: publicationHandle, ...metadata });
205
+ return { private_bytes: createCanonicalTargetSecretSourceJson(privateMetadata), private_metadata: privateMetadata, metadata };
206
+ });
207
+ export const parseTargetSecretSourceRevocationRecordBytes = (raw, expectedLeafHandle) => normalize(() => {
208
+ const expected = parseTargetSecretSourceOpaqueHandle(expectedLeafHandle);
209
+ const revocation = parseTargetSecretSourceRevocationRecordBytesForPublication(raw);
210
+ if (revocation.revoked_handle !== expected)
211
+ fail();
212
+ return revocation;
213
+ });
214
+ export const parseTargetSecretSourceRevocationRecordBytesForPublication = (raw) => normalize(() => parseRevocation(parseCanonicalTargetSecretSourceJson(raw)));
@@ -0,0 +1,30 @@
1
+ import type { TargetSecretSourceResolver } from "../target/dockerSecrets.js";
2
+ import { type OpaqueTargetSecretSourceHandle } from "./targetSecretSourceRecordCommon.js";
3
+ import { type TargetSecretSourceAuthor } from "./targetSecretSourceAuthor.js";
4
+ import { type TargetSecretSourceGrant } from "./targetSecretSourceGrant.js";
5
+ import { type TargetSecretSourceRevoke } from "./targetSecretSourceRevoke.js";
6
+ import { type TargetSecretSourceRotate } from "./targetSecretSourceRotate.js";
7
+ type SourceResult = Readonly<{
8
+ source_handle: OpaqueTargetSecretSourceHandle;
9
+ }>;
10
+ type RevokeResult = Readonly<{
11
+ kind: "grant" | "version";
12
+ source_handle: OpaqueTargetSecretSourceHandle;
13
+ }>;
14
+ export interface TargetSecretSourceLifecycle {
15
+ author(secret: Uint8Array): Promise<SourceResult>;
16
+ grant(input: unknown): Promise<SourceResult>;
17
+ resolver: TargetSecretSourceResolver;
18
+ revokeGrant(sourceHandle: unknown): Promise<RevokeResult>;
19
+ revokeVersion(sourceHandle: unknown): Promise<RevokeResult>;
20
+ rotate(sourceHandle: unknown, secret: Uint8Array): Promise<SourceResult>;
21
+ }
22
+ export interface TargetSecretSourceLifecycleOptions {
23
+ readonly author?: TargetSecretSourceAuthor;
24
+ readonly grant?: TargetSecretSourceGrant;
25
+ readonly resolver?: TargetSecretSourceResolver;
26
+ readonly revoke?: TargetSecretSourceRevoke;
27
+ readonly rotate?: TargetSecretSourceRotate;
28
+ }
29
+ export declare const initializeTargetSecretSourceLifecycle: (options?: TargetSecretSourceLifecycleOptions) => Promise<TargetSecretSourceLifecycle>;
30
+ export {};
@@ -0,0 +1,52 @@
1
+ import { TARGET_SECRET_SOURCE_ERROR, assertOrdinaryJsonGraph, parseTargetSecretSourceOpaqueHandle } from "./targetSecretSourceRecordCommon.js";
2
+ import { initializeTargetSecretSourceAuthor } from "./targetSecretSourceAuthor.js";
3
+ import { initializeTargetSecretSourceGrant } from "./targetSecretSourceGrant.js";
4
+ import { parseTargetSecretSourceGrantCommandInput } from "./targetSecretSourceGrantRecords.js";
5
+ import { initializeTargetSecretSourceResolver } from "./targetSecretSourceResolver.js";
6
+ import { initializeTargetSecretSourceRevoke } from "./targetSecretSourceRevoke.js";
7
+ import { initializeTargetSecretSourceRotate } from "./targetSecretSourceRotate.js";
8
+ const fail = () => { throw new Error(TARGET_SECRET_SOURCE_ERROR); };
9
+ const exact = (raw, keys) => {
10
+ assertOrdinaryJsonGraph(raw);
11
+ if (!raw || typeof raw !== "object" || Array.isArray(raw))
12
+ return fail();
13
+ const record = raw;
14
+ const actual = Object.keys(record).sort();
15
+ if (actual.length !== keys.length || actual.some((key, index) => key !== keys[index]))
16
+ fail();
17
+ return record;
18
+ };
19
+ const projectSource = (raw) => {
20
+ const record = exact(raw, ["source_handle"]);
21
+ return Object.freeze({ source_handle: parseTargetSecretSourceOpaqueHandle(record.source_handle) });
22
+ };
23
+ const projectRevoke = (raw, kind) => {
24
+ const record = exact(raw, ["kind", "source_handle"]);
25
+ if (record.kind !== kind)
26
+ fail();
27
+ return Object.freeze({ kind, source_handle: parseTargetSecretSourceOpaqueHandle(record.source_handle) });
28
+ };
29
+ export const initializeTargetSecretSourceLifecycle = async (options = {}) => {
30
+ // Each default pins the same auth-owned hierarchy; initialize sequentially.
31
+ const author = options.author ?? await initializeTargetSecretSourceAuthor();
32
+ const grant = options.grant ?? await initializeTargetSecretSourceGrant();
33
+ const rotate = options.rotate ?? await initializeTargetSecretSourceRotate();
34
+ const revoke = options.revoke ?? await initializeTargetSecretSourceRevoke();
35
+ const resolver = options.resolver ?? await initializeTargetSecretSourceResolver();
36
+ return Object.freeze({
37
+ author: async (secret) => projectSource(await author.authorVersion(secret)),
38
+ grant: async (raw) => {
39
+ const input = parseTargetSecretSourceGrantCommandInput(raw);
40
+ const result = projectSource(await grant.grantSource(input));
41
+ if (result.source_handle !== input.source_handle)
42
+ fail();
43
+ return result;
44
+ },
45
+ resolver,
46
+ revokeGrant: async (sourceHandle) => projectRevoke(await revoke.revokeGrant(sourceHandle), "grant"),
47
+ revokeVersion: async (sourceHandle) => projectRevoke(await revoke.revokeVersion(sourceHandle), "version"),
48
+ rotate: async (sourceHandle, secret) => projectSource(await rotate.rotateSource({
49
+ secret, source_handle: sourceHandle
50
+ }))
51
+ });
52
+ };
@@ -0,0 +1,6 @@
1
+ export type TargetSecretSourceOwnerEntropyDomain = "grant.publication_handle" | "redemption.publication_handle" | "revocation.revocation_handle" | "revocation.publication_handle";
2
+ /**
3
+ * Reconstructs lifecycle-record entropy solely from validated public semantics.
4
+ * The domain prefix prevents any handle role from sharing the same hash input.
5
+ */
6
+ export declare const deriveTargetSecretSourceOwnerEntropy: (domain: TargetSecretSourceOwnerEntropyDomain, publicMetadata: unknown) => Uint8Array;
@@ -0,0 +1,28 @@
1
+ import { createHash } from "node:crypto";
2
+ import { createCanonicalTargetSecretSourceJson, TARGET_SECRET_SOURCE_ERROR } from "./targetSecretSourceRecordCommon.js";
3
+ const fail = () => { throw new Error(TARGET_SECRET_SOURCE_ERROR); };
4
+ /**
5
+ * Reconstructs lifecycle-record entropy solely from validated public semantics.
6
+ * The domain prefix prevents any handle role from sharing the same hash input.
7
+ */
8
+ export const deriveTargetSecretSourceOwnerEntropy = (domain, publicMetadata) => {
9
+ let canonical;
10
+ let digest;
11
+ try {
12
+ canonical = createCanonicalTargetSecretSourceJson(publicMetadata);
13
+ digest = createHash("sha256")
14
+ .update("spawnfile.auth.target-secret.owner-entropy.v1\0", "utf8")
15
+ .update(domain, "utf8")
16
+ .update("\0", "utf8")
17
+ .update(canonical)
18
+ .digest();
19
+ return Uint8Array.from(digest.subarray(0, 16));
20
+ }
21
+ catch {
22
+ return fail();
23
+ }
24
+ finally {
25
+ canonical?.fill(0);
26
+ digest?.fill(0);
27
+ }
28
+ };
@@ -0,0 +1,14 @@
1
+ import { parseOpaqueTargetHandle } from "../target/contracts.js";
2
+ export declare const TARGET_SECRET_SOURCE_ERROR = "invalid target secret source record";
3
+ export declare const MAX_TARGET_SECRET_SOURCE_SECRET_BYTES = 32768;
4
+ export type OpaqueTargetSecretSourceHandle = ReturnType<typeof parseOpaqueTargetHandle>;
5
+ export declare const MAX_JSON_GRAPH_DEPTH = 32;
6
+ export declare const MAX_JSON_GRAPH_KEYS = 128;
7
+ export declare const MAX_JSON_GRAPH_NODES = 1024;
8
+ export declare const MAX_JSON_GRAPH_STRING_BYTES = 65536;
9
+ export declare const assertOrdinaryJsonGraph: (raw: unknown) => void;
10
+ export declare const parseCanonicalTargetSecretSourceJson: (raw: unknown) => unknown;
11
+ export declare const createCanonicalTargetSecretSourceJson: (raw: unknown) => Uint8Array;
12
+ export declare const parseTargetSecretSourceOpaqueHandle: (raw: unknown) => OpaqueTargetSecretSourceHandle;
13
+ export declare const encodeTargetSecretSourceSecret: (raw: unknown) => string;
14
+ export declare const decodeTargetSecretSourceSecret: (raw: unknown) => Uint8Array;
@@ -0,0 +1,100 @@
1
+ import { MAX_JSON_GRAPH_DEPTH as TARGET_MAX_JSON_GRAPH_DEPTH, MAX_JSON_GRAPH_KEYS as TARGET_MAX_JSON_GRAPH_KEYS, MAX_JSON_GRAPH_NODES as TARGET_MAX_JSON_GRAPH_NODES, MAX_JSON_GRAPH_STRING_BYTES as TARGET_MAX_JSON_GRAPH_STRING_BYTES, assertOrdinaryJsonGraph as assertTargetOrdinaryJsonGraph, parseOpaqueTargetHandle } from "../target/contracts.js";
2
+ import { Buffer } from "node:buffer";
3
+ const TEXT_ENCODER = new TextEncoder();
4
+ const TEXT_DECODER = new TextDecoder("utf-8", { fatal: true });
5
+ const BASE64_SECRET_PATTERN = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/u;
6
+ export const TARGET_SECRET_SOURCE_ERROR = "invalid target secret source record";
7
+ export const MAX_TARGET_SECRET_SOURCE_SECRET_BYTES = 32_768;
8
+ const MAX_ENCODED_SECRET_CHARACTERS = 4 * Math.ceil(MAX_TARGET_SECRET_SOURCE_SECRET_BYTES / 3);
9
+ export const MAX_JSON_GRAPH_DEPTH = TARGET_MAX_JSON_GRAPH_DEPTH;
10
+ export const MAX_JSON_GRAPH_KEYS = TARGET_MAX_JSON_GRAPH_KEYS;
11
+ export const MAX_JSON_GRAPH_NODES = TARGET_MAX_JSON_GRAPH_NODES;
12
+ export const MAX_JSON_GRAPH_STRING_BYTES = TARGET_MAX_JSON_GRAPH_STRING_BYTES;
13
+ const fail = () => { throw new Error(TARGET_SECRET_SOURCE_ERROR); };
14
+ const normalize = (work) => {
15
+ try {
16
+ return work();
17
+ }
18
+ catch {
19
+ return fail();
20
+ }
21
+ };
22
+ const compareCodeUnits = (left, right) => left < right ? -1 : left > right ? 1 : 0;
23
+ const canonicalize = (value) => {
24
+ if (value === null || typeof value === "string" || typeof value === "number" || typeof value === "boolean")
25
+ return value;
26
+ if (Array.isArray(value))
27
+ return value.map(canonicalize);
28
+ if (typeof value !== "object")
29
+ return fail();
30
+ const result = {};
31
+ for (const [key, nested] of Object.entries(value).sort(([a], [b]) => compareCodeUnits(a, b))) {
32
+ result[key] = canonicalize(nested);
33
+ }
34
+ return result;
35
+ };
36
+ const assertCanonicalBytes = (raw, text) => {
37
+ const canonical = TEXT_ENCODER.encode(text);
38
+ try {
39
+ if (canonical.length !== raw.length)
40
+ fail();
41
+ for (let index = 0; index < raw.length; index += 1)
42
+ if (canonical[index] !== raw[index])
43
+ fail();
44
+ }
45
+ finally {
46
+ canonical.fill(0);
47
+ }
48
+ };
49
+ export const assertOrdinaryJsonGraph = (raw) => normalize(() => {
50
+ assertTargetOrdinaryJsonGraph(raw);
51
+ });
52
+ export const parseCanonicalTargetSecretSourceJson = (raw) => normalize(() => {
53
+ if (!(raw instanceof Uint8Array) || raw.length > MAX_JSON_GRAPH_STRING_BYTES)
54
+ fail();
55
+ const bytes = raw;
56
+ const parsed = JSON.parse(TEXT_DECODER.decode(bytes));
57
+ assertTargetOrdinaryJsonGraph(parsed);
58
+ assertCanonicalBytes(bytes, JSON.stringify(canonicalize(parsed)));
59
+ return parsed;
60
+ });
61
+ export const createCanonicalTargetSecretSourceJson = (raw) => normalize(() => {
62
+ assertTargetOrdinaryJsonGraph(raw);
63
+ const encoded = TEXT_ENCODER.encode(JSON.stringify(canonicalize(raw)));
64
+ try {
65
+ if (encoded.length > MAX_JSON_GRAPH_STRING_BYTES)
66
+ fail();
67
+ return Uint8Array.from(encoded);
68
+ }
69
+ finally {
70
+ encoded.fill(0);
71
+ }
72
+ });
73
+ export const parseTargetSecretSourceOpaqueHandle = (raw) => normalize(() => parseOpaqueTargetHandle(raw));
74
+ export const encodeTargetSecretSourceSecret = (raw) => normalize(() => {
75
+ if (!(raw instanceof Uint8Array) || raw.length === 0 || raw.length > MAX_TARGET_SECRET_SOURCE_SECRET_BYTES)
76
+ fail();
77
+ const copy = Uint8Array.from(raw);
78
+ const encoded = Buffer.from(copy);
79
+ try {
80
+ return encoded.toString("base64");
81
+ }
82
+ finally {
83
+ encoded.fill(0);
84
+ copy.fill(0);
85
+ }
86
+ });
87
+ export const decodeTargetSecretSourceSecret = (raw) => normalize(() => {
88
+ if (typeof raw !== "string" || raw.length > MAX_ENCODED_SECRET_CHARACTERS || !BASE64_SECRET_PATTERN.test(raw))
89
+ fail();
90
+ const encoded = raw;
91
+ const decoded = Buffer.from(encoded, "base64");
92
+ try {
93
+ if (decoded.toString("base64") !== encoded || decoded.length === 0 || decoded.length > MAX_TARGET_SECRET_SOURCE_SECRET_BYTES)
94
+ fail();
95
+ return Uint8Array.from(decoded);
96
+ }
97
+ finally {
98
+ decoded.fill(0);
99
+ }
100
+ });
@@ -0,0 +1,10 @@
1
+ import { type TargetSecretSourceFsPublishImmutableOptions } from "./targetSecretSourceFsPublishImmutable.js";
2
+ export interface TargetSecretSourceRecordPublishOptions extends Pick<TargetSecretSourceFsPublishImmutableOptions, "hookForTest" | "maxWriteBytesForTest"> {
3
+ }
4
+ export interface TargetSecretSourceRecordPublish {
5
+ publishAlias(bytes: Uint8Array): Promise<void>;
6
+ publishGrant(bytes: Uint8Array): Promise<void>;
7
+ publishRedemption(bytes: Uint8Array): Promise<void>;
8
+ publishRevocation(bytes: Uint8Array): Promise<void>;
9
+ }
10
+ export declare const initializeTargetSecretSourceRecordPublish: (options?: TargetSecretSourceRecordPublishOptions) => Promise<TargetSecretSourceRecordPublish>;