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,421 @@
1
+ /**
2
+ * Risk Vectors
3
+ *
4
+ * Defines the risk vectors and their default weights for scoring changes.
5
+ * Each vector contributes to the overall risk score.
6
+ */
7
+
8
+ "use strict";
9
+
10
+ /**
11
+ * Risk vector definitions
12
+ */
13
+ const RISK_VECTORS = {
14
+ /**
15
+ * Surface Area
16
+ * How many files are touched by the change
17
+ */
18
+ SURFACE_AREA: {
19
+ id: "surface_area",
20
+ name: "Surface Area",
21
+ description: "Number of files touched by the change",
22
+ baseWeight: 1,
23
+ calculate: (context) => {
24
+ const files = context.files || [];
25
+ const fileCount = files.length;
26
+
27
+ // Single file changes are very common and safe - no penalty
28
+ if (fileCount <= 1) return 0;
29
+
30
+ // Count "safe" files that shouldn't add to risk
31
+ const safeFiles = files.filter(f => {
32
+ const path = (f.path || f).toLowerCase();
33
+ return (
34
+ path.includes('.test.') || path.includes('.spec.') ||
35
+ path.includes('__tests__') || path.includes('__mocks__') ||
36
+ path.endsWith('.md') || path.endsWith('.mdx') ||
37
+ path.endsWith('.d.ts') || path.includes('.stories.') ||
38
+ path.endsWith('-lock.json') || path.endsWith('.lock') ||
39
+ path.includes('/docs/')
40
+ );
41
+ });
42
+
43
+ // Effective file count excludes safe files
44
+ const effectiveCount = fileCount - safeFiles.length;
45
+
46
+ // More generous thresholds
47
+ if (effectiveCount <= 1) return 0;
48
+ if (effectiveCount <= 3) return effectiveCount; // 1 point each
49
+ if (effectiveCount <= 5) return 3 + (effectiveCount - 3) * 2; // 2 points each
50
+ if (effectiveCount <= 10) return 7 + (effectiveCount - 5) * 3; // 3 points each
51
+ return 22 + (effectiveCount - 10) * 4; // 4 points each for large changes
52
+ },
53
+ },
54
+
55
+ /**
56
+ * Blast Radius
57
+ * Impact on core vs peripheral code
58
+ */
59
+ BLAST_RADIUS: {
60
+ id: "blast_radius",
61
+ name: "Blast Radius",
62
+ description: "Impact on core vs peripheral code paths",
63
+ baseWeight: 1,
64
+ calculate: (context) => {
65
+ let score = 0;
66
+ const files = context.files || [];
67
+
68
+ // For single-file changes, apply a discount since they're typically safer
69
+ const singleFileDiscount = files.length === 1 ? 0.6 : 1;
70
+
71
+ for (const file of files) {
72
+ const path = (file.path || file).toLowerCase();
73
+ let fileScore = 0;
74
+
75
+ // Tests have ZERO impact - they can't break production
76
+ if (path.includes("/test") || path.includes(".test.") || path.includes(".spec.") ||
77
+ path.includes("__tests__") || path.includes("__mocks__")) {
78
+ fileScore = 0;
79
+ }
80
+ // Documentation and config have minimal impact
81
+ else if (path.endsWith(".md") || path.endsWith(".mdx") ||
82
+ path.includes("/docs/") || path.includes("readme")) {
83
+ fileScore = 0;
84
+ }
85
+ // Type definitions are low risk
86
+ else if (path.endsWith(".d.ts") || path.includes("/types/")) {
87
+ fileScore = 2;
88
+ }
89
+ // Storybook/examples - no production impact
90
+ else if (path.includes(".stories.") || path.includes("/examples/") || path.includes("/storybook/")) {
91
+ fileScore = 0;
92
+ }
93
+ // Core paths - high impact but reduced from 25
94
+ else if (path.includes("/core/") || path.includes("/lib/") || path.includes("/shared/")) {
95
+ fileScore = 15;
96
+ }
97
+ // Database/schema - high impact
98
+ else if (path.includes("/prisma/") || path.includes("/db/") || path.includes("/schema/")) {
99
+ fileScore = 18;
100
+ }
101
+ // Service paths - medium-high impact (reduced from 20)
102
+ else if (path.includes("/services/") || path.includes("/providers/")) {
103
+ fileScore = 12;
104
+ }
105
+ // Middleware - medium-high impact (reduced from 18)
106
+ else if (path.includes("/middleware/")) {
107
+ fileScore = 10;
108
+ }
109
+ // API routes - medium impact (reduced from 15)
110
+ else if (path.includes("/routes/") || path.includes("/api/")) {
111
+ fileScore = 8;
112
+ }
113
+ // Config files - low impact (reduced from 12)
114
+ else if (path.includes("/config/")) {
115
+ fileScore = 5;
116
+ }
117
+ // Package.json is special - lock files are fine, package.json needs care
118
+ else if (path.endsWith("package.json")) {
119
+ fileScore = 8;
120
+ }
121
+ else if (path.endsWith("package-lock.json") || path.endsWith("pnpm-lock.yaml") || path.endsWith("yarn.lock")) {
122
+ fileScore = 0; // Lock files are auto-generated
123
+ }
124
+ // JSON/YAML config files - minimal impact
125
+ else if (path.endsWith(".json") || path.endsWith(".yaml") || path.endsWith(".yml")) {
126
+ fileScore = 3;
127
+ }
128
+ // Components/Pages - low impact (UI changes)
129
+ else if (path.includes("/components/") || path.includes("/pages/") || path.includes("/app/")) {
130
+ fileScore = 3;
131
+ }
132
+ // Styles - minimal impact
133
+ else if (path.endsWith(".css") || path.endsWith(".scss") || path.endsWith(".less")) {
134
+ fileScore = 1;
135
+ }
136
+ // Everything else - low impact
137
+ else {
138
+ fileScore = 2;
139
+ }
140
+
141
+ score += fileScore;
142
+ }
143
+
144
+ // Apply single-file discount
145
+ return Math.round(score * singleFileDiscount);
146
+ },
147
+ },
148
+
149
+ /**
150
+ * Irreversibility
151
+ * How hard it is to undo the change
152
+ */
153
+ IRREVERSIBILITY: {
154
+ id: "irreversibility",
155
+ name: "Irreversibility",
156
+ description: "Difficulty of undoing the change",
157
+ baseWeight: 1,
158
+ calculate: (context) => {
159
+ let score = 0;
160
+ const operations = context.operations || [];
161
+ const files = context.files || [];
162
+
163
+ for (const op of operations) {
164
+ const type = op.type?.toLowerCase();
165
+ const path = (op.path || "").toLowerCase();
166
+
167
+ // Deletions are highly irreversible
168
+ if (type === "delete") {
169
+ score += 20;
170
+ // Even more for core files
171
+ if (path.includes("/core/") || path.includes("/lib/")) {
172
+ score += 15;
173
+ }
174
+ }
175
+ // Migrations are very irreversible
176
+ else if (path.includes("migration") || path.includes("/prisma/")) {
177
+ score += 30;
178
+ }
179
+ // Schema changes are irreversible
180
+ else if (path.includes("schema") || path.includes(".prisma")) {
181
+ score += 25;
182
+ }
183
+ }
184
+
185
+ // Check for delete operations in files
186
+ for (const file of files) {
187
+ const path = (file.path || file).toLowerCase();
188
+ if (path.includes("migration")) {
189
+ score += 25;
190
+ }
191
+ }
192
+
193
+ return score;
194
+ },
195
+ },
196
+
197
+ /**
198
+ * Confidence
199
+ * How confident we are in the change's safety
200
+ */
201
+ CONFIDENCE: {
202
+ id: "confidence",
203
+ name: "Confidence Gap",
204
+ description: "Points added for unverified assumptions",
205
+ baseWeight: 1,
206
+ calculate: (context) => {
207
+ let score = 0;
208
+
209
+ // Unresolved assumptions add risk (reduced from 40 to 15 per assumption)
210
+ // Most assumptions are benign and resolve at runtime
211
+ const unresolvedAssumptions = context.unresolvedAssumptions || [];
212
+ const assumptionCount = unresolvedAssumptions.length;
213
+
214
+ // Use diminishing returns for multiple assumptions
215
+ if (assumptionCount > 0) {
216
+ // First assumption: 15 points, then 10, then 5 each for more
217
+ score += Math.min(15 + Math.max(0, assumptionCount - 1) * 5, 40);
218
+ }
219
+
220
+ // Low confidence in proposal (reduced from 30/20/10 to 15/10/5)
221
+ const confidence = context.proposalConfidence ?? 1;
222
+ if (confidence < 0.3) {
223
+ score += 15;
224
+ } else if (confidence < 0.5) {
225
+ score += 10;
226
+ } else if (confidence < 0.7) {
227
+ score += 5;
228
+ }
229
+ // Note: 0.7+ confidence adds no penalty (default is fine)
230
+
231
+ // Missing intent - only penalize if completely missing
232
+ // Many agents provide minimal but valid intents
233
+ if (!context.intent || context.intent.trim().length === 0) {
234
+ score += 8;
235
+ }
236
+
237
+ return score;
238
+ },
239
+ },
240
+
241
+ /**
242
+ * Novelty
243
+ * Whether this introduces new patterns
244
+ */
245
+ NOVELTY: {
246
+ id: "novelty",
247
+ name: "Novelty",
248
+ description: "Introduction of new patterns or dependencies",
249
+ baseWeight: 1,
250
+ calculate: (context) => {
251
+ let score = 0;
252
+
253
+ // New dependencies - only risky if adding many
254
+ // Single new dependency is very common during development
255
+ const newDependencies = context.newDependencies || [];
256
+ if (newDependencies.length > 3) {
257
+ score += 5 + (newDependencies.length - 3) * 3; // Only penalize bulk additions
258
+ }
259
+
260
+ // New files being created - very normal during development
261
+ // Only flag if creating many files at once (could be a scaffold)
262
+ const operations = context.operations || [];
263
+ const creations = operations.filter(op => op.type === "create");
264
+ if (creations.length > 5) {
265
+ score += (creations.length - 5) * 2;
266
+ }
267
+
268
+ // New env vars - reduced from 15 to 5 per var
269
+ // New env vars are common when adding features
270
+ const newEnvVars = context.newEnvVars || [];
271
+ score += Math.min(newEnvVars.length * 5, 15); // Cap at 15 points
272
+
273
+ // New routes - reduced from 8 to 3 per route
274
+ // Adding routes is normal API development
275
+ const newRoutes = context.newRoutes || [];
276
+ score += Math.min(newRoutes.length * 3, 12); // Cap at 12 points
277
+
278
+ return score;
279
+ },
280
+ },
281
+
282
+ /**
283
+ * Domain Risk
284
+ * Risk based on the domain being modified
285
+ */
286
+ DOMAIN: {
287
+ id: "domain",
288
+ name: "Domain Risk",
289
+ description: "Risk associated with specific domains",
290
+ baseWeight: 1,
291
+ calculate: (context) => {
292
+ const domains = context.domains || [];
293
+
294
+ // If no domains identified, it's likely a safe general change
295
+ if (domains.length === 0) return 0;
296
+
297
+ // Reduced domain weights to avoid over-penalizing
298
+ // Single-file auth changes shouldn't trigger blocks by themselves
299
+ const domainWeights = {
300
+ payments: 20, // Reduced from 35 - payments is sensitive but not always blocking
301
+ auth: 15, // Reduced from 30 - many auth changes are benign
302
+ security: 15, // Reduced from 30 - security patterns are common
303
+ database: 12, // Reduced from 25 - schema changes are normal
304
+ middleware: 8, // Reduced from 20 - middleware is often safe
305
+ core: 10, // Reduced from 20 - core changes happen regularly
306
+ routes: 5, // Reduced from 15 - route changes are common
307
+ contracts: 8, // Reduced from 15 - API contracts evolve
308
+ config: 3, // Reduced from 12 - config is usually safe
309
+ ui: 0, // Reduced from 5 - UI changes are generally safe
310
+ test: 0, // Reduced from 2 - tests have no production impact
311
+ general: 0, // Reduced from 3 - general is the default, shouldn't add risk
312
+ };
313
+
314
+ // Only count the highest-risk domain (don't stack)
315
+ // This prevents a file in "auth + routes" from getting double-penalized
316
+ let maxScore = 0;
317
+ for (const domain of domains) {
318
+ const weight = domainWeights[domain] ?? 2;
319
+ maxScore = Math.max(maxScore, weight);
320
+ }
321
+
322
+ return maxScore;
323
+ },
324
+ },
325
+
326
+ /**
327
+ * Side Effects
328
+ * Potential for unintended side effects
329
+ */
330
+ SIDE_EFFECTS: {
331
+ id: "side_effects",
332
+ name: "Side Effects",
333
+ description: "Potential for unintended side effects",
334
+ baseWeight: 1,
335
+ calculate: (context) => {
336
+ let score = 0;
337
+ const claims = context.claims || [];
338
+
339
+ // Network calls - very common, reduced impact
340
+ // Only penalize if there are many or if they're to external services
341
+ const networkClaims = claims.filter(c =>
342
+ c.type === "fetch" || c.type === "api_call" || c.type === "network"
343
+ );
344
+ // First 3 network calls are free (normal API usage)
345
+ if (networkClaims.length > 3) {
346
+ score += (networkClaims.length - 3) * 5;
347
+ }
348
+
349
+ // File system operations - only server-side concerns
350
+ const fsClaims = claims.filter(c =>
351
+ c.type === "fs_write" || c.type === "fs_delete"
352
+ );
353
+ // Writes are more concerning than reads
354
+ const writeOps = fsClaims.filter(c => c.type === "fs_write");
355
+ const deleteOps = fsClaims.filter(c => c.type === "fs_delete");
356
+ score += writeOps.length * 5;
357
+ score += deleteOps.length * 10; // Deletes are more dangerous
358
+
359
+ // Database mutations - important but common
360
+ const dbClaims = claims.filter(c =>
361
+ c.type === "db_write" || c.type === "db_delete" || c.type === "db_mutation"
362
+ );
363
+ // Only penalize destructive DB operations heavily
364
+ const dbDeletes = dbClaims.filter(c => c.type === "db_delete");
365
+ const dbWrites = dbClaims.filter(c => c.type !== "db_delete");
366
+ score += dbWrites.length * 3;
367
+ score += dbDeletes.length * 12;
368
+
369
+ // External service calls - reduced from 18 to 8
370
+ // Calling external APIs is normal
371
+ const externalClaims = claims.filter(c =>
372
+ c.type === "external_service" || c.type === "webhook"
373
+ );
374
+ score += Math.min(externalClaims.length * 8, 20); // Cap at 20
375
+
376
+ return score;
377
+ },
378
+ },
379
+ };
380
+
381
+ /**
382
+ * Risk level thresholds
383
+ */
384
+ const RISK_LEVELS = {
385
+ LOW: { min: 0, max: 25, label: "LOW", color: "green" },
386
+ MEDIUM: { min: 26, max: 50, label: "MEDIUM", color: "yellow" },
387
+ HIGH: { min: 51, max: 80, label: "HIGH", color: "orange" },
388
+ CRITICAL: { min: 81, max: Infinity, label: "CRITICAL", color: "red" },
389
+ };
390
+
391
+ /**
392
+ * Get risk level from score
393
+ */
394
+ function getRiskLevel(score) {
395
+ if (score <= RISK_LEVELS.LOW.max) return RISK_LEVELS.LOW;
396
+ if (score <= RISK_LEVELS.MEDIUM.max) return RISK_LEVELS.MEDIUM;
397
+ if (score <= RISK_LEVELS.HIGH.max) return RISK_LEVELS.HIGH;
398
+ return RISK_LEVELS.CRITICAL;
399
+ }
400
+
401
+ /**
402
+ * Get all vector IDs
403
+ */
404
+ function getVectorIds() {
405
+ return Object.values(RISK_VECTORS).map(v => v.id);
406
+ }
407
+
408
+ /**
409
+ * Get vector by ID
410
+ */
411
+ function getVector(id) {
412
+ return Object.values(RISK_VECTORS).find(v => v.id === id);
413
+ }
414
+
415
+ module.exports = {
416
+ RISK_VECTORS,
417
+ RISK_LEVELS,
418
+ getRiskLevel,
419
+ getVectorIds,
420
+ getVector,
421
+ };