godot-cli 0.14.0 → 0.15.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/README.md CHANGED
@@ -35,7 +35,7 @@ Requires Node `^20.19.0 || >=22.12.0`.
35
35
  | `setup-skills <agent> [path]` | Generate Godot-MCP skill files (a `SKILL.md`-per-tool-family) under the agent's skills path. `--list` shows each agent's skills support. |
36
36
  | `configure [path]` | List / enable / disable tools, prompts, and resources in the project-local `.godot-mcp/features.json`. |
37
37
  | `close [path]` | Gracefully stop the Godot editor running for a project (`--force` to hard-kill). |
38
- | `install-plugin [path]` | Install the `godot_mcp` addon end-to-end: materialize `res://addons/godot_mcp/` (download the matching GitHub release, or `--source <path>` a local copy), add the required NuGet `PackageReference`s to the project `.csproj`, and enable the plugin. Idempotent. |
38
+ | `install-plugin [path]` | Install the `godot_mcp` addon end-to-end: materialize `res://addons/godot_mcp/` (download the matching GitHub release, or `--source <path>` a local copy), add the required NuGet `PackageReference`s + the extension-catalog `<EmbeddedResource>` to the project `.csproj`, and enable the plugin. Idempotent. |
39
39
  | `install-extension <id> [path]` | Install a Godot-MCP **extension** (an optional AI-tool-family package) into the project: resolve `<id>` from the shared catalog, add/update its `<PackageReference>` in the project `.csproj`, then rebuild to restore. Idempotent — behaviorally identical to the in-editor dock. |
40
40
  | `remove-plugin [path]` | Disable the `godot_mcp` addon in `project.godot` `[editor_plugins]` (does not delete the addon files). |
41
41
  | `update` | Check npm for a newer `godot-cli` and install it. |
@@ -126,7 +126,7 @@ godot-cli install-plugin --version 0.11.1 ./MyGodotProject # pin a specific
126
126
  godot-cli install-plugin --source ./Godot-MCP/addons/godot_mcp ./MyGodotProject # offline / dev copy
127
127
  ```
128
128
 
129
- It performs three steps:
129
+ It performs four steps:
130
130
 
131
131
  1. **Materialize `res://addons/godot_mcp/`.** By default it downloads `godot-mcp-addon-<version>.zip`
132
132
  over HTTPS from **github.com only** (the `IvanMurzak/Godot-MCP` release `v<version>`; the version
@@ -137,7 +137,11 @@ It performs three steps:
137
137
  to the project's `.csproj`, idempotently — adding when missing, reconciling a stale version, and
138
138
  leaving a correct pin untouched. The versions are single-sourced from the addon's own
139
139
  `Godot-MCP.csproj` pins, so the scaffold can never drift.
140
- 3. **Enable the plugin** in `project.godot` `[editor_plugins]`.
140
+ 3. **Embed the extension catalog** (`<EmbeddedResource Include="addons/godot_mcp/extensions.catalog.json"
141
+ LogicalName="Godot-MCP.extensions.catalog.json" />`) into the project's `.csproj`, idempotently. Without
142
+ it the addon's extension registry reads no catalog at editor runtime and the **Extensions panel is
143
+ empty**. Single-sourced + parity-tested against the addon csproj alongside the pins.
144
+ 4. **Enable the plugin** in `project.godot` `[editor_plugins]`.
141
145
 
142
146
  It is library-safe (returns a `{ kind: 'success' | 'failure' }` union; never throws past the public
143
147
  boundary) and idempotent — re-running on an already-installed project reports no change.
@@ -16,7 +16,7 @@ function cliVersion() {
16
16
  }
17
17
  }
18
18
  export const installPluginCommand = new Command('install-plugin')
19
- .description('Install the godot_mcp addon into a Godot C# project: materialize res://addons/godot_mcp/ (download the matching GitHub release, or --source a local copy), add the required NuGet PackageReferences to the project .csproj, and enable the plugin in project.godot.')
19
+ .description('Install the godot_mcp addon into a Godot C# project: materialize res://addons/godot_mcp/ (download the matching GitHub release, or --source a local copy), add the required NuGet PackageReferences and the extension-catalog <EmbeddedResource> to the project .csproj, and enable the plugin in project.godot.')
20
20
  .argument('[path]', 'Path to the Godot project')
21
21
  .option('--path <path>', 'Path to the Godot project')
22
22
  .option('--source <path>', 'Install the addon from a local directory (offline / dev / CI) instead of downloading it')
@@ -62,6 +62,10 @@ export const installPluginCommand = new Command('install-plugin')
62
62
  .map((p) => `${p.id}@${p.version} (${p.action})`)
63
63
  .join(', ');
64
64
  ui.label('NuGet packages', summary || '(none)');
65
+ const embedSummary = result.csproj.embeds
66
+ .map((e) => `${e.logicalName} (${e.action})`)
67
+ .join(', ');
68
+ ui.label('Embedded resources', embedSummary || '(none)');
65
69
  }
66
70
  ui.label('project.godot', result.projectGodotPath);
67
71
  ui.label('Enabled plugins', result.enabledPlugins.join(', ') || '(none)');
@@ -1 +1 @@
1
- {"version":3,"file":"install-plugin.js","sourceRoot":"","sources":["../../src/commands/install-plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install-plugin.js","sourceRoot":"","sources":["../../src/commands/install-plugin.ts"],"names":[],"mappings":"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"}
@@ -112,7 +112,9 @@ export async function installExtension(opts) {
112
112
  });
113
113
  emitProgress(opts.onProgress, { phase: 'done', message: 'Extension installed — rebuild solutions to restore.' });
114
114
  const message = plan.action === 'add'
115
- ? `Added ${descriptor.packageId}${hasVersion(descriptor) ? ` ${descriptor.version}` : ''}. Rebuild solutions to restore and compile the extension.`
115
+ ? // Report the version actually written (the pin, or the "*" float marker), not the descriptor's
116
+ // pin presence — an unpinned add now writes Version="*".
117
+ `Added ${descriptor.packageId}${plan.toVersion ? ` ${plan.toVersion}` : ''}. Rebuild solutions to restore and compile the extension.`
116
118
  : `Updated ${descriptor.packageId} to ${plan.toVersion}. Rebuild solutions to restore the new version.`;
117
119
  return {
118
120
  kind: 'success',
@@ -1 +1 @@
1
- {"version":3,"file":"install-extension.js","sourceRoot":"","sources":["../../src/lib/install-extension.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install-extension.js","sourceRoot":"","sources":["../../src/lib/install-extension.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import * as fs from 'fs';
2
2
  import * as path from 'path';
3
3
  import { GODOT_MCP_PLUGIN_PATH, projectGodotPath as resolveProjectGodotPath, togglePluginInText, } from '../utils/project-godot.js';
4
- import { addAddonPackageReferences } from '../utils/csproj-deps.js';
4
+ import { addAddonPackageReferences, addAddonEmbeddedResources } from '../utils/csproj-deps.js';
5
5
  import { ADDON_PACKAGE_REFERENCES } from '../utils/addon-deps.js';
6
6
  import { addonDownloadUrl, assertTrustedDownloadUrl, } from '../utils/addon-source.js';
7
7
  import { parseZip } from '../utils/unzip.js';
@@ -229,37 +229,49 @@ function extractAddonEntries(entries, projectPath, addonDir) {
229
229
  }
230
230
  /**
231
231
  * Find the consumer's `.csproj` (the one Godot compiles the addon into) and add
232
- * the two addon NuGet PackageReferences idempotently. The csproj is the single
233
- * `*.csproj` at the project root (the `--dotnet` scaffold writes
232
+ * the addon's NuGet PackageReferences AND the EmbeddedResource(s) it needs,
233
+ * idempotently and single-sourced from the addon's own pins/embeds. The csproj is
234
+ * the single `*.csproj` at the project root (the `--dotnet` scaffold writes
234
235
  * `<AssemblyName>.csproj` there). When there is no csproj (a GDScript-only
235
236
  * project), the patch is skipped with a warning — the addon's C# cannot compile
236
237
  * without one, but that is the consumer's project shape to fix.
238
+ *
239
+ * The EmbeddedResource is as load-bearing as the NuGet pins: without it the
240
+ * pure-managed `GodotExtensionRegistry` reads no embedded catalog and the consumer
241
+ * gets an EMPTY Extensions panel (issue #246). Both edits are applied in one write.
237
242
  */
238
243
  function patchConsumerCsproj(projectPath, warnings, onProgress) {
239
244
  const csprojPath = findConsumerCsproj(projectPath, warnings);
240
245
  if (csprojPath === null) {
241
246
  warnings.push('No .csproj found at the project root — the godot_mcp addon is C# and needs a Godot.NET.Sdk project. ' +
242
- `Create one (e.g. \`godot-cli create-project --dotnet\`) and add the ${ADDON_PACKAGE_REFERENCES.map((r) => r.id).join(' + ')} PackageReferences.`);
243
- return { changed: false, packages: [] };
247
+ `Create one (e.g. \`godot-cli create-project --dotnet\`) and add the ${ADDON_PACKAGE_REFERENCES.map((r) => r.id).join(' + ')} PackageReferences + the EmbeddedResource for the extension catalog.`);
248
+ return { changed: false, packages: [], embeds: [] };
244
249
  }
245
250
  const before = fs.readFileSync(csprojPath, 'utf-8');
246
- const patched = addAddonPackageReferences(before);
247
- if (patched.changed) {
248
- fs.writeFileSync(csprojPath, patched.text);
251
+ const pkgPatched = addAddonPackageReferences(before);
252
+ const embedPatched = addAddonEmbeddedResources(pkgPatched.text);
253
+ const changed = pkgPatched.changed || embedPatched.changed;
254
+ if (changed) {
255
+ fs.writeFileSync(csprojPath, embedPatched.text);
249
256
  emitProgress(onProgress, {
250
257
  phase: 'csproj-patched',
251
- message: `Added addon PackageReferences to ${csprojPath}`,
258
+ message: `Added addon PackageReferences + EmbeddedResource to ${csprojPath}`,
252
259
  csprojPath,
253
260
  });
254
261
  }
255
262
  return {
256
263
  csprojPath,
257
- changed: patched.changed,
258
- packages: patched.changes.map((c) => ({
264
+ changed,
265
+ packages: pkgPatched.changes.map((c) => ({
259
266
  id: c.id,
260
267
  action: c.action,
261
268
  version: c.version,
262
269
  })),
270
+ embeds: embedPatched.changes.map((c) => ({
271
+ include: c.include,
272
+ action: c.action,
273
+ logicalName: c.logicalName,
274
+ })),
263
275
  };
264
276
  }
265
277
  /** The single `*.csproj` directly at the project root, or null when none/ambiguous. */
@@ -1 +1 @@
1
- {"version":3,"file":"install-plugin.js","sourceRoot":"","sources":["../../src/lib/install-plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install-plugin.js","sourceRoot":"","sources":["../../src/lib/install-plugin.ts"],"names":[],"mappings":"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"}
@@ -361,11 +361,11 @@ export interface AddonMaterializeOutcome {
361
361
  /** The local source directory used (`--source` path only). */
362
362
  sourceDir?: string;
363
363
  }
364
- /** What `install-plugin` did to the consumer `.csproj`'s PackageReferences. */
364
+ /** What `install-plugin` did to the consumer `.csproj`'s PackageReferences + EmbeddedResources. */
365
365
  export interface CsprojPatchOutcome {
366
366
  /** Absolute path to the consumer `.csproj` that was patched, if one was found. */
367
367
  csprojPath?: string;
368
- /** True when the csproj text was modified. */
368
+ /** True when the csproj text was modified (pins and/or embeds). */
369
369
  changed: boolean;
370
370
  /** Per-package summary: each addon pin's add / update / unchanged outcome. */
371
371
  packages: {
@@ -373,6 +373,12 @@ export interface CsprojPatchOutcome {
373
373
  action: 'added' | 'updated' | 'unchanged';
374
374
  version: string;
375
375
  }[];
376
+ /** Per-resource summary: each addon `<EmbeddedResource>`'s add / update / unchanged outcome. */
377
+ embeds: {
378
+ include: string;
379
+ action: 'added' | 'updated' | 'unchanged';
380
+ logicalName: string;
381
+ }[];
376
382
  }
377
383
  export interface InstallPluginSuccess {
378
384
  kind: 'success';
@@ -5,11 +5,34 @@ export interface AddonPackageReference {
5
5
  /** The pinned version (the `Version=` attribute). */
6
6
  version: string;
7
7
  }
8
+ /**
9
+ * A single `<EmbeddedResource>` the consumer csproj must declare so an asset the
10
+ * addon reads at editor runtime via `GetManifestResourceStream` is embedded into
11
+ * the consumer's compiled project assembly (Godot globs every `*.cs` into one
12
+ * assembly, but does NOT carry the addon's own `Godot-MCP.csproj` `<EmbeddedResource>`
13
+ * — the addon ships as source, not a NuGet package).
14
+ */
15
+ export interface AddonEmbeddedResource {
16
+ /** The file to embed, relative to the consumer project root (the `Include=` attribute). */
17
+ include: string;
18
+ /** The manifest-resource name the addon resolves it by (the `LogicalName=` attribute). */
19
+ logicalName: string;
20
+ }
8
21
  /**
9
22
  * The exact NuGet `PackageReference`s the consumer's project `.csproj` needs,
10
23
  * single-sourced from the addon's `Godot-MCP.csproj` pins. Order matches the
11
24
  * addon csproj (ReflectorNet first, then McpPlugin).
12
25
  */
13
26
  export declare const ADDON_PACKAGE_REFERENCES: readonly AddonPackageReference[];
27
+ /**
28
+ * The exact `<EmbeddedResource>`s the consumer's project `.csproj` needs, single-sourced
29
+ * from the addon's `Godot-MCP.csproj`. The extension catalog is read at editor runtime by
30
+ * the pure-managed `GodotExtensionRegistry` via `GetManifestResourceStream` (no `res://` /
31
+ * filesystem fallback), so without this embed a consumer that installs via `install-plugin`
32
+ * gets an EMPTY Extensions panel. A parity test (`cli/tests/addon-deps-parity.test.ts`)
33
+ * reads `Godot-MCP.csproj` and FAILS the build if these constants ever drift from the addon's
34
+ * own `<EmbeddedResource>` (Include path + LogicalName), mirroring the NuGet-pin tripwire.
35
+ */
36
+ export declare const ADDON_EMBEDDED_RESOURCES: readonly AddonEmbeddedResource[];
14
37
  /** The resource path of the addon manifest a consumer project loads the plugin from. */
15
38
  export declare const ADDON_PLUGIN_CFG_RESOURCE = "res://addons/godot_mcp/plugin.cfg";
@@ -22,6 +22,21 @@ export const ADDON_PACKAGE_REFERENCES = [
22
22
  { id: 'com.IvanMurzak.ReflectorNet', version: '5.3.1' },
23
23
  { id: 'com.IvanMurzak.McpPlugin', version: '6.10.0' },
24
24
  ];
25
+ /**
26
+ * The exact `<EmbeddedResource>`s the consumer's project `.csproj` needs, single-sourced
27
+ * from the addon's `Godot-MCP.csproj`. The extension catalog is read at editor runtime by
28
+ * the pure-managed `GodotExtensionRegistry` via `GetManifestResourceStream` (no `res://` /
29
+ * filesystem fallback), so without this embed a consumer that installs via `install-plugin`
30
+ * gets an EMPTY Extensions panel. A parity test (`cli/tests/addon-deps-parity.test.ts`)
31
+ * reads `Godot-MCP.csproj` and FAILS the build if these constants ever drift from the addon's
32
+ * own `<EmbeddedResource>` (Include path + LogicalName), mirroring the NuGet-pin tripwire.
33
+ */
34
+ export const ADDON_EMBEDDED_RESOURCES = [
35
+ {
36
+ include: 'addons/godot_mcp/extensions.catalog.json',
37
+ logicalName: 'Godot-MCP.extensions.catalog.json',
38
+ },
39
+ ];
25
40
  /** The resource path of the addon manifest a consumer project loads the plugin from. */
26
41
  export const ADDON_PLUGIN_CFG_RESOURCE = 'res://addons/godot_mcp/plugin.cfg';
27
42
  //# sourceMappingURL=addon-deps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"addon-deps.js","sourceRoot":"","sources":["../../src/utils/addon-deps.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,mFAAmF;AACnF,oEAAoE;AACpE,8EAA8E;AAC9E,yEAAyE;AACzE,EAAE;AACF,6EAA6E;AAC7E,kFAAkF;AAClF,8EAA8E;AAC9E,4EAA4E;AAC5E,iFAAiF;AACjF,iFAAiF;AACjF,+CAA+C;AAC/C,EAAE;AACF,sEAAsE;AAUtE;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAqC;IACxE,EAAE,EAAE,EAAE,6BAA6B,EAAE,OAAO,EAAE,OAAO,EAAE;IACvD,EAAE,EAAE,EAAE,0BAA0B,EAAE,OAAO,EAAE,QAAQ,EAAE;CAC7C,CAAC;AAEX,wFAAwF;AACxF,MAAM,CAAC,MAAM,yBAAyB,GAAG,mCAAmC,CAAC"}
1
+ {"version":3,"file":"addon-deps.js","sourceRoot":"","sources":["../../src/utils/addon-deps.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,mFAAmF;AACnF,oEAAoE;AACpE,8EAA8E;AAC9E,yEAAyE;AACzE,EAAE;AACF,6EAA6E;AAC7E,kFAAkF;AAClF,8EAA8E;AAC9E,4EAA4E;AAC5E,iFAAiF;AACjF,iFAAiF;AACjF,+CAA+C;AAC/C,EAAE;AACF,sEAAsE;AAwBtE;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAqC;IACxE,EAAE,EAAE,EAAE,6BAA6B,EAAE,OAAO,EAAE,OAAO,EAAE;IACvD,EAAE,EAAE,EAAE,0BAA0B,EAAE,OAAO,EAAE,QAAQ,EAAE;CAC7C,CAAC;AAEX;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAqC;IACxE;QACE,OAAO,EAAE,0CAA0C;QACnD,WAAW,EAAE,mCAAmC;KACjD;CACO,CAAC;AAEX,wFAAwF;AACxF,MAAM,CAAC,MAAM,yBAAyB,GAAG,mCAAmC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { type AddonPackageReference } from './addon-deps.js';
1
+ import { type AddonPackageReference, type AddonEmbeddedResource } from './addon-deps.js';
2
2
  /**
3
3
  * Idempotently reconcile a Godot consumer `.csproj`'s `<PackageReference>`s so it
4
4
  * declares exactly the addon's two required NuGet pins (see `addon-deps.ts`).
@@ -37,4 +37,40 @@ export interface CsprojPatchResult {
37
37
  /** One entry per required package describing what happened to it. */
38
38
  changes: CsprojPatchChange[];
39
39
  }
40
+ export type CsprojEmbedChange = {
41
+ include: string;
42
+ action: 'added';
43
+ logicalName: string;
44
+ } | {
45
+ include: string;
46
+ action: 'updated';
47
+ from: string;
48
+ logicalName: string;
49
+ } | {
50
+ include: string;
51
+ action: 'unchanged';
52
+ logicalName: string;
53
+ };
54
+ export interface CsprojEmbedResult {
55
+ /** The new csproj text (identical to input when nothing changed). */
56
+ text: string;
57
+ /** True when the text was modified. */
58
+ changed: boolean;
59
+ /** One entry per required embedded resource describing what happened to it. */
60
+ changes: CsprojEmbedChange[];
61
+ }
40
62
  export declare function addAddonPackageReferences(csprojText: string, requiredRefs?: readonly AddonPackageReference[]): CsprojPatchResult;
63
+ /**
64
+ * Idempotently reconcile a Godot consumer `.csproj`'s `<EmbeddedResource>`s so it
65
+ * declares exactly the addon's required embeds (see `addon-deps.ts`
66
+ * `ADDON_EMBEDDED_RESOURCES`). Pure (operates on csproj TEXT, never touches the
67
+ * filesystem) and exported for unit tests. Sibling of `addAddonPackageReferences`.
68
+ * Handles, idempotently:
69
+ * - a project with NO `<EmbeddedResource>` ItemGroup (groups into one, else appends
70
+ * a fresh `<ItemGroup>` before `</Project>`);
71
+ * - a project that already embeds the resource with the right LogicalName (no change);
72
+ * - a project that embeds the same Include with a DIFFERENT LogicalName (reconciles
73
+ * in place);
74
+ * Re-running `install-plugin` therefore never duplicates the `<EmbeddedResource>`.
75
+ */
76
+ export declare function addAddonEmbeddedResources(csprojText: string, requiredResources?: readonly AddonEmbeddedResource[]): CsprojEmbedResult;
@@ -1,4 +1,4 @@
1
- import { ADDON_PACKAGE_REFERENCES } from './addon-deps.js';
1
+ import { ADDON_PACKAGE_REFERENCES, ADDON_EMBEDDED_RESOURCES, } from './addon-deps.js';
2
2
  /** Escape a string for use inside a RegExp source. */
3
3
  function escapeRegExp(value) {
4
4
  return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
@@ -18,16 +18,32 @@ function packageRefRegex(id) {
18
18
  `|` +
19
19
  `<PackageReference\\b[^>]*?\\bVersion\\s*=\\s*"([^"]*)"[^>]*?\\bInclude\\s*=\\s*"${escId}"[^>]*?(?:/>|></PackageReference>)`, 'i');
20
20
  }
21
+ /**
22
+ * Match an existing `<EmbeddedResource ... Include="<include>" ... />` element for a
23
+ * specific file path, capturing the whole element (in either attribute order, and
24
+ * whether self-closed `/>` or an explicit `></EmbeddedResource>` pair). The
25
+ * `LogicalName` is extracted from the captured element text separately so the regex
26
+ * stays order-agnostic and tolerant of an absent `LogicalName`.
27
+ */
28
+ function embeddedResourceRegex(include) {
29
+ const escInclude = escapeRegExp(include);
30
+ return new RegExp(`<EmbeddedResource\\b[^>]*?\\bInclude\\s*=\\s*"${escInclude}"[^>]*?(?:/>|></EmbeddedResource>)`, 'i');
31
+ }
21
32
  /** Render the canonical self-closing element for a required reference. */
22
33
  function renderRef(ref) {
23
34
  return `<PackageReference Include="${ref.id}" Version="${ref.version}" />`;
24
35
  }
36
+ /** Render the canonical self-closing element for a required embedded resource. */
37
+ function renderEmbed(res) {
38
+ return `<EmbeddedResource Include="${res.include}" LogicalName="${res.logicalName}" />`;
39
+ }
25
40
  /**
26
- * Detect the indentation used by the FIRST existing `<PackageReference>` (or fall
27
- * back to 4 spaces) so appended/inserted elements match the consumer's style.
41
+ * Detect the indentation used by the FIRST existing `<PackageReference>` /
42
+ * `<EmbeddedResource>` (or fall back to 4 spaces) so appended/inserted elements
43
+ * match the consumer's style.
28
44
  */
29
45
  function detectIndent(text) {
30
- const m = text.match(/\n([ \t]*)<PackageReference\b/);
46
+ const m = text.match(/\n([ \t]*)<(?:PackageReference|EmbeddedResource)\b/);
31
47
  return m ? m[1] : ' ';
32
48
  }
33
49
  /**
@@ -101,16 +117,99 @@ export function addAddonPackageReferences(csprojText, requiredRefs = ADDON_PACKA
101
117
  changes: orderedChanges,
102
118
  };
103
119
  }
120
+ /**
121
+ * Idempotently reconcile a Godot consumer `.csproj`'s `<EmbeddedResource>`s so it
122
+ * declares exactly the addon's required embeds (see `addon-deps.ts`
123
+ * `ADDON_EMBEDDED_RESOURCES`). Pure (operates on csproj TEXT, never touches the
124
+ * filesystem) and exported for unit tests. Sibling of `addAddonPackageReferences`.
125
+ * Handles, idempotently:
126
+ * - a project with NO `<EmbeddedResource>` ItemGroup (groups into one, else appends
127
+ * a fresh `<ItemGroup>` before `</Project>`);
128
+ * - a project that already embeds the resource with the right LogicalName (no change);
129
+ * - a project that embeds the same Include with a DIFFERENT LogicalName (reconciles
130
+ * in place);
131
+ * Re-running `install-plugin` therefore never duplicates the `<EmbeddedResource>`.
132
+ */
133
+ export function addAddonEmbeddedResources(csprojText, requiredResources = ADDON_EMBEDDED_RESOURCES) {
134
+ const changes = [];
135
+ let text = csprojText;
136
+ const indent = detectIndent(text);
137
+ const eol = detectEol(text);
138
+ // First pass: reconcile any embeds that already exist (possibly with a different
139
+ // LogicalName). Collect the ones still missing for the append pass.
140
+ const missing = [];
141
+ for (const res of requiredResources) {
142
+ const re = embeddedResourceRegex(res.include);
143
+ const match = text.match(re);
144
+ if (!match) {
145
+ missing.push(res);
146
+ continue;
147
+ }
148
+ const logicalMatch = match[0].match(/\bLogicalName\s*=\s*"([^"]*)"/i);
149
+ const existingLogical = logicalMatch ? logicalMatch[1] : '';
150
+ if (existingLogical === res.logicalName) {
151
+ changes.push({ include: res.include, action: 'unchanged', logicalName: res.logicalName });
152
+ continue;
153
+ }
154
+ // Reconcile in place: replace the whole element with the canonical embed.
155
+ text = text.replace(re, renderEmbed(res));
156
+ changes.push({ include: res.include, action: 'updated', from: existingLogical, logicalName: res.logicalName });
157
+ }
158
+ // Second pass: add the missing embeds. Prefer an existing <ItemGroup> that already
159
+ // holds an <EmbeddedResource> (group them together); else append a fresh
160
+ // <ItemGroup> just before </Project>. Deliberately NOT grouped with the
161
+ // PackageReference ItemGroup — the addon's own csproj keeps the two in separate
162
+ // groups, and this keeps the scaffold's layout identical.
163
+ if (missing.length > 0) {
164
+ const block = missing.map((res) => `${indent}${renderEmbed(res)}`).join(eol);
165
+ const embedItemGroupClose = findItemGroupCloseContaining(text, /<EmbeddedResource\b/i);
166
+ if (embedItemGroupClose !== -1) {
167
+ text = `${text.slice(0, embedItemGroupClose)}${block}${eol}${text.slice(embedItemGroupClose)}`;
168
+ }
169
+ else {
170
+ const groupIndent = indent.length >= 2 ? indent.slice(0, Math.floor(indent.length / 2)) : ' ';
171
+ const newGroup = `${groupIndent}<ItemGroup>${eol}${block}${eol}${groupIndent}</ItemGroup>${eol}`;
172
+ const closeIdx = text.lastIndexOf('</Project>');
173
+ if (closeIdx === -1) {
174
+ text = `${text}${eol}${newGroup}`;
175
+ }
176
+ else {
177
+ text = `${text.slice(0, closeIdx)}${newGroup}${text.slice(closeIdx)}`;
178
+ }
179
+ }
180
+ for (const res of missing) {
181
+ changes.push({ include: res.include, action: 'added', logicalName: res.logicalName });
182
+ }
183
+ }
184
+ // Restore required-order in `changes` to match `requiredResources` for stable output.
185
+ const orderedChanges = requiredResources
186
+ .map((res) => changes.find((c) => c.include === res.include))
187
+ .filter((c) => c !== undefined);
188
+ return {
189
+ text,
190
+ changed: orderedChanges.some((c) => c.action !== 'unchanged'),
191
+ changes: orderedChanges,
192
+ };
193
+ }
104
194
  /**
105
195
  * Return the index of the `</ItemGroup>` that closes the FIRST `<ItemGroup>`
106
196
  * containing a `<PackageReference>`, or -1 when none exists. Used to group the
107
197
  * added pins with the consumer's existing package references.
108
198
  */
109
199
  function findPackageReferenceItemGroupClose(text) {
200
+ return findItemGroupCloseContaining(text, /<PackageReference\b/i);
201
+ }
202
+ /**
203
+ * Return the index of the `</ItemGroup>` that closes the FIRST `<ItemGroup>` whose
204
+ * body matches `childTagRe`, or -1 when none exists. Used to group an added element
205
+ * with the consumer's existing items of the same kind. `childTagRe` MUST NOT be a
206
+ * global regex (a stateful `lastIndex` would corrupt the `.test` below).
207
+ */
208
+ function findItemGroupCloseContaining(text, childTagRe) {
110
209
  const itemGroupRe = /<ItemGroup\b[^>]*>([\s\S]*?)<\/ItemGroup>/gi;
111
210
  let m;
112
211
  while ((m = itemGroupRe.exec(text)) !== null) {
113
- if (/<PackageReference\b/i.test(m[1])) {
212
+ if (childTagRe.test(m[1])) {
114
213
  // The close tag starts at the end of the match minus its length.
115
214
  const closeTag = '</ItemGroup>';
116
215
  return m.index + m[0].length - closeTag.length;
@@ -1 +1 @@
1
- {"version":3,"file":"csproj-deps.js","sourceRoot":"","sources":["../../src/utils/csproj-deps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"csproj-deps.js","sourceRoot":"","sources":["../../src/utils/csproj-deps.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,11 @@
1
1
  import type { ExtensionDescriptor } from './extensions-catalog.js';
2
2
  export type ExtensionInstallAction = 'add' | 'update' | 'noop';
3
+ /**
4
+ * The MSBuild floating-version marker written for an UNPINNED (null/empty-version) descriptor.
5
+ * A versionless `<PackageReference Include="x" />` fails NuGet restore with NU1015, so the
6
+ * "float to latest" intent is materialized as `Version="*"`. Mirrors C# `ExtensionInstallPlanner.FloatVersion`.
7
+ */
8
+ export declare const FLOAT_VERSION = "*";
3
9
  export interface ExtensionInstallPlan {
4
10
  /** The add / update / no-op decision. */
5
11
  action: ExtensionInstallAction;
@@ -9,7 +15,7 @@ export interface ExtensionInstallPlan {
9
15
  packageId: string;
10
16
  /** Version currently referenced: `null` when not installed; `''` when referenced without a version. */
11
17
  fromVersion: string | null;
12
- /** The descriptor's target version, or `null` when the descriptor has no pin. */
18
+ /** The version the plan writes: the descriptor's pin when set, `"*"` (the float marker) when unpinned and a reference is added or self-healed, `null` only on a no-op. */
13
19
  toVersion: string | null;
14
20
  }
15
21
  /** Thrown by {@link planExtensionInstall} on a genuinely unparseable `.csproj` (the lib turns it into a structured failure). */
@@ -6,19 +6,30 @@
6
6
  //
7
7
  // Parity contract (verified by `cli/tests/extension-install.test.ts` against the
8
8
  // SAME scenario set as `Godot-MCP.Tests/ExtensionInstallTests.cs`):
9
- // - absent reference → ADD (append; version attribute only when pinned)
10
- // - present, descriptor newer → UPDATE (bump version, honoring attr vs child form)
11
- // - present, no version, pinned → UPDATE (set the descriptor's pin)
12
- // - present, equal/newer NO-OP
13
- // - descriptor unpinned, present→ NO-OP
9
+ // - absent reference → ADD (append; Version="<pin>" when pinned, Version="*" when unpinned/floating)
10
+ // - present, descriptor newer → UPDATE (bump version, honoring attr vs child form)
11
+ // - present, no version, pinned → UPDATE (set the descriptor's pin)
12
+ // - present, no version, unpinned UPDATE (SELF-HEAL the NU1015-prone versionless reference to Version="*")
13
+ // - present, equal/newer → NO-OP
14
+ // - descriptor unpinned, present with a version → NO-OP (never downgrade a concrete pin to "*")
14
15
  // - version compare is numeric + tolerant (1.10.0 > 1.2.0; trailing 0; suffix-tolerant)
15
16
  //
17
+ // A versionless `<PackageReference Include="x" />` fails NuGet restore with NU1015, so an
18
+ // unpinned (null-version) descriptor's "float to latest" intent is materialized as
19
+ // `Version="*"` — mirroring the C# planner's `FloatVersion` constant byte-for-byte.
20
+ //
16
21
  // The C# planner uses System.Xml.Linq; this uses scoped text edits (like the CLI's
17
22
  // existing `csproj-deps.ts`) so the consumer's formatting is preserved verbatim. The
18
23
  // add/update/no-op DECISION and the resulting parsed PackageReferences are identical.
19
24
  //
20
25
  // No top-level side effects; pure string transforms only.
21
26
  import { hasVersion } from './extensions-catalog.js';
27
+ /**
28
+ * The MSBuild floating-version marker written for an UNPINNED (null/empty-version) descriptor.
29
+ * A versionless `<PackageReference Include="x" />` fails NuGet restore with NU1015, so the
30
+ * "float to latest" intent is materialized as `Version="*"`. Mirrors C# `ExtensionInstallPlanner.FloatVersion`.
31
+ */
32
+ export const FLOAT_VERSION = '*';
22
33
  /** Thrown by {@link planExtensionInstall} on a genuinely unparseable `.csproj` (the lib turns it into a structured failure). */
23
34
  export class CsprojParseError extends Error {
24
35
  }
@@ -110,9 +121,10 @@ function detectEol(text) {
110
121
  return crlf > lf ? '\r\n' : '\n';
111
122
  }
112
123
  function renderRef(descriptor) {
113
- return hasVersion(descriptor)
114
- ? `<PackageReference Include="${descriptor.packageId}" Version="${descriptor.version}" />`
115
- : `<PackageReference Include="${descriptor.packageId}" />`;
124
+ // Always emit a Version: the descriptor's pin when set, else the "*" float marker. A versionless
125
+ // reference fails NuGet restore with NU1015. Byte-equal to the C# planner's AppendPackageReference.
126
+ const version = hasVersion(descriptor) ? descriptor.version : FLOAT_VERSION;
127
+ return `<PackageReference Include="${descriptor.packageId}" Version="${version}" />`;
116
128
  }
117
129
  /** Index of the `</ItemGroup>` closing the FIRST `<ItemGroup>` holding a `<PackageReference>`, or -1. */
118
130
  function findPackageReferenceItemGroupClose(text) {
@@ -184,13 +196,27 @@ export function planExtensionInstall(descriptor, csprojText) {
184
196
  resultingCsproj: appendReference(csprojText, descriptor),
185
197
  packageId: descriptor.packageId,
186
198
  fromVersion: null,
187
- toVersion: hasVersion(descriptor) ? descriptor.version : null,
199
+ toVersion: hasVersion(descriptor) ? descriptor.version : FLOAT_VERSION,
188
200
  };
189
201
  }
190
202
  const element = match[0];
191
203
  const currentVersion = readElementVersion(element);
192
- // Descriptor pins no version → leave the existing reference untouched.
204
+ // Descriptor pins no version → it wants a FLOATING reference (Version="*").
193
205
  if (!hasVersion(descriptor)) {
206
+ // SELF-HEAL: an existing reference with NO version is NU1015-prone — upgrade it to "*".
207
+ // But NEVER downgrade a concrete consumer pin (or an existing "*") to "*": leave any
208
+ // already-versioned reference untouched (no-op), since the consumer's pin is authoritative.
209
+ if (currentVersion === '') {
210
+ const healedElement = setElementVersion(element, FLOAT_VERSION);
211
+ return {
212
+ action: 'update',
213
+ // Function replacement so any `$` in the marker is never treated as a replacement pattern.
214
+ resultingCsproj: csprojText.replace(elementRe, () => healedElement),
215
+ packageId: descriptor.packageId,
216
+ fromVersion: currentVersion,
217
+ toVersion: FLOAT_VERSION,
218
+ };
219
+ }
194
220
  return {
195
221
  action: 'noop',
196
222
  resultingCsproj: csprojText,
@@ -1 +1 @@
1
- {"version":3,"file":"extension-install.js","sourceRoot":"","sources":["../../src/utils/extension-install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extension-install.js","sourceRoot":"","sources":["../../src/utils/extension-install.ts"],"names":[],"mappings":"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"}
@@ -3,10 +3,28 @@ export interface ExtensionTool {
3
3
  readonly name: string;
4
4
  readonly description: string;
5
5
  }
6
+ /**
7
+ * The third-party Godot addon a CLASS-B extension wraps — mirrors the JSON
8
+ * `addonRequired` block. Class-A extensions (which wrap a BUILT-IN Godot feature)
9
+ * OMIT this entirely (`addonRequired` is absent / `undefined`). When present it is
10
+ * pure presentation metadata so the dock/app/CLI can surface "requires the <name>
11
+ * addon" + a link; it does NOT affect install logic (the package is still installed
12
+ * by `packageId` alone — the addon is the consumer's own runtime responsibility).
13
+ * `name` is the anchor; `assetLibId` (the Godot AssetLib id, stored as a string),
14
+ * `repo`, and `license` are optional.
15
+ */
16
+ export interface ExtensionAddonRequirement {
17
+ readonly name: string;
18
+ readonly assetLibId: string | null;
19
+ readonly repo: string | null;
20
+ readonly license: string | null;
21
+ }
6
22
  /**
7
23
  * One installable extension — the CLI analog of the C# `GodotExtensionDescriptor`.
8
24
  * `packageId` is the INSTALL IDENTITY (the `<PackageReference Include="...">`).
9
25
  * `version` is `null` for a floating (unpinned) reference.
26
+ * `addonRequired` is present ONLY for CLASS-B (addon-dependent) extensions; Class-A
27
+ * entries omit it.
10
28
  */
11
29
  export interface ExtensionDescriptor {
12
30
  readonly name: string;
@@ -15,6 +33,7 @@ export interface ExtensionDescriptor {
15
33
  readonly version: string | null;
16
34
  readonly gitUrl: string | null;
17
35
  readonly tools: readonly ExtensionTool[];
36
+ readonly addonRequired?: ExtensionAddonRequirement | null;
18
37
  }
19
38
  /**
20
39
  * The extension catalog, single-sourced from `addons/godot_mcp/extensions.catalog.json`.
@@ -20,7 +20,183 @@
20
20
  * lockstep with the JSON so adding an entry there forces an update here.
21
21
  */
22
22
  export const EXTENSIONS_CATALOG = [
23
- // (none yet — see addons/godot_mcp/extensions.catalog.json / extensions.catalog.md)
23
+ {
24
+ name: 'Particles Tools',
25
+ description: 'AI MCP tools for Godot GpuParticles (2D & 3D): create, configure, start/stop, and inspect emitters.',
26
+ packageId: 'com.IvanMurzak.Godot.MCP.Particles',
27
+ version: null,
28
+ gitUrl: 'https://github.com/IvanMurzak/Godot-AI-Particles',
29
+ tools: [
30
+ { name: 'particles-defaults', description: 'Return the recommended starter config for a 2D/3D emitter.' },
31
+ { name: 'particles-create', description: 'Create a GpuParticles2D/GpuParticles3D node in the edited scene.' },
32
+ { name: 'particles-configure', description: "Update an emitter's scalar properties (clamped to valid ranges)." },
33
+ { name: 'particles-set-emitting', description: 'Start or stop emission, optionally restarting first.' },
34
+ { name: 'particles-get', description: "Read an emitter's scalar config (read-only)." },
35
+ ],
36
+ },
37
+ {
38
+ name: 'Tilemap Tools',
39
+ description: 'AI MCP tools for Godot TileMapLayer (4.3+): create layers, assign tilesets, set/erase cells, and inspect used cells.',
40
+ packageId: 'com.IvanMurzak.Godot.MCP.Tilemap',
41
+ version: null,
42
+ gitUrl: 'https://github.com/IvanMurzak/Godot-AI-Tilemap',
43
+ tools: [
44
+ { name: 'tilemap-create', description: 'Create a TileMapLayer node in the currently edited Godot scene.' },
45
+ { name: 'tilemap-set-tileset', description: 'Assign a TileSet resource to an existing TileMapLayer.' },
46
+ { name: 'tilemap-set-cell', description: 'Set a single cell on a TileMapLayer (by map + atlas coords).' },
47
+ { name: 'tilemap-erase-cell', description: 'Erase a single cell on a TileMapLayer (set it back to empty).' },
48
+ { name: 'tilemap-get-used-cells', description: 'List the used (non-empty) cells of a TileMapLayer (read-only).' },
49
+ { name: 'tilemap-clear', description: 'Clear all cells on a TileMapLayer (the assigned TileSet is kept).' },
50
+ ],
51
+ },
52
+ {
53
+ name: 'Navigation Tools',
54
+ description: 'AI MCP tools for Godot navigation (2D & 3D): create regions, agents, and links, set region meshes, configure agents, and inspect navigation nodes.',
55
+ packageId: 'com.IvanMurzak.Godot.MCP.Navigation',
56
+ version: null,
57
+ gitUrl: 'https://github.com/IvanMurzak/Godot-AI-Navigation',
58
+ tools: [
59
+ { name: 'navigation-defaults', description: 'Return the recommended starter config (radius, distances, max speed) for a 2D/3D NavigationAgent.' },
60
+ { name: 'navigation-region-create', description: 'Create a NavigationRegion2D/NavigationRegion3D node (a navigable area) in the edited scene.' },
61
+ { name: 'navigation-region-set-mesh', description: "Assign a region's navigation resource (NavigationPolygon in 2D, NavigationMesh in 3D)." },
62
+ { name: 'navigation-agent-create', description: 'Create a NavigationAgent2D/NavigationAgent3D node (pathfinding + avoidance) in the edited scene.' },
63
+ { name: 'navigation-agent-configure', description: "Update a NavigationAgent's scalar properties (clamped to valid ranges)." },
64
+ { name: 'navigation-link-create', description: 'Create a NavigationLink2D/NavigationLink3D node (an off-mesh connection between two points).' },
65
+ { name: 'navigation-get', description: "Read a navigation node's scalar config (read-only)." },
66
+ ],
67
+ },
68
+ {
69
+ name: 'Animation Tools',
70
+ description: 'AI MCP tools for Godot AnimationPlayer: create players, libraries, and animations, add tracks, insert keyframes, and inspect them.',
71
+ packageId: 'com.IvanMurzak.Godot.MCP.Animation',
72
+ version: null,
73
+ gitUrl: 'https://github.com/IvanMurzak/Godot-AI-Animation',
74
+ tools: [
75
+ { name: 'animation-defaults', description: 'Return the recommended starter config (length, loop mode) for a new animation.' },
76
+ { name: 'animation-player-create', description: 'Create an AnimationPlayer node in the currently edited Godot scene.' },
77
+ { name: 'animation-library-add', description: 'Add a new empty AnimationLibrary to an existing AnimationPlayer.' },
78
+ { name: 'animation-create', description: "Create an Animation in an AnimationPlayer's library (auto-created when missing)." },
79
+ { name: 'animation-add-track', description: 'Add a value or 3D transform track to an existing Animation.' },
80
+ { name: 'animation-insert-key', description: 'Insert a keyframe on an animation track.' },
81
+ { name: 'animation-get', description: "Read an AnimationPlayer's libraries, animations, and a clip's tracks (read-only)." },
82
+ ],
83
+ },
84
+ {
85
+ name: 'CSG Tools',
86
+ description: 'AI MCP tools for Godot CSG (Constructive Solid Geometry): create box/sphere/cylinder primitives and combiners, set boolean operations, and inspect them.',
87
+ packageId: 'com.IvanMurzak.Godot.MCP.CSG',
88
+ version: null,
89
+ gitUrl: 'https://github.com/IvanMurzak/Godot-AI-CSG',
90
+ tools: [
91
+ { name: 'csg-defaults', description: 'Return the recommended starter config (size / radius / height / segments) for a CSG node of the requested kind.' },
92
+ { name: 'csg-box-create', description: 'Create a CsgBox3D primitive in the currently edited Godot scene.' },
93
+ { name: 'csg-sphere-create', description: 'Create a CsgSphere3D primitive in the currently edited Godot scene.' },
94
+ { name: 'csg-cylinder-create', description: 'Create a CsgCylinder3D primitive in the currently edited Godot scene.' },
95
+ { name: 'csg-combiner-create', description: 'Create a CsgCombiner3D container that groups child CSG shapes for boolean ops.' },
96
+ { name: 'csg-set-operation', description: "Set an existing CSG node's boolean operation (Union / Intersection / Subtraction)." },
97
+ { name: 'csg-get', description: "Read a CSG node's scalar config (read-only)." },
98
+ ],
99
+ },
100
+ {
101
+ name: 'GridMap Tools',
102
+ description: 'AI MCP tools for Godot GridMap (3D tile-based maps): create, set/clear cells, assign a MeshLibrary, and inspect.',
103
+ packageId: 'com.IvanMurzak.Godot.MCP.GridMap',
104
+ version: null,
105
+ gitUrl: 'https://github.com/IvanMurzak/Godot-AI-GridMap',
106
+ tools: [
107
+ { name: 'gridmap-defaults', description: 'Return the recommended starter configuration for a new GridMap node.' },
108
+ { name: 'gridmap-create', description: 'Create a GridMap node in the currently edited Godot scene.' },
109
+ { name: 'gridmap-set-mesh-library', description: 'Assign a MeshLibrary resource to an existing GridMap node.' },
110
+ { name: 'gridmap-set-cell', description: 'Set a single cell of a GridMap to a MeshLibrary item.' },
111
+ { name: 'gridmap-clear-cell', description: 'Clear a single cell of a GridMap.' },
112
+ { name: 'gridmap-clear', description: 'Clear all cells of a GridMap.' },
113
+ { name: 'gridmap-get', description: "Read a GridMap's scalar config (read-only)." },
114
+ ],
115
+ },
116
+ {
117
+ name: 'PhantomCamera Tools',
118
+ description: 'AI MCP tools for the Godot Phantom Camera addon (Cinemachine-style virtual cameras): create hosts and cameras, set follow/look-at targets and priority, and inspect them.',
119
+ packageId: 'com.IvanMurzak.Godot.MCP.PhantomCamera',
120
+ version: null,
121
+ gitUrl: 'https://github.com/IvanMurzak/Godot-AI-PhantomCamera',
122
+ tools: [
123
+ { name: 'phantomcamera-defaults', description: 'Return the recommended starter config (priority, follow/look-at mode, damping) for a Phantom Camera.' },
124
+ { name: 'phantomcamera-host-create', description: 'Ensure a PhantomCameraHost exists under a Camera3D in the edited scene (required by the addon).' },
125
+ { name: 'phantomcamera-create', description: 'Create a PhantomCamera3D node (a virtual camera) in the currently edited Godot scene.' },
126
+ { name: 'phantomcamera-set-follow', description: "Set an existing PhantomCamera3D's follow mode and/or follow target." },
127
+ { name: 'phantomcamera-set-look-at', description: "Set an existing PhantomCamera3D's look-at mode and/or look-at target." },
128
+ { name: 'phantomcamera-set-priority', description: "Set an existing PhantomCamera3D's priority (higher wins; raising it switches the active camera)." },
129
+ { name: 'phantomcamera-get', description: "Read an existing PhantomCamera3D's scalar config (read-only)." },
130
+ ],
131
+ addonRequired: {
132
+ name: 'Phantom Camera',
133
+ assetLibId: '1822',
134
+ repo: 'ramokz/phantom-camera',
135
+ license: 'MIT',
136
+ },
137
+ },
138
+ {
139
+ name: 'Beehave Tools',
140
+ description: 'AI MCP tools for the Godot Beehave addon (behaviour-tree AI): scaffold a tree root, add composites, decorators, and leaf placeholders, and inspect them.',
141
+ packageId: 'com.IvanMurzak.Godot.MCP.Beehave',
142
+ version: null,
143
+ gitUrl: 'https://github.com/IvanMurzak/Godot-AI-Beehave',
144
+ tools: [
145
+ { name: 'beehave-defaults', description: 'Return the recommended starter skeleton (root, tick rate, a composite, and leaf placeholders) for a Beehave behaviour tree.' },
146
+ { name: 'beehave-tree-create', description: 'Create a BeehaveTree behaviour-tree root in the currently edited Godot scene.' },
147
+ { name: 'beehave-add-composite', description: 'Add a Selector/Sequence composite under an existing tree or composite.' },
148
+ { name: 'beehave-add-decorator', description: 'Add an Inverter/Limiter decorator under an existing tree or composite.' },
149
+ { name: 'beehave-add-leaf', description: 'Add an Action/Condition leaf placeholder under a composite or decorator.' },
150
+ { name: 'beehave-get', description: "Read a BeehaveTree's scalar config and dump its tree structure (read-only)." },
151
+ ],
152
+ addonRequired: {
153
+ name: 'Beehave',
154
+ assetLibId: '1349',
155
+ repo: 'bitbrain/beehave',
156
+ license: 'MIT',
157
+ },
158
+ },
159
+ {
160
+ name: 'Dialogic Tools',
161
+ description: 'AI MCP tools for the Godot Dialogic addon (dialogue / visual novels): create timeline and character resources, append text events, and inspect them.',
162
+ packageId: 'com.IvanMurzak.Godot.MCP.Dialogic',
163
+ version: null,
164
+ gitUrl: 'https://github.com/IvanMurzak/Godot-AI-Dialogic',
165
+ tools: [
166
+ { name: 'dialogic-defaults', description: 'Return the recommended starter timeline and character config for Dialogic authoring.' },
167
+ { name: 'dialogic-timeline-create', description: 'Create a Dialogic timeline resource (.dtl), seeded with a first text event.' },
168
+ { name: 'dialogic-character-create', description: 'Create a Dialogic character resource (.dch) with a display name and color.' },
169
+ { name: 'dialogic-timeline-add-text', description: 'Append a text event (optionally with a speaker) to an existing Dialogic timeline (.dtl).' },
170
+ { name: 'dialogic-get', description: "Read a Dialogic timeline (.dtl) or character (.dch) resource's config (read-only)." },
171
+ ],
172
+ addonRequired: {
173
+ name: 'Dialogic',
174
+ assetLibId: null,
175
+ repo: 'dialogic-godot/dialogic',
176
+ license: 'MIT',
177
+ },
178
+ },
179
+ {
180
+ name: 'Terrain3D Tools',
181
+ description: 'AI MCP tools for the Godot Terrain3D addon (TokisanGames heightmap terrain): create terrains, set the data directory, region size, and material, and inspect them.',
182
+ packageId: 'com.IvanMurzak.Godot.MCP.Terrain3D',
183
+ version: null,
184
+ gitUrl: 'https://github.com/IvanMurzak/Godot-AI-Terrain3D',
185
+ tools: [
186
+ { name: 'terrain3d-defaults', description: 'Return the recommended starter config (region size, mesh LODs, mesh size, vertex spacing, data directory) for a Terrain3D node.' },
187
+ { name: 'terrain3d-create', description: 'Create a Terrain3D node in the currently edited Godot scene (requires the Terrain3D addon).' },
188
+ { name: 'terrain3d-set-data-directory', description: "Set an existing Terrain3D node's res:// data directory (where region data persists)." },
189
+ { name: 'terrain3d-set-region-size', description: "Set an existing Terrain3D node's region size (snapped to a valid Terrain3D size)." },
190
+ { name: 'terrain3d-set-material', description: 'Assign a Terrain3DMaterial to an existing Terrain3D node (created when missing).' },
191
+ { name: 'terrain3d-get', description: "Read a Terrain3D node's scalar config (read-only)." },
192
+ ],
193
+ addonRequired: {
194
+ name: 'Terrain3D',
195
+ assetLibId: '3892',
196
+ repo: 'TokisanGames/Terrain3D',
197
+ license: 'MIT',
198
+ },
199
+ },
24
200
  ];
25
201
  /** True when a descriptor carries a concrete version pin (drives the up-to-date / update decision). */
26
202
  export function hasVersion(descriptor) {
@@ -1 +1 @@
1
- {"version":3,"file":"extensions-catalog.js","sourceRoot":"","sources":["../../src/utils/extensions-catalog.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,4EAA4E;AAC5E,mFAAmF;AACnF,iFAAiF;AACjF,kFAAkF;AAClF,wEAAwE;AACxE,EAAE;AACF,mFAAmF;AACnF,qFAAqF;AACrF,mFAAmF;AACnF,4EAA4E;AAC5E,6EAA6E;AAC7E,EAAE;AACF,4DAA4D;AAsB5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAmC;AAChE,oFAAoF;CAC5E,CAAC;AAEX,uGAAuG;AACvG,MAAM,UAAU,UAAU,CAAC,UAA+B;IACxD,OAAO,UAAU,CAAC,OAAO,KAAK,IAAI,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AACzE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAC3B,EAA6B,EAC7B,UAA0C,kBAAkB;IAE5D,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,MAAM,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAE/B,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,WAAW,EAAE,CAC1D,CAAC;IACF,IAAI,WAAW;QAAE,OAAO,WAAW,CAAC;IAEpC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC;AACpF,CAAC"}
1
+ {"version":3,"file":"extensions-catalog.js","sourceRoot":"","sources":["../../src/utils/extensions-catalog.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.14.0",
3
+ "version": "0.15.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",