@aws/lsp-codewhisperer 0.0.109 → 0.0.111
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/CHANGELOG.md +31 -0
- package/out/language-server/agenticChat/agenticChatController.js +52 -27
- package/out/language-server/agenticChat/agenticChatController.js.map +1 -1
- package/out/language-server/agenticChat/context/additionalContextProvider.d.ts +27 -2
- package/out/language-server/agenticChat/context/additionalContextProvider.js +160 -32
- package/out/language-server/agenticChat/context/additionalContextProvider.js.map +1 -1
- package/out/language-server/agenticChat/tools/executeBash.d.ts +1 -1
- package/out/language-server/agenticChat/tools/executeBash.js +11 -2
- package/out/language-server/agenticChat/tools/executeBash.js.map +1 -1
- package/out/language-server/agenticChat/tools/fileSearch.d.ts +1 -1
- package/out/language-server/agenticChat/tools/fileSearch.js +1 -1
- package/out/language-server/agenticChat/tools/fileSearch.js.map +1 -1
- package/out/language-server/agenticChat/tools/fsRead.d.ts +1 -1
- package/out/language-server/agenticChat/tools/fsRead.js +1 -1
- package/out/language-server/agenticChat/tools/fsRead.js.map +1 -1
- package/out/language-server/agenticChat/tools/fsReplace.d.ts +1 -1
- package/out/language-server/agenticChat/tools/fsReplace.js +1 -1
- package/out/language-server/agenticChat/tools/fsReplace.js.map +1 -1
- package/out/language-server/agenticChat/tools/fsWrite.d.ts +1 -1
- package/out/language-server/agenticChat/tools/fsWrite.js +1 -1
- package/out/language-server/agenticChat/tools/fsWrite.js.map +1 -1
- package/out/language-server/agenticChat/tools/listDirectory.d.ts +1 -1
- package/out/language-server/agenticChat/tools/listDirectory.js +1 -1
- package/out/language-server/agenticChat/tools/listDirectory.js.map +1 -1
- package/out/language-server/agenticChat/tools/mcp/mcpManager.d.ts +1 -0
- package/out/language-server/agenticChat/tools/mcp/mcpManager.js +3 -0
- package/out/language-server/agenticChat/tools/mcp/mcpManager.js.map +1 -1
- package/out/language-server/agenticChat/tools/mcp/mcpOauthClient.d.ts +30 -13
- package/out/language-server/agenticChat/tools/mcp/mcpOauthClient.js +182 -115
- package/out/language-server/agenticChat/tools/mcp/mcpOauthClient.js.map +1 -1
- package/out/language-server/agenticChat/tools/mcp/mcpUtils.js +8 -0
- package/out/language-server/agenticChat/tools/mcp/mcpUtils.js.map +1 -1
- package/out/language-server/agenticChat/tools/toolShared.d.ts +9 -7
- package/out/language-server/agenticChat/tools/toolShared.js +18 -12
- package/out/language-server/agenticChat/tools/toolShared.js.map +1 -1
- package/out/language-server/chat/chatSessionService.d.ts +4 -3
- package/out/language-server/chat/chatSessionService.js +9 -5
- package/out/language-server/chat/chatSessionService.js.map +1 -1
- package/out/language-server/chat/telemetry/chatTelemetryController.js +1 -0
- package/out/language-server/chat/telemetry/chatTelemetryController.js.map +1 -1
- package/out/shared/telemetry/telemetryService.d.ts +1 -0
- package/out/shared/telemetry/telemetryService.js +1 -0
- package/out/shared/telemetry/telemetryService.js.map +1 -1
- package/out/shared/telemetry/types.d.ts +1 -0
- package/out/shared/telemetry/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -28,19 +28,17 @@ class OAuthClient {
|
|
|
28
28
|
const key = this.computeKey(mcpBase);
|
|
29
29
|
const regPath = path.join(this.cacheDir, `${key}.registration.json`);
|
|
30
30
|
const tokPath = path.join(this.cacheDir, `${key}.token.json`);
|
|
31
|
-
//
|
|
31
|
+
// Silent branch: try cached token, then refresh, never opens a browser
|
|
32
32
|
if (!interactive) {
|
|
33
|
-
// 1) cached access token
|
|
34
33
|
const cachedTok = await this.read(tokPath);
|
|
35
34
|
if (cachedTok) {
|
|
36
35
|
const expiry = cachedTok.obtained_at + cachedTok.expires_in * 1000;
|
|
37
36
|
if (Date.now() < expiry) {
|
|
38
|
-
this.logger.info(
|
|
37
|
+
this.logger.info('OAuth: using still-valid cached token (silent)');
|
|
39
38
|
return cachedTok.access_token;
|
|
40
39
|
}
|
|
41
|
-
this.logger.info(
|
|
40
|
+
this.logger.info('OAuth: cached token expired, trying refresh (silent)');
|
|
42
41
|
}
|
|
43
|
-
// 2) refresh-token grant (if we have registration and refresh token)
|
|
44
42
|
const savedReg = await this.read(regPath);
|
|
45
43
|
if (cachedTok?.refresh_token && savedReg) {
|
|
46
44
|
try {
|
|
@@ -48,31 +46,27 @@ class OAuthClient {
|
|
|
48
46
|
const refreshed = await this.refreshGrant(meta, savedReg, mcpBase, cachedTok.refresh_token);
|
|
49
47
|
if (refreshed) {
|
|
50
48
|
await this.write(tokPath, refreshed);
|
|
51
|
-
this.logger.info(
|
|
49
|
+
this.logger.info('OAuth: refresh grant succeeded (silent)');
|
|
52
50
|
return refreshed.access_token;
|
|
53
51
|
}
|
|
54
|
-
this.logger.info(`OAuth: refresh grant did not succeed (silent)`);
|
|
55
52
|
}
|
|
56
53
|
catch (e) {
|
|
57
54
|
this.logger.warn(`OAuth: silent refresh failed — ${e instanceof Error ? e.message : String(e)}`);
|
|
58
55
|
}
|
|
59
56
|
}
|
|
60
|
-
// 3) no token in silent mode → caller should surface auth-required UI
|
|
61
57
|
return undefined;
|
|
62
58
|
}
|
|
63
|
-
//
|
|
64
|
-
// 1) Spin up (or reuse) loopback server + redirect URI
|
|
59
|
+
// Interactive branch: may open a browser (PKCE)
|
|
65
60
|
let server = null;
|
|
66
61
|
let redirectUri;
|
|
67
62
|
const savedReg = await this.read(regPath);
|
|
68
63
|
if (savedReg) {
|
|
69
64
|
const port = Number(new url_1.URL(savedReg.redirect_uri).port);
|
|
70
|
-
const normalized = `http://
|
|
65
|
+
const normalized = `http://localhost:${port}/oauth/callback`;
|
|
71
66
|
server = http.createServer();
|
|
72
67
|
try {
|
|
73
|
-
await this.listen(server, port, '
|
|
68
|
+
await this.listen(server, port, 'localhost');
|
|
74
69
|
redirectUri = normalized;
|
|
75
|
-
this.logger.info(`OAuth: reusing redirect URI ${redirectUri}`);
|
|
76
70
|
}
|
|
77
71
|
catch (e) {
|
|
78
72
|
if (e.code === 'EADDRINUSE') {
|
|
@@ -82,9 +76,8 @@ class OAuthClient {
|
|
|
82
76
|
catch {
|
|
83
77
|
/* ignore */
|
|
84
78
|
}
|
|
85
|
-
this.logger.warn(`
|
|
79
|
+
this.logger.warn(`OAuth: port ${port} in use, falling back to new random port`);
|
|
86
80
|
({ server, redirectUri } = await this.buildCallbackServer());
|
|
87
|
-
this.logger.info(`OAuth: new redirect URI ${redirectUri}`);
|
|
88
81
|
await this.workspace.fs.rm(regPath);
|
|
89
82
|
}
|
|
90
83
|
else {
|
|
@@ -93,60 +86,37 @@ class OAuthClient {
|
|
|
93
86
|
}
|
|
94
87
|
}
|
|
95
88
|
else {
|
|
96
|
-
|
|
97
|
-
server =
|
|
98
|
-
redirectUri = created.redirectUri;
|
|
99
|
-
this.logger.info(`OAuth: new redirect URI ${redirectUri}`);
|
|
89
|
+
;
|
|
90
|
+
({ server, redirectUri } = await this.buildCallbackServer());
|
|
100
91
|
}
|
|
101
92
|
try {
|
|
102
|
-
// 2) Try still-valid cached access_token
|
|
103
93
|
const cached = await this.read(tokPath);
|
|
104
94
|
if (cached) {
|
|
105
95
|
const expiry = cached.obtained_at + cached.expires_in * 1000;
|
|
106
96
|
if (Date.now() < expiry) {
|
|
107
|
-
this.logger.info(
|
|
97
|
+
this.logger.info('OAuth: using still-valid cached token');
|
|
108
98
|
return cached.access_token;
|
|
109
99
|
}
|
|
110
|
-
this.logger.info(`OAuth: cached token expired → try refresh`);
|
|
111
100
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
meta
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
// 4) Register (or reuse) a dynamic client
|
|
121
|
-
const scopes = ['openid', 'offline_access'];
|
|
122
|
-
let reg;
|
|
123
|
-
try {
|
|
124
|
-
reg = await this.obtainClient(meta, regPath, scopes, redirectUri);
|
|
125
|
-
}
|
|
126
|
-
catch (e) {
|
|
127
|
-
throw new Error(`OAuth client registration failed: ${e?.message ?? String(e)}`);
|
|
128
|
-
}
|
|
129
|
-
// 5) Refresh-token grant (one shot)
|
|
130
|
-
const attemptedRefresh = !!cached?.refresh_token;
|
|
101
|
+
const meta = await this.discoverAS(mcpBase);
|
|
102
|
+
// Use scopes from discovery metadata, fall back to OIDC defaults
|
|
103
|
+
const scopes = meta.scopes_supported && meta.scopes_supported.length > 0
|
|
104
|
+
? meta.scopes_supported
|
|
105
|
+
: ['openid', 'offline_access'];
|
|
106
|
+
const reg = await this.obtainClient(meta, regPath, scopes, redirectUri);
|
|
107
|
+
// Try refresh-token grant first
|
|
131
108
|
if (cached?.refresh_token) {
|
|
132
109
|
const refreshed = await this.refreshGrant(meta, reg, mcpBase, cached.refresh_token);
|
|
133
110
|
if (refreshed) {
|
|
134
111
|
await this.write(tokPath, refreshed);
|
|
135
|
-
this.logger.info(
|
|
112
|
+
this.logger.info('OAuth: refresh grant succeeded');
|
|
136
113
|
return refreshed.access_token;
|
|
137
114
|
}
|
|
138
|
-
this.logger.info(`OAuth: refresh grant failed`);
|
|
139
|
-
}
|
|
140
|
-
// 6) PKCE interactive flow
|
|
141
|
-
try {
|
|
142
|
-
const fresh = await this.pkceGrant(meta, reg, mcpBase, scopes, redirectUri, server);
|
|
143
|
-
await this.write(tokPath, fresh);
|
|
144
|
-
return fresh.access_token;
|
|
145
|
-
}
|
|
146
|
-
catch (e) {
|
|
147
|
-
const suffix = attemptedRefresh ? ' after refresh attempt' : '';
|
|
148
|
-
throw new Error(`OAuth authorization (PKCE) failed${suffix}: ${e?.message ?? String(e)}`);
|
|
149
115
|
}
|
|
116
|
+
// PKCE interactive flow
|
|
117
|
+
const fresh = await this.pkceGrant(meta, reg, mcpBase, scopes, redirectUri, server);
|
|
118
|
+
await this.write(tokPath, fresh);
|
|
119
|
+
return fresh.access_token;
|
|
150
120
|
}
|
|
151
121
|
finally {
|
|
152
122
|
if (server) {
|
|
@@ -154,57 +124,120 @@ class OAuthClient {
|
|
|
154
124
|
}
|
|
155
125
|
}
|
|
156
126
|
}
|
|
157
|
-
/** Spin up a one
|
|
127
|
+
/** Spin up a one-time HTTP listener on localhost:randomPort */
|
|
158
128
|
static async buildCallbackServer() {
|
|
159
129
|
const server = http.createServer();
|
|
160
|
-
await this.listen(server, 0, '
|
|
130
|
+
await this.listen(server, 0, 'localhost');
|
|
161
131
|
const port = server.address().port;
|
|
162
|
-
return { server, redirectUri: `http://
|
|
132
|
+
return { server, redirectUri: `http://localhost:${port}/oauth/callback` };
|
|
163
133
|
}
|
|
164
|
-
/**
|
|
134
|
+
/**
|
|
135
|
+
* Discover OAuth endpoints using the following chain (aligned with MCP SDK):
|
|
136
|
+
* 1. RFC 9728 Protected Resource Metadata
|
|
137
|
+
* 2. WWW-Authenticate header resource_metadata link
|
|
138
|
+
* 3. RFC 8414 / OIDC well-known endpoints on the resource server
|
|
139
|
+
* 4. Fallback to synthesized static endpoints
|
|
140
|
+
*/
|
|
165
141
|
static async discoverAS(rs) {
|
|
166
|
-
//
|
|
142
|
+
// Step 1: RFC 9728 Protected Resource Metadata
|
|
143
|
+
try {
|
|
144
|
+
const prm = await this.discoverProtectedResourceMetadata(rs);
|
|
145
|
+
if (prm) {
|
|
146
|
+
const asUrl = prm.authorization_servers?.[0];
|
|
147
|
+
if (asUrl) {
|
|
148
|
+
const asMeta = await this.discoverAuthorizationServerMetadata(new url_1.URL(asUrl));
|
|
149
|
+
if (asMeta) {
|
|
150
|
+
if (!asMeta.scopes_supported && prm.scopes_supported) {
|
|
151
|
+
asMeta.scopes_supported = prm.scopes_supported;
|
|
152
|
+
}
|
|
153
|
+
return asMeta;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
catch (e) {
|
|
159
|
+
this.logger.info(`OAuth: RFC 9728 discovery failed — ${e instanceof Error ? e.message : String(e)}`);
|
|
160
|
+
}
|
|
161
|
+
// Step 2: HEAD → WWW-Authenticate → resource_metadata link
|
|
167
162
|
try {
|
|
168
|
-
this.logger.info('MCP OAuth: attempting discovery via WWW-Authenticate header');
|
|
169
163
|
const h = await this.fetchCompat(rs.toString(), { method: 'HEAD' });
|
|
170
164
|
const header = h.headers.get('www-authenticate') || '';
|
|
171
165
|
const m = /resource_metadata=(?:"([^"]+)"|([^,\s]+))/i.exec(header);
|
|
172
166
|
if (m) {
|
|
173
167
|
const metaUrl = new url_1.URL(m[1] || m[2], rs).toString();
|
|
174
|
-
this.logger.info(`OAuth: resource_metadata → ${metaUrl}`);
|
|
175
168
|
const raw = await this.json(metaUrl);
|
|
176
169
|
return await this.fetchASFromResourceMeta(raw, metaUrl);
|
|
177
170
|
}
|
|
178
171
|
}
|
|
179
|
-
catch {
|
|
180
|
-
this.logger.info(
|
|
172
|
+
catch (e) {
|
|
173
|
+
this.logger.info(`OAuth: WWW-Authenticate discovery failed — ${e instanceof Error ? e.message : String(e)}`);
|
|
181
174
|
}
|
|
182
|
-
//
|
|
183
|
-
this.
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
new url_1.URL('.well-known/openid-configuration', rs).toString(),
|
|
187
|
-
`${rs.origin}/.well-known/oauth-authorization-server`,
|
|
188
|
-
`${rs.origin}/.well-known/openid-configuration`,
|
|
189
|
-
];
|
|
190
|
-
for (const url of probes) {
|
|
191
|
-
try {
|
|
192
|
-
this.logger.info(`MCP OAuth: probing well-known endpoint → ${url}`);
|
|
193
|
-
return await this.json(url);
|
|
194
|
-
}
|
|
195
|
-
catch (error) {
|
|
196
|
-
this.logger.info(`OAuth: well-known endpoint probe failed for ${url}`);
|
|
197
|
-
}
|
|
175
|
+
// Step 3: Well-known endpoints on the resource server
|
|
176
|
+
const asMeta = await this.discoverAuthorizationServerMetadata(new url_1.URL('/', rs));
|
|
177
|
+
if (asMeta) {
|
|
178
|
+
return asMeta;
|
|
198
179
|
}
|
|
199
|
-
//
|
|
180
|
+
// Step 4: Fallback to static endpoints
|
|
200
181
|
const base = (rs.origin + rs.pathname).replace(/\/+$/, '');
|
|
201
|
-
this.logger.warn(`OAuth: all discovery
|
|
182
|
+
this.logger.warn(`OAuth: all discovery failed, synthesizing endpoints from ${base}`);
|
|
202
183
|
return {
|
|
203
184
|
authorization_endpoint: `${base}/authorize`,
|
|
204
185
|
token_endpoint: `${base}/access_token`,
|
|
205
186
|
};
|
|
206
187
|
}
|
|
207
|
-
/**
|
|
188
|
+
/**
|
|
189
|
+
* RFC 9728: Discover OAuth Protected Resource Metadata.
|
|
190
|
+
* Tries path-aware URL first, then root fallback.
|
|
191
|
+
*/
|
|
192
|
+
static async discoverProtectedResourceMetadata(rs) {
|
|
193
|
+
const pathname = rs.pathname.endsWith('/') ? rs.pathname.slice(0, -1) : rs.pathname;
|
|
194
|
+
const urlsToTry = [new url_1.URL(`/.well-known/oauth-protected-resource${pathname}`, rs.origin).toString()];
|
|
195
|
+
if (pathname && pathname !== '/') {
|
|
196
|
+
urlsToTry.push(new url_1.URL('/.well-known/oauth-protected-resource', rs.origin).toString());
|
|
197
|
+
}
|
|
198
|
+
for (const url of urlsToTry) {
|
|
199
|
+
try {
|
|
200
|
+
const resp = await this.fetchCompat(url, {
|
|
201
|
+
headers: { 'MCP-Protocol-Version': '2025-03-26' },
|
|
202
|
+
});
|
|
203
|
+
if (resp.ok) {
|
|
204
|
+
return await resp.json();
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
// Try next URL
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return undefined;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Discover Authorization Server Metadata via RFC 8414 and OIDC Discovery.
|
|
215
|
+
* Matches the MCP SDK's buildDiscoveryUrls pattern.
|
|
216
|
+
*/
|
|
217
|
+
static async discoverAuthorizationServerMetadata(asUrl) {
|
|
218
|
+
const pathname = asUrl.pathname.endsWith('/') ? asUrl.pathname.slice(0, -1) : asUrl.pathname;
|
|
219
|
+
const hasPath = pathname !== '' && pathname !== '/';
|
|
220
|
+
const urlsToTry = [];
|
|
221
|
+
if (!hasPath) {
|
|
222
|
+
urlsToTry.push(new url_1.URL('/.well-known/oauth-authorization-server', asUrl.origin).toString());
|
|
223
|
+
urlsToTry.push(new url_1.URL('/.well-known/openid-configuration', asUrl.origin).toString());
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
urlsToTry.push(new url_1.URL(`/.well-known/oauth-authorization-server${pathname}`, asUrl.origin).toString());
|
|
227
|
+
urlsToTry.push(new url_1.URL(`/.well-known/openid-configuration${pathname}`, asUrl.origin).toString());
|
|
228
|
+
urlsToTry.push(new url_1.URL(`${pathname}/.well-known/openid-configuration`, asUrl.origin).toString());
|
|
229
|
+
}
|
|
230
|
+
for (const url of urlsToTry) {
|
|
231
|
+
try {
|
|
232
|
+
return await this.json(url);
|
|
233
|
+
}
|
|
234
|
+
catch {
|
|
235
|
+
// Try next URL
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return undefined;
|
|
239
|
+
}
|
|
240
|
+
/** Follow authorization_server(s) in resource_metadata JSON */
|
|
208
241
|
static async fetchASFromResourceMeta(raw, metaUrl) {
|
|
209
242
|
let asBase = raw.authorization_server;
|
|
210
243
|
if (!asBase && Array.isArray(raw.authorization_servers)) {
|
|
@@ -213,7 +246,6 @@ class OAuthClient {
|
|
|
213
246
|
if (!asBase) {
|
|
214
247
|
throw new Error(`resource_metadata at ${metaUrl} lacked authorization_server(s)`);
|
|
215
248
|
}
|
|
216
|
-
// Attempt both OAuth‑AS and OIDC well‑known
|
|
217
249
|
for (const p of ['.well-known/oauth-authorization-server', '.well-known/openid-configuration']) {
|
|
218
250
|
try {
|
|
219
251
|
return await this.json(new url_1.URL(p, asBase).toString());
|
|
@@ -222,7 +254,6 @@ class OAuthClient {
|
|
|
222
254
|
// next
|
|
223
255
|
}
|
|
224
256
|
}
|
|
225
|
-
// fallback to static OAuth2 endpoints
|
|
226
257
|
this.logger.warn(`OAuth: no well-known on ${asBase}, falling back to static endpoints`);
|
|
227
258
|
return {
|
|
228
259
|
authorization_endpoint: `${asBase}/authorize`,
|
|
@@ -230,21 +261,20 @@ class OAuthClient {
|
|
|
230
261
|
};
|
|
231
262
|
}
|
|
232
263
|
/** DCR: POST client metadata → client_id; cache to disk */
|
|
233
|
-
static async obtainClient(meta, file,
|
|
264
|
+
static async obtainClient(meta, file, _scopes, redirectUri) {
|
|
234
265
|
const existing = await this.read(file);
|
|
235
266
|
if (existing && (!existing.expires_at || existing.expires_at * 1000 > Date.now())) {
|
|
236
|
-
this.logger.info(`OAuth: reusing client_id ${existing.client_id}`);
|
|
267
|
+
this.logger.info(`OAuth: reusing cached client_id ${existing.client_id}`);
|
|
237
268
|
return existing;
|
|
238
269
|
}
|
|
239
270
|
if (!meta.registration_endpoint) {
|
|
240
271
|
throw new Error('OAuth: AS does not support dynamic registration');
|
|
241
272
|
}
|
|
273
|
+
// Let the server decide token_endpoint_auth_method and scope
|
|
242
274
|
const body = {
|
|
243
|
-
client_name: '
|
|
275
|
+
client_name: 'kiro',
|
|
244
276
|
grant_types: ['authorization_code', 'refresh_token'],
|
|
245
277
|
response_types: ['code'],
|
|
246
|
-
token_endpoint_auth_method: 'none',
|
|
247
|
-
scope: scopes.join(' '),
|
|
248
278
|
redirect_uris: [redirectUri],
|
|
249
279
|
};
|
|
250
280
|
const resp = await this.json(meta.registration_endpoint, {
|
|
@@ -257,22 +287,25 @@ class OAuthClient {
|
|
|
257
287
|
client_secret: resp.client_secret,
|
|
258
288
|
expires_at: resp.client_secret_expires_at,
|
|
259
289
|
redirect_uri: redirectUri,
|
|
290
|
+
token_endpoint_auth_method: resp.token_endpoint_auth_method,
|
|
260
291
|
};
|
|
261
292
|
await this.write(file, reg);
|
|
262
293
|
return reg;
|
|
263
294
|
}
|
|
264
|
-
/** Try one refresh_token grant; returns new Token or
|
|
295
|
+
/** Try one refresh_token grant; returns new Token or undefined */
|
|
265
296
|
static async refreshGrant(meta, reg, rs, refresh) {
|
|
266
|
-
const
|
|
297
|
+
const formParams = {
|
|
267
298
|
grant_type: 'refresh_token',
|
|
268
299
|
refresh_token: refresh,
|
|
269
|
-
client_id: reg.client_id,
|
|
270
300
|
resource: rs.toString(),
|
|
271
|
-
}
|
|
301
|
+
};
|
|
302
|
+
const headers = { 'content-type': 'application/x-www-form-urlencoded' };
|
|
303
|
+
const authMethod = this.selectAuthMethod(reg, meta);
|
|
304
|
+
this.applyAuth(authMethod, reg, headers, formParams);
|
|
272
305
|
const res = await this.fetchCompat(meta.token_endpoint, {
|
|
273
306
|
method: 'POST',
|
|
274
|
-
headers
|
|
275
|
-
body:
|
|
307
|
+
headers,
|
|
308
|
+
body: new url_1.URLSearchParams(formParams),
|
|
276
309
|
});
|
|
277
310
|
if (!res.ok) {
|
|
278
311
|
const msg = await res.text().catch(() => '');
|
|
@@ -285,11 +318,9 @@ class OAuthClient {
|
|
|
285
318
|
/** One PKCE flow: browser + loopback → code → token */
|
|
286
319
|
static async pkceGrant(meta, reg, rs, scopes, redirectUri, server) {
|
|
287
320
|
const DEFAULT_PKCE_TIMEOUT_MS = 90_000;
|
|
288
|
-
// a) generate PKCE params
|
|
289
321
|
const verifier = this.b64url(crypto.randomBytes(32));
|
|
290
322
|
const challenge = this.b64url(crypto.createHash('sha256').update(verifier).digest());
|
|
291
323
|
const state = this.b64url(crypto.randomBytes(16));
|
|
292
|
-
// b) build authorize URL + launch browser
|
|
293
324
|
const authz = new url_1.URL(meta.authorization_endpoint);
|
|
294
325
|
authz.search = new url_1.URLSearchParams({
|
|
295
326
|
client_id: reg.client_id,
|
|
@@ -299,10 +330,9 @@ class OAuthClient {
|
|
|
299
330
|
resource: rs.toString(),
|
|
300
331
|
scope: scopes.join(' '),
|
|
301
332
|
redirect_uri: redirectUri,
|
|
302
|
-
state
|
|
333
|
+
state,
|
|
303
334
|
}).toString();
|
|
304
335
|
await this.lsp.window.showDocument({ uri: authz.toString(), external: true });
|
|
305
|
-
// c) wait for code on our loopback
|
|
306
336
|
const waitForFlow = new Promise(resolve => {
|
|
307
337
|
server.on('request', (req, res) => {
|
|
308
338
|
const u = new url_1.URL(req.url || '/', redirectUri);
|
|
@@ -323,19 +353,21 @@ class OAuthClient {
|
|
|
323
353
|
}
|
|
324
354
|
if (!code || rxState !== state)
|
|
325
355
|
throw new Error('Invalid authorization response (state mismatch)');
|
|
326
|
-
//
|
|
327
|
-
const
|
|
356
|
+
// Exchange code for token using the auth method from DCR
|
|
357
|
+
const tokenParams = {
|
|
328
358
|
grant_type: 'authorization_code',
|
|
329
359
|
code,
|
|
330
360
|
code_verifier: verifier,
|
|
331
|
-
client_id: reg.client_id,
|
|
332
361
|
redirect_uri: redirectUri,
|
|
333
362
|
resource: rs.toString(),
|
|
334
|
-
}
|
|
363
|
+
};
|
|
364
|
+
const tokenHeaders = { 'content-type': 'application/x-www-form-urlencoded' };
|
|
365
|
+
const authMethod = this.selectAuthMethod(reg, meta);
|
|
366
|
+
this.applyAuth(authMethod, reg, tokenHeaders, tokenParams);
|
|
335
367
|
const res2 = await this.fetchCompat(meta.token_endpoint, {
|
|
336
368
|
method: 'POST',
|
|
337
|
-
headers:
|
|
338
|
-
body:
|
|
369
|
+
headers: tokenHeaders,
|
|
370
|
+
body: new url_1.URLSearchParams(tokenParams),
|
|
339
371
|
});
|
|
340
372
|
if (!res2.ok) {
|
|
341
373
|
const txt = await res2.text().catch(() => '');
|
|
@@ -344,7 +376,7 @@ class OAuthClient {
|
|
|
344
376
|
const tk = (await res2.json());
|
|
345
377
|
return { ...tk, obtained_at: Date.now() };
|
|
346
378
|
}
|
|
347
|
-
/** Fetch + error
|
|
379
|
+
/** Fetch + error-check + parse JSON */
|
|
348
380
|
static async json(url, init) {
|
|
349
381
|
const r = await this.fetchCompat(url, init);
|
|
350
382
|
if (!r.ok) {
|
|
@@ -371,24 +403,63 @@ class OAuthClient {
|
|
|
371
403
|
await this.workspace.fs.mkdir(dir, { recursive: true });
|
|
372
404
|
await this.workspace.fs.writeFile(file, JSON.stringify(obj, null, 2), { mode: 0o600 });
|
|
373
405
|
}
|
|
374
|
-
/** SHA
|
|
406
|
+
/** SHA-256 of resourceServer URL → hex key */
|
|
375
407
|
static computeKey(rs) {
|
|
376
408
|
return crypto
|
|
377
409
|
.createHash('sha256')
|
|
378
410
|
.update(rs.origin + rs.pathname)
|
|
379
411
|
.digest('hex');
|
|
380
412
|
}
|
|
381
|
-
/** RFC
|
|
413
|
+
/** RFC-7636 base64url without padding */
|
|
382
414
|
static b64url(buf) {
|
|
383
415
|
return buf.toString('base64').replace(/=/g, '').replace(/\+/g, '-').replace(/\//g, '_');
|
|
384
416
|
}
|
|
385
417
|
/** Directory for caching registration + tokens */
|
|
386
418
|
static cacheDir = path.join(os.homedir(), '.aws', 'sso', 'cache');
|
|
387
419
|
/**
|
|
388
|
-
*
|
|
389
|
-
*
|
|
420
|
+
* Select the client authentication method, matching the MCP SDK's selectClientAuthMethod logic.
|
|
421
|
+
* Priority: token_endpoint_auth_method from DCR > server-supported methods > defaults.
|
|
390
422
|
*/
|
|
391
|
-
static
|
|
423
|
+
static selectAuthMethod(reg, meta) {
|
|
424
|
+
const hasSecret = !!reg.client_secret;
|
|
425
|
+
const supported = meta?.token_endpoint_auth_methods_supported ?? [];
|
|
426
|
+
if (reg.token_endpoint_auth_method) {
|
|
427
|
+
if (supported.length === 0 || supported.includes(reg.token_endpoint_auth_method)) {
|
|
428
|
+
return reg.token_endpoint_auth_method;
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
if (supported.length > 0) {
|
|
432
|
+
if (hasSecret && supported.includes('client_secret_basic'))
|
|
433
|
+
return 'client_secret_basic';
|
|
434
|
+
if (hasSecret && supported.includes('client_secret_post'))
|
|
435
|
+
return 'client_secret_post';
|
|
436
|
+
if (supported.includes('none'))
|
|
437
|
+
return 'none';
|
|
438
|
+
}
|
|
439
|
+
return hasSecret ? 'client_secret_post' : 'none';
|
|
440
|
+
}
|
|
441
|
+
/** Apply client authentication to headers and params based on the selected method. */
|
|
442
|
+
static applyAuth(method, reg, headers, params) {
|
|
443
|
+
switch (method) {
|
|
444
|
+
case 'client_secret_basic':
|
|
445
|
+
if (!reg.client_secret)
|
|
446
|
+
throw new Error('client_secret_basic requires a client_secret');
|
|
447
|
+
headers['authorization'] =
|
|
448
|
+
`Basic ${Buffer.from(`${reg.client_id}:${reg.client_secret}`).toString('base64')}`;
|
|
449
|
+
break;
|
|
450
|
+
case 'client_secret_post':
|
|
451
|
+
params.client_id = reg.client_id;
|
|
452
|
+
if (reg.client_secret)
|
|
453
|
+
params.client_secret = reg.client_secret;
|
|
454
|
+
break;
|
|
455
|
+
case 'none':
|
|
456
|
+
default:
|
|
457
|
+
params.client_id = reg.client_id;
|
|
458
|
+
break;
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
/** Await server.listen() with error rejection for immediate handling. */
|
|
462
|
+
static listen(server, port, host = 'localhost') {
|
|
392
463
|
return new Promise((resolve, reject) => {
|
|
393
464
|
const onListening = () => {
|
|
394
465
|
server.off('error', onError);
|
|
@@ -403,16 +474,12 @@ class OAuthClient {
|
|
|
403
474
|
server.listen(port, host);
|
|
404
475
|
});
|
|
405
476
|
}
|
|
406
|
-
/**
|
|
407
|
-
* Fetch compatibility: use global fetch on Node >= 18, otherwise dynamically import('node-fetch').
|
|
408
|
-
* Using Function('return import(...)') avoids downleveling to require() in CJS builds.
|
|
409
|
-
*/
|
|
477
|
+
/** Fetch compatibility: use global fetch on Node >= 18, otherwise dynamically import('node-fetch'). */
|
|
410
478
|
static async fetchCompat(url, init) {
|
|
411
479
|
const globalObj = globalThis;
|
|
412
480
|
if (typeof globalObj.fetch === 'function') {
|
|
413
481
|
return globalObj.fetch(url, init);
|
|
414
482
|
}
|
|
415
|
-
// Dynamic import of ESM node-fetch (only when global fetch is unavailable)
|
|
416
483
|
const mod = await Function('return import("node-fetch")')();
|
|
417
484
|
const f = mod.default ?? mod;
|
|
418
485
|
return f(url, init);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcpOauthClient.js","sourceRoot":"","sources":["../../../../../src/language-server/agenticChat/tools/mcp/mcpOauthClient.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcpOauthClient.js","sourceRoot":"","sources":["../../../../../src/language-server/agenticChat/tools/mcp/mcpOauthClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -357,6 +357,14 @@ async function loadAgentConfig(workspace, logging, agentPaths, registry, registr
|
|
|
357
357
|
...json.toolsSettings,
|
|
358
358
|
};
|
|
359
359
|
}
|
|
360
|
+
// 5b) Process resources
|
|
361
|
+
if (Array.isArray(json.resources)) {
|
|
362
|
+
for (const resource of json.resources) {
|
|
363
|
+
if (typeof resource === 'string' && !agentConfig.resources.includes(resource)) {
|
|
364
|
+
agentConfig.resources.push(resource);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
}
|
|
360
368
|
// 6) Process MCP servers (similar to loadMcpServerConfigs)
|
|
361
369
|
if (json.mcpServers && typeof json.mcpServers === 'object') {
|
|
362
370
|
for (const [name, entryRaw] of Object.entries(json.mcpServers)) {
|