@jigyasudham/veto 1.2.15 → 1.2.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -6
- package/dist/cli.js +173 -14
- package/dist/cli.js.map +1 -1
- package/dist/memory/local.d.ts +19 -0
- package/dist/memory/local.d.ts.map +1 -1
- package/dist/memory/local.js +55 -3
- package/dist/memory/local.js.map +1 -1
- package/dist/memory/schema.d.ts +2 -1
- package/dist/memory/schema.d.ts.map +1 -1
- package/dist/memory/schema.js +14 -0
- package/dist/memory/schema.js.map +1 -1
- package/dist/server.js +204 -6
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
package/dist/memory/local.js
CHANGED
|
@@ -39,8 +39,33 @@ export function getDb() {
|
|
|
39
39
|
migrateCouncilDuration(_db);
|
|
40
40
|
migrateRateUsageTokens(_db);
|
|
41
41
|
migrateUsageLog(_db);
|
|
42
|
+
migrateSessionSaveType(_db);
|
|
43
|
+
migrateScanDiagnostics(_db);
|
|
42
44
|
return _db;
|
|
43
45
|
}
|
|
46
|
+
// Creates scan_diagnostics table if it doesn't exist (v1.2.18 migration)
|
|
47
|
+
function migrateScanDiagnostics(db) {
|
|
48
|
+
db.exec(`
|
|
49
|
+
CREATE TABLE IF NOT EXISTS scan_diagnostics (
|
|
50
|
+
id TEXT PRIMARY KEY,
|
|
51
|
+
file_path TEXT NOT NULL,
|
|
52
|
+
line INTEGER NOT NULL DEFAULT 0,
|
|
53
|
+
col_start INTEGER NOT NULL DEFAULT 0,
|
|
54
|
+
message TEXT NOT NULL,
|
|
55
|
+
severity TEXT NOT NULL DEFAULT 'warning',
|
|
56
|
+
source TEXT NOT NULL DEFAULT 'veto',
|
|
57
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
58
|
+
)
|
|
59
|
+
`);
|
|
60
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_scan_diag_file ON scan_diagnostics(file_path)`);
|
|
61
|
+
}
|
|
62
|
+
// Adds save_type column to sessions if it doesn't exist (v1.2.17 migration)
|
|
63
|
+
function migrateSessionSaveType(db) {
|
|
64
|
+
const cols = db.prepare('PRAGMA table_info(sessions)').all();
|
|
65
|
+
const names = new Set(cols.map(c => c.name));
|
|
66
|
+
if (!names.has('save_type'))
|
|
67
|
+
db.exec("ALTER TABLE sessions ADD COLUMN save_type TEXT NOT NULL DEFAULT 'manual'");
|
|
68
|
+
}
|
|
44
69
|
// Adds token_count column to rate_usage if it doesn't exist (v1.2.13 migration)
|
|
45
70
|
function migrateRateUsageTokens(db) {
|
|
46
71
|
const cols = db.prepare('PRAGMA table_info(rate_usage)').all();
|
|
@@ -113,10 +138,11 @@ export function saveSession(input) {
|
|
|
113
138
|
const platform = input.platform ?? 'claude';
|
|
114
139
|
const connection_type = input.connection_type ?? 'subscription';
|
|
115
140
|
const token_count = input.token_count ?? 0;
|
|
141
|
+
const save_type = input.save_type ?? 'manual';
|
|
116
142
|
db.prepare(`
|
|
117
|
-
INSERT INTO sessions (id, started_at, platform, connection_type, project_dir, summary, context, task_state, token_count)
|
|
118
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
119
|
-
`).run(id, now, platform, connection_type, input.project_dir ?? null, input.summary ?? null, input.context ? JSON.stringify(input.context) : null, input.task_state ? JSON.stringify(input.task_state) : null, token_count);
|
|
143
|
+
INSERT INTO sessions (id, started_at, platform, connection_type, project_dir, summary, context, task_state, token_count, save_type)
|
|
144
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
145
|
+
`).run(id, now, platform, connection_type, input.project_dir ?? null, input.summary ?? null, input.context ? JSON.stringify(input.context) : null, input.task_state ? JSON.stringify(input.task_state) : null, token_count, save_type);
|
|
120
146
|
// Record usage event
|
|
121
147
|
db.prepare(`
|
|
122
148
|
INSERT INTO usage_events (id, session_id, platform, connection_type, tokens, event_type, recorded_at)
|
|
@@ -430,6 +456,32 @@ export function getAuditLog(opts = {}) {
|
|
|
430
456
|
// Sort combined and return limit
|
|
431
457
|
return events.sort((a, b) => b.timestamp.localeCompare(a.timestamp)).slice(0, limit);
|
|
432
458
|
}
|
|
459
|
+
export function storeScanDiagnostics(filePath, findings, source = 'veto') {
|
|
460
|
+
const db = getDb();
|
|
461
|
+
db.prepare('DELETE FROM scan_diagnostics WHERE file_path = ?').run(filePath);
|
|
462
|
+
if (findings.length === 0)
|
|
463
|
+
return;
|
|
464
|
+
const stmt = db.prepare('INSERT INTO scan_diagnostics (id, file_path, line, col_start, message, severity, source) VALUES (?, ?, ?, ?, ?, ?, ?)');
|
|
465
|
+
for (const f of findings) {
|
|
466
|
+
stmt.run(randomUUID(), filePath, Math.max(0, f.line - 1), f.col_start ?? 0, f.message, f.severity, source);
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
export function getScanDiagnostics(filePath) {
|
|
470
|
+
const db = getDb();
|
|
471
|
+
if (filePath) {
|
|
472
|
+
return db.prepare('SELECT * FROM scan_diagnostics WHERE file_path = ? ORDER BY line').all(filePath);
|
|
473
|
+
}
|
|
474
|
+
return db.prepare('SELECT * FROM scan_diagnostics ORDER BY file_path, line').all();
|
|
475
|
+
}
|
|
476
|
+
export function clearScanDiagnostics(filePath) {
|
|
477
|
+
const db = getDb();
|
|
478
|
+
if (filePath) {
|
|
479
|
+
db.prepare('DELETE FROM scan_diagnostics WHERE file_path = ?').run(filePath);
|
|
480
|
+
}
|
|
481
|
+
else {
|
|
482
|
+
db.exec('DELETE FROM scan_diagnostics');
|
|
483
|
+
}
|
|
484
|
+
}
|
|
433
485
|
export function getHealthStats() {
|
|
434
486
|
const db = getDb();
|
|
435
487
|
const count = (table) => db.prepare(`SELECT COUNT(*) as n FROM ${table}`).get().n;
|
package/dist/memory/local.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/memory/local.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/memory/local.ts"],"names":[],"mappings":"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"}
|
package/dist/memory/schema.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const CREATE_TABLES = "\n CREATE TABLE IF NOT EXISTS sessions (\n id TEXT PRIMARY KEY,\n started_at TEXT NOT NULL,\n ended_at TEXT,\n platform TEXT NOT NULL DEFAULT 'claude',\n active_client TEXT,\n last_resumed_at TEXT,\n connection_type TEXT NOT NULL DEFAULT 'subscription',\n project_dir TEXT,\n summary TEXT,\n context TEXT,\n task_state TEXT,\n token_count INTEGER DEFAULT 0,\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS docs_cache (\n id TEXT PRIMARY KEY,\n package_name TEXT NOT NULL,\n ecosystem TEXT NOT NULL,\n version TEXT NOT NULL,\n content TEXT NOT NULL,\n fetched_at TEXT NOT NULL,\n UNIQUE(package_name, ecosystem, version)\n );\n\n CREATE TABLE IF NOT EXISTS task_plans (\n id TEXT PRIMARY KEY,\n description_hash TEXT NOT NULL,\n plan_json TEXT NOT NULL,\n project_dir TEXT,\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS usage_events (\n id TEXT PRIMARY KEY,\n session_id TEXT,\n platform TEXT NOT NULL,\n connection_type TEXT NOT NULL DEFAULT 'subscription',\n tokens INTEGER DEFAULT 0,\n event_type TEXT NOT NULL DEFAULT 'session_save',\n recorded_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS decisions (\n id TEXT PRIMARY KEY,\n session_id TEXT NOT NULL,\n made_at TEXT NOT NULL,\n decision TEXT NOT NULL,\n rationale TEXT,\n council_verdict TEXT,\n files_affected TEXT,\n overridden INTEGER DEFAULT 0,\n FOREIGN KEY (session_id) REFERENCES sessions(id)\n );\n\n CREATE TABLE IF NOT EXISTS files_modified (\n id TEXT PRIMARY KEY,\n session_id TEXT NOT NULL,\n file_path TEXT NOT NULL,\n operation TEXT NOT NULL,\n modified_at TEXT NOT NULL,\n FOREIGN KEY (session_id) REFERENCES sessions(id)\n );\n\n CREATE TABLE IF NOT EXISTS council_outcomes (\n id TEXT PRIMARY KEY,\n session_id TEXT,\n task TEXT NOT NULL,\n verdict TEXT NOT NULL,\n lead_dev TEXT,\n pm TEXT,\n architect TEXT,\n ux TEXT,\n devil TEXT,\n legal TEXT,\n security TEXT,\n recommended TEXT,\n debated_at TEXT NOT NULL,\n duration_ms INTEGER DEFAULT 0\n );\n\n CREATE TABLE IF NOT EXISTS learning_data (\n id TEXT PRIMARY KEY,\n task_type TEXT NOT NULL,\n complexity INTEGER NOT NULL,\n model_tier INTEGER NOT NULL,\n output_quality INTEGER,\n tokens_used INTEGER,\n agent TEXT,\n recorded_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS patterns (\n id TEXT PRIMARY KEY,\n pattern_key TEXT NOT NULL UNIQUE,\n pattern_val TEXT NOT NULL,\n confidence REAL DEFAULT 1.0,\n seen_count INTEGER DEFAULT 1,\n updated_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS rate_usage (\n id TEXT PRIMARY KEY,\n platform TEXT NOT NULL,\n date_key TEXT NOT NULL,\n request_count INTEGER DEFAULT 0,\n updated_at TEXT NOT NULL DEFAULT (datetime('now')),\n UNIQUE(platform, date_key)\n );\n\n CREATE TABLE IF NOT EXISTS usage_log (\n id TEXT PRIMARY KEY,\n tool_name TEXT NOT NULL,\n session_id TEXT,\n max_tokens INTEGER NOT NULL,\n estimated_tokens INTEGER NOT NULL,\n exceeded INTEGER NOT NULL DEFAULT 0,\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS knowledge_base (\n id TEXT PRIMARY KEY,\n type TEXT NOT NULL DEFAULT 'solution',\n title TEXT NOT NULL,\n content TEXT NOT NULL,\n tags TEXT,\n project_dir TEXT,\n session_id TEXT,\n relevance REAL DEFAULT 1.0,\n accessed_count INTEGER DEFAULT 0,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n updated_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS project_map (\n id TEXT PRIMARY KEY,\n project_dir TEXT NOT NULL UNIQUE,\n structure TEXT NOT NULL,\n key_modules TEXT,\n tech_stack TEXT,\n updated_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE INDEX IF NOT EXISTS idx_sessions_platform ON sessions(platform);\n CREATE INDEX IF NOT EXISTS idx_decisions_session ON decisions(session_id);\n CREATE INDEX IF NOT EXISTS idx_files_session ON files_modified(session_id);\n CREATE INDEX IF NOT EXISTS idx_learning_task_type ON learning_data(task_type);\n CREATE INDEX IF NOT EXISTS idx_patterns_key ON patterns(pattern_key);\n CREATE INDEX IF NOT EXISTS idx_rate_usage_platform ON rate_usage(platform, date_key);\n CREATE INDEX IF NOT EXISTS idx_knowledge_type ON knowledge_base(type);\n CREATE INDEX IF NOT EXISTS idx_knowledge_project ON knowledge_base(project_dir);\n CREATE INDEX IF NOT EXISTS idx_project_map_dir ON project_map(project_dir);\n CREATE INDEX IF NOT EXISTS idx_docs_cache_pkg ON docs_cache(package_name, ecosystem);\n CREATE INDEX IF NOT EXISTS idx_usage_events_session ON usage_events(session_id);\n CREATE INDEX IF NOT EXISTS idx_usage_events_date ON usage_events(recorded_at);\n";
|
|
1
|
+
export declare const CREATE_TABLES = "\n CREATE TABLE IF NOT EXISTS sessions (\n id TEXT PRIMARY KEY,\n started_at TEXT NOT NULL,\n ended_at TEXT,\n platform TEXT NOT NULL DEFAULT 'claude',\n active_client TEXT,\n last_resumed_at TEXT,\n connection_type TEXT NOT NULL DEFAULT 'subscription',\n project_dir TEXT,\n summary TEXT,\n context TEXT,\n task_state TEXT,\n token_count INTEGER DEFAULT 0,\n save_type TEXT NOT NULL DEFAULT 'manual',\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS docs_cache (\n id TEXT PRIMARY KEY,\n package_name TEXT NOT NULL,\n ecosystem TEXT NOT NULL,\n version TEXT NOT NULL,\n content TEXT NOT NULL,\n fetched_at TEXT NOT NULL,\n UNIQUE(package_name, ecosystem, version)\n );\n\n CREATE TABLE IF NOT EXISTS task_plans (\n id TEXT PRIMARY KEY,\n description_hash TEXT NOT NULL,\n plan_json TEXT NOT NULL,\n project_dir TEXT,\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS usage_events (\n id TEXT PRIMARY KEY,\n session_id TEXT,\n platform TEXT NOT NULL,\n connection_type TEXT NOT NULL DEFAULT 'subscription',\n tokens INTEGER DEFAULT 0,\n event_type TEXT NOT NULL DEFAULT 'session_save',\n recorded_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS decisions (\n id TEXT PRIMARY KEY,\n session_id TEXT NOT NULL,\n made_at TEXT NOT NULL,\n decision TEXT NOT NULL,\n rationale TEXT,\n council_verdict TEXT,\n files_affected TEXT,\n overridden INTEGER DEFAULT 0,\n FOREIGN KEY (session_id) REFERENCES sessions(id)\n );\n\n CREATE TABLE IF NOT EXISTS files_modified (\n id TEXT PRIMARY KEY,\n session_id TEXT NOT NULL,\n file_path TEXT NOT NULL,\n operation TEXT NOT NULL,\n modified_at TEXT NOT NULL,\n FOREIGN KEY (session_id) REFERENCES sessions(id)\n );\n\n CREATE TABLE IF NOT EXISTS council_outcomes (\n id TEXT PRIMARY KEY,\n session_id TEXT,\n task TEXT NOT NULL,\n verdict TEXT NOT NULL,\n lead_dev TEXT,\n pm TEXT,\n architect TEXT,\n ux TEXT,\n devil TEXT,\n legal TEXT,\n security TEXT,\n recommended TEXT,\n debated_at TEXT NOT NULL,\n duration_ms INTEGER DEFAULT 0\n );\n\n CREATE TABLE IF NOT EXISTS learning_data (\n id TEXT PRIMARY KEY,\n task_type TEXT NOT NULL,\n complexity INTEGER NOT NULL,\n model_tier INTEGER NOT NULL,\n output_quality INTEGER,\n tokens_used INTEGER,\n agent TEXT,\n recorded_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS patterns (\n id TEXT PRIMARY KEY,\n pattern_key TEXT NOT NULL UNIQUE,\n pattern_val TEXT NOT NULL,\n confidence REAL DEFAULT 1.0,\n seen_count INTEGER DEFAULT 1,\n updated_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS rate_usage (\n id TEXT PRIMARY KEY,\n platform TEXT NOT NULL,\n date_key TEXT NOT NULL,\n request_count INTEGER DEFAULT 0,\n updated_at TEXT NOT NULL DEFAULT (datetime('now')),\n UNIQUE(platform, date_key)\n );\n\n CREATE TABLE IF NOT EXISTS usage_log (\n id TEXT PRIMARY KEY,\n tool_name TEXT NOT NULL,\n session_id TEXT,\n max_tokens INTEGER NOT NULL,\n estimated_tokens INTEGER NOT NULL,\n exceeded INTEGER NOT NULL DEFAULT 0,\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS knowledge_base (\n id TEXT PRIMARY KEY,\n type TEXT NOT NULL DEFAULT 'solution',\n title TEXT NOT NULL,\n content TEXT NOT NULL,\n tags TEXT,\n project_dir TEXT,\n session_id TEXT,\n relevance REAL DEFAULT 1.0,\n accessed_count INTEGER DEFAULT 0,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n updated_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS project_map (\n id TEXT PRIMARY KEY,\n project_dir TEXT NOT NULL UNIQUE,\n structure TEXT NOT NULL,\n key_modules TEXT,\n tech_stack TEXT,\n updated_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS scan_diagnostics (\n id TEXT PRIMARY KEY,\n file_path TEXT NOT NULL,\n line INTEGER NOT NULL DEFAULT 0,\n col_start INTEGER NOT NULL DEFAULT 0,\n message TEXT NOT NULL,\n severity TEXT NOT NULL DEFAULT 'warning',\n source TEXT NOT NULL DEFAULT 'veto',\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE INDEX IF NOT EXISTS idx_scan_diag_file ON scan_diagnostics(file_path);\n\n CREATE INDEX IF NOT EXISTS idx_sessions_platform ON sessions(platform);\n CREATE INDEX IF NOT EXISTS idx_decisions_session ON decisions(session_id);\n CREATE INDEX IF NOT EXISTS idx_files_session ON files_modified(session_id);\n CREATE INDEX IF NOT EXISTS idx_learning_task_type ON learning_data(task_type);\n CREATE INDEX IF NOT EXISTS idx_patterns_key ON patterns(pattern_key);\n CREATE INDEX IF NOT EXISTS idx_rate_usage_platform ON rate_usage(platform, date_key);\n CREATE INDEX IF NOT EXISTS idx_knowledge_type ON knowledge_base(type);\n CREATE INDEX IF NOT EXISTS idx_knowledge_project ON knowledge_base(project_dir);\n CREATE INDEX IF NOT EXISTS idx_project_map_dir ON project_map(project_dir);\n CREATE INDEX IF NOT EXISTS idx_docs_cache_pkg ON docs_cache(package_name, ecosystem);\n CREATE INDEX IF NOT EXISTS idx_usage_events_session ON usage_events(session_id);\n CREATE INDEX IF NOT EXISTS idx_usage_events_date ON usage_events(recorded_at);\n";
|
|
2
2
|
export type SessionRow = {
|
|
3
3
|
id: string;
|
|
4
4
|
started_at: string;
|
|
@@ -12,6 +12,7 @@ export type SessionRow = {
|
|
|
12
12
|
context: string | null;
|
|
13
13
|
task_state: string | null;
|
|
14
14
|
token_count: number;
|
|
15
|
+
save_type: 'manual' | 'auto';
|
|
15
16
|
created_at: string;
|
|
16
17
|
};
|
|
17
18
|
export type DocsCacheRow = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/memory/schema.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/memory/schema.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa,67LA2KzB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,UAAU,CAAC;AAEpG,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC"}
|
package/dist/memory/schema.js
CHANGED
|
@@ -14,6 +14,7 @@ export const CREATE_TABLES = `
|
|
|
14
14
|
context TEXT,
|
|
15
15
|
task_state TEXT,
|
|
16
16
|
token_count INTEGER DEFAULT 0,
|
|
17
|
+
save_type TEXT NOT NULL DEFAULT 'manual',
|
|
17
18
|
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
18
19
|
);
|
|
19
20
|
|
|
@@ -145,6 +146,19 @@ export const CREATE_TABLES = `
|
|
|
145
146
|
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
146
147
|
);
|
|
147
148
|
|
|
149
|
+
CREATE TABLE IF NOT EXISTS scan_diagnostics (
|
|
150
|
+
id TEXT PRIMARY KEY,
|
|
151
|
+
file_path TEXT NOT NULL,
|
|
152
|
+
line INTEGER NOT NULL DEFAULT 0,
|
|
153
|
+
col_start INTEGER NOT NULL DEFAULT 0,
|
|
154
|
+
message TEXT NOT NULL,
|
|
155
|
+
severity TEXT NOT NULL DEFAULT 'warning',
|
|
156
|
+
source TEXT NOT NULL DEFAULT 'veto',
|
|
157
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
158
|
+
);
|
|
159
|
+
|
|
160
|
+
CREATE INDEX IF NOT EXISTS idx_scan_diag_file ON scan_diagnostics(file_path);
|
|
161
|
+
|
|
148
162
|
CREATE INDEX IF NOT EXISTS idx_sessions_platform ON sessions(platform);
|
|
149
163
|
CREATE INDEX IF NOT EXISTS idx_decisions_session ON decisions(session_id);
|
|
150
164
|
CREATE INDEX IF NOT EXISTS idx_files_session ON files_modified(session_id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/memory/schema.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,wDAAwD;AAExD,MAAM,CAAC,MAAM,aAAa,GAAG
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/memory/schema.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,wDAAwD;AAExD,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2K5B,CAAC"}
|
package/dist/server.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// Veto MCP Server —
|
|
2
|
+
// Veto MCP Server — 46 tools, 21 phases complete, auto-learning router
|
|
3
3
|
// Suppress node:sqlite experimental warning — it would corrupt the MCP stdio protocol
|
|
4
4
|
process.removeAllListeners('warning');
|
|
5
5
|
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
6
6
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
7
7
|
import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
8
8
|
import { buildContextString } from './context/reader.js';
|
|
9
|
-
import { saveSession, restoreSession, listSessions, closeSession, getDbPath, saveCouncilOutcome, storeKnowledge, searchKnowledge, deleteKnowledge, updateProjectMap, getProjectMap, upsertPattern, getPatterns, getContextStatus, fetchAndCacheDocs, saveTaskPlan, getUsageStatus, getAuditLog, getHealthStats, CONTEXT_WINDOWS, logUsage, getUsageLogs, } from './memory/local.js';
|
|
9
|
+
import { saveSession, restoreSession, listSessions, closeSession, getDbPath, saveCouncilOutcome, storeKnowledge, searchKnowledge, deleteKnowledge, updateProjectMap, getProjectMap, upsertPattern, getPatterns, getContextStatus, fetchAndCacheDocs, saveTaskPlan, getUsageStatus, getAuditLog, getHealthStats, CONTEXT_WINDOWS, logUsage, getUsageLogs, getDb, storeScanDiagnostics, clearScanDiagnostics, } from './memory/local.js';
|
|
10
10
|
import { exportMemory, importMemory } from './memory/sync.js';
|
|
11
11
|
import { runDebate } from './council/index.js';
|
|
12
12
|
import { routeTask, getRateStatus, trackTokens, recordOutcome, getLearningStats, getLearnedThresholds, applyLearnedThresholds, getAgentPerformanceStats, getTaskTypeBreakdown, getCouncilInsights, getRecommendedAgent } from './router/index.js';
|
|
@@ -52,7 +52,7 @@ function maybeAutoSave(token_count, platform) {
|
|
|
52
52
|
if (elapsed < autoSave.cooldown_ms)
|
|
53
53
|
return { triggered: false };
|
|
54
54
|
}
|
|
55
|
-
const result = saveSession({ ...autoSave.cached, token_count, platform });
|
|
55
|
+
const result = saveSession({ ...autoSave.cached, token_count, platform, save_type: 'auto' });
|
|
56
56
|
autoSave.last_save_at = result.saved_at;
|
|
57
57
|
autoSave.last_session_id = result.session_id;
|
|
58
58
|
return { triggered: true, session_id: result.session_id, usage_pct };
|
|
@@ -90,6 +90,7 @@ const TOOL_ANNOTATIONS = {
|
|
|
90
90
|
veto_discover: { readOnlyHint: true },
|
|
91
91
|
veto_summarize: { readOnlyHint: true },
|
|
92
92
|
veto_explain: { readOnlyHint: true },
|
|
93
|
+
veto_benchmark: { readOnlyHint: false, destructiveHint: false },
|
|
93
94
|
// read-only + open world (external network)
|
|
94
95
|
veto_docs_fetch: { readOnlyHint: true, openWorldHint: true },
|
|
95
96
|
veto_pr_review: { readOnlyHint: true, openWorldHint: true },
|
|
@@ -322,12 +323,13 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
322
323
|
},
|
|
323
324
|
{
|
|
324
325
|
name: 'veto_code_review',
|
|
325
|
-
description: 'Runs the Code Reviewer agent on provided code. Returns scored findings (complexity, error handling, magic numbers, nesting, dead code) with severity and fixes.',
|
|
326
|
+
description: 'Runs the Code Reviewer agent on provided code. Returns scored findings (complexity, error handling, magic numbers, nesting, dead code) with severity and fixes. Pass file_path to surface findings as VS Code inline diagnostics (squiggles).',
|
|
326
327
|
inputSchema: {
|
|
327
328
|
type: 'object',
|
|
328
329
|
properties: {
|
|
329
330
|
code: { type: 'string', description: 'The code to review.' },
|
|
330
331
|
context: { type: 'string', description: 'Optional: file name, module description, or review focus.' },
|
|
332
|
+
file_path: { type: 'string', description: 'Optional: absolute path to the file being reviewed. When provided, findings are stored as VS Code inline diagnostics.' },
|
|
331
333
|
},
|
|
332
334
|
required: ['code'],
|
|
333
335
|
},
|
|
@@ -347,23 +349,25 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
347
349
|
},
|
|
348
350
|
{
|
|
349
351
|
name: 'veto_security_scan',
|
|
350
|
-
description: 'Runs the Security Scanner (OWASP Top 10) on provided code. Returns vulnerabilities with severity, CWE/OWASP category, and remediation steps.',
|
|
352
|
+
description: 'Runs the Security Scanner (OWASP Top 10) on provided code. Returns vulnerabilities with severity, CWE/OWASP category, and remediation steps. Pass file_path to surface findings as VS Code inline diagnostics.',
|
|
351
353
|
inputSchema: {
|
|
352
354
|
type: 'object',
|
|
353
355
|
properties: {
|
|
354
356
|
code: { type: 'string', description: 'The code to scan.' },
|
|
355
357
|
context: { type: 'string', description: 'Optional: language, framework, or specific concerns.' },
|
|
358
|
+
file_path: { type: 'string', description: 'Optional: absolute path to the file being scanned. When provided, findings are stored as VS Code inline diagnostics.' },
|
|
356
359
|
},
|
|
357
360
|
required: ['code'],
|
|
358
361
|
},
|
|
359
362
|
},
|
|
360
363
|
{
|
|
361
364
|
name: 'veto_secrets_scan',
|
|
362
|
-
description: 'Scans text or code for exposed credentials — API keys, tokens, passwords, connection strings, private keys. Returns findings with masked values and line numbers.',
|
|
365
|
+
description: 'Scans text or code for exposed credentials — API keys, tokens, passwords, connection strings, private keys. Returns findings with masked values and line numbers. Pass file_path to surface findings as VS Code inline diagnostics.',
|
|
363
366
|
inputSchema: {
|
|
364
367
|
type: 'object',
|
|
365
368
|
properties: {
|
|
366
369
|
text: { type: 'string', description: 'The text or code to scan for secrets.' },
|
|
370
|
+
file_path: { type: 'string', description: 'Optional: absolute path to the file being scanned. When provided, findings are stored as VS Code inline diagnostics.' },
|
|
367
371
|
},
|
|
368
372
|
required: ['text'],
|
|
369
373
|
},
|
|
@@ -825,6 +829,21 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
825
829
|
required: [],
|
|
826
830
|
},
|
|
827
831
|
},
|
|
832
|
+
{
|
|
833
|
+
name: 'veto_benchmark',
|
|
834
|
+
description: 'Compares two competing approaches by running a full council debate on each in parallel, then returns a structured winner analysis with verdict, confidence delta, warning counts, and council reasoning. Use when you have two valid options and want an unbiased council judgment before committing.',
|
|
835
|
+
inputSchema: {
|
|
836
|
+
type: 'object',
|
|
837
|
+
properties: {
|
|
838
|
+
task: { type: 'string', description: 'The decision context — what problem are both approaches solving?' },
|
|
839
|
+
approach_a: { type: 'string', description: 'First approach to evaluate. Be specific about tech choices, trade-offs, and constraints.' },
|
|
840
|
+
approach_b: { type: 'string', description: 'Second approach to evaluate. Same level of detail as approach_a.' },
|
|
841
|
+
context: { type: 'string', description: 'Optional: shared context for both debates (architecture notes, constraints, team size, etc.).' },
|
|
842
|
+
project_dir: { type: 'string', description: 'Optional: auto-inject package.json and git diff context.' },
|
|
843
|
+
},
|
|
844
|
+
required: ['task', 'approach_a', 'approach_b'],
|
|
845
|
+
},
|
|
846
|
+
},
|
|
828
847
|
];
|
|
829
848
|
return { tools: tools.map(t => ({ ...t, annotations: TOOL_ANNOTATIONS[t.name] ?? {} })) };
|
|
830
849
|
});
|
|
@@ -847,11 +866,46 @@ async function runTripleScan(diff, context) {
|
|
|
847
866
|
autoRecord('scan', 'secrets', (secretsResult.analysis?.findings?.length ?? 0) === 0 ? 100 : secretsResult.analysis?.score ?? Math.round(secretsResult.output.confidence * 100));
|
|
848
867
|
return { reviewResult, secResult, secretsResult, verdict };
|
|
849
868
|
}
|
|
869
|
+
function parseLineFromLocation(location) {
|
|
870
|
+
if (!location)
|
|
871
|
+
return 1;
|
|
872
|
+
const m = location.match(/(?:^|line\s+)(\d+)/i);
|
|
873
|
+
return m ? parseInt(m[1], 10) : 1;
|
|
874
|
+
}
|
|
875
|
+
function mapSeverityToVscode(severity) {
|
|
876
|
+
if (severity === 'critical' || severity === 'high')
|
|
877
|
+
return 'error';
|
|
878
|
+
if (severity === 'medium')
|
|
879
|
+
return 'warning';
|
|
880
|
+
return 'information';
|
|
881
|
+
}
|
|
850
882
|
// Auto-learning helper — records a learning_data row from any agent result.
|
|
851
883
|
// Keeps call sites to one line rather than repeating the tier/quality logic.
|
|
884
|
+
// After every 20 outcomes the thresholds are applied automatically.
|
|
852
885
|
function autoRecord(taskType, agent, quality, complexity = 50) {
|
|
853
886
|
const tier = quality >= 80 ? 1 : quality >= 40 ? 2 : 3;
|
|
854
887
|
recordOutcome(taskType.slice(0, 50), complexity, tier, agent, quality);
|
|
888
|
+
try {
|
|
889
|
+
const count = getDb().prepare('SELECT COUNT(*) as c FROM learning_data').get().c;
|
|
890
|
+
if (count >= 20 && count % 20 === 0)
|
|
891
|
+
applyLearnedThresholds();
|
|
892
|
+
}
|
|
893
|
+
catch { /* never interrupt the caller */ }
|
|
894
|
+
}
|
|
895
|
+
// Auto-store helper — writes a knowledge_base entry when a scan produces critical/blocking issues.
|
|
896
|
+
// This is what populates the Memory panel in the VS Code extension automatically.
|
|
897
|
+
function autoStoreCritical(title, blockingIssues, projectDir, extraTags = [], sessionId) {
|
|
898
|
+
if (blockingIssues.length === 0)
|
|
899
|
+
return;
|
|
900
|
+
storeKnowledge({
|
|
901
|
+
type: 'decision',
|
|
902
|
+
title: title.slice(0, 100),
|
|
903
|
+
content: `Blocking issues:\n${blockingIssues.map(i => `- ${i}`).join('\n')}`,
|
|
904
|
+
tags: ['critical', 'blocked', ...extraTags],
|
|
905
|
+
project_dir: projectDir,
|
|
906
|
+
session_id: sessionId,
|
|
907
|
+
relevance: 1.0,
|
|
908
|
+
});
|
|
855
909
|
}
|
|
856
910
|
// ─── Tool Handlers ────────────────────────────────────────────────────────────
|
|
857
911
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
@@ -1079,6 +1133,25 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
1079
1133
|
const tMap = { GREEN: 1, YELLOW: 2, RED: 3, DEADLOCK: 2 };
|
|
1080
1134
|
recordOutcome(task.slice(0, 50), 50, tMap[result.final_verdict] ?? 2, 'council', qMap[result.final_verdict] ?? 50);
|
|
1081
1135
|
}
|
|
1136
|
+
// Auto-store RED verdicts so they appear in the Memory panel immediately
|
|
1137
|
+
if (result.final_verdict === 'RED') {
|
|
1138
|
+
const lines = [`Task: ${task}`];
|
|
1139
|
+
if (result.block_reasons.length > 0)
|
|
1140
|
+
lines.push(`\nBlocked by:\n${result.block_reasons.map(r => `- ${r}`).join('\n')}`);
|
|
1141
|
+
if (result.warnings.length > 0)
|
|
1142
|
+
lines.push(`\nWarnings:\n${result.warnings.map(w => `- ${w}`).join('\n')}`);
|
|
1143
|
+
if (result.recommended)
|
|
1144
|
+
lines.push(`\nRecommended: ${result.recommended}`);
|
|
1145
|
+
storeKnowledge({
|
|
1146
|
+
type: 'decision',
|
|
1147
|
+
title: `RED: ${task.slice(0, 80)}`,
|
|
1148
|
+
content: lines.join(''),
|
|
1149
|
+
tags: ['red-verdict', 'blocked', 'council'],
|
|
1150
|
+
project_dir: args?.project_dir ? String(args.project_dir) : undefined,
|
|
1151
|
+
session_id: sessionId,
|
|
1152
|
+
relevance: 1.0,
|
|
1153
|
+
});
|
|
1154
|
+
}
|
|
1082
1155
|
const responsePayload = {
|
|
1083
1156
|
outcome_id: outcomeId,
|
|
1084
1157
|
final_verdict: result.final_verdict,
|
|
@@ -1136,11 +1209,22 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
1136
1209
|
if (!code) {
|
|
1137
1210
|
return { content: [{ type: 'text', text: JSON.stringify({ success: false, message: 'code is required.' }) }], isError: true };
|
|
1138
1211
|
}
|
|
1212
|
+
const reviewFilePath = args?.file_path ? String(args.file_path) : undefined;
|
|
1139
1213
|
const result = await executeOne({ id: 'review-1', agent: 'reviewer', task: 'review this code', code, context: args?.context ? String(args.context) : undefined });
|
|
1140
1214
|
if (result.error) {
|
|
1141
1215
|
return { content: [{ type: 'text', text: JSON.stringify({ success: false, error: result.error }) }], isError: true };
|
|
1142
1216
|
}
|
|
1143
1217
|
autoRecord('code review', 'reviewer', result.analysis?.score ?? Math.round(result.output.confidence * 100));
|
|
1218
|
+
if (reviewFilePath && result.analysis?.findings) {
|
|
1219
|
+
storeScanDiagnostics(reviewFilePath, result.analysis.findings.map((f) => ({
|
|
1220
|
+
line: parseLineFromLocation(f.location),
|
|
1221
|
+
message: f.description ?? '',
|
|
1222
|
+
severity: mapSeverityToVscode(f.severity),
|
|
1223
|
+
})), 'code-review');
|
|
1224
|
+
}
|
|
1225
|
+
else if (reviewFilePath) {
|
|
1226
|
+
clearScanDiagnostics(reviewFilePath);
|
|
1227
|
+
}
|
|
1144
1228
|
return { content: [{ type: 'text', text: JSON.stringify(result.analysis, null, 2) }] };
|
|
1145
1229
|
}
|
|
1146
1230
|
case 'veto_diff_review': {
|
|
@@ -1179,6 +1263,16 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
1179
1263
|
if (match)
|
|
1180
1264
|
fileFindings[match]++;
|
|
1181
1265
|
}
|
|
1266
|
+
if (verdict === 'fail') {
|
|
1267
|
+
const blockingIssues = [];
|
|
1268
|
+
if ((reviewResult.analysis?.critical_count ?? 0) > 0)
|
|
1269
|
+
blockingIssues.push(`Code: ${reviewResult.analysis?.summary ?? 'critical issues found'}`);
|
|
1270
|
+
if ((secResult.analysis?.critical_count ?? 0) > 0)
|
|
1271
|
+
blockingIssues.push(`Security: ${secResult.analysis?.summary ?? 'vulnerabilities detected'}`);
|
|
1272
|
+
if ((secretsResult.analysis?.findings?.length ?? 0) > 0)
|
|
1273
|
+
blockingIssues.push(`Secrets: exposed credentials detected`);
|
|
1274
|
+
autoStoreCritical(`Diff review failed: ${changedFiles.slice(0, 2).join(', ')}`, blockingIssues, projectDir, ['diff-review']);
|
|
1275
|
+
}
|
|
1182
1276
|
return {
|
|
1183
1277
|
content: [{
|
|
1184
1278
|
type: 'text',
|
|
@@ -1221,11 +1315,22 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
1221
1315
|
if (!code) {
|
|
1222
1316
|
return { content: [{ type: 'text', text: JSON.stringify({ success: false, message: 'code is required.' }) }], isError: true };
|
|
1223
1317
|
}
|
|
1318
|
+
const secFilePath = args?.file_path ? String(args.file_path) : undefined;
|
|
1224
1319
|
const result = await executeOne({ id: 'scan-1', agent: 'security-scanner', task: 'scan this code for security issues', code, context: args?.context ? String(args.context) : undefined });
|
|
1225
1320
|
if (result.error) {
|
|
1226
1321
|
return { content: [{ type: 'text', text: JSON.stringify({ success: false, error: result.error }) }], isError: true };
|
|
1227
1322
|
}
|
|
1228
1323
|
autoRecord('security scan', 'security-scanner', result.analysis?.score ?? Math.round(result.output.confidence * 100));
|
|
1324
|
+
if (secFilePath && result.analysis?.findings) {
|
|
1325
|
+
storeScanDiagnostics(secFilePath, result.analysis.findings.map((f) => ({
|
|
1326
|
+
line: parseLineFromLocation(f.location),
|
|
1327
|
+
message: f.description ?? '',
|
|
1328
|
+
severity: mapSeverityToVscode(f.severity),
|
|
1329
|
+
})), 'security');
|
|
1330
|
+
}
|
|
1331
|
+
else if (secFilePath) {
|
|
1332
|
+
clearScanDiagnostics(secFilePath);
|
|
1333
|
+
}
|
|
1229
1334
|
return { content: [{ type: 'text', text: JSON.stringify(result.analysis, null, 2) }] };
|
|
1230
1335
|
}
|
|
1231
1336
|
case 'veto_secrets_scan': {
|
|
@@ -1233,11 +1338,22 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
1233
1338
|
if (!text) {
|
|
1234
1339
|
return { content: [{ type: 'text', text: JSON.stringify({ success: false, message: 'text is required.' }) }], isError: true };
|
|
1235
1340
|
}
|
|
1341
|
+
const secretsFilePath = args?.file_path ? String(args.file_path) : undefined;
|
|
1236
1342
|
const result = await executeOne({ id: 'secrets-1', agent: 'secrets', task: 'scan for exposed credentials', code: text });
|
|
1237
1343
|
if (result.error) {
|
|
1238
1344
|
return { content: [{ type: 'text', text: JSON.stringify({ success: false, error: result.error }) }], isError: true };
|
|
1239
1345
|
}
|
|
1240
1346
|
autoRecord('secrets scan', 'secrets', (result.analysis?.findings?.length ?? 0) === 0 ? 100 : result.analysis?.score ?? Math.round(result.output.confidence * 100));
|
|
1347
|
+
if (secretsFilePath && result.analysis?.findings) {
|
|
1348
|
+
storeScanDiagnostics(secretsFilePath, result.analysis.findings.map((f) => ({
|
|
1349
|
+
line: parseLineFromLocation(f.location),
|
|
1350
|
+
message: f.description ?? '',
|
|
1351
|
+
severity: mapSeverityToVscode(f.severity),
|
|
1352
|
+
})), 'secrets');
|
|
1353
|
+
}
|
|
1354
|
+
else if (secretsFilePath) {
|
|
1355
|
+
clearScanDiagnostics(secretsFilePath);
|
|
1356
|
+
}
|
|
1241
1357
|
return { content: [{ type: 'text', text: JSON.stringify(result.analysis, null, 2) }] };
|
|
1242
1358
|
}
|
|
1243
1359
|
case 'veto_execute_parallel': {
|
|
@@ -1860,6 +1976,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
1860
1976
|
`| Secrets Scan | — | ${secretsClean ? '✅ Clean' : '❌ Found'} |`,
|
|
1861
1977
|
blocking_issues.length > 0 ? `\n**Blocking issues:**\n${blocking_issues.map(i => `- ${i}`).join('\n')}` : '',
|
|
1862
1978
|
].filter(Boolean).join('\n');
|
|
1979
|
+
autoStoreCritical(`CI gate failed: ${project_dir}`, blocking_issues, project_dir, ['ci-gate']);
|
|
1863
1980
|
return {
|
|
1864
1981
|
content: [{
|
|
1865
1982
|
type: 'text',
|
|
@@ -1925,6 +2042,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
1925
2042
|
``,
|
|
1926
2043
|
`> Reviewed by [Veto](https://github.com/jigyasudham/veto) · ${meta.changed_files} files · +${meta.additions}/-${meta.deletions} · ${Date.now() - start}ms`,
|
|
1927
2044
|
].join('\n');
|
|
2045
|
+
autoStoreCritical(`PR review failed: ${meta.title}`, blocking_issues, undefined, ['pr-review']);
|
|
1928
2046
|
return {
|
|
1929
2047
|
content: [{
|
|
1930
2048
|
type: 'text',
|
|
@@ -2046,6 +2164,86 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
2046
2164
|
agent_used: 'project-mapper', duration_ms: Date.now() - sumStart,
|
|
2047
2165
|
}, null, 2) }] };
|
|
2048
2166
|
}
|
|
2167
|
+
case 'veto_benchmark': {
|
|
2168
|
+
const task = String(args?.task ?? '');
|
|
2169
|
+
const approachA = String(args?.approach_a ?? '');
|
|
2170
|
+
const approachB = String(args?.approach_b ?? '');
|
|
2171
|
+
const ctx = args?.context ? String(args.context) : undefined;
|
|
2172
|
+
const projectDir = args?.project_dir ? String(args.project_dir) : undefined;
|
|
2173
|
+
if (!task || !approachA || !approachB) {
|
|
2174
|
+
throw new Error('veto_benchmark requires task, approach_a, and approach_b');
|
|
2175
|
+
}
|
|
2176
|
+
const bmStart = Date.now();
|
|
2177
|
+
// Run both debates synchronously (council agents are all sync)
|
|
2178
|
+
const debateA = runDebate({ task: `${task}\n\nApproach A: ${approachA}`, context: ctx, project_dir: projectDir });
|
|
2179
|
+
const debateB = runDebate({ task: `${task}\n\nApproach B: ${approachB}`, context: ctx, project_dir: projectDir });
|
|
2180
|
+
// Score: GREEN=3, YELLOW=2, RED=1, DEADLOCK=0
|
|
2181
|
+
const verdictScore = { GREEN: 3, YELLOW: 2, RED: 1, DEADLOCK: 0 };
|
|
2182
|
+
const scoreA = verdictScore[debateA.final_verdict] ?? 0;
|
|
2183
|
+
const scoreB = verdictScore[debateB.final_verdict] ?? 0;
|
|
2184
|
+
const warnCountA = debateA.warnings.length;
|
|
2185
|
+
const warnCountB = debateB.warnings.length;
|
|
2186
|
+
const blockCountA = debateA.block_reasons.length;
|
|
2187
|
+
const blockCountB = debateB.block_reasons.length;
|
|
2188
|
+
let winner;
|
|
2189
|
+
let confidence;
|
|
2190
|
+
let reasoning;
|
|
2191
|
+
if (scoreA !== scoreB) {
|
|
2192
|
+
winner = scoreA > scoreB ? 'A' : 'B';
|
|
2193
|
+
const diff = Math.abs(scoreA - scoreB);
|
|
2194
|
+
confidence = diff >= 2 ? 'high' : 'medium';
|
|
2195
|
+
reasoning = `Approach ${winner} received a ${winner === 'A' ? debateA.final_verdict : debateB.final_verdict} verdict vs ${winner === 'A' ? debateB.final_verdict : debateA.final_verdict} for Approach ${winner === 'A' ? 'B' : 'A'}.`;
|
|
2196
|
+
}
|
|
2197
|
+
else {
|
|
2198
|
+
// Same verdict — break tie on warnings, then block reasons
|
|
2199
|
+
if (warnCountA !== warnCountB) {
|
|
2200
|
+
winner = warnCountA < warnCountB ? 'A' : 'B';
|
|
2201
|
+
confidence = 'low';
|
|
2202
|
+
reasoning = `Both approaches received ${debateA.final_verdict}. Approach ${winner} had fewer warnings (${winner === 'A' ? warnCountA : warnCountB} vs ${winner === 'A' ? warnCountB : warnCountA}).`;
|
|
2203
|
+
}
|
|
2204
|
+
else if (blockCountA !== blockCountB) {
|
|
2205
|
+
winner = blockCountA < blockCountB ? 'A' : 'B';
|
|
2206
|
+
confidence = 'low';
|
|
2207
|
+
reasoning = `Both approaches received ${debateA.final_verdict} with equal warnings. Approach ${winner} had fewer blocking concerns.`;
|
|
2208
|
+
}
|
|
2209
|
+
else {
|
|
2210
|
+
winner = 'TIE';
|
|
2211
|
+
confidence = 'low';
|
|
2212
|
+
reasoning = `Both approaches received ${debateA.final_verdict} with equal warnings and blocks. Council cannot differentiate — consider a more specific framing.`;
|
|
2213
|
+
}
|
|
2214
|
+
}
|
|
2215
|
+
// Auto-record both debates
|
|
2216
|
+
const qMap = { GREEN: 90, YELLOW: 60, RED: 20, DEADLOCK: 50 };
|
|
2217
|
+
autoRecord('benchmark', 'council', qMap[debateA.final_verdict] ?? 50);
|
|
2218
|
+
autoRecord('benchmark', 'council', qMap[debateB.final_verdict] ?? 50);
|
|
2219
|
+
return { content: [{ type: 'text', text: JSON.stringify({
|
|
2220
|
+
winner,
|
|
2221
|
+
confidence,
|
|
2222
|
+
reasoning,
|
|
2223
|
+
recommendation: winner !== 'TIE'
|
|
2224
|
+
? `Use Approach ${winner}. ${winner === 'A' ? debateA.recommended : debateB.recommended}`
|
|
2225
|
+
: `No clear winner. ${debateA.recommended}`,
|
|
2226
|
+
approach_a: {
|
|
2227
|
+
label: 'A',
|
|
2228
|
+
description: approachA.slice(0, 120),
|
|
2229
|
+
verdict: debateA.final_verdict,
|
|
2230
|
+
warnings: warnCountA,
|
|
2231
|
+
block_reasons: blockCountA,
|
|
2232
|
+
recommended: debateA.recommended,
|
|
2233
|
+
votes: Object.fromEntries(Object.entries(debateA.votes).map(([k, v]) => [k, v.verdict])),
|
|
2234
|
+
},
|
|
2235
|
+
approach_b: {
|
|
2236
|
+
label: 'B',
|
|
2237
|
+
description: approachB.slice(0, 120),
|
|
2238
|
+
verdict: debateB.final_verdict,
|
|
2239
|
+
warnings: warnCountB,
|
|
2240
|
+
block_reasons: blockCountB,
|
|
2241
|
+
recommended: debateB.recommended,
|
|
2242
|
+
votes: Object.fromEntries(Object.entries(debateB.votes).map(([k, v]) => [k, v.verdict])),
|
|
2243
|
+
},
|
|
2244
|
+
duration_ms: Date.now() - bmStart,
|
|
2245
|
+
}, null, 2) }] };
|
|
2246
|
+
}
|
|
2049
2247
|
default:
|
|
2050
2248
|
throw new Error(`Unknown tool: ${name}`);
|
|
2051
2249
|
}
|