godot-cli 0.19.0 → 0.20.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/CHANGELOG.md CHANGED
@@ -4,6 +4,13 @@ All notable changes to `godot-cli` are documented in this file.
4
4
 
5
5
  ## Unreleased
6
6
 
7
+ - **BREAKING (requires a matching addon).** `status` and `wait-for-ready` now probe
8
+ `/api/system-tools/ping` instead of `/api/tools/ping`. The addon's `ping` became a **System** tool
9
+ (owner ruling 2026-07-25, for parity with Unity-MCP), and `McpPluginBuilder` partitions tools by
10
+ `ToolType` into two disjoint registries — so `ping` no longer answers on the standard tool route at
11
+ all. Pair this CLI with an addon of the same release; against an OLDER addon (where `ping` is still
12
+ Standard) both commands report a healthy editor as unreachable. There is deliberately no fallback
13
+ probe, matching the Unity CLI, which has always probed the system route.
7
14
  - `install-extension <id> [path]` — install a Godot-MCP **extension** (an optional AI-tool-family package)
8
15
  into a Godot C# project: resolve `<id>` from the shared catalog, add/update its `<PackageReference>` in
9
16
  the project `.csproj` (added when absent, version-bumped only when newer, no-op when up to date), then
package/README.md CHANGED
@@ -140,16 +140,24 @@ Building first guarantees the assembly is present when the addon is instantiated
140
140
 
141
141
  ### Server URL resolution (`run-tool` / `status` / `wait-for-ready`)
142
142
 
143
- Unlike Unity, the Godot plugin is a **server-less client** whose persisted config lives in `user://`
144
- (outside the project tree), so there is no deterministic project-path port hash. The server base URL is
145
- resolved as:
143
+ The server base URL a tool call POSTs to (`<base>/api/tools/<name>`, or
144
+ `<base>/api/system-tools/<name>` for system tools `status` / `wait-for-ready` probe the system
145
+ tool `ping`) is resolved as:
146
146
 
147
147
  1. `--url <url>` (explicit override).
148
148
  2. `GODOT_MCP_HOST` env (Custom-mode host).
149
- 3. `GODOT_MCP_CLOUD_URL` env / Cloud mode cloud base (`https://ai-game.dev`).
150
- 4. Default custom host (`http://localhost:8080`).
151
-
152
- Pass `--url http://localhost:<port>` to target a local/self-hosted server.
149
+ 3. `GODOT_MCP_CLOUD_URL` env the cloud **`/mcp` hub** URL (`/mcp` is appended if absent).
150
+ 4. `GODOT_MCP_CONNECTION_MODE=Cloud` the default cloud hub `https://ai-game.dev/mcp`.
151
+ 5. The **enrolled project marker** (`.ai-game-dev/project.json` `serverTarget`, written by
152
+ `install-plugin --enroll`): a hosted target routes to its `/mcp` hub, a `localhost` target is used
153
+ verbatim. This makes an **enrolled cloud project reachable with zero env config** — the persisted
154
+ cloud credential (project store, then `~/.ai-game-dev/credentials.json`) is used automatically.
155
+ 6. Local fallback: `http://localhost:<derived-port>`, the deterministic v2 project-path port the
156
+ editor addon binds locally (a marker `portOverride` wins over the hash-derived port).
157
+
158
+ The cloud paths carry the `/mcp` hub segment so the request reaches the hub rather than the cloud
159
+ backend (which serves no `/api/tools/*`). Pass `--url http://localhost:<port>` to target a
160
+ local/self-hosted server explicitly.
153
161
 
154
162
  ![divider](https://github.com/IvanMurzak/Unity-MCP/blob/main/docs/img/promo/hazzard-divider.svg?raw=true)
155
163
 
@@ -192,8 +200,9 @@ The command writes a `SKILL.md`-per-tool-family directory (a `godot-mcp/` overvi
192
200
  families. It is **idempotent** — re-running rewrites the same bytes.
193
201
 
194
202
  Unlike the Unity CLI — which POSTs to a running editor's `/api/system-tools/unity-skill-generate`
195
- endpoint — the Godot CLI generates the files **locally** from a built-in catalog: the Godot MCP server
196
- exposes no skill-generate HTTP endpoint, so no server or running editor is required. (The addon
203
+ endpoint — the Godot CLI generates the files **locally** from a built-in catalog, so no server and no
204
+ running editor are required. (The addon now *also* exposes `godot-skill-generate` on
205
+ `/api/system-tools/`, but that path needs a booted editor; local generation is the server-less one.) (The addon
197
206
  *additionally* auto-generates skills in-process on plugin boot via
198
207
  `GodotMcpConnection.Start` → `GenerateSkillFilesIfNeeded`; the CLI command is the
199
208
  server-less, scriptable path that does not need a live editor.)
@@ -1,4 +1,4 @@
1
- import { CLOUD_MCP_URL, DEFAULT_CUSTOM_HOST } from '../utils/connection.js';
1
+ import { CLOUD_MCP_URL } from '../utils/connection.js';
2
2
  import type { SetupMcpOptions, SetupMcpResult } from './types.js';
3
3
  /**
4
4
  * Decide whether `setup-mcp` writes a static `Authorization: Bearer` header for a
@@ -41,4 +41,4 @@ export declare function shouldWriteAuthHeader(input: {
41
41
  export declare function setupMcp(opts: SetupMcpOptions): Promise<SetupMcpResult>;
42
42
  /** List every agent id known to `setupMcp`. */
43
43
  export declare function listAgentIds(): string[];
44
- export { CLOUD_MCP_URL, DEFAULT_CUSTOM_HOST };
44
+ export { CLOUD_MCP_URL };
@@ -1,6 +1,6 @@
1
1
  import * as path from 'path';
2
2
  import { pinUrl } from '@baizor/gamedev-cli-core';
3
- import { CLOUD_MCP_URL, DEFAULT_CUSTOM_HOST, ENV_HOST, ENV_TOKEN, MCP_HUB_PATH, } from '../utils/connection.js';
3
+ import { CLOUD_MCP_URL, ENV_HOST, ENV_TOKEN, MCP_HUB_PATH, } from '../utils/connection.js';
4
4
  import { getAgentById, getAgentIds, writeJsonAgentConfig, writeTomlAgentConfig, MCP_SERVER_NAME, } from '../utils/agents.js';
5
5
  import { derivePinV2 } from '../utils/project-identity.js';
6
6
  import { emitProgress } from './progress.js';
@@ -191,6 +191,6 @@ export async function setupMcp(opts) {
191
191
  export function listAgentIds() {
192
192
  return getAgentIds();
193
193
  }
194
- // Re-export the constants so the CLI command can surface the default URL in help.
195
- export { CLOUD_MCP_URL, DEFAULT_CUSTOM_HOST };
194
+ // Re-export the constant so the CLI command can surface the default URL in help.
195
+ export { CLOUD_MCP_URL };
196
196
  //# sourceMappingURL=setup-mcp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup-mcp.js","sourceRoot":"","sources":["../../src/lib/setup-mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup-mcp.js","sourceRoot":"","sources":["../../src/lib/setup-mcp.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,7 @@
20
20
  */
21
21
  export const ADDON_PACKAGE_REFERENCES = [
22
22
  { id: 'com.IvanMurzak.ReflectorNet', version: '5.3.2' },
23
- { id: 'com.IvanMurzak.McpPlugin', version: '7.3.0' },
23
+ { id: 'com.IvanMurzak.McpPlugin', version: '7.5.0' },
24
24
  ];
25
25
  /**
26
26
  * The exact `<EmbeddedResource>`s the consumer's project `.csproj` needs, single-sourced
@@ -4,8 +4,6 @@ export declare const DEFAULT_CLOUD_BASE_URL = "https://ai-game.dev";
4
4
  export declare const MCP_HUB_PATH = "/mcp";
5
5
  /** Resolved cloud MCP-client URL (base + /mcp). */
6
6
  export declare const CLOUD_MCP_URL = "https://ai-game.dev/mcp";
7
- /** Default custom-mode host (GodotMcpConfig.DefaultCustomHost). */
8
- export declare const DEFAULT_CUSTOM_HOST = "http://localhost:8080";
9
7
  export declare const ENV_CLOUD_URL = "GODOT_MCP_CLOUD_URL";
10
8
  export declare const ENV_HOST = "GODOT_MCP_HOST";
11
9
  export declare const ENV_TOKEN = "GODOT_MCP_TOKEN";
@@ -35,19 +33,19 @@ export declare function resolveAndValidateProjectPath(positionalPath: string | u
35
33
  * Resolve the MCP server base URL + auth token for direct-tool-call requests
36
34
  * (the `<base>/api/tools/<name>` HTTP API exposed by a Godot-MCP server).
37
35
  *
38
- * URL priority:
39
- * 1. --url flag (explicit override)
40
- * 2. GODOT_MCP_HOST env (Custom-mode host)
41
- * 3. GODOT_MCP_CLOUD_URL env / Cloud mode → cloud base (https://ai-game.dev)
42
- * 4. default custom host (http://localhost:8080)
36
+ * URL priority — see {@link resolveTargetUrl}. A cloud target carries the `/mcp`
37
+ * hub segment so `<base>/api/tools/<name>` reaches the hub (not the 404'ing
38
+ * backend); a local target is the addon's v2 derived port (or the enrolled
39
+ * marker's recorded localhost target).
43
40
  *
44
41
  * Token priority:
45
42
  * 1. --token flag (explicit override)
46
43
  * 2. GODOT_MCP_TOKEN env
47
- * 3. persisted cloud token (Cloud mode only)the project-local
48
- * `.godot-mcp/credentials.json` (a `--project` login) first, then the shared machine
49
- * store `~/.ai-game-dev/credentials.json` (a default `godot-cli login`), so a
50
- * sign-once-per-machine credential is picked up here too.
44
+ * 3. persisted cloud token (cloud targets only — env Cloud mode OR an enrolled
45
+ * hosted marker) — the project-local `.godot-mcp/credentials.json` (a `--project`
46
+ * login) first, then the shared machine store `~/.ai-game-dev/credentials.json`
47
+ * (a default `godot-cli login`), so a sign-once-per-machine credential is picked
48
+ * up here too. An enrolled cloud project therefore authenticates with zero env config.
51
49
  */
52
50
  export declare function resolveConnection(projectPath: string, options: ConnectionOptions): {
53
51
  url: string;
@@ -4,6 +4,8 @@ import { verbose } from './ui.js';
4
4
  import * as ui from './ui.js';
5
5
  import { readCloudToken } from './credentials.js';
6
6
  import { readMachineAccessToken } from './machine-credentials.js';
7
+ import { deriveProjectIdentityV2 } from './project-identity.js';
8
+ import { readProjectMarker, isLocalhostUrl } from './project-marker.js';
7
9
  // --- Godot MCP connection constants (mirror addons/godot_mcp GodotMcpConfig). ---
8
10
  /** Default hosted cloud base URL (GodotMcpConfig.DefaultCloudBaseUrl). */
9
11
  export const DEFAULT_CLOUD_BASE_URL = 'https://ai-game.dev';
@@ -11,8 +13,6 @@ export const DEFAULT_CLOUD_BASE_URL = 'https://ai-game.dev';
11
13
  export const MCP_HUB_PATH = '/mcp';
12
14
  /** Resolved cloud MCP-client URL (base + /mcp). */
13
15
  export const CLOUD_MCP_URL = `${DEFAULT_CLOUD_BASE_URL}${MCP_HUB_PATH}`;
14
- /** Default custom-mode host (GodotMcpConfig.DefaultCustomHost). */
15
- export const DEFAULT_CUSTOM_HOST = 'http://localhost:8080';
16
16
  // --- Environment-variable names the addon reads (GodotMcpConfig EnvX consts). ---
17
17
  export const ENV_CLOUD_URL = 'GODOT_MCP_CLOUD_URL';
18
18
  export const ENV_HOST = 'GODOT_MCP_HOST';
@@ -73,50 +73,99 @@ function isCloudMode() {
73
73
  const mode = normalizeEnv(process.env[ENV_CONNECTION_MODE]);
74
74
  return mode !== undefined && mode.toLowerCase() === 'cloud';
75
75
  }
76
+ /**
77
+ * Normalize a cloud/hub base URL so it ends in exactly one `/mcp` hub segment
78
+ * (mirrors `setup-mcp`'s `resolveMcpClientUrl`). The mcp-server's REST
79
+ * direct-tool API is reachable ONLY under the `/mcp`-prefixed route — nginx maps
80
+ * `^/mcp(/|$)` to the mcp-server (stripping `/mcp`) while `/api` alone goes to the
81
+ * cloud backend — so a cloud base that LOSES `/mcp` sends `<base>/api/tools/<name>`
82
+ * to the backend, which 404s (defect A). Trailing slash trimmed; an already-`/mcp`
83
+ * base is left as-is (case-insensitive, idempotent).
84
+ */
85
+ function ensureMcpHubPath(baseUrl) {
86
+ const trimmed = baseUrl.replace(/\/$/, '');
87
+ if (trimmed.toLowerCase().endsWith(MCP_HUB_PATH))
88
+ return trimmed;
89
+ return trimmed + MCP_HUB_PATH;
90
+ }
91
+ /**
92
+ * Resolve the base URL a direct-tool-call POSTs to, plus whether that target is
93
+ * the cloud hub. Priority (first match wins):
94
+ * 1. `--url` flag — explicit override, verbatim (trailing slash trimmed).
95
+ * 2. `GODOT_MCP_HOST` env — an explicit Custom-mode host, verbatim.
96
+ * 3. `GODOT_MCP_CLOUD_URL` env — a cloud base, normalized to its `/mcp` hub URL (fix A).
97
+ * 4. `GODOT_MCP_CONNECTION_MODE=Cloud` — the default hosted `/mcp` hub (fix A).
98
+ * 5. Enrolled project marker (`.ai-game-dev/project.json` `serverTarget`) — the
99
+ * ZERO-env-config path (fix B): a hosted target routes to its `/mcp` hub (cloud,
100
+ * so an enrolled project reaches the cloud with no env var set); a localhost
101
+ * target is used verbatim (the derived port enrollment recorded).
102
+ * 6. Local fallback — `http://localhost:<v2-derived-port>`, the deterministic port
103
+ * the addon binds locally (fix B; replaces the dead `http://localhost:8080`). An
104
+ * explicit marker `portOverride` still wins over the hash-derived port.
105
+ */
106
+ function resolveTargetUrl(projectPath, options) {
107
+ if (options.url) {
108
+ const url = options.url.replace(/\/$/, '');
109
+ verbose(`Using explicit --url: ${url}`);
110
+ return { url, isCloud: false };
111
+ }
112
+ const envHost = normalizeEnv(process.env[ENV_HOST]);
113
+ if (envHost) {
114
+ const url = envHost.replace(/\/$/, '');
115
+ verbose(`Using ${ENV_HOST}: ${url}`);
116
+ return { url, isCloud: false };
117
+ }
118
+ const envCloud = normalizeEnv(process.env[ENV_CLOUD_URL]);
119
+ if (envCloud) {
120
+ const url = ensureMcpHubPath(envCloud);
121
+ verbose(`Using ${ENV_CLOUD_URL} hub URL: ${url}`);
122
+ return { url, isCloud: true };
123
+ }
124
+ if (isCloudMode()) {
125
+ verbose(`Using default cloud hub URL: ${CLOUD_MCP_URL}`);
126
+ return { url: CLOUD_MCP_URL, isCloud: true };
127
+ }
128
+ // The enrolled marker (and any port override) is read once here — it backs both
129
+ // the zero-config marker target (5) and the derived-port fallback (6).
130
+ const marker = readProjectMarker(projectPath);
131
+ const rawTarget = marker?.serverTarget;
132
+ const serverTarget = typeof rawTarget === 'string' && rawTarget.trim().length > 0 ? rawTarget.trim() : undefined;
133
+ if (serverTarget) {
134
+ if (isLocalhostUrl(serverTarget)) {
135
+ const url = serverTarget.replace(/\/$/, '');
136
+ verbose(`Using enrolled marker localhost target: ${url}`);
137
+ return { url, isCloud: false };
138
+ }
139
+ const url = ensureMcpHubPath(serverTarget);
140
+ verbose(`Using enrolled marker cloud hub URL: ${url}`);
141
+ return { url, isCloud: true };
142
+ }
143
+ const portOverride = typeof marker?.portOverride === 'number' ? marker.portOverride : null;
144
+ const { port } = deriveProjectIdentityV2(projectPath, portOverride);
145
+ const url = `http://localhost:${port}`;
146
+ verbose(`Using derived local port fallback: ${url}`);
147
+ return { url, isCloud: false };
148
+ }
76
149
  /**
77
150
  * Resolve the MCP server base URL + auth token for direct-tool-call requests
78
151
  * (the `<base>/api/tools/<name>` HTTP API exposed by a Godot-MCP server).
79
152
  *
80
- * URL priority:
81
- * 1. --url flag (explicit override)
82
- * 2. GODOT_MCP_HOST env (Custom-mode host)
83
- * 3. GODOT_MCP_CLOUD_URL env / Cloud mode → cloud base (https://ai-game.dev)
84
- * 4. default custom host (http://localhost:8080)
153
+ * URL priority — see {@link resolveTargetUrl}. A cloud target carries the `/mcp`
154
+ * hub segment so `<base>/api/tools/<name>` reaches the hub (not the 404'ing
155
+ * backend); a local target is the addon's v2 derived port (or the enrolled
156
+ * marker's recorded localhost target).
85
157
  *
86
158
  * Token priority:
87
159
  * 1. --token flag (explicit override)
88
160
  * 2. GODOT_MCP_TOKEN env
89
- * 3. persisted cloud token (Cloud mode only)the project-local
90
- * `.godot-mcp/credentials.json` (a `--project` login) first, then the shared machine
91
- * store `~/.ai-game-dev/credentials.json` (a default `godot-cli login`), so a
92
- * sign-once-per-machine credential is picked up here too.
161
+ * 3. persisted cloud token (cloud targets only — env Cloud mode OR an enrolled
162
+ * hosted marker) — the project-local `.godot-mcp/credentials.json` (a `--project`
163
+ * login) first, then the shared machine store `~/.ai-game-dev/credentials.json`
164
+ * (a default `godot-cli login`), so a sign-once-per-machine credential is picked
165
+ * up here too. An enrolled cloud project therefore authenticates with zero env config.
93
166
  */
94
167
  export function resolveConnection(projectPath, options) {
95
- let url;
96
- if (options.url) {
97
- url = options.url.replace(/\/$/, '');
98
- verbose(`Using explicit --url: ${url}`);
99
- }
100
- else {
101
- const envHost = normalizeEnv(process.env[ENV_HOST]);
102
- const envCloud = normalizeEnv(process.env[ENV_CLOUD_URL]);
103
- if (envHost) {
104
- url = envHost.replace(/\/$/, '');
105
- verbose(`Using ${ENV_HOST}: ${url}`);
106
- }
107
- else if (envCloud) {
108
- url = envCloud.replace(new RegExp(`${MCP_HUB_PATH}$`), '').replace(/\/$/, '');
109
- verbose(`Using ${ENV_CLOUD_URL} base: ${url}`);
110
- }
111
- else if (isCloudMode()) {
112
- url = DEFAULT_CLOUD_BASE_URL;
113
- verbose(`Using default cloud base URL: ${url}`);
114
- }
115
- else {
116
- url = DEFAULT_CUSTOM_HOST;
117
- verbose(`Using default custom host: ${url}`);
118
- }
119
- }
168
+ const { url, isCloud } = resolveTargetUrl(projectPath, options);
120
169
  let token = options.token ?? normalizeEnv(process.env[ENV_TOKEN]);
121
170
  if (options.token) {
122
171
  verbose('Using explicit --token');
@@ -124,7 +173,7 @@ export function resolveConnection(projectPath, options) {
124
173
  else if (token) {
125
174
  verbose(`Using ${ENV_TOKEN}`);
126
175
  }
127
- else if (isCloudMode()) {
176
+ else if (isCloud) {
128
177
  const persisted = readCloudToken(projectPath) ?? readMachineAccessToken();
129
178
  if (persisted) {
130
179
  token = persisted;
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/utils/connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/utils/connection.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export declare const PING_ENDPOINT = "/api/tools/ping";
1
+ export declare const PING_ENDPOINT = "/api/system-tools/ping";
2
2
  export interface ProbeSuccess {
3
3
  ok: true;
4
4
  baseUrl: string;
@@ -10,9 +10,15 @@ export interface ProbeFailure {
10
10
  }
11
11
  export type ProbeResult = ProbeSuccess | ProbeFailure;
12
12
  /**
13
- * Probe a Godot-MCP server's ping endpoint (`<base>/api/tools/ping`).
13
+ * Probe a Godot-MCP server's ping endpoint (`<base>/api/system-tools/ping`).
14
14
  * Returns a structured result. The `ping` tool is registered by the
15
15
  * `Tool_Ping` family (pure-managed, no editor required), so a connected
16
16
  * plugin responds `{ "structured": { "result": "pong" } }`.
17
+ *
18
+ * `ping` is a SYSTEM tool (`ToolType = McpToolType.System`, matching Unity-MCP
19
+ * per the owner ruling of 2026-07-25), and `McpPluginBuilder` partitions tools
20
+ * by `ToolType` into two DISJOINT registries — so it is reachable ONLY on the
21
+ * `/api/system-tools/` surface, never on `/api/tools/`. Both surfaces return the
22
+ * same `{ status, structured }` envelope, so only the route differs.
17
23
  */
18
24
  export declare function probe(baseUrl: string, headers: Record<string, string>, timeoutMs: number): Promise<ProbeResult>;
@@ -1,10 +1,16 @@
1
1
  import { verbose } from './ui.js';
2
- export const PING_ENDPOINT = '/api/tools/ping';
2
+ export const PING_ENDPOINT = '/api/system-tools/ping';
3
3
  /**
4
- * Probe a Godot-MCP server's ping endpoint (`<base>/api/tools/ping`).
4
+ * Probe a Godot-MCP server's ping endpoint (`<base>/api/system-tools/ping`).
5
5
  * Returns a structured result. The `ping` tool is registered by the
6
6
  * `Tool_Ping` family (pure-managed, no editor required), so a connected
7
7
  * plugin responds `{ "structured": { "result": "pong" } }`.
8
+ *
9
+ * `ping` is a SYSTEM tool (`ToolType = McpToolType.System`, matching Unity-MCP
10
+ * per the owner ruling of 2026-07-25), and `McpPluginBuilder` partitions tools
11
+ * by `ToolType` into two DISJOINT registries — so it is reachable ONLY on the
12
+ * `/api/system-tools/` surface, never on `/api/tools/`. Both surfaces return the
13
+ * same `{ status, structured }` envelope, so only the route differs.
8
14
  */
9
15
  export async function probe(baseUrl, headers, timeoutMs) {
10
16
  const endpoint = `${baseUrl}${PING_ENDPOINT}`;
@@ -1 +1 @@
1
- {"version":3,"file":"probe.js","sourceRoot":"","sources":["../../src/utils/probe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,CAAC,MAAM,aAAa,GAAG,iBAAiB,CAAC;AAe/C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,OAAe,EACf,OAA+B,EAC/B,SAAiB;IAEjB,MAAM,QAAQ,GAAG,GAAG,OAAO,GAAG,aAAa,EAAE,CAAC;IAC9C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAE9D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;YACrC,MAAM,EAAE,MAAM;YACd,OAAO;YACP,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,IAAI,IAAa,CAAC;YAClB,IAAI,CAAC;gBAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,IAAI,GAAG,IAAI,CAAC;YAAC,CAAC;YACvD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACrC,CAAC;QAED,OAAO,CAAC,IAAI,OAAO,UAAU,QAAQ,CAAC,MAAM,kBAAkB,CAAC,CAAC;QAChE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;IAC1D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,IAAI,OAAO,IAAI,GAAG,CAAC,CAAC,CAAE,GAAG,CAAC,KAAmC,CAAC,CAAC,CAAC,IAAI,CAAC;QACvG,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC;QAElE,IAAI,MAAc,CAAC;QACnB,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,GAAG,WAAW,CAAC;YACrB,OAAO,CAAC,IAAI,OAAO,mBAAmB,CAAC,CAAC;QAC1C,CAAC;aAAM,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;YACnC,MAAM,GAAG,oBAAoB,CAAC;YAC9B,OAAO,CAAC,IAAI,OAAO,sBAAsB,CAAC,CAAC;QAC7C,CAAC;aAAM,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YACjC,MAAM,GAAG,kBAAkB,CAAC;YAC5B,OAAO,CAAC,IAAI,OAAO,oBAAoB,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1D,OAAO,CAAC,IAAI,OAAO,mBAAmB,MAAM,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC/B,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"probe.js","sourceRoot":"","sources":["../../src/utils/probe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,CAAC,MAAM,aAAa,GAAG,wBAAwB,CAAC;AAetD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,OAAe,EACf,OAA+B,EAC/B,SAAiB;IAEjB,MAAM,QAAQ,GAAG,GAAG,OAAO,GAAG,aAAa,EAAE,CAAC;IAC9C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAE9D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;YACrC,MAAM,EAAE,MAAM;YACd,OAAO;YACP,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,IAAI,IAAa,CAAC;YAClB,IAAI,CAAC;gBAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,IAAI,GAAG,IAAI,CAAC;YAAC,CAAC;YACvD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACrC,CAAC;QAED,OAAO,CAAC,IAAI,OAAO,UAAU,QAAQ,CAAC,MAAM,kBAAkB,CAAC,CAAC;QAChE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;IAC1D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,IAAI,OAAO,IAAI,GAAG,CAAC,CAAC,CAAE,GAAG,CAAC,KAAmC,CAAC,CAAC,CAAC,IAAI,CAAC;QACvG,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC;QAElE,IAAI,MAAc,CAAC;QACnB,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,GAAG,WAAW,CAAC;YACrB,OAAO,CAAC,IAAI,OAAO,mBAAmB,CAAC,CAAC;QAC1C,CAAC;aAAM,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;YACnC,MAAM,GAAG,oBAAoB,CAAC;YAC9B,OAAO,CAAC,IAAI,OAAO,sBAAsB,CAAC,CAAC;QAC7C,CAAC;aAAM,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YACjC,MAAM,GAAG,kBAAkB,CAAC;YAC5B,OAAO,CAAC,IAAI,OAAO,oBAAoB,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1D,OAAO,CAAC,IAAI,OAAO,mBAAmB,MAAM,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC/B,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC"}
@@ -5,7 +5,7 @@
5
5
  * download entirely (offline / CI). Bumping the addon's server pin requires
6
6
  * bumping this in the same PR or the parity test goes red.
7
7
  */
8
- export declare const DEFAULT_SERVER_VERSION = "9.2.0";
8
+ export declare const DEFAULT_SERVER_VERSION = "9.2.2";
9
9
  /** GitHub-release host the server zip + manifest are downloaded from. NOTHING else is trusted. */
10
10
  export declare const TRUSTED_DOWNLOAD_HOST = "github.com";
11
11
  /** The `owner/repo` the shared server releases live under. */
@@ -18,7 +18,7 @@ import { createHash } from 'crypto';
18
18
  * download entirely (offline / CI). Bumping the addon's server pin requires
19
19
  * bumping this in the same PR or the parity test goes red.
20
20
  */
21
- export const DEFAULT_SERVER_VERSION = '9.2.0';
21
+ export const DEFAULT_SERVER_VERSION = '9.2.2';
22
22
  /** GitHub-release host the server zip + manifest are downloaded from. NOTHING else is trusted. */
23
23
  export const TRUSTED_DOWNLOAD_HOST = 'github.com';
24
24
  /** The `owner/repo` the shared server releases live under. */
@@ -13,7 +13,7 @@ export interface SkillFamily {
13
13
  }[];
14
14
  }
15
15
  /**
16
- * The Godot-MCP tool-family catalog. Mirrors the 11 families documented in
16
+ * The Godot-MCP tool-family catalog. Mirrors the 12 families documented in
17
17
  * `Godot-MCP/CLAUDE.md` § Tool families and the `[AiToolType]` classes under
18
18
  * `addons/godot_mcp/Runtime/Tools/` and `addons/godot_mcp/Editor/Tools/`. Tool names are the `[AiTool("<name>")]` identifiers
19
19
  * an MCP client invokes.
@@ -41,6 +41,30 @@ export interface SkillFile {
41
41
  export declare function buildSkillFiles(): SkillFile[];
42
42
  /** Catalog (skills.ts) side of the parity check: the `Tool_<title>` suffixes the CLI advertises. */
43
43
  export declare function catalogToolFamilyClassSuffixes(): string[];
44
+ /**
45
+ * Blank out the non-code spans of a C# source — always `//` line comments and `/* *\/` block comments,
46
+ * and (when `blankStrings`) char + string literals too (regular `"…"` with `\` escapes, verbatim `@"…"`
47
+ * with doubled `""`) — replacing each with a space while preserving newlines so nothing shifts lines.
48
+ *
49
+ * WHY THIS EXISTS: the discovery scans below are TEXT scans over the addon sources, and the addon
50
+ * legitimately embeds C# SAMPLES inside comments and string literals — `Tool_Skills.Create.SkillBody.cs`
51
+ * carries a full `[AiToolType] partial class Tool_Sample { … }` example in its `[AiSkillBody]` markdown so
52
+ * the `godot-skill-create` skill can teach an agent the shape. Scanning the raw text discovers
53
+ * `Tool_Sample` as a real addon family and fails parity against a phantom. Blanking non-code first leaves
54
+ * exactly the real declarations — the same technique (and the same rationale) as the addon's
55
+ * `scripts/check-runtime-boundary.py`, which blanks comments + strings before hunting editor-API tokens.
56
+ *
57
+ * The two scans need DIFFERENT strengths, hence the flag: the family scan matches a declaration
58
+ * (`partial class Tool_X`) so it blanks strings too, while the tool-ID scan matches the QUOTED id in
59
+ * `public const string XToolId = "x"` and would find nothing if strings were blanked. Keeping strings for
60
+ * the id scan is safe: inside an embedded sample the quotes are necessarily escaped (`\"`) or doubled
61
+ * (`""`), neither of which satisfies the `= "<id>"` shape.
62
+ *
63
+ * Deliberately a small single-purpose scanner, not a C# lexer: it covers the constructs this addon uses
64
+ * (line/block comments, regular/verbatim/interpolated strings, escaped quotes, doubled `""`, char
65
+ * literals). Raw string literals (`"""…"""`, C# 11) are not used in this addon and are not handled.
66
+ */
67
+ export declare function stripNonCode(source: string, blankStrings: boolean): string;
44
68
  /**
45
69
  * Resolve the addon's `Tools/` source directories relative to a repo root. The
46
70
  * cross-check passes the Godot-MCP repo root (the directory that contains both
@@ -48,6 +72,23 @@ export declare function catalogToolFamilyClassSuffixes(): string[];
48
72
  * folders (Runtime = pure-managed families, Editor = `#if TOOLS` families).
49
73
  */
50
74
  export declare function addonToolDirs(repoRoot: string): string[];
75
+ /**
76
+ * Every addon `.cs` file under {@link addonToolDirs}, **recursively**.
77
+ *
78
+ * The scan used to be a flat `readdirSync` over the two `Tools/` folders, which made
79
+ * any tool family placed in a SUBFOLDER (the Unity-MCP `API/SystemTool/` layout, and
80
+ * the natural thing to reach for as the family list grows) invisible to both parity
81
+ * checks below. That did not fail the gate — it made it pass VACUOUSLY at the stale
82
+ * counts, which is strictly worse than no gate at all. Discovery is therefore
83
+ * recursive, and nesting is a free organisational choice again.
84
+ *
85
+ * Implemented as an explicit walk rather than `readdirSync(dir, { recursive: true })`
86
+ * so the behaviour is identical on every Node version this package supports
87
+ * (`^20.19.0 || >=22.12.0`) — the `withFileTypes` + `recursive` combination reports
88
+ * the parent directory through differently-named properties across those releases.
89
+ * Returns absolute paths sorted for deterministic ordering.
90
+ */
91
+ export declare function addonToolFiles(repoRoot: string): string[];
51
92
  /**
52
93
  * Addon side of the parity check: discover every tool family declared in the addon
53
94
  * by scanning for `[AiToolType] ... partial class Tool_<Family>` in the `.cs` sources
@@ -55,6 +96,9 @@ export declare function addonToolDirs(repoRoot: string): string[];
55
96
  * (e.g. `Node`, `FileSystem`, `RuntimeErrors`).
56
97
  *
57
98
  * Robustness notes:
99
+ * - The source scan is RECURSIVE (see {@link addonToolFiles}), so a family in a
100
+ * subfolder of `{Runtime,Editor}/Tools/` is discovered rather than silently
101
+ * skipped — a skipped family made the parity assertions pass vacuously.
58
102
  * - Tool families are partial classes split across files (`Tool_RuntimeErrors.cs`,
59
103
  * `Tool_RuntimeErrors.Get.cs`, `Tool_RuntimeErrors.Clear.cs`). Only the base file
60
104
  * carries the `[AiToolType]` attribute, so keying on `[AiToolType]` (not on file
@@ -1,7 +1,7 @@
1
1
  import * as fs from 'fs';
2
2
  import * as path from 'path';
3
3
  /**
4
- * The Godot-MCP tool-family catalog. Mirrors the 11 families documented in
4
+ * The Godot-MCP tool-family catalog. Mirrors the 12 families documented in
5
5
  * `Godot-MCP/CLAUDE.md` § Tool families and the `[AiToolType]` classes under
6
6
  * `addons/godot_mcp/Runtime/Tools/` and `addons/godot_mcp/Editor/Tools/`. Tool names are the `[AiTool("<name>")]` identifiers
7
7
  * an MCP client invokes.
@@ -17,12 +17,19 @@ export const SKILL_FAMILIES = [
17
17
  {
18
18
  id: 'node',
19
19
  title: 'Node',
20
- summary: 'Find, create, modify, reparent, duplicate, and delete nodes in the open scene tree.',
20
+ summary: 'Find, create, modify, reparent, reorder, duplicate, and delete nodes in the open scene tree.',
21
21
  tools: [
22
22
  { name: 'node-find', description: 'Find nodes in the open scene by path, name, or type.' },
23
- { name: 'node-create', description: 'Create a new node (optionally instancing a sub-scene) under a parent.' },
23
+ {
24
+ name: 'node-create',
25
+ description: 'Create a new node (optionally instancing a sub-scene) under a parent, optionally at a specific sibling index.',
26
+ },
24
27
  { name: 'node-modify', description: 'Set properties on an existing node.' },
25
28
  { name: 'node-set-parent', description: 'Reparent a node to a new parent in the scene tree.' },
29
+ {
30
+ name: 'node-reorder',
31
+ description: 'Move a node to a different position among its siblings (child order is layout order in a container).',
32
+ },
26
33
  { name: 'node-duplicate', description: 'Duplicate an existing node.' },
27
34
  { name: 'node-delete', description: 'Delete a node from the scene tree.' },
28
35
  ],
@@ -136,6 +143,21 @@ export const SKILL_FAMILIES = [
136
143
  { name: 'ping', description: 'Return `pong` (or the echoed message) to confirm connectivity.' },
137
144
  ],
138
145
  },
146
+ {
147
+ id: 'skills',
148
+ title: 'Skills',
149
+ summary: 'Author new MCP tools for the project and regenerate the SKILL.md files from the tools the editor currently has registered.',
150
+ tools: [
151
+ {
152
+ name: 'godot-skill-create',
153
+ description: 'Write a new C# (`.cs`) MCP tool file into the project under `res://`. The tool becomes callable after the project is rebuilt (Godot builds C# out-of-band). The file must declare an `[AiToolType]` partial class whose methods carry `[AiTool]`, and every Godot API call must be marshalled onto the editor main thread.',
154
+ },
155
+ {
156
+ name: 'godot-skill-generate',
157
+ description: 'Regenerate every `SKILL.md` from the tools currently registered in the editor, into the selected AI agent\'s skills folder (or a project-relative `path` override).',
158
+ },
159
+ ],
160
+ },
139
161
  ];
140
162
  const ROOT_SKILL_NAME = 'godot-mcp';
141
163
  /**
@@ -242,6 +264,127 @@ export function buildSkillFiles() {
242
264
  export function catalogToolFamilyClassSuffixes() {
243
265
  return SKILL_FAMILIES.map((f) => f.title).sort();
244
266
  }
267
+ /**
268
+ * Blank out the non-code spans of a C# source — always `//` line comments and `/* *\/` block comments,
269
+ * and (when `blankStrings`) char + string literals too (regular `"…"` with `\` escapes, verbatim `@"…"`
270
+ * with doubled `""`) — replacing each with a space while preserving newlines so nothing shifts lines.
271
+ *
272
+ * WHY THIS EXISTS: the discovery scans below are TEXT scans over the addon sources, and the addon
273
+ * legitimately embeds C# SAMPLES inside comments and string literals — `Tool_Skills.Create.SkillBody.cs`
274
+ * carries a full `[AiToolType] partial class Tool_Sample { … }` example in its `[AiSkillBody]` markdown so
275
+ * the `godot-skill-create` skill can teach an agent the shape. Scanning the raw text discovers
276
+ * `Tool_Sample` as a real addon family and fails parity against a phantom. Blanking non-code first leaves
277
+ * exactly the real declarations — the same technique (and the same rationale) as the addon's
278
+ * `scripts/check-runtime-boundary.py`, which blanks comments + strings before hunting editor-API tokens.
279
+ *
280
+ * The two scans need DIFFERENT strengths, hence the flag: the family scan matches a declaration
281
+ * (`partial class Tool_X`) so it blanks strings too, while the tool-ID scan matches the QUOTED id in
282
+ * `public const string XToolId = "x"` and would find nothing if strings were blanked. Keeping strings for
283
+ * the id scan is safe: inside an embedded sample the quotes are necessarily escaped (`\"`) or doubled
284
+ * (`""`), neither of which satisfies the `= "<id>"` shape.
285
+ *
286
+ * Deliberately a small single-purpose scanner, not a C# lexer: it covers the constructs this addon uses
287
+ * (line/block comments, regular/verbatim/interpolated strings, escaped quotes, doubled `""`, char
288
+ * literals). Raw string literals (`"""…"""`, C# 11) are not used in this addon and are not handled.
289
+ */
290
+ export function stripNonCode(source, blankStrings) {
291
+ const out = [];
292
+ let inLine = false;
293
+ let inBlock = false;
294
+ let inString = false; // regular "..."
295
+ let inVerbatim = false; // @"..." (doubled "" is an escaped quote)
296
+ let inChar = false; // '...'
297
+ for (let i = 0; i < source.length; i++) {
298
+ const c = source[i];
299
+ const next = i + 1 < source.length ? source[i + 1] : '';
300
+ if (inLine) {
301
+ out.push(c === '\n' ? '\n' : ' ');
302
+ if (c === '\n')
303
+ inLine = false;
304
+ continue;
305
+ }
306
+ if (inBlock) {
307
+ if (c === '*' && next === '/') {
308
+ out.push(' ');
309
+ i++;
310
+ inBlock = false;
311
+ continue;
312
+ }
313
+ out.push(c === '\n' ? '\n' : ' ');
314
+ continue;
315
+ }
316
+ if (inVerbatim) {
317
+ if (c === '"' && next === '"') {
318
+ out.push(' ');
319
+ i++;
320
+ continue;
321
+ }
322
+ out.push(c === '\n' ? '\n' : ' ');
323
+ if (c === '"')
324
+ inVerbatim = false;
325
+ continue;
326
+ }
327
+ if (inString) {
328
+ if (c === '\\') {
329
+ out.push(' ');
330
+ i++; // consume the escaped char (covers \" and \\)
331
+ continue;
332
+ }
333
+ out.push(c === '\n' ? '\n' : ' ');
334
+ if (c === '"')
335
+ inString = false;
336
+ continue;
337
+ }
338
+ if (inChar) {
339
+ if (c === '\\') {
340
+ out.push(' ');
341
+ i++;
342
+ continue;
343
+ }
344
+ // Preserve newlines like every sibling state does — the documented invariant is that blanking
345
+ // never shifts line numbers, and an unterminated char literal would otherwise swallow one.
346
+ out.push(c === '\n' ? '\n' : ' ');
347
+ if (c === "'")
348
+ inChar = false;
349
+ continue;
350
+ }
351
+ // --- real code ---
352
+ if (c === '/' && next === '/') {
353
+ out.push(' ');
354
+ i++;
355
+ inLine = true;
356
+ continue;
357
+ }
358
+ if (c === '/' && next === '*') {
359
+ out.push(' ');
360
+ i++;
361
+ inBlock = true;
362
+ continue;
363
+ }
364
+ if (blankStrings && c === '@' && next === '"') {
365
+ out.push(' ');
366
+ i++;
367
+ inVerbatim = true;
368
+ continue;
369
+ }
370
+ if (blankStrings && c === '"') {
371
+ out.push(' ');
372
+ inString = true;
373
+ continue;
374
+ }
375
+ if (blankStrings && c === "'") {
376
+ out.push(' ');
377
+ inChar = true;
378
+ continue;
379
+ }
380
+ out.push(c);
381
+ }
382
+ return out.join('');
383
+ }
384
+ /** Read an addon `.cs` file with its non-code spans blanked (see {@link stripNonCode}). */
385
+ function readAddonCode(file, blankStrings) {
386
+ return stripNonCode(fs.readFileSync(file, 'utf-8'), blankStrings);
387
+ }
245
388
  /**
246
389
  * Resolve the addon's `Tools/` source directories relative to a repo root. The
247
390
  * cross-check passes the Godot-MCP repo root (the directory that contains both
@@ -254,6 +397,40 @@ export function addonToolDirs(repoRoot) {
254
397
  path.join(repoRoot, 'addons', 'godot_mcp', 'Editor', 'Tools'),
255
398
  ];
256
399
  }
400
+ /**
401
+ * Every addon `.cs` file under {@link addonToolDirs}, **recursively**.
402
+ *
403
+ * The scan used to be a flat `readdirSync` over the two `Tools/` folders, which made
404
+ * any tool family placed in a SUBFOLDER (the Unity-MCP `API/SystemTool/` layout, and
405
+ * the natural thing to reach for as the family list grows) invisible to both parity
406
+ * checks below. That did not fail the gate — it made it pass VACUOUSLY at the stale
407
+ * counts, which is strictly worse than no gate at all. Discovery is therefore
408
+ * recursive, and nesting is a free organisational choice again.
409
+ *
410
+ * Implemented as an explicit walk rather than `readdirSync(dir, { recursive: true })`
411
+ * so the behaviour is identical on every Node version this package supports
412
+ * (`^20.19.0 || >=22.12.0`) — the `withFileTypes` + `recursive` combination reports
413
+ * the parent directory through differently-named properties across those releases.
414
+ * Returns absolute paths sorted for deterministic ordering.
415
+ */
416
+ export function addonToolFiles(repoRoot) {
417
+ const files = [];
418
+ const walk = (dir) => {
419
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
420
+ const full = path.join(dir, entry.name);
421
+ if (entry.isDirectory())
422
+ walk(full);
423
+ else if (entry.isFile() && entry.name.endsWith('.cs'))
424
+ files.push(full);
425
+ }
426
+ };
427
+ for (const dir of addonToolDirs(repoRoot)) {
428
+ if (!fs.existsSync(dir))
429
+ continue;
430
+ walk(dir);
431
+ }
432
+ return files.sort();
433
+ }
257
434
  /**
258
435
  * Addon side of the parity check: discover every tool family declared in the addon
259
436
  * by scanning for `[AiToolType] ... partial class Tool_<Family>` in the `.cs` sources
@@ -261,6 +438,9 @@ export function addonToolDirs(repoRoot) {
261
438
  * (e.g. `Node`, `FileSystem`, `RuntimeErrors`).
262
439
  *
263
440
  * Robustness notes:
441
+ * - The source scan is RECURSIVE (see {@link addonToolFiles}), so a family in a
442
+ * subfolder of `{Runtime,Editor}/Tools/` is discovered rather than silently
443
+ * skipped — a skipped family made the parity assertions pass vacuously.
264
444
  * - Tool families are partial classes split across files (`Tool_RuntimeErrors.cs`,
265
445
  * `Tool_RuntimeErrors.Get.cs`, `Tool_RuntimeErrors.Clear.cs`). Only the base file
266
446
  * carries the `[AiToolType]` attribute, so keying on `[AiToolType]` (not on file
@@ -288,20 +468,14 @@ export function discoverAddonToolFamilies(repoRoot) {
288
468
  // compound suffix (`Editor`, `Editor_Selection`, ...). First segment = the family.
289
469
  const familyRe = /\[AiToolType[^\]]*\](?:(?!\b(?:class|struct|interface|enum|record)\b)[\s\S])*?\bpartial\s+class\s+Tool_([A-Za-z][A-Za-z0-9]*(?:_[A-Za-z][A-Za-z0-9]*)*)\b/g;
290
470
  const found = new Set();
291
- for (const dir of addonToolDirs(repoRoot)) {
292
- if (!fs.existsSync(dir))
293
- continue;
294
- for (const entry of fs.readdirSync(dir)) {
295
- if (!entry.endsWith('.cs'))
296
- continue;
297
- const src = fs.readFileSync(path.join(dir, entry), 'utf-8');
298
- let m;
299
- familyRe.lastIndex = 0;
300
- while ((m = familyRe.exec(src)) !== null) {
301
- // Attribute a compound sub-tool class (`Tool_Editor_Selection`) to its
302
- // parent family by taking the FIRST `_`-delimited segment (`Editor`).
303
- found.add(m[1].split('_')[0]);
304
- }
471
+ for (const file of addonToolFiles(repoRoot)) {
472
+ const src = readAddonCode(file, /* blankStrings */ true);
473
+ let m;
474
+ familyRe.lastIndex = 0;
475
+ while ((m = familyRe.exec(src)) !== null) {
476
+ // Attribute a compound sub-tool class (`Tool_Editor_Selection`) to its
477
+ // parent family by taking the FIRST `_`-delimited segment (`Editor`).
478
+ found.add(m[1].split('_')[0]);
305
479
  }
306
480
  }
307
481
  return [...found].sort();
@@ -334,18 +508,12 @@ export function catalogToolIds() {
334
508
  export function discoverAddonToolIds(repoRoot) {
335
509
  const toolIdRe = /public\s+const\s+string\s+\w+ToolId\s*=\s*"([a-z][a-z0-9-]*)"/g;
336
510
  const found = new Set();
337
- for (const dir of addonToolDirs(repoRoot)) {
338
- if (!fs.existsSync(dir))
339
- continue;
340
- for (const entry of fs.readdirSync(dir)) {
341
- if (!entry.endsWith('.cs'))
342
- continue;
343
- const src = fs.readFileSync(path.join(dir, entry), 'utf-8');
344
- let m;
345
- toolIdRe.lastIndex = 0;
346
- while ((m = toolIdRe.exec(src)) !== null) {
347
- found.add(m[1]);
348
- }
511
+ for (const file of addonToolFiles(repoRoot)) {
512
+ const src = readAddonCode(file, /* blankStrings */ false);
513
+ let m;
514
+ toolIdRe.lastIndex = 0;
515
+ while ((m = toolIdRe.exec(src)) !== null) {
516
+ found.add(m[1]);
349
517
  }
350
518
  }
351
519
  return [...found].sort();
@@ -1 +1 @@
1
- {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/utils/skills.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/utils/skills.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "godot-cli",
3
- "version": "0.19.0",
3
+ "version": "0.20.0",
4
4
  "description": "Cross-platform CLI tool for Godot-MCP (Skills & MCP). Resolves and launches the Godot editor with MCP connection env vars, runs MCP/system tools over HTTP, probes server health, configures AI agents (Claude Code, Cursor, VS Code, …), and enables/disables the godot_mcp addon. Works with Claude Code, Cursor, Copilot, and any MCP client.",
5
5
  "type": "module",
6
6
  "main": "dist/lib.js",