dorfl 0.0.0 → 0.1.0

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 (619) hide show
  1. package/dist/advance-ci-template.d.ts +73 -0
  2. package/dist/advance-ci-template.d.ts.map +1 -0
  3. package/dist/advance-ci-template.js +104 -0
  4. package/dist/advance-ci-template.js.map +1 -0
  5. package/dist/advance-classify.d.ts +132 -0
  6. package/dist/advance-classify.d.ts.map +1 -0
  7. package/dist/advance-classify.js +120 -0
  8. package/dist/advance-classify.js.map +1 -0
  9. package/dist/advance-drivers.d.ts +182 -0
  10. package/dist/advance-drivers.d.ts.map +1 -0
  11. package/dist/advance-drivers.js +231 -0
  12. package/dist/advance-drivers.js.map +1 -0
  13. package/dist/advance-isolated.d.ts +156 -0
  14. package/dist/advance-isolated.d.ts.map +1 -0
  15. package/dist/advance-isolated.js +256 -0
  16. package/dist/advance-isolated.js.map +1 -0
  17. package/dist/advance-lifecycle-template.d.ts +107 -0
  18. package/dist/advance-lifecycle-template.d.ts.map +1 -0
  19. package/dist/advance-lifecycle-template.js +668 -0
  20. package/dist/advance-lifecycle-template.js.map +1 -0
  21. package/dist/advance-loop-driver.d.ts +325 -0
  22. package/dist/advance-loop-driver.d.ts.map +1 -0
  23. package/dist/advance-loop-driver.js +437 -0
  24. package/dist/advance-loop-driver.js.map +1 -0
  25. package/dist/advance-treeless-publish.d.ts +108 -0
  26. package/dist/advance-treeless-publish.d.ts.map +1 -0
  27. package/dist/advance-treeless-publish.js +71 -0
  28. package/dist/advance-treeless-publish.js.map +1 -0
  29. package/dist/advance.d.ts +340 -0
  30. package/dist/advance.d.ts.map +1 -0
  31. package/dist/advance.js +1122 -0
  32. package/dist/advance.js.map +1 -0
  33. package/dist/advancing-lock.d.ts +294 -0
  34. package/dist/advancing-lock.d.ts.map +1 -0
  35. package/dist/advancing-lock.js +594 -0
  36. package/dist/advancing-lock.js.map +1 -0
  37. package/dist/agent-launch.d.ts +79 -0
  38. package/dist/agent-launch.d.ts.map +1 -0
  39. package/dist/agent-launch.js +61 -0
  40. package/dist/agent-launch.js.map +1 -0
  41. package/dist/agent-stop.d.ts +149 -0
  42. package/dist/agent-stop.d.ts.map +1 -0
  43. package/dist/agent-stop.js +307 -0
  44. package/dist/agent-stop.js.map +1 -0
  45. package/dist/apply-decide.d.ts +127 -0
  46. package/dist/apply-decide.d.ts.map +1 -0
  47. package/dist/apply-decide.js +176 -0
  48. package/dist/apply-decide.js.map +1 -0
  49. package/dist/apply-merge-action.d.ts +206 -0
  50. package/dist/apply-merge-action.d.ts.map +1 -0
  51. package/dist/apply-merge-action.js +307 -0
  52. package/dist/apply-merge-action.js.map +1 -0
  53. package/dist/apply-persist.d.ts +174 -0
  54. package/dist/apply-persist.d.ts.map +1 -0
  55. package/dist/apply-persist.js +359 -0
  56. package/dist/apply-persist.js.map +1 -0
  57. package/dist/arbiter.d.ts +120 -0
  58. package/dist/arbiter.d.ts.map +1 -0
  59. package/dist/arbiter.js +255 -0
  60. package/dist/arbiter.js.map +1 -0
  61. package/dist/brand.d.ts +70 -0
  62. package/dist/brand.d.ts.map +1 -0
  63. package/dist/brand.js +84 -0
  64. package/dist/brand.js.map +1 -0
  65. package/dist/buildable-body.d.ts +132 -0
  66. package/dist/buildable-body.d.ts.map +1 -0
  67. package/dist/buildable-body.js +131 -0
  68. package/dist/buildable-body.js.map +1 -0
  69. package/dist/categorise.d.ts +66 -0
  70. package/dist/categorise.d.ts.map +1 -0
  71. package/dist/categorise.js +106 -0
  72. package/dist/categorise.js.map +1 -0
  73. package/dist/claim-cas.d.ts +117 -0
  74. package/dist/claim-cas.d.ts.map +1 -0
  75. package/dist/claim-cas.js +312 -0
  76. package/dist/claim-cas.js.map +1 -0
  77. package/dist/cli-spinner.d.ts +112 -0
  78. package/dist/cli-spinner.d.ts.map +1 -0
  79. package/dist/cli-spinner.js +157 -0
  80. package/dist/cli-spinner.js.map +1 -0
  81. package/dist/cli.d.ts +11 -0
  82. package/dist/cli.d.ts.map +1 -0
  83. package/dist/cli.js +3094 -0
  84. package/dist/cli.js.map +1 -0
  85. package/dist/close-job-template.d.ts +70 -0
  86. package/dist/close-job-template.d.ts.map +1 -0
  87. package/dist/close-job-template.js +180 -0
  88. package/dist/close-job-template.js.map +1 -0
  89. package/dist/close-job.d.ts +95 -0
  90. package/dist/close-job.d.ts.map +1 -0
  91. package/dist/close-job.js +226 -0
  92. package/dist/close-job.js.map +1 -0
  93. package/dist/complete.d.ts +361 -0
  94. package/dist/complete.d.ts.map +1 -0
  95. package/dist/complete.js +885 -0
  96. package/dist/complete.js.map +1 -0
  97. package/dist/concurrency.d.ts +68 -0
  98. package/dist/concurrency.d.ts.map +1 -0
  99. package/dist/concurrency.js +112 -0
  100. package/dist/concurrency.js.map +1 -0
  101. package/dist/config-override.d.ts +76 -0
  102. package/dist/config-override.d.ts.map +1 -0
  103. package/dist/config-override.js +50 -0
  104. package/dist/config-override.js.map +1 -0
  105. package/dist/config.d.ts +668 -0
  106. package/dist/config.d.ts.map +1 -0
  107. package/dist/config.js +241 -0
  108. package/dist/config.js.map +1 -0
  109. package/dist/continue-branch.d.ts +249 -0
  110. package/dist/continue-branch.d.ts.map +1 -0
  111. package/dist/continue-branch.js +389 -0
  112. package/dist/continue-branch.js.map +1 -0
  113. package/dist/cwd-section.d.ts +186 -0
  114. package/dist/cwd-section.d.ts.map +1 -0
  115. package/dist/cwd-section.js +209 -0
  116. package/dist/cwd-section.js.map +1 -0
  117. package/dist/decision-engine.d.ts +170 -0
  118. package/dist/decision-engine.d.ts.map +1 -0
  119. package/dist/decision-engine.js +136 -0
  120. package/dist/decision-engine.js.map +1 -0
  121. package/dist/detect.d.ts +17 -0
  122. package/dist/detect.d.ts.map +1 -0
  123. package/dist/detect.js +118 -0
  124. package/dist/detect.js.map +1 -0
  125. package/dist/do-autopick.d.ts +85 -0
  126. package/dist/do-autopick.d.ts.map +1 -0
  127. package/dist/do-autopick.js +112 -0
  128. package/dist/do-autopick.js.map +1 -0
  129. package/dist/do-config.d.ts +312 -0
  130. package/dist/do-config.d.ts.map +1 -0
  131. package/dist/do-config.js +358 -0
  132. package/dist/do-config.js.map +1 -0
  133. package/dist/do-remote-auto.d.ts +75 -0
  134. package/dist/do-remote-auto.d.ts.map +1 -0
  135. package/dist/do-remote-auto.js +111 -0
  136. package/dist/do-remote-auto.js.map +1 -0
  137. package/dist/do.d.ts +621 -0
  138. package/dist/do.d.ts.map +1 -0
  139. package/dist/do.js +1882 -0
  140. package/dist/do.js.map +1 -0
  141. package/dist/drop-source.d.ts +96 -0
  142. package/dist/drop-source.d.ts.map +1 -0
  143. package/dist/drop-source.js +91 -0
  144. package/dist/drop-source.js.map +1 -0
  145. package/dist/eligibility.d.ts +46 -0
  146. package/dist/eligibility.d.ts.map +1 -0
  147. package/dist/eligibility.js +34 -0
  148. package/dist/eligibility.js.map +1 -0
  149. package/dist/env-config.d.ts +51 -0
  150. package/dist/env-config.d.ts.map +1 -0
  151. package/dist/env-config.js +272 -0
  152. package/dist/env-config.js.map +1 -0
  153. package/dist/failure-cause.d.ts +70 -0
  154. package/dist/failure-cause.d.ts.map +1 -0
  155. package/dist/failure-cause.js +126 -0
  156. package/dist/failure-cause.js.map +1 -0
  157. package/dist/format.d.ts +43 -0
  158. package/dist/format.d.ts.map +1 -0
  159. package/dist/format.js +256 -0
  160. package/dist/format.js.map +1 -0
  161. package/dist/frontmatter.d.ts +215 -0
  162. package/dist/frontmatter.d.ts.map +1 -0
  163. package/dist/frontmatter.js +345 -0
  164. package/dist/frontmatter.js.map +1 -0
  165. package/dist/gate-readiness.d.ts +84 -0
  166. package/dist/gate-readiness.d.ts.map +1 -0
  167. package/dist/gate-readiness.js +103 -0
  168. package/dist/gate-readiness.js.map +1 -0
  169. package/dist/gc.d.ts +165 -0
  170. package/dist/gc.d.ts.map +1 -0
  171. package/dist/gc.js +313 -0
  172. package/dist/gc.js.map +1 -0
  173. package/dist/gh-failure.d.ts +42 -0
  174. package/dist/gh-failure.d.ts.map +1 -0
  175. package/dist/gh-failure.js +49 -0
  176. package/dist/gh-failure.js.map +1 -0
  177. package/dist/git.d.ts +75 -0
  178. package/dist/git.d.ts.map +1 -0
  179. package/dist/git.js +130 -0
  180. package/dist/git.js.map +1 -0
  181. package/dist/github.d.ts +187 -0
  182. package/dist/github.d.ts.map +1 -0
  183. package/dist/github.js +343 -0
  184. package/dist/github.js.map +1 -0
  185. package/dist/harness.d.ts +242 -0
  186. package/dist/harness.d.ts.map +1 -0
  187. package/dist/harness.js +157 -0
  188. package/dist/harness.js.map +1 -0
  189. package/dist/identity.d.ts +167 -0
  190. package/dist/identity.d.ts.map +1 -0
  191. package/dist/identity.js +231 -0
  192. package/dist/identity.js.map +1 -0
  193. package/dist/index.d.ts +147 -0
  194. package/dist/index.d.ts.map +1 -0
  195. package/dist/index.js +76 -0
  196. package/dist/index.js.map +1 -0
  197. package/dist/install-ci-branch-protection.d.ts +147 -0
  198. package/dist/install-ci-branch-protection.d.ts.map +1 -0
  199. package/dist/install-ci-branch-protection.js +166 -0
  200. package/dist/install-ci-branch-protection.js.map +1 -0
  201. package/dist/install-ci-capabilities/advance-lifecycle.d.ts +15 -0
  202. package/dist/install-ci-capabilities/advance-lifecycle.d.ts.map +1 -0
  203. package/dist/install-ci-capabilities/advance-lifecycle.js +28 -0
  204. package/dist/install-ci-capabilities/advance-lifecycle.js.map +1 -0
  205. package/dist/install-ci-capabilities/close-job.d.ts +13 -0
  206. package/dist/install-ci-capabilities/close-job.d.ts.map +1 -0
  207. package/dist/install-ci-capabilities/close-job.js +26 -0
  208. package/dist/install-ci-capabilities/close-job.js.map +1 -0
  209. package/dist/install-ci-capabilities/example-noop.d.ts +16 -0
  210. package/dist/install-ci-capabilities/example-noop.d.ts.map +1 -0
  211. package/dist/install-ci-capabilities/example-noop.js +23 -0
  212. package/dist/install-ci-capabilities/example-noop.js.map +1 -0
  213. package/dist/install-ci-capabilities/intake.d.ts +15 -0
  214. package/dist/install-ci-capabilities/intake.d.ts.map +1 -0
  215. package/dist/install-ci-capabilities/intake.js +28 -0
  216. package/dist/install-ci-capabilities/intake.js.map +1 -0
  217. package/dist/install-ci-capabilities/verify.d.ts +14 -0
  218. package/dist/install-ci-capabilities/verify.d.ts.map +1 -0
  219. package/dist/install-ci-capabilities/verify.js +27 -0
  220. package/dist/install-ci-capabilities/verify.js.map +1 -0
  221. package/dist/install-ci-core.d.ts +446 -0
  222. package/dist/install-ci-core.d.ts.map +1 -0
  223. package/dist/install-ci-core.js +760 -0
  224. package/dist/install-ci-core.js.map +1 -0
  225. package/dist/install-ci-github.d.ts +167 -0
  226. package/dist/install-ci-github.d.ts.map +1 -0
  227. package/dist/install-ci-github.js +315 -0
  228. package/dist/install-ci-github.js.map +1 -0
  229. package/dist/install-ci.d.ts +105 -0
  230. package/dist/install-ci.d.ts.map +1 -0
  231. package/dist/install-ci.js +363 -0
  232. package/dist/install-ci.js.map +1 -0
  233. package/dist/intake-event.d.ts +88 -0
  234. package/dist/intake-event.d.ts.map +1 -0
  235. package/dist/intake-event.js +66 -0
  236. package/dist/intake-event.js.map +1 -0
  237. package/dist/intake-marker.d.ts +95 -0
  238. package/dist/intake-marker.d.ts.map +1 -0
  239. package/dist/intake-marker.js +127 -0
  240. package/dist/intake-marker.js.map +1 -0
  241. package/dist/intake-triage.d.ts +48 -0
  242. package/dist/intake-triage.d.ts.map +1 -0
  243. package/dist/intake-triage.js +95 -0
  244. package/dist/intake-triage.js.map +1 -0
  245. package/dist/intake-trigger-template.d.ts +185 -0
  246. package/dist/intake-trigger-template.d.ts.map +1 -0
  247. package/dist/intake-trigger-template.js +449 -0
  248. package/dist/intake-trigger-template.js.map +1 -0
  249. package/dist/intake.d.ts +569 -0
  250. package/dist/intake.d.ts.map +1 -0
  251. package/dist/intake.js +1628 -0
  252. package/dist/intake.js.map +1 -0
  253. package/dist/integration-core.d.ts +539 -0
  254. package/dist/integration-core.d.ts.map +1 -0
  255. package/dist/integration-core.js +2195 -0
  256. package/dist/integration-core.js.map +1 -0
  257. package/dist/integrator.d.ts +343 -0
  258. package/dist/integrator.d.ts.map +1 -0
  259. package/dist/integrator.js +400 -0
  260. package/dist/integrator.js.map +1 -0
  261. package/dist/isolation.d.ts +219 -0
  262. package/dist/isolation.d.ts.map +1 -0
  263. package/dist/isolation.js +261 -0
  264. package/dist/isolation.js.map +1 -0
  265. package/dist/issue-provider.d.ts +349 -0
  266. package/dist/issue-provider.d.ts.map +1 -0
  267. package/dist/issue-provider.js +360 -0
  268. package/dist/issue-provider.js.map +1 -0
  269. package/dist/item-lock.d.ts +626 -0
  270. package/dist/item-lock.d.ts.map +1 -0
  271. package/dist/item-lock.js +1381 -0
  272. package/dist/item-lock.js.map +1 -0
  273. package/dist/item-path.d.ts +49 -0
  274. package/dist/item-path.d.ts.map +1 -0
  275. package/dist/item-path.js +66 -0
  276. package/dist/item-path.js.map +1 -0
  277. package/dist/ledger-lint.d.ts +129 -0
  278. package/dist/ledger-lint.d.ts.map +1 -0
  279. package/dist/ledger-lint.js +249 -0
  280. package/dist/ledger-lint.js.map +1 -0
  281. package/dist/ledger-read.d.ts +357 -0
  282. package/dist/ledger-read.d.ts.map +1 -0
  283. package/dist/ledger-read.js +442 -0
  284. package/dist/ledger-read.js.map +1 -0
  285. package/dist/ledger-write.d.ts +330 -0
  286. package/dist/ledger-write.d.ts.map +1 -0
  287. package/dist/ledger-write.js +411 -0
  288. package/dist/ledger-write.js.map +1 -0
  289. package/dist/lifecycle-gather.d.ts +30 -0
  290. package/dist/lifecycle-gather.d.ts.map +1 -0
  291. package/dist/lifecycle-gather.js +205 -0
  292. package/dist/lifecycle-gather.js.map +1 -0
  293. package/dist/lifecycle-pools.d.ts +180 -0
  294. package/dist/lifecycle-pools.d.ts.map +1 -0
  295. package/dist/lifecycle-pools.js +78 -0
  296. package/dist/lifecycle-pools.js.map +1 -0
  297. package/dist/merge-question-surfacer.d.ts +166 -0
  298. package/dist/merge-question-surfacer.d.ts.map +1 -0
  299. package/dist/merge-question-surfacer.js +297 -0
  300. package/dist/merge-question-surfacer.js.map +1 -0
  301. package/dist/mint-adr.d.ts +126 -0
  302. package/dist/mint-adr.d.ts.map +1 -0
  303. package/dist/mint-adr.js +257 -0
  304. package/dist/mint-adr.js.map +1 -0
  305. package/dist/mirror-pool-scan.d.ts +125 -0
  306. package/dist/mirror-pool-scan.d.ts.map +1 -0
  307. package/dist/mirror-pool-scan.js +104 -0
  308. package/dist/mirror-pool-scan.js.map +1 -0
  309. package/dist/needs-attention.d.ts +341 -0
  310. package/dist/needs-attention.d.ts.map +1 -0
  311. package/dist/needs-attention.js +900 -0
  312. package/dist/needs-attention.js.map +1 -0
  313. package/dist/orphan-sidecar.d.ts +79 -0
  314. package/dist/orphan-sidecar.d.ts.map +1 -0
  315. package/dist/orphan-sidecar.js +71 -0
  316. package/dist/orphan-sidecar.js.map +1 -0
  317. package/dist/output.d.ts +48 -0
  318. package/dist/output.d.ts.map +1 -0
  319. package/dist/output.js +66 -0
  320. package/dist/output.js.map +1 -0
  321. package/dist/pi-harness.d.ts +179 -0
  322. package/dist/pi-harness.d.ts.map +1 -0
  323. package/dist/pi-harness.js +342 -0
  324. package/dist/pi-harness.js.map +1 -0
  325. package/dist/placement.d.ts +99 -0
  326. package/dist/placement.d.ts.map +1 -0
  327. package/dist/placement.js +67 -0
  328. package/dist/placement.js.map +1 -0
  329. package/dist/prd-to-spec.d.ts +315 -0
  330. package/dist/prd-to-spec.d.ts.map +1 -0
  331. package/dist/prd-to-spec.js +684 -0
  332. package/dist/prd-to-spec.js.map +1 -0
  333. package/dist/prepare.d.ts +121 -0
  334. package/dist/prepare.d.ts.map +1 -0
  335. package/dist/prepare.js +140 -0
  336. package/dist/prepare.js.map +1 -0
  337. package/dist/prompt.d.ts +360 -0
  338. package/dist/prompt.d.ts.map +1 -0
  339. package/dist/prompt.js +499 -0
  340. package/dist/prompt.js.map +1 -0
  341. package/dist/protocol/ADR-FORMAT.md +47 -0
  342. package/dist/protocol/CLAIM-PROTOCOL.md +217 -0
  343. package/dist/protocol/REVIEW-PROTOCOL.md +119 -0
  344. package/dist/protocol/SURFACE-PROTOCOL.md +121 -0
  345. package/dist/protocol/TASKING-PROTOCOL.md +122 -0
  346. package/dist/protocol/WORK-CONTRACT.md +276 -0
  347. package/dist/protocol/spec-template.md +71 -0
  348. package/dist/protocol/task-template.md +65 -0
  349. package/dist/readiness.d.ts +66 -0
  350. package/dist/readiness.d.ts.map +1 -0
  351. package/dist/readiness.js +36 -0
  352. package/dist/readiness.js.map +1 -0
  353. package/dist/reap-branches.d.ts +102 -0
  354. package/dist/reap-branches.d.ts.map +1 -0
  355. package/dist/reap-branches.js +149 -0
  356. package/dist/reap-branches.js.map +1 -0
  357. package/dist/recover-isolated.d.ts +72 -0
  358. package/dist/recover-isolated.d.ts.map +1 -0
  359. package/dist/recover-isolated.js +188 -0
  360. package/dist/recover-isolated.js.map +1 -0
  361. package/dist/registry.d.ts +172 -0
  362. package/dist/registry.d.ts.map +1 -0
  363. package/dist/registry.js +296 -0
  364. package/dist/registry.js.map +1 -0
  365. package/dist/repo-config.d.ts +201 -0
  366. package/dist/repo-config.d.ts.map +1 -0
  367. package/dist/repo-config.js +414 -0
  368. package/dist/repo-config.js.map +1 -0
  369. package/dist/repo-key.d.ts +20 -0
  370. package/dist/repo-key.d.ts.map +1 -0
  371. package/dist/repo-key.js +68 -0
  372. package/dist/repo-key.js.map +1 -0
  373. package/dist/repo-mirror.d.ts +177 -0
  374. package/dist/repo-mirror.d.ts.map +1 -0
  375. package/dist/repo-mirror.js +271 -0
  376. package/dist/repo-mirror.js.map +1 -0
  377. package/dist/retry-backoff.d.ts +90 -0
  378. package/dist/retry-backoff.d.ts.map +1 -0
  379. package/dist/retry-backoff.js +98 -0
  380. package/dist/retry-backoff.js.map +1 -0
  381. package/dist/review-gate.d.ts +173 -0
  382. package/dist/review-gate.d.ts.map +1 -0
  383. package/dist/review-gate.js +261 -0
  384. package/dist/review-gate.js.map +1 -0
  385. package/dist/review-verdict.d.ts +149 -0
  386. package/dist/review-verdict.d.ts.map +1 -0
  387. package/dist/review-verdict.js +332 -0
  388. package/dist/review-verdict.js.map +1 -0
  389. package/dist/run.d.ts +221 -0
  390. package/dist/run.d.ts.map +1 -0
  391. package/dist/run.js +963 -0
  392. package/dist/run.js.map +1 -0
  393. package/dist/scan.d.ts +308 -0
  394. package/dist/scan.d.ts.map +1 -0
  395. package/dist/scan.js +374 -0
  396. package/dist/scan.js.map +1 -0
  397. package/dist/select-order.d.ts +75 -0
  398. package/dist/select-order.d.ts.map +1 -0
  399. package/dist/select-order.js +108 -0
  400. package/dist/select-order.js.map +1 -0
  401. package/dist/select-priority.d.ts +188 -0
  402. package/dist/select-priority.d.ts.map +1 -0
  403. package/dist/select-priority.js +80 -0
  404. package/dist/select-priority.js.map +1 -0
  405. package/dist/select.d.ts +25 -0
  406. package/dist/select.d.ts.map +1 -0
  407. package/dist/select.js +43 -0
  408. package/dist/select.js.map +1 -0
  409. package/dist/session-path.d.ts +36 -0
  410. package/dist/session-path.d.ts.map +1 -0
  411. package/dist/session-path.js +129 -0
  412. package/dist/session-path.js.map +1 -0
  413. package/dist/sidecar-apply.d.ts +83 -0
  414. package/dist/sidecar-apply.d.ts.map +1 -0
  415. package/dist/sidecar-apply.js +111 -0
  416. package/dist/sidecar-apply.js.map +1 -0
  417. package/dist/sidecar.d.ts +245 -0
  418. package/dist/sidecar.d.ts.map +1 -0
  419. package/dist/sidecar.js +481 -0
  420. package/dist/sidecar.js.map +1 -0
  421. package/dist/slug-namespace.d.ts +204 -0
  422. package/dist/slug-namespace.d.ts.map +1 -0
  423. package/dist/slug-namespace.js +229 -0
  424. package/dist/slug-namespace.js.map +1 -0
  425. package/dist/spec-complete.d.ts +44 -0
  426. package/dist/spec-complete.d.ts.map +1 -0
  427. package/dist/spec-complete.js +69 -0
  428. package/dist/spec-complete.js.map +1 -0
  429. package/dist/start.d.ts +97 -0
  430. package/dist/start.d.ts.map +1 -0
  431. package/dist/start.js +633 -0
  432. package/dist/start.js.map +1 -0
  433. package/dist/status.d.ts +199 -0
  434. package/dist/status.d.ts.map +1 -0
  435. package/dist/status.js +228 -0
  436. package/dist/status.js.map +1 -0
  437. package/dist/surface-gate.d.ts +162 -0
  438. package/dist/surface-gate.d.ts.map +1 -0
  439. package/dist/surface-gate.js +206 -0
  440. package/dist/surface-gate.js.map +1 -0
  441. package/dist/surface-persist.d.ts +86 -0
  442. package/dist/surface-persist.d.ts.map +1 -0
  443. package/dist/surface-persist.js +129 -0
  444. package/dist/surface-persist.js.map +1 -0
  445. package/dist/tasker-review-loop.d.ts +249 -0
  446. package/dist/tasker-review-loop.d.ts.map +1 -0
  447. package/dist/tasker-review-loop.js +369 -0
  448. package/dist/tasker-review-loop.js.map +1 -0
  449. package/dist/tasking-eligibility.d.ts +74 -0
  450. package/dist/tasking-eligibility.d.ts.map +1 -0
  451. package/dist/tasking-eligibility.js +52 -0
  452. package/dist/tasking-eligibility.js.map +1 -0
  453. package/dist/tasking-lock.d.ts +111 -0
  454. package/dist/tasking-lock.d.ts.map +1 -0
  455. package/dist/tasking-lock.js +256 -0
  456. package/dist/tasking-lock.js.map +1 -0
  457. package/dist/tasking.d.ts +275 -0
  458. package/dist/tasking.d.ts.map +1 -0
  459. package/dist/tasking.js +952 -0
  460. package/dist/tasking.js.map +1 -0
  461. package/dist/triage-gate.d.ts +127 -0
  462. package/dist/triage-gate.d.ts.map +1 -0
  463. package/dist/triage-gate.js +139 -0
  464. package/dist/triage-gate.js.map +1 -0
  465. package/dist/triage-persist.d.ts +163 -0
  466. package/dist/triage-persist.d.ts.map +1 -0
  467. package/dist/triage-persist.js +387 -0
  468. package/dist/triage-persist.js.map +1 -0
  469. package/dist/verdict-json.d.ts +32 -0
  470. package/dist/verdict-json.d.ts.map +1 -0
  471. package/dist/verdict-json.js +74 -0
  472. package/dist/verdict-json.js.map +1 -0
  473. package/dist/verify-workflow-template.d.ts +60 -0
  474. package/dist/verify-workflow-template.d.ts.map +1 -0
  475. package/dist/verify-workflow-template.js +126 -0
  476. package/dist/verify-workflow-template.js.map +1 -0
  477. package/dist/verify.d.ts +60 -0
  478. package/dist/verify.d.ts.map +1 -0
  479. package/dist/verify.js +62 -0
  480. package/dist/verify.js.map +1 -0
  481. package/dist/watch-session.d.ts +112 -0
  482. package/dist/watch-session.d.ts.map +1 -0
  483. package/dist/watch-session.js +347 -0
  484. package/dist/watch-session.js.map +1 -0
  485. package/dist/work-layout.d.ts +198 -0
  486. package/dist/work-layout.d.ts.map +1 -0
  487. package/dist/work-layout.js +217 -0
  488. package/dist/work-layout.js.map +1 -0
  489. package/dist/work-on.d.ts +154 -0
  490. package/dist/work-on.d.ts.map +1 -0
  491. package/dist/work-on.js +387 -0
  492. package/dist/work-on.js.map +1 -0
  493. package/dist/workspace.d.ts +224 -0
  494. package/dist/workspace.d.ts.map +1 -0
  495. package/dist/workspace.js +325 -0
  496. package/dist/workspace.js.map +1 -0
  497. package/package.json +46 -2
  498. package/src/advance-ci-template.ts +203 -0
  499. package/src/advance-classify.ts +197 -0
  500. package/src/advance-drivers.ts +414 -0
  501. package/src/advance-isolated.ts +432 -0
  502. package/src/advance-lifecycle-template.ts +791 -0
  503. package/src/advance-loop-driver.ts +745 -0
  504. package/src/advance-treeless-publish.ts +177 -0
  505. package/src/advance.ts +1564 -0
  506. package/src/advancing-lock.ts +988 -0
  507. package/src/agent-launch.ts +137 -0
  508. package/src/agent-stop.ts +361 -0
  509. package/src/apply-decide.ts +242 -0
  510. package/src/apply-merge-action.ts +502 -0
  511. package/src/apply-persist.ts +518 -0
  512. package/src/arbiter.ts +372 -0
  513. package/src/brand.ts +111 -0
  514. package/src/buildable-body.ts +196 -0
  515. package/src/categorise.ts +158 -0
  516. package/src/claim-cas.ts +513 -0
  517. package/src/cli-spinner.ts +225 -0
  518. package/src/cli.ts +4369 -0
  519. package/src/close-job-template.ts +236 -0
  520. package/src/close-job.ts +319 -0
  521. package/src/complete.ts +1379 -0
  522. package/src/concurrency.ts +151 -0
  523. package/src/config-override.ts +116 -0
  524. package/src/config.ts +883 -0
  525. package/src/continue-branch.ts +542 -0
  526. package/src/cwd-section.ts +392 -0
  527. package/src/decision-engine.ts +272 -0
  528. package/src/detect.ts +124 -0
  529. package/src/do-autopick.ts +223 -0
  530. package/src/do-config.ts +589 -0
  531. package/src/do-remote-auto.ts +197 -0
  532. package/src/do.ts +2623 -0
  533. package/src/drop-source.ts +194 -0
  534. package/src/eligibility.ts +79 -0
  535. package/src/env-config.ts +305 -0
  536. package/src/failure-cause.ts +142 -0
  537. package/src/format.ts +313 -0
  538. package/src/frontmatter.ts +485 -0
  539. package/src/gate-readiness.ts +147 -0
  540. package/src/gc.ts +510 -0
  541. package/src/gh-failure.ts +53 -0
  542. package/src/git.ts +186 -0
  543. package/src/github.ts +468 -0
  544. package/src/harness.ts +355 -0
  545. package/src/identity.ts +322 -0
  546. package/src/index.ts +785 -0
  547. package/src/install-ci-branch-protection.ts +255 -0
  548. package/src/install-ci-capabilities/advance-lifecycle.ts +34 -0
  549. package/src/install-ci-capabilities/close-job.ts +32 -0
  550. package/src/install-ci-capabilities/example-noop.ts +24 -0
  551. package/src/install-ci-capabilities/intake.ts +34 -0
  552. package/src/install-ci-capabilities/verify.ts +33 -0
  553. package/src/install-ci-core.ts +1088 -0
  554. package/src/install-ci-github.ts +376 -0
  555. package/src/install-ci.ts +552 -0
  556. package/src/intake-event.ts +102 -0
  557. package/src/intake-marker.ts +195 -0
  558. package/src/intake-triage.ts +138 -0
  559. package/src/intake-trigger-template.ts +591 -0
  560. package/src/intake.ts +2445 -0
  561. package/src/integration-core.ts +3065 -0
  562. package/src/integrator.ts +771 -0
  563. package/src/isolation.ts +484 -0
  564. package/src/issue-provider.ts +733 -0
  565. package/src/item-lock.ts +1858 -0
  566. package/src/item-path.ts +75 -0
  567. package/src/ledger-lint.ts +332 -0
  568. package/src/ledger-read.ts +924 -0
  569. package/src/ledger-write.ts +865 -0
  570. package/src/lifecycle-gather.ts +298 -0
  571. package/src/lifecycle-pools.ts +250 -0
  572. package/src/merge-question-surfacer.ts +496 -0
  573. package/src/mint-adr.ts +362 -0
  574. package/src/mirror-pool-scan.ts +240 -0
  575. package/src/needs-attention.ts +1506 -0
  576. package/src/orphan-sidecar.ts +150 -0
  577. package/src/output.ts +89 -0
  578. package/src/pi-harness.ts +403 -0
  579. package/src/placement.ts +131 -0
  580. package/src/prd-to-spec.ts +1023 -0
  581. package/src/prepare.ts +230 -0
  582. package/src/prompt.ts +760 -0
  583. package/src/readiness.ts +98 -0
  584. package/src/reap-branches.ts +278 -0
  585. package/src/recover-isolated.ts +276 -0
  586. package/src/registry.ts +475 -0
  587. package/src/repo-config.ts +550 -0
  588. package/src/repo-key.ts +74 -0
  589. package/src/repo-mirror.ts +367 -0
  590. package/src/retry-backoff.ts +130 -0
  591. package/src/review-gate.ts +389 -0
  592. package/src/review-verdict.ts +422 -0
  593. package/src/run.ts +1430 -0
  594. package/src/scan.ts +611 -0
  595. package/src/select-order.ts +143 -0
  596. package/src/select-priority.ts +266 -0
  597. package/src/select.ts +62 -0
  598. package/src/session-path.ts +153 -0
  599. package/src/sidecar-apply.ts +216 -0
  600. package/src/sidecar.ts +700 -0
  601. package/src/slug-namespace.ts +367 -0
  602. package/src/spec-complete.ts +118 -0
  603. package/src/start.ts +974 -0
  604. package/src/status.ts +441 -0
  605. package/src/surface-gate.ts +337 -0
  606. package/src/surface-persist.ts +241 -0
  607. package/src/tasker-review-loop.ts +671 -0
  608. package/src/tasking-eligibility.ts +114 -0
  609. package/src/tasking-lock.ts +416 -0
  610. package/src/tasking.ts +1438 -0
  611. package/src/triage-gate.ts +248 -0
  612. package/src/triage-persist.ts +570 -0
  613. package/src/verdict-json.ts +73 -0
  614. package/src/verify-workflow-template.ts +159 -0
  615. package/src/verify.ts +123 -0
  616. package/src/watch-session.ts +397 -0
  617. package/src/work-layout.ts +262 -0
  618. package/src/work-on.ts +660 -0
  619. package/src/workspace.ts +502 -0
@@ -0,0 +1,589 @@
1
+ import type {
2
+ Config,
3
+ IntegrationMode,
4
+ MergeQuestions,
5
+ ObservationTriage,
6
+ PartialConfig,
7
+ } from './config.js';
8
+
9
+ /**
10
+ * The CLI flags that select WHICH agent runs and HOW it is launched — shared,
11
+ * verbatim, by `run` and `do`. Both commands offer `--harness`/`--agent-cmd`/
12
+ * `--pi-bin`/`--model`; this is the single place their string→`PartialConfig`
13
+ * mapping lives so there is exactly ONE override path (not a parallel one per
14
+ * command). `cli.ts`'s `runFlagOverrides` and {@link doFlagOverrides} both fold
15
+ * this in.
16
+ */
17
+ export interface HarnessFlags {
18
+ agentCmd?: string;
19
+ model?: string;
20
+ harness?: string;
21
+ piBin?: string;
22
+ /**
23
+ * The HOST-ONLY root folder under which a job's pi session FILE is generated
24
+ * (`--sessions-dir`). Forwarded verbatim like `piBin`; the path generator turns
25
+ * it into `<sessionsDir>/<unique-id>.jsonl` at launch (unset ⇒ pi's per-cwd
26
+ * default folder).
27
+ */
28
+ sessionsDir?: string;
29
+ }
30
+
31
+ /**
32
+ * Map the shared harness/adapter flags into a {@link PartialConfig} of overrides
33
+ * — the per-key mapping `run` and `do` both reuse. Only flags actually present
34
+ * contribute (absent flag ⇒ absent key), so the override layer never clobbers a
35
+ * lower precedence source with `undefined`. `--harness` is validated against the
36
+ * `HarnessAdapter` union (an out-of-range value is dropped, matching `run`).
37
+ */
38
+ export function harnessFlagOverrides(flags: HarnessFlags): PartialConfig {
39
+ const overrides: PartialConfig = {};
40
+ if (flags.agentCmd !== undefined) {
41
+ overrides.agentCmd = flags.agentCmd;
42
+ }
43
+ if (flags.model !== undefined) {
44
+ overrides.model = flags.model;
45
+ }
46
+ if (flags.harness === 'null' || flags.harness === 'pi') {
47
+ overrides.harness = flags.harness;
48
+ }
49
+ if (flags.piBin !== undefined) {
50
+ overrides.piBin = flags.piBin;
51
+ }
52
+ if (flags.sessionsDir !== undefined) {
53
+ overrides.sessionsDir = flags.sessionsDir;
54
+ }
55
+ return overrides;
56
+ }
57
+
58
+ /**
59
+ * Build the flag-override `PartialConfig` for the `do` command. This is the FIX
60
+ * for the silent-drop bug: `do` DECLARES `--harness`/`--agent-cmd`/`--pi-bin`/
61
+ * `--model`, so its action MUST thread them into `resolveRepoConfig`'s `flags`
62
+ * — not just `{integration}`. It reuses the SAME per-key mapping `run` uses
63
+ * ({@link harnessFlagOverrides}), then folds in the integrate-time mode (the
64
+ * already-resolved `--merge`/`--propose`, via `integrationFromFlags`) so the
65
+ * full set rides the same precedence chain (flag > env > per-repo > global >
66
+ * default).
67
+ */
68
+ export function doFlagOverrides(
69
+ flags: HarnessFlags &
70
+ ReviewFlags &
71
+ TaskerLoopFlags &
72
+ FreshWorktreeGateFlags &
73
+ SelectionOrderFlags &
74
+ ObservationTriageFlags &
75
+ SurfaceBlockersFlags &
76
+ MergeQuestionsFlags &
77
+ StrictMergeApprovalFlags &
78
+ NoPRFlags &
79
+ MergeRetriesFlags,
80
+ integration?: IntegrationMode,
81
+ ): PartialConfig {
82
+ const overrides = {
83
+ ...harnessFlagOverrides(flags),
84
+ // `--observation-triage <off|ask|auto>` rides the SAME flag-override chain
85
+ // (flag > env > per-repo > global > default): the observation-inbox gate.
86
+ ...observationTriageFlagOverrides(flags),
87
+ // `--surface-blockers`/`--no-surface-blockers` rides the SAME chain: the
88
+ // boolean gate over DECLARED blocked work (the orthogonal peer of
89
+ // `--observation-triage`).
90
+ ...surfaceBlockersFlagOverrides(flags),
91
+ // `--merge-questions <off|ask|auto>` rides the SAME flag-override chain
92
+ // (flag > env > per-repo > global > default `ask`): the 3-state gate over
93
+ // the merge-question SURFACER (prd `land-time-reverify-and-parallel-
94
+ // merge-ceiling` Story 17 / task `merge-questions-gate-axis`). SEPARATE
95
+ // axis from `--observation-triage` with a HIGHER default — NEVER rides
96
+ // `--observation-triage`.
97
+ ...mergeQuestionsFlagOverrides(flags),
98
+ // `--strict-merge-approval`/`--no-strict-merge-approval` rides the SAME
99
+ // flag-override chain (flag > env > per-repo > global > default `false`):
100
+ // the OPT-IN strictness layered on the OQ6 stale-approval default. SEPARATE
101
+ // axis from `--merge-questions` — the re-surface vs. land branch is
102
+ // `apply-rung-merge-disposition`'s consumer; this only resolves the boolean.
103
+ ...strictMergeApprovalFlagOverrides(flags),
104
+ // `--selection-order <order>` rides the SAME flag-override chain (flag > env >
105
+ // per-repo > global > default): a comma-separated value becomes a list (an
106
+ // explicit pool order), otherwise the verbatim string (a preset keyword). The
107
+ // resolver (`select-order.ts`) validates/expands it at selection time.
108
+ ...selectionOrderFlagOverrides(flags),
109
+ // Gate 2 (PR/code review) flags ride the SAME flag-override path so
110
+ // `--review`/`--review-model`/`--review-max-rounds` resolve
111
+ // flag > env > per-repo > global > default, exactly like the harness flags.
112
+ ...reviewFlagOverrides(flags),
113
+ // The tasker IMPROVER-loop family (`--tasker-loop`/`--no-tasker-loop`/
114
+ // `--tasker-loop-max`/`--tasker-loop-model`) rides the same chain — a DISTINCT
115
+ // family from the gate's `--review*`, never sharing a flag/key/field name.
116
+ // The flag fields bridge onto the `taskerLoop*` config keys.
117
+ ...taskerLoopFlagOverrides(flags),
118
+ // `--fresh-worktree-gate`/`--no-fresh-worktree-gate` (run the acceptance gate
119
+ // against the REBASED tip in a clean throwaway worktree, ON by default) rides
120
+ // the SAME chain — a DISTINCT family from `--review*`/`--tasker-loop*`.
121
+ ...freshWorktreeGateFlagOverrides(flags),
122
+ // `--no-pr` (the PR-INTENT axis): suppress the PR even on an authed GitHub
123
+ // arbiter. Rides the SAME flag > env > per-repo > global > default chain.
124
+ ...noPRFlagOverrides(flags),
125
+ // `--merge-retries <n>` (the cross-job merge serialiser's CAS-retry cap — prd
126
+ // `land-time-reverify-and-parallel-merge-ceiling` Story 5 / Applied Answer
127
+ // q1 (a)) rides the SAME chain (flag > env > per-repo > global > default).
128
+ ...mergeRetriesFlagOverrides(flags),
129
+ };
130
+ if (integration !== undefined) {
131
+ // An explicit `--merge`/`--propose` flag ALWAYS wins for the transition this
132
+ // command runs. `do` runs EITHER the build transition (a task) OR the tasking
133
+ // transition (a `do prd:`) per invocation, and the typed flag is
134
+ // transition-AGNOSTIC, so it must override BOTH the build mode (`integration`)
135
+ // AND the tasking mode (`taskingIntegration`). Setting both at the top of the
136
+ // precedence chain means a `--propose` on a `taskingIntegration:'merge'` repo
137
+ // proposes the tasking too (the tasking path reads `taskingIntegration ??
138
+ // integration`, and the flag-set `taskingIntegration` shadows the config one).
139
+ // (`per-transition-integration-mode-slicing-vs-build`.)
140
+ overrides.integration = integration;
141
+ overrides.taskingIntegration = integration;
142
+ }
143
+ return overrides;
144
+ }
145
+
146
+ /**
147
+ * The Gate-2 (PR/code review) CLI flags, offered by `do` AND `complete`
148
+ * (`--review`/`--no-review`, `--review-model`, `--review-max-rounds`). Both commands resolve them through
149
+ * the SAME `flag > env > per-repo > global > default` chain as `integration`, so
150
+ * the mapping lives in ONE place (not a parallel copy per command).
151
+ */
152
+ export interface ReviewFlags {
153
+ /** `--review` ⇒ true, `--no-review` ⇒ false, absent ⇒ undefined. */
154
+ review?: boolean;
155
+ /** `--review-model <id>` — the de-correlated review model (routing intent). */
156
+ reviewModel?: string;
157
+ /** `--review-max-rounds <n>` — the revise↔review loop bound (parsed to a number). */
158
+ reviewMaxRounds?: string;
159
+ }
160
+
161
+ /**
162
+ * The tasker IMPROVER-loop CLI flags (`do` only): `--tasker-loop` /
163
+ * `--no-tasker-loop` (the on/off toggle), `--tasker-loop-max <n>` (the in-context
164
+ * convergence cap), and `--tasker-loop-model <id>` (the loop reviewer's
165
+ * de-correlated model). A DISTINCT family from the acceptance gate's `--review*`
166
+ * (see {@link ReviewFlags}) — no flag/key/field name spans both. Resolved through
167
+ * the SAME `flag > env > per-repo > global > default` chain.
168
+ *
169
+ * NOTE the flag NAMES are tasking-vocabulary (`--tasker-loop*`, so commander
170
+ * populates the `taskerLoop*` fields below), and they resolve into the
171
+ * `taskerLoop*` CONFIG KEYS, so {@link taskerLoopFlagOverrides} bridges the
172
+ * flag fields onto the config keys.
173
+ */
174
+ export interface TaskerLoopFlags {
175
+ /** `--tasker-loop` ⇒ true, `--no-tasker-loop` ⇒ false, absent ⇒ undefined. */
176
+ taskerLoop?: boolean;
177
+ /** `--tasker-loop-max <n>` — the loop's in-context convergence cap (parsed to a number). */
178
+ taskerLoopMax?: string;
179
+ /** `--tasker-loop-model <id>` — the loop reviewer's de-correlated model (routing intent). */
180
+ taskerLoopModel?: string;
181
+ }
182
+
183
+ /**
184
+ * Map the Gate-2 review flags into a {@link PartialConfig} of overrides — the
185
+ * per-key mapping `do` and `complete` both reuse. Only flags actually present
186
+ * contribute (absent flag ⇒ absent key), so the override layer never clobbers a
187
+ * lower-precedence source with `undefined`. `--review-max-rounds` is parsed to a
188
+ * number; a non-numeric value is dropped (the lower layer / default decides).
189
+ */
190
+ export function reviewFlagOverrides(flags: ReviewFlags): PartialConfig {
191
+ const overrides: PartialConfig = {};
192
+ if (flags.review !== undefined) {
193
+ overrides.review = flags.review;
194
+ }
195
+ if (flags.reviewModel !== undefined) {
196
+ overrides.reviewModel = flags.reviewModel;
197
+ }
198
+ if (flags.reviewMaxRounds !== undefined) {
199
+ const n = Number(flags.reviewMaxRounds);
200
+ if (flags.reviewMaxRounds.trim() !== '' && !Number.isNaN(n)) {
201
+ overrides.reviewMaxRounds = n;
202
+ }
203
+ }
204
+ return overrides;
205
+ }
206
+
207
+ /**
208
+ * Map the tasker IMPROVER-loop flags into a {@link PartialConfig} of overrides.
209
+ * Only flags actually present contribute (absent flag ⇒ absent key), so the
210
+ * override layer never clobbers a lower-precedence source with `undefined`.
211
+ * `--tasker-loop-max` is parsed to a number; a non-numeric value is dropped (the
212
+ * lower layer / default decides). A DISTINCT family from {@link reviewFlagOverrides}.
213
+ *
214
+ * The tasking-vocabulary FLAG fields (`taskerLoop*`) bridge onto the
215
+ * `taskerLoop*` CONFIG KEYS, so the operator types `--tasker-loop` and the value
216
+ * resolves through the standard precedence into `config.taskerLoop`.
217
+ */
218
+ export function taskerLoopFlagOverrides(flags: TaskerLoopFlags): PartialConfig {
219
+ const overrides: PartialConfig = {};
220
+ if (flags.taskerLoop !== undefined) {
221
+ overrides.taskerLoop = flags.taskerLoop;
222
+ }
223
+ if (flags.taskerLoopMax !== undefined) {
224
+ const n = Number(flags.taskerLoopMax);
225
+ if (flags.taskerLoopMax.trim() !== '' && !Number.isNaN(n)) {
226
+ overrides.taskerLoopMax = n;
227
+ }
228
+ }
229
+ if (flags.taskerLoopModel !== undefined) {
230
+ overrides.taskerLoopModel = flags.taskerLoopModel;
231
+ }
232
+ return overrides;
233
+ }
234
+
235
+ /**
236
+ * The fresh-worktree acceptance-gate CLI flag (`do`/`complete`/`run`):
237
+ * `--fresh-worktree-gate` / `--no-fresh-worktree-gate`, the POSITIVE boolean
238
+ * (default ON) toggling whether the acceptance gate (`prepare` then `verify`)
239
+ * runs against the REBASED tip in a clean throwaway worktree (the merged
240
+ * artifact) or in the agent's build worktree (the pre-rebase tree). Modelled
241
+ * EXACTLY on {@link TaskerLoopFlags}'s on/off toggle; a DISTINCT family (no
242
+ * flag/key/field name spans both). Resolved through the SAME
243
+ * `flag > env > per-repo > global > default` chain.
244
+ */
245
+ export interface FreshWorktreeGateFlags {
246
+ /** `--fresh-worktree-gate` ⇒ true, `--no-fresh-worktree-gate` ⇒ false, absent ⇒ undefined. */
247
+ freshWorktreeGate?: boolean;
248
+ }
249
+
250
+ /**
251
+ * Map the `--fresh-worktree-gate`/`--no-fresh-worktree-gate` flag into a
252
+ * {@link PartialConfig} override. Only a present flag contributes (absent ⇒
253
+ * absent key), so the override layer never clobbers a lower-precedence source
254
+ * with `undefined`. A negatable boolean (mirrors `taskerLoop`), so the caller
255
+ * leaves `freshWorktreeGate` UNDEFINED unless the user explicitly passed the
256
+ * flag (see the cli's option-source read).
257
+ */
258
+ export function freshWorktreeGateFlagOverrides(
259
+ flags: FreshWorktreeGateFlags,
260
+ ): PartialConfig {
261
+ const overrides: PartialConfig = {};
262
+ if (flags.freshWorktreeGate !== undefined) {
263
+ overrides.freshWorktreeGate = flags.freshWorktreeGate;
264
+ }
265
+ return overrides;
266
+ }
267
+
268
+ /**
269
+ * The selection-order CLI flag (`do` AND `advance`): `--selection-order <order>`
270
+ * (a preset keyword like `drain`/`groom`, or a comma-separated explicit pool
271
+ * order like `build,task,surface,triage`). Resolved through the SAME
272
+ * `flag > env > per-repo > global > default` chain as the other `do` flags.
273
+ */
274
+ export interface SelectionOrderFlags {
275
+ /** `--selection-order <order>` — a preset keyword or comma-separated pool list. */
276
+ selectionOrder?: string;
277
+ }
278
+
279
+ /**
280
+ * Map the `--selection-order` flag into a {@link PartialConfig} override. Only a
281
+ * present flag contributes (absent ⇒ absent key). A value CONTAINING a comma is
282
+ * parsed into a trimmed, non-empty list (an explicit pool order, mirroring the
283
+ * env `'list'` coercion); otherwise it is the verbatim string (a preset keyword
284
+ * or a single pool name). The resolver (`select-order.ts`) does the
285
+ * validation/expansion + loud failure at selection time — this only normalises
286
+ * the flag's surface syntax.
287
+ */
288
+ export function selectionOrderFlagOverrides(
289
+ flags: SelectionOrderFlags,
290
+ ): PartialConfig {
291
+ const overrides: PartialConfig = {};
292
+ if (flags.selectionOrder !== undefined) {
293
+ const raw = flags.selectionOrder;
294
+ overrides.selectionOrder = raw.includes(',')
295
+ ? raw
296
+ .split(',')
297
+ .map((s) => s.trim())
298
+ .filter((s) => s !== '')
299
+ : raw;
300
+ }
301
+ return overrides;
302
+ }
303
+
304
+ /**
305
+ * The observation-triage CLI flag (`advance`): `--observation-triage
306
+ * <off|ask|auto>`, the 3-state gate over the observation INBOX (ADR
307
+ * `ci-config-policy-and-gate-family`). Resolved through the SAME
308
+ * `flag > env > per-repo > global > default` chain as the other gate flags.
309
+ */
310
+ export interface ObservationTriageFlags {
311
+ /** `--observation-triage <off|ask|auto>` — the observation-inbox gate state. */
312
+ observationTriage?: string;
313
+ }
314
+
315
+ /** The valid `--observation-triage` values (mirrors the env enum coercion). */
316
+ const OBSERVATION_TRIAGE_VALUES: readonly ObservationTriage[] = [
317
+ 'off',
318
+ 'ask',
319
+ 'auto',
320
+ ];
321
+
322
+ /**
323
+ * Map the `--observation-triage` flag into a {@link PartialConfig} override. Only
324
+ * a present flag contributes (absent ⇒ absent key). An INVALID value FAILS LOUDLY
325
+ * (the same loud-failure contract the env enum coercion enforces) rather than
326
+ * silently falling through to a lower layer — a typo on an autonomy gate must
327
+ * never be quietly ignored.
328
+ */
329
+ export function observationTriageFlagOverrides(
330
+ flags: ObservationTriageFlags,
331
+ ): PartialConfig {
332
+ const overrides: PartialConfig = {};
333
+ if (flags.observationTriage !== undefined) {
334
+ const raw = flags.observationTriage;
335
+ if (!OBSERVATION_TRIAGE_VALUES.includes(raw as ObservationTriage)) {
336
+ throw new Error(
337
+ `Invalid value for --observation-triage: '${raw}'. ` +
338
+ `Expected one of: ${OBSERVATION_TRIAGE_VALUES.join(', ')}.`,
339
+ );
340
+ }
341
+ overrides.observationTriage = raw as ObservationTriage;
342
+ }
343
+ return overrides;
344
+ }
345
+
346
+ /**
347
+ * The surface-blockers CLI flag (`advance`): `--surface-blockers` /
348
+ * `--no-surface-blockers`, the BOOLEAN gate over DECLARED blocked work (whether a
349
+ * `needsAnswers:true` task/prd is rendered into a question sidecar; ADR
350
+ * `ci-config-policy-and-gate-family`). The orthogonal PEER of
351
+ * `--observation-triage`. Resolved through the SAME
352
+ * `flag > env > per-repo > global > default` chain as the other gate flags.
353
+ */
354
+ export interface SurfaceBlockersFlags {
355
+ /** `--surface-blockers` ⇒ true, `--no-surface-blockers` ⇒ false, absent ⇒ undefined. */
356
+ surfaceBlockers?: boolean;
357
+ }
358
+
359
+ /**
360
+ * Map the `--surface-blockers` flag into a {@link PartialConfig} override. Only a
361
+ * present flag contributes (absent ⇒ absent key), so the override layer never
362
+ * clobbers a lower-precedence source with `undefined`. A negatable boolean, so the
363
+ * caller leaves `surfaceBlockers` UNDEFINED unless the user explicitly passed
364
+ * `--surface-blockers`/`--no-surface-blockers` (see the cli's option-source read).
365
+ */
366
+ export function surfaceBlockersFlagOverrides(
367
+ flags: SurfaceBlockersFlags,
368
+ ): PartialConfig {
369
+ const overrides: PartialConfig = {};
370
+ if (flags.surfaceBlockers !== undefined) {
371
+ overrides.surfaceBlockers = flags.surfaceBlockers;
372
+ }
373
+ return overrides;
374
+ }
375
+
376
+ /**
377
+ * **The cross-job merge-serialiser CAS-retry cap CLI flag** (`--merge-retries
378
+ * <n>`) — prd `land-time-reverify-and-parallel-merge-ceiling` Story 5 / Applied
379
+ * Answer q1 (a). The git-alone FLOOR of the cross-job land-queue; a wide-matrix
380
+ * CI raises the cap so more contenders converge before any spurious bounce to
381
+ * needs-attention. Offered by `do`/`run`/`complete`. Resolved through the SAME
382
+ * `flag > env > per-repo > global > default` chain as `--review-max-rounds` /
383
+ * `--fresh-worktree-gate`.
384
+ */
385
+ export interface MergeRetriesFlags {
386
+ /** `--merge-retries <n>` — the cross-job CAS-retry cap (parsed to a non-negative integer). */
387
+ mergeRetries?: string;
388
+ }
389
+
390
+ /**
391
+ * Map the `--merge-retries <n>` flag into a {@link PartialConfig} override. Only
392
+ * a present flag contributes (absent ⇒ absent key), so the override layer never
393
+ * clobbers a lower-precedence source with `undefined`. The value MUST be a
394
+ * NON-NEGATIVE integer (`0` is meaningful — it disables the retry, the
395
+ * un-retried path the engine's tests pin); a non-integer / negative value is
396
+ * dropped silently so the lower layer / default decides (mirrors
397
+ * {@link reviewFlagOverrides}'s parse-or-drop on `--review-max-rounds`).
398
+ */
399
+ export function mergeRetriesFlagOverrides(
400
+ flags: MergeRetriesFlags,
401
+ ): PartialConfig {
402
+ const overrides: PartialConfig = {};
403
+ if (flags.mergeRetries !== undefined) {
404
+ const raw = flags.mergeRetries;
405
+ if (raw.trim() !== '') {
406
+ const n = Number(raw);
407
+ if (Number.isInteger(n) && n >= 0) {
408
+ overrides.mergeRetries = n;
409
+ }
410
+ }
411
+ }
412
+ return overrides;
413
+ }
414
+
415
+ /**
416
+ * The merge-questions CLI flag (`advance`): `--merge-questions <off|ask|auto>`,
417
+ * the 3-state gate over the MERGE-QUESTION SURFACER (prd
418
+ * `land-time-reverify-and-parallel-merge-ceiling` Story 17 / task
419
+ * `merge-questions-gate-axis`). MIRRORS `--observation-triage`'s SHAPE but is a
420
+ * SEPARATE axis with a HIGHER default (`ask`, never `off` — a dropped merge-
421
+ * question means pushed work never lands). Resolved through the SAME
422
+ * `flag > env > per-repo > global > default` chain as the other gate flags.
423
+ */
424
+ export interface MergeQuestionsFlags {
425
+ /** `--merge-questions <off|ask|auto>` — the merge-question surfacer gate. */
426
+ mergeQuestions?: string;
427
+ }
428
+
429
+ /** The valid `--merge-questions` values (mirrors the env enum coercion). */
430
+ const MERGE_QUESTIONS_VALUES: readonly MergeQuestions[] = [
431
+ 'off',
432
+ 'ask',
433
+ 'auto',
434
+ ];
435
+
436
+ /**
437
+ * Map the `--merge-questions` flag into a {@link PartialConfig} override. Only a
438
+ * present flag contributes (absent ⇒ absent key). An INVALID value FAILS LOUDLY
439
+ * (the same loud-failure contract `--observation-triage` enforces) rather than
440
+ * silently falling through — a typo on a question-surfacing gate must never be
441
+ * quietly ignored.
442
+ */
443
+ export function mergeQuestionsFlagOverrides(
444
+ flags: MergeQuestionsFlags,
445
+ ): PartialConfig {
446
+ const overrides: PartialConfig = {};
447
+ if (flags.mergeQuestions !== undefined) {
448
+ const raw = flags.mergeQuestions;
449
+ if (!MERGE_QUESTIONS_VALUES.includes(raw as MergeQuestions)) {
450
+ throw new Error(
451
+ `Invalid value for --merge-questions: '${raw}'. ` +
452
+ `Expected one of: ${MERGE_QUESTIONS_VALUES.join(', ')}.`,
453
+ );
454
+ }
455
+ overrides.mergeQuestions = raw as MergeQuestions;
456
+ }
457
+ return overrides;
458
+ }
459
+
460
+ /**
461
+ * **The strict-merge-approval CLI flag** (`--strict-merge-approval` /
462
+ * `--no-strict-merge-approval`) — prd
463
+ * `land-time-reverify-and-parallel-merge-ceiling` sidecar OQ6 / task
464
+ * `strict-merge-approval-gate`. The OPT-IN strictness layered on the OQ6
465
+ * stale-approval default: ON re-surfaces the merge-question on a merge-base
466
+ * change instead of auto-landing on a green re-verify (the host-agnostic
467
+ * analogue of GitHub's "dismiss stale approvals when the base changes"); OFF
468
+ * (default) honours the prior answer + lands when the rebased tip re-verifies
469
+ * GREEN. Offered alongside `--merge-questions` on `advance` (the apply rung is
470
+ * the consumer). Resolved through the SAME `flag > env > per-repo > global >
471
+ * default` chain as the other gate-family members. A negatable boolean
472
+ * (mirrors `--fresh-worktree-gate`).
473
+ */
474
+ export interface StrictMergeApprovalFlags {
475
+ /** `--strict-merge-approval` ⇒ true, `--no-strict-merge-approval` ⇒ false, absent ⇒ undefined. */
476
+ strictMergeApproval?: boolean;
477
+ }
478
+
479
+ /**
480
+ * Map the `--strict-merge-approval`/`--no-strict-merge-approval` flag into a
481
+ * {@link PartialConfig} override. Only a present flag contributes (absent ⇒
482
+ * absent key), so the override layer never clobbers a lower-precedence source
483
+ * with `undefined`. A negatable boolean (mirrors
484
+ * {@link freshWorktreeGateFlagOverrides}): the caller leaves
485
+ * `strictMergeApproval` UNDEFINED unless the user explicitly passed the flag.
486
+ */
487
+ export function strictMergeApprovalFlagOverrides(
488
+ flags: StrictMergeApprovalFlags,
489
+ ): PartialConfig {
490
+ const overrides: PartialConfig = {};
491
+ if (flags.strictMergeApproval !== undefined) {
492
+ overrides.strictMergeApproval = flags.strictMergeApproval;
493
+ }
494
+ return overrides;
495
+ }
496
+
497
+ /**
498
+ * The PR-INTENT CLI flag (`--no-pr`), offered by `do`/`complete`/`run`: push the
499
+ * branch but deliberately skip the review request (the explicit suppress-PR
500
+ * intent, ADR §6). NOT a provider choice. Commander stores the negatable flag as
501
+ * `pr` (false when `--no-pr` is passed). Resolved through the SAME
502
+ * `flag > env > per-repo > global > default` chain as `integration`/`review`.
503
+ */
504
+ export interface NoPRFlags {
505
+ /** `--no-pr` ⇒ commander stores `pr === false` (the suppress-PR intent). */
506
+ pr?: boolean;
507
+ }
508
+
509
+ /**
510
+ * Map the `--no-pr` flag into a {@link PartialConfig} override. Only an explicit
511
+ * `--no-pr` (commander's `pr === false`) contributes `noPR: true`; otherwise the
512
+ * key stays absent so the lower layer (env / per-repo / global / default) decides.
513
+ */
514
+ export function noPRFlagOverrides(flags: NoPRFlags): PartialConfig {
515
+ const overrides: PartialConfig = {};
516
+ if (flags.pr === false) {
517
+ overrides.noPR = true;
518
+ }
519
+ return overrides;
520
+ }
521
+
522
+ /**
523
+ * The null-default guard: the `null` adapter shells out to `agentCmd`, so it is
524
+ * required there; the `pi` adapter invokes the pi CLI directly and does not
525
+ * consume `agentCmd`. Returns `true` when the resolved config selects the null
526
+ * adapter with no `agentCmd` — the case `do`/`run`/`--remote` must reject with a
527
+ * clear error ({@link NO_AGENT_CMD_MESSAGE}). All three CLI sites call THIS one
528
+ * predicate (named here so the fix's no-regression test can pin it).
529
+ */
530
+ export function doNeedsAgentCmd(config: Config): boolean {
531
+ return config.harness !== 'pi' && config.agentCmd.trim() === '';
532
+ }
533
+
534
+ /**
535
+ * The shared up-front message for the {@link doNeedsAgentCmd} refusal. Names BOTH
536
+ * escape hatches: the `--harness pi` adapter (which needs no agentCmd) and
537
+ * setting `harness`/`agentCmd` in config. Shared so `do`/`run`/`--remote` speak
538
+ * with one voice (and the test that pins `--harness pi` only has to pin it once).
539
+ */
540
+ export const NO_AGENT_CMD_MESSAGE =
541
+ 'no harness configured and no agentCmd set — nothing would run. Pass ' +
542
+ '--harness pi (or set harness/agentCmd in .dorfl.json or global config).';
543
+
544
+ /**
545
+ * The shared up-front message for the PR-INTENT pre-flight refusal: a `propose`
546
+ * run on a GitHub arbiter intends a PR (`noPR` unset) but a `gh` AUTH/AVAILABILITY
547
+ * PROBE says `gh` cannot open one. Surfaced BEFORE any claim/onboard/build so no
548
+ * work is wasted, and naming EVERY real fix (auth `gh`, set a `providers.github`
549
+ * identity token, switch to `--merge`, or `--no-pr` to push without a PR). The
550
+ * honest-failure value the `noPR` axis buys: it disambiguates "I deliberately
551
+ * want no PR" from "I wanted a PR and silently didn't get one". Shared so the
552
+ * in-place + no-checkout `do` paths speak with one voice.
553
+ */
554
+ export const PROPOSE_PR_INTENT_GH_UNAVAILABLE_MESSAGE =
555
+ 'propose mode on a GitHub arbiter intends a PR, but `gh` is not ' +
556
+ 'available/authenticated to open one. Run `gh auth login` (or set a ' +
557
+ '`providers.github` identity token), or pass `--merge` to land on main, or ' +
558
+ '`--no-pr` to push the branch without opening a PR.';
559
+
560
+ /**
561
+ * Should the PR-INTENT pre-flight guard FIRE for this run? It fires ONLY when ALL
562
+ * hold: the run is `propose` mode (not `merge` — merge never opens a PR), the
563
+ * arbiter is a GitHub URL (only then is a PR even possible), `noPR` is UNSET (the
564
+ * operator INTENDS a PR), and the injected `gh` auth/availability `probe` reports
565
+ * `gh` cannot open one. The probe (mirroring `GitHubProvider.available`) is
566
+ * the signal, NOT a config inspection: an ABSENT `providers.github` identity must
567
+ * NOT trip this guard — it falls back to AMBIENT `gh` auth (the common local-dev
568
+ * case), which the probe correctly reports as available. A genuinely TRANSIENT
569
+ * mid-run `gh` outage (the probe passes here but the API fails later) is left to
570
+ * the runtime degrade — the probe only catches the start-of-run unauthed case.
571
+ */
572
+ export function shouldFailProposePrIntent(input: {
573
+ mode: IntegrationMode;
574
+ arbiterIsGitHub: boolean;
575
+ noPR: boolean | undefined;
576
+ /** The `gh` auth/availability probe (true ⇒ `gh` CAN open a PR). */
577
+ ghCanOpenPr: () => boolean;
578
+ }): boolean {
579
+ if (input.mode !== 'propose') {
580
+ return false;
581
+ }
582
+ if (!input.arbiterIsGitHub) {
583
+ return false;
584
+ }
585
+ if (input.noPR === true) {
586
+ return false;
587
+ }
588
+ return !input.ghCanOpenPr();
589
+ }