@mutmutco/codex-plugin 4.6.25 → 4.6.26
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/cli/dist/main.cjs
CHANGED
|
@@ -25243,6 +25243,9 @@ var CMD_RE = /`mmi-cli ((?:[a-z][a-z-]*)(?: [a-z][a-z-]*){0,3})/g;
|
|
|
25243
25243
|
var RETIRED_RE = /\b(retired|historical|removed|deleted|gone|no longer|superseded|legacy)\b/i;
|
|
25244
25244
|
var ROOT_DOCS = ["README.md", "architecture.md"];
|
|
25245
25245
|
var SKIP_WALK = ["docs/decisions/"];
|
|
25246
|
+
function formatDocRefFinding(finding) {
|
|
25247
|
+
return `${finding.doc}:${finding.line} [${finding.kind}] ${finding.detail}${finding.suggest?.length ? ` (did you mean ${finding.suggest[0]}?)` : ""}`;
|
|
25248
|
+
}
|
|
25246
25249
|
function refFirstSegment(ref) {
|
|
25247
25250
|
return ref.replace(/^(\.\/)+/, "").split("/")[0];
|
|
25248
25251
|
}
|
|
@@ -25663,21 +25666,14 @@ function defaultIsIgnored(root, relPaths, exec3 = import_node_child_process6.exe
|
|
|
25663
25666
|
throw error;
|
|
25664
25667
|
}
|
|
25665
25668
|
}
|
|
25666
|
-
function
|
|
25667
|
-
if (firstSegments.length === 0) return /* @__PURE__ */ new Set();
|
|
25669
|
+
function defaultTrackedFiles(root, firstSegments, exec3 = import_node_child_process6.execFileSync) {
|
|
25668
25670
|
try {
|
|
25669
25671
|
const out = exec3("git", ["ls-files", "-z", "--", ...firstSegments.map((s) => `:(literal)${s}`)], {
|
|
25670
25672
|
cwd: root,
|
|
25671
25673
|
encoding: "utf8",
|
|
25672
25674
|
maxBuffer: CHECK_IGNORE_MAX_BUFFER
|
|
25673
25675
|
});
|
|
25674
|
-
|
|
25675
|
-
for (const path2 of out.split("\0")) {
|
|
25676
|
-
if (path2) for (const segment of firstSegments) {
|
|
25677
|
-
if (path2 === segment || path2.startsWith(`${segment}/`)) tracked.add(segment);
|
|
25678
|
-
}
|
|
25679
|
-
}
|
|
25680
|
-
return tracked;
|
|
25676
|
+
return out.split("\0").filter(Boolean);
|
|
25681
25677
|
} catch (error) {
|
|
25682
25678
|
if (error?.status === 128) return null;
|
|
25683
25679
|
if (error?.code === "ENOENT") return null;
|
|
@@ -25721,7 +25717,12 @@ function runDocRefs(root, deps = {}) {
|
|
|
25721
25717
|
const exists = deps.exists ?? import_node_fs19.existsSync;
|
|
25722
25718
|
const listDocs = deps.listDocs ?? defaultListDocs;
|
|
25723
25719
|
const isIgnored = deps.isIgnored ?? ((paths) => defaultIsIgnored(root, paths));
|
|
25724
|
-
|
|
25720
|
+
let inventory;
|
|
25721
|
+
const trackedFiles = () => inventory === void 0 ? inventory = deps.trackedFiles ? deps.trackedFiles() : deps.trackedFirstSegments ? null : defaultTrackedFiles(root, []) : inventory;
|
|
25722
|
+
const trackedFirstSegments = deps.trackedFirstSegments ?? ((segs) => {
|
|
25723
|
+
const files = trackedFiles();
|
|
25724
|
+
return files == null ? null : new Set(segs.filter((seg) => files.some((path2) => path2 === seg || path2.startsWith(`${seg}/`))));
|
|
25725
|
+
});
|
|
25725
25726
|
const commandPaths = deps.commandPaths ?? null;
|
|
25726
25727
|
const walked = listDocs(root);
|
|
25727
25728
|
const ignoredDocs = walked.length ? isIgnored(walked) : /* @__PURE__ */ new Set();
|
|
@@ -25761,6 +25762,18 @@ ${sourceMessages}`;
|
|
|
25761
25762
|
(override ? warnings : findings).push(...stale);
|
|
25762
25763
|
if (!/^Seed-Runbook-Affected:[ \t]*\S.*$/m.test(allMessages)) findings.push(...seedStale);
|
|
25763
25764
|
}
|
|
25765
|
+
for (const finding of findings) {
|
|
25766
|
+
if (finding.kind !== "missing-path") continue;
|
|
25767
|
+
const directory = import_node_path16.posix.dirname(import_node_path16.posix.normalize(finding.detail)).split("/");
|
|
25768
|
+
const distance = (path2) => {
|
|
25769
|
+
const parts = import_node_path16.posix.dirname(path2).split("/");
|
|
25770
|
+
let common = 0;
|
|
25771
|
+
while (common < directory.length && common < parts.length && directory[common] === parts[common]) common += 1;
|
|
25772
|
+
return directory.length + parts.length - 2 * common;
|
|
25773
|
+
};
|
|
25774
|
+
const suggest = [...new Set(trackedFiles() ?? [])].filter((path2) => import_node_path16.posix.basename(path2) === import_node_path16.posix.basename(finding.detail) && exists((0, import_node_path16.join)(root, path2))).sort((a, b) => distance(a) - distance(b) || a.localeCompare(b)).slice(0, 3);
|
|
25775
|
+
if (suggest.length) finding.suggest = suggest;
|
|
25776
|
+
}
|
|
25764
25777
|
return {
|
|
25765
25778
|
ok: findings.length === 0,
|
|
25766
25779
|
findings,
|
|
@@ -28166,10 +28179,10 @@ var rollout_plan_default = {
|
|
|
28166
28179
|
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)."
|
|
28167
28180
|
},
|
|
28168
28181
|
baseline: {
|
|
28169
|
-
version: "4.6.
|
|
28170
|
-
tag: "v4.6.
|
|
28171
|
-
commit: "
|
|
28172
|
-
npm: "@mutmutco/cli@4.6.
|
|
28182
|
+
version: "4.6.26",
|
|
28183
|
+
tag: "v4.6.26",
|
|
28184
|
+
commit: "bab0b3157d41",
|
|
28185
|
+
npm: "@mutmutco/cli@4.6.26"
|
|
28173
28186
|
},
|
|
28174
28187
|
exitCriterion: "fleet-n-of-n",
|
|
28175
28188
|
hubOnlyShortcut: "forbidden",
|
|
@@ -28186,14 +28199,14 @@ var rollout_plan_default = {
|
|
|
28186
28199
|
repo: "mutmutco/mmi-hub",
|
|
28187
28200
|
role: "canary",
|
|
28188
28201
|
schedule: "train",
|
|
28189
|
-
v3Target: "v4.6.
|
|
28202
|
+
v3Target: "v4.6.26"
|
|
28190
28203
|
}
|
|
28191
28204
|
],
|
|
28192
28205
|
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.",
|
|
28193
28206
|
rollback: {
|
|
28194
28207
|
independent: true,
|
|
28195
|
-
mechanism: "npm dist-tag latest -> 4.6.
|
|
28196
|
-
v3Target: "v4.6.
|
|
28208
|
+
mechanism: "npm dist-tag latest -> 4.6.26 and redeploy the Hub Lambda from tag v4.6.26 (bab0b3157d41); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
|
|
28209
|
+
v3Target: "v4.6.26 (@mutmutco/cli@4.6.26, tag commit bab0b3157d41 \u2014 last known-good release carrying the repo-index v4-only contract)"
|
|
28197
28210
|
}
|
|
28198
28211
|
},
|
|
28199
28212
|
{
|
|
@@ -72535,7 +72548,7 @@ function registerDeveloperCommands(program3) {
|
|
|
72535
72548
|
if (!result.ok) process.exitCode = 1;
|
|
72536
72549
|
return;
|
|
72537
72550
|
}
|
|
72538
|
-
for (const w of result.warnings) console.warn(`WARNING: ${w
|
|
72551
|
+
for (const w of result.warnings) console.warn(`WARNING: ${formatDocRefFinding(w)}`);
|
|
72539
72552
|
if (result.ok) {
|
|
72540
72553
|
console.log(
|
|
72541
72554
|
`doc refs: ${result.docCount} docs, every reference resolves` + (result.warnings.length ? ` (${result.warnings.length} warning(s))` : "")
|
|
@@ -72545,7 +72558,7 @@ function registerDeveloperCommands(program3) {
|
|
|
72545
72558
|
const hasStale = result.findings.some((f) => f.kind === "runbook-section-stale" || f.kind === "seed-runbook-unreviewed");
|
|
72546
72559
|
const hasRefs = result.findings.some((f) => f.kind !== "runbook-section-stale" && f.kind !== "seed-runbook-unreviewed");
|
|
72547
72560
|
console.error(hasStale && !hasRefs ? "doc refs: stale runbook section(s)" : hasStale && hasRefs ? "doc refs: unresolved references and stale runbook section(s)" : "doc refs: unresolved references");
|
|
72548
|
-
for (const f of result.findings) console.error(`- ${f
|
|
72561
|
+
for (const f of result.findings) console.error(`- ${formatDocRefFinding(f)}`);
|
|
72549
72562
|
process.exitCode = 1;
|
|
72550
72563
|
} catch (e) {
|
|
72551
72564
|
await failGraceful(e.message);
|
package/cli/package.json
CHANGED
package/package.json
CHANGED
|
@@ -114,7 +114,11 @@ requests like this should follow this structure, not prose guide."
|
|
|
114
114
|
Before building visual A/B boards, use front-loaded **Impeccable v4.7.0** alongside **21st.dev MCP**
|
|
115
115
|
(`https://21st.dev/api/mcp`; verbatim owner ruling: `"we don't need the mcp better design yet,
|
|
116
116
|
impeccable and 21st is enough"`, dropping Better Design MCP) to study high-craft reference patterns,
|
|
117
|
-
layout proportions, and interaction details.
|
|
117
|
+
layout proportions, and interaction details. Actually query the 21st.dev MCP; in the Phase 0
|
|
118
|
+
handoff/A-B brief, report the queries issued and returned component/pattern names and IDs
|
|
119
|
+
(where provided). If unreachable, report the exact error; if empty, report "no results".
|
|
120
|
+
Neither case supports a 21st inspiration claim. Never describe patterns as 21st-inspired
|
|
121
|
+
without this query/result record. Always translate inspired patterns into zero-GPU
|
|
118
122
|
`@mutmutco/mmwork-ds` tokens (`--card-blur: none`, `--card-tint-dark: 0%`, `--card-tint-light: 0%`,
|
|
119
123
|
sleek translucent glass cards) and Atomic Design layers; never copy raw third-party CSS/HTML or
|
|
120
124
|
GPU-heavy effects. `MM-Inspo` is strictly a customer/tenant module inside the MM-Work suite, never
|
|
@@ -285,7 +285,11 @@ requests like this should follow this structure, not prose guide."
|
|
|
285
285
|
Before building visual A/B boards, use front-loaded **Impeccable v4.7.0** alongside **21st.dev MCP**
|
|
286
286
|
(`https://21st.dev/api/mcp`; verbatim owner ruling: `"we don't need the mcp better design yet,
|
|
287
287
|
impeccable and 21st is enough"`, dropping Better Design MCP) to study high-craft reference patterns,
|
|
288
|
-
layout proportions, and interaction details.
|
|
288
|
+
layout proportions, and interaction details. Actually query the 21st.dev MCP; in the Phase 0
|
|
289
|
+
handoff/A-B brief, report the queries issued and returned component/pattern names and IDs
|
|
290
|
+
(where provided). If unreachable, report the exact error; if empty, report "no results".
|
|
291
|
+
Neither case supports a 21st inspiration claim. Never describe patterns as 21st-inspired
|
|
292
|
+
without this query/result record. Always translate inspired patterns into zero-GPU
|
|
289
293
|
`@mutmutco/mmwork-ds` tokens (`--card-blur: none`, `--card-tint-dark: 0%`, `--card-tint-light: 0%`,
|
|
290
294
|
sleek translucent glass cards) and Atomic Design layers; never copy raw third-party CSS/HTML or
|
|
291
295
|
GPU-heavy effects. `MM-Inspo` is strictly a customer/tenant module inside the MM-Work suite, never
|