@aws/lsp-codewhisperer 0.0.79 → 0.0.81

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 (64) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/out/language-server/agenticChat/agenticChatController.js +57 -2
  3. package/out/language-server/agenticChat/agenticChatController.js.map +1 -1
  4. package/out/language-server/agenticChat/tools/mcp/agentPermissionManager.d.ts +103 -0
  5. package/out/language-server/agenticChat/tools/mcp/agentPermissionManager.js +446 -0
  6. package/out/language-server/agenticChat/tools/mcp/agentPermissionManager.js.map +1 -0
  7. package/out/language-server/agenticChat/tools/mcp/mcpEventHandler.js +44 -7
  8. package/out/language-server/agenticChat/tools/mcp/mcpEventHandler.js.map +1 -1
  9. package/out/language-server/agenticChat/tools/mcp/mcpManager.d.ts +15 -2
  10. package/out/language-server/agenticChat/tools/mcp/mcpManager.js +149 -169
  11. package/out/language-server/agenticChat/tools/mcp/mcpManager.js.map +1 -1
  12. package/out/language-server/agenticChat/tools/mcp/mcpTypes.js +1 -1
  13. package/out/language-server/agenticChat/tools/mcp/mcpTypes.js.map +1 -1
  14. package/out/language-server/agenticChat/tools/mcp/mcpUtils.d.ts +2 -1
  15. package/out/language-server/agenticChat/tools/mcp/mcpUtils.js +87 -54
  16. package/out/language-server/agenticChat/tools/mcp/mcpUtils.js.map +1 -1
  17. package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReview.js +15 -5
  18. package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReview.js.map +1 -1
  19. package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewConstants.js +1 -1
  20. package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewConstants.js.map +1 -1
  21. package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewTypes.d.ts +1 -0
  22. package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewUtils.d.ts +1 -1
  23. package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewUtils.js +3 -1
  24. package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewUtils.js.map +1 -1
  25. package/out/language-server/agenticChat/tools/toolServer.js +1 -0
  26. package/out/language-server/agenticChat/tools/toolServer.js.map +1 -1
  27. package/out/language-server/agenticChat/tools/workspaceContext/semanticSearch.d.ts +40 -0
  28. package/out/language-server/agenticChat/tools/workspaceContext/semanticSearch.js +106 -0
  29. package/out/language-server/agenticChat/tools/workspaceContext/semanticSearch.js.map +1 -0
  30. package/out/language-server/inline-completion/codeWhispererServer.js +3 -3
  31. package/out/language-server/inline-completion/codeWhispererServer.js.map +1 -1
  32. package/out/language-server/inline-completion/editCompletionHandler.js +1 -1
  33. package/out/language-server/inline-completion/editCompletionHandler.js.map +1 -1
  34. package/out/language-server/inline-completion/session/sessionManager.d.ts +2 -2
  35. package/out/language-server/inline-completion/session/sessionManager.js +3 -2
  36. package/out/language-server/inline-completion/session/sessionManager.js.map +1 -1
  37. package/out/language-server/inline-completion/telemetry.js +1 -1
  38. package/out/language-server/netTransform/artifactManager.d.ts +1 -0
  39. package/out/language-server/netTransform/artifactManager.js +52 -10
  40. package/out/language-server/netTransform/artifactManager.js.map +1 -1
  41. package/out/language-server/workspaceContext/util.d.ts +4 -0
  42. package/out/language-server/workspaceContext/util.js +8 -1
  43. package/out/language-server/workspaceContext/util.js.map +1 -1
  44. package/out/language-server/workspaceContext/workspaceContextServer.js +19 -18
  45. package/out/language-server/workspaceContext/workspaceContextServer.js.map +1 -1
  46. package/out/language-server/workspaceContext/workspaceFolderManager.d.ts +8 -2
  47. package/out/language-server/workspaceContext/workspaceFolderManager.js +35 -3
  48. package/out/language-server/workspaceContext/workspaceFolderManager.js.map +1 -1
  49. package/out/shared/amazonQServiceManager/AmazonQTokenServiceManager.js +8 -6
  50. package/out/shared/amazonQServiceManager/AmazonQTokenServiceManager.js.map +1 -1
  51. package/out/shared/amazonQServiceManager/qDeveloperProfiles.d.ts +1 -2
  52. package/out/shared/amazonQServiceManager/qDeveloperProfiles.js.map +1 -1
  53. package/out/shared/codeWhispererService.js +3 -0
  54. package/out/shared/codeWhispererService.js.map +1 -1
  55. package/out/shared/streamingClientService.js +9 -0
  56. package/out/shared/streamingClientService.js.map +1 -1
  57. package/out/shared/telemetry/telemetryService.js +4 -2
  58. package/out/shared/telemetry/telemetryService.js.map +1 -1
  59. package/out/shared/testUtils.d.ts +1 -1
  60. package/out/shared/testUtils.js.map +1 -1
  61. package/out/shared/utils.d.ts +1 -2
  62. package/out/shared/utils.js +1 -3
  63. package/out/shared/utils.js.map +1 -1
  64. package/package.json +2 -2
@@ -0,0 +1,103 @@
1
+ /*!
2
+ * Copyright Amazon.com, Inc. or its affiliates.
3
+ * All Rights Reserved. SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { AgentConfig, McpPermissionType } from './mcpTypes';
6
+ /**
7
+ * Manages agent tool permissions with wildcard support for reading and simple patterns for writing
8
+ */
9
+ export declare class AgentPermissionManager {
10
+ private agentConfig;
11
+ private getAvailableTools?;
12
+ private getAllAvailableServers?;
13
+ private getAllBuiltinTools?;
14
+ constructor(agentConfig: AgentConfig, getAvailableTools?: ((serverName: string) => string[]) | undefined, getAllAvailableServers?: (() => string[]) | undefined, getAllBuiltinTools?: (() => string[]) | undefined);
15
+ /**
16
+ * Check if a tool matches a pattern using glob-style wildcards
17
+ */
18
+ private matchesPattern;
19
+ /**
20
+ * Check if a tool is enabled (in tools array)
21
+ */
22
+ isToolEnabled(serverName: string, toolName: string): boolean;
23
+ /**
24
+ * Check if a tool is always allowed (in allowedTools array)
25
+ */
26
+ isToolAlwaysAllowed(serverName: string, toolName: string): boolean;
27
+ /**
28
+ * Get permission type for a tool
29
+ */
30
+ getToolPermission(serverName: string, toolName: string): McpPermissionType;
31
+ /**
32
+ * Set permission for a tool - removes conflicting wildcards and replaces with explicit tools
33
+ */
34
+ setToolPermission(serverName: string, toolName: string, permission: McpPermissionType): void;
35
+ /**
36
+ * Add tool to tools array
37
+ */
38
+ private addTool;
39
+ /**
40
+ * Remove tool from tools array
41
+ */
42
+ private removeTool;
43
+ /**
44
+ * Add tool to allowedTools array
45
+ */
46
+ private addToAllowedTools;
47
+ /**
48
+ * Remove tool from allowedTools array (only exact matches)
49
+ */
50
+ private removeFromAllowedTools;
51
+ /**
52
+ * Set server-wide permission (uses @serverName pattern)
53
+ */
54
+ setServerPermission(serverName: string, permission: McpPermissionType): void;
55
+ /**
56
+ * Convert server-wide permission to individual tools, excluding the denied tool
57
+ */
58
+ private convertServerWideToIndividualTools;
59
+ /**
60
+ * Remove conflicting wildcards from tools when denying a tool
61
+ */
62
+ private removeConflictingWildcardsForDeny;
63
+ /**
64
+ * Remove conflicting wildcards from allowedTools when denying a tool
65
+ */
66
+ private removeConflictingAllowedWildcardsForDeny;
67
+ /**
68
+ * Remove conflicting wildcards from allowedTools when setting to ask
69
+ */
70
+ private removeConflictingAllowedWildcardsForAsk;
71
+ /**
72
+ * Expand global wildcard (*) to all available tools except the denied one
73
+ */
74
+ private expandGlobalWildcard;
75
+ /**
76
+ * Expand @builtin wildcard to all builtin tools except the denied one
77
+ */
78
+ private expandBuiltinWildcard;
79
+ /**
80
+ * Remove pattern wildcards that match the tool and expand them
81
+ */
82
+ private removeMatchingPatternWildcards;
83
+ /**
84
+ * Expand a pattern wildcard to individual tools except the denied one
85
+ */
86
+ private expandPatternWildcard;
87
+ /**
88
+ * Expand allowedTools pattern wildcard except the denied tool
89
+ */
90
+ private expandAllowedPatternWildcard;
91
+ /**
92
+ * Get all available servers
93
+ */
94
+ private getAvailableServers;
95
+ /**
96
+ * Get all builtin tools
97
+ */
98
+ private getBuiltinTools;
99
+ /**
100
+ * Get updated agent config
101
+ */
102
+ getAgentConfig(): AgentConfig;
103
+ }
@@ -0,0 +1,446 @@
1
+ "use strict";
2
+ /*!
3
+ * Copyright Amazon.com, Inc. or its affiliates.
4
+ * All Rights Reserved. SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.AgentPermissionManager = void 0;
8
+ const mcpTypes_1 = require("./mcpTypes");
9
+ /**
10
+ * Manages agent tool permissions with wildcard support for reading and simple patterns for writing
11
+ */
12
+ class AgentPermissionManager {
13
+ agentConfig;
14
+ getAvailableTools;
15
+ getAllAvailableServers;
16
+ getAllBuiltinTools;
17
+ constructor(agentConfig, getAvailableTools, getAllAvailableServers, getAllBuiltinTools) {
18
+ this.agentConfig = agentConfig;
19
+ this.getAvailableTools = getAvailableTools;
20
+ this.getAllAvailableServers = getAllAvailableServers;
21
+ this.getAllBuiltinTools = getAllBuiltinTools;
22
+ }
23
+ /**
24
+ * Check if a tool matches a pattern using glob-style wildcards
25
+ */
26
+ matchesPattern(toolName, pattern) {
27
+ // Handle exact matches first
28
+ if (pattern === toolName)
29
+ return true;
30
+ // Convert glob pattern to regex
31
+ // Escape special regex characters except * and ?
32
+ const regexPattern = pattern
33
+ .replace(/[.+^${}()|[\]\\]/g, '\\$&') // Escape regex special chars
34
+ .replace(/\*/g, '.*') // * matches any sequence
35
+ .replace(/\?/g, '.'); // ? matches single character
36
+ const regex = new RegExp(`^${regexPattern}$`);
37
+ return regex.test(toolName);
38
+ }
39
+ /**
40
+ * Check if a tool is enabled (in tools array)
41
+ */
42
+ isToolEnabled(serverName, toolName) {
43
+ const toolId = serverName ? `@${serverName}/${toolName}` : toolName;
44
+ const serverPrefix = serverName ? `@${serverName}` : '';
45
+ // Check exact matches first (exact matches take precedence)
46
+ if (this.agentConfig.tools.includes(toolId))
47
+ return true;
48
+ if (serverPrefix && this.agentConfig.tools.includes(serverPrefix))
49
+ return true;
50
+ // Check for global wildcard
51
+ if (this.agentConfig.tools.includes('*'))
52
+ return true;
53
+ // Check for @builtin pattern (built-in tools only)
54
+ if (!serverName && this.agentConfig.tools.includes('@builtin'))
55
+ return true;
56
+ // Check wildcard patterns
57
+ for (const tool of this.agentConfig.tools) {
58
+ if (tool.includes('*') || tool.includes('?')) {
59
+ // For server patterns like @*-mcp, match against server prefix
60
+ if (serverName && tool.startsWith('@') && !tool.includes('/')) {
61
+ if (this.matchesPattern(serverPrefix, tool))
62
+ return true;
63
+ }
64
+ // For full tool patterns
65
+ if (this.matchesPattern(toolId, tool))
66
+ return true;
67
+ }
68
+ }
69
+ return false;
70
+ }
71
+ /**
72
+ * Check if a tool is always allowed (in allowedTools array)
73
+ */
74
+ isToolAlwaysAllowed(serverName, toolName) {
75
+ const toolId = serverName ? `@${serverName}/${toolName}` : toolName;
76
+ const serverPrefix = serverName ? `@${serverName}` : '';
77
+ // Check exact matches first
78
+ if (this.agentConfig.allowedTools.includes(toolId))
79
+ return true;
80
+ if (serverPrefix && this.agentConfig.allowedTools.includes(serverPrefix))
81
+ return true;
82
+ // Check wildcard patterns
83
+ for (const allowedTool of this.agentConfig.allowedTools) {
84
+ if (allowedTool.includes('*') || allowedTool.includes('?')) {
85
+ if (this.matchesPattern(toolId, allowedTool))
86
+ return true;
87
+ }
88
+ }
89
+ return false;
90
+ }
91
+ /**
92
+ * Get permission type for a tool
93
+ */
94
+ getToolPermission(serverName, toolName) {
95
+ const toolId = serverName ? `@${serverName}/${toolName}` : toolName;
96
+ const serverPrefix = serverName ? `@${serverName}` : '';
97
+ // Check exact matches first (exact matches take precedence over patterns)
98
+ const exactInTools = this.agentConfig.tools.includes(toolId);
99
+ const exactInAllowed = this.agentConfig.allowedTools.includes(toolId);
100
+ const serverInTools = serverPrefix && this.agentConfig.tools.includes(serverPrefix);
101
+ const serverInAllowed = serverPrefix && this.agentConfig.allowedTools.includes(serverPrefix);
102
+ // If exact match in allowedTools or server-wide in allowedTools
103
+ if (exactInAllowed || serverInAllowed) {
104
+ return mcpTypes_1.McpPermissionType.alwaysAllow;
105
+ }
106
+ // If exact match in tools, check if also in allowedTools patterns
107
+ if (exactInTools) {
108
+ const isAlwaysAllowed = this.isToolAlwaysAllowed(serverName, toolName);
109
+ return isAlwaysAllowed ? mcpTypes_1.McpPermissionType.alwaysAllow : mcpTypes_1.McpPermissionType.ask;
110
+ }
111
+ // If server-wide in tools, check if also in allowedTools patterns
112
+ if (serverInTools) {
113
+ const isAlwaysAllowed = this.isToolAlwaysAllowed(serverName, toolName);
114
+ return isAlwaysAllowed ? mcpTypes_1.McpPermissionType.alwaysAllow : mcpTypes_1.McpPermissionType.ask;
115
+ }
116
+ // Fall back to pattern matching
117
+ const isEnabled = this.isToolEnabled(serverName, toolName);
118
+ const isAlwaysAllowed = this.isToolAlwaysAllowed(serverName, toolName);
119
+ // Tool must be enabled first before it can be always allowed
120
+ if (isEnabled && isAlwaysAllowed) {
121
+ return mcpTypes_1.McpPermissionType.alwaysAllow;
122
+ }
123
+ if (isEnabled) {
124
+ return mcpTypes_1.McpPermissionType.ask;
125
+ }
126
+ return mcpTypes_1.McpPermissionType.deny;
127
+ }
128
+ /**
129
+ * Set permission for a tool - removes conflicting wildcards and replaces with explicit tools
130
+ */
131
+ setToolPermission(serverName, toolName, permission) {
132
+ const toolId = serverName ? `@${serverName}/${toolName}` : toolName;
133
+ const serverPrefix = serverName ? `@${serverName}` : '';
134
+ switch (permission) {
135
+ case mcpTypes_1.McpPermissionType.deny:
136
+ this.removeConflictingWildcardsForDeny(serverName, toolName);
137
+ this.removeConflictingAllowedWildcardsForDeny(serverName, toolName);
138
+ break;
139
+ case mcpTypes_1.McpPermissionType.ask:
140
+ this.removeConflictingAllowedWildcardsForAsk(serverName, toolName);
141
+ if (!this.isToolEnabled(serverName, toolName)) {
142
+ this.addTool(toolId);
143
+ }
144
+ break;
145
+ case mcpTypes_1.McpPermissionType.alwaysAllow:
146
+ if (!this.isToolEnabled(serverName, toolName)) {
147
+ this.addTool(toolId);
148
+ }
149
+ if (!this.isToolAlwaysAllowed(serverName, toolName)) {
150
+ this.addToAllowedTools(toolId);
151
+ }
152
+ break;
153
+ }
154
+ }
155
+ /**
156
+ * Add tool to tools array
157
+ */
158
+ addTool(toolId) {
159
+ if (!this.agentConfig.tools.includes(toolId)) {
160
+ this.agentConfig.tools.push(toolId);
161
+ }
162
+ }
163
+ /**
164
+ * Remove tool from tools array
165
+ */
166
+ removeTool(toolId, serverPrefix) {
167
+ this.agentConfig.tools = this.agentConfig.tools.filter(tool => tool !== toolId && tool !== serverPrefix);
168
+ }
169
+ /**
170
+ * Add tool to allowedTools array
171
+ */
172
+ addToAllowedTools(toolId) {
173
+ if (!this.agentConfig.allowedTools.includes(toolId)) {
174
+ this.agentConfig.allowedTools.push(toolId);
175
+ }
176
+ }
177
+ /**
178
+ * Remove tool from allowedTools array (only exact matches)
179
+ */
180
+ removeFromAllowedTools(toolId, serverPrefix) {
181
+ this.agentConfig.allowedTools = this.agentConfig.allowedTools.filter(tool => tool !== toolId && tool !== serverPrefix);
182
+ }
183
+ /**
184
+ * Set server-wide permission (uses @serverName pattern)
185
+ */
186
+ setServerPermission(serverName, permission) {
187
+ const serverPrefix = `@${serverName}`;
188
+ // Remove all specific tools from this server
189
+ this.agentConfig.tools = this.agentConfig.tools.filter(tool => !tool.startsWith(`${serverPrefix}/`));
190
+ this.agentConfig.allowedTools = this.agentConfig.allowedTools.filter(tool => !tool.startsWith(`${serverPrefix}/`));
191
+ switch (permission) {
192
+ case mcpTypes_1.McpPermissionType.deny:
193
+ this.removeTool(serverPrefix, serverPrefix);
194
+ this.removeFromAllowedTools(serverPrefix, serverPrefix);
195
+ break;
196
+ case mcpTypes_1.McpPermissionType.ask:
197
+ this.addTool(serverPrefix);
198
+ this.removeFromAllowedTools(serverPrefix, serverPrefix);
199
+ break;
200
+ case mcpTypes_1.McpPermissionType.alwaysAllow:
201
+ this.addTool(serverPrefix);
202
+ this.addToAllowedTools(serverPrefix);
203
+ break;
204
+ }
205
+ }
206
+ /**
207
+ * Convert server-wide permission to individual tools, excluding the denied tool
208
+ */
209
+ convertServerWideToIndividualTools(serverName, deniedToolName) {
210
+ const serverPrefix = `@${serverName}`;
211
+ // Remove server-wide permission
212
+ this.agentConfig.tools = this.agentConfig.tools.filter(tool => tool !== serverPrefix);
213
+ // If we have a callback to get available tools, add them individually
214
+ if (this.getAvailableTools) {
215
+ const availableTools = this.getAvailableTools(serverName);
216
+ for (const toolName of availableTools) {
217
+ if (toolName !== deniedToolName) {
218
+ const toolId = `@${serverName}/${toolName}`;
219
+ this.addTool(toolId);
220
+ }
221
+ }
222
+ }
223
+ // If no callback, we just remove server-wide permission (limitation)
224
+ }
225
+ /**
226
+ * Remove conflicting wildcards from tools when denying a tool
227
+ */
228
+ removeConflictingWildcardsForDeny(serverName, toolName) {
229
+ const toolId = serverName ? `@${serverName}/${toolName}` : toolName;
230
+ const serverPrefix = serverName ? `@${serverName}` : '';
231
+ // Handle global wildcard (*)
232
+ if (this.agentConfig.tools.includes('*')) {
233
+ this.expandGlobalWildcard(serverName, toolName);
234
+ }
235
+ // Handle server-wide wildcard (@server)
236
+ if (serverPrefix && this.agentConfig.tools.includes(serverPrefix)) {
237
+ this.convertServerWideToIndividualTools(serverName, toolName);
238
+ }
239
+ // Handle @builtin wildcard
240
+ if (!serverName && this.agentConfig.tools.includes('@builtin')) {
241
+ this.expandBuiltinWildcard(toolName);
242
+ }
243
+ // Handle pattern wildcards
244
+ this.removeMatchingPatternWildcards(serverName, toolName);
245
+ // Remove explicit tool entry
246
+ this.removeTool(toolId, serverPrefix);
247
+ }
248
+ /**
249
+ * Remove conflicting wildcards from allowedTools when denying a tool
250
+ */
251
+ removeConflictingAllowedWildcardsForDeny(serverName, toolName) {
252
+ const toolId = serverName ? `@${serverName}/${toolName}` : toolName;
253
+ const serverPrefix = serverName ? `@${serverName}` : '';
254
+ // Remove exact matches
255
+ this.agentConfig.allowedTools = this.agentConfig.allowedTools.filter(tool => tool !== toolId && tool !== serverPrefix);
256
+ // Remove matching wildcards and expand them
257
+ const toRemove = [];
258
+ for (const allowedTool of this.agentConfig.allowedTools) {
259
+ if (allowedTool.includes('*') || allowedTool.includes('?')) {
260
+ if (this.matchesPattern(toolId, allowedTool)) {
261
+ toRemove.push(allowedTool);
262
+ }
263
+ }
264
+ }
265
+ for (const pattern of toRemove) {
266
+ this.expandAllowedPatternWildcard(pattern, serverName, toolName);
267
+ }
268
+ }
269
+ /**
270
+ * Remove conflicting wildcards from allowedTools when setting to ask
271
+ */
272
+ removeConflictingAllowedWildcardsForAsk(serverName, toolName) {
273
+ const toolId = serverName ? `@${serverName}/${toolName}` : toolName;
274
+ const serverPrefix = serverName ? `@${serverName}` : '';
275
+ // Remove exact matches
276
+ this.agentConfig.allowedTools = this.agentConfig.allowedTools.filter(tool => tool !== toolId && tool !== serverPrefix);
277
+ // Remove matching wildcards and expand them (excluding the tool being set to ask)
278
+ const toRemove = [];
279
+ for (const allowedTool of this.agentConfig.allowedTools) {
280
+ if (allowedTool.includes('*') || allowedTool.includes('?')) {
281
+ if (this.matchesPattern(toolId, allowedTool)) {
282
+ toRemove.push(allowedTool);
283
+ }
284
+ }
285
+ }
286
+ for (const pattern of toRemove) {
287
+ this.expandAllowedPatternWildcard(pattern, serverName, toolName);
288
+ }
289
+ }
290
+ /**
291
+ * Expand global wildcard (*) to all available tools except the denied one
292
+ */
293
+ expandGlobalWildcard(deniedServerName, deniedToolName) {
294
+ this.agentConfig.tools = this.agentConfig.tools.filter(tool => tool !== '*');
295
+ if (this.getAvailableTools) {
296
+ // Get all available servers (this should be provided by the manager)
297
+ const allServers = this.getAvailableServers();
298
+ for (const serverName of allServers) {
299
+ const tools = this.getAvailableTools(serverName);
300
+ for (const toolName of tools) {
301
+ if (!(serverName === deniedServerName && toolName === deniedToolName)) {
302
+ this.addTool(`@${serverName}/${toolName}`);
303
+ }
304
+ }
305
+ }
306
+ // Add builtin tools (except denied one)
307
+ const builtinTools = this.getBuiltinTools();
308
+ for (const toolName of builtinTools) {
309
+ if (!(deniedServerName === '' && toolName === deniedToolName)) {
310
+ this.addTool(toolName);
311
+ }
312
+ }
313
+ }
314
+ }
315
+ /**
316
+ * Expand @builtin wildcard to all builtin tools except the denied one
317
+ */
318
+ expandBuiltinWildcard(deniedToolName) {
319
+ this.agentConfig.tools = this.agentConfig.tools.filter(tool => tool !== '@builtin');
320
+ const builtinTools = this.getBuiltinTools();
321
+ for (const toolName of builtinTools) {
322
+ if (toolName !== deniedToolName) {
323
+ this.addTool(toolName);
324
+ }
325
+ }
326
+ }
327
+ /**
328
+ * Remove pattern wildcards that match the tool and expand them
329
+ */
330
+ removeMatchingPatternWildcards(serverName, toolName) {
331
+ const toolId = serverName ? `@${serverName}/${toolName}` : toolName;
332
+ const serverPrefix = serverName ? `@${serverName}` : '';
333
+ const toRemove = [];
334
+ for (const tool of this.agentConfig.tools) {
335
+ if (tool.includes('*') || tool.includes('?')) {
336
+ if (serverName && tool.startsWith('@') && !tool.includes('/')) {
337
+ if (this.matchesPattern(serverPrefix, tool)) {
338
+ toRemove.push(tool);
339
+ }
340
+ }
341
+ else if (this.matchesPattern(toolId, tool)) {
342
+ toRemove.push(tool);
343
+ }
344
+ }
345
+ }
346
+ for (const pattern of toRemove) {
347
+ this.expandPatternWildcard(pattern, serverName, toolName);
348
+ }
349
+ }
350
+ /**
351
+ * Expand a pattern wildcard to individual tools except the denied one
352
+ */
353
+ expandPatternWildcard(pattern, deniedServerName, deniedToolName) {
354
+ this.agentConfig.tools = this.agentConfig.tools.filter(tool => tool !== pattern);
355
+ if (!this.getAvailableTools)
356
+ return;
357
+ if (pattern.startsWith('@') && !pattern.includes('/')) {
358
+ // Server pattern like @*-mcp
359
+ const allServers = this.getAvailableServers();
360
+ for (const serverName of allServers) {
361
+ const serverPrefix = `@${serverName}`;
362
+ if (this.matchesPattern(serverPrefix, pattern)) {
363
+ const tools = this.getAvailableTools(serverName);
364
+ for (const toolName of tools) {
365
+ if (!(serverName === deniedServerName && toolName === deniedToolName)) {
366
+ this.addTool(`@${serverName}/${toolName}`);
367
+ }
368
+ }
369
+ }
370
+ }
371
+ }
372
+ else {
373
+ // Tool pattern like @fs/read_*
374
+ const allServers = this.getAvailableServers();
375
+ for (const serverName of allServers) {
376
+ const tools = this.getAvailableTools(serverName);
377
+ for (const toolName of tools) {
378
+ const toolId = `@${serverName}/${toolName}`;
379
+ if (this.matchesPattern(toolId, pattern)) {
380
+ if (!(serverName === deniedServerName && toolName === deniedToolName)) {
381
+ this.addTool(toolId);
382
+ }
383
+ }
384
+ }
385
+ }
386
+ }
387
+ }
388
+ /**
389
+ * Expand allowedTools pattern wildcard except the denied tool
390
+ */
391
+ expandAllowedPatternWildcard(pattern, deniedServerName, deniedToolName) {
392
+ this.agentConfig.allowedTools = this.agentConfig.allowedTools.filter(tool => tool !== pattern);
393
+ if (!this.getAvailableTools)
394
+ return;
395
+ if (pattern.startsWith('@') && !pattern.includes('/')) {
396
+ // Server pattern like @git
397
+ const allServers = this.getAvailableServers();
398
+ for (const serverName of allServers) {
399
+ const serverPrefix = `@${serverName}`;
400
+ if (this.matchesPattern(serverPrefix, pattern)) {
401
+ const tools = this.getAvailableTools(serverName);
402
+ for (const toolName of tools) {
403
+ if (!(serverName === deniedServerName && toolName === deniedToolName)) {
404
+ this.addToAllowedTools(`@${serverName}/${toolName}`);
405
+ }
406
+ }
407
+ }
408
+ }
409
+ }
410
+ else {
411
+ // Tool pattern like @fs/*
412
+ const allServers = this.getAvailableServers();
413
+ for (const serverName of allServers) {
414
+ const tools = this.getAvailableTools(serverName);
415
+ for (const toolName of tools) {
416
+ const toolId = `@${serverName}/${toolName}`;
417
+ if (this.matchesPattern(toolId, pattern)) {
418
+ if (!(serverName === deniedServerName && toolName === deniedToolName)) {
419
+ this.addToAllowedTools(toolId);
420
+ }
421
+ }
422
+ }
423
+ }
424
+ }
425
+ }
426
+ /**
427
+ * Get all available servers
428
+ */
429
+ getAvailableServers() {
430
+ return this.getAllAvailableServers?.() || [];
431
+ }
432
+ /**
433
+ * Get all builtin tools
434
+ */
435
+ getBuiltinTools() {
436
+ return this.getAllBuiltinTools?.() || [];
437
+ }
438
+ /**
439
+ * Get updated agent config
440
+ */
441
+ getAgentConfig() {
442
+ return this.agentConfig;
443
+ }
444
+ }
445
+ exports.AgentPermissionManager = AgentPermissionManager;
446
+ //# sourceMappingURL=agentPermissionManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentPermissionManager.js","sourceRoot":"","sources":["../../../../../src/language-server/agenticChat/tools/mcp/agentPermissionManager.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,yCAA2D;AAE3D;;GAEG;AACH,MAAa,sBAAsB;IAEnB;IACA;IACA;IACA;IAJZ,YACY,WAAwB,EACxB,iBAAoD,EACpD,sBAAuC,EACvC,kBAAmC;QAHnC,gBAAW,GAAX,WAAW,CAAa;QACxB,sBAAiB,GAAjB,iBAAiB,CAAmC;QACpD,2BAAsB,GAAtB,sBAAsB,CAAiB;QACvC,uBAAkB,GAAlB,kBAAkB,CAAiB;IAC5C,CAAC;IAEJ;;OAEG;IACK,cAAc,CAAC,QAAgB,EAAE,OAAe;QACpD,6BAA6B;QAC7B,IAAI,OAAO,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAA;QAErC,gCAAgC;QAChC,iDAAiD;QACjD,MAAM,YAAY,GAAG,OAAO;aACvB,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC,6BAA6B;aAClE,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,yBAAyB;aAC9C,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA,CAAC,6BAA6B;QAEtD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,YAAY,GAAG,CAAC,CAAA;QAC7C,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC/B,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,UAAkB,EAAE,QAAgB;QAC9C,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAA;QACnE,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAEvD,4DAA4D;QAC5D,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAA;QACxD,IAAI,YAAY,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;YAAE,OAAO,IAAI,CAAA;QAE9E,4BAA4B;QAC5B,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAA;QAErD,mDAAmD;QACnD,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAA;QAE3E,0BAA0B;QAC1B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3C,+DAA+D;gBAC/D,IAAI,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC5D,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC;wBAAE,OAAO,IAAI,CAAA;gBAC5D,CAAC;gBACD,yBAAyB;gBACzB,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC;oBAAE,OAAO,IAAI,CAAA;YACtD,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAA;IAChB,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,UAAkB,EAAE,QAAgB;QACpD,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAA;QACnE,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAEvD,4BAA4B;QAC5B,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAA;QAC/D,IAAI,YAAY,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC;YAAE,OAAO,IAAI,CAAA;QAErF,0BAA0B;QAC1B,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;YACtD,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzD,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC;oBAAE,OAAO,IAAI,CAAA;YAC7D,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAA;IAChB,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,UAAkB,EAAE,QAAgB;QAClD,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAA;QACnE,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAEvD,0EAA0E;QAC1E,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QAC5D,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACrE,MAAM,aAAa,GAAG,YAAY,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;QACnF,MAAM,eAAe,GAAG,YAAY,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;QAE5F,gEAAgE;QAChE,IAAI,cAAc,IAAI,eAAe,EAAE,CAAC;YACpC,OAAO,4BAAiB,CAAC,WAAW,CAAA;QACxC,CAAC;QAED,kEAAkE;QAClE,IAAI,YAAY,EAAE,CAAC;YACf,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;YACtE,OAAO,eAAe,CAAC,CAAC,CAAC,4BAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,4BAAiB,CAAC,GAAG,CAAA;QAClF,CAAC;QAED,kEAAkE;QAClE,IAAI,aAAa,EAAE,CAAC;YAChB,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;YACtE,OAAO,eAAe,CAAC,CAAC,CAAC,4BAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,4BAAiB,CAAC,GAAG,CAAA;QAClF,CAAC;QAED,gCAAgC;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAC1D,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAEtE,6DAA6D;QAC7D,IAAI,SAAS,IAAI,eAAe,EAAE,CAAC;YAC/B,OAAO,4BAAiB,CAAC,WAAW,CAAA;QACxC,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACZ,OAAO,4BAAiB,CAAC,GAAG,CAAA;QAChC,CAAC;QAED,OAAO,4BAAiB,CAAC,IAAI,CAAA;IACjC,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,UAAkB,EAAE,QAAgB,EAAE,UAA6B;QACjF,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAA;QACnE,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAEvD,QAAQ,UAAU,EAAE,CAAC;YACjB,KAAK,4BAAiB,CAAC,IAAI;gBACvB,IAAI,CAAC,iCAAiC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;gBAC5D,IAAI,CAAC,wCAAwC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;gBACnE,MAAK;YAET,KAAK,4BAAiB,CAAC,GAAG;gBACtB,IAAI,CAAC,uCAAuC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;gBAClE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC;oBAC5C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;gBACxB,CAAC;gBACD,MAAK;YAET,KAAK,4BAAiB,CAAC,WAAW;gBAC9B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC;oBAC5C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;gBACxB,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC;oBAClD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAA;gBAClC,CAAC;gBACD,MAAK;QACb,CAAC;IACL,CAAC;IAED;;OAEG;IACK,OAAO,CAAC,MAAc;QAC1B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACvC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,MAAc,EAAE,YAAqB;QACpD,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,YAAY,CAAC,CAAA;IAC5G,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,MAAc;QACpC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC9C,CAAC;IACL,CAAC;IAED;;OAEG;IACK,sBAAsB,CAAC,MAAc,EAAE,YAAqB;QAChE,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAChE,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,YAAY,CACnD,CAAA;IACL,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,UAAkB,EAAE,UAA6B;QACjE,MAAM,YAAY,GAAG,IAAI,UAAU,EAAE,CAAA;QAErC,6CAA6C;QAC7C,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,YAAY,GAAG,CAAC,CAAC,CAAA;QACpG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAChE,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,YAAY,GAAG,CAAC,CAC/C,CAAA;QAED,QAAQ,UAAU,EAAE,CAAC;YACjB,KAAK,4BAAiB,CAAC,IAAI;gBACvB,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;gBAC3C,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;gBACvD,MAAK;YAET,KAAK,4BAAiB,CAAC,GAAG;gBACtB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;gBAC1B,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;gBACvD,MAAK;YAET,KAAK,4BAAiB,CAAC,WAAW;gBAC9B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;gBAC1B,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAA;gBACpC,MAAK;QACb,CAAC;IACL,CAAC;IAED;;OAEG;IACK,kCAAkC,CAAC,UAAkB,EAAE,cAAsB;QACjF,MAAM,YAAY,GAAG,IAAI,UAAU,EAAE,CAAA;QAErC,gCAAgC;QAChC,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,YAAY,CAAC,CAAA;QAErF,sEAAsE;QACtE,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAA;YACzD,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;gBACpC,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;oBAC9B,MAAM,MAAM,GAAG,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAA;oBAC3C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;gBACxB,CAAC;YACL,CAAC;QACL,CAAC;QACD,qEAAqE;IACzE,CAAC;IAED;;OAEG;IACK,iCAAiC,CAAC,UAAkB,EAAE,QAAgB;QAC1E,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAA;QACnE,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAEvD,6BAA6B;QAC7B,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QACnD,CAAC;QAED,wCAAwC;QACxC,IAAI,YAAY,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAChE,IAAI,CAAC,kCAAkC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QACjE,CAAC;QAED,2BAA2B;QAC3B,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7D,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAA;QACxC,CAAC;QAED,2BAA2B;QAC3B,IAAI,CAAC,8BAA8B,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAEzD,6BAA6B;QAC7B,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACzC,CAAC;IAED;;OAEG;IACK,wCAAwC,CAAC,UAAkB,EAAE,QAAgB;QACjF,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAA;QACnE,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAEvD,uBAAuB;QACvB,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAChE,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,YAAY,CACnD,CAAA;QAED,4CAA4C;QAC5C,MAAM,QAAQ,GAAa,EAAE,CAAA;QAC7B,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;YACtD,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzD,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC;oBAC3C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;gBAC9B,CAAC;YACL,CAAC;QACL,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;QACpE,CAAC;IACL,CAAC;IAED;;OAEG;IACK,uCAAuC,CAAC,UAAkB,EAAE,QAAgB;QAChF,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAA;QACnE,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAEvD,uBAAuB;QACvB,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAChE,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,YAAY,CACnD,CAAA;QAED,kFAAkF;QAClF,MAAM,QAAQ,GAAa,EAAE,CAAA;QAC7B,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;YACtD,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzD,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC;oBAC3C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;gBAC9B,CAAC;YACL,CAAC;QACL,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;QACpE,CAAC;IACL,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,gBAAwB,EAAE,cAAsB;QACzE,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,CAAA;QAE5E,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,qEAAqE;YACrE,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAA;YAC7C,KAAK,MAAM,UAAU,IAAI,UAAU,EAAE,CAAC;gBAClC,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAA;gBAChD,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;oBAC3B,IAAI,CAAC,CAAC,UAAU,KAAK,gBAAgB,IAAI,QAAQ,KAAK,cAAc,CAAC,EAAE,CAAC;wBACpE,IAAI,CAAC,OAAO,CAAC,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC,CAAA;oBAC9C,CAAC;gBACL,CAAC;YACL,CAAC;YAED,wCAAwC;YACxC,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;YAC3C,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;gBAClC,IAAI,CAAC,CAAC,gBAAgB,KAAK,EAAE,IAAI,QAAQ,KAAK,cAAc,CAAC,EAAE,CAAC;oBAC5D,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;gBAC1B,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,cAAsB;QAChD,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;QAEnF,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;QAC3C,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;YAClC,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;gBAC9B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;YAC1B,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACK,8BAA8B,CAAC,UAAkB,EAAE,QAAgB;QACvE,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAA;QACnE,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAEvD,MAAM,QAAQ,GAAa,EAAE,CAAA;QAC7B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3C,IAAI,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC5D,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC;wBAC1C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBACvB,CAAC;gBACL,CAAC;qBAAM,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;oBAC3C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACvB,CAAC;YACL,CAAC;QACL,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;QAC7D,CAAC;IACL,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,OAAe,EAAE,gBAAwB,EAAE,cAAsB;QAC3F,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,CAAA;QAEhF,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAAE,OAAM;QAEnC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACpD,6BAA6B;YAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAA;YAC7C,KAAK,MAAM,UAAU,IAAI,UAAU,EAAE,CAAC;gBAClC,MAAM,YAAY,GAAG,IAAI,UAAU,EAAE,CAAA;gBACrC,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,CAAC;oBAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAA;oBAChD,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;wBAC3B,IAAI,CAAC,CAAC,UAAU,KAAK,gBAAgB,IAAI,QAAQ,KAAK,cAAc,CAAC,EAAE,CAAC;4BACpE,IAAI,CAAC,OAAO,CAAC,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC,CAAA;wBAC9C,CAAC;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,+BAA+B;YAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAA;YAC7C,KAAK,MAAM,UAAU,IAAI,UAAU,EAAE,CAAC;gBAClC,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAA;gBAChD,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;oBAC3B,MAAM,MAAM,GAAG,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAA;oBAC3C,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;wBACvC,IAAI,CAAC,CAAC,UAAU,KAAK,gBAAgB,IAAI,QAAQ,KAAK,cAAc,CAAC,EAAE,CAAC;4BACpE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;wBACxB,CAAC;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACK,4BAA4B,CAAC,OAAe,EAAE,gBAAwB,EAAE,cAAsB;QAClG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,CAAA;QAE9F,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAAE,OAAM;QAEnC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACpD,2BAA2B;YAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAA;YAC7C,KAAK,MAAM,UAAU,IAAI,UAAU,EAAE,CAAC;gBAClC,MAAM,YAAY,GAAG,IAAI,UAAU,EAAE,CAAA;gBACrC,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,CAAC;oBAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAA;oBAChD,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;wBAC3B,IAAI,CAAC,CAAC,UAAU,KAAK,gBAAgB,IAAI,QAAQ,KAAK,cAAc,CAAC,EAAE,CAAC;4BACpE,IAAI,CAAC,iBAAiB,CAAC,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC,CAAA;wBACxD,CAAC;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,0BAA0B;YAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAA;YAC7C,KAAK,MAAM,UAAU,IAAI,UAAU,EAAE,CAAC;gBAClC,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAA;gBAChD,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;oBAC3B,MAAM,MAAM,GAAG,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAA;oBAC3C,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;wBACvC,IAAI,CAAC,CAAC,UAAU,KAAK,gBAAgB,IAAI,QAAQ,KAAK,cAAc,CAAC,EAAE,CAAC;4BACpE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAA;wBAClC,CAAC;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACK,mBAAmB;QACvB,OAAO,IAAI,CAAC,sBAAsB,EAAE,EAAE,IAAI,EAAE,CAAA;IAChD,CAAC;IAED;;OAEG;IACK,eAAe;QACnB,OAAO,IAAI,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,CAAA;IAC5C,CAAC;IAED;;OAEG;IACH,cAAc;QACV,OAAO,IAAI,CAAC,WAAW,CAAA;IAC3B,CAAC;CACJ;AA1eD,wDA0eC"}