godot-cli 0.9.0 → 0.11.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.
@@ -13,10 +13,17 @@ export interface SkillFamily {
13
13
  }[];
14
14
  }
15
15
  /**
16
- * The Godot-MCP tool-family catalog. Mirrors the 10 families documented in
16
+ * The Godot-MCP tool-family catalog. Mirrors the 11 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.
20
+ *
21
+ * Each family's `title` is the addon's `Tool_<title>` class-name suffix (e.g.
22
+ * `FileSystem` → `Tool_FileSystem`, `RuntimeErrors` → `Tool_RuntimeErrors`). That
23
+ * join key is what the CI cross-check (`discoverAddonToolFamilies`, exercised by
24
+ * `cli/tests/skills-addon-parity.test.ts`) uses to fail the build if this catalog
25
+ * ever drifts from the addon's actual `[AiToolType]` classes — so a new addon tool
26
+ * family cannot ship without a matching catalog entry here.
20
27
  */
21
28
  export declare const SKILL_FAMILIES: readonly SkillFamily[];
22
29
  /** A single skill file the generator will write (path is relative to the skills dir). */
@@ -32,3 +39,53 @@ export interface SkillFile {
32
39
  * bytes, so writing them is idempotent.
33
40
  */
34
41
  export declare function buildSkillFiles(): SkillFile[];
42
+ /** Catalog (skills.ts) side of the parity check: the `Tool_<title>` suffixes the CLI advertises. */
43
+ export declare function catalogToolFamilyClassSuffixes(): string[];
44
+ /**
45
+ * Resolve the addon's `Tools/` source directories relative to a repo root. The
46
+ * cross-check passes the Godot-MCP repo root (the directory that contains both
47
+ * `cli/` and `addons/`); each tool-family base file lives under one of these two
48
+ * folders (Runtime = pure-managed families, Editor = `#if TOOLS` families).
49
+ */
50
+ export declare function addonToolDirs(repoRoot: string): string[];
51
+ /**
52
+ * Addon side of the parity check: discover every tool family declared in the addon
53
+ * by scanning for `[AiToolType] ... partial class Tool_<Family>` in the `.cs` sources
54
+ * under the addon `Tools/` directories. Returns the sorted set of `<Family>` suffixes
55
+ * (e.g. `Node`, `FileSystem`, `RuntimeErrors`).
56
+ *
57
+ * Robustness notes:
58
+ * - Tool families are partial classes split across files (`Tool_RuntimeErrors.cs`,
59
+ * `Tool_RuntimeErrors.Get.cs`, `Tool_RuntimeErrors.Clear.cs`). Only the base file
60
+ * carries the `[AiToolType]` attribute, so keying on `[AiToolType]` (not on file
61
+ * names) collapses each multi-file family to ONE entry automatically.
62
+ * - The regex tolerates other attributes/whitespace between `[AiToolType]` and the
63
+ * class declaration, and an optional access modifier on the class.
64
+ * - Sub-tool families use a COMPOUND class name (`Tool_Editor_Selection` adds the
65
+ * `editor-selection-*` tools to the `editor` family). We capture the whole
66
+ * `Tool_<Seg1>[_<Seg2>...]` suffix and attribute it to its FIRST segment
67
+ * (`Tool_Editor_Selection` → `Editor`), so a sub-tool class lands in its parent
68
+ * family instead of being silently dropped (which would happen if the capture
69
+ * stopped at the first `_`). The trailing `Set<string>` dedups the parent family
70
+ * when both `Tool_Editor` and `Tool_Editor_Selection` exist.
71
+ * - The attribute MUST bind to its IMMEDIATELY-following type declaration: the gap
72
+ * between `[AiToolType]` and `Tool_<Family>` may contain only other attributes,
73
+ * doc comments, and whitespace — never an intervening type keyword. This stops a
74
+ * stray `[AiToolType]` on a non-`Tool_` type from being misattributed to a later
75
+ * `Tool_` class in the same file.
76
+ */
77
+ export declare function discoverAddonToolFamilies(repoRoot: string): string[];
78
+ /** Catalog (skills.ts) side of the per-tool parity check: every advertised tool name, sorted. */
79
+ export declare function catalogToolIds(): string[];
80
+ /**
81
+ * Addon side of the per-tool parity check: discover every tool id declared in the
82
+ * addon by scanning for `public const string <Name>ToolId = "<tool-id>"` in the
83
+ * `.cs` sources under the addon `Tools/` directories. Returns the sorted, deduped
84
+ * set of tool ids (e.g. `node-find`, `script-validate`, `runtime-errors-get`).
85
+ *
86
+ * Each tool family declares one `public const string <Name>ToolId = "<id>"` per
87
+ * tool (the `[AiTool(<Name>ToolId, ...)]` identifier an MCP client invokes). The
88
+ * regex captures the quoted kebab-case id; the `Set` dedups in case a constant is
89
+ * ever referenced twice. Mirrors `discoverAddonToolFamilies`'s addon-source scan.
90
+ */
91
+ export declare function discoverAddonToolIds(repoRoot: string): string[];
@@ -1,25 +1,17 @@
1
- // Godot-MCP skill catalog + SKILL.md content generation.
2
- //
3
- // The Godot analog of Unity-MCP's server-side skill generation. Unlike the
4
- // Unity CLI — which POSTs to a running editor's `/api/system-tools/unity-skill-
5
- // generate` endpoint to have the engine emit skill files — the Godot MCP server
6
- // exposes NO skill-generate HTTP endpoint, and the Godot addon only auto-
7
- // generates skills in-process on plugin boot (`GodotMcpConnection.Start` →
8
- // `GenerateSkillFilesIfNeeded`). That in-process path requires a live, connected
9
- // editor and writes into `user://`-derived locations the CLI cannot drive.
10
- //
11
- // So `godot-cli setup-skills` generates the skill files LOCALLY from this
12
- // catalog: a `SKILL.md`-per-tool-family directory written under the selected
13
- // agent's `skillsPath`, with content describing the godot_mcp addon's tool
14
- // families (NOT Unity's tool names). This makes the command self-contained — no
15
- // server, no running editor — and idempotent (re-running rewrites the same
16
- // bytes). The catalog mirrors `Godot-MCP/CLAUDE.md` § Tool families; keep the
17
- // two in lockstep when the addon's tool surface changes.
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
18
3
  /**
19
- * The Godot-MCP tool-family catalog. Mirrors the 10 families documented in
4
+ * The Godot-MCP tool-family catalog. Mirrors the 11 families documented in
20
5
  * `Godot-MCP/CLAUDE.md` § Tool families and the `[AiToolType]` classes under
21
6
  * `addons/godot_mcp/Runtime/Tools/` and `addons/godot_mcp/Editor/Tools/`. Tool names are the `[AiTool("<name>")]` identifiers
22
7
  * an MCP client invokes.
8
+ *
9
+ * Each family's `title` is the addon's `Tool_<title>` class-name suffix (e.g.
10
+ * `FileSystem` → `Tool_FileSystem`, `RuntimeErrors` → `Tool_RuntimeErrors`). That
11
+ * join key is what the CI cross-check (`discoverAddonToolFamilies`, exercised by
12
+ * `cli/tests/skills-addon-parity.test.ts`) uses to fail the build if this catalog
13
+ * ever drifts from the addon's actual `[AiToolType]` classes — so a new addon tool
14
+ * family cannot ship without a matching catalog entry here.
23
15
  */
24
16
  export const SKILL_FAMILIES = [
25
17
  {
@@ -77,6 +69,7 @@ export const SKILL_FAMILIES = [
77
69
  { name: 'script-read', description: 'Read the source of a script file.' },
78
70
  { name: 'script-create', description: 'Create a new script file.' },
79
71
  { name: 'script-update', description: 'Replace or patch the contents of a script.' },
72
+ { name: 'script-validate', description: 'Validate GDScript (.gd) files and return structured parse/compile diagnostics.' },
80
73
  { name: 'script-delete', description: 'Delete a script file.' },
81
74
  { name: 'script-attach-to-node', description: 'Attach a script to a node in the scene.' },
82
75
  ],
@@ -120,6 +113,21 @@ export const SKILL_FAMILIES = [
120
113
  { name: 'reflection-method-call', description: 'Invoke a method reflectively with serialized arguments.' },
121
114
  ],
122
115
  },
116
+ {
117
+ id: 'runtime-errors',
118
+ title: 'RuntimeErrors',
119
+ summary: 'Poll errors raised inside the RUNNING game (NOT the editor) — GDScript runtime errors, push_error/push_warning, shader errors, and C# unhandled/unobserved-Task exceptions, with multi-frame GDScript backtraces on Godot 4.5+.',
120
+ tools: [
121
+ {
122
+ name: 'runtime-errors-get',
123
+ description: 'Read captured in-game runtime errors (oldest-first, newest-kept page). Returns `available:false` when the game never enabled runtime-error capture, so an empty list is never mistaken for health; poll only new errors by passing the previous result\'s `highestSequence` as `sinceSequence`.',
124
+ },
125
+ {
126
+ name: 'runtime-errors-clear',
127
+ description: 'Clear the captured in-game runtime-error buffer (a no-op when capture is not enabled). The monotonic sequence counter is preserved, so a pre-clear `sinceSequence` poll still behaves correctly.',
128
+ },
129
+ ],
130
+ },
123
131
  {
124
132
  id: 'ping',
125
133
  title: 'Ping',
@@ -213,4 +221,133 @@ export function buildSkillFiles() {
213
221
  }
214
222
  return files;
215
223
  }
224
+ // ---------------------------------------------------------------------------
225
+ // CI cross-check: catalog ⇄ addon tool-family parity
226
+ //
227
+ // `SKILL_FAMILIES` above is hand-maintained, but it must stay in lockstep with
228
+ // the addon's ACTUAL tool families — the `[AiToolType] partial class Tool_<Family>`
229
+ // classes under `addons/godot_mcp/{Runtime,Editor}/Tools/`. When a new family ships
230
+ // in the addon (as `runtime-errors` did in #161/#162) but nobody updates this
231
+ // catalog, the CLI silently stops advertising it. The parity test
232
+ // (`cli/tests/skills-addon-parity.test.ts`) compares the two sets and fails CI on
233
+ // any divergence, so the catalog can never quietly fall behind the addon again.
234
+ //
235
+ // Join key: each catalog family's `title` is exactly the addon class-name suffix
236
+ // (`Tool_<title>`). A naive PascalCase→kebab transform would NOT work — the addon
237
+ // has `Tool_FileSystem` (catalog id `filesystem`, no hyphen) and `Tool_RuntimeErrors`
238
+ // (catalog id `runtime-errors`, hyphenated) — so we match on the class-name suffix,
239
+ // not on a derived slug.
240
+ // ---------------------------------------------------------------------------
241
+ /** Catalog (skills.ts) side of the parity check: the `Tool_<title>` suffixes the CLI advertises. */
242
+ export function catalogToolFamilyClassSuffixes() {
243
+ return SKILL_FAMILIES.map((f) => f.title).sort();
244
+ }
245
+ /**
246
+ * Resolve the addon's `Tools/` source directories relative to a repo root. The
247
+ * cross-check passes the Godot-MCP repo root (the directory that contains both
248
+ * `cli/` and `addons/`); each tool-family base file lives under one of these two
249
+ * folders (Runtime = pure-managed families, Editor = `#if TOOLS` families).
250
+ */
251
+ export function addonToolDirs(repoRoot) {
252
+ return [
253
+ path.join(repoRoot, 'addons', 'godot_mcp', 'Runtime', 'Tools'),
254
+ path.join(repoRoot, 'addons', 'godot_mcp', 'Editor', 'Tools'),
255
+ ];
256
+ }
257
+ /**
258
+ * Addon side of the parity check: discover every tool family declared in the addon
259
+ * by scanning for `[AiToolType] ... partial class Tool_<Family>` in the `.cs` sources
260
+ * under the addon `Tools/` directories. Returns the sorted set of `<Family>` suffixes
261
+ * (e.g. `Node`, `FileSystem`, `RuntimeErrors`).
262
+ *
263
+ * Robustness notes:
264
+ * - Tool families are partial classes split across files (`Tool_RuntimeErrors.cs`,
265
+ * `Tool_RuntimeErrors.Get.cs`, `Tool_RuntimeErrors.Clear.cs`). Only the base file
266
+ * carries the `[AiToolType]` attribute, so keying on `[AiToolType]` (not on file
267
+ * names) collapses each multi-file family to ONE entry automatically.
268
+ * - The regex tolerates other attributes/whitespace between `[AiToolType]` and the
269
+ * class declaration, and an optional access modifier on the class.
270
+ * - Sub-tool families use a COMPOUND class name (`Tool_Editor_Selection` adds the
271
+ * `editor-selection-*` tools to the `editor` family). We capture the whole
272
+ * `Tool_<Seg1>[_<Seg2>...]` suffix and attribute it to its FIRST segment
273
+ * (`Tool_Editor_Selection` → `Editor`), so a sub-tool class lands in its parent
274
+ * family instead of being silently dropped (which would happen if the capture
275
+ * stopped at the first `_`). The trailing `Set<string>` dedups the parent family
276
+ * when both `Tool_Editor` and `Tool_Editor_Selection` exist.
277
+ * - The attribute MUST bind to its IMMEDIATELY-following type declaration: the gap
278
+ * between `[AiToolType]` and `Tool_<Family>` may contain only other attributes,
279
+ * doc comments, and whitespace — never an intervening type keyword. This stops a
280
+ * stray `[AiToolType]` on a non-`Tool_` type from being misattributed to a later
281
+ * `Tool_` class in the same file.
282
+ */
283
+ export function discoverAddonToolFamilies(repoRoot) {
284
+ // `[AiToolType]` (possibly with args), then ONLY attributes / doc-comments /
285
+ // whitespace (no intervening `class`/`struct`/`interface`/`enum`/`record`
286
+ // keyword — `(?:(?!\b(?:class|struct|interface|enum|record)\b)[\s\S])*?` forbids
287
+ // crossing one), then `partial class Tool_<Family>` where `<Family>` is the full
288
+ // compound suffix (`Editor`, `Editor_Selection`, ...). First segment = the family.
289
+ 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
+ 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
+ }
305
+ }
306
+ }
307
+ return [...found].sort();
308
+ }
309
+ // ---------------------------------------------------------------------------
310
+ // CI cross-check: catalog ⇄ addon tool-ID parity (the per-TOOL drift-guard)
311
+ //
312
+ // `discoverAddonToolFamilies` above guards the FAMILY set, but a tool can be
313
+ // added to an EXISTING family in the addon (as `script-validate` was added to
314
+ // `Tool_Script`) without changing the family set — so the family cross-check
315
+ // passes while the catalog silently lacks the new tool. These two helpers diff
316
+ // the catalog's tool-ID set against the addon's actual `*ToolId` constants so a
317
+ // missing/extra individual tool fails CI too (`skills-addon-parity.test.ts`).
318
+ // ---------------------------------------------------------------------------
319
+ /** Catalog (skills.ts) side of the per-tool parity check: every advertised tool name, sorted. */
320
+ export function catalogToolIds() {
321
+ return SKILL_FAMILIES.flatMap((f) => f.tools.map((t) => t.name)).sort();
322
+ }
323
+ /**
324
+ * Addon side of the per-tool parity check: discover every tool id declared in the
325
+ * addon by scanning for `public const string <Name>ToolId = "<tool-id>"` in the
326
+ * `.cs` sources under the addon `Tools/` directories. Returns the sorted, deduped
327
+ * set of tool ids (e.g. `node-find`, `script-validate`, `runtime-errors-get`).
328
+ *
329
+ * Each tool family declares one `public const string <Name>ToolId = "<id>"` per
330
+ * tool (the `[AiTool(<Name>ToolId, ...)]` identifier an MCP client invokes). The
331
+ * regex captures the quoted kebab-case id; the `Set` dedups in case a constant is
332
+ * ever referenced twice. Mirrors `discoverAddonToolFamilies`'s addon-source scan.
333
+ */
334
+ export function discoverAddonToolIds(repoRoot) {
335
+ const toolIdRe = /public\s+const\s+string\s+\w+ToolId\s*=\s*"([a-z][a-z0-9-]*)"/g;
336
+ 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
+ }
349
+ }
350
+ }
351
+ return [...found].sort();
352
+ }
216
353
  //# sourceMappingURL=skills.js.map
@@ -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.9.0",
3
+ "version": "0.11.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",
@@ -67,6 +67,7 @@
67
67
  },
68
68
  "devDependencies": {
69
69
  "@types/node": "^22.15.0",
70
+ "@vitest/coverage-v8": "^4.1.8",
70
71
  "typescript": "^5.8.0",
71
72
  "vitest": "^4.1.8"
72
73
  }