@mutmutco/codex-plugin 4.5.101 → 4.5.102

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.101",
3
+ "version": "4.5.102",
4
4
  "mmiCompat": "4.x",
5
5
  "description": "MMI workflow skills and org gates delivery.",
6
6
  "author": {
package/cli/dist/main.cjs CHANGED
@@ -6327,6 +6327,24 @@ function parseRateLimitHeaders(out) {
6327
6327
  };
6328
6328
  return { remaining: first("remaining"), limit: first("limit"), resetSec: first("reset") };
6329
6329
  }
6330
+ function describeRefusal(out) {
6331
+ const header = (name) => new RegExp(`^${name}:\\s*(.+?)\\s*$`, "im").exec(out)?.[1];
6332
+ let message2 = "";
6333
+ const body = out.slice(out.search(/\r?\n\r?\n/) + 1).trim();
6334
+ try {
6335
+ message2 = String(JSON.parse(body).message ?? "");
6336
+ } catch {
6337
+ message2 = body;
6338
+ }
6339
+ const parts = [
6340
+ ["resource", header("x-ratelimit-resource")],
6341
+ ["remaining", header("x-ratelimit-remaining")],
6342
+ ["reset", header("x-ratelimit-reset")],
6343
+ ["retry-after", header("retry-after")]
6344
+ ].filter(([, v]) => v !== void 0).map(([k, v]) => `${k}=${v}`);
6345
+ const text = message2.replace(/\s+/g, " ").slice(0, 160);
6346
+ return [parts.join(" "), text ? `"${text}"` : ""].filter(Boolean).join(" ") || "no rate-limit headers or message";
6347
+ }
6330
6348
  var etagCache = /* @__PURE__ */ new Map();
6331
6349
  function appPoolDetail() {
6332
6350
  const guard = appPollGuardSnapshot();
@@ -6360,7 +6378,7 @@ async function defaultGhApi(args) {
6360
6378
  }
6361
6379
  if (source === "app" && appToken && (status === 403 || status === 429)) {
6362
6380
  noteAppPollResponse(parseRateLimitHeaders(errOut), true, Date.now());
6363
- console.warn(`poll credential: App pool refused the read (HTTP ${status}, ${appPoolDetail()}) \u2014 REST poll reads switch to the ambient user token until the App pool resets (#7843)`);
6381
+ console.warn(`poll credential: App pool refused the read (HTTP ${status}, ${appPoolDetail()}; response: ${describeRefusal(errOut)}) \u2014 REST poll reads switch to the ambient user token until the App pool resets (#7843)`);
6364
6382
  lastPollSource = "user";
6365
6383
  source = "user";
6366
6384
  continue;
@@ -17604,10 +17622,10 @@ var rollout_plan_default = {
17604
17622
  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)."
17605
17623
  },
17606
17624
  baseline: {
17607
- version: "4.5.101",
17608
- tag: "v4.5.101",
17609
- commit: "a3c82f0f7aa3",
17610
- npm: "@mutmutco/cli@4.5.101"
17625
+ version: "4.5.102",
17626
+ tag: "v4.5.102",
17627
+ commit: "69ad9c05771f",
17628
+ npm: "@mutmutco/cli@4.5.102"
17611
17629
  },
17612
17630
  exitCriterion: "fleet-n-of-n",
17613
17631
  hubOnlyShortcut: "forbidden",
@@ -17624,14 +17642,14 @@ var rollout_plan_default = {
17624
17642
  repo: "mutmutco/mmi-hub",
17625
17643
  role: "canary",
17626
17644
  schedule: "train",
17627
- v3Target: "v4.5.101"
17645
+ v3Target: "v4.5.102"
17628
17646
  }
17629
17647
  ],
17630
17648
  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.",
17631
17649
  rollback: {
17632
17650
  independent: true,
17633
- mechanism: "npm dist-tag latest -> 4.5.101 and redeploy the Hub Lambda from tag v4.5.101 (a3c82f0f7aa3); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
17634
- v3Target: "v4.5.101 (@mutmutco/cli@4.5.101, tag commit a3c82f0f7aa3 \u2014 last known-good release carrying the repo-index v4-only contract)"
17651
+ mechanism: "npm dist-tag latest -> 4.5.102 and redeploy the Hub Lambda from tag v4.5.102 (69ad9c05771f); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
17652
+ v3Target: "v4.5.102 (@mutmutco/cli@4.5.102, tag commit 69ad9c05771f \u2014 last known-good release carrying the repo-index v4-only contract)"
17635
17653
  }
17636
17654
  },
17637
17655
  {
@@ -46588,8 +46606,11 @@ function trainApplyDeps() {
46588
46606
  // Hub-App-authority dispatch of the central tenant-control.yml (#1717) — the Hub fires the
46589
46607
  // workflow_dispatch with its App token. Never throws for an expected rejection: it returns the dispatch
46590
46608
  // outcome so runTenantControl can map a 5xx (transport-failed, retryable) vs a 4xx (rejected) vs ok.
46591
- dispatchTenantControl: async ({ repo, stage, action, lines: lines2, since, until, task, artifact, confirmDataLoss }) => {
46592
- const res = await tenantControl({ repo, stage, action, ...lines2 != null ? { lines: lines2 } : {}, ...since ? { since } : {}, ...until ? { until } : {}, ...task ? { task } : {}, ...artifact ? { artifact } : {}, ...confirmDataLoss ? { confirmDataLoss } : {} }, registryClientDeps(await loadConfig()));
46609
+ // #7961: forward every SET field rather than re-listing them, so a new option (e.g. `edge`) cannot be
46610
+ // dropped silently. Unset/false fields are omitted: the route rejects e.g. `edge` on a non-logs action.
46611
+ dispatchTenantControl: async (input) => {
46612
+ const payload = Object.fromEntries(Object.entries(input).filter(([, v]) => v != null && v !== "" && v !== false));
46613
+ const res = await tenantControl(payload, registryClientDeps(await loadConfig()));
46593
46614
  if (res.ok) return { ok: true };
46594
46615
  const body = res.body;
46595
46616
  return { ok: false, category: body?.category, error: body?.error ?? res.error };
package/cli/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mutmutco/cli",
3
- "version": "4.5.101",
3
+ "version": "4.5.102",
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.101",
3
+ "version": "4.5.102",
4
4
  "description": "MMI workflow skills and org gates delivery.",
5
5
  "author": {
6
6
  "name": "MMI Future",