unity-mcp-cli 0.55.1 → 0.57.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 +110 -42
- package/bin/unity-mcp-cli.js +0 -0
- package/dist/commands/run-system-tool.d.ts +2 -0
- package/dist/commands/run-system-tool.js +132 -0
- package/dist/commands/run-system-tool.js.map +1 -0
- package/dist/commands/run-tool.js +36 -84
- package/dist/commands/run-tool.js.map +1 -1
- package/dist/commands/setup-mcp.d.ts +2 -0
- package/dist/commands/setup-mcp.js +119 -0
- package/dist/commands/setup-mcp.js.map +1 -0
- package/dist/commands/setup-skills.d.ts +2 -0
- package/dist/commands/setup-skills.js +113 -0
- package/dist/commands/setup-skills.js.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/agents.d.ts +22 -0
- package/dist/utils/agents.js +546 -0
- package/dist/utils/agents.js.map +1 -0
- package/dist/utils/config.d.ts +4 -3
- package/dist/utils/config.js +5 -8
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/connection.d.ts +34 -0
- package/dist/utils/connection.js +77 -0
- package/dist/utils/connection.js.map +1 -0
- package/dist/utils/input.d.ts +13 -0
- package/dist/utils/input.js +72 -0
- package/dist/utils/input.js.map +1 -0
- package/dist/utils/json-parse.d.ts +36 -0
- package/dist/utils/json-parse.js +103 -0
- package/dist/utils/json-parse.js.map +1 -0
- package/dist/utils/port.d.ts +1 -1
- package/dist/utils/port.js +3 -3
- package/dist/utils/unity-editor.d.ts +9 -0
- package/dist/utils/unity-editor.js +23 -6
- package/dist/utils/unity-editor.js.map +1 -1
- package/dist/utils/unity-hub.d.ts +9 -0
- package/dist/utils/unity-hub.js +25 -7
- package/dist/utils/unity-hub.js.map +1 -1
- package/docs/README.es.md +208 -100
- package/docs/README.ja.md +206 -98
- package/docs/README.zh-CN.md +205 -97
- package/package.json +13 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-tool.js","sourceRoot":"","sources":["../../src/commands/run-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"run-tool.js","sourceRoot":"","sources":["../../src/commands/run-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import * as fs from 'fs';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
import * as ui from '../utils/ui.js';
|
|
5
|
+
import { verbose } from '../utils/ui.js';
|
|
6
|
+
import { generatePortFromDirectory } from '../utils/port.js';
|
|
7
|
+
import { readConfig, resolveConnectionFromConfig } from '../utils/config.js';
|
|
8
|
+
import { getAgentById, getAgentIds, listAgentTable, resolveServerBinaryPath, writeJsonAgentConfig, writeTomlAgentConfig, MCP_SERVER_NAME, } from '../utils/agents.js';
|
|
9
|
+
function listAgents() {
|
|
10
|
+
listAgentTable('Available AI Agents', 'Config Path', (a) => a.configPathDisplay);
|
|
11
|
+
}
|
|
12
|
+
export const setupMcpCommand = new Command('setup-mcp')
|
|
13
|
+
.description('Write MCP config for an AI agent')
|
|
14
|
+
.argument('[agent-id]', 'Agent to configure (use --list to see all)')
|
|
15
|
+
.argument('[path]', 'Unity project path (defaults to cwd)')
|
|
16
|
+
.option('--transport <transport>', 'Transport method: stdio or http (default: http)', 'http')
|
|
17
|
+
.option('--url <url>', 'Server URL override (for http transport)')
|
|
18
|
+
.option('--token <token>', 'Auth token override')
|
|
19
|
+
.option('--list', 'List all available agent IDs')
|
|
20
|
+
.action(async (agentId, positionalPath, options) => {
|
|
21
|
+
if (options.list) {
|
|
22
|
+
listAgents();
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (!agentId) {
|
|
26
|
+
ui.error('Missing required argument: agent-id');
|
|
27
|
+
ui.info(`Available agent IDs: ${getAgentIds().join(', ')}`);
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
const agent = getAgentById(agentId);
|
|
31
|
+
if (!agent) {
|
|
32
|
+
ui.error(`Unknown agent: "${agentId}"`);
|
|
33
|
+
ui.info(`Available agent IDs: ${getAgentIds().join(', ')}`);
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
const transport = options.transport ?? 'http';
|
|
37
|
+
if (transport !== 'stdio' && transport !== 'http') {
|
|
38
|
+
ui.error(`Invalid transport: "${transport}". Must be "stdio" or "http".`);
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
// Resolve project path
|
|
42
|
+
const projectPath = path.resolve(positionalPath ?? process.cwd());
|
|
43
|
+
if (positionalPath && !fs.existsSync(projectPath)) {
|
|
44
|
+
ui.error(`Project path does not exist: ${projectPath}`);
|
|
45
|
+
process.exit(1);
|
|
46
|
+
}
|
|
47
|
+
verbose(`Project path: ${projectPath}`);
|
|
48
|
+
// Read project config for port, timeout, auth, token
|
|
49
|
+
const config = readConfig(projectPath);
|
|
50
|
+
const fromConfig = config
|
|
51
|
+
? resolveConnectionFromConfig(config)
|
|
52
|
+
: { url: undefined, token: undefined };
|
|
53
|
+
const port = (() => {
|
|
54
|
+
if (!config?.host)
|
|
55
|
+
return generatePortFromDirectory(projectPath);
|
|
56
|
+
try {
|
|
57
|
+
return parseInt(new URL(config.host).port, 10) || generatePortFromDirectory(projectPath);
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return generatePortFromDirectory(projectPath);
|
|
61
|
+
}
|
|
62
|
+
})();
|
|
63
|
+
const timeout = config?.timeoutMs ?? 10000;
|
|
64
|
+
const auth = config?.authOption ?? 'none';
|
|
65
|
+
const token = options.token ?? fromConfig.token ?? '';
|
|
66
|
+
const authRequired = auth === 'required';
|
|
67
|
+
// Resolve server binary path
|
|
68
|
+
const serverPath = resolveServerBinaryPath(projectPath).replace(/\\/g, '/');
|
|
69
|
+
verbose(`Server binary: ${serverPath}`);
|
|
70
|
+
// Resolve URL for HTTP
|
|
71
|
+
let serverUrl;
|
|
72
|
+
if (options.url) {
|
|
73
|
+
serverUrl = options.url.replace(/\/$/, '');
|
|
74
|
+
}
|
|
75
|
+
else if (fromConfig.url) {
|
|
76
|
+
serverUrl = fromConfig.url.replace(/\/$/, '');
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
serverUrl = `http://localhost:${port}`;
|
|
80
|
+
}
|
|
81
|
+
// Get config path and build properties
|
|
82
|
+
const configPath = agent.getConfigPath(projectPath);
|
|
83
|
+
verbose(`Config file: ${configPath}`);
|
|
84
|
+
let props;
|
|
85
|
+
let removeKeys;
|
|
86
|
+
if (transport === 'stdio') {
|
|
87
|
+
props = agent.getStdioProps(serverPath, port, timeout, auth, token);
|
|
88
|
+
removeKeys = agent.stdioRemoveKeys;
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
props = agent.getHttpProps(serverUrl, token, authRequired);
|
|
92
|
+
removeKeys = agent.httpRemoveKeys;
|
|
93
|
+
}
|
|
94
|
+
// Write config
|
|
95
|
+
const spinner = ui.startSpinner(`Configuring ${agent.name} (${transport})...`);
|
|
96
|
+
try {
|
|
97
|
+
if (agent.configFormat === 'toml') {
|
|
98
|
+
writeTomlAgentConfig(configPath, agent.bodyPath, MCP_SERVER_NAME, props, removeKeys);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
writeJsonAgentConfig(configPath, agent.bodyPath, MCP_SERVER_NAME, props, removeKeys);
|
|
102
|
+
}
|
|
103
|
+
spinner.success(`${agent.name} configured successfully`);
|
|
104
|
+
console.log('');
|
|
105
|
+
ui.label('Config file', configPath);
|
|
106
|
+
ui.label('Transport', transport);
|
|
107
|
+
ui.label('Server name', MCP_SERVER_NAME);
|
|
108
|
+
if (transport === 'stdio' && !fs.existsSync(serverPath.replace(/\//g, path.sep))) {
|
|
109
|
+
console.log('');
|
|
110
|
+
ui.warn('Server binary not found. Open Unity with the MCP plugin to download it automatically.');
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
spinner.error('Failed to write config');
|
|
115
|
+
ui.error(err instanceof Error ? err.message : String(err));
|
|
116
|
+
process.exit(1);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
//# sourceMappingURL=setup-mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-mcp.js","sourceRoot":"","sources":["../../src/commands/setup-mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,113 @@
|
|
|
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
|
+
function listAgentsWithSkills() {
|
|
8
|
+
listAgentTable('AI Agents \u2014 Skills Support', 'Skills Path', (a) => a.skillsPath ?? '\u2014');
|
|
9
|
+
}
|
|
10
|
+
export const setupSkillsCommand = new Command('setup-skills')
|
|
11
|
+
.description('Generate skill files for an AI agent')
|
|
12
|
+
.argument('[agent-id]', 'Agent to generate skills for (use --list to see all)')
|
|
13
|
+
.argument('[path]', 'Unity project path (defaults to cwd)')
|
|
14
|
+
.option('--url <url>', 'Server URL override')
|
|
15
|
+
.option('--token <token>', 'Auth token override')
|
|
16
|
+
.option('--list', 'List all agents with skills support status')
|
|
17
|
+
.option('--timeout <ms>', 'Request timeout in milliseconds (default: 60000)', '60000')
|
|
18
|
+
.action(async (agentId, positionalPath, options) => {
|
|
19
|
+
if (options.list) {
|
|
20
|
+
listAgentsWithSkills();
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
if (!agentId) {
|
|
24
|
+
ui.error('Missing required argument: agent-id');
|
|
25
|
+
ui.info(`Available agent IDs: ${getAgentIds().join(', ')}`);
|
|
26
|
+
process.exit(1);
|
|
27
|
+
}
|
|
28
|
+
const agent = getAgentById(agentId);
|
|
29
|
+
if (!agent) {
|
|
30
|
+
ui.error(`Unknown agent: "${agentId}"`);
|
|
31
|
+
ui.info(`Available agent IDs: ${getAgentIds().join(', ')}`);
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
if (!agent.skillsPath) {
|
|
35
|
+
ui.error(`Agent "${agent.name}" does not support skills.`);
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
// Resolve project path and validate it is a Unity project
|
|
39
|
+
const projectPath = resolveAndValidateProjectPath(positionalPath, options);
|
|
40
|
+
verbose(`Project path: ${projectPath}`);
|
|
41
|
+
// Resolve skills path (absolute)
|
|
42
|
+
const skillsPath = path.join(projectPath, agent.skillsPath);
|
|
43
|
+
verbose(`Skills path: ${skillsPath}`);
|
|
44
|
+
// Resolve server connection
|
|
45
|
+
const { url: serverUrl, token } = resolveConnection(projectPath, options);
|
|
46
|
+
// Call the MCP server to generate skills
|
|
47
|
+
const endpoint = `${serverUrl}/api/system-tools/unity-skill-generate`;
|
|
48
|
+
verbose(`Endpoint: ${endpoint}`);
|
|
49
|
+
const headers = {
|
|
50
|
+
'Content-Type': 'application/json',
|
|
51
|
+
};
|
|
52
|
+
if (token) {
|
|
53
|
+
headers['Authorization'] = `Bearer ${token}`;
|
|
54
|
+
}
|
|
55
|
+
const body = JSON.stringify({ path: skillsPath });
|
|
56
|
+
ui.heading('Generate Skills');
|
|
57
|
+
ui.label('Agent', agent.name);
|
|
58
|
+
ui.label('Skills path', skillsPath);
|
|
59
|
+
ui.label('Server', serverUrl);
|
|
60
|
+
ui.divider();
|
|
61
|
+
const timeoutMs = parseInt(options.timeout ?? '60000', 10);
|
|
62
|
+
if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {
|
|
63
|
+
ui.error(`Invalid timeout value: "${options.timeout}". Must be a positive integer (milliseconds).`);
|
|
64
|
+
process.exit(1);
|
|
65
|
+
}
|
|
66
|
+
const spinner = ui.startSpinner(`Generating skills for ${agent.name}...`);
|
|
67
|
+
const controller = new AbortController();
|
|
68
|
+
const fetchTimeout = setTimeout(() => controller.abort(), timeoutMs);
|
|
69
|
+
try {
|
|
70
|
+
const response = await fetch(endpoint, {
|
|
71
|
+
method: 'POST',
|
|
72
|
+
headers,
|
|
73
|
+
body,
|
|
74
|
+
signal: controller.signal,
|
|
75
|
+
});
|
|
76
|
+
if (!response.ok) {
|
|
77
|
+
spinner.stop();
|
|
78
|
+
const text = await response.text();
|
|
79
|
+
if (response.status === 404) {
|
|
80
|
+
ui.error('The unity-skill-generate tool is not yet available. Please update the Unity-MCP plugin to the latest version.');
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
ui.error(`HTTP ${response.status}: ${response.statusText}`);
|
|
84
|
+
if (text) {
|
|
85
|
+
ui.info(text);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
process.exit(1);
|
|
89
|
+
}
|
|
90
|
+
spinner.success(`Skills generated for ${agent.name}`);
|
|
91
|
+
ui.label('Output path', skillsPath);
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
spinner.stop();
|
|
95
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
96
|
+
const isTimeout = err instanceof Error && err.name === 'AbortError';
|
|
97
|
+
const isConnectionRefused = message.includes('ECONNREFUSED') || message.includes('fetch failed');
|
|
98
|
+
if (isTimeout) {
|
|
99
|
+
ui.error(`Request timed out after ${timeoutMs / 1000} seconds.`);
|
|
100
|
+
}
|
|
101
|
+
else if (isConnectionRefused) {
|
|
102
|
+
ui.error('MCP Server is not running. Please start Unity Editor with the Unity-MCP plugin installed, then retry.');
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
ui.error(`Failed to generate skills: ${message}`);
|
|
106
|
+
}
|
|
107
|
+
process.exit(1);
|
|
108
|
+
}
|
|
109
|
+
finally {
|
|
110
|
+
clearTimeout(fetchTimeout);
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
//# sourceMappingURL=setup-skills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-skills.js","sourceRoot":"","sources":["../../src/commands/setup-skills.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,9 @@ import { installPluginCommand } from './commands/install-plugin.js';
|
|
|
7
7
|
import { configureCommand } from './commands/configure.js';
|
|
8
8
|
import { removePluginCommand } from './commands/remove-plugin.js';
|
|
9
9
|
import { runToolCommand } from './commands/run-tool.js';
|
|
10
|
+
import { runSystemToolCommand } from './commands/run-system-tool.js';
|
|
11
|
+
import { setupMcpCommand } from './commands/setup-mcp.js';
|
|
12
|
+
import { setupSkillsCommand } from './commands/setup-skills.js';
|
|
10
13
|
import { configureStyledHelp, error as uiError, setVerbose } from './utils/ui.js';
|
|
11
14
|
const require = createRequire(import.meta.url);
|
|
12
15
|
const pkg = require('../package.json');
|
|
@@ -25,6 +28,9 @@ const subcommands = [
|
|
|
25
28
|
openCommand,
|
|
26
29
|
removePluginCommand,
|
|
27
30
|
runToolCommand,
|
|
31
|
+
runSystemToolCommand,
|
|
32
|
+
setupMcpCommand,
|
|
33
|
+
setupSkillsCommand,
|
|
28
34
|
];
|
|
29
35
|
for (const cmd of subcommands) {
|
|
30
36
|
cmd.option('-v, --verbose', 'Enable verbose diagnostic output');
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,KAAK,IAAI,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAElF,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAE9D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,eAAe,CAAC;KACrB,WAAW,CAAC,kDAAkD,CAAC;KAC/D,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;KACpB,MAAM,CAAC,eAAe,EAAE,kCAAkC,CAAC,CAAC;AAE/D,2BAA2B;AAC3B,MAAM,WAAW,GAAG;IAClB,gBAAgB;IAChB,oBAAoB;IACpB,oBAAoB;IACpB,mBAAmB;IACnB,WAAW;IACX,mBAAmB;IACnB,cAAc;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,KAAK,IAAI,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAElF,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAE9D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,eAAe,CAAC;KACrB,WAAW,CAAC,kDAAkD,CAAC;KAC/D,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;KACpB,MAAM,CAAC,eAAe,EAAE,kCAAkC,CAAC,CAAC;AAE/D,2BAA2B;AAC3B,MAAM,WAAW,GAAG;IAClB,gBAAgB;IAChB,oBAAoB;IACpB,oBAAoB;IACpB,mBAAmB;IACnB,WAAW;IACX,mBAAmB;IACnB,cAAc;IACd,oBAAoB;IACpB,eAAe;IACf,kBAAkB;CACnB,CAAC;AAEF,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;IAC9B,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,kCAAkC,CAAC,CAAC;IAChE,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACzB,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED,2EAA2E;AAC3E,mBAAmB,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AAE1C,gDAAgD;AAChD,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,EAAE;IACxD,MAAM,IAAI,GAAG,aAAa,CAAC,eAAe,EAA2B,CAAC;IACtE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,UAAU,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,qCAAqC;AACrC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;IAClB,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACjC,OAAO,CAAE,GAAa,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface AgentDefinition {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
skillsPath: string | null;
|
|
5
|
+
configPathDisplay: string;
|
|
6
|
+
configFormat: 'json' | 'toml';
|
|
7
|
+
bodyPath: string;
|
|
8
|
+
getConfigPath(projectPath: string): string;
|
|
9
|
+
getStdioProps(serverPath: string, port: number, timeout: number, auth: string, token: string): Record<string, unknown>;
|
|
10
|
+
getHttpProps(url: string, token: string, authRequired: boolean): Record<string, unknown>;
|
|
11
|
+
stdioRemoveKeys: string[];
|
|
12
|
+
httpRemoveKeys: string[];
|
|
13
|
+
}
|
|
14
|
+
declare const MCP_SERVER_NAME = "ai-game-developer";
|
|
15
|
+
export declare const agentRegistry: readonly AgentDefinition[];
|
|
16
|
+
export declare function getAgentById(id: string): AgentDefinition | undefined;
|
|
17
|
+
export declare function getAgentIds(): string[];
|
|
18
|
+
export declare function listAgentTable(heading: string, locationLabel: string, locationFn: (agent: AgentDefinition) => string): void;
|
|
19
|
+
export declare function resolveServerBinaryPath(projectPath: string): string;
|
|
20
|
+
export declare function writeJsonAgentConfig(configPath: string, bodyPath: string, serverName: string, props: Record<string, unknown>, removeKeys: string[]): void;
|
|
21
|
+
export declare function writeTomlAgentConfig(configPath: string, bodyPath: string, serverName: string, props: Record<string, unknown>, removeKeys: string[]): void;
|
|
22
|
+
export { MCP_SERVER_NAME };
|