thatgfsj-code 3.0.4 → 3.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +64 -21
- package/dist/app/index.d.ts +93 -22
- package/dist/app/index.d.ts.map +1 -1
- package/dist/app/index.js +232 -40
- package/dist/app/index.js.map +1 -1
- package/dist/cmd/index.d.ts +12 -20
- package/dist/cmd/index.d.ts.map +1 -1
- package/dist/cmd/index.js +192 -146
- package/dist/cmd/index.js.map +1 -1
- package/dist/config/index.d.ts +4 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +5 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/types.d.ts +5 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/llm/anthropic.d.ts +1 -1
- package/dist/llm/anthropic.d.ts.map +1 -1
- package/dist/llm/anthropic.js +116 -84
- package/dist/llm/anthropic.js.map +1 -1
- package/dist/llm/gemini.d.ts +27 -3
- package/dist/llm/gemini.d.ts.map +1 -1
- package/dist/llm/gemini.js +196 -73
- package/dist/llm/gemini.js.map +1 -1
- package/dist/llm/index.d.ts +20 -1
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/index.js +66 -6
- package/dist/llm/index.js.map +1 -1
- package/dist/llm/openai.d.ts +5 -1
- package/dist/llm/openai.d.ts.map +1 -1
- package/dist/llm/openai.js +126 -66
- package/dist/llm/openai.js.map +1 -1
- package/dist/mcp/client.d.ts +84 -34
- package/dist/mcp/client.d.ts.map +1 -1
- package/dist/mcp/client.js +291 -126
- package/dist/mcp/client.js.map +1 -1
- package/dist/session/compactor.d.ts +27 -7
- package/dist/session/compactor.d.ts.map +1 -1
- package/dist/session/compactor.js +78 -23
- package/dist/session/compactor.js.map +1 -1
- package/dist/session/index.d.ts +96 -33
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +278 -60
- package/dist/session/index.js.map +1 -1
- package/dist/tools/file.d.ts +10 -2
- package/dist/tools/file.d.ts.map +1 -1
- package/dist/tools/file.js +54 -5
- package/dist/tools/file.js.map +1 -1
- package/dist/tools/git.d.ts +16 -2
- package/dist/tools/git.d.ts.map +1 -1
- package/dist/tools/git.js +61 -18
- package/dist/tools/git.js.map +1 -1
- package/dist/tools/nwt.d.ts.map +1 -1
- package/dist/tools/nwt.js +8 -1
- package/dist/tools/nwt.js.map +1 -1
- package/dist/tools/search.d.ts +8 -1
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +105 -34
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/shell.d.ts +0 -4
- package/dist/tools/shell.d.ts.map +1 -1
- package/dist/tools/shell.js +11 -26
- package/dist/tools/shell.js.map +1 -1
- package/dist/tools/types.d.ts +7 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/types.js.map +1 -1
- package/dist/tui/app.d.ts.map +1 -1
- package/dist/tui/app.js +90 -18
- package/dist/tui/app.js.map +1 -1
- package/dist/tui/components/ChatMessage.d.ts.map +1 -1
- package/dist/tui/components/ChatMessage.js +9 -2
- package/dist/tui/components/ChatMessage.js.map +1 -1
- package/dist/tui/components/ConfirmPrompt.d.ts +21 -0
- package/dist/tui/components/ConfirmPrompt.d.ts.map +1 -0
- package/dist/tui/components/ConfirmPrompt.js +45 -0
- package/dist/tui/components/ConfirmPrompt.js.map +1 -0
- package/dist/tui/components/Header.d.ts +10 -5
- package/dist/tui/components/Header.d.ts.map +1 -1
- package/dist/tui/components/Header.js +13 -5
- package/dist/tui/components/Header.js.map +1 -1
- package/dist/tui/components/StatusBar.d.ts +7 -0
- package/dist/tui/components/StatusBar.d.ts.map +1 -1
- package/dist/tui/components/StatusBar.js +8 -3
- package/dist/tui/components/StatusBar.js.map +1 -1
- package/dist/tui/components/Thinking.d.ts +5 -0
- package/dist/tui/components/Thinking.d.ts.map +1 -1
- package/dist/tui/components/Thinking.js +24 -2
- package/dist/tui/components/Thinking.js.map +1 -1
- package/dist/tui/components/ToolCall.d.ts +6 -1
- package/dist/tui/components/ToolCall.d.ts.map +1 -1
- package/dist/tui/components/ToolCall.js +50 -22
- package/dist/tui/components/ToolCall.js.map +1 -1
- package/dist/tui/components/UserInput.d.ts +5 -0
- package/dist/tui/components/UserInput.d.ts.map +1 -1
- package/dist/tui/components/UserInput.js +9 -13
- package/dist/tui/components/UserInput.js.map +1 -1
- package/dist/tui/hooks/useChat.d.ts +1 -0
- package/dist/tui/hooks/useChat.d.ts.map +1 -1
- package/dist/tui/hooks/useChat.js +36 -16
- package/dist/tui/hooks/useChat.js.map +1 -1
- package/dist/tui/hooks/useCommands.d.ts +7 -1
- package/dist/tui/hooks/useCommands.d.ts.map +1 -1
- package/dist/tui/hooks/useCommands.js +77 -41
- package/dist/tui/hooks/useCommands.js.map +1 -1
- package/dist/tui/theme.d.ts +34 -0
- package/dist/tui/theme.d.ts.map +1 -0
- package/dist/tui/theme.js +34 -0
- package/dist/tui/theme.js.map +1 -0
- package/dist/tui/welcome.d.ts.map +1 -1
- package/dist/tui/welcome.js +9 -7
- package/dist/tui/welcome.js.map +1 -1
- package/dist/types.d.ts +16 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/diff.d.ts +5 -0
- package/dist/utils/diff.d.ts.map +1 -1
- package/dist/utils/diff.js +15 -0
- package/dist/utils/diff.js.map +1 -1
- package/dist/version.d.ts +12 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +29 -0
- package/dist/version.js.map +1 -0
- package/package.json +19 -7
- package/CHANGELOG.md +0 -192
- package/DEVELOPMENT.md +0 -286
- package/ROADMAP.md +0 -91
- package/docs/API_KEY_GUIDE.md +0 -236
- package/docs/FAQ.md +0 -182
- package/install.bat +0 -63
- package/install.ps1 +0 -238
- package/install.sh +0 -113
- package/src/app/index.ts +0 -197
- package/src/cache/fingerprint.ts +0 -101
- package/src/cache/index.ts +0 -21
- package/src/cache/smartModel.ts +0 -133
- package/src/cache/stats.ts +0 -199
- package/src/cache/volatile.ts +0 -47
- package/src/cmd/index.tsx +0 -288
- package/src/config/index.ts +0 -156
- package/src/config/providers.ts +0 -234
- package/src/config/types.ts +0 -71
- package/src/hooks/index.ts +0 -111
- package/src/llm/anthropic.ts +0 -413
- package/src/llm/gemini.ts +0 -169
- package/src/llm/index.ts +0 -303
- package/src/llm/openai.ts +0 -243
- package/src/llm/provider.ts +0 -71
- package/src/mcp/client.ts +0 -330
- package/src/prompts/index.ts +0 -260
- package/src/session/compactor.ts +0 -103
- package/src/session/index.ts +0 -181
- package/src/session/message.ts +0 -42
- package/src/skills/brainstorming.ts +0 -43
- package/src/skills/code-review.ts +0 -45
- package/src/skills/executing-plans.ts +0 -27
- package/src/skills/frontend-design.ts +0 -35
- package/src/skills/git-workflow.ts +0 -36
- package/src/skills/improve-architecture.ts +0 -38
- package/src/skills/index.ts +0 -136
- package/src/skills/neuroweave.ts +0 -47
- package/src/skills/playwright.ts +0 -72
- package/src/skills/prototype.ts +0 -30
- package/src/skills/subagent.ts +0 -28
- package/src/skills/supabase.ts +0 -44
- package/src/skills/systematic-debugging.ts +0 -44
- package/src/skills/tdd.ts +0 -39
- package/src/skills/triage.ts +0 -35
- package/src/skills/verification.ts +0 -31
- package/src/skills/writing-plans.ts +0 -42
- package/src/tools/file.ts +0 -143
- package/src/tools/git.ts +0 -132
- package/src/tools/index.ts +0 -111
- package/src/tools/nwt.ts +0 -598
- package/src/tools/search.ts +0 -263
- package/src/tools/shell.ts +0 -136
- package/src/tools/types.ts +0 -122
- package/src/tui/app.tsx +0 -159
- package/src/tui/components/ChatList.tsx +0 -41
- package/src/tui/components/ChatMessage.tsx +0 -54
- package/src/tui/components/Header.tsx +0 -66
- package/src/tui/components/InitWizard.tsx +0 -247
- package/src/tui/components/Markdown.tsx +0 -35
- package/src/tui/components/ModelSelector.tsx +0 -107
- package/src/tui/components/StatusBar.tsx +0 -30
- package/src/tui/components/Thinking.tsx +0 -17
- package/src/tui/components/ToolCall.tsx +0 -102
- package/src/tui/components/UserInput.tsx +0 -151
- package/src/tui/hooks/useChat.ts +0 -287
- package/src/tui/hooks/useCommands.ts +0 -271
- package/src/tui/index.ts +0 -6
- package/src/tui/welcome.ts +0 -177
- package/src/types.ts +0 -104
- package/src/utils/diff.ts +0 -71
- package/src/utils/project.ts +0 -99
- package/src/utils/stableStringify.ts +0 -47
- package/src/utils/thinking.ts +0 -119
- package/tests/cache/fingerprint.test.ts +0 -75
- package/tests/cache/providerCatalog.test.ts +0 -31
- package/tests/cache/smartModel.test.ts +0 -100
- package/tests/cache/stableStringify.test.ts +0 -43
- package/tests/cache/stats.test.ts +0 -146
- package/tests/cache/volatile.test.ts +0 -75
- package/tests/smoke-pollution.mjs +0 -78
- package/tests/smoke-thinking.mjs +0 -110
- package/tests/smoke-tool-stream.mjs +0 -69
- package/tests/smoke-tool.mjs +0 -117
- package/tsconfig.json +0 -21
package/dist/mcp/client.js
CHANGED
|
@@ -1,11 +1,40 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* Connect to MCP servers and expose their tools as agent tools
|
|
2
|
+
* MCP Client (Model Context Protocol)
|
|
3
|
+
* Connect to MCP servers over stdio and expose their tools as agent tools.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* v3.0.5 — this module was previously dead code and is now wired into
|
|
6
|
+
* App.create(). Fixes applied while wiring it up:
|
|
7
|
+
*
|
|
8
|
+
* 1. Connection check: `process.connected` is undefined for stdio-spawned
|
|
9
|
+
* child processes (it only exists for Node IPC channels), so every
|
|
10
|
+
* request was rejected with "MCP process not connected". We now track
|
|
11
|
+
* our own `connected` flag set after a successful initialize handshake.
|
|
12
|
+
* 2. Tool naming: `server:tool` contains a colon, which violates the
|
|
13
|
+
* function-name grammar of all three provider APIs
|
|
14
|
+
* (^[a-zA-Z0-9_-]{1,64}$) — the very first request carrying an MCP
|
|
15
|
+
* tool would 400. Names are now `mcp__<server>__<tool>`.
|
|
16
|
+
* 3. Timer hygiene: the 30s connect timeout and per-request timeouts are
|
|
17
|
+
* now stored, cleared when satisfied, and .unref()'d so they never
|
|
18
|
+
* keep the event loop alive after the CLI work is done.
|
|
19
|
+
* 4. Schema mapping: `type` is passed through; array/enum details are
|
|
20
|
+
* folded into the parameter description (our flat ToolParameter shape
|
|
21
|
+
* cannot express JSON-Schema recursively). Nested object parameters
|
|
22
|
+
* are declared as JSON-string params and decoded before dispatch.
|
|
7
23
|
*/
|
|
8
24
|
import { spawn } from 'child_process';
|
|
25
|
+
const REQUEST_TIMEOUT_MS = 30000;
|
|
26
|
+
const CONNECT_TIMEOUT_MS = 30000;
|
|
27
|
+
/**
|
|
28
|
+
* Sanitize a server/tool name pair into a provider-safe tool name.
|
|
29
|
+
* All three provider APIs only allow [a-zA-Z0-9_-]; colons would 400.
|
|
30
|
+
*/
|
|
31
|
+
export function mcpToolName(server, tool) {
|
|
32
|
+
const s = server.replace(/[^a-zA-Z0-9_-]/g, '_');
|
|
33
|
+
const t = tool.replace(/[^a-zA-Z0-9_-]/g, '_');
|
|
34
|
+
const name = `mcp__${s}__${t}`;
|
|
35
|
+
// OpenAI caps function names at 64 chars.
|
|
36
|
+
return name.length <= 64 ? name : name.slice(0, 64);
|
|
37
|
+
}
|
|
9
38
|
// ==================== MCP Client ====================
|
|
10
39
|
export class MCPClient {
|
|
11
40
|
process = null;
|
|
@@ -14,75 +43,117 @@ export class MCPClient {
|
|
|
14
43
|
pendingRequests = new Map();
|
|
15
44
|
name;
|
|
16
45
|
connected = false;
|
|
46
|
+
connectTimer;
|
|
47
|
+
/** Original tool name keyed by sanitized name, for dispatch back to the server. */
|
|
48
|
+
nameMap = new Map();
|
|
17
49
|
constructor(name) {
|
|
18
50
|
this.name = name;
|
|
19
51
|
}
|
|
20
52
|
/**
|
|
21
|
-
*
|
|
53
|
+
* Connect to an MCP server over stdio.
|
|
22
54
|
* @param command Command to run (e.g., 'npx', 'node')
|
|
23
|
-
* @param args Arguments (e.g., ['-y', '@modelcontextprotocol/server-filesystem', '/path
|
|
55
|
+
* @param args Arguments (e.g., ['-y', '@modelcontextprotocol/server-filesystem', '/path'])
|
|
56
|
+
* @param env Extra environment variables for the child process
|
|
24
57
|
*/
|
|
25
|
-
async connect(command, args) {
|
|
58
|
+
async connect(command, args, env) {
|
|
26
59
|
return new Promise((resolve, reject) => {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
60
|
+
let settled = false;
|
|
61
|
+
const settle = (err) => {
|
|
62
|
+
if (settled)
|
|
63
|
+
return;
|
|
64
|
+
settled = true;
|
|
65
|
+
if (this.connectTimer) {
|
|
66
|
+
clearTimeout(this.connectTimer);
|
|
67
|
+
this.connectTimer = undefined;
|
|
68
|
+
}
|
|
69
|
+
if (err)
|
|
70
|
+
reject(err);
|
|
71
|
+
else
|
|
72
|
+
resolve();
|
|
73
|
+
};
|
|
74
|
+
this.connectTimer = setTimeout(() => {
|
|
75
|
+
settle(new Error(`MCP server "${this.name}" connection timeout (${CONNECT_TIMEOUT_MS / 1000}s)`));
|
|
76
|
+
}, CONNECT_TIMEOUT_MS);
|
|
77
|
+
this.connectTimer.unref?.();
|
|
78
|
+
let child;
|
|
79
|
+
try {
|
|
80
|
+
child = spawn(command, args, {
|
|
81
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
82
|
+
env: env ? { ...process.env, ...env } : process.env,
|
|
83
|
+
windowsHide: true,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
settle(new Error(`MCP server "${this.name}" failed to spawn ${command}: ${err.message}`));
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
this.process = child;
|
|
30
91
|
let buffer = '';
|
|
31
|
-
|
|
92
|
+
child.stdout?.on('data', (data) => {
|
|
32
93
|
buffer += data.toString();
|
|
33
94
|
const lines = buffer.split('\n');
|
|
34
95
|
buffer = lines.pop() || '';
|
|
35
96
|
for (const line of lines) {
|
|
36
|
-
if (line.trim())
|
|
97
|
+
if (line.trim())
|
|
37
98
|
this.handleMessage(line);
|
|
38
|
-
}
|
|
39
99
|
}
|
|
40
100
|
});
|
|
41
|
-
|
|
42
|
-
|
|
101
|
+
child.stderr?.on('data', (data) => {
|
|
102
|
+
// MCP servers commonly log to stderr; surface it without crashing.
|
|
103
|
+
process.stderr.write(`[mcp:${this.name}] ${data.toString().trim()}\n`);
|
|
43
104
|
});
|
|
44
|
-
|
|
45
|
-
|
|
105
|
+
child.on('error', (err) => {
|
|
106
|
+
this.connected = false;
|
|
107
|
+
settle(new Error(`MCP server "${this.name}" process error: ${err.message}`));
|
|
46
108
|
});
|
|
47
|
-
|
|
109
|
+
child.on('close', (code) => {
|
|
48
110
|
this.connected = false;
|
|
49
|
-
|
|
111
|
+
// Reject every in-flight request so callers never hang on a dead server.
|
|
112
|
+
for (const [, pending] of this.pendingRequests) {
|
|
113
|
+
if (pending.timer)
|
|
114
|
+
clearTimeout(pending.timer);
|
|
115
|
+
pending.reject(new Error(`MCP server "${this.name}" exited (code ${code})`));
|
|
116
|
+
}
|
|
117
|
+
this.pendingRequests.clear();
|
|
50
118
|
});
|
|
51
|
-
// Initialize
|
|
119
|
+
// Initialize handshake. Success gates `connected`, which gates every
|
|
120
|
+
// subsequent sendRequest.
|
|
52
121
|
this.sendRequest('initialize', {
|
|
53
122
|
protocolVersion: '2024-11-05',
|
|
54
123
|
capabilities: { tools: {} },
|
|
55
|
-
clientInfo: { name: 'thatgfsj-code', version: '
|
|
56
|
-
}).then(() => {
|
|
124
|
+
clientInfo: { name: 'thatgfsj-code', version: '3.0.5' },
|
|
125
|
+
}).then(async () => {
|
|
57
126
|
this.connected = true;
|
|
58
|
-
// Send initialized notification
|
|
59
127
|
this.sendNotification('initialized', {});
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
128
|
+
try {
|
|
129
|
+
await this.listTools();
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
// A server with zero tools is still a successful connection.
|
|
133
|
+
}
|
|
134
|
+
settle();
|
|
135
|
+
}).catch((err) => {
|
|
136
|
+
settle(err instanceof Error ? err : new Error(String(err)));
|
|
137
|
+
});
|
|
67
138
|
});
|
|
68
139
|
}
|
|
69
140
|
/**
|
|
70
|
-
*
|
|
141
|
+
* Handle incoming JSON-RPC message
|
|
71
142
|
*/
|
|
72
143
|
handleMessage(raw) {
|
|
73
144
|
try {
|
|
74
145
|
const msg = JSON.parse(raw);
|
|
75
|
-
// Handle response
|
|
76
146
|
const pending = this.pendingRequests.get(msg.id);
|
|
77
147
|
if (pending) {
|
|
78
148
|
this.pendingRequests.delete(msg.id);
|
|
149
|
+
if (pending.timer)
|
|
150
|
+
clearTimeout(pending.timer);
|
|
79
151
|
if (msg.error) {
|
|
80
152
|
pending.reject(new Error(msg.error.message));
|
|
81
153
|
}
|
|
82
154
|
else {
|
|
83
155
|
pending.resolve(msg.result);
|
|
84
156
|
}
|
|
85
|
-
return;
|
|
86
157
|
}
|
|
87
158
|
}
|
|
88
159
|
catch {
|
|
@@ -90,140 +161,243 @@ export class MCPClient {
|
|
|
90
161
|
}
|
|
91
162
|
}
|
|
92
163
|
/**
|
|
93
|
-
*
|
|
164
|
+
* Send a JSON-RPC request
|
|
94
165
|
*/
|
|
95
166
|
sendRequest(method, params) {
|
|
96
167
|
return new Promise((resolve, reject) => {
|
|
97
|
-
|
|
98
|
-
|
|
168
|
+
// v3.0.5: the old check read `this.process?.connected`, which is
|
|
169
|
+
// undefined for stdio spawns — every request failed. Gate on our own
|
|
170
|
+
// handshake flag instead (except for `initialize` itself, which runs
|
|
171
|
+
// before the flag is set).
|
|
172
|
+
if (!this.process || !this.process.stdin || (method !== 'initialize' && !this.connected)) {
|
|
173
|
+
reject(new Error(`MCP server "${this.name}" is not connected`));
|
|
99
174
|
return;
|
|
100
175
|
}
|
|
101
176
|
const id = ++this.requestId;
|
|
102
|
-
|
|
177
|
+
const timer = setTimeout(() => {
|
|
178
|
+
if (this.pendingRequests.has(id)) {
|
|
179
|
+
this.pendingRequests.delete(id);
|
|
180
|
+
reject(new Error(`MCP request timeout: ${method}`));
|
|
181
|
+
}
|
|
182
|
+
}, REQUEST_TIMEOUT_MS);
|
|
183
|
+
timer.unref?.();
|
|
184
|
+
this.pendingRequests.set(id, { resolve, reject, timer });
|
|
103
185
|
const request = {
|
|
104
186
|
jsonrpc: '2.0',
|
|
105
187
|
id,
|
|
106
188
|
method,
|
|
107
|
-
params
|
|
189
|
+
params,
|
|
108
190
|
};
|
|
109
|
-
this.process.stdin
|
|
110
|
-
|
|
111
|
-
setTimeout(() => {
|
|
112
|
-
if (this.pendingRequests.has(id)) {
|
|
191
|
+
this.process.stdin.write(JSON.stringify(request) + '\n', (err) => {
|
|
192
|
+
if (err) {
|
|
113
193
|
this.pendingRequests.delete(id);
|
|
114
|
-
|
|
194
|
+
if (timer)
|
|
195
|
+
clearTimeout(timer);
|
|
196
|
+
reject(new Error(`MCP write failed: ${err.message}`));
|
|
115
197
|
}
|
|
116
|
-
}
|
|
198
|
+
});
|
|
117
199
|
});
|
|
118
200
|
}
|
|
119
201
|
/**
|
|
120
|
-
*
|
|
202
|
+
* Send a notification (no response expected)
|
|
121
203
|
*/
|
|
122
204
|
sendNotification(method, params) {
|
|
123
|
-
if (!this.process
|
|
205
|
+
if (!this.process || !this.process.stdin || !this.connected)
|
|
124
206
|
return;
|
|
125
|
-
|
|
126
|
-
jsonrpc: '2.0',
|
|
127
|
-
method,
|
|
128
|
-
params
|
|
129
|
-
};
|
|
130
|
-
this.process.stdin?.write(JSON.stringify(notification) + '\n');
|
|
207
|
+
this.process.stdin.write(JSON.stringify({ jsonrpc: '2.0', method, params }) + '\n');
|
|
131
208
|
}
|
|
132
209
|
/**
|
|
133
|
-
*
|
|
210
|
+
* Call an MCP tool (by its ORIGINAL server-side name)
|
|
134
211
|
*/
|
|
135
212
|
async callTool(name, arguments_) {
|
|
136
213
|
try {
|
|
137
214
|
const result = await this.sendRequest('tools/call', {
|
|
138
215
|
name,
|
|
139
|
-
arguments: arguments_
|
|
216
|
+
arguments: arguments_,
|
|
140
217
|
});
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
218
|
+
// MCP tool results are content blocks: [{type:'text', text:'...'}, ...]
|
|
219
|
+
let output;
|
|
220
|
+
if (typeof result === 'string') {
|
|
221
|
+
output = result;
|
|
222
|
+
}
|
|
223
|
+
else if (Array.isArray(result?.content)) {
|
|
224
|
+
output = result.content
|
|
225
|
+
.map((block) => (block.type === 'text' ? block.text : JSON.stringify(block)))
|
|
226
|
+
.join('\n');
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
output = JSON.stringify(result ?? null);
|
|
230
|
+
}
|
|
231
|
+
return { success: result?.isError ? false : true, output };
|
|
145
232
|
}
|
|
146
233
|
catch (error) {
|
|
147
|
-
return {
|
|
148
|
-
success: false,
|
|
149
|
-
error: error.message
|
|
150
|
-
};
|
|
234
|
+
return { success: false, error: error.message };
|
|
151
235
|
}
|
|
152
236
|
}
|
|
153
237
|
/**
|
|
154
|
-
*
|
|
238
|
+
* List tools from the server and refresh the local registry
|
|
155
239
|
*/
|
|
156
240
|
async listTools() {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
console.log(`[MCP ${this.name}] Loaded ${tools.length} tools:`, [...this.tools.keys()].join(', '));
|
|
165
|
-
}
|
|
166
|
-
catch (error) {
|
|
167
|
-
console.error(`[MCP ${this.name}] Failed to list tools:`, error.message);
|
|
241
|
+
const result = await this.sendRequest('tools/list', {});
|
|
242
|
+
const tools = result.tools || [];
|
|
243
|
+
this.tools.clear();
|
|
244
|
+
this.nameMap.clear();
|
|
245
|
+
for (const tool of tools) {
|
|
246
|
+
this.tools.set(tool.name, tool);
|
|
247
|
+
this.nameMap.set(mcpToolName(this.name, tool.name), tool.name);
|
|
168
248
|
}
|
|
169
249
|
}
|
|
170
250
|
/**
|
|
171
|
-
*
|
|
251
|
+
* Get registered tools as agent Tool[] with provider-safe names.
|
|
252
|
+
*
|
|
253
|
+
* v3.0.5 fix: MCP tools route through the same permission gate as built-in
|
|
254
|
+
* tools — previously execute() dropped the ctx, so in 'ask' mode any MCP
|
|
255
|
+
* write/execute tool ran without confirmation (contradicting the
|
|
256
|
+
* fail-closed design promise).
|
|
172
257
|
*/
|
|
173
258
|
getTools() {
|
|
174
|
-
return [...this.tools.values()].map(mcpTool =>
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
name
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
259
|
+
return [...this.tools.values()].map(mcpTool => {
|
|
260
|
+
const exposedName = mcpToolName(this.name, mcpTool.name);
|
|
261
|
+
return {
|
|
262
|
+
name: exposedName,
|
|
263
|
+
description: mcpTool.description || `(MCP tool ${this.name}/${mcpTool.name})`,
|
|
264
|
+
parameters: this.mapParameters(mcpTool),
|
|
265
|
+
execute: async (params, ctx) => {
|
|
266
|
+
if (ctx?.confirmAction) {
|
|
267
|
+
const argPreview = Object.keys(params).length > 0
|
|
268
|
+
? ` ${JSON.stringify(params).slice(0, 100)}`
|
|
269
|
+
: '';
|
|
270
|
+
const ok = await ctx.confirmAction(`调用 MCP 工具 ${exposedName}${argPreview}`);
|
|
271
|
+
if (!ok) {
|
|
272
|
+
return { success: false, error: 'MCP tool call cancelled by user' };
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
return { success: false, error: 'MCP tool call requires confirmation, but no confirmation channel is available (headless? add --yolo)' };
|
|
277
|
+
}
|
|
278
|
+
// JSON-string params for nested object schemas are decoded here.
|
|
279
|
+
const decoded = this.decodeParams(mcpTool, params);
|
|
280
|
+
return this.callTool(mcpTool.name, decoded);
|
|
281
|
+
},
|
|
282
|
+
};
|
|
283
|
+
});
|
|
187
284
|
}
|
|
188
285
|
/**
|
|
189
|
-
*
|
|
286
|
+
* Map a JSON Schema to our flat ToolParameter list. `type` passes through;
|
|
287
|
+
* arrays/enums are described in text; nested objects become JSON-string
|
|
288
|
+
* params (decoded in decodeParams).
|
|
190
289
|
*/
|
|
290
|
+
mapParameters(mcpTool) {
|
|
291
|
+
const required = new Set(mcpTool.inputSchema.required || []);
|
|
292
|
+
return Object.entries(mcpTool.inputSchema.properties || {}).map(([name, schema]) => {
|
|
293
|
+
let type = typeof schema.type === 'string' ? schema.type : 'string';
|
|
294
|
+
let description = schema.description || '';
|
|
295
|
+
if (type === 'array') {
|
|
296
|
+
type = 'string';
|
|
297
|
+
description += ' (JSON array string, e.g. ["a","b"])';
|
|
298
|
+
}
|
|
299
|
+
else if (type === 'object') {
|
|
300
|
+
type = 'string';
|
|
301
|
+
description += ' (JSON object string, e.g. {"key":"value"})';
|
|
302
|
+
}
|
|
303
|
+
if (Array.isArray(schema.enum) && schema.enum.length > 0) {
|
|
304
|
+
description += ` (one of: ${schema.enum.join(', ')})`;
|
|
305
|
+
}
|
|
306
|
+
if (schema.items?.type) {
|
|
307
|
+
description += ` [array items: ${schema.items.type}]`;
|
|
308
|
+
}
|
|
309
|
+
return { name, type, description: description.trim(), required: required.has(name) };
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
/** Decode JSON-string params back into real values for object/array schemas. */
|
|
313
|
+
decodeParams(mcpTool, params) {
|
|
314
|
+
const out = { ...params };
|
|
315
|
+
for (const [name, schema] of Object.entries(mcpTool.inputSchema.properties || {})) {
|
|
316
|
+
const t = schema?.type;
|
|
317
|
+
const v = out[name];
|
|
318
|
+
if ((t === 'object' || t === 'array') && typeof v === 'string') {
|
|
319
|
+
try {
|
|
320
|
+
out[name] = JSON.parse(v);
|
|
321
|
+
}
|
|
322
|
+
catch { /* keep raw string; server will report the error */ }
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
return out;
|
|
326
|
+
}
|
|
327
|
+
/** Original server-side tool name for an exposed (sanitized) name. */
|
|
328
|
+
resolveToolName(exposedName) {
|
|
329
|
+
return this.nameMap.get(exposedName);
|
|
330
|
+
}
|
|
191
331
|
getToolNames() {
|
|
192
332
|
return [...this.tools.keys()];
|
|
193
333
|
}
|
|
194
|
-
/**
|
|
195
|
-
* S07: Check if connected
|
|
196
|
-
*/
|
|
197
334
|
isConnected() {
|
|
198
335
|
return this.connected;
|
|
199
336
|
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
337
|
+
getServerName() {
|
|
338
|
+
return this.name;
|
|
339
|
+
}
|
|
203
340
|
disconnect() {
|
|
341
|
+
if (this.connectTimer) {
|
|
342
|
+
clearTimeout(this.connectTimer);
|
|
343
|
+
this.connectTimer = undefined;
|
|
344
|
+
}
|
|
345
|
+
for (const [, pending] of this.pendingRequests) {
|
|
346
|
+
if (pending.timer)
|
|
347
|
+
clearTimeout(pending.timer);
|
|
348
|
+
pending.reject(new Error(`MCP server "${this.name}" disconnected`));
|
|
349
|
+
}
|
|
350
|
+
this.pendingRequests.clear();
|
|
204
351
|
if (this.process) {
|
|
205
|
-
|
|
352
|
+
try {
|
|
353
|
+
this.process.kill();
|
|
354
|
+
}
|
|
355
|
+
catch { /* already dead */ }
|
|
206
356
|
this.process = null;
|
|
207
357
|
}
|
|
208
358
|
this.connected = false;
|
|
209
359
|
this.tools.clear();
|
|
210
|
-
this.
|
|
360
|
+
this.nameMap.clear();
|
|
211
361
|
}
|
|
212
362
|
}
|
|
213
363
|
// ==================== MCP Server Manager ====================
|
|
214
364
|
export class MCPServerManager {
|
|
215
365
|
clients = new Map();
|
|
216
366
|
/**
|
|
217
|
-
*
|
|
367
|
+
* Load servers from a config object and connect to each. A failing server
|
|
368
|
+
* is reported but never blocks startup — one broken MCP server must not
|
|
369
|
+
* take the whole CLI down.
|
|
370
|
+
*
|
|
371
|
+
* @returns per-server connect results for the /mcp command and startup log
|
|
218
372
|
*/
|
|
219
|
-
async
|
|
220
|
-
const
|
|
221
|
-
|
|
222
|
-
|
|
373
|
+
async connectFromConfig(config) {
|
|
374
|
+
const servers = config.mcpServers || config.servers || {};
|
|
375
|
+
const results = [];
|
|
376
|
+
for (const [name, def] of Object.entries(servers)) {
|
|
377
|
+
if (!def || typeof def.command !== 'string' || !def.command.trim()) {
|
|
378
|
+
results.push({ name, ok: false, error: 'missing "command"', tools: 0 });
|
|
379
|
+
continue;
|
|
380
|
+
}
|
|
381
|
+
const client = new MCPClient(name);
|
|
382
|
+
try {
|
|
383
|
+
await client.connect(def.command, def.args || [], def.env);
|
|
384
|
+
this.clients.set(name, client);
|
|
385
|
+
results.push({ name, ok: true, tools: client.getToolNames().length });
|
|
386
|
+
}
|
|
387
|
+
catch (err) {
|
|
388
|
+
// v3.0.5 fix: kill the spawned child on failed handshake — otherwise
|
|
389
|
+
// the server process lingers as an orphan (it never joins
|
|
390
|
+
// this.clients, so disconnectAll can not reap it).
|
|
391
|
+
try {
|
|
392
|
+
client.disconnect();
|
|
393
|
+
}
|
|
394
|
+
catch { /* best-effort */ }
|
|
395
|
+
results.push({ name, ok: false, error: err.message, tools: 0 });
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
return results;
|
|
223
399
|
}
|
|
224
|
-
/**
|
|
225
|
-
* S07: Get all tools from all servers
|
|
226
|
-
*/
|
|
400
|
+
/** Get all tools from all connected servers, with provider-safe names. */
|
|
227
401
|
getAllTools() {
|
|
228
402
|
const allTools = [];
|
|
229
403
|
for (const client of this.clients.values()) {
|
|
@@ -231,21 +405,6 @@ export class MCPServerManager {
|
|
|
231
405
|
}
|
|
232
406
|
return allTools;
|
|
233
407
|
}
|
|
234
|
-
/**
|
|
235
|
-
* S07: Get tool names from all servers
|
|
236
|
-
*/
|
|
237
|
-
getAllToolNames() {
|
|
238
|
-
const names = [];
|
|
239
|
-
for (const [serverName, client] of this.clients) {
|
|
240
|
-
for (const toolName of client.getToolNames()) {
|
|
241
|
-
names.push(serverName + ':' + toolName);
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
return names;
|
|
245
|
-
}
|
|
246
|
-
/**
|
|
247
|
-
* S07: Disconnect a server
|
|
248
|
-
*/
|
|
249
408
|
removeServer(name) {
|
|
250
409
|
const client = this.clients.get(name);
|
|
251
410
|
if (client) {
|
|
@@ -253,15 +412,21 @@ export class MCPServerManager {
|
|
|
253
412
|
this.clients.delete(name);
|
|
254
413
|
}
|
|
255
414
|
}
|
|
415
|
+
disconnectAll() {
|
|
416
|
+
for (const client of this.clients.values()) {
|
|
417
|
+
client.disconnect();
|
|
418
|
+
}
|
|
419
|
+
this.clients.clear();
|
|
420
|
+
}
|
|
256
421
|
/**
|
|
257
|
-
*
|
|
422
|
+
* Status report for the /mcp command.
|
|
258
423
|
*/
|
|
259
424
|
getStatus() {
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
425
|
+
return [...this.clients.values()].map(c => ({
|
|
426
|
+
name: c.getServerName(),
|
|
427
|
+
connected: c.isConnected(),
|
|
428
|
+
tools: c.getToolNames(),
|
|
429
|
+
}));
|
|
265
430
|
}
|
|
266
431
|
}
|
|
267
432
|
//# sourceMappingURL=client.js.map
|
package/dist/mcp/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/mcp/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/mcp/client.ts"],"names":[],"mappings":"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"}
|