@mutmutco/cli 3.133.0 → 3.135.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 (2) hide show
  1. package/dist/main.cjs +39 -15
  2. package/package.json +1 -1
package/dist/main.cjs CHANGED
@@ -5313,9 +5313,10 @@ function resolveActiveWorkspaceRoot(deps = {}) {
5313
5313
  var import_node_path8 = require("node:path");
5314
5314
  function win32LongPath(p, platform2 = process.platform) {
5315
5315
  if (platform2 !== "win32") return p;
5316
- if (p.startsWith("\\\\?\\")) return p;
5317
- if (p.startsWith("\\\\")) return `\\\\?\\UNC\\${p.slice(2)}`;
5318
- return `\\\\?\\${p}`;
5316
+ const normalized = p.replace(/\//g, "\\");
5317
+ if (normalized.startsWith("\\\\?\\")) return normalized;
5318
+ if (normalized.startsWith("\\\\")) return `\\\\?\\UNC\\${normalized.slice(2)}`;
5319
+ return `\\\\?\\${normalized}`;
5319
5320
  }
5320
5321
  function normalizeGithubRemote(url) {
5321
5322
  const raw = url.trim();
@@ -14199,10 +14200,10 @@ var rollout_plan_default = {
14199
14200
  note: "The v4.0.0 stamp happens at cut time (D6e #4463); until then the candidate is the origin/development head artifacts (built cli/dist + npm pack), identity proven by dist content hash (D6a)."
14200
14201
  },
14201
14202
  baseline: {
14202
- version: "3.133.0",
14203
- tag: "v3.133.0",
14204
- commit: "e84ca12a12b4",
14205
- npm: "@mutmutco/cli@3.133.0"
14203
+ version: "3.135.0",
14204
+ tag: "v3.135.0",
14205
+ commit: "3d9fbd6f4628",
14206
+ npm: "@mutmutco/cli@3.135.0"
14206
14207
  },
14207
14208
  exitCriterion: "fleet-n-of-n",
14208
14209
  hubOnlyShortcut: "forbidden",
@@ -14219,14 +14220,14 @@ var rollout_plan_default = {
14219
14220
  repo: "mutmutco/mmi-hub",
14220
14221
  role: "canary",
14221
14222
  schedule: "train",
14222
- v3Target: "v3.133.0"
14223
+ v3Target: "v3.135.0"
14223
14224
  }
14224
14225
  ],
14225
14226
  rollbackTrigger: "Any red inside the post-cut soak window: `devops train gate` FAIL attributable to the v4 doors, Hub endpoint health probe failure, a v3 client refused while the compat window must still admit it (SUPPORTED_MINOR_WINDOW=2, MIN_CLIENT_VERSION 0.0.0 \u2014 D6a), or npm consumer install/doctor failure on the v4 dist.",
14226
14227
  rollback: {
14227
14228
  independent: true,
14228
- mechanism: "npm dist-tag latest -> 3.133.0 and redeploy the Hub Lambda from tag v3.133.0 (e84ca12a12b4); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
14229
- v3Target: "v3.133.0 (@mutmutco/cli@3.133.0, tag commit e84ca12a12b4 \u2014 the preserved latest-v3 distribution, D6b)"
14229
+ mechanism: "npm dist-tag latest -> 3.135.0 and redeploy the Hub Lambda from tag v3.135.0 (3d9fbd6f4628); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
14230
+ v3Target: "v3.135.0 (@mutmutco/cli@3.135.0, tag commit 3d9fbd6f4628 \u2014 the preserved latest-v3 distribution, D6b)"
14230
14231
  }
14231
14232
  },
14232
14233
  {
@@ -40938,23 +40939,46 @@ pr.command("land <number>").description("agent merge path (#1440): train probe \
40938
40939
  if (trimmed) {
40939
40940
  try {
40940
40941
  result.cleanup = JSON.parse(trimmed);
40941
- const wt = result.cleanup.worktree;
40942
- if (wt?.status === "deferred") spawnDeferredGcSweep();
40942
+ const childCleanup = result.cleanup;
40943
+ result.cleanupStatus = childCleanup.cleanupStatus === "clean" ? "clean" : "deferred";
40944
+ if (childCleanup.worktree?.status === "deferred" || childCleanup.worktree?.status === "failed") spawnDeferredGcSweep();
40943
40945
  } catch {
40944
40946
  result.cleanupError = "cleanup output was not JSON";
40947
+ result.cleanupStatus = "deferred";
40945
40948
  }
40946
40949
  }
40947
40950
  } catch (e) {
40948
- result.cleanupError = String(e.message || "pr merge cleanup failed");
40951
+ const err = e;
40952
+ const childStdout = (err.stdout ?? "").trim();
40953
+ const childStderr = (err.stderr ?? "").trim().split("\n")[0];
40954
+ let parsed;
40955
+ try {
40956
+ parsed = childStdout ? JSON.parse(childStdout) : void 0;
40957
+ } catch {
40958
+ parsed = void 0;
40959
+ }
40960
+ if (parsed && typeof parsed === "object") {
40961
+ result.cleanup = parsed;
40962
+ const wt = parsed.worktree;
40963
+ if (wt?.status === "deferred" || wt?.status === "failed") spawnDeferredGcSweep();
40964
+ result.cleanupError = childStderr || "post-merge cleanup did not complete";
40965
+ } else {
40966
+ result.cleanupError = childStderr || String(err.message || "pr merge cleanup failed");
40967
+ spawnDeferredGcSweep();
40968
+ }
40969
+ result.cleanupStatus = "deferred";
40949
40970
  }
40950
40971
  }
40951
40972
  if (o.json) printLine(JSON.stringify(result));
40952
40973
  else {
40953
40974
  printLine(`pr land: ${result.status}${result.error ? ` \u2014 ${result.error}` : ""}`);
40954
40975
  for (const line of renderPrLandCleanupLines(result.cleanup)) printLine(line);
40955
- if (result.cleanupError) printLine(`pr land cleanup: ${result.cleanupError}`);
40976
+ if (result.cleanupError) {
40977
+ printLine(`pr land: ${result.status} \u2014 post-merge cleanup DEFERRED (${result.cleanupError})`);
40978
+ printLine(`pr land: sweep the deferred cleanup with: mmi-cli worktree gc sweep-deferred`);
40979
+ }
40956
40980
  }
40957
- if (result.status === "failed" || result.cleanupError) process.exitCode = 1;
40981
+ if (result.status === "failed") process.exitCode = 1;
40958
40982
  });
40959
40983
  jsonParity(pr.command("merge <number>").description("merge a PR (squash by default) and clean up its branch + worktree \u2014 no leftover local branch; on no-ci repos run pr ci-policy / checks-wait first (#1432)").option("--squash", "squash merge (default)").option("--merge", "create a merge commit").option("--rebase", "rebase merge").option("--repo <owner/repo>", "target repo (defaults to the current repo)").option("--auto", "enable auto-merge \u2014 merge once the base-branch policy is satisfied (use for policy-gated repos)").option("--wait", `wait for checks to reach a terminal passing verdict before merging (default budget ${PR_CHECKS_TIMEOUT_MS / 6e4}m)`).option("--preserve-worktree", "keep the local PR worktree/stage/branch for an active multi-issue batch (#1888)").option("--force", "acknowledge and merge past a remaining prunable/severe scratch housekeeping block (advisory kept plans/ never blocks, #3012) or a negated-closing-keyword (#3718) or ambiguous-cross-repo-closing (#4279) refusal")).action(async (number, o) => {
40960
40984
  const method = o.rebase ? "--rebase" : o.merge ? "--merge" : "--squash";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mutmutco/cli",
3
- "version": "3.133.0",
3
+ "version": "3.135.0",
4
4
  "description": "MMI Future CLI — the org dev toolbox and shared cross-IDE engine for every registry-declared MMI coding surface.",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",