@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.
@@ -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;
@@ -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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"}
@@ -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":"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"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/memory/schema.ts"],"names":[],"mappings":"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"}
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6J5B,CAAC"}
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 — 45 tools, 19 phases complete, auto-learning router
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
  }