@mutmutco/codex-plugin 4.5.164 → 4.5.165

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mmi",
3
- "version": "4.5.164",
3
+ "version": "4.5.165",
4
4
  "mmiCompat": "4.x",
5
5
  "description": "MMI workflow skills and org gates delivery.",
6
6
  "author": {
package/cli/dist/main.cjs CHANGED
@@ -14631,6 +14631,15 @@ function latestClaimMarker(comments) {
14631
14631
  }
14632
14632
  return void 0;
14633
14633
  }
14634
+ function latestClaimRelease(comments) {
14635
+ for (let i = comments.length - 1; i >= 0; i -= 1) {
14636
+ const body = comments[i].body;
14637
+ const releases = parseClaimReleases(body);
14638
+ if (!parseClaimMarkers(body).length && !releases.length) continue;
14639
+ return latestClaimMarker([comments[i]]) ? void 0 : releases[releases.length - 1];
14640
+ }
14641
+ return void 0;
14642
+ }
14634
14643
  function formatClaimAge(ageMs) {
14635
14644
  if (ageMs === void 0 || !Number.isFinite(ageMs) || ageMs < 0) return "unknown age";
14636
14645
  const minutes = Math.floor(ageMs / 6e4);
@@ -14838,6 +14847,7 @@ async function gatherClaimLiveness(client, repo, number, fetchOpenPulls) {
14838
14847
  const comments = await client.restPaginate(`repos/${repo}/issues/${number}/comments`);
14839
14848
  const rows = comments.map((comment) => ({ body: comment.body ?? "", login: comment.user?.login ?? void 0 }));
14840
14849
  out.marker = latestClaimMarker(rows);
14850
+ if (!out.marker) out.releasedAt = latestClaimRelease(rows)?.ts;
14841
14851
  for (let i = comments.length - 1; i >= 0; i -= 1) {
14842
14852
  if (comments[i].created_at && !latestClaimMarker([rows[i]])) {
14843
14853
  out.lastCommentAt = comments[i].created_at;
@@ -14919,8 +14929,9 @@ function liveEvidenceLines(evidence, repo) {
14919
14929
  live.push(evidence.lastCommentAt && Date.parse(evidence.lastCommentAt) > Date.parse(evidence.marker.ts) ? `claim marker from ${marker} is ${formatClaimAge(evidence.markerAgeMs)} old but the issue was commented ${formatClaimAge(idleMs)} ago (session not locally probeable)` : `claim marker from ${marker} is only ${formatClaimAge(evidence.markerAgeMs)} old (session not locally probeable)`);
14920
14930
  }
14921
14931
  }
14922
- if (evidence.openPr && workIsLive(evidence.openPrAt)) live.push(evidence.openPr);
14923
- if (evidence.branch && workIsLive(evidence.branchAt)) live.push(`live branch ${evidence.branch} on ${repo}`);
14932
+ const sinceRelease = (at) => !evidence.releasedAt || at === void 0 || Date.parse(at) > Date.parse(evidence.releasedAt);
14933
+ if (evidence.openPr && workIsLive(evidence.openPrAt) && sinceRelease(evidence.openPrAt)) live.push(evidence.openPr);
14934
+ if (evidence.branch && workIsLive(evidence.branchAt) && sinceRelease(evidence.branchAt)) live.push(`live branch ${evidence.branch} on ${repo}`);
14924
14935
  return live;
14925
14936
  }
14926
14937
  function staleWorkLines(evidence) {
@@ -19051,10 +19062,10 @@ var rollout_plan_default = {
19051
19062
  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)."
19052
19063
  },
19053
19064
  baseline: {
19054
- version: "4.5.164",
19055
- tag: "v4.5.164",
19056
- commit: "a5f70231e564",
19057
- npm: "@mutmutco/cli@4.5.164"
19065
+ version: "4.5.165",
19066
+ tag: "v4.5.165",
19067
+ commit: "e50afbd193c3",
19068
+ npm: "@mutmutco/cli@4.5.165"
19058
19069
  },
19059
19070
  exitCriterion: "fleet-n-of-n",
19060
19071
  hubOnlyShortcut: "forbidden",
@@ -19071,14 +19082,14 @@ var rollout_plan_default = {
19071
19082
  repo: "mutmutco/mmi-hub",
19072
19083
  role: "canary",
19073
19084
  schedule: "train",
19074
- v3Target: "v4.5.164"
19085
+ v3Target: "v4.5.165"
19075
19086
  }
19076
19087
  ],
19077
19088
  rollbackTrigger: "Any red inside the post-contract soak window: `devops train gate` FAIL attributable to the v4 doors, Hub endpoint health probe failure, a pre-v4 client admitted instead of receiving actionable HTTP 426, or npm consumer install/doctor failure on the v4-only dist.",
19078
19089
  rollback: {
19079
19090
  independent: true,
19080
- mechanism: "npm dist-tag latest -> 4.5.164 and redeploy the Hub Lambda from tag v4.5.164 (a5f70231e564); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
19081
- v3Target: "v4.5.164 (@mutmutco/cli@4.5.164, tag commit a5f70231e564 \u2014 last known-good release carrying the repo-index v4-only contract)"
19091
+ mechanism: "npm dist-tag latest -> 4.5.165 and redeploy the Hub Lambda from tag v4.5.165 (e50afbd193c3); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
19092
+ v3Target: "v4.5.165 (@mutmutco/cli@4.5.165, tag commit e50afbd193c3 \u2014 last known-good release carrying the repo-index v4-only contract)"
19082
19093
  }
19083
19094
  },
19084
19095
  {
@@ -33317,7 +33328,7 @@ function parseGateVar(raw) {
33317
33328
  }
33318
33329
  var SECRET_OUTPUT_PATH_RE = /^\/[A-Za-z0-9._/-]+$/;
33319
33330
  var SECRET_OUTPUT_REPO_RE = /^[A-Za-z0-9][A-Za-z0-9._-]*\/[A-Za-z0-9][A-Za-z0-9._-]*$/;
33320
- var SECRET_OUTPUT_KEY_RE = /^[A-Z][A-Z0-9_]*$/;
33331
+ var SECRET_OUTPUT_KEY_RE = /^(?:(?:dev|rc|main)\/)?[A-Z][A-Z0-9_]*$/;
33321
33332
  function parseTenantTaskSecretOutput(raw, label) {
33322
33333
  if (!raw || typeof raw !== "object" || Array.isArray(raw)) {
33323
33334
  throw new Error(`org project set: ${label} must be an object {path,vault:{repo,key},overwrite?}`);
@@ -33341,7 +33352,7 @@ function parseTenantTaskSecretOutput(raw, label) {
33341
33352
  throw new Error(`org project set: ${label}.vault.repo must be owner/name`);
33342
33353
  }
33343
33354
  if (typeof vaultMap.key !== "string" || !SECRET_OUTPUT_KEY_RE.test(vaultMap.key)) {
33344
- throw new Error(`org project set: ${label}.vault.key must be UPPER_SNAKE`);
33355
+ throw new Error(`org project set: ${label}.vault.key must be UPPER_SNAKE or <dev|rc|main>/UPPER_SNAKE`);
33345
33356
  }
33346
33357
  if (value.overwrite !== void 0 && typeof value.overwrite !== "boolean") {
33347
33358
  throw new Error(`org project set: ${label}.overwrite must be true or false`);
@@ -40981,11 +40992,12 @@ async function runPrLand(prNumber, options, deps) {
40981
40992
  if (drift) return drift;
40982
40993
  const hasQueue = await deps.hasMergeQueue?.(repo, resolved.base) ?? false;
40983
40994
  let queueSnapshot;
40995
+ const queued = { base: resolved.base, state: "queued" };
40984
40996
  if (hasQueue) {
40985
- base.mergeQueue = { base: resolved.base, state: "queued" };
40986
40997
  if (!deps.readMergeQueue) throw new Error("merge queue reader unavailable");
40987
40998
  queueSnapshot = await deps.readMergeQueue(prNumber, repo);
40988
40999
  if (queueSnapshot.isInMergeQueue || queueSnapshot.state === "MERGED") {
41000
+ base.mergeQueue = queued;
40989
41001
  base.mergeStatus = "auto-merge-enqueued";
40990
41002
  return pollPrMergeQueue(prNumber, options, deps, base, queueSnapshot);
40991
41003
  }
@@ -41035,6 +41047,7 @@ async function runPrLand(prNumber, options, deps) {
41035
41047
  return { ...base, error: merge.error ?? "merge failed" };
41036
41048
  }
41037
41049
  if (hasQueue) {
41050
+ base.mergeQueue = queued;
41038
41051
  if (merge.mergeStatus === "merged") {
41039
41052
  return queueMerged(base, deps);
41040
41053
  }
package/cli/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mutmutco/cli",
3
- "version": "4.5.164",
3
+ "version": "4.5.165",
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",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mutmutco/codex-plugin",
3
- "version": "4.5.164",
3
+ "version": "4.5.165",
4
4
  "description": "MMI workflow skills and org gates delivery.",
5
5
  "author": {
6
6
  "name": "MMI Future",