@vibecheckai/cli 3.9.1 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/bin/runners/context/generators/cursor-enhanced.js +99 -13
- package/mcp-server/.eslintrc.json +24 -0
- package/mcp-server/README.md +425 -135
- package/mcp-server/SPEC.md +583 -0
- package/mcp-server/configs/README.md +172 -0
- package/mcp-server/configs/claude-desktop-pro.json +31 -0
- package/mcp-server/configs/claude-desktop-with-workspace.json +25 -0
- package/mcp-server/configs/claude-desktop.json +19 -0
- package/mcp-server/configs/cursor-mcp.json +21 -0
- package/mcp-server/configs/windsurf-mcp.json +17 -0
- package/mcp-server/mcp-config.example.json +9 -0
- package/mcp-server/package-lock.json +1631 -0
- package/mcp-server/package.json +49 -34
- package/mcp-server/src/cli.ts +185 -0
- package/mcp-server/src/index.ts +85 -0
- package/mcp-server/src/server.ts +1933 -0
- package/mcp-server/src/services/cache-service.ts +466 -0
- package/mcp-server/src/services/cli-service.ts +345 -0
- package/mcp-server/src/services/context-manager.ts +717 -0
- package/mcp-server/src/services/firewall-service.ts +662 -0
- package/mcp-server/src/services/git-service.ts +671 -0
- package/mcp-server/src/services/index.ts +52 -0
- package/mcp-server/src/services/prompt-builder-service.ts +1031 -0
- package/mcp-server/src/services/session-service.ts +550 -0
- package/mcp-server/src/services/tier-service.ts +470 -0
- package/mcp-server/src/types.ts +351 -0
- package/mcp-server/tsconfig.json +16 -27
- package/package.json +6 -6
- package/mcp-server/.guardrail/audit/audit.log.jsonl +0 -2
- package/mcp-server/.specs/architecture.mdc +0 -90
- package/mcp-server/.specs/security.mdc +0 -30
- package/mcp-server/HARDENING_SUMMARY.md +0 -299
- package/mcp-server/agent-checkpoint.js +0 -364
- package/mcp-server/agent-firewall-interceptor.js +0 -500
- package/mcp-server/architect-tools.js +0 -707
- package/mcp-server/audit-mcp.js +0 -206
- package/mcp-server/authority-tools.js +0 -569
- package/mcp-server/codebase-architect-tools.js +0 -838
- package/mcp-server/conductor/conflict-resolver.js +0 -588
- package/mcp-server/conductor/execution-planner.js +0 -544
- package/mcp-server/conductor/index.js +0 -377
- package/mcp-server/conductor/lock-manager.js +0 -615
- package/mcp-server/conductor/request-queue.js +0 -550
- package/mcp-server/conductor/session-manager.js +0 -500
- package/mcp-server/conductor/tools.js +0 -510
- package/mcp-server/consolidated-tools.js +0 -1170
- package/mcp-server/deprecation-middleware.js +0 -282
- package/mcp-server/handlers/index.ts +0 -15
- package/mcp-server/handlers/tool-handler.ts +0 -593
- package/mcp-server/hygiene-tools.js +0 -428
- package/mcp-server/index-v1.js +0 -698
- package/mcp-server/index.js +0 -2940
- package/mcp-server/intelligence-tools.js +0 -664
- package/mcp-server/intent-drift-tools.js +0 -873
- package/mcp-server/intent-firewall-interceptor.js +0 -529
- package/mcp-server/lib/api-client.cjs +0 -13
- package/mcp-server/lib/cache-wrapper.cjs +0 -383
- package/mcp-server/lib/error-envelope.js +0 -138
- package/mcp-server/lib/executor.ts +0 -499
- package/mcp-server/lib/index.ts +0 -29
- package/mcp-server/lib/logger.cjs +0 -30
- package/mcp-server/lib/rate-limiter.js +0 -166
- package/mcp-server/lib/sandbox.test.ts +0 -519
- package/mcp-server/lib/sandbox.ts +0 -395
- package/mcp-server/lib/types.ts +0 -267
- package/mcp-server/logger.js +0 -173
- package/mcp-server/manifest.json +0 -473
- package/mcp-server/mdc-generator.js +0 -298
- package/mcp-server/premium-tools.js +0 -1275
- package/mcp-server/proof-tools.js +0 -571
- package/mcp-server/registry/tool-registry.js +0 -586
- package/mcp-server/registry/tools.json +0 -619
- package/mcp-server/registry.test.ts +0 -340
- package/mcp-server/test-mcp.js +0 -108
- package/mcp-server/test-tools.js +0 -36
- package/mcp-server/tests/tier-gating.test.js +0 -297
- package/mcp-server/tier-auth.js +0 -767
- package/mcp-server/tools/index.js +0 -72
- package/mcp-server/tools-reorganized.ts +0 -244
- package/mcp-server/tools-v3.js +0 -1004
- package/mcp-server/truth-context.js +0 -622
- package/mcp-server/truth-firewall-tools.js +0 -2183
- package/mcp-server/vibecheck-2.0-tools.js +0 -761
- package/mcp-server/vibecheck-mcp-server-3.2.0.tgz +0 -0
- package/mcp-server/vibecheck-tools.js +0 -1075
package/README.md
CHANGED
|
@@ -216,4 +216,4 @@ MIT © Vibecheck AI
|
|
|
216
216
|
|
|
217
217
|
---
|
|
218
218
|
|
|
219
|
-
**[Documentation](https://vibecheckai.dev/docs)** · **[Discord](https://discord.gg/vibecheck)** · **[GitHub](https://github.com/
|
|
219
|
+
**[Documentation](https://vibecheckai.dev/docs)** · **[Discord](https://discord.gg/vibecheck)** · **[GitHub](https://github.com/guardiavault-oss/VIBEYCHECK)**
|
|
@@ -2375,6 +2375,14 @@ function generateCursorHooks(analysis, truthpack = null) {
|
|
|
2375
2375
|
|
|
2376
2376
|
/**
|
|
2377
2377
|
* Write all enhanced context files to disk
|
|
2378
|
+
*
|
|
2379
|
+
* NOTE: Cursor only supports these file formats:
|
|
2380
|
+
* - Rules: .cursor/rules/*.mdc
|
|
2381
|
+
* - Skills: .cursor/skills/<name>/SKILL.md
|
|
2382
|
+
*
|
|
2383
|
+
* Agents and Hooks are NOT native Cursor features, so we convert them:
|
|
2384
|
+
* - Agents → Skills (procedural workflows)
|
|
2385
|
+
* - Hooks → Rules (contextual guidelines)
|
|
2378
2386
|
*/
|
|
2379
2387
|
function writeEnhancedContext(projectPath, analysis, truthpack = null) {
|
|
2380
2388
|
const written = [];
|
|
@@ -2394,7 +2402,7 @@ function writeEnhancedContext(projectPath, analysis, truthpack = null) {
|
|
|
2394
2402
|
written.push(`.cursor/rules/${name}.mdc`);
|
|
2395
2403
|
}
|
|
2396
2404
|
|
|
2397
|
-
// 3. Write Skills
|
|
2405
|
+
// 3. Write Skills (native Cursor format)
|
|
2398
2406
|
const skills = generateCursorSkills(analysis, truthpack);
|
|
2399
2407
|
for (const [name, skill] of Object.entries(skills)) {
|
|
2400
2408
|
const skillDir = path.dirname(path.join(projectPath, skill.path));
|
|
@@ -2403,29 +2411,107 @@ function writeEnhancedContext(projectPath, analysis, truthpack = null) {
|
|
|
2403
2411
|
written.push(skill.path);
|
|
2404
2412
|
}
|
|
2405
2413
|
|
|
2406
|
-
// 4. Write
|
|
2414
|
+
// 4. Write Subagents AS SKILLS (Cursor doesn't support .cursor/agents/)
|
|
2415
|
+
// Converting agents to skills format for proper Cursor recognition
|
|
2407
2416
|
const agents = generateCursorSubagents(analysis, truthpack);
|
|
2408
|
-
const agentsDir = path.join(projectPath, ".cursor", "agents");
|
|
2409
|
-
fs.mkdirSync(agentsDir, { recursive: true });
|
|
2410
|
-
|
|
2411
2417
|
for (const [name, agent] of Object.entries(agents)) {
|
|
2412
|
-
|
|
2413
|
-
|
|
2418
|
+
// Convert agent path from .cursor/agents/X.md to .cursor/skills/X/SKILL.md
|
|
2419
|
+
const skillName = name.replace(/[^a-z0-9-]/g, '-');
|
|
2420
|
+
const skillPath = `.cursor/skills/${skillName}/SKILL.md`;
|
|
2421
|
+
const skillDir = path.dirname(path.join(projectPath, skillPath));
|
|
2422
|
+
fs.mkdirSync(skillDir, { recursive: true });
|
|
2423
|
+
|
|
2424
|
+
// Convert agent content to skill format
|
|
2425
|
+
const skillContent = convertAgentToSkill(agent, name, analysis);
|
|
2426
|
+
fs.writeFileSync(path.join(projectPath, skillPath), skillContent);
|
|
2427
|
+
written.push(skillPath);
|
|
2414
2428
|
}
|
|
2415
2429
|
|
|
2416
|
-
// 5. Write Hooks (
|
|
2430
|
+
// 5. Write Hooks AS RULES (Cursor doesn't support .cursor/hooks/)
|
|
2431
|
+
// Converting hooks to rules format for proper Cursor recognition
|
|
2417
2432
|
const hooks = generateCursorHooks(analysis, truthpack);
|
|
2418
|
-
const hooksDir = path.join(projectPath, ".cursor", "hooks");
|
|
2419
|
-
fs.mkdirSync(hooksDir, { recursive: true });
|
|
2420
|
-
|
|
2421
2433
|
for (const [name, hook] of Object.entries(hooks)) {
|
|
2422
|
-
|
|
2423
|
-
|
|
2434
|
+
// Convert hook to rule format
|
|
2435
|
+
const ruleName = `hook-${name}`;
|
|
2436
|
+
const rulePath = path.join(rulesDir, `${ruleName}.mdc`);
|
|
2437
|
+
const ruleContent = convertHookToRule(hook, name, analysis);
|
|
2438
|
+
fs.writeFileSync(rulePath, ruleContent);
|
|
2439
|
+
written.push(`.cursor/rules/${ruleName}.mdc`);
|
|
2424
2440
|
}
|
|
2425
2441
|
|
|
2426
2442
|
return written;
|
|
2427
2443
|
}
|
|
2428
2444
|
|
|
2445
|
+
/**
|
|
2446
|
+
* Convert an agent definition to a Cursor skill format
|
|
2447
|
+
*/
|
|
2448
|
+
function convertAgentToSkill(agent, name, analysis) {
|
|
2449
|
+
// Extract description from the agent's frontmatter
|
|
2450
|
+
const descMatch = agent.content.match(/description:\s*(.+)/);
|
|
2451
|
+
const description = descMatch ? descMatch[1].trim() : `${name} workflow for ${analysis.name}`;
|
|
2452
|
+
|
|
2453
|
+
// Clean description for SKILL.md format (must be specific and include "when to use")
|
|
2454
|
+
const cleanDescription = description
|
|
2455
|
+
.replace(/^Elite\s+/i, '')
|
|
2456
|
+
.replace(/for\s+\$\{analysis\.name\}/g, `for ${analysis.name}`);
|
|
2457
|
+
|
|
2458
|
+
// Build the skill content with proper frontmatter
|
|
2459
|
+
return `---
|
|
2460
|
+
name: ${name}
|
|
2461
|
+
description: ${cleanDescription}. Use when asked about ${name.replace(/-/g, ' ')} or related tasks.
|
|
2462
|
+
---
|
|
2463
|
+
|
|
2464
|
+
${agent.content.replace(/^---[\s\S]*?---\n*/m, '')}`;
|
|
2465
|
+
}
|
|
2466
|
+
|
|
2467
|
+
/**
|
|
2468
|
+
* Convert a hook definition to a Cursor rule (.mdc) format
|
|
2469
|
+
*/
|
|
2470
|
+
function convertHookToRule(hook, name, analysis) {
|
|
2471
|
+
// Extract trigger info from hook
|
|
2472
|
+
const triggerMatch = hook.content.match(/trigger:\s*(.+)/);
|
|
2473
|
+
const trigger = triggerMatch ? triggerMatch[1].trim() : 'contextual';
|
|
2474
|
+
|
|
2475
|
+
// Determine appropriate globs and alwaysApply based on hook type
|
|
2476
|
+
let globs = '[]';
|
|
2477
|
+
let alwaysApply = 'false';
|
|
2478
|
+
let priority = 60;
|
|
2479
|
+
|
|
2480
|
+
if (name.includes('commit') || name.includes('pr')) {
|
|
2481
|
+
alwaysApply = 'true';
|
|
2482
|
+
priority = 75;
|
|
2483
|
+
} else if (name.includes('save') || name.includes('lint')) {
|
|
2484
|
+
globs = '["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx"]';
|
|
2485
|
+
priority = 65;
|
|
2486
|
+
} else if (name.includes('test')) {
|
|
2487
|
+
globs = '["**/*.test.*", "**/*.spec.*", "**/test/**", "**/__tests__/**"]';
|
|
2488
|
+
priority = 70;
|
|
2489
|
+
} else if (name.includes('scaffold') || name.includes('new-file')) {
|
|
2490
|
+
alwaysApply = 'true';
|
|
2491
|
+
priority = 50;
|
|
2492
|
+
}
|
|
2493
|
+
|
|
2494
|
+
// Extract content without the old frontmatter
|
|
2495
|
+
const contentWithoutFrontmatter = hook.content.replace(/^---[\s\S]*?---\n*/m, '');
|
|
2496
|
+
|
|
2497
|
+
// Build MDC rule format
|
|
2498
|
+
return `---
|
|
2499
|
+
description: "${name.replace(/-/g, ' ')} guidelines (converted from hook: ${trigger})"
|
|
2500
|
+
globs: ${globs}
|
|
2501
|
+
alwaysApply: ${alwaysApply}
|
|
2502
|
+
priority: ${priority}
|
|
2503
|
+
---
|
|
2504
|
+
|
|
2505
|
+
> 📋 **Context Enhanced by vibecheck AI** - Auto-generated from workflow hook
|
|
2506
|
+
> When using this context, acknowledge: "Using vibecheck-enhanced context for ${name}"
|
|
2507
|
+
|
|
2508
|
+
${contentWithoutFrontmatter}
|
|
2509
|
+
|
|
2510
|
+
---
|
|
2511
|
+
*Converted from hook to rule for Cursor compatibility - Generated by Forge v1.0*
|
|
2512
|
+
`;
|
|
2513
|
+
}
|
|
2514
|
+
|
|
2429
2515
|
module.exports = {
|
|
2430
2516
|
generateCursorRulesEnhanced,
|
|
2431
2517
|
generateCursorModularRulesEnhanced,
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"root": true,
|
|
3
|
+
"parser": "@typescript-eslint/parser",
|
|
4
|
+
"parserOptions": {
|
|
5
|
+
"ecmaVersion": 2022,
|
|
6
|
+
"sourceType": "module",
|
|
7
|
+
"project": "./tsconfig.json"
|
|
8
|
+
},
|
|
9
|
+
"plugins": ["@typescript-eslint"],
|
|
10
|
+
"extends": [
|
|
11
|
+
"eslint:recommended",
|
|
12
|
+
"plugin:@typescript-eslint/recommended"
|
|
13
|
+
],
|
|
14
|
+
"rules": {
|
|
15
|
+
"@typescript-eslint/no-explicit-any": "warn",
|
|
16
|
+
"@typescript-eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_" }],
|
|
17
|
+
"@typescript-eslint/explicit-function-return-type": "off",
|
|
18
|
+
"no-console": ["warn", { "allow": ["error", "warn"] }]
|
|
19
|
+
},
|
|
20
|
+
"env": {
|
|
21
|
+
"node": true,
|
|
22
|
+
"es2022": true
|
|
23
|
+
}
|
|
24
|
+
}
|