mcp-agent-foundry 1.3.1 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +265 -2
- package/dist/background/index.d.ts +33 -0
- package/dist/background/index.d.ts.map +1 -0
- package/dist/background/index.js +33 -0
- package/dist/background/index.js.map +1 -0
- package/dist/background/task-runner.d.ts +177 -0
- package/dist/background/task-runner.d.ts.map +1 -0
- package/dist/background/task-runner.js +551 -0
- package/dist/background/task-runner.js.map +1 -0
- package/dist/background/types.d.ts +135 -0
- package/dist/background/types.d.ts.map +1 -0
- package/dist/background/types.js +8 -0
- package/dist/background/types.js.map +1 -0
- package/dist/config/validator.d.ts +2 -2
- package/dist/config/validator.d.ts.map +1 -1
- package/dist/config/validator.js +2 -2
- package/dist/config/validator.js.map +1 -1
- package/dist/failover/health-tracker.d.ts +81 -1
- package/dist/failover/health-tracker.d.ts.map +1 -1
- package/dist/failover/health-tracker.js +229 -1
- package/dist/failover/health-tracker.js.map +1 -1
- package/dist/failover/orchestrator.d.ts.map +1 -1
- package/dist/failover/orchestrator.js +12 -2
- package/dist/failover/orchestrator.js.map +1 -1
- package/dist/hooks/hook-executor.d.ts +77 -0
- package/dist/hooks/hook-executor.d.ts.map +1 -0
- package/dist/hooks/hook-executor.js +308 -0
- package/dist/hooks/hook-executor.js.map +1 -0
- package/dist/hooks/hook-manager.d.ts +140 -0
- package/dist/hooks/hook-manager.d.ts.map +1 -0
- package/dist/hooks/hook-manager.js +520 -0
- package/dist/hooks/hook-manager.js.map +1 -0
- package/dist/hooks/index.d.ts +10 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +10 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/types.d.ts +221 -0
- package/dist/hooks/types.d.ts.map +1 -0
- package/dist/hooks/types.js +31 -0
- package/dist/hooks/types.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/mcp/auto-mode.d.ts +221 -0
- package/dist/mcp/auto-mode.d.ts.map +1 -0
- package/dist/mcp/auto-mode.js +436 -0
- package/dist/mcp/auto-mode.js.map +1 -0
- package/dist/mcp/index.d.ts +14 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +22 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/tools/critique-plan.d.ts.map +1 -1
- package/dist/mcp/tools/critique-plan.js +57 -4
- package/dist/mcp/tools/critique-plan.js.map +1 -1
- package/dist/mcp/tools/design-feedback.d.ts.map +1 -1
- package/dist/mcp/tools/design-feedback.js +58 -4
- package/dist/mcp/tools/design-feedback.js.map +1 -1
- package/dist/mcp/tools/invoke-agent.d.ts.map +1 -1
- package/dist/mcp/tools/invoke-agent.js +64 -1
- package/dist/mcp/tools/invoke-agent.js.map +1 -1
- package/dist/mcp/tools/review-code.d.ts.map +1 -1
- package/dist/mcp/tools/review-code.js +57 -4
- package/dist/mcp/tools/review-code.js.map +1 -1
- package/dist/mcp/tools/tasks/delete-task.d.ts +25 -0
- package/dist/mcp/tools/tasks/delete-task.d.ts.map +1 -0
- package/dist/mcp/tools/tasks/delete-task.js +148 -0
- package/dist/mcp/tools/tasks/delete-task.js.map +1 -0
- package/dist/mcp/tools/tasks/execute-task.d.ts.map +1 -1
- package/dist/mcp/tools/tasks/execute-task.js +74 -5
- package/dist/mcp/tools/tasks/execute-task.js.map +1 -1
- package/dist/mcp/tools/tasks/index.d.ts +2 -0
- package/dist/mcp/tools/tasks/index.d.ts.map +1 -1
- package/dist/mcp/tools/tasks/index.js +6 -0
- package/dist/mcp/tools/tasks/index.js.map +1 -1
- package/dist/observability/debug-logger.d.ts +209 -0
- package/dist/observability/debug-logger.d.ts.map +1 -0
- package/dist/observability/debug-logger.js +430 -0
- package/dist/observability/debug-logger.js.map +1 -0
- package/dist/observability/index.d.ts +12 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +12 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/logger.d.ts +180 -0
- package/dist/observability/logger.d.ts.map +1 -1
- package/dist/observability/logger.js +158 -0
- package/dist/observability/logger.js.map +1 -1
- package/dist/providers/anthropic.d.ts +40 -6
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +120 -8
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/base.d.ts +6 -3
- package/dist/providers/base.d.ts.map +1 -1
- package/dist/providers/base.js.map +1 -1
- package/dist/router/context-manager.d.ts +214 -1
- package/dist/router/context-manager.d.ts.map +1 -1
- package/dist/router/context-manager.js +759 -2
- package/dist/router/context-manager.js.map +1 -1
- package/dist/router/context-types.d.ts +182 -0
- package/dist/router/context-types.d.ts.map +1 -0
- package/dist/router/context-types.js +8 -0
- package/dist/router/context-types.js.map +1 -0
- package/dist/router/engine.d.ts +3 -3
- package/dist/router/engine.d.ts.map +1 -1
- package/dist/router/engine.js +32 -4
- package/dist/router/engine.js.map +1 -1
- package/dist/router/pattern-executor.d.ts.map +1 -1
- package/dist/router/pattern-executor.js +38 -7
- package/dist/router/pattern-executor.js.map +1 -1
- package/dist/server.d.ts +41 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +165 -0
- package/dist/server.js.map +1 -1
- package/dist/skills/hot-reloader.d.ts +104 -0
- package/dist/skills/hot-reloader.d.ts.map +1 -0
- package/dist/skills/hot-reloader.js +314 -0
- package/dist/skills/hot-reloader.js.map +1 -0
- package/dist/skills/index.d.ts +14 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +16 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/skill-executor.d.ts +96 -0
- package/dist/skills/skill-executor.d.ts.map +1 -0
- package/dist/skills/skill-executor.js +289 -0
- package/dist/skills/skill-executor.js.map +1 -0
- package/dist/skills/skill-loader.d.ts +147 -0
- package/dist/skills/skill-loader.d.ts.map +1 -0
- package/dist/skills/skill-loader.js +579 -0
- package/dist/skills/skill-loader.js.map +1 -0
- package/dist/skills/types.d.ts +198 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/skills/types.js +21 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/tasks/coordinator.d.ts +22 -1
- package/dist/tasks/coordinator.d.ts.map +1 -1
- package/dist/tasks/coordinator.js +83 -0
- package/dist/tasks/coordinator.js.map +1 -1
- package/dist/tasks/state-coordinator.d.ts +19 -0
- package/dist/tasks/state-coordinator.d.ts.map +1 -1
- package/dist/tasks/state-coordinator.js +40 -0
- package/dist/tasks/state-coordinator.js.map +1 -1
- package/dist/types.d.ts +39 -7
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +9 -0
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,436 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Auto Mode
|
|
3
|
+
*
|
|
4
|
+
* Automatically defers tool descriptions when they would exceed a configurable
|
|
5
|
+
* percentage of the context window. This prevents context overflow in long
|
|
6
|
+
* sessions with many tools.
|
|
7
|
+
*
|
|
8
|
+
* Based on Claude Code v2.1.7's MCP Auto Mode feature.
|
|
9
|
+
*
|
|
10
|
+
* Key features:
|
|
11
|
+
* - Configurable percentage threshold for tool descriptions
|
|
12
|
+
* - Priority-based tool selection
|
|
13
|
+
* - Always-include and always-defer lists
|
|
14
|
+
* - On-demand fetching of deferred tool descriptions
|
|
15
|
+
* - Force-include override for user requests
|
|
16
|
+
*/
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// Default Configuration
|
|
19
|
+
// ============================================================================
|
|
20
|
+
const DEFAULT_CONFIG = {
|
|
21
|
+
enabled: true,
|
|
22
|
+
maxToolDescriptionPercent: 10,
|
|
23
|
+
minToolsToInclude: 5,
|
|
24
|
+
alwaysInclude: [],
|
|
25
|
+
alwaysDefer: [],
|
|
26
|
+
};
|
|
27
|
+
// ============================================================================
|
|
28
|
+
// MCPAutoMode Class
|
|
29
|
+
// ============================================================================
|
|
30
|
+
/**
|
|
31
|
+
* MCP Auto Mode - Intelligent tool description management
|
|
32
|
+
*
|
|
33
|
+
* Automatically defers tool descriptions that would exceed context limits.
|
|
34
|
+
* This is based on Claude Code v2.1.7's MCP Auto Mode feature.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* const autoMode = new MCPAutoMode(
|
|
39
|
+
* { maxToolDescriptionPercent: 15 },
|
|
40
|
+
* contextManager,
|
|
41
|
+
* logger
|
|
42
|
+
* );
|
|
43
|
+
*
|
|
44
|
+
* // Register tools
|
|
45
|
+
* autoMode.registerTool({
|
|
46
|
+
* name: 'invoke_agent',
|
|
47
|
+
* description: 'Invoke a specialized agent...',
|
|
48
|
+
* estimatedTokens: 150,
|
|
49
|
+
* priority: 10,
|
|
50
|
+
* });
|
|
51
|
+
*
|
|
52
|
+
* // Before each request, process tools
|
|
53
|
+
* const contextState = contextManager.getState('openai', 'gpt-4o', messages);
|
|
54
|
+
* const result = autoMode.processForRequest(contextState);
|
|
55
|
+
*
|
|
56
|
+
* // Use result.includedTools for this request
|
|
57
|
+
* if (result.hadDeferrals) {
|
|
58
|
+
* console.log(result.deferralMessage);
|
|
59
|
+
* }
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export class MCPAutoMode {
|
|
63
|
+
config;
|
|
64
|
+
contextManager;
|
|
65
|
+
logger;
|
|
66
|
+
toolRegistry = new Map();
|
|
67
|
+
forcedIncludes = new Set();
|
|
68
|
+
/**
|
|
69
|
+
* Create a new MCPAutoMode instance.
|
|
70
|
+
*
|
|
71
|
+
* @param config - Partial configuration (merged with defaults)
|
|
72
|
+
* @param contextManager - ContextManager for token estimation
|
|
73
|
+
* @param logger - Logger instance for observability
|
|
74
|
+
*/
|
|
75
|
+
constructor(config, contextManager, logger) {
|
|
76
|
+
this.config = {
|
|
77
|
+
...DEFAULT_CONFIG,
|
|
78
|
+
...config,
|
|
79
|
+
alwaysInclude: config.alwaysInclude ?? DEFAULT_CONFIG.alwaysInclude,
|
|
80
|
+
alwaysDefer: config.alwaysDefer ?? DEFAULT_CONFIG.alwaysDefer,
|
|
81
|
+
};
|
|
82
|
+
this.contextManager = contextManager;
|
|
83
|
+
this.logger = logger;
|
|
84
|
+
this.logger.debug('MCPAutoMode initialized', {
|
|
85
|
+
enabled: this.config.enabled,
|
|
86
|
+
maxToolDescriptionPercent: this.config.maxToolDescriptionPercent,
|
|
87
|
+
minToolsToInclude: this.config.minToolsToInclude,
|
|
88
|
+
alwaysIncludeCount: this.config.alwaysInclude?.length ?? 0,
|
|
89
|
+
alwaysDeferCount: this.config.alwaysDefer?.length ?? 0,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
// ==========================================================================
|
|
93
|
+
// Tool Registration
|
|
94
|
+
// ==========================================================================
|
|
95
|
+
/**
|
|
96
|
+
* Register a tool with its description.
|
|
97
|
+
*
|
|
98
|
+
* @param tool - Tool descriptor to register
|
|
99
|
+
*/
|
|
100
|
+
registerTool(tool) {
|
|
101
|
+
// Validate tool
|
|
102
|
+
if (!tool.name) {
|
|
103
|
+
this.logger.warn('Attempted to register tool without name', { tool });
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
// Set defaults
|
|
107
|
+
const normalizedTool = {
|
|
108
|
+
...tool,
|
|
109
|
+
priority: tool.priority ?? 0,
|
|
110
|
+
deferred: false,
|
|
111
|
+
estimatedTokens: tool.estimatedTokens > 0
|
|
112
|
+
? tool.estimatedTokens
|
|
113
|
+
: this.estimateToolTokens(tool),
|
|
114
|
+
};
|
|
115
|
+
this.toolRegistry.set(tool.name, normalizedTool);
|
|
116
|
+
this.logger.debug('Tool registered', {
|
|
117
|
+
name: tool.name,
|
|
118
|
+
estimatedTokens: normalizedTool.estimatedTokens,
|
|
119
|
+
priority: normalizedTool.priority,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Unregister a tool.
|
|
124
|
+
*
|
|
125
|
+
* @param name - Name of tool to unregister
|
|
126
|
+
*/
|
|
127
|
+
unregisterTool(name) {
|
|
128
|
+
if (this.toolRegistry.has(name)) {
|
|
129
|
+
this.toolRegistry.delete(name);
|
|
130
|
+
this.forcedIncludes.delete(name);
|
|
131
|
+
this.logger.debug('Tool unregistered', { name });
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Get all registered tools.
|
|
136
|
+
*
|
|
137
|
+
* @returns Array of all tool descriptors
|
|
138
|
+
*/
|
|
139
|
+
getAllTools() {
|
|
140
|
+
return Array.from(this.toolRegistry.values());
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Calculate total tokens for all tool descriptions.
|
|
144
|
+
*
|
|
145
|
+
* @returns Total estimated tokens
|
|
146
|
+
*/
|
|
147
|
+
getTotalToolTokens() {
|
|
148
|
+
let total = 0;
|
|
149
|
+
for (const tool of this.toolRegistry.values()) {
|
|
150
|
+
total += tool.estimatedTokens;
|
|
151
|
+
}
|
|
152
|
+
return total;
|
|
153
|
+
}
|
|
154
|
+
// ==========================================================================
|
|
155
|
+
// Request Processing
|
|
156
|
+
// ==========================================================================
|
|
157
|
+
/**
|
|
158
|
+
* Process tools for a request given current context state.
|
|
159
|
+
* Returns which tools to include and which to defer.
|
|
160
|
+
*
|
|
161
|
+
* @param contextState - Current context state from ContextManager
|
|
162
|
+
* @param requestedTools - Optional list of specifically requested tool names
|
|
163
|
+
* @returns AutoModeResult with included/deferred tools
|
|
164
|
+
*/
|
|
165
|
+
processForRequest(contextState, requestedTools) {
|
|
166
|
+
// If auto mode is disabled, include all tools
|
|
167
|
+
if (!this.config.enabled) {
|
|
168
|
+
const allTools = Array.from(this.toolRegistry.keys());
|
|
169
|
+
return {
|
|
170
|
+
includedTools: allTools,
|
|
171
|
+
deferredTools: [],
|
|
172
|
+
tokensSaved: 0,
|
|
173
|
+
hadDeferrals: false,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
// Calculate how many tokens we can use for tools
|
|
177
|
+
const maxToolTokens = Math.floor(contextState.maxTokens * (this.config.maxToolDescriptionPercent / 100));
|
|
178
|
+
this.logger.debug('Processing tools for request', {
|
|
179
|
+
maxToolTokens,
|
|
180
|
+
totalRegisteredTools: this.toolRegistry.size,
|
|
181
|
+
requestedToolsCount: requestedTools?.length ?? 0,
|
|
182
|
+
});
|
|
183
|
+
// Sort tools by priority
|
|
184
|
+
const sortedTools = this.getSortedTools(requestedTools);
|
|
185
|
+
// Greedily include tools until we hit the limit
|
|
186
|
+
const included = [];
|
|
187
|
+
const deferred = [];
|
|
188
|
+
let usedTokens = 0;
|
|
189
|
+
for (const tool of sortedTools) {
|
|
190
|
+
// Always include first
|
|
191
|
+
if (this.config.alwaysInclude?.includes(tool.name)) {
|
|
192
|
+
included.push(tool.name);
|
|
193
|
+
usedTokens += tool.estimatedTokens;
|
|
194
|
+
tool.deferred = false;
|
|
195
|
+
continue;
|
|
196
|
+
}
|
|
197
|
+
// Always defer
|
|
198
|
+
if (this.config.alwaysDefer?.includes(tool.name) && !this.forcedIncludes.has(tool.name)) {
|
|
199
|
+
deferred.push(tool.name);
|
|
200
|
+
tool.deferred = true;
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
// Forced includes from user override
|
|
204
|
+
if (this.forcedIncludes.has(tool.name)) {
|
|
205
|
+
included.push(tool.name);
|
|
206
|
+
usedTokens += tool.estimatedTokens;
|
|
207
|
+
tool.deferred = false;
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
// Check if we have room (always include minimum tools)
|
|
211
|
+
if (usedTokens + tool.estimatedTokens <= maxToolTokens ||
|
|
212
|
+
included.length < this.config.minToolsToInclude) {
|
|
213
|
+
included.push(tool.name);
|
|
214
|
+
usedTokens += tool.estimatedTokens;
|
|
215
|
+
tool.deferred = false;
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
deferred.push(tool.name);
|
|
219
|
+
tool.deferred = true;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
// Calculate tokens saved
|
|
223
|
+
const tokensSaved = this.calculateTokensSaved(deferred);
|
|
224
|
+
const result = {
|
|
225
|
+
includedTools: included,
|
|
226
|
+
deferredTools: deferred,
|
|
227
|
+
tokensSaved,
|
|
228
|
+
hadDeferrals: deferred.length > 0,
|
|
229
|
+
deferralMessage: deferred.length > 0
|
|
230
|
+
? `${deferred.length} tool${deferred.length !== 1 ? 's' : ''} deferred to save context (${tokensSaved} tokens saved). Use tool explicitly to include.`
|
|
231
|
+
: undefined,
|
|
232
|
+
};
|
|
233
|
+
this.logger.debug('Tool processing completed', {
|
|
234
|
+
includedCount: included.length,
|
|
235
|
+
deferredCount: deferred.length,
|
|
236
|
+
tokensSaved,
|
|
237
|
+
usedTokens,
|
|
238
|
+
maxToolTokens,
|
|
239
|
+
});
|
|
240
|
+
return result;
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Get deferred tool description on demand.
|
|
244
|
+
* (When user explicitly requests a deferred tool)
|
|
245
|
+
*
|
|
246
|
+
* @param name - Name of deferred tool
|
|
247
|
+
* @returns Tool descriptor if found, undefined otherwise
|
|
248
|
+
*/
|
|
249
|
+
getDeferredToolDescription(name) {
|
|
250
|
+
const tool = this.toolRegistry.get(name);
|
|
251
|
+
if (tool?.deferred) {
|
|
252
|
+
this.logger.debug('Fetching deferred tool description', { name });
|
|
253
|
+
return tool;
|
|
254
|
+
}
|
|
255
|
+
return undefined;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Check if a specific tool is currently deferred.
|
|
259
|
+
*
|
|
260
|
+
* @param name - Tool name to check
|
|
261
|
+
* @returns True if tool is deferred
|
|
262
|
+
*/
|
|
263
|
+
isDeferred(name) {
|
|
264
|
+
return this.toolRegistry.get(name)?.deferred ?? false;
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Force include a deferred tool (user override).
|
|
268
|
+
* This tool will be included in subsequent requests until reset.
|
|
269
|
+
*
|
|
270
|
+
* @param name - Tool name to force include
|
|
271
|
+
*/
|
|
272
|
+
forceInclude(name) {
|
|
273
|
+
if (this.toolRegistry.has(name)) {
|
|
274
|
+
this.forcedIncludes.add(name);
|
|
275
|
+
const tool = this.toolRegistry.get(name);
|
|
276
|
+
if (tool) {
|
|
277
|
+
tool.deferred = false;
|
|
278
|
+
}
|
|
279
|
+
this.logger.debug('Tool force-included', { name });
|
|
280
|
+
}
|
|
281
|
+
else {
|
|
282
|
+
this.logger.warn('Attempted to force-include unknown tool', { name });
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Reset all deferrals and force-includes.
|
|
287
|
+
*/
|
|
288
|
+
resetDeferrals() {
|
|
289
|
+
this.forcedIncludes.clear();
|
|
290
|
+
for (const tool of this.toolRegistry.values()) {
|
|
291
|
+
tool.deferred = false;
|
|
292
|
+
}
|
|
293
|
+
this.logger.debug('Deferrals reset');
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Mark a tool as recently used (for recency-based prioritization).
|
|
297
|
+
*
|
|
298
|
+
* @param name - Tool name that was used
|
|
299
|
+
*/
|
|
300
|
+
markToolUsed(name) {
|
|
301
|
+
const tool = this.toolRegistry.get(name);
|
|
302
|
+
if (tool) {
|
|
303
|
+
tool.lastUsedAt = Date.now();
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
// ==========================================================================
|
|
307
|
+
// Configuration
|
|
308
|
+
// ==========================================================================
|
|
309
|
+
/**
|
|
310
|
+
* Get current configuration.
|
|
311
|
+
*
|
|
312
|
+
* @returns Current MCPAutoModeConfig
|
|
313
|
+
*/
|
|
314
|
+
getConfig() {
|
|
315
|
+
return { ...this.config };
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Update configuration.
|
|
319
|
+
*
|
|
320
|
+
* @param config - Partial configuration to merge
|
|
321
|
+
*/
|
|
322
|
+
updateConfig(config) {
|
|
323
|
+
this.config = {
|
|
324
|
+
...this.config,
|
|
325
|
+
...config,
|
|
326
|
+
alwaysInclude: config.alwaysInclude ?? this.config.alwaysInclude,
|
|
327
|
+
alwaysDefer: config.alwaysDefer ?? this.config.alwaysDefer,
|
|
328
|
+
};
|
|
329
|
+
this.logger.debug('MCPAutoMode config updated', {
|
|
330
|
+
enabled: this.config.enabled,
|
|
331
|
+
maxToolDescriptionPercent: this.config.maxToolDescriptionPercent,
|
|
332
|
+
minToolsToInclude: this.config.minToolsToInclude,
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
// ==========================================================================
|
|
336
|
+
// Private Methods
|
|
337
|
+
// ==========================================================================
|
|
338
|
+
/**
|
|
339
|
+
* Sort tools by priority for inclusion decisions.
|
|
340
|
+
*
|
|
341
|
+
* Priority order:
|
|
342
|
+
* 1. Tools in alwaysInclude
|
|
343
|
+
* 2. Tools explicitly requested for this call
|
|
344
|
+
* 3. Tools that were force-included by user
|
|
345
|
+
* 4. Recently used tools
|
|
346
|
+
* 5. Tools with higher priority scores
|
|
347
|
+
* 6. Other tools
|
|
348
|
+
* 7. Tools in alwaysDefer (lowest priority)
|
|
349
|
+
*/
|
|
350
|
+
getSortedTools(requestedTools) {
|
|
351
|
+
const tools = Array.from(this.toolRegistry.values());
|
|
352
|
+
const requestedSet = new Set(requestedTools ?? []);
|
|
353
|
+
const alwaysIncludeSet = new Set(this.config.alwaysInclude ?? []);
|
|
354
|
+
const alwaysDeferSet = new Set(this.config.alwaysDefer ?? []);
|
|
355
|
+
const now = Date.now();
|
|
356
|
+
return tools.sort((a, b) => {
|
|
357
|
+
// 1. alwaysInclude tools first
|
|
358
|
+
const aAlwaysInclude = alwaysIncludeSet.has(a.name) ? 1 : 0;
|
|
359
|
+
const bAlwaysInclude = alwaysIncludeSet.has(b.name) ? 1 : 0;
|
|
360
|
+
if (aAlwaysInclude !== bAlwaysInclude) {
|
|
361
|
+
return bAlwaysInclude - aAlwaysInclude;
|
|
362
|
+
}
|
|
363
|
+
// 2. Explicitly requested tools
|
|
364
|
+
const aRequested = requestedSet.has(a.name) ? 1 : 0;
|
|
365
|
+
const bRequested = requestedSet.has(b.name) ? 1 : 0;
|
|
366
|
+
if (aRequested !== bRequested) {
|
|
367
|
+
return bRequested - aRequested;
|
|
368
|
+
}
|
|
369
|
+
// 3. Force-included tools
|
|
370
|
+
const aForced = this.forcedIncludes.has(a.name) ? 1 : 0;
|
|
371
|
+
const bForced = this.forcedIncludes.has(b.name) ? 1 : 0;
|
|
372
|
+
if (aForced !== bForced) {
|
|
373
|
+
return bForced - aForced;
|
|
374
|
+
}
|
|
375
|
+
// 4. Recently used tools (within last 5 minutes)
|
|
376
|
+
const recentThreshold = 5 * 60 * 1000; // 5 minutes
|
|
377
|
+
const aRecent = a.lastUsedAt && (now - a.lastUsedAt) < recentThreshold ? 1 : 0;
|
|
378
|
+
const bRecent = b.lastUsedAt && (now - b.lastUsedAt) < recentThreshold ? 1 : 0;
|
|
379
|
+
if (aRecent !== bRecent) {
|
|
380
|
+
return bRecent - aRecent;
|
|
381
|
+
}
|
|
382
|
+
// 5. Priority score (higher = more important)
|
|
383
|
+
const priorityDiff = (b.priority ?? 0) - (a.priority ?? 0);
|
|
384
|
+
if (priorityDiff !== 0) {
|
|
385
|
+
return priorityDiff;
|
|
386
|
+
}
|
|
387
|
+
// 6. alwaysDefer tools last
|
|
388
|
+
const aAlwaysDefer = alwaysDeferSet.has(a.name) ? 1 : 0;
|
|
389
|
+
const bAlwaysDefer = alwaysDeferSet.has(b.name) ? 1 : 0;
|
|
390
|
+
if (aAlwaysDefer !== bAlwaysDefer) {
|
|
391
|
+
return aAlwaysDefer - bAlwaysDefer;
|
|
392
|
+
}
|
|
393
|
+
// 7. Alphabetical as tie-breaker for consistency
|
|
394
|
+
return a.name.localeCompare(b.name);
|
|
395
|
+
});
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* Calculate total tokens saved by deferring tools.
|
|
399
|
+
*/
|
|
400
|
+
calculateTokensSaved(deferredTools) {
|
|
401
|
+
let total = 0;
|
|
402
|
+
for (const name of deferredTools) {
|
|
403
|
+
const tool = this.toolRegistry.get(name);
|
|
404
|
+
if (tool) {
|
|
405
|
+
total += tool.estimatedTokens;
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
return total;
|
|
409
|
+
}
|
|
410
|
+
/**
|
|
411
|
+
* Estimate token count for a tool based on its description.
|
|
412
|
+
* Uses the context manager's estimation logic.
|
|
413
|
+
*/
|
|
414
|
+
estimateToolTokens(tool) {
|
|
415
|
+
// Base estimate from description
|
|
416
|
+
const descriptionTokens = this.contextManager.estimateTokens(tool.description);
|
|
417
|
+
// Add overhead for tool schema (name, parameters structure)
|
|
418
|
+
const schemaOverhead = 20;
|
|
419
|
+
return descriptionTokens + schemaOverhead;
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
// ============================================================================
|
|
423
|
+
// Factory Function
|
|
424
|
+
// ============================================================================
|
|
425
|
+
/**
|
|
426
|
+
* Create an MCPAutoMode instance.
|
|
427
|
+
*
|
|
428
|
+
* @param config - Partial configuration (merged with defaults)
|
|
429
|
+
* @param contextManager - ContextManager instance
|
|
430
|
+
* @param logger - Logger instance
|
|
431
|
+
* @returns Configured MCPAutoMode instance
|
|
432
|
+
*/
|
|
433
|
+
export function createMCPAutoMode(config, contextManager, logger) {
|
|
434
|
+
return new MCPAutoMode(config, contextManager, logger);
|
|
435
|
+
}
|
|
436
|
+
//# sourceMappingURL=auto-mode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-mode.js","sourceRoot":"","sources":["../../src/mcp/auto-mode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Module Index
|
|
3
|
+
*
|
|
4
|
+
* Exports MCP-related functionality including:
|
|
5
|
+
* - Auto Mode for intelligent tool description management
|
|
6
|
+
* - Tool registration utilities
|
|
7
|
+
* - Transport implementations
|
|
8
|
+
*/
|
|
9
|
+
export { MCPAutoMode, createMCPAutoMode, } from './auto-mode.js';
|
|
10
|
+
export type { MCPAutoModeConfig, ToolDescriptor, AutoModeResult, } from './auto-mode.js';
|
|
11
|
+
export { registerTools } from './tools/index.js';
|
|
12
|
+
export { registerInvokeAgentTool, registerCompareAgentsTool, registerCritiquePlanTool, registerDesignFeedbackTool, registerReviewCodeTool, registerWorktreeTools, registerWorktreeManagementTools, registerResolveConflictsTool, registerListWorktreesTool, registerCleanupWorktreesTool, registerGetWorktreeStatusTool, } from './tools/index.js';
|
|
13
|
+
export { createStdioTransport } from './transport/stdio.js';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,EACL,WAAW,EACX,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,iBAAiB,EACjB,cAAc,EACd,cAAc,GACf,MAAM,gBAAgB,CAAC;AAMxB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,0BAA0B,EAC1B,sBAAsB,EACtB,qBAAqB,EACrB,+BAA+B,EAC/B,4BAA4B,EAC5B,yBAAyB,EACzB,4BAA4B,EAC5B,6BAA6B,GAC9B,MAAM,kBAAkB,CAAC;AAM1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Module Index
|
|
3
|
+
*
|
|
4
|
+
* Exports MCP-related functionality including:
|
|
5
|
+
* - Auto Mode for intelligent tool description management
|
|
6
|
+
* - Tool registration utilities
|
|
7
|
+
* - Transport implementations
|
|
8
|
+
*/
|
|
9
|
+
// ============================================================================
|
|
10
|
+
// Auto Mode
|
|
11
|
+
// ============================================================================
|
|
12
|
+
export { MCPAutoMode, createMCPAutoMode, } from './auto-mode.js';
|
|
13
|
+
// ============================================================================
|
|
14
|
+
// Tools
|
|
15
|
+
// ============================================================================
|
|
16
|
+
export { registerTools } from './tools/index.js';
|
|
17
|
+
export { registerInvokeAgentTool, registerCompareAgentsTool, registerCritiquePlanTool, registerDesignFeedbackTool, registerReviewCodeTool, registerWorktreeTools, registerWorktreeManagementTools, registerResolveConflictsTool, registerListWorktreesTool, registerCleanupWorktreesTool, registerGetWorktreeStatusTool, } from './tools/index.js';
|
|
18
|
+
// ============================================================================
|
|
19
|
+
// Transport
|
|
20
|
+
// ============================================================================
|
|
21
|
+
export { createStdioTransport } from './transport/stdio.js';
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,OAAO,EACL,WAAW,EACX,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAQxB,+EAA+E;AAC/E,QAAQ;AACR,+EAA+E;AAE/E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,0BAA0B,EAC1B,sBAAsB,EACtB,qBAAqB,EACrB,+BAA+B,EAC/B,4BAA4B,EAC5B,yBAAyB,EACzB,4BAA4B,EAC5B,6BAA6B,GAC9B,MAAM,kBAAkB,CAAC;AAE1B,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"critique-plan.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/critique-plan.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"critique-plan.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/critique-plan.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAkI3D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,GACb,IAAI,CAwGN"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* critic agent with a structured task.
|
|
7
7
|
*/
|
|
8
8
|
import { z } from "zod";
|
|
9
|
+
import { isSessionDelegation } from "../../types.js";
|
|
9
10
|
// ============================================================================
|
|
10
11
|
// Constants
|
|
11
12
|
// ============================================================================
|
|
@@ -49,6 +50,39 @@ function formatCritiqueResponse(response) {
|
|
|
49
50
|
.join("\n");
|
|
50
51
|
return header + meta + content;
|
|
51
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Format a session delegation response for MCP output.
|
|
55
|
+
*
|
|
56
|
+
* @param delegation - The session delegation response from the provider
|
|
57
|
+
* @returns Formatted string with delegation instructions
|
|
58
|
+
*/
|
|
59
|
+
function formatDelegationResponse(delegation) {
|
|
60
|
+
return `## Session Delegation
|
|
61
|
+
|
|
62
|
+
This request is being delegated to the current Claude session.
|
|
63
|
+
|
|
64
|
+
**Role**: ${delegation.role}
|
|
65
|
+
**Model Requested**: ${delegation.model || "default"}
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
### Instructions
|
|
70
|
+
|
|
71
|
+
${delegation.instructions}
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
### System Prompt to Apply
|
|
76
|
+
|
|
77
|
+
\`\`\`
|
|
78
|
+
${delegation.system_prompt}
|
|
79
|
+
\`\`\`
|
|
80
|
+
|
|
81
|
+
### Task to Execute
|
|
82
|
+
|
|
83
|
+
${delegation.task}
|
|
84
|
+
`.trim();
|
|
85
|
+
}
|
|
52
86
|
/**
|
|
53
87
|
* Builds the task string for the critic agent
|
|
54
88
|
*
|
|
@@ -117,17 +151,36 @@ export function registerCritiquePlanTool(server, router, logger) {
|
|
|
117
151
|
task,
|
|
118
152
|
});
|
|
119
153
|
const durationMs = Date.now() - startTime;
|
|
154
|
+
// Handle session delegation responses
|
|
155
|
+
if (isSessionDelegation(response)) {
|
|
156
|
+
logger.info("critique_plan delegated to session", {
|
|
157
|
+
model: response.model,
|
|
158
|
+
durationMs,
|
|
159
|
+
});
|
|
160
|
+
return {
|
|
161
|
+
content: [
|
|
162
|
+
{
|
|
163
|
+
type: "text",
|
|
164
|
+
text: formatDelegationResponse(response),
|
|
165
|
+
},
|
|
166
|
+
],
|
|
167
|
+
isError: false,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
// After session delegation check, response is AgentResponse
|
|
171
|
+
const agentResponse = response;
|
|
172
|
+
// Handle normal completion responses
|
|
120
173
|
logger.info("critique_plan completed", {
|
|
121
|
-
provider:
|
|
122
|
-
model:
|
|
174
|
+
provider: agentResponse.provider,
|
|
175
|
+
model: agentResponse.model,
|
|
123
176
|
durationMs,
|
|
124
|
-
traceId:
|
|
177
|
+
traceId: agentResponse.metadata.traceId,
|
|
125
178
|
});
|
|
126
179
|
return {
|
|
127
180
|
content: [
|
|
128
181
|
{
|
|
129
182
|
type: "text",
|
|
130
|
-
text: formatCritiqueResponse(
|
|
183
|
+
text: formatCritiqueResponse(agentResponse),
|
|
131
184
|
},
|
|
132
185
|
],
|
|
133
186
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"critique-plan.js","sourceRoot":"","sources":["../../../src/mcp/tools/critique-plan.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"critique-plan.js","sourceRoot":"","sources":["../../../src/mcp/tools/critique-plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design-feedback.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/design-feedback.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"design-feedback.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/design-feedback.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAgL3D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,GACb,IAAI,CAsHN"}
|