@mutmutco/cli 3.130.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 +635 -139
- 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
|
{
|
|
@@ -26597,7 +26574,7 @@ async function portFoldToDevelopment(deps, ctx, deployModel, tag) {
|
|
|
26597
26574
|
"--title",
|
|
26598
26575
|
`chore(release): port the ${tag} version fold to development`,
|
|
26599
26576
|
"--body",
|
|
26600
|
-
`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.
|
|
26601
26578
|
|
|
26602
26579
|
Generated by \`mmi-cli devops hotfix release\` \u2014 no main-parented commit is merged in, so the squash parents stay clean (#4365/#4371).`
|
|
26603
26580
|
]));
|
|
@@ -35935,7 +35912,7 @@ function requiredEstateCommandsPresent(commandNames) {
|
|
|
35935
35912
|
return required.filter((name) => !present.has(name));
|
|
35936
35913
|
}
|
|
35937
35914
|
function onboardPluginGate(deps) {
|
|
35938
|
-
const { registered, declared
|
|
35915
|
+
const { registered, declared } = readKnownMarketplace(deps.readKnown(), MMI_MARKETPLACE_NAME);
|
|
35939
35916
|
if (!registered) {
|
|
35940
35917
|
return { ok: false, detail: `${MMI_MARKETPLACE_NAME} marketplace not registered on this machine` };
|
|
35941
35918
|
}
|
|
@@ -35945,11 +35922,7 @@ function onboardPluginGate(deps) {
|
|
|
35945
35922
|
declared,
|
|
35946
35923
|
settingsDeclared: readSettingsAutoUpdate(deps.readSettings(), MMI_MARKETPLACE_NAME)
|
|
35947
35924
|
}).effective;
|
|
35948
|
-
|
|
35949
|
-
const gaps = [];
|
|
35950
|
-
if (!autoUpdate) gaps.push(`auto-update is off \u2014 turn it on with ${AUTO_UPDATE_TOGGLE_STEPS}`);
|
|
35951
|
-
if (catalog && !catalog.agrees) gaps.push(`the catalog is ${catalog.unpinned ? "unpinned" : `pinned to ${catalog.ref}`} \u2014 ${CATALOG_REF_PIN_STEPS}`);
|
|
35952
|
-
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" };
|
|
35953
35926
|
}
|
|
35954
35927
|
async function collectOnboardStatus(opts = {}) {
|
|
35955
35928
|
const cfg = await loadConfig();
|
|
@@ -37401,12 +37374,83 @@ var surfaces_default = {
|
|
|
37401
37374
|
token: "claude",
|
|
37402
37375
|
displayName: "Claude Code",
|
|
37403
37376
|
lifecycle: "active",
|
|
37404
|
-
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
|
+
],
|
|
37405
37385
|
plannedArtifactIds: [],
|
|
37406
37386
|
assembly: {
|
|
37407
|
-
mode: "
|
|
37408
|
-
rootPath: "
|
|
37409
|
-
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
|
+
]
|
|
37410
37454
|
},
|
|
37411
37455
|
install: {
|
|
37412
37456
|
mechanism: "marketplace",
|
|
@@ -37429,9 +37473,18 @@ var surfaces_default = {
|
|
|
37429
37473
|
adapterPath: "hooks/hooks.json",
|
|
37430
37474
|
sourceSurfaceId: "mmi-hook-policy",
|
|
37431
37475
|
gates: [
|
|
37432
|
-
{
|
|
37433
|
-
|
|
37434
|
-
|
|
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
|
+
}
|
|
37435
37488
|
],
|
|
37436
37489
|
probe: "installed-contract",
|
|
37437
37490
|
execution: "command",
|
|
@@ -37450,7 +37503,9 @@ var surfaces_default = {
|
|
|
37450
37503
|
},
|
|
37451
37504
|
certification: {
|
|
37452
37505
|
hostCommand: "claude",
|
|
37453
|
-
versionArgs: [
|
|
37506
|
+
versionArgs: [
|
|
37507
|
+
"--version"
|
|
37508
|
+
]
|
|
37454
37509
|
},
|
|
37455
37510
|
enforcementCeilings: [
|
|
37456
37511
|
"Final assistant text cannot be rewritten by the hook surface.",
|
|
@@ -37461,12 +37516,73 @@ var surfaces_default = {
|
|
|
37461
37516
|
token: "codex",
|
|
37462
37517
|
displayName: "Codex",
|
|
37463
37518
|
lifecycle: "active",
|
|
37464
|
-
artifactIds: [
|
|
37519
|
+
artifactIds: [
|
|
37520
|
+
"mmi-codex-plugin",
|
|
37521
|
+
"mmi-skills",
|
|
37522
|
+
"mmi-hook-policy",
|
|
37523
|
+
"mmi-cli"
|
|
37524
|
+
],
|
|
37465
37525
|
plannedArtifactIds: [],
|
|
37466
37526
|
assembly: {
|
|
37467
|
-
mode: "
|
|
37468
|
-
rootPath: "
|
|
37469
|
-
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
|
+
]
|
|
37470
37586
|
},
|
|
37471
37587
|
install: {
|
|
37472
37588
|
mechanism: "marketplace",
|
|
@@ -37489,9 +37605,18 @@ var surfaces_default = {
|
|
|
37489
37605
|
adapterPath: "hooks/codex-hooks.json",
|
|
37490
37606
|
sourceSurfaceId: "mmi-hook-policy",
|
|
37491
37607
|
gates: [
|
|
37492
|
-
{
|
|
37493
|
-
|
|
37494
|
-
|
|
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
|
+
}
|
|
37495
37620
|
],
|
|
37496
37621
|
probe: "installed-contract",
|
|
37497
37622
|
execution: "node-bootstrap",
|
|
@@ -37510,7 +37635,9 @@ var surfaces_default = {
|
|
|
37510
37635
|
},
|
|
37511
37636
|
certification: {
|
|
37512
37637
|
hostCommand: "codex",
|
|
37513
|
-
versionArgs: [
|
|
37638
|
+
versionArgs: [
|
|
37639
|
+
"--version"
|
|
37640
|
+
]
|
|
37514
37641
|
},
|
|
37515
37642
|
enforcementCeilings: [
|
|
37516
37643
|
"Post-tool hooks can detect secret output but cannot rewrite it.",
|
|
@@ -37521,12 +37648,65 @@ var surfaces_default = {
|
|
|
37521
37648
|
token: "kimi",
|
|
37522
37649
|
displayName: "Kimi Code CLI",
|
|
37523
37650
|
lifecycle: "active",
|
|
37524
|
-
artifactIds: [
|
|
37651
|
+
artifactIds: [
|
|
37652
|
+
"mmi-kimi-plugin",
|
|
37653
|
+
"mmi-skills",
|
|
37654
|
+
"mmi-hook-policy",
|
|
37655
|
+
"mmi-cli"
|
|
37656
|
+
],
|
|
37525
37657
|
plannedArtifactIds: [],
|
|
37526
37658
|
assembly: {
|
|
37527
|
-
mode: "
|
|
37528
|
-
rootPath: "
|
|
37529
|
-
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
|
+
]
|
|
37530
37710
|
},
|
|
37531
37711
|
install: {
|
|
37532
37712
|
mechanism: "github-source",
|
|
@@ -37549,9 +37729,18 @@ var surfaces_default = {
|
|
|
37549
37729
|
adapterPath: ".kimi-plugin/plugin.json",
|
|
37550
37730
|
sourceSurfaceId: "mmi-hook-policy",
|
|
37551
37731
|
gates: [
|
|
37552
|
-
{
|
|
37553
|
-
|
|
37554
|
-
|
|
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
|
+
}
|
|
37555
37744
|
],
|
|
37556
37745
|
probe: "installed-contract",
|
|
37557
37746
|
execution: "inline-manifest",
|
|
@@ -37570,7 +37759,9 @@ var surfaces_default = {
|
|
|
37570
37759
|
},
|
|
37571
37760
|
certification: {
|
|
37572
37761
|
hostCommand: "kimi",
|
|
37573
|
-
versionArgs: [
|
|
37762
|
+
versionArgs: [
|
|
37763
|
+
"--version"
|
|
37764
|
+
]
|
|
37574
37765
|
},
|
|
37575
37766
|
enforcementCeilings: [
|
|
37576
37767
|
"Post-tool hooks are observation-only and cannot rewrite secret output.",
|
|
@@ -37581,12 +37772,73 @@ var surfaces_default = {
|
|
|
37581
37772
|
token: "cursor",
|
|
37582
37773
|
displayName: "Cursor",
|
|
37583
37774
|
lifecycle: "active",
|
|
37584
|
-
artifactIds: [
|
|
37775
|
+
artifactIds: [
|
|
37776
|
+
"mmi-cursor-plugin",
|
|
37777
|
+
"mmi-skills",
|
|
37778
|
+
"mmi-hook-policy",
|
|
37779
|
+
"mmi-cli"
|
|
37780
|
+
],
|
|
37585
37781
|
plannedArtifactIds: [],
|
|
37586
37782
|
assembly: {
|
|
37587
|
-
mode: "
|
|
37588
|
-
rootPath: "
|
|
37589
|
-
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
|
+
]
|
|
37590
37842
|
},
|
|
37591
37843
|
install: {
|
|
37592
37844
|
mechanism: "github-source",
|
|
@@ -37609,9 +37861,18 @@ var surfaces_default = {
|
|
|
37609
37861
|
adapterPath: "hooks/cursor-hooks.json",
|
|
37610
37862
|
sourceSurfaceId: "mmi-hook-policy",
|
|
37611
37863
|
gates: [
|
|
37612
|
-
{
|
|
37613
|
-
|
|
37614
|
-
|
|
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
|
+
}
|
|
37615
37876
|
],
|
|
37616
37877
|
probe: "installed-contract",
|
|
37617
37878
|
execution: "command",
|
|
@@ -37630,7 +37891,9 @@ var surfaces_default = {
|
|
|
37630
37891
|
},
|
|
37631
37892
|
certification: {
|
|
37632
37893
|
hostCommand: "cursor-agent",
|
|
37633
|
-
versionArgs: [
|
|
37894
|
+
versionArgs: [
|
|
37895
|
+
"--version"
|
|
37896
|
+
]
|
|
37634
37897
|
},
|
|
37635
37898
|
enforcementCeilings: [
|
|
37636
37899
|
"Cursor can replace MCP results only; it cannot rewrite ordinary tool output after execution, though MMI still detects secret-shaped output.",
|
|
@@ -37642,7 +37905,12 @@ var surfaces_default = {
|
|
|
37642
37905
|
token: "kilo",
|
|
37643
37906
|
displayName: "Kilo Code",
|
|
37644
37907
|
lifecycle: "active",
|
|
37645
|
-
artifactIds: [
|
|
37908
|
+
artifactIds: [
|
|
37909
|
+
"mmi-kilo-plugin",
|
|
37910
|
+
"mmi-kilo-skills",
|
|
37911
|
+
"mmi-hook-policy",
|
|
37912
|
+
"mmi-cli"
|
|
37913
|
+
],
|
|
37646
37914
|
plannedArtifactIds: [],
|
|
37647
37915
|
assembly: {
|
|
37648
37916
|
mode: "package-directory",
|
|
@@ -37652,7 +37920,9 @@ var surfaces_default = {
|
|
|
37652
37920
|
mode: "directories",
|
|
37653
37921
|
sourcePath: "skills",
|
|
37654
37922
|
targetPath: ".kilo-plugin/skills",
|
|
37655
|
-
excludeNamePrefixes: [
|
|
37923
|
+
excludeNamePrefixes: [
|
|
37924
|
+
"_"
|
|
37925
|
+
]
|
|
37656
37926
|
},
|
|
37657
37927
|
{
|
|
37658
37928
|
mode: "files",
|
|
@@ -37699,9 +37969,18 @@ var surfaces_default = {
|
|
|
37699
37969
|
adapterPath: ".kilo-plugin/server.mjs",
|
|
37700
37970
|
sourceSurfaceId: "mmi-hook-policy",
|
|
37701
37971
|
gates: [
|
|
37702
|
-
{
|
|
37703
|
-
|
|
37704
|
-
|
|
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
|
+
}
|
|
37705
37984
|
],
|
|
37706
37985
|
probe: "installed-contract",
|
|
37707
37986
|
execution: "in-process",
|
|
@@ -37720,7 +37999,9 @@ var surfaces_default = {
|
|
|
37720
37999
|
},
|
|
37721
38000
|
certification: {
|
|
37722
38001
|
hostCommand: "kilo",
|
|
37723
|
-
versionArgs: [
|
|
38002
|
+
versionArgs: [
|
|
38003
|
+
"--version"
|
|
38004
|
+
]
|
|
37724
38005
|
},
|
|
37725
38006
|
enforcementCeilings: [
|
|
37726
38007
|
"Some read, write, and web-fetch tool outputs are not rewriteable by the host.",
|
|
@@ -37731,7 +38012,11 @@ var surfaces_default = {
|
|
|
37731
38012
|
token: "jervcode",
|
|
37732
38013
|
displayName: "JervCode",
|
|
37733
38014
|
lifecycle: "active",
|
|
37734
|
-
artifactIds: [
|
|
38015
|
+
artifactIds: [
|
|
38016
|
+
"mmi-pi-plugin",
|
|
38017
|
+
"mmi-skills",
|
|
38018
|
+
"mmi-cli"
|
|
38019
|
+
],
|
|
37735
38020
|
plannedArtifactIds: [],
|
|
37736
38021
|
assembly: {
|
|
37737
38022
|
mode: "source-tree",
|
|
@@ -37776,7 +38061,9 @@ var surfaces_default = {
|
|
|
37776
38061
|
},
|
|
37777
38062
|
certification: {
|
|
37778
38063
|
hostCommand: "jervcode",
|
|
37779
|
-
versionArgs: [
|
|
38064
|
+
versionArgs: [
|
|
38065
|
+
"--version"
|
|
38066
|
+
]
|
|
37780
38067
|
},
|
|
37781
38068
|
enforcementCeilings: [
|
|
37782
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.",
|
|
@@ -37796,16 +38083,24 @@ var surfaces_default = {
|
|
|
37796
38083
|
applicability: "plugin-enabled agent surfaces",
|
|
37797
38084
|
versionCoordinated: true,
|
|
37798
38085
|
versionPaths: [
|
|
37799
|
-
{
|
|
38086
|
+
{
|
|
38087
|
+
path: "cli/package.json",
|
|
38088
|
+
pointer: "version"
|
|
38089
|
+
}
|
|
37800
38090
|
],
|
|
37801
38091
|
artifactIdentity: {
|
|
37802
38092
|
kind: "sha256-tree",
|
|
37803
|
-
paths: [
|
|
38093
|
+
paths: [
|
|
38094
|
+
"skills"
|
|
38095
|
+
]
|
|
37804
38096
|
},
|
|
37805
38097
|
verify: [
|
|
37806
38098
|
{
|
|
37807
38099
|
command: "node",
|
|
37808
|
-
args: [
|
|
38100
|
+
args: [
|
|
38101
|
+
"scripts/check-skill-payload.mjs",
|
|
38102
|
+
"--contract"
|
|
38103
|
+
],
|
|
37809
38104
|
expected: "skill payload check: ok"
|
|
37810
38105
|
}
|
|
37811
38106
|
],
|
|
@@ -37815,18 +38110,33 @@ var surfaces_default = {
|
|
|
37815
38110
|
id: "mmi-claude-plugin",
|
|
37816
38111
|
classification: "packaging",
|
|
37817
38112
|
kind: "plugin",
|
|
37818
|
-
ownerPath: "
|
|
37819
|
-
deliveryPath: "
|
|
37820
|
-
delivery: "
|
|
37821
|
-
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).",
|
|
37822
38117
|
versionCoordinated: true,
|
|
37823
38118
|
surfaceToken: "claude",
|
|
37824
38119
|
versionPaths: [
|
|
37825
|
-
{
|
|
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"
|
|
37826
38136
|
],
|
|
37827
38137
|
artifactIdentity: {
|
|
37828
|
-
kind: "
|
|
37829
|
-
|
|
38138
|
+
kind: "npm-pack",
|
|
38139
|
+
packagePath: "packages/claude-plugin"
|
|
37830
38140
|
},
|
|
37831
38141
|
publishVisibility: "public"
|
|
37832
38142
|
},
|
|
@@ -37834,18 +38144,36 @@ var surfaces_default = {
|
|
|
37834
38144
|
id: "mmi-codex-plugin",
|
|
37835
38145
|
classification: "packaging",
|
|
37836
38146
|
kind: "plugin",
|
|
37837
|
-
ownerPath: "
|
|
37838
|
-
deliveryPath: "
|
|
37839
|
-
delivery: "
|
|
37840
|
-
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).",
|
|
37841
38151
|
versionCoordinated: true,
|
|
37842
38152
|
surfaceToken: "codex",
|
|
37843
38153
|
versionPaths: [
|
|
37844
|
-
{
|
|
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"
|
|
37845
38173
|
],
|
|
37846
38174
|
artifactIdentity: {
|
|
37847
|
-
kind: "
|
|
37848
|
-
|
|
38175
|
+
kind: "npm-pack",
|
|
38176
|
+
packagePath: "packages/codex-plugin"
|
|
37849
38177
|
},
|
|
37850
38178
|
publishVisibility: "public"
|
|
37851
38179
|
},
|
|
@@ -37853,18 +38181,31 @@ var surfaces_default = {
|
|
|
37853
38181
|
id: "mmi-kimi-plugin",
|
|
37854
38182
|
classification: "packaging",
|
|
37855
38183
|
kind: "plugin",
|
|
37856
|
-
ownerPath: "
|
|
37857
|
-
deliveryPath: "
|
|
37858
|
-
delivery: "
|
|
37859
|
-
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).",
|
|
37860
38188
|
versionCoordinated: true,
|
|
37861
38189
|
surfaceToken: "kimi",
|
|
37862
38190
|
versionPaths: [
|
|
37863
|
-
{
|
|
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"
|
|
37864
38205
|
],
|
|
37865
38206
|
artifactIdentity: {
|
|
37866
|
-
kind: "
|
|
37867
|
-
|
|
38207
|
+
kind: "npm-pack",
|
|
38208
|
+
packagePath: "packages/kimi-plugin"
|
|
37868
38209
|
},
|
|
37869
38210
|
publishVisibility: "public"
|
|
37870
38211
|
},
|
|
@@ -37872,18 +38213,32 @@ var surfaces_default = {
|
|
|
37872
38213
|
id: "mmi-cursor-plugin",
|
|
37873
38214
|
classification: "packaging",
|
|
37874
38215
|
kind: "plugin",
|
|
37875
|
-
ownerPath: "
|
|
37876
|
-
deliveryPath: "
|
|
37877
|
-
delivery: "
|
|
37878
|
-
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).",
|
|
37879
38220
|
versionCoordinated: true,
|
|
37880
38221
|
surfaceToken: "cursor",
|
|
37881
38222
|
versionPaths: [
|
|
37882
|
-
{
|
|
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"
|
|
37883
38238
|
],
|
|
37884
38239
|
artifactIdentity: {
|
|
37885
|
-
kind: "
|
|
37886
|
-
|
|
38240
|
+
kind: "npm-pack",
|
|
38241
|
+
packagePath: "packages/cursor-plugin"
|
|
37887
38242
|
},
|
|
37888
38243
|
publishVisibility: "public"
|
|
37889
38244
|
},
|
|
@@ -37898,7 +38253,10 @@ var surfaces_default = {
|
|
|
37898
38253
|
versionCoordinated: true,
|
|
37899
38254
|
surfaceToken: "kilo",
|
|
37900
38255
|
versionPaths: [
|
|
37901
|
-
{
|
|
38256
|
+
{
|
|
38257
|
+
path: ".kilo-plugin/package.json",
|
|
38258
|
+
pointer: "version"
|
|
38259
|
+
}
|
|
37902
38260
|
],
|
|
37903
38261
|
additionalPaths: [
|
|
37904
38262
|
".kilo-plugin/server.mjs",
|
|
@@ -37921,11 +38279,16 @@ var surfaces_default = {
|
|
|
37921
38279
|
applicability: "Kilo Code (via @mutmutco/kilo-plugin provisioning to ~/.kilo/skills)",
|
|
37922
38280
|
versionCoordinated: true,
|
|
37923
38281
|
versionPaths: [
|
|
37924
|
-
{
|
|
38282
|
+
{
|
|
38283
|
+
path: "cli/package.json",
|
|
38284
|
+
pointer: "version"
|
|
38285
|
+
}
|
|
37925
38286
|
],
|
|
37926
38287
|
artifactIdentity: {
|
|
37927
38288
|
kind: "sha256-tree",
|
|
37928
|
-
paths: [
|
|
38289
|
+
paths: [
|
|
38290
|
+
".kilo-plugin/skills"
|
|
38291
|
+
]
|
|
37929
38292
|
},
|
|
37930
38293
|
surfaceToken: "kilo",
|
|
37931
38294
|
publishVisibility: "public"
|
|
@@ -37941,12 +38304,25 @@ var surfaces_default = {
|
|
|
37941
38304
|
versionCoordinated: true,
|
|
37942
38305
|
surfaceToken: "claude",
|
|
37943
38306
|
versionPaths: [
|
|
37944
|
-
{
|
|
37945
|
-
|
|
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
|
+
}
|
|
37946
38320
|
],
|
|
37947
38321
|
artifactIdentity: {
|
|
37948
38322
|
kind: "sha256-tree",
|
|
37949
|
-
paths: [
|
|
38323
|
+
paths: [
|
|
38324
|
+
".claude-plugin/marketplace.json"
|
|
38325
|
+
]
|
|
37950
38326
|
},
|
|
37951
38327
|
publishVisibility: "public"
|
|
37952
38328
|
},
|
|
@@ -37960,15 +38336,44 @@ var surfaces_default = {
|
|
|
37960
38336
|
applicability: "editor-agnostic agent surfaces",
|
|
37961
38337
|
versionCoordinated: true,
|
|
37962
38338
|
versionPaths: [
|
|
37963
|
-
{
|
|
38339
|
+
{
|
|
38340
|
+
path: "cli/package.json",
|
|
38341
|
+
pointer: "version"
|
|
38342
|
+
}
|
|
38343
|
+
],
|
|
38344
|
+
additionalPaths: [
|
|
38345
|
+
"cli/dist"
|
|
37964
38346
|
],
|
|
37965
|
-
additionalPaths: ["cli/dist"],
|
|
37966
38347
|
artifactIdentity: {
|
|
37967
38348
|
kind: "npm-pack",
|
|
37968
38349
|
packagePath: "cli"
|
|
37969
38350
|
},
|
|
37970
38351
|
publishVisibility: "public"
|
|
37971
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
|
+
},
|
|
37972
38377
|
{
|
|
37973
38378
|
id: "mmi-cli-lock",
|
|
37974
38379
|
classification: "packaging",
|
|
@@ -37979,12 +38384,20 @@ var surfaces_default = {
|
|
|
37979
38384
|
applicability: "editor-agnostic agent surfaces",
|
|
37980
38385
|
versionCoordinated: true,
|
|
37981
38386
|
versionPaths: [
|
|
37982
|
-
{
|
|
37983
|
-
|
|
38387
|
+
{
|
|
38388
|
+
path: "cli/package-lock.json",
|
|
38389
|
+
pointer: "version"
|
|
38390
|
+
},
|
|
38391
|
+
{
|
|
38392
|
+
path: "cli/package-lock.json",
|
|
38393
|
+
pointer: "packages.$root.version"
|
|
38394
|
+
}
|
|
37984
38395
|
],
|
|
37985
38396
|
artifactIdentity: {
|
|
37986
38397
|
kind: "sha256-tree",
|
|
37987
|
-
paths: [
|
|
38398
|
+
paths: [
|
|
38399
|
+
"cli/package-lock.json"
|
|
38400
|
+
]
|
|
37988
38401
|
},
|
|
37989
38402
|
publishVisibility: "public"
|
|
37990
38403
|
},
|
|
@@ -37998,27 +38411,52 @@ var surfaces_default = {
|
|
|
37998
38411
|
applicability: "editor-agnostic agent surfaces",
|
|
37999
38412
|
versionCoordinated: true,
|
|
38000
38413
|
versionPaths: [
|
|
38001
|
-
{
|
|
38414
|
+
{
|
|
38415
|
+
path: "cli/package.json",
|
|
38416
|
+
pointer: "version"
|
|
38417
|
+
}
|
|
38418
|
+
],
|
|
38419
|
+
additionalPaths: [
|
|
38420
|
+
"cli/dist/main.cjs"
|
|
38002
38421
|
],
|
|
38003
|
-
additionalPaths: ["cli/dist/main.cjs"],
|
|
38004
38422
|
prepare: [
|
|
38005
38423
|
{
|
|
38006
38424
|
command: "npm",
|
|
38007
|
-
args: [
|
|
38008
|
-
|
|
38009
|
-
|
|
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
|
+
]
|
|
38010
38443
|
}
|
|
38011
38444
|
],
|
|
38012
38445
|
verify: [
|
|
38013
38446
|
{
|
|
38014
38447
|
command: "node",
|
|
38015
|
-
args: [
|
|
38448
|
+
args: [
|
|
38449
|
+
"cli/dist/index.cjs",
|
|
38450
|
+
"--version"
|
|
38451
|
+
],
|
|
38016
38452
|
expected: "{version}"
|
|
38017
38453
|
}
|
|
38018
38454
|
],
|
|
38019
38455
|
artifactIdentity: {
|
|
38020
38456
|
kind: "sha256-tree",
|
|
38021
|
-
paths: [
|
|
38457
|
+
paths: [
|
|
38458
|
+
"cli/dist"
|
|
38459
|
+
]
|
|
38022
38460
|
},
|
|
38023
38461
|
publishVisibility: "public"
|
|
38024
38462
|
},
|
|
@@ -38032,7 +38470,10 @@ var surfaces_default = {
|
|
|
38032
38470
|
applicability: "all five active hook-capable agent surfaces",
|
|
38033
38471
|
versionCoordinated: true,
|
|
38034
38472
|
versionPaths: [
|
|
38035
|
-
{
|
|
38473
|
+
{
|
|
38474
|
+
path: "cli/package.json",
|
|
38475
|
+
pointer: "version"
|
|
38476
|
+
}
|
|
38036
38477
|
],
|
|
38037
38478
|
artifactIdentity: {
|
|
38038
38479
|
kind: "sha256-tree",
|
|
@@ -38056,7 +38497,9 @@ var surfaces_default = {
|
|
|
38056
38497
|
verify: [
|
|
38057
38498
|
{
|
|
38058
38499
|
command: "node",
|
|
38059
|
-
args: [
|
|
38500
|
+
args: [
|
|
38501
|
+
"scripts/check-hook-contract.mjs"
|
|
38502
|
+
],
|
|
38060
38503
|
expected: "hook contract: 5 active adapters proven, 12 repositories covered"
|
|
38061
38504
|
}
|
|
38062
38505
|
],
|
|
@@ -38072,11 +38515,17 @@ var surfaces_default = {
|
|
|
38072
38515
|
applicability: "Claude hook-enabled agents",
|
|
38073
38516
|
versionCoordinated: true,
|
|
38074
38517
|
versionPaths: [
|
|
38075
|
-
{
|
|
38518
|
+
{
|
|
38519
|
+
path: "cli/package.json",
|
|
38520
|
+
pointer: "version"
|
|
38521
|
+
}
|
|
38076
38522
|
],
|
|
38077
38523
|
artifactIdentity: {
|
|
38078
38524
|
kind: "sha256-tree",
|
|
38079
|
-
paths: [
|
|
38525
|
+
paths: [
|
|
38526
|
+
"hooks",
|
|
38527
|
+
"scripts"
|
|
38528
|
+
]
|
|
38080
38529
|
},
|
|
38081
38530
|
surfaceToken: "claude",
|
|
38082
38531
|
publishVisibility: "public"
|
|
@@ -38091,7 +38540,10 @@ var surfaces_default = {
|
|
|
38091
38540
|
applicability: "org automation and authorization",
|
|
38092
38541
|
versionCoordinated: true,
|
|
38093
38542
|
versionPaths: [
|
|
38094
|
-
{
|
|
38543
|
+
{
|
|
38544
|
+
path: "infra/package.json",
|
|
38545
|
+
pointer: "version"
|
|
38546
|
+
}
|
|
38095
38547
|
],
|
|
38096
38548
|
publishVisibility: "n/a",
|
|
38097
38549
|
deployedVersionSource: "http-header:x-hub-version"
|
|
@@ -38106,7 +38558,10 @@ var surfaces_default = {
|
|
|
38106
38558
|
applicability: "master DM notifications only; chatops out by default",
|
|
38107
38559
|
versionCoordinated: true,
|
|
38108
38560
|
versionPaths: [
|
|
38109
|
-
{
|
|
38561
|
+
{
|
|
38562
|
+
path: "cli/package.json",
|
|
38563
|
+
pointer: "version"
|
|
38564
|
+
}
|
|
38110
38565
|
],
|
|
38111
38566
|
publishVisibility: "n/a"
|
|
38112
38567
|
},
|
|
@@ -38121,16 +38576,24 @@ var surfaces_default = {
|
|
|
38121
38576
|
versionCoordinated: true,
|
|
38122
38577
|
surfaceToken: "jervcode",
|
|
38123
38578
|
versionPaths: [
|
|
38124
|
-
{
|
|
38579
|
+
{
|
|
38580
|
+
path: ".pi-plugin/package.json",
|
|
38581
|
+
pointer: "version"
|
|
38582
|
+
}
|
|
38125
38583
|
],
|
|
38126
38584
|
artifactIdentity: {
|
|
38127
38585
|
kind: "sha256-tree",
|
|
38128
|
-
paths: [
|
|
38586
|
+
paths: [
|
|
38587
|
+
".pi-plugin/package.json",
|
|
38588
|
+
"skills"
|
|
38589
|
+
]
|
|
38129
38590
|
},
|
|
38130
38591
|
verify: [
|
|
38131
38592
|
{
|
|
38132
38593
|
command: "node",
|
|
38133
|
-
args: [
|
|
38594
|
+
args: [
|
|
38595
|
+
"scripts/check-jervcode-consumer.mjs"
|
|
38596
|
+
],
|
|
38134
38597
|
expected: "JervCode consumer fitness: clean ({version})"
|
|
38135
38598
|
}
|
|
38136
38599
|
],
|
|
@@ -38700,6 +39163,9 @@ async function runDoctorClean(opts, io, deps) {
|
|
|
38700
39163
|
const restartAction = registryEvidence ? surfaceRestartAction(registryEvidence.descriptor) : "restart the agent host";
|
|
38701
39164
|
const checks = [];
|
|
38702
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));
|
|
38703
39169
|
const streamed = /* @__PURE__ */ new Set();
|
|
38704
39170
|
const streamedLines = /* @__PURE__ */ new Set();
|
|
38705
39171
|
const alreadyShown = (c) => streamed.has(c) || streamedLines.has(renderCheckLine(c));
|
|
@@ -38766,6 +39232,7 @@ async function runDoctorClean(opts, io, deps) {
|
|
|
38766
39232
|
if (!heal.skipped) restartPending = true;
|
|
38767
39233
|
if (heal.ok && !heal.skipped) {
|
|
38768
39234
|
markHealChanged();
|
|
39235
|
+
if (activeHostToken) changedPluginHosts.add(activeHostToken);
|
|
38769
39236
|
spentRows.set("plugin-chain", row);
|
|
38770
39237
|
}
|
|
38771
39238
|
} else if (diagnosis.state !== "skipped") {
|
|
@@ -38821,7 +39288,25 @@ async function runDoctorClean(opts, io, deps) {
|
|
|
38821
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`;
|
|
38822
39289
|
healIntent(intent);
|
|
38823
39290
|
traceHeal("cli-self-update");
|
|
38824
|
-
|
|
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
|
+
}
|
|
38825
39310
|
if (heal.skipped) spentHeals.delete("cli-self-update");
|
|
38826
39311
|
if (heal.ok && !heal.skipped) markHealChanged();
|
|
38827
39312
|
const healEvidence = [
|
|
@@ -39028,6 +39513,9 @@ async function runDoctorClean(opts, io, deps) {
|
|
|
39028
39513
|
if (changed.length > 0) {
|
|
39029
39514
|
markHealChanged();
|
|
39030
39515
|
restartPending = true;
|
|
39516
|
+
for (const note of changed) {
|
|
39517
|
+
if (note.host !== "marketplace") changedPluginHosts.add(note.host);
|
|
39518
|
+
}
|
|
39031
39519
|
}
|
|
39032
39520
|
const passRow = {
|
|
39033
39521
|
id: "update-pass",
|
|
@@ -39464,6 +39952,8 @@ async function runDoctorClean(opts, io, deps) {
|
|
|
39464
39952
|
checks: payload,
|
|
39465
39953
|
restartPending,
|
|
39466
39954
|
...restartPending ? { restartAction } : {},
|
|
39955
|
+
// #4940: stable host tokens whose plugin changed this run — additive beside restartAction.
|
|
39956
|
+
...changedPluginHosts.size > 0 ? { restartHosts: [...changedPluginHosts].sort() } : {},
|
|
39467
39957
|
exitCode
|
|
39468
39958
|
}, null, 2));
|
|
39469
39959
|
return exitCode;
|
|
@@ -39474,7 +39964,10 @@ async function runDoctorClean(opts, io, deps) {
|
|
|
39474
39964
|
io.log(renderReport([c], { restartPending: false }));
|
|
39475
39965
|
if (opts.verbose) for (const evidence of c.verbose ?? []) io.log(`${VERBOSE_INDENT}${evidence}`);
|
|
39476
39966
|
}
|
|
39477
|
-
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
|
+
}
|
|
39478
39971
|
return 0;
|
|
39479
39972
|
}
|
|
39480
39973
|
const rest = checks.filter((c) => !alreadyShown(c));
|
|
@@ -39485,7 +39978,10 @@ async function runDoctorClean(opts, io, deps) {
|
|
|
39485
39978
|
if (opts.verbose) for (const evidence of check.verbose ?? []) lines.push(`${VERBOSE_INDENT}${evidence}`);
|
|
39486
39979
|
}
|
|
39487
39980
|
lines.push(renderTally(checks));
|
|
39488
|
-
if (restartPending)
|
|
39981
|
+
if (restartPending) {
|
|
39982
|
+
lines.push(`\u21BB ${restartAction.charAt(0).toUpperCase()}${restartAction.slice(1)} to finish.`);
|
|
39983
|
+
lines.push(...extraRestartLines());
|
|
39984
|
+
}
|
|
39489
39985
|
io.log(lines.join("\n"));
|
|
39490
39986
|
return exitCode;
|
|
39491
39987
|
}
|
package/package.json
CHANGED