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,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hooks Module
|
|
3
|
+
*
|
|
4
|
+
* Exports the hooks system for Agent Foundry.
|
|
5
|
+
* Allows custom code to run in response to events during agent execution.
|
|
6
|
+
*/
|
|
7
|
+
export * from './types.js';
|
|
8
|
+
export { HookManager } from './hook-manager.js';
|
|
9
|
+
export { HookExecutor } from './hook-executor.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hooks Module
|
|
3
|
+
*
|
|
4
|
+
* Exports the hooks system for Agent Foundry.
|
|
5
|
+
* Allows custom code to run in response to events during agent execution.
|
|
6
|
+
*/
|
|
7
|
+
export * from './types.js';
|
|
8
|
+
export { HookManager } from './hook-manager.js';
|
|
9
|
+
export { HookExecutor } from './hook-executor.js';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -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 = "
|
|
5
|
+
export declare const VERSION = "2.1.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 = "
|
|
6
|
+
export const VERSION = "2.1.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":"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"}
|