mcp-agent-foundry 1.3.1 → 2.0.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.
Files changed (104) hide show
  1. package/README.md +232 -1
  2. package/dist/background/index.d.ts +33 -0
  3. package/dist/background/index.d.ts.map +1 -0
  4. package/dist/background/index.js +33 -0
  5. package/dist/background/index.js.map +1 -0
  6. package/dist/background/task-runner.d.ts +177 -0
  7. package/dist/background/task-runner.d.ts.map +1 -0
  8. package/dist/background/task-runner.js +551 -0
  9. package/dist/background/task-runner.js.map +1 -0
  10. package/dist/background/types.d.ts +135 -0
  11. package/dist/background/types.d.ts.map +1 -0
  12. package/dist/background/types.js +8 -0
  13. package/dist/background/types.js.map +1 -0
  14. package/dist/failover/health-tracker.d.ts +81 -1
  15. package/dist/failover/health-tracker.d.ts.map +1 -1
  16. package/dist/failover/health-tracker.js +229 -1
  17. package/dist/failover/health-tracker.js.map +1 -1
  18. package/dist/hooks/hook-executor.d.ts +77 -0
  19. package/dist/hooks/hook-executor.d.ts.map +1 -0
  20. package/dist/hooks/hook-executor.js +308 -0
  21. package/dist/hooks/hook-executor.js.map +1 -0
  22. package/dist/hooks/hook-manager.d.ts +140 -0
  23. package/dist/hooks/hook-manager.d.ts.map +1 -0
  24. package/dist/hooks/hook-manager.js +520 -0
  25. package/dist/hooks/hook-manager.js.map +1 -0
  26. package/dist/hooks/index.d.ts +10 -0
  27. package/dist/hooks/index.d.ts.map +1 -0
  28. package/dist/hooks/index.js +10 -0
  29. package/dist/hooks/index.js.map +1 -0
  30. package/dist/hooks/types.d.ts +221 -0
  31. package/dist/hooks/types.d.ts.map +1 -0
  32. package/dist/hooks/types.js +31 -0
  33. package/dist/hooks/types.js.map +1 -0
  34. package/dist/index.d.ts +1 -1
  35. package/dist/index.js +1 -1
  36. package/dist/mcp/auto-mode.d.ts +221 -0
  37. package/dist/mcp/auto-mode.d.ts.map +1 -0
  38. package/dist/mcp/auto-mode.js +436 -0
  39. package/dist/mcp/auto-mode.js.map +1 -0
  40. package/dist/mcp/index.d.ts +14 -0
  41. package/dist/mcp/index.d.ts.map +1 -0
  42. package/dist/mcp/index.js +22 -0
  43. package/dist/mcp/index.js.map +1 -0
  44. package/dist/mcp/tools/tasks/delete-task.d.ts +25 -0
  45. package/dist/mcp/tools/tasks/delete-task.d.ts.map +1 -0
  46. package/dist/mcp/tools/tasks/delete-task.js +148 -0
  47. package/dist/mcp/tools/tasks/delete-task.js.map +1 -0
  48. package/dist/mcp/tools/tasks/index.d.ts +2 -0
  49. package/dist/mcp/tools/tasks/index.d.ts.map +1 -1
  50. package/dist/mcp/tools/tasks/index.js +6 -0
  51. package/dist/mcp/tools/tasks/index.js.map +1 -1
  52. package/dist/observability/debug-logger.d.ts +209 -0
  53. package/dist/observability/debug-logger.d.ts.map +1 -0
  54. package/dist/observability/debug-logger.js +430 -0
  55. package/dist/observability/debug-logger.js.map +1 -0
  56. package/dist/observability/index.d.ts +12 -0
  57. package/dist/observability/index.d.ts.map +1 -0
  58. package/dist/observability/index.js +12 -0
  59. package/dist/observability/index.js.map +1 -0
  60. package/dist/observability/logger.d.ts +180 -0
  61. package/dist/observability/logger.d.ts.map +1 -1
  62. package/dist/observability/logger.js +158 -0
  63. package/dist/observability/logger.js.map +1 -1
  64. package/dist/router/context-manager.d.ts +214 -1
  65. package/dist/router/context-manager.d.ts.map +1 -1
  66. package/dist/router/context-manager.js +759 -2
  67. package/dist/router/context-manager.js.map +1 -1
  68. package/dist/router/context-types.d.ts +182 -0
  69. package/dist/router/context-types.d.ts.map +1 -0
  70. package/dist/router/context-types.js +8 -0
  71. package/dist/router/context-types.js.map +1 -0
  72. package/dist/server.d.ts +41 -0
  73. package/dist/server.d.ts.map +1 -1
  74. package/dist/server.js +165 -0
  75. package/dist/server.js.map +1 -1
  76. package/dist/skills/hot-reloader.d.ts +104 -0
  77. package/dist/skills/hot-reloader.d.ts.map +1 -0
  78. package/dist/skills/hot-reloader.js +314 -0
  79. package/dist/skills/hot-reloader.js.map +1 -0
  80. package/dist/skills/index.d.ts +14 -0
  81. package/dist/skills/index.d.ts.map +1 -0
  82. package/dist/skills/index.js +16 -0
  83. package/dist/skills/index.js.map +1 -0
  84. package/dist/skills/skill-executor.d.ts +96 -0
  85. package/dist/skills/skill-executor.d.ts.map +1 -0
  86. package/dist/skills/skill-executor.js +289 -0
  87. package/dist/skills/skill-executor.js.map +1 -0
  88. package/dist/skills/skill-loader.d.ts +147 -0
  89. package/dist/skills/skill-loader.d.ts.map +1 -0
  90. package/dist/skills/skill-loader.js +579 -0
  91. package/dist/skills/skill-loader.js.map +1 -0
  92. package/dist/skills/types.d.ts +198 -0
  93. package/dist/skills/types.d.ts.map +1 -0
  94. package/dist/skills/types.js +21 -0
  95. package/dist/skills/types.js.map +1 -0
  96. package/dist/tasks/coordinator.d.ts +22 -1
  97. package/dist/tasks/coordinator.d.ts.map +1 -1
  98. package/dist/tasks/coordinator.js +83 -0
  99. package/dist/tasks/coordinator.js.map +1 -1
  100. package/dist/tasks/state-coordinator.d.ts +19 -0
  101. package/dist/tasks/state-coordinator.d.ts.map +1 -1
  102. package/dist/tasks/state-coordinator.js +40 -0
  103. package/dist/tasks/state-coordinator.js.map +1 -1
  104. package/package.json +1 -1
@@ -0,0 +1,221 @@
1
+ /**
2
+ * Hook System Types
3
+ *
4
+ * Type definitions for the Agent Foundry hooks system.
5
+ * Hooks allow custom code to run in response to events during agent execution.
6
+ * Modeled after Claude Code's hooks system.
7
+ */
8
+ /**
9
+ * Hook event types that can trigger hook execution.
10
+ */
11
+ export type HookEvent = 'PreToolUse' | 'PostToolUse' | 'Setup' | 'ToolError' | 'TaskStart' | 'TaskComplete' | 'TaskFail' | 'ProviderError' | 'Failover';
12
+ /**
13
+ * All valid hook events as an array for validation.
14
+ */
15
+ export declare const HOOK_EVENTS: readonly HookEvent[];
16
+ /**
17
+ * Hook decision for PreToolUse hooks.
18
+ * Determines whether tool execution should proceed.
19
+ */
20
+ export type HookDecision = 'allow' | 'deny' | 'ask';
21
+ /**
22
+ * Input provided to hooks via stdin as JSON.
23
+ * Contains event context and relevant data depending on event type.
24
+ */
25
+ export interface HookInput {
26
+ /** The event type that triggered this hook */
27
+ event: HookEvent;
28
+ /** Timestamp when the event occurred */
29
+ timestamp: Date;
30
+ /** Session ID for the current MCP session */
31
+ sessionId?: string;
32
+ /** Task ID if this hook is related to a task */
33
+ taskId?: string;
34
+ /** Worktree path if operating in a worktree */
35
+ worktreePath?: string;
36
+ /** Name of the tool being executed (for tool events) */
37
+ toolName?: string;
38
+ /** Input parameters passed to the tool */
39
+ toolInput?: Record<string, unknown>;
40
+ /** Output from the tool (for PostToolUse) */
41
+ toolOutput?: unknown;
42
+ /** Error from the tool (for ToolError) */
43
+ toolError?: Error;
44
+ /** Provider name (for provider events) */
45
+ provider?: string;
46
+ /** Model identifier */
47
+ model?: string;
48
+ /** Agent role being used */
49
+ role?: string;
50
+ /** HTTP status code (for error events) */
51
+ errorCode?: number;
52
+ /** Error message */
53
+ errorMessage?: string;
54
+ /** Original provider that failed (for Failover) */
55
+ fromProvider?: string;
56
+ /** New provider being tried (for Failover) */
57
+ toProvider?: string;
58
+ /** Attempt number in failover chain */
59
+ attemptNumber?: number;
60
+ }
61
+ /**
62
+ * Output from hook execution, parsed from stdout JSON.
63
+ * Hooks can influence agent behavior through these fields.
64
+ */
65
+ export interface HookOutput {
66
+ /** Decision for PreToolUse hooks (allow/deny/ask) */
67
+ decision?: HookDecision;
68
+ /** Additional context to inject into agent prompt */
69
+ additionalContext?: string;
70
+ /** Modified tool input (replaces original input) */
71
+ updatedInput?: Record<string, unknown>;
72
+ /** Message to display to user/log */
73
+ message?: string;
74
+ /** Abort execution entirely */
75
+ abort?: boolean;
76
+ /** Exit code from the hook process */
77
+ exitCode?: number;
78
+ /** Raw stdout from the hook */
79
+ stdout?: string;
80
+ /** Raw stderr from the hook */
81
+ stderr?: string;
82
+ }
83
+ /**
84
+ * Hook definition in configuration.
85
+ * Defines a hook's trigger conditions and execution parameters.
86
+ */
87
+ export interface HookDefinition {
88
+ /** Unique name for this hook */
89
+ name: string;
90
+ /** Event that triggers this hook */
91
+ event: HookEvent;
92
+ /** Description of what this hook does */
93
+ description?: string;
94
+ /** Shell command to execute */
95
+ command: string;
96
+ /** Working directory for command */
97
+ cwd?: string;
98
+ /** Environment variables to set for the hook process */
99
+ env?: Record<string, string>;
100
+ /** Timeout in milliseconds (overrides default) */
101
+ timeout_ms?: number;
102
+ /** Only run once per session */
103
+ once?: boolean;
104
+ /** Only trigger for specific tools (tool name patterns) */
105
+ tools?: string[];
106
+ /** Only trigger for specific providers */
107
+ providers?: string[];
108
+ /** Only trigger for specific roles */
109
+ roles?: string[];
110
+ /** Error codes that trigger this hook (for ToolError, ProviderError) */
111
+ error_codes?: number[];
112
+ /** Whether this hook is enabled */
113
+ enabled?: boolean;
114
+ }
115
+ /**
116
+ * Complete hooks configuration.
117
+ * Can be defined in config.yaml under the 'hooks' key.
118
+ */
119
+ export interface HooksConfig {
120
+ /** Enable hooks system globally */
121
+ enabled: boolean;
122
+ /** Hook definitions */
123
+ hooks: HookDefinition[];
124
+ /** Global timeout for hooks in milliseconds */
125
+ default_timeout_ms: number;
126
+ /** Fail silently on hook errors (don't abort main operation) */
127
+ fail_silent: boolean;
128
+ /** Path to external hooks configuration file (optional) */
129
+ hooks_file?: string;
130
+ }
131
+ /**
132
+ * Default hooks configuration.
133
+ */
134
+ export declare const DEFAULT_HOOKS_CONFIG: HooksConfig;
135
+ /**
136
+ * Variable substitutions available in hook commands.
137
+ * Variables are substituted using ${VAR_NAME} syntax.
138
+ */
139
+ export interface HookVariables {
140
+ /** Current MCP session ID */
141
+ CLAUDE_SESSION_ID: string;
142
+ /** Task ID being executed */
143
+ TASK_ID: string;
144
+ /** Path to the worktree directory */
145
+ WORKTREE_PATH: string;
146
+ /** Name of the tool being executed */
147
+ TOOL_NAME: string;
148
+ /** Provider name */
149
+ PROVIDER: string;
150
+ /** Model identifier */
151
+ MODEL: string;
152
+ /** Agent role */
153
+ ROLE: string;
154
+ /** Error code (HTTP status) */
155
+ ERROR_CODE: string;
156
+ /** Error message */
157
+ ERROR_MESSAGE: string;
158
+ /** Original provider (for failover) */
159
+ FROM_PROVIDER: string;
160
+ /** Target provider (for failover) */
161
+ TO_PROVIDER: string;
162
+ /** Attempt number */
163
+ ATTEMPT_NUMBER: string;
164
+ }
165
+ /**
166
+ * Result of a single hook execution.
167
+ */
168
+ export interface HookExecutionResult {
169
+ /** Hook that was executed */
170
+ hook: HookDefinition;
171
+ /** Whether execution succeeded */
172
+ success: boolean;
173
+ /** Output from the hook */
174
+ output?: HookOutput;
175
+ /** Error if execution failed */
176
+ error?: Error;
177
+ /** Duration in milliseconds */
178
+ durationMs: number;
179
+ }
180
+ /**
181
+ * Combined result from triggering an event (multiple hooks).
182
+ */
183
+ export interface HookTriggerResult {
184
+ /** Event that was triggered */
185
+ event: HookEvent;
186
+ /** Number of hooks executed */
187
+ hooksExecuted: number;
188
+ /** Results from each hook */
189
+ results: HookExecutionResult[];
190
+ /** Combined output from all hooks */
191
+ combinedOutput: HookOutput;
192
+ /** Whether any hook failed */
193
+ hasErrors: boolean;
194
+ /** Whether execution should be aborted */
195
+ shouldAbort: boolean;
196
+ }
197
+ /**
198
+ * Events emitted by the HookManager.
199
+ */
200
+ export interface HookManagerEvents {
201
+ /** Emitted before a hook is executed */
202
+ 'hook:before': {
203
+ hook: HookDefinition;
204
+ input: HookInput;
205
+ };
206
+ /** Emitted after a hook completes */
207
+ 'hook:after': {
208
+ hook: HookDefinition;
209
+ result: HookExecutionResult;
210
+ };
211
+ /** Emitted when a hook fails */
212
+ 'hook:error': {
213
+ hook: HookDefinition;
214
+ error: Error;
215
+ };
216
+ /** Emitted when hooks are reloaded */
217
+ 'hooks:reload': {
218
+ count: number;
219
+ };
220
+ }
221
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/hooks/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Hook System Types
3
+ *
4
+ * Type definitions for the Agent Foundry hooks system.
5
+ * Hooks allow custom code to run in response to events during agent execution.
6
+ * Modeled after Claude Code's hooks system.
7
+ */
8
+ /**
9
+ * All valid hook events as an array for validation.
10
+ */
11
+ export const HOOK_EVENTS = [
12
+ 'PreToolUse',
13
+ 'PostToolUse',
14
+ 'Setup',
15
+ 'ToolError',
16
+ 'TaskStart',
17
+ 'TaskComplete',
18
+ 'TaskFail',
19
+ 'ProviderError',
20
+ 'Failover',
21
+ ];
22
+ /**
23
+ * Default hooks configuration.
24
+ */
25
+ export const DEFAULT_HOOKS_CONFIG = {
26
+ enabled: false,
27
+ hooks: [],
28
+ default_timeout_ms: 5000,
29
+ fail_silent: true,
30
+ };
31
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/hooks/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAoBH;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAyB;IAC/C,YAAY;IACZ,aAAa;IACb,OAAO;IACP,WAAW;IACX,WAAW;IACX,cAAc;IACd,UAAU;IACV,eAAe;IACf,UAAU;CACF,CAAC;AAsJX;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAgB;IAC/C,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,EAAE;IACT,kBAAkB,EAAE,IAAI;IACxB,WAAW,EAAE,IAAI;CAClB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  * AgentRouter - MCP server for multi-agent orchestration
3
3
  * Entry point
4
4
  */
5
- export declare const VERSION = "3.0.2";
5
+ export declare const VERSION = "2.0.0";
6
6
  export { initializeWithRecovery, shutdown } from "./startup.js";
7
7
  export type { StartupConfig, StartupResult } from "./startup.js";
8
8
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@
3
3
  * Entry point
4
4
  */
5
5
  import { createServer, startServer, shutdownServer } from "./server.js";
6
- export const VERSION = "3.0.2";
6
+ export const VERSION = "2.0.0";
7
7
  // Re-export startup utilities for programmatic use
8
8
  export { initializeWithRecovery, shutdown } from "./startup.js";
9
9
  /**
@@ -0,0 +1,221 @@
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
+ import type { Logger } from '../observability/logger.js';
18
+ import type { ContextManager, ContextState } from '../router/context-manager.js';
19
+ /**
20
+ * Configuration for MCP Auto Mode
21
+ */
22
+ export interface MCPAutoModeConfig {
23
+ /** Enable auto mode (default: true) */
24
+ enabled: boolean;
25
+ /** Maximum percentage of context for tool descriptions (default: 10) */
26
+ maxToolDescriptionPercent: number;
27
+ /** Tools that should never be deferred */
28
+ alwaysInclude?: string[];
29
+ /** Tools that should always be deferred */
30
+ alwaysDefer?: string[];
31
+ /** Minimum tools to include even when deferring (default: 5) */
32
+ minToolsToInclude: number;
33
+ }
34
+ /**
35
+ * Tool with its description metadata
36
+ */
37
+ export interface ToolDescriptor {
38
+ /** Unique tool name */
39
+ name: string;
40
+ /** Tool description text */
41
+ description: string;
42
+ /** Estimated tokens for this tool's schema */
43
+ estimatedTokens: number;
44
+ /** Priority (higher = more important, default: 0) */
45
+ priority?: number;
46
+ /** Is this tool currently deferred? */
47
+ deferred?: boolean;
48
+ /** Timestamp of last use (for recency-based prioritization) */
49
+ lastUsedAt?: number;
50
+ }
51
+ /**
52
+ * Result of auto mode processing
53
+ */
54
+ export interface AutoModeResult {
55
+ /** Tools to include in this request */
56
+ includedTools: string[];
57
+ /** Tools that were deferred */
58
+ deferredTools: string[];
59
+ /** Total tokens saved by deferring */
60
+ tokensSaved: number;
61
+ /** Was any tool deferred? */
62
+ hadDeferrals: boolean;
63
+ /** Message to show user if tools were deferred */
64
+ deferralMessage?: string;
65
+ }
66
+ /**
67
+ * MCP Auto Mode - Intelligent tool description management
68
+ *
69
+ * Automatically defers tool descriptions that would exceed context limits.
70
+ * This is based on Claude Code v2.1.7's MCP Auto Mode feature.
71
+ *
72
+ * @example
73
+ * ```typescript
74
+ * const autoMode = new MCPAutoMode(
75
+ * { maxToolDescriptionPercent: 15 },
76
+ * contextManager,
77
+ * logger
78
+ * );
79
+ *
80
+ * // Register tools
81
+ * autoMode.registerTool({
82
+ * name: 'invoke_agent',
83
+ * description: 'Invoke a specialized agent...',
84
+ * estimatedTokens: 150,
85
+ * priority: 10,
86
+ * });
87
+ *
88
+ * // Before each request, process tools
89
+ * const contextState = contextManager.getState('openai', 'gpt-4o', messages);
90
+ * const result = autoMode.processForRequest(contextState);
91
+ *
92
+ * // Use result.includedTools for this request
93
+ * if (result.hadDeferrals) {
94
+ * console.log(result.deferralMessage);
95
+ * }
96
+ * ```
97
+ */
98
+ export declare class MCPAutoMode {
99
+ private config;
100
+ private readonly contextManager;
101
+ private readonly logger;
102
+ private toolRegistry;
103
+ private forcedIncludes;
104
+ /**
105
+ * Create a new MCPAutoMode instance.
106
+ *
107
+ * @param config - Partial configuration (merged with defaults)
108
+ * @param contextManager - ContextManager for token estimation
109
+ * @param logger - Logger instance for observability
110
+ */
111
+ constructor(config: Partial<MCPAutoModeConfig>, contextManager: ContextManager, logger: Logger);
112
+ /**
113
+ * Register a tool with its description.
114
+ *
115
+ * @param tool - Tool descriptor to register
116
+ */
117
+ registerTool(tool: ToolDescriptor): void;
118
+ /**
119
+ * Unregister a tool.
120
+ *
121
+ * @param name - Name of tool to unregister
122
+ */
123
+ unregisterTool(name: string): void;
124
+ /**
125
+ * Get all registered tools.
126
+ *
127
+ * @returns Array of all tool descriptors
128
+ */
129
+ getAllTools(): ToolDescriptor[];
130
+ /**
131
+ * Calculate total tokens for all tool descriptions.
132
+ *
133
+ * @returns Total estimated tokens
134
+ */
135
+ getTotalToolTokens(): number;
136
+ /**
137
+ * Process tools for a request given current context state.
138
+ * Returns which tools to include and which to defer.
139
+ *
140
+ * @param contextState - Current context state from ContextManager
141
+ * @param requestedTools - Optional list of specifically requested tool names
142
+ * @returns AutoModeResult with included/deferred tools
143
+ */
144
+ processForRequest(contextState: ContextState, requestedTools?: string[]): AutoModeResult;
145
+ /**
146
+ * Get deferred tool description on demand.
147
+ * (When user explicitly requests a deferred tool)
148
+ *
149
+ * @param name - Name of deferred tool
150
+ * @returns Tool descriptor if found, undefined otherwise
151
+ */
152
+ getDeferredToolDescription(name: string): ToolDescriptor | undefined;
153
+ /**
154
+ * Check if a specific tool is currently deferred.
155
+ *
156
+ * @param name - Tool name to check
157
+ * @returns True if tool is deferred
158
+ */
159
+ isDeferred(name: string): boolean;
160
+ /**
161
+ * Force include a deferred tool (user override).
162
+ * This tool will be included in subsequent requests until reset.
163
+ *
164
+ * @param name - Tool name to force include
165
+ */
166
+ forceInclude(name: string): void;
167
+ /**
168
+ * Reset all deferrals and force-includes.
169
+ */
170
+ resetDeferrals(): void;
171
+ /**
172
+ * Mark a tool as recently used (for recency-based prioritization).
173
+ *
174
+ * @param name - Tool name that was used
175
+ */
176
+ markToolUsed(name: string): void;
177
+ /**
178
+ * Get current configuration.
179
+ *
180
+ * @returns Current MCPAutoModeConfig
181
+ */
182
+ getConfig(): MCPAutoModeConfig;
183
+ /**
184
+ * Update configuration.
185
+ *
186
+ * @param config - Partial configuration to merge
187
+ */
188
+ updateConfig(config: Partial<MCPAutoModeConfig>): void;
189
+ /**
190
+ * Sort tools by priority for inclusion decisions.
191
+ *
192
+ * Priority order:
193
+ * 1. Tools in alwaysInclude
194
+ * 2. Tools explicitly requested for this call
195
+ * 3. Tools that were force-included by user
196
+ * 4. Recently used tools
197
+ * 5. Tools with higher priority scores
198
+ * 6. Other tools
199
+ * 7. Tools in alwaysDefer (lowest priority)
200
+ */
201
+ private getSortedTools;
202
+ /**
203
+ * Calculate total tokens saved by deferring tools.
204
+ */
205
+ private calculateTokensSaved;
206
+ /**
207
+ * Estimate token count for a tool based on its description.
208
+ * Uses the context manager's estimation logic.
209
+ */
210
+ private estimateToolTokens;
211
+ }
212
+ /**
213
+ * Create an MCPAutoMode instance.
214
+ *
215
+ * @param config - Partial configuration (merged with defaults)
216
+ * @param contextManager - ContextManager instance
217
+ * @param logger - Logger instance
218
+ * @returns Configured MCPAutoMode instance
219
+ */
220
+ export declare function createMCPAutoMode(config: Partial<MCPAutoModeConfig>, contextManager: ContextManager, logger: Logger): MCPAutoMode;
221
+ //# sourceMappingURL=auto-mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-mode.d.ts","sourceRoot":"","sources":["../../src/mcp/auto-mode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAMjF;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,wEAAwE;IACxE,yBAAyB,EAAE,MAAM,CAAC;IAClC,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,gEAAgE;IAChE,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,eAAe,EAAE,MAAM,CAAC;IACxB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,uCAAuC;IACvC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,+BAA+B;IAC/B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,YAAY,EAAE,OAAO,CAAC;IACtB,kDAAkD;IAClD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAkBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,YAAY,CAA0C;IAC9D,OAAO,CAAC,cAAc,CAA0B;IAEhD;;;;;;OAMG;gBAED,MAAM,EAAE,OAAO,CAAC,iBAAiB,CAAC,EAClC,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,MAAM;IAwBhB;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IA0BxC;;;;OAIG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQlC;;;;OAIG;IACH,WAAW,IAAI,cAAc,EAAE;IAI/B;;;;OAIG;IACH,kBAAkB,IAAI,MAAM;IAY5B;;;;;;;OAOG;IACH,iBAAiB,CACf,YAAY,EAAE,YAAY,EAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,GACxB,cAAc;IA2FjB;;;;;;OAMG;IACH,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IASpE;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAahC;;OAEG;IACH,cAAc,IAAI,IAAI;IAQtB;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAWhC;;;;OAIG;IACH,SAAS,IAAI,iBAAiB;IAI9B;;;;OAIG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAmBtD;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,cAAc;IAuDtB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;CAS3B;AAMD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,OAAO,CAAC,iBAAiB,CAAC,EAClC,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,MAAM,GACb,WAAW,CAEb"}