@mutmutco/cli 3.129.0 → 3.131.0
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/dist/main.cjs +673 -168
- package/package.json +1 -1
package/dist/main.cjs
CHANGED
|
@@ -9050,31 +9050,8 @@ function readSettingsAutoUpdate(raw, name) {
|
|
|
9050
9050
|
const { autoUpdate } = entry;
|
|
9051
9051
|
return typeof autoUpdate === "boolean" ? autoUpdate : void 0;
|
|
9052
9052
|
}
|
|
9053
|
-
var AUTO_UPDATE_TOGGLE_STEPS = "`/plugin` \u2192 Marketplaces tab \u2192 select the marketplace \u2192 Enable auto-update";
|
|
9054
9053
|
var CATALOG_CONTENT_REF = "main";
|
|
9055
9054
|
var CATALOG_REF_PIN_STEPS = `add \`"ref": "${CATALOG_CONTENT_REF}"\` to this marketplace's \`source\` in ~/.claude/plugins/known_marketplaces.json, then restart Claude`;
|
|
9056
|
-
function resolveCatalogRef(probe) {
|
|
9057
|
-
const { name, registered, ref, autoUpdate } = probe;
|
|
9058
|
-
if (!registered) return void 0;
|
|
9059
|
-
if (ref) {
|
|
9060
|
-
const agrees = ref === CATALOG_CONTENT_REF;
|
|
9061
|
-
return {
|
|
9062
|
-
name,
|
|
9063
|
-
ref,
|
|
9064
|
-
autoUpdate,
|
|
9065
|
-
unpinned: false,
|
|
9066
|
-
agrees,
|
|
9067
|
-
reason: agrees ? `pinned to ${ref} \u2014 catalog and plugin content come from the same branch` : `pinned to ${ref} \u2014 plugin content is pinned to ${CATALOG_CONTENT_REF}, so the two disagree`
|
|
9068
|
-
};
|
|
9069
|
-
}
|
|
9070
|
-
return {
|
|
9071
|
-
name,
|
|
9072
|
-
autoUpdate,
|
|
9073
|
-
unpinned: true,
|
|
9074
|
-
agrees: false,
|
|
9075
|
-
reason: `no ref pinned \u2014 the catalog is served from the repo's default branch while plugin content is pinned to ${CATALOG_CONTENT_REF}`
|
|
9076
|
-
};
|
|
9077
|
-
}
|
|
9078
9055
|
|
|
9079
9056
|
// src/plugin-guard-io.ts
|
|
9080
9057
|
var import_node_fs14 = require("node:fs");
|
|
@@ -10062,7 +10039,7 @@ function disableOrgMarketplaceBackgroundUpdates(path2, names, hostIsRunning = cl
|
|
|
10062
10039
|
const detail = writeMarketplacePinsOnDisk(
|
|
10063
10040
|
path2,
|
|
10064
10041
|
new Map(names.map((name) => [name, { autoUpdate: false }])),
|
|
10065
|
-
(pins) => `background auto-update off for ${[...pins.keys()].join(", ")} \u2014 \`mmi-
|
|
10042
|
+
(pins) => `background auto-update off for ${[...pins.keys()].join(", ")} \u2014 \`mmi-updater\` is the update channel`,
|
|
10066
10043
|
"disable",
|
|
10067
10044
|
() => hostIsRunning() ? "left as-is \u2014 Claude Code is running and rewrites this registration from its own copy; the next doctor run outside a live session sets it" : void 0
|
|
10068
10045
|
);
|
|
@@ -16037,10 +16014,10 @@ var rollout_plan_default = {
|
|
|
16037
16014
|
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)."
|
|
16038
16015
|
},
|
|
16039
16016
|
baseline: {
|
|
16040
|
-
version: "3.
|
|
16041
|
-
tag: "v3.
|
|
16042
|
-
commit: "
|
|
16043
|
-
npm: "@mutmutco/cli@3.
|
|
16017
|
+
version: "3.131.0",
|
|
16018
|
+
tag: "v3.131.0",
|
|
16019
|
+
commit: "11960bf8a21b",
|
|
16020
|
+
npm: "@mutmutco/cli@3.131.0"
|
|
16044
16021
|
},
|
|
16045
16022
|
exitCriterion: "fleet-n-of-n",
|
|
16046
16023
|
hubOnlyShortcut: "forbidden",
|
|
@@ -16057,14 +16034,14 @@ var rollout_plan_default = {
|
|
|
16057
16034
|
repo: "mutmutco/mmi-hub",
|
|
16058
16035
|
role: "canary",
|
|
16059
16036
|
schedule: "train",
|
|
16060
|
-
v3Target: "v3.
|
|
16037
|
+
v3Target: "v3.131.0"
|
|
16061
16038
|
}
|
|
16062
16039
|
],
|
|
16063
16040
|
rollbackTrigger: "Any red inside the post-cut soak window: `devops train gate` FAIL attributable to the v4 doors, Hub endpoint health probe failure, a v3 client refused while the compat window must still admit it (SUPPORTED_MINOR_WINDOW=2, MIN_CLIENT_VERSION 0.0.0 \u2014 D6a), or npm consumer install/doctor failure on the v4 dist.",
|
|
16064
16041
|
rollback: {
|
|
16065
16042
|
independent: true,
|
|
16066
|
-
mechanism: "npm dist-tag latest -> 3.
|
|
16067
|
-
v3Target: "v3.
|
|
16043
|
+
mechanism: "npm dist-tag latest -> 3.131.0 and redeploy the Hub Lambda from tag v3.131.0 (11960bf8a21b); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
|
|
16044
|
+
v3Target: "v3.131.0 (@mutmutco/cli@3.131.0, tag commit 11960bf8a21b \u2014 the preserved latest-v3 distribution, D6b)"
|
|
16068
16045
|
}
|
|
16069
16046
|
},
|
|
16070
16047
|
{
|
|
@@ -16253,7 +16230,7 @@ function formatTrainStatus(r) {
|
|
|
16253
16230
|
"",
|
|
16254
16231
|
`release track: ${r.releaseTrack} \u2014 stages: ${r.branches.join(" -> ")}`,
|
|
16255
16232
|
`cli version: ${r.cliVersion}${r.repoVersion ? ` (repo: ${r.repoVersion})` : ""}${r.releasedVersion ? ` (released: ${r.releasedVersion})` : ""}`,
|
|
16256
|
-
`release bump intent: ${r.bumpIntent ?? "not declared \u2014 set MMI_BUMP_INTENT=major|minor
|
|
16233
|
+
`release bump intent: ${r.bumpIntent ?? "not declared \u2014 an ordinary train defaults to patch (#4929); set MMI_BUMP_INTENT=major|minor to override"}`
|
|
16257
16234
|
];
|
|
16258
16235
|
if (r.versionLag.ok) {
|
|
16259
16236
|
lines.push("version lag: none \u2014 CLI is current");
|
|
@@ -17065,7 +17042,7 @@ async function runIssueViewContext(deps, opts) {
|
|
|
17065
17042
|
}
|
|
17066
17043
|
async function runPrViewContext(deps, opts) {
|
|
17067
17044
|
let fields = opts.jsonFields;
|
|
17068
|
-
if (opts.comments || opts.context) fields = ensureField(fields, "comments");
|
|
17045
|
+
if (opts.comments || opts.context) fields = ensureField(ensureField(fields, "body"), "comments");
|
|
17069
17046
|
if (opts.context) fields = ensureField(fields, "closingIssuesReferences");
|
|
17070
17047
|
const base = await deps.ghJson(["pr", "view", String(opts.number), "--repo", opts.repo, "--json", fields], GH_LIST_TIMEOUT_MS);
|
|
17071
17048
|
if (!opts.context) return base;
|
|
@@ -20417,21 +20394,7 @@ async function resolveTrainBumpIntent(deps, env = process.env) {
|
|
|
20417
20394
|
}
|
|
20418
20395
|
return explicit.major > latest.major ? "major" : explicit.minor > latest.minor ? "minor" : "patch";
|
|
20419
20396
|
}
|
|
20420
|
-
|
|
20421
|
-
return requireValue(
|
|
20422
|
-
clean2(await deps.run("node", ["scripts/next-version.mjs", "intent"])),
|
|
20423
|
-
"release bump intent"
|
|
20424
|
-
);
|
|
20425
|
-
} catch (e) {
|
|
20426
|
-
const message = e instanceof Error ? e.message : String(e);
|
|
20427
|
-
const usage = /usage: next-version\.mjs <([^>]+)>/.exec(message);
|
|
20428
|
-
if (usage && !usage[1].split("|").includes("intent")) {
|
|
20429
|
-
throw new Error(
|
|
20430
|
-
`release bump intent: this repo's seeded scripts/next-version.mjs predates the \`intent\` verb (its usage lists <${usage[1]}>), so unset-intent derivation cannot run here. Declare the intent explicitly and rerun \u2014 MMI_BUMP_INTENT=major|minor|patch (or MMI_RELEASE_VERSION=X.Y.Z for an exact target); the train then resolves it in the CLI without shelling this script. The durable fix is refreshing the seeded script from the Hub via seed propagation.`
|
|
20431
|
-
);
|
|
20432
|
-
}
|
|
20433
|
-
throw e;
|
|
20434
|
-
}
|
|
20397
|
+
return "patch";
|
|
20435
20398
|
}
|
|
20436
20399
|
async function runTrainApply(command, deps, options = {}) {
|
|
20437
20400
|
const watch = options.watch ?? false;
|
|
@@ -26611,7 +26574,7 @@ async function portFoldToDevelopment(deps, ctx, deployModel, tag) {
|
|
|
26611
26574
|
"--title",
|
|
26612
26575
|
`chore(release): port the ${tag} version fold to development`,
|
|
26613
26576
|
"--body",
|
|
26614
|
-
`Regenerated version fold for ${tag} (#4410). \`main\` carries the released version; without this development declares the previous
|
|
26577
|
+
`Regenerated version fold for ${tag} (#4410). \`main\` carries the released version; without this development declares the previous version/BOM and the next release starts from stale package pins.
|
|
26615
26578
|
|
|
26616
26579
|
Generated by \`mmi-cli devops hotfix release\` \u2014 no main-parented commit is merged in, so the squash parents stay clean (#4365/#4371).`
|
|
26617
26580
|
]));
|
|
@@ -35949,7 +35912,7 @@ function requiredEstateCommandsPresent(commandNames) {
|
|
|
35949
35912
|
return required.filter((name) => !present.has(name));
|
|
35950
35913
|
}
|
|
35951
35914
|
function onboardPluginGate(deps) {
|
|
35952
|
-
const { registered, declared
|
|
35915
|
+
const { registered, declared } = readKnownMarketplace(deps.readKnown(), MMI_MARKETPLACE_NAME);
|
|
35953
35916
|
if (!registered) {
|
|
35954
35917
|
return { ok: false, detail: `${MMI_MARKETPLACE_NAME} marketplace not registered on this machine` };
|
|
35955
35918
|
}
|
|
@@ -35959,11 +35922,7 @@ function onboardPluginGate(deps) {
|
|
|
35959
35922
|
declared,
|
|
35960
35923
|
settingsDeclared: readSettingsAutoUpdate(deps.readSettings(), MMI_MARKETPLACE_NAME)
|
|
35961
35924
|
}).effective;
|
|
35962
|
-
|
|
35963
|
-
const gaps = [];
|
|
35964
|
-
if (!autoUpdate) gaps.push(`auto-update is off \u2014 turn it on with ${AUTO_UPDATE_TOGGLE_STEPS}`);
|
|
35965
|
-
if (catalog && !catalog.agrees) gaps.push(`the catalog is ${catalog.unpinned ? "unpinned" : `pinned to ${catalog.ref}`} \u2014 ${CATALOG_REF_PIN_STEPS}`);
|
|
35966
|
-
return gaps.length === 0 ? { ok: true, detail: `auto-update on, catalog pinned to ${catalog?.ref}` } : { ok: false, detail: gaps.join("; ") };
|
|
35925
|
+
return autoUpdate ? { ok: false, detail: "background auto-update is ON \u2014 duplicate writer; run `mmi-updater reconcile` outside Claude Code to disable it" } : { ok: true, detail: "background auto-update off; mmi-updater is the single release-gated writer" };
|
|
35967
35926
|
}
|
|
35968
35927
|
async function collectOnboardStatus(opts = {}) {
|
|
35969
35928
|
const cfg = await loadConfig();
|
|
@@ -36161,12 +36120,8 @@ var LOOP_PLAYBOOKS = {
|
|
|
36161
36120
|
]
|
|
36162
36121
|
}
|
|
36163
36122
|
};
|
|
36164
|
-
function
|
|
36123
|
+
function formatOwnDetail(cmd) {
|
|
36165
36124
|
const lines = [];
|
|
36166
|
-
if (cmd.description) {
|
|
36167
|
-
lines.push(cmd.description);
|
|
36168
|
-
lines.push("");
|
|
36169
|
-
}
|
|
36170
36125
|
const args = cmd.arguments;
|
|
36171
36126
|
if (args.length) {
|
|
36172
36127
|
lines.push("Arguments:");
|
|
@@ -36177,10 +36132,10 @@ function formatExplainCommand(cmd, rootName) {
|
|
|
36177
36132
|
}
|
|
36178
36133
|
lines.push("");
|
|
36179
36134
|
}
|
|
36180
|
-
|
|
36135
|
+
const ownOptions = cmd.options.filter((opt) => opt.flags !== "--help" && opt.flags !== "-V, --version");
|
|
36136
|
+
if (ownOptions.length) {
|
|
36181
36137
|
lines.push("Options:");
|
|
36182
|
-
for (const opt of
|
|
36183
|
-
if (opt.flags === "--help" || opt.flags === "-V, --version") continue;
|
|
36138
|
+
for (const opt of ownOptions) {
|
|
36184
36139
|
const tags = [];
|
|
36185
36140
|
if (opt.mandatory) tags.push("required");
|
|
36186
36141
|
if (opt.default !== void 0) tags.push(`default: ${JSON.stringify(opt.default)}`);
|
|
@@ -36205,6 +36160,15 @@ function formatExplainCommand(cmd, rootName) {
|
|
|
36205
36160
|
}
|
|
36206
36161
|
lines.push("");
|
|
36207
36162
|
}
|
|
36163
|
+
return lines;
|
|
36164
|
+
}
|
|
36165
|
+
function formatExplainCommand(cmd, rootName) {
|
|
36166
|
+
const lines = [];
|
|
36167
|
+
if (cmd.description) {
|
|
36168
|
+
lines.push(cmd.description);
|
|
36169
|
+
lines.push("");
|
|
36170
|
+
}
|
|
36171
|
+
lines.push(...formatOwnDetail(cmd));
|
|
36208
36172
|
return lines.join("\n").trimEnd();
|
|
36209
36173
|
}
|
|
36210
36174
|
function formatExplainGroup(cmd, rootName) {
|
|
@@ -36212,9 +36176,10 @@ function formatExplainGroup(cmd, rootName) {
|
|
|
36212
36176
|
const lines = [
|
|
36213
36177
|
`${rootName} ${canonical(cmd)}${cmd.description ? ` \u2014 ${cmd.description}` : ""}`,
|
|
36214
36178
|
`Category: ${cmd.category} \xB7 Discovery: ${cmd.discovery}`,
|
|
36215
|
-
""
|
|
36216
|
-
"Commands:"
|
|
36179
|
+
""
|
|
36217
36180
|
];
|
|
36181
|
+
lines.push(...formatOwnDetail(cmd));
|
|
36182
|
+
lines.push("Commands:");
|
|
36218
36183
|
for (const child2 of cmd.subcommands) {
|
|
36219
36184
|
const args = child2.arguments.map((arg) => {
|
|
36220
36185
|
const name = arg.variadic ? `${arg.name}...` : arg.name;
|
|
@@ -37409,12 +37374,83 @@ var surfaces_default = {
|
|
|
37409
37374
|
token: "claude",
|
|
37410
37375
|
displayName: "Claude Code",
|
|
37411
37376
|
lifecycle: "active",
|
|
37412
|
-
artifactIds: [
|
|
37377
|
+
artifactIds: [
|
|
37378
|
+
"mmi-claude-plugin",
|
|
37379
|
+
"mmi-claude-marketplace",
|
|
37380
|
+
"mmi-skills",
|
|
37381
|
+
"mmi-hook-policy",
|
|
37382
|
+
"mmi-hooks",
|
|
37383
|
+
"mmi-cli"
|
|
37384
|
+
],
|
|
37413
37385
|
plannedArtifactIds: [],
|
|
37414
37386
|
assembly: {
|
|
37415
|
-
mode: "
|
|
37416
|
-
rootPath: "
|
|
37417
|
-
sync: [
|
|
37387
|
+
mode: "package-directory",
|
|
37388
|
+
rootPath: "packages/claude-plugin",
|
|
37389
|
+
sync: [
|
|
37390
|
+
{
|
|
37391
|
+
mode: "directories",
|
|
37392
|
+
sourcePath: "skills",
|
|
37393
|
+
targetPath: "packages/claude-plugin/skills"
|
|
37394
|
+
},
|
|
37395
|
+
{
|
|
37396
|
+
mode: "files",
|
|
37397
|
+
sourcePath: "hooks",
|
|
37398
|
+
targetPath: "packages/claude-plugin/hooks",
|
|
37399
|
+
include: [
|
|
37400
|
+
"hooks.json"
|
|
37401
|
+
]
|
|
37402
|
+
},
|
|
37403
|
+
{
|
|
37404
|
+
mode: "files",
|
|
37405
|
+
sourcePath: "scripts",
|
|
37406
|
+
targetPath: "packages/claude-plugin/scripts",
|
|
37407
|
+
include: [
|
|
37408
|
+
"pretooluse-shell-gates.mjs",
|
|
37409
|
+
"vault-edit-gate.mjs",
|
|
37410
|
+
"secret-redact.mjs",
|
|
37411
|
+
"deny-gate-crash.mjs",
|
|
37412
|
+
"secret-echo-lint.mjs",
|
|
37413
|
+
"env-write-lint.mjs",
|
|
37414
|
+
"command-ladder-gate.mjs",
|
|
37415
|
+
"command-ladder-core.mjs",
|
|
37416
|
+
"validate-hook.mjs",
|
|
37417
|
+
"hook-io.mjs",
|
|
37418
|
+
"hook-trace.mjs",
|
|
37419
|
+
"edit-tool-paths.mjs",
|
|
37420
|
+
"throttle-core.mjs",
|
|
37421
|
+
"hook-policy.mjs",
|
|
37422
|
+
"hook-run.mjs"
|
|
37423
|
+
]
|
|
37424
|
+
},
|
|
37425
|
+
{
|
|
37426
|
+
mode: "files",
|
|
37427
|
+
sourcePath: "bin",
|
|
37428
|
+
targetPath: "packages/claude-plugin/bin",
|
|
37429
|
+
include: [
|
|
37430
|
+
"mmi-hook",
|
|
37431
|
+
"mmi-hook.exe",
|
|
37432
|
+
"mmi-hook-console.cmd",
|
|
37433
|
+
"mmi-cli",
|
|
37434
|
+
"mmi-cli.cmd"
|
|
37435
|
+
]
|
|
37436
|
+
},
|
|
37437
|
+
{
|
|
37438
|
+
mode: "files",
|
|
37439
|
+
sourcePath: ".claude-plugin",
|
|
37440
|
+
targetPath: "packages/claude-plugin/.claude-plugin",
|
|
37441
|
+
include: [
|
|
37442
|
+
"plugin.json"
|
|
37443
|
+
]
|
|
37444
|
+
},
|
|
37445
|
+
{
|
|
37446
|
+
mode: "files",
|
|
37447
|
+
sourcePath: ".pi-plugin",
|
|
37448
|
+
targetPath: "packages/claude-plugin/.pi-plugin",
|
|
37449
|
+
include: [
|
|
37450
|
+
"package.json"
|
|
37451
|
+
]
|
|
37452
|
+
}
|
|
37453
|
+
]
|
|
37418
37454
|
},
|
|
37419
37455
|
install: {
|
|
37420
37456
|
mechanism: "marketplace",
|
|
@@ -37437,9 +37473,18 @@ var surfaces_default = {
|
|
|
37437
37473
|
adapterPath: "hooks/hooks.json",
|
|
37438
37474
|
sourceSurfaceId: "mmi-hook-policy",
|
|
37439
37475
|
gates: [
|
|
37440
|
-
{
|
|
37441
|
-
|
|
37442
|
-
|
|
37476
|
+
{
|
|
37477
|
+
id: "command-ladder",
|
|
37478
|
+
failure: "closed"
|
|
37479
|
+
},
|
|
37480
|
+
{
|
|
37481
|
+
id: "vault-edit",
|
|
37482
|
+
failure: "closed"
|
|
37483
|
+
},
|
|
37484
|
+
{
|
|
37485
|
+
id: "secret-output",
|
|
37486
|
+
failure: "open"
|
|
37487
|
+
}
|
|
37443
37488
|
],
|
|
37444
37489
|
probe: "installed-contract",
|
|
37445
37490
|
execution: "command",
|
|
@@ -37458,7 +37503,9 @@ var surfaces_default = {
|
|
|
37458
37503
|
},
|
|
37459
37504
|
certification: {
|
|
37460
37505
|
hostCommand: "claude",
|
|
37461
|
-
versionArgs: [
|
|
37506
|
+
versionArgs: [
|
|
37507
|
+
"--version"
|
|
37508
|
+
]
|
|
37462
37509
|
},
|
|
37463
37510
|
enforcementCeilings: [
|
|
37464
37511
|
"Final assistant text cannot be rewritten by the hook surface.",
|
|
@@ -37469,12 +37516,73 @@ var surfaces_default = {
|
|
|
37469
37516
|
token: "codex",
|
|
37470
37517
|
displayName: "Codex",
|
|
37471
37518
|
lifecycle: "active",
|
|
37472
|
-
artifactIds: [
|
|
37519
|
+
artifactIds: [
|
|
37520
|
+
"mmi-codex-plugin",
|
|
37521
|
+
"mmi-skills",
|
|
37522
|
+
"mmi-hook-policy",
|
|
37523
|
+
"mmi-cli"
|
|
37524
|
+
],
|
|
37473
37525
|
plannedArtifactIds: [],
|
|
37474
37526
|
assembly: {
|
|
37475
|
-
mode: "
|
|
37476
|
-
rootPath: "
|
|
37477
|
-
sync: [
|
|
37527
|
+
mode: "package-directory",
|
|
37528
|
+
rootPath: "packages/codex-plugin",
|
|
37529
|
+
sync: [
|
|
37530
|
+
{
|
|
37531
|
+
mode: "directories",
|
|
37532
|
+
sourcePath: "skills",
|
|
37533
|
+
targetPath: "packages/codex-plugin/skills"
|
|
37534
|
+
},
|
|
37535
|
+
{
|
|
37536
|
+
mode: "files",
|
|
37537
|
+
sourcePath: "hooks",
|
|
37538
|
+
targetPath: "packages/codex-plugin/hooks",
|
|
37539
|
+
include: [
|
|
37540
|
+
"codex-hooks.json"
|
|
37541
|
+
]
|
|
37542
|
+
},
|
|
37543
|
+
{
|
|
37544
|
+
mode: "files",
|
|
37545
|
+
sourcePath: "scripts",
|
|
37546
|
+
targetPath: "packages/codex-plugin/scripts",
|
|
37547
|
+
include: [
|
|
37548
|
+
"pretooluse-shell-gates.mjs",
|
|
37549
|
+
"vault-edit-gate.mjs",
|
|
37550
|
+
"secret-redact.mjs",
|
|
37551
|
+
"deny-gate-crash.mjs",
|
|
37552
|
+
"secret-echo-lint.mjs",
|
|
37553
|
+
"env-write-lint.mjs",
|
|
37554
|
+
"command-ladder-gate.mjs",
|
|
37555
|
+
"command-ladder-core.mjs",
|
|
37556
|
+
"validate-hook.mjs",
|
|
37557
|
+
"hook-io.mjs",
|
|
37558
|
+
"hook-trace.mjs",
|
|
37559
|
+
"edit-tool-paths.mjs",
|
|
37560
|
+
"throttle-core.mjs",
|
|
37561
|
+
"hook-policy.mjs",
|
|
37562
|
+
"hook-run.mjs"
|
|
37563
|
+
]
|
|
37564
|
+
},
|
|
37565
|
+
{
|
|
37566
|
+
mode: "files",
|
|
37567
|
+
sourcePath: "bin",
|
|
37568
|
+
targetPath: "packages/codex-plugin/bin",
|
|
37569
|
+
include: [
|
|
37570
|
+
"mmi-hook",
|
|
37571
|
+
"mmi-hook.exe",
|
|
37572
|
+
"mmi-hook-console.cmd",
|
|
37573
|
+
"mmi-cli",
|
|
37574
|
+
"mmi-cli.cmd"
|
|
37575
|
+
]
|
|
37576
|
+
},
|
|
37577
|
+
{
|
|
37578
|
+
mode: "files",
|
|
37579
|
+
sourcePath: ".codex-plugin",
|
|
37580
|
+
targetPath: "packages/codex-plugin/.codex-plugin",
|
|
37581
|
+
include: [
|
|
37582
|
+
"plugin.json"
|
|
37583
|
+
]
|
|
37584
|
+
}
|
|
37585
|
+
]
|
|
37478
37586
|
},
|
|
37479
37587
|
install: {
|
|
37480
37588
|
mechanism: "marketplace",
|
|
@@ -37497,9 +37605,18 @@ var surfaces_default = {
|
|
|
37497
37605
|
adapterPath: "hooks/codex-hooks.json",
|
|
37498
37606
|
sourceSurfaceId: "mmi-hook-policy",
|
|
37499
37607
|
gates: [
|
|
37500
|
-
{
|
|
37501
|
-
|
|
37502
|
-
|
|
37608
|
+
{
|
|
37609
|
+
id: "command-ladder",
|
|
37610
|
+
failure: "closed"
|
|
37611
|
+
},
|
|
37612
|
+
{
|
|
37613
|
+
id: "vault-edit",
|
|
37614
|
+
failure: "closed"
|
|
37615
|
+
},
|
|
37616
|
+
{
|
|
37617
|
+
id: "secret-output",
|
|
37618
|
+
failure: "open"
|
|
37619
|
+
}
|
|
37503
37620
|
],
|
|
37504
37621
|
probe: "installed-contract",
|
|
37505
37622
|
execution: "node-bootstrap",
|
|
@@ -37518,7 +37635,9 @@ var surfaces_default = {
|
|
|
37518
37635
|
},
|
|
37519
37636
|
certification: {
|
|
37520
37637
|
hostCommand: "codex",
|
|
37521
|
-
versionArgs: [
|
|
37638
|
+
versionArgs: [
|
|
37639
|
+
"--version"
|
|
37640
|
+
]
|
|
37522
37641
|
},
|
|
37523
37642
|
enforcementCeilings: [
|
|
37524
37643
|
"Post-tool hooks can detect secret output but cannot rewrite it.",
|
|
@@ -37529,12 +37648,65 @@ var surfaces_default = {
|
|
|
37529
37648
|
token: "kimi",
|
|
37530
37649
|
displayName: "Kimi Code CLI",
|
|
37531
37650
|
lifecycle: "active",
|
|
37532
|
-
artifactIds: [
|
|
37651
|
+
artifactIds: [
|
|
37652
|
+
"mmi-kimi-plugin",
|
|
37653
|
+
"mmi-skills",
|
|
37654
|
+
"mmi-hook-policy",
|
|
37655
|
+
"mmi-cli"
|
|
37656
|
+
],
|
|
37533
37657
|
plannedArtifactIds: [],
|
|
37534
37658
|
assembly: {
|
|
37535
|
-
mode: "
|
|
37536
|
-
rootPath: "
|
|
37537
|
-
sync: [
|
|
37659
|
+
mode: "package-directory",
|
|
37660
|
+
rootPath: "packages/kimi-plugin",
|
|
37661
|
+
sync: [
|
|
37662
|
+
{
|
|
37663
|
+
mode: "directories",
|
|
37664
|
+
sourcePath: "skills",
|
|
37665
|
+
targetPath: "packages/kimi-plugin/skills"
|
|
37666
|
+
},
|
|
37667
|
+
{
|
|
37668
|
+
mode: "files",
|
|
37669
|
+
sourcePath: "scripts",
|
|
37670
|
+
targetPath: "packages/kimi-plugin/scripts",
|
|
37671
|
+
include: [
|
|
37672
|
+
"pretooluse-shell-gates.mjs",
|
|
37673
|
+
"vault-edit-gate.mjs",
|
|
37674
|
+
"secret-redact.mjs",
|
|
37675
|
+
"deny-gate-crash.mjs",
|
|
37676
|
+
"secret-echo-lint.mjs",
|
|
37677
|
+
"env-write-lint.mjs",
|
|
37678
|
+
"command-ladder-gate.mjs",
|
|
37679
|
+
"command-ladder-core.mjs",
|
|
37680
|
+
"validate-hook.mjs",
|
|
37681
|
+
"hook-io.mjs",
|
|
37682
|
+
"hook-trace.mjs",
|
|
37683
|
+
"edit-tool-paths.mjs",
|
|
37684
|
+
"throttle-core.mjs",
|
|
37685
|
+
"hook-policy.mjs",
|
|
37686
|
+
"hook-run.mjs"
|
|
37687
|
+
]
|
|
37688
|
+
},
|
|
37689
|
+
{
|
|
37690
|
+
mode: "files",
|
|
37691
|
+
sourcePath: "bin",
|
|
37692
|
+
targetPath: "packages/kimi-plugin/bin",
|
|
37693
|
+
include: [
|
|
37694
|
+
"mmi-hook",
|
|
37695
|
+
"mmi-hook.exe",
|
|
37696
|
+
"mmi-hook-console.cmd",
|
|
37697
|
+
"mmi-cli",
|
|
37698
|
+
"mmi-cli.cmd"
|
|
37699
|
+
]
|
|
37700
|
+
},
|
|
37701
|
+
{
|
|
37702
|
+
mode: "files",
|
|
37703
|
+
sourcePath: ".kimi-plugin",
|
|
37704
|
+
targetPath: "packages/kimi-plugin/.kimi-plugin",
|
|
37705
|
+
include: [
|
|
37706
|
+
"plugin.json"
|
|
37707
|
+
]
|
|
37708
|
+
}
|
|
37709
|
+
]
|
|
37538
37710
|
},
|
|
37539
37711
|
install: {
|
|
37540
37712
|
mechanism: "github-source",
|
|
@@ -37557,9 +37729,18 @@ var surfaces_default = {
|
|
|
37557
37729
|
adapterPath: ".kimi-plugin/plugin.json",
|
|
37558
37730
|
sourceSurfaceId: "mmi-hook-policy",
|
|
37559
37731
|
gates: [
|
|
37560
|
-
{
|
|
37561
|
-
|
|
37562
|
-
|
|
37732
|
+
{
|
|
37733
|
+
id: "command-ladder",
|
|
37734
|
+
failure: "closed"
|
|
37735
|
+
},
|
|
37736
|
+
{
|
|
37737
|
+
id: "vault-edit",
|
|
37738
|
+
failure: "closed"
|
|
37739
|
+
},
|
|
37740
|
+
{
|
|
37741
|
+
id: "secret-output",
|
|
37742
|
+
failure: "open"
|
|
37743
|
+
}
|
|
37563
37744
|
],
|
|
37564
37745
|
probe: "installed-contract",
|
|
37565
37746
|
execution: "inline-manifest",
|
|
@@ -37578,7 +37759,9 @@ var surfaces_default = {
|
|
|
37578
37759
|
},
|
|
37579
37760
|
certification: {
|
|
37580
37761
|
hostCommand: "kimi",
|
|
37581
|
-
versionArgs: [
|
|
37762
|
+
versionArgs: [
|
|
37763
|
+
"--version"
|
|
37764
|
+
]
|
|
37582
37765
|
},
|
|
37583
37766
|
enforcementCeilings: [
|
|
37584
37767
|
"Post-tool hooks are observation-only and cannot rewrite secret output.",
|
|
@@ -37589,12 +37772,73 @@ var surfaces_default = {
|
|
|
37589
37772
|
token: "cursor",
|
|
37590
37773
|
displayName: "Cursor",
|
|
37591
37774
|
lifecycle: "active",
|
|
37592
|
-
artifactIds: [
|
|
37775
|
+
artifactIds: [
|
|
37776
|
+
"mmi-cursor-plugin",
|
|
37777
|
+
"mmi-skills",
|
|
37778
|
+
"mmi-hook-policy",
|
|
37779
|
+
"mmi-cli"
|
|
37780
|
+
],
|
|
37593
37781
|
plannedArtifactIds: [],
|
|
37594
37782
|
assembly: {
|
|
37595
|
-
mode: "
|
|
37596
|
-
rootPath: "
|
|
37597
|
-
sync: [
|
|
37783
|
+
mode: "package-directory",
|
|
37784
|
+
rootPath: "packages/cursor-plugin",
|
|
37785
|
+
sync: [
|
|
37786
|
+
{
|
|
37787
|
+
mode: "directories",
|
|
37788
|
+
sourcePath: "skills",
|
|
37789
|
+
targetPath: "packages/cursor-plugin/skills"
|
|
37790
|
+
},
|
|
37791
|
+
{
|
|
37792
|
+
mode: "files",
|
|
37793
|
+
sourcePath: "hooks",
|
|
37794
|
+
targetPath: "packages/cursor-plugin/hooks",
|
|
37795
|
+
include: [
|
|
37796
|
+
"cursor-hooks.json"
|
|
37797
|
+
]
|
|
37798
|
+
},
|
|
37799
|
+
{
|
|
37800
|
+
mode: "files",
|
|
37801
|
+
sourcePath: "scripts",
|
|
37802
|
+
targetPath: "packages/cursor-plugin/scripts",
|
|
37803
|
+
include: [
|
|
37804
|
+
"pretooluse-shell-gates.mjs",
|
|
37805
|
+
"vault-edit-gate.mjs",
|
|
37806
|
+
"secret-redact.mjs",
|
|
37807
|
+
"deny-gate-crash.mjs",
|
|
37808
|
+
"secret-echo-lint.mjs",
|
|
37809
|
+
"env-write-lint.mjs",
|
|
37810
|
+
"command-ladder-gate.mjs",
|
|
37811
|
+
"command-ladder-core.mjs",
|
|
37812
|
+
"validate-hook.mjs",
|
|
37813
|
+
"hook-io.mjs",
|
|
37814
|
+
"hook-trace.mjs",
|
|
37815
|
+
"edit-tool-paths.mjs",
|
|
37816
|
+
"throttle-core.mjs",
|
|
37817
|
+
"hook-policy.mjs",
|
|
37818
|
+
"hook-run.mjs"
|
|
37819
|
+
]
|
|
37820
|
+
},
|
|
37821
|
+
{
|
|
37822
|
+
mode: "files",
|
|
37823
|
+
sourcePath: "bin",
|
|
37824
|
+
targetPath: "packages/cursor-plugin/bin",
|
|
37825
|
+
include: [
|
|
37826
|
+
"mmi-hook",
|
|
37827
|
+
"mmi-hook.exe",
|
|
37828
|
+
"mmi-hook-console.cmd",
|
|
37829
|
+
"mmi-cli",
|
|
37830
|
+
"mmi-cli.cmd"
|
|
37831
|
+
]
|
|
37832
|
+
},
|
|
37833
|
+
{
|
|
37834
|
+
mode: "files",
|
|
37835
|
+
sourcePath: ".cursor-plugin",
|
|
37836
|
+
targetPath: "packages/cursor-plugin/.cursor-plugin",
|
|
37837
|
+
include: [
|
|
37838
|
+
"plugin.json"
|
|
37839
|
+
]
|
|
37840
|
+
}
|
|
37841
|
+
]
|
|
37598
37842
|
},
|
|
37599
37843
|
install: {
|
|
37600
37844
|
mechanism: "github-source",
|
|
@@ -37617,9 +37861,18 @@ var surfaces_default = {
|
|
|
37617
37861
|
adapterPath: "hooks/cursor-hooks.json",
|
|
37618
37862
|
sourceSurfaceId: "mmi-hook-policy",
|
|
37619
37863
|
gates: [
|
|
37620
|
-
{
|
|
37621
|
-
|
|
37622
|
-
|
|
37864
|
+
{
|
|
37865
|
+
id: "command-ladder",
|
|
37866
|
+
failure: "closed"
|
|
37867
|
+
},
|
|
37868
|
+
{
|
|
37869
|
+
id: "vault-edit",
|
|
37870
|
+
failure: "closed"
|
|
37871
|
+
},
|
|
37872
|
+
{
|
|
37873
|
+
id: "secret-output",
|
|
37874
|
+
failure: "open"
|
|
37875
|
+
}
|
|
37623
37876
|
],
|
|
37624
37877
|
probe: "installed-contract",
|
|
37625
37878
|
execution: "command",
|
|
@@ -37638,7 +37891,9 @@ var surfaces_default = {
|
|
|
37638
37891
|
},
|
|
37639
37892
|
certification: {
|
|
37640
37893
|
hostCommand: "cursor-agent",
|
|
37641
|
-
versionArgs: [
|
|
37894
|
+
versionArgs: [
|
|
37895
|
+
"--version"
|
|
37896
|
+
]
|
|
37642
37897
|
},
|
|
37643
37898
|
enforcementCeilings: [
|
|
37644
37899
|
"Cursor can replace MCP results only; it cannot rewrite ordinary tool output after execution, though MMI still detects secret-shaped output.",
|
|
@@ -37650,7 +37905,12 @@ var surfaces_default = {
|
|
|
37650
37905
|
token: "kilo",
|
|
37651
37906
|
displayName: "Kilo Code",
|
|
37652
37907
|
lifecycle: "active",
|
|
37653
|
-
artifactIds: [
|
|
37908
|
+
artifactIds: [
|
|
37909
|
+
"mmi-kilo-plugin",
|
|
37910
|
+
"mmi-kilo-skills",
|
|
37911
|
+
"mmi-hook-policy",
|
|
37912
|
+
"mmi-cli"
|
|
37913
|
+
],
|
|
37654
37914
|
plannedArtifactIds: [],
|
|
37655
37915
|
assembly: {
|
|
37656
37916
|
mode: "package-directory",
|
|
@@ -37660,7 +37920,9 @@ var surfaces_default = {
|
|
|
37660
37920
|
mode: "directories",
|
|
37661
37921
|
sourcePath: "skills",
|
|
37662
37922
|
targetPath: ".kilo-plugin/skills",
|
|
37663
|
-
excludeNamePrefixes: [
|
|
37923
|
+
excludeNamePrefixes: [
|
|
37924
|
+
"_"
|
|
37925
|
+
]
|
|
37664
37926
|
},
|
|
37665
37927
|
{
|
|
37666
37928
|
mode: "files",
|
|
@@ -37707,9 +37969,18 @@ var surfaces_default = {
|
|
|
37707
37969
|
adapterPath: ".kilo-plugin/server.mjs",
|
|
37708
37970
|
sourceSurfaceId: "mmi-hook-policy",
|
|
37709
37971
|
gates: [
|
|
37710
|
-
{
|
|
37711
|
-
|
|
37712
|
-
|
|
37972
|
+
{
|
|
37973
|
+
id: "command-ladder",
|
|
37974
|
+
failure: "closed"
|
|
37975
|
+
},
|
|
37976
|
+
{
|
|
37977
|
+
id: "vault-edit",
|
|
37978
|
+
failure: "closed"
|
|
37979
|
+
},
|
|
37980
|
+
{
|
|
37981
|
+
id: "secret-output",
|
|
37982
|
+
failure: "open"
|
|
37983
|
+
}
|
|
37713
37984
|
],
|
|
37714
37985
|
probe: "installed-contract",
|
|
37715
37986
|
execution: "in-process",
|
|
@@ -37728,7 +37999,9 @@ var surfaces_default = {
|
|
|
37728
37999
|
},
|
|
37729
38000
|
certification: {
|
|
37730
38001
|
hostCommand: "kilo",
|
|
37731
|
-
versionArgs: [
|
|
38002
|
+
versionArgs: [
|
|
38003
|
+
"--version"
|
|
38004
|
+
]
|
|
37732
38005
|
},
|
|
37733
38006
|
enforcementCeilings: [
|
|
37734
38007
|
"Some read, write, and web-fetch tool outputs are not rewriteable by the host.",
|
|
@@ -37739,7 +38012,11 @@ var surfaces_default = {
|
|
|
37739
38012
|
token: "jervcode",
|
|
37740
38013
|
displayName: "JervCode",
|
|
37741
38014
|
lifecycle: "active",
|
|
37742
|
-
artifactIds: [
|
|
38015
|
+
artifactIds: [
|
|
38016
|
+
"mmi-pi-plugin",
|
|
38017
|
+
"mmi-skills",
|
|
38018
|
+
"mmi-cli"
|
|
38019
|
+
],
|
|
37743
38020
|
plannedArtifactIds: [],
|
|
37744
38021
|
assembly: {
|
|
37745
38022
|
mode: "source-tree",
|
|
@@ -37784,7 +38061,9 @@ var surfaces_default = {
|
|
|
37784
38061
|
},
|
|
37785
38062
|
certification: {
|
|
37786
38063
|
hostCommand: "jervcode",
|
|
37787
|
-
versionArgs: [
|
|
38064
|
+
versionArgs: [
|
|
38065
|
+
"--version"
|
|
38066
|
+
]
|
|
37788
38067
|
},
|
|
37789
38068
|
enforcementCeilings: [
|
|
37790
38069
|
"Pi reads the user package set from ~/.jerv/agent/settings.json at launch: a live seat keeps the packages it started with, the mmi-cli heal refuses to edit the file while PI_SESSION_ID is set, and a new registration reaches JervCode only on the next launch.",
|
|
@@ -37804,16 +38083,24 @@ var surfaces_default = {
|
|
|
37804
38083
|
applicability: "plugin-enabled agent surfaces",
|
|
37805
38084
|
versionCoordinated: true,
|
|
37806
38085
|
versionPaths: [
|
|
37807
|
-
{
|
|
38086
|
+
{
|
|
38087
|
+
path: "cli/package.json",
|
|
38088
|
+
pointer: "version"
|
|
38089
|
+
}
|
|
37808
38090
|
],
|
|
37809
38091
|
artifactIdentity: {
|
|
37810
38092
|
kind: "sha256-tree",
|
|
37811
|
-
paths: [
|
|
38093
|
+
paths: [
|
|
38094
|
+
"skills"
|
|
38095
|
+
]
|
|
37812
38096
|
},
|
|
37813
38097
|
verify: [
|
|
37814
38098
|
{
|
|
37815
38099
|
command: "node",
|
|
37816
|
-
args: [
|
|
38100
|
+
args: [
|
|
38101
|
+
"scripts/check-skill-payload.mjs",
|
|
38102
|
+
"--contract"
|
|
38103
|
+
],
|
|
37817
38104
|
expected: "skill payload check: ok"
|
|
37818
38105
|
}
|
|
37819
38106
|
],
|
|
@@ -37823,18 +38110,33 @@ var surfaces_default = {
|
|
|
37823
38110
|
id: "mmi-claude-plugin",
|
|
37824
38111
|
classification: "packaging",
|
|
37825
38112
|
kind: "plugin",
|
|
37826
|
-
ownerPath: "
|
|
37827
|
-
deliveryPath: "
|
|
37828
|
-
delivery: "
|
|
37829
|
-
applicability: "Claude Code plugin marketplace",
|
|
38113
|
+
ownerPath: "packages/claude-plugin/package.json",
|
|
38114
|
+
deliveryPath: "packages/claude-plugin/package.json",
|
|
38115
|
+
delivery: "npm",
|
|
38116
|
+
applicability: "Claude Code plugin; npm package @mutmutco/claude-plugin carrying the plugin manifest, skills, hooks, gate scripts, and launchers. The thin git catalog stays in .claude-plugin/marketplace.json (#4945).",
|
|
37830
38117
|
versionCoordinated: true,
|
|
37831
38118
|
surfaceToken: "claude",
|
|
37832
38119
|
versionPaths: [
|
|
37833
|
-
{
|
|
38120
|
+
{
|
|
38121
|
+
path: ".claude-plugin/plugin.json",
|
|
38122
|
+
pointer: "version"
|
|
38123
|
+
},
|
|
38124
|
+
{
|
|
38125
|
+
path: "packages/claude-plugin/package.json",
|
|
38126
|
+
pointer: "version"
|
|
38127
|
+
}
|
|
38128
|
+
],
|
|
38129
|
+
additionalPaths: [
|
|
38130
|
+
"packages/claude-plugin/.claude-plugin",
|
|
38131
|
+
"packages/claude-plugin/.pi-plugin",
|
|
38132
|
+
"packages/claude-plugin/skills",
|
|
38133
|
+
"packages/claude-plugin/hooks",
|
|
38134
|
+
"packages/claude-plugin/scripts",
|
|
38135
|
+
"packages/claude-plugin/bin"
|
|
37834
38136
|
],
|
|
37835
38137
|
artifactIdentity: {
|
|
37836
|
-
kind: "
|
|
37837
|
-
|
|
38138
|
+
kind: "npm-pack",
|
|
38139
|
+
packagePath: "packages/claude-plugin"
|
|
37838
38140
|
},
|
|
37839
38141
|
publishVisibility: "public"
|
|
37840
38142
|
},
|
|
@@ -37842,18 +38144,36 @@ var surfaces_default = {
|
|
|
37842
38144
|
id: "mmi-codex-plugin",
|
|
37843
38145
|
classification: "packaging",
|
|
37844
38146
|
kind: "plugin",
|
|
37845
|
-
ownerPath: "
|
|
37846
|
-
deliveryPath: "
|
|
37847
|
-
delivery: "
|
|
37848
|
-
applicability: "Codex plugin
|
|
38147
|
+
ownerPath: "packages/codex-plugin/package.json",
|
|
38148
|
+
deliveryPath: "packages/codex-plugin/package.json",
|
|
38149
|
+
delivery: "npm",
|
|
38150
|
+
applicability: "Codex plugin; npm package @mutmutco/codex-plugin carrying the plugin manifest (hooks via hooks/codex-hooks.json, #3563), skills, gate scripts, and launchers. The thin git catalog stays in .agents/plugins/marketplace.json (#4945).",
|
|
37849
38151
|
versionCoordinated: true,
|
|
37850
38152
|
surfaceToken: "codex",
|
|
37851
38153
|
versionPaths: [
|
|
37852
|
-
{
|
|
38154
|
+
{
|
|
38155
|
+
path: ".codex-plugin/plugin.json",
|
|
38156
|
+
pointer: "version"
|
|
38157
|
+
},
|
|
38158
|
+
{
|
|
38159
|
+
path: "packages/codex-plugin/package.json",
|
|
38160
|
+
pointer: "version"
|
|
38161
|
+
},
|
|
38162
|
+
{
|
|
38163
|
+
path: ".agents/plugins/marketplace.json",
|
|
38164
|
+
pointer: "plugins.0.source.version"
|
|
38165
|
+
}
|
|
38166
|
+
],
|
|
38167
|
+
additionalPaths: [
|
|
38168
|
+
"packages/codex-plugin/.codex-plugin",
|
|
38169
|
+
"packages/codex-plugin/skills",
|
|
38170
|
+
"packages/codex-plugin/hooks",
|
|
38171
|
+
"packages/codex-plugin/scripts",
|
|
38172
|
+
"packages/codex-plugin/bin"
|
|
37853
38173
|
],
|
|
37854
38174
|
artifactIdentity: {
|
|
37855
|
-
kind: "
|
|
37856
|
-
|
|
38175
|
+
kind: "npm-pack",
|
|
38176
|
+
packagePath: "packages/codex-plugin"
|
|
37857
38177
|
},
|
|
37858
38178
|
publishVisibility: "public"
|
|
37859
38179
|
},
|
|
@@ -37861,18 +38181,31 @@ var surfaces_default = {
|
|
|
37861
38181
|
id: "mmi-kimi-plugin",
|
|
37862
38182
|
classification: "packaging",
|
|
37863
38183
|
kind: "plugin",
|
|
37864
|
-
ownerPath: "
|
|
37865
|
-
deliveryPath: "
|
|
37866
|
-
delivery: "
|
|
37867
|
-
applicability: "Kimi Code CLI plugin
|
|
38184
|
+
ownerPath: "packages/kimi-plugin/package.json",
|
|
38185
|
+
deliveryPath: "packages/kimi-plugin/package.json",
|
|
38186
|
+
delivery: "npm",
|
|
38187
|
+
applicability: "Kimi Code CLI plugin; npm package @mutmutco/kimi-plugin carrying the inline-hook plugin manifest, skills, gate scripts, and launchers. Installed into $KIMI_CODE_HOME/plugins/managed/mmi by the Kimi TUI or the fleet updater (#4945).",
|
|
37868
38188
|
versionCoordinated: true,
|
|
37869
38189
|
surfaceToken: "kimi",
|
|
37870
38190
|
versionPaths: [
|
|
37871
|
-
{
|
|
38191
|
+
{
|
|
38192
|
+
path: ".kimi-plugin/plugin.json",
|
|
38193
|
+
pointer: "version"
|
|
38194
|
+
},
|
|
38195
|
+
{
|
|
38196
|
+
path: "packages/kimi-plugin/package.json",
|
|
38197
|
+
pointer: "version"
|
|
38198
|
+
}
|
|
38199
|
+
],
|
|
38200
|
+
additionalPaths: [
|
|
38201
|
+
"packages/kimi-plugin/.kimi-plugin",
|
|
38202
|
+
"packages/kimi-plugin/skills",
|
|
38203
|
+
"packages/kimi-plugin/scripts",
|
|
38204
|
+
"packages/kimi-plugin/bin"
|
|
37872
38205
|
],
|
|
37873
38206
|
artifactIdentity: {
|
|
37874
|
-
kind: "
|
|
37875
|
-
|
|
38207
|
+
kind: "npm-pack",
|
|
38208
|
+
packagePath: "packages/kimi-plugin"
|
|
37876
38209
|
},
|
|
37877
38210
|
publishVisibility: "public"
|
|
37878
38211
|
},
|
|
@@ -37880,18 +38213,32 @@ var surfaces_default = {
|
|
|
37880
38213
|
id: "mmi-cursor-plugin",
|
|
37881
38214
|
classification: "packaging",
|
|
37882
38215
|
kind: "plugin",
|
|
37883
|
-
ownerPath: "
|
|
37884
|
-
deliveryPath: "
|
|
37885
|
-
delivery: "
|
|
37886
|
-
applicability: "Cursor IDE and Cursor Agent CLI;
|
|
38216
|
+
ownerPath: "packages/cursor-plugin/package.json",
|
|
38217
|
+
deliveryPath: "packages/cursor-plugin/package.json",
|
|
38218
|
+
delivery: "npm",
|
|
38219
|
+
applicability: "Cursor IDE and Cursor Agent CLI; npm package @mutmutco/cursor-plugin carrying the plugin manifest (hooks via hooks/cursor-hooks.json), skills, gate scripts, and launchers. The managed checkout at ~/.cursor/plugins/local/mmi is switched to each release by the fleet updater (#4945).",
|
|
37887
38220
|
versionCoordinated: true,
|
|
37888
38221
|
surfaceToken: "cursor",
|
|
37889
38222
|
versionPaths: [
|
|
37890
|
-
{
|
|
38223
|
+
{
|
|
38224
|
+
path: ".cursor-plugin/plugin.json",
|
|
38225
|
+
pointer: "version"
|
|
38226
|
+
},
|
|
38227
|
+
{
|
|
38228
|
+
path: "packages/cursor-plugin/package.json",
|
|
38229
|
+
pointer: "version"
|
|
38230
|
+
}
|
|
38231
|
+
],
|
|
38232
|
+
additionalPaths: [
|
|
38233
|
+
"packages/cursor-plugin/.cursor-plugin",
|
|
38234
|
+
"packages/cursor-plugin/skills",
|
|
38235
|
+
"packages/cursor-plugin/hooks",
|
|
38236
|
+
"packages/cursor-plugin/scripts",
|
|
38237
|
+
"packages/cursor-plugin/bin"
|
|
37891
38238
|
],
|
|
37892
38239
|
artifactIdentity: {
|
|
37893
|
-
kind: "
|
|
37894
|
-
|
|
38240
|
+
kind: "npm-pack",
|
|
38241
|
+
packagePath: "packages/cursor-plugin"
|
|
37895
38242
|
},
|
|
37896
38243
|
publishVisibility: "public"
|
|
37897
38244
|
},
|
|
@@ -37906,7 +38253,10 @@ var surfaces_default = {
|
|
|
37906
38253
|
versionCoordinated: true,
|
|
37907
38254
|
surfaceToken: "kilo",
|
|
37908
38255
|
versionPaths: [
|
|
37909
|
-
{
|
|
38256
|
+
{
|
|
38257
|
+
path: ".kilo-plugin/package.json",
|
|
38258
|
+
pointer: "version"
|
|
38259
|
+
}
|
|
37910
38260
|
],
|
|
37911
38261
|
additionalPaths: [
|
|
37912
38262
|
".kilo-plugin/server.mjs",
|
|
@@ -37929,11 +38279,16 @@ var surfaces_default = {
|
|
|
37929
38279
|
applicability: "Kilo Code (via @mutmutco/kilo-plugin provisioning to ~/.kilo/skills)",
|
|
37930
38280
|
versionCoordinated: true,
|
|
37931
38281
|
versionPaths: [
|
|
37932
|
-
{
|
|
38282
|
+
{
|
|
38283
|
+
path: "cli/package.json",
|
|
38284
|
+
pointer: "version"
|
|
38285
|
+
}
|
|
37933
38286
|
],
|
|
37934
38287
|
artifactIdentity: {
|
|
37935
38288
|
kind: "sha256-tree",
|
|
37936
|
-
paths: [
|
|
38289
|
+
paths: [
|
|
38290
|
+
".kilo-plugin/skills"
|
|
38291
|
+
]
|
|
37937
38292
|
},
|
|
37938
38293
|
surfaceToken: "kilo",
|
|
37939
38294
|
publishVisibility: "public"
|
|
@@ -37949,12 +38304,25 @@ var surfaces_default = {
|
|
|
37949
38304
|
versionCoordinated: true,
|
|
37950
38305
|
surfaceToken: "claude",
|
|
37951
38306
|
versionPaths: [
|
|
37952
|
-
{
|
|
37953
|
-
|
|
38307
|
+
{
|
|
38308
|
+
path: ".claude-plugin/marketplace.json",
|
|
38309
|
+
pointer: "plugins.0.version"
|
|
38310
|
+
},
|
|
38311
|
+
{
|
|
38312
|
+
path: ".claude-plugin/marketplace.json",
|
|
38313
|
+
pointer: "plugins.0.displayName",
|
|
38314
|
+
template: "MMI {version}"
|
|
38315
|
+
},
|
|
38316
|
+
{
|
|
38317
|
+
path: ".claude-plugin/marketplace.json",
|
|
38318
|
+
pointer: "plugins.0.source.version"
|
|
38319
|
+
}
|
|
37954
38320
|
],
|
|
37955
38321
|
artifactIdentity: {
|
|
37956
38322
|
kind: "sha256-tree",
|
|
37957
|
-
paths: [
|
|
38323
|
+
paths: [
|
|
38324
|
+
".claude-plugin/marketplace.json"
|
|
38325
|
+
]
|
|
37958
38326
|
},
|
|
37959
38327
|
publishVisibility: "public"
|
|
37960
38328
|
},
|
|
@@ -37968,15 +38336,44 @@ var surfaces_default = {
|
|
|
37968
38336
|
applicability: "editor-agnostic agent surfaces",
|
|
37969
38337
|
versionCoordinated: true,
|
|
37970
38338
|
versionPaths: [
|
|
37971
|
-
{
|
|
38339
|
+
{
|
|
38340
|
+
path: "cli/package.json",
|
|
38341
|
+
pointer: "version"
|
|
38342
|
+
}
|
|
38343
|
+
],
|
|
38344
|
+
additionalPaths: [
|
|
38345
|
+
"cli/dist"
|
|
37972
38346
|
],
|
|
37973
|
-
additionalPaths: ["cli/dist"],
|
|
37974
38347
|
artifactIdentity: {
|
|
37975
38348
|
kind: "npm-pack",
|
|
37976
38349
|
packagePath: "cli"
|
|
37977
38350
|
},
|
|
37978
38351
|
publishVisibility: "public"
|
|
37979
38352
|
},
|
|
38353
|
+
{
|
|
38354
|
+
id: "mmi-updater",
|
|
38355
|
+
classification: "capability",
|
|
38356
|
+
kind: "cli",
|
|
38357
|
+
ownerPath: "updater/package.json",
|
|
38358
|
+
deliveryPath: "updater/package.json",
|
|
38359
|
+
delivery: "npm",
|
|
38360
|
+
applicability: "editor-agnostic agent surfaces",
|
|
38361
|
+
versionCoordinated: true,
|
|
38362
|
+
versionPaths: [
|
|
38363
|
+
{
|
|
38364
|
+
path: "updater/package.json",
|
|
38365
|
+
pointer: "version"
|
|
38366
|
+
}
|
|
38367
|
+
],
|
|
38368
|
+
additionalPaths: [
|
|
38369
|
+
"updater/dist"
|
|
38370
|
+
],
|
|
38371
|
+
artifactIdentity: {
|
|
38372
|
+
kind: "npm-pack",
|
|
38373
|
+
packagePath: "updater"
|
|
38374
|
+
},
|
|
38375
|
+
publishVisibility: "public"
|
|
38376
|
+
},
|
|
37980
38377
|
{
|
|
37981
38378
|
id: "mmi-cli-lock",
|
|
37982
38379
|
classification: "packaging",
|
|
@@ -37987,12 +38384,20 @@ var surfaces_default = {
|
|
|
37987
38384
|
applicability: "editor-agnostic agent surfaces",
|
|
37988
38385
|
versionCoordinated: true,
|
|
37989
38386
|
versionPaths: [
|
|
37990
|
-
{
|
|
37991
|
-
|
|
38387
|
+
{
|
|
38388
|
+
path: "cli/package-lock.json",
|
|
38389
|
+
pointer: "version"
|
|
38390
|
+
},
|
|
38391
|
+
{
|
|
38392
|
+
path: "cli/package-lock.json",
|
|
38393
|
+
pointer: "packages.$root.version"
|
|
38394
|
+
}
|
|
37992
38395
|
],
|
|
37993
38396
|
artifactIdentity: {
|
|
37994
38397
|
kind: "sha256-tree",
|
|
37995
|
-
paths: [
|
|
38398
|
+
paths: [
|
|
38399
|
+
"cli/package-lock.json"
|
|
38400
|
+
]
|
|
37996
38401
|
},
|
|
37997
38402
|
publishVisibility: "public"
|
|
37998
38403
|
},
|
|
@@ -38006,27 +38411,52 @@ var surfaces_default = {
|
|
|
38006
38411
|
applicability: "editor-agnostic agent surfaces",
|
|
38007
38412
|
versionCoordinated: true,
|
|
38008
38413
|
versionPaths: [
|
|
38009
|
-
{
|
|
38414
|
+
{
|
|
38415
|
+
path: "cli/package.json",
|
|
38416
|
+
pointer: "version"
|
|
38417
|
+
}
|
|
38418
|
+
],
|
|
38419
|
+
additionalPaths: [
|
|
38420
|
+
"cli/dist/main.cjs"
|
|
38010
38421
|
],
|
|
38011
|
-
additionalPaths: ["cli/dist/main.cjs"],
|
|
38012
38422
|
prepare: [
|
|
38013
38423
|
{
|
|
38014
38424
|
command: "npm",
|
|
38015
|
-
args: [
|
|
38016
|
-
|
|
38017
|
-
|
|
38425
|
+
args: [
|
|
38426
|
+
"--prefix",
|
|
38427
|
+
"cli",
|
|
38428
|
+
"run",
|
|
38429
|
+
"build"
|
|
38430
|
+
],
|
|
38431
|
+
inputs: [
|
|
38432
|
+
"cli/src",
|
|
38433
|
+
"cli/build.mjs",
|
|
38434
|
+
"cli/package.json",
|
|
38435
|
+
"cli/README.md",
|
|
38436
|
+
"cli/tsconfig.json",
|
|
38437
|
+
"infra/rollout-plan.json"
|
|
38438
|
+
],
|
|
38439
|
+
outputs: [
|
|
38440
|
+
"cli/dist/index.cjs",
|
|
38441
|
+
"cli/dist/main.cjs"
|
|
38442
|
+
]
|
|
38018
38443
|
}
|
|
38019
38444
|
],
|
|
38020
38445
|
verify: [
|
|
38021
38446
|
{
|
|
38022
38447
|
command: "node",
|
|
38023
|
-
args: [
|
|
38448
|
+
args: [
|
|
38449
|
+
"cli/dist/index.cjs",
|
|
38450
|
+
"--version"
|
|
38451
|
+
],
|
|
38024
38452
|
expected: "{version}"
|
|
38025
38453
|
}
|
|
38026
38454
|
],
|
|
38027
38455
|
artifactIdentity: {
|
|
38028
38456
|
kind: "sha256-tree",
|
|
38029
|
-
paths: [
|
|
38457
|
+
paths: [
|
|
38458
|
+
"cli/dist"
|
|
38459
|
+
]
|
|
38030
38460
|
},
|
|
38031
38461
|
publishVisibility: "public"
|
|
38032
38462
|
},
|
|
@@ -38040,7 +38470,10 @@ var surfaces_default = {
|
|
|
38040
38470
|
applicability: "all five active hook-capable agent surfaces",
|
|
38041
38471
|
versionCoordinated: true,
|
|
38042
38472
|
versionPaths: [
|
|
38043
|
-
{
|
|
38473
|
+
{
|
|
38474
|
+
path: "cli/package.json",
|
|
38475
|
+
pointer: "version"
|
|
38476
|
+
}
|
|
38044
38477
|
],
|
|
38045
38478
|
artifactIdentity: {
|
|
38046
38479
|
kind: "sha256-tree",
|
|
@@ -38064,7 +38497,9 @@ var surfaces_default = {
|
|
|
38064
38497
|
verify: [
|
|
38065
38498
|
{
|
|
38066
38499
|
command: "node",
|
|
38067
|
-
args: [
|
|
38500
|
+
args: [
|
|
38501
|
+
"scripts/check-hook-contract.mjs"
|
|
38502
|
+
],
|
|
38068
38503
|
expected: "hook contract: 5 active adapters proven, 12 repositories covered"
|
|
38069
38504
|
}
|
|
38070
38505
|
],
|
|
@@ -38080,11 +38515,17 @@ var surfaces_default = {
|
|
|
38080
38515
|
applicability: "Claude hook-enabled agents",
|
|
38081
38516
|
versionCoordinated: true,
|
|
38082
38517
|
versionPaths: [
|
|
38083
|
-
{
|
|
38518
|
+
{
|
|
38519
|
+
path: "cli/package.json",
|
|
38520
|
+
pointer: "version"
|
|
38521
|
+
}
|
|
38084
38522
|
],
|
|
38085
38523
|
artifactIdentity: {
|
|
38086
38524
|
kind: "sha256-tree",
|
|
38087
|
-
paths: [
|
|
38525
|
+
paths: [
|
|
38526
|
+
"hooks",
|
|
38527
|
+
"scripts"
|
|
38528
|
+
]
|
|
38088
38529
|
},
|
|
38089
38530
|
surfaceToken: "claude",
|
|
38090
38531
|
publishVisibility: "public"
|
|
@@ -38099,7 +38540,10 @@ var surfaces_default = {
|
|
|
38099
38540
|
applicability: "org automation and authorization",
|
|
38100
38541
|
versionCoordinated: true,
|
|
38101
38542
|
versionPaths: [
|
|
38102
|
-
{
|
|
38543
|
+
{
|
|
38544
|
+
path: "infra/package.json",
|
|
38545
|
+
pointer: "version"
|
|
38546
|
+
}
|
|
38103
38547
|
],
|
|
38104
38548
|
publishVisibility: "n/a",
|
|
38105
38549
|
deployedVersionSource: "http-header:x-hub-version"
|
|
@@ -38114,7 +38558,10 @@ var surfaces_default = {
|
|
|
38114
38558
|
applicability: "master DM notifications only; chatops out by default",
|
|
38115
38559
|
versionCoordinated: true,
|
|
38116
38560
|
versionPaths: [
|
|
38117
|
-
{
|
|
38561
|
+
{
|
|
38562
|
+
path: "cli/package.json",
|
|
38563
|
+
pointer: "version"
|
|
38564
|
+
}
|
|
38118
38565
|
],
|
|
38119
38566
|
publishVisibility: "n/a"
|
|
38120
38567
|
},
|
|
@@ -38129,16 +38576,24 @@ var surfaces_default = {
|
|
|
38129
38576
|
versionCoordinated: true,
|
|
38130
38577
|
surfaceToken: "jervcode",
|
|
38131
38578
|
versionPaths: [
|
|
38132
|
-
{
|
|
38579
|
+
{
|
|
38580
|
+
path: ".pi-plugin/package.json",
|
|
38581
|
+
pointer: "version"
|
|
38582
|
+
}
|
|
38133
38583
|
],
|
|
38134
38584
|
artifactIdentity: {
|
|
38135
38585
|
kind: "sha256-tree",
|
|
38136
|
-
paths: [
|
|
38586
|
+
paths: [
|
|
38587
|
+
".pi-plugin/package.json",
|
|
38588
|
+
"skills"
|
|
38589
|
+
]
|
|
38137
38590
|
},
|
|
38138
38591
|
verify: [
|
|
38139
38592
|
{
|
|
38140
38593
|
command: "node",
|
|
38141
|
-
args: [
|
|
38594
|
+
args: [
|
|
38595
|
+
"scripts/check-jervcode-consumer.mjs"
|
|
38596
|
+
],
|
|
38142
38597
|
expected: "JervCode consumer fitness: clean ({version})"
|
|
38143
38598
|
}
|
|
38144
38599
|
],
|
|
@@ -38708,6 +39163,9 @@ async function runDoctorClean(opts, io, deps) {
|
|
|
38708
39163
|
const restartAction = registryEvidence ? surfaceRestartAction(registryEvidence.descriptor) : "restart the agent host";
|
|
38709
39164
|
const checks = [];
|
|
38710
39165
|
let restartPending = false;
|
|
39166
|
+
const changedPluginHosts = /* @__PURE__ */ new Set();
|
|
39167
|
+
const activeHostToken = registryEvidence?.descriptor.token;
|
|
39168
|
+
const extraRestartLines = () => [...changedPluginHosts].filter((host) => host !== activeHostToken).sort().map((host) => restartLineForHost(host));
|
|
38711
39169
|
const streamed = /* @__PURE__ */ new Set();
|
|
38712
39170
|
const streamedLines = /* @__PURE__ */ new Set();
|
|
38713
39171
|
const alreadyShown = (c) => streamed.has(c) || streamedLines.has(renderCheckLine(c));
|
|
@@ -38774,6 +39232,7 @@ async function runDoctorClean(opts, io, deps) {
|
|
|
38774
39232
|
if (!heal.skipped) restartPending = true;
|
|
38775
39233
|
if (heal.ok && !heal.skipped) {
|
|
38776
39234
|
markHealChanged();
|
|
39235
|
+
if (activeHostToken) changedPluginHosts.add(activeHostToken);
|
|
38777
39236
|
spentRows.set("plugin-chain", row);
|
|
38778
39237
|
}
|
|
38779
39238
|
} else if (diagnosis.state !== "skipped") {
|
|
@@ -38829,7 +39288,25 @@ async function runDoctorClean(opts, io, deps) {
|
|
|
38829
39288
|
const intent = capabilityGap && cliReport.ok ? `mmi-cli \u2014 self-updating to ${target} via npm install -g (missing commands: ${missing.join(", ")})` : `mmi-cli \u2014 self-updating ${cliReport.currentVersion} \u2192 ${target} via npm install -g`;
|
|
38830
39289
|
healIntent(intent);
|
|
38831
39290
|
traceHeal("cli-self-update");
|
|
38832
|
-
|
|
39291
|
+
let lastNpmLineAt = Date.now();
|
|
39292
|
+
const startedAt = lastNpmLineAt;
|
|
39293
|
+
const stepWithLiveness = (message, stepOpts) => {
|
|
39294
|
+
lastNpmLineAt = Date.now();
|
|
39295
|
+
healStep(message, stepOpts);
|
|
39296
|
+
};
|
|
39297
|
+
const heartbeat = opts.json ? void 0 : setInterval(() => {
|
|
39298
|
+
const quietS = Math.floor((Date.now() - lastNpmLineAt) / 1e3);
|
|
39299
|
+
if (quietS >= 30) {
|
|
39300
|
+
io.log(`${VERBOSE_INDENT}still running \u2014 npm quiet for ${quietS}s (${Math.floor((Date.now() - startedAt) / 1e3)}s total)`);
|
|
39301
|
+
}
|
|
39302
|
+
}, 3e4);
|
|
39303
|
+
heartbeat?.unref?.();
|
|
39304
|
+
let heal;
|
|
39305
|
+
try {
|
|
39306
|
+
heal = await deps.updateCli(target, stepWithLiveness);
|
|
39307
|
+
} finally {
|
|
39308
|
+
if (heartbeat) clearInterval(heartbeat);
|
|
39309
|
+
}
|
|
38833
39310
|
if (heal.skipped) spentHeals.delete("cli-self-update");
|
|
38834
39311
|
if (heal.ok && !heal.skipped) markHealChanged();
|
|
38835
39312
|
const healEvidence = [
|
|
@@ -39036,6 +39513,9 @@ async function runDoctorClean(opts, io, deps) {
|
|
|
39036
39513
|
if (changed.length > 0) {
|
|
39037
39514
|
markHealChanged();
|
|
39038
39515
|
restartPending = true;
|
|
39516
|
+
for (const note of changed) {
|
|
39517
|
+
if (note.host !== "marketplace") changedPluginHosts.add(note.host);
|
|
39518
|
+
}
|
|
39039
39519
|
}
|
|
39040
39520
|
const passRow = {
|
|
39041
39521
|
id: "update-pass",
|
|
@@ -39472,6 +39952,8 @@ async function runDoctorClean(opts, io, deps) {
|
|
|
39472
39952
|
checks: payload,
|
|
39473
39953
|
restartPending,
|
|
39474
39954
|
...restartPending ? { restartAction } : {},
|
|
39955
|
+
// #4940: stable host tokens whose plugin changed this run — additive beside restartAction.
|
|
39956
|
+
...changedPluginHosts.size > 0 ? { restartHosts: [...changedPluginHosts].sort() } : {},
|
|
39475
39957
|
exitCode
|
|
39476
39958
|
}, null, 2));
|
|
39477
39959
|
return exitCode;
|
|
@@ -39482,7 +39964,10 @@ async function runDoctorClean(opts, io, deps) {
|
|
|
39482
39964
|
io.log(renderReport([c], { restartPending: false }));
|
|
39483
39965
|
if (opts.verbose) for (const evidence of c.verbose ?? []) io.log(`${VERBOSE_INDENT}${evidence}`);
|
|
39484
39966
|
}
|
|
39485
|
-
if (restartPending)
|
|
39967
|
+
if (restartPending) {
|
|
39968
|
+
io.log(`\u21BB ${restartAction.charAt(0).toUpperCase()}${restartAction.slice(1)} to finish.`);
|
|
39969
|
+
for (const line of extraRestartLines()) io.log(line);
|
|
39970
|
+
}
|
|
39486
39971
|
return 0;
|
|
39487
39972
|
}
|
|
39488
39973
|
const rest = checks.filter((c) => !alreadyShown(c));
|
|
@@ -39493,7 +39978,10 @@ async function runDoctorClean(opts, io, deps) {
|
|
|
39493
39978
|
if (opts.verbose) for (const evidence of check.verbose ?? []) lines.push(`${VERBOSE_INDENT}${evidence}`);
|
|
39494
39979
|
}
|
|
39495
39980
|
lines.push(renderTally(checks));
|
|
39496
|
-
if (restartPending)
|
|
39981
|
+
if (restartPending) {
|
|
39982
|
+
lines.push(`\u21BB ${restartAction.charAt(0).toUpperCase()}${restartAction.slice(1)} to finish.`);
|
|
39983
|
+
lines.push(...extraRestartLines());
|
|
39984
|
+
}
|
|
39497
39985
|
io.log(lines.join("\n"));
|
|
39498
39986
|
return exitCode;
|
|
39499
39987
|
}
|
|
@@ -43735,6 +44223,23 @@ installProcessBackstop();
|
|
|
43735
44223
|
consolidateCommandNamespaces(program2);
|
|
43736
44224
|
registerOrgHealthQuery(program2);
|
|
43737
44225
|
applyCommandTaxonomy(program2);
|
|
44226
|
+
function registeredPathPrefix(path2) {
|
|
44227
|
+
const tokens2 = path2.split(" ");
|
|
44228
|
+
let node = program2;
|
|
44229
|
+
let depth = 0;
|
|
44230
|
+
while (depth < tokens2.length) {
|
|
44231
|
+
const next = node.commands.find((c) => c.name() === tokens2[depth]);
|
|
44232
|
+
if (!next) break;
|
|
44233
|
+
node = next;
|
|
44234
|
+
depth += 1;
|
|
44235
|
+
}
|
|
44236
|
+
return tokens2.slice(0, Math.max(depth, 1)).join(" ");
|
|
44237
|
+
}
|
|
44238
|
+
function recoveryPointerFor(path2) {
|
|
44239
|
+
const runnable = registeredPathPrefix(path2);
|
|
44240
|
+
if (runnable === path2) return `run: mmi-cli ${canonicalPathFor(runnable)} \u2026`;
|
|
44241
|
+
return `'${path2}' is not a registered command \u2014 run \`mmi-cli ${canonicalPathFor(runnable)} --help\` for what lives under it`;
|
|
44242
|
+
}
|
|
43738
44243
|
function resolveHouseShim(argv) {
|
|
43739
44244
|
const houseToken = argv[2];
|
|
43740
44245
|
if (!houseToken) return;
|
|
@@ -43744,7 +44249,7 @@ function resolveHouseShim(argv) {
|
|
|
43744
44249
|
const flatHouse = houseForPath(flatPath);
|
|
43745
44250
|
if (!flatHouse || flatHouse === "core") return;
|
|
43746
44251
|
process.stderr.write(
|
|
43747
|
-
`mmi-cli: the flat '${flatPath}' alias was removed in ${COMPAT_SHIM_DEATH_WAVE} (#4316) \u2014
|
|
44252
|
+
`mmi-cli: the flat '${flatPath}' alias was removed in ${COMPAT_SHIM_DEATH_WAVE} (#4316) \u2014 ${recoveryPointerFor(flatPath)}
|
|
43748
44253
|
`
|
|
43749
44254
|
);
|
|
43750
44255
|
hardExit(2);
|
|
@@ -43768,7 +44273,7 @@ function resolveHouseShim(argv) {
|
|
|
43768
44273
|
}
|
|
43769
44274
|
if (actual) {
|
|
43770
44275
|
process.stderr.write(
|
|
43771
|
-
`mmi-cli ${houseToken}: '${lookupPath}' lives in house '${actual}' \u2014
|
|
44276
|
+
`mmi-cli ${houseToken}: '${lookupPath}' lives in house '${actual}' \u2014 ${recoveryPointerFor(lookupPath)}
|
|
43772
44277
|
`
|
|
43773
44278
|
);
|
|
43774
44279
|
} else {
|
package/package.json
CHANGED