@cleocode/core 2026.10.1 → 2026.10.3

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 (389) hide show
  1. package/dist/build-provenance.json +2 -2
  2. package/dist/cloud/http.d.ts +2 -0
  3. package/dist/cloud/http.d.ts.map +1 -1
  4. package/dist/cloud/http.js +3 -0
  5. package/dist/cloud/http.js.map +1 -1
  6. package/dist/cloud/journal.d.ts +9 -5
  7. package/dist/cloud/journal.d.ts.map +1 -1
  8. package/dist/cloud/journal.js +29 -8
  9. package/dist/cloud/journal.js.map +1 -1
  10. package/dist/cloud/manifest-check.d.ts +140 -4
  11. package/dist/cloud/manifest-check.d.ts.map +1 -1
  12. package/dist/cloud/manifest-check.js +322 -10
  13. package/dist/cloud/manifest-check.js.map +1 -1
  14. package/dist/cloud/nexus-attach.d.ts +25 -0
  15. package/dist/cloud/nexus-attach.d.ts.map +1 -1
  16. package/dist/cloud/nexus-attach.js +81 -6
  17. package/dist/cloud/nexus-attach.js.map +1 -1
  18. package/dist/cloud/nexus-cloud-activity.d.ts +37 -0
  19. package/dist/cloud/nexus-cloud-activity.d.ts.map +1 -0
  20. package/dist/cloud/nexus-cloud-activity.js +79 -0
  21. package/dist/cloud/nexus-cloud-activity.js.map +1 -0
  22. package/dist/cloud/nexus-cloud-status.d.ts.map +1 -1
  23. package/dist/cloud/nexus-cloud-status.js +36 -0
  24. package/dist/cloud/nexus-cloud-status.js.map +1 -1
  25. package/dist/cloud/nexus-device.d.ts +1 -1
  26. package/dist/cloud/nexus-enrol.d.ts.map +1 -1
  27. package/dist/cloud/nexus-enrol.js +5 -0
  28. package/dist/cloud/nexus-enrol.js.map +1 -1
  29. package/dist/cloud/nexus-home.d.ts +74 -0
  30. package/dist/cloud/nexus-home.d.ts.map +1 -0
  31. package/dist/cloud/nexus-home.js +97 -0
  32. package/dist/cloud/nexus-home.js.map +1 -0
  33. package/dist/cloud/nexus-vault-keys.d.ts +130 -0
  34. package/dist/cloud/nexus-vault-keys.d.ts.map +1 -0
  35. package/dist/cloud/nexus-vault-keys.js +347 -0
  36. package/dist/cloud/nexus-vault-keys.js.map +1 -0
  37. package/dist/cloud/nexus-vault-state.d.ts +121 -0
  38. package/dist/cloud/nexus-vault-state.d.ts.map +1 -0
  39. package/dist/cloud/nexus-vault-state.js +274 -0
  40. package/dist/cloud/nexus-vault-state.js.map +1 -0
  41. package/dist/cloud/nexus-vault.d.ts +160 -0
  42. package/dist/cloud/nexus-vault.d.ts.map +1 -0
  43. package/dist/cloud/nexus-vault.js +1745 -0
  44. package/dist/cloud/nexus-vault.js.map +1 -0
  45. package/dist/cloud/signing.d.ts +24 -8
  46. package/dist/cloud/signing.d.ts.map +1 -1
  47. package/dist/cloud/signing.js +61 -15
  48. package/dist/cloud/signing.js.map +1 -1
  49. package/dist/docs/export-document.js +8137 -3318
  50. package/dist/docs/export-document.js.map +3 -3
  51. package/dist/doctor/migrations.d.ts +75 -0
  52. package/dist/doctor/migrations.d.ts.map +1 -0
  53. package/dist/doctor/migrations.js +136 -0
  54. package/dist/doctor/migrations.js.map +1 -0
  55. package/dist/doctor/sync-sealer.d.ts +48 -0
  56. package/dist/doctor/sync-sealer.d.ts.map +1 -0
  57. package/dist/doctor/sync-sealer.js +109 -0
  58. package/dist/doctor/sync-sealer.js.map +1 -0
  59. package/dist/doctor/sync-triggers.d.ts +53 -0
  60. package/dist/doctor/sync-triggers.d.ts.map +1 -0
  61. package/dist/doctor/sync-triggers.js +157 -0
  62. package/dist/doctor/sync-triggers.js.map +1 -0
  63. package/dist/init.d.ts.map +1 -1
  64. package/dist/init.js +5 -1
  65. package/dist/init.js.map +1 -1
  66. package/dist/internal.d.ts +1 -1
  67. package/dist/internal.d.ts.map +1 -1
  68. package/dist/internal.js +1 -1
  69. package/dist/internal.js.map +1 -1
  70. package/dist/llm/plugin-facade.js +8442 -3623
  71. package/dist/llm/plugin-facade.js.map +3 -3
  72. package/dist/nexus/projects-clean.d.ts +3 -0
  73. package/dist/nexus/projects-clean.d.ts.map +1 -1
  74. package/dist/nexus/projects-clean.js +9 -3
  75. package/dist/nexus/projects-clean.js.map +1 -1
  76. package/dist/nexus/registry-roots.d.ts +3 -1
  77. package/dist/nexus/registry-roots.d.ts.map +1 -1
  78. package/dist/nexus/registry-roots.js +5 -2
  79. package/dist/nexus/registry-roots.js.map +1 -1
  80. package/dist/nexus/registry.d.ts +8 -1
  81. package/dist/nexus/registry.d.ts.map +1 -1
  82. package/dist/nexus/registry.js +24 -10
  83. package/dist/nexus/registry.js.map +1 -1
  84. package/dist/nexus/workspace.d.ts +4 -1
  85. package/dist/nexus/workspace.d.ts.map +1 -1
  86. package/dist/nexus/workspace.js +10 -4
  87. package/dist/nexus/workspace.js.map +1 -1
  88. package/dist/orchestrate/spawn-ops.d.ts.map +1 -1
  89. package/dist/orchestrate/spawn-ops.js +7 -2
  90. package/dist/orchestrate/spawn-ops.js.map +1 -1
  91. package/dist/orchestrate/worker-verify.d.ts +121 -12
  92. package/dist/orchestrate/worker-verify.d.ts.map +1 -1
  93. package/dist/orchestrate/worker-verify.js +172 -21
  94. package/dist/orchestrate/worker-verify.js.map +1 -1
  95. package/dist/orchestration/spawn-prompt.d.ts.map +1 -1
  96. package/dist/orchestration/spawn-prompt.js +15 -9
  97. package/dist/orchestration/spawn-prompt.js.map +1 -1
  98. package/dist/release/ci-evidence.d.ts +9 -0
  99. package/dist/release/ci-evidence.d.ts.map +1 -1
  100. package/dist/release/ci-evidence.js +9 -2
  101. package/dist/release/ci-evidence.js.map +1 -1
  102. package/dist/resources/backend.d.ts +15 -3
  103. package/dist/resources/backend.d.ts.map +1 -1
  104. package/dist/resources/backend.js +7 -3
  105. package/dist/resources/backend.js.map +1 -1
  106. package/dist/resources/darwin-backend.d.ts +142 -0
  107. package/dist/resources/darwin-backend.d.ts.map +1 -0
  108. package/dist/resources/darwin-backend.js +288 -0
  109. package/dist/resources/darwin-backend.js.map +1 -0
  110. package/dist/resources/governor.d.ts +44 -1
  111. package/dist/resources/governor.d.ts.map +1 -1
  112. package/dist/resources/governor.js +100 -36
  113. package/dist/resources/governor.js.map +1 -1
  114. package/dist/resources/heavy-command.d.ts +132 -0
  115. package/dist/resources/heavy-command.d.ts.map +1 -0
  116. package/dist/resources/heavy-command.js +768 -0
  117. package/dist/resources/heavy-command.js.map +1 -0
  118. package/dist/resources/monitor.d.ts +50 -1
  119. package/dist/resources/monitor.d.ts.map +1 -1
  120. package/dist/resources/monitor.js +83 -1
  121. package/dist/resources/monitor.js.map +1 -1
  122. package/dist/resources/run-admission.d.ts +303 -0
  123. package/dist/resources/run-admission.d.ts.map +1 -0
  124. package/dist/resources/run-admission.js +648 -0
  125. package/dist/resources/run-admission.js.map +1 -0
  126. package/dist/resources/run-class.d.ts +111 -0
  127. package/dist/resources/run-class.d.ts.map +1 -0
  128. package/dist/resources/run-class.js +658 -0
  129. package/dist/resources/run-class.js.map +1 -0
  130. package/dist/resources/run-governed.d.ts +158 -0
  131. package/dist/resources/run-governed.d.ts.map +1 -0
  132. package/dist/resources/run-governed.js +406 -0
  133. package/dist/resources/run-governed.js.map +1 -0
  134. package/dist/resources/slot-holder.d.ts +267 -0
  135. package/dist/resources/slot-holder.d.ts.map +1 -0
  136. package/dist/resources/slot-holder.js +505 -0
  137. package/dist/resources/slot-holder.js.map +1 -0
  138. package/dist/resources/tool-groups.d.ts +74 -0
  139. package/dist/resources/tool-groups.d.ts.map +1 -0
  140. package/dist/resources/tool-groups.js +118 -0
  141. package/dist/resources/tool-groups.js.map +1 -0
  142. package/dist/routing/build-command-groups.d.ts.map +1 -1
  143. package/dist/routing/build-command-groups.js +1 -0
  144. package/dist/routing/build-command-groups.js.map +1 -1
  145. package/dist/selfimprove/fix-gen.js +8446 -3627
  146. package/dist/selfimprove/fix-gen.js.map +3 -3
  147. package/dist/sentient/cross-project-hygiene.d.ts +3 -2
  148. package/dist/sentient/cross-project-hygiene.d.ts.map +1 -1
  149. package/dist/sentient/cross-project-hygiene.js +5 -2
  150. package/dist/sentient/cross-project-hygiene.js.map +1 -1
  151. package/dist/sentient/state.d.ts +7 -0
  152. package/dist/sentient/state.d.ts.map +1 -1
  153. package/dist/sentient/state.js.map +1 -1
  154. package/dist/sentient/tick.d.ts +14 -2
  155. package/dist/sentient/tick.d.ts.map +1 -1
  156. package/dist/sentient/tick.js +63 -4
  157. package/dist/sentient/tick.js.map +1 -1
  158. package/dist/store/backup-recover.d.ts.map +1 -1
  159. package/dist/store/backup-recover.js +5 -0
  160. package/dist/store/backup-recover.js.map +1 -1
  161. package/dist/store/data-accessor.d.ts +1 -0
  162. package/dist/store/data-accessor.d.ts.map +1 -1
  163. package/dist/store/data-accessor.js +7 -0
  164. package/dist/store/data-accessor.js.map +1 -1
  165. package/dist/store/dual-scope-db.d.ts +23 -1
  166. package/dist/store/dual-scope-db.d.ts.map +1 -1
  167. package/dist/store/dual-scope-db.js +126 -36
  168. package/dist/store/dual-scope-db.js.map +1 -1
  169. package/dist/store/exodus/recovery.d.ts.map +1 -1
  170. package/dist/store/exodus/recovery.js +15 -0
  171. package/dist/store/exodus/recovery.js.map +1 -1
  172. package/dist/store/legacy-tasks-lineage.d.ts.map +1 -1
  173. package/dist/store/legacy-tasks-lineage.js +5 -0
  174. package/dist/store/legacy-tasks-lineage.js.map +1 -1
  175. package/dist/store/lock.d.ts +8 -1
  176. package/dist/store/lock.d.ts.map +1 -1
  177. package/dist/store/lock.js +10 -2
  178. package/dist/store/lock.js.map +1 -1
  179. package/dist/store/migration-manager.d.ts +5 -0
  180. package/dist/store/migration-manager.d.ts.map +1 -1
  181. package/dist/store/migration-manager.js +11 -0
  182. package/dist/store/migration-manager.js.map +1 -1
  183. package/dist/store/migration-runner.d.ts +158 -0
  184. package/dist/store/migration-runner.d.ts.map +1 -0
  185. package/dist/store/migration-runner.js +493 -0
  186. package/dist/store/migration-runner.js.map +1 -0
  187. package/dist/store/portable-bundle-import.d.ts +15 -1
  188. package/dist/store/portable-bundle-import.d.ts.map +1 -1
  189. package/dist/store/portable-bundle-import.js +24 -4
  190. package/dist/store/portable-bundle-import.js.map +1 -1
  191. package/dist/store/portable-bundle-relocate.d.ts +43 -0
  192. package/dist/store/portable-bundle-relocate.d.ts.map +1 -1
  193. package/dist/store/portable-bundle-relocate.js +79 -5
  194. package/dist/store/portable-bundle-relocate.js.map +1 -1
  195. package/dist/store/portable-bundle-scan.d.ts +42 -0
  196. package/dist/store/portable-bundle-scan.d.ts.map +1 -1
  197. package/dist/store/portable-bundle-scan.js +132 -25
  198. package/dist/store/portable-bundle-scan.js.map +1 -1
  199. package/dist/store/portable-bundle.d.ts +40 -0
  200. package/dist/store/portable-bundle.d.ts.map +1 -1
  201. package/dist/store/portable-bundle.js +43 -7
  202. package/dist/store/portable-bundle.js.map +1 -1
  203. package/dist/store/row-identity-registry.d.ts +137 -7
  204. package/dist/store/row-identity-registry.d.ts.map +1 -1
  205. package/dist/store/row-identity-registry.js +364 -9
  206. package/dist/store/row-identity-registry.js.map +1 -1
  207. package/dist/store/row-identity.d.ts.map +1 -1
  208. package/dist/store/row-identity.js +9 -10
  209. package/dist/store/row-identity.js.map +1 -1
  210. package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
  211. package/dist/store/sqlite-data-accessor.js +10 -0
  212. package/dist/store/sqlite-data-accessor.js.map +1 -1
  213. package/dist/store/sqlite.d.ts +31 -0
  214. package/dist/store/sqlite.d.ts.map +1 -1
  215. package/dist/store/sqlite.js +5 -1
  216. package/dist/store/sqlite.js.map +1 -1
  217. package/dist/store/sync/capture.d.ts +203 -0
  218. package/dist/store/sync/capture.d.ts.map +1 -0
  219. package/dist/store/sync/capture.js +562 -0
  220. package/dist/store/sync/capture.js.map +1 -0
  221. package/dist/store/sync/clock-store.d.ts.map +1 -1
  222. package/dist/store/sync/clock-store.js +2 -0
  223. package/dist/store/sync/clock-store.js.map +1 -1
  224. package/dist/store/sync/fk-orphans.d.ts +133 -0
  225. package/dist/store/sync/fk-orphans.d.ts.map +1 -0
  226. package/dist/store/sync/fk-orphans.js +265 -0
  227. package/dist/store/sync/fk-orphans.js.map +1 -0
  228. package/dist/store/sync/flags.d.ts +7 -0
  229. package/dist/store/sync/flags.d.ts.map +1 -1
  230. package/dist/store/sync/flags.js +16 -0
  231. package/dist/store/sync/flags.js.map +1 -1
  232. package/dist/store/sync/hlc.d.ts.map +1 -1
  233. package/dist/store/sync/hlc.js +4 -0
  234. package/dist/store/sync/hlc.js.map +1 -1
  235. package/dist/store/sync/identity-fill.d.ts +45 -0
  236. package/dist/store/sync/identity-fill.d.ts.map +1 -0
  237. package/dist/store/sync/identity-fill.js +85 -0
  238. package/dist/store/sync/identity-fill.js.map +1 -0
  239. package/dist/store/sync/machinery.d.ts +27 -0
  240. package/dist/store/sync/machinery.d.ts.map +1 -0
  241. package/dist/store/sync/machinery.js +44 -0
  242. package/dist/store/sync/machinery.js.map +1 -0
  243. package/dist/store/sync/netting.d.ts +120 -0
  244. package/dist/store/sync/netting.d.ts.map +1 -0
  245. package/dist/store/sync/netting.js +336 -0
  246. package/dist/store/sync/netting.js.map +1 -0
  247. package/dist/store/sync/replica.d.ts +27 -2
  248. package/dist/store/sync/replica.d.ts.map +1 -1
  249. package/dist/store/sync/replica.js +47 -3
  250. package/dist/store/sync/replica.js.map +1 -1
  251. package/dist/store/sync/schema.d.ts +12 -0
  252. package/dist/store/sync/schema.d.ts.map +1 -1
  253. package/dist/store/sync/schema.js +21 -0
  254. package/dist/store/sync/schema.js.map +1 -1
  255. package/dist/store/sync/seal-backlog.d.ts +21 -0
  256. package/dist/store/sync/seal-backlog.d.ts.map +1 -0
  257. package/dist/store/sync/seal-backlog.js +24 -0
  258. package/dist/store/sync/seal-backlog.js.map +1 -0
  259. package/dist/store/sync/sealer-values.d.ts +34 -0
  260. package/dist/store/sync/sealer-values.d.ts.map +1 -0
  261. package/dist/store/sync/sealer-values.js +53 -0
  262. package/dist/store/sync/sealer-values.js.map +1 -0
  263. package/dist/store/sync/sealer.d.ts +145 -0
  264. package/dist/store/sync/sealer.d.ts.map +1 -0
  265. package/dist/store/sync/sealer.js +906 -0
  266. package/dist/store/sync/sealer.js.map +1 -0
  267. package/dist/store/sync/structural.d.ts +63 -0
  268. package/dist/store/sync/structural.d.ts.map +1 -0
  269. package/dist/store/sync/structural.js +180 -0
  270. package/dist/store/sync/structural.js.map +1 -0
  271. package/dist/store/sync/timestamps.d.ts +92 -0
  272. package/dist/store/sync/timestamps.d.ts.map +1 -0
  273. package/dist/store/sync/timestamps.js +228 -0
  274. package/dist/store/sync/timestamps.js.map +1 -0
  275. package/dist/store/sync/tombstones.d.ts +75 -0
  276. package/dist/store/sync/tombstones.d.ts.map +1 -0
  277. package/dist/store/sync/tombstones.js +103 -0
  278. package/dist/store/sync/tombstones.js.map +1 -0
  279. package/dist/store/sync/trigger-classes.d.ts +221 -0
  280. package/dist/store/sync/trigger-classes.d.ts.map +1 -0
  281. package/dist/store/sync/trigger-classes.js +441 -0
  282. package/dist/store/sync/trigger-classes.js.map +1 -0
  283. package/dist/store/sync/trigger-suspend-at-path.d.ts +23 -0
  284. package/dist/store/sync/trigger-suspend-at-path.d.ts.map +1 -0
  285. package/dist/store/sync/trigger-suspend-at-path.js +44 -0
  286. package/dist/store/sync/trigger-suspend-at-path.js.map +1 -0
  287. package/dist/store/sync/writer-version.d.ts +43 -0
  288. package/dist/store/sync/writer-version.d.ts.map +1 -0
  289. package/dist/store/sync/writer-version.js +90 -0
  290. package/dist/store/sync/writer-version.js.map +1 -0
  291. package/dist/store/table-classification.d.ts.map +1 -1
  292. package/dist/store/table-classification.js +102 -0
  293. package/dist/store/table-classification.js.map +1 -1
  294. package/dist/store/trigger-suspend-schema.d.ts +44 -0
  295. package/dist/store/trigger-suspend-schema.d.ts.map +1 -0
  296. package/dist/store/trigger-suspend-schema.js +25 -0
  297. package/dist/store/trigger-suspend-schema.js.map +1 -0
  298. package/dist/store/vault-manifest.d.ts +365 -0
  299. package/dist/store/vault-manifest.d.ts.map +1 -0
  300. package/dist/store/vault-manifest.js +812 -0
  301. package/dist/store/vault-manifest.js.map +1 -0
  302. package/dist/store/writer-lease.d.ts +31 -0
  303. package/dist/store/writer-lease.d.ts.map +1 -1
  304. package/dist/store/writer-lease.js +65 -2
  305. package/dist/store/writer-lease.js.map +1 -1
  306. package/dist/system/health.d.ts.map +1 -1
  307. package/dist/system/health.js +21 -0
  308. package/dist/system/health.js.map +1 -1
  309. package/dist/system/project-health.d.ts.map +1 -1
  310. package/dist/system/project-health.js +3 -1
  311. package/dist/system/project-health.js.map +1 -1
  312. package/dist/tasks/affected-packages.d.ts +58 -0
  313. package/dist/tasks/affected-packages.d.ts.map +1 -1
  314. package/dist/tasks/affected-packages.js +75 -6
  315. package/dist/tasks/affected-packages.js.map +1 -1
  316. package/dist/tasks/affected-scope.d.ts +150 -23
  317. package/dist/tasks/affected-scope.d.ts.map +1 -1
  318. package/dist/tasks/affected-scope.js +320 -32
  319. package/dist/tasks/affected-scope.js.map +1 -1
  320. package/dist/tasks/change-set.d.ts +96 -0
  321. package/dist/tasks/change-set.d.ts.map +1 -1
  322. package/dist/tasks/change-set.js +169 -4
  323. package/dist/tasks/change-set.js.map +1 -1
  324. package/dist/tasks/complete-ci.d.ts +115 -0
  325. package/dist/tasks/complete-ci.d.ts.map +1 -0
  326. package/dist/tasks/complete-ci.js +171 -0
  327. package/dist/tasks/complete-ci.js.map +1 -0
  328. package/dist/tasks/complete.d.ts.map +1 -1
  329. package/dist/tasks/complete.js +50 -17
  330. package/dist/tasks/complete.js.map +1 -1
  331. package/dist/tasks/compute-task-view.d.ts.map +1 -1
  332. package/dist/tasks/compute-task-view.js +7 -0
  333. package/dist/tasks/compute-task-view.js.map +1 -1
  334. package/dist/tasks/done-plan.d.ts.map +1 -1
  335. package/dist/tasks/done-plan.js +51 -30
  336. package/dist/tasks/done-plan.js.map +1 -1
  337. package/dist/tasks/done-record.d.ts +6 -0
  338. package/dist/tasks/done-record.d.ts.map +1 -1
  339. package/dist/tasks/done-record.js +9 -3
  340. package/dist/tasks/done-record.js.map +1 -1
  341. package/dist/tasks/evidence.d.ts +3 -2
  342. package/dist/tasks/evidence.d.ts.map +1 -1
  343. package/dist/tasks/evidence.js +143 -12
  344. package/dist/tasks/evidence.js.map +1 -1
  345. package/dist/tasks/gate-notes.d.ts +22 -0
  346. package/dist/tasks/gate-notes.d.ts.map +1 -0
  347. package/dist/tasks/gate-notes.js +33 -0
  348. package/dist/tasks/gate-notes.js.map +1 -0
  349. package/dist/tasks/index.d.ts +2 -1
  350. package/dist/tasks/index.d.ts.map +1 -1
  351. package/dist/tasks/index.js +2 -1
  352. package/dist/tasks/index.js.map +1 -1
  353. package/dist/tasks/test-run-binding.d.ts +117 -0
  354. package/dist/tasks/test-run-binding.d.ts.map +1 -0
  355. package/dist/tasks/test-run-binding.js +365 -0
  356. package/dist/tasks/test-run-binding.js.map +1 -0
  357. package/dist/tasks/tool-cache-env.d.ts +123 -0
  358. package/dist/tasks/tool-cache-env.d.ts.map +1 -0
  359. package/dist/tasks/tool-cache-env.js +287 -0
  360. package/dist/tasks/tool-cache-env.js.map +1 -0
  361. package/dist/tasks/tool-cache-failed-first.d.ts +155 -0
  362. package/dist/tasks/tool-cache-failed-first.d.ts.map +1 -0
  363. package/dist/tasks/tool-cache-failed-first.js +285 -0
  364. package/dist/tasks/tool-cache-failed-first.js.map +1 -0
  365. package/dist/tasks/tool-cache.d.ts +375 -55
  366. package/dist/tasks/tool-cache.d.ts.map +1 -1
  367. package/dist/tasks/tool-cache.js +912 -303
  368. package/dist/tasks/tool-cache.js.map +1 -1
  369. package/dist/tasks/tool-resolver.d.ts +4 -3
  370. package/dist/tasks/tool-resolver.d.ts.map +1 -1
  371. package/dist/tasks/tool-resolver.js +15 -4
  372. package/dist/tasks/tool-resolver.js.map +1 -1
  373. package/dist/tasks/tool-semaphore.d.ts +67 -7
  374. package/dist/tasks/tool-semaphore.d.ts.map +1 -1
  375. package/dist/tasks/tool-semaphore.js +134 -56
  376. package/dist/tasks/tool-semaphore.js.map +1 -1
  377. package/dist/upgrade.d.ts.map +1 -1
  378. package/dist/upgrade.js +4 -0
  379. package/dist/upgrade.js.map +1 -1
  380. package/dist/validation/engine-ops.d.ts +6 -0
  381. package/dist/validation/engine-ops.d.ts.map +1 -1
  382. package/dist/validation/engine-ops.js +8 -0
  383. package/dist/validation/engine-ops.js.map +1 -1
  384. package/migrations/drizzle-cleo-project/20260930170000_t12819-trigger-suspend-clause/migration.sql +367 -0
  385. package/migrations/sync-journal/20260930120000_t12343-capture/migration.sql +47 -0
  386. package/migrations/sync-journal/20261001170000_t12984-sealer/migration.sql +101 -0
  387. package/package.json +13 -13
  388. package/templates/CLEO-INJECTION.md +5 -5
  389. package/templates/CLEO-REFERENCE.md +8 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-class.js","sourceRoot":"","sources":["../../src/resources/run-class.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * `runGoverned`: admit a heavy command through the machine-wide governor,
3
+ * run it, and supervise it under pressure. The engine behind `cleo run`,
4
+ * reusable by the supervisor (T12982).
5
+ *
6
+ * Lifecycle:
7
+ *
8
+ * 1. **Admission.** First, orphans of dead runners are reaped. A run nested
9
+ * inside a running job's process group runs on that job's slot. Otherwise
10
+ * admission is non-blocking by default: a denied admission (or anyone
11
+ * already waiting) returns a `deferred` result, with nothing started. With
12
+ * `wait`, the job takes a ticket in the class's FIFO queue before its
13
+ * first try; only the head of the queue tries to acquire, re-sampling
14
+ * pressure each time, until admitted or `timeoutMs`.
15
+ * 2. **Run.** The command is spawned as its own process group (so a pause or
16
+ * a cancel reaches its workers too), niced, with the caller's env. The job
17
+ * is recorded in the registry with its start times and a heartbeat. Its
18
+ * stdout goes to stderr, or with `passthrough` to the caller's stdout. A
19
+ * `foreground` child (a terminal's job) and a nested one stay in their
20
+ * group instead, are signalled by pid and are never paused.
21
+ * 3. **Supervise.** One serialized poll loop (never overlapping) samples
22
+ * pressure and applies {@link decidePause}: SIGSTOP/SIGCONT to the group.
23
+ * Every await is followed by an exit check, so nothing is signalled or
24
+ * written after the child exits.
25
+ * 4. **Exit.** If the job was ever paused, the group gets a SIGCONT (workers
26
+ * of a killed leader must not stay stopped); the record is removed and the
27
+ * slot released. SIGINT, SIGTERM and SIGHUP to the runner are forwarded to
28
+ * the group (after a SIGCONT). A runner killed outright is recovered by the
29
+ * next {@link reapOrphans}, which never acts on an unreadable `ps`.
30
+ *
31
+ * @module resources/run-governed
32
+ * @task T12979
33
+ * @task T12980
34
+ * @task T12981
35
+ * @epic T12978
36
+ */
37
+ import type { EventEmitter } from 'node:events';
38
+ import { type AdmissionResult, type ResourceClass } from '@cleocode/contracts';
39
+ import type { ResourceSample } from './backend.js';
40
+ import { type GovernorIoError } from './governor.js';
41
+ import { listVerifyHolders, type RunAlternative, type RunDeferralDetails } from './run-admission.js';
42
+ /** Niceness applied to the command (children inherit it). */
43
+ export declare const RUN_NICENESS = 10;
44
+ /** The minimal child-process surface the loop needs (tests fake it). */
45
+ export interface GovernedChild extends EventEmitter {
46
+ readonly pid?: number | undefined;
47
+ }
48
+ /**
49
+ * How out of the ordinary a notice is. `warn`: the run is ungoverned, or was
50
+ * paused or resumed under pressure (`--passthrough` still prints these).
51
+ * `info`: progress such as a queue admission or a nested run (left out by
52
+ * `--passthrough`).
53
+ */
54
+ export type RunNoticeLevel = 'info' | 'warn';
55
+ /** Injectable effects. Defaults are the real process, governor and clock. */
56
+ export interface RunGovernedDeps {
57
+ readonly sample: () => Promise<ResourceSample>;
58
+ readonly tryAcquire: (cls: ResourceClass, sample: ResourceSample) => Promise<AdmissionResult>;
59
+ /**
60
+ * Start the child. `passthrough`: it gets the runner's stdin, stdout and
61
+ * stderr; otherwise its stdout goes to stderr. `detached`: its own session
62
+ * and process group.
63
+ */
64
+ readonly spawn: (file: string, args: readonly string[], opts: {
65
+ cwd: string;
66
+ env: NodeJS.ProcessEnv;
67
+ detached: boolean;
68
+ passthrough: boolean;
69
+ }) => GovernedChild;
70
+ readonly signal: (pid: number, signal: NodeJS.Signals) => boolean;
71
+ /** Signal a single process (a nested job's child shares its parent's group). */
72
+ readonly signalPid: (pid: number, signal: NodeJS.Signals) => boolean;
73
+ readonly start: (pid: number) => string | null;
74
+ readonly renice: (pid: number) => void;
75
+ readonly now: () => number;
76
+ /**
77
+ * Wait `ms`. The timer keeps the process alive (a `--wait` queue has
78
+ * nothing else to); `signal` cancels it early so a finished run exits at once.
79
+ */
80
+ readonly sleep: (ms: number, signal?: AbortSignal) => Promise<void>;
81
+ /** Install runner signal forwarding; returns an uninstall function. */
82
+ readonly onRunnerSignal: (handler: (signal: NodeJS.Signals) => void) => () => void;
83
+ readonly jobsDir: string;
84
+ readonly queueDir: (cls: ResourceClass) => string;
85
+ readonly verifyHolders: () => ReturnType<typeof listVerifyHolders>;
86
+ readonly pid: number;
87
+ /** Process group of a pid (`ps -o pgid=`), or null when unknown. */
88
+ readonly groupOf: (pid: number) => number | null;
89
+ /** Ancestors of a pid, nearest first (one `ps` of the process table), or null when unknown. */
90
+ readonly ancestorsOf: (pid: number) => readonly number[] | null;
91
+ }
92
+ /** Options for {@link runGoverned}. */
93
+ export interface RunGovernedOptions {
94
+ readonly argv: readonly string[];
95
+ readonly cls: ResourceClass;
96
+ readonly cwd: string;
97
+ /** Child environment (caller applies heavyToolEnv). */
98
+ readonly env: NodeJS.ProcessEnv;
99
+ readonly sessionId: string | null;
100
+ readonly wait?: boolean;
101
+ /** With `wait`: give up after this long. @defaultValue 30 min */
102
+ readonly timeoutMs?: number;
103
+ /** Supervision cadence. @defaultValue 5000 */
104
+ readonly pollMs?: number;
105
+ /** Queue cadence under `wait`. @defaultValue 1000 */
106
+ readonly queuePollMs?: number;
107
+ /**
108
+ * The child gets the runner's stdin, stdout and stderr (`cleo run
109
+ * --passthrough`), so its stdout reaches the caller byte for byte.
110
+ * @defaultValue false (stdout goes to stderr; the caller's stdout is reserved)
111
+ */
112
+ readonly passthrough?: boolean;
113
+ /**
114
+ * Keep the child in the runner's process group instead of a detached one:
115
+ * a terminal's foreground job, so reading or configuring the terminal never
116
+ * stops it (SIGTTIN/SIGTTOU) and Ctrl-C reaches it. Such a child is never
117
+ * paused. SIGTERM and SIGHUP to the runner are forwarded to it by pid;
118
+ * SIGINT is not, since the terminal already sent it to the whole group.
119
+ * @defaultValue false
120
+ */
121
+ readonly foreground?: boolean;
122
+ /** One-line notices (stderr in the CLI); see {@link RunNoticeLevel}. */
123
+ readonly notice?: (line: string, level: RunNoticeLevel) => void;
124
+ readonly deps?: Partial<RunGovernedDeps>;
125
+ }
126
+ /** Result of {@link runGoverned}. */
127
+ export type RunGovernedResult = {
128
+ readonly kind: 'deferred';
129
+ readonly reason: string;
130
+ readonly details: RunDeferralDetails;
131
+ readonly alternatives: RunAlternative[];
132
+ readonly fix: string;
133
+ } | {
134
+ readonly kind: 'exited';
135
+ readonly class: ResourceClass;
136
+ readonly command: string;
137
+ readonly exitCode: number | null;
138
+ readonly signal: NodeJS.Signals | null;
139
+ /** Set when the command could not be started at all. */
140
+ readonly spawnError: string | null;
141
+ readonly durationMs: number;
142
+ readonly waitedMs: number;
143
+ readonly pausedMs: number;
144
+ readonly pauses: number;
145
+ readonly slot: number;
146
+ /**
147
+ * Set when the governor's state could not be written (a sandboxed or read-only CLEO home, a
148
+ * full disk): the command ran ungoverned rather than not at all.
149
+ */
150
+ readonly ungoverned: GovernorIoError | null;
151
+ };
152
+ export { governorIoError } from './governor.js';
153
+ /**
154
+ * Admit, run and supervise one heavy command. Never throws for admission or
155
+ * child failures; those are results.
156
+ */
157
+ export declare function runGoverned(opts: RunGovernedOptions): Promise<RunGovernedResult>;
158
+ //# sourceMappingURL=run-governed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-governed.d.ts","sourceRoot":"","sources":["../../src/resources/run-governed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EACL,KAAK,eAAe,EAEpB,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAiB,KAAK,eAAe,EAA8B,MAAM,eAAe,CAAC;AAEhG,OAAO,EAML,iBAAiB,EAKjB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EAaxB,MAAM,oBAAoB,CAAC;AAG5B,6DAA6D;AAC7D,eAAO,MAAM,YAAY,KAAK,CAAC;AAE/B,wEAAwE;AACxE,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAED;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC;AAE7C,6EAA6E;AAC7E,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IAC9F;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,CACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE,KACnF,aAAa,CAAC;IACnB,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC;IAClE,gFAAgF;IAChF,QAAQ,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC;IACrE,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC/C,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,uEAAuE;IACvE,QAAQ,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;IACnF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,MAAM,CAAC;IAClD,QAAQ,CAAC,aAAa,EAAE,MAAM,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;IACnE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACjD,+FAA+F;IAC/F,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;CACjE;AAED,uCAAuC;AACvC,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,iEAAiE;IACjE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,8CAA8C;IAC9C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,qDAAqD;IACrD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;;;;OAOG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,wEAAwE;IACxE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAChE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CAC1C;AAED,qCAAqC;AACrC,MAAM,MAAM,iBAAiB,GACzB;IACE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,cAAc,EAAE,CAAC;IACxC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IACvC,wDAAwD;IACxD,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,eAAe,GAAG,IAAI,CAAC;CAC7C,CAAC;AAGN,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AA2FhD;;;GAGG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA2StF"}
@@ -0,0 +1,406 @@
1
+ /**
2
+ * `runGoverned`: admit a heavy command through the machine-wide governor,
3
+ * run it, and supervise it under pressure. The engine behind `cleo run`,
4
+ * reusable by the supervisor (T12982).
5
+ *
6
+ * Lifecycle:
7
+ *
8
+ * 1. **Admission.** First, orphans of dead runners are reaped. A run nested
9
+ * inside a running job's process group runs on that job's slot. Otherwise
10
+ * admission is non-blocking by default: a denied admission (or anyone
11
+ * already waiting) returns a `deferred` result, with nothing started. With
12
+ * `wait`, the job takes a ticket in the class's FIFO queue before its
13
+ * first try; only the head of the queue tries to acquire, re-sampling
14
+ * pressure each time, until admitted or `timeoutMs`.
15
+ * 2. **Run.** The command is spawned as its own process group (so a pause or
16
+ * a cancel reaches its workers too), niced, with the caller's env. The job
17
+ * is recorded in the registry with its start times and a heartbeat. Its
18
+ * stdout goes to stderr, or with `passthrough` to the caller's stdout. A
19
+ * `foreground` child (a terminal's job) and a nested one stay in their
20
+ * group instead, are signalled by pid and are never paused.
21
+ * 3. **Supervise.** One serialized poll loop (never overlapping) samples
22
+ * pressure and applies {@link decidePause}: SIGSTOP/SIGCONT to the group.
23
+ * Every await is followed by an exit check, so nothing is signalled or
24
+ * written after the child exits.
25
+ * 4. **Exit.** If the job was ever paused, the group gets a SIGCONT (workers
26
+ * of a killed leader must not stay stopped); the record is removed and the
27
+ * slot released. SIGINT, SIGTERM and SIGHUP to the runner are forwarded to
28
+ * the group (after a SIGCONT). A runner killed outright is recovered by the
29
+ * next {@link reapOrphans}, which never acts on an unreadable `ps`.
30
+ *
31
+ * @module resources/run-governed
32
+ * @task T12979
33
+ * @task T12980
34
+ * @task T12981
35
+ * @epic T12978
36
+ */
37
+ import { spawn as nodeSpawn } from 'node:child_process';
38
+ import { setPriority } from 'node:os';
39
+ import { DEFAULT_RESOURCE_RETRY_AFTER_MS, } from '@cleocode/contracts';
40
+ import { admitFailOpen, governor, passThroughGrant } from './governor.js';
41
+ import { classifyPressure, pressureScore, ResourceMonitor } from './monitor.js';
42
+ import { buildRunDeferral, decidePause, isPausable, listQueueTickets, listRunJobs, listVerifyHolders, parentRunJob, processAncestors, processGroupOf, processStart, reapOrphans, redactCommand, removeQueueTicket, removeRunJob, runJobsDir, runningEntries, runQueueDir, signalGroup, signalPid, writeQueueTicket, writeRunJob, } from './run-admission.js';
43
+ import { trackToolGroup } from './tool-groups.js';
44
+ /** Niceness applied to the command (children inherit it). */
45
+ export const RUN_NICENESS = 10;
46
+ // The classifier moved to the governor, which every admission shares (R8-1).
47
+ export { governorIoError } from './governor.js';
48
+ function defaultDeps() {
49
+ const monitor = new ResourceMonitor();
50
+ return {
51
+ sample: () => monitor.sample(),
52
+ tryAcquire: (cls, sample) => governor.tryAcquire(cls, { sample }),
53
+ spawn: (file, args, opts) => nodeSpawn(file, [...args], {
54
+ cwd: opts.cwd,
55
+ env: opts.env,
56
+ // Unless passed through, stdout is reserved for the caller's envelope:
57
+ // output goes to stderr.
58
+ stdio: opts.passthrough ? 'inherit' : ['inherit', 2, 2],
59
+ detached: opts.detached,
60
+ }),
61
+ signal: signalGroup,
62
+ signalPid,
63
+ start: processStart,
64
+ renice: (pid) => {
65
+ try {
66
+ setPriority(pid, RUN_NICENESS);
67
+ }
68
+ catch {
69
+ // Not permitted here: normal priority.
70
+ }
71
+ },
72
+ now: Date.now,
73
+ sleep: (ms, signal) => new Promise((resolve) => {
74
+ if (signal?.aborted)
75
+ return resolve();
76
+ const timer = setTimeout(resolve, ms);
77
+ signal?.addEventListener('abort', () => {
78
+ clearTimeout(timer);
79
+ resolve();
80
+ }, { once: true });
81
+ }),
82
+ onRunnerSignal: (handler) => {
83
+ const signals = ['SIGINT', 'SIGTERM', 'SIGHUP'];
84
+ const fns = signals.map((s) => {
85
+ const fn = () => handler(s);
86
+ process.on(s, fn);
87
+ return [s, fn];
88
+ });
89
+ return () => {
90
+ for (const [s, fn] of fns)
91
+ process.off(s, fn);
92
+ };
93
+ },
94
+ jobsDir: runJobsDir(),
95
+ queueDir: (cls) => runQueueDir(cls),
96
+ verifyHolders: () => listVerifyHolders(),
97
+ pid: process.pid,
98
+ groupOf: processGroupOf,
99
+ ancestorsOf: processAncestors,
100
+ };
101
+ }
102
+ /** Registry probes bound to the injected clock, start-time probe and signaller. */
103
+ function probesOf(d) {
104
+ return { now: d.now, start: d.start, signal: d.signal, signalPid: d.signalPid };
105
+ }
106
+ async function deferral(opts, d, reason, retryAfterMs, sample, queuePosition) {
107
+ const pressure = classifyPressure(sample);
108
+ const built = buildRunDeferral({
109
+ cls: opts.cls,
110
+ argv: opts.argv,
111
+ reason,
112
+ retryAfterMs,
113
+ queuePosition,
114
+ pressure: {
115
+ state: pressure.state,
116
+ score: Number(pressureScore(sample).toFixed(1)),
117
+ reason: pressure.reason,
118
+ memAvailableBytes: sample.memAvailableBytes,
119
+ },
120
+ running: runningEntries(listRunJobs(d.jobsDir, probesOf(d)), d.verifyHolders()),
121
+ });
122
+ return { kind: 'deferred', reason, ...built };
123
+ }
124
+ /**
125
+ * Admit, run and supervise one heavy command. Never throws for admission or
126
+ * child failures; those are results.
127
+ */
128
+ export async function runGoverned(opts) {
129
+ const d = { ...defaultDeps(), ...opts.deps };
130
+ const notice = opts.notice ?? (() => { });
131
+ const command = redactCommand(opts.argv);
132
+ const t0 = d.now();
133
+ // ---- 1. admission -------------------------------------------------------
134
+ // Reap what dead runners left behind (never on an unreadable `ps`).
135
+ reapOrphans(d.jobsDir, probesOf(d));
136
+ let sample = await d.sample();
137
+ // A nested run (a script under `cleo run` that itself calls `cleo run`)
138
+ // runs inside its enclosing job's process tree. Of the SAME class it rides
139
+ // the enclosing job's slot (#1777 round 3, M-2); of another class it takes
140
+ // its own slot (round 4, MED-1). Either way its child stays in the
141
+ // enclosing group, is never paused on its own, and is signalled by pid
142
+ // (round 5, N1). See {@link parentRunJob} for why this can't be forged.
143
+ const enclosing = parentRunJob({
144
+ pid: d.pid,
145
+ jobsDir: d.jobsDir,
146
+ probes: probesOf(d),
147
+ groupOf: d.groupOf,
148
+ ancestorsOf: d.ancestorsOf,
149
+ });
150
+ const nested = enclosing !== null;
151
+ const parent = enclosing !== null && enclosing.class === opts.cls ? enclosing : null;
152
+ if (enclosing && !parent) {
153
+ notice(`nested in a running ${enclosing.class} job (${enclosing.command}): admitted on its own ${opts.cls} slot, inside that job's process group`, 'info');
154
+ }
155
+ // Fail open (#1781 review, HIGH): when the governor cannot write its slot locks (Codex's
156
+ // workspace-write sandbox, Claude Code's sandboxed Bash, a read-only CLEO home), run the command
157
+ // ungoverned instead of failing a test that would have passed. Only filesystem errors; anything
158
+ // else is a bug and propagates. E_RESOURCE_DEFERRED is unchanged.
159
+ let ungoverned = null;
160
+ const tryAcquire = async (s) => {
161
+ const r = await admitFailOpen(opts.cls, () => d.tryAcquire(opts.cls, s));
162
+ if (r.ungoverned !== null) {
163
+ const io = r.ungoverned;
164
+ ungoverned = io;
165
+ notice(`governor state is not writable (${io.code}${io.path ? ` ${io.path}` : ''}): running ungoverned`, 'warn');
166
+ }
167
+ return r.admission;
168
+ };
169
+ let admission;
170
+ if (parent) {
171
+ admission = passThroughGrant(opts.cls);
172
+ notice(`nested in a running ${parent.class} job (${parent.command}): running on its slot`, 'info');
173
+ }
174
+ else {
175
+ const qdir = d.queueDir(opts.cls);
176
+ const ticketId = `${d.pid}-${t0}`;
177
+ const ticket = {
178
+ id: ticketId,
179
+ pid: d.pid,
180
+ runnerStart: d.start(d.pid),
181
+ enqueuedAtMs: t0,
182
+ heartbeatAtMs: t0,
183
+ command,
184
+ };
185
+ // With --wait the ticket goes in BEFORE the first try (L-1): nobody can
186
+ // slip in between a denied try and the enqueue.
187
+ if (opts.wait)
188
+ writeQueueTicket(ticket, qdir);
189
+ /** How many tickets are ahead of this job (all of them without --wait). */
190
+ const ahead = () => {
191
+ const queue = listQueueTickets(qdir, probesOf(d));
192
+ if (!opts.wait)
193
+ return queue.length;
194
+ const at = queue.findIndex((t) => t.id === ticketId);
195
+ if (at >= 0)
196
+ return at;
197
+ writeQueueTicket({ ...ticket, heartbeatAtMs: d.now() }, qdir); // lost: re-enqueue
198
+ return queue.length;
199
+ };
200
+ const queued = (n) => ({
201
+ deferred: true,
202
+ class: opts.cls,
203
+ retryAfterMs: DEFAULT_RESOURCE_RETRY_AFTER_MS,
204
+ reason: `${n} job(s) ahead in the ${opts.cls} queue`,
205
+ });
206
+ try {
207
+ // No barging (M5): while anyone waits ahead, never try first.
208
+ let position = ahead();
209
+ admission = position > 0 ? queued(position) : await tryAcquire(sample);
210
+ if (admission.deferred && opts.wait) {
211
+ const deadline = t0 + (opts.timeoutMs ?? 30 * 60_000);
212
+ while (admission.deferred) {
213
+ if (d.now() >= deadline) {
214
+ return await deferral(opts, d, `timed out after ${Math.round((d.now() - t0) / 1000)}s in the ${opts.cls} queue (position ${position + 1}): ${admission.reason}`, admission.retryAfterMs, sample, position + 1);
215
+ }
216
+ await d.sleep(opts.queuePollMs ?? 1000);
217
+ writeQueueTicket({ ...ticket, heartbeatAtMs: d.now() }, qdir);
218
+ position = ahead();
219
+ if (position !== 0) {
220
+ admission = queued(position);
221
+ continue; // FIFO: only the head tries.
222
+ }
223
+ sample = await d.sample();
224
+ admission = await tryAcquire(sample);
225
+ }
226
+ notice(`admitted after ${Math.round((d.now() - t0) / 1000)}s in the ${opts.cls} queue`, 'info');
227
+ }
228
+ }
229
+ finally {
230
+ if (opts.wait)
231
+ removeQueueTicket(ticketId, qdir);
232
+ }
233
+ }
234
+ if (admission.deferred) {
235
+ return deferral(opts, d, admission.reason, admission.retryAfterMs, sample, null);
236
+ }
237
+ const grant = admission;
238
+ const waitedMs = d.now() - t0;
239
+ // ---- 2. run -------------------------------------------------------------
240
+ const startedAtMs = d.now();
241
+ // A nested job lives in its enclosing job's group, a foreground job in its
242
+ // terminal's: neither leads a group, so neither is ever paused on its own.
243
+ const leadsGroup = !nested && opts.foreground !== true;
244
+ // Ungoverned, it holds no slot and keeps no reliable record: never paused either.
245
+ const pausable = leadsGroup && ungoverned === null && isPausable(opts.cls, opts.argv);
246
+ const [file, ...args] = opts.argv;
247
+ // No inherited grant marker (#1777 round 2): every nested `cleo run` is
248
+ // admitted on its own; verify joins the same budgets with #1775 (T12963).
249
+ const env = { ...opts.env, CLEO_RUN_CLASS: opts.cls };
250
+ let job = {
251
+ id: `${d.pid}-${startedAtMs}`,
252
+ pid: d.pid,
253
+ runnerStart: d.start(d.pid),
254
+ childPid: null,
255
+ childStart: null,
256
+ class: opts.cls,
257
+ command,
258
+ cwd: opts.cwd,
259
+ startedAtMs,
260
+ sessionId: opts.sessionId,
261
+ pausedAtMs: null,
262
+ pausable,
263
+ heartbeatAtMs: startedAtMs,
264
+ parentJob: enclosing?.id ?? null,
265
+ holdsSlot: parent === null,
266
+ leadsGroup,
267
+ };
268
+ writeRunJob(job, d.jobsDir);
269
+ let exited = false;
270
+ let pausedAtMs = null;
271
+ let capResumedAtMs = null;
272
+ let pausedTotalMs = 0;
273
+ let pauses = 0;
274
+ let child;
275
+ try {
276
+ child = d.spawn(file, args, {
277
+ cwd: opts.cwd,
278
+ env,
279
+ detached: leadsGroup,
280
+ passthrough: opts.passthrough === true,
281
+ });
282
+ }
283
+ catch (err) {
284
+ removeRunJob(job.id, d.jobsDir);
285
+ await grant.release();
286
+ return exitedResult(err instanceof Error ? err.message : String(err), null, null);
287
+ }
288
+ const exit = new Promise((resolve) => {
289
+ child.once('error', (error) => resolve({ code: null, signal: null, error }));
290
+ child.once('exit', (code, signal) => resolve({ code, signal }));
291
+ });
292
+ void exit.then(() => {
293
+ exited = true;
294
+ });
295
+ const childPid = child.pid;
296
+ if (childPid !== undefined) {
297
+ d.renice(childPid);
298
+ job = { ...job, childPid, childStart: d.start(childPid) };
299
+ if (!exited)
300
+ writeRunJob(job, d.jobsDir);
301
+ }
302
+ // T12963: the slot this runner holds lists the child's group, so a SIGKILLed
303
+ // runner's slot stays held while the child runs. A nested or foreground
304
+ // child leads no group of its own.
305
+ const untrackGroup = leadsGroup ? trackToolGroup(childPid) : () => { };
306
+ // A nested or foreground child is not a group leader (it lives in the
307
+ // enclosing job's or the terminal's group): signal the process itself, or
308
+ // kill(-pid) would hit ESRCH and the child would keep running (#1777 round
309
+ // 4, L-A).
310
+ const forwardTo = leadsGroup ? d.signal : d.signalPid;
311
+ const uninstall = d.onRunnerSignal((signal) => {
312
+ if (childPid === undefined || exited)
313
+ return;
314
+ // A terminal's Ctrl-C already reached its whole foreground group, child
315
+ // included: forwarding it would deliver a second SIGINT, which some
316
+ // runners treat as force-quit (#1777 R8). SIGTERM and SIGHUP still go.
317
+ if (opts.foreground === true && signal === 'SIGINT')
318
+ return;
319
+ forwardTo(childPid, 'SIGCONT');
320
+ forwardTo(childPid, signal);
321
+ });
322
+ // ---- 3. supervise (serialized: one tick at a time) ----------------------
323
+ let state = 'ok';
324
+ const stopTimers = new AbortController();
325
+ void exit.then(() => stopTimers.abort());
326
+ const supervise = async () => {
327
+ while (!exited) {
328
+ const woke = await Promise.race([
329
+ d.sleep(opts.pollMs ?? 5000, stopTimers.signal).then(() => 'tick'),
330
+ exit.then(() => 'exit'),
331
+ ]);
332
+ if (woke === 'exit' || exited || childPid === undefined)
333
+ return;
334
+ let s;
335
+ try {
336
+ s = await d.sample();
337
+ }
338
+ catch {
339
+ continue; // A failed sample never pauses anything.
340
+ }
341
+ if (exited)
342
+ return;
343
+ state = classifyPressure(s, state).state;
344
+ const now = d.now();
345
+ const { decision, reason } = decidePause({
346
+ state,
347
+ self: job,
348
+ jobs: listRunJobs(d.jobsDir, probesOf(d)),
349
+ nowMs: now,
350
+ pausedAtMs,
351
+ capResumedAtMs,
352
+ });
353
+ if (exited)
354
+ return;
355
+ if (decision === 'pause' && pausedAtMs === null) {
356
+ if (!d.signal(childPid, 'SIGSTOP'))
357
+ continue;
358
+ pausedAtMs = now;
359
+ pauses++;
360
+ notice(`paused: machine at backoff (${classifyPressure(s).reason}); an older job keeps running. Resumes automatically.`, 'warn');
361
+ }
362
+ else if (decision === 'run' && pausedAtMs !== null) {
363
+ d.signal(childPid, 'SIGCONT');
364
+ pausedTotalMs += now - pausedAtMs;
365
+ pausedAtMs = null;
366
+ if (reason === 'cap')
367
+ capResumedAtMs = now;
368
+ notice(reason === 'cap' ? 'resumed: paused for the maximum time' : 'resumed.', 'warn');
369
+ }
370
+ job = { ...job, pausedAtMs, heartbeatAtMs: now };
371
+ if (!exited)
372
+ writeRunJob(job, d.jobsDir);
373
+ }
374
+ };
375
+ const supervisor = supervise();
376
+ const result = await exit;
377
+ exited = true;
378
+ untrackGroup();
379
+ await supervisor;
380
+ uninstall();
381
+ // Workers of a killed (or paused) leader must never stay stopped.
382
+ if (childPid !== undefined && pauses > 0)
383
+ d.signal(childPid, 'SIGCONT');
384
+ if (pausedAtMs !== null)
385
+ pausedTotalMs += d.now() - pausedAtMs;
386
+ removeRunJob(job.id, d.jobsDir);
387
+ await grant.release();
388
+ return exitedResult(result.error ? result.error.message : null, result.code, result.signal);
389
+ function exitedResult(spawnError, exitCode, signal) {
390
+ return {
391
+ kind: 'exited',
392
+ class: opts.cls,
393
+ command,
394
+ exitCode,
395
+ signal,
396
+ spawnError,
397
+ durationMs: d.now() - startedAtMs,
398
+ waitedMs,
399
+ pausedMs: pausedTotalMs,
400
+ pauses,
401
+ slot: grant.slot,
402
+ ungoverned,
403
+ };
404
+ }
405
+ }
406
+ //# sourceMappingURL=run-governed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-governed.js","sourceRoot":"","sources":["../../src/resources/run-governed.ts"],"names":[],"mappings":"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"}