thatgfsj-code 3.0.4 → 3.0.6
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 +96 -56
- 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/llm/openai.js
CHANGED
|
@@ -36,7 +36,13 @@ export class OpenAIProvider {
|
|
|
36
36
|
}
|
|
37
37
|
async chat(messages, options, tools) {
|
|
38
38
|
const body = this.buildRequest(messages, false, options, tools);
|
|
39
|
-
const response = await this.doRequest(body);
|
|
39
|
+
const response = await this.doRequest(body, options?.signal);
|
|
40
|
+
// v3.0.5: non-streaming path never checked response.ok — a 401/429 body
|
|
41
|
+
// was silently parsed into an empty ChatResponse.
|
|
42
|
+
if (!response.ok) {
|
|
43
|
+
const text = await response.text().catch(() => '');
|
|
44
|
+
throw new Error(`API error ${response.status}: ${text}`);
|
|
45
|
+
}
|
|
40
46
|
const data = await response.json();
|
|
41
47
|
const choice = data.choices?.[0];
|
|
42
48
|
return {
|
|
@@ -48,13 +54,20 @@ export class OpenAIProvider {
|
|
|
48
54
|
}
|
|
49
55
|
async *chatStream(messages, options, tools) {
|
|
50
56
|
const body = this.buildRequest(messages, true, options, tools);
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
const
|
|
57
|
-
|
|
57
|
+
// v3.0.5: idle watchdog. The 60s connect timeout in doRequest only covers
|
|
58
|
+
// until the response headers arrive; a stalled stream afterwards would
|
|
59
|
+
// hang forever. Abort if no bytes arrive for 120s.
|
|
60
|
+
const controller = new AbortController();
|
|
61
|
+
const upstream = options?.signal;
|
|
62
|
+
const onUpstreamAbort = () => controller.abort();
|
|
63
|
+
upstream?.addEventListener('abort', onUpstreamAbort, { once: true });
|
|
64
|
+
let idleTimer;
|
|
65
|
+
const resetIdle = () => {
|
|
66
|
+
if (idleTimer)
|
|
67
|
+
clearTimeout(idleTimer);
|
|
68
|
+
idleTimer = setTimeout(() => controller.abort(), 120000);
|
|
69
|
+
};
|
|
70
|
+
resetIdle();
|
|
58
71
|
let fullContent = '';
|
|
59
72
|
let buffer = '';
|
|
60
73
|
// Accumulate streaming tool call chunks
|
|
@@ -63,58 +76,81 @@ export class OpenAIProvider {
|
|
|
63
76
|
// stream_options.include_usage). We capture it here and yield at the end.
|
|
64
77
|
let capturedUsage;
|
|
65
78
|
try {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
if (
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
79
|
+
const response = await this.doRequest(body, controller.signal);
|
|
80
|
+
resetIdle();
|
|
81
|
+
if (!response.ok || !response.body) {
|
|
82
|
+
const text = await response.text().catch(() => '');
|
|
83
|
+
throw new Error(`API error ${response.status}: ${text}`);
|
|
84
|
+
}
|
|
85
|
+
const reader = response.body.getReader();
|
|
86
|
+
const decoder = new TextDecoder();
|
|
87
|
+
try {
|
|
88
|
+
while (true) {
|
|
89
|
+
const { done, value } = await reader.read();
|
|
90
|
+
resetIdle();
|
|
91
|
+
if (done)
|
|
92
|
+
break;
|
|
93
|
+
buffer += decoder.decode(value, { stream: true });
|
|
94
|
+
const lines = buffer.split('\n');
|
|
95
|
+
buffer = lines.pop() || '';
|
|
96
|
+
for (const line of lines) {
|
|
97
|
+
const trimmed = line.trim();
|
|
98
|
+
if (!trimmed)
|
|
99
|
+
continue;
|
|
100
|
+
if (trimmed === 'data: [DONE]')
|
|
101
|
+
continue;
|
|
102
|
+
if (!trimmed.startsWith('data: '))
|
|
103
|
+
continue;
|
|
104
|
+
try {
|
|
105
|
+
const data = JSON.parse(trimmed.slice(6));
|
|
106
|
+
const delta = data.choices?.[0]?.delta;
|
|
107
|
+
// Text content
|
|
108
|
+
if (delta?.content) {
|
|
109
|
+
fullContent += delta.content;
|
|
110
|
+
yield { type: 'text', content: delta.content };
|
|
111
|
+
}
|
|
112
|
+
// Streaming tool calls - accumulate chunks
|
|
113
|
+
if (delta?.tool_calls) {
|
|
114
|
+
for (const tc of delta.tool_calls) {
|
|
115
|
+
const idx = tc.index ?? 0;
|
|
116
|
+
if (!toolCallBuffers.has(idx)) {
|
|
117
|
+
toolCallBuffers.set(idx, { id: '', name: '', arguments: '' });
|
|
118
|
+
}
|
|
119
|
+
const buf = toolCallBuffers.get(idx);
|
|
120
|
+
if (tc.id)
|
|
121
|
+
buf.id = tc.id;
|
|
122
|
+
if (tc.function?.name)
|
|
123
|
+
buf.name += tc.function.name;
|
|
124
|
+
if (tc.function?.arguments)
|
|
125
|
+
buf.arguments += tc.function.arguments;
|
|
95
126
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
buf.name += tc.function.name;
|
|
101
|
-
if (tc.function?.arguments)
|
|
102
|
-
buf.arguments += tc.function.arguments;
|
|
127
|
+
}
|
|
128
|
+
// DeepSeek/OpenAI stream-end usage (only present on the last chunk)
|
|
129
|
+
if (data.usage) {
|
|
130
|
+
capturedUsage = this.normalizeUsage(data.usage);
|
|
103
131
|
}
|
|
104
132
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
capturedUsage = this.normalizeUsage(data.usage);
|
|
133
|
+
catch {
|
|
134
|
+
// Skip invalid JSON lines
|
|
108
135
|
}
|
|
109
136
|
}
|
|
110
|
-
catch {
|
|
111
|
-
// Skip invalid JSON lines
|
|
112
|
-
}
|
|
113
137
|
}
|
|
114
138
|
}
|
|
139
|
+
finally {
|
|
140
|
+
if (idleTimer)
|
|
141
|
+
clearTimeout(idleTimer);
|
|
142
|
+
upstream?.removeEventListener('abort', onUpstreamAbort);
|
|
143
|
+
reader.releaseLock();
|
|
144
|
+
}
|
|
115
145
|
}
|
|
116
|
-
|
|
117
|
-
|
|
146
|
+
catch (error) {
|
|
147
|
+
if (idleTimer)
|
|
148
|
+
clearTimeout(idleTimer);
|
|
149
|
+
upstream?.removeEventListener('abort', onUpstreamAbort);
|
|
150
|
+
if (controller.signal.aborted && !upstream?.aborted) {
|
|
151
|
+
throw new Error('Stream stalled: no data received for 120s');
|
|
152
|
+
}
|
|
153
|
+
throw error;
|
|
118
154
|
}
|
|
119
155
|
// Convert accumulated tool call buffers to ToolCall[]
|
|
120
156
|
const toolCalls = [];
|
|
@@ -164,7 +200,6 @@ export class OpenAIProvider {
|
|
|
164
200
|
...(m.name && { name: m.name }),
|
|
165
201
|
...(m.tool_call_id && { tool_call_id: m.tool_call_id }),
|
|
166
202
|
...(m.tool_calls && { tool_calls: m.tool_calls }),
|
|
167
|
-
...(m.cache_control && { cache_control: m.cache_control }),
|
|
168
203
|
})),
|
|
169
204
|
temperature: options?.temperature ?? this.config.temperature,
|
|
170
205
|
max_tokens: options?.maxTokens ?? this.config.maxTokens,
|
|
@@ -180,11 +215,16 @@ export class OpenAIProvider {
|
|
|
180
215
|
/**
|
|
181
216
|
* Execute the HTTP request. Serializes via stableStringify so the byte
|
|
182
217
|
* sequence is deterministic across requests.
|
|
218
|
+
*
|
|
219
|
+
* v3.0.5: accepts an external AbortSignal (combined with the 60s connect
|
|
220
|
+
* timeout via AbortSignal.any) so caller-side cancellation and the
|
|
221
|
+
* streaming idle watchdog can kill the request.
|
|
183
222
|
*/
|
|
184
|
-
async doRequest(body) {
|
|
223
|
+
async doRequest(body, external) {
|
|
185
224
|
const url = `${this.config.baseUrl}/chat/completions`;
|
|
186
225
|
const controller = new AbortController();
|
|
187
|
-
const timeout = setTimeout(() => controller.abort(), 60000); // 60s timeout
|
|
226
|
+
const timeout = setTimeout(() => controller.abort(), 60000); // 60s connect timeout
|
|
227
|
+
const signal = external ? AbortSignal.any([controller.signal, external]) : controller.signal;
|
|
188
228
|
try {
|
|
189
229
|
const response = await fetch(url, {
|
|
190
230
|
method: 'POST',
|
|
@@ -193,7 +233,7 @@ export class OpenAIProvider {
|
|
|
193
233
|
'Authorization': `Bearer ${this.config.apiKey}`,
|
|
194
234
|
},
|
|
195
235
|
body: stableStringify(body),
|
|
196
|
-
signal
|
|
236
|
+
signal,
|
|
197
237
|
});
|
|
198
238
|
return response;
|
|
199
239
|
}
|
package/dist/llm/openai.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/llm/openai.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,OAAO,cAAc;IAChB,IAAI,GAAG,QAAQ,CAAC;IACf,MAAM,CAAiB;IAEjC,YAAY,MAAsB;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,UAAU,CAAC,KAAa;QACtB,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,EAAE,UAAmB;YACzB,QAAQ,EAAE;gBACR,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,UAAU,EAAE,IAAI,CAAC,WAAW,IAAI;oBAC9B,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,MAAM,CAAC,WAAW,CAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CACjF;oBACD,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;iBACnE;aACF;SACF,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAuB,EAAE,OAAqB,EAAE,KAAc;QACvE,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/llm/openai.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/client.d.ts
CHANGED
|
@@ -1,11 +1,45 @@
|
|
|
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 type { Tool, ToolResult } from '../tools/types.js';
|
|
25
|
+
/** Both keys are accepted so users can copy configs from Claude Code (mcpServers) or older docs (servers). */
|
|
26
|
+
export interface McpConfigFile {
|
|
27
|
+
mcpServers?: Record<string, {
|
|
28
|
+
command: string;
|
|
29
|
+
args?: string[];
|
|
30
|
+
env?: Record<string, string>;
|
|
31
|
+
}>;
|
|
32
|
+
servers?: Record<string, {
|
|
33
|
+
command: string;
|
|
34
|
+
args?: string[];
|
|
35
|
+
env?: Record<string, string>;
|
|
36
|
+
}>;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Sanitize a server/tool name pair into a provider-safe tool name.
|
|
40
|
+
* All three provider APIs only allow [a-zA-Z0-9_-]; colons would 400.
|
|
41
|
+
*/
|
|
42
|
+
export declare function mcpToolName(server: string, tool: string): string;
|
|
9
43
|
export declare class MCPClient {
|
|
10
44
|
private process;
|
|
11
45
|
private tools;
|
|
@@ -13,71 +47,87 @@ export declare class MCPClient {
|
|
|
13
47
|
private pendingRequests;
|
|
14
48
|
private name;
|
|
15
49
|
private connected;
|
|
50
|
+
private connectTimer?;
|
|
51
|
+
/** Original tool name keyed by sanitized name, for dispatch back to the server. */
|
|
52
|
+
private nameMap;
|
|
16
53
|
constructor(name: string);
|
|
17
54
|
/**
|
|
18
|
-
*
|
|
55
|
+
* Connect to an MCP server over stdio.
|
|
19
56
|
* @param command Command to run (e.g., 'npx', 'node')
|
|
20
|
-
* @param args Arguments (e.g., ['-y', '@modelcontextprotocol/server-filesystem', '/path
|
|
57
|
+
* @param args Arguments (e.g., ['-y', '@modelcontextprotocol/server-filesystem', '/path'])
|
|
58
|
+
* @param env Extra environment variables for the child process
|
|
21
59
|
*/
|
|
22
|
-
connect(command: string, args: string[]): Promise<void>;
|
|
60
|
+
connect(command: string, args: string[], env?: Record<string, string>): Promise<void>;
|
|
23
61
|
/**
|
|
24
|
-
*
|
|
62
|
+
* Handle incoming JSON-RPC message
|
|
25
63
|
*/
|
|
26
64
|
private handleMessage;
|
|
27
65
|
/**
|
|
28
|
-
*
|
|
66
|
+
* Send a JSON-RPC request
|
|
29
67
|
*/
|
|
30
68
|
private sendRequest;
|
|
31
69
|
/**
|
|
32
|
-
*
|
|
70
|
+
* Send a notification (no response expected)
|
|
33
71
|
*/
|
|
34
72
|
private sendNotification;
|
|
35
73
|
/**
|
|
36
|
-
*
|
|
74
|
+
* Call an MCP tool (by its ORIGINAL server-side name)
|
|
37
75
|
*/
|
|
38
76
|
callTool(name: string, arguments_: Record<string, any>): Promise<ToolResult>;
|
|
39
77
|
/**
|
|
40
|
-
*
|
|
78
|
+
* List tools from the server and refresh the local registry
|
|
41
79
|
*/
|
|
42
80
|
private listTools;
|
|
43
81
|
/**
|
|
44
|
-
*
|
|
82
|
+
* Get registered tools as agent Tool[] with provider-safe names.
|
|
83
|
+
*
|
|
84
|
+
* v3.0.5 fix: MCP tools route through the same permission gate as built-in
|
|
85
|
+
* tools — previously execute() dropped the ctx, so in 'ask' mode any MCP
|
|
86
|
+
* write/execute tool ran without confirmation (contradicting the
|
|
87
|
+
* fail-closed design promise).
|
|
45
88
|
*/
|
|
46
89
|
getTools(): Tool[];
|
|
47
90
|
/**
|
|
48
|
-
*
|
|
91
|
+
* Map a JSON Schema to our flat ToolParameter list. `type` passes through;
|
|
92
|
+
* arrays/enums are described in text; nested objects become JSON-string
|
|
93
|
+
* params (decoded in decodeParams).
|
|
49
94
|
*/
|
|
95
|
+
private mapParameters;
|
|
96
|
+
/** Decode JSON-string params back into real values for object/array schemas. */
|
|
97
|
+
private decodeParams;
|
|
98
|
+
/** Original server-side tool name for an exposed (sanitized) name. */
|
|
99
|
+
resolveToolName(exposedName: string): string | undefined;
|
|
50
100
|
getToolNames(): string[];
|
|
51
|
-
/**
|
|
52
|
-
* S07: Check if connected
|
|
53
|
-
*/
|
|
54
101
|
isConnected(): boolean;
|
|
55
|
-
|
|
56
|
-
* S07: Disconnect from MCP server
|
|
57
|
-
*/
|
|
102
|
+
getServerName(): string;
|
|
58
103
|
disconnect(): void;
|
|
59
104
|
}
|
|
60
105
|
export declare class MCPServerManager {
|
|
61
106
|
private clients;
|
|
62
107
|
/**
|
|
63
|
-
*
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
*
|
|
108
|
+
* Load servers from a config object and connect to each. A failing server
|
|
109
|
+
* is reported but never blocks startup — one broken MCP server must not
|
|
110
|
+
* take the whole CLI down.
|
|
111
|
+
*
|
|
112
|
+
* @returns per-server connect results for the /mcp command and startup log
|
|
68
113
|
*/
|
|
114
|
+
connectFromConfig(config: McpConfigFile): Promise<Array<{
|
|
115
|
+
name: string;
|
|
116
|
+
ok: boolean;
|
|
117
|
+
error?: string;
|
|
118
|
+
tools: number;
|
|
119
|
+
}>>;
|
|
120
|
+
/** Get all tools from all connected servers, with provider-safe names. */
|
|
69
121
|
getAllTools(): Tool[];
|
|
70
|
-
/**
|
|
71
|
-
* S07: Get tool names from all servers
|
|
72
|
-
*/
|
|
73
|
-
getAllToolNames(): string[];
|
|
74
|
-
/**
|
|
75
|
-
* S07: Disconnect a server
|
|
76
|
-
*/
|
|
77
122
|
removeServer(name: string): void;
|
|
123
|
+
disconnectAll(): void;
|
|
78
124
|
/**
|
|
79
|
-
*
|
|
125
|
+
* Status report for the /mcp command.
|
|
80
126
|
*/
|
|
81
|
-
getStatus():
|
|
127
|
+
getStatus(): Array<{
|
|
128
|
+
name: string;
|
|
129
|
+
connected: boolean;
|
|
130
|
+
tools: string[];
|
|
131
|
+
}>;
|
|
82
132
|
}
|
|
83
133
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/mcp/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/mcp/client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/mcp/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAe,MAAM,mBAAmB,CAAC;AA+BvE,8GAA8G;AAC9G,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC,CAAC;IAChG,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC,CAAC;CAC9F;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMhE;AAID,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,KAAK,CAAmC;IAChD,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,eAAe,CAIR;IACf,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAC,CAAgC;IACrD,mFAAmF;IACnF,OAAO,CAAC,OAAO,CAAkC;gBAErC,IAAI,EAAE,MAAM;IAIxB;;;;;OAKG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAoF3F;;OAEG;IACH,OAAO,CAAC,aAAa;IAmBrB;;OAEG;IACH,OAAO,CAAC,WAAW;IAuCnB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAyBlF;;OAEG;YACW,SAAS;IAYvB;;;;;;;OAOG;IACH,QAAQ,IAAI,IAAI,EAAE;IA2BlB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAsBrB,gFAAgF;IAChF,OAAO,CAAC,YAAY;IAYpB,sEAAsE;IACtE,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIxD,YAAY,IAAI,MAAM,EAAE;IAIxB,WAAW,IAAI,OAAO;IAItB,aAAa,IAAI,MAAM;IAIvB,UAAU,IAAI,IAAI;CAoBnB;AAID,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAqC;IAEpD;;;;;;OAMG;IACG,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAyB5H,0EAA0E;IAC1E,WAAW,IAAI,IAAI,EAAE;IAQrB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQhC,aAAa,IAAI,IAAI;IAOrB;;OAEG;IACH,SAAS,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAO1E"}
|