issue-flow 0.17.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 (110) hide show
  1. package/dist/{agent-TB6W7PT7.js → agent-HMZTXCRT.js} +5 -5
  2. package/dist/{analyze-6M3KEOX7.js → analyze-Q4ONIWRZ.js} +10 -10
  3. package/dist/{apply-ADB3ZK7W.js → apply-EEFPY2W4.js} +5 -5
  4. package/dist/{bench-FM7I7EIV.js → bench-WWWXLTFH.js} +9 -9
  5. package/dist/{chunk-KZ5EY5XX.js → chunk-34OCSKOB.js} +7 -7
  6. package/dist/{chunk-UWDCIFTP.js → chunk-45WZ6GMI.js} +27 -43
  7. package/dist/chunk-45WZ6GMI.js.map +1 -0
  8. package/dist/{chunk-QMIQR7EE.js → chunk-62GVVZQO.js} +3 -3
  9. package/dist/{chunk-YII4U7ZD.js → chunk-6K2LCFG6.js} +2 -2
  10. package/dist/{chunk-A4H7P7T7.js → chunk-7UMMFOL2.js} +3 -3
  11. package/dist/chunk-7UMMFOL2.js.map +1 -0
  12. package/dist/{chunk-HJBF4WD2.js → chunk-CWSQVHVV.js} +59 -25
  13. package/dist/chunk-CWSQVHVV.js.map +1 -0
  14. package/dist/{chunk-SGTTR4XW.js → chunk-E4I6MMHD.js} +4 -4
  15. package/dist/{chunk-6YQT3SSM.js → chunk-ECU7YO7S.js} +2 -2
  16. package/dist/{chunk-MI5TREN3.js → chunk-EG2MGDP5.js} +6 -6
  17. package/dist/{chunk-RCZJQUTC.js → chunk-HOAHMERN.js} +43 -10
  18. package/dist/chunk-HOAHMERN.js.map +1 -0
  19. package/dist/{chunk-HLAPOUEM.js → chunk-KMCS76ZW.js} +3 -3
  20. package/dist/{chunk-KZXQWC7U.js → chunk-KRAGAUKD.js} +8 -8
  21. package/dist/{chunk-E6KXCV3T.js → chunk-LGHND47K.js} +2 -2
  22. package/dist/{chunk-DV7HUC4Z.js → chunk-LI35PIIS.js} +2 -2
  23. package/dist/{chunk-Z5O2XBWA.js → chunk-LTH6XYZ3.js} +5 -5
  24. package/dist/{chunk-2SUFAE6X.js → chunk-NEWNXZ65.js} +21 -12
  25. package/dist/{chunk-2SUFAE6X.js.map → chunk-NEWNXZ65.js.map} +1 -1
  26. package/dist/{chunk-LPWPFIIB.js → chunk-OODXFCQV.js} +7 -7
  27. package/dist/{chunk-ISZ54SVE.js → chunk-PMLE7KAQ.js} +17 -9
  28. package/dist/chunk-PMLE7KAQ.js.map +1 -0
  29. package/dist/{chunk-HY5HLFDU.js → chunk-QF7VEL3M.js} +115 -14
  30. package/dist/chunk-QF7VEL3M.js.map +1 -0
  31. package/dist/{chunk-B3TSS7BT.js → chunk-QJ44VG5G.js} +2 -2
  32. package/dist/{chunk-VE3IYNDN.js → chunk-SA6HXL4Y.js} +2 -2
  33. package/dist/{chunk-UK4E2FUA.js → chunk-TZYINKCC.js} +75 -53
  34. package/dist/chunk-TZYINKCC.js.map +1 -0
  35. package/dist/{chunk-32JSYXEK.js → chunk-V7QOIQYC.js} +2 -2
  36. package/dist/{chunk-ANI2NTR4.js → chunk-XUEMATVY.js} +6 -6
  37. package/dist/{chunk-D6ZBGJ3L.js → chunk-ZVZMWNCG.js} +129 -35
  38. package/dist/chunk-ZVZMWNCG.js.map +1 -0
  39. package/dist/cli.js +35 -35
  40. package/dist/cli.js.map +1 -1
  41. package/dist/{config-KGZUPAUP.js → config-LEBZZCJP.js} +4 -4
  42. package/dist/{conventions-RYN7OXJN.js → conventions-XOT6YW5L.js} +6 -6
  43. package/dist/{execute-QL3ZQIAP.js → execute-LELOSR5T.js} +14 -14
  44. package/dist/{generate-CX6KNHZS.js → generate-JGW5JSKB.js} +10 -10
  45. package/dist/{init-PDVQDRS6.js → init-TO6MUXO4.js} +7 -5
  46. package/dist/{operations-CAKIT2BO.js → operations-O4FORFIH.js} +4 -4
  47. package/dist/{plan-PRORGS3L.js → plan-OXAT344Q.js} +12 -12
  48. package/dist/{policy-WX6O2JID.js → policy-U5NBFAO5.js} +5 -5
  49. package/dist/{pr-27RMQI5F.js → pr-UZHNKKZC.js} +12 -12
  50. package/dist/{pr-review-VNESMAMT.js → pr-review-Q4ACAWDM.js} +9 -9
  51. package/dist/{prd-ZNC4T5BS.js → prd-6CYEMLDY.js} +12 -12
  52. package/dist/{recorder-N7U66HCO.js → recorder-2BAKPBRA.js} +2 -2
  53. package/dist/{resume-VLWIE264.js → resume-URCU6CIJ.js} +26 -26
  54. package/dist/{review-7CREJDKB.js → review-LVZT2TMW.js} +13 -13
  55. package/dist/{routing-VCDYHSXA.js → routing-EK6RBZM4.js} +6 -6
  56. package/dist/run-2RXJCJKT.js +56 -0
  57. package/dist/{usage-U7QNGCPK.js → usage-KTMYXAPF.js} +3 -3
  58. package/dist/{web-HUNDHCJ4.js → web-B5UPHHR5.js} +8 -8
  59. package/package.json +1 -1
  60. package/web/AGENTS.md +115 -7
  61. package/web/public/app.css +393 -245
  62. package/web/public/app.js +108 -38
  63. package/web/public/index.html +106 -78
  64. package/dist/chunk-A4H7P7T7.js.map +0 -1
  65. package/dist/chunk-D6ZBGJ3L.js.map +0 -1
  66. package/dist/chunk-HJBF4WD2.js.map +0 -1
  67. package/dist/chunk-HY5HLFDU.js.map +0 -1
  68. package/dist/chunk-ISZ54SVE.js.map +0 -1
  69. package/dist/chunk-RCZJQUTC.js.map +0 -1
  70. package/dist/chunk-UK4E2FUA.js.map +0 -1
  71. package/dist/chunk-UWDCIFTP.js.map +0 -1
  72. package/dist/run-3MPORLF5.js +0 -56
  73. /package/dist/{agent-TB6W7PT7.js.map → agent-HMZTXCRT.js.map} +0 -0
  74. /package/dist/{analyze-6M3KEOX7.js.map → analyze-Q4ONIWRZ.js.map} +0 -0
  75. /package/dist/{apply-ADB3ZK7W.js.map → apply-EEFPY2W4.js.map} +0 -0
  76. /package/dist/{bench-FM7I7EIV.js.map → bench-WWWXLTFH.js.map} +0 -0
  77. /package/dist/{chunk-KZ5EY5XX.js.map → chunk-34OCSKOB.js.map} +0 -0
  78. /package/dist/{chunk-QMIQR7EE.js.map → chunk-62GVVZQO.js.map} +0 -0
  79. /package/dist/{chunk-YII4U7ZD.js.map → chunk-6K2LCFG6.js.map} +0 -0
  80. /package/dist/{chunk-SGTTR4XW.js.map → chunk-E4I6MMHD.js.map} +0 -0
  81. /package/dist/{chunk-6YQT3SSM.js.map → chunk-ECU7YO7S.js.map} +0 -0
  82. /package/dist/{chunk-MI5TREN3.js.map → chunk-EG2MGDP5.js.map} +0 -0
  83. /package/dist/{chunk-HLAPOUEM.js.map → chunk-KMCS76ZW.js.map} +0 -0
  84. /package/dist/{chunk-KZXQWC7U.js.map → chunk-KRAGAUKD.js.map} +0 -0
  85. /package/dist/{chunk-E6KXCV3T.js.map → chunk-LGHND47K.js.map} +0 -0
  86. /package/dist/{chunk-DV7HUC4Z.js.map → chunk-LI35PIIS.js.map} +0 -0
  87. /package/dist/{chunk-Z5O2XBWA.js.map → chunk-LTH6XYZ3.js.map} +0 -0
  88. /package/dist/{chunk-LPWPFIIB.js.map → chunk-OODXFCQV.js.map} +0 -0
  89. /package/dist/{chunk-B3TSS7BT.js.map → chunk-QJ44VG5G.js.map} +0 -0
  90. /package/dist/{chunk-VE3IYNDN.js.map → chunk-SA6HXL4Y.js.map} +0 -0
  91. /package/dist/{chunk-32JSYXEK.js.map → chunk-V7QOIQYC.js.map} +0 -0
  92. /package/dist/{chunk-ANI2NTR4.js.map → chunk-XUEMATVY.js.map} +0 -0
  93. /package/dist/{config-KGZUPAUP.js.map → config-LEBZZCJP.js.map} +0 -0
  94. /package/dist/{conventions-RYN7OXJN.js.map → conventions-XOT6YW5L.js.map} +0 -0
  95. /package/dist/{execute-QL3ZQIAP.js.map → execute-LELOSR5T.js.map} +0 -0
  96. /package/dist/{generate-CX6KNHZS.js.map → generate-JGW5JSKB.js.map} +0 -0
  97. /package/dist/{init-PDVQDRS6.js.map → init-TO6MUXO4.js.map} +0 -0
  98. /package/dist/{operations-CAKIT2BO.js.map → operations-O4FORFIH.js.map} +0 -0
  99. /package/dist/{plan-PRORGS3L.js.map → plan-OXAT344Q.js.map} +0 -0
  100. /package/dist/{policy-WX6O2JID.js.map → policy-U5NBFAO5.js.map} +0 -0
  101. /package/dist/{pr-27RMQI5F.js.map → pr-UZHNKKZC.js.map} +0 -0
  102. /package/dist/{pr-review-VNESMAMT.js.map → pr-review-Q4ACAWDM.js.map} +0 -0
  103. /package/dist/{prd-ZNC4T5BS.js.map → prd-6CYEMLDY.js.map} +0 -0
  104. /package/dist/{recorder-N7U66HCO.js.map → recorder-2BAKPBRA.js.map} +0 -0
  105. /package/dist/{resume-VLWIE264.js.map → resume-URCU6CIJ.js.map} +0 -0
  106. /package/dist/{review-7CREJDKB.js.map → review-LVZT2TMW.js.map} +0 -0
  107. /package/dist/{routing-VCDYHSXA.js.map → routing-EK6RBZM4.js.map} +0 -0
  108. /package/dist/{run-3MPORLF5.js.map → run-2RXJCJKT.js.map} +0 -0
  109. /package/dist/{usage-U7QNGCPK.js.map → usage-KTMYXAPF.js.map} +0 -0
  110. /package/dist/{web-HUNDHCJ4.js.map → web-B5UPHHR5.js.map} +0 -0
@@ -3,26 +3,26 @@ import {
3
3
  formatPhaseLine,
4
4
  loadPhaseTiming,
5
5
  snapshotTimingFields
6
- } from "./chunk-B3TSS7BT.js";
6
+ } from "./chunk-QJ44VG5G.js";
7
7
  import {
8
8
  runPr
9
- } from "./chunk-LPWPFIIB.js";
9
+ } from "./chunk-OODXFCQV.js";
10
10
  import {
11
11
  mostRecent,
12
12
  prReviewDir,
13
13
  readPrReviewIndex,
14
14
  runPrReview
15
- } from "./chunk-Z5O2XBWA.js";
15
+ } from "./chunk-LTH6XYZ3.js";
16
16
  import {
17
17
  listPullRequests,
18
18
  publishGitState
19
19
  } from "./chunk-YUNBOUQH.js";
20
20
  import {
21
21
  runPrd
22
- } from "./chunk-ANI2NTR4.js";
22
+ } from "./chunk-XUEMATVY.js";
23
23
  import {
24
24
  runReview
25
- } from "./chunk-MI5TREN3.js";
25
+ } from "./chunk-EG2MGDP5.js";
26
26
  import {
27
27
  PIPELINE_PHASES,
28
28
  PIPELINE_PHASES_NO_BRANCH,
@@ -44,45 +44,45 @@ import {
44
44
  saveExecutionPlan,
45
45
  setQueueBranch,
46
46
  setQueuePullRequest
47
- } from "./chunk-A4H7P7T7.js";
47
+ } from "./chunk-7UMMFOL2.js";
48
48
  import {
49
49
  runInit
50
- } from "./chunk-ISZ54SVE.js";
50
+ } from "./chunk-PMLE7KAQ.js";
51
51
  import {
52
52
  printQueueSummary,
53
53
  printRunSummary,
54
54
  runExecute,
55
55
  stripMarkdown
56
- } from "./chunk-KZXQWC7U.js";
56
+ } from "./chunk-KRAGAUKD.js";
57
57
  import {
58
58
  ensureWebMonitor
59
- } from "./chunk-2SUFAE6X.js";
59
+ } from "./chunk-NEWNXZ65.js";
60
60
  import {
61
61
  runPlan
62
- } from "./chunk-KZ5EY5XX.js";
62
+ } from "./chunk-34OCSKOB.js";
63
63
  import {
64
64
  resolveCommandIssue
65
- } from "./chunk-VE3IYNDN.js";
65
+ } from "./chunk-SA6HXL4Y.js";
66
66
  import {
67
67
  getProvider
68
- } from "./chunk-QMIQR7EE.js";
68
+ } from "./chunk-62GVVZQO.js";
69
69
  import {
70
70
  beginUsageScope,
71
71
  getRunUsageTotals
72
- } from "./chunk-HLAPOUEM.js";
72
+ } from "./chunk-KMCS76ZW.js";
73
73
  import {
74
74
  assessDecomposition,
75
75
  buildDecompositionReport,
76
76
  proposeSubIssues,
77
77
  resetAgentInvocationState
78
- } from "./chunk-UK4E2FUA.js";
78
+ } from "./chunk-TZYINKCC.js";
79
79
  import {
80
80
  JournalPublisher,
81
81
  MultiPublisher
82
82
  } from "./chunk-WCCZJL7W.js";
83
83
  import {
84
84
  recommendedTarget
85
- } from "./chunk-D6ZBGJ3L.js";
85
+ } from "./chunk-ZVZMWNCG.js";
86
86
  import {
87
87
  getPackageVersion
88
88
  } from "./chunk-C5TL7T4V.js";
@@ -97,12 +97,12 @@ import {
97
97
  loadRoutingConfig,
98
98
  loadWebConfig,
99
99
  onShutdown
100
- } from "./chunk-HY5HLFDU.js";
100
+ } from "./chunk-QF7VEL3M.js";
101
101
  import {
102
102
  resolveIssuePaths,
103
103
  resolveProjectPaths,
104
104
  resolveQueuePaths
105
- } from "./chunk-DV7HUC4Z.js";
105
+ } from "./chunk-LI35PIIS.js";
106
106
  import {
107
107
  formatDuration,
108
108
  getIcons,
@@ -513,11 +513,43 @@ async function loadResumableQueue(planFile, requested) {
513
513
  const sameRequest = plan.requested.length === requested.length && plan.requested.every((id, index) => id === requested[index]);
514
514
  return sameRequest ? plan : null;
515
515
  }
516
+ function executableGraphIds(graph, requested) {
517
+ const roots = new Set(requested);
518
+ return [...graph.nodes.values()].filter((node) => roots.has(node.id) || node.issue?.state !== "closed").map((node) => node.id);
519
+ }
520
+ async function reconcileClosedDiscoveredIssues(plan, warn) {
521
+ let next = plan;
522
+ const closed = [];
523
+ for (const entry of plan.issues) {
524
+ if (entry.origin !== "discovered" || entry.status === "completed") continue;
525
+ try {
526
+ const issue = await getProvider(entry.source).get(entry.id);
527
+ if (issue?.state !== "closed") continue;
528
+ next = markQueueIssueCompleted(next, entry.id);
529
+ closed.push(entry.id);
530
+ } catch (err) {
531
+ warn(
532
+ `Could not refresh issue #${entry.id} before resuming the queue: ${err instanceof Error ? err.message : String(err)}`
533
+ );
534
+ }
535
+ }
536
+ return { plan: next, closed };
537
+ }
516
538
  async function planQueue(input) {
517
539
  const info = input.info ?? printInfo;
518
540
  const warn = input.warn ?? printWarning;
519
541
  const single = input.requested.length === 1;
520
- const resumable = await loadResumableQueue(input.planFile, input.requested);
542
+ let resumable = await loadResumableQueue(input.planFile, input.requested);
543
+ if (resumable !== null) {
544
+ const reconciled = await reconcileClosedDiscoveredIssues(resumable, warn);
545
+ resumable = reconciled.plan;
546
+ if (reconciled.closed.length > 0) {
547
+ await saveExecutionPlan(input.planFile, resumable);
548
+ info(
549
+ `Skipping already closed issue(s) in the resumed queue: ${reconciled.closed.map((id) => `#${id}`).join(", ")}.`
550
+ );
551
+ }
552
+ }
521
553
  if (resumable !== null && isQueueComplete(resumable)) {
522
554
  const pr = resumable.pullRequest?.url;
523
555
  info(
@@ -543,10 +575,8 @@ async function planQueue(input) {
543
575
  known: input.known,
544
576
  warn
545
577
  });
546
- if (single && graph.nodes.size <= 1) {
547
- return { kind: "single" };
548
- }
549
- const suggested = computeExecutionOrder(graph);
578
+ const schedulable = executableGraphIds(graph, input.requested);
579
+ const suggested = computeExecutionOrder(graph, { include: schedulable });
550
580
  if (!suggested.ok) {
551
581
  if (single) {
552
582
  warn(
@@ -569,6 +599,9 @@ async function planQueue(input) {
569
599
  noBranch: input.noBranch,
570
600
  prReview: input.prReview
571
601
  });
602
+ if (single && suggestedPlan.issues.length === 1 && suggestedPlan.issues[0]?.role !== "container") {
603
+ return { kind: "single" };
604
+ }
572
605
  let choice;
573
606
  try {
574
607
  choice = await confirmQueue(suggestedPlan, requestedCount, {
@@ -588,7 +621,8 @@ async function planQueue(input) {
588
621
  }
589
622
  let plan = suggestedPlan;
590
623
  if (choice === "cascade") {
591
- const include = collectCascadeIds(graph, input.requested);
624
+ const eligible = new Set(schedulable);
625
+ const include = collectCascadeIds(graph, input.requested).filter((id) => eligible.has(id));
592
626
  const cascadeOrder = computeExecutionOrder(graph, { include });
593
627
  if (!cascadeOrder.ok) {
594
628
  warn(`Dependency cycle between issues: ${describeCycles(cascadeOrder.cycles)}.`);
@@ -2081,7 +2115,7 @@ async function maybeCreateSubIssues(issueNumber, plan, reportFile) {
2081
2115
  printInfo("Nothing left to split: no pending story.");
2082
2116
  return;
2083
2117
  }
2084
- const { runGenerate } = await import("./generate-CX6KNHZS.js");
2118
+ const { runGenerate } = await import("./generate-JGW5JSKB.js");
2085
2119
  for (const proposal of proposals) {
2086
2120
  const instruction = [
2087
2121
  `Create a sub-issue of #${issueNumber}: ${proposal.title}.`,
@@ -2692,4 +2726,4 @@ export {
2692
2726
  publishIssueDetails,
2693
2727
  runPipeline
2694
2728
  };
2695
- //# sourceMappingURL=chunk-HJBF4WD2.js.map
2729
+ //# sourceMappingURL=chunk-CWSQVHVV.js.map