mergestorm 0.3.31 → 0.3.33
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/api.js +6 -0
- package/dist/stack-blockers.js +7 -0
- package/dist/stack-dto.d.ts +2 -0
- package/dist/ui/banner.js +6 -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.33 │
|
|
49
49
|
│ ▀▀▀▀▀▀▀▀▀ ● msk_live_… · maelstrom │
|
|
50
50
|
│ ▀▀▀▀▀▀ [████████░░░░░░░░░░░░░░░░░░░░░░] 25% used │
|
|
51
51
|
│ ▝▀▀▀▀▀ local reviews + stacked PRs · mergestorm.ai │
|
package/dist/api.js
CHANGED
|
@@ -570,6 +570,12 @@ async function queueMutation(route, failLabel, cfg) {
|
|
|
570
570
|
}
|
|
571
571
|
throw new CommandError("Merge queue API is not available on this server yet. Deploy the API update or use the dashboard.");
|
|
572
572
|
}
|
|
573
|
+
if (status === 409) {
|
|
574
|
+
const refusal = body;
|
|
575
|
+
if (refusal?.error === "conflict_unchanged" && typeof refusal.message === "string") {
|
|
576
|
+
throw new CommandError(refusal.message);
|
|
577
|
+
}
|
|
578
|
+
}
|
|
573
579
|
if (status < 200 || status >= 300) {
|
|
574
580
|
throw new CommandError(`${failLabel} (HTTP ${status}): ${JSON.stringify(body)}`);
|
|
575
581
|
}
|
package/dist/stack-blockers.js
CHANGED
|
@@ -76,6 +76,11 @@ function seamGateBlocker(stack, layer) {
|
|
|
76
76
|
return SEAM_REVIEW_NOT_RUNNING;
|
|
77
77
|
return null;
|
|
78
78
|
}
|
|
79
|
+
function headChecksAllGreen(layer) {
|
|
80
|
+
const checks = layer.checks;
|
|
81
|
+
return layer.ciStatus === "success" && !!checks && checks.total > 0 &&
|
|
82
|
+
checks.failure === 0 && checks.pending === 0 && checks.success > 0;
|
|
83
|
+
}
|
|
79
84
|
/** Shared live-fact precedence; bounce history is only passed for the candidate. */
|
|
80
85
|
function layerAttention(stack, layer, queue, cursor) {
|
|
81
86
|
const none = { blocker: null, bounceKind: null };
|
|
@@ -138,6 +143,8 @@ function layerAttention(stack, layer, queue, cursor) {
|
|
|
138
143
|
if (!sameHead(bounce.bounceDetail?.headSha ?? bounce.verifyHeadSha, layer.headSha) ||
|
|
139
144
|
(bounce.bounceDetail?.prNumber != null && bounce.bounceDetail.prNumber !== layer.prNumber))
|
|
140
145
|
return none;
|
|
146
|
+
if (kind === "ci_failure" && !bounce.bounceDetail?.batch && headChecksAllGreen(layer))
|
|
147
|
+
return none;
|
|
141
148
|
return { blocker: mergeQueueBounceLabel(bounce), bounceKind: kind, bounce };
|
|
142
149
|
}
|
|
143
150
|
const AUTO_LAND_DISARMING_BOUNCE_KINDS = ["merge_failed", "gh_error", "ci_timeout"];
|
package/dist/stack-dto.d.ts
CHANGED
|
@@ -390,6 +390,8 @@ export type MergeQueueBounceDetail = {
|
|
|
390
390
|
conflictBranch?: string;
|
|
391
391
|
conflictDetail?: string;
|
|
392
392
|
conflictPaths?: string[];
|
|
393
|
+
baseBranch?: string;
|
|
394
|
+
baseSha?: string;
|
|
393
395
|
message?: string;
|
|
394
396
|
warning?: string;
|
|
395
397
|
batch?: MergeQueueBounceBatch;
|
package/dist/ui/banner.js
CHANGED
|
@@ -126,6 +126,12 @@ const WHATS_NEW = {
|
|
|
126
126
|
"0.3.31": [
|
|
127
127
|
"every stack Next line offers mg stack watch",
|
|
128
128
|
],
|
|
129
|
+
"0.3.32": [
|
|
130
|
+
"queue add explains a held merge conflict",
|
|
131
|
+
],
|
|
132
|
+
"0.3.33": [
|
|
133
|
+
"stack watch clears a CI failure rerun green",
|
|
134
|
+
],
|
|
129
135
|
};
|
|
130
136
|
function densityFromVariant(variant) {
|
|
131
137
|
if (variant === "mini" || variant === "nano")
|
package/package.json
CHANGED