@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.
- package/CHANGELOG.md +35 -0
- package/out/language-server/agenticChat/agenticChatController.js +57 -2
- package/out/language-server/agenticChat/agenticChatController.js.map +1 -1
- package/out/language-server/agenticChat/tools/mcp/agentPermissionManager.d.ts +103 -0
- package/out/language-server/agenticChat/tools/mcp/agentPermissionManager.js +446 -0
- package/out/language-server/agenticChat/tools/mcp/agentPermissionManager.js.map +1 -0
- package/out/language-server/agenticChat/tools/mcp/mcpEventHandler.js +44 -7
- package/out/language-server/agenticChat/tools/mcp/mcpEventHandler.js.map +1 -1
- package/out/language-server/agenticChat/tools/mcp/mcpManager.d.ts +15 -2
- package/out/language-server/agenticChat/tools/mcp/mcpManager.js +149 -169
- package/out/language-server/agenticChat/tools/mcp/mcpManager.js.map +1 -1
- package/out/language-server/agenticChat/tools/mcp/mcpTypes.js +1 -1
- package/out/language-server/agenticChat/tools/mcp/mcpTypes.js.map +1 -1
- package/out/language-server/agenticChat/tools/mcp/mcpUtils.d.ts +2 -1
- package/out/language-server/agenticChat/tools/mcp/mcpUtils.js +87 -54
- package/out/language-server/agenticChat/tools/mcp/mcpUtils.js.map +1 -1
- package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReview.js +15 -5
- package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReview.js.map +1 -1
- package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewConstants.js +1 -1
- package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewConstants.js.map +1 -1
- package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewTypes.d.ts +1 -0
- package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewUtils.d.ts +1 -1
- package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewUtils.js +3 -1
- package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewUtils.js.map +1 -1
- package/out/language-server/agenticChat/tools/toolServer.js +1 -0
- package/out/language-server/agenticChat/tools/toolServer.js.map +1 -1
- package/out/language-server/agenticChat/tools/workspaceContext/semanticSearch.d.ts +40 -0
- package/out/language-server/agenticChat/tools/workspaceContext/semanticSearch.js +106 -0
- package/out/language-server/agenticChat/tools/workspaceContext/semanticSearch.js.map +1 -0
- package/out/language-server/inline-completion/codeWhispererServer.js +3 -3
- package/out/language-server/inline-completion/codeWhispererServer.js.map +1 -1
- package/out/language-server/inline-completion/editCompletionHandler.js +1 -1
- package/out/language-server/inline-completion/editCompletionHandler.js.map +1 -1
- package/out/language-server/inline-completion/session/sessionManager.d.ts +2 -2
- package/out/language-server/inline-completion/session/sessionManager.js +3 -2
- package/out/language-server/inline-completion/session/sessionManager.js.map +1 -1
- package/out/language-server/inline-completion/telemetry.js +1 -1
- package/out/language-server/netTransform/artifactManager.d.ts +1 -0
- package/out/language-server/netTransform/artifactManager.js +52 -10
- package/out/language-server/netTransform/artifactManager.js.map +1 -1
- package/out/language-server/workspaceContext/util.d.ts +4 -0
- package/out/language-server/workspaceContext/util.js +8 -1
- package/out/language-server/workspaceContext/util.js.map +1 -1
- package/out/language-server/workspaceContext/workspaceContextServer.js +19 -18
- package/out/language-server/workspaceContext/workspaceContextServer.js.map +1 -1
- package/out/language-server/workspaceContext/workspaceFolderManager.d.ts +8 -2
- package/out/language-server/workspaceContext/workspaceFolderManager.js +35 -3
- package/out/language-server/workspaceContext/workspaceFolderManager.js.map +1 -1
- package/out/shared/amazonQServiceManager/AmazonQTokenServiceManager.js +8 -6
- package/out/shared/amazonQServiceManager/AmazonQTokenServiceManager.js.map +1 -1
- package/out/shared/amazonQServiceManager/qDeveloperProfiles.d.ts +1 -2
- package/out/shared/amazonQServiceManager/qDeveloperProfiles.js.map +1 -1
- package/out/shared/codeWhispererService.js +3 -0
- package/out/shared/codeWhispererService.js.map +1 -1
- package/out/shared/streamingClientService.js +9 -0
- package/out/shared/streamingClientService.js.map +1 -1
- package/out/shared/telemetry/telemetryService.js +4 -2
- package/out/shared/telemetry/telemetryService.js.map +1 -1
- package/out/shared/testUtils.d.ts +1 -1
- package/out/shared/testUtils.js.map +1 -1
- package/out/shared/utils.d.ts +1 -2
- package/out/shared/utils.js +1 -3
- package/out/shared/utils.js.map +1 -1
- 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":"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"}
|