unity-mcp-cli 0.59.0 → 0.61.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 +13 -17
- package/dist/commands/login.d.ts +2 -0
- package/dist/commands/login.js +33 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/open.js +19 -0
- package/dist/commands/open.js.map +1 -1
- package/dist/commands/setup-skills.js +85 -31
- package/dist/commands/setup-skills.js.map +1 -1
- package/dist/commands/update.d.ts +2 -0
- package/dist/commands/update.js +77 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/index.js +15 -1
- package/dist/index.js.map +1 -1
- package/dist/utils/auth.d.ts +28 -0
- package/dist/utils/auth.js +111 -0
- package/dist/utils/auth.js.map +1 -0
- package/dist/utils/browser.d.ts +5 -0
- package/dist/utils/browser.js +32 -0
- package/dist/utils/browser.js.map +1 -0
- package/dist/utils/cloud-login.d.ts +7 -0
- package/dist/utils/cloud-login.js +56 -0
- package/dist/utils/cloud-login.js.map +1 -0
- package/dist/utils/config.d.ts +1 -0
- package/dist/utils/config.js +1 -0
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/manifest.js +3 -12
- package/dist/utils/manifest.js.map +1 -1
- package/dist/utils/semver.d.ts +4 -0
- package/dist/utils/semver.js +25 -0
- package/dist/utils/semver.js.map +1 -0
- package/dist/utils/update-check.d.ts +19 -0
- package/dist/utils/update-check.js +92 -0
- package/dist/utils/update-check.js.map +1 -0
- package/docs/README.es.md +22 -26
- package/docs/README.ja.md +22 -26
- package/docs/README.zh-CN.md +22 -26
- package/package.json +1 -1
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// Copyright (c) 2024 Ivan Murzak. All rights reserved.
|
|
2
|
+
// Licensed under the Apache License, Version 2.0.
|
|
3
|
+
import { execFile } from 'child_process';
|
|
4
|
+
import { verbose } from './ui.js';
|
|
5
|
+
/**
|
|
6
|
+
* Open a URL in the user's default browser.
|
|
7
|
+
* Silently ignores errors — the URL is always shown in the terminal as a fallback.
|
|
8
|
+
*/
|
|
9
|
+
export function openBrowser(url) {
|
|
10
|
+
const platform = process.platform;
|
|
11
|
+
let cmd;
|
|
12
|
+
let args;
|
|
13
|
+
if (platform === 'darwin') {
|
|
14
|
+
cmd = 'open';
|
|
15
|
+
args = [url];
|
|
16
|
+
}
|
|
17
|
+
else if (platform === 'win32') {
|
|
18
|
+
cmd = 'cmd';
|
|
19
|
+
args = ['/c', 'start', '', url];
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
cmd = 'xdg-open';
|
|
23
|
+
args = [url];
|
|
24
|
+
}
|
|
25
|
+
verbose(`Opening browser: ${cmd} ${args.join(' ')}`);
|
|
26
|
+
execFile(cmd, args, (err) => {
|
|
27
|
+
if (err) {
|
|
28
|
+
verbose(`Failed to open browser: ${err.message}`);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/utils/browser.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,kDAAkD;AAElD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,IAAI,GAAW,CAAC;IAChB,IAAI,IAAc,CAAC;IAEnB,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,GAAG,GAAG,MAAM,CAAC;QACb,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;SAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QAChC,GAAG,GAAG,KAAK,CAAC;QACZ,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,GAAG,GAAG,UAAU,CAAC;QACjB,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAED,OAAO,CAAC,oBAAoB,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACrD,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;QAC1B,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,CAAC,2BAA2B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Run the cloud device-auth flow: initiate, display code, open browser, poll,
|
|
3
|
+
* and persist the token to the project config.
|
|
4
|
+
*
|
|
5
|
+
* Returns the access token on success, or null on failure (errors are printed).
|
|
6
|
+
*/
|
|
7
|
+
export declare function runCloudLogin(projectPath: string): Promise<string | null>;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// Copyright (c) 2024 Ivan Murzak. All rights reserved.
|
|
2
|
+
// Licensed under the Apache License, Version 2.0.
|
|
3
|
+
import * as ui from './ui.js';
|
|
4
|
+
import { readConfig, writeConfig, CLOUD_SERVER_BASE_URL } from './config.js';
|
|
5
|
+
import { deviceAuthFlow } from './auth.js';
|
|
6
|
+
import { openBrowser } from './browser.js';
|
|
7
|
+
/**
|
|
8
|
+
* Run the cloud device-auth flow: initiate, display code, open browser, poll,
|
|
9
|
+
* and persist the token to the project config.
|
|
10
|
+
*
|
|
11
|
+
* Returns the access token on success, or null on failure (errors are printed).
|
|
12
|
+
*/
|
|
13
|
+
export async function runCloudLogin(projectPath) {
|
|
14
|
+
let spinner;
|
|
15
|
+
try {
|
|
16
|
+
const result = await deviceAuthFlow(CLOUD_SERVER_BASE_URL, 'Unity-MCP CLI', {
|
|
17
|
+
onUserCode: (userCode, verificationUrl) => {
|
|
18
|
+
ui.info('Open this URL to authorize:');
|
|
19
|
+
console.log();
|
|
20
|
+
console.log(` ${verificationUrl}`);
|
|
21
|
+
console.log();
|
|
22
|
+
ui.label('Code', userCode);
|
|
23
|
+
openBrowser(verificationUrl);
|
|
24
|
+
},
|
|
25
|
+
onPolling: () => {
|
|
26
|
+
spinner = ui.startSpinner('Waiting for authorization...');
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
if (result.success) {
|
|
30
|
+
spinner?.success('Authorized');
|
|
31
|
+
const config = readConfig(projectPath) ?? {};
|
|
32
|
+
const updatedConfig = {
|
|
33
|
+
...config,
|
|
34
|
+
cloudToken: result.accessToken,
|
|
35
|
+
connectionMode: 'Cloud',
|
|
36
|
+
};
|
|
37
|
+
writeConfig(projectPath, updatedConfig);
|
|
38
|
+
return result.accessToken;
|
|
39
|
+
}
|
|
40
|
+
spinner?.stop();
|
|
41
|
+
ui.error(result.message);
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
spinner?.stop();
|
|
46
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
47
|
+
if (message.includes('ECONNREFUSED') || message.includes('fetch failed')) {
|
|
48
|
+
ui.error(`Cannot reach cloud server at ${CLOUD_SERVER_BASE_URL}`);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
ui.error(`Authentication failed: ${message}`);
|
|
52
|
+
}
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=cloud-login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-login.js","sourceRoot":"","sources":["../../src/utils/cloud-login.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,kDAAkD;AAElD,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,WAAmB;IACrD,IAAI,OAAuD,CAAC;IAE5D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,cAAc,CACjC,qBAAqB,EACrB,eAAe,EACf;YACE,UAAU,EAAE,CAAC,QAAQ,EAAE,eAAe,EAAE,EAAE;gBACxC,EAAE,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;gBACvC,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,KAAK,eAAe,EAAE,CAAC,CAAC;gBACpC,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBAC3B,WAAW,CAAC,eAAe,CAAC,CAAC;YAC/B,CAAC;YACD,SAAS,EAAE,GAAG,EAAE;gBACd,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,8BAA8B,CAAC,CAAC;YAC5D,CAAC;SACF,CACF,CAAC;QAEF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;YAE/B,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAC7C,MAAM,aAAa,GAAG;gBACpB,GAAG,MAAM;gBACT,UAAU,EAAE,MAAM,CAAC,WAAW;gBAC9B,cAAc,EAAE,OAAgB;aACjC,CAAC;YACF,WAAW,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;YAExC,OAAO,MAAM,CAAC,WAAW,CAAC;QAC5B,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,CAAC;QAChB,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,IAAI,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACzE,EAAE,CAAC,KAAK,CAAC,gCAAgC,qBAAqB,EAAE,CAAC,CAAC;QACpE,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,KAAK,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
package/dist/utils/config.d.ts
CHANGED
|
@@ -54,6 +54,7 @@ export declare function updateFeatures(config: UnityConnectionConfig, featureTyp
|
|
|
54
54
|
* of the ConnectionMode enum.
|
|
55
55
|
*/
|
|
56
56
|
export declare function isCloudMode(config: UnityConnectionConfig): boolean;
|
|
57
|
+
export declare const CLOUD_SERVER_BASE_URL = "https://ai-game.dev";
|
|
57
58
|
export declare const CLOUD_SERVER_URL = "https://ai-game.dev/mcp";
|
|
58
59
|
/**
|
|
59
60
|
* Resolve the server URL and auth token from a project config based on connectionMode.
|
package/dist/utils/config.js
CHANGED
|
@@ -123,6 +123,7 @@ export function isCloudMode(config) {
|
|
|
123
123
|
const mode = config.connectionMode;
|
|
124
124
|
return mode === 'Cloud' || mode === 1;
|
|
125
125
|
}
|
|
126
|
+
export const CLOUD_SERVER_BASE_URL = 'https://ai-game.dev';
|
|
126
127
|
export const CLOUD_SERVER_URL = 'https://ai-game.dev/mcp';
|
|
127
128
|
/**
|
|
128
129
|
* Resolve the server URL and auth token from a project config based on connectionMode.
|
package/dist/utils/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/manifest.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
2
|
import * as path from 'path';
|
|
3
|
+
import { isNewerVersion, isValidVersion } from './semver.js';
|
|
3
4
|
import * as ui from './ui.js';
|
|
4
5
|
const PACKAGE_ID = 'com.ivanmurzak.unity.mcp';
|
|
5
6
|
const REGISTRY_NAME = 'package.openupm.com';
|
|
@@ -61,18 +62,8 @@ export function shouldUpdateVersion(currentVersion, newVersion) {
|
|
|
61
62
|
if (nonSemverPrefixes.some((prefix) => currentVersion.startsWith(prefix))) {
|
|
62
63
|
return false;
|
|
63
64
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
const currentParts = currentVersion.split('.').map(Number);
|
|
67
|
-
const targetParts = newVersion.split('.').map(Number);
|
|
68
|
-
const len = Math.max(currentParts.length, targetParts.length);
|
|
69
|
-
for (let i = 0; i < len; i++) {
|
|
70
|
-
const c = currentParts[i] ?? 0;
|
|
71
|
-
const t = targetParts[i] ?? 0;
|
|
72
|
-
if (t !== c)
|
|
73
|
-
return t > c;
|
|
74
|
-
}
|
|
75
|
-
return false;
|
|
65
|
+
if (isValidVersion(currentVersion) && isValidVersion(newVersion)) {
|
|
66
|
+
return isNewerVersion(currentVersion, newVersion);
|
|
76
67
|
}
|
|
77
68
|
return newVersion.toLowerCase() > currentVersion.toLowerCase();
|
|
78
69
|
}
|
|
@@ -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,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,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;IAClB,0BAA0B;IAC1B,qBAAqB;IACrB,kBAAkB;IAClB,cAAc;CACf,CAAC;AAcF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,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,UAAU,EAAE,EAAE;YACnE,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;SACxC,CAAC,CAAC;QAEH,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;YACX,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA0C,CAAC;YACzE,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;YAC3C,IAAI,MAAM,EAAE,CAAC;gBACX,EAAE,CAAC,IAAI,CAAC,yCAAyC,MAAM,EAAE,CAAC,CAAC;gBAC3D,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAED,MAAM,IAAI,KAAK,CACb,2BAA2B,GAAG,CAAC,MAAM,IAAI;YACzC,wGAAwG,CACzG,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACrE,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,MAAM,IAAI,KAAK,CACb,wDAAwD;YACxD,wGAAwG,CACzG,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,cAAsB,EAAE,UAAkB;IAC5E,IAAI,CAAC,cAAc;QAAE,OAAO,IAAI,CAAC;IACjC,IAAI,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IAE9B,uEAAuE;IACvE,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC/D,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QAC1E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,
|
|
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,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,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;IAClB,0BAA0B;IAC1B,qBAAqB;IACrB,kBAAkB;IAClB,cAAc;CACf,CAAC;AAcF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,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,UAAU,EAAE,EAAE;YACnE,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;SACxC,CAAC,CAAC;QAEH,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;YACX,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA0C,CAAC;YACzE,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;YAC3C,IAAI,MAAM,EAAE,CAAC;gBACX,EAAE,CAAC,IAAI,CAAC,yCAAyC,MAAM,EAAE,CAAC,CAAC;gBAC3D,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAED,MAAM,IAAI,KAAK,CACb,2BAA2B,GAAG,CAAC,MAAM,IAAI;YACzC,wGAAwG,CACzG,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACrE,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,MAAM,IAAI,KAAK,CACb,wDAAwD;YACxD,wGAAwG,CACzG,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,cAAsB,EAAE,UAAkB;IAC5E,IAAI,CAAC,cAAc;QAAE,OAAO,IAAI,CAAC;IACjC,IAAI,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IAE9B,uEAAuE;IACvE,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC/D,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QAC1E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,cAAc,CAAC,cAAc,CAAC,IAAI,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;QACjE,OAAO,cAAc,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,UAAU,CAAC,WAAW,EAAE,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC;AACjE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAAmB,EAAE,OAAe,EAAE,KAAK,GAAG,KAAK;IACrF,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;IAEzE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,+BAA+B,YAAY,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAa,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,2CAA2C;IAC3C,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QAC/B,QAAQ,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC/B,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,0CAA0C;IAC1C,IAAI,eAAe,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAClD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAChC,CAAC;IAEF,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,eAAe,GAAG;YAChB,IAAI,EAAE,aAAa;YACnB,GAAG,EAAE,YAAY;YACjB,MAAM,EAAE,EAAE;SACX,CAAC;QACF,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAChD,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,yBAAyB;IACzB,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;QAC5B,eAAe,CAAC,MAAM,GAAG,EAAE,CAAC;QAC5B,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;QACpC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5C,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;IACH,CAAC;IAED,6DAA6D;IAC7D,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC3B,QAAQ,CAAC,YAAY,GAAG,EAAE,CAAC;QAC3B,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,MAAM,cAAc,GAAG,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IACzD,IAAI,CAAC,cAAc,IAAI,KAAK,IAAI,mBAAmB,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,CAAC;QAC7E,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC;QAC5C,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;SAAM,CAAC;QACN,EAAE,CAAC,IAAI,CACL,6BAA6B,cAAc,QAAQ,OAAO,+EAA+E,CAC1I,CAAC;IACJ,CAAC;IAED,iBAAiB;IACjB,IAAI,QAAQ,EAAE,CAAC;QACb,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACzE,EAAE,CAAC,OAAO,CAAC,WAAW,YAAY,EAAE,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,EAAE,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,WAAmB;IAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;IAEzE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,+BAA+B,YAAY,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAa,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE/C,IAAI,CAAC,QAAQ,CAAC,YAAY,IAAI,CAAC,CAAC,UAAU,IAAI,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACrE,EAAE,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;QACjE,OAAO;IACT,CAAC;IAED,OAAO,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IACzC,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACzE,EAAE,CAAC,OAAO,CAAC,WAAW,UAAU,SAAS,YAAY,EAAE,CAAC,CAAC;AAC3D,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** Returns true if the string is a valid numeric semver (e.g. "1.2.3"). */
|
|
2
|
+
export declare function isValidVersion(version: string): boolean;
|
|
3
|
+
/** Returns true if `latest` is strictly greater than `current`. */
|
|
4
|
+
export declare function isNewerVersion(current: string, latest: string): boolean;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
const SEMVER_NUMERIC = /^\d+(\.\d+)*$/;
|
|
2
|
+
/** Returns true if the string is a valid numeric semver (e.g. "1.2.3"). */
|
|
3
|
+
export function isValidVersion(version) {
|
|
4
|
+
return SEMVER_NUMERIC.test(version);
|
|
5
|
+
}
|
|
6
|
+
/** Returns -1 if a < b, 0 if equal, 1 if a > b. */
|
|
7
|
+
function compareVersions(a, b) {
|
|
8
|
+
const pa = a.split('.').map(Number);
|
|
9
|
+
const pb = b.split('.').map(Number);
|
|
10
|
+
const len = Math.max(pa.length, pb.length);
|
|
11
|
+
for (let i = 0; i < len; i++) {
|
|
12
|
+
const na = pa[i] ?? 0;
|
|
13
|
+
const nb = pb[i] ?? 0;
|
|
14
|
+
if (na < nb)
|
|
15
|
+
return -1;
|
|
16
|
+
if (na > nb)
|
|
17
|
+
return 1;
|
|
18
|
+
}
|
|
19
|
+
return 0;
|
|
20
|
+
}
|
|
21
|
+
/** Returns true if `latest` is strictly greater than `current`. */
|
|
22
|
+
export function isNewerVersion(current, latest) {
|
|
23
|
+
return compareVersions(current, latest) < 0;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=semver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semver.js","sourceRoot":"","sources":["../../src/utils/semver.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG,eAAe,CAAC;AAEvC,2EAA2E;AAC3E,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,mDAAmD;AACnD,SAAS,eAAe,CAAC,CAAS,EAAE,CAAS;IAC3C,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IAE3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,EAAE,GAAG,EAAE;YAAE,OAAO,CAAC,CAAC,CAAC;QACvB,IAAI,EAAE,GAAG,EAAE;YAAE,OAAO,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,MAAc;IAC5D,OAAO,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
interface UpdateInfo {
|
|
2
|
+
current: string;
|
|
3
|
+
latest: string;
|
|
4
|
+
}
|
|
5
|
+
/** Fetch the latest version string from the npm registry. */
|
|
6
|
+
export declare function fetchLatestVersion(): Promise<string>;
|
|
7
|
+
/**
|
|
8
|
+
* Check if a newer version is available on npm.
|
|
9
|
+
* Returns update info if available, null otherwise.
|
|
10
|
+
* Never throws — all errors are silently caught.
|
|
11
|
+
*/
|
|
12
|
+
export declare function checkForUpdate(currentVersion: string): Promise<UpdateInfo | null>;
|
|
13
|
+
/** Format the "update available" message with chalk styling. */
|
|
14
|
+
export declare function formatUpdateAvailable(current: string, latest: string): string;
|
|
15
|
+
/** Print a styled update notification to stderr (does not interfere with stdout piping). */
|
|
16
|
+
export declare function printUpdateNotification(current: string, latest: string): void;
|
|
17
|
+
/** Returns true if the CLI was likely invoked via npx. */
|
|
18
|
+
export declare function isRunningViaNpx(): boolean;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { homedir } from 'os';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { readFileSync, writeFileSync } from 'fs';
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
import { isNewerVersion, isValidVersion } from './semver.js';
|
|
6
|
+
const PACKAGE_NAME = 'unity-mcp-cli';
|
|
7
|
+
const NPM_REGISTRY_URL = `https://registry.npmjs.org/${PACKAGE_NAME}/latest`;
|
|
8
|
+
const CACHE_FILE = join(homedir(), '.unity-mcp-cli-update.json');
|
|
9
|
+
const CACHE_TTL_MS = 24 * 60 * 60 * 1000; // 24 hours
|
|
10
|
+
const FETCH_TIMEOUT_MS = 3000;
|
|
11
|
+
/** Fetch the latest version string from the npm registry. */
|
|
12
|
+
export async function fetchLatestVersion() {
|
|
13
|
+
const response = await fetch(NPM_REGISTRY_URL, {
|
|
14
|
+
signal: AbortSignal.timeout(FETCH_TIMEOUT_MS),
|
|
15
|
+
headers: { 'Accept': 'application/json' },
|
|
16
|
+
});
|
|
17
|
+
if (!response.ok) {
|
|
18
|
+
throw new Error(`npm registry returned ${response.status}`);
|
|
19
|
+
}
|
|
20
|
+
const data = (await response.json());
|
|
21
|
+
if (!data.version) {
|
|
22
|
+
throw new Error('No version field in registry response');
|
|
23
|
+
}
|
|
24
|
+
return data.version;
|
|
25
|
+
}
|
|
26
|
+
function readCache() {
|
|
27
|
+
try {
|
|
28
|
+
const raw = readFileSync(CACHE_FILE, 'utf-8');
|
|
29
|
+
const parsed = JSON.parse(raw);
|
|
30
|
+
if (parsed.latestVersion && typeof parsed.lastChecked === 'number' && isValidVersion(parsed.latestVersion)) {
|
|
31
|
+
return parsed;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
// Cache missing or corrupt — ignore
|
|
36
|
+
}
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
function writeCache(latestVersion) {
|
|
40
|
+
try {
|
|
41
|
+
const data = { latestVersion, lastChecked: Date.now() };
|
|
42
|
+
writeFileSync(CACHE_FILE, JSON.stringify(data), 'utf-8');
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// Non-critical — ignore write failures
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Check if a newer version is available on npm.
|
|
50
|
+
* Returns update info if available, null otherwise.
|
|
51
|
+
* Never throws — all errors are silently caught.
|
|
52
|
+
*/
|
|
53
|
+
export async function checkForUpdate(currentVersion) {
|
|
54
|
+
try {
|
|
55
|
+
// Check cache first
|
|
56
|
+
const cache = readCache();
|
|
57
|
+
if (cache && Date.now() - cache.lastChecked < CACHE_TTL_MS) {
|
|
58
|
+
if (isNewerVersion(currentVersion, cache.latestVersion)) {
|
|
59
|
+
return { current: currentVersion, latest: cache.latestVersion };
|
|
60
|
+
}
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
// Fetch fresh
|
|
64
|
+
const latest = await fetchLatestVersion();
|
|
65
|
+
writeCache(latest);
|
|
66
|
+
if (isNewerVersion(currentVersion, latest)) {
|
|
67
|
+
return { current: currentVersion, latest };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
// Best-effort — never disrupt CLI usage
|
|
72
|
+
}
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
/** Format the "update available" message with chalk styling. */
|
|
76
|
+
export function formatUpdateAvailable(current, latest) {
|
|
77
|
+
return `Update available: ${chalk.dim(current)} → ${chalk.green(latest)}`;
|
|
78
|
+
}
|
|
79
|
+
/** Print a styled update notification to stderr (does not interfere with stdout piping). */
|
|
80
|
+
export function printUpdateNotification(current, latest) {
|
|
81
|
+
console.error();
|
|
82
|
+
console.error(chalk.yellow(` ${formatUpdateAvailable(current, latest)}`));
|
|
83
|
+
console.error(chalk.dim(` Run ${chalk.cyan(`npm i -g ${PACKAGE_NAME}`)} to update`));
|
|
84
|
+
console.error();
|
|
85
|
+
}
|
|
86
|
+
/** Returns true if the CLI was likely invoked via npx. */
|
|
87
|
+
export function isRunningViaNpx() {
|
|
88
|
+
const execPath = process.env['npm_execpath'] ?? '';
|
|
89
|
+
const npmCommand = process.env['npm_command'] ?? '';
|
|
90
|
+
return execPath.includes('npx') || npmCommand === 'exec';
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=update-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-check.js","sourceRoot":"","sources":["../../src/utils/update-check.ts"],"names":[],"mappings":"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"}
|
package/docs/README.es.md
CHANGED
|
@@ -66,14 +66,14 @@ unity-mcp-cli create-project ./MyUnityProject # │ codex
|
|
|
66
66
|
# 2. Install "AI Game Developer" in Unity project # │ gemini │
|
|
67
67
|
unity-mcp-cli install-plugin ./MyUnityProject # │ github-copilot-cli │
|
|
68
68
|
# │ kilo-code │
|
|
69
|
-
# 3.
|
|
70
|
-
unity-mcp-cli
|
|
69
|
+
# 3. Login to cloud server # │ open-code │
|
|
70
|
+
unity-mcp-cli login ./MyUnityProject # │ rider-junie │
|
|
71
71
|
# │ unity-ai │
|
|
72
|
-
#
|
|
73
|
-
unity-mcp-cli
|
|
72
|
+
# 4. Open Unity project (auto-connects and generates skills) │ vs-copilot │
|
|
73
|
+
unity-mcp-cli open ./MyUnityProject # │ vscode-copilot │
|
|
74
74
|
# └────────────────────┘
|
|
75
|
-
#
|
|
76
|
-
unity-mcp-cli
|
|
75
|
+
# 5. Wait for Unity Editor to be ready
|
|
76
|
+
unity-mcp-cli wait-for-ready ./MyUnityProject
|
|
77
77
|
```
|
|
78
78
|
|
|
79
79
|
O ejecuta cualquier comando al instante con `npx` — sin necesidad de instalacion global:
|
|
@@ -88,8 +88,9 @@ npx unity-mcp-cli install-plugin /path/to/unity/project
|
|
|
88
88
|
|
|
89
89
|
# Contenidos
|
|
90
90
|
|
|
91
|
-
- [Inicio rapido](#
|
|
92
|
-
- [
|
|
91
|
+
- [Inicio rapido](#inicio-rapido)
|
|
92
|
+
- [Contenidos](#contenidos)
|
|
93
|
+
- [Comandos](#comandos)
|
|
93
94
|
- [`configure`](#configure)
|
|
94
95
|
- [`create-project`](#create-project)
|
|
95
96
|
- [`install-plugin`](#install-plugin)
|
|
@@ -101,13 +102,13 @@ npx unity-mcp-cli install-plugin /path/to/unity/project
|
|
|
101
102
|
- [`setup-skills`](#setup-skills)
|
|
102
103
|
- [`remove-plugin`](#remove-plugin)
|
|
103
104
|
- [`status`](#status)
|
|
104
|
-
- [Opciones globales](#
|
|
105
|
-
- [Ejemplo de automatizacion completa](#
|
|
106
|
-
- [Como funciona](#
|
|
107
|
-
- [Puerto determinista](#
|
|
108
|
-
- [Instalacion del plugin](#plugin
|
|
109
|
-
- [Archivo de configuracion](#
|
|
110
|
-
- [Integracion con Unity Hub](#unity-hub
|
|
105
|
+
- [Opciones globales](#opciones-globales)
|
|
106
|
+
- [Ejemplo de automatizacion completa](#ejemplo-de-automatizacion-completa)
|
|
107
|
+
- [Como funciona](#como-funciona)
|
|
108
|
+
- [Puerto determinista](#puerto-determinista)
|
|
109
|
+
- [Instalacion del plugin](#instalacion-del-plugin)
|
|
110
|
+
- [Archivo de configuracion](#archivo-de-configuracion)
|
|
111
|
+
- [Integracion con Unity Hub](#integracion-con-unity-hub)
|
|
111
112
|
|
|
112
113
|

|
|
113
114
|
|
|
@@ -488,21 +489,16 @@ unity-mcp-cli install-plugin ./MyAIGame
|
|
|
488
489
|
# 3. Enable all MCP tools
|
|
489
490
|
unity-mcp-cli configure ./MyAIGame --enable-all-tools
|
|
490
491
|
|
|
491
|
-
# 4.
|
|
492
|
-
unity-mcp-cli
|
|
492
|
+
# 4. Login to cloud server (authenticates and saves token)
|
|
493
|
+
unity-mcp-cli login ./MyAIGame
|
|
493
494
|
|
|
494
|
-
# 5.
|
|
495
|
-
unity-mcp-cli
|
|
495
|
+
# 5. Open the project (auto-connects and generates skills for claude-code)
|
|
496
|
+
unity-mcp-cli open ./MyAIGame
|
|
496
497
|
|
|
497
|
-
# 6.
|
|
498
|
-
unity-mcp-cli open ./MyAIGame \
|
|
499
|
-
--url http://localhost:8080 \
|
|
500
|
-
--keep-connected
|
|
501
|
-
|
|
502
|
-
# 7. Wait for Unity Editor and MCP server to be ready
|
|
498
|
+
# 6. Wait for Unity Editor and MCP server to be ready
|
|
503
499
|
unity-mcp-cli wait-for-ready ./MyAIGame
|
|
504
500
|
|
|
505
|
-
#
|
|
501
|
+
# 7. Run tests to verify everything works
|
|
506
502
|
unity-mcp-cli run-tool tests-run ./MyAIGame --input '{"testMode":"EditMode"}'
|
|
507
503
|
```
|
|
508
504
|
|
package/docs/README.ja.md
CHANGED
|
@@ -66,14 +66,14 @@ unity-mcp-cli create-project ./MyUnityProject # │ codex
|
|
|
66
66
|
# 2. Install "AI Game Developer" in Unity project # │ gemini │
|
|
67
67
|
unity-mcp-cli install-plugin ./MyUnityProject # │ github-copilot-cli │
|
|
68
68
|
# │ kilo-code │
|
|
69
|
-
# 3.
|
|
70
|
-
unity-mcp-cli
|
|
69
|
+
# 3. Login to cloud server # │ open-code │
|
|
70
|
+
unity-mcp-cli login ./MyUnityProject # │ rider-junie │
|
|
71
71
|
# │ unity-ai │
|
|
72
|
-
#
|
|
73
|
-
unity-mcp-cli
|
|
72
|
+
# 4. Open Unity project (auto-connects and generates skills) │ vs-copilot │
|
|
73
|
+
unity-mcp-cli open ./MyUnityProject # │ vscode-copilot │
|
|
74
74
|
# └────────────────────┘
|
|
75
|
-
#
|
|
76
|
-
unity-mcp-cli
|
|
75
|
+
# 5. Wait for Unity Editor to be ready
|
|
76
|
+
unity-mcp-cli wait-for-ready ./MyUnityProject
|
|
77
77
|
```
|
|
78
78
|
|
|
79
79
|
または`npx`で任意のコマンドを即座に実行できます — グローバルインストールは不要です:
|
|
@@ -88,8 +88,9 @@ npx unity-mcp-cli install-plugin /path/to/unity/project
|
|
|
88
88
|
|
|
89
89
|
# 目次
|
|
90
90
|
|
|
91
|
-
- [クイックスタート](
|
|
92
|
-
- [
|
|
91
|
+
- [クイックスタート](#クイックスタート)
|
|
92
|
+
- [目次](#目次)
|
|
93
|
+
- [コマンド](#コマンド)
|
|
93
94
|
- [`configure`](#configure)
|
|
94
95
|
- [`create-project`](#create-project)
|
|
95
96
|
- [`install-plugin`](#install-plugin)
|
|
@@ -101,13 +102,13 @@ npx unity-mcp-cli install-plugin /path/to/unity/project
|
|
|
101
102
|
- [`setup-skills`](#setup-skills)
|
|
102
103
|
- [`remove-plugin`](#remove-plugin)
|
|
103
104
|
- [`status`](#status)
|
|
104
|
-
- [グローバルオプション](
|
|
105
|
-
- [完全自動化の例](
|
|
106
|
-
- [仕組み](
|
|
107
|
-
- [決定論的ポート](
|
|
108
|
-
- [プラグインのインストール](
|
|
109
|
-
- [設定ファイル](
|
|
110
|
-
- [Unity Hub連携](#unity-hub
|
|
105
|
+
- [グローバルオプション](#グローバルオプション)
|
|
106
|
+
- [完全自動化の例](#完全自動化の例)
|
|
107
|
+
- [仕組み](#仕組み)
|
|
108
|
+
- [決定論的ポート](#決定論的ポート)
|
|
109
|
+
- [プラグインのインストール](#プラグインのインストール)
|
|
110
|
+
- [設定ファイル](#設定ファイル)
|
|
111
|
+
- [Unity Hub連携](#unity-hub連携)
|
|
111
112
|
|
|
112
113
|

|
|
113
114
|
|
|
@@ -488,21 +489,16 @@ unity-mcp-cli install-plugin ./MyAIGame
|
|
|
488
489
|
# 3. Enable all MCP tools
|
|
489
490
|
unity-mcp-cli configure ./MyAIGame --enable-all-tools
|
|
490
491
|
|
|
491
|
-
# 4.
|
|
492
|
-
unity-mcp-cli
|
|
492
|
+
# 4. Login to cloud server (authenticates and saves token)
|
|
493
|
+
unity-mcp-cli login ./MyAIGame
|
|
493
494
|
|
|
494
|
-
# 5.
|
|
495
|
-
unity-mcp-cli
|
|
495
|
+
# 5. Open the project (auto-connects and generates skills for claude-code)
|
|
496
|
+
unity-mcp-cli open ./MyAIGame
|
|
496
497
|
|
|
497
|
-
# 6.
|
|
498
|
-
unity-mcp-cli open ./MyAIGame \
|
|
499
|
-
--url http://localhost:8080 \
|
|
500
|
-
--keep-connected
|
|
501
|
-
|
|
502
|
-
# 7. Wait for Unity Editor and MCP server to be ready
|
|
498
|
+
# 6. Wait for Unity Editor and MCP server to be ready
|
|
503
499
|
unity-mcp-cli wait-for-ready ./MyAIGame
|
|
504
500
|
|
|
505
|
-
#
|
|
501
|
+
# 7. Run tests to verify everything works
|
|
506
502
|
unity-mcp-cli run-tool tests-run ./MyAIGame --input '{"testMode":"EditMode"}'
|
|
507
503
|
```
|
|
508
504
|
|
package/docs/README.zh-CN.md
CHANGED
|
@@ -66,14 +66,14 @@ unity-mcp-cli create-project ./MyUnityProject # │ codex
|
|
|
66
66
|
# 2. Install "AI Game Developer" in Unity project # │ gemini │
|
|
67
67
|
unity-mcp-cli install-plugin ./MyUnityProject # │ github-copilot-cli │
|
|
68
68
|
# │ kilo-code │
|
|
69
|
-
# 3.
|
|
70
|
-
unity-mcp-cli
|
|
69
|
+
# 3. Login to cloud server # │ open-code │
|
|
70
|
+
unity-mcp-cli login ./MyUnityProject # │ rider-junie │
|
|
71
71
|
# │ unity-ai │
|
|
72
|
-
#
|
|
73
|
-
unity-mcp-cli
|
|
72
|
+
# 4. Open Unity project (auto-connects and generates skills) │ vs-copilot │
|
|
73
|
+
unity-mcp-cli open ./MyUnityProject # │ vscode-copilot │
|
|
74
74
|
# └────────────────────┘
|
|
75
|
-
#
|
|
76
|
-
unity-mcp-cli
|
|
75
|
+
# 5. Wait for Unity Editor to be ready
|
|
76
|
+
unity-mcp-cli wait-for-ready ./MyUnityProject
|
|
77
77
|
```
|
|
78
78
|
|
|
79
79
|
或使用 `npx` 即时运行任何命令 — 无需全局安装:
|
|
@@ -88,8 +88,9 @@ npx unity-mcp-cli install-plugin /path/to/unity/project
|
|
|
88
88
|
|
|
89
89
|
# 目录
|
|
90
90
|
|
|
91
|
-
- [快速开始](
|
|
92
|
-
- [
|
|
91
|
+
- [快速开始](#快速开始)
|
|
92
|
+
- [目录](#目录)
|
|
93
|
+
- [命令](#命令)
|
|
93
94
|
- [`configure`](#configure)
|
|
94
95
|
- [`create-project`](#create-project)
|
|
95
96
|
- [`install-plugin`](#install-plugin)
|
|
@@ -101,13 +102,13 @@ npx unity-mcp-cli install-plugin /path/to/unity/project
|
|
|
101
102
|
- [`setup-skills`](#setup-skills)
|
|
102
103
|
- [`remove-plugin`](#remove-plugin)
|
|
103
104
|
- [`status`](#status)
|
|
104
|
-
- [全局选项](
|
|
105
|
-
- [完整自动化示例](
|
|
106
|
-
- [工作原理](
|
|
107
|
-
- [确定性端口](
|
|
108
|
-
- [插件安装](
|
|
109
|
-
- [配置文件](
|
|
110
|
-
- [Unity Hub 集成](#unity-hub
|
|
105
|
+
- [全局选项](#全局选项)
|
|
106
|
+
- [完整自动化示例](#完整自动化示例)
|
|
107
|
+
- [工作原理](#工作原理)
|
|
108
|
+
- [确定性端口](#确定性端口)
|
|
109
|
+
- [插件安装](#插件安装)
|
|
110
|
+
- [配置文件](#配置文件)
|
|
111
|
+
- [Unity Hub 集成](#unity-hub-集成)
|
|
111
112
|
|
|
112
113
|

|
|
113
114
|
|
|
@@ -488,21 +489,16 @@ unity-mcp-cli install-plugin ./MyAIGame
|
|
|
488
489
|
# 3. Enable all MCP tools
|
|
489
490
|
unity-mcp-cli configure ./MyAIGame --enable-all-tools
|
|
490
491
|
|
|
491
|
-
# 4.
|
|
492
|
-
unity-mcp-cli
|
|
492
|
+
# 4. Login to cloud server (authenticates and saves token)
|
|
493
|
+
unity-mcp-cli login ./MyAIGame
|
|
493
494
|
|
|
494
|
-
# 5.
|
|
495
|
-
unity-mcp-cli
|
|
495
|
+
# 5. Open the project (auto-connects and generates skills for claude-code)
|
|
496
|
+
unity-mcp-cli open ./MyAIGame
|
|
496
497
|
|
|
497
|
-
# 6.
|
|
498
|
-
unity-mcp-cli open ./MyAIGame \
|
|
499
|
-
--url http://localhost:8080 \
|
|
500
|
-
--keep-connected
|
|
501
|
-
|
|
502
|
-
# 7. Wait for Unity Editor and MCP server to be ready
|
|
498
|
+
# 6. Wait for Unity Editor and MCP server to be ready
|
|
503
499
|
unity-mcp-cli wait-for-ready ./MyAIGame
|
|
504
500
|
|
|
505
|
-
#
|
|
501
|
+
# 7. Run tests to verify everything works
|
|
506
502
|
unity-mcp-cli run-tool tests-run ./MyAIGame --input '{"testMode":"EditMode"}'
|
|
507
503
|
```
|
|
508
504
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "unity-mcp-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.61.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/index.js",
|