@mutmutco/cli 4.3.14 → 4.3.15
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/README.md +4 -2
- package/dist/main.cjs +20 -12
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -35,7 +35,7 @@ mmi-cli doctor --json
|
|
|
35
35
|
- `mmi-cli vault org oauth plan|verify` prints a repo's canonical Google OAuth URI set when the registry declares an `oauth` block and verifies the client is port-agnostic.
|
|
36
36
|
- `mmi-cli oracle issue create` creates typed, prioritized GitHub issues (priority sets the board field, not a label) and queues related-issue discovery. `--parent <ref>` files the new issue as a native GitHub sub-issue of a parent (works cross-repo); `mmi-cli oracle issue link-child <parent> <child>` links two existing issues the same way.
|
|
37
37
|
- `mmi-cli learning report` files a friction report on the Hub board with your GitHub identity, deduping against the open `report`-labeled issues (a confident duplicate becomes a +1 comment, not a new issue). No repo-local `.env`, no API key, no copied report script.
|
|
38
|
-
- `mmi-cli learning skill-lesson --skill <name>` files a **skill-lesson** on the Hub board when a skill's own instructions misfire — the cross-skill generalization of grind's Retro. GitHub identity, its own `skill-lesson` label + dedup pool (a confident duplicate becomes a +1 comment), and a footer pinning the source checkout + plugin SHA. Advisory: the fix lands via a reviewed PR to the skill in MMI-Hub, never a live edit.
|
|
38
|
+
- `mmi-cli learning skill-lesson --skill <name>` files a **skill-lesson** on the Hub board when a skill's own instructions misfire — the cross-skill generalization of grind's Retro. GitHub identity, its own `skill-lesson` label + dedup pool (a confident duplicate becomes a +1 comment), and a footer pinning the source checkout + plugin SHA. Advisory: the fix lands via a reviewed PR to the skill in MMI-Hub, never a live edit. **Deprecated (#6215)** — it still files, and prints one stderr notice naming its replacement: the `jerv_learning_note` tool in-session (origin retro), or `jervcode learn --origin retro` on a machine path. `mmi-cli learning report` and `mmi-cli oracle issue create` are unaffected.
|
|
39
39
|
- `mmi-cli devops pr create`, `pr merge`, and **`pr land`** (train probe → checks-wait → merge --auto — #1440) create and land PRs. **`mmi-cli devops ci audit`** / **`ci reconcile`** scan fleet merge-readiness. Local workspace lifecycle is host-owned.
|
|
40
40
|
- `mmi-cli oracle board read|claim|show|move|done` reads and moves GitHub Project work.
|
|
41
41
|
- `mmi-cli devops runtime tenant control <owner/repo> <stage> <status|start|stop|restart>` runs bounded dev/rc box control for project-admins through the Hub API; main remains master-only.
|
|
@@ -70,7 +70,9 @@ they don't get re-derived or re-litigated per session:
|
|
|
70
70
|
`jerv-cli save` (a machine summary of touched issues/PRs/worktrees/deploys for a memory save or
|
|
71
71
|
handoff). jerv-cli never writes org state; mmi-cli never writes Jerv's Memory.
|
|
72
72
|
- **Intentional duplicates — keep both.** `skill-lesson` exists in both CLIs by design: each files to
|
|
73
|
-
its own owning board.
|
|
73
|
+
its own owning board. Deprecated on the mmi-cli side (#6215) — use `jerv_learning_note` in-session
|
|
74
|
+
(origin retro) or `jervcode learn --origin retro` on a machine path; `mmi-cli learning report` is the
|
|
75
|
+
unchanged path for friction on org tooling. `doctor`, `whoami`, `commands`, and `explain` are per-CLI meta
|
|
74
76
|
infrastructure; a shared library across the two repos is not worth the version churn.
|
|
75
77
|
|
|
76
78
|
## Repo-Local Fallback
|
package/dist/main.cjs
CHANGED
|
@@ -7917,10 +7917,12 @@ function buildIssueArgs({ type, title, body, priority, repo, labels }) {
|
|
|
7917
7917
|
for (const label of labels ?? []) args.push("--label", label);
|
|
7918
7918
|
return args;
|
|
7919
7919
|
}
|
|
7920
|
+
var LEARNING_LABEL = "learning";
|
|
7921
|
+
var LEARNING_LABEL_COLOR = "d93f0b";
|
|
7920
7922
|
async function ensureLabelsExist(labels, repo, deps = {}) {
|
|
7921
7923
|
const run = deps.run ?? execFileP;
|
|
7922
7924
|
for (const label of new Set(labels)) {
|
|
7923
|
-
const args = ["label", "create", label, "--color", "ededed"];
|
|
7925
|
+
const args = ["label", "create", label, "--color", label === LEARNING_LABEL ? LEARNING_LABEL_COLOR : "ededed"];
|
|
7924
7926
|
if (repo) args.push("--repo", repo);
|
|
7925
7927
|
try {
|
|
7926
7928
|
await run("gh", args, { timeout: GH_MUTATION_TIMEOUT_MS });
|
|
@@ -9334,7 +9336,7 @@ async function fetchSecretForUse(deps, { repo, key, slug }) {
|
|
|
9334
9336
|
// src/report.ts
|
|
9335
9337
|
var HUB_REPO = "mutmutco/MMI-Hub";
|
|
9336
9338
|
var REPORT_LABEL = "report";
|
|
9337
|
-
var
|
|
9339
|
+
var LEARNING_LABEL2 = "learning";
|
|
9338
9340
|
var REPORT_LOOP_KIND = "friction";
|
|
9339
9341
|
var REPORT_SURFACE_WAIVER_REASON = "Hub-only friction filing; attribution repo is footer-only; no honest single surface";
|
|
9340
9342
|
function preflightReportSurface() {
|
|
@@ -9516,7 +9518,7 @@ async function loadConfigForBoardSelector(selector, repoOption) {
|
|
|
9516
9518
|
|
|
9517
9519
|
// src/skill-lesson.ts
|
|
9518
9520
|
var SKILL_LESSON_LABEL = "skill-lesson";
|
|
9519
|
-
var SKILL_LESSON_FILE_LABELS = [SKILL_LESSON_LABEL,
|
|
9521
|
+
var SKILL_LESSON_FILE_LABELS = [SKILL_LESSON_LABEL, LEARNING_LABEL2];
|
|
9520
9522
|
var SKILL_LESSON_LOOP_KIND = "lesson";
|
|
9521
9523
|
var SKILL_NAMES = ["bootstrap", "epic", "hotfix", "rcand", "release", "secrets", "stage"];
|
|
9522
9524
|
function assertSkillName(name) {
|
|
@@ -9547,6 +9549,11 @@ ${buildSkillLessonBody(body, sourceRepo, pluginSha)}`;
|
|
|
9547
9549
|
function findDuplicateLesson(source, openLessons) {
|
|
9548
9550
|
return findDuplicateReport(source, openLessons);
|
|
9549
9551
|
}
|
|
9552
|
+
var SKILL_LESSON_DEPRECATION_NOTICE = "mmi-cli learning skill-lesson is deprecated \u2014 file the retro with the jerv_learning_note tool in-session (origin retro), or `jervcode learn --origin retro --surface skills` on a machine path. This verb still files.";
|
|
9553
|
+
function warnSkillLessonDeprecated(write = (line) => void process.stderr.write(line)) {
|
|
9554
|
+
write(`${SKILL_LESSON_DEPRECATION_NOTICE}
|
|
9555
|
+
`);
|
|
9556
|
+
}
|
|
9550
9557
|
|
|
9551
9558
|
// src/session-identity.ts
|
|
9552
9559
|
var import_node_crypto4 = require("node:crypto");
|
|
@@ -15476,10 +15483,10 @@ var rollout_plan_default = {
|
|
|
15476
15483
|
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)."
|
|
15477
15484
|
},
|
|
15478
15485
|
baseline: {
|
|
15479
|
-
version: "4.3.
|
|
15480
|
-
tag: "v4.3.
|
|
15481
|
-
commit: "
|
|
15482
|
-
npm: "@mutmutco/cli@4.3.
|
|
15486
|
+
version: "4.3.15",
|
|
15487
|
+
tag: "v4.3.15",
|
|
15488
|
+
commit: "006f11ed8921",
|
|
15489
|
+
npm: "@mutmutco/cli@4.3.15"
|
|
15483
15490
|
},
|
|
15484
15491
|
exitCriterion: "fleet-n-of-n",
|
|
15485
15492
|
hubOnlyShortcut: "forbidden",
|
|
@@ -15496,14 +15503,14 @@ var rollout_plan_default = {
|
|
|
15496
15503
|
repo: "mutmutco/mmi-hub",
|
|
15497
15504
|
role: "canary",
|
|
15498
15505
|
schedule: "train",
|
|
15499
|
-
v3Target: "v4.3.
|
|
15506
|
+
v3Target: "v4.3.15"
|
|
15500
15507
|
}
|
|
15501
15508
|
],
|
|
15502
15509
|
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.",
|
|
15503
15510
|
rollback: {
|
|
15504
15511
|
independent: true,
|
|
15505
|
-
mechanism: "npm dist-tag latest -> 4.3.
|
|
15506
|
-
v3Target: "v4.3.
|
|
15512
|
+
mechanism: "npm dist-tag latest -> 4.3.15 and redeploy the Hub Lambda from tag v4.3.15 (006f11ed8921); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
|
|
15513
|
+
v3Target: "v4.3.15 (@mutmutco/cli@4.3.15, tag commit 006f11ed8921 \u2014 last known-good release carrying the repo-index v4-only contract)"
|
|
15507
15514
|
}
|
|
15508
15515
|
},
|
|
15509
15516
|
{
|
|
@@ -33124,7 +33131,7 @@ ${lines2}`, {
|
|
|
33124
33131
|
var LEARNING_PICKUP_CMD = ["mmi-cli", "learning", "pickup"].join(" ");
|
|
33125
33132
|
var LEARNING_CLAIM_MARKER_LIVE_MS = 24 * 60 * 6e4;
|
|
33126
33133
|
function isLearningChannelItem(labels) {
|
|
33127
|
-
return labels.includes(
|
|
33134
|
+
return labels.includes(LEARNING_LABEL2) || loopKindOf(labels) !== void 0;
|
|
33128
33135
|
}
|
|
33129
33136
|
function claimEvidenceBlocksLearningAdoption(evidence) {
|
|
33130
33137
|
if (evidence.failed.includes("comments")) return true;
|
|
@@ -39199,6 +39206,7 @@ ${list}`);
|
|
|
39199
39206
|
}
|
|
39200
39207
|
}
|
|
39201
39208
|
program3.command("skill-lesson").description("file a skill-lesson on the Hub board (GitHub auth, dedups open lessons) and print {number,url} JSON").addOption(new Option("--skill <name>", `which skill misfired (${SKILL_NAMES.join(" | ")})`).makeOptionMandatory().choices([...SKILL_NAMES])).option("--title <title>", "one-line summary of what misfired").option("--title-file <path|->", "read the one-line summary from a UTF-8 file, or from stdin with -").option("--body <body>", "lesson body: what misfired, the evidence, and the proposed amendment (markdown)").option("--body-file <path|->", "read the lesson body from a UTF-8 file, or from stdin with -").option("--priority <priority>", "urgent | high | medium | low (defaults to medium; sets the board Priority field only, #416)").option("--repo <owner/repo>", `target repo (defaults to the org Hub: ${HUB_REPO})`).option("--force", "file a new issue even when an open lesson looks like a duplicate").option("--json", "machine-readable output (already the default \u2014 skill-lesson always prints JSON)").action(async (o) => {
|
|
39209
|
+
warnSkillLessonDeprecated();
|
|
39202
39210
|
const targetRepo2 = o.repo ?? HUB_REPO;
|
|
39203
39211
|
const sourceRepo = await resolveRepo(void 0);
|
|
39204
39212
|
const pluginSha = await resolvePluginSha();
|
|
@@ -39257,7 +39265,7 @@ ${list}`);
|
|
|
39257
39265
|
});
|
|
39258
39266
|
if (surfaceWarn) process.stderr.write(`${surfaceWarn}
|
|
39259
39267
|
`);
|
|
39260
|
-
for (const [label, color] of [[SKILL_LESSON_LABEL, "c2e0c6"], [
|
|
39268
|
+
for (const [label, color] of [[SKILL_LESSON_LABEL, "c2e0c6"], [LEARNING_LABEL2, "ededed"]]) {
|
|
39261
39269
|
try {
|
|
39262
39270
|
await execFileP("gh", ["label", "create", label, "--color", color, "--repo", targetRepo2], { timeout: GH_MUTATION_TIMEOUT_MS });
|
|
39263
39271
|
} catch {
|
package/package.json
CHANGED