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
package/bin/.generated ADDED
@@ -0,0 +1,25 @@
1
+ ================================================================================
2
+ ⚠️ GENERATED CODE - DO NOT EDIT
3
+ ================================================================================
4
+
5
+ This directory contains GENERATED build output.
6
+
7
+ All JavaScript files here are compiled from TypeScript sources.
8
+ Manual edits will be OVERWRITTEN on the next build.
9
+
10
+ SOURCE OF TRUTH:
11
+ packages/cli/src/ TypeScript CLI source
12
+ packages/cli/src/commands/ Command implementations
13
+ packages/cli/src/index.ts Main entry point
14
+
15
+ TO MAKE CHANGES:
16
+ 1. Edit the TypeScript source in packages/cli/src/
17
+ 2. Run: pnpm build
18
+ 3. Changes will be reflected here automatically
19
+
20
+ BUILD COMMAND:
21
+ pnpm --filter @vibecheck/cli build
22
+
23
+ ================================================================================
24
+ Generated: 2026-01-17
25
+ ================================================================================
@@ -0,0 +1,463 @@
1
+ /**
2
+ * CLI Command Deprecation System
3
+ *
4
+ * ═══════════════════════════════════════════════════════════════════════════════
5
+ * ENTERPRISE-GRADE DEPRECATION MANAGEMENT
6
+ * ═══════════════════════════════════════════════════════════════════════════════
7
+ *
8
+ * Manages deprecation warnings for renamed commands in v4.0+.
9
+ * Features:
10
+ * - One-time warnings per user per version (cached)
11
+ * - Configurable via environment variables
12
+ * - Machine-readable JSON output for CI
13
+ * - Graceful degradation on cache failures
14
+ *
15
+ * Environment Variables:
16
+ * VIBECHECK_SILENCE_DEPRECATIONS=1 - Suppress all deprecation warnings
17
+ * VIBECHECK_DEPRECATION_JSON=1 - Output warnings as JSON
18
+ *
19
+ * @module _deprecations
20
+ * @version 4.0.0
21
+ * @license MIT
22
+ */
23
+
24
+ "use strict";
25
+
26
+ const fs = require("fs");
27
+ const os = require("os");
28
+ const path = require("path");
29
+
30
+ // ═══════════════════════════════════════════════════════════════════════════════
31
+ // DEPRECATION MAP
32
+ // Maps old command names to their new canonical equivalents
33
+ // ═══════════════════════════════════════════════════════════════════════════════
34
+
35
+ /**
36
+ * Mapping of deprecated commands to their replacements
37
+ * @type {Object.<string, string>}
38
+ */
39
+ const DEPRECATION_MAP = {
40
+ // ─────────────────────────────────────────────────────────────
41
+ // Setup Commands
42
+ // ─────────────────────────────────────────────────────────────
43
+ "init": "link",
44
+ "setup": "link",
45
+ "configure": "link",
46
+ "quickstart": "kickoff",
47
+ "qs": "kickoff",
48
+ "start": "kickoff",
49
+ "onboard": "kickoff",
50
+
51
+ // ─────────────────────────────────────────────────────────────
52
+ // Truth/Context Commands
53
+ // ─────────────────────────────────────────────────────────────
54
+ "context": "forge",
55
+ "ctx": "forge",
56
+ "rules": "forge",
57
+ "ai-rules": "forge",
58
+ "mdc": "forge",
59
+
60
+ // ─────────────────────────────────────────────────────────────
61
+ // Analysis Commands
62
+ // ─────────────────────────────────────────────────────────────
63
+ "scan": "audit",
64
+ "check": "audit",
65
+ "s": "audit",
66
+ "classify": "audit",
67
+ "inventory": "audit",
68
+
69
+ // ─────────────────────────────────────────────────────────────
70
+ // Auth Commands (now subcommands)
71
+ // ─────────────────────────────────────────────────────────────
72
+ "login": "auth login",
73
+ "logout": "auth logout",
74
+ "whoami": "auth whoami",
75
+ "signin": "auth login",
76
+ "signout": "auth logout",
77
+ "me": "auth whoami",
78
+ "user": "auth whoami",
79
+
80
+ // ─────────────────────────────────────────────────────────────
81
+ // Enforcement Commands
82
+ // ─────────────────────────────────────────────────────────────
83
+ "guard": "shield",
84
+ "firewall": "shield",
85
+ "agent": "shield",
86
+ "ai-guard": "shield",
87
+ "validate": "shield verify",
88
+
89
+ // ─────────────────────────────────────────────────────────────
90
+ // CI/CD Commands
91
+ // ─────────────────────────────────────────────────────────────
92
+ "gate": "launch",
93
+ "ci-gate": "launch",
94
+ "enforce": "launch",
95
+ "preflight": "launch",
96
+ "prelaunch": "launch",
97
+
98
+ // ─────────────────────────────────────────────────────────────
99
+ // Config Commands
100
+ // ─────────────────────────────────────────────────────────────
101
+ "allowlist": "safelist",
102
+ "al": "safelist",
103
+ "suppress": "safelist",
104
+
105
+ // ─────────────────────────────────────────────────────────────
106
+ // Artifact Commands (now subcommands of packs)
107
+ // ─────────────────────────────────────────────────────────────
108
+ "evidence-pack": "packs evidence",
109
+ "pack": "packs",
110
+ "bundle": "packs",
111
+ "report": "packs report",
112
+ "html": "packs report",
113
+ "artifact": "packs report",
114
+
115
+ // ─────────────────────────────────────────────────────────────
116
+ // Output Commands
117
+ // ─────────────────────────────────────────────────────────────
118
+ "badge": "seal",
119
+ "attest": "seal",
120
+ };
121
+
122
+ /**
123
+ * Deprecation metadata with additional context
124
+ * @type {Object.<string, Object>}
125
+ */
126
+ const DEPRECATION_METADATA = {
127
+ // Setup
128
+ "init": { reason: "Renamed for clarity", since: "4.0.0", removeIn: "5.0.0" },
129
+ "setup": { reason: "Renamed for clarity", since: "4.0.0", removeIn: "5.0.0" },
130
+ "configure": { reason: "Renamed for clarity", since: "4.0.0", removeIn: "5.0.0" },
131
+ "quickstart": { reason: "Renamed for clarity", since: "4.0.0", removeIn: "5.0.0" },
132
+ "qs": { reason: "Renamed for clarity", since: "4.0.0", removeIn: "5.0.0" },
133
+ "start": { reason: "Renamed for clarity", since: "4.0.0", removeIn: "5.0.0" },
134
+ "onboard": { reason: "Renamed for clarity", since: "4.0.0", removeIn: "5.0.0" },
135
+
136
+ // Truth/Context
137
+ "context": { reason: "Renamed to 'forge' (AI Brain Generator)", since: "4.0.0", removeIn: "5.0.0" },
138
+ "ctx": { reason: "Renamed to 'forge' (AI Brain Generator)", since: "4.0.0", removeIn: "5.0.0" },
139
+ "rules": { reason: "Renamed to 'forge' (AI Brain Generator)", since: "4.0.0", removeIn: "5.0.0" },
140
+ "ai-rules": { reason: "Renamed to 'forge' (AI Brain Generator)", since: "4.0.0", removeIn: "5.0.0" },
141
+ "mdc": { reason: "Renamed to 'forge' (AI Brain Generator)", since: "4.0.0", removeIn: "5.0.0" },
142
+
143
+ // Analysis
144
+ "scan": { reason: "Renamed to 'audit' (convincing wrongness detector)", since: "4.0.0", removeIn: "5.0.0" },
145
+ "check": { reason: "Renamed to 'audit'", since: "4.0.0", removeIn: "5.0.0" },
146
+ "s": { reason: "Renamed to 'audit'", since: "4.0.0", removeIn: "5.0.0" },
147
+ "classify": { reason: "Merged into 'audit'", since: "4.0.0", removeIn: "5.0.0" },
148
+ "inventory": { reason: "Merged into 'audit'", since: "4.0.0", removeIn: "5.0.0" },
149
+
150
+ // Auth (subcommands)
151
+ "login": { reason: "Moved to 'auth login' subcommand", since: "4.0.0", removeIn: "5.0.0" },
152
+ "logout": { reason: "Moved to 'auth logout' subcommand", since: "4.0.0", removeIn: "5.0.0" },
153
+ "whoami": { reason: "Moved to 'auth whoami' subcommand", since: "4.0.0", removeIn: "5.0.0" },
154
+ "signin": { reason: "Moved to 'auth login' subcommand", since: "4.0.0", removeIn: "5.0.0" },
155
+ "signout": { reason: "Moved to 'auth logout' subcommand", since: "4.0.0", removeIn: "5.0.0" },
156
+ "me": { reason: "Moved to 'auth whoami' subcommand", since: "4.0.0", removeIn: "5.0.0" },
157
+ "user": { reason: "Moved to 'auth whoami' subcommand", since: "4.0.0", removeIn: "5.0.0" },
158
+
159
+ // Enforcement
160
+ "guard": { reason: "Unified into 'shield' (Agent Firewall)", since: "4.0.0", removeIn: "5.0.0" },
161
+ "firewall": { reason: "Unified into 'shield' (Agent Firewall)", since: "4.0.0", removeIn: "5.0.0" },
162
+ "agent": { reason: "Unified into 'shield' (Agent Firewall)", since: "4.0.0", removeIn: "5.0.0" },
163
+ "ai-guard": { reason: "Unified into 'shield' (Agent Firewall)", since: "4.0.0", removeIn: "5.0.0" },
164
+ "validate": { reason: "Moved to 'shield verify' subcommand", since: "4.0.0", removeIn: "5.0.0" },
165
+
166
+ // CI/CD
167
+ "gate": { reason: "Renamed to 'launch' (pre-release wizard)", since: "4.0.0", removeIn: "5.0.0" },
168
+ "ci-gate": { reason: "Renamed to 'launch' (pre-release wizard)", since: "4.0.0", removeIn: "5.0.0" },
169
+ "enforce": { reason: "Renamed to 'launch' (pre-release wizard)", since: "4.0.0", removeIn: "5.0.0" },
170
+ "preflight": { reason: "Renamed to 'launch' (pre-release wizard)", since: "4.0.0", removeIn: "5.0.0" },
171
+ "prelaunch": { reason: "Renamed to 'launch' (pre-release wizard)", since: "4.0.0", removeIn: "5.0.0" },
172
+
173
+ // Config
174
+ "allowlist": { reason: "Renamed to 'safelist' (responsible suppression)", since: "4.0.0", removeIn: "5.0.0" },
175
+ "al": { reason: "Renamed to 'safelist'", since: "4.0.0", removeIn: "5.0.0" },
176
+ "suppress": { reason: "Renamed to 'safelist'", since: "4.0.0", removeIn: "5.0.0" },
177
+
178
+ // Artifacts (subcommands)
179
+ "evidence-pack": { reason: "Moved to 'packs evidence' subcommand", since: "4.0.0", removeIn: "5.0.0" },
180
+ "pack": { reason: "Renamed to 'packs'", since: "4.0.0", removeIn: "5.0.0" },
181
+ "bundle": { reason: "Moved to 'packs bundle' subcommand", since: "4.0.0", removeIn: "5.0.0" },
182
+ "report": { reason: "Moved to 'packs report' subcommand", since: "4.0.0", removeIn: "5.0.0" },
183
+ "html": { reason: "Moved to 'packs report' subcommand", since: "4.0.0", removeIn: "5.0.0" },
184
+ "artifact": { reason: "Moved to 'packs report' subcommand", since: "4.0.0", removeIn: "5.0.0" },
185
+
186
+ // Output
187
+ "badge": { reason: "Renamed to 'seal' (ship badge generator)", since: "4.0.0", removeIn: "5.0.0" },
188
+ "attest": { reason: "Renamed to 'seal' (ship badge generator)", since: "4.0.0", removeIn: "5.0.0" },
189
+ };
190
+
191
+ // ═══════════════════════════════════════════════════════════════════════════════
192
+ // CACHE MANAGEMENT
193
+ // ═══════════════════════════════════════════════════════════════════════════════
194
+
195
+ /**
196
+ * Get the path to the deprecation cache file
197
+ * @returns {string} Cache file path
198
+ */
199
+ function getCachePath() {
200
+ return path.join(os.homedir(), ".vibecheck", "deprecations.json");
201
+ }
202
+
203
+ /**
204
+ * Load the deprecation cache
205
+ * @returns {Object} Cache object
206
+ */
207
+ function loadCache() {
208
+ try {
209
+ const cachePath = getCachePath();
210
+ if (fs.existsSync(cachePath)) {
211
+ return JSON.parse(fs.readFileSync(cachePath, "utf8"));
212
+ }
213
+ } catch {
214
+ // Cache is corrupted or inaccessible, return empty
215
+ }
216
+ return {};
217
+ }
218
+
219
+ /**
220
+ * Save to the deprecation cache
221
+ * @param {Object} cache - Cache object to save
222
+ * @returns {boolean} Success status
223
+ */
224
+ function saveCache(cache) {
225
+ try {
226
+ const cachePath = getCachePath();
227
+ fs.mkdirSync(path.dirname(cachePath), { recursive: true });
228
+ fs.writeFileSync(cachePath, JSON.stringify(cache, null, 2));
229
+ return true;
230
+ } catch {
231
+ // Ignore cache write errors (permissions, disk full, etc.)
232
+ return false;
233
+ }
234
+ }
235
+
236
+ // ═══════════════════════════════════════════════════════════════════════════════
237
+ // DEPRECATION WARNING FUNCTIONS
238
+ // ═══════════════════════════════════════════════════════════════════════════════
239
+
240
+ /**
241
+ * Display a deprecation warning once per version
242
+ *
243
+ * @param {string} legacyCommand - The deprecated command name
244
+ * @param {string} newCommand - The replacement command name
245
+ * @param {string} version - Current CLI version
246
+ * @returns {boolean} Whether the warning was shown
247
+ */
248
+ function warnDeprecationOnce(legacyCommand, newCommand, version = "dev") {
249
+ // Early exit conditions
250
+ if (!legacyCommand || !newCommand) return false;
251
+ if (process.env.VIBECHECK_SILENCE_DEPRECATIONS === "1") return false;
252
+
253
+ // Check cache
254
+ const cache = loadCache();
255
+ const cacheKey = `${legacyCommand}@${version}`;
256
+
257
+ if (cache[cacheKey]) {
258
+ return false; // Already warned
259
+ }
260
+
261
+ // Get metadata if available
262
+ const meta = DEPRECATION_METADATA[legacyCommand] || {};
263
+
264
+ // Output format
265
+ if (process.env.VIBECHECK_DEPRECATION_JSON === "1") {
266
+ // JSON output for CI systems
267
+ const warning = {
268
+ type: "deprecation",
269
+ command: legacyCommand,
270
+ replacement: newCommand,
271
+ version,
272
+ since: meta.since,
273
+ removeIn: meta.removeIn,
274
+ reason: meta.reason,
275
+ timestamp: new Date().toISOString(),
276
+ };
277
+ process.stderr.write(JSON.stringify(warning) + "\n");
278
+ } else {
279
+ // Human-readable output with colors
280
+ const c = {
281
+ reset: "\x1b[0m",
282
+ bold: "\x1b[1m",
283
+ dim: "\x1b[2m",
284
+ yellow: "\x1b[33m",
285
+ cyan: "\x1b[36m",
286
+ };
287
+
288
+ process.stderr.write(`
289
+ ${c.yellow}${c.bold}⚠ Deprecation Warning${c.reset}
290
+ ${c.dim}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${c.reset}
291
+ ${c.dim}Command:${c.reset} ${c.yellow}vibecheck ${legacyCommand}${c.reset}
292
+ ${c.dim}Replacement:${c.reset} ${c.cyan}vibecheck ${newCommand}${c.reset}
293
+ ${meta.reason ? ` ${c.dim}Reason:${c.reset} ${meta.reason}\n` : ""}${meta.removeIn ? ` ${c.dim}Remove in:${c.reset} v${meta.removeIn}\n` : ""}
294
+ ${c.dim}Silence with: VIBECHECK_SILENCE_DEPRECATIONS=1${c.reset}
295
+ ${c.dim}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${c.reset}
296
+ `);
297
+ }
298
+
299
+ // Update cache
300
+ cache[cacheKey] = {
301
+ warned: new Date().toISOString(),
302
+ replacement: newCommand,
303
+ };
304
+ saveCache(cache);
305
+
306
+ return true;
307
+ }
308
+
309
+ /**
310
+ * Check if a command is deprecated
311
+ *
312
+ * @param {string} command - Command name to check
313
+ * @returns {boolean} True if deprecated
314
+ */
315
+ function isDeprecatedCommand(command) {
316
+ return command in DEPRECATION_MAP;
317
+ }
318
+
319
+ /**
320
+ * Get the replacement for a deprecated command
321
+ *
322
+ * @param {string} command - Deprecated command name
323
+ * @returns {string|null} Replacement command or null
324
+ */
325
+ function getDeprecationReplacement(command) {
326
+ return DEPRECATION_MAP[command] || null;
327
+ }
328
+
329
+ /**
330
+ * Get deprecation metadata for a command
331
+ *
332
+ * @param {string} command - Command name
333
+ * @returns {Object|null} Metadata object or null
334
+ */
335
+ function getDeprecationMetadata(command) {
336
+ return DEPRECATION_METADATA[command] || null;
337
+ }
338
+
339
+ /**
340
+ * Convenience function: warn if deprecated and return replacement
341
+ *
342
+ * @param {string} command - Command name to check
343
+ * @param {string} version - Current CLI version
344
+ * @returns {string|null} Replacement command if deprecated, null otherwise
345
+ */
346
+ function warnIfDeprecated(command, version = "dev") {
347
+ const replacement = DEPRECATION_MAP[command];
348
+ if (replacement) {
349
+ warnDeprecationOnce(command, replacement, version);
350
+ return replacement;
351
+ }
352
+ return null;
353
+ }
354
+
355
+ /**
356
+ * Get all deprecated commands
357
+ *
358
+ * @returns {Object.<string, string>} Map of deprecated commands to replacements
359
+ */
360
+ function getAllDeprecations() {
361
+ return { ...DEPRECATION_MAP };
362
+ }
363
+
364
+ /**
365
+ * Get deprecation statistics from cache
366
+ *
367
+ * @returns {Object} Statistics object
368
+ */
369
+ function getDeprecationStats() {
370
+ const cache = loadCache();
371
+ const stats = {
372
+ totalWarnings: Object.keys(cache).length,
373
+ byCommand: {},
374
+ byVersion: {},
375
+ lastWarning: null,
376
+ };
377
+
378
+ for (const [key, value] of Object.entries(cache)) {
379
+ const [command, version] = key.split("@");
380
+
381
+ if (!stats.byCommand[command]) {
382
+ stats.byCommand[command] = 0;
383
+ }
384
+ stats.byCommand[command]++;
385
+
386
+ if (!stats.byVersion[version]) {
387
+ stats.byVersion[version] = 0;
388
+ }
389
+ stats.byVersion[version]++;
390
+
391
+ if (!stats.lastWarning || value.warned > stats.lastWarning) {
392
+ stats.lastWarning = value.warned;
393
+ }
394
+ }
395
+
396
+ return stats;
397
+ }
398
+
399
+ /**
400
+ * Clear the deprecation cache
401
+ * Used for testing and reset scenarios
402
+ *
403
+ * @returns {boolean} Success status
404
+ */
405
+ function clearDeprecationCache() {
406
+ try {
407
+ const cachePath = getCachePath();
408
+ if (fs.existsSync(cachePath)) {
409
+ fs.unlinkSync(cachePath);
410
+ }
411
+ return true;
412
+ } catch {
413
+ return false;
414
+ }
415
+ }
416
+
417
+ /**
418
+ * Reset a specific deprecation warning
419
+ *
420
+ * @param {string} command - Command to reset
421
+ * @param {string} version - Version to reset
422
+ * @returns {boolean} Success status
423
+ */
424
+ function resetDeprecationWarning(command, version = "dev") {
425
+ try {
426
+ const cache = loadCache();
427
+ const key = `${command}@${version}`;
428
+ if (cache[key]) {
429
+ delete cache[key];
430
+ saveCache(cache);
431
+ return true;
432
+ }
433
+ return false;
434
+ } catch {
435
+ return false;
436
+ }
437
+ }
438
+
439
+ // ═══════════════════════════════════════════════════════════════════════════════
440
+ // EXPORTS
441
+ // ═══════════════════════════════════════════════════════════════════════════════
442
+
443
+ module.exports = {
444
+ // Core deprecation map
445
+ DEPRECATION_MAP,
446
+ DEPRECATION_METADATA,
447
+
448
+ // Warning functions
449
+ warnDeprecationOnce,
450
+ warnIfDeprecated,
451
+
452
+ // Query functions
453
+ isDeprecatedCommand,
454
+ getDeprecationReplacement,
455
+ getDeprecationMetadata,
456
+ getAllDeprecations,
457
+ getDeprecationStats,
458
+
459
+ // Cache management
460
+ clearDeprecationCache,
461
+ resetDeprecationWarning,
462
+ getCachePath,
463
+ };
package/bin/_router.js ADDED
@@ -0,0 +1,46 @@
1
+ const LEGACY_MAP = {
2
+ // ship is now first-class command, not legacy
3
+ // reality is now its own command - no longer routes to proof
4
+ mockproof: { to: ["proof", "mocks"] },
5
+ hygiene: { to: ["scan", "--only=hygiene"] },
6
+ security: { to: ["scan", "--only=security"] },
7
+ // auth is now a first-class command - use "scan --only=auth" for auth scanning
8
+ routes: { to: ["scan", "--only=routes"] },
9
+ api: { to: ["scan", "--only=contracts"] }, // rename internal concept to contracts
10
+ mock: { to: ["scan", "--only=mocks"] },
11
+ };
12
+
13
+ function routeArgv(argv) {
14
+ const args = argv.slice(2);
15
+ const first = args[0];
16
+
17
+ // Handle top-level flags that act as commands
18
+ if (first === "--version" || first === "-v") {
19
+ return { legacyFrom: null, routed: ["version"] };
20
+ }
21
+ if (first === "--help" || first === "-h") {
22
+ return { legacyFrom: null, routed: ["help"] };
23
+ }
24
+
25
+ // Default command if none
26
+ if (!first || first.startsWith("-")) {
27
+ return { legacyFrom: null, routed: ["scan", ...args] };
28
+ }
29
+
30
+ // Legacy alias handling
31
+ if (LEGACY_MAP[first]) {
32
+ const mapped = LEGACY_MAP[first].to;
33
+ const rest = args.slice(1);
34
+ return { legacyFrom: first, routed: [...mapped, ...rest] };
35
+ }
36
+
37
+ // validate logic
38
+ if (first === "validate") {
39
+ return { legacyFrom: null, routed: args };
40
+ }
41
+
42
+ // Already new-style
43
+ return { legacyFrom: null, routed: args };
44
+ }
45
+
46
+ module.exports = { routeArgv };