@jigyasudham/veto 2.0.2 → 2.1.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 +391 -320
- package/dist/agents/executor.d.ts.map +1 -1
- package/dist/agents/executor.js +3 -1
- package/dist/agents/executor.js.map +1 -1
- package/dist/agents/llm-runner.d.ts.map +1 -1
- package/dist/agents/llm-runner.js +62 -58
- package/dist/agents/llm-runner.js.map +1 -1
- package/dist/cli.js +148 -4
- package/dist/cli.js.map +1 -1
- package/dist/log.d.ts +9 -0
- package/dist/log.d.ts.map +1 -0
- package/dist/log.js +33 -0
- package/dist/log.js.map +1 -0
- package/dist/memory/config.d.ts +1 -0
- package/dist/memory/config.d.ts.map +1 -1
- package/dist/memory/config.js +3 -2
- package/dist/memory/config.js.map +1 -1
- package/dist/memory/local.d.ts.map +1 -1
- package/dist/memory/local.js +3 -1
- package/dist/memory/local.js.map +1 -1
- package/dist/memory/schema.d.ts +1 -1
- package/dist/memory/schema.d.ts.map +1 -1
- package/dist/memory/schema.js +1 -0
- package/dist/memory/schema.js.map +1 -1
- package/dist/router/learning-updater.d.ts +4 -1
- package/dist/router/learning-updater.d.ts.map +1 -1
- package/dist/router/learning-updater.js +10 -0
- package/dist/router/learning-updater.js.map +1 -1
- package/dist/server/handlers/advisors.d.ts +3 -0
- package/dist/server/handlers/advisors.d.ts.map +1 -0
- package/dist/server/handlers/advisors.js +331 -0
- package/dist/server/handlers/advisors.js.map +1 -0
- package/dist/server/handlers/agents.d.ts +3 -0
- package/dist/server/handlers/agents.d.ts.map +1 -0
- package/dist/server/handlers/agents.js +202 -0
- package/dist/server/handlers/agents.js.map +1 -0
- package/dist/server/handlers/core.d.ts +3 -0
- package/dist/server/handlers/core.d.ts.map +1 -0
- package/dist/server/handlers/core.js +169 -0
- package/dist/server/handlers/core.js.map +1 -0
- package/dist/server/handlers/council.d.ts +3 -0
- package/dist/server/handlers/council.d.ts.map +1 -0
- package/dist/server/handlers/council.js +277 -0
- package/dist/server/handlers/council.js.map +1 -0
- package/dist/server/handlers/devtools.d.ts +3 -0
- package/dist/server/handlers/devtools.d.ts.map +1 -0
- package/dist/server/handlers/devtools.js +41 -0
- package/dist/server/handlers/devtools.js.map +1 -0
- package/dist/server/handlers/generators.d.ts +3 -0
- package/dist/server/handlers/generators.d.ts.map +1 -0
- package/dist/server/handlers/generators.js +541 -0
- package/dist/server/handlers/generators.js.map +1 -0
- package/dist/server/handlers/git.d.ts +3 -0
- package/dist/server/handlers/git.d.ts.map +1 -0
- package/dist/server/handlers/git.js +225 -0
- package/dist/server/handlers/git.js.map +1 -0
- package/dist/server/handlers/learning.d.ts +3 -0
- package/dist/server/handlers/learning.d.ts.map +1 -0
- package/dist/server/handlers/learning.js +60 -0
- package/dist/server/handlers/learning.js.map +1 -0
- package/dist/server/handlers/memory.d.ts +3 -0
- package/dist/server/handlers/memory.d.ts.map +1 -0
- package/dist/server/handlers/memory.js +181 -0
- package/dist/server/handlers/memory.js.map +1 -0
- package/dist/server/handlers/observability.d.ts +3 -0
- package/dist/server/handlers/observability.d.ts.map +1 -0
- package/dist/server/handlers/observability.js +132 -0
- package/dist/server/handlers/observability.js.map +1 -0
- package/dist/server/handlers/review.d.ts +3 -0
- package/dist/server/handlers/review.d.ts.map +1 -0
- package/dist/server/handlers/review.js +334 -0
- package/dist/server/handlers/review.js.map +1 -0
- package/dist/server/handlers/session.d.ts +3 -0
- package/dist/server/handlers/session.d.ts.map +1 -0
- package/dist/server/handlers/session.js +272 -0
- package/dist/server/handlers/session.js.map +1 -0
- package/dist/server/handlers/watch.d.ts +3 -0
- package/dist/server/handlers/watch.d.ts.map +1 -0
- package/dist/server/handlers/watch.js +29 -0
- package/dist/server/handlers/watch.js.map +1 -0
- package/dist/server/handlers/workers.d.ts +3 -0
- package/dist/server/handlers/workers.d.ts.map +1 -0
- package/dist/server/handlers/workers.js +27 -0
- package/dist/server/handlers/workers.js.map +1 -0
- package/dist/server/registry.d.ts +11 -0
- package/dist/server/registry.d.ts.map +1 -0
- package/dist/server/registry.js +9 -0
- package/dist/server/registry.js.map +1 -0
- package/dist/server/runtime.d.ts +49 -0
- package/dist/server/runtime.d.ts.map +1 -0
- package/dist/server/runtime.js +81 -0
- package/dist/server/runtime.js.map +1 -0
- package/dist/server/scan-core.d.ts +32 -0
- package/dist/server/scan-core.d.ts.map +1 -0
- package/dist/server/scan-core.js +82 -0
- package/dist/server/scan-core.js.map +1 -0
- package/dist/server.d.ts +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +64 -2946
- package/dist/server.js.map +1 -1
- package/dist/tools/definitions.d.ts +4 -4
- package/dist/tools/definitions.js +4 -4
- package/dist/tools/definitions.js.map +1 -1
- package/package.json +2 -2
- package/AGENTS.md +0 -134
package/README.md
CHANGED
|
@@ -1,320 +1,391 @@
|
|
|
1
|
-
# veto
|
|
2
|
-
|
|
3
|
-
> **
|
|
4
|
-
|
|
5
|
-
An MCP server that runs locally on your machine, plugs into Claude Code, Codex CLI, Gemini CLI, Antigravity CLI, Cursor, Windsurf, Zed, and JetBrains using your existing subscriptions — giving every AI a council of specialist agents, local LLM support, SDD agents, playwright automation, persistent cross-platform memory, a self-learning router, CI/CD gates, workspace discovery, and bidirectional IDE communication.
|
|
6
|
-
|
|
7
|
-
> **Billing note:** "Zero cost" applies to subscription plans (Claude Max, Gemini Advanced, etc.). If you are on API/pay-per-token billing, MCP Sampling calls made by Veto agents will count toward your token usage. `veto init` detects API key environment variables and warns you automatically.
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## How the Agents Work
|
|
12
|
-
|
|
13
|
-
**Every tool uses a 2-phase agentic loop — no API keys required, zero extra cost.**
|
|
14
|
-
|
|
15
|
-
### Phase 1 — MCP Sampling
|
|
16
|
-
The tool attempts real LLM reasoning via MCP Sampling (`server.createMessage`). If your client supports it, the agent reasons deeply and returns a structured plan or analysis.
|
|
17
|
-
|
|
18
|
-
### Phase 2 — Agentic Fallback
|
|
19
|
-
If Sampling is unavailable, Veto returns an `llm_upgrade` prompt. The host AI reads the specialist's role, performs the reasoning itself, and passes the JSON response back to complete the operation.
|
|
20
|
-
|
|
21
|
-
Every worker agent supports both modes. When multiple agents run, they execute in parallel. LLM calls delegate back to the AI you're already using — no extra billing.
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## Specialist Roles
|
|
26
|
-
|
|
27
|
-
| Agent Group | Specialist Roles |
|
|
28
|
-
|---|---|
|
|
29
|
-
| **Council** | Lead Dev · PM · Architect · UX · Devil's Advocate · Legal · Security |
|
|
30
|
-
| **Development** | Coder · Reviewer · Tester · Debugger · Refactor · Database · API · Frontend · Backend · DevOps · Performance · Migration |
|
|
31
|
-
| **Advanced** | Local LLM (Ollama) · Semantic Search · SDD Agent · Playwright · i18n Translate · a11y Advisor |
|
|
32
|
-
| **Intelligence** | Task Planner · Researcher · Tech Advisor · Risk Assessor · Cost Analyzer · Ethics/Bias |
|
|
33
|
-
| **Workflow** | File Manager · Git Agent · Search Agent · Reporter · Automation |
|
|
34
|
-
|
|
35
|
-
**Development (12)**
|
|
36
|
-
`Coder` · `Code Reviewer` · `Tester` · `Debugger` · `Refactor` · `Database` · `API` · `Frontend` · `Backend` · `DevOps` · `Performance` · `Migration`
|
|
37
|
-
|
|
38
|
-
**Security (6)**
|
|
39
|
-
`Security Scanner` · `Auth Agent` · `Data Privacy` · `Secrets Agent` · `Dependency Audit` · `Penetration Tester`
|
|
40
|
-
|
|
41
|
-
**Memory (5)**
|
|
42
|
-
`Context Manager` · `Decision Logger` · `Project Mapper` · `Pattern Learner` · `Knowledge Base`
|
|
43
|
-
|
|
44
|
-
**Research (7)**
|
|
45
|
-
`Researcher` · `Tech Advisor` · `Cost Analyzer` · `Competitor Analyzer` · `Risk Assessor` · `Estimator` · `Ethics & Bias`
|
|
46
|
-
|
|
47
|
-
**Quality (5)**
|
|
48
|
-
`Code Quality` · `Documentation` · `Accessibility` · `Compatibility` · `Error Handling`
|
|
49
|
-
|
|
50
|
-
**Workflow (7)**
|
|
51
|
-
`Task Planner` · `Task Coordinator` · `File Manager` · `Git Agent` · `Search Agent` · `Reporter` · `Automation`
|
|
52
|
-
|
|
53
|
-
---
|
|
54
|
-
|
|
55
|
-
## MCP Tools (
|
|
56
|
-
|
|
57
|
-
| Category | Tools |
|
|
58
|
-
|---|---|
|
|
59
|
-
| **Session** | `veto_status` · `veto_session_save` · `veto_session_restore` · `veto_sessions_list` · `veto_autosave_status` · `veto_session_replay` |
|
|
60
|
-
| **Router** | `veto_route_task` · `veto_rate_status` |
|
|
61
|
-
| **Council** | `veto_council_debate` · `veto_benchmark` · `veto_adr` |
|
|
62
|
-
| **Agents** | `veto_agent_plan` · `veto_execute_parallel` · `veto_explain` · `veto_compose_agents` · `veto_delegate` |
|
|
63
|
-
| **Review** | `veto_code_review` · `veto_security_scan` · `veto_secrets_scan` · `veto_diff_review` · `veto_full_review` · `veto_pr_review` |
|
|
64
|
-
| **Pipelines** | `veto_pre_commit` · `veto_new_feature` · `veto_workflow` · `veto_task_parse` |
|
|
65
|
-
| **Advanced** | `veto_local_llm` · `veto_semantic_search` · `veto_sdd_agent` · `veto_playwright` · `veto_notify_ide` |
|
|
66
|
-
| **Quality** | `veto_clone_detector` · `veto_lint_rules` · `veto_api_contract` · `veto_a11y_advisor` · `veto_type_coverage` · `veto_test_gaps` |
|
|
67
|
-
| **Watching** | `veto_watch` · `veto_watch_poll` · `veto_watch_stop` |
|
|
68
|
-
| **Memory** | `veto_memory_store` · `veto_memory_search` · `veto_memory_delete` · `veto_project_map_update` · `veto_project_map_get` · `veto_pattern_store` · `veto_patterns_list` · `veto_memory_export` · `veto_memory_import` |
|
|
69
|
-
| **Learning** | `veto_record_outcome` · `veto_learning_stats` · `veto_learning_apply` |
|
|
70
|
-
| **Handoff** | `veto_handoff` · `veto_continue` · `veto_platform_setup` |
|
|
71
|
-
| **Observability** | `veto_usage_status` · `veto_audit_log` · `veto_health` · `veto_metrics` |
|
|
72
|
-
| **Discover** | `veto_discover` · `veto_summarize` · `veto_git_blame` · `veto_changelog` · `veto_onboard` · `veto_debt_register` |
|
|
73
|
-
| **DevTools** | `veto_docs_fetch` · `veto_context_status` · `veto_openapi_gen` · `veto_flag_auditor` · `veto_env_setup` · `veto_commit_message` · `veto_pr_description` · `veto_pr_post` · `veto_prompt_optimizer` · `veto_sre_advisor` · `veto_diagram` · `veto_rca` · `veto_translate` · `veto_merge_conflict` |
|
|
74
|
-
| **Plugins** | `veto_plugins` |
|
|
75
|
-
|
|
76
|
-
##
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
|
88
|
-
|
|
89
|
-
| `
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
veto_council_debate {
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
```
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
1
|
+
# veto
|
|
2
|
+
|
|
3
|
+
> **89 agentic tools. 49 specialists. Every major AI CLI. Self-learning. Zero extra cost on subscriptions.**
|
|
4
|
+
|
|
5
|
+
An MCP server that runs locally on your machine, plugs into Claude Code, Codex CLI, Gemini CLI, Antigravity CLI, Cursor, Windsurf, Zed, and JetBrains using your existing subscriptions — giving every AI a council of specialist agents, local LLM support, SDD agents, playwright automation, persistent cross-platform memory, a self-learning router that re-tunes its tier thresholds automatically every 20 recorded task outcomes (reviews record outcomes for you; configurable via `auto_apply_learning`), CI/CD gates, workspace discovery, and bidirectional IDE communication.
|
|
6
|
+
|
|
7
|
+
> **Billing note:** "Zero cost" applies to subscription plans (Claude Max, Gemini Advanced, etc.). If you are on API/pay-per-token billing, MCP Sampling calls made by Veto agents will count toward your token usage. `veto init` detects API key environment variables and warns you automatically.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## How the Agents Work
|
|
12
|
+
|
|
13
|
+
**Every tool uses a 2-phase agentic loop — no API keys required, zero extra cost.**
|
|
14
|
+
|
|
15
|
+
### Phase 1 — MCP Sampling
|
|
16
|
+
The tool attempts real LLM reasoning via MCP Sampling (`server.createMessage`). If your client supports it, the agent reasons deeply and returns a structured plan or analysis.
|
|
17
|
+
|
|
18
|
+
### Phase 2 — Agentic Fallback
|
|
19
|
+
If Sampling is unavailable, Veto returns an `llm_upgrade` prompt. The host AI reads the specialist's role, performs the reasoning itself, and passes the JSON response back to complete the operation.
|
|
20
|
+
|
|
21
|
+
Every worker agent supports both modes. When multiple agents run, they execute in parallel. LLM calls delegate back to the AI you're already using — no extra billing.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Specialist Roles
|
|
26
|
+
|
|
27
|
+
| Agent Group | Specialist Roles |
|
|
28
|
+
|---|---|
|
|
29
|
+
| **Council** | Lead Dev · PM · Architect · UX · Devil's Advocate · Legal · Security |
|
|
30
|
+
| **Development** | Coder · Reviewer · Tester · Debugger · Refactor · Database · API · Frontend · Backend · DevOps · Performance · Migration |
|
|
31
|
+
| **Advanced** | Local LLM (Ollama) · Semantic Search · SDD Agent · Playwright · i18n Translate · a11y Advisor |
|
|
32
|
+
| **Intelligence** | Task Planner · Researcher · Tech Advisor · Risk Assessor · Cost Analyzer · Ethics/Bias |
|
|
33
|
+
| **Workflow** | File Manager · Git Agent · Search Agent · Reporter · Automation |
|
|
34
|
+
|
|
35
|
+
**Development (12)**
|
|
36
|
+
`Coder` · `Code Reviewer` · `Tester` · `Debugger` · `Refactor` · `Database` · `API` · `Frontend` · `Backend` · `DevOps` · `Performance` · `Migration`
|
|
37
|
+
|
|
38
|
+
**Security (6)**
|
|
39
|
+
`Security Scanner` · `Auth Agent` · `Data Privacy` · `Secrets Agent` · `Dependency Audit` · `Penetration Tester`
|
|
40
|
+
|
|
41
|
+
**Memory (5)**
|
|
42
|
+
`Context Manager` · `Decision Logger` · `Project Mapper` · `Pattern Learner` · `Knowledge Base`
|
|
43
|
+
|
|
44
|
+
**Research (7)**
|
|
45
|
+
`Researcher` · `Tech Advisor` · `Cost Analyzer` · `Competitor Analyzer` · `Risk Assessor` · `Estimator` · `Ethics & Bias`
|
|
46
|
+
|
|
47
|
+
**Quality (5)**
|
|
48
|
+
`Code Quality` · `Documentation` · `Accessibility` · `Compatibility` · `Error Handling`
|
|
49
|
+
|
|
50
|
+
**Workflow (7)**
|
|
51
|
+
`Task Planner` · `Task Coordinator` · `File Manager` · `Git Agent` · `Search Agent` · `Reporter` · `Automation`
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## MCP Tools (89)
|
|
56
|
+
|
|
57
|
+
| Category | Tools |
|
|
58
|
+
|---|---|
|
|
59
|
+
| **Session** | `veto_status` · `veto_session_save` · `veto_session_restore` · `veto_sessions_list` · `veto_autosave_status` · `veto_session_replay` |
|
|
60
|
+
| **Router** | `veto_route_task` · `veto_rate_status` |
|
|
61
|
+
| **Council** | `veto_council_debate` · `veto_benchmark` · `veto_adr` |
|
|
62
|
+
| **Agents** | `veto_agent_plan` · `veto_execute_parallel` · `veto_explain` · `veto_compose_agents` · `veto_delegate` |
|
|
63
|
+
| **Review** | `veto_code_review` · `veto_security_scan` · `veto_secrets_scan` · `veto_diff_review` · `veto_full_review` · `veto_pr_review` |
|
|
64
|
+
| **Pipelines** | `veto_pre_commit` · `veto_new_feature` · `veto_workflow` · `veto_task_parse` |
|
|
65
|
+
| **Advanced** | `veto_local_llm` · `veto_semantic_search` · `veto_sdd_agent` · `veto_playwright` · `veto_notify_ide` |
|
|
66
|
+
| **Quality** | `veto_clone_detector` · `veto_lint_rules` · `veto_api_contract` · `veto_a11y_advisor` · `veto_type_coverage` · `veto_test_gaps` |
|
|
67
|
+
| **Watching** | `veto_watch` · `veto_watch_poll` · `veto_watch_stop` |
|
|
68
|
+
| **Memory** | `veto_memory_store` · `veto_memory_search` · `veto_memory_delete` · `veto_project_map_update` · `veto_project_map_get` · `veto_pattern_store` · `veto_patterns_list` · `veto_memory_export` · `veto_memory_import` |
|
|
69
|
+
| **Learning** | `veto_record_outcome` · `veto_learning_stats` · `veto_learning_apply` |
|
|
70
|
+
| **Handoff** | `veto_handoff` · `veto_continue` · `veto_platform_setup` |
|
|
71
|
+
| **Observability** | `veto_usage_status` · `veto_audit_log` · `veto_health` · `veto_metrics` |
|
|
72
|
+
| **Discover** | `veto_discover` · `veto_summarize` · `veto_git_blame` · `veto_changelog` · `veto_onboard` · `veto_debt_register` |
|
|
73
|
+
| **DevTools** | `veto_docs_fetch` · `veto_context_status` · `veto_openapi_gen` · `veto_flag_auditor` · `veto_env_setup` · `veto_commit_message` · `veto_pr_description` · `veto_pr_post` · `veto_prompt_optimizer` · `veto_sre_advisor` · `veto_diagram` · `veto_rca` · `veto_translate` · `veto_merge_conflict` |
|
|
74
|
+
| **Plugins** | `veto_plugins` |
|
|
75
|
+
|
|
76
|
+
## Which tool do I use?
|
|
77
|
+
|
|
78
|
+
Several tools overlap by design (different granularity or entry point). Quick guide:
|
|
79
|
+
|
|
80
|
+
**Reviewing code**
|
|
81
|
+
|
|
82
|
+
| You have… | Use | Note |
|
|
83
|
+
|---|---|---|
|
|
84
|
+
| A snippet or single file in hand | `veto_code_review` | not `veto_diff_review`, which reads a git diff |
|
|
85
|
+
| Uncommitted/changed files (git diff) | `veto_diff_review` | code + security + secrets scans in parallel |
|
|
86
|
+
| To gate a commit (hard-block on secrets) | `veto_pre_commit` | tuned for commit-time |
|
|
87
|
+
| To gate CI (exit code + pass/warn/fail) | `veto_ci_gate` | for GitHub Actions / GitLab CI |
|
|
88
|
+
| A deeper pre-merge/pre-ship pass (+ quality) | `veto_full_review` | richer than `veto_diff_review` |
|
|
89
|
+
| A GitHub PR by number/URL | `veto_pr_review` | fetches the diff, returns postable comments |
|
|
90
|
+
|
|
91
|
+
**Remembering things**
|
|
92
|
+
|
|
93
|
+
| Want to… | Use |
|
|
94
|
+
|---|---|
|
|
95
|
+
| Save/recall a solution, decision, or reference | `veto_memory_store` / `veto_memory_search` |
|
|
96
|
+
| Track a recurring code convention | `veto_pattern_store` / `veto_patterns_list` |
|
|
97
|
+
| Navigate the codebase without scanning the filesystem | `veto_project_map_get` (refresh via `veto_project_map_update`) |
|
|
98
|
+
|
|
99
|
+
**Running multi-step work**
|
|
100
|
+
|
|
101
|
+
| Want to… | Use |
|
|
102
|
+
|---|---|
|
|
103
|
+
| Run several agents at once on one task | `veto_execute_parallel` |
|
|
104
|
+
| Run a sequential pipeline with pass/fail gates | `veto_workflow` |
|
|
105
|
+
| Turn a PRD / plain English into a task DAG | `veto_task_parse` (feeds `veto_workflow`) |
|
|
106
|
+
| Plan a new feature end-to-end (council → plan → tasks) | `veto_new_feature` |
|
|
107
|
+
|
|
108
|
+
**Sessions**
|
|
109
|
+
|
|
110
|
+
| Want to… | Use |
|
|
111
|
+
|---|---|
|
|
112
|
+
| Resume work with full saved context | `veto_session_restore` (or `veto_continue` for the latest) |
|
|
113
|
+
| See the event / tool-call timeline of a session | `veto_session_replay` |
|
|
114
|
+
| Move work to another AI tool | `veto_handoff` → `veto_continue` |
|
|
115
|
+
|
|
116
|
+
## MCP Resources
|
|
117
|
+
|
|
118
|
+
| URI | What it returns |
|
|
119
|
+
|---|---|
|
|
120
|
+
| `veto://sessions` | All saved sessions across platforms |
|
|
121
|
+
| `veto://project-map?dir=<path>` | Stored project structure map |
|
|
122
|
+
| `veto://memory?q=<query>` | Knowledge base search results |
|
|
123
|
+
| `veto://patterns` | Learned coding patterns |
|
|
124
|
+
|
|
125
|
+
## MCP Prompts
|
|
126
|
+
|
|
127
|
+
| Prompt | What it does |
|
|
128
|
+
|---|---|
|
|
129
|
+
| `code-review` | Full code review — paste code, get scored findings |
|
|
130
|
+
| `security-audit` | OWASP Top 10 scan with CWE references |
|
|
131
|
+
| `deploy-checklist` | Council reviews your deployment plan before you ship |
|
|
132
|
+
| `explain-file` | Expert explanation of any file, auto-routed by type |
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## CLI Commands
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
veto init # Configure all AI tools + scan project
|
|
140
|
+
veto doctor # Check MCP registrations + system health
|
|
141
|
+
veto status # Version, DB path, session/memory/outcome counts
|
|
142
|
+
veto version # Alias for veto status
|
|
143
|
+
veto sessions # List last 20 saved sessions ([auto] badge on auto-saves)
|
|
144
|
+
veto sessions --clean # Remove auto-saves older than 7 days
|
|
145
|
+
veto memory [query] # Search knowledge base (blank = all entries)
|
|
146
|
+
veto patterns [prefix] # List learned agent/routing patterns
|
|
147
|
+
veto hook install # Install pre-commit secrets scan hook
|
|
148
|
+
veto hook remove # Remove the veto pre-commit hook
|
|
149
|
+
veto check # Scan staged changes for secrets (used by hook)
|
|
150
|
+
veto help # Commands + MCP tools reference
|
|
151
|
+
veto help --troubleshoot # Full troubleshooting guide
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### `veto doctor`
|
|
155
|
+
|
|
156
|
+
```
|
|
157
|
+
veto doctor
|
|
158
|
+
|
|
159
|
+
Veto Doctor — system health check
|
|
160
|
+
─────────────────────────────────────────────────────
|
|
161
|
+
✓ Node.js v22.5.0
|
|
162
|
+
✓ ~/.veto exists
|
|
163
|
+
✓ Database ~/.veto/veto.db
|
|
164
|
+
17 sessions · 12 memories · 3 patterns
|
|
165
|
+
|
|
166
|
+
MCP Registrations
|
|
167
|
+
─────────────────────────────────────────────────────
|
|
168
|
+
✓ Claude Code — registered
|
|
169
|
+
✓ Gemini CLI — registered
|
|
170
|
+
✓ Antigravity CLI — registered
|
|
171
|
+
· Codex CLI — not installed
|
|
172
|
+
· Zed — not installed
|
|
173
|
+
|
|
174
|
+
✓ All checks passed — Veto is healthy!
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## Council Debate
|
|
180
|
+
|
|
181
|
+
Two-phase flow — works on Claude Code, Gemini CLI, Antigravity CLI, and Codex CLI with no API keys:
|
|
182
|
+
|
|
183
|
+
```
|
|
184
|
+
# Phase 1 — call with task, get instant deterministic result + LLM upgrade prompt
|
|
185
|
+
veto_council_debate {
|
|
186
|
+
task: "migrate auth from sessions to JWTs",
|
|
187
|
+
project_dir: "/your/project",
|
|
188
|
+
strictness: "standard"
|
|
189
|
+
}
|
|
190
|
+
→ {
|
|
191
|
+
llm_backed: false,
|
|
192
|
+
final_verdict: "YELLOW",
|
|
193
|
+
votes: { lead_dev: {...}, architect: {...}, security: {...}, ... },
|
|
194
|
+
llm_upgrade: {
|
|
195
|
+
available: true,
|
|
196
|
+
instruction: "Read debate_prompt, reason as all 7 agents, call again with agent_responses",
|
|
197
|
+
debate_prompt: "You are running a Veto Council debate. Analyze the task as each specialist..."
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
# Phase 2 — reason as all 7 agents, pass responses back → get LLM-backed verdict
|
|
202
|
+
veto_council_debate {
|
|
203
|
+
task: "migrate auth from sessions to JWTs",
|
|
204
|
+
agent_responses: {
|
|
205
|
+
lead_dev: { verdict: "warn", reason: "Stateless JWTs complicate logout — need blocklist", concerns: ["Refresh token rotation must be atomic"], recommendation: "Use short-lived access tokens (15m) + httpOnly refresh tokens" },
|
|
206
|
+
pm: { verdict: "approve", reason: "JWT migration unblocks mobile clients", concerns: [], recommendation: "Ship behind a feature flag, roll back if logout issues" },
|
|
207
|
+
architect: { verdict: "approve", reason: "Good fit for stateless microservice boundary", concerns: ["Clock skew can break expiry across services"], recommendation: "Add NTP sync check; use relative expiry not absolute timestamps" },
|
|
208
|
+
ux: { verdict: "approve", reason: "No user-visible change if migration is seamless", concerns: [], recommendation: "Silent migration — no logout required for existing sessions" },
|
|
209
|
+
devil: { verdict: "warn", reason: "What if the refresh token store goes down at 2AM?", concerns: ["Redis outage = all users logged out"], recommendation: "Fallback to session auth if Redis is down; use short rotation window" },
|
|
210
|
+
legal: { verdict: "approve", reason: "JWTs are industry standard, no new compliance risk", concerns: [], recommendation: "Document token storage in privacy policy" },
|
|
211
|
+
security: { verdict: "warn", reason: "Refresh token rotation must be atomic — TOCTOU risk", concerns: ["localStorage storage of access token is XSS-vulnerable"], recommendation: "Store access token in memory only; refresh token in httpOnly Secure SameSite=Strict cookie" }
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
→ {
|
|
215
|
+
llm_backed: true,
|
|
216
|
+
final_verdict: "YELLOW",
|
|
217
|
+
warnings: ["Refresh token rotation must be atomic...", "What if the refresh token store goes down..."],
|
|
218
|
+
recommended: "Proceed with JWT. Use httpOnly cookies for refresh tokens, memory-only for access tokens..."
|
|
219
|
+
}
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### Council `strictness`
|
|
223
|
+
|
|
224
|
+
```
|
|
225
|
+
veto_council_debate { task: "...", strictness: "fast" } # 3 agents, instant
|
|
226
|
+
veto_council_debate { task: "...", strictness: "standard" } # 7 agents, default
|
|
227
|
+
veto_council_debate { task: "...", strictness: "strict" } # 7 + devil rebuttal
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## Session Tagging + Search
|
|
233
|
+
|
|
234
|
+
```
|
|
235
|
+
veto_session_save {
|
|
236
|
+
auto_summarize: true,
|
|
237
|
+
tags: ["auth", "jwt", "middleware"]
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
veto_sessions_list { query: "auth" }
|
|
241
|
+
→ sessions matching "auth" in summary, context, tags, or project_dir
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
Token usage is manually reported — pass `token_count` to `veto_status` or `veto_session_save` and Veto stores it per platform per day. `veto_rate_status` shows what you've reported; nothing is counted automatically.
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## Workspace Discovery
|
|
249
|
+
|
|
250
|
+
```
|
|
251
|
+
veto_discover { "project_dir": "/your/project" }
|
|
252
|
+
→ {
|
|
253
|
+
git: { branch: "main", commit: "a3f2b1", dirty_files: [], recent_commits: [...] },
|
|
254
|
+
ecosystems: { node: "my-app v2.1.0" },
|
|
255
|
+
tech_stack: ["TypeScript", "React", "Prisma"],
|
|
256
|
+
key_files: ["tsconfig.json", "prisma/schema.prisma", ".env.example"],
|
|
257
|
+
total_files: 142
|
|
258
|
+
}
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
## Diff Review
|
|
264
|
+
|
|
265
|
+
```
|
|
266
|
+
veto_diff_review { project_dir: "/your/project" }
|
|
267
|
+
→ {
|
|
268
|
+
verdict: "warn",
|
|
269
|
+
files_changed: 4,
|
|
270
|
+
code_review: { score: 78, critical: 0, high: 2, findings: [...] },
|
|
271
|
+
security: { score: 91, critical: 0, high: 0, findings: [...] },
|
|
272
|
+
secrets: { findings: [] },
|
|
273
|
+
summary: "⚠️ WARN — 4 file(s) changed..."
|
|
274
|
+
}
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
---
|
|
278
|
+
|
|
279
|
+
## Sequential Pipelines
|
|
280
|
+
|
|
281
|
+
```
|
|
282
|
+
veto_workflow {
|
|
283
|
+
steps: [
|
|
284
|
+
{ id: "code", agent: "coder", task: "implement auth middleware", gate: 70 },
|
|
285
|
+
{ id: "review", agent: "reviewer", task: "review the implementation", gate: 75 },
|
|
286
|
+
{ id: "security", agent: "security-scanner", task: "scan for vulnerabilities", gate: 80 },
|
|
287
|
+
{ id: "test", agent: "tester", task: "write test cases" }
|
|
288
|
+
],
|
|
289
|
+
project_dir: "/your/project"
|
|
290
|
+
}
|
|
291
|
+
→ { verdict: "passed", steps_passed: 4, steps_failed: 0, results: [...] }
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
## Self-Learning Router
|
|
297
|
+
|
|
298
|
+
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.
|
|
299
|
+
|
|
300
|
+
```bash
|
|
301
|
+
veto_route_task { task: "debug auth issue", file_ext: ".ts" }
|
|
302
|
+
→ { ..., recommended_agent: "debugger" } # ← predicted from history
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
---
|
|
306
|
+
|
|
307
|
+
## Plugin System
|
|
308
|
+
|
|
309
|
+
```js
|
|
310
|
+
// ~/.veto/agents/my-agent.js
|
|
311
|
+
export function plan(task, context) {
|
|
312
|
+
return {
|
|
313
|
+
agent: 'my-agent', task, tier: 2,
|
|
314
|
+
approach: 'Your custom approach...',
|
|
315
|
+
steps: ['Step 1', 'Step 2'],
|
|
316
|
+
checklist: ['[ ] Check 1'],
|
|
317
|
+
pitfalls: ['Pitfall 1'],
|
|
318
|
+
patterns: ['Pattern 1'],
|
|
319
|
+
duration_estimate: '1-2 hours',
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
---
|
|
325
|
+
|
|
326
|
+
## Cross-Platform Handoff
|
|
327
|
+
|
|
328
|
+
```
|
|
329
|
+
Claude at 90% → veto_handoff { summary, context }
|
|
330
|
+
Open Gemini → veto_continue { resuming_as: "gemini" }
|
|
331
|
+
Full context restored. Continue exactly where you stopped.
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
Platform switching is manual — Veto surfaces which platform has budget remaining via `veto_rate_status`, you decide when to switch.
|
|
335
|
+
|
|
336
|
+
| Platform | Support |
|
|
337
|
+
|---|---|
|
|
338
|
+
| Claude Code | ✅ Native MCP |
|
|
339
|
+
| Gemini CLI | ✅ MCP support |
|
|
340
|
+
| Antigravity CLI | ✅ MCP support |
|
|
341
|
+
| Codex CLI | ✅ MCP support |
|
|
342
|
+
| Cursor | ✅ MCP support |
|
|
343
|
+
| Windsurf | ✅ MCP support |
|
|
344
|
+
| Zed | ✅ MCP support (`context_servers`) |
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
## Project Structure
|
|
349
|
+
|
|
350
|
+
Veto is a single MCP server (`src/server.ts`) that registers 89 tools, MCP Resources, and Prompts, then dispatches every tool call through a per-domain **handler registry** — there is no monolithic switch. Each domain owns a `HandlerMap` module under `src/server/handlers/`:
|
|
351
|
+
|
|
352
|
+
| Module | Tools | Domain |
|
|
353
|
+
|---|---|---|
|
|
354
|
+
| `workers.ts` | 15 | single-agent worker delegations (code_review, security_scan, explain, …) |
|
|
355
|
+
| `generators.ts` | 11 | single-agent artifact generators (adr, diagram, rca, doc_gen, onboard, …) |
|
|
356
|
+
| `memory.ts` | 9 | knowledge base, patterns, project map |
|
|
357
|
+
| `observability.ts` | 7 | health, metrics, usage, audit, context/rate status |
|
|
358
|
+
| `advisors.ts` | 7 | project scanners (dep, query, bundle, dead-code, flag, openapi, HITL) |
|
|
359
|
+
| `session.ts` | 6 | save · restore · list · handoff · continue · replay |
|
|
360
|
+
| `review.ts` | 5 | diff · ci · pr · full review + pre-commit pipelines |
|
|
361
|
+
| `git.ts` | 5 | blame · changelog · commit message · PR description/post |
|
|
362
|
+
| `core.ts` | 5 | status · routing · platform setup · docs fetch · discover |
|
|
363
|
+
| `agents.ts` | 5 | agent_plan · execute_parallel · delegate · workflow · task_parse |
|
|
364
|
+
| `devtools.ts` | 5 | plugins · local LLM · clone detector · compose · notify IDE |
|
|
365
|
+
| `council.ts` | 3 | council_debate · benchmark · new_feature |
|
|
366
|
+
| `learning.ts` | 3 | record_outcome · learning_stats · learning_apply |
|
|
367
|
+
| `watch.ts` | 3 | watch · poll · stop |
|
|
368
|
+
|
|
369
|
+
Shared, independently testable internals live in `src/server/`:
|
|
370
|
+
|
|
371
|
+
- `registry.ts` — the `ToolContext` (`{ request, args, server }`) and `HandlerMap` types
|
|
372
|
+
- `runtime.ts` — shared mutable state (active project dir, auto-save, server health, `VERSION`)
|
|
373
|
+
- `scan-core.ts` — git-diff reader, triple-scan, and the agentic worker loop (unit-tested)
|
|
374
|
+
|
|
375
|
+
Every handler module is importable in isolation, so behaviour is covered by `tests/server/dispatch.test.ts` (the `callTool` behavioral net) and `tests/tools/definitions.test.ts` (the 89-tool registry-coverage check).
|
|
376
|
+
|
|
377
|
+
---
|
|
378
|
+
|
|
379
|
+
## Tech Stack
|
|
380
|
+
|
|
381
|
+
- **Language:** TypeScript (strict mode)
|
|
382
|
+
- **Runtime:** Node.js 22.5+ (built-in `node:sqlite` — no native compilation)
|
|
383
|
+
- **Dependencies:** `@modelcontextprotocol/sdk` only — one package, zero native addons
|
|
384
|
+
- **Memory:** Local SQLite — zero config, works offline, portable via JSON export
|
|
385
|
+
- **Platforms:** Claude Code · Gemini CLI · Antigravity CLI · Codex CLI · Cursor · Windsurf · Zed
|
|
386
|
+
|
|
387
|
+
---
|
|
388
|
+
|
|
389
|
+
## License
|
|
390
|
+
|
|
391
|
+
MIT © 2026 Jigyasu Dham
|