dorfl 0.1.2 → 0.2.1

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 (364) hide show
  1. package/dist/advance-drivers.d.ts +1 -1
  2. package/dist/advance-drivers.d.ts.map +1 -1
  3. package/dist/advance-drivers.js +15 -3
  4. package/dist/advance-drivers.js.map +1 -1
  5. package/dist/advance-lifecycle-template.d.ts.map +1 -1
  6. package/dist/advance-lifecycle-template.js +76 -4
  7. package/dist/advance-lifecycle-template.js.map +1 -1
  8. package/dist/advance-treeless-publish.d.ts +23 -0
  9. package/dist/advance-treeless-publish.d.ts.map +1 -1
  10. package/dist/advance-treeless-publish.js +41 -0
  11. package/dist/advance-treeless-publish.js.map +1 -1
  12. package/dist/advance.d.ts +59 -7
  13. package/dist/advance.d.ts.map +1 -1
  14. package/dist/advance.js +389 -82
  15. package/dist/advance.js.map +1 -1
  16. package/dist/advancing-lock.d.ts +30 -2
  17. package/dist/advancing-lock.d.ts.map +1 -1
  18. package/dist/advancing-lock.js +50 -0
  19. package/dist/advancing-lock.js.map +1 -1
  20. package/dist/agent-launch.d.ts +12 -0
  21. package/dist/agent-launch.d.ts.map +1 -1
  22. package/dist/agent-launch.js +22 -12
  23. package/dist/agent-launch.js.map +1 -1
  24. package/dist/agent-stop.d.ts +40 -2
  25. package/dist/agent-stop.d.ts.map +1 -1
  26. package/dist/agent-stop.js +30 -2
  27. package/dist/agent-stop.js.map +1 -1
  28. package/dist/apply-decide.d.ts +17 -3
  29. package/dist/apply-decide.d.ts.map +1 -1
  30. package/dist/apply-decide.js +36 -7
  31. package/dist/apply-decide.js.map +1 -1
  32. package/dist/apply-merge-action.d.ts +17 -5
  33. package/dist/apply-merge-action.d.ts.map +1 -1
  34. package/dist/apply-merge-action.js +43 -8
  35. package/dist/apply-merge-action.js.map +1 -1
  36. package/dist/apply-persist.d.ts +57 -26
  37. package/dist/apply-persist.d.ts.map +1 -1
  38. package/dist/apply-persist.js +166 -37
  39. package/dist/apply-persist.js.map +1 -1
  40. package/dist/apply-stuck-action.d.ts +151 -0
  41. package/dist/apply-stuck-action.d.ts.map +1 -0
  42. package/dist/apply-stuck-action.js +125 -0
  43. package/dist/apply-stuck-action.js.map +1 -0
  44. package/dist/brand.d.ts +12 -1
  45. package/dist/brand.d.ts.map +1 -1
  46. package/dist/brand.js +2 -1
  47. package/dist/brand.js.map +1 -1
  48. package/dist/cli-spinner.d.ts +1 -1
  49. package/dist/cli-spinner.js +1 -1
  50. package/dist/cli.d.ts +10 -0
  51. package/dist/cli.d.ts.map +1 -1
  52. package/dist/cli.js +320 -63
  53. package/dist/cli.js.map +1 -1
  54. package/dist/close-job-template.js +1 -1
  55. package/dist/complete.d.ts +6 -3
  56. package/dist/complete.d.ts.map +1 -1
  57. package/dist/complete.js +91 -37
  58. package/dist/complete.js.map +1 -1
  59. package/dist/config.d.ts +55 -9
  60. package/dist/config.d.ts.map +1 -1
  61. package/dist/config.js +56 -4
  62. package/dist/config.js.map +1 -1
  63. package/dist/continue-branch.d.ts.map +1 -1
  64. package/dist/continue-branch.js +22 -0
  65. package/dist/continue-branch.js.map +1 -1
  66. package/dist/decision-engine.d.ts +38 -10
  67. package/dist/decision-engine.d.ts.map +1 -1
  68. package/dist/decision-engine.js +10 -6
  69. package/dist/decision-engine.js.map +1 -1
  70. package/dist/do-autopick.d.ts.map +1 -1
  71. package/dist/do-autopick.js +11 -1
  72. package/dist/do-autopick.js.map +1 -1
  73. package/dist/do-config.d.ts +1 -1
  74. package/dist/do.d.ts +49 -56
  75. package/dist/do.d.ts.map +1 -1
  76. package/dist/do.js +419 -30
  77. package/dist/do.js.map +1 -1
  78. package/dist/env-config.d.ts.map +1 -1
  79. package/dist/env-config.js +12 -4
  80. package/dist/env-config.js.map +1 -1
  81. package/dist/failure-cause.d.ts +3 -2
  82. package/dist/failure-cause.d.ts.map +1 -1
  83. package/dist/failure-cause.js +28 -1
  84. package/dist/failure-cause.js.map +1 -1
  85. package/dist/format.d.ts +6 -6
  86. package/dist/format.d.ts.map +1 -1
  87. package/dist/format.js +10 -27
  88. package/dist/format.js.map +1 -1
  89. package/dist/frontmatter.d.ts +16 -4
  90. package/dist/frontmatter.d.ts.map +1 -1
  91. package/dist/frontmatter.js +27 -1
  92. package/dist/frontmatter.js.map +1 -1
  93. package/dist/gc.d.ts +65 -6
  94. package/dist/gc.d.ts.map +1 -1
  95. package/dist/gc.js +126 -9
  96. package/dist/gc.js.map +1 -1
  97. package/dist/github.d.ts +14 -0
  98. package/dist/github.d.ts.map +1 -1
  99. package/dist/github.js +73 -0
  100. package/dist/github.js.map +1 -1
  101. package/dist/harness.d.ts +25 -0
  102. package/dist/harness.d.ts.map +1 -1
  103. package/dist/harness.js.map +1 -1
  104. package/dist/index.d.ts +4 -1
  105. package/dist/index.d.ts.map +1 -1
  106. package/dist/index.js +2 -1
  107. package/dist/index.js.map +1 -1
  108. package/dist/install-ci-branch-protection.d.ts +132 -38
  109. package/dist/install-ci-branch-protection.d.ts.map +1 -1
  110. package/dist/install-ci-branch-protection.js +190 -48
  111. package/dist/install-ci-branch-protection.js.map +1 -1
  112. package/dist/install-ci-core.d.ts +21 -1
  113. package/dist/install-ci-core.d.ts.map +1 -1
  114. package/dist/install-ci-core.js +10 -3
  115. package/dist/install-ci-core.js.map +1 -1
  116. package/dist/install-ci-github.d.ts +32 -0
  117. package/dist/install-ci-github.d.ts.map +1 -1
  118. package/dist/install-ci-github.js +73 -0
  119. package/dist/install-ci-github.js.map +1 -1
  120. package/dist/install-skills.d.ts +123 -0
  121. package/dist/install-skills.d.ts.map +1 -0
  122. package/dist/install-skills.js +100 -0
  123. package/dist/install-skills.js.map +1 -0
  124. package/dist/intake-trigger-template.js +1 -1
  125. package/dist/intake.d.ts +17 -4
  126. package/dist/intake.d.ts.map +1 -1
  127. package/dist/intake.js +23 -7
  128. package/dist/intake.js.map +1 -1
  129. package/dist/integration-core.d.ts +10 -7
  130. package/dist/integration-core.d.ts.map +1 -1
  131. package/dist/integration-core.js +174 -60
  132. package/dist/integration-core.js.map +1 -1
  133. package/dist/integrator.d.ts +1 -1
  134. package/dist/integrator.d.ts.map +1 -1
  135. package/dist/integrator.js +19 -3
  136. package/dist/integrator.js.map +1 -1
  137. package/dist/isolation.d.ts +2 -2
  138. package/dist/isolation.d.ts.map +1 -1
  139. package/dist/isolation.js +9 -0
  140. package/dist/isolation.js.map +1 -1
  141. package/dist/item-lock.d.ts +196 -129
  142. package/dist/item-lock.d.ts.map +1 -1
  143. package/dist/item-lock.js +329 -254
  144. package/dist/item-lock.js.map +1 -1
  145. package/dist/ledger-write.d.ts +31 -26
  146. package/dist/ledger-write.d.ts.map +1 -1
  147. package/dist/ledger-write.js +100 -122
  148. package/dist/ledger-write.js.map +1 -1
  149. package/dist/lifecycle-gather.d.ts +17 -0
  150. package/dist/lifecycle-gather.d.ts.map +1 -1
  151. package/dist/lifecycle-gather.js +7 -1
  152. package/dist/lifecycle-gather.js.map +1 -1
  153. package/dist/lifecycle-pools.d.ts +40 -3
  154. package/dist/lifecycle-pools.d.ts.map +1 -1
  155. package/dist/lifecycle-pools.js +26 -6
  156. package/dist/lifecycle-pools.js.map +1 -1
  157. package/dist/merge-question-surfacer.d.ts +15 -1
  158. package/dist/merge-question-surfacer.d.ts.map +1 -1
  159. package/dist/merge-question-surfacer.js +18 -3
  160. package/dist/merge-question-surfacer.js.map +1 -1
  161. package/dist/migrate-stuck-locks.d.ts +129 -0
  162. package/dist/migrate-stuck-locks.d.ts.map +1 -0
  163. package/dist/migrate-stuck-locks.js +355 -0
  164. package/dist/migrate-stuck-locks.js.map +1 -0
  165. package/dist/needs-attention.d.ts +293 -16
  166. package/dist/needs-attention.d.ts.map +1 -1
  167. package/dist/needs-attention.js +532 -57
  168. package/dist/needs-attention.js.map +1 -1
  169. package/dist/orphan-sidecar.d.ts +8 -4
  170. package/dist/orphan-sidecar.d.ts.map +1 -1
  171. package/dist/orphan-sidecar.js +35 -2
  172. package/dist/orphan-sidecar.js.map +1 -1
  173. package/dist/pi-harness.d.ts +16 -0
  174. package/dist/pi-harness.d.ts.map +1 -1
  175. package/dist/pi-harness.js +82 -2
  176. package/dist/pi-harness.js.map +1 -1
  177. package/dist/placement.d.ts +3 -3
  178. package/dist/placement.js +1 -1
  179. package/dist/prd-to-spec.d.ts.map +1 -1
  180. package/dist/prd-to-spec.js +9 -5
  181. package/dist/prd-to-spec.js.map +1 -1
  182. package/dist/protocol/CLAIM-PROTOCOL.md +17 -10
  183. package/dist/protocol/REVIEW-PROTOCOL.md +4 -1
  184. package/dist/protocol/SURFACE-PROTOCOL.md +16 -2
  185. package/dist/protocol/TASKING-PROTOCOL.md +3 -1
  186. package/dist/protocol/WORK-CONTRACT.md +22 -18
  187. package/dist/protocol/task-template.md +1 -1
  188. package/dist/reap-branches.d.ts +12 -9
  189. package/dist/reap-branches.d.ts.map +1 -1
  190. package/dist/reap-branches.js +25 -7
  191. package/dist/reap-branches.js.map +1 -1
  192. package/dist/recover-isolated.d.ts +12 -0
  193. package/dist/recover-isolated.d.ts.map +1 -1
  194. package/dist/recover-isolated.js +5 -0
  195. package/dist/recover-isolated.js.map +1 -1
  196. package/dist/repo-config.d.ts +23 -2
  197. package/dist/repo-config.d.ts.map +1 -1
  198. package/dist/repo-config.js +53 -7
  199. package/dist/repo-config.js.map +1 -1
  200. package/dist/repo-mirror.d.ts.map +1 -1
  201. package/dist/repo-mirror.js +18 -2
  202. package/dist/repo-mirror.js.map +1 -1
  203. package/dist/review-verdict.js +1 -1
  204. package/dist/review-verdict.js.map +1 -1
  205. package/dist/run.d.ts +1 -1
  206. package/dist/run.d.ts.map +1 -1
  207. package/dist/run.js +54 -19
  208. package/dist/run.js.map +1 -1
  209. package/dist/scan.d.ts +17 -8
  210. package/dist/scan.d.ts.map +1 -1
  211. package/dist/scan.js +22 -8
  212. package/dist/scan.js.map +1 -1
  213. package/dist/select-priority.d.ts +2 -2
  214. package/dist/select-priority.js +1 -1
  215. package/dist/select-priority.js.map +1 -1
  216. package/dist/sidecar-apply.js +1 -1
  217. package/dist/sidecar-apply.js.map +1 -1
  218. package/dist/sidecar.d.ts +45 -10
  219. package/dist/sidecar.d.ts.map +1 -1
  220. package/dist/sidecar.js +82 -2
  221. package/dist/sidecar.js.map +1 -1
  222. package/dist/skills/answer-questions/SKILL.md +89 -0
  223. package/dist/skills/capture-signal/SKILL.md +52 -0
  224. package/dist/skills/convert-from-prd-to-spec/SKILL.md +90 -0
  225. package/dist/skills/drive-tasks/SKILL.md +218 -0
  226. package/dist/skills/from-idea/SKILL.md +83 -0
  227. package/dist/skills/merge-prs/SKILL.md +70 -0
  228. package/dist/skills/orchestrate/SKILL.md +101 -0
  229. package/dist/skills/promote/SKILL.md +35 -0
  230. package/dist/skills/review/SKILL.md +16 -0
  231. package/dist/skills/setup/SKILL.md +258 -0
  232. package/dist/skills/setup/protocol/ADR-FORMAT.md +47 -0
  233. package/dist/skills/setup/protocol/CLAIM-PROTOCOL.md +224 -0
  234. package/dist/skills/setup/protocol/REVIEW-PROTOCOL.md +122 -0
  235. package/dist/skills/setup/protocol/SURFACE-PROTOCOL.md +135 -0
  236. package/dist/skills/setup/protocol/TASKING-PROTOCOL.md +124 -0
  237. package/dist/skills/setup/protocol/WORK-CONTRACT.md +280 -0
  238. package/dist/skills/setup/protocol/spec-template.md +71 -0
  239. package/dist/skills/setup/protocol/task-template.md +65 -0
  240. package/dist/skills/surface-questions/SKILL.md +16 -0
  241. package/dist/skills/to-spec/SKILL.md +34 -0
  242. package/dist/skills/to-task/SKILL.md +19 -0
  243. package/dist/skills/triage-observations/SKILL.md +78 -0
  244. package/dist/skills/work/SKILL.md +51 -0
  245. package/dist/slug-namespace.d.ts +5 -5
  246. package/dist/slug-namespace.js +5 -5
  247. package/dist/slug-namespace.js.map +1 -1
  248. package/dist/spec-complete.d.ts.map +1 -1
  249. package/dist/spec-complete.js +2 -3
  250. package/dist/spec-complete.js.map +1 -1
  251. package/dist/start.d.ts.map +1 -1
  252. package/dist/start.js +51 -57
  253. package/dist/start.js.map +1 -1
  254. package/dist/surface-gate.d.ts.map +1 -1
  255. package/dist/surface-gate.js +10 -3
  256. package/dist/surface-gate.js.map +1 -1
  257. package/dist/surface-persist.js +1 -1
  258. package/dist/surface-persist.js.map +1 -1
  259. package/dist/tasker-review-loop.d.ts +4 -3
  260. package/dist/tasker-review-loop.d.ts.map +1 -1
  261. package/dist/tasker-review-loop.js.map +1 -1
  262. package/dist/tasking-lock.d.ts +2 -2
  263. package/dist/tasking-lock.d.ts.map +1 -1
  264. package/dist/tasking-lock.js +53 -32
  265. package/dist/tasking-lock.js.map +1 -1
  266. package/dist/tasking.d.ts +40 -6
  267. package/dist/tasking.d.ts.map +1 -1
  268. package/dist/tasking.js +224 -12
  269. package/dist/tasking.js.map +1 -1
  270. package/dist/triage-persist.d.ts +10 -6
  271. package/dist/triage-persist.d.ts.map +1 -1
  272. package/dist/triage-persist.js +34 -4
  273. package/dist/triage-persist.js.map +1 -1
  274. package/dist/vendor/incur/agents.d.ts +58 -0
  275. package/dist/vendor/incur/agents.d.ts.map +1 -0
  276. package/dist/vendor/incur/agents.js +343 -0
  277. package/dist/vendor/incur/agents.js.map +1 -0
  278. package/dist/verify-workflow-template.js +1 -1
  279. package/dist/watch-session.d.ts +11 -3
  280. package/dist/watch-session.d.ts.map +1 -1
  281. package/dist/watch-session.js +94 -7
  282. package/dist/watch-session.js.map +1 -1
  283. package/dist/work-layout.d.ts +7 -3
  284. package/dist/work-layout.d.ts.map +1 -1
  285. package/dist/work-layout.js +6 -3
  286. package/dist/work-layout.js.map +1 -1
  287. package/dist/workspace.d.ts +1 -1
  288. package/package.json +2 -2
  289. package/src/advance-drivers.ts +16 -3
  290. package/src/advance-lifecycle-template.ts +89 -4
  291. package/src/advance-treeless-publish.ts +45 -0
  292. package/src/advance.ts +467 -87
  293. package/src/advancing-lock.ts +96 -1
  294. package/src/agent-launch.ts +37 -12
  295. package/src/agent-stop.ts +60 -2
  296. package/src/apply-decide.ts +36 -7
  297. package/src/apply-merge-action.ts +45 -7
  298. package/src/apply-persist.ts +228 -54
  299. package/src/apply-stuck-action.ts +260 -0
  300. package/src/brand.ts +14 -2
  301. package/src/cli-spinner.ts +1 -1
  302. package/src/cli.ts +401 -70
  303. package/src/close-job-template.ts +1 -1
  304. package/src/complete.ts +110 -52
  305. package/src/config.ts +107 -13
  306. package/src/continue-branch.ts +22 -0
  307. package/src/decision-engine.ts +55 -17
  308. package/src/do-autopick.ts +12 -1
  309. package/src/do-config.ts +1 -1
  310. package/src/do.ts +511 -38
  311. package/src/env-config.ts +12 -4
  312. package/src/failure-cause.ts +30 -1
  313. package/src/format.ts +10 -30
  314. package/src/frontmatter.ts +35 -5
  315. package/src/gc.ts +172 -9
  316. package/src/github.ts +78 -0
  317. package/src/harness.ts +25 -0
  318. package/src/index.ts +10 -0
  319. package/src/install-ci-branch-protection.ts +282 -57
  320. package/src/install-ci-core.ts +30 -3
  321. package/src/install-ci-github.ts +86 -0
  322. package/src/install-skills.ts +166 -0
  323. package/src/intake-trigger-template.ts +1 -1
  324. package/src/intake.ts +46 -11
  325. package/src/integration-core.ts +199 -65
  326. package/src/integrator.ts +22 -9
  327. package/src/isolation.ts +11 -2
  328. package/src/item-lock.ts +485 -341
  329. package/src/ledger-write.ts +135 -150
  330. package/src/lifecycle-gather.ts +29 -6
  331. package/src/lifecycle-pools.ts +67 -9
  332. package/src/merge-question-surfacer.ts +28 -4
  333. package/src/migrate-stuck-locks.ts +451 -0
  334. package/src/needs-attention.ts +857 -84
  335. package/src/orphan-sidecar.ts +47 -6
  336. package/src/pi-harness.ts +82 -2
  337. package/src/placement.ts +3 -3
  338. package/src/prd-to-spec.ts +13 -5
  339. package/src/reap-branches.ts +38 -14
  340. package/src/recover-isolated.ts +17 -0
  341. package/src/repo-config.ts +55 -6
  342. package/src/repo-mirror.ts +23 -1
  343. package/src/review-verdict.ts +1 -1
  344. package/src/run.ts +64 -18
  345. package/src/scan.ts +22 -8
  346. package/src/select-priority.ts +3 -3
  347. package/src/sidecar-apply.ts +1 -1
  348. package/src/sidecar.ts +138 -11
  349. package/src/slug-namespace.ts +7 -7
  350. package/src/spec-complete.ts +2 -3
  351. package/src/start.ts +53 -59
  352. package/src/surface-gate.ts +10 -3
  353. package/src/surface-persist.ts +1 -1
  354. package/src/tasker-review-loop.ts +4 -3
  355. package/src/tasking-lock.ts +52 -36
  356. package/src/tasking.ts +261 -17
  357. package/src/triage-persist.ts +56 -12
  358. package/src/vendor/incur/LICENSE +21 -0
  359. package/src/vendor/incur/README.md +19 -0
  360. package/src/vendor/incur/agents.ts +392 -0
  361. package/src/verify-workflow-template.ts +1 -1
  362. package/src/watch-session.ts +102 -7
  363. package/src/work-layout.ts +6 -3
  364. package/src/workspace.ts +1 -1
@@ -1,3 +1,4 @@
1
+ import { type NewQuestion } from './sidecar.js';
1
2
  import { type BackoffOptions, type Sleep } from './retry-backoff.js';
2
3
  export interface RouteToNeedsAttentionOptions {
3
4
  /** The working clone / job worktree the `work/<slug>` branch lives in. */
@@ -74,11 +75,12 @@ export interface RouteToNeedsAttentionResult {
74
75
  /** When the branch push FAILED after retries, the last git error (for the report). */
75
76
  pushError?: string;
76
77
  /**
77
- * When `moved`, the sha of the **move-only** commit the tip of `work/<slug>`
78
- * that carries PURELY the `git mv needs-attention/` + the reason (the wip
79
- * commit holding the aborted agent work sits BELOW it). A surfacing strategy
80
- * cherry-picks THIS commit to make the stuck state observable, so the wip never
81
- * reaches the ledger.
78
+ * When `moved`, the sha of the `work/<slug>` tip after the RECOVERABLE-half
79
+ * save. Post lock-cutover this is the **wip** commit holding the aborted agent
80
+ * work (`git add -A`); there is no separate `git mv needs-attention/`
81
+ * move-only commit anymore (that folder is retired). The OBSERVABLE stuck
82
+ * state rides on the per-item lock amend (`state: stuck` + reason), not on this
83
+ * commit.
82
84
  */
83
85
  moveCommit?: string;
84
86
  /** When NOT moved, why (e.g. the slug was not in-progress). */
@@ -88,8 +90,9 @@ export interface ReturnToBacklogOptions {
88
90
  /** The working clone the `work/` tree lives in. */
89
91
  cwd: string;
90
92
  /**
91
- * The slug of the stuck item to re-queue — recovered from `needs-attention/`
92
- * OR `in-progress/` (the actual current folder is resolved on the arbiter).
93
+ * The slug of the stuck item to re-queue — recovered via its per-item lock on
94
+ * the arbiter (post lock-cutover the body never moves into a status folder; it
95
+ * rests in `backlog/` and stuck is the lock `state: stuck`).
93
96
  */
94
97
  slug: string;
95
98
  /** The arbiter remote to push the transition to. Optional (see above). */
@@ -109,6 +112,29 @@ export interface ReturnToBacklogOptions {
109
112
  * path.
110
113
  */
111
114
  reset?: boolean;
115
+ /**
116
+ * `requeue --reconcile` (the NON-DESTRUCTIVE recovery verb — the middle rung
117
+ * of the escalation ladder between the default keep+continue and the
118
+ * destructive `--reset`). When the item's per-item lock is held stuck AND the
119
+ * arbiter's `work/<slug>` branch EXISTS and is ahead of main, re-sync the
120
+ * mirror to the arbiter (a prune-fetch that clears the stale-ref residue that
121
+ * historically silently resurrected a supposedly-`--reset`-ed branch) and
122
+ * RETRY the rebase of the kept branch onto latest `<arbiter>/main` in a
123
+ * SCRATCH worktree (never touching the caller's tree, `--force-with-lease`
124
+ * only, NEVER a bare force). On a clean rebase, the reconciled tip is
125
+ * pushed back to the arbiter with a lease + the reconcile completes as a
126
+ * standard keep+continue requeue (lock released, branch preserved). On a
127
+ * genuine content conflict after the clean mirror re-sync, the lock is LEFT
128
+ * HELD (item stays stuck), the branch is LEFT UNTOUCHED on the arbiter
129
+ * (NEVER deleted), and the caller is told the retry happened + pointed at the
130
+ * deferred mirror-side resolve follow-on + `--reset` as the destructive last
131
+ * resort. If the branch is ABSENT (never pushed, or a prior `--reset` already
132
+ * deleted it), reconcile falls through to the default keep+continue path
133
+ * (which itself degrades gracefully to a fresh-claim move). Incompatible
134
+ * with `--reset` (destructive vs non-destructive are exclusive verbs on the
135
+ * same escalation).
136
+ */
137
+ reconcile?: boolean;
112
138
  /**
113
139
  * `requeue -m "<note>"` (the handoff note): an optional human steer for the
114
140
  * NEXT agent. APPENDED (never overwritten) as a dated `## Requeue YYYY-MM-DD`
@@ -130,7 +156,15 @@ export interface ReturnToBacklogResult {
130
156
  commitMessage?: string;
131
157
  /** True iff `--reset` deleted the remote `work/<slug>` branch on the arbiter. */
132
158
  deletedRemoteBranch?: boolean;
133
- /** When NOT moved, why (e.g. the slug was in neither needs-attention/ nor in-progress/, or a failed --reset delete). */
159
+ /**
160
+ * True iff `--reconcile` re-synced the mirror + rebased the kept branch onto
161
+ * latest `<arbiter>/main` and pushed the reconciled tip back to the arbiter
162
+ * (before the lock release). Absent on the default path / on `--reset` / on
163
+ * a reconcile that fell through (branch absent) — for those, the ordinary
164
+ * keep+continue path ran with no rebase.
165
+ */
166
+ reconciled?: boolean;
167
+ /** When NOT moved, why (e.g. the slug held no recoverable per-item lock on the arbiter, or a failed --reset delete). */
134
168
  reasonNotMoved?: string;
135
169
  }
136
170
  export interface SurfaceToNeedsAttentionOptions {
@@ -199,19 +233,77 @@ export interface SurfaceToNeedsAttentionResult {
199
233
  * plumbing failures still throw (they are unexpected).
200
234
  */
201
235
  export declare function routeToNeedsAttention(options: RouteToNeedsAttentionOptions): Promise<RouteToNeedsAttentionResult>;
236
+ /**
237
+ * Options the shared {@link deleteRemoteWorkBranchIfPresent} primitive consumes.
238
+ */
239
+ export interface DeleteRemoteWorkBranchOptions {
240
+ /** Working clone whose remote `arbiter` points at the real arbiter. */
241
+ cwd: string;
242
+ /** The arbiter remote NAME in `cwd`. */
243
+ arbiter: string;
244
+ /** Bare slug (the branch is `work/task-<slug>`). */
245
+ slug: string;
246
+ /** Environment for child git processes. */
247
+ env?: NodeJS.ProcessEnv;
248
+ }
249
+ /** The three terminal states {@link deleteRemoteWorkBranchIfPresent} can report. */
250
+ export type DeleteRemoteWorkBranchStatus =
251
+ /** The push --delete succeeded; the arbiter branch is gone. */
252
+ 'deleted'
253
+ /**
254
+ * The branch was already absent from the arbiter (`remote ref does not
255
+ * exist` / `unable to delete`). Local refs may still have been cleaned up.
256
+ * SEMANTICALLY equivalent to `deleted` for callers who only care that the
257
+ * branch is not on the arbiter afterwards — idempotent no-op.
258
+ */
259
+ | 'already-gone'
260
+ /** The push --delete failed for a reason OTHER than already-gone; caller decides. */
261
+ | 'failed';
262
+ /** The outcome {@link deleteRemoteWorkBranchIfPresent} reports. */
263
+ export interface DeleteRemoteWorkBranchResult {
264
+ /** The `work/<type>-<slug>` branch ref name that was targeted. */
265
+ branch: string;
266
+ /** See {@link DeleteRemoteWorkBranchStatus}. */
267
+ status: DeleteRemoteWorkBranchStatus;
268
+ /** The stderr from the failed `push --delete` (`''` on success/already-gone). */
269
+ stderr: string;
270
+ }
271
+ /**
272
+ * Delete the remote `work/task-<slug>` branch on the arbiter using the SAME
273
+ * write-through ordering the `requeue --reset` recovery verb uses:
274
+ *
275
+ * 1. Delete the LOCAL tracking ref (`refs/remotes/<arbiter>/work/<...>`)
276
+ * — the ref the continue-detection path READS; if we skip this the
277
+ * staleness silently resurrects a supposedly-discarded branch (verified in
278
+ * `work/notes/observations/requeue-reset-does-not-prune-hub-mirror-stale-branch-ref.md`).
279
+ * 2. Delete any LOCAL head `work/<...>` (best-effort).
280
+ * 3. `git push <arbiter> --delete work/<...>` — the ARBITER delete, the
281
+ * source of truth. A `remote ref does not exist` / `unable to delete`
282
+ * stderr is TOLERATED as `already-gone` so the primitive is IDEMPOTENT
283
+ * and safely callable on an item with no work branch (an observation, or
284
+ * a task never built).
285
+ *
286
+ * Extracted from {@link returnToBacklog}'s `--reset` path so the apply-rung
287
+ * `kind: 'stuck'` answered `reset` verb (task
288
+ * `apply-resolve-reset-flag-discards-work-branch`) can dispatch through the
289
+ * SAME primitive without re-implementing branch deletion — the two callers
290
+ * MUST stay behaviourally identical (delete-before-move / delete-before-clear;
291
+ * local-first write-through; already-gone tolerance).
292
+ */
293
+ export declare function deleteRemoteWorkBranchIfPresent(options: DeleteRemoteWorkBranchOptions): Promise<DeleteRemoteWorkBranchResult>;
202
294
  export declare function returnToBacklog(options: ReturnToBacklogOptions): Promise<ReturnToBacklogResult>;
203
295
  /**
204
296
  * **Promote a STAGED task into the agent-eligible pool** (spec
205
297
  * `staging-pool-position-gate-and-trust-model`, task
206
298
  * `pre-backlog-staging-folder-and-promote-step-a`, governing ADR
207
299
  * `placement-is-runner-deterministic-humanonly-is-agent-judgement`). Moves
208
- * `work/pre-backlog/<slug>.md → work/backlog/<slug>.md` as a durable `main`
300
+ * `work/tasks/backlog/<slug>.md → work/tasks/ready/<slug>.md` as a durable `main`
209
301
  * move, the same category as {@link returnToBacklog} (tree-less CAS via
210
302
  * {@link runTreelessLedgerMove}). After this transition the task is in the
211
303
  * pool and claimable.
212
304
  *
213
305
  * **RUNNER/human-owned.** There is no agent-facing path that performs this:
214
- * the agent's tasking output lands STAGED in `work/pre-backlog/` (the runner's
306
+ * the agent's tasking output lands STAGED in `work/tasks/backlog/` (the runner's
215
307
  * deterministic placement decision), and only a runner/human invocation moves
216
308
  * it into the pool. The agent does no git here, as everywhere.
217
309
  *
@@ -219,7 +311,7 @@ export declare function returnToBacklog(options: ReturnToBacklogOptions): Promis
219
311
  * lands; the sole strategy publishes to `<arbiter>/main`. Like
220
312
  * {@link returnToBacklog} the tree-less CAS needs a ref to push to, so an
221
313
  * `arbiter` is REQUIRED. NEVER throws for the expected
222
- * "not in pre-backlog/" / contention-exhausted cases — it returns
314
+ * "not in tasks/backlog/" / contention-exhausted cases — it returns
223
315
  * `{moved: false, reasonNotMoved}` so callers can branch cleanly.
224
316
  */
225
317
  export interface PromoteFromPreBacklogOptions {
@@ -247,7 +339,7 @@ export interface PromoteFromPreBacklogResult {
247
339
  moved: boolean;
248
340
  /** When `moved`, the committed transition message. */
249
341
  commitMessage?: string;
250
- /** When NOT moved, why (no such pre-backlog item, already in backlog, contention). */
342
+ /** When NOT moved, why (no such staged item, already in the pool, contention). */
251
343
  reasonNotMoved?: string;
252
344
  }
253
345
  export declare function promoteFromPreBacklog(options: PromoteFromPreBacklogOptions): Promise<PromoteFromPreBacklogResult>;
@@ -265,7 +357,7 @@ export declare function promoteFromPreBacklog(options: PromoteFromPreBacklogOpti
265
357
  * the auto-task pool, not the gates).
266
358
  *
267
359
  * **RUNNER/human-owned.** There is no agent-facing path that performs this:
268
- * `intake`'s `prd` dispatch lands the spec STAGED in `work/specs/proposed/` (the
360
+ * `intake`'s `spec` dispatch lands the spec STAGED in `work/specs/proposed/` (the
269
361
  * runner's deterministic placement decision), and only a runner/human
270
362
  * invocation moves it into the pool. The agent does no git here, as
271
363
  * everywhere; this function is not reachable from any agent surface.
@@ -297,9 +389,9 @@ export interface PromoteFromPreSpecResult {
297
389
  reasonNotMoved?: string;
298
390
  }
299
391
  export declare function promoteFromPreSpec(options: PromoteFromPreSpecOptions): Promise<PromoteFromPreSpecResult>;
300
- /** One staged item awaiting promotion (a task in `pre-backlog/` or a spec in `specs/proposed/`). */
392
+ /** One staged item awaiting promotion (a task in `tasks/backlog/` or a spec in `specs/proposed/`). */
301
393
  export interface PromotableItem {
302
- /** `'task'` (staged in `work/pre-backlog/`) or `'spec'` (staged in `work/specs/proposed/`). */
394
+ /** `'task'` (staged in `work/tasks/backlog/`) or `'spec'` (staged in `work/specs/proposed/`). */
303
395
  namespace: 'task' | 'spec';
304
396
  /** The slug (filename minus `.md`). */
305
397
  slug: string;
@@ -320,7 +412,7 @@ export interface ListPromotableResult {
320
412
  }
321
413
  /**
322
414
  * LIST every staged item awaiting a runner/human promotion — the tasks in
323
- * `work/pre-backlog/` and the prds in `work/specs/proposed/` on `<arbiter>/main` (the
415
+ * `work/tasks/backlog/` and the prds in `work/specs/proposed/` on `<arbiter>/main` (the
324
416
  * discovery half of the `promote` verb, so `promote` with no argument answers
325
417
  * "what is staged waiting for me?"). It reads the ARBITER's truth (a fetch + a
326
418
  * tree read), NOT the local working tree (which may be stale) — the same source
@@ -328,6 +420,191 @@ export interface ListPromotableResult {
328
420
  * Read-only: it never fetches a checkout, never moves anything.
329
421
  */
330
422
  export declare function listPromotable(options: ListPromotableOptions): Promise<ListPromotableResult>;
423
+ /**
424
+ * PR-1 ADDITIVE primitive (task `bounce-surfaces-stuck-sidecar-and-releases-lock`).
425
+ * The 2-file SIBLING of {@link prepareTreelessMoveCommit}: pure git plumbing
426
+ * (`hash-object` / scratch-index `update-index` / `write-tree` /
427
+ * `commit-tree`, NEVER touches the caller's index/HEAD/working tree) that in
428
+ * ONE commit off {@link base} both
429
+ *
430
+ * 1. writes or appends to the item's `work/questions/<type>-<slug>.md`
431
+ * sidecar (see {@link sidecarPathFor}) a `stuck`-kind entry carrying the
432
+ * bounce {@link reason} plus any agent-surfaced {@link questions}, and
433
+ * 2. sets `needsAnswers: true` on the item body at {@link itemPath} (via
434
+ * {@link setNeedsAnswersMarker}).
435
+ *
436
+ * The current sidecar (if any) and the current item body are read as BLOBS off
437
+ * `<arbiter>/main` (via {@link catBlob}) — no working tree required and no
438
+ * dependency on the cwd's `HEAD` matching `main`. That is what makes this the
439
+ * tree-less path's surface primitive: a `applyTreelessNeedsAttentionTransition`
440
+ * caller (`continue-push-failure` / rebase-conflict) has NO writable-`main`
441
+ * checkout, so `persistSurfacedQuestions` (working-tree bound) cannot be reused;
442
+ * the pure CONTENT builders (`newSidecar` / `appendQuestions` /
443
+ * `serialiseSidecar` / `setNeedsAnswersMarker`) ARE reused, only the commit
444
+ * mechanism differs (spec decision #7).
445
+ *
446
+ * Returns the throwaway ref + commit sha, exactly like {@link
447
+ * prepareTreelessMoveCommit}, so the SAME {@link runTreelessLedgerMove} CAS loop
448
+ * publishes the surface commit through the shared write seam. The
449
+ * surface-first / release-second ordering + `main`-authoritative crash-safety
450
+ * (spec decision #4) come FREE from routing through that loop — the caller wires
451
+ * the release into a `finally` AFTER a successful publish (see the harness
452
+ * {@link surfaceStuckToNeedsAttention}).
453
+ *
454
+ * DECISION — sidecar entry shape for a reason-only bounce (build-time, PR-1):
455
+ * every bounce always appends ONE engine-authored `stuck`-kind envelope entry
456
+ * whose `question` names the item and whose `context` is the {@link reason}
457
+ * prose, THEN any {@link questions} the agent surfaced. So a reason-only bounce
458
+ * (no agent questions) still surfaces exactly ONE entry a human can answer, and
459
+ * the agent's own questions (when present) are appended AFTER it, verbatim. The
460
+ * envelope entry is what turns a raw exit reason into a human-drainable
461
+ * question; the extra entries are the LLM prose the spec's decision #2 keeps
462
+ * untouched. Alternative considered — treating an empty `questions` array as a
463
+ * NO-OP surface — REJECTED because that is the spec's `stuck` retirement
464
+ * problem all over again (a bounced item with no on-`main` outcome).
465
+ * Alternative considered — dropping the envelope when agent questions are given
466
+ * — REJECTED because the reason is engine-authored ground truth; the agent's
467
+ * questions are advisory prose ABOVE it, not a replacement for it.
468
+ *
469
+ * PR-1 boundary: this primitive is EXERCISED BY TESTS ONLY; it is NOT yet
470
+ * called from any bounce seam. Wiring `applyNeedsAttentionTransition` /
471
+ * `applyTreelessNeedsAttentionTransition` to it — and migrating the existing
472
+ * `stuckLockOnArbiter(...).toBe(true)` assertions — is the follow-up PR-2 task
473
+ * `bounce-atomic-cutover-retire-stuck-lock`.
474
+ */
475
+ export declare function prepareTreelessSurfaceCommit(params: {
476
+ /** The origin cwd whose object store the plumbing writes into (never a target). */
477
+ cwd: string;
478
+ /** The slug (used only to name the throwaway ref). */
479
+ slug: string;
480
+ /** The namespaced item identity (e.g. `task:foo`); drives the sidecar path. */
481
+ item: string;
482
+ /** The item body's on-`main` path (e.g. `work/tasks/ready/foo.md`). */
483
+ itemPath: string;
484
+ /** The base commit (`<arbiter>/main`) the surface commit parents on. */
485
+ base: string;
486
+ /** The bounce reason (envelope entry's context). */
487
+ reason: string;
488
+ /** Any agent-surfaced questions to append after the envelope. */
489
+ questions?: NewQuestion[];
490
+ /**
491
+ * OPTIONAL engine-authored envelope entry OVERRIDE. When provided, replaces
492
+ * the built-in generic `"<item> was bounced — how should we proceed?"`
493
+ * envelope with a caller-supplied one — the seam the empty-diff bounce path
494
+ * uses to guarantee a DISPOSE-DEFAULTED disposition question exists on the
495
+ * surfaced sidecar (spec `surface-stuck-as-questions-and-retire-stuck-lock-state`
496
+ * resolved decision #2, task
497
+ * `empty-diff-bounce-surfaces-dispose-defaulted-question`). The override still
498
+ * defaults its `kind` to `'stuck'` when unset. `reason` (envelope context)
499
+ * remains the caller-owned prose; the override lets the caller set the
500
+ * envelope's `question` + `default` so the human sees a one-glance
501
+ * dispose/cancel prompt instead of the generic "how should we proceed?"
502
+ * catch-all. When absent, the built-in envelope is used (the reason-only
503
+ * bounce shape).
504
+ */
505
+ envelope?: NewQuestion;
506
+ /** The commit subject for the surface commit. */
507
+ commitMessage: string;
508
+ /** The throwaway ref namespace (`refs/dorfl/<refNamespace>/<slug>`). */
509
+ refNamespace: string;
510
+ env: NodeJS.ProcessEnv | undefined;
511
+ }): {
512
+ ref: string;
513
+ commit: string;
514
+ };
515
+ export interface SurfaceStuckToNeedsAttentionOptions {
516
+ /**
517
+ * The working clone the move is ORIGINATED from — purely the ORIGIN SOURCE
518
+ * (it resolves the arbiter remote + holds the object store the plumbing
519
+ * writes into), NEVER a write TARGET. Tree-less: the cwd index/HEAD/working
520
+ * tree are never touched.
521
+ */
522
+ cwd: string;
523
+ /** The slug of the item to surface as a stuck question. */
524
+ slug: string;
525
+ /**
526
+ * The item body's on-`main` path (e.g. `work/tasks/ready/foo.md`). Provided
527
+ * by the caller (parity with `persistSurfacedQuestions`). PR-2a made this
528
+ * OPTIONAL: when absent the harness invokes {@link resolveBounceItemBodyPathOnMain}
529
+ * to PROBE `<arbiter>/main` in the D1 order for the item's namespace
530
+ * (task/spec/observation). A body-absent probe (item body never landed on
531
+ * `main` — e.g. a claim that lost/raced) is a CLEAN NO-OP surface that STILL
532
+ * RELEASES the lock: never throw, never leave a held lock, never drop the
533
+ * bounce silently to a dead end.
534
+ */
535
+ itemPath?: string;
536
+ /** The namespaced item identity. Defaults to `task:${slug}`. */
537
+ item?: string;
538
+ /** Why the item is stuck (bounce reason — envelope entry's context). */
539
+ reason: string;
540
+ /** Any questions the agent surfaced (appended after the envelope). */
541
+ questions?: NewQuestion[];
542
+ /**
543
+ * OPTIONAL engine-authored envelope override, forwarded to
544
+ * {@link prepareTreelessSurfaceCommit}. The empty-diff bounce path uses this
545
+ * to guarantee the first surfaced entry is a DISPOSE-DEFAULTED disposition
546
+ * question (task `empty-diff-bounce-surfaces-dispose-defaulted-question`,
547
+ * spec resolved decision #2). Absent ⇒ the built-in generic
548
+ * "how should we proceed?" envelope (a reason-only bounce).
549
+ */
550
+ envelope?: NewQuestion;
551
+ /** The arbiter remote the surface commit is CAS-published to. REQUIRED. */
552
+ arbiter: string;
553
+ env?: NodeJS.ProcessEnv;
554
+ note?: (message: string) => void;
555
+ }
556
+ export interface SurfaceStuckToNeedsAttentionResult {
557
+ /** True iff the surface commit landed on `<arbiter>/main`. */
558
+ surfaced: boolean;
559
+ /** True iff the per-item lock ref was released. On a body-absent probe
560
+ * (see {@link bodyAbsent}) the lock is STILL released — the bounce cannot
561
+ * silently strand a held lock over an item with no `main` body. */
562
+ released: boolean;
563
+ /** When NOT surfaced, why (missing item, contention exhausted, body-absent probe). */
564
+ reasonNotSurfaced?: string;
565
+ /** True iff the D1 probe found no body on `<arbiter>/main` for this item
566
+ * (task: `tasks/ready` then `tasks/backlog`; spec: `specs/ready` then
567
+ * `specs/proposed`; observation: `notes/observations`). In this case
568
+ * {@link surfaced} is false but {@link released} is true — the lock is
569
+ * always released to prevent a dead-end held lock. */
570
+ bodyAbsent?: boolean;
571
+ }
572
+ /**
573
+ * The PR-1 thin HARNESS around {@link prepareTreelessSurfaceCommit}: run it
574
+ * through the EXISTING {@link runTreelessLedgerMove} CAS loop, then release the
575
+ * per-item lock. Ordering is LOAD-BEARING and INHERITED from that harness —
576
+ * the surface commit lands on `<arbiter>/main` FIRST, and the lock release only
577
+ * fires on a successful publish. `main` is authoritative on crash recovery
578
+ * (spec decision #4).
579
+ *
580
+ * PR-1 boundary: this is EXERCISED BY TESTS ONLY. Wiring the seams to call it
581
+ * is the PR-2 task `bounce-atomic-cutover-retire-stuck-lock`.
582
+ */
583
+ export declare function surfaceStuckToNeedsAttention(options: SurfaceStuckToNeedsAttentionOptions): Promise<SurfaceStuckToNeedsAttentionResult>;
584
+ /**
585
+ * The D1 body-path probe (PR-2a task `bounce-atomic-cutover-retire-stuck-lock`,
586
+ * spec `surface-stuck-as-questions-and-retire-stuck-lock-state`, decision D1):
587
+ * resolve the item's on-`main` body path by probing `<arbiter>/main` in a
588
+ * FIXED order per namespace:
589
+ * - task: `work/tasks/ready/<slug>.md` then `work/tasks/backlog/<slug>.md`.
590
+ * - spec: `work/specs/ready/<slug>.md` then `work/specs/proposed/<slug>.md`.
591
+ * - observation: `work/notes/observations/<slug>.md`.
592
+ *
593
+ * Returns the first candidate that EXISTS on `<arbiter>/main`, or `undefined`
594
+ * when no candidate exists (a bounce for an item whose body never landed on
595
+ * `main`). The caller MUST handle `undefined` by STILL releasing the lock —
596
+ * never leave a held lock over a body-absent item.
597
+ *
598
+ * The probe fetches `<arbiter>/main` with an EXPLICIT refspec (the
599
+ * `runTreelessLedgerMove` pattern) so a job-worktree with a narrower default
600
+ * fetch refspec still resolves `<arbiter>/main` reliably.
601
+ */
602
+ export declare function resolveBounceItemBodyPathOnMain(params: {
603
+ cwd: string;
604
+ item: string;
605
+ arbiter: string;
606
+ env?: NodeJS.ProcessEnv;
607
+ }): Promise<string | undefined>;
331
608
  /**
332
609
  * Extract the prose written under the `## Needs attention` heading from an item
333
610
  * body. Returns the first non-empty line(s) of the block as a single line
@@ -1 +1 @@
1
- {"version":3,"file":"needs-attention.d.ts","sourceRoot":"","sources":["../src/needs-attention.ts"],"names":[],"mappings":"AAuBA,OAAO,EAGN,KAAK,cAAc,EACnB,KAAK,KAAK,EACV,MAAM,oBAAoB,CAAC;AAqC5B,MAAM,WAAW,4BAA4B;IAC5C,0EAA0E;IAC1E,GAAG,EAAE,MAAM,CAAC;IACZ,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,MAAM,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;OAUG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,2DAA2D;IAC3D,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC;;;OAGG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB;;;;OAIG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;CACd;AAED,6EAA6E;AAC7E,MAAM,MAAM,iBAAiB;AAC5B,yDAAyD;AACvD,QAAQ;AACV,2EAA2E;GACzE,eAAe;AACjB,+DAA+D;GAC7D,QAAQ;AACV,yDAAyD;GACvD,eAAe,CAAC;AAEnB,MAAM,WAAW,2BAA2B;IAC3C,+CAA+C;IAC/C,KAAK,EAAE,OAAO,CAAC;IACf,gFAAgF;IAChF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,sFAAsF;IACtF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACtC,mDAAmD;IACnD,GAAG,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,qBAAqB;IACrC,oDAAoD;IACpD,KAAK,EAAE,OAAO,CAAC;IACf,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,wHAAwH;IACxH,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,8BAA8B;IAC9C;;;;;OAKG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,kFAAkF;IAClF,MAAM,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,6BAA6B;IAC7C,6EAA6E;IAC7E,KAAK,EAAE,OAAO,CAAC;IACf,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uFAAuF;IACvF,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAsB,qBAAqB,CAC1C,OAAO,EAAE,4BAA4B,GACnC,OAAO,CAAC,2BAA2B,CAAC,CAmFtC;AAoDD,wBAAsB,eAAe,CACpC,OAAO,EAAE,sBAAsB,GAC7B,OAAO,CAAC,qBAAqB,CAAC,CAiPhC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,4BAA4B;IAC5C;;;;;OAKG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,2BAA2B;IAC3C,oEAAoE;IACpE,KAAK,EAAE,OAAO,CAAC;IACf,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sFAAsF;IACtF,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAsB,qBAAqB,CAC1C,OAAO,EAAE,4BAA4B,GACnC,OAAO,CAAC,2BAA2B,CAAC,CA8ItC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,yBAAyB;IACzC,yFAAyF;IACzF,GAAG,EAAE,MAAM,CAAC;IACZ,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,wBAAwB;IACxC,oEAAoE;IACpE,KAAK,EAAE,OAAO,CAAC;IACf,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8FAA8F;IAC9F,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAsB,kBAAkB,CACvC,OAAO,EAAE,yBAAyB,GAChC,OAAO,CAAC,wBAAwB,CAAC,CAwInC;AAED,oGAAoG;AACpG,MAAM,WAAW,cAAc;IAC9B,+FAA+F;IAC/F,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,qBAAqB;IACrC,kFAAkF;IAClF,GAAG,EAAE,MAAM,CAAC;IACZ,mFAAmF;IACnF,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACpC,kFAAkF;IAClF,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CACnC,OAAO,EAAE,qBAAqB,GAC5B,OAAO,CAAC,oBAAoB,CAAC,CA8B/B;AAkQD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA2BrD"}
1
+ {"version":3,"file":"needs-attention.d.ts","sourceRoot":"","sources":["../src/needs-attention.ts"],"names":[],"mappings":"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"}