@vibecheckai/cli 3.7.0 → 3.9.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 (118) hide show
  1. package/README.md +135 -63
  2. package/bin/_deprecations.js +447 -19
  3. package/bin/_router.js +1 -1
  4. package/bin/registry.js +347 -280
  5. package/bin/runners/context/generators/cursor-enhanced.js +2439 -0
  6. package/bin/runners/lib/agent-firewall/enforcement/gateway.js +1059 -0
  7. package/bin/runners/lib/agent-firewall/enforcement/index.js +98 -0
  8. package/bin/runners/lib/agent-firewall/enforcement/mode.js +318 -0
  9. package/bin/runners/lib/agent-firewall/enforcement/orchestrator.js +484 -0
  10. package/bin/runners/lib/agent-firewall/enforcement/proof-artifact.js +418 -0
  11. package/bin/runners/lib/agent-firewall/enforcement/schemas/change-event.schema.json +173 -0
  12. package/bin/runners/lib/agent-firewall/enforcement/schemas/intent.schema.json +181 -0
  13. package/bin/runners/lib/agent-firewall/enforcement/schemas/verdict.schema.json +222 -0
  14. package/bin/runners/lib/agent-firewall/enforcement/verdict-v2.js +333 -0
  15. package/bin/runners/lib/agent-firewall/index.js +200 -0
  16. package/bin/runners/lib/agent-firewall/integration/index.js +20 -0
  17. package/bin/runners/lib/agent-firewall/integration/ship-gate.js +437 -0
  18. package/bin/runners/lib/agent-firewall/intent/alignment-engine.js +634 -0
  19. package/bin/runners/lib/agent-firewall/intent/auto-detect.js +426 -0
  20. package/bin/runners/lib/agent-firewall/intent/index.js +102 -0
  21. package/bin/runners/lib/agent-firewall/intent/schema.js +352 -0
  22. package/bin/runners/lib/agent-firewall/intent/store.js +283 -0
  23. package/bin/runners/lib/agent-firewall/interception/fs-interceptor.js +502 -0
  24. package/bin/runners/lib/agent-firewall/interception/index.js +23 -0
  25. package/bin/runners/lib/agent-firewall/interceptor/base.js +7 -3
  26. package/bin/runners/lib/agent-firewall/session/collector.js +451 -0
  27. package/bin/runners/lib/agent-firewall/session/index.js +26 -0
  28. package/bin/runners/lib/artifact-envelope.js +540 -0
  29. package/bin/runners/lib/auth-shared.js +977 -0
  30. package/bin/runners/lib/checkpoint.js +941 -0
  31. package/bin/runners/lib/cleanup/engine.js +571 -0
  32. package/bin/runners/lib/cleanup/index.js +53 -0
  33. package/bin/runners/lib/cleanup/output.js +375 -0
  34. package/bin/runners/lib/cleanup/rules.js +1060 -0
  35. package/bin/runners/lib/doctor/diagnosis-receipt.js +454 -0
  36. package/bin/runners/lib/doctor/failure-signatures.js +526 -0
  37. package/bin/runners/lib/doctor/fix-script.js +336 -0
  38. package/bin/runners/lib/doctor/modules/build-tools.js +453 -0
  39. package/bin/runners/lib/doctor/modules/index.js +62 -3
  40. package/bin/runners/lib/doctor/modules/os-quirks.js +706 -0
  41. package/bin/runners/lib/doctor/modules/repo-integrity.js +485 -0
  42. package/bin/runners/lib/doctor/safe-repair.js +384 -0
  43. package/bin/runners/lib/engine/ast-cache.js +210 -210
  44. package/bin/runners/lib/engine/auth-extractor.js +211 -211
  45. package/bin/runners/lib/engine/billing-extractor.js +112 -112
  46. package/bin/runners/lib/engine/enforcement-extractor.js +100 -100
  47. package/bin/runners/lib/engine/env-extractor.js +207 -207
  48. package/bin/runners/lib/engine/express-extractor.js +208 -208
  49. package/bin/runners/lib/engine/extractors.js +849 -849
  50. package/bin/runners/lib/engine/index.js +207 -207
  51. package/bin/runners/lib/engine/repo-index.js +514 -514
  52. package/bin/runners/lib/engine/types.js +124 -124
  53. package/bin/runners/lib/engines/attack-detector.js +1192 -0
  54. package/bin/runners/lib/entitlements-v2.js +2 -2
  55. package/bin/runners/lib/missions/briefing.js +427 -0
  56. package/bin/runners/lib/missions/checkpoint.js +753 -0
  57. package/bin/runners/lib/missions/hardening.js +851 -0
  58. package/bin/runners/lib/missions/plan.js +421 -32
  59. package/bin/runners/lib/missions/safety-gates.js +645 -0
  60. package/bin/runners/lib/missions/schema.js +478 -0
  61. package/bin/runners/lib/packs/bundle.js +675 -0
  62. package/bin/runners/lib/packs/evidence-pack.js +671 -0
  63. package/bin/runners/lib/packs/pack-factory.js +837 -0
  64. package/bin/runners/lib/packs/permissions-pack.js +686 -0
  65. package/bin/runners/lib/packs/proof-graph-pack.js +779 -0
  66. package/bin/runners/lib/safelist/index.js +96 -0
  67. package/bin/runners/lib/safelist/integration.js +334 -0
  68. package/bin/runners/lib/safelist/matcher.js +696 -0
  69. package/bin/runners/lib/safelist/schema.js +948 -0
  70. package/bin/runners/lib/safelist/store.js +438 -0
  71. package/bin/runners/lib/schemas/ship-manifest.schema.json +251 -0
  72. package/bin/runners/lib/ship-gate.js +832 -0
  73. package/bin/runners/lib/ship-manifest.js +1153 -0
  74. package/bin/runners/lib/ship-output.js +1 -1
  75. package/bin/runners/lib/unified-cli-output.js +710 -383
  76. package/bin/runners/lib/upsell.js +3 -3
  77. package/bin/runners/lib/why-tree.js +650 -0
  78. package/bin/runners/runAllowlist.js +33 -4
  79. package/bin/runners/runApprove.js +240 -1122
  80. package/bin/runners/runAudit.js +692 -0
  81. package/bin/runners/runAuth.js +325 -29
  82. package/bin/runners/runCheckpoint.js +442 -494
  83. package/bin/runners/runCleanup.js +343 -0
  84. package/bin/runners/runDoctor.js +269 -19
  85. package/bin/runners/runFix.js +411 -32
  86. package/bin/runners/runForge.js +411 -0
  87. package/bin/runners/runIntent.js +906 -0
  88. package/bin/runners/runKickoff.js +878 -0
  89. package/bin/runners/runLaunch.js +2000 -0
  90. package/bin/runners/runLink.js +785 -0
  91. package/bin/runners/runMcp.js +1741 -837
  92. package/bin/runners/runPacks.js +2089 -0
  93. package/bin/runners/runPolish.js +41 -0
  94. package/bin/runners/runReality.js +178 -1
  95. package/bin/runners/runSafelist.js +1190 -0
  96. package/bin/runners/runScan.js +21 -9
  97. package/bin/runners/runShield.js +1282 -0
  98. package/bin/runners/runShip.js +395 -16
  99. package/bin/vibecheck.js +34 -6
  100. package/mcp-server/README.md +117 -158
  101. package/mcp-server/handlers/index.ts +2 -2
  102. package/mcp-server/handlers/tool-handler.ts +50 -11
  103. package/mcp-server/index.js +16 -0
  104. package/mcp-server/intent-firewall-interceptor.js +529 -0
  105. package/mcp-server/lib/executor.ts +5 -5
  106. package/mcp-server/lib/index.ts +14 -4
  107. package/mcp-server/lib/sandbox.test.ts +4 -4
  108. package/mcp-server/lib/sandbox.ts +2 -2
  109. package/mcp-server/manifest.json +473 -0
  110. package/mcp-server/package.json +1 -1
  111. package/mcp-server/registry/tool-registry.js +315 -523
  112. package/mcp-server/registry/tools.json +442 -428
  113. package/mcp-server/registry.test.ts +18 -12
  114. package/mcp-server/tier-auth.js +68 -11
  115. package/mcp-server/tools-v3.js +70 -16
  116. package/mcp-server/tsconfig.json +1 -0
  117. package/package.json +2 -1
  118. package/bin/runners/runProof.zip +0 -0
@@ -1,65 +1,144 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "version": "1.0.0",
4
- "description": "Vibecheck MCP Tool Registry - Single source of truth for all MCP tools",
3
+ "version": "4.0.0",
4
+ "description": "Vibecheck MCP Tool Registry - Canonical tools only (v4.0)",
5
5
  "tools": {
6
- "vibecheck.scan": {
7
- "name": "vibecheck.scan",
8
- "description": "Scan codebase for issues: missing routes, env gaps, ghost auth, dead UI, security vulnerabilities",
6
+ "vibecheck.audit": {
7
+ "name": "vibecheck.audit",
8
+ "description": "Analyze codebase for issues: routes, env gaps, auth drift, dead code, security vulnerabilities",
9
9
  "tier": "free",
10
- "category": "scan",
10
+ "category": "analysis",
11
11
  "inputSchema": {
12
12
  "type": "object",
13
13
  "properties": {
14
14
  "projectPath": {
15
15
  "type": "string",
16
- "description": "Project directory to scan",
16
+ "description": "Project directory to analyze",
17
17
  "default": "."
18
18
  },
19
19
  "categories": {
20
20
  "type": "array",
21
21
  "items": { "type": "string" },
22
- "description": "Categories to scan: routes, env, auth, billing, security"
22
+ "description": "Categories to audit: routes, env, auth, billing, security, dead-code"
23
23
  },
24
24
  "profile": {
25
25
  "type": "string",
26
26
  "enum": ["quick", "standard", "full"],
27
- "default": "standard",
28
- "description": "Scan profile depth"
27
+ "default": "standard"
29
28
  },
30
29
  "fix": {
31
30
  "type": "boolean",
32
31
  "default": false,
33
- "description": "Generate fix suggestions"
32
+ "description": "Generate fix suggestions (PRO)"
34
33
  }
35
- },
36
- "additionalProperties": false
34
+ }
37
35
  },
38
36
  "outputSchema": {
39
37
  "type": "object",
40
38
  "properties": {
41
39
  "verdict": { "type": "string", "enum": ["PASS", "WARN", "BLOCK"] },
42
- "findings": {
43
- "type": "array",
44
- "items": { "$ref": "#/$defs/Finding" }
40
+ "findings": { "type": "array" },
41
+ "summary": { "type": "object" }
42
+ }
43
+ },
44
+ "cli": { "command": "audit", "timeoutMs": 300000 },
45
+ "related": ["vibecheck.ship", "vibecheck.fix", "vibecheck.packs"]
46
+ },
47
+
48
+ "vibecheck.forge": {
49
+ "name": "vibecheck.forge",
50
+ "description": "Generate IDE rules and AI context (.cursorrules, MDC, Copilot instructions)",
51
+ "tier": "free",
52
+ "category": "truth",
53
+ "inputSchema": {
54
+ "type": "object",
55
+ "properties": {
56
+ "projectPath": { "type": "string", "default": "." },
57
+ "format": {
58
+ "type": "string",
59
+ "enum": ["cursor", "copilot", "windsurf", "all"],
60
+ "default": "all"
61
+ }
62
+ }
63
+ },
64
+ "outputSchema": {
65
+ "type": "object",
66
+ "properties": {
67
+ "generated": { "type": "array", "items": { "type": "string" } },
68
+ "format": { "type": "string" }
69
+ }
70
+ },
71
+ "cli": { "command": "forge", "timeoutMs": 60000 },
72
+ "related": ["vibecheck.audit", "vibecheck.shield"]
73
+ },
74
+
75
+ "vibecheck.shield": {
76
+ "name": "vibecheck.shield",
77
+ "description": "Agent Firewall - intercept, validate, and enforce AI actions",
78
+ "tier": "pro",
79
+ "category": "enforcement",
80
+ "inputSchema": {
81
+ "type": "object",
82
+ "properties": {
83
+ "action": {
84
+ "type": "string",
85
+ "enum": ["status", "verify", "enforce", "observe", "lock", "unlock", "install", "stats", "check"],
86
+ "default": "status"
45
87
  },
46
- "summary": { "$ref": "#/$defs/Summary" }
47
- },
48
- "required": ["findings", "summary"]
49
- },
50
- "cli": {
51
- "command": "scan",
52
- "argMap": {
53
- "projectPath": "--path",
54
- "categories": "--categories",
55
- "profile": "--profile",
56
- "fix": "--fix"
57
- },
58
- "fixedFlags": ["--json"],
59
- "timeoutMs": 300000
88
+ "code": { "type": "string", "description": "Code to verify" },
89
+ "file": { "type": "string", "description": "File path" },
90
+ "claims": { "type": "boolean", "default": false },
91
+ "prompts": { "type": "boolean", "default": false },
92
+ "projectPath": { "type": "string", "default": "." }
93
+ }
94
+ },
95
+ "outputSchema": {
96
+ "type": "object",
97
+ "properties": {
98
+ "success": { "type": "boolean" },
99
+ "mode": { "type": "string", "enum": ["observe", "enforce", "repo-lock"] },
100
+ "violations": { "type": "array" },
101
+ "verdict": { "type": "string", "enum": ["ALLOW", "WARN", "BLOCK"] }
102
+ }
60
103
  },
61
- "aliases": ["scan", "check", "analyze"],
62
- "related": ["vibecheck.ship", "vibecheck.fix", "vibecheck.report"]
104
+ "cli": { "command": "shield", "timeoutMs": 120000 },
105
+ "options": [
106
+ { "name": "enforce", "tier": "pro" },
107
+ { "name": "lock", "tier": "pro" },
108
+ { "name": "install", "tier": "pro" },
109
+ { "name": "check", "tier": "pro" }
110
+ ],
111
+ "related": ["vibecheck.forge", "vibecheck.ship", "vibecheck.intent"]
112
+ },
113
+
114
+ "vibecheck.intent": {
115
+ "name": "vibecheck.intent",
116
+ "description": "Declare and manage AI session intent for enforcement",
117
+ "tier": "pro",
118
+ "category": "enforcement",
119
+ "inputSchema": {
120
+ "type": "object",
121
+ "properties": {
122
+ "action": {
123
+ "type": "string",
124
+ "enum": ["set", "show", "clear", "history"],
125
+ "default": "show"
126
+ },
127
+ "summary": { "type": "string", "description": "Intent summary (for set action)" },
128
+ "constraints": { "type": "array", "items": { "type": "string" } },
129
+ "projectPath": { "type": "string", "default": "." }
130
+ }
131
+ },
132
+ "outputSchema": {
133
+ "type": "object",
134
+ "properties": {
135
+ "success": { "type": "boolean" },
136
+ "intent": { "type": "object" },
137
+ "hash": { "type": "string" }
138
+ }
139
+ },
140
+ "cli": { "command": "intent", "timeoutMs": 30000 },
141
+ "related": ["vibecheck.shield"]
63
142
  },
64
143
 
65
144
  "vibecheck.ship": {
@@ -70,49 +149,21 @@
70
149
  "inputSchema": {
71
150
  "type": "object",
72
151
  "properties": {
73
- "projectPath": {
74
- "type": "string",
75
- "description": "Project directory",
76
- "default": "."
77
- },
78
- "strict": {
79
- "type": "boolean",
80
- "default": false,
81
- "description": "Fail on warnings"
82
- },
83
- "badge": {
84
- "type": "boolean",
85
- "default": false,
86
- "description": "Generate status badge"
87
- }
88
- },
89
- "additionalProperties": false
152
+ "projectPath": { "type": "string", "default": "." },
153
+ "strict": { "type": "boolean", "default": false },
154
+ "badge": { "type": "boolean", "default": false }
155
+ }
90
156
  },
91
157
  "outputSchema": {
92
158
  "type": "object",
93
159
  "properties": {
94
160
  "verdict": { "type": "string", "enum": ["SHIP", "WARN", "BLOCK"] },
95
- "findings": {
96
- "type": "array",
97
- "items": { "$ref": "#/$defs/Finding" }
98
- },
99
- "summary": { "$ref": "#/$defs/Summary" },
100
- "badge": { "type": "string" }
101
- },
102
- "required": ["verdict", "findings", "summary"]
103
- },
104
- "cli": {
105
- "command": "ship",
106
- "argMap": {
107
- "projectPath": "--path",
108
- "strict": "--strict",
109
- "badge": "--badge"
110
- },
111
- "fixedFlags": ["--json"],
112
- "timeoutMs": 300000
161
+ "findings": { "type": "array" },
162
+ "summary": { "type": "object" }
163
+ }
113
164
  },
114
- "aliases": ["verdict", "go"],
115
- "related": ["vibecheck.scan", "vibecheck.prove"]
165
+ "cli": { "command": "ship", "timeoutMs": 300000 },
166
+ "related": ["vibecheck.audit", "vibecheck.prove", "vibecheck.seal"]
116
167
  },
117
168
 
118
169
  "vibecheck.fix": {
@@ -123,61 +174,26 @@
123
174
  "inputSchema": {
124
175
  "type": "object",
125
176
  "properties": {
126
- "projectPath": {
127
- "type": "string",
128
- "description": "Project directory",
129
- "default": "."
130
- },
177
+ "projectPath": { "type": "string", "default": "." },
131
178
  "mode": {
132
179
  "type": "string",
133
180
  "enum": ["plan", "apply", "loop"],
134
- "default": "plan",
135
- "description": "Fix mode: plan (suggest), apply (make changes), loop (until clean)"
181
+ "default": "plan"
136
182
  },
137
- "findingIds": {
138
- "type": "array",
139
- "items": { "type": "string" },
140
- "description": "Specific finding IDs to fix"
141
- },
142
- "dryRun": {
143
- "type": "boolean",
144
- "default": false,
145
- "description": "Preview changes without applying"
146
- }
147
- },
148
- "additionalProperties": false
183
+ "findingIds": { "type": "array", "items": { "type": "string" } },
184
+ "dryRun": { "type": "boolean", "default": false }
185
+ }
149
186
  },
150
187
  "outputSchema": {
151
188
  "type": "object",
152
189
  "properties": {
153
190
  "fixed": { "type": "number" },
154
191
  "remaining": { "type": "number" },
155
- "patches": {
156
- "type": "array",
157
- "items": {
158
- "type": "object",
159
- "properties": {
160
- "path": { "type": "string" },
161
- "diff": { "type": "string" }
162
- }
163
- }
164
- }
165
- },
166
- "required": ["fixed", "remaining"]
167
- },
168
- "cli": {
169
- "command": "fix",
170
- "argMap": {
171
- "projectPath": "--path",
172
- "mode": "--mode",
173
- "findingIds": "--ids",
174
- "dryRun": "--dry-run"
175
- },
176
- "fixedFlags": ["--json"],
177
- "timeoutMs": 600000
192
+ "patches": { "type": "array" }
193
+ }
178
194
  },
179
- "aliases": ["repair", "patch"],
180
- "related": ["vibecheck.scan", "vibecheck.ship"]
195
+ "cli": { "command": "fix", "timeoutMs": 600000 },
196
+ "related": ["vibecheck.audit", "vibecheck.ship"]
181
197
  },
182
198
 
183
199
  "vibecheck.prove": {
@@ -188,316 +204,162 @@
188
204
  "inputSchema": {
189
205
  "type": "object",
190
206
  "properties": {
191
- "projectPath": {
192
- "type": "string",
193
- "description": "Project directory",
194
- "default": "."
195
- },
196
- "url": {
197
- "type": "string",
198
- "description": "URL for runtime testing"
199
- },
200
- "maxIterations": {
201
- "type": "number",
202
- "default": 5,
203
- "minimum": 1,
204
- "maximum": 20,
205
- "description": "Maximum proof iterations"
206
- },
207
- "recordVideo": {
208
- "type": "boolean",
209
- "default": true,
210
- "description": "Record browser video evidence"
211
- }
212
- },
213
- "additionalProperties": false
207
+ "projectPath": { "type": "string", "default": "." },
208
+ "url": { "type": "string" },
209
+ "maxIterations": { "type": "number", "default": 5 },
210
+ "recordVideo": { "type": "boolean", "default": true }
211
+ }
214
212
  },
215
213
  "outputSchema": {
216
214
  "type": "object",
217
215
  "properties": {
218
216
  "verdict": { "type": "string", "enum": ["PASS", "FAIL"] },
219
217
  "iterations": { "type": "number" },
220
- "evidence": {
221
- "type": "array",
222
- "items": {
223
- "type": "object",
224
- "properties": {
225
- "type": { "type": "string" },
226
- "path": { "type": "string" }
227
- }
228
- }
229
- }
230
- },
231
- "required": ["verdict", "iterations"]
232
- },
233
- "cli": {
234
- "command": "prove",
235
- "argMap": {
236
- "projectPath": "--path",
237
- "url": "--url",
238
- "maxIterations": "--max-iterations",
239
- "recordVideo": "--video"
240
- },
241
- "fixedFlags": ["--json"],
242
- "timeoutMs": 900000
218
+ "evidence": { "type": "array" }
219
+ }
243
220
  },
244
- "aliases": ["verify", "runtime"],
221
+ "cli": { "command": "prove", "timeoutMs": 900000 },
245
222
  "related": ["vibecheck.ship", "vibecheck.reality"]
246
223
  },
247
224
 
248
- "vibecheck.report": {
249
- "name": "vibecheck.report",
250
- "description": "Generate HTML/MD/SARIF reports from scan results",
251
- "tier": "free",
252
- "category": "report",
225
+ "vibecheck.reality": {
226
+ "name": "vibecheck.reality",
227
+ "description": "Browser-based runtime verification with auth boundary testing",
228
+ "tier": "pro",
229
+ "category": "proof",
253
230
  "inputSchema": {
254
231
  "type": "object",
255
232
  "properties": {
256
- "projectPath": {
257
- "type": "string",
258
- "description": "Project directory",
259
- "default": "."
260
- },
261
- "format": {
262
- "type": "string",
263
- "enum": ["html", "md", "sarif", "json"],
264
- "default": "html",
265
- "description": "Report format"
266
- },
267
- "outputPath": {
268
- "type": "string",
269
- "description": "Output file path"
270
- }
233
+ "url": { "type": "string" },
234
+ "auth": { "type": "string" },
235
+ "headed": { "type": "boolean", "default": false },
236
+ "maxPages": { "type": "number", "default": 20 }
271
237
  },
272
- "additionalProperties": false
238
+ "required": ["url"]
273
239
  },
274
240
  "outputSchema": {
275
241
  "type": "object",
276
242
  "properties": {
277
- "reportPath": { "type": "string" },
278
- "format": { "type": "string" }
279
- },
280
- "required": ["reportPath", "format"]
281
- },
282
- "cli": {
283
- "command": "report",
284
- "argMap": {
285
- "projectPath": "--path",
286
- "format": "--format",
287
- "outputPath": "--output"
288
- },
289
- "fixedFlags": ["--json"],
290
- "timeoutMs": 60000
243
+ "verdict": { "type": "string", "enum": ["PASS", "FAIL"] },
244
+ "pagesVisited": { "type": "number" },
245
+ "authBoundaries": { "type": "array" }
246
+ }
291
247
  },
292
- "aliases": ["html", "export"],
293
- "related": ["vibecheck.scan"]
248
+ "cli": { "command": "reality", "timeoutMs": 600000 },
249
+ "related": ["vibecheck.prove"]
294
250
  },
295
251
 
296
- "vibecheck.doctor": {
297
- "name": "vibecheck.doctor",
298
- "description": "Environment, dependency, and configuration health check",
299
- "tier": "free",
300
- "category": "setup",
252
+ "vibecheck.launch": {
253
+ "name": "vibecheck.launch",
254
+ "description": "CI/CD enforcement - preflight checks and deploy gates",
255
+ "tier": "pro",
256
+ "category": "automation",
301
257
  "inputSchema": {
302
258
  "type": "object",
303
259
  "properties": {
304
- "projectPath": {
260
+ "projectPath": { "type": "string", "default": "." },
261
+ "action": {
305
262
  "type": "string",
306
- "description": "Project directory",
307
- "default": "."
263
+ "enum": ["preflight", "prelaunch", "check"],
264
+ "default": "preflight"
308
265
  },
309
- "fix": {
310
- "type": "boolean",
311
- "default": false,
312
- "description": "Auto-fix detected issues"
313
- },
314
- "verbose": {
315
- "type": "boolean",
316
- "default": false,
317
- "description": "Verbose output"
318
- }
319
- },
320
- "additionalProperties": false
266
+ "strict": { "type": "boolean", "default": false }
267
+ }
321
268
  },
322
269
  "outputSchema": {
323
270
  "type": "object",
324
271
  "properties": {
325
- "healthy": { "type": "boolean" },
326
- "checks": {
327
- "type": "array",
328
- "items": {
329
- "type": "object",
330
- "properties": {
331
- "name": { "type": "string" },
332
- "status": { "type": "string", "enum": ["pass", "warn", "fail"] },
333
- "message": { "type": "string" }
334
- }
335
- }
336
- }
337
- },
338
- "required": ["healthy", "checks"]
339
- },
340
- "cli": {
341
- "command": "doctor",
342
- "argMap": {
343
- "projectPath": "--path",
344
- "fix": "--fix",
345
- "verbose": "--verbose"
346
- },
347
- "fixedFlags": ["--json"],
348
- "timeoutMs": 60000
272
+ "success": { "type": "boolean" },
273
+ "passed": { "type": "boolean" },
274
+ "checks": { "type": "array" }
275
+ }
349
276
  },
350
- "aliases": ["health", "check-env"],
351
- "related": ["vibecheck.init"]
277
+ "cli": { "command": "launch", "timeoutMs": 300000 },
278
+ "related": ["vibecheck.ship", "vibecheck.audit"]
352
279
  },
353
280
 
354
- "vibecheck.classify": {
355
- "name": "vibecheck.classify",
356
- "description": "Inventory authority - analyze duplication and legacy code maps",
281
+ "vibecheck.packs": {
282
+ "name": "vibecheck.packs",
283
+ "description": "Generate shareable artifact packs: reports (HTML/MD/SARIF), evidence, proof graphs",
357
284
  "tier": "free",
358
- "category": "authority",
285
+ "category": "output",
359
286
  "inputSchema": {
360
287
  "type": "object",
361
288
  "properties": {
362
- "projectPath": {
289
+ "action": {
363
290
  "type": "string",
364
- "description": "Project directory",
365
- "default": "."
366
- },
367
- "includeNear": {
368
- "type": "boolean",
369
- "default": true,
370
- "description": "Include near-duplicates"
291
+ "enum": ["evidence", "report", "graph", "permissions", "manifest"],
292
+ "default": "evidence"
371
293
  },
294
+ "projectPath": { "type": "string", "default": "." },
372
295
  "format": {
373
296
  "type": "string",
374
- "enum": ["json", "table", "markdown"],
375
- "default": "json",
376
- "description": "Output format"
377
- }
378
- },
379
- "additionalProperties": false
297
+ "enum": ["html", "md", "sarif", "json", "csv", "pdf", "dot", "mermaid"],
298
+ "default": "html"
299
+ },
300
+ "output": { "type": "string" }
301
+ }
380
302
  },
381
303
  "outputSchema": {
382
304
  "type": "object",
383
305
  "properties": {
384
- "duplicates": { "type": "array" },
385
- "legacyCode": { "type": "array" },
386
- "summary": {
387
- "type": "object",
388
- "properties": {
389
- "totalFiles": { "type": "number" },
390
- "duplicateCount": { "type": "number" },
391
- "legacyCount": { "type": "number" }
392
- }
393
- }
394
- },
395
- "required": ["summary"]
396
- },
397
- "cli": {
398
- "command": "classify",
399
- "argMap": {
400
- "projectPath": "--path",
401
- "includeNear": "--include-near",
402
- "format": "--format"
403
- },
404
- "fixedFlags": ["--json"],
405
- "timeoutMs": 300000
306
+ "success": { "type": "boolean" },
307
+ "path": { "type": "string" },
308
+ "format": { "type": "string" }
309
+ }
406
310
  },
407
- "aliases": ["inventory", "audit"],
408
- "related": ["vibecheck.approve"]
311
+ "cli": { "command": "packs", "timeoutMs": 120000 },
312
+ "related": ["vibecheck.audit", "vibecheck.prove"]
409
313
  },
410
314
 
411
- "vibecheck.reality": {
412
- "name": "vibecheck.reality",
413
- "description": "Browser-based runtime verification with auth boundary testing",
315
+ "vibecheck.seal": {
316
+ "name": "vibecheck.seal",
317
+ "description": "Generate verification seal/badge with optional cryptographic attestation",
414
318
  "tier": "pro",
415
- "category": "proof",
319
+ "category": "output",
416
320
  "inputSchema": {
417
321
  "type": "object",
418
322
  "properties": {
419
- "url": {
420
- "type": "string",
421
- "description": "URL to test"
422
- },
423
- "auth": {
323
+ "projectPath": { "type": "string", "default": "." },
324
+ "format": {
424
325
  "type": "string",
425
- "description": "Auth credentials (email:password)"
326
+ "enum": ["svg", "png", "json"],
327
+ "default": "svg"
426
328
  },
427
- "headed": {
428
- "type": "boolean",
429
- "default": false,
430
- "description": "Run with visible browser"
431
- },
432
- "maxPages": {
433
- "type": "number",
434
- "default": 20,
435
- "minimum": 1,
436
- "maximum": 100,
437
- "description": "Maximum pages to crawl"
438
- }
439
- },
440
- "required": ["url"],
441
- "additionalProperties": false
329
+ "output": { "type": "string" },
330
+ "attest": { "type": "boolean", "default": false }
331
+ }
442
332
  },
443
333
  "outputSchema": {
444
334
  "type": "object",
445
335
  "properties": {
446
- "verdict": { "type": "string", "enum": ["PASS", "FAIL"] },
447
- "pagesVisited": { "type": "number" },
448
- "authBoundaries": { "type": "array" },
449
- "evidence": { "type": "array" }
450
- },
451
- "required": ["verdict", "pagesVisited"]
452
- },
453
- "cli": {
454
- "command": "reality",
455
- "argMap": {
456
- "url": "--url",
457
- "auth": "--auth",
458
- "headed": "--headed",
459
- "maxPages": "--max-pages"
460
- },
461
- "fixedFlags": ["--json"],
462
- "timeoutMs": 600000
336
+ "success": { "type": "boolean" },
337
+ "badge": { "type": "string" },
338
+ "attestation": { "type": "object" }
339
+ }
463
340
  },
464
- "aliases": ["browser", "e2e"],
465
- "related": ["vibecheck.prove"]
341
+ "cli": { "command": "seal", "timeoutMs": 60000 },
342
+ "related": ["vibecheck.ship"]
466
343
  },
467
344
 
468
- "vibecheck.allowlist": {
469
- "name": "vibecheck.allowlist",
470
- "description": "Manage finding allowlist for false positives",
345
+ "vibecheck.safelist": {
346
+ "name": "vibecheck.safelist",
347
+ "description": "Manage finding safelist for false positives",
471
348
  "tier": "free",
472
- "category": "setup",
349
+ "category": "config",
473
350
  "inputSchema": {
474
351
  "type": "object",
475
352
  "properties": {
476
- "projectPath": {
477
- "type": "string",
478
- "description": "Project directory",
479
- "default": "."
480
- },
353
+ "projectPath": { "type": "string", "default": "." },
481
354
  "action": {
482
355
  "type": "string",
483
356
  "enum": ["list", "add", "remove"],
484
- "default": "list",
485
- "description": "Action to perform"
357
+ "default": "list"
486
358
  },
487
- "id": {
488
- "type": "string",
489
- "description": "Finding ID to add/remove"
490
- },
491
- "pattern": {
492
- "type": "string",
493
- "description": "Pattern to allowlist"
494
- },
495
- "reason": {
496
- "type": "string",
497
- "description": "Reason for allowlisting"
498
- }
499
- },
500
- "additionalProperties": false
359
+ "id": { "type": "string" },
360
+ "pattern": { "type": "string" },
361
+ "reason": { "type": "string" }
362
+ }
501
363
  },
502
364
  "outputSchema": {
503
365
  "type": "object",
@@ -507,99 +369,251 @@
507
369
  "removed": { "type": "boolean" }
508
370
  }
509
371
  },
510
- "cli": {
511
- "command": "allowlist",
512
- "argMap": {
513
- "projectPath": "--path",
514
- "action": "",
515
- "id": "--id",
516
- "pattern": "--pattern",
517
- "reason": "--reason"
518
- },
519
- "fixedFlags": ["--json"],
520
- "timeoutMs": 30000
521
- },
522
- "aliases": ["suppress", "ignore"],
523
- "related": ["vibecheck.scan"]
372
+ "cli": { "command": "safelist", "timeoutMs": 30000 },
373
+ "related": ["vibecheck.audit"]
524
374
  },
525
375
 
526
- "vibecheck.context": {
527
- "name": "vibecheck.context",
528
- "description": "Generate IDE rules (.cursorrules, MDC, Copilot instructions)",
376
+ "vibecheck.auth": {
377
+ "name": "vibecheck.auth",
378
+ "description": "Authentication management: login, logout, whoami",
529
379
  "tier": "free",
530
- "category": "setup",
380
+ "category": "account",
531
381
  "inputSchema": {
532
382
  "type": "object",
533
383
  "properties": {
534
- "projectPath": {
384
+ "action": {
535
385
  "type": "string",
536
- "description": "Project directory",
537
- "default": "."
386
+ "enum": ["login", "logout", "whoami", "status"],
387
+ "default": "whoami"
538
388
  },
539
- "format": {
389
+ "apiKey": { "type": "string" }
390
+ }
391
+ },
392
+ "outputSchema": {
393
+ "type": "object",
394
+ "properties": {
395
+ "success": { "type": "boolean" },
396
+ "user": { "type": "object" },
397
+ "tier": { "type": "string" }
398
+ }
399
+ },
400
+ "cli": { "command": "auth", "timeoutMs": 30000 }
401
+ },
402
+
403
+ "vibecheck.link": {
404
+ "name": "vibecheck.link",
405
+ "description": "One-time project setup: config, contracts, scripts",
406
+ "tier": "free",
407
+ "category": "setup",
408
+ "inputSchema": {
409
+ "type": "object",
410
+ "properties": {
411
+ "projectPath": { "type": "string", "default": "." },
412
+ "force": { "type": "boolean", "default": false }
413
+ }
414
+ },
415
+ "outputSchema": {
416
+ "type": "object",
417
+ "properties": {
418
+ "success": { "type": "boolean" },
419
+ "created": { "type": "array", "items": { "type": "string" } }
420
+ }
421
+ },
422
+ "cli": { "command": "link", "timeoutMs": 60000 },
423
+ "related": ["vibecheck.kickoff", "vibecheck.doctor"]
424
+ },
425
+
426
+ "vibecheck.kickoff": {
427
+ "name": "vibecheck.kickoff",
428
+ "description": "Interactive guided onboarding experience",
429
+ "tier": "free",
430
+ "category": "setup",
431
+ "inputSchema": {
432
+ "type": "object",
433
+ "properties": {
434
+ "projectPath": { "type": "string", "default": "." }
435
+ }
436
+ },
437
+ "outputSchema": {
438
+ "type": "object",
439
+ "properties": {
440
+ "success": { "type": "boolean" },
441
+ "steps": { "type": "array" }
442
+ }
443
+ },
444
+ "cli": { "command": "kickoff", "timeoutMs": 120000 },
445
+ "related": ["vibecheck.link", "vibecheck.doctor"]
446
+ },
447
+
448
+ "vibecheck.doctor": {
449
+ "name": "vibecheck.doctor",
450
+ "description": "Environment, dependency, and configuration health check",
451
+ "tier": "free",
452
+ "category": "setup",
453
+ "inputSchema": {
454
+ "type": "object",
455
+ "properties": {
456
+ "projectPath": { "type": "string", "default": "." },
457
+ "fix": { "type": "boolean", "default": false },
458
+ "verbose": { "type": "boolean", "default": false }
459
+ }
460
+ },
461
+ "outputSchema": {
462
+ "type": "object",
463
+ "properties": {
464
+ "healthy": { "type": "boolean" },
465
+ "checks": { "type": "array" }
466
+ }
467
+ },
468
+ "cli": { "command": "doctor", "timeoutMs": 60000 },
469
+ "related": ["vibecheck.link"]
470
+ },
471
+
472
+ "vibecheck.approve": {
473
+ "name": "vibecheck.approve",
474
+ "description": "Authority verdicts - PROCEED/STOP/DEFER with proofs",
475
+ "tier": "pro",
476
+ "category": "authority",
477
+ "inputSchema": {
478
+ "type": "object",
479
+ "properties": {
480
+ "authority": { "type": "string" },
481
+ "projectPath": { "type": "string", "default": "." },
482
+ "dryRun": { "type": "boolean", "default": false }
483
+ },
484
+ "required": ["authority"]
485
+ },
486
+ "outputSchema": {
487
+ "type": "object",
488
+ "properties": {
489
+ "success": { "type": "boolean" },
490
+ "verdict": { "type": "string", "enum": ["PROCEED", "STOP", "DEFER"] },
491
+ "proof": { "type": "object" }
492
+ }
493
+ },
494
+ "cli": { "command": "approve", "timeoutMs": 300000 },
495
+ "related": ["vibecheck.audit"]
496
+ },
497
+
498
+ "vibecheck.checkpoint": {
499
+ "name": "vibecheck.checkpoint",
500
+ "description": "Time machine - snapshot and restore",
501
+ "tier": "free",
502
+ "category": "proof",
503
+ "inputSchema": {
504
+ "type": "object",
505
+ "properties": {
506
+ "projectPath": { "type": "string", "default": "." },
507
+ "baseline": { "type": "string" }
508
+ }
509
+ },
510
+ "outputSchema": {
511
+ "type": "object",
512
+ "properties": {
513
+ "success": { "type": "boolean" },
514
+ "delta": { "type": "object" }
515
+ }
516
+ },
517
+ "cli": { "command": "checkpoint", "timeoutMs": 120000 },
518
+ "related": ["vibecheck.audit", "vibecheck.fix"]
519
+ },
520
+
521
+ "vibecheck.polish": {
522
+ "name": "vibecheck.polish",
523
+ "description": "Code polish and cleanup",
524
+ "tier": "pro",
525
+ "category": "quality",
526
+ "inputSchema": {
527
+ "type": "object",
528
+ "properties": {
529
+ "projectPath": { "type": "string", "default": "." },
530
+ "scope": {
540
531
  "type": "string",
541
- "enum": ["cursor", "copilot", "all"],
542
- "default": "all",
543
- "description": "IDE format to generate"
532
+ "enum": ["all", "lint", "format", "imports"],
533
+ "default": "all"
544
534
  }
545
- },
546
- "additionalProperties": false
535
+ }
547
536
  },
548
537
  "outputSchema": {
549
538
  "type": "object",
550
539
  "properties": {
551
- "generated": { "type": "array", "items": { "type": "string" } },
552
- "format": { "type": "string" }
553
- },
554
- "required": ["generated"]
540
+ "success": { "type": "boolean" },
541
+ "changes": { "type": "array" }
542
+ }
555
543
  },
556
- "cli": {
557
- "command": "context",
558
- "argMap": {
559
- "projectPath": "--path",
560
- "format": "--format"
561
- },
562
- "fixedFlags": ["--json"],
563
- "timeoutMs": 60000
544
+ "cli": { "command": "polish", "timeoutMs": 300000 },
545
+ "related": ["vibecheck.fix"]
546
+ },
547
+
548
+ "vibecheck.labs": {
549
+ "name": "vibecheck.labs",
550
+ "description": "Access experimental features",
551
+ "tier": "free",
552
+ "category": "experimental",
553
+ "inputSchema": {
554
+ "type": "object",
555
+ "properties": {
556
+ "feature": { "type": "string" },
557
+ "projectPath": { "type": "string", "default": "." }
558
+ }
564
559
  },
565
- "aliases": ["rules", "mdc"],
566
- "related": ["vibecheck.scan"]
567
- }
568
- },
560
+ "outputSchema": {
561
+ "type": "object",
562
+ "properties": {
563
+ "success": { "type": "boolean" },
564
+ "features": { "type": "array" }
565
+ }
566
+ },
567
+ "cli": { "command": "labs", "timeoutMs": 60000 }
568
+ },
569
569
 
570
- "$defs": {
571
- "Finding": {
572
- "type": "object",
573
- "properties": {
574
- "id": { "type": "string", "description": "Stable finding ID (sha256)" },
575
- "ruleId": { "type": "string", "description": "Rule identifier" },
576
- "severity": { "type": "string", "enum": ["critical", "high", "medium", "low", "info"] },
577
- "message": { "type": "string" },
578
- "path": { "type": "string" },
579
- "line": { "type": "number", "minimum": 1 },
580
- "column": { "type": "number", "minimum": 1 },
581
- "snippet": { "type": "string" },
582
- "category": { "type": "string" },
583
- "fix": { "type": "string" }
584
- },
585
- "required": ["id", "ruleId", "severity", "message", "path", "line"]
570
+ "vibecheck.ci": {
571
+ "name": "vibecheck.ci",
572
+ "description": "One-command enterprise CI wiring (GitHub Actions)",
573
+ "tier": "free",
574
+ "category": "ci",
575
+ "inputSchema": {
576
+ "type": "object",
577
+ "properties": {
578
+ "projectPath": { "type": "string", "default": "." },
579
+ "dryRun": { "type": "boolean", "default": false },
580
+ "full": { "type": "boolean", "default": false },
581
+ "validate": { "type": "boolean", "default": false }
582
+ }
583
+ },
584
+ "outputSchema": {
585
+ "type": "object",
586
+ "properties": {
587
+ "success": { "type": "boolean" },
588
+ "created": { "type": "array", "items": { "type": "string" } },
589
+ "workflows": { "type": "array" }
590
+ }
591
+ },
592
+ "cli": { "command": "ci", "timeoutMs": 60000 },
593
+ "related": ["vibecheck.link", "vibecheck.audit", "vibecheck.ship"]
586
594
  },
587
- "Summary": {
588
- "type": "object",
589
- "properties": {
590
- "total": { "type": "number" },
591
- "bySeverity": {
592
- "type": "object",
593
- "additionalProperties": { "type": "number" }
594
- },
595
- "byCategory": {
596
- "type": "object",
597
- "additionalProperties": { "type": "number" }
598
- },
599
- "filesScanned": { "type": "number" },
600
- "scanDurationMs": { "type": "number" }
595
+
596
+ "vibecheck.watch": {
597
+ "name": "vibecheck.watch",
598
+ "description": "Continuous mode - re-runs on file changes",
599
+ "tier": "free",
600
+ "category": "setup",
601
+ "inputSchema": {
602
+ "type": "object",
603
+ "properties": {
604
+ "projectPath": { "type": "string", "default": "." },
605
+ "path": { "type": "string", "description": "Specific path to watch" }
606
+ }
607
+ },
608
+ "outputSchema": {
609
+ "type": "object",
610
+ "properties": {
611
+ "success": { "type": "boolean" },
612
+ "watching": { "type": "boolean" }
613
+ }
601
614
  },
602
- "required": ["total", "bySeverity"]
615
+ "cli": { "command": "watch", "timeoutMs": null },
616
+ "related": ["vibecheck.audit"]
603
617
  }
604
618
  }
605
619
  }