thatgfsj-code 3.0.3 → 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.
Files changed (212) hide show
  1. package/README.md +64 -21
  2. package/dist/app/index.d.ts +93 -22
  3. package/dist/app/index.d.ts.map +1 -1
  4. package/dist/app/index.js +232 -40
  5. package/dist/app/index.js.map +1 -1
  6. package/dist/cache/smartModel.d.ts +29 -22
  7. package/dist/cache/smartModel.d.ts.map +1 -1
  8. package/dist/cache/smartModel.js +33 -40
  9. package/dist/cache/smartModel.js.map +1 -1
  10. package/dist/cmd/index.d.ts +12 -20
  11. package/dist/cmd/index.d.ts.map +1 -1
  12. package/dist/cmd/index.js +192 -146
  13. package/dist/cmd/index.js.map +1 -1
  14. package/dist/config/index.d.ts +4 -0
  15. package/dist/config/index.d.ts.map +1 -1
  16. package/dist/config/index.js +9 -6
  17. package/dist/config/index.js.map +1 -1
  18. package/dist/config/types.d.ts +5 -0
  19. package/dist/config/types.d.ts.map +1 -1
  20. package/dist/llm/anthropic.d.ts +1 -1
  21. package/dist/llm/anthropic.d.ts.map +1 -1
  22. package/dist/llm/anthropic.js +116 -84
  23. package/dist/llm/anthropic.js.map +1 -1
  24. package/dist/llm/gemini.d.ts +27 -3
  25. package/dist/llm/gemini.d.ts.map +1 -1
  26. package/dist/llm/gemini.js +196 -73
  27. package/dist/llm/gemini.js.map +1 -1
  28. package/dist/llm/index.d.ts +20 -1
  29. package/dist/llm/index.d.ts.map +1 -1
  30. package/dist/llm/index.js +71 -10
  31. package/dist/llm/index.js.map +1 -1
  32. package/dist/llm/openai.d.ts +5 -1
  33. package/dist/llm/openai.d.ts.map +1 -1
  34. package/dist/llm/openai.js +96 -56
  35. package/dist/llm/openai.js.map +1 -1
  36. package/dist/mcp/client.d.ts +84 -34
  37. package/dist/mcp/client.d.ts.map +1 -1
  38. package/dist/mcp/client.js +291 -126
  39. package/dist/mcp/client.js.map +1 -1
  40. package/dist/session/compactor.d.ts +27 -7
  41. package/dist/session/compactor.d.ts.map +1 -1
  42. package/dist/session/compactor.js +78 -23
  43. package/dist/session/compactor.js.map +1 -1
  44. package/dist/session/index.d.ts +96 -33
  45. package/dist/session/index.d.ts.map +1 -1
  46. package/dist/session/index.js +278 -60
  47. package/dist/session/index.js.map +1 -1
  48. package/dist/tools/file.d.ts +10 -2
  49. package/dist/tools/file.d.ts.map +1 -1
  50. package/dist/tools/file.js +54 -5
  51. package/dist/tools/file.js.map +1 -1
  52. package/dist/tools/git.d.ts +16 -2
  53. package/dist/tools/git.d.ts.map +1 -1
  54. package/dist/tools/git.js +61 -18
  55. package/dist/tools/git.js.map +1 -1
  56. package/dist/tools/nwt.d.ts.map +1 -1
  57. package/dist/tools/nwt.js +8 -1
  58. package/dist/tools/nwt.js.map +1 -1
  59. package/dist/tools/search.d.ts +8 -1
  60. package/dist/tools/search.d.ts.map +1 -1
  61. package/dist/tools/search.js +105 -34
  62. package/dist/tools/search.js.map +1 -1
  63. package/dist/tools/shell.d.ts +0 -4
  64. package/dist/tools/shell.d.ts.map +1 -1
  65. package/dist/tools/shell.js +11 -26
  66. package/dist/tools/shell.js.map +1 -1
  67. package/dist/tools/types.d.ts +7 -0
  68. package/dist/tools/types.d.ts.map +1 -1
  69. package/dist/tools/types.js.map +1 -1
  70. package/dist/tui/app.d.ts.map +1 -1
  71. package/dist/tui/app.js +90 -18
  72. package/dist/tui/app.js.map +1 -1
  73. package/dist/tui/components/ChatMessage.d.ts.map +1 -1
  74. package/dist/tui/components/ChatMessage.js +9 -2
  75. package/dist/tui/components/ChatMessage.js.map +1 -1
  76. package/dist/tui/components/ConfirmPrompt.d.ts +21 -0
  77. package/dist/tui/components/ConfirmPrompt.d.ts.map +1 -0
  78. package/dist/tui/components/ConfirmPrompt.js +45 -0
  79. package/dist/tui/components/ConfirmPrompt.js.map +1 -0
  80. package/dist/tui/components/Header.d.ts +10 -5
  81. package/dist/tui/components/Header.d.ts.map +1 -1
  82. package/dist/tui/components/Header.js +13 -5
  83. package/dist/tui/components/Header.js.map +1 -1
  84. package/dist/tui/components/InitWizard.d.ts.map +1 -1
  85. package/dist/tui/components/InitWizard.js +8 -13
  86. package/dist/tui/components/InitWizard.js.map +1 -1
  87. package/dist/tui/components/StatusBar.d.ts +7 -0
  88. package/dist/tui/components/StatusBar.d.ts.map +1 -1
  89. package/dist/tui/components/StatusBar.js +8 -3
  90. package/dist/tui/components/StatusBar.js.map +1 -1
  91. package/dist/tui/components/Thinking.d.ts +5 -0
  92. package/dist/tui/components/Thinking.d.ts.map +1 -1
  93. package/dist/tui/components/Thinking.js +24 -2
  94. package/dist/tui/components/Thinking.js.map +1 -1
  95. package/dist/tui/components/ToolCall.d.ts +6 -1
  96. package/dist/tui/components/ToolCall.d.ts.map +1 -1
  97. package/dist/tui/components/ToolCall.js +50 -22
  98. package/dist/tui/components/ToolCall.js.map +1 -1
  99. package/dist/tui/components/UserInput.d.ts +5 -0
  100. package/dist/tui/components/UserInput.d.ts.map +1 -1
  101. package/dist/tui/components/UserInput.js +9 -13
  102. package/dist/tui/components/UserInput.js.map +1 -1
  103. package/dist/tui/hooks/useChat.d.ts +1 -0
  104. package/dist/tui/hooks/useChat.d.ts.map +1 -1
  105. package/dist/tui/hooks/useChat.js +36 -16
  106. package/dist/tui/hooks/useChat.js.map +1 -1
  107. package/dist/tui/hooks/useCommands.d.ts +7 -1
  108. package/dist/tui/hooks/useCommands.d.ts.map +1 -1
  109. package/dist/tui/hooks/useCommands.js +83 -49
  110. package/dist/tui/hooks/useCommands.js.map +1 -1
  111. package/dist/tui/theme.d.ts +34 -0
  112. package/dist/tui/theme.d.ts.map +1 -0
  113. package/dist/tui/theme.js +34 -0
  114. package/dist/tui/theme.js.map +1 -0
  115. package/dist/tui/welcome.d.ts.map +1 -1
  116. package/dist/tui/welcome.js +9 -7
  117. package/dist/tui/welcome.js.map +1 -1
  118. package/dist/types.d.ts +16 -1
  119. package/dist/types.d.ts.map +1 -1
  120. package/dist/utils/diff.d.ts +5 -0
  121. package/dist/utils/diff.d.ts.map +1 -1
  122. package/dist/utils/diff.js +15 -0
  123. package/dist/utils/diff.js.map +1 -1
  124. package/dist/version.d.ts +12 -0
  125. package/dist/version.d.ts.map +1 -0
  126. package/dist/version.js +29 -0
  127. package/dist/version.js.map +1 -0
  128. package/package.json +19 -7
  129. package/CHANGELOG.md +0 -192
  130. package/DEVELOPMENT.md +0 -286
  131. package/ROADMAP.md +0 -91
  132. package/docs/API_KEY_GUIDE.md +0 -236
  133. package/docs/FAQ.md +0 -182
  134. package/install.bat +0 -63
  135. package/install.ps1 +0 -238
  136. package/install.sh +0 -113
  137. package/src/app/index.ts +0 -197
  138. package/src/cache/fingerprint.ts +0 -101
  139. package/src/cache/index.ts +0 -21
  140. package/src/cache/smartModel.ts +0 -145
  141. package/src/cache/stats.ts +0 -199
  142. package/src/cache/volatile.ts +0 -47
  143. package/src/cmd/index.tsx +0 -288
  144. package/src/config/index.ts +0 -158
  145. package/src/config/providers.ts +0 -234
  146. package/src/config/types.ts +0 -71
  147. package/src/hooks/index.ts +0 -111
  148. package/src/llm/anthropic.ts +0 -413
  149. package/src/llm/gemini.ts +0 -169
  150. package/src/llm/index.ts +0 -302
  151. package/src/llm/openai.ts +0 -243
  152. package/src/llm/provider.ts +0 -71
  153. package/src/mcp/client.ts +0 -330
  154. package/src/prompts/index.ts +0 -260
  155. package/src/session/compactor.ts +0 -103
  156. package/src/session/index.ts +0 -181
  157. package/src/session/message.ts +0 -42
  158. package/src/skills/brainstorming.ts +0 -43
  159. package/src/skills/code-review.ts +0 -45
  160. package/src/skills/executing-plans.ts +0 -27
  161. package/src/skills/frontend-design.ts +0 -35
  162. package/src/skills/git-workflow.ts +0 -36
  163. package/src/skills/improve-architecture.ts +0 -38
  164. package/src/skills/index.ts +0 -136
  165. package/src/skills/neuroweave.ts +0 -47
  166. package/src/skills/playwright.ts +0 -72
  167. package/src/skills/prototype.ts +0 -30
  168. package/src/skills/subagent.ts +0 -28
  169. package/src/skills/supabase.ts +0 -44
  170. package/src/skills/systematic-debugging.ts +0 -44
  171. package/src/skills/tdd.ts +0 -39
  172. package/src/skills/triage.ts +0 -35
  173. package/src/skills/verification.ts +0 -31
  174. package/src/skills/writing-plans.ts +0 -42
  175. package/src/tools/file.ts +0 -143
  176. package/src/tools/git.ts +0 -132
  177. package/src/tools/index.ts +0 -111
  178. package/src/tools/nwt.ts +0 -598
  179. package/src/tools/search.ts +0 -263
  180. package/src/tools/shell.ts +0 -136
  181. package/src/tools/types.ts +0 -122
  182. package/src/tui/app.tsx +0 -159
  183. package/src/tui/components/ChatList.tsx +0 -41
  184. package/src/tui/components/ChatMessage.tsx +0 -54
  185. package/src/tui/components/Header.tsx +0 -66
  186. package/src/tui/components/InitWizard.tsx +0 -251
  187. package/src/tui/components/Markdown.tsx +0 -35
  188. package/src/tui/components/ModelSelector.tsx +0 -107
  189. package/src/tui/components/StatusBar.tsx +0 -30
  190. package/src/tui/components/Thinking.tsx +0 -17
  191. package/src/tui/components/ToolCall.tsx +0 -102
  192. package/src/tui/components/UserInput.tsx +0 -151
  193. package/src/tui/hooks/useChat.ts +0 -287
  194. package/src/tui/hooks/useCommands.ts +0 -273
  195. package/src/tui/index.ts +0 -6
  196. package/src/tui/welcome.ts +0 -177
  197. package/src/types.ts +0 -104
  198. package/src/utils/diff.ts +0 -71
  199. package/src/utils/project.ts +0 -99
  200. package/src/utils/stableStringify.ts +0 -47
  201. package/src/utils/thinking.ts +0 -119
  202. package/tests/cache/fingerprint.test.ts +0 -75
  203. package/tests/cache/providerCatalog.test.ts +0 -31
  204. package/tests/cache/smartModel.test.ts +0 -112
  205. package/tests/cache/stableStringify.test.ts +0 -43
  206. package/tests/cache/stats.test.ts +0 -146
  207. package/tests/cache/volatile.test.ts +0 -75
  208. package/tests/smoke-pollution.mjs +0 -78
  209. package/tests/smoke-thinking.mjs +0 -110
  210. package/tests/smoke-tool-stream.mjs +0 -69
  211. package/tests/smoke-tool.mjs +0 -117
  212. package/tsconfig.json +0 -21
@@ -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
- const response = await this.doRequest(body);
52
- if (!response.ok || !response.body) {
53
- const text = await response.text().catch(() => '');
54
- throw new Error(`API error ${response.status}: ${text}`);
55
- }
56
- const reader = response.body.getReader();
57
- const decoder = new TextDecoder();
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
- while (true) {
67
- const { done, value } = await reader.read();
68
- if (done)
69
- break;
70
- buffer += decoder.decode(value, { stream: true });
71
- const lines = buffer.split('\n');
72
- buffer = lines.pop() || '';
73
- for (const line of lines) {
74
- const trimmed = line.trim();
75
- if (!trimmed)
76
- continue;
77
- if (trimmed === 'data: [DONE]')
78
- continue;
79
- if (!trimmed.startsWith('data: '))
80
- continue;
81
- try {
82
- const data = JSON.parse(trimmed.slice(6));
83
- const delta = data.choices?.[0]?.delta;
84
- // Text content
85
- if (delta?.content) {
86
- fullContent += delta.content;
87
- yield { type: 'text', content: delta.content };
88
- }
89
- // Streaming tool calls - accumulate chunks
90
- if (delta?.tool_calls) {
91
- for (const tc of delta.tool_calls) {
92
- const idx = tc.index ?? 0;
93
- if (!toolCallBuffers.has(idx)) {
94
- toolCallBuffers.set(idx, { id: '', name: '', arguments: '' });
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
- const buf = toolCallBuffers.get(idx);
97
- if (tc.id)
98
- buf.id = tc.id;
99
- if (tc.function?.name)
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
- // DeepSeek/OpenAI stream-end usage (only present on the last chunk)
106
- if (data.usage) {
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
- finally {
117
- reader.releaseLock();
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: controller.signal,
236
+ signal,
197
237
  });
198
238
  return response;
199
239
  }
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/llm/openai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/llm/openai.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,45 @@
1
1
  /**
2
- * S07: MCP Client (Model Context Protocol)
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
- * MCP turns the agent from a closed system into an open platform.
6
- * Any server can expose tools via the MCP JSON-RPC 2.0 protocol.
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
- * S07: Connect to an MCP server
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/to/dir'])
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
- * S07: Handle incoming JSON-RPC message
62
+ * Handle incoming JSON-RPC message
25
63
  */
26
64
  private handleMessage;
27
65
  /**
28
- * S07: Send a JSON-RPC request
66
+ * Send a JSON-RPC request
29
67
  */
30
68
  private sendRequest;
31
69
  /**
32
- * S07: Send a notification (no response expected)
70
+ * Send a notification (no response expected)
33
71
  */
34
72
  private sendNotification;
35
73
  /**
36
- * S07: Call an MCP tool
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
- * S07: List tools from MCP server
78
+ * List tools from the server and refresh the local registry
41
79
  */
42
80
  private listTools;
43
81
  /**
44
- * S07: Get registered tools as agent Tool[]
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
- * S07: Get tool names
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
- * S07: Add and connect an MCP server
64
- */
65
- addServer(name: string, command: string, args: string[]): Promise<void>;
66
- /**
67
- * S07: Get all tools from all servers
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
- * S07: Get server status
125
+ * Status report for the /mcp command.
80
126
  */
81
- getStatus(): Record<string, boolean>;
127
+ getStatus(): Array<{
128
+ name: string;
129
+ connected: boolean;
130
+ tools: string[];
131
+ }>;
82
132
  }
83
133
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/mcp/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AA8B1D,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,KAAK,CAAmC;IAChD,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,eAAe,CAGR;IACf,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,SAAS,CAAS;gBAEd,IAAI,EAAE,MAAM;IAIxB;;;;OAIG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqD7D;;OAEG;IACH,OAAO,CAAC,aAAa;IAoBrB;;OAEG;IACH,OAAO,CAAC,WAAW;IA6BnB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAYxB;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAmBlF;;OAEG;YACW,SAAS;IAgBvB;;OAEG;IACH,QAAQ,IAAI,IAAI,EAAE;IAgBlB;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE;IAIxB;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,UAAU,IAAI,IAAI;CASnB;AAID,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAqC;IAEpD;;OAEG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7E;;OAEG;IACH,WAAW,IAAI,IAAI,EAAE;IAQrB;;OAEG;IACH,eAAe,IAAI,MAAM,EAAE;IAU3B;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQhC;;OAEG;IACH,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAOrC"}
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"}