spawnfile 0.1.13 → 0.1.17

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 (950) hide show
  1. package/README.md +61 -121
  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/importers.d.ts +10 -0
  27. package/dist/auth/importers.js +29 -4
  28. package/dist/auth/index.d.ts +9 -0
  29. package/dist/auth/index.js +8 -0
  30. package/dist/auth/paths.d.ts +12 -1
  31. package/dist/auth/paths.js +21 -0
  32. package/dist/auth/profileStore.js +9 -9
  33. package/dist/auth/targetSecretSourceAuthor.d.ts +18 -0
  34. package/dist/auth/targetSecretSourceAuthor.js +52 -0
  35. package/dist/auth/targetSecretSourceFsIdentity.d.ts +40 -0
  36. package/dist/auth/targetSecretSourceFsIdentity.js +42 -0
  37. package/dist/auth/targetSecretSourceFsPublish.d.ts +17 -0
  38. package/dist/auth/targetSecretSourceFsPublish.js +51 -0
  39. package/dist/auth/targetSecretSourceFsPublishImmutable.d.ts +17 -0
  40. package/dist/auth/targetSecretSourceFsPublishImmutable.js +468 -0
  41. package/dist/auth/targetSecretSourceFsRead.d.ts +14 -0
  42. package/dist/auth/targetSecretSourceFsRead.js +189 -0
  43. package/dist/auth/targetSecretSourceGrant.d.ts +16 -0
  44. package/dist/auth/targetSecretSourceGrant.js +99 -0
  45. package/dist/auth/targetSecretSourceGrantRecords.d.ts +84 -0
  46. package/dist/auth/targetSecretSourceGrantRecords.js +214 -0
  47. package/dist/auth/targetSecretSourceLifecycle.d.ts +30 -0
  48. package/dist/auth/targetSecretSourceLifecycle.js +52 -0
  49. package/dist/auth/targetSecretSourceOwnerEntropy.d.ts +6 -0
  50. package/dist/auth/targetSecretSourceOwnerEntropy.js +28 -0
  51. package/dist/auth/targetSecretSourceRecordCommon.d.ts +14 -0
  52. package/dist/auth/targetSecretSourceRecordCommon.js +100 -0
  53. package/dist/auth/targetSecretSourceRecordPublish.d.ts +10 -0
  54. package/dist/auth/targetSecretSourceRecordPublish.js +104 -0
  55. package/dist/auth/targetSecretSourceResolver.d.ts +10 -0
  56. package/dist/auth/targetSecretSourceResolver.js +137 -0
  57. package/dist/auth/targetSecretSourceRevoke.d.ts +20 -0
  58. package/dist/auth/targetSecretSourceRevoke.js +92 -0
  59. package/dist/auth/targetSecretSourceRotate.d.ts +19 -0
  60. package/dist/auth/targetSecretSourceRotate.js +121 -0
  61. package/dist/auth/targetSecretSourceVersionRecords.d.ts +49 -0
  62. package/dist/auth/targetSecretSourceVersionRecords.js +166 -0
  63. package/dist/auth/trainingAuth.d.ts +21 -0
  64. package/dist/auth/trainingAuth.js +86 -0
  65. package/dist/auth/types.d.ts +1 -1
  66. package/dist/cli/artifactsCommands.d.ts +27 -0
  67. package/dist/cli/artifactsCommands.js +132 -0
  68. package/dist/cli/authCommands.d.ts +5 -0
  69. package/dist/cli/authCommands.js +230 -0
  70. package/dist/cli/canaryCutoverCommand.d.ts +2 -0
  71. package/dist/cli/canaryCutoverCommand.js +30 -0
  72. package/dist/cli/capabilitiesCommand.d.ts +3 -0
  73. package/dist/cli/capabilitiesCommand.js +12 -0
  74. package/dist/cli/capabilitiesReceipt.d.ts +56 -0
  75. package/dist/cli/capabilitiesReceipt.js +56 -0
  76. package/dist/cli/compileBuildCommands.d.ts +3 -0
  77. package/dist/cli/compileBuildCommands.js +48 -0
  78. package/dist/cli/composedLifecycleContractSet.d.ts +21 -0
  79. package/dist/cli/composedLifecycleContractSet.js +204 -0
  80. package/dist/cli/containerBundleCommand.d.ts +6 -0
  81. package/dist/cli/containerBundleCommand.js +116 -0
  82. package/dist/cli/devCommands.js +2 -0
  83. package/dist/cli/downCommand.d.ts +25 -0
  84. package/dist/cli/downCommand.js +145 -0
  85. package/dist/cli/evidenceExportHelperCommand.d.ts +13 -0
  86. package/dist/cli/evidenceExportHelperCommand.js +51 -0
  87. package/dist/cli/index.js +15 -3
  88. package/dist/cli/lifecycleCommands.d.ts +1 -1
  89. package/dist/cli/lifecycleCommands.js +11 -181
  90. package/dist/cli/lifecycleMachine.d.ts +25 -0
  91. package/dist/cli/lifecycleMachine.js +78 -0
  92. package/dist/cli/lifecyclePlan.d.ts +35 -0
  93. package/dist/cli/lifecyclePlan.js +240 -0
  94. package/dist/cli/lifecyclePlanningCommands.d.ts +3 -0
  95. package/dist/cli/lifecyclePlanningCommands.js +30 -0
  96. package/dist/cli/paideiaDelegation.d.ts +17 -0
  97. package/dist/cli/paideiaDelegation.js +210 -0
  98. package/dist/cli/paideiaSupervisor.d.ts +17 -0
  99. package/dist/cli/paideiaSupervisor.js +48 -0
  100. package/dist/cli/productStateCloneCommand.d.ts +2 -0
  101. package/dist/cli/productStateCloneCommand.js +34 -0
  102. package/dist/cli/runCli.d.ts +19 -2
  103. package/dist/cli/runCli.js +58 -74
  104. package/dist/cli/runPublishCommands.d.ts +3 -0
  105. package/dist/cli/runPublishCommands.js +70 -0
  106. package/dist/cli/statusCommand.d.ts +3 -33
  107. package/dist/cli/statusCommand.js +19 -249
  108. package/dist/cli/statusCommandLive.d.ts +20 -0
  109. package/dist/cli/statusCommandLive.js +188 -0
  110. package/dist/cli/statusCommandOptions.d.ts +40 -0
  111. package/dist/cli/statusCommandOptions.js +42 -0
  112. package/dist/cli/targetCliRoute.d.ts +2 -0
  113. package/dist/cli/targetCliRoute.js +30 -0
  114. package/dist/cli/targetCommands.d.ts +30 -0
  115. package/dist/cli/targetCommands.js +227 -0
  116. package/dist/cli/targetComposedPreparationCommand.d.ts +6 -0
  117. package/dist/cli/targetComposedPreparationCommand.js +39 -0
  118. package/dist/cli/targetConfigPreparedPlan.d.ts +3 -0
  119. package/dist/cli/targetConfigPreparedPlan.js +74 -0
  120. package/dist/cli/targetConfigResolver.d.ts +3 -0
  121. package/dist/cli/targetConfigResolver.js +111 -0
  122. package/dist/cli/targetConfigResolverCommand.d.ts +6 -0
  123. package/dist/cli/targetConfigResolverCommand.js +43 -0
  124. package/dist/cli/targetConfigResolverContracts.d.ts +56 -0
  125. package/dist/cli/targetConfigResolverContracts.js +30 -0
  126. package/dist/cli/targetConfigResolverDocker.d.ts +4 -0
  127. package/dist/cli/targetConfigResolverDocker.js +47 -0
  128. package/dist/cli/targetConfigResolverValidation.d.ts +10 -0
  129. package/dist/cli/targetConfigResolverValidation.js +94 -0
  130. package/dist/cli/targetDefaultArtifactAuthority.d.ts +5 -0
  131. package/dist/cli/targetDefaultArtifactAuthority.js +28 -0
  132. package/dist/cli/targetDefaultAuthorities.d.ts +55 -0
  133. package/dist/cli/targetDefaultAuthorities.js +213 -0
  134. package/dist/cli/targetDefaultConfig.d.ts +75 -0
  135. package/dist/cli/targetDefaultConfig.js +334 -0
  136. package/dist/cli/targetDefaultConfigStdin.d.ts +13 -0
  137. package/dist/cli/targetDefaultConfigStdin.js +221 -0
  138. package/dist/cli/targetDefaultEnvelope.d.ts +1 -0
  139. package/dist/cli/targetDefaultEnvelope.js +13 -0
  140. package/dist/cli/targetDefaultHandlerFactory.d.ts +28 -0
  141. package/dist/cli/targetDefaultHandlerFactory.js +268 -0
  142. package/dist/cli/targetDefaultHandlers.d.ts +21 -0
  143. package/dist/cli/targetDefaultHandlers.js +72 -0
  144. package/dist/cli/targetDefaultJournalAuthority.d.ts +35 -0
  145. package/dist/cli/targetDefaultJournalAuthority.js +135 -0
  146. package/dist/cli/targetDefaultWorldClock.d.ts +4 -0
  147. package/dist/cli/targetDefaultWorldClock.js +14 -0
  148. package/dist/cli/targetDefaultWorldQueries.d.ts +5 -0
  149. package/dist/cli/targetDefaultWorldQueries.js +11 -0
  150. package/dist/cli/targetDefaultWorldReadiness.d.ts +4 -0
  151. package/dist/cli/targetDefaultWorldReadiness.js +17 -0
  152. package/dist/cli/targetEvidenceHelperResolution.d.ts +14 -0
  153. package/dist/cli/targetEvidenceHelperResolution.js +23 -0
  154. package/dist/cli/targetLookupCli.d.ts +3 -0
  155. package/dist/cli/targetLookupCli.js +31 -0
  156. package/dist/cli/targetLookupCommands.d.ts +12 -0
  157. package/dist/cli/targetLookupCommands.js +69 -0
  158. package/dist/cli/targetOperationDispatch.d.ts +58 -0
  159. package/dist/cli/targetOperationDispatch.js +21 -0
  160. package/dist/cli/targetProductionCommands.d.ts +5 -0
  161. package/dist/cli/targetProductionCommands.js +45 -0
  162. package/dist/cli/targetReceiptOutput.d.ts +14 -0
  163. package/dist/cli/targetReceiptOutput.js +21 -0
  164. package/dist/cli/targetRequestFile.d.ts +14 -0
  165. package/dist/cli/targetRequestFile.js +63 -0
  166. package/dist/cli/targetSecretSourceInput.d.ts +28 -0
  167. package/dist/cli/targetSecretSourceInput.js +121 -0
  168. package/dist/cli/targetWorldClockCommand.d.ts +10 -0
  169. package/dist/cli/targetWorldClockCommand.js +42 -0
  170. package/dist/cli/targetWorldReadinessCommand.d.ts +10 -0
  171. package/dist/cli/targetWorldReadinessCommand.js +43 -0
  172. package/dist/cli/trainCommand.d.ts +3 -0
  173. package/dist/cli/trainCommand.js +61 -0
  174. package/dist/cli/upCommand.d.ts +3 -0
  175. package/dist/cli/upCommand.js +162 -0
  176. package/dist/cli/upImageCommand.d.ts +11 -0
  177. package/dist/cli/upImageCommand.js +41 -0
  178. package/dist/cli/upLifecycleInvocation.d.ts +41 -0
  179. package/dist/cli/upLifecycleInvocation.js +48 -0
  180. package/dist/cli/upLifecycleRecovery.d.ts +4 -0
  181. package/dist/cli/upLifecycleRecovery.js +197 -0
  182. package/dist/cli/usageCommand.d.ts +40 -0
  183. package/dist/cli/usageCommand.js +284 -0
  184. package/dist/cli/usageCommandLive.d.ts +84 -0
  185. package/dist/cli/usageCommandLive.js +95 -0
  186. package/dist/cli/usageDeploymentSource.d.ts +9 -0
  187. package/dist/cli/usageDeploymentSource.js +22 -0
  188. package/dist/cli/workspaceResourceMigrationCommand.d.ts +8 -0
  189. package/dist/cli/workspaceResourceMigrationCommand.js +36 -0
  190. package/dist/compiler/agentNodeMerge.d.ts +2 -0
  191. package/dist/compiler/agentNodeMerge.js +79 -0
  192. package/dist/compiler/agentSurfaces.js +11 -1
  193. package/dist/compiler/buildCompilePlan.js +17 -0
  194. package/dist/compiler/buildCompilePlanAgent.d.ts +11 -0
  195. package/dist/compiler/buildCompilePlanAgent.js +56 -0
  196. package/dist/compiler/buildCompilePlanTeams.d.ts +2 -1
  197. package/dist/compiler/buildCompilePlanTeams.js +9 -1
  198. package/dist/compiler/buildCompilePlanTraversal.js +75 -82
  199. package/dist/compiler/buildProject.d.ts +11 -0
  200. package/dist/compiler/buildProject.js +77 -2
  201. package/dist/compiler/compilePlanHelpers.js +5 -0
  202. package/dist/compiler/compileProject.d.ts +15 -0
  203. package/dist/compiler/compileProject.js +31 -75
  204. package/dist/compiler/compileProjectPolicy.d.ts +5 -0
  205. package/dist/compiler/compileProjectPolicy.js +21 -0
  206. package/dist/compiler/compileProjectReports.d.ts +9 -0
  207. package/dist/compiler/compileProjectReports.js +52 -0
  208. package/dist/compiler/compileProjectSupport.js +9 -0
  209. package/dist/compiler/containerArtifactSummaries.d.ts +7 -0
  210. package/dist/compiler/containerArtifactSummaries.js +138 -0
  211. package/dist/compiler/containerArtifacts.d.ts +12 -0
  212. package/dist/compiler/containerArtifacts.js +180 -127
  213. package/dist/compiler/containerArtifactsPlans.d.ts +5 -3
  214. package/dist/compiler/containerArtifactsPlans.js +54 -124
  215. package/dist/compiler/containerArtifactsRender.d.ts +5 -2
  216. package/dist/compiler/containerArtifactsRender.js +106 -70
  217. package/dist/compiler/containerArtifactsTypes.d.ts +20 -0
  218. package/dist/compiler/containerBackedMountRender.d.ts +56 -0
  219. package/dist/compiler/containerBackedMountRender.js +101 -0
  220. package/dist/compiler/containerConfigEnvRender.d.ts +3 -0
  221. package/dist/compiler/containerConfigEnvRender.js +54 -0
  222. package/dist/compiler/containerDaimonBrokerRender.d.ts +112 -0
  223. package/dist/compiler/containerDaimonBrokerRender.js +191 -0
  224. package/dist/compiler/containerDaimonGrokWorkerProvisioning.d.ts +38 -0
  225. package/dist/compiler/containerDaimonGrokWorkerProvisioning.js +108 -0
  226. package/dist/compiler/containerDaimonGrokWorkerRender.d.ts +172 -0
  227. package/dist/compiler/containerDaimonGrokWorkerRender.js +268 -0
  228. package/dist/compiler/containerDaimonOwnershipGuardRender.d.ts +12 -0
  229. package/dist/compiler/containerDaimonOwnershipGuardRender.js +191 -0
  230. package/dist/compiler/containerDaimonUidEntrypointRender.d.ts +24 -0
  231. package/dist/compiler/containerDaimonUidEntrypointRender.js +297 -0
  232. package/dist/compiler/containerEntrypointRender.d.ts +8 -0
  233. package/dist/compiler/containerEntrypointRender.js +82 -72
  234. package/dist/compiler/containerEntrypointShell.d.ts +5 -0
  235. package/dist/compiler/containerEntrypointShell.js +29 -0
  236. package/dist/compiler/containerPackageOverrides.d.ts +27 -0
  237. package/dist/compiler/containerPackageOverrides.js +63 -0
  238. package/dist/compiler/containerPersistentMounts.d.ts +30 -0
  239. package/dist/compiler/containerPersistentMounts.js +66 -0
  240. package/dist/compiler/containerReadinessPaths.d.ts +1 -0
  241. package/dist/compiler/containerReadinessPaths.js +1 -0
  242. package/dist/compiler/containerRuntimeLinkMaterializer.d.ts +2 -0
  243. package/dist/compiler/containerRuntimeLinkMaterializer.js +12 -0
  244. package/dist/compiler/containerRuntimeReadinessRender.d.ts +7 -0
  245. package/dist/compiler/containerRuntimeReadinessRender.js +40 -0
  246. package/dist/compiler/containerStateOwnershipRender.d.ts +4 -0
  247. package/dist/compiler/containerStateOwnershipRender.js +75 -0
  248. package/dist/compiler/containerTargetPlanResolution.d.ts +20 -0
  249. package/dist/compiler/containerTargetPlanResolution.js +97 -0
  250. package/dist/compiler/containerTargetResources.d.ts +22 -1
  251. package/dist/compiler/containerTargetResources.js +94 -2
  252. package/dist/compiler/containerVolumeBootstrap.d.ts +3 -0
  253. package/dist/compiler/containerVolumeBootstrap.js +3 -0
  254. package/dist/compiler/containerWorkspaceResourceRender.js +49 -1
  255. package/dist/compiler/daimonTelemetryArtifacts.d.ts +22 -0
  256. package/dist/compiler/daimonTelemetryArtifacts.js +56 -0
  257. package/dist/compiler/deploymentLineage.d.ts +40 -0
  258. package/dist/compiler/deploymentLineage.js +50 -0
  259. package/dist/compiler/dockerBuildContext.d.ts +16 -0
  260. package/dist/compiler/dockerBuildContext.js +159 -0
  261. package/dist/compiler/dockerBuildSkip.d.ts +30 -0
  262. package/dist/compiler/dockerBuildSkip.js +81 -0
  263. package/dist/compiler/index.d.ts +7 -0
  264. package/dist/compiler/index.js +7 -0
  265. package/dist/compiler/initProject.d.ts +2 -0
  266. package/dist/compiler/initProject.js +39 -1
  267. package/dist/compiler/localMoltnetAuthority.d.ts +64 -0
  268. package/dist/compiler/localMoltnetAuthority.js +177 -0
  269. package/dist/compiler/memoryArtifacts.d.ts +26 -0
  270. package/dist/compiler/memoryArtifacts.js +210 -0
  271. package/dist/compiler/memoryResolution.d.ts +4 -0
  272. package/dist/compiler/memoryResolution.js +147 -0
  273. package/dist/compiler/modelEnv.d.ts +7 -0
  274. package/dist/compiler/modelEnv.js +13 -1
  275. package/dist/compiler/moltnetAllowedWakeSendersValidation.d.ts +2 -0
  276. package/dist/compiler/moltnetAllowedWakeSendersValidation.js +42 -0
  277. package/dist/compiler/moltnetArtifactPaths.d.ts +31 -0
  278. package/dist/compiler/moltnetArtifactPaths.js +51 -0
  279. package/dist/compiler/moltnetArtifactTypes.d.ts +56 -0
  280. package/dist/compiler/moltnetArtifactTypes.js +1 -0
  281. package/dist/compiler/moltnetArtifacts.d.ts +3 -41
  282. package/dist/compiler/moltnetArtifacts.js +87 -101
  283. package/dist/compiler/moltnetBinaries.d.ts +33 -4
  284. package/dist/compiler/moltnetBinaries.js +173 -26
  285. package/dist/compiler/moltnetClientConfig.js +7 -2
  286. package/dist/compiler/moltnetConfigLowering.d.ts +18 -1
  287. package/dist/compiler/moltnetConfigLowering.js +92 -6
  288. package/dist/compiler/moltnetExternalParticipantArtifact.d.ts +38 -0
  289. package/dist/compiler/moltnetExternalParticipantArtifact.js +188 -0
  290. package/dist/compiler/moltnetNodeConfig.js +7 -2
  291. package/dist/compiler/moltnetReleaseAuthority.d.ts +40 -0
  292. package/dist/compiler/moltnetReleaseAuthority.js +102 -0
  293. package/dist/compiler/moltnetReleaseDownload.d.ts +12 -0
  294. package/dist/compiler/moltnetReleaseDownload.js +85 -0
  295. package/dist/compiler/moltnetRepresentativeResolution.d.ts +2 -1
  296. package/dist/compiler/moltnetRepresentativeResolution.js +17 -3
  297. package/dist/compiler/moltnetResolution.js +67 -21
  298. package/dist/compiler/moltnetRoomMemberships.js +52 -9
  299. package/dist/compiler/moltnetRoomPolicyCompatibility.d.ts +1 -1
  300. package/dist/compiler/moltnetRoomPolicyCompatibility.js +3 -1
  301. package/dist/compiler/moltnetRuntimeConfig.d.ts +1 -1
  302. package/dist/compiler/moltnetRuntimeConfig.js +22 -2
  303. package/dist/compiler/moltnetServerPlans.d.ts +9 -0
  304. package/dist/compiler/moltnetServerPlans.js +151 -0
  305. package/dist/compiler/organizationExternalParticipants.d.ts +3 -0
  306. package/dist/compiler/organizationExternalParticipants.js +176 -0
  307. package/dist/compiler/organizationIdentity.d.ts +21 -0
  308. package/dist/compiler/organizationIdentity.js +64 -0
  309. package/dist/compiler/organizationIdentityGraph.d.ts +15 -0
  310. package/dist/compiler/organizationIdentityGraph.js +115 -0
  311. package/dist/compiler/organizationReadyEvidence.d.ts +57 -0
  312. package/dist/compiler/organizationReadyEvidence.js +281 -0
  313. package/dist/compiler/projectManifestGraph.d.ts +4 -0
  314. package/dist/compiler/projectManifestGraph.js +24 -0
  315. package/dist/compiler/runProject.d.ts +8 -2
  316. package/dist/compiler/runProject.js +62 -27
  317. package/dist/compiler/runProjectAuth.d.ts +10 -2
  318. package/dist/compiler/runProjectAuth.js +105 -11
  319. package/dist/compiler/runProjectDaimonCodexDocker.d.ts +3 -0
  320. package/dist/compiler/runProjectDaimonCodexDocker.js +36 -0
  321. package/dist/compiler/runProjectDocker.d.ts +11 -0
  322. package/dist/compiler/runProjectDocker.js +64 -16
  323. package/dist/compiler/runProjectDockerDaimonGuards.d.ts +15 -0
  324. package/dist/compiler/runProjectDockerDaimonGuards.js +122 -0
  325. package/dist/compiler/runProjectDockerReservation.d.ts +3 -0
  326. package/dist/compiler/runProjectDockerReservation.js +118 -0
  327. package/dist/compiler/runProjectLifecycle.d.ts +7 -0
  328. package/dist/compiler/runProjectLifecycle.js +40 -0
  329. package/dist/compiler/syncProjectAuth.js +4 -1
  330. package/dist/compiler/teamContextActiveEnvironments.d.ts +13 -0
  331. package/dist/compiler/teamContextActiveEnvironments.js +255 -0
  332. package/dist/compiler/teamContextSupport.js +32 -40
  333. package/dist/compiler/teamContextTypes.d.ts +2 -0
  334. package/dist/compiler/training/broker/declaration.d.ts +45 -0
  335. package/dist/compiler/training/broker/declaration.js +55 -0
  336. package/dist/compiler/training/broker/entrypoint.d.ts +39 -0
  337. package/dist/compiler/training/broker/entrypoint.js +111 -0
  338. package/dist/compiler/training/broker/index.d.ts +10 -0
  339. package/dist/compiler/training/broker/index.js +10 -0
  340. package/dist/compiler/training/broker/main.d.ts +2 -0
  341. package/dist/compiler/training/broker/main.js +14 -0
  342. package/dist/compiler/training/broker/paths.d.ts +196 -0
  343. package/dist/compiler/training/broker/paths.js +241 -0
  344. package/dist/compiler/training/broker/processes.d.ts +42 -0
  345. package/dist/compiler/training/broker/processes.js +99 -0
  346. package/dist/compiler/training/broker/projection.d.ts +51 -0
  347. package/dist/compiler/training/broker/projection.js +76 -0
  348. package/dist/compiler/training/broker/provisioning.d.ts +87 -0
  349. package/dist/compiler/training/broker/provisioning.js +213 -0
  350. package/dist/compiler/training/broker/receipt.d.ts +77 -0
  351. package/dist/compiler/training/broker/receipt.js +110 -0
  352. package/dist/compiler/training/broker/registration.d.ts +41 -0
  353. package/dist/compiler/training/broker/registration.js +102 -0
  354. package/dist/compiler/training/broker/runtime.d.ts +25 -0
  355. package/dist/compiler/training/broker/runtime.js +173 -0
  356. package/dist/compiler/training/broker/seccompRoutes.d.ts +31 -0
  357. package/dist/compiler/training/broker/seccompRoutes.js +36 -0
  358. package/dist/compiler/training/broker/supervisor.d.ts +109 -0
  359. package/dist/compiler/training/broker/supervisor.js +173 -0
  360. package/dist/compiler/training/container/contract.d.ts +31 -0
  361. package/dist/compiler/training/container/contract.js +33 -0
  362. package/dist/compiler/training/container/index.d.ts +4 -0
  363. package/dist/compiler/training/container/index.js +2 -0
  364. package/dist/compiler/training/container/launch.d.ts +18 -0
  365. package/dist/compiler/training/container/launch.js +173 -0
  366. package/dist/compiler/training/container/prepare.d.ts +8 -0
  367. package/dist/compiler/training/container/prepare.js +80 -0
  368. package/dist/compiler/training/container/process.d.ts +14 -0
  369. package/dist/compiler/training/container/process.js +70 -0
  370. package/dist/compiler/training/container/security.d.ts +36 -0
  371. package/dist/compiler/training/container/security.js +58 -0
  372. package/dist/compiler/training/context.d.ts +7 -0
  373. package/dist/compiler/training/context.js +93 -0
  374. package/dist/compiler/training/contract.d.ts +142 -0
  375. package/dist/compiler/training/contract.js +34 -0
  376. package/dist/compiler/training/index.d.ts +4 -0
  377. package/dist/compiler/training/index.js +3 -0
  378. package/dist/compiler/training/preparation/assets/Dockerfile +98 -0
  379. package/dist/compiler/training/preparation/assets/package-lock.json +3787 -0
  380. package/dist/compiler/training/preparation/broker.d.ts +21 -0
  381. package/dist/compiler/training/preparation/broker.js +43 -0
  382. package/dist/compiler/training/preparation/contextModes.d.ts +12 -0
  383. package/dist/compiler/training/preparation/contextModes.js +38 -0
  384. package/dist/compiler/training/preparation/contract.d.ts +182 -0
  385. package/dist/compiler/training/preparation/contract.js +94 -0
  386. package/dist/compiler/training/preparation/copyAssets.d.ts +1 -0
  387. package/dist/compiler/training/preparation/copyAssets.js +8 -0
  388. package/dist/compiler/training/preparation/daimonParent.d.ts +42 -0
  389. package/dist/compiler/training/preparation/daimonParent.js +114 -0
  390. package/dist/compiler/training/preparation/files.d.ts +25 -0
  391. package/dist/compiler/training/preparation/files.js +85 -0
  392. package/dist/compiler/training/preparation/image.d.ts +28 -0
  393. package/dist/compiler/training/preparation/image.js +102 -0
  394. package/dist/compiler/training/preparation/index.d.ts +3 -0
  395. package/dist/compiler/training/preparation/index.js +2 -0
  396. package/dist/compiler/training/preparation/inputs.d.ts +23 -0
  397. package/dist/compiler/training/preparation/inputs.js +93 -0
  398. package/dist/compiler/training/preparation/prepare.d.ts +33 -0
  399. package/dist/compiler/training/preparation/prepare.js +186 -0
  400. package/dist/compiler/training/preparation/scratch.d.ts +19 -0
  401. package/dist/compiler/training/preparation/scratch.js +48 -0
  402. package/dist/compiler/training/repair/compatibility.d.ts +11 -0
  403. package/dist/compiler/training/repair/compatibility.js +34 -0
  404. package/dist/compiler/training/repair/contract.d.ts +506 -0
  405. package/dist/compiler/training/repair/contract.js +31 -0
  406. package/dist/compiler/training/repair/index.d.ts +3 -0
  407. package/dist/compiler/training/repair/index.js +3 -0
  408. package/dist/compiler/training/repair/prepare.d.ts +230 -0
  409. package/dist/compiler/training/repair/prepare.js +74 -0
  410. package/dist/compiler/training/repair/witness.d.ts +203 -0
  411. package/dist/compiler/training/repair/witness.js +42 -0
  412. package/dist/compiler/types.d.ts +84 -1
  413. package/dist/compiler/upProject.d.ts +31 -1
  414. package/dist/compiler/upProject.js +197 -22
  415. package/dist/compiler/upProjectHandoff.d.ts +62 -0
  416. package/dist/compiler/upProjectHandoff.js +204 -0
  417. package/dist/compiler/upReceipt.d.ts +36 -0
  418. package/dist/compiler/upReceipt.js +127 -0
  419. package/dist/compiler/updateProjectModels.js +43 -60
  420. package/dist/compiler/updateProjectRuntime.js +22 -35
  421. package/dist/compiler/updateProjectSurfaces.js +53 -47
  422. package/dist/compiler/view/types.d.ts +1 -1
  423. package/dist/compiler/workspaceBundleArtifacts.d.ts +3 -0
  424. package/dist/compiler/workspaceBundleArtifacts.js +106 -0
  425. package/dist/compiler/workspaceResources.d.ts +4 -1
  426. package/dist/compiler/workspaceResources.js +12 -7
  427. package/dist/compiler/worldBindings.d.ts +39 -0
  428. package/dist/compiler/worldBindings.js +247 -0
  429. package/dist/compiler/worldBindingsFile.d.ts +5 -0
  430. package/dist/compiler/worldBindingsFile.js +162 -0
  431. package/dist/deployment/artifactsExport.d.ts +49 -0
  432. package/dist/deployment/artifactsExport.js +217 -0
  433. package/dist/deployment/artifactsExportDocker.d.ts +48 -0
  434. package/dist/deployment/artifactsExportDocker.js +91 -0
  435. package/dist/deployment/artifactsExportPlan.d.ts +24 -0
  436. package/dist/deployment/artifactsExportPlan.js +185 -0
  437. package/dist/deployment/artifactsExportTypes.d.ts +50 -0
  438. package/dist/deployment/artifactsExportTypes.js +52 -0
  439. package/dist/deployment/buildImageCacheStore.d.ts +23 -0
  440. package/dist/deployment/buildImageCacheStore.js +54 -0
  441. package/dist/deployment/canaryCutover.d.ts +42 -0
  442. package/dist/deployment/canaryCutover.js +140 -0
  443. package/dist/deployment/candidateDiagnostics.d.ts +15 -0
  444. package/dist/deployment/candidateDiagnostics.js +90 -0
  445. package/dist/deployment/deploymentLifecycleCorrelation.d.ts +11 -0
  446. package/dist/deployment/deploymentLifecycleCorrelation.js +33 -0
  447. package/dist/deployment/dockerInspect.d.ts +9 -0
  448. package/dist/deployment/dockerInspect.js +24 -1
  449. package/dist/deployment/dockerLabels.d.ts +2 -0
  450. package/dist/deployment/dockerLabels.js +2 -0
  451. package/dist/deployment/dockerLogs.js +5 -10
  452. package/dist/deployment/dockerManager.d.ts +51 -0
  453. package/dist/deployment/dockerManager.js +124 -1
  454. package/dist/deployment/dockerProbeGateway.d.ts +17 -0
  455. package/dist/deployment/dockerProbeGateway.js +80 -6
  456. package/dist/deployment/dockerRecover.js +9 -1
  457. package/dist/deployment/dockerTeardown.d.ts +32 -0
  458. package/dist/deployment/dockerTeardown.js +61 -0
  459. package/dist/deployment/downDeployment.d.ts +39 -0
  460. package/dist/deployment/downDeployment.js +248 -0
  461. package/dist/deployment/downReceiptTypes.d.ts +36 -0
  462. package/dist/deployment/downReceiptTypes.js +45 -0
  463. package/dist/deployment/index.d.ts +20 -0
  464. package/dist/deployment/index.js +21 -0
  465. package/dist/deployment/lifecycleCompletion.d.ts +37 -0
  466. package/dist/deployment/lifecycleCompletion.js +236 -0
  467. package/dist/deployment/lifecycleCompletionContracts.d.ts +224 -0
  468. package/dist/deployment/lifecycleCompletionContracts.js +140 -0
  469. package/dist/deployment/lifecycleCompletionHeartbeat.d.ts +2 -0
  470. package/dist/deployment/lifecycleCompletionHeartbeat.js +50 -0
  471. package/dist/deployment/lifecycleCompletionLookup.d.ts +18 -0
  472. package/dist/deployment/lifecycleCompletionLookup.js +88 -0
  473. package/dist/deployment/lifecycleCompletionOwner.d.ts +8 -0
  474. package/dist/deployment/lifecycleCompletionOwner.js +31 -0
  475. package/dist/deployment/lifecycleCompletionParsing.d.ts +12 -0
  476. package/dist/deployment/lifecycleCompletionParsing.js +108 -0
  477. package/dist/deployment/lifecycleCompletionPaths.d.ts +12 -0
  478. package/dist/deployment/lifecycleCompletionPaths.js +19 -0
  479. package/dist/deployment/lifecycleCompletionPublication.d.ts +7 -0
  480. package/dist/deployment/lifecycleCompletionPublication.js +49 -0
  481. package/dist/deployment/lifecycleCompletionRecovery.d.ts +21 -0
  482. package/dist/deployment/lifecycleCompletionRecovery.js +56 -0
  483. package/dist/deployment/lifecycleCompletionRoot.d.ts +21 -0
  484. package/dist/deployment/lifecycleCompletionRoot.js +243 -0
  485. package/dist/deployment/lifecycleCompletionStore.d.ts +6 -0
  486. package/dist/deployment/lifecycleCompletionStore.js +151 -0
  487. package/dist/deployment/lifecycleUpRecords.d.ts +11 -0
  488. package/dist/deployment/lifecycleUpRecords.js +127 -0
  489. package/dist/deployment/native/AGENTS.md +11 -0
  490. package/dist/deployment/native/rename-noreplace-arm64 +0 -0
  491. package/dist/deployment/native/rename-noreplace-arm64.provenance.json +1 -0
  492. package/dist/deployment/native/rename-noreplace-x64 +0 -0
  493. package/dist/deployment/native/rename-noreplace-x64.provenance.json +1 -0
  494. package/dist/deployment/noReplaceActivation.d.ts +17 -0
  495. package/dist/deployment/noReplaceActivation.js +50 -0
  496. package/dist/deployment/organizationHandoffAuthorityFsBudget.d.ts +110 -0
  497. package/dist/deployment/organizationHandoffAuthorityFsBudget.js +156 -0
  498. package/dist/deployment/organizationHandoffAuthorityFsClient.d.ts +17 -0
  499. package/dist/deployment/organizationHandoffAuthorityFsClient.js +187 -0
  500. package/dist/deployment/organizationHandoffAuthorityFsElection.d.ts +21 -0
  501. package/dist/deployment/organizationHandoffAuthorityFsElection.js +57 -0
  502. package/dist/deployment/organizationHandoffAuthorityFsWorker.d.ts +1 -0
  503. package/dist/deployment/organizationHandoffAuthorityFsWorker.js +431 -0
  504. package/dist/deployment/organizationHandoffAuthorityFsWorkerParent.fixture.d.ts +1 -0
  505. package/dist/deployment/organizationHandoffAuthorityFsWorkerParent.fixture.js +26 -0
  506. package/dist/deployment/organizationHandoffAuthorityFsWorkerStall.fixture.d.ts +1 -0
  507. package/dist/deployment/organizationHandoffAuthorityFsWorkerStall.fixture.js +16 -0
  508. package/dist/deployment/organizationHandoffAuthorityStore.d.ts +41 -0
  509. package/dist/deployment/organizationHandoffAuthorityStore.js +355 -0
  510. package/dist/deployment/organizationHandoffAuthorityTypes.d.ts +76 -0
  511. package/dist/deployment/organizationHandoffAuthorityTypes.js +149 -0
  512. package/dist/deployment/organizationHandoffTypes.d.ts +29 -0
  513. package/dist/deployment/organizationHandoffTypes.js +80 -0
  514. package/dist/deployment/organizationReady.d.ts +54 -0
  515. package/dist/deployment/organizationReady.js +232 -0
  516. package/dist/deployment/privateArtifactsExport.d.ts +18 -0
  517. package/dist/deployment/privateArtifactsExport.js +80 -0
  518. package/dist/deployment/productStateClone.d.ts +43 -0
  519. package/dist/deployment/productStateClone.js +319 -0
  520. package/dist/deployment/record.d.ts +26 -1
  521. package/dist/deployment/record.js +49 -4
  522. package/dist/deployment/target.d.ts +1 -35
  523. package/dist/deployment/target.js +1 -96
  524. package/dist/deployment/upLifecycleRecoveryState.d.ts +23 -0
  525. package/dist/deployment/upLifecycleRecoveryState.js +12 -0
  526. package/dist/deployment/upReceiptTypes.d.ts +137 -0
  527. package/dist/deployment/upReceiptTypes.js +191 -0
  528. package/dist/deployment/workspaceResourceMigration.d.ts +55 -0
  529. package/dist/deployment/workspaceResourceMigration.js +315 -0
  530. package/dist/dev/project.d.ts +7 -0
  531. package/dist/dev/project.js +24 -9
  532. package/dist/distribution/buildDistributionReport.d.ts +2 -1
  533. package/dist/distribution/buildDistributionReport.js +2 -1
  534. package/dist/distribution/consumeImage.d.ts +2 -0
  535. package/dist/distribution/consumeImage.js +98 -73
  536. package/dist/distribution/consumeImageDaimonDocker.d.ts +3 -0
  537. package/dist/distribution/consumeImageDaimonDocker.js +45 -0
  538. package/dist/distribution/consumeImageLifecycle.d.ts +17 -0
  539. package/dist/distribution/consumeImageLifecycle.js +231 -0
  540. package/dist/distribution/consumeImageSupport.d.ts +12 -0
  541. package/dist/distribution/consumeImageSupport.js +15 -0
  542. package/dist/distribution/distributionReportSchema.d.ts +16 -1
  543. package/dist/distribution/distributionReportSchema.js +21 -3
  544. package/dist/distribution/dockerRunner.d.ts +6 -1
  545. package/dist/distribution/dockerRunner.js +31 -4
  546. package/dist/distribution/imageRuntimeAuth.d.ts +9 -1
  547. package/dist/distribution/imageRuntimeAuth.js +70 -1
  548. package/dist/distribution/index.d.ts +3 -3
  549. package/dist/distribution/index.js +2 -2
  550. package/dist/distribution/preflight.js +5 -1
  551. package/dist/distribution/types.d.ts +21 -1
  552. package/dist/distribution/types.js +4 -0
  553. package/dist/evidenceExportHelper/boundedExecutor.d.ts +3 -0
  554. package/dist/evidenceExportHelper/boundedExecutor.js +33 -0
  555. package/dist/evidenceExportHelper/helperProgram.mjs +156 -0
  556. package/dist/evidenceExportHelper/index.d.ts +4 -0
  557. package/dist/evidenceExportHelper/index.js +4 -0
  558. package/dist/evidenceExportHelper/preparedAuthority.d.ts +64 -0
  559. package/dist/evidenceExportHelper/preparedAuthority.js +228 -0
  560. package/dist/evidenceExportHelper/preparedBuilder.d.ts +10 -0
  561. package/dist/evidenceExportHelper/preparedBuilder.js +183 -0
  562. package/dist/evidenceExportHelper/preparedBuilderTypes.d.ts +19 -0
  563. package/dist/evidenceExportHelper/preparedBuilderTypes.js +1 -0
  564. package/dist/evidenceExportHelper/recipe.d.ts +7 -0
  565. package/dist/evidenceExportHelper/recipe.js +83 -0
  566. package/dist/filesystem/io.d.ts +2 -0
  567. package/dist/filesystem/io.js +16 -1
  568. package/dist/filesystem/paths.js +10 -1
  569. package/dist/ledger/causalConformanceCli.d.ts +1 -0
  570. package/dist/ledger/causalConformanceCli.js +41 -0
  571. package/dist/ledger/causeNamespace.d.ts +8 -0
  572. package/dist/ledger/causeNamespace.js +24 -0
  573. package/dist/ledger/conformance.d.ts +83 -0
  574. package/dist/ledger/conformance.js +259 -0
  575. package/dist/ledger/emitters.d.ts +76 -0
  576. package/dist/ledger/emitters.js +188 -0
  577. package/dist/ledger/index.d.ts +4 -0
  578. package/dist/ledger/index.js +4 -0
  579. package/dist/ledger/principal.d.ts +96 -0
  580. package/dist/ledger/principal.js +121 -0
  581. package/dist/manifest/executionSchemas.d.ts +27 -0
  582. package/dist/manifest/executionSchemas.js +21 -2
  583. package/dist/manifest/externalParticipantSchemas.d.ts +18 -0
  584. package/dist/manifest/externalParticipantSchemas.js +17 -0
  585. package/dist/manifest/index.d.ts +1 -0
  586. package/dist/manifest/index.js +1 -0
  587. package/dist/manifest/inlineAgentMember.d.ts +2 -0
  588. package/dist/manifest/inlineAgentMember.js +9 -0
  589. package/dist/manifest/loadManifest.js +14 -8
  590. package/dist/manifest/mcpSchemas.d.ts +18 -0
  591. package/dist/manifest/mcpSchemas.js +44 -0
  592. package/dist/manifest/memorySchemas.d.ts +245 -0
  593. package/dist/manifest/memorySchemas.js +148 -0
  594. package/dist/manifest/renderSpawnfile.js +22 -131
  595. package/dist/manifest/renderSpawnfileNetworks.js +20 -2
  596. package/dist/manifest/renderSpawnfileSurfaces.d.ts +2 -0
  597. package/dist/manifest/renderSpawnfileSurfaces.js +134 -0
  598. package/dist/manifest/renderSpawnfileWorkspace.js +5 -0
  599. package/dist/manifest/scheduleSchemas.d.ts +3 -1
  600. package/dist/manifest/scheduleSchemas.js +91 -5
  601. package/dist/manifest/schemas.d.ts +2034 -40
  602. package/dist/manifest/schemas.js +82 -33
  603. package/dist/manifest/surfaceSchemas.d.ts +17 -0
  604. package/dist/manifest/surfaceSchemas.js +24 -1
  605. package/dist/manifest/teamNetworkAccessSchemas.d.ts +6 -2
  606. package/dist/manifest/teamNetworkAccessSchemas.js +11 -0
  607. package/dist/manifest/teamNetworkAuthSchemas.d.ts +48 -0
  608. package/dist/manifest/teamNetworkAuthSchemas.js +103 -0
  609. package/dist/manifest/teamNetworkSchemas.d.ts +25 -190
  610. package/dist/manifest/teamNetworkSchemas.js +21 -317
  611. package/dist/manifest/teamNetworkServerSchemas.d.ts +155 -0
  612. package/dist/manifest/teamNetworkServerSchemas.js +215 -0
  613. package/dist/manifest/workspaceSchemas.d.ts +16 -0
  614. package/dist/manifest/workspaceSchemas.js +11 -0
  615. package/dist/ownership/siblingBuildFreshness.d.ts +20 -0
  616. package/dist/ownership/siblingBuildFreshness.js +20 -0
  617. package/dist/report/types.d.ts +173 -1
  618. package/dist/runtime/common.d.ts +63 -1
  619. package/dist/runtime/common.js +88 -3
  620. package/dist/runtime/container.d.ts +28 -1
  621. package/dist/runtime/container.js +78 -29
  622. package/dist/runtime/containerPackageOverrides.d.ts +37 -0
  623. package/dist/runtime/containerPackageOverrides.js +33 -0
  624. package/dist/runtime/daimon/adapter.d.ts +14 -0
  625. package/dist/runtime/daimon/adapter.js +243 -0
  626. package/dist/runtime/daimon/attention.d.ts +8 -0
  627. package/dist/runtime/daimon/attention.js +32 -0
  628. package/dist/runtime/daimon/config.d.ts +25 -0
  629. package/dist/runtime/daimon/config.js +272 -0
  630. package/dist/runtime/daimon/contractManifest.d.ts +295 -0
  631. package/dist/runtime/daimon/contractManifest.js +319 -0
  632. package/dist/runtime/daimon/grokModel.d.ts +19 -0
  633. package/dist/runtime/daimon/grokModel.js +33 -0
  634. package/dist/runtime/daimon/grokWorkerConfigBytes.d.ts +26 -0
  635. package/dist/runtime/daimon/grokWorkerConfigBytes.js +36 -0
  636. package/dist/runtime/daimon/grokWorkerContract.d.ts +22 -0
  637. package/dist/runtime/daimon/grokWorkerContract.js +48 -0
  638. package/dist/runtime/daimon/memory.d.ts +57 -0
  639. package/dist/runtime/daimon/memory.js +125 -0
  640. package/dist/runtime/daimon/runAuth.d.ts +51 -0
  641. package/dist/runtime/daimon/runAuth.js +279 -0
  642. package/dist/runtime/daimon/runtimeIdentity.d.ts +22 -0
  643. package/dist/runtime/daimon/runtimeIdentity.js +22 -0
  644. package/dist/runtime/daimon/scheduleAuthority.d.ts +3 -0
  645. package/dist/runtime/daimon/scheduleAuthority.js +17 -0
  646. package/dist/runtime/index.d.ts +6 -0
  647. package/dist/runtime/index.js +6 -0
  648. package/dist/runtime/install.d.ts +3 -0
  649. package/dist/runtime/install.js +3 -0
  650. package/dist/runtime/localDaimonAuthority.d.ts +11 -0
  651. package/dist/runtime/localDaimonAuthority.js +77 -0
  652. package/dist/runtime/mnemeMcp.d.ts +28 -0
  653. package/dist/runtime/mnemeMcp.js +135 -0
  654. package/dist/runtime/openclaw/adapter.js +17 -6
  655. package/dist/runtime/openclaw/mcp.d.ts +10 -0
  656. package/dist/runtime/openclaw/mcp.js +69 -0
  657. package/dist/runtime/openclaw/runAuth.js +2 -2
  658. package/dist/runtime/openclaw/scaffold.js +1 -1
  659. package/dist/runtime/openclaw/schedules.d.ts +38 -0
  660. package/dist/runtime/openclaw/schedules.js +74 -0
  661. package/dist/runtime/pi/adapter.d.ts +1 -2
  662. package/dist/runtime/pi/adapter.js +87 -58
  663. package/dist/runtime/pi/appActivitySource.js +114 -2
  664. package/dist/runtime/pi/appAgentConfig.d.ts +11 -0
  665. package/dist/runtime/pi/appAgentConfig.js +264 -0
  666. package/dist/runtime/pi/appCliEnginesSource.d.ts +1 -0
  667. package/dist/runtime/pi/appCliEnginesSource.js +183 -0
  668. package/dist/runtime/pi/appCliSource.d.ts +1 -0
  669. package/dist/runtime/pi/appCliSource.js +353 -0
  670. package/dist/runtime/pi/appControlSource.d.ts +1 -0
  671. package/dist/runtime/pi/appControlSource.js +390 -0
  672. package/dist/runtime/pi/appControlWakeIdentitySource.d.ts +1 -0
  673. package/dist/runtime/pi/appControlWakeIdentitySource.js +19 -0
  674. package/dist/runtime/pi/appCoreSource.d.ts +4 -1
  675. package/dist/runtime/pi/appCoreSource.js +104 -214
  676. package/dist/runtime/pi/appPreludeSource.js +140 -52
  677. package/dist/runtime/pi/appScheduleSource.d.ts +1 -0
  678. package/dist/runtime/pi/appScheduleSource.js +84 -0
  679. package/dist/runtime/pi/appScriptedEngine.d.ts +31 -0
  680. package/dist/runtime/pi/appScriptedEngine.js +42 -0
  681. package/dist/runtime/pi/appSource.d.ts +4 -1
  682. package/dist/runtime/pi/appSource.js +6 -2
  683. package/dist/runtime/pi/appTemplate.d.ts +8 -22
  684. package/dist/runtime/pi/appTemplate.js +9 -126
  685. package/dist/runtime/pi/appTemplateTypes.d.ts +64 -0
  686. package/dist/runtime/pi/appTemplateTypes.js +18 -0
  687. package/dist/runtime/pi/appWakeContextSource.d.ts +1 -0
  688. package/dist/runtime/pi/appWakeContextSource.js +398 -0
  689. package/dist/runtime/pi/containerTargets.d.ts +4 -0
  690. package/dist/runtime/pi/containerTargets.js +57 -0
  691. package/dist/runtime/pi/runAuth.js +126 -9
  692. package/dist/runtime/pi/testHelpers.d.ts +2 -0
  693. package/dist/runtime/pi/testHelpers.js +40 -0
  694. package/dist/runtime/picoclaw/adapter.js +25 -29
  695. package/dist/runtime/picoclaw/mcp.d.ts +4 -0
  696. package/dist/runtime/picoclaw/mcp.js +43 -0
  697. package/dist/runtime/picoclaw/memory.d.ts +7 -0
  698. package/dist/runtime/picoclaw/memory.js +17 -0
  699. package/dist/runtime/picoclaw/runAuth.js +1 -1
  700. package/dist/runtime/picoclaw/scaffold.js +1 -1
  701. package/dist/runtime/picoclaw/schedules.d.ts +26 -0
  702. package/dist/runtime/picoclaw/schedules.js +62 -3
  703. package/dist/runtime/registry.d.ts +3 -0
  704. package/dist/runtime/registry.js +19 -2
  705. package/dist/runtime/scheduleUtils.d.ts +3 -0
  706. package/dist/runtime/scheduleUtils.js +19 -0
  707. package/dist/runtime/types.d.ts +50 -2
  708. package/dist/runtime/usageLedger.d.ts +158 -0
  709. package/dist/runtime/usageLedger.js +269 -0
  710. package/dist/runtime/usageLedgerRead.d.ts +48 -0
  711. package/dist/runtime/usageLedgerRead.js +102 -0
  712. package/dist/runtime/usageRequestLedger.d.ts +42 -0
  713. package/dist/runtime/usageRequestLedger.js +72 -0
  714. package/dist/shared/daimonCodexDocker.d.ts +32 -0
  715. package/dist/shared/daimonCodexDocker.js +120 -0
  716. package/dist/shared/daimonGrokSeccompProfile.d.ts +10 -0
  717. package/dist/shared/daimonGrokSeccompProfile.js +11 -0
  718. package/dist/shared/errors.d.ts +1 -1
  719. package/dist/shared/errors.js +2 -2
  720. package/dist/shared/index.d.ts +3 -0
  721. package/dist/shared/index.js +3 -0
  722. package/dist/shared/redaction.d.ts +2 -0
  723. package/dist/shared/redaction.js +10 -0
  724. package/dist/shared/types.d.ts +1 -1
  725. package/dist/shared/volumeNames.d.ts +6 -0
  726. package/dist/shared/volumeNames.js +14 -0
  727. package/dist/status/buildStatus.d.ts +1 -0
  728. package/dist/status/buildStatus.js +2 -0
  729. package/dist/status/compileReport.d.ts +22 -0
  730. package/dist/status/compileReport.js +16 -2
  731. package/dist/status/compiledProbeCollection.d.ts +21 -0
  732. package/dist/status/compiledProbeCollection.js +27 -0
  733. package/dist/status/imageStatusReport.js +6 -0
  734. package/dist/status/index.d.ts +3 -0
  735. package/dist/status/index.js +3 -0
  736. package/dist/status/lifecycleProbes.d.ts +19 -0
  737. package/dist/status/lifecycleProbes.js +174 -0
  738. package/dist/status/moltnetProbes.d.ts +7 -8
  739. package/dist/status/moltnetProbes.js +27 -198
  740. package/dist/status/moltnetWiringProbes.d.ts +19 -0
  741. package/dist/status/moltnetWiringProbes.js +178 -0
  742. package/dist/target/cleanupRun.d.ts +41 -0
  743. package/dist/target/cleanupRun.js +139 -0
  744. package/dist/target/cleanupRunDocker.d.ts +16 -0
  745. package/dist/target/cleanupRunDocker.js +66 -0
  746. package/dist/target/cleanupRunDockerPreflight.d.ts +17 -0
  747. package/dist/target/cleanupRunDockerPreflight.js +224 -0
  748. package/dist/target/composedPreparation.d.ts +205 -0
  749. package/dist/target/composedPreparation.js +223 -0
  750. package/dist/target/containerBundle.d.ts +82 -0
  751. package/dist/target/containerBundle.js +243 -0
  752. package/dist/target/containerBundleArchive.d.ts +31 -0
  753. package/dist/target/containerBundleArchive.js +140 -0
  754. package/dist/target/containerBundleAuthority.d.ts +25 -0
  755. package/dist/target/containerBundleAuthority.js +65 -0
  756. package/dist/target/containerBundleContracts.d.ts +114 -0
  757. package/dist/target/containerBundleContracts.js +173 -0
  758. package/dist/target/containerBundleFilesystemStore.d.ts +3 -0
  759. package/dist/target/containerBundleFilesystemStore.js +247 -0
  760. package/dist/target/containerBundlePolicy.d.ts +33 -0
  761. package/dist/target/containerBundlePolicy.js +64 -0
  762. package/dist/target/containerBundleStore.d.ts +127 -0
  763. package/dist/target/containerBundleStore.js +284 -0
  764. package/dist/target/contracts.d.ts +538 -0
  765. package/dist/target/contracts.js +373 -0
  766. package/dist/target/dockerArtifactIdentityTypes.d.ts +56 -0
  767. package/dist/target/dockerArtifactIdentityTypes.js +1 -0
  768. package/dist/target/dockerArtifactInspection.d.ts +40 -0
  769. package/dist/target/dockerArtifactInspection.js +125 -0
  770. package/dist/target/dockerArtifacts.d.ts +21 -0
  771. package/dist/target/dockerArtifacts.js +110 -0
  772. package/dist/target/dockerArtifactsProvider.d.ts +41 -0
  773. package/dist/target/dockerArtifactsProvider.js +476 -0
  774. package/dist/target/dockerBaseImage.d.ts +2 -0
  775. package/dist/target/dockerBaseImage.js +11 -0
  776. package/dist/target/dockerCommandExecutor.d.ts +38 -0
  777. package/dist/target/dockerCommandExecutor.js +251 -0
  778. package/dist/target/dockerCommandExecutorCore.d.ts +35 -0
  779. package/dist/target/dockerCommandExecutorCore.js +275 -0
  780. package/dist/target/dockerContainerBundleBuilder.d.ts +8 -0
  781. package/dist/target/dockerContainerBundleBuilder.js +256 -0
  782. package/dist/target/dockerContextSnapshot.d.ts +21 -0
  783. package/dist/target/dockerContextSnapshot.js +158 -0
  784. package/dist/target/dockerEndpointFingerprint.d.ts +1 -0
  785. package/dist/target/dockerEndpointFingerprint.js +9 -0
  786. package/dist/target/dockerPreparedArtifact.d.ts +48 -0
  787. package/dist/target/dockerPreparedArtifact.js +131 -0
  788. package/dist/target/dockerProjectionJson.d.ts +1 -0
  789. package/dist/target/dockerProjectionJson.js +80 -0
  790. package/dist/target/dockerPublicArtifactSnapshot.d.ts +17 -0
  791. package/dist/target/dockerPublicArtifactSnapshot.js +83 -0
  792. package/dist/target/dockerResources.d.ts +26 -0
  793. package/dist/target/dockerResources.js +162 -0
  794. package/dist/target/dockerResourcesProvider.d.ts +44 -0
  795. package/dist/target/dockerResourcesProvider.js +207 -0
  796. package/dist/target/dockerSecrets.d.ts +39 -0
  797. package/dist/target/dockerSecrets.js +249 -0
  798. package/dist/target/dockerSecretsAuthority.d.ts +26 -0
  799. package/dist/target/dockerSecretsAuthority.js +216 -0
  800. package/dist/target/dockerSecretsLifecycle.d.ts +25 -0
  801. package/dist/target/dockerSecretsLifecycle.js +133 -0
  802. package/dist/target/dockerSecretsProvider.d.ts +68 -0
  803. package/dist/target/dockerSecretsProvider.js +329 -0
  804. package/dist/target/dockerTarget.d.ts +53 -0
  805. package/dist/target/dockerTarget.js +48 -0
  806. package/dist/target/dockerTargetBinding.d.ts +13 -0
  807. package/dist/target/dockerTargetBinding.js +95 -0
  808. package/dist/target/dockerTargetExecFile.d.ts +19 -0
  809. package/dist/target/dockerTargetExecFile.js +194 -0
  810. package/dist/target/dockerWorldClock.d.ts +17 -0
  811. package/dist/target/dockerWorldClock.js +111 -0
  812. package/dist/target/dockerWorldReadiness.d.ts +17 -0
  813. package/dist/target/dockerWorldReadiness.js +119 -0
  814. package/dist/target/dockerWorldService.d.ts +23 -0
  815. package/dist/target/dockerWorldService.js +216 -0
  816. package/dist/target/dockerWorldServiceAuthority.d.ts +80 -0
  817. package/dist/target/dockerWorldServiceAuthority.js +182 -0
  818. package/dist/target/dockerWorldServiceLifecycle.d.ts +41 -0
  819. package/dist/target/dockerWorldServiceLifecycle.js +275 -0
  820. package/dist/target/dockerWorldServiceProvider.d.ts +64 -0
  821. package/dist/target/dockerWorldServiceProvider.js +330 -0
  822. package/dist/target/dockerWorldServiceStore.d.ts +73 -0
  823. package/dist/target/dockerWorldServiceStore.js +367 -0
  824. package/dist/target/evidenceExport.d.ts +57 -0
  825. package/dist/target/evidenceExport.js +527 -0
  826. package/dist/target/evidenceExportArchive.d.ts +10 -0
  827. package/dist/target/evidenceExportArchive.js +302 -0
  828. package/dist/target/evidenceExportContract.d.ts +27 -0
  829. package/dist/target/evidenceExportContract.js +40 -0
  830. package/dist/target/evidenceExportOperationsTestKit.d.ts +87 -0
  831. package/dist/target/evidenceExportOperationsTestKit.js +312 -0
  832. package/dist/target/evidenceExportProvider.d.ts +87 -0
  833. package/dist/target/evidenceExportProvider.js +197 -0
  834. package/dist/target/evidenceExportPublicationTypes.d.ts +16 -0
  835. package/dist/target/evidenceExportPublicationTypes.js +1 -0
  836. package/dist/target/evidenceExportStore.d.ts +70 -0
  837. package/dist/target/evidenceExportStore.js +498 -0
  838. package/dist/target/evidenceExportStorePublication.d.ts +7 -0
  839. package/dist/target/evidenceExportStorePublication.js +395 -0
  840. package/dist/target/handles.d.ts +20 -0
  841. package/dist/target/handles.js +56 -0
  842. package/dist/target/index.d.ts +12 -0
  843. package/dist/target/index.js +11 -0
  844. package/dist/target/journal.d.ts +59 -0
  845. package/dist/target/journal.js +529 -0
  846. package/dist/target/journalFilesystem.d.ts +3 -0
  847. package/dist/target/journalFilesystem.js +111 -0
  848. package/dist/target/journalRoot.d.ts +4 -0
  849. package/dist/target/journalRoot.js +6 -0
  850. package/dist/target/organizationAttachment.d.ts +23 -0
  851. package/dist/target/organizationAttachment.js +263 -0
  852. package/dist/target/organizationAttachmentAuthority.d.ts +65 -0
  853. package/dist/target/organizationAttachmentAuthority.js +161 -0
  854. package/dist/target/organizationAttachmentLifecycle.d.ts +17 -0
  855. package/dist/target/organizationAttachmentLifecycle.js +101 -0
  856. package/dist/target/organizationAttachmentProvider.d.ts +76 -0
  857. package/dist/target/organizationAttachmentProvider.js +289 -0
  858. package/dist/target/organizationAttachmentStore.d.ts +51 -0
  859. package/dist/target/organizationAttachmentStore.js +316 -0
  860. package/dist/target/publicArtifactSnapshot.d.ts +72 -0
  861. package/dist/target/publicArtifactSnapshot.js +184 -0
  862. package/dist/target/topologyActivation.d.ts +51 -0
  863. package/dist/target/topologyActivation.js +149 -0
  864. package/dist/target/topologyAttestation.d.ts +37 -0
  865. package/dist/target/topologyAttestation.js +300 -0
  866. package/dist/target/topologyAttestationErrors.d.ts +1 -0
  867. package/dist/target/topologyAttestationErrors.js +1 -0
  868. package/dist/target/worldClock.d.ts +60 -0
  869. package/dist/target/worldClock.js +129 -0
  870. package/dist/target/worldReadiness.d.ts +103 -0
  871. package/dist/target/worldReadiness.js +153 -0
  872. package/examples/README.md +45 -0
  873. package/examples/agent-with-subagents/AGENTS.md +3 -0
  874. package/examples/agent-with-subagents/Spawnfile +30 -0
  875. package/examples/agent-with-subagents/subagents/critic/AGENTS.md +3 -0
  876. package/examples/agent-with-subagents/subagents/critic/Spawnfile +15 -0
  877. package/examples/agent-with-subagents/subagents/researcher/AGENTS.md +3 -0
  878. package/examples/agent-with-subagents/subagents/researcher/Spawnfile +17 -0
  879. package/examples/daimon-org/Spawnfile +68 -0
  880. package/examples/daimon-org/TEAM.md +4 -0
  881. package/examples/daimon-org/agents/mapper/AGENTS.md +4 -0
  882. package/examples/daimon-org/agents/mapper/Spawnfile +37 -0
  883. package/examples/daimon-org/shared/skills/file-note/SKILL.md +9 -0
  884. package/examples/daimon-org/teams/review/Spawnfile +53 -0
  885. package/examples/daimon-org/teams/review/agents/reviewer/AGENTS.md +4 -0
  886. package/examples/daimon-org/teams/review/agents/reviewer/Spawnfile +37 -0
  887. package/examples/daimon-public-host/AGENTS.md +3 -0
  888. package/examples/daimon-public-host/Spawnfile +21 -0
  889. package/examples/distribution-org/Spawnfile +43 -0
  890. package/examples/distribution-org/TEAM.md +4 -0
  891. package/examples/distribution-org/agents/coordinator/AGENTS.md +1 -0
  892. package/examples/distribution-org/agents/coordinator/Spawnfile +20 -0
  893. package/examples/distribution-org/agents/researcher/AGENTS.md +1 -0
  894. package/examples/distribution-org/agents/researcher/Spawnfile +20 -0
  895. package/examples/jungian-daimon-org/Spawnfile +41 -0
  896. package/examples/jungian-daimon-org/TEAM.md +21 -0
  897. package/examples/jungian-daimon-org/teams/luna/Spawnfile +47 -0
  898. package/examples/jungian-daimon-org/teams/luna/TEAM.md +4 -0
  899. package/examples/jungian-daimon-org/teams/luna/agents/animus/AGENTS.md +10 -0
  900. package/examples/jungian-daimon-org/teams/luna/agents/animus/Spawnfile +33 -0
  901. package/examples/jungian-daimon-org/teams/luna/agents/representative/AGENTS.md +21 -0
  902. package/examples/jungian-daimon-org/teams/luna/agents/representative/Spawnfile +30 -0
  903. package/examples/jungian-daimon-org/teams/luna/agents/shadow/AGENTS.md +10 -0
  904. package/examples/jungian-daimon-org/teams/luna/agents/shadow/Spawnfile +33 -0
  905. package/examples/jungian-daimon-org/teams/selene/Spawnfile +47 -0
  906. package/examples/jungian-daimon-org/teams/selene/TEAM.md +4 -0
  907. package/examples/jungian-daimon-org/teams/selene/agents/animus/AGENTS.md +10 -0
  908. package/examples/jungian-daimon-org/teams/selene/agents/animus/Spawnfile +33 -0
  909. package/examples/jungian-daimon-org/teams/selene/agents/representative/AGENTS.md +19 -0
  910. package/examples/jungian-daimon-org/teams/selene/agents/representative/Spawnfile +33 -0
  911. package/examples/jungian-daimon-org/teams/selene/agents/shadow/AGENTS.md +10 -0
  912. package/examples/jungian-daimon-org/teams/selene/agents/shadow/Spawnfile +30 -0
  913. package/examples/mixed-runtime-org/Spawnfile +71 -0
  914. package/examples/mixed-runtime-org/TEAM.md +8 -0
  915. package/examples/mixed-runtime-org/agents/analyst/AGENTS.md +8 -0
  916. package/examples/mixed-runtime-org/agents/analyst/Spawnfile +27 -0
  917. package/examples/mixed-runtime-org/agents/conductor/AGENTS.md +8 -0
  918. package/examples/mixed-runtime-org/agents/conductor/Spawnfile +27 -0
  919. package/examples/mixed-runtime-org/agents/localist/AGENTS.md +7 -0
  920. package/examples/mixed-runtime-org/agents/localist/Spawnfile +50 -0
  921. package/examples/moltnet-team-chat/Spawnfile +43 -0
  922. package/examples/moltnet-team-chat/TEAM.md +5 -0
  923. package/examples/moltnet-team-chat/agents/coordinator/AGENTS.md +9 -0
  924. package/examples/moltnet-team-chat/agents/coordinator/Spawnfile +26 -0
  925. package/examples/moltnet-team-chat/teams/analysis/Spawnfile +23 -0
  926. package/examples/moltnet-team-chat/teams/analysis/TEAM.md +3 -0
  927. package/examples/moltnet-team-chat/teams/analysis/agents/observer/AGENTS.md +5 -0
  928. package/examples/moltnet-team-chat/teams/analysis/agents/observer/Spawnfile +19 -0
  929. package/examples/moltnet-team-chat/teams/analysis/agents/representative/AGENTS.md +5 -0
  930. package/examples/moltnet-team-chat/teams/analysis/agents/representative/Spawnfile +19 -0
  931. package/examples/moltnet-team-chat/teams/field/Spawnfile +41 -0
  932. package/examples/moltnet-team-chat/teams/field/TEAM.md +3 -0
  933. package/examples/moltnet-team-chat/teams/field/agents/observer/AGENTS.md +5 -0
  934. package/examples/moltnet-team-chat/teams/field/agents/observer/Spawnfile +26 -0
  935. package/examples/moltnet-team-chat/teams/field/agents/representative/AGENTS.md +11 -0
  936. package/examples/moltnet-team-chat/teams/field/agents/representative/Spawnfile +26 -0
  937. package/examples/single-agent/AGENTS.md +3 -0
  938. package/examples/single-agent/HEARTBEAT.md +3 -0
  939. package/examples/single-agent/IDENTITY.md +3 -0
  940. package/examples/single-agent/MEMORY.md +3 -0
  941. package/examples/single-agent/SOUL.md +3 -0
  942. package/examples/single-agent/Spawnfile +41 -0
  943. package/examples/single-agent/skills/web_search/SKILL.md +6 -0
  944. package/moltnet-releases.json +21 -0
  945. package/package.json +57 -14
  946. package/runtimes.yaml +11 -23
  947. package/dist/runtime/openclaw/scaffold-assets/CLAUDE.md +0 -5
  948. package/dist/runtime/picoclaw/scaffold-assets/CLAUDE.md +0 -5
  949. /package/dist/runtime/openclaw/scaffold-assets/{AGENTS.md → WORKSPACE_AGENTS.md} +0 -0
  950. /package/dist/runtime/picoclaw/scaffold-assets/{AGENTS.md → WORKSPACE_AGENTS.md} +0 -0
@@ -1,9 +1,18 @@
1
+ import { SpawnfileError } from "../shared/index.js";
1
2
  const pathSafeSegment = (value) => value.replace(/[^A-Za-z0-9_.-]+/g, "-").replace(/^-+|-+$/g, "") || "item";
2
3
  const isIpv6Literal = (value) => value.includes(":");
3
4
  const normalizePosixPath = (value) => value.replace(/\/+/g, "/").replace(/\/+$/u, "") || "/";
4
5
  export const createMoltnetOpenTokenDirectory = (agentSlug) => `/var/lib/spawnfile/agents/${pathSafeSegment(agentSlug)}/state/moltnet`;
5
6
  export const createMoltnetOpenTokenPath = (networkId, memberId, agentSlug = memberId) => `${createMoltnetOpenTokenDirectory(agentSlug)}/${pathSafeSegment(networkId)}-${pathSafeSegment(memberId)}.token`;
6
7
  export const createMoltnetNetworkStateDirectory = (networkId) => `/var/lib/spawnfile/moltnet/networks/${pathSafeSegment(networkId)}`;
8
+ export const createMoltnetDaimonReceiptStorePath = (networkId, memberId) => {
9
+ const network = pathSafeSegment(networkId);
10
+ const member = pathSafeSegment(memberId);
11
+ if (network !== networkId || member !== memberId || !/^[A-Za-z0-9][A-Za-z0-9_.-]{0,254}$/u.test(memberId)) {
12
+ throw new SpawnfileError("validation_error", "invalid Daimon receipt-store path segment");
13
+ }
14
+ return `${createMoltnetNetworkStateDirectory(networkId)}/daimon-receipts/${member}.json`;
15
+ };
7
16
  export const createDefaultMoltnetStorePath = (networkId, kind, mountPath) => {
8
17
  const directory = mountPath
9
18
  ? normalizePosixPath(mountPath)
@@ -30,6 +39,19 @@ export const resolveMoltnetStorePersistenceMountPath = (networkId, store) => {
30
39
  return storePath ? storePath.slice(0, storePath.lastIndexOf("/")) || "/" : null;
31
40
  };
32
41
  export const createMoltnetServerConfigPath = (serverId) => `container/rootfs/var/lib/spawnfile/moltnet/servers/${pathSafeSegment(serverId)}/Moltnet.json`;
42
+ /**
43
+ * Dedicated causal-log subdirectory, a SIBLING of (never the same directory
44
+ * as) the server's own Moltnet.json config file. Deliberately kept separate
45
+ * so a persistent volume mounted here (to survive container teardown/
46
+ * restart, see moltnetArtifacts.ts's causal persistent mount) never masks a
47
+ * rebuilt image's freshly-baked Moltnet.json — which carries secrets
48
+ * patched in at container start via secretPatches — with a stale copy left
49
+ * over in a prior run's volume. Takes the already-container-absolute
50
+ * `configPath` (MoltnetServerPlan.configPath, post toContainerRootfsPath),
51
+ * not the rootfs-prefixed emit path.
52
+ */
53
+ export const createMoltnetCausalDirectory = (configPath) => `${configPath.slice(0, configPath.lastIndexOf("/")) || "/"}/causal`;
54
+ export const createMoltnetCausalEventsPath = (configPath) => `${createMoltnetCausalDirectory(configPath)}/causal.jsonl`;
33
55
  export const createMoltnetNodeConfigPath = (teamSlug, networkId, agentId) => `container/rootfs/var/lib/spawnfile/moltnet/nodes/${pathSafeSegment(teamSlug)}-${pathSafeSegment(networkId)}-${pathSafeSegment(agentId)}.json`;
34
56
  export const renderMoltnetListenAddr = (server) => {
35
57
  const bind = server.listen.bind;
@@ -50,10 +72,43 @@ export const resolveMoltnetBaseUrl = (server) => {
50
72
  : bind;
51
73
  return `http://${host}:${server.listen.port}`;
52
74
  };
53
- export const resolveMoltnetClientAuth = (server, networkId, memberId, agentSlug) => {
75
+ export const resolveMoltnetClientAuth = (server, networkId, memberId, agentSlug, attachmentTokenId, runtimeName) => {
54
76
  if (server.auth.mode === "none") {
77
+ if (attachmentTokenId !== undefined) {
78
+ throw new SpawnfileError("validation_error", `Moltnet attachment ${networkId}/${memberId} cannot select token ${attachmentTokenId} when auth.mode is none`);
79
+ }
55
80
  return { mode: "none" };
56
81
  }
82
+ if (attachmentTokenId !== undefined) {
83
+ if (server.mode !== "managed" || server.auth.mode !== "bearer") {
84
+ throw new SpawnfileError("validation_error", `invalid Moltnet actor token ${attachmentTokenId} for ${memberId}: token_id is supported only for managed bearer servers`);
85
+ }
86
+ const tokens = server.auth.tokens?.filter((candidate) => candidate.id === attachmentTokenId) ?? [];
87
+ const token = tokens[0];
88
+ if (tokens.length === 0 || !token) {
89
+ throw new SpawnfileError("validation_error", `invalid Moltnet actor token ${attachmentTokenId} for ${memberId}: attachment ${networkId}/${memberId} references unknown token ${attachmentTokenId}`);
90
+ }
91
+ if (tokens.length !== 1) {
92
+ throw new SpawnfileError("validation_error", `invalid Moltnet actor token ${attachmentTokenId} for ${memberId}: token id must exist exactly once`);
93
+ }
94
+ const requiredScopes = runtimeName === "daimon"
95
+ ? ["attach", "observe", "write"]
96
+ : ["attach", "write"];
97
+ if (token.scopes.length !== requiredScopes.length
98
+ || token.scopes.some((scope, index) => scope !== requiredScopes[index])) {
99
+ throw new SpawnfileError("validation_error", `invalid Moltnet actor token ${attachmentTokenId} for ${memberId}: token must include ${requiredScopes.join(", ")} scopes exactly`);
100
+ }
101
+ if (token.agents?.length !== 1 || token.agents[0] !== memberId) {
102
+ throw new SpawnfileError("validation_error", `invalid Moltnet actor token ${attachmentTokenId} for ${memberId}: token must declare exactly agents: [${memberId}]`);
103
+ }
104
+ return {
105
+ credentialAgentId: memberId,
106
+ credentialId: token.id,
107
+ mode: "bearer",
108
+ ...(server.auth.agent_registration ? { registration: server.auth.agent_registration } : {}),
109
+ tokenEnv: token.secret
110
+ };
111
+ }
57
112
  const client = server.auth.client;
58
113
  const registrationOpen = server.auth.mode === "open" || server.auth.agent_registration === "open";
59
114
  if (registrationOpen && !client) {
@@ -69,11 +124,28 @@ export const resolveMoltnetClientAuth = (server, networkId, memberId, agentSlug)
69
124
  ...(server.auth.agent_registration ? { registration: server.auth.agent_registration } : {})
70
125
  };
71
126
  }
72
- const tokenEnv = client.token_env
73
- ?? (client.token_id && server.mode === "managed"
74
- ? server.auth.tokens?.find((token) => token.id === client.token_id)?.secret
75
- : undefined);
127
+ const selectedManagedToken = client.token_id && server.mode === "managed"
128
+ ? server.auth.tokens?.find((token) => token.id === client.token_id)
129
+ : undefined;
130
+ if (server.mode === "managed"
131
+ && server.auth.mode === "bearer"
132
+ && selectedManagedToken
133
+ && (!selectedManagedToken.scopes.includes("attach")
134
+ || !selectedManagedToken.scopes.includes("write"))) {
135
+ throw new SpawnfileError("validation_error", `Moltnet attachment ${networkId}/${memberId} must select its own attach+write token; auth.client token ${selectedManagedToken.id} is operator-only`);
136
+ }
137
+ if (selectedManagedToken
138
+ && (selectedManagedToken.agents?.length ?? 0) > 0
139
+ && !selectedManagedToken.agents?.includes(memberId)) {
140
+ throw new SpawnfileError("validation_error", `Moltnet attachment ${networkId}/${memberId} is not allowed by auth.client token ${selectedManagedToken.id}`);
141
+ }
142
+ const tokenEnv = client.token_env ?? selectedManagedToken?.secret;
143
+ const selectedAgents = selectedManagedToken
144
+ ? [...new Set((selectedManagedToken.agents ?? []).map((agent) => agent.trim()))].filter(Boolean)
145
+ : [];
76
146
  return {
147
+ ...(selectedAgents.length === 1 ? { credentialAgentId: selectedAgents[0] } : {}),
148
+ ...(client.token_id ? { credentialId: client.token_id } : {}),
77
149
  mode: server.auth.mode,
78
150
  ...(server.auth.agent_registration ? { registration: server.auth.agent_registration } : {}),
79
151
  ...(client.static_token ? { staticToken: true } : {}),
@@ -112,11 +184,20 @@ export const createMoltnetNativeServerConfig = ({ networkId, networkName, rooms,
112
184
  envName: pairing.token_secret,
113
185
  jsonPath: `pairings.${index}.token`
114
186
  });
187
+ if (pairing.relay) {
188
+ secretPatches.push({
189
+ envName: pairing.relay.token_secret,
190
+ jsonPath: `pairings.${index}.relay.token`
191
+ });
192
+ }
115
193
  return {
116
194
  id: pairing.id,
117
195
  remote_network_id: pairing.remote_network_id,
118
196
  remote_network_name: pairing.remote_network_name,
119
- remote_base_url: pairing.remote_base_url,
197
+ ...(pairing.remote_base_url ? { remote_base_url: pairing.remote_base_url } : {}),
198
+ ...(pairing.relay
199
+ ? { relay: { room: pairing.relay.room, token: "", url: pairing.relay.url } }
200
+ : {}),
120
201
  token: ""
121
202
  };
122
203
  });
@@ -152,6 +233,11 @@ export const createMoltnetNativeServerConfig = ({ networkId, networkName, rooms,
152
233
  },
153
234
  storage: storageConfigFor(networkId, server.store),
154
235
  rooms: rooms.map((room) => ({
236
+ ...(room.federation !== undefined
237
+ ? { federation: room.federation }
238
+ : pairings.length > 0
239
+ ? { federation: "none" }
240
+ : {}),
155
241
  id: room.id,
156
242
  ...(room.name ? { name: room.name } : {}),
157
243
  ...(room.visibility ? { visibility: room.visibility } : {}),
@@ -0,0 +1,38 @@
1
+ import type { ResolvedExternalParticipant } from "./organizationIdentity.js";
2
+ import type { EmittedFile } from "../runtime/index.js";
3
+ import type { MoltnetExternalParticipantIntent } from "./types.js";
4
+ export declare const MOLTNET_EXTERNAL_PARTICIPANT_ARTIFACT_VERSION: "spawnfile.moltnet-external-participant.v1";
5
+ export interface MoltnetExternalParticipantArtifactV1 {
6
+ readonly version: typeof MOLTNET_EXTERNAL_PARTICIPANT_ARTIFACT_VERSION;
7
+ readonly participant: {
8
+ readonly authored_key: string;
9
+ readonly kind: "service";
10
+ readonly member_id: string;
11
+ readonly principal_id: string;
12
+ };
13
+ readonly network: {
14
+ readonly id: string;
15
+ };
16
+ readonly auth: {
17
+ readonly mode: "bearer";
18
+ readonly token_id: string;
19
+ readonly token_env: string;
20
+ };
21
+ readonly direct_messages: readonly {
22
+ readonly members: readonly [string, string];
23
+ }[];
24
+ }
25
+ export interface BuildMoltnetExternalParticipantArtifactInput {
26
+ readonly participant: ResolvedExternalParticipant;
27
+ readonly networkId: string;
28
+ readonly tokenId: string;
29
+ readonly tokenEnv: string;
30
+ readonly directMessagePeers: readonly string[];
31
+ }
32
+ export declare const buildMoltnetExternalParticipantArtifact: (input: BuildMoltnetExternalParticipantArtifactInput) => MoltnetExternalParticipantArtifactV1;
33
+ export declare const parseMoltnetExternalParticipantArtifact: (raw: unknown) => MoltnetExternalParticipantArtifactV1;
34
+ export declare const renderMoltnetExternalParticipantArtifact: (artifact: MoltnetExternalParticipantArtifactV1) => string;
35
+ export declare const createMoltnetExternalParticipantArtifactFiles: (intents: readonly MoltnetExternalParticipantIntent[]) => {
36
+ artifacts: MoltnetExternalParticipantArtifactV1[];
37
+ files: EmittedFile[];
38
+ };
@@ -0,0 +1,188 @@
1
+ import { types as nodeTypes } from "node:util";
2
+ import { SpawnfileError } from "../shared/index.js";
3
+ import { createMoltnetExternalParticipantArtifactPath } from "./moltnetArtifactPaths.js";
4
+ export const MOLTNET_EXTERNAL_PARTICIPANT_ARTIFACT_VERSION = "spawnfile.moltnet-external-participant.v1";
5
+ const idPattern = /^[a-z][a-z0-9-]{0,62}(?:\.[a-z][a-z0-9-]{0,62}){0,7}$/u;
6
+ const segmentPattern = /^[a-z][a-z0-9-]{0,62}$/u;
7
+ const envPattern = /^[A-Z_][A-Z0-9_]{0,127}$/u;
8
+ const MAX_HOSTILE_DEPTH = 16;
9
+ const MAX_HOSTILE_NODES = 512;
10
+ const isCanonicalMemberId = (value) => idPattern.test(value) && Buffer.byteLength(value, "ascii") <= 255;
11
+ const fail = (message) => { throw new SpawnfileError("validation_error", `invalid Moltnet external participant artifact: ${message}`); };
12
+ const isCanonicalArray = (value) => Array.isArray(value) && Object.getPrototypeOf(value) === Array.prototype;
13
+ const requireCanonicalArray = (value, label) => {
14
+ if (value && typeof value === "object" && nodeTypes.isProxy(value))
15
+ fail(`${label} proxy`);
16
+ if (!isCanonicalArray(value))
17
+ return fail(`${label} array prototype`);
18
+ const array = value;
19
+ if (array.length > 128)
20
+ fail(`${label} cardinality exceeds 128`);
21
+ return array;
22
+ };
23
+ const keys = (value, expected) => {
24
+ if (Object.getPrototypeOf(value) !== Object.prototype)
25
+ fail("object prototype");
26
+ if (Object.getOwnPropertySymbols(value).length > 0)
27
+ fail("symbol property");
28
+ const actual = Object.getOwnPropertyNames(value).filter((key) => key !== "length");
29
+ if (actual.length !== expected.length || Object.keys(value).length !== expected.length || actual.some((key, index) => key !== expected[index]))
30
+ fail(`keys must be ${expected.join(",")}`);
31
+ for (const key of actual) {
32
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
33
+ if (!descriptor || !("value" in descriptor) || descriptor.enumerable !== true)
34
+ fail("accessor or non-enumerable property");
35
+ }
36
+ };
37
+ const stringValue = (value, label, pattern = idPattern) => {
38
+ if (typeof value !== "string" || !pattern.test(value) || value.length > 255)
39
+ fail(`${label} value`);
40
+ return value;
41
+ };
42
+ const freezeCopy = (value, seen = new WeakSet()) => {
43
+ if (!value || typeof value !== "object")
44
+ return value;
45
+ if (seen.has(value))
46
+ fail("alias or cycle");
47
+ seen.add(value);
48
+ for (const child of Object.values(value))
49
+ freezeCopy(child, seen);
50
+ return Object.freeze(value);
51
+ };
52
+ const rejectAliases = (value, state = { nodes: 0, seen: new WeakSet() }, depth = 0) => {
53
+ if (!value || typeof value !== "object")
54
+ return;
55
+ if (nodeTypes.isProxy(value))
56
+ fail("proxy");
57
+ if (depth > MAX_HOSTILE_DEPTH)
58
+ fail("object depth exceeds 16");
59
+ state.nodes += 1;
60
+ if (state.nodes > MAX_HOSTILE_NODES)
61
+ fail("object node count exceeds 512");
62
+ if (state.seen.has(value))
63
+ fail("alias or cycle");
64
+ state.seen.add(value);
65
+ if (Array.isArray(value)) {
66
+ requireCanonicalArray(value, "array");
67
+ if (Object.getOwnPropertySymbols(value).length > 0 || Object.getOwnPropertyNames(value).some((key) => key !== "length" && !/^\d+$/u.test(key)))
68
+ fail("extended array");
69
+ for (let index = 0; index < value.length; index += 1) {
70
+ if (!Object.hasOwn(value, index))
71
+ fail("sparse array");
72
+ const descriptor = Object.getOwnPropertyDescriptor(value, String(index));
73
+ if (!descriptor || !("value" in descriptor) || descriptor.enumerable !== true)
74
+ fail("accessor or non-enumerable property");
75
+ rejectAliases(value[index], state, depth + 1);
76
+ }
77
+ }
78
+ else {
79
+ const ownNames = Object.getOwnPropertyNames(value);
80
+ if (ownNames.length > MAX_HOSTILE_NODES)
81
+ fail("object property count exceeds 512");
82
+ for (const key of ownNames) {
83
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
84
+ if (!descriptor) {
85
+ fail("missing property descriptor");
86
+ return;
87
+ }
88
+ if (!("value" in descriptor)) {
89
+ fail("accessor property");
90
+ return;
91
+ }
92
+ const child = descriptor.value;
93
+ rejectAliases(child, state, depth + 1);
94
+ }
95
+ }
96
+ };
97
+ export const buildMoltnetExternalParticipantArtifact = (input) => {
98
+ const { participant, networkId, tokenId, tokenEnv, directMessagePeers } = input;
99
+ if (participant.kind !== "service" || !segmentPattern.test(participant.authoredParticipantKey) || participant.principalId !== `system:${participant.memberId}`)
100
+ fail("participant identity");
101
+ rejectAliases(directMessagePeers);
102
+ const peers = [...directMessagePeers];
103
+ if (peers.length === 0 || peers.length > 128 || new Set(peers).size !== peers.length)
104
+ fail("direct-message peer cardinality");
105
+ if (peers.some((peer) => !isCanonicalMemberId(peer) || peer === participant.memberId))
106
+ fail("direct-message peer identity");
107
+ const members = peers.sort().map((peer) => [peer, participant.memberId].sort());
108
+ const artifact = {
109
+ version: MOLTNET_EXTERNAL_PARTICIPANT_ARTIFACT_VERSION,
110
+ participant: { authored_key: participant.authoredParticipantKey, kind: "service", member_id: participant.memberId, principal_id: participant.principalId },
111
+ network: { id: stringValue(networkId, "network id", segmentPattern) },
112
+ auth: { mode: "bearer", token_id: stringValue(tokenId, "token id"), token_env: stringValue(tokenEnv, "token env", envPattern) },
113
+ direct_messages: members.map((members) => ({ members }))
114
+ };
115
+ return parseMoltnetExternalParticipantArtifact(artifact);
116
+ };
117
+ export const parseMoltnetExternalParticipantArtifact = (raw) => {
118
+ rejectAliases(raw);
119
+ if (!raw || typeof raw !== "object" || Array.isArray(raw))
120
+ fail("root object");
121
+ const value = raw;
122
+ keys(value, ["version", "participant", "network", "auth", "direct_messages"]);
123
+ if (value.version !== MOLTNET_EXTERNAL_PARTICIPANT_ARTIFACT_VERSION)
124
+ fail("version");
125
+ const participant = value.participant;
126
+ const network = value.network;
127
+ const auth = value.auth;
128
+ if (!participant || typeof participant !== "object" || Array.isArray(participant))
129
+ fail("participant object");
130
+ if (!network || typeof network !== "object" || Array.isArray(network))
131
+ fail("network object");
132
+ if (!auth || typeof auth !== "object" || Array.isArray(auth))
133
+ fail("auth object");
134
+ keys(participant, ["authored_key", "kind", "member_id", "principal_id"]);
135
+ keys(network, ["id"]);
136
+ keys(auth, ["mode", "token_id", "token_env"]);
137
+ const member = stringValue(participant.member_id, "member id");
138
+ const authoredKey = stringValue(participant.authored_key, "authored key", segmentPattern);
139
+ if (participant.kind !== "service" || participant.principal_id !== `system:${member}` || authoredKey !== member)
140
+ fail("participant");
141
+ if (auth.mode !== "bearer")
142
+ fail("auth mode");
143
+ const messages = value.direct_messages;
144
+ const directMessages = requireCanonicalArray(messages, "direct messages");
145
+ if (directMessages.length === 0 || directMessages.length > 128 || directMessages.some((entry) => !entry || typeof entry !== "object" || Array.isArray(entry)))
146
+ fail("direct message cardinality");
147
+ const parsed = directMessages.map((entry) => {
148
+ const item = entry;
149
+ keys(item, ["members"]);
150
+ const members = requireCanonicalArray(item.members, "members");
151
+ if (members.length !== 2 || members.some((member) => typeof member !== "string"))
152
+ fail("members");
153
+ const pair = members;
154
+ if (!pair.every((entry) => isCanonicalMemberId(entry)) || pair[0] >= pair[1] || !pair.includes(member) || pair[0] === pair[1])
155
+ fail("member ordering");
156
+ return { members: [pair[0], pair[1]] };
157
+ });
158
+ const peerFor = (pair) => pair[0] === member ? pair[1] : pair[0];
159
+ if (parsed.some((entry, index) => index > 0 && peerFor(entry.members) <= peerFor(parsed[index - 1].members)))
160
+ fail("message ordering");
161
+ const result = { version: value.version, participant: { authored_key: participant.authored_key, kind: "service", member_id: member, principal_id: participant.principal_id }, network: { id: stringValue(network.id, "network id", segmentPattern) }, auth: { mode: "bearer", token_id: stringValue(auth.token_id, "token id", segmentPattern), token_env: stringValue(auth.token_env, "token env", envPattern) }, direct_messages: parsed };
162
+ return freezeCopy(structuredClone(result));
163
+ };
164
+ export const renderMoltnetExternalParticipantArtifact = (artifact) => `${JSON.stringify(parseMoltnetExternalParticipantArtifact(artifact), null, 2)}\n`;
165
+ export const createMoltnetExternalParticipantArtifactFiles = (intents) => {
166
+ const ordered = [...intents].sort((left, right) => byArtifactKey(left, right));
167
+ const keys = new Set();
168
+ for (const intent of ordered) {
169
+ const key = `${intent.networkId}\u0000${intent.participant.memberId}`;
170
+ if (keys.has(key))
171
+ fail("duplicate external participant artifact");
172
+ keys.add(key);
173
+ }
174
+ const artifacts = ordered.map((intent) => buildMoltnetExternalParticipantArtifact(intent));
175
+ return {
176
+ artifacts,
177
+ files: artifacts.map((artifact) => ({
178
+ content: renderMoltnetExternalParticipantArtifact(artifact),
179
+ mode: 0o600,
180
+ path: createMoltnetExternalParticipantArtifactPath(artifact.network.id, artifact.participant.member_id)
181
+ }))
182
+ };
183
+ };
184
+ const byArtifactKey = (left, right) => {
185
+ const a = `${left.networkId}\u0000${left.participant.memberId}`;
186
+ const b = `${right.networkId}\u0000${right.participant.memberId}`;
187
+ return a < b ? -1 : a > b ? 1 : 0;
188
+ };
@@ -1,7 +1,7 @@
1
1
  import { resolveMoltnetClientAuth } from "./moltnetConfigLowering.js";
2
2
  import { resolveRuntimeConfig } from "./moltnetRuntimeConfig.js";
3
3
  export const createMoltnetNodeConfigContent = ({ agentNode, attachment, networkServer, nodeSlug, plan, serverPlan }) => {
4
- const clientAuth = resolveMoltnetClientAuth(networkServer, attachment.network, attachment.memberId, nodeSlug);
4
+ const clientAuth = resolveMoltnetClientAuth(networkServer, attachment.network, attachment.memberId, nodeSlug, attachment.auth?.tokenId, agentNode.runtime.name);
5
5
  const usesPerAttachmentOpenToken = clientAuth.mode === "open" &&
6
6
  clientAuth.staticToken !== true &&
7
7
  Boolean(clientAuth.tokenEnv || clientAuth.tokenPath);
@@ -56,7 +56,12 @@ export const createMoltnetNodeConfigContent = ({ agentNode, attachment, networkS
56
56
  ? {
57
57
  dms: {
58
58
  enabled: attachment.dms.enabled,
59
- ...(attachment.dms.wake ? { wake: attachment.dms.wake } : {})
59
+ ...(attachment.dms.wake ? { wake: attachment.dms.wake } : {}),
60
+ ...(attachment.dms.allowedWakeSenders !== undefined
61
+ ? {
62
+ allowed_wake_senders: [...attachment.dms.allowedWakeSenders]
63
+ }
64
+ : {})
60
65
  }
61
66
  }
62
67
  : {})
@@ -0,0 +1,40 @@
1
+ export declare const MOLTNET_RELEASE_AUTHORITY_VERSION: "spawnfile.moltnet-release-authority.v1";
2
+ export type MoltnetTargetArchitecture = "amd64" | "arm64";
3
+ /**
4
+ * The bridge capabilities a Moltnet build can advertise.
5
+ *
6
+ * CANONICAL ORDERING: `daimon-bridge` before `pi-bridge`. Several places
7
+ * compare this list by exact equality (`upReceipt.ts`, `localMoltnetAuthority.ts`)
8
+ * rather than as a set, so a differently ordered but equivalent list is
9
+ * rejected as a different release. The local builder
10
+ * (`scripts/build-local-moltnet.ts`) already writes this order; every producer
11
+ * must match it, and `moltnetReleaseAuthority.test.ts` asserts it.
12
+ *
13
+ * This is a UNION, never a replacement: an older pi-only release must keep
14
+ * pinning cleanly after a dual-capability one is published.
15
+ */
16
+ export declare const MOLTNET_PI_ONLY_CAPABILITIES: readonly ["pi-bridge"];
17
+ export declare const MOLTNET_DUAL_BRIDGE_CAPABILITIES: readonly ["daimon-bridge", "pi-bridge"];
18
+ export type MoltnetBridgeCapabilities = typeof MOLTNET_PI_ONLY_CAPABILITIES | typeof MOLTNET_DUAL_BRIDGE_CAPABILITIES;
19
+ /**
20
+ * The single runtime check for an advertised capability list. Every producer
21
+ * and parser funnels through this so the type and the runtime check can never
22
+ * drift apart — widening one without the other is precisely how a release
23
+ * becomes typecheck-green and runtime-rejected.
24
+ */
25
+ export declare const parseMoltnetBridgeCapabilities: (value: unknown) => MoltnetBridgeCapabilities | null;
26
+ export interface TrustedMoltnetReleaseAsset {
27
+ readonly architecture: MoltnetTargetArchitecture;
28
+ readonly asset: string;
29
+ readonly asset_sha256: `sha256:${string}`;
30
+ }
31
+ export interface TrustedMoltnetReleaseAuthority {
32
+ readonly version: typeof MOLTNET_RELEASE_AUTHORITY_VERSION;
33
+ readonly release_version: string;
34
+ readonly source_revision: string;
35
+ readonly capabilities: MoltnetBridgeCapabilities;
36
+ readonly assets: readonly TrustedMoltnetReleaseAsset[];
37
+ }
38
+ export declare const parseTrustedMoltnetReleaseAuthority: (raw: unknown) => TrustedMoltnetReleaseAuthority;
39
+ export declare const readTrustedMoltnetReleaseAuthority: () => Promise<TrustedMoltnetReleaseAuthority>;
40
+ export declare const trustedMoltnetReleaseAsset: (authority: TrustedMoltnetReleaseAuthority, architecture: MoltnetTargetArchitecture) => TrustedMoltnetReleaseAsset;
@@ -0,0 +1,102 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { SpawnfileError } from "../shared/index.js";
3
+ export const MOLTNET_RELEASE_AUTHORITY_VERSION = "spawnfile.moltnet-release-authority.v1";
4
+ /**
5
+ * The bridge capabilities a Moltnet build can advertise.
6
+ *
7
+ * CANONICAL ORDERING: `daimon-bridge` before `pi-bridge`. Several places
8
+ * compare this list by exact equality (`upReceipt.ts`, `localMoltnetAuthority.ts`)
9
+ * rather than as a set, so a differently ordered but equivalent list is
10
+ * rejected as a different release. The local builder
11
+ * (`scripts/build-local-moltnet.ts`) already writes this order; every producer
12
+ * must match it, and `moltnetReleaseAuthority.test.ts` asserts it.
13
+ *
14
+ * This is a UNION, never a replacement: an older pi-only release must keep
15
+ * pinning cleanly after a dual-capability one is published.
16
+ */
17
+ export const MOLTNET_PI_ONLY_CAPABILITIES = ["pi-bridge"];
18
+ export const MOLTNET_DUAL_BRIDGE_CAPABILITIES = ["daimon-bridge", "pi-bridge"];
19
+ /**
20
+ * The single runtime check for an advertised capability list. Every producer
21
+ * and parser funnels through this so the type and the runtime check can never
22
+ * drift apart — widening one without the other is precisely how a release
23
+ * becomes typecheck-green and runtime-rejected.
24
+ */
25
+ export const parseMoltnetBridgeCapabilities = (value) => {
26
+ if (!Array.isArray(value))
27
+ return null;
28
+ const joined = value.join("\0");
29
+ if (joined === MOLTNET_PI_ONLY_CAPABILITIES.join("\0"))
30
+ return MOLTNET_PI_ONLY_CAPABILITIES;
31
+ if (joined === MOLTNET_DUAL_BRIDGE_CAPABILITIES.join("\0"))
32
+ return MOLTNET_DUAL_BRIDGE_CAPABILITIES;
33
+ return null;
34
+ };
35
+ const SHA256 = /^sha256:[a-f0-9]{64}$/u;
36
+ const REVISION = /^[a-f0-9]{40}$/u;
37
+ const VERSION = /^v?\d+\.\d+\.\d+(?:-\d+-g[a-f0-9]{7,40})?$/u;
38
+ const exactKeys = (value, keys) => Object.keys(value).sort().join("\0") === [...keys].sort().join("\0");
39
+ const fail = () => {
40
+ throw new SpawnfileError("compile_error", "Trusted Moltnet release authority is invalid");
41
+ };
42
+ export const parseTrustedMoltnetReleaseAuthority = (raw) => {
43
+ if (!raw || typeof raw !== "object" || Array.isArray(raw))
44
+ return fail();
45
+ const value = raw;
46
+ if (!exactKeys(value, [
47
+ "assets", "capabilities", "release_version", "source_revision", "version"
48
+ ])
49
+ || value.version !== MOLTNET_RELEASE_AUTHORITY_VERSION
50
+ || typeof value.release_version !== "string"
51
+ || !VERSION.test(value.release_version)
52
+ || typeof value.source_revision !== "string"
53
+ || !REVISION.test(value.source_revision)
54
+ || parseMoltnetBridgeCapabilities(value.capabilities) === null
55
+ || !Array.isArray(value.assets)
56
+ || value.assets.length !== 2)
57
+ return fail();
58
+ const assets = [];
59
+ for (const rawAsset of value.assets) {
60
+ if (!rawAsset || typeof rawAsset !== "object" || Array.isArray(rawAsset))
61
+ return fail();
62
+ const asset = rawAsset;
63
+ if (!exactKeys(asset, ["architecture", "asset", "asset_sha256"])
64
+ || asset.architecture !== "amd64" && asset.architecture !== "arm64"
65
+ || asset.asset !== `moltnet_linux_${asset.architecture}.tar.gz`
66
+ || typeof asset.asset_sha256 !== "string"
67
+ || !SHA256.test(asset.asset_sha256))
68
+ return fail();
69
+ assets.push(Object.freeze({
70
+ architecture: asset.architecture,
71
+ asset: asset.asset,
72
+ asset_sha256: asset.asset_sha256
73
+ }));
74
+ }
75
+ if (assets[0]?.architecture !== "amd64" || assets[1]?.architecture !== "arm64")
76
+ return fail();
77
+ const describedRevision = value.release_version.match(/-g([a-f0-9]{7,40})$/u)?.[1];
78
+ if (describedRevision && !value.source_revision.startsWith(describedRevision))
79
+ return fail();
80
+ return Object.freeze({
81
+ version: MOLTNET_RELEASE_AUTHORITY_VERSION,
82
+ release_version: value.release_version,
83
+ source_revision: value.source_revision,
84
+ capabilities: parseMoltnetBridgeCapabilities(value.capabilities),
85
+ assets: Object.freeze(assets)
86
+ });
87
+ };
88
+ export const readTrustedMoltnetReleaseAuthority = async () => {
89
+ try {
90
+ return parseTrustedMoltnetReleaseAuthority(JSON.parse(await readFile(new URL("../../moltnet-releases.json", import.meta.url), "utf8")));
91
+ }
92
+ catch (error) {
93
+ if (error instanceof SpawnfileError)
94
+ throw error;
95
+ return fail();
96
+ }
97
+ };
98
+ export const trustedMoltnetReleaseAsset = (authority, architecture) => {
99
+ const parsed = parseTrustedMoltnetReleaseAuthority(authority);
100
+ const asset = parsed.assets.find((candidate) => candidate.architecture === architecture);
101
+ return asset ?? fail();
102
+ };
@@ -0,0 +1,12 @@
1
+ import { type MoltnetTargetArchitecture, type TrustedMoltnetReleaseAuthority } from "./moltnetReleaseAuthority.js";
2
+ type ReleaseResponse = Pick<Response, "body" | "headers" | "ok" | "status" | "statusText">;
3
+ export interface MoltnetReleaseDownloadDependencies {
4
+ readonly fetchRelease?: (input: string, init: RequestInit) => Promise<ReleaseResponse>;
5
+ }
6
+ export interface DownloadedMoltnetReleaseAsset {
7
+ readonly assetPath: string;
8
+ readonly cleanup: () => Promise<void>;
9
+ }
10
+ export declare const trustedMoltnetReleaseDownloadUrl: (authority: TrustedMoltnetReleaseAuthority, architecture: MoltnetTargetArchitecture) => string;
11
+ export declare const downloadTrustedMoltnetReleaseAsset: (authority: TrustedMoltnetReleaseAuthority, architecture: MoltnetTargetArchitecture, dependencies?: MoltnetReleaseDownloadDependencies) => Promise<DownloadedMoltnetReleaseAsset>;
12
+ export {};
@@ -0,0 +1,85 @@
1
+ import { createHash } from "node:crypto";
2
+ import { mkdtemp, rm, writeFile } from "node:fs/promises";
3
+ import os from "node:os";
4
+ import path from "node:path";
5
+ import { SpawnfileError } from "../shared/index.js";
6
+ import { parseTrustedMoltnetReleaseAuthority, trustedMoltnetReleaseAsset } from "./moltnetReleaseAuthority.js";
7
+ const MAX_RELEASE_BYTES = 64 * 1024 * 1024;
8
+ const DOWNLOAD_TIMEOUT_MS = 120_000;
9
+ export const trustedMoltnetReleaseDownloadUrl = (authority, architecture) => {
10
+ const parsed = parseTrustedMoltnetReleaseAuthority(authority);
11
+ const asset = trustedMoltnetReleaseAsset(parsed, architecture);
12
+ return `https://github.com/noopolis/moltnet/releases/download/${parsed.release_version}/${asset.asset}`;
13
+ };
14
+ const responseBytes = async (response) => {
15
+ const declaredLength = response.headers.get("content-length");
16
+ if (declaredLength !== null) {
17
+ const bytes = Number(declaredLength);
18
+ if (!Number.isSafeInteger(bytes) || bytes < 1 || bytes > MAX_RELEASE_BYTES) {
19
+ throw new SpawnfileError("compile_error", "Pinned Moltnet release has an invalid content length");
20
+ }
21
+ }
22
+ if (response.body === null) {
23
+ throw new SpawnfileError("compile_error", "Pinned Moltnet release response has no body");
24
+ }
25
+ const chunks = [];
26
+ let total = 0;
27
+ const reader = response.body.getReader();
28
+ try {
29
+ for (;;) {
30
+ const item = await reader.read();
31
+ if (item.done)
32
+ break;
33
+ total += item.value.byteLength;
34
+ if (total > MAX_RELEASE_BYTES) {
35
+ await reader.cancel();
36
+ throw new SpawnfileError("compile_error", "Pinned Moltnet release exceeds the download limit");
37
+ }
38
+ chunks.push(item.value);
39
+ }
40
+ }
41
+ finally {
42
+ reader.releaseLock();
43
+ }
44
+ if (total === 0)
45
+ throw new SpawnfileError("compile_error", "Pinned Moltnet release is empty");
46
+ return Buffer.concat(chunks, total);
47
+ };
48
+ export const downloadTrustedMoltnetReleaseAsset = async (authority, architecture, dependencies = {}) => {
49
+ const parsed = parseTrustedMoltnetReleaseAuthority(authority);
50
+ const asset = trustedMoltnetReleaseAsset(parsed, architecture);
51
+ const url = trustedMoltnetReleaseDownloadUrl(parsed, architecture);
52
+ const fetchRelease = dependencies.fetchRelease ?? fetch;
53
+ let response;
54
+ try {
55
+ response = await fetchRelease(url, {
56
+ redirect: "follow",
57
+ signal: AbortSignal.timeout(DOWNLOAD_TIMEOUT_MS)
58
+ });
59
+ }
60
+ catch (error) {
61
+ const reason = error instanceof Error ? error.message : String(error);
62
+ throw new SpawnfileError("compile_error", `Unable to download pinned Moltnet release: ${reason}`);
63
+ }
64
+ if (!response.ok) {
65
+ throw new SpawnfileError("compile_error", `Unable to download pinned Moltnet release: HTTP ${response.status} ${response.statusText}`);
66
+ }
67
+ const bytes = await responseBytes(response);
68
+ const sha256 = `sha256:${createHash("sha256").update(bytes).digest("hex")}`;
69
+ if (sha256 !== asset.asset_sha256) {
70
+ throw new SpawnfileError("compile_error", "Downloaded Moltnet release digest does not match trusted authority");
71
+ }
72
+ const directory = await mkdtemp(path.join(os.tmpdir(), "spawnfile-moltnet-release-"));
73
+ try {
74
+ const assetPath = path.join(directory, asset.asset);
75
+ await writeFile(assetPath, bytes, { flag: "wx" });
76
+ return Object.freeze({
77
+ assetPath,
78
+ cleanup: () => rm(directory, { force: true, recursive: true })
79
+ });
80
+ }
81
+ catch (error) {
82
+ await rm(directory, { force: true, recursive: true });
83
+ throw error;
84
+ }
85
+ };
@@ -4,6 +4,7 @@ export interface MoltnetTeamContext {
4
4
  teamName: string;
5
5
  teamSource: string;
6
6
  networks: ResolvedTeamNetwork[];
7
+ resolvedMemberId?: string;
7
8
  }
8
9
  export interface TeamRepresentativeResolution {
9
10
  agentSource: string;
@@ -13,4 +14,4 @@ export interface TeamRepresentativeResolution {
13
14
  sourceTeamSource: string;
14
15
  }
15
16
  export declare const resolveTeamRepresentatives: (plan: CompilePlan, teamNode: ResolvedTeamNode, seen?: string[]) => TeamRepresentativeResolution[];
16
- export declare const resolveMoltnetAttachments: (attachments: ResolvedMoltnetAttachment[] | undefined, context: MoltnetTeamContext | undefined, nodeName: string) => ResolvedMoltnetAttachment[] | undefined;
17
+ export declare const resolveMoltnetAttachments: (attachments: ResolvedMoltnetAttachment[] | undefined, context: MoltnetTeamContext | undefined, nodeName: string, runtimeName?: string) => ResolvedMoltnetAttachment[] | undefined;