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