issue-flow 0.15.0 → 0.17.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 (169) hide show
  1. package/dist/agent-TB6W7PT7.js +30 -0
  2. package/dist/{analyze-O2PYDIFK.js → analyze-6M3KEOX7.js} +22 -22
  3. package/dist/{apply-SSU6QCD4.js → apply-ADB3ZK7W.js} +14 -14
  4. package/dist/{bench-ODFPAGW6.js → bench-FM7I7EIV.js} +23 -23
  5. package/dist/{chunk-BMHGRYL6.js → chunk-2SUFAE6X.js} +67 -24
  6. package/dist/chunk-2SUFAE6X.js.map +1 -0
  7. package/dist/{chunk-QRCGW2ZO.js → chunk-32JSYXEK.js} +8 -8
  8. package/dist/chunk-3R27MJ5R.js +25 -0
  9. package/dist/chunk-3R27MJ5R.js.map +1 -0
  10. package/dist/{chunk-MGCOQU6N.js → chunk-6YQT3SSM.js} +4 -4
  11. package/dist/chunk-6YQT3SSM.js.map +1 -0
  12. package/dist/{chunk-A35HE4V7.js → chunk-7F7LGMVO.js} +3 -3
  13. package/dist/{chunk-RPXDBX6R.js → chunk-A4H7P7T7.js} +102 -102
  14. package/dist/chunk-A4H7P7T7.js.map +1 -0
  15. package/dist/{chunk-2ZAM45PZ.js → chunk-ANI2NTR4.js} +9 -9
  16. package/dist/{chunk-ZPIVCM7Q.js → chunk-B3TSS7BT.js} +3 -3
  17. package/dist/chunk-C5TL7T4V.js +27 -0
  18. package/dist/chunk-C5TL7T4V.js.map +1 -0
  19. package/dist/chunk-D6ZBGJ3L.js +321 -0
  20. package/dist/chunk-D6ZBGJ3L.js.map +1 -0
  21. package/dist/{chunk-ZXPASFHG.js → chunk-DGRTJD5R.js} +3 -3
  22. package/dist/{chunk-6QYMSNVA.js → chunk-DUS5ZNKL.js} +476 -362
  23. package/dist/chunk-DUS5ZNKL.js.map +1 -0
  24. package/dist/{chunk-VR34TXHF.js → chunk-DV7HUC4Z.js} +7 -7
  25. package/dist/{chunk-6SRE4KD7.js → chunk-E6KXCV3T.js} +4 -4
  26. package/dist/{chunk-HGSYD57B.js → chunk-HJBF4WD2.js} +1656 -1070
  27. package/dist/chunk-HJBF4WD2.js.map +1 -0
  28. package/dist/{chunk-PCN7ZQND.js → chunk-HLAPOUEM.js} +8 -8
  29. package/dist/{chunk-WM3Y7Q4A.js → chunk-HY5HLFDU.js} +630 -571
  30. package/dist/chunk-HY5HLFDU.js.map +1 -0
  31. package/dist/{chunk-XDKGA6UX.js → chunk-ICM463EO.js} +64 -14
  32. package/dist/chunk-ICM463EO.js.map +1 -0
  33. package/dist/{chunk-MEFY4B7T.js → chunk-ISZ54SVE.js} +9 -9
  34. package/dist/{chunk-ARWNYXFL.js → chunk-KZ5EY5XX.js} +12 -12
  35. package/dist/{chunk-ZFIXEYUJ.js → chunk-KZXQWC7U.js} +32 -20
  36. package/dist/chunk-KZXQWC7U.js.map +1 -0
  37. package/dist/{chunk-KAHQ6F5C.js → chunk-LPWPFIIB.js} +11 -11
  38. package/dist/{chunk-FK4IDY6P.js → chunk-MI5TREN3.js} +9 -9
  39. package/dist/{chunk-UNQYMR3H.js → chunk-PPZ3K4YM.js} +2 -2
  40. package/dist/{chunk-F4OK7KEP.js → chunk-QMIQR7EE.js} +10 -10
  41. package/dist/{chunk-AYYMW33T.js → chunk-QPGEFLMY.js} +2 -2
  42. package/dist/chunk-RCZJQUTC.js +196 -0
  43. package/dist/chunk-RCZJQUTC.js.map +1 -0
  44. package/dist/{chunk-MROS3SKL.js → chunk-RNFUVKC3.js} +3 -3
  45. package/dist/{chunk-RWEXK55D.js → chunk-RYOUZ6EK.js} +2 -2
  46. package/dist/{chunk-6E2PEBFT.js → chunk-SGTTR4XW.js} +10 -10
  47. package/dist/{chunk-XQHFC62U.js → chunk-SOM4QA6C.js} +3 -3
  48. package/dist/{chunk-5ZKBIXET.js → chunk-UK4E2FUA.js} +132 -34
  49. package/dist/chunk-UK4E2FUA.js.map +1 -0
  50. package/dist/{chunk-6FXOU2KR.js → chunk-UWDCIFTP.js} +7 -7
  51. package/dist/{chunk-XG2NYDRA.js → chunk-VE3IYNDN.js} +3 -3
  52. package/dist/{chunk-3BWZO4YI.js → chunk-WCCZJL7W.js} +2 -2
  53. package/dist/{chunk-NVZMBXTE.js → chunk-XZUEFTUP.js} +6 -6
  54. package/dist/{chunk-TBDP6QPJ.js → chunk-YII4U7ZD.js} +10 -10
  55. package/dist/{chunk-TBDP6QPJ.js.map → chunk-YII4U7ZD.js.map} +1 -1
  56. package/dist/{chunk-4RXYFWP7.js → chunk-YUNBOUQH.js} +6 -6
  57. package/dist/{chunk-GSZCQUCY.js → chunk-YVPZUN6X.js} +2 -2
  58. package/dist/{chunk-XRLRKTQA.js → chunk-Z5O2XBWA.js} +14 -14
  59. package/dist/cli.js +61 -52
  60. package/dist/cli.js.map +1 -1
  61. package/dist/{config-UMP6DBJB.js → config-KGZUPAUP.js} +13 -13
  62. package/dist/{conventions-DKH7AE4T.js → conventions-RYN7OXJN.js} +15 -15
  63. package/dist/{diagnostics-GOGCLTRS.js → diagnostics-HTCWF7F4.js} +7 -7
  64. package/dist/execute-QL3ZQIAP.js +37 -0
  65. package/dist/{generate-AGBT7EHX.js → generate-CX6KNHZS.js} +22 -22
  66. package/dist/{git-AC542GU2.js → git-A2IP32PQ.js} +2 -2
  67. package/dist/init-PDVQDRS6.js +24 -0
  68. package/dist/{operations-JQYK2EMT.js → operations-CAKIT2BO.js} +15 -15
  69. package/dist/{permissions-6HL52K54.js → permissions-G4XCAESF.js} +4 -4
  70. package/dist/plan-PRORGS3L.js +34 -0
  71. package/dist/{policy-IMRXGG7X.js → policy-WX6O2JID.js} +14 -14
  72. package/dist/pr-27RMQI5F.js +39 -0
  73. package/dist/pr-review-VNESMAMT.js +32 -0
  74. package/dist/prd-ZNC4T5BS.js +33 -0
  75. package/dist/{ps-KUUZ6TUL.js → ps-76L6ZAZL.js} +12 -12
  76. package/dist/{recorder-BJ2KIAWT.js → recorder-N7U66HCO.js} +7 -7
  77. package/dist/{registry-SB7XTMGE.js → registry-XLHHYLTR.js} +5 -5
  78. package/dist/{resume-QNLQSCR5.js → resume-VLWIE264.js} +40 -38
  79. package/dist/{resume-QNLQSCR5.js.map → resume-VLWIE264.js.map} +1 -1
  80. package/dist/review-7CREJDKB.js +35 -0
  81. package/dist/routing-VCDYHSXA.js +33 -0
  82. package/dist/run-3MPORLF5.js +56 -0
  83. package/dist/{session-publisher-T7EI3CIP.js → session-publisher-KAJQRHNZ.js} +3 -2
  84. package/dist/{state-manager-ZEPWTCA6.js → state-manager-UPHO2EA2.js} +4 -4
  85. package/dist/state-manager-UPHO2EA2.js.map +1 -0
  86. package/dist/{usage-QL563I7F.js → usage-U7QNGCPK.js} +12 -12
  87. package/dist/{web-PPSMNTQ6.js → web-HUNDHCJ4.js} +21 -18
  88. package/dist/{web-PPSMNTQ6.js.map → web-HUNDHCJ4.js.map} +1 -1
  89. package/package.json +6 -5
  90. package/web/AGENTS.md +15 -11
  91. package/web/public/app.css +51 -0
  92. package/web/public/app.js +325 -56
  93. package/web/public/index.html +6 -2
  94. package/dist/agent-AT64RXTA.js +0 -30
  95. package/dist/chunk-5ZKBIXET.js.map +0 -1
  96. package/dist/chunk-6QYMSNVA.js.map +0 -1
  97. package/dist/chunk-7Z4Y3VKM.js +0 -26
  98. package/dist/chunk-7Z4Y3VKM.js.map +0 -1
  99. package/dist/chunk-BMHGRYL6.js.map +0 -1
  100. package/dist/chunk-HGSYD57B.js.map +0 -1
  101. package/dist/chunk-MGCOQU6N.js.map +0 -1
  102. package/dist/chunk-RPXDBX6R.js.map +0 -1
  103. package/dist/chunk-WM3Y7Q4A.js.map +0 -1
  104. package/dist/chunk-XDKGA6UX.js.map +0 -1
  105. package/dist/chunk-XLVGPXNL.js +0 -180
  106. package/dist/chunk-XLVGPXNL.js.map +0 -1
  107. package/dist/chunk-ZFIXEYUJ.js.map +0 -1
  108. package/dist/execute-E3BRMDAQ.js +0 -35
  109. package/dist/init-LLBVJNPE.js +0 -24
  110. package/dist/plan-HSLWDJEZ.js +0 -34
  111. package/dist/pr-6TCZXG6K.js +0 -39
  112. package/dist/pr-review-6MWJO2NP.js +0 -32
  113. package/dist/prd-D6YDYAFX.js +0 -33
  114. package/dist/review-3KJ4BH2V.js +0 -35
  115. package/dist/routing-TN7GLMGU.js +0 -94
  116. package/dist/routing-TN7GLMGU.js.map +0 -1
  117. package/dist/run-5EHIFF2V.js +0 -54
  118. /package/dist/{agent-AT64RXTA.js.map → agent-TB6W7PT7.js.map} +0 -0
  119. /package/dist/{analyze-O2PYDIFK.js.map → analyze-6M3KEOX7.js.map} +0 -0
  120. /package/dist/{apply-SSU6QCD4.js.map → apply-ADB3ZK7W.js.map} +0 -0
  121. /package/dist/{bench-ODFPAGW6.js.map → bench-FM7I7EIV.js.map} +0 -0
  122. /package/dist/{chunk-QRCGW2ZO.js.map → chunk-32JSYXEK.js.map} +0 -0
  123. /package/dist/{chunk-A35HE4V7.js.map → chunk-7F7LGMVO.js.map} +0 -0
  124. /package/dist/{chunk-2ZAM45PZ.js.map → chunk-ANI2NTR4.js.map} +0 -0
  125. /package/dist/{chunk-ZPIVCM7Q.js.map → chunk-B3TSS7BT.js.map} +0 -0
  126. /package/dist/{chunk-ZXPASFHG.js.map → chunk-DGRTJD5R.js.map} +0 -0
  127. /package/dist/{chunk-VR34TXHF.js.map → chunk-DV7HUC4Z.js.map} +0 -0
  128. /package/dist/{chunk-6SRE4KD7.js.map → chunk-E6KXCV3T.js.map} +0 -0
  129. /package/dist/{chunk-PCN7ZQND.js.map → chunk-HLAPOUEM.js.map} +0 -0
  130. /package/dist/{chunk-MEFY4B7T.js.map → chunk-ISZ54SVE.js.map} +0 -0
  131. /package/dist/{chunk-ARWNYXFL.js.map → chunk-KZ5EY5XX.js.map} +0 -0
  132. /package/dist/{chunk-KAHQ6F5C.js.map → chunk-LPWPFIIB.js.map} +0 -0
  133. /package/dist/{chunk-FK4IDY6P.js.map → chunk-MI5TREN3.js.map} +0 -0
  134. /package/dist/{chunk-UNQYMR3H.js.map → chunk-PPZ3K4YM.js.map} +0 -0
  135. /package/dist/{chunk-F4OK7KEP.js.map → chunk-QMIQR7EE.js.map} +0 -0
  136. /package/dist/{chunk-AYYMW33T.js.map → chunk-QPGEFLMY.js.map} +0 -0
  137. /package/dist/{chunk-MROS3SKL.js.map → chunk-RNFUVKC3.js.map} +0 -0
  138. /package/dist/{chunk-RWEXK55D.js.map → chunk-RYOUZ6EK.js.map} +0 -0
  139. /package/dist/{chunk-6E2PEBFT.js.map → chunk-SGTTR4XW.js.map} +0 -0
  140. /package/dist/{chunk-XQHFC62U.js.map → chunk-SOM4QA6C.js.map} +0 -0
  141. /package/dist/{chunk-6FXOU2KR.js.map → chunk-UWDCIFTP.js.map} +0 -0
  142. /package/dist/{chunk-XG2NYDRA.js.map → chunk-VE3IYNDN.js.map} +0 -0
  143. /package/dist/{chunk-3BWZO4YI.js.map → chunk-WCCZJL7W.js.map} +0 -0
  144. /package/dist/{chunk-NVZMBXTE.js.map → chunk-XZUEFTUP.js.map} +0 -0
  145. /package/dist/{chunk-4RXYFWP7.js.map → chunk-YUNBOUQH.js.map} +0 -0
  146. /package/dist/{chunk-GSZCQUCY.js.map → chunk-YVPZUN6X.js.map} +0 -0
  147. /package/dist/{chunk-XRLRKTQA.js.map → chunk-Z5O2XBWA.js.map} +0 -0
  148. /package/dist/{config-UMP6DBJB.js.map → config-KGZUPAUP.js.map} +0 -0
  149. /package/dist/{conventions-DKH7AE4T.js.map → conventions-RYN7OXJN.js.map} +0 -0
  150. /package/dist/{diagnostics-GOGCLTRS.js.map → diagnostics-HTCWF7F4.js.map} +0 -0
  151. /package/dist/{execute-E3BRMDAQ.js.map → execute-QL3ZQIAP.js.map} +0 -0
  152. /package/dist/{generate-AGBT7EHX.js.map → generate-CX6KNHZS.js.map} +0 -0
  153. /package/dist/{git-AC542GU2.js.map → git-A2IP32PQ.js.map} +0 -0
  154. /package/dist/{init-LLBVJNPE.js.map → init-PDVQDRS6.js.map} +0 -0
  155. /package/dist/{operations-JQYK2EMT.js.map → operations-CAKIT2BO.js.map} +0 -0
  156. /package/dist/{permissions-6HL52K54.js.map → permissions-G4XCAESF.js.map} +0 -0
  157. /package/dist/{plan-HSLWDJEZ.js.map → plan-PRORGS3L.js.map} +0 -0
  158. /package/dist/{policy-IMRXGG7X.js.map → policy-WX6O2JID.js.map} +0 -0
  159. /package/dist/{pr-6TCZXG6K.js.map → pr-27RMQI5F.js.map} +0 -0
  160. /package/dist/{pr-review-6MWJO2NP.js.map → pr-review-VNESMAMT.js.map} +0 -0
  161. /package/dist/{prd-D6YDYAFX.js.map → prd-ZNC4T5BS.js.map} +0 -0
  162. /package/dist/{ps-KUUZ6TUL.js.map → ps-76L6ZAZL.js.map} +0 -0
  163. /package/dist/{recorder-BJ2KIAWT.js.map → recorder-N7U66HCO.js.map} +0 -0
  164. /package/dist/{registry-SB7XTMGE.js.map → registry-XLHHYLTR.js.map} +0 -0
  165. /package/dist/{review-3KJ4BH2V.js.map → review-7CREJDKB.js.map} +0 -0
  166. /package/dist/{run-5EHIFF2V.js.map → routing-VCDYHSXA.js.map} +0 -0
  167. /package/dist/{session-publisher-T7EI3CIP.js.map → run-3MPORLF5.js.map} +0 -0
  168. /package/dist/{state-manager-ZEPWTCA6.js.map → session-publisher-KAJQRHNZ.js.map} +0 -0
  169. /package/dist/{usage-QL563I7F.js.map → usage-U7QNGCPK.js.map} +0 -0
@@ -1,47 +1,47 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  listPullRequests
4
- } from "./chunk-4RXYFWP7.js";
4
+ } from "./chunk-YUNBOUQH.js";
5
5
  import {
6
6
  publishPhaseMetrics,
7
7
  resolvePolicyPlaceholders
8
- } from "./chunk-PCN7ZQND.js";
8
+ } from "./chunk-HLAPOUEM.js";
9
9
  import {
10
10
  applyPlaceholders,
11
11
  loadPrompt
12
- } from "./chunk-A35HE4V7.js";
12
+ } from "./chunk-7F7LGMVO.js";
13
13
  import {
14
14
  DEFAULT_HEADLESS_TIMEOUT_MS,
15
15
  runHeadless
16
- } from "./chunk-5ZKBIXET.js";
16
+ } from "./chunk-UK4E2FUA.js";
17
17
  import {
18
18
  loadPrReviewConfig
19
- } from "./chunk-WM3Y7Q4A.js";
19
+ } from "./chunk-HY5HLFDU.js";
20
20
  import {
21
21
  resolveIssuePaths
22
- } from "./chunk-VR34TXHF.js";
22
+ } from "./chunk-DV7HUC4Z.js";
23
23
  import {
24
24
  getGlobalTimeout,
25
25
  printError,
26
26
  printInfo,
27
27
  printSuccess,
28
28
  printWarning
29
- } from "./chunk-NVZMBXTE.js";
30
- import {
31
- getSessionPublisher
32
- } from "./chunk-6QYMSNVA.js";
29
+ } from "./chunk-XZUEFTUP.js";
33
30
  import {
34
31
  getCurrentBranch,
35
32
  run
36
- } from "./chunk-GSZCQUCY.js";
33
+ } from "./chunk-YVPZUN6X.js";
34
+ import {
35
+ getSessionPublisher
36
+ } from "./chunk-DUS5ZNKL.js";
37
37
  import {
38
38
  isoNow,
39
39
  loadTaskPlan,
40
40
  saveTaskPlan
41
- } from "./chunk-XQHFC62U.js";
41
+ } from "./chunk-SOM4QA6C.js";
42
42
  import {
43
43
  writeFileAtomic
44
- } from "./chunk-7Z4Y3VKM.js";
44
+ } from "./chunk-3R27MJ5R.js";
45
45
 
46
46
  // src/commands/pr-review.ts
47
47
  import { join as join3 } from "path";
@@ -802,4 +802,4 @@ export {
802
802
  exitCodeFor,
803
803
  runPrReview
804
804
  };
805
- //# sourceMappingURL=chunk-XRLRKTQA.js.map
805
+ //# sourceMappingURL=chunk-Z5O2XBWA.js.map
package/dist/cli.js CHANGED
@@ -1,4 +1,7 @@
1
1
  #!/usr/bin/env node
2
+ import {
3
+ getPackageVersion
4
+ } from "./chunk-C5TL7T4V.js";
2
5
  import {
3
6
  DEFAULT_INACTIVITY_TIMEOUT_MS,
4
7
  installShutdownHandlers,
@@ -9,30 +12,29 @@ import {
9
12
  setRoutingCliOverrides,
10
13
  setVerifyCliOverrides,
11
14
  setWebCliOverrides
12
- } from "./chunk-WM3Y7Q4A.js";
13
- import "./chunk-VR34TXHF.js";
15
+ } from "./chunk-HY5HLFDU.js";
16
+ import "./chunk-DV7HUC4Z.js";
14
17
  import {
15
18
  printError,
16
19
  setGlobalTimeout,
17
20
  setInactivityTimeout,
18
21
  setVerbose
19
- } from "./chunk-NVZMBXTE.js";
20
- import "./chunk-6QYMSNVA.js";
21
- import "./chunk-AYYMW33T.js";
22
+ } from "./chunk-XZUEFTUP.js";
23
+ import "./chunk-QPGEFLMY.js";
22
24
  import "./chunk-HAKDLR6N.js";
23
- import "./chunk-GSZCQUCY.js";
24
- import "./chunk-TBDP6QPJ.js";
25
- import "./chunk-P3LRUNC6.js";
26
- import "./chunk-UNQYMR3H.js";
27
- import "./chunk-XQHFC62U.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";
28
30
  import {
29
31
  isAgentProviderId
30
- } from "./chunk-XDKGA6UX.js";
31
- import "./chunk-7Z4Y3VKM.js";
32
+ } from "./chunk-ICM463EO.js";
32
33
  import "./chunk-XEYH6ZZI.js";
34
+ import "./chunk-P3LRUNC6.js";
35
+ import "./chunk-3R27MJ5R.js";
33
36
 
34
37
  // src/cli.ts
35
- import { createRequire } from "module";
36
38
  import { Command, InvalidArgumentError, Option } from "commander";
37
39
 
38
40
  // src/cli-options.ts
@@ -179,8 +181,7 @@ function resolveResilienceOverrides(flags) {
179
181
  }
180
182
 
181
183
  // src/cli.ts
182
- var require2 = createRequire(import.meta.url);
183
- var { version } = require2("../package.json");
184
+ var version = getPackageVersion();
184
185
  function parseInteger(value) {
185
186
  const parsed = parseInt(value, 10);
186
187
  if (Number.isNaN(parsed) || parsed < 0) {
@@ -352,8 +353,8 @@ withIssueOptions(
352
353
  )
353
354
  ).action(
354
355
  async (options) => {
355
- const { loadIssuesConfig } = await import("./config-UMP6DBJB.js");
356
- const { runInit } = await import("./init-LLBVJNPE.js");
356
+ const { loadIssuesConfig } = await import("./config-KGZUPAUP.js");
357
+ const { runInit } = await import("./init-PDVQDRS6.js");
357
358
  const { preferredProvider } = await loadIssuesConfig();
358
359
  const code = await runInit(preferredProvider, {
359
360
  ...options,
@@ -375,7 +376,7 @@ withGlobalOptions(
375
376
  }
376
377
  throw error;
377
378
  }
378
- const { runGenerate } = await import("./generate-AGBT7EHX.js");
379
+ const { runGenerate } = await import("./generate-CX6KNHZS.js");
379
380
  const code = await runGenerate(options.prompt, target);
380
381
  process.exit(code);
381
382
  });
@@ -418,7 +419,7 @@ withUserStoryNumberingOptions(
418
419
  }
419
420
  throw error;
420
421
  }
421
- const { runPipeline } = await import("./run-5EHIFF2V.js");
422
+ const { runPipeline } = await import("./run-3MPORLF5.js");
422
423
  const code = await runPipeline(
423
424
  issues,
424
425
  options.mode,
@@ -447,7 +448,7 @@ withIssueOptions(
447
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")
448
449
  )
449
450
  ).action(async (issue, options) => {
450
- const { runResume } = await import("./resume-QNLQSCR5.js");
451
+ const { runResume } = await import("./resume-VLWIE264.js");
451
452
  const code = await runResume(issue, {
452
453
  ...options.all === void 0 ? {} : { all: options.all },
453
454
  ...options.mode === void 0 ? {} : { mode: options.mode }
@@ -457,7 +458,7 @@ withIssueOptions(
457
458
  withGlobalOptions(
458
459
  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")
459
460
  ).action(async (issue, options) => {
460
- const { runStatus } = await import("./operations-JQYK2EMT.js");
461
+ const { runStatus } = await import("./operations-CAKIT2BO.js");
461
462
  process.exit(
462
463
  await runStatus(issue, { ...options.json === void 0 ? {} : { json: options.json } })
463
464
  );
@@ -466,7 +467,7 @@ withGlobalOptions(
466
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")
467
468
  ).action(
468
469
  async (issue, options) => {
469
- const { runUsage, USAGE_GROUP_KEYS } = await import("./usage-QL563I7F.js");
470
+ const { runUsage, USAGE_GROUP_KEYS } = await import("./usage-U7QNGCPK.js");
470
471
  const by = options.by;
471
472
  if (by !== void 0 && !USAGE_GROUP_KEYS.includes(by)) {
472
473
  printError("Must be one of: harness, provider, model, purpose, status.");
@@ -484,20 +485,20 @@ withGlobalOptions(
484
485
  withGlobalOptions(
485
486
  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")
486
487
  ).action(async (options) => {
487
- const { runPs } = await import("./ps-KUUZ6TUL.js");
488
+ const { runPs } = await import("./ps-76L6ZAZL.js");
488
489
  process.exit(await runPs(options));
489
490
  });
490
491
  withGlobalOptions(
491
492
  program.command("runs").description("History of the runs of this project, with how each ended")
492
493
  ).action(async () => {
493
- const { runRuns } = await import("./operations-JQYK2EMT.js");
494
+ const { runRuns } = await import("./operations-CAKIT2BO.js");
494
495
  process.exit(await runRuns());
495
496
  });
496
497
  withGlobalOptions(
497
498
  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)")
498
499
  ).action(
499
500
  async (issue, options) => {
500
- const { runLogs } = await import("./operations-JQYK2EMT.js");
501
+ const { runLogs } = await import("./operations-CAKIT2BO.js");
501
502
  const kinds = options.kind === void 0 ? void 0 : options.kind.split(",").map((kind) => kind.trim()).filter((kind) => kind !== "");
502
503
  process.exit(
503
504
  await runLogs(issue ?? options.issue, {
@@ -511,13 +512,13 @@ withGlobalOptions(
511
512
  withGlobalOptions(
512
513
  program.command("pause").description("Ask the running pipeline to stop after writing a checkpoint")
513
514
  ).action(async () => {
514
- const { runPause } = await import("./operations-JQYK2EMT.js");
515
+ const { runPause } = await import("./operations-CAKIT2BO.js");
515
516
  process.exit(await runPause());
516
517
  });
517
518
  withGlobalOptions(
518
519
  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")
519
520
  ).action(async (issue) => {
520
- const { runCancel } = await import("./operations-JQYK2EMT.js");
521
+ const { runCancel } = await import("./operations-CAKIT2BO.js");
521
522
  process.exit(await runCancel(issue));
522
523
  });
523
524
  withIssueOptions(
@@ -525,7 +526,7 @@ withIssueOptions(
525
526
  program.command("analyze").description("Analyze an issue with the configured agent").argument("<issue>", "Issue number")
526
527
  )
527
528
  ).action(async (issue) => {
528
- const { runAnalyze } = await import("./analyze-O2PYDIFK.js");
529
+ const { runAnalyze } = await import("./analyze-6M3KEOX7.js");
529
530
  const code = await runAnalyze(issue);
530
531
  process.exit(code);
531
532
  });
@@ -534,7 +535,7 @@ withIssueOptions(
534
535
  program.command("prd").description("Generate a PRD from an analyzed issue with the configured agent").argument("<issue>", "Issue number")
535
536
  )
536
537
  ).action(async (issue) => {
537
- const { runPrd } = await import("./prd-D6YDYAFX.js");
538
+ const { runPrd } = await import("./prd-ZNC4T5BS.js");
538
539
  const code = await runPrd(issue);
539
540
  process.exit(code);
540
541
  });
@@ -555,7 +556,7 @@ withUserStoryNumberingOptions(
555
556
  }
556
557
  throw error;
557
558
  }
558
- const { runPlan } = await import("./plan-HSLWDJEZ.js");
559
+ const { runPlan } = await import("./plan-PRORGS3L.js");
559
560
  const code = await runPlan(issue, void 0, numbering);
560
561
  process.exit(code);
561
562
  });
@@ -574,7 +575,7 @@ withWebOptions(
574
575
  ).action(
575
576
  async (positionalMaxIter, options) => {
576
577
  try {
577
- const { runExecute } = await import("./execute-E3BRMDAQ.js");
578
+ const { runExecute } = await import("./execute-QL3ZQIAP.js");
578
579
  const code = await runExecute(positionalMaxIter, options);
579
580
  process.exit(code);
580
581
  } catch (error) {
@@ -588,7 +589,7 @@ withIssueOptions(
588
589
  program.command("review").description("Validate an issue resolution with the configured agent").argument("<issue>", "Issue number")
589
590
  )
590
591
  ).action(async (issue) => {
591
- const { runReview } = await import("./review-3KJ4BH2V.js");
592
+ const { runReview } = await import("./review-7CREJDKB.js");
592
593
  const code = await runReview(issue);
593
594
  process.exit(code);
594
595
  });
@@ -597,7 +598,7 @@ withIssueOptions(
597
598
  program.command("pr").description("Create a pull request with the configured agent").argument("<issue>", "Issue number")
598
599
  )
599
600
  ).action(async (issue) => {
600
- const { runPr } = await import("./pr-6TCZXG6K.js");
601
+ const { runPr } = await import("./pr-27RMQI5F.js");
601
602
  const code = await runPr(issue);
602
603
  process.exit(code);
603
604
  });
@@ -605,63 +606,71 @@ var webCommand = program.command("web").description("Manage the web monitoring s
605
606
  webCommand.command("serve").description(
606
607
  "Run the web monitor server in the foreground (internal \u2014 spawned detached by --web)"
607
608
  ).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) => {
608
- const { runWebServe } = await import("./web-PPSMNTQ6.js");
609
+ const { runWebServe } = await import("./web-HUNDHCJ4.js");
609
610
  const code = await runWebServe(options);
610
611
  if (code !== 0) {
611
612
  process.exit(code);
612
613
  }
613
614
  });
614
615
  webCommand.command("stop").description("Stop the running web monitor server").action(async () => {
615
- const { runWebStop } = await import("./web-PPSMNTQ6.js");
616
+ const { runWebStop } = await import("./web-HUNDHCJ4.js");
616
617
  const code = await runWebStop();
617
618
  process.exit(code);
618
619
  });
619
620
  withGlobalOptions(
620
621
  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")
621
622
  ).action(async (options) => {
622
- const { runPolicy } = await import("./policy-IMRXGG7X.js");
623
+ const { runPolicy } = await import("./policy-WX6O2JID.js");
623
624
  const code = await runPolicy(options);
624
625
  process.exit(code);
625
626
  });
626
627
  var routingCommand = withGlobalOptions(
627
- program.command("routing").description("Inspect the shadow router (records a recommendation, does not act)")
628
+ program.command("routing").description("Inspect and configure adaptive harness/model routing")
628
629
  );
629
- routingCommand.option("--json", "Emit the resolved routing config as JSON").action(async (options) => {
630
- const { runRoutingInspect } = await import("./routing-TN7GLMGU.js");
631
- process.exit(await runRoutingInspect(options));
630
+ routingCommand.option("--json", "Emit the resolved routing config as JSON").action(async (_options, command) => {
631
+ const { runRoutingInspect } = await import("./routing-VCDYHSXA.js");
632
+ process.exit(await runRoutingInspect(command.opts()));
633
+ });
634
+ 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");
636
+ process.exit(await runRoutingExplain(command.optsWithGlobals()));
637
+ });
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");
640
+ process.exit(await runRoutingUse(policy, command.optsWithGlobals()));
632
641
  });
633
- routingCommand.command("report").description("Shadow agreement between selected and actual harness").option("--issue <n>", "Issue number").option("--json", "Emit JSON").action(async (options) => {
634
- const { runRoutingReport } = await import("./routing-TN7GLMGU.js");
635
- process.exit(await runRoutingReport(options));
642
+ 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");
644
+ process.exit(await runRoutingReport(command.optsWithGlobals()));
636
645
  });
637
646
  var conventionsCommand = withGlobalOptions(
638
647
  program.command("conventions").description("Compute the repository Git convention (branch, commit, PR title)")
639
648
  );
640
649
  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) => {
641
- const { runConventionsBranch } = await import("./conventions-DKH7AE4T.js");
650
+ const { runConventionsBranch } = await import("./conventions-RYN7OXJN.js");
642
651
  process.exit(await runConventionsBranch(options));
643
652
  });
644
653
  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(
645
654
  async (options) => {
646
- const { runConventionsCommit } = await import("./conventions-DKH7AE4T.js");
655
+ const { runConventionsCommit } = await import("./conventions-RYN7OXJN.js");
647
656
  process.exit(await runConventionsCommit(options));
648
657
  }
649
658
  );
650
659
  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) => {
651
- const { runConventionsPrTitle } = await import("./conventions-DKH7AE4T.js");
660
+ const { runConventionsPrTitle } = await import("./conventions-RYN7OXJN.js");
652
661
  process.exit(await runConventionsPrTitle(options));
653
662
  });
654
663
  var agentCommand = withGlobalOptions(
655
664
  program.command("agent").description("Inspect the resolved agent and model for each phase").option("--json", "Emit the resolved agent configuration as JSON")
656
665
  );
657
666
  agentCommand.action(async (options) => {
658
- const { runAgent } = await import("./agent-AT64RXTA.js");
667
+ const { runAgent } = await import("./agent-TB6W7PT7.js");
659
668
  const code = await runAgent(options);
660
669
  process.exit(code);
661
670
  });
662
671
  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(
663
672
  async (provider, options) => {
664
- const { runAgentUse } = await import("./agent-AT64RXTA.js");
673
+ const { runAgentUse } = await import("./agent-TB6W7PT7.js");
665
674
  const code = await runAgentUse(provider, options);
666
675
  process.exit(code);
667
676
  }
@@ -673,7 +682,7 @@ withGlobalOptions(
673
682
  )
674
683
  ).action(
675
684
  async (pr, options) => {
676
- const { runPrReview } = await import("./pr-review-6MWJO2NP.js");
685
+ const { runPrReview } = await import("./pr-review-VNESMAMT.js");
677
686
  const code = await runPrReview(pr, options);
678
687
  process.exit(code);
679
688
  }
@@ -699,7 +708,7 @@ withGlobalOptions(
699
708
  printError("Unknown bench mode. Use 'synthetic' or 'real'.");
700
709
  process.exit(1);
701
710
  }
702
- const { runBench } = await import("./bench-ODFPAGW6.js");
711
+ const { runBench } = await import("./bench-FM7I7EIV.js");
703
712
  process.exit(
704
713
  await runBench({
705
714
  ...options.mode === void 0 ? {} : { mode: options.mode },
@@ -717,13 +726,13 @@ withGlobalOptions(
717
726
  }
718
727
  );
719
728
  program.action(async () => {
720
- const { listLiveRuns } = await import("./registry-SB7XTMGE.js");
729
+ const { listLiveRuns } = await import("./registry-XLHHYLTR.js");
721
730
  const runs = await listLiveRuns();
722
731
  if (runs.length === 0) {
723
732
  program.help();
724
733
  return;
725
734
  }
726
- const { runPs } = await import("./ps-KUUZ6TUL.js");
735
+ const { runPs } = await import("./ps-76L6ZAZL.js");
727
736
  process.exit(await runPs());
728
737
  });
729
738
  program.parse();