@vibecheckai/cli 3.5.0 → 3.5.2
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/bin/registry.js +214 -237
- package/bin/runners/cli-utils.js +33 -2
- package/bin/runners/context/analyzer.js +52 -1
- package/bin/runners/context/generators/cursor.js +2 -49
- package/bin/runners/context/git-context.js +3 -1
- package/bin/runners/context/team-conventions.js +33 -7
- package/bin/runners/lib/analysis-core.js +25 -5
- package/bin/runners/lib/analyzers.js +431 -481
- package/bin/runners/lib/default-config.js +127 -0
- package/bin/runners/lib/doctor/modules/security.js +3 -1
- package/bin/runners/lib/engine/ast-cache.js +210 -0
- package/bin/runners/lib/engine/auth-extractor.js +211 -0
- package/bin/runners/lib/engine/billing-extractor.js +112 -0
- package/bin/runners/lib/engine/enforcement-extractor.js +100 -0
- package/bin/runners/lib/engine/env-extractor.js +207 -0
- package/bin/runners/lib/engine/express-extractor.js +208 -0
- package/bin/runners/lib/engine/extractors.js +849 -0
- package/bin/runners/lib/engine/index.js +207 -0
- package/bin/runners/lib/engine/repo-index.js +514 -0
- package/bin/runners/lib/engine/types.js +124 -0
- package/bin/runners/lib/engines/accessibility-engine.js +18 -218
- package/bin/runners/lib/engines/api-consistency-engine.js +30 -335
- package/bin/runners/lib/engines/cross-file-analysis-engine.js +27 -292
- package/bin/runners/lib/engines/empty-catch-engine.js +17 -127
- package/bin/runners/lib/engines/mock-data-engine.js +10 -53
- package/bin/runners/lib/engines/performance-issues-engine.js +36 -176
- package/bin/runners/lib/engines/security-vulnerabilities-engine.js +54 -382
- package/bin/runners/lib/engines/type-aware-engine.js +39 -263
- package/bin/runners/lib/engines/vibecheck-engines/index.js +13 -122
- package/bin/runners/lib/engines/vibecheck-engines/lib/ast-cache.js +164 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/code-quality-engine.js +291 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/console-logs-engine.js +83 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/dead-code-engine.js +198 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/deprecated-api-engine.js +275 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/empty-catch-engine.js +167 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/file-filter.js +217 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/hardcoded-secrets-engine.js +73 -373
- package/bin/runners/lib/engines/vibecheck-engines/lib/mock-data-engine.js +140 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/parallel-processor.js +164 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/performance-issues-engine.js +234 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/type-aware-engine.js +217 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/unsafe-regex-engine.js +78 -0
- package/bin/runners/lib/entitlements-v2.js +73 -97
- package/bin/runners/lib/error-handler.js +44 -3
- package/bin/runners/lib/error-messages.js +289 -0
- package/bin/runners/lib/evidence-pack.js +7 -1
- package/bin/runners/lib/finding-id.js +69 -0
- package/bin/runners/lib/finding-sorter.js +89 -0
- package/bin/runners/lib/html-proof-report.js +700 -350
- package/bin/runners/lib/missions/plan.js +6 -46
- package/bin/runners/lib/missions/templates.js +0 -232
- package/bin/runners/lib/next-action.js +560 -0
- package/bin/runners/lib/prerequisites.js +149 -0
- package/bin/runners/lib/route-detection.js +137 -68
- package/bin/runners/lib/scan-output.js +91 -76
- package/bin/runners/lib/scan-runner.js +135 -0
- package/bin/runners/lib/schemas/ajv-validator.js +464 -0
- package/bin/runners/lib/schemas/error-envelope.schema.json +105 -0
- package/bin/runners/lib/schemas/finding-v3.schema.json +151 -0
- package/bin/runners/lib/schemas/report-artifact.schema.json +120 -0
- package/bin/runners/lib/schemas/run-request.schema.json +108 -0
- package/bin/runners/lib/schemas/validator.js +27 -0
- package/bin/runners/lib/schemas/verdict.schema.json +140 -0
- package/bin/runners/lib/ship-output-enterprise.js +23 -23
- package/bin/runners/lib/ship-output.js +75 -31
- package/bin/runners/lib/terminal-ui.js +6 -113
- package/bin/runners/lib/truth.js +351 -10
- package/bin/runners/lib/unified-cli-output.js +430 -603
- package/bin/runners/lib/unified-output.js +13 -9
- package/bin/runners/runAIAgent.js +10 -5
- package/bin/runners/runAgent.js +0 -3
- package/bin/runners/runAllowlist.js +389 -0
- package/bin/runners/runApprove.js +0 -33
- package/bin/runners/runAuth.js +73 -45
- package/bin/runners/runCheckpoint.js +51 -11
- package/bin/runners/runClassify.js +85 -21
- package/bin/runners/runContext.js +0 -3
- package/bin/runners/runDoctor.js +41 -28
- package/bin/runners/runEvidencePack.js +362 -0
- package/bin/runners/runFirewall.js +0 -3
- package/bin/runners/runFirewallHook.js +0 -3
- package/bin/runners/runFix.js +66 -76
- package/bin/runners/runGuard.js +18 -411
- package/bin/runners/runInit.js +113 -30
- package/bin/runners/runLabs.js +424 -0
- package/bin/runners/runMcp.js +19 -25
- package/bin/runners/runPolish.js +64 -240
- package/bin/runners/runPromptFirewall.js +12 -5
- package/bin/runners/runProve.js +57 -22
- package/bin/runners/runQuickstart.js +531 -0
- package/bin/runners/runReality.js +59 -68
- package/bin/runners/runReport.js +38 -33
- package/bin/runners/runRuntime.js +8 -5
- package/bin/runners/runScan.js +1413 -190
- package/bin/runners/runShip.js +113 -719
- package/bin/runners/runTruth.js +0 -3
- package/bin/runners/runValidate.js +13 -9
- package/bin/runners/runWatch.js +23 -14
- package/bin/scan.js +6 -1
- package/bin/vibecheck.js +204 -185
- package/mcp-server/deprecation-middleware.js +282 -0
- package/mcp-server/handlers/index.ts +15 -0
- package/mcp-server/handlers/tool-handler.ts +554 -0
- package/mcp-server/index-v1.js +698 -0
- package/mcp-server/index.js +210 -238
- package/mcp-server/lib/cache-wrapper.cjs +383 -0
- package/mcp-server/lib/error-envelope.js +138 -0
- package/mcp-server/lib/executor.ts +499 -0
- package/mcp-server/lib/index.ts +19 -0
- package/mcp-server/lib/rate-limiter.js +166 -0
- package/mcp-server/lib/sandbox.test.ts +519 -0
- package/mcp-server/lib/sandbox.ts +395 -0
- package/mcp-server/lib/types.ts +267 -0
- package/mcp-server/package.json +12 -3
- package/mcp-server/registry/tool-registry.js +794 -0
- package/mcp-server/registry/tools.json +605 -0
- package/mcp-server/registry.test.ts +334 -0
- package/mcp-server/tests/tier-gating.test.js +297 -0
- package/mcp-server/tier-auth.js +378 -45
- package/mcp-server/tools-v3.js +353 -442
- package/mcp-server/tsconfig.json +37 -0
- package/mcp-server/vibecheck-2.0-tools.js +14 -1
- package/package.json +1 -1
- package/bin/runners/lib/agent-firewall/learning/learning-engine.js +0 -849
- package/bin/runners/lib/audit-logger.js +0 -532
- package/bin/runners/lib/authority/authorities/architecture.js +0 -364
- package/bin/runners/lib/authority/authorities/compliance.js +0 -341
- package/bin/runners/lib/authority/authorities/human.js +0 -343
- package/bin/runners/lib/authority/authorities/quality.js +0 -420
- package/bin/runners/lib/authority/authorities/security.js +0 -228
- package/bin/runners/lib/authority/index.js +0 -293
- package/bin/runners/lib/bundle/bundle-intelligence.js +0 -846
- package/bin/runners/lib/cli-charts.js +0 -368
- package/bin/runners/lib/cli-config-display.js +0 -405
- package/bin/runners/lib/cli-demo.js +0 -275
- package/bin/runners/lib/cli-errors.js +0 -438
- package/bin/runners/lib/cli-help-formatter.js +0 -439
- package/bin/runners/lib/cli-interactive-menu.js +0 -509
- package/bin/runners/lib/cli-prompts.js +0 -441
- package/bin/runners/lib/cli-scan-cards.js +0 -362
- package/bin/runners/lib/compliance-reporter.js +0 -710
- package/bin/runners/lib/conductor/index.js +0 -671
- package/bin/runners/lib/easy/README.md +0 -123
- package/bin/runners/lib/easy/index.js +0 -140
- package/bin/runners/lib/easy/interactive-wizard.js +0 -788
- package/bin/runners/lib/easy/one-click-firewall.js +0 -564
- package/bin/runners/lib/easy/zero-config-reality.js +0 -714
- package/bin/runners/lib/engines/async-patterns-engine.js +0 -444
- package/bin/runners/lib/engines/bundle-size-engine.js +0 -433
- package/bin/runners/lib/engines/confidence-scoring.js +0 -276
- package/bin/runners/lib/engines/context-detection.js +0 -264
- package/bin/runners/lib/engines/database-patterns-engine.js +0 -429
- package/bin/runners/lib/engines/duplicate-code-engine.js +0 -354
- package/bin/runners/lib/engines/env-variables-engine.js +0 -458
- package/bin/runners/lib/engines/error-handling-engine.js +0 -437
- package/bin/runners/lib/engines/false-positive-prevention.js +0 -630
- package/bin/runners/lib/engines/framework-adapters/index.js +0 -607
- package/bin/runners/lib/engines/framework-detection.js +0 -508
- package/bin/runners/lib/engines/import-order-engine.js +0 -429
- package/bin/runners/lib/engines/naming-conventions-engine.js +0 -544
- package/bin/runners/lib/engines/noise-reduction-engine.js +0 -452
- package/bin/runners/lib/engines/orchestrator.js +0 -334
- package/bin/runners/lib/engines/react-patterns-engine.js +0 -457
- package/bin/runners/lib/engines/vibecheck-engines/lib/ai-hallucination-engine.js +0 -806
- package/bin/runners/lib/engines/vibecheck-engines/lib/smart-fix-engine.js +0 -577
- package/bin/runners/lib/engines/vibecheck-engines/lib/vibe-score-engine.js +0 -543
- package/bin/runners/lib/engines/vibecheck-engines.js +0 -514
- package/bin/runners/lib/enhanced-features/index.js +0 -305
- package/bin/runners/lib/enhanced-output.js +0 -631
- package/bin/runners/lib/enterprise.js +0 -300
- package/bin/runners/lib/firewall/command-validator.js +0 -351
- package/bin/runners/lib/firewall/config.js +0 -341
- package/bin/runners/lib/firewall/content-validator.js +0 -519
- package/bin/runners/lib/firewall/index.js +0 -101
- package/bin/runners/lib/firewall/path-validator.js +0 -256
- package/bin/runners/lib/intelligence/cross-repo-intelligence.js +0 -817
- package/bin/runners/lib/mcp-utils.js +0 -425
- package/bin/runners/lib/output/index.js +0 -1022
- package/bin/runners/lib/policy-engine.js +0 -652
- package/bin/runners/lib/polish/autofix/accessibility-fixes.js +0 -333
- package/bin/runners/lib/polish/autofix/async-handlers.js +0 -273
- package/bin/runners/lib/polish/autofix/dead-code.js +0 -280
- package/bin/runners/lib/polish/autofix/imports-optimizer.js +0 -344
- package/bin/runners/lib/polish/autofix/index.js +0 -200
- package/bin/runners/lib/polish/autofix/remove-consoles.js +0 -209
- package/bin/runners/lib/polish/autofix/strengthen-types.js +0 -245
- package/bin/runners/lib/polish/backend-checks.js +0 -148
- package/bin/runners/lib/polish/documentation-checks.js +0 -111
- package/bin/runners/lib/polish/frontend-checks.js +0 -168
- package/bin/runners/lib/polish/index.js +0 -71
- package/bin/runners/lib/polish/infrastructure-checks.js +0 -131
- package/bin/runners/lib/polish/library-detection.js +0 -175
- package/bin/runners/lib/polish/performance-checks.js +0 -100
- package/bin/runners/lib/polish/security-checks.js +0 -148
- package/bin/runners/lib/polish/utils.js +0 -203
- package/bin/runners/lib/prompt-builder.js +0 -540
- package/bin/runners/lib/proof-certificate.js +0 -634
- package/bin/runners/lib/reality/accessibility-audit.js +0 -946
- package/bin/runners/lib/reality/api-contract-validator.js +0 -1012
- package/bin/runners/lib/reality/chaos-engineering.js +0 -1084
- package/bin/runners/lib/reality/performance-tracker.js +0 -1077
- package/bin/runners/lib/reality/scenario-generator.js +0 -1404
- package/bin/runners/lib/reality/visual-regression.js +0 -852
- package/bin/runners/lib/reality-profiler.js +0 -717
- package/bin/runners/lib/replay/flight-recorder-viewer.js +0 -1160
- package/bin/runners/lib/review/ai-code-review.js +0 -832
- package/bin/runners/lib/rules/custom-rule-engine.js +0 -985
- package/bin/runners/lib/sbom-generator.js +0 -641
- package/bin/runners/lib/scan-output-enhanced.js +0 -512
- package/bin/runners/lib/security/owasp-scanner.js +0 -939
- package/bin/runners/lib/validators/contract-validator.js +0 -283
- package/bin/runners/lib/validators/dead-export-detector.js +0 -279
- package/bin/runners/lib/validators/dep-audit.js +0 -245
- package/bin/runners/lib/validators/env-validator.js +0 -319
- package/bin/runners/lib/validators/index.js +0 -120
- package/bin/runners/lib/validators/license-checker.js +0 -252
- package/bin/runners/lib/validators/route-validator.js +0 -290
- package/bin/runners/runAuthority.js +0 -528
- package/bin/runners/runConductor.js +0 -772
- package/bin/runners/runContainer.js +0 -366
- package/bin/runners/runEasy.js +0 -410
- package/bin/runners/runIaC.js +0 -372
- package/bin/runners/runVibe.js +0 -791
- package/mcp-server/tools.js +0 -495
package/mcp-server/tools.js
DELETED
|
@@ -1,495 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* VibeCheck MCP Tools - Consolidated Tool Definitions
|
|
3
|
-
*
|
|
4
|
-
* Single source of truth for all MCP tool definitions.
|
|
5
|
-
* Each tool maps directly to a CLI command.
|
|
6
|
-
*
|
|
7
|
-
* @version 2.0.0
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
"use strict";
|
|
11
|
-
|
|
12
|
-
import { execFile } from "child_process";
|
|
13
|
-
import { promisify } from "util";
|
|
14
|
-
import path from "path";
|
|
15
|
-
import { fileURLToPath } from "url";
|
|
16
|
-
|
|
17
|
-
const execFileAsync = promisify(execFile);
|
|
18
|
-
|
|
19
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
20
|
-
const __dirname = path.dirname(__filename);
|
|
21
|
-
|
|
22
|
-
const CLI_PATH = path.join(__dirname, "..", "bin", "vibecheck.js");
|
|
23
|
-
|
|
24
|
-
// ============================================================================
|
|
25
|
-
// HELPER: Convert params object to CLI args
|
|
26
|
-
// ============================================================================
|
|
27
|
-
|
|
28
|
-
function toArgs(params) {
|
|
29
|
-
if (!params || typeof params !== "object") return [];
|
|
30
|
-
|
|
31
|
-
return Object.entries(params).flatMap(([key, value]) => {
|
|
32
|
-
// Skip null/undefined
|
|
33
|
-
if (value === null || value === undefined) return [];
|
|
34
|
-
|
|
35
|
-
// Boolean flags
|
|
36
|
-
if (typeof value === "boolean") {
|
|
37
|
-
return value ? [`--${key}`] : [];
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
// Arrays - repeat the flag
|
|
41
|
-
if (Array.isArray(value)) {
|
|
42
|
-
return value.flatMap(item => [`--${key}`, String(item)]);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// String/number values
|
|
46
|
-
return [`--${key}`, String(value)];
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// ============================================================================
|
|
51
|
-
// HELPER: Execute CLI command
|
|
52
|
-
// ============================================================================
|
|
53
|
-
|
|
54
|
-
async function execCLI(command, params = {}, options = {}) {
|
|
55
|
-
const args = [command, ...toArgs(params), "--json"];
|
|
56
|
-
const timeout = options.timeout || 60000;
|
|
57
|
-
|
|
58
|
-
try {
|
|
59
|
-
const { stdout, stderr } = await execFileAsync("node", [CLI_PATH, ...args], {
|
|
60
|
-
maxBuffer: 10 * 1024 * 1024,
|
|
61
|
-
timeout,
|
|
62
|
-
env: {
|
|
63
|
-
...process.env,
|
|
64
|
-
VIBECHECK_SKIP_AUTH: "1",
|
|
65
|
-
FORCE_COLOR: "0",
|
|
66
|
-
},
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
try {
|
|
70
|
-
return JSON.parse(stdout);
|
|
71
|
-
} catch {
|
|
72
|
-
return { success: true, output: stdout, stderr };
|
|
73
|
-
}
|
|
74
|
-
} catch (error) {
|
|
75
|
-
return {
|
|
76
|
-
success: false,
|
|
77
|
-
error: error.message,
|
|
78
|
-
code: error.code,
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
// ============================================================================
|
|
84
|
-
// TOOL DEFINITIONS
|
|
85
|
-
// ============================================================================
|
|
86
|
-
|
|
87
|
-
export const tools = [
|
|
88
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
89
|
-
// ANALYSIS
|
|
90
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
91
|
-
{
|
|
92
|
-
name: "vibecheck.scan",
|
|
93
|
-
description: "Quick code lint - 5 core engines, fast feedback. Use for rapid iteration.",
|
|
94
|
-
tier: "free",
|
|
95
|
-
inputSchema: {
|
|
96
|
-
type: "object",
|
|
97
|
-
properties: {
|
|
98
|
-
path: {
|
|
99
|
-
type: "string",
|
|
100
|
-
description: "Target directory to scan",
|
|
101
|
-
default: "."
|
|
102
|
-
},
|
|
103
|
-
},
|
|
104
|
-
},
|
|
105
|
-
handler: async (params) => execCLI("scan", params),
|
|
106
|
-
},
|
|
107
|
-
|
|
108
|
-
{
|
|
109
|
-
name: "vibecheck.ship",
|
|
110
|
-
description: "Comprehensive analysis - all 15+ engines, route validation, contract checks, verdict (SHIP/WARN/BLOCK), and proof certificate. Use before deployment.",
|
|
111
|
-
tier: "pro",
|
|
112
|
-
inputSchema: {
|
|
113
|
-
type: "object",
|
|
114
|
-
properties: {
|
|
115
|
-
path: { type: "string", default: "." },
|
|
116
|
-
strict: {
|
|
117
|
-
type: "boolean",
|
|
118
|
-
default: false,
|
|
119
|
-
description: "Fail on warnings (default: fail on errors only)",
|
|
120
|
-
},
|
|
121
|
-
},
|
|
122
|
-
},
|
|
123
|
-
handler: async (params) => execCLI("ship", params, { timeout: 300000 }),
|
|
124
|
-
},
|
|
125
|
-
|
|
126
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
127
|
-
// REPAIR
|
|
128
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
129
|
-
{
|
|
130
|
-
name: "vibecheck.fix",
|
|
131
|
-
description: "AI-powered fix for specific finding. Generates fix suggestions or applies them.",
|
|
132
|
-
tier: "pro",
|
|
133
|
-
inputSchema: {
|
|
134
|
-
type: "object",
|
|
135
|
-
properties: {
|
|
136
|
-
file: { type: "string", description: "File containing the issue" },
|
|
137
|
-
line: { type: "number", description: "Line number of the issue" },
|
|
138
|
-
apply: {
|
|
139
|
-
type: "boolean",
|
|
140
|
-
default: false,
|
|
141
|
-
description: "Apply the fix (default: show suggestion only)",
|
|
142
|
-
},
|
|
143
|
-
},
|
|
144
|
-
required: ["file", "line"],
|
|
145
|
-
},
|
|
146
|
-
handler: async (params) => execCLI("fix", params),
|
|
147
|
-
},
|
|
148
|
-
|
|
149
|
-
{
|
|
150
|
-
name: "vibecheck.polish",
|
|
151
|
-
description: "Production hardening - remove console logs, strengthen types, add error boundaries, optimize imports. Automated fixes without LLM.",
|
|
152
|
-
tier: "pro",
|
|
153
|
-
inputSchema: {
|
|
154
|
-
type: "object",
|
|
155
|
-
properties: {
|
|
156
|
-
path: { type: "string", default: "." },
|
|
157
|
-
apply: {
|
|
158
|
-
type: "boolean",
|
|
159
|
-
default: false,
|
|
160
|
-
description: "Apply changes (default: dry-run)",
|
|
161
|
-
},
|
|
162
|
-
passes: {
|
|
163
|
-
type: "array",
|
|
164
|
-
items: { type: "string" },
|
|
165
|
-
description: "Specific passes to run (e.g., ['remove-consoles', 'strengthen-types'])",
|
|
166
|
-
},
|
|
167
|
-
},
|
|
168
|
-
},
|
|
169
|
-
handler: async (params) => execCLI("polish", params),
|
|
170
|
-
},
|
|
171
|
-
|
|
172
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
173
|
-
// VERIFICATION
|
|
174
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
175
|
-
{
|
|
176
|
-
name: "vibecheck.reality",
|
|
177
|
-
description: "Browser-based runtime verification using Playwright. Validates that the app works as expected.",
|
|
178
|
-
tier: "pro",
|
|
179
|
-
inputSchema: {
|
|
180
|
-
type: "object",
|
|
181
|
-
properties: {
|
|
182
|
-
url: { type: "string", description: "URL to test" },
|
|
183
|
-
headless: { type: "boolean", default: true },
|
|
184
|
-
screenshot: { type: "boolean", default: false },
|
|
185
|
-
},
|
|
186
|
-
},
|
|
187
|
-
handler: async (params) => execCLI("reality", params, { timeout: 300000 }),
|
|
188
|
-
},
|
|
189
|
-
|
|
190
|
-
{
|
|
191
|
-
name: "vibecheck.prove",
|
|
192
|
-
description: "Full proof loop with evidence pack - combines scan, reality check, and generates cryptographic proof certificate.",
|
|
193
|
-
tier: "pro",
|
|
194
|
-
inputSchema: {
|
|
195
|
-
type: "object",
|
|
196
|
-
properties: {
|
|
197
|
-
path: { type: "string", default: "." },
|
|
198
|
-
},
|
|
199
|
-
},
|
|
200
|
-
handler: async (params) => execCLI("prove", params, { timeout: 600000 }),
|
|
201
|
-
},
|
|
202
|
-
|
|
203
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
204
|
-
// AUTOMATION
|
|
205
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
206
|
-
{
|
|
207
|
-
name: "vibecheck.gate",
|
|
208
|
-
description: "CI/CD deployment gate - returns PASS/FAIL based on score threshold. Blocks deploys that don't meet quality bar.",
|
|
209
|
-
tier: "pro",
|
|
210
|
-
inputSchema: {
|
|
211
|
-
type: "object",
|
|
212
|
-
properties: {
|
|
213
|
-
path: { type: "string", default: "." },
|
|
214
|
-
threshold: {
|
|
215
|
-
type: "number",
|
|
216
|
-
default: 70,
|
|
217
|
-
description: "Minimum score to pass (0-100)",
|
|
218
|
-
},
|
|
219
|
-
},
|
|
220
|
-
},
|
|
221
|
-
handler: async (params) => execCLI("gate", params),
|
|
222
|
-
},
|
|
223
|
-
|
|
224
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
225
|
-
// FIREWALL (Agent Guard)
|
|
226
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
227
|
-
{
|
|
228
|
-
name: "vibecheck.firewall",
|
|
229
|
-
description: "Validate AI agent action before execution. Checks for forbidden paths, scope violations, dangerous commands, and hallucination patterns.",
|
|
230
|
-
tier: "free", // observe mode is free, enforce requires pro
|
|
231
|
-
inputSchema: {
|
|
232
|
-
type: "object",
|
|
233
|
-
properties: {
|
|
234
|
-
mode: {
|
|
235
|
-
type: "string",
|
|
236
|
-
enum: ["observe", "enforce"],
|
|
237
|
-
default: "observe",
|
|
238
|
-
description: "observe = log violations, enforce = block violations (PRO)",
|
|
239
|
-
},
|
|
240
|
-
action: {
|
|
241
|
-
type: "string",
|
|
242
|
-
enum: ["write", "delete", "execute"],
|
|
243
|
-
description: "Type of action being validated",
|
|
244
|
-
},
|
|
245
|
-
path: {
|
|
246
|
-
type: "string",
|
|
247
|
-
description: "File path being accessed",
|
|
248
|
-
},
|
|
249
|
-
content: {
|
|
250
|
-
type: "string",
|
|
251
|
-
description: "Content being written (for write actions)",
|
|
252
|
-
},
|
|
253
|
-
command: {
|
|
254
|
-
type: "string",
|
|
255
|
-
description: "Command being executed (for execute actions)",
|
|
256
|
-
},
|
|
257
|
-
},
|
|
258
|
-
required: ["action"],
|
|
259
|
-
},
|
|
260
|
-
handler: async (params) => execCLI("guard", params),
|
|
261
|
-
},
|
|
262
|
-
|
|
263
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
264
|
-
// CONDUCTOR (Multi-Agent Coordination)
|
|
265
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
266
|
-
{
|
|
267
|
-
name: "vibecheck.conductor.status",
|
|
268
|
-
description: "Get multi-agent coordination status - active agents, locks, pending proposals, conflicts.",
|
|
269
|
-
tier: "pro",
|
|
270
|
-
inputSchema: {
|
|
271
|
-
type: "object",
|
|
272
|
-
properties: {},
|
|
273
|
-
},
|
|
274
|
-
handler: async () => execCLI("conductor", { status: true }),
|
|
275
|
-
},
|
|
276
|
-
|
|
277
|
-
{
|
|
278
|
-
name: "vibecheck.conductor.register",
|
|
279
|
-
description: "Register AI agent with conductor for multi-agent coordination.",
|
|
280
|
-
tier: "pro",
|
|
281
|
-
inputSchema: {
|
|
282
|
-
type: "object",
|
|
283
|
-
properties: {
|
|
284
|
-
name: { type: "string", description: "Agent name/identifier" },
|
|
285
|
-
type: { type: "string", description: "Agent type (e.g., cursor, copilot, custom)" },
|
|
286
|
-
},
|
|
287
|
-
required: ["name"],
|
|
288
|
-
},
|
|
289
|
-
handler: async (params) => execCLI("conductor", { register: true, ...params }),
|
|
290
|
-
},
|
|
291
|
-
|
|
292
|
-
{
|
|
293
|
-
name: "vibecheck.conductor.lock",
|
|
294
|
-
description: "Acquire file lock to prevent concurrent edits by other agents.",
|
|
295
|
-
tier: "pro",
|
|
296
|
-
inputSchema: {
|
|
297
|
-
type: "object",
|
|
298
|
-
properties: {
|
|
299
|
-
agentId: { type: "string", description: "Your registered agent ID" },
|
|
300
|
-
file: { type: "string", description: "File path to lock" },
|
|
301
|
-
reason: { type: "string", description: "Why you need the lock" },
|
|
302
|
-
},
|
|
303
|
-
required: ["agentId", "file"],
|
|
304
|
-
},
|
|
305
|
-
handler: async (params) => execCLI("conductor", { lock: true, ...params }),
|
|
306
|
-
},
|
|
307
|
-
|
|
308
|
-
{
|
|
309
|
-
name: "vibecheck.conductor.unlock",
|
|
310
|
-
description: "Release file lock.",
|
|
311
|
-
tier: "pro",
|
|
312
|
-
inputSchema: {
|
|
313
|
-
type: "object",
|
|
314
|
-
properties: {
|
|
315
|
-
agentId: { type: "string", description: "Your registered agent ID" },
|
|
316
|
-
file: { type: "string", description: "File path to unlock" },
|
|
317
|
-
},
|
|
318
|
-
required: ["agentId", "file"],
|
|
319
|
-
},
|
|
320
|
-
handler: async (params) => execCLI("conductor", { unlock: true, ...params }),
|
|
321
|
-
},
|
|
322
|
-
|
|
323
|
-
{
|
|
324
|
-
name: "vibecheck.conductor.propose",
|
|
325
|
-
description: "Submit change proposal for conflict detection with other agents.",
|
|
326
|
-
tier: "pro",
|
|
327
|
-
inputSchema: {
|
|
328
|
-
type: "object",
|
|
329
|
-
properties: {
|
|
330
|
-
agentId: { type: "string", description: "Your registered agent ID" },
|
|
331
|
-
files: {
|
|
332
|
-
type: "array",
|
|
333
|
-
items: { type: "string" },
|
|
334
|
-
description: "Files you plan to modify",
|
|
335
|
-
},
|
|
336
|
-
description: { type: "string", description: "What you plan to change" },
|
|
337
|
-
},
|
|
338
|
-
required: ["agentId", "files"],
|
|
339
|
-
},
|
|
340
|
-
handler: async (params) => execCLI("conductor", { propose: true, ...params }),
|
|
341
|
-
},
|
|
342
|
-
|
|
343
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
344
|
-
// AUTHORITY
|
|
345
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
346
|
-
{
|
|
347
|
-
name: "vibecheck.authority.list",
|
|
348
|
-
description: "List available approval authorities (security, architecture, compliance, quality, human).",
|
|
349
|
-
tier: "free",
|
|
350
|
-
inputSchema: {
|
|
351
|
-
type: "object",
|
|
352
|
-
properties: {},
|
|
353
|
-
},
|
|
354
|
-
handler: async () => execCLI("authority", { list: true }),
|
|
355
|
-
},
|
|
356
|
-
|
|
357
|
-
{
|
|
358
|
-
name: "vibecheck.authority.approve",
|
|
359
|
-
description: "Request authority approval for changes. Returns APPROVED/REJECTED with findings.",
|
|
360
|
-
tier: "pro",
|
|
361
|
-
inputSchema: {
|
|
362
|
-
type: "object",
|
|
363
|
-
properties: {
|
|
364
|
-
authority: {
|
|
365
|
-
type: "string",
|
|
366
|
-
enum: ["security", "architecture", "compliance", "quality", "human"],
|
|
367
|
-
description: "Authority to request approval from",
|
|
368
|
-
},
|
|
369
|
-
files: {
|
|
370
|
-
type: "array",
|
|
371
|
-
items: { type: "string" },
|
|
372
|
-
description: "Files to review",
|
|
373
|
-
},
|
|
374
|
-
diff: {
|
|
375
|
-
type: "string",
|
|
376
|
-
description: "Git diff or change description",
|
|
377
|
-
},
|
|
378
|
-
},
|
|
379
|
-
required: ["authority"],
|
|
380
|
-
},
|
|
381
|
-
handler: async (params) => execCLI("authority", { approve: true, ...params }),
|
|
382
|
-
},
|
|
383
|
-
|
|
384
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
385
|
-
// SETUP
|
|
386
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
387
|
-
{
|
|
388
|
-
name: "vibecheck.context",
|
|
389
|
-
description: "Generate truthpack and IDE rules for your project. Creates .cursor/rules/, .vibecheck/truthpack.json, etc.",
|
|
390
|
-
tier: "free",
|
|
391
|
-
inputSchema: {
|
|
392
|
-
type: "object",
|
|
393
|
-
properties: {
|
|
394
|
-
path: { type: "string", default: "." },
|
|
395
|
-
format: {
|
|
396
|
-
type: "string",
|
|
397
|
-
enum: ["cursor", "windsurf", "copilot"],
|
|
398
|
-
default: "cursor",
|
|
399
|
-
description: "IDE format for generated rules",
|
|
400
|
-
},
|
|
401
|
-
},
|
|
402
|
-
},
|
|
403
|
-
handler: async (params) => execCLI("context", params),
|
|
404
|
-
},
|
|
405
|
-
|
|
406
|
-
{
|
|
407
|
-
name: "vibecheck.doctor",
|
|
408
|
-
description: "Environment diagnostics - check CLI installation, dependencies, auth status, etc.",
|
|
409
|
-
tier: "free",
|
|
410
|
-
inputSchema: {
|
|
411
|
-
type: "object",
|
|
412
|
-
properties: {},
|
|
413
|
-
},
|
|
414
|
-
handler: async () => execCLI("doctor", {}),
|
|
415
|
-
},
|
|
416
|
-
|
|
417
|
-
{
|
|
418
|
-
name: "vibecheck.report",
|
|
419
|
-
description: "Generate HTML or SARIF report from scan results.",
|
|
420
|
-
tier: "free",
|
|
421
|
-
inputSchema: {
|
|
422
|
-
type: "object",
|
|
423
|
-
properties: {
|
|
424
|
-
path: { type: "string", default: "." },
|
|
425
|
-
format: {
|
|
426
|
-
type: "string",
|
|
427
|
-
enum: ["html", "sarif", "json"],
|
|
428
|
-
default: "html",
|
|
429
|
-
},
|
|
430
|
-
output: { type: "string", description: "Output file path" },
|
|
431
|
-
},
|
|
432
|
-
},
|
|
433
|
-
handler: async (params) => execCLI("report", params),
|
|
434
|
-
},
|
|
435
|
-
];
|
|
436
|
-
|
|
437
|
-
// ============================================================================
|
|
438
|
-
// EXPORTS
|
|
439
|
-
// ============================================================================
|
|
440
|
-
|
|
441
|
-
/**
|
|
442
|
-
* Get all tool definitions (for ListTools)
|
|
443
|
-
*/
|
|
444
|
-
export function getToolDefinitions() {
|
|
445
|
-
return tools.map(t => ({
|
|
446
|
-
name: t.name,
|
|
447
|
-
description: t.description,
|
|
448
|
-
inputSchema: t.inputSchema,
|
|
449
|
-
}));
|
|
450
|
-
}
|
|
451
|
-
|
|
452
|
-
/**
|
|
453
|
-
* Get tool by name
|
|
454
|
-
*/
|
|
455
|
-
export function getTool(name) {
|
|
456
|
-
return tools.find(t => t.name === name);
|
|
457
|
-
}
|
|
458
|
-
|
|
459
|
-
/**
|
|
460
|
-
* Handle tool call
|
|
461
|
-
*/
|
|
462
|
-
export async function handleToolCall(name, args) {
|
|
463
|
-
const tool = getTool(name);
|
|
464
|
-
|
|
465
|
-
if (!tool) {
|
|
466
|
-
return {
|
|
467
|
-
success: false,
|
|
468
|
-
error: `Unknown tool: ${name}`,
|
|
469
|
-
};
|
|
470
|
-
}
|
|
471
|
-
|
|
472
|
-
try {
|
|
473
|
-
return await tool.handler(args);
|
|
474
|
-
} catch (error) {
|
|
475
|
-
return {
|
|
476
|
-
success: false,
|
|
477
|
-
error: error.message,
|
|
478
|
-
};
|
|
479
|
-
}
|
|
480
|
-
}
|
|
481
|
-
|
|
482
|
-
/**
|
|
483
|
-
* Get tools by tier
|
|
484
|
-
*/
|
|
485
|
-
export function getToolsByTier(tier) {
|
|
486
|
-
return tools.filter(t => t.tier === tier);
|
|
487
|
-
}
|
|
488
|
-
|
|
489
|
-
export default {
|
|
490
|
-
tools,
|
|
491
|
-
getToolDefinitions,
|
|
492
|
-
getTool,
|
|
493
|
-
handleToolCall,
|
|
494
|
-
getToolsByTier,
|
|
495
|
-
};
|