@vybestack/llxprt-code-core 0.1.20 → 0.1.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -0
- package/dist/src/auth/types.d.ts +4 -4
- package/dist/src/code_assist/codeAssist.d.ts +1 -1
- package/dist/src/code_assist/codeAssist.js +5 -2
- package/dist/src/code_assist/codeAssist.js.map +1 -1
- package/dist/src/code_assist/converter.d.ts +2 -1
- package/dist/src/code_assist/converter.js +6 -4
- package/dist/src/code_assist/converter.js.map +1 -1
- package/dist/src/code_assist/oauth2.d.ts +1 -0
- package/dist/src/code_assist/oauth2.js +32 -15
- package/dist/src/code_assist/oauth2.js.map +1 -1
- package/dist/src/code_assist/server.d.ts +1 -2
- package/dist/src/code_assist/server.js +10 -5
- package/dist/src/code_assist/server.js.map +1 -1
- package/dist/src/code_assist/setup.js +2 -1
- package/dist/src/code_assist/setup.js.map +1 -1
- package/dist/src/config/config.d.ts +0 -3
- package/dist/src/config/config.js +8 -10
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/core/client.js +11 -2
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/coreToolScheduler.d.ts +1 -1
- package/dist/src/core/coreToolScheduler.js +9 -5
- package/dist/src/core/coreToolScheduler.js.map +1 -1
- package/dist/src/core/geminiChat.js +45 -4
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/logger.d.ts +22 -1
- package/dist/src/core/logger.js +103 -17
- package/dist/src/core/logger.js.map +1 -1
- package/dist/src/ide/constants.d.ts +6 -0
- package/dist/src/ide/constants.js +7 -0
- package/dist/src/ide/constants.js.map +1 -0
- package/dist/src/ide/ide-client.d.ts +10 -10
- package/dist/src/ide/ide-client.js +69 -58
- package/dist/src/ide/ide-client.js.map +1 -1
- package/dist/src/ide/ide-installer.js +5 -4
- package/dist/src/ide/ide-installer.js.map +1 -1
- package/dist/src/ide/process-utils.d.ts +14 -0
- package/dist/src/ide/process-utils.js +57 -0
- package/dist/src/ide/process-utils.js.map +1 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/oauth-provider.js +176 -58
- package/dist/src/mcp/oauth-provider.js.map +1 -1
- package/dist/src/mcp/oauth-utils.d.ts +3 -1
- package/dist/src/mcp/oauth-utils.js +52 -22
- package/dist/src/mcp/oauth-utils.js.map +1 -1
- package/dist/src/providers/anthropic/AnthropicProvider.js +164 -115
- package/dist/src/providers/anthropic/AnthropicProvider.js.map +1 -1
- package/dist/src/providers/gemini/GeminiProvider.js +6 -3
- package/dist/src/providers/gemini/GeminiProvider.js.map +1 -1
- package/dist/src/providers/openai/OpenAIProvider.js +227 -53
- package/dist/src/providers/openai/OpenAIProvider.js.map +1 -1
- package/dist/src/services/shellExecutionService.d.ts +24 -0
- package/dist/src/services/shellExecutionService.js +43 -52
- package/dist/src/services/shellExecutionService.js.map +1 -1
- package/dist/src/telemetry/index.d.ts +2 -2
- package/dist/src/telemetry/index.js +2 -2
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/loggers.d.ts +2 -1
- package/dist/src/telemetry/loggers.js +14 -0
- package/dist/src/telemetry/loggers.js.map +1 -1
- package/dist/src/telemetry/types.d.ts +8 -1
- package/dist/src/telemetry/types.js +12 -0
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/test-utils/tools.d.ts +21 -6
- package/dist/src/test-utils/tools.js +77 -12
- package/dist/src/test-utils/tools.js.map +1 -1
- package/dist/src/tools/edit.d.ts +1 -1
- package/dist/src/tools/edit.js +45 -19
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/mcp-client.js +46 -31
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-tool.js +19 -0
- package/dist/src/tools/mcp-tool.js.map +1 -1
- package/dist/src/tools/shell.js +25 -8
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/tool-error.d.ts +1 -0
- package/dist/src/tools/tool-error.js +1 -0
- package/dist/src/tools/tool-error.js.map +1 -1
- package/dist/src/tools/tools.d.ts +53 -75
- package/dist/src/tools/tools.js +111 -110
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/web-search-invocation.d.ts +51 -0
- package/dist/src/tools/web-search-invocation.js +132 -0
- package/dist/src/tools/web-search-invocation.js.map +1 -0
- package/dist/src/tools/web-search.d.ts +6 -36
- package/dist/src/tools/web-search.js +6 -129
- package/dist/src/tools/web-search.js.map +1 -1
- package/dist/src/tools/write-file.d.ts +17 -10
- package/dist/src/tools/write-file.js +125 -127
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/utils/filesearch/crawler.d.ts +15 -0
- package/dist/src/utils/filesearch/crawler.js +50 -0
- package/dist/src/utils/filesearch/crawler.js.map +1 -0
- package/dist/src/utils/filesearch/fileSearch.d.ts +9 -53
- package/dist/src/utils/filesearch/fileSearch.js +62 -117
- package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
- package/dist/src/utils/filesearch/ignore.d.ts +7 -0
- package/dist/src/utils/filesearch/ignore.js +25 -0
- package/dist/src/utils/filesearch/ignore.js.map +1 -1
- package/dist/src/utils/memoryImportProcessor.js +2 -6
- package/dist/src/utils/memoryImportProcessor.js.map +1 -1
- package/dist/src/utils/paths.d.ts +7 -0
- package/dist/src/utils/paths.js +15 -0
- package/dist/src/utils/paths.js.map +1 -1
- package/dist/src/utils/shell-utils.d.ts +39 -0
- package/dist/src/utils/shell-utils.js +72 -2
- package/dist/src/utils/shell-utils.js.map +1 -1
- package/dist/src/utils/workspaceContext.d.ts +22 -7
- package/dist/src/utils/workspaceContext.js +81 -55
- package/dist/src/utils/workspaceContext.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { exec } from 'child_process';
|
|
7
|
+
import { promisify } from 'util';
|
|
8
|
+
import os from 'os';
|
|
9
|
+
const execAsync = promisify(exec);
|
|
10
|
+
/**
|
|
11
|
+
* Traverses up the process tree from the current process to find the top-level ancestor process ID.
|
|
12
|
+
* This is useful for identifying the main application process that spawned the current script,
|
|
13
|
+
* such as the main VS Code window process.
|
|
14
|
+
*
|
|
15
|
+
* @returns A promise that resolves to the numeric PID of the top-level process.
|
|
16
|
+
* @throws Will throw an error if the underlying shell commands fail unexpectedly.
|
|
17
|
+
*/
|
|
18
|
+
export async function getIdeProcessId() {
|
|
19
|
+
const platform = os.platform();
|
|
20
|
+
let currentPid = process.pid;
|
|
21
|
+
// Loop upwards through the process tree, with a depth limit to prevent infinite loops.
|
|
22
|
+
const MAX_TRAVERSAL_DEPTH = 32;
|
|
23
|
+
for (let i = 0; i < MAX_TRAVERSAL_DEPTH; i++) {
|
|
24
|
+
let parentPid;
|
|
25
|
+
try {
|
|
26
|
+
// Use wmic for Windows
|
|
27
|
+
if (platform === 'win32') {
|
|
28
|
+
const command = `wmic process where "ProcessId=${currentPid}" get ParentProcessId /value`;
|
|
29
|
+
const { stdout } = await execAsync(command);
|
|
30
|
+
const match = stdout.match(/ParentProcessId=(\d+)/);
|
|
31
|
+
parentPid = match ? parseInt(match[1], 10) : 0; // Top of the tree is 0
|
|
32
|
+
}
|
|
33
|
+
// Use ps for macOS, Linux, and other Unix-like systems
|
|
34
|
+
else {
|
|
35
|
+
const command = `ps -o ppid= -p ${currentPid}`;
|
|
36
|
+
const { stdout } = await execAsync(command);
|
|
37
|
+
const ppid = parseInt(stdout.trim(), 10);
|
|
38
|
+
parentPid = isNaN(ppid) ? 1 : ppid; // Top of the tree is 1
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
catch (_) {
|
|
42
|
+
// This can happen if a process in the chain dies during execution.
|
|
43
|
+
// We'll break the loop and return the last valid PID we found.
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
// Define the root PID for the current OS
|
|
47
|
+
const rootPid = platform === 'win32' ? 0 : 1;
|
|
48
|
+
// If the parent is the root process or invalid, we've found our target.
|
|
49
|
+
if (parentPid === rootPid || parentPid <= 0) {
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
// Move one level up the tree for the next iteration.
|
|
53
|
+
currentPid = parentPid;
|
|
54
|
+
}
|
|
55
|
+
return currentPid;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=process-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-utils.js","sourceRoot":"","sources":["../../../src/ide/process-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC/B,IAAI,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAE7B,uFAAuF;IACvF,MAAM,mBAAmB,GAAG,EAAE,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,IAAI,SAAiB,CAAC;QAEtB,IAAI,CAAC;YACH,uBAAuB;YACvB,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,iCAAiC,UAAU,8BAA8B,CAAC;gBAC1F,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;gBAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;gBACpD,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB;YACzE,CAAC;YACD,uDAAuD;iBAClD,CAAC;gBACJ,MAAM,OAAO,GAAG,kBAAkB,UAAU,EAAE,CAAC;gBAC/C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;gBAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBACzC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,uBAAuB;YAC7D,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,mEAAmE;YACnE,+DAA+D;YAC/D,MAAM;QACR,CAAC;QAED,yCAAyC;QACzC,MAAM,OAAO,GAAG,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7C,wEAAwE;QACxE,IAAI,SAAS,KAAK,OAAO,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;YAC5C,MAAM;QACR,CAAC;QACD,qDAAqD;QACrD,UAAU,GAAG,SAAS,CAAC;IACzB,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -53,6 +53,7 @@ export * from './ide/ide-client.js';
|
|
|
53
53
|
export * from './ide/ideContext.js';
|
|
54
54
|
export * from './ide/ide-installer.js';
|
|
55
55
|
export { getIdeInfo, DetectedIde, IdeInfo } from './ide/detect-ide.js';
|
|
56
|
+
export * from './ide/constants.js';
|
|
56
57
|
export * from './services/shellExecutionService.js';
|
|
57
58
|
export * from './tools/tools.js';
|
|
58
59
|
export * from './tools/tool-error.js';
|
package/dist/src/index.js
CHANGED
|
@@ -61,6 +61,7 @@ export * from './ide/ide-client.js';
|
|
|
61
61
|
export * from './ide/ideContext.js';
|
|
62
62
|
export * from './ide/ide-installer.js';
|
|
63
63
|
export { getIdeInfo, DetectedIde } from './ide/detect-ide.js';
|
|
64
|
+
export * from './ide/constants.js';
|
|
64
65
|
// Export Shell Execution Service
|
|
65
66
|
export * from './services/shellExecutionService.js';
|
|
66
67
|
// Export base tool definitions
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,gBAAgB;AAChB,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAE3C,kBAAkB;AAClB,cAAc,iCAAiC,CAAC;AAEhD,eAAe;AACf,cAAc,wBAAwB,CAAC;AAEvC,oBAAoB;AACpB,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sCAAsC,CAAC;AAErD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AAEvC,mBAAmB;AACnB,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC;AACnD,cAAc,yBAAyB,CAAC;AAExC,qBAAqB;AACrB,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAEhD,kBAAkB;AAClB,cAAc,oCAAoC,CAAC;AACnD,cAAc,0BAA0B,CAAC;AACzC,cAAc,yCAAyC,CAAC;AACxD,cAAc,oCAAoC,CAAC;AAEnD,4BAA4B;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAW,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -56,8 +56,8 @@ export class MCPOAuthProvider {
|
|
|
56
56
|
* @returns OAuth configuration if discovered, null otherwise
|
|
57
57
|
*/
|
|
58
58
|
static async discoverOAuthFromMCPServer(mcpServerUrl) {
|
|
59
|
-
|
|
60
|
-
return OAuthUtils.discoverOAuthConfig(
|
|
59
|
+
// Use the full URL with path preserved for OAuth discovery
|
|
60
|
+
return OAuthUtils.discoverOAuthConfig(mcpServerUrl);
|
|
61
61
|
}
|
|
62
62
|
/**
|
|
63
63
|
* Generate PKCE parameters for OAuth flow.
|
|
@@ -179,13 +179,14 @@ export class MCPOAuthProvider {
|
|
|
179
179
|
params.append('audience', config.audiences.join(' '));
|
|
180
180
|
}
|
|
181
181
|
// Add resource parameter for MCP OAuth spec compliance
|
|
182
|
-
//
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
182
|
+
// Only add if we have an MCP server URL (indicates MCP OAuth flow, not standard OAuth)
|
|
183
|
+
if (mcpServerUrl) {
|
|
184
|
+
try {
|
|
185
|
+
params.append('resource', OAuthUtils.buildResourceParameter(mcpServerUrl));
|
|
186
|
+
}
|
|
187
|
+
catch (error) {
|
|
188
|
+
console.warn(`Could not add resource parameter: ${getErrorMessage(error)}`);
|
|
189
|
+
}
|
|
189
190
|
}
|
|
190
191
|
const url = new URL(config.authorizationUrl);
|
|
191
192
|
params.forEach((value, key) => {
|
|
@@ -219,26 +220,76 @@ export class MCPOAuthProvider {
|
|
|
219
220
|
params.append('audience', config.audiences.join(' '));
|
|
220
221
|
}
|
|
221
222
|
// Add resource parameter for MCP OAuth spec compliance
|
|
222
|
-
//
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
223
|
+
// Only add if we have an MCP server URL (indicates MCP OAuth flow, not standard OAuth)
|
|
224
|
+
if (mcpServerUrl) {
|
|
225
|
+
const resourceUrl = mcpServerUrl;
|
|
226
|
+
try {
|
|
227
|
+
params.append('resource', OAuthUtils.buildResourceParameter(resourceUrl));
|
|
228
|
+
}
|
|
229
|
+
catch (error) {
|
|
230
|
+
console.warn(`Could not add resource parameter: ${getErrorMessage(error)}`);
|
|
231
|
+
}
|
|
229
232
|
}
|
|
230
233
|
const response = await fetch(config.tokenUrl, {
|
|
231
234
|
method: 'POST',
|
|
232
235
|
headers: {
|
|
233
236
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|
237
|
+
Accept: 'application/json, application/x-www-form-urlencoded',
|
|
234
238
|
},
|
|
235
239
|
body: params.toString(),
|
|
236
240
|
});
|
|
241
|
+
const responseText = await response.text();
|
|
242
|
+
const contentType = response.headers.get('content-type') || '';
|
|
237
243
|
if (!response.ok) {
|
|
238
|
-
|
|
239
|
-
|
|
244
|
+
// Try to parse error from form-urlencoded response
|
|
245
|
+
let errorMessage = null;
|
|
246
|
+
try {
|
|
247
|
+
const errorParams = new URLSearchParams(responseText);
|
|
248
|
+
const error = errorParams.get('error');
|
|
249
|
+
const errorDescription = errorParams.get('error_description');
|
|
250
|
+
if (error) {
|
|
251
|
+
errorMessage = `Token exchange failed: ${error} - ${errorDescription || 'No description'}`;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
catch {
|
|
255
|
+
// Fall back to raw error
|
|
256
|
+
}
|
|
257
|
+
throw new Error(errorMessage ||
|
|
258
|
+
`Token exchange failed: ${response.status} - ${responseText}`);
|
|
259
|
+
}
|
|
260
|
+
// Log unexpected content types for debugging
|
|
261
|
+
if (!contentType.includes('application/json') &&
|
|
262
|
+
!contentType.includes('application/x-www-form-urlencoded')) {
|
|
263
|
+
console.warn(`Token endpoint returned unexpected content-type: ${contentType}. ` +
|
|
264
|
+
`Expected application/json or application/x-www-form-urlencoded. ` +
|
|
265
|
+
`Will attempt to parse response.`);
|
|
266
|
+
}
|
|
267
|
+
// Try to parse as JSON first, fall back to form-urlencoded
|
|
268
|
+
try {
|
|
269
|
+
return JSON.parse(responseText);
|
|
270
|
+
}
|
|
271
|
+
catch {
|
|
272
|
+
// Parse form-urlencoded response
|
|
273
|
+
const tokenParams = new URLSearchParams(responseText);
|
|
274
|
+
const accessToken = tokenParams.get('access_token');
|
|
275
|
+
const tokenType = tokenParams.get('token_type') || 'Bearer';
|
|
276
|
+
const expiresIn = tokenParams.get('expires_in');
|
|
277
|
+
const refreshToken = tokenParams.get('refresh_token');
|
|
278
|
+
const scope = tokenParams.get('scope');
|
|
279
|
+
if (!accessToken) {
|
|
280
|
+
// Check for error in response
|
|
281
|
+
const error = tokenParams.get('error');
|
|
282
|
+
const errorDescription = tokenParams.get('error_description');
|
|
283
|
+
throw new Error(`Token exchange failed: ${error || 'no_access_token'} - ${errorDescription || responseText}`);
|
|
284
|
+
}
|
|
285
|
+
return {
|
|
286
|
+
access_token: accessToken,
|
|
287
|
+
token_type: tokenType,
|
|
288
|
+
expires_in: expiresIn ? parseInt(expiresIn, 10) : undefined,
|
|
289
|
+
refresh_token: refreshToken || undefined,
|
|
290
|
+
scope: scope || undefined,
|
|
291
|
+
};
|
|
240
292
|
}
|
|
241
|
-
return (await response.json());
|
|
242
293
|
}
|
|
243
294
|
/**
|
|
244
295
|
* Refresh an access token using a refresh token.
|
|
@@ -265,26 +316,75 @@ export class MCPOAuthProvider {
|
|
|
265
316
|
params.append('audience', config.audiences.join(' '));
|
|
266
317
|
}
|
|
267
318
|
// Add resource parameter for MCP OAuth spec compliance
|
|
268
|
-
//
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
319
|
+
// Only add if we have an MCP server URL (indicates MCP OAuth flow, not standard OAuth)
|
|
320
|
+
if (mcpServerUrl) {
|
|
321
|
+
try {
|
|
322
|
+
params.append('resource', OAuthUtils.buildResourceParameter(mcpServerUrl));
|
|
323
|
+
}
|
|
324
|
+
catch (error) {
|
|
325
|
+
console.warn(`Could not add resource parameter: ${getErrorMessage(error)}`);
|
|
326
|
+
}
|
|
275
327
|
}
|
|
276
328
|
const response = await fetch(tokenUrl, {
|
|
277
329
|
method: 'POST',
|
|
278
330
|
headers: {
|
|
279
331
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|
332
|
+
Accept: 'application/json, application/x-www-form-urlencoded',
|
|
280
333
|
},
|
|
281
334
|
body: params.toString(),
|
|
282
335
|
});
|
|
336
|
+
const responseText = await response.text();
|
|
337
|
+
const contentType = response.headers.get('content-type') || '';
|
|
283
338
|
if (!response.ok) {
|
|
284
|
-
|
|
285
|
-
|
|
339
|
+
// Try to parse error from form-urlencoded response
|
|
340
|
+
let errorMessage = null;
|
|
341
|
+
try {
|
|
342
|
+
const errorParams = new URLSearchParams(responseText);
|
|
343
|
+
const error = errorParams.get('error');
|
|
344
|
+
const errorDescription = errorParams.get('error_description');
|
|
345
|
+
if (error) {
|
|
346
|
+
errorMessage = `Token refresh failed: ${error} - ${errorDescription || 'No description'}`;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
catch {
|
|
350
|
+
// Fall back to raw error
|
|
351
|
+
}
|
|
352
|
+
throw new Error(errorMessage ||
|
|
353
|
+
`Token refresh failed: ${response.status} - ${responseText}`);
|
|
354
|
+
}
|
|
355
|
+
// Log unexpected content types for debugging
|
|
356
|
+
if (!contentType.includes('application/json') &&
|
|
357
|
+
!contentType.includes('application/x-www-form-urlencoded')) {
|
|
358
|
+
console.warn(`Token refresh endpoint returned unexpected content-type: ${contentType}. ` +
|
|
359
|
+
`Expected application/json or application/x-www-form-urlencoded. ` +
|
|
360
|
+
`Will attempt to parse response.`);
|
|
361
|
+
}
|
|
362
|
+
// Try to parse as JSON first, fall back to form-urlencoded
|
|
363
|
+
try {
|
|
364
|
+
return JSON.parse(responseText);
|
|
365
|
+
}
|
|
366
|
+
catch {
|
|
367
|
+
// Parse form-urlencoded response
|
|
368
|
+
const tokenParams = new URLSearchParams(responseText);
|
|
369
|
+
const accessToken = tokenParams.get('access_token');
|
|
370
|
+
const tokenType = tokenParams.get('token_type') || 'Bearer';
|
|
371
|
+
const expiresIn = tokenParams.get('expires_in');
|
|
372
|
+
const refreshToken = tokenParams.get('refresh_token');
|
|
373
|
+
const scope = tokenParams.get('scope');
|
|
374
|
+
if (!accessToken) {
|
|
375
|
+
// Check for error in response
|
|
376
|
+
const error = tokenParams.get('error');
|
|
377
|
+
const errorDescription = tokenParams.get('error_description');
|
|
378
|
+
throw new Error(`Token refresh failed: ${error || 'unknown_error'} - ${errorDescription || responseText}`);
|
|
379
|
+
}
|
|
380
|
+
return {
|
|
381
|
+
access_token: accessToken,
|
|
382
|
+
token_type: tokenType,
|
|
383
|
+
expires_in: expiresIn ? parseInt(expiresIn, 10) : undefined,
|
|
384
|
+
refresh_token: refreshToken || undefined,
|
|
385
|
+
scope: scope || undefined,
|
|
386
|
+
};
|
|
286
387
|
}
|
|
287
|
-
return (await response.json());
|
|
288
388
|
}
|
|
289
389
|
/**
|
|
290
390
|
* Perform the full OAuth authorization code flow with PKCE.
|
|
@@ -298,39 +398,51 @@ export class MCPOAuthProvider {
|
|
|
298
398
|
// If no authorization URL is provided, try to discover OAuth configuration
|
|
299
399
|
if (!config.authorizationUrl && mcpServerUrl) {
|
|
300
400
|
console.log('No authorization URL provided, attempting OAuth discovery...');
|
|
301
|
-
//
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
401
|
+
// First check if the server requires authentication via WWW-Authenticate header
|
|
402
|
+
try {
|
|
403
|
+
const headers = OAuthUtils.isSSEEndpoint(mcpServerUrl)
|
|
404
|
+
? { Accept: 'text/event-stream' }
|
|
405
|
+
: { Accept: 'application/json' };
|
|
406
|
+
const response = await fetch(mcpServerUrl, {
|
|
407
|
+
method: 'HEAD',
|
|
408
|
+
headers,
|
|
409
|
+
});
|
|
410
|
+
if (response.status === 401 || response.status === 307) {
|
|
411
|
+
const wwwAuthenticate = response.headers.get('www-authenticate');
|
|
412
|
+
if (wwwAuthenticate) {
|
|
413
|
+
const discoveredConfig = await OAuthUtils.discoverOAuthFromWWWAuthenticate(wwwAuthenticate);
|
|
414
|
+
if (discoveredConfig) {
|
|
415
|
+
// Merge discovered config with existing config, preserving clientId and clientSecret
|
|
416
|
+
config = {
|
|
417
|
+
...config,
|
|
418
|
+
authorizationUrl: discoveredConfig.authorizationUrl,
|
|
419
|
+
tokenUrl: discoveredConfig.tokenUrl,
|
|
420
|
+
scopes: discoveredConfig.scopes || config.scopes || [],
|
|
421
|
+
// Preserve existing client credentials
|
|
422
|
+
clientId: config.clientId,
|
|
423
|
+
clientSecret: config.clientSecret,
|
|
424
|
+
};
|
|
321
425
|
}
|
|
322
426
|
}
|
|
323
427
|
}
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
}
|
|
428
|
+
}
|
|
429
|
+
catch (error) {
|
|
430
|
+
console.debug(`Failed to check endpoint for authentication requirements: ${getErrorMessage(error)}`);
|
|
327
431
|
}
|
|
328
432
|
// If we still don't have OAuth config, try the standard discovery
|
|
329
433
|
if (!config.authorizationUrl) {
|
|
330
434
|
const discoveredConfig = await this.discoverOAuthFromMCPServer(mcpServerUrl);
|
|
331
435
|
if (discoveredConfig) {
|
|
332
|
-
config
|
|
333
|
-
|
|
436
|
+
// Merge discovered config with existing config, preserving clientId and clientSecret
|
|
437
|
+
config = {
|
|
438
|
+
...config,
|
|
439
|
+
authorizationUrl: discoveredConfig.authorizationUrl,
|
|
440
|
+
tokenUrl: discoveredConfig.tokenUrl,
|
|
441
|
+
scopes: discoveredConfig.scopes || config.scopes || [],
|
|
442
|
+
// Preserve existing client credentials
|
|
443
|
+
clientId: config.clientId,
|
|
444
|
+
clientSecret: config.clientSecret,
|
|
445
|
+
};
|
|
334
446
|
}
|
|
335
447
|
else {
|
|
336
448
|
throw new Error('Failed to discover OAuth configuration from MCP server');
|
|
@@ -404,9 +516,12 @@ export class MCPOAuthProvider {
|
|
|
404
516
|
// Exchange code for tokens
|
|
405
517
|
const tokenResponse = await this.exchangeCodeForToken(config, code, pkceParams.codeVerifier, mcpServerUrl);
|
|
406
518
|
// Convert to our token format
|
|
519
|
+
if (!tokenResponse.access_token) {
|
|
520
|
+
throw new Error('No access token received from token endpoint');
|
|
521
|
+
}
|
|
407
522
|
const token = {
|
|
408
523
|
accessToken: tokenResponse.access_token,
|
|
409
|
-
tokenType: tokenResponse.token_type,
|
|
524
|
+
tokenType: tokenResponse.token_type || 'Bearer',
|
|
410
525
|
refreshToken: tokenResponse.refresh_token,
|
|
411
526
|
scope: tokenResponse.scope,
|
|
412
527
|
};
|
|
@@ -419,11 +534,14 @@ export class MCPOAuthProvider {
|
|
|
419
534
|
console.log('Authentication successful! Token saved.');
|
|
420
535
|
// Verify token was saved
|
|
421
536
|
const savedToken = await MCPOAuthTokenStorage.getToken(serverName);
|
|
422
|
-
if (savedToken) {
|
|
423
|
-
|
|
537
|
+
if (savedToken && savedToken.token && savedToken.token.accessToken) {
|
|
538
|
+
const tokenPreview = savedToken.token.accessToken.length > 20
|
|
539
|
+
? `${savedToken.token.accessToken.substring(0, 20)}...`
|
|
540
|
+
: '[token]';
|
|
541
|
+
console.log(`Token verification successful: ${tokenPreview}`);
|
|
424
542
|
}
|
|
425
543
|
else {
|
|
426
|
-
console.error('Token verification failed: token not found after save');
|
|
544
|
+
console.error('Token verification failed: token not found or invalid after save');
|
|
427
545
|
}
|
|
428
546
|
}
|
|
429
547
|
catch (saveError) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-provider.js","sourceRoot":"","sources":["../../../src/mcp/oauth-provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAiB,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AA0E9C;;GAEG;AACH,MAAM,OAAO,gBAAgB;IACnB,MAAM,CAAU,aAAa,GAAG,IAAI,CAAC;IACrC,MAAM,CAAU,aAAa,GAAG,iBAAiB,CAAC;IAClD,MAAM,CAAU,OAAO,GAAG,GAAG,CAAC;IAEtC;;;;;;OAMG;IACK,MAAM,CAAC,KAAK,CAAC,cAAc,CACjC,eAAuB,EACvB,MAAsB;QAEtB,MAAM,WAAW,GACf,MAAM,CAAC,WAAW;YAClB,oBAAoB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAEhE,MAAM,mBAAmB,GAAmC;YAC1D,WAAW,EAAE,uBAAuB;YACpC,aAAa,EAAE,CAAC,WAAW,CAAC;YAC5B,WAAW,EAAE,CAAC,oBAAoB,EAAE,eAAe,CAAC;YACpD,cAAc,EAAE,CAAC,MAAM,CAAC;YACxB,0BAA0B,EAAE,MAAM,EAAE,gBAAgB;YACpD,qBAAqB,EAAE,CAAC,MAAM,CAAC;YAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;SACtC,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,eAAe,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC;SAC1C,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,+BAA+B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,MAAM,SAAS,EAAE,CACvF,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAoC,CAAC;IACpE,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAC7C,YAAoB;QAEpB,MAAM,OAAO,GAAG,UAAU,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QACxD,OAAO,UAAU,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,kBAAkB;QAC/B,6CAA6C;QAC7C,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAElE,uCAAuC;QACvC,MAAM,aAAa,GAAG,MAAM;aACzB,UAAU,CAAC,QAAQ,CAAC;aACpB,MAAM,CAAC,YAAY,CAAC;aACpB,MAAM,CAAC,WAAW,CAAC,CAAC;QAEvB,qCAAqC;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAE3D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;IAChD,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,KAAK,CAAC,mBAAmB,CACtC,aAAqB;QAErB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAC9B,KAAK,EAAE,GAAyB,EAAE,GAAwB,EAAE,EAAE;gBAC5D,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,IAAI,GAAG,CACjB,GAAG,CAAC,GAAI,EACR,oBAAoB,IAAI,CAAC,aAAa,EAAE,CACzC,CAAC;oBAEF,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;wBACxC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBACnB,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;wBACrB,OAAO;oBACT,CAAC;oBAED,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAC1C,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBAC5C,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBAE5C,IAAI,KAAK,EAAE,CAAC;wBACV,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;wBAC7D,GAAG,CAAC,GAAG,CAAC;;;;8BAIS,KAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;uBACnE,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAY,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;;;;aAInH,CAAC,CAAC;wBACD,MAAM,CAAC,KAAK,EAAE,CAAC;wBACf,MAAM,CAAC,IAAI,KAAK,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC,CAAC;wBAC3C,OAAO;oBACT,CAAC;oBAED,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;wBACpB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBACnB,GAAG,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;wBAC3C,OAAO;oBACT,CAAC;oBAED,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;wBAC5B,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBACnB,GAAG,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;wBACnC,MAAM,CAAC,KAAK,EAAE,CAAC;wBACf,MAAM,CAAC,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAC;wBAC3D,OAAO;oBACT,CAAC;oBAED,mCAAmC;oBACnC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;oBAC7D,GAAG,CAAC,GAAG,CAAC;;;;;;;;WAQT,CAAC,CAAC;oBAED,MAAM,CAAC,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC3B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC,CACF,CAAC;YAEF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC3B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE;gBACrC,OAAO,CAAC,GAAG,CACT,2CAA2C,IAAI,CAAC,aAAa,EAAE,CAChE,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,0BAA0B;YAC1B,UAAU,CACR,GAAG,EAAE;gBACH,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;YAC9C,CAAC,EACD,CAAC,GAAG,EAAE,GAAG,IAAI,CACd,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACK,MAAM,CAAC,qBAAqB,CAClC,MAAsB,EACtB,UAAsB,EACtB,YAAqB;QAErB,MAAM,WAAW,GACf,MAAM,CAAC,WAAW;YAClB,oBAAoB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAEhE,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,SAAS,EAAE,MAAM,CAAC,QAAS;YAC3B,aAAa,EAAE,MAAM;YACrB,YAAY,EAAE,WAAW;YACzB,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,cAAc,EAAE,UAAU,CAAC,aAAa;YACxC,qBAAqB,EAAE,MAAM;SAC9B,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,uDAAuD;QACvD,+EAA+E;QAC/E,MAAM,WAAW,GAAG,YAAY,IAAI,MAAM,CAAC,gBAAiB,CAAC;QAC7D,IAAI,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,0BAA0B,WAAW,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,CACpE,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,gBAAiB,CAAC,CAAC;QAC9C,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC5B,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;IAED;;;;;;;;OAQG;IACK,MAAM,CAAC,KAAK,CAAC,oBAAoB,CACvC,MAAsB,EACtB,IAAY,EACZ,YAAoB,EACpB,YAAqB;QAErB,MAAM,WAAW,GACf,MAAM,CAAC,WAAW;YAClB,oBAAoB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAEhE,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,UAAU,EAAE,oBAAoB;YAChC,IAAI;YACJ,YAAY,EAAE,WAAW;YACzB,aAAa,EAAE,YAAY;YAC3B,SAAS,EAAE,MAAM,CAAC,QAAS;SAC5B,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,uDAAuD;QACvD,uEAAuE;QACvE,MAAM,WAAW,GAAG,YAAY,IAAI,MAAM,CAAC,QAAS,CAAC;QACrD,IAAI,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,0BAA0B,WAAW,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,CACpE,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,QAAS,EAAE;YAC7C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,mCAAmC;aACpD;YACD,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE;SACxB,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,0BAA0B,QAAQ,CAAC,MAAM,MAAM,SAAS,EAAE,CAC3D,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAuB,CAAC;IACvD,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAC7B,MAAsB,EACtB,YAAoB,EACpB,QAAgB,EAChB,YAAqB;QAErB,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,UAAU,EAAE,eAAe;YAC3B,aAAa,EAAE,YAAY;YAC3B,SAAS,EAAE,MAAM,CAAC,QAAS;SAC5B,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,uDAAuD;QACvD,uEAAuE;QACvE,MAAM,WAAW,GAAG,YAAY,IAAI,QAAQ,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,0BAA0B,WAAW,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,CACpE,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;YACrC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,mCAAmC;aACpD;YACD,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE;SACxB,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,yBAAyB,QAAQ,CAAC,MAAM,MAAM,SAAS,EAAE,CAC1D,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAuB,CAAC;IACvD,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,CAAC,YAAY,CACvB,UAAkB,EAClB,MAAsB,EACtB,YAAqB;QAErB,2EAA2E;QAC3E,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,YAAY,EAAE,CAAC;YAC7C,OAAO,CAAC,GAAG,CACT,8DAA8D,CAC/D,CAAC;YAEF,0DAA0D;YAC1D,IAAI,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3C,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,YAAY,EAAE;wBACzC,MAAM,EAAE,MAAM;wBACd,OAAO,EAAE;4BACP,MAAM,EAAE,mBAAmB;yBAC5B;qBACF,CAAC,CAAC;oBAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;wBACvD,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;wBACjE,IAAI,eAAe,EAAE,CAAC;4BACpB,MAAM,gBAAgB,GACpB,MAAM,UAAU,CAAC,gCAAgC,CAC/C,eAAe,CAChB,CAAC;4BACJ,IAAI,gBAAgB,EAAE,CAAC;gCACrB,MAAM,GAAG;oCACP,GAAG,MAAM;oCACT,GAAG,gBAAgB;oCACnB,MAAM,EAAE,gBAAgB,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE;iCACvD,CAAC;4BACJ,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CACX,iEAAiE,eAAe,CAAC,KAAK,CAAC,EAAE,CAC1F,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,kEAAkE;YAClE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;gBAC7B,MAAM,gBAAgB,GACpB,MAAM,IAAI,CAAC,0BAA0B,CAAC,YAAY,CAAC,CAAC;gBACtD,IAAI,gBAAgB,EAAE,CAAC;oBACrB,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,gBAAgB,EAAE,CAAC;oBAC5C,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;gBAC7D,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CACb,wDAAwD,CACzD,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,+DAA+D;QAC/D,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrB,4CAA4C;YAC5C,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YACjD,MAAM,SAAS,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;YAEzD,OAAO,CAAC,GAAG,CACT,kEAAkE,CACnE,CAAC;YAEF,yDAAyD;YACzD,MAAM,qBAAqB,GAAG,IAAI,GAAG,CACnC,yCAAyC,EACzC,SAAS,CACV,CAAC,QAAQ,EAAE,CAAC;YAEb,MAAM,kBAAkB,GACtB,MAAM,UAAU,CAAC,gCAAgC,CAC/C,qBAAqB,CACtB,CAAC;YACJ,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE,CAAC;YACJ,CAAC;YAED,wDAAwD;YACxD,IAAI,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;gBAC7C,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,cAAc,CAClD,kBAAkB,CAAC,qBAAqB,EACxC,MAAM,CACP,CAAC;gBAEF,MAAM,CAAC,QAAQ,GAAG,kBAAkB,CAAC,SAAS,CAAC;gBAC/C,IAAI,kBAAkB,CAAC,aAAa,EAAE,CAAC;oBACrC,MAAM,CAAC,YAAY,GAAG,kBAAkB,CAAC,aAAa,CAAC;gBACzD,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CACb,8DAA8D,CAC/D,CAAC;YACJ,CAAC;QACH,CAAC;QAED,yBAAyB;QACzB,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrE,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE,CAAC;QACJ,CAAC;QAED,2BAA2B;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE7C,0BAA0B;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CACxC,MAAM,EACN,UAAU,EACV,YAAY,CACb,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,sCAAsC;QACtC,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QACnD,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAE9C,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,CACT,gEAAgE,CACjE,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CACT,uFAAuF,CACxF,CAAC;QACF,OAAO,CAAC,GAAG,CACT,kFAAkF,CACnF,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,wBAAwB;QACxB,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAEnE,wBAAwB;QACxB,IAAI,CAAC;YACH,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CACV,uCAAuC,EACvC,eAAe,CAAC,KAAK,CAAC,CACvB,CAAC;QACJ,CAAC;QAED,oBAAoB;QACpB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,eAAe,CAAC;QAEvC,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;QAEvE,2BAA2B;QAC3B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,oBAAoB,CACnD,MAAM,EACN,IAAI,EACJ,UAAU,CAAC,YAAY,EACvB,YAAY,CACb,CAAC;QAEF,8BAA8B;QAC9B,MAAM,KAAK,GAAkB;YAC3B,WAAW,EAAE,aAAa,CAAC,YAAY;YACvC,SAAS,EAAE,aAAa,CAAC,UAAU;YACnC,YAAY,EAAE,aAAa,CAAC,aAAa;YACzC,KAAK,EAAE,aAAa,CAAC,KAAK;SAC3B,CAAC;QAEF,IAAI,aAAa,CAAC,UAAU,EAAE,CAAC;YAC7B,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC;QACjE,CAAC;QAED,aAAa;QACb,IAAI,CAAC;YACH,MAAM,oBAAoB,CAAC,SAAS,CAClC,UAAU,EACV,KAAK,EACL,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,QAAQ,EACf,YAAY,CACb,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;YAEvD,yBAAyB;YACzB,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACnE,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CACT,kCAAkC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CACrF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;QAAC,OAAO,SAAS,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,yBAAyB,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACrE,MAAM,SAAS,CAAC;QAClB,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,aAAa,CACxB,UAAkB,EAClB,MAAsB;QAEtB,OAAO,CAAC,KAAK,CAAC,mCAAmC,UAAU,EAAE,CAAC,CAAC;QAC/D,MAAM,WAAW,GAAG,MAAM,oBAAoB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAEpE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,oCAAoC,UAAU,EAAE,CAAC,CAAC;YAChE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC;QAC9B,OAAO,CAAC,KAAK,CACX,2BAA2B,UAAU,cAAc,oBAAoB,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAChG,CAAC;QAEF,4BAA4B;QAC5B,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YAChD,OAAO,CAAC,KAAK,CAAC,qCAAqC,UAAU,EAAE,CAAC,CAAC;YACjE,OAAO,KAAK,CAAC,WAAW,CAAC;QAC3B,CAAC;QAED,4CAA4C;QAC5C,IAAI,KAAK,CAAC,YAAY,IAAI,MAAM,CAAC,QAAQ,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;YAClE,IAAI,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,4CAA4C,UAAU,EAAE,CAAC,CAAC;gBAEtE,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,kBAAkB,CACpD,MAAM,EACN,KAAK,CAAC,YAAY,EAClB,WAAW,CAAC,QAAQ,EACpB,WAAW,CAAC,YAAY,CACzB,CAAC;gBAEF,sBAAsB;gBACtB,MAAM,QAAQ,GAAkB;oBAC9B,WAAW,EAAE,gBAAgB,CAAC,YAAY;oBAC1C,SAAS,EAAE,gBAAgB,CAAC,UAAU;oBACtC,YAAY,EAAE,gBAAgB,CAAC,aAAa,IAAI,KAAK,CAAC,YAAY;oBAClE,KAAK,EAAE,gBAAgB,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK;iBAC7C,CAAC;gBAEF,IAAI,gBAAgB,CAAC,UAAU,EAAE,CAAC;oBAChC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvE,CAAC;gBAED,MAAM,oBAAoB,CAAC,SAAS,CAClC,UAAU,EACV,QAAQ,EACR,MAAM,CAAC,QAAQ,EACf,WAAW,CAAC,QAAQ,EACpB,WAAW,CAAC,YAAY,CACzB,CAAC;gBAEF,OAAO,QAAQ,CAAC,WAAW,CAAC;YAC9B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACpE,uBAAuB;gBACvB,MAAM,oBAAoB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC"}
|
|
1
|
+
{"version":3,"file":"oauth-provider.js","sourceRoot":"","sources":["../../../src/mcp/oauth-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,8 +38,10 @@ export interface OAuthProtectedResourceMetadata {
|
|
|
38
38
|
export declare class OAuthUtils {
|
|
39
39
|
/**
|
|
40
40
|
* Construct well-known OAuth endpoint URLs.
|
|
41
|
+
* By default, uses standard root-based well-known URLs.
|
|
42
|
+
* If includePathSuffix is true, appends any path from the base URL to the well-known endpoints.
|
|
41
43
|
*/
|
|
42
|
-
static buildWellKnownUrls(baseUrl: string): {
|
|
44
|
+
static buildWellKnownUrls(baseUrl: string, includePathSuffix?: boolean): {
|
|
43
45
|
protectedResource: string;
|
|
44
46
|
authorizationServer: string;
|
|
45
47
|
};
|
|
@@ -10,13 +10,24 @@ import { getErrorMessage } from '../utils/errors.js';
|
|
|
10
10
|
export class OAuthUtils {
|
|
11
11
|
/**
|
|
12
12
|
* Construct well-known OAuth endpoint URLs.
|
|
13
|
+
* By default, uses standard root-based well-known URLs.
|
|
14
|
+
* If includePathSuffix is true, appends any path from the base URL to the well-known endpoints.
|
|
13
15
|
*/
|
|
14
|
-
static buildWellKnownUrls(baseUrl) {
|
|
16
|
+
static buildWellKnownUrls(baseUrl, includePathSuffix = false) {
|
|
15
17
|
const serverUrl = new URL(baseUrl);
|
|
16
18
|
const base = `${serverUrl.protocol}//${serverUrl.host}`;
|
|
19
|
+
if (!includePathSuffix) {
|
|
20
|
+
// Standard discovery: use root-based well-known URLs
|
|
21
|
+
return {
|
|
22
|
+
protectedResource: new URL('/.well-known/oauth-protected-resource', base).toString(),
|
|
23
|
+
authorizationServer: new URL('/.well-known/oauth-authorization-server', base).toString(),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
// Path-based discovery: append path suffix to well-known URLs
|
|
27
|
+
const pathSuffix = serverUrl.pathname.replace(/\/$/, ''); // Remove trailing slash
|
|
17
28
|
return {
|
|
18
|
-
protectedResource: new URL(
|
|
19
|
-
authorizationServer: new URL(
|
|
29
|
+
protectedResource: new URL(`/.well-known/oauth-protected-resource${pathSuffix}`, base).toString(),
|
|
30
|
+
authorizationServer: new URL(`/.well-known/oauth-authorization-server${pathSuffix}`, base).toString(),
|
|
20
31
|
};
|
|
21
32
|
}
|
|
22
33
|
/**
|
|
@@ -78,20 +89,37 @@ export class OAuthUtils {
|
|
|
78
89
|
*/
|
|
79
90
|
static async discoverOAuthConfig(serverUrl) {
|
|
80
91
|
try {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
92
|
+
// First try standard root-based discovery
|
|
93
|
+
const wellKnownUrls = this.buildWellKnownUrls(serverUrl, false);
|
|
94
|
+
// Try to get the protected resource metadata at root
|
|
95
|
+
let resourceMetadata = await this.fetchProtectedResourceMetadata(wellKnownUrls.protectedResource);
|
|
96
|
+
// If root discovery fails and we have a path, try path-based discovery
|
|
97
|
+
if (!resourceMetadata) {
|
|
98
|
+
const url = new URL(serverUrl);
|
|
99
|
+
if (url.pathname && url.pathname !== '/') {
|
|
100
|
+
const pathBasedUrls = this.buildWellKnownUrls(serverUrl, true);
|
|
101
|
+
resourceMetadata = await this.fetchProtectedResourceMetadata(pathBasedUrls.protectedResource);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
84
104
|
if (resourceMetadata?.authorization_servers?.length) {
|
|
85
105
|
// Use the first authorization server
|
|
86
106
|
const authServerUrl = resourceMetadata.authorization_servers[0];
|
|
87
|
-
|
|
88
|
-
|
|
107
|
+
// The authorization server URL may include a path (e.g., https://github.com/login/oauth)
|
|
108
|
+
// We need to preserve this path when constructing the metadata URL
|
|
109
|
+
const authServerUrlObj = new URL(authServerUrl);
|
|
110
|
+
const authServerPath = authServerUrlObj.pathname === '/' ? '' : authServerUrlObj.pathname;
|
|
111
|
+
// Try with the authorization server's path first
|
|
112
|
+
let authServerMetadataUrl = new URL(`/.well-known/oauth-authorization-server${authServerPath}`, `${authServerUrlObj.protocol}//${authServerUrlObj.host}`).toString();
|
|
113
|
+
let authServerMetadata = await this.fetchAuthorizationServerMetadata(authServerMetadataUrl);
|
|
114
|
+
// If that fails, try root as fallback
|
|
115
|
+
if (!authServerMetadata && authServerPath) {
|
|
116
|
+
authServerMetadataUrl = new URL('/.well-known/oauth-authorization-server', `${authServerUrlObj.protocol}//${authServerUrlObj.host}`).toString();
|
|
117
|
+
authServerMetadata = await this.fetchAuthorizationServerMetadata(authServerMetadataUrl);
|
|
118
|
+
}
|
|
89
119
|
if (authServerMetadata) {
|
|
90
120
|
const config = this.metadataToOAuthConfig(authServerMetadata);
|
|
91
121
|
if (authServerMetadata.registration_endpoint) {
|
|
92
|
-
|
|
93
|
-
console.log('Dynamic client registration is supported at:', authServerMetadata.registration_endpoint);
|
|
94
|
-
}
|
|
122
|
+
console.log('Dynamic client registration is supported at:', authServerMetadata.registration_endpoint);
|
|
95
123
|
}
|
|
96
124
|
return config;
|
|
97
125
|
}
|
|
@@ -102,9 +130,7 @@ export class OAuthUtils {
|
|
|
102
130
|
if (authServerMetadata) {
|
|
103
131
|
const config = this.metadataToOAuthConfig(authServerMetadata);
|
|
104
132
|
if (authServerMetadata.registration_endpoint) {
|
|
105
|
-
|
|
106
|
-
console.log('Dynamic client registration is supported at:', authServerMetadata.registration_endpoint);
|
|
107
|
-
}
|
|
133
|
+
console.log('Dynamic client registration is supported at:', authServerMetadata.registration_endpoint);
|
|
108
134
|
}
|
|
109
135
|
return config;
|
|
110
136
|
}
|
|
@@ -140,20 +166,24 @@ export class OAuthUtils {
|
|
|
140
166
|
if (!resourceMetadataUri) {
|
|
141
167
|
return null;
|
|
142
168
|
}
|
|
143
|
-
if (process.env.DEBUG) {
|
|
144
|
-
console.log(`Found resource metadata URI from www-authenticate header: ${resourceMetadataUri}`);
|
|
145
|
-
}
|
|
146
169
|
const resourceMetadata = await this.fetchProtectedResourceMetadata(resourceMetadataUri);
|
|
147
170
|
if (!resourceMetadata?.authorization_servers?.length) {
|
|
148
171
|
return null;
|
|
149
172
|
}
|
|
150
173
|
const authServerUrl = resourceMetadata.authorization_servers[0];
|
|
151
|
-
|
|
152
|
-
|
|
174
|
+
// The authorization server URL may include a path (e.g., https://github.com/login/oauth)
|
|
175
|
+
// We need to preserve this path when constructing the metadata URL
|
|
176
|
+
const authServerUrlObj = new URL(authServerUrl);
|
|
177
|
+
const authServerPath = authServerUrlObj.pathname === '/' ? '' : authServerUrlObj.pathname;
|
|
178
|
+
// Build auth server metadata URL with the authorization server's path
|
|
179
|
+
const authServerMetadataUrl = new URL(`/.well-known/oauth-authorization-server${authServerPath}`, `${authServerUrlObj.protocol}//${authServerUrlObj.host}`).toString();
|
|
180
|
+
let authServerMetadata = await this.fetchAuthorizationServerMetadata(authServerMetadataUrl);
|
|
181
|
+
// If that fails and we have a path, also try the root path as a fallback
|
|
182
|
+
if (!authServerMetadata && authServerPath) {
|
|
183
|
+
const rootAuthServerMetadataUrl = new URL('/.well-known/oauth-authorization-server', `${authServerUrlObj.protocol}//${authServerUrlObj.host}`).toString();
|
|
184
|
+
authServerMetadata = await this.fetchAuthorizationServerMetadata(rootAuthServerMetadataUrl);
|
|
185
|
+
}
|
|
153
186
|
if (authServerMetadata) {
|
|
154
|
-
if (process.env.DEBUG) {
|
|
155
|
-
console.log('OAuth configuration discovered successfully from www-authenticate header');
|
|
156
|
-
}
|
|
157
187
|
return this.metadataToOAuthConfig(authServerMetadata);
|
|
158
188
|
}
|
|
159
189
|
return null;
|