unity-mcp-cli 0.87.0 → 0.89.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.
Files changed (46) hide show
  1. package/README.md +60 -2
  2. package/dist/commands/install-extension.d.ts +2 -0
  3. package/dist/commands/install-extension.js +99 -0
  4. package/dist/commands/install-extension.js.map +1 -0
  5. package/dist/commands/install-plugin.js +20 -0
  6. package/dist/commands/install-plugin.js.map +1 -1
  7. package/dist/commands/login.js +47 -2
  8. package/dist/commands/login.js.map +1 -1
  9. package/dist/commands/run-tool-builder.js +19 -3
  10. package/dist/commands/run-tool-builder.js.map +1 -1
  11. package/dist/commands/setup-skills.js +1 -1
  12. package/dist/commands/setup-skills.js.map +1 -1
  13. package/dist/commands/status.js +1 -1
  14. package/dist/commands/status.js.map +1 -1
  15. package/dist/commands/wait-for-ready.js +4 -4
  16. package/dist/commands/wait-for-ready.js.map +1 -1
  17. package/dist/index.js +2 -0
  18. package/dist/index.js.map +1 -1
  19. package/dist/lib/install-extension.d.ts +25 -0
  20. package/dist/lib/install-extension.js +182 -0
  21. package/dist/lib/install-extension.js.map +1 -0
  22. package/dist/lib/run-tool.js +79 -41
  23. package/dist/lib/run-tool.js.map +1 -1
  24. package/dist/lib/types.d.ts +92 -4
  25. package/dist/lib.d.ts +4 -1
  26. package/dist/lib.js +5 -0
  27. package/dist/lib.js.map +1 -1
  28. package/dist/utils/cloud-credentials.d.ts +43 -0
  29. package/dist/utils/cloud-credentials.js +84 -0
  30. package/dist/utils/cloud-credentials.js.map +1 -0
  31. package/dist/utils/cloud-login.d.ts +29 -13
  32. package/dist/utils/cloud-login.js +198 -17
  33. package/dist/utils/cloud-login.js.map +1 -1
  34. package/dist/utils/config.d.ts +15 -21
  35. package/dist/utils/config.js +8 -26
  36. package/dist/utils/config.js.map +1 -1
  37. package/dist/utils/connection.d.ts +8 -5
  38. package/dist/utils/connection.js +7 -3
  39. package/dist/utils/connection.js.map +1 -1
  40. package/dist/utils/extensions-catalog.d.ts +40 -0
  41. package/dist/utils/extensions-catalog.js +197 -0
  42. package/dist/utils/extensions-catalog.js.map +1 -0
  43. package/dist/utils/manifest.d.ts +38 -0
  44. package/dist/utils/manifest.js +50 -8
  45. package/dist/utils/manifest.js.map +1 -1
  46. package/package.json +2 -2
@@ -0,0 +1,40 @@
1
+ /** One tool a catalogue extension contributes — mirrors the JSON `tools[]` entry. */
2
+ export interface ExtensionTool {
3
+ readonly name: string;
4
+ readonly description: string;
5
+ }
6
+ /**
7
+ * One installable extension — the CLI analog of the C# `ExtensionPanel.ExtensionData`.
8
+ * `packageId` is the INSTALL IDENTITY (the `Packages/manifest.json` dependency key,
9
+ * resolved from the OpenUPM scoped registry).
10
+ * `version` is `null` for a floating (unpinned) reference — every catalogue entry is
11
+ * unpinned, so OpenUPM's `dist-tags.latest` is resolved live at install time.
12
+ *
13
+ * `tools` is the same CURATED highlight list the editor renders in an extension's
14
+ * tooltip (`ExtensionPanel.BuildTooltip`) — it is deliberately NOT an exhaustive
15
+ * inventory of the extension's MCP tools, and must not be consumed as one.
16
+ */
17
+ export interface ExtensionDescriptor {
18
+ readonly name: string;
19
+ readonly description: string;
20
+ readonly packageId: string;
21
+ readonly version: string | null;
22
+ readonly gitUrl: string | null;
23
+ readonly tools: readonly ExtensionTool[];
24
+ }
25
+ /**
26
+ * The extension catalogue, single-sourced from
27
+ * `Unity-MCP-Plugin/Packages/com.ivanmurzak.unity.mcp/extensions.catalog.json`.
28
+ * Ten shipped extensions; `Unity-AI-Tools-Template` is a template and is excluded.
29
+ */
30
+ export declare const EXTENSIONS_CATALOG: readonly ExtensionDescriptor[];
31
+ /** True when a descriptor carries a concrete version pin (drives the up-to-date / update decision). */
32
+ export declare function hasVersion(descriptor: ExtensionDescriptor): boolean;
33
+ /**
34
+ * Resolve a user-supplied `<id>` to a catalogue descriptor. Matches by `packageId`
35
+ * first (case-insensitively — UPM package names are lowercase by convention, and
36
+ * this is the install identity), then falls back to an exact case-insensitive `name`
37
+ * match for convenience (`unity-mcp-cli install-extension Tilemap`). Returns `null`
38
+ * when absent or `id` is empty.
39
+ */
40
+ export declare function findExtension(id: string | undefined | null, catalog?: readonly ExtensionDescriptor[]): ExtensionDescriptor | null;
@@ -0,0 +1,197 @@
1
+ // The CLI's typed mirror of the SHARED extension catalogue — the single source of
2
+ // truth `Unity-MCP-Plugin/Packages/com.ivanmurzak.unity.mcp/extensions.catalog.json`
3
+ // (see that file's sibling `extensions.catalog.md`).
4
+ //
5
+ // There are THREE artifacts holding this same list, and all three are kept in
6
+ // lockstep by build-failing parity tests:
7
+ //
8
+ // 1. `extensions.catalog.json` — the JSON source of truth, shipped in the UPM package.
9
+ // 2. `MainWindowEditor._extensions` — the C# array that drives the editor's Extensions
10
+ // section and `ExtensionPanel.AddToManifest`.
11
+ // 3. `EXTENSIONS_CATALOG` (this file) — drives `installExtension` in this CLI.
12
+ //
13
+ // SINGLE SOURCE OF TRUTH: this constant MUST stay equivalent to the JSON. The parity
14
+ // test `cli/tests/extensions-catalog-parity.test.ts` reads the JSON and FAILS the build
15
+ // if this mirror drifts; `cli/tests/extensions-catalog-csharp-parity.test.ts` does the
16
+ // same for the C# array. Adding an extension = appending an entry to the JSON, the C#
17
+ // array, AND this array (both tests enforce it). This mirror exists so the published npm
18
+ // package stays self-contained — no runtime `../Unity-MCP-Plugin` dependency.
19
+ //
20
+ // No top-level side effects; pure data + pure lookups only.
21
+ /**
22
+ * The extension catalogue, single-sourced from
23
+ * `Unity-MCP-Plugin/Packages/com.ivanmurzak.unity.mcp/extensions.catalog.json`.
24
+ * Ten shipped extensions; `Unity-AI-Tools-Template` is a template and is excluded.
25
+ */
26
+ export const EXTENSIONS_CATALOG = [
27
+ {
28
+ name: 'Animation',
29
+ description: 'AI-driven animation control and playback tools.',
30
+ packageId: 'com.ivanmurzak.unity.mcp.animation',
31
+ version: null,
32
+ gitUrl: 'https://github.com/IvanMurzak/Unity-AI-Animation.git',
33
+ tools: [
34
+ { name: 'animation-create', description: 'Create AnimationClip assets with keyframes' },
35
+ { name: 'animation-get-data', description: 'Inspect clip curves, events, and properties' },
36
+ { name: 'animation-modify', description: 'Edit curves, events, and settings on a clip' },
37
+ { name: 'animator-create', description: 'Create AnimatorController assets' },
38
+ { name: 'animator-get-data', description: 'Inspect controller layers, states, and parameters' },
39
+ { name: 'animator-modify', description: 'Edit parameters, states, and transitions' },
40
+ ],
41
+ },
42
+ {
43
+ name: 'Cinemachine',
44
+ description: 'AI-assisted Cinemachine camera setup and configuration tools.',
45
+ packageId: 'com.ivanmurzak.unity.mcp.cinemachine',
46
+ version: null,
47
+ gitUrl: 'https://github.com/IvanMurzak/Unity-AI-Cinemachine.git',
48
+ tools: [
49
+ { name: 'cinemachine-camera-create', description: 'Create a CinemachineCamera in the scene' },
50
+ { name: 'cinemachine-set-targets', description: 'Set the Follow and LookAt targets' },
51
+ { name: 'cinemachine-set-lens', description: 'Configure FOV, clip planes, and dutch' },
52
+ { name: 'cinemachine-set-body', description: 'Set the position-control component (Follow/Orbital/...)' },
53
+ { name: 'cinemachine-set-noise', description: 'Add camera shake via Perlin noise' },
54
+ ],
55
+ },
56
+ {
57
+ name: 'InputSystem',
58
+ description: 'AI-assisted Unity Input System authoring: InputActionAssets, maps, actions, bindings, and control schemes.',
59
+ packageId: 'com.ivanmurzak.unity.mcp.inputsystem',
60
+ version: null,
61
+ gitUrl: 'https://github.com/IvanMurzak/Unity-AI-InputSystem.git',
62
+ tools: [
63
+ { name: 'inputsystem-asset-create', description: 'Create a new .inputactions InputActionAsset' },
64
+ { name: 'inputsystem-actionmap-add', description: 'Add an ActionMap to the asset' },
65
+ { name: 'inputsystem-action-add', description: 'Add an Action (type + expectedControlType)' },
66
+ { name: 'inputsystem-binding-add', description: 'Add a binding path to an Action' },
67
+ { name: 'inputsystem-binding-composite-add', description: 'Add a composite binding (2DVector/1DAxis)' },
68
+ { name: 'inputsystem-controlscheme-add', description: 'Add a control scheme with device requirements' },
69
+ { name: 'inputsystem-get', description: "Read the asset's maps, actions, and bindings" },
70
+ ],
71
+ },
72
+ {
73
+ name: 'Navigation',
74
+ description: 'AI-driven NavMesh navigation: surfaces, baking, agents, and links.',
75
+ packageId: 'com.ivanmurzak.unity.mcp.navigation',
76
+ version: null,
77
+ gitUrl: 'https://github.com/IvanMurzak/Unity-AI-Navigation.git',
78
+ tools: [
79
+ { name: 'navigation-surface-add', description: 'Add and configure a NavMeshSurface' },
80
+ { name: 'navigation-set-bake-settings', description: 'Set agent radius/height/slope/step and voxel size' },
81
+ { name: 'navigation-surface-bake', description: 'Bake or clear a NavMeshSurface' },
82
+ { name: 'navigation-modifier-add', description: 'Add a NavMeshModifier (override area / ignore)' },
83
+ { name: 'navigation-modifier-volume-add', description: 'Add a NavMeshModifierVolume' },
84
+ { name: 'navigation-link-add', description: 'Add a NavMeshLink between two points' },
85
+ { name: 'navigation-agent-add', description: 'Add and configure a NavMeshAgent' },
86
+ { name: 'navigation-agent-set-destination', description: "Set a NavMeshAgent's destination" },
87
+ { name: 'navigation-list', description: 'List NavMeshSurfaces and NavMeshAgents' },
88
+ { name: 'navigation-get', description: 'Serialize any NavMesh component' },
89
+ { name: 'navigation-modify', description: 'Modify any NavMesh component via ReflectorNet' },
90
+ ],
91
+ },
92
+ {
93
+ name: 'ParticleSystem',
94
+ description: 'AI-powered particle system creation and control tools.',
95
+ packageId: 'com.ivanmurzak.unity.mcp.particlesystem',
96
+ version: null,
97
+ gitUrl: 'https://github.com/IvanMurzak/Unity-AI-ParticleSystem.git',
98
+ tools: [
99
+ { name: 'particle-system-get', description: 'Inspect ParticleSystem modules and settings' },
100
+ { name: 'particle-system-modify', description: 'Modify emission, shape, color, noise, and more' },
101
+ ],
102
+ },
103
+ {
104
+ name: 'ProBuilder',
105
+ description: 'AI-assisted ProBuilder geometry modeling tools.',
106
+ packageId: 'com.ivanmurzak.unity.mcp.probuilder',
107
+ version: null,
108
+ gitUrl: 'https://github.com/IvanMurzak/Unity-AI-ProBuilder.git',
109
+ tools: [
110
+ { name: 'probuilder-create-shape', description: 'Create editable 3D primitives in the scene' },
111
+ { name: 'probuilder-get-mesh-info', description: 'Retrieve faces, vertices, and edges data' },
112
+ { name: 'probuilder-extrude', description: 'Extrude faces along their normals' },
113
+ { name: 'probuilder-delete-faces', description: 'Remove faces to create holes or trim geometry' },
114
+ { name: 'probuilder-set-face-material', description: 'Assign materials to individual faces' },
115
+ ],
116
+ },
117
+ {
118
+ name: 'Splines',
119
+ description: 'AI-assisted Spline authoring: containers, knots, tangents, and evaluation.',
120
+ packageId: 'com.ivanmurzak.unity.mcp.splines',
121
+ version: null,
122
+ gitUrl: 'https://github.com/IvanMurzak/Unity-AI-Splines.git',
123
+ tools: [
124
+ { name: 'splines-container-create', description: 'Create a SplineContainer in the scene' },
125
+ { name: 'splines-add-knot', description: 'Append a knot to a spline' },
126
+ { name: 'splines-set-knot', description: "Set a knot's position, tangents, and rotation" },
127
+ { name: 'splines-set-tangent-mode', description: "Set a knot's tangent mode" },
128
+ { name: 'splines-evaluate', description: 'Evaluate position/tangent/up along a spline' },
129
+ { name: 'splines-modify', description: 'Modify any Splines component via ReflectorNet' },
130
+ ],
131
+ },
132
+ {
133
+ name: 'Terrain',
134
+ description: 'AI-powered Unity Terrain authoring tools.',
135
+ packageId: 'com.ivanmurzak.unity.mcp.terrain',
136
+ version: null,
137
+ gitUrl: 'https://github.com/IvanMurzak/Unity-AI-Terrain.git',
138
+ tools: [
139
+ { name: 'terrain-create', description: 'Create a Terrain GameObject backed by new TerrainData' },
140
+ { name: 'terrain-set-heights', description: 'Sculpt heightmap values over a region or the whole terrain' },
141
+ { name: 'terrain-paint-layer', description: 'Paint a TerrainLayer onto the alphamap (splatmap)' },
142
+ { name: 'terrain-place-trees', description: 'Scatter or place trees from a tree prototype' },
143
+ { name: 'terrain-set-neighbors', description: 'Stitch neighbor Terrains so Unity blends seams' },
144
+ ],
145
+ },
146
+ {
147
+ name: 'Tilemap',
148
+ description: 'AI-assisted 2D Tilemap creation, painting, and tile/RuleTile asset tools.',
149
+ packageId: 'com.ivanmurzak.unity.mcp.tilemap',
150
+ version: null,
151
+ gitUrl: 'https://github.com/IvanMurzak/Unity-AI-Tilemap.git',
152
+ tools: [
153
+ { name: 'tilemap-create', description: 'Create a Grid + Tilemap + TilemapRenderer' },
154
+ { name: 'tilemap-set-tile', description: 'Paint a tile into a cell' },
155
+ { name: 'tilemap-box-fill', description: 'Fill a rectangular region with a tile' },
156
+ { name: 'tilemap-create-tile-asset', description: 'Create a Tile asset from a Sprite' },
157
+ { name: 'tilemap-create-rule-tile', description: 'Create a RuleTile asset (2D Tilemap Extras)' },
158
+ ],
159
+ },
160
+ {
161
+ name: 'Timeline',
162
+ description: 'AI-assisted Timeline cutscene and sequence authoring tools.',
163
+ packageId: 'com.ivanmurzak.unity.mcp.timeline',
164
+ version: null,
165
+ gitUrl: 'https://github.com/IvanMurzak/Unity-AI-Timeline.git',
166
+ tools: [
167
+ { name: 'timeline-create', description: 'Create a TimelineAsset (.playable)' },
168
+ { name: 'timeline-track-add', description: 'Add Animation/Activation/Audio/Signal/Control tracks' },
169
+ { name: 'timeline-clip-add', description: 'Add clips to a track with start and duration' },
170
+ { name: 'timeline-director-bind', description: 'Bind a TimelineAsset to a scene PlayableDirector' },
171
+ { name: 'timeline-modify', description: 'Modify any Timeline object via ReflectorNet' },
172
+ ],
173
+ },
174
+ ];
175
+ /** True when a descriptor carries a concrete version pin (drives the up-to-date / update decision). */
176
+ export function hasVersion(descriptor) {
177
+ return descriptor.version !== null && descriptor.version.trim() !== '';
178
+ }
179
+ /**
180
+ * Resolve a user-supplied `<id>` to a catalogue descriptor. Matches by `packageId`
181
+ * first (case-insensitively — UPM package names are lowercase by convention, and
182
+ * this is the install identity), then falls back to an exact case-insensitive `name`
183
+ * match for convenience (`unity-mcp-cli install-extension Tilemap`). Returns `null`
184
+ * when absent or `id` is empty.
185
+ */
186
+ export function findExtension(id, catalog = EXTENSIONS_CATALOG) {
187
+ if (id === undefined || id === null)
188
+ return null;
189
+ const needle = id.trim();
190
+ if (needle === '')
191
+ return null;
192
+ const byPackageId = catalog.find((d) => d.packageId.toLowerCase() === needle.toLowerCase());
193
+ if (byPackageId)
194
+ return byPackageId;
195
+ return catalog.find((d) => d.name.toLowerCase() === needle.toLowerCase()) ?? null;
196
+ }
197
+ //# sourceMappingURL=extensions-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensions-catalog.js","sourceRoot":"","sources":["../../src/utils/extensions-catalog.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,23 @@ import { type LibLogger } from '../lib/logger.js';
8
8
  * styled logger adapter explicitly to preserve the historical output.
9
9
  */
10
10
  export declare function resolveLatestVersion(logger?: LibLogger): Promise<string>;
11
+ /**
12
+ * Resolve the latest version of ANY OpenUPM-hosted package (the plugin itself, or
13
+ * one of the catalogue extensions) from the OpenUPM registry. Throws an error with
14
+ * actionable suggestions if the network request fails.
15
+ *
16
+ * This is the generalisation of {@link resolveLatestVersion}: same 5000 ms
17
+ * `AbortController` abort, same "no cached fallback" behaviour, same actionable
18
+ * error — the only difference is that the package id is a parameter and the
19
+ * suggested escape-hatch flag is caller-supplied, because `install-plugin` offers
20
+ * `--plugin-version` where `install-extension` offers `--version`.
21
+ *
22
+ * @param packageId OpenUPM package id to resolve (e.g. `com.ivanmurzak.unity.mcp.tilemap`).
23
+ * @param logger Optional logger. Defaults to `silentLogger` so library callers stay
24
+ * side-effect-free.
25
+ * @param versionFlag Name of the CLI flag suggested in the failure message.
26
+ */
27
+ export declare function resolveLatestPackageVersion(packageId: string, logger?: LibLogger, versionFlag?: string): Promise<string>;
11
28
  /**
12
29
  * Determines if the version should be updated.
13
30
  * Only update if the new version is higher than the current version.
@@ -36,6 +53,27 @@ export interface AddPluginResult {
36
53
  * styled logger adapter explicitly to preserve the historical output.
37
54
  */
38
55
  export declare function addPluginToManifest(projectPath: string, version: string, force?: boolean, logger?: LibLogger): AddPluginResult;
56
+ /**
57
+ * Add ANY OpenUPM-hosted package to a Unity project's `Packages/manifest.json` —
58
+ * the plugin itself, or one of the catalogue extensions.
59
+ *
60
+ * This is the generalisation of {@link addPluginToManifest}, which now delegates
61
+ * here with `PACKAGE_ID`. Keeping ONE implementation matters because the
62
+ * scoped-registry rules (registry name, URL, and the `REQUIRED_SCOPES` pair
63
+ * `com.ivanmurzak` / `extensions.unity`) must be identical for the plugin and for
64
+ * every extension — the extensions live under the `com.ivanmurzak` scope, so an
65
+ * extension installed without that scope resolves against Unity's default registry
66
+ * and fails. It also mirrors the C# editor installer
67
+ * (`ExtensionPanel.AddToManifest` / `EnsureScopedRegistry`), which single-sources
68
+ * the same three constants on the Unity side.
69
+ *
70
+ * Behaviour (unchanged from the plugin-only version):
71
+ * - Adds the OpenUPM scoped registry with the required scopes when missing.
72
+ * - Adds/updates the package dependency.
73
+ * - When `force` is false (auto-resolved version): never downgrades.
74
+ * - When `force` is true (user-specified version): allows downgrade.
75
+ */
76
+ export declare function addPackageToManifest(projectPath: string, packageId: string, version: string, force?: boolean, logger?: LibLogger): AddPluginResult;
39
77
  export interface RemovePluginResult {
40
78
  /** Whether the plugin was present and has been removed. */
41
79
  removed: boolean;
@@ -18,10 +18,29 @@ const REQUIRED_SCOPES = [
18
18
  * styled logger adapter explicitly to preserve the historical output.
19
19
  */
20
20
  export async function resolveLatestVersion(logger = silentLogger) {
21
+ return resolveLatestPackageVersion(PACKAGE_ID, logger);
22
+ }
23
+ /**
24
+ * Resolve the latest version of ANY OpenUPM-hosted package (the plugin itself, or
25
+ * one of the catalogue extensions) from the OpenUPM registry. Throws an error with
26
+ * actionable suggestions if the network request fails.
27
+ *
28
+ * This is the generalisation of {@link resolveLatestVersion}: same 5000 ms
29
+ * `AbortController` abort, same "no cached fallback" behaviour, same actionable
30
+ * error — the only difference is that the package id is a parameter and the
31
+ * suggested escape-hatch flag is caller-supplied, because `install-plugin` offers
32
+ * `--plugin-version` where `install-extension` offers `--version`.
33
+ *
34
+ * @param packageId OpenUPM package id to resolve (e.g. `com.ivanmurzak.unity.mcp.tilemap`).
35
+ * @param logger Optional logger. Defaults to `silentLogger` so library callers stay
36
+ * side-effect-free.
37
+ * @param versionFlag Name of the CLI flag suggested in the failure message.
38
+ */
39
+ export async function resolveLatestPackageVersion(packageId, logger = silentLogger, versionFlag = '--plugin-version') {
21
40
  const controller = new AbortController();
22
41
  const timeout = setTimeout(() => controller.abort(), 5000);
23
42
  try {
24
- const res = await fetch(`https://package.openupm.com/${PACKAGE_ID}`, {
43
+ const res = await fetch(`https://package.openupm.com/${packageId}`, {
25
44
  signal: controller.signal,
26
45
  headers: { Accept: 'application/json' },
27
46
  });
@@ -34,14 +53,14 @@ export async function resolveLatestVersion(logger = silentLogger) {
34
53
  }
35
54
  }
36
55
  throw new Error(`OpenUPM returned status ${res.status}. ` +
37
- 'Check your network connection and retry, or specify a version manually with --plugin-version <version>');
56
+ `Check your network connection and retry, or specify a version manually with ${versionFlag} <version>`);
38
57
  }
39
58
  catch (err) {
40
- if (err instanceof Error && err.message.includes('--plugin-version')) {
59
+ if (err instanceof Error && err.message.includes(versionFlag)) {
41
60
  throw err;
42
61
  }
43
- throw new Error('Failed to resolve latest plugin version from OpenUPM. ' +
44
- 'Check your network connection and retry, or specify a version manually with --plugin-version <version>');
62
+ throw new Error(`Failed to resolve the latest version of ${packageId} from OpenUPM. ` +
63
+ `Check your network connection and retry, or specify a version manually with ${versionFlag} <version>`);
45
64
  }
46
65
  finally {
47
66
  clearTimeout(timeout);
@@ -80,6 +99,29 @@ export function shouldUpdateVersion(currentVersion, newVersion) {
80
99
  * styled logger adapter explicitly to preserve the historical output.
81
100
  */
82
101
  export function addPluginToManifest(projectPath, version, force = false, logger = silentLogger) {
102
+ return addPackageToManifest(projectPath, PACKAGE_ID, version, force, logger);
103
+ }
104
+ /**
105
+ * Add ANY OpenUPM-hosted package to a Unity project's `Packages/manifest.json` —
106
+ * the plugin itself, or one of the catalogue extensions.
107
+ *
108
+ * This is the generalisation of {@link addPluginToManifest}, which now delegates
109
+ * here with `PACKAGE_ID`. Keeping ONE implementation matters because the
110
+ * scoped-registry rules (registry name, URL, and the `REQUIRED_SCOPES` pair
111
+ * `com.ivanmurzak` / `extensions.unity`) must be identical for the plugin and for
112
+ * every extension — the extensions live under the `com.ivanmurzak` scope, so an
113
+ * extension installed without that scope resolves against Unity's default registry
114
+ * and fails. It also mirrors the C# editor installer
115
+ * (`ExtensionPanel.AddToManifest` / `EnsureScopedRegistry`), which single-sources
116
+ * the same three constants on the Unity side.
117
+ *
118
+ * Behaviour (unchanged from the plugin-only version):
119
+ * - Adds the OpenUPM scoped registry with the required scopes when missing.
120
+ * - Adds/updates the package dependency.
121
+ * - When `force` is false (auto-resolved version): never downgrades.
122
+ * - When `force` is true (user-specified version): allows downgrade.
123
+ */
124
+ export function addPackageToManifest(projectPath, packageId, version, force = false, logger = silentLogger) {
83
125
  const manifestPath = path.join(projectPath, 'Packages', 'manifest.json');
84
126
  if (!fs.existsSync(manifestPath)) {
85
127
  throw new Error(`manifest.json not found at: ${manifestPath}`);
@@ -119,15 +161,15 @@ export function addPluginToManifest(projectPath, version, force = false, logger
119
161
  manifest.dependencies = {};
120
162
  modified = true;
121
163
  }
122
- const currentVersion = manifest.dependencies[PACKAGE_ID];
164
+ const currentVersion = manifest.dependencies[packageId];
123
165
  let resolvedVersion = version;
124
166
  if (!currentVersion || force || shouldUpdateVersion(currentVersion, version)) {
125
- manifest.dependencies[PACKAGE_ID] = version;
167
+ manifest.dependencies[packageId] = version;
126
168
  modified = true;
127
169
  }
128
170
  else {
129
171
  resolvedVersion = currentVersion;
130
- logger.info(`Plugin already at version ${currentVersion} (>= ${version}). Skipping version update. Use --plugin-version to force a specific version.`);
172
+ logger.info(`${packageId} already at version ${currentVersion} (>= ${version}). Skipping version update. Pass an explicit version to force a specific version.`);
131
173
  }
132
174
  // --- Write back
133
175
  if (modified) {
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/utils/manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/utils/manifest.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "unity-mcp-cli",
3
- "version": "0.87.0",
3
+ "version": "0.89.0",
4
4
  "description": "Cross-platform CLI tool for AI Game Developer (Skills & MCP). Full AI develop and test loop. Efficient token usage, advanced tools. Creates Unity project, installs plugins, configures tools, and manages HTTP connection with Unity Editor and a game made with Unity. Works with Claude Code, Gemini, Copilot, Cursor and any other absolutely for free.",
5
5
  "type": "module",
6
6
  "main": "dist/lib.js",
@@ -62,7 +62,7 @@
62
62
  "node": "^20.19.0 || >=22.12.0"
63
63
  },
64
64
  "dependencies": {
65
- "@baizor/gamedev-cli-core": "^0.1.0",
65
+ "@baizor/gamedev-cli-core": "^0.4.0",
66
66
  "chalk": "^5.6.2",
67
67
  "commander": "^13.1.0",
68
68
  "yocto-spinner": "^1.1.0"