issue-flow 0.17.0 → 0.19.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 (239) hide show
  1. package/README.md +34 -100
  2. package/dist/agent-EWKA7357.js +32 -0
  3. package/dist/{analyze-6M3KEOX7.js → analyze-Z7ODC27F.js} +42 -41
  4. package/dist/analyze-Z7ODC27F.js.map +1 -0
  5. package/dist/{apply-ADB3ZK7W.js → apply-VNSWQS6O.js} +22 -24
  6. package/dist/apply-VNSWQS6O.js.map +1 -0
  7. package/dist/artifacts-AMJQJFFV.js +82 -0
  8. package/dist/artifacts-AMJQJFFV.js.map +1 -0
  9. package/dist/{bench-FM7I7EIV.js → bench-ZJEIACUK.js} +42 -42
  10. package/dist/{chunk-RYOUZ6EK.js → chunk-23VHVVKW.js} +3 -3
  11. package/dist/chunk-2EYLOS5I.js +99 -0
  12. package/dist/chunk-2EYLOS5I.js.map +1 -0
  13. package/dist/{chunk-ANI2NTR4.js → chunk-2EZW4X57.js} +28 -25
  14. package/dist/chunk-2EZW4X57.js.map +1 -0
  15. package/dist/{chunk-E6KXCV3T.js → chunk-2Q6PG3MT.js} +15 -15
  16. package/dist/chunk-2Q6PG3MT.js.map +1 -0
  17. package/dist/{chunk-C5TL7T4V.js → chunk-2YM2VH6R.js} +2 -2
  18. package/dist/{chunk-LPWPFIIB.js → chunk-2YYP7AE6.js} +14 -16
  19. package/dist/{chunk-LPWPFIIB.js.map → chunk-2YYP7AE6.js.map} +1 -1
  20. package/dist/chunk-3JD25HHJ.js +278 -0
  21. package/dist/chunk-3JD25HHJ.js.map +1 -0
  22. package/dist/{chunk-ISZ54SVE.js → chunk-46S7APLQ.js} +41 -17
  23. package/dist/chunk-46S7APLQ.js.map +1 -0
  24. package/dist/chunk-6AOZCWN2.js +21 -0
  25. package/dist/chunk-6AOZCWN2.js.map +1 -0
  26. package/dist/{chunk-QPGEFLMY.js → chunk-7CMVL4X6.js} +7 -7
  27. package/dist/chunk-7MJGYPHF.js +1571 -0
  28. package/dist/chunk-7MJGYPHF.js.map +1 -0
  29. package/dist/chunk-7ZZUSMBJ.js +35 -0
  30. package/dist/chunk-7ZZUSMBJ.js.map +1 -0
  31. package/dist/{chunk-DUS5ZNKL.js → chunk-DIMDAYZS.js} +7 -6
  32. package/dist/{chunk-DGRTJD5R.js → chunk-DXH4TQRB.js} +7 -7
  33. package/dist/{chunk-CRGIQFUQ.js → chunk-E2H3JV2E.js} +3 -1
  34. package/dist/chunk-E2H3JV2E.js.map +1 -0
  35. package/dist/{chunk-YUNBOUQH.js → chunk-ERAG5IQB.js} +8 -8
  36. package/dist/{chunk-D6ZBGJ3L.js → chunk-F2NFJ27Z.js} +130 -36
  37. package/dist/chunk-F2NFJ27Z.js.map +1 -0
  38. package/dist/{chunk-SOM4QA6C.js → chunk-GD7JZMSJ.js} +93 -18
  39. package/dist/chunk-GD7JZMSJ.js.map +1 -0
  40. package/dist/{chunk-YII4U7ZD.js → chunk-HEHHQU4G.js} +70 -81
  41. package/dist/chunk-HEHHQU4G.js.map +1 -0
  42. package/dist/{chunk-KZ5EY5XX.js → chunk-HHXWAWU6.js} +159 -114
  43. package/dist/chunk-HHXWAWU6.js.map +1 -0
  44. package/dist/{chunk-SGTTR4XW.js → chunk-HWWB22HC.js} +152 -100
  45. package/dist/chunk-HWWB22HC.js.map +1 -0
  46. package/dist/chunk-IMB6FA2F.js +673 -0
  47. package/dist/chunk-IMB6FA2F.js.map +1 -0
  48. package/dist/{chunk-6YQT3SSM.js → chunk-IQYXXFRC.js} +22 -6
  49. package/dist/chunk-IQYXXFRC.js.map +1 -0
  50. package/dist/chunk-J6VJ5M2U.js +1201 -0
  51. package/dist/chunk-J6VJ5M2U.js.map +1 -0
  52. package/dist/{chunk-B3TSS7BT.js → chunk-KDQRNVBZ.js} +3 -3
  53. package/dist/{chunk-A4H7P7T7.js → chunk-LRWIP7QS.js} +41 -26
  54. package/dist/chunk-LRWIP7QS.js.map +1 -0
  55. package/dist/{chunk-DV7HUC4Z.js → chunk-LYC57OXF.js} +20 -117
  56. package/dist/chunk-LYC57OXF.js.map +1 -0
  57. package/dist/{chunk-HAKDLR6N.js → chunk-MAJ6QDRL.js} +65 -78
  58. package/dist/chunk-MAJ6QDRL.js.map +1 -0
  59. package/dist/{chunk-HJBF4WD2.js → chunk-MHA7Q3KU.js} +288 -108
  60. package/dist/chunk-MHA7Q3KU.js.map +1 -0
  61. package/dist/{chunk-UK4E2FUA.js → chunk-MQTVMB7W.js} +103 -76
  62. package/dist/chunk-MQTVMB7W.js.map +1 -0
  63. package/dist/chunk-NP47HRX2.js +136 -0
  64. package/dist/chunk-NP47HRX2.js.map +1 -0
  65. package/dist/{chunk-MI5TREN3.js → chunk-NYDAHE3Y.js} +52 -46
  66. package/dist/chunk-NYDAHE3Y.js.map +1 -0
  67. package/dist/{chunk-UWDCIFTP.js → chunk-P7ZYOC23.js} +41 -57
  68. package/dist/chunk-P7ZYOC23.js.map +1 -0
  69. package/dist/{chunk-3R27MJ5R.js → chunk-PFWHHYEO.js} +3 -3
  70. package/dist/{chunk-2SUFAE6X.js → chunk-PHPAK2L6.js} +44 -33
  71. package/dist/{chunk-2SUFAE6X.js.map → chunk-PHPAK2L6.js.map} +1 -1
  72. package/dist/{chunk-PPZ3K4YM.js → chunk-PRGPSNGA.js} +2 -2
  73. package/dist/{chunk-32JSYXEK.js → chunk-RGFMQFX7.js} +9 -23
  74. package/dist/{chunk-32JSYXEK.js.map → chunk-RGFMQFX7.js.map} +1 -1
  75. package/dist/{chunk-YVPZUN6X.js → chunk-TJVX42KY.js} +335 -38
  76. package/dist/chunk-TJVX42KY.js.map +1 -0
  77. package/dist/{chunk-RCZJQUTC.js → chunk-UDRAD7MF.js} +60 -27
  78. package/dist/chunk-UDRAD7MF.js.map +1 -0
  79. package/dist/{chunk-HY5HLFDU.js → chunk-UHDXXLYH.js} +148 -135
  80. package/dist/chunk-UHDXXLYH.js.map +1 -0
  81. package/dist/{chunk-RNFUVKC3.js → chunk-UPAAZU4W.js} +30 -13
  82. package/dist/chunk-UPAAZU4W.js.map +1 -0
  83. package/dist/{chunk-L6HSKTQE.js → chunk-W7LZLJAF.js} +4 -4
  84. package/dist/{chunk-HLAPOUEM.js → chunk-WB2FVIUS.js} +44 -12
  85. package/dist/chunk-WB2FVIUS.js.map +1 -0
  86. package/dist/{chunk-VE3IYNDN.js → chunk-WPHC6JBR.js} +9 -9
  87. package/dist/chunk-WPHC6JBR.js.map +1 -0
  88. package/dist/{chunk-KZXQWC7U.js → chunk-XHCP6ZNO.js} +201 -64
  89. package/dist/chunk-XHCP6ZNO.js.map +1 -0
  90. package/dist/{chunk-7F7LGMVO.js → chunk-XKR3VD2Z.js} +12 -12
  91. package/dist/{chunk-7F7LGMVO.js.map → chunk-XKR3VD2Z.js.map} +1 -1
  92. package/dist/{chunk-ICM463EO.js → chunk-XNK5UN2D.js} +5 -649
  93. package/dist/chunk-XNK5UN2D.js.map +1 -0
  94. package/dist/{chunk-Z5O2XBWA.js → chunk-XQLNZW7I.js} +40 -30
  95. package/dist/chunk-XQLNZW7I.js.map +1 -0
  96. package/dist/{chunk-QMIQR7EE.js → chunk-ZAYATXJD.js} +32 -316
  97. package/dist/chunk-ZAYATXJD.js.map +1 -0
  98. package/dist/cli.js +128 -60
  99. package/dist/cli.js.map +1 -1
  100. package/dist/compat-YPDZB34U.js +24 -0
  101. package/dist/{config-KGZUPAUP.js → config-56B4OHZE.js} +20 -17
  102. package/dist/{contract-JH2WBIO6.js → contract-HWLFFL3F.js} +2 -2
  103. package/dist/{conventions-RYN7OXJN.js → conventions-DW2CM5I3.js} +20 -16
  104. package/dist/{conventions-RYN7OXJN.js.map → conventions-DW2CM5I3.js.map} +1 -1
  105. package/dist/db-5NU77PJA.js +264 -0
  106. package/dist/db-5NU77PJA.js.map +1 -0
  107. package/dist/diagnostics-UCTS2VUF.js +25 -0
  108. package/dist/execute-R7AVOLNG.js +38 -0
  109. package/dist/{generate-CX6KNHZS.js → generate-O7GUXLN4.js} +46 -43
  110. package/dist/generate-O7GUXLN4.js.map +1 -0
  111. package/dist/{git-A2IP32PQ.js → git-LCG45YXD.js} +2 -3
  112. package/dist/history-6GSURU3H.js +101 -0
  113. package/dist/history-6GSURU3H.js.map +1 -0
  114. package/dist/init-DD6DBRC5.js +28 -0
  115. package/dist/{operations-CAKIT2BO.js → operations-HU5ZFEBA.js} +78 -52
  116. package/dist/operations-HU5ZFEBA.js.map +1 -0
  117. package/dist/{permissions-G4XCAESF.js → permissions-NNNSRC4P.js} +5 -6
  118. package/dist/plan-XR6B7EM3.js +38 -0
  119. package/dist/{policy-WX6O2JID.js → policy-RFJOJQL6.js} +17 -15
  120. package/dist/{policy-WX6O2JID.js.map → policy-RFJOJQL6.js.map} +1 -1
  121. package/dist/pr-OSCNJCOO.js +42 -0
  122. package/dist/pr-review-IKIYHFBO.js +33 -0
  123. package/dist/prd-HFDZJJQR.js +37 -0
  124. package/dist/{ps-76L6ZAZL.js → ps-AKRHGPSR.js} +26 -15
  125. package/dist/ps-AKRHGPSR.js.map +1 -0
  126. package/dist/{recorder-N7U66HCO.js → recorder-T7426CKV.js} +11 -7
  127. package/dist/registry-DWRKD65A.js +17 -0
  128. package/dist/repository-TABBRW2C.js +80 -0
  129. package/dist/resume-GDXKK5XP.js +278 -0
  130. package/dist/resume-GDXKK5XP.js.map +1 -0
  131. package/dist/review-JJHMQA2O.js +38 -0
  132. package/dist/routing-FPNUVE7T.js +35 -0
  133. package/dist/run-RLCURLLL.js +61 -0
  134. package/dist/{session-publisher-KAJQRHNZ.js → session-publisher-Q5TNEZPX.js} +3 -3
  135. package/dist/session-publisher-Q5TNEZPX.js.map +1 -0
  136. package/dist/{state-manager-UPHO2EA2.js → state-manager-IGNTD4AB.js} +9 -4
  137. package/dist/state-manager-IGNTD4AB.js.map +1 -0
  138. package/dist/{usage-U7QNGCPK.js → usage-XW27AL5K.js} +69 -63
  139. package/dist/usage-XW27AL5K.js.map +1 -0
  140. package/dist/web-NCDBVZ5Y.js +205 -0
  141. package/dist/web-NCDBVZ5Y.js.map +1 -0
  142. package/package.json +20 -7
  143. package/prompts/analyze.md +16 -19
  144. package/prompts/execute.md +73 -144
  145. package/prompts/generate.md +23 -10
  146. package/prompts/plan.md +32 -60
  147. package/prompts/pr-review.md +58 -40
  148. package/prompts/pr.md +50 -16
  149. package/prompts/prd.md +26 -19
  150. package/prompts/review.md +41 -18
  151. package/web/AGENTS.md +115 -7
  152. package/web/public/app.css +393 -245
  153. package/web/public/app.js +212 -143
  154. package/web/public/index.html +106 -78
  155. package/dist/agent-TB6W7PT7.js +0 -30
  156. package/dist/analyze-6M3KEOX7.js.map +0 -1
  157. package/dist/apply-ADB3ZK7W.js.map +0 -1
  158. package/dist/chunk-6YQT3SSM.js.map +0 -1
  159. package/dist/chunk-A4H7P7T7.js.map +0 -1
  160. package/dist/chunk-ANI2NTR4.js.map +0 -1
  161. package/dist/chunk-CRGIQFUQ.js.map +0 -1
  162. package/dist/chunk-D6ZBGJ3L.js.map +0 -1
  163. package/dist/chunk-DV7HUC4Z.js.map +0 -1
  164. package/dist/chunk-E6KXCV3T.js.map +0 -1
  165. package/dist/chunk-HAKDLR6N.js.map +0 -1
  166. package/dist/chunk-HJBF4WD2.js.map +0 -1
  167. package/dist/chunk-HLAPOUEM.js.map +0 -1
  168. package/dist/chunk-HY5HLFDU.js.map +0 -1
  169. package/dist/chunk-ICM463EO.js.map +0 -1
  170. package/dist/chunk-ISZ54SVE.js.map +0 -1
  171. package/dist/chunk-KZ5EY5XX.js.map +0 -1
  172. package/dist/chunk-KZXQWC7U.js.map +0 -1
  173. package/dist/chunk-MI5TREN3.js.map +0 -1
  174. package/dist/chunk-QMIQR7EE.js.map +0 -1
  175. package/dist/chunk-RCZJQUTC.js.map +0 -1
  176. package/dist/chunk-RNFUVKC3.js.map +0 -1
  177. package/dist/chunk-SGTTR4XW.js.map +0 -1
  178. package/dist/chunk-SOM4QA6C.js.map +0 -1
  179. package/dist/chunk-UK4E2FUA.js.map +0 -1
  180. package/dist/chunk-UWDCIFTP.js.map +0 -1
  181. package/dist/chunk-VE3IYNDN.js.map +0 -1
  182. package/dist/chunk-WCCZJL7W.js +0 -141
  183. package/dist/chunk-WCCZJL7W.js.map +0 -1
  184. package/dist/chunk-XEYH6ZZI.js +0 -289
  185. package/dist/chunk-XEYH6ZZI.js.map +0 -1
  186. package/dist/chunk-XZUEFTUP.js +0 -243
  187. package/dist/chunk-XZUEFTUP.js.map +0 -1
  188. package/dist/chunk-YII4U7ZD.js.map +0 -1
  189. package/dist/chunk-YVPZUN6X.js.map +0 -1
  190. package/dist/chunk-Z5O2XBWA.js.map +0 -1
  191. package/dist/diagnostics-HTCWF7F4.js +0 -23
  192. package/dist/execute-QL3ZQIAP.js +0 -37
  193. package/dist/generate-CX6KNHZS.js.map +0 -1
  194. package/dist/init-PDVQDRS6.js +0 -24
  195. package/dist/operations-CAKIT2BO.js.map +0 -1
  196. package/dist/plan-PRORGS3L.js +0 -34
  197. package/dist/pr-27RMQI5F.js +0 -39
  198. package/dist/pr-review-VNESMAMT.js +0 -32
  199. package/dist/prd-ZNC4T5BS.js +0 -33
  200. package/dist/ps-76L6ZAZL.js.map +0 -1
  201. package/dist/registry-XLHHYLTR.js +0 -15
  202. package/dist/resume-VLWIE264.js +0 -244
  203. package/dist/resume-VLWIE264.js.map +0 -1
  204. package/dist/review-7CREJDKB.js +0 -35
  205. package/dist/routing-VCDYHSXA.js +0 -33
  206. package/dist/run-3MPORLF5.js +0 -56
  207. package/dist/usage-U7QNGCPK.js.map +0 -1
  208. package/dist/web-HUNDHCJ4.js +0 -172
  209. package/dist/web-HUNDHCJ4.js.map +0 -1
  210. /package/dist/{agent-TB6W7PT7.js.map → agent-EWKA7357.js.map} +0 -0
  211. /package/dist/{bench-FM7I7EIV.js.map → bench-ZJEIACUK.js.map} +0 -0
  212. /package/dist/{chunk-RYOUZ6EK.js.map → chunk-23VHVVKW.js.map} +0 -0
  213. /package/dist/{chunk-C5TL7T4V.js.map → chunk-2YM2VH6R.js.map} +0 -0
  214. /package/dist/{chunk-QPGEFLMY.js.map → chunk-7CMVL4X6.js.map} +0 -0
  215. /package/dist/{chunk-DUS5ZNKL.js.map → chunk-DIMDAYZS.js.map} +0 -0
  216. /package/dist/{chunk-DGRTJD5R.js.map → chunk-DXH4TQRB.js.map} +0 -0
  217. /package/dist/{chunk-YUNBOUQH.js.map → chunk-ERAG5IQB.js.map} +0 -0
  218. /package/dist/{chunk-B3TSS7BT.js.map → chunk-KDQRNVBZ.js.map} +0 -0
  219. /package/dist/{chunk-3R27MJ5R.js.map → chunk-PFWHHYEO.js.map} +0 -0
  220. /package/dist/{chunk-PPZ3K4YM.js.map → chunk-PRGPSNGA.js.map} +0 -0
  221. /package/dist/{chunk-L6HSKTQE.js.map → chunk-W7LZLJAF.js.map} +0 -0
  222. /package/dist/{config-KGZUPAUP.js.map → compat-YPDZB34U.js.map} +0 -0
  223. /package/dist/{contract-JH2WBIO6.js.map → config-56B4OHZE.js.map} +0 -0
  224. /package/dist/{diagnostics-HTCWF7F4.js.map → contract-HWLFFL3F.js.map} +0 -0
  225. /package/dist/{execute-QL3ZQIAP.js.map → diagnostics-UCTS2VUF.js.map} +0 -0
  226. /package/dist/{git-A2IP32PQ.js.map → execute-R7AVOLNG.js.map} +0 -0
  227. /package/dist/{init-PDVQDRS6.js.map → git-LCG45YXD.js.map} +0 -0
  228. /package/dist/{permissions-G4XCAESF.js.map → init-DD6DBRC5.js.map} +0 -0
  229. /package/dist/{plan-PRORGS3L.js.map → permissions-NNNSRC4P.js.map} +0 -0
  230. /package/dist/{pr-27RMQI5F.js.map → plan-XR6B7EM3.js.map} +0 -0
  231. /package/dist/{pr-review-VNESMAMT.js.map → pr-OSCNJCOO.js.map} +0 -0
  232. /package/dist/{prd-ZNC4T5BS.js.map → pr-review-IKIYHFBO.js.map} +0 -0
  233. /package/dist/{recorder-N7U66HCO.js.map → prd-HFDZJJQR.js.map} +0 -0
  234. /package/dist/{registry-XLHHYLTR.js.map → recorder-T7426CKV.js.map} +0 -0
  235. /package/dist/{review-7CREJDKB.js.map → registry-DWRKD65A.js.map} +0 -0
  236. /package/dist/{routing-VCDYHSXA.js.map → repository-TABBRW2C.js.map} +0 -0
  237. /package/dist/{run-3MPORLF5.js.map → review-JJHMQA2O.js.map} +0 -0
  238. /package/dist/{session-publisher-KAJQRHNZ.js.map → routing-FPNUVE7T.js.map} +0 -0
  239. /package/dist/{state-manager-UPHO2EA2.js.map → run-RLCURLLL.js.map} +0 -0
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  getPackageVersion
4
- } from "./chunk-C5TL7T4V.js";
4
+ } from "./chunk-2YM2VH6R.js";
5
5
  import {
6
6
  DEFAULT_INACTIVITY_TIMEOUT_MS,
7
7
  installShutdownHandlers,
@@ -12,27 +12,29 @@ import {
12
12
  setRoutingCliOverrides,
13
13
  setVerifyCliOverrides,
14
14
  setWebCliOverrides
15
- } from "./chunk-HY5HLFDU.js";
16
- import "./chunk-DV7HUC4Z.js";
15
+ } from "./chunk-UHDXXLYH.js";
17
16
  import {
18
17
  printError,
19
18
  setGlobalTimeout,
20
19
  setInactivityTimeout,
21
20
  setVerbose
22
- } from "./chunk-XZUEFTUP.js";
23
- import "./chunk-QPGEFLMY.js";
24
- import "./chunk-HAKDLR6N.js";
25
- import "./chunk-YVPZUN6X.js";
26
- import "./chunk-DUS5ZNKL.js";
27
- import "./chunk-YII4U7ZD.js";
28
- import "./chunk-PPZ3K4YM.js";
29
- import "./chunk-SOM4QA6C.js";
21
+ } from "./chunk-J6VJ5M2U.js";
22
+ import "./chunk-7CMVL4X6.js";
23
+ import "./chunk-DIMDAYZS.js";
24
+ import "./chunk-HEHHQU4G.js";
25
+ import "./chunk-PRGPSNGA.js";
26
+ import "./chunk-P3LRUNC6.js";
27
+ import "./chunk-LYC57OXF.js";
28
+ import "./chunk-GD7JZMSJ.js";
29
+ import "./chunk-NP47HRX2.js";
30
30
  import {
31
31
  isAgentProviderId
32
- } from "./chunk-ICM463EO.js";
33
- import "./chunk-XEYH6ZZI.js";
34
- import "./chunk-P3LRUNC6.js";
35
- import "./chunk-3R27MJ5R.js";
32
+ } from "./chunk-IMB6FA2F.js";
33
+ import "./chunk-7MJGYPHF.js";
34
+ import "./chunk-XNK5UN2D.js";
35
+ import "./chunk-MAJ6QDRL.js";
36
+ import "./chunk-TJVX42KY.js";
37
+ import "./chunk-PFWHHYEO.js";
36
38
 
37
39
  // src/cli.ts
38
40
  import { Command, InvalidArgumentError, Option } from "commander";
@@ -353,8 +355,8 @@ withIssueOptions(
353
355
  )
354
356
  ).action(
355
357
  async (options) => {
356
- const { loadIssuesConfig } = await import("./config-KGZUPAUP.js");
357
- const { runInit } = await import("./init-PDVQDRS6.js");
358
+ const { loadIssuesConfig } = await import("./config-56B4OHZE.js");
359
+ const { runInit } = await import("./init-DD6DBRC5.js");
358
360
  const { preferredProvider } = await loadIssuesConfig();
359
361
  const code = await runInit(preferredProvider, {
360
362
  ...options,
@@ -376,7 +378,7 @@ withGlobalOptions(
376
378
  }
377
379
  throw error;
378
380
  }
379
- const { runGenerate } = await import("./generate-CX6KNHZS.js");
381
+ const { runGenerate } = await import("./generate-O7GUXLN4.js");
380
382
  const code = await runGenerate(options.prompt, target);
381
383
  process.exit(code);
382
384
  });
@@ -390,7 +392,7 @@ withUserStoryNumberingOptions(
390
392
  ).argument("<issues...>", 'Issue number(s): 42, "42,43" or 42 43').option("--mode <mode>", "Execution mode: auto | manual", "auto").option("--from <phase>", "Resume from a specific phase").option(
391
393
  "--no-branch",
392
394
  "Run pipeline on current branch without creating a new branch or PR"
393
- ).option("--pr-review", "Review the created Pull Request after the pr phase").option("-y, --yes", "Run the whole discovered hierarchy without confirmation").option("--cascade", "Run the children of a container, without implementing it").option("--only", "Run just the issues informed, without their hierarchy").option(
395
+ ).option("--pr-review", "Review the created Pull Request after the pr phase").option("--close-issue", "Close issues after successful delivery; remember this choice").option("--no-close-issue", "Revoke automatic issue closure").option("-y, --yes", "Run the whole discovered hierarchy without confirmation").option("--cascade", "Run the children of a container, without implementing it").option("--only", "Run just the issues informed, without their hierarchy").option(
394
396
  "--retry-limit <number>",
395
397
  "Retry transient Claude failures up to N consecutive times",
396
398
  parseInteger
@@ -419,7 +421,7 @@ withUserStoryNumberingOptions(
419
421
  }
420
422
  throw error;
421
423
  }
422
- const { runPipeline } = await import("./run-3MPORLF5.js");
424
+ const { runPipeline } = await import("./run-RLCURLLL.js");
423
425
  const code = await runPipeline(
424
426
  issues,
425
427
  options.mode,
@@ -427,6 +429,7 @@ withUserStoryNumberingOptions(
427
429
  phases.noBranch,
428
430
  phases.prReview,
429
431
  {
432
+ closeIssue: options.closeIssue,
430
433
  yes: scope.yes,
431
434
  only: scope.only,
432
435
  cascade: scope.cascade,
@@ -445,32 +448,66 @@ withUserStoryNumberingOptions(
445
448
  );
446
449
  withIssueOptions(
447
450
  withGlobalOptions(
448
- program.command("resume").description("Resume an interrupted pipeline from the phase it stopped at").argument("[issue]", "Issue to resume. Omitted: the most recently attempted one").option("--all", "Resume every unfinished issue of this project, in order").option("--mode <mode>", "Execution mode: auto | manual", "auto")
451
+ program.command("resume").description("Resume an interrupted pipeline from the phase it stopped at").argument("[issue]", "Issue to resume. Omitted: the most recently attempted one").option("--all", "Resume every unfinished issue of this project, in order").option("--close-issue", "Close issues after successful delivery; remember this choice").option("--no-close-issue", "Revoke automatic issue closure").option("--mode <mode>", "Execution mode: auto | manual", "auto")
449
452
  )
450
- ).action(async (issue, options) => {
451
- const { runResume } = await import("./resume-VLWIE264.js");
452
- const code = await runResume(issue, {
453
- ...options.all === void 0 ? {} : { all: options.all },
454
- ...options.mode === void 0 ? {} : { mode: options.mode }
453
+ ).action(
454
+ async (issue, options) => {
455
+ const { runResume } = await import("./resume-GDXKK5XP.js");
456
+ const code = await runResume(issue, {
457
+ ...options.closeIssue === void 0 ? {} : { closeIssue: options.closeIssue },
458
+ ...options.all === void 0 ? {} : { all: options.all },
459
+ ...options.mode === void 0 ? {} : { mode: options.mode }
460
+ });
461
+ process.exit(code);
462
+ }
463
+ );
464
+ var artifactsCommand = program.command("artifacts").description("Inspect local artifacts without changing files or CLI state");
465
+ if (process.argv.includes("--json")) {
466
+ artifactsCommand.configureOutput({ writeErr: () => {
467
+ } }).exitOverride((error) => {
468
+ if (error.exitCode === 0) process.exit(0);
469
+ console.log(
470
+ JSON.stringify({
471
+ schemaVersion: 1,
472
+ ok: false,
473
+ data: null,
474
+ errors: [{ code: "arguments", path: "", message: error.message }]
475
+ })
476
+ );
477
+ process.exit(1);
455
478
  });
456
- process.exit(code);
457
- });
479
+ }
480
+ for (const operation of ["plan", "issue"]) {
481
+ const command = artifactsCommand.command(operation).argument("[file]", "Artifact path");
482
+ if (operation === "issue") command.argument("[metadata]", "Optional metadata.json");
483
+ else command.option("--context", "Select current execution facts without history");
484
+ command.option("--json", "Emit a versioned JSON inspection").allowExcessArguments(false);
485
+ command.action(async (...args) => {
486
+ const file = args[0];
487
+ const metadata = operation === "issue" ? args[1] : void 0;
488
+ const options = args[operation === "issue" ? 2 : 1];
489
+ const { runArtifacts } = await import("./artifacts-AMJQJFFV.js");
490
+ process.exit(
491
+ await runArtifacts(options.context ? "context" : operation, file, metadata, options.json)
492
+ );
493
+ });
494
+ }
458
495
  withGlobalOptions(
459
496
  program.command("status").description("What is running right now, in which phase, and since when").argument("[issue]", "Restrict the report to one issue").option("--json", "Emit the assembled state as JSON")
460
497
  ).action(async (issue, options) => {
461
- const { runStatus } = await import("./operations-CAKIT2BO.js");
498
+ const { runStatus } = await import("./operations-HU5ZFEBA.js");
462
499
  process.exit(
463
500
  await runStatus(issue, { ...options.json === void 0 ? {} : { json: options.json } })
464
501
  );
465
502
  });
466
503
  withGlobalOptions(
467
- program.command("usage").description("Aggregate execution telemetry from tasks.json").argument("[issue]", "Restrict the report to one issue").option("--issue <issue>", "Same as the positional argument").option("--since <date>", "Only executions started on or after this ISO date").option("--by <key>", "Group by harness, provider, model, purpose or status").option("--json", "Emit the assembled totals as JSON")
504
+ program.command("usage").description("Aggregate execution telemetry from SQLite").argument("[issue]", "Restrict the report to one issue").option("--issue <issue>", "Same as the positional argument").option("--since <date>", "Only executions started on or after this ISO date").option("--by <key>", "Group by harness, provider, model, purpose, trigger or status").option("--json", "Emit the assembled totals as JSON")
468
505
  ).action(
469
506
  async (issue, options) => {
470
- const { runUsage, USAGE_GROUP_KEYS } = await import("./usage-U7QNGCPK.js");
507
+ const { runUsage, USAGE_GROUP_KEYS } = await import("./usage-XW27AL5K.js");
471
508
  const by = options.by;
472
509
  if (by !== void 0 && !USAGE_GROUP_KEYS.includes(by)) {
473
- printError("Must be one of: harness, provider, model, purpose, status.");
510
+ printError("Must be one of: harness, provider, model, purpose, trigger, status.");
474
511
  process.exit(1);
475
512
  }
476
513
  process.exit(
@@ -485,20 +522,51 @@ withGlobalOptions(
485
522
  withGlobalOptions(
486
523
  program.command("ps").description("Every issue-flow run active on this machine").option("--json", "Emit the listing as JSON").option("--watch", "Refresh the listing until interrupted")
487
524
  ).action(async (options) => {
488
- const { runPs } = await import("./ps-76L6ZAZL.js");
525
+ const { runPs } = await import("./ps-AKRHGPSR.js");
489
526
  process.exit(await runPs(options));
490
527
  });
528
+ var db = program.command("db").description("Inspect and maintain the Issue Flow SQLite database");
529
+ db.command("check").description("Run SQLite integrity_check").action(async () => {
530
+ const { runDbCheck } = await import("./db-5NU77PJA.js");
531
+ process.exit(await runDbCheck());
532
+ });
533
+ db.command("backup").description("Create a consistent SQLite backup").option("--destination <path>", "Where to write the backup").action(async (options) => {
534
+ const { runDbBackup } = await import("./db-5NU77PJA.js");
535
+ process.exit(await runDbBackup(options.destination));
536
+ });
537
+ db.command("vacuum").description("Rebuild the SQLite database to reclaim unused space").action(async () => {
538
+ const { runDbVacuum } = await import("./db-5NU77PJA.js");
539
+ process.exit(await runDbVacuum());
540
+ });
541
+ db.command("export").description("Export structured SQLite state as readable JSON").option("--destination <path>", "Where to write the JSON export (stdout by default)").action(async (options) => {
542
+ const { runDbExport } = await import("./db-5NU77PJA.js");
543
+ process.exit(await runDbExport(options.destination));
544
+ });
545
+ db.command("verify").description("Compare task and queue projections with canonical SQLite state").action(async () => {
546
+ const { runDbVerify } = await import("./db-5NU77PJA.js");
547
+ process.exit(await runDbVerify());
548
+ });
549
+ db.command("import").description("Import preserved compatibility artifacts").option("--with-events", "Also import the potentially large JSONL journal").action(async (options) => {
550
+ const { runDbImport } = await import("./db-5NU77PJA.js");
551
+ process.exit(await runDbImport(options));
552
+ });
491
553
  withGlobalOptions(
492
554
  program.command("runs").description("History of the runs of this project, with how each ended")
493
555
  ).action(async () => {
494
- const { runRuns } = await import("./operations-CAKIT2BO.js");
556
+ const { runRuns } = await import("./operations-HU5ZFEBA.js");
495
557
  process.exit(await runRuns());
496
558
  });
559
+ withGlobalOptions(
560
+ program.command("history").description("Relational phase, invocation and verdict history for one issue").argument("<issue>", "Issue identifier").option("--json", "Emit the complete history as JSON")
561
+ ).action(async (issue, options) => {
562
+ const { runHistory } = await import("./history-6GSURU3H.js");
563
+ process.exit(await runHistory(issue, options));
564
+ });
497
565
  withGlobalOptions(
498
566
  program.command("logs").description("Read the execution journal (events.jsonl), filtered and readable").argument("[issue]", "Issue to read. Omitted: the most recently attempted one").option("--issue <issue>", "Same as the positional argument").option("--follow", "Keep reading as the journal grows").option("--tail <n>", "How many entries to show first (default 50)", parseInteger).option("--kind <kinds>", "Only these event types, comma separated (retry, phase:end, \u2026)")
499
567
  ).action(
500
568
  async (issue, options) => {
501
- const { runLogs } = await import("./operations-CAKIT2BO.js");
569
+ const { runLogs } = await import("./operations-HU5ZFEBA.js");
502
570
  const kinds = options.kind === void 0 ? void 0 : options.kind.split(",").map((kind) => kind.trim()).filter((kind) => kind !== "");
503
571
  process.exit(
504
572
  await runLogs(issue ?? options.issue, {
@@ -512,13 +580,13 @@ withGlobalOptions(
512
580
  withGlobalOptions(
513
581
  program.command("pause").description("Ask the running pipeline to stop after writing a checkpoint")
514
582
  ).action(async () => {
515
- const { runPause } = await import("./operations-CAKIT2BO.js");
583
+ const { runPause } = await import("./operations-HU5ZFEBA.js");
516
584
  process.exit(await runPause());
517
585
  });
518
586
  withGlobalOptions(
519
587
  program.command("cancel").description("Stop the run and mark the issue so a resume does not pick it up").argument("[issue]", "Issue to cancel. Omitted: the most recently attempted one")
520
588
  ).action(async (issue) => {
521
- const { runCancel } = await import("./operations-CAKIT2BO.js");
589
+ const { runCancel } = await import("./operations-HU5ZFEBA.js");
522
590
  process.exit(await runCancel(issue));
523
591
  });
524
592
  withIssueOptions(
@@ -526,7 +594,7 @@ withIssueOptions(
526
594
  program.command("analyze").description("Analyze an issue with the configured agent").argument("<issue>", "Issue number")
527
595
  )
528
596
  ).action(async (issue) => {
529
- const { runAnalyze } = await import("./analyze-6M3KEOX7.js");
597
+ const { runAnalyze } = await import("./analyze-Z7ODC27F.js");
530
598
  const code = await runAnalyze(issue);
531
599
  process.exit(code);
532
600
  });
@@ -535,7 +603,7 @@ withIssueOptions(
535
603
  program.command("prd").description("Generate a PRD from an analyzed issue with the configured agent").argument("<issue>", "Issue number")
536
604
  )
537
605
  ).action(async (issue) => {
538
- const { runPrd } = await import("./prd-ZNC4T5BS.js");
606
+ const { runPrd } = await import("./prd-HFDZJJQR.js");
539
607
  const code = await runPrd(issue);
540
608
  process.exit(code);
541
609
  });
@@ -556,7 +624,7 @@ withUserStoryNumberingOptions(
556
624
  }
557
625
  throw error;
558
626
  }
559
- const { runPlan } = await import("./plan-PRORGS3L.js");
627
+ const { runPlan } = await import("./plan-XR6B7EM3.js");
560
628
  const code = await runPlan(issue, void 0, numbering);
561
629
  process.exit(code);
562
630
  });
@@ -575,7 +643,7 @@ withWebOptions(
575
643
  ).action(
576
644
  async (positionalMaxIter, options) => {
577
645
  try {
578
- const { runExecute } = await import("./execute-QL3ZQIAP.js");
646
+ const { runExecute } = await import("./execute-R7AVOLNG.js");
579
647
  const code = await runExecute(positionalMaxIter, options);
580
648
  process.exit(code);
581
649
  } catch (error) {
@@ -589,7 +657,7 @@ withIssueOptions(
589
657
  program.command("review").description("Validate an issue resolution with the configured agent").argument("<issue>", "Issue number")
590
658
  )
591
659
  ).action(async (issue) => {
592
- const { runReview } = await import("./review-7CREJDKB.js");
660
+ const { runReview } = await import("./review-JJHMQA2O.js");
593
661
  const code = await runReview(issue);
594
662
  process.exit(code);
595
663
  });
@@ -598,7 +666,7 @@ withIssueOptions(
598
666
  program.command("pr").description("Create a pull request with the configured agent").argument("<issue>", "Issue number")
599
667
  )
600
668
  ).action(async (issue) => {
601
- const { runPr } = await import("./pr-27RMQI5F.js");
669
+ const { runPr } = await import("./pr-OSCNJCOO.js");
602
670
  const code = await runPr(issue);
603
671
  process.exit(code);
604
672
  });
@@ -606,21 +674,21 @@ var webCommand = program.command("web").description("Manage the web monitoring s
606
674
  webCommand.command("serve").description(
607
675
  "Run the web monitor server in the foreground (internal \u2014 spawned detached by --web)"
608
676
  ).option("--port <n>", "Web server port (default: 3737)", parseInteger).option("--host <h>", "Web server host (default: 0.0.0.0)").option("--refresh <s>", "Suggested UI polling interval in seconds", parseInteger).action(async (options) => {
609
- const { runWebServe } = await import("./web-HUNDHCJ4.js");
677
+ const { runWebServe } = await import("./web-NCDBVZ5Y.js");
610
678
  const code = await runWebServe(options);
611
679
  if (code !== 0) {
612
680
  process.exit(code);
613
681
  }
614
682
  });
615
683
  webCommand.command("stop").description("Stop the running web monitor server").action(async () => {
616
- const { runWebStop } = await import("./web-HUNDHCJ4.js");
684
+ const { runWebStop } = await import("./web-NCDBVZ5Y.js");
617
685
  const code = await runWebStop();
618
686
  process.exit(code);
619
687
  });
620
688
  withGlobalOptions(
621
689
  program.command("policy").description("Inspect the policies discovered in this repository and their provenance").option("--scope <dir>", "Resolve the policy for a subdirectory (monorepo)").option("--json", "Emit the resolved policy as JSON")
622
690
  ).action(async (options) => {
623
- const { runPolicy } = await import("./policy-WX6O2JID.js");
691
+ const { runPolicy } = await import("./policy-RFJOJQL6.js");
624
692
  const code = await runPolicy(options);
625
693
  process.exit(code);
626
694
  });
@@ -628,49 +696,49 @@ var routingCommand = withGlobalOptions(
628
696
  program.command("routing").description("Inspect and configure adaptive harness/model routing")
629
697
  );
630
698
  routingCommand.option("--json", "Emit the resolved routing config as JSON").action(async (_options, command) => {
631
- const { runRoutingInspect } = await import("./routing-VCDYHSXA.js");
699
+ const { runRoutingInspect } = await import("./routing-FPNUVE7T.js");
632
700
  process.exit(await runRoutingInspect(command.opts()));
633
701
  });
634
702
  routingCommand.command("explain").description("Explain the resolved routing target for every phase").option("--json", "Emit JSON").action(async (_options, command) => {
635
- const { runRoutingExplain } = await import("./routing-VCDYHSXA.js");
703
+ const { runRoutingExplain } = await import("./routing-FPNUVE7T.js");
636
704
  process.exit(await runRoutingExplain(command.optsWithGlobals()));
637
705
  });
638
- routingCommand.command("use").description("Enable an embedded routing policy").argument("<policy>", "Policy name (recommended)").option("--global", "Write ~/.issue-flow/config.json (default)").option("--project", "Write .issue-flow.json instead").action(async (policy, _options, command) => {
639
- const { runRoutingUse } = await import("./routing-VCDYHSXA.js");
706
+ routingCommand.command("use").description("Enable an embedded routing policy").argument("<policy>", "Policy name (recommended)").option("--global", "Write ~/.issue-flow/config.json (default)").option("--project", "Write .issue-flow.json instead").option("--active", "Apply the policy to future runs instead of leaving routing in shadow mode").action(async (policy, _options, command) => {
707
+ const { runRoutingUse } = await import("./routing-FPNUVE7T.js");
640
708
  process.exit(await runRoutingUse(policy, command.optsWithGlobals()));
641
709
  });
642
710
  routingCommand.command("report").description("Shadow agreement between selected and actual harness").option("--issue <n>", "Issue number").option("--json", "Emit JSON").action(async (_options, command) => {
643
- const { runRoutingReport } = await import("./routing-VCDYHSXA.js");
711
+ const { runRoutingReport } = await import("./routing-FPNUVE7T.js");
644
712
  process.exit(await runRoutingReport(command.optsWithGlobals()));
645
713
  });
646
714
  var conventionsCommand = withGlobalOptions(
647
715
  program.command("conventions").description("Compute the repository Git convention (branch, commit, PR title)")
648
716
  );
649
717
  conventionsCommand.command("branch").description("Print the deterministic branch name for an issue").option("--issue <n>", "Issue number").option("--title <text>", "Issue title, when the issue cannot be resolved").option("--json", "Emit JSON").action(async (options) => {
650
- const { runConventionsBranch } = await import("./conventions-RYN7OXJN.js");
718
+ const { runConventionsBranch } = await import("./conventions-DW2CM5I3.js");
651
719
  process.exit(await runConventionsBranch(options));
652
720
  });
653
721
  conventionsCommand.command("commit").description("Print a Conventional Commit message").requiredOption("--type <type>", "Change type (feat, fix, docs, \u2026)").option("--scope <scope>", "Optional scope").requiredOption("--subject <text>", "Commit subject").option("--issue <n>", "Issue number for the Refs trailer").option("--story <id>", "Story id (US-010)").option("--breaking <text>", "Breaking change description").option("--json", "Emit JSON").action(
654
722
  async (options) => {
655
- const { runConventionsCommit } = await import("./conventions-RYN7OXJN.js");
723
+ const { runConventionsCommit } = await import("./conventions-DW2CM5I3.js");
656
724
  process.exit(await runConventionsCommit(options));
657
725
  }
658
726
  );
659
727
  conventionsCommand.command("pr-title").description("Print the Conventional Commit Pull Request title").option("--issue <n>", "Issue number").option("--title <text>", "Issue title, when the issue cannot be resolved").option("--json", "Emit JSON").action(async (options) => {
660
- const { runConventionsPrTitle } = await import("./conventions-RYN7OXJN.js");
728
+ const { runConventionsPrTitle } = await import("./conventions-DW2CM5I3.js");
661
729
  process.exit(await runConventionsPrTitle(options));
662
730
  });
663
731
  var agentCommand = withGlobalOptions(
664
732
  program.command("agent").description("Inspect the resolved agent and model for each phase").option("--json", "Emit the resolved agent configuration as JSON")
665
733
  );
666
734
  agentCommand.action(async (options) => {
667
- const { runAgent } = await import("./agent-TB6W7PT7.js");
735
+ const { runAgent } = await import("./agent-EWKA7357.js");
668
736
  const code = await runAgent(options);
669
737
  process.exit(code);
670
738
  });
671
739
  agentCommand.command("use").description("Write an agent preference to config.json or .issue-flow.json").argument("<provider>", "claude, codex, cursor or antigravity").option("--model <model>", "Model identifier for this preference").option("--global", "Write to ~/.issue-flow/config.json (default)").option("--project", "Write to .issue-flow.json in the repository").option("--phase <phase>", "Write only the override for this phase").action(
672
740
  async (provider, options) => {
673
- const { runAgentUse } = await import("./agent-TB6W7PT7.js");
741
+ const { runAgentUse } = await import("./agent-EWKA7357.js");
674
742
  const code = await runAgentUse(provider, options);
675
743
  process.exit(code);
676
744
  }
@@ -682,7 +750,7 @@ withGlobalOptions(
682
750
  )
683
751
  ).action(
684
752
  async (pr, options) => {
685
- const { runPrReview } = await import("./pr-review-VNESMAMT.js");
753
+ const { runPrReview } = await import("./pr-review-IKIYHFBO.js");
686
754
  const code = await runPrReview(pr, options);
687
755
  process.exit(code);
688
756
  }
@@ -708,7 +776,7 @@ withGlobalOptions(
708
776
  printError("Unknown bench mode. Use 'synthetic' or 'real'.");
709
777
  process.exit(1);
710
778
  }
711
- const { runBench } = await import("./bench-FM7I7EIV.js");
779
+ const { runBench } = await import("./bench-ZJEIACUK.js");
712
780
  process.exit(
713
781
  await runBench({
714
782
  ...options.mode === void 0 ? {} : { mode: options.mode },
@@ -726,13 +794,13 @@ withGlobalOptions(
726
794
  }
727
795
  );
728
796
  program.action(async () => {
729
- const { listLiveRuns } = await import("./registry-XLHHYLTR.js");
797
+ const { listLiveRuns } = await import("./registry-DWRKD65A.js");
730
798
  const runs = await listLiveRuns();
731
799
  if (runs.length === 0) {
732
800
  program.help();
733
801
  return;
734
802
  }
735
- const { runPs } = await import("./ps-76L6ZAZL.js");
803
+ const { runPs } = await import("./ps-AKRHGPSR.js");
736
804
  process.exit(await runPs());
737
805
  });
738
806
  program.parse();