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.
- package/README.md +60 -2
- package/dist/commands/install-extension.d.ts +2 -0
- package/dist/commands/install-extension.js +99 -0
- package/dist/commands/install-extension.js.map +1 -0
- package/dist/commands/install-plugin.js +20 -0
- package/dist/commands/install-plugin.js.map +1 -1
- package/dist/commands/login.js +47 -2
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/run-tool-builder.js +19 -3
- package/dist/commands/run-tool-builder.js.map +1 -1
- package/dist/commands/setup-skills.js +1 -1
- package/dist/commands/setup-skills.js.map +1 -1
- package/dist/commands/status.js +1 -1
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/wait-for-ready.js +4 -4
- package/dist/commands/wait-for-ready.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/install-extension.d.ts +25 -0
- package/dist/lib/install-extension.js +182 -0
- package/dist/lib/install-extension.js.map +1 -0
- package/dist/lib/run-tool.js +79 -41
- package/dist/lib/run-tool.js.map +1 -1
- package/dist/lib/types.d.ts +92 -4
- package/dist/lib.d.ts +4 -1
- package/dist/lib.js +5 -0
- package/dist/lib.js.map +1 -1
- package/dist/utils/cloud-credentials.d.ts +43 -0
- package/dist/utils/cloud-credentials.js +84 -0
- package/dist/utils/cloud-credentials.js.map +1 -0
- package/dist/utils/cloud-login.d.ts +29 -13
- package/dist/utils/cloud-login.js +198 -17
- package/dist/utils/cloud-login.js.map +1 -1
- package/dist/utils/config.d.ts +15 -21
- package/dist/utils/config.js +8 -26
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/connection.d.ts +8 -5
- package/dist/utils/connection.js +7 -3
- package/dist/utils/connection.js.map +1 -1
- package/dist/utils/extensions-catalog.d.ts +40 -0
- package/dist/utils/extensions-catalog.js +197 -0
- package/dist/utils/extensions-catalog.js.map +1 -0
- package/dist/utils/manifest.d.ts +38 -0
- package/dist/utils/manifest.js +50 -8
- package/dist/utils/manifest.js.map +1 -1
- 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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"}
|
package/dist/utils/manifest.d.ts
CHANGED
|
@@ -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;
|
package/dist/utils/manifest.js
CHANGED
|
@@ -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/${
|
|
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
|
-
|
|
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(
|
|
59
|
+
if (err instanceof Error && err.message.includes(versionFlag)) {
|
|
41
60
|
throw err;
|
|
42
61
|
}
|
|
43
|
-
throw new Error(
|
|
44
|
-
|
|
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[
|
|
164
|
+
const currentVersion = manifest.dependencies[packageId];
|
|
123
165
|
let resolvedVersion = version;
|
|
124
166
|
if (!currentVersion || force || shouldUpdateVersion(currentVersion, version)) {
|
|
125
|
-
manifest.dependencies[
|
|
167
|
+
manifest.dependencies[packageId] = version;
|
|
126
168
|
modified = true;
|
|
127
169
|
}
|
|
128
170
|
else {
|
|
129
171
|
resolvedVersion = currentVersion;
|
|
130
|
-
logger.info(
|
|
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":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAkB,MAAM,kBAAkB,CAAC;AAEhE,MAAM,UAAU,GAAG,0BAA0B,CAAC;AAC9C,MAAM,aAAa,GAAG,qBAAqB,CAAC;AAC5C,MAAM,YAAY,GAAG,6BAA6B,CAAC;AACnD,MAAM,eAAe,GAAG;IACtB,gBAAgB;IAChB,kBAAkB;CACnB,CAAC;AAcF;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,SAAoB,YAAY;IACzE,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;IAE3D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,+BAA+B,
|
|
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.
|
|
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.
|
|
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"
|