godot-cli 0.19.1 → 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 +7 -0
- package/README.md +6 -3
- package/dist/utils/addon-deps.js +1 -1
- package/dist/utils/probe.d.ts +8 -2
- package/dist/utils/probe.js +8 -2
- package/dist/utils/probe.js.map +1 -1
- package/dist/utils/server-source.d.ts +1 -1
- package/dist/utils/server-source.js +1 -1
- package/dist/utils/skills.d.ts +45 -1
- package/dist/utils/skills.js +197 -29
- package/dist/utils/skills.js.map +1 -1
- package/package.json +1 -1
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,7 +140,9 @@ 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
|
-
The server base URL a tool call POSTs to (`<base>/api/tools/<name
|
|
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:
|
|
144
146
|
|
|
145
147
|
1. `--url <url>` (explicit override).
|
|
146
148
|
2. `GODOT_MCP_HOST` env (Custom-mode host).
|
|
@@ -198,8 +200,9 @@ The command writes a `SKILL.md`-per-tool-family directory (a `godot-mcp/` overvi
|
|
|
198
200
|
families. It is **idempotent** — re-running rewrites the same bytes.
|
|
199
201
|
|
|
200
202
|
Unlike the Unity CLI — which POSTs to a running editor's `/api/system-tools/unity-skill-generate`
|
|
201
|
-
endpoint — the Godot CLI generates the files **locally** from a built-in catalog
|
|
202
|
-
|
|
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
|
|
203
206
|
*additionally* auto-generates skills in-process on plugin boot via
|
|
204
207
|
`GodotMcpConnection.Start` → `GenerateSkillFilesIfNeeded`; the CLI command is the
|
|
205
208
|
server-less, scriptable path that does not need a live editor.)
|
package/dist/utils/addon-deps.js
CHANGED
|
@@ -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.
|
|
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
|
package/dist/utils/probe.d.ts
CHANGED
|
@@ -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>;
|
package/dist/utils/probe.js
CHANGED
|
@@ -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}`;
|
package/dist/utils/probe.js.map
CHANGED
|
@@ -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,
|
|
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.
|
|
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.
|
|
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. */
|
package/dist/utils/skills.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ 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 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
|
package/dist/utils/skills.js
CHANGED
|
@@ -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
|
|
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
|
-
{
|
|
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
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
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
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
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();
|
package/dist/utils/skills.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,iBAAiB,EAAE,WAAW,EAAE,gFAAgF,EAAE;YAC1H,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;AAED,8EAA8E;AAC9E,4EAA4E;AAC5E,EAAE;AACF,6EAA6E;AAC7E,8EAA8E;AAC9E,6EAA6E;AAC7E,+EAA+E;AAC/E,gFAAgF;AAChF,8EAA8E;AAC9E,8EAA8E;AAE9E,iGAAiG;AACjG,MAAM,UAAU,cAAc;IAC5B,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC1E,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAgB;IACnD,MAAM,QAAQ,GAAG,gEAAgE,CAAC;IAClF,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,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AAC3B,CAAC"}
|
|
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.
|
|
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",
|