@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.
Files changed (46) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/out/language-server/agenticChat/agenticChatController.js +52 -27
  3. package/out/language-server/agenticChat/agenticChatController.js.map +1 -1
  4. package/out/language-server/agenticChat/context/additionalContextProvider.d.ts +27 -2
  5. package/out/language-server/agenticChat/context/additionalContextProvider.js +160 -32
  6. package/out/language-server/agenticChat/context/additionalContextProvider.js.map +1 -1
  7. package/out/language-server/agenticChat/tools/executeBash.d.ts +1 -1
  8. package/out/language-server/agenticChat/tools/executeBash.js +11 -2
  9. package/out/language-server/agenticChat/tools/executeBash.js.map +1 -1
  10. package/out/language-server/agenticChat/tools/fileSearch.d.ts +1 -1
  11. package/out/language-server/agenticChat/tools/fileSearch.js +1 -1
  12. package/out/language-server/agenticChat/tools/fileSearch.js.map +1 -1
  13. package/out/language-server/agenticChat/tools/fsRead.d.ts +1 -1
  14. package/out/language-server/agenticChat/tools/fsRead.js +1 -1
  15. package/out/language-server/agenticChat/tools/fsRead.js.map +1 -1
  16. package/out/language-server/agenticChat/tools/fsReplace.d.ts +1 -1
  17. package/out/language-server/agenticChat/tools/fsReplace.js +1 -1
  18. package/out/language-server/agenticChat/tools/fsReplace.js.map +1 -1
  19. package/out/language-server/agenticChat/tools/fsWrite.d.ts +1 -1
  20. package/out/language-server/agenticChat/tools/fsWrite.js +1 -1
  21. package/out/language-server/agenticChat/tools/fsWrite.js.map +1 -1
  22. package/out/language-server/agenticChat/tools/listDirectory.d.ts +1 -1
  23. package/out/language-server/agenticChat/tools/listDirectory.js +1 -1
  24. package/out/language-server/agenticChat/tools/listDirectory.js.map +1 -1
  25. package/out/language-server/agenticChat/tools/mcp/mcpManager.d.ts +1 -0
  26. package/out/language-server/agenticChat/tools/mcp/mcpManager.js +3 -0
  27. package/out/language-server/agenticChat/tools/mcp/mcpManager.js.map +1 -1
  28. package/out/language-server/agenticChat/tools/mcp/mcpOauthClient.d.ts +30 -13
  29. package/out/language-server/agenticChat/tools/mcp/mcpOauthClient.js +182 -115
  30. package/out/language-server/agenticChat/tools/mcp/mcpOauthClient.js.map +1 -1
  31. package/out/language-server/agenticChat/tools/mcp/mcpUtils.js +8 -0
  32. package/out/language-server/agenticChat/tools/mcp/mcpUtils.js.map +1 -1
  33. package/out/language-server/agenticChat/tools/toolShared.d.ts +9 -7
  34. package/out/language-server/agenticChat/tools/toolShared.js +18 -12
  35. package/out/language-server/agenticChat/tools/toolShared.js.map +1 -1
  36. package/out/language-server/chat/chatSessionService.d.ts +4 -3
  37. package/out/language-server/chat/chatSessionService.js +9 -5
  38. package/out/language-server/chat/chatSessionService.js.map +1 -1
  39. package/out/language-server/chat/telemetry/chatTelemetryController.js +1 -0
  40. package/out/language-server/chat/telemetry/chatTelemetryController.js.map +1 -1
  41. package/out/shared/telemetry/telemetryService.d.ts +1 -0
  42. package/out/shared/telemetry/telemetryService.js +1 -0
  43. package/out/shared/telemetry/telemetryService.js.map +1 -1
  44. package/out/shared/telemetry/types.d.ts +1 -0
  45. package/out/shared/telemetry/types.js.map +1 -1
  46. 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
- // ===== Silent branch: try cached token, then refresh, never opens a browser =====
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(`OAuth: using still-valid cached token (silent)`);
37
+ this.logger.info('OAuth: using still-valid cached token (silent)');
39
38
  return cachedTok.access_token;
40
39
  }
41
- this.logger.info(`OAuth: cached token expired try refresh (silent)`);
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(`OAuth: refresh grant succeeded (silent)`);
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
- // ===== Interactive branch: may open a browser (PKCE) =====
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://127.0.0.1:${port}`;
65
+ const normalized = `http://localhost:${port}/oauth/callback`;
71
66
  server = http.createServer();
72
67
  try {
73
- await this.listen(server, port, '127.0.0.1');
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(`Port ${port} in use; falling back to new random port`);
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
- const created = await this.buildCallbackServer();
97
- server = created.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(`OAuth: using still-valid cached token`);
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
- // 3) Discover AS metadata
113
- let meta;
114
- try {
115
- meta = await this.discoverAS(mcpBase);
116
- }
117
- catch (e) {
118
- throw new Error(`OAuth discovery failed: ${e?.message ?? String(e)}`);
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(`OAuth: refresh grant succeeded`);
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 onetime HTTP listener on localhost:randomPort */
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, '127.0.0.1');
130
+ await this.listen(server, 0, 'localhost');
161
131
  const port = server.address().port;
162
- return { server, redirectUri: `http://127.0.0.1:${port}` };
132
+ return { server, redirectUri: `http://localhost:${port}/oauth/callback` };
163
133
  }
164
- /** Discover OAuth endpoints by HEAD/WWW‑Authenticate, well‑known, or fallback */
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
- // a) HEAD WWW‑Authenticate resource_metadata
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('MCP OAuth: no resource_metadata found in WWW-Authenticate header');
172
+ catch (e) {
173
+ this.logger.info(`OAuth: WWW-Authenticate discovery failed ${e instanceof Error ? e.message : String(e)}`);
181
174
  }
182
- // b) well‑known on resource host
183
- this.logger.info('MCP OAuth: attempting discovery via well-known endpoints');
184
- const probes = [
185
- new url_1.URL('.well-known/oauth-authorization-server', rs).toString(),
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
- // c) fallback to static OAuth2 endpoints
180
+ // Step 4: Fallback to static endpoints
200
181
  const base = (rs.origin + rs.pathname).replace(/\/+$/, '');
201
- this.logger.warn(`OAuth: all discovery attempts failed, synthesizing endpoints from ${base}`);
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
- /** Follow `authorization_server(s)` in resource_metadata JSON */
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, scopes, redirectUri) {
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: 'AWS MCP LSP',
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 `undefined` */
295
+ /** Try one refresh_token grant; returns new Token or undefined */
265
296
  static async refreshGrant(meta, reg, rs, refresh) {
266
- const form = new url_1.URLSearchParams({
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: { 'content-type': 'application/x-www-form-urlencoded' },
275
- body: form,
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: 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
- // d) exchange code for token
327
- const form2 = new url_1.URLSearchParams({
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: { 'content-type': 'application/x-www-form-urlencoded' },
338
- body: form2,
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 + errorcheck + parse JSON */
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
- /** SHA256 of resourceServer URL → hex key */
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
- /** RFC7636 base64url without padding */
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
- * Await server.listen() but reject if it emits 'error' (eg EADDRINUSE),
389
- * so callers can handle it immediately instead of hanging.
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 listen(server, port, host = '127.0.0.1') {
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":";AAAA;;;GAGG;;;AAEH,iCAAgC;AAChC,6BAA4B;AAC5B,6BAA0C;AAC1C,6BAA4B;AAC5B,yBAAwB;AA0BxB,MAAa,WAAW;IACZ,MAAM,CAAC,MAAM,CAAQ;IACrB,MAAM,CAAC,SAAS,CAAW;IAC3B,MAAM,CAAC,GAAG,CAAK;IAEhB,MAAM,CAAC,UAAU,CAAC,EAAa,EAAE,MAAc,EAAE,GAAQ;QAC5D,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAClB,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,mBAAmB,CACnC,OAAY,EACZ,OAAkC,EAAE,WAAW,EAAE,KAAK,EAAE;QAExD,MAAM,WAAW,GAAG,IAAI,EAAE,WAAW,KAAK,IAAI,CAAA;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG,oBAAoB,CAAC,CAAA;QACpE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG,aAAa,CAAC,CAAA;QAE7D,uEAAuE;QACvE,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAQ,OAAO,CAAC,CAAA;YACjD,IAAI,SAAS,EAAE,CAAC;gBACZ,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,UAAU,GAAG,IAAI,CAAA;gBAClE,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;oBACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAA;oBAClE,OAAO,SAAS,CAAC,YAAY,CAAA;gBACjC,CAAC;gBACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAA;YAC5E,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAe,OAAO,CAAC,CAAA;YACvD,IAAI,SAAS,EAAE,aAAa,IAAI,QAAQ,EAAE,CAAC;gBACvC,IAAI,CAAC;oBACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;oBAC3C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,aAAa,CAAC,CAAA;oBAC3F,IAAI,SAAS,EAAE,CAAC;wBACZ,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;wBACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAA;wBAC3D,OAAO,SAAS,CAAC,YAAY,CAAA;oBACjC,CAAC;gBACL,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACT,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;gBACpG,CAAC;YACL,CAAC;YAED,OAAO,SAAS,CAAA;QACpB,CAAC;QAED,gDAAgD;QAChD,IAAI,MAAM,GAAuB,IAAI,CAAA;QACrC,IAAI,WAAmB,CAAA;QACvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAe,OAAO,CAAC,CAAA;QACvD,IAAI,QAAQ,EAAE,CAAC;YACX,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,SAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAA;YACxD,MAAM,UAAU,GAAG,oBAAoB,IAAI,iBAAiB,CAAA;YAC5D,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;YAC5B,IAAI,CAAC;gBACD,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,CAAA;gBAC5C,WAAW,GAAG,UAAU,CAAA;YAC5B,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBACd,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBAC1B,IAAI,CAAC;wBACD,MAAM,CAAC,KAAK,EAAE,CAAA;oBAClB,CAAC;oBAAC,MAAM,CAAC;wBACL,YAAY;oBAChB,CAAC;oBACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,0CAA0C,CAAC,CAC9E;oBAAA,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAA;oBAC7D,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;gBACvC,CAAC;qBAAM,CAAC;oBACJ,MAAM,CAAC,CAAA;gBACX,CAAC;YACL,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,CAAC;YAAA,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAA;QACjE,CAAC;QAED,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAQ,OAAO,CAAC,CAAA;YAC9C,IAAI,MAAM,EAAE,CAAC;gBACT,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,CAAA;gBAC5D,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;oBACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAA;oBACzD,OAAO,MAAM,CAAC,YAAY,CAAA;gBAC9B,CAAC;YACL,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;YAE3C,iEAAiE;YACjE,MAAM,MAAM,GACR,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC;gBACrD,CAAC,CAAC,IAAI,CAAC,gBAAgB;gBACvB,CAAC,CAAC,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAA;YAEtC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAA;YAEvE,gCAAgC;YAChC,IAAI,MAAM,EAAE,aAAa,EAAE,CAAC;gBACxB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC,CAAA;gBACnF,IAAI,SAAS,EAAE,CAAC;oBACZ,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;oBACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;oBAClD,OAAO,SAAS,CAAC,YAAY,CAAA;gBACjC,CAAC;YACL,CAAC;YAED,wBAAwB;YACxB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAA;YACnF,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;YAChC,OAAO,KAAK,CAAC,YAAY,CAAA;QAC7B,CAAC;gBAAS,CAAC;YACP,IAAI,MAAM,EAAE,CAAC;gBACT,MAAM,IAAI,OAAO,CAAO,GAAG,CAAC,EAAE,CAAC,MAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;YAC9D,CAAC;QACL,CAAC;IACL,CAAC;IAED,+DAA+D;IACvD,MAAM,CAAC,KAAK,CAAC,mBAAmB;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;QAClC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,WAAW,CAAC,CAAA;QACzC,MAAM,IAAI,GAAI,MAAM,CAAC,OAAO,EAAU,CAAC,IAAc,CAAA;QACrD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,oBAAoB,IAAI,iBAAiB,EAAE,CAAA;IAC7E,CAAC;IAED;;;;;;OAMG;IACK,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAO;QACnC,+CAA+C;QAC/C,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,iCAAiC,CAAC,EAAE,CAAC,CAAA;YAC5D,IAAI,GAAG,EAAE,CAAC;gBACN,MAAM,KAAK,GAAG,GAAG,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,CAAA;gBAC5C,IAAI,KAAK,EAAE,CAAC;oBACR,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mCAAmC,CAAC,IAAI,SAAG,CAAC,KAAK,CAAC,CAAC,CAAA;oBAC7E,IAAI,MAAM,EAAE,CAAC;wBACT,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,GAAG,CAAC,gBAAgB,EAAE,CAAC;4BACnD,MAAM,CAAC,gBAAgB,GAAG,GAAG,CAAC,gBAAgB,CAAA;wBAClD,CAAC;wBACD,OAAO,MAAM,CAAA;oBACjB,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QACxG,CAAC;QAED,2DAA2D;QAC3D,IAAI,CAAC;YACD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;YACnE,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAA;YACtD,MAAM,CAAC,GAAG,4CAA4C,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACnE,IAAI,CAAC,EAAE,CAAC;gBACJ,MAAM,OAAO,GAAG,IAAI,SAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAA;gBACpD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAM,OAAO,CAAC,CAAA;gBACzC,OAAO,MAAM,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAC3D,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QAChH,CAAC;QAED,sDAAsD;QACtD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mCAAmC,CAAC,IAAI,SAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAA;QAC/E,IAAI,MAAM,EAAE,CAAC;YACT,OAAO,MAAM,CAAA;QACjB,CAAC;QAED,uCAAuC;QACvC,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QAC1D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4DAA4D,IAAI,EAAE,CAAC,CAAA;QACpF,OAAO;YACH,sBAAsB,EAAE,GAAG,IAAI,YAAY;YAC3C,cAAc,EAAE,GAAG,IAAI,eAAe;SACzC,CAAA;IACL,CAAC;IAED;;;OAGG;IACK,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,EAAO;QAC1D,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAA;QACnF,MAAM,SAAS,GAAG,CAAC,IAAI,SAAG,CAAC,wCAAwC,QAAQ,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;QACrG,IAAI,QAAQ,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;YAC/B,SAAS,CAAC,IAAI,CAAC,IAAI,SAAG,CAAC,uCAAuC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC1F,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE;oBACrC,OAAO,EAAE,EAAE,sBAAsB,EAAE,YAAY,EAAE;iBACpD,CAAC,CAAA;gBACF,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;oBACV,OAAO,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;gBAC5B,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACL,eAAe;YACnB,CAAC;QACL,CAAC;QACD,OAAO,SAAS,CAAA;IACpB,CAAC;IAED;;;OAGG;IACK,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,KAAU;QAC/D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAA;QAC5F,MAAM,OAAO,GAAG,QAAQ,KAAK,EAAE,IAAI,QAAQ,KAAK,GAAG,CAAA;QAEnD,MAAM,SAAS,GAAa,EAAE,CAAA;QAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,SAAS,CAAC,IAAI,CAAC,IAAI,SAAG,CAAC,yCAAyC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;YAC3F,SAAS,CAAC,IAAI,CAAC,IAAI,SAAG,CAAC,mCAAmC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;QACzF,CAAC;aAAM,CAAC;YACJ,SAAS,CAAC,IAAI,CAAC,IAAI,SAAG,CAAC,0CAA0C,QAAQ,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;YACtG,SAAS,CAAC,IAAI,CAAC,IAAI,SAAG,CAAC,oCAAoC,QAAQ,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;YAChG,SAAS,CAAC,IAAI,CAAC,IAAI,SAAG,CAAC,GAAG,QAAQ,mCAAmC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;QACpG,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAO,GAAG,CAAC,CAAA;YACrC,CAAC;YAAC,MAAM,CAAC;gBACL,eAAe;YACnB,CAAC;QACL,CAAC;QACD,OAAO,SAAS,CAAA;IACpB,CAAC;IAED,+DAA+D;IACvD,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,GAAQ,EAAE,OAAe;QAClE,IAAI,MAAM,GAAG,GAAG,CAAC,oBAAoB,CAAA;QACrC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE,CAAC;YACtD,MAAM,GAAG,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;QACzC,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,iCAAiC,CAAC,CAAA;QACrF,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE,kCAAkC,CAAC,EAAE,CAAC;YAC7F,IAAI,CAAC;gBACD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAO,IAAI,SAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;YAC/D,CAAC;YAAC,MAAM,CAAC;gBACL,OAAO;YACX,CAAC;QACL,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,MAAM,oCAAoC,CAAC,CAAA;QACvF,OAAO;YACH,sBAAsB,EAAE,GAAG,MAAM,YAAY;YAC7C,cAAc,EAAE,GAAG,MAAM,eAAe;SAC3C,CAAA;IACL,CAAC;IAED,2DAA2D;IACnD,MAAM,CAAC,KAAK,CAAC,YAAY,CAC7B,IAAU,EACV,IAAY,EACZ,OAAiB,EACjB,WAAmB;QAEnB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAe,IAAI,CAAC,CAAA;QACpD,IAAI,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YAChF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAA;YACzE,OAAO,QAAQ,CAAA;QACnB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;QACtE,CAAC;QAED,6DAA6D;QAC7D,MAAM,IAAI,GAAG;YACT,WAAW,EAAE,MAAM;YACnB,WAAW,EAAE,CAAC,oBAAoB,EAAE,eAAe,CAAC;YACpD,cAAc,EAAE,CAAC,MAAM,CAAC;YACxB,aAAa,EAAE,CAAC,WAAW,CAAC;SAC/B,CAAA;QACD,MAAM,IAAI,GAAQ,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;YAC1D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC7B,CAAC,CAAA;QAEF,MAAM,GAAG,GAAiB;YACtB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,UAAU,EAAE,IAAI,CAAC,wBAAwB;YACzC,YAAY,EAAE,WAAW;YACzB,0BAA0B,EAAE,IAAI,CAAC,0BAA0B;SAC9D,CAAA;QACD,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAC3B,OAAO,GAAG,CAAA;IACd,CAAC;IAED,kEAAkE;IAC1D,MAAM,CAAC,KAAK,CAAC,YAAY,CAC7B,IAAU,EACV,GAAiB,EACjB,EAAO,EACP,OAAe;QAEf,MAAM,UAAU,GAA2B;YACvC,UAAU,EAAE,eAAe;YAC3B,aAAa,EAAE,OAAO;YACtB,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE;SAC1B,CAAA;QACD,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,mCAAmC,EAAE,CAAA;QAE/F,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACnD,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC,CAAA;QAEpD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE;YACpD,MAAM,EAAE,MAAM;YACd,OAAO;YACP,IAAI,EAAE,IAAI,qBAAe,CAAC,UAAU,CAAC;SACxC,CAAC,CAAA;QACF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACV,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;YAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,GAAG,CAAC,MAAM,MAAM,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;YACnF,OAAO,SAAS,CAAA;QACpB,CAAC;QACD,MAAM,aAAa,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA4B,CAAA;QACnE,OAAO,EAAE,GAAI,aAAwB,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,EAAW,CAAA;IAC7E,CAAC;IAED,uDAAuD;IAC/C,MAAM,CAAC,KAAK,CAAC,SAAS,CAC1B,IAAU,EACV,GAAiB,EACjB,EAAO,EACP,MAAgB,EAChB,WAAmB,EACnB,MAAmB;QAEnB,MAAM,uBAAuB,GAAG,MAAM,CAAA;QAEtC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAA;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;QACpF,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAA;QAEjD,MAAM,KAAK,GAAG,IAAI,SAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;QAClD,KAAK,CAAC,MAAM,GAAG,IAAI,qBAAe,CAAC;YAC/B,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,aAAa,EAAE,MAAM;YACrB,cAAc,EAAE,SAAS;YACzB,qBAAqB,EAAE,MAAM;YAC7B,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE;YACvB,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;YACvB,YAAY,EAAE,WAAW;YACzB,KAAK;SACR,CAAC,CAAC,QAAQ,EAAE,CAAA;QAEb,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;QAE7E,MAAM,WAAW,GAAG,IAAI,OAAO,CAAoE,OAAO,CAAC,EAAE;YACzG,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;gBAC9B,MAAM,CAAC,GAAG,IAAI,SAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,WAAW,CAAC,CAAA;gBAC9C,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;gBAC1C,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;gBAC3C,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,SAAS,CAAA;gBAClD,MAAM,EAAE,GAAG,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,SAAS,CAAA;gBAC/D,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAA;gBAC3F,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAA;YACzD,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;QACF,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YACvD,WAAW;YACX,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAC7B,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAC1F;SACJ,CAAC,CAAA;QACF,IAAI,GAAG,EAAE,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QACnF,CAAC;QACD,IAAI,CAAC,IAAI,IAAI,OAAO,KAAK,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;QAElG,yDAAyD;QACzD,MAAM,WAAW,GAA2B;YACxC,UAAU,EAAE,oBAAoB;YAChC,IAAI;YACJ,aAAa,EAAE,QAAQ;YACvB,YAAY,EAAE,WAAW;YACzB,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE;SAC1B,CAAA;QACD,MAAM,YAAY,GAA2B,EAAE,cAAc,EAAE,mCAAmC,EAAE,CAAA;QAEpG,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACnD,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,WAAW,CAAC,CAAA;QAE1D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE;YACrD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,YAAY;YACrB,IAAI,EAAE,IAAI,qBAAe,CAAC,WAAW,CAAC;SACzC,CAAC,CAAA;QACF,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;YAC7C,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,CAAC,MAAM,MAAM,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;QACzF,CAAC;QACD,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAA4B,CAAA;QACzD,OAAO,EAAE,GAAI,EAAa,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,EAAW,CAAA;IAClE,CAAC;IAED,uCAAuC;IAC/B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAI,GAAW,EAAE,IAAkB;QACxD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAC3C,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;YAC1C,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC,CAAA;QACvD,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAM,CAAA;IAChC,CAAC;IAED,8CAA8C;IACtC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAI,IAAY;QACrC,IAAI,CAAC;YACD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAAE,OAAO,SAAS,CAAA;YAC7D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YAClD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAM,CAAA;QAC1C,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,SAAS,CAAA;QACpB,CAAC;IACL,CAAC;IAED,mEAAmE;IAC3D,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,GAAY;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAC9B,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACvD,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAC1F,CAAC;IAED,8CAA8C;IACtC,MAAM,CAAC,UAAU,CAAC,EAAO;QAC7B,OAAO,MAAM;aACR,UAAU,CAAC,QAAQ,CAAC;aACpB,MAAM,CAAC,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC;aAC/B,MAAM,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC;IAED,yCAAyC;IACjC,MAAM,CAAC,MAAM,CAAC,GAAW;QAC7B,OAAO,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAC3F,CAAC;IAED,kDAAkD;IAC1C,MAAM,CAAU,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;IAElF;;;OAGG;IACK,MAAM,CAAC,gBAAgB,CAAC,GAAiB,EAAE,IAAW;QAC1D,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,CAAA;QACrC,MAAM,SAAS,GAAG,IAAI,EAAE,qCAAqC,IAAI,EAAE,CAAA;QAEnE,IAAI,GAAG,CAAC,0BAA0B,EAAE,CAAC;YACjC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,0BAA0B,CAAC,EAAE,CAAC;gBAC/E,OAAO,GAAG,CAAC,0BAA0B,CAAA;YACzC,CAAC;QACL,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC;gBAAE,OAAO,qBAAqB,CAAA;YACxF,IAAI,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC;gBAAE,OAAO,oBAAoB,CAAA;YACtF,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,OAAO,MAAM,CAAA;QACjD,CAAC;QAED,OAAO,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAA;IACpD,CAAC;IAED,sFAAsF;IAC9E,MAAM,CAAC,SAAS,CACpB,MAAc,EACd,GAAiB,EACjB,OAA+B,EAC/B,MAA8B;QAE9B,QAAQ,MAAM,EAAE,CAAC;YACb,KAAK,qBAAqB;gBACtB,IAAI,CAAC,GAAG,CAAC,aAAa;oBAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;gBACvF,OAAO,CAAC,eAAe,CAAC;oBACpB,SAAS,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAA;gBACtF,MAAK;YACT,KAAK,oBAAoB;gBACrB,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAA;gBAChC,IAAI,GAAG,CAAC,aAAa;oBAAE,MAAM,CAAC,aAAa,GAAG,GAAG,CAAC,aAAa,CAAA;gBAC/D,MAAK;YACT,KAAK,MAAM,CAAC;YACZ;gBACI,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAA;gBAChC,MAAK;QACb,CAAC;IACL,CAAC;IAED,yEAAyE;IACjE,MAAM,CAAC,MAAM,CAAC,MAAmB,EAAE,IAAY,EAAE,OAAe,WAAW;QAC/E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,MAAM,WAAW,GAAG,GAAG,EAAE;gBACrB,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;gBAC5B,OAAO,EAAE,CAAA;YACb,CAAC,CAAA;YACD,MAAM,OAAO,GAAG,CAAC,GAA0B,EAAE,EAAE;gBAC3C,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;gBACpC,MAAM,CAAC,GAAG,CAAC,CAAA;YACf,CAAC,CAAA;YACD,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;YACrC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YAC7B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAC7B,CAAC,CAAC,CAAA;IACN,CAAC;IAED,uGAAuG;IAC/F,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,GAAW,EAAE,IAAkB;QAC5D,MAAM,SAAS,GAAG,UAAiB,CAAA;QACnC,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YACxC,OAAO,SAAS,CAAC,KAAK,CAAC,GAAU,EAAE,IAAW,CAAC,CAAA;QACnD,CAAC;QACD,MAAM,GAAG,GAAG,MAAO,QAAQ,CAAC,6BAA6B,CAAC,EAAmB,CAAA;QAC7E,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAA;QAC5B,OAAO,CAAC,CAAC,GAAU,EAAE,IAAW,CAAC,CAAA;IACrC,CAAC;;AAphBL,kCAqhBC"}
@@ -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)) {