@theone1345/smartrelay 0.2.0 → 0.3.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 +127 -17
- package/config/runners/agents.yaml +14 -1
- package/dist/credentials.d.ts +94 -0
- package/dist/credentials.js +168 -0
- package/dist/credentials.js.map +1 -0
- package/dist/http-api.d.ts +1 -7
- package/dist/http-api.js +6 -169
- package/dist/http-api.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/install.d.ts +57 -0
- package/dist/install.js +216 -0
- package/dist/install.js.map +1 -0
- package/dist/logger.d.ts +2 -0
- package/dist/logger.js +21 -1
- package/dist/logger.js.map +1 -1
- package/dist/profiles/review-profiles.d.ts +32 -0
- package/dist/profiles/review-profiles.js +348 -0
- package/dist/profiles/review-profiles.js.map +1 -0
- package/dist/router.js +18 -3
- package/dist/router.js.map +1 -1
- package/dist/runners/anthropic.js +2 -3
- package/dist/runners/anthropic.js.map +1 -1
- package/dist/runners/base.d.ts +8 -0
- package/dist/runners/base.js +13 -0
- package/dist/runners/base.js.map +1 -1
- package/dist/runners/openai.js +2 -3
- package/dist/runners/openai.js.map +1 -1
- package/dist/runners/registry.d.ts +2 -0
- package/dist/runners/registry.js +4 -0
- package/dist/runners/registry.js.map +1 -1
- package/dist/server.d.ts +1 -6
- package/dist/server.js +134 -66
- package/dist/server.js.map +1 -1
- package/dist/setup.d.ts +65 -0
- package/dist/setup.js +411 -0
- package/dist/setup.js.map +1 -0
- package/dist/tools/dispatch.d.ts +33 -0
- package/dist/tools/dispatch.js +222 -0
- package/dist/tools/dispatch.js.map +1 -0
- package/dist/tools/handlers.d.ts +8 -2
- package/dist/tools/handlers.js +119 -27
- package/dist/tools/handlers.js.map +1 -1
- package/dist/util.d.ts +37 -4
- package/dist/util.js +71 -15
- package/dist/util.js.map +1 -1
- package/package.json +28 -3
- package/prompts/code_review.md +26 -20
- package/prompts/security_audit.md +109 -0
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transport-agnostic tool dispatch.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from `http-api.ts` so the HTTP API, the MCPHub plugin, and tests all
|
|
5
|
+
* route through one switch instead of three drifting copies. Adding a tool here
|
|
6
|
+
* reaches every surface at once.
|
|
7
|
+
*
|
|
8
|
+
* Deliberately does NOT call `loadDotEnv()` at module scope — only the two CLI
|
|
9
|
+
* entrypoints (`server.ts`, `http-api.ts`) do. If this module loaded `.env`
|
|
10
|
+
* files, an ambient `.env` sitting in whatever directory the host process
|
|
11
|
+
* happens to run from would silently override credentials the user configured
|
|
12
|
+
* explicitly (for example in the MCPHub settings UI).
|
|
13
|
+
*/
|
|
14
|
+
import { BenchmarkEngine } from '../benchmark/engine.js';
|
|
15
|
+
import { getLogger } from '../logger.js';
|
|
16
|
+
import { TaskRouter } from '../router.js';
|
|
17
|
+
import { RunnerRegistry } from '../runners/registry.js';
|
|
18
|
+
import { askSubagent, auditFileSecurity, auditSecurity, benchmarkRun, createPlan, delegateTask, explainCode, explainFile, generateTests, getActiveModel, listRunners, pluginConfigure, pluginGetLogs, pluginHealthCheck, pluginRemove, pluginStatus, reviewCode, reviewFile, switchModel, testFile, } from './handlers.js';
|
|
19
|
+
const logger = getLogger('smartrelay.dispatch');
|
|
20
|
+
let registryInstance = null;
|
|
21
|
+
let engineInstance = null;
|
|
22
|
+
let routerInstance = null;
|
|
23
|
+
export function getRegistry(configPath) {
|
|
24
|
+
if (!registryInstance) {
|
|
25
|
+
try {
|
|
26
|
+
registryInstance = RunnerRegistry.fromYaml(configPath);
|
|
27
|
+
logger.info(`Loaded runners: [${registryInstance.registeredIds().join(', ')}]`);
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
logger.warning(`Could not initialize registry on startup: ${err}`);
|
|
31
|
+
registryInstance = new RunnerRegistry(configPath ?? null);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
registryInstance.reloadIfModified();
|
|
36
|
+
}
|
|
37
|
+
return registryInstance;
|
|
38
|
+
}
|
|
39
|
+
export function getEngine() {
|
|
40
|
+
const reg = getRegistry();
|
|
41
|
+
if (!engineInstance || engineInstance.registry !== reg) {
|
|
42
|
+
const rawConcurrency = reg.serverConfig['max_concurrency'];
|
|
43
|
+
const maxConcurrency = typeof rawConcurrency === 'number' ? rawConcurrency : 5;
|
|
44
|
+
engineInstance = new BenchmarkEngine(reg, maxConcurrency);
|
|
45
|
+
}
|
|
46
|
+
return engineInstance;
|
|
47
|
+
}
|
|
48
|
+
export function getRouter() {
|
|
49
|
+
const reg = getRegistry();
|
|
50
|
+
if (!routerInstance || routerInstance.registry !== reg) {
|
|
51
|
+
routerInstance = new TaskRouter(reg);
|
|
52
|
+
}
|
|
53
|
+
return routerInstance;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Build a standalone context that does not share the module-level singletons.
|
|
57
|
+
*
|
|
58
|
+
* Used where the process hosts more than just SmartRelay (the MCPHub plugin) and
|
|
59
|
+
* by tests that need an isolated registry.
|
|
60
|
+
*/
|
|
61
|
+
export function createDispatchContext(configPath) {
|
|
62
|
+
const registry = RunnerRegistry.fromYaml(configPath ?? null);
|
|
63
|
+
const rawConcurrency = registry.serverConfig['max_concurrency'];
|
|
64
|
+
const maxConcurrency = typeof rawConcurrency === 'number' ? rawConcurrency : 5;
|
|
65
|
+
return {
|
|
66
|
+
registry,
|
|
67
|
+
router: new TaskRouter(registry),
|
|
68
|
+
engine: new BenchmarkEngine(registry, maxConcurrency),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
// =========================================================================
|
|
72
|
+
// DISPATCH TOOLS
|
|
73
|
+
// =========================================================================
|
|
74
|
+
export async function dispatchTool(toolName, args = {}, ctx) {
|
|
75
|
+
const router = ctx ? ctx.router : getRouter();
|
|
76
|
+
const registry = ctx ? ctx.registry : getRegistry();
|
|
77
|
+
const engine = ctx ? ctx.engine : getEngine();
|
|
78
|
+
// Normalize tool name (handle both smartrelay_* and plain tool names)
|
|
79
|
+
const norm = toolName.startsWith('smartrelay_') ? toolName : `smartrelay_${toolName}`;
|
|
80
|
+
switch (norm) {
|
|
81
|
+
// Plugin lifecycle
|
|
82
|
+
case 'smartrelay_configure':
|
|
83
|
+
return pluginConfigure(args);
|
|
84
|
+
case 'smartrelay_status':
|
|
85
|
+
return pluginStatus(registry);
|
|
86
|
+
case 'smartrelay_remove':
|
|
87
|
+
return pluginRemove();
|
|
88
|
+
case 'smartrelay_health_check':
|
|
89
|
+
return pluginHealthCheck(registry);
|
|
90
|
+
case 'smartrelay_get_logs':
|
|
91
|
+
return pluginGetLogs(args);
|
|
92
|
+
// Model switching
|
|
93
|
+
case 'smartrelay_switch_model': {
|
|
94
|
+
const model = typeof args['model'] === 'string' ? args['model'] : 'auto';
|
|
95
|
+
return switchModel(router, model);
|
|
96
|
+
}
|
|
97
|
+
case 'smartrelay_get_active_model':
|
|
98
|
+
return getActiveModel(router);
|
|
99
|
+
// Delegation tools
|
|
100
|
+
case 'smartrelay_create_plan': {
|
|
101
|
+
const goal = typeof args['goal'] === 'string' ? args['goal'] : '';
|
|
102
|
+
const context = typeof args['context'] === 'string' ? args['context'] : '';
|
|
103
|
+
if (!goal)
|
|
104
|
+
return { error: 'Missing required argument: goal' };
|
|
105
|
+
return createPlan(router, goal, context);
|
|
106
|
+
}
|
|
107
|
+
case 'smartrelay_review_code': {
|
|
108
|
+
const code = typeof args['code'] === 'string' ? args['code'] : '';
|
|
109
|
+
const focus = typeof args['focus'] === 'string'
|
|
110
|
+
? args['focus']
|
|
111
|
+
: 'bugs, security, clean code, and performance';
|
|
112
|
+
const language = typeof args['language'] === 'string' ? args['language'] : 'auto';
|
|
113
|
+
if (!code)
|
|
114
|
+
return { error: 'Missing required argument: code' };
|
|
115
|
+
return reviewCode(router, code, focus, language);
|
|
116
|
+
}
|
|
117
|
+
case 'smartrelay_generate_tests': {
|
|
118
|
+
const code = typeof args['code'] === 'string' ? args['code'] : '';
|
|
119
|
+
const framework = typeof args['framework'] === 'string'
|
|
120
|
+
? args['framework']
|
|
121
|
+
: 'standard unit test framework (pytest, flutter_test, etc.)';
|
|
122
|
+
if (!code)
|
|
123
|
+
return { error: 'Missing required argument: code' };
|
|
124
|
+
return generateTests(router, code, framework);
|
|
125
|
+
}
|
|
126
|
+
case 'smartrelay_ask_subagent': {
|
|
127
|
+
const prompt = typeof args['prompt'] === 'string' ? args['prompt'] : '';
|
|
128
|
+
const model = typeof args['model'] === 'string' ? args['model'] : 'auto';
|
|
129
|
+
if (!prompt)
|
|
130
|
+
return { error: 'Missing required argument: prompt' };
|
|
131
|
+
return askSubagent(router, prompt, model);
|
|
132
|
+
}
|
|
133
|
+
case 'smartrelay_review_file': {
|
|
134
|
+
const filePath = typeof args['file_path'] === 'string' ? args['file_path'] : '';
|
|
135
|
+
const focus = typeof args['focus'] === 'string'
|
|
136
|
+
? args['focus']
|
|
137
|
+
: 'bugs, security, clean code, and performance';
|
|
138
|
+
const language = typeof args['language'] === 'string' ? args['language'] : 'auto';
|
|
139
|
+
if (!filePath)
|
|
140
|
+
return { error: 'Missing required argument: file_path' };
|
|
141
|
+
return reviewFile(router, filePath, focus, language);
|
|
142
|
+
}
|
|
143
|
+
case 'smartrelay_test_file': {
|
|
144
|
+
const filePath = typeof args['file_path'] === 'string' ? args['file_path'] : '';
|
|
145
|
+
const framework = typeof args['framework'] === 'string'
|
|
146
|
+
? args['framework']
|
|
147
|
+
: 'standard unit test framework (pytest, flutter_test, etc.)';
|
|
148
|
+
if (!filePath)
|
|
149
|
+
return { error: 'Missing required argument: file_path' };
|
|
150
|
+
return testFile(router, filePath, framework);
|
|
151
|
+
}
|
|
152
|
+
case 'smartrelay_explain_code': {
|
|
153
|
+
const code = typeof args['code'] === 'string' ? args['code'] : '';
|
|
154
|
+
const audience = typeof args['audience'] === 'string' ? args['audience'] : 'mid-level engineer';
|
|
155
|
+
const language = typeof args['language'] === 'string' ? args['language'] : 'auto';
|
|
156
|
+
if (!code)
|
|
157
|
+
return { error: 'Missing required argument: code' };
|
|
158
|
+
return explainCode(router, code, audience, language);
|
|
159
|
+
}
|
|
160
|
+
case 'smartrelay_explain_file': {
|
|
161
|
+
const filePath = typeof args['file_path'] === 'string' ? args['file_path'] : '';
|
|
162
|
+
const audience = typeof args['audience'] === 'string' ? args['audience'] : 'mid-level engineer';
|
|
163
|
+
if (!filePath)
|
|
164
|
+
return { error: 'Missing required argument: file_path' };
|
|
165
|
+
return explainFile(router, filePath, audience);
|
|
166
|
+
}
|
|
167
|
+
case 'smartrelay_audit_security': {
|
|
168
|
+
const code = typeof args['code'] === 'string' ? args['code'] : '';
|
|
169
|
+
const focus = typeof args['focus'] === 'string'
|
|
170
|
+
? args['focus']
|
|
171
|
+
: 'OWASP Top 10, CWE vulnerabilities, secrets, and auth flaws';
|
|
172
|
+
const language = typeof args['language'] === 'string' ? args['language'] : 'auto';
|
|
173
|
+
if (!code)
|
|
174
|
+
return { error: 'Missing required argument: code' };
|
|
175
|
+
return auditSecurity(router, code, focus, language);
|
|
176
|
+
}
|
|
177
|
+
case 'smartrelay_audit_file_security': {
|
|
178
|
+
const filePath = typeof args['file_path'] === 'string' ? args['file_path'] : '';
|
|
179
|
+
const focus = typeof args['focus'] === 'string'
|
|
180
|
+
? args['focus']
|
|
181
|
+
: 'OWASP Top 10, CWE vulnerabilities, secrets, and auth flaws';
|
|
182
|
+
const language = typeof args['language'] === 'string' ? args['language'] : 'auto';
|
|
183
|
+
if (!filePath)
|
|
184
|
+
return { error: 'Missing required argument: file_path' };
|
|
185
|
+
return auditFileSecurity(router, filePath, focus, language);
|
|
186
|
+
}
|
|
187
|
+
case 'smartrelay_list_runners':
|
|
188
|
+
return listRunners(registry);
|
|
189
|
+
case 'smartrelay_delegate_task': {
|
|
190
|
+
const task = typeof args['task'] === 'string' ? args['task'] : '';
|
|
191
|
+
const runnerId = typeof args['runner_id'] === 'string' ? args['runner_id'] : 'auto';
|
|
192
|
+
const params = typeof args['params'] === 'object' && args['params'] !== null
|
|
193
|
+
? args['params']
|
|
194
|
+
: undefined;
|
|
195
|
+
if (!task)
|
|
196
|
+
return { error: 'Missing required argument: task' };
|
|
197
|
+
return delegateTask(router, task, runnerId, params);
|
|
198
|
+
}
|
|
199
|
+
case 'smartrelay_benchmark_run': {
|
|
200
|
+
const task = typeof args['task'] === 'string' ? args['task'] : '';
|
|
201
|
+
if (!task)
|
|
202
|
+
return { error: 'Missing required argument: task' };
|
|
203
|
+
return benchmarkRun(registry, engine, {
|
|
204
|
+
task,
|
|
205
|
+
runner_ids: Array.isArray(args['runner_ids'])
|
|
206
|
+
? args['runner_ids']
|
|
207
|
+
: undefined,
|
|
208
|
+
params: typeof args['params'] === 'object' && args['params'] !== null
|
|
209
|
+
? args['params']
|
|
210
|
+
: undefined,
|
|
211
|
+
reference_answer: typeof args['reference_answer'] === 'string' ? args['reference_answer'] : undefined,
|
|
212
|
+
judge_runner_id: typeof args['judge_runner_id'] === 'string' ? args['judge_runner_id'] : undefined,
|
|
213
|
+
eval_criteria: typeof args['eval_criteria'] === 'object' && args['eval_criteria'] !== null
|
|
214
|
+
? args['eval_criteria']
|
|
215
|
+
: undefined,
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
default:
|
|
219
|
+
throw new Error(`Unknown tool: ${toolName}`);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=dispatch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../src/tools/dispatch.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/handlers.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ import type { TaskRouter } from '../router.js';
|
|
|
4
4
|
import type { RunnerRegistry } from '../runners/registry.js';
|
|
5
5
|
/** Extract strictly the review report and remove any model reasoning or scratchpad text. */
|
|
6
6
|
export declare function cleanReviewOutput(output: string): string;
|
|
7
|
+
/** Extract strictly the security audit report and remove any model reasoning or scratchpad text. */
|
|
8
|
+
export declare function cleanSecurityOutput(output: string): string;
|
|
7
9
|
/** Read a file from disk, returning `{ content, error }`. */
|
|
8
10
|
export declare function readFileFromDisk(filePath: string): {
|
|
9
11
|
content: string | null;
|
|
@@ -16,19 +18,23 @@ export declare function getActiveModel(router: TaskRouter): string;
|
|
|
16
18
|
/** Create a structured architectural implementation plan. */
|
|
17
19
|
export declare function createPlan(router: TaskRouter, goal: string, context?: string): Promise<string>;
|
|
18
20
|
/** Perform an in-depth, expert code review. */
|
|
19
|
-
export declare function reviewCode(router: TaskRouter, code: string, focus?: string): Promise<string>;
|
|
21
|
+
export declare function reviewCode(router: TaskRouter, code: string, focus?: string, language?: string): Promise<string>;
|
|
20
22
|
/** Generate production-ready unit and integration tests. */
|
|
21
23
|
export declare function generateTests(router: TaskRouter, code: string, framework?: string): Promise<string>;
|
|
22
24
|
/** Ask any question directly to an external sub-agent model. */
|
|
23
25
|
export declare function askSubagent(router: TaskRouter, prompt: string, model?: string): Promise<string>;
|
|
24
26
|
/** 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>;
|
|
27
|
+
export declare function reviewFile(router: TaskRouter, filePath: string, focus?: string, language?: string): Promise<string>;
|
|
26
28
|
/** Generate tests for a source code file directly from disk. */
|
|
27
29
|
export declare function testFile(router: TaskRouter, filePath: string, framework?: string): Promise<string>;
|
|
28
30
|
/** Get a plain-English explanation of code. */
|
|
29
31
|
export declare function explainCode(router: TaskRouter, code: string, audience?: string, language?: string): Promise<string>;
|
|
30
32
|
/** Get a plain-English explanation of a source file directly from disk. */
|
|
31
33
|
export declare function explainFile(router: TaskRouter, filePath: string, audience?: string): Promise<string>;
|
|
34
|
+
/** Perform an in-depth security audit and vulnerability assessment. */
|
|
35
|
+
export declare function auditSecurity(router: TaskRouter, code: string, focus?: string, language?: string): Promise<string>;
|
|
36
|
+
/** Audit a source code file for security vulnerabilities directly from disk — zero Claude token burn. */
|
|
37
|
+
export declare function auditFileSecurity(router: TaskRouter, filePath: string, focus?: string, language?: string): Promise<string>;
|
|
32
38
|
/** List all registered runners and metadata. */
|
|
33
39
|
export declare function listRunners(registry: RunnerRegistry): string;
|
|
34
40
|
/** Delegate a task to an external runner or auto-route. */
|
package/dist/tools/handlers.js
CHANGED
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
import { existsSync, readFileSync, statSync } from 'node:fs';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { benchmarkResultToJson } from '../benchmark/engine.js';
|
|
5
|
-
import {
|
|
5
|
+
import { noProviderKeysConfigured, SETUP_HINT, summarizeCredentials } from '../credentials.js';
|
|
6
|
+
import { getLogger, recentLogs } from '../logger.js';
|
|
6
7
|
import { makeRunnerResult, runnerResultToJson } from '../runners/base.js';
|
|
7
8
|
import { describeError, resolveUserPath } from '../util.js';
|
|
9
|
+
import { buildReviewPrompt, detectLanguage, getReviewProfile } from '../profiles/review-profiles.js';
|
|
8
10
|
const logger = getLogger('smartrelay.tools');
|
|
9
11
|
/** Extract strictly the review report and remove any model reasoning or scratchpad text. */
|
|
10
12
|
export function cleanReviewOutput(output) {
|
|
@@ -21,7 +23,28 @@ export function cleanReviewOutput(output) {
|
|
|
21
23
|
'## 💡 Suggestions & Improvements',
|
|
22
24
|
'## 💡 Suggestions',
|
|
23
25
|
'✅ No issues found',
|
|
24
|
-
|
|
26
|
+
];
|
|
27
|
+
for (const marker of markers) {
|
|
28
|
+
const idx = output.indexOf(marker);
|
|
29
|
+
if (idx !== -1) {
|
|
30
|
+
return output.slice(idx).trim();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return output.trim();
|
|
34
|
+
}
|
|
35
|
+
/** Extract strictly the security audit report and remove any model reasoning or scratchpad text. */
|
|
36
|
+
export function cleanSecurityOutput(output) {
|
|
37
|
+
const markers = [
|
|
38
|
+
'# 🔒 Security Audit Report',
|
|
39
|
+
'# 🔒',
|
|
40
|
+
'## 📊 Summary of Vulnerabilities',
|
|
41
|
+
'## 🚨 Critical & High Vulnerabilities',
|
|
42
|
+
'## 🚨 Critical',
|
|
43
|
+
'## 🔴 High',
|
|
44
|
+
'## 🟡 Medium & Low Vulnerabilities',
|
|
45
|
+
'## 🟡 Medium',
|
|
46
|
+
'## 🛡️ Security Hardening & Best Practices',
|
|
47
|
+
'## 🛡️',
|
|
25
48
|
];
|
|
26
49
|
for (const marker of markers) {
|
|
27
50
|
const idx = output.indexOf(marker);
|
|
@@ -84,20 +107,16 @@ export async function createPlan(router, goal, context = '') {
|
|
|
84
107
|
return `Plan creation failed: ${result.error_message}`;
|
|
85
108
|
}
|
|
86
109
|
/** Perform an in-depth, expert code review. */
|
|
87
|
-
export async function reviewCode(router, code, focus = 'bugs, security, clean code, and performance') {
|
|
110
|
+
export async function reviewCode(router, code, focus = 'bugs, security, clean code, and performance', language = 'auto') {
|
|
88
111
|
const runner = router.routeTask(`Review code with focus on ${focus}`);
|
|
89
112
|
if (!runner) {
|
|
90
113
|
return JSON.stringify({ error: 'No code review runner available. Check config.yaml' });
|
|
91
114
|
}
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
'- NEVER output or rewrite the entire source code file.\n' +
|
|
98
|
-
'- NEVER include internal thinking process, conversational greetings, or closing text.\n\n' +
|
|
99
|
-
`\`\`\`\n${code}\n\`\`\``;
|
|
100
|
-
const result = await runner.execute(taskPrompt);
|
|
115
|
+
const detectedLang = language.toLowerCase() === 'auto' ? detectLanguage(code) : language;
|
|
116
|
+
const profile = getReviewProfile(detectedLang);
|
|
117
|
+
logger.info(`review_code: Using profile '${profile.name}' (requested: '${language}', resolved: '${detectedLang}')`);
|
|
118
|
+
const { taskPrompt, systemPrompt } = buildReviewPrompt(profile, code, focus);
|
|
119
|
+
const result = await runner.execute(taskPrompt, { system_prompt: systemPrompt });
|
|
101
120
|
if (result.success) {
|
|
102
121
|
return cleanReviewOutput(result.output);
|
|
103
122
|
}
|
|
@@ -136,7 +155,7 @@ export async function askSubagent(router, prompt, model = 'auto') {
|
|
|
136
155
|
return `Execution error (${runner.id}): ${result.error_message}`;
|
|
137
156
|
}
|
|
138
157
|
/** Review a source code file directly from disk — zero Claude token burn. */
|
|
139
|
-
export async function reviewFile(router, filePath, focus = 'bugs, security, clean code, and performance') {
|
|
158
|
+
export async function reviewFile(router, filePath, focus = 'bugs, security, clean code, and performance', language = 'auto') {
|
|
140
159
|
const { content: code, error } = readFileFromDisk(filePath);
|
|
141
160
|
if (error || code === null) {
|
|
142
161
|
return error ?? '❌ Could not read file.';
|
|
@@ -147,15 +166,11 @@ export async function reviewFile(router, filePath, focus = 'bugs, security, clea
|
|
|
147
166
|
if (!runner) {
|
|
148
167
|
return JSON.stringify({ error: 'No code review runner available. Check config.yaml' });
|
|
149
168
|
}
|
|
150
|
-
const
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
'- NEVER output or rewrite the entire source code file.\n' +
|
|
156
|
-
'- NEVER include internal thinking process, conversational greetings, or closing text.\n\n' +
|
|
157
|
-
`\`\`\`\n${code}\n\`\`\``;
|
|
158
|
-
const result = await runner.execute(taskPrompt);
|
|
169
|
+
const detectedLang = language.toLowerCase() === 'auto' ? detectLanguage(code, filePath) : language;
|
|
170
|
+
const profile = getReviewProfile(detectedLang);
|
|
171
|
+
logger.info(`review_file: Using profile '${profile.name}' for ${resolvedName} (requested: '${language}', resolved: '${detectedLang}')`);
|
|
172
|
+
const { taskPrompt, systemPrompt } = buildReviewPrompt(profile, code, focus, resolvedName);
|
|
173
|
+
const result = await runner.execute(taskPrompt, { system_prompt: systemPrompt });
|
|
159
174
|
if (result.success) {
|
|
160
175
|
return cleanReviewOutput(result.output);
|
|
161
176
|
}
|
|
@@ -218,6 +233,64 @@ export async function explainFile(router, filePath, audience = 'mid-level engine
|
|
|
218
233
|
}
|
|
219
234
|
return `Code explanation failed: ${result.error_message}`;
|
|
220
235
|
}
|
|
236
|
+
/** Perform an in-depth security audit and vulnerability assessment. */
|
|
237
|
+
export async function auditSecurity(router, code, focus = 'OWASP Top 10, CWE vulnerabilities, secrets, and auth flaws', language = 'auto') {
|
|
238
|
+
const runner = router.routeTask(`Perform security audit focusing on ${focus}`);
|
|
239
|
+
if (!runner) {
|
|
240
|
+
return JSON.stringify({ error: 'No security agent runner available. Check config.yaml' });
|
|
241
|
+
}
|
|
242
|
+
const detectedLang = language.toLowerCase() === 'auto' ? detectLanguage(code) : language;
|
|
243
|
+
const profile = getReviewProfile(detectedLang);
|
|
244
|
+
logger.info(`audit_security: Using profile '${profile.name}' (requested: '${language}', resolved: '${detectedLang}')`);
|
|
245
|
+
const taskPrompt = `Perform a rigorous security audit and vulnerability assessment of the provided code focusing on: ${focus}.\n\n` +
|
|
246
|
+
`Language Profile: ${profile.name}\n\n` +
|
|
247
|
+
'Format your entire response strictly using the `# 🔒 Security Audit Report` template with Security Posture Score, ' +
|
|
248
|
+
'Summary of Vulnerabilities table, 🚨 Critical & High Vulnerabilities (with CWE IDs and diffs), 🟡 Medium & Low Vulnerabilities, ' +
|
|
249
|
+
'🛡️ Security Hardening & Best Practices, and 🛠️ Security Verification & SAST Commands.\n\n' +
|
|
250
|
+
'STRICT RULES:\n' +
|
|
251
|
+
'- Begin directly with `# 🔒 Security Audit Report`.\n' +
|
|
252
|
+
'- NEVER output or rewrite the entire source code file.\n' +
|
|
253
|
+
'- Provide syntactically valid remediation diffs with 1-2 lines of surrounding unchanged context.\n' +
|
|
254
|
+
'- Cite CWE numbers where applicable.\n\n' +
|
|
255
|
+
`\`\`\`\n${code}\n\`\`\``;
|
|
256
|
+
const result = await runner.execute(taskPrompt);
|
|
257
|
+
if (result.success) {
|
|
258
|
+
return cleanSecurityOutput(result.output);
|
|
259
|
+
}
|
|
260
|
+
return `Security audit failed: ${result.error_message}`;
|
|
261
|
+
}
|
|
262
|
+
/** Audit a source code file for security vulnerabilities directly from disk — zero Claude token burn. */
|
|
263
|
+
export async function auditFileSecurity(router, filePath, focus = 'OWASP Top 10, CWE vulnerabilities, secrets, and auth flaws', language = 'auto') {
|
|
264
|
+
const { content: code, error } = readFileFromDisk(filePath);
|
|
265
|
+
if (error || code === null) {
|
|
266
|
+
return error ?? '❌ Could not read file.';
|
|
267
|
+
}
|
|
268
|
+
const resolvedName = path.basename(filePath);
|
|
269
|
+
logger.info(`audit_file_security: Read ${code.length} chars from ${resolvedName}`);
|
|
270
|
+
const runner = router.routeTask(`Perform security audit focusing on ${focus}`);
|
|
271
|
+
if (!runner) {
|
|
272
|
+
return JSON.stringify({ error: 'No security agent runner available. Check config.yaml' });
|
|
273
|
+
}
|
|
274
|
+
const detectedLang = language.toLowerCase() === 'auto' ? detectLanguage(code, filePath) : language;
|
|
275
|
+
const profile = getReviewProfile(detectedLang);
|
|
276
|
+
logger.info(`audit_file_security: Using profile '${profile.name}' for ${resolvedName} (requested: '${language}', resolved: '${detectedLang}')`);
|
|
277
|
+
const taskPrompt = `Perform a rigorous security audit and vulnerability assessment of **\`${resolvedName}\`** focusing on: ${focus}.\n\n` +
|
|
278
|
+
`Language Profile: ${profile.name}\n\n` +
|
|
279
|
+
'Format your entire response strictly using the `# 🔒 Security Audit Report` template with Security Posture Score, ' +
|
|
280
|
+
'Summary of Vulnerabilities table, 🚨 Critical & High Vulnerabilities (with CWE IDs and diffs), 🟡 Medium & Low Vulnerabilities, ' +
|
|
281
|
+
'🛡️ Security Hardening & Best Practices, and 🛠️ Security Verification & SAST Commands.\n\n' +
|
|
282
|
+
'STRICT RULES:\n' +
|
|
283
|
+
'- Begin directly with `# 🔒 Security Audit Report`.\n' +
|
|
284
|
+
'- NEVER output or rewrite the entire source code file.\n' +
|
|
285
|
+
'- Provide syntactically valid remediation diffs with 1-2 lines of surrounding unchanged context.\n' +
|
|
286
|
+
'- Cite CWE numbers where applicable.\n\n' +
|
|
287
|
+
`\`\`\`\n${code}\n\`\`\``;
|
|
288
|
+
const result = await runner.execute(taskPrompt);
|
|
289
|
+
if (result.success) {
|
|
290
|
+
return cleanSecurityOutput(result.output);
|
|
291
|
+
}
|
|
292
|
+
return `Security audit failed: ${result.error_message}`;
|
|
293
|
+
}
|
|
221
294
|
/** List all registered runners and metadata. */
|
|
222
295
|
export function listRunners(registry) {
|
|
223
296
|
const metadata = registry.getRunnersMetadata();
|
|
@@ -269,6 +342,9 @@ export async function benchmarkRun(registry, engine, options) {
|
|
|
269
342
|
const metadata = registry.getRunnersMetadata();
|
|
270
343
|
targetRunnerIds = metadata.filter((r) => r.is_authenticated).map((r) => r.runner_id);
|
|
271
344
|
if (targetRunnerIds.length === 0) {
|
|
345
|
+
// Kept as a fallback rather than an error: keyless runners (Ollama) are
|
|
346
|
+
// legitimately usable, so refusing here would break local-only setups.
|
|
347
|
+
logger.warning(`No authenticated runners; falling back to all registered runners. ${SETUP_HINT}`);
|
|
272
348
|
targetRunnerIds = registry.registeredIds();
|
|
273
349
|
}
|
|
274
350
|
}
|
|
@@ -291,10 +367,18 @@ export function pluginConfigure(_args) {
|
|
|
291
367
|
}
|
|
292
368
|
export function pluginStatus(registry) {
|
|
293
369
|
try {
|
|
370
|
+
const summary = summarizeCredentials(registry.getRunnersMetadata());
|
|
371
|
+
// "Configured" means a hosted provider can actually be reached. The old
|
|
372
|
+
// hardcoded `true` reported healthy with no credentials at all, and keying
|
|
373
|
+
// off `ready > 0` would too, since keyless Ollama runners always count.
|
|
374
|
+
const configured = !noProviderKeysConfigured(summary);
|
|
294
375
|
return {
|
|
295
|
-
configured
|
|
376
|
+
configured,
|
|
296
377
|
runners_available: registry.registeredIds().length,
|
|
297
|
-
|
|
378
|
+
runners_ready: summary.ready,
|
|
379
|
+
missing_env_vars: summary.missingEnvVars,
|
|
380
|
+
status: configured ? 'healthy' : 'unhealthy',
|
|
381
|
+
...(configured ? {} : { hint: SETUP_HINT, missing_required: summary.missingRequired }),
|
|
298
382
|
};
|
|
299
383
|
}
|
|
300
384
|
catch (err) {
|
|
@@ -310,11 +394,17 @@ export function pluginRemove() {
|
|
|
310
394
|
}
|
|
311
395
|
export function pluginHealthCheck(registry) {
|
|
312
396
|
try {
|
|
397
|
+
const summary = summarizeCredentials(registry.getRunnersMetadata());
|
|
398
|
+
const configured = !noProviderKeysConfigured(summary);
|
|
313
399
|
return {
|
|
314
|
-
|
|
400
|
+
// Credentials are part of health: a registry that loaded 25 runners it
|
|
401
|
+
// cannot authenticate is not a working install.
|
|
402
|
+
status: configured ? 'healthy' : 'unhealthy',
|
|
315
403
|
details: {
|
|
316
|
-
service: 'smartrelay
|
|
404
|
+
service: 'smartrelay',
|
|
317
405
|
runners_loaded: registry.registeredIds().length,
|
|
406
|
+
runners_ready: summary.ready,
|
|
407
|
+
...(configured ? {} : { missing_required: summary.missingRequired, hint: SETUP_HINT }),
|
|
318
408
|
},
|
|
319
409
|
};
|
|
320
410
|
}
|
|
@@ -326,6 +416,8 @@ export function pluginHealthCheck(registry) {
|
|
|
326
416
|
}
|
|
327
417
|
}
|
|
328
418
|
export function pluginGetLogs(args) {
|
|
329
|
-
|
|
419
|
+
const requested = args?.['limit'];
|
|
420
|
+
const limit = typeof requested === 'number' && Number.isFinite(requested) ? requested : 50;
|
|
421
|
+
return { logs: recentLogs(limit), limit };
|
|
330
422
|
}
|
|
331
423
|
//# sourceMappingURL=handlers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/tools/handlers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/tools/handlers.ts"],"names":[],"mappings":"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"}
|
package/dist/util.d.ts
CHANGED
|
@@ -20,13 +20,46 @@ export declare function resolveUserPath(filePath: string): string;
|
|
|
20
20
|
*/
|
|
21
21
|
export declare function findProjectRoot(startDir?: string): string;
|
|
22
22
|
/**
|
|
23
|
-
*
|
|
24
|
-
*
|
|
23
|
+
* Directory holding SmartRelay's user-level state, `~/.smartrelay` by default.
|
|
24
|
+
*
|
|
25
|
+
* `SMARTRELAY_HOME` overrides it so tests can redirect the credential file to a
|
|
26
|
+
* temp dir without ever touching the developer's real home directory.
|
|
27
|
+
*/
|
|
28
|
+
export declare function smartrelayHome(override?: string): string;
|
|
29
|
+
/** The global credential file written by `smartrelay setup`. */
|
|
30
|
+
export declare function globalEnvPath(homeOverride?: string): string;
|
|
31
|
+
/**
|
|
32
|
+
* Parse `.env` text into ordered key/value pairs.
|
|
33
|
+
*
|
|
34
|
+
* A `Map` rather than a plain object: insertion order is preserved and a key
|
|
35
|
+
* literally named `__proto__` cannot poison a prototype.
|
|
25
36
|
*
|
|
26
37
|
* Deliberately hand-rolled rather than delegating to a dotenv package so the
|
|
27
|
-
* quote-stripping
|
|
38
|
+
* quote-stripping behavior stays identical to the Python original. The setup
|
|
39
|
+
* wizard reuses this so the writer and the loader can never disagree about it.
|
|
40
|
+
*/
|
|
41
|
+
export declare function parseEnvText(text: string): Map<string, string>;
|
|
42
|
+
/**
|
|
43
|
+
* Populate `process.env` from the `.env` files SmartRelay knows about.
|
|
44
|
+
*
|
|
45
|
+
* Precedence, highest first:
|
|
46
|
+
* 1. variables already in `process.env`
|
|
47
|
+
* 2. `<cwd>/.env` — project-local
|
|
48
|
+
* 3. `<project root>/.env`
|
|
49
|
+
* 4. `~/.smartrelay/.env` — written by `smartrelay setup`
|
|
50
|
+
*
|
|
51
|
+
* Every candidate is read, not just the first that exists: the global file is a
|
|
52
|
+
* fallback for keys a project never defines. Since the assignment below only
|
|
53
|
+
* fills in names that are still unset, reading the list in order produces that
|
|
54
|
+
* precedence for free.
|
|
55
|
+
*
|
|
56
|
+
* `cwd`/`home` exist only so tests can point at temp directories — `process.chdir`
|
|
57
|
+
* is process-global and unsafe across parallel test files.
|
|
28
58
|
*/
|
|
29
|
-
export declare function loadDotEnv(
|
|
59
|
+
export declare function loadDotEnv(options?: {
|
|
60
|
+
cwd?: string;
|
|
61
|
+
home?: string;
|
|
62
|
+
}): void;
|
|
30
63
|
/** Counting semaphore, replacing `asyncio.Semaphore`. */
|
|
31
64
|
export declare class Semaphore {
|
|
32
65
|
private available;
|