@google/gemini-cli-core 0.1.13 → 0.1.14

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 (200) hide show
  1. package/README.md +22 -1
  2. package/dist/google-gemini-cli-core-0.1.13.tgz +0 -0
  3. package/dist/src/code_assist/codeAssist.js +2 -2
  4. package/dist/src/code_assist/codeAssist.js.map +1 -1
  5. package/dist/src/code_assist/oauth2.js +9 -2
  6. package/dist/src/code_assist/oauth2.js.map +1 -1
  7. package/dist/src/code_assist/oauth2.test.js +92 -0
  8. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  9. package/dist/src/code_assist/server.d.ts +4 -6
  10. package/dist/src/code_assist/server.js +4 -69
  11. package/dist/src/code_assist/server.js.map +1 -1
  12. package/dist/src/code_assist/setup.d.ts +6 -1
  13. package/dist/src/code_assist/setup.js +4 -1
  14. package/dist/src/code_assist/setup.js.map +1 -1
  15. package/dist/src/code_assist/setup.test.js +4 -1
  16. package/dist/src/code_assist/setup.test.js.map +1 -1
  17. package/dist/src/code_assist/types.d.ts +2 -2
  18. package/dist/src/config/config.d.ts +25 -7
  19. package/dist/src/config/config.js +46 -16
  20. package/dist/src/config/config.js.map +1 -1
  21. package/dist/src/config/config.test.js +1 -23
  22. package/dist/src/config/config.test.js.map +1 -1
  23. package/dist/src/config/flashFallback.test.js +1 -1
  24. package/dist/src/config/flashFallback.test.js.map +1 -1
  25. package/dist/src/core/client.d.ts +5 -2
  26. package/dist/src/core/client.js +39 -17
  27. package/dist/src/core/client.js.map +1 -1
  28. package/dist/src/core/client.test.js +51 -0
  29. package/dist/src/core/client.test.js.map +1 -1
  30. package/dist/src/core/contentGenerator.d.ts +1 -1
  31. package/dist/src/core/contentGenerator.js +1 -1
  32. package/dist/src/core/contentGenerator.js.map +1 -1
  33. package/dist/src/core/geminiChat.d.ts +4 -3
  34. package/dist/src/core/geminiChat.js +8 -11
  35. package/dist/src/core/geminiChat.js.map +1 -1
  36. package/dist/src/core/geminiRequest.js +2 -37
  37. package/dist/src/core/geminiRequest.js.map +1 -1
  38. package/dist/src/core/logger.js +6 -0
  39. package/dist/src/core/logger.js.map +1 -1
  40. package/dist/src/core/logger.test.js +1 -1
  41. package/dist/src/core/logger.test.js.map +1 -1
  42. package/dist/src/core/nonInteractiveToolExecutor.test.js +5 -5
  43. package/dist/src/core/prompts.js +42 -18
  44. package/dist/src/core/prompts.js.map +1 -1
  45. package/dist/src/core/prompts.test.js +121 -4
  46. package/dist/src/core/prompts.test.js.map +1 -1
  47. package/dist/src/core/turn.d.ts +7 -2
  48. package/dist/src/core/turn.js +9 -0
  49. package/dist/src/core/turn.js.map +1 -1
  50. package/dist/src/core/turn.test.js +129 -0
  51. package/dist/src/core/turn.test.js.map +1 -1
  52. package/dist/src/ide/ide-client.d.ts +28 -0
  53. package/dist/src/ide/ide-client.js +79 -0
  54. package/dist/src/ide/ide-client.js.map +1 -0
  55. package/dist/src/ide/ideContext.d.ts +174 -0
  56. package/dist/src/{services → ide}/ideContext.js +28 -25
  57. package/dist/src/ide/ideContext.js.map +1 -0
  58. package/dist/src/{services → ide}/ideContext.test.js +39 -39
  59. package/dist/src/ide/ideContext.test.js.map +1 -0
  60. package/dist/src/index.d.ts +3 -1
  61. package/dist/src/index.js +4 -1
  62. package/dist/src/index.js.map +1 -1
  63. package/dist/src/mcp/google-auth-provider.d.ts +23 -0
  64. package/dist/src/mcp/google-auth-provider.js +63 -0
  65. package/dist/src/mcp/google-auth-provider.js.map +1 -0
  66. package/dist/src/mcp/google-auth-provider.test.js +54 -0
  67. package/dist/src/mcp/google-auth-provider.test.js.map +1 -0
  68. package/dist/src/services/loopDetectionService.d.ts +48 -5
  69. package/dist/src/services/loopDetectionService.js +124 -38
  70. package/dist/src/services/loopDetectionService.js.map +1 -1
  71. package/dist/src/services/loopDetectionService.test.js +39 -112
  72. package/dist/src/services/loopDetectionService.test.js.map +1 -1
  73. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +2 -1
  74. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +17 -2
  75. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  76. package/dist/src/telemetry/constants.d.ts +1 -0
  77. package/dist/src/telemetry/constants.js +1 -0
  78. package/dist/src/telemetry/constants.js.map +1 -1
  79. package/dist/src/telemetry/file-exporters.d.ts +28 -0
  80. package/dist/src/telemetry/file-exporters.js +62 -0
  81. package/dist/src/telemetry/file-exporters.js.map +1 -0
  82. package/dist/src/telemetry/loggers.d.ts +2 -1
  83. package/dist/src/telemetry/loggers.js +17 -1
  84. package/dist/src/telemetry/loggers.js.map +1 -1
  85. package/dist/src/telemetry/sdk.js +17 -6
  86. package/dist/src/telemetry/sdk.js.map +1 -1
  87. package/dist/src/telemetry/types.d.ts +9 -2
  88. package/dist/src/telemetry/types.js +13 -1
  89. package/dist/src/telemetry/types.js.map +1 -1
  90. package/dist/src/tools/edit.js +10 -4
  91. package/dist/src/tools/edit.js.map +1 -1
  92. package/dist/src/tools/edit.test.js +12 -0
  93. package/dist/src/tools/edit.test.js.map +1 -1
  94. package/dist/src/tools/grep.test.js +1 -1
  95. package/dist/src/tools/grep.test.js.map +1 -1
  96. package/dist/src/tools/ls.d.ts +5 -2
  97. package/dist/src/tools/ls.js +39 -10
  98. package/dist/src/tools/ls.js.map +1 -1
  99. package/dist/src/tools/mcp-client.d.ts +5 -1
  100. package/dist/src/tools/mcp-client.js +414 -28
  101. package/dist/src/tools/mcp-client.js.map +1 -1
  102. package/dist/src/tools/mcp-client.test.js +46 -6
  103. package/dist/src/tools/mcp-client.test.js.map +1 -1
  104. package/dist/src/tools/mcp-tool.js +1 -1
  105. package/dist/src/tools/mcp-tool.js.map +1 -1
  106. package/dist/src/tools/mcp-tool.test.js +34 -0
  107. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  108. package/dist/src/tools/read-file.test.js +98 -69
  109. package/dist/src/tools/read-file.test.js.map +1 -1
  110. package/dist/src/tools/read-many-files.d.ts +5 -3
  111. package/dist/src/tools/read-many-files.js +62 -22
  112. package/dist/src/tools/read-many-files.js.map +1 -1
  113. package/dist/src/tools/read-many-files.test.js +5 -2
  114. package/dist/src/tools/read-many-files.test.js.map +1 -1
  115. package/dist/src/tools/shell.d.ts +2 -23
  116. package/dist/src/tools/shell.js +49 -136
  117. package/dist/src/tools/shell.js.map +1 -1
  118. package/dist/src/tools/shell.test.js +33 -319
  119. package/dist/src/tools/shell.test.js.map +1 -1
  120. package/dist/src/tools/tool-registry.d.ts +13 -1
  121. package/dist/src/tools/tool-registry.js +45 -1
  122. package/dist/src/tools/tool-registry.js.map +1 -1
  123. package/dist/src/tools/tool-registry.test.js +3 -3
  124. package/dist/src/tools/tool-registry.test.js.map +1 -1
  125. package/dist/src/utils/bfsFileSearch.d.ts +2 -0
  126. package/dist/src/utils/bfsFileSearch.js +4 -1
  127. package/dist/src/utils/bfsFileSearch.js.map +1 -1
  128. package/dist/src/utils/bfsFileSearch.test.js +108 -105
  129. package/dist/src/utils/bfsFileSearch.test.js.map +1 -1
  130. package/dist/src/utils/editCorrector.js +4 -4
  131. package/dist/src/utils/editCorrector.js.map +1 -1
  132. package/dist/src/utils/editCorrector.test.js +1 -1
  133. package/dist/src/utils/editor.js +16 -10
  134. package/dist/src/utils/editor.js.map +1 -1
  135. package/dist/src/utils/editor.test.js +128 -28
  136. package/dist/src/utils/editor.test.js.map +1 -1
  137. package/dist/src/utils/errorReporting.d.ts +1 -1
  138. package/dist/src/utils/errorReporting.js +2 -2
  139. package/dist/src/utils/errorReporting.js.map +1 -1
  140. package/dist/src/utils/errorReporting.test.js +44 -38
  141. package/dist/src/utils/errorReporting.test.js.map +1 -1
  142. package/dist/src/utils/fileUtils.d.ts +4 -4
  143. package/dist/src/utils/fileUtils.js +31 -15
  144. package/dist/src/utils/fileUtils.js.map +1 -1
  145. package/dist/src/utils/fileUtils.test.js +37 -37
  146. package/dist/src/utils/fileUtils.test.js.map +1 -1
  147. package/dist/src/utils/getFolderStructure.d.ts +3 -2
  148. package/dist/src/utils/getFolderStructure.js +27 -28
  149. package/dist/src/utils/getFolderStructure.js.map +1 -1
  150. package/dist/src/utils/getFolderStructure.test.js +169 -187
  151. package/dist/src/utils/getFolderStructure.test.js.map +1 -1
  152. package/dist/src/utils/gitIgnoreParser.js +4 -7
  153. package/dist/src/utils/gitIgnoreParser.js.map +1 -1
  154. package/dist/src/utils/gitIgnoreParser.test.js +70 -61
  155. package/dist/src/utils/gitIgnoreParser.test.js.map +1 -1
  156. package/dist/src/utils/memoryDiscovery.d.ts +2 -1
  157. package/dist/src/utils/memoryDiscovery.js +11 -5
  158. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  159. package/dist/src/utils/memoryDiscovery.test.js +160 -371
  160. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  161. package/dist/src/utils/partUtils.d.ts +14 -0
  162. package/dist/src/utils/partUtils.js +65 -0
  163. package/dist/src/utils/partUtils.js.map +1 -0
  164. package/dist/src/utils/partUtils.test.d.ts +6 -0
  165. package/dist/src/utils/partUtils.test.js +130 -0
  166. package/dist/src/utils/partUtils.test.js.map +1 -0
  167. package/dist/src/utils/paths.d.ts +11 -0
  168. package/dist/src/utils/paths.js +17 -1
  169. package/dist/src/utils/paths.js.map +1 -1
  170. package/dist/src/utils/quotaErrorDetection.js +0 -2
  171. package/dist/src/utils/quotaErrorDetection.js.map +1 -1
  172. package/dist/src/utils/retry.js +1 -1
  173. package/dist/src/utils/retry.js.map +1 -1
  174. package/dist/src/utils/schemaValidator.d.ts +1 -1
  175. package/dist/src/utils/schemaValidator.js +6 -3
  176. package/dist/src/utils/schemaValidator.js.map +1 -1
  177. package/dist/src/utils/shell-utils.d.ts +44 -0
  178. package/dist/src/utils/shell-utils.js +243 -0
  179. package/dist/src/utils/shell-utils.js.map +1 -0
  180. package/dist/src/utils/shell-utils.test.d.ts +6 -0
  181. package/dist/src/utils/shell-utils.test.js +450 -0
  182. package/dist/src/utils/shell-utils.test.js.map +1 -0
  183. package/dist/src/utils/summarizer.js +1 -30
  184. package/dist/src/utils/summarizer.js.map +1 -1
  185. package/dist/src/utils/systemEncoding.d.ts +40 -0
  186. package/dist/src/utils/systemEncoding.js +149 -0
  187. package/dist/src/utils/systemEncoding.js.map +1 -0
  188. package/dist/src/utils/systemEncoding.test.d.ts +6 -0
  189. package/dist/src/utils/systemEncoding.test.js +368 -0
  190. package/dist/src/utils/systemEncoding.test.js.map +1 -0
  191. package/dist/tsconfig.tsbuildinfo +1 -1
  192. package/package.json +2 -1
  193. package/dist/google-gemini-cli-core-0.1.12.tgz +0 -0
  194. package/dist/src/core/geminiRequest.test.js +0 -72
  195. package/dist/src/core/geminiRequest.test.js.map +0 -1
  196. package/dist/src/services/ideContext.d.ts +0 -126
  197. package/dist/src/services/ideContext.js.map +0 -1
  198. package/dist/src/services/ideContext.test.js.map +0 -1
  199. /package/dist/src/{services → ide}/ideContext.test.d.ts +0 -0
  200. /package/dist/src/{core/geminiRequest.test.d.ts → mcp/google-auth-provider.test.d.ts} +0 -0
@@ -8,9 +8,13 @@ import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js'
8
8
  import { SSEClientTransport, } from '@modelcontextprotocol/sdk/client/sse.js';
9
9
  import { StreamableHTTPClientTransport, } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
10
10
  import { parse } from 'shell-quote';
11
+ import { AuthProviderType } from '../config/config.js';
12
+ import { GoogleCredentialProvider } from '../mcp/google-auth-provider.js';
11
13
  import { DiscoveredMCPTool } from './mcp-tool.js';
12
14
  import { mcpToTool } from '@google/genai';
13
- import { ActiveFileNotificationSchema, IDE_SERVER_NAME, ideContext, } from '../services/ideContext.js';
15
+ import { MCPOAuthProvider } from '../mcp/oauth-provider.js';
16
+ import { OAuthUtils } from '../mcp/oauth-utils.js';
17
+ import { MCPOAuthTokenStorage } from '../mcp/oauth-token-storage.js';
14
18
  import { getErrorMessage } from '../utils/errors.js';
15
19
  export const MCP_DEFAULT_TIMEOUT_MSEC = 10 * 60 * 1000; // default to 10 minutes
16
20
  /**
@@ -45,6 +49,10 @@ const mcpServerStatusesInternal = new Map();
45
49
  * Track the overall MCP discovery state
46
50
  */
47
51
  let mcpDiscoveryState = MCPDiscoveryState.NOT_STARTED;
52
+ /**
53
+ * Map to track which MCP servers have been discovered to require OAuth
54
+ */
55
+ export const mcpServerRequiresOAuth = new Map();
48
56
  const statusChangeListeners = [];
49
57
  /**
50
58
  * Add a listener for MCP server status changes
@@ -89,6 +97,132 @@ export function getAllMCPServerStatuses() {
89
97
  export function getMCPDiscoveryState() {
90
98
  return mcpDiscoveryState;
91
99
  }
100
+ /**
101
+ * Parse www-authenticate header to extract OAuth metadata URI.
102
+ *
103
+ * @param wwwAuthenticate The www-authenticate header value
104
+ * @returns The resource metadata URI if found, null otherwise
105
+ */
106
+ function _parseWWWAuthenticate(wwwAuthenticate) {
107
+ // Parse header like: Bearer realm="MCP Server", resource_metadata_uri="https://..."
108
+ const resourceMetadataMatch = wwwAuthenticate.match(/resource_metadata_uri="([^"]+)"/);
109
+ return resourceMetadataMatch ? resourceMetadataMatch[1] : null;
110
+ }
111
+ /**
112
+ * Extract WWW-Authenticate header from error message string.
113
+ * This is a more robust approach than regex matching.
114
+ *
115
+ * @param errorString The error message string
116
+ * @returns The www-authenticate header value if found, null otherwise
117
+ */
118
+ function extractWWWAuthenticateHeader(errorString) {
119
+ // Try multiple patterns to extract the header
120
+ const patterns = [
121
+ /www-authenticate:\s*([^\n\r]+)/i,
122
+ /WWW-Authenticate:\s*([^\n\r]+)/i,
123
+ /"www-authenticate":\s*"([^"]+)"/i,
124
+ /'www-authenticate':\s*'([^']+)'/i,
125
+ ];
126
+ for (const pattern of patterns) {
127
+ const match = errorString.match(pattern);
128
+ if (match) {
129
+ return match[1].trim();
130
+ }
131
+ }
132
+ return null;
133
+ }
134
+ /**
135
+ * Handle automatic OAuth discovery and authentication for a server.
136
+ *
137
+ * @param mcpServerName The name of the MCP server
138
+ * @param mcpServerConfig The MCP server configuration
139
+ * @param wwwAuthenticate The www-authenticate header value
140
+ * @returns True if OAuth was successfully configured and authenticated, false otherwise
141
+ */
142
+ async function handleAutomaticOAuth(mcpServerName, mcpServerConfig, wwwAuthenticate) {
143
+ try {
144
+ console.log(`🔐 '${mcpServerName}' requires OAuth authentication`);
145
+ // Always try to parse the resource metadata URI from the www-authenticate header
146
+ let oauthConfig;
147
+ const resourceMetadataUri = OAuthUtils.parseWWWAuthenticateHeader(wwwAuthenticate);
148
+ if (resourceMetadataUri) {
149
+ oauthConfig = await OAuthUtils.discoverOAuthConfig(resourceMetadataUri);
150
+ }
151
+ else if (mcpServerConfig.url) {
152
+ // Fallback: try to discover OAuth config from the base URL for SSE
153
+ const sseUrl = new URL(mcpServerConfig.url);
154
+ const baseUrl = `${sseUrl.protocol}//${sseUrl.host}`;
155
+ oauthConfig = await OAuthUtils.discoverOAuthConfig(baseUrl);
156
+ }
157
+ else if (mcpServerConfig.httpUrl) {
158
+ // Fallback: try to discover OAuth config from the base URL for HTTP
159
+ const httpUrl = new URL(mcpServerConfig.httpUrl);
160
+ const baseUrl = `${httpUrl.protocol}//${httpUrl.host}`;
161
+ oauthConfig = await OAuthUtils.discoverOAuthConfig(baseUrl);
162
+ }
163
+ if (!oauthConfig) {
164
+ console.error(`❌ Could not configure OAuth for '${mcpServerName}' - please authenticate manually with /mcp auth ${mcpServerName}`);
165
+ return false;
166
+ }
167
+ // OAuth configuration discovered - proceed with authentication
168
+ // Create OAuth configuration for authentication
169
+ const oauthAuthConfig = {
170
+ enabled: true,
171
+ authorizationUrl: oauthConfig.authorizationUrl,
172
+ tokenUrl: oauthConfig.tokenUrl,
173
+ scopes: oauthConfig.scopes || [],
174
+ };
175
+ // Perform OAuth authentication
176
+ console.log(`Starting OAuth authentication for server '${mcpServerName}'...`);
177
+ await MCPOAuthProvider.authenticate(mcpServerName, oauthAuthConfig);
178
+ console.log(`OAuth authentication successful for server '${mcpServerName}'`);
179
+ return true;
180
+ }
181
+ catch (error) {
182
+ console.error(`Failed to handle automatic OAuth for server '${mcpServerName}': ${getErrorMessage(error)}`);
183
+ return false;
184
+ }
185
+ }
186
+ /**
187
+ * Create a transport with OAuth token for the given server configuration.
188
+ *
189
+ * @param mcpServerName The name of the MCP server
190
+ * @param mcpServerConfig The MCP server configuration
191
+ * @param accessToken The OAuth access token
192
+ * @returns The transport with OAuth token, or null if creation fails
193
+ */
194
+ async function createTransportWithOAuth(mcpServerName, mcpServerConfig, accessToken) {
195
+ try {
196
+ if (mcpServerConfig.httpUrl) {
197
+ // Create HTTP transport with OAuth token
198
+ const oauthTransportOptions = {
199
+ requestInit: {
200
+ headers: {
201
+ ...mcpServerConfig.headers,
202
+ Authorization: `Bearer ${accessToken}`,
203
+ },
204
+ },
205
+ };
206
+ return new StreamableHTTPClientTransport(new URL(mcpServerConfig.httpUrl), oauthTransportOptions);
207
+ }
208
+ else if (mcpServerConfig.url) {
209
+ // Create SSE transport with OAuth token in Authorization header
210
+ return new SSEClientTransport(new URL(mcpServerConfig.url), {
211
+ requestInit: {
212
+ headers: {
213
+ ...mcpServerConfig.headers,
214
+ Authorization: `Bearer ${accessToken}`,
215
+ },
216
+ },
217
+ });
218
+ }
219
+ return null;
220
+ }
221
+ catch (error) {
222
+ console.error(`Failed to create OAuth transport for server '${mcpServerName}': ${getErrorMessage(error)}`);
223
+ return null;
224
+ }
225
+ }
92
226
  /**
93
227
  * Discovers tools from all configured MCP servers and registers them with the tool registry.
94
228
  * It orchestrates the connection and discovery process for each server defined in the
@@ -145,15 +279,7 @@ export async function connectAndDiscover(mcpServerName, mcpServerConfig, toolReg
145
279
  mcpClient.onerror = (error) => {
146
280
  console.error(`MCP ERROR (${mcpServerName}):`, error.toString());
147
281
  updateMCPServerStatus(mcpServerName, MCPServerStatus.DISCONNECTED);
148
- if (mcpServerName === IDE_SERVER_NAME) {
149
- ideContext.clearActiveFileContext();
150
- }
151
282
  };
152
- if (mcpServerName === IDE_SERVER_NAME) {
153
- mcpClient.setNotificationHandler(ActiveFileNotificationSchema, (notification) => {
154
- ideContext.setActiveFileContext(notification.params);
155
- });
156
- }
157
283
  const tools = await discoverTools(mcpServerName, mcpServerConfig, mcpClient);
158
284
  for (const tool of tools) {
159
285
  toolRegistry.registerTool(tool);
@@ -230,7 +356,7 @@ export async function connectToMcpServer(mcpServerName, mcpServerConfig, debugMo
230
356
  };
231
357
  }
232
358
  try {
233
- const transport = createTransport(mcpServerName, mcpServerConfig, debugMode);
359
+ const transport = await createTransport(mcpServerName, mcpServerConfig, debugMode);
234
360
  try {
235
361
  await mcpClient.connect(transport, {
236
362
  timeout: mcpServerConfig.timeout ?? MCP_DEFAULT_TIMEOUT_MSEC,
@@ -243,29 +369,280 @@ export async function connectToMcpServer(mcpServerName, mcpServerConfig, debugMo
243
369
  }
244
370
  }
245
371
  catch (error) {
246
- // Create a safe config object that excludes sensitive information
247
- const safeConfig = {
248
- command: mcpServerConfig.command,
249
- url: mcpServerConfig.url,
250
- httpUrl: mcpServerConfig.httpUrl,
251
- cwd: mcpServerConfig.cwd,
252
- timeout: mcpServerConfig.timeout,
253
- trust: mcpServerConfig.trust,
254
- // Exclude args, env, and headers which may contain sensitive data
255
- };
256
- let errorString = `failed to start or connect to MCP server '${mcpServerName}' ` +
257
- `${JSON.stringify(safeConfig)}; \n${error}`;
258
- if (process.env.SANDBOX) {
259
- errorString += `\nMake sure it is available in the sandbox`;
372
+ // Check if this is a 401 error that might indicate OAuth is required
373
+ const errorString = String(error);
374
+ if (errorString.includes('401') &&
375
+ (mcpServerConfig.httpUrl || mcpServerConfig.url)) {
376
+ mcpServerRequiresOAuth.set(mcpServerName, true);
377
+ // Only trigger automatic OAuth discovery for HTTP servers or when OAuth is explicitly configured
378
+ // For SSE servers, we should not trigger new OAuth flows automatically
379
+ const shouldTriggerOAuth = mcpServerConfig.httpUrl || mcpServerConfig.oauth?.enabled;
380
+ if (!shouldTriggerOAuth) {
381
+ // For SSE servers without explicit OAuth config, if a token was found but rejected, report it accurately.
382
+ const credentials = await MCPOAuthTokenStorage.getToken(mcpServerName);
383
+ if (credentials) {
384
+ const hasStoredTokens = await MCPOAuthProvider.getValidToken(mcpServerName, {
385
+ // Pass client ID if available
386
+ clientId: credentials.clientId,
387
+ });
388
+ if (hasStoredTokens) {
389
+ console.log(`Stored OAuth token for SSE server '${mcpServerName}' was rejected. ` +
390
+ `Please re-authenticate using: /mcp auth ${mcpServerName}`);
391
+ }
392
+ else {
393
+ console.log(`401 error received for SSE server '${mcpServerName}' without OAuth configuration. ` +
394
+ `Please authenticate using: /mcp auth ${mcpServerName}`);
395
+ }
396
+ }
397
+ throw new Error(`401 error received for SSE server '${mcpServerName}' without OAuth configuration. ` +
398
+ `Please authenticate using: /mcp auth ${mcpServerName}`);
399
+ }
400
+ // Try to extract www-authenticate header from the error
401
+ let wwwAuthenticate = extractWWWAuthenticateHeader(errorString);
402
+ // If we didn't get the header from the error string, try to get it from the server
403
+ if (!wwwAuthenticate && mcpServerConfig.url) {
404
+ console.log(`No www-authenticate header in error, trying to fetch it from server...`);
405
+ try {
406
+ const response = await fetch(mcpServerConfig.url, {
407
+ method: 'HEAD',
408
+ headers: {
409
+ Accept: 'text/event-stream',
410
+ },
411
+ signal: AbortSignal.timeout(5000),
412
+ });
413
+ if (response.status === 401) {
414
+ wwwAuthenticate = response.headers.get('www-authenticate');
415
+ if (wwwAuthenticate) {
416
+ console.log(`Found www-authenticate header from server: ${wwwAuthenticate}`);
417
+ }
418
+ }
419
+ }
420
+ catch (fetchError) {
421
+ console.debug(`Failed to fetch www-authenticate header: ${getErrorMessage(fetchError)}`);
422
+ }
423
+ }
424
+ if (wwwAuthenticate) {
425
+ console.log(`Received 401 with www-authenticate header: ${wwwAuthenticate}`);
426
+ // Try automatic OAuth discovery and authentication
427
+ const oauthSuccess = await handleAutomaticOAuth(mcpServerName, mcpServerConfig, wwwAuthenticate);
428
+ if (oauthSuccess) {
429
+ // Retry connection with OAuth token
430
+ console.log(`Retrying connection to '${mcpServerName}' with OAuth token...`);
431
+ // Get the valid token - we need to create a proper OAuth config
432
+ // The token should already be available from the authentication process
433
+ const credentials = await MCPOAuthTokenStorage.getToken(mcpServerName);
434
+ if (credentials) {
435
+ const accessToken = await MCPOAuthProvider.getValidToken(mcpServerName, {
436
+ // Pass client ID if available
437
+ clientId: credentials.clientId,
438
+ });
439
+ if (accessToken) {
440
+ // Create transport with OAuth token
441
+ const oauthTransport = await createTransportWithOAuth(mcpServerName, mcpServerConfig, accessToken);
442
+ if (oauthTransport) {
443
+ try {
444
+ await mcpClient.connect(oauthTransport, {
445
+ timeout: mcpServerConfig.timeout ?? MCP_DEFAULT_TIMEOUT_MSEC,
446
+ });
447
+ // Connection successful with OAuth
448
+ return mcpClient;
449
+ }
450
+ catch (retryError) {
451
+ console.error(`Failed to connect with OAuth token: ${getErrorMessage(retryError)}`);
452
+ throw retryError;
453
+ }
454
+ }
455
+ else {
456
+ console.error(`Failed to create OAuth transport for server '${mcpServerName}'`);
457
+ throw new Error(`Failed to create OAuth transport for server '${mcpServerName}'`);
458
+ }
459
+ }
460
+ else {
461
+ console.error(`Failed to get OAuth token for server '${mcpServerName}'`);
462
+ throw new Error(`Failed to get OAuth token for server '${mcpServerName}'`);
463
+ }
464
+ }
465
+ else {
466
+ console.error(`Failed to get credentials for server '${mcpServerName}' after successful OAuth authentication`);
467
+ throw new Error(`Failed to get credentials for server '${mcpServerName}' after successful OAuth authentication`);
468
+ }
469
+ }
470
+ else {
471
+ console.error(`Failed to handle automatic OAuth for server '${mcpServerName}'`);
472
+ throw new Error(`Failed to handle automatic OAuth for server '${mcpServerName}'`);
473
+ }
474
+ }
475
+ else {
476
+ // No www-authenticate header found, but we got a 401
477
+ // Only try OAuth discovery for HTTP servers or when OAuth is explicitly configured
478
+ // For SSE servers, we should not trigger new OAuth flows automatically
479
+ const shouldTryDiscovery = mcpServerConfig.httpUrl || mcpServerConfig.oauth?.enabled;
480
+ if (!shouldTryDiscovery) {
481
+ const credentials = await MCPOAuthTokenStorage.getToken(mcpServerName);
482
+ if (credentials) {
483
+ const hasStoredTokens = await MCPOAuthProvider.getValidToken(mcpServerName, {
484
+ // Pass client ID if available
485
+ clientId: credentials.clientId,
486
+ });
487
+ if (hasStoredTokens) {
488
+ console.log(`Stored OAuth token for SSE server '${mcpServerName}' was rejected. ` +
489
+ `Please re-authenticate using: /mcp auth ${mcpServerName}`);
490
+ }
491
+ else {
492
+ console.log(`401 error received for SSE server '${mcpServerName}' without OAuth configuration. ` +
493
+ `Please authenticate using: /mcp auth ${mcpServerName}`);
494
+ }
495
+ }
496
+ throw new Error(`401 error received for SSE server '${mcpServerName}' without OAuth configuration. ` +
497
+ `Please authenticate using: /mcp auth ${mcpServerName}`);
498
+ }
499
+ // For SSE servers, try to discover OAuth configuration from the base URL
500
+ console.log(`🔍 Attempting OAuth discovery for '${mcpServerName}'...`);
501
+ if (mcpServerConfig.url) {
502
+ const sseUrl = new URL(mcpServerConfig.url);
503
+ const baseUrl = `${sseUrl.protocol}//${sseUrl.host}`;
504
+ try {
505
+ // Try to discover OAuth configuration from the base URL
506
+ const oauthConfig = await OAuthUtils.discoverOAuthConfig(baseUrl);
507
+ if (oauthConfig) {
508
+ console.log(`Discovered OAuth configuration from base URL for server '${mcpServerName}'`);
509
+ // Create OAuth configuration for authentication
510
+ const oauthAuthConfig = {
511
+ enabled: true,
512
+ authorizationUrl: oauthConfig.authorizationUrl,
513
+ tokenUrl: oauthConfig.tokenUrl,
514
+ scopes: oauthConfig.scopes || [],
515
+ };
516
+ // Perform OAuth authentication
517
+ console.log(`Starting OAuth authentication for server '${mcpServerName}'...`);
518
+ await MCPOAuthProvider.authenticate(mcpServerName, oauthAuthConfig);
519
+ // Retry connection with OAuth token
520
+ const credentials = await MCPOAuthTokenStorage.getToken(mcpServerName);
521
+ if (credentials) {
522
+ const accessToken = await MCPOAuthProvider.getValidToken(mcpServerName, {
523
+ // Pass client ID if available
524
+ clientId: credentials.clientId,
525
+ });
526
+ if (accessToken) {
527
+ // Create transport with OAuth token
528
+ const oauthTransport = await createTransportWithOAuth(mcpServerName, mcpServerConfig, accessToken);
529
+ if (oauthTransport) {
530
+ try {
531
+ await mcpClient.connect(oauthTransport, {
532
+ timeout: mcpServerConfig.timeout ?? MCP_DEFAULT_TIMEOUT_MSEC,
533
+ });
534
+ // Connection successful with OAuth
535
+ return mcpClient;
536
+ }
537
+ catch (retryError) {
538
+ console.error(`Failed to connect with OAuth token: ${getErrorMessage(retryError)}`);
539
+ throw retryError;
540
+ }
541
+ }
542
+ else {
543
+ console.error(`Failed to create OAuth transport for server '${mcpServerName}'`);
544
+ throw new Error(`Failed to create OAuth transport for server '${mcpServerName}'`);
545
+ }
546
+ }
547
+ else {
548
+ console.error(`Failed to get OAuth token for server '${mcpServerName}'`);
549
+ throw new Error(`Failed to get OAuth token for server '${mcpServerName}'`);
550
+ }
551
+ }
552
+ else {
553
+ console.error(`Failed to get stored credentials for server '${mcpServerName}'`);
554
+ throw new Error(`Failed to get stored credentials for server '${mcpServerName}'`);
555
+ }
556
+ }
557
+ else {
558
+ console.error(`❌ Could not configure OAuth for '${mcpServerName}' - please authenticate manually with /mcp auth ${mcpServerName}`);
559
+ throw new Error(`OAuth configuration failed for '${mcpServerName}'. Please authenticate manually with /mcp auth ${mcpServerName}`);
560
+ }
561
+ }
562
+ catch (discoveryError) {
563
+ console.error(`❌ OAuth discovery failed for '${mcpServerName}' - please authenticate manually with /mcp auth ${mcpServerName}`);
564
+ throw discoveryError;
565
+ }
566
+ }
567
+ else {
568
+ console.error(`❌ '${mcpServerName}' requires authentication but no OAuth configuration found`);
569
+ throw new Error(`MCP server '${mcpServerName}' requires authentication. Please configure OAuth or check server settings.`);
570
+ }
571
+ }
572
+ }
573
+ else {
574
+ // Handle other connection errors
575
+ // Create a concise error message
576
+ const errorMessage = error.message || String(error);
577
+ const isNetworkError = errorMessage.includes('ENOTFOUND') ||
578
+ errorMessage.includes('ECONNREFUSED');
579
+ let conciseError;
580
+ if (isNetworkError) {
581
+ conciseError = `Cannot connect to '${mcpServerName}' - server may be down or URL incorrect`;
582
+ }
583
+ else {
584
+ conciseError = `Connection failed for '${mcpServerName}': ${errorMessage}`;
585
+ }
586
+ if (process.env.SANDBOX) {
587
+ conciseError += ` (check sandbox availability)`;
588
+ }
589
+ throw new Error(conciseError);
260
590
  }
261
- throw new Error(errorString);
262
591
  }
263
592
  }
264
593
  /** Visible for Testing */
265
- export function createTransport(mcpServerName, mcpServerConfig, debugMode) {
594
+ export async function createTransport(mcpServerName, mcpServerConfig, debugMode) {
595
+ if (mcpServerConfig.authProviderType === AuthProviderType.GOOGLE_CREDENTIALS) {
596
+ const provider = new GoogleCredentialProvider(mcpServerConfig);
597
+ const transportOptions = {
598
+ authProvider: provider,
599
+ };
600
+ if (mcpServerConfig.httpUrl) {
601
+ return new StreamableHTTPClientTransport(new URL(mcpServerConfig.httpUrl), transportOptions);
602
+ }
603
+ else if (mcpServerConfig.url) {
604
+ return new SSEClientTransport(new URL(mcpServerConfig.url), transportOptions);
605
+ }
606
+ throw new Error('No URL configured for Google Credentials MCP server');
607
+ }
608
+ // Check if we have OAuth configuration or stored tokens
609
+ let accessToken = null;
610
+ let hasOAuthConfig = mcpServerConfig.oauth?.enabled;
611
+ if (hasOAuthConfig && mcpServerConfig.oauth) {
612
+ accessToken = await MCPOAuthProvider.getValidToken(mcpServerName, mcpServerConfig.oauth);
613
+ if (!accessToken) {
614
+ console.error(`MCP server '${mcpServerName}' requires OAuth authentication. ` +
615
+ `Please authenticate using the /mcp auth command.`);
616
+ throw new Error(`MCP server '${mcpServerName}' requires OAuth authentication. ` +
617
+ `Please authenticate using the /mcp auth command.`);
618
+ }
619
+ }
620
+ else {
621
+ // Check if we have stored OAuth tokens for this server (from previous authentication)
622
+ const credentials = await MCPOAuthTokenStorage.getToken(mcpServerName);
623
+ if (credentials) {
624
+ accessToken = await MCPOAuthProvider.getValidToken(mcpServerName, {
625
+ // Pass client ID if available
626
+ clientId: credentials.clientId,
627
+ });
628
+ if (accessToken) {
629
+ hasOAuthConfig = true;
630
+ console.log(`Found stored OAuth token for server '${mcpServerName}'`);
631
+ }
632
+ }
633
+ }
266
634
  if (mcpServerConfig.httpUrl) {
267
635
  const transportOptions = {};
268
- if (mcpServerConfig.headers) {
636
+ // Set up headers with OAuth token if available
637
+ if (hasOAuthConfig && accessToken) {
638
+ transportOptions.requestInit = {
639
+ headers: {
640
+ ...mcpServerConfig.headers,
641
+ Authorization: `Bearer ${accessToken}`,
642
+ },
643
+ };
644
+ }
645
+ else if (mcpServerConfig.headers) {
269
646
  transportOptions.requestInit = {
270
647
  headers: mcpServerConfig.headers,
271
648
  };
@@ -274,7 +651,16 @@ export function createTransport(mcpServerName, mcpServerConfig, debugMode) {
274
651
  }
275
652
  if (mcpServerConfig.url) {
276
653
  const transportOptions = {};
277
- if (mcpServerConfig.headers) {
654
+ // Set up headers with OAuth token if available
655
+ if (hasOAuthConfig && accessToken) {
656
+ transportOptions.requestInit = {
657
+ headers: {
658
+ ...mcpServerConfig.headers,
659
+ Authorization: `Bearer ${accessToken}`,
660
+ },
661
+ };
662
+ }
663
+ else if (mcpServerConfig.headers) {
278
664
  transportOptions.requestInit = {
279
665
  headers: mcpServerConfig.headers,
280
666
  };
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-client.js","sourceRoot":"","sources":["../../../src/tools/mcp-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-client.js","sourceRoot":"","sources":["../../../src/tools/mcp-client.ts"],"names":[],"mappings":"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"}