@mutmutco/codex-plugin 4.6.21 → 4.6.22

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.6.21",
3
+ "version": "4.6.22",
4
4
  "mmiCompat": "4.x",
5
5
  "description": "MMI workflow skills and org gates delivery.",
6
6
  "author": {
package/cli/dist/main.cjs CHANGED
@@ -28089,10 +28089,10 @@ var rollout_plan_default = {
28089
28089
  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)."
28090
28090
  },
28091
28091
  baseline: {
28092
- version: "4.6.21",
28093
- tag: "v4.6.21",
28094
- commit: "e142296c5904",
28095
- npm: "@mutmutco/cli@4.6.21"
28092
+ version: "4.6.22",
28093
+ tag: "v4.6.22",
28094
+ commit: "bc3629b50994",
28095
+ npm: "@mutmutco/cli@4.6.22"
28096
28096
  },
28097
28097
  exitCriterion: "fleet-n-of-n",
28098
28098
  hubOnlyShortcut: "forbidden",
@@ -28109,14 +28109,14 @@ var rollout_plan_default = {
28109
28109
  repo: "mutmutco/mmi-hub",
28110
28110
  role: "canary",
28111
28111
  schedule: "train",
28112
- v3Target: "v4.6.21"
28112
+ v3Target: "v4.6.22"
28113
28113
  }
28114
28114
  ],
28115
28115
  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.",
28116
28116
  rollback: {
28117
28117
  independent: true,
28118
- mechanism: "npm dist-tag latest -> 4.6.21 and redeploy the Hub Lambda from tag v4.6.21 (e142296c5904); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
28119
- v3Target: "v4.6.21 (@mutmutco/cli@4.6.21, tag commit e142296c5904 \u2014 last known-good release carrying the repo-index v4-only contract)"
28118
+ mechanism: "npm dist-tag latest -> 4.6.22 and redeploy the Hub Lambda from tag v4.6.22 (bc3629b50994); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
28119
+ v3Target: "v4.6.22 (@mutmutco/cli@4.6.22, tag commit bc3629b50994 \u2014 last known-good release carrying the repo-index v4-only contract)"
28120
28120
  }
28121
28121
  },
28122
28122
  {
@@ -56903,9 +56903,15 @@ function orgScopedHint(path2) {
56903
56903
  if (!match) return "";
56904
56904
  const org = match[1];
56905
56905
  const runners = /^orgs\/[^/?#]+\/actions\/runners(?:\/|$)/.test(path2.split("?")[0]);
56906
- const surface = runners ? `For which lane is busy in a repo, use the App-token reads \`mmi-cli devops read run list --repo <owner>/<repo> --status in_progress --json databaseId,workflowName\` followed by \`mmi-cli devops read run view <id> --repo <owner>/<repo> --json jobs\` (runner-name/status per job); fleet-wide runner online/offline state has no App-token read and a human token holder answers it with \`gh api orgs/${org}/actions/runners\` (docs/Guides/gh-runner-runbook.md).` : "It needs a human token holder with an org-scoped token, or a dedicated mmi-cli verb when one exists for this resource.";
56906
+ const surface = runners ? `For which lane is busy in a repo, use the App-token reads \`mmi-cli devops read run list --repo <owner>/<repo> --status in_progress --json databaseId,workflowName\` followed by \`MMI_ACTOR=app mmi-cli devops api get "repos/<owner>/<repo>/actions/runs/<id>/jobs?per_page=100"\` (runner_name/status per job); fleet-wide runner online/offline state has no App-token read and a human token holder answers it with \`gh api orgs/${org}/actions/runners\` (docs/Guides/gh-runner-runbook.md).` : "It needs a human token holder with an org-scoped token, or a dedicated mmi-cli verb when one exists for this resource.";
56907
56907
  return ` This route is ORG-SCOPED (\`orgs/${org}/...\`) and is deliberately outside the allowlist \u2014 no App-token read exists for org-level resources, so retrying path variants cannot work and no \`repos/{owner}/{repo}/...\` respelling of it will be accepted. ${surface} A refusal writes nothing to stdout: check the exit code and never merge stderr into the JSON pipe (2>&1).`;
56908
56908
  }
56909
+ function repoRunnersReadHint(path2) {
56910
+ const match = new RegExp(`^repos/(${NAME})/(${NAME})/actions/runners(?:/\\d+)?$`).exec(path2.split("?")[0]);
56911
+ if (!match) return "";
56912
+ const slug = `${match[1]}/${match[2]}`;
56913
+ return ` This route is a REPO-SCOPED runner read (\`repos/${slug}/actions/runners...\`) and is deliberately outside the allowlist \u2014 retrying path variants cannot work, and no new grant or allowlist growth is implied. The App-token reads prove only observed activity, never fleet inventory or idle capacity: \`MMI_ACTOR=app mmi-cli devops read run list --repo ${slug} --status in_progress --json databaseId,workflowName\` followed by \`MMI_ACTOR=app mmi-cli devops api get "repos/${slug}/actions/runs/<id>/jobs?per_page=100"\` (runner_name/status per job). Fleet inventory is a human admin read: \`gh api orgs/<org>/actions/runners\` (docs/Guides/gh-runner-runbook.md) \u2014 whether this repo also carries repo-level runners is unproved either way. A refusal writes nothing to stdout: check the exit code and never merge stderr into the JSON pipe (2>&1).`;
56914
+ }
56909
56915
  function tagsReadHint(path2) {
56910
56916
  const match = new RegExp(`^repos/(${NAME})/(${NAME})/(?:tags|git/(?:refs|matching-refs|tags|commits))(?:[/?#]|$)`).exec(path2);
56911
56917
  if (!match) return "";
@@ -56949,7 +56955,7 @@ function parseApiGetPath(rawPath) {
56949
56955
  const path2 = normalizeApiGetPath(rawPath);
56950
56956
  const refuse = () => {
56951
56957
  const hint = /^[A-Za-z]:[/\\]/.test(rawPath.trim()) ? " Git Bash/MSYS may have rewritten a leading-slash argument; retry with MSYS_NO_PATHCONV=1 and the slash-free repos/... path. The endpoint must still be allowlisted." : "";
56952
- const routeHints = `${typedReadHint(path2)}${runsReadHint(path2)}${orgScopedHint(path2)}${tagsReadHint(path2)}${branchRulesReadHint(path2)}${commitsReadHint(path2)}${checkRunsReadHint(path2)}${workflowRunsReadHint(path2)}${hint}`;
56958
+ const routeHints = `${typedReadHint(path2)}${runsReadHint(path2)}${orgScopedHint(path2)}${repoRunnersReadHint(path2)}${tagsReadHint(path2)}${branchRulesReadHint(path2)}${commitsReadHint(path2)}${checkRunsReadHint(path2)}${workflowRunsReadHint(path2)}${hint}`;
56953
56959
  return new Error(`api get: refusing '${rawPath}' \u2014${routeHints}${API_GET_RECOVERY} Only these GET reads are allowed (#7219): ${API_GET_ALLOWED_SHAPES}.`);
56954
56960
  };
56955
56961
  if (/[%#\\]/.test(path2) || path2.split("?")[0].split("/").some((seg) => seg === "." || seg === ".." || seg === "")) throw refuse();
package/cli/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mutmutco/cli",
3
- "version": "4.6.21",
3
+ "version": "4.6.22",
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.6.21",
3
+ "version": "4.6.22",
4
4
  "description": "MMI workflow skills and org gates delivery.",
5
5
  "author": {
6
6
  "name": "MMI Future",