@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.
Files changed (204) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +7 -8
  3. package/bin/server.mjs +1 -1
  4. package/bin/stub-plugin.mjs +3 -3
  5. package/dist/codegen/coerce.js +1 -1
  6. package/dist/codegen/coerce.js.map +1 -1
  7. package/dist/codegen/emit.js +2 -2
  8. package/dist/codegen/emit.js.map +1 -1
  9. package/dist/codegen/refs.js +1 -1
  10. package/dist/codegen/refs.js.map +1 -1
  11. package/dist/codegen/types.js +1 -1
  12. package/dist/codegen/types.js.map +1 -1
  13. package/dist/commands/call.js +1 -1
  14. package/dist/commands/call.js.map +1 -1
  15. package/dist/commands/devops/configure.js +1 -1
  16. package/dist/commands/devops/configure.js.map +1 -1
  17. package/dist/commands/devops/index.js +0 -4
  18. package/dist/commands/devops/index.js.map +1 -1
  19. package/dist/commands/devops/install-plugin.js +1 -1
  20. package/dist/commands/devops/install-plugin.js.map +1 -1
  21. package/dist/commands/devops/open.js +7 -7
  22. package/dist/commands/devops/open.js.map +1 -1
  23. package/dist/commands/devops/status.js +3 -3
  24. package/dist/commands/devops/status.js.map +1 -1
  25. package/dist/commands/exec.js +1 -1
  26. package/dist/commands/exec.js.map +1 -1
  27. package/dist/commands/install.js +2 -2
  28. package/dist/commands/install.js.map +1 -1
  29. package/dist/commands/prompt.js +2 -2
  30. package/dist/commands/prompt.js.map +1 -1
  31. package/dist/commands/resource.js +2 -2
  32. package/dist/commands/resource.js.map +1 -1
  33. package/dist/commands/update.js +1 -26
  34. package/dist/commands/update.js.map +1 -1
  35. package/dist/config/port.js +2 -2
  36. package/dist/config/port.js.map +1 -1
  37. package/dist/config/resolve.d.ts +1 -2
  38. package/dist/config/resolve.js +0 -12
  39. package/dist/config/resolve.js.map +1 -1
  40. package/dist/devops/lib/configure.d.ts +1 -1
  41. package/dist/devops/lib/configure.js +2 -2
  42. package/dist/devops/lib/configure.js.map +1 -1
  43. package/dist/devops/lib/install-plugin.d.ts +1 -1
  44. package/dist/devops/lib/install-plugin.js +1 -1
  45. package/dist/devops/lib/install-plugin.js.map +1 -1
  46. package/dist/devops/lib/install.d.ts +2 -2
  47. package/dist/devops/lib/install.js +5 -5
  48. package/dist/devops/lib/install.js.map +1 -1
  49. package/dist/devops/lib/open.js +11 -32
  50. package/dist/devops/lib/open.js.map +1 -1
  51. package/dist/devops/lib/remove-plugin.d.ts +1 -1
  52. package/dist/devops/lib/remove-plugin.js +3 -3
  53. package/dist/devops/lib/remove-plugin.js.map +1 -1
  54. package/dist/devops/lib/run-tool.d.ts +2 -2
  55. package/dist/devops/lib/run-tool.js +2 -2
  56. package/dist/devops/lib/types.d.ts +17 -54
  57. package/dist/devops/lib/types.js +2 -2
  58. package/dist/devops/lib/types.js.map +1 -1
  59. package/dist/devops/lib/update.d.ts +0 -15
  60. package/dist/devops/lib/update.js +2 -91
  61. package/dist/devops/lib/update.js.map +1 -1
  62. package/dist/devops/utils/agents.d.ts +0 -28
  63. package/dist/devops/utils/agents.js +0 -462
  64. package/dist/devops/utils/agents.js.map +1 -1
  65. package/dist/devops/utils/config.d.ts +9 -18
  66. package/dist/devops/utils/config.js +7 -20
  67. package/dist/devops/utils/config.js.map +1 -1
  68. package/dist/devops/utils/editor-cache.js +1 -1
  69. package/dist/devops/utils/editor-cache.js.map +1 -1
  70. package/dist/devops/utils/launch-error-dismiss.d.ts +2 -2
  71. package/dist/devops/utils/launch-error-dismiss.js +5 -5
  72. package/dist/devops/utils/manifest.d.ts +2 -2
  73. package/dist/devops/utils/manifest.js +3 -3
  74. package/dist/devops/utils/manifest.js.map +1 -1
  75. package/dist/devops/utils/port.d.ts +1 -1
  76. package/dist/devops/utils/port.js +1 -1
  77. package/dist/devops/utils/probe.d.ts +1 -1
  78. package/dist/devops/utils/probe.js +1 -1
  79. package/dist/devops/utils/ui.js +2 -2
  80. package/dist/devops/utils/ui.js.map +1 -1
  81. package/dist/devops/utils/unity-editor.js +4 -4
  82. package/dist/devops/utils/unity-editor.js.map +1 -1
  83. package/dist/devops/utils/unity-hub.js +1 -1
  84. package/dist/devops/utils/unity-hub.js.map +1 -1
  85. package/dist/devops/utils/unity-shutdown.d.ts +1 -1
  86. package/dist/devops/utils/unity-shutdown.js +1 -1
  87. package/dist/devops/utils/update-check.js +3 -3
  88. package/dist/devops/utils/update-check.js.map +1 -1
  89. package/dist/devops/utils/vendor.d.ts +2 -2
  90. package/dist/devops/utils/vendor.js +4 -4
  91. package/dist/devops/utils/vendor.js.map +1 -1
  92. package/dist/generated/tools.js +1 -1
  93. package/dist/generated/tools.js.map +1 -1
  94. package/dist/program.js +3 -3
  95. package/dist/program.js.map +1 -1
  96. package/dist/server/app.d.ts +5 -5
  97. package/dist/server/app.js +3 -3
  98. package/dist/server/app.js.map +1 -1
  99. package/dist/server/index.d.ts +2 -2
  100. package/dist/server/index.js +2 -2
  101. package/dist/server/index.js.map +1 -1
  102. package/dist/server/rest/auth.d.ts +1 -1
  103. package/dist/server/rest/auth.js +3 -3
  104. package/dist/server/rest/auth.js.map +1 -1
  105. package/dist/server/rest/context.d.ts +2 -2
  106. package/dist/server/rest/forward.d.ts +2 -2
  107. package/dist/server/session/store.d.ts +3 -3
  108. package/dist/server/session/store.js +4 -4
  109. package/dist/server/session/store.js.map +1 -1
  110. package/dist/server/stub-client/scenarios.js +8 -8
  111. package/dist/server/stub-client/scenarios.js.map +1 -1
  112. package/dist/server/types.d.ts +11 -11
  113. package/dist/server/types.js +9 -9
  114. package/dist/server/types.js.map +1 -1
  115. package/dist/server/ws/hub.d.ts +8 -8
  116. package/dist/server/ws/hub.js +13 -13
  117. package/dist/server/ws/hub.js.map +1 -1
  118. package/dist/server/ws/rpc.d.ts +3 -3
  119. package/dist/server/ws/rpc.js +4 -4
  120. package/dist/server/ws/rpc.js.map +1 -1
  121. package/dist/transport/index.d.ts +1 -1
  122. package/dist/transport/index.js +3 -3
  123. package/dist/transport/index.js.map +1 -1
  124. package/dist/transport/rest.js +1 -1
  125. package/dist/transport/rest.js.map +1 -1
  126. package/docs/INSTALL.zh-CN.md +2 -3
  127. package/package.json +1 -1
  128. package/skills/uco-setup/SKILL.md +1 -1
  129. package/skills/unity-editor/references/diagnostics.md +24 -24
  130. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Components/ExtensionPanel.cs +379 -379
  131. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/MenuItems.cs +72 -72
  132. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/UnityCopilotProjectSettingsProvider.cs +64 -64
  133. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowEditor.CopilotServer.cs +372 -372
  134. package/vendor/plugin/com.atelierai.unity.copilot/Plugins/ReflectorNet.dll +0 -0
  135. package/vendor/plugin/com.atelierai.unity.copilot/Plugins/Uco.Framework.Common.dll +0 -0
  136. package/vendor/plugin/com.atelierai.unity.copilot/Plugins/Uco.Framework.dll +0 -0
  137. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPlugin.Config.cs +175 -175
  138. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPlugin.cs +1 -1
  139. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/Utils/EnvironmentUtils.cs +368 -368
  140. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Environment/EnvironmentUtilsTests.cs +3 -3
  141. package/vendor/plugin/com.atelierai.unity.copilot/package.json +1 -1
  142. package/dist/commands/devops/login.d.ts +0 -2
  143. package/dist/commands/devops/login.js +0 -29
  144. package/dist/commands/devops/login.js.map +0 -1
  145. package/dist/commands/devops/setup-mcp.d.ts +0 -2
  146. package/dist/commands/devops/setup-mcp.js +0 -41
  147. package/dist/commands/devops/setup-mcp.js.map +0 -1
  148. package/dist/devops/commands-upstream/bootstrap-local.d.ts +0 -17
  149. package/dist/devops/commands-upstream/bootstrap-local.js +0 -87
  150. package/dist/devops/commands-upstream/bootstrap-local.js.map +0 -1
  151. package/dist/devops/commands-upstream/close.d.ts +0 -57
  152. package/dist/devops/commands-upstream/close.js +0 -188
  153. package/dist/devops/commands-upstream/close.js.map +0 -1
  154. package/dist/devops/commands-upstream/configure.d.ts +0 -2
  155. package/dist/devops/commands-upstream/configure.js +0 -87
  156. package/dist/devops/commands-upstream/configure.js.map +0 -1
  157. package/dist/devops/commands-upstream/create-project.d.ts +0 -2
  158. package/dist/devops/commands-upstream/create-project.js +0 -43
  159. package/dist/devops/commands-upstream/create-project.js.map +0 -1
  160. package/dist/devops/commands-upstream/install-plugin.d.ts +0 -2
  161. package/dist/devops/commands-upstream/install-plugin.js +0 -64
  162. package/dist/devops/commands-upstream/install-plugin.js.map +0 -1
  163. package/dist/devops/commands-upstream/install-unity.d.ts +0 -2
  164. package/dist/devops/commands-upstream/install-unity.js +0 -72
  165. package/dist/devops/commands-upstream/install-unity.js.map +0 -1
  166. package/dist/devops/commands-upstream/login.d.ts +0 -2
  167. package/dist/devops/commands-upstream/login.js +0 -33
  168. package/dist/devops/commands-upstream/login.js.map +0 -1
  169. package/dist/devops/commands-upstream/open.d.ts +0 -32
  170. package/dist/devops/commands-upstream/open.js +0 -282
  171. package/dist/devops/commands-upstream/open.js.map +0 -1
  172. package/dist/devops/commands-upstream/remove-plugin.d.ts +0 -2
  173. package/dist/devops/commands-upstream/remove-plugin.js +0 -41
  174. package/dist/devops/commands-upstream/remove-plugin.js.map +0 -1
  175. package/dist/devops/commands-upstream/run-system-tool.d.ts +0 -1
  176. package/dist/devops/commands-upstream/run-system-tool.js +0 -13
  177. package/dist/devops/commands-upstream/run-system-tool.js.map +0 -1
  178. package/dist/devops/commands-upstream/run-tool-builder.d.ts +0 -25
  179. package/dist/devops/commands-upstream/run-tool-builder.js +0 -125
  180. package/dist/devops/commands-upstream/run-tool-builder.js.map +0 -1
  181. package/dist/devops/commands-upstream/run-tool.d.ts +0 -1
  182. package/dist/devops/commands-upstream/run-tool.js +0 -13
  183. package/dist/devops/commands-upstream/run-tool.js.map +0 -1
  184. package/dist/devops/commands-upstream/setup-mcp.d.ts +0 -2
  185. package/dist/devops/commands-upstream/setup-mcp.js +0 -68
  186. package/dist/devops/commands-upstream/setup-mcp.js.map +0 -1
  187. package/dist/devops/commands-upstream/setup-skills.d.ts +0 -2
  188. package/dist/devops/commands-upstream/setup-skills.js +0 -167
  189. package/dist/devops/commands-upstream/setup-skills.js.map +0 -1
  190. package/dist/devops/commands-upstream/status.d.ts +0 -2
  191. package/dist/devops/commands-upstream/status.js +0 -87
  192. package/dist/devops/commands-upstream/status.js.map +0 -1
  193. package/dist/devops/commands-upstream/update.d.ts +0 -2
  194. package/dist/devops/commands-upstream/update.js +0 -77
  195. package/dist/devops/commands-upstream/update.js.map +0 -1
  196. package/dist/devops/commands-upstream/wait-for-ready.d.ts +0 -2
  197. package/dist/devops/commands-upstream/wait-for-ready.js +0 -93
  198. package/dist/devops/commands-upstream/wait-for-ready.js.map +0 -1
  199. package/dist/devops/lib/setup-mcp.d.ts +0 -35
  200. package/dist/devops/lib/setup-mcp.js +0 -177
  201. package/dist/devops/lib/setup-mcp.js.map +0 -1
  202. package/dist/devops/utils/cloud-login.d.ts +0 -7
  203. package/dist/devops/utils/cloud-login.js +0 -56
  204. package/dist/devops/utils/cloud-login.js.map +0 -1
@@ -1,13 +0,0 @@
1
- import { runSystemTool } from '../lib/run-tool.js';
2
- import { buildRunToolCommand } from './run-tool-builder.js';
3
- export const runSystemToolCommand = buildRunToolCommand({
4
- name: 'run-system-tool',
5
- description: 'Execute a system tool via the HTTP API (not exposed to MCP clients)',
6
- argDescription: 'Name of the system tool to execute',
7
- routePrefix: '/api/system-tools',
8
- verboseLabel: 'System tool',
9
- headingLabel: 'Run System Tool',
10
- errorNoun: 'system tool',
11
- invoke: runSystemTool,
12
- });
13
- //# sourceMappingURL=run-system-tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-system-tool.js","sourceRoot":"","sources":["../../../src/devops/commands-upstream/run-system-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,CAAC,MAAM,oBAAoB,GAAG,mBAAmB,CAAC;IACtD,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,qEAAqE;IAClF,cAAc,EAAE,oCAAoC;IACpD,WAAW,EAAE,mBAAmB;IAChC,YAAY,EAAE,aAAa;IAC3B,YAAY,EAAE,iBAAiB;IAC/B,SAAS,EAAE,aAAa;IACxB,MAAM,EAAE,aAAa;CACtB,CAAC,CAAC"}
@@ -1,25 +0,0 @@
1
- import { Command } from 'commander';
2
- import type { RunToolOptions, RunToolResult } from '../lib/types.js';
3
- interface BuilderOptions {
4
- /** CLI subcommand name, e.g. `'run-tool'`. */
5
- name: string;
6
- /** `description()` text for the commander command. */
7
- description: string;
8
- /** Description shown next to the `<tool-name>` argument. */
9
- argDescription: string;
10
- /** URL path prefix the lib function targets, e.g. `'/api/tools'`. */
11
- routePrefix: string;
12
- /** Verbose-log label, e.g. `'Tool'` or `'System tool'`. */
13
- verboseLabel: string;
14
- /** Heading printed by `ui.heading`, e.g. `'Run Tool'`. */
15
- headingLabel: string;
16
- /**
17
- * Lower-case noun used in user-facing failure copy:
18
- * `Failed to call <noun>:` and `<Capitalized> call timed out…`.
19
- */
20
- errorNoun: string;
21
- /** Library function — `runTool` or `runSystemTool`. */
22
- invoke: (opts: RunToolOptions) => Promise<RunToolResult>;
23
- }
24
- export declare function buildRunToolCommand(cfg: BuilderOptions): Command;
25
- export {};
@@ -1,125 +0,0 @@
1
- import { Command } from 'commander';
2
- import * as ui from '../utils/ui.js';
3
- import { verbose } from '../utils/ui.js';
4
- import { resolveAndValidateProjectPath, resolveConnection } from '../utils/connection.js';
5
- import { parseInput } from '../utils/input.js';
6
- export function buildRunToolCommand(cfg) {
7
- return new Command(cfg.name)
8
- .description(cfg.description)
9
- .argument('<tool-name>', cfg.argDescription)
10
- .argument('[path]', 'Unity project path (used for config and auto port detection)')
11
- .option('--path <path>', 'Unity project path (config and auto port detection)')
12
- .option('--url <url>', 'Direct server URL override (bypasses config)')
13
- .option('--token <token>', 'Bearer token override (bypasses config)')
14
- .option('--input <json>', 'JSON string of tool arguments')
15
- .option('--input-file <file>', 'Read JSON arguments from file')
16
- .option('--raw', 'Output raw JSON (no formatting)')
17
- .option('--timeout <ms>', 'Request timeout in milliseconds (default: 60000)', '60000')
18
- .action(async (toolName, positionalPath, options) => {
19
- // Validate --timeout first so a bad value short-circuits before
20
- // we read --input-file or hit the network.
21
- const timeoutMs = parseInt(options.timeout, 10);
22
- if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {
23
- ui.error(`Invalid --timeout value: "${options.timeout}". Must be a positive integer (milliseconds).`);
24
- process.exit(1);
25
- }
26
- // Resolve path + connection up front so the heading and verbose
27
- // output reflect the final endpoint before the HTTP call fires.
28
- const projectPath = resolveAndValidateProjectPath(positionalPath, options);
29
- const { url: baseUrl, token } = resolveConnection(projectPath, options);
30
- const body = parseInput(options);
31
- const endpoint = `${baseUrl}${cfg.routePrefix}/${encodeURIComponent(toolName)}`;
32
- const authSource = options.token ? '--token flag' : 'config';
33
- verbose(`${cfg.verboseLabel}: ${toolName}`);
34
- verbose(`Endpoint: ${endpoint}`);
35
- verbose(`Body: ${body}`);
36
- if (token)
37
- verbose(`Authorization header set (source: ${authSource})`);
38
- if (!options.raw) {
39
- ui.heading(cfg.headingLabel);
40
- ui.label('Tool', toolName);
41
- ui.label('URL', endpoint);
42
- if (token)
43
- ui.label('Auth', `from ${authSource}`);
44
- ui.divider();
45
- }
46
- const spinner = options.raw ? null : ui.startSpinner(`Calling ${toolName}...`);
47
- // The CLI already resolved url/token, so passing them explicitly
48
- // makes the lib's resolver a no-op rather than re-reading config.
49
- const result = await cfg.invoke({
50
- toolName,
51
- url: baseUrl,
52
- ...(token ? { token } : {}),
53
- input: body,
54
- timeoutMs,
55
- });
56
- if (result.kind === 'success') {
57
- spinner?.success(`${toolName} completed`);
58
- if (options.raw) {
59
- process.stdout.write(stringifyForRaw(result.data));
60
- }
61
- else {
62
- ui.success('Response:');
63
- console.log(typeof result.data === 'string'
64
- ? result.data
65
- : JSON.stringify(result.data, null, 2));
66
- }
67
- return;
68
- }
69
- spinner?.stop();
70
- handleFailure(result, {
71
- toolName,
72
- endpoint,
73
- raw: options.raw,
74
- timeoutMs,
75
- errorNoun: cfg.errorNoun,
76
- });
77
- });
78
- }
79
- function stringifyForRaw(data) {
80
- if (typeof data === 'string')
81
- return data;
82
- if (data === undefined)
83
- return '';
84
- return JSON.stringify(data);
85
- }
86
- function handleFailure(failure, ctx) {
87
- if (failure.reason === 'http-error') {
88
- if (ctx.raw) {
89
- process.stdout.write(stringifyForRaw(failure.data));
90
- }
91
- else {
92
- ui.error(`HTTP ${failure.httpStatus}: ${failure.message}`);
93
- if (failure.data !== undefined) {
94
- ui.info(typeof failure.data === 'string'
95
- ? failure.data
96
- : JSON.stringify(failure.data, null, 2));
97
- }
98
- }
99
- process.exit(1);
100
- }
101
- const message = buildFailureMessage(failure, ctx);
102
- if (ctx.raw)
103
- process.stderr.write(message + '\n');
104
- else
105
- ui.error(`Failed to call ${ctx.errorNoun}: ${message}`);
106
- process.exit(1);
107
- }
108
- function buildFailureMessage(failure, ctx) {
109
- switch (failure.reason) {
110
- case 'timeout':
111
- return `${capitalize(ctx.errorNoun)} call timed out after ${ctx.timeoutMs / 1000} seconds: ${ctx.toolName}`;
112
- case 'connection-refused':
113
- return `Connection refused at ${ctx.endpoint}. Is the MCP server running? Start Unity Editor with the MCP plugin first.`;
114
- case 'connection-reset':
115
- return `Connection was reset by the server at ${ctx.endpoint}. The server may have crashed or restarted.`;
116
- case 'network-error':
117
- return `Cannot reach ${ctx.endpoint}. Check your network connection and server URL.`;
118
- default:
119
- return failure.message;
120
- }
121
- }
122
- function capitalize(s) {
123
- return s.length === 0 ? s : s.charAt(0).toUpperCase() + s.slice(1);
124
- }
125
- //# sourceMappingURL=run-tool-builder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-tool-builder.js","sourceRoot":"","sources":["../../../src/devops/commands-upstream/run-tool-builder.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export declare const runToolCommand: import("commander").Command;
@@ -1,13 +0,0 @@
1
- import { runTool } from '../lib/run-tool.js';
2
- import { buildRunToolCommand } from './run-tool-builder.js';
3
- export const runToolCommand = buildRunToolCommand({
4
- name: 'run-tool',
5
- description: 'Execute an MCP tool via the HTTP API',
6
- argDescription: 'Name of the MCP tool to execute',
7
- routePrefix: '/api/tools',
8
- verboseLabel: 'Tool',
9
- headingLabel: 'Run Tool',
10
- errorNoun: 'tool',
11
- invoke: runTool,
12
- });
13
- //# sourceMappingURL=run-tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-tool.js","sourceRoot":"","sources":["../../../src/devops/commands-upstream/run-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,CAAC,MAAM,cAAc,GAAG,mBAAmB,CAAC;IAChD,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,sCAAsC;IACnD,cAAc,EAAE,iCAAiC;IACjD,WAAW,EAAE,YAAY;IACzB,YAAY,EAAE,MAAM;IACpB,YAAY,EAAE,UAAU;IACxB,SAAS,EAAE,MAAM;IACjB,MAAM,EAAE,OAAO;CAChB,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare const setupMcpCommand: Command;
@@ -1,68 +0,0 @@
1
- import { Command } from 'commander';
2
- import * as ui from '../utils/ui.js';
3
- import { verbose } from '../utils/ui.js';
4
- import { getAgentById, getAgentIds, listAgentTable, MCP_SERVER_NAME, } from '../utils/agents.js';
5
- import { setupMcp } from '../lib/setup-mcp.js';
6
- function listAgents() {
7
- listAgentTable('Available AI Agents', 'Config Path', (a) => a.configPathDisplay);
8
- }
9
- export const setupMcpCommand = new Command('setup-mcp')
10
- .description('Write MCP config for an AI agent')
11
- .argument('[agent-id]', 'Agent to configure (use --list to see all)')
12
- .argument('[path]', 'Unity project path (defaults to cwd)')
13
- .option('--transport <transport>', 'Transport method: stdio or http (default: http)', 'http')
14
- .option('--url <url>', 'Server URL override (for http transport)')
15
- .option('--token <token>', 'Auth token override')
16
- .option('--list', 'List all available agent IDs')
17
- .action(async (agentId, positionalPath, options) => {
18
- if (options.list) {
19
- listAgents();
20
- return;
21
- }
22
- if (!agentId) {
23
- ui.error('Missing required argument: agent-id');
24
- ui.info(`Available agent IDs: ${getAgentIds().join(', ')}`);
25
- process.exit(1);
26
- }
27
- // Resolve the agent up-front so we can:
28
- // 1. Use the display name in user-facing strings (matches the
29
- // historical `Configuring <Name> ...` phrasing).
30
- // 2. Preserve the prior `ui.error(...)` + `ui.info("Available
31
- // agent IDs: ...")` split for the unknown-agent error path.
32
- const agent = getAgentById(agentId);
33
- if (!agent) {
34
- ui.error(`Unknown agent: "${agentId}"`);
35
- ui.info(`Available agent IDs: ${getAgentIds().join(', ')}`);
36
- process.exit(1);
37
- }
38
- const transport = (options.transport ?? 'http');
39
- const spinner = ui.startSpinner(`Configuring ${agent.name} (${transport})...`);
40
- const result = await setupMcp({
41
- agentId,
42
- unityProjectPath: positionalPath,
43
- transport,
44
- url: options.url,
45
- token: options.token,
46
- });
47
- if (result.kind === 'failure') {
48
- spinner.error('Failed to write config');
49
- ui.error(result.error.message);
50
- process.exit(1);
51
- }
52
- // Narrowed: result.kind === 'success' below — `configPath` and
53
- // `transport` are non-optional.
54
- if (positionalPath) {
55
- verbose(`Project path: ${positionalPath}`);
56
- }
57
- verbose(`Config file: ${result.configPath}`);
58
- spinner.success(`${agent.name} configured successfully`);
59
- console.log('');
60
- ui.label('Config file', result.configPath);
61
- ui.label('Transport', result.transport);
62
- ui.label('Server name', MCP_SERVER_NAME);
63
- for (const warning of result.warnings) {
64
- console.log('');
65
- ui.warn(warning);
66
- }
67
- });
68
- //# sourceMappingURL=setup-mcp.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup-mcp.js","sourceRoot":"","sources":["../../../src/devops/commands-upstream/setup-mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EACL,YAAY,EACZ,WAAW,EACX,cAAc,EACd,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAU/C,SAAS,UAAU;IACjB,cAAc,CAAC,qBAAqB,EAAE,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC;KACpD,WAAW,CAAC,kCAAkC,CAAC;KAC/C,QAAQ,CAAC,YAAY,EAAE,4CAA4C,CAAC;KACpE,QAAQ,CAAC,QAAQ,EAAE,sCAAsC,CAAC;KAC1D,MAAM,CACL,yBAAyB,EACzB,iDAAiD,EACjD,MAAM,CACP;KACA,MAAM,CAAC,aAAa,EAAE,0CAA0C,CAAC;KACjE,MAAM,CAAC,iBAAiB,EAAE,qBAAqB,CAAC;KAChD,MAAM,CAAC,QAAQ,EAAE,8BAA8B,CAAC;KAChD,MAAM,CACL,KAAK,EACH,OAA2B,EAC3B,cAAkC,EAClC,OAA2B,EAC3B,EAAE;IACF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,UAAU,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,EAAE,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAChD,EAAE,CAAC,IAAI,CAAC,wBAAwB,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,wCAAwC;IACxC,gEAAgE;IAChE,sDAAsD;IACtD,gEAAgE;IAChE,iEAAiE;IACjE,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,EAAE,CAAC,KAAK,CAAC,mBAAmB,OAAO,GAAG,CAAC,CAAC;QACxC,EAAE,CAAC,IAAI,CAAC,wBAAwB,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM,CAAiB,CAAC;IAEhE,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAC7B,eAAe,KAAK,CAAC,IAAI,KAAK,SAAS,MAAM,CAC9C,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC;QAC5B,OAAO;QACP,gBAAgB,EAAE,cAAc;QAChC,SAAS;QACT,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACxC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,+DAA+D;IAC/D,gCAAgC;IAChC,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,CAAC,iBAAiB,cAAc,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,CAAC,gBAAgB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAE7C,OAAO,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,IAAI,0BAA0B,CAAC,CAAC;IAEzD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAC3C,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IACxC,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;IAEzC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;AACH,CAAC,CACF,CAAC"}
@@ -1,2 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare const setupSkillsCommand: Command;
@@ -1,167 +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 { resolveAndValidateProjectPath, resolveConnection } from '../utils/connection.js';
6
- import { getAgentById, getAgentIds, listAgentTable } from '../utils/agents.js';
7
- import { readConfig, isCloudMode } from '../utils/config.js';
8
- import { runCloudLogin } from '../utils/cloud-login.js';
9
- function listAgentsWithSkills() {
10
- listAgentTable('AI Agents \u2014 Skills Support', 'Skills Path', (a) => a.skillsPath ?? '\u2014');
11
- }
12
- /**
13
- * POST to the skill-generate endpoint and return the response.
14
- */
15
- async function callGenerateSkills(endpoint, token, body, timeoutMs) {
16
- const headers = {
17
- 'Content-Type': 'application/json',
18
- };
19
- if (token) {
20
- headers['Authorization'] = `Bearer ${token}`;
21
- }
22
- const controller = new AbortController();
23
- const fetchTimeout = setTimeout(() => controller.abort(), timeoutMs);
24
- try {
25
- return await fetch(endpoint, {
26
- method: 'POST',
27
- headers,
28
- body,
29
- signal: controller.signal,
30
- });
31
- }
32
- finally {
33
- clearTimeout(fetchTimeout);
34
- }
35
- }
36
- export const setupSkillsCommand = new Command('setup-skills')
37
- .description('Generate skill files for an AI agent')
38
- .argument('[agent-id]', 'Agent to generate skills for (use --list to see all)')
39
- .argument('[path]', 'Unity project path (defaults to cwd)')
40
- .option('--url <url>', 'Server URL override')
41
- .option('--token <token>', 'Auth token override')
42
- .option('--list', 'List all agents with skills support status')
43
- .option('--timeout <ms>', 'Request timeout in milliseconds (default: 60000)', '60000')
44
- .action(async (agentId, positionalPath, options) => {
45
- if (options.list) {
46
- listAgentsWithSkills();
47
- return;
48
- }
49
- if (!agentId) {
50
- ui.error('Missing required argument: agent-id');
51
- ui.info(`Available agent IDs: ${getAgentIds().join(', ')}`);
52
- process.exit(1);
53
- }
54
- const agent = getAgentById(agentId);
55
- if (!agent) {
56
- ui.error(`Unknown agent: "${agentId}"`);
57
- ui.info(`Available agent IDs: ${getAgentIds().join(', ')}`);
58
- process.exit(1);
59
- }
60
- if (!agent.skillsPath) {
61
- ui.error(`Agent "${agent.name}" does not support skills.`);
62
- process.exit(1);
63
- }
64
- // Resolve project path and validate it is a Unity project
65
- const projectPath = resolveAndValidateProjectPath(positionalPath, options);
66
- verbose(`Project path: ${projectPath}`);
67
- // Resolve skills path (absolute)
68
- const skillsPath = path.join(projectPath, agent.skillsPath);
69
- verbose(`Skills path: ${skillsPath}`);
70
- // Resolve server connection
71
- let { url: serverUrl, token } = resolveConnection(projectPath, options);
72
- // Call the MCP server to generate skills
73
- const endpoint = `${serverUrl}/api/system-tools/unity-skill-generate`;
74
- verbose(`Endpoint: ${endpoint}`);
75
- const body = JSON.stringify({ path: agent.skillsPath });
76
- ui.heading('Generate Skills');
77
- ui.label('Agent', agent.name);
78
- ui.label('Skills path', skillsPath);
79
- ui.label('Server', serverUrl);
80
- ui.divider();
81
- const timeoutMs = parseInt(options.timeout ?? '60000', 10);
82
- if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {
83
- ui.error(`Invalid timeout value: "${options.timeout}". Must be a positive integer (milliseconds).`);
84
- process.exit(1);
85
- }
86
- const spinner = ui.startSpinner(`Generating skills for ${agent.name}...`);
87
- try {
88
- let response = await callGenerateSkills(endpoint, token, body, timeoutMs);
89
- // Handle 401 in Cloud mode
90
- if (response.status === 401) {
91
- await response.text();
92
- spinner.stop();
93
- const config = readConfig(projectPath);
94
- const cloud = config != null && isCloudMode(config);
95
- const hadToken = !!token;
96
- if (cloud && !options.token && !hadToken) {
97
- ui.info('Cloud authentication required. Starting login...');
98
- console.log();
99
- const newToken = await runCloudLogin(projectPath);
100
- if (!newToken) {
101
- process.exit(1);
102
- }
103
- // Token saved. Unity Editor needs to connect with it.
104
- ui.info('Unity Editor must connect to the cloud server with this token.');
105
- ui.info('If Unity was already running, restart it to pick up the new token:');
106
- console.log();
107
- console.log(` unity-mcp-cli open ${positionalPath ?? '.'}`);
108
- console.log(` unity-mcp-cli wait-for-ready ${positionalPath ?? '.'}`);
109
- console.log(` unity-mcp-cli setup-skills ${agentId} ${positionalPath ?? '.'}`);
110
- console.log();
111
- process.exit(0);
112
- }
113
- else if (cloud && hadToken) {
114
- // Token exists but was rejected — Unity Editor isn't connected
115
- ui.error('Cloud server rejected the token. Unity Editor may not be connected yet.');
116
- ui.info('Make sure Unity Editor is running and connected to the cloud server.');
117
- ui.info('Try the following:');
118
- console.log();
119
- console.log(` unity-mcp-cli open ${positionalPath ?? '.'}`);
120
- console.log(` unity-mcp-cli wait-for-ready ${positionalPath ?? '.'}`);
121
- console.log(` unity-mcp-cli setup-skills ${agentId} ${positionalPath ?? '.'}`);
122
- console.log();
123
- process.exit(1);
124
- }
125
- else {
126
- ui.error('HTTP 401: Unauthorized. Check your --token value.');
127
- process.exit(1);
128
- }
129
- }
130
- if (!response.ok) {
131
- spinner.stop();
132
- const text = await response.text();
133
- if (response.status === 404) {
134
- ui.error('The unity-skill-generate tool is not yet available. Please update the Unity-MCP plugin to the latest version.');
135
- }
136
- else {
137
- ui.error(`HTTP ${response.status}: ${response.statusText}`);
138
- if (text) {
139
- ui.info(text);
140
- }
141
- }
142
- process.exit(1);
143
- }
144
- spinner.success(`Skills generated for ${agent.name}`);
145
- ui.label('Output path', skillsPath);
146
- }
147
- catch (err) {
148
- spinner.stop();
149
- handleFetchError(err, timeoutMs);
150
- process.exit(1);
151
- }
152
- });
153
- function handleFetchError(err, timeoutMs) {
154
- const message = err instanceof Error ? err.message : String(err);
155
- const isTimeout = err instanceof Error && err.name === 'AbortError';
156
- const isConnectionRefused = message.includes('ECONNREFUSED') || message.includes('fetch failed');
157
- if (isTimeout) {
158
- ui.error(`Request timed out after ${timeoutMs / 1000} seconds.`);
159
- }
160
- else if (isConnectionRefused) {
161
- ui.error('MCP Server is not running. Please start Unity Editor with the Unity-MCP plugin installed, then retry.');
162
- }
163
- else {
164
- ui.error(`Failed to generate skills: ${message}`);
165
- }
166
- }
167
- //# sourceMappingURL=setup-skills.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup-skills.js","sourceRoot":"","sources":["../../../src/devops/commands-upstream/setup-skills.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare const statusCommand: Command;
@@ -1,87 +0,0 @@
1
- import { Command } from 'commander';
2
- import * as ui from '../utils/ui.js';
3
- import { verbose } from '../utils/ui.js';
4
- import { resolveAndValidateProjectPath, resolveConnection } from '../utils/connection.js';
5
- import { generatePortFromDirectory } from '../utils/port.js';
6
- import { findUnityProcess } from '../utils/unity-process.js';
7
- import { probe } from '../utils/probe.js';
8
- export const statusCommand = new Command('status')
9
- .description('Check Unity Editor and MCP server connection status')
10
- .argument('[path]', 'Unity project path (used for config and auto port detection)')
11
- .option('--path <path>', 'Unity project path (config and auto port detection)')
12
- .option('--url <url>', 'Direct server URL override (bypasses config)')
13
- .option('--token <token>', 'Bearer token override (bypasses config)')
14
- .option('--timeout <ms>', 'Probe timeout in milliseconds (default: 5000)', '5000')
15
- .action(async (positionalPath, options) => {
16
- const projectPath = resolveAndValidateProjectPath(positionalPath, options);
17
- const { url: configUrl, token } = resolveConnection(projectPath, options);
18
- const localPort = generatePortFromDirectory(projectPath);
19
- const localUrl = `http://127.0.0.1:${localPort}`;
20
- const timeoutMs = parseInt(options.timeout ?? '5000', 10);
21
- if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {
22
- ui.error(`Invalid --timeout value: "${options.timeout}". Must be a positive integer (milliseconds).`);
23
- process.exit(1);
24
- }
25
- const headers = {
26
- 'Content-Type': 'application/json',
27
- };
28
- if (token) {
29
- headers['Authorization'] = `Bearer ${token}`;
30
- }
31
- ui.heading('Unity-MCP Status');
32
- ui.label('Project', projectPath);
33
- ui.divider();
34
- // 1. Unity process detection
35
- ui.heading('Unity Editor Process');
36
- const proc = findUnityProcess(projectPath);
37
- if (proc) {
38
- ui.success(`Unity is running (PID: ${proc.pid})`);
39
- }
40
- else {
41
- ui.warn('Unity is not running with this project');
42
- }
43
- // 2. Local server check
44
- ui.heading('Local MCP Server');
45
- ui.label('URL', localUrl);
46
- const localSpinner = ui.startSpinner(`Probing ${localUrl}...`);
47
- const localResult = await probe(localUrl, headers, timeoutMs);
48
- if (localResult.ok) {
49
- localSpinner.success('Connected');
50
- verbose(`Local server response: ${JSON.stringify(localResult.data)}`);
51
- }
52
- else {
53
- localSpinner.error(`Not available (${localResult.reason})`);
54
- }
55
- // 3. Config-resolved server check (if different from local)
56
- let configResult = null;
57
- if (configUrl !== localUrl) {
58
- ui.heading('Config Server');
59
- ui.label('URL', configUrl);
60
- const configSpinner = ui.startSpinner(`Probing ${configUrl}...`);
61
- configResult = await probe(configUrl, headers, timeoutMs);
62
- if (configResult.ok) {
63
- configSpinner.success('Connected');
64
- verbose(`Config server response: ${JSON.stringify(configResult.data)}`);
65
- }
66
- else {
67
- configSpinner.error(`Not available (${configResult.reason})`);
68
- }
69
- }
70
- ui.divider();
71
- // Summary — reuse probe results, no duplicate calls
72
- const localOk = localResult.ok;
73
- const configOk = configResult ? configResult.ok : localOk;
74
- if (localOk || configOk) {
75
- ui.success('MCP server is reachable — ready for tool calls');
76
- process.exit(0);
77
- }
78
- else if (proc) {
79
- ui.warn('Unity is running but MCP server is not responding yet');
80
- process.exit(1);
81
- }
82
- else {
83
- ui.error('Unity is not running and MCP server is not reachable');
84
- process.exit(1);
85
- }
86
- });
87
- //# sourceMappingURL=status.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/devops/commands-upstream/status.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare function createUpdateCommand(currentVersion: string): Command;
@@ -1,77 +0,0 @@
1
- import { Command } from 'commander';
2
- import { spawn } from 'child_process';
3
- import { platform } from 'os';
4
- import * as ui from '../utils/ui.js';
5
- import { fetchLatestVersion, formatUpdateAvailable, isRunningViaNpx } from '../utils/update-check.js';
6
- import { isNewerVersion } from '../utils/semver.js';
7
- const PACKAGE_NAME = 'unity-mcp-cli';
8
- function npmCommand() {
9
- return platform() === 'win32' ? 'npm.cmd' : 'npm';
10
- }
11
- function runNpmInstall(packageSpec) {
12
- return new Promise((resolve, reject) => {
13
- const child = spawn(npmCommand(), ['install', '-g', packageSpec], {
14
- stdio: 'inherit',
15
- });
16
- child.on('error', reject);
17
- child.on('close', (code) => resolve(code ?? 1));
18
- });
19
- }
20
- export function createUpdateCommand(currentVersion) {
21
- return new Command('update')
22
- .description('Update unity-mcp-cli to the latest version')
23
- .option('--check', 'Only check for updates without installing')
24
- .action(async (options) => {
25
- if (isRunningViaNpx()) {
26
- ui.info('Running via npx — it always fetches the latest published version.');
27
- ui.info('No update action needed.');
28
- process.exit(0);
29
- }
30
- const spinner = ui.startSpinner('Checking for updates...');
31
- let latest;
32
- try {
33
- latest = await fetchLatestVersion();
34
- }
35
- catch (err) {
36
- spinner.error('Failed to check for updates');
37
- ui.error(err.message || String(err));
38
- process.exit(1);
39
- return;
40
- }
41
- if (!isNewerVersion(currentVersion, latest)) {
42
- spinner.success(`Already up to date (v${currentVersion})`);
43
- process.exit(0);
44
- }
45
- spinner.success(formatUpdateAvailable(currentVersion, latest));
46
- console.log();
47
- // --check mode: exit 2 = outdated (distinct from exit 1 = error)
48
- if (options.check) {
49
- process.exit(2);
50
- }
51
- ui.info(`Installing ${PACKAGE_NAME}@${latest}...`);
52
- console.log();
53
- try {
54
- const exitCode = await runNpmInstall(`${PACKAGE_NAME}@${latest}`);
55
- if (exitCode !== 0) {
56
- console.log();
57
- ui.error('Update failed.');
58
- if (platform() === 'win32') {
59
- ui.info('Try running the terminal as Administrator.');
60
- }
61
- else {
62
- ui.info(`Try: sudo npm install -g ${PACKAGE_NAME}@latest`);
63
- }
64
- process.exit(1);
65
- }
66
- }
67
- catch (err) {
68
- console.log();
69
- ui.error(`Could not run npm: ${err.message}`);
70
- ui.info('Make sure npm is installed and in your PATH.');
71
- process.exit(1);
72
- }
73
- console.log();
74
- ui.success(`Updated to v${latest}`);
75
- });
76
- }
77
- //# sourceMappingURL=update.js.map