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
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* designer role with a structured design review task.
|
|
7
7
|
*/
|
|
8
8
|
import { z } from "zod";
|
|
9
|
+
import { isSessionDelegation } from "../../types.js";
|
|
9
10
|
// ============================================================================
|
|
10
11
|
// Constants
|
|
11
12
|
// ============================================================================
|
|
@@ -113,6 +114,39 @@ function formatDesignFeedbackResponse(response, reviewType) {
|
|
|
113
114
|
.join("\n");
|
|
114
115
|
return header + meta + content;
|
|
115
116
|
}
|
|
117
|
+
/**
|
|
118
|
+
* Format a session delegation response for MCP output.
|
|
119
|
+
*
|
|
120
|
+
* @param delegation - The session delegation response from the provider
|
|
121
|
+
* @returns Formatted string with delegation instructions
|
|
122
|
+
*/
|
|
123
|
+
function formatDelegationResponse(delegation) {
|
|
124
|
+
return `## Session Delegation
|
|
125
|
+
|
|
126
|
+
This request is being delegated to the current Claude session.
|
|
127
|
+
|
|
128
|
+
**Role**: ${delegation.role}
|
|
129
|
+
**Model Requested**: ${delegation.model || "default"}
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
### Instructions
|
|
134
|
+
|
|
135
|
+
${delegation.instructions}
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
### System Prompt to Apply
|
|
140
|
+
|
|
141
|
+
\`\`\`
|
|
142
|
+
${delegation.system_prompt}
|
|
143
|
+
\`\`\`
|
|
144
|
+
|
|
145
|
+
### Task to Execute
|
|
146
|
+
|
|
147
|
+
${delegation.task}
|
|
148
|
+
`.trim();
|
|
149
|
+
}
|
|
116
150
|
// ============================================================================
|
|
117
151
|
// Tool Registration
|
|
118
152
|
// ============================================================================
|
|
@@ -168,18 +202,38 @@ export function registerDesignFeedbackTool(server, router, logger) {
|
|
|
168
202
|
: { role: "designer", task };
|
|
169
203
|
const response = await router.invokeAgent(invokeInput);
|
|
170
204
|
const durationMs = Date.now() - startTime;
|
|
205
|
+
// Handle session delegation responses
|
|
206
|
+
if (isSessionDelegation(response)) {
|
|
207
|
+
logger.info("design_feedback delegated to session", {
|
|
208
|
+
reviewType: type ?? "general",
|
|
209
|
+
model: response.model,
|
|
210
|
+
durationMs,
|
|
211
|
+
});
|
|
212
|
+
return {
|
|
213
|
+
content: [
|
|
214
|
+
{
|
|
215
|
+
type: "text",
|
|
216
|
+
text: formatDelegationResponse(response),
|
|
217
|
+
},
|
|
218
|
+
],
|
|
219
|
+
isError: false,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
// After session delegation check, response is AgentResponse
|
|
223
|
+
const agentResponse = response;
|
|
224
|
+
// Handle normal completion responses
|
|
171
225
|
logger.info("design_feedback completed", {
|
|
172
226
|
reviewType: type ?? "general",
|
|
173
|
-
provider:
|
|
174
|
-
model:
|
|
227
|
+
provider: agentResponse.provider,
|
|
228
|
+
model: agentResponse.model,
|
|
175
229
|
durationMs,
|
|
176
|
-
traceId:
|
|
230
|
+
traceId: agentResponse.metadata.traceId,
|
|
177
231
|
});
|
|
178
232
|
return {
|
|
179
233
|
content: [
|
|
180
234
|
{
|
|
181
235
|
type: "text",
|
|
182
|
-
text: formatDesignFeedbackResponse(
|
|
236
|
+
text: formatDesignFeedbackResponse(agentResponse, type),
|
|
183
237
|
},
|
|
184
238
|
],
|
|
185
239
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design-feedback.js","sourceRoot":"","sources":["../../../src/mcp/tools/design-feedback.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"design-feedback.js","sourceRoot":"","sources":["../../../src/mcp/tools/design-feedback.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invoke-agent.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/invoke-agent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;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":"invoke-agent.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/invoke-agent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;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;AAwH3D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,GACb,IAAI,CAkGN"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* Available roles: coder, critic, designer, researcher, reviewer
|
|
6
6
|
*/
|
|
7
7
|
import { z } from "zod";
|
|
8
|
+
import { isSessionDelegation } from "../../types.js";
|
|
8
9
|
// ============================================================================
|
|
9
10
|
// Constants
|
|
10
11
|
// ============================================================================
|
|
@@ -15,7 +16,13 @@ const AGENT_ROLES = ["coder", "critic", "designer", "orchestrator", "researcher"
|
|
|
15
16
|
/**
|
|
16
17
|
* Tool description for invoke_agent
|
|
17
18
|
*/
|
|
18
|
-
const TOOL_DESCRIPTION =
|
|
19
|
+
const TOOL_DESCRIPTION = `Invoke a specialized AI agent for a specific task.
|
|
20
|
+
|
|
21
|
+
When configured with session mode (for Claude Code users), this tool returns
|
|
22
|
+
delegation instructions instead of making an API call. The current session
|
|
23
|
+
should follow the instructions to complete the task.
|
|
24
|
+
|
|
25
|
+
Available roles: coder (code generation), critic (plan review, assumption challenging), designer (UI/UX feedback), orchestrator (task synthesis, document improvement), researcher (fact-finding), reviewer (code review).`;
|
|
19
26
|
// ============================================================================
|
|
20
27
|
// Input Schema
|
|
21
28
|
// ============================================================================
|
|
@@ -51,6 +58,44 @@ function formatAgentResponse(response) {
|
|
|
51
58
|
.join("\n");
|
|
52
59
|
return header + meta + content;
|
|
53
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Format a session delegation response for MCP output.
|
|
63
|
+
* This instructs the current Claude session to handle the request.
|
|
64
|
+
*
|
|
65
|
+
* @param delegation - The session delegation response from the provider
|
|
66
|
+
* @returns Formatted string with delegation instructions
|
|
67
|
+
*/
|
|
68
|
+
function formatDelegationResponse(delegation) {
|
|
69
|
+
const contextSection = delegation.context
|
|
70
|
+
? `### Additional Context\n\n${delegation.context}\n\n`
|
|
71
|
+
: "";
|
|
72
|
+
return `## Session Delegation
|
|
73
|
+
|
|
74
|
+
This request is being delegated to the current Claude session.
|
|
75
|
+
|
|
76
|
+
**Role**: ${delegation.role}
|
|
77
|
+
**Model Requested**: ${delegation.model || "default"}
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
### Instructions
|
|
82
|
+
|
|
83
|
+
${delegation.instructions}
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
### System Prompt to Apply
|
|
88
|
+
|
|
89
|
+
\`\`\`
|
|
90
|
+
${delegation.system_prompt}
|
|
91
|
+
\`\`\`
|
|
92
|
+
|
|
93
|
+
### Task to Execute
|
|
94
|
+
|
|
95
|
+
${delegation.task}
|
|
96
|
+
|
|
97
|
+
${contextSection}`.trim();
|
|
98
|
+
}
|
|
54
99
|
// ============================================================================
|
|
55
100
|
// Tool Registration
|
|
56
101
|
// ============================================================================
|
|
@@ -93,6 +138,24 @@ export function registerInvokeAgentTool(server, router, logger) {
|
|
|
93
138
|
const invokeInput = context !== undefined ? { role, task, context } : { role, task };
|
|
94
139
|
const response = await router.invokeAgent(invokeInput);
|
|
95
140
|
const durationMs = Date.now() - startTime;
|
|
141
|
+
// Handle session delegation responses
|
|
142
|
+
if (isSessionDelegation(response)) {
|
|
143
|
+
logger.info("invoke_agent delegated to session", {
|
|
144
|
+
role,
|
|
145
|
+
model: response.model,
|
|
146
|
+
durationMs,
|
|
147
|
+
});
|
|
148
|
+
return {
|
|
149
|
+
content: [
|
|
150
|
+
{
|
|
151
|
+
type: "text",
|
|
152
|
+
text: formatDelegationResponse(response),
|
|
153
|
+
},
|
|
154
|
+
],
|
|
155
|
+
isError: false,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
// Handle normal completion responses
|
|
96
159
|
logger.info("invoke_agent completed", {
|
|
97
160
|
role,
|
|
98
161
|
provider: response.provider,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invoke-agent.js","sourceRoot":"","sources":["../../../src/mcp/tools/invoke-agent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"invoke-agent.js","sourceRoot":"","sources":["../../../src/mcp/tools/invoke-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-code.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/review-code.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;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":"review-code.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/review-code.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;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;AA+I3D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,GACb,IAAI,CAwGN"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* This is a shorthand for invoking the 'reviewer' role with code-specific formatting.
|
|
6
6
|
*/
|
|
7
7
|
import { z } from "zod";
|
|
8
|
+
import { isSessionDelegation } from "../../types.js";
|
|
8
9
|
// ============================================================================
|
|
9
10
|
// Constants
|
|
10
11
|
// ============================================================================
|
|
@@ -49,6 +50,39 @@ function formatCodeReviewResponse(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
|
// Task Builder
|
|
54
88
|
// ============================================================================
|
|
@@ -125,17 +159,36 @@ export function registerReviewCodeTool(server, router, logger) {
|
|
|
125
159
|
task: taskString,
|
|
126
160
|
});
|
|
127
161
|
const durationMs = Date.now() - startTime;
|
|
162
|
+
// Handle session delegation responses
|
|
163
|
+
if (isSessionDelegation(response)) {
|
|
164
|
+
logger.info("review_code delegated to session", {
|
|
165
|
+
model: response.model,
|
|
166
|
+
durationMs,
|
|
167
|
+
});
|
|
168
|
+
return {
|
|
169
|
+
content: [
|
|
170
|
+
{
|
|
171
|
+
type: "text",
|
|
172
|
+
text: formatDelegationResponse(response),
|
|
173
|
+
},
|
|
174
|
+
],
|
|
175
|
+
isError: false,
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
// After session delegation check, response is AgentResponse
|
|
179
|
+
const agentResponse = response;
|
|
180
|
+
// Handle normal completion responses
|
|
128
181
|
logger.info("review_code completed", {
|
|
129
|
-
provider:
|
|
130
|
-
model:
|
|
182
|
+
provider: agentResponse.provider,
|
|
183
|
+
model: agentResponse.model,
|
|
131
184
|
durationMs,
|
|
132
|
-
traceId:
|
|
185
|
+
traceId: agentResponse.metadata.traceId,
|
|
133
186
|
});
|
|
134
187
|
return {
|
|
135
188
|
content: [
|
|
136
189
|
{
|
|
137
190
|
type: "text",
|
|
138
|
-
text: formatCodeReviewResponse(
|
|
191
|
+
text: formatCodeReviewResponse(agentResponse),
|
|
139
192
|
},
|
|
140
193
|
],
|
|
141
194
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-code.js","sourceRoot":"","sources":["../../../src/mcp/tools/review-code.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"review-code.js","sourceRoot":"","sources":["../../../src/mcp/tools/review-code.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* delete_task MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Deletes a task from the state coordinator and optionally cleans up
|
|
5
|
+
* any associated worktree resources.
|
|
6
|
+
*/
|
|
7
|
+
import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
8
|
+
import type { Logger } from "../../../observability/logger.js";
|
|
9
|
+
import type { TaskCoordinator } from "../../../tasks/coordinator.js";
|
|
10
|
+
/**
|
|
11
|
+
* Registers the delete_task tool with the MCP server
|
|
12
|
+
*
|
|
13
|
+
* @param server - MCP server instance
|
|
14
|
+
* @param coordinator - TaskCoordinator for task lifecycle management
|
|
15
|
+
* @param logger - Logger instance for structured logging
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const server = new McpServer({ name: 'agent-foundry', version: '1.0.0' });
|
|
20
|
+
* const coordinator = new TaskCoordinator({ logger });
|
|
21
|
+
* registerDeleteTaskTool(server, coordinator, logger);
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare function registerDeleteTaskTool(server: McpServer, coordinator: TaskCoordinator, logger: Logger): void;
|
|
25
|
+
//# sourceMappingURL=delete-task.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-task.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/tasks/delete-task.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,+BAA+B,CAAC;AAsFvF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,eAAe,EAC5B,MAAM,EAAE,MAAM,GACb,IAAI,CAkFN"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* delete_task MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Deletes a task from the state coordinator and optionally cleans up
|
|
5
|
+
* any associated worktree resources.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// Constants
|
|
10
|
+
// ============================================================================
|
|
11
|
+
/**
|
|
12
|
+
* Tool description for delete_task
|
|
13
|
+
*/
|
|
14
|
+
const TOOL_DESCRIPTION = "Delete a task from the state coordinator. " +
|
|
15
|
+
"By default, running tasks cannot be deleted unless force is set to true. " +
|
|
16
|
+
"Optionally cleans up any associated git worktree.";
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// Input Schema
|
|
19
|
+
// ============================================================================
|
|
20
|
+
/**
|
|
21
|
+
* Zod schema shape for delete_task input validation.
|
|
22
|
+
*/
|
|
23
|
+
const deleteTaskInputSchemaShape = {
|
|
24
|
+
taskId: z.string().min(1).describe("The task ID to delete"),
|
|
25
|
+
force: z
|
|
26
|
+
.boolean()
|
|
27
|
+
.optional()
|
|
28
|
+
.default(false)
|
|
29
|
+
.describe("Force deletion even if the task is currently running (default: false)"),
|
|
30
|
+
deleteWorktree: z
|
|
31
|
+
.boolean()
|
|
32
|
+
.optional()
|
|
33
|
+
.default(true)
|
|
34
|
+
.describe("Delete the associated worktree if one exists (default: true)"),
|
|
35
|
+
reason: z
|
|
36
|
+
.string()
|
|
37
|
+
.optional()
|
|
38
|
+
.describe("Optional reason for deletion (logged for audit purposes)"),
|
|
39
|
+
};
|
|
40
|
+
// ============================================================================
|
|
41
|
+
// Response Formatter
|
|
42
|
+
// ============================================================================
|
|
43
|
+
/**
|
|
44
|
+
* Formats the task deletion response for MCP text output
|
|
45
|
+
*/
|
|
46
|
+
function formatDeleteTaskResponse(taskId, result, reason) {
|
|
47
|
+
if (!result.success) {
|
|
48
|
+
return (`## Task Deletion Failed\n\n` +
|
|
49
|
+
`**Task ID:** ${taskId}\n` +
|
|
50
|
+
`**Error:** ${result.error ?? "Unknown error"}\n`);
|
|
51
|
+
}
|
|
52
|
+
let response = `## Task Deleted Successfully\n\n` +
|
|
53
|
+
`**Task ID:** ${taskId}\n` +
|
|
54
|
+
`**Task Removed:** ${result.taskDeleted ? "Yes" : "No"}\n` +
|
|
55
|
+
`**Worktree Removed:** ${result.worktreeDeleted ? "Yes" : "No"}\n`;
|
|
56
|
+
if (reason) {
|
|
57
|
+
response += `**Reason:** ${reason}\n`;
|
|
58
|
+
}
|
|
59
|
+
return response;
|
|
60
|
+
}
|
|
61
|
+
// ============================================================================
|
|
62
|
+
// Tool Registration
|
|
63
|
+
// ============================================================================
|
|
64
|
+
/**
|
|
65
|
+
* Registers the delete_task tool with the MCP server
|
|
66
|
+
*
|
|
67
|
+
* @param server - MCP server instance
|
|
68
|
+
* @param coordinator - TaskCoordinator for task lifecycle management
|
|
69
|
+
* @param logger - Logger instance for structured logging
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```typescript
|
|
73
|
+
* const server = new McpServer({ name: 'agent-foundry', version: '1.0.0' });
|
|
74
|
+
* const coordinator = new TaskCoordinator({ logger });
|
|
75
|
+
* registerDeleteTaskTool(server, coordinator, logger);
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
export function registerDeleteTaskTool(server, coordinator, logger) {
|
|
79
|
+
// Use type assertion to work around Zod version compatibility issues
|
|
80
|
+
/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment */
|
|
81
|
+
const inputSchema = deleteTaskInputSchemaShape;
|
|
82
|
+
server.registerTool("delete_task", {
|
|
83
|
+
title: "Delete Task",
|
|
84
|
+
description: TOOL_DESCRIPTION,
|
|
85
|
+
inputSchema,
|
|
86
|
+
},
|
|
87
|
+
/* eslint-enable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment */
|
|
88
|
+
async (args) => {
|
|
89
|
+
const { taskId, force, deleteWorktree, reason } = args;
|
|
90
|
+
logger.info("delete_task called", {
|
|
91
|
+
taskId,
|
|
92
|
+
force,
|
|
93
|
+
deleteWorktree,
|
|
94
|
+
reason,
|
|
95
|
+
});
|
|
96
|
+
try {
|
|
97
|
+
const result = await coordinator.deleteTask(taskId, {
|
|
98
|
+
force,
|
|
99
|
+
deleteWorktree,
|
|
100
|
+
reason,
|
|
101
|
+
});
|
|
102
|
+
if (result.success) {
|
|
103
|
+
logger.info("delete_task completed", {
|
|
104
|
+
taskId,
|
|
105
|
+
taskDeleted: result.taskDeleted,
|
|
106
|
+
worktreeDeleted: result.worktreeDeleted,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
logger.warn("delete_task failed", {
|
|
111
|
+
taskId,
|
|
112
|
+
error: result.error,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
content: [
|
|
117
|
+
{
|
|
118
|
+
type: "text",
|
|
119
|
+
text: formatDeleteTaskResponse(taskId, result, reason),
|
|
120
|
+
},
|
|
121
|
+
],
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
126
|
+
logger.error("delete_task failed with exception", {
|
|
127
|
+
taskId,
|
|
128
|
+
error: error instanceof Error ? error : undefined,
|
|
129
|
+
errorMessage,
|
|
130
|
+
});
|
|
131
|
+
return {
|
|
132
|
+
content: [
|
|
133
|
+
{
|
|
134
|
+
type: "text",
|
|
135
|
+
text: formatDeleteTaskResponse(taskId, {
|
|
136
|
+
success: false,
|
|
137
|
+
taskDeleted: false,
|
|
138
|
+
worktreeDeleted: false,
|
|
139
|
+
error: errorMessage,
|
|
140
|
+
}, reason),
|
|
141
|
+
},
|
|
142
|
+
],
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
logger.debug("Registered delete_task tool");
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=delete-task.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-task.js","sourceRoot":"","sources":["../../../../src/mcp/tools/tasks/delete-task.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-task.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/tasks/execute-task.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"execute-task.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/tasks/execute-task.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAyNrE;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,eAAe,EAC5B,MAAM,EAAE,MAAM,EACd,eAAe,CAAC,EAAE,eAAe,GAChC,IAAI,CA8NN"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { z } from "zod";
|
|
9
9
|
import { roleNeedsWorktree } from "../../../config/worktree-defaults.js";
|
|
10
|
+
import { isSessionDelegation } from "../../../types.js";
|
|
10
11
|
import { injectWorktreeContext } from "../../../worktrees/instructions.js";
|
|
11
12
|
// ============================================================================
|
|
12
13
|
// Constants
|
|
@@ -86,6 +87,53 @@ function formatTaskExecutionResponse(taskId, role, response, durationMs, autoCom
|
|
|
86
87
|
const agentResponse = `### Agent Response\n${content}`;
|
|
87
88
|
return header + meta + instructions + agentResponse;
|
|
88
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* Format a session delegation response for MCP output.
|
|
92
|
+
*
|
|
93
|
+
* @param taskId - The Claude Code task ID
|
|
94
|
+
* @param role - The agent role used
|
|
95
|
+
* @param delegation - The session delegation response from the provider
|
|
96
|
+
* @param durationMs - Execution duration in milliseconds
|
|
97
|
+
* @param worktreeInfo - Optional worktree information if one was allocated
|
|
98
|
+
* @returns Formatted string with delegation instructions
|
|
99
|
+
*/
|
|
100
|
+
function formatDelegationResponse(taskId, role, delegation, durationMs, worktreeInfo) {
|
|
101
|
+
let header = `## Session Delegation
|
|
102
|
+
|
|
103
|
+
This request is being delegated to the current Claude session.
|
|
104
|
+
|
|
105
|
+
**Task ID:** ${taskId}
|
|
106
|
+
**Role**: ${role}
|
|
107
|
+
**Model Requested**: ${delegation.model || "default"}
|
|
108
|
+
**Duration:** ${String(durationMs)}ms
|
|
109
|
+
`;
|
|
110
|
+
// Add worktree info if allocated
|
|
111
|
+
if (worktreeInfo?.allocated) {
|
|
112
|
+
header +=
|
|
113
|
+
`\n### Worktree Allocated\n` +
|
|
114
|
+
`**Path:** \`${worktreeInfo.path}\`\n` +
|
|
115
|
+
`**Branch:** \`${worktreeInfo.branch}\`\n`;
|
|
116
|
+
}
|
|
117
|
+
return `${header}
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
### Instructions
|
|
121
|
+
|
|
122
|
+
${delegation.instructions}
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
### System Prompt to Apply
|
|
127
|
+
|
|
128
|
+
\`\`\`
|
|
129
|
+
${delegation.system_prompt}
|
|
130
|
+
\`\`\`
|
|
131
|
+
|
|
132
|
+
### Task to Execute
|
|
133
|
+
|
|
134
|
+
${delegation.task}
|
|
135
|
+
`.trim();
|
|
136
|
+
}
|
|
89
137
|
/**
|
|
90
138
|
* Formats an error response for task execution failure
|
|
91
139
|
*
|
|
@@ -222,22 +270,43 @@ export function registerExecuteTaskTool(server, router, coordinator, logger, wor
|
|
|
222
270
|
// Invoke the agent through the router
|
|
223
271
|
const response = await router.invokeAgent(invokeInput);
|
|
224
272
|
const durationMs = Date.now() - startTime;
|
|
273
|
+
// Handle session delegation responses
|
|
274
|
+
if (isSessionDelegation(response)) {
|
|
275
|
+
logger.info("execute_task delegated to session", {
|
|
276
|
+
taskId,
|
|
277
|
+
role,
|
|
278
|
+
model: response.model,
|
|
279
|
+
durationMs,
|
|
280
|
+
worktreeAllocated: !!allocatedWorktree,
|
|
281
|
+
});
|
|
282
|
+
return {
|
|
283
|
+
content: [
|
|
284
|
+
{
|
|
285
|
+
type: "text",
|
|
286
|
+
text: formatDelegationResponse(taskId, role, response, durationMs, worktreeInfo),
|
|
287
|
+
},
|
|
288
|
+
],
|
|
289
|
+
isError: false,
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
// After session delegation check, response is AgentResponse
|
|
293
|
+
const agentResponse = response;
|
|
225
294
|
// Mark execution complete
|
|
226
|
-
coordinator.completeExecution(taskId,
|
|
295
|
+
coordinator.completeExecution(taskId, agentResponse);
|
|
227
296
|
logger.info("execute_task completed", {
|
|
228
297
|
taskId,
|
|
229
298
|
role,
|
|
230
|
-
provider:
|
|
231
|
-
model:
|
|
299
|
+
provider: agentResponse.provider,
|
|
300
|
+
model: agentResponse.model,
|
|
232
301
|
durationMs,
|
|
233
|
-
traceId:
|
|
302
|
+
traceId: agentResponse.metadata.traceId,
|
|
234
303
|
worktreeAllocated: !!allocatedWorktree,
|
|
235
304
|
});
|
|
236
305
|
return {
|
|
237
306
|
content: [
|
|
238
307
|
{
|
|
239
308
|
type: "text",
|
|
240
|
-
text: formatTaskExecutionResponse(taskId, role,
|
|
309
|
+
text: formatTaskExecutionResponse(taskId, role, agentResponse, durationMs, autoComplete, worktreeInfo),
|
|
241
310
|
},
|
|
242
311
|
],
|
|
243
312
|
};
|