issue-flow 0.14.0 → 0.15.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 (142) hide show
  1. package/dist/{agent-OX3KPHE4.js → agent-AT64RXTA.js} +11 -11
  2. package/dist/{analyze-WIND2SEB.js → analyze-O2PYDIFK.js} +18 -18
  3. package/dist/{apply-JNOI2LR4.js → apply-SSU6QCD4.js} +11 -11
  4. package/dist/{bench-B4VZON7E.js → bench-ODFPAGW6.js} +16 -16
  5. package/dist/{chunk-QD4VOILZ.js → chunk-2ZAM45PZ.js} +9 -9
  6. package/dist/{chunk-PBTA3QQX.js → chunk-4RXYFWP7.js} +3 -3
  7. package/dist/{chunk-CGKLE6WR.js → chunk-5ZKBIXET.js} +12 -12
  8. package/dist/{chunk-WB2X37MO.js → chunk-6E2PEBFT.js} +7 -7
  9. package/dist/{chunk-UJ3L2MS7.js → chunk-6FXOU2KR.js} +6 -6
  10. package/dist/{chunk-RVO7L4FX.js → chunk-6SRE4KD7.js} +4 -4
  11. package/dist/{chunk-KMRFRXIT.js → chunk-A35HE4V7.js} +3 -3
  12. package/dist/{chunk-6BENHR2I.js → chunk-ARWNYXFL.js} +12 -12
  13. package/dist/{chunk-3WFZETIM.js → chunk-AYYMW33T.js} +2 -2
  14. package/dist/{chunk-LFEQIZLB.js → chunk-BMHGRYL6.js} +396 -64
  15. package/dist/chunk-BMHGRYL6.js.map +1 -0
  16. package/dist/{chunk-PZTWU277.js → chunk-F4OK7KEP.js} +7 -7
  17. package/dist/{chunk-SZMHCEYV.js → chunk-FK4IDY6P.js} +9 -9
  18. package/dist/{chunk-BEZ5BA5U.js → chunk-GSZCQUCY.js} +2 -2
  19. package/dist/{chunk-X44FKNKP.js → chunk-HGSYD57B.js} +34 -30
  20. package/dist/chunk-HGSYD57B.js.map +1 -0
  21. package/dist/{chunk-2IQ6M4ZE.js → chunk-KAHQ6F5C.js} +11 -11
  22. package/dist/{chunk-F6TOYSYY.js → chunk-MEFY4B7T.js} +9 -9
  23. package/dist/{chunk-BRCNQXYQ.js → chunk-MGCOQU6N.js} +4 -4
  24. package/dist/{chunk-KT7JKOXB.js → chunk-MROS3SKL.js} +3 -3
  25. package/dist/{chunk-TYRNTSPJ.js → chunk-NVZMBXTE.js} +3 -3
  26. package/dist/{chunk-PHW2YV6N.js → chunk-PCN7ZQND.js} +5 -5
  27. package/dist/{chunk-76MMPJ53.js → chunk-QRCGW2ZO.js} +5 -5
  28. package/dist/{chunk-OR43364P.js → chunk-RPXDBX6R.js} +3 -3
  29. package/dist/{chunk-JN6D3MY6.js → chunk-RWEXK55D.js} +2 -2
  30. package/dist/{chunk-67YIU2VB.js → chunk-TBDP6QPJ.js} +4 -4
  31. package/dist/{chunk-G5EK2XRN.js → chunk-UNQYMR3H.js} +2 -2
  32. package/dist/{chunk-QK7WUO7A.js → chunk-VR34TXHF.js} +6 -6
  33. package/dist/{chunk-QJ5UZAH5.js → chunk-WM3Y7Q4A.js} +10 -10
  34. package/dist/{chunk-LBGHI4S2.js → chunk-XDKGA6UX.js} +4 -2
  35. package/dist/{chunk-LBGHI4S2.js.map → chunk-XDKGA6UX.js.map} +1 -1
  36. package/dist/{chunk-REO3PXXO.js → chunk-XG2NYDRA.js} +3 -3
  37. package/dist/{chunk-LEW4QM74.js → chunk-XLVGPXNL.js} +2 -2
  38. package/dist/{chunk-J3SOTUVI.js → chunk-XQHFC62U.js} +2 -2
  39. package/dist/{chunk-QZVKRDJY.js → chunk-XRLRKTQA.js} +10 -10
  40. package/dist/{chunk-B72RQZBV.js → chunk-ZFIXEYUJ.js} +21 -18
  41. package/dist/chunk-ZFIXEYUJ.js.map +1 -0
  42. package/dist/{chunk-V7MO5EDS.js → chunk-ZPIVCM7Q.js} +3 -3
  43. package/dist/{chunk-OOVG2KBY.js → chunk-ZXPASFHG.js} +2 -2
  44. package/dist/cli.js +56 -65
  45. package/dist/cli.js.map +1 -1
  46. package/dist/{config-HMFMCY2M.js → config-UMP6DBJB.js} +10 -10
  47. package/dist/{conventions-NJF2OPVQ.js → conventions-DKH7AE4T.js} +12 -12
  48. package/dist/{diagnostics-THH42ZMP.js → diagnostics-GOGCLTRS.js} +6 -6
  49. package/dist/execute-E3BRMDAQ.js +35 -0
  50. package/dist/{generate-FW5C6NP7.js → generate-AGBT7EHX.js} +18 -18
  51. package/dist/{git-W72QQ6GT.js → git-AC542GU2.js} +2 -2
  52. package/dist/init-LLBVJNPE.js +24 -0
  53. package/dist/{operations-BCFOBH42.js → operations-JQYK2EMT.js} +11 -11
  54. package/dist/{permissions-4AKNQZHK.js → permissions-6HL52K54.js} +3 -3
  55. package/dist/plan-HSLWDJEZ.js +34 -0
  56. package/dist/{policy-DT6Q6ZVM.js → policy-IMRXGG7X.js} +11 -11
  57. package/dist/pr-6TCZXG6K.js +39 -0
  58. package/dist/pr-review-6MWJO2NP.js +32 -0
  59. package/dist/prd-D6YDYAFX.js +33 -0
  60. package/dist/{ps-RFORTCUD.js → ps-KUUZ6TUL.js} +9 -9
  61. package/dist/{recorder-KCCPMKQG.js → recorder-BJ2KIAWT.js} +5 -5
  62. package/dist/{registry-GLPXOMFG.js → registry-SB7XTMGE.js} +5 -5
  63. package/dist/{resume-M5RLKP4I.js → resume-QNLQSCR5.js} +34 -34
  64. package/dist/review-3KJ4BH2V.js +35 -0
  65. package/dist/{routing-NNT5WKGX.js → routing-TN7GLMGU.js} +11 -11
  66. package/dist/run-5EHIFF2V.js +54 -0
  67. package/dist/{state-manager-GQH32C44.js → state-manager-ZEPWTCA6.js} +3 -3
  68. package/dist/{usage-V2CHE5PY.js → usage-QL563I7F.js} +9 -9
  69. package/dist/{web-EA3KGNFN.js → web-PPSMNTQ6.js} +18 -57
  70. package/dist/{web-EA3KGNFN.js.map → web-PPSMNTQ6.js.map} +1 -1
  71. package/package.json +1 -1
  72. package/web/AGENTS.md +4 -0
  73. package/web/public/app.js +29 -10
  74. package/dist/chunk-B72RQZBV.js.map +0 -1
  75. package/dist/chunk-LFEQIZLB.js.map +0 -1
  76. package/dist/chunk-X44FKNKP.js.map +0 -1
  77. package/dist/execute-KFNNZZHI.js +0 -35
  78. package/dist/init-HTN4V67Q.js +0 -24
  79. package/dist/plan-SIZLGA4V.js +0 -34
  80. package/dist/pr-OMWCGUOW.js +0 -39
  81. package/dist/pr-review-N24CZPKR.js +0 -32
  82. package/dist/prd-5OFTZAHJ.js +0 -33
  83. package/dist/review-YM4JAABY.js +0 -35
  84. package/dist/run-PZUKHPQK.js +0 -54
  85. /package/dist/{agent-OX3KPHE4.js.map → agent-AT64RXTA.js.map} +0 -0
  86. /package/dist/{analyze-WIND2SEB.js.map → analyze-O2PYDIFK.js.map} +0 -0
  87. /package/dist/{apply-JNOI2LR4.js.map → apply-SSU6QCD4.js.map} +0 -0
  88. /package/dist/{bench-B4VZON7E.js.map → bench-ODFPAGW6.js.map} +0 -0
  89. /package/dist/{chunk-QD4VOILZ.js.map → chunk-2ZAM45PZ.js.map} +0 -0
  90. /package/dist/{chunk-PBTA3QQX.js.map → chunk-4RXYFWP7.js.map} +0 -0
  91. /package/dist/{chunk-CGKLE6WR.js.map → chunk-5ZKBIXET.js.map} +0 -0
  92. /package/dist/{chunk-WB2X37MO.js.map → chunk-6E2PEBFT.js.map} +0 -0
  93. /package/dist/{chunk-UJ3L2MS7.js.map → chunk-6FXOU2KR.js.map} +0 -0
  94. /package/dist/{chunk-RVO7L4FX.js.map → chunk-6SRE4KD7.js.map} +0 -0
  95. /package/dist/{chunk-KMRFRXIT.js.map → chunk-A35HE4V7.js.map} +0 -0
  96. /package/dist/{chunk-6BENHR2I.js.map → chunk-ARWNYXFL.js.map} +0 -0
  97. /package/dist/{chunk-3WFZETIM.js.map → chunk-AYYMW33T.js.map} +0 -0
  98. /package/dist/{chunk-PZTWU277.js.map → chunk-F4OK7KEP.js.map} +0 -0
  99. /package/dist/{chunk-SZMHCEYV.js.map → chunk-FK4IDY6P.js.map} +0 -0
  100. /package/dist/{chunk-BEZ5BA5U.js.map → chunk-GSZCQUCY.js.map} +0 -0
  101. /package/dist/{chunk-2IQ6M4ZE.js.map → chunk-KAHQ6F5C.js.map} +0 -0
  102. /package/dist/{chunk-F6TOYSYY.js.map → chunk-MEFY4B7T.js.map} +0 -0
  103. /package/dist/{chunk-BRCNQXYQ.js.map → chunk-MGCOQU6N.js.map} +0 -0
  104. /package/dist/{chunk-KT7JKOXB.js.map → chunk-MROS3SKL.js.map} +0 -0
  105. /package/dist/{chunk-TYRNTSPJ.js.map → chunk-NVZMBXTE.js.map} +0 -0
  106. /package/dist/{chunk-PHW2YV6N.js.map → chunk-PCN7ZQND.js.map} +0 -0
  107. /package/dist/{chunk-76MMPJ53.js.map → chunk-QRCGW2ZO.js.map} +0 -0
  108. /package/dist/{chunk-OR43364P.js.map → chunk-RPXDBX6R.js.map} +0 -0
  109. /package/dist/{chunk-JN6D3MY6.js.map → chunk-RWEXK55D.js.map} +0 -0
  110. /package/dist/{chunk-67YIU2VB.js.map → chunk-TBDP6QPJ.js.map} +0 -0
  111. /package/dist/{chunk-G5EK2XRN.js.map → chunk-UNQYMR3H.js.map} +0 -0
  112. /package/dist/{chunk-QK7WUO7A.js.map → chunk-VR34TXHF.js.map} +0 -0
  113. /package/dist/{chunk-QJ5UZAH5.js.map → chunk-WM3Y7Q4A.js.map} +0 -0
  114. /package/dist/{chunk-REO3PXXO.js.map → chunk-XG2NYDRA.js.map} +0 -0
  115. /package/dist/{chunk-LEW4QM74.js.map → chunk-XLVGPXNL.js.map} +0 -0
  116. /package/dist/{chunk-J3SOTUVI.js.map → chunk-XQHFC62U.js.map} +0 -0
  117. /package/dist/{chunk-QZVKRDJY.js.map → chunk-XRLRKTQA.js.map} +0 -0
  118. /package/dist/{chunk-V7MO5EDS.js.map → chunk-ZPIVCM7Q.js.map} +0 -0
  119. /package/dist/{chunk-OOVG2KBY.js.map → chunk-ZXPASFHG.js.map} +0 -0
  120. /package/dist/{config-HMFMCY2M.js.map → config-UMP6DBJB.js.map} +0 -0
  121. /package/dist/{conventions-NJF2OPVQ.js.map → conventions-DKH7AE4T.js.map} +0 -0
  122. /package/dist/{diagnostics-THH42ZMP.js.map → diagnostics-GOGCLTRS.js.map} +0 -0
  123. /package/dist/{execute-KFNNZZHI.js.map → execute-E3BRMDAQ.js.map} +0 -0
  124. /package/dist/{generate-FW5C6NP7.js.map → generate-AGBT7EHX.js.map} +0 -0
  125. /package/dist/{git-W72QQ6GT.js.map → git-AC542GU2.js.map} +0 -0
  126. /package/dist/{init-HTN4V67Q.js.map → init-LLBVJNPE.js.map} +0 -0
  127. /package/dist/{operations-BCFOBH42.js.map → operations-JQYK2EMT.js.map} +0 -0
  128. /package/dist/{permissions-4AKNQZHK.js.map → permissions-6HL52K54.js.map} +0 -0
  129. /package/dist/{plan-SIZLGA4V.js.map → plan-HSLWDJEZ.js.map} +0 -0
  130. /package/dist/{policy-DT6Q6ZVM.js.map → policy-IMRXGG7X.js.map} +0 -0
  131. /package/dist/{pr-OMWCGUOW.js.map → pr-6TCZXG6K.js.map} +0 -0
  132. /package/dist/{pr-review-N24CZPKR.js.map → pr-review-6MWJO2NP.js.map} +0 -0
  133. /package/dist/{prd-5OFTZAHJ.js.map → prd-D6YDYAFX.js.map} +0 -0
  134. /package/dist/{ps-RFORTCUD.js.map → ps-KUUZ6TUL.js.map} +0 -0
  135. /package/dist/{recorder-KCCPMKQG.js.map → recorder-BJ2KIAWT.js.map} +0 -0
  136. /package/dist/{registry-GLPXOMFG.js.map → registry-SB7XTMGE.js.map} +0 -0
  137. /package/dist/{resume-M5RLKP4I.js.map → resume-QNLQSCR5.js.map} +0 -0
  138. /package/dist/{review-YM4JAABY.js.map → review-3KJ4BH2V.js.map} +0 -0
  139. /package/dist/{routing-NNT5WKGX.js.map → routing-TN7GLMGU.js.map} +0 -0
  140. /package/dist/{run-PZUKHPQK.js.map → run-5EHIFF2V.js.map} +0 -0
  141. /package/dist/{state-manager-GQH32C44.js.map → state-manager-ZEPWTCA6.js.map} +0 -0
  142. /package/dist/{usage-V2CHE5PY.js.map → usage-QL563I7F.js.map} +0 -0
package/dist/cli.js CHANGED
@@ -9,25 +9,25 @@ import {
9
9
  setRoutingCliOverrides,
10
10
  setVerifyCliOverrides,
11
11
  setWebCliOverrides
12
- } from "./chunk-QJ5UZAH5.js";
13
- import "./chunk-QK7WUO7A.js";
12
+ } from "./chunk-WM3Y7Q4A.js";
13
+ import "./chunk-VR34TXHF.js";
14
14
  import {
15
15
  printError,
16
16
  setGlobalTimeout,
17
17
  setInactivityTimeout,
18
18
  setVerbose
19
- } from "./chunk-TYRNTSPJ.js";
19
+ } from "./chunk-NVZMBXTE.js";
20
20
  import "./chunk-6QYMSNVA.js";
21
- import "./chunk-3WFZETIM.js";
21
+ import "./chunk-AYYMW33T.js";
22
22
  import "./chunk-HAKDLR6N.js";
23
- import "./chunk-BEZ5BA5U.js";
24
- import "./chunk-67YIU2VB.js";
23
+ import "./chunk-GSZCQUCY.js";
24
+ import "./chunk-TBDP6QPJ.js";
25
25
  import "./chunk-P3LRUNC6.js";
26
- import "./chunk-G5EK2XRN.js";
27
- import "./chunk-J3SOTUVI.js";
26
+ import "./chunk-UNQYMR3H.js";
27
+ import "./chunk-XQHFC62U.js";
28
28
  import {
29
29
  isAgentProviderId
30
- } from "./chunk-LBGHI4S2.js";
30
+ } from "./chunk-XDKGA6UX.js";
31
31
  import "./chunk-7Z4Y3VKM.js";
32
32
  import "./chunk-XEYH6ZZI.js";
33
33
 
@@ -36,6 +36,18 @@ import { createRequire } from "module";
36
36
  import { Command, InvalidArgumentError, Option } from "commander";
37
37
 
38
38
  // src/cli-options.ts
39
+ function resolveWebOverrides(opts) {
40
+ const overrides = {};
41
+ if (opts.web === true || opts.serve === true || opts.restartWeb === true) {
42
+ overrides.enabled = true;
43
+ }
44
+ if (opts.port !== void 0) overrides.port = opts.port;
45
+ if (opts.host !== void 0) overrides.host = opts.host;
46
+ if (opts.refresh !== void 0) overrides.refreshSeconds = opts.refresh;
47
+ if (opts.webLogLimit !== void 0) overrides.logLimit = opts.webLogLimit;
48
+ if (opts.webNoLogs === true) overrides.includeLogs = false;
49
+ return overrides;
50
+ }
39
51
  function resolveNoBranch(options) {
40
52
  return options.branch === false ? true : void 0;
41
53
  }
@@ -279,33 +291,11 @@ function withResilienceOptions(cmd) {
279
291
  return cmd.option("--continuous", "Long-running profile: keep going without supervision").option("--resilient", "Alias of --continuous").option("--no-failover", "Never migrate a phase to another agent provider").option("--auto-decompose", "Act on a decomposition report instead of only writing it");
280
292
  }
281
293
  function withWebOptions(cmd) {
282
- return cmd.option("--web", "Enable the web monitoring server").option("--serve", "Alias for --web").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).option("--web-log-limit <n>", "Max log entries kept in the snapshot", parseInteger).option("--web-no-logs", "Exclude logs from the published snapshot");
294
+ return cmd.option("--web", "Enable the web monitoring server").option("--serve", "Alias for --web").option("--restart-web", "Restart the web monitor before serving it (implies --web)").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).option("--web-log-limit <n>", "Max log entries kept in the snapshot", parseInteger).option("--web-no-logs", "Exclude logs from the published snapshot");
283
295
  }
284
296
  function withIssueOptions(cmd) {
285
297
  return cmd.option("--local", "Prefer the local file Issue provider").option("--github", "Prefer the GitHub Issue provider").option("--prefer-local", "On divergence, use the local version without asking").option("--prefer-github", "On divergence, use the GitHub version without asking").option("--ask", "On divergence, ask which version to use (interactive only)");
286
298
  }
287
- function resolveWebOverrides(opts) {
288
- const overrides = {};
289
- if (opts.web === true || opts.serve === true) {
290
- overrides.enabled = true;
291
- }
292
- if (opts.port !== void 0) {
293
- overrides.port = opts.port;
294
- }
295
- if (opts.host !== void 0) {
296
- overrides.host = opts.host;
297
- }
298
- if (opts.refresh !== void 0) {
299
- overrides.refreshSeconds = opts.refresh;
300
- }
301
- if (opts.webLogLimit !== void 0) {
302
- overrides.logLimit = opts.webLogLimit;
303
- }
304
- if (opts.webNoLogs === true) {
305
- overrides.includeLogs = false;
306
- }
307
- return overrides;
308
- }
309
299
  var program = new Command();
310
300
  program.name("issue-flow").description(
311
301
  "Unified CLI for orchestrating the full issue-flow pipeline via Claude Code, Codex CLI, Cursor CLI or Antigravity CLI."
@@ -362,8 +352,8 @@ withIssueOptions(
362
352
  )
363
353
  ).action(
364
354
  async (options) => {
365
- const { loadIssuesConfig } = await import("./config-HMFMCY2M.js");
366
- const { runInit } = await import("./init-HTN4V67Q.js");
355
+ const { loadIssuesConfig } = await import("./config-UMP6DBJB.js");
356
+ const { runInit } = await import("./init-LLBVJNPE.js");
367
357
  const { preferredProvider } = await loadIssuesConfig();
368
358
  const code = await runInit(preferredProvider, {
369
359
  ...options,
@@ -385,7 +375,7 @@ withGlobalOptions(
385
375
  }
386
376
  throw error;
387
377
  }
388
- const { runGenerate } = await import("./generate-FW5C6NP7.js");
378
+ const { runGenerate } = await import("./generate-AGBT7EHX.js");
389
379
  const code = await runGenerate(options.prompt, target);
390
380
  process.exit(code);
391
381
  });
@@ -428,7 +418,7 @@ withUserStoryNumberingOptions(
428
418
  }
429
419
  throw error;
430
420
  }
431
- const { runPipeline } = await import("./run-PZUKHPQK.js");
421
+ const { runPipeline } = await import("./run-5EHIFF2V.js");
432
422
  const code = await runPipeline(
433
423
  issues,
434
424
  options.mode,
@@ -445,7 +435,8 @@ withUserStoryNumberingOptions(
445
435
  retryForever: options.retryForever,
446
436
  onIssueFailure: options.onIssueFailure,
447
437
  background: options.background,
448
- detachedChild: options.detachedChild
438
+ detachedChild: options.detachedChild,
439
+ restartWeb: options.restartWeb
449
440
  }
450
441
  );
451
442
  process.exit(code);
@@ -456,7 +447,7 @@ withIssueOptions(
456
447
  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")
457
448
  )
458
449
  ).action(async (issue, options) => {
459
- const { runResume } = await import("./resume-M5RLKP4I.js");
450
+ const { runResume } = await import("./resume-QNLQSCR5.js");
460
451
  const code = await runResume(issue, {
461
452
  ...options.all === void 0 ? {} : { all: options.all },
462
453
  ...options.mode === void 0 ? {} : { mode: options.mode }
@@ -466,7 +457,7 @@ withIssueOptions(
466
457
  withGlobalOptions(
467
458
  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")
468
459
  ).action(async (issue, options) => {
469
- const { runStatus } = await import("./operations-BCFOBH42.js");
460
+ const { runStatus } = await import("./operations-JQYK2EMT.js");
470
461
  process.exit(
471
462
  await runStatus(issue, { ...options.json === void 0 ? {} : { json: options.json } })
472
463
  );
@@ -475,7 +466,7 @@ withGlobalOptions(
475
466
  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")
476
467
  ).action(
477
468
  async (issue, options) => {
478
- const { runUsage, USAGE_GROUP_KEYS } = await import("./usage-V2CHE5PY.js");
469
+ const { runUsage, USAGE_GROUP_KEYS } = await import("./usage-QL563I7F.js");
479
470
  const by = options.by;
480
471
  if (by !== void 0 && !USAGE_GROUP_KEYS.includes(by)) {
481
472
  printError("Must be one of: harness, provider, model, purpose, status.");
@@ -493,20 +484,20 @@ withGlobalOptions(
493
484
  withGlobalOptions(
494
485
  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")
495
486
  ).action(async (options) => {
496
- const { runPs } = await import("./ps-RFORTCUD.js");
487
+ const { runPs } = await import("./ps-KUUZ6TUL.js");
497
488
  process.exit(await runPs(options));
498
489
  });
499
490
  withGlobalOptions(
500
491
  program.command("runs").description("History of the runs of this project, with how each ended")
501
492
  ).action(async () => {
502
- const { runRuns } = await import("./operations-BCFOBH42.js");
493
+ const { runRuns } = await import("./operations-JQYK2EMT.js");
503
494
  process.exit(await runRuns());
504
495
  });
505
496
  withGlobalOptions(
506
497
  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)")
507
498
  ).action(
508
499
  async (issue, options) => {
509
- const { runLogs } = await import("./operations-BCFOBH42.js");
500
+ const { runLogs } = await import("./operations-JQYK2EMT.js");
510
501
  const kinds = options.kind === void 0 ? void 0 : options.kind.split(",").map((kind) => kind.trim()).filter((kind) => kind !== "");
511
502
  process.exit(
512
503
  await runLogs(issue ?? options.issue, {
@@ -520,13 +511,13 @@ withGlobalOptions(
520
511
  withGlobalOptions(
521
512
  program.command("pause").description("Ask the running pipeline to stop after writing a checkpoint")
522
513
  ).action(async () => {
523
- const { runPause } = await import("./operations-BCFOBH42.js");
514
+ const { runPause } = await import("./operations-JQYK2EMT.js");
524
515
  process.exit(await runPause());
525
516
  });
526
517
  withGlobalOptions(
527
518
  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")
528
519
  ).action(async (issue) => {
529
- const { runCancel } = await import("./operations-BCFOBH42.js");
520
+ const { runCancel } = await import("./operations-JQYK2EMT.js");
530
521
  process.exit(await runCancel(issue));
531
522
  });
532
523
  withIssueOptions(
@@ -534,7 +525,7 @@ withIssueOptions(
534
525
  program.command("analyze").description("Analyze an issue with the configured agent").argument("<issue>", "Issue number")
535
526
  )
536
527
  ).action(async (issue) => {
537
- const { runAnalyze } = await import("./analyze-WIND2SEB.js");
528
+ const { runAnalyze } = await import("./analyze-O2PYDIFK.js");
538
529
  const code = await runAnalyze(issue);
539
530
  process.exit(code);
540
531
  });
@@ -543,7 +534,7 @@ withIssueOptions(
543
534
  program.command("prd").description("Generate a PRD from an analyzed issue with the configured agent").argument("<issue>", "Issue number")
544
535
  )
545
536
  ).action(async (issue) => {
546
- const { runPrd } = await import("./prd-5OFTZAHJ.js");
537
+ const { runPrd } = await import("./prd-D6YDYAFX.js");
547
538
  const code = await runPrd(issue);
548
539
  process.exit(code);
549
540
  });
@@ -564,7 +555,7 @@ withUserStoryNumberingOptions(
564
555
  }
565
556
  throw error;
566
557
  }
567
- const { runPlan } = await import("./plan-SIZLGA4V.js");
558
+ const { runPlan } = await import("./plan-HSLWDJEZ.js");
568
559
  const code = await runPlan(issue, void 0, numbering);
569
560
  process.exit(code);
570
561
  });
@@ -583,7 +574,7 @@ withWebOptions(
583
574
  ).action(
584
575
  async (positionalMaxIter, options) => {
585
576
  try {
586
- const { runExecute } = await import("./execute-KFNNZZHI.js");
577
+ const { runExecute } = await import("./execute-E3BRMDAQ.js");
587
578
  const code = await runExecute(positionalMaxIter, options);
588
579
  process.exit(code);
589
580
  } catch (error) {
@@ -597,7 +588,7 @@ withIssueOptions(
597
588
  program.command("review").description("Validate an issue resolution with the configured agent").argument("<issue>", "Issue number")
598
589
  )
599
590
  ).action(async (issue) => {
600
- const { runReview } = await import("./review-YM4JAABY.js");
591
+ const { runReview } = await import("./review-3KJ4BH2V.js");
601
592
  const code = await runReview(issue);
602
593
  process.exit(code);
603
594
  });
@@ -606,7 +597,7 @@ withIssueOptions(
606
597
  program.command("pr").description("Create a pull request with the configured agent").argument("<issue>", "Issue number")
607
598
  )
608
599
  ).action(async (issue) => {
609
- const { runPr } = await import("./pr-OMWCGUOW.js");
600
+ const { runPr } = await import("./pr-6TCZXG6K.js");
610
601
  const code = await runPr(issue);
611
602
  process.exit(code);
612
603
  });
@@ -614,21 +605,21 @@ var webCommand = program.command("web").description("Manage the web monitoring s
614
605
  webCommand.command("serve").description(
615
606
  "Run the web monitor server in the foreground (internal \u2014 spawned detached by --web)"
616
607
  ).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) => {
617
- const { runWebServe } = await import("./web-EA3KGNFN.js");
608
+ const { runWebServe } = await import("./web-PPSMNTQ6.js");
618
609
  const code = await runWebServe(options);
619
610
  if (code !== 0) {
620
611
  process.exit(code);
621
612
  }
622
613
  });
623
614
  webCommand.command("stop").description("Stop the running web monitor server").action(async () => {
624
- const { runWebStop } = await import("./web-EA3KGNFN.js");
615
+ const { runWebStop } = await import("./web-PPSMNTQ6.js");
625
616
  const code = await runWebStop();
626
617
  process.exit(code);
627
618
  });
628
619
  withGlobalOptions(
629
620
  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")
630
621
  ).action(async (options) => {
631
- const { runPolicy } = await import("./policy-DT6Q6ZVM.js");
622
+ const { runPolicy } = await import("./policy-IMRXGG7X.js");
632
623
  const code = await runPolicy(options);
633
624
  process.exit(code);
634
625
  });
@@ -636,41 +627,41 @@ var routingCommand = withGlobalOptions(
636
627
  program.command("routing").description("Inspect the shadow router (records a recommendation, does not act)")
637
628
  );
638
629
  routingCommand.option("--json", "Emit the resolved routing config as JSON").action(async (options) => {
639
- const { runRoutingInspect } = await import("./routing-NNT5WKGX.js");
630
+ const { runRoutingInspect } = await import("./routing-TN7GLMGU.js");
640
631
  process.exit(await runRoutingInspect(options));
641
632
  });
642
633
  routingCommand.command("report").description("Shadow agreement between selected and actual harness").option("--issue <n>", "Issue number").option("--json", "Emit JSON").action(async (options) => {
643
- const { runRoutingReport } = await import("./routing-NNT5WKGX.js");
634
+ const { runRoutingReport } = await import("./routing-TN7GLMGU.js");
644
635
  process.exit(await runRoutingReport(options));
645
636
  });
646
637
  var conventionsCommand = withGlobalOptions(
647
638
  program.command("conventions").description("Compute the repository Git convention (branch, commit, PR title)")
648
639
  );
649
640
  conventionsCommand.command("branch").description("Print the deterministic branch name for an issue").option("--issue <n>", "Issue number").option("--title <text>", "Issue title, when the issue cannot be resolved").option("--json", "Emit JSON").action(async (options) => {
650
- const { runConventionsBranch } = await import("./conventions-NJF2OPVQ.js");
641
+ const { runConventionsBranch } = await import("./conventions-DKH7AE4T.js");
651
642
  process.exit(await runConventionsBranch(options));
652
643
  });
653
644
  conventionsCommand.command("commit").description("Print a Conventional Commit message").requiredOption("--type <type>", "Change type (feat, fix, docs, \u2026)").option("--scope <scope>", "Optional scope").requiredOption("--subject <text>", "Commit subject").option("--issue <n>", "Issue number for the Refs trailer").option("--story <id>", "Story id (US-010)").option("--breaking <text>", "Breaking change description").option("--json", "Emit JSON").action(
654
645
  async (options) => {
655
- const { runConventionsCommit } = await import("./conventions-NJF2OPVQ.js");
646
+ const { runConventionsCommit } = await import("./conventions-DKH7AE4T.js");
656
647
  process.exit(await runConventionsCommit(options));
657
648
  }
658
649
  );
659
650
  conventionsCommand.command("pr-title").description("Print the Conventional Commit Pull Request title").option("--issue <n>", "Issue number").option("--title <text>", "Issue title, when the issue cannot be resolved").option("--json", "Emit JSON").action(async (options) => {
660
- const { runConventionsPrTitle } = await import("./conventions-NJF2OPVQ.js");
651
+ const { runConventionsPrTitle } = await import("./conventions-DKH7AE4T.js");
661
652
  process.exit(await runConventionsPrTitle(options));
662
653
  });
663
654
  var agentCommand = withGlobalOptions(
664
655
  program.command("agent").description("Inspect the resolved agent and model for each phase").option("--json", "Emit the resolved agent configuration as JSON")
665
656
  );
666
657
  agentCommand.action(async (options) => {
667
- const { runAgent } = await import("./agent-OX3KPHE4.js");
658
+ const { runAgent } = await import("./agent-AT64RXTA.js");
668
659
  const code = await runAgent(options);
669
660
  process.exit(code);
670
661
  });
671
662
  agentCommand.command("use").description("Write an agent preference to config.json or .issue-flow.json").argument("<provider>", "claude, codex, cursor or antigravity").option("--model <model>", "Model identifier for this preference").option("--global", "Write to ~/.issue-flow/config.json (default)").option("--project", "Write to .issue-flow.json in the repository").option("--phase <phase>", "Write only the override for this phase").action(
672
663
  async (provider, options) => {
673
- const { runAgentUse } = await import("./agent-OX3KPHE4.js");
664
+ const { runAgentUse } = await import("./agent-AT64RXTA.js");
674
665
  const code = await runAgentUse(provider, options);
675
666
  process.exit(code);
676
667
  }
@@ -682,7 +673,7 @@ withGlobalOptions(
682
673
  )
683
674
  ).action(
684
675
  async (pr, options) => {
685
- const { runPrReview } = await import("./pr-review-N24CZPKR.js");
676
+ const { runPrReview } = await import("./pr-review-6MWJO2NP.js");
686
677
  const code = await runPrReview(pr, options);
687
678
  process.exit(code);
688
679
  }
@@ -708,7 +699,7 @@ withGlobalOptions(
708
699
  printError("Unknown bench mode. Use 'synthetic' or 'real'.");
709
700
  process.exit(1);
710
701
  }
711
- const { runBench } = await import("./bench-B4VZON7E.js");
702
+ const { runBench } = await import("./bench-ODFPAGW6.js");
712
703
  process.exit(
713
704
  await runBench({
714
705
  ...options.mode === void 0 ? {} : { mode: options.mode },
@@ -726,13 +717,13 @@ withGlobalOptions(
726
717
  }
727
718
  );
728
719
  program.action(async () => {
729
- const { listLiveRuns } = await import("./registry-GLPXOMFG.js");
720
+ const { listLiveRuns } = await import("./registry-SB7XTMGE.js");
730
721
  const runs = await listLiveRuns();
731
722
  if (runs.length === 0) {
732
723
  program.help();
733
724
  return;
734
725
  }
735
- const { runPs } = await import("./ps-RFORTCUD.js");
726
+ const { runPs } = await import("./ps-KUUZ6TUL.js");
736
727
  process.exit(await runPs());
737
728
  });
738
729
  program.parse();