godot-cli 0.8.1 → 0.10.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/utils/skills.d.ts +44 -1
- package/dist/utils/skills.js +110 -18
- package/dist/utils/skills.js.map +1 -1
- package/package.json +2 -1
package/dist/utils/skills.d.ts
CHANGED
|
@@ -13,10 +13,17 @@ export interface SkillFamily {
|
|
|
13
13
|
}[];
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
|
-
* The Godot-MCP tool-family catalog. Mirrors the
|
|
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,39 @@ 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[];
|
package/dist/utils/skills.js
CHANGED
|
@@ -1,25 +1,17 @@
|
|
|
1
|
-
|
|
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
|
|
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
|
{
|
|
@@ -120,6 +112,21 @@ export const SKILL_FAMILIES = [
|
|
|
120
112
|
{ name: 'reflection-method-call', description: 'Invoke a method reflectively with serialized arguments.' },
|
|
121
113
|
],
|
|
122
114
|
},
|
|
115
|
+
{
|
|
116
|
+
id: 'runtime-errors',
|
|
117
|
+
title: 'RuntimeErrors',
|
|
118
|
+
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+.',
|
|
119
|
+
tools: [
|
|
120
|
+
{
|
|
121
|
+
name: 'runtime-errors-get',
|
|
122
|
+
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`.',
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
name: 'runtime-errors-clear',
|
|
126
|
+
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.',
|
|
127
|
+
},
|
|
128
|
+
],
|
|
129
|
+
},
|
|
123
130
|
{
|
|
124
131
|
id: 'ping',
|
|
125
132
|
title: 'Ping',
|
|
@@ -213,4 +220,89 @@ export function buildSkillFiles() {
|
|
|
213
220
|
}
|
|
214
221
|
return files;
|
|
215
222
|
}
|
|
223
|
+
// ---------------------------------------------------------------------------
|
|
224
|
+
// CI cross-check: catalog ⇄ addon tool-family parity
|
|
225
|
+
//
|
|
226
|
+
// `SKILL_FAMILIES` above is hand-maintained, but it must stay in lockstep with
|
|
227
|
+
// the addon's ACTUAL tool families — the `[AiToolType] partial class Tool_<Family>`
|
|
228
|
+
// classes under `addons/godot_mcp/{Runtime,Editor}/Tools/`. When a new family ships
|
|
229
|
+
// in the addon (as `runtime-errors` did in #161/#162) but nobody updates this
|
|
230
|
+
// catalog, the CLI silently stops advertising it. The parity test
|
|
231
|
+
// (`cli/tests/skills-addon-parity.test.ts`) compares the two sets and fails CI on
|
|
232
|
+
// any divergence, so the catalog can never quietly fall behind the addon again.
|
|
233
|
+
//
|
|
234
|
+
// Join key: each catalog family's `title` is exactly the addon class-name suffix
|
|
235
|
+
// (`Tool_<title>`). A naive PascalCase→kebab transform would NOT work — the addon
|
|
236
|
+
// has `Tool_FileSystem` (catalog id `filesystem`, no hyphen) and `Tool_RuntimeErrors`
|
|
237
|
+
// (catalog id `runtime-errors`, hyphenated) — so we match on the class-name suffix,
|
|
238
|
+
// not on a derived slug.
|
|
239
|
+
// ---------------------------------------------------------------------------
|
|
240
|
+
/** Catalog (skills.ts) side of the parity check: the `Tool_<title>` suffixes the CLI advertises. */
|
|
241
|
+
export function catalogToolFamilyClassSuffixes() {
|
|
242
|
+
return SKILL_FAMILIES.map((f) => f.title).sort();
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Resolve the addon's `Tools/` source directories relative to a repo root. The
|
|
246
|
+
* cross-check passes the Godot-MCP repo root (the directory that contains both
|
|
247
|
+
* `cli/` and `addons/`); each tool-family base file lives under one of these two
|
|
248
|
+
* folders (Runtime = pure-managed families, Editor = `#if TOOLS` families).
|
|
249
|
+
*/
|
|
250
|
+
export function addonToolDirs(repoRoot) {
|
|
251
|
+
return [
|
|
252
|
+
path.join(repoRoot, 'addons', 'godot_mcp', 'Runtime', 'Tools'),
|
|
253
|
+
path.join(repoRoot, 'addons', 'godot_mcp', 'Editor', 'Tools'),
|
|
254
|
+
];
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Addon side of the parity check: discover every tool family declared in the addon
|
|
258
|
+
* by scanning for `[AiToolType] ... partial class Tool_<Family>` in the `.cs` sources
|
|
259
|
+
* under the addon `Tools/` directories. Returns the sorted set of `<Family>` suffixes
|
|
260
|
+
* (e.g. `Node`, `FileSystem`, `RuntimeErrors`).
|
|
261
|
+
*
|
|
262
|
+
* Robustness notes:
|
|
263
|
+
* - Tool families are partial classes split across files (`Tool_RuntimeErrors.cs`,
|
|
264
|
+
* `Tool_RuntimeErrors.Get.cs`, `Tool_RuntimeErrors.Clear.cs`). Only the base file
|
|
265
|
+
* carries the `[AiToolType]` attribute, so keying on `[AiToolType]` (not on file
|
|
266
|
+
* names) collapses each multi-file family to ONE entry automatically.
|
|
267
|
+
* - The regex tolerates other attributes/whitespace between `[AiToolType]` and the
|
|
268
|
+
* class declaration, and an optional access modifier on the class.
|
|
269
|
+
* - Sub-tool families use a COMPOUND class name (`Tool_Editor_Selection` adds the
|
|
270
|
+
* `editor-selection-*` tools to the `editor` family). We capture the whole
|
|
271
|
+
* `Tool_<Seg1>[_<Seg2>...]` suffix and attribute it to its FIRST segment
|
|
272
|
+
* (`Tool_Editor_Selection` → `Editor`), so a sub-tool class lands in its parent
|
|
273
|
+
* family instead of being silently dropped (which would happen if the capture
|
|
274
|
+
* stopped at the first `_`). The trailing `Set<string>` dedups the parent family
|
|
275
|
+
* when both `Tool_Editor` and `Tool_Editor_Selection` exist.
|
|
276
|
+
* - The attribute MUST bind to its IMMEDIATELY-following type declaration: the gap
|
|
277
|
+
* between `[AiToolType]` and `Tool_<Family>` may contain only other attributes,
|
|
278
|
+
* doc comments, and whitespace — never an intervening type keyword. This stops a
|
|
279
|
+
* stray `[AiToolType]` on a non-`Tool_` type from being misattributed to a later
|
|
280
|
+
* `Tool_` class in the same file.
|
|
281
|
+
*/
|
|
282
|
+
export function discoverAddonToolFamilies(repoRoot) {
|
|
283
|
+
// `[AiToolType]` (possibly with args), then ONLY attributes / doc-comments /
|
|
284
|
+
// whitespace (no intervening `class`/`struct`/`interface`/`enum`/`record`
|
|
285
|
+
// keyword — `(?:(?!\b(?:class|struct|interface|enum|record)\b)[\s\S])*?` forbids
|
|
286
|
+
// crossing one), then `partial class Tool_<Family>` where `<Family>` is the full
|
|
287
|
+
// compound suffix (`Editor`, `Editor_Selection`, ...). First segment = the family.
|
|
288
|
+
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;
|
|
289
|
+
const found = new Set();
|
|
290
|
+
for (const dir of addonToolDirs(repoRoot)) {
|
|
291
|
+
if (!fs.existsSync(dir))
|
|
292
|
+
continue;
|
|
293
|
+
for (const entry of fs.readdirSync(dir)) {
|
|
294
|
+
if (!entry.endsWith('.cs'))
|
|
295
|
+
continue;
|
|
296
|
+
const src = fs.readFileSync(path.join(dir, entry), 'utf-8');
|
|
297
|
+
let m;
|
|
298
|
+
familyRe.lastIndex = 0;
|
|
299
|
+
while ((m = familyRe.exec(src)) !== null) {
|
|
300
|
+
// Attribute a compound sub-tool class (`Tool_Editor_Selection`) to its
|
|
301
|
+
// parent family by taking the FIRST `_`-delimited segment (`Editor`).
|
|
302
|
+
found.add(m[1].split('_')[0]);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
return [...found].sort();
|
|
307
|
+
}
|
|
216
308
|
//# sourceMappingURL=skills.js.map
|
package/dist/utils/skills.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/utils/skills.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/utils/skills.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAgC7B;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,cAAc,GAA2B;IACpD;QACE,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,qFAAqF;QAC9F,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,sDAAsD,EAAE;YAC1F,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,uEAAuE,EAAE;YAC7G,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,qCAAqC,EAAE;YAC3E,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,oDAAoD,EAAE;YAC9F,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,6BAA6B,EAAE;YACtE,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,oCAAoC,EAAE;SAC3E;KACF;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,+DAA+D;QACxE,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,kCAAkC,EAAE;YACvE,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,0CAA0C,EAAE;YAC/E,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,4CAA4C,EAAE;YACnF,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,+CAA+C,EAAE;YAC3F,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,kDAAkD,EAAE;SAC5F;KACF;IACD;QACE,EAAE,EAAE,UAAU;QACd,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,2FAA2F;QACpG,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,qDAAqD,EAAE;YAC7F,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,yCAAyC,EAAE;YACrF,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,yCAAyC,EAAE;YACnF,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,wCAAwC,EAAE;YAClF,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,4CAA4C,EAAE;YACpF,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,0CAA0C,EAAE;SACrF;KACF;IACD;QACE,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,YAAY;QACnB,OAAO,EAAE,sEAAsE;QAC/E,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,2CAA2C,EAAE;YACrF,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,uCAAuC,EAAE;SACtF;KACF;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,QAAQ;QACf,OAAO,EAAE,iEAAiE;QAC1E,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,mCAAmC,EAAE;YACzE,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,2BAA2B,EAAE;YACnE,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,4CAA4C,EAAE;YACpF,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,uBAAuB,EAAE;YAC/D,EAAE,IAAI,EAAE,uBAAuB,EAAE,WAAW,EAAE,yCAAyC,EAAE;SAC1F;KACF;IACD;QACE,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,YAAY;QACnB,OAAO,EAAE,yEAAyE;QAClF,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,8BAA8B,EAAE;YAC5E,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,iCAAiC,EAAE;YAC7E,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,mCAAmC,EAAE;SAClF;KACF;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,QAAQ;QACf,OAAO,EAAE,sEAAsE;QAC/E,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,8BAA8B,EAAE,WAAW,EAAE,yDAAyD,EAAE;YAChH,EAAE,IAAI,EAAE,8BAA8B,EAAE,WAAW,EAAE,kCAAkC,EAAE;YACzF,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,yCAAyC,EAAE;YACxF,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,wCAAwC,EAAE;SACxF;KACF;IACD;QACE,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,+CAA+C;QACxD,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,4CAA4C,EAAE;YACvF,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,iCAAiC,EAAE;SAC/E;KACF;IACD;QACE,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,YAAY;QACnB,OAAO,EAAE,mEAAmE;QAC5E,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,wBAAwB,EAAE,WAAW,EAAE,mDAAmD,EAAE;YACpG,EAAE,IAAI,EAAE,wBAAwB,EAAE,WAAW,EAAE,yDAAyD,EAAE;SAC3G;KACF;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,eAAe;QACtB,OAAO,EACL,iOAAiO;QACnO,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,oBAAoB;gBAC1B,WAAW,EACT,iSAAiS;aACpS;YACD;gBACE,IAAI,EAAE,sBAAsB;gBAC5B,WAAW,EACT,kMAAkM;aACrM;SACF;KACF;IACD;QACE,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,2EAA2E;QACpF,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,gEAAgE,EAAE;SAChG;KACF;CACO,CAAC;AAUX,MAAM,eAAe,GAAG,WAAW,CAAC;AAEpC;;;;;;;GAOG;AACH,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;AAC1C,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc;IACrB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,SAAS,eAAe,EAAE,CAAC,CAAC;IACvC,KAAK,CAAC,IAAI,CACR,gBAAgB,eAAe,CAC7B,gLAAgL,CACjL,EAAE,CACJ,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CACR,yRAAyR,CAC1R,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAC;IACjG,KAAK,CAAC,IAAI,CAAC,8FAA8F,CAAC,CAAC;IAC3G,KAAK,CAAC,IAAI,CAAC,sFAAsF,CAAC,CAAC;IACnG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC3C,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAClC,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnE,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,MAAM,SAAS,MAAM,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;IACjE,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,8FAA8F,CAAC,CAAC;IAC3G,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,EAAE,YAAY,EAAE,GAAG,eAAe,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACpF,CAAC;AAED,qCAAqC;AACrC,SAAS,gBAAgB,CAAC,GAAgB;IACxC,MAAM,IAAI,GAAG,GAAG,eAAe,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;IAC5C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IAC5B,KAAK,CAAC,IAAI,CAAC,gBAAgB,eAAe,CAAC,aAAa,GAAG,CAAC,KAAK,WAAW,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9F,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IACzC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACxB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CACR,+GAA+G,CAChH,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,0FAA0F,CAAC,CAAC;IACvG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACzE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,KAAK,GAAgB,CAAC,cAAc,EAAE,CAAC,CAAC;IAC9C,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,qDAAqD;AACrD,EAAE;AACF,+EAA+E;AAC/E,oFAAoF;AACpF,oFAAoF;AACpF,8EAA8E;AAC9E,kEAAkE;AAClE,kFAAkF;AAClF,gFAAgF;AAChF,EAAE;AACF,iFAAiF;AACjF,kFAAkF;AAClF,sFAAsF;AACtF,oFAAoF;AACpF,yBAAyB;AACzB,8EAA8E;AAE9E,oGAAoG;AACpG,MAAM,UAAU,8BAA8B;IAC5C,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AACnD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC;QAC9D,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC;KAC9D,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,yBAAyB,CAAC,QAAgB;IACxD,6EAA6E;IAC7E,0EAA0E;IAC1E,iFAAiF;IACjF,iFAAiF;IACjF,mFAAmF;IACnF,MAAM,QAAQ,GACZ,4JAA4J,CAAC;IAC/J,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAEhC,KAAK,MAAM,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAClC,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,SAAS;YACrC,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;YAC5D,IAAI,CAAyB,CAAC;YAC9B,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC;YACvB,OAAO,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACzC,uEAAuE;gBACvE,sEAAsE;gBACtE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AAC3B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "godot-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.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
|
}
|