@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.
Files changed (86) hide show
  1. package/README.md +1 -1
  2. package/bin/runners/context/generators/cursor-enhanced.js +99 -13
  3. package/mcp-server/.eslintrc.json +24 -0
  4. package/mcp-server/README.md +425 -135
  5. package/mcp-server/SPEC.md +583 -0
  6. package/mcp-server/configs/README.md +172 -0
  7. package/mcp-server/configs/claude-desktop-pro.json +31 -0
  8. package/mcp-server/configs/claude-desktop-with-workspace.json +25 -0
  9. package/mcp-server/configs/claude-desktop.json +19 -0
  10. package/mcp-server/configs/cursor-mcp.json +21 -0
  11. package/mcp-server/configs/windsurf-mcp.json +17 -0
  12. package/mcp-server/mcp-config.example.json +9 -0
  13. package/mcp-server/package-lock.json +1631 -0
  14. package/mcp-server/package.json +49 -34
  15. package/mcp-server/src/cli.ts +185 -0
  16. package/mcp-server/src/index.ts +85 -0
  17. package/mcp-server/src/server.ts +1933 -0
  18. package/mcp-server/src/services/cache-service.ts +466 -0
  19. package/mcp-server/src/services/cli-service.ts +345 -0
  20. package/mcp-server/src/services/context-manager.ts +717 -0
  21. package/mcp-server/src/services/firewall-service.ts +662 -0
  22. package/mcp-server/src/services/git-service.ts +671 -0
  23. package/mcp-server/src/services/index.ts +52 -0
  24. package/mcp-server/src/services/prompt-builder-service.ts +1031 -0
  25. package/mcp-server/src/services/session-service.ts +550 -0
  26. package/mcp-server/src/services/tier-service.ts +470 -0
  27. package/mcp-server/src/types.ts +351 -0
  28. package/mcp-server/tsconfig.json +16 -27
  29. package/package.json +6 -6
  30. package/mcp-server/.guardrail/audit/audit.log.jsonl +0 -2
  31. package/mcp-server/.specs/architecture.mdc +0 -90
  32. package/mcp-server/.specs/security.mdc +0 -30
  33. package/mcp-server/HARDENING_SUMMARY.md +0 -299
  34. package/mcp-server/agent-checkpoint.js +0 -364
  35. package/mcp-server/agent-firewall-interceptor.js +0 -500
  36. package/mcp-server/architect-tools.js +0 -707
  37. package/mcp-server/audit-mcp.js +0 -206
  38. package/mcp-server/authority-tools.js +0 -569
  39. package/mcp-server/codebase-architect-tools.js +0 -838
  40. package/mcp-server/conductor/conflict-resolver.js +0 -588
  41. package/mcp-server/conductor/execution-planner.js +0 -544
  42. package/mcp-server/conductor/index.js +0 -377
  43. package/mcp-server/conductor/lock-manager.js +0 -615
  44. package/mcp-server/conductor/request-queue.js +0 -550
  45. package/mcp-server/conductor/session-manager.js +0 -500
  46. package/mcp-server/conductor/tools.js +0 -510
  47. package/mcp-server/consolidated-tools.js +0 -1170
  48. package/mcp-server/deprecation-middleware.js +0 -282
  49. package/mcp-server/handlers/index.ts +0 -15
  50. package/mcp-server/handlers/tool-handler.ts +0 -593
  51. package/mcp-server/hygiene-tools.js +0 -428
  52. package/mcp-server/index-v1.js +0 -698
  53. package/mcp-server/index.js +0 -2940
  54. package/mcp-server/intelligence-tools.js +0 -664
  55. package/mcp-server/intent-drift-tools.js +0 -873
  56. package/mcp-server/intent-firewall-interceptor.js +0 -529
  57. package/mcp-server/lib/api-client.cjs +0 -13
  58. package/mcp-server/lib/cache-wrapper.cjs +0 -383
  59. package/mcp-server/lib/error-envelope.js +0 -138
  60. package/mcp-server/lib/executor.ts +0 -499
  61. package/mcp-server/lib/index.ts +0 -29
  62. package/mcp-server/lib/logger.cjs +0 -30
  63. package/mcp-server/lib/rate-limiter.js +0 -166
  64. package/mcp-server/lib/sandbox.test.ts +0 -519
  65. package/mcp-server/lib/sandbox.ts +0 -395
  66. package/mcp-server/lib/types.ts +0 -267
  67. package/mcp-server/logger.js +0 -173
  68. package/mcp-server/manifest.json +0 -473
  69. package/mcp-server/mdc-generator.js +0 -298
  70. package/mcp-server/premium-tools.js +0 -1275
  71. package/mcp-server/proof-tools.js +0 -571
  72. package/mcp-server/registry/tool-registry.js +0 -586
  73. package/mcp-server/registry/tools.json +0 -619
  74. package/mcp-server/registry.test.ts +0 -340
  75. package/mcp-server/test-mcp.js +0 -108
  76. package/mcp-server/test-tools.js +0 -36
  77. package/mcp-server/tests/tier-gating.test.js +0 -297
  78. package/mcp-server/tier-auth.js +0 -767
  79. package/mcp-server/tools/index.js +0 -72
  80. package/mcp-server/tools-reorganized.ts +0 -244
  81. package/mcp-server/tools-v3.js +0 -1004
  82. package/mcp-server/truth-context.js +0 -622
  83. package/mcp-server/truth-firewall-tools.js +0 -2183
  84. package/mcp-server/vibecheck-2.0-tools.js +0 -761
  85. package/mcp-server/vibecheck-mcp-server-3.2.0.tgz +0 -0
  86. 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/vibecheck-oss/vibecheck)**
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 ELITE Subagents
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
- fs.writeFileSync(path.join(projectPath, agent.path), agent.content);
2413
- written.push(agent.path);
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 (NEW!)
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
- fs.writeFileSync(path.join(projectPath, hook.path), hook.content);
2423
- written.push(hook.path);
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
+ }