spawnfile 0.1.14 → 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 (546) hide show
  1. package/README.md +60 -159
  2. package/dist/audit/checksShared.d.ts +1 -1
  3. package/dist/auth/importers.d.ts +10 -0
  4. package/dist/auth/importers.js +29 -4
  5. package/dist/auth/index.d.ts +2 -0
  6. package/dist/auth/index.js +1 -0
  7. package/dist/auth/paths.d.ts +1 -1
  8. package/dist/auth/profileStore.js +9 -9
  9. package/dist/auth/targetSecretSourceFsIdentity.d.ts +40 -0
  10. package/dist/auth/targetSecretSourceFsIdentity.js +42 -0
  11. package/dist/auth/targetSecretSourceFsPublish.d.ts +2 -0
  12. package/dist/auth/targetSecretSourceFsPublish.js +3 -1
  13. package/dist/auth/targetSecretSourceFsPublishImmutable.d.ts +2 -1
  14. package/dist/auth/targetSecretSourceFsPublishImmutable.js +104 -71
  15. package/dist/auth/targetSecretSourceFsRead.js +5 -14
  16. package/dist/auth/trainingAuth.d.ts +21 -0
  17. package/dist/auth/trainingAuth.js +86 -0
  18. package/dist/auth/types.d.ts +1 -1
  19. package/dist/cli/authCommands.d.ts +1 -1
  20. package/dist/cli/authCommands.js +9 -0
  21. package/dist/cli/canaryCutoverCommand.d.ts +2 -0
  22. package/dist/cli/canaryCutoverCommand.js +30 -0
  23. package/dist/cli/capabilitiesCommand.d.ts +3 -0
  24. package/dist/cli/capabilitiesCommand.js +12 -0
  25. package/dist/cli/capabilitiesReceipt.d.ts +56 -0
  26. package/dist/cli/capabilitiesReceipt.js +56 -0
  27. package/dist/cli/compileBuildCommands.js +13 -0
  28. package/dist/cli/composedLifecycleContractSet.d.ts +21 -0
  29. package/dist/cli/composedLifecycleContractSet.js +204 -0
  30. package/dist/cli/devCommands.js +2 -0
  31. package/dist/cli/downCommand.js +19 -8
  32. package/dist/cli/evidenceExportHelperCommand.d.ts +13 -0
  33. package/dist/cli/evidenceExportHelperCommand.js +51 -0
  34. package/dist/cli/index.js +12 -3
  35. package/dist/cli/lifecycleMachine.d.ts +7 -1
  36. package/dist/cli/lifecycleMachine.js +2 -2
  37. package/dist/cli/paideiaDelegation.d.ts +17 -0
  38. package/dist/cli/paideiaDelegation.js +210 -0
  39. package/dist/cli/paideiaSupervisor.d.ts +17 -0
  40. package/dist/cli/paideiaSupervisor.js +48 -0
  41. package/dist/cli/productStateCloneCommand.d.ts +2 -0
  42. package/dist/cli/productStateCloneCommand.js +34 -0
  43. package/dist/cli/runCli.d.ts +13 -3
  44. package/dist/cli/runCli.js +37 -9
  45. package/dist/cli/targetCommands.d.ts +4 -7
  46. package/dist/cli/targetCommands.js +16 -46
  47. package/dist/cli/targetConfigPreparedPlan.d.ts +3 -0
  48. package/dist/cli/targetConfigPreparedPlan.js +74 -0
  49. package/dist/cli/targetConfigResolver.d.ts +3 -0
  50. package/dist/cli/targetConfigResolver.js +111 -0
  51. package/dist/cli/targetConfigResolverCommand.d.ts +6 -0
  52. package/dist/cli/targetConfigResolverCommand.js +43 -0
  53. package/dist/cli/targetConfigResolverContracts.d.ts +56 -0
  54. package/dist/cli/targetConfigResolverContracts.js +30 -0
  55. package/dist/cli/targetConfigResolverDocker.d.ts +4 -0
  56. package/dist/cli/targetConfigResolverDocker.js +47 -0
  57. package/dist/cli/targetConfigResolverValidation.d.ts +10 -0
  58. package/dist/cli/targetConfigResolverValidation.js +94 -0
  59. package/dist/cli/targetDefaultAuthorities.d.ts +2 -0
  60. package/dist/cli/targetDefaultAuthorities.js +3 -0
  61. package/dist/cli/targetDefaultConfig.d.ts +7 -0
  62. package/dist/cli/targetDefaultConfig.js +22 -5
  63. package/dist/cli/targetDefaultConfigStdin.js +7 -1
  64. package/dist/cli/targetDefaultHandlerFactory.js +23 -2
  65. package/dist/cli/targetDefaultHandlers.d.ts +2 -2
  66. package/dist/cli/targetProductionCommands.d.ts +5 -0
  67. package/dist/cli/targetProductionCommands.js +45 -0
  68. package/dist/cli/trainCommand.d.ts +3 -0
  69. package/dist/cli/trainCommand.js +61 -0
  70. package/dist/cli/upCommand.js +35 -6
  71. package/dist/cli/upLifecycleRecovery.d.ts +2 -2
  72. package/dist/cli/upLifecycleRecovery.js +188 -44
  73. package/dist/cli/usageCommand.d.ts +40 -0
  74. package/dist/cli/usageCommand.js +284 -0
  75. package/dist/cli/usageCommandLive.d.ts +84 -0
  76. package/dist/cli/usageCommandLive.js +95 -0
  77. package/dist/cli/usageDeploymentSource.d.ts +9 -0
  78. package/dist/cli/usageDeploymentSource.js +22 -0
  79. package/dist/cli/workspaceResourceMigrationCommand.d.ts +8 -0
  80. package/dist/cli/workspaceResourceMigrationCommand.js +36 -0
  81. package/dist/compiler/buildCompilePlanTeams.d.ts +1 -1
  82. package/dist/compiler/buildCompilePlanTeams.js +6 -1
  83. package/dist/compiler/compilePlanHelpers.js +3 -0
  84. package/dist/compiler/compileProject.d.ts +2 -0
  85. package/dist/compiler/compileProject.js +5 -1
  86. package/dist/compiler/compileProjectSupport.js +9 -0
  87. package/dist/compiler/containerArtifacts.d.ts +3 -1
  88. package/dist/compiler/containerArtifacts.js +92 -40
  89. package/dist/compiler/containerArtifactsPlans.d.ts +1 -1
  90. package/dist/compiler/containerArtifactsPlans.js +24 -7
  91. package/dist/compiler/containerArtifactsRender.d.ts +2 -1
  92. package/dist/compiler/containerArtifactsRender.js +91 -58
  93. package/dist/compiler/containerArtifactsTypes.d.ts +8 -0
  94. package/dist/compiler/containerBackedMountRender.d.ts +56 -0
  95. package/dist/compiler/containerBackedMountRender.js +101 -0
  96. package/dist/compiler/containerDaimonBrokerRender.d.ts +112 -0
  97. package/dist/compiler/containerDaimonBrokerRender.js +191 -0
  98. package/dist/compiler/containerDaimonGrokWorkerProvisioning.d.ts +38 -0
  99. package/dist/compiler/containerDaimonGrokWorkerProvisioning.js +108 -0
  100. package/dist/compiler/containerDaimonGrokWorkerRender.d.ts +172 -0
  101. package/dist/compiler/containerDaimonGrokWorkerRender.js +268 -0
  102. package/dist/compiler/containerDaimonOwnershipGuardRender.d.ts +12 -0
  103. package/dist/compiler/containerDaimonOwnershipGuardRender.js +191 -0
  104. package/dist/compiler/containerDaimonUidEntrypointRender.d.ts +24 -0
  105. package/dist/compiler/containerDaimonUidEntrypointRender.js +297 -0
  106. package/dist/compiler/containerEntrypointRender.d.ts +7 -0
  107. package/dist/compiler/containerEntrypointRender.js +28 -22
  108. package/dist/compiler/containerPersistentMounts.d.ts +30 -0
  109. package/dist/compiler/containerPersistentMounts.js +66 -0
  110. package/dist/compiler/containerReadinessPaths.d.ts +1 -0
  111. package/dist/compiler/containerReadinessPaths.js +1 -0
  112. package/dist/compiler/containerRuntimeLinkMaterializer.d.ts +2 -0
  113. package/dist/compiler/containerRuntimeLinkMaterializer.js +12 -0
  114. package/dist/compiler/containerRuntimeReadinessRender.d.ts +7 -0
  115. package/dist/compiler/containerRuntimeReadinessRender.js +40 -0
  116. package/dist/compiler/containerStateOwnershipRender.d.ts +4 -0
  117. package/dist/compiler/containerStateOwnershipRender.js +75 -0
  118. package/dist/compiler/containerTargetResources.d.ts +22 -1
  119. package/dist/compiler/containerTargetResources.js +94 -2
  120. package/dist/compiler/containerVolumeBootstrap.d.ts +3 -0
  121. package/dist/compiler/containerVolumeBootstrap.js +3 -0
  122. package/dist/compiler/containerWorkspaceResourceRender.js +49 -1
  123. package/dist/compiler/daimonTelemetryArtifacts.d.ts +2 -2
  124. package/dist/compiler/daimonTelemetryArtifacts.js +5 -10
  125. package/dist/compiler/deploymentLineage.d.ts +40 -0
  126. package/dist/compiler/deploymentLineage.js +50 -0
  127. package/dist/compiler/index.d.ts +3 -0
  128. package/dist/compiler/index.js +3 -0
  129. package/dist/compiler/initProject.d.ts +2 -0
  130. package/dist/compiler/initProject.js +39 -1
  131. package/dist/compiler/localMoltnetAuthority.d.ts +64 -0
  132. package/dist/compiler/localMoltnetAuthority.js +177 -0
  133. package/dist/compiler/memoryArtifacts.d.ts +1 -1
  134. package/dist/compiler/memoryArtifacts.js +108 -32
  135. package/dist/compiler/modelEnv.d.ts +5 -0
  136. package/dist/compiler/modelEnv.js +8 -2
  137. package/dist/compiler/moltnetArtifactPaths.d.ts +17 -12
  138. package/dist/compiler/moltnetArtifactPaths.js +17 -15
  139. package/dist/compiler/moltnetArtifactTypes.d.ts +10 -0
  140. package/dist/compiler/moltnetArtifacts.d.ts +1 -1
  141. package/dist/compiler/moltnetArtifacts.js +52 -12
  142. package/dist/compiler/moltnetBinaries.d.ts +16 -4
  143. package/dist/compiler/moltnetBinaries.js +46 -6
  144. package/dist/compiler/moltnetClientConfig.js +1 -1
  145. package/dist/compiler/moltnetConfigLowering.d.ts +3 -1
  146. package/dist/compiler/moltnetConfigLowering.js +30 -6
  147. package/dist/compiler/moltnetNodeConfig.js +1 -1
  148. package/dist/compiler/moltnetReleaseAuthority.d.ts +24 -1
  149. package/dist/compiler/moltnetReleaseAuthority.js +33 -4
  150. package/dist/compiler/moltnetRepresentativeResolution.d.ts +1 -1
  151. package/dist/compiler/moltnetRepresentativeResolution.js +2 -2
  152. package/dist/compiler/moltnetResolution.js +9 -15
  153. package/dist/compiler/moltnetRoomMemberships.js +20 -5
  154. package/dist/compiler/moltnetRoomPolicyCompatibility.d.ts +1 -1
  155. package/dist/compiler/moltnetRoomPolicyCompatibility.js +3 -1
  156. package/dist/compiler/moltnetRuntimeConfig.d.ts +1 -1
  157. package/dist/compiler/moltnetRuntimeConfig.js +22 -2
  158. package/dist/compiler/moltnetServerPlans.js +19 -0
  159. package/dist/compiler/organizationExternalParticipants.d.ts +3 -0
  160. package/dist/compiler/organizationExternalParticipants.js +176 -0
  161. package/dist/compiler/organizationIdentity.d.ts +3 -9
  162. package/dist/compiler/organizationIdentity.js +37 -270
  163. package/dist/compiler/organizationIdentityGraph.d.ts +15 -0
  164. package/dist/compiler/organizationIdentityGraph.js +115 -0
  165. package/dist/compiler/organizationReadyEvidence.d.ts +8 -0
  166. package/dist/compiler/organizationReadyEvidence.js +23 -3
  167. package/dist/compiler/runProject.d.ts +4 -2
  168. package/dist/compiler/runProject.js +32 -6
  169. package/dist/compiler/runProjectAuth.d.ts +3 -1
  170. package/dist/compiler/runProjectAuth.js +19 -3
  171. package/dist/compiler/runProjectDaimonCodexDocker.d.ts +3 -0
  172. package/dist/compiler/runProjectDaimonCodexDocker.js +36 -0
  173. package/dist/compiler/runProjectDocker.d.ts +8 -4
  174. package/dist/compiler/runProjectDocker.js +43 -18
  175. package/dist/compiler/runProjectDockerDaimonGuards.d.ts +15 -0
  176. package/dist/compiler/runProjectDockerDaimonGuards.js +122 -0
  177. package/dist/compiler/runProjectDockerReservation.d.ts +3 -0
  178. package/dist/compiler/runProjectDockerReservation.js +118 -0
  179. package/dist/compiler/runProjectLifecycle.js +1 -1
  180. package/dist/compiler/training/broker/declaration.d.ts +45 -0
  181. package/dist/compiler/training/broker/declaration.js +55 -0
  182. package/dist/compiler/training/broker/entrypoint.d.ts +39 -0
  183. package/dist/compiler/training/broker/entrypoint.js +111 -0
  184. package/dist/compiler/training/broker/index.d.ts +10 -0
  185. package/dist/compiler/training/broker/index.js +10 -0
  186. package/dist/compiler/training/broker/main.d.ts +2 -0
  187. package/dist/compiler/training/broker/main.js +14 -0
  188. package/dist/compiler/training/broker/paths.d.ts +196 -0
  189. package/dist/compiler/training/broker/paths.js +241 -0
  190. package/dist/compiler/training/broker/processes.d.ts +42 -0
  191. package/dist/compiler/training/broker/processes.js +99 -0
  192. package/dist/compiler/training/broker/projection.d.ts +51 -0
  193. package/dist/compiler/training/broker/projection.js +76 -0
  194. package/dist/compiler/training/broker/provisioning.d.ts +87 -0
  195. package/dist/compiler/training/broker/provisioning.js +213 -0
  196. package/dist/compiler/training/broker/receipt.d.ts +77 -0
  197. package/dist/compiler/training/broker/receipt.js +110 -0
  198. package/dist/compiler/training/broker/registration.d.ts +41 -0
  199. package/dist/compiler/training/broker/registration.js +102 -0
  200. package/dist/compiler/training/broker/runtime.d.ts +25 -0
  201. package/dist/compiler/training/broker/runtime.js +173 -0
  202. package/dist/compiler/training/broker/seccompRoutes.d.ts +31 -0
  203. package/dist/compiler/training/broker/seccompRoutes.js +36 -0
  204. package/dist/compiler/training/broker/supervisor.d.ts +109 -0
  205. package/dist/compiler/training/broker/supervisor.js +173 -0
  206. package/dist/compiler/training/container/contract.d.ts +31 -0
  207. package/dist/compiler/training/container/contract.js +33 -0
  208. package/dist/compiler/training/container/index.d.ts +4 -0
  209. package/dist/compiler/training/container/index.js +2 -0
  210. package/dist/compiler/training/container/launch.d.ts +18 -0
  211. package/dist/compiler/training/container/launch.js +173 -0
  212. package/dist/compiler/training/container/prepare.d.ts +8 -0
  213. package/dist/compiler/training/container/prepare.js +80 -0
  214. package/dist/compiler/training/container/process.d.ts +14 -0
  215. package/dist/compiler/training/container/process.js +70 -0
  216. package/dist/compiler/training/container/security.d.ts +36 -0
  217. package/dist/compiler/training/container/security.js +58 -0
  218. package/dist/compiler/training/context.d.ts +7 -0
  219. package/dist/compiler/training/context.js +93 -0
  220. package/dist/compiler/training/contract.d.ts +142 -0
  221. package/dist/compiler/training/contract.js +34 -0
  222. package/dist/compiler/training/index.d.ts +4 -0
  223. package/dist/compiler/training/index.js +3 -0
  224. package/dist/compiler/training/preparation/assets/Dockerfile +98 -0
  225. package/dist/compiler/training/preparation/assets/package-lock.json +3787 -0
  226. package/dist/compiler/training/preparation/broker.d.ts +21 -0
  227. package/dist/compiler/training/preparation/broker.js +43 -0
  228. package/dist/compiler/training/preparation/contextModes.d.ts +12 -0
  229. package/dist/compiler/training/preparation/contextModes.js +38 -0
  230. package/dist/compiler/training/preparation/contract.d.ts +182 -0
  231. package/dist/compiler/training/preparation/contract.js +94 -0
  232. package/dist/compiler/training/preparation/copyAssets.d.ts +1 -0
  233. package/dist/compiler/training/preparation/copyAssets.js +8 -0
  234. package/dist/compiler/training/preparation/daimonParent.d.ts +42 -0
  235. package/dist/compiler/training/preparation/daimonParent.js +114 -0
  236. package/dist/compiler/training/preparation/files.d.ts +25 -0
  237. package/dist/compiler/training/preparation/files.js +85 -0
  238. package/dist/compiler/training/preparation/image.d.ts +28 -0
  239. package/dist/compiler/training/preparation/image.js +102 -0
  240. package/dist/compiler/training/preparation/index.d.ts +3 -0
  241. package/dist/compiler/training/preparation/index.js +2 -0
  242. package/dist/compiler/training/preparation/inputs.d.ts +23 -0
  243. package/dist/compiler/training/preparation/inputs.js +93 -0
  244. package/dist/compiler/training/preparation/prepare.d.ts +33 -0
  245. package/dist/compiler/training/preparation/prepare.js +186 -0
  246. package/dist/compiler/training/preparation/scratch.d.ts +19 -0
  247. package/dist/compiler/training/preparation/scratch.js +48 -0
  248. package/dist/compiler/training/repair/compatibility.d.ts +11 -0
  249. package/dist/compiler/training/repair/compatibility.js +34 -0
  250. package/dist/compiler/training/repair/contract.d.ts +506 -0
  251. package/dist/compiler/training/repair/contract.js +31 -0
  252. package/dist/compiler/training/repair/index.d.ts +3 -0
  253. package/dist/compiler/training/repair/index.js +3 -0
  254. package/dist/compiler/training/repair/prepare.d.ts +230 -0
  255. package/dist/compiler/training/repair/prepare.js +74 -0
  256. package/dist/compiler/training/repair/witness.d.ts +203 -0
  257. package/dist/compiler/training/repair/witness.js +42 -0
  258. package/dist/compiler/types.d.ts +2 -0
  259. package/dist/compiler/upProject.d.ts +26 -1
  260. package/dist/compiler/upProject.js +117 -178
  261. package/dist/compiler/upProjectHandoff.d.ts +62 -0
  262. package/dist/compiler/upProjectHandoff.js +204 -0
  263. package/dist/compiler/upReceipt.js +49 -4
  264. package/dist/compiler/updateProjectModels.js +1 -0
  265. package/dist/compiler/view/types.d.ts +1 -1
  266. package/dist/compiler/workspaceBundleArtifacts.d.ts +3 -0
  267. package/dist/compiler/workspaceBundleArtifacts.js +106 -0
  268. package/dist/compiler/workspaceResources.d.ts +4 -1
  269. package/dist/compiler/workspaceResources.js +12 -7
  270. package/dist/deployment/artifactsExportPlan.js +51 -1
  271. package/dist/deployment/canaryCutover.d.ts +42 -0
  272. package/dist/deployment/canaryCutover.js +140 -0
  273. package/dist/deployment/candidateDiagnostics.d.ts +15 -0
  274. package/dist/deployment/candidateDiagnostics.js +90 -0
  275. package/dist/deployment/dockerLogs.js +4 -1
  276. package/dist/deployment/dockerManager.js +9 -3
  277. package/dist/deployment/dockerProbeGateway.d.ts +17 -0
  278. package/dist/deployment/dockerProbeGateway.js +17 -2
  279. package/dist/deployment/downDeployment.d.ts +5 -0
  280. package/dist/deployment/downDeployment.js +109 -8
  281. package/dist/deployment/downReceiptTypes.d.ts +17 -2
  282. package/dist/deployment/downReceiptTypes.js +17 -2
  283. package/dist/deployment/index.d.ts +4 -0
  284. package/dist/deployment/index.js +4 -0
  285. package/dist/deployment/lifecycleCompletionContracts.d.ts +66 -0
  286. package/dist/deployment/lifecycleCompletionContracts.js +34 -0
  287. package/dist/deployment/lifecycleCompletionPaths.d.ts +4 -1
  288. package/dist/deployment/lifecycleCompletionPaths.js +3 -0
  289. package/dist/deployment/lifecycleCompletionPublication.d.ts +2 -0
  290. package/dist/deployment/lifecycleCompletionPublication.js +18 -4
  291. package/dist/deployment/lifecycleCompletionStore.d.ts +1 -1
  292. package/dist/deployment/lifecycleCompletionStore.js +7 -7
  293. package/dist/deployment/lifecycleUpRecords.d.ts +11 -0
  294. package/dist/deployment/lifecycleUpRecords.js +127 -0
  295. package/dist/deployment/native/AGENTS.md +11 -0
  296. package/dist/deployment/native/rename-noreplace-arm64 +0 -0
  297. package/dist/deployment/native/rename-noreplace-arm64.provenance.json +1 -0
  298. package/dist/deployment/native/rename-noreplace-x64 +0 -0
  299. package/dist/deployment/native/rename-noreplace-x64.provenance.json +1 -0
  300. package/dist/deployment/noReplaceActivation.d.ts +17 -0
  301. package/dist/deployment/noReplaceActivation.js +50 -0
  302. package/dist/deployment/organizationHandoffAuthorityFsBudget.d.ts +110 -0
  303. package/dist/deployment/organizationHandoffAuthorityFsBudget.js +156 -0
  304. package/dist/deployment/organizationHandoffAuthorityFsClient.js +82 -27
  305. package/dist/deployment/organizationHandoffAuthorityFsElection.d.ts +21 -0
  306. package/dist/deployment/organizationHandoffAuthorityFsElection.js +57 -0
  307. package/dist/deployment/organizationHandoffAuthorityFsWorker.js +254 -108
  308. package/dist/deployment/organizationHandoffAuthorityFsWorkerStall.fixture.d.ts +1 -0
  309. package/dist/deployment/organizationHandoffAuthorityFsWorkerStall.fixture.js +16 -0
  310. package/dist/deployment/organizationHandoffAuthorityStore.js +14 -7
  311. package/dist/deployment/organizationHandoffAuthorityTypes.d.ts +2 -2
  312. package/dist/deployment/organizationHandoffAuthorityTypes.js +2 -1
  313. package/dist/deployment/organizationReady.d.ts +2 -0
  314. package/dist/deployment/organizationReady.js +36 -4
  315. package/dist/deployment/productStateClone.d.ts +43 -0
  316. package/dist/deployment/productStateClone.js +319 -0
  317. package/dist/deployment/upLifecycleRecoveryState.d.ts +23 -0
  318. package/dist/deployment/upLifecycleRecoveryState.js +12 -0
  319. package/dist/deployment/upReceiptTypes.d.ts +32 -6
  320. package/dist/deployment/upReceiptTypes.js +29 -2
  321. package/dist/deployment/workspaceResourceMigration.d.ts +55 -0
  322. package/dist/deployment/workspaceResourceMigration.js +315 -0
  323. package/dist/dev/project.d.ts +7 -0
  324. package/dist/dev/project.js +9 -0
  325. package/dist/distribution/consumeImage.d.ts +2 -0
  326. package/dist/distribution/consumeImage.js +98 -73
  327. package/dist/distribution/consumeImageDaimonDocker.d.ts +3 -0
  328. package/dist/distribution/consumeImageDaimonDocker.js +45 -0
  329. package/dist/distribution/consumeImageLifecycle.d.ts +17 -0
  330. package/dist/distribution/consumeImageLifecycle.js +231 -0
  331. package/dist/distribution/consumeImageSupport.d.ts +12 -0
  332. package/dist/distribution/consumeImageSupport.js +15 -0
  333. package/dist/distribution/distributionReportSchema.d.ts +11 -1
  334. package/dist/distribution/distributionReportSchema.js +15 -2
  335. package/dist/distribution/dockerRunner.d.ts +6 -1
  336. package/dist/distribution/dockerRunner.js +31 -4
  337. package/dist/distribution/imageRuntimeAuth.d.ts +9 -1
  338. package/dist/distribution/imageRuntimeAuth.js +70 -1
  339. package/dist/distribution/index.d.ts +1 -1
  340. package/dist/distribution/index.js +1 -1
  341. package/dist/distribution/preflight.js +5 -1
  342. package/dist/distribution/types.d.ts +14 -1
  343. package/dist/distribution/types.js +3 -0
  344. package/dist/evidenceExportHelper/boundedExecutor.d.ts +3 -0
  345. package/dist/evidenceExportHelper/boundedExecutor.js +33 -0
  346. package/dist/evidenceExportHelper/helperProgram.mjs +156 -0
  347. package/dist/evidenceExportHelper/index.d.ts +4 -0
  348. package/dist/evidenceExportHelper/index.js +4 -0
  349. package/dist/evidenceExportHelper/preparedAuthority.d.ts +64 -0
  350. package/dist/evidenceExportHelper/preparedAuthority.js +228 -0
  351. package/dist/evidenceExportHelper/preparedBuilder.d.ts +10 -0
  352. package/dist/evidenceExportHelper/preparedBuilder.js +183 -0
  353. package/dist/evidenceExportHelper/preparedBuilderTypes.d.ts +19 -0
  354. package/dist/evidenceExportHelper/preparedBuilderTypes.js +1 -0
  355. package/dist/evidenceExportHelper/recipe.d.ts +7 -0
  356. package/dist/evidenceExportHelper/recipe.js +83 -0
  357. package/dist/filesystem/io.d.ts +2 -0
  358. package/dist/filesystem/io.js +16 -1
  359. package/dist/manifest/executionSchemas.d.ts +27 -0
  360. package/dist/manifest/executionSchemas.js +21 -2
  361. package/dist/manifest/mcpSchemas.d.ts +1 -0
  362. package/dist/manifest/mcpSchemas.js +3 -0
  363. package/dist/manifest/renderSpawnfileNetworks.js +11 -0
  364. package/dist/manifest/renderSpawnfileWorkspace.js +5 -0
  365. package/dist/manifest/scheduleSchemas.d.ts +3 -1
  366. package/dist/manifest/scheduleSchemas.js +91 -5
  367. package/dist/manifest/schemas.d.ts +237 -12
  368. package/dist/manifest/schemas.js +5 -2
  369. package/dist/manifest/teamNetworkAccessSchemas.d.ts +5 -1
  370. package/dist/manifest/teamNetworkAccessSchemas.js +11 -0
  371. package/dist/manifest/teamNetworkAuthSchemas.d.ts +1 -1
  372. package/dist/manifest/teamNetworkSchemas.d.ts +17 -3
  373. package/dist/manifest/teamNetworkSchemas.js +19 -1
  374. package/dist/manifest/teamNetworkServerSchemas.d.ts +8 -3
  375. package/dist/manifest/teamNetworkServerSchemas.js +18 -2
  376. package/dist/manifest/workspaceSchemas.d.ts +16 -0
  377. package/dist/manifest/workspaceSchemas.js +11 -0
  378. package/dist/report/types.d.ts +34 -4
  379. package/dist/runtime/common.d.ts +28 -1
  380. package/dist/runtime/common.js +33 -3
  381. package/dist/runtime/container.js +49 -33
  382. package/dist/runtime/daimon/adapter.d.ts +14 -0
  383. package/dist/runtime/daimon/adapter.js +243 -0
  384. package/dist/runtime/daimon/attention.d.ts +8 -0
  385. package/dist/runtime/daimon/attention.js +32 -0
  386. package/dist/runtime/daimon/config.d.ts +25 -0
  387. package/dist/runtime/daimon/config.js +272 -0
  388. package/dist/runtime/daimon/contractManifest.d.ts +295 -0
  389. package/dist/runtime/daimon/contractManifest.js +319 -0
  390. package/dist/runtime/daimon/grokModel.d.ts +19 -0
  391. package/dist/runtime/daimon/grokModel.js +33 -0
  392. package/dist/runtime/daimon/grokWorkerConfigBytes.d.ts +26 -0
  393. package/dist/runtime/daimon/grokWorkerConfigBytes.js +36 -0
  394. package/dist/runtime/daimon/grokWorkerContract.d.ts +22 -0
  395. package/dist/runtime/daimon/grokWorkerContract.js +48 -0
  396. package/dist/runtime/daimon/memory.d.ts +57 -0
  397. package/dist/runtime/daimon/memory.js +125 -0
  398. package/dist/runtime/daimon/runAuth.d.ts +51 -0
  399. package/dist/runtime/daimon/runAuth.js +279 -0
  400. package/dist/runtime/daimon/runtimeIdentity.d.ts +22 -0
  401. package/dist/runtime/daimon/runtimeIdentity.js +22 -0
  402. package/dist/runtime/daimon/scheduleAuthority.d.ts +3 -0
  403. package/dist/runtime/daimon/scheduleAuthority.js +17 -0
  404. package/dist/runtime/index.d.ts +4 -0
  405. package/dist/runtime/index.js +4 -0
  406. package/dist/runtime/install.d.ts +3 -0
  407. package/dist/runtime/install.js +3 -0
  408. package/dist/runtime/localDaimonAuthority.d.ts +11 -0
  409. package/dist/runtime/localDaimonAuthority.js +77 -0
  410. package/dist/runtime/mnemeMcp.d.ts +13 -0
  411. package/dist/runtime/mnemeMcp.js +26 -0
  412. package/dist/runtime/openclaw/adapter.js +2 -2
  413. package/dist/runtime/pi/adapter.d.ts +0 -1
  414. package/dist/runtime/pi/adapter.js +2 -6
  415. package/dist/runtime/pi/appCliSource.js +1 -1
  416. package/dist/runtime/pi/appScheduleSource.js +6 -2
  417. package/dist/runtime/pi/appTemplateTypes.d.ts +1 -1
  418. package/dist/runtime/picoclaw/adapter.js +2 -2
  419. package/dist/runtime/registry.d.ts +3 -0
  420. package/dist/runtime/registry.js +19 -2
  421. package/dist/runtime/scheduleUtils.d.ts +1 -0
  422. package/dist/runtime/scheduleUtils.js +5 -1
  423. package/dist/runtime/types.d.ts +25 -0
  424. package/dist/runtime/usageLedger.d.ts +158 -0
  425. package/dist/runtime/usageLedger.js +269 -0
  426. package/dist/runtime/usageLedgerRead.d.ts +48 -0
  427. package/dist/runtime/usageLedgerRead.js +102 -0
  428. package/dist/runtime/usageRequestLedger.d.ts +42 -0
  429. package/dist/runtime/usageRequestLedger.js +72 -0
  430. package/dist/shared/daimonCodexDocker.d.ts +32 -0
  431. package/dist/shared/daimonCodexDocker.js +120 -0
  432. package/dist/shared/daimonGrokSeccompProfile.d.ts +10 -0
  433. package/dist/shared/daimonGrokSeccompProfile.js +11 -0
  434. package/dist/shared/index.d.ts +2 -0
  435. package/dist/shared/index.js +2 -0
  436. package/dist/shared/types.d.ts +1 -1
  437. package/dist/shared/volumeNames.d.ts +6 -0
  438. package/dist/shared/volumeNames.js +14 -0
  439. package/dist/target/dockerArtifactsProvider.js +34 -7
  440. package/dist/target/dockerBaseImage.d.ts +2 -0
  441. package/dist/target/dockerBaseImage.js +11 -0
  442. package/dist/target/dockerCommandExecutor.d.ts +11 -0
  443. package/dist/target/dockerCommandExecutor.js +53 -2
  444. package/dist/target/dockerCommandExecutorCore.d.ts +2 -1
  445. package/dist/target/dockerCommandExecutorCore.js +4 -2
  446. package/dist/target/dockerPublicArtifactSnapshot.d.ts +3 -3
  447. package/dist/target/dockerPublicArtifactSnapshot.js +17 -33
  448. package/dist/target/dockerTarget.d.ts +1 -0
  449. package/dist/target/dockerTargetBinding.d.ts +1 -2
  450. package/dist/target/dockerTargetBinding.js +2 -3
  451. package/dist/target/dockerTargetExecFile.d.ts +19 -0
  452. package/dist/target/dockerTargetExecFile.js +194 -0
  453. package/dist/target/dockerWorldServiceProvider.d.ts +4 -0
  454. package/dist/target/dockerWorldServiceProvider.js +13 -1
  455. package/dist/target/evidenceExport.d.ts +3 -1
  456. package/dist/target/evidenceExport.js +12 -3
  457. package/dist/target/evidenceExportOperationsTestKit.js +3 -3
  458. package/dist/target/evidenceExportProvider.d.ts +2 -0
  459. package/dist/target/evidenceExportProvider.js +15 -5
  460. package/dist/target/publicArtifactSnapshot.d.ts +31 -0
  461. package/dist/target/publicArtifactSnapshot.js +37 -3
  462. package/examples/README.md +45 -0
  463. package/examples/agent-with-subagents/AGENTS.md +3 -0
  464. package/examples/agent-with-subagents/Spawnfile +30 -0
  465. package/examples/agent-with-subagents/subagents/critic/AGENTS.md +3 -0
  466. package/examples/agent-with-subagents/subagents/critic/Spawnfile +15 -0
  467. package/examples/agent-with-subagents/subagents/researcher/AGENTS.md +3 -0
  468. package/examples/agent-with-subagents/subagents/researcher/Spawnfile +17 -0
  469. package/examples/daimon-org/Spawnfile +68 -0
  470. package/examples/daimon-org/TEAM.md +4 -0
  471. package/examples/daimon-org/agents/mapper/AGENTS.md +4 -0
  472. package/examples/daimon-org/agents/mapper/Spawnfile +37 -0
  473. package/examples/daimon-org/shared/skills/file-note/SKILL.md +9 -0
  474. package/examples/daimon-org/teams/review/Spawnfile +53 -0
  475. package/examples/daimon-org/teams/review/agents/reviewer/AGENTS.md +4 -0
  476. package/examples/daimon-org/teams/review/agents/reviewer/Spawnfile +37 -0
  477. package/examples/daimon-public-host/AGENTS.md +3 -0
  478. package/examples/daimon-public-host/Spawnfile +21 -0
  479. package/examples/distribution-org/Spawnfile +43 -0
  480. package/examples/distribution-org/TEAM.md +4 -0
  481. package/examples/distribution-org/agents/coordinator/AGENTS.md +1 -0
  482. package/examples/distribution-org/agents/coordinator/Spawnfile +20 -0
  483. package/examples/distribution-org/agents/researcher/AGENTS.md +1 -0
  484. package/examples/distribution-org/agents/researcher/Spawnfile +20 -0
  485. package/examples/jungian-daimon-org/Spawnfile +41 -0
  486. package/examples/jungian-daimon-org/TEAM.md +21 -0
  487. package/examples/jungian-daimon-org/teams/luna/Spawnfile +47 -0
  488. package/examples/jungian-daimon-org/teams/luna/TEAM.md +4 -0
  489. package/examples/jungian-daimon-org/teams/luna/agents/animus/AGENTS.md +10 -0
  490. package/examples/jungian-daimon-org/teams/luna/agents/animus/Spawnfile +33 -0
  491. package/examples/jungian-daimon-org/teams/luna/agents/representative/AGENTS.md +21 -0
  492. package/examples/jungian-daimon-org/teams/luna/agents/representative/Spawnfile +30 -0
  493. package/examples/jungian-daimon-org/teams/luna/agents/shadow/AGENTS.md +10 -0
  494. package/examples/jungian-daimon-org/teams/luna/agents/shadow/Spawnfile +33 -0
  495. package/examples/jungian-daimon-org/teams/selene/Spawnfile +47 -0
  496. package/examples/jungian-daimon-org/teams/selene/TEAM.md +4 -0
  497. package/examples/jungian-daimon-org/teams/selene/agents/animus/AGENTS.md +10 -0
  498. package/examples/jungian-daimon-org/teams/selene/agents/animus/Spawnfile +33 -0
  499. package/examples/jungian-daimon-org/teams/selene/agents/representative/AGENTS.md +19 -0
  500. package/examples/jungian-daimon-org/teams/selene/agents/representative/Spawnfile +33 -0
  501. package/examples/jungian-daimon-org/teams/selene/agents/shadow/AGENTS.md +10 -0
  502. package/examples/jungian-daimon-org/teams/selene/agents/shadow/Spawnfile +30 -0
  503. package/examples/mixed-runtime-org/Spawnfile +71 -0
  504. package/examples/mixed-runtime-org/TEAM.md +8 -0
  505. package/examples/mixed-runtime-org/agents/analyst/AGENTS.md +8 -0
  506. package/examples/mixed-runtime-org/agents/analyst/Spawnfile +27 -0
  507. package/examples/mixed-runtime-org/agents/conductor/AGENTS.md +8 -0
  508. package/examples/mixed-runtime-org/agents/conductor/Spawnfile +27 -0
  509. package/examples/mixed-runtime-org/agents/localist/AGENTS.md +7 -0
  510. package/examples/mixed-runtime-org/agents/localist/Spawnfile +50 -0
  511. package/examples/moltnet-team-chat/Spawnfile +43 -0
  512. package/examples/moltnet-team-chat/TEAM.md +5 -0
  513. package/examples/moltnet-team-chat/agents/coordinator/AGENTS.md +9 -0
  514. package/examples/moltnet-team-chat/agents/coordinator/Spawnfile +26 -0
  515. package/examples/moltnet-team-chat/teams/analysis/Spawnfile +23 -0
  516. package/examples/moltnet-team-chat/teams/analysis/TEAM.md +3 -0
  517. package/examples/moltnet-team-chat/teams/analysis/agents/observer/AGENTS.md +5 -0
  518. package/examples/moltnet-team-chat/teams/analysis/agents/observer/Spawnfile +19 -0
  519. package/examples/moltnet-team-chat/teams/analysis/agents/representative/AGENTS.md +5 -0
  520. package/examples/moltnet-team-chat/teams/analysis/agents/representative/Spawnfile +19 -0
  521. package/examples/moltnet-team-chat/teams/field/Spawnfile +41 -0
  522. package/examples/moltnet-team-chat/teams/field/TEAM.md +3 -0
  523. package/examples/moltnet-team-chat/teams/field/agents/observer/AGENTS.md +5 -0
  524. package/examples/moltnet-team-chat/teams/field/agents/observer/Spawnfile +26 -0
  525. package/examples/moltnet-team-chat/teams/field/agents/representative/AGENTS.md +11 -0
  526. package/examples/moltnet-team-chat/teams/field/agents/representative/Spawnfile +26 -0
  527. package/examples/single-agent/AGENTS.md +3 -0
  528. package/examples/single-agent/HEARTBEAT.md +3 -0
  529. package/examples/single-agent/IDENTITY.md +3 -0
  530. package/examples/single-agent/MEMORY.md +3 -0
  531. package/examples/single-agent/SOUL.md +3 -0
  532. package/examples/single-agent/Spawnfile +41 -0
  533. package/examples/single-agent/skills/web_search/SKILL.md +6 -0
  534. package/moltnet-releases.json +5 -4
  535. package/package.json +36 -9
  536. package/runtimes.yaml +5 -2
  537. package/dist/cli/targetWorldClockCrossProcess.test-helper.d.ts +0 -13
  538. package/dist/cli/targetWorldClockCrossProcess.test-helper.js +0 -109
  539. package/dist/deployment/providerRuntimeBoundaryScanner.test-helper.d.ts +0 -8
  540. package/dist/deployment/providerRuntimeBoundaryScanner.test-helper.js +0 -60
  541. package/dist/deployment/simfileFixtureBoundary.test-helper.d.ts +0 -8
  542. package/dist/deployment/simfileFixtureBoundary.test-helper.js +0 -103
  543. package/dist/ownership/simfileRunOperatorInputs.d.ts +0 -103
  544. package/dist/ownership/simfileRunOperatorInputs.js +0 -139
  545. package/dist/target/cleanupRunDocker.test-helper.d.ts +0 -67
  546. package/dist/target/cleanupRunDocker.test-helper.js +0 -238
@@ -0,0 +1,183 @@
1
+ import { createHash } from "node:crypto";
2
+ import { parseDockerBaseImageReference } from "../target/dockerBaseImage.js";
3
+ import { DockerArtifactProviderError, } from "../target/dockerArtifactsProvider.js";
4
+ import { EVIDENCE_EXPORT_HELPER_CONTRACT_LABEL, EVIDENCE_EXPORT_HELPER_CONTRACT_VERSION, EVIDENCE_EXPORT_HELPER_ENTRYPOINT, EVIDENCE_EXPORT_HELPER_ENV, EVIDENCE_EXPORT_HELPER_USER, } from "../target/evidenceExportProvider.js";
5
+ import { createPreparedEvidenceHelperKey, initializePreparedEvidenceHelperAuthorityStore, newPreparedEvidenceHelperCompletionRecord, newPreparedEvidenceHelperPendingRecord, } from "./preparedAuthority.js";
6
+ import { loadLocalEvidenceHelperRecipe } from "./recipe.js";
7
+ const ERROR = "Prepared evidence-export helper failed";
8
+ const CONTEXT = /^[a-z][a-z0-9_-]{0,63}$/u;
9
+ const DIGEST = /^sha256:[a-f0-9]{64}$/u;
10
+ const BUILD_ID = /^(sha256:[a-f0-9]{64})(?:\r?\n)?$/u;
11
+ const MAX_OUTPUT = 65_536;
12
+ const BASE_FORMAT = "[{\"Architecture\":{{json .Architecture}},\"Id\":{{json .Id}},\"Os\":{{json .Os}}}]";
13
+ const IMAGE_FORMAT = "[{\"Architecture\":{{json .Architecture}},\"Config\":{\"Cmd\":{{json (index .Config \"Cmd\")}},\"Entrypoint\":{{json (index .Config \"Entrypoint\")}},\"Env\":{{json (index .Config \"Env\")}},\"ExposedPorts\":{{json (index .Config \"ExposedPorts\")}},\"Healthcheck\":{{json (index .Config \"Healthcheck\")}},\"Labels\":{{json (index .Config \"Labels\")}},\"User\":{{json (index .Config \"User\")}},\"Volumes\":{{json (index .Config \"Volumes\")}}},\"Id\":{{json .Id}},\"Os\":{{json .Os}}}]";
14
+ const live = new Map();
15
+ const fail = () => { throw new Error(ERROR); };
16
+ const hash = (domain, value) => `sha256:${createHash("sha256").update(`spawnfile.evidence-helper.${domain}.v1\0`).update(value).digest("hex")}`;
17
+ const exact = (raw, keys) => raw !== null && typeof raw === "object" && !Array.isArray(raw)
18
+ && Object.getPrototypeOf(raw) === Object.prototype
19
+ && Object.keys(raw).sort().join("\0") === [...keys].sort().join("\0");
20
+ const same = (left, right) => JSON.stringify(left) === JSON.stringify(right);
21
+ const digest = (raw) => typeof raw === "string" && DIGEST.test(raw) ? raw : fail();
22
+ const timeout = (raw) => raw === undefined ? 120_000
23
+ : typeof raw === "number" && Number.isSafeInteger(raw) && raw >= 1 && raw <= 120_000 ? raw : fail();
24
+ const parse = (raw) => { try {
25
+ return JSON.parse(raw);
26
+ }
27
+ catch {
28
+ return fail();
29
+ } };
30
+ const hook = async (value) => { if (value)
31
+ await value(); };
32
+ const execution = (input, value) => {
33
+ if (!CONTEXT.test(input.context) || typeof input.executor !== "function")
34
+ return fail();
35
+ const run = async (args, stdin) => {
36
+ const result = await input.executor("docker", ["--context", input.context, ...args], {
37
+ ...(input.signal ? { signal: input.signal } : {}), timeout: value, ...(stdin ? { stdin } : {}),
38
+ });
39
+ if (!result || typeof result.stdout !== "string" || typeof result.stderr !== "string"
40
+ || Buffer.byteLength(result.stdout, "utf8") > MAX_OUTPUT || Buffer.byteLength(result.stderr, "utf8") > MAX_OUTPUT)
41
+ return fail();
42
+ return result.stdout;
43
+ };
44
+ return Object.freeze({ run });
45
+ };
46
+ const localFacts = async (run, context, baseImage) => {
47
+ const endpoint = parse((await run([
48
+ "context", "inspect", context, "--format", "{{json .Endpoints.docker.Host}}",
49
+ ])).trim());
50
+ if (typeof endpoint !== "string" || !/^(?:fd|npipe|unix):\/\/[^\s]+$/u.test(endpoint))
51
+ return fail();
52
+ const daemon = parse(await run(["info", "--format", "{\"Architecture\":{{json .Architecture}},\"DockerRootDir\":{{json .DockerRootDir}},\"OSType\":{{json .OSType}},\"ServerVersion\":{{json .ServerVersion}}}"]));
53
+ if (!exact(daemon, ["Architecture", "DockerRootDir", "OSType", "ServerVersion"])
54
+ || daemon.OSType !== "linux" || typeof daemon.DockerRootDir !== "string" || typeof daemon.ServerVersion !== "string")
55
+ return fail();
56
+ const architecture = ["amd64", "x64", "x86_64"].includes(daemon.Architecture) ? "amd64"
57
+ : ["arm64", "aarch64"].includes(daemon.Architecture) ? "arm64" : fail();
58
+ const image = parse(await run(["image", "inspect", baseImage, "--format", BASE_FORMAT]));
59
+ if (!Array.isArray(image) || image.length !== 1 || !exact(image[0], ["Architecture", "Id", "Os"])
60
+ || image[0].Os !== "linux" || image[0].Architecture !== architecture)
61
+ return fail();
62
+ return Object.freeze({ baseConfig: digest(image[0].Id), daemonDigest: hash("daemon", JSON.stringify(daemon)),
63
+ endpointDigest: hash("endpoint", endpoint), platform: Object.freeze({ architecture, os: "linux" }) });
64
+ };
65
+ const inspectHelper = async (run, reference, facts) => {
66
+ const image = parse(await run(["image", "inspect", reference, "--format", IMAGE_FORMAT]));
67
+ if (!Array.isArray(image) || image.length !== 1 || !exact(image[0], ["Architecture", "Config", "Id", "Os"])
68
+ || image[0].Architecture !== facts.platform.architecture || image[0].Os !== "linux"
69
+ || !exact(image[0].Config, ["Cmd", "Entrypoint", "Env", "ExposedPorts", "Healthcheck", "Labels", "User", "Volumes"]))
70
+ return fail();
71
+ const config = image[0].Config;
72
+ if (!same(config.Entrypoint, EVIDENCE_EXPORT_HELPER_ENTRYPOINT)
73
+ || config.Cmd !== null && !same(config.Cmd, []) || !same(config.Env, EVIDENCE_EXPORT_HELPER_ENV)
74
+ || config.ExposedPorts !== null
75
+ || config.Healthcheck !== null || config.Volumes !== null || config.User !== EVIDENCE_EXPORT_HELPER_USER
76
+ || !exact(config.Labels, [EVIDENCE_EXPORT_HELPER_CONTRACT_LABEL])
77
+ || config.Labels[EVIDENCE_EXPORT_HELPER_CONTRACT_LABEL] !== EVIDENCE_EXPORT_HELPER_CONTRACT_VERSION)
78
+ return fail();
79
+ return digest(image[0].Id);
80
+ };
81
+ const inspectMaybe = async (run, reference, facts) => {
82
+ try {
83
+ return await inspectHelper(run, reference, facts);
84
+ }
85
+ catch (error) {
86
+ if (error instanceof DockerArtifactProviderError && error.kind === "image_not_found")
87
+ return null;
88
+ throw error;
89
+ }
90
+ };
91
+ const matching = (record, baseImage, facts, recipe) => record.base_image === baseImage && record.base_config_digest === facts.baseConfig && record.daemon_digest === facts.daemonDigest
92
+ && record.endpoint_digest === facts.endpointDigest && same(record.platform, facts.platform)
93
+ && record.recipe_digest === recipe.recipeDigest;
94
+ const build = async (input, run, facts, recipe) => {
95
+ await hook(input.testHooks?.beforeBuild);
96
+ const output = await run(["build", "--quiet", "--pull=false", "--network=none", "--platform",
97
+ `${facts.platform.os}/${facts.platform.architecture}`, "--build-arg", `SPAWNFILE_HELPER_BASE=${facts.baseConfig}`,
98
+ "-"], recipe.context);
99
+ const produced = BUILD_ID.exec(output)?.[1];
100
+ if (!produced)
101
+ return fail();
102
+ await hook(input.testHooks?.afterBuild);
103
+ // Docker's quiet build result is the image config ID produced by this exact
104
+ // invocation. Re-attest that immutable ID, never a mutable tag.
105
+ const inspected = await inspectHelper(run, produced, facts);
106
+ return inspected === produced ? inspected : fail();
107
+ };
108
+ const receiptOwner = async (input, baseImage, facts, recipe, key, run) => {
109
+ const store = await initializePreparedEvidenceHelperAuthorityStore(input.privateRoot);
110
+ await hook(input.testHooks?.beforeReserve);
111
+ const pending = await store.reserve(key, newPreparedEvidenceHelperPendingRecord({
112
+ base_config_digest: facts.baseConfig, base_image: baseImage, context: input.context,
113
+ daemon_digest: facts.daemonDigest, endpoint_digest: facts.endpointDigest, platform: facts.platform,
114
+ recipe_digest: recipe.recipeDigest
115
+ }));
116
+ await hook(input.testHooks?.afterReserve);
117
+ if (!matching(pending, baseImage, facts, recipe))
118
+ return fail();
119
+ const authority = await store.load(key);
120
+ if (!authority)
121
+ return fail();
122
+ if (authority.completion) {
123
+ let observed = await inspectMaybe(run, authority.completion.accepted_image_config_digest, facts);
124
+ if (observed === null)
125
+ observed = await build(input, run, facts, recipe);
126
+ if (observed !== authority.completion.accepted_image_config_digest)
127
+ return fail();
128
+ await hook(input.testHooks?.beforeReceipt);
129
+ return authority.completion.receipt;
130
+ }
131
+ const produced = await build(input, run, facts, recipe);
132
+ await hook(input.testHooks?.beforeComplete);
133
+ const completion = await store.complete(key, newPreparedEvidenceHelperCompletionRecord(pending, produced));
134
+ await hook(input.testHooks?.afterComplete);
135
+ if (completion.accepted_image_config_digest !== produced)
136
+ return fail();
137
+ await hook(input.testHooks?.beforeReceipt);
138
+ return completion.receipt;
139
+ };
140
+ /** Re-attests a completion-bound local config identity or rebuilds an absent exact config. */
141
+ export const prepareEvidenceExportHelper = async (input) => {
142
+ const targetTimeout = timeout(input.timeoutMs);
143
+ const baseImage = parseDockerBaseImageReference(input.baseImage) ?? fail();
144
+ const run = execution(input, targetTimeout).run;
145
+ const recipe = await loadLocalEvidenceHelperRecipe();
146
+ const facts = await localFacts(run, input.context, baseImage);
147
+ const key = createPreparedEvidenceHelperKey({ baseConfigDigest: facts.baseConfig, context: input.context,
148
+ daemonDigest: facts.daemonDigest, endpointDigest: facts.endpointDigest, platform: facts.platform,
149
+ recipeDigest: recipe.recipeDigest });
150
+ const mapKey = `${input.privateRoot}\0${key}`;
151
+ const joined = live.get(mapKey);
152
+ if (joined)
153
+ return joined;
154
+ const promise = receiptOwner(input, baseImage, facts, recipe, key, run);
155
+ live.set(mapKey, promise);
156
+ try {
157
+ return await promise;
158
+ }
159
+ finally {
160
+ if (live.get(mapKey) === promise)
161
+ live.delete(mapKey);
162
+ }
163
+ };
164
+ /** Private target lowering resolves the config digest only after receipt-correlated reattestation. */
165
+ export const resolvePreparedEvidenceHelperImage = async (input, receipt) => {
166
+ const actual = await prepareEvidenceExportHelper(input);
167
+ if (actual.handle !== receipt.handle || actual.digest !== receipt.digest)
168
+ return fail();
169
+ const baseImage = parseDockerBaseImageReference(input.baseImage) ?? fail();
170
+ const run = execution(input, timeout(input.timeoutMs)).run;
171
+ const facts = await localFacts(run, input.context, baseImage);
172
+ const recipe = await loadLocalEvidenceHelperRecipe();
173
+ const store = await initializePreparedEvidenceHelperAuthorityStore(input.privateRoot);
174
+ const key = createPreparedEvidenceHelperKey({ baseConfigDigest: facts.baseConfig, context: input.context,
175
+ daemonDigest: facts.daemonDigest, endpointDigest: facts.endpointDigest, platform: facts.platform,
176
+ recipeDigest: recipe.recipeDigest });
177
+ const authority = await store.load(key);
178
+ if (!authority?.completion || authority.completion.receipt.handle !== receipt.handle
179
+ || authority.completion.receipt.digest !== receipt.digest)
180
+ return fail();
181
+ return Object.freeze({ configDigest: authority.completion.accepted_image_config_digest,
182
+ imageReference: authority.completion.accepted_image_config_digest });
183
+ };
@@ -0,0 +1,19 @@
1
+ import type { DockerArtifactExecutor } from "../target/dockerArtifactsProvider.js";
2
+ export interface PrepareEvidenceHelperInput {
3
+ readonly baseImage: string;
4
+ readonly context: string;
5
+ readonly executor: DockerArtifactExecutor;
6
+ readonly privateRoot: string;
7
+ readonly signal?: AbortSignal;
8
+ /** Test-only fault injection at durable/mutation/receipt boundaries. */
9
+ readonly testHooks?: {
10
+ readonly afterBuild?: () => Promise<void> | void;
11
+ readonly afterComplete?: () => Promise<void> | void;
12
+ readonly afterReserve?: () => Promise<void> | void;
13
+ readonly beforeBuild?: () => Promise<void> | void;
14
+ readonly beforeComplete?: () => Promise<void> | void;
15
+ readonly beforeReceipt?: () => Promise<void> | void;
16
+ readonly beforeReserve?: () => Promise<void> | void;
17
+ };
18
+ readonly timeoutMs?: number;
19
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ export declare const LOCAL_EVIDENCE_HELPER_RECIPE_VERSION: "spawnfile.local-evidence-export-helper.recipe.v1";
2
+ export interface LocalEvidenceHelperRecipe {
3
+ readonly artifactManifestDigest: `sha256:${string}`;
4
+ readonly context: Uint8Array;
5
+ readonly recipeDigest: `sha256:${string}`;
6
+ }
7
+ export declare const loadLocalEvidenceHelperRecipe: () => Promise<LocalEvidenceHelperRecipe>;
@@ -0,0 +1,83 @@
1
+ import { createHash } from "node:crypto";
2
+ import { readFile } from "node:fs/promises";
3
+ import { EVIDENCE_EXPORT_HELPER_PATH } from "../target/evidenceExportProvider.js";
4
+ export const LOCAL_EVIDENCE_HELPER_RECIPE_VERSION = "spawnfile.local-evidence-export-helper.recipe.v1";
5
+ const BLOCK = 512;
6
+ const MAX_SOURCE_BYTES = 65_536;
7
+ const DIGEST = /^sha256:[a-f0-9]{64}$/u;
8
+ const fail = () => { throw new Error("Local evidence-export helper recipe failed"); };
9
+ const octal = (value, width) => {
10
+ const raw = value.toString(8);
11
+ if (!Number.isSafeInteger(value) || value < 0 || raw.length > width - 1)
12
+ return fail();
13
+ return Buffer.from(`${raw.padStart(width - 1, "0")}\0`, "ascii");
14
+ };
15
+ const checksum = (header) => {
16
+ header.fill(0x20, 148, 156);
17
+ let sum = 0;
18
+ for (const byte of header)
19
+ sum += byte;
20
+ if (sum > 0o777777)
21
+ return fail();
22
+ header.set(Buffer.from(`${sum.toString(8).padStart(6, "0")}\0 `, "ascii"), 148);
23
+ };
24
+ const archive = (entries) => {
25
+ const output = [];
26
+ for (const entry of [...entries].sort((left, right) => Buffer.compare(Buffer.from(left.path), Buffer.from(right.path)))) {
27
+ const name = Buffer.from(entry.path, "utf8");
28
+ if (name.byteLength < 1 || name.byteLength > 100
29
+ || entry.mode !== 0o444 && entry.mode !== 0o555)
30
+ return fail();
31
+ const header = Buffer.alloc(BLOCK);
32
+ header.set(name, 0);
33
+ header.set(octal(entry.mode, 8), 100);
34
+ header.set(octal(0, 8), 108);
35
+ header.set(octal(0, 8), 116);
36
+ header.set(octal(entry.bytes.byteLength, 12), 124);
37
+ header.set(octal(0, 12), 136);
38
+ header[156] = 48;
39
+ header.set(Buffer.from("ustar\0", "ascii"), 257);
40
+ header.set(Buffer.from("00", "ascii"), 263);
41
+ header.set(octal(0, 8), 329);
42
+ header.set(octal(0, 8), 337);
43
+ checksum(header);
44
+ output.push(header, Buffer.from(entry.bytes));
45
+ const padding = (BLOCK - entry.bytes.byteLength % BLOCK) % BLOCK;
46
+ if (padding > 0)
47
+ output.push(Buffer.alloc(padding));
48
+ }
49
+ output.push(Buffer.alloc(BLOCK), Buffer.alloc(BLOCK));
50
+ return Buffer.concat(output);
51
+ };
52
+ const dockerfile = Buffer.from([
53
+ "ARG SPAWNFILE_HELPER_BASE",
54
+ "FROM ${SPAWNFILE_HELPER_BASE} AS runtime",
55
+ "FROM scratch",
56
+ "COPY --from=runtime / /",
57
+ "COPY helperProgram.mjs /bin/spawnfile-export-helper",
58
+ "LABEL spawnfile.target.evidence-export.helper-contract=\"v1\"",
59
+ `ENV PATH=${EVIDENCE_EXPORT_HELPER_PATH}`,
60
+ "USER 65534:65534",
61
+ "ENTRYPOINT [\"/bin/spawnfile-export-helper\"]",
62
+ "CMD []",
63
+ "",
64
+ ].join("\n"), "utf8");
65
+ const digest = (domain, bytes) => `sha256:${createHash("sha256")
66
+ .update(`spawnfile.local-evidence-export-helper.${domain}.v1\0`, "utf8")
67
+ .update(bytes)
68
+ .digest("hex")}`;
69
+ export const loadLocalEvidenceHelperRecipe = async () => {
70
+ const source = await readFile(new URL("./helperProgram.mjs", import.meta.url));
71
+ if (source.byteLength < 1 || source.byteLength > MAX_SOURCE_BYTES
72
+ || !source.subarray(0, 22).toString("utf8").startsWith("#!/usr/local/bin/node"))
73
+ return fail();
74
+ const context = archive([
75
+ { bytes: dockerfile, mode: 0o444, path: "Dockerfile" },
76
+ { bytes: source, mode: 0o555, path: "helperProgram.mjs" },
77
+ ]);
78
+ const recipeDigest = digest("recipe", context);
79
+ const artifactManifestDigest = digest("artifact-manifest", recipeDigest);
80
+ if (!DIGEST.test(recipeDigest) || !DIGEST.test(artifactManifestDigest))
81
+ return fail();
82
+ return Object.freeze({ artifactManifestDigest, context, recipeDigest });
83
+ };
@@ -3,9 +3,11 @@ export interface CopyDirectoryOptions {
3
3
  }
4
4
  export declare const copyDirectory: (sourcePath: string, destinationPath: string, options?: CopyDirectoryOptions) => Promise<void>;
5
5
  export declare const ensureDirectory: (directoryPath: string) => Promise<void>;
6
+ export declare const ensurePrivateDirectory: (directoryPath: string) => Promise<void>;
6
7
  export declare const fileExists: (filePath: string) => Promise<boolean>;
7
8
  export declare const isSymlink: (filePath: string) => Promise<boolean>;
8
9
  export declare const readUtf8File: (filePath: string) => Promise<string>;
9
10
  export declare const ensureGitignoreEntry: (directoryPath: string, entry: string) => Promise<boolean>;
10
11
  export declare const removeDirectory: (directoryPath: string) => Promise<void>;
11
12
  export declare const writeUtf8File: (filePath: string, content: string) => Promise<void>;
13
+ export declare const writePrivateUtf8File: (filePath: string, content: string) => Promise<void>;
@@ -1,5 +1,5 @@
1
1
  import path from "node:path";
2
- import { cp, mkdir, lstat, readFile, rm, stat, writeFile } from "node:fs/promises";
2
+ import { chmod, cp, mkdir, lstat, open, readFile, rm, stat, writeFile } from "node:fs/promises";
3
3
  export const copyDirectory = async (sourcePath, destinationPath, options = {}) => {
4
4
  await cp(sourcePath, destinationPath, {
5
5
  filter: options.filter,
@@ -10,6 +10,10 @@ export const copyDirectory = async (sourcePath, destinationPath, options = {}) =
10
10
  export const ensureDirectory = async (directoryPath) => {
11
11
  await mkdir(directoryPath, { recursive: true });
12
12
  };
13
+ export const ensurePrivateDirectory = async (directoryPath) => {
14
+ await mkdir(directoryPath, { recursive: true, mode: 0o700 });
15
+ await chmod(directoryPath, 0o700);
16
+ };
13
17
  export const fileExists = async (filePath) => {
14
18
  try {
15
19
  await stat(filePath);
@@ -55,3 +59,14 @@ export const removeDirectory = async (directoryPath) => {
55
59
  export const writeUtf8File = async (filePath, content) => {
56
60
  await writeFile(filePath, content, "utf8");
57
61
  };
62
+ export const writePrivateUtf8File = async (filePath, content) => {
63
+ const handle = await open(filePath, "w", 0o600);
64
+ try {
65
+ // Creation mode does not change an existing file's permissions.
66
+ await handle.chmod(0o600);
67
+ await handle.writeFile(content, "utf8");
68
+ }
69
+ finally {
70
+ await handle.close();
71
+ }
72
+ };
@@ -1,10 +1,17 @@
1
1
  import { z } from "zod";
2
+ /**
3
+ * The closed reasoning-effort vocabulary a brokered Daimon Grok worker accepts
4
+ * (`DAIMON_GROK_BROKER_REASONING_EFFORTS`). Only valid on a target that
5
+ * declares `auth.method: grok` itself; it is never inherited.
6
+ */
7
+ export declare const MODEL_REASONING_EFFORTS: readonly ["low", "medium", "high"];
2
8
  export declare const modelEntryAuthSchema: z.ZodObject<{
3
9
  key: z.ZodOptional<z.ZodString>;
4
10
  method: z.ZodOptional<z.ZodEnum<{
5
11
  api_key: "api_key";
6
12
  "claude-code": "claude-code";
7
13
  codex: "codex";
14
+ grok: "grok";
8
15
  none: "none";
9
16
  }>>;
10
17
  }, z.core.$strict>;
@@ -22,6 +29,7 @@ export declare const modelTargetSchema: z.ZodObject<{
22
29
  api_key: "api_key";
23
30
  "claude-code": "claude-code";
24
31
  codex: "codex";
32
+ grok: "grok";
25
33
  none: "none";
26
34
  }>>;
27
35
  }, z.core.$strict>>;
@@ -34,6 +42,11 @@ export declare const modelTargetSchema: z.ZodObject<{
34
42
  }, z.core.$strict>>;
35
43
  name: z.ZodString;
36
44
  provider: z.ZodString;
45
+ reasoning_effort: z.ZodOptional<z.ZodEnum<{
46
+ high: "high";
47
+ medium: "medium";
48
+ low: "low";
49
+ }>>;
37
50
  }, z.core.$strict>;
38
51
  export declare const executionSchema: z.ZodObject<{
39
52
  model: z.ZodOptional<z.ZodObject<{
@@ -42,12 +55,14 @@ export declare const executionSchema: z.ZodObject<{
42
55
  api_key: "api_key";
43
56
  "claude-code": "claude-code";
44
57
  codex: "codex";
58
+ grok: "grok";
45
59
  none: "none";
46
60
  }>>;
47
61
  methods: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
48
62
  api_key: "api_key";
49
63
  "claude-code": "claude-code";
50
64
  codex: "codex";
65
+ grok: "grok";
51
66
  none: "none";
52
67
  }>>>;
53
68
  }, z.core.$strict>>;
@@ -58,6 +73,7 @@ export declare const executionSchema: z.ZodObject<{
58
73
  api_key: "api_key";
59
74
  "claude-code": "claude-code";
60
75
  codex: "codex";
76
+ grok: "grok";
61
77
  none: "none";
62
78
  }>>;
63
79
  }, z.core.$strict>>;
@@ -70,6 +86,11 @@ export declare const executionSchema: z.ZodObject<{
70
86
  }, z.core.$strict>>;
71
87
  name: z.ZodString;
72
88
  provider: z.ZodString;
89
+ reasoning_effort: z.ZodOptional<z.ZodEnum<{
90
+ high: "high";
91
+ medium: "medium";
92
+ low: "low";
93
+ }>>;
73
94
  }, z.core.$strict>>>;
74
95
  primary: z.ZodObject<{
75
96
  auth: z.ZodOptional<z.ZodObject<{
@@ -78,6 +99,7 @@ export declare const executionSchema: z.ZodObject<{
78
99
  api_key: "api_key";
79
100
  "claude-code": "claude-code";
80
101
  codex: "codex";
102
+ grok: "grok";
81
103
  none: "none";
82
104
  }>>;
83
105
  }, z.core.$strict>>;
@@ -90,6 +112,11 @@ export declare const executionSchema: z.ZodObject<{
90
112
  }, z.core.$strict>>;
91
113
  name: z.ZodString;
92
114
  provider: z.ZodString;
115
+ reasoning_effort: z.ZodOptional<z.ZodEnum<{
116
+ high: "high";
117
+ medium: "medium";
118
+ low: "low";
119
+ }>>;
93
120
  }, z.core.$strict>;
94
121
  }, z.core.$strict>>;
95
122
  sandbox: z.ZodOptional<z.ZodObject<{
@@ -1,5 +1,11 @@
1
1
  import { z } from "zod";
2
- const modelAuthMethodSchema = z.enum(["api_key", "claude-code", "codex", "none"]);
2
+ const modelAuthMethodSchema = z.enum(["api_key", "claude-code", "codex", "grok", "none"]);
3
+ /**
4
+ * The closed reasoning-effort vocabulary a brokered Daimon Grok worker accepts
5
+ * (`DAIMON_GROK_BROKER_REASONING_EFFORTS`). Only valid on a target that
6
+ * declares `auth.method: grok` itself; it is never inherited.
7
+ */
8
+ export const MODEL_REASONING_EFFORTS = ["low", "medium", "high"];
3
9
  const modelEndpointCompatibilitySchema = z.enum(["anthropic", "openai"]);
4
10
  const modelAuthSchema = z
5
11
  .object({
@@ -58,10 +64,23 @@ export const modelTargetSchema = z
58
64
  auth: modelEntryAuthSchema.optional(),
59
65
  endpoint: modelEndpointSchema.optional(),
60
66
  name: z.string(),
61
- provider: z.string()
67
+ provider: z.string(),
68
+ reasoning_effort: z.enum(MODEL_REASONING_EFFORTS).optional()
62
69
  })
63
70
  .strict()
64
71
  .superRefine((value, context) => {
72
+ if (value.auth?.method === "grok" && (value.provider !== "xai" || value.endpoint)) {
73
+ context.addIssue({
74
+ code: z.ZodIssueCode.custom,
75
+ message: "grok auth is only valid for provider xai without an endpoint"
76
+ });
77
+ }
78
+ if (value.reasoning_effort !== undefined && value.auth?.method !== "grok") {
79
+ context.addIssue({
80
+ code: z.ZodIssueCode.custom,
81
+ message: "reasoning_effort is only valid on a model that declares auth.method grok"
82
+ });
83
+ }
65
84
  const usesCustomEndpoint = value.provider === "custom" || value.provider === "local";
66
85
  if (usesCustomEndpoint && !value.endpoint) {
67
86
  context.addIssue({
@@ -13,5 +13,6 @@ export declare const mcpServerSchema: z.ZodObject<{
13
13
  stdio: "stdio";
14
14
  streamable_http: "streamable_http";
15
15
  }>;
16
+ tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
16
17
  url: z.ZodOptional<z.ZodString>;
17
18
  }, z.core.$strict>;
@@ -22,10 +22,13 @@ export const mcpServerSchema = z
22
22
  env: z.record(z.string(), z.string()).optional(),
23
23
  name: z.string().min(1),
24
24
  transport: z.enum(["sse", "stdio", "streamable_http"]),
25
+ tools: z.array(z.string().min(1)).max(32).optional(),
25
26
  url: z.string().optional()
26
27
  })
27
28
  .strict()
28
29
  .superRefine((value, context) => {
30
+ if (value.tools !== undefined && (value.tools.length === 0 || new Set(value.tools).size !== value.tools.length))
31
+ context.addIssue({ code: z.ZodIssueCode.custom, message: "MCP tools must be a nonempty unique allowlist" });
29
32
  if (value.name.startsWith("spawnfile.") || value.name.startsWith("mneme-")) {
30
33
  context.addIssue({ code: z.ZodIssueCode.custom, message: "MCP server name is reserved for compiler-owned generated services" });
31
34
  }
@@ -8,6 +8,16 @@ const orderTeamAuthToken = (token) => withDefinedEntries([
8
8
  const orderTeamAuthPairing = (pairing) => withDefinedEntries([
9
9
  ["id", pairing.id],
10
10
  ["remote_base_url", pairing.remote_base_url],
11
+ [
12
+ "relay",
13
+ pairing.relay
14
+ ? withDefinedEntries([
15
+ ["url", pairing.relay.url],
16
+ ["room", pairing.relay.room],
17
+ ["token_secret", pairing.relay.token_secret]
18
+ ])
19
+ : undefined
20
+ ],
11
21
  ["remote_network_id", pairing.remote_network_id],
12
22
  ["remote_network_name", pairing.remote_network_name],
13
23
  ["token_secret", pairing.token_secret]
@@ -87,6 +97,7 @@ export const orderTeamNetworks = (networks) => networks?.map((network) => withDe
87
97
  ["name", room.name],
88
98
  ["visibility", room.visibility],
89
99
  ["write_policy", room.write_policy],
100
+ ["federation", room.federation],
90
101
  ["members", room.members]
91
102
  ]))
92
103
  ]
@@ -26,6 +26,11 @@ const orderWorkspaceResource = (resource) => {
26
26
  ["sharing", resource.sharing]
27
27
  ]);
28
28
  }
29
+ if (resource.kind === "bundle")
30
+ return withDefinedEntries([
31
+ ["id", resource.id], ["kind", resource.kind], ["source", resource.source],
32
+ ["sha256", resource.sha256], ["mount", resource.mount], ["mode", resource.mode], ["sharing", resource.sharing]
33
+ ]);
29
34
  return withDefinedEntries([
30
35
  ["id", resource.id],
31
36
  ["kind", resource.kind],
@@ -1,11 +1,13 @@
1
1
  import { z } from "zod";
2
2
  export declare const agentScheduleSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3
- cron: z.ZodString;
3
+ cron: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
4
+ jitter_seconds: z.ZodOptional<z.ZodNumber>;
4
5
  kind: z.ZodLiteral<"cron">;
5
6
  prompt: z.ZodOptional<z.ZodString>;
6
7
  timezone: z.ZodOptional<z.ZodString>;
7
8
  }, z.core.$strict>, z.ZodObject<{
8
9
  every: z.ZodString;
10
+ jitter_seconds: z.ZodOptional<z.ZodNumber>;
9
11
  kind: z.ZodLiteral<"every">;
10
12
  prompt: z.ZodOptional<z.ZodString>;
11
13
  timezone: z.ZodOptional<z.ZodString>;