vibecheck-ai 2.0.1 → 5.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 (456) hide show
  1. package/bin/.generated +25 -0
  2. package/bin/_deprecations.js +463 -0
  3. package/bin/_router.js +46 -0
  4. package/bin/cli-hygiene.js +241 -0
  5. package/bin/dev/run-v2-torture.js +30 -0
  6. package/bin/registry.js +656 -0
  7. package/bin/runners/CLI_REFACTOR_SUMMARY.md +229 -0
  8. package/bin/runners/ENHANCEMENT_GUIDE.md +121 -0
  9. package/bin/runners/REPORT_AUDIT.md +64 -0
  10. package/bin/runners/cli-utils.js +1070 -0
  11. package/bin/runners/context/ai-task-decomposer.js +337 -0
  12. package/bin/runners/context/analyzer.js +513 -0
  13. package/bin/runners/context/api-contracts.js +427 -0
  14. package/bin/runners/context/context-diff.js +342 -0
  15. package/bin/runners/context/context-pruner.js +291 -0
  16. package/bin/runners/context/dependency-graph.js +414 -0
  17. package/bin/runners/context/generators/claude.js +107 -0
  18. package/bin/runners/context/generators/codex.js +108 -0
  19. package/bin/runners/context/generators/copilot.js +119 -0
  20. package/bin/runners/context/generators/cursor-enhanced.js +2525 -0
  21. package/bin/runners/context/generators/cursor.js +514 -0
  22. package/bin/runners/context/generators/mcp.js +169 -0
  23. package/bin/runners/context/generators/windsurf.js +180 -0
  24. package/bin/runners/context/git-context.js +304 -0
  25. package/bin/runners/context/index.js +1110 -0
  26. package/bin/runners/context/insights.js +173 -0
  27. package/bin/runners/context/mcp-server/generate-rules.js +337 -0
  28. package/bin/runners/context/mcp-server/index.js +1176 -0
  29. package/bin/runners/context/mcp-server/package.json +24 -0
  30. package/bin/runners/context/memory.js +200 -0
  31. package/bin/runners/context/monorepo.js +215 -0
  32. package/bin/runners/context/multi-repo-federation.js +404 -0
  33. package/bin/runners/context/patterns.js +253 -0
  34. package/bin/runners/context/proof-context.js +1264 -0
  35. package/bin/runners/context/security-scanner.js +541 -0
  36. package/bin/runners/context/semantic-search.js +350 -0
  37. package/bin/runners/context/shared.js +264 -0
  38. package/bin/runners/context/team-conventions.js +336 -0
  39. package/bin/runners/lib/__tests__/entitlements-v2.test.js +295 -0
  40. package/bin/runners/lib/agent-firewall/ai/false-positive-analyzer.js +474 -0
  41. package/bin/runners/lib/agent-firewall/change-packet/builder.js +488 -0
  42. package/bin/runners/lib/agent-firewall/change-packet/schema.json +228 -0
  43. package/bin/runners/lib/agent-firewall/change-packet/store.js +200 -0
  44. package/bin/runners/lib/agent-firewall/claims/claim-types.js +21 -0
  45. package/bin/runners/lib/agent-firewall/claims/extractor.js +303 -0
  46. package/bin/runners/lib/agent-firewall/claims/patterns.js +24 -0
  47. package/bin/runners/lib/agent-firewall/critic/index.js +151 -0
  48. package/bin/runners/lib/agent-firewall/critic/judge.js +432 -0
  49. package/bin/runners/lib/agent-firewall/critic/prompts.js +305 -0
  50. package/bin/runners/lib/agent-firewall/enforcement/gateway.js +1059 -0
  51. package/bin/runners/lib/agent-firewall/enforcement/index.js +98 -0
  52. package/bin/runners/lib/agent-firewall/enforcement/mode.js +318 -0
  53. package/bin/runners/lib/agent-firewall/enforcement/orchestrator.js +484 -0
  54. package/bin/runners/lib/agent-firewall/enforcement/proof-artifact.js +418 -0
  55. package/bin/runners/lib/agent-firewall/enforcement/schemas/change-event.schema.json +173 -0
  56. package/bin/runners/lib/agent-firewall/enforcement/schemas/intent.schema.json +181 -0
  57. package/bin/runners/lib/agent-firewall/enforcement/schemas/verdict.schema.json +222 -0
  58. package/bin/runners/lib/agent-firewall/enforcement/verdict-v2.js +333 -0
  59. package/bin/runners/lib/agent-firewall/evidence/auth-evidence.js +88 -0
  60. package/bin/runners/lib/agent-firewall/evidence/contract-evidence.js +75 -0
  61. package/bin/runners/lib/agent-firewall/evidence/env-evidence.js +127 -0
  62. package/bin/runners/lib/agent-firewall/evidence/resolver.js +102 -0
  63. package/bin/runners/lib/agent-firewall/evidence/route-evidence.js +213 -0
  64. package/bin/runners/lib/agent-firewall/evidence/side-effect-evidence.js +145 -0
  65. package/bin/runners/lib/agent-firewall/fs-hook/daemon.js +19 -0
  66. package/bin/runners/lib/agent-firewall/fs-hook/installer.js +87 -0
  67. package/bin/runners/lib/agent-firewall/fs-hook/watcher.js +184 -0
  68. package/bin/runners/lib/agent-firewall/git-hook/pre-commit.js +163 -0
  69. package/bin/runners/lib/agent-firewall/ide-extension/cursor.js +107 -0
  70. package/bin/runners/lib/agent-firewall/ide-extension/vscode.js +68 -0
  71. package/bin/runners/lib/agent-firewall/ide-extension/windsurf.js +66 -0
  72. package/bin/runners/lib/agent-firewall/index.js +200 -0
  73. package/bin/runners/lib/agent-firewall/integration/index.js +20 -0
  74. package/bin/runners/lib/agent-firewall/integration/ship-gate.js +437 -0
  75. package/bin/runners/lib/agent-firewall/intent/alignment-engine.js +634 -0
  76. package/bin/runners/lib/agent-firewall/intent/auto-detect.js +426 -0
  77. package/bin/runners/lib/agent-firewall/intent/index.js +102 -0
  78. package/bin/runners/lib/agent-firewall/intent/schema.js +352 -0
  79. package/bin/runners/lib/agent-firewall/intent/store.js +283 -0
  80. package/bin/runners/lib/agent-firewall/interception/fs-interceptor.js +502 -0
  81. package/bin/runners/lib/agent-firewall/interception/index.js +23 -0
  82. package/bin/runners/lib/agent-firewall/interceptor/base.js +308 -0
  83. package/bin/runners/lib/agent-firewall/interceptor/cursor.js +35 -0
  84. package/bin/runners/lib/agent-firewall/interceptor/vscode.js +35 -0
  85. package/bin/runners/lib/agent-firewall/interceptor/windsurf.js +34 -0
  86. package/bin/runners/lib/agent-firewall/lawbook/distributor.js +465 -0
  87. package/bin/runners/lib/agent-firewall/lawbook/evaluator.js +604 -0
  88. package/bin/runners/lib/agent-firewall/lawbook/index.js +304 -0
  89. package/bin/runners/lib/agent-firewall/lawbook/registry.js +514 -0
  90. package/bin/runners/lib/agent-firewall/lawbook/schema.js +420 -0
  91. package/bin/runners/lib/agent-firewall/logger.js +141 -0
  92. package/bin/runners/lib/agent-firewall/policy/default-policy.json +90 -0
  93. package/bin/runners/lib/agent-firewall/policy/engine.js +103 -0
  94. package/bin/runners/lib/agent-firewall/policy/loader.js +451 -0
  95. package/bin/runners/lib/agent-firewall/policy/rules/auth-drift.js +50 -0
  96. package/bin/runners/lib/agent-firewall/policy/rules/contract-drift.js +50 -0
  97. package/bin/runners/lib/agent-firewall/policy/rules/fake-success.js +79 -0
  98. package/bin/runners/lib/agent-firewall/policy/rules/ghost-env.js +227 -0
  99. package/bin/runners/lib/agent-firewall/policy/rules/ghost-route.js +191 -0
  100. package/bin/runners/lib/agent-firewall/policy/rules/scope.js +93 -0
  101. package/bin/runners/lib/agent-firewall/policy/rules/unsafe-side-effect.js +57 -0
  102. package/bin/runners/lib/agent-firewall/policy/schema.json +183 -0
  103. package/bin/runners/lib/agent-firewall/policy/verdict.js +54 -0
  104. package/bin/runners/lib/agent-firewall/proposal/extractor.js +394 -0
  105. package/bin/runners/lib/agent-firewall/proposal/index.js +212 -0
  106. package/bin/runners/lib/agent-firewall/proposal/schema.js +251 -0
  107. package/bin/runners/lib/agent-firewall/proposal/validator.js +386 -0
  108. package/bin/runners/lib/agent-firewall/reality/index.js +332 -0
  109. package/bin/runners/lib/agent-firewall/reality/state.js +625 -0
  110. package/bin/runners/lib/agent-firewall/reality/watcher.js +322 -0
  111. package/bin/runners/lib/agent-firewall/risk/index.js +173 -0
  112. package/bin/runners/lib/agent-firewall/risk/scorer.js +328 -0
  113. package/bin/runners/lib/agent-firewall/risk/thresholds.js +322 -0
  114. package/bin/runners/lib/agent-firewall/risk/vectors.js +421 -0
  115. package/bin/runners/lib/agent-firewall/session/collector.js +451 -0
  116. package/bin/runners/lib/agent-firewall/session/index.js +26 -0
  117. package/bin/runners/lib/agent-firewall/simulator/diff-simulator.js +472 -0
  118. package/bin/runners/lib/agent-firewall/simulator/import-resolver.js +346 -0
  119. package/bin/runners/lib/agent-firewall/simulator/index.js +181 -0
  120. package/bin/runners/lib/agent-firewall/simulator/route-validator.js +380 -0
  121. package/bin/runners/lib/agent-firewall/time-machine/incident-correlator.js +661 -0
  122. package/bin/runners/lib/agent-firewall/time-machine/index.js +267 -0
  123. package/bin/runners/lib/agent-firewall/time-machine/replay-engine.js +436 -0
  124. package/bin/runners/lib/agent-firewall/time-machine/state-reconstructor.js +490 -0
  125. package/bin/runners/lib/agent-firewall/time-machine/timeline-builder.js +530 -0
  126. package/bin/runners/lib/agent-firewall/truthpack/index.js +67 -0
  127. package/bin/runners/lib/agent-firewall/truthpack/loader.js +137 -0
  128. package/bin/runners/lib/agent-firewall/unblock/planner.js +337 -0
  129. package/bin/runners/lib/agent-firewall/utils/ignore-checker.js +118 -0
  130. package/bin/runners/lib/ai-bridge.js +416 -0
  131. package/bin/runners/lib/analysis-core.js +309 -0
  132. package/bin/runners/lib/analyzers.js +2500 -0
  133. package/bin/runners/lib/api-client.js +269 -0
  134. package/bin/runners/lib/approve-output.js +235 -0
  135. package/bin/runners/lib/artifact-envelope.js +540 -0
  136. package/bin/runners/lib/assets/vibecheck-logo.png +0 -0
  137. package/bin/runners/lib/audit-bridge.js +391 -0
  138. package/bin/runners/lib/auth-shared.js +977 -0
  139. package/bin/runners/lib/auth-truth.js +193 -0
  140. package/bin/runners/lib/auth.js +215 -0
  141. package/bin/runners/lib/authority-badge.js +425 -0
  142. package/bin/runners/lib/backup.js +62 -0
  143. package/bin/runners/lib/billing.js +107 -0
  144. package/bin/runners/lib/checkpoint.js +941 -0
  145. package/bin/runners/lib/claims.js +118 -0
  146. package/bin/runners/lib/classify-output.js +204 -0
  147. package/bin/runners/lib/cleanup/engine.js +571 -0
  148. package/bin/runners/lib/cleanup/index.js +53 -0
  149. package/bin/runners/lib/cleanup/output.js +375 -0
  150. package/bin/runners/lib/cleanup/rules.js +1060 -0
  151. package/bin/runners/lib/cli-output.js +400 -0
  152. package/bin/runners/lib/cli-ui.js +540 -0
  153. package/bin/runners/lib/compliance-bridge-new.js +0 -0
  154. package/bin/runners/lib/compliance-bridge.js +165 -0
  155. package/bin/runners/lib/contracts/auth-contract.js +202 -0
  156. package/bin/runners/lib/contracts/env-contract.js +181 -0
  157. package/bin/runners/lib/contracts/external-contract.js +206 -0
  158. package/bin/runners/lib/contracts/guard.js +168 -0
  159. package/bin/runners/lib/contracts/index.js +89 -0
  160. package/bin/runners/lib/contracts/plan-validator.js +311 -0
  161. package/bin/runners/lib/contracts/route-contract.js +199 -0
  162. package/bin/runners/lib/contracts.js +804 -0
  163. package/bin/runners/lib/default-config.js +127 -0
  164. package/bin/runners/lib/detect.js +89 -0
  165. package/bin/runners/lib/detectors-v2.js +622 -0
  166. package/bin/runners/lib/doctor/autofix.js +254 -0
  167. package/bin/runners/lib/doctor/diagnosis-receipt.js +454 -0
  168. package/bin/runners/lib/doctor/failure-signatures.js +526 -0
  169. package/bin/runners/lib/doctor/fix-script.js +336 -0
  170. package/bin/runners/lib/doctor/index.js +37 -0
  171. package/bin/runners/lib/doctor/modules/build-tools.js +453 -0
  172. package/bin/runners/lib/doctor/modules/dependencies.js +325 -0
  173. package/bin/runners/lib/doctor/modules/index.js +105 -0
  174. package/bin/runners/lib/doctor/modules/network.js +250 -0
  175. package/bin/runners/lib/doctor/modules/os-quirks.js +706 -0
  176. package/bin/runners/lib/doctor/modules/project.js +312 -0
  177. package/bin/runners/lib/doctor/modules/repo-integrity.js +485 -0
  178. package/bin/runners/lib/doctor/modules/runtime.js +224 -0
  179. package/bin/runners/lib/doctor/modules/security.js +350 -0
  180. package/bin/runners/lib/doctor/modules/system.js +213 -0
  181. package/bin/runners/lib/doctor/modules/vibecheck.js +394 -0
  182. package/bin/runners/lib/doctor/reporter.js +262 -0
  183. package/bin/runners/lib/doctor/safe-repair.js +384 -0
  184. package/bin/runners/lib/doctor/service.js +262 -0
  185. package/bin/runners/lib/doctor/types.js +113 -0
  186. package/bin/runners/lib/doctor/ui.js +263 -0
  187. package/bin/runners/lib/doctor-enhanced.js +233 -0
  188. package/bin/runners/lib/doctor-output.js +226 -0
  189. package/bin/runners/lib/doctor-v2.js +608 -0
  190. package/bin/runners/lib/drift.js +425 -0
  191. package/bin/runners/lib/enforcement.js +72 -0
  192. package/bin/runners/lib/engine/ast-cache.js +210 -0
  193. package/bin/runners/lib/engine/auth-extractor.js +211 -0
  194. package/bin/runners/lib/engine/billing-extractor.js +112 -0
  195. package/bin/runners/lib/engine/enforcement-extractor.js +100 -0
  196. package/bin/runners/lib/engine/env-extractor.js +207 -0
  197. package/bin/runners/lib/engine/express-extractor.js +208 -0
  198. package/bin/runners/lib/engine/extractors.js +849 -0
  199. package/bin/runners/lib/engine/index.js +207 -0
  200. package/bin/runners/lib/engine/repo-index.js +514 -0
  201. package/bin/runners/lib/engine/types.js +124 -0
  202. package/bin/runners/lib/engines/accessibility-engine.js +190 -0
  203. package/bin/runners/lib/engines/api-consistency-engine.js +162 -0
  204. package/bin/runners/lib/engines/ast-cache.js +99 -0
  205. package/bin/runners/lib/engines/attack-detector.js +1192 -0
  206. package/bin/runners/lib/engines/code-quality-engine.js +255 -0
  207. package/bin/runners/lib/engines/console-logs-engine.js +115 -0
  208. package/bin/runners/lib/engines/cross-file-analysis-engine.js +268 -0
  209. package/bin/runners/lib/engines/dead-code-engine.js +198 -0
  210. package/bin/runners/lib/engines/deprecated-api-engine.js +226 -0
  211. package/bin/runners/lib/engines/empty-catch-engine.js +150 -0
  212. package/bin/runners/lib/engines/file-filter.js +131 -0
  213. package/bin/runners/lib/engines/hardcoded-secrets-engine.js +251 -0
  214. package/bin/runners/lib/engines/mock-data-engine.js +272 -0
  215. package/bin/runners/lib/engines/parallel-processor.js +71 -0
  216. package/bin/runners/lib/engines/performance-issues-engine.js +265 -0
  217. package/bin/runners/lib/engines/security-vulnerabilities-engine.js +243 -0
  218. package/bin/runners/lib/engines/todo-fixme-engine.js +115 -0
  219. package/bin/runners/lib/engines/type-aware-engine.js +152 -0
  220. package/bin/runners/lib/engines/unsafe-regex-engine.js +225 -0
  221. package/bin/runners/lib/engines/vibecheck-engines/README.md +53 -0
  222. package/bin/runners/lib/engines/vibecheck-engines/index.js +15 -0
  223. package/bin/runners/lib/engines/vibecheck-engines/lib/ast-cache.js +164 -0
  224. package/bin/runners/lib/engines/vibecheck-engines/lib/code-quality-engine.js +291 -0
  225. package/bin/runners/lib/engines/vibecheck-engines/lib/console-logs-engine.js +83 -0
  226. package/bin/runners/lib/engines/vibecheck-engines/lib/dead-code-engine.js +198 -0
  227. package/bin/runners/lib/engines/vibecheck-engines/lib/deprecated-api-engine.js +275 -0
  228. package/bin/runners/lib/engines/vibecheck-engines/lib/empty-catch-engine.js +167 -0
  229. package/bin/runners/lib/engines/vibecheck-engines/lib/file-filter.js +217 -0
  230. package/bin/runners/lib/engines/vibecheck-engines/lib/hardcoded-secrets-engine.js +139 -0
  231. package/bin/runners/lib/engines/vibecheck-engines/lib/mock-data-engine.js +140 -0
  232. package/bin/runners/lib/engines/vibecheck-engines/lib/parallel-processor.js +164 -0
  233. package/bin/runners/lib/engines/vibecheck-engines/lib/performance-issues-engine.js +234 -0
  234. package/bin/runners/lib/engines/vibecheck-engines/lib/type-aware-engine.js +217 -0
  235. package/bin/runners/lib/engines/vibecheck-engines/lib/unsafe-regex-engine.js +78 -0
  236. package/bin/runners/lib/engines/vibecheck-engines/package.json +13 -0
  237. package/bin/runners/lib/enterprise-detect.js +603 -0
  238. package/bin/runners/lib/enterprise-init.js +942 -0
  239. package/bin/runners/lib/entitlements-v2.js +265 -0
  240. package/bin/runners/lib/entitlements.generated.js +0 -0
  241. package/bin/runners/lib/entitlements.js +340 -0
  242. package/bin/runners/lib/env-resolver.js +417 -0
  243. package/bin/runners/lib/env-template.js +66 -0
  244. package/bin/runners/lib/env.js +189 -0
  245. package/bin/runners/lib/error-handler.js +368 -0
  246. package/bin/runners/lib/error-messages.js +289 -0
  247. package/bin/runners/lib/evidence-pack.js +684 -0
  248. package/bin/runners/lib/exit-codes.js +275 -0
  249. package/bin/runners/lib/extractors/client-calls.js +990 -0
  250. package/bin/runners/lib/extractors/fastify-route-dump.js +573 -0
  251. package/bin/runners/lib/extractors/fastify-routes.js +426 -0
  252. package/bin/runners/lib/extractors/index.js +363 -0
  253. package/bin/runners/lib/extractors/next-routes.js +524 -0
  254. package/bin/runners/lib/extractors/proof-graph.js +431 -0
  255. package/bin/runners/lib/extractors/route-matcher.js +451 -0
  256. package/bin/runners/lib/extractors/truthpack-v2.js +377 -0
  257. package/bin/runners/lib/extractors/ui-bindings.js +547 -0
  258. package/bin/runners/lib/finding-id.js +69 -0
  259. package/bin/runners/lib/finding-sorter.js +89 -0
  260. package/bin/runners/lib/findings-schema.js +281 -0
  261. package/bin/runners/lib/fingerprint.js +377 -0
  262. package/bin/runners/lib/firewall-prompt.js +50 -0
  263. package/bin/runners/lib/fix-output.js +228 -0
  264. package/bin/runners/lib/global-flags.js +250 -0
  265. package/bin/runners/lib/graph/graph-builder.js +265 -0
  266. package/bin/runners/lib/graph/html-renderer.js +413 -0
  267. package/bin/runners/lib/graph/index.js +32 -0
  268. package/bin/runners/lib/graph/runtime-collector.js +215 -0
  269. package/bin/runners/lib/graph/static-extractor.js +518 -0
  270. package/bin/runners/lib/help-formatter.js +413 -0
  271. package/bin/runners/lib/html-proof-report.js +913 -0
  272. package/bin/runners/lib/html-report.js +650 -0
  273. package/bin/runners/lib/init-wizard.js +601 -0
  274. package/bin/runners/lib/interactive-menu.js +1496 -0
  275. package/bin/runners/lib/json-output.js +76 -0
  276. package/bin/runners/lib/llm.js +75 -0
  277. package/bin/runners/lib/logger.js +38 -0
  278. package/bin/runners/lib/meter.js +61 -0
  279. package/bin/runners/lib/missions/briefing.js +427 -0
  280. package/bin/runners/lib/missions/checkpoint.js +753 -0
  281. package/bin/runners/lib/missions/evidence.js +126 -0
  282. package/bin/runners/lib/missions/hardening.js +851 -0
  283. package/bin/runners/lib/missions/plan.js +648 -0
  284. package/bin/runners/lib/missions/safety-gates.js +645 -0
  285. package/bin/runners/lib/missions/schema.js +478 -0
  286. package/bin/runners/lib/missions/templates.js +317 -0
  287. package/bin/runners/lib/next-action.js +560 -0
  288. package/bin/runners/lib/packs/bundle.js +675 -0
  289. package/bin/runners/lib/packs/evidence-pack.js +671 -0
  290. package/bin/runners/lib/packs/pack-factory.js +837 -0
  291. package/bin/runners/lib/packs/permissions-pack.js +686 -0
  292. package/bin/runners/lib/packs/proof-graph-pack.js +779 -0
  293. package/bin/runners/lib/patch.js +40 -0
  294. package/bin/runners/lib/permissions/auth-model.js +213 -0
  295. package/bin/runners/lib/permissions/idor-prover.js +205 -0
  296. package/bin/runners/lib/permissions/index.js +45 -0
  297. package/bin/runners/lib/permissions/matrix-builder.js +198 -0
  298. package/bin/runners/lib/pkgjson.js +28 -0
  299. package/bin/runners/lib/policy.js +295 -0
  300. package/bin/runners/lib/polish/accessibility.js +62 -0
  301. package/bin/runners/lib/polish/analyzer.js +93 -0
  302. package/bin/runners/lib/polish/backend.js +87 -0
  303. package/bin/runners/lib/polish/configuration.js +83 -0
  304. package/bin/runners/lib/polish/documentation.js +83 -0
  305. package/bin/runners/lib/polish/frontend.js +817 -0
  306. package/bin/runners/lib/polish/index.js +27 -0
  307. package/bin/runners/lib/polish/infrastructure.js +80 -0
  308. package/bin/runners/lib/polish/internationalization.js +85 -0
  309. package/bin/runners/lib/polish/libraries.js +180 -0
  310. package/bin/runners/lib/polish/observability.js +75 -0
  311. package/bin/runners/lib/polish/performance.js +64 -0
  312. package/bin/runners/lib/polish/privacy.js +110 -0
  313. package/bin/runners/lib/polish/resilience.js +92 -0
  314. package/bin/runners/lib/polish/security.js +78 -0
  315. package/bin/runners/lib/polish/seo.js +71 -0
  316. package/bin/runners/lib/polish/styles.js +62 -0
  317. package/bin/runners/lib/polish/utils.js +104 -0
  318. package/bin/runners/lib/preflight.js +142 -0
  319. package/bin/runners/lib/prerequisites.js +149 -0
  320. package/bin/runners/lib/prove-output.js +220 -0
  321. package/bin/runners/lib/reality/correlation-detectors.js +359 -0
  322. package/bin/runners/lib/reality/index.js +318 -0
  323. package/bin/runners/lib/reality/request-hashing.js +416 -0
  324. package/bin/runners/lib/reality/request-mapper.js +453 -0
  325. package/bin/runners/lib/reality/safety-rails.js +463 -0
  326. package/bin/runners/lib/reality/semantic-snapshot.js +408 -0
  327. package/bin/runners/lib/reality/toast-detector.js +393 -0
  328. package/bin/runners/lib/reality-findings.js +84 -0
  329. package/bin/runners/lib/reality-output.js +231 -0
  330. package/bin/runners/lib/receipts.js +179 -0
  331. package/bin/runners/lib/redact.js +29 -0
  332. package/bin/runners/lib/replay/capsule-manager.js +154 -0
  333. package/bin/runners/lib/replay/index.js +263 -0
  334. package/bin/runners/lib/replay/player.js +348 -0
  335. package/bin/runners/lib/replay/recorder.js +331 -0
  336. package/bin/runners/lib/report-engine.js +626 -0
  337. package/bin/runners/lib/report-html.js +1233 -0
  338. package/bin/runners/lib/report-output.js +366 -0
  339. package/bin/runners/lib/report-templates.js +967 -0
  340. package/bin/runners/lib/report.js +135 -0
  341. package/bin/runners/lib/route-detection.js +1209 -0
  342. package/bin/runners/lib/route-truth.js +1322 -0
  343. package/bin/runners/lib/safelist/index.js +96 -0
  344. package/bin/runners/lib/safelist/integration.js +334 -0
  345. package/bin/runners/lib/safelist/matcher.js +696 -0
  346. package/bin/runners/lib/safelist/schema.js +948 -0
  347. package/bin/runners/lib/safelist/store.js +438 -0
  348. package/bin/runners/lib/sandbox/index.js +59 -0
  349. package/bin/runners/lib/sandbox/proof-chain.js +399 -0
  350. package/bin/runners/lib/sandbox/sandbox-runner.js +205 -0
  351. package/bin/runners/lib/sandbox/worktree.js +174 -0
  352. package/bin/runners/lib/scan-cache.js +330 -0
  353. package/bin/runners/lib/scan-output-schema.js +344 -0
  354. package/bin/runners/lib/scan-output.js +631 -0
  355. package/bin/runners/lib/scan-runner.js +135 -0
  356. package/bin/runners/lib/schema-validator.js +350 -0
  357. package/bin/runners/lib/schemas/ajv-validator.js +464 -0
  358. package/bin/runners/lib/schemas/contracts.schema.json +160 -0
  359. package/bin/runners/lib/schemas/error-envelope.schema.json +105 -0
  360. package/bin/runners/lib/schemas/finding-v3.schema.json +151 -0
  361. package/bin/runners/lib/schemas/finding.schema.json +100 -0
  362. package/bin/runners/lib/schemas/mission-pack.schema.json +206 -0
  363. package/bin/runners/lib/schemas/proof-graph.schema.json +176 -0
  364. package/bin/runners/lib/schemas/reality-report.schema.json +162 -0
  365. package/bin/runners/lib/schemas/report-artifact.schema.json +120 -0
  366. package/bin/runners/lib/schemas/run-request.schema.json +108 -0
  367. package/bin/runners/lib/schemas/share-pack.schema.json +180 -0
  368. package/bin/runners/lib/schemas/ship-manifest.schema.json +251 -0
  369. package/bin/runners/lib/schemas/ship-report.schema.json +117 -0
  370. package/bin/runners/lib/schemas/truthpack-v2.schema.json +303 -0
  371. package/bin/runners/lib/schemas/validator.js +465 -0
  372. package/bin/runners/lib/schemas/verdict.schema.json +140 -0
  373. package/bin/runners/lib/score-history.js +282 -0
  374. package/bin/runners/lib/security-bridge.js +249 -0
  375. package/bin/runners/lib/server-usage.js +513 -0
  376. package/bin/runners/lib/share-pack.js +239 -0
  377. package/bin/runners/lib/ship-gate.js +832 -0
  378. package/bin/runners/lib/ship-manifest.js +1153 -0
  379. package/bin/runners/lib/ship-output-enterprise.js +239 -0
  380. package/bin/runners/lib/ship-output.js +1128 -0
  381. package/bin/runners/lib/snippets.js +67 -0
  382. package/bin/runners/lib/status-output.js +340 -0
  383. package/bin/runners/lib/terminal-ui.js +356 -0
  384. package/bin/runners/lib/truth.js +1691 -0
  385. package/bin/runners/lib/ui.js +562 -0
  386. package/bin/runners/lib/unified-cli-output.js +947 -0
  387. package/bin/runners/lib/unified-output.js +197 -0
  388. package/bin/runners/lib/upsell.js +410 -0
  389. package/bin/runners/lib/usage.js +153 -0
  390. package/bin/runners/lib/validate-patch.js +156 -0
  391. package/bin/runners/lib/verdict-engine.js +628 -0
  392. package/bin/runners/lib/verification.js +345 -0
  393. package/bin/runners/lib/why-tree.js +650 -0
  394. package/bin/runners/reality/engine.js +917 -0
  395. package/bin/runners/reality/flows.js +122 -0
  396. package/bin/runners/reality/report.js +378 -0
  397. package/bin/runners/reality/session.js +193 -0
  398. package/bin/runners/runAIAgent.js +229 -0
  399. package/bin/runners/runAgent.d.ts +5 -0
  400. package/bin/runners/runAgent.js +161 -0
  401. package/bin/runners/runAllowlist.js +418 -0
  402. package/bin/runners/runApprove.js +320 -0
  403. package/bin/runners/runAudit.js +692 -0
  404. package/bin/runners/runAuth.js +731 -0
  405. package/bin/runners/runCI.js +353 -0
  406. package/bin/runners/runCheckpoint.js +530 -0
  407. package/bin/runners/runClassify.js +928 -0
  408. package/bin/runners/runCleanup.js +343 -0
  409. package/bin/runners/runContext.d.ts +4 -0
  410. package/bin/runners/runContext.js +175 -0
  411. package/bin/runners/runDoctor.js +877 -0
  412. package/bin/runners/runEvidencePack.js +362 -0
  413. package/bin/runners/runFirewall.d.ts +5 -0
  414. package/bin/runners/runFirewall.js +134 -0
  415. package/bin/runners/runFirewallHook.d.ts +5 -0
  416. package/bin/runners/runFirewallHook.js +56 -0
  417. package/bin/runners/runFix.js +1355 -0
  418. package/bin/runners/runForge.js +451 -0
  419. package/bin/runners/runGuard.js +262 -0
  420. package/bin/runners/runInit.js +1927 -0
  421. package/bin/runners/runIntent.js +906 -0
  422. package/bin/runners/runKickoff.js +878 -0
  423. package/bin/runners/runLabs.js +424 -0
  424. package/bin/runners/runLaunch.js +2000 -0
  425. package/bin/runners/runLink.js +785 -0
  426. package/bin/runners/runMcp.js +1875 -0
  427. package/bin/runners/runPacks.js +2089 -0
  428. package/bin/runners/runPolish.d.ts +4 -0
  429. package/bin/runners/runPolish.js +390 -0
  430. package/bin/runners/runPromptFirewall.js +211 -0
  431. package/bin/runners/runProve.js +1411 -0
  432. package/bin/runners/runQuickstart.js +531 -0
  433. package/bin/runners/runReality.js +2260 -0
  434. package/bin/runners/runReport.js +726 -0
  435. package/bin/runners/runRuntime.js +110 -0
  436. package/bin/runners/runSafelist.js +1190 -0
  437. package/bin/runners/runScan.js +688 -0
  438. package/bin/runners/runShield.js +1282 -0
  439. package/bin/runners/runShip.js +1660 -0
  440. package/bin/runners/runTruth.d.ts +5 -0
  441. package/bin/runners/runTruth.js +101 -0
  442. package/bin/runners/runValidate.js +179 -0
  443. package/bin/runners/runWatch.js +478 -0
  444. package/bin/runners/utils.js +360 -0
  445. package/bin/scan.js +617 -0
  446. package/bin/vibecheck.js +1617 -0
  447. package/dist/guardrail/index.d.ts +2405 -0
  448. package/dist/guardrail/index.js +9747 -0
  449. package/dist/guardrail/index.js.map +1 -0
  450. package/dist/scanner/index.d.ts +282 -0
  451. package/dist/scanner/index.js +3395 -0
  452. package/dist/scanner/index.js.map +1 -0
  453. package/package.json +123 -104
  454. package/README.md +0 -491
  455. package/dist/index.js +0 -99711
  456. package/dist/index.js.map +0 -1
@@ -0,0 +1,173 @@
1
+ /**
2
+ * Chat History Insights Module
3
+ * Tracks context generation sessions and usage patterns
4
+ */
5
+
6
+ const fs = require("fs");
7
+ const path = require("path");
8
+ const os = require("os");
9
+
10
+ const VIBECHECK_HOME = path.join(os.homedir(), ".vibecheck");
11
+ const INSIGHTS_FILE = path.join(VIBECHECK_HOME, "insights.json");
12
+
13
+ /**
14
+ * Initialize insights file
15
+ */
16
+ function initializeInsights() {
17
+ if (!fs.existsSync(VIBECHECK_HOME)) {
18
+ fs.mkdirSync(VIBECHECK_HOME, { recursive: true });
19
+ }
20
+
21
+ if (!fs.existsSync(INSIGHTS_FILE)) {
22
+ fs.writeFileSync(INSIGHTS_FILE, JSON.stringify({
23
+ sessions: [],
24
+ queries: [],
25
+ fileEdits: [],
26
+ totalSessions: 0,
27
+ }, null, 2));
28
+ }
29
+ }
30
+
31
+ /**
32
+ * Track chat/context usage insights
33
+ */
34
+ function trackInsight(projectPath, action, data = {}) {
35
+ initializeInsights();
36
+
37
+ let insights;
38
+ try {
39
+ insights = JSON.parse(fs.readFileSync(INSIGHTS_FILE, "utf-8"));
40
+ } catch {
41
+ insights = { sessions: [], queries: [], fileEdits: [], totalSessions: 0 };
42
+ }
43
+
44
+ const entry = {
45
+ timestamp: new Date().toISOString(),
46
+ project: path.basename(projectPath),
47
+ projectPath: projectPath,
48
+ action,
49
+ ...data,
50
+ };
51
+
52
+ switch (action) {
53
+ case "context_generated":
54
+ insights.sessions.push(entry);
55
+ insights.totalSessions++;
56
+ break;
57
+ case "file_edit":
58
+ insights.fileEdits.push(entry);
59
+ break;
60
+ case "query":
61
+ insights.queries.push(entry);
62
+ break;
63
+ }
64
+
65
+ // Keep last 500 entries per category
66
+ insights.sessions = insights.sessions.slice(-500);
67
+ insights.fileEdits = insights.fileEdits.slice(-500);
68
+ insights.queries = insights.queries.slice(-500);
69
+
70
+ fs.writeFileSync(INSIGHTS_FILE, JSON.stringify(insights, null, 2));
71
+ return insights;
72
+ }
73
+
74
+ /**
75
+ * Get most active hours from sessions
76
+ */
77
+ function getMostActiveHours(sessions) {
78
+ const hours = {};
79
+ for (const session of sessions) {
80
+ const hour = new Date(session.timestamp).getHours();
81
+ hours[hour] = (hours[hour] || 0) + 1;
82
+ }
83
+ return Object.entries(hours)
84
+ .sort((a, b) => b[1] - a[1])
85
+ .slice(0, 3)
86
+ .map(([hour]) => `${hour}:00`);
87
+ }
88
+
89
+ /**
90
+ * Get insights summary for dashboard
91
+ */
92
+ function getInsightsSummary() {
93
+ initializeInsights();
94
+
95
+ try {
96
+ const insights = JSON.parse(fs.readFileSync(INSIGHTS_FILE, "utf-8"));
97
+ const now = new Date();
98
+ const dayAgo = new Date(now - 24 * 60 * 60 * 1000);
99
+ const weekAgo = new Date(now - 7 * 24 * 60 * 60 * 1000);
100
+
101
+ return {
102
+ totalSessions: insights.totalSessions || 0,
103
+ sessionsToday: insights.sessions?.filter(s => new Date(s.timestamp) > dayAgo).length || 0,
104
+ sessionsThisWeek: insights.sessions?.filter(s => new Date(s.timestamp) > weekAgo).length || 0,
105
+ totalFileEdits: insights.fileEdits?.length || 0,
106
+ recentProjects: [...new Set(insights.sessions?.slice(-20).map(s => s.project))],
107
+ mostActiveHours: getMostActiveHours(insights.sessions || []),
108
+ };
109
+ } catch {
110
+ return null;
111
+ }
112
+ }
113
+
114
+ /**
115
+ * Get recent sessions
116
+ */
117
+ function getRecentSessions(limit = 10) {
118
+ initializeInsights();
119
+
120
+ try {
121
+ const insights = JSON.parse(fs.readFileSync(INSIGHTS_FILE, "utf-8"));
122
+ return insights.sessions?.slice(-limit).reverse() || [];
123
+ } catch {
124
+ return [];
125
+ }
126
+ }
127
+
128
+ /**
129
+ * Get project activity
130
+ */
131
+ function getProjectActivity(projectPath) {
132
+ initializeInsights();
133
+
134
+ try {
135
+ const insights = JSON.parse(fs.readFileSync(INSIGHTS_FILE, "utf-8"));
136
+ const projectName = path.basename(projectPath);
137
+
138
+ const sessions = insights.sessions?.filter(s => s.project === projectName) || [];
139
+ const fileEdits = insights.fileEdits?.filter(f => f.project === projectName) || [];
140
+
141
+ return {
142
+ totalSessions: sessions.length,
143
+ lastSession: sessions[sessions.length - 1]?.timestamp || null,
144
+ totalFileEdits: fileEdits.length,
145
+ };
146
+ } catch {
147
+ return null;
148
+ }
149
+ }
150
+
151
+ /**
152
+ * Clear all insights
153
+ */
154
+ function clearInsights() {
155
+ const insights = {
156
+ sessions: [],
157
+ queries: [],
158
+ fileEdits: [],
159
+ totalSessions: 0,
160
+ };
161
+ fs.writeFileSync(INSIGHTS_FILE, JSON.stringify(insights, null, 2));
162
+ }
163
+
164
+ module.exports = {
165
+ INSIGHTS_FILE,
166
+ initializeInsights,
167
+ trackInsight,
168
+ getInsightsSummary,
169
+ getRecentSessions,
170
+ getProjectActivity,
171
+ getMostActiveHours,
172
+ clearInsights,
173
+ };
@@ -0,0 +1,337 @@
1
+ /**
2
+ * Generate thin rules files that point to MCP tools
3
+ * These are the "policy layer" - short files that tell agents what tools to call
4
+ */
5
+
6
+ const fs = require("fs");
7
+ const path = require("path");
8
+
9
+ /**
10
+ * Generate Cursor MCP config
11
+ */
12
+ function generateCursorMCPConfig(projectPath) {
13
+ return {
14
+ mcpServers: {
15
+ "vibecheck-context": {
16
+ command: "node",
17
+ args: [path.join(projectPath, ".vibecheck", "mcp-server", "index.js"), "serve"],
18
+ env: {}
19
+ }
20
+ }
21
+ };
22
+ }
23
+
24
+ /**
25
+ * Generate thin Cursor rules that point to MCP tools
26
+ */
27
+ function generateCursorMCPRules(projectPath, analysis) {
28
+ const projectName = path.basename(projectPath);
29
+
30
+ return `---
31
+ description: Context Engine Integration - USE THESE TOOLS BEFORE MAKING CHANGES
32
+ globs: ["**/*"]
33
+ alwaysApply: true
34
+ ---
35
+
36
+ # 🔧 Context Engine Tools (MCP)
37
+
38
+ > This project has a Context Engine. ALWAYS use these tools before making changes.
39
+
40
+ ## MANDATORY WORKFLOW
41
+
42
+ ### Before Planning ANY Change:
43
+ \`\`\`
44
+ 1. Call repo_map() → understand architecture
45
+ 2. Call risk_blast_radius(files) → assess impact
46
+ \`\`\`
47
+
48
+ ### Before Using ANY Symbol:
49
+ \`\`\`
50
+ Call symbols_exists(name) → verify it exists
51
+ If returns { exists: false } → DO NOT USE IT
52
+ \`\`\`
53
+
54
+ ### Before Using ANY Package:
55
+ \`\`\`
56
+ Call versions_allowed(package) → verify installed
57
+ If returns { allowed: false } → DO NOT SUGGEST IT
58
+ \`\`\`
59
+
60
+ ### Before Claiming ANY Route Exists:
61
+ \`\`\`
62
+ Call routes_exists(method, path) → verify it exists
63
+ If returns { exists: false } → DO NOT INVENT IT
64
+ \`\`\`
65
+
66
+ ### When Creating New Code:
67
+ \`\`\`
68
+ Call patterns_get(type) → get verified pattern
69
+ Available: api-route, component, hook
70
+ \`\`\`
71
+
72
+ ### Before Touching Auth:
73
+ \`\`\`
74
+ Call security_auth_flow() → understand auth system
75
+ Follow existing patterns exactly
76
+ \`\`\`
77
+
78
+ ### After Making Changes:
79
+ \`\`\`
80
+ Call tests_required(files) → know what to test
81
+ Call verify_changes(changes) → final check
82
+ \`\`\`
83
+
84
+ ## Project Identity
85
+
86
+ - **Name**: ${projectName}
87
+ - **Framework**: ${analysis?.framework || "Unknown"}
88
+ - **Language**: ${analysis?.language || "Unknown"}
89
+
90
+ ## HARD RULES
91
+
92
+ 1. ❌ **NEVER** invent symbols without calling \`symbols_exists\`
93
+ 2. ❌ **NEVER** suggest packages without calling \`versions_allowed\`
94
+ 3. ❌ **NEVER** claim routes exist without calling \`routes_exists\`
95
+ 4. ❌ **NEVER** touch auth without calling \`security_auth_flow\`
96
+ 5. ✅ **ALWAYS** call \`repo_map\` before planning changes
97
+ 6. ✅ **ALWAYS** call \`patterns_get\` when creating new code
98
+
99
+ ## If Tools Return "Not Found"
100
+
101
+ When a tool says something doesn't exist:
102
+ - Do NOT proceed as if it does
103
+ - Do NOT invent alternatives
104
+ - ASK the user for clarification or guidance
105
+
106
+ ---
107
+ *Powered by vibecheck Context Engine*
108
+ `;
109
+ }
110
+
111
+ /**
112
+ * Generate thin Windsurf rules
113
+ */
114
+ function generateWindsurfMCPRules(projectPath, analysis) {
115
+ const projectName = path.basename(projectPath);
116
+
117
+ return `---
118
+ trigger: always
119
+ description: Context Engine Integration for ${projectName}
120
+ ---
121
+
122
+ # Context Engine Integration
123
+
124
+ This project uses the vibecheck Context Engine. Query it before making changes.
125
+
126
+ ## Project Info
127
+ - Framework: ${analysis?.framework || "Unknown"}
128
+ - Language: ${analysis?.language || "Unknown"}
129
+ - State: ${analysis?.antiHallucination?.stateManagement || "N/A"}
130
+
131
+ ## Available Tools (via MCP)
132
+
133
+ | Tool | Use When |
134
+ |------|----------|
135
+ | \`repo_map()\` | Starting any task |
136
+ | \`symbols_exists(name)\` | Before using any function/component |
137
+ | \`versions_allowed(pkg)\` | Before suggesting packages |
138
+ | \`routes_exists(method, path)\` | Before claiming API exists |
139
+ | \`patterns_get(type)\` | When creating new code |
140
+ | \`security_auth_flow()\` | Before touching auth |
141
+ | \`tests_required(files)\` | After making changes |
142
+ | \`risk_blast_radius(files)\` | Before risky changes |
143
+
144
+ ## Mandatory Checks
145
+
146
+ 1. **Before planning**: Call \`repo_map()\`
147
+ 2. **Before using symbols**: Call \`symbols_exists()\`
148
+ 3. **Before packages**: Call \`versions_allowed()\`
149
+ 4. **Before auth changes**: Call \`security_auth_flow()\`
150
+
151
+ ## If Tool Says "Not Found"
152
+
153
+ - Do NOT proceed as if it exists
154
+ - Do NOT invent alternatives
155
+ - ASK user for guidance
156
+ `;
157
+ }
158
+
159
+ /**
160
+ * Generate thin Copilot instructions
161
+ */
162
+ function generateCopilotMCPInstructions(projectPath, analysis) {
163
+ const projectName = path.basename(projectPath);
164
+
165
+ return `# ${projectName} - AI Context Instructions
166
+
167
+ ## Project Stack
168
+ - Framework: ${analysis?.framework || "Unknown"}
169
+ - Language: ${analysis?.language || "Unknown"}
170
+ - ORM: ${analysis?.antiHallucination?.ormType || "N/A"}
171
+ - UI: ${analysis?.antiHallucination?.uiLibrary?.name || "N/A"}
172
+ - State: ${analysis?.antiHallucination?.stateManagement || "N/A"}
173
+
174
+ ## Context Engine Available
175
+
176
+ This project has a Context Engine with verified facts. Query the \`.vibecheck/truth-pack.json\` for:
177
+
178
+ - **Symbols**: All exported functions, components, hooks
179
+ - **Routes**: All API endpoints with file:line proof
180
+ - **Versions**: All installed packages with exact versions
181
+ - **Patterns**: Verified code patterns to follow
182
+ - **Security**: Auth files, middleware, protected routes
183
+
184
+ ## Mandatory Rules
185
+
186
+ ### DO NOT:
187
+ - Invent functions that aren't in the symbol index
188
+ - Suggest packages not in package.json
189
+ - Claim routes exist without proof
190
+ - Bypass auth patterns
191
+
192
+ ### ALWAYS:
193
+ - Check truth-pack.json before claiming something exists
194
+ - Follow existing patterns from the codebase
195
+ - Verify package versions before suggesting APIs
196
+ - Reference file:line when citing code
197
+
198
+ ## Verification
199
+
200
+ Before suggesting code:
201
+ 1. Verify symbols exist in truth-pack.json
202
+ 2. Verify packages are installed
203
+ 3. Check patterns for correct style
204
+ 4. Assess blast radius for risky files
205
+
206
+ ---
207
+ *Generated by vibecheck Context Engine*
208
+ `;
209
+ }
210
+
211
+ /**
212
+ * Generate Claude project context with MCP config
213
+ */
214
+ function generateClaudeMCPContext(projectPath, analysis) {
215
+ const projectName = path.basename(projectPath);
216
+
217
+ return `# ${projectName} - Project Context
218
+
219
+ ## Stack
220
+ - **Framework**: ${analysis?.framework || "Unknown"}
221
+ - **Language**: ${analysis?.language || "Unknown"}
222
+ - **Database**: ${analysis?.antiHallucination?.ormType || "N/A"}
223
+ - **UI Library**: ${analysis?.antiHallucination?.uiLibrary?.name || "N/A"}
224
+ - **State Management**: ${analysis?.antiHallucination?.stateManagement || "N/A"}
225
+
226
+ ## Context Engine
227
+
228
+ This project has a vibecheck Context Engine at \`.vibecheck/\`.
229
+
230
+ ### Truth Pack Location
231
+ \`\`\`
232
+ .vibecheck/truth-pack.json
233
+ \`\`\`
234
+
235
+ Contains verified:
236
+ - Symbol index (what exists)
237
+ - Route map (API endpoints)
238
+ - Version truth (installed packages)
239
+ - Security map (auth flow)
240
+ - Golden patterns (verified code)
241
+ - Risk map (critical files)
242
+
243
+ ## MCP Tools
244
+
245
+ If MCP is configured, use these tools:
246
+
247
+ | Tool | Purpose |
248
+ |------|---------|
249
+ | repo_map | Get architecture overview |
250
+ | symbols_exists | Verify symbol exists |
251
+ | versions_allowed | Verify package installed |
252
+ | routes_exists | Verify route exists |
253
+ | patterns_get | Get verified pattern |
254
+ | security_auth_flow | Get auth info |
255
+ | tests_required | Get test requirements |
256
+ | risk_blast_radius | Assess change risk |
257
+
258
+ ## Rules
259
+
260
+ 1. **Verify before using** - Check truth-pack before claiming things exist
261
+ 2. **Follow patterns** - Use golden patterns for new code
262
+ 3. **Respect versions** - Only use installed package APIs
263
+ 4. **Check risk** - Assess blast radius for critical files
264
+ `;
265
+ }
266
+
267
+ /**
268
+ * Copy MCP server to project
269
+ */
270
+ function copyMCPServerToProject(projectPath) {
271
+ const vibecheckDir = path.join(projectPath, ".vibecheck", "mcp-server");
272
+
273
+ if (!fs.existsSync(vibecheckDir)) {
274
+ fs.mkdirSync(vibecheckDir, { recursive: true });
275
+ }
276
+
277
+ // Copy the MCP server
278
+ const serverSource = path.join(__dirname, "index.js");
279
+ const serverDest = path.join(vibecheckDir, "index.js");
280
+
281
+ if (fs.existsSync(serverSource)) {
282
+ fs.copyFileSync(serverSource, serverDest);
283
+ }
284
+
285
+ // Create package.json
286
+ const pkgContent = {
287
+ name: "vibecheck-context-engine",
288
+ version: "1.0.0",
289
+ main: "index.js",
290
+ scripts: {
291
+ "index": "node index.js index --path=../..",
292
+ "serve": "node index.js serve --http --path=../..",
293
+ "serve:mcp": "node index.js serve --path=../.."
294
+ }
295
+ };
296
+
297
+ fs.writeFileSync(
298
+ path.join(vibecheckDir, "package.json"),
299
+ JSON.stringify(pkgContent, null, 2)
300
+ );
301
+
302
+ return vibecheckDir;
303
+ }
304
+
305
+ /**
306
+ * Generate all MCP-related files
307
+ */
308
+ function generateMCPFiles(projectPath, analysis) {
309
+ const files = {};
310
+
311
+ // Cursor MCP config
312
+ files[".cursor/mcp.json"] = JSON.stringify(generateCursorMCPConfig(projectPath), null, 2);
313
+
314
+ // Cursor thin rules
315
+ files[".cursor/rules/context-engine.mdc"] = generateCursorMCPRules(projectPath, analysis);
316
+
317
+ // Windsurf thin rules
318
+ files[".windsurf/rules/context-engine.md"] = generateWindsurfMCPRules(projectPath, analysis);
319
+
320
+ // Copilot instructions
321
+ files[".github/copilot-context.md"] = generateCopilotMCPInstructions(projectPath, analysis);
322
+
323
+ // Claude context
324
+ files[".claude/project-context.md"] = generateClaudeMCPContext(projectPath, analysis);
325
+
326
+ return files;
327
+ }
328
+
329
+ module.exports = {
330
+ generateCursorMCPConfig,
331
+ generateCursorMCPRules,
332
+ generateWindsurfMCPRules,
333
+ generateCopilotMCPInstructions,
334
+ generateClaudeMCPContext,
335
+ copyMCPServerToProject,
336
+ generateMCPFiles,
337
+ };