mergestorm 0.3.50 → 0.3.51
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.
- package/README.md +1 -1
- package/dist/stack-blockers.js +23 -5
- package/dist/ui/banner.js +3 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -45,7 +45,7 @@ On a TTY, bare `mergestorm` (or `mergestorm shell`) opens a branded REPL: a comp
|
|
|
45
45
|
|
|
46
46
|
```
|
|
47
47
|
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
48
|
-
│ ▀▀▀▀▀▀▀▀▀▀▘ mergestorm v0.3.
|
|
48
|
+
│ ▀▀▀▀▀▀▀▀▀▀▘ mergestorm v0.3.51 │
|
|
49
49
|
│ ▀▀▀▀▀▀▀▀▀ ● msk_live_… · maelstrom │
|
|
50
50
|
│ ▀▀▀▀▀▀ [████████░░░░░░░░░░░░░░░░░░░░░░] 25% used │
|
|
51
51
|
│ ▝▀▀▀▀▀ local reviews + stacked PRs · mergestorm.ai │
|
package/dist/stack-blockers.js
CHANGED
|
@@ -63,11 +63,14 @@ function coreReviewDoneAtHead(layer) {
|
|
|
63
63
|
return review?.status === "done" && sameHead(review.head_sha, layer.headSha);
|
|
64
64
|
}
|
|
65
65
|
export const VORTEX_FINDINGS_NEED_PERSON = "Vortex findings need a person";
|
|
66
|
-
function
|
|
66
|
+
function vortexFindingsRestAtHead(layer) {
|
|
67
67
|
const review = layer.vortexReview;
|
|
68
68
|
if (review && !(review.status === "done" && sameHead(review.head_sha, layer.headSha)))
|
|
69
69
|
return false;
|
|
70
|
-
return layer.vortexStatus === "findings"
|
|
70
|
+
return layer.vortexStatus === "findings" || layer.vortexStatus === "throttled";
|
|
71
|
+
}
|
|
72
|
+
function vortexChangesRequestedAtHead(layer) {
|
|
73
|
+
return vortexFindingsRestAtHead(layer) && layer.reviewStatus === "changes_requested";
|
|
71
74
|
}
|
|
72
75
|
function cycloneHandoffAtHead(stack, layer) {
|
|
73
76
|
if (sameHead(layer.cycloneHandoff?.headSha, layer.headSha))
|
|
@@ -149,9 +152,24 @@ function ciHandoffNote(stack, layer) {
|
|
|
149
152
|
}
|
|
150
153
|
return null;
|
|
151
154
|
}
|
|
155
|
+
const CYCLONE_HELD_FINDINGS_REASONS = [
|
|
156
|
+
"failed",
|
|
157
|
+
"left_for_human",
|
|
158
|
+
"infra_failure",
|
|
159
|
+
"pr_state_unavailable",
|
|
160
|
+
"vortex_patch_cap",
|
|
161
|
+
"patch_job_lost",
|
|
162
|
+
];
|
|
163
|
+
function vortexImportantFindingsHeldAtHead(layer) {
|
|
164
|
+
return vortexFindingsRestAtHead(layer) && layer.reviewStatus === "reviewed" &&
|
|
165
|
+
sameHead(layer.cycloneHandoff?.headSha, layer.headSha) &&
|
|
166
|
+
CYCLONE_HELD_FINDINGS_REASONS.includes(layer.cycloneHandoff.reason);
|
|
167
|
+
}
|
|
152
168
|
function vortexFindingsLeftForPerson(stack, layer) {
|
|
153
|
-
|
|
154
|
-
|
|
169
|
+
if (layerAgentsBusy(layer).cyclone)
|
|
170
|
+
return false;
|
|
171
|
+
return vortexImportantFindingsHeldAtHead(layer) ||
|
|
172
|
+
(vortexChangesRequestedAtHead(layer) && cycloneHandoffAtHead(stack, layer) !== null);
|
|
155
173
|
}
|
|
156
174
|
function quotaSkippedReview(layer) {
|
|
157
175
|
const review = layer.vortexReview;
|
|
@@ -776,7 +794,7 @@ export function stackRepair(stack, attention, layer, bounce, queueWait = null) {
|
|
|
776
794
|
branch: layer.branch,
|
|
777
795
|
handoff,
|
|
778
796
|
findings,
|
|
779
|
-
steps: `Vortex requested changes on ${layer.branch} at ${layer.headSha ?? "its live head"} and Cyclone left them for a person${handoff ? ` (${cycloneHandoffWords(handoff)})` : ""}, so nothing will patch them and Auto land waits. Read the newest Vortex review and its inline comments (${findings}), verify each finding against ${layer.branch} at its live remote head, fix the real ones with the smallest patch, run the tests, confirm the remote head is still ${layer.headSha ?? "the head you started from"}, then an ordinary git push (no force). If a finding is wrong, tell the human; mg dismiss ${stack.owner}/${stack.repo}#${layer.prNumber} --head <sha> --review <id> dismisses that review. Do not retarget the PR base.`,
|
|
797
|
+
steps: `Vortex ${vortexImportantFindingsHeldAtHead(layer) ? "left Important findings" : "requested changes"} on ${layer.branch} at ${layer.headSha ?? "its live head"} and Cyclone left them for a person${handoff ? ` (${cycloneHandoffWords(handoff)})` : ""}, so nothing will patch them and Auto land waits. Read the newest Vortex review and its inline comments (${findings}), verify each finding against ${layer.branch} at its live remote head, fix the real ones with the smallest patch, run the tests, confirm the remote head is still ${layer.headSha ?? "the head you started from"}, then an ordinary git push (no force). If a finding is wrong, tell the human; mg dismiss ${stack.owner}/${stack.repo}#${layer.prNumber} --head <sha> --review <id> dismisses that review. Do not retarget the PR base.`,
|
|
780
798
|
};
|
|
781
799
|
}
|
|
782
800
|
if (reason === "ci_failed" || attention.bounceKind === "ci_failure") {
|
package/dist/ui/banner.js
CHANGED
|
@@ -188,6 +188,9 @@ const WHATS_NEW = {
|
|
|
188
188
|
"0.3.50": [
|
|
189
189
|
"Agent sign-in: login --start, --finish",
|
|
190
190
|
],
|
|
191
|
+
"0.3.51": [
|
|
192
|
+
"Watch names findings held on a throttled head",
|
|
193
|
+
],
|
|
191
194
|
};
|
|
192
195
|
function densityFromVariant(variant) {
|
|
193
196
|
if (variant === "mini" || variant === "nano")
|
package/package.json
CHANGED