@nanocollective/nanocoder 1.17.2 → 1.18.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.
Files changed (238) hide show
  1. package/README.md +3 -5
  2. package/assets/nanocoder-vscode.vsix +0 -0
  3. package/dist/ai-sdk-client-empty-message.spec.d.ts +2 -0
  4. package/dist/ai-sdk-client-empty-message.spec.d.ts.map +1 -0
  5. package/dist/ai-sdk-client-empty-message.spec.js +124 -0
  6. package/dist/ai-sdk-client-empty-message.spec.js.map +1 -0
  7. package/dist/ai-sdk-client-error-handling.spec.d.ts +2 -0
  8. package/dist/ai-sdk-client-error-handling.spec.d.ts.map +1 -0
  9. package/dist/ai-sdk-client-error-handling.spec.js +108 -0
  10. package/dist/ai-sdk-client-error-handling.spec.js.map +1 -0
  11. package/dist/ai-sdk-client-maxretries.spec.d.ts +2 -0
  12. package/dist/ai-sdk-client-maxretries.spec.d.ts.map +1 -0
  13. package/dist/ai-sdk-client-maxretries.spec.js +96 -0
  14. package/dist/ai-sdk-client-maxretries.spec.js.map +1 -0
  15. package/dist/ai-sdk-client.d.ts +25 -2
  16. package/dist/ai-sdk-client.d.ts.map +1 -1
  17. package/dist/ai-sdk-client.js +187 -124
  18. package/dist/ai-sdk-client.js.map +1 -1
  19. package/dist/app/utils/appUtils.js +3 -3
  20. package/dist/app/utils/appUtils.js.map +1 -1
  21. package/dist/app.d.ts.map +1 -1
  22. package/dist/app.js +22 -11
  23. package/dist/app.js.map +1 -1
  24. package/dist/commands/debugging.d.ts +3 -0
  25. package/dist/commands/debugging.d.ts.map +1 -0
  26. package/dist/commands/debugging.js +23 -0
  27. package/dist/commands/debugging.js.map +1 -0
  28. package/dist/commands/index.d.ts +3 -2
  29. package/dist/commands/index.d.ts.map +1 -1
  30. package/dist/commands/index.js +3 -2
  31. package/dist/commands/index.js.map +1 -1
  32. package/dist/commands/lsp.d.ts +15 -0
  33. package/dist/commands/lsp.d.ts.map +1 -0
  34. package/dist/commands/lsp.js +45 -0
  35. package/dist/commands/lsp.js.map +1 -0
  36. package/dist/commands/model-database.d.ts +8 -0
  37. package/dist/commands/model-database.d.ts.map +1 -0
  38. package/dist/commands/model-database.js +193 -0
  39. package/dist/commands/model-database.js.map +1 -0
  40. package/dist/commands/usage.d.ts.map +1 -1
  41. package/dist/commands/usage.js +1 -1
  42. package/dist/commands/usage.js.map +1 -1
  43. package/dist/components/assistant-message.d.ts.map +1 -1
  44. package/dist/components/assistant-message.js +3 -2
  45. package/dist/components/assistant-message.js.map +1 -1
  46. package/dist/components/status.d.ts +3 -0
  47. package/dist/components/status.d.ts.map +1 -1
  48. package/dist/components/status.js +24 -3
  49. package/dist/components/status.js.map +1 -1
  50. package/dist/components/user-input.d.ts.map +1 -1
  51. package/dist/components/user-input.js +2 -1
  52. package/dist/components/user-input.js.map +1 -1
  53. package/dist/config/preferences.d.ts +2 -2
  54. package/dist/config/preferences.js +5 -5
  55. package/dist/config/preferences.js.map +1 -1
  56. package/dist/context/mode-context.d.ts +12 -0
  57. package/dist/context/mode-context.d.ts.map +1 -0
  58. package/dist/context/mode-context.js +21 -0
  59. package/dist/context/mode-context.js.map +1 -0
  60. package/dist/context/mode-context.spec.d.ts +2 -0
  61. package/dist/context/mode-context.spec.d.ts.map +1 -0
  62. package/dist/context/mode-context.spec.js +61 -0
  63. package/dist/context/mode-context.spec.js.map +1 -0
  64. package/dist/hooks/useAppInitialization.d.ts +4 -2
  65. package/dist/hooks/useAppInitialization.d.ts.map +1 -1
  66. package/dist/hooks/useAppInitialization.js +102 -26
  67. package/dist/hooks/useAppInitialization.js.map +1 -1
  68. package/dist/hooks/useAppState.d.ts +7 -5
  69. package/dist/hooks/useAppState.d.ts.map +1 -1
  70. package/dist/hooks/useAppState.js +11 -7
  71. package/dist/hooks/useAppState.js.map +1 -1
  72. package/dist/hooks/useChatHandler.d.ts +2 -2
  73. package/dist/hooks/useChatHandler.d.ts.map +1 -1
  74. package/dist/hooks/useChatHandler.js +186 -111
  75. package/dist/hooks/useChatHandler.js.map +1 -1
  76. package/dist/hooks/useModeHandlers.d.ts +4 -4
  77. package/dist/hooks/useModeHandlers.d.ts.map +1 -1
  78. package/dist/hooks/useModeHandlers.js +9 -9
  79. package/dist/hooks/useModeHandlers.js.map +1 -1
  80. package/dist/mcp/mcp-client.d.ts.map +1 -1
  81. package/dist/mcp/mcp-client.js +16 -6
  82. package/dist/mcp/mcp-client.js.map +1 -1
  83. package/dist/message-handler.js +1 -1
  84. package/dist/message-handler.js.map +1 -1
  85. package/dist/model-database/database-engine.d.ts +25 -0
  86. package/dist/model-database/database-engine.d.ts.map +1 -0
  87. package/dist/model-database/database-engine.js +37 -0
  88. package/dist/model-database/database-engine.js.map +1 -0
  89. package/dist/model-database/database-engine.spec.d.ts +2 -0
  90. package/dist/model-database/database-engine.spec.d.ts.map +1 -0
  91. package/dist/model-database/database-engine.spec.js +413 -0
  92. package/dist/model-database/database-engine.spec.js.map +1 -0
  93. package/dist/model-database/model-database.d.ts +30 -0
  94. package/dist/model-database/model-database.d.ts.map +1 -0
  95. package/dist/model-database/model-database.js +82 -0
  96. package/dist/model-database/model-database.js.map +1 -0
  97. package/dist/model-database/model-database.spec.d.ts +2 -0
  98. package/dist/model-database/model-database.spec.d.ts.map +1 -0
  99. package/dist/model-database/model-database.spec.js +322 -0
  100. package/dist/model-database/model-database.spec.js.map +1 -0
  101. package/dist/model-database/model-engine.d.ts +25 -0
  102. package/dist/model-database/model-engine.d.ts.map +1 -0
  103. package/dist/model-database/model-engine.js +49 -0
  104. package/dist/model-database/model-engine.js.map +1 -0
  105. package/dist/model-database/model-engine.spec.d.ts +2 -0
  106. package/dist/model-database/model-engine.spec.d.ts.map +1 -0
  107. package/dist/model-database/model-engine.spec.js +381 -0
  108. package/dist/model-database/model-engine.spec.js.map +1 -0
  109. package/dist/model-database/model-fetcher.d.ts +14 -0
  110. package/dist/model-database/model-fetcher.d.ts.map +1 -0
  111. package/dist/model-database/model-fetcher.js +248 -0
  112. package/dist/model-database/model-fetcher.js.map +1 -0
  113. package/dist/model-database/model-fetcher.spec.d.ts +2 -0
  114. package/dist/model-database/model-fetcher.spec.d.ts.map +1 -0
  115. package/dist/model-database/model-fetcher.spec.js +498 -0
  116. package/dist/model-database/model-fetcher.spec.js.map +1 -0
  117. package/dist/models/models-dev-client.d.ts.map +1 -1
  118. package/dist/models/models-dev-client.js +8 -0
  119. package/dist/models/models-dev-client.js.map +1 -1
  120. package/dist/tool-calling/json-parser.d.ts.map +1 -1
  121. package/dist/tool-calling/json-parser.js +10 -4
  122. package/dist/tool-calling/json-parser.js.map +1 -1
  123. package/dist/tool-calling/tool-parser.d.ts.map +1 -1
  124. package/dist/tool-calling/tool-parser.js +37 -9
  125. package/dist/tool-calling/tool-parser.js.map +1 -1
  126. package/dist/tool-calling/tool-parser.spec.js +79 -1
  127. package/dist/tool-calling/tool-parser.spec.js.map +1 -1
  128. package/dist/tool-calling/xml-parser.d.ts.map +1 -1
  129. package/dist/tool-calling/xml-parser.js +21 -23
  130. package/dist/tool-calling/xml-parser.js.map +1 -1
  131. package/dist/tool-calling/xml-parser.spec.js +23 -3
  132. package/dist/tool-calling/xml-parser.spec.js.map +1 -1
  133. package/dist/tools/create-file.d.ts +24 -2
  134. package/dist/tools/create-file.d.ts.map +1 -1
  135. package/dist/tools/create-file.js +14 -10
  136. package/dist/tools/create-file.js.map +1 -1
  137. package/dist/tools/delete-lines.d.ts +18 -2
  138. package/dist/tools/delete-lines.d.ts.map +1 -1
  139. package/dist/tools/delete-lines.js +14 -9
  140. package/dist/tools/delete-lines.js.map +1 -1
  141. package/dist/tools/execute-bash.d.ts +2 -2
  142. package/dist/tools/execute-bash.d.ts.map +1 -1
  143. package/dist/tools/execute-bash.js +10 -9
  144. package/dist/tools/execute-bash.js.map +1 -1
  145. package/dist/tools/execute-function.spec.d.ts +2 -0
  146. package/dist/tools/execute-function.spec.d.ts.map +1 -0
  147. package/dist/tools/execute-function.spec.js +141 -0
  148. package/dist/tools/execute-function.spec.js.map +1 -0
  149. package/dist/tools/fetch-url.d.ts +16 -2
  150. package/dist/tools/fetch-url.d.ts.map +1 -1
  151. package/dist/tools/fetch-url.js +10 -10
  152. package/dist/tools/fetch-url.js.map +1 -1
  153. package/dist/tools/find-files.d.ts +18 -2
  154. package/dist/tools/find-files.d.ts.map +1 -1
  155. package/dist/tools/find-files.js +7 -5
  156. package/dist/tools/find-files.js.map +1 -1
  157. package/dist/tools/index.d.ts +2 -3
  158. package/dist/tools/index.d.ts.map +1 -1
  159. package/dist/tools/index.js +30 -20
  160. package/dist/tools/index.js.map +1 -1
  161. package/dist/tools/insert-lines.d.ts +18 -2
  162. package/dist/tools/insert-lines.d.ts.map +1 -1
  163. package/dist/tools/insert-lines.js +14 -9
  164. package/dist/tools/insert-lines.js.map +1 -1
  165. package/dist/tools/lsp-get-diagnostics.d.ts +10 -2
  166. package/dist/tools/lsp-get-diagnostics.d.ts.map +1 -1
  167. package/dist/tools/lsp-get-diagnostics.js +8 -6
  168. package/dist/tools/lsp-get-diagnostics.js.map +1 -1
  169. package/dist/tools/needs-approval.spec.d.ts +2 -0
  170. package/dist/tools/needs-approval.spec.d.ts.map +1 -0
  171. package/dist/tools/needs-approval.spec.js +308 -0
  172. package/dist/tools/needs-approval.spec.js.map +1 -0
  173. package/dist/tools/read-file.d.ts +2 -2
  174. package/dist/tools/read-file.d.ts.map +1 -1
  175. package/dist/tools/read-file.js +10 -12
  176. package/dist/tools/read-file.js.map +1 -1
  177. package/dist/tools/replace-lines.d.ts +19 -2
  178. package/dist/tools/replace-lines.d.ts.map +1 -1
  179. package/dist/tools/replace-lines.js +14 -9
  180. package/dist/tools/replace-lines.js.map +1 -1
  181. package/dist/tools/search-file-contents.d.ts +20 -2
  182. package/dist/tools/search-file-contents.d.ts.map +1 -1
  183. package/dist/tools/search-file-contents.js +11 -8
  184. package/dist/tools/search-file-contents.js.map +1 -1
  185. package/dist/tools/web-search.d.ts +2 -2
  186. package/dist/tools/web-search.d.ts.map +1 -1
  187. package/dist/tools/web-search.js +10 -10
  188. package/dist/tools/web-search.js.map +1 -1
  189. package/dist/types/app.d.ts +1 -1
  190. package/dist/types/app.d.ts.map +1 -1
  191. package/dist/types/config.d.ts +4 -1
  192. package/dist/types/config.d.ts.map +1 -1
  193. package/dist/types/core-connection-status.spec.d.ts +2 -0
  194. package/dist/types/core-connection-status.spec.d.ts.map +1 -0
  195. package/dist/types/core-connection-status.spec.js +52 -0
  196. package/dist/types/core-connection-status.spec.js.map +1 -0
  197. package/dist/types/core.d.ts +33 -28
  198. package/dist/types/core.d.ts.map +1 -1
  199. package/dist/types/core.js.map +1 -1
  200. package/dist/types/system.d.ts +5 -30
  201. package/dist/types/system.d.ts.map +1 -1
  202. package/dist/utils/prompt-processor.d.ts +2 -3
  203. package/dist/utils/prompt-processor.d.ts.map +1 -1
  204. package/dist/utils/prompt-processor.js +2 -50
  205. package/dist/utils/prompt-processor.js.map +1 -1
  206. package/dist/wizard/templates/provider-templates.d.ts.map +1 -1
  207. package/dist/wizard/templates/provider-templates.js +34 -2
  208. package/dist/wizard/templates/provider-templates.js.map +1 -1
  209. package/package.json +6 -5
  210. package/source/app/prompts/main-prompt.md +29 -96
  211. package/dist/commands/recommendations.d.ts +0 -8
  212. package/dist/commands/recommendations.d.ts.map +0 -1
  213. package/dist/commands/recommendations.js +0 -311
  214. package/dist/commands/recommendations.js.map +0 -1
  215. package/dist/commands/streaming.d.ts +0 -3
  216. package/dist/commands/streaming.d.ts.map +0 -1
  217. package/dist/commands/streaming.js +0 -23
  218. package/dist/commands/streaming.js.map +0 -1
  219. package/dist/components/thinking-indicator.d.ts +0 -3
  220. package/dist/components/thinking-indicator.d.ts.map +0 -1
  221. package/dist/components/thinking-indicator.js +0 -69
  222. package/dist/components/thinking-indicator.js.map +0 -1
  223. package/dist/recommendations/model-database.d.ts +0 -8
  224. package/dist/recommendations/model-database.d.ts.map +0 -1
  225. package/dist/recommendations/model-database.js +0 -514
  226. package/dist/recommendations/model-database.js.map +0 -1
  227. package/dist/recommendations/model-engine.d.ts +0 -16
  228. package/dist/recommendations/model-engine.d.ts.map +0 -1
  229. package/dist/recommendations/model-engine.js +0 -185
  230. package/dist/recommendations/model-engine.js.map +0 -1
  231. package/dist/recommendations/recommendation-engine.d.ts +0 -39
  232. package/dist/recommendations/recommendation-engine.d.ts.map +0 -1
  233. package/dist/recommendations/recommendation-engine.js +0 -144
  234. package/dist/recommendations/recommendation-engine.js.map +0 -1
  235. package/dist/system/detector.d.ts +0 -18
  236. package/dist/system/detector.d.ts.map +0 -1
  237. package/dist/system/detector.js +0 -140
  238. package/dist/system/detector.js.map +0 -1
@@ -1,17 +1,106 @@
1
1
  import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
2
- import { generateText, streamText } from 'ai';
2
+ import { generateText, stepCountIs, RetryError, APICallError } from 'ai';
3
3
  import { Agent, fetch as undiciFetch } from 'undici';
4
4
  import { XMLToolCallParser } from './tool-calling/xml-parser.js';
5
5
  import { getModelContextLimit } from './models/index.js';
6
6
  /**
7
- * Parses API errors into user-friendly messages
7
+ * Checks if an assistant message is empty (no content and no tool calls).
8
+ * Empty assistant messages cause API errors:
9
+ * "400 Bad Request: Assistant message must have either content or tool_calls, but not none."
10
+ *
11
+ * Exported for testing purposes.
12
+ */
13
+ export function isEmptyAssistantMessage(message) {
14
+ if (message.role !== 'assistant') {
15
+ return false;
16
+ }
17
+ // Check for content - handle both string and array content formats
18
+ const hasContent = Array.isArray(message.content)
19
+ ? message.content.length > 0
20
+ : typeof message.content === 'string' && message.content.trim().length > 0;
21
+ // Tool calls are in a separate property for AI SDK messages
22
+ const hasToolCalls = 'toolCalls' in message &&
23
+ Array.isArray(message.toolCalls) &&
24
+ message.toolCalls.length > 0;
25
+ return !hasContent && !hasToolCalls;
26
+ }
27
+ /**
28
+ * Extracts the root cause error from AI SDK error wrappers.
29
+ * AI SDK wraps errors in RetryError which contains lastError.
30
+ */
31
+ function extractRootError(error) {
32
+ // Handle AI SDK RetryError - extract the last error
33
+ if (RetryError.isInstance(error)) {
34
+ if (error.lastError) {
35
+ return extractRootError(error.lastError);
36
+ }
37
+ }
38
+ return error;
39
+ }
40
+ /**
41
+ * Parses API errors into user-friendly messages.
42
+ * Exported for testing purposes.
8
43
  */
9
- function parseAPIError(error) {
10
- if (!(error instanceof Error)) {
44
+ export function parseAPIError(error) {
45
+ // First extract the root error from any wrappers
46
+ const rootError = extractRootError(error);
47
+ if (!(rootError instanceof Error)) {
11
48
  return 'An unknown error occurred while communicating with the model';
12
49
  }
13
- const errorMessage = error.message;
14
- // Extract status code and clean message from common error patterns
50
+ // Handle AI SDK APICallError - it has statusCode and responseBody
51
+ if (APICallError.isInstance(rootError)) {
52
+ const statusCode = rootError.statusCode;
53
+ // Try to extract a clean message from responseBody or use the error message
54
+ let cleanMessage = rootError.message;
55
+ // Parse the response body if available for more details
56
+ if (rootError.responseBody) {
57
+ try {
58
+ const body = JSON.parse(rootError.responseBody);
59
+ if (body.error?.message) {
60
+ cleanMessage = body.error.message;
61
+ }
62
+ else if (body.message) {
63
+ cleanMessage = body.message;
64
+ }
65
+ }
66
+ catch {
67
+ // If not JSON, try to extract message from the raw response
68
+ const msgMatch = rootError.responseBody.match(/["']?message["']?\s*[:=]\s*["']([^"']+)["']/i);
69
+ if (msgMatch) {
70
+ cleanMessage = msgMatch[1];
71
+ }
72
+ }
73
+ }
74
+ // Format based on status code
75
+ if (statusCode) {
76
+ switch (statusCode) {
77
+ case 400:
78
+ return `Bad request: ${cleanMessage}`;
79
+ case 401:
80
+ return 'Authentication failed: Invalid API key or credentials';
81
+ case 403:
82
+ return 'Access forbidden: Check your API permissions';
83
+ case 404:
84
+ return 'Model not found: The requested model may not exist or is unavailable';
85
+ case 429:
86
+ if (cleanMessage.includes('usage limit') ||
87
+ cleanMessage.includes('quota')) {
88
+ return `Rate limit: ${cleanMessage}`;
89
+ }
90
+ return 'Rate limit exceeded: Too many requests. Please wait and try again';
91
+ case 500:
92
+ case 502:
93
+ case 503:
94
+ return `Server error: ${cleanMessage}`;
95
+ default:
96
+ return `Request failed (${statusCode}): ${cleanMessage}`;
97
+ }
98
+ }
99
+ }
100
+ const errorMessage = rootError.message;
101
+ // Extract status code and clean message from common error patterns FIRST
102
+ // This ensures HTTP status codes are properly parsed before falling through
103
+ // to more generic pattern matching (like Ollama-specific errors)
15
104
  const statusMatch = errorMessage.match(/(?:Error: )?(\d{3})\s+(?:\d{3}\s+)?(?:Bad Request|[^:]+):\s*(.+)/i);
16
105
  if (statusMatch) {
17
106
  const [, statusCode, message] = statusMatch;
@@ -26,6 +115,11 @@ function parseAPIError(error) {
26
115
  case '404':
27
116
  return 'Model not found: The requested model may not exist or is unavailable';
28
117
  case '429':
118
+ // Include the original message if it has useful details
119
+ if (cleanMessage.includes('usage limit') ||
120
+ cleanMessage.includes('quota')) {
121
+ return `Rate limit: ${cleanMessage}`;
122
+ }
29
123
  return 'Rate limit exceeded: Too many requests. Please wait and try again';
30
124
  case '500':
31
125
  case '502':
@@ -35,6 +129,21 @@ function parseAPIError(error) {
35
129
  return `Request failed (${statusCode}): ${cleanMessage}`;
36
130
  }
37
131
  }
132
+ // Handle Ollama-specific unmarshal/JSON parsing errors
133
+ // This runs AFTER status code parsing to avoid misclassifying HTTP errors
134
+ // that happen to contain JSON parsing error text in their message
135
+ if (errorMessage.includes('unmarshal') ||
136
+ (errorMessage.includes('invalid character') &&
137
+ errorMessage.includes('after top-level value'))) {
138
+ return ('Ollama server error: The model returned malformed JSON. ' +
139
+ 'This usually indicates an issue with the Ollama server or model. ' +
140
+ 'Try:\n' +
141
+ ' 1. Restart Ollama: systemctl restart ollama (Linux) or restart the Ollama app\n' +
142
+ ' 2. Re-pull the model: ollama pull <model-name>\n' +
143
+ ' 3. Check Ollama logs for more details\n' +
144
+ ' 4. Try a different model to see if the issue is model-specific\n' +
145
+ `Original error: ${errorMessage}`);
146
+ }
38
147
  // Handle timeout errors
39
148
  if (errorMessage.includes('timeout') || errorMessage.includes('ETIMEDOUT')) {
40
149
  return 'Request timed out: The model took too long to respond';
@@ -107,11 +216,14 @@ export class AISDKClient {
107
216
  providerConfig;
108
217
  undiciAgent;
109
218
  cachedContextSize;
219
+ maxRetries;
110
220
  constructor(providerConfig) {
111
221
  this.providerConfig = providerConfig;
112
222
  this.availableModels = providerConfig.models;
113
223
  this.currentModel = providerConfig.models[0] || '';
114
224
  this.cachedContextSize = 0;
225
+ // Default to 2 retries (same as AI SDK default), or use configured value
226
+ this.maxRetries = providerConfig.maxRetries ?? 2;
115
227
  const { requestTimeout, socketTimeout, connectionPool } = this.providerConfig;
116
228
  const resolvedSocketTimeout = socketTimeout === -1
117
229
  ? 0
@@ -184,110 +296,16 @@ export class AISDKClient {
184
296
  getContextSize() {
185
297
  return this.cachedContextSize;
186
298
  }
299
+ getMaxRetries() {
300
+ return this.maxRetries;
301
+ }
187
302
  getAvailableModels() {
188
303
  return Promise.resolve(this.availableModels);
189
304
  }
190
- async chat(messages, tools, signal) {
191
- // Check if already aborted before starting
192
- if (signal?.aborted) {
193
- throw new Error('Operation was cancelled');
194
- }
195
- try {
196
- // Get the language model instance from the provider
197
- const model = this.provider(this.currentModel);
198
- // Tools are already in AI SDK format - use directly
199
- const aiTools = Object.keys(tools).length > 0 ? tools : undefined;
200
- // Convert messages to AI SDK v5 ModelMessage format
201
- const modelMessages = convertToModelMessages(messages);
202
- // Use generateText for non-streaming
203
- const result = await generateText({
204
- model,
205
- messages: modelMessages,
206
- tools: aiTools,
207
- abortSignal: signal,
208
- });
209
- // Extract tool calls from result
210
- const toolCalls = [];
211
- if (result.toolCalls && result.toolCalls.length > 0) {
212
- for (const toolCall of result.toolCalls) {
213
- toolCalls.push({
214
- // Some providers (like Ollama) don't provide toolCallId, so generate one
215
- id: toolCall.toolCallId ||
216
- `tool_${Date.now()}_${Math.random().toString(36).substring(7)}`,
217
- function: {
218
- name: toolCall.toolName,
219
- // AI SDK v5 uses 'input' for tool arguments
220
- arguments: toolCall.input,
221
- },
222
- });
223
- }
224
- }
225
- // If no native tool calls but tools are available, try XML parsing
226
- let content = result.text;
227
- if (Object.keys(tools).length > 0 && toolCalls.length === 0 && content) {
228
- // First check for malformed XML tool calls
229
- const malformedError = XMLToolCallParser.detectMalformedToolCall(content);
230
- if (malformedError) {
231
- // Return malformed tool call with validation error
232
- // This mimics how validators work - returns tool call that will show error
233
- toolCalls.push({
234
- id: 'malformed_xml_validation',
235
- function: {
236
- name: '__xml_validation_error__',
237
- arguments: {
238
- error: malformedError.error,
239
- },
240
- },
241
- });
242
- content = ''; // Clear content since it was malformed
243
- }
244
- else if (XMLToolCallParser.hasToolCalls(content)) {
245
- // Try to parse well-formed XML tool calls
246
- const parsedToolCalls = XMLToolCallParser.parseToolCalls(content);
247
- const xmlToolCalls = XMLToolCallParser.convertToToolCalls(parsedToolCalls);
248
- const cleanedContent = XMLToolCallParser.removeToolCallsFromContent(content);
249
- content = cleanedContent;
250
- toolCalls.push(...xmlToolCalls);
251
- }
252
- }
253
- return {
254
- choices: [
255
- {
256
- message: {
257
- role: 'assistant',
258
- content,
259
- tool_calls: toolCalls.length > 0 ? toolCalls : undefined,
260
- },
261
- },
262
- ],
263
- };
264
- }
265
- catch (error) {
266
- // Check if this was a cancellation
267
- if (error instanceof Error && error.name === 'AbortError') {
268
- throw new Error('Operation was cancelled');
269
- }
270
- // Check for AI SDK's NoOutputGeneratedError (thrown when stream is aborted)
271
- if (error instanceof Error &&
272
- (error.name === 'AI_NoOutputGeneratedError' ||
273
- error.message.includes('No output generated'))) {
274
- throw new Error('Operation was cancelled');
275
- }
276
- // Log detailed error for debugging
277
- console.error('AI SDK Error:', error);
278
- if (error instanceof Error) {
279
- console.error('Error message:', error.message);
280
- console.error('Error stack:', error.stack);
281
- }
282
- // Parse and throw a user-friendly error
283
- const userMessage = parseAPIError(error);
284
- throw new Error(userMessage);
285
- }
286
- }
287
305
  /**
288
306
  * Stream chat with real-time token updates
289
307
  */
290
- async chatStream(messages, tools, callbacks, signal) {
308
+ async chat(messages, tools, callbacks, signal) {
291
309
  // Check if already aborted before starting
292
310
  if (signal?.aborted) {
293
311
  throw new Error('Operation was cancelled');
@@ -299,21 +317,63 @@ export class AISDKClient {
299
317
  const aiTools = Object.keys(tools).length > 0 ? tools : undefined;
300
318
  // Convert messages to AI SDK v5 ModelMessage format
301
319
  const modelMessages = convertToModelMessages(messages);
302
- // Use streamText for streaming
303
- const result = streamText({
320
+ // Tools with needsApproval: false auto-execute in the loop
321
+ // Tools with needsApproval: true cause interruptions for manual approval
322
+ // stopWhen controls when the tool loop stops (max 10 steps)
323
+ const result = await generateText({
304
324
  model,
305
325
  messages: modelMessages,
306
326
  tools: aiTools,
307
327
  abortSignal: signal,
328
+ maxRetries: this.maxRetries,
329
+ temperature: 0.6,
330
+ stopWhen: stepCountIs(10), // Allow up to 10 tool execution steps
331
+ // Can be used to add custom logging, metrics, or step tracking
332
+ onStepFinish(step) {
333
+ // Display formatters for auto-executed tools (after execution with results)
334
+ if (step.toolCalls &&
335
+ step.toolResults &&
336
+ step.toolCalls.length === step.toolResults.length) {
337
+ step.toolCalls.forEach((toolCall, idx) => {
338
+ const toolResult = step.toolResults[idx];
339
+ const tc = {
340
+ id: toolCall.toolCallId ||
341
+ `tool_${Date.now()}_${Math.random()
342
+ .toString(36)
343
+ .substring(7)}`,
344
+ function: {
345
+ name: toolCall.toolName,
346
+ arguments: toolCall.input,
347
+ },
348
+ };
349
+ const resultStr = typeof toolResult.output === 'string'
350
+ ? toolResult.output
351
+ : JSON.stringify(toolResult.output);
352
+ callbacks.onToolExecuted?.(tc, resultStr);
353
+ });
354
+ }
355
+ },
356
+ prepareStep: ({ messages }) => {
357
+ // Filter out empty assistant messages that would cause API errors
358
+ // "Assistant message must have either content or tool_calls"
359
+ const filteredMessages = messages.filter(m => !isEmptyAssistantMessage(m));
360
+ // Return filtered messages if any were removed, otherwise no changes
361
+ if (filteredMessages.length !== messages.length) {
362
+ return { messages: filteredMessages };
363
+ }
364
+ return {}; // No modifications needed
365
+ },
308
366
  });
309
- // Stream tokens
310
- let fullText = '';
311
- for await (const chunk of result.textStream) {
312
- fullText += chunk;
313
- callbacks.onToken?.(chunk);
367
+ // Get the full text from the result
368
+ const fullText = result.text;
369
+ // Send the complete text to the callback
370
+ if (fullText) {
371
+ callbacks.onToken?.(fullText);
314
372
  }
315
- // Wait for completion to get tool calls
316
- const toolCallsResult = await result.toolCalls;
373
+ // Get tool calls from result
374
+ const toolCallsResult = result.toolCalls;
375
+ // Can inspect result.steps to see auto-executed tool calls and results
376
+ // const steps = await result.steps;
317
377
  // Extract tool calls
318
378
  const toolCalls = [];
319
379
  if (toolCallsResult && toolCallsResult.length > 0) {
@@ -329,7 +389,7 @@ export class AISDKClient {
329
389
  },
330
390
  };
331
391
  toolCalls.push(tc);
332
- callbacks.onToolCall?.(tc);
392
+ // Note: onToolCall already fired in onStepFinish - no need to call again
333
393
  }
334
394
  }
335
395
  // Check for XML tool calls if no native ones
@@ -379,23 +439,26 @@ export class AISDKClient {
379
439
  };
380
440
  }
381
441
  catch (error) {
382
- // Check if this was a cancellation
442
+ // Check if this was a user-initiated cancellation
383
443
  if (error instanceof Error && error.name === 'AbortError') {
384
444
  throw new Error('Operation was cancelled');
385
445
  }
386
- // Check for AI SDK's NoOutputGeneratedError (thrown when stream is aborted)
446
+ // AI SDK wraps errors in NoOutputGeneratedError with no useful cause
447
+ // Check if it's a cancellation without an underlying API error
387
448
  if (error instanceof Error &&
388
449
  (error.name === 'AI_NoOutputGeneratedError' ||
389
450
  error.message.includes('No output generated'))) {
390
- throw new Error('Operation was cancelled');
391
- }
392
- // Log detailed error for debugging
393
- console.error('AI SDK Error:', error);
394
- if (error instanceof Error) {
395
- console.error('Error message:', error.message);
396
- console.error('Error stack:', error.stack);
451
+ // Check if there's an underlying RetryError with the real cause
452
+ const rootError = extractRootError(error);
453
+ if (rootError === error) {
454
+ // No underlying error - this is just a cancellation
455
+ throw new Error('Operation was cancelled');
456
+ }
457
+ // There's a real error underneath, parse it
458
+ const userMessage = parseAPIError(rootError);
459
+ throw new Error(userMessage);
397
460
  }
398
- // Parse and throw a user-friendly error
461
+ // Parse any other error (including RetryError and APICallError)
399
462
  const userMessage = parseAPIError(error);
400
463
  throw new Error(userMessage);
401
464
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ai-sdk-client.js","sourceRoot":"","sources":["../source/ai-sdk-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-sdk-client.js","sourceRoot":"","sources":["../source/ai-sdk-client.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import InfoMessage from '../../components/info-message.js';
6
6
  import ToolMessage from '../../components/tool-message.js';
7
7
  import ErrorMessage from '../../components/error-message.js';
8
8
  export async function handleMessageSubmission(message, options) {
9
- const { customCommandCache, customCommandLoader, customCommandExecutor, onClearMessages, onEnterModelSelectionMode, onEnterProviderSelectionMode, onEnterThemeSelectionMode, onEnterRecommendationsMode, onEnterConfigWizardMode, onShowStatus, onHandleChatMessage, onAddToChatQueue, componentKeyCounter, setMessages, messages, setIsBashExecuting, setCurrentBashCommand, } = options;
9
+ const { customCommandCache, customCommandLoader, customCommandExecutor, onClearMessages, onEnterModelSelectionMode, onEnterProviderSelectionMode, onEnterThemeSelectionMode, onEnterModelDatabaseMode, onEnterConfigWizardMode, onShowStatus, onHandleChatMessage, onAddToChatQueue, componentKeyCounter, setMessages, messages, setIsBashExecuting, setCurrentBashCommand, } = options;
10
10
  // Parse the input to determine its type
11
11
  const parsedInput = parseInput(message);
12
12
  // Handle bash commands (prefixed with !)
@@ -108,8 +108,8 @@ ${result.fullOutput || '(No output)'}`;
108
108
  onEnterThemeSelectionMode();
109
109
  return;
110
110
  }
111
- else if (commandName === 'recommendations') {
112
- onEnterRecommendationsMode();
111
+ else if (commandName === 'model-database') {
112
+ onEnterModelDatabaseMode();
113
113
  return;
114
114
  }
115
115
  else if (commandName === 'setup-config') {
@@ -1 +1 @@
1
- {"version":3,"file":"appUtils.js","sourceRoot":"","sources":["../../../source/app/utils/appUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"appUtils.js","sourceRoot":"","sources":["../../../source/app/utils/appUtils.ts"],"names":[],"mappings":"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"}
package/dist/app.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../source/app.tsx"],"names":[],"mappings":"AA0CA,UAAU,QAAQ;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,EAAC,UAAkB,EAAE,UAAU,EAAC,EAAE,QAAQ,2CAmbrE"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../source/app.tsx"],"names":[],"mappings":"AA0CA,UAAU,QAAQ;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,EAAC,UAAkB,EAAE,UAAU,EAAC,EAAE,QAAQ,2CAicrE"}
package/dist/app.js CHANGED
@@ -10,7 +10,6 @@ import ChatQueue from './components/chat-queue.js';
10
10
  import ModelSelector from './components/model-selector.js';
11
11
  import ProviderSelector from './components/provider-selector.js';
12
12
  import ThemeSelector from './components/theme-selector.js';
13
- import ThinkingIndicator from './components/thinking-indicator.js';
14
13
  import CancellingIndicator from './components/cancelling-indicator.js';
15
14
  import ToolConfirmation from './components/tool-confirmation.js';
16
15
  import ToolExecutionIndicator from './components/tool-execution-indicator.js';
@@ -18,9 +17,10 @@ import BashExecutionIndicator from './components/bash-execution-indicator.js';
18
17
  import { setGlobalMessageQueue } from './utils/message-queue.js';
19
18
  import Spinner from 'ink-spinner';
20
19
  import SecurityDisclaimer from './components/security-disclaimer.js';
21
- import { RecommendationsDisplay } from './commands/recommendations.js';
20
+ import { ModelDatabaseDisplay } from './commands/model-database.js';
22
21
  import { ConfigWizard } from './wizard/config-wizard.js';
23
22
  import { VSCodeExtensionPrompt, shouldPromptExtensionInstall, } from './components/vscode-extension-prompt.js';
23
+ import { setCurrentMode as setCurrentModeContext } from './context/mode-context.js';
24
24
  // Import extracted hooks and utilities
25
25
  import { useAppState } from './hooks/useAppState.js';
26
26
  import { useChatHandler } from './hooks/useChatHandler.js';
@@ -37,6 +37,10 @@ export default function App({ vscodeMode = false, vscodePort }) {
37
37
  const appState = useAppState();
38
38
  const { exit } = useApp();
39
39
  const { isTrusted, handleConfirmTrust, isTrustLoading, isTrustedError } = useDirectoryTrust();
40
+ // Sync global mode context whenever development mode changes
41
+ React.useEffect(() => {
42
+ setCurrentModeContext(appState.developmentMode);
43
+ }, [appState.developmentMode]);
40
44
  // VS Code extension installation prompt state
41
45
  const [showExtensionPrompt, setShowExtensionPrompt] = React.useState(() => vscodeMode && shouldPromptExtensionInstall());
42
46
  const [extensionPromptComplete, setExtensionPromptComplete] = React.useState(false);
@@ -79,8 +83,8 @@ export default function App({ vscodeMode = false, vscodePort }) {
79
83
  toolManager: appState.toolManager,
80
84
  messages: appState.messages,
81
85
  setMessages: appState.updateMessages,
86
+ currentProvider: appState.currentProvider,
82
87
  currentModel: appState.currentModel,
83
- setIsThinking: appState.setIsThinking,
84
88
  setIsCancelling: appState.setIsCancelling,
85
89
  addToChatQueue: appState.addToChatQueue,
86
90
  componentKeyCounter: appState.componentKeyCounter,
@@ -132,6 +136,8 @@ export default function App({ vscodeMode = false, vscodePort }) {
132
136
  setStartChat: appState.setStartChat,
133
137
  setMcpInitialized: appState.setMcpInitialized,
134
138
  setUpdateInfo: appState.setUpdateInfo,
139
+ setMcpServersStatus: appState.setMcpServersStatus,
140
+ setLspServersStatus: appState.setLspServersStatus,
135
141
  addToChatQueue: appState.addToChatQueue,
136
142
  componentKeyCounter: appState.componentKeyCounter,
137
143
  customCommandCache: appState.customCommandCache,
@@ -151,7 +157,7 @@ export default function App({ vscodeMode = false, vscodePort }) {
151
157
  setIsModelSelectionMode: appState.setIsModelSelectionMode,
152
158
  setIsProviderSelectionMode: appState.setIsProviderSelectionMode,
153
159
  setIsThemeSelectionMode: appState.setIsThemeSelectionMode,
154
- setIsRecommendationsMode: appState.setIsRecommendationsMode,
160
+ setIsModelDatabaseMode: appState.setIsModelDatabaseMode,
155
161
  setIsConfigWizardMode: appState.setIsConfigWizardMode,
156
162
  addToChatQueue: appState.addToChatQueue,
157
163
  componentKeyCounter: appState.componentKeyCounter,
@@ -174,11 +180,14 @@ export default function App({ vscodeMode = false, vscodePort }) {
174
180
  ];
175
181
  const currentIndex = modes.indexOf(currentMode);
176
182
  const nextIndex = (currentIndex + 1) % modes.length;
177
- return modes[nextIndex];
183
+ const nextMode = modes[nextIndex];
184
+ // Sync global mode context for tool needsApproval logic
185
+ setCurrentModeContext(nextMode);
186
+ return nextMode;
178
187
  });
179
188
  }, [appState]);
180
189
  const handleShowStatus = React.useCallback(() => {
181
- appState.addToChatQueue(_jsx(Status, { provider: appState.currentProvider, model: appState.currentModel, theme: appState.currentTheme, updateInfo: appState.updateInfo }, `status-${appState.componentKeyCounter}`));
190
+ appState.addToChatQueue(_jsx(Status, { provider: appState.currentProvider, model: appState.currentModel, theme: appState.currentTheme, updateInfo: appState.updateInfo, mcpServersStatus: appState.mcpServersStatus, lspServersStatus: appState.lspServersStatus }, `status-${appState.componentKeyCounter}`));
182
191
  }, [appState]);
183
192
  const handleMessageSubmit = React.useCallback(async (message) => {
184
193
  await handleMessageSubmission(message, {
@@ -189,7 +198,7 @@ export default function App({ vscodeMode = false, vscodePort }) {
189
198
  onEnterModelSelectionMode: modeHandlers.enterModelSelectionMode,
190
199
  onEnterProviderSelectionMode: modeHandlers.enterProviderSelectionMode,
191
200
  onEnterThemeSelectionMode: modeHandlers.enterThemeSelectionMode,
192
- onEnterRecommendationsMode: modeHandlers.enterRecommendationsMode,
201
+ onEnterModelDatabaseMode: modeHandlers.enterModelDatabaseMode,
193
202
  onEnterConfigWizardMode: modeHandlers.enterConfigWizardMode,
194
203
  onShowStatus: handleShowStatus,
195
204
  onHandleChatMessage: chatHandler.handleChatMessage,
@@ -213,7 +222,7 @@ export default function App({ vscodeMode = false, vscodePort }) {
213
222
  modeHandlers.enterModelSelectionMode,
214
223
  modeHandlers.enterProviderSelectionMode,
215
224
  modeHandlers.enterThemeSelectionMode,
216
- modeHandlers.enterRecommendationsMode,
225
+ modeHandlers.enterModelDatabaseMode,
217
226
  modeHandlers.enterConfigWizardMode,
218
227
  handleShowStatus,
219
228
  chatHandler.handleChatMessage,
@@ -232,12 +241,14 @@ export default function App({ vscodeMode = false, vscodePort }) {
232
241
  // Memoize static components to prevent unnecessary re-renders
233
242
  const staticComponents = React.useMemo(() => [
234
243
  _jsx(WelcomeMessage, {}, "welcome"),
235
- _jsx(Status, { provider: appState.currentProvider, model: appState.currentModel, theme: appState.currentTheme, updateInfo: appState.updateInfo }, "status"),
244
+ _jsx(Status, { provider: appState.currentProvider, model: appState.currentModel, theme: appState.currentTheme, updateInfo: appState.updateInfo, mcpServersStatus: appState.mcpServersStatus, lspServersStatus: appState.lspServersStatus }, "status"),
236
245
  ], [
237
246
  appState.currentProvider,
238
247
  appState.currentModel,
239
248
  appState.currentTheme,
240
249
  appState.updateInfo,
250
+ appState.mcpServersStatus,
251
+ appState.lspServersStatus,
241
252
  ]);
242
253
  // Handle loading state for directory trust check
243
254
  if (isTrustLoading) {
@@ -261,10 +272,10 @@ export default function App({ vscodeMode = false, vscodePort }) {
261
272
  setExtensionPromptComplete(true);
262
273
  } })] }) }));
263
274
  }
264
- return (_jsx(ThemeContext.Provider, { value: themeContextValue, children: _jsx(UIStateProvider, { children: _jsxs(Box, { flexDirection: "column", padding: 1, width: "100%", children: [_jsx(Box, { flexGrow: 1, flexDirection: "column", minHeight: 0, children: appState.startChat && (_jsx(ChatQueue, { staticComponents: staticComponents, queuedComponents: appState.chatComponents })) }), appState.startChat && (_jsxs(Box, { flexDirection: "column", marginLeft: -1, children: [appState.isCancelling ? (_jsx(CancellingIndicator, {})) : appState.isThinking && !chatHandler.isStreaming ? (_jsx(ThinkingIndicator, {})) : null, chatHandler.isStreaming && chatHandler.streamingContent && (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: themeContextValue.colors.primary, bold: true, children: [appState.currentModel, ":"] }) }), _jsx(Text, { children: chatHandler.streamingContent })] })), appState.isModelSelectionMode ? (_jsx(ModelSelector, { client: appState.client, currentModel: appState.currentModel, onModelSelect: model => void modeHandlers.handleModelSelect(model), onCancel: modeHandlers.handleModelSelectionCancel })) : appState.isProviderSelectionMode ? (_jsx(ProviderSelector, { currentProvider: appState.currentProvider, onProviderSelect: provider => void modeHandlers.handleProviderSelect(provider), onCancel: modeHandlers.handleProviderSelectionCancel })) : appState.isThemeSelectionMode ? (_jsx(ThemeSelector, { onThemeSelect: modeHandlers.handleThemeSelect, onCancel: modeHandlers.handleThemeSelectionCancel })) : appState.isRecommendationsMode ? (_jsx(RecommendationsDisplay, { onCancel: modeHandlers.handleRecommendationsCancel })) : appState.isConfigWizardMode ? (_jsx(ConfigWizard, { projectDir: process.cwd(), onComplete: configPath => void modeHandlers.handleConfigWizardComplete(configPath), onCancel: modeHandlers.handleConfigWizardCancel })) : appState.isToolConfirmationMode &&
275
+ return (_jsx(ThemeContext.Provider, { value: themeContextValue, children: _jsx(UIStateProvider, { children: _jsxs(Box, { flexDirection: "column", padding: 1, width: "100%", children: [_jsx(Box, { flexGrow: 1, flexDirection: "column", minHeight: 0, children: appState.startChat && (_jsx(ChatQueue, { staticComponents: staticComponents, queuedComponents: appState.chatComponents })) }), appState.startChat && (_jsxs(Box, { flexDirection: "column", marginLeft: -1, children: [appState.isCancelling && _jsx(CancellingIndicator, {}), chatHandler.isStreaming && chatHandler.streamingContent && (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: themeContextValue.colors.primary, bold: true, children: [appState.currentModel, ":"] }) }), _jsx(Text, { children: chatHandler.streamingContent })] })), appState.isModelSelectionMode ? (_jsx(ModelSelector, { client: appState.client, currentModel: appState.currentModel, onModelSelect: model => void modeHandlers.handleModelSelect(model), onCancel: modeHandlers.handleModelSelectionCancel })) : appState.isProviderSelectionMode ? (_jsx(ProviderSelector, { currentProvider: appState.currentProvider, onProviderSelect: provider => void modeHandlers.handleProviderSelect(provider), onCancel: modeHandlers.handleProviderSelectionCancel })) : appState.isThemeSelectionMode ? (_jsx(ThemeSelector, { onThemeSelect: modeHandlers.handleThemeSelect, onCancel: modeHandlers.handleThemeSelectionCancel })) : appState.isModelDatabaseMode ? (_jsx(ModelDatabaseDisplay, { onCancel: modeHandlers.handleModelDatabaseCancel })) : appState.isConfigWizardMode ? (_jsx(ConfigWizard, { projectDir: process.cwd(), onComplete: configPath => void modeHandlers.handleConfigWizardComplete(configPath), onCancel: modeHandlers.handleConfigWizardCancel })) : appState.isToolConfirmationMode &&
265
276
  appState.pendingToolCalls[appState.currentToolIndex] ? (_jsx(ToolConfirmation, { toolCall: appState.pendingToolCalls[appState.currentToolIndex], onConfirm: toolHandler.handleToolConfirmation, onCancel: toolHandler.handleToolConfirmationCancel })) : appState.isToolExecuting &&
266
277
  appState.pendingToolCalls[appState.currentToolIndex] ? (_jsx(ToolExecutionIndicator, { toolName: appState.pendingToolCalls[appState.currentToolIndex]
267
- .function.name, currentIndex: appState.currentToolIndex, totalTools: appState.pendingToolCalls.length })) : appState.isBashExecuting ? (_jsx(BashExecutionIndicator, { command: appState.currentBashCommand })) : appState.mcpInitialized && appState.client ? (_jsx(UserInput, { customCommands: Array.from(appState.customCommandCache.keys()), onSubmit: msg => void handleMessageSubmit(msg), disabled: appState.isThinking ||
278
+ .function.name, currentIndex: appState.currentToolIndex, totalTools: appState.pendingToolCalls.length })) : appState.isBashExecuting ? (_jsx(BashExecutionIndicator, { command: appState.currentBashCommand })) : appState.mcpInitialized && appState.client ? (_jsx(UserInput, { customCommands: Array.from(appState.customCommandCache.keys()), onSubmit: msg => void handleMessageSubmit(msg), disabled: chatHandler.isStreaming ||
268
279
  appState.isToolExecuting ||
269
280
  appState.isBashExecuting, onCancel: handleCancel, onToggleMode: handleToggleDevelopmentMode, developmentMode: appState.developmentMode })) : appState.mcpInitialized && !appState.client ? (_jsx(_Fragment, {})) : (_jsxs(Text, { color: themeContextValue.colors.secondary, children: [_jsx(Spinner, { type: "dots2" }), " Loading..."] }))] }))] }) }) }));
270
281
  }