@mutmutco/cli 3.72.0 → 3.73.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/README.md +1 -1
- package/dist/main.cjs +21 -5
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
The command-line engine for MMI Future org tooling. It delivers the org-managed `.gitignore` block, reads and claims GitHub Project work, and exposes the model-agnostic commands used by the MMI plugin and non-Claude agents. (Personal agent guides — `AGENTS.md` / `CLAUDE.md` — are developer-owned and gitignored; the CLI does not deliver, overwrite, or fan them out — the whole-spine fanout is retired.)
|
|
4
4
|
|
|
5
|
-
This package is published from [mutmutco/MMI-Hub](https://github.com/mutmutco/MMI-Hub) and its version matches the MMI Hub
|
|
5
|
+
This package is published from [mutmutco/MMI-Hub](https://github.com/mutmutco/MMI-Hub) and its version matches the MMI Hub plugin distribution version — the release train bumps the CLI and the Claude, Codex, and Kimi plugin manifests in lockstep.
|
|
6
6
|
|
|
7
7
|
The CLI carries the org **Hub endpoint** intrinsically (override with the `MMI_HUB_URL` env var), so a product repo needs **no committed control-plane config** to reach the Hub — board coords, deploy coordinates, OAuth, and the secrets layout are all discovered from the Hub registry at runtime.
|
|
8
8
|
|
package/dist/main.cjs
CHANGED
|
@@ -21802,6 +21802,9 @@ function detectSurface(env) {
|
|
|
21802
21802
|
if (env.MMI_AGENT_SURFACE === "codex" || has("CODEX_HOME") || (env.CLAUDE_PLUGIN_ROOT ?? "").includes(".codex")) {
|
|
21803
21803
|
return "codex";
|
|
21804
21804
|
}
|
|
21805
|
+
if (env.MMI_AGENT_SURFACE === "kimi" || has("KIMI_PLUGIN_ROOT") || has("KIMI_CODE_HOME")) {
|
|
21806
|
+
return "kimi";
|
|
21807
|
+
}
|
|
21805
21808
|
if (env.MMI_AGENT_SURFACE === "cursor" || has("CURSOR_TRACE_ID") || has("CURSOR_USER") || has("CURSOR_SESSION_ID") || env.CURSOR_AGENT === "1" || has("CURSOR_EXTENSION_HOST_ROLE")) {
|
|
21806
21809
|
return "cursor";
|
|
21807
21810
|
}
|
|
@@ -21819,6 +21822,8 @@ function surfaceToken(surface) {
|
|
|
21819
21822
|
return "claude";
|
|
21820
21823
|
case "codex":
|
|
21821
21824
|
return "codex";
|
|
21825
|
+
case "kimi":
|
|
21826
|
+
return "kimi";
|
|
21822
21827
|
case "cursor":
|
|
21823
21828
|
return "cursor";
|
|
21824
21829
|
case "opencode":
|
|
@@ -21834,6 +21839,8 @@ function reloadAction(surface) {
|
|
|
21834
21839
|
return "restart VS Code";
|
|
21835
21840
|
case "codex":
|
|
21836
21841
|
return "restart Codex";
|
|
21842
|
+
case "kimi":
|
|
21843
|
+
return "run /reload (or start a new session) in Kimi Code";
|
|
21837
21844
|
case "opencode":
|
|
21838
21845
|
return "restart OpenCode";
|
|
21839
21846
|
case "cursor":
|
|
@@ -21864,7 +21871,10 @@ function nonClaudeSurfaceHealMessage(surface) {
|
|
|
21864
21871
|
if (surface === "codex") {
|
|
21865
21872
|
return "Codex ships an MMI plugin (#3563). Install or repair it with:\n codex plugin marketplace add mutmutco/MMI-Hub && codex plugin add mmi@mutmutco\n Then run /hooks and TRUST the MMI hooks \u2014 bundled hooks are skipped until reviewed.\n Update the CLI too: npm i -g @mutmutco/cli";
|
|
21866
21873
|
}
|
|
21867
|
-
|
|
21874
|
+
if (surface === "kimi") {
|
|
21875
|
+
return "Kimi Code CLI ships an MMI plugin (kimi-k3). Install or repair it from the Kimi TUI with:\n /plugins install https://github.com/mutmutco/MMI-Hub\n Then run /reload (plugin hooks start only after a reload), and TRUST the install when prompted.\n Update the CLI too: npm i -g @mutmutco/cli";
|
|
21876
|
+
}
|
|
21877
|
+
return "No Hub-shipped MMI plugin on this host \u2014 the Hub ships plugins for Claude, Codex, and Kimi only.\n Update the CLI instead: npm i -g @mutmutco/cli (org rules ride an AGENTS.md authored outside the Hub)";
|
|
21868
21878
|
}
|
|
21869
21879
|
function healStepAborts(step, ok) {
|
|
21870
21880
|
return !ok && step.gated;
|
|
@@ -21903,9 +21913,13 @@ var NPM_VIEW_TIMEOUT_MS = 15e3;
|
|
|
21903
21913
|
function runHostBin(bin, args, opts) {
|
|
21904
21914
|
return isWin ? execFileP2("cmd.exe", ["/c", bin, ...args], opts) : execFileP2(bin, args, opts);
|
|
21905
21915
|
}
|
|
21916
|
+
function surfaceHomeDir(surface) {
|
|
21917
|
+
if (surface === "codex") return ".codex";
|
|
21918
|
+
if (surface === "kimi") return ".kimi-code";
|
|
21919
|
+
return ".claude";
|
|
21920
|
+
}
|
|
21906
21921
|
var installedPluginsPath2 = (surface = detectSurface(process.env)) => {
|
|
21907
|
-
|
|
21908
|
-
return (0, import_node_path24.join)((0, import_node_os6.homedir)(), homeDir, "plugins", "installed_plugins.json");
|
|
21922
|
+
return (0, import_node_path24.join)((0, import_node_os6.homedir)(), surfaceHomeDir(surface), "plugins", "installed_plugins.json");
|
|
21909
21923
|
};
|
|
21910
21924
|
function readInstalledPlugins(surface = detectSurface(process.env)) {
|
|
21911
21925
|
try {
|
|
@@ -21921,6 +21935,7 @@ function marketplaceCloneCandidates(surface, home) {
|
|
|
21921
21935
|
(0, import_node_path24.join)(home, ".codex", "plugins", "marketplaces", "mutmutco")
|
|
21922
21936
|
];
|
|
21923
21937
|
}
|
|
21938
|
+
if (surface === "kimi") return [];
|
|
21924
21939
|
return [(0, import_node_path24.join)(home, ".claude", "plugins", "marketplaces", "mutmutco")];
|
|
21925
21940
|
}
|
|
21926
21941
|
function marketplaceClonePresent(surface, home, exists = import_node_fs25.existsSync) {
|
|
@@ -21945,13 +21960,14 @@ async function npmSelfUpdateCli(target) {
|
|
|
21945
21960
|
}
|
|
21946
21961
|
}
|
|
21947
21962
|
function snapshotPluginGuardInput(surface = detectSurface(process.env), isOrgRepo = false) {
|
|
21948
|
-
const homeDir = surface
|
|
21963
|
+
const homeDir = surfaceHomeDir(surface);
|
|
21949
21964
|
const installed = readInstalledPlugins(surface);
|
|
21950
21965
|
return {
|
|
21951
21966
|
isOrgRepo,
|
|
21952
21967
|
installRecordPresent: hasUserInstallRecord(installed, MMI_PLUGIN_ID) || hasProjectInstallRecord(installed, MMI_PLUGIN_ID, process.cwd()),
|
|
21953
21968
|
marketplaceClonePresent: marketplaceClonePresent(surface, (0, import_node_os6.homedir)()),
|
|
21954
|
-
|
|
21969
|
+
// Kimi keeps no plugin cache dir — installs are copied to plugins/managed/<id> and run from there.
|
|
21970
|
+
pluginCachePresent: surface === "kimi" ? (0, import_node_fs25.existsSync)((0, import_node_path24.join)((0, import_node_os6.homedir)(), homeDir, "plugins", "managed", "mmi")) : (0, import_node_fs25.existsSync)((0, import_node_path24.join)((0, import_node_os6.homedir)(), homeDir, "plugins", "cache", "mutmutco", "mmi"))
|
|
21955
21971
|
};
|
|
21956
21972
|
}
|
|
21957
21973
|
function claudePluginGuardState(isOrgRepo) {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mutmutco/cli",
|
|
3
|
-
"version": "3.
|
|
4
|
-
"description": "MMI Future CLI — the org dev toolbox (board, registry, keyless secrets, release train, bootstrap, doctor) and the cross-IDE engine the plugin's
|
|
3
|
+
"version": "3.73.0",
|
|
4
|
+
"description": "MMI Future CLI — the org dev toolbox (board, registry, keyless secrets, release train, bootstrap, doctor) and the cross-IDE engine the MMI plugin's skills and gates drive on Claude, Codex, and Kimi.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "UNLICENSED",
|
|
7
7
|
"author": {
|