@theone1345/smartrelay 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/README.md +446 -0
  2. package/config/runners/agents.yaml +47 -0
  3. package/config/runners/anthropic.yaml +23 -0
  4. package/config/runners/nvidia.yaml +53 -0
  5. package/config/runners/ollama.yaml +33 -0
  6. package/config/runners/openai.yaml +23 -0
  7. package/config/runners/openrouter.yaml +83 -0
  8. package/config.yaml +16 -0
  9. package/dist/benchmark/engine.d.ts +49 -0
  10. package/dist/benchmark/engine.js +147 -0
  11. package/dist/benchmark/engine.js.map +1 -0
  12. package/dist/benchmark/scorers.d.ts +59 -0
  13. package/dist/benchmark/scorers.js +241 -0
  14. package/dist/benchmark/scorers.js.map +1 -0
  15. package/dist/http-api.d.ts +23 -0
  16. package/dist/http-api.js +329 -0
  17. package/dist/http-api.js.map +1 -0
  18. package/dist/index.d.ts +16 -0
  19. package/dist/index.js +17 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/logger.d.ts +22 -0
  22. package/dist/logger.js +34 -0
  23. package/dist/logger.js.map +1 -0
  24. package/dist/router.d.ts +33 -0
  25. package/dist/router.js +298 -0
  26. package/dist/router.js.map +1 -0
  27. package/dist/runners/anthropic.d.ts +15 -0
  28. package/dist/runners/anthropic.js +116 -0
  29. package/dist/runners/anthropic.js.map +1 -0
  30. package/dist/runners/base.d.ts +90 -0
  31. package/dist/runners/base.js +61 -0
  32. package/dist/runners/base.js.map +1 -0
  33. package/dist/runners/nvidia.d.ts +14 -0
  34. package/dist/runners/nvidia.js +23 -0
  35. package/dist/runners/nvidia.js.map +1 -0
  36. package/dist/runners/ollama.d.ts +8 -0
  37. package/dist/runners/ollama.js +107 -0
  38. package/dist/runners/ollama.js.map +1 -0
  39. package/dist/runners/openai.d.ts +28 -0
  40. package/dist/runners/openai.js +131 -0
  41. package/dist/runners/openai.js.map +1 -0
  42. package/dist/runners/openrouter.d.ts +11 -0
  43. package/dist/runners/openrouter.js +19 -0
  44. package/dist/runners/openrouter.js.map +1 -0
  45. package/dist/runners/registry.d.ts +53 -0
  46. package/dist/runners/registry.js +273 -0
  47. package/dist/runners/registry.js.map +1 -0
  48. package/dist/server.d.ts +16 -0
  49. package/dist/server.js +305 -0
  50. package/dist/server.js.map +1 -0
  51. package/dist/tools/handlers.d.ts +49 -0
  52. package/dist/tools/handlers.js +331 -0
  53. package/dist/tools/handlers.js.map +1 -0
  54. package/dist/tools/index.d.ts +1 -0
  55. package/dist/tools/index.js +2 -0
  56. package/dist/tools/index.js.map +1 -0
  57. package/dist/util.d.ts +47 -0
  58. package/dist/util.js +140 -0
  59. package/dist/util.js.map +1 -0
  60. package/package.json +70 -0
  61. package/prompts/code_review.md +99 -0
  62. package/prompts/explain_code.md +79 -0
  63. package/prompts/planner.md +23 -0
  64. package/prompts/test_generator.md +2 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/runners/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env node
2
+ /** MCP Delegation Server entrypoint and tool registration. */
3
+ import { McpServer } from '@modelcontextprotocol/server';
4
+ import { BenchmarkEngine } from './benchmark/engine.js';
5
+ import { TaskRouter } from './router.js';
6
+ import { RunnerRegistry } from './runners/registry.js';
7
+ export declare const server: McpServer;
8
+ export declare function getRegistry(configPath?: string | null): RunnerRegistry;
9
+ export declare function getEngine(): BenchmarkEngine;
10
+ export declare function getRouter(): TaskRouter;
11
+ export declare function runServer(options?: {
12
+ config?: string;
13
+ transport?: string;
14
+ host?: string;
15
+ port?: number;
16
+ }): Promise<void>;
package/dist/server.js ADDED
@@ -0,0 +1,305 @@
1
+ #!/usr/bin/env node
2
+ /** MCP Delegation Server entrypoint and tool registration. */
3
+ import { realpathSync } from 'node:fs';
4
+ import path from 'node:path';
5
+ import { fileURLToPath } from 'node:url';
6
+ import { parseArgs } from 'node:util';
7
+ import { z } from 'zod';
8
+ import { McpServer } from '@modelcontextprotocol/server';
9
+ import { StdioServerTransport } from '@modelcontextprotocol/server/stdio';
10
+ import { BenchmarkEngine } from './benchmark/engine.js';
11
+ import { getLogger } from './logger.js';
12
+ import { TaskRouter } from './router.js';
13
+ import { RunnerRegistry } from './runners/registry.js';
14
+ import { askSubagent, benchmarkRun, createPlan, delegateTask, explainCode, explainFile, generateTests, getActiveModel, listRunners, reviewCode, reviewFile, switchModel, testFile, } from './tools/index.js';
15
+ import { loadDotEnv } from './util.js';
16
+ // Auto-load .env
17
+ loadDotEnv();
18
+ const logger = getLogger('mcp_delegation_server');
19
+ // Initialize MCP server and singletons
20
+ export const server = new McpServer({
21
+ name: 'mcp-delegation-server',
22
+ version: '0.2.0',
23
+ });
24
+ let registryInstance = null;
25
+ let engineInstance = null;
26
+ let routerInstance = null;
27
+ export function getRegistry(configPath) {
28
+ if (!registryInstance) {
29
+ try {
30
+ registryInstance = RunnerRegistry.fromYaml(configPath);
31
+ logger.info(`Loaded runners: [${registryInstance.registeredIds().join(', ')}]`);
32
+ }
33
+ catch (err) {
34
+ logger.warning(`Could not initialize registry on startup: ${err}`);
35
+ registryInstance = new RunnerRegistry(configPath ?? null);
36
+ }
37
+ }
38
+ else {
39
+ registryInstance.reloadIfModified();
40
+ }
41
+ return registryInstance;
42
+ }
43
+ export function getEngine() {
44
+ const reg = getRegistry();
45
+ if (!engineInstance || engineInstance.registry !== reg) {
46
+ const rawConcurrency = reg.serverConfig['max_concurrency'];
47
+ const maxConcurrency = typeof rawConcurrency === 'number' ? rawConcurrency : 5;
48
+ engineInstance = new BenchmarkEngine(reg, maxConcurrency);
49
+ }
50
+ return engineInstance;
51
+ }
52
+ export function getRouter() {
53
+ const reg = getRegistry();
54
+ if (!routerInstance || routerInstance.registry !== reg) {
55
+ routerInstance = new TaskRouter(reg);
56
+ }
57
+ return routerInstance;
58
+ }
59
+ // =========================================================================
60
+ // REGISTER MCP TOOLS
61
+ // =========================================================================
62
+ // 1. switch_model
63
+ server.registerTool('switch_model', {
64
+ description: 'Switch the active model/sub-agent for subsequent coding, review, and question tasks, or view available models. ' +
65
+ "Shortcuts include: 'openrouter', 'deepseek', 'v3', 'qwen', 'llama', 'gemini', 'nvidia', 'claude', 'ollama', 'auto', or 'direct'. " +
66
+ "Call with no argument or 'list' to view the full model menu.",
67
+ inputSchema: z.object({
68
+ model: z
69
+ .string()
70
+ .optional()
71
+ .describe("Target model or shortcut ('openrouter', 'deepseek', 'v3', 'qwen', 'llama', 'gemini', 'nvidia', 'claude', 'ollama', 'auto', 'direct', or 'list')"),
72
+ }),
73
+ }, async ({ model }) => {
74
+ const msg = switchModel(getRouter(), model ?? 'list');
75
+ return { content: [{ type: 'text', text: msg }] };
76
+ });
77
+ // 2. get_active_model
78
+ server.registerTool('get_active_model', {
79
+ description: 'Get the currently active model and routing mode.',
80
+ inputSchema: z.object({}),
81
+ }, async () => {
82
+ const info = getActiveModel(getRouter());
83
+ return { content: [{ type: 'text', text: info }] };
84
+ });
85
+ // 3. create_plan
86
+ server.registerTool('create_plan', {
87
+ description: 'Create a structured, phased architectural implementation plan for any feature or project. ' +
88
+ 'Automatically routes to the specialized Planner Agent (Claude Sonnet 4.5).',
89
+ inputSchema: z.object({
90
+ goal: z.string().describe('The feature, requirement, bug fix, or refactoring goal to plan.'),
91
+ context: z
92
+ .string()
93
+ .optional()
94
+ .describe('Optional background context, existing codebase details, or constraints.'),
95
+ }),
96
+ }, async ({ goal, context }) => {
97
+ const result = await createPlan(getRouter(), goal, context ?? '');
98
+ return { content: [{ type: 'text', text: result }] };
99
+ });
100
+ // 4. review_code
101
+ server.registerTool('review_code', {
102
+ description: 'Perform an in-depth, expert code review on any function, file, or code snippet. ' +
103
+ 'Checks for edge cases, memory leaks, security vulnerabilities, and provides refactored code.',
104
+ inputSchema: z.object({
105
+ code: z.string().describe('The source code, diff, or function to review.'),
106
+ focus: z
107
+ .string()
108
+ .optional()
109
+ .describe("Optional review focus areas (default: 'bugs, security, clean code, and performance')."),
110
+ }),
111
+ }, async ({ code, focus }) => {
112
+ const result = await reviewCode(getRouter(), code, focus ?? 'bugs, security, clean code, and performance');
113
+ return { content: [{ type: 'text', text: result }] };
114
+ });
115
+ // 5. generate_tests
116
+ server.registerTool('generate_tests', {
117
+ description: 'Generate production-ready unit and integration tests with edge case coverage. ' +
118
+ 'Produces complete, runnable tests with mocking, assertions, and edge case handling.',
119
+ inputSchema: z.object({
120
+ code: z.string().describe('The source code or function that needs test coverage.'),
121
+ framework: z
122
+ .string()
123
+ .optional()
124
+ .describe("Optional testing framework (default: 'standard unit test framework')."),
125
+ }),
126
+ }, async ({ code, framework }) => {
127
+ const result = await generateTests(getRouter(), code, framework ?? 'standard unit test framework (pytest, flutter_test, etc.)');
128
+ return { content: [{ type: 'text', text: result }] };
129
+ });
130
+ // 6. ask_subagent
131
+ server.registerTool('ask_subagent', {
132
+ description: 'Ask any programming or reasoning question directly to an external sub-agent model.',
133
+ inputSchema: z.object({
134
+ prompt: z.string().describe('Your natural language question, instruction, or coding problem.'),
135
+ model: z
136
+ .string()
137
+ .optional()
138
+ .describe("Target model or provider shortcut ('nvidia', 'claude', 'ollama', 'auto', etc.)."),
139
+ }),
140
+ }, async ({ prompt, model }) => {
141
+ const result = await askSubagent(getRouter(), prompt, model ?? 'auto');
142
+ return { content: [{ type: 'text', text: result }] };
143
+ });
144
+ // 7. review_file
145
+ server.registerTool('review_file', {
146
+ description: 'Review a source code file directly from disk — TRUE zero Claude token burn. ' +
147
+ 'The MCP server reads the file itself and sends it to the Code Review sub-agent.',
148
+ inputSchema: z.object({
149
+ file_path: z.string().describe('Absolute or relative path to the source file to review.'),
150
+ focus: z
151
+ .string()
152
+ .optional()
153
+ .describe("Optional review focus areas (default: 'bugs, security, clean code, and performance')."),
154
+ }),
155
+ }, async ({ file_path, focus }) => {
156
+ const result = await reviewFile(getRouter(), file_path, focus ?? 'bugs, security, clean code, and performance');
157
+ return { content: [{ type: 'text', text: result }] };
158
+ });
159
+ // 8. test_file
160
+ server.registerTool('test_file', {
161
+ description: 'Generate tests for a source code file directly from disk — TRUE zero Claude token burn. ' +
162
+ 'The MCP server reads the file itself and sends it to the Test Generator sub-agent.',
163
+ inputSchema: z.object({
164
+ file_path: z.string().describe('Absolute or relative path to the source file to test.'),
165
+ framework: z
166
+ .string()
167
+ .optional()
168
+ .describe("Optional testing framework (default: 'standard unit test framework')."),
169
+ }),
170
+ }, async ({ file_path, framework }) => {
171
+ const result = await testFile(getRouter(), file_path, framework ?? 'standard unit test framework (pytest, flutter_test, etc.)');
172
+ return { content: [{ type: 'text', text: result }] };
173
+ });
174
+ // 9. explain_code
175
+ server.registerTool('explain_code', {
176
+ description: 'Get a clear, structured plain-English explanation of any code snippet or function.',
177
+ inputSchema: z.object({
178
+ code: z.string().describe('The source code, function, class, or snippet to explain.'),
179
+ audience: z
180
+ .string()
181
+ .optional()
182
+ .describe("Explanation depth: 'junior', 'mid-level' (default), 'senior', 'non-technical'."),
183
+ language: z.string().optional().describe("Language hint (e.g. 'dart', 'python') or 'auto'."),
184
+ }),
185
+ }, async ({ code, audience, language }) => {
186
+ const result = await explainCode(getRouter(), code, audience ?? 'mid-level engineer', language ?? 'auto');
187
+ return { content: [{ type: 'text', text: result }] };
188
+ });
189
+ // 10. explain_file
190
+ server.registerTool('explain_file', {
191
+ description: 'Get a plain-English explanation of a source file directly from disk — TRUE zero Claude token burn.',
192
+ inputSchema: z.object({
193
+ file_path: z.string().describe('Absolute or relative path to the source file to explain.'),
194
+ audience: z
195
+ .string()
196
+ .optional()
197
+ .describe("Explanation depth: 'junior', 'mid-level' (default), 'senior', 'non-technical'."),
198
+ }),
199
+ }, async ({ file_path, audience }) => {
200
+ const result = await explainFile(getRouter(), file_path, audience ?? 'mid-level engineer');
201
+ return { content: [{ type: 'text', text: result }] };
202
+ });
203
+ // 11. list_runners
204
+ server.registerTool('list_runners', {
205
+ description: 'List all registered external LLM runners and specialized sub-agents.',
206
+ inputSchema: z.object({}),
207
+ }, async () => {
208
+ const result = listRunners(getRegistry());
209
+ return { content: [{ type: 'text', text: result }] };
210
+ });
211
+ // 12. delegate_task
212
+ server.registerTool('delegate_task', {
213
+ description: 'Delegate a task to an external runner (or use auto for intelligent routing).',
214
+ inputSchema: z.object({
215
+ task: z.string().describe('The natural language prompt, instruction, code, or query.'),
216
+ runner_id: z
217
+ .string()
218
+ .optional()
219
+ .describe("Specific runner ID, or 'auto' to pick the best agent."),
220
+ params: z.record(z.string(), z.unknown()).optional().describe('Inference parameter overrides.'),
221
+ }),
222
+ }, async ({ task, runner_id, params }) => {
223
+ const result = await delegateTask(getRouter(), task, runner_id ?? 'auto', params);
224
+ return { content: [{ type: 'text', text: result }] };
225
+ });
226
+ // 13. benchmark_run
227
+ server.registerTool('benchmark_run', {
228
+ description: 'Fan out a task across multiple runners concurrently and produce a comparative benchmark report.',
229
+ inputSchema: z.object({
230
+ task: z.string().describe('The natural language prompt or problem to execute.'),
231
+ runner_ids: z
232
+ .array(z.string())
233
+ .optional()
234
+ .describe('Optional list of runners. If omitted, all authenticated runners are evaluated.'),
235
+ params: z.record(z.string(), z.unknown()).optional().describe('Optional inference parameters.'),
236
+ reference_answer: z.string().optional().describe('Optional ground-truth reference answer.'),
237
+ judge_runner_id: z.string().optional().describe('Optional runner ID of LLM judge.'),
238
+ eval_criteria: z.record(z.string(), z.unknown()).optional().describe('Optional rubric criteria.'),
239
+ }),
240
+ }, async ({ task, runner_ids, params, reference_answer, judge_runner_id, eval_criteria }) => {
241
+ const result = await benchmarkRun(getRegistry(), getEngine(), {
242
+ task,
243
+ runner_ids,
244
+ params,
245
+ reference_answer,
246
+ judge_runner_id,
247
+ eval_criteria,
248
+ });
249
+ return { content: [{ type: 'text', text: result }] };
250
+ });
251
+ // =========================================================================
252
+ // SERVER STARTUP
253
+ // =========================================================================
254
+ export async function runServer(options) {
255
+ const configPath = options?.config ?? null;
256
+ getRegistry(configPath);
257
+ const transportType = options?.transport ?? 'stdio';
258
+ logger.info(`Starting MCP server with transport: ${transportType}`);
259
+ if (transportType === 'stdio') {
260
+ const transport = new StdioServerTransport();
261
+ await server.connect(transport);
262
+ logger.info('MCP server connected via stdio');
263
+ }
264
+ else {
265
+ logger.error(`Unsupported transport: ${transportType}. Stdio is currently the standard transport.`);
266
+ }
267
+ }
268
+ // Direct execution entrypoint
269
+ function checkDirectExecution() {
270
+ const script = process.argv[1];
271
+ if (!script)
272
+ return false;
273
+ try {
274
+ const realScript = realpathSync(script);
275
+ const thisFile = realpathSync(fileURLToPath(import.meta.url));
276
+ if (realScript === thisFile)
277
+ return true;
278
+ }
279
+ catch {
280
+ // Fall back to filename checks
281
+ }
282
+ const base = path.basename(script, path.extname(script));
283
+ return ['server', 'smartrelay', 'mcp-delegation-server'].includes(base);
284
+ }
285
+ if (checkDirectExecution()) {
286
+ const { values } = parseArgs({
287
+ options: {
288
+ config: { type: 'string', short: 'c' },
289
+ transport: { type: 'string', short: 't', default: 'stdio' },
290
+ host: { type: 'string', default: '127.0.0.1' },
291
+ port: { type: 'string', default: '8000' },
292
+ },
293
+ allowPositionals: true,
294
+ });
295
+ runServer({
296
+ config: values.config,
297
+ transport: values.transport,
298
+ host: values.host,
299
+ port: values.port ? parseInt(values.port, 10) : 8000,
300
+ }).catch((err) => {
301
+ logger.error('Fatal error starting MCP server:', err);
302
+ process.exitCode = 1;
303
+ });
304
+ }
305
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /** Shared handlers and implementations for all SmartRelay tools. */
2
+ import type { BenchmarkEngine } from '../benchmark/engine.js';
3
+ import type { TaskRouter } from '../router.js';
4
+ import type { RunnerRegistry } from '../runners/registry.js';
5
+ /** Extract strictly the review report and remove any model reasoning or scratchpad text. */
6
+ export declare function cleanReviewOutput(output: string): string;
7
+ /** Read a file from disk, returning `{ content, error }`. */
8
+ export declare function readFileFromDisk(filePath: string): {
9
+ content: string | null;
10
+ error: string | null;
11
+ };
12
+ /** Switch the active model/sub-agent for subsequent tasks. */
13
+ export declare function switchModel(router: TaskRouter, model?: string): string;
14
+ /** Get the currently active model and routing mode. */
15
+ export declare function getActiveModel(router: TaskRouter): string;
16
+ /** Create a structured architectural implementation plan. */
17
+ export declare function createPlan(router: TaskRouter, goal: string, context?: string): Promise<string>;
18
+ /** Perform an in-depth, expert code review. */
19
+ export declare function reviewCode(router: TaskRouter, code: string, focus?: string): Promise<string>;
20
+ /** Generate production-ready unit and integration tests. */
21
+ export declare function generateTests(router: TaskRouter, code: string, framework?: string): Promise<string>;
22
+ /** Ask any question directly to an external sub-agent model. */
23
+ export declare function askSubagent(router: TaskRouter, prompt: string, model?: string): Promise<string>;
24
+ /** Review a source code file directly from disk — zero Claude token burn. */
25
+ export declare function reviewFile(router: TaskRouter, filePath: string, focus?: string): Promise<string>;
26
+ /** Generate tests for a source code file directly from disk. */
27
+ export declare function testFile(router: TaskRouter, filePath: string, framework?: string): Promise<string>;
28
+ /** Get a plain-English explanation of code. */
29
+ export declare function explainCode(router: TaskRouter, code: string, audience?: string, language?: string): Promise<string>;
30
+ /** Get a plain-English explanation of a source file directly from disk. */
31
+ export declare function explainFile(router: TaskRouter, filePath: string, audience?: string): Promise<string>;
32
+ /** List all registered runners and metadata. */
33
+ export declare function listRunners(registry: RunnerRegistry): string;
34
+ /** Delegate a task to an external runner or auto-route. */
35
+ export declare function delegateTask(router: TaskRouter, task: string, runnerId?: string, params?: Record<string, unknown> | null): Promise<string>;
36
+ /** Fan out a task across multiple runners concurrently and produce a benchmark report. */
37
+ export declare function benchmarkRun(registry: RunnerRegistry, engine: BenchmarkEngine, options: {
38
+ task: string;
39
+ runner_ids?: string[] | null;
40
+ params?: Record<string, unknown> | null;
41
+ reference_answer?: string | null;
42
+ judge_runner_id?: string | null;
43
+ eval_criteria?: Record<string, unknown> | null;
44
+ }): Promise<string>;
45
+ export declare function pluginConfigure(_args?: Record<string, unknown>): Record<string, unknown>;
46
+ export declare function pluginStatus(registry: RunnerRegistry): Record<string, unknown>;
47
+ export declare function pluginRemove(): Record<string, unknown>;
48
+ export declare function pluginHealthCheck(registry: RunnerRegistry): Record<string, unknown>;
49
+ export declare function pluginGetLogs(args?: Record<string, unknown>): Record<string, unknown>;