unity-mcp-cli 0.53.1 → 0.54.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 +55 -63
- package/dist/commands/configure.js +3 -0
- package/dist/commands/configure.js.map +1 -1
- package/dist/commands/create-project.js +6 -3
- package/dist/commands/create-project.js.map +1 -1
- package/dist/commands/install-plugin.js +14 -3
- package/dist/commands/install-plugin.js.map +1 -1
- package/dist/commands/install-unity.js +27 -14
- package/dist/commands/install-unity.js.map +1 -1
- package/dist/commands/open.js +75 -7
- package/dist/commands/open.js.map +1 -1
- package/dist/commands/remove-plugin.js +2 -0
- package/dist/commands/remove-plugin.js.map +1 -1
- package/dist/index.js +13 -6
- package/dist/index.js.map +1 -1
- package/dist/utils/manifest.d.ts +6 -3
- package/dist/utils/manifest.js +30 -27
- package/dist/utils/manifest.js.map +1 -1
- package/dist/utils/ui.d.ts +23 -3
- package/dist/utils/ui.js +170 -18
- package/dist/utils/ui.js.map +1 -1
- package/dist/utils/unity-editor.d.ts +5 -0
- package/dist/utils/unity-editor.js +42 -2
- package/dist/utils/unity-editor.js.map +1 -1
- package/dist/utils/unity-hub.d.ts +29 -1
- package/dist/utils/unity-hub.js +260 -17
- package/dist/utils/unity-hub.js.map +1 -1
- package/docs/README.es.md +4 -4
- package/docs/README.ja.md +4 -4
- package/docs/README.zh-CN.md +4 -4
- package/package.json +2 -5
- package/dist/commands/connect.d.ts +0 -2
- package/dist/commands/connect.js +0 -87
- package/dist/commands/connect.js.map +0 -1
package/README.md
CHANGED
|
@@ -21,8 +21,10 @@ Cross-platform CLI tool for **[Unity MCP](https://github.com/IvanMurzak/Unity-MC
|
|
|
21
21
|
- :white_check_mark: **Install plugin** — add Unity-MCP plugin to `manifest.json` with all required scoped registries
|
|
22
22
|
- :white_check_mark: **Remove plugin** — remove Unity-MCP plugin from `manifest.json`
|
|
23
23
|
- :white_check_mark: **Configure** — enable/disable MCP tools, prompts, and resources
|
|
24
|
-
- :white_check_mark: **Connect** — launch Unity with MCP environment variables for automated server connection
|
|
24
|
+
- :white_check_mark: **Open & Connect** — launch Unity with optional MCP environment variables for automated server connection
|
|
25
25
|
- :white_check_mark: **Cross-platform** — Windows, macOS, and Linux
|
|
26
|
+
- :white_check_mark: **CI-friendly** — auto-detects non-interactive terminals and disables spinners/colors
|
|
27
|
+
- :white_check_mark: **Verbose mode** — use `--verbose` on any command for detailed diagnostic output
|
|
26
28
|
- :white_check_mark: **Version-aware** — never downgrades plugin versions, resolves latest from OpenUPM
|
|
27
29
|
|
|
28
30
|

|
|
@@ -56,7 +58,7 @@ unity-mcp-cli install-plugin /path/to/unity/project
|
|
|
56
58
|
- [`install-plugin`](#install-plugin) — Install Unity-MCP plugin into a project
|
|
57
59
|
- [`remove-plugin`](#remove-plugin) — Remove Unity-MCP plugin from a project
|
|
58
60
|
- [`configure`](#configure) — Configure MCP tools, prompts, and resources
|
|
59
|
-
|
|
61
|
+
- [Global Options](#global-options)
|
|
60
62
|
- [Full Automation Example](#full-automation-example)
|
|
61
63
|
- [How It Works](#how-it-works)
|
|
62
64
|
|
|
@@ -90,15 +92,15 @@ npx unity-mcp-cli create-project ./MyGame --unity 2022.3.62f1
|
|
|
90
92
|
Install a Unity Editor version via Unity Hub CLI.
|
|
91
93
|
|
|
92
94
|
```bash
|
|
93
|
-
npx unity-mcp-cli install-unity
|
|
95
|
+
npx unity-mcp-cli install-unity 6000.3.1f1
|
|
94
96
|
```
|
|
95
97
|
|
|
96
|
-
| Option | Required | Description |
|
|
98
|
+
| Argument / Option | Required | Description |
|
|
97
99
|
|---|---|---|
|
|
98
|
-
|
|
|
100
|
+
| `[version]` | No | Unity Editor version to install (e.g. `6000.3.1f1`) |
|
|
99
101
|
| `--path <path>` | No | Read the required version from an existing project |
|
|
100
102
|
|
|
101
|
-
If neither option is provided, the command
|
|
103
|
+
If neither argument nor option is provided, the command installs the latest stable release from Unity Hub's releases list.
|
|
102
104
|
|
|
103
105
|
**Example — install the editor version that a project needs:**
|
|
104
106
|
|
|
@@ -110,19 +112,51 @@ npx unity-mcp-cli install-unity --path ./MyGame
|
|
|
110
112
|
|
|
111
113
|
## `open`
|
|
112
114
|
|
|
113
|
-
Open a Unity project in the Unity Editor.
|
|
115
|
+
Open a Unity project in the Unity Editor. By default, sets MCP connection environment variables if connection options are provided. Use `--no-connect` to open without MCP connection.
|
|
114
116
|
|
|
115
117
|
```bash
|
|
116
118
|
npx unity-mcp-cli open ./MyGame
|
|
117
119
|
```
|
|
118
120
|
|
|
119
|
-
| Option | Required | Description |
|
|
120
|
-
|
|
121
|
-
| `[path]` | Yes | Path to the Unity project (positional or `--path`) |
|
|
122
|
-
| `--unity <version>` | No | Specific Unity Editor version to use (defaults to version from project settings, falls back to highest installed) |
|
|
121
|
+
| Option | Env Variable | Required | Description |
|
|
122
|
+
|---|---|---|---|
|
|
123
|
+
| `[path]` | — | Yes | Path to the Unity project (positional or `--path`) |
|
|
124
|
+
| `--unity <version>` | — | No | Specific Unity Editor version to use (defaults to version from project settings, falls back to highest installed) |
|
|
125
|
+
| `--no-connect` | — | No | Open without MCP connection environment variables |
|
|
126
|
+
| `--url <url>` | `UNITY_MCP_HOST` | No | MCP server URL to connect to |
|
|
127
|
+
| `--keep-connected` | `UNITY_MCP_KEEP_CONNECTED` | No | Force keep the connection alive |
|
|
128
|
+
| `--token <token>` | `UNITY_MCP_TOKEN` | No | Authentication token |
|
|
129
|
+
| `--auth <option>` | `UNITY_MCP_AUTH_OPTION` | No | Auth mode: `none` or `required` |
|
|
130
|
+
| `--tools <names>` | `UNITY_MCP_TOOLS` | No | Comma-separated list of tools to enable |
|
|
131
|
+
| `--transport <method>` | `UNITY_MCP_TRANSPORT` | No | Transport method: `streamableHttp` or `stdio` |
|
|
132
|
+
| `--start-server <value>` | `UNITY_MCP_START_SERVER` | No | Set to `true` or `false` to control MCP server auto-start |
|
|
123
133
|
|
|
124
134
|
The editor process is spawned in detached mode — the CLI returns immediately.
|
|
125
135
|
|
|
136
|
+
**Example — open with MCP connection:**
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
npx unity-mcp-cli open ./MyGame \
|
|
140
|
+
--url http://localhost:8080 \
|
|
141
|
+
--keep-connected
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
**Example — open without MCP connection (simple open):**
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
npx unity-mcp-cli open ./MyGame --no-connect
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
**Example — open with authentication and specific tools:**
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
npx unity-mcp-cli open ./MyGame \
|
|
154
|
+
--url http://my-server:8080 \
|
|
155
|
+
--token my-secret-token \
|
|
156
|
+
--auth required \
|
|
157
|
+
--tools gameobject-create,gameobject-find
|
|
158
|
+
```
|
|
159
|
+
|
|
126
160
|

|
|
127
161
|
|
|
128
162
|
## `install-plugin`
|
|
@@ -218,61 +252,20 @@ npx unity-mcp-cli configure ./MyGame \
|
|
|
218
252
|
|
|
219
253
|

|
|
220
254
|
|
|
221
|
-
##
|
|
222
|
-
|
|
223
|
-
Open a Unity project and connect it to a specific MCP server via environment variables. Every option maps to a `UNITY_MCP_*` environment variable that the Unity plugin reads on startup.
|
|
255
|
+
## Global Options
|
|
224
256
|
|
|
225
|
-
|
|
226
|
-
npx unity-mcp-cli connect \
|
|
227
|
-
--path ./MyGame \
|
|
228
|
-
--url http://localhost:8080
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
| Option | Env Variable | Required | Description |
|
|
232
|
-
|---|---|---|---|
|
|
233
|
-
| `--url <url>` | `UNITY_MCP_HOST` | Yes | MCP server URL to connect to |
|
|
234
|
-
| `--path <path>` | — | Yes | Path to the Unity project |
|
|
235
|
-
| `--keep-connected` | `UNITY_MCP_KEEP_CONNECTED` | No | Force keep the connection alive |
|
|
236
|
-
| `--token <token>` | `UNITY_MCP_TOKEN` | No | Authentication token |
|
|
237
|
-
| `--auth <option>` | `UNITY_MCP_AUTH_OPTION` | No | Auth mode: `none` or `required` |
|
|
238
|
-
| `--tools <names>` | `UNITY_MCP_TOOLS` | No | Comma-separated list of tools to enable |
|
|
239
|
-
| `--transport <method>` | `UNITY_MCP_TRANSPORT` | No | Transport method: `streamableHttp` or `stdio` |
|
|
240
|
-
| `--start-server <value>` | `UNITY_MCP_START_SERVER` | No | Set to `true` or `false` to control MCP server auto-start in Unity Editor (only applies to `streamableHttp` transport) |
|
|
241
|
-
| `--unity <version>` | — | No | Specific Unity Editor version to use (defaults to version from project settings, falls back to highest installed) |
|
|
257
|
+
These options are available on all commands:
|
|
242
258
|
|
|
243
|
-
|
|
259
|
+
| Option | Description |
|
|
260
|
+
|---|---|
|
|
261
|
+
| `-v, --verbose` | Enable verbose diagnostic output for troubleshooting |
|
|
262
|
+
| `--version` | Display CLI version |
|
|
263
|
+
| `--help` | Display help for the command |
|
|
244
264
|
|
|
245
|
-
**Example —
|
|
265
|
+
**Example — run any command with verbose output:**
|
|
246
266
|
|
|
247
267
|
```bash
|
|
248
|
-
npx unity-mcp-cli
|
|
249
|
-
--path ./MyGame \
|
|
250
|
-
--url http://my-server:8080 \
|
|
251
|
-
--token my-secret-token \
|
|
252
|
-
--auth required \
|
|
253
|
-
--keep-connected \
|
|
254
|
-
--tools gameobject-create,gameobject-find,script-execute
|
|
255
|
-
```
|
|
256
|
-
|
|
257
|
-
**Example — connect with stdio transport (server managed by AI agent):**
|
|
258
|
-
|
|
259
|
-
```bash
|
|
260
|
-
npx unity-mcp-cli connect \
|
|
261
|
-
--path ./MyGame \
|
|
262
|
-
--url http://localhost:8080 \
|
|
263
|
-
--transport stdio \
|
|
264
|
-
--start-server false
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
**Example — connect with streamableHttp and auto-start server:**
|
|
268
|
-
|
|
269
|
-
```bash
|
|
270
|
-
npx unity-mcp-cli connect \
|
|
271
|
-
--path ./MyGame \
|
|
272
|
-
--url http://localhost:8080 \
|
|
273
|
-
--transport streamableHttp \
|
|
274
|
-
--start-server true \
|
|
275
|
-
--keep-connected
|
|
268
|
+
npx unity-mcp-cli install-plugin ./MyGame --verbose
|
|
276
269
|
```
|
|
277
270
|
|
|
278
271
|

|
|
@@ -292,8 +285,7 @@ npx unity-mcp-cli install-plugin ./MyAIGame
|
|
|
292
285
|
npx unity-mcp-cli configure ./MyAIGame --enable-all-tools
|
|
293
286
|
|
|
294
287
|
# 4. Open the project with MCP connection
|
|
295
|
-
npx unity-mcp-cli
|
|
296
|
-
--path ./MyAIGame \
|
|
288
|
+
npx unity-mcp-cli open ./MyAIGame \
|
|
297
289
|
--url http://localhost:8080 \
|
|
298
290
|
--keep-connected
|
|
299
291
|
```
|
|
@@ -3,6 +3,7 @@ import * as path from 'path';
|
|
|
3
3
|
import * as fs from 'fs';
|
|
4
4
|
import { getOrCreateConfig, writeConfig, updateFeatures } from '../utils/config.js';
|
|
5
5
|
import * as ui from '../utils/ui.js';
|
|
6
|
+
import { verbose } from '../utils/ui.js';
|
|
6
7
|
function parseCommaSeparated(value) {
|
|
7
8
|
return value.split(',').map((s) => s.trim()).filter(Boolean);
|
|
8
9
|
}
|
|
@@ -34,6 +35,7 @@ export const configureCommand = new Command('configure')
|
|
|
34
35
|
ui.error(`Project path does not exist: ${projectPath}`);
|
|
35
36
|
process.exit(1);
|
|
36
37
|
}
|
|
38
|
+
verbose(`Loading config for project: ${projectPath}`);
|
|
37
39
|
const config = getOrCreateConfig(projectPath);
|
|
38
40
|
if (options.list) {
|
|
39
41
|
ui.heading('Current configuration');
|
|
@@ -84,6 +86,7 @@ export const configureCommand = new Command('configure')
|
|
|
84
86
|
disableAll: options.disableAllResources,
|
|
85
87
|
});
|
|
86
88
|
}
|
|
89
|
+
verbose('Writing updated configuration');
|
|
87
90
|
writeConfig(projectPath, config);
|
|
88
91
|
ui.success('Configuration updated successfully.');
|
|
89
92
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configure.js","sourceRoot":"","sources":["../../src/commands/configure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,KAAK,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"configure.js","sourceRoot":"","sources":["../../src/commands/configure.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { Command } from 'commander';
|
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
import { ensureUnityHub, createProject, listInstalledEditors, findHighestEditor } from '../utils/unity-hub.js';
|
|
4
4
|
import * as ui from '../utils/ui.js';
|
|
5
|
+
import { verbose } from '../utils/ui.js';
|
|
5
6
|
export const createProjectCommand = new Command('create-project')
|
|
6
7
|
.description('Create a new Unity project')
|
|
7
8
|
.argument('[path]', 'Path where the project will be created')
|
|
@@ -19,15 +20,15 @@ export const createProjectCommand = new Command('create-project')
|
|
|
19
20
|
hubPath = await ensureUnityHub();
|
|
20
21
|
}
|
|
21
22
|
catch (err) {
|
|
22
|
-
spinner.
|
|
23
|
+
spinner.error('Failed to locate Unity Hub');
|
|
23
24
|
throw err;
|
|
24
25
|
}
|
|
25
|
-
spinner.
|
|
26
|
+
spinner.success('Unity Hub located');
|
|
26
27
|
let editorVersion = options.unity;
|
|
27
28
|
if (!editorVersion) {
|
|
28
29
|
const editors = listInstalledEditors(hubPath);
|
|
29
30
|
if (editors.length === 0) {
|
|
30
|
-
ui.error('No Unity editors installed. Install one with: unity-mcp-cli install-unity
|
|
31
|
+
ui.error('No Unity editors installed. Install one with: unity-mcp-cli install-unity [version]');
|
|
31
32
|
process.exit(1);
|
|
32
33
|
}
|
|
33
34
|
const highest = findHighestEditor(editors);
|
|
@@ -35,6 +36,8 @@ export const createProjectCommand = new Command('create-project')
|
|
|
35
36
|
ui.info(`No Unity version specified, using highest installed: ${editorVersion}`);
|
|
36
37
|
}
|
|
37
38
|
const projectPath = path.resolve(resolvedPath);
|
|
39
|
+
verbose(`Creating project at: ${projectPath} with editor version: ${editorVersion}`);
|
|
40
|
+
verbose(`Unity Hub path: ${hubPath}`);
|
|
38
41
|
createProject(hubPath, projectPath, editorVersion);
|
|
39
42
|
});
|
|
40
43
|
//# sourceMappingURL=create-project.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-project.js","sourceRoot":"","sources":["../../src/commands/create-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/G,OAAO,KAAK,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"create-project.js","sourceRoot":"","sources":["../../src/commands/create-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/G,OAAO,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,OAAO,CAAC,gBAAgB,CAAC;KAC9D,WAAW,CAAC,4BAA4B,CAAC;KACzC,QAAQ,CAAC,QAAQ,EAAE,wCAAwC,CAAC;KAC5D,MAAM,CAAC,eAAe,EAAE,wCAAwC,CAAC;KACjE,MAAM,CAAC,mBAAmB,EAAE,6BAA6B,CAAC;KAC1D,MAAM,CAAC,KAAK,EAAE,cAAkC,EAAE,OAA0C,EAAE,EAAE;IAC/F,MAAM,YAAY,GAAG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IACpD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,EAAE,CAAC,KAAK,CAAC,+EAA+E,CAAC,CAAC;QAC1F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC;IACzD,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,cAAc,EAAE,CAAC;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC5C,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAErC,IAAI,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;IAElC,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,EAAE,CAAC,KAAK,CAAC,qFAAqF,CAAC,CAAC;YAChG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC3C,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,EAAE,CAAC,IAAI,CAAC,wDAAwD,aAAa,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/C,OAAO,CAAC,wBAAwB,WAAW,yBAAyB,aAAa,EAAE,CAAC,CAAC;IACrF,OAAO,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAC;IACtC,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC"}
|
|
@@ -3,6 +3,7 @@ import * as path from 'path';
|
|
|
3
3
|
import * as fs from 'fs';
|
|
4
4
|
import { addPluginToManifest, resolveLatestVersion } from '../utils/manifest.js';
|
|
5
5
|
import * as ui from '../utils/ui.js';
|
|
6
|
+
import { verbose } from '../utils/ui.js';
|
|
6
7
|
export const installPluginCommand = new Command('install-plugin')
|
|
7
8
|
.description('Install Unity-MCP plugin into a Unity project')
|
|
8
9
|
.argument('[path]', 'Path to the Unity project')
|
|
@@ -23,13 +24,23 @@ export const installPluginCommand = new Command('install-plugin')
|
|
|
23
24
|
}
|
|
24
25
|
// Resolve version
|
|
25
26
|
let version = options.pluginVersion;
|
|
27
|
+
const isExplicitVersion = !!version;
|
|
26
28
|
if (!version) {
|
|
27
29
|
const spinner = ui.startSpinner('Resolving latest plugin version...');
|
|
28
|
-
|
|
29
|
-
|
|
30
|
+
try {
|
|
31
|
+
version = await resolveLatestVersion();
|
|
32
|
+
spinner.success(`Resolved plugin version: ${version}`);
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
spinner.error('Failed to resolve plugin version');
|
|
36
|
+
ui.error(err.message);
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
30
39
|
}
|
|
40
|
+
verbose(`Plugin version: ${version} (explicit: ${isExplicitVersion})`);
|
|
41
|
+
verbose(`Manifest path: ${manifestPath}`);
|
|
31
42
|
ui.info(`Installing Unity-MCP plugin v${version} into: ${projectPath}`);
|
|
32
|
-
addPluginToManifest(projectPath, version);
|
|
43
|
+
addPluginToManifest(projectPath, version, isExplicitVersion);
|
|
33
44
|
ui.success('Done! Open the project in Unity Editor to complete installation.');
|
|
34
45
|
});
|
|
35
46
|
//# sourceMappingURL=install-plugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-plugin.js","sourceRoot":"","sources":["../../src/commands/install-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,KAAK,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"install-plugin.js","sourceRoot":"","sources":["../../src/commands/install-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,OAAO,CAAC,gBAAgB,CAAC;KAC9D,WAAW,CAAC,+CAA+C,CAAC;KAC5D,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,CAAC;KAC/C,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC;KACpD,MAAM,CAAC,4BAA4B,EAAE,6CAA6C,CAAC;KACnF,MAAM,CAAC,KAAK,EAAE,cAAkC,EAAE,OAAkD,EAAE,EAAE;IACvG,MAAM,YAAY,GAAG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IACpD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,EAAE,CAAC,KAAK,CAAC,+EAA+E,CAAC,CAAC;QAC1F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAE/C,0BAA0B;IAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;IACzE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,EAAE,CAAC,KAAK,CAAC,+DAA+D,WAAW,EAAE,CAAC,CAAC;QACvF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,kBAAkB;IAClB,IAAI,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IACpC,MAAM,iBAAiB,GAAG,CAAC,CAAC,OAAO,CAAC;IACpC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,oCAAoC,CAAC,CAAC;QACtE,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,oBAAoB,EAAE,CAAC;YACvC,OAAO,CAAC,OAAO,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;YAClD,EAAE,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,mBAAmB,OAAO,eAAe,iBAAiB,GAAG,CAAC,CAAC;IACvE,OAAO,CAAC,kBAAkB,YAAY,EAAE,CAAC,CAAC;IAC1C,EAAE,CAAC,IAAI,CAAC,gCAAgC,OAAO,UAAU,WAAW,EAAE,CAAC,CAAC;IACxE,mBAAmB,CAAC,WAAW,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;IAC7D,EAAE,CAAC,OAAO,CAAC,kEAAkE,CAAC,CAAC;AACjF,CAAC,CAAC,CAAC"}
|
|
@@ -1,25 +1,28 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
import * as fs from 'fs';
|
|
4
|
-
import { ensureUnityHub, installEditor, listInstalledEditors } from '../utils/unity-hub.js';
|
|
4
|
+
import { ensureUnityHub, installEditor, listInstalledEditors, listAvailableReleases, findLatestStableRelease } from '../utils/unity-hub.js';
|
|
5
5
|
import { getProjectEditorVersion } from '../utils/unity-editor.js';
|
|
6
6
|
import * as ui from '../utils/ui.js';
|
|
7
|
+
import { verbose } from '../utils/ui.js';
|
|
7
8
|
export const installUnityCommand = new Command('install-unity')
|
|
8
9
|
.description('Install Unity Editor via Unity Hub')
|
|
9
|
-
.
|
|
10
|
+
.argument('[version]', 'Unity Editor version to install (e.g. 6000.3.1f1). Omit to install latest stable release.')
|
|
10
11
|
.option('--path <path>', 'Read version from an existing Unity project')
|
|
11
|
-
.action(async (options) => {
|
|
12
|
+
.action(async (positionalVersion, options) => {
|
|
13
|
+
verbose(`install-unity invoked with version=${positionalVersion ?? '(auto)'}, path=${options.path ?? '(none)'}`);
|
|
12
14
|
const spinner = ui.startSpinner('Locating Unity Hub...');
|
|
13
15
|
let hubPath;
|
|
14
16
|
try {
|
|
15
17
|
hubPath = await ensureUnityHub();
|
|
16
18
|
}
|
|
17
19
|
catch (err) {
|
|
18
|
-
spinner.
|
|
20
|
+
spinner.error('Failed to locate Unity Hub');
|
|
19
21
|
throw err;
|
|
20
22
|
}
|
|
21
|
-
spinner.
|
|
22
|
-
|
|
23
|
+
spinner.success('Unity Hub located');
|
|
24
|
+
verbose(`Unity Hub path: ${hubPath}`);
|
|
25
|
+
let version = positionalVersion;
|
|
23
26
|
if (!version && options.path) {
|
|
24
27
|
const projectPath = path.resolve(options.path);
|
|
25
28
|
if (!fs.existsSync(projectPath)) {
|
|
@@ -35,16 +38,25 @@ export const installUnityCommand = new Command('install-unity')
|
|
|
35
38
|
process.exit(1);
|
|
36
39
|
}
|
|
37
40
|
}
|
|
41
|
+
// Fetch available releases once — reused for latest-stable lookup and install
|
|
42
|
+
let releases;
|
|
43
|
+
// No version specified — resolve latest stable release from Unity Hub
|
|
38
44
|
if (!version) {
|
|
39
|
-
|
|
40
|
-
const
|
|
41
|
-
if (
|
|
42
|
-
ui.
|
|
43
|
-
|
|
44
|
-
|
|
45
|
+
releases = listAvailableReleases(hubPath);
|
|
46
|
+
const latest = findLatestStableRelease(releases);
|
|
47
|
+
if (!latest) {
|
|
48
|
+
ui.error('No stable releases found');
|
|
49
|
+
const editors = listInstalledEditors(hubPath);
|
|
50
|
+
if (editors.length > 0) {
|
|
51
|
+
ui.heading('Currently installed editors:');
|
|
52
|
+
for (const editor of editors) {
|
|
53
|
+
ui.label(editor.version, editor.path);
|
|
54
|
+
}
|
|
45
55
|
}
|
|
56
|
+
process.exit(1);
|
|
46
57
|
}
|
|
47
|
-
|
|
58
|
+
ui.success(`Latest stable release: ${latest.version}`);
|
|
59
|
+
version = latest.version;
|
|
48
60
|
}
|
|
49
61
|
// Check if already installed
|
|
50
62
|
const editors = listInstalledEditors(hubPath);
|
|
@@ -53,7 +65,8 @@ export const installUnityCommand = new Command('install-unity')
|
|
|
53
65
|
ui.success(`Unity Editor ${version} is already installed at: ${alreadyInstalled.path}`);
|
|
54
66
|
return;
|
|
55
67
|
}
|
|
56
|
-
|
|
68
|
+
verbose(`Installing Unity Editor version: ${version}`);
|
|
69
|
+
await installEditor(hubPath, version, releases);
|
|
57
70
|
ui.success(`Unity Editor ${version} installed successfully`);
|
|
58
71
|
});
|
|
59
72
|
//# sourceMappingURL=install-unity.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-unity.js","sourceRoot":"","sources":["../../src/commands/install-unity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"install-unity.js","sourceRoot":"","sources":["../../src/commands/install-unity.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/open.js
CHANGED
|
@@ -1,13 +1,22 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
import * as fs from 'fs';
|
|
4
|
-
import { findEditorPath, getProjectEditorVersion, launchEditor } from '../utils/unity-editor.js';
|
|
4
|
+
import { findEditorPath, getProjectEditorVersion, launchEditor, printEditorNotFoundHelp } from '../utils/unity-editor.js';
|
|
5
5
|
import * as ui from '../utils/ui.js';
|
|
6
|
+
import { verbose } from '../utils/ui.js';
|
|
6
7
|
export const openCommand = new Command('open')
|
|
7
|
-
.description('Open a Unity project in Unity Editor')
|
|
8
|
+
.description('Open a Unity project in Unity Editor, optionally passing MCP connection env vars when connection options (--url, --token, etc.) are provided. Use --no-connect to suppress all MCP env vars.')
|
|
8
9
|
.argument('[path]', 'Path to the Unity project')
|
|
9
10
|
.option('--path <path>', 'Path to the Unity project')
|
|
10
11
|
.option('--unity <version>', 'Specific Unity Editor version to use')
|
|
12
|
+
.option('--no-connect', 'Open without MCP connection environment variables')
|
|
13
|
+
.option('--url <url>', 'MCP server URL to connect to (sets UNITY_MCP_HOST)')
|
|
14
|
+
.option('--tools <names>', 'Comma-separated list of tools to enable (sets UNITY_MCP_TOOLS)')
|
|
15
|
+
.option('--token <token>', 'Auth token (sets UNITY_MCP_TOKEN)')
|
|
16
|
+
.option('--auth <option>', 'Auth option: none or required (sets UNITY_MCP_AUTH_OPTION)')
|
|
17
|
+
.option('--keep-connected', 'Force keep connected (sets UNITY_MCP_KEEP_CONNECTED=true)')
|
|
18
|
+
.option('--transport <method>', 'Transport method: streamableHttp or stdio (sets UNITY_MCP_TRANSPORT)')
|
|
19
|
+
.option('--start-server <value>', 'Set to true/false to control server auto-start (sets UNITY_MCP_START_SERVER)', undefined)
|
|
11
20
|
.action(async (positionalPath, options) => {
|
|
12
21
|
const resolvedPath = positionalPath ?? options.path;
|
|
13
22
|
if (!resolvedPath) {
|
|
@@ -19,25 +28,84 @@ export const openCommand = new Command('open')
|
|
|
19
28
|
ui.error(`Project path does not exist: ${projectPath}`);
|
|
20
29
|
process.exit(1);
|
|
21
30
|
}
|
|
31
|
+
verbose(`open invoked for project: ${projectPath}`);
|
|
32
|
+
verbose(`--no-connect: ${options.connect === false}`);
|
|
22
33
|
// Determine editor version
|
|
23
34
|
let version = options.unity;
|
|
24
35
|
if (!version) {
|
|
25
36
|
version = getProjectEditorVersion(projectPath) ?? undefined;
|
|
26
37
|
if (version) {
|
|
27
38
|
ui.info(`Detected editor version from project: ${version}`);
|
|
39
|
+
verbose(`Resolved editor version from ProjectVersion.txt: ${version}`);
|
|
28
40
|
}
|
|
29
41
|
}
|
|
30
42
|
const spinner = ui.startSpinner('Locating Unity Editor...');
|
|
31
43
|
const editorPath = await findEditorPath(version);
|
|
32
44
|
if (!editorPath) {
|
|
33
|
-
spinner.
|
|
34
|
-
|
|
35
|
-
ui.error(`Unity Editor not found${versionMsg}. Install it with: unity-mcp-cli install-unity --version <version>`);
|
|
45
|
+
spinner.stop();
|
|
46
|
+
printEditorNotFoundHelp(version, 'open');
|
|
36
47
|
process.exit(1);
|
|
37
48
|
}
|
|
38
|
-
spinner.
|
|
49
|
+
spinner.success('Unity Editor located');
|
|
50
|
+
verbose(`Editor path: ${editorPath}`);
|
|
51
|
+
// Build environment variables for MCP connection (unless --no-connect)
|
|
52
|
+
const useConnect = options.connect !== false;
|
|
53
|
+
let env;
|
|
54
|
+
if (useConnect) {
|
|
55
|
+
const envVars = {};
|
|
56
|
+
if (options.url) {
|
|
57
|
+
envVars['UNITY_MCP_HOST'] = options.url;
|
|
58
|
+
}
|
|
59
|
+
if (options.keepConnected) {
|
|
60
|
+
envVars['UNITY_MCP_KEEP_CONNECTED'] = 'true';
|
|
61
|
+
}
|
|
62
|
+
if (options.tools) {
|
|
63
|
+
envVars['UNITY_MCP_TOOLS'] = options.tools;
|
|
64
|
+
}
|
|
65
|
+
if (options.token) {
|
|
66
|
+
envVars['UNITY_MCP_TOKEN'] = options.token;
|
|
67
|
+
}
|
|
68
|
+
if (options.auth) {
|
|
69
|
+
if (options.auth !== 'none' && options.auth !== 'required') {
|
|
70
|
+
ui.error('--auth must be "none" or "required"');
|
|
71
|
+
process.exit(1);
|
|
72
|
+
}
|
|
73
|
+
envVars['UNITY_MCP_AUTH_OPTION'] = options.auth;
|
|
74
|
+
}
|
|
75
|
+
if (options.transport) {
|
|
76
|
+
if (options.transport !== 'streamableHttp' && options.transport !== 'stdio') {
|
|
77
|
+
ui.error('--transport must be "streamableHttp" or "stdio"');
|
|
78
|
+
process.exit(1);
|
|
79
|
+
}
|
|
80
|
+
envVars['UNITY_MCP_TRANSPORT'] = options.transport;
|
|
81
|
+
}
|
|
82
|
+
if (options.startServer !== undefined) {
|
|
83
|
+
const val = options.startServer.toLowerCase();
|
|
84
|
+
if (val !== 'true' && val !== 'false') {
|
|
85
|
+
ui.error('--start-server must be "true" or "false"');
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
envVars['UNITY_MCP_START_SERVER'] = val;
|
|
89
|
+
}
|
|
90
|
+
if (Object.keys(envVars).length > 0) {
|
|
91
|
+
env = envVars;
|
|
92
|
+
ui.heading('Connection Details');
|
|
93
|
+
ui.label('Project', projectPath);
|
|
94
|
+
ui.label('Editor', editorPath);
|
|
95
|
+
ui.heading('Environment Variables');
|
|
96
|
+
for (const [key, value] of Object.entries(envVars)) {
|
|
97
|
+
const display = key === 'UNITY_MCP_TOKEN' ? '***' : value;
|
|
98
|
+
ui.label(key, display);
|
|
99
|
+
verbose(`Setting ${key}=${display}`);
|
|
100
|
+
}
|
|
101
|
+
ui.divider();
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
verbose('MCP connection disabled via --no-connect');
|
|
106
|
+
}
|
|
39
107
|
ui.label('Project', projectPath);
|
|
40
108
|
ui.label('Editor', editorPath);
|
|
41
|
-
launchEditor(editorPath, projectPath);
|
|
109
|
+
launchEditor(editorPath, projectPath, env);
|
|
42
110
|
});
|
|
43
111
|
//# sourceMappingURL=open.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAC1H,OAAO,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KAC3C,WAAW,CAAC,8LAA8L,CAAC;KAC3M,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,CAAC;KAC/C,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC;KACpD,MAAM,CAAC,mBAAmB,EAAE,sCAAsC,CAAC;KACnE,MAAM,CAAC,cAAc,EAAE,mDAAmD,CAAC;KAC3E,MAAM,CAAC,aAAa,EAAE,oDAAoD,CAAC;KAC3E,MAAM,CAAC,iBAAiB,EAAE,gEAAgE,CAAC;KAC3F,MAAM,CAAC,iBAAiB,EAAE,mCAAmC,CAAC;KAC9D,MAAM,CAAC,iBAAiB,EAAE,4DAA4D,CAAC;KACvF,MAAM,CAAC,kBAAkB,EAAE,2DAA2D,CAAC;KACvF,MAAM,CAAC,sBAAsB,EAAE,sEAAsE,CAAC;KACtG,MAAM,CAAC,wBAAwB,EAAE,8EAA8E,EAAE,SAAS,CAAC;KAC3H,MAAM,CAAC,KAAK,EAAE,cAAkC,EAAE,OAWlD,EAAE,EAAE;IACH,MAAM,YAAY,GAAG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IACpD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,EAAE,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAE/C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,EAAE,CAAC,KAAK,CAAC,gCAAgC,WAAW,EAAE,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,6BAA6B,WAAW,EAAE,CAAC,CAAC;IACpD,OAAO,CAAC,iBAAiB,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC;IAEtD,2BAA2B;IAC3B,IAAI,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,uBAAuB,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC;QAC5D,IAAI,OAAO,EAAE,CAAC;YACZ,EAAE,CAAC,IAAI,CAAC,yCAAyC,OAAO,EAAE,CAAC,CAAC;YAC5D,OAAO,CAAC,oDAAoD,OAAO,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,0BAA0B,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACxC,OAAO,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAC;IAEtC,uEAAuE;IACvE,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,KAAK,KAAK,CAAC;IAC7C,IAAI,GAAuC,CAAC;IAE5C,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,OAAO,GAA2B,EAAE,CAAC;QAE3C,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,OAAO,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;QAC1C,CAAC;QAED,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,OAAO,CAAC,0BAA0B,CAAC,GAAG,MAAM,CAAC;QAC/C,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;QAC7C,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;QAC7C,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC3D,EAAE,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;gBAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,OAAO,CAAC,uBAAuB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;QAClD,CAAC;QAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,IAAI,OAAO,CAAC,SAAS,KAAK,gBAAgB,IAAI,OAAO,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;gBAC5E,EAAE,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;gBAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,OAAO,CAAC,qBAAqB,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;QACrD,CAAC;QAED,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;YAC9C,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBACtC,EAAE,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,OAAO,CAAC,wBAAwB,CAAC,GAAG,GAAG,CAAC;QAC1C,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,GAAG,GAAG,OAAO,CAAC;YACd,EAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;YACjC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YACjC,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAE/B,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;YACpC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnD,MAAM,OAAO,GAAG,GAAG,KAAK,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC1D,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBACvB,OAAO,CAAC,WAAW,GAAG,IAAI,OAAO,EAAE,CAAC,CAAC;YACvC,CAAC;YACD,EAAE,CAAC,OAAO,EAAE,CAAC;QACf,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,0CAA0C,CAAC,CAAC;IACtD,CAAC;IAED,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACjC,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC/B,YAAY,CAAC,UAAU,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC"}
|
|
@@ -3,6 +3,7 @@ import * as path from 'path';
|
|
|
3
3
|
import * as fs from 'fs';
|
|
4
4
|
import { removePluginFromManifest } from '../utils/manifest.js';
|
|
5
5
|
import * as ui from '../utils/ui.js';
|
|
6
|
+
import { verbose } from '../utils/ui.js';
|
|
6
7
|
export const removePluginCommand = new Command('remove-plugin')
|
|
7
8
|
.description('Remove Unity-MCP plugin from a Unity project')
|
|
8
9
|
.argument('[path]', 'Path to the Unity project')
|
|
@@ -20,6 +21,7 @@ export const removePluginCommand = new Command('remove-plugin')
|
|
|
20
21
|
ui.error(`Not a valid Unity project (missing Packages/manifest.json): ${projectPath}`);
|
|
21
22
|
process.exit(1);
|
|
22
23
|
}
|
|
24
|
+
verbose(`Manifest path: ${manifestPath}`);
|
|
23
25
|
ui.info(`Removing Unity-MCP plugin from: ${projectPath}`);
|
|
24
26
|
removePluginFromManifest(projectPath);
|
|
25
27
|
ui.success('Done!');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove-plugin.js","sourceRoot":"","sources":["../../src/commands/remove-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"remove-plugin.js","sourceRoot":"","sources":["../../src/commands/remove-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,OAAO,CAAC,eAAe,CAAC;KAC5D,WAAW,CAAC,8CAA8C,CAAC;KAC3D,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,CAAC;KAC/C,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC;KACpD,MAAM,CAAC,KAAK,EAAE,cAAkC,EAAE,OAA0B,EAAE,EAAE;IAC/E,MAAM,YAAY,GAAG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IACpD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,EAAE,CAAC,KAAK,CAAC,8EAA8E,CAAC,CAAC;QACzF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAE/C,0BAA0B;IAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;IACzE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,EAAE,CAAC,KAAK,CAAC,+DAA+D,WAAW,EAAE,CAAC,CAAC;QACvF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,kBAAkB,YAAY,EAAE,CAAC,CAAC;IAC1C,EAAE,CAAC,IAAI,CAAC,mCAAmC,WAAW,EAAE,CAAC,CAAC;IAC1D,wBAAwB,CAAC,WAAW,CAAC,CAAC;IACtC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACtB,CAAC,CAAC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -5,32 +5,39 @@ import { installUnityCommand } from './commands/install-unity.js';
|
|
|
5
5
|
import { openCommand } from './commands/open.js';
|
|
6
6
|
import { installPluginCommand } from './commands/install-plugin.js';
|
|
7
7
|
import { configureCommand } from './commands/configure.js';
|
|
8
|
-
import { connectCommand } from './commands/connect.js';
|
|
9
8
|
import { removePluginCommand } from './commands/remove-plugin.js';
|
|
10
|
-
import { configureStyledHelp, error as uiError } from './utils/ui.js';
|
|
9
|
+
import { configureStyledHelp, error as uiError, setVerbose } from './utils/ui.js';
|
|
11
10
|
const require = createRequire(import.meta.url);
|
|
12
11
|
const pkg = require('../package.json');
|
|
13
12
|
const program = new Command();
|
|
14
13
|
program
|
|
15
14
|
.name('unity-mcp-cli')
|
|
16
15
|
.description('Cross-platform CLI tool for Unity-MCP operations')
|
|
17
|
-
.version(pkg.version)
|
|
16
|
+
.version(pkg.version)
|
|
17
|
+
.option('-v, --verbose', 'Enable verbose diagnostic output');
|
|
18
18
|
// Register all subcommands
|
|
19
19
|
const subcommands = [
|
|
20
|
+
configureCommand,
|
|
20
21
|
createProjectCommand,
|
|
22
|
+
installPluginCommand,
|
|
21
23
|
installUnityCommand,
|
|
22
24
|
openCommand,
|
|
23
|
-
installPluginCommand,
|
|
24
|
-
configureCommand,
|
|
25
|
-
connectCommand,
|
|
26
25
|
removePluginCommand,
|
|
27
26
|
];
|
|
28
27
|
for (const cmd of subcommands) {
|
|
28
|
+
cmd.option('-v, --verbose', 'Enable verbose diagnostic output');
|
|
29
29
|
configureStyledHelp(cmd);
|
|
30
30
|
program.addCommand(cmd);
|
|
31
31
|
}
|
|
32
32
|
// Apply styled help to root (after subcommands so banner knows about them)
|
|
33
33
|
configureStyledHelp(program, pkg.version);
|
|
34
|
+
// Wire verbose flag before any command executes
|
|
35
|
+
program.hook('preAction', (_thisCommand, actionCommand) => {
|
|
36
|
+
const opts = actionCommand.optsWithGlobals();
|
|
37
|
+
if (opts.verbose) {
|
|
38
|
+
setVerbose(true);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
34
41
|
// Show help when no command provided
|
|
35
42
|
program.action(() => {
|
|
36
43
|
program.outputHelp();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,KAAK,IAAI,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAElF,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAE9D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,eAAe,CAAC;KACrB,WAAW,CAAC,kDAAkD,CAAC;KAC/D,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;KACpB,MAAM,CAAC,eAAe,EAAE,kCAAkC,CAAC,CAAC;AAE/D,2BAA2B;AAC3B,MAAM,WAAW,GAAG;IAClB,gBAAgB;IAChB,oBAAoB;IACpB,oBAAoB;IACpB,mBAAmB;IACnB,WAAW;IACX,mBAAmB;CACpB,CAAC;AAEF,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;IAC9B,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,kCAAkC,CAAC,CAAC;IAChE,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACzB,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED,2EAA2E;AAC3E,mBAAmB,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AAE1C,gDAAgD;AAChD,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,EAAE;IACxD,MAAM,IAAI,GAAG,aAAa,CAAC,eAAe,EAA2B,CAAC;IACtE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,UAAU,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,qCAAqC;AACrC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;IAClB,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACjC,OAAO,CAAE,GAAa,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|