@vibecheckai/cli 3.2.5 → 3.3.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 (197) hide show
  1. package/bin/.generated +25 -25
  2. package/bin/dev/run-v2-torture.js +30 -30
  3. package/bin/registry.js +192 -5
  4. package/bin/runners/lib/__tests__/entitlements-v2.test.js +295 -295
  5. package/bin/runners/lib/agent-firewall/change-packet/builder.js +280 -6
  6. package/bin/runners/lib/agent-firewall/critic/index.js +151 -0
  7. package/bin/runners/lib/agent-firewall/critic/judge.js +432 -0
  8. package/bin/runners/lib/agent-firewall/critic/prompts.js +305 -0
  9. package/bin/runners/lib/agent-firewall/lawbook/distributor.js +465 -0
  10. package/bin/runners/lib/agent-firewall/lawbook/evaluator.js +604 -0
  11. package/bin/runners/lib/agent-firewall/lawbook/index.js +304 -0
  12. package/bin/runners/lib/agent-firewall/lawbook/registry.js +514 -0
  13. package/bin/runners/lib/agent-firewall/lawbook/schema.js +420 -0
  14. package/bin/runners/lib/agent-firewall/logger.js +141 -0
  15. package/bin/runners/lib/agent-firewall/policy/loader.js +312 -4
  16. package/bin/runners/lib/agent-firewall/policy/rules/ghost-env.js +113 -1
  17. package/bin/runners/lib/agent-firewall/policy/rules/ghost-route.js +133 -6
  18. package/bin/runners/lib/agent-firewall/proposal/extractor.js +394 -0
  19. package/bin/runners/lib/agent-firewall/proposal/index.js +212 -0
  20. package/bin/runners/lib/agent-firewall/proposal/schema.js +251 -0
  21. package/bin/runners/lib/agent-firewall/proposal/validator.js +386 -0
  22. package/bin/runners/lib/agent-firewall/reality/index.js +332 -0
  23. package/bin/runners/lib/agent-firewall/reality/state.js +625 -0
  24. package/bin/runners/lib/agent-firewall/reality/watcher.js +322 -0
  25. package/bin/runners/lib/agent-firewall/risk/index.js +173 -0
  26. package/bin/runners/lib/agent-firewall/risk/scorer.js +328 -0
  27. package/bin/runners/lib/agent-firewall/risk/thresholds.js +321 -0
  28. package/bin/runners/lib/agent-firewall/risk/vectors.js +421 -0
  29. package/bin/runners/lib/agent-firewall/simulator/diff-simulator.js +472 -0
  30. package/bin/runners/lib/agent-firewall/simulator/import-resolver.js +346 -0
  31. package/bin/runners/lib/agent-firewall/simulator/index.js +181 -0
  32. package/bin/runners/lib/agent-firewall/simulator/route-validator.js +380 -0
  33. package/bin/runners/lib/agent-firewall/time-machine/incident-correlator.js +661 -0
  34. package/bin/runners/lib/agent-firewall/time-machine/index.js +267 -0
  35. package/bin/runners/lib/agent-firewall/time-machine/replay-engine.js +436 -0
  36. package/bin/runners/lib/agent-firewall/time-machine/state-reconstructor.js +490 -0
  37. package/bin/runners/lib/agent-firewall/time-machine/timeline-builder.js +530 -0
  38. package/bin/runners/lib/analyzers.js +81 -18
  39. package/bin/runners/lib/api-client.js +269 -0
  40. package/bin/runners/lib/auth-truth.js +193 -193
  41. package/bin/runners/lib/authority-badge.js +425 -0
  42. package/bin/runners/lib/backup.js +62 -62
  43. package/bin/runners/lib/billing.js +107 -107
  44. package/bin/runners/lib/claims.js +118 -118
  45. package/bin/runners/lib/cli-output.js +7 -1
  46. package/bin/runners/lib/cli-ui.js +540 -540
  47. package/bin/runners/lib/contracts/auth-contract.js +202 -202
  48. package/bin/runners/lib/contracts/env-contract.js +181 -181
  49. package/bin/runners/lib/contracts/external-contract.js +206 -206
  50. package/bin/runners/lib/contracts/guard.js +168 -168
  51. package/bin/runners/lib/contracts/index.js +89 -89
  52. package/bin/runners/lib/contracts/plan-validator.js +311 -311
  53. package/bin/runners/lib/contracts/route-contract.js +199 -199
  54. package/bin/runners/lib/contracts.js +804 -804
  55. package/bin/runners/lib/detect.js +89 -89
  56. package/bin/runners/lib/doctor/autofix.js +254 -254
  57. package/bin/runners/lib/doctor/index.js +37 -37
  58. package/bin/runners/lib/doctor/modules/dependencies.js +325 -325
  59. package/bin/runners/lib/doctor/modules/index.js +46 -46
  60. package/bin/runners/lib/doctor/modules/network.js +250 -250
  61. package/bin/runners/lib/doctor/modules/project.js +312 -312
  62. package/bin/runners/lib/doctor/modules/runtime.js +224 -224
  63. package/bin/runners/lib/doctor/modules/security.js +348 -348
  64. package/bin/runners/lib/doctor/modules/system.js +213 -213
  65. package/bin/runners/lib/doctor/modules/vibecheck.js +394 -394
  66. package/bin/runners/lib/doctor/reporter.js +262 -262
  67. package/bin/runners/lib/doctor/service.js +262 -262
  68. package/bin/runners/lib/doctor/types.js +113 -113
  69. package/bin/runners/lib/doctor/ui.js +263 -263
  70. package/bin/runners/lib/doctor-v2.js +608 -608
  71. package/bin/runners/lib/drift.js +425 -425
  72. package/bin/runners/lib/enforcement.js +72 -72
  73. package/bin/runners/lib/enterprise-detect.js +603 -603
  74. package/bin/runners/lib/enterprise-init.js +942 -942
  75. package/bin/runners/lib/env-resolver.js +417 -417
  76. package/bin/runners/lib/env-template.js +66 -66
  77. package/bin/runners/lib/env.js +189 -189
  78. package/bin/runners/lib/error-handler.js +16 -9
  79. package/bin/runners/lib/exit-codes.js +275 -0
  80. package/bin/runners/lib/extractors/client-calls.js +990 -990
  81. package/bin/runners/lib/extractors/fastify-route-dump.js +573 -573
  82. package/bin/runners/lib/extractors/fastify-routes.js +426 -426
  83. package/bin/runners/lib/extractors/index.js +363 -363
  84. package/bin/runners/lib/extractors/next-routes.js +524 -524
  85. package/bin/runners/lib/extractors/proof-graph.js +431 -431
  86. package/bin/runners/lib/extractors/route-matcher.js +451 -451
  87. package/bin/runners/lib/extractors/truthpack-v2.js +377 -377
  88. package/bin/runners/lib/extractors/ui-bindings.js +547 -547
  89. package/bin/runners/lib/findings-schema.js +281 -281
  90. package/bin/runners/lib/firewall-prompt.js +50 -50
  91. package/bin/runners/lib/global-flags.js +37 -0
  92. package/bin/runners/lib/graph/graph-builder.js +265 -265
  93. package/bin/runners/lib/graph/html-renderer.js +413 -413
  94. package/bin/runners/lib/graph/index.js +32 -32
  95. package/bin/runners/lib/graph/runtime-collector.js +215 -215
  96. package/bin/runners/lib/graph/static-extractor.js +518 -518
  97. package/bin/runners/lib/help-formatter.js +413 -0
  98. package/bin/runners/lib/html-report.js +650 -650
  99. package/bin/runners/lib/llm.js +75 -75
  100. package/bin/runners/lib/logger.js +38 -0
  101. package/bin/runners/lib/meter.js +61 -61
  102. package/bin/runners/lib/missions/evidence.js +126 -126
  103. package/bin/runners/lib/patch.js +40 -40
  104. package/bin/runners/lib/permissions/auth-model.js +213 -213
  105. package/bin/runners/lib/permissions/idor-prover.js +205 -205
  106. package/bin/runners/lib/permissions/index.js +45 -45
  107. package/bin/runners/lib/permissions/matrix-builder.js +198 -198
  108. package/bin/runners/lib/pkgjson.js +28 -28
  109. package/bin/runners/lib/policy.js +295 -295
  110. package/bin/runners/lib/preflight.js +142 -142
  111. package/bin/runners/lib/reality/correlation-detectors.js +359 -359
  112. package/bin/runners/lib/reality/index.js +318 -318
  113. package/bin/runners/lib/reality/request-hashing.js +416 -416
  114. package/bin/runners/lib/reality/request-mapper.js +453 -453
  115. package/bin/runners/lib/reality/safety-rails.js +463 -463
  116. package/bin/runners/lib/reality/semantic-snapshot.js +408 -408
  117. package/bin/runners/lib/reality/toast-detector.js +393 -393
  118. package/bin/runners/lib/reality-findings.js +84 -84
  119. package/bin/runners/lib/receipts.js +179 -179
  120. package/bin/runners/lib/redact.js +29 -29
  121. package/bin/runners/lib/replay/capsule-manager.js +154 -154
  122. package/bin/runners/lib/replay/index.js +263 -263
  123. package/bin/runners/lib/replay/player.js +348 -348
  124. package/bin/runners/lib/replay/recorder.js +331 -331
  125. package/bin/runners/lib/report.js +135 -135
  126. package/bin/runners/lib/route-detection.js +1140 -1140
  127. package/bin/runners/lib/sandbox/index.js +59 -59
  128. package/bin/runners/lib/sandbox/proof-chain.js +399 -399
  129. package/bin/runners/lib/sandbox/sandbox-runner.js +205 -205
  130. package/bin/runners/lib/sandbox/worktree.js +174 -174
  131. package/bin/runners/lib/schema-validator.js +350 -350
  132. package/bin/runners/lib/schemas/contracts.schema.json +160 -160
  133. package/bin/runners/lib/schemas/finding.schema.json +100 -100
  134. package/bin/runners/lib/schemas/mission-pack.schema.json +206 -206
  135. package/bin/runners/lib/schemas/proof-graph.schema.json +176 -176
  136. package/bin/runners/lib/schemas/reality-report.schema.json +162 -162
  137. package/bin/runners/lib/schemas/share-pack.schema.json +180 -180
  138. package/bin/runners/lib/schemas/ship-report.schema.json +117 -117
  139. package/bin/runners/lib/schemas/truthpack-v2.schema.json +303 -303
  140. package/bin/runners/lib/schemas/validator.js +438 -438
  141. package/bin/runners/lib/score-history.js +282 -282
  142. package/bin/runners/lib/share-pack.js +239 -239
  143. package/bin/runners/lib/snippets.js +67 -67
  144. package/bin/runners/lib/unified-cli-output.js +604 -0
  145. package/bin/runners/lib/upsell.js +658 -510
  146. package/bin/runners/lib/usage.js +153 -153
  147. package/bin/runners/lib/validate-patch.js +156 -156
  148. package/bin/runners/lib/verdict-engine.js +628 -628
  149. package/bin/runners/reality/engine.js +917 -917
  150. package/bin/runners/reality/flows.js +122 -122
  151. package/bin/runners/reality/report.js +378 -378
  152. package/bin/runners/reality/session.js +193 -193
  153. package/bin/runners/runAgent.d.ts +5 -0
  154. package/bin/runners/runApprove.js +1200 -0
  155. package/bin/runners/runAuth.js +324 -95
  156. package/bin/runners/runCheckpoint.js +39 -21
  157. package/bin/runners/runClassify.js +859 -0
  158. package/bin/runners/runContext.js +136 -24
  159. package/bin/runners/runDoctor.js +108 -68
  160. package/bin/runners/runFirewall.d.ts +5 -0
  161. package/bin/runners/runFirewallHook.d.ts +5 -0
  162. package/bin/runners/runFix.js +6 -5
  163. package/bin/runners/runGuard.js +262 -168
  164. package/bin/runners/runInit.js +3 -2
  165. package/bin/runners/runMcp.js +130 -52
  166. package/bin/runners/runPolish.js +43 -20
  167. package/bin/runners/runProve.js +1 -2
  168. package/bin/runners/runReport.js +3 -2
  169. package/bin/runners/runScan.js +145 -44
  170. package/bin/runners/runShip.js +3 -4
  171. package/bin/runners/runTruth.d.ts +5 -0
  172. package/bin/runners/runValidate.js +19 -2
  173. package/bin/runners/runWatch.js +104 -53
  174. package/bin/vibecheck.js +106 -19
  175. package/mcp-server/HARDENING_SUMMARY.md +299 -0
  176. package/mcp-server/agent-firewall-interceptor.js +367 -31
  177. package/mcp-server/authority-tools.js +569 -0
  178. package/mcp-server/conductor/conflict-resolver.js +588 -0
  179. package/mcp-server/conductor/execution-planner.js +544 -0
  180. package/mcp-server/conductor/index.js +377 -0
  181. package/mcp-server/conductor/lock-manager.js +615 -0
  182. package/mcp-server/conductor/request-queue.js +550 -0
  183. package/mcp-server/conductor/session-manager.js +500 -0
  184. package/mcp-server/conductor/tools.js +510 -0
  185. package/mcp-server/index.js +1199 -208
  186. package/mcp-server/lib/api-client.cjs +305 -0
  187. package/mcp-server/lib/logger.cjs +30 -0
  188. package/mcp-server/logger.js +173 -0
  189. package/mcp-server/package.json +2 -2
  190. package/mcp-server/premium-tools.js +2 -2
  191. package/mcp-server/tier-auth.js +351 -136
  192. package/mcp-server/tools/index.js +72 -72
  193. package/mcp-server/truth-firewall-tools.js +145 -15
  194. package/mcp-server/vibecheck-tools.js +2 -2
  195. package/package.json +2 -3
  196. package/mcp-server/index.old.js +0 -4137
  197. package/mcp-server/package-lock.json +0 -165
@@ -0,0 +1,275 @@
1
+ /**
2
+ * Vibecheck CLI Exit Codes - Standardized for World-Class UX
3
+ *
4
+ * ═══════════════════════════════════════════════════════════════════════════════
5
+ * EXIT CODE REFERENCE
6
+ * ═══════════════════════════════════════════════════════════════════════════════
7
+ *
8
+ * Standard Unix conventions extended for CLI tooling:
9
+ *
10
+ * 0 SUCCESS Command completed successfully, no issues found
11
+ * 1 WARNINGS Command completed with warnings (non-blocking issues)
12
+ * 2 BLOCKING Command found blocking issues (critical/high severity)
13
+ * 3 USER_ERROR Invalid arguments, missing required flags, bad input
14
+ * 4 NOT_FOUND Command not found, file not found, resource missing
15
+ * 5 AUTH_REQUIRED Authentication required but not provided
16
+ * 6 AUTH_FAILED Authentication failed (invalid/expired credentials)
17
+ * 7 TIER_REQUIRED Feature requires higher subscription tier
18
+ * 8 RATE_LIMITED API rate limit exceeded
19
+ * 9 NETWORK_ERROR Network connectivity issue
20
+ * 10 INTERNAL_ERROR Unexpected internal error
21
+ *
22
+ * CI-Friendly: Exit codes 0-2 are "soft" (scan results), 3+ are "hard" (errors)
23
+ * ═══════════════════════════════════════════════════════════════════════════════
24
+ */
25
+
26
+ "use strict";
27
+
28
+ // ═══════════════════════════════════════════════════════════════════════════════
29
+ // EXIT CODE CONSTANTS
30
+ // ═══════════════════════════════════════════════════════════════════════════════
31
+
32
+ const EXIT = {
33
+ // Success states (0-2)
34
+ SUCCESS: 0, // All good, no issues
35
+ WARNINGS: 1, // Completed with warnings (medium/low severity)
36
+ BLOCKING: 2, // Blocking issues found (critical/high severity)
37
+
38
+ // User errors (3-4)
39
+ USER_ERROR: 3, // Bad args, invalid input, usage error
40
+ NOT_FOUND: 4, // Resource/command/file not found
41
+
42
+ // Auth errors (5-7)
43
+ AUTH_REQUIRED: 5, // Need to log in
44
+ AUTH_FAILED: 6, // Bad credentials
45
+ TIER_REQUIRED: 7, // Need higher plan
46
+
47
+ // Transient errors (8-9)
48
+ RATE_LIMITED: 8, // Try again later
49
+ NETWORK_ERROR: 9, // Connectivity issue
50
+
51
+ // Fatal errors (10+)
52
+ INTERNAL_ERROR: 10, // Bug, unexpected error
53
+
54
+ // Process signals (standard Unix)
55
+ SIGINT: 130, // Ctrl+C
56
+ SIGTERM: 143, // kill
57
+ };
58
+
59
+ // ═══════════════════════════════════════════════════════════════════════════════
60
+ // EXIT CODE METADATA
61
+ // ═══════════════════════════════════════════════════════════════════════════════
62
+
63
+ const EXIT_INFO = {
64
+ [EXIT.SUCCESS]: {
65
+ name: "SUCCESS",
66
+ description: "Command completed successfully",
67
+ ciStatus: "success",
68
+ recoverable: true,
69
+ },
70
+ [EXIT.WARNINGS]: {
71
+ name: "WARNINGS",
72
+ description: "Completed with warnings (non-blocking issues)",
73
+ ciStatus: "warning",
74
+ recoverable: true,
75
+ },
76
+ [EXIT.BLOCKING]: {
77
+ name: "BLOCKING",
78
+ description: "Blocking issues found (critical/high severity)",
79
+ ciStatus: "failure",
80
+ recoverable: true,
81
+ },
82
+ [EXIT.USER_ERROR]: {
83
+ name: "USER_ERROR",
84
+ description: "Invalid arguments or usage",
85
+ ciStatus: "failure",
86
+ recoverable: true,
87
+ hint: "Check command usage with --help",
88
+ },
89
+ [EXIT.NOT_FOUND]: {
90
+ name: "NOT_FOUND",
91
+ description: "Resource not found",
92
+ ciStatus: "failure",
93
+ recoverable: true,
94
+ hint: "Verify the path or resource exists",
95
+ },
96
+ [EXIT.AUTH_REQUIRED]: {
97
+ name: "AUTH_REQUIRED",
98
+ description: "Authentication required",
99
+ ciStatus: "failure",
100
+ recoverable: true,
101
+ hint: "Run 'vibecheck login' to authenticate",
102
+ },
103
+ [EXIT.AUTH_FAILED]: {
104
+ name: "AUTH_FAILED",
105
+ description: "Authentication failed",
106
+ ciStatus: "failure",
107
+ recoverable: true,
108
+ hint: "Check your API key or run 'vibecheck login' again",
109
+ },
110
+ [EXIT.TIER_REQUIRED]: {
111
+ name: "TIER_REQUIRED",
112
+ description: "Higher subscription tier required",
113
+ ciStatus: "failure",
114
+ recoverable: true,
115
+ hint: "Upgrade at https://vibecheckai.dev/pricing",
116
+ },
117
+ [EXIT.RATE_LIMITED]: {
118
+ name: "RATE_LIMITED",
119
+ description: "Rate limit exceeded",
120
+ ciStatus: "failure",
121
+ recoverable: true,
122
+ hint: "Wait a moment and try again",
123
+ },
124
+ [EXIT.NETWORK_ERROR]: {
125
+ name: "NETWORK_ERROR",
126
+ description: "Network connectivity issue",
127
+ ciStatus: "failure",
128
+ recoverable: true,
129
+ hint: "Check your internet connection or try --offline mode",
130
+ },
131
+ [EXIT.INTERNAL_ERROR]: {
132
+ name: "INTERNAL_ERROR",
133
+ description: "Unexpected internal error",
134
+ ciStatus: "failure",
135
+ recoverable: false,
136
+ hint: "Please report this issue at https://github.com/vibecheckai/vibecheck/issues",
137
+ },
138
+ };
139
+
140
+ // ═══════════════════════════════════════════════════════════════════════════════
141
+ // HELPER FUNCTIONS
142
+ // ═══════════════════════════════════════════════════════════════════════════════
143
+
144
+ /**
145
+ * Convert verdict string to exit code
146
+ * @param {string} verdict - SHIP, WARN, BLOCK, PASS, FAIL
147
+ * @returns {number} exit code
148
+ */
149
+ function verdictToExitCode(verdict) {
150
+ const v = String(verdict).toUpperCase();
151
+ if (v === "SHIP" || v === "PASS" || v === "SUCCESS" || v === "OK") {
152
+ return EXIT.SUCCESS;
153
+ }
154
+ if (v === "WARN" || v === "WARNING" || v === "WARNINGS") {
155
+ return EXIT.WARNINGS;
156
+ }
157
+ if (v === "BLOCK" || v === "FAIL" || v === "FAILURE" || v === "ERROR") {
158
+ return EXIT.BLOCKING;
159
+ }
160
+ return EXIT.WARNINGS; // Default to warnings for unknown
161
+ }
162
+
163
+ /**
164
+ * Convert exit code to verdict string
165
+ * @param {number} exitCode
166
+ * @returns {string} verdict
167
+ */
168
+ function exitCodeToVerdict(exitCode) {
169
+ switch (exitCode) {
170
+ case EXIT.SUCCESS: return "SHIP";
171
+ case EXIT.WARNINGS: return "WARN";
172
+ case EXIT.BLOCKING: return "BLOCK";
173
+ default: return "BLOCK";
174
+ }
175
+ }
176
+
177
+ /**
178
+ * Get exit info for an exit code
179
+ * @param {number} exitCode
180
+ * @returns {object} exit info
181
+ */
182
+ function getExitInfo(exitCode) {
183
+ return EXIT_INFO[exitCode] || EXIT_INFO[EXIT.INTERNAL_ERROR];
184
+ }
185
+
186
+ /**
187
+ * Check if exit code represents success (including warnings)
188
+ * @param {number} exitCode
189
+ * @returns {boolean}
190
+ */
191
+ function isSuccess(exitCode) {
192
+ return exitCode === EXIT.SUCCESS;
193
+ }
194
+
195
+ /**
196
+ * Check if exit code represents a "soft" failure (scan results, not errors)
197
+ * @param {number} exitCode
198
+ * @returns {boolean}
199
+ */
200
+ function isSoftFailure(exitCode) {
201
+ return exitCode === EXIT.WARNINGS || exitCode === EXIT.BLOCKING;
202
+ }
203
+
204
+ /**
205
+ * Check if exit code represents a "hard" failure (errors)
206
+ * @param {number} exitCode
207
+ * @returns {boolean}
208
+ */
209
+ function isHardFailure(exitCode) {
210
+ return exitCode >= EXIT.USER_ERROR;
211
+ }
212
+
213
+ /**
214
+ * Check if the error is recoverable (user can fix and retry)
215
+ * @param {number} exitCode
216
+ * @returns {boolean}
217
+ */
218
+ function isRecoverable(exitCode) {
219
+ const info = EXIT_INFO[exitCode];
220
+ return info ? info.recoverable : false;
221
+ }
222
+
223
+ /**
224
+ * Get hint message for exit code
225
+ * @param {number} exitCode
226
+ * @returns {string|null}
227
+ */
228
+ function getHint(exitCode) {
229
+ const info = EXIT_INFO[exitCode];
230
+ return info?.hint || null;
231
+ }
232
+
233
+ /**
234
+ * Get CI status for exit code
235
+ * @param {number} exitCode
236
+ * @returns {string} "success" | "warning" | "failure"
237
+ */
238
+ function getCIStatus(exitCode) {
239
+ const info = EXIT_INFO[exitCode];
240
+ return info?.ciStatus || "failure";
241
+ }
242
+
243
+ /**
244
+ * Create an error object with proper exit code
245
+ * @param {string} message
246
+ * @param {number} exitCode
247
+ * @param {object} details
248
+ * @returns {Error}
249
+ */
250
+ function createExitError(message, exitCode, details = {}) {
251
+ const error = new Error(message);
252
+ error.exitCode = exitCode;
253
+ error.exitInfo = getExitInfo(exitCode);
254
+ Object.assign(error, details);
255
+ return error;
256
+ }
257
+
258
+ // ═══════════════════════════════════════════════════════════════════════════════
259
+ // EXPORTS
260
+ // ═══════════════════════════════════════════════════════════════════════════════
261
+
262
+ module.exports = {
263
+ EXIT,
264
+ EXIT_INFO,
265
+ verdictToExitCode,
266
+ exitCodeToVerdict,
267
+ getExitInfo,
268
+ isSuccess,
269
+ isSoftFailure,
270
+ isHardFailure,
271
+ isRecoverable,
272
+ getHint,
273
+ getCIStatus,
274
+ createExitError,
275
+ };