issue-flow 0.16.0 → 0.18.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 (168) hide show
  1. package/dist/agent-HMZTXCRT.js +30 -0
  2. package/dist/{analyze-556KCJKZ.js → analyze-Q4ONIWRZ.js} +22 -22
  3. package/dist/{apply-WVV7G7WN.js → apply-EEFPY2W4.js} +14 -14
  4. package/dist/{bench-UBFGKUHR.js → bench-WWWXLTFH.js} +23 -23
  5. package/dist/{chunk-GV2DABNZ.js → chunk-34OCSKOB.js} +12 -12
  6. package/dist/chunk-3R27MJ5R.js +25 -0
  7. package/dist/chunk-3R27MJ5R.js.map +1 -0
  8. package/dist/{chunk-PGN2VX4Y.js → chunk-45WZ6GMI.js} +32 -48
  9. package/dist/chunk-45WZ6GMI.js.map +1 -0
  10. package/dist/{chunk-H3EYBJZU.js → chunk-62GVVZQO.js} +10 -10
  11. package/dist/{chunk-GPLP7EPL.js → chunk-6K2LCFG6.js} +10 -10
  12. package/dist/{chunk-GPLP7EPL.js.map → chunk-6K2LCFG6.js.map} +1 -1
  13. package/dist/{chunk-OGVWJO4S.js → chunk-7F7LGMVO.js} +3 -3
  14. package/dist/{chunk-X6GY3CM2.js → chunk-7UMMFOL2.js} +104 -104
  15. package/dist/chunk-7UMMFOL2.js.map +1 -0
  16. package/dist/{chunk-OLUOZLU5.js → chunk-CWSQVHVV.js} +1691 -1075
  17. package/dist/chunk-CWSQVHVV.js.map +1 -0
  18. package/dist/{chunk-MXCOSPLJ.js → chunk-DGRTJD5R.js} +3 -3
  19. package/dist/{chunk-ROIIEVZH.js → chunk-DUS5ZNKL.js} +474 -361
  20. package/dist/chunk-DUS5ZNKL.js.map +1 -0
  21. package/dist/{chunk-BSBJXPLC.js → chunk-E4I6MMHD.js} +10 -10
  22. package/dist/{chunk-QZOBR6YF.js → chunk-ECU7YO7S.js} +4 -4
  23. package/dist/chunk-ECU7YO7S.js.map +1 -0
  24. package/dist/{chunk-EPFC4LHT.js → chunk-EG2MGDP5.js} +9 -9
  25. package/dist/chunk-HOAHMERN.js +229 -0
  26. package/dist/chunk-HOAHMERN.js.map +1 -0
  27. package/dist/{chunk-QVLIIGBU.js → chunk-ICM463EO.js} +60 -13
  28. package/dist/chunk-ICM463EO.js.map +1 -0
  29. package/dist/{chunk-4FUWWBTP.js → chunk-KMCS76ZW.js} +8 -8
  30. package/dist/{chunk-SW2MF47D.js → chunk-KRAGAUKD.js} +19 -19
  31. package/dist/{chunk-OOX3RMD3.js → chunk-LGHND47K.js} +4 -4
  32. package/dist/{chunk-VTF4RWS5.js → chunk-LI35PIIS.js} +7 -7
  33. package/dist/{chunk-Q2TZA6AC.js → chunk-LTH6XYZ3.js} +14 -14
  34. package/dist/{chunk-YA6FWFYW.js → chunk-NEWNXZ65.js} +62 -11
  35. package/dist/chunk-NEWNXZ65.js.map +1 -0
  36. package/dist/{chunk-2H43OVTU.js → chunk-OODXFCQV.js} +11 -11
  37. package/dist/{chunk-KV2K7MK2.js → chunk-PMLE7KAQ.js} +20 -12
  38. package/dist/chunk-PMLE7KAQ.js.map +1 -0
  39. package/dist/{chunk-R42YHLDV.js → chunk-PPZ3K4YM.js} +2 -2
  40. package/dist/{chunk-J2LJB2OH.js → chunk-QF7VEL3M.js} +739 -579
  41. package/dist/chunk-QF7VEL3M.js.map +1 -0
  42. package/dist/{chunk-VK65RNFA.js → chunk-QJ44VG5G.js} +3 -3
  43. package/dist/{chunk-FKWYD44M.js → chunk-QPGEFLMY.js} +2 -2
  44. package/dist/{chunk-NQCR3HSU.js → chunk-RNFUVKC3.js} +3 -3
  45. package/dist/{chunk-G5LACAXO.js → chunk-RYOUZ6EK.js} +2 -2
  46. package/dist/{chunk-MCLPSL6B.js → chunk-SA6HXL4Y.js} +3 -3
  47. package/dist/{chunk-GVOZ6NDO.js → chunk-SOM4QA6C.js} +3 -3
  48. package/dist/{chunk-73TS2H42.js → chunk-TZYINKCC.js} +154 -34
  49. package/dist/chunk-TZYINKCC.js.map +1 -0
  50. package/dist/{chunk-DBEMD34J.js → chunk-V7QOIQYC.js} +8 -8
  51. package/dist/{chunk-IAMIBZRF.js → chunk-WCCZJL7W.js} +2 -2
  52. package/dist/{chunk-OGN2NX57.js → chunk-XUEMATVY.js} +9 -9
  53. package/dist/{chunk-SVDEWOUD.js → chunk-XZUEFTUP.js} +6 -6
  54. package/dist/{chunk-WLJVL25O.js → chunk-YUNBOUQH.js} +6 -6
  55. package/dist/{chunk-WNROH2YE.js → chunk-YVPZUN6X.js} +2 -2
  56. package/dist/chunk-ZVZMWNCG.js +415 -0
  57. package/dist/chunk-ZVZMWNCG.js.map +1 -0
  58. package/dist/cli.js +57 -49
  59. package/dist/cli.js.map +1 -1
  60. package/dist/{config-UE7IP36J.js → config-LEBZZCJP.js} +13 -13
  61. package/dist/{conventions-Z3QC2NSG.js → conventions-XOT6YW5L.js} +15 -15
  62. package/dist/{diagnostics-2Z5HFQOO.js → diagnostics-HTCWF7F4.js} +7 -7
  63. package/dist/execute-LELOSR5T.js +37 -0
  64. package/dist/{generate-PB4L7V5N.js → generate-JGW5JSKB.js} +22 -22
  65. package/dist/{git-7MUOGVRG.js → git-A2IP32PQ.js} +2 -2
  66. package/dist/init-TO6MUXO4.js +26 -0
  67. package/dist/{operations-QDJAFZUN.js → operations-O4FORFIH.js} +15 -15
  68. package/dist/{permissions-XVXXENVP.js → permissions-G4XCAESF.js} +4 -4
  69. package/dist/plan-OXAT344Q.js +34 -0
  70. package/dist/{policy-6WQZB6B2.js → policy-U5NBFAO5.js} +14 -14
  71. package/dist/pr-UZHNKKZC.js +39 -0
  72. package/dist/pr-review-Q4ACAWDM.js +32 -0
  73. package/dist/prd-6CYEMLDY.js +33 -0
  74. package/dist/{ps-CX7756QG.js → ps-76L6ZAZL.js} +12 -12
  75. package/dist/{recorder-RK6XZYF3.js → recorder-2BAKPBRA.js} +7 -7
  76. package/dist/{registry-POSB35Q4.js → registry-XLHHYLTR.js} +5 -5
  77. package/dist/{resume-OQJZV3JH.js → resume-URCU6CIJ.js} +39 -38
  78. package/dist/{resume-OQJZV3JH.js.map → resume-URCU6CIJ.js.map} +1 -1
  79. package/dist/review-LVZT2TMW.js +35 -0
  80. package/dist/routing-EK6RBZM4.js +33 -0
  81. package/dist/run-2RXJCJKT.js +56 -0
  82. package/dist/{session-publisher-VVXOCJ2S.js → session-publisher-KAJQRHNZ.js} +3 -2
  83. package/dist/{state-manager-TIC73GQY.js → state-manager-UPHO2EA2.js} +4 -4
  84. package/dist/state-manager-UPHO2EA2.js.map +1 -0
  85. package/dist/{usage-WDDNSIHP.js → usage-KTMYXAPF.js} +12 -12
  86. package/dist/{web-IPGY52AK.js → web-B5UPHHR5.js} +20 -18
  87. package/dist/{web-IPGY52AK.js.map → web-B5UPHHR5.js.map} +1 -1
  88. package/package.json +6 -5
  89. package/web/AGENTS.md +125 -18
  90. package/web/public/app.css +420 -234
  91. package/web/public/app.js +371 -80
  92. package/web/public/index.html +106 -78
  93. package/dist/agent-PMWCDWOW.js +0 -30
  94. package/dist/chunk-73TS2H42.js.map +0 -1
  95. package/dist/chunk-7Z4Y3VKM.js +0 -26
  96. package/dist/chunk-7Z4Y3VKM.js.map +0 -1
  97. package/dist/chunk-AOAQU7PD.js +0 -180
  98. package/dist/chunk-AOAQU7PD.js.map +0 -1
  99. package/dist/chunk-J2LJB2OH.js.map +0 -1
  100. package/dist/chunk-KV2K7MK2.js.map +0 -1
  101. package/dist/chunk-OLUOZLU5.js.map +0 -1
  102. package/dist/chunk-PGN2VX4Y.js.map +0 -1
  103. package/dist/chunk-QVLIIGBU.js.map +0 -1
  104. package/dist/chunk-QZOBR6YF.js.map +0 -1
  105. package/dist/chunk-ROIIEVZH.js.map +0 -1
  106. package/dist/chunk-X6GY3CM2.js.map +0 -1
  107. package/dist/chunk-YA6FWFYW.js.map +0 -1
  108. package/dist/execute-QYLJ5L4T.js +0 -36
  109. package/dist/init-XBERAZ4O.js +0 -24
  110. package/dist/plan-RXOW32KY.js +0 -34
  111. package/dist/pr-3WFYAVA7.js +0 -39
  112. package/dist/pr-review-RK63ZEMM.js +0 -32
  113. package/dist/prd-LRV6IW3E.js +0 -33
  114. package/dist/review-AEFISJZD.js +0 -35
  115. package/dist/routing-EA5NJGNU.js +0 -94
  116. package/dist/routing-EA5NJGNU.js.map +0 -1
  117. package/dist/run-HSC7R33Y.js +0 -55
  118. /package/dist/{agent-PMWCDWOW.js.map → agent-HMZTXCRT.js.map} +0 -0
  119. /package/dist/{analyze-556KCJKZ.js.map → analyze-Q4ONIWRZ.js.map} +0 -0
  120. /package/dist/{apply-WVV7G7WN.js.map → apply-EEFPY2W4.js.map} +0 -0
  121. /package/dist/{bench-UBFGKUHR.js.map → bench-WWWXLTFH.js.map} +0 -0
  122. /package/dist/{chunk-GV2DABNZ.js.map → chunk-34OCSKOB.js.map} +0 -0
  123. /package/dist/{chunk-H3EYBJZU.js.map → chunk-62GVVZQO.js.map} +0 -0
  124. /package/dist/{chunk-OGVWJO4S.js.map → chunk-7F7LGMVO.js.map} +0 -0
  125. /package/dist/{chunk-MXCOSPLJ.js.map → chunk-DGRTJD5R.js.map} +0 -0
  126. /package/dist/{chunk-BSBJXPLC.js.map → chunk-E4I6MMHD.js.map} +0 -0
  127. /package/dist/{chunk-EPFC4LHT.js.map → chunk-EG2MGDP5.js.map} +0 -0
  128. /package/dist/{chunk-4FUWWBTP.js.map → chunk-KMCS76ZW.js.map} +0 -0
  129. /package/dist/{chunk-SW2MF47D.js.map → chunk-KRAGAUKD.js.map} +0 -0
  130. /package/dist/{chunk-OOX3RMD3.js.map → chunk-LGHND47K.js.map} +0 -0
  131. /package/dist/{chunk-VTF4RWS5.js.map → chunk-LI35PIIS.js.map} +0 -0
  132. /package/dist/{chunk-Q2TZA6AC.js.map → chunk-LTH6XYZ3.js.map} +0 -0
  133. /package/dist/{chunk-2H43OVTU.js.map → chunk-OODXFCQV.js.map} +0 -0
  134. /package/dist/{chunk-R42YHLDV.js.map → chunk-PPZ3K4YM.js.map} +0 -0
  135. /package/dist/{chunk-VK65RNFA.js.map → chunk-QJ44VG5G.js.map} +0 -0
  136. /package/dist/{chunk-FKWYD44M.js.map → chunk-QPGEFLMY.js.map} +0 -0
  137. /package/dist/{chunk-NQCR3HSU.js.map → chunk-RNFUVKC3.js.map} +0 -0
  138. /package/dist/{chunk-G5LACAXO.js.map → chunk-RYOUZ6EK.js.map} +0 -0
  139. /package/dist/{chunk-MCLPSL6B.js.map → chunk-SA6HXL4Y.js.map} +0 -0
  140. /package/dist/{chunk-GVOZ6NDO.js.map → chunk-SOM4QA6C.js.map} +0 -0
  141. /package/dist/{chunk-DBEMD34J.js.map → chunk-V7QOIQYC.js.map} +0 -0
  142. /package/dist/{chunk-IAMIBZRF.js.map → chunk-WCCZJL7W.js.map} +0 -0
  143. /package/dist/{chunk-OGN2NX57.js.map → chunk-XUEMATVY.js.map} +0 -0
  144. /package/dist/{chunk-SVDEWOUD.js.map → chunk-XZUEFTUP.js.map} +0 -0
  145. /package/dist/{chunk-WLJVL25O.js.map → chunk-YUNBOUQH.js.map} +0 -0
  146. /package/dist/{chunk-WNROH2YE.js.map → chunk-YVPZUN6X.js.map} +0 -0
  147. /package/dist/{config-UE7IP36J.js.map → config-LEBZZCJP.js.map} +0 -0
  148. /package/dist/{conventions-Z3QC2NSG.js.map → conventions-XOT6YW5L.js.map} +0 -0
  149. /package/dist/{diagnostics-2Z5HFQOO.js.map → diagnostics-HTCWF7F4.js.map} +0 -0
  150. /package/dist/{execute-QYLJ5L4T.js.map → execute-LELOSR5T.js.map} +0 -0
  151. /package/dist/{generate-PB4L7V5N.js.map → generate-JGW5JSKB.js.map} +0 -0
  152. /package/dist/{git-7MUOGVRG.js.map → git-A2IP32PQ.js.map} +0 -0
  153. /package/dist/{init-XBERAZ4O.js.map → init-TO6MUXO4.js.map} +0 -0
  154. /package/dist/{operations-QDJAFZUN.js.map → operations-O4FORFIH.js.map} +0 -0
  155. /package/dist/{permissions-XVXXENVP.js.map → permissions-G4XCAESF.js.map} +0 -0
  156. /package/dist/{plan-RXOW32KY.js.map → plan-OXAT344Q.js.map} +0 -0
  157. /package/dist/{policy-6WQZB6B2.js.map → policy-U5NBFAO5.js.map} +0 -0
  158. /package/dist/{pr-3WFYAVA7.js.map → pr-UZHNKKZC.js.map} +0 -0
  159. /package/dist/{pr-review-RK63ZEMM.js.map → pr-review-Q4ACAWDM.js.map} +0 -0
  160. /package/dist/{prd-LRV6IW3E.js.map → prd-6CYEMLDY.js.map} +0 -0
  161. /package/dist/{ps-CX7756QG.js.map → ps-76L6ZAZL.js.map} +0 -0
  162. /package/dist/{recorder-RK6XZYF3.js.map → recorder-2BAKPBRA.js.map} +0 -0
  163. /package/dist/{registry-POSB35Q4.js.map → registry-XLHHYLTR.js.map} +0 -0
  164. /package/dist/{review-AEFISJZD.js.map → review-LVZT2TMW.js.map} +0 -0
  165. /package/dist/{run-HSC7R33Y.js.map → routing-EK6RBZM4.js.map} +0 -0
  166. /package/dist/{session-publisher-VVXOCJ2S.js.map → run-2RXJCJKT.js.map} +0 -0
  167. /package/dist/{state-manager-TIC73GQY.js.map → session-publisher-KAJQRHNZ.js.map} +0 -0
  168. /package/dist/{usage-WDDNSIHP.js.map → usage-KTMYXAPF.js.map} +0 -0
package/dist/cli.js CHANGED
@@ -12,27 +12,27 @@ import {
12
12
  setRoutingCliOverrides,
13
13
  setVerifyCliOverrides,
14
14
  setWebCliOverrides
15
- } from "./chunk-J2LJB2OH.js";
16
- import "./chunk-VTF4RWS5.js";
15
+ } from "./chunk-QF7VEL3M.js";
16
+ import "./chunk-LI35PIIS.js";
17
17
  import {
18
18
  printError,
19
19
  setGlobalTimeout,
20
20
  setInactivityTimeout,
21
21
  setVerbose
22
- } from "./chunk-SVDEWOUD.js";
23
- import "./chunk-ROIIEVZH.js";
24
- import "./chunk-FKWYD44M.js";
22
+ } from "./chunk-XZUEFTUP.js";
23
+ import "./chunk-QPGEFLMY.js";
25
24
  import "./chunk-HAKDLR6N.js";
26
- import "./chunk-WNROH2YE.js";
27
- import "./chunk-GPLP7EPL.js";
28
- import "./chunk-P3LRUNC6.js";
29
- import "./chunk-R42YHLDV.js";
30
- import "./chunk-GVOZ6NDO.js";
25
+ import "./chunk-YVPZUN6X.js";
26
+ import "./chunk-DUS5ZNKL.js";
27
+ import "./chunk-6K2LCFG6.js";
28
+ import "./chunk-PPZ3K4YM.js";
29
+ import "./chunk-SOM4QA6C.js";
31
30
  import {
32
31
  isAgentProviderId
33
- } from "./chunk-QVLIIGBU.js";
34
- import "./chunk-7Z4Y3VKM.js";
32
+ } from "./chunk-ICM463EO.js";
35
33
  import "./chunk-XEYH6ZZI.js";
34
+ import "./chunk-P3LRUNC6.js";
35
+ import "./chunk-3R27MJ5R.js";
36
36
 
37
37
  // src/cli.ts
38
38
  import { Command, InvalidArgumentError, Option } from "commander";
@@ -353,8 +353,8 @@ withIssueOptions(
353
353
  )
354
354
  ).action(
355
355
  async (options) => {
356
- const { loadIssuesConfig } = await import("./config-UE7IP36J.js");
357
- const { runInit } = await import("./init-XBERAZ4O.js");
356
+ const { loadIssuesConfig } = await import("./config-LEBZZCJP.js");
357
+ const { runInit } = await import("./init-TO6MUXO4.js");
358
358
  const { preferredProvider } = await loadIssuesConfig();
359
359
  const code = await runInit(preferredProvider, {
360
360
  ...options,
@@ -376,7 +376,7 @@ withGlobalOptions(
376
376
  }
377
377
  throw error;
378
378
  }
379
- const { runGenerate } = await import("./generate-PB4L7V5N.js");
379
+ const { runGenerate } = await import("./generate-JGW5JSKB.js");
380
380
  const code = await runGenerate(options.prompt, target);
381
381
  process.exit(code);
382
382
  });
@@ -419,7 +419,7 @@ withUserStoryNumberingOptions(
419
419
  }
420
420
  throw error;
421
421
  }
422
- const { runPipeline } = await import("./run-HSC7R33Y.js");
422
+ const { runPipeline } = await import("./run-2RXJCJKT.js");
423
423
  const code = await runPipeline(
424
424
  issues,
425
425
  options.mode,
@@ -448,7 +448,7 @@ withIssueOptions(
448
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")
449
449
  )
450
450
  ).action(async (issue, options) => {
451
- const { runResume } = await import("./resume-OQJZV3JH.js");
451
+ const { runResume } = await import("./resume-URCU6CIJ.js");
452
452
  const code = await runResume(issue, {
453
453
  ...options.all === void 0 ? {} : { all: options.all },
454
454
  ...options.mode === void 0 ? {} : { mode: options.mode }
@@ -458,7 +458,7 @@ withIssueOptions(
458
458
  withGlobalOptions(
459
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")
460
460
  ).action(async (issue, options) => {
461
- const { runStatus } = await import("./operations-QDJAFZUN.js");
461
+ const { runStatus } = await import("./operations-O4FORFIH.js");
462
462
  process.exit(
463
463
  await runStatus(issue, { ...options.json === void 0 ? {} : { json: options.json } })
464
464
  );
@@ -467,7 +467,7 @@ withGlobalOptions(
467
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")
468
468
  ).action(
469
469
  async (issue, options) => {
470
- const { runUsage, USAGE_GROUP_KEYS } = await import("./usage-WDDNSIHP.js");
470
+ const { runUsage, USAGE_GROUP_KEYS } = await import("./usage-KTMYXAPF.js");
471
471
  const by = options.by;
472
472
  if (by !== void 0 && !USAGE_GROUP_KEYS.includes(by)) {
473
473
  printError("Must be one of: harness, provider, model, purpose, status.");
@@ -485,20 +485,20 @@ withGlobalOptions(
485
485
  withGlobalOptions(
486
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")
487
487
  ).action(async (options) => {
488
- const { runPs } = await import("./ps-CX7756QG.js");
488
+ const { runPs } = await import("./ps-76L6ZAZL.js");
489
489
  process.exit(await runPs(options));
490
490
  });
491
491
  withGlobalOptions(
492
492
  program.command("runs").description("History of the runs of this project, with how each ended")
493
493
  ).action(async () => {
494
- const { runRuns } = await import("./operations-QDJAFZUN.js");
494
+ const { runRuns } = await import("./operations-O4FORFIH.js");
495
495
  process.exit(await runRuns());
496
496
  });
497
497
  withGlobalOptions(
498
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)")
499
499
  ).action(
500
500
  async (issue, options) => {
501
- const { runLogs } = await import("./operations-QDJAFZUN.js");
501
+ const { runLogs } = await import("./operations-O4FORFIH.js");
502
502
  const kinds = options.kind === void 0 ? void 0 : options.kind.split(",").map((kind) => kind.trim()).filter((kind) => kind !== "");
503
503
  process.exit(
504
504
  await runLogs(issue ?? options.issue, {
@@ -512,13 +512,13 @@ withGlobalOptions(
512
512
  withGlobalOptions(
513
513
  program.command("pause").description("Ask the running pipeline to stop after writing a checkpoint")
514
514
  ).action(async () => {
515
- const { runPause } = await import("./operations-QDJAFZUN.js");
515
+ const { runPause } = await import("./operations-O4FORFIH.js");
516
516
  process.exit(await runPause());
517
517
  });
518
518
  withGlobalOptions(
519
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")
520
520
  ).action(async (issue) => {
521
- const { runCancel } = await import("./operations-QDJAFZUN.js");
521
+ const { runCancel } = await import("./operations-O4FORFIH.js");
522
522
  process.exit(await runCancel(issue));
523
523
  });
524
524
  withIssueOptions(
@@ -526,7 +526,7 @@ withIssueOptions(
526
526
  program.command("analyze").description("Analyze an issue with the configured agent").argument("<issue>", "Issue number")
527
527
  )
528
528
  ).action(async (issue) => {
529
- const { runAnalyze } = await import("./analyze-556KCJKZ.js");
529
+ const { runAnalyze } = await import("./analyze-Q4ONIWRZ.js");
530
530
  const code = await runAnalyze(issue);
531
531
  process.exit(code);
532
532
  });
@@ -535,7 +535,7 @@ withIssueOptions(
535
535
  program.command("prd").description("Generate a PRD from an analyzed issue with the configured agent").argument("<issue>", "Issue number")
536
536
  )
537
537
  ).action(async (issue) => {
538
- const { runPrd } = await import("./prd-LRV6IW3E.js");
538
+ const { runPrd } = await import("./prd-6CYEMLDY.js");
539
539
  const code = await runPrd(issue);
540
540
  process.exit(code);
541
541
  });
@@ -556,7 +556,7 @@ withUserStoryNumberingOptions(
556
556
  }
557
557
  throw error;
558
558
  }
559
- const { runPlan } = await import("./plan-RXOW32KY.js");
559
+ const { runPlan } = await import("./plan-OXAT344Q.js");
560
560
  const code = await runPlan(issue, void 0, numbering);
561
561
  process.exit(code);
562
562
  });
@@ -575,7 +575,7 @@ withWebOptions(
575
575
  ).action(
576
576
  async (positionalMaxIter, options) => {
577
577
  try {
578
- const { runExecute } = await import("./execute-QYLJ5L4T.js");
578
+ const { runExecute } = await import("./execute-LELOSR5T.js");
579
579
  const code = await runExecute(positionalMaxIter, options);
580
580
  process.exit(code);
581
581
  } catch (error) {
@@ -589,7 +589,7 @@ withIssueOptions(
589
589
  program.command("review").description("Validate an issue resolution with the configured agent").argument("<issue>", "Issue number")
590
590
  )
591
591
  ).action(async (issue) => {
592
- const { runReview } = await import("./review-AEFISJZD.js");
592
+ const { runReview } = await import("./review-LVZT2TMW.js");
593
593
  const code = await runReview(issue);
594
594
  process.exit(code);
595
595
  });
@@ -598,7 +598,7 @@ withIssueOptions(
598
598
  program.command("pr").description("Create a pull request with the configured agent").argument("<issue>", "Issue number")
599
599
  )
600
600
  ).action(async (issue) => {
601
- const { runPr } = await import("./pr-3WFYAVA7.js");
601
+ const { runPr } = await import("./pr-UZHNKKZC.js");
602
602
  const code = await runPr(issue);
603
603
  process.exit(code);
604
604
  });
@@ -606,63 +606,71 @@ var webCommand = program.command("web").description("Manage the web monitoring s
606
606
  webCommand.command("serve").description(
607
607
  "Run the web monitor server in the foreground (internal \u2014 spawned detached by --web)"
608
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) => {
609
- const { runWebServe } = await import("./web-IPGY52AK.js");
609
+ const { runWebServe } = await import("./web-B5UPHHR5.js");
610
610
  const code = await runWebServe(options);
611
611
  if (code !== 0) {
612
612
  process.exit(code);
613
613
  }
614
614
  });
615
615
  webCommand.command("stop").description("Stop the running web monitor server").action(async () => {
616
- const { runWebStop } = await import("./web-IPGY52AK.js");
616
+ const { runWebStop } = await import("./web-B5UPHHR5.js");
617
617
  const code = await runWebStop();
618
618
  process.exit(code);
619
619
  });
620
620
  withGlobalOptions(
621
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")
622
622
  ).action(async (options) => {
623
- const { runPolicy } = await import("./policy-6WQZB6B2.js");
623
+ const { runPolicy } = await import("./policy-U5NBFAO5.js");
624
624
  const code = await runPolicy(options);
625
625
  process.exit(code);
626
626
  });
627
627
  var routingCommand = withGlobalOptions(
628
- 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")
629
629
  );
630
- routingCommand.option("--json", "Emit the resolved routing config as JSON").action(async (options) => {
631
- const { runRoutingInspect } = await import("./routing-EA5NJGNU.js");
632
- 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-EK6RBZM4.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-EK6RBZM4.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").option("--active", "Apply the policy to future runs instead of leaving routing in shadow mode").action(async (policy, _options, command) => {
639
+ const { runRoutingUse } = await import("./routing-EK6RBZM4.js");
640
+ process.exit(await runRoutingUse(policy, command.optsWithGlobals()));
633
641
  });
634
- routingCommand.command("report").description("Shadow agreement between selected and actual harness").option("--issue <n>", "Issue number").option("--json", "Emit JSON").action(async (options) => {
635
- const { runRoutingReport } = await import("./routing-EA5NJGNU.js");
636
- 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-EK6RBZM4.js");
644
+ process.exit(await runRoutingReport(command.optsWithGlobals()));
637
645
  });
638
646
  var conventionsCommand = withGlobalOptions(
639
647
  program.command("conventions").description("Compute the repository Git convention (branch, commit, PR title)")
640
648
  );
641
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) => {
642
- const { runConventionsBranch } = await import("./conventions-Z3QC2NSG.js");
650
+ const { runConventionsBranch } = await import("./conventions-XOT6YW5L.js");
643
651
  process.exit(await runConventionsBranch(options));
644
652
  });
645
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(
646
654
  async (options) => {
647
- const { runConventionsCommit } = await import("./conventions-Z3QC2NSG.js");
655
+ const { runConventionsCommit } = await import("./conventions-XOT6YW5L.js");
648
656
  process.exit(await runConventionsCommit(options));
649
657
  }
650
658
  );
651
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) => {
652
- const { runConventionsPrTitle } = await import("./conventions-Z3QC2NSG.js");
660
+ const { runConventionsPrTitle } = await import("./conventions-XOT6YW5L.js");
653
661
  process.exit(await runConventionsPrTitle(options));
654
662
  });
655
663
  var agentCommand = withGlobalOptions(
656
664
  program.command("agent").description("Inspect the resolved agent and model for each phase").option("--json", "Emit the resolved agent configuration as JSON")
657
665
  );
658
666
  agentCommand.action(async (options) => {
659
- const { runAgent } = await import("./agent-PMWCDWOW.js");
667
+ const { runAgent } = await import("./agent-HMZTXCRT.js");
660
668
  const code = await runAgent(options);
661
669
  process.exit(code);
662
670
  });
663
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(
664
672
  async (provider, options) => {
665
- const { runAgentUse } = await import("./agent-PMWCDWOW.js");
673
+ const { runAgentUse } = await import("./agent-HMZTXCRT.js");
666
674
  const code = await runAgentUse(provider, options);
667
675
  process.exit(code);
668
676
  }
@@ -674,7 +682,7 @@ withGlobalOptions(
674
682
  )
675
683
  ).action(
676
684
  async (pr, options) => {
677
- const { runPrReview } = await import("./pr-review-RK63ZEMM.js");
685
+ const { runPrReview } = await import("./pr-review-Q4ACAWDM.js");
678
686
  const code = await runPrReview(pr, options);
679
687
  process.exit(code);
680
688
  }
@@ -700,7 +708,7 @@ withGlobalOptions(
700
708
  printError("Unknown bench mode. Use 'synthetic' or 'real'.");
701
709
  process.exit(1);
702
710
  }
703
- const { runBench } = await import("./bench-UBFGKUHR.js");
711
+ const { runBench } = await import("./bench-WWWXLTFH.js");
704
712
  process.exit(
705
713
  await runBench({
706
714
  ...options.mode === void 0 ? {} : { mode: options.mode },
@@ -718,13 +726,13 @@ withGlobalOptions(
718
726
  }
719
727
  );
720
728
  program.action(async () => {
721
- const { listLiveRuns } = await import("./registry-POSB35Q4.js");
729
+ const { listLiveRuns } = await import("./registry-XLHHYLTR.js");
722
730
  const runs = await listLiveRuns();
723
731
  if (runs.length === 0) {
724
732
  program.help();
725
733
  return;
726
734
  }
727
- const { runPs } = await import("./ps-CX7756QG.js");
735
+ const { runPs } = await import("./ps-76L6ZAZL.js");
728
736
  process.exit(await runPs());
729
737
  });
730
738
  program.parse();