@jigyasudham/veto 1.2.19 → 1.4.1
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 +303 -251
- package/dist/cli.js +35 -9
- package/dist/cli.js.map +1 -1
- package/dist/context/reader.d.ts.map +1 -1
- package/dist/context/reader.js +4 -1
- package/dist/context/reader.js.map +1 -1
- package/dist/council/decision-engine.d.ts.map +1 -1
- package/dist/council/decision-engine.js +21 -1
- package/dist/council/decision-engine.js.map +1 -1
- package/dist/council/decision-extractor.d.ts +13 -0
- package/dist/council/decision-extractor.d.ts.map +1 -0
- package/dist/council/decision-extractor.js +66 -0
- package/dist/council/decision-extractor.js.map +1 -0
- package/dist/council/devil-advocate.d.ts.map +1 -1
- package/dist/council/devil-advocate.js +12 -1
- package/dist/council/devil-advocate.js.map +1 -1
- package/dist/council/index.d.ts.map +1 -1
- package/dist/council/index.js +26 -5
- package/dist/council/index.js.map +1 -1
- package/dist/council/lead-developer.d.ts.map +1 -1
- package/dist/council/lead-developer.js +34 -14
- package/dist/council/lead-developer.js.map +1 -1
- package/dist/council/legal-compliance.d.ts.map +1 -1
- package/dist/council/legal-compliance.js +44 -24
- package/dist/council/legal-compliance.js.map +1 -1
- package/dist/council/llm-council.d.ts +4 -0
- package/dist/council/llm-council.d.ts.map +1 -0
- package/dist/council/llm-council.js +160 -0
- package/dist/council/llm-council.js.map +1 -0
- package/dist/council/product-manager.d.ts.map +1 -1
- package/dist/council/product-manager.js +33 -13
- package/dist/council/product-manager.js.map +1 -1
- package/dist/council/security.d.ts.map +1 -1
- package/dist/council/security.js +44 -24
- package/dist/council/security.js.map +1 -1
- package/dist/council/system-architect.d.ts.map +1 -1
- package/dist/council/system-architect.js +33 -13
- package/dist/council/system-architect.js.map +1 -1
- package/dist/council/types.d.ts +2 -0
- package/dist/council/types.d.ts.map +1 -1
- package/dist/council/ux-designer.d.ts.map +1 -1
- package/dist/council/ux-designer.js +47 -26
- package/dist/council/ux-designer.js.map +1 -1
- package/dist/memory/local.d.ts +40 -1
- package/dist/memory/local.d.ts.map +1 -1
- package/dist/memory/local.js +95 -4
- package/dist/memory/local.js.map +1 -1
- package/dist/router/complexity-scorer.js +2 -2
- package/dist/router/complexity-scorer.js.map +1 -1
- package/dist/server.js +232 -793
- package/dist/server.js.map +1 -1
- package/dist/skills/memory/skill-session-restore.d.ts.map +1 -1
- package/dist/skills/memory/skill-session-restore.js +19 -24
- package/dist/skills/memory/skill-session-restore.js.map +1 -1
- package/dist/skills/memory/skill-session-save.js +4 -4
- package/dist/skills/memory/skill-session-save.js.map +1 -1
- package/dist/tools/definitions.d.ts +1073 -0
- package/dist/tools/definitions.d.ts.map +1 -0
- package/dist/tools/definitions.js +797 -0
- package/dist/tools/definitions.js.map +1 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,8 +1,50 @@
|
|
|
1
1
|
# veto
|
|
2
2
|
|
|
3
|
-
> **50 agents.
|
|
3
|
+
> **50 agents. 49 tools. 3 AIs. Self-learning. Zero extra cost.**
|
|
4
4
|
|
|
5
|
-
An MCP server that runs locally on your machine, plugs into Claude Code, Codex CLI,
|
|
5
|
+
An MCP server that runs locally on your machine, plugs into Claude Code, Codex CLI, Gemini CLI, Cursor, Windsurf, and Zed using your existing subscriptions — giving every AI a council of specialist agents, persistent cross-platform memory, a self-learning router, CI/CD gates, workspace discovery, live docs, cross-platform handoff, usage metrics, and the ability to say no to bad decisions before any code is written.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## How the Agents Actually Work
|
|
10
|
+
|
|
11
|
+
**This is the most important thing to understand about Veto.**
|
|
12
|
+
|
|
13
|
+
Veto has two fundamentally different types of agents:
|
|
14
|
+
|
|
15
|
+
### Council agents — real LLM reasoning (7 agents)
|
|
16
|
+
|
|
17
|
+
The 7 council agents call your existing AI subscription via MCP Sampling — they do not use a separate API key or cost anything extra. Each agent gets a tight system prompt, reasons independently, and returns a structured JSON verdict.
|
|
18
|
+
|
|
19
|
+
| Agent | Role |
|
|
20
|
+
|---|---|
|
|
21
|
+
| Lead Developer | Code quality, maintainability, implementation risk |
|
|
22
|
+
| Product Manager | Scope, timeline, business value |
|
|
23
|
+
| System Architect | Architecture fit, scalability, coupling |
|
|
24
|
+
| UX Designer | User impact, accessibility, friction |
|
|
25
|
+
| Devil's Advocate | Challenges assumptions, stress-tests the plan |
|
|
26
|
+
| Legal & Compliance | License risks, data handling, regulatory exposure |
|
|
27
|
+
| Security | OWASP, auth, injection, data leakage |
|
|
28
|
+
|
|
29
|
+
Use `strictness` to control depth:
|
|
30
|
+
- `fast` — 3 agents (Lead Dev + Architect + Security), instant
|
|
31
|
+
- `standard` — all 7 agents, default
|
|
32
|
+
- `strict` — all 7 agents + Devil's Advocate rebuttal round on the most critical blocker
|
|
33
|
+
|
|
34
|
+
`veto_benchmark` also runs LLM council — two debates in parallel for side-by-side approach comparison.
|
|
35
|
+
|
|
36
|
+
### Expert modules — deterministic, instant, zero tokens (42+ agents)
|
|
37
|
+
|
|
38
|
+
Every other agent in Veto — coder, reviewer, tester, debugger, security scanner, secrets scanner, database, frontend, devops, and all 30+ others — is a **deterministic expert module**: structured templates, OWASP regex patterns, and domain heuristics compiled into code. They run offline, produce zero token cost, and return results in milliseconds.
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
veto_agent_plan { agent: "coder", task: "..." } ← deterministic plan, instant
|
|
42
|
+
veto_code_review { code: "..." } ← regex + heuristic scanner, instant
|
|
43
|
+
veto_secrets_scan{ text: "..." } ← pattern matching, instant
|
|
44
|
+
veto_council_debate { task: "..." } ← 7 LLM calls via MCP Sampling
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Why this split?** LLM reasoning costs tokens and latency — it's only worth it for high-stakes decisions before architecture/security/migration work. Pattern-matching is MORE reliable than LLMs for secrets detection and OWASP scanning (no hallucinations). The deterministic agents are the workhorses; the council is the gatekeeper.
|
|
6
48
|
|
|
7
49
|
---
|
|
8
50
|
|
|
@@ -10,8 +52,8 @@ An MCP server that runs locally on your machine, plugs into Claude Code, Codex C
|
|
|
10
52
|
|
|
11
53
|
| Requirement | Version | Notes |
|
|
12
54
|
|---|---|---|
|
|
13
|
-
| **Node.js** | 22.5.0 or higher | Required — uses
|
|
14
|
-
| **At least one AI CLI** | Latest | Claude Code, Gemini CLI, or Codex CLI — whichever you use. Veto works with all
|
|
55
|
+
| **Node.js** | 22.5.0 or higher | Required — uses built-in `node:sqlite` (no native compilation). Download at [nodejs.org](https://nodejs.org). |
|
|
56
|
+
| **At least one AI CLI** | Latest | Claude Code, Gemini CLI, or Codex CLI — whichever you use. Veto works with all. |
|
|
15
57
|
|
|
16
58
|
```bash
|
|
17
59
|
node --version # must be v22.5.0 or higher
|
|
@@ -33,18 +75,19 @@ npx @jigyasudham/veto@latest init
|
|
|
33
75
|
claude mcp add veto -s user -- npx -y --package @jigyasudham/veto veto-server
|
|
34
76
|
```
|
|
35
77
|
|
|
36
|
-
The `-s user` flag registers Veto at user scope so it is available in **every
|
|
78
|
+
The `-s user` flag registers Veto at user scope so it is available in **every window and project** automatically.
|
|
37
79
|
|
|
38
80
|
### Other platforms
|
|
39
81
|
|
|
40
82
|
| Platform | Config file written by `veto init` |
|
|
41
83
|
|---|---|
|
|
42
84
|
| **Gemini CLI** | `~/.gemini/settings.json` |
|
|
43
|
-
| **Codex CLI** | `~/.codex/config.
|
|
85
|
+
| **Codex CLI** | `~/.codex/config.toml` |
|
|
44
86
|
| **Cursor** | `~/.cursor/mcp.json` |
|
|
45
87
|
| **Windsurf** | `~/.codeium/windsurf/mcp_config.json` |
|
|
88
|
+
| **Zed** | `~/.config/zed/settings.json` · Windows: `%APPDATA%\Zed\settings.json` (`context_servers` key) |
|
|
46
89
|
|
|
47
|
-
All config files are home-directory relative — they apply globally across all projects
|
|
90
|
+
All config files are home-directory relative — they apply globally across all projects. Restart the AI client after `veto init`.
|
|
48
91
|
|
|
49
92
|
```json
|
|
50
93
|
{
|
|
@@ -61,64 +104,73 @@ All config files are home-directory relative — they apply globally across all
|
|
|
61
104
|
|
|
62
105
|
## What Veto Does
|
|
63
106
|
|
|
64
|
-
**Council** — Before any significant task, 7 specialist agents debate it in parallel and return a GREEN / YELLOW / RED / DEADLOCK verdict. Bad decisions get blocked before any code is written.
|
|
107
|
+
**Council** — Before any significant task, 7 specialist agents (LLM-backed via MCP Sampling) debate it in parallel and return a GREEN / YELLOW / RED / DEADLOCK verdict. Bad decisions get blocked before any code is written. Use `strictness: "fast"` for quick checks or `"strict"` for a full rebuttal round.
|
|
108
|
+
|
|
109
|
+
**Metrics** — `veto_metrics` gives you a live usage dashboard: sessions saved, council verdict breakdown, top agents by call count, 7-day quality trend, and knowledge base stats. Zero cost, pure SQLite.
|
|
110
|
+
|
|
111
|
+
**Changelog** — `veto_changelog` reads your git history since the last tag, groups commits by conventional type (feat, fix, refactor...), and returns a structured changelog ready to publish.
|
|
65
112
|
|
|
66
|
-
**
|
|
113
|
+
**Git blame** — `veto_git_blame` returns contribution history for any file or directory — total commits, contributor list with counts, and last-modified metadata. Instant, local, no network.
|
|
114
|
+
|
|
115
|
+
**Codebase-aware agents** — Pass `project_dir` to any tool and Veto auto-reads `package.json`, detects your tech stack, and injects recent `git diff` context. Every agent responds to your actual project.
|
|
67
116
|
|
|
68
117
|
**Structured output** — Every agent result carries `confidence`, `severity`, `recommendation`, `affected_files`, and `line_refs` — composable and actionable.
|
|
69
118
|
|
|
70
|
-
**Router** — Every task is scored locally (zero tokens) and sent to the right model tier. Rate limits are tracked across all
|
|
119
|
+
**Router** — Every task is scored locally (zero tokens) and sent to the right model tier. Rate limits are tracked across all platforms. The router self-adjusts from recorded outcomes and learns which agents perform best per file type.
|
|
71
120
|
|
|
72
|
-
**
|
|
121
|
+
**Memory** — Sessions, decisions, knowledge, and coding patterns persist across every conversation and platform. Sessions are searchable by summary, context, tags, or project path. Tag sessions with `tags: ["auth", "migration"]` and find them later with `query: "auth"`.
|
|
73
122
|
|
|
74
|
-
**
|
|
123
|
+
**Workspace discovery** — `veto_discover` scans a project once and builds a rich context map: git state, tech stack, file tree, dependencies, and key config files.
|
|
75
124
|
|
|
76
|
-
**
|
|
125
|
+
**Project summarization** — `veto_summarize` generates a concise expert briefing of a project, directory, or file.
|
|
77
126
|
|
|
78
|
-
**
|
|
127
|
+
**Explain anything** — `veto_explain` accepts a file path or raw text (error messages, stack traces, compiler output). Auto-routes to the right expert — file extension detection for source files, debugger agent for error-like content.
|
|
79
128
|
|
|
80
|
-
**Diff review** — `veto_diff_review` runs code review, security scan, and secrets scan in parallel across a git diff. Returns a pass/warn/fail verdict
|
|
129
|
+
**Diff review** — `veto_diff_review` runs code review, security scan, and secrets scan in parallel across a git diff. Returns a pass/warn/fail verdict ready for CI and pre-commit hooks.
|
|
81
130
|
|
|
82
131
|
**File watching** — `veto_watch` monitors your project and tells you which agent to call when files change.
|
|
83
132
|
|
|
84
133
|
**Sequential pipelines** — `veto_workflow` runs a chain of agents with pass/fail gates end to end.
|
|
85
134
|
|
|
86
|
-
**
|
|
135
|
+
**Cross-platform handoff** — Claude hitting its rate limit? `veto_handoff` → open Gemini → `veto_continue`. Full context restored in seconds.
|
|
87
136
|
|
|
88
137
|
**Plugin system** — Drop a `.js` file in `~/.veto/agents/` and it registers as a custom agent available in every tool.
|
|
89
138
|
|
|
90
|
-
**MCP Resources + Prompts** — Read Veto's memory as MCP Resources. Use built-in Prompts as reusable task templates.
|
|
91
|
-
|
|
92
|
-
**Cross-platform handoff** — Claude hitting its rate limit? `veto_handoff` → open Gemini → `veto_continue`. Full context restored in seconds.
|
|
93
|
-
|
|
94
139
|
---
|
|
95
140
|
|
|
96
141
|
## The 50 Agents
|
|
97
142
|
|
|
98
|
-
### Council Layer
|
|
143
|
+
### Council Layer — LLM-backed via MCP Sampling (8)
|
|
144
|
+
|
|
145
|
+
> These agents call your existing AI subscription. Real reasoning, real cost. Used exclusively by `veto_council_debate` and `veto_benchmark`.
|
|
146
|
+
|
|
99
147
|
`Lead Developer` · `Product Manager` · `System Architect` · `UX Designer` · `Devil's Advocate` · `Legal & Compliance` · `Security` · `Decision Engine`
|
|
100
148
|
|
|
101
|
-
###
|
|
149
|
+
### Expert Modules — deterministic, instant, zero tokens (42)
|
|
150
|
+
|
|
151
|
+
> Pattern matching, domain heuristics, and structured templates compiled into code. Offline capable. No LLM calls.
|
|
152
|
+
|
|
153
|
+
**Development (12)**
|
|
102
154
|
`Coder` · `Code Reviewer` · `Tester` · `Debugger` · `Refactor` · `Database` · `API` · `Frontend` · `Backend` · `DevOps` · `Performance` · `Migration`
|
|
103
155
|
|
|
104
|
-
|
|
156
|
+
**Security (6)**
|
|
105
157
|
`Security Scanner` · `Auth Agent` · `Data Privacy` · `Secrets Agent` · `Dependency Audit` · `Penetration Tester`
|
|
106
158
|
|
|
107
|
-
|
|
159
|
+
**Memory (5)**
|
|
108
160
|
`Context Manager` · `Decision Logger` · `Project Mapper` · `Pattern Learner` · `Knowledge Base`
|
|
109
161
|
|
|
110
|
-
|
|
162
|
+
**Research (7)**
|
|
111
163
|
`Researcher` · `Tech Advisor` · `Cost Analyzer` · `Competitor Analyzer` · `Risk Assessor` · `Estimator` · `Ethics & Bias`
|
|
112
164
|
|
|
113
|
-
|
|
165
|
+
**Quality (5)**
|
|
114
166
|
`Code Quality` · `Documentation` · `Accessibility` · `Compatibility` · `Error Handling`
|
|
115
167
|
|
|
116
|
-
|
|
168
|
+
**Workflow (7)**
|
|
117
169
|
`Task Planner` · `Task Coordinator` · `File Manager` · `Git Agent` · `Search Agent` · `Reporter` · `Automation`
|
|
118
170
|
|
|
119
171
|
---
|
|
120
172
|
|
|
121
|
-
## MCP Tools (
|
|
173
|
+
## MCP Tools (49)
|
|
122
174
|
|
|
123
175
|
| Category | Tools |
|
|
124
176
|
|---|---|
|
|
@@ -133,9 +185,9 @@ All config files are home-directory relative — they apply globally across all
|
|
|
133
185
|
| **Learning** | `veto_record_outcome` · `veto_learning_stats` · `veto_learning_apply` |
|
|
134
186
|
| **Handoff** | `veto_handoff` · `veto_continue` · `veto_platform_setup` |
|
|
135
187
|
| **Intelligence** | `veto_docs_fetch` · `veto_context_status` · `veto_task_parse` |
|
|
136
|
-
| **Observability** | `veto_usage_status` · `veto_audit_log` · `veto_health` |
|
|
188
|
+
| **Observability** | `veto_usage_status` · `veto_audit_log` · `veto_health` · `veto_metrics` |
|
|
137
189
|
| **CI/CD** | `veto_ci_gate` · `veto_pr_review` |
|
|
138
|
-
| **Discover** | `veto_discover` · `veto_summarize` |
|
|
190
|
+
| **Discover** | `veto_discover` · `veto_summarize` · `veto_git_blame` · `veto_changelog` |
|
|
139
191
|
| **Plugins** | `veto_plugins` |
|
|
140
192
|
|
|
141
193
|
## MCP Resources
|
|
@@ -160,10 +212,6 @@ All config files are home-directory relative — they apply globally across all
|
|
|
160
212
|
|
|
161
213
|
## CLI Commands
|
|
162
214
|
|
|
163
|
-
Use these from any terminal to inspect Veto's brain without opening an AI session.
|
|
164
|
-
|
|
165
|
-
After installing globally (`npm i -g @jigyasudham/veto`) or via npx:
|
|
166
|
-
|
|
167
215
|
```bash
|
|
168
216
|
veto init # Configure all AI tools + scan project
|
|
169
217
|
veto doctor # Check MCP registrations + system health
|
|
@@ -173,24 +221,17 @@ veto sessions # List last 20 saved sessions ([auto] badge on
|
|
|
173
221
|
veto sessions --clean # Remove auto-saves older than 7 days
|
|
174
222
|
veto memory [query] # Search knowledge base (blank = all entries)
|
|
175
223
|
veto patterns [prefix] # List learned agent/routing patterns
|
|
176
|
-
veto hook install
|
|
177
|
-
veto hook remove
|
|
178
|
-
veto check
|
|
224
|
+
veto hook install # Install pre-commit secrets scan hook
|
|
225
|
+
veto hook remove # Remove the veto pre-commit hook
|
|
226
|
+
veto check # Scan staged changes for secrets (used by hook)
|
|
179
227
|
veto help # Commands + MCP tools reference
|
|
180
228
|
veto help --troubleshoot # Full troubleshooting guide (14 scenarios)
|
|
181
|
-
|
|
182
|
-
# Without installing:
|
|
183
|
-
npx @jigyasudham/veto help # Same help output, no install needed
|
|
184
|
-
npx @jigyasudham/veto status # Check status from any machine
|
|
185
|
-
npx @jigyasudham/veto doctor # Diagnose MCP setup from any machine
|
|
186
229
|
```
|
|
187
230
|
|
|
188
|
-
`veto help` shows all CLI commands, all
|
|
231
|
+
`veto help` shows all CLI commands, all 49 MCP tool names, MCP Resources, and MCP Prompts.
|
|
189
232
|
|
|
190
233
|
### `veto doctor`
|
|
191
234
|
|
|
192
|
-
Diagnoses your full Veto setup in one command:
|
|
193
|
-
|
|
194
235
|
```
|
|
195
236
|
veto doctor
|
|
196
237
|
|
|
@@ -206,203 +247,249 @@ veto doctor
|
|
|
206
247
|
✓ Claude Code — registered
|
|
207
248
|
✓ Gemini CLI — registered
|
|
208
249
|
· Codex CLI — not installed
|
|
209
|
-
·
|
|
250
|
+
· Zed — not installed
|
|
210
251
|
|
|
211
252
|
✓ All checks passed — Veto is healthy!
|
|
212
253
|
```
|
|
213
254
|
|
|
214
|
-
Run `veto init` to repair any failing check.
|
|
215
|
-
|
|
216
255
|
---
|
|
217
256
|
|
|
218
|
-
##
|
|
219
|
-
|
|
220
|
-
`veto_discover` scans a project once and stores a rich context map in Veto memory. Every subsequent agent call can read from this map instead of re-scanning files.
|
|
257
|
+
## Council Debate
|
|
221
258
|
|
|
222
259
|
```
|
|
223
|
-
|
|
260
|
+
veto_council_debate {
|
|
261
|
+
task: "migrate auth from sessions to JWTs",
|
|
262
|
+
project_dir: "/your/project",
|
|
263
|
+
strictness: "standard" ← fast | standard | strict
|
|
264
|
+
}
|
|
224
265
|
→ {
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
266
|
+
final_verdict: "YELLOW",
|
|
267
|
+
block_reasons: [],
|
|
268
|
+
warnings: ["JWT revocation requires a token blocklist — plan storage", "Clock skew between services can break expiry checks"],
|
|
269
|
+
votes: {
|
|
270
|
+
lead_dev: { verdict: "warn", reason: "Stateless JWTs complicate logout flows...", concerns: [...] },
|
|
271
|
+
architect: { verdict: "approve", reason: "Good fit for microservices...", concerns: [...] },
|
|
272
|
+
security: { verdict: "warn", reason: "Refresh token rotation must be atomic...", concerns: [...] },
|
|
273
|
+
...
|
|
274
|
+
},
|
|
275
|
+
recommended: "Proceed with JWT migration. Implement a Redis blocklist for logout..."
|
|
231
276
|
}
|
|
232
277
|
```
|
|
233
278
|
|
|
234
|
-
|
|
279
|
+
When the task presents a binary choice, agents name the option they prefer:
|
|
280
|
+
|
|
281
|
+
```
|
|
282
|
+
veto_council_debate {
|
|
283
|
+
task: "Should we add an Express HTTP layer or keep Veto pure MCP with an external adapter?"
|
|
284
|
+
}
|
|
285
|
+
→ formatted_output includes:
|
|
286
|
+
🎯 Council leans toward: "pure MCP with an external adapter" (5 agents prefer it)
|
|
287
|
+
Lead Dev: [Express HTTP vs external adapter] ... [WARN]
|
|
288
|
+
recommendation: Prefer "external adapter" — Express adds new infrastructure...
|
|
289
|
+
Security: [Express HTTP vs external adapter] ... [WARN]
|
|
290
|
+
recommendation: Prefer "external adapter" — keeps the threat model local-only...
|
|
291
|
+
```
|
|
235
292
|
|
|
236
293
|
---
|
|
237
294
|
|
|
238
|
-
##
|
|
295
|
+
## Session Tagging + Search
|
|
239
296
|
|
|
240
|
-
|
|
297
|
+
Tag sessions when saving to make them findable later:
|
|
241
298
|
|
|
242
299
|
```
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
bullets: [
|
|
249
|
-
"Full-stack Next.js app with Prisma ORM and PostgreSQL",
|
|
250
|
-
"Auth via NextAuth — sessions stored in DB, not JWT",
|
|
251
|
-
"API routes under /src/app/api — RESTful, no tRPC",
|
|
252
|
-
"Background jobs via BullMQ with Redis",
|
|
253
|
-
"Deployed on Vercel — preview branches auto-deploy"
|
|
254
|
-
]
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
# File-level:
|
|
259
|
-
veto_summarize { "file_path": "/your/project/src/auth.ts", "focus": "security" }
|
|
300
|
+
veto_session_save {
|
|
301
|
+
summary: "Implemented JWT auth middleware",
|
|
302
|
+
context: "...",
|
|
303
|
+
tags: ["auth", "jwt", "middleware"]
|
|
304
|
+
}
|
|
260
305
|
|
|
261
|
-
#
|
|
262
|
-
|
|
306
|
+
# Find it weeks later:
|
|
307
|
+
veto_sessions_list { query: "auth" }
|
|
308
|
+
→ sessions matching "auth" in summary, context, tags, or project_dir
|
|
263
309
|
```
|
|
264
310
|
|
|
265
311
|
---
|
|
266
312
|
|
|
267
|
-
##
|
|
313
|
+
## New in v1.4.1
|
|
268
314
|
|
|
269
|
-
|
|
270
|
-
- Project name, version, dependency list
|
|
271
|
-
- Detected tech stack (React, Next.js, Prisma, Express, MCP, etc.)
|
|
272
|
-
- Recent `git diff --stat` and last 5 commits
|
|
273
|
-
- Config files present (tsconfig, vite.config, tailwind, etc.)
|
|
315
|
+
### Council debate — decision-aware verdicts
|
|
274
316
|
|
|
317
|
+
When your task presents a binary architectural choice ("should we X or Y", "A vs B"), every council agent now identifies which option it prefers and names it explicitly. The output includes a `🎯 Council leans toward:` line counting how many agents favour each option.
|
|
318
|
+
|
|
319
|
+
Before — agents fired generic keyword-matched concerns unrelated to the choice:
|
|
275
320
|
```
|
|
276
|
-
|
|
277
|
-
task: "migrate auth from sessions to JWTs",
|
|
278
|
-
project_dir: "/your/project" ← agents now know your actual stack
|
|
279
|
-
}
|
|
321
|
+
Lead Dev: "Persistent memory stores grow unbounded..." ← nothing to do with the question
|
|
280
322
|
```
|
|
281
323
|
|
|
282
|
-
|
|
324
|
+
After — agents address the specific choice:
|
|
325
|
+
```
|
|
326
|
+
Lead Dev: [Express-bundled vs external-adapter] reason [WARN]
|
|
327
|
+
recommendation: Prefer "external-adapter" — "Express-bundled" adds new
|
|
328
|
+
infrastructure to maintain; validate real demand before building.
|
|
329
|
+
🎯 Council leans toward: "external adapter pattern" (4 agents prefer it)
|
|
330
|
+
```
|
|
283
331
|
|
|
284
|
-
|
|
332
|
+
LLM-backed agents (when MCP Sampling is available) are now explicitly instructed to name the preferred option in their recommendation.
|
|
333
|
+
|
|
334
|
+
### `veto_session_restore` — resume instructions
|
|
285
335
|
|
|
286
|
-
|
|
336
|
+
The restore response now includes a `resume_instructions` field that tells the AI exactly what to do:
|
|
287
337
|
|
|
288
338
|
```
|
|
289
|
-
|
|
339
|
+
veto_session_restore { session_id: "..." }
|
|
290
340
|
→ {
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
341
|
+
resume_instructions: "Context restored. Trust the summary, context, and task_state
|
|
342
|
+
above. Do NOT re-read source files to orient yourself — only open a file if you
|
|
343
|
+
are about to EDIT it. Start immediately with: [nextAction from task_state].",
|
|
344
|
+
session_id: "...",
|
|
345
|
+
summary: "...",
|
|
346
|
+
context: { ... },
|
|
347
|
+
task_state: { nextAction: "Edit src/server.ts line 302, add zod validation..." },
|
|
348
|
+
...
|
|
297
349
|
}
|
|
298
350
|
```
|
|
299
351
|
|
|
300
|
-
|
|
352
|
+
This fixes the core issue where AI sessions were re-reading the entire codebase on restore instead of trusting the saved context.
|
|
353
|
+
|
|
354
|
+
### `veto_session_save` — input validation
|
|
355
|
+
|
|
356
|
+
`summary`, `context`, and `task_state` now have enforced size limits. Oversized inputs are truncated with a warning rather than silently stored or crashing.
|
|
357
|
+
|
|
358
|
+
| Field | Limit |
|
|
359
|
+
|---|---|
|
|
360
|
+
| `summary` | 2,000 chars |
|
|
361
|
+
| `context` | 50,000 chars |
|
|
362
|
+
| `task_state` | 20,000 chars |
|
|
363
|
+
|
|
364
|
+
```
|
|
365
|
+
veto_session_save { summary: "...(very long)..." }
|
|
366
|
+
→ { success: true, truncation_warnings: ["summary truncated to 2000 chars (was 8432)"] }
|
|
367
|
+
```
|
|
301
368
|
|
|
302
369
|
---
|
|
303
370
|
|
|
304
|
-
##
|
|
371
|
+
## New in v1.4.0
|
|
305
372
|
|
|
306
|
-
|
|
373
|
+
### `veto_metrics` — usage dashboard
|
|
307
374
|
|
|
308
375
|
```
|
|
309
|
-
|
|
376
|
+
veto_metrics {}
|
|
310
377
|
→ {
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
},
|
|
318
|
-
review_comment: "## ⚠️ Veto Review — WARN\n...", ← paste directly into GitHub
|
|
319
|
-
blocking_issues: []
|
|
378
|
+
sessions: { total: 45, today: 2, this_week: 8 },
|
|
379
|
+
council: { total: 24, today: 1, by_verdict: { GREEN: 12, YELLOW: 9, RED: 3 } },
|
|
380
|
+
agents: [ { agent: "coder", calls: 38, avg_quality: 86 }, ... ],
|
|
381
|
+
quality: { overall_avg: 86, trend: [{ date: "2026-05-17", avg: 89, count: 5 }] },
|
|
382
|
+
knowledge:{ total_entries: 12, by_type: { solution: 6, decision: 4, pattern: 2 } },
|
|
383
|
+
patterns: { total: 10 }
|
|
320
384
|
}
|
|
321
385
|
```
|
|
322
386
|
|
|
323
|
-
|
|
387
|
+
### `veto_changelog` — git changelog
|
|
324
388
|
|
|
325
|
-
|
|
389
|
+
```
|
|
390
|
+
veto_changelog { project_dir: "/your/project" }
|
|
391
|
+
→ {
|
|
392
|
+
since_tag: "v1.3.0",
|
|
393
|
+
total_commits: 23,
|
|
394
|
+
sections: [
|
|
395
|
+
{ section: "Features", items: [{ message: "Add council strictness param", hash: "a3f2b1c0", ... }] },
|
|
396
|
+
{ section: "Bug Fixes", items: [...] },
|
|
397
|
+
{ section: "Refactoring", items: [...] }
|
|
398
|
+
]
|
|
399
|
+
}
|
|
400
|
+
```
|
|
326
401
|
|
|
327
|
-
|
|
402
|
+
### `veto_git_blame` — ownership data
|
|
328
403
|
|
|
329
404
|
```
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
405
|
+
veto_git_blame { file_path: "/your/project/src/auth.ts" }
|
|
406
|
+
→ {
|
|
407
|
+
path: "/your/project/src/auth.ts",
|
|
408
|
+
total_commits: 14,
|
|
409
|
+
contributors: [
|
|
410
|
+
{ commits: 9, author: "Jigyasu Dham" },
|
|
411
|
+
{ commits: 5, author: "contributor" }
|
|
412
|
+
],
|
|
413
|
+
last_modified_at: "2026-05-16 18:30:00 +0530",
|
|
414
|
+
last_author: "Jigyasu Dham",
|
|
415
|
+
last_commit_message: "fix: JWT expiry check for clock skew"
|
|
416
|
+
}
|
|
340
417
|
```
|
|
341
418
|
|
|
342
|
-
|
|
419
|
+
### `veto_explain` — now accepts raw text
|
|
343
420
|
|
|
344
|
-
|
|
421
|
+
```
|
|
422
|
+
# Error message / stack trace
|
|
423
|
+
veto_explain { text: "TypeError: Cannot read properties of undefined (reading 'id')\n at auth.ts:42" }
|
|
424
|
+
→ debugger agent explains the error and suggests root causes
|
|
345
425
|
|
|
346
|
-
|
|
426
|
+
# Still works for files
|
|
427
|
+
veto_explain { file_path: "/your/project/src/auth.ts", depth: "detailed" }
|
|
428
|
+
```
|
|
347
429
|
|
|
348
|
-
|
|
349
|
-
veto_watch { project_dir: "/your/project" }
|
|
350
|
-
→ { watch_id: "a3f2b1c0" }
|
|
430
|
+
### Council `strictness` parameter
|
|
351
431
|
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
{ file: "package.json", recommended_agent: "dependency-audit", suggested_tool: "veto_agent_plan" },
|
|
357
|
-
{ file: ".env", recommended_agent: "secrets", suggested_tool: "veto_secrets_scan" }
|
|
358
|
-
]
|
|
432
|
+
```
|
|
433
|
+
veto_council_debate { task: "...", strictness: "fast" } # 3 agents, instant
|
|
434
|
+
veto_council_debate { task: "...", strictness: "standard" } # 7 agents, default
|
|
435
|
+
veto_council_debate { task: "...", strictness: "strict" } # 7 + devil rebuttal
|
|
359
436
|
```
|
|
360
437
|
|
|
361
438
|
---
|
|
362
439
|
|
|
363
|
-
##
|
|
440
|
+
## Workspace Discovery
|
|
364
441
|
|
|
365
|
-
|
|
442
|
+
```
|
|
443
|
+
veto_discover { "project_dir": "/your/project" }
|
|
444
|
+
→ {
|
|
445
|
+
git: { branch: "main", commit: "a3f2b1", dirty_files: [], recent_commits: [...] },
|
|
446
|
+
ecosystems: { node: "my-app v2.1.0" },
|
|
447
|
+
tech_stack: ["TypeScript", "React", "Prisma"],
|
|
448
|
+
key_files: ["tsconfig.json", "prisma/schema.prisma", ".env.example"],
|
|
449
|
+
total_files: 142
|
|
450
|
+
}
|
|
451
|
+
```
|
|
366
452
|
|
|
367
|
-
|
|
453
|
+
---
|
|
368
454
|
|
|
369
|
-
|
|
455
|
+
## Diff Review
|
|
370
456
|
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
| `veto_ci_gate` | Average of code + security scores |
|
|
383
|
-
| `veto_pr_review` | Average of code + security scores |
|
|
384
|
-
| `veto_explain` | Agent confidence |
|
|
385
|
-
| `veto_task_parse` | Planner confidence |
|
|
386
|
-
| `veto_summarize` | Agent confidence |
|
|
387
|
-
|
|
388
|
-
You can still record manually for custom signals:
|
|
457
|
+
```
|
|
458
|
+
veto_diff_review { project_dir: "/your/project" }
|
|
459
|
+
→ {
|
|
460
|
+
verdict: "warn",
|
|
461
|
+
files_changed: 4,
|
|
462
|
+
code_review: { score: 78, critical: 0, high: 2, findings: [...] },
|
|
463
|
+
security: { score: 91, critical: 0, high: 0, findings: [...] },
|
|
464
|
+
secrets: { findings: [] },
|
|
465
|
+
summary: "⚠️ WARN — 4 file(s) changed..."
|
|
466
|
+
}
|
|
467
|
+
```
|
|
389
468
|
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
469
|
+
---
|
|
470
|
+
|
|
471
|
+
## Sequential Pipelines
|
|
472
|
+
|
|
473
|
+
```
|
|
474
|
+
veto_workflow {
|
|
475
|
+
steps: [
|
|
476
|
+
{ id: "code", agent: "coder", task: "implement auth middleware", gate: 70 },
|
|
477
|
+
{ id: "review", agent: "reviewer", task: "review the implementation", gate: 75 },
|
|
478
|
+
{ id: "security", agent: "security-scanner", task: "scan for vulnerabilities", gate: 80 },
|
|
479
|
+
{ id: "test", agent: "tester", task: "write test cases" }
|
|
480
|
+
],
|
|
481
|
+
project_dir: "/your/project"
|
|
398
482
|
}
|
|
483
|
+
→ { verdict: "passed", steps_passed: 4, steps_failed: 0, results: [...] }
|
|
399
484
|
```
|
|
400
485
|
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
486
|
+
---
|
|
487
|
+
|
|
488
|
+
## Self-Learning Router
|
|
489
|
+
|
|
490
|
+
Every agent tool auto-records a quality signal when it completes. After any working session, `veto_learning_stats` shows live data and `veto_learning_apply` adjusts tier thresholds automatically after ~20 calls.
|
|
404
491
|
|
|
405
|
-
|
|
492
|
+
```bash
|
|
406
493
|
veto_route_task { task: "debug auth issue", file_ext: ".ts" }
|
|
407
494
|
→ { ..., recommended_agent: "debugger" } # ← predicted from history
|
|
408
495
|
```
|
|
@@ -411,15 +498,11 @@ veto_route_task { task: "debug auth issue", file_ext: ".ts" }
|
|
|
411
498
|
|
|
412
499
|
## Plugin System
|
|
413
500
|
|
|
414
|
-
Register custom agents without forking:
|
|
415
|
-
|
|
416
501
|
```js
|
|
417
502
|
// ~/.veto/agents/my-agent.js
|
|
418
503
|
export function plan(task, context) {
|
|
419
504
|
return {
|
|
420
|
-
agent: 'my-agent',
|
|
421
|
-
task,
|
|
422
|
-
tier: 2,
|
|
505
|
+
agent: 'my-agent', task, tier: 2,
|
|
423
506
|
approach: 'Your custom approach...',
|
|
424
507
|
steps: ['Step 1', 'Step 2'],
|
|
425
508
|
checklist: ['[ ] Check 1'],
|
|
@@ -430,31 +513,16 @@ export function plan(task, context) {
|
|
|
430
513
|
}
|
|
431
514
|
```
|
|
432
515
|
|
|
433
|
-
Veto loads it on start. Use it in `veto_agent_plan { agent: "my-agent" }` or `veto_execute_parallel`.
|
|
434
|
-
|
|
435
516
|
---
|
|
436
517
|
|
|
437
518
|
## Cross-Platform Handoff
|
|
438
519
|
|
|
439
|
-
**Rate limit mid-task:**
|
|
440
520
|
```
|
|
441
521
|
Claude at 90% → veto_handoff { summary, context }
|
|
442
522
|
Open Gemini → veto_continue { resuming_as: "gemini" }
|
|
443
523
|
Full context restored. Continue exactly where you stopped.
|
|
444
524
|
```
|
|
445
525
|
|
|
446
|
-
Every session tracks two fields:
|
|
447
|
-
- `created_by` — which AI originally saved the session
|
|
448
|
-
- `active_client` — which AI last resumed it (updated on every `veto_continue` or `veto_session_restore`)
|
|
449
|
-
|
|
450
|
-
**Multiple AIs on different projects simultaneously:** Each MCP server process is independent. Sessions are always separate. Memory is automatically scoped to each process's active project — no cross-contamination.
|
|
451
|
-
|
|
452
|
-
**Switch machines:**
|
|
453
|
-
```
|
|
454
|
-
Machine A → veto_memory_export → veto-export.json
|
|
455
|
-
Machine B → veto_memory_import → veto_session_restore
|
|
456
|
-
```
|
|
457
|
-
|
|
458
526
|
| Platform | Support |
|
|
459
527
|
|---|---|
|
|
460
528
|
| Claude Code | ✅ Native MCP |
|
|
@@ -462,6 +530,7 @@ Machine B → veto_memory_import → veto_session_restore
|
|
|
462
530
|
| Codex CLI | ✅ MCP support |
|
|
463
531
|
| Cursor | ✅ MCP support |
|
|
464
532
|
| Windsurf | ✅ MCP support |
|
|
533
|
+
| Zed | ✅ MCP support (`context_servers`) |
|
|
465
534
|
|
|
466
535
|
---
|
|
467
536
|
|
|
@@ -469,79 +538,62 @@ Machine B → veto_memory_import → veto_session_restore
|
|
|
469
538
|
|
|
470
539
|
| Phase | Status | Version |
|
|
471
540
|
|---|---|---|
|
|
472
|
-
| 1 — Foundation | ✅ Complete | v0.1.0 |
|
|
473
|
-
| 2 — Router | ✅ Complete | v0.2.0 |
|
|
474
|
-
| 3 — Council | ✅ Complete | v0.3.0 |
|
|
475
|
-
| 4 — Core Agents | ✅ Complete | v0.4.0 |
|
|
476
|
-
| 5 — Memory System | ✅ Complete | v0.5.0 |
|
|
477
|
-
| 6 — Self-Learning | ✅ Complete | v0.6.0 |
|
|
478
|
-
| 7 — Cross-Platform | ✅ Complete | v0.7.0 |
|
|
479
|
-
| 8 — All 50 Agents | ✅ Complete | v0.8.0 |
|
|
480
|
-
| 9 — Codebase Context + Structured Output + MCP Resources/Prompts | ✅ Complete | v0.9.0 |
|
|
481
|
-
| 10 — Watch, Workflow, Explain, Plugins | ✅ Complete | v0.10.0 |
|
|
482
|
-
| 11 — Smarter Council + Predictive Routing + Auto Project Map | ✅ Complete | v0.11.0 |
|
|
483
|
-
| 12 — CLI Subcommands + Diff Review | ✅ Complete | v1.0.0 |
|
|
541
|
+
| 1–12 — Foundation through CLI + Diff Review | ✅ Complete | v0.1.0 – v1.0.0 |
|
|
484
542
|
| 13 — Developer Intelligence + Auto Docs | ✅ Complete | v1.1.0 |
|
|
485
543
|
| 14 — Observability + Usage Stats + Audit Log | ✅ Complete | v1.2.0 |
|
|
486
544
|
| 15 — CI/CD Gates + GitHub PR Review | ✅ Complete | v1.2.5 |
|
|
487
545
|
| 16 — Workspace Discovery + Summarization + Doctor | ✅ Complete | v1.2.8 |
|
|
488
546
|
| 17 — VS Code Extension + Token Budget + Risk Annotations | ✅ Complete | v1.2.14 |
|
|
489
|
-
| 18 — Extension Upgrades
|
|
490
|
-
| 19 — Auto-Learning Hooks
|
|
491
|
-
| 20 — Auto-Store Memory
|
|
492
|
-
|
|
|
493
|
-
|
|
|
547
|
+
| 18 — Extension Upgrades | ✅ Complete | veto-vscode v0.6.0 |
|
|
548
|
+
| 19 — Auto-Learning Hooks | ✅ Complete | v1.2.15 |
|
|
549
|
+
| 20 — Auto-Store Memory on RED | ✅ Complete | v1.2.16 |
|
|
550
|
+
| 21 — Closing the Loop (auto-thresholds, pre-commit hook, benchmark) | ✅ Complete | v1.2.18 |
|
|
551
|
+
| 22 — LLM Council (MCP Sampling, per-model context windows) | ✅ Complete | v1.3.0 |
|
|
552
|
+
| 23 — Quality + Features (TTL cache, metrics, git blame, changelog, Zed, session tags) | ✅ Complete | v1.4.0 |
|
|
494
553
|
|
|
495
554
|
---
|
|
496
555
|
|
|
497
556
|
## Changelog
|
|
498
557
|
|
|
558
|
+
### v1.4.0
|
|
559
|
+
- **feat:** `veto_metrics` — live usage dashboard (sessions, council verdicts, top agents, quality trend, knowledge stats). Pure SQLite reads, zero cost.
|
|
560
|
+
- **feat:** `veto_changelog` — structured changelog from git history since last tag, grouped by conventional commit type.
|
|
561
|
+
- **feat:** `veto_git_blame` — file/directory ownership data from local git (contributors, commit counts, last-modified metadata).
|
|
562
|
+
- **feat:** Council `strictness` param — `fast` (3 core agents, instant) / `standard` (7 agents, default) / `strict` (7 + Devil's Advocate rebuttal round on most critical blocker).
|
|
563
|
+
- **feat:** Session tagging — `veto_session_save` accepts `tags: string[]`; `veto_sessions_list` accepts `query` for full-text search across summary, context, tags, and project_dir.
|
|
564
|
+
- **feat:** Zed editor support — `veto init` now auto-configures Zed via `~/.config/zed/settings.json` (`context_servers` key).
|
|
565
|
+
- **feat:** `veto_explain` accepts raw `text` — error messages, stack traces, and compiler output are auto-routed to the debugger agent.
|
|
566
|
+
- **fix:** `task_plans` TTL — cached plans older than 7 days are no longer returned; `veto_task_parse` checks cache before running the planner agent.
|
|
567
|
+
- **fix:** Complexity scorer — word-count cap raised from 20→25 pts; +5 bonus for tasks over 60 words.
|
|
568
|
+
- **fix:** Path sanitization — `readProjectContext` now validates that the resolved path is a directory before running any `git` commands.
|
|
569
|
+
- **refactor:** Tool definitions extracted from `server.ts` into `src/tools/definitions.ts` (49 tools, grouped by category). `server.ts` reduced from 2640 → 1907 lines.
|
|
570
|
+
|
|
571
|
+
### v1.3.0
|
|
572
|
+
- **feat:** Council agents are now LLM-backed via MCP Sampling — all 7 agents call the host LLM in parallel and return real reasoning, not deterministic templates. Deterministic fallback per agent if sampling is unavailable.
|
|
573
|
+
- **feat:** Full agent reasoning returned — `votes` now includes each agent's complete `reason`, `concerns`, and `recommendation`.
|
|
574
|
+
- **feat:** Knowledge retrieval pre-hook — council searches `knowledge_base` for similar past decisions before each debate.
|
|
575
|
+
- **feat:** `veto_benchmark` runs two LLM council debates in parallel.
|
|
576
|
+
- **feat:** Auto-store on YELLOW — significant YELLOW verdicts now stored in knowledge base with per-agent reasoning.
|
|
577
|
+
- **feat:** Per-model context windows — `veto_status` and `veto_session_save` accept `model` param for exact window resolution.
|
|
578
|
+
|
|
499
579
|
### v1.2.19
|
|
500
|
-
- **fix:** `veto_session_save` accepts optional `session_id` — updates that row in-place instead of inserting a new one
|
|
580
|
+
- **fix:** `veto_session_save` accepts optional `session_id` — updates that row in-place instead of inserting a new one.
|
|
501
581
|
|
|
502
582
|
### v1.2.18
|
|
503
|
-
- **feat:** Auto-apply learned thresholds
|
|
504
|
-
- **feat:** `veto hook install` / `veto hook remove` —
|
|
505
|
-
- **feat:** `veto check` — fast secrets scan on staged changes
|
|
506
|
-
- **feat:** `veto_benchmark`
|
|
583
|
+
- **feat:** Auto-apply learned thresholds after every 20 `autoRecord()` calls.
|
|
584
|
+
- **feat:** `veto hook install` / `veto hook remove` — pre-commit secrets scan hook.
|
|
585
|
+
- **feat:** `veto check` — fast secrets scan on staged changes.
|
|
586
|
+
- **feat:** `veto_benchmark` (tool #46) — two approaches → two parallel council debates → structured winner.
|
|
507
587
|
|
|
508
588
|
### v1.2.17
|
|
509
|
-
- **fix:** `veto version`
|
|
510
|
-
- **fix:** Unknown commands show a short 2-line error
|
|
511
|
-
- **fix:** `veto help` is now ~50 lines
|
|
512
|
-
- **
|
|
513
|
-
- **feat:** Sessions now track `save_type` (`manual` | `auto`) — auto-saves show a dim `[auto]` badge in `veto sessions` output
|
|
514
|
-
- **feat:** `veto sessions --clean` removes auto-saves older than 7 days (keeps all manual saves)
|
|
515
|
-
|
|
516
|
-
### v1.2.16
|
|
517
|
-
- **feat:** Auto-store knowledge entries on RED council verdict and critical scan failures — entries appear in the VS Code Memory panel immediately without any manual `veto_memory_store` call. RED verdict stores block reasons + warnings + recommended action. Critical findings from `veto_diff_review`, `veto_ci_gate`, and `veto_pr_review` store the blocking issue list when verdict is `fail`.
|
|
518
|
-
|
|
519
|
-
### v1.2.15
|
|
520
|
-
- **feat:** Auto-learning hooks — `learning_data` now fills automatically from every agent-producing tool. No manual `veto_record_outcome` calls needed. Hooks fire on `veto_council_debate` (verdict → quality score), `veto_workflow` (per-step confidence), `veto_execute_parallel` (per-task confidence), `veto_route_task` (tier distribution), plus `veto_agent_plan`, `veto_code_review`, `veto_security_scan`, `veto_secrets_scan`, `veto_diff_review`, `veto_ci_gate`, `veto_pr_review`, `veto_explain`, `veto_task_parse`, and `veto_summarize`. After any working session, `veto_learning_stats` shows live data and `veto_learning_apply` starts producing real threshold adjustments after ~20 calls.
|
|
521
|
-
|
|
522
|
-
### v1.2.14
|
|
523
|
-
- **feat:** Token budget per operation — `max_tokens` optional param on `veto_council_debate` and `veto_execute_parallel`; warns if estimated output exceeds budget; all calls logged to new `usage_log` table; `veto_usage_status` now includes `operation_budget_log`
|
|
524
|
-
- **feat:** MCP tool risk annotations — all 45 tools annotated with `readOnlyHint`, `destructiveHint`, `openWorldHint` using the official MCP SDK annotation fields; 23 read-only, 3 destructive, 2 open-world
|
|
525
|
-
|
|
526
|
-
### v1.2.13
|
|
527
|
-
- **feat:** Real token tracking for Rate Status — `tokens_today` and `budget_used_pct` per platform; `veto_usage_status` accepts `set_budget` to configure daily token limits (defaults: Claude 500K, Gemini 1M, Codex 200K)
|
|
528
|
-
|
|
529
|
-
### v1.2.12
|
|
530
|
-
- **feat:** `veto_pr_review` — pass a GitHub PR URL, Veto fetches the diff via GitHub API and runs the full triple-scan (code review + security + secrets). Returns a structured verdict and ready-to-post GitHub review comment. Set `GITHUB_TOKEN` for private repos.
|
|
531
|
-
|
|
532
|
-
### v1.2.11
|
|
533
|
-
- **fix:** `veto init` now registers Codex CLI via `codex mcp add` (writes to `~/.codex/config.toml`) instead of `config.json` — Codex CLI ignores `mcpServers` in JSON entirely
|
|
534
|
-
- **fix:** `veto doctor` checks `codex mcp list` / `config.toml` for Codex registration instead of the wrong `config.json` key
|
|
535
|
-
- **fix:** `veto_platform_setup` for Codex now shows the correct TOML-based config path, `codex mcp add` install command, and a Windows `npx.cmd` note
|
|
536
|
-
- **fix:** Windows — `veto init` passes `npx.cmd` to `codex mcp add` so the Codex Rust binary can resolve the command
|
|
537
|
-
|
|
538
|
-
### v1.2.10
|
|
539
|
-
- **fix:** `veto init` writes `npx.cmd` (not `npx`) for all platform configs on Windows — Node's `child_process.spawn` cannot resolve bare `npx` on Windows
|
|
589
|
+
- **fix:** `veto version` no longer shows "Unknown command".
|
|
590
|
+
- **fix:** Unknown commands show a short 2-line error.
|
|
591
|
+
- **fix:** `veto help` is now ~50 lines; full troubleshooting moved to `veto help --troubleshoot`.
|
|
592
|
+
- **feat:** Sessions track `save_type` (`manual` | `auto`); `veto sessions --clean` removes old auto-saves.
|
|
540
593
|
|
|
541
|
-
### v1.2.
|
|
542
|
-
-
|
|
543
|
-
-
|
|
544
|
-
- Shared `discover` module powering both `veto_discover` and `veto init` project scanning
|
|
594
|
+
### v1.2.15 – v1.2.16
|
|
595
|
+
- Auto-learning hooks — `learning_data` fills automatically from every agent-producing tool.
|
|
596
|
+
- Auto-store knowledge entries on RED council verdict and critical scan failures.
|
|
545
597
|
|
|
546
598
|
---
|
|
547
599
|
|
|
@@ -551,7 +603,7 @@ Machine B → veto_memory_import → veto_session_restore
|
|
|
551
603
|
- **Runtime:** Node.js 22.5+ (built-in `node:sqlite` — no native compilation)
|
|
552
604
|
- **Dependencies:** `@modelcontextprotocol/sdk` only — one package, zero native addons
|
|
553
605
|
- **Memory:** Local SQLite — zero config, works offline, portable via JSON export
|
|
554
|
-
- **Platforms:** Claude Code · Gemini CLI · Codex CLI · Cursor · Windsurf
|
|
606
|
+
- **Platforms:** Claude Code · Gemini CLI · Codex CLI · Cursor · Windsurf · Zed
|
|
555
607
|
|
|
556
608
|
---
|
|
557
609
|
|