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
package/dist/start.js ADDED
@@ -0,0 +1,633 @@
1
+ import { performClaim } from './claim-cas.js';
2
+ import { readItemLock } from './item-lock.js';
3
+ import { ledgerWrite } from './ledger-write.js';
4
+ import { branchAheadOfArbiter, rebaseContinuedBranchOntoMain, pushContinuedBranchWithStaleLeaseRetry, } from './continue-branch.js';
5
+ import { runAsync } from './git.js';
6
+ import { workFolderRel } from './work-layout.js';
7
+ import { workBranchRef, parseWorkBranchRef } from './slug-namespace.js';
8
+ const DEFAULT_ARBITER = 'origin';
9
+ /** Raised for usage/environment errors (exit 1, outcome 'usage-error'). */
10
+ class StartUsageError extends Error {
11
+ }
12
+ /**
13
+ * Raised for a deliberate REFUSAL (exit 1, outcome 'refused') — distinct from a
14
+ * usage/environment error. Used when the item exists but start declines to act
15
+ * (an in-progress item without --resume). The decision is folder-based.
16
+ */
17
+ class StartRefusal extends Error {
18
+ }
19
+ /**
20
+ * Run the start ritual. Never throws for the expected lost/contended/refused
21
+ * cases — those are returned with the appropriate exit code. Usage/environment
22
+ * problems and refusals surface as exit 1.
23
+ */
24
+ export async function performStart(options) {
25
+ const note = options.note ?? (() => { });
26
+ try {
27
+ return await runStart(options, note);
28
+ }
29
+ catch (err) {
30
+ if (err instanceof StartRefusal) {
31
+ return { exitCode: 1, outcome: 'refused', message: err.message };
32
+ }
33
+ if (err instanceof StartUsageError) {
34
+ return { exitCode: 1, outcome: 'usage-error', message: err.message };
35
+ }
36
+ const message = err instanceof Error ? err.message : String(err);
37
+ return { exitCode: 1, outcome: 'usage-error', message };
38
+ }
39
+ }
40
+ async function runStart(options, note) {
41
+ const arbiter = options.arbiter ?? DEFAULT_ARBITER;
42
+ const cwd = options.cwd;
43
+ const env = options.env;
44
+ if ((await gitSoft(['rev-parse', '--git-dir'], cwd, env)).status !== 0) {
45
+ throw new StartUsageError('not inside a git repository');
46
+ }
47
+ if ((await gitSoft(['remote', 'get-url', arbiter], cwd, env)).status !== 0) {
48
+ throw new StartUsageError(`no git remote named '${arbiter}' (set one, or pass --arbiter)`);
49
+ }
50
+ // Resolve the slug: explicit wins; otherwise infer from a `work/<slug>` branch.
51
+ const slug = options.slug || (await inferSlugFromBranch(cwd, env));
52
+ if (!slug) {
53
+ throw new StartUsageError('missing <slug> and the current branch is not a work/<slug> branch. ' +
54
+ 'usage: dorfl start [<slug>] [--arbiter remote] [--resume]');
55
+ }
56
+ // Folder on the arbiter's main is the source of truth (NOT claimed_by) for the
57
+ // DURABLE residence; HELD-NESS is read from the per-item LOCK ref, not a folder.
58
+ await gitHard(['fetch', '--quiet', arbiter], cwd, env);
59
+ const folder = await dispatchFolder(slug, arbiter, cwd, env, options.allowBacklog === true);
60
+ const result = await onboardFromFolder(folder, {
61
+ options,
62
+ slug,
63
+ arbiter,
64
+ cwd,
65
+ env,
66
+ note,
67
+ });
68
+ // `--agent` (task `agent-interactive-launch`): when the human onboarded onto a
69
+ // work branch (started/resumed/resolved — exit 0 with a branch), launch the
70
+ // configured harness INTERACTIVELY in the checkout so they can immediately drive
71
+ // the agent. It is NOT a tracked job (decision #3): no record, no gate — it
72
+ // blocks in the foreground until the human exits, then control returns and they
73
+ // drive `complete`/`requeue`. On a failed/refused onboard we never launch.
74
+ if (options.launchInteractive &&
75
+ result.exitCode === 0 &&
76
+ result.branch !== undefined) {
77
+ note(`Launching the configured harness interactively in ${cwd}.`);
78
+ options.launchInteractive({ slug, dir: cwd, env });
79
+ }
80
+ return result;
81
+ }
82
+ /**
83
+ * Resolve the EFFECTIVE dispatch folder, combining the durable `<arbiter>/main`
84
+ * folder with the per-item LOCK ref. Since claim no longer moves the body, a
85
+ * CLAIMED-AND-IN-FLIGHT task RESTS in `backlog/` on `main` (task
86
+ * `cutover-claim-body-stays-and-complete-sources-from-backlog`), and a STUCK item
87
+ * is the per-item lock `state: stuck` (NOT a `needs-attention/` folder file —
88
+ * task `cutover-needs-attention-becomes-lock-stuck-recovery-surface`, decision
89
+ * i+: the folder is retired). So a folder-only check would mis-read either as
90
+ * unclaimed and let `start` re-claim it. We re-key the dispatch off the LOCK when
91
+ * the body is in `backlog/`:
92
+ * - held `active` (`action: implement`) ⇒ `in-progress` (already claimed:
93
+ * refuse / `--resume`);
94
+ * - held `stuck` ⇒ `needs-attention` (the recovery dispatch: print the reason,
95
+ * resume the lock `stuck → active`, onboard).
96
+ * Everything else dispatches by folder unchanged.
97
+ *
98
+ * Under `--allow-backlog` (prd
99
+ * `do-allow-backlog-drive-staged-tasks-without-promotion`) a body resting in
100
+ * `tasks/backlog/` (staging) is treated EXACTLY like the pool for this re-key
101
+ * (held active ⇒ in-progress; held stuck ⇒ needs-attention; else the backlog
102
+ * onboard), so the no-checkout `do … --allow-backlog` flow that claimed a staged
103
+ * task (the body stays in `tasks/backlog/`) onboards instead of reading `absent`.
104
+ */
105
+ async function dispatchFolder(slug, arbiter, cwd, env, allowBacklog = false) {
106
+ const folder = await folderOnArbiterMain(slug, arbiter, cwd, env, allowBacklog);
107
+ // `--allow-backlog`: a staged (`tasks-backlog`) body re-keys like the pool.
108
+ const inPool = folder === 'tasks-ready' || folder === 'tasks-backlog';
109
+ if (!inPool) {
110
+ return folder;
111
+ }
112
+ // In the pool/staging: claimed-ness + stuck-ness are the per-item lock, not the folder.
113
+ const lock = await readItemLock({ item: `task:${slug}`, cwd, arbiter, env });
114
+ if (lock && lock.state === 'stuck') {
115
+ return 'needs-attention';
116
+ }
117
+ if (lock && lock.state === 'active') {
118
+ return 'in-progress';
119
+ }
120
+ return 'tasks-ready';
121
+ }
122
+ /** Dispatch the onboard by the slug's resolved (folder + lock) state. */
123
+ async function onboardFromFolder(folder, params) {
124
+ const { options, slug, arbiter, cwd, env, note } = params;
125
+ switch (folder) {
126
+ case 'tasks-ready':
127
+ return startFromBacklog({
128
+ slug,
129
+ arbiter,
130
+ cwd,
131
+ env,
132
+ override: options.override ?? false,
133
+ note,
134
+ });
135
+ case 'in-progress':
136
+ return startFromInProgress({
137
+ slug,
138
+ arbiter,
139
+ cwd,
140
+ env,
141
+ resume: options.resume ?? false,
142
+ note,
143
+ });
144
+ case 'needs-attention':
145
+ return startFromNeedsAttention({ slug, arbiter, cwd, env, note });
146
+ case 'done':
147
+ throw new StartUsageError(`'${slug}' is already done on ${arbiter}/main — nothing to start.`);
148
+ case 'absent':
149
+ throw new StartUsageError(`'${slug}' is not present on ${arbiter}/main (no backlog/in-progress item — wrong slug?).`);
150
+ }
151
+ }
152
+ /**
153
+ * Backlog → claim via the CAS, and ONLY on a winning claim (exit 0) switch to
154
+ * the work branch. A lost (exit 2) / contended (exit 3) claim is propagated
155
+ * verbatim: the user is left exactly as `claim` left them, with NO work branch.
156
+ */
157
+ async function startFromBacklog(params) {
158
+ const { slug, arbiter, cwd, env, override, note } = params;
159
+ // The human-path readiness guard lives in the claim CAS (so both `claim` and
160
+ // `start` inherit it): an unmet `blockedBy` is refused (exit 1, 'not-ready')
161
+ // unless overridden; a `needsAnswers` task warns but still claims.
162
+ const claim = await performClaim({
163
+ slug,
164
+ cwd,
165
+ arbiter,
166
+ env,
167
+ humanPath: true,
168
+ override,
169
+ note,
170
+ });
171
+ if (claim.exitCode !== 0) {
172
+ // not-ready (1) / lost (2) / contended (3) / usage (1): behave exactly like
173
+ // `claim`. Create no work branch; propagate the exit code and outcome. A
174
+ // readiness refusal surfaces as 'refused' (a deliberate decline), distinct
175
+ // from a usage/environment error.
176
+ const outcome = claim.outcome === 'not-ready'
177
+ ? 'refused'
178
+ : claim.exitCode === 2
179
+ ? 'lost'
180
+ : claim.exitCode === 3
181
+ ? 'contended'
182
+ : 'usage-error';
183
+ return { exitCode: claim.exitCode, outcome, message: claim.message };
184
+ }
185
+ // The claim landed — the item is now in-progress on the arbiter. Onboard the
186
+ // human onto the work branch: CONTINUE from a kept arbiter work/<slug> when one
187
+ // exists ahead of main (a requeue), else cut fresh off the NEW main (which
188
+ // includes the claim).
189
+ const switched = await switchToWorkBranch({ slug, arbiter, cwd, env, note });
190
+ if (switched.rebaseConflict) {
191
+ return continueConflictResult({ slug, arbiter, cwd, env, note });
192
+ }
193
+ if (switched.pushFailure !== undefined) {
194
+ return continuePushFailureResult({
195
+ slug,
196
+ arbiter,
197
+ cwd,
198
+ pushFailure: switched.pushFailure,
199
+ env,
200
+ note,
201
+ });
202
+ }
203
+ const branch = switched.branch;
204
+ const message = switched.continued
205
+ ? `Started '${slug}': claimed and continued ${branch} from the kept branch.`
206
+ : `Started '${slug}': claimed and switched to ${branch}.`;
207
+ note(message);
208
+ return { exitCode: 0, outcome: 'started', branch, message };
209
+ }
210
+ /**
211
+ * Build the terminal StartResult for a CONTINUE rebase conflict: route the item
212
+ * to needs-attention (the §10 path) and return the 'needs-attention' outcome.
213
+ */
214
+ async function continueConflictResult(params) {
215
+ const surfaced = await routeContinueConflict(params);
216
+ if (!surfaced.moved) {
217
+ return surfaceUnmovedStartResult({ slug: params.slug, surfaced });
218
+ }
219
+ const message = `Could not continue '${params.slug}': the kept work branch did not rebase ` +
220
+ `cleanly onto ${params.arbiter}/main; routed to work/needs-attention/ ` +
221
+ '(surfaced by status). Resolve against the latest main, or `requeue --reset` ' +
222
+ 'to discard and start fresh.';
223
+ return {
224
+ exitCode: 1,
225
+ outcome: 'needs-attention',
226
+ branch: workBranchRef('task', params.slug),
227
+ message,
228
+ };
229
+ }
230
+ /**
231
+ * Build the terminal StartResult for a CONTINUE reconcile-push that FAILED
232
+ * TERMINALLY (the stale-lease retry cap exhausted, or a non-connectivity
233
+ * rejection like a protected ref) \u2014 NOT a tolerated offline arbiter. Route the
234
+ * item to needs-attention (the SAME \u00a712 surface the conflict path uses) so the
235
+ * already-committed kept work is NOT left silently in-progress (the
236
+ * stale-lease-strand bug this task kills), then return the 'needs-attention'
237
+ * outcome with a message naming the push failure.
238
+ */
239
+ async function continuePushFailureResult(params) {
240
+ const surfaced = await routeContinuePushFailure(params);
241
+ if (!surfaced.moved) {
242
+ return surfaceUnmovedStartResult({ slug: params.slug, surfaced });
243
+ }
244
+ const message = `Could not continue '${params.slug}': publishing the rebased work branch to ` +
245
+ `${params.arbiter} failed terminally (${params.pushFailure}); routed to ` +
246
+ 'work/needs-attention/ (surfaced by status), the kept branch left intact on ' +
247
+ 'the arbiter (recoverable). `requeue` to retry once the churn settles.';
248
+ return {
249
+ exitCode: 1,
250
+ outcome: 'needs-attention',
251
+ branch: workBranchRef('task', params.slug),
252
+ message,
253
+ };
254
+ }
255
+ /**
256
+ * needs-attention → a runner bounced this stuck item. Picking it up is
257
+ * UNGUARDED (a stuck item is explicitly up-for-grabs — no --resume): print the
258
+ * recorded reason, transition it back to in-progress THROUGH the write seam
259
+ * (mode M clears the `main` surface via the reverse move), then switch onto
260
+ * work/<slug>. NO manual file move — the seam owns the transition.
261
+ */
262
+ async function startFromNeedsAttention(params) {
263
+ const { slug, arbiter, cwd, env, note } = params;
264
+ // Surface the recorded reason for the human, read from the STUCK LOCK ENTRY
265
+ // (task `cutover-needs-attention-becomes-lock-stuck-recovery-surface`: the lock
266
+ // is the sole stuck record — no `needs-attention/` folder file). The full reason
267
+ // prose + any surfaced questions ride on the lock entry body.
268
+ const stuck = await readItemLock({ item: `task:${slug}`, cwd, arbiter, env });
269
+ if (stuck?.reason) {
270
+ note(`'${slug}' is stuck (needs-attention): ${stuck.reason}`);
271
+ }
272
+ else {
273
+ note(`'${slug}' is stuck (needs-attention) — picking it up.`);
274
+ }
275
+ if (stuck?.questions && stuck.questions.length > 0) {
276
+ note('Surfaced questions:');
277
+ for (const q of stuck.questions) {
278
+ note(` - ${q}`);
279
+ }
280
+ }
281
+ // Resume the lock `stuck → active` THROUGH the write seam (a pure lock amend, NO
282
+ // `main` write, NO temp checkout — the body already rests in `backlog/` and the
283
+ // work stays on the kept `work/<slug>` branch), then onboard onto work/<slug>.
284
+ const resolved = await ledgerWrite.applyResolveNeedsAttentionTransition({
285
+ cwd,
286
+ slug,
287
+ arbiter,
288
+ env,
289
+ note,
290
+ });
291
+ if (!resolved.moved) {
292
+ throw new StartUsageError(resolved.reasonNotMoved ??
293
+ `could not resolve '${slug}' from needs-attention.`);
294
+ }
295
+ // The lock is back to active (the human owns it). Onboard onto the work branch:
296
+ // CONTINUE from a kept arbiter work/<slug> when present, else fresh off main.
297
+ const switched = await switchToWorkBranch({ slug, arbiter, cwd, env, note });
298
+ if (switched.rebaseConflict) {
299
+ return continueConflictResult({ slug, arbiter, cwd, env, note });
300
+ }
301
+ if (switched.pushFailure !== undefined) {
302
+ return continuePushFailureResult({
303
+ slug,
304
+ arbiter,
305
+ cwd,
306
+ pushFailure: switched.pushFailure,
307
+ env,
308
+ note,
309
+ });
310
+ }
311
+ const branch = switched.branch;
312
+ const message = `Started '${slug}': resolved from needs-attention and switched to ${branch}.`;
313
+ note(message);
314
+ return { exitCode: 0, outcome: 'resolved', branch, message };
315
+ }
316
+ /**
317
+ * In-progress → already claimed (it is no longer in backlog, so the CAS cannot
318
+ * apply). Refuse by default. With --resume the human explicitly asserts
319
+ * ownership, so we switch to the work branch WITHOUT claiming. The decision is
320
+ * folder-based; we never read the advisory `claimed_by` to guess ownership.
321
+ */
322
+ async function startFromInProgress(params) {
323
+ const { slug, arbiter, cwd, env, resume, note } = params;
324
+ if (!resume) {
325
+ // The folder drove the decision (WORK-CONTRACT rule 6: the folder + git
326
+ // history are the source of truth). We do NOT name the claimer in the
327
+ // message; whoever holds it is read from git history
328
+ // (`git log work/in-progress/<slug>.md`).
329
+ throw new StartRefusal(`'${slug}' is already in-progress; see \`git log\` for who claimed it; ` +
330
+ 'if this is your own work, re-run with --resume.');
331
+ }
332
+ const switched = await switchToWorkBranch({ slug, arbiter, cwd, env, note });
333
+ if (switched.rebaseConflict) {
334
+ return continueConflictResult({ slug, arbiter, cwd, env, note });
335
+ }
336
+ if (switched.pushFailure !== undefined) {
337
+ return continuePushFailureResult({
338
+ slug,
339
+ arbiter,
340
+ cwd,
341
+ pushFailure: switched.pushFailure,
342
+ env,
343
+ note,
344
+ });
345
+ }
346
+ const branch = switched.branch;
347
+ const message = `Resumed '${slug}': switched to ${branch} (no claim).`;
348
+ note(message);
349
+ return { exitCode: 0, outcome: 'resumed', branch, message };
350
+ }
351
+ /**
352
+ * Onboard the checkout onto `work/<slug>`, CONTINUE-AWARE (the keystone of the
353
+ * `requeue-continue-and-reset` task). `git fetch <arbiter>`, then:
354
+ *
355
+ * - **CONTINUE** when the arbiter has a `work/<slug>` ref AHEAD of main (a
356
+ * `requeue` kept it): switch onto that kept branch (a local tracking branch
357
+ * off `<arbiter>/work/<slug>`) and REBASE it onto the freshly-fetched
358
+ * `<arbiter>/main` at onboard-time, so the agent builds on a CURRENT base
359
+ * (ADR §10: rebase, not merge). A CLEAN rebase continues; a CONFLICTING
360
+ * rebase is aborted (never auto-resolved) and reported so the caller routes
361
+ * to needs-attention. The rebased tip is published to the already-pushed
362
+ * work branch with `--force-with-lease` on the WORK branch only (a requeued
363
+ * item is unshared) — NEVER `--force` to main (§11).
364
+ * - **FRESH** otherwise (no kept branch — a first attempt, or a
365
+ * `requeue --reset` deleted it): `git switch -c work/<slug> <arbiter>/main`
366
+ * (today's behaviour). If the branch already exists LOCALLY (a re-run /
367
+ * resume) plain-switch to it.
368
+ */
369
+ async function switchToWorkBranch(params) {
370
+ const { slug, arbiter, cwd, env, note } = params;
371
+ // `start` is a TASK-only command: the branch is the task-namespaced
372
+ // `work/task-<slug>` (distinct from a same-slug prd-tasking branch).
373
+ const branch = workBranchRef('task', slug);
374
+ await gitHard(['fetch', '--quiet', arbiter], cwd, env);
375
+ // CONTINUE-detection (shared with the job-worktree path): does the arbiter
376
+ // have a `work/<slug>` ref AHEAD of main? ARBITER-AUTHORITATIVE: `ls-remote`
377
+ // the arbiter so a STALE local remote-tracking ref (a plain `git fetch` does
378
+ // NOT prune unless `fetch.prune` is set — verified live in the task obs)
379
+ // pointing at a branch the arbiter no longer has cannot resurrect a deleted
380
+ // branch as a "continue". In a normal clone the local refs are the
381
+ // remote-tracking `<arbiter>/work/<slug>` and `<arbiter>/main`.
382
+ const ahead = branchAheadOfArbiter({
383
+ cwd,
384
+ arbiterRemote: arbiter,
385
+ branch,
386
+ branchRef: `${arbiter}/${branch}`,
387
+ mainRef: `${arbiter}/main`,
388
+ env,
389
+ });
390
+ if (ahead) {
391
+ return continueFromKeptBranch({ slug, arbiter, cwd, env, note });
392
+ }
393
+ // FRESH cut: prefer creating the branch off the latest arbiter main (it
394
+ // includes the claim move). If it already exists locally, plain-switch to it.
395
+ const created = await gitSoft(['switch', '--quiet', '-c', branch, `${arbiter}/main`], cwd, env);
396
+ if (created.status === 0) {
397
+ return { branch, continued: false, rebaseConflict: false };
398
+ }
399
+ const switched = await gitSoft(['switch', '--quiet', branch], cwd, env);
400
+ if (switched.status === 0) {
401
+ return { branch, continued: false, rebaseConflict: false };
402
+ }
403
+ throw new StartUsageError(`failed to switch to ${branch}: ${created.stderr.trim() || switched.stderr.trim()}`);
404
+ }
405
+ /**
406
+ * CONTINUE onto a kept arbiter `work/<slug>`: switch onto it (resetting any
407
+ * stale local branch to the arbiter tip), rebase onto the freshly-fetched
408
+ * `<arbiter>/main`, and — on a CLEAN rebase — update the already-pushed work
409
+ * branch with `--force-with-lease` on the WORK branch only (never main, §11). A
410
+ * CONFLICTING rebase is aborted and reported (`rebaseConflict: true`).
411
+ */
412
+ async function continueFromKeptBranch(params) {
413
+ const { slug, arbiter, cwd, env, note } = params;
414
+ const branch = workBranchRef('task', slug);
415
+ note(`Continuing '${slug}' from the kept ${arbiter}/${branch} (requeue).`);
416
+ // Land the local work branch ON the kept arbiter tip (force-reset a stale
417
+ // local branch so we continue the SAME single branch, not a divergent copy).
418
+ await gitHard(['switch', '--quiet', '-C', branch, `${arbiter}/${branch}`], cwd, env);
419
+ // REBASE onto the freshly-fetched main at onboard-time (§10: rebase, not
420
+ // merge) so the agent builds on a CURRENT base. Conflict → aborted + reported.
421
+ const rebase = rebaseContinuedBranchOntoMain(cwd, `${arbiter}/main`, env);
422
+ if (rebase.kind === 'conflict') {
423
+ return { branch, continued: true, rebaseConflict: true };
424
+ }
425
+ // The arbiter `work/<slug>` tip the fetch above brought down, READ AFTER the
426
+ // rebase — the rebase rewrote only the LOCAL branch, so the remote-tracking ref
427
+ // `<arbiter>/<branch>` still holds the PRE-rebase arbiter sha (the value the
428
+ // --force-with-lease push expects the arbiter to still hold). It is non-empty
429
+ // here: `branchAheadOf` proved the ref resolves (the CONTINUE precondition).
430
+ const expectedRemoteTip = (await gitHard(['rev-parse', `${arbiter}/${branch}`], cwd, env)).stdout.trim();
431
+ // The rebase may have rewritten SHAs vs the already-pushed tip, so updating it
432
+ // is a non-fast-forward. Reconcile with --force-with-lease on the WORK branch
433
+ // ONLY (a requeued item is unshared) — NEVER --force, and NEVER to main (§11),
434
+ // SURVIVING a stale-lease ("stale info") rejection by re-fetching + re-rebasing
435
+ // + retrying (the SAME helper `workspace.ts`/`isolation.ts` use).
436
+ //
437
+ // BEST-EFFORT, but DISCRIMINATING (NOT a blanket swallow — the silent-strand
438
+ // bug this guard kills): the helper THROWS, so we catch it and split the cause.
439
+ // An OFFLINE / unreachable-arbiter throw is TOLERATED exactly as the bare
440
+ // `gitSoft` push was — the local rebased branch is left, and `complete`'s push
441
+ // handles it later. A REAL terminal failure (the stale-lease retry cap, or a
442
+ // non-connectivity rejection like a protected ref) is NOT swallowed: it is
443
+ // reported up as `pushFailure` so the caller surfaces the item to
444
+ // needs-attention rather than leaving the committed kept work silently
445
+ // in-progress.
446
+ try {
447
+ const pushed = pushContinuedBranchWithStaleLeaseRetry({
448
+ cwd,
449
+ branch,
450
+ arbiter,
451
+ mainRef: `${arbiter}/main`,
452
+ expectedRemoteTip,
453
+ env,
454
+ note,
455
+ });
456
+ if (pushed.kind === 'conflict') {
457
+ return { branch, continued: true, rebaseConflict: true };
458
+ }
459
+ }
460
+ catch (err) {
461
+ const message = err instanceof Error ? err.message : String(err);
462
+ if (isOfflinePushFailure(message)) {
463
+ // Tolerated (today's behaviour): the arbiter is unreachable, so the local
464
+ // rebased branch is left and `complete`'s later push handles it.
465
+ note(`Could not push ${branch} to ${arbiter} (arbiter unreachable) — the ` +
466
+ 'local rebased branch is left; `complete` pushes it later.');
467
+ }
468
+ else {
469
+ // A REAL terminal failure — surface it (do NOT silently strand the work).
470
+ return {
471
+ branch,
472
+ continued: true,
473
+ rebaseConflict: false,
474
+ pushFailure: message,
475
+ };
476
+ }
477
+ }
478
+ return { branch, continued: true, rebaseConflict: false };
479
+ }
480
+ /**
481
+ * Discriminate the THROW from {@link pushContinuedBranchWithStaleLeaseRetry} at
482
+ * the `start` continue-push site: is it a TOLERATED offline/unreachable-arbiter
483
+ * outage (the existing best-effort case — `complete` pushes later), or a REAL
484
+ * terminal failure that must SURFACE (the stale-lease retry cap exhausted, or a
485
+ * non-connectivity rejection like a protected ref)?
486
+ *
487
+ * The helper throws ONLY two shapes: a `(not a stale lease)` push failure
488
+ * carrying the raw git stderr, or a `kept failing with a stale --force-with-lease`
489
+ * cap-exhausted message. The cap message is ALWAYS a real give-up. A non-stale
490
+ * push failure is OFFLINE only when its stderr matches a git connectivity
491
+ * signature (unable to access / could not read from remote / connection refused /
492
+ * could not resolve host / ssh connect) — anything else (a protected ref, a hook
493
+ * rejection) is a real failure that must surface. Conservative: an unmatched
494
+ * cause is treated as a REAL failure (surface), never silently swallowed.
495
+ */
496
+ function isOfflinePushFailure(message) {
497
+ // The retry-cap give-up is never "offline" — it is a real terminal failure.
498
+ if (/kept failing with a stale --force-with-lease/i.test(message)) {
499
+ return false;
500
+ }
501
+ return /unable to access|could not read from remote repository|connection (?:refused|reset|timed out)|could not resolve host|ssh: connect to host|network is unreachable|\bECONN(?:REFUSED|RESET)\b|\bENOTFOUND\b|\bETIMEDOUT\b/i.test(message);
502
+ }
503
+ /**
504
+ * Build the HONEST {@link StartResult} for a CONTINUE-site surface that did NOT
505
+ * land on the arbiter (`{moved: false}`). The tree-less `in-progress/ →
506
+ * needs-attention/` move lost the CAS race against a busy arbiter (its
507
+ * contention-retry cap exhausted), so the item is STILL in-progress on the
508
+ * arbiter — a clean `needs-attention` outcome would mislead (it claims the
509
+ * surface landed). The DISTINCT `surface-unmoved` outcome carries
510
+ * `reasonNotMoved` so the human can tell it apart from a successful surface and
511
+ * retry/resolve.
512
+ */
513
+ function surfaceUnmovedStartResult(params) {
514
+ const { slug, surfaced } = params;
515
+ const message = `'${slug}' could NOT be surfaced to needs-attention — the surface did not ` +
516
+ `reach the arbiter's main; the item is still IN-PROGRESS on the arbiter ` +
517
+ `(retry/resolve). ${surfaced.reasonNotMoved ?? ''}`.trim();
518
+ return {
519
+ exitCode: 1,
520
+ outcome: 'surface-unmoved',
521
+ branch: workBranchRef('task', slug),
522
+ message,
523
+ };
524
+ }
525
+ /**
526
+ * Route a CONTINUE rebase conflict to needs-attention (the §10 path): the kept
527
+ * branch's commits did not replay cleanly onto the current main, so a human must
528
+ * resolve (or `requeue --reset`).
529
+ *
530
+ * TREE-LESS (`#89` mechanism), the SAME-PROFILE sibling of
531
+ * {@link routeContinuePushFailure}: the rebase was ABORTED, so the REAL continued
532
+ * `work/<slug>` is already on the arbiter from the prior requeue, untouched
533
+ * (after-commit, durable, recoverable). The surface is PURELY the one-file
534
+ * `in-progress/ → needs-attention/` ledger `.md` move + reason — we publish it via
535
+ * the tree-less surface CAS (the SAME no-checkout primitive `requeue` uses for the
536
+ * reverse direction), NO temp-branch switch/restore, NO `pushBranch`, NO worktree.
537
+ */
538
+ async function routeContinueConflict(params) {
539
+ const { slug, arbiter, cwd, env, note } = params;
540
+ const reason = `continuing the kept ${arbiter}/${workBranchRef('task', slug)}: rebase onto ` +
541
+ `${arbiter}/main conflicted (aborted, never auto-resolved) — resolve ` +
542
+ 'against the latest main, or `requeue --reset` to discard and start fresh';
543
+ note(reason);
544
+ // PROPAGATE the {moved, reasonNotMoved} result to the caller so a `moved:false`
545
+ // (the surface did NOT reach main — lost the CAS race) is surfaced honestly
546
+ // instead of swallowed as `void`.
547
+ return ledgerWrite.applyTreelessNeedsAttentionTransition({
548
+ cwd,
549
+ slug,
550
+ reason,
551
+ arbiter,
552
+ env,
553
+ note,
554
+ });
555
+ }
556
+ /**
557
+ * Route a CONTINUE reconcile-push TERMINAL failure to needs-attention (the §12
558
+ * surface): the rebased work branch could not be published to the arbiter (the
559
+ * stale-lease retry cap exhausted, or a non-connectivity rejection) — so rather
560
+ * than leave the committed kept work silently in-progress, surface it on the
561
+ * arbiter's main. Mirrors {@link routeContinueConflict}'s temp-branch pattern.
562
+ *
563
+ * TREE-LESS (`#89` mechanism): the recoverable artifact — the kept `work/<slug>`
564
+ * — is ALREADY on the arbiter from the prior requeue (our local rebased tip is
565
+ * what FAILED to push, so it is not the cross-machine truth), and the work is
566
+ * already committed. So the surface is PURELY the one-file `in-progress/ →
567
+ * needs-attention/` ledger `.md` move + reason: we publish it via the tree-less
568
+ * surface CAS (the SAME no-checkout primitive `requeue` uses for the reverse
569
+ * direction) — NO temp-branch switch/restore, NO `pushBranch`, NO worktree. A
570
+ * `requeue` then continues from the kept arbiter tip.
571
+ */
572
+ async function routeContinuePushFailure(params) {
573
+ const { slug, arbiter, cwd, pushFailure, env, note } = params;
574
+ const reason = `continuing the kept ${arbiter}/${workBranchRef('task', slug)}: publishing ` +
575
+ `the rebased work branch to ${arbiter} failed terminally (${pushFailure}) — ` +
576
+ 'the kept branch is left intact on the arbiter (recoverable); `requeue` to ' +
577
+ 'retry once the churn settles, or `requeue --reset` to discard and start fresh';
578
+ note(reason);
579
+ // PROPAGATE the {moved, reasonNotMoved} result to the caller so a `moved:false`
580
+ // (the surface did NOT reach main — lost the CAS race) is surfaced honestly
581
+ // instead of swallowed as `void`.
582
+ return ledgerWrite.applyTreelessNeedsAttentionTransition({
583
+ cwd,
584
+ slug,
585
+ reason,
586
+ arbiter,
587
+ env,
588
+ note,
589
+ });
590
+ }
591
+ /** If HEAD is a `work/<type>-<slug>` branch, return `<slug>`; else ''. */
592
+ async function inferSlugFromBranch(cwd, env) {
593
+ const sym = await gitSoft(['symbolic-ref', '--quiet', '--short', 'HEAD'], cwd, env);
594
+ if (sym.status !== 0) {
595
+ return '';
596
+ }
597
+ return parseWorkBranchRef(sym.stdout.trim())?.slug ?? '';
598
+ }
599
+ /**
600
+ * Which work/ folder the slug currently lives in on `<arbiter>/main`. Under
601
+ * `--allow-backlog` (prd `do-allow-backlog-drive-staged-tasks-without-promotion`)
602
+ * it ALSO recognises `tasks/backlog/` (staging) at LOWEST priority — after the
603
+ * pool — so a same-slug pool copy still wins; otherwise staging is invisible.
604
+ */
605
+ async function folderOnArbiterMain(slug, arbiter, cwd, env, allowBacklog = false) {
606
+ const folders = [
607
+ 'tasks-ready',
608
+ ...(allowBacklog ? ['tasks-backlog'] : []),
609
+ 'in-progress',
610
+ 'needs-attention',
611
+ 'done',
612
+ ];
613
+ for (const folder of folders) {
614
+ const object = `${arbiter}/main:${workFolderRel(folder)}/${slug}.md`;
615
+ if ((await gitSoft(['cat-file', '-e', object], cwd, env)).status === 0) {
616
+ return folder;
617
+ }
618
+ }
619
+ return 'absent';
620
+ }
621
+ /** Run git, returning the raw result (no throw) — for soft checks. */
622
+ function gitSoft(args, cwd, env) {
623
+ return runAsync('git', args, cwd, { env });
624
+ }
625
+ /** Run git; throw on non-zero (genuinely unexpected plumbing failures). */
626
+ async function gitHard(args, cwd, env) {
627
+ const result = await runAsync('git', args, cwd, { env });
628
+ if (result.status !== 0) {
629
+ throw new Error(`git ${args.join(' ')} failed (exit ${result.status}): ${result.stderr.trim()}`);
630
+ }
631
+ return result;
632
+ }
633
+ //# sourceMappingURL=start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"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"}