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,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default Worktree Configuration
|
|
3
|
+
*
|
|
4
|
+
* Defines which roles need worktrees and default worktree settings.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Roles that need isolated worktrees by default
|
|
8
|
+
*/
|
|
9
|
+
export const ROLES_NEEDING_WORKTREE = new Set([
|
|
10
|
+
'coder',
|
|
11
|
+
'implementer',
|
|
12
|
+
'developer',
|
|
13
|
+
'engineer',
|
|
14
|
+
]);
|
|
15
|
+
/**
|
|
16
|
+
* Check if a role needs a worktree
|
|
17
|
+
*/
|
|
18
|
+
export function roleNeedsWorktree(role, configOverride) {
|
|
19
|
+
// Config override takes precedence
|
|
20
|
+
if (configOverride !== undefined) {
|
|
21
|
+
return configOverride;
|
|
22
|
+
}
|
|
23
|
+
// Check default roles
|
|
24
|
+
return ROLES_NEEDING_WORKTREE.has(role.toLowerCase());
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Default worktree configuration
|
|
28
|
+
*/
|
|
29
|
+
export const DEFAULT_WORKTREE_CONFIG = {
|
|
30
|
+
enabled: true,
|
|
31
|
+
baseDir: '.agent-foundry/worktrees',
|
|
32
|
+
limits: {
|
|
33
|
+
maxWorktrees: 10,
|
|
34
|
+
maxDiskBytes: 10 * 1024 * 1024 * 1024, // 10 GB
|
|
35
|
+
},
|
|
36
|
+
pool: {
|
|
37
|
+
enabled: false,
|
|
38
|
+
size: 3,
|
|
39
|
+
},
|
|
40
|
+
git: {
|
|
41
|
+
defaultBaseBranch: 'main',
|
|
42
|
+
branchPattern: 'task/{taskId}',
|
|
43
|
+
autoMerge: true,
|
|
44
|
+
conflictStrategy: 'merge',
|
|
45
|
+
},
|
|
46
|
+
cleanup: {
|
|
47
|
+
staleThresholdMs: 24 * 60 * 60 * 1000, // 24 hours
|
|
48
|
+
autoCleanup: true,
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Merge user config with defaults
|
|
53
|
+
*/
|
|
54
|
+
export function mergeWorktreeConfig(userConfig) {
|
|
55
|
+
if (!userConfig)
|
|
56
|
+
return DEFAULT_WORKTREE_CONFIG;
|
|
57
|
+
return {
|
|
58
|
+
enabled: userConfig.enabled ?? DEFAULT_WORKTREE_CONFIG.enabled,
|
|
59
|
+
baseDir: userConfig.baseDir ?? DEFAULT_WORKTREE_CONFIG.baseDir,
|
|
60
|
+
limits: {
|
|
61
|
+
...DEFAULT_WORKTREE_CONFIG.limits,
|
|
62
|
+
...userConfig.limits,
|
|
63
|
+
},
|
|
64
|
+
pool: {
|
|
65
|
+
...DEFAULT_WORKTREE_CONFIG.pool,
|
|
66
|
+
...userConfig.pool,
|
|
67
|
+
},
|
|
68
|
+
git: {
|
|
69
|
+
...DEFAULT_WORKTREE_CONFIG.git,
|
|
70
|
+
...userConfig.git,
|
|
71
|
+
},
|
|
72
|
+
cleanup: {
|
|
73
|
+
...DEFAULT_WORKTREE_CONFIG.cleanup,
|
|
74
|
+
...userConfig.cleanup,
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=worktree-defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree-defaults.js","sourceRoot":"","sources":["../../src/config/worktree-defaults.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAgB,IAAI,GAAG,CAAC;IACzD,OAAO;IACP,aAAa;IACb,WAAW;IACX,UAAU;CACX,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,cAAwB;IACtE,mCAAmC;IACnC,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,sBAAsB;IACtB,OAAO,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAmB;IACrD,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,0BAA0B;IACnC,MAAM,EAAE;QACN,YAAY,EAAE,EAAE;QAChB,YAAY,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,QAAQ;KAChD;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC;KACR;IACD,GAAG,EAAE;QACH,iBAAiB,EAAE,MAAM;QACzB,aAAa,EAAE,eAAe;QAC9B,SAAS,EAAE,IAAI;QACf,gBAAgB,EAAE,OAAO;KAC1B;IACD,OAAO,EAAE;QACP,gBAAgB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,WAAW;QAClD,WAAW,EAAE,IAAI;KAClB;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAoC;IACtE,IAAI,CAAC,UAAU;QAAE,OAAO,uBAAuB,CAAC;IAEhD,OAAO;QACL,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,uBAAuB,CAAC,OAAO;QAC9D,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,uBAAuB,CAAC,OAAO;QAC9D,MAAM,EAAE;YACN,GAAG,uBAAuB,CAAC,MAAM;YACjC,GAAG,UAAU,CAAC,MAAM;SACrB;QACD,IAAI,EAAE;YACJ,GAAG,uBAAuB,CAAC,IAAI;YAC/B,GAAG,UAAU,CAAC,IAAI;SACnB;QACD,GAAG,EAAE;YACH,GAAG,uBAAuB,CAAC,GAAG;YAC9B,GAAG,UAAU,CAAC,GAAG;SAClB;QACD,OAAO,EAAE;YACP,GAAG,uBAAuB,CAAC,OAAO;YAClC,GAAG,UAAU,CAAC,OAAO;SACtB;KACF,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentRouter - MCP server for multi-agent orchestration
|
|
3
|
+
* Entry point
|
|
4
|
+
*/
|
|
5
|
+
export declare const VERSION = "3.0.2";
|
|
6
|
+
export { initializeWithRecovery, shutdown } from "./startup.js";
|
|
7
|
+
export type { StartupConfig, StartupResult } from "./startup.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,eAAO,MAAM,OAAO,UAAU,CAAC;AAG/B,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAChE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentRouter - MCP server for multi-agent orchestration
|
|
3
|
+
* Entry point
|
|
4
|
+
*/
|
|
5
|
+
import { createServer, startServer, shutdownServer } from "./server.js";
|
|
6
|
+
export const VERSION = "3.0.2";
|
|
7
|
+
// Re-export startup utilities for programmatic use
|
|
8
|
+
export { initializeWithRecovery, shutdown } from "./startup.js";
|
|
9
|
+
/**
|
|
10
|
+
* Main entry point - creates and starts the MCP server
|
|
11
|
+
*/
|
|
12
|
+
async function main() {
|
|
13
|
+
const server = await createServer();
|
|
14
|
+
await startServer(server);
|
|
15
|
+
}
|
|
16
|
+
// Graceful shutdown handling
|
|
17
|
+
function setupShutdownHandlers() {
|
|
18
|
+
const handleShutdown = async (signal) => {
|
|
19
|
+
console.error(`\nReceived ${signal}, shutting down gracefully...`);
|
|
20
|
+
try {
|
|
21
|
+
await shutdownServer();
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
25
|
+
console.error("Error during shutdown:", message);
|
|
26
|
+
}
|
|
27
|
+
process.exit(0);
|
|
28
|
+
};
|
|
29
|
+
process.on("SIGINT", () => {
|
|
30
|
+
void handleShutdown("SIGINT");
|
|
31
|
+
});
|
|
32
|
+
process.on("SIGTERM", () => {
|
|
33
|
+
void handleShutdown("SIGTERM");
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
// Setup handlers before starting
|
|
37
|
+
setupShutdownHandlers();
|
|
38
|
+
// Start the server
|
|
39
|
+
main().catch((error) => {
|
|
40
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
41
|
+
console.error("Failed to start AgentRouter:", message);
|
|
42
|
+
process.exit(1);
|
|
43
|
+
});
|
|
44
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAExE,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B,mDAAmD;AACnD,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAGhE;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;IACpC,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED,6BAA6B;AAC7B,SAAS,qBAAqB;IAC5B,MAAM,cAAc,GAAG,KAAK,EAAE,MAAc,EAAiB,EAAE;QAC7D,OAAO,CAAC,KAAK,CAAC,cAAc,MAAM,+BAA+B,CAAC,CAAC;QACnE,IAAI,CAAC;YACH,MAAM,cAAc,EAAE,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACxB,KAAK,cAAc,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACzB,KAAK,cAAc,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,iCAAiC;AACjC,qBAAqB,EAAE,CAAC;AAExB,mBAAmB;AACnB,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,OAAO,CAAC,CAAC;IACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* compare_agents MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Runs the same task through multiple agents and compares their responses.
|
|
5
|
+
* Useful for getting different perspectives or finding the best approach.
|
|
6
|
+
*/
|
|
7
|
+
import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
8
|
+
import type { Logger } from "../../observability/logger.js";
|
|
9
|
+
import type { RouterEngine } from "../../router/engine.js";
|
|
10
|
+
/**
|
|
11
|
+
* Registers the compare_agents tool with the MCP server
|
|
12
|
+
*
|
|
13
|
+
* @param server - MCP server instance
|
|
14
|
+
* @param router - RouterEngine for agent invocation
|
|
15
|
+
* @param logger - Logger instance for structured logging
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const server = new McpServer({ name: 'agent-router', version: '0.1.0' });
|
|
20
|
+
* const router = new RouterEngine(config, providers, logger);
|
|
21
|
+
* registerCompareAgentsTool(server, router, logger);
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare function registerCompareAgentsTool(server: McpServer, router: RouterEngine, logger: Logger): void;
|
|
25
|
+
//# sourceMappingURL=compare-agents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compare-agents.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/compare-agents.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;AAsG3D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,GACb,IAAI,CAkGN"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* compare_agents MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Runs the same task through multiple agents and compares their responses.
|
|
5
|
+
* Useful for getting different perspectives or finding the best approach.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// Constants
|
|
10
|
+
// ============================================================================
|
|
11
|
+
/**
|
|
12
|
+
* Tool description for compare_agents
|
|
13
|
+
*/
|
|
14
|
+
const TOOL_DESCRIPTION = "Run the same task through multiple agents and compare their responses. Useful for getting different perspectives from specialized agents (coder, critic, designer, researcher, reviewer).";
|
|
15
|
+
// ============================================================================
|
|
16
|
+
// Input Schema
|
|
17
|
+
// ============================================================================
|
|
18
|
+
/**
|
|
19
|
+
* Zod schema shape for compare_agents input validation.
|
|
20
|
+
* Uses raw shape format as expected by MCP SDK's registerTool.
|
|
21
|
+
*/
|
|
22
|
+
const compareAgentsInputSchemaShape = {
|
|
23
|
+
roles: z
|
|
24
|
+
.array(z.string())
|
|
25
|
+
.min(2)
|
|
26
|
+
.describe("List of agent roles to compare (minimum 2 required)"),
|
|
27
|
+
task: z.string().min(1).describe("The task to send to all agents"),
|
|
28
|
+
};
|
|
29
|
+
// ============================================================================
|
|
30
|
+
// Response Formatter
|
|
31
|
+
// ============================================================================
|
|
32
|
+
/**
|
|
33
|
+
* Formats a single agent response for the comparison output
|
|
34
|
+
*
|
|
35
|
+
* @param response - The response from the agent invocation
|
|
36
|
+
* @returns Formatted string with header, metadata, and content
|
|
37
|
+
*/
|
|
38
|
+
function formatSingleAgentResponse(response) {
|
|
39
|
+
const header = `### ${response.role.toUpperCase()} Agent\n`;
|
|
40
|
+
const meta = `*Provider: ${response.provider} | Model: ${response.model} | Duration: ${String(response.metadata.durationMs)}ms*\n\n`;
|
|
41
|
+
const content = response.content
|
|
42
|
+
.filter((block) => block.type === "text")
|
|
43
|
+
.map((block) => block.text ?? "")
|
|
44
|
+
.join("\n");
|
|
45
|
+
return header + meta + content;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Formats the comparison results for MCP text output
|
|
49
|
+
*
|
|
50
|
+
* @param results - Map of role names to their responses
|
|
51
|
+
* @param failedRoles - Array of roles that failed to respond
|
|
52
|
+
* @param totalDurationMs - Total time taken for the comparison
|
|
53
|
+
* @returns Formatted string with all agent responses side by side
|
|
54
|
+
*/
|
|
55
|
+
function formatComparisonResponse(results, failedRoles, totalDurationMs) {
|
|
56
|
+
const sections = [];
|
|
57
|
+
// Header
|
|
58
|
+
sections.push("## Agent Comparison Results\n");
|
|
59
|
+
sections.push(`*Compared ${String(results.size)} agents | Total duration: ${String(totalDurationMs)}ms*\n`);
|
|
60
|
+
// Separator
|
|
61
|
+
sections.push("---\n");
|
|
62
|
+
// Individual agent responses
|
|
63
|
+
for (const [_role, response] of results) {
|
|
64
|
+
sections.push(formatSingleAgentResponse(response));
|
|
65
|
+
sections.push("\n---\n");
|
|
66
|
+
}
|
|
67
|
+
// Failed roles (if any)
|
|
68
|
+
if (failedRoles.length > 0) {
|
|
69
|
+
sections.push("### Failed Agents\n");
|
|
70
|
+
sections.push(`The following agents failed to respond: ${failedRoles.join(", ")}\n`);
|
|
71
|
+
}
|
|
72
|
+
return sections.join("\n");
|
|
73
|
+
}
|
|
74
|
+
// ============================================================================
|
|
75
|
+
// Tool Registration
|
|
76
|
+
// ============================================================================
|
|
77
|
+
/**
|
|
78
|
+
* Registers the compare_agents tool with the MCP server
|
|
79
|
+
*
|
|
80
|
+
* @param server - MCP server instance
|
|
81
|
+
* @param router - RouterEngine for agent invocation
|
|
82
|
+
* @param logger - Logger instance for structured logging
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```typescript
|
|
86
|
+
* const server = new McpServer({ name: 'agent-router', version: '0.1.0' });
|
|
87
|
+
* const router = new RouterEngine(config, providers, logger);
|
|
88
|
+
* registerCompareAgentsTool(server, router, logger);
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
export function registerCompareAgentsTool(server, router, logger) {
|
|
92
|
+
// Use type assertion to work around Zod version compatibility issues
|
|
93
|
+
// between zod 3.25+ and the MCP SDK's ZodRawShapeCompat type
|
|
94
|
+
/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment */
|
|
95
|
+
const inputSchema = compareAgentsInputSchemaShape;
|
|
96
|
+
server.registerTool("compare_agents", {
|
|
97
|
+
title: "Compare Agents",
|
|
98
|
+
description: TOOL_DESCRIPTION,
|
|
99
|
+
inputSchema,
|
|
100
|
+
},
|
|
101
|
+
/* eslint-enable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment */
|
|
102
|
+
async (args) => {
|
|
103
|
+
// Type-safe access with explicit casting after validation
|
|
104
|
+
const { roles, task } = args;
|
|
105
|
+
logger.info("compare_agents called", {
|
|
106
|
+
roles,
|
|
107
|
+
roleCount: roles.length,
|
|
108
|
+
taskLength: task.length,
|
|
109
|
+
});
|
|
110
|
+
// Validate that all roles exist
|
|
111
|
+
const invalidRoles = roles.filter((role) => !router.hasRole(role));
|
|
112
|
+
if (invalidRoles.length > 0) {
|
|
113
|
+
const errorMessage = `Unknown roles: ${invalidRoles.join(", ")}. Available roles: ${router.listRoles().join(", ")}`;
|
|
114
|
+
logger.warn("compare_agents called with invalid roles", {
|
|
115
|
+
invalidRoles,
|
|
116
|
+
availableRoles: router.listRoles(),
|
|
117
|
+
});
|
|
118
|
+
return {
|
|
119
|
+
content: [
|
|
120
|
+
{
|
|
121
|
+
type: "text",
|
|
122
|
+
text: `## Error Comparing Agents\n\n${errorMessage}`,
|
|
123
|
+
},
|
|
124
|
+
],
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
try {
|
|
128
|
+
const startTime = Date.now();
|
|
129
|
+
const results = await router.compareAgents(roles, task);
|
|
130
|
+
const durationMs = Date.now() - startTime;
|
|
131
|
+
// Determine which roles failed
|
|
132
|
+
const failedRoles = roles.filter((role) => !results.has(role));
|
|
133
|
+
logger.info("compare_agents completed", {
|
|
134
|
+
roles,
|
|
135
|
+
successfulRoles: Array.from(results.keys()),
|
|
136
|
+
failedRoles,
|
|
137
|
+
durationMs,
|
|
138
|
+
});
|
|
139
|
+
return {
|
|
140
|
+
content: [
|
|
141
|
+
{
|
|
142
|
+
type: "text",
|
|
143
|
+
text: formatComparisonResponse(results, failedRoles, durationMs),
|
|
144
|
+
},
|
|
145
|
+
],
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
150
|
+
// Only pass error to logger if it's an Error instance
|
|
151
|
+
if (error instanceof Error) {
|
|
152
|
+
logger.error("compare_agents failed", {
|
|
153
|
+
roles,
|
|
154
|
+
error,
|
|
155
|
+
errorMessage,
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
logger.error("compare_agents failed", {
|
|
160
|
+
roles,
|
|
161
|
+
errorMessage,
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
// Return error as text content for MCP compatibility
|
|
165
|
+
return {
|
|
166
|
+
content: [
|
|
167
|
+
{
|
|
168
|
+
type: "text",
|
|
169
|
+
text: `## Error Comparing Agents\n\n${errorMessage}`,
|
|
170
|
+
},
|
|
171
|
+
],
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
logger.debug("Registered compare_agents tool");
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=compare-agents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compare-agents.js","sourceRoot":"","sources":["../../../src/mcp/tools/compare-agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* critique_plan MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Convenience tool for getting critical review of a plan, PRD, or technical
|
|
5
|
+
* design from a skeptical architect. This is a shorthand for invoking the
|
|
6
|
+
* critic agent with a structured task.
|
|
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
|
+
/**
|
|
12
|
+
* Registers the critique_plan tool with the MCP server
|
|
13
|
+
*
|
|
14
|
+
* @param server - MCP server instance
|
|
15
|
+
* @param router - RouterEngine for agent invocation
|
|
16
|
+
* @param logger - Logger instance for structured logging
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const server = new McpServer({ name: 'agent-router', version: '0.1.0' });
|
|
21
|
+
* const router = new RouterEngine(config, providers, logger);
|
|
22
|
+
* registerCritiquePlanTool(server, router, logger);
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export declare function registerCritiquePlanTool(server: McpServer, router: RouterEngine, logger: Logger): void;
|
|
26
|
+
//# sourceMappingURL=critique-plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"critique-plan.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/critique-plan.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AA+F3D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,GACb,IAAI,CAkFN"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* critique_plan MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Convenience tool for getting critical review of a plan, PRD, or technical
|
|
5
|
+
* design from a skeptical architect. This is a shorthand for invoking the
|
|
6
|
+
* critic agent with a structured task.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
// ============================================================================
|
|
10
|
+
// Constants
|
|
11
|
+
// ============================================================================
|
|
12
|
+
/**
|
|
13
|
+
* Tool description for critique_plan
|
|
14
|
+
*/
|
|
15
|
+
const TOOL_DESCRIPTION = "Get critical review of a plan, PRD, or technical design from a skeptical architect. " +
|
|
16
|
+
"The critic will challenge assumptions, identify risks, and suggest improvements.";
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// Input Schema
|
|
19
|
+
// ============================================================================
|
|
20
|
+
/**
|
|
21
|
+
* Zod schema shape for critique_plan input validation.
|
|
22
|
+
* Uses raw shape format as expected by MCP SDK's registerTool.
|
|
23
|
+
*/
|
|
24
|
+
const critiquePlanInputSchemaShape = {
|
|
25
|
+
plan: z
|
|
26
|
+
.string()
|
|
27
|
+
.min(1)
|
|
28
|
+
.describe("The plan, PRD, or technical design document to critique"),
|
|
29
|
+
focus: z
|
|
30
|
+
.string()
|
|
31
|
+
.optional()
|
|
32
|
+
.describe("Optional focus areas for the critique (e.g., 'security', 'scalability', 'cost', 'maintainability')"),
|
|
33
|
+
};
|
|
34
|
+
// ============================================================================
|
|
35
|
+
// Response Formatter
|
|
36
|
+
// ============================================================================
|
|
37
|
+
/**
|
|
38
|
+
* Formats an AgentResponse for MCP text output
|
|
39
|
+
*
|
|
40
|
+
* @param response - The response from the agent invocation
|
|
41
|
+
* @returns Formatted string with header, metadata, and critique content
|
|
42
|
+
*/
|
|
43
|
+
function formatCritiqueResponse(response) {
|
|
44
|
+
const header = `## Plan Critique (CRITIC Agent)\n`;
|
|
45
|
+
const meta = `*Provider: ${response.provider} | Model: ${response.model} | Duration: ${String(response.metadata.durationMs)}ms*\n\n`;
|
|
46
|
+
const content = response.content
|
|
47
|
+
.filter((block) => block.type === "text")
|
|
48
|
+
.map((block) => block.text ?? "")
|
|
49
|
+
.join("\n");
|
|
50
|
+
return header + meta + content;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Builds the task string for the critic agent
|
|
54
|
+
*
|
|
55
|
+
* @param plan - The plan document to critique
|
|
56
|
+
* @param focus - Optional focus areas
|
|
57
|
+
* @returns Formatted task string
|
|
58
|
+
*/
|
|
59
|
+
function buildCritiqueTask(plan, focus) {
|
|
60
|
+
let task = `Please provide a critical review of the following plan or technical design.\n\n`;
|
|
61
|
+
if (focus !== undefined && focus !== "") {
|
|
62
|
+
task += `Focus particularly on: ${focus}\n\n`;
|
|
63
|
+
}
|
|
64
|
+
task += `Analyze for:\n`;
|
|
65
|
+
task += `- Hidden assumptions and unstated dependencies\n`;
|
|
66
|
+
task += `- Potential risks and failure modes\n`;
|
|
67
|
+
task += `- Scalability and performance concerns\n`;
|
|
68
|
+
task += `- Security vulnerabilities\n`;
|
|
69
|
+
task += `- Missing requirements or edge cases\n`;
|
|
70
|
+
task += `- Alternative approaches worth considering\n\n`;
|
|
71
|
+
task += `<plan>\n${plan}\n</plan>`;
|
|
72
|
+
return task;
|
|
73
|
+
}
|
|
74
|
+
// ============================================================================
|
|
75
|
+
// Tool Registration
|
|
76
|
+
// ============================================================================
|
|
77
|
+
/**
|
|
78
|
+
* Registers the critique_plan tool with the MCP server
|
|
79
|
+
*
|
|
80
|
+
* @param server - MCP server instance
|
|
81
|
+
* @param router - RouterEngine for agent invocation
|
|
82
|
+
* @param logger - Logger instance for structured logging
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```typescript
|
|
86
|
+
* const server = new McpServer({ name: 'agent-router', version: '0.1.0' });
|
|
87
|
+
* const router = new RouterEngine(config, providers, logger);
|
|
88
|
+
* registerCritiquePlanTool(server, router, logger);
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
export function registerCritiquePlanTool(server, router, logger) {
|
|
92
|
+
// Use type assertion to work around Zod version compatibility issues
|
|
93
|
+
// between zod 3.25+ and the MCP SDK's ZodRawShapeCompat type
|
|
94
|
+
/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment */
|
|
95
|
+
const inputSchema = critiquePlanInputSchemaShape;
|
|
96
|
+
server.registerTool("critique_plan", {
|
|
97
|
+
title: "Critique Plan",
|
|
98
|
+
description: TOOL_DESCRIPTION,
|
|
99
|
+
inputSchema,
|
|
100
|
+
},
|
|
101
|
+
/* eslint-enable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment */
|
|
102
|
+
async (args) => {
|
|
103
|
+
// Type-safe access with explicit casting after validation
|
|
104
|
+
const { plan, focus } = args;
|
|
105
|
+
logger.info("critique_plan called", {
|
|
106
|
+
planLength: plan.length,
|
|
107
|
+
hasFocus: focus !== undefined,
|
|
108
|
+
focus: focus,
|
|
109
|
+
});
|
|
110
|
+
try {
|
|
111
|
+
const startTime = Date.now();
|
|
112
|
+
// Build the task string with optional focus areas
|
|
113
|
+
const task = buildCritiqueTask(plan, focus);
|
|
114
|
+
// Invoke the critic agent
|
|
115
|
+
const response = await router.invokeAgent({
|
|
116
|
+
role: "critic",
|
|
117
|
+
task,
|
|
118
|
+
});
|
|
119
|
+
const durationMs = Date.now() - startTime;
|
|
120
|
+
logger.info("critique_plan completed", {
|
|
121
|
+
provider: response.provider,
|
|
122
|
+
model: response.model,
|
|
123
|
+
durationMs,
|
|
124
|
+
traceId: response.metadata.traceId,
|
|
125
|
+
});
|
|
126
|
+
return {
|
|
127
|
+
content: [
|
|
128
|
+
{
|
|
129
|
+
type: "text",
|
|
130
|
+
text: formatCritiqueResponse(response),
|
|
131
|
+
},
|
|
132
|
+
],
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
137
|
+
// Only pass error to logger if it's an Error instance
|
|
138
|
+
if (error instanceof Error) {
|
|
139
|
+
logger.error("critique_plan failed", {
|
|
140
|
+
error,
|
|
141
|
+
errorMessage,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
logger.error("critique_plan failed", {
|
|
146
|
+
errorMessage,
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
// Return error as text content for MCP compatibility
|
|
150
|
+
return {
|
|
151
|
+
content: [
|
|
152
|
+
{
|
|
153
|
+
type: "text",
|
|
154
|
+
text: `## Error Critiquing Plan\n\n${errorMessage}`,
|
|
155
|
+
},
|
|
156
|
+
],
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
logger.debug("Registered critique_plan tool");
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=critique-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"critique-plan.js","sourceRoot":"","sources":["../../../src/mcp/tools/critique-plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* design_feedback MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Convenience tool for getting UI/UX design feedback on components,
|
|
5
|
+
* layouts, or user flows. This is a shorthand for invoking the
|
|
6
|
+
* designer role with a structured design review task.
|
|
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
|
+
/**
|
|
12
|
+
* Registers the design_feedback tool with the MCP server
|
|
13
|
+
*
|
|
14
|
+
* @param server - MCP server instance
|
|
15
|
+
* @param router - RouterEngine for agent invocation
|
|
16
|
+
* @param logger - Logger instance for structured logging
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const server = new McpServer({ name: 'agent-router', version: '0.1.0' });
|
|
21
|
+
* const router = new RouterEngine(config, providers, logger);
|
|
22
|
+
* registerDesignFeedbackTool(server, router, logger);
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export declare function registerDesignFeedbackTool(server: McpServer, router: RouterEngine, logger: Logger): void;
|
|
26
|
+
//# sourceMappingURL=design-feedback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"design-feedback.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/design-feedback.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AA6I3D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,GACb,IAAI,CA+FN"}
|