autodev-cli 1.4.151 → 1.4.152

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.
@@ -20,22 +20,18 @@ export interface McpCatalogEntry {
20
20
  notes: string[];
21
21
  }
22
22
  /**
23
- * Legacy placeholder the OLD GIMP stub carried until the user pointed it at a
24
- * local checkout. No longer the default (see serverSpecFor/gimp below) — kept
25
- * ONLY so the migration can recognise + upgrade pre-git-based stubs.
23
+ * Display placeholder for the gimp client path BEFORE install (path unknown).
24
+ * `serverSpecFor('gimp', …)` with no resolved client path emits this so the
25
+ * catalog/detect JSON never bakes in a machine-specific path — and, crucially,
26
+ * never the broken raw-github upstream client. It also lets the migration
27
+ * recognise a not-yet-resolved gimp entry and upgrade it once GIMP is detected.
26
28
  */
27
- export declare const GIMP_CLIENT_PLACEHOLDER = "<GIMP_MCP_CLIENT_PY>";
29
+ export declare const GIMP_CLIENT_PLACEHOLDER = "<GIMP config>/mcp/gimp_mcp_client.py";
28
30
  /**
29
- * The GIMP MCP client, run straight from git by `uv` — no manual clone. Pinned
30
- * to a specific upstream commit + `mcp==1.2.0` for reproducibility: `uv run`
31
- * fetches this raw script, installs the PINNED mcp SDK, and launches the FastMCP
32
- * stdio server (it lazily connects to GIMP on localhost:9876, so it starts even
33
- * without GIMP running). Verified end-to-end (valid MCP initialize handshake,
34
- * clean exit). `mcp==1.2.0` is load-bearing — current mcp releases break this
35
- * client on a removed `description=` kwarg.
31
+ * The pinned mcp SDK version the client runs under. Load-bearing — current mcp
32
+ * releases break the client on a removed `description=` kwarg. `uv run --with
33
+ * mcp==1.2.0 <client>` installs exactly this into an ephemeral env.
36
34
  */
37
- export declare const GIMP_MCP_COMMIT = "49c46dd6146cb7393b42a9ecda630583b3117b33";
38
- export declare const GIMP_MCP_CLIENT_URL = "https://raw.githubusercontent.com/libreearth/gimp-mcp/49c46dd6146cb7393b42a9ecda630583b3117b33/gimp_mcp_client.py";
39
35
  export declare const GIMP_MCP_PIN = "mcp==1.2.0";
40
36
  /** Per-platform install hint for the `uv`/`uvx` toolchain (never `pip install uv`). */
41
37
  export declare function uvInstallHint(platform: NodeJS.Platform): string;
@@ -60,14 +56,26 @@ export declare const BLENDER_LAB_FROM = "git+https://projects.blender.org/lab/bl
60
56
  * from Blender Lab" add-on. NEVER bare `uvx blender-mcp` (no --from) — that
61
57
  * pulls the incompatible community PyPI package. (The exact launcher form is
62
58
  * under review; the args are the load-bearing part the migration re-resolves.)
63
- * - GIMP: the git-based client run by bare `uv` (`uv run --with mcp==1.2.0
64
- * <raw github url>`) on every platform — runnable now, so written ENABLED
65
- * (no disabled stub). `opts.gimpClientPath` is an OPTIONAL override for users
66
- * who cloned the repo locally → `python[3] <that path>`. Still experimental.
59
+ * - GIMP: the LOCALLY-INSTALLED, user-verified client run by bare `uv`
60
+ * (`uv run --with mcp==1.2.0 <clientPath>`) on every platform. `clientPath`
61
+ * is the client installGimpPlugin() writes to <GIMP-config>/<ver>/mcp/. Pass
62
+ * the resolved path via `opts.gimpClientPath`; without it we emit the display
63
+ * placeholder (never the broken raw-github upstream client). Experimental.
67
64
  */
68
65
  export declare function serverSpecFor(app: CreativeAppId, platform: NodeJS.Platform, opts?: {
69
66
  gimpClientPath?: string;
70
67
  }): McpJsonEntry;
68
+ /** The client-path argument carried by a gimp .mcp.json entry, whatever the command form. */
69
+ export declare function gimpClientArgOf(entry: {
70
+ command?: string;
71
+ args?: string[];
72
+ }): string | undefined;
73
+ /**
74
+ * Is `arg` a CONCRETE local client path — a real filesystem path we must not
75
+ * clobber (a user's own checkout, or the client we already installed)? False for
76
+ * the display placeholder and for ANY URL (incl. the broken raw-github client).
77
+ */
78
+ export declare function isConcreteGimpClientArg(arg: string | undefined): boolean;
71
79
  /** Build the catalog for a given platform (install hints are platform-specific). */
72
80
  export declare function getCatalog(platform: NodeJS.Platform): McpCatalogEntry[];
73
81
  /** Lookup a single catalog entry. */
@@ -10,32 +10,29 @@
10
10
  // flagged experimental because upstream ships no packaged launcher — see below.
11
11
  // ---------------------------------------------------------------------------
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.BLENDER_LAB_FROM = exports.GIMP_MCP_PIN = exports.GIMP_MCP_CLIENT_URL = exports.GIMP_MCP_COMMIT = exports.GIMP_CLIENT_PLACEHOLDER = void 0;
13
+ exports.BLENDER_LAB_FROM = exports.GIMP_MCP_PIN = exports.GIMP_CLIENT_PLACEHOLDER = void 0;
14
14
  exports.uvInstallHint = uvInstallHint;
15
15
  exports.pythonInstallHint = pythonInstallHint;
16
16
  exports.gitInstallHint = gitInstallHint;
17
17
  exports.serverSpecFor = serverSpecFor;
18
+ exports.gimpClientArgOf = gimpClientArgOf;
19
+ exports.isConcreteGimpClientArg = isConcreteGimpClientArg;
18
20
  exports.getCatalog = getCatalog;
19
21
  exports.catalogEntry = catalogEntry;
20
22
  /**
21
- * Legacy placeholder the OLD GIMP stub carried until the user pointed it at a
22
- * local checkout. No longer the default (see serverSpecFor/gimp below) — kept
23
- * ONLY so the migration can recognise + upgrade pre-git-based stubs.
23
+ * Display placeholder for the gimp client path BEFORE install (path unknown).
24
+ * `serverSpecFor('gimp', …)` with no resolved client path emits this so the
25
+ * catalog/detect JSON never bakes in a machine-specific path — and, crucially,
26
+ * never the broken raw-github upstream client. It also lets the migration
27
+ * recognise a not-yet-resolved gimp entry and upgrade it once GIMP is detected.
24
28
  */
25
- exports.GIMP_CLIENT_PLACEHOLDER = '<GIMP_MCP_CLIENT_PY>';
29
+ exports.GIMP_CLIENT_PLACEHOLDER = '<GIMP config>/mcp/gimp_mcp_client.py';
26
30
  /**
27
- * The GIMP MCP client, run straight from git by `uv` — no manual clone. Pinned
28
- * to a specific upstream commit + `mcp==1.2.0` for reproducibility: `uv run`
29
- * fetches this raw script, installs the PINNED mcp SDK, and launches the FastMCP
30
- * stdio server (it lazily connects to GIMP on localhost:9876, so it starts even
31
- * without GIMP running). Verified end-to-end (valid MCP initialize handshake,
32
- * clean exit). `mcp==1.2.0` is load-bearing — current mcp releases break this
33
- * client on a removed `description=` kwarg.
31
+ * The pinned mcp SDK version the client runs under. Load-bearing — current mcp
32
+ * releases break the client on a removed `description=` kwarg. `uv run --with
33
+ * mcp==1.2.0 <client>` installs exactly this into an ephemeral env.
34
34
  */
35
- exports.GIMP_MCP_COMMIT = '49c46dd6146cb7393b42a9ecda630583b3117b33';
36
- exports.GIMP_MCP_CLIENT_URL = `https://raw.githubusercontent.com/libreearth/gimp-mcp/${exports.GIMP_MCP_COMMIT}/gimp_mcp_client.py`;
37
35
  exports.GIMP_MCP_PIN = 'mcp==1.2.0';
38
- const GIMP_GIT_ARGS = ['run', '--with', exports.GIMP_MCP_PIN, exports.GIMP_MCP_CLIENT_URL];
39
36
  /** Per-platform install hint for the `uv`/`uvx` toolchain (never `pip install uv`). */
40
37
  function uvInstallHint(platform) {
41
38
  if (platform === 'win32') {
@@ -84,10 +81,11 @@ const BLENDER_LAB_ARGS = ['--from', exports.BLENDER_LAB_FROM, '--with', 'mcp<2',
84
81
  * from Blender Lab" add-on. NEVER bare `uvx blender-mcp` (no --from) — that
85
82
  * pulls the incompatible community PyPI package. (The exact launcher form is
86
83
  * under review; the args are the load-bearing part the migration re-resolves.)
87
- * - GIMP: the git-based client run by bare `uv` (`uv run --with mcp==1.2.0
88
- * <raw github url>`) on every platform — runnable now, so written ENABLED
89
- * (no disabled stub). `opts.gimpClientPath` is an OPTIONAL override for users
90
- * who cloned the repo locally → `python[3] <that path>`. Still experimental.
84
+ * - GIMP: the LOCALLY-INSTALLED, user-verified client run by bare `uv`
85
+ * (`uv run --with mcp==1.2.0 <clientPath>`) on every platform. `clientPath`
86
+ * is the client installGimpPlugin() writes to <GIMP-config>/<ver>/mcp/. Pass
87
+ * the resolved path via `opts.gimpClientPath`; without it we emit the display
88
+ * placeholder (never the broken raw-github upstream client). Experimental.
91
89
  */
92
90
  function serverSpecFor(app, platform, opts) {
93
91
  if (app === 'blender') {
@@ -95,15 +93,41 @@ function serverSpecFor(app, platform, opts) {
95
93
  // official Blender Lab `--from git+…lab…` client.
96
94
  return { command: 'uvx', args: [...BLENDER_LAB_ARGS] };
97
95
  }
98
- // gimp — OPTIONAL local override: a user who cloned the repo points us at their
99
- // gimp_mcp_client.py and we run it via python (enabled — it's a real path).
100
- const local = opts?.gimpClientPath && opts.gimpClientPath.trim();
101
- if (local && local !== exports.GIMP_CLIENT_PLACEHOLDER) {
102
- return { command: platform === 'win32' ? 'python' : 'python3', args: [local] };
96
+ // gimp — run the locally-installed client via `uv` with the pinned mcp SDK.
97
+ // Same command shape on every platform; only the client path differs.
98
+ const client = (opts?.gimpClientPath && opts.gimpClientPath.trim()) || exports.GIMP_CLIENT_PLACEHOLDER;
99
+ return { command: 'uv', args: ['run', '--with', exports.GIMP_MCP_PIN, client] };
100
+ }
101
+ /** The client-path argument carried by a gimp .mcp.json entry, whatever the command form. */
102
+ function gimpClientArgOf(entry) {
103
+ const args = Array.isArray(entry.args) ? entry.args : [];
104
+ if (entry.command === 'python' || entry.command === 'python3') {
105
+ return args[0];
106
+ }
107
+ if (entry.command === 'uv') {
108
+ return args[args.length - 1];
109
+ }
110
+ return undefined;
111
+ }
112
+ /**
113
+ * Is `arg` a CONCRETE local client path — a real filesystem path we must not
114
+ * clobber (a user's own checkout, or the client we already installed)? False for
115
+ * the display placeholder and for ANY URL (incl. the broken raw-github client).
116
+ */
117
+ function isConcreteGimpClientArg(arg) {
118
+ if (typeof arg !== 'string' || arg.length === 0) {
119
+ return false;
103
120
  }
104
- // Default: the git-based client, fetched + launched by `uv run`. Same on every
105
- // platform. Enabled by default — it launches even without GIMP present.
106
- return { command: 'uv', args: [...GIMP_GIT_ARGS] };
121
+ if (arg === exports.GIMP_CLIENT_PLACEHOLDER) {
122
+ return false;
123
+ }
124
+ if (/^https?:\/\//i.test(arg)) {
125
+ return false;
126
+ }
127
+ if (/raw\.githubusercontent\.com/i.test(arg)) {
128
+ return false;
129
+ }
130
+ return true;
107
131
  }
108
132
  /** Build the catalog for a given platform (install hints are platform-specific). */
109
133
  function getCatalog(platform) {
@@ -135,25 +159,33 @@ function getCatalog(platform) {
135
159
  serverName: 'gimp',
136
160
  prerequisites: [{ id: 'uv', installHint: uvInstallHint(platform) }],
137
161
  postSetup: [
138
- 'The MCP client runs from git automatically (uv fetches it) — no manual download of the client.',
139
- `The GIMP-side AUTO-START plugin is installed for you into your GIMP 3.x plug-ins folder (${gimpPluginDir(platform)}) — just restart GIMP and the server auto-starts on localhost:9876 (no menu click). Re-run any time with: autodev mcp gimp-install-plugin`,
140
- 'Requires GIMP 3.0+ (the plugin uses the GIMP 3.0 API).',
162
+ `Plugin + client are installed automatically into your GIMP 3.x config (${gimpPluginDir(platform)}) — you copy nothing. Re-run any time with: autodev mcp gimp-install-plugin`,
163
+ "In GIMP: Tools → MCP → Start MCP Server (or Filters → Development → Start MCP Server), and KEEP the 'GIMP MCP Server' window open — it holds the plug-in process alive and the :9876 socket. One click per GIMP session (the window may hide behind other apps; use the taskbar).",
164
+ 'Requires GIMP 3.x (the plugin uses the GIMP 3.0 Python API).',
141
165
  "Port 9876 collides with Blender — don't run both MCP servers at once.",
142
166
  ],
143
167
  notes: [
144
- 'Experimental prototype: upstream is a prototype and its README contradicts its own code — expect rough edges.',
145
- `The client is pinned to a specific commit (${exports.GIMP_MCP_COMMIT.slice(0, 7)}…) and ${exports.GIMP_MCP_PIN} for reproducibility (current mcp releases break the client on a removed description= kwarg).`,
168
+ `Log: ${gimpLogPath(platform)} (Store/MSIX GIMP also mirrors a copy inside its sandbox LocalCache).`,
169
+ `The client runs via \`uv run --with ${exports.GIMP_MCP_PIN} <installed client>\`; the ${exports.GIMP_MCP_PIN} pin is load-bearing (current mcp releases break the client on a removed description= kwarg).`,
146
170
  ],
147
171
  },
148
172
  ];
149
173
  }
150
- /** GIMP 3.0 plug-ins directory, per OS (where the server-side plugin lives). */
174
+ /** GIMP 3.x config directory, per OS (where plug-ins/ and mcp/ get installed). */
151
175
  function gimpPluginDir(platform) {
152
176
  return platform === 'win32'
153
- ? '%APPDATA%\\GIMP\\3.x\\plug-ins\\'
177
+ ? '%APPDATA%\\GIMP\\3.x\\'
178
+ : platform === 'darwin'
179
+ ? '~/Library/Application Support/GIMP/3.x/'
180
+ : '~/.config/GIMP/3.x/';
181
+ }
182
+ /** GIMP MCP server log path, per OS (dual-written by the plug-in). */
183
+ function gimpLogPath(platform) {
184
+ return platform === 'win32'
185
+ ? '%APPDATA%\\GIMP\\3.x\\gimp_mcp_server.log'
154
186
  : platform === 'darwin'
155
- ? '~/Library/Application Support/GIMP/3.x/plug-ins/'
156
- : '~/.config/GIMP/3.x/plug-ins/';
187
+ ? '~/Library/Application Support/GIMP/3.x/gimp_mcp_server.log'
188
+ : '~/.config/GIMP/3.x/gimp_mcp_server.log';
157
189
  }
158
190
  /** Lookup a single catalog entry. */
159
191
  function catalogEntry(app, platform) {
@@ -1 +1 @@
1
- {"version":3,"file":"mcpCatalog.js","sourceRoot":"","sources":["../../src/core/mcpCatalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcpCatalog.js","sourceRoot":"","sources":["../../src/core/mcpCatalog.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,14 @@
1
+ export interface MigrateOpts {
2
+ /**
3
+ * Resolve the local gimp client path for this machine, or null when GIMP 3.x is
4
+ * absent. Defaults to resolveGimpClientPath() (real detection). Injectable for
5
+ * tests. When null, a gimp entry that needs upgrading is left as-is.
6
+ */
7
+ resolveGimpClient?: () => string | null;
8
+ }
1
9
  /**
2
10
  * Re-resolve stale creative-app user entries in <root>/.mcp.json from the current
3
11
  * catalog. Persists the upgraded set back to .mcp.json when anything changed and
4
12
  * logs each upgrade. Returns true iff at least one entry was migrated.
5
13
  */
6
- export declare function migrateCreativeMcpEntries(root: string, platform: NodeJS.Platform, log?: (m: string) => void): boolean;
14
+ export declare function migrateCreativeMcpEntries(root: string, platform: NodeJS.Platform, log?: (m: string) => void, opts?: MigrateOpts): boolean;
@@ -12,11 +12,14 @@
12
12
  // It is deliberately narrow:
13
13
  // - blender : ALWAYS re-resolved if command/args drift from the catalog spec
14
14
  // (Blender has no user-customizable fields, so replacing is safe).
15
- // - gimp : re-resolved to the git-based `uv run …` spec if the stored entry
16
- // drifts from the current catalog (covers the OLD <GIMP_MCP_CLIENT_PY>
17
- // placeholder stub AND any earlier command). The ONE thing we never
18
- // clobber is a user's LOCAL checkout: a python/python3 entry pointing
19
- // at a concrete (non-placeholder) client path is preserved.
15
+ // - gimp : the ONE thing we never clobber is a user's concrete local client
16
+ // (python[3] <path>, or `uv run … <concrete local path>`). Anything
17
+ // else — the old <…> placeholder stub, OR the BROKEN raw-github
18
+ // upstream client (raw.githubusercontent.com/…/gimp_mcp_client.py)
19
+ // — is upgraded to `uv run --with mcp==1.2.0 <LOCAL client path>`
20
+ // using the client installGimpPlugin() writes on this machine. If
21
+ // GIMP is not installed we can't compute that path, so we leave the
22
+ // entry as-is (we never NEWLY write the broken raw URL).
20
23
  // `enabled`, `env`, and `_meta` are preserved; the match is name-based so entries
21
24
  // written before any `_meta.catalogId` tag existed still migrate. Non-creative
22
25
  // entries (built-ins, filesystem's <ALLOWED_DIR>, custom user servers) are never
@@ -25,6 +28,7 @@
25
28
  Object.defineProperty(exports, "__esModule", { value: true });
26
29
  exports.migrateCreativeMcpEntries = migrateCreativeMcpEntries;
27
30
  const mcpCatalog_1 = require("./mcpCatalog");
31
+ const gimpPluginInstall_1 = require("./gimpPluginInstall");
28
32
  const projectMcp_1 = require("./projectMcp");
29
33
  /** Creative catalog ids we re-resolve (single source: mcpCatalog). */
30
34
  const CREATIVE_IDS = ['blender', 'gimp'];
@@ -40,24 +44,21 @@ function _argsEqual(a, b) {
40
44
  return true;
41
45
  }
42
46
  /**
43
- * A gimp entry the migration must PRESERVE: a user's local checkout, i.e. a
44
- * python/python3 command pointing at a concrete (non-placeholder) client path.
45
- * Everything else (the old <GIMP_MCP_CLIENT_PY> placeholder stub, or any earlier
46
- * command form) is upgradeable to the current git-based catalog spec.
47
+ * A gimp entry the migration must PRESERVE: it already points at a CONCRETE local
48
+ * client (a real filesystem path, not the placeholder and not a URL) — either a
49
+ * user's own checkout or the client we already installed. Everything else (the
50
+ * placeholder stub, the broken raw-github URL, or a bare command) is upgradeable.
47
51
  */
48
- function _isGimpLocalPython(e) {
49
- if (e.command !== 'python' && e.command !== 'python3') {
50
- return false;
51
- }
52
- const first = Array.isArray(e.args) ? e.args[0] : undefined;
53
- return typeof first === 'string' && first.length > 0 && first !== mcpCatalog_1.GIMP_CLIENT_PLACEHOLDER;
52
+ function _isGimpConcreteLocal(e) {
53
+ return (0, mcpCatalog_1.isConcreteGimpClientArg)((0, mcpCatalog_1.gimpClientArgOf)(e));
54
54
  }
55
55
  /**
56
56
  * Re-resolve stale creative-app user entries in <root>/.mcp.json from the current
57
57
  * catalog. Persists the upgraded set back to .mcp.json when anything changed and
58
58
  * logs each upgrade. Returns true iff at least one entry was migrated.
59
59
  */
60
- function migrateCreativeMcpEntries(root, platform, log) {
60
+ function migrateCreativeMcpEntries(root, platform, log, opts) {
61
+ const resolveGimpClient = opts?.resolveGimpClient ?? (() => (0, gimpPluginInstall_1.resolveGimpClientPath)());
61
62
  let userMcp;
62
63
  try {
63
64
  userMcp = (0, projectMcp_1.loadProjectUserMcp)(root);
@@ -74,11 +75,22 @@ function migrateCreativeMcpEntries(root, platform, log) {
74
75
  // under this name is not ours to touch.
75
76
  if (typeof entry.command !== 'string')
76
77
  continue;
77
- // GIMP: never clobber a user's local checkout (python[3] + real client path);
78
- // everything else (old placeholder stub / earlier command) upgrades below.
79
- if (id === 'gimp' && _isGimpLocalPython(entry))
80
- continue;
81
- const spec = (0, mcpCatalog_1.serverSpecFor)(id, platform);
78
+ let spec;
79
+ if (id === 'gimp') {
80
+ // Never clobber a user's concrete local client (or the one we installed).
81
+ if (_isGimpConcreteLocal(entry))
82
+ continue;
83
+ // Otherwise (placeholder stub / broken raw-github URL / bare command) upgrade
84
+ // to the locally-installed client — but only if we can resolve one. Without a
85
+ // detected GIMP we leave the entry as-is (never NEWLY write the broken URL).
86
+ const clientPath = resolveGimpClient();
87
+ if (!clientPath)
88
+ continue;
89
+ spec = (0, mcpCatalog_1.serverSpecFor)('gimp', platform, { gimpClientPath: clientPath });
90
+ }
91
+ else {
92
+ spec = (0, mcpCatalog_1.serverSpecFor)(id, platform);
93
+ }
82
94
  // Idempotent — already the catalog spec, nothing to do.
83
95
  if (entry.command === spec.command && _argsEqual(entry.args, spec.args))
84
96
  continue;
@@ -91,7 +103,7 @@ function migrateCreativeMcpEntries(root, platform, log) {
91
103
  changed = true;
92
104
  log?.(id === 'blender'
93
105
  ? 'ConfigManager: migrated blender MCP server to the Blender Lab client'
94
- : 'ConfigManager: migrated gimp MCP server to the git-based uv run client');
106
+ : 'ConfigManager: migrated gimp MCP server to the locally-installed client (uv run)');
95
107
  }
96
108
  if (changed) {
97
109
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"mcpCatalogMigrate.js","sourceRoot":"","sources":["../../src/core/mcpCatalogMigrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcpCatalogMigrate.js","sourceRoot":"","sources":["../../src/core/mcpCatalogMigrate.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "autodev-cli",
3
- "version": "1.4.151",
3
+ "version": "1.4.152",
4
4
  "description": "AutoAIDev CLI — autonomous AI task loop with VS Code / Cursor launcher",
5
5
  "author": "Peter Ivanov <peter@microweber.com>",
6
6
  "license": "MIT",