spawnfile 0.1.14 → 0.1.18

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 (873) 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 +46 -5
  5. package/dist/auth/index.d.ts +3 -0
  6. package/dist/auth/index.js +2 -0
  7. package/dist/auth/paths.d.ts +1 -1
  8. package/dist/auth/profileStore.js +13 -10
  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/trainingGrokWriteback.d.ts +4 -0
  19. package/dist/auth/trainingGrokWriteback.js +119 -0
  20. package/dist/auth/trainingGrokWritebackLock.d.ts +5 -0
  21. package/dist/auth/trainingGrokWritebackLock.js +56 -0
  22. package/dist/auth/types.d.ts +1 -1
  23. package/dist/cli/authCommands.d.ts +1 -1
  24. package/dist/cli/authCommands.js +18 -5
  25. package/dist/cli/canaryCutoverCommand.d.ts +2 -0
  26. package/dist/cli/canaryCutoverCommand.js +30 -0
  27. package/dist/cli/capabilitiesCommand.d.ts +3 -0
  28. package/dist/cli/capabilitiesCommand.js +12 -0
  29. package/dist/cli/capabilitiesReceipt.d.ts +56 -0
  30. package/dist/cli/capabilitiesReceipt.js +56 -0
  31. package/dist/cli/compileBuildCommands.js +17 -0
  32. package/dist/cli/composedLifecycleContractSet.d.ts +21 -0
  33. package/dist/cli/composedLifecycleContractSet.js +204 -0
  34. package/dist/cli/devCommands.js +6 -2
  35. package/dist/cli/downCommand.d.ts +2 -0
  36. package/dist/cli/downCommand.js +22 -8
  37. package/dist/cli/envFileOption.d.ts +18 -0
  38. package/dist/cli/envFileOption.js +20 -0
  39. package/dist/cli/evidenceExportHelperCommand.d.ts +13 -0
  40. package/dist/cli/evidenceExportHelperCommand.js +51 -0
  41. package/dist/cli/index.js +12 -3
  42. package/dist/cli/lifecycleCommands.d.ts +1 -1
  43. package/dist/cli/lifecycleCommands.js +3 -1
  44. package/dist/cli/lifecycleMachine.d.ts +7 -1
  45. package/dist/cli/lifecycleMachine.js +2 -2
  46. package/dist/cli/lifecyclePlan.d.ts +1 -0
  47. package/dist/cli/lifecyclePlan.js +2 -0
  48. package/dist/cli/paideiaDelegation.d.ts +18 -0
  49. package/dist/cli/paideiaDelegation.js +211 -0
  50. package/dist/cli/paideiaSupervisor.d.ts +17 -0
  51. package/dist/cli/paideiaSupervisor.js +48 -0
  52. package/dist/cli/productStateCloneCommand.d.ts +2 -0
  53. package/dist/cli/productStateCloneCommand.js +34 -0
  54. package/dist/cli/recordCommands.d.ts +17 -0
  55. package/dist/cli/recordCommands.js +43 -0
  56. package/dist/cli/releaseCommand.d.ts +6 -0
  57. package/dist/cli/releaseCommand.js +91 -0
  58. package/dist/cli/runCli.d.ts +19 -3
  59. package/dist/cli/runCli.js +43 -10
  60. package/dist/cli/runPublishCommands.js +5 -3
  61. package/dist/cli/targetCommands.d.ts +4 -7
  62. package/dist/cli/targetCommands.js +16 -46
  63. package/dist/cli/targetConfigPreparedPlan.d.ts +3 -0
  64. package/dist/cli/targetConfigPreparedPlan.js +74 -0
  65. package/dist/cli/targetConfigResolver.d.ts +3 -0
  66. package/dist/cli/targetConfigResolver.js +111 -0
  67. package/dist/cli/targetConfigResolverCommand.d.ts +6 -0
  68. package/dist/cli/targetConfigResolverCommand.js +43 -0
  69. package/dist/cli/targetConfigResolverContracts.d.ts +56 -0
  70. package/dist/cli/targetConfigResolverContracts.js +30 -0
  71. package/dist/cli/targetConfigResolverDocker.d.ts +4 -0
  72. package/dist/cli/targetConfigResolverDocker.js +47 -0
  73. package/dist/cli/targetConfigResolverValidation.d.ts +10 -0
  74. package/dist/cli/targetConfigResolverValidation.js +94 -0
  75. package/dist/cli/targetDefaultAuthorities.d.ts +2 -0
  76. package/dist/cli/targetDefaultAuthorities.js +3 -0
  77. package/dist/cli/targetDefaultConfig.d.ts +7 -0
  78. package/dist/cli/targetDefaultConfig.js +22 -5
  79. package/dist/cli/targetDefaultConfigStdin.js +7 -1
  80. package/dist/cli/targetDefaultHandlerFactory.js +23 -2
  81. package/dist/cli/targetDefaultHandlers.d.ts +2 -2
  82. package/dist/cli/targetProductionCommands.d.ts +5 -0
  83. package/dist/cli/targetProductionCommands.js +45 -0
  84. package/dist/cli/trainCommand.d.ts +3 -0
  85. package/dist/cli/trainCommand.js +114 -0
  86. package/dist/cli/upCommand.js +40 -7
  87. package/dist/cli/upLifecycleRecovery.d.ts +2 -2
  88. package/dist/cli/upLifecycleRecovery.js +188 -44
  89. package/dist/cli/usageCommand.d.ts +40 -0
  90. package/dist/cli/usageCommand.js +284 -0
  91. package/dist/cli/usageCommandLive.d.ts +84 -0
  92. package/dist/cli/usageCommandLive.js +95 -0
  93. package/dist/cli/usageDeploymentSource.d.ts +9 -0
  94. package/dist/cli/usageDeploymentSource.js +22 -0
  95. package/dist/cli/volumeCommands.d.ts +8 -0
  96. package/dist/cli/volumeCommands.js +53 -0
  97. package/dist/cli/workspaceResourceMigrationCommand.d.ts +8 -0
  98. package/dist/cli/workspaceResourceMigrationCommand.js +36 -0
  99. package/dist/compiler/agentNodeMerge.js +3 -2
  100. package/dist/compiler/buildCompilePlan.js +4 -0
  101. package/dist/compiler/buildCompilePlanAgent.js +3 -1
  102. package/dist/compiler/buildCompilePlanTeams.d.ts +1 -1
  103. package/dist/compiler/buildCompilePlanTeams.js +6 -1
  104. package/dist/compiler/buildCompilePlanTraversal.js +2 -0
  105. package/dist/compiler/buildCompilePlanTraversalHelpers.d.ts +2 -2
  106. package/dist/compiler/buildCompilePlanTraversalHelpers.js +4 -3
  107. package/dist/compiler/buildProject.d.ts +10 -0
  108. package/dist/compiler/buildProject.js +14 -2
  109. package/dist/compiler/cleanCompileOutput.d.ts +2 -0
  110. package/dist/compiler/cleanCompileOutput.js +14 -0
  111. package/dist/compiler/compilePlanHelpers.js +5 -0
  112. package/dist/compiler/compileProject.d.ts +12 -0
  113. package/dist/compiler/compileProject.js +33 -3
  114. package/dist/compiler/compileProjectSupport.js +9 -0
  115. package/dist/compiler/containerArtifactSummaries.js +1 -0
  116. package/dist/compiler/containerArtifacts.d.ts +7 -5
  117. package/dist/compiler/containerArtifacts.js +77 -41
  118. package/dist/compiler/containerArtifactsPlans.d.ts +1 -1
  119. package/dist/compiler/containerArtifactsPlans.js +31 -7
  120. package/dist/compiler/containerArtifactsRender.d.ts +2 -1
  121. package/dist/compiler/containerArtifactsRender.js +91 -58
  122. package/dist/compiler/containerArtifactsTypes.d.ts +15 -0
  123. package/dist/compiler/containerBackedMountRender.d.ts +56 -0
  124. package/dist/compiler/containerBackedMountRender.js +101 -0
  125. package/dist/compiler/containerDaimonBrokerRender.d.ts +114 -0
  126. package/dist/compiler/containerDaimonBrokerRender.js +194 -0
  127. package/dist/compiler/containerDaimonGrokTaskClock.d.ts +5 -0
  128. package/dist/compiler/containerDaimonGrokTaskClock.js +29 -0
  129. package/dist/compiler/containerDaimonGrokWorkerProvisioning.d.ts +38 -0
  130. package/dist/compiler/containerDaimonGrokWorkerProvisioning.js +130 -0
  131. package/dist/compiler/containerDaimonGrokWorkerRender.d.ts +197 -0
  132. package/dist/compiler/containerDaimonGrokWorkerRender.js +281 -0
  133. package/dist/compiler/containerDaimonOwnershipGuardRender.d.ts +25 -0
  134. package/dist/compiler/containerDaimonOwnershipGuardRender.js +204 -0
  135. package/dist/compiler/containerDaimonUidEntrypointRender.d.ts +24 -0
  136. package/dist/compiler/containerDaimonUidEntrypointRender.js +291 -0
  137. package/dist/compiler/containerEntrypointRender.d.ts +7 -0
  138. package/dist/compiler/containerEntrypointRender.js +28 -22
  139. package/dist/compiler/containerPersistentMounts.d.ts +30 -0
  140. package/dist/compiler/containerPersistentMounts.js +66 -0
  141. package/dist/compiler/containerReadinessPaths.d.ts +1 -0
  142. package/dist/compiler/containerReadinessPaths.js +1 -0
  143. package/dist/compiler/containerRuntimeLinkMaterializer.d.ts +2 -0
  144. package/dist/compiler/containerRuntimeLinkMaterializer.js +12 -0
  145. package/dist/compiler/containerRuntimeReadinessRender.d.ts +7 -0
  146. package/dist/compiler/containerRuntimeReadinessRender.js +40 -0
  147. package/dist/compiler/containerStateOwnershipRender.d.ts +4 -0
  148. package/dist/compiler/containerStateOwnershipRender.js +75 -0
  149. package/dist/compiler/containerTargetResources.d.ts +32 -1
  150. package/dist/compiler/containerTargetResources.js +115 -15
  151. package/dist/compiler/containerVolumeBootstrap.d.ts +3 -0
  152. package/dist/compiler/containerVolumeBootstrap.js +3 -0
  153. package/dist/compiler/containerWorkspaceResourceRender.js +52 -1
  154. package/dist/compiler/daimonTelemetryArtifacts.d.ts +2 -2
  155. package/dist/compiler/daimonTelemetryArtifacts.js +5 -10
  156. package/dist/compiler/deploymentLineage.d.ts +40 -0
  157. package/dist/compiler/deploymentLineage.js +50 -0
  158. package/dist/compiler/index.d.ts +5 -0
  159. package/dist/compiler/index.js +5 -0
  160. package/dist/compiler/initProject.d.ts +2 -0
  161. package/dist/compiler/initProject.js +39 -1
  162. package/dist/compiler/localMoltnetAuthority.d.ts +64 -0
  163. package/dist/compiler/localMoltnetAuthority.js +177 -0
  164. package/dist/compiler/mcpPlaceholders.d.ts +11 -0
  165. package/dist/compiler/mcpPlaceholders.js +58 -0
  166. package/dist/compiler/mcpServerInheritance.d.ts +18 -0
  167. package/dist/compiler/mcpServerInheritance.js +43 -0
  168. package/dist/compiler/memoryArtifacts.d.ts +1 -1
  169. package/dist/compiler/memoryArtifacts.js +108 -32
  170. package/dist/compiler/modelEnv.d.ts +5 -0
  171. package/dist/compiler/modelEnv.js +8 -2
  172. package/dist/compiler/moltnetArtifactPaths.d.ts +17 -12
  173. package/dist/compiler/moltnetArtifactPaths.js +17 -15
  174. package/dist/compiler/moltnetArtifactTypes.d.ts +11 -0
  175. package/dist/compiler/moltnetArtifacts.d.ts +1 -1
  176. package/dist/compiler/moltnetArtifacts.js +53 -12
  177. package/dist/compiler/moltnetBinaries.d.ts +16 -4
  178. package/dist/compiler/moltnetBinaries.js +46 -6
  179. package/dist/compiler/moltnetClientConfig.js +1 -1
  180. package/dist/compiler/moltnetConfigLowering.d.ts +3 -1
  181. package/dist/compiler/moltnetConfigLowering.js +30 -6
  182. package/dist/compiler/moltnetNodeConfig.js +1 -1
  183. package/dist/compiler/moltnetReleaseAuthority.d.ts +24 -1
  184. package/dist/compiler/moltnetReleaseAuthority.js +33 -4
  185. package/dist/compiler/moltnetRepresentativeResolution.d.ts +1 -1
  186. package/dist/compiler/moltnetRepresentativeResolution.js +2 -2
  187. package/dist/compiler/moltnetResolution.js +9 -15
  188. package/dist/compiler/moltnetRoomMemberships.js +20 -5
  189. package/dist/compiler/moltnetRoomPolicyCompatibility.d.ts +1 -1
  190. package/dist/compiler/moltnetRoomPolicyCompatibility.js +3 -1
  191. package/dist/compiler/moltnetRuntimeConfig.d.ts +1 -1
  192. package/dist/compiler/moltnetRuntimeConfig.js +22 -2
  193. package/dist/compiler/moltnetServerPlans.js +19 -0
  194. package/dist/compiler/organizationExternalParticipants.d.ts +3 -0
  195. package/dist/compiler/organizationExternalParticipants.js +176 -0
  196. package/dist/compiler/organizationIdentity.d.ts +3 -9
  197. package/dist/compiler/organizationIdentity.js +37 -270
  198. package/dist/compiler/organizationIdentityGraph.d.ts +15 -0
  199. package/dist/compiler/organizationIdentityGraph.js +115 -0
  200. package/dist/compiler/organizationReadyEvidence.d.ts +8 -0
  201. package/dist/compiler/organizationReadyEvidence.js +23 -3
  202. package/dist/compiler/preflightCompilePlan.d.ts +9 -0
  203. package/dist/compiler/preflightCompilePlan.js +38 -0
  204. package/dist/compiler/recordingAgentFacts.d.ts +4 -0
  205. package/dist/compiler/recordingAgentFacts.js +35 -0
  206. package/dist/compiler/recordingCapability.d.ts +4 -0
  207. package/dist/compiler/recordingCapability.js +22 -0
  208. package/dist/compiler/recordingReport.d.ts +4 -0
  209. package/dist/compiler/recordingReport.js +18 -0
  210. package/dist/compiler/runProject.d.ts +6 -3
  211. package/dist/compiler/runProject.js +34 -6
  212. package/dist/compiler/runProjectAuth.d.ts +3 -1
  213. package/dist/compiler/runProjectAuth.js +19 -3
  214. package/dist/compiler/runProjectDaimonCodexDocker.d.ts +3 -0
  215. package/dist/compiler/runProjectDaimonCodexDocker.js +36 -0
  216. package/dist/compiler/runProjectDocker.d.ts +8 -4
  217. package/dist/compiler/runProjectDocker.js +43 -18
  218. package/dist/compiler/runProjectDockerDaimonGuards.d.ts +15 -0
  219. package/dist/compiler/runProjectDockerDaimonGuards.js +122 -0
  220. package/dist/compiler/runProjectDockerReservation.d.ts +3 -0
  221. package/dist/compiler/runProjectDockerReservation.js +118 -0
  222. package/dist/compiler/runProjectLifecycle.js +1 -1
  223. package/dist/compiler/surfaces.d.ts +1 -2
  224. package/dist/compiler/surfaces.js +0 -1
  225. package/dist/compiler/syncProjectAuth.js +2 -1
  226. package/dist/compiler/training/broker/clockProbe.d.ts +6 -0
  227. package/dist/compiler/training/broker/clockProbe.js +27 -0
  228. package/dist/compiler/training/broker/declaration.d.ts +47 -0
  229. package/dist/compiler/training/broker/declaration.js +57 -0
  230. package/dist/compiler/training/broker/entrypoint.d.ts +39 -0
  231. package/dist/compiler/training/broker/entrypoint.js +126 -0
  232. package/dist/compiler/training/broker/evaluatorSecrets.d.ts +2 -0
  233. package/dist/compiler/training/broker/evaluatorSecrets.js +60 -0
  234. package/dist/compiler/training/broker/index.d.ts +11 -0
  235. package/dist/compiler/training/broker/index.js +11 -0
  236. package/dist/compiler/training/broker/main.d.ts +2 -0
  237. package/dist/compiler/training/broker/main.js +14 -0
  238. package/dist/compiler/training/broker/paths.d.ts +236 -0
  239. package/dist/compiler/training/broker/paths.js +249 -0
  240. package/dist/compiler/training/broker/processes.d.ts +51 -0
  241. package/dist/compiler/training/broker/processes.js +102 -0
  242. package/dist/compiler/training/broker/projection.d.ts +52 -0
  243. package/dist/compiler/training/broker/projection.js +88 -0
  244. package/dist/compiler/training/broker/provisioning.d.ts +78 -0
  245. package/dist/compiler/training/broker/provisioning.js +231 -0
  246. package/dist/compiler/training/broker/receipt.d.ts +77 -0
  247. package/dist/compiler/training/broker/receipt.js +110 -0
  248. package/dist/compiler/training/broker/registration.d.ts +43 -0
  249. package/dist/compiler/training/broker/registration.js +110 -0
  250. package/dist/compiler/training/broker/reset.d.ts +9 -0
  251. package/dist/compiler/training/broker/reset.js +71 -0
  252. package/dist/compiler/training/broker/runtime.d.ts +22 -0
  253. package/dist/compiler/training/broker/runtime.js +127 -0
  254. package/dist/compiler/training/broker/seccompRoutes.d.ts +31 -0
  255. package/dist/compiler/training/broker/seccompRoutes.js +36 -0
  256. package/dist/compiler/training/broker/supervisor.d.ts +108 -0
  257. package/dist/compiler/training/broker/supervisor.js +172 -0
  258. package/dist/compiler/training/broker/taskClock.d.ts +5 -0
  259. package/dist/compiler/training/broker/taskClock.js +41 -0
  260. package/dist/compiler/training/compiledAgent.d.ts +21 -0
  261. package/dist/compiler/training/compiledAgent.js +62 -0
  262. package/dist/compiler/training/container/contract.d.ts +54 -0
  263. package/dist/compiler/training/container/contract.js +51 -0
  264. package/dist/compiler/training/container/evaluators.d.ts +48 -0
  265. package/dist/compiler/training/container/evaluators.js +50 -0
  266. package/dist/compiler/training/container/grokWriteback.d.ts +8 -0
  267. package/dist/compiler/training/container/grokWriteback.js +26 -0
  268. package/dist/compiler/training/container/index.d.ts +5 -0
  269. package/dist/compiler/training/container/index.js +3 -0
  270. package/dist/compiler/training/container/launch.d.ts +21 -0
  271. package/dist/compiler/training/container/launch.js +264 -0
  272. package/dist/compiler/training/container/nativeSlots.d.ts +14 -0
  273. package/dist/compiler/training/container/nativeSlots.js +13 -0
  274. package/dist/compiler/training/container/outputCopy.d.ts +2 -0
  275. package/dist/compiler/training/container/outputCopy.js +72 -0
  276. package/dist/compiler/training/container/outputVolume.d.ts +27 -0
  277. package/dist/compiler/training/container/outputVolume.js +161 -0
  278. package/dist/compiler/training/container/prepare.d.ts +10 -0
  279. package/dist/compiler/training/container/prepare.js +125 -0
  280. package/dist/compiler/training/container/process.d.ts +14 -0
  281. package/dist/compiler/training/container/process.js +70 -0
  282. package/dist/compiler/training/container/security.d.ts +38 -0
  283. package/dist/compiler/training/container/security.js +68 -0
  284. package/dist/compiler/training/container/subjectIsolation.d.ts +5 -0
  285. package/dist/compiler/training/container/subjectIsolation.js +15 -0
  286. package/dist/compiler/training/context.d.ts +15 -0
  287. package/dist/compiler/training/context.js +93 -0
  288. package/dist/compiler/training/contract.d.ts +144 -0
  289. package/dist/compiler/training/contract.js +36 -0
  290. package/dist/compiler/training/execution.d.ts +417 -0
  291. package/dist/compiler/training/execution.js +160 -0
  292. package/dist/compiler/training/index.d.ts +12 -0
  293. package/dist/compiler/training/index.js +10 -0
  294. package/dist/compiler/training/moments.d.ts +80 -0
  295. package/dist/compiler/training/moments.js +118 -0
  296. package/dist/compiler/training/output.d.ts +2 -0
  297. package/dist/compiler/training/output.js +20 -0
  298. package/dist/compiler/training/plan/contract.d.ts +287 -0
  299. package/dist/compiler/training/plan/contract.js +49 -0
  300. package/dist/compiler/training/plan/index.d.ts +5 -0
  301. package/dist/compiler/training/plan/index.js +4 -0
  302. package/dist/compiler/training/plan/load.d.ts +9 -0
  303. package/dist/compiler/training/plan/load.js +153 -0
  304. package/dist/compiler/training/plan/references.d.ts +19 -0
  305. package/dist/compiler/training/plan/references.js +57 -0
  306. package/dist/compiler/training/plan/resolve.d.ts +4 -0
  307. package/dist/compiler/training/plan/resolve.js +73 -0
  308. package/dist/compiler/training/plan/targets.d.ts +11 -0
  309. package/dist/compiler/training/plan/targets.js +71 -0
  310. package/dist/compiler/training/plan/types.d.ts +36 -0
  311. package/dist/compiler/training/plan/types.js +1 -0
  312. package/dist/compiler/training/preparation/assets/Dockerfile +109 -0
  313. package/dist/compiler/training/preparation/assets/package-lock.json +3787 -0
  314. package/dist/compiler/training/preparation/broker.d.ts +21 -0
  315. package/dist/compiler/training/preparation/broker.js +45 -0
  316. package/dist/compiler/training/preparation/contextModes.d.ts +12 -0
  317. package/dist/compiler/training/preparation/contextModes.js +38 -0
  318. package/dist/compiler/training/preparation/contract.d.ts +207 -0
  319. package/dist/compiler/training/preparation/contract.js +113 -0
  320. package/dist/compiler/training/preparation/copyAssets.d.ts +1 -0
  321. package/dist/compiler/training/preparation/copyAssets.js +8 -0
  322. package/dist/compiler/training/preparation/daimonParent.d.ts +42 -0
  323. package/dist/compiler/training/preparation/daimonParent.js +114 -0
  324. package/dist/compiler/training/preparation/files.d.ts +29 -0
  325. package/dist/compiler/training/preparation/files.js +146 -0
  326. package/dist/compiler/training/preparation/image.d.ts +28 -0
  327. package/dist/compiler/training/preparation/image.js +107 -0
  328. package/dist/compiler/training/preparation/index.d.ts +3 -0
  329. package/dist/compiler/training/preparation/index.js +2 -0
  330. package/dist/compiler/training/preparation/inputs.d.ts +24 -0
  331. package/dist/compiler/training/preparation/inputs.js +101 -0
  332. package/dist/compiler/training/preparation/prepare.d.ts +38 -0
  333. package/dist/compiler/training/preparation/prepare.js +223 -0
  334. package/dist/compiler/training/preparation/scratch.d.ts +8 -0
  335. package/dist/compiler/training/preparation/scratch.js +114 -0
  336. package/dist/compiler/training/repair/compatibility.d.ts +11 -0
  337. package/dist/compiler/training/repair/compatibility.js +34 -0
  338. package/dist/compiler/training/repair/contract.d.ts +840 -0
  339. package/dist/compiler/training/repair/contract.js +33 -0
  340. package/dist/compiler/training/repair/index.d.ts +3 -0
  341. package/dist/compiler/training/repair/index.js +3 -0
  342. package/dist/compiler/training/repair/prepare.d.ts +382 -0
  343. package/dist/compiler/training/repair/prepare.js +78 -0
  344. package/dist/compiler/training/repair/witness.d.ts +352 -0
  345. package/dist/compiler/training/repair/witness.js +48 -0
  346. package/dist/compiler/training/resolution.d.ts +25 -0
  347. package/dist/compiler/training/resolution.js +69 -0
  348. package/dist/compiler/training/rewind/contract.d.ts +321 -0
  349. package/dist/compiler/training/rewind/contract.js +39 -0
  350. package/dist/compiler/training/rewind/deployedResource.d.ts +22 -0
  351. package/dist/compiler/training/rewind/deployedResource.js +19 -0
  352. package/dist/compiler/training/rewind/feed.d.ts +12 -0
  353. package/dist/compiler/training/rewind/feed.js +182 -0
  354. package/dist/compiler/training/rewind/feedContent.d.ts +6 -0
  355. package/dist/compiler/training/rewind/feedContent.js +38 -0
  356. package/dist/compiler/training/rewind/git.d.ts +8 -0
  357. package/dist/compiler/training/rewind/git.js +159 -0
  358. package/dist/compiler/training/rewind/gitArchive.d.ts +2 -0
  359. package/dist/compiler/training/rewind/gitArchive.js +7 -0
  360. package/dist/compiler/training/rewind/gitHistory.d.ts +3 -0
  361. package/dist/compiler/training/rewind/gitHistory.js +55 -0
  362. package/dist/compiler/training/rewind/gitProcess.d.ts +19 -0
  363. package/dist/compiler/training/rewind/gitProcess.js +81 -0
  364. package/dist/compiler/training/rewind/gitTree.d.ts +14 -0
  365. package/dist/compiler/training/rewind/gitTree.js +90 -0
  366. package/dist/compiler/training/rewind/history.d.ts +28 -0
  367. package/dist/compiler/training/rewind/history.js +239 -0
  368. package/dist/compiler/training/rewind/index.d.ts +18 -0
  369. package/dist/compiler/training/rewind/index.js +15 -0
  370. package/dist/compiler/training/rewind/inputs.d.ts +9 -0
  371. package/dist/compiler/training/rewind/inputs.js +67 -0
  372. package/dist/compiler/training/rewind/instant.d.ts +4 -0
  373. package/dist/compiler/training/rewind/instant.js +24 -0
  374. package/dist/compiler/training/rewind/leakCheck.d.ts +10 -0
  375. package/dist/compiler/training/rewind/leakCheck.js +56 -0
  376. package/dist/compiler/training/rewind/leakFeed.d.ts +5 -0
  377. package/dist/compiler/training/rewind/leakFeed.js +25 -0
  378. package/dist/compiler/training/rewind/leakFiles.d.ts +10 -0
  379. package/dist/compiler/training/rewind/leakFiles.js +106 -0
  380. package/dist/compiler/training/rewind/leakGit.d.ts +3 -0
  381. package/dist/compiler/training/rewind/leakGit.js +78 -0
  382. package/dist/compiler/training/rewind/leakGitPayload.d.ts +4 -0
  383. package/dist/compiler/training/rewind/leakGitPayload.js +57 -0
  384. package/dist/compiler/training/rewind/leakInputs.d.ts +7 -0
  385. package/dist/compiler/training/rewind/leakInputs.js +135 -0
  386. package/dist/compiler/training/rewind/leakLayout.d.ts +2 -0
  387. package/dist/compiler/training/rewind/leakLayout.js +17 -0
  388. package/dist/compiler/training/rewind/leakProvenance.d.ts +3 -0
  389. package/dist/compiler/training/rewind/leakProvenance.js +88 -0
  390. package/dist/compiler/training/rewind/materialize.d.ts +136 -0
  391. package/dist/compiler/training/rewind/materialize.js +212 -0
  392. package/dist/compiler/training/rewind/memory.d.ts +10 -0
  393. package/dist/compiler/training/rewind/memory.js +84 -0
  394. package/dist/compiler/training/rewind/memorySchemas.d.ts +87 -0
  395. package/dist/compiler/training/rewind/memorySchemas.js +50 -0
  396. package/dist/compiler/training/rewind/moltnet.d.ts +2 -0
  397. package/dist/compiler/training/rewind/moltnet.js +54 -0
  398. package/dist/compiler/training/rewind/moltnetJson.d.ts +13 -0
  399. package/dist/compiler/training/rewind/moltnetJson.js +180 -0
  400. package/dist/compiler/training/rewind/moltnetSchemas.d.ts +1226 -0
  401. package/dist/compiler/training/rewind/moltnetSchemas.js +75 -0
  402. package/dist/compiler/training/rewind/moltnetSqlite.d.ts +31 -0
  403. package/dist/compiler/training/rewind/moltnetSqlite.js +192 -0
  404. package/dist/compiler/training/rewind/moltnetSqliteData.d.ts +10 -0
  405. package/dist/compiler/training/rewind/moltnetSqliteData.js +113 -0
  406. package/dist/compiler/training/rewind/recordInput.d.ts +40 -0
  407. package/dist/compiler/training/rewind/recordInput.js +49 -0
  408. package/dist/compiler/training/rewind/recordedBundle.d.ts +4 -0
  409. package/dist/compiler/training/rewind/recordedBundle.js +58 -0
  410. package/dist/compiler/training/rewind/recordedCommit.d.ts +2 -0
  411. package/dist/compiler/training/rewind/recordedCommit.js +10 -0
  412. package/dist/compiler/training/rewind/select.d.ts +18 -0
  413. package/dist/compiler/training/rewind/select.js +64 -0
  414. package/dist/compiler/training/rewind/snapshotManifest.d.ts +42 -0
  415. package/dist/compiler/training/rewind/snapshotManifest.js +134 -0
  416. package/dist/compiler/training/rewind/taskClock.d.ts +12 -0
  417. package/dist/compiler/training/rewind/taskClock.js +40 -0
  418. package/dist/compiler/training/rewind/timestamps.d.ts +4 -0
  419. package/dist/compiler/training/rewind/timestamps.js +26 -0
  420. package/dist/compiler/training/rewind/types.d.ts +43 -0
  421. package/dist/compiler/training/rewind/types.js +1 -0
  422. package/dist/compiler/training/rewind/volumes.d.ts +12 -0
  423. package/dist/compiler/training/rewind/volumes.js +58 -0
  424. package/dist/compiler/training/selection.d.ts +7 -0
  425. package/dist/compiler/training/selection.js +15 -0
  426. package/dist/compiler/types.d.ts +7 -2
  427. package/dist/compiler/upProject.d.ts +27 -1
  428. package/dist/compiler/upProject.js +135 -180
  429. package/dist/compiler/upProjectHandoff.d.ts +62 -0
  430. package/dist/compiler/upProjectHandoff.js +204 -0
  431. package/dist/compiler/upReceipt.js +49 -4
  432. package/dist/compiler/updateProjectModels.js +1 -0
  433. package/dist/compiler/view/types.d.ts +1 -1
  434. package/dist/compiler/workspaceBundleArtifacts.d.ts +18 -0
  435. package/dist/compiler/workspaceBundleArtifacts.js +155 -0
  436. package/dist/compiler/workspaceBundleCache.d.ts +23 -0
  437. package/dist/compiler/workspaceBundleCache.js +79 -0
  438. package/dist/compiler/workspaceBundleDependencies.d.ts +21 -0
  439. package/dist/compiler/workspaceBundleDependencies.js +122 -0
  440. package/dist/compiler/workspaceBundleFiles.d.ts +51 -0
  441. package/dist/compiler/workspaceBundleFiles.js +251 -0
  442. package/dist/compiler/workspaceBundleGenerated.d.ts +25 -0
  443. package/dist/compiler/workspaceBundleGenerated.js +103 -0
  444. package/dist/compiler/workspaceBundleGit.d.ts +64 -0
  445. package/dist/compiler/workspaceBundleGit.js +154 -0
  446. package/dist/compiler/workspaceBundleKey.d.ts +34 -0
  447. package/dist/compiler/workspaceBundleKey.js +17 -0
  448. package/dist/compiler/workspaceBundleResolve.d.ts +56 -0
  449. package/dist/compiler/workspaceBundleResolve.js +144 -0
  450. package/dist/compiler/workspaceBundleRun.d.ts +41 -0
  451. package/dist/compiler/workspaceBundleRun.js +79 -0
  452. package/dist/compiler/workspaceBundleTar.d.ts +47 -0
  453. package/dist/compiler/workspaceBundleTar.js +140 -0
  454. package/dist/compiler/workspaceBundleTree.d.ts +15 -0
  455. package/dist/compiler/workspaceBundleTree.js +58 -0
  456. package/dist/compiler/workspaceGitFetch.d.ts +41 -0
  457. package/dist/compiler/workspaceGitFetch.js +155 -0
  458. package/dist/compiler/workspaceGitPins.d.ts +33 -0
  459. package/dist/compiler/workspaceGitPins.js +127 -0
  460. package/dist/compiler/workspaceResources.d.ts +9 -2
  461. package/dist/compiler/workspaceResources.js +39 -7
  462. package/dist/deployment/activation.d.ts +3 -0
  463. package/dist/deployment/activation.js +12 -0
  464. package/dist/deployment/artifactsExportPlan.js +51 -1
  465. package/dist/deployment/canaryCutover.d.ts +42 -0
  466. package/dist/deployment/canaryCutover.js +140 -0
  467. package/dist/deployment/candidateDiagnostics.d.ts +15 -0
  468. package/dist/deployment/candidateDiagnostics.js +90 -0
  469. package/dist/deployment/candidateRecording.d.ts +8 -0
  470. package/dist/deployment/candidateRecording.js +22 -0
  471. package/dist/deployment/dockerLogs.js +4 -1
  472. package/dist/deployment/dockerManager.d.ts +5 -3
  473. package/dist/deployment/dockerManager.js +21 -5
  474. package/dist/deployment/dockerProbeGateway.d.ts +17 -0
  475. package/dist/deployment/dockerProbeGateway.js +17 -2
  476. package/dist/deployment/downDeployment.d.ts +7 -0
  477. package/dist/deployment/downDeployment.js +114 -9
  478. package/dist/deployment/downReceiptTypes.d.ts +17 -2
  479. package/dist/deployment/downReceiptTypes.js +17 -2
  480. package/dist/deployment/homeStore.d.ts +9 -1
  481. package/dist/deployment/homeStore.js +16 -53
  482. package/dist/deployment/index.d.ts +10 -0
  483. package/dist/deployment/index.js +10 -0
  484. package/dist/deployment/lifecycleCompletionContracts.d.ts +66 -0
  485. package/dist/deployment/lifecycleCompletionContracts.js +34 -0
  486. package/dist/deployment/lifecycleCompletionPaths.d.ts +4 -1
  487. package/dist/deployment/lifecycleCompletionPaths.js +3 -0
  488. package/dist/deployment/lifecycleCompletionPublication.d.ts +2 -0
  489. package/dist/deployment/lifecycleCompletionPublication.js +18 -4
  490. package/dist/deployment/lifecycleCompletionStore.d.ts +1 -1
  491. package/dist/deployment/lifecycleCompletionStore.js +7 -7
  492. package/dist/deployment/lifecycleUpRecords.d.ts +11 -0
  493. package/dist/deployment/lifecycleUpRecords.js +127 -0
  494. package/dist/deployment/native/AGENTS.md +11 -0
  495. package/dist/deployment/native/rename-noreplace-arm64 +0 -0
  496. package/dist/deployment/native/rename-noreplace-arm64.provenance.json +1 -0
  497. package/dist/deployment/native/rename-noreplace-x64 +0 -0
  498. package/dist/deployment/native/rename-noreplace-x64.provenance.json +1 -0
  499. package/dist/deployment/noReplaceActivation.d.ts +17 -0
  500. package/dist/deployment/noReplaceActivation.js +50 -0
  501. package/dist/deployment/organizationHandoffAuthorityFsBudget.d.ts +110 -0
  502. package/dist/deployment/organizationHandoffAuthorityFsBudget.js +156 -0
  503. package/dist/deployment/organizationHandoffAuthorityFsClient.js +82 -27
  504. package/dist/deployment/organizationHandoffAuthorityFsElection.d.ts +21 -0
  505. package/dist/deployment/organizationHandoffAuthorityFsElection.js +57 -0
  506. package/dist/deployment/organizationHandoffAuthorityFsWorker.js +254 -108
  507. package/dist/deployment/organizationHandoffAuthorityFsWorkerStall.fixture.d.ts +1 -0
  508. package/dist/deployment/organizationHandoffAuthorityFsWorkerStall.fixture.js +16 -0
  509. package/dist/deployment/organizationHandoffAuthorityStore.js +14 -7
  510. package/dist/deployment/organizationHandoffAuthorityTypes.d.ts +2 -2
  511. package/dist/deployment/organizationHandoffAuthorityTypes.js +2 -1
  512. package/dist/deployment/organizationReady.d.ts +2 -0
  513. package/dist/deployment/organizationReady.js +36 -4
  514. package/dist/deployment/pidLock.d.ts +25 -0
  515. package/dist/deployment/pidLock.js +81 -0
  516. package/dist/deployment/productStateClone.d.ts +43 -0
  517. package/dist/deployment/productStateClone.js +319 -0
  518. package/dist/deployment/record.d.ts +85 -1
  519. package/dist/deployment/record.js +11 -5
  520. package/dist/deployment/recordPublication.d.ts +15 -0
  521. package/dist/deployment/recordPublication.js +76 -0
  522. package/dist/deployment/recordedMemoryRetention.d.ts +18 -0
  523. package/dist/deployment/recordedMemoryRetention.js +27 -0
  524. package/dist/deployment/resourceLog.d.ts +140 -0
  525. package/dist/deployment/resourceLog.js +78 -0
  526. package/dist/deployment/upLifecycleRecoveryState.d.ts +23 -0
  527. package/dist/deployment/upLifecycleRecoveryState.js +12 -0
  528. package/dist/deployment/upReceiptTypes.d.ts +32 -6
  529. package/dist/deployment/upReceiptTypes.js +29 -2
  530. package/dist/deployment/workspaceResourceMigration.d.ts +55 -0
  531. package/dist/deployment/workspaceResourceMigration.js +315 -0
  532. package/dist/dev/project.d.ts +7 -0
  533. package/dist/dev/project.js +9 -0
  534. package/dist/distribution/buildDistributionReport.d.ts +3 -0
  535. package/dist/distribution/buildDistributionReport.js +5 -0
  536. package/dist/distribution/consumeImage.d.ts +5 -0
  537. package/dist/distribution/consumeImage.js +115 -98
  538. package/dist/distribution/consumeImageDaimonDocker.d.ts +3 -0
  539. package/dist/distribution/consumeImageDaimonDocker.js +45 -0
  540. package/dist/distribution/consumeImageLifecycle.d.ts +20 -0
  541. package/dist/distribution/consumeImageLifecycle.js +242 -0
  542. package/dist/distribution/consumeImageSupport.d.ts +19 -0
  543. package/dist/distribution/consumeImageSupport.js +40 -0
  544. package/dist/distribution/distributionReportSchema.d.ts +58 -1
  545. package/dist/distribution/distributionReportSchema.js +35 -2
  546. package/dist/distribution/dockerRunner.d.ts +6 -1
  547. package/dist/distribution/dockerRunner.js +31 -4
  548. package/dist/distribution/imageRuntimeAuth.d.ts +9 -1
  549. package/dist/distribution/imageRuntimeAuth.js +70 -1
  550. package/dist/distribution/index.d.ts +1 -1
  551. package/dist/distribution/index.js +1 -1
  552. package/dist/distribution/preflight.js +5 -1
  553. package/dist/distribution/renderImageInterface.js +1 -1
  554. package/dist/distribution/types.d.ts +29 -1
  555. package/dist/distribution/types.js +3 -0
  556. package/dist/evidenceExportHelper/boundedExecutor.d.ts +3 -0
  557. package/dist/evidenceExportHelper/boundedExecutor.js +33 -0
  558. package/dist/evidenceExportHelper/helperProgram.mjs +156 -0
  559. package/dist/evidenceExportHelper/index.d.ts +4 -0
  560. package/dist/evidenceExportHelper/index.js +4 -0
  561. package/dist/evidenceExportHelper/preparedAuthority.d.ts +64 -0
  562. package/dist/evidenceExportHelper/preparedAuthority.js +228 -0
  563. package/dist/evidenceExportHelper/preparedBuilder.d.ts +10 -0
  564. package/dist/evidenceExportHelper/preparedBuilder.js +183 -0
  565. package/dist/evidenceExportHelper/preparedBuilderTypes.d.ts +19 -0
  566. package/dist/evidenceExportHelper/preparedBuilderTypes.js +1 -0
  567. package/dist/evidenceExportHelper/recipe.d.ts +7 -0
  568. package/dist/evidenceExportHelper/recipe.js +83 -0
  569. package/dist/filesystem/durableWrite.d.ts +10 -0
  570. package/dist/filesystem/durableWrite.js +87 -0
  571. package/dist/filesystem/index.d.ts +2 -0
  572. package/dist/filesystem/index.js +2 -0
  573. package/dist/filesystem/io.d.ts +2 -0
  574. package/dist/filesystem/io.js +16 -1
  575. package/dist/filesystem/retainedJsonl.d.ts +23 -0
  576. package/dist/filesystem/retainedJsonl.js +123 -0
  577. package/dist/manifest/commandSchemas.d.ts +5 -0
  578. package/dist/manifest/commandSchemas.js +5 -0
  579. package/dist/manifest/executionSchemas.d.ts +47 -0
  580. package/dist/manifest/executionSchemas.js +31 -2
  581. package/dist/manifest/index.d.ts +2 -0
  582. package/dist/manifest/index.js +2 -0
  583. package/dist/manifest/loadManifest.js +3 -26
  584. package/dist/manifest/mcpSchemas.d.ts +62 -0
  585. package/dist/manifest/mcpSchemas.js +57 -8
  586. package/dist/manifest/memorySchemas.d.ts +1 -1
  587. package/dist/manifest/memorySchemas.js +1 -1
  588. package/dist/manifest/parseManifest.d.ts +7 -0
  589. package/dist/manifest/parseManifest.js +65 -0
  590. package/dist/manifest/renderSpawnfile.js +4 -1
  591. package/dist/manifest/renderSpawnfileNetworks.js +11 -0
  592. package/dist/manifest/renderSpawnfileWorkspace.js +10 -1
  593. package/dist/manifest/scheduleSchemas.d.ts +3 -1
  594. package/dist/manifest/scheduleSchemas.js +91 -5
  595. package/dist/manifest/schemas.d.ts +1419 -120
  596. package/dist/manifest/schemas.js +19 -6
  597. package/dist/manifest/teamNetworkAccessSchemas.d.ts +5 -1
  598. package/dist/manifest/teamNetworkAccessSchemas.js +11 -0
  599. package/dist/manifest/teamNetworkAuthSchemas.d.ts +1 -1
  600. package/dist/manifest/teamNetworkSchemas.d.ts +18 -4
  601. package/dist/manifest/teamNetworkSchemas.js +19 -1
  602. package/dist/manifest/teamNetworkServerSchemas.d.ts +8 -3
  603. package/dist/manifest/teamNetworkServerSchemas.js +18 -2
  604. package/dist/manifest/trainingDataSchemas.d.ts +357 -0
  605. package/dist/manifest/trainingDataSchemas.js +31 -0
  606. package/dist/manifest/trainingSchemas.d.ts +49 -0
  607. package/dist/manifest/trainingSchemas.js +44 -0
  608. package/dist/manifest/volumeFeedSchemas.d.ts +52 -0
  609. package/dist/manifest/volumeFeedSchemas.js +104 -0
  610. package/dist/manifest/workspaceSchemas.d.ts +194 -1
  611. package/dist/manifest/workspaceSchemas.js +117 -2
  612. package/dist/recording/compose.d.ts +3 -0
  613. package/dist/recording/compose.js +93 -0
  614. package/dist/recording/deployment.d.ts +15 -0
  615. package/dist/recording/deployment.js +38 -0
  616. package/dist/recording/history.d.ts +16 -0
  617. package/dist/recording/history.js +47 -0
  618. package/dist/recording/index.d.ts +9 -0
  619. package/dist/recording/index.js +9 -0
  620. package/dist/recording/moment.d.ts +61 -0
  621. package/dist/recording/moment.js +36 -0
  622. package/dist/recording/parse.d.ts +15 -0
  623. package/dist/recording/parse.js +74 -0
  624. package/dist/recording/read.d.ts +8 -0
  625. package/dist/recording/read.js +61 -0
  626. package/dist/recording/store.d.ts +10 -0
  627. package/dist/recording/store.js +94 -0
  628. package/dist/recording/sync.d.ts +24 -0
  629. package/dist/recording/sync.js +126 -0
  630. package/dist/recording/types.d.ts +45 -0
  631. package/dist/recording/types.js +2 -0
  632. package/dist/release/drainControl.d.ts +54 -0
  633. package/dist/release/drainControl.js +137 -0
  634. package/dist/release/drainPhase.d.ts +37 -0
  635. package/dist/release/drainPhase.js +161 -0
  636. package/dist/release/index.d.ts +11 -0
  637. package/dist/release/index.js +11 -0
  638. package/dist/release/ledger.d.ts +75 -0
  639. package/dist/release/ledger.js +111 -0
  640. package/dist/release/notify.d.ts +58 -0
  641. package/dist/release/notify.js +126 -0
  642. package/dist/release/pending.d.ts +35 -0
  643. package/dist/release/pending.js +60 -0
  644. package/dist/release/postDeploy.d.ts +32 -0
  645. package/dist/release/postDeploy.js +62 -0
  646. package/dist/release/releaseDefaults.d.ts +9 -0
  647. package/dist/release/releaseDefaults.js +115 -0
  648. package/dist/release/releaseDocker.d.ts +38 -0
  649. package/dist/release/releaseDocker.js +94 -0
  650. package/dist/release/releaseTypes.d.ts +94 -0
  651. package/dist/release/releaseTypes.js +1 -0
  652. package/dist/release/runRelease.d.ts +9 -0
  653. package/dist/release/runRelease.js +218 -0
  654. package/dist/release/swap.d.ts +23 -0
  655. package/dist/release/swap.js +55 -0
  656. package/dist/release/types.d.ts +50 -0
  657. package/dist/release/types.js +29 -0
  658. package/dist/report/index.d.ts +1 -0
  659. package/dist/report/index.js +1 -0
  660. package/dist/report/recording.d.ts +57 -0
  661. package/dist/report/recording.js +26 -0
  662. package/dist/report/types.d.ts +92 -4
  663. package/dist/runtime/common.d.ts +28 -1
  664. package/dist/runtime/common.js +33 -3
  665. package/dist/runtime/container.js +46 -35
  666. package/dist/runtime/daimon/adapter.d.ts +14 -0
  667. package/dist/runtime/daimon/adapter.js +254 -0
  668. package/dist/runtime/daimon/attention.d.ts +8 -0
  669. package/dist/runtime/daimon/attention.js +32 -0
  670. package/dist/runtime/daimon/config.d.ts +29 -0
  671. package/dist/runtime/daimon/config.js +321 -0
  672. package/dist/runtime/daimon/contract-manifest.json +1 -0
  673. package/dist/runtime/daimon/contract-manifest.sha256 +1 -0
  674. package/dist/runtime/daimon/contractManifest.d.ts +346 -0
  675. package/dist/runtime/daimon/contractManifest.js +335 -0
  676. package/dist/runtime/daimon/grokModel.d.ts +19 -0
  677. package/dist/runtime/daimon/grokModel.js +33 -0
  678. package/dist/runtime/daimon/grokTurnLimits.d.ts +25 -0
  679. package/dist/runtime/daimon/grokTurnLimits.js +51 -0
  680. package/dist/runtime/daimon/grokWorkerConfigBytes.d.ts +43 -0
  681. package/dist/runtime/daimon/grokWorkerConfigBytes.js +53 -0
  682. package/dist/runtime/daimon/grokWorkerContract.d.ts +27 -0
  683. package/dist/runtime/daimon/grokWorkerContract.js +60 -0
  684. package/dist/runtime/daimon/memory.d.ts +57 -0
  685. package/dist/runtime/daimon/memory.js +125 -0
  686. package/dist/runtime/daimon/recording.d.ts +19 -0
  687. package/dist/runtime/daimon/recording.js +50 -0
  688. package/dist/runtime/daimon/runAuth.d.ts +51 -0
  689. package/dist/runtime/daimon/runAuth.js +279 -0
  690. package/dist/runtime/daimon/runtimeIdentity.d.ts +22 -0
  691. package/dist/runtime/daimon/runtimeIdentity.js +22 -0
  692. package/dist/runtime/daimon/scheduleAuthority.d.ts +11 -0
  693. package/dist/runtime/daimon/scheduleAuthority.js +31 -0
  694. package/dist/runtime/daimon/wakeMoments.d.ts +15 -0
  695. package/dist/runtime/daimon/wakeMoments.js +17 -0
  696. package/dist/runtime/daimonInstall.d.ts +3 -0
  697. package/dist/runtime/daimonInstall.js +25 -0
  698. package/dist/runtime/index.d.ts +5 -0
  699. package/dist/runtime/index.js +5 -0
  700. package/dist/runtime/install.d.ts +5 -0
  701. package/dist/runtime/install.js +4 -0
  702. package/dist/runtime/localDaimonAuthority.d.ts +11 -0
  703. package/dist/runtime/localDaimonAuthority.js +77 -0
  704. package/dist/runtime/mnemeMcp.d.ts +13 -0
  705. package/dist/runtime/mnemeMcp.js +26 -0
  706. package/dist/runtime/openclaw/adapter.js +5 -2
  707. package/dist/runtime/pi/adapter.d.ts +0 -1
  708. package/dist/runtime/pi/adapter.js +5 -6
  709. package/dist/runtime/pi/appCliSource.js +1 -1
  710. package/dist/runtime/pi/appScheduleSource.js +6 -2
  711. package/dist/runtime/pi/appTemplateTypes.d.ts +1 -1
  712. package/dist/runtime/pi/containerTargets.js +6 -0
  713. package/dist/runtime/picoclaw/adapter.js +5 -2
  714. package/dist/runtime/registry.d.ts +6 -0
  715. package/dist/runtime/registry.js +32 -3
  716. package/dist/runtime/scheduleUtils.d.ts +1 -0
  717. package/dist/runtime/scheduleUtils.js +5 -1
  718. package/dist/runtime/types.d.ts +40 -0
  719. package/dist/runtime/usageLedger.d.ts +158 -0
  720. package/dist/runtime/usageLedger.js +269 -0
  721. package/dist/runtime/usageLedgerRead.d.ts +54 -0
  722. package/dist/runtime/usageLedgerRead.js +102 -0
  723. package/dist/runtime/usageRequestLedger.d.ts +42 -0
  724. package/dist/runtime/usageRequestLedger.js +72 -0
  725. package/dist/shared/daimonCodexDocker.d.ts +32 -0
  726. package/dist/shared/daimonCodexDocker.js +120 -0
  727. package/dist/shared/daimonGrokSeccompProfile.d.ts +10 -0
  728. package/dist/shared/daimonGrokSeccompProfile.js +11 -0
  729. package/dist/shared/index.d.ts +3 -0
  730. package/dist/shared/index.js +3 -0
  731. package/dist/shared/recording.d.ts +8 -0
  732. package/dist/shared/recording.js +25 -0
  733. package/dist/shared/types.d.ts +1 -1
  734. package/dist/shared/volumeNames.d.ts +6 -0
  735. package/dist/shared/volumeNames.js +14 -0
  736. package/dist/target/dockerArtifactsProvider.js +34 -7
  737. package/dist/target/dockerBaseImage.d.ts +2 -0
  738. package/dist/target/dockerBaseImage.js +11 -0
  739. package/dist/target/dockerCommandExecutor.d.ts +11 -0
  740. package/dist/target/dockerCommandExecutor.js +53 -2
  741. package/dist/target/dockerCommandExecutorCore.d.ts +2 -1
  742. package/dist/target/dockerCommandExecutorCore.js +5 -3
  743. package/dist/target/dockerPublicArtifactSnapshot.d.ts +3 -3
  744. package/dist/target/dockerPublicArtifactSnapshot.js +17 -33
  745. package/dist/target/dockerTarget.d.ts +1 -0
  746. package/dist/target/dockerTargetBinding.d.ts +1 -2
  747. package/dist/target/dockerTargetBinding.js +4 -4
  748. package/dist/target/dockerTargetExecFile.d.ts +19 -0
  749. package/dist/target/dockerTargetExecFile.js +194 -0
  750. package/dist/target/dockerWorldServiceProvider.d.ts +4 -0
  751. package/dist/target/dockerWorldServiceProvider.js +13 -1
  752. package/dist/target/evidenceExport.d.ts +3 -1
  753. package/dist/target/evidenceExport.js +12 -3
  754. package/dist/target/evidenceExportOperationsTestKit.js +3 -3
  755. package/dist/target/evidenceExportProvider.d.ts +2 -0
  756. package/dist/target/evidenceExportProvider.js +15 -5
  757. package/dist/target/publicArtifactSnapshot.d.ts +31 -0
  758. package/dist/target/publicArtifactSnapshot.js +37 -3
  759. package/dist/volume/feedLand.d.ts +31 -0
  760. package/dist/volume/feedLand.js +174 -0
  761. package/dist/volume/feedLandings.d.ts +45 -0
  762. package/dist/volume/feedLandings.js +111 -0
  763. package/dist/volume/feedLayout.d.ts +61 -0
  764. package/dist/volume/feedLayout.js +234 -0
  765. package/dist/volume/feedLock.d.ts +7 -0
  766. package/dist/volume/feedLock.js +131 -0
  767. package/dist/volume/feedManifest.d.ts +27 -0
  768. package/dist/volume/feedManifest.js +123 -0
  769. package/dist/volume/feedPrepare.d.ts +16 -0
  770. package/dist/volume/feedPrepare.js +228 -0
  771. package/dist/volume/feedProject.d.ts +39 -0
  772. package/dist/volume/feedProject.js +92 -0
  773. package/dist/volume/feedRecord.d.ts +55 -0
  774. package/dist/volume/feedRecord.js +148 -0
  775. package/dist/volume/feedRef.d.ts +43 -0
  776. package/dist/volume/feedRef.js +117 -0
  777. package/dist/volume/feedRefresh.d.ts +15 -0
  778. package/dist/volume/feedRefresh.js +187 -0
  779. package/dist/volume/feedSource.d.ts +66 -0
  780. package/dist/volume/feedSource.js +104 -0
  781. package/dist/volume/feedTarget.d.ts +70 -0
  782. package/dist/volume/feedTarget.js +9 -0
  783. package/dist/volume/feedTestKit.d.ts +11 -0
  784. package/dist/volume/feedTestKit.js +45 -0
  785. package/dist/volume/feedVerify.d.ts +18 -0
  786. package/dist/volume/feedVerify.js +104 -0
  787. package/dist/volume/index.d.ts +13 -0
  788. package/dist/volume/index.js +13 -0
  789. package/examples/README.md +45 -0
  790. package/examples/agent-with-subagents/AGENTS.md +3 -0
  791. package/examples/agent-with-subagents/Spawnfile +30 -0
  792. package/examples/agent-with-subagents/subagents/critic/AGENTS.md +3 -0
  793. package/examples/agent-with-subagents/subagents/critic/Spawnfile +15 -0
  794. package/examples/agent-with-subagents/subagents/researcher/AGENTS.md +3 -0
  795. package/examples/agent-with-subagents/subagents/researcher/Spawnfile +17 -0
  796. package/examples/daimon-org/Spawnfile +68 -0
  797. package/examples/daimon-org/TEAM.md +4 -0
  798. package/examples/daimon-org/agents/mapper/AGENTS.md +4 -0
  799. package/examples/daimon-org/agents/mapper/Spawnfile +37 -0
  800. package/examples/daimon-org/shared/skills/file-note/SKILL.md +9 -0
  801. package/examples/daimon-org/teams/review/Spawnfile +53 -0
  802. package/examples/daimon-org/teams/review/agents/reviewer/AGENTS.md +4 -0
  803. package/examples/daimon-org/teams/review/agents/reviewer/Spawnfile +37 -0
  804. package/examples/daimon-public-host/AGENTS.md +3 -0
  805. package/examples/daimon-public-host/Spawnfile +21 -0
  806. package/examples/distribution-org/Spawnfile +43 -0
  807. package/examples/distribution-org/TEAM.md +4 -0
  808. package/examples/distribution-org/agents/coordinator/AGENTS.md +1 -0
  809. package/examples/distribution-org/agents/coordinator/Spawnfile +20 -0
  810. package/examples/distribution-org/agents/researcher/AGENTS.md +1 -0
  811. package/examples/distribution-org/agents/researcher/Spawnfile +20 -0
  812. package/examples/jungian-daimon-org/Spawnfile +41 -0
  813. package/examples/jungian-daimon-org/TEAM.md +21 -0
  814. package/examples/jungian-daimon-org/teams/luna/Spawnfile +47 -0
  815. package/examples/jungian-daimon-org/teams/luna/TEAM.md +4 -0
  816. package/examples/jungian-daimon-org/teams/luna/agents/animus/AGENTS.md +10 -0
  817. package/examples/jungian-daimon-org/teams/luna/agents/animus/Spawnfile +33 -0
  818. package/examples/jungian-daimon-org/teams/luna/agents/representative/AGENTS.md +21 -0
  819. package/examples/jungian-daimon-org/teams/luna/agents/representative/Spawnfile +30 -0
  820. package/examples/jungian-daimon-org/teams/luna/agents/shadow/AGENTS.md +10 -0
  821. package/examples/jungian-daimon-org/teams/luna/agents/shadow/Spawnfile +33 -0
  822. package/examples/jungian-daimon-org/teams/selene/Spawnfile +47 -0
  823. package/examples/jungian-daimon-org/teams/selene/TEAM.md +4 -0
  824. package/examples/jungian-daimon-org/teams/selene/agents/animus/AGENTS.md +10 -0
  825. package/examples/jungian-daimon-org/teams/selene/agents/animus/Spawnfile +33 -0
  826. package/examples/jungian-daimon-org/teams/selene/agents/representative/AGENTS.md +19 -0
  827. package/examples/jungian-daimon-org/teams/selene/agents/representative/Spawnfile +33 -0
  828. package/examples/jungian-daimon-org/teams/selene/agents/shadow/AGENTS.md +10 -0
  829. package/examples/jungian-daimon-org/teams/selene/agents/shadow/Spawnfile +30 -0
  830. package/examples/mixed-runtime-org/Spawnfile +71 -0
  831. package/examples/mixed-runtime-org/TEAM.md +8 -0
  832. package/examples/mixed-runtime-org/agents/analyst/AGENTS.md +8 -0
  833. package/examples/mixed-runtime-org/agents/analyst/Spawnfile +27 -0
  834. package/examples/mixed-runtime-org/agents/conductor/AGENTS.md +8 -0
  835. package/examples/mixed-runtime-org/agents/conductor/Spawnfile +27 -0
  836. package/examples/mixed-runtime-org/agents/localist/AGENTS.md +7 -0
  837. package/examples/mixed-runtime-org/agents/localist/Spawnfile +50 -0
  838. package/examples/moltnet-team-chat/Spawnfile +43 -0
  839. package/examples/moltnet-team-chat/TEAM.md +5 -0
  840. package/examples/moltnet-team-chat/agents/coordinator/AGENTS.md +9 -0
  841. package/examples/moltnet-team-chat/agents/coordinator/Spawnfile +26 -0
  842. package/examples/moltnet-team-chat/teams/analysis/Spawnfile +23 -0
  843. package/examples/moltnet-team-chat/teams/analysis/TEAM.md +3 -0
  844. package/examples/moltnet-team-chat/teams/analysis/agents/observer/AGENTS.md +5 -0
  845. package/examples/moltnet-team-chat/teams/analysis/agents/observer/Spawnfile +19 -0
  846. package/examples/moltnet-team-chat/teams/analysis/agents/representative/AGENTS.md +5 -0
  847. package/examples/moltnet-team-chat/teams/analysis/agents/representative/Spawnfile +19 -0
  848. package/examples/moltnet-team-chat/teams/field/Spawnfile +41 -0
  849. package/examples/moltnet-team-chat/teams/field/TEAM.md +3 -0
  850. package/examples/moltnet-team-chat/teams/field/agents/observer/AGENTS.md +5 -0
  851. package/examples/moltnet-team-chat/teams/field/agents/observer/Spawnfile +26 -0
  852. package/examples/moltnet-team-chat/teams/field/agents/representative/AGENTS.md +11 -0
  853. package/examples/moltnet-team-chat/teams/field/agents/representative/Spawnfile +26 -0
  854. package/examples/single-agent/AGENTS.md +3 -0
  855. package/examples/single-agent/HEARTBEAT.md +3 -0
  856. package/examples/single-agent/IDENTITY.md +3 -0
  857. package/examples/single-agent/MEMORY.md +3 -0
  858. package/examples/single-agent/SOUL.md +3 -0
  859. package/examples/single-agent/Spawnfile +41 -0
  860. package/examples/single-agent/skills/web_search/SKILL.md +6 -0
  861. package/moltnet-releases.json +5 -4
  862. package/package.json +36 -9
  863. package/runtimes.yaml +8 -3
  864. package/dist/cli/targetWorldClockCrossProcess.test-helper.d.ts +0 -13
  865. package/dist/cli/targetWorldClockCrossProcess.test-helper.js +0 -109
  866. package/dist/deployment/providerRuntimeBoundaryScanner.test-helper.d.ts +0 -8
  867. package/dist/deployment/providerRuntimeBoundaryScanner.test-helper.js +0 -60
  868. package/dist/deployment/simfileFixtureBoundary.test-helper.d.ts +0 -8
  869. package/dist/deployment/simfileFixtureBoundary.test-helper.js +0 -103
  870. package/dist/ownership/simfileRunOperatorInputs.d.ts +0 -103
  871. package/dist/ownership/simfileRunOperatorInputs.js +0 -139
  872. package/dist/target/cleanupRunDocker.test-helper.d.ts +0 -67
  873. package/dist/target/cleanupRunDocker.test-helper.js +0 -238
@@ -29,6 +29,54 @@ export const resolveCompiledEngines = (report) => (report.container?.runtime_ins
29
29
  .flatMap((instance) => Object.entries(instance.engine_by_node_id ?? {}))
30
30
  .map(([agent, engine]) => ({ agent, engine }))
31
31
  .sort((left, right) => left.agent.localeCompare(right.agent));
32
+ const createReceiptMoltnetIdentity = (release) => {
33
+ if (!release)
34
+ return undefined;
35
+ // Discriminate on PROVENANCE, never on capability count. A published release
36
+ // now advertises `daimon-bridge` too (moltnet v0.1.18), so `length === 1` would
37
+ // route it into the local-development branch and reject it for lacking a
38
+ // `development` marker it is never supposed to have.
39
+ //
40
+ // The canonical list lives in `moltnetReleaseAuthority.ts`, but the H2 boundary
41
+ // (`../deployment/organizationHandoffTypes.test.ts`) forbids this file from
42
+ // importing any `moltnet*` module, so the ordering is compared inline here the
43
+ // same way the local branch below already compares it. `upReceiptTypes.ts`'s
44
+ // schema is the authority that rejects any other list on parse.
45
+ const joined = release.capabilities.join("\0");
46
+ const receiptCapabilities = joined === "daimon-bridge\0pi-bridge"
47
+ ? ["daimon-bridge", "pi-bridge"]
48
+ : joined === "pi-bridge" ? ["pi-bridge"] : null;
49
+ if (receiptCapabilities === null) {
50
+ throw new SpawnfileError("runtime_error", "Moltnet receipt advertises unknown bridge capabilities");
51
+ }
52
+ if (!release.development) {
53
+ if (!release.release_version || !release.source_revision) {
54
+ throw new SpawnfileError("runtime_error", "Published Moltnet receipt lacks its pinned source identity");
55
+ }
56
+ return {
57
+ architecture: release.architecture,
58
+ asset: release.asset,
59
+ asset_sha256: release.asset_sha256,
60
+ capabilities: receiptCapabilities,
61
+ release_version: release.release_version,
62
+ source_revision: release.source_revision,
63
+ version: release.version
64
+ };
65
+ }
66
+ if (release.capabilities.join("\0") !== "daimon-bridge\0pi-bridge" ||
67
+ !release.source_sha256) {
68
+ throw new SpawnfileError("runtime_error", "Local Moltnet receipt lacks its development provenance");
69
+ }
70
+ return {
71
+ architecture: release.architecture,
72
+ asset: release.asset,
73
+ asset_sha256: release.asset_sha256,
74
+ capabilities: ["daimon-bridge", "pi-bridge"],
75
+ development: release.development,
76
+ source_sha256: release.source_sha256,
77
+ version: release.version
78
+ };
79
+ };
32
80
  /**
33
81
  * Builds `spawnfile.up-receipt.v1` from a project-path `upProject()` result. Reads back
34
82
  * the deployment record `upProject` already wrote (for `run_id`/deployment name/container
@@ -70,10 +118,7 @@ export const buildUpReceipt = async (inputPath, result) => {
70
118
  compiled_schedule: compiledSchedule,
71
119
  engines: compiledEngines,
72
120
  ...(result.report.container?.moltnet?.release
73
- ? { moltnet_release: {
74
- ...result.report.container.moltnet.release,
75
- capabilities: ["pi-bridge"]
76
- } }
121
+ ? { moltnet_release: createReceiptMoltnetIdentity(result.report.container.moltnet.release) }
77
122
  : {}),
78
123
  ...(record?.organization_handoff ? { organization_handoff: record.organization_handoff } : {}),
79
124
  ...(record?.organization_handoff_handle ? { organization_handoff_handle: record.organization_handoff_handle } : {}),
@@ -9,6 +9,7 @@ const AUTH_METHOD_PROVIDER_HINTS = {
9
9
  "api_key": "use a model provider like openai or anthropic, then pass --auth api_key",
10
10
  "claude-code": "use provider anthropic, then pass --auth claude-code",
11
11
  codex: "use provider openai, then pass --auth codex",
12
+ grok: "use provider xai with a Daimon grok engine agent, then pass --auth grok and declare reasoning_effort",
12
13
  none: "use a model provider like local, then pass --auth none"
13
14
  };
14
15
  const resolveTargetManifestPath = (inputPath) => getManifestPath(path.resolve(inputPath ?? process.cwd()));
@@ -10,7 +10,7 @@ export interface OrganizationViewSkillSummary {
10
10
  }
11
11
  export interface OrganizationViewResourceSummary {
12
12
  id: string;
13
- kind: "git" | "volume";
13
+ kind: "bundle" | "git" | "volume";
14
14
  mode: "mutable" | "readonly";
15
15
  mount: string;
16
16
  sharing: "per_agent" | "team";
@@ -0,0 +1,18 @@
1
+ import type { CompilePlan } from "./types.js";
2
+ export declare const validateWorkspaceBundleTar: (bytes: Buffer) => void;
3
+ export declare const workspaceBundleContextPath: (outputDirectory: string, identity: string) => string;
4
+ /**
5
+ * Hard-links a read-only cached archive into the Docker context (cloning or
6
+ * copying across filesystems). Never writes through an existing name: with
7
+ * `clean: false` it may already be a link into the cache. Returns the staged
8
+ * path, or undefined when the cached archive no longer exists.
9
+ */
10
+ export declare const linkBuiltBundle: (archive: string, outputDirectory: string, identity: string) => Promise<string | undefined>;
11
+ /**
12
+ * Completes the bundle archives in the Docker context. Built bundles were
13
+ * already linked by `resolveWorkspaceBundles` (`built` maps their digests to
14
+ * the staged path). Every `source` tar is hashed, validated and staged from
15
+ * the exact bytes that were verified, even when a built bundle shares its
16
+ * digest; distinct source paths with identical bytes stage once.
17
+ */
18
+ export declare const stageWorkspaceBundles: (outputDirectory: string, plan: CompilePlan, built?: ReadonlyMap<string, string>) => Promise<boolean>;
@@ -0,0 +1,155 @@
1
+ import { createHash } from "node:crypto";
2
+ import { constants } from "node:fs";
3
+ import { copyFile, link, mkdir, readFile, rm, stat, writeFile } from "node:fs/promises";
4
+ import path from "node:path";
5
+ import { SpawnfileError } from "../shared/index.js";
6
+ // Sanity bound for an operator-declared local tar; integrity comes from its digest, not its size.
7
+ const CAP = 536_870_912, BLOCK = 512;
8
+ // Sanity bound on an operator-declared local tar; integrity comes from the declared digest.
9
+ const MAX_WORKSPACE_BUNDLE_ENTRIES = 65_536;
10
+ const fail = (message = "Workspace bundle contains an invalid or unsafe tar entry") => { throw new SpawnfileError("validation_error", message); };
11
+ const textField = (field) => { const nul = field.indexOf(0); return field.subarray(0, nul < 0 ? field.length : nul).toString("utf8"); };
12
+ const octal = (field, allowEmpty = false) => {
13
+ const value = field.toString("ascii").replace(/\0.*$/u, "").trim();
14
+ if (value === "" && allowEmpty)
15
+ return 0;
16
+ if (!/^[0-7]+$/u.test(value))
17
+ fail();
18
+ const parsed = Number.parseInt(value, 8);
19
+ if (!Number.isSafeInteger(parsed) || parsed < 0)
20
+ fail();
21
+ return parsed;
22
+ };
23
+ const validPath = (value, directory) => {
24
+ const name = directory && value.endsWith("/") ? value.slice(0, -1) : value;
25
+ if (!name || name.startsWith("/") || name.includes("\\") || name.includes("\0"))
26
+ fail();
27
+ const parts = name.split("/");
28
+ if (parts.some((part) => !part || part === "." || part === ".."))
29
+ fail();
30
+ return parts.join("/");
31
+ };
32
+ const validChecksum = (header) => {
33
+ const expected = octal(header.subarray(148, 156));
34
+ let actual = 0;
35
+ for (let index = 0; index < BLOCK; index += 1)
36
+ actual += index >= 148 && index < 156 ? 32 : header[index];
37
+ return actual === expected;
38
+ };
39
+ export const validateWorkspaceBundleTar = (bytes) => {
40
+ if (bytes.length < BLOCK * 2 || bytes.length % BLOCK !== 0)
41
+ fail("Workspace bundle is truncated or lacks exact ustar termination");
42
+ let offset = 0, entries = 0, terminated = false;
43
+ const names = new Set();
44
+ while (offset + BLOCK <= bytes.length) {
45
+ const header = bytes.subarray(offset, offset + BLOCK);
46
+ if (header.every((byte) => byte === 0)) {
47
+ if (offset + BLOCK * 2 > bytes.length || !bytes.subarray(offset, offset + BLOCK * 2).every((byte) => byte === 0) || !bytes.subarray(offset + BLOCK * 2).every((byte) => byte === 0))
48
+ fail("Workspace bundle has invalid termination or trailing bytes");
49
+ terminated = true;
50
+ break;
51
+ }
52
+ if (textField(header.subarray(257, 263)) !== "ustar" || !validChecksum(header))
53
+ fail();
54
+ for (const [start, end, empty] of [[100, 108, false], [108, 116, true], [116, 124, true], [124, 136, false], [136, 148, true], [329, 337, true], [337, 345, true]])
55
+ octal(header.subarray(start, end), empty);
56
+ const type = header[156] === 0 ? "0" : String.fromCharCode(header[156]);
57
+ if (type !== "0" && type !== "5")
58
+ fail();
59
+ const size = octal(header.subarray(124, 136));
60
+ if (type === "5" && size !== 0)
61
+ fail();
62
+ const prefix = textField(header.subarray(345, 500)), rawName = textField(header.subarray(0, 100));
63
+ const effective = validPath(prefix ? `${prefix}/${rawName}` : rawName, type === "5");
64
+ if (names.has(effective))
65
+ fail("Workspace bundle contains duplicate effective paths");
66
+ names.add(effective);
67
+ offset += BLOCK + Math.ceil(size / BLOCK) * BLOCK;
68
+ entries += 1;
69
+ if (offset > bytes.length)
70
+ fail("Workspace bundle is truncated or exceeds entry bounds");
71
+ if (entries > MAX_WORKSPACE_BUNDLE_ENTRIES)
72
+ fail("Workspace bundle exceeds the maximum entry count");
73
+ }
74
+ if (!terminated)
75
+ fail("Workspace bundle is truncated or lacks exact ustar termination");
76
+ if (entries === 0)
77
+ fail("Workspace bundle is empty");
78
+ };
79
+ export const workspaceBundleContextPath = (outputDirectory, identity) => path.join(outputDirectory, "container/workspace-bundles", `${identity.slice(7)}.tar`);
80
+ /**
81
+ * Hard-links a read-only cached archive into the Docker context (cloning or
82
+ * copying across filesystems). Never writes through an existing name: with
83
+ * `clean: false` it may already be a link into the cache. Returns the staged
84
+ * path, or undefined when the cached archive no longer exists.
85
+ */
86
+ export const linkBuiltBundle = async (archive, outputDirectory, identity) => {
87
+ const target = workspaceBundleContextPath(outputDirectory, identity);
88
+ await mkdir(path.dirname(target), { recursive: true });
89
+ await rm(target, { force: true });
90
+ try {
91
+ await link(archive, target);
92
+ return target;
93
+ }
94
+ catch (error) {
95
+ if (error.code === "ENOENT")
96
+ return undefined;
97
+ }
98
+ try {
99
+ await copyFile(archive, target, constants.COPYFILE_FICLONE);
100
+ return target;
101
+ }
102
+ catch (error) {
103
+ if (error.code === "ENOENT")
104
+ return undefined;
105
+ throw error;
106
+ }
107
+ };
108
+ /**
109
+ * Completes the bundle archives in the Docker context. Built bundles were
110
+ * already linked by `resolveWorkspaceBundles` (`built` maps their digests to
111
+ * the staged path). Every `source` tar is hashed, validated and staged from
112
+ * the exact bytes that were verified, even when a built bundle shares its
113
+ * digest; distinct source paths with identical bytes stage once.
114
+ */
115
+ export const stageWorkspaceBundles = async (outputDirectory, plan, built = new Map()) => {
116
+ const sources = new Map();
117
+ let any = false;
118
+ for (const node of plan.nodes)
119
+ if (node.kind === "agent")
120
+ for (const resource of node.value.workspaceResources ?? []) {
121
+ if (resource.kind !== "bundle")
122
+ continue;
123
+ any = true;
124
+ if (resource.sha256 === undefined || (resource.source === undefined && !built.has(resource.sha256))) {
125
+ throw new SpawnfileError("compile_error", `Workspace bundle ${resource.id} has not been built`);
126
+ }
127
+ if (resource.source === undefined)
128
+ continue;
129
+ const paths = sources.get(resource.sha256) ?? new Set();
130
+ paths.add(path.resolve(path.dirname(resource.scope.key), resource.source));
131
+ sources.set(resource.sha256, paths);
132
+ }
133
+ if (!any)
134
+ return false;
135
+ await mkdir(path.join(outputDirectory, "container/workspace-bundles"), { recursive: true });
136
+ for (const [identity, paths] of sources) {
137
+ let verified;
138
+ for (const source of paths) {
139
+ const info = await stat(source);
140
+ if (!info.isFile() || info.size < 1 || info.size > CAP)
141
+ throw new SpawnfileError("validation_error", "Workspace bundle must be a bounded regular tar file");
142
+ const bytes = await readFile(source);
143
+ const actual = `sha256:${createHash("sha256").update(bytes).digest("hex")}`;
144
+ if (actual !== identity)
145
+ throw new SpawnfileError("validation_error", "Workspace bundle checksum mismatch");
146
+ validateWorkspaceBundleTar(bytes);
147
+ verified ??= bytes;
148
+ }
149
+ // Replace by unlinking first: the name may be a hard link into the bundle cache.
150
+ const target = workspaceBundleContextPath(outputDirectory, identity);
151
+ await rm(target, { force: true });
152
+ await writeFile(target, verified);
153
+ }
154
+ return true;
155
+ };
@@ -0,0 +1,23 @@
1
+ import type { BundleTarSummary } from "./workspaceBundleTar.js";
2
+ /** Built archives kept per cache directory; the least recently used beyond this are pruned. */
3
+ export declare const WORKSPACE_BUNDLE_CACHE_LIMIT = 24;
4
+ export interface CachedBundle extends BundleTarSummary {
5
+ key: string;
6
+ tarPath: string;
7
+ }
8
+ export declare const resolveWorkspaceBundleCacheDirectory: (override?: string) => string;
9
+ /**
10
+ * A hit is a record whose archive still has the size, inode and mtime it had
11
+ * when it was written. Anything else — a missing, replaced or edited archive,
12
+ * an unreadable record — is a miss and the archive is rebuilt.
13
+ */
14
+ export declare const lookupCachedBundle: (directory: string, key: string) => Promise<CachedBundle | undefined>;
15
+ /** Builds into a private temporary file, validates it, then publishes archive and record by atomic rename. */
16
+ export declare const storeBuiltBundle: (directory: string, key: string, build: (temporaryPath: string) => Promise<BundleTarSummary>) => Promise<CachedBundle>;
17
+ /** An archive used this recently may belong to a concurrent compile that has not staged it yet. */
18
+ export declare const WORKSPACE_BUNDLE_CACHE_GRACE_MS = 3600000;
19
+ /**
20
+ * Removes the least recently used archives beyond the limit. Never removes
21
+ * one this compile uses, nor one any compile used within the grace period.
22
+ */
23
+ export declare const pruneBundleCache: (directory: string, keep: ReadonlySet<string>, limit?: number, now?: number) => Promise<void>;
@@ -0,0 +1,79 @@
1
+ import { randomBytes } from "node:crypto";
2
+ import { chmod, mkdir, readdir, readFile, rename, rm, stat, utimes, writeFile } from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { resolveSpawnfileHome } from "../auth/paths.js";
5
+ import { validateWorkspaceBundleTar } from "./workspaceBundleArtifacts.js";
6
+ const RECORD_VERSION = "spawnfile.workspace-bundle-cache.v1";
7
+ /** Built archives kept per cache directory; the least recently used beyond this are pruned. */
8
+ export const WORKSPACE_BUNDLE_CACHE_LIMIT = 24;
9
+ export const resolveWorkspaceBundleCacheDirectory = (override) => override ?? path.join(resolveSpawnfileHome(), "cache", "workspace-bundles");
10
+ const paths = (directory, key) => ({ record: path.join(directory, `${key}.json`), tar: path.join(directory, `${key}.tar`) });
11
+ /**
12
+ * Archives are named by key AND digest: two concurrent builds of one key that
13
+ * produce different bytes publish two files, and each record names the file
14
+ * its digest describes, so a record can never pair one digest with another's bytes.
15
+ */
16
+ const archiveName = (key, sha256) => `${key}.${sha256.slice(7)}.tar`;
17
+ /**
18
+ * A hit is a record whose archive still has the size, inode and mtime it had
19
+ * when it was written. Anything else — a missing, replaced or edited archive,
20
+ * an unreadable record — is a miss and the archive is rebuilt.
21
+ */
22
+ export const lookupCachedBundle = async (directory, key) => {
23
+ const location = paths(directory, key);
24
+ try {
25
+ const record = JSON.parse(await readFile(location.record, "utf8"));
26
+ if (typeof record.sha256 !== "string" || !/^sha256:[a-f0-9]{64}$/u.test(record.sha256))
27
+ return undefined;
28
+ const tarPath = path.join(directory, archiveName(key, record.sha256));
29
+ const info = await stat(tarPath);
30
+ if (record.version !== RECORD_VERSION || record.key !== key || !info.isFile() || (info.mode & 0o222) !== 0 || info.size !== record.size || info.ino !== record.ino || info.mtimeMs !== record.mtimeMs)
31
+ return undefined;
32
+ const now = new Date();
33
+ await utimes(location.record, now, now).catch(() => undefined);
34
+ return { contentBytes: record.contentBytes, fileCount: record.fileCount, key, sha256: record.sha256, size: record.size, tarPath };
35
+ }
36
+ catch {
37
+ return undefined;
38
+ }
39
+ };
40
+ /** Builds into a private temporary file, validates it, then publishes archive and record by atomic rename. */
41
+ export const storeBuiltBundle = async (directory, key, build) => {
42
+ await mkdir(directory, { mode: 0o700, recursive: true });
43
+ const location = paths(directory, key), suffix = `${process.pid}.${randomBytes(6).toString("hex")}.tmp`;
44
+ const temporaryTar = `${location.tar}.${suffix}`, temporaryRecord = `${location.record}.${suffix}`;
45
+ try {
46
+ const summary = await build(temporaryTar);
47
+ validateWorkspaceBundleTar(await readFile(temporaryTar));
48
+ // Read-only: staging hard-links this inode into build contexts, which must never write through to it.
49
+ await chmod(temporaryTar, 0o444);
50
+ const tarPath = path.join(directory, archiveName(key, summary.sha256));
51
+ await rename(temporaryTar, tarPath);
52
+ const info = await stat(tarPath);
53
+ const record = { ...summary, ino: info.ino, key, mtimeMs: info.mtimeMs, version: RECORD_VERSION };
54
+ await writeFile(temporaryRecord, `${JSON.stringify(record)}\n`, { mode: 0o600 });
55
+ await rename(temporaryRecord, location.record);
56
+ return { ...summary, key, tarPath };
57
+ }
58
+ finally {
59
+ await rm(temporaryTar, { force: true });
60
+ await rm(temporaryRecord, { force: true });
61
+ }
62
+ };
63
+ /** An archive used this recently may belong to a concurrent compile that has not staged it yet. */
64
+ export const WORKSPACE_BUNDLE_CACHE_GRACE_MS = 3_600_000;
65
+ /**
66
+ * Removes the least recently used archives beyond the limit. Never removes
67
+ * one this compile uses, nor one any compile used within the grace period.
68
+ */
69
+ export const pruneBundleCache = async (directory, keep, limit = WORKSPACE_BUNDLE_CACHE_LIMIT, now = Date.now()) => {
70
+ const names = await readdir(directory).catch(() => []);
71
+ const records = await Promise.all(names.filter((name) => /^[a-f0-9]{64}\.json$/u.test(name)).map(async (name) => ({
72
+ key: name.slice(0, 64), used: (await stat(path.join(directory, name)).catch(() => undefined))?.mtimeMs ?? 0
73
+ })));
74
+ const stale = records.sort((left, right) => right.used - left.used).slice(limit).filter((record) => !keep.has(record.key) && now - record.used > WORKSPACE_BUNDLE_CACHE_GRACE_MS);
75
+ await Promise.all(stale.flatMap((record) => [
76
+ rm(path.join(directory, `${record.key}.json`), { force: true }),
77
+ ...names.filter((name) => name.startsWith(`${record.key}.`) && name.endsWith(".tar")).map((name) => rm(path.join(directory, name), { force: true }))
78
+ ]));
79
+ };
@@ -0,0 +1,21 @@
1
+ import type { WorkspaceBundleBuild } from "../manifest/index.js";
2
+ import { type BundleBuildContext, type BundleBuildPlan } from "./workspaceBundleKey.js";
3
+ type DependenciesSpec = NonNullable<WorkspaceBundleBuild["dependencies"]>;
4
+ /**
5
+ * The lockfile is the whole dependency identity, so it must describe exactly
6
+ * what package.json asks for: a modern npm lock (v2+) whose root entry
7
+ * declares the same dependency sets, with no linked (workspace or file:)
8
+ * packages that would reach outside the install directory.
9
+ */
10
+ export declare const assertNpmLockMatchesManifest: (manifestBytes: Buffer, lockBytes: Buffer, directory: string) => void;
11
+ /**
12
+ * `dependencies`: package.json + package-lock.json installed with `npm ci` in
13
+ * a digest-pinned image on the TARGET platform, so native packages and
14
+ * platform-specific optional dependencies match the container, never the host.
15
+ * The key is the lockfile, the manifest, the install recipe (manager, flags,
16
+ * check command, pinned image = tool versions) and the platform; installs run
17
+ * only on a cache miss. The archive holds the installed `node_modules` tree;
18
+ * `.bin` symlinks and npm's hidden lockfile are left out.
19
+ */
20
+ export declare const planDependenciesBundle: (spec: DependenciesSpec, context: BundleBuildContext) => Promise<BundleBuildPlan>;
21
+ export {};
@@ -0,0 +1,122 @@
1
+ import { createHash } from "node:crypto";
2
+ import { copyFile, lstat, mkdir, mkdtemp, readFile, rm } from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { SpawnfileError } from "../shared/index.js";
5
+ import { assertCommittedInputs, resolveBundleRoot, writeBundleFiles } from "./workspaceBundleFiles.js";
6
+ import { computeRecipeBundleKey } from "./workspaceBundleKey.js";
7
+ import { bundleContainerName, runContainerStep } from "./workspaceBundleRun.js";
8
+ import { walkBuiltTree } from "./workspaceBundleTree.js";
9
+ const MANIFEST_LIMIT = 67_108_864;
10
+ const INSTALL_TIMEOUT_MS = 1_800_000;
11
+ const DEPENDENCY_FIELDS = ["dependencies", "devDependencies", "optionalDependencies"];
12
+ const fail = (message) => {
13
+ throw new SpawnfileError("validation_error", message);
14
+ };
15
+ const sha256 = (bytes) => `sha256:${createHash("sha256").update(bytes).digest("hex")}`;
16
+ const stable = (value) => JSON.stringify(value, (_key, item) => item && typeof item === "object" && !Array.isArray(item) ? Object.fromEntries(Object.entries(item).sort(([left], [right]) => left.localeCompare(right))) : item);
17
+ const readManifest = async (directory, name) => {
18
+ const file = path.join(directory, name), info = await lstat(file).catch(() => undefined);
19
+ if (!info?.isFile() || info.size > MANIFEST_LIMIT)
20
+ fail(`Dependency bundle needs a regular ${name} in ${directory}`);
21
+ return readFile(file);
22
+ };
23
+ /**
24
+ * The lockfile is the whole dependency identity, so it must describe exactly
25
+ * what package.json asks for: a modern npm lock (v2+) whose root entry
26
+ * declares the same dependency sets, with no linked (workspace or file:)
27
+ * packages that would reach outside the install directory.
28
+ */
29
+ export const assertNpmLockMatchesManifest = (manifestBytes, lockBytes, directory) => {
30
+ const parse = (bytes, name) => {
31
+ try {
32
+ return JSON.parse(bytes.toString("utf8"));
33
+ }
34
+ catch {
35
+ return fail(`Dependency bundle ${name} is not valid JSON in ${directory}`);
36
+ }
37
+ };
38
+ const manifest = parse(manifestBytes, "package.json"), lock = parse(lockBytes, "package-lock.json");
39
+ const packages = lock.packages;
40
+ if (typeof lock.lockfileVersion !== "number" || lock.lockfileVersion < 2 || !packages?.[""])
41
+ fail(`Dependency bundle needs an npm lockfile v2 or later in ${directory}`);
42
+ for (const field of DEPENDENCY_FIELDS) {
43
+ if (stable(manifest[field] ?? {}) !== stable(packages[""][field] ?? {}))
44
+ fail(`Dependency bundle package.json ${field} differs from package-lock.json in ${directory}; run npm install`);
45
+ }
46
+ for (const [location, entry] of Object.entries(packages)) {
47
+ if (!location)
48
+ continue;
49
+ if (entry.link === true || !location.startsWith("node_modules/") || location.split("/").includes("..")) {
50
+ fail(`Dependency bundle lock entry ${location} is linked or outside node_modules; only registry installs are archived`);
51
+ }
52
+ // A cold install must fetch exactly what the key names: every fetched package needs content
53
+ // integrity, or a git source pinned to a full commit. Bundled packages ship inside their parent.
54
+ if (entry.inBundle === true)
55
+ continue;
56
+ const resolved = typeof entry.resolved === "string" ? entry.resolved : "";
57
+ const pinnedGit = /^git\+.+#[a-f0-9]{40}$/u.test(resolved);
58
+ if (!pinnedGit && !validIntegrity(entry.integrity)) {
59
+ fail(`Dependency bundle lock entry ${location} has no content integrity; its download is not pinned by the lockfile`);
60
+ }
61
+ }
62
+ };
63
+ // Base64 lengths of each SRI algorithm npm verifies; a token npm would parse as empty is not integrity.
64
+ const SRI_LENGTHS = { sha1: 28, sha256: 44, sha384: 64, sha512: 88 };
65
+ const validIntegrity = (value) => typeof value === "string" && value.trim() !== "" &&
66
+ value.trim().split(/\s+/u).every((token) => {
67
+ const match = /^(sha1|sha256|sha384|sha512)-([A-Za-z0-9+/]+={0,2})$/u.exec(token);
68
+ return match !== null && match[2].length === SRI_LENGTHS[match[1]];
69
+ });
70
+ const inNodeModules = (relativePath) => relativePath === "node_modules" || relativePath.startsWith("node_modules/");
71
+ /**
72
+ * `dependencies`: package.json + package-lock.json installed with `npm ci` in
73
+ * a digest-pinned image on the TARGET platform, so native packages and
74
+ * platform-specific optional dependencies match the container, never the host.
75
+ * The key is the lockfile, the manifest, the install recipe (manager, flags,
76
+ * check command, pinned image = tool versions) and the platform; installs run
77
+ * only on a cache miss. The archive holds the installed `node_modules` tree;
78
+ * `.bin` symlinks and npm's hidden lockfile are left out.
79
+ */
80
+ export const planDependenciesBundle = async (spec, context) => {
81
+ const directory = await resolveBundleRoot(spec.directory);
82
+ // A release build installs exactly the committed manifests.
83
+ if (context.identity === "release")
84
+ await assertCommittedInputs(directory, ["package.json", "package-lock.json"]);
85
+ const [manifestBytes, lockBytes] = await Promise.all([readManifest(directory, "package.json"), readManifest(directory, "package-lock.json")]);
86
+ assertNpmLockMatchesManifest(manifestBytes, lockBytes, directory);
87
+ const dev = spec.dev ?? false, scripts = spec.scripts ?? true;
88
+ const recipe = {
89
+ check: spec.check ?? null, dev, image: spec.image, lock: sha256(lockBytes), manager: "npm", manifest: sha256(manifestBytes), scripts
90
+ };
91
+ return {
92
+ input: "dependencies",
93
+ key: computeRecipeBundleKey("dependencies", recipe, context.platform),
94
+ write: async (temporaryTar) => {
95
+ await mkdir(context.workRoot, { mode: 0o700, recursive: true });
96
+ const work = await mkdtemp(path.join(context.workRoot, "dependencies-"));
97
+ try {
98
+ await copyFile(path.join(directory, "package.json"), path.join(work, "package.json"));
99
+ await copyFile(path.join(directory, "package-lock.json"), path.join(work, "package-lock.json"));
100
+ if (sha256(await readFile(path.join(work, "package-lock.json"))) !== recipe.lock || sha256(await readFile(path.join(work, "package.json"))) !== recipe.manifest) {
101
+ fail(`Dependency bundle manifests changed while the bundle was built: ${directory}`);
102
+ }
103
+ const step = (argv, label) => runContainerStep({
104
+ argv, dockerCommand: context.dockerCommand, env: { npm_config_cache: "/tmp/spawnfile-home/.npm", npm_config_update_notifier: "false" },
105
+ image: spec.image, mounts: [[work, "/spawnfile/install"]], name: bundleContainerName(), platform: context.platform, workdir: "/spawnfile/install"
106
+ }, INSTALL_TIMEOUT_MS, label, work);
107
+ const install = ["npm", "ci", "--no-audit", "--no-fund", dev ? "--include=dev" : "--omit=dev", ...(scripts ? [] : ["--ignore-scripts"])];
108
+ await step(install, `Dependency install for ${directory}`);
109
+ if (spec.check)
110
+ await step(spec.check, `Dependency check for ${directory}`);
111
+ const input = await walkBuiltTree(work, {
112
+ dropSymlink: (relativePath) => /(^|\/)\.bin\/[^/]+$/u.test(relativePath),
113
+ skip: (relativePath) => !inNodeModules(relativePath) || relativePath === "node_modules/.package-lock.json"
114
+ });
115
+ return await writeBundleFiles(input, temporaryTar);
116
+ }
117
+ finally {
118
+ await rm(work, { force: true, recursive: true });
119
+ }
120
+ }
121
+ };
122
+ };
@@ -0,0 +1,51 @@
1
+ import { type BundleFileMode, type BundleTarSummary } from "./workspaceBundleTar.js";
2
+ export type BundleIdentityMode = "dev" | "release";
3
+ /** One archived file. `identity` is a git object id (`git:`, content read from the object store) or a content digest (`sha256:`, read from disk). */
4
+ export interface BundleFileEntry {
5
+ identity: string;
6
+ mode: BundleFileMode;
7
+ objectId?: string;
8
+ path: string;
9
+ }
10
+ export interface BundleFilesInput {
11
+ directory: string;
12
+ entries: BundleFileEntry[];
13
+ mode: BundleIdentityMode;
14
+ }
15
+ /**
16
+ * Exclude patterns match the path relative to the bundle root: `*` and `?`
17
+ * stay inside one segment, `**` crosses segments, and a pattern that matches
18
+ * a directory excludes everything beneath it.
19
+ */
20
+ export declare const compileExcludePatterns: (patterns?: readonly string[]) => ((relativePath: string) => boolean);
21
+ export declare const resolveBundleRoot: (directory: string) => Promise<string>;
22
+ /**
23
+ * Release identity: the root must be clean against HEAD (ignoring excluded
24
+ * paths), and the identity is the committed tree's blob ids and modes. No
25
+ * input file is read.
26
+ */
27
+ export declare const resolveReleaseFiles: (directory: string, exclude?: readonly string[]) => Promise<BundleFilesInput>;
28
+ /**
29
+ * Release rule for recipe inputs that are named files rather than a tree:
30
+ * each must be tracked at HEAD with no staged, unstaged or untracked change.
31
+ */
32
+ export declare const assertCommittedInputs: (directory: string, names: readonly string[]) => Promise<void>;
33
+ /**
34
+ * A pinned revision: identity and bytes come from the tree of `ref` (resolved
35
+ * to a commit once), so the work tree's state is irrelevant and no clean
36
+ * checkout is needed. The same in dev and release compiles.
37
+ */
38
+ export declare const resolveCommittedFiles: (directory: string, ref: string, exclude?: readonly string[]) => Promise<BundleFilesInput>;
39
+ /**
40
+ * Dev identity: the working tree as it is now. Files git reports as unchanged
41
+ * keep their index blob id; modified and untracked (not ignored) files are
42
+ * hashed from disk, so an uncommitted edit or a new file always moves the key.
43
+ */
44
+ export declare const resolveDevFiles: (directory: string, exclude?: readonly string[]) => Promise<BundleFilesInput>;
45
+ /**
46
+ * Writes the archive for a resolved input set. Every `git:` entry is read from
47
+ * the object store, so its bytes are exactly the blob its identity names;
48
+ * every `sha256:` entry is read from disk and re-checked against its digest.
49
+ * The archive is therefore a pure function of the cache key.
50
+ */
51
+ export declare const writeBundleFiles: (input: BundleFilesInput, outputPath: string) => Promise<BundleTarSummary>;