@vibecheckai/cli 3.2.3 → 3.2.5

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 (173) hide show
  1. package/bin/.generated +25 -25
  2. package/bin/dev/run-v2-torture.js +30 -30
  3. package/bin/runners/ENHANCEMENT_GUIDE.md +121 -121
  4. package/bin/runners/lib/__tests__/entitlements-v2.test.js +295 -295
  5. package/bin/runners/lib/agent-firewall/ai/false-positive-analyzer.js +474 -0
  6. package/bin/runners/lib/agent-firewall/claims/extractor.js +117 -28
  7. package/bin/runners/lib/agent-firewall/evidence/env-evidence.js +23 -14
  8. package/bin/runners/lib/agent-firewall/evidence/route-evidence.js +72 -1
  9. package/bin/runners/lib/agent-firewall/interceptor/base.js +2 -2
  10. package/bin/runners/lib/agent-firewall/policy/default-policy.json +6 -0
  11. package/bin/runners/lib/agent-firewall/policy/engine.js +34 -3
  12. package/bin/runners/lib/agent-firewall/policy/rules/fake-success.js +29 -4
  13. package/bin/runners/lib/agent-firewall/policy/rules/ghost-route.js +12 -0
  14. package/bin/runners/lib/agent-firewall/truthpack/loader.js +21 -0
  15. package/bin/runners/lib/agent-firewall/utils/ignore-checker.js +118 -0
  16. package/bin/runners/lib/analyzers.js +606 -325
  17. package/bin/runners/lib/auth-truth.js +193 -193
  18. package/bin/runners/lib/backup.js +62 -62
  19. package/bin/runners/lib/billing.js +107 -107
  20. package/bin/runners/lib/claims.js +118 -118
  21. package/bin/runners/lib/cli-ui.js +540 -540
  22. package/bin/runners/lib/contracts/auth-contract.js +202 -202
  23. package/bin/runners/lib/contracts/env-contract.js +181 -181
  24. package/bin/runners/lib/contracts/external-contract.js +206 -206
  25. package/bin/runners/lib/contracts/guard.js +168 -168
  26. package/bin/runners/lib/contracts/index.js +89 -89
  27. package/bin/runners/lib/contracts/plan-validator.js +311 -311
  28. package/bin/runners/lib/contracts/route-contract.js +199 -199
  29. package/bin/runners/lib/contracts.js +804 -804
  30. package/bin/runners/lib/detect.js +89 -89
  31. package/bin/runners/lib/doctor/autofix.js +254 -254
  32. package/bin/runners/lib/doctor/index.js +37 -37
  33. package/bin/runners/lib/doctor/modules/dependencies.js +325 -325
  34. package/bin/runners/lib/doctor/modules/index.js +46 -46
  35. package/bin/runners/lib/doctor/modules/network.js +250 -250
  36. package/bin/runners/lib/doctor/modules/project.js +312 -312
  37. package/bin/runners/lib/doctor/modules/runtime.js +224 -224
  38. package/bin/runners/lib/doctor/modules/security.js +348 -348
  39. package/bin/runners/lib/doctor/modules/system.js +213 -213
  40. package/bin/runners/lib/doctor/modules/vibecheck.js +394 -394
  41. package/bin/runners/lib/doctor/reporter.js +262 -262
  42. package/bin/runners/lib/doctor/service.js +262 -262
  43. package/bin/runners/lib/doctor/types.js +113 -113
  44. package/bin/runners/lib/doctor/ui.js +263 -263
  45. package/bin/runners/lib/doctor-v2.js +608 -608
  46. package/bin/runners/lib/drift.js +425 -425
  47. package/bin/runners/lib/enforcement.js +72 -72
  48. package/bin/runners/lib/engines/accessibility-engine.js +190 -0
  49. package/bin/runners/lib/engines/api-consistency-engine.js +162 -0
  50. package/bin/runners/lib/engines/ast-cache.js +99 -0
  51. package/bin/runners/lib/engines/code-quality-engine.js +255 -0
  52. package/bin/runners/lib/engines/console-logs-engine.js +115 -0
  53. package/bin/runners/lib/engines/cross-file-analysis-engine.js +268 -0
  54. package/bin/runners/lib/engines/dead-code-engine.js +198 -0
  55. package/bin/runners/lib/engines/deprecated-api-engine.js +226 -0
  56. package/bin/runners/lib/engines/empty-catch-engine.js +150 -0
  57. package/bin/runners/lib/engines/file-filter.js +131 -0
  58. package/bin/runners/lib/engines/hardcoded-secrets-engine.js +251 -0
  59. package/bin/runners/lib/engines/mock-data-engine.js +272 -0
  60. package/bin/runners/lib/engines/parallel-processor.js +71 -0
  61. package/bin/runners/lib/engines/performance-issues-engine.js +265 -0
  62. package/bin/runners/lib/engines/security-vulnerabilities-engine.js +243 -0
  63. package/bin/runners/lib/engines/todo-fixme-engine.js +115 -0
  64. package/bin/runners/lib/engines/type-aware-engine.js +152 -0
  65. package/bin/runners/lib/engines/unsafe-regex-engine.js +225 -0
  66. package/bin/runners/lib/engines/vibecheck-engines/README.md +53 -0
  67. package/bin/runners/lib/engines/vibecheck-engines/index.js +15 -0
  68. package/bin/runners/lib/engines/vibecheck-engines/lib/ast-cache.js +164 -0
  69. package/bin/runners/lib/engines/vibecheck-engines/lib/code-quality-engine.js +291 -0
  70. package/bin/runners/lib/engines/vibecheck-engines/lib/console-logs-engine.js +83 -0
  71. package/bin/runners/lib/engines/vibecheck-engines/lib/dead-code-engine.js +198 -0
  72. package/bin/runners/lib/engines/vibecheck-engines/lib/deprecated-api-engine.js +275 -0
  73. package/bin/runners/lib/engines/vibecheck-engines/lib/empty-catch-engine.js +167 -0
  74. package/bin/runners/lib/engines/vibecheck-engines/lib/file-filter.js +217 -0
  75. package/bin/runners/lib/engines/vibecheck-engines/lib/hardcoded-secrets-engine.js +139 -0
  76. package/bin/runners/lib/engines/vibecheck-engines/lib/mock-data-engine.js +140 -0
  77. package/bin/runners/lib/engines/vibecheck-engines/lib/parallel-processor.js +164 -0
  78. package/bin/runners/lib/engines/vibecheck-engines/lib/performance-issues-engine.js +234 -0
  79. package/bin/runners/lib/engines/vibecheck-engines/lib/type-aware-engine.js +217 -0
  80. package/bin/runners/lib/engines/vibecheck-engines/lib/unsafe-regex-engine.js +78 -0
  81. package/bin/runners/lib/engines/vibecheck-engines/package.json +13 -0
  82. package/bin/runners/lib/enterprise-detect.js +603 -603
  83. package/bin/runners/lib/enterprise-init.js +942 -942
  84. package/bin/runners/lib/env-resolver.js +417 -417
  85. package/bin/runners/lib/env-template.js +66 -66
  86. package/bin/runners/lib/env.js +189 -189
  87. package/bin/runners/lib/extractors/client-calls.js +990 -990
  88. package/bin/runners/lib/extractors/fastify-route-dump.js +573 -573
  89. package/bin/runners/lib/extractors/fastify-routes.js +426 -426
  90. package/bin/runners/lib/extractors/index.js +363 -363
  91. package/bin/runners/lib/extractors/next-routes.js +524 -524
  92. package/bin/runners/lib/extractors/proof-graph.js +431 -431
  93. package/bin/runners/lib/extractors/route-matcher.js +451 -451
  94. package/bin/runners/lib/extractors/truthpack-v2.js +377 -377
  95. package/bin/runners/lib/extractors/ui-bindings.js +547 -547
  96. package/bin/runners/lib/findings-schema.js +281 -281
  97. package/bin/runners/lib/firewall-prompt.js +50 -50
  98. package/bin/runners/lib/global-flags.js +213 -213
  99. package/bin/runners/lib/graph/graph-builder.js +265 -265
  100. package/bin/runners/lib/graph/html-renderer.js +413 -413
  101. package/bin/runners/lib/graph/index.js +32 -32
  102. package/bin/runners/lib/graph/runtime-collector.js +215 -215
  103. package/bin/runners/lib/graph/static-extractor.js +518 -518
  104. package/bin/runners/lib/html-report.js +650 -650
  105. package/bin/runners/lib/interactive-menu.js +1496 -1496
  106. package/bin/runners/lib/llm.js +75 -75
  107. package/bin/runners/lib/meter.js +61 -61
  108. package/bin/runners/lib/missions/evidence.js +126 -126
  109. package/bin/runners/lib/patch.js +40 -40
  110. package/bin/runners/lib/permissions/auth-model.js +213 -213
  111. package/bin/runners/lib/permissions/idor-prover.js +205 -205
  112. package/bin/runners/lib/permissions/index.js +45 -45
  113. package/bin/runners/lib/permissions/matrix-builder.js +198 -198
  114. package/bin/runners/lib/pkgjson.js +28 -28
  115. package/bin/runners/lib/policy.js +295 -295
  116. package/bin/runners/lib/preflight.js +142 -142
  117. package/bin/runners/lib/reality/correlation-detectors.js +359 -359
  118. package/bin/runners/lib/reality/index.js +318 -318
  119. package/bin/runners/lib/reality/request-hashing.js +416 -416
  120. package/bin/runners/lib/reality/request-mapper.js +453 -453
  121. package/bin/runners/lib/reality/safety-rails.js +463 -463
  122. package/bin/runners/lib/reality/semantic-snapshot.js +408 -408
  123. package/bin/runners/lib/reality/toast-detector.js +393 -393
  124. package/bin/runners/lib/reality-findings.js +84 -84
  125. package/bin/runners/lib/receipts.js +179 -179
  126. package/bin/runners/lib/redact.js +29 -29
  127. package/bin/runners/lib/replay/capsule-manager.js +154 -154
  128. package/bin/runners/lib/replay/index.js +263 -263
  129. package/bin/runners/lib/replay/player.js +348 -348
  130. package/bin/runners/lib/replay/recorder.js +331 -331
  131. package/bin/runners/lib/report-output.js +187 -187
  132. package/bin/runners/lib/report.js +135 -135
  133. package/bin/runners/lib/route-detection.js +1140 -1140
  134. package/bin/runners/lib/sandbox/index.js +59 -59
  135. package/bin/runners/lib/sandbox/proof-chain.js +399 -399
  136. package/bin/runners/lib/sandbox/sandbox-runner.js +205 -205
  137. package/bin/runners/lib/sandbox/worktree.js +174 -174
  138. package/bin/runners/lib/scan-output.js +525 -190
  139. package/bin/runners/lib/schema-validator.js +350 -350
  140. package/bin/runners/lib/schemas/contracts.schema.json +160 -160
  141. package/bin/runners/lib/schemas/finding.schema.json +100 -100
  142. package/bin/runners/lib/schemas/mission-pack.schema.json +206 -206
  143. package/bin/runners/lib/schemas/proof-graph.schema.json +176 -176
  144. package/bin/runners/lib/schemas/reality-report.schema.json +162 -162
  145. package/bin/runners/lib/schemas/share-pack.schema.json +180 -180
  146. package/bin/runners/lib/schemas/ship-report.schema.json +117 -117
  147. package/bin/runners/lib/schemas/truthpack-v2.schema.json +303 -303
  148. package/bin/runners/lib/schemas/validator.js +438 -438
  149. package/bin/runners/lib/score-history.js +282 -282
  150. package/bin/runners/lib/share-pack.js +239 -239
  151. package/bin/runners/lib/snippets.js +67 -67
  152. package/bin/runners/lib/status-output.js +253 -253
  153. package/bin/runners/lib/terminal-ui.js +350 -350
  154. package/bin/runners/lib/upsell.js +510 -510
  155. package/bin/runners/lib/usage.js +153 -153
  156. package/bin/runners/lib/validate-patch.js +156 -156
  157. package/bin/runners/lib/verdict-engine.js +628 -628
  158. package/bin/runners/reality/engine.js +917 -917
  159. package/bin/runners/reality/flows.js +122 -122
  160. package/bin/runners/reality/report.js +378 -378
  161. package/bin/runners/reality/session.js +193 -193
  162. package/bin/runners/runGuard.js +168 -168
  163. package/bin/runners/runProof.zip +0 -0
  164. package/bin/runners/runProve.js +8 -0
  165. package/bin/runners/runReality.js +14 -0
  166. package/bin/runners/runScan.js +17 -1
  167. package/bin/runners/runTruth.js +15 -3
  168. package/bin/vibecheck.js +45 -20
  169. package/mcp-server/package.json +1 -1
  170. package/mcp-server/tier-auth.js +71 -16
  171. package/mcp-server/tools/index.js +72 -72
  172. package/mcp-server/vibecheck-mcp-server-3.2.0.tgz +0 -0
  173. package/package.json +1 -1
@@ -169,8 +169,8 @@ async function loadUserConfig() {
169
169
  * Determine tier from API key
170
170
  * Matches CLI entitlements-v2.js logic
171
171
  */
172
- function getTierFromApiKey(apiKey) {
173
- if (!apiKey) return 'free';
172
+ async function getTierFromApiKey(apiKey) {
173
+ if (!apiKey) return null; // No API key = no access
174
174
 
175
175
  // Check API key prefix patterns (matches CLI)
176
176
  if (apiKey.startsWith('gr_starter_')) return 'starter';
@@ -178,16 +178,43 @@ function getTierFromApiKey(apiKey) {
178
178
  if (apiKey.startsWith('gr_compliance_') || apiKey.startsWith('gr_ent_')) return 'compliance';
179
179
  if (apiKey.startsWith('gr_free_')) return 'free';
180
180
 
181
- // Try to fetch from API (same as CLI)
182
- // For now, default to free - API lookup would happen in production
183
- return 'free'; // default for unknown keys
184
- }
181
+ // Try to validate with API
182
+ try {
183
+ const response = await fetch('https://api.vibecheckai.dev/whoami', {
184
+ headers: {
185
+ 'Authorization': `Bearer ${apiKey}`,
186
+ 'Content-Type': 'application/json',
187
+ },
188
+ });
189
+
190
+ if (!response.ok) {
191
+ return null; // Invalid API key
192
+ }
193
+
194
+ const data = await response.json();
195
+
196
+ // Map API response to tier
197
+ switch (data.plan?.toLowerCase()) {
198
+ case 'starter':
199
+ return 'starter';
200
+ case 'pro':
201
+ return 'pro';
202
+ case 'compliance':
203
+ return 'compliance';
204
+ default:
205
+ return 'free';
206
+ }
207
+ } catch (error) {
208
+ console.error('API validation failed:', error);
209
+ return null; // On error, deny access
210
+ }
211
+ } // default for unknown keys
185
212
 
186
213
  /**
187
214
  * Check if user has access to a specific feature
188
215
  * Matches CLI entitlements-v2.js logic
189
216
  */
190
- export async function checkFeatureAccess(featureName, providedApiKey = null) {
217
+ export async function getFeatureAccessStatus(featureName, providedApiKey = null) {
191
218
  // Try to load user config
192
219
  const userConfig = await loadUserConfig();
193
220
  const apiKey = providedApiKey || userConfig?.apiKey;
@@ -195,13 +222,22 @@ export async function checkFeatureAccess(featureName, providedApiKey = null) {
195
222
  if (!apiKey) {
196
223
  return {
197
224
  hasAccess: false,
198
- tier: 'free',
199
- reason: 'No API key provided. Run: vibecheck auth --key YOUR_API_KEY',
200
- upgradeUrl: 'https://vibecheckai.dev/pricing'
225
+ tier: null,
226
+ reason: 'No API key provided. Please set your API key with `vibecheck login`.',
227
+ upgradeUrl: 'https://vibecheckai.dev'
201
228
  };
202
229
  }
203
230
 
204
- const currentTier = getTierFromApiKey(apiKey);
231
+ const currentTier = await getTierFromApiKey(apiKey);
232
+
233
+ if (!currentTier) {
234
+ return {
235
+ hasAccess: false,
236
+ tier: null,
237
+ reason: 'Invalid API key. Please check your API key or get a new one at https://vibecheckai.dev',
238
+ upgradeUrl: 'https://vibecheckai.dev'
239
+ };
240
+ }
205
241
  const currentTierConfig = TIERS[currentTier];
206
242
 
207
243
  // Find which tier has this feature
@@ -222,7 +258,7 @@ export async function checkFeatureAccess(featureName, providedApiKey = null) {
222
258
  hasAccess: false,
223
259
  tier: currentTier,
224
260
  reason: `${featureName} is not available in any tier`,
225
- upgradeUrl: 'https://vibecheckai.dev/pricing'
261
+ upgradeUrl: 'https://vibecheckai.dev'
226
262
  };
227
263
  }
228
264
 
@@ -235,7 +271,7 @@ export async function checkFeatureAccess(featureName, providedApiKey = null) {
235
271
  tier: currentTier,
236
272
  requiredTier,
237
273
  reason: `${featureName} requires ${requiredTierConfig.name} tier ($${requiredTierConfig.price}/mo) or higher. Current tier: ${currentTierConfig.name}`,
238
- upgradeUrl: 'https://vibecheckai.dev/pricing'
274
+ upgradeUrl: 'https://vibecheckai.dev'
239
275
  };
240
276
  }
241
277
 
@@ -273,11 +309,30 @@ export function withTierCheck(featureName, handler) {
273
309
  * Check if user has access to a specific MCP tool
274
310
  * MCP tools have specific tier requirements separate from CLI features
275
311
  */
276
- export async function checkMcpToolAccess(toolName, providedApiKey = null) {
312
+ export async function getMcpToolAccess(toolName, providedApiKey = null) {
277
313
  const userConfig = await loadUserConfig();
278
314
  const apiKey = providedApiKey || userConfig?.apiKey;
279
315
 
280
- const currentTier = getTierFromApiKey(apiKey);
316
+ if (!apiKey) {
317
+ return {
318
+ hasAccess: false,
319
+ tier: null,
320
+ reason: 'No API key provided. Please set your API key with `vibecheck login`.',
321
+ upgradeUrl: 'https://vibecheckai.dev'
322
+ };
323
+ }
324
+
325
+ const currentTier = await getTierFromApiKey(apiKey);
326
+
327
+ if (!currentTier) {
328
+ return {
329
+ hasAccess: false,
330
+ tier: null,
331
+ reason: 'Invalid API key. Please check your API key or get a new one at https://vibecheckai.dev',
332
+ upgradeUrl: 'https://vibecheckai.dev'
333
+ };
334
+ }
335
+
281
336
  const currentTierConfig = TIERS[currentTier];
282
337
 
283
338
  // Check if tool is allowed for current tier
@@ -322,7 +377,7 @@ export async function checkMcpToolAccess(toolName, providedApiKey = null) {
322
377
  reason: requiredTierConfig
323
378
  ? `${toolName} requires ${requiredTierConfig.name} tier ($${requiredTierConfig.price}/mo). Current: ${currentTierConfig.name}`
324
379
  : `${toolName} is not available`,
325
- upgradeUrl: 'https://vibecheckai.dev/pricing'
380
+ upgradeUrl: 'https://vibecheckai.dev'
326
381
  };
327
382
  }
328
383
 
@@ -1,72 +1,72 @@
1
- /**
2
- * MCP Tools Index - Single Entry Point for All Tools
3
- *
4
- * This module exports all MCP tools in a unified structure.
5
- * Internal modules are organized by category but presented as one toolset.
6
- *
7
- * Tool Categories:
8
- * - Core: scan, ship, reality, fix, prove, report
9
- * - Truth: ctx, guard, validate_claim, compile_context
10
- * - AI: checkpoint, architect, intelligence
11
- *
12
- * Usage:
13
- * import { ALL_TOOLS, handleTool } from './tools/index.js';
14
- */
15
-
16
- // Re-export consolidated tools as the primary interface
17
- export { CONSOLIDATED_TOOLS, handleConsolidatedTool } from '../consolidated-tools.js';
18
-
19
- // Re-export truth firewall (hallucination stopper)
20
- export { TRUTH_FIREWALL_TOOLS, handleTruthFirewallTool } from '../truth-firewall-tools.js';
21
-
22
- // Re-export truth context
23
- export { TRUTH_CONTEXT_TOOLS, handleTruthContextTool } from '../truth-context.js';
24
-
25
- /**
26
- * Get all recommended tools (consolidated + truth firewall)
27
- */
28
- export function getRecommendedTools() {
29
- const { CONSOLIDATED_TOOLS } = require('../consolidated-tools.js');
30
- const { TRUTH_FIREWALL_TOOLS } = require('../truth-firewall-tools.js');
31
- return [...CONSOLIDATED_TOOLS, ...TRUTH_FIREWALL_TOOLS];
32
- }
33
-
34
- /**
35
- * Handle any tool call by routing to the appropriate handler
36
- */
37
- export async function handleToolCall(toolName, args) {
38
- // Route to consolidated handler first
39
- const { handleConsolidatedTool, CONSOLIDATED_TOOLS } = await import('../consolidated-tools.js');
40
- const consolidatedNames = CONSOLIDATED_TOOLS.map(t => t.name);
41
-
42
- if (consolidatedNames.includes(toolName)) {
43
- return handleConsolidatedTool(toolName, args);
44
- }
45
-
46
- // Route to truth firewall
47
- const { handleTruthFirewallTool, TRUTH_FIREWALL_TOOLS } = await import('../truth-firewall-tools.js');
48
- const firewallNames = TRUTH_FIREWALL_TOOLS.map(t => t.name);
49
-
50
- if (firewallNames.includes(toolName)) {
51
- return handleTruthFirewallTool(toolName, args);
52
- }
53
-
54
- // Route to truth context
55
- const { handleTruthContextTool, TRUTH_CONTEXT_TOOLS } = await import('../truth-context.js');
56
- const contextNames = TRUTH_CONTEXT_TOOLS.map(t => t.name);
57
-
58
- if (contextNames.includes(toolName)) {
59
- return handleTruthContextTool(toolName, args);
60
- }
61
-
62
- throw new Error(`Unknown tool: ${toolName}`);
63
- }
64
-
65
- /**
66
- * Tool categories for documentation
67
- */
68
- export const TOOL_CATEGORIES = {
69
- core: ['vibecheck.scan', 'vibecheck.ship', 'vibecheck.reality', 'vibecheck.fix', 'vibecheck.prove', 'vibecheck.report'],
70
- truth: ['vibecheck.ctx', 'vibecheck.get_truthpack', 'vibecheck.validate_claim', 'vibecheck.compile_context'],
71
- guard: ['vibecheck.guard', 'vibecheck.check_route', 'vibecheck.check_env', 'vibecheck.check_auth'],
72
- };
1
+ /**
2
+ * MCP Tools Index - Single Entry Point for All Tools
3
+ *
4
+ * This module exports all MCP tools in a unified structure.
5
+ * Internal modules are organized by category but presented as one toolset.
6
+ *
7
+ * Tool Categories:
8
+ * - Core: scan, ship, reality, fix, prove, report
9
+ * - Truth: ctx, guard, validate_claim, compile_context
10
+ * - AI: checkpoint, architect, intelligence
11
+ *
12
+ * Usage:
13
+ * import { ALL_TOOLS, handleTool } from './tools/index.js';
14
+ */
15
+
16
+ // Re-export consolidated tools as the primary interface
17
+ export { CONSOLIDATED_TOOLS, handleConsolidatedTool } from '../consolidated-tools.js';
18
+
19
+ // Re-export truth firewall (hallucination stopper)
20
+ export { TRUTH_FIREWALL_TOOLS, handleTruthFirewallTool } from '../truth-firewall-tools.js';
21
+
22
+ // Re-export truth context
23
+ export { TRUTH_CONTEXT_TOOLS, handleTruthContextTool } from '../truth-context.js';
24
+
25
+ /**
26
+ * Get all recommended tools (consolidated + truth firewall)
27
+ */
28
+ export function getRecommendedTools() {
29
+ const { CONSOLIDATED_TOOLS } = require('../consolidated-tools.js');
30
+ const { TRUTH_FIREWALL_TOOLS } = require('../truth-firewall-tools.js');
31
+ return [...CONSOLIDATED_TOOLS, ...TRUTH_FIREWALL_TOOLS];
32
+ }
33
+
34
+ /**
35
+ * Handle any tool call by routing to the appropriate handler
36
+ */
37
+ export async function handleToolCall(toolName, args) {
38
+ // Route to consolidated handler first
39
+ const { handleConsolidatedTool, CONSOLIDATED_TOOLS } = await import('../consolidated-tools.js');
40
+ const consolidatedNames = CONSOLIDATED_TOOLS.map(t => t.name);
41
+
42
+ if (consolidatedNames.includes(toolName)) {
43
+ return handleConsolidatedTool(toolName, args);
44
+ }
45
+
46
+ // Route to truth firewall
47
+ const { handleTruthFirewallTool, TRUTH_FIREWALL_TOOLS } = await import('../truth-firewall-tools.js');
48
+ const firewallNames = TRUTH_FIREWALL_TOOLS.map(t => t.name);
49
+
50
+ if (firewallNames.includes(toolName)) {
51
+ return handleTruthFirewallTool(toolName, args);
52
+ }
53
+
54
+ // Route to truth context
55
+ const { handleTruthContextTool, TRUTH_CONTEXT_TOOLS } = await import('../truth-context.js');
56
+ const contextNames = TRUTH_CONTEXT_TOOLS.map(t => t.name);
57
+
58
+ if (contextNames.includes(toolName)) {
59
+ return handleTruthContextTool(toolName, args);
60
+ }
61
+
62
+ throw new Error(`Unknown tool: ${toolName}`);
63
+ }
64
+
65
+ /**
66
+ * Tool categories for documentation
67
+ */
68
+ export const TOOL_CATEGORIES = {
69
+ core: ['vibecheck.scan', 'vibecheck.ship', 'vibecheck.reality', 'vibecheck.fix', 'vibecheck.prove', 'vibecheck.report'],
70
+ truth: ['vibecheck.ctx', 'vibecheck.get_truthpack', 'vibecheck.validate_claim', 'vibecheck.compile_context'],
71
+ guard: ['vibecheck.guard', 'vibecheck.check_route', 'vibecheck.check_env', 'vibecheck.check_auth'],
72
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibecheckai/cli",
3
- "version": "3.2.3",
3
+ "version": "3.2.5",
4
4
  "description": "Vibecheck CLI - Ship with confidence. One verdict: SHIP | WARN | BLOCK.",
5
5
  "main": "bin/vibecheck.js",
6
6
  "bin": {