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,102 @@
1
+ /**
2
+ * Transport half of Daimon's per-turn usage ledger reader
3
+ * (`noopolis.daimon.turn-usage.v1`, see `specs/USAGE_ACCOUNTING_DESIGN.md`). Split
4
+ * out of `usageLedger.ts` so that file stays a pure parser/aggregator and this
5
+ * one owns the single I/O-shaped concern: `cat` two ledger generations through
6
+ * a caller-supplied `exec` and decide, per generation, whether a failed read
7
+ * means "empty" or "unknown".
8
+ *
9
+ * `exec` is duck-typed (structurally the same shape as
10
+ * `RuntimeProbeGateway.exec` in `./types.ts`) rather than a concrete gateway,
11
+ * so this module never depends on `src/deployment` — which already imports
12
+ * real exports from this folder, and so must not be imported back.
13
+ */
14
+ import { parseUsageLedger } from "./usageLedger.js";
15
+ /** Same redaction discipline as the docker probe gateway's own failure
16
+ * summaries — written here rather than imported because this module must not
17
+ * depend on `src/deployment` (see the module doc). */
18
+ const boundedReadFailure = (error) => {
19
+ const text = (() => {
20
+ if (error && typeof error === "object") {
21
+ const candidate = error;
22
+ if (typeof candidate.stderr === "string" && candidate.stderr.trim().length > 0) {
23
+ return candidate.stderr;
24
+ }
25
+ if (typeof candidate.message === "string")
26
+ return candidate.message;
27
+ }
28
+ return String(error);
29
+ })();
30
+ return text
31
+ .replace(/\s+/gu, " ")
32
+ .replace(/(bearer|token|password|passwd|secret|authorization)[=: ]+(?:bearer[ ]+)?[^ ]+/giu, "$1=[redacted]")
33
+ .replace(/https?:\/\/[^ ]+/giu, "[url redacted]")
34
+ .trim()
35
+ .slice(0, 240) || "ledger read failed";
36
+ };
37
+ /**
38
+ * True only for the one failure that legitimately means "there is nothing
39
+ * here": the file does not exist. That is the normal state of
40
+ * `usage.jsonl.1` before the first rotation, and of `usage.jsonl` before the
41
+ * first turn ever completes, so it must stay silent.
42
+ *
43
+ * Everything else — a `maxBuffer` overrun on a rotated generation, the read
44
+ * timing out, the daemon being unreachable, the container having gone away —
45
+ * is an UNKNOWN number of turns, and reporting it as zero is exactly the
46
+ * silent data loss `spawnfile usage` exists to prevent. A killed or
47
+ * string-coded failure is never read as absence no matter what text it
48
+ * carries, because a truncated or aborted read can still have emitted
49
+ * unrelated stderr.
50
+ */
51
+ const isAbsentLedgerFile = (error) => {
52
+ if (!error || typeof error !== "object")
53
+ return false;
54
+ const candidate = error;
55
+ if (candidate.killed === true || (candidate.signal !== undefined && candidate.signal !== null)) {
56
+ return false;
57
+ }
58
+ // Node reports spawn/stream failures with a string `code`
59
+ // (`ERR_CHILD_PROCESS_STDIO_MAXBUFFER`, or `ENOENT` for a missing docker
60
+ // binary); a plain non-zero `cat` exit carries a numeric one.
61
+ if (typeof candidate.code === "string")
62
+ return false;
63
+ const stderr = typeof candidate.stderr === "string" ? candidate.stderr : "";
64
+ const message = typeof candidate.message === "string" ? candidate.message : "";
65
+ return /no such file or directory/iu.test(`${stderr}\n${message}`);
66
+ };
67
+ /** `cat`s one generation through `exec`. A genuinely absent file reads as
68
+ * empty; every other failure is reported, never swallowed. */
69
+ const readLedgerGeneration = async (exec, filePath) => {
70
+ try {
71
+ const result = await exec(["cat", filePath]);
72
+ return { text: result.stdout };
73
+ }
74
+ catch (error) {
75
+ if (isAbsentLedgerFile(error))
76
+ return { text: "" };
77
+ return { failure: { filePath, reason: boundedReadFailure(error) }, text: "" };
78
+ }
79
+ };
80
+ /**
81
+ * Reads both ledger generations (`usage.jsonl` and `usage.jsonl.1`) through
82
+ * `exec` and parses them. Rotated (older) records are returned before
83
+ * current ones so a `--since` window spanning a rotation reads in
84
+ * chronological order.
85
+ *
86
+ * Generations that could not be read come back in `unreadable` rather than as
87
+ * missing records, so the caller can render an UNREADABLE row and mark the
88
+ * window partial instead of reporting an unknown amount of usage as zero.
89
+ */
90
+ export const readUsageLedgerViaExec = async (exec, paths) => {
91
+ const [rotated, primary] = await Promise.all([
92
+ readLedgerGeneration(exec, paths.rotatedFilePath),
93
+ readLedgerGeneration(exec, paths.filePath)
94
+ ]);
95
+ return {
96
+ // Every row is kept, across both generations: aggregates dedupe by `turn`
97
+ // (a replay can re-append after a rotation) and coverage reports rows that
98
+ // share a key but differ.
99
+ records: [...parseUsageLedger(rotated.text), ...parseUsageLedger(primary.text)],
100
+ unreadable: [rotated.failure, primary.failure].filter((failure) => failure !== undefined)
101
+ };
102
+ };
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Pure parser for Daimon's per-model-request stream
3
+ * (`noopolis.daimon.turn-requests.v1`, `requests.jsonl` beside the usage
4
+ * ledger). Codex rows carry a `thread`; Grok broker rows carry the broker
5
+ * `turn`, the declared `model`, and `usage_source` (`stream`, `upstream`, or
6
+ * `estimated` — a conservative charge for a response without valid usage).
7
+ * Either may carry proxy- or rollout-measured `started_at`/`ended_at`, absent
8
+ * rather than substituted when not measured. No I/O happens here.
9
+ */
10
+ export declare const USAGE_REQUEST_RECORD_VERSION: "noopolis.daimon.turn-requests.v1";
11
+ export declare const USAGE_REQUEST_SOURCES: readonly ["stream", "upstream", "estimated"];
12
+ export type UsageRequestSource = typeof USAGE_REQUEST_SOURCES[number];
13
+ export interface UsageRequestRecord {
14
+ agent: string;
15
+ at: string;
16
+ cache_write: number;
17
+ cached_input: number;
18
+ ended_at?: string;
19
+ engine: string;
20
+ fresh_input: number;
21
+ input: number;
22
+ model?: string;
23
+ output: number;
24
+ reasoning?: number;
25
+ request: number;
26
+ requests: number;
27
+ started_at?: string;
28
+ thread?: string;
29
+ total: number;
30
+ turn?: string;
31
+ usage_source?: UsageRequestSource;
32
+ v: typeof USAGE_REQUEST_RECORD_VERSION;
33
+ wake: string;
34
+ }
35
+ /** One row, or `null` for a blank, torn, foreign-version, or malformed line. Never throws. */
36
+ export declare const parseUsageRequestLedgerLine: (line: string) => UsageRequestRecord | null;
37
+ /**
38
+ * Parses a whole stream, keeping the first row of each broker `(turn, request)`
39
+ * pair: a replayed broker turn re-appends its sealed request rows exactly as it
40
+ * re-appends its usage row.
41
+ */
42
+ export declare const parseUsageRequestLedger: (content: string) => UsageRequestRecord[];
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Pure parser for Daimon's per-model-request stream
3
+ * (`noopolis.daimon.turn-requests.v1`, `requests.jsonl` beside the usage
4
+ * ledger). Codex rows carry a `thread`; Grok broker rows carry the broker
5
+ * `turn`, the declared `model`, and `usage_source` (`stream`, `upstream`, or
6
+ * `estimated` — a conservative charge for a response without valid usage).
7
+ * Either may carry proxy- or rollout-measured `started_at`/`ended_at`, absent
8
+ * rather than substituted when not measured. No I/O happens here.
9
+ */
10
+ export const USAGE_REQUEST_RECORD_VERSION = "noopolis.daimon.turn-requests.v1";
11
+ export const USAGE_REQUEST_SOURCES = ["stream", "upstream", "estimated"];
12
+ const TIMESTAMP = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,9})?Z$/u;
13
+ const COUNTS = ["input", "cached_input", "fresh_input", "cache_write", "output", "total"];
14
+ const nonNegative = (value) => typeof value === "number" && Number.isFinite(value) && value >= 0;
15
+ const text = (value) => typeof value === "string" && value.length > 0;
16
+ /** One row, or `null` for a blank, torn, foreign-version, or malformed line. Never throws. */
17
+ export const parseUsageRequestLedgerLine = (line) => {
18
+ let parsed;
19
+ try {
20
+ parsed = JSON.parse(line.trim());
21
+ }
22
+ catch {
23
+ return null;
24
+ }
25
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
26
+ return null;
27
+ const row = parsed;
28
+ if (row.v !== USAGE_REQUEST_RECORD_VERSION || !text(row.agent) || !text(row.wake) || !text(row.engine) || !text(row.at) || Number.isNaN(Date.parse(row.at)))
29
+ return null;
30
+ if (!Number.isSafeInteger(row.request) || !Number.isSafeInteger(row.requests) || row.request < 0 || row.requests < 1)
31
+ return null;
32
+ if (COUNTS.some((field) => !nonNegative(row[field])))
33
+ return null;
34
+ if ((row.started_at !== undefined && !(text(row.started_at) && TIMESTAMP.test(row.started_at)))
35
+ || (row.ended_at !== undefined && !(text(row.ended_at) && TIMESTAMP.test(row.ended_at)))
36
+ || (row.usage_source !== undefined && !USAGE_REQUEST_SOURCES.includes(row.usage_source))
37
+ || (row.turn !== undefined && !(typeof row.turn === "string" && /^[a-f0-9]{64}$/u.test(row.turn)))
38
+ || (row.reasoning !== undefined && !nonNegative(row.reasoning)))
39
+ return null;
40
+ return {
41
+ agent: row.agent, at: row.at, cache_write: row.cache_write, cached_input: row.cached_input,
42
+ engine: row.engine, fresh_input: row.fresh_input, input: row.input, output: row.output,
43
+ request: row.request, requests: row.requests, total: row.total,
44
+ v: USAGE_REQUEST_RECORD_VERSION, wake: row.wake,
45
+ ...(row.started_at === undefined ? {} : { started_at: row.started_at }),
46
+ ...(row.ended_at === undefined ? {} : { ended_at: row.ended_at }),
47
+ ...(text(row.model) ? { model: row.model } : {}),
48
+ ...(row.reasoning === undefined ? {} : { reasoning: row.reasoning }),
49
+ ...(text(row.thread) ? { thread: row.thread } : {}),
50
+ ...(row.turn === undefined ? {} : { turn: row.turn }),
51
+ ...(row.usage_source === undefined ? {} : { usage_source: row.usage_source })
52
+ };
53
+ };
54
+ /**
55
+ * Parses a whole stream, keeping the first row of each broker `(turn, request)`
56
+ * pair: a replayed broker turn re-appends its sealed request rows exactly as it
57
+ * re-appends its usage row.
58
+ */
59
+ export const parseUsageRequestLedger = (content) => {
60
+ const seen = new Set();
61
+ return content.split("\n").map(parseUsageRequestLedgerLine).filter((row) => {
62
+ if (row === null)
63
+ return false;
64
+ if (row.turn === undefined)
65
+ return true;
66
+ const key = `${row.turn}:${row.request}`;
67
+ if (seen.has(key))
68
+ return false;
69
+ seen.add(key);
70
+ return true;
71
+ });
72
+ };
@@ -0,0 +1,32 @@
1
+ export declare const DAIMON_DOCKER_RUNTIME_SECURITY_ARGS: readonly ["--cap-drop=ALL", "--cap-add=CHOWN", "--cap-add=SETUID", "--cap-add=SETGID", "--cap-add=DAC_READ_SEARCH", "--cap-add=SETPCAP", "--cap-add=KILL", "--security-opt=no-new-privileges:true"];
2
+ export declare const DAIMON_CODEX_NATIVE_SANDBOX_DOCKER_SECURITY_OPTS: readonly ["--security-opt=seccomp=unconfined", "--security-opt=apparmor=unconfined"];
3
+ export interface DaimonEngineDockerInterop {
4
+ /** A strict Codex agent needs seccomp and AppArmor fully unconfined for its own bubblewrap sandbox. */
5
+ codex: boolean;
6
+ /** A brokered Grok worker needs bubblewrap's namespace syscalls: the pinned seccomp profile plus AppArmor unconfined. */
7
+ grok: boolean;
8
+ }
9
+ export declare const resolveDaimonEngineDockerInterop: (source: string) => DaimonEngineDockerInterop;
10
+ export declare const configRequiresCodexNativeSandboxDockerInterop: (source: string) => boolean;
11
+ export declare const DAIMON_GROK_HOST_USERNS_PREREQUISITE: "kernel.apparmor_restrict_unprivileged_userns=0";
12
+ /**
13
+ * Writes the pinned Grok seccomp profile into `directory` (content-addressed,
14
+ * verified after writing) and returns its absolute path. Docker reads a
15
+ * `seccomp=<file>` option on the client at `docker run` and stores the profile
16
+ * in the container config, so the file only has to exist for that call.
17
+ */
18
+ export declare const materializeDaimonGrokSeccompProfile: (directory: string) => Promise<string>;
19
+ /**
20
+ * Docker security options for a Daimon container, by the engines its configs run.
21
+ *
22
+ * Codex's strict native sandbox needs seccomp and AppArmor fully unconfined, and
23
+ * that superset also lets Grok's bubblewrap run, so it wins whenever a strict
24
+ * Codex agent is present. Otherwise a Grok agent gets Docker's default seccomp
25
+ * profile plus bubblewrap's seven namespace syscalls (pinned bytes) and AppArmor
26
+ * unconfined — the narrowest combination under which Grok 1.0.34 starts. Grok
27
+ * additionally needs the Docker host to allow unprivileged user namespaces
28
+ * (`kernel.apparmor_restrict_unprivileged_userns=0`); the container entrypoint
29
+ * checks that before the broker starts.
30
+ */
31
+ export declare const daimonEngineDockerSecurityArgsForConfigs: (sources: string[], grokSeccompProfilePath: () => Promise<string>) => Promise<string[]>;
32
+ export declare const codexNativeSandboxDockerSecurityArgsForConfigs: (sources: string[]) => string[];
@@ -0,0 +1,120 @@
1
+ import { createHash } from "node:crypto";
2
+ import { mkdir, readFile, writeFile } from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { DAIMON_GROK_SECCOMP_PROFILE_BYTES, DAIMON_GROK_SECCOMP_PROFILE_FILE_NAME, DAIMON_GROK_SECCOMP_PROFILE_SHA256 } from "./daimonGrokSeccompProfile.js";
5
+ import { SpawnfileError } from "./errors.js";
6
+ export const DAIMON_DOCKER_RUNTIME_SECURITY_ARGS = [
7
+ "--cap-drop=ALL",
8
+ "--cap-add=CHOWN",
9
+ "--cap-add=SETUID",
10
+ "--cap-add=SETGID",
11
+ "--cap-add=DAC_READ_SEARCH",
12
+ // Lets the broker launcher drop its bounding set to 00000000000000c1; without SETPCAP, setpriv --bounding-set silently no-ops.
13
+ "--cap-add=SETPCAP",
14
+ // The entrypoint supervises children dropped to uid 2100/2200+; without CAP_KILL, root cannot even kill -0 them, so a live child reads as dead.
15
+ "--cap-add=KILL",
16
+ "--security-opt=no-new-privileges:true"
17
+ ];
18
+ export const DAIMON_CODEX_NATIVE_SANDBOX_DOCKER_SECURITY_OPTS = [
19
+ "--security-opt=seccomp=unconfined",
20
+ "--security-opt=apparmor=unconfined"
21
+ ];
22
+ const DAIMON_CONFIG_VERSIONS = [
23
+ "noopolis.daimon.organization-runtime.v1",
24
+ "noopolis.daimon.organization-runtime.v2"
25
+ ];
26
+ const DAIMON_CODEX_STRICT_SANDBOX = {
27
+ mode: "workspace-write",
28
+ networkAccess: false,
29
+ webSearch: "disabled"
30
+ };
31
+ const isRecord = (value) => !!value && typeof value === "object" && !Array.isArray(value);
32
+ const hasExactCodexStrictSandbox = (engine) => {
33
+ const sandbox = engine.codexSandbox;
34
+ if (sandbox === undefined)
35
+ return false;
36
+ if (!isRecord(sandbox)) {
37
+ throw new SpawnfileError("validation_error", "Daimon Codex sandbox policy has an invalid shape");
38
+ }
39
+ const expected = DAIMON_CODEX_STRICT_SANDBOX;
40
+ const keys = Object.keys(sandbox).sort();
41
+ const expectedKeys = Object.keys(expected).sort();
42
+ if (keys.length !== expectedKeys.length ||
43
+ keys.some((key, index) => key !== expectedKeys[index] || sandbox[key] !== expected[key])) {
44
+ throw new SpawnfileError("validation_error", "Daimon Codex sandbox policy is not the supported strict workspace-no-network policy");
45
+ }
46
+ return true;
47
+ };
48
+ export const resolveDaimonEngineDockerInterop = (source) => {
49
+ let parsed;
50
+ try {
51
+ parsed = JSON.parse(source);
52
+ }
53
+ catch {
54
+ throw new SpawnfileError("validation_error", "Daimon generated organization config is not JSON");
55
+ }
56
+ if (!isRecord(parsed) || !Array.isArray(parsed.agents)) {
57
+ throw new SpawnfileError("validation_error", "Daimon generated organization config has an invalid shape");
58
+ }
59
+ if (!DAIMON_CONFIG_VERSIONS.includes(parsed.version)) {
60
+ throw new SpawnfileError("validation_error", "Daimon generated organization config is not a supported v1/v2 contract");
61
+ }
62
+ const interop = { codex: false, grok: false };
63
+ for (const agent of parsed.agents) {
64
+ if (!isRecord(agent) || !isRecord(agent.engine)) {
65
+ throw new SpawnfileError("validation_error", "Daimon generated organization config has an invalid agent engine");
66
+ }
67
+ const kind = agent.engine.kind;
68
+ if (kind !== "agy" && kind !== "codex" && kind !== "grok") {
69
+ throw new SpawnfileError("validation_error", "Daimon generated organization config has an unsupported agent engine");
70
+ }
71
+ if (kind === "codex" && hasExactCodexStrictSandbox(agent.engine))
72
+ interop.codex = true;
73
+ if (kind === "grok")
74
+ interop.grok = true;
75
+ }
76
+ return interop;
77
+ };
78
+ export const configRequiresCodexNativeSandboxDockerInterop = (source) => resolveDaimonEngineDockerInterop(source).codex;
79
+ export const DAIMON_GROK_HOST_USERNS_PREREQUISITE = "kernel.apparmor_restrict_unprivileged_userns=0";
80
+ /**
81
+ * Writes the pinned Grok seccomp profile into `directory` (content-addressed,
82
+ * verified after writing) and returns its absolute path. Docker reads a
83
+ * `seccomp=<file>` option on the client at `docker run` and stores the profile
84
+ * in the container config, so the file only has to exist for that call.
85
+ */
86
+ export const materializeDaimonGrokSeccompProfile = async (directory) => {
87
+ const target = path.resolve(directory, `${DAIMON_GROK_SECCOMP_PROFILE_SHA256.slice(0, 16)}-${DAIMON_GROK_SECCOMP_PROFILE_FILE_NAME}`);
88
+ await mkdir(path.dirname(target), { recursive: true });
89
+ await writeFile(target, DAIMON_GROK_SECCOMP_PROFILE_BYTES, { mode: 0o644 });
90
+ const written = await readFile(target);
91
+ if (createHash("sha256").update(written).digest("hex") !== DAIMON_GROK_SECCOMP_PROFILE_SHA256) {
92
+ throw new SpawnfileError("runtime_error", "Pinned Grok seccomp profile did not materialize byte-for-byte");
93
+ }
94
+ return target;
95
+ };
96
+ /**
97
+ * Docker security options for a Daimon container, by the engines its configs run.
98
+ *
99
+ * Codex's strict native sandbox needs seccomp and AppArmor fully unconfined, and
100
+ * that superset also lets Grok's bubblewrap run, so it wins whenever a strict
101
+ * Codex agent is present. Otherwise a Grok agent gets Docker's default seccomp
102
+ * profile plus bubblewrap's seven namespace syscalls (pinned bytes) and AppArmor
103
+ * unconfined — the narrowest combination under which Grok 1.0.34 starts. Grok
104
+ * additionally needs the Docker host to allow unprivileged user namespaces
105
+ * (`kernel.apparmor_restrict_unprivileged_userns=0`); the container entrypoint
106
+ * checks that before the broker starts.
107
+ */
108
+ export const daimonEngineDockerSecurityArgsForConfigs = (sources, grokSeccompProfilePath) => {
109
+ const interop = sources.map(resolveDaimonEngineDockerInterop);
110
+ if (interop.some((entry) => entry.codex))
111
+ return Promise.resolve([...DAIMON_CODEX_NATIVE_SANDBOX_DOCKER_SECURITY_OPTS]);
112
+ if (!interop.some((entry) => entry.grok))
113
+ return Promise.resolve([]);
114
+ return grokSeccompProfilePath().then((profilePath) => {
115
+ if (!path.isAbsolute(profilePath))
116
+ throw new SpawnfileError("runtime_error", "Grok seccomp profile path must be absolute");
117
+ return [`--security-opt=seccomp=${profilePath}`, "--security-opt=apparmor=unconfined"];
118
+ });
119
+ };
120
+ export const codexNativeSandboxDockerSecurityArgsForConfigs = (sources) => sources.some(configRequiresCodexNativeSandboxDockerInterop) ? [...DAIMON_CODEX_NATIVE_SANDBOX_DOCKER_SECURITY_OPTS] : [];
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Docker's default seccomp profile plus the seven namespace syscalls bubblewrap
3
+ * needs without CAP_SYS_ADMIN (clone, clone3, unshare, mount, umount2, pivot_root,
4
+ * setns): the narrowest profile under which Grok 1.0.34's sandbox starts
5
+ * (Noopolis P0 container evidence, 2026-09-17). Bytes are pinned by sha256; Daimon's
6
+ * Grok broker projection and slot preflight receipt bind the same digest.
7
+ */
8
+ export declare const DAIMON_GROK_SECCOMP_PROFILE_FILE_NAME: "seccomp-default-plus-userns.json";
9
+ export declare const DAIMON_GROK_SECCOMP_PROFILE_SHA256: "9666074d2d6b1a261a410598b9ce1714d9060a6ef4c9c1d1cfb6f8915d7e842a";
10
+ export declare const DAIMON_GROK_SECCOMP_PROFILE_BYTES = "{\n \"defaultAction\": \"SCMP_ACT_ERRNO\",\n \"defaultErrnoRet\": 1,\n \"archMap\": [\n {\n \"architecture\": \"SCMP_ARCH_X86_64\",\n \"subArchitectures\": [\n \"SCMP_ARCH_X86\",\n \"SCMP_ARCH_X32\"\n ]\n },\n {\n \"architecture\": \"SCMP_ARCH_AARCH64\",\n \"subArchitectures\": [\n \"SCMP_ARCH_ARM\"\n ]\n },\n {\n \"architecture\": \"SCMP_ARCH_MIPS64\",\n \"subArchitectures\": [\n \"SCMP_ARCH_MIPS\",\n \"SCMP_ARCH_MIPS64N32\"\n ]\n },\n {\n \"architecture\": \"SCMP_ARCH_MIPS64N32\",\n \"subArchitectures\": [\n \"SCMP_ARCH_MIPS\",\n \"SCMP_ARCH_MIPS64\"\n ]\n },\n {\n \"architecture\": \"SCMP_ARCH_MIPSEL64\",\n \"subArchitectures\": [\n \"SCMP_ARCH_MIPSEL\",\n \"SCMP_ARCH_MIPSEL64N32\"\n ]\n },\n {\n \"architecture\": \"SCMP_ARCH_MIPSEL64N32\",\n \"subArchitectures\": [\n \"SCMP_ARCH_MIPSEL\",\n \"SCMP_ARCH_MIPSEL64\"\n ]\n },\n {\n \"architecture\": \"SCMP_ARCH_S390X\",\n \"subArchitectures\": [\n \"SCMP_ARCH_S390\"\n ]\n },\n {\n \"architecture\": \"SCMP_ARCH_RISCV64\",\n \"subArchitectures\": null\n },\n {\n \"architecture\": \"SCMP_ARCH_LOONGARCH64\",\n \"subArchitectures\": null\n }\n ],\n \"syscalls\": [\n {\n \"names\": [\n \"clone\",\n \"clone3\",\n \"unshare\",\n \"mount\",\n \"umount2\",\n \"pivot_root\",\n \"setns\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"comment\": \"P0 spike: userns/mount syscalls bubblewrap needs, without CAP_SYS_ADMIN\"\n },\n {\n \"names\": [\n \"accept\",\n \"accept4\",\n \"access\",\n \"adjtimex\",\n \"alarm\",\n \"bind\",\n \"brk\",\n \"cachestat\",\n \"capget\",\n \"capset\",\n \"chdir\",\n \"chmod\",\n \"chown\",\n \"chown32\",\n \"clock_adjtime\",\n \"clock_adjtime64\",\n \"clock_getres\",\n \"clock_getres_time64\",\n \"clock_gettime\",\n \"clock_gettime64\",\n \"clock_nanosleep\",\n \"clock_nanosleep_time64\",\n \"close\",\n \"close_range\",\n \"connect\",\n \"copy_file_range\",\n \"creat\",\n \"dup\",\n \"dup2\",\n \"dup3\",\n \"epoll_create\",\n \"epoll_create1\",\n \"epoll_ctl\",\n \"epoll_ctl_old\",\n \"epoll_pwait\",\n \"epoll_pwait2\",\n \"epoll_wait\",\n \"epoll_wait_old\",\n \"eventfd\",\n \"eventfd2\",\n \"execve\",\n \"execveat\",\n \"exit\",\n \"exit_group\",\n \"faccessat\",\n \"faccessat2\",\n \"fadvise64\",\n \"fadvise64_64\",\n \"fallocate\",\n \"fanotify_mark\",\n \"fchdir\",\n \"fchmod\",\n \"fchmodat\",\n \"fchmodat2\",\n \"fchown\",\n \"fchown32\",\n \"fchownat\",\n \"fcntl\",\n \"fcntl64\",\n \"fdatasync\",\n \"fgetxattr\",\n \"flistxattr\",\n \"flock\",\n \"fork\",\n \"fremovexattr\",\n \"fsetxattr\",\n \"fstat\",\n \"fstat64\",\n \"fstatat64\",\n \"fstatfs\",\n \"fstatfs64\",\n \"fsync\",\n \"ftruncate\",\n \"ftruncate64\",\n \"futex\",\n \"futex_requeue\",\n \"futex_time64\",\n \"futex_wait\",\n \"futex_waitv\",\n \"futex_wake\",\n \"futimesat\",\n \"getcpu\",\n \"getcwd\",\n \"getdents\",\n \"getdents64\",\n \"getegid\",\n \"getegid32\",\n \"geteuid\",\n \"geteuid32\",\n \"getgid\",\n \"getgid32\",\n \"getgroups\",\n \"getgroups32\",\n \"getitimer\",\n \"getpeername\",\n \"getpgid\",\n \"getpgrp\",\n \"getpid\",\n \"getppid\",\n \"getpriority\",\n \"getrandom\",\n \"getresgid\",\n \"getresgid32\",\n \"getresuid\",\n \"getresuid32\",\n \"getrlimit\",\n \"get_robust_list\",\n \"getrusage\",\n \"getsid\",\n \"getsockname\",\n \"getsockopt\",\n \"get_thread_area\",\n \"gettid\",\n \"gettimeofday\",\n \"getuid\",\n \"getuid32\",\n \"getxattr\",\n \"getxattrat\",\n \"inotify_add_watch\",\n \"inotify_init\",\n \"inotify_init1\",\n \"inotify_rm_watch\",\n \"io_cancel\",\n \"ioctl\",\n \"io_destroy\",\n \"io_getevents\",\n \"io_pgetevents\",\n \"io_pgetevents_time64\",\n \"ioprio_get\",\n \"ioprio_set\",\n \"io_setup\",\n \"io_submit\",\n \"ipc\",\n \"kill\",\n \"landlock_add_rule\",\n \"landlock_create_ruleset\",\n \"landlock_restrict_self\",\n \"lchown\",\n \"lchown32\",\n \"lgetxattr\",\n \"link\",\n \"linkat\",\n \"listen\",\n \"listmount\",\n \"listxattr\",\n \"listxattrat\",\n \"llistxattr\",\n \"_llseek\",\n \"lremovexattr\",\n \"lseek\",\n \"lsetxattr\",\n \"lstat\",\n \"lstat64\",\n \"madvise\",\n \"map_shadow_stack\",\n \"membarrier\",\n \"memfd_create\",\n \"memfd_secret\",\n \"mincore\",\n \"mkdir\",\n \"mkdirat\",\n \"mknod\",\n \"mknodat\",\n \"mlock\",\n \"mlock2\",\n \"mlockall\",\n \"mmap\",\n \"mmap2\",\n \"mprotect\",\n \"mq_getsetattr\",\n \"mq_notify\",\n \"mq_open\",\n \"mq_timedreceive\",\n \"mq_timedreceive_time64\",\n \"mq_timedsend\",\n \"mq_timedsend_time64\",\n \"mq_unlink\",\n \"mremap\",\n \"mseal\",\n \"msgctl\",\n \"msgget\",\n \"msgrcv\",\n \"msgsnd\",\n \"msync\",\n \"munlock\",\n \"munlockall\",\n \"munmap\",\n \"name_to_handle_at\",\n \"nanosleep\",\n \"newfstatat\",\n \"_newselect\",\n \"open\",\n \"openat\",\n \"openat2\",\n \"pause\",\n \"pidfd_open\",\n \"pidfd_send_signal\",\n \"pipe\",\n \"pipe2\",\n \"pkey_alloc\",\n \"pkey_free\",\n \"pkey_mprotect\",\n \"poll\",\n \"ppoll\",\n \"ppoll_time64\",\n \"prctl\",\n \"pread64\",\n \"preadv\",\n \"preadv2\",\n \"prlimit64\",\n \"process_mrelease\",\n \"pselect6\",\n \"pselect6_time64\",\n \"pwrite64\",\n \"pwritev\",\n \"pwritev2\",\n \"read\",\n \"readahead\",\n \"readlink\",\n \"readlinkat\",\n \"readv\",\n \"recv\",\n \"recvfrom\",\n \"recvmmsg\",\n \"recvmmsg_time64\",\n \"recvmsg\",\n \"remap_file_pages\",\n \"removexattr\",\n \"removexattrat\",\n \"rename\",\n \"renameat\",\n \"renameat2\",\n \"restart_syscall\",\n \"riscv_hwprobe\",\n \"rmdir\",\n \"rseq\",\n \"rt_sigaction\",\n \"rt_sigpending\",\n \"rt_sigprocmask\",\n \"rt_sigqueueinfo\",\n \"rt_sigreturn\",\n \"rt_sigsuspend\",\n \"rt_sigtimedwait\",\n \"rt_sigtimedwait_time64\",\n \"rt_tgsigqueueinfo\",\n \"sched_getaffinity\",\n \"sched_getattr\",\n \"sched_getparam\",\n \"sched_get_priority_max\",\n \"sched_get_priority_min\",\n \"sched_getscheduler\",\n \"sched_rr_get_interval\",\n \"sched_rr_get_interval_time64\",\n \"sched_setaffinity\",\n \"sched_setattr\",\n \"sched_setparam\",\n \"sched_setscheduler\",\n \"sched_yield\",\n \"seccomp\",\n \"select\",\n \"semctl\",\n \"semget\",\n \"semop\",\n \"semtimedop\",\n \"semtimedop_time64\",\n \"send\",\n \"sendfile\",\n \"sendfile64\",\n \"sendmmsg\",\n \"sendmsg\",\n \"sendto\",\n \"setfsgid\",\n \"setfsgid32\",\n \"setfsuid\",\n \"setfsuid32\",\n \"setgid\",\n \"setgid32\",\n \"setgroups\",\n \"setgroups32\",\n \"setitimer\",\n \"setpgid\",\n \"setpriority\",\n \"setregid\",\n \"setregid32\",\n \"setresgid\",\n \"setresgid32\",\n \"setresuid\",\n \"setresuid32\",\n \"setreuid\",\n \"setreuid32\",\n \"setrlimit\",\n \"set_robust_list\",\n \"setsid\",\n \"setsockopt\",\n \"set_thread_area\",\n \"set_tid_address\",\n \"setuid\",\n \"setuid32\",\n \"setxattr\",\n \"setxattrat\",\n \"shmat\",\n \"shmctl\",\n \"shmdt\",\n \"shmget\",\n \"shutdown\",\n \"sigaltstack\",\n \"signalfd\",\n \"signalfd4\",\n \"sigprocmask\",\n \"sigreturn\",\n \"socketcall\",\n \"socketpair\",\n \"splice\",\n \"stat\",\n \"stat64\",\n \"statfs\",\n \"statfs64\",\n \"statmount\",\n \"statx\",\n \"symlink\",\n \"symlinkat\",\n \"sync\",\n \"sync_file_range\",\n \"syncfs\",\n \"sysinfo\",\n \"tee\",\n \"tgkill\",\n \"time\",\n \"timer_create\",\n \"timer_delete\",\n \"timer_getoverrun\",\n \"timer_gettime\",\n \"timer_gettime64\",\n \"timer_settime\",\n \"timer_settime64\",\n \"timerfd_create\",\n \"timerfd_gettime\",\n \"timerfd_gettime64\",\n \"timerfd_settime\",\n \"timerfd_settime64\",\n \"times\",\n \"tkill\",\n \"truncate\",\n \"truncate64\",\n \"ugetrlimit\",\n \"umask\",\n \"uname\",\n \"unlink\",\n \"unlinkat\",\n \"uretprobe\",\n \"utime\",\n \"utimensat\",\n \"utimensat_time64\",\n \"utimes\",\n \"vfork\",\n \"vmsplice\",\n \"wait4\",\n \"waitid\",\n \"waitpid\",\n \"write\",\n \"writev\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\"\n },\n {\n \"names\": [\n \"process_vm_readv\",\n \"process_vm_writev\",\n \"ptrace\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"minKernel\": \"4.8\"\n }\n },\n {\n \"names\": [\n \"socket\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"args\": [\n {\n \"index\": 0,\n \"value\": 38,\n \"op\": \"SCMP_CMP_LT\"\n }\n ]\n },\n {\n \"names\": [\n \"socket\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"args\": [\n {\n \"index\": 0,\n \"value\": 39,\n \"op\": \"SCMP_CMP_EQ\"\n }\n ]\n },\n {\n \"names\": [\n \"socket\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"args\": [\n {\n \"index\": 0,\n \"value\": 41,\n \"op\": \"SCMP_CMP_EQ\"\n }\n ]\n },\n {\n \"names\": [\n \"socket\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"args\": [\n {\n \"index\": 0,\n \"value\": 42,\n \"op\": \"SCMP_CMP_EQ\"\n }\n ]\n },\n {\n \"names\": [\n \"socket\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"args\": [\n {\n \"index\": 0,\n \"value\": 43,\n \"op\": \"SCMP_CMP_EQ\"\n }\n ]\n },\n {\n \"names\": [\n \"socket\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"args\": [\n {\n \"index\": 0,\n \"value\": 44,\n \"op\": \"SCMP_CMP_EQ\"\n }\n ]\n },\n {\n \"names\": [\n \"socket\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"args\": [\n {\n \"index\": 0,\n \"value\": 45,\n \"op\": \"SCMP_CMP_EQ\"\n }\n ]\n },\n {\n \"names\": [\n \"personality\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"args\": [\n {\n \"index\": 0,\n \"value\": 0,\n \"op\": \"SCMP_CMP_EQ\"\n }\n ]\n },\n {\n \"names\": [\n \"personality\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"args\": [\n {\n \"index\": 0,\n \"value\": 8,\n \"op\": \"SCMP_CMP_EQ\"\n }\n ]\n },\n {\n \"names\": [\n \"personality\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"args\": [\n {\n \"index\": 0,\n \"value\": 131072,\n \"op\": \"SCMP_CMP_EQ\"\n }\n ]\n },\n {\n \"names\": [\n \"personality\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"args\": [\n {\n \"index\": 0,\n \"value\": 131080,\n \"op\": \"SCMP_CMP_EQ\"\n }\n ]\n },\n {\n \"names\": [\n \"personality\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"args\": [\n {\n \"index\": 0,\n \"value\": 4294967295,\n \"op\": \"SCMP_CMP_EQ\"\n }\n ]\n },\n {\n \"names\": [\n \"sync_file_range2\",\n \"swapcontext\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"arches\": [\n \"ppc64le\"\n ]\n }\n },\n {\n \"names\": [\n \"arm_fadvise64_64\",\n \"arm_sync_file_range\",\n \"sync_file_range2\",\n \"breakpoint\",\n \"cacheflush\",\n \"set_tls\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"arches\": [\n \"arm\",\n \"arm64\"\n ]\n }\n },\n {\n \"names\": [\n \"arch_prctl\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"arches\": [\n \"amd64\",\n \"x32\"\n ]\n }\n },\n {\n \"names\": [\n \"modify_ldt\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"arches\": [\n \"amd64\",\n \"x32\",\n \"x86\"\n ]\n }\n },\n {\n \"names\": [\n \"s390_pci_mmio_read\",\n \"s390_pci_mmio_write\",\n \"s390_runtime_instr\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"arches\": [\n \"s390\",\n \"s390x\"\n ]\n }\n },\n {\n \"names\": [\n \"riscv_flush_icache\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"arches\": [\n \"riscv64\"\n ]\n }\n },\n {\n \"names\": [\n \"open_by_handle_at\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"caps\": [\n \"CAP_DAC_READ_SEARCH\"\n ]\n }\n },\n {\n \"names\": [\n \"bpf\",\n \"clone\",\n \"clone3\",\n \"fanotify_init\",\n \"fsconfig\",\n \"fsmount\",\n \"fsopen\",\n \"fspick\",\n \"lookup_dcookie\",\n \"lsm_get_self_attr\",\n \"lsm_list_modules\",\n \"lsm_set_self_attr\",\n \"mount\",\n \"mount_setattr\",\n \"move_mount\",\n \"open_tree\",\n \"perf_event_open\",\n \"quotactl\",\n \"quotactl_fd\",\n \"setdomainname\",\n \"sethostname\",\n \"setns\",\n \"syslog\",\n \"umount\",\n \"umount2\",\n \"unshare\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"caps\": [\n \"CAP_SYS_ADMIN\"\n ]\n }\n },\n {\n \"names\": [\n \"clone\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"args\": [\n {\n \"index\": 0,\n \"value\": 2114060288,\n \"op\": \"SCMP_CMP_MASKED_EQ\"\n }\n ],\n \"excludes\": {\n \"caps\": [\n \"CAP_SYS_ADMIN\"\n ],\n \"arches\": [\n \"s390\",\n \"s390x\"\n ]\n }\n },\n {\n \"names\": [\n \"clone\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"args\": [\n {\n \"index\": 1,\n \"value\": 2114060288,\n \"op\": \"SCMP_CMP_MASKED_EQ\"\n }\n ],\n \"comment\": \"s390 parameter ordering for clone is different\",\n \"includes\": {\n \"arches\": [\n \"s390\",\n \"s390x\"\n ]\n },\n \"excludes\": {\n \"caps\": [\n \"CAP_SYS_ADMIN\"\n ]\n }\n },\n {\n \"names\": [\n \"reboot\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"caps\": [\n \"CAP_SYS_BOOT\"\n ]\n }\n },\n {\n \"names\": [\n \"chroot\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"caps\": [\n \"CAP_SYS_CHROOT\"\n ]\n }\n },\n {\n \"names\": [\n \"delete_module\",\n \"init_module\",\n \"finit_module\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"caps\": [\n \"CAP_SYS_MODULE\"\n ]\n }\n },\n {\n \"names\": [\n \"acct\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"caps\": [\n \"CAP_SYS_PACCT\"\n ]\n }\n },\n {\n \"names\": [\n \"kcmp\",\n \"pidfd_getfd\",\n \"process_madvise\",\n \"process_vm_readv\",\n \"process_vm_writev\",\n \"ptrace\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"caps\": [\n \"CAP_SYS_PTRACE\"\n ]\n }\n },\n {\n \"names\": [\n \"iopl\",\n \"ioperm\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"caps\": [\n \"CAP_SYS_RAWIO\"\n ]\n }\n },\n {\n \"names\": [\n \"settimeofday\",\n \"stime\",\n \"clock_settime\",\n \"clock_settime64\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"caps\": [\n \"CAP_SYS_TIME\"\n ]\n }\n },\n {\n \"names\": [\n \"vhangup\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"caps\": [\n \"CAP_SYS_TTY_CONFIG\"\n ]\n }\n },\n {\n \"names\": [\n \"get_mempolicy\",\n \"mbind\",\n \"set_mempolicy\",\n \"set_mempolicy_home_node\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"caps\": [\n \"CAP_SYS_NICE\"\n ]\n }\n },\n {\n \"names\": [\n \"syslog\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"caps\": [\n \"CAP_SYSLOG\"\n ]\n }\n },\n {\n \"names\": [\n \"bpf\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"caps\": [\n \"CAP_BPF\"\n ]\n }\n },\n {\n \"names\": [\n \"perf_event_open\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"caps\": [\n \"CAP_PERFMON\"\n ]\n }\n }\n ]\n}";
@@ -0,0 +1,11 @@
1
+ /* v8 ignore file -- pinned data module */
2
+ /**
3
+ * Docker's default seccomp profile plus the seven namespace syscalls bubblewrap
4
+ * needs without CAP_SYS_ADMIN (clone, clone3, unshare, mount, umount2, pivot_root,
5
+ * setns): the narrowest profile under which Grok 1.0.34's sandbox starts
6
+ * (Noopolis P0 container evidence, 2026-09-17). Bytes are pinned by sha256; Daimon's
7
+ * Grok broker projection and slot preflight receipt bind the same digest.
8
+ */
9
+ export const DAIMON_GROK_SECCOMP_PROFILE_FILE_NAME = "seccomp-default-plus-userns.json";
10
+ export const DAIMON_GROK_SECCOMP_PROFILE_SHA256 = "9666074d2d6b1a261a410598b9ce1714d9060a6ef4c9c1d1cfb6f8915d7e842a";
11
+ export const DAIMON_GROK_SECCOMP_PROFILE_BYTES = "{\n \"defaultAction\": \"SCMP_ACT_ERRNO\",\n \"defaultErrnoRet\": 1,\n \"archMap\": [\n {\n \"architecture\": \"SCMP_ARCH_X86_64\",\n \"subArchitectures\": [\n \"SCMP_ARCH_X86\",\n \"SCMP_ARCH_X32\"\n ]\n },\n {\n \"architecture\": \"SCMP_ARCH_AARCH64\",\n \"subArchitectures\": [\n \"SCMP_ARCH_ARM\"\n ]\n },\n {\n \"architecture\": \"SCMP_ARCH_MIPS64\",\n \"subArchitectures\": [\n \"SCMP_ARCH_MIPS\",\n \"SCMP_ARCH_MIPS64N32\"\n ]\n },\n {\n \"architecture\": \"SCMP_ARCH_MIPS64N32\",\n \"subArchitectures\": [\n \"SCMP_ARCH_MIPS\",\n \"SCMP_ARCH_MIPS64\"\n ]\n },\n {\n \"architecture\": \"SCMP_ARCH_MIPSEL64\",\n \"subArchitectures\": [\n \"SCMP_ARCH_MIPSEL\",\n \"SCMP_ARCH_MIPSEL64N32\"\n ]\n },\n {\n \"architecture\": \"SCMP_ARCH_MIPSEL64N32\",\n \"subArchitectures\": [\n \"SCMP_ARCH_MIPSEL\",\n \"SCMP_ARCH_MIPSEL64\"\n ]\n },\n {\n \"architecture\": \"SCMP_ARCH_S390X\",\n \"subArchitectures\": [\n \"SCMP_ARCH_S390\"\n ]\n },\n {\n \"architecture\": \"SCMP_ARCH_RISCV64\",\n \"subArchitectures\": null\n },\n {\n \"architecture\": \"SCMP_ARCH_LOONGARCH64\",\n \"subArchitectures\": null\n }\n ],\n \"syscalls\": [\n {\n \"names\": [\n \"clone\",\n \"clone3\",\n \"unshare\",\n \"mount\",\n \"umount2\",\n \"pivot_root\",\n \"setns\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"comment\": \"P0 spike: userns/mount syscalls bubblewrap needs, without CAP_SYS_ADMIN\"\n },\n {\n \"names\": [\n \"accept\",\n \"accept4\",\n \"access\",\n \"adjtimex\",\n \"alarm\",\n \"bind\",\n \"brk\",\n \"cachestat\",\n \"capget\",\n \"capset\",\n \"chdir\",\n \"chmod\",\n \"chown\",\n \"chown32\",\n \"clock_adjtime\",\n \"clock_adjtime64\",\n \"clock_getres\",\n \"clock_getres_time64\",\n \"clock_gettime\",\n \"clock_gettime64\",\n \"clock_nanosleep\",\n \"clock_nanosleep_time64\",\n \"close\",\n \"close_range\",\n \"connect\",\n \"copy_file_range\",\n \"creat\",\n \"dup\",\n \"dup2\",\n \"dup3\",\n \"epoll_create\",\n \"epoll_create1\",\n \"epoll_ctl\",\n \"epoll_ctl_old\",\n \"epoll_pwait\",\n \"epoll_pwait2\",\n \"epoll_wait\",\n \"epoll_wait_old\",\n \"eventfd\",\n \"eventfd2\",\n \"execve\",\n \"execveat\",\n \"exit\",\n \"exit_group\",\n \"faccessat\",\n \"faccessat2\",\n \"fadvise64\",\n \"fadvise64_64\",\n \"fallocate\",\n \"fanotify_mark\",\n \"fchdir\",\n \"fchmod\",\n \"fchmodat\",\n \"fchmodat2\",\n \"fchown\",\n \"fchown32\",\n \"fchownat\",\n \"fcntl\",\n \"fcntl64\",\n \"fdatasync\",\n \"fgetxattr\",\n \"flistxattr\",\n \"flock\",\n \"fork\",\n \"fremovexattr\",\n \"fsetxattr\",\n \"fstat\",\n \"fstat64\",\n \"fstatat64\",\n \"fstatfs\",\n \"fstatfs64\",\n \"fsync\",\n \"ftruncate\",\n \"ftruncate64\",\n \"futex\",\n \"futex_requeue\",\n \"futex_time64\",\n \"futex_wait\",\n \"futex_waitv\",\n \"futex_wake\",\n \"futimesat\",\n \"getcpu\",\n \"getcwd\",\n \"getdents\",\n \"getdents64\",\n \"getegid\",\n \"getegid32\",\n \"geteuid\",\n \"geteuid32\",\n \"getgid\",\n \"getgid32\",\n \"getgroups\",\n \"getgroups32\",\n \"getitimer\",\n \"getpeername\",\n \"getpgid\",\n \"getpgrp\",\n \"getpid\",\n \"getppid\",\n \"getpriority\",\n \"getrandom\",\n \"getresgid\",\n \"getresgid32\",\n \"getresuid\",\n \"getresuid32\",\n \"getrlimit\",\n \"get_robust_list\",\n \"getrusage\",\n \"getsid\",\n \"getsockname\",\n \"getsockopt\",\n \"get_thread_area\",\n \"gettid\",\n \"gettimeofday\",\n \"getuid\",\n \"getuid32\",\n \"getxattr\",\n \"getxattrat\",\n \"inotify_add_watch\",\n \"inotify_init\",\n \"inotify_init1\",\n \"inotify_rm_watch\",\n \"io_cancel\",\n \"ioctl\",\n \"io_destroy\",\n \"io_getevents\",\n \"io_pgetevents\",\n \"io_pgetevents_time64\",\n \"ioprio_get\",\n \"ioprio_set\",\n \"io_setup\",\n \"io_submit\",\n \"ipc\",\n \"kill\",\n \"landlock_add_rule\",\n \"landlock_create_ruleset\",\n \"landlock_restrict_self\",\n \"lchown\",\n \"lchown32\",\n \"lgetxattr\",\n \"link\",\n \"linkat\",\n \"listen\",\n \"listmount\",\n \"listxattr\",\n \"listxattrat\",\n \"llistxattr\",\n \"_llseek\",\n \"lremovexattr\",\n \"lseek\",\n \"lsetxattr\",\n \"lstat\",\n \"lstat64\",\n \"madvise\",\n \"map_shadow_stack\",\n \"membarrier\",\n \"memfd_create\",\n \"memfd_secret\",\n \"mincore\",\n \"mkdir\",\n \"mkdirat\",\n \"mknod\",\n \"mknodat\",\n \"mlock\",\n \"mlock2\",\n \"mlockall\",\n \"mmap\",\n \"mmap2\",\n \"mprotect\",\n \"mq_getsetattr\",\n \"mq_notify\",\n \"mq_open\",\n \"mq_timedreceive\",\n \"mq_timedreceive_time64\",\n \"mq_timedsend\",\n \"mq_timedsend_time64\",\n \"mq_unlink\",\n \"mremap\",\n \"mseal\",\n \"msgctl\",\n \"msgget\",\n \"msgrcv\",\n \"msgsnd\",\n \"msync\",\n \"munlock\",\n \"munlockall\",\n \"munmap\",\n \"name_to_handle_at\",\n \"nanosleep\",\n \"newfstatat\",\n \"_newselect\",\n \"open\",\n \"openat\",\n \"openat2\",\n \"pause\",\n \"pidfd_open\",\n \"pidfd_send_signal\",\n \"pipe\",\n \"pipe2\",\n \"pkey_alloc\",\n \"pkey_free\",\n \"pkey_mprotect\",\n \"poll\",\n \"ppoll\",\n \"ppoll_time64\",\n \"prctl\",\n \"pread64\",\n \"preadv\",\n \"preadv2\",\n \"prlimit64\",\n \"process_mrelease\",\n \"pselect6\",\n \"pselect6_time64\",\n \"pwrite64\",\n \"pwritev\",\n \"pwritev2\",\n \"read\",\n \"readahead\",\n \"readlink\",\n \"readlinkat\",\n \"readv\",\n \"recv\",\n \"recvfrom\",\n \"recvmmsg\",\n \"recvmmsg_time64\",\n \"recvmsg\",\n \"remap_file_pages\",\n \"removexattr\",\n \"removexattrat\",\n \"rename\",\n \"renameat\",\n \"renameat2\",\n \"restart_syscall\",\n \"riscv_hwprobe\",\n \"rmdir\",\n \"rseq\",\n \"rt_sigaction\",\n \"rt_sigpending\",\n \"rt_sigprocmask\",\n \"rt_sigqueueinfo\",\n \"rt_sigreturn\",\n \"rt_sigsuspend\",\n \"rt_sigtimedwait\",\n \"rt_sigtimedwait_time64\",\n \"rt_tgsigqueueinfo\",\n \"sched_getaffinity\",\n \"sched_getattr\",\n \"sched_getparam\",\n \"sched_get_priority_max\",\n \"sched_get_priority_min\",\n \"sched_getscheduler\",\n \"sched_rr_get_interval\",\n \"sched_rr_get_interval_time64\",\n \"sched_setaffinity\",\n \"sched_setattr\",\n \"sched_setparam\",\n \"sched_setscheduler\",\n \"sched_yield\",\n \"seccomp\",\n \"select\",\n \"semctl\",\n \"semget\",\n \"semop\",\n \"semtimedop\",\n \"semtimedop_time64\",\n \"send\",\n \"sendfile\",\n \"sendfile64\",\n \"sendmmsg\",\n \"sendmsg\",\n \"sendto\",\n \"setfsgid\",\n \"setfsgid32\",\n \"setfsuid\",\n \"setfsuid32\",\n \"setgid\",\n \"setgid32\",\n \"setgroups\",\n \"setgroups32\",\n \"setitimer\",\n \"setpgid\",\n \"setpriority\",\n \"setregid\",\n \"setregid32\",\n \"setresgid\",\n \"setresgid32\",\n \"setresuid\",\n \"setresuid32\",\n \"setreuid\",\n \"setreuid32\",\n \"setrlimit\",\n \"set_robust_list\",\n \"setsid\",\n \"setsockopt\",\n \"set_thread_area\",\n \"set_tid_address\",\n \"setuid\",\n \"setuid32\",\n \"setxattr\",\n \"setxattrat\",\n \"shmat\",\n \"shmctl\",\n \"shmdt\",\n \"shmget\",\n \"shutdown\",\n \"sigaltstack\",\n \"signalfd\",\n \"signalfd4\",\n \"sigprocmask\",\n \"sigreturn\",\n \"socketcall\",\n \"socketpair\",\n \"splice\",\n \"stat\",\n \"stat64\",\n \"statfs\",\n \"statfs64\",\n \"statmount\",\n \"statx\",\n \"symlink\",\n \"symlinkat\",\n \"sync\",\n \"sync_file_range\",\n \"syncfs\",\n \"sysinfo\",\n \"tee\",\n \"tgkill\",\n \"time\",\n \"timer_create\",\n \"timer_delete\",\n \"timer_getoverrun\",\n \"timer_gettime\",\n \"timer_gettime64\",\n \"timer_settime\",\n \"timer_settime64\",\n \"timerfd_create\",\n \"timerfd_gettime\",\n \"timerfd_gettime64\",\n \"timerfd_settime\",\n \"timerfd_settime64\",\n \"times\",\n \"tkill\",\n \"truncate\",\n \"truncate64\",\n \"ugetrlimit\",\n \"umask\",\n \"uname\",\n \"unlink\",\n \"unlinkat\",\n \"uretprobe\",\n \"utime\",\n \"utimensat\",\n \"utimensat_time64\",\n \"utimes\",\n \"vfork\",\n \"vmsplice\",\n \"wait4\",\n \"waitid\",\n \"waitpid\",\n \"write\",\n \"writev\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\"\n },\n {\n \"names\": [\n \"process_vm_readv\",\n \"process_vm_writev\",\n \"ptrace\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"minKernel\": \"4.8\"\n }\n },\n {\n \"names\": [\n \"socket\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"args\": [\n {\n \"index\": 0,\n \"value\": 38,\n \"op\": \"SCMP_CMP_LT\"\n }\n ]\n },\n {\n \"names\": [\n \"socket\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"args\": [\n {\n \"index\": 0,\n \"value\": 39,\n \"op\": \"SCMP_CMP_EQ\"\n }\n ]\n },\n {\n \"names\": [\n \"socket\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"args\": [\n {\n \"index\": 0,\n \"value\": 41,\n \"op\": \"SCMP_CMP_EQ\"\n }\n ]\n },\n {\n \"names\": [\n \"socket\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"args\": [\n {\n \"index\": 0,\n \"value\": 42,\n \"op\": \"SCMP_CMP_EQ\"\n }\n ]\n },\n {\n \"names\": [\n \"socket\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"args\": [\n {\n \"index\": 0,\n \"value\": 43,\n \"op\": \"SCMP_CMP_EQ\"\n }\n ]\n },\n {\n \"names\": [\n \"socket\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"args\": [\n {\n \"index\": 0,\n \"value\": 44,\n \"op\": \"SCMP_CMP_EQ\"\n }\n ]\n },\n {\n \"names\": [\n \"socket\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"args\": [\n {\n \"index\": 0,\n \"value\": 45,\n \"op\": \"SCMP_CMP_EQ\"\n }\n ]\n },\n {\n \"names\": [\n \"personality\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"args\": [\n {\n \"index\": 0,\n \"value\": 0,\n \"op\": \"SCMP_CMP_EQ\"\n }\n ]\n },\n {\n \"names\": [\n \"personality\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"args\": [\n {\n \"index\": 0,\n \"value\": 8,\n \"op\": \"SCMP_CMP_EQ\"\n }\n ]\n },\n {\n \"names\": [\n \"personality\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"args\": [\n {\n \"index\": 0,\n \"value\": 131072,\n \"op\": \"SCMP_CMP_EQ\"\n }\n ]\n },\n {\n \"names\": [\n \"personality\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"args\": [\n {\n \"index\": 0,\n \"value\": 131080,\n \"op\": \"SCMP_CMP_EQ\"\n }\n ]\n },\n {\n \"names\": [\n \"personality\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"args\": [\n {\n \"index\": 0,\n \"value\": 4294967295,\n \"op\": \"SCMP_CMP_EQ\"\n }\n ]\n },\n {\n \"names\": [\n \"sync_file_range2\",\n \"swapcontext\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"arches\": [\n \"ppc64le\"\n ]\n }\n },\n {\n \"names\": [\n \"arm_fadvise64_64\",\n \"arm_sync_file_range\",\n \"sync_file_range2\",\n \"breakpoint\",\n \"cacheflush\",\n \"set_tls\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"arches\": [\n \"arm\",\n \"arm64\"\n ]\n }\n },\n {\n \"names\": [\n \"arch_prctl\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"arches\": [\n \"amd64\",\n \"x32\"\n ]\n }\n },\n {\n \"names\": [\n \"modify_ldt\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"arches\": [\n \"amd64\",\n \"x32\",\n \"x86\"\n ]\n }\n },\n {\n \"names\": [\n \"s390_pci_mmio_read\",\n \"s390_pci_mmio_write\",\n \"s390_runtime_instr\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"arches\": [\n \"s390\",\n \"s390x\"\n ]\n }\n },\n {\n \"names\": [\n \"riscv_flush_icache\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"arches\": [\n \"riscv64\"\n ]\n }\n },\n {\n \"names\": [\n \"open_by_handle_at\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"caps\": [\n \"CAP_DAC_READ_SEARCH\"\n ]\n }\n },\n {\n \"names\": [\n \"bpf\",\n \"clone\",\n \"clone3\",\n \"fanotify_init\",\n \"fsconfig\",\n \"fsmount\",\n \"fsopen\",\n \"fspick\",\n \"lookup_dcookie\",\n \"lsm_get_self_attr\",\n \"lsm_list_modules\",\n \"lsm_set_self_attr\",\n \"mount\",\n \"mount_setattr\",\n \"move_mount\",\n \"open_tree\",\n \"perf_event_open\",\n \"quotactl\",\n \"quotactl_fd\",\n \"setdomainname\",\n \"sethostname\",\n \"setns\",\n \"syslog\",\n \"umount\",\n \"umount2\",\n \"unshare\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"caps\": [\n \"CAP_SYS_ADMIN\"\n ]\n }\n },\n {\n \"names\": [\n \"clone\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"args\": [\n {\n \"index\": 0,\n \"value\": 2114060288,\n \"op\": \"SCMP_CMP_MASKED_EQ\"\n }\n ],\n \"excludes\": {\n \"caps\": [\n \"CAP_SYS_ADMIN\"\n ],\n \"arches\": [\n \"s390\",\n \"s390x\"\n ]\n }\n },\n {\n \"names\": [\n \"clone\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"args\": [\n {\n \"index\": 1,\n \"value\": 2114060288,\n \"op\": \"SCMP_CMP_MASKED_EQ\"\n }\n ],\n \"comment\": \"s390 parameter ordering for clone is different\",\n \"includes\": {\n \"arches\": [\n \"s390\",\n \"s390x\"\n ]\n },\n \"excludes\": {\n \"caps\": [\n \"CAP_SYS_ADMIN\"\n ]\n }\n },\n {\n \"names\": [\n \"reboot\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"caps\": [\n \"CAP_SYS_BOOT\"\n ]\n }\n },\n {\n \"names\": [\n \"chroot\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"caps\": [\n \"CAP_SYS_CHROOT\"\n ]\n }\n },\n {\n \"names\": [\n \"delete_module\",\n \"init_module\",\n \"finit_module\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"caps\": [\n \"CAP_SYS_MODULE\"\n ]\n }\n },\n {\n \"names\": [\n \"acct\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"caps\": [\n \"CAP_SYS_PACCT\"\n ]\n }\n },\n {\n \"names\": [\n \"kcmp\",\n \"pidfd_getfd\",\n \"process_madvise\",\n \"process_vm_readv\",\n \"process_vm_writev\",\n \"ptrace\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"caps\": [\n \"CAP_SYS_PTRACE\"\n ]\n }\n },\n {\n \"names\": [\n \"iopl\",\n \"ioperm\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"caps\": [\n \"CAP_SYS_RAWIO\"\n ]\n }\n },\n {\n \"names\": [\n \"settimeofday\",\n \"stime\",\n \"clock_settime\",\n \"clock_settime64\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"caps\": [\n \"CAP_SYS_TIME\"\n ]\n }\n },\n {\n \"names\": [\n \"vhangup\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"caps\": [\n \"CAP_SYS_TTY_CONFIG\"\n ]\n }\n },\n {\n \"names\": [\n \"get_mempolicy\",\n \"mbind\",\n \"set_mempolicy\",\n \"set_mempolicy_home_node\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"caps\": [\n \"CAP_SYS_NICE\"\n ]\n }\n },\n {\n \"names\": [\n \"syslog\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"caps\": [\n \"CAP_SYSLOG\"\n ]\n }\n },\n {\n \"names\": [\n \"bpf\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"caps\": [\n \"CAP_BPF\"\n ]\n }\n },\n {\n \"names\": [\n \"perf_event_open\"\n ],\n \"action\": \"SCMP_ACT_ALLOW\",\n \"includes\": {\n \"caps\": [\n \"CAP_PERFMON\"\n ]\n }\n }\n ]\n}";
@@ -2,3 +2,5 @@ export * from "./constants.js";
2
2
  export * from "./errors.js";
3
3
  export * from "./redaction.js";
4
4
  export * from "./types.js";
5
+ export * from "./volumeNames.js";
6
+ export * from "./daimonCodexDocker.js";
@@ -2,3 +2,5 @@ export * from "./constants.js";
2
2
  export * from "./errors.js";
3
3
  export * from "./redaction.js";
4
4
  export * from "./types.js";
5
+ export * from "./volumeNames.js";
6
+ export * from "./daimonCodexDocker.js";
@@ -1,6 +1,6 @@
1
1
  export type JsonPrimitive = boolean | null | number | string;
2
2
  export type JsonValue = JsonObject | JsonPrimitive | JsonValue[];
3
- export type ModelAuthMethod = "api_key" | "claude-code" | "codex" | "none";
3
+ export type ModelAuthMethod = "api_key" | "claude-code" | "codex" | "grok" | "none";
4
4
  export type ModelEndpointCompatibility = "anthropic" | "openai";
5
5
  export type RuntimeLifecycleStatus = "active" | "deprecated" | "exploratory";
6
6
  export interface JsonObject {
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Host-stable name for state that must be reattached, never cloned, across
3
+ * run and deployment identities. The mount id is compiler-owned and the
4
+ * digest prevents normalization collisions.
5
+ */
6
+ export declare const createExclusiveReattachVolumeName: (lineage: string, mountId: string) => string;
@@ -0,0 +1,14 @@
1
+ import { createHash } from "node:crypto";
2
+ /**
3
+ * Host-stable name for state that must be reattached, never cloned, across
4
+ * run and deployment identities. The mount id is compiler-owned and the
5
+ * digest prevents normalization collisions.
6
+ */
7
+ export const createExclusiveReattachVolumeName = (lineage, mountId) => {
8
+ const safe = mountId
9
+ .replace(/[^A-Za-z0-9_.-]+/gu, "-")
10
+ .replace(/^-+|-+$/gu, "")
11
+ .slice(0, 48) || "realm";
12
+ const digest = createHash("sha256").update(lineage, "utf8").update("\0").update(mountId, "utf8").digest("hex").slice(0, 16);
13
+ return `spawnfile-exclusive-${safe}-${digest}`;
14
+ };