issue-flow 0.19.1 → 0.20.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 (156) hide show
  1. package/README.md +12 -0
  2. package/dist/{agent-EWKA7357.js → agent-4DHRKZ2Z.js} +11 -11
  3. package/dist/{analyze-Z7ODC27F.js → analyze-UEJ2R3H5.js} +19 -19
  4. package/dist/{apply-VNSWQS6O.js → apply-QDYNQMUX.js} +11 -11
  5. package/dist/{bench-ZJEIACUK.js → bench-RNRXVEFK.js} +16 -16
  6. package/dist/{chunk-2EZW4X57.js → chunk-37O2FMAN.js} +8 -8
  7. package/dist/{chunk-IMB6FA2F.js → chunk-44RF3VFG.js} +48 -4
  8. package/dist/chunk-44RF3VFG.js.map +1 -0
  9. package/dist/{chunk-WPHC6JBR.js → chunk-7WBUEBD5.js} +4 -4
  10. package/dist/{chunk-KDQRNVBZ.js → chunk-ADH6RJNX.js} +3 -3
  11. package/dist/{chunk-HHXWAWU6.js → chunk-AKL5UPR6.js} +11 -11
  12. package/dist/{chunk-XKR3VD2Z.js → chunk-BTBJ5UOO.js} +3 -3
  13. package/dist/{chunk-UDRAD7MF.js → chunk-CLZ6RRZL.js} +7 -7
  14. package/dist/{chunk-J6VJ5M2U.js → chunk-DBLXLKGU.js} +7 -7
  15. package/dist/{chunk-3JD25HHJ.js → chunk-DZ3DZ3EN.js} +5 -5
  16. package/dist/{chunk-P7ZYOC23.js → chunk-EORDSKWZ.js} +7 -7
  17. package/dist/chunk-EORDSKWZ.js.map +1 -0
  18. package/dist/{chunk-XQLNZW7I.js → chunk-EYKPWHT7.js} +9 -9
  19. package/dist/{chunk-2YYP7AE6.js → chunk-FU2FQ4JE.js} +10 -10
  20. package/dist/{chunk-RGFMQFX7.js → chunk-G442RDFX.js} +5 -5
  21. package/dist/{chunk-7CMVL4X6.js → chunk-I64N6RL6.js} +2 -2
  22. package/dist/{chunk-XHCP6ZNO.js → chunk-JBYXJOJJ.js} +11 -11
  23. package/dist/{chunk-GD7JZMSJ.js → chunk-JCR5C5A7.js} +2 -2
  24. package/dist/{chunk-UPAAZU4W.js → chunk-K5NM26NV.js} +2 -2
  25. package/dist/{chunk-TJVX42KY.js → chunk-KUA6KBBD.js} +2 -2
  26. package/dist/{chunk-WB2FVIUS.js → chunk-KUL64XUF.js} +5 -5
  27. package/dist/{chunk-DXH4TQRB.js → chunk-MML2G7IC.js} +2 -2
  28. package/dist/{chunk-IQYXXFRC.js → chunk-PM5YWJYO.js} +5 -5
  29. package/dist/chunk-PM5YWJYO.js.map +1 -0
  30. package/dist/{chunk-HWWB22HC.js → chunk-PXPTIXJF.js} +9 -8
  31. package/dist/chunk-PXPTIXJF.js.map +1 -0
  32. package/dist/{chunk-MHA7Q3KU.js → chunk-QJHZ3HYJ.js} +24 -24
  33. package/dist/{chunk-LYC57OXF.js → chunk-RDPK7LYK.js} +4 -4
  34. package/dist/{chunk-46S7APLQ.js → chunk-RMIBLFG3.js} +9 -9
  35. package/dist/{chunk-ZAYATXJD.js → chunk-T736DSZI.js} +5 -5
  36. package/dist/{chunk-MQTVMB7W.js → chunk-UDUUUFQF.js} +35 -12
  37. package/dist/chunk-UDUUUFQF.js.map +1 -0
  38. package/dist/{chunk-PHPAK2L6.js → chunk-V7GETODQ.js} +18 -12
  39. package/dist/{chunk-PHPAK2L6.js.map → chunk-V7GETODQ.js.map} +1 -1
  40. package/dist/{chunk-PRGPSNGA.js → chunk-VHQMMY2D.js} +2 -2
  41. package/dist/{chunk-F2NFJ27Z.js → chunk-VJ3PF6B7.js} +50 -16
  42. package/dist/chunk-VJ3PF6B7.js.map +1 -0
  43. package/dist/{chunk-HEHHQU4G.js → chunk-WB4FA2EH.js} +6 -6
  44. package/dist/{chunk-2Q6PG3MT.js → chunk-WQSGL5LX.js} +11 -5
  45. package/dist/chunk-WQSGL5LX.js.map +1 -0
  46. package/dist/{chunk-LRWIP7QS.js → chunk-Y2KOWABB.js} +3 -3
  47. package/dist/{chunk-UHDXXLYH.js → chunk-YC24E66P.js} +538 -40
  48. package/dist/chunk-YC24E66P.js.map +1 -0
  49. package/dist/{chunk-NYDAHE3Y.js → chunk-Z6RCKCVB.js} +8 -8
  50. package/dist/{chunk-ERAG5IQB.js → chunk-ZPGNVBWY.js} +3 -3
  51. package/dist/cli.js +55 -53
  52. package/dist/cli.js.map +1 -1
  53. package/dist/{compat-YPDZB34U.js → compat-OJG76J4I.js} +5 -5
  54. package/dist/{config-56B4OHZE.js → config-6YTWPDBK.js} +10 -10
  55. package/dist/{conventions-DW2CM5I3.js → conventions-5UPOTU42.js} +13 -13
  56. package/dist/{db-5NU77PJA.js → db-QAZG4LQD.js} +9 -9
  57. package/dist/{diagnostics-UCTS2VUF.js → diagnostics-YEFB42E5.js} +6 -6
  58. package/dist/execute-QCT64D37.js +38 -0
  59. package/dist/{generate-O7GUXLN4.js → generate-QATMDKOK.js} +17 -17
  60. package/dist/{git-LCG45YXD.js → git-XGOECXWG.js} +2 -2
  61. package/dist/{history-6GSURU3H.js → history-NBPUZVGQ.js} +9 -9
  62. package/dist/{init-DD6DBRC5.js → init-4LB2YKWP.js} +11 -11
  63. package/dist/{operations-HU5ZFEBA.js → operations-RUQP2Y2F.js} +11 -11
  64. package/dist/{permissions-NNNSRC4P.js → permissions-QZPUUBSO.js} +3 -3
  65. package/dist/plan-2NMSHTMD.js +38 -0
  66. package/dist/{policy-RFJOJQL6.js → policy-RKKFF5A2.js} +11 -11
  67. package/dist/pr-QKFO5HI3.js +42 -0
  68. package/dist/pr-review-H2BFD6F2.js +33 -0
  69. package/dist/prd-ET6XKYRS.js +37 -0
  70. package/dist/{ps-AKRHGPSR.js → ps-UIKSOUAQ.js} +10 -10
  71. package/dist/{recorder-T7426CKV.js → recorder-LOU3PTIE.js} +6 -6
  72. package/dist/{registry-DWRKD65A.js → registry-HV7M6MAH.js} +4 -4
  73. package/dist/{repository-TABBRW2C.js → repository-RCRR6RDE.js} +2 -2
  74. package/dist/{resume-GDXKK5XP.js → resume-BWJZGBLZ.js} +36 -36
  75. package/dist/review-2MTZLNSS.js +38 -0
  76. package/dist/{routing-FPNUVE7T.js → routing-RM5ABHHD.js} +12 -12
  77. package/dist/run-XMACQBRJ.js +61 -0
  78. package/dist/{state-manager-IGNTD4AB.js → state-manager-SRN4VJSX.js} +4 -4
  79. package/dist/{usage-XW27AL5K.js → usage-JOODVE5O.js} +9 -9
  80. package/dist/{web-NCDBVZ5Y.js → web-TLMWJ2BM.js} +15 -15
  81. package/package.json +3 -2
  82. package/web/public/app.js +2 -2
  83. package/dist/chunk-2Q6PG3MT.js.map +0 -1
  84. package/dist/chunk-F2NFJ27Z.js.map +0 -1
  85. package/dist/chunk-HWWB22HC.js.map +0 -1
  86. package/dist/chunk-IMB6FA2F.js.map +0 -1
  87. package/dist/chunk-IQYXXFRC.js.map +0 -1
  88. package/dist/chunk-MQTVMB7W.js.map +0 -1
  89. package/dist/chunk-P7ZYOC23.js.map +0 -1
  90. package/dist/chunk-UHDXXLYH.js.map +0 -1
  91. package/dist/execute-R7AVOLNG.js +0 -38
  92. package/dist/plan-XR6B7EM3.js +0 -38
  93. package/dist/pr-OSCNJCOO.js +0 -42
  94. package/dist/pr-review-IKIYHFBO.js +0 -33
  95. package/dist/prd-HFDZJJQR.js +0 -37
  96. package/dist/review-JJHMQA2O.js +0 -38
  97. package/dist/run-RLCURLLL.js +0 -61
  98. /package/dist/{agent-EWKA7357.js.map → agent-4DHRKZ2Z.js.map} +0 -0
  99. /package/dist/{analyze-Z7ODC27F.js.map → analyze-UEJ2R3H5.js.map} +0 -0
  100. /package/dist/{apply-VNSWQS6O.js.map → apply-QDYNQMUX.js.map} +0 -0
  101. /package/dist/{bench-ZJEIACUK.js.map → bench-RNRXVEFK.js.map} +0 -0
  102. /package/dist/{chunk-2EZW4X57.js.map → chunk-37O2FMAN.js.map} +0 -0
  103. /package/dist/{chunk-WPHC6JBR.js.map → chunk-7WBUEBD5.js.map} +0 -0
  104. /package/dist/{chunk-KDQRNVBZ.js.map → chunk-ADH6RJNX.js.map} +0 -0
  105. /package/dist/{chunk-HHXWAWU6.js.map → chunk-AKL5UPR6.js.map} +0 -0
  106. /package/dist/{chunk-XKR3VD2Z.js.map → chunk-BTBJ5UOO.js.map} +0 -0
  107. /package/dist/{chunk-UDRAD7MF.js.map → chunk-CLZ6RRZL.js.map} +0 -0
  108. /package/dist/{chunk-J6VJ5M2U.js.map → chunk-DBLXLKGU.js.map} +0 -0
  109. /package/dist/{chunk-3JD25HHJ.js.map → chunk-DZ3DZ3EN.js.map} +0 -0
  110. /package/dist/{chunk-XQLNZW7I.js.map → chunk-EYKPWHT7.js.map} +0 -0
  111. /package/dist/{chunk-2YYP7AE6.js.map → chunk-FU2FQ4JE.js.map} +0 -0
  112. /package/dist/{chunk-RGFMQFX7.js.map → chunk-G442RDFX.js.map} +0 -0
  113. /package/dist/{chunk-7CMVL4X6.js.map → chunk-I64N6RL6.js.map} +0 -0
  114. /package/dist/{chunk-XHCP6ZNO.js.map → chunk-JBYXJOJJ.js.map} +0 -0
  115. /package/dist/{chunk-GD7JZMSJ.js.map → chunk-JCR5C5A7.js.map} +0 -0
  116. /package/dist/{chunk-UPAAZU4W.js.map → chunk-K5NM26NV.js.map} +0 -0
  117. /package/dist/{chunk-TJVX42KY.js.map → chunk-KUA6KBBD.js.map} +0 -0
  118. /package/dist/{chunk-WB2FVIUS.js.map → chunk-KUL64XUF.js.map} +0 -0
  119. /package/dist/{chunk-DXH4TQRB.js.map → chunk-MML2G7IC.js.map} +0 -0
  120. /package/dist/{chunk-MHA7Q3KU.js.map → chunk-QJHZ3HYJ.js.map} +0 -0
  121. /package/dist/{chunk-LYC57OXF.js.map → chunk-RDPK7LYK.js.map} +0 -0
  122. /package/dist/{chunk-46S7APLQ.js.map → chunk-RMIBLFG3.js.map} +0 -0
  123. /package/dist/{chunk-ZAYATXJD.js.map → chunk-T736DSZI.js.map} +0 -0
  124. /package/dist/{chunk-PRGPSNGA.js.map → chunk-VHQMMY2D.js.map} +0 -0
  125. /package/dist/{chunk-HEHHQU4G.js.map → chunk-WB4FA2EH.js.map} +0 -0
  126. /package/dist/{chunk-LRWIP7QS.js.map → chunk-Y2KOWABB.js.map} +0 -0
  127. /package/dist/{chunk-NYDAHE3Y.js.map → chunk-Z6RCKCVB.js.map} +0 -0
  128. /package/dist/{chunk-ERAG5IQB.js.map → chunk-ZPGNVBWY.js.map} +0 -0
  129. /package/dist/{compat-YPDZB34U.js.map → compat-OJG76J4I.js.map} +0 -0
  130. /package/dist/{config-56B4OHZE.js.map → config-6YTWPDBK.js.map} +0 -0
  131. /package/dist/{conventions-DW2CM5I3.js.map → conventions-5UPOTU42.js.map} +0 -0
  132. /package/dist/{db-5NU77PJA.js.map → db-QAZG4LQD.js.map} +0 -0
  133. /package/dist/{diagnostics-UCTS2VUF.js.map → diagnostics-YEFB42E5.js.map} +0 -0
  134. /package/dist/{execute-R7AVOLNG.js.map → execute-QCT64D37.js.map} +0 -0
  135. /package/dist/{generate-O7GUXLN4.js.map → generate-QATMDKOK.js.map} +0 -0
  136. /package/dist/{git-LCG45YXD.js.map → git-XGOECXWG.js.map} +0 -0
  137. /package/dist/{history-6GSURU3H.js.map → history-NBPUZVGQ.js.map} +0 -0
  138. /package/dist/{init-DD6DBRC5.js.map → init-4LB2YKWP.js.map} +0 -0
  139. /package/dist/{operations-HU5ZFEBA.js.map → operations-RUQP2Y2F.js.map} +0 -0
  140. /package/dist/{permissions-NNNSRC4P.js.map → permissions-QZPUUBSO.js.map} +0 -0
  141. /package/dist/{plan-XR6B7EM3.js.map → plan-2NMSHTMD.js.map} +0 -0
  142. /package/dist/{policy-RFJOJQL6.js.map → policy-RKKFF5A2.js.map} +0 -0
  143. /package/dist/{pr-OSCNJCOO.js.map → pr-QKFO5HI3.js.map} +0 -0
  144. /package/dist/{pr-review-IKIYHFBO.js.map → pr-review-H2BFD6F2.js.map} +0 -0
  145. /package/dist/{prd-HFDZJJQR.js.map → prd-ET6XKYRS.js.map} +0 -0
  146. /package/dist/{ps-AKRHGPSR.js.map → ps-UIKSOUAQ.js.map} +0 -0
  147. /package/dist/{recorder-T7426CKV.js.map → recorder-LOU3PTIE.js.map} +0 -0
  148. /package/dist/{registry-DWRKD65A.js.map → registry-HV7M6MAH.js.map} +0 -0
  149. /package/dist/{repository-TABBRW2C.js.map → repository-RCRR6RDE.js.map} +0 -0
  150. /package/dist/{resume-GDXKK5XP.js.map → resume-BWJZGBLZ.js.map} +0 -0
  151. /package/dist/{review-JJHMQA2O.js.map → review-2MTZLNSS.js.map} +0 -0
  152. /package/dist/{routing-FPNUVE7T.js.map → routing-RM5ABHHD.js.map} +0 -0
  153. /package/dist/{run-RLCURLLL.js.map → run-XMACQBRJ.js.map} +0 -0
  154. /package/dist/{state-manager-IGNTD4AB.js.map → state-manager-SRN4VJSX.js.map} +0 -0
  155. /package/dist/{usage-XW27AL5K.js.map → usage-JOODVE5O.js.map} +0 -0
  156. /package/dist/{web-NCDBVZ5Y.js.map → web-TLMWJ2BM.js.map} +0 -0
@@ -3,34 +3,34 @@ import {
3
3
  applyAcceptanceToPlan,
4
4
  formatVerificationLine,
5
5
  runAcceptanceGate
6
- } from "./chunk-IQYXXFRC.js";
6
+ } from "./chunk-PM5YWJYO.js";
7
7
  import {
8
8
  issuePlaceholders,
9
9
  resolveCommandIssue
10
- } from "./chunk-WPHC6JBR.js";
10
+ } from "./chunk-7WBUEBD5.js";
11
11
  import {
12
12
  publishPhaseMetrics,
13
13
  resolvePolicyPlaceholders
14
- } from "./chunk-WB2FVIUS.js";
14
+ } from "./chunk-KUL64XUF.js";
15
15
  import {
16
16
  applyPlaceholders,
17
17
  loadPrompt
18
- } from "./chunk-XKR3VD2Z.js";
18
+ } from "./chunk-BTBJ5UOO.js";
19
19
  import {
20
20
  DEFAULT_HEADLESS_TIMEOUT_MS,
21
21
  runHeadless
22
- } from "./chunk-MQTVMB7W.js";
22
+ } from "./chunk-UDUUUFQF.js";
23
23
  import {
24
24
  getGlobalTimeout,
25
25
  printError,
26
26
  printSuccess,
27
27
  printWarning,
28
28
  resolveIssuePaths
29
- } from "./chunk-J6VJ5M2U.js";
29
+ } from "./chunk-DBLXLKGU.js";
30
30
  import {
31
31
  loadTaskPlan,
32
32
  saveTaskPlan
33
- } from "./chunk-GD7JZMSJ.js";
33
+ } from "./chunk-JCR5C5A7.js";
34
34
 
35
35
  // src/verify/review-result.ts
36
36
  function parseIssueReviewResult(output) {
@@ -169,4 +169,4 @@ async function runReview(issue, resolvedIssue) {
169
169
  export {
170
170
  runReview
171
171
  };
172
- //# sourceMappingURL=chunk-NYDAHE3Y.js.map
172
+ //# sourceMappingURL=chunk-Z6RCKCVB.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-DIMDAYZS.js";
5
5
  import {
6
6
  isoNow
7
- } from "./chunk-GD7JZMSJ.js";
7
+ } from "./chunk-JCR5C5A7.js";
8
8
  import {
9
9
  getBaseBranch,
10
10
  getCommitsSince,
@@ -15,7 +15,7 @@ import {
15
15
  normalizeRemoteUrl,
16
16
  run,
17
17
  stripRemoteUrlCredentials
18
- } from "./chunk-TJVX42KY.js";
18
+ } from "./chunk-KUA6KBBD.js";
19
19
 
20
20
  // src/core/session-git.ts
21
21
  async function listPullRequests(branch, options = {}) {
@@ -112,4 +112,4 @@ export {
112
112
  listPullRequests,
113
113
  publishGitState
114
114
  };
115
- //# sourceMappingURL=chunk-ERAG5IQB.js.map
115
+ //# sourceMappingURL=chunk-ZPGNVBWY.js.map
package/dist/cli.js CHANGED
@@ -12,28 +12,28 @@ import {
12
12
  setRoutingCliOverrides,
13
13
  setVerifyCliOverrides,
14
14
  setWebCliOverrides
15
- } from "./chunk-UHDXXLYH.js";
15
+ } from "./chunk-YC24E66P.js";
16
16
  import {
17
17
  printError,
18
18
  setGlobalTimeout,
19
19
  setInactivityTimeout,
20
20
  setVerbose
21
- } from "./chunk-J6VJ5M2U.js";
22
- import "./chunk-7CMVL4X6.js";
21
+ } from "./chunk-DBLXLKGU.js";
22
+ import "./chunk-I64N6RL6.js";
23
23
  import "./chunk-DIMDAYZS.js";
24
- import "./chunk-HEHHQU4G.js";
25
- import "./chunk-PRGPSNGA.js";
24
+ import "./chunk-WB4FA2EH.js";
25
+ import "./chunk-VHQMMY2D.js";
26
26
  import "./chunk-P3LRUNC6.js";
27
- import "./chunk-LYC57OXF.js";
28
- import "./chunk-GD7JZMSJ.js";
27
+ import "./chunk-RDPK7LYK.js";
28
+ import "./chunk-JCR5C5A7.js";
29
29
  import "./chunk-NP47HRX2.js";
30
30
  import {
31
31
  isAgentProviderId
32
- } from "./chunk-IMB6FA2F.js";
32
+ } from "./chunk-44RF3VFG.js";
33
33
  import "./chunk-7MJGYPHF.js";
34
34
  import "./chunk-XNK5UN2D.js";
35
35
  import "./chunk-MAJ6QDRL.js";
36
- import "./chunk-TJVX42KY.js";
36
+ import "./chunk-KUA6KBBD.js";
37
37
  import "./chunk-PFWHHYEO.js";
38
38
 
39
39
  // src/cli.ts
@@ -230,7 +230,7 @@ function withGlobalOptions(cmd) {
230
230
  parseInteger
231
231
  ).option(
232
232
  "--agent <provider>",
233
- "Run every phase on this agent (claude|codex|cursor|antigravity)"
233
+ "Run every phase on this agent (claude|codex|cursor|antigravity|opencode)"
234
234
  ).option("--agent-model <model>", "Override the model for every phase").option(
235
235
  "--agent-phase <phase>=<provider>[:<model>]",
236
236
  "Override one phase (repeatable)",
@@ -246,7 +246,9 @@ function resolveAgentOverrides(opts) {
246
246
  const overrides = {};
247
247
  if (typeof opts.agent === "string") {
248
248
  if (!isAgentProviderId(opts.agent)) {
249
- throw new InvalidArgumentError("Must be one of: claude, codex, cursor, antigravity.");
249
+ throw new InvalidArgumentError(
250
+ "Must be one of: claude, codex, cursor, antigravity, opencode."
251
+ );
250
252
  }
251
253
  overrides.forceProvider = opts.agent;
252
254
  }
@@ -355,8 +357,8 @@ withIssueOptions(
355
357
  )
356
358
  ).action(
357
359
  async (options) => {
358
- const { loadIssuesConfig } = await import("./config-56B4OHZE.js");
359
- const { runInit } = await import("./init-DD6DBRC5.js");
360
+ const { loadIssuesConfig } = await import("./config-6YTWPDBK.js");
361
+ const { runInit } = await import("./init-4LB2YKWP.js");
360
362
  const { preferredProvider } = await loadIssuesConfig();
361
363
  const code = await runInit(preferredProvider, {
362
364
  ...options,
@@ -378,7 +380,7 @@ withGlobalOptions(
378
380
  }
379
381
  throw error;
380
382
  }
381
- const { runGenerate } = await import("./generate-O7GUXLN4.js");
383
+ const { runGenerate } = await import("./generate-QATMDKOK.js");
382
384
  const code = await runGenerate(options.prompt, target);
383
385
  process.exit(code);
384
386
  });
@@ -421,7 +423,7 @@ withUserStoryNumberingOptions(
421
423
  }
422
424
  throw error;
423
425
  }
424
- const { runPipeline } = await import("./run-RLCURLLL.js");
426
+ const { runPipeline } = await import("./run-XMACQBRJ.js");
425
427
  const code = await runPipeline(
426
428
  issues,
427
429
  options.mode,
@@ -452,7 +454,7 @@ withIssueOptions(
452
454
  )
453
455
  ).action(
454
456
  async (issue, options) => {
455
- const { runResume } = await import("./resume-GDXKK5XP.js");
457
+ const { runResume } = await import("./resume-BWJZGBLZ.js");
456
458
  const code = await runResume(issue, {
457
459
  ...options.closeIssue === void 0 ? {} : { closeIssue: options.closeIssue },
458
460
  ...options.all === void 0 ? {} : { all: options.all },
@@ -495,7 +497,7 @@ for (const operation of ["plan", "issue"]) {
495
497
  withGlobalOptions(
496
498
  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")
497
499
  ).action(async (issue, options) => {
498
- const { runStatus } = await import("./operations-HU5ZFEBA.js");
500
+ const { runStatus } = await import("./operations-RUQP2Y2F.js");
499
501
  process.exit(
500
502
  await runStatus(issue, { ...options.json === void 0 ? {} : { json: options.json } })
501
503
  );
@@ -504,7 +506,7 @@ withGlobalOptions(
504
506
  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")
505
507
  ).action(
506
508
  async (issue, options) => {
507
- const { runUsage, USAGE_GROUP_KEYS } = await import("./usage-XW27AL5K.js");
509
+ const { runUsage, USAGE_GROUP_KEYS } = await import("./usage-JOODVE5O.js");
508
510
  const by = options.by;
509
511
  if (by !== void 0 && !USAGE_GROUP_KEYS.includes(by)) {
510
512
  printError("Must be one of: harness, provider, model, purpose, trigger, status.");
@@ -522,51 +524,51 @@ withGlobalOptions(
522
524
  withGlobalOptions(
523
525
  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")
524
526
  ).action(async (options) => {
525
- const { runPs } = await import("./ps-AKRHGPSR.js");
527
+ const { runPs } = await import("./ps-UIKSOUAQ.js");
526
528
  process.exit(await runPs(options));
527
529
  });
528
530
  var db = program.command("db").description("Inspect and maintain the Issue Flow SQLite database");
529
531
  db.command("check").description("Run SQLite integrity_check").action(async () => {
530
- const { runDbCheck } = await import("./db-5NU77PJA.js");
532
+ const { runDbCheck } = await import("./db-QAZG4LQD.js");
531
533
  process.exit(await runDbCheck());
532
534
  });
533
535
  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");
536
+ const { runDbBackup } = await import("./db-QAZG4LQD.js");
535
537
  process.exit(await runDbBackup(options.destination));
536
538
  });
537
539
  db.command("vacuum").description("Rebuild the SQLite database to reclaim unused space").action(async () => {
538
- const { runDbVacuum } = await import("./db-5NU77PJA.js");
540
+ const { runDbVacuum } = await import("./db-QAZG4LQD.js");
539
541
  process.exit(await runDbVacuum());
540
542
  });
541
543
  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");
544
+ const { runDbExport } = await import("./db-QAZG4LQD.js");
543
545
  process.exit(await runDbExport(options.destination));
544
546
  });
545
547
  db.command("verify").description("Compare task and queue projections with canonical SQLite state").action(async () => {
546
- const { runDbVerify } = await import("./db-5NU77PJA.js");
548
+ const { runDbVerify } = await import("./db-QAZG4LQD.js");
547
549
  process.exit(await runDbVerify());
548
550
  });
549
551
  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");
552
+ const { runDbImport } = await import("./db-QAZG4LQD.js");
551
553
  process.exit(await runDbImport(options));
552
554
  });
553
555
  withGlobalOptions(
554
556
  program.command("runs").description("History of the runs of this project, with how each ended")
555
557
  ).action(async () => {
556
- const { runRuns } = await import("./operations-HU5ZFEBA.js");
558
+ const { runRuns } = await import("./operations-RUQP2Y2F.js");
557
559
  process.exit(await runRuns());
558
560
  });
559
561
  withGlobalOptions(
560
562
  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
563
  ).action(async (issue, options) => {
562
- const { runHistory } = await import("./history-6GSURU3H.js");
564
+ const { runHistory } = await import("./history-NBPUZVGQ.js");
563
565
  process.exit(await runHistory(issue, options));
564
566
  });
565
567
  withGlobalOptions(
566
568
  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)")
567
569
  ).action(
568
570
  async (issue, options) => {
569
- const { runLogs } = await import("./operations-HU5ZFEBA.js");
571
+ const { runLogs } = await import("./operations-RUQP2Y2F.js");
570
572
  const kinds = options.kind === void 0 ? void 0 : options.kind.split(",").map((kind) => kind.trim()).filter((kind) => kind !== "");
571
573
  process.exit(
572
574
  await runLogs(issue ?? options.issue, {
@@ -580,13 +582,13 @@ withGlobalOptions(
580
582
  withGlobalOptions(
581
583
  program.command("pause").description("Ask the running pipeline to stop after writing a checkpoint")
582
584
  ).action(async () => {
583
- const { runPause } = await import("./operations-HU5ZFEBA.js");
585
+ const { runPause } = await import("./operations-RUQP2Y2F.js");
584
586
  process.exit(await runPause());
585
587
  });
586
588
  withGlobalOptions(
587
589
  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")
588
590
  ).action(async (issue) => {
589
- const { runCancel } = await import("./operations-HU5ZFEBA.js");
591
+ const { runCancel } = await import("./operations-RUQP2Y2F.js");
590
592
  process.exit(await runCancel(issue));
591
593
  });
592
594
  withIssueOptions(
@@ -594,7 +596,7 @@ withIssueOptions(
594
596
  program.command("analyze").description("Analyze an issue with the configured agent").argument("<issue>", "Issue number")
595
597
  )
596
598
  ).action(async (issue) => {
597
- const { runAnalyze } = await import("./analyze-Z7ODC27F.js");
599
+ const { runAnalyze } = await import("./analyze-UEJ2R3H5.js");
598
600
  const code = await runAnalyze(issue);
599
601
  process.exit(code);
600
602
  });
@@ -603,7 +605,7 @@ withIssueOptions(
603
605
  program.command("prd").description("Generate a PRD from an analyzed issue with the configured agent").argument("<issue>", "Issue number")
604
606
  )
605
607
  ).action(async (issue) => {
606
- const { runPrd } = await import("./prd-HFDZJJQR.js");
608
+ const { runPrd } = await import("./prd-ET6XKYRS.js");
607
609
  const code = await runPrd(issue);
608
610
  process.exit(code);
609
611
  });
@@ -624,7 +626,7 @@ withUserStoryNumberingOptions(
624
626
  }
625
627
  throw error;
626
628
  }
627
- const { runPlan } = await import("./plan-XR6B7EM3.js");
629
+ const { runPlan } = await import("./plan-2NMSHTMD.js");
628
630
  const code = await runPlan(issue, void 0, numbering);
629
631
  process.exit(code);
630
632
  });
@@ -643,7 +645,7 @@ withWebOptions(
643
645
  ).action(
644
646
  async (positionalMaxIter, options) => {
645
647
  try {
646
- const { runExecute } = await import("./execute-R7AVOLNG.js");
648
+ const { runExecute } = await import("./execute-QCT64D37.js");
647
649
  const code = await runExecute(positionalMaxIter, options);
648
650
  process.exit(code);
649
651
  } catch (error) {
@@ -657,7 +659,7 @@ withIssueOptions(
657
659
  program.command("review").description("Validate an issue resolution with the configured agent").argument("<issue>", "Issue number")
658
660
  )
659
661
  ).action(async (issue) => {
660
- const { runReview } = await import("./review-JJHMQA2O.js");
662
+ const { runReview } = await import("./review-2MTZLNSS.js");
661
663
  const code = await runReview(issue);
662
664
  process.exit(code);
663
665
  });
@@ -666,7 +668,7 @@ withIssueOptions(
666
668
  program.command("pr").description("Create a pull request with the configured agent").argument("<issue>", "Issue number")
667
669
  )
668
670
  ).action(async (issue) => {
669
- const { runPr } = await import("./pr-OSCNJCOO.js");
671
+ const { runPr } = await import("./pr-QKFO5HI3.js");
670
672
  const code = await runPr(issue);
671
673
  process.exit(code);
672
674
  });
@@ -674,21 +676,21 @@ var webCommand = program.command("web").description("Manage the web monitoring s
674
676
  webCommand.command("serve").description(
675
677
  "Run the web monitor server in the foreground (internal \u2014 spawned detached by --web)"
676
678
  ).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) => {
677
- const { runWebServe } = await import("./web-NCDBVZ5Y.js");
679
+ const { runWebServe } = await import("./web-TLMWJ2BM.js");
678
680
  const code = await runWebServe(options);
679
681
  if (code !== 0) {
680
682
  process.exit(code);
681
683
  }
682
684
  });
683
685
  webCommand.command("stop").description("Stop the running web monitor server").action(async () => {
684
- const { runWebStop } = await import("./web-NCDBVZ5Y.js");
686
+ const { runWebStop } = await import("./web-TLMWJ2BM.js");
685
687
  const code = await runWebStop();
686
688
  process.exit(code);
687
689
  });
688
690
  withGlobalOptions(
689
691
  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")
690
692
  ).action(async (options) => {
691
- const { runPolicy } = await import("./policy-RFJOJQL6.js");
693
+ const { runPolicy } = await import("./policy-RKKFF5A2.js");
692
694
  const code = await runPolicy(options);
693
695
  process.exit(code);
694
696
  });
@@ -696,49 +698,49 @@ var routingCommand = withGlobalOptions(
696
698
  program.command("routing").description("Inspect and configure adaptive harness/model routing")
697
699
  );
698
700
  routingCommand.option("--json", "Emit the resolved routing config as JSON").action(async (_options, command) => {
699
- const { runRoutingInspect } = await import("./routing-FPNUVE7T.js");
701
+ const { runRoutingInspect } = await import("./routing-RM5ABHHD.js");
700
702
  process.exit(await runRoutingInspect(command.opts()));
701
703
  });
702
704
  routingCommand.command("explain").description("Explain the resolved routing target for every phase").option("--json", "Emit JSON").action(async (_options, command) => {
703
- const { runRoutingExplain } = await import("./routing-FPNUVE7T.js");
705
+ const { runRoutingExplain } = await import("./routing-RM5ABHHD.js");
704
706
  process.exit(await runRoutingExplain(command.optsWithGlobals()));
705
707
  });
706
708
  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");
709
+ const { runRoutingUse } = await import("./routing-RM5ABHHD.js");
708
710
  process.exit(await runRoutingUse(policy, command.optsWithGlobals()));
709
711
  });
710
712
  routingCommand.command("report").description("Shadow agreement between selected and actual harness").option("--issue <n>", "Issue number").option("--json", "Emit JSON").action(async (_options, command) => {
711
- const { runRoutingReport } = await import("./routing-FPNUVE7T.js");
713
+ const { runRoutingReport } = await import("./routing-RM5ABHHD.js");
712
714
  process.exit(await runRoutingReport(command.optsWithGlobals()));
713
715
  });
714
716
  var conventionsCommand = withGlobalOptions(
715
717
  program.command("conventions").description("Compute the repository Git convention (branch, commit, PR title)")
716
718
  );
717
719
  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) => {
718
- const { runConventionsBranch } = await import("./conventions-DW2CM5I3.js");
720
+ const { runConventionsBranch } = await import("./conventions-5UPOTU42.js");
719
721
  process.exit(await runConventionsBranch(options));
720
722
  });
721
723
  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(
722
724
  async (options) => {
723
- const { runConventionsCommit } = await import("./conventions-DW2CM5I3.js");
725
+ const { runConventionsCommit } = await import("./conventions-5UPOTU42.js");
724
726
  process.exit(await runConventionsCommit(options));
725
727
  }
726
728
  );
727
729
  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) => {
728
- const { runConventionsPrTitle } = await import("./conventions-DW2CM5I3.js");
730
+ const { runConventionsPrTitle } = await import("./conventions-5UPOTU42.js");
729
731
  process.exit(await runConventionsPrTitle(options));
730
732
  });
731
733
  var agentCommand = withGlobalOptions(
732
734
  program.command("agent").description("Inspect the resolved agent and model for each phase").option("--json", "Emit the resolved agent configuration as JSON")
733
735
  );
734
736
  agentCommand.action(async (options) => {
735
- const { runAgent } = await import("./agent-EWKA7357.js");
737
+ const { runAgent } = await import("./agent-4DHRKZ2Z.js");
736
738
  const code = await runAgent(options);
737
739
  process.exit(code);
738
740
  });
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(
741
+ agentCommand.command("use").description("Write an agent preference to config.json or .issue-flow.json").argument("<provider>", "claude, codex, cursor, antigravity or opencode").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(
740
742
  async (provider, options) => {
741
- const { runAgentUse } = await import("./agent-EWKA7357.js");
743
+ const { runAgentUse } = await import("./agent-4DHRKZ2Z.js");
742
744
  const code = await runAgentUse(provider, options);
743
745
  process.exit(code);
744
746
  }
@@ -750,7 +752,7 @@ withGlobalOptions(
750
752
  )
751
753
  ).action(
752
754
  async (pr, options) => {
753
- const { runPrReview } = await import("./pr-review-IKIYHFBO.js");
755
+ const { runPrReview } = await import("./pr-review-H2BFD6F2.js");
754
756
  const code = await runPrReview(pr, options);
755
757
  process.exit(code);
756
758
  }
@@ -776,7 +778,7 @@ withGlobalOptions(
776
778
  printError("Unknown bench mode. Use 'synthetic' or 'real'.");
777
779
  process.exit(1);
778
780
  }
779
- const { runBench } = await import("./bench-ZJEIACUK.js");
781
+ const { runBench } = await import("./bench-RNRXVEFK.js");
780
782
  process.exit(
781
783
  await runBench({
782
784
  ...options.mode === void 0 ? {} : { mode: options.mode },
@@ -794,13 +796,13 @@ withGlobalOptions(
794
796
  }
795
797
  );
796
798
  program.action(async () => {
797
- const { listLiveRuns } = await import("./registry-DWRKD65A.js");
799
+ const { listLiveRuns } = await import("./registry-HV7M6MAH.js");
798
800
  const runs = await listLiveRuns();
799
801
  if (runs.length === 0) {
800
802
  program.help();
801
803
  return;
802
804
  }
803
- const { runPs } = await import("./ps-AKRHGPSR.js");
805
+ const { runPs } = await import("./ps-UIKSOUAQ.js");
804
806
  process.exit(await runPs());
805
807
  });
806
808
  program.parse();