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 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/config.js ADDED
@@ -0,0 +1,241 @@
1
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'node:fs';
2
+ import { homedir } from 'node:os';
3
+ import { dirname, join } from 'node:path';
4
+ import { brand } from './brand.js';
5
+ import { validateIdentity } from './identity.js';
6
+ import { DEFAULT_SELECTION_ORDER, } from './select-order.js';
7
+ /**
8
+ * Resolve the `promptGuidance` namespace down to its concrete boolean fields
9
+ * with the documented defaults applied — so callers can read
10
+ * `resolvePromptGuidance(cfg).testFirst` without re-checking the namespace's
11
+ * presence (a per-repo file may legitimately omit `promptGuidance` entirely,
12
+ * or supply only a subset). Mirrors the gate family's defaults-resolved
13
+ * convention.
14
+ */
15
+ export function resolvePromptGuidance(cfg) {
16
+ return { testFirst: cfg.promptGuidance?.testFirst === true };
17
+ }
18
+ /**
19
+ * The DEPRECATED config/env keys: present in an OLD config keeps working but is
20
+ * IGNORED with a one-line warning (never a hard error), so an existing setup is
21
+ * not broken by a removal. Each maps to the human-facing replacement hint. Mirrors
22
+ * the `allowAgents`→`autoBuild` removal-with-warning precedent.
23
+ *
24
+ * `provider` (the review-request provider OVERRIDE + `--provider` flag) was
25
+ * removed: the provider is purely ARBITER-derived now (a GitHub remote ⇒ the
26
+ * GitHub provider, else `none`), so an override could only contradict the arbiter.
27
+ * The legitimate `provider: none` use ("suppress the PR") is re-homed to the
28
+ * `noPR` intent axis.
29
+ */
30
+ export const DEPRECATED_CONFIG_KEYS = {
31
+ provider: 'the `provider` axis was removed — the review-request provider is now purely ' +
32
+ 'arbiter-derived (a GitHub remote ⇒ the GitHub provider, else none). To ' +
33
+ 'deliberately suppress the PR (the old `provider: none` use), set `noPR: true` ' +
34
+ '(or pass `--no-pr`).',
35
+ };
36
+ /**
37
+ * Warn (once per offending key) for any DEPRECATED key present in a parsed config
38
+ * object, then DELETE it from the object so it never lingers in the resolved
39
+ * config. A stale key is IGNORED, not an error — an existing config keeps working.
40
+ * For `provider`, the warning points specifically at the `noPR` replacement when
41
+ * the stale value was the old `none` ("suppress the PR") use.
42
+ */
43
+ export function warnDeprecatedConfigKeys(parsed, source, warn = (m) => console.error(`>> ${m}`)) {
44
+ for (const key of Object.keys(DEPRECATED_CONFIG_KEYS)) {
45
+ if (!(key in parsed) || parsed[key] === undefined) {
46
+ continue;
47
+ }
48
+ const staleNone = key === 'provider' && parsed[key] === 'none';
49
+ const hint = DEPRECATED_CONFIG_KEYS[key];
50
+ warn(`Ignoring deprecated key '${key}' in ${source}: ${hint}` +
51
+ (staleNone
52
+ ? ' (your `provider: none` maps directly to `noPR: true`.)'
53
+ : ''));
54
+ delete parsed[key];
55
+ }
56
+ }
57
+ /**
58
+ * Built-in defaults. Chosen so that zero-config is useful: stay strict about the
59
+ * autonomy gate (agents claim nothing unless a repo opts in via `autoBuild`).
60
+ * Discovery has no default `roots` — it is the registered hub-mirror set (empty
61
+ * until `remote add`/`remote find` registers a target).
62
+ */
63
+ export const DEFAULT_CONFIG = {
64
+ autoBuild: false,
65
+ // The `promptGuidance` nudge namespace defaults to ALL members off — so the
66
+ // worker prompt is byte-identical to today when no repo opts in. NOT a gate;
67
+ // `verify` remains the sole acceptance bar regardless.
68
+ promptGuidance: { testFirst: false },
69
+ // Auto-tasking is human-first by default: an agent tasks nothing unless a
70
+ // repo opts in via `autoTask` (mirrors `autoBuild`, one level up).
71
+ autoTask: false,
72
+ // The observation INBOX is calm by default (`off`): the triage pool is dropped
73
+ // from the auto-pick selection, so observations are left untouched unless a repo
74
+ // opts in via `observationTriage` (`ask` ⇒ surface a question for each; `auto` ⇒
75
+ // auto-dispose the no-question cases). ADR `ci-config-policy-and-gate-family` §3.
76
+ observationTriage: 'off',
77
+ // The merge-question SURFACER defaults to `ask` — the conservative default
78
+ // (prd `land-time-reverify-and-parallel-merge-ceiling` Applied answer q2 /
79
+ // task `merge-questions-gate-axis` Applied answer q2). NEVER `off` by default:
80
+ // a silently-dropped merge-question means finished, pushed work never lands —
81
+ // strictly more consequential than a dropped observation-promote prompt, so
82
+ // this gate axis is DELIBERATELY HIGHER than `observationTriage`'s `off`. A
83
+ // trusted-repo fast path opts into `auto` (runner self-supplies the `merge`
84
+ // answer + lands via the SAME deterministic apply-time re-verify); a repo that
85
+ // lands by some other means opts into `off`. Resolved per-repo through the
86
+ // SAME precedence chain (flag > env > per-repo > global > default).
87
+ mergeQuestions: 'ask',
88
+ // DECLARED blocked work is calm by default (`false`): the `needsAnswers`-blocked
89
+ // pool is dropped from the auto-pick selection, so `advance` does NOT proactively
90
+ // render a declared blocker into a question sidecar unless a repo opts in via
91
+ // `surfaceBlockers`. Orthogonal PEER to `observationTriage`; `needs-attention`
92
+ // (a stuck build) is separate + always-on. ADR `ci-config-policy-and-gate-family` §3.
93
+ surfaceBlockers: false,
94
+ // SURFACING widens to STAGING by default (`true`) — a `needsAnswers` task in
95
+ // `tasks/backlog/` or a `needsAnswers` prd in `prds/proposed/` surfaces
96
+ // its questions BEFORE promotion, so a human promotes an already-clarified
97
+ // item. Prd `staging-surface-and-apply-promote-safety` (F2). BUILD/claim
98
+ // stays pool-only + trust-gated regardless: this widens ONLY the surface
99
+ // polarity, not the build polarity. Set `false` to restore the legacy
100
+ // pool-only surface behaviour.
101
+ surfaceStaging: true,
102
+ // The `drain` selection-order preset by default (ADR `ci-config-policy-and-gate-
103
+ // family`, selection-order section): drain ready work (build eligible tasks →
104
+ // task taskable prds) before creating/asking (surface → triage); `apply` is
105
+ // always first. Reproduces today's tasks-first two-pool default. Subsumes the
106
+ // removed `prdsFirst` boolean (`[task, build, ...]` reproduces `prdsFirst: true`).
107
+ selectionOrder: DEFAULT_SELECTION_ORDER,
108
+ maxParallel: 4,
109
+ perRepoMax: 2,
110
+ defaultArbiter: 'origin',
111
+ workspacesDir: join(homedir(), brand.workdirName),
112
+ arbitersDir: join(homedir(), 'git'),
113
+ integration: 'propose',
114
+ // The PR-INTENT axis defaults to `false` ("I want a PR"): on a GitHub arbiter,
115
+ // propose opens the PR via the arbiter-derived provider. Set `true` to push the
116
+ // branch but deliberately skip the PR (the explicit suppress-PR intent that
117
+ // re-homes the old `provider: none` use). NOT a provider choice.
118
+ noPR: false,
119
+ // The tasker's emitted tasks land STAGED (`pre-backlog/`) by default — the
120
+ // conservative landing that preserves the tracer task's behaviour: an item is
121
+ // durable + readable but NOT in the agent-eligible pool until a human/runner
122
+ // promotes it. A repo opts into the trusted fast-path with `tasksLandIn:
123
+ // 'ready'` (or `--tasks-land-in ready` / `DORFL_TASKS_LAND_IN=ready`).
124
+ // The runner-deterministic resolver overlays explicit-flag + untrusted-origin
125
+ // force on top of this default (`src/placement.ts`).
126
+ tasksLandIn: 'pre-backlog',
127
+ // `intake`-authored specs land STAGED (`pre-proposed/`) by default — the
128
+ // conservative landing that mirrors `tasksLandIn`'s built-in floor: a spec is
129
+ // durable + readable but NOT in the auto-tasking POOL until a human/runner
130
+ // promotes it. A repo opts into the trusted fast-path with `specsLandIn: 'ready'`
131
+ // (or `--specs-land-in ready` / `DORFL_SPECS_LAND_IN=ready`). The same
132
+ // runner-deterministic resolver overlays explicit-flag + untrusted-origin
133
+ // force on top of this default (`src/placement.ts`).
134
+ specsLandIn: 'pre-proposed',
135
+ agentCmd: '',
136
+ // Gate 2 (PR/code review) defaults OFF — it puts a model on the merge path, so
137
+ // it is opt-in (ADR §8). On an `approve` a resolved `merge` lands automatically
138
+ // (`merge` IS the auto-land mode); `propose` always leaves the merge to a human.
139
+ // The loop bound is a small N so an unattended revise↔review can never run forever.
140
+ review: false,
141
+ reviewMaxRounds: 2,
142
+ // The tasker improver loop is ON by default — auto-tasking has no `verify`
143
+ // floor, so the loop is the task path's quality engine (distinct from the
144
+ // acceptance gate's `review`, which defaults OFF).
145
+ taskerLoop: true,
146
+ // The tasker improver loop's hard cap on in-context review passes — a cheap
147
+ // default so an unattended review→edit→re-review can never run forever (the
148
+ // natural terminator is "no new blocking issue"; this is the ceiling on top).
149
+ taskerLoopMax: 3,
150
+ // The fresh-worktree acceptance gate is ON by default: most CI/tooling caches
151
+ // deps so `pnpm install` is fast, so correctness-first (the gate tests what
152
+ // MERGES, not the agent's pre-rebase checkout) is the right default. The
153
+ // opt-out (`--no-fresh-worktree-gate`) runs `verify` in the build worktree as
154
+ // before, for when the per-gate install cost is too high. Mirrors `taskerLoop`
155
+ // (positive name, default-on).
156
+ freshWorktreeGate: true,
157
+ // The cross-job merge serialiser's CAS-retry cap — the git-alone FLOOR of the
158
+ // land-time cross-job queue (prd `land-time-reverify-and-parallel-merge-ceiling`,
159
+ // Story 5 + Applied Answer q1 (a)). Matches `integration-core.ts`'s built-in
160
+ // `DEFAULT_MERGE_RETRIES` fallback (1000 — the C2 large liveness ceiling, NOT a
161
+ // small Race-1 budget) so resolving it through this layer is byte-for-byte
162
+ // today's behaviour when no source sets it. A wide-matrix CI raises it via
163
+ // `--merge-retries`/`DORFL_MERGE_RETRIES`/per-repo `mergeRetries`.
164
+ mergeRetries: 1000,
165
+ // The strict-merge-approval gate defaults OFF (sidecar OQ6 / task
166
+ // `strict-merge-approval-gate`): the cheap "green re-verify is enough" path
167
+ // is the default; the OQ6 PRD answer pins this. A repo opts in to the
168
+ // host-agnostic "dismiss stale approvals on base change" discipline with
169
+ // `strictMergeApproval: true` (or `--strict-merge-approval` /
170
+ // `DORFL_STRICT_MERGE_APPROVAL=true`). The re-surface vs. land branch is
171
+ // `apply-rung-merge-disposition`'s consumer, NOT here.
172
+ strictMergeApproval: false,
173
+ };
174
+ /** The conventional config location (`~/.config/dorfl/config.json`). */
175
+ export function defaultConfigPath() {
176
+ return join(homedir(), '.config', brand.configDirName, 'config.json');
177
+ }
178
+ /** Merge a partial config over the built-in defaults; arrays are replaced. */
179
+ export function mergeConfig(overrides) {
180
+ const merged = { ...DEFAULT_CONFIG };
181
+ // Iterate the override's own keys (not the defaults') so optional keys like
182
+ // `verify` (absent from DEFAULT_CONFIG, left unset by design) are carried over.
183
+ for (const key of Object.keys(overrides)) {
184
+ const value = overrides[key];
185
+ if (value !== undefined) {
186
+ // Assign through `unknown`: each key's value type matches by construction.
187
+ merged[key] = value;
188
+ }
189
+ }
190
+ return merged;
191
+ }
192
+ /**
193
+ * Persist `config` to `path` as pretty JSON (creating the parent dir). Used by
194
+ * `work-on` to SAVE the prompted `humanWorktreesDir` on first use so the human is
195
+ * never asked again. Only the keys present in `config` are written — we round-trip
196
+ * whatever the loader produced (defaults + file + the new key), which keeps the
197
+ * on-disk file explicit and stable.
198
+ */
199
+ export function saveConfig(config, path) {
200
+ mkdirSync(dirname(path), { recursive: true });
201
+ writeFileSync(path, JSON.stringify(config, null, 2) + '\n');
202
+ }
203
+ /**
204
+ * Load config from `path`, merged over defaults. A missing file is not an error
205
+ * (defaults make the tool work out of the box); invalid JSON is.
206
+ */
207
+ export function loadConfig(path = defaultConfigPath()) {
208
+ if (!existsSync(path)) {
209
+ return mergeConfig({});
210
+ }
211
+ let raw;
212
+ try {
213
+ raw = readFileSync(path, 'utf8');
214
+ }
215
+ catch (err) {
216
+ throw new Error(`Failed to read config at ${path}: ${err.message}`);
217
+ }
218
+ let parsed;
219
+ try {
220
+ parsed = JSON.parse(raw);
221
+ }
222
+ catch (err) {
223
+ throw new Error(`Invalid JSON in config at ${path}: ${err.message}`);
224
+ }
225
+ // Drop (with a one-line warning) any DEPRECATED key (e.g. the removed `provider`
226
+ // override) so an existing config keeps working — ignored, never a hard error.
227
+ warnDeprecatedConfigKeys(parsed, path);
228
+ // Validate a present identity at LOAD time (dumb — no arbiter URL resolution;
229
+ // the transport-coherence check is push-time). A bad identity is a hard config
230
+ // error, never a silent ambient fallback.
231
+ if (parsed.identity !== undefined) {
232
+ try {
233
+ validateIdentity(parsed.identity);
234
+ }
235
+ catch (err) {
236
+ throw new Error(`Invalid identity in config at ${path}: ${err.message}`);
237
+ }
238
+ }
239
+ return mergeConfig(parsed);
240
+ }
241
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,249 @@
1
+ /**
2
+ * True iff the git ref `branchRef` exists in `cwd` AND its tip is NOT an
3
+ * ancestor of `mainRef` — i.e. it carries commits beyond main (the prior
4
+ * attempt's work a `requeue` kept, to be continued). False when the ref is
5
+ * absent (nothing to continue → fresh cut) or already merged into main (no work
6
+ * beyond main → nothing to continue). Read-only; never throws.
7
+ *
8
+ * Both onboarding paths feed this ONE predicate with their own ref names:
9
+ * - in-place clone: branchRef=`<arbiter>/work/<slug>`, mainRef=`<arbiter>/main`
10
+ * - bare hub mirror: branchRef=`work/<slug>`, mainRef=`main`
11
+ */
12
+ export declare function branchAheadOf(cwd: string, branchRef: string, mainRef: string, env: NodeJS.ProcessEnv | undefined): boolean;
13
+ /**
14
+ * Arbiter-authoritative continue-detection: like {@link branchAheadOf}, but
15
+ * first asks the arbiter (`git ls-remote <arbiterRemote> refs/heads/<branch>`)
16
+ * whether the kept branch EXISTS — so a STALE local remote-tracking ref
17
+ * (`refs/remotes/<arbiter>/<branch>` or a bare mirror's `refs/heads/<branch>`)
18
+ * pointing at a branch already DELETED on the arbiter (by `requeue --reset`, by
19
+ * the merge-reap, or cross-machine by `gc --remote-branches`) can no longer
20
+ * fool the onboard into "continue". This is the READ-side backstop that pairs
21
+ * with the WRITE-side write-through ordering at every delete site
22
+ * (local-ref-first, then `git push <arbiter> --delete`): write-through keeps
23
+ * SAME-MACHINE state in sync at the source; this catches the CROSS-MACHINE
24
+ * residue at the read (the other machine cannot touch this machine's local
25
+ * tracking refs). A plain `git remote prune` does NOT cover this — verified a
26
+ * no-op on the bare hub mirror, which has no `remote.origin.fetch` refspec for
27
+ * the orphaned `refs/remotes/origin/*` namespace.
28
+ *
29
+ * The decision rules, in order:
30
+ * - `git ls-remote <arbiterRemote> refs/heads/<branch>` exits 0 with EMPTY
31
+ * stdout (branch absent on the arbiter) ⇒ NOT ahead (fresh cut). This is
32
+ * the bug-fix case: a stale local ref CANNOT override the arbiter's truth.
33
+ * - `ls-remote` exits 0 with a sha ⇒ delegate to {@link branchAheadOf} on
34
+ * the local refs (the existing predicate: ref exists AND not an ancestor
35
+ * of main). The arbiter-present case is the normal continue path.
36
+ * - `ls-remote` exits non-zero (unreachable arbiter / offline) ⇒ fall back
37
+ * to {@link branchAheadOf} on the local refs — the best the read can do
38
+ * when the arbiter cannot answer (same direction as today).
39
+ *
40
+ * `branch` is the unqualified branch name on the arbiter (e.g.
41
+ * `work/task-<slug>`); `branchRef` + `mainRef` are the local refs the
42
+ * arbiter-present delegate uses (in-place clone: `<arbiter>/<branch>` /
43
+ * `<arbiter>/main`; bare hub mirror: `<branch>` / `main`). `arbiterRemote` is
44
+ * the remote NAME to ls-remote (e.g. `origin` for the mirror, `arbiter` for an
45
+ * in-place clone with the conventional remote name).
46
+ */
47
+ export declare function branchAheadOfArbiter(options: {
48
+ cwd: string;
49
+ /** The remote NAME to `ls-remote` (the arbiter as known to this repo). */
50
+ arbiterRemote: string;
51
+ /** Unqualified branch name on the arbiter (e.g. `work/task-<slug>`). */
52
+ branch: string;
53
+ /** The local ref to read for the ahead-of-main check (when arbiter says present). */
54
+ branchRef: string;
55
+ /** The local main ref to compare against. */
56
+ mainRef: string;
57
+ env: NodeJS.ProcessEnv | undefined;
58
+ }): boolean;
59
+ /** The result of rebasing a continued branch onto the freshly-fetched main. */
60
+ export interface ContinueRebaseResult {
61
+ /** `clean` — the rebase replayed onto main with no conflict. */
62
+ /** `conflict` — the rebase conflicted; it was `--abort`ed (never auto-resolved). */
63
+ kind: 'clean' | 'conflict';
64
+ }
65
+ /**
66
+ * Rebase the CURRENTLY-CHECKED-OUT continued `work/<slug>` branch onto
67
+ * `mainRef` (the freshly-fetched main), so the agent builds on a CURRENT base
68
+ * (ADR §10: rebase, NOT merge — linear history; the prior attempt's commits were
69
+ * based on an OLD main that moved while the item sat in backlog).
70
+ *
71
+ * This is a PLAIN rebase. After the per-item-lock cut-over (prd
72
+ * `ledger-status-per-item-lock-refs`, tasks 9a–9d) NO transient status lands on
73
+ * a work branch: claim does not move the body (it rests in `backlog/`),
74
+ * needs-attention is the lock `state: stuck` (not a `git mv`), and the
75
+ * tasking/advancing markers are gone. So a branch cut from `main` inherits no
76
+ * runner-authored move-only bookkeeping commit, there is nothing to drop, and
77
+ * the old `drop-bookkeeping-rebase` machinery (which papered over the
78
+ * rename/rename ledger conflict that inheritance caused) is deleted. The ONLY
79
+ * commits replayed are the agent's own wip / `→done` commits.
80
+ *
81
+ * A CLEAN rebase returns `{kind: 'clean'}`; a CONFLICTING rebase (a GENUINE code
82
+ * conflict) is `--abort`ed (NEVER auto-resolved) and returns `{kind: 'conflict'}`
83
+ * so the caller can route the item to needs-attention via the §10 path. Must be
84
+ * called while HEAD is the continued branch.
85
+ *
86
+ * RENAME-DETECTION-OFF (task `disable-rename-detection-on-continue-rebase`): the
87
+ * rebase is invoked with `-c merge.directoryRenames=false` SCOPED to the
88
+ * invocation (never a persistent `git config` write), so a single durable
89
+ * folder-transition `git mv` out of a SPARSE source folder is NOT misread by
90
+ * git's directory-rename heuristic as a whole-DIRECTORY rename — which would
91
+ * spuriously flag every sibling file main added into that same folder as
92
+ * `CONFLICT (file location)` and force a FALSE needs-attention. Content-rename
93
+ * detection (`-Xno-renames` / `merge.renames` / `diff.renames`) is NOT what
94
+ * controls this conflict and was empirically verified ineffective; only
95
+ * `merge.directoryRenames=false` suppresses it. A GENUINE same-path content
96
+ * conflict still conflicts unchanged.
97
+ */
98
+ export declare function rebaseContinuedBranchOntoMain(cwd: string, mainRef: string, env: NodeJS.ProcessEnv | undefined): ContinueRebaseResult;
99
+ /**
100
+ * The default cap on stale-lease push retries — mirrors the claim / tasking-lock
101
+ * INSTANT-contention loop's `retries: 3` default (`claim-cas.ts` `DEFAULT_RETRIES`).
102
+ * After this many re-fetch + re-rebase + re-push attempts the green work is left
103
+ * RECOVERABLE and the caller surfaces a clear terminal failure.
104
+ */
105
+ export declare const DEFAULT_STALE_LEASE_RETRIES = 3;
106
+ /**
107
+ * Lexical signal of a `--force-with-lease` STALE-LEASE rejection (git prints
108
+ * `! [rejected] <ref> (stale info)`), as distinct from any OTHER push failure
109
+ * (connectivity, auth, a protected ref). ONLY this case is safe to re-lease +
110
+ * retry on the UNSHARED work branch — every other failure must surface, never
111
+ * silently overwrite. This is the SAME family of contention markers the
112
+ * ledger-write CAS recognises (`ledger-write.ts`), narrowed here to the lease's
113
+ * own `stale info`.
114
+ */
115
+ export declare function isStaleLeaseRejection(stderr: string): boolean;
116
+ /**
117
+ * Outcome of {@link pushProposeBranchWithStaleLeaseRetry} — the sibling of
118
+ * {@link ContinuedPushResult} on the PROPOSE-mode work-branch push.
119
+ */
120
+ export type ProposePushResult =
121
+ /** The work branch landed on the arbiter (first try or after a stale-lease retry). */
122
+ {
123
+ kind: 'pushed';
124
+ }
125
+ /**
126
+ * BENIGN already-landed race tail: the remote `work/<slug>` ref is GONE on
127
+ * the arbiter AND our HEAD is provably reachable from `<arbiter>/main` — i.e.
128
+ * the work already landed via a sibling's merge and its head was reaped
129
+ * (`integrator.ts` `deleteMergedHeadBranch`'s ancestor-guarded reap, or `gc`).
130
+ * This is the propose-push analogue of the leased-delete `already-reaped`
131
+ * outcome (`item-lock.ts`): a vanished ref whose work is provably landed is
132
+ * the DESIRED end state, not a failure.
133
+ */
134
+ | {
135
+ kind: 'already-landed';
136
+ };
137
+ /**
138
+ * Push the propose-mode work branch with the SAME stale-lease retry semantics
139
+ * as {@link pushContinuedBranchWithStaleLeaseRetry} (explicit
140
+ * `--force-with-lease=<branch>:<expectedTip>`, `stale info` detection, bounded
141
+ * re-observation + retry, terminal throw on cap exhaustion / non-stale
142
+ * failure), plus the one race the continue path does not have: a `work/<slug>`
143
+ * ref that is GONE on the arbiter because the work already LANDED on `main` is
144
+ * a BENIGN already-landed success, not a failure. The predicate mirrors the
145
+ * leased-delete `already-reaped` + merged-head-reap ancestor guards: gone ref
146
+ * AND `HEAD` is an ancestor of `<arbiter>/main`.
147
+ *
148
+ * WHY a propose-specific helper instead of the continue helper verbatim: the
149
+ * continue helper's stale-lease retry RE-REBASES the kept branch onto the
150
+ * freshly-fetched main (a kept-branch onboard's job — main may have moved
151
+ * while the prior attempt sat in backlog). In the propose path the caller has
152
+ * ALREADY rebased the branch onto `<arbiter>/main` (`integrateWithRebase`, or
153
+ * `integration-core.ts` `recoverAlreadyCommitted`'s recovery rebase), so the
154
+ * only race the lease needs to survive here is the remote work ref MOVING /
155
+ * REAPING under us — re-leasing against the freshly-observed tip is enough,
156
+ * AND a re-rebase mid-integrate would smuggle a NEW rebase past
157
+ * `integrateWithRebase`'s explicit conflict-aborts-to-needs-attention contract.
158
+ * So this helper shares the stale-info detection + bounded retry shape (the
159
+ * `--force-with-lease`-only / never-bare-force / never-`:main` guardrails are
160
+ * identical) but does NOT layer the rebase step.
161
+ *
162
+ * Guardrails (ADR §11): `--force-with-lease` ONLY (re-computed each attempt),
163
+ * NEVER bare `--force`, NEVER `:main`, the WORK branch ONLY. The lease is
164
+ * threaded as `<branch>:<expectedTip>` — using EMPTY (`<branch>:`) when the
165
+ * arbiter has no ref yet (the first-time propose / post-reap shape — the same
166
+ * create-only lease form `item-lock.ts` uses for the lock CAS), so a bare-hub-
167
+ * mirror worktree (no `refs/remotes/<arbiter>/*` upstream) leases correctly.
168
+ *
169
+ * Bounded by `retries` (default {@link DEFAULT_STALE_LEASE_RETRIES}, mirroring
170
+ * the claim / continue retry cap). Must be called while HEAD is the propose
171
+ * `<branch>`.
172
+ */
173
+ export declare function pushProposeBranchWithStaleLeaseRetry(options: {
174
+ cwd: string;
175
+ branch: string;
176
+ /** The arbiter remote name to push to / observe (e.g. `arbiter`, `origin`). */
177
+ arbiter: string;
178
+ retries?: number;
179
+ env: NodeJS.ProcessEnv | undefined;
180
+ /** Optional progress note sink (mirrors the continue helper's `note`). */
181
+ note?: (message: string) => void;
182
+ }): ProposePushResult;
183
+ /** The outcome of {@link pushContinuedBranchWithStaleLeaseRetry}. */
184
+ export type ContinuedPushResult =
185
+ /** The work branch landed on the arbiter (first try or after a clean re-rebase). */
186
+ {
187
+ kind: 'pushed';
188
+ }
189
+ /**
190
+ * A re-rebase onto the freshly-fetched main CONFLICTED on a retry; it was
191
+ * `--abort`ed (NEVER auto-resolved). The caller routes the item to
192
+ * needs-attention via the §10 path — the green work stays intact on the branch.
193
+ */
194
+ | {
195
+ kind: 'conflict';
196
+ };
197
+ /**
198
+ * Push the CONTINUED `work/<slug>` branch to the arbiter with
199
+ * `--force-with-lease`, surviving a STALE-LEASE ("stale info") rejection by
200
+ * re-observing the arbiter's tip and replaying our green work onto it — instead
201
+ * of stranding a committed, gate-green build in the job worktree (the observed
202
+ * `advance-verb-resolver` incident).
203
+ *
204
+ * WHY a retry is SAFE here: the `work/<slug>` branch is UNSHARED — the arbiter
205
+ * CAS serialises the claim per slug, so no rival writer legitimately advances it
206
+ * concurrently. The lease's job is to catch a STALE LOCAL view, not a rival; so
207
+ * on a stale-lease rejection the correct response is to re-fetch the actual
208
+ * remote tip, rebase our work onto current main, and push again, re-leased
209
+ * against the JUST-fetched ref. This stays within the existing guardrails:
210
+ * `--force-with-lease` ONLY (re-computed each attempt), NEVER bare `--force`,
211
+ * NEVER targeting `main`, the WORK branch ONLY (ADR §11).
212
+ *
213
+ * The flow, bounded by `retries` (default {@link DEFAULT_STALE_LEASE_RETRIES},
214
+ * mirroring the claim/tasking-lock instant-contention cap):
215
+ * 1. Push `<branch>:<branch> --force-with-lease=<branch>:<expectedRemoteTip>`.
216
+ * 2. On success → `{kind: 'pushed'}`.
217
+ * 3. On a STALE-LEASE rejection → re-fetch `main` + `<branch>` from the arbiter
218
+ * (into a remote-tracking ref, since the branch is CHECKED OUT here), re-run
219
+ * the onboard-time rebase onto the freshly-fetched main, and retry with the
220
+ * lease re-leased against the freshly-fetched remote tip. A rebase CONFLICT
221
+ * on a retry → `{kind: 'conflict'}` (the existing abort → needs-attention
222
+ * path; the retry covers ONLY the clean-rebase stale-lease case).
223
+ * 4. After the cap → THROW a clear terminal error (the green work is still
224
+ * committed on the branch, so the caller's needs-attention route keeps it
225
+ * recoverable).
226
+ * 5. Any NON-stale push failure (connectivity, protected ref) → THROW at once
227
+ * (never re-leased, never silently swallowed).
228
+ *
229
+ * `expectedRemoteTip` is the arbiter `work/<slug>` sha the caller already
230
+ * observed (the pre-rebase mirror head). The explicit `<branch>:<sha>` lease is
231
+ * REQUIRED in the bare-hub-mirror worktree, which has no `refs/remotes/origin/*`
232
+ * upstream for git to imply the lease from. Must be called while HEAD is the
233
+ * continued `<branch>`.
234
+ */
235
+ export declare function pushContinuedBranchWithStaleLeaseRetry(options: {
236
+ cwd: string;
237
+ branch: string;
238
+ /** The arbiter remote name to push to / re-fetch from (e.g. `origin`). */
239
+ arbiter: string;
240
+ /** The local main ref to rebase onto across retries (e.g. `main`). */
241
+ mainRef: string;
242
+ /** The arbiter `<branch>` sha the caller already observed (pre-rebase tip). */
243
+ expectedRemoteTip: string;
244
+ retries?: number;
245
+ env: NodeJS.ProcessEnv | undefined;
246
+ /** Optional progress note sink (mirrors the claim loop's `note`). */
247
+ note?: (message: string) => void;
248
+ }): ContinuedPushResult;
249
+ //# sourceMappingURL=continue-branch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"continue-branch.d.ts","sourceRoot":"","sources":["../src/continue-branch.ts"],"names":[],"mappings":"AAuCA;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC5B,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,GAChC,OAAO,CAwBT;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,aAAa,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,qFAAqF;IACrF,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;CACnC,GAAG,OAAO,CAiBV;AAED,+EAA+E;AAC/E,MAAM,WAAW,oBAAoB;IACpC,gEAAgE;IAChE,oFAAoF;IACpF,IAAI,EAAE,OAAO,GAAG,UAAU,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,6BAA6B,CAC5C,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,GAChC,oBAAoB,CAYtB;AAED;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB;AAC5B,sFAAsF;AACpF;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAC;AAClB;;;;;;;;GAQG;GACD;IAAC,IAAI,EAAE,gBAAgB,CAAA;CAAC,CAAC;AAE5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,oCAAoC,CAAC,OAAO,EAAE;IAC7D,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;IACnC,0EAA0E;IAC1E,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC,GAAG,iBAAiB,CA6GpB;AAED,qEAAqE;AACrE,MAAM,MAAM,mBAAmB;AAC9B,oFAAoF;AAClF;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAC;AAClB;;;;GAIG;GACD;IAAC,IAAI,EAAE,UAAU,CAAA;CAAC,CAAC;AAEtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,sCAAsC,CAAC,OAAO,EAAE;IAC/D,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;IACnC,qEAAqE;IACrE,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC,GAAG,mBAAmB,CAiFtB"}