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,656 @@
1
+ /**
2
+ * Vibecheck CLI Command Registry
3
+ *
4
+ * ═══════════════════════════════════════════════════════════════════════════════
5
+ * VERSION 5.0.0 — CLEAN SURFACE
6
+ * ═══════════════════════════════════════════════════════════════════════════════
7
+ *
8
+ * Single source of truth for the public CLI surface.
9
+ *
10
+ * 12 top-level commands. Everything else is a subcommand, alias, or hidden.
11
+ * Product story: Scan → Ship → Certify
12
+ *
13
+ * 2-tier model:
14
+ * - FREE ($0): Inspect & Observe
15
+ * - PRO ($49/mo): Fix, Prove & Enforce
16
+ *
17
+ * @version 5.0.0
18
+ */
19
+
20
+ "use strict";
21
+
22
+ // ─────────────────────────────────────────────────────────────
23
+ // 12 TOP-LEVEL COMMANDS (the only things users see in --help)
24
+ // ─────────────────────────────────────────────────────────────
25
+ const ALLOWED_COMMANDS = new Set([
26
+ "kickoff",
27
+ "scan",
28
+ "ship",
29
+ "fix",
30
+ "certify",
31
+ "report",
32
+ "reality",
33
+ "firewall",
34
+ "ci",
35
+ "mcp",
36
+ "config",
37
+ "doctor",
38
+ ]);
39
+
40
+ function assertAllowedOnly(obj) {
41
+ const extras = Object.keys(obj).filter((k) => !ALLOWED_COMMANDS.has(k));
42
+ if (extras.length) {
43
+ throw new Error(`Registry contains non-allowed commands: ${extras.join(", ")}`);
44
+ }
45
+ }
46
+
47
+ // ─────────────────────────────────────────────────────────────
48
+ // 12 COMMANDS — Clean Surface
49
+ // ─────────────────────────────────────────────────────────────
50
+ const COMMANDS = {
51
+
52
+ // ══════════════════════════════════════════════════════════════
53
+ // GETTING STARTED
54
+ // ══════════════════════════════════════════════════════════════
55
+
56
+ kickoff: {
57
+ description: "Get started in 60 seconds — detects your project, wires everything, first scan + verdict",
58
+ longDescription: "One command onboarding: link → detect → config → forge → first scan → first ship result → (optional) connect account. Absorbs init, setup, quickstart, link.",
59
+ tier: "free",
60
+ category: "start",
61
+ runner: () => require("./runners/runKickoff").runKickoff,
62
+ subcommands: [
63
+ { name: "link", description: "Bind project (<10s, zero questions)" },
64
+ { name: "config", description: "Edit project configuration" },
65
+ { name: "doctor", description: "Check environment health" },
66
+ ],
67
+ examples: [
68
+ { command: "vibecheck kickoff", description: "60-second first run" },
69
+ { command: "vibecheck kickoff --fast", description: "30-second fast mode" },
70
+ { command: "vibecheck kickoff --no-ship", description: "Skip ship verdict" },
71
+ ],
72
+ related: ["scan", "ship", "doctor"],
73
+ },
74
+
75
+ doctor: {
76
+ description: "Environment + dependency + config health check",
77
+ longDescription: "Comprehensive diagnostics for your development environment.",
78
+ tier: "free",
79
+ category: "start",
80
+ runner: () => require("./runners/runDoctor").runDoctor,
81
+ examples: [
82
+ { command: "vibecheck doctor", description: "Run all health checks" },
83
+ { command: "vibecheck doctor --fix", description: "Auto-fix detected issues" },
84
+ { command: "vibecheck doctor --json", description: "Output as JSON" },
85
+ ],
86
+ related: ["kickoff", "config"],
87
+ },
88
+
89
+ // ══════════════════════════════════════════════════════════════
90
+ // CORE LOOP: Scan → Ship → Certify
91
+ // ══════════════════════════════════════════════════════════════
92
+
93
+ scan: {
94
+ description: "Analyze your project — find code that LOOKS done but DOESN'T work",
95
+ longDescription: "The unified analysis command. Detects dead routes, ghost env vars, fake success UI, auth drift, mock landmines, silent failures. Subcommands for targeted scans.",
96
+ tier: "free",
97
+ category: "core",
98
+ runner: () => require("./runners/runScan").runScan,
99
+ subcommands: [
100
+ { name: "secrets", description: "Scan for leaked secrets & credentials" },
101
+ { name: "vulns", description: "Scan dependencies for vulnerabilities (OSV/CVE)" },
102
+ { name: "routes", description: "Scan for dead/orphan routes" },
103
+ { name: "env", description: "Scan for ghost environment variables" },
104
+ { name: "auth", description: "Scan for auth drift & unprotected endpoints" },
105
+ ],
106
+ examples: [
107
+ { command: "vibecheck scan", description: "Full project scan" },
108
+ { command: "vibecheck scan secrets", description: "Secrets only" },
109
+ { command: "vibecheck scan vulns", description: "Vulnerability scan" },
110
+ { command: "vibecheck scan --deep", description: "Deep cross-file analysis" },
111
+ { command: "vibecheck scan --fail-on critical", description: "CI gate mode" },
112
+ { command: "vibecheck scan --sarif", description: "SARIF output for GitHub" },
113
+ ],
114
+ related: ["ship", "fix", "certify"],
115
+ },
116
+
117
+ ship: {
118
+ description: "Verdict engine — SHIP / WARN / BLOCK",
119
+ longDescription: "The final word on whether your code is ready to ship. Includes preflight mode for comprehensive pre-release validation.",
120
+ tier: "pro",
121
+ category: "core",
122
+ runner: () => require("./runners/runShip").runShip,
123
+ subcommands: [
124
+ { name: "preflight", description: "Pre-release validation wizard (last 10 min before deploy)" },
125
+ ],
126
+ examples: [
127
+ { command: "vibecheck ship", description: "Get shipping verdict" },
128
+ { command: "vibecheck ship --strict", description: "Fail on warnings" },
129
+ { command: "vibecheck ship preflight", description: "Full pre-release checklist" },
130
+ { command: "vibecheck ship preflight --ci", description: "CI mode (non-interactive)" },
131
+ ],
132
+ related: ["scan", "fix", "certify"],
133
+ },
134
+
135
+ fix: {
136
+ description: "Mission-based auto-fix with safety gates",
137
+ longDescription: "Fix Missions V2 — 'Missions, not chaos'. Small, reversible fix missions with pre-flight/post-flight safety gates, checkpoint-based rollback, and plan-only mode.",
138
+ tier: "pro",
139
+ category: "core",
140
+ runner: () => require("./runners/runFix").runFix,
141
+ subcommands: [
142
+ { name: "missions", description: "List fix missions grouped by category" },
143
+ { name: "checkpoint", description: "Snapshot & restore (time machine)" },
144
+ { name: "polish", description: "Final production cleanup" },
145
+ ],
146
+ examples: [
147
+ { command: "vibecheck fix", description: "Plan missions (no changes)" },
148
+ { command: "vibecheck fix --apply", description: "Apply AI fixes with checkpoints" },
149
+ { command: "vibecheck fix --autopilot --apply", description: "Loop until SHIP or stuck" },
150
+ { command: "vibecheck fix --rollback M_xxx", description: "Rollback mission" },
151
+ { command: "vibecheck fix missions", description: "View grouped fix tasks" },
152
+ { command: "vibecheck fix checkpoint list", description: "List snapshots" },
153
+ { command: "vibecheck fix checkpoint restore latest", description: "Restore snapshot" },
154
+ ],
155
+ related: ["scan", "ship"],
156
+ },
157
+
158
+ certify: {
159
+ description: "Full verification chain — ISL + Reality + Chaos + Ship score + badge",
160
+ longDescription: "The flagship command. Runs the complete proof pipeline: truth → verify → prove → seal → badge. Produces a shareable certification artifact.",
161
+ tier: "pro",
162
+ category: "core",
163
+ runner: () => require("./runners/runProve").runProve,
164
+ subcommands: [
165
+ { name: "verify", description: "Run ISL verification only" },
166
+ { name: "prove", description: "Full proof loop (forge → scan → reality → ship)" },
167
+ { name: "seal", description: "Generate badge + cryptographic attestation" },
168
+ { name: "truth", description: "Build/rebuild truthpack artifacts" },
169
+ ],
170
+ examples: [
171
+ { command: "vibecheck certify", description: "Run full certification" },
172
+ { command: "vibecheck certify --badge", description: "Include badge generation" },
173
+ { command: "vibecheck certify --reality", description: "Include browser verification" },
174
+ { command: "vibecheck certify --artifacts", description: "Generate truthpack + evidence" },
175
+ { command: "vibecheck certify verify", description: "Verification only" },
176
+ { command: "vibecheck certify seal --format svg", description: "Generate SVG badge" },
177
+ ],
178
+ related: ["ship", "reality", "report"],
179
+ },
180
+
181
+ // ══════════════════════════════════════════════════════════════
182
+ // EVIDENCE & ENFORCEMENT
183
+ // ══════════════════════════════════════════════════════════════
184
+
185
+ report: {
186
+ description: "Generate reports — HTML, SARIF, JSON, PDF, evidence bundles",
187
+ longDescription: "Produce shareable artifacts: reports, evidence packs, proof graphs, permission matrices. Multiple output formats.",
188
+ tier: "free",
189
+ category: "output",
190
+ runner: () => require("./runners/runPacks").runPacks,
191
+ subcommands: [
192
+ { name: "html", description: "Generate HTML report" },
193
+ { name: "sarif", description: "Generate SARIF for GitHub" },
194
+ { name: "bundle", description: "ZIP bundle + manifest + HTML index" },
195
+ { name: "evidence", description: "Bundle videos, traces, screenshots" },
196
+ { name: "graph", description: "Proof graph with receipt cross-links" },
197
+ { name: "permissions", description: "AuthZ matrix, roles, protected routes" },
198
+ ],
199
+ examples: [
200
+ { command: "vibecheck report", description: "Default HTML report" },
201
+ { command: "vibecheck report sarif", description: "SARIF for GitHub integration" },
202
+ { command: "vibecheck report bundle", description: "Full evidence bundle" },
203
+ { command: "vibecheck report --output ./reports", description: "Custom output dir" },
204
+ ],
205
+ related: ["certify", "scan", "ship"],
206
+ },
207
+
208
+ reality: {
209
+ description: "Browser-based runtime verification (Playwright)",
210
+ longDescription: "Verify your app's actual runtime behavior with Playwright-powered browser testing. Prove what users see is real.",
211
+ tier: "pro",
212
+ category: "verify",
213
+ runner: () => require("./runners/runReality").runReality,
214
+ subcommands: [
215
+ { name: "run", description: "Run reality verification (default)" },
216
+ { name: "replay", description: "Replay a previous reality session" },
217
+ ],
218
+ examples: [
219
+ { command: "vibecheck reality", description: "Auto-detect and test" },
220
+ { command: "vibecheck reality run --url http://localhost:3000", description: "Test localhost" },
221
+ { command: "vibecheck reality replay", description: "Replay last session" },
222
+ ],
223
+ related: ["certify", "ship"],
224
+ },
225
+
226
+ firewall: {
227
+ description: "Agent Firewall — intercept, validate, and enforce AI actions",
228
+ longDescription: "Unified AI enforcement layer. Control what AI agents can do in your codebase. Observe, protect, or lockdown modes. Intent tracking and drift detection.",
229
+ tier: "pro",
230
+ category: "enforce",
231
+ runner: () => require("./runners/runShield").runShield,
232
+ subcommands: [
233
+ { name: "on", description: "Enable firewall (default: observe mode)" },
234
+ { name: "off", description: "Disable firewall" },
235
+ { name: "mode", description: "Set mode: observe | protect | lockdown" },
236
+ { name: "status", description: "Show current firewall status" },
237
+ { name: "rules", description: "Manage firewall rules / forge AI rules" },
238
+ { name: "intent", description: "Declare/show/clear current intent" },
239
+ { name: "approve", description: "Review and approve session changes" },
240
+ ],
241
+ examples: [
242
+ { command: "vibecheck firewall on", description: "Enable in observe mode" },
243
+ { command: "vibecheck firewall mode protect", description: "Switch to protect mode" },
244
+ { command: "vibecheck firewall status", description: "Show status + stats" },
245
+ { command: "vibecheck firewall intent set -s \"fix login bug\"", description: "Set intent" },
246
+ { command: "vibecheck firewall rules", description: "Manage enforcement rules" },
247
+ { command: "vibecheck firewall approve", description: "Review AI changes" },
248
+ ],
249
+ related: ["scan", "certify", "mcp"],
250
+ },
251
+
252
+ // ══════════════════════════════════════════════════════════════
253
+ // AUTOMATION & CONFIG
254
+ // ══════════════════════════════════════════════════════════════
255
+
256
+ ci: {
257
+ description: "One-command enterprise CI wiring (GitHub Actions, GitLab, etc.)",
258
+ longDescription: "Auto-detect your stack and create optimized CI workflows with SARIF output, PR comments, and status checks.",
259
+ tier: "free",
260
+ category: "automation",
261
+ runner: () => require("./runners/runCI").runCI,
262
+ examples: [
263
+ { command: "vibecheck ci", description: "Auto-detect and create CI" },
264
+ { command: "vibecheck ci --dry-run", description: "Preview without creating files" },
265
+ { command: "vibecheck ci --full", description: "All workflows (scan, ship, e2e, security)" },
266
+ { command: "vibecheck ci --validate", description: "Validate existing workflows" },
267
+ ],
268
+ related: ["scan", "ship", "report"],
269
+ },
270
+
271
+ mcp: {
272
+ description: "Start MCP server for AI IDEs (Cursor, Windsurf, Claude)",
273
+ longDescription: "Launch an MCP server for AI IDE integration. 30+ tools for truth verification, intent tracking, and agent management.",
274
+ tier: "pro",
275
+ category: "automation",
276
+ runner: () => require("./runners/runMcp").runMcp,
277
+ examples: [
278
+ { command: "vibecheck mcp", description: "Start MCP server" },
279
+ { command: "vibecheck mcp --port 3099", description: "Custom port" },
280
+ ],
281
+ related: ["firewall", "certify"],
282
+ },
283
+
284
+ config: {
285
+ description: "Manage project configuration, safelist, and settings",
286
+ longDescription: "Central config management. Includes safelist (finding suppression with justification & expiry), project settings, and context management.",
287
+ tier: "free",
288
+ category: "automation",
289
+ runner: () => require("./runners/runSafelist").runSafelist,
290
+ subcommands: [
291
+ { name: "safelist", description: "Manage finding suppressions (add, remove, report, clean)" },
292
+ { name: "context", description: "Manage AI context / truthpack settings" },
293
+ { name: "auth", description: "Authentication (login, logout, whoami)" },
294
+ ],
295
+ examples: [
296
+ { command: "vibecheck config", description: "Show current config" },
297
+ { command: "vibecheck config safelist", description: "List safelist entries" },
298
+ { command: "vibecheck config safelist add --id MOCK_xyz --reason 'Test data'", description: "Suppress finding" },
299
+ { command: "vibecheck config auth login", description: "Log in to VibeCheck" },
300
+ { command: "vibecheck config auth whoami", description: "Show current user" },
301
+ ],
302
+ related: ["kickoff", "doctor"],
303
+ },
304
+ };
305
+
306
+ // Validate
307
+ assertAllowedOnly(COMMANDS);
308
+
309
+ // ─────────────────────────────────────────────────────────────
310
+ // SUBCOMMAND ROUTING
311
+ // ─────────────────────────────────────────────────────────────
312
+ // Maps "parent:sub" → runner require path + export name.
313
+ // main() in vibecheck.js consults this before calling the default runner.
314
+ const SUBCOMMAND_MAP = {
315
+ // scan subcommands
316
+ "scan:secrets": { runner: () => require("./runners/runScan").runScan, prependArgs: ["--category", "secrets"] },
317
+ "scan:vulns": { runner: () => require("./runners/runScan").runScan, prependArgs: ["--category", "vulnerabilities"] },
318
+ "scan:routes": { runner: () => require("./runners/runScan").runScan, prependArgs: ["--category", "routes"] },
319
+ "scan:env": { runner: () => require("./runners/runScan").runScan, prependArgs: ["--category", "env"] },
320
+ "scan:auth": { runner: () => require("./runners/runScan").runScan, prependArgs: ["--category", "auth"] },
321
+
322
+ // ship subcommands
323
+ "ship:preflight": { runner: () => require("./runners/runLaunch").runLaunch },
324
+
325
+ // fix subcommands
326
+ "fix:missions": { runner: () => require("./runners/runFix").runFix, prependArgs: ["--list-missions"] },
327
+ "fix:checkpoint": { runner: () => require("./runners/runCheckpoint").runCheckpoint },
328
+ "fix:polish": { runner: () => require("./runners/runPolish").runPolish },
329
+
330
+ // certify subcommands
331
+ "certify:verify": { runner: () => require("./runners/runProve").runProve, prependArgs: ["--mode", "verify"] },
332
+ "certify:prove": { runner: () => require("./runners/runProve").runProve },
333
+ "certify:seal": { runner: () => require("./runners/runShip").runSeal },
334
+ "certify:truth": { runner: () => require("./runners/runForge").runForge },
335
+
336
+ // report subcommands
337
+ "report:html": { runner: () => require("./runners/runPacks").runPacks, prependArgs: ["report", "--format", "html"] },
338
+ "report:sarif": { runner: () => require("./runners/runPacks").runPacks, prependArgs: ["report", "--format", "sarif"] },
339
+ "report:bundle": { runner: () => require("./runners/runPacks").runPacks, prependArgs: ["bundle"] },
340
+ "report:evidence": { runner: () => require("./runners/runPacks").runPacks, prependArgs: ["evidence"] },
341
+ "report:graph": { runner: () => require("./runners/runPacks").runPacks, prependArgs: ["graph"] },
342
+ "report:permissions": { runner: () => require("./runners/runPacks").runPacks, prependArgs: ["permissions"] },
343
+
344
+ // reality subcommands
345
+ "reality:run": { runner: () => require("./runners/runReality").runReality },
346
+ "reality:replay": { runner: () => require("./runners/runReality").runReality, prependArgs: ["--replay"] },
347
+
348
+ // firewall subcommands
349
+ "firewall:on": { runner: () => require("./runners/runShield").runShield, prependArgs: ["observe"] },
350
+ "firewall:off": { runner: () => require("./runners/runShield").runShield, prependArgs: ["off"] },
351
+ "firewall:mode": { runner: () => require("./runners/runShield").runShield },
352
+ "firewall:status": { runner: () => require("./runners/runShield").runShield, prependArgs: ["status"] },
353
+ "firewall:rules": { runner: () => require("./runners/runForge").runForge },
354
+ "firewall:intent": { runner: () => require("./runners/runIntent").runIntent },
355
+ "firewall:approve": { runner: () => require("./runners/runApprove").runApprove },
356
+
357
+ // config subcommands
358
+ "config:safelist": { runner: () => require("./runners/runSafelist").runSafelist },
359
+ "config:context": { runner: () => require("./runners/runForge").runForge, prependArgs: ["--context-only"] },
360
+ "config:auth": { runner: () => require("./runners/runAuth").runAuth },
361
+ };
362
+
363
+ // ─────────────────────────────────────────────────────────────
364
+ // HIDDEN COMMANDS — work but don't show in --help
365
+ // ─────────────────────────────────────────────────────────────
366
+ // Power-user / internal pipeline commands that still resolve.
367
+ const HIDDEN_COMMANDS = {
368
+ checkpoint: { runner: () => require("./runners/runCheckpoint").runCheckpoint },
369
+ forge: { runner: () => require("./runners/runForge").runForge },
370
+ polish: { runner: () => require("./runners/runPolish").runPolish },
371
+ auth: { runner: () => require("./runners/runAuth").runAuth, skipAuth: true },
372
+ watch: { runner: () => require("./runners/runWatch").runWatch },
373
+ labs: { runner: () => require("./runners/runLabs").runLabs, skipAuth: true },
374
+ intent: { runner: () => require("./runners/runIntent").runIntent },
375
+ approve: { runner: () => require("./runners/runApprove").runApprove },
376
+ seal: { runner: () => require("./runners/runShip").runSeal },
377
+ prove: { runner: () => require("./runners/runProve").runProve },
378
+ safelist: { runner: () => require("./runners/runSafelist").runSafelist },
379
+ packs: { runner: () => require("./runners/runPacks").runPacks },
380
+ link: { runner: () => require("./runners/runLink").runLink },
381
+ audit: { runner: () => require("./runners/runAudit").runAudit },
382
+ shield: { runner: () => require("./runners/runShield").runShield },
383
+ launch: { runner: () => require("./runners/runLaunch").runLaunch },
384
+ };
385
+
386
+ // ─────────────────────────────────────────────────────────────
387
+ // ALIAS MAP — old names → new 12 top-level commands
388
+ // ─────────────────────────────────────────────────────────────
389
+ const ALIAS_MAP = {
390
+ // → kickoff
391
+ "init": "kickoff",
392
+ "setup": "kickoff",
393
+ "quickstart": "kickoff",
394
+ "qs": "kickoff",
395
+ "start": "kickoff",
396
+ "onboard": "kickoff",
397
+ "configure": "kickoff",
398
+
399
+ // → scan
400
+ "audit": "scan",
401
+ "check": "scan",
402
+ "s": "scan",
403
+ "validate": "scan",
404
+
405
+ // → ship
406
+ "launch": "ship",
407
+ "gate": "ship",
408
+ "ci-gate": "ship",
409
+ "preflight": "ship",
410
+ "prelaunch": "ship",
411
+
412
+ // → fix
413
+ "f": "fix",
414
+ "repair": "fix",
415
+ "missions": "fix",
416
+
417
+ // → certify
418
+ "verify": "certify",
419
+ "prove": "certify",
420
+ "seal": "certify",
421
+ "badge": "certify",
422
+ "attest": "certify",
423
+ "truth": "certify",
424
+ "truthpack": "certify",
425
+ "p": "certify",
426
+
427
+ // → report
428
+ "packs": "report",
429
+ "report": "report",
430
+ "html": "report",
431
+ "artifact": "report",
432
+ "artifacts": "report",
433
+ "evidence-pack": "report",
434
+ "bundle": "report",
435
+ "permissions-pack": "report",
436
+ "proof-graph": "report",
437
+
438
+ // → reality
439
+ "browser": "reality",
440
+ "e2e": "reality",
441
+
442
+ // → firewall
443
+ "shield": "firewall",
444
+ "guard": "firewall",
445
+ "ai-guard": "firewall",
446
+ "enforce": "firewall",
447
+ "intent": "firewall",
448
+ "approve": "firewall",
449
+
450
+ // → config
451
+ "safelist": "config",
452
+ "allowlist": "config",
453
+ "al": "config",
454
+ "suppress": "config",
455
+ "context": "config",
456
+ "ctx": "config",
457
+ "rules": "config",
458
+ "ai-rules": "config",
459
+ "mdc": "config",
460
+ "brain": "config",
461
+
462
+ // → doctor
463
+ "health": "doctor",
464
+ "diag": "doctor",
465
+
466
+ // Hidden shortcuts
467
+ "checkpoint": "fix",
468
+ "cp": "fix",
469
+ "snap": "fix",
470
+ "snapshot": "fix",
471
+ "timemachine": "fix",
472
+ "rollback": "fix",
473
+ "w": "scan",
474
+ "dev": "scan",
475
+ "prod": "fix",
476
+ "final": "fix",
477
+
478
+ // Auth shortcuts → config
479
+ "login": "config",
480
+ "logout": "config",
481
+ "whoami": "config",
482
+ "me": "config",
483
+ "signin": "config",
484
+ "signout": "config",
485
+ };
486
+
487
+ // ─────────────────────────────────────────────────────────────
488
+ // DEPRECATION NOTICES for renamed commands
489
+ // ─────────────────────────────────────────────────────────────
490
+ const DEPRECATION_MAP = {
491
+ "audit": { target: "scan", message: "'audit' is now 'scan'" },
492
+ "check": { target: "scan", message: "'check' is now 'scan'" },
493
+ "validate": { target: "scan", message: "'validate' is now 'scan'" },
494
+ "launch": { target: "ship preflight", message: "'launch' is now 'ship preflight'" },
495
+ "init": { target: "kickoff", message: "'init' is now 'kickoff'" },
496
+ "setup": { target: "kickoff", message: "'setup' is now 'kickoff'" },
497
+ "quickstart": { target: "kickoff", message: "'quickstart' is now 'kickoff'" },
498
+ "link": { target: "kickoff", message: "'link' is now part of 'kickoff'" },
499
+ "shield": { target: "firewall", message: "'shield' is now 'firewall'" },
500
+ "guard": { target: "firewall", message: "'guard' is now 'firewall'" },
501
+ "prove": { target: "certify", message: "'prove' is now 'certify'" },
502
+ "verify": { target: "certify", message: "'verify' is now 'certify'" },
503
+ "seal": { target: "certify seal", message: "'seal' is now 'certify seal'" },
504
+ "badge": { target: "certify seal", message: "'badge' is now 'certify seal'" },
505
+ "truth": { target: "certify truth", message: "'truth' is now 'certify truth'" },
506
+ "truthpack": { target: "certify truth", message: "'truthpack' is now 'certify truth'" },
507
+ "packs": { target: "report", message: "'packs' is now 'report'" },
508
+ "safelist": { target: "config safelist", message: "'safelist' is now 'config safelist'" },
509
+ "allowlist": { target: "config safelist", message: "'allowlist' is now 'config safelist'" },
510
+ "context": { target: "config context", message: "'context' is now 'config context'" },
511
+ "ctx": { target: "config context", message: "'ctx' is now 'config context'" },
512
+ "forge": { target: "firewall rules", message: "'forge' is now 'firewall rules' (or still works directly)" },
513
+ "intent": { target: "firewall intent", message: "'intent' is now 'firewall intent'" },
514
+ "approve": { target: "firewall approve", message: "'approve' is now 'firewall approve'" },
515
+ };
516
+
517
+ function isDeprecated(cmd) {
518
+ return cmd in DEPRECATION_MAP;
519
+ }
520
+
521
+ function getDeprecationTarget(cmd) {
522
+ const dep = DEPRECATION_MAP[cmd];
523
+ return dep ? dep.target : null;
524
+ }
525
+
526
+ function getDeprecationMessage(cmd) {
527
+ const dep = DEPRECATION_MAP[cmd];
528
+ return dep ? dep.message : null;
529
+ }
530
+
531
+ // All command names (top-level + aliases + hidden)
532
+ const ALL_COMMANDS = new Set([
533
+ ...Object.keys(COMMANDS),
534
+ ...Object.keys(ALIAS_MAP),
535
+ ...Object.keys(HIDDEN_COMMANDS),
536
+ ]);
537
+
538
+ // ─────────────────────────────────────────────────────────────
539
+ // TIER HELPERS
540
+ // ─────────────────────────────────────────────────────────────
541
+ function isPro(tier) {
542
+ return tier === "pro";
543
+ }
544
+
545
+ function requiresPro(commandName) {
546
+ const cmd = COMMANDS[commandName];
547
+ return cmd && cmd.tier === "pro";
548
+ }
549
+
550
+ function getFreeCommands() {
551
+ return Object.entries(COMMANDS)
552
+ .filter(([, cmd]) => cmd.tier === "free")
553
+ .map(([name]) => name);
554
+ }
555
+
556
+ function getProCommands() {
557
+ return Object.entries(COMMANDS)
558
+ .filter(([, cmd]) => cmd.tier === "pro")
559
+ .map(([name]) => name);
560
+ }
561
+
562
+ // ─────────────────────────────────────────────────────────────
563
+ // GETTERS
564
+ // ─────────────────────────────────────────────────────────────
565
+
566
+ function getRunner(cmd, opts = {}) {
567
+ // Check top-level commands first
568
+ let def = COMMANDS[cmd];
569
+
570
+ // Then check hidden commands
571
+ if (!def) {
572
+ def = HIDDEN_COMMANDS[cmd];
573
+ }
574
+
575
+ if (!def) {
576
+ return null;
577
+ }
578
+
579
+ if (!def.runner) {
580
+ return null;
581
+ }
582
+
583
+ try {
584
+ return def.runner();
585
+ } catch (e) {
586
+ if (opts.red && opts.reset) {
587
+ console.error(`${opts.red}× Failed to load runner for ${cmd}: ${e.message}${opts.reset}`);
588
+ }
589
+ return null;
590
+ }
591
+ }
592
+
593
+ function getSubcommandRunner(parent, sub) {
594
+ const key = `${parent}:${sub}`;
595
+ const def = SUBCOMMAND_MAP[key];
596
+ if (!def) return null;
597
+ try {
598
+ return { runner: def.runner(), prependArgs: def.prependArgs || [] };
599
+ } catch (e) {
600
+ return null;
601
+ }
602
+ }
603
+
604
+ function getCommand(name) {
605
+ return COMMANDS[name] || null;
606
+ }
607
+
608
+ function isValidCommand(name) {
609
+ return name in COMMANDS || name in HIDDEN_COMMANDS;
610
+ }
611
+
612
+ function listCommands() {
613
+ return Object.keys(COMMANDS);
614
+ }
615
+
616
+ // ─────────────────────────────────────────────────────────────
617
+ // EXPORTS
618
+ // ─────────────────────────────────────────────────────────────
619
+ module.exports = {
620
+ // Core data
621
+ COMMANDS,
622
+ ALLOWED_COMMANDS,
623
+ ALIAS_MAP,
624
+ ALL_COMMANDS,
625
+ SUBCOMMAND_MAP,
626
+ HIDDEN_COMMANDS,
627
+ DEPRECATION_MAP,
628
+
629
+ // Tier helpers
630
+ isPro,
631
+ requiresPro,
632
+ getFreeCommands,
633
+ getProCommands,
634
+
635
+ // Getters
636
+ getRunner,
637
+ getSubcommandRunner,
638
+ getCommand,
639
+ isValidCommand,
640
+ listCommands,
641
+
642
+ // Deprecation
643
+ isDeprecated,
644
+ getDeprecationTarget,
645
+ getDeprecationMessage,
646
+
647
+ getCommandsByTier: (tier) =>
648
+ Object.entries(COMMANDS)
649
+ .filter(([, cmd]) => cmd.tier === tier)
650
+ .map(([name, cmd]) => ({ name, ...cmd })),
651
+
652
+ getCommandsByCategory: (category) =>
653
+ Object.entries(COMMANDS)
654
+ .filter(([, cmd]) => cmd.category === category)
655
+ .map(([name, cmd]) => ({ name, ...cmd })),
656
+ };