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,420 @@
1
+ /**
2
+ * Lawbook Invariant Schema
3
+ *
4
+ * Defines the YAML DSL for organizational invariant rules.
5
+ * Invariants are rules that must ALWAYS hold true in the codebase.
6
+ *
7
+ * Codename: Lawbook
8
+ */
9
+
10
+ "use strict";
11
+
12
+ /**
13
+ * Invariant rule types
14
+ */
15
+ const INVARIANT_TYPES = {
16
+ // File/path based rules
17
+ NO_MODIFY: "no-modify", // Files/paths that cannot be modified
18
+ NO_DELETE: "no-delete", // Files/paths that cannot be deleted
19
+ NO_CREATE: "no-create", // Patterns that cannot be created
20
+ REQUIRE_APPROVAL: "require-approval", // Changes require approval
21
+
22
+ // Code pattern rules
23
+ NEVER: "never", // Pattern must never appear
24
+ ALWAYS: "always", // Pattern must always be present
25
+ BEFORE: "before", // Pattern A must come before pattern B
26
+ AFTER: "after", // Pattern A must come after pattern B
27
+ MAINTAINS: "maintains", // Property must be maintained
28
+
29
+ // Architectural rules
30
+ ALL_THROUGH: "all-through", // All X must go through Y
31
+ NO_DIRECT: "no-direct", // No direct access to X (use Y instead)
32
+ LAYER_BOUNDARY: "layer-boundary", // Enforce architectural layers
33
+
34
+ // Environment rules
35
+ ENV_MUST_BE_REGISTERED: "env-must-be-registered", // All env vars must be in registry
36
+ ENV_REQUIRED: "env-required", // Specific env vars required
37
+
38
+ // Dependency rules
39
+ DEPENDENCY_LOCKED: "dependency-locked", // Dependency version locked
40
+ NO_DEPENDENCY: "no-dependency", // Certain dependencies forbidden
41
+ };
42
+
43
+ /**
44
+ * Invariant severity levels
45
+ */
46
+ const INVARIANT_SEVERITY = {
47
+ BLOCK: "block", // Absolutely cannot proceed
48
+ ERROR: "error", // Serious violation
49
+ WARNING: "warning", // Should be addressed
50
+ INFO: "info", // Advisory
51
+ };
52
+
53
+ /**
54
+ * Invariant scope types
55
+ */
56
+ const SCOPE_TYPES = {
57
+ FILE: "file", // Single file
58
+ DIRECTORY: "directory", // Directory and subdirectories
59
+ GLOB: "glob", // Glob pattern
60
+ REGEX: "regex", // Regex pattern
61
+ ALL: "all", // Entire codebase
62
+ };
63
+
64
+ /**
65
+ * JSON Schema for invariant definitions
66
+ */
67
+ const INVARIANT_SCHEMA = {
68
+ $schema: "http://json-schema.org/draft-07/schema#",
69
+ title: "VibeCheck Lawbook Invariant",
70
+ type: "object",
71
+ required: ["id", "rule"],
72
+ properties: {
73
+ id: {
74
+ type: "string",
75
+ description: "Unique identifier for this invariant",
76
+ pattern: "^[a-z0-9-]+$",
77
+ },
78
+ description: {
79
+ type: "string",
80
+ description: "Human-readable description of this invariant",
81
+ },
82
+ rule: {
83
+ type: "string",
84
+ enum: Object.values(INVARIANT_TYPES),
85
+ description: "Type of invariant rule",
86
+ },
87
+ scope: {
88
+ type: "string",
89
+ description: "Glob pattern defining where this rule applies",
90
+ },
91
+ target: {
92
+ type: "string",
93
+ description: "Target path/file for 'all-through' rules",
94
+ },
95
+ pattern: {
96
+ type: "string",
97
+ description: "Regex pattern to match/exclude",
98
+ },
99
+ exclude: {
100
+ oneOf: [
101
+ { type: "string" },
102
+ { type: "array", items: { type: "string" } },
103
+ ],
104
+ description: "Paths/patterns excluded from this rule",
105
+ },
106
+ violations: {
107
+ type: "array",
108
+ items: {
109
+ type: "object",
110
+ properties: {
111
+ pattern: { type: "string" },
112
+ exclude: {
113
+ oneOf: [
114
+ { type: "string" },
115
+ { type: "array", items: { type: "string" } },
116
+ ],
117
+ },
118
+ message: { type: "string" },
119
+ },
120
+ },
121
+ description: "Specific violation patterns to detect",
122
+ },
123
+ severity: {
124
+ type: "string",
125
+ enum: Object.values(INVARIANT_SEVERITY),
126
+ default: "error",
127
+ description: "Severity level when violated",
128
+ },
129
+ introduced: {
130
+ type: "string",
131
+ format: "date",
132
+ description: "Date this invariant was introduced",
133
+ },
134
+ incident: {
135
+ type: "string",
136
+ description: "Related incident ID that prompted this invariant",
137
+ },
138
+ owner: {
139
+ type: "string",
140
+ description: "Team/person responsible for this invariant",
141
+ },
142
+ registry: {
143
+ type: "string",
144
+ description: "Registry file for env-must-be-registered rules",
145
+ },
146
+ message: {
147
+ type: "string",
148
+ description: "Custom message when violated",
149
+ },
150
+ autofix: {
151
+ type: "object",
152
+ properties: {
153
+ enabled: { type: "boolean", default: false },
154
+ action: { type: "string" },
155
+ template: { type: "string" },
156
+ },
157
+ description: "Auto-fix configuration",
158
+ },
159
+ metadata: {
160
+ type: "object",
161
+ description: "Additional metadata",
162
+ },
163
+ },
164
+ };
165
+
166
+ /**
167
+ * Schema for the full lawbook YAML file
168
+ */
169
+ const LAWBOOK_FILE_SCHEMA = {
170
+ $schema: "http://json-schema.org/draft-07/schema#",
171
+ title: "VibeCheck Lawbook",
172
+ type: "object",
173
+ properties: {
174
+ version: {
175
+ type: "string",
176
+ default: "1.0.0",
177
+ description: "Lawbook schema version",
178
+ },
179
+ name: {
180
+ type: "string",
181
+ description: "Name of this invariant library",
182
+ },
183
+ description: {
184
+ type: "string",
185
+ description: "Description of this invariant library",
186
+ },
187
+ extends: {
188
+ oneOf: [
189
+ { type: "string" },
190
+ { type: "array", items: { type: "string" } },
191
+ ],
192
+ description: "Other lawbooks this extends",
193
+ },
194
+ invariants: {
195
+ type: "array",
196
+ items: { $ref: "#/definitions/invariant" },
197
+ description: "List of invariant rules",
198
+ },
199
+ groups: {
200
+ type: "object",
201
+ additionalProperties: {
202
+ type: "array",
203
+ items: { type: "string" },
204
+ },
205
+ description: "Named groups of invariant IDs",
206
+ },
207
+ },
208
+ definitions: {
209
+ invariant: INVARIANT_SCHEMA,
210
+ },
211
+ };
212
+
213
+ /**
214
+ * Create a default invariant template
215
+ * @param {string} id - Invariant ID
216
+ * @param {string} rule - Rule type
217
+ * @returns {Object} Invariant template
218
+ */
219
+ function createInvariantTemplate(id, rule) {
220
+ return {
221
+ id,
222
+ rule,
223
+ description: "",
224
+ scope: "**/*",
225
+ severity: INVARIANT_SEVERITY.ERROR,
226
+ introduced: new Date().toISOString().split("T")[0],
227
+ metadata: {},
228
+ };
229
+ }
230
+
231
+ /**
232
+ * Validate an invariant against the schema
233
+ * @param {Object} invariant - Invariant to validate
234
+ * @returns {Object} Validation result
235
+ */
236
+ function validateInvariant(invariant) {
237
+ const errors = [];
238
+
239
+ // Check required fields
240
+ if (!invariant.id) {
241
+ errors.push({ field: "id", message: "Invariant ID is required" });
242
+ } else if (!/^[a-z0-9-]+$/.test(invariant.id)) {
243
+ errors.push({ field: "id", message: "Invariant ID must be lowercase alphanumeric with hyphens" });
244
+ }
245
+
246
+ if (!invariant.rule) {
247
+ errors.push({ field: "rule", message: "Rule type is required" });
248
+ } else if (!Object.values(INVARIANT_TYPES).includes(invariant.rule)) {
249
+ errors.push({ field: "rule", message: `Unknown rule type: ${invariant.rule}` });
250
+ }
251
+
252
+ // Validate severity
253
+ if (invariant.severity && !Object.values(INVARIANT_SEVERITY).includes(invariant.severity)) {
254
+ errors.push({ field: "severity", message: `Unknown severity: ${invariant.severity}` });
255
+ }
256
+
257
+ // Rule-specific validation
258
+ if (invariant.rule === INVARIANT_TYPES.ALL_THROUGH && !invariant.target) {
259
+ errors.push({ field: "target", message: "all-through rules require a target" });
260
+ }
261
+
262
+ if ((invariant.rule === INVARIANT_TYPES.NEVER || invariant.rule === INVARIANT_TYPES.ALWAYS) && !invariant.pattern) {
263
+ errors.push({ field: "pattern", message: `${invariant.rule} rules require a pattern` });
264
+ }
265
+
266
+ if (invariant.rule === INVARIANT_TYPES.ENV_MUST_BE_REGISTERED && !invariant.registry) {
267
+ errors.push({ field: "registry", message: "env-must-be-registered rules require a registry file" });
268
+ }
269
+
270
+ return {
271
+ valid: errors.length === 0,
272
+ errors,
273
+ };
274
+ }
275
+
276
+ /**
277
+ * Parse a lawbook YAML string
278
+ * @param {string} content - YAML content
279
+ * @returns {Object} Parsed lawbook
280
+ */
281
+ function parseLawbook(content) {
282
+ // Try to use js-yaml if available
283
+ try {
284
+ const yaml = require("js-yaml");
285
+ return yaml.load(content);
286
+ } catch {
287
+ // Fallback: basic YAML-like parsing for simple cases
288
+ return parseSimpleLawbook(content);
289
+ }
290
+ }
291
+
292
+ /**
293
+ * Simple lawbook parser for basic YAML structures
294
+ * @param {string} content - YAML content
295
+ * @returns {Object} Parsed lawbook
296
+ */
297
+ function parseSimpleLawbook(content) {
298
+ const lines = content.split("\n");
299
+ const lawbook = {
300
+ version: "1.0.0",
301
+ invariants: [],
302
+ };
303
+
304
+ let currentInvariant = null;
305
+ let currentKey = null;
306
+ let indent = 0;
307
+
308
+ for (const line of lines) {
309
+ const trimmed = line.trim();
310
+
311
+ // Skip comments and empty lines
312
+ if (!trimmed || trimmed.startsWith("#")) continue;
313
+
314
+ // Check indent level
315
+ const currentIndent = line.search(/\S/);
316
+
317
+ // Key-value pair
318
+ const kvMatch = trimmed.match(/^(\w+):\s*(.*)$/);
319
+ if (kvMatch) {
320
+ const [, key, value] = kvMatch;
321
+
322
+ if (key === "invariants") {
323
+ // Start of invariants array
324
+ continue;
325
+ }
326
+
327
+ if (currentIndent > indent && currentInvariant) {
328
+ // Nested property
329
+ currentInvariant[key] = value || undefined;
330
+ } else {
331
+ // Top-level property
332
+ lawbook[key] = value;
333
+ }
334
+
335
+ currentKey = key;
336
+ }
337
+
338
+ // Array item
339
+ if (trimmed.startsWith("- ")) {
340
+ const itemContent = trimmed.slice(2).trim();
341
+
342
+ if (itemContent.startsWith("id:")) {
343
+ // New invariant
344
+ if (currentInvariant) {
345
+ lawbook.invariants.push(currentInvariant);
346
+ }
347
+ currentInvariant = { id: itemContent.slice(3).trim() };
348
+ indent = currentIndent;
349
+ }
350
+ }
351
+ }
352
+
353
+ // Push last invariant
354
+ if (currentInvariant) {
355
+ lawbook.invariants.push(currentInvariant);
356
+ }
357
+
358
+ return lawbook;
359
+ }
360
+
361
+ /**
362
+ * Serialize a lawbook to YAML string
363
+ * @param {Object} lawbook - Lawbook to serialize
364
+ * @returns {string} YAML string
365
+ */
366
+ function serializeLawbook(lawbook) {
367
+ try {
368
+ const yaml = require("js-yaml");
369
+ return yaml.dump(lawbook, {
370
+ indent: 2,
371
+ lineWidth: 120,
372
+ noRefs: true,
373
+ });
374
+ } catch {
375
+ // Fallback: simple serialization
376
+ return JSON.stringify(lawbook, null, 2);
377
+ }
378
+ }
379
+
380
+ /**
381
+ * Create a default lawbook template
382
+ * @param {string} name - Lawbook name
383
+ * @returns {Object} Default lawbook
384
+ */
385
+ function createDefaultLawbook(name = "project-invariants") {
386
+ return {
387
+ version: "1.0.0",
388
+ name,
389
+ description: "Project-specific invariant rules",
390
+ invariants: [
391
+ {
392
+ id: "example-no-console",
393
+ description: "No console.log in production code",
394
+ rule: INVARIANT_TYPES.NEVER,
395
+ scope: "src/**/*.{ts,tsx,js,jsx}",
396
+ pattern: "console\\.log\\(",
397
+ exclude: ["**/*.test.*", "**/*.spec.*"],
398
+ severity: INVARIANT_SEVERITY.WARNING,
399
+ introduced: new Date().toISOString().split("T")[0],
400
+ },
401
+ ],
402
+ groups: {
403
+ security: [],
404
+ architecture: [],
405
+ quality: [],
406
+ },
407
+ };
408
+ }
409
+
410
+ module.exports = {
411
+ INVARIANT_TYPES,
412
+ INVARIANT_SEVERITY,
413
+ INVARIANT_SCHEMA,
414
+ LAWBOOK_FILE_SCHEMA,
415
+ createInvariantTemplate,
416
+ validateInvariant,
417
+ parseLawbook,
418
+ serializeLawbook,
419
+ createDefaultLawbook,
420
+ };
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Agent Firewall Logger Utility
3
+ *
4
+ * Centralized logging for agent-firewall modules.
5
+ * Provides structured logging without console.* calls.
6
+ */
7
+
8
+ "use strict";
9
+
10
+ /**
11
+ * Log levels
12
+ */
13
+ const LOG_LEVELS = {
14
+ DEBUG: 0,
15
+ INFO: 1,
16
+ WARN: 2,
17
+ ERROR: 3,
18
+ SILENT: 4,
19
+ };
20
+
21
+ /**
22
+ * Current log level (from environment or default)
23
+ */
24
+ let currentLevel = LOG_LEVELS.INFO;
25
+
26
+ if (process.env.VIBECHECK_LOG_LEVEL) {
27
+ const envLevel = process.env.VIBECHECK_LOG_LEVEL.toUpperCase();
28
+ if (LOG_LEVELS[envLevel] !== undefined) {
29
+ currentLevel = LOG_LEVELS[envLevel];
30
+ }
31
+ }
32
+
33
+ /**
34
+ * Log buffer for inspection
35
+ */
36
+ const logBuffer = [];
37
+ const MAX_BUFFER_SIZE = 500;
38
+
39
+ /**
40
+ * Write a log entry
41
+ * @param {number} level - Log level
42
+ * @param {string} levelName - Level name
43
+ * @param {string} module - Module name
44
+ * @param {string} message - Message
45
+ * @param {Error} [error] - Optional error
46
+ */
47
+ function writeLog(level, levelName, module, message, error) {
48
+ if (level < currentLevel) return;
49
+
50
+ const entry = {
51
+ timestamp: new Date().toISOString(),
52
+ level: levelName,
53
+ module,
54
+ message,
55
+ error: error ? { message: error.message, stack: error.stack } : null,
56
+ };
57
+
58
+ // Buffer for later inspection
59
+ logBuffer.push(entry);
60
+ if (logBuffer.length > MAX_BUFFER_SIZE) {
61
+ logBuffer.shift();
62
+ }
63
+
64
+ // Only write to stderr in debug mode or for warnings/errors
65
+ const formatted = `[${entry.timestamp}] [${levelName}] [${module}] ${message}`;
66
+ if (level >= LOG_LEVELS.WARN || process.env.VIBECHECK_DEBUG) {
67
+ process.stderr.write(formatted + '\n');
68
+ }
69
+ }
70
+
71
+ /**
72
+ * Create a logger for a module
73
+ * @param {string} moduleName - Module name
74
+ * @returns {Object} Logger
75
+ */
76
+ function createLogger(moduleName) {
77
+ return {
78
+ debug: function(msg) { writeLog(LOG_LEVELS.DEBUG, 'DEBUG', moduleName, msg); },
79
+ info: function(msg) { writeLog(LOG_LEVELS.INFO, 'INFO', moduleName, msg); },
80
+ warn: function(msg, err) { writeLog(LOG_LEVELS.WARN, 'WARN', moduleName, msg, err || null); },
81
+ error: function(msg, err) { writeLog(LOG_LEVELS.ERROR, 'ERROR', moduleName, msg, err || null); },
82
+ };
83
+ }
84
+
85
+ /**
86
+ * Get error message safely
87
+ * @param {*} error - Error
88
+ * @returns {string} Message
89
+ */
90
+ function getErrorMessage(error) {
91
+ if (error instanceof Error) return error.message;
92
+ if (typeof error === 'string') return error;
93
+ if (error && typeof error === 'object' && 'message' in error) {
94
+ return String(error.message);
95
+ }
96
+ return String(error);
97
+ }
98
+
99
+ /**
100
+ * Set log level
101
+ * @param {string|number} level - Level
102
+ */
103
+ function setLogLevel(level) {
104
+ if (typeof level === 'string') {
105
+ const upper = level.toUpperCase();
106
+ if (LOG_LEVELS[upper] !== undefined) {
107
+ currentLevel = LOG_LEVELS[upper];
108
+ }
109
+ } else if (typeof level === 'number') {
110
+ currentLevel = level;
111
+ }
112
+ }
113
+
114
+ /**
115
+ * Get recent logs
116
+ * @param {number} count - Count
117
+ * @returns {Object[]} Logs
118
+ */
119
+ function getRecentLogs(count) {
120
+ return logBuffer.slice(-(count || 100));
121
+ }
122
+
123
+ // Pre-created loggers
124
+ const lawbookLogger = createLogger('Lawbook');
125
+ const timeMachineLogger = createLogger('TimeMachine');
126
+ const realityLogger = createLogger('Reality');
127
+ const criticLogger = createLogger('Critic');
128
+ const simulatorLogger = createLogger('Simulator');
129
+
130
+ module.exports = {
131
+ createLogger,
132
+ getErrorMessage,
133
+ setLogLevel,
134
+ getRecentLogs,
135
+ LOG_LEVELS,
136
+ lawbookLogger,
137
+ timeMachineLogger,
138
+ realityLogger,
139
+ criticLogger,
140
+ simulatorLogger,
141
+ };
@@ -0,0 +1,90 @@
1
+ {
2
+ "version": "1.0",
3
+ "mode": "enforce",
4
+ "profile": "repo-lock",
5
+ "scope": {
6
+ "max_files_touched": 10,
7
+ "max_lines_changed": 600,
8
+ "blocked_paths": [
9
+ "**/node_modules/**",
10
+ "**/dist/**",
11
+ "**/.next/**",
12
+ "**/.vibecheck/packets/**"
13
+ ],
14
+ "allowed_paths": [
15
+ "apps/**",
16
+ "packages/**",
17
+ "src/**"
18
+ ],
19
+ "require_intent_for_expand_scope": true
20
+ },
21
+ "hard_domains": {
22
+ "routes": true,
23
+ "env": true,
24
+ "auth": true,
25
+ "contracts": true,
26
+ "payments": true,
27
+ "side_effects": true
28
+ },
29
+ "rules": {
30
+ "ghost_route": {
31
+ "severity": "block",
32
+ "enabled": true
33
+ },
34
+ "ghost_env": {
35
+ "severity": "block",
36
+ "enabled": true
37
+ },
38
+ "auth_drift": {
39
+ "severity": "block",
40
+ "enabled": true
41
+ },
42
+ "contract_drift": {
43
+ "severity": "block",
44
+ "enabled": true
45
+ },
46
+ "fake_success_ui": {
47
+ "severity": "warn",
48
+ "enabled": true,
49
+ "block_if_domain": ["payments", "auth", "side_effects"]
50
+ },
51
+ "scope_explosion": {
52
+ "severity": "block",
53
+ "enabled": true
54
+ },
55
+ "unsafe_side_effect": {
56
+ "severity": "block",
57
+ "enabled": true
58
+ },
59
+ "ai_false_positive_detection": {
60
+ "enabled": true,
61
+ "confidence_threshold": 0.8,
62
+ "logSkipped": true,
63
+ "useLLM": false
64
+ }
65
+ },
66
+ "evidence": {
67
+ "require_pointers": true,
68
+ "acceptable_sources": [
69
+ "truthpack.routes",
70
+ "truthpack.env",
71
+ "truthpack.auth",
72
+ "truthpack.contracts",
73
+ "repo.search"
74
+ ],
75
+ "pointer_format": "file:lineStart-lineEnd"
76
+ },
77
+ "verification": {
78
+ "require_for_domains": ["auth", "payments", "side_effects"],
79
+ "accepted": ["tests", "reality"],
80
+ "reality": {
81
+ "enabled": true,
82
+ "block_on": ["fake_success", "no_mutation", "network_error"]
83
+ }
84
+ },
85
+ "output": {
86
+ "write_change_packets": true,
87
+ "packet_dir": ".vibecheck/packets",
88
+ "report_formats": ["md", "html"]
89
+ }
90
+ }