mcp-agent-foundry 1.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.
- package/LICENSE +21 -0
- package/README.md +477 -0
- package/dist/cli/install-skills.d.ts +11 -0
- package/dist/cli/install-skills.d.ts.map +1 -0
- package/dist/cli/install-skills.js +143 -0
- package/dist/cli/install-skills.js.map +1 -0
- package/dist/cli/recovery-commands.d.ts +41 -0
- package/dist/cli/recovery-commands.d.ts.map +1 -0
- package/dist/cli/recovery-commands.js +241 -0
- package/dist/cli/recovery-commands.js.map +1 -0
- package/dist/cli/setup-wizard.d.ts +25 -0
- package/dist/cli/setup-wizard.d.ts.map +1 -0
- package/dist/cli/setup-wizard.js +1417 -0
- package/dist/cli/setup-wizard.js.map +1 -0
- package/dist/cli/test-connection.d.ts +45 -0
- package/dist/cli/test-connection.d.ts.map +1 -0
- package/dist/cli/test-connection.js +317 -0
- package/dist/cli/test-connection.js.map +1 -0
- package/dist/cli.d.ts +75 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +704 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/defaults.d.ts +57 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +99 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/index.d.ts +14 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +22 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/manager.d.ts +184 -0
- package/dist/config/manager.d.ts.map +1 -0
- package/dist/config/manager.js +347 -0
- package/dist/config/manager.js.map +1 -0
- package/dist/config/merger.d.ts +76 -0
- package/dist/config/merger.d.ts.map +1 -0
- package/dist/config/merger.js +189 -0
- package/dist/config/merger.js.map +1 -0
- package/dist/config/schema.d.ts +20 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +20 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/validator.d.ts +254 -0
- package/dist/config/validator.d.ts.map +1 -0
- package/dist/config/validator.js +363 -0
- package/dist/config/validator.js.map +1 -0
- package/dist/config/worktree-defaults.d.ts +23 -0
- package/dist/config/worktree-defaults.d.ts.map +1 -0
- package/dist/config/worktree-defaults.js +78 -0
- package/dist/config/worktree-defaults.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +44 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/tools/compare-agents.d.ts +25 -0
- package/dist/mcp/tools/compare-agents.d.ts.map +1 -0
- package/dist/mcp/tools/compare-agents.js +177 -0
- package/dist/mcp/tools/compare-agents.js.map +1 -0
- package/dist/mcp/tools/critique-plan.d.ts +26 -0
- package/dist/mcp/tools/critique-plan.d.ts.map +1 -0
- package/dist/mcp/tools/critique-plan.js +162 -0
- package/dist/mcp/tools/critique-plan.js.map +1 -0
- package/dist/mcp/tools/design-feedback.d.ts +26 -0
- package/dist/mcp/tools/design-feedback.d.ts.map +1 -0
- package/dist/mcp/tools/design-feedback.js +216 -0
- package/dist/mcp/tools/design-feedback.js.map +1 -0
- package/dist/mcp/tools/index.d.ts +50 -0
- package/dist/mcp/tools/index.d.ts.map +1 -0
- package/dist/mcp/tools/index.js +191 -0
- package/dist/mcp/tools/index.js.map +1 -0
- package/dist/mcp/tools/invoke-agent.d.ts +25 -0
- package/dist/mcp/tools/invoke-agent.d.ts.map +1 -0
- package/dist/mcp/tools/invoke-agent.js +141 -0
- package/dist/mcp/tools/invoke-agent.js.map +1 -0
- package/dist/mcp/tools/review-code.d.ts +25 -0
- package/dist/mcp/tools/review-code.d.ts.map +1 -0
- package/dist/mcp/tools/review-code.js +170 -0
- package/dist/mcp/tools/review-code.js.map +1 -0
- package/dist/mcp/tools/tasks/claim-next-task.d.ts +22 -0
- package/dist/mcp/tools/tasks/claim-next-task.d.ts.map +1 -0
- package/dist/mcp/tools/tasks/claim-next-task.js +203 -0
- package/dist/mcp/tools/tasks/claim-next-task.js.map +1 -0
- package/dist/mcp/tools/tasks/create-routed-task.d.ts +17 -0
- package/dist/mcp/tools/tasks/create-routed-task.d.ts.map +1 -0
- package/dist/mcp/tools/tasks/create-routed-task.js +178 -0
- package/dist/mcp/tools/tasks/create-routed-task.js.map +1 -0
- package/dist/mcp/tools/tasks/execute-pipeline.d.ts +22 -0
- package/dist/mcp/tools/tasks/execute-pipeline.d.ts.map +1 -0
- package/dist/mcp/tools/tasks/execute-pipeline.js +401 -0
- package/dist/mcp/tools/tasks/execute-pipeline.js.map +1 -0
- package/dist/mcp/tools/tasks/execute-task.d.ts +32 -0
- package/dist/mcp/tools/tasks/execute-task.d.ts.map +1 -0
- package/dist/mcp/tools/tasks/execute-task.js +284 -0
- package/dist/mcp/tools/tasks/execute-task.js.map +1 -0
- package/dist/mcp/tools/tasks/get-pipeline-status.d.ts +26 -0
- package/dist/mcp/tools/tasks/get-pipeline-status.d.ts.map +1 -0
- package/dist/mcp/tools/tasks/get-pipeline-status.js +460 -0
- package/dist/mcp/tools/tasks/get-pipeline-status.js.map +1 -0
- package/dist/mcp/tools/tasks/index.d.ts +36 -0
- package/dist/mcp/tools/tasks/index.d.ts.map +1 -0
- package/dist/mcp/tools/tasks/index.js +66 -0
- package/dist/mcp/tools/tasks/index.js.map +1 -0
- package/dist/mcp/tools/worktree/cleanup-worktrees.d.ts +17 -0
- package/dist/mcp/tools/worktree/cleanup-worktrees.d.ts.map +1 -0
- package/dist/mcp/tools/worktree/cleanup-worktrees.js +147 -0
- package/dist/mcp/tools/worktree/cleanup-worktrees.js.map +1 -0
- package/dist/mcp/tools/worktree/get-worktree-status.d.ts +17 -0
- package/dist/mcp/tools/worktree/get-worktree-status.d.ts.map +1 -0
- package/dist/mcp/tools/worktree/get-worktree-status.js +123 -0
- package/dist/mcp/tools/worktree/get-worktree-status.js.map +1 -0
- package/dist/mcp/tools/worktree/index.d.ts +41 -0
- package/dist/mcp/tools/worktree/index.d.ts.map +1 -0
- package/dist/mcp/tools/worktree/index.js +69 -0
- package/dist/mcp/tools/worktree/index.js.map +1 -0
- package/dist/mcp/tools/worktree/list-worktrees.d.ts +17 -0
- package/dist/mcp/tools/worktree/list-worktrees.d.ts.map +1 -0
- package/dist/mcp/tools/worktree/list-worktrees.js +136 -0
- package/dist/mcp/tools/worktree/list-worktrees.js.map +1 -0
- package/dist/mcp/tools/worktree/resolve-conflicts.d.ts +19 -0
- package/dist/mcp/tools/worktree/resolve-conflicts.d.ts.map +1 -0
- package/dist/mcp/tools/worktree/resolve-conflicts.js +228 -0
- package/dist/mcp/tools/worktree/resolve-conflicts.js.map +1 -0
- package/dist/mcp/transport/stdio.d.ts +13 -0
- package/dist/mcp/transport/stdio.d.ts.map +1 -0
- package/dist/mcp/transport/stdio.js +15 -0
- package/dist/mcp/transport/stdio.js.map +1 -0
- package/dist/observability/logger.d.ts +137 -0
- package/dist/observability/logger.d.ts.map +1 -0
- package/dist/observability/logger.js +235 -0
- package/dist/observability/logger.js.map +1 -0
- package/dist/observability/metrics.d.ts +250 -0
- package/dist/observability/metrics.d.ts.map +1 -0
- package/dist/observability/metrics.js +364 -0
- package/dist/observability/metrics.js.map +1 -0
- package/dist/persistence/index.d.ts +9 -0
- package/dist/persistence/index.d.ts.map +1 -0
- package/dist/persistence/index.js +9 -0
- package/dist/persistence/index.js.map +1 -0
- package/dist/persistence/state-schema.d.ts +116 -0
- package/dist/persistence/state-schema.d.ts.map +1 -0
- package/dist/persistence/state-schema.js +28 -0
- package/dist/persistence/state-schema.js.map +1 -0
- package/dist/persistence/state-store.d.ts +111 -0
- package/dist/persistence/state-store.d.ts.map +1 -0
- package/dist/persistence/state-store.js +291 -0
- package/dist/persistence/state-store.js.map +1 -0
- package/dist/providers/anthropic.d.ts +164 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +500 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/base.d.ts +151 -0
- package/dist/providers/base.d.ts.map +1 -0
- package/dist/providers/base.js +227 -0
- package/dist/providers/base.js.map +1 -0
- package/dist/providers/gemini.d.ts +85 -0
- package/dist/providers/gemini.d.ts.map +1 -0
- package/dist/providers/gemini.js +414 -0
- package/dist/providers/gemini.js.map +1 -0
- package/dist/providers/kimi.d.ts +19 -0
- package/dist/providers/kimi.d.ts.map +1 -0
- package/dist/providers/kimi.js +20 -0
- package/dist/providers/kimi.js.map +1 -0
- package/dist/providers/manager.d.ts +160 -0
- package/dist/providers/manager.d.ts.map +1 -0
- package/dist/providers/manager.js +264 -0
- package/dist/providers/manager.js.map +1 -0
- package/dist/providers/ollama.d.ts +83 -0
- package/dist/providers/ollama.d.ts.map +1 -0
- package/dist/providers/ollama.js +453 -0
- package/dist/providers/ollama.js.map +1 -0
- package/dist/providers/openai.d.ts +96 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +457 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/providers/zai.d.ts +19 -0
- package/dist/providers/zai.d.ts.map +1 -0
- package/dist/providers/zai.js +20 -0
- package/dist/providers/zai.js.map +1 -0
- package/dist/router/context-manager.d.ts +2 -0
- package/dist/router/context-manager.d.ts.map +1 -0
- package/dist/router/context-manager.js +3 -0
- package/dist/router/context-manager.js.map +1 -0
- package/dist/router/engine.d.ts +169 -0
- package/dist/router/engine.d.ts.map +1 -0
- package/dist/router/engine.js +435 -0
- package/dist/router/engine.js.map +1 -0
- package/dist/router/pattern-executor.d.ts +317 -0
- package/dist/router/pattern-executor.d.ts.map +1 -0
- package/dist/router/pattern-executor.js +571 -0
- package/dist/router/pattern-executor.js.map +1 -0
- package/dist/router/role-resolver.d.ts +59 -0
- package/dist/router/role-resolver.d.ts.map +1 -0
- package/dist/router/role-resolver.js +95 -0
- package/dist/router/role-resolver.js.map +1 -0
- package/dist/server.d.ts +32 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +223 -0
- package/dist/server.js.map +1 -0
- package/dist/startup.d.ts +78 -0
- package/dist/startup.d.ts.map +1 -0
- package/dist/startup.js +107 -0
- package/dist/startup.js.map +1 -0
- package/dist/tasks/coordinator.d.ts +141 -0
- package/dist/tasks/coordinator.d.ts.map +1 -0
- package/dist/tasks/coordinator.js +331 -0
- package/dist/tasks/coordinator.js.map +1 -0
- package/dist/tasks/index.d.ts +13 -0
- package/dist/tasks/index.d.ts.map +1 -0
- package/dist/tasks/index.js +13 -0
- package/dist/tasks/index.js.map +1 -0
- package/dist/tasks/persistent-state-coordinator.d.ts +89 -0
- package/dist/tasks/persistent-state-coordinator.d.ts.map +1 -0
- package/dist/tasks/persistent-state-coordinator.js +371 -0
- package/dist/tasks/persistent-state-coordinator.js.map +1 -0
- package/dist/tasks/pipeline-manager.d.ts +103 -0
- package/dist/tasks/pipeline-manager.d.ts.map +1 -0
- package/dist/tasks/pipeline-manager.js +358 -0
- package/dist/tasks/pipeline-manager.js.map +1 -0
- package/dist/tasks/state-coordinator.d.ts +79 -0
- package/dist/tasks/state-coordinator.d.ts.map +1 -0
- package/dist/tasks/state-coordinator.js +200 -0
- package/dist/tasks/state-coordinator.js.map +1 -0
- package/dist/tasks/worker-mode.d.ts +65 -0
- package/dist/tasks/worker-mode.d.ts.map +1 -0
- package/dist/tasks/worker-mode.js +208 -0
- package/dist/tasks/worker-mode.js.map +1 -0
- package/dist/translation/errors.d.ts +203 -0
- package/dist/translation/errors.d.ts.map +1 -0
- package/dist/translation/errors.js +477 -0
- package/dist/translation/errors.js.map +1 -0
- package/dist/translation/index.d.ts +12 -0
- package/dist/translation/index.d.ts.map +1 -0
- package/dist/translation/index.js +32 -0
- package/dist/translation/index.js.map +1 -0
- package/dist/translation/messages.d.ts +295 -0
- package/dist/translation/messages.d.ts.map +1 -0
- package/dist/translation/messages.js +557 -0
- package/dist/translation/messages.js.map +1 -0
- package/dist/translation/streaming.d.ts +226 -0
- package/dist/translation/streaming.d.ts.map +1 -0
- package/dist/translation/streaming.js +520 -0
- package/dist/translation/streaming.js.map +1 -0
- package/dist/translation/tools.d.ts +209 -0
- package/dist/translation/tools.d.ts.map +1 -0
- package/dist/translation/tools.js +331 -0
- package/dist/translation/tools.js.map +1 -0
- package/dist/types.d.ts +747 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +86 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/circuit-breaker.d.ts +175 -0
- package/dist/utils/circuit-breaker.d.ts.map +1 -0
- package/dist/utils/circuit-breaker.js +315 -0
- package/dist/utils/circuit-breaker.js.map +1 -0
- package/dist/utils/env.d.ts +2 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/env.js +3 -0
- package/dist/utils/env.js.map +1 -0
- package/dist/utils/git.d.ts +58 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +197 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/index.d.ts +9 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +9 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/merge-ordering.d.ts +45 -0
- package/dist/utils/merge-ordering.d.ts.map +1 -0
- package/dist/utils/merge-ordering.js +128 -0
- package/dist/utils/merge-ordering.js.map +1 -0
- package/dist/utils/retry.d.ts +106 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +188 -0
- package/dist/utils/retry.js.map +1 -0
- package/dist/worktrees/branch-manager.d.ts +55 -0
- package/dist/worktrees/branch-manager.d.ts.map +1 -0
- package/dist/worktrees/branch-manager.js +129 -0
- package/dist/worktrees/branch-manager.js.map +1 -0
- package/dist/worktrees/conflict-handler.d.ts +72 -0
- package/dist/worktrees/conflict-handler.d.ts.map +1 -0
- package/dist/worktrees/conflict-handler.js +287 -0
- package/dist/worktrees/conflict-handler.js.map +1 -0
- package/dist/worktrees/conflict-parser.d.ts +28 -0
- package/dist/worktrees/conflict-parser.d.ts.map +1 -0
- package/dist/worktrees/conflict-parser.js +140 -0
- package/dist/worktrees/conflict-parser.js.map +1 -0
- package/dist/worktrees/index.d.ts +20 -0
- package/dist/worktrees/index.d.ts.map +1 -0
- package/dist/worktrees/index.js +20 -0
- package/dist/worktrees/index.js.map +1 -0
- package/dist/worktrees/instructions.d.ts +20 -0
- package/dist/worktrees/instructions.d.ts.map +1 -0
- package/dist/worktrees/instructions.js +84 -0
- package/dist/worktrees/instructions.js.map +1 -0
- package/dist/worktrees/manager.d.ts +76 -0
- package/dist/worktrees/manager.d.ts.map +1 -0
- package/dist/worktrees/manager.js +277 -0
- package/dist/worktrees/manager.js.map +1 -0
- package/dist/worktrees/pipeline-merge-orchestrator.d.ts +55 -0
- package/dist/worktrees/pipeline-merge-orchestrator.d.ts.map +1 -0
- package/dist/worktrees/pipeline-merge-orchestrator.js +221 -0
- package/dist/worktrees/pipeline-merge-orchestrator.js.map +1 -0
- package/dist/worktrees/pool.d.ts +95 -0
- package/dist/worktrees/pool.d.ts.map +1 -0
- package/dist/worktrees/pool.js +271 -0
- package/dist/worktrees/pool.js.map +1 -0
- package/dist/worktrees/recovery.d.ts +94 -0
- package/dist/worktrees/recovery.d.ts.map +1 -0
- package/dist/worktrees/recovery.js +371 -0
- package/dist/worktrees/recovery.js.map +1 -0
- package/dist/worktrees/resource-manager.d.ts +74 -0
- package/dist/worktrees/resource-manager.d.ts.map +1 -0
- package/dist/worktrees/resource-manager.js +228 -0
- package/dist/worktrees/resource-manager.js.map +1 -0
- package/package.json +88 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* execute_pipeline MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Creates multi-provider task pipelines with dependency resolution.
|
|
5
|
+
* Validates DAG structure and generates TaskCreate instructions for Claude.
|
|
6
|
+
* Automatically allocates isolated git worktrees for coding roles and
|
|
7
|
+
* handles merging in dependency order when the pipeline completes.
|
|
8
|
+
*/
|
|
9
|
+
import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
10
|
+
import type { Logger } from "../../../observability/logger.js";
|
|
11
|
+
import { PipelineManager } from "../../../tasks/pipeline-manager.js";
|
|
12
|
+
import type { WorktreeManager } from "../../../worktrees/manager.js";
|
|
13
|
+
/**
|
|
14
|
+
* Registers the execute_pipeline tool with the MCP server.
|
|
15
|
+
*
|
|
16
|
+
* @param server - MCP server instance
|
|
17
|
+
* @param pipelineManager - PipelineManager for validation and execution tracking
|
|
18
|
+
* @param logger - Logger instance for structured logging
|
|
19
|
+
* @param worktreeManager - Optional WorktreeManager for git worktree allocation
|
|
20
|
+
*/
|
|
21
|
+
export declare function registerExecutePipelineTool(server: McpServer, pipelineManager: PipelineManager, logger: Logger, worktreeManager?: WorktreeManager): void;
|
|
22
|
+
//# sourceMappingURL=execute-pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute-pipeline.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/tasks/execute-pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAOrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AA+SrE;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,SAAS,EACjB,eAAe,EAAE,eAAe,EAChC,MAAM,EAAE,MAAM,EACd,eAAe,CAAC,EAAE,eAAe,GAChC,IAAI,CAmNN"}
|
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* execute_pipeline MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Creates multi-provider task pipelines with dependency resolution.
|
|
5
|
+
* Validates DAG structure and generates TaskCreate instructions for Claude.
|
|
6
|
+
* Automatically allocates isolated git worktrees for coding roles and
|
|
7
|
+
* handles merging in dependency order when the pipeline completes.
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import { roleNeedsWorktree } from "../../../config/worktree-defaults.js";
|
|
11
|
+
import { injectWorktreeContext } from "../../../worktrees/instructions.js";
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// Constants
|
|
14
|
+
// ============================================================================
|
|
15
|
+
/**
|
|
16
|
+
* Available agent roles for pipeline steps
|
|
17
|
+
*/
|
|
18
|
+
const AGENT_ROLES = ["coder", "critic", "designer", "researcher", "reviewer"];
|
|
19
|
+
/**
|
|
20
|
+
* Tool description for execute_pipeline
|
|
21
|
+
*/
|
|
22
|
+
const TOOL_DESCRIPTION = "Create a multi-provider task pipeline with dependency resolution. " +
|
|
23
|
+
"Validates the DAG structure (no cycles, valid dependencies) and generates " +
|
|
24
|
+
"TaskCreate instructions for Claude to execute. Steps can run in parallel " +
|
|
25
|
+
"when their dependencies are satisfied. " +
|
|
26
|
+
"For coder/developer roles, isolated git worktrees are automatically allocated. " +
|
|
27
|
+
"When all steps complete, worktrees are merged in dependency order.";
|
|
28
|
+
// ============================================================================
|
|
29
|
+
// Input Schema
|
|
30
|
+
// ============================================================================
|
|
31
|
+
/**
|
|
32
|
+
* Zod schema shape for execute_pipeline input validation.
|
|
33
|
+
* Uses raw shape format as expected by MCP SDK's registerTool.
|
|
34
|
+
*/
|
|
35
|
+
const executePipelineInputSchemaShape = {
|
|
36
|
+
name: z.string().min(1).describe("Pipeline name for identification"),
|
|
37
|
+
steps: z
|
|
38
|
+
.array(z.object({
|
|
39
|
+
name: z.string().min(1).describe("Unique step identifier within the pipeline"),
|
|
40
|
+
subject: z.string().min(1).describe("Task subject line (imperative form)"),
|
|
41
|
+
description: z.string().optional().describe("Detailed task description"),
|
|
42
|
+
role: z.enum(AGENT_ROLES).describe("Agent role for this step"),
|
|
43
|
+
dependsOn: z
|
|
44
|
+
.array(z.string())
|
|
45
|
+
.optional()
|
|
46
|
+
.describe("Names of steps this step depends on"),
|
|
47
|
+
}))
|
|
48
|
+
.min(1)
|
|
49
|
+
.describe("Pipeline steps with dependencies"),
|
|
50
|
+
context: z
|
|
51
|
+
.string()
|
|
52
|
+
.optional()
|
|
53
|
+
.describe("Global context passed to all steps in the pipeline"),
|
|
54
|
+
parallel: z
|
|
55
|
+
.boolean()
|
|
56
|
+
.default(true)
|
|
57
|
+
.describe("Execute independent steps in parallel (default: true)"),
|
|
58
|
+
worktreeOptions: z
|
|
59
|
+
.object({
|
|
60
|
+
enabled: z
|
|
61
|
+
.boolean()
|
|
62
|
+
.default(true)
|
|
63
|
+
.describe("Enable worktree allocation for coding roles (default: true)"),
|
|
64
|
+
autoMerge: z
|
|
65
|
+
.boolean()
|
|
66
|
+
.default(true)
|
|
67
|
+
.describe("Automatically merge worktrees when pipeline completes (default: true)"),
|
|
68
|
+
targetBranch: z
|
|
69
|
+
.string()
|
|
70
|
+
.optional()
|
|
71
|
+
.describe("Target branch for merging (defaults to main)"),
|
|
72
|
+
})
|
|
73
|
+
.optional()
|
|
74
|
+
.describe("Worktree configuration for the pipeline"),
|
|
75
|
+
};
|
|
76
|
+
// ============================================================================
|
|
77
|
+
// Response Formatter
|
|
78
|
+
// ============================================================================
|
|
79
|
+
/**
|
|
80
|
+
* Computes execution phases for the pipeline based on dependencies.
|
|
81
|
+
* Steps in the same phase can run in parallel.
|
|
82
|
+
*
|
|
83
|
+
* @param steps - Pipeline steps with dependencies
|
|
84
|
+
* @returns Array of phases, each containing step names that can run in parallel
|
|
85
|
+
*/
|
|
86
|
+
function computeExecutionPhases(steps) {
|
|
87
|
+
const phases = [];
|
|
88
|
+
const completed = new Set();
|
|
89
|
+
const remaining = new Set(steps.map((s) => s.name));
|
|
90
|
+
while (remaining.size > 0) {
|
|
91
|
+
const phase = [];
|
|
92
|
+
for (const step of steps) {
|
|
93
|
+
if (!remaining.has(step.name))
|
|
94
|
+
continue;
|
|
95
|
+
const depsComplete = step.dependsOn?.every((dep) => completed.has(dep)) ?? true;
|
|
96
|
+
if (depsComplete) {
|
|
97
|
+
phase.push(step.name);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (phase.length === 0) {
|
|
101
|
+
// This shouldn't happen if validation passed, but handle gracefully
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
for (const stepName of phase) {
|
|
105
|
+
remaining.delete(stepName);
|
|
106
|
+
completed.add(stepName);
|
|
107
|
+
}
|
|
108
|
+
phases.push(phase);
|
|
109
|
+
}
|
|
110
|
+
return phases;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Formats the execution plan showing phases and parallelism.
|
|
114
|
+
*
|
|
115
|
+
* @param definition - The pipeline definition
|
|
116
|
+
* @param phases - Computed execution phases
|
|
117
|
+
* @param parallel - Whether parallel execution is enabled
|
|
118
|
+
* @returns Formatted execution plan string
|
|
119
|
+
*/
|
|
120
|
+
function formatExecutionPlan(definition, phases, parallel) {
|
|
121
|
+
const lines = [];
|
|
122
|
+
lines.push(`## Execution Plan: ${definition.name}`);
|
|
123
|
+
lines.push("");
|
|
124
|
+
lines.push(`**Mode**: ${parallel ? "Parallel" : "Sequential"}`);
|
|
125
|
+
lines.push(`**Total Steps**: ${definition.steps.length}`);
|
|
126
|
+
lines.push(`**Total Phases**: ${phases.length}`);
|
|
127
|
+
lines.push("");
|
|
128
|
+
for (let i = 0; i < phases.length; i++) {
|
|
129
|
+
const phase = phases[i] ?? [];
|
|
130
|
+
const parallelNote = parallel && phase.length > 1 ? ` (${phase.length} steps in parallel)` : "";
|
|
131
|
+
lines.push(`### Phase ${i + 1}${parallelNote}`);
|
|
132
|
+
for (const stepName of phase) {
|
|
133
|
+
const step = definition.steps.find((s) => s.name === stepName);
|
|
134
|
+
if (step) {
|
|
135
|
+
const deps = step.dependsOn?.length ? ` [depends on: ${step.dependsOn.join(", ")}]` : "";
|
|
136
|
+
lines.push(`- **${stepName}** (${step.role}): ${step.subject}${deps}`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
lines.push("");
|
|
140
|
+
}
|
|
141
|
+
return lines.join("\n");
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Formats the complete pipeline response including plan, instructions, and guidance.
|
|
145
|
+
*
|
|
146
|
+
* @param definition - The pipeline definition
|
|
147
|
+
* @param pipelineId - The pipeline ID
|
|
148
|
+
* @param taskInstructions - Generated TaskCreate instructions
|
|
149
|
+
* @param phases - Computed execution phases
|
|
150
|
+
* @param parallel - Whether parallel execution is enabled
|
|
151
|
+
* @param worktreeAllocations - Optional worktree allocations for coding steps
|
|
152
|
+
* @param autoMerge - Whether auto-merge is enabled
|
|
153
|
+
* @returns Complete formatted response
|
|
154
|
+
*/
|
|
155
|
+
function formatPipelineResponse(definition, pipelineId, taskInstructions, phases, parallel, worktreeAllocations, autoMerge) {
|
|
156
|
+
const lines = [];
|
|
157
|
+
// Execution plan
|
|
158
|
+
lines.push(formatExecutionPlan(definition, phases, parallel));
|
|
159
|
+
// Worktree allocations if any
|
|
160
|
+
if (worktreeAllocations && worktreeAllocations.length > 0) {
|
|
161
|
+
lines.push("---");
|
|
162
|
+
lines.push("");
|
|
163
|
+
lines.push("## Worktree Allocations");
|
|
164
|
+
lines.push("");
|
|
165
|
+
lines.push("The following coding steps have isolated git worktrees allocated:");
|
|
166
|
+
lines.push("");
|
|
167
|
+
for (const alloc of worktreeAllocations) {
|
|
168
|
+
lines.push(`### ${alloc.stepName}`);
|
|
169
|
+
lines.push(`- **Worktree ID**: \`${alloc.worktreeId}\``);
|
|
170
|
+
lines.push(`- **Path**: \`${alloc.path}\``);
|
|
171
|
+
lines.push(`- **Branch**: \`${alloc.branch}\``);
|
|
172
|
+
lines.push("");
|
|
173
|
+
}
|
|
174
|
+
if (autoMerge) {
|
|
175
|
+
lines.push("*Worktrees will be automatically merged in dependency order when all steps complete.*");
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
lines.push("*Auto-merge disabled. Use `merge_pipeline_worktrees` to merge manually.*");
|
|
179
|
+
}
|
|
180
|
+
lines.push("");
|
|
181
|
+
}
|
|
182
|
+
// TaskCreate instructions
|
|
183
|
+
lines.push("---");
|
|
184
|
+
lines.push("");
|
|
185
|
+
lines.push("## TaskCreate Instructions");
|
|
186
|
+
lines.push("");
|
|
187
|
+
lines.push("Execute the following to create all pipeline tasks:");
|
|
188
|
+
lines.push("");
|
|
189
|
+
lines.push("```");
|
|
190
|
+
lines.push(taskInstructions);
|
|
191
|
+
lines.push("```");
|
|
192
|
+
lines.push("");
|
|
193
|
+
// Next steps guidance
|
|
194
|
+
lines.push("---");
|
|
195
|
+
lines.push("");
|
|
196
|
+
lines.push("## Next Steps");
|
|
197
|
+
lines.push("");
|
|
198
|
+
const readySteps = phases[0] ?? [];
|
|
199
|
+
if (parallel && readySteps.length > 1) {
|
|
200
|
+
lines.push(`1. Execute TaskCreate for all steps above to create the task items`);
|
|
201
|
+
lines.push(`2. Start Phase 1 steps in parallel: ${readySteps.join(", ")}`);
|
|
202
|
+
lines.push(`3. As each phase completes, its dependent steps become ready`);
|
|
203
|
+
}
|
|
204
|
+
else if (readySteps.length > 0) {
|
|
205
|
+
lines.push(`1. Execute TaskCreate for all steps above to create the task items`);
|
|
206
|
+
lines.push(`2. Start with the first step: **${readySteps[0]}**`);
|
|
207
|
+
lines.push(`3. Proceed through steps as dependencies are satisfied`);
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
lines.push(`1. Execute TaskCreate for all steps above to create the task items`);
|
|
211
|
+
lines.push(`2. Proceed through steps as dependencies are satisfied`);
|
|
212
|
+
}
|
|
213
|
+
if (worktreeAllocations && worktreeAllocations.length > 0) {
|
|
214
|
+
lines.push(`4. When all steps complete, worktrees will be merged in dependency order`);
|
|
215
|
+
}
|
|
216
|
+
lines.push("");
|
|
217
|
+
lines.push(`**Pipeline ID**: \`${pipelineId}\``);
|
|
218
|
+
lines.push(`*Use this ID to track execution status and complete step results*`);
|
|
219
|
+
return lines.join("\n");
|
|
220
|
+
}
|
|
221
|
+
// ============================================================================
|
|
222
|
+
// Tool Registration
|
|
223
|
+
// ============================================================================
|
|
224
|
+
/**
|
|
225
|
+
* Registers the execute_pipeline tool with the MCP server.
|
|
226
|
+
*
|
|
227
|
+
* @param server - MCP server instance
|
|
228
|
+
* @param pipelineManager - PipelineManager for validation and execution tracking
|
|
229
|
+
* @param logger - Logger instance for structured logging
|
|
230
|
+
* @param worktreeManager - Optional WorktreeManager for git worktree allocation
|
|
231
|
+
*/
|
|
232
|
+
export function registerExecutePipelineTool(server, pipelineManager, logger, worktreeManager) {
|
|
233
|
+
// Use type assertion to work around Zod version compatibility issues
|
|
234
|
+
// between zod 3.25+ and the MCP SDK's ZodRawShapeCompat type
|
|
235
|
+
/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment */
|
|
236
|
+
const inputSchema = executePipelineInputSchemaShape;
|
|
237
|
+
server.registerTool("execute_pipeline", {
|
|
238
|
+
title: "Execute Pipeline",
|
|
239
|
+
description: TOOL_DESCRIPTION,
|
|
240
|
+
inputSchema,
|
|
241
|
+
},
|
|
242
|
+
/* eslint-enable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment */
|
|
243
|
+
async (args) => {
|
|
244
|
+
// Type-safe access with explicit casting after validation
|
|
245
|
+
const { name, steps, context, parallel = true, worktreeOptions, } = args;
|
|
246
|
+
const worktreesEnabled = worktreeOptions?.enabled ?? true;
|
|
247
|
+
const autoMerge = worktreeOptions?.autoMerge ?? true;
|
|
248
|
+
// targetBranch will be used by PipelineMergeOrchestrator when triggered
|
|
249
|
+
const _targetBranch = worktreeOptions?.targetBranch ?? "main";
|
|
250
|
+
logger.info("execute_pipeline called", {
|
|
251
|
+
name,
|
|
252
|
+
stepCount: steps.length,
|
|
253
|
+
hasContext: context !== undefined,
|
|
254
|
+
parallel,
|
|
255
|
+
worktreesEnabled,
|
|
256
|
+
autoMerge,
|
|
257
|
+
targetBranch: _targetBranch,
|
|
258
|
+
});
|
|
259
|
+
try {
|
|
260
|
+
// Build the pipeline definition
|
|
261
|
+
// Use explicit property assignment to handle exactOptionalPropertyTypes
|
|
262
|
+
const pipelineSteps = steps.map((step) => {
|
|
263
|
+
const pipelineStep = {
|
|
264
|
+
name: step.name,
|
|
265
|
+
subject: step.subject,
|
|
266
|
+
role: step.role,
|
|
267
|
+
};
|
|
268
|
+
if (step.description !== undefined) {
|
|
269
|
+
pipelineStep.description = step.description;
|
|
270
|
+
}
|
|
271
|
+
if (step.dependsOn !== undefined) {
|
|
272
|
+
pipelineStep.dependsOn = step.dependsOn;
|
|
273
|
+
}
|
|
274
|
+
return pipelineStep;
|
|
275
|
+
});
|
|
276
|
+
const definition = {
|
|
277
|
+
name,
|
|
278
|
+
steps: pipelineSteps,
|
|
279
|
+
};
|
|
280
|
+
if (context !== undefined) {
|
|
281
|
+
definition.globalContext = context;
|
|
282
|
+
}
|
|
283
|
+
// Validate the definition (throws on error)
|
|
284
|
+
pipelineManager.validateDefinition(definition);
|
|
285
|
+
// Create the execution tracker
|
|
286
|
+
const execution = pipelineManager.createExecution(definition);
|
|
287
|
+
// Allocate worktrees for coding roles if enabled and manager available
|
|
288
|
+
const worktreeAllocations = [];
|
|
289
|
+
if (worktreesEnabled && worktreeManager) {
|
|
290
|
+
logger.info("Allocating worktrees for coding steps", {
|
|
291
|
+
pipelineId: execution.pipelineId,
|
|
292
|
+
});
|
|
293
|
+
for (const step of definition.steps) {
|
|
294
|
+
if (roleNeedsWorktree(step.role)) {
|
|
295
|
+
try {
|
|
296
|
+
// Create a unique step ID for the pipeline
|
|
297
|
+
const stepId = `${execution.pipelineId}-${step.name}`;
|
|
298
|
+
// Allocate worktree for this step
|
|
299
|
+
const allocationResult = await worktreeManager.allocate(stepId, `pipeline-${execution.pipelineId}`);
|
|
300
|
+
if (allocationResult.success && allocationResult.worktree) {
|
|
301
|
+
const worktree = allocationResult.worktree;
|
|
302
|
+
// Track allocation in PipelineManager
|
|
303
|
+
const stepAllocation = {
|
|
304
|
+
stepId: step.name,
|
|
305
|
+
worktreeId: worktree.id,
|
|
306
|
+
worktreePath: worktree.path,
|
|
307
|
+
branch: worktree.branch,
|
|
308
|
+
status: "allocated",
|
|
309
|
+
allocatedAt: Date.now(),
|
|
310
|
+
};
|
|
311
|
+
pipelineManager.allocateWorktreeForStep(step.name, stepAllocation);
|
|
312
|
+
// Inject worktree context into step description
|
|
313
|
+
if (allocationResult.instructions) {
|
|
314
|
+
const originalDesc = step.description ?? step.subject;
|
|
315
|
+
step.description = injectWorktreeContext(originalDesc, worktree, "compact");
|
|
316
|
+
}
|
|
317
|
+
worktreeAllocations.push({
|
|
318
|
+
stepName: step.name,
|
|
319
|
+
worktreeId: worktree.id,
|
|
320
|
+
path: worktree.path,
|
|
321
|
+
branch: worktree.branch,
|
|
322
|
+
});
|
|
323
|
+
logger.info("Worktree allocated for step", {
|
|
324
|
+
stepName: step.name,
|
|
325
|
+
worktreeId: worktree.id,
|
|
326
|
+
branch: worktree.branch,
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
else {
|
|
330
|
+
logger.warn("Failed to allocate worktree for step", {
|
|
331
|
+
stepName: step.name,
|
|
332
|
+
error: allocationResult.error,
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
catch (err) {
|
|
337
|
+
const errMsg = err instanceof Error ? err.message : String(err);
|
|
338
|
+
logger.warn("Error allocating worktree for step", {
|
|
339
|
+
stepName: step.name,
|
|
340
|
+
error: errMsg,
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
else if (worktreesEnabled && !worktreeManager) {
|
|
347
|
+
logger.debug("Worktrees enabled but WorktreeManager not available");
|
|
348
|
+
}
|
|
349
|
+
// Generate TaskCreate instructions (after worktree context injection)
|
|
350
|
+
const taskInstructions = pipelineManager.generatePipelineCreation(definition);
|
|
351
|
+
// Compute execution phases for the plan
|
|
352
|
+
const phases = computeExecutionPhases(definition.steps);
|
|
353
|
+
logger.info("execute_pipeline completed", {
|
|
354
|
+
name,
|
|
355
|
+
pipelineId: execution.pipelineId,
|
|
356
|
+
stepCount: steps.length,
|
|
357
|
+
phaseCount: phases.length,
|
|
358
|
+
worktreeCount: worktreeAllocations.length,
|
|
359
|
+
});
|
|
360
|
+
return {
|
|
361
|
+
content: [
|
|
362
|
+
{
|
|
363
|
+
type: "text",
|
|
364
|
+
text: formatPipelineResponse(definition, execution.pipelineId, taskInstructions, phases, parallel, worktreeAllocations.length > 0 ? worktreeAllocations : undefined, autoMerge),
|
|
365
|
+
},
|
|
366
|
+
],
|
|
367
|
+
};
|
|
368
|
+
}
|
|
369
|
+
catch (error) {
|
|
370
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
371
|
+
if (error instanceof Error) {
|
|
372
|
+
logger.error("execute_pipeline failed", {
|
|
373
|
+
name,
|
|
374
|
+
error,
|
|
375
|
+
errorMessage,
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
else {
|
|
379
|
+
logger.error("execute_pipeline failed", {
|
|
380
|
+
name,
|
|
381
|
+
errorMessage,
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
// Return error as text content for MCP compatibility
|
|
385
|
+
return {
|
|
386
|
+
content: [
|
|
387
|
+
{
|
|
388
|
+
type: "text",
|
|
389
|
+
text: `## Error Creating Pipeline\n\n**Pipeline**: ${name}\n**Error**: ${errorMessage}\n\n` +
|
|
390
|
+
`Common issues:\n` +
|
|
391
|
+
`- Duplicate step names\n` +
|
|
392
|
+
`- Missing dependency (step depends on non-existent step)\n` +
|
|
393
|
+
`- Circular dependencies`,
|
|
394
|
+
},
|
|
395
|
+
],
|
|
396
|
+
};
|
|
397
|
+
}
|
|
398
|
+
});
|
|
399
|
+
logger.debug("Registered execute_pipeline tool", { roles: AGENT_ROLES });
|
|
400
|
+
}
|
|
401
|
+
//# sourceMappingURL=execute-pipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute-pipeline.js","sourceRoot":"","sources":["../../../../src/mcp/tools/tasks/execute-pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* execute_task MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Executes a Claude Code task using AgentRouter.
|
|
5
|
+
* Coordinates with TaskCoordinator for lifecycle management.
|
|
6
|
+
* Automatically allocates isolated git worktrees for coder/developer roles.
|
|
7
|
+
*/
|
|
8
|
+
import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
9
|
+
import type { Logger } from "../../../observability/logger.js";
|
|
10
|
+
import type { RouterEngine } from "../../../router/engine.js";
|
|
11
|
+
import type { TaskCoordinator } from "../../../tasks/coordinator.js";
|
|
12
|
+
import type { WorktreeManager } from "../../../worktrees/manager.js";
|
|
13
|
+
/**
|
|
14
|
+
* Registers the execute_task tool with the MCP server
|
|
15
|
+
*
|
|
16
|
+
* @param server - MCP server instance
|
|
17
|
+
* @param router - RouterEngine for agent invocation
|
|
18
|
+
* @param coordinator - TaskCoordinator for task lifecycle management
|
|
19
|
+
* @param logger - Logger instance for structured logging
|
|
20
|
+
* @param worktreeManager - Optional WorktreeManager for git worktree allocation
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* const server = new McpServer({ name: 'agent-router', version: '3.0.0' });
|
|
25
|
+
* const router = new RouterEngine(config, providers, logger);
|
|
26
|
+
* const coordinator = new TaskCoordinator(logger);
|
|
27
|
+
* const worktreeManager = new WorktreeManager(repoPath, worktreeConfig);
|
|
28
|
+
* registerExecuteTaskTool(server, router, coordinator, logger, worktreeManager);
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare function registerExecuteTaskTool(server: McpServer, router: RouterEngine, coordinator: TaskCoordinator, logger: Logger, worktreeManager?: WorktreeManager): void;
|
|
32
|
+
//# sourceMappingURL=execute-task.d.ts.map
|
|
@@ -0,0 +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;AAErE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAiKrE;;;;;;;;;;;;;;;;;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,CAgMN"}
|