@vibecheckai/cli 3.9.1 → 4.0.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 (85) 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.json +49 -34
  14. package/mcp-server/src/cli.ts +185 -0
  15. package/mcp-server/src/index.ts +85 -0
  16. package/mcp-server/src/server.ts +1933 -0
  17. package/mcp-server/src/services/cache-service.ts +466 -0
  18. package/mcp-server/src/services/cli-service.ts +345 -0
  19. package/mcp-server/src/services/context-manager.ts +717 -0
  20. package/mcp-server/src/services/firewall-service.ts +662 -0
  21. package/mcp-server/src/services/git-service.ts +671 -0
  22. package/mcp-server/src/services/index.ts +52 -0
  23. package/mcp-server/src/services/prompt-builder-service.ts +1031 -0
  24. package/mcp-server/src/services/session-service.ts +550 -0
  25. package/mcp-server/src/services/tier-service.ts +470 -0
  26. package/mcp-server/src/types.ts +351 -0
  27. package/mcp-server/tsconfig.json +16 -27
  28. package/package.json +6 -6
  29. package/mcp-server/.guardrail/audit/audit.log.jsonl +0 -2
  30. package/mcp-server/.specs/architecture.mdc +0 -90
  31. package/mcp-server/.specs/security.mdc +0 -30
  32. package/mcp-server/HARDENING_SUMMARY.md +0 -299
  33. package/mcp-server/agent-checkpoint.js +0 -364
  34. package/mcp-server/agent-firewall-interceptor.js +0 -500
  35. package/mcp-server/architect-tools.js +0 -707
  36. package/mcp-server/audit-mcp.js +0 -206
  37. package/mcp-server/authority-tools.js +0 -569
  38. package/mcp-server/codebase-architect-tools.js +0 -838
  39. package/mcp-server/conductor/conflict-resolver.js +0 -588
  40. package/mcp-server/conductor/execution-planner.js +0 -544
  41. package/mcp-server/conductor/index.js +0 -377
  42. package/mcp-server/conductor/lock-manager.js +0 -615
  43. package/mcp-server/conductor/request-queue.js +0 -550
  44. package/mcp-server/conductor/session-manager.js +0 -500
  45. package/mcp-server/conductor/tools.js +0 -510
  46. package/mcp-server/consolidated-tools.js +0 -1170
  47. package/mcp-server/deprecation-middleware.js +0 -282
  48. package/mcp-server/handlers/index.ts +0 -15
  49. package/mcp-server/handlers/tool-handler.ts +0 -593
  50. package/mcp-server/hygiene-tools.js +0 -428
  51. package/mcp-server/index-v1.js +0 -698
  52. package/mcp-server/index.js +0 -2940
  53. package/mcp-server/intelligence-tools.js +0 -664
  54. package/mcp-server/intent-drift-tools.js +0 -873
  55. package/mcp-server/intent-firewall-interceptor.js +0 -529
  56. package/mcp-server/lib/api-client.cjs +0 -13
  57. package/mcp-server/lib/cache-wrapper.cjs +0 -383
  58. package/mcp-server/lib/error-envelope.js +0 -138
  59. package/mcp-server/lib/executor.ts +0 -499
  60. package/mcp-server/lib/index.ts +0 -29
  61. package/mcp-server/lib/logger.cjs +0 -30
  62. package/mcp-server/lib/rate-limiter.js +0 -166
  63. package/mcp-server/lib/sandbox.test.ts +0 -519
  64. package/mcp-server/lib/sandbox.ts +0 -395
  65. package/mcp-server/lib/types.ts +0 -267
  66. package/mcp-server/logger.js +0 -173
  67. package/mcp-server/manifest.json +0 -473
  68. package/mcp-server/mdc-generator.js +0 -298
  69. package/mcp-server/premium-tools.js +0 -1275
  70. package/mcp-server/proof-tools.js +0 -571
  71. package/mcp-server/registry/tool-registry.js +0 -586
  72. package/mcp-server/registry/tools.json +0 -619
  73. package/mcp-server/registry.test.ts +0 -340
  74. package/mcp-server/test-mcp.js +0 -108
  75. package/mcp-server/test-tools.js +0 -36
  76. package/mcp-server/tests/tier-gating.test.js +0 -297
  77. package/mcp-server/tier-auth.js +0 -767
  78. package/mcp-server/tools/index.js +0 -72
  79. package/mcp-server/tools-reorganized.ts +0 -244
  80. package/mcp-server/tools-v3.js +0 -1004
  81. package/mcp-server/truth-context.js +0 -622
  82. package/mcp-server/truth-firewall-tools.js +0 -2183
  83. package/mcp-server/vibecheck-2.0-tools.js +0 -761
  84. package/mcp-server/vibecheck-mcp-server-3.2.0.tgz +0 -0
  85. package/mcp-server/vibecheck-tools.js +0 -1075
@@ -1,206 +0,0 @@
1
- /**
2
- * Audit Bridge for MCP Server
3
- *
4
- * ES Module wrapper for audit trail functionality in MCP context.
5
- */
6
-
7
- import * as fs from 'fs';
8
- import * as path from 'path';
9
- import * as crypto from 'crypto';
10
-
11
- const AUDIT_DIR = ".vibecheck/audit";
12
- const AUDIT_FILE = "audit.log.jsonl";
13
- const GENESIS_HASH = "0".repeat(64);
14
-
15
- function getCurrentTier() {
16
- return process.env.VIBECHECK_TIER || "free";
17
- }
18
-
19
- function getCurrentActor() {
20
- const env = process.env;
21
- const userId = env.VIBECHECK_USER_ID || env.USER || env.USERNAME || "mcp-client";
22
- const userName = env.VIBECHECK_USER_NAME || env.USERNAME;
23
-
24
- return {
25
- id: userId,
26
- type: "system",
27
- name: userName || "MCP Client",
28
- };
29
- }
30
-
31
- const REDACTION_PATTERNS = [
32
- /(?:api[_-]?key|apikey|token|secret|password|pwd|auth)[=:]\s*['"]?([a-zA-Z0-9_\-]{16,})['"]?/gi,
33
- /eyJ[a-zA-Z0-9_-]+\.eyJ[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+/g,
34
- /(?:AKIA|ABIA|ACCA|ASIA)[A-Z0-9]{16}/g,
35
- /(?:sk_live_|sk_test_|pk_live_|pk_test_)[a-zA-Z0-9]+/g,
36
- ];
37
-
38
- function redactSensitive(input) {
39
- if (typeof input !== "string") return input;
40
- let result = input;
41
- for (const pattern of REDACTION_PATTERNS) {
42
- result = result.replace(pattern, "[REDACTED]");
43
- }
44
- return result;
45
- }
46
-
47
- function redactMetadata(metadata, tier) {
48
- if (!metadata) return undefined;
49
-
50
- if (["compliance", "enterprise", "unlimited"].includes(tier)) {
51
- return redactObject(metadata);
52
- }
53
-
54
- if (tier === "pro") {
55
- return {
56
- command: metadata.command,
57
- score: metadata.score,
58
- durationMs: metadata.durationMs,
59
- errorCode: metadata.errorCode,
60
- };
61
- }
62
-
63
- return { score: metadata.score };
64
- }
65
-
66
- function redactObject(obj) {
67
- if (!obj || typeof obj !== "object") return obj;
68
- const result = {};
69
- for (const [key, value] of Object.entries(obj)) {
70
- if (typeof value === "string") {
71
- result[key] = redactSensitive(value);
72
- } else if (Array.isArray(value)) {
73
- result[key] = value.map((v) => (typeof v === "string" ? redactSensitive(v) : v));
74
- } else if (typeof value === "object" && value !== null) {
75
- result[key] = redactObject(value);
76
- } else {
77
- result[key] = value;
78
- }
79
- }
80
- return result;
81
- }
82
-
83
- function computeHash(event) {
84
- const payload = JSON.stringify({
85
- id: event.id,
86
- timestamp: event.timestamp,
87
- actor: event.actor,
88
- surface: event.surface,
89
- action: event.action,
90
- category: event.category,
91
- target: event.target,
92
- tier: event.tier,
93
- result: event.result,
94
- metadata: event.metadata,
95
- prevHash: event.prevHash,
96
- version: event.version,
97
- });
98
- return crypto.createHash("sha256").update(payload).digest("hex");
99
- }
100
-
101
- function getAuditFilePath(basePath = process.cwd()) {
102
- return path.join(basePath, AUDIT_DIR, AUDIT_FILE);
103
- }
104
-
105
- function ensureAuditDir(basePath = process.cwd()) {
106
- const dir = path.join(basePath, AUDIT_DIR);
107
- if (!fs.existsSync(dir)) {
108
- fs.mkdirSync(dir, { recursive: true });
109
- }
110
- }
111
-
112
- function getLastHash(basePath = process.cwd()) {
113
- const filePath = getAuditFilePath(basePath);
114
- if (!fs.existsSync(filePath)) {
115
- return GENESIS_HASH;
116
- }
117
-
118
- const content = fs.readFileSync(filePath, "utf8");
119
- const lines = content.split("\n").filter((line) => line.trim());
120
- if (lines.length === 0) {
121
- return GENESIS_HASH;
122
- }
123
-
124
- try {
125
- const lastEvent = JSON.parse(lines[lines.length - 1]);
126
- return lastEvent.hash || GENESIS_HASH;
127
- } catch {
128
- return GENESIS_HASH;
129
- }
130
- }
131
-
132
- function createEvent(input, prevHash) {
133
- const tier = getCurrentTier();
134
- const id = crypto.randomUUID();
135
- const timestamp = new Date().toISOString();
136
-
137
- const eventWithoutHash = {
138
- id,
139
- timestamp,
140
- actor: input.actor || getCurrentActor(),
141
- surface: input.surface,
142
- action: input.action,
143
- category: input.category,
144
- target: input.target,
145
- tier,
146
- result: input.result,
147
- metadata: redactMetadata(input.metadata, tier),
148
- prevHash,
149
- version: 1,
150
- };
151
-
152
- const hash = computeHash(eventWithoutHash);
153
-
154
- return {
155
- ...eventWithoutHash,
156
- hash,
157
- };
158
- }
159
-
160
- export function emit(input, basePath = process.cwd()) {
161
- try {
162
- ensureAuditDir(basePath);
163
- const prevHash = getLastHash(basePath);
164
- const event = createEvent(input, prevHash);
165
-
166
- const filePath = getAuditFilePath(basePath);
167
- fs.appendFileSync(filePath, JSON.stringify(event) + "\n", "utf8");
168
-
169
- return event;
170
- } catch (err) {
171
- if (process.env.VIBECHECK_DEBUG) {
172
- console.error("[audit] Failed to emit event:", err.message);
173
- }
174
- return null;
175
- }
176
- }
177
-
178
- export function emitToolInvoke(toolName, args, result, metadata = {}) {
179
- return emit({
180
- surface: "mcp",
181
- action: "tool.invoke",
182
- category: "tool",
183
- target: { type: "tool", name: toolName },
184
- result,
185
- metadata: { command: toolName, args: JSON.stringify(args), ...metadata },
186
- });
187
- }
188
-
189
- export function emitToolComplete(toolName, result, metadata = {}) {
190
- return emit({
191
- surface: "mcp",
192
- action: "tool.complete",
193
- category: "tool",
194
- target: { type: "tool", name: toolName },
195
- result,
196
- metadata: { command: toolName, ...metadata },
197
- });
198
- }
199
-
200
- export const auditMcp = {
201
- emit,
202
- emitToolInvoke,
203
- emitToolComplete,
204
- };
205
-
206
- export default auditMcp;