@atelierai/uco 1.0.6 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/README.md +7 -8
- package/bin/server.mjs +1 -1
- package/bin/stub-plugin.mjs +3 -3
- package/dist/codegen/coerce.js +1 -1
- package/dist/codegen/coerce.js.map +1 -1
- package/dist/codegen/emit.js +2 -2
- package/dist/codegen/emit.js.map +1 -1
- package/dist/codegen/refs.js +1 -1
- package/dist/codegen/refs.js.map +1 -1
- package/dist/codegen/types.js +1 -1
- package/dist/codegen/types.js.map +1 -1
- package/dist/commands/call.js +1 -1
- package/dist/commands/call.js.map +1 -1
- package/dist/commands/devops/configure.js +1 -1
- package/dist/commands/devops/configure.js.map +1 -1
- package/dist/commands/devops/index.js +0 -4
- package/dist/commands/devops/index.js.map +1 -1
- package/dist/commands/devops/install-plugin.js +1 -1
- package/dist/commands/devops/install-plugin.js.map +1 -1
- package/dist/commands/devops/open.js +7 -7
- package/dist/commands/devops/open.js.map +1 -1
- package/dist/commands/devops/status.js +3 -3
- package/dist/commands/devops/status.js.map +1 -1
- package/dist/commands/exec.js +1 -1
- package/dist/commands/exec.js.map +1 -1
- package/dist/commands/install.js +2 -2
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/prompt.js +2 -2
- package/dist/commands/prompt.js.map +1 -1
- package/dist/commands/resource.js +2 -2
- package/dist/commands/resource.js.map +1 -1
- package/dist/commands/update.js +1 -26
- package/dist/commands/update.js.map +1 -1
- package/dist/config/port.js +2 -2
- package/dist/config/port.js.map +1 -1
- package/dist/config/resolve.d.ts +1 -2
- package/dist/config/resolve.js +0 -12
- package/dist/config/resolve.js.map +1 -1
- package/dist/devops/lib/configure.d.ts +1 -1
- package/dist/devops/lib/configure.js +2 -2
- package/dist/devops/lib/configure.js.map +1 -1
- package/dist/devops/lib/install-plugin.d.ts +1 -1
- package/dist/devops/lib/install-plugin.js +1 -1
- package/dist/devops/lib/install-plugin.js.map +1 -1
- package/dist/devops/lib/install.d.ts +2 -2
- package/dist/devops/lib/install.js +5 -5
- package/dist/devops/lib/install.js.map +1 -1
- package/dist/devops/lib/open.js +11 -32
- package/dist/devops/lib/open.js.map +1 -1
- package/dist/devops/lib/remove-plugin.d.ts +1 -1
- package/dist/devops/lib/remove-plugin.js +3 -3
- package/dist/devops/lib/remove-plugin.js.map +1 -1
- package/dist/devops/lib/run-tool.d.ts +2 -2
- package/dist/devops/lib/run-tool.js +2 -2
- package/dist/devops/lib/types.d.ts +17 -54
- package/dist/devops/lib/types.js +2 -2
- package/dist/devops/lib/types.js.map +1 -1
- package/dist/devops/lib/update.d.ts +0 -15
- package/dist/devops/lib/update.js +2 -91
- package/dist/devops/lib/update.js.map +1 -1
- package/dist/devops/utils/agents.d.ts +0 -28
- package/dist/devops/utils/agents.js +0 -462
- package/dist/devops/utils/agents.js.map +1 -1
- package/dist/devops/utils/config.d.ts +9 -18
- package/dist/devops/utils/config.js +7 -20
- package/dist/devops/utils/config.js.map +1 -1
- package/dist/devops/utils/editor-cache.js +1 -1
- package/dist/devops/utils/editor-cache.js.map +1 -1
- package/dist/devops/utils/launch-error-dismiss.d.ts +2 -2
- package/dist/devops/utils/launch-error-dismiss.js +5 -5
- package/dist/devops/utils/manifest.d.ts +2 -2
- package/dist/devops/utils/manifest.js +3 -3
- package/dist/devops/utils/manifest.js.map +1 -1
- package/dist/devops/utils/port.d.ts +1 -1
- package/dist/devops/utils/port.js +1 -1
- package/dist/devops/utils/probe.d.ts +1 -1
- package/dist/devops/utils/probe.js +1 -1
- package/dist/devops/utils/ui.js +2 -2
- package/dist/devops/utils/ui.js.map +1 -1
- package/dist/devops/utils/unity-editor.js +4 -4
- package/dist/devops/utils/unity-editor.js.map +1 -1
- package/dist/devops/utils/unity-hub.js +1 -1
- package/dist/devops/utils/unity-hub.js.map +1 -1
- package/dist/devops/utils/unity-shutdown.d.ts +1 -1
- package/dist/devops/utils/unity-shutdown.js +1 -1
- package/dist/devops/utils/update-check.js +3 -3
- package/dist/devops/utils/update-check.js.map +1 -1
- package/dist/devops/utils/vendor.d.ts +2 -2
- package/dist/devops/utils/vendor.js +4 -4
- package/dist/devops/utils/vendor.js.map +1 -1
- package/dist/generated/tools.js +1 -1
- package/dist/generated/tools.js.map +1 -1
- package/dist/program.js +3 -3
- package/dist/program.js.map +1 -1
- package/dist/server/app.d.ts +5 -5
- package/dist/server/app.js +3 -3
- package/dist/server/app.js.map +1 -1
- package/dist/server/index.d.ts +2 -2
- package/dist/server/index.js +2 -2
- package/dist/server/index.js.map +1 -1
- package/dist/server/rest/auth.d.ts +1 -1
- package/dist/server/rest/auth.js +3 -3
- package/dist/server/rest/auth.js.map +1 -1
- package/dist/server/rest/context.d.ts +2 -2
- package/dist/server/rest/forward.d.ts +2 -2
- package/dist/server/session/store.d.ts +3 -3
- package/dist/server/session/store.js +4 -4
- package/dist/server/session/store.js.map +1 -1
- package/dist/server/stub-client/scenarios.js +8 -8
- package/dist/server/stub-client/scenarios.js.map +1 -1
- package/dist/server/types.d.ts +11 -11
- package/dist/server/types.js +9 -9
- package/dist/server/types.js.map +1 -1
- package/dist/server/ws/hub.d.ts +8 -8
- package/dist/server/ws/hub.js +13 -13
- package/dist/server/ws/hub.js.map +1 -1
- package/dist/server/ws/rpc.d.ts +3 -3
- package/dist/server/ws/rpc.js +4 -4
- package/dist/server/ws/rpc.js.map +1 -1
- package/dist/transport/index.d.ts +1 -1
- package/dist/transport/index.js +3 -3
- package/dist/transport/index.js.map +1 -1
- package/dist/transport/rest.js +1 -1
- package/dist/transport/rest.js.map +1 -1
- package/docs/INSTALL.zh-CN.md +2 -3
- package/package.json +1 -1
- package/skills/uco-setup/SKILL.md +1 -1
- package/skills/unity-editor/references/diagnostics.md +24 -24
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Components/ExtensionPanel.cs +379 -379
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/MenuItems.cs +72 -72
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/UnityCopilotProjectSettingsProvider.cs +64 -64
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowEditor.CopilotServer.cs +372 -372
- package/vendor/plugin/com.atelierai.unity.copilot/Plugins/ReflectorNet.dll +0 -0
- package/vendor/plugin/com.atelierai.unity.copilot/Plugins/Uco.Framework.Common.dll +0 -0
- package/vendor/plugin/com.atelierai.unity.copilot/Plugins/Uco.Framework.dll +0 -0
- package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPlugin.Config.cs +175 -175
- package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPlugin.cs +1 -1
- package/vendor/plugin/com.atelierai.unity.copilot/Runtime/Utils/EnvironmentUtils.cs +368 -368
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Environment/EnvironmentUtilsTests.cs +3 -3
- package/vendor/plugin/com.atelierai.unity.copilot/package.json +1 -1
- package/dist/commands/devops/login.d.ts +0 -2
- package/dist/commands/devops/login.js +0 -29
- package/dist/commands/devops/login.js.map +0 -1
- package/dist/commands/devops/setup-mcp.d.ts +0 -2
- package/dist/commands/devops/setup-mcp.js +0 -41
- package/dist/commands/devops/setup-mcp.js.map +0 -1
- package/dist/devops/commands-upstream/bootstrap-local.d.ts +0 -17
- package/dist/devops/commands-upstream/bootstrap-local.js +0 -87
- package/dist/devops/commands-upstream/bootstrap-local.js.map +0 -1
- package/dist/devops/commands-upstream/close.d.ts +0 -57
- package/dist/devops/commands-upstream/close.js +0 -188
- package/dist/devops/commands-upstream/close.js.map +0 -1
- package/dist/devops/commands-upstream/configure.d.ts +0 -2
- package/dist/devops/commands-upstream/configure.js +0 -87
- package/dist/devops/commands-upstream/configure.js.map +0 -1
- package/dist/devops/commands-upstream/create-project.d.ts +0 -2
- package/dist/devops/commands-upstream/create-project.js +0 -43
- package/dist/devops/commands-upstream/create-project.js.map +0 -1
- package/dist/devops/commands-upstream/install-plugin.d.ts +0 -2
- package/dist/devops/commands-upstream/install-plugin.js +0 -64
- package/dist/devops/commands-upstream/install-plugin.js.map +0 -1
- package/dist/devops/commands-upstream/install-unity.d.ts +0 -2
- package/dist/devops/commands-upstream/install-unity.js +0 -72
- package/dist/devops/commands-upstream/install-unity.js.map +0 -1
- package/dist/devops/commands-upstream/login.d.ts +0 -2
- package/dist/devops/commands-upstream/login.js +0 -33
- package/dist/devops/commands-upstream/login.js.map +0 -1
- package/dist/devops/commands-upstream/open.d.ts +0 -32
- package/dist/devops/commands-upstream/open.js +0 -282
- package/dist/devops/commands-upstream/open.js.map +0 -1
- package/dist/devops/commands-upstream/remove-plugin.d.ts +0 -2
- package/dist/devops/commands-upstream/remove-plugin.js +0 -41
- package/dist/devops/commands-upstream/remove-plugin.js.map +0 -1
- package/dist/devops/commands-upstream/run-system-tool.d.ts +0 -1
- package/dist/devops/commands-upstream/run-system-tool.js +0 -13
- package/dist/devops/commands-upstream/run-system-tool.js.map +0 -1
- package/dist/devops/commands-upstream/run-tool-builder.d.ts +0 -25
- package/dist/devops/commands-upstream/run-tool-builder.js +0 -125
- package/dist/devops/commands-upstream/run-tool-builder.js.map +0 -1
- package/dist/devops/commands-upstream/run-tool.d.ts +0 -1
- package/dist/devops/commands-upstream/run-tool.js +0 -13
- package/dist/devops/commands-upstream/run-tool.js.map +0 -1
- package/dist/devops/commands-upstream/setup-mcp.d.ts +0 -2
- package/dist/devops/commands-upstream/setup-mcp.js +0 -68
- package/dist/devops/commands-upstream/setup-mcp.js.map +0 -1
- package/dist/devops/commands-upstream/setup-skills.d.ts +0 -2
- package/dist/devops/commands-upstream/setup-skills.js +0 -167
- package/dist/devops/commands-upstream/setup-skills.js.map +0 -1
- package/dist/devops/commands-upstream/status.d.ts +0 -2
- package/dist/devops/commands-upstream/status.js +0 -87
- package/dist/devops/commands-upstream/status.js.map +0 -1
- package/dist/devops/commands-upstream/update.d.ts +0 -2
- package/dist/devops/commands-upstream/update.js +0 -77
- package/dist/devops/commands-upstream/update.js.map +0 -1
- package/dist/devops/commands-upstream/wait-for-ready.d.ts +0 -2
- package/dist/devops/commands-upstream/wait-for-ready.js +0 -93
- package/dist/devops/commands-upstream/wait-for-ready.js.map +0 -1
- package/dist/devops/lib/setup-mcp.d.ts +0 -35
- package/dist/devops/lib/setup-mcp.js +0 -177
- package/dist/devops/lib/setup-mcp.js.map +0 -1
- package/dist/devops/utils/cloud-login.d.ts +0 -7
- package/dist/devops/utils/cloud-login.js +0 -56
- package/dist/devops/utils/cloud-login.js.map +0 -1
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import * as path from 'path';
|
|
3
|
-
import { ensureUnityHub, createProject, listInstalledEditors, findHighestEditor } from '../utils/unity-hub.js';
|
|
4
|
-
import * as ui from '../utils/ui.js';
|
|
5
|
-
import { verbose } from '../utils/ui.js';
|
|
6
|
-
export const createProjectCommand = new Command('create-project')
|
|
7
|
-
.description('Create a new Unity project')
|
|
8
|
-
.argument('[path]', 'Path where the project will be created')
|
|
9
|
-
.option('--path <path>', 'Path where the project will be created')
|
|
10
|
-
.option('--unity <version>', 'Unity Editor version to use')
|
|
11
|
-
.action(async (positionalPath, options) => {
|
|
12
|
-
const resolvedPath = positionalPath ?? options.path;
|
|
13
|
-
if (!resolvedPath) {
|
|
14
|
-
ui.error('Path is required. Usage: unity-mcp-cli create-project <path> or --path <path>');
|
|
15
|
-
process.exit(1);
|
|
16
|
-
}
|
|
17
|
-
const spinner = ui.startSpinner('Locating Unity Hub...');
|
|
18
|
-
let hubPath;
|
|
19
|
-
try {
|
|
20
|
-
hubPath = await ensureUnityHub();
|
|
21
|
-
}
|
|
22
|
-
catch (err) {
|
|
23
|
-
spinner.error('Failed to locate Unity Hub');
|
|
24
|
-
throw err;
|
|
25
|
-
}
|
|
26
|
-
spinner.success('Unity Hub located');
|
|
27
|
-
let editorVersion = options.unity;
|
|
28
|
-
if (!editorVersion) {
|
|
29
|
-
const editors = listInstalledEditors(hubPath);
|
|
30
|
-
if (editors.length === 0) {
|
|
31
|
-
ui.error('No Unity editors installed. Install one with: unity-mcp-cli install-unity [version]');
|
|
32
|
-
process.exit(1);
|
|
33
|
-
}
|
|
34
|
-
const highest = findHighestEditor(editors);
|
|
35
|
-
editorVersion = highest.version;
|
|
36
|
-
ui.info(`No Unity version specified, using highest installed: ${editorVersion}`);
|
|
37
|
-
}
|
|
38
|
-
const projectPath = path.resolve(resolvedPath);
|
|
39
|
-
verbose(`Creating project at: ${projectPath} with editor version: ${editorVersion}`);
|
|
40
|
-
verbose(`Unity Hub path: ${hubPath}`);
|
|
41
|
-
createProject(hubPath, projectPath, editorVersion);
|
|
42
|
-
});
|
|
43
|
-
//# sourceMappingURL=create-project.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-project.js","sourceRoot":"","sources":["../../../src/devops/commands-upstream/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"}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import * as path from 'path';
|
|
3
|
-
import * as ui from '../utils/ui.js';
|
|
4
|
-
import { verbose } from '../utils/ui.js';
|
|
5
|
-
import { installPlugin } from '../lib/install-plugin.js';
|
|
6
|
-
export const installPluginCommand = new Command('install-plugin')
|
|
7
|
-
.description('Install Unity-MCP plugin into a Unity project')
|
|
8
|
-
.argument('[path]', 'Path to the Unity project')
|
|
9
|
-
.option('--path <path>', 'Path to the Unity project')
|
|
10
|
-
.option('--plugin-version <version>', 'Plugin version to install (default: latest)')
|
|
11
|
-
.action(async (positionalPath, options) => {
|
|
12
|
-
const resolvedPath = positionalPath ?? options.path;
|
|
13
|
-
if (!resolvedPath) {
|
|
14
|
-
ui.error('Path is required. Usage: unity-mcp-cli install-plugin <path> or --path <path>');
|
|
15
|
-
process.exit(1);
|
|
16
|
-
}
|
|
17
|
-
const projectPath = path.resolve(resolvedPath);
|
|
18
|
-
// Wire the library's progress events back into the CLI's chalk-
|
|
19
|
-
// styled ui so the terminal experience stays identical.
|
|
20
|
-
let spinner;
|
|
21
|
-
if (!options.pluginVersion) {
|
|
22
|
-
spinner = ui.startSpinner('Resolving latest plugin version...');
|
|
23
|
-
}
|
|
24
|
-
const result = await installPlugin({
|
|
25
|
-
unityProjectPath: projectPath,
|
|
26
|
-
version: options.pluginVersion,
|
|
27
|
-
onProgress: (event) => {
|
|
28
|
-
if (event.phase === 'dependencies-resolved' && spinner) {
|
|
29
|
-
spinner.success(`Resolved plugin version: ${event.version}`);
|
|
30
|
-
spinner = undefined;
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
if (event.phase === 'manifest-patched') {
|
|
34
|
-
// Preserve the historical `ui.success("Updated …")` vs
|
|
35
|
-
// `ui.info("manifest.json is already up to date.")` split
|
|
36
|
-
// that the shared manifest helpers used to print directly.
|
|
37
|
-
if (event.message.startsWith('Updated ')) {
|
|
38
|
-
ui.success(event.message);
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
ui.info(event.message);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
},
|
|
45
|
-
});
|
|
46
|
-
if (result.kind === 'failure') {
|
|
47
|
-
if (spinner) {
|
|
48
|
-
spinner.error('Failed to resolve plugin version');
|
|
49
|
-
spinner = undefined;
|
|
50
|
-
}
|
|
51
|
-
ui.error(result.error.message);
|
|
52
|
-
process.exit(1);
|
|
53
|
-
}
|
|
54
|
-
// Narrowed: result.kind === 'success' below — `installedVersion`
|
|
55
|
-
// and `manifestPath` are non-optional.
|
|
56
|
-
verbose(`Plugin version: ${result.installedVersion} (explicit: ${!!options.pluginVersion})`);
|
|
57
|
-
verbose(`Manifest path: ${result.manifestPath}`);
|
|
58
|
-
ui.info(`Installing Unity-MCP plugin v${result.installedVersion} into: ${projectPath}`);
|
|
59
|
-
for (const warning of result.warnings) {
|
|
60
|
-
ui.warn(warning);
|
|
61
|
-
}
|
|
62
|
-
ui.success('Done! Open the project in Unity Editor to complete installation.');
|
|
63
|
-
});
|
|
64
|
-
//# sourceMappingURL=install-plugin.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"install-plugin.js","sourceRoot":"","sources":["../../../src/devops/commands-upstream/install-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import * as path from 'path';
|
|
3
|
-
import * as fs from 'fs';
|
|
4
|
-
import { ensureUnityHub, installEditor, listInstalledEditors, listAvailableReleases, findLatestStableRelease } from '../utils/unity-hub.js';
|
|
5
|
-
import { getProjectEditorVersion } from '../utils/unity-editor.js';
|
|
6
|
-
import * as ui from '../utils/ui.js';
|
|
7
|
-
import { verbose } from '../utils/ui.js';
|
|
8
|
-
export const installUnityCommand = new Command('install-unity')
|
|
9
|
-
.description('Install Unity Editor via Unity Hub')
|
|
10
|
-
.argument('[version]', 'Unity Editor version to install (e.g. 6000.3.1f1). Omit to install latest stable release.')
|
|
11
|
-
.option('--path <path>', 'Read version from an existing Unity project')
|
|
12
|
-
.action(async (positionalVersion, options) => {
|
|
13
|
-
verbose(`install-unity invoked with version=${positionalVersion ?? '(auto)'}, path=${options.path ?? '(none)'}`);
|
|
14
|
-
const spinner = ui.startSpinner('Locating Unity Hub...');
|
|
15
|
-
let hubPath;
|
|
16
|
-
try {
|
|
17
|
-
hubPath = await ensureUnityHub();
|
|
18
|
-
}
|
|
19
|
-
catch (err) {
|
|
20
|
-
spinner.error('Failed to locate Unity Hub');
|
|
21
|
-
throw err;
|
|
22
|
-
}
|
|
23
|
-
spinner.success('Unity Hub located');
|
|
24
|
-
verbose(`Unity Hub path: ${hubPath}`);
|
|
25
|
-
let version = positionalVersion;
|
|
26
|
-
if (!version && options.path) {
|
|
27
|
-
const projectPath = path.resolve(options.path);
|
|
28
|
-
if (!fs.existsSync(projectPath)) {
|
|
29
|
-
ui.error(`Project path does not exist: ${projectPath}`);
|
|
30
|
-
process.exit(1);
|
|
31
|
-
}
|
|
32
|
-
version = getProjectEditorVersion(projectPath) ?? undefined;
|
|
33
|
-
if (version) {
|
|
34
|
-
ui.info(`Detected editor version from project: ${version}`);
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
ui.error('Could not read editor version from ProjectSettings/ProjectVersion.txt');
|
|
38
|
-
process.exit(1);
|
|
39
|
-
}
|
|
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
|
|
44
|
-
if (!version) {
|
|
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
|
-
}
|
|
55
|
-
}
|
|
56
|
-
process.exit(1);
|
|
57
|
-
}
|
|
58
|
-
ui.success(`Latest stable release: ${latest.version}`);
|
|
59
|
-
version = latest.version;
|
|
60
|
-
}
|
|
61
|
-
// Check if already installed
|
|
62
|
-
const editors = listInstalledEditors(hubPath);
|
|
63
|
-
const alreadyInstalled = editors.find((e) => e.version === version);
|
|
64
|
-
if (alreadyInstalled) {
|
|
65
|
-
ui.success(`Unity Editor ${version} is already installed at: ${alreadyInstalled.path}`);
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
verbose(`Installing Unity Editor version: ${version}`);
|
|
69
|
-
await installEditor(hubPath, version, releases);
|
|
70
|
-
ui.success(`Unity Editor ${version} installed successfully`);
|
|
71
|
-
});
|
|
72
|
-
//# sourceMappingURL=install-unity.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"install-unity.js","sourceRoot":"","sources":["../../../src/devops/commands-upstream/install-unity.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
// Copyright (c) 2024 Ivan Murzak. All rights reserved.
|
|
2
|
-
// Licensed under the Apache License, Version 2.0.
|
|
3
|
-
import { Command } from 'commander';
|
|
4
|
-
import * as ui from '../utils/ui.js';
|
|
5
|
-
import { verbose } from '../utils/ui.js';
|
|
6
|
-
import { resolveProjectPath } from '../utils/connection.js';
|
|
7
|
-
import { getOrCreateConfig, CLOUD_SERVER_BASE_URL } from '../utils/config.js';
|
|
8
|
-
import { runCloudLogin } from '../utils/cloud-login.js';
|
|
9
|
-
export const loginCommand = new Command('login')
|
|
10
|
-
.description('Authenticate with the Unity-MCP cloud server')
|
|
11
|
-
.argument('[path]', 'Unity project path (defaults to cwd)')
|
|
12
|
-
.option('--force', 'Re-authenticate even if already logged in')
|
|
13
|
-
.action(async (positionalPath, options) => {
|
|
14
|
-
const projectPath = resolveProjectPath(positionalPath, options);
|
|
15
|
-
verbose(`Project path: ${projectPath}`);
|
|
16
|
-
const config = getOrCreateConfig(projectPath);
|
|
17
|
-
if (config.cloudToken && !options.force) {
|
|
18
|
-
ui.success('Already authenticated with cloud server.');
|
|
19
|
-
ui.info('Use --force to re-authenticate.');
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
ui.heading('Cloud Authentication');
|
|
23
|
-
ui.label('Server', CLOUD_SERVER_BASE_URL);
|
|
24
|
-
ui.divider();
|
|
25
|
-
const token = await runCloudLogin(projectPath);
|
|
26
|
-
if (token) {
|
|
27
|
-
ui.success('Authentication complete. Cloud token saved to project config.');
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
process.exit(1);
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
//# sourceMappingURL=login.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/devops/commands-upstream/login.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,kDAAkD;AAElD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAOxD,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;KAC7C,WAAW,CAAC,8CAA8C,CAAC;KAC3D,QAAQ,CAAC,QAAQ,EAAE,sCAAsC,CAAC;KAC1D,MAAM,CAAC,SAAS,EAAE,2CAA2C,CAAC;KAC9D,MAAM,CACL,KAAK,EACH,cAAkC,EAClC,OAAqB,EACrB,EAAE;IACF,MAAM,WAAW,GAAG,kBAAkB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAChE,OAAO,CAAC,iBAAiB,WAAW,EAAE,CAAC,CAAC;IAExC,MAAM,MAAM,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAE9C,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACxC,EAAE,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC;QACvD,EAAE,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC3C,OAAO;IACT,CAAC;IAED,EAAE,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACnC,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;IAC1C,EAAE,CAAC,OAAO,EAAE,CAAC;IAEb,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,WAAW,CAAC,CAAC;IAC/C,IAAI,KAAK,EAAE,CAAC;QACV,EAAE,CAAC,OAAO,CAAC,+DAA+D,CAAC,CAAC;IAC9E,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CACF,CAAC"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import { isUnityProjectDir as libIsUnityProjectDir } from '../lib/open.js';
|
|
3
|
-
/**
|
|
4
|
-
* Resolve the project path from the positional argument, `--path` option, or
|
|
5
|
-
* the current working directory when neither is provided.
|
|
6
|
-
*
|
|
7
|
-
* Re-exported from the library helper so existing tests continue to import
|
|
8
|
-
* `resolveOpenProjectPath` from this module.
|
|
9
|
-
*/
|
|
10
|
-
export interface ResolveProjectPathResult {
|
|
11
|
-
/** Absolute, resolved path to the project directory. */
|
|
12
|
-
projectPath: string;
|
|
13
|
-
/** True if no path was supplied and we fell back to `process.cwd()`. */
|
|
14
|
-
usedCwdFallback: boolean;
|
|
15
|
-
}
|
|
16
|
-
export declare function resolveOpenProjectPath(positionalPath: string | undefined, optionPath: string | undefined, cwd: string): ResolveProjectPathResult;
|
|
17
|
-
/** Re-export for backward compatibility with existing tests. */
|
|
18
|
-
export declare const isUnityProjectDir: typeof libIsUnityProjectDir;
|
|
19
|
-
/**
|
|
20
|
-
* Parse a `--xxx <ms>` style commander option as a positive integer.
|
|
21
|
-
* Commander stores the raw string (including the literal default
|
|
22
|
-
* supplied to `.option()`), so a parse-and-validate step is required
|
|
23
|
-
* before the value can flow into the library. Exits with code 1 on
|
|
24
|
-
* a non-numeric / non-positive value — matches the CLI's existing
|
|
25
|
-
* error-handling pattern for malformed flag values (`--auth`,
|
|
26
|
-
* `--transport`, `--start-server`).
|
|
27
|
-
*
|
|
28
|
-
* Exported for unit tests; the CLI wrapper is the only production
|
|
29
|
-
* caller.
|
|
30
|
-
*/
|
|
31
|
-
export declare function parsePositiveIntFlag(raw: string | undefined, flagName: string, fallback: number): number;
|
|
32
|
-
export declare const openCommand: Command;
|
|
@@ -1,282 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import * as path from 'path';
|
|
3
|
-
import { findUnityHub, listInstalledEditors } from '../utils/unity-hub.js';
|
|
4
|
-
import { findUnityProcess } from '../utils/unity-process.js';
|
|
5
|
-
import * as ui from '../utils/ui.js';
|
|
6
|
-
import { verbose } from '../utils/ui.js';
|
|
7
|
-
import { openProject, resolveProjectPath as libResolveProjectPath, isUnityProjectDir as libIsUnityProjectDir, } from '../lib/open.js';
|
|
8
|
-
export function resolveOpenProjectPath(positionalPath, optionPath, cwd) {
|
|
9
|
-
// The CLI takes both a positional `[path]` AND an `--path` flag; the
|
|
10
|
-
// library helper only takes a single `optionPath`. Collapse the two
|
|
11
|
-
// CLI inputs (positional wins) before delegating.
|
|
12
|
-
const explicit = positionalPath ?? optionPath;
|
|
13
|
-
return libResolveProjectPath(explicit, cwd);
|
|
14
|
-
}
|
|
15
|
-
/** Re-export for backward compatibility with existing tests. */
|
|
16
|
-
export const isUnityProjectDir = libIsUnityProjectDir;
|
|
17
|
-
/**
|
|
18
|
-
* Parse a `--xxx <ms>` style commander option as a positive integer.
|
|
19
|
-
* Commander stores the raw string (including the literal default
|
|
20
|
-
* supplied to `.option()`), so a parse-and-validate step is required
|
|
21
|
-
* before the value can flow into the library. Exits with code 1 on
|
|
22
|
-
* a non-numeric / non-positive value — matches the CLI's existing
|
|
23
|
-
* error-handling pattern for malformed flag values (`--auth`,
|
|
24
|
-
* `--transport`, `--start-server`).
|
|
25
|
-
*
|
|
26
|
-
* Exported for unit tests; the CLI wrapper is the only production
|
|
27
|
-
* caller.
|
|
28
|
-
*/
|
|
29
|
-
export function parsePositiveIntFlag(raw, flagName, fallback) {
|
|
30
|
-
if (raw === undefined)
|
|
31
|
-
return fallback;
|
|
32
|
-
const trimmed = String(raw).trim();
|
|
33
|
-
if (trimmed === '')
|
|
34
|
-
return fallback;
|
|
35
|
-
// Reject scientific notation, fractions, and explicit signs — the
|
|
36
|
-
// ms value MUST be a positive whole number for the polling loop's
|
|
37
|
-
// bookkeeping to be sane.
|
|
38
|
-
if (!/^\d+$/.test(trimmed)) {
|
|
39
|
-
ui.error(`${flagName} must be a positive integer (got: "${raw}")`);
|
|
40
|
-
process.exit(1);
|
|
41
|
-
}
|
|
42
|
-
const parsed = parseInt(trimmed, 10);
|
|
43
|
-
if (!Number.isFinite(parsed) || parsed < 0) {
|
|
44
|
-
ui.error(`${flagName} must be a positive integer (got: "${raw}")`);
|
|
45
|
-
process.exit(1);
|
|
46
|
-
}
|
|
47
|
-
return parsed;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Print actionable help when a required Unity Editor version is not found.
|
|
51
|
-
* Lists installed editors and suggests install or override commands. Lives
|
|
52
|
-
* here (next to the CLI command) instead of `unity-editor.ts` because it
|
|
53
|
-
* writes to the chalk-styled `ui` and we want to keep the `unity-editor.ts`
|
|
54
|
-
* helpers library-safe.
|
|
55
|
-
*/
|
|
56
|
-
function printEditorNotFoundHelp(requestedVersion, commandName) {
|
|
57
|
-
if (requestedVersion) {
|
|
58
|
-
ui.error(`Unity Editor ${requestedVersion} is not installed.`);
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
ui.error('No Unity Editor found.');
|
|
62
|
-
}
|
|
63
|
-
ui.heading('Options:');
|
|
64
|
-
if (requestedVersion) {
|
|
65
|
-
ui.info(`Install it: npx unity-mcp-cli install-unity ${requestedVersion}`);
|
|
66
|
-
}
|
|
67
|
-
ui.info('Install latest stable: npx unity-mcp-cli install-unity');
|
|
68
|
-
const hubPath = findUnityHub();
|
|
69
|
-
if (hubPath) {
|
|
70
|
-
const editors = listInstalledEditors(hubPath);
|
|
71
|
-
if (editors.length > 0) {
|
|
72
|
-
ui.heading('Installed editors:');
|
|
73
|
-
for (const editor of editors) {
|
|
74
|
-
ui.label(editor.version, editor.path);
|
|
75
|
-
}
|
|
76
|
-
if (requestedVersion) {
|
|
77
|
-
const hint = commandName === 'connect'
|
|
78
|
-
? `npx unity-mcp-cli ${commandName} --unity ${editors[0].version} --path <path> --url <url>`
|
|
79
|
-
: `npx unity-mcp-cli ${commandName} <path> --unity ${editors[0].version}`;
|
|
80
|
-
ui.info(`Use a different version: ${hint}`);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
export const openCommand = new Command('open')
|
|
86
|
-
.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.')
|
|
87
|
-
.argument('[path]', 'Path to the Unity project (defaults to current directory)')
|
|
88
|
-
.option('--path <path>', 'Path to the Unity project (defaults to current directory)')
|
|
89
|
-
.option('--unity <version>', 'Specific Unity Editor version to use')
|
|
90
|
-
.option('--no-connect', 'Open without MCP connection environment variables')
|
|
91
|
-
.option('--url <url>', 'MCP server URL to connect to (sets UNITY_MCP_HOST)')
|
|
92
|
-
.option('--tools <names>', 'Comma-separated list of tools to enable (sets UNITY_MCP_TOOLS)')
|
|
93
|
-
.option('--token <token>', 'Auth token (sets UNITY_MCP_TOKEN)')
|
|
94
|
-
.option('--auth <option>', 'Auth option: none or required (sets UNITY_MCP_AUTH_OPTION)')
|
|
95
|
-
.option('--keep-connected', 'Force keep connected (sets UNITY_MCP_KEEP_CONNECTED=true)')
|
|
96
|
-
.option('--transport <method>', 'Transport method: streamableHttp or stdio (sets UNITY_MCP_TRANSPORT)')
|
|
97
|
-
.option('--start-server <value>', 'Set to true/false to control server auto-start (sets UNITY_MCP_START_SERVER)', undefined)
|
|
98
|
-
.option('--no-auto-dismiss-launch-errors', 'Disable auto-dismissal of the Unity Editor "compile errors at launch" dialog (default: enabled). On macOS, requires Accessibility permission for the terminal / unity-mcp-cli binary. On Linux/X11, requires `xdotool` on PATH (Wayland not supported).')
|
|
99
|
-
.option('--launch-dismiss-timeout-ms <ms>', 'Overall timeout (milliseconds) for the launch-errors auto-dismiss polling loop (default: 30000)', '30000')
|
|
100
|
-
.option('--launch-dismiss-poll-interval-ms <ms>', 'Polling tick interval (milliseconds) for the launch-errors auto-dismiss loop (default: 1500)', '1500')
|
|
101
|
-
.action(async (positionalPath, options) => {
|
|
102
|
-
// Resolve the path the same way the library does, but also
|
|
103
|
-
// validate the existence + Unity-project shape up front so we
|
|
104
|
-
// can emit the historical, friendlier "Current directory is
|
|
105
|
-
// not a Unity project" message when the cwd-fallback was used.
|
|
106
|
-
// The library always reports the underlying error string, but
|
|
107
|
-
// the CLI is allowed to render two different variants.
|
|
108
|
-
const { projectPath, usedCwdFallback } = resolveOpenProjectPath(positionalPath, options.path, process.cwd());
|
|
109
|
-
const fs = await import('fs');
|
|
110
|
-
if (!fs.existsSync(projectPath)) {
|
|
111
|
-
ui.error(`Project path does not exist: ${projectPath}`);
|
|
112
|
-
process.exit(1);
|
|
113
|
-
}
|
|
114
|
-
if (!libIsUnityProjectDir(projectPath)) {
|
|
115
|
-
if (usedCwdFallback) {
|
|
116
|
-
ui.error(`Current directory is not a Unity project: ${projectPath}`);
|
|
117
|
-
ui.info('Run this command from a Unity project folder, or pass a path: unity-mcp-cli open <path>');
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
ui.error(`Not a Unity project (missing Assets/ or ProjectSettings/ProjectVersion.txt): ${projectPath}`);
|
|
121
|
-
}
|
|
122
|
-
process.exit(1);
|
|
123
|
-
}
|
|
124
|
-
if (usedCwdFallback) {
|
|
125
|
-
verbose(`No path provided — using current directory: ${projectPath}`);
|
|
126
|
-
}
|
|
127
|
-
verbose(`open invoked for project: ${projectPath}`);
|
|
128
|
-
verbose(`--no-connect: ${options.connect === false}`);
|
|
129
|
-
// Validate auth/transport/startServer here — keeps the historical
|
|
130
|
-
// CLI error messages and exit codes (the library reports these
|
|
131
|
-
// as `kind: 'failure'` instead).
|
|
132
|
-
if (options.auth !== undefined && options.auth !== 'none' && options.auth !== 'required') {
|
|
133
|
-
ui.error('--auth must be "none" or "required"');
|
|
134
|
-
process.exit(1);
|
|
135
|
-
}
|
|
136
|
-
if (options.transport !== undefined && options.transport !== 'streamableHttp' && options.transport !== 'stdio') {
|
|
137
|
-
ui.error('--transport must be "streamableHttp" or "stdio"');
|
|
138
|
-
process.exit(1);
|
|
139
|
-
}
|
|
140
|
-
let startServerBool;
|
|
141
|
-
if (options.startServer !== undefined) {
|
|
142
|
-
const val = options.startServer.toLowerCase();
|
|
143
|
-
if (val !== 'true' && val !== 'false') {
|
|
144
|
-
ui.error('--start-server must be "true" or "false"');
|
|
145
|
-
process.exit(1);
|
|
146
|
-
}
|
|
147
|
-
startServerBool = val === 'true';
|
|
148
|
-
}
|
|
149
|
-
// --launch-dismiss-timeout-ms / --launch-dismiss-poll-interval-ms
|
|
150
|
-
// are commander string options with numeric defaults. Parse and
|
|
151
|
-
// validate here so the failure mode is a clear CLI error rather
|
|
152
|
-
// than a silent NaN that disables the polling loop.
|
|
153
|
-
const launchDismissTimeoutMs = parsePositiveIntFlag(options.launchDismissTimeoutMs, '--launch-dismiss-timeout-ms', 30000);
|
|
154
|
-
const launchDismissPollIntervalMs = parsePositiveIntFlag(options.launchDismissPollIntervalMs, '--launch-dismiss-poll-interval-ms', 1500);
|
|
155
|
-
// Commander's `--no-auto-dismiss-launch-errors` produces
|
|
156
|
-
// `autoDismissLaunchErrors: false`; the absence of the flag
|
|
157
|
-
// produces `undefined` (which `openProject` treats as the default
|
|
158
|
-
// `true`). No additional parsing needed.
|
|
159
|
-
// Pre-flight already-running check so we don't flash the
|
|
160
|
-
// "Locating Unity Editor..." spinner when Unity is already open
|
|
161
|
-
// for this project. The lib does its own check too (single
|
|
162
|
-
// source of truth for the result shape); this one only suppresses
|
|
163
|
-
// spinner spam in the common already-open case.
|
|
164
|
-
const alreadyRunningPid = findUnityProcess(projectPath)?.pid;
|
|
165
|
-
// Spinner around editor location for parity with the legacy UX.
|
|
166
|
-
let spinner = alreadyRunningPid === undefined
|
|
167
|
-
? ui.startSpinner('Locating Unity Editor...')
|
|
168
|
-
: undefined;
|
|
169
|
-
const result = await openProject({
|
|
170
|
-
projectPath,
|
|
171
|
-
unityVersion: options.unity,
|
|
172
|
-
noConnect: options.connect === false,
|
|
173
|
-
url: options.url,
|
|
174
|
-
token: options.token,
|
|
175
|
-
auth: options.auth,
|
|
176
|
-
tools: options.tools,
|
|
177
|
-
keepConnected: options.keepConnected,
|
|
178
|
-
transport: options.transport,
|
|
179
|
-
startServer: startServerBool,
|
|
180
|
-
autoDismissLaunchErrors: options.autoDismissLaunchErrors !== false,
|
|
181
|
-
launchDismissTimeoutMs,
|
|
182
|
-
launchDismissPollIntervalMs,
|
|
183
|
-
onProgress: (event) => {
|
|
184
|
-
switch (event.phase) {
|
|
185
|
-
case 'detecting-editor-version': {
|
|
186
|
-
// unity-version detection is fast — no UI noise needed.
|
|
187
|
-
break;
|
|
188
|
-
}
|
|
189
|
-
case 'editors-located': {
|
|
190
|
-
// Cover the case where editor discovery succeeded — the
|
|
191
|
-
// spinner success message lands on `editor-resolved`,
|
|
192
|
-
// not here, so we don't overwrite the "Locating…" line.
|
|
193
|
-
break;
|
|
194
|
-
}
|
|
195
|
-
case 'editor-resolved': {
|
|
196
|
-
if (spinner) {
|
|
197
|
-
spinner.success('Unity Editor located');
|
|
198
|
-
spinner = undefined;
|
|
199
|
-
}
|
|
200
|
-
verbose(`Editor path: ${event.editorPath}`);
|
|
201
|
-
if (event.version) {
|
|
202
|
-
ui.info(`Detected editor version from project: ${event.version}`);
|
|
203
|
-
verbose(`Resolved editor version from ProjectVersion.txt: ${event.version}`);
|
|
204
|
-
}
|
|
205
|
-
break;
|
|
206
|
-
}
|
|
207
|
-
case 'connection-details': {
|
|
208
|
-
const envVars = event.envVars;
|
|
209
|
-
if (Object.keys(envVars).length > 0) {
|
|
210
|
-
ui.heading('Connection Details');
|
|
211
|
-
ui.label('Project', event.projectPath);
|
|
212
|
-
ui.label('Editor', event.editorPath);
|
|
213
|
-
ui.heading('Environment Variables');
|
|
214
|
-
for (const [key, value] of Object.entries(envVars)) {
|
|
215
|
-
const display = key === 'UNITY_MCP_TOKEN' ? '***' : value;
|
|
216
|
-
ui.label(key, display);
|
|
217
|
-
verbose(`Setting ${key}=${display}`);
|
|
218
|
-
}
|
|
219
|
-
ui.divider();
|
|
220
|
-
}
|
|
221
|
-
else {
|
|
222
|
-
verbose('MCP connection disabled via --no-connect or no options');
|
|
223
|
-
}
|
|
224
|
-
break;
|
|
225
|
-
}
|
|
226
|
-
case 'launching-editor': {
|
|
227
|
-
ui.label('Project', event.projectPath);
|
|
228
|
-
ui.label('Editor', event.editorPath);
|
|
229
|
-
break;
|
|
230
|
-
}
|
|
231
|
-
case 'editor-launched': {
|
|
232
|
-
ui.success(`Launched Unity Editor (PID: ${event.pid ?? 'unknown'})`);
|
|
233
|
-
break;
|
|
234
|
-
}
|
|
235
|
-
case 'launch-errors-dismissed': {
|
|
236
|
-
// Single info-level log line on dismissal — exact format
|
|
237
|
-
// is part of the issue's acceptance contract. Keep in
|
|
238
|
-
// sync with `launch-error-dismiss.ts` if changed.
|
|
239
|
-
ui.info(`[open] dismissed Unity launch-errors dialog (button=${event.button}, platform=${event.platform})`);
|
|
240
|
-
break;
|
|
241
|
-
}
|
|
242
|
-
default:
|
|
243
|
-
break;
|
|
244
|
-
}
|
|
245
|
-
},
|
|
246
|
-
});
|
|
247
|
-
if (spinner) {
|
|
248
|
-
// Library returned before emitting `editor-resolved` — most
|
|
249
|
-
// likely failed to locate an editor. Stop the spinner so the
|
|
250
|
-
// error path renders cleanly.
|
|
251
|
-
spinner.stop();
|
|
252
|
-
spinner = undefined;
|
|
253
|
-
}
|
|
254
|
-
if (result.kind === 'failure') {
|
|
255
|
-
// Render the failure with the original CLI surface. Two cases
|
|
256
|
-
// get the rich "no editor found" help; everything else is a
|
|
257
|
-
// plain ui.error.
|
|
258
|
-
if (result.errorMessage.startsWith('Unity Editor') &&
|
|
259
|
-
result.errorMessage.endsWith('is not installed.')) {
|
|
260
|
-
printEditorNotFoundHelp(options.unity, 'open');
|
|
261
|
-
}
|
|
262
|
-
else if (result.errorMessage === 'No Unity Editor found.') {
|
|
263
|
-
printEditorNotFoundHelp(undefined, 'open');
|
|
264
|
-
}
|
|
265
|
-
else {
|
|
266
|
-
ui.error(result.errorMessage);
|
|
267
|
-
}
|
|
268
|
-
process.exit(1);
|
|
269
|
-
}
|
|
270
|
-
// Already-running short-circuit: the library returns success
|
|
271
|
-
// with `alreadyRunning: true`. Preserve the original exit-0 +
|
|
272
|
-
// friendly message.
|
|
273
|
-
if (result.alreadyRunning) {
|
|
274
|
-
ui.success(`Unity is already running with this project (PID: ${result.editorPid ?? 'unknown'})`);
|
|
275
|
-
ui.info('Skipping launch. Use the running instance or close it first.');
|
|
276
|
-
process.exit(0);
|
|
277
|
-
}
|
|
278
|
-
// Path is normally absolute already; resolve defensively for
|
|
279
|
-
// verbose log parity with the legacy CLI.
|
|
280
|
-
verbose(`Resolved project path: ${path.resolve(result.projectPath)}`);
|
|
281
|
-
});
|
|
282
|
-
//# sourceMappingURL=open.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"open.js","sourceRoot":"","sources":["../../../src/devops/commands-upstream/open.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import * as path from 'path';
|
|
3
|
-
import * as ui from '../utils/ui.js';
|
|
4
|
-
import { verbose } from '../utils/ui.js';
|
|
5
|
-
import { removePlugin } from '../lib/remove-plugin.js';
|
|
6
|
-
export const removePluginCommand = new Command('remove-plugin')
|
|
7
|
-
.description('Remove Unity-MCP plugin from a Unity project')
|
|
8
|
-
.argument('[path]', 'Path to the Unity project')
|
|
9
|
-
.option('--path <path>', 'Path to the Unity project')
|
|
10
|
-
.action(async (positionalPath, options) => {
|
|
11
|
-
const resolvedPath = positionalPath ?? options.path;
|
|
12
|
-
if (!resolvedPath) {
|
|
13
|
-
ui.error('Path is required. Usage: unity-mcp-cli remove-plugin <path> or --path <path>');
|
|
14
|
-
process.exit(1);
|
|
15
|
-
}
|
|
16
|
-
const projectPath = path.resolve(resolvedPath);
|
|
17
|
-
ui.info(`Removing Unity-MCP plugin from: ${projectPath}`);
|
|
18
|
-
const result = await removePlugin({ unityProjectPath: projectPath });
|
|
19
|
-
if (result.kind === 'failure') {
|
|
20
|
-
ui.error(result.error.message);
|
|
21
|
-
process.exit(1);
|
|
22
|
-
}
|
|
23
|
-
// Narrowed: result.kind === 'success' below — `manifestPath` is
|
|
24
|
-
// non-optional and `removed` is a definite boolean.
|
|
25
|
-
verbose(`Manifest path: ${result.manifestPath}`);
|
|
26
|
-
if (result.removed) {
|
|
27
|
-
ui.success(`Removed com.atelierai.unity.copilot from ${result.manifestPath}`);
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
ui.info('Unity-MCP plugin is not installed. Nothing to remove.');
|
|
31
|
-
}
|
|
32
|
-
for (const warning of result.warnings) {
|
|
33
|
-
// `removed === false` is already surfaced via the info line above,
|
|
34
|
-
// so skip the duplicate "not installed" warning to avoid noise.
|
|
35
|
-
if (warning.startsWith('Unity-MCP plugin was not installed'))
|
|
36
|
-
continue;
|
|
37
|
-
ui.warn(warning);
|
|
38
|
-
}
|
|
39
|
-
ui.success('Done!');
|
|
40
|
-
});
|
|
41
|
-
//# sourceMappingURL=remove-plugin.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"remove-plugin.js","sourceRoot":"","sources":["../../../src/devops/commands-upstream/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,gBAAgB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,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;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/C,EAAE,CAAC,IAAI,CAAC,mCAAmC,WAAW,EAAE,CAAC,CAAC;IAE1D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC,CAAC;IAErE,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,gEAAgE;IAChE,oDAAoD;IACpD,OAAO,CAAC,kBAAkB,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAEjD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,EAAE,CAAC,OAAO,CAAC,4CAA4C,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAChF,CAAC;SAAM,CAAC;QACN,EAAE,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,mEAAmE;QACnE,gEAAgE;QAChE,IAAI,OAAO,CAAC,UAAU,CAAC,oCAAoC,CAAC;YAAE,SAAS;QACvE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;IAED,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACtB,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const runSystemToolCommand: import("commander").Command;
|