spawnfile 0.1.12 → 0.1.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (620) hide show
  1. package/README.md +58 -12
  2. package/dist/audit/auditCli.d.ts +19 -0
  3. package/dist/audit/auditCli.js +63 -0
  4. package/dist/audit/checks.d.ts +100 -0
  5. package/dist/audit/checks.js +279 -0
  6. package/dist/audit/checksShared.d.ts +74 -0
  7. package/dist/audit/checksShared.js +37 -0
  8. package/dist/audit/generateAudit.d.ts +19 -0
  9. package/dist/audit/generateAudit.js +122 -0
  10. package/dist/audit/index.d.ts +4 -0
  11. package/dist/audit/index.js +4 -0
  12. package/dist/audit/readAudit.d.ts +50 -0
  13. package/dist/audit/readAudit.js +59 -0
  14. package/dist/audit/types.d.ts +40 -0
  15. package/dist/audit/types.js +8 -0
  16. package/dist/auth/credentialEnvFile.d.ts +11 -0
  17. package/dist/auth/credentialEnvFile.js +60 -0
  18. package/dist/auth/credentialProvisioning.d.ts +15 -0
  19. package/dist/auth/credentialProvisioning.js +75 -0
  20. package/dist/auth/credentialProvisioningReceipt.d.ts +28 -0
  21. package/dist/auth/credentialProvisioningReceipt.js +70 -0
  22. package/dist/auth/credentialProvisioningRequest.d.ts +51 -0
  23. package/dist/auth/credentialProvisioningRequest.js +169 -0
  24. package/dist/auth/credentialWorldBindings.d.ts +21 -0
  25. package/dist/auth/credentialWorldBindings.js +104 -0
  26. package/dist/auth/index.d.ts +7 -0
  27. package/dist/auth/index.js +7 -0
  28. package/dist/auth/paths.d.ts +11 -0
  29. package/dist/auth/paths.js +21 -0
  30. package/dist/auth/runtimeCredentials.js +18 -2
  31. package/dist/auth/targetSecretSourceAuthor.d.ts +18 -0
  32. package/dist/auth/targetSecretSourceAuthor.js +52 -0
  33. package/dist/auth/targetSecretSourceFsPublish.d.ts +15 -0
  34. package/dist/auth/targetSecretSourceFsPublish.js +49 -0
  35. package/dist/auth/targetSecretSourceFsPublishImmutable.d.ts +16 -0
  36. package/dist/auth/targetSecretSourceFsPublishImmutable.js +435 -0
  37. package/dist/auth/targetSecretSourceFsRead.d.ts +14 -0
  38. package/dist/auth/targetSecretSourceFsRead.js +198 -0
  39. package/dist/auth/targetSecretSourceGrant.d.ts +16 -0
  40. package/dist/auth/targetSecretSourceGrant.js +99 -0
  41. package/dist/auth/targetSecretSourceGrantRecords.d.ts +84 -0
  42. package/dist/auth/targetSecretSourceGrantRecords.js +214 -0
  43. package/dist/auth/targetSecretSourceLifecycle.d.ts +30 -0
  44. package/dist/auth/targetSecretSourceLifecycle.js +52 -0
  45. package/dist/auth/targetSecretSourceOwnerEntropy.d.ts +6 -0
  46. package/dist/auth/targetSecretSourceOwnerEntropy.js +28 -0
  47. package/dist/auth/targetSecretSourceRecordCommon.d.ts +14 -0
  48. package/dist/auth/targetSecretSourceRecordCommon.js +100 -0
  49. package/dist/auth/targetSecretSourceRecordPublish.d.ts +10 -0
  50. package/dist/auth/targetSecretSourceRecordPublish.js +104 -0
  51. package/dist/auth/targetSecretSourceResolver.d.ts +10 -0
  52. package/dist/auth/targetSecretSourceResolver.js +137 -0
  53. package/dist/auth/targetSecretSourceRevoke.d.ts +20 -0
  54. package/dist/auth/targetSecretSourceRevoke.js +92 -0
  55. package/dist/auth/targetSecretSourceRotate.d.ts +19 -0
  56. package/dist/auth/targetSecretSourceRotate.js +121 -0
  57. package/dist/auth/targetSecretSourceVersionRecords.d.ts +49 -0
  58. package/dist/auth/targetSecretSourceVersionRecords.js +166 -0
  59. package/dist/cli/artifactsCommands.d.ts +27 -0
  60. package/dist/cli/artifactsCommands.js +132 -0
  61. package/dist/cli/authCommands.d.ts +5 -0
  62. package/dist/cli/authCommands.js +221 -0
  63. package/dist/cli/compileBuildCommands.d.ts +3 -0
  64. package/dist/cli/compileBuildCommands.js +35 -0
  65. package/dist/cli/containerBundleCommand.d.ts +6 -0
  66. package/dist/cli/containerBundleCommand.js +116 -0
  67. package/dist/cli/devCommands.d.ts +3 -0
  68. package/dist/cli/devCommands.js +115 -0
  69. package/dist/cli/downCommand.d.ts +25 -0
  70. package/dist/cli/downCommand.js +134 -0
  71. package/dist/cli/index.js +6 -3
  72. package/dist/cli/lifecycleCommands.d.ts +1 -1
  73. package/dist/cli/lifecycleCommands.js +11 -179
  74. package/dist/cli/lifecycleMachine.d.ts +19 -0
  75. package/dist/cli/lifecycleMachine.js +78 -0
  76. package/dist/cli/lifecyclePlan.d.ts +35 -0
  77. package/dist/cli/lifecyclePlan.js +240 -0
  78. package/dist/cli/lifecyclePlanningCommands.d.ts +3 -0
  79. package/dist/cli/lifecyclePlanningCommands.js +30 -0
  80. package/dist/cli/runCli.d.ts +15 -2
  81. package/dist/cli/runCli.js +31 -71
  82. package/dist/cli/runPublishCommands.d.ts +3 -0
  83. package/dist/cli/runPublishCommands.js +70 -0
  84. package/dist/cli/statusCommand.d.ts +3 -32
  85. package/dist/cli/statusCommand.js +37 -233
  86. package/dist/cli/statusCommandLive.d.ts +20 -0
  87. package/dist/cli/statusCommandLive.js +188 -0
  88. package/dist/cli/statusCommandOptions.d.ts +40 -0
  89. package/dist/cli/statusCommandOptions.js +42 -0
  90. package/dist/cli/targetCliRoute.d.ts +2 -0
  91. package/dist/cli/targetCliRoute.js +30 -0
  92. package/dist/cli/targetCommands.d.ts +33 -0
  93. package/dist/cli/targetCommands.js +257 -0
  94. package/dist/cli/targetComposedPreparationCommand.d.ts +6 -0
  95. package/dist/cli/targetComposedPreparationCommand.js +39 -0
  96. package/dist/cli/targetDefaultArtifactAuthority.d.ts +5 -0
  97. package/dist/cli/targetDefaultArtifactAuthority.js +28 -0
  98. package/dist/cli/targetDefaultAuthorities.d.ts +53 -0
  99. package/dist/cli/targetDefaultAuthorities.js +210 -0
  100. package/dist/cli/targetDefaultConfig.d.ts +68 -0
  101. package/dist/cli/targetDefaultConfig.js +317 -0
  102. package/dist/cli/targetDefaultConfigStdin.d.ts +13 -0
  103. package/dist/cli/targetDefaultConfigStdin.js +215 -0
  104. package/dist/cli/targetDefaultEnvelope.d.ts +1 -0
  105. package/dist/cli/targetDefaultEnvelope.js +13 -0
  106. package/dist/cli/targetDefaultHandlerFactory.d.ts +28 -0
  107. package/dist/cli/targetDefaultHandlerFactory.js +247 -0
  108. package/dist/cli/targetDefaultHandlers.d.ts +21 -0
  109. package/dist/cli/targetDefaultHandlers.js +72 -0
  110. package/dist/cli/targetDefaultJournalAuthority.d.ts +35 -0
  111. package/dist/cli/targetDefaultJournalAuthority.js +135 -0
  112. package/dist/cli/targetDefaultWorldClock.d.ts +4 -0
  113. package/dist/cli/targetDefaultWorldClock.js +14 -0
  114. package/dist/cli/targetDefaultWorldQueries.d.ts +5 -0
  115. package/dist/cli/targetDefaultWorldQueries.js +11 -0
  116. package/dist/cli/targetDefaultWorldReadiness.d.ts +4 -0
  117. package/dist/cli/targetDefaultWorldReadiness.js +17 -0
  118. package/dist/cli/targetEvidenceHelperResolution.d.ts +14 -0
  119. package/dist/cli/targetEvidenceHelperResolution.js +23 -0
  120. package/dist/cli/targetLookupCli.d.ts +3 -0
  121. package/dist/cli/targetLookupCli.js +31 -0
  122. package/dist/cli/targetLookupCommands.d.ts +12 -0
  123. package/dist/cli/targetLookupCommands.js +69 -0
  124. package/dist/cli/targetOperationDispatch.d.ts +58 -0
  125. package/dist/cli/targetOperationDispatch.js +21 -0
  126. package/dist/cli/targetReceiptOutput.d.ts +14 -0
  127. package/dist/cli/targetReceiptOutput.js +21 -0
  128. package/dist/cli/targetRequestFile.d.ts +14 -0
  129. package/dist/cli/targetRequestFile.js +63 -0
  130. package/dist/cli/targetSecretSourceInput.d.ts +28 -0
  131. package/dist/cli/targetSecretSourceInput.js +121 -0
  132. package/dist/cli/targetWorldClockCommand.d.ts +10 -0
  133. package/dist/cli/targetWorldClockCommand.js +42 -0
  134. package/dist/cli/targetWorldClockCrossProcess.test-helper.d.ts +13 -0
  135. package/dist/cli/targetWorldClockCrossProcess.test-helper.js +109 -0
  136. package/dist/cli/targetWorldReadinessCommand.d.ts +10 -0
  137. package/dist/cli/targetWorldReadinessCommand.js +43 -0
  138. package/dist/cli/upCommand.d.ts +3 -0
  139. package/dist/cli/upCommand.js +133 -0
  140. package/dist/cli/upImageCommand.d.ts +11 -0
  141. package/dist/cli/upImageCommand.js +41 -0
  142. package/dist/cli/upLifecycleInvocation.d.ts +41 -0
  143. package/dist/cli/upLifecycleInvocation.js +48 -0
  144. package/dist/cli/upLifecycleRecovery.d.ts +4 -0
  145. package/dist/cli/upLifecycleRecovery.js +53 -0
  146. package/dist/compiler/agentNodeMerge.d.ts +2 -0
  147. package/dist/compiler/agentNodeMerge.js +79 -0
  148. package/dist/compiler/agentSurfaces.js +11 -1
  149. package/dist/compiler/buildCompilePlan.js +17 -0
  150. package/dist/compiler/buildCompilePlanAgent.d.ts +11 -0
  151. package/dist/compiler/buildCompilePlanAgent.js +56 -0
  152. package/dist/compiler/buildCompilePlanTeams.d.ts +1 -0
  153. package/dist/compiler/buildCompilePlanTeams.js +4 -1
  154. package/dist/compiler/buildCompilePlanTraversal.js +75 -82
  155. package/dist/compiler/buildProject.d.ts +20 -1
  156. package/dist/compiler/buildProject.js +121 -7
  157. package/dist/compiler/compilePlanHelpers.js +2 -0
  158. package/dist/compiler/compileProject.d.ts +15 -0
  159. package/dist/compiler/compileProject.js +29 -75
  160. package/dist/compiler/compileProjectPolicy.d.ts +5 -0
  161. package/dist/compiler/compileProjectPolicy.js +21 -0
  162. package/dist/compiler/compileProjectReports.d.ts +9 -0
  163. package/dist/compiler/compileProjectReports.js +52 -0
  164. package/dist/compiler/containerArtifactSummaries.d.ts +7 -0
  165. package/dist/compiler/containerArtifactSummaries.js +138 -0
  166. package/dist/compiler/containerArtifacts.d.ts +10 -0
  167. package/dist/compiler/containerArtifacts.js +126 -125
  168. package/dist/compiler/containerArtifactsPlans.d.ts +5 -3
  169. package/dist/compiler/containerArtifactsPlans.js +31 -118
  170. package/dist/compiler/containerArtifactsRender.d.ts +3 -1
  171. package/dist/compiler/containerArtifactsRender.js +40 -81
  172. package/dist/compiler/containerArtifactsTypes.d.ts +12 -0
  173. package/dist/compiler/containerConfigEnvRender.d.ts +3 -0
  174. package/dist/compiler/containerConfigEnvRender.js +54 -0
  175. package/dist/compiler/containerEntrypointRender.d.ts +1 -0
  176. package/dist/compiler/containerEntrypointRender.js +60 -53
  177. package/dist/compiler/containerEntrypointShell.d.ts +5 -0
  178. package/dist/compiler/containerEntrypointShell.js +29 -0
  179. package/dist/compiler/containerPackageOverrides.d.ts +27 -0
  180. package/dist/compiler/containerPackageOverrides.js +63 -0
  181. package/dist/compiler/containerPackageRender.d.ts +15 -0
  182. package/dist/compiler/containerPackageRender.js +63 -0
  183. package/dist/compiler/containerTargetPlanResolution.d.ts +20 -0
  184. package/dist/compiler/containerTargetPlanResolution.js +97 -0
  185. package/dist/compiler/containerTargetResources.js +3 -1
  186. package/dist/compiler/daimonTelemetryArtifacts.d.ts +22 -0
  187. package/dist/compiler/daimonTelemetryArtifacts.js +61 -0
  188. package/dist/compiler/dockerBuildContext.d.ts +16 -0
  189. package/dist/compiler/dockerBuildContext.js +159 -0
  190. package/dist/compiler/dockerBuildSkip.d.ts +30 -0
  191. package/dist/compiler/dockerBuildSkip.js +81 -0
  192. package/dist/compiler/index.d.ts +4 -0
  193. package/dist/compiler/index.js +4 -0
  194. package/dist/compiler/memoryArtifacts.d.ts +26 -0
  195. package/dist/compiler/memoryArtifacts.js +134 -0
  196. package/dist/compiler/memoryResolution.d.ts +4 -0
  197. package/dist/compiler/memoryResolution.js +147 -0
  198. package/dist/compiler/modelEnv.d.ts +2 -0
  199. package/dist/compiler/modelEnv.js +6 -0
  200. package/dist/compiler/moltnetAllowedWakeSendersValidation.d.ts +2 -0
  201. package/dist/compiler/moltnetAllowedWakeSendersValidation.js +42 -0
  202. package/dist/compiler/moltnetArtifactPaths.d.ts +26 -0
  203. package/dist/compiler/moltnetArtifactPaths.js +49 -0
  204. package/dist/compiler/moltnetArtifactTypes.d.ts +46 -0
  205. package/dist/compiler/moltnetArtifactTypes.js +1 -0
  206. package/dist/compiler/moltnetArtifacts.d.ts +2 -40
  207. package/dist/compiler/moltnetArtifacts.js +56 -95
  208. package/dist/compiler/moltnetBinaries.d.ts +21 -1
  209. package/dist/compiler/moltnetBinaries.js +156 -28
  210. package/dist/compiler/moltnetClientConfig.js +18 -2
  211. package/dist/compiler/moltnetConfigLowering.d.ts +16 -1
  212. package/dist/compiler/moltnetConfigLowering.js +67 -5
  213. package/dist/compiler/moltnetExternalParticipantArtifact.d.ts +38 -0
  214. package/dist/compiler/moltnetExternalParticipantArtifact.js +188 -0
  215. package/dist/compiler/moltnetNodeConfig.js +7 -2
  216. package/dist/compiler/moltnetReleaseAuthority.d.ts +17 -0
  217. package/dist/compiler/moltnetReleaseAuthority.js +73 -0
  218. package/dist/compiler/moltnetReleaseDownload.d.ts +12 -0
  219. package/dist/compiler/moltnetReleaseDownload.js +85 -0
  220. package/dist/compiler/moltnetRepresentativeResolution.d.ts +1 -0
  221. package/dist/compiler/moltnetRepresentativeResolution.js +16 -2
  222. package/dist/compiler/moltnetResolution.js +72 -20
  223. package/dist/compiler/moltnetRoomMemberships.js +37 -9
  224. package/dist/compiler/moltnetRuntimeConfig.js +11 -0
  225. package/dist/compiler/moltnetServerPlans.d.ts +9 -0
  226. package/dist/compiler/moltnetServerPlans.js +132 -0
  227. package/dist/compiler/organizationIdentity.d.ts +27 -0
  228. package/dist/compiler/organizationIdentity.js +297 -0
  229. package/dist/compiler/organizationReadyEvidence.d.ts +49 -0
  230. package/dist/compiler/organizationReadyEvidence.js +261 -0
  231. package/dist/compiler/projectManifestGraph.d.ts +4 -0
  232. package/dist/compiler/projectManifestGraph.js +24 -0
  233. package/dist/compiler/runProject.d.ts +4 -0
  234. package/dist/compiler/runProject.js +37 -22
  235. package/dist/compiler/runProjectAuth.d.ts +7 -1
  236. package/dist/compiler/runProjectAuth.js +87 -9
  237. package/dist/compiler/runProjectDocker.d.ts +7 -0
  238. package/dist/compiler/runProjectDocker.js +187 -19
  239. package/dist/compiler/runProjectLifecycle.d.ts +7 -0
  240. package/dist/compiler/runProjectLifecycle.js +40 -0
  241. package/dist/compiler/syncProjectAuth.js +4 -1
  242. package/dist/compiler/teamContextActiveEnvironments.d.ts +13 -0
  243. package/dist/compiler/teamContextActiveEnvironments.js +255 -0
  244. package/dist/compiler/teamContextSupport.js +32 -40
  245. package/dist/compiler/teamContextTypes.d.ts +2 -0
  246. package/dist/compiler/types.d.ts +82 -1
  247. package/dist/compiler/upProject.d.ts +5 -0
  248. package/dist/compiler/upProject.js +257 -20
  249. package/dist/compiler/upReceipt.d.ts +36 -0
  250. package/dist/compiler/upReceipt.js +82 -0
  251. package/dist/compiler/updateProjectModels.js +42 -60
  252. package/dist/compiler/updateProjectRuntime.js +22 -35
  253. package/dist/compiler/updateProjectSurfaces.js +53 -47
  254. package/dist/compiler/worldBindings.d.ts +39 -0
  255. package/dist/compiler/worldBindings.js +247 -0
  256. package/dist/compiler/worldBindingsFile.d.ts +5 -0
  257. package/dist/compiler/worldBindingsFile.js +162 -0
  258. package/dist/deployment/artifactsExport.d.ts +49 -0
  259. package/dist/deployment/artifactsExport.js +217 -0
  260. package/dist/deployment/artifactsExportDocker.d.ts +48 -0
  261. package/dist/deployment/artifactsExportDocker.js +91 -0
  262. package/dist/deployment/artifactsExportPlan.d.ts +24 -0
  263. package/dist/deployment/artifactsExportPlan.js +135 -0
  264. package/dist/deployment/artifactsExportTypes.d.ts +50 -0
  265. package/dist/deployment/artifactsExportTypes.js +52 -0
  266. package/dist/deployment/buildImageCacheStore.d.ts +23 -0
  267. package/dist/deployment/buildImageCacheStore.js +54 -0
  268. package/dist/deployment/deploymentLifecycleCorrelation.d.ts +11 -0
  269. package/dist/deployment/deploymentLifecycleCorrelation.js +33 -0
  270. package/dist/deployment/dockerInspect.d.ts +9 -0
  271. package/dist/deployment/dockerInspect.js +24 -1
  272. package/dist/deployment/dockerLabels.d.ts +2 -0
  273. package/dist/deployment/dockerLabels.js +2 -0
  274. package/dist/deployment/dockerLogs.js +2 -10
  275. package/dist/deployment/dockerManager.d.ts +51 -0
  276. package/dist/deployment/dockerManager.js +118 -1
  277. package/dist/deployment/dockerProbeGateway.js +64 -5
  278. package/dist/deployment/dockerRecover.d.ts +17 -0
  279. package/dist/deployment/dockerRecover.js +137 -0
  280. package/dist/deployment/dockerTeardown.d.ts +32 -0
  281. package/dist/deployment/dockerTeardown.js +61 -0
  282. package/dist/deployment/downDeployment.d.ts +34 -0
  283. package/dist/deployment/downDeployment.js +147 -0
  284. package/dist/deployment/downReceiptTypes.d.ts +21 -0
  285. package/dist/deployment/downReceiptTypes.js +30 -0
  286. package/dist/deployment/index.d.ts +17 -0
  287. package/dist/deployment/index.js +18 -0
  288. package/dist/deployment/lifecycleCompletion.d.ts +37 -0
  289. package/dist/deployment/lifecycleCompletion.js +236 -0
  290. package/dist/deployment/lifecycleCompletionContracts.d.ts +158 -0
  291. package/dist/deployment/lifecycleCompletionContracts.js +106 -0
  292. package/dist/deployment/lifecycleCompletionHeartbeat.d.ts +2 -0
  293. package/dist/deployment/lifecycleCompletionHeartbeat.js +50 -0
  294. package/dist/deployment/lifecycleCompletionLookup.d.ts +18 -0
  295. package/dist/deployment/lifecycleCompletionLookup.js +88 -0
  296. package/dist/deployment/lifecycleCompletionOwner.d.ts +8 -0
  297. package/dist/deployment/lifecycleCompletionOwner.js +31 -0
  298. package/dist/deployment/lifecycleCompletionParsing.d.ts +12 -0
  299. package/dist/deployment/lifecycleCompletionParsing.js +108 -0
  300. package/dist/deployment/lifecycleCompletionPaths.d.ts +9 -0
  301. package/dist/deployment/lifecycleCompletionPaths.js +16 -0
  302. package/dist/deployment/lifecycleCompletionPublication.d.ts +5 -0
  303. package/dist/deployment/lifecycleCompletionPublication.js +35 -0
  304. package/dist/deployment/lifecycleCompletionRecovery.d.ts +21 -0
  305. package/dist/deployment/lifecycleCompletionRecovery.js +56 -0
  306. package/dist/deployment/lifecycleCompletionRoot.d.ts +21 -0
  307. package/dist/deployment/lifecycleCompletionRoot.js +243 -0
  308. package/dist/deployment/lifecycleCompletionStore.d.ts +6 -0
  309. package/dist/deployment/lifecycleCompletionStore.js +151 -0
  310. package/dist/deployment/organizationHandoffAuthorityFsClient.d.ts +17 -0
  311. package/dist/deployment/organizationHandoffAuthorityFsClient.js +132 -0
  312. package/dist/deployment/organizationHandoffAuthorityFsWorker.d.ts +1 -0
  313. package/dist/deployment/organizationHandoffAuthorityFsWorker.js +285 -0
  314. package/dist/deployment/organizationHandoffAuthorityFsWorkerParent.fixture.d.ts +1 -0
  315. package/dist/deployment/organizationHandoffAuthorityFsWorkerParent.fixture.js +26 -0
  316. package/dist/deployment/organizationHandoffAuthorityStore.d.ts +41 -0
  317. package/dist/deployment/organizationHandoffAuthorityStore.js +348 -0
  318. package/dist/deployment/organizationHandoffAuthorityTypes.d.ts +76 -0
  319. package/dist/deployment/organizationHandoffAuthorityTypes.js +148 -0
  320. package/dist/deployment/organizationHandoffTypes.d.ts +29 -0
  321. package/dist/deployment/organizationHandoffTypes.js +80 -0
  322. package/dist/deployment/organizationReady.d.ts +52 -0
  323. package/dist/deployment/organizationReady.js +200 -0
  324. package/dist/deployment/privateArtifactsExport.d.ts +18 -0
  325. package/dist/deployment/privateArtifactsExport.js +80 -0
  326. package/dist/deployment/providerRuntimeBoundaryScanner.test-helper.d.ts +8 -0
  327. package/dist/deployment/providerRuntimeBoundaryScanner.test-helper.js +60 -0
  328. package/dist/deployment/record.d.ts +26 -1
  329. package/dist/deployment/record.js +49 -4
  330. package/dist/deployment/simfileFixtureBoundary.test-helper.d.ts +8 -0
  331. package/dist/deployment/simfileFixtureBoundary.test-helper.js +103 -0
  332. package/dist/deployment/target.d.ts +1 -35
  333. package/dist/deployment/target.js +1 -96
  334. package/dist/deployment/upReceiptTypes.d.ts +111 -0
  335. package/dist/deployment/upReceiptTypes.js +164 -0
  336. package/dist/dev/activity.d.ts +14 -0
  337. package/dist/dev/activity.js +48 -0
  338. package/dist/dev/docker.d.ts +16 -0
  339. package/dist/dev/docker.js +71 -0
  340. package/dist/dev/index.d.ts +2 -0
  341. package/dist/dev/index.js +2 -0
  342. package/dist/dev/project.d.ts +35 -0
  343. package/dist/dev/project.js +170 -0
  344. package/dist/distribution/buildDistributionReport.d.ts +2 -1
  345. package/dist/distribution/buildDistributionReport.js +2 -1
  346. package/dist/distribution/distributionReportSchema.d.ts +5 -0
  347. package/dist/distribution/distributionReportSchema.js +7 -2
  348. package/dist/distribution/index.d.ts +2 -2
  349. package/dist/distribution/index.js +1 -1
  350. package/dist/distribution/types.d.ts +7 -0
  351. package/dist/distribution/types.js +1 -0
  352. package/dist/filesystem/paths.js +10 -1
  353. package/dist/ledger/causalConformanceCli.d.ts +1 -0
  354. package/dist/ledger/causalConformanceCli.js +41 -0
  355. package/dist/ledger/causeNamespace.d.ts +8 -0
  356. package/dist/ledger/causeNamespace.js +24 -0
  357. package/dist/ledger/conformance.d.ts +83 -0
  358. package/dist/ledger/conformance.js +259 -0
  359. package/dist/ledger/emitters.d.ts +76 -0
  360. package/dist/ledger/emitters.js +188 -0
  361. package/dist/ledger/index.d.ts +4 -0
  362. package/dist/ledger/index.js +4 -0
  363. package/dist/ledger/principal.d.ts +96 -0
  364. package/dist/ledger/principal.js +121 -0
  365. package/dist/manifest/externalParticipantSchemas.d.ts +18 -0
  366. package/dist/manifest/externalParticipantSchemas.js +17 -0
  367. package/dist/manifest/index.d.ts +1 -0
  368. package/dist/manifest/index.js +1 -0
  369. package/dist/manifest/inlineAgentMember.d.ts +2 -0
  370. package/dist/manifest/inlineAgentMember.js +9 -0
  371. package/dist/manifest/loadManifest.js +14 -8
  372. package/dist/manifest/mcpSchemas.d.ts +17 -0
  373. package/dist/manifest/mcpSchemas.js +41 -0
  374. package/dist/manifest/memorySchemas.d.ts +245 -0
  375. package/dist/manifest/memorySchemas.js +148 -0
  376. package/dist/manifest/renderSpawnfile.js +22 -131
  377. package/dist/manifest/renderSpawnfileNetworks.js +9 -2
  378. package/dist/manifest/renderSpawnfileSurfaces.d.ts +2 -0
  379. package/dist/manifest/renderSpawnfileSurfaces.js +134 -0
  380. package/dist/manifest/schemas.d.ts +1868 -99
  381. package/dist/manifest/schemas.js +78 -32
  382. package/dist/manifest/surfaceSchemas.d.ts +17 -0
  383. package/dist/manifest/surfaceSchemas.js +24 -1
  384. package/dist/manifest/teamNetworkAccessSchemas.d.ts +1 -1
  385. package/dist/manifest/teamNetworkAuthSchemas.d.ts +48 -0
  386. package/dist/manifest/teamNetworkAuthSchemas.js +103 -0
  387. package/dist/manifest/teamNetworkSchemas.d.ts +8 -187
  388. package/dist/manifest/teamNetworkSchemas.js +3 -317
  389. package/dist/manifest/teamNetworkServerSchemas.d.ts +150 -0
  390. package/dist/manifest/teamNetworkServerSchemas.js +199 -0
  391. package/dist/ownership/siblingBuildFreshness.d.ts +20 -0
  392. package/dist/ownership/siblingBuildFreshness.js +20 -0
  393. package/dist/ownership/simfileRunOperatorInputs.d.ts +103 -0
  394. package/dist/ownership/simfileRunOperatorInputs.js +139 -0
  395. package/dist/report/types.d.ts +142 -0
  396. package/dist/runtime/common.d.ts +37 -0
  397. package/dist/runtime/common.js +56 -1
  398. package/dist/runtime/container.d.ts +29 -1
  399. package/dist/runtime/container.js +127 -11
  400. package/dist/runtime/containerPackageOverrides.d.ts +37 -0
  401. package/dist/runtime/containerPackageOverrides.js +33 -0
  402. package/dist/runtime/index.d.ts +2 -0
  403. package/dist/runtime/index.js +2 -0
  404. package/dist/runtime/install.d.ts +1 -1
  405. package/dist/runtime/install.js +43 -1
  406. package/dist/runtime/mnemeMcp.d.ts +15 -0
  407. package/dist/runtime/mnemeMcp.js +109 -0
  408. package/dist/runtime/openclaw/adapter.js +15 -4
  409. package/dist/runtime/openclaw/mcp.d.ts +10 -0
  410. package/dist/runtime/openclaw/mcp.js +69 -0
  411. package/dist/runtime/openclaw/runAuth.js +2 -2
  412. package/dist/runtime/openclaw/scaffold.js +1 -1
  413. package/dist/runtime/openclaw/schedules.d.ts +38 -0
  414. package/dist/runtime/openclaw/schedules.js +74 -0
  415. package/dist/runtime/pi/adapter.d.ts +4 -0
  416. package/dist/runtime/pi/adapter.js +231 -0
  417. package/dist/runtime/pi/appActivitySource.d.ts +1 -0
  418. package/dist/runtime/pi/appActivitySource.js +199 -0
  419. package/dist/runtime/pi/appAgentConfig.d.ts +11 -0
  420. package/dist/runtime/pi/appAgentConfig.js +264 -0
  421. package/dist/runtime/pi/appCliEnginesSource.d.ts +1 -0
  422. package/dist/runtime/pi/appCliEnginesSource.js +183 -0
  423. package/dist/runtime/pi/appCliSource.d.ts +1 -0
  424. package/dist/runtime/pi/appCliSource.js +353 -0
  425. package/dist/runtime/pi/appControlSource.d.ts +1 -0
  426. package/dist/runtime/pi/appControlSource.js +390 -0
  427. package/dist/runtime/pi/appControlWakeIdentitySource.d.ts +1 -0
  428. package/dist/runtime/pi/appControlWakeIdentitySource.js +19 -0
  429. package/dist/runtime/pi/appCoreSource.d.ts +4 -0
  430. package/dist/runtime/pi/appCoreSource.js +244 -0
  431. package/dist/runtime/pi/appPreludeSource.d.ts +1 -0
  432. package/dist/runtime/pi/appPreludeSource.js +191 -0
  433. package/dist/runtime/pi/appScheduleSource.d.ts +1 -0
  434. package/dist/runtime/pi/appScheduleSource.js +80 -0
  435. package/dist/runtime/pi/appScriptedEngine.d.ts +31 -0
  436. package/dist/runtime/pi/appScriptedEngine.js +42 -0
  437. package/dist/runtime/pi/appSource.d.ts +4 -0
  438. package/dist/runtime/pi/appSource.js +12 -0
  439. package/dist/runtime/pi/appTemplate.d.ts +14 -0
  440. package/dist/runtime/pi/appTemplate.js +27 -0
  441. package/dist/runtime/pi/appTemplateTypes.d.ts +64 -0
  442. package/dist/runtime/pi/appTemplateTypes.js +18 -0
  443. package/dist/runtime/pi/appWakeContextSource.d.ts +1 -0
  444. package/dist/runtime/pi/appWakeContextSource.js +398 -0
  445. package/dist/runtime/pi/containerTargets.d.ts +4 -0
  446. package/dist/runtime/pi/containerTargets.js +57 -0
  447. package/dist/runtime/pi/runAuth.d.ts +2 -0
  448. package/dist/runtime/pi/runAuth.js +185 -0
  449. package/dist/runtime/pi/testHelpers.d.ts +2 -0
  450. package/dist/runtime/pi/testHelpers.js +40 -0
  451. package/dist/runtime/picoclaw/adapter.js +23 -27
  452. package/dist/runtime/picoclaw/mcp.d.ts +4 -0
  453. package/dist/runtime/picoclaw/mcp.js +43 -0
  454. package/dist/runtime/picoclaw/memory.d.ts +7 -0
  455. package/dist/runtime/picoclaw/memory.js +17 -0
  456. package/dist/runtime/picoclaw/runAuth.js +1 -1
  457. package/dist/runtime/picoclaw/scaffold.js +1 -1
  458. package/dist/runtime/picoclaw/schedules.d.ts +26 -0
  459. package/dist/runtime/picoclaw/schedules.js +62 -3
  460. package/dist/runtime/registry.js +3 -0
  461. package/dist/runtime/scheduleUtils.d.ts +2 -0
  462. package/dist/runtime/scheduleUtils.js +15 -0
  463. package/dist/runtime/types.d.ts +26 -2
  464. package/dist/shared/errors.d.ts +1 -1
  465. package/dist/shared/errors.js +2 -2
  466. package/dist/shared/index.d.ts +1 -0
  467. package/dist/shared/index.js +1 -0
  468. package/dist/shared/redaction.d.ts +2 -0
  469. package/dist/shared/redaction.js +10 -0
  470. package/dist/status/buildStatus.d.ts +1 -0
  471. package/dist/status/buildStatus.js +2 -0
  472. package/dist/status/compileReport.d.ts +22 -0
  473. package/dist/status/compileReport.js +16 -2
  474. package/dist/status/compiledProbeCollection.d.ts +21 -0
  475. package/dist/status/compiledProbeCollection.js +27 -0
  476. package/dist/status/deployments.js +5 -12
  477. package/dist/status/imageStatusReport.js +6 -0
  478. package/dist/status/index.d.ts +3 -0
  479. package/dist/status/index.js +3 -0
  480. package/dist/status/lifecycleProbes.d.ts +19 -0
  481. package/dist/status/lifecycleProbes.js +174 -0
  482. package/dist/status/moltnetProbes.d.ts +7 -8
  483. package/dist/status/moltnetProbes.js +27 -198
  484. package/dist/status/moltnetWiringProbes.d.ts +19 -0
  485. package/dist/status/moltnetWiringProbes.js +178 -0
  486. package/dist/target/cleanupRun.d.ts +41 -0
  487. package/dist/target/cleanupRun.js +139 -0
  488. package/dist/target/cleanupRunDocker.d.ts +16 -0
  489. package/dist/target/cleanupRunDocker.js +66 -0
  490. package/dist/target/cleanupRunDocker.test-helper.d.ts +67 -0
  491. package/dist/target/cleanupRunDocker.test-helper.js +238 -0
  492. package/dist/target/cleanupRunDockerPreflight.d.ts +17 -0
  493. package/dist/target/cleanupRunDockerPreflight.js +224 -0
  494. package/dist/target/composedPreparation.d.ts +205 -0
  495. package/dist/target/composedPreparation.js +223 -0
  496. package/dist/target/containerBundle.d.ts +82 -0
  497. package/dist/target/containerBundle.js +243 -0
  498. package/dist/target/containerBundleArchive.d.ts +31 -0
  499. package/dist/target/containerBundleArchive.js +140 -0
  500. package/dist/target/containerBundleAuthority.d.ts +25 -0
  501. package/dist/target/containerBundleAuthority.js +65 -0
  502. package/dist/target/containerBundleContracts.d.ts +114 -0
  503. package/dist/target/containerBundleContracts.js +173 -0
  504. package/dist/target/containerBundleFilesystemStore.d.ts +3 -0
  505. package/dist/target/containerBundleFilesystemStore.js +247 -0
  506. package/dist/target/containerBundlePolicy.d.ts +33 -0
  507. package/dist/target/containerBundlePolicy.js +64 -0
  508. package/dist/target/containerBundleStore.d.ts +127 -0
  509. package/dist/target/containerBundleStore.js +284 -0
  510. package/dist/target/contracts.d.ts +538 -0
  511. package/dist/target/contracts.js +373 -0
  512. package/dist/target/dockerArtifactIdentityTypes.d.ts +56 -0
  513. package/dist/target/dockerArtifactIdentityTypes.js +1 -0
  514. package/dist/target/dockerArtifactInspection.d.ts +40 -0
  515. package/dist/target/dockerArtifactInspection.js +125 -0
  516. package/dist/target/dockerArtifacts.d.ts +21 -0
  517. package/dist/target/dockerArtifacts.js +110 -0
  518. package/dist/target/dockerArtifactsProvider.d.ts +41 -0
  519. package/dist/target/dockerArtifactsProvider.js +449 -0
  520. package/dist/target/dockerCommandExecutor.d.ts +27 -0
  521. package/dist/target/dockerCommandExecutor.js +200 -0
  522. package/dist/target/dockerCommandExecutorCore.d.ts +34 -0
  523. package/dist/target/dockerCommandExecutorCore.js +273 -0
  524. package/dist/target/dockerContainerBundleBuilder.d.ts +8 -0
  525. package/dist/target/dockerContainerBundleBuilder.js +256 -0
  526. package/dist/target/dockerContextSnapshot.d.ts +21 -0
  527. package/dist/target/dockerContextSnapshot.js +158 -0
  528. package/dist/target/dockerEndpointFingerprint.d.ts +1 -0
  529. package/dist/target/dockerEndpointFingerprint.js +9 -0
  530. package/dist/target/dockerPreparedArtifact.d.ts +48 -0
  531. package/dist/target/dockerPreparedArtifact.js +131 -0
  532. package/dist/target/dockerProjectionJson.d.ts +1 -0
  533. package/dist/target/dockerProjectionJson.js +80 -0
  534. package/dist/target/dockerPublicArtifactSnapshot.d.ts +17 -0
  535. package/dist/target/dockerPublicArtifactSnapshot.js +99 -0
  536. package/dist/target/dockerResources.d.ts +26 -0
  537. package/dist/target/dockerResources.js +162 -0
  538. package/dist/target/dockerResourcesProvider.d.ts +44 -0
  539. package/dist/target/dockerResourcesProvider.js +207 -0
  540. package/dist/target/dockerSecrets.d.ts +39 -0
  541. package/dist/target/dockerSecrets.js +249 -0
  542. package/dist/target/dockerSecretsAuthority.d.ts +26 -0
  543. package/dist/target/dockerSecretsAuthority.js +216 -0
  544. package/dist/target/dockerSecretsLifecycle.d.ts +25 -0
  545. package/dist/target/dockerSecretsLifecycle.js +133 -0
  546. package/dist/target/dockerSecretsProvider.d.ts +68 -0
  547. package/dist/target/dockerSecretsProvider.js +329 -0
  548. package/dist/target/dockerTarget.d.ts +52 -0
  549. package/dist/target/dockerTarget.js +48 -0
  550. package/dist/target/dockerTargetBinding.d.ts +14 -0
  551. package/dist/target/dockerTargetBinding.js +96 -0
  552. package/dist/target/dockerWorldClock.d.ts +17 -0
  553. package/dist/target/dockerWorldClock.js +111 -0
  554. package/dist/target/dockerWorldReadiness.d.ts +17 -0
  555. package/dist/target/dockerWorldReadiness.js +119 -0
  556. package/dist/target/dockerWorldService.d.ts +23 -0
  557. package/dist/target/dockerWorldService.js +216 -0
  558. package/dist/target/dockerWorldServiceAuthority.d.ts +80 -0
  559. package/dist/target/dockerWorldServiceAuthority.js +182 -0
  560. package/dist/target/dockerWorldServiceLifecycle.d.ts +41 -0
  561. package/dist/target/dockerWorldServiceLifecycle.js +275 -0
  562. package/dist/target/dockerWorldServiceProvider.d.ts +60 -0
  563. package/dist/target/dockerWorldServiceProvider.js +318 -0
  564. package/dist/target/dockerWorldServiceStore.d.ts +73 -0
  565. package/dist/target/dockerWorldServiceStore.js +367 -0
  566. package/dist/target/evidenceExport.d.ts +55 -0
  567. package/dist/target/evidenceExport.js +518 -0
  568. package/dist/target/evidenceExportArchive.d.ts +10 -0
  569. package/dist/target/evidenceExportArchive.js +302 -0
  570. package/dist/target/evidenceExportContract.d.ts +27 -0
  571. package/dist/target/evidenceExportContract.js +40 -0
  572. package/dist/target/evidenceExportOperationsTestKit.d.ts +87 -0
  573. package/dist/target/evidenceExportOperationsTestKit.js +312 -0
  574. package/dist/target/evidenceExportProvider.d.ts +85 -0
  575. package/dist/target/evidenceExportProvider.js +187 -0
  576. package/dist/target/evidenceExportPublicationTypes.d.ts +16 -0
  577. package/dist/target/evidenceExportPublicationTypes.js +1 -0
  578. package/dist/target/evidenceExportStore.d.ts +70 -0
  579. package/dist/target/evidenceExportStore.js +498 -0
  580. package/dist/target/evidenceExportStorePublication.d.ts +7 -0
  581. package/dist/target/evidenceExportStorePublication.js +395 -0
  582. package/dist/target/handles.d.ts +20 -0
  583. package/dist/target/handles.js +56 -0
  584. package/dist/target/index.d.ts +12 -0
  585. package/dist/target/index.js +11 -0
  586. package/dist/target/journal.d.ts +59 -0
  587. package/dist/target/journal.js +529 -0
  588. package/dist/target/journalFilesystem.d.ts +3 -0
  589. package/dist/target/journalFilesystem.js +111 -0
  590. package/dist/target/journalRoot.d.ts +4 -0
  591. package/dist/target/journalRoot.js +6 -0
  592. package/dist/target/organizationAttachment.d.ts +23 -0
  593. package/dist/target/organizationAttachment.js +263 -0
  594. package/dist/target/organizationAttachmentAuthority.d.ts +65 -0
  595. package/dist/target/organizationAttachmentAuthority.js +161 -0
  596. package/dist/target/organizationAttachmentLifecycle.d.ts +17 -0
  597. package/dist/target/organizationAttachmentLifecycle.js +101 -0
  598. package/dist/target/organizationAttachmentProvider.d.ts +76 -0
  599. package/dist/target/organizationAttachmentProvider.js +289 -0
  600. package/dist/target/organizationAttachmentStore.d.ts +51 -0
  601. package/dist/target/organizationAttachmentStore.js +316 -0
  602. package/dist/target/publicArtifactSnapshot.d.ts +41 -0
  603. package/dist/target/publicArtifactSnapshot.js +150 -0
  604. package/dist/target/topologyActivation.d.ts +51 -0
  605. package/dist/target/topologyActivation.js +149 -0
  606. package/dist/target/topologyAttestation.d.ts +37 -0
  607. package/dist/target/topologyAttestation.js +300 -0
  608. package/dist/target/topologyAttestationErrors.d.ts +1 -0
  609. package/dist/target/topologyAttestationErrors.js +1 -0
  610. package/dist/target/worldClock.d.ts +60 -0
  611. package/dist/target/worldClock.js +129 -0
  612. package/dist/target/worldReadiness.d.ts +103 -0
  613. package/dist/target/worldReadiness.js +153 -0
  614. package/moltnet-releases.json +20 -0
  615. package/package.json +29 -8
  616. package/runtimes.yaml +28 -27
  617. package/dist/runtime/openclaw/scaffold-assets/CLAUDE.md +0 -5
  618. package/dist/runtime/picoclaw/scaffold-assets/CLAUDE.md +0 -5
  619. /package/dist/runtime/openclaw/scaffold-assets/{AGENTS.md → WORKSPACE_AGENTS.md} +0 -0
  620. /package/dist/runtime/picoclaw/scaffold-assets/{AGENTS.md → WORKSPACE_AGENTS.md} +0 -0
@@ -0,0 +1,80 @@
1
+ import { createHash } from "node:crypto";
2
+ import { z } from "zod";
3
+ import { assertOrdinaryJsonGraph, parseOpaqueTargetHandle, parseRunId } from "../target/index.js";
4
+ export const ORGANIZATION_HANDOFF_VERSION = "spawnfile.organization-handoff.v1";
5
+ const digestSchema = z.string().regex(/^sha256:[a-f0-9]{64}$/u);
6
+ const lifecycleReceiptsSchema = z.object({
7
+ down: z.literal("spawnfile.down-receipt.v1"),
8
+ export: z.literal("spawnfile.export-index.v1"),
9
+ up: z.literal("spawnfile.up-receipt.v1")
10
+ }).strict();
11
+ const parseError = (label, detail) => {
12
+ throw new Error(`invalid ${ORGANIZATION_HANDOFF_VERSION} ${label}: ${detail}`);
13
+ };
14
+ export const parseCanonicalSha256Digest = (value, label = "digest") => {
15
+ const parsed = digestSchema.safeParse(value);
16
+ if (!parsed.success)
17
+ parseError(label, "must be a canonical sha256 digest");
18
+ return parsed.data;
19
+ };
20
+ const lifecycleReceipts = {
21
+ down: "spawnfile.down-receipt.v1",
22
+ export: "spawnfile.export-index.v1",
23
+ up: "spawnfile.up-receipt.v1"
24
+ };
25
+ const canonicalDerivationBytes = (input) => [
26
+ "spawnfile.organization-handoff.v1\0",
27
+ input.run_id,
28
+ input.selected_target_receipt_digest,
29
+ input.network_attachment_handle,
30
+ input.binding_digest,
31
+ input.lifecycle_receipts.up,
32
+ input.lifecycle_receipts.export,
33
+ input.lifecycle_receipts.down
34
+ ].join("\n");
35
+ export const createOrganizationDeploymentHandle = (input) => `sf-oh1-${createHash("sha256").update(canonicalDerivationBytes(input), "utf8").digest("hex")}`;
36
+ export const createOrganizationHandoff = (runId, input) => {
37
+ const handoff = {
38
+ binding_digest: parseCanonicalSha256Digest(input.bindingDigest, "binding_digest"),
39
+ lifecycle_receipts: lifecycleReceipts,
40
+ network_attachment_handle: parseOpaqueTargetHandle(input.networkAttachmentHandle),
41
+ run_id: parseRunId(runId),
42
+ selected_target_receipt_digest: parseCanonicalSha256Digest(input.selectedTargetReceiptDigest, "selected_target_receipt_digest")
43
+ };
44
+ return {
45
+ ...handoff,
46
+ deployment_handle: createOrganizationDeploymentHandle(handoff),
47
+ version: ORGANIZATION_HANDOFF_VERSION
48
+ };
49
+ };
50
+ const organizationHandoffSchema = z.object({
51
+ binding_digest: digestSchema,
52
+ deployment_handle: z.string().regex(/^sf-oh1-[a-f0-9]{64}$/u),
53
+ lifecycle_receipts: lifecycleReceiptsSchema,
54
+ network_attachment_handle: z.string(),
55
+ run_id: z.string(),
56
+ selected_target_receipt_digest: digestSchema,
57
+ version: z.literal(ORGANIZATION_HANDOFF_VERSION)
58
+ }).strict();
59
+ export const parseOrganizationHandoff = (value) => {
60
+ try {
61
+ assertOrdinaryJsonGraph(value);
62
+ const parsed = organizationHandoffSchema.safeParse(value);
63
+ if (!parsed.success)
64
+ throw new TypeError();
65
+ const handoff = {
66
+ binding_digest: parseCanonicalSha256Digest(parsed.data.binding_digest, "binding_digest"),
67
+ lifecycle_receipts: parsed.data.lifecycle_receipts,
68
+ network_attachment_handle: parseOpaqueTargetHandle(parsed.data.network_attachment_handle),
69
+ run_id: parseRunId(parsed.data.run_id),
70
+ selected_target_receipt_digest: parseCanonicalSha256Digest(parsed.data.selected_target_receipt_digest, "selected_target_receipt_digest")
71
+ };
72
+ const expectedHandle = createOrganizationDeploymentHandle(handoff);
73
+ if (parsed.data.deployment_handle !== expectedHandle)
74
+ throw new TypeError();
75
+ return { ...handoff, deployment_handle: expectedHandle, version: ORGANIZATION_HANDOFF_VERSION };
76
+ }
77
+ catch {
78
+ return parseError("artifact", "must be a bounded canonical handoff");
79
+ }
80
+ };
@@ -0,0 +1,52 @@
1
+ import { z } from "zod";
2
+ import type { OrganizationReadinessEvidence } from "../compiler/organizationReadyEvidence.js";
3
+ import type { DockerUnitInspection } from "./dockerInspect.js";
4
+ export declare const ORGANIZATION_READY_VERSION: "spawnfile.organization-ready.v1";
5
+ declare const codes: readonly ["organization_ready", "external_moltnet", "compiled_evidence_missing", "unit_unavailable", "unit_restarted", "probe_unavailable", "identity_mismatch", "topology_mismatch", "probe_timeout", "probe_cancelled"];
6
+ export type OrganizationReadyCode = (typeof codes)[number];
7
+ export type OrganizationReadyState = "ready" | "pending" | "failed" | "cancelled";
8
+ export interface OrganizationReadiness {
9
+ readonly version: typeof ORGANIZATION_READY_VERSION;
10
+ readonly run_id: string | null;
11
+ readonly compile_fingerprint: string;
12
+ readonly unit_id: string;
13
+ readonly world_binding_digest: string | null;
14
+ readonly state: OrganizationReadyState;
15
+ readonly code: OrganizationReadyCode;
16
+ readonly reason?: string;
17
+ }
18
+ export interface OrganizationReadinessProbeData {
19
+ readonly configs: ReadonlyMap<string, string>;
20
+ readonly networks: readonly {
21
+ readonly healthOk: boolean;
22
+ readonly id: string;
23
+ }[];
24
+ readonly worldBindings: string | null;
25
+ }
26
+ export interface ReconcileOrganizationReadinessInput {
27
+ readonly evidence: OrganizationReadinessEvidence;
28
+ readonly inspection: DockerUnitInspection | null;
29
+ readonly record: {
30
+ readonly compileFingerprint: string;
31
+ readonly deploymentName: string;
32
+ readonly runId: string | null;
33
+ readonly unitCount: number;
34
+ readonly unitId: string;
35
+ };
36
+ readonly probe: OrganizationReadinessProbeData | null;
37
+ }
38
+ export declare const organizationReadinessSchema: z.ZodPreprocess<z.ZodObject<{
39
+ code: z.ZodUnion<readonly [z.ZodLiteral<"organization_ready">, z.ZodLiteral<"external_moltnet">, z.ZodLiteral<"compiled_evidence_missing">, z.ZodLiteral<"unit_unavailable">, z.ZodLiteral<"unit_restarted">, z.ZodLiteral<"probe_unavailable">, z.ZodLiteral<"identity_mismatch">, z.ZodLiteral<"topology_mismatch">, z.ZodLiteral<"probe_timeout">, z.ZodLiteral<"probe_cancelled">]>;
40
+ compile_fingerprint: z.ZodString;
41
+ run_id: z.ZodNullable<z.ZodString>;
42
+ state: z.ZodUnion<readonly [z.ZodLiteral<"ready">, z.ZodLiteral<"pending">, z.ZodLiteral<"failed">, z.ZodLiteral<"cancelled">]>;
43
+ unit_id: z.ZodString;
44
+ version: z.ZodLiteral<"spawnfile.organization-ready.v1">;
45
+ world_binding_digest: z.ZodNullable<z.ZodString>;
46
+ reason: z.ZodOptional<z.ZodString>;
47
+ }, z.core.$strict>>;
48
+ export declare const createOrganizationReadinessPending: (evidence: OrganizationReadinessEvidence, record: ReconcileOrganizationReadinessInput["record"]) => OrganizationReadiness;
49
+ export declare const parseOrganizationReadiness: (value: unknown) => OrganizationReadiness;
50
+ export declare const reconcileOrganizationReadiness: (input: ReconcileOrganizationReadinessInput) => OrganizationReadiness;
51
+ export declare const organizationReadinessFromProbeError: (evidence: OrganizationReadinessEvidence, record: ReconcileOrganizationReadinessInput["record"], error: unknown) => OrganizationReadiness;
52
+ export {};
@@ -0,0 +1,200 @@
1
+ import { createHash } from "node:crypto";
2
+ import { types as nodeTypes } from "node:util";
3
+ import { z } from "zod";
4
+ export const ORGANIZATION_READY_VERSION = "spawnfile.organization-ready.v1";
5
+ const ID = /^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$/u;
6
+ const FINGERPRINT = /^sf1:[a-f0-9]{12}$/u;
7
+ const DIGEST = /^sha256:[a-f0-9]{64}$/u;
8
+ const codes = [
9
+ "organization_ready",
10
+ "external_moltnet",
11
+ "compiled_evidence_missing",
12
+ "unit_unavailable",
13
+ "unit_restarted",
14
+ "probe_unavailable",
15
+ "identity_mismatch",
16
+ "topology_mismatch",
17
+ "probe_timeout",
18
+ "probe_cancelled"
19
+ ];
20
+ const isPlainRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value)
21
+ && Object.getPrototypeOf(value) === Object.prototype && !nodeTypes.isProxy(value);
22
+ const organizationReadinessObjectSchema = z.object({
23
+ code: z.union([
24
+ z.literal("organization_ready"), z.literal("external_moltnet"),
25
+ z.literal("compiled_evidence_missing"), z.literal("unit_unavailable"),
26
+ z.literal("unit_restarted"), z.literal("probe_unavailable"),
27
+ z.literal("identity_mismatch"), z.literal("topology_mismatch"),
28
+ z.literal("probe_timeout"), z.literal("probe_cancelled")
29
+ ]),
30
+ compile_fingerprint: z.string(),
31
+ run_id: z.string().nullable(),
32
+ state: z.union([
33
+ z.literal("ready"), z.literal("pending"), z.literal("failed"), z.literal("cancelled")
34
+ ]),
35
+ unit_id: z.string(),
36
+ version: z.literal(ORGANIZATION_READY_VERSION),
37
+ world_binding_digest: z.string().nullable(),
38
+ reason: z.string().min(1).max(512).optional()
39
+ }).strict().superRefine((result, context) => {
40
+ if (!FINGERPRINT.test(result.compile_fingerprint)) {
41
+ context.addIssue({ code: z.ZodIssueCode.custom, path: ["compile_fingerprint"], message: "invalid fingerprint" });
42
+ }
43
+ if (!ID.test(result.unit_id)) {
44
+ context.addIssue({ code: z.ZodIssueCode.custom, path: ["unit_id"], message: "invalid unit id" });
45
+ }
46
+ if (result.run_id !== null && !ID.test(result.run_id)) {
47
+ context.addIssue({ code: z.ZodIssueCode.custom, path: ["run_id"], message: "invalid run id" });
48
+ }
49
+ if (result.world_binding_digest !== null && !DIGEST.test(result.world_binding_digest)) {
50
+ context.addIssue({ code: z.ZodIssueCode.custom, path: ["world_binding_digest"], message: "invalid digest" });
51
+ }
52
+ if (!validStateCode(result.state, result.code)) {
53
+ context.addIssue({ code: z.ZodIssueCode.custom, path: ["state"], message: "invalid state/code combination" });
54
+ }
55
+ if (result.state === "ready" && (result.run_id === null || result.world_binding_digest === null)) {
56
+ context.addIssue({ code: z.ZodIssueCode.custom, path: ["state"], message: "ready requires run_id and world_binding_digest" });
57
+ }
58
+ });
59
+ export const organizationReadinessSchema = z.preprocess((value) => isPlainRecord(value) ? value : null, organizationReadinessObjectSchema);
60
+ const exact = (value, fields) => {
61
+ if (!isPlainRecord(value))
62
+ return null;
63
+ const keys = Object.keys(value);
64
+ return keys.length === fields.length
65
+ && keys.every((key) => fields.includes(key))
66
+ && fields.every((field) => Object.hasOwn(value, field))
67
+ ? value
68
+ : null;
69
+ };
70
+ const sameSet = (left, right) => left.length === right.length
71
+ && new Set(left).size === left.length
72
+ && new Set(right).size === right.length
73
+ && left.every((entry) => right.includes(entry));
74
+ const create = (input) => ({
75
+ code: input.code,
76
+ compile_fingerprint: input.compileFingerprint,
77
+ run_id: input.runId,
78
+ state: input.state,
79
+ unit_id: input.unitId,
80
+ version: ORGANIZATION_READY_VERSION,
81
+ world_binding_digest: input.worldBindingDigest,
82
+ ...(input.reason ? { reason: input.reason } : {})
83
+ });
84
+ const correlation = (evidence, record, state, code) => create({
85
+ code,
86
+ compileFingerprint: evidence.compileFingerprint,
87
+ runId: record.runId,
88
+ state,
89
+ unitId: record.unitId,
90
+ worldBindingDigest: evidence.worldBindings?.digest ?? null
91
+ });
92
+ const validStateCode = (state, code) => (state === "ready" && code === "organization_ready")
93
+ || (state === "pending" && [
94
+ "external_moltnet", "compiled_evidence_missing", "unit_unavailable", "unit_restarted", "probe_unavailable"
95
+ ].includes(code))
96
+ || (state === "failed" && ["identity_mismatch", "topology_mismatch", "probe_timeout"].includes(code))
97
+ || (state === "cancelled" && code === "probe_cancelled");
98
+ export const createOrganizationReadinessPending = (evidence, record) => correlation(evidence, record, "pending", evidence.hasExternalMoltnet ? "external_moltnet" : evidence.worldBindings ? "probe_unavailable" : "compiled_evidence_missing");
99
+ export const parseOrganizationReadiness = (value) => {
100
+ const parsed = organizationReadinessSchema.safeParse(value);
101
+ if (!parsed.success) {
102
+ throw new Error(`invalid ${ORGANIZATION_READY_VERSION}`);
103
+ }
104
+ const result = {
105
+ code: parsed.data.code,
106
+ compile_fingerprint: parsed.data.compile_fingerprint,
107
+ run_id: parsed.data.run_id,
108
+ state: parsed.data.state,
109
+ unit_id: parsed.data.unit_id,
110
+ version: ORGANIZATION_READY_VERSION,
111
+ world_binding_digest: parsed.data.world_binding_digest,
112
+ ...(parsed.data.reason ? { reason: parsed.data.reason } : {})
113
+ };
114
+ return result;
115
+ };
116
+ const hash = (content) => `sha256:${createHash("sha256").update(content).digest("hex")}`;
117
+ const validNodeConfig = (content, expectedDigest) => {
118
+ if (!content || hash(content) !== expectedDigest)
119
+ return false;
120
+ try {
121
+ const config = JSON.parse(content);
122
+ return isPlainRecord(config) && config.version === "moltnet.node.v1";
123
+ }
124
+ catch {
125
+ return false;
126
+ }
127
+ };
128
+ const validBindings = (evidence, content) => {
129
+ if (!content || !evidence.worldBindings || hash(content) !== evidence.worldBindings.digest)
130
+ return false;
131
+ try {
132
+ const body = exact(JSON.parse(content), ["schema", "bindings"]);
133
+ if (!body || body.schema !== evidence.worldBindings.schema || !Array.isArray(body.bindings))
134
+ return false;
135
+ const members = body.bindings.map((entry) => {
136
+ const binding = exact(entry, [
137
+ "member", "run_id", "world_instance_id", "capability_manifest_digest", "token_env", "json", "mcp"
138
+ ]);
139
+ const member = binding ? exact(binding.member, ["id", "principal_id"]) : null;
140
+ return member && typeof member.id === "string" && member.principal_id === `agent:${member.id}` && ID.test(member.id)
141
+ ? member.id
142
+ : null;
143
+ });
144
+ return members.every((member) => member !== null)
145
+ && sameSet(members, evidence.worldBindings.assignments.map((assignment) => assignment.memberId));
146
+ }
147
+ catch {
148
+ return false;
149
+ }
150
+ };
151
+ export const reconcileOrganizationReadiness = (input) => {
152
+ const { evidence, inspection, record } = input;
153
+ if (evidence.hasExternalMoltnet)
154
+ return correlation(evidence, record, "pending", "external_moltnet");
155
+ if (!evidence.worldBindings || !record.runId)
156
+ return correlation(evidence, record, "pending", "compiled_evidence_missing");
157
+ if (record.unitCount !== 1 || !inspection || inspection.running !== true || inspection.exists !== true) {
158
+ return correlation(evidence, record, "pending", "unit_unavailable");
159
+ }
160
+ if (inspection.restartCount !== 0)
161
+ return correlation(evidence, record, "pending", "unit_restarted");
162
+ const identity = inspection.identity;
163
+ if (!identity)
164
+ return correlation(evidence, record, "pending", "probe_unavailable");
165
+ if (inspection.drift.length > 0 || record.compileFingerprint !== evidence.compileFingerprint
166
+ || identity.compileFingerprint !== evidence.compileFingerprint || identity.deployment !== record.deploymentName
167
+ || identity.project !== evidence.projectLabel || identity.runId !== record.runId
168
+ || identity.unit !== record.unitId || identity.version !== evidence.compileVersion) {
169
+ return correlation(evidence, record, "failed", "identity_mismatch");
170
+ }
171
+ if (!input.probe || input.probe.networks.length !== evidence.networks.length
172
+ || !evidence.networks.every((network) => {
173
+ const live = input.probe?.networks.find((candidate) => candidate.id === network.id);
174
+ return live?.healthOk === true;
175
+ })
176
+ || !evidence.networks.every((network) => network.nodes.every((node) => validNodeConfig(input.probe.configs.get(node.configPath), node.sha256)))
177
+ || !validBindings(evidence, input.probe.worldBindings)) {
178
+ return correlation(evidence, record, "failed", "topology_mismatch");
179
+ }
180
+ return correlation(evidence, record, "ready", "organization_ready");
181
+ };
182
+ export const organizationReadinessFromProbeError = (evidence, record, error) => {
183
+ const name = error instanceof Error ? error.name : "";
184
+ const message = error instanceof Error ? error.message : "";
185
+ if (name === "TimeoutError" || /timeout|timed out/iu.test(message)) {
186
+ return { ...correlation(evidence, record, "failed", "probe_timeout"), reason: boundedReadinessReason(message) };
187
+ }
188
+ if (name === "AbortError" || /cancel|abort/iu.test(message)) {
189
+ return { ...correlation(evidence, record, "cancelled", "probe_cancelled"), reason: boundedReadinessReason(message) };
190
+ }
191
+ if (/\bHTTP 4\d{2}\b/iu.test(message)) {
192
+ return { ...correlation(evidence, record, "failed", "topology_mismatch"), reason: boundedReadinessReason(message) };
193
+ }
194
+ return { ...correlation(evidence, record, "pending", "probe_unavailable"), reason: boundedReadinessReason(message) };
195
+ };
196
+ const boundedReadinessReason = (message) => message
197
+ .replace(/\s+/gu, " ")
198
+ .replace(/(bearer|token|password|passwd|secret|authorization)[=: ]+(?:bearer[ ]+)?[^ ]+/giu, "$1=[redacted]")
199
+ .replace(/https?:\/\/[^ ]+/giu, "[url redacted]")
200
+ .slice(0, 512) || "probe unavailable";
@@ -0,0 +1,18 @@
1
+ import type { CompileReport } from "../report/index.js";
2
+ import { type DockerArtifactExecFile } from "./artifactsExportDocker.js";
3
+ import type { ExportIndexFile } from "./artifactsExportTypes.js";
4
+ import type { DeploymentRecord } from "./record.js";
5
+ export interface PrivateArtifactsExportResult {
6
+ readonly files: readonly ExportIndexFile[];
7
+ readonly missing: readonly string[];
8
+ }
9
+ /** Explicit opt-in egress for unredacted runtime training artifacts. */
10
+ export declare const exportPrivateRuntimeArtifacts: (input: Readonly<{
11
+ containerRef: string;
12
+ destinationDirectory: string;
13
+ dockerCommand: string;
14
+ execFile: DockerArtifactExecFile;
15
+ report: CompileReport;
16
+ target: DeploymentRecord["target"];
17
+ timeoutMs: number;
18
+ }>) => Promise<PrivateArtifactsExportResult>;
@@ -0,0 +1,80 @@
1
+ import { createHash } from "node:crypto";
2
+ import { lstat, readFile, readdir, rm } from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { ensureDirectory } from "../filesystem/index.js";
5
+ import { copyContainerFileToHost, } from "./artifactsExportDocker.js";
6
+ const plans = (report) => (report.container?.runtime_instances ?? [])
7
+ .filter((instance) => (instance.runtime === "pi" || instance.runtime === "daimon")
8
+ && instance.home_path !== null)
9
+ .flatMap((instance) => {
10
+ const instanceRoot = path.posix.dirname(instance.home_path);
11
+ return (instance.node_ids ?? [])
12
+ .filter((nodeId) => nodeId.startsWith("agent:"))
13
+ .map((nodeId) => nodeId.slice("agent:".length))
14
+ .filter((slug) => /^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/u.test(slug))
15
+ .map((slug) => Object.freeze({
16
+ containerPath: `${instanceRoot}/runtime/agents/${slug}/private-training/pi/raw`,
17
+ relativePath: `private/daimon/${slug}/private-training/pi/raw`,
18
+ }));
19
+ });
20
+ const filesUnder = async (root) => {
21
+ if (!(await lstat(root)).isDirectory()) {
22
+ throw new Error("Private artifact export source is not a directory");
23
+ }
24
+ const files = [];
25
+ const pending = [root];
26
+ while (pending.length > 0) {
27
+ const directory = pending.pop();
28
+ for (const entry of await readdir(directory, { withFileTypes: true })) {
29
+ const child = path.join(directory, entry.name);
30
+ if (entry.isSymbolicLink() || !entry.isDirectory() && !entry.isFile()) {
31
+ throw new Error("Private artifact export rejects non-regular entries");
32
+ }
33
+ if (entry.isDirectory())
34
+ pending.push(child);
35
+ else
36
+ files.push(path.relative(root, child).split(path.sep).join("/"));
37
+ }
38
+ }
39
+ return Object.freeze(files.sort());
40
+ };
41
+ const digest = (bytes) => createHash("sha256").update(bytes).digest("hex");
42
+ /** Explicit opt-in egress for unredacted runtime training artifacts. */
43
+ export const exportPrivateRuntimeArtifacts = async (input) => {
44
+ const output = [];
45
+ const missing = [];
46
+ for (const plan of plans(input.report)) {
47
+ const destination = path.join(input.destinationDirectory, ...plan.relativePath.split("/"));
48
+ await ensureDirectory(path.dirname(destination));
49
+ const copied = await copyContainerFileToHost({
50
+ containerPath: plan.containerPath,
51
+ containerRef: input.containerRef,
52
+ dockerCommand: input.dockerCommand,
53
+ execFile: input.execFile,
54
+ hostPath: destination,
55
+ target: input.target,
56
+ timeoutMs: input.timeoutMs,
57
+ });
58
+ if (!copied) {
59
+ await rm(destination, { force: true, recursive: true });
60
+ missing.push(plan.relativePath);
61
+ continue;
62
+ }
63
+ for (const relative of await filesUnder(destination)) {
64
+ const bytes = await readFile(path.join(destination, ...relative.split("/")));
65
+ output.push({
66
+ bytes: bytes.byteLength,
67
+ path: `${plan.relativePath}/${relative}`,
68
+ sha256: digest(bytes),
69
+ source: {
70
+ kind: "container",
71
+ ref: `${input.containerRef}:${plan.containerPath}/${relative}`,
72
+ },
73
+ });
74
+ }
75
+ }
76
+ return Object.freeze({
77
+ files: Object.freeze(output),
78
+ missing: Object.freeze(missing),
79
+ });
80
+ };
@@ -0,0 +1,8 @@
1
+ export type ProviderRuntimeViolationKind = "moltnet-live-endpoint" | "provider-authenticated-http" | "docker-exec-http-transport" | "transport-receipt" | "generated-client" | "cursor-operation";
2
+ export type ProviderRuntimeViolation = {
3
+ classification: ProviderRuntimeViolationKind;
4
+ file: string;
5
+ matched: string;
6
+ };
7
+ export declare const scanProviderRuntimeSource: (source: string, file?: string) => ProviderRuntimeViolation[];
8
+ export declare const scanProviderRuntimeTree: (repositoryRoot: string) => Promise<ProviderRuntimeViolation[]>;
@@ -0,0 +1,60 @@
1
+ import { readdir, readFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ const forbiddenIdentifiers = [
4
+ ["transport-receipt", /spawnfile\.moltnet-transport/u],
5
+ ["transport-receipt", /ContainedMoltnetTransport/u],
6
+ ["generated-client", /CONTAINED_MOLTNET_CLIENT/u],
7
+ ["generated-client", /SendMessageRequest/u],
8
+ ["cursor-operation", /ListRoomMessages/u]
9
+ ];
10
+ const productionFiles = async (directory) => {
11
+ const entries = await readdir(directory, { withFileTypes: true });
12
+ const nested = await Promise.all(entries.map(async (entry) => {
13
+ const file = path.join(directory, entry.name);
14
+ if (entry.isDirectory())
15
+ return productionFiles(file);
16
+ if (!entry.isFile() || !entry.name.endsWith(".ts") || entry.name.endsWith(".test.ts") || entry.name.endsWith(".test-helper.ts"))
17
+ return [];
18
+ return [file];
19
+ }));
20
+ return nested.flat();
21
+ };
22
+ const violationsForSource = (source, file) => {
23
+ const violations = [];
24
+ for (const endpoint of ["/v1/messages", "/v1/network", "/v1/rooms", "/v1/agents"]) {
25
+ if (source.includes(endpoint))
26
+ violations.push({ classification: "moltnet-live-endpoint", file, matched: endpoint });
27
+ }
28
+ const providerSurface = /(?:fetch|httpGet|curl)[\s\S]*(?:\/healthz|\/v1\/)/u.test(source)
29
+ || /(?:\/healthz|\/v1\/)[\s\S]*(?:fetch|httpGet|curl)/u.test(source);
30
+ const authenticatedMarker = [
31
+ [/\bAuthorization\s*:/u, "Authorization property"],
32
+ [/["']Authorization["']\s*:/u, "Authorization string key"],
33
+ [/\[\s*["']Authorization["']\s*\]\s*=/u, "Authorization element assignment"],
34
+ [/`Bearer\s+/u, "Bearer template"],
35
+ [/["']Bearer\s+["']\s*\+/u, "Bearer concatenation"],
36
+ [/["']Bearer\s+/u, "Bearer literal"]
37
+ ].find(([pattern]) => pattern.test(source));
38
+ if (providerSurface && authenticatedMarker) {
39
+ violations.push({
40
+ classification: "provider-authenticated-http",
41
+ file,
42
+ matched: authenticatedMarker[1]
43
+ });
44
+ }
45
+ if (/(?:exec\s*\(\s*\[\s*["'](?:curl|wget)["'])|(?:["']exec["'][\s\S]{0,160}["'](?:curl|wget)["'])/u.test(source)) {
46
+ violations.push({ classification: "docker-exec-http-transport", file, matched: "exec curl/wget" });
47
+ }
48
+ for (const [classification, pattern] of forbiddenIdentifiers) {
49
+ if (pattern.test(source))
50
+ violations.push({ classification, file, matched: pattern.source });
51
+ }
52
+ return violations;
53
+ };
54
+ export const scanProviderRuntimeSource = (source, file = "synthetic.ts") => violationsForSource(source, file);
55
+ export const scanProviderRuntimeTree = async (repositoryRoot) => {
56
+ const roots = ["cli", "compiler", "deployment", "status"].map((folder) => path.join(repositoryRoot, "src", folder));
57
+ const files = (await Promise.all(roots.map(productionFiles))).flat();
58
+ const results = await Promise.all(files.map(async (file) => violationsForSource(await readFile(file, "utf8"), path.relative(repositoryRoot, file))));
59
+ return results.flat();
60
+ };
@@ -1,4 +1,7 @@
1
1
  import { z } from "zod";
2
+ import { type OrganizationHandoff } from "./organizationHandoffTypes.js";
3
+ import { type OpaqueTargetHandle } from "../target/index.js";
4
+ import { type OrganizationReadiness } from "./organizationReady.js";
2
5
  declare const recordSourceSchema: z.ZodUnion<readonly [z.ZodObject<{
3
6
  kind: z.ZodLiteral<"project">;
4
7
  root: z.ZodString;
@@ -15,7 +18,10 @@ export declare const deploymentRecordSchema: z.ZodObject<{
15
18
  env_file: z.ZodOptional<z.ZodString>;
16
19
  manager: z.ZodString;
17
20
  name: z.ZodString;
21
+ organization_handoff: z.ZodOptional<z.ZodUnknown>;
22
+ organization_handoff_handle: z.ZodOptional<z.ZodString>;
18
23
  output_directory: z.ZodNullable<z.ZodString>;
24
+ run_id: z.ZodOptional<z.ZodString>;
19
25
  source: z.ZodUnion<readonly [z.ZodObject<{
20
26
  kind: z.ZodLiteral<"project">;
21
27
  root: z.ZodString;
@@ -63,8 +69,27 @@ export declare const deploymentRecordSchema: z.ZodObject<{
63
69
  }, z.core.$strict>]>>;
64
70
  }, z.core.$strict>>;
65
71
  version: z.ZodLiteral<"spawnfile.deployment.v2">;
72
+ export_index: z.ZodOptional<z.ZodObject<{
73
+ exported_at: z.ZodString;
74
+ path: z.ZodString;
75
+ run_id: z.ZodString;
76
+ }, z.core.$strict>>;
77
+ organization_ready: z.ZodOptional<z.ZodPreprocess<z.ZodObject<{
78
+ code: z.ZodUnion<readonly [z.ZodLiteral<"organization_ready">, z.ZodLiteral<"external_moltnet">, z.ZodLiteral<"compiled_evidence_missing">, z.ZodLiteral<"unit_unavailable">, z.ZodLiteral<"unit_restarted">, z.ZodLiteral<"probe_unavailable">, z.ZodLiteral<"identity_mismatch">, z.ZodLiteral<"topology_mismatch">, z.ZodLiteral<"probe_timeout">, z.ZodLiteral<"probe_cancelled">]>;
79
+ compile_fingerprint: z.ZodString;
80
+ run_id: z.ZodNullable<z.ZodString>;
81
+ state: z.ZodUnion<readonly [z.ZodLiteral<"ready">, z.ZodLiteral<"pending">, z.ZodLiteral<"failed">, z.ZodLiteral<"cancelled">]>;
82
+ unit_id: z.ZodString;
83
+ version: z.ZodLiteral<"spawnfile.organization-ready.v1">;
84
+ world_binding_digest: z.ZodNullable<z.ZodString>;
85
+ reason: z.ZodOptional<z.ZodString>;
86
+ }, z.core.$strict>>>;
66
87
  }, z.core.$strict>;
67
- export type DeploymentRecord = z.infer<typeof deploymentRecordSchema>;
88
+ export type DeploymentRecord = Omit<z.infer<typeof deploymentRecordSchema>, "organization_handoff" | "organization_handoff_handle" | "organization_ready"> & {
89
+ organization_handoff?: OrganizationHandoff;
90
+ organization_handoff_handle?: OpaqueTargetHandle;
91
+ organization_ready?: OrganizationReadiness;
92
+ };
68
93
  export declare const parseDeploymentRecord: (source: unknown, sourceLabel?: string) => DeploymentRecord;
69
94
  export declare const readDeploymentRecord: (recordPath: string) => Promise<DeploymentRecord>;
70
95
  export declare const readDeploymentRecordFromOutput: (outputDirectory: string, deploymentName: string) => Promise<DeploymentRecord>;
@@ -3,7 +3,10 @@ import { readdir, rename, writeFile } from "node:fs/promises";
3
3
  import { z } from "zod";
4
4
  import { ensureDirectory, readUtf8File } from "../filesystem/index.js";
5
5
  import { SpawnfileError } from "../shared/index.js";
6
+ import { parseOrganizationHandoff } from "./organizationHandoffTypes.js";
7
+ import { parseOpaqueTargetHandle } from "../target/index.js";
6
8
  import { normalizeDeploymentName, resolveDeploymentRecordPath, resolveDeploymentRecordsDirectory } from "./names.js";
9
+ import { parseOrganizationReadiness, organizationReadinessSchema } from "./organizationReady.js";
7
10
  const contextTargetSchema = z.object({
8
11
  endpoint_fingerprint: z.string().regex(/^sha256:[a-f0-9]{32}$/),
9
12
  kind: z.literal("context"),
@@ -82,12 +85,40 @@ export const deploymentRecordSchema = z.object({
82
85
  env_file: z.string().min(1).optional(),
83
86
  manager: z.string().min(1),
84
87
  name: z.string().min(1),
88
+ organization_handoff: z.unknown().optional(),
89
+ organization_handoff_handle: z.string().optional(),
85
90
  output_directory: z.string().min(1).nullable(),
91
+ // Optional: the NOOPOLIS_RUN_ID stamped on every authority container's
92
+ // causal events for this deployment's run (see specs/CAUSAL.md and
93
+ // src/runtime/common.ts). Populated only when the compiling process had a
94
+ // run id set (every `spawnfile run`/`up --detach` invocation via
95
+ // ensureNoopolisRunId()); absent for image-consume/recovered records that
96
+ // have no reliable run-time id to source. This is what lets
97
+ // `spawnfile artifacts export --run-id <id>` find the deployment whose
98
+ // containers/volumes were compiled under that run.
99
+ run_id: z.string().min(1).optional(),
86
100
  source: recordSourceSchema,
87
101
  target: targetSchema,
88
102
  units: z.array(unitSchema).min(1),
89
- version: z.literal("spawnfile.deployment.v2")
90
- }).strict();
103
+ version: z.literal("spawnfile.deployment.v2"),
104
+ // Optional: stamped by `spawnfile artifacts export` (artifactsExport.ts) once it has
105
+ // successfully written `spawnfile.export-index.v1` for this deployment's run. This is
106
+ // the record-driven marker `spawnfile down` (downDeployment.ts) reads to enforce the
107
+ // export-before-teardown invariant (Decision 21) without needing to be told, out of
108
+ // band, where a prior export went: down resolves the SAME deployment record export
109
+ // already writes back to, so the two commands share one source of truth. Absent means
110
+ // "never exported" — not "exported to an unknown location".
111
+ export_index: z.object({
112
+ exported_at: z.string().min(1),
113
+ path: z.string().min(1),
114
+ run_id: z.string().min(1)
115
+ }).strict().optional(),
116
+ organization_ready: organizationReadinessSchema.optional()
117
+ }).strict().superRefine((value, context) => {
118
+ if (value.organization_handoff_handle !== undefined && value.organization_handoff === undefined) {
119
+ context.addIssue({ code: z.ZodIssueCode.custom, path: ["organization_handoff_handle"], message: "organization handoff handle requires organization handoff" });
120
+ }
121
+ });
91
122
  const upgradeV1Record = (record) => ({
92
123
  auth_profile: record.auth_profile,
93
124
  compile_fingerprint: record.compile_fingerprint,
@@ -104,7 +135,14 @@ const upgradeV1Record = (record) => ({
104
135
  const hasVersion = (source, version) => typeof source === "object"
105
136
  && source !== null
106
137
  && source.version === version;
138
+ const readOrganizationReadiness = (source) => {
139
+ if (typeof source !== "object" || source === null || !Object.hasOwn(source, "organization_ready")) {
140
+ return undefined;
141
+ }
142
+ return parseOrganizationReadiness(source.organization_ready);
143
+ };
107
144
  export const parseDeploymentRecord = (source, sourceLabel = "deployment record") => {
145
+ const organizationReadiness = readOrganizationReadiness(source);
108
146
  let record;
109
147
  if (hasVersion(source, "spawnfile.deployment.v1")) {
110
148
  const parsed = deploymentRecordV1Schema.safeParse(source);
@@ -118,13 +156,20 @@ export const parseDeploymentRecord = (source, sourceLabel = "deployment record")
118
156
  if (!parsed.success) {
119
157
  throw new SpawnfileError("validation_error", `Invalid ${sourceLabel}: ${z.prettifyError(parsed.error)}`);
120
158
  }
121
- record = parsed.data;
159
+ const { organization_handoff: organizationHandoff, organization_handoff_handle: organizationHandoffHandle, organization_ready: _organizationReady, ...recordWithoutMetadata } = parsed.data;
160
+ record = {
161
+ ...recordWithoutMetadata,
162
+ ...(organizationHandoff === undefined
163
+ ? {}
164
+ : { organization_handoff: parseOrganizationHandoff(organizationHandoff) }),
165
+ ...(organizationHandoffHandle === undefined ? {} : { organization_handoff_handle: parseOpaqueTargetHandle(organizationHandoffHandle) })
166
+ };
122
167
  }
123
168
  const normalizedName = normalizeDeploymentName(record.name);
124
169
  if (normalizedName !== record.name) {
125
170
  throw new SpawnfileError("validation_error", `Invalid ${sourceLabel}: deployment name must be normalized`);
126
171
  }
127
- return record;
172
+ return organizationReadiness ? { ...record, organization_ready: organizationReadiness } : record;
128
173
  };
129
174
  export const readDeploymentRecord = async (recordPath) => {
130
175
  let parsed;
@@ -0,0 +1,8 @@
1
+ export type SimfileFixtureViolation = {
2
+ file: string;
3
+ classification: "simfile-scenario-direct-literal" | "simfile-scenario-path-join" | "simfile-scenario-path-resolve";
4
+ matchedPath: string;
5
+ };
6
+ export declare const scanSimfileFixtureSource: (text: string, file?: string) => SimfileFixtureViolation[];
7
+ export declare const scanSimfileFixtureFile: (file: string) => Promise<SimfileFixtureViolation[]>;
8
+ export declare const scanSimfileFixtureTree: (repositoryRoot: string) => Promise<SimfileFixtureViolation[]>;