unity-mcp-cli 0.56.0 → 0.57.1

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.
@@ -0,0 +1,546 @@
1
+ import chalk from 'chalk';
2
+ import * as fs from 'fs';
3
+ import * as os from 'os';
4
+ import * as path from 'path';
5
+ // ---------------------------------------------------------------------------
6
+ // Platform helpers
7
+ // ---------------------------------------------------------------------------
8
+ function appData() {
9
+ return process.env['APPDATA'] ?? path.join(os.homedir(), 'AppData', 'Roaming');
10
+ }
11
+ function home() {
12
+ return os.homedir();
13
+ }
14
+ function isWindows() {
15
+ return process.platform === 'win32';
16
+ }
17
+ function isMac() {
18
+ return process.platform === 'darwin';
19
+ }
20
+ // ---------------------------------------------------------------------------
21
+ // Shared stdio / http arg builders
22
+ // ---------------------------------------------------------------------------
23
+ function stdioArgs(port, timeout, auth, token) {
24
+ return [
25
+ `port=${port}`,
26
+ `plugin-timeout=${timeout}`,
27
+ `client-transport=stdio`,
28
+ `authorization=${auth}`,
29
+ `token=${token}`,
30
+ ];
31
+ }
32
+ function authHeaders(token, authRequired) {
33
+ if (authRequired && token) {
34
+ return { Authorization: `Bearer ${token}` };
35
+ }
36
+ return undefined;
37
+ }
38
+ // ---------------------------------------------------------------------------
39
+ // Agent Registry
40
+ // ---------------------------------------------------------------------------
41
+ const MCP_SERVER_NAME = 'ai-game-developer';
42
+ export const agentRegistry = [
43
+ // ── Claude Code ──────────────────────────────────────────────
44
+ {
45
+ id: 'claude-code',
46
+ name: 'Claude Code',
47
+ skillsPath: '.claude/skills',
48
+ configPathDisplay: '.mcp.json',
49
+ configFormat: 'json',
50
+ bodyPath: 'mcpServers',
51
+ getConfigPath: (p) => path.join(p, '.mcp.json'),
52
+ getStdioProps: (serverPath, port, timeout, auth, token) => ({
53
+ command: serverPath,
54
+ args: stdioArgs(port, timeout, auth, token),
55
+ }),
56
+ getHttpProps: (url, token, authRequired) => ({
57
+ type: 'http',
58
+ url,
59
+ ...(authHeaders(token, authRequired)
60
+ ? { headers: authHeaders(token, authRequired) }
61
+ : {}),
62
+ }),
63
+ stdioRemoveKeys: ['type', 'url'],
64
+ httpRemoveKeys: ['command', 'args'],
65
+ },
66
+ // ── Claude Desktop ───────────────────────────────────────────
67
+ {
68
+ id: 'claude-desktop',
69
+ name: 'Claude Desktop',
70
+ skillsPath: null,
71
+ configPathDisplay: '~/Claude/claude_desktop_config.json',
72
+ configFormat: 'json',
73
+ bodyPath: 'mcpServers',
74
+ getConfigPath: () => isWindows()
75
+ ? path.join(appData(), 'Claude', 'claude_desktop_config.json')
76
+ : path.join(home(), 'Library', 'Application Support', 'Claude', 'claude_desktop_config.json'),
77
+ getStdioProps: (serverPath, port, timeout, auth, token) => ({
78
+ type: 'stdio',
79
+ command: serverPath,
80
+ args: stdioArgs(port, timeout, auth, token),
81
+ }),
82
+ getHttpProps: (url, token, authRequired) => ({
83
+ type: 'http',
84
+ url,
85
+ ...(authHeaders(token, authRequired)
86
+ ? { headers: authHeaders(token, authRequired) }
87
+ : {}),
88
+ }),
89
+ stdioRemoveKeys: ['url'],
90
+ httpRemoveKeys: ['command', 'args'],
91
+ },
92
+ // ── Cursor ───────────────────────────────────────────────────
93
+ {
94
+ id: 'cursor',
95
+ name: 'Cursor',
96
+ skillsPath: '.cursor/skills',
97
+ configPathDisplay: '.cursor/mcp.json',
98
+ configFormat: 'json',
99
+ bodyPath: 'mcpServers',
100
+ getConfigPath: (p) => path.join(p, '.cursor', 'mcp.json'),
101
+ getStdioProps: (serverPath, port, timeout, auth, token) => ({
102
+ type: 'stdio',
103
+ command: serverPath,
104
+ args: stdioArgs(port, timeout, auth, token),
105
+ }),
106
+ getHttpProps: (url, token, authRequired) => ({
107
+ type: 'http',
108
+ url,
109
+ ...(authHeaders(token, authRequired)
110
+ ? { headers: authHeaders(token, authRequired) }
111
+ : {}),
112
+ }),
113
+ stdioRemoveKeys: ['url'],
114
+ httpRemoveKeys: ['command', 'args'],
115
+ },
116
+ // ── VS Code (Copilot) ───────────────────────────────────────
117
+ {
118
+ id: 'vscode-copilot',
119
+ name: 'Visual Studio Code (Copilot)',
120
+ skillsPath: '.github/skills',
121
+ configPathDisplay: '.vscode/mcp.json',
122
+ configFormat: 'json',
123
+ bodyPath: 'servers',
124
+ getConfigPath: (p) => path.join(p, '.vscode', 'mcp.json'),
125
+ getStdioProps: (serverPath, port, timeout, auth, token) => ({
126
+ type: 'stdio',
127
+ command: serverPath,
128
+ args: stdioArgs(port, timeout, auth, token),
129
+ }),
130
+ getHttpProps: (url, token, authRequired) => ({
131
+ type: 'http',
132
+ url,
133
+ ...(authHeaders(token, authRequired)
134
+ ? { headers: authHeaders(token, authRequired) }
135
+ : {}),
136
+ }),
137
+ stdioRemoveKeys: ['url'],
138
+ httpRemoveKeys: ['command', 'args'],
139
+ },
140
+ // ── Visual Studio (Copilot) ──────────────────────────────────
141
+ {
142
+ id: 'vs-copilot',
143
+ name: 'Visual Studio (Copilot)',
144
+ skillsPath: '.github/skills',
145
+ configPathDisplay: '.vs/mcp.json',
146
+ configFormat: 'json',
147
+ bodyPath: 'servers',
148
+ getConfigPath: (p) => path.join(p, '.vs', 'mcp.json'),
149
+ getStdioProps: (serverPath, port, timeout, auth, token) => ({
150
+ type: 'stdio',
151
+ command: serverPath,
152
+ args: stdioArgs(port, timeout, auth, token),
153
+ }),
154
+ getHttpProps: (url, token, authRequired) => ({
155
+ type: 'http',
156
+ url,
157
+ ...(authHeaders(token, authRequired)
158
+ ? { headers: authHeaders(token, authRequired) }
159
+ : {}),
160
+ }),
161
+ stdioRemoveKeys: ['url'],
162
+ httpRemoveKeys: ['command', 'args'],
163
+ },
164
+ // ── Rider (Junie) ───────────────────────────────────────────
165
+ {
166
+ id: 'rider-junie',
167
+ name: 'Rider (Junie)',
168
+ skillsPath: '.junie/skills',
169
+ configPathDisplay: '.junie/mcp/mcp.json',
170
+ configFormat: 'json',
171
+ bodyPath: 'mcpServers',
172
+ getConfigPath: (p) => path.join(p, '.junie', 'mcp', 'mcp.json'),
173
+ getStdioProps: (serverPath, port, timeout, auth, token) => ({
174
+ enabled: true,
175
+ type: 'stdio',
176
+ command: serverPath,
177
+ args: stdioArgs(port, timeout, auth, token),
178
+ }),
179
+ getHttpProps: (url, token, authRequired) => ({
180
+ enabled: true,
181
+ type: 'http',
182
+ url,
183
+ ...(authHeaders(token, authRequired)
184
+ ? { headers: authHeaders(token, authRequired) }
185
+ : {}),
186
+ }),
187
+ stdioRemoveKeys: ['disabled', 'url'],
188
+ httpRemoveKeys: ['disabled', 'command', 'args'],
189
+ },
190
+ // ── GitHub Copilot CLI ──────────────────────────────────────
191
+ {
192
+ id: 'github-copilot-cli',
193
+ name: 'GitHub Copilot CLI',
194
+ skillsPath: '.github/skills',
195
+ configPathDisplay: '~/.copilot/mcp-config.json',
196
+ configFormat: 'json',
197
+ bodyPath: 'mcpServers',
198
+ getConfigPath: () => path.join(home(), '.copilot', 'mcp-config.json'),
199
+ getStdioProps: (serverPath, port, timeout, auth, token) => ({
200
+ command: serverPath,
201
+ args: stdioArgs(port, timeout, auth, token),
202
+ tools: ['*'],
203
+ }),
204
+ getHttpProps: (url, token, authRequired) => ({
205
+ type: 'http',
206
+ url,
207
+ tools: ['*'],
208
+ ...(authHeaders(token, authRequired)
209
+ ? { headers: authHeaders(token, authRequired) }
210
+ : {}),
211
+ }),
212
+ stdioRemoveKeys: ['url', 'type'],
213
+ httpRemoveKeys: ['command', 'args'],
214
+ },
215
+ // ── Gemini ──────────────────────────────────────────────────
216
+ {
217
+ id: 'gemini',
218
+ name: 'Gemini',
219
+ skillsPath: '.gemini/skills',
220
+ configPathDisplay: '.gemini/settings.json',
221
+ configFormat: 'json',
222
+ bodyPath: 'mcpServers',
223
+ getConfigPath: (p) => path.join(p, '.gemini', 'settings.json'),
224
+ getStdioProps: (serverPath, port, timeout, auth, token) => ({
225
+ type: 'stdio',
226
+ command: serverPath,
227
+ args: stdioArgs(port, timeout, auth, token),
228
+ }),
229
+ getHttpProps: (url, token, authRequired) => ({
230
+ type: 'http',
231
+ url,
232
+ ...(authHeaders(token, authRequired)
233
+ ? { headers: authHeaders(token, authRequired) }
234
+ : {}),
235
+ }),
236
+ stdioRemoveKeys: ['url'],
237
+ httpRemoveKeys: ['command', 'args'],
238
+ },
239
+ // ── Antigravity ─────────────────────────────────────────────
240
+ {
241
+ id: 'antigravity',
242
+ name: 'Antigravity',
243
+ skillsPath: '.agent/skills',
244
+ configPathDisplay: '~/.gemini/antigravity/mcp_config.json',
245
+ configFormat: 'json',
246
+ bodyPath: 'mcpServers',
247
+ getConfigPath: () => path.join(home(), '.gemini', 'antigravity', 'mcp_config.json'),
248
+ getStdioProps: (serverPath, port, timeout, auth, token) => ({
249
+ disabled: false,
250
+ command: serverPath,
251
+ args: stdioArgs(port, timeout, auth, token),
252
+ }),
253
+ getHttpProps: (url, _token, _authRequired) => ({
254
+ disabled: false,
255
+ serverUrl: url,
256
+ }),
257
+ stdioRemoveKeys: ['url', 'serverUrl', 'type'],
258
+ httpRemoveKeys: ['command', 'args', 'url', 'type'],
259
+ },
260
+ // ── Cline ───────────────────────────────────────────────────
261
+ {
262
+ id: 'cline',
263
+ name: 'Cline',
264
+ skillsPath: '.cline/skills',
265
+ configPathDisplay: '~/Code/globalStorage/.../cline_mcp_settings.json',
266
+ configFormat: 'json',
267
+ bodyPath: 'mcpServers',
268
+ getConfigPath: () => {
269
+ if (isWindows()) {
270
+ return path.join(appData(), 'Code', 'User', 'globalStorage', 'saoudrizwan.claude-dev', 'settings', 'cline_mcp_settings.json');
271
+ }
272
+ const base = isMac()
273
+ ? path.join(home(), 'Library', 'Application Support', 'Code', 'User', 'globalStorage')
274
+ : path.join(home(), '.config', 'Code', 'User', 'globalStorage');
275
+ return path.join(base, 'saoudrizwan.claude-dev', 'settings', 'cline_mcp_settings.json');
276
+ },
277
+ getStdioProps: (serverPath, port, timeout, auth, token) => ({
278
+ type: 'stdio',
279
+ command: serverPath,
280
+ args: stdioArgs(port, timeout, auth, token),
281
+ }),
282
+ getHttpProps: (url, token, authRequired) => ({
283
+ type: 'streamableHttp',
284
+ url,
285
+ ...(authHeaders(token, authRequired)
286
+ ? { headers: authHeaders(token, authRequired) }
287
+ : {}),
288
+ }),
289
+ stdioRemoveKeys: ['url'],
290
+ httpRemoveKeys: ['command', 'args'],
291
+ },
292
+ // ── Open Code ───────────────────────────────────────────────
293
+ {
294
+ id: 'open-code',
295
+ name: 'Open Code',
296
+ skillsPath: '.opencode/skills',
297
+ configPathDisplay: 'opencode.json',
298
+ configFormat: 'json',
299
+ bodyPath: 'mcp',
300
+ getConfigPath: (p) => path.join(p, 'opencode.json'),
301
+ getStdioProps: (serverPath, port, timeout, auth, token) => ({
302
+ type: 'local',
303
+ enabled: true,
304
+ command: [
305
+ serverPath,
306
+ ...stdioArgs(port, timeout, auth, token),
307
+ ],
308
+ }),
309
+ getHttpProps: (url, token, authRequired) => ({
310
+ type: 'remote',
311
+ enabled: true,
312
+ url,
313
+ ...(authHeaders(token, authRequired)
314
+ ? { headers: authHeaders(token, authRequired) }
315
+ : {}),
316
+ }),
317
+ stdioRemoveKeys: ['url', 'args'],
318
+ httpRemoveKeys: ['command', 'args'],
319
+ },
320
+ // ── Codex ───────────────────────────────────────────────────
321
+ {
322
+ id: 'codex',
323
+ name: 'Codex',
324
+ skillsPath: '.agents/skills',
325
+ configPathDisplay: '.codex/config.toml',
326
+ configFormat: 'toml',
327
+ bodyPath: 'mcp_servers',
328
+ getConfigPath: (p) => path.join(p, '.codex', 'config.toml'),
329
+ getStdioProps: (serverPath, port, timeout, auth, _token) => ({
330
+ enabled: true,
331
+ command: serverPath,
332
+ args: [
333
+ `port=${port}`,
334
+ `plugin-timeout=${timeout}`,
335
+ `client-transport=stdio`,
336
+ `authorization=${auth}`,
337
+ ],
338
+ tool_timeout_sec: 300,
339
+ }),
340
+ getHttpProps: (url, _token, _authRequired) => ({
341
+ enabled: true,
342
+ url,
343
+ tool_timeout_sec: 300,
344
+ startup_timeout_sec: 30,
345
+ }),
346
+ stdioRemoveKeys: ['url', 'type', 'startup_timeout_sec'],
347
+ httpRemoveKeys: ['command', 'args', 'type'],
348
+ },
349
+ // ── Kilo Code ───────────────────────────────────────────────
350
+ {
351
+ id: 'kilo-code',
352
+ name: 'Kilo Code',
353
+ skillsPath: '.kilocode/skills',
354
+ configPathDisplay: '.kilocode/mcp.json',
355
+ configFormat: 'json',
356
+ bodyPath: 'mcpServers',
357
+ getConfigPath: (p) => path.join(p, '.kilocode', 'mcp.json'),
358
+ getStdioProps: (serverPath, port, timeout, auth, token) => ({
359
+ type: 'stdio',
360
+ disabled: false,
361
+ command: serverPath,
362
+ args: stdioArgs(port, timeout, auth, token),
363
+ }),
364
+ getHttpProps: (url, token, authRequired) => ({
365
+ type: 'streamable-http',
366
+ disabled: false,
367
+ url,
368
+ ...(authHeaders(token, authRequired)
369
+ ? { headers: authHeaders(token, authRequired) }
370
+ : {}),
371
+ }),
372
+ stdioRemoveKeys: ['url'],
373
+ httpRemoveKeys: ['command', 'args'],
374
+ },
375
+ // ── Unity AI ────────────────────────────────────────────────
376
+ {
377
+ id: 'unity-ai',
378
+ name: 'Unity AI',
379
+ skillsPath: null,
380
+ configPathDisplay: 'UserSettings/mcp.json',
381
+ configFormat: 'json',
382
+ bodyPath: 'mcpServers',
383
+ getConfigPath: (p) => path.join(p, 'UserSettings', 'mcp.json'),
384
+ getStdioProps: (serverPath, port, timeout, auth, token) => ({
385
+ type: 'stdio',
386
+ command: serverPath,
387
+ args: stdioArgs(port, timeout, auth, token),
388
+ }),
389
+ getHttpProps: (url, token, authRequired) => ({
390
+ type: 'http',
391
+ url,
392
+ ...(authHeaders(token, authRequired)
393
+ ? { headers: authHeaders(token, authRequired) }
394
+ : {}),
395
+ }),
396
+ stdioRemoveKeys: ['url'],
397
+ httpRemoveKeys: ['command', 'args'],
398
+ },
399
+ ];
400
+ // ---------------------------------------------------------------------------
401
+ // Lookup helpers
402
+ // ---------------------------------------------------------------------------
403
+ export function getAgentById(id) {
404
+ return agentRegistry.find((a) => a.id === id);
405
+ }
406
+ export function getAgentIds() {
407
+ return agentRegistry.map((a) => a.id);
408
+ }
409
+ export function listAgentTable(heading, locationLabel, locationFn) {
410
+ const sorted = [...agentRegistry].sort((a, b) => a.id.localeCompare(b.id));
411
+ const colId = 'ID';
412
+ const colLoc = locationLabel;
413
+ const wId = Math.max(colId.length, ...sorted.map((a) => a.id.length));
414
+ const wLoc = Math.max(colLoc.length, ...sorted.map((a) => locationFn(a).length));
415
+ const sep = chalk.dim;
416
+ const hBar = (w) => '\u2500'.repeat(w);
417
+ console.log(`\n${chalk.bold.cyan(heading)}\n`);
418
+ // Header
419
+ console.log(sep(' \u250C\u2500') + sep(hBar(wId)) + sep('\u2500\u252C\u2500') + sep(hBar(wLoc)) + sep('\u2500\u2510'));
420
+ console.log(sep(' \u2502 ') + chalk.bold.white(colId.padEnd(wId)) + sep(' \u2502 ') + chalk.bold.white(colLoc.padEnd(wLoc)) + sep(' \u2502'));
421
+ console.log(sep(' \u251C\u2500') + sep(hBar(wId)) + sep('\u2500\u253C\u2500') + sep(hBar(wLoc)) + sep('\u2500\u2524'));
422
+ // Rows
423
+ for (const agent of sorted) {
424
+ const loc = locationFn(agent);
425
+ console.log(sep(' \u2502 ') + chalk.yellow(agent.id.padEnd(wId)) + sep(' \u2502 ') + chalk.green(loc.padEnd(wLoc)) + sep(' \u2502'));
426
+ }
427
+ // Footer
428
+ console.log(sep(' \u2514\u2500') + sep(hBar(wId)) + sep('\u2500\u2534\u2500') + sep(hBar(wLoc)) + sep('\u2500\u2518'));
429
+ console.log('');
430
+ }
431
+ // ---------------------------------------------------------------------------
432
+ // Server binary path resolution
433
+ // ---------------------------------------------------------------------------
434
+ export function resolveServerBinaryPath(projectPath) {
435
+ const platform = resolveServerPlatform();
436
+ const ext = isWindows() ? '.exe' : '';
437
+ return path.join(projectPath, 'Library', 'mcp-server', platform, `unity-mcp-server${ext}`);
438
+ }
439
+ function resolveServerPlatform() {
440
+ const p = process.platform;
441
+ const a = process.arch;
442
+ if (p === 'win32')
443
+ return 'win-x64';
444
+ if (p === 'darwin')
445
+ return a === 'arm64' ? 'osx-arm64' : 'osx-x64';
446
+ return 'linux-x64';
447
+ }
448
+ // ---------------------------------------------------------------------------
449
+ // Config file writing — JSON
450
+ // ---------------------------------------------------------------------------
451
+ export function writeJsonAgentConfig(configPath, bodyPath, serverName, props, removeKeys) {
452
+ const dir = path.dirname(configPath);
453
+ if (!fs.existsSync(dir)) {
454
+ fs.mkdirSync(dir, { recursive: true });
455
+ }
456
+ let root = {};
457
+ if (fs.existsSync(configPath)) {
458
+ try {
459
+ root = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
460
+ }
461
+ catch {
462
+ // If the file is malformed, start fresh
463
+ root = {};
464
+ }
465
+ if (!root || typeof root !== 'object' || Array.isArray(root)) {
466
+ root = {};
467
+ }
468
+ }
469
+ // Navigate/create bodyPath
470
+ let body = root[bodyPath];
471
+ if (!body || typeof body !== 'object' || Array.isArray(body)) {
472
+ body = {};
473
+ root[bodyPath] = body;
474
+ }
475
+ // Remove deprecated "Unity-MCP" entries
476
+ delete body['Unity-MCP'];
477
+ // Get or create the server entry
478
+ let entry = body[serverName];
479
+ if (!entry || typeof entry !== 'object' || Array.isArray(entry)) {
480
+ entry = {};
481
+ }
482
+ // Remove stale keys
483
+ for (const key of removeKeys) {
484
+ delete entry[key];
485
+ }
486
+ // Merge new properties
487
+ for (const [key, value] of Object.entries(props)) {
488
+ entry[key] = value;
489
+ }
490
+ body[serverName] = entry;
491
+ root[bodyPath] = body;
492
+ fs.writeFileSync(configPath, JSON.stringify(root, null, 2) + '\n');
493
+ }
494
+ // ---------------------------------------------------------------------------
495
+ // Config file writing — TOML (Codex only)
496
+ // ---------------------------------------------------------------------------
497
+ export function writeTomlAgentConfig(configPath, bodyPath, serverName, props, removeKeys) {
498
+ const dir = path.dirname(configPath);
499
+ if (!fs.existsSync(dir)) {
500
+ fs.mkdirSync(dir, { recursive: true });
501
+ }
502
+ // Read existing content or start fresh
503
+ let lines = [];
504
+ if (fs.existsSync(configPath)) {
505
+ lines = fs.readFileSync(configPath, 'utf-8').split('\n');
506
+ }
507
+ const sectionHeader = `[${bodyPath}.${serverName}]`;
508
+ // Find existing section boundaries
509
+ const sectionIdx = lines.findIndex((l) => l.trim() === sectionHeader);
510
+ // Build TOML key-value pairs for the section
511
+ const tomlLines = [sectionHeader];
512
+ for (const [key, value] of Object.entries(props)) {
513
+ if (removeKeys.includes(key))
514
+ continue;
515
+ tomlLines.push(`${key} = ${tomlValue(value)}`);
516
+ }
517
+ if (sectionIdx >= 0) {
518
+ // Find end of section (next [...] header or EOF)
519
+ let endIdx = sectionIdx + 1;
520
+ while (endIdx < lines.length && !lines[endIdx].trim().startsWith('[')) {
521
+ endIdx++;
522
+ }
523
+ // Replace section
524
+ lines.splice(sectionIdx, endIdx - sectionIdx, ...tomlLines);
525
+ }
526
+ else {
527
+ // Append section
528
+ if (lines.length > 0 && lines[lines.length - 1].trim() !== '') {
529
+ lines.push('');
530
+ }
531
+ lines.push(...tomlLines);
532
+ }
533
+ fs.writeFileSync(configPath, lines.join('\n') + '\n');
534
+ }
535
+ function tomlValue(v) {
536
+ if (typeof v === 'string')
537
+ return `"${v.replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"`;
538
+ if (typeof v === 'number' || typeof v === 'boolean')
539
+ return String(v);
540
+ if (Array.isArray(v)) {
541
+ return `[${v.map(tomlValue).join(', ')}]`;
542
+ }
543
+ return String(v);
544
+ }
545
+ export { MCP_SERVER_NAME };
546
+ //# sourceMappingURL=agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/utils/agents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ export interface ConnectionOptions {
2
+ path?: string;
3
+ url?: string;
4
+ token?: string;
5
+ }
6
+ /**
7
+ * Returns true if the given directory looks like a Unity project (has an Assets subfolder).
8
+ */
9
+ export declare function isUnityProject(dir: string): boolean;
10
+ /**
11
+ * Resolve the project path from positional arg, --path option, or cwd.
12
+ */
13
+ export declare function resolveProjectPath(positionalPath: string | undefined, options: ConnectionOptions): string;
14
+ /**
15
+ * Resolve the project path and validate it is a Unity project.
16
+ * Skips validation when --url is provided (explicit server override).
17
+ */
18
+ export declare function resolveAndValidateProjectPath(positionalPath: string | undefined, options: ConnectionOptions): string;
19
+ /**
20
+ * Resolve the server URL and auth token.
21
+ *
22
+ * URL priority:
23
+ * 1. --url flag (explicit override)
24
+ * 2. Config file connectionMode → Custom: host, Cloud: hardcoded cloud URL
25
+ * 3. Deterministic port from project path
26
+ *
27
+ * Token priority:
28
+ * 1. --token flag (explicit override)
29
+ * 2. Config file token
30
+ */
31
+ export declare function resolveConnection(projectPath: string, options: ConnectionOptions): {
32
+ url: string;
33
+ token: string | undefined;
34
+ };