@jigyasudham/veto 2.1.2 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/.mcp-tools/LICENSE +216 -0
  2. package/.mcp-tools/README.md +153 -0
  3. package/.mcp-tools/mcp-publisher.exe +0 -0
  4. package/LAUNCH-KIT.md +226 -0
  5. package/README.md +106 -14
  6. package/VETO-MCP-DIAGNOSTIC.md +73 -0
  7. package/dist/agents/security/dep-verify.d.ts +23 -0
  8. package/dist/agents/security/dep-verify.d.ts.map +1 -0
  9. package/dist/agents/security/dep-verify.js +229 -0
  10. package/dist/agents/security/dep-verify.js.map +1 -0
  11. package/dist/cli/statusline.d.ts +31 -0
  12. package/dist/cli/statusline.d.ts.map +1 -0
  13. package/dist/cli/statusline.js +307 -0
  14. package/dist/cli/statusline.js.map +1 -0
  15. package/dist/cli.js +63 -5
  16. package/dist/cli.js.map +1 -1
  17. package/dist/council/decision-engine.d.ts.map +1 -1
  18. package/dist/council/decision-engine.js +11 -2
  19. package/dist/council/decision-engine.js.map +1 -1
  20. package/dist/council/lead-developer.js +2 -2
  21. package/dist/council/lead-developer.js.map +1 -1
  22. package/dist/council/product-manager.js +2 -2
  23. package/dist/council/product-manager.js.map +1 -1
  24. package/dist/council/security.js +2 -2
  25. package/dist/council/security.js.map +1 -1
  26. package/dist/council/ux-designer.js +2 -2
  27. package/dist/council/ux-designer.js.map +1 -1
  28. package/dist/memory/config.d.ts +1 -0
  29. package/dist/memory/config.d.ts.map +1 -1
  30. package/dist/memory/config.js +6 -2
  31. package/dist/memory/config.js.map +1 -1
  32. package/dist/memory/decisions.d.ts +33 -0
  33. package/dist/memory/decisions.d.ts.map +1 -0
  34. package/dist/memory/decisions.js +125 -0
  35. package/dist/memory/decisions.js.map +1 -0
  36. package/dist/memory/local.d.ts +7 -0
  37. package/dist/memory/local.d.ts.map +1 -1
  38. package/dist/memory/local.js +17 -1
  39. package/dist/memory/local.js.map +1 -1
  40. package/dist/memory/schema.d.ts +2 -1
  41. package/dist/memory/schema.d.ts.map +1 -1
  42. package/dist/memory/schema.js +30 -0
  43. package/dist/memory/schema.js.map +1 -1
  44. package/dist/router/implicit-outcomes.d.ts +7 -0
  45. package/dist/router/implicit-outcomes.d.ts.map +1 -0
  46. package/dist/router/implicit-outcomes.js +88 -0
  47. package/dist/router/implicit-outcomes.js.map +1 -0
  48. package/dist/router/learning-updater.d.ts.map +1 -1
  49. package/dist/router/learning-updater.js +15 -6
  50. package/dist/router/learning-updater.js.map +1 -1
  51. package/dist/router/model-selector.d.ts.map +1 -1
  52. package/dist/router/model-selector.js +33 -5
  53. package/dist/router/model-selector.js.map +1 -1
  54. package/dist/router/rate-monitor.d.ts +1 -0
  55. package/dist/router/rate-monitor.d.ts.map +1 -1
  56. package/dist/router/rate-monitor.js +1 -0
  57. package/dist/router/rate-monitor.js.map +1 -1
  58. package/dist/server/handlers/advisors.d.ts.map +1 -1
  59. package/dist/server/handlers/advisors.js +214 -0
  60. package/dist/server/handlers/advisors.js.map +1 -1
  61. package/dist/server/handlers/devtools.d.ts.map +1 -1
  62. package/dist/server/handlers/devtools.js +20 -3
  63. package/dist/server/handlers/devtools.js.map +1 -1
  64. package/dist/server/handlers/learning.d.ts.map +1 -1
  65. package/dist/server/handlers/learning.js +15 -0
  66. package/dist/server/handlers/learning.js.map +1 -1
  67. package/dist/server/handlers/memory.d.ts.map +1 -1
  68. package/dist/server/handlers/memory.js +47 -0
  69. package/dist/server/handlers/memory.js.map +1 -1
  70. package/dist/server/handlers/observability.d.ts.map +1 -1
  71. package/dist/server/handlers/observability.js +60 -1
  72. package/dist/server/handlers/observability.js.map +1 -1
  73. package/dist/server/handlers/review.d.ts.map +1 -1
  74. package/dist/server/handlers/review.js +22 -4
  75. package/dist/server/handlers/review.js.map +1 -1
  76. package/dist/server.d.ts.map +1 -1
  77. package/dist/server.js +95 -2
  78. package/dist/server.js.map +1 -1
  79. package/dist/tools/compact.d.ts +12 -0
  80. package/dist/tools/compact.d.ts.map +1 -0
  81. package/dist/tools/compact.js +98 -0
  82. package/dist/tools/compact.js.map +1 -0
  83. package/dist/tools/definitions.d.ts +111 -2
  84. package/dist/tools/definitions.d.ts.map +1 -1
  85. package/dist/tools/definitions.js +62 -3
  86. package/dist/tools/definitions.js.map +1 -1
  87. package/package.json +2 -2
  88. package/server.json +3 -3
@@ -0,0 +1,88 @@
1
+ // Mines quality signals from the tool-call trace log so the learning loop gets
2
+ // feedback without the host AI manually calling veto_record_outcome. Handlers
3
+ // already record optimistic outcomes at call time; what they can't see is
4
+ // failure after the fact. Two negative signals are mined here:
5
+ // errors — a traced call that returned an error result
6
+ // retries — the same analysis tool re-run in the same session within a short
7
+ // window, which usually means the first answer didn't satisfy
8
+ // A watermark in the patterns table keeps mining incremental and idempotent.
9
+ import { randomUUID } from 'node:crypto';
10
+ import { getDb } from '../memory/local.js';
11
+ import { recordOutcome } from './learning-updater.js';
12
+ const WATERMARK_KEY = 'learning.mine_watermark';
13
+ const RETRY_WINDOW_MS = 10 * 60 * 1000;
14
+ const ERROR_QUALITY = 30;
15
+ const RETRY_QUALITY = 55;
16
+ const BATCH_LIMIT = 500;
17
+ // Only agent-backed analysis tools, where an error or a rapid re-run reflects
18
+ // on the agent's output quality. Status/memory/session tools are excluded —
19
+ // they are legitimately called repeatedly.
20
+ const TOOL_AGENT_MAP = {
21
+ veto_code_review: 'reviewer',
22
+ veto_diff_review: 'reviewer',
23
+ veto_full_review: 'code-quality',
24
+ veto_security_scan: 'security-scanner',
25
+ veto_secrets_scan: 'secrets',
26
+ veto_council_debate: 'council',
27
+ veto_rca: 'debugger',
28
+ veto_dead_code: 'code-quality',
29
+ veto_dep_advisor: 'dependency-audit',
30
+ veto_test_gaps: 'tester',
31
+ veto_clone_detector: 'code-quality',
32
+ };
33
+ export function mineImplicitOutcomes() {
34
+ const db = getDb();
35
+ const toolNames = Object.keys(TOOL_AGENT_MAP);
36
+ const wmRow = db.prepare('SELECT pattern_val FROM patterns WHERE pattern_key = ?').get(WATERMARK_KEY);
37
+ const since = wmRow?.pattern_val ?? '1970-01-01 00:00:00';
38
+ const placeholders = toolNames.map(() => '?').join(',');
39
+ const rows = db.prepare(`SELECT id, session_id, tool_name, result_status, recorded_at
40
+ FROM tool_call_trace_log
41
+ WHERE recorded_at > ? AND tool_name IN (${placeholders})
42
+ ORDER BY recorded_at ASC
43
+ LIMIT ${BATCH_LIMIT}`).all(since, ...toolNames);
44
+ if (rows.length === 0)
45
+ return { mined: 0, errors: 0, retries: 0 };
46
+ let errors = 0;
47
+ let retries = 0;
48
+ // Error signal — every traced failure of an agent-backed tool.
49
+ for (const row of rows) {
50
+ if (row.result_status === 'error') {
51
+ recordOutcome(row.tool_name, 50, 2, TOOL_AGENT_MAP[row.tool_name], ERROR_QUALITY);
52
+ errors++;
53
+ }
54
+ }
55
+ // Retry signal — successive successful runs of the same tool in the same
56
+ // session inside the window: every run except the last gets marked down.
57
+ const groups = new Map();
58
+ for (const row of rows) {
59
+ if (row.result_status !== 'success')
60
+ continue;
61
+ const key = `${row.session_id ?? 'no-session'}::${row.tool_name}`;
62
+ const group = groups.get(key) ?? [];
63
+ group.push(row);
64
+ groups.set(key, group);
65
+ }
66
+ for (const group of groups.values()) {
67
+ for (let i = 0; i < group.length - 1; i++) {
68
+ const gap = new Date(group[i + 1].recorded_at + 'Z').getTime() - new Date(group[i].recorded_at + 'Z').getTime();
69
+ if (gap >= 0 && gap <= RETRY_WINDOW_MS) {
70
+ recordOutcome(group[i].tool_name, 50, 2, TOOL_AGENT_MAP[group[i].tool_name], RETRY_QUALITY);
71
+ retries++;
72
+ }
73
+ }
74
+ }
75
+ // Advance the watermark to the newest processed row.
76
+ const newest = rows[rows.length - 1].recorded_at;
77
+ const now = new Date().toISOString();
78
+ const existing = db.prepare('SELECT id FROM patterns WHERE pattern_key = ?').get(WATERMARK_KEY);
79
+ if (existing) {
80
+ db.prepare('UPDATE patterns SET pattern_val = ?, updated_at = ? WHERE pattern_key = ?').run(newest, now, WATERMARK_KEY);
81
+ }
82
+ else {
83
+ db.prepare('INSERT INTO patterns (id, pattern_key, pattern_val, confidence, seen_count, updated_at) VALUES (?, ?, ?, 1, 1, ?)')
84
+ .run(randomUUID(), WATERMARK_KEY, newest, now);
85
+ }
86
+ return { mined: errors + retries, errors, retries };
87
+ }
88
+ //# sourceMappingURL=implicit-outcomes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"implicit-outcomes.js","sourceRoot":"","sources":["../../src/router/implicit-outcomes.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"learning-updater.d.ts","sourceRoot":"","sources":["../../src/router/learning-updater.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"learning-updater.d.ts","sourceRoot":"","sources":["../../src/router/learning-updater.ts"],"names":[],"mappings":"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"}
@@ -31,11 +31,17 @@ export function recordOutcome(taskType, complexity, modelTier, agent, outputQual
31
31
  }
32
32
  // Auto-apply learned thresholds every 20 outcomes (default on; disable via
33
33
  // config auto_apply_learning=false). Closes the learning loop so no manual
34
- // veto_learning_apply is required.
34
+ // veto_learning_apply is required. A watermark (count at last apply) is used
35
+ // instead of `total % 20` — the modulo never fires when the DB already held
36
+ // outcomes before this feature existed, or after a manual apply desyncs the cadence.
35
37
  const total = db.prepare('SELECT COUNT(*) as c FROM learning_data').get().c;
36
38
  let auto_applied = false;
37
- if (total >= 20 && total % 20 === 0 && getConfig().auto_apply_learning !== false) {
38
- auto_applied = applyLearnedThresholds().applied;
39
+ if (total >= 20 && getConfig().auto_apply_learning !== false) {
40
+ const row = db.prepare('SELECT pattern_val FROM patterns WHERE pattern_key = ?').get('router.last_apply_count');
41
+ const lastApplied = row ? parseInt(row.pattern_val, 10) : 0;
42
+ if (total - lastApplied >= 20) {
43
+ auto_applied = applyLearnedThresholds().applied;
44
+ }
39
45
  }
40
46
  return { auto_applied, total };
41
47
  }
@@ -201,12 +207,14 @@ export function applyLearnedThresholds() {
201
207
  }
202
208
  const stats = getLearningStats();
203
209
  const { tier1_max, tier2_max } = stats.suggested_thresholds;
204
- // Persist to patterns table so the router picks them up on next call
210
+ // Persist to patterns table so the router picks them up on next call.
211
+ // seen_count tracks data_points at apply time; the watermark key records
212
+ // the outcome count so recordOutcome knows when 20 new outcomes have landed.
205
213
  const now = new Date().toISOString();
206
- for (const [key, val] of [['router.tier1_max', String(tier1_max)], ['router.tier2_max', String(tier2_max)]]) {
214
+ for (const [key, val] of [['router.tier1_max', String(tier1_max)], ['router.tier2_max', String(tier2_max)], ['router.last_apply_count', String(total)]]) {
207
215
  const existing = db.prepare('SELECT id FROM patterns WHERE pattern_key = ?').get(key);
208
216
  if (existing) {
209
- db.prepare('UPDATE patterns SET pattern_val = ?, updated_at = ? WHERE pattern_key = ?').run(val, now, key);
217
+ db.prepare('UPDATE patterns SET pattern_val = ?, seen_count = ?, updated_at = ? WHERE pattern_key = ?').run(val, total, now, key);
210
218
  }
211
219
  else {
212
220
  db.prepare('INSERT INTO patterns (id, pattern_key, pattern_val, confidence, seen_count, updated_at) VALUES (?, ?, ?, ?, ?, ?)')
@@ -293,6 +301,7 @@ export function resetRoutingFeedback() {
293
301
  const fbResult = db.prepare('DELETE FROM routing_feedback').run();
294
302
  const t1 = db.prepare("DELETE FROM patterns WHERE pattern_key = 'router.tier1_max'").run();
295
303
  const t2 = db.prepare("DELETE FROM patterns WHERE pattern_key = 'router.tier2_max'").run();
304
+ db.prepare("DELETE FROM patterns WHERE pattern_key = 'router.last_apply_count'").run();
296
305
  return { deleted_feedback: fbResult.changes, reset_thresholds: t1.changes > 0 || t2.changes > 0 };
297
306
  }
298
307
  export function listRoutingFeedback(limit = 20) {
@@ -1 +1 @@
1
- {"version":3,"file":"learning-updater.js","sourceRoot":"","sources":["../../src/router/learning-updater.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"learning-updater.js","sourceRoot":"","sources":["../../src/router/learning-updater.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"model-selector.d.ts","sourceRoot":"","sources":["../../src/router/model-selector.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,SAAS,GAEjB,gBAAgB,GAAG,kBAAkB,GAAG,kBAAkB,GAC1D,gBAAgB,GAAG,iBAAiB,GAAG,eAAe,GAEtD,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,eAAe,GAE9D,cAAc,GAAG,WAAW,GAAG,cAAc,GAAG,SAAS,GAAG,UAAU,GAEtE,SAAS,CAAC;AAEd,MAAM,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE7B,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAqBF,wBAAgB,WAAW,CACzB,eAAe,EAAE,MAAM,EACvB,SAAS,GAAE,SAAqB,EAChC,SAAS,GAAE;IAAE,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GAClE,mBAAmB,CA4BrB"}
1
+ {"version":3,"file":"model-selector.d.ts","sourceRoot":"","sources":["../../src/router/model-selector.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,SAAS,GAEjB,gBAAgB,GAAG,kBAAkB,GAAG,kBAAkB,GAC1D,gBAAgB,GAAG,iBAAiB,GAAG,eAAe,GAEtD,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,eAAe,GAE9D,cAAc,GAAG,WAAW,GAAG,cAAc,GAAG,SAAS,GAAG,UAAU,GAEtE,SAAS,CAAC;AAEd,MAAM,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE7B,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAiDF,wBAAgB,WAAW,CACzB,eAAe,EAAE,MAAM,EACvB,SAAS,GAAE,SAAqB,EAChC,SAAS,GAAE;IAAE,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GAClE,mBAAmB,CA4BrB"}
@@ -1,5 +1,8 @@
1
1
  // Assigns Tier 1/2/3 and specific model recommendations
2
2
  // Some agents are permanently locked to a tier regardless of complexity score
3
+ import { join } from 'node:path';
4
+ import { homedir } from 'node:os';
5
+ import { readFileSync, existsSync } from 'node:fs';
3
6
  const TIER3_LOCKED = new Set([
4
7
  'lead-developer', 'system-architect', 'security-scanner',
5
8
  'devil-advocate', 'decision-engine', 'risk-assessor',
@@ -10,11 +13,36 @@ const TIER2_LOCKED = new Set([
10
13
  const TIER1_LOCKED = new Set([
11
14
  'file-manager', 'git-agent', 'search-agent', 'secrets', 'reporter',
12
15
  ]);
13
- const TIER_MODELS = {
14
- 1: { claude: 'claude-haiku-4-5', gemini: 'gemini-2.0-flash', codex: 'gpt-4o-mini' },
15
- 2: { claude: 'claude-sonnet-4-6', gemini: 'gemini-2.0-pro', codex: 'gpt-4o' },
16
- 3: { claude: 'claude-sonnet-4-6', gemini: 'gemini-2.0-advanced', codex: 'gpt-4o' },
16
+ // Bundled defaults (current as of June 2026). Model names rot fast — any of
17
+ // these can be overridden per-tier via ~/.veto/models.json without waiting
18
+ // for a package update, e.g. { "3": { "gemini": "gemini-3.5-pro" } }.
19
+ const DEFAULT_TIER_MODELS = {
20
+ 1: { claude: 'claude-haiku-4-5', gemini: 'gemini-3.5-flash', codex: 'gpt-5.1-codex-mini' },
21
+ 2: { claude: 'claude-sonnet-4-6', gemini: 'gemini-3.5-flash', codex: 'gpt-5.1-codex' },
22
+ 3: { claude: 'claude-opus-4-8', gemini: 'gemini-3-pro', codex: 'gpt-5.1' },
17
23
  };
24
+ const MODELS_PATH = join(homedir(), '.veto', 'models.json');
25
+ let cachedTierModels = null;
26
+ function getTierModels() {
27
+ if (cachedTierModels)
28
+ return cachedTierModels;
29
+ let models = DEFAULT_TIER_MODELS;
30
+ if (existsSync(MODELS_PATH)) {
31
+ try {
32
+ const raw = JSON.parse(readFileSync(MODELS_PATH, 'utf8'));
33
+ models = {
34
+ 1: { ...DEFAULT_TIER_MODELS[1], ...raw['1'] },
35
+ 2: { ...DEFAULT_TIER_MODELS[2], ...raw['2'] },
36
+ 3: { ...DEFAULT_TIER_MODELS[3], ...raw['3'] },
37
+ };
38
+ }
39
+ catch {
40
+ // Malformed override file — fall back to bundled defaults
41
+ }
42
+ }
43
+ cachedTierModels = models;
44
+ return models;
45
+ }
18
46
  export function selectModel(complexityScore, agentType = 'dynamic', overrides = {}) {
19
47
  let tier;
20
48
  let agent_locked = true;
@@ -31,7 +59,7 @@ export function selectModel(complexityScore, agentType = 'dynamic', overrides =
31
59
  tier = complexityScore <= 30 ? 1 : complexityScore <= 70 ? 2 : 3;
32
60
  agent_locked = false;
33
61
  }
34
- const models = { ...TIER_MODELS[tier] };
62
+ const models = { ...getTierModels()[tier] };
35
63
  const reason = agent_locked
36
64
  ? `${agentType} is locked to Tier ${tier}`
37
65
  : `Complexity score ${complexityScore}/100 assigned to Tier ${tier}`;
@@ -1 +1 @@
1
- {"version":3,"file":"model-selector.js","sourceRoot":"","sources":["../../src/router/model-selector.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,8EAA8E;AAsB9E,MAAM,YAAY,GAAG,IAAI,GAAG,CAAY;IACtC,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB;IACxD,gBAAgB,EAAE,iBAAiB,EAAE,eAAe;CACrD,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,IAAI,GAAG,CAAY;IACtC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe;CAC3D,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,IAAI,GAAG,CAAY;IACtC,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU;CACnE,CAAC,CAAC;AAEH,MAAM,WAAW,GAAoE;IACnF,CAAC,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,aAAa,EAAE;IACnF,CAAC,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC7E,CAAC,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,qBAAqB,EAAE,KAAK,EAAE,QAAQ,EAAE;CACnF,CAAC;AAEF,MAAM,UAAU,WAAW,CACzB,eAAuB,EACvB,YAAuB,SAAS,EAChC,YAAiE,EAAE;IAEnE,IAAI,IAAU,CAAC;IACf,IAAI,YAAY,GAAG,IAAI,CAAC;IAExB,IAAI,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAChC,IAAI,GAAG,CAAC,CAAC;IACX,CAAC;SAAM,IAAI,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACvC,IAAI,GAAG,CAAC,CAAC;IACX,CAAC;SAAM,IAAI,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACvC,IAAI,GAAG,CAAC,CAAC;IACX,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,eAAe,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,YAAY,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,MAAM,MAAM,GAAG,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;IACxC,MAAM,MAAM,GAAG,YAAY;QACzB,CAAC,CAAC,GAAG,SAAS,sBAAsB,IAAI,EAAE;QAC1C,CAAC,CAAC,oBAAoB,eAAe,yBAAyB,IAAI,EAAE,CAAC;IAEvE,4BAA4B;IAC5B,IAAI,IAAI,KAAK,CAAC,IAAI,SAAS,CAAC,eAAe,EAAE,CAAC;QAC5C,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,eAAe,CAAC;IAC5C,CAAC;SAAM,IAAI,IAAI,IAAI,CAAC,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;QAC/C,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC;IACzC,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"model-selector.js","sourceRoot":"","sources":["../../src/router/model-selector.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@ export type RateStatus = {
14
14
  codex: RateLimitEntry;
15
15
  antigravity: RateLimitEntry;
16
16
  updated_at: string;
17
+ budget_source: string;
17
18
  };
18
19
  export declare function trackRequest(platform: Platform, count?: number): void;
19
20
  export declare function trackTokens(platform: Platform, tokens: number): void;
@@ -1 +1 @@
1
- {"version":3,"file":"rate-monitor.d.ts","sourceRoot":"","sources":["../../src/router/rate-monitor.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,aAAa,CAAC;AAErE,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,cAAc,CAAC;IACtB,WAAW,EAAE,cAAc,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAaF,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,SAAI,GAAG,IAAI,CAehE;AAID,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAiBpE;AA6BD,wBAAgB,aAAa,IAAI,UAAU,CAQ1C;AAGD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAa9D"}
1
+ {"version":3,"file":"rate-monitor.d.ts","sourceRoot":"","sources":["../../src/router/rate-monitor.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,aAAa,CAAC;AAErE,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,cAAc,CAAC;IACtB,WAAW,EAAE,cAAc,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAaF,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,SAAI,GAAG,IAAI,CAehE;AAID,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAiBpE;AA6BD,wBAAgB,aAAa,IAAI,UAAU,CAS1C;AAGD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAa9D"}
@@ -72,6 +72,7 @@ export function getRateStatus() {
72
72
  codex: buildEntry('codex'),
73
73
  antigravity: buildEntry('antigravity'),
74
74
  updated_at: new Date().toISOString(),
75
+ budget_source: 'Budgets are local planning estimates (set in ~/.veto/config.json), not provider quotas. Token counts come from the host AI\'s self-reports.',
75
76
  };
76
77
  }
77
78
  // Returns a fallback platform when the preferred one is at warning/critical level
@@ -1 +1 @@
1
- {"version":3,"file":"rate-monitor.js","sourceRoot":"","sources":["../../src/router/rate-monitor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rate-monitor.js","sourceRoot":"","sources":["../../src/router/rate-monitor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"advisors.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/advisors.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,eAAO,MAAM,eAAe,EAAE,UA0U7B,CAAC"}
1
+ {"version":3,"file":"advisors.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/advisors.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAKjD,eAAO,MAAM,eAAe,EAAE,UAkjB7B,CAAC"}
@@ -9,7 +9,34 @@ import { execSync } from 'node:child_process';
9
9
  import { executeOne } from '../../agents/executor.js';
10
10
  import { recordOutcome } from '../../router/index.js';
11
11
  import { buildContextString } from '../../context/reader.js';
12
+ import { verifyPackages } from '../../agents/security/dep-verify.js';
13
+ import { getSessionReplay, listSessions } from '../../memory/local.js';
14
+ import { autoSave } from '../runtime.js';
12
15
  export const advisorHandlers = {
16
+ veto_dep_verify: async ({ args }) => {
17
+ const names = Array.isArray(args?.packages) ? args.packages.map(String).map((s) => s.trim()).filter(Boolean) : [];
18
+ if (names.length === 0) {
19
+ return { content: [{ type: 'text', text: JSON.stringify({ success: false, message: 'packages (non-empty array of names) is required.' }) }], isError: true };
20
+ }
21
+ if (names.length > 30) {
22
+ return { content: [{ type: 'text', text: JSON.stringify({ success: false, message: 'Max 30 packages per call.' }) }], isError: true };
23
+ }
24
+ const eco = String(args?.ecosystem ?? 'npm');
25
+ if (!['npm', 'pypi', 'crates'].includes(eco)) {
26
+ return { content: [{ type: 'text', text: JSON.stringify({ success: false, message: "ecosystem must be 'npm', 'pypi', or 'crates'." }) }], isError: true };
27
+ }
28
+ const results = await verifyPackages(names, eco);
29
+ const counts = {};
30
+ for (const r of results)
31
+ counts[r.verdict] = (counts[r.verdict] ?? 0) + 1;
32
+ const worst = results.some(r => r.verdict === 'not_found' || r.verdict === 'high_risk') ? 'BLOCK' :
33
+ results.some(r => r.verdict === 'caution' || r.verdict === 'unverifiable') ? 'REVIEW' : 'CLEAR';
34
+ const guidance = worst === 'BLOCK' ? 'Do not install the flagged packages. not_found = likely hallucinated name (and a slopsquatting target); high_risk = squat-profile package.' :
35
+ worst === 'REVIEW' ? 'Installable, but review the flagged signals first.' :
36
+ 'All packages verified against the registry.';
37
+ recordOutcome('dep_verify', 40, 2, 'dependency-audit', results.some(r => r.verdict === 'unverifiable') ? 60 : 90);
38
+ return { content: [{ type: 'text', text: JSON.stringify({ success: true, ecosystem: eco, overall: worst, guidance, counts, results }, null, 2) }] };
39
+ },
13
40
  veto_dep_advisor: async ({ args }) => {
14
41
  const projectDir = String(args?.project_dir ?? '').trim();
15
42
  let ecosystem = String(args?.ecosystem ?? 'auto');
@@ -327,5 +354,192 @@ export const advisorHandlers = {
327
354
  council_note: 'Run veto_council_debate before removing any flags to assess downstream risk.',
328
355
  }, null, 2) }] };
329
356
  },
357
+ veto_drift_check: async ({ args }) => {
358
+ let sessionId = args?.session_id ? String(args.session_id).trim() : null;
359
+ if (!sessionId) {
360
+ sessionId = autoSave.last_session_id;
361
+ }
362
+ if (!sessionId) {
363
+ const recent = listSessions(1);
364
+ if (recent.length > 0)
365
+ sessionId = recent[0].id;
366
+ }
367
+ if (!sessionId) {
368
+ return {
369
+ content: [{ type: 'text', text: JSON.stringify({ success: false, message: 'No active or saved sessions found. Save a session first.' }, null, 2) }],
370
+ isError: true
371
+ };
372
+ }
373
+ const limit = typeof args?.limit === 'number' ? Math.max(1, args.limit) : 50;
374
+ const projectDir = args?.project_dir ? String(args.project_dir).trim() : undefined;
375
+ const allTraces = getSessionReplay(sessionId);
376
+ const traces = allTraces.slice(-limit);
377
+ const total_calls = traces.length;
378
+ const failed_calls = traces.filter(t => t.result_status === 'error').length;
379
+ const error_rate = total_calls > 0 ? Math.round((failed_calls / total_calls) * 100) : 0;
380
+ // Consecutive failures (from the end)
381
+ let consecutive_failures = 0;
382
+ for (let i = traces.length - 1; i >= 0; i--) {
383
+ if (traces[i].result_status === 'error') {
384
+ consecutive_failures++;
385
+ }
386
+ else {
387
+ break;
388
+ }
389
+ }
390
+ // Repeated error messages
391
+ const errorCounts = {};
392
+ for (const t of traces) {
393
+ if (t.result_status === 'error' && t.error_message) {
394
+ const msg = t.error_message.trim();
395
+ errorCounts[msg] = (errorCounts[msg] ?? 0) + 1;
396
+ }
397
+ }
398
+ const repeated_errors = Object.entries(errorCounts)
399
+ .map(([error_message, count]) => ({ error_message, count }))
400
+ .filter(item => item.count >= 2)
401
+ .sort((a, b) => b.count - a.count);
402
+ // Tool repetition and max consecutive tool calls
403
+ const toolCounts = {};
404
+ let max_consecutive_tool = '';
405
+ let max_consecutive_tool_count = 0;
406
+ let current_tool = '';
407
+ let current_consecutive_count = 0;
408
+ for (const t of traces) {
409
+ toolCounts[t.tool_name] = (toolCounts[t.tool_name] ?? 0) + 1;
410
+ if (t.tool_name === current_tool) {
411
+ current_consecutive_count++;
412
+ }
413
+ else {
414
+ if (current_consecutive_count > max_consecutive_tool_count) {
415
+ max_consecutive_tool_count = current_consecutive_count;
416
+ max_consecutive_tool = current_tool;
417
+ }
418
+ current_tool = t.tool_name;
419
+ current_consecutive_count = 1;
420
+ }
421
+ }
422
+ if (current_consecutive_count > max_consecutive_tool_count) {
423
+ max_consecutive_tool_count = current_consecutive_count;
424
+ max_consecutive_tool = current_tool;
425
+ }
426
+ const repeated_tools = Object.entries(toolCounts)
427
+ .map(([tool_name, count]) => ({ tool_name, count }))
428
+ .filter(item => item.count >= 3)
429
+ .sort((a, b) => b.count - a.count);
430
+ // Command repetition check
431
+ const commandCounts = {};
432
+ for (const t of traces) {
433
+ if (t.tool_name === 'run_command' && t.args_json) {
434
+ try {
435
+ const parsed = JSON.parse(t.args_json);
436
+ const cmd = String(parsed.CommandLine ?? '').trim();
437
+ if (cmd) {
438
+ commandCounts[cmd] = (commandCounts[cmd] ?? 0) + 1;
439
+ }
440
+ }
441
+ catch { /* skip */ }
442
+ }
443
+ }
444
+ const repeated_commands = Object.entries(commandCounts)
445
+ .map(([command, count]) => ({ command, count }))
446
+ .filter(item => item.count >= 2)
447
+ .sort((a, b) => b.count - a.count);
448
+ // Loop detection flag
449
+ const hasRepeatedError = repeated_errors.some(e => e.count >= 3);
450
+ const hasRepeatedCommand = repeated_commands.some(c => c.count >= 3);
451
+ const loop_detected = consecutive_failures >= 3 || hasRepeatedError || hasRepeatedCommand || max_consecutive_tool_count >= 4;
452
+ // Determine verdict
453
+ let verdict = 'GREEN';
454
+ if (consecutive_failures >= 5 || repeated_errors.some(e => e.count >= 4) || max_consecutive_tool_count >= 5) {
455
+ verdict = 'RED';
456
+ }
457
+ else if (consecutive_failures >= 3 || repeated_errors.some(e => e.count >= 2) || max_consecutive_tool_count >= 3) {
458
+ verdict = 'YELLOW';
459
+ }
460
+ let agentOut = '';
461
+ let recommendations = 'No compounding-error loops detected. Proceed with your current task.';
462
+ if (loop_detected || verdict !== 'GREEN' || total_calls > 0) {
463
+ const formattedTraces = traces.map(t => {
464
+ let cmdStr = '';
465
+ if (t.tool_name === 'run_command' && t.args_json) {
466
+ try {
467
+ cmdStr = ` (cmd: ${JSON.parse(t.args_json).CommandLine})`;
468
+ }
469
+ catch { }
470
+ }
471
+ return `- ${t.recorded_at.slice(11, 19)}: ${t.tool_name}${cmdStr} -> ${t.result_status.toUpperCase()}${t.error_message ? ` (error: ${t.error_message})` : ''}`;
472
+ }).join('\n');
473
+ const analysisPayload = {
474
+ session_id: sessionId,
475
+ heuristics: {
476
+ total_calls,
477
+ failed_calls,
478
+ error_rate_pct: error_rate,
479
+ consecutive_failures,
480
+ max_consecutive_tool: max_consecutive_tool ? `${max_consecutive_tool} (${max_consecutive_tool_count}x)` : 'none',
481
+ repeated_errors,
482
+ repeated_tools,
483
+ repeated_commands,
484
+ },
485
+ recent_timeline: formattedTraces,
486
+ };
487
+ const agentResult = await executeOne({
488
+ id: `drift-${Date.now().toString(36)}`,
489
+ agent: 'debugger',
490
+ task: `The AI coding assistant is verifying its session for compounding errors or loops. Analyze this trace. Under 'Remediation Plan', list 2-3 specific actions the AI should take to break the loop (e.g. read a specific file, check for syntax errors, check if a mock server is down, revert a commit).`,
491
+ code: JSON.stringify(analysisPayload, null, 2),
492
+ project_dir: projectDir,
493
+ });
494
+ agentOut = agentResult.plan?.approach ?? agentResult.output.recommendation ?? '';
495
+ recommendations = agentOut;
496
+ }
497
+ recordOutcome('drift_check', 30, 2, 'debugger', verdict === 'RED' ? 30 : verdict === 'YELLOW' ? 60 : 95);
498
+ const verdictEmoji = verdict === 'RED' ? '🔴 RED' : verdict === 'YELLOW' ? '🟡 YELLOW' : '🟢 GREEN';
499
+ const formatted = [
500
+ `## 🔄 Compounding-Error Circuit Breaker (Drift Check)`,
501
+ ``,
502
+ `**Verdict:** ${verdictEmoji}`,
503
+ `**Session ID:** \`${sessionId}\``,
504
+ ``,
505
+ `### Heuristics Snapshot`,
506
+ `- Total tool calls checked: ${total_calls}`,
507
+ `- Consecutive failures: ${consecutive_failures}`,
508
+ `- Error rate: ${error_rate}%`,
509
+ max_consecutive_tool ? `- Max consecutive tool calls: ${max_consecutive_tool} (${max_consecutive_tool_count}x)` : '',
510
+ ``,
511
+ `### Loop Indicators`,
512
+ `- Repeated errors: ${repeated_errors.length === 0 ? 'None' : repeated_errors.map(e => `\`${e.error_message}\` (${e.count}x)`).join(', ')}`,
513
+ `- Repeated tools: ${repeated_tools.length === 0 ? 'None' : repeated_tools.map(t => `\`${t.tool_name}\` (${t.count}x)`).join(', ')}`,
514
+ `- Repeated commands: ${repeated_commands.length === 0 ? 'None' : repeated_commands.map(c => `\`${c.command}\` (${c.count}x)`).join(', ')}`,
515
+ ``,
516
+ `### 🛠️ Remediation Recommendations`,
517
+ recommendations,
518
+ ].filter(l => l !== '').join('\n');
519
+ return {
520
+ content: [{
521
+ type: 'text',
522
+ text: JSON.stringify({
523
+ success: true,
524
+ session_id: sessionId,
525
+ verdict,
526
+ loop_detected,
527
+ heuristics: {
528
+ total_calls,
529
+ failed_calls,
530
+ error_rate,
531
+ consecutive_failures,
532
+ max_consecutive_tool: max_consecutive_tool || null,
533
+ max_consecutive_tool_count,
534
+ repeated_errors,
535
+ repeated_tools,
536
+ repeated_commands,
537
+ },
538
+ remediation_plan: agentOut || null,
539
+ formatted_report: formatted,
540
+ }, null, 2),
541
+ }],
542
+ };
543
+ },
330
544
  };
331
545
  //# sourceMappingURL=advisors.js.map