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,526 @@
1
+ /**
2
+ * Known Failure Signatures Database
3
+ *
4
+ * Maps common error patterns to specific diagnoses and remediation steps.
5
+ * This enables "legendary" instant diagnosis of environment issues.
6
+ */
7
+
8
+ const { SEVERITY, CATEGORY, FIX_TYPE } = require('./types');
9
+
10
+ /**
11
+ * Failure signature structure:
12
+ * {
13
+ * id: string, // Unique identifier
14
+ * name: string, // Human readable name
15
+ * patterns: string[], // Regex patterns to match
16
+ * platforms: string[], // ['win32', 'darwin', 'linux'] or ['all']
17
+ * category: string, // CATEGORY enum value
18
+ * severity: string, // SEVERITY enum value
19
+ * diagnosis: string, // What went wrong
20
+ * remediation: string, // How to fix
21
+ * commands: object[], // Fix commands
22
+ * links: string[], // Documentation links
23
+ * }
24
+ */
25
+
26
+ const FAILURE_SIGNATURES = [
27
+ // ═══════════════════════════════════════════════════════════════════════════
28
+ // NODE / NPM ERRORS
29
+ // ═══════════════════════════════════════════════════════════════════════════
30
+ {
31
+ id: 'node-version-mismatch',
32
+ name: 'Node Version Mismatch',
33
+ patterns: [
34
+ /The engine "node" is incompatible with this module/i,
35
+ /error.*engine.*node.*required.*\d+/i,
36
+ /unsupported engine/i,
37
+ /NODE_MODULE_VERSION.*was compiled against/i,
38
+ ],
39
+ platforms: ['all'],
40
+ category: CATEGORY.RUNTIME,
41
+ severity: SEVERITY.ERROR,
42
+ diagnosis: 'Node.js version does not match project requirements',
43
+ remediation: 'Install the correct Node.js version specified in package.json engines field',
44
+ commands: [
45
+ { cmd: 'nvm install', desc: 'Install required Node version with nvm', safe: true },
46
+ { cmd: 'nvm use', desc: 'Switch to required Node version', safe: true },
47
+ ],
48
+ links: ['https://github.com/nvm-sh/nvm'],
49
+ },
50
+ {
51
+ id: 'npm-permission-error',
52
+ name: 'NPM Permission Error',
53
+ patterns: [
54
+ /EACCES.*permission denied/i,
55
+ /npm ERR! code EACCES/i,
56
+ /Error: EACCES/i,
57
+ /Missing write access to/i,
58
+ ],
59
+ platforms: ['darwin', 'linux'],
60
+ category: CATEGORY.SYSTEM,
61
+ severity: SEVERITY.ERROR,
62
+ diagnosis: 'npm lacks permission to write to global packages directory',
63
+ remediation: 'Fix npm permissions or use a Node version manager',
64
+ commands: [
65
+ { cmd: 'mkdir ~/.npm-global && npm config set prefix "~/.npm-global"', desc: 'Use local npm prefix', safe: true },
66
+ { cmd: 'export PATH=~/.npm-global/bin:$PATH', desc: 'Add to PATH (add to .bashrc/.zshrc)', safe: true },
67
+ ],
68
+ links: ['https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally'],
69
+ },
70
+ {
71
+ id: 'npm-cache-corrupt',
72
+ name: 'NPM Cache Corruption',
73
+ patterns: [
74
+ /npm ERR! code EINTEGRITY/i,
75
+ /EINTEGRITY.*sha512/i,
76
+ /Integrity checksum failed/i,
77
+ /npm ERR! code EBADPLATFORM/i,
78
+ /npm ERR! cache.*corrupt/i,
79
+ ],
80
+ platforms: ['all'],
81
+ category: CATEGORY.DEPENDENCIES,
82
+ severity: SEVERITY.ERROR,
83
+ diagnosis: 'npm cache is corrupted or has integrity issues',
84
+ remediation: 'Clear npm cache and reinstall dependencies',
85
+ commands: [
86
+ { cmd: 'npm cache clean --force', desc: 'Clear npm cache', safe: true },
87
+ { cmd: 'rm -rf node_modules package-lock.json && npm install', desc: 'Clean reinstall', safe: false },
88
+ ],
89
+ links: ['https://docs.npmjs.com/cli/commands/npm-cache'],
90
+ },
91
+ {
92
+ id: 'npm-network-error',
93
+ name: 'NPM Network Error',
94
+ patterns: [
95
+ /npm ERR! code ETIMEDOUT/i,
96
+ /npm ERR! code ENOTFOUND/i,
97
+ /npm ERR! network/i,
98
+ /npm ERR! code ECONNRESET/i,
99
+ /npm ERR! code ECONNREFUSED/i,
100
+ /getaddrinfo ENOTFOUND registry.npmjs.org/i,
101
+ ],
102
+ platforms: ['all'],
103
+ category: CATEGORY.NETWORK,
104
+ severity: SEVERITY.ERROR,
105
+ diagnosis: 'Cannot connect to npm registry',
106
+ remediation: 'Check internet connection and proxy settings',
107
+ commands: [
108
+ { cmd: 'npm config get proxy', desc: 'Check proxy setting', safe: true },
109
+ { cmd: 'npm config get https-proxy', desc: 'Check HTTPS proxy', safe: true },
110
+ { cmd: 'npm config set registry https://registry.npmjs.org/', desc: 'Reset registry URL', safe: true },
111
+ ],
112
+ links: ['https://docs.npmjs.com/cli/commands/npm-config'],
113
+ },
114
+ {
115
+ id: 'npm-peer-deps',
116
+ name: 'Peer Dependency Conflict',
117
+ patterns: [
118
+ /npm ERR! code ERESOLVE/i,
119
+ /ERESOLVE.*peer dep/i,
120
+ /Could not resolve dependency/i,
121
+ /peer dep missing/i,
122
+ /Conflicting peer dependency/i,
123
+ ],
124
+ platforms: ['all'],
125
+ category: CATEGORY.DEPENDENCIES,
126
+ severity: SEVERITY.WARNING,
127
+ diagnosis: 'Conflicting peer dependencies between packages',
128
+ remediation: 'Resolve conflicts or use legacy peer deps flag',
129
+ commands: [
130
+ { cmd: 'npm install --legacy-peer-deps', desc: 'Install with legacy peer deps', safe: true },
131
+ { cmd: 'npm ls --depth=0', desc: 'Check installed versions', safe: true },
132
+ ],
133
+ links: ['https://docs.npmjs.com/cli/commands/npm-install#legacy-peer-deps'],
134
+ },
135
+
136
+ // ═══════════════════════════════════════════════════════════════════════════
137
+ // FILE SYSTEM ERRORS
138
+ // ═══════════════════════════════════════════════════════════════════════════
139
+ {
140
+ id: 'enoent-file',
141
+ name: 'File Not Found',
142
+ patterns: [
143
+ /ENOENT.*no such file or directory/i,
144
+ /Error: Cannot find module/i,
145
+ /MODULE_NOT_FOUND/i,
146
+ ],
147
+ platforms: ['all'],
148
+ category: CATEGORY.PROJECT,
149
+ severity: SEVERITY.ERROR,
150
+ diagnosis: 'Required file or module is missing',
151
+ remediation: 'Reinstall dependencies or check file paths',
152
+ commands: [
153
+ { cmd: 'npm install', desc: 'Reinstall dependencies', safe: true },
154
+ { cmd: 'npm rebuild', desc: 'Rebuild native modules', safe: true },
155
+ ],
156
+ links: [],
157
+ },
158
+ {
159
+ id: 'enospc-disk',
160
+ name: 'Disk Space Exhausted',
161
+ patterns: [
162
+ /ENOSPC.*no space left on device/i,
163
+ /npm ERR! code ENOSPC/i,
164
+ /Error.*ENOSPC/i,
165
+ ],
166
+ platforms: ['all'],
167
+ category: CATEGORY.SYSTEM,
168
+ severity: SEVERITY.CRITICAL,
169
+ diagnosis: 'Disk is full or has no space for npm operations',
170
+ remediation: 'Free up disk space',
171
+ commands: [
172
+ { cmd: 'npm cache clean --force', desc: 'Clear npm cache', safe: true },
173
+ { cmd: 'rm -rf node_modules/.cache', desc: 'Clear node_modules cache', safe: true },
174
+ { cmd: 'docker system prune -a', desc: 'Clean Docker (if using)', safe: false },
175
+ ],
176
+ links: [],
177
+ },
178
+ {
179
+ id: 'enospc-inotify',
180
+ name: 'inotify Limit Exceeded',
181
+ patterns: [
182
+ /ENOSPC.*inotify/i,
183
+ /System limit for number of file watchers reached/i,
184
+ /Error.*ENOSPC.*watch/i,
185
+ ],
186
+ platforms: ['linux'],
187
+ category: CATEGORY.SYSTEM,
188
+ severity: SEVERITY.ERROR,
189
+ diagnosis: 'Linux inotify file watcher limit reached',
190
+ remediation: 'Increase inotify watcher limit',
191
+ commands: [
192
+ { cmd: 'echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf', desc: 'Increase limit permanently', safe: false },
193
+ { cmd: 'sudo sysctl -p', desc: 'Apply sysctl changes', safe: false },
194
+ ],
195
+ links: ['https://github.com/webpack/webpack/issues/2378'],
196
+ },
197
+ {
198
+ id: 'emfile-handles',
199
+ name: 'Too Many Open Files',
200
+ patterns: [
201
+ /EMFILE.*too many open files/i,
202
+ /Error.*EMFILE/i,
203
+ ],
204
+ platforms: ['darwin', 'linux'],
205
+ category: CATEGORY.SYSTEM,
206
+ severity: SEVERITY.ERROR,
207
+ diagnosis: 'Process has exceeded open file handle limit',
208
+ remediation: 'Increase ulimit for open files',
209
+ commands: [
210
+ { cmd: 'ulimit -n 10240', desc: 'Increase file limit for session', safe: true },
211
+ { cmd: 'echo "ulimit -n 10240" >> ~/.bashrc', desc: 'Make permanent', safe: true },
212
+ ],
213
+ links: [],
214
+ },
215
+
216
+ // ═══════════════════════════════════════════════════════════════════════════
217
+ // WINDOWS-SPECIFIC ERRORS
218
+ // ═══════════════════════════════════════════════════════════════════════════
219
+ {
220
+ id: 'win-long-path',
221
+ name: 'Windows Path Too Long',
222
+ patterns: [
223
+ /ENAMETOOLONG/i,
224
+ /path too long/i,
225
+ /filename.*260.*characters/i,
226
+ /Error.*path length/i,
227
+ ],
228
+ platforms: ['win32'],
229
+ category: CATEGORY.SYSTEM,
230
+ severity: SEVERITY.ERROR,
231
+ diagnosis: 'Windows path exceeds 260 character limit',
232
+ remediation: 'Enable long paths in Windows registry',
233
+ commands: [
234
+ { cmd: 'reg add "HKLM\\SYSTEM\\CurrentControlSet\\Control\\FileSystem" /v LongPathsEnabled /t REG_DWORD /d 1 /f', desc: 'Enable long paths (admin)', safe: false },
235
+ ],
236
+ links: ['https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation'],
237
+ },
238
+ {
239
+ id: 'win-powershell-policy',
240
+ name: 'PowerShell Execution Policy',
241
+ patterns: [
242
+ /cannot be loaded because running scripts is disabled/i,
243
+ /AuthorizationManager.*ExecutionPolicy/i,
244
+ /is not digitally signed/i,
245
+ ],
246
+ platforms: ['win32'],
247
+ category: CATEGORY.SYSTEM,
248
+ severity: SEVERITY.ERROR,
249
+ diagnosis: 'PowerShell execution policy blocks scripts',
250
+ remediation: 'Change PowerShell execution policy',
251
+ commands: [
252
+ { cmd: 'Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser', desc: 'Allow signed scripts', safe: true },
253
+ ],
254
+ links: ['https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.security/set-executionpolicy'],
255
+ },
256
+ {
257
+ id: 'win-eperm',
258
+ name: 'Windows Permission Error',
259
+ patterns: [
260
+ /EPERM.*operation not permitted/i,
261
+ /npm ERR! code EPERM/i,
262
+ /Error: EPERM/i,
263
+ ],
264
+ platforms: ['win32'],
265
+ category: CATEGORY.SYSTEM,
266
+ severity: SEVERITY.ERROR,
267
+ diagnosis: 'Windows file permission or locking issue',
268
+ remediation: 'Close applications using the files and retry',
269
+ commands: [
270
+ { cmd: 'taskkill /F /IM node.exe', desc: 'Kill all Node processes', safe: false },
271
+ { cmd: 'npm cache clean --force', desc: 'Clear npm cache', safe: true },
272
+ ],
273
+ links: [],
274
+ },
275
+
276
+ // ═══════════════════════════════════════════════════════════════════════════
277
+ // BUILD / COMPILE ERRORS
278
+ // ═══════════════════════════════════════════════════════════════════════════
279
+ {
280
+ id: 'native-module-build',
281
+ name: 'Native Module Build Failed',
282
+ patterns: [
283
+ /gyp ERR!/i,
284
+ /node-pre-gyp/i,
285
+ /prebuild-install/i,
286
+ /Cannot find module.*node_modules.*\.node/i,
287
+ /node-gyp rebuild/i,
288
+ ],
289
+ platforms: ['all'],
290
+ category: CATEGORY.DEPENDENCIES,
291
+ severity: SEVERITY.ERROR,
292
+ diagnosis: 'Native module compilation failed',
293
+ remediation: 'Install build tools and Python',
294
+ commands: [
295
+ { cmd: 'npm install -g node-gyp', desc: 'Install node-gyp globally', safe: true },
296
+ { cmd: 'npm rebuild', desc: 'Rebuild native modules', safe: true },
297
+ ],
298
+ links: ['https://github.com/nodejs/node-gyp#installation'],
299
+ },
300
+ {
301
+ id: 'typescript-error',
302
+ name: 'TypeScript Compilation Error',
303
+ patterns: [
304
+ /TS\d{4,5}:/,
305
+ /error TS\d+/i,
306
+ /Cannot find type definition/i,
307
+ /Could not find a declaration file/i,
308
+ ],
309
+ platforms: ['all'],
310
+ category: CATEGORY.PROJECT,
311
+ severity: SEVERITY.ERROR,
312
+ diagnosis: 'TypeScript compilation errors',
313
+ remediation: 'Fix TypeScript errors or check tsconfig.json',
314
+ commands: [
315
+ { cmd: 'npx tsc --noEmit', desc: 'Check TypeScript errors', safe: true },
316
+ { cmd: 'npm install @types/node', desc: 'Install Node types', safe: true },
317
+ ],
318
+ links: ['https://www.typescriptlang.org/docs/handbook/tsconfig-json.html'],
319
+ },
320
+ {
321
+ id: 'eslint-error',
322
+ name: 'ESLint Configuration Error',
323
+ patterns: [
324
+ /ESLint couldn't find the config/i,
325
+ /eslint.*configuration.*invalid/i,
326
+ /Error: No ESLint configuration/i,
327
+ ],
328
+ platforms: ['all'],
329
+ category: CATEGORY.PROJECT,
330
+ severity: SEVERITY.WARNING,
331
+ diagnosis: 'ESLint configuration is missing or invalid',
332
+ remediation: 'Initialize or fix ESLint configuration',
333
+ commands: [
334
+ { cmd: 'npx eslint --init', desc: 'Initialize ESLint', safe: true },
335
+ ],
336
+ links: ['https://eslint.org/docs/user-guide/configuring'],
337
+ },
338
+
339
+ // ═══════════════════════════════════════════════════════════════════════════
340
+ // GIT ERRORS
341
+ // ═══════════════════════════════════════════════════════════════════════════
342
+ {
343
+ id: 'git-not-installed',
344
+ name: 'Git Not Installed',
345
+ patterns: [
346
+ /git.*not recognized/i,
347
+ /git.*command not found/i,
348
+ /'git' is not recognized/i,
349
+ ],
350
+ platforms: ['all'],
351
+ category: CATEGORY.SYSTEM,
352
+ severity: SEVERITY.ERROR,
353
+ diagnosis: 'Git is not installed or not in PATH',
354
+ remediation: 'Install Git',
355
+ commands: [],
356
+ links: ['https://git-scm.com/downloads'],
357
+ },
358
+ {
359
+ id: 'git-lock-file',
360
+ name: 'Git Lock File Exists',
361
+ patterns: [
362
+ /\.git\/index\.lock.*exists/i,
363
+ /Unable to create.*\.lock.*File exists/i,
364
+ /fatal: Unable to create.*lock file/i,
365
+ ],
366
+ platforms: ['all'],
367
+ category: CATEGORY.PROJECT,
368
+ severity: SEVERITY.ERROR,
369
+ diagnosis: 'Git lock file exists from a crashed operation',
370
+ remediation: 'Remove the lock file',
371
+ commands: [
372
+ { cmd: 'rm -f .git/index.lock', desc: 'Remove git index lock', safe: true },
373
+ { cmd: 'rm -f .git/*.lock', desc: 'Remove all git locks', safe: true },
374
+ ],
375
+ links: [],
376
+ },
377
+
378
+ // ═══════════════════════════════════════════════════════════════════════════
379
+ // MEMORY / PERFORMANCE
380
+ // ═══════════════════════════════════════════════════════════════════════════
381
+ {
382
+ id: 'heap-out-of-memory',
383
+ name: 'JavaScript Heap Out of Memory',
384
+ patterns: [
385
+ /FATAL ERROR.*heap/i,
386
+ /JavaScript heap out of memory/i,
387
+ /Allocation failed.*JavaScript heap/i,
388
+ ],
389
+ platforms: ['all'],
390
+ category: CATEGORY.SYSTEM,
391
+ severity: SEVERITY.ERROR,
392
+ diagnosis: 'Node.js ran out of memory',
393
+ remediation: 'Increase Node.js memory limit',
394
+ commands: [
395
+ { cmd: 'export NODE_OPTIONS="--max-old-space-size=4096"', desc: 'Increase to 4GB', safe: true },
396
+ { cmd: 'node --max-old-space-size=8192', desc: 'Run with 8GB', safe: true },
397
+ ],
398
+ links: ['https://nodejs.org/api/cli.html#--max-old-space-sizesize-in-megabytes'],
399
+ },
400
+
401
+ // ═══════════════════════════════════════════════════════════════════════════
402
+ // DOCKER ERRORS
403
+ // ═══════════════════════════════════════════════════════════════════════════
404
+ {
405
+ id: 'docker-not-running',
406
+ name: 'Docker Not Running',
407
+ patterns: [
408
+ /Cannot connect to the Docker daemon/i,
409
+ /docker daemon is not running/i,
410
+ /Is the docker daemon running/i,
411
+ ],
412
+ platforms: ['all'],
413
+ category: CATEGORY.SYSTEM,
414
+ severity: SEVERITY.ERROR,
415
+ diagnosis: 'Docker daemon is not running',
416
+ remediation: 'Start Docker Desktop or docker service',
417
+ commands: [
418
+ { cmd: 'open -a Docker', desc: 'Start Docker Desktop (macOS)', safe: true },
419
+ { cmd: 'sudo systemctl start docker', desc: 'Start Docker (Linux)', safe: false },
420
+ ],
421
+ links: ['https://docs.docker.com/get-docker/'],
422
+ },
423
+ ];
424
+
425
+ /**
426
+ * Match error output against known failure signatures
427
+ * @param {string} errorOutput - Error text to analyze
428
+ * @param {string} platform - Current platform (win32, darwin, linux)
429
+ * @returns {object[]} Matching failure signatures
430
+ */
431
+ function matchFailureSignatures(errorOutput, platform = process.platform) {
432
+ if (!errorOutput) return [];
433
+
434
+ const matches = [];
435
+
436
+ for (const sig of FAILURE_SIGNATURES) {
437
+ // Check platform
438
+ if (!sig.platforms.includes('all') && !sig.platforms.includes(platform)) {
439
+ continue;
440
+ }
441
+
442
+ // Check patterns
443
+ for (const pattern of sig.patterns) {
444
+ const regex = pattern instanceof RegExp ? pattern : new RegExp(pattern, 'i');
445
+ if (regex.test(errorOutput)) {
446
+ matches.push({
447
+ ...sig,
448
+ matchedPattern: pattern.toString(),
449
+ });
450
+ break; // Only match once per signature
451
+ }
452
+ }
453
+ }
454
+
455
+ return matches;
456
+ }
457
+
458
+ /**
459
+ * Get all failure signatures for a specific category
460
+ * @param {string} category - Category to filter by
461
+ * @returns {object[]} Matching signatures
462
+ */
463
+ function getSignaturesByCategory(category) {
464
+ return FAILURE_SIGNATURES.filter(sig => sig.category === category);
465
+ }
466
+
467
+ /**
468
+ * Get all safe fix commands from matched signatures
469
+ * @param {object[]} matches - Matched signatures
470
+ * @returns {object[]} Safe commands
471
+ */
472
+ function getSafeCommands(matches) {
473
+ const commands = [];
474
+
475
+ for (const match of matches) {
476
+ for (const cmd of match.commands || []) {
477
+ if (cmd.safe) {
478
+ commands.push({
479
+ signatureId: match.id,
480
+ signatureName: match.name,
481
+ ...cmd,
482
+ });
483
+ }
484
+ }
485
+ }
486
+
487
+ return commands;
488
+ }
489
+
490
+ /**
491
+ * Format diagnosis for a matched signature
492
+ * @param {object} match - Matched signature
493
+ * @returns {string} Formatted diagnosis
494
+ */
495
+ function formatDiagnosis(match) {
496
+ const lines = [];
497
+ lines.push(` [${match.id}] ${match.name}`);
498
+ lines.push(` Diagnosis: ${match.diagnosis}`);
499
+ lines.push(` Fix: ${match.remediation}`);
500
+
501
+ if (match.commands?.length > 0) {
502
+ lines.push(' Commands:');
503
+ for (const cmd of match.commands) {
504
+ const safeTag = cmd.safe ? '' : ' [DANGEROUS]';
505
+ lines.push(` $ ${cmd.cmd}${safeTag}`);
506
+ lines.push(` ${cmd.desc}`);
507
+ }
508
+ }
509
+
510
+ if (match.links?.length > 0) {
511
+ lines.push(' Links:');
512
+ for (const link of match.links) {
513
+ lines.push(` ${link}`);
514
+ }
515
+ }
516
+
517
+ return lines.join('\n');
518
+ }
519
+
520
+ module.exports = {
521
+ FAILURE_SIGNATURES,
522
+ matchFailureSignatures,
523
+ getSignaturesByCategory,
524
+ getSafeCommands,
525
+ formatDiagnosis,
526
+ };