@boshu2/vibe-check 1.8.0 โ†’ 2.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 (379) hide show
  1. package/.claude/settings.local.json +1 -1
  2. package/CHANGELOG.md +10 -0
  3. package/CLAUDE.md +58 -0
  4. package/Makefile +43 -6
  5. package/README.md +80 -27
  6. package/bin/vibe-check.js +1 -1
  7. package/claude-progress.json +18 -0
  8. package/dist/analysis/cross-session-analysis.d.ts +1 -1
  9. package/dist/analysis/cross-session-analysis.d.ts.map +1 -1
  10. package/dist/analysis/cross-session-analysis.js +9 -18
  11. package/dist/analysis/cross-session-analysis.js.map +1 -1
  12. package/dist/analysis/index.d.ts +1 -1
  13. package/dist/analysis/index.d.ts.map +1 -1
  14. package/dist/analysis/index.js +1 -11
  15. package/dist/analysis/index.js.map +1 -1
  16. package/dist/analyzers/audit.d.ts +28 -0
  17. package/dist/analyzers/audit.d.ts.map +1 -0
  18. package/dist/analyzers/audit.js +86 -0
  19. package/dist/analyzers/audit.js.map +1 -0
  20. package/dist/analyzers/patterns.d.ts +1 -1
  21. package/dist/analyzers/patterns.d.ts.map +1 -1
  22. package/dist/analyzers/patterns.js +4 -10
  23. package/dist/analyzers/patterns.js.map +1 -1
  24. package/dist/analyzers/quality.d.ts +1 -1
  25. package/dist/analyzers/quality.d.ts.map +1 -1
  26. package/dist/analyzers/quality.js +5 -12
  27. package/dist/analyzers/quality.js.map +1 -1
  28. package/dist/analyzers/sessions.d.ts +1 -1
  29. package/dist/analyzers/sessions.d.ts.map +1 -1
  30. package/dist/analyzers/sessions.js +1 -4
  31. package/dist/analyzers/sessions.js.map +1 -1
  32. package/dist/cli.js +20 -20
  33. package/dist/cli.js.map +1 -1
  34. package/dist/commands/analyze.d.ts.map +1 -1
  35. package/dist/commands/analyze.js +114 -149
  36. package/dist/commands/analyze.js.map +1 -1
  37. package/dist/commands/audit.d.ts +3 -0
  38. package/dist/commands/audit.d.ts.map +1 -0
  39. package/dist/commands/audit.js +77 -0
  40. package/dist/commands/audit.js.map +1 -0
  41. package/dist/commands/cache.js +31 -70
  42. package/dist/commands/cache.js.map +1 -1
  43. package/dist/commands/dashboard.d.ts.map +1 -1
  44. package/dist/commands/dashboard.js +22 -58
  45. package/dist/commands/dashboard.js.map +1 -1
  46. package/dist/commands/forensics.d.ts +2 -2
  47. package/dist/commands/forensics.d.ts.map +1 -1
  48. package/dist/commands/forensics.js +41 -48
  49. package/dist/commands/forensics.js.map +1 -1
  50. package/dist/commands/index.d.ts +14 -13
  51. package/dist/commands/index.d.ts.map +1 -1
  52. package/dist/commands/index.js +14 -33
  53. package/dist/commands/index.js.map +1 -1
  54. package/dist/commands/init-hook.js +26 -32
  55. package/dist/commands/init-hook.js.map +1 -1
  56. package/dist/commands/insights.js +39 -45
  57. package/dist/commands/insights.js.map +1 -1
  58. package/dist/commands/pipeline.js +39 -78
  59. package/dist/commands/pipeline.js.map +1 -1
  60. package/dist/commands/profile.js +68 -74
  61. package/dist/commands/profile.js.map +1 -1
  62. package/dist/commands/session.d.ts +9 -0
  63. package/dist/commands/session.d.ts.map +1 -1
  64. package/dist/commands/session.js +134 -118
  65. package/dist/commands/session.js.map +1 -1
  66. package/dist/commands/sessions.d.ts +1 -1
  67. package/dist/commands/sessions.d.ts.map +1 -1
  68. package/dist/commands/sessions.js +42 -49
  69. package/dist/commands/sessions.js.map +1 -1
  70. package/dist/commands/start.js +22 -67
  71. package/dist/commands/start.js.map +1 -1
  72. package/dist/commands/timeline.js +74 -81
  73. package/dist/commands/timeline.js.map +1 -1
  74. package/dist/commands/watch.d.ts.map +1 -1
  75. package/dist/commands/watch.js +117 -47
  76. package/dist/commands/watch.js.map +1 -1
  77. package/dist/gamification/achievements.d.ts +1 -1
  78. package/dist/gamification/achievements.d.ts.map +1 -1
  79. package/dist/gamification/achievements.js +7 -13
  80. package/dist/gamification/achievements.js.map +1 -1
  81. package/dist/gamification/index.d.ts +8 -8
  82. package/dist/gamification/index.d.ts.map +1 -1
  83. package/dist/gamification/index.js +8 -28
  84. package/dist/gamification/index.js.map +1 -1
  85. package/dist/gamification/profile.d.ts +2 -2
  86. package/dist/gamification/profile.d.ts.map +1 -1
  87. package/dist/gamification/profile.js +21 -64
  88. package/dist/gamification/profile.js.map +1 -1
  89. package/dist/gamification/stats.d.ts +1 -1
  90. package/dist/gamification/stats.d.ts.map +1 -1
  91. package/dist/gamification/stats.js +4 -10
  92. package/dist/gamification/stats.js.map +1 -1
  93. package/dist/gamification/streaks.d.ts +1 -1
  94. package/dist/gamification/streaks.d.ts.map +1 -1
  95. package/dist/gamification/streaks.js +8 -18
  96. package/dist/gamification/streaks.js.map +1 -1
  97. package/dist/gamification/types.js +3 -6
  98. package/dist/gamification/types.js.map +1 -1
  99. package/dist/gamification/xp.d.ts +1 -1
  100. package/dist/gamification/xp.d.ts.map +1 -1
  101. package/dist/gamification/xp.js +29 -38
  102. package/dist/gamification/xp.js.map +1 -1
  103. package/dist/git.d.ts +1 -1
  104. package/dist/git.d.ts.map +1 -1
  105. package/dist/git.js +15 -27
  106. package/dist/git.js.map +1 -1
  107. package/dist/inner-loop/context-amnesia.d.ts +20 -0
  108. package/dist/inner-loop/context-amnesia.d.ts.map +1 -0
  109. package/dist/inner-loop/context-amnesia.js +246 -0
  110. package/dist/inner-loop/context-amnesia.js.map +1 -0
  111. package/dist/inner-loop/index.d.ts +39 -0
  112. package/dist/inner-loop/index.d.ts.map +1 -0
  113. package/dist/inner-loop/index.js +181 -0
  114. package/dist/inner-loop/index.js.map +1 -0
  115. package/dist/inner-loop/instruction-drift.d.ts +28 -0
  116. package/dist/inner-loop/instruction-drift.d.ts.map +1 -0
  117. package/dist/inner-loop/instruction-drift.js +255 -0
  118. package/dist/inner-loop/instruction-drift.js.map +1 -0
  119. package/dist/inner-loop/logging-only.d.ts +30 -0
  120. package/dist/inner-loop/logging-only.d.ts.map +1 -0
  121. package/dist/inner-loop/logging-only.js +256 -0
  122. package/dist/inner-loop/logging-only.js.map +1 -0
  123. package/dist/inner-loop/tests-passing-lie.d.ts +34 -0
  124. package/dist/inner-loop/tests-passing-lie.d.ts.map +1 -0
  125. package/dist/inner-loop/tests-passing-lie.js +208 -0
  126. package/dist/inner-loop/tests-passing-lie.js.map +1 -0
  127. package/dist/inner-loop/types.d.ts +111 -0
  128. package/dist/inner-loop/types.d.ts.map +1 -0
  129. package/dist/inner-loop/types.js +26 -0
  130. package/dist/inner-loop/types.js.map +1 -0
  131. package/dist/insights/generators.d.ts +4 -4
  132. package/dist/insights/generators.d.ts.map +1 -1
  133. package/dist/insights/generators.js +9 -20
  134. package/dist/insights/generators.js.map +1 -1
  135. package/dist/insights/index.d.ts +4 -4
  136. package/dist/insights/index.d.ts.map +1 -1
  137. package/dist/insights/index.js +23 -27
  138. package/dist/insights/index.js.map +1 -1
  139. package/dist/insights/types.js +1 -2
  140. package/dist/insights/types.js.map +1 -1
  141. package/dist/metrics/code-stability.d.ts +1 -1
  142. package/dist/metrics/code-stability.d.ts.map +1 -1
  143. package/dist/metrics/code-stability.js +1 -4
  144. package/dist/metrics/code-stability.js.map +1 -1
  145. package/dist/metrics/file-churn.d.ts +1 -1
  146. package/dist/metrics/file-churn.d.ts.map +1 -1
  147. package/dist/metrics/file-churn.js +1 -4
  148. package/dist/metrics/file-churn.js.map +1 -1
  149. package/dist/metrics/flow.d.ts +1 -1
  150. package/dist/metrics/flow.d.ts.map +1 -1
  151. package/dist/metrics/flow.js +1 -4
  152. package/dist/metrics/flow.js.map +1 -1
  153. package/dist/metrics/index.d.ts +2 -2
  154. package/dist/metrics/index.d.ts.map +1 -1
  155. package/dist/metrics/index.js +15 -20
  156. package/dist/metrics/index.js.map +1 -1
  157. package/dist/metrics/rework.d.ts +1 -1
  158. package/dist/metrics/rework.d.ts.map +1 -1
  159. package/dist/metrics/rework.js +1 -4
  160. package/dist/metrics/rework.js.map +1 -1
  161. package/dist/metrics/spirals.d.ts +1 -1
  162. package/dist/metrics/spirals.d.ts.map +1 -1
  163. package/dist/metrics/spirals.js +5 -10
  164. package/dist/metrics/spirals.js.map +1 -1
  165. package/dist/metrics/time-spiral.d.ts +1 -1
  166. package/dist/metrics/time-spiral.d.ts.map +1 -1
  167. package/dist/metrics/time-spiral.js +1 -4
  168. package/dist/metrics/time-spiral.js.map +1 -1
  169. package/dist/metrics/trust.d.ts +1 -1
  170. package/dist/metrics/trust.d.ts.map +1 -1
  171. package/dist/metrics/trust.js +3 -6
  172. package/dist/metrics/trust.js.map +1 -1
  173. package/dist/metrics/velocity-anomaly.d.ts +1 -1
  174. package/dist/metrics/velocity-anomaly.d.ts.map +1 -1
  175. package/dist/metrics/velocity-anomaly.js +3 -6
  176. package/dist/metrics/velocity-anomaly.js.map +1 -1
  177. package/dist/metrics/velocity.d.ts +1 -1
  178. package/dist/metrics/velocity.d.ts.map +1 -1
  179. package/dist/metrics/velocity.js +6 -10
  180. package/dist/metrics/velocity.js.map +1 -1
  181. package/dist/output/index.d.ts +4 -4
  182. package/dist/output/index.d.ts.map +1 -1
  183. package/dist/output/index.js +10 -18
  184. package/dist/output/index.js.map +1 -1
  185. package/dist/output/json.d.ts +1 -1
  186. package/dist/output/json.d.ts.map +1 -1
  187. package/dist/output/json.js +1 -4
  188. package/dist/output/json.js.map +1 -1
  189. package/dist/output/markdown.d.ts +1 -1
  190. package/dist/output/markdown.d.ts.map +1 -1
  191. package/dist/output/markdown.js +5 -8
  192. package/dist/output/markdown.js.map +1 -1
  193. package/dist/output/terminal.d.ts +1 -1
  194. package/dist/output/terminal.d.ts.map +1 -1
  195. package/dist/output/terminal.js +55 -62
  196. package/dist/output/terminal.js.map +1 -1
  197. package/dist/output/timeline-html.d.ts +1 -1
  198. package/dist/output/timeline-html.d.ts.map +1 -1
  199. package/dist/output/timeline-html.js +5 -8
  200. package/dist/output/timeline-html.js.map +1 -1
  201. package/dist/output/timeline-markdown.d.ts +1 -1
  202. package/dist/output/timeline-markdown.d.ts.map +1 -1
  203. package/dist/output/timeline-markdown.js +5 -8
  204. package/dist/output/timeline-markdown.js.map +1 -1
  205. package/dist/output/timeline.d.ts +1 -1
  206. package/dist/output/timeline.d.ts.map +1 -1
  207. package/dist/output/timeline.js +46 -52
  208. package/dist/output/timeline.js.map +1 -1
  209. package/dist/patterns/detour.d.ts +1 -1
  210. package/dist/patterns/detour.d.ts.map +1 -1
  211. package/dist/patterns/detour.js +1 -4
  212. package/dist/patterns/detour.js.map +1 -1
  213. package/dist/patterns/flow-state.d.ts +1 -1
  214. package/dist/patterns/flow-state.d.ts.map +1 -1
  215. package/dist/patterns/flow-state.js +1 -4
  216. package/dist/patterns/flow-state.js.map +1 -1
  217. package/dist/patterns/index.d.ts +7 -7
  218. package/dist/patterns/index.d.ts.map +1 -1
  219. package/dist/patterns/index.js +7 -21
  220. package/dist/patterns/index.js.map +1 -1
  221. package/dist/patterns/intervention-effectiveness.d.ts +1 -1
  222. package/dist/patterns/intervention-effectiveness.d.ts.map +1 -1
  223. package/dist/patterns/intervention-effectiveness.js +3 -8
  224. package/dist/patterns/intervention-effectiveness.js.map +1 -1
  225. package/dist/patterns/late-night.d.ts +1 -1
  226. package/dist/patterns/late-night.d.ts.map +1 -1
  227. package/dist/patterns/late-night.js +1 -4
  228. package/dist/patterns/late-night.js.map +1 -1
  229. package/dist/patterns/post-delete-sprint.d.ts +1 -1
  230. package/dist/patterns/post-delete-sprint.d.ts.map +1 -1
  231. package/dist/patterns/post-delete-sprint.js +1 -4
  232. package/dist/patterns/post-delete-sprint.js.map +1 -1
  233. package/dist/patterns/spiral-regression.d.ts +1 -1
  234. package/dist/patterns/spiral-regression.d.ts.map +1 -1
  235. package/dist/patterns/spiral-regression.js +3 -8
  236. package/dist/patterns/spiral-regression.js.map +1 -1
  237. package/dist/patterns/thrashing.d.ts +1 -1
  238. package/dist/patterns/thrashing.d.ts.map +1 -1
  239. package/dist/patterns/thrashing.js +3 -6
  240. package/dist/patterns/thrashing.js.map +1 -1
  241. package/dist/score/index.d.ts +3 -3
  242. package/dist/score/index.d.ts.map +1 -1
  243. package/dist/score/index.js +4 -10
  244. package/dist/score/index.js.map +1 -1
  245. package/dist/score/weights.js +2 -6
  246. package/dist/score/weights.js.map +1 -1
  247. package/dist/sessions/index.js +9 -51
  248. package/dist/sessions/index.js.map +1 -1
  249. package/dist/storage/atomic.js +10 -51
  250. package/dist/storage/atomic.js.map +1 -1
  251. package/dist/storage/commit-log.d.ts +1 -1
  252. package/dist/storage/commit-log.d.ts.map +1 -1
  253. package/dist/storage/commit-log.js +11 -51
  254. package/dist/storage/commit-log.js.map +1 -1
  255. package/dist/storage/index.d.ts +5 -5
  256. package/dist/storage/index.d.ts.map +1 -1
  257. package/dist/storage/index.js +5 -37
  258. package/dist/storage/index.js.map +1 -1
  259. package/dist/storage/schema.js +4 -9
  260. package/dist/storage/schema.js.map +1 -1
  261. package/dist/storage/spiral-history.js +14 -57
  262. package/dist/storage/spiral-history.js.map +1 -1
  263. package/dist/storage/timeline-store.d.ts +2 -2
  264. package/dist/storage/timeline-store.d.ts.map +1 -1
  265. package/dist/storage/timeline-store.js +17 -61
  266. package/dist/storage/timeline-store.js.map +1 -1
  267. package/dist/types.js +1 -2
  268. package/docs/ENHANCEMENT-PLAN.md +361 -0
  269. package/docs/FEATURES.md +340 -0
  270. package/feature-list.json +6 -0
  271. package/package.json +8 -7
  272. package/dist/calibration/ece.d.ts +0 -26
  273. package/dist/calibration/ece.d.ts.map +0 -1
  274. package/dist/calibration/ece.js +0 -93
  275. package/dist/calibration/ece.js.map +0 -1
  276. package/dist/calibration/index.d.ts +0 -3
  277. package/dist/calibration/index.d.ts.map +0 -1
  278. package/dist/calibration/index.js +0 -15
  279. package/dist/calibration/index.js.map +0 -1
  280. package/dist/calibration/storage.d.ts +0 -34
  281. package/dist/calibration/storage.d.ts.map +0 -1
  282. package/dist/calibration/storage.js +0 -188
  283. package/dist/calibration/storage.js.map +0 -1
  284. package/dist/commands/intervene.d.ts +0 -15
  285. package/dist/commands/intervene.d.ts.map +0 -1
  286. package/dist/commands/intervene.js +0 -183
  287. package/dist/commands/intervene.js.map +0 -1
  288. package/dist/commands/learn.d.ts +0 -3
  289. package/dist/commands/learn.d.ts.map +0 -1
  290. package/dist/commands/learn.js +0 -161
  291. package/dist/commands/learn.js.map +0 -1
  292. package/dist/commands/lesson.d.ts +0 -8
  293. package/dist/commands/lesson.d.ts.map +0 -1
  294. package/dist/commands/lesson.js +0 -206
  295. package/dist/commands/lesson.js.map +0 -1
  296. package/dist/commands/level.d.ts +0 -3
  297. package/dist/commands/level.d.ts.map +0 -1
  298. package/dist/commands/level.js +0 -277
  299. package/dist/commands/level.js.map +0 -1
  300. package/dist/gamification/badges.d.ts +0 -29
  301. package/dist/gamification/badges.d.ts.map +0 -1
  302. package/dist/gamification/badges.js +0 -114
  303. package/dist/gamification/badges.js.map +0 -1
  304. package/dist/gamification/challenges.d.ts +0 -42
  305. package/dist/gamification/challenges.d.ts.map +0 -1
  306. package/dist/gamification/challenges.js +0 -184
  307. package/dist/gamification/challenges.js.map +0 -1
  308. package/dist/gamification/hall-of-fame.d.ts +0 -17
  309. package/dist/gamification/hall-of-fame.d.ts.map +0 -1
  310. package/dist/gamification/hall-of-fame.js +0 -64
  311. package/dist/gamification/hall-of-fame.js.map +0 -1
  312. package/dist/gamification/intervention-memory.d.ts +0 -61
  313. package/dist/gamification/intervention-memory.d.ts.map +0 -1
  314. package/dist/gamification/intervention-memory.js +0 -229
  315. package/dist/gamification/intervention-memory.js.map +0 -1
  316. package/dist/gamification/leaderboards.d.ts +0 -49
  317. package/dist/gamification/leaderboards.d.ts.map +0 -1
  318. package/dist/gamification/leaderboards.js +0 -179
  319. package/dist/gamification/leaderboards.js.map +0 -1
  320. package/dist/gamification/pattern-memory.d.ts +0 -45
  321. package/dist/gamification/pattern-memory.d.ts.map +0 -1
  322. package/dist/gamification/pattern-memory.js +0 -188
  323. package/dist/gamification/pattern-memory.js.map +0 -1
  324. package/dist/gamification/share.d.ts +0 -29
  325. package/dist/gamification/share.d.ts.map +0 -1
  326. package/dist/gamification/share.js +0 -57
  327. package/dist/gamification/share.js.map +0 -1
  328. package/dist/learning/cadence.d.ts +0 -15
  329. package/dist/learning/cadence.d.ts.map +0 -1
  330. package/dist/learning/cadence.js +0 -130
  331. package/dist/learning/cadence.js.map +0 -1
  332. package/dist/learning/index.d.ts +0 -19
  333. package/dist/learning/index.d.ts.map +0 -1
  334. package/dist/learning/index.js +0 -35
  335. package/dist/learning/index.js.map +0 -1
  336. package/dist/learning/lessons-storage.d.ts +0 -48
  337. package/dist/learning/lessons-storage.d.ts.map +0 -1
  338. package/dist/learning/lessons-storage.js +0 -266
  339. package/dist/learning/lessons-storage.js.map +0 -1
  340. package/dist/learning/lessons-types.d.ts +0 -83
  341. package/dist/learning/lessons-types.d.ts.map +0 -1
  342. package/dist/learning/lessons-types.js +0 -15
  343. package/dist/learning/lessons-types.js.map +0 -1
  344. package/dist/learning/nudges.d.ts +0 -20
  345. package/dist/learning/nudges.d.ts.map +0 -1
  346. package/dist/learning/nudges.js +0 -68
  347. package/dist/learning/nudges.js.map +0 -1
  348. package/dist/learning/retrospective.d.ts +0 -27
  349. package/dist/learning/retrospective.d.ts.map +0 -1
  350. package/dist/learning/retrospective.js +0 -184
  351. package/dist/learning/retrospective.js.map +0 -1
  352. package/dist/learning/storage.d.ts +0 -44
  353. package/dist/learning/storage.d.ts.map +0 -1
  354. package/dist/learning/storage.js +0 -194
  355. package/dist/learning/storage.js.map +0 -1
  356. package/dist/learning/surfacing.d.ts +0 -36
  357. package/dist/learning/surfacing.d.ts.map +0 -1
  358. package/dist/learning/surfacing.js +0 -255
  359. package/dist/learning/surfacing.js.map +0 -1
  360. package/dist/learning/synthesis.d.ts +0 -17
  361. package/dist/learning/synthesis.d.ts.map +0 -1
  362. package/dist/learning/synthesis.js +0 -293
  363. package/dist/learning/synthesis.js.map +0 -1
  364. package/dist/learning/types.d.ts +0 -60
  365. package/dist/learning/types.d.ts.map +0 -1
  366. package/dist/learning/types.js +0 -17
  367. package/dist/learning/types.js.map +0 -1
  368. package/dist/recommend/index.d.ts +0 -3
  369. package/dist/recommend/index.d.ts.map +0 -1
  370. package/dist/recommend/index.js +0 -14
  371. package/dist/recommend/index.js.map +0 -1
  372. package/dist/recommend/ordered-logistic.d.ts +0 -49
  373. package/dist/recommend/ordered-logistic.d.ts.map +0 -1
  374. package/dist/recommend/ordered-logistic.js +0 -153
  375. package/dist/recommend/ordered-logistic.js.map +0 -1
  376. package/dist/recommend/questions.d.ts +0 -19
  377. package/dist/recommend/questions.d.ts.map +0 -1
  378. package/dist/recommend/questions.js +0 -73
  379. package/dist/recommend/questions.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,kBAAkB,IAAI,OAAO,CAU5C"}
@@ -0,0 +1,77 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import * as path from 'path';
4
+ import { runAudit } from '../analyzers/audit.js';
5
+ export function createAuditCommand() {
6
+ const cmd = new Command('audit')
7
+ .description('Scan codebase for AI-generated messes (monoliths, test gaps, TODOs)')
8
+ .option('-r, --repo <path>', 'Repository path', process.cwd())
9
+ .option('-v, --verbose', 'Show verbose output', false)
10
+ .action(async (options) => {
11
+ await runAuditCommand(options);
12
+ });
13
+ return cmd;
14
+ }
15
+ async function runAuditCommand(options) {
16
+ const { repo, verbose } = options;
17
+ const rootDir = path.resolve(repo);
18
+ if (verbose) {
19
+ console.log(chalk.gray(`Scanning ${rootDir}...`));
20
+ }
21
+ try {
22
+ const result = runAudit(rootDir);
23
+ console.log('');
24
+ console.log(chalk.bold.cyan('๐Ÿ” Vibe-Check Code Audit'));
25
+ console.log(chalk.gray('โ”€'.repeat(50)));
26
+ console.log('');
27
+ console.log(`Scanned ${result.stats.totalFiles} files (${result.stats.totalLines} lines)`);
28
+ console.log('');
29
+ // Monoliths
30
+ if (result.monoliths.length > 0) {
31
+ console.log(chalk.bold.red('โš ๏ธ Monoliths (>600 lines):'));
32
+ result.monoliths.slice(0, 5).forEach(m => {
33
+ const relPath = path.relative(rootDir, m.file);
34
+ console.log(` ${chalk.white(relPath)}: ${chalk.yellow(m.lines + ' lines')}`);
35
+ });
36
+ if (result.monoliths.length > 5)
37
+ console.log(chalk.gray(` ...and ${result.monoliths.length - 5} more`));
38
+ console.log('');
39
+ }
40
+ else {
41
+ console.log(chalk.green('โœ… No monoliths detected'));
42
+ console.log('');
43
+ }
44
+ // Test Gaps
45
+ if (result.testGaps.length > 0) {
46
+ console.log(chalk.bold.yellow('โš ๏ธ Untested Files (Test Gaps):'));
47
+ // Sort by recent modification
48
+ const recentGaps = result.testGaps.sort((a, b) => b.lastModified.getTime() - a.lastModified.getTime());
49
+ recentGaps.slice(0, 5).forEach(g => {
50
+ console.log(` ${chalk.white(g.file)} ${chalk.gray('(last mod: ' + g.lastModified.toLocaleDateString() + ')')}`);
51
+ });
52
+ if (result.testGaps.length > 5)
53
+ console.log(chalk.gray(` ...and ${result.testGaps.length - 5} more`));
54
+ console.log('');
55
+ }
56
+ else {
57
+ console.log(chalk.green('โœ… No obvious test gaps'));
58
+ console.log('');
59
+ }
60
+ // TODOs
61
+ if (result.todoDensity.length > 0) {
62
+ console.log(chalk.bold.blue('๐Ÿ“ High TODO Density (>5):'));
63
+ result.todoDensity.slice(0, 5).forEach(t => {
64
+ const relPath = path.relative(rootDir, t.file);
65
+ console.log(` ${chalk.white(relPath)}: ${chalk.cyan(t.count + ' TODOs')}`);
66
+ });
67
+ console.log('');
68
+ }
69
+ }
70
+ catch (error) {
71
+ if (error instanceof Error) {
72
+ console.error(chalk.red(`Error: ${error.message}`));
73
+ }
74
+ process.exit(1);
75
+ }
76
+ }
77
+ //# sourceMappingURL=audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,MAAM,UAAU,kBAAkB;IAChC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;SAC7B,WAAW,CAAC,qEAAqE,CAAC;SAClF,MAAM,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SAC7D,MAAM,CAAC,eAAe,EAAE,qBAAqB,EAAE,KAAK,CAAC;SACrD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEL,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,OAA2C;IACxE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,KAAK,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,KAAK,CAAC,UAAU,WAAW,MAAM,CAAC,KAAK,CAAC,UAAU,SAAS,CAAC,CAAC;QAC3F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,YAAY;QACZ,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAC;YAC3D,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACvC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;YAChF,CAAC,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YACzG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QAED,YAAY;QACZ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC;YAClE,8BAA8B;YAC9B,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;YAEvG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACjC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,YAAY,CAAC,kBAAkB,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;YACnH,CAAC,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YACvG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QAED,QAAQ;QACR,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;YAC3D,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACzC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC9E,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;IAEH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -1,49 +1,10 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.createCacheCommand = createCacheCommand;
40
- const commander_1 = require("commander");
41
- const chalk_1 = __importDefault(require("chalk"));
42
- const fs = __importStar(require("fs"));
43
- const path = __importStar(require("path"));
44
- const storage_1 = require("../storage");
45
- function createCacheCommand() {
46
- const cmd = new commander_1.Command('cache')
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import * as fs from 'fs';
4
+ import * as path from 'path';
5
+ import { getStoreDir, getStorePath, getCommitLogPath, readNdjsonWithErrors } from '../storage/index.js';
6
+ export function createCacheCommand() {
7
+ const cmd = new Command('cache')
47
8
  .description('Manage local vibe-check cache and storage')
48
9
  .option('-r, --repo <path>', 'Repository path', process.cwd());
49
10
  cmd
@@ -65,18 +26,18 @@ function createCacheCommand() {
65
26
  }
66
27
  async function runCacheStatus(options) {
67
28
  const { repo } = options;
68
- const storeDir = (0, storage_1.getStoreDir)(repo);
69
- const timelinePath = (0, storage_1.getStorePath)(repo);
70
- const commitLogPath = (0, storage_1.getCommitLogPath)(repo);
29
+ const storeDir = getStoreDir(repo);
30
+ const timelinePath = getStorePath(repo);
31
+ const commitLogPath = getCommitLogPath(repo);
71
32
  console.log('');
72
- console.log(chalk_1.default.bold.cyan('Cache Status'));
73
- console.log(chalk_1.default.gray('โ”€'.repeat(40)));
33
+ console.log(chalk.bold.cyan('Cache Status'));
34
+ console.log(chalk.gray('โ”€'.repeat(40)));
74
35
  // Check if store directory exists
75
36
  if (!fs.existsSync(storeDir)) {
76
- console.log(chalk_1.default.yellow('No cache found. Run `vibe-check timeline` to create one.'));
37
+ console.log(chalk.yellow('No cache found. Run `vibe-check timeline` to create one.'));
77
38
  return;
78
39
  }
79
- console.log(chalk_1.default.white(`Location: ${storeDir}`));
40
+ console.log(chalk.white(`Location: ${storeDir}`));
80
41
  console.log('');
81
42
  // Timeline store
82
43
  if (fs.existsSync(timelinePath)) {
@@ -85,7 +46,7 @@ async function runCacheStatus(options) {
85
46
  try {
86
47
  const content = fs.readFileSync(timelinePath, 'utf-8');
87
48
  const store = JSON.parse(content);
88
- console.log(chalk_1.default.bold.white('Timeline Store:'));
49
+ console.log(chalk.bold.white('Timeline Store:'));
89
50
  console.log(` Version: ${store.version || 'unknown'}`);
90
51
  console.log(` Sessions: ${store.sessions?.length || 0}`);
91
52
  console.log(` Insights: ${store.insights?.length || 0}`);
@@ -93,22 +54,22 @@ async function runCacheStatus(options) {
93
54
  console.log(` Last updated: ${store.lastUpdated || 'unknown'}`);
94
55
  }
95
56
  catch {
96
- console.log(chalk_1.default.yellow(` Timeline store exists but couldn't be read (${sizeKb} KB)`));
57
+ console.log(chalk.yellow(` Timeline store exists but couldn't be read (${sizeKb} KB)`));
97
58
  }
98
59
  }
99
60
  else {
100
- console.log(chalk_1.default.gray('Timeline Store: not found'));
61
+ console.log(chalk.gray('Timeline Store: not found'));
101
62
  }
102
63
  console.log('');
103
64
  // Commit log (NDJSON)
104
65
  if (fs.existsSync(commitLogPath)) {
105
66
  const stats = fs.statSync(commitLogPath);
106
67
  const sizeKb = (stats.size / 1024).toFixed(1);
107
- const result = (0, storage_1.readNdjsonWithErrors)(commitLogPath);
108
- console.log(chalk_1.default.bold.white('Commit Log (NDJSON):'));
68
+ const result = readNdjsonWithErrors(commitLogPath);
69
+ console.log(chalk.bold.white('Commit Log (NDJSON):'));
109
70
  console.log(` Commits: ${result.items.length}`);
110
71
  if (result.errors > 0) {
111
- console.log(chalk_1.default.yellow(` Malformed lines: ${result.errors}`));
72
+ console.log(chalk.yellow(` Malformed lines: ${result.errors}`));
112
73
  }
113
74
  console.log(` Size: ${sizeKb} KB`);
114
75
  // Show date range
@@ -120,31 +81,31 @@ async function runCacheStatus(options) {
120
81
  }
121
82
  }
122
83
  else {
123
- console.log(chalk_1.default.gray('Commit Log: not found'));
84
+ console.log(chalk.gray('Commit Log: not found'));
124
85
  }
125
86
  console.log('');
126
87
  // Check for .gitignore
127
88
  const gitignorePath = path.join(storeDir, '.gitignore');
128
89
  if (fs.existsSync(gitignorePath)) {
129
- console.log(chalk_1.default.green('.gitignore: present'));
90
+ console.log(chalk.green('.gitignore: present'));
130
91
  }
131
92
  else {
132
- console.log(chalk_1.default.yellow('.gitignore: missing (data may be committed!)'));
93
+ console.log(chalk.yellow('.gitignore: missing (data may be committed!)'));
133
94
  }
134
95
  console.log('');
135
96
  }
136
97
  async function runCacheClear(options, force) {
137
98
  const { repo } = options;
138
- const storeDir = (0, storage_1.getStoreDir)(repo);
99
+ const storeDir = getStoreDir(repo);
139
100
  if (!fs.existsSync(storeDir)) {
140
- console.log(chalk_1.default.yellow('No cache found to clear.'));
101
+ console.log(chalk.yellow('No cache found to clear.'));
141
102
  return;
142
103
  }
143
104
  if (!force) {
144
- console.log(chalk_1.default.yellow('Warning: This will delete all cached vibe-check data.'));
145
- console.log(chalk_1.default.gray(`Location: ${storeDir}`));
105
+ console.log(chalk.yellow('Warning: This will delete all cached vibe-check data.'));
106
+ console.log(chalk.gray(`Location: ${storeDir}`));
146
107
  console.log('');
147
- console.log(chalk_1.default.white('Run with --force to confirm, or press Ctrl+C to cancel.'));
108
+ console.log(chalk.white('Run with --force to confirm, or press Ctrl+C to cancel.'));
148
109
  return;
149
110
  }
150
111
  // Delete all files except .gitignore
@@ -159,10 +120,10 @@ async function runCacheClear(options, force) {
159
120
  deleted++;
160
121
  }
161
122
  catch (error) {
162
- console.error(chalk_1.default.red(`Failed to delete: ${file}`));
123
+ console.error(chalk.red(`Failed to delete: ${file}`));
163
124
  }
164
125
  }
165
- console.log(chalk_1.default.green(`Cleared ${deleted} file(s) from cache.`));
166
- console.log(chalk_1.default.gray('Run `vibe-check timeline` to rebuild.'));
126
+ console.log(chalk.green(`Cleared ${deleted} file(s) from cache.`));
127
+ console.log(chalk.gray('Run `vibe-check timeline` to rebuild.'));
167
128
  }
168
129
  //# sourceMappingURL=cache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/commands/cache.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,gDAuBC;AAlCD,yCAAoC;AACpC,kDAA0B;AAC1B,uCAAyB;AACzB,2CAA6B;AAC7B,wCAA+F;AAO/F,SAAgB,kBAAkB;IAChC,MAAM,GAAG,GAAG,IAAI,mBAAO,CAAC,OAAO,CAAC;SAC7B,WAAW,CAAC,2CAA2C,CAAC;SACxD,MAAM,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAEjE,GAAG;SACA,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,0CAA0C,CAAC;SACvD,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAkB,CAAC;QAC3C,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEL,GAAG;SACA,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,qDAAqD,CAAC;SAClE,MAAM,CAAC,SAAS,EAAE,0BAA0B,CAAC;SAC7C,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE;QAC7B,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAkB,CAAC;QAC3C,MAAM,aAAa,CAAC,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEL,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,OAAqB;IACjD,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IACzB,MAAM,QAAQ,GAAG,IAAA,qBAAW,EAAC,IAAI,CAAC,CAAC;IACnC,MAAM,YAAY,GAAG,IAAA,sBAAY,EAAC,IAAI,CAAC,CAAC;IACxC,MAAM,aAAa,GAAG,IAAA,0BAAgB,EAAC,IAAI,CAAC,CAAC;IAE7C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAExC,kCAAkC;IAClC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,0DAA0D,CAAC,CAAC,CAAC;QACtF,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,iBAAiB;IACjB,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAE9C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACvD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAElC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,OAAO,IAAI,SAAS,EAAE,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,KAAK,CAAC,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,CAAC,WAAW,IAAI,SAAS,EAAE,CAAC,CAAC;QACnE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,iDAAiD,MAAM,MAAM,CAAC,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,sBAAsB;IACtB,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAE9C,MAAM,MAAM,GAAG,IAAA,8BAAoB,EAAe,aAAa,CAAC,CAAC;QAEjE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACjD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,sBAAsB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,KAAK,CAAC,CAAC;QAEpC,kBAAkB;QAClB,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC7C,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAClD,CAAC;YACF,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC;YAC1D,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,MAAM,MAAM,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,uBAAuB;IACvB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACxD,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,8CAA8C,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,OAAqB,EAAE,KAAc;IAChE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IACzB,MAAM,QAAQ,GAAG,IAAA,qBAAW,EAAC,IAAI,CAAC,CAAC;IAEnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACtD,OAAO;IACT,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,uDAAuD,CAAC,CAAC,CAAC;QACnF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC,CAAC;QACpF,OAAO;IACT,CAAC;IAED,qCAAqC;IACrC,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,KAAK,YAAY;YAAE,SAAS;QAEpC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,EAAE,CAAC;QACZ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,WAAW,OAAO,sBAAsB,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/commands/cache.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,sBAAsB,IAAI,OAAO,CAWhD"}
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,sBAAsB,IAAI,OAAO,CAWhD"}
@@ -1,50 +1,14 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.createDashboardCommand = createDashboardCommand;
40
- const commander_1 = require("commander");
41
- const chalk_1 = __importDefault(require("chalk"));
42
- const fs = __importStar(require("fs"));
43
- const path = __importStar(require("path"));
44
- const child_process_1 = require("child_process");
45
- const insights_1 = require("../insights");
46
- function createDashboardCommand() {
47
- const cmd = new commander_1.Command('dashboard')
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import * as fs from 'fs';
4
+ import * as path from 'path';
5
+ import { exec } from 'child_process';
6
+ import { fileURLToPath } from 'url';
7
+ import { buildDashboardData } from '../insights/index.js';
8
+ const __filename = fileURLToPath(import.meta.url);
9
+ const __dirname = path.dirname(__filename);
10
+ export function createDashboardCommand() {
11
+ const cmd = new Command('dashboard')
48
12
  .description('Open the vibe-check dashboard with your stats')
49
13
  .option('-r, --repo <path>', 'Repository path', process.cwd())
50
14
  .option('--no-open', 'Export data without opening browser')
@@ -56,16 +20,16 @@ function createDashboardCommand() {
56
20
  }
57
21
  async function runDashboard(options) {
58
22
  const { repo, open, output } = options;
59
- console.log(chalk_1.default.cyan('Building dashboard data...'));
23
+ console.log(chalk.cyan('Building dashboard data...'));
60
24
  try {
61
25
  // Build dashboard data
62
- const data = (0, insights_1.buildDashboardData)(repo);
26
+ const data = buildDashboardData(repo);
63
27
  // Determine output path - use the dashboard directory in the package
64
28
  const dashboardDir = path.join(__dirname, '../../dashboard');
65
29
  const outputPath = output || path.join(dashboardDir, 'dashboard-data.json');
66
30
  // Ensure dashboard directory exists
67
31
  if (!fs.existsSync(dashboardDir)) {
68
- console.error(chalk_1.default.red('Dashboard directory not found'));
32
+ console.error(chalk.red('Dashboard directory not found'));
69
33
  process.exit(1);
70
34
  }
71
35
  // Write data as JSON
@@ -73,10 +37,10 @@ async function runDashboard(options) {
73
37
  // Also write as JS for file:// compatibility (bypasses CORS)
74
38
  const jsPath = path.join(dashboardDir, 'dashboard-data.js');
75
39
  fs.writeFileSync(jsPath, `window.VIBE_CHECK_DATA = ${JSON.stringify(data, null, 2)};`);
76
- console.log(chalk_1.default.green(`Data exported to ${outputPath}`));
40
+ console.log(chalk.green(`Data exported to ${outputPath}`));
77
41
  // Show summary
78
42
  console.log('');
79
- console.log(chalk_1.default.bold('Dashboard Summary:'));
43
+ console.log(chalk.bold('Dashboard Summary:'));
80
44
  console.log(` Level: ${data.profile.levelIcon} ${data.profile.level} ${data.profile.levelName}`);
81
45
  console.log(` Streak: ๐Ÿ”ฅ ${data.profile.streak.current} days`);
82
46
  console.log(` Sessions: ${data.stats.totals.sessions}`);
@@ -86,25 +50,25 @@ async function runDashboard(options) {
86
50
  if (open) {
87
51
  const htmlPath = path.join(dashboardDir, 'index.html');
88
52
  const url = `file://${htmlPath}`;
89
- console.log(chalk_1.default.cyan('Opening dashboard...'));
53
+ console.log(chalk.cyan('Opening dashboard...'));
90
54
  // Cross-platform open command
91
55
  const openCmd = process.platform === 'darwin' ? 'open' :
92
56
  process.platform === 'win32' ? 'start' : 'xdg-open';
93
- (0, child_process_1.exec)(`${openCmd} "${url}"`, (error) => {
57
+ exec(`${openCmd} "${url}"`, (error) => {
94
58
  if (error) {
95
- console.log(chalk_1.default.yellow('Could not open browser automatically.'));
96
- console.log(chalk_1.default.gray(`Open manually: ${url}`));
59
+ console.log(chalk.yellow('Could not open browser automatically.'));
60
+ console.log(chalk.gray(`Open manually: ${url}`));
97
61
  }
98
62
  });
99
63
  }
100
64
  else {
101
65
  const htmlPath = path.join(dashboardDir, 'index.html');
102
- console.log(chalk_1.default.gray(`Open dashboard: file://${htmlPath}`));
66
+ console.log(chalk.gray(`Open dashboard: file://${htmlPath}`));
103
67
  }
104
68
  }
105
69
  catch (error) {
106
70
  if (error instanceof Error) {
107
- console.error(chalk_1.default.red(`Error: ${error.message}`));
71
+ console.error(chalk.red(`Error: ${error.message}`));
108
72
  }
109
73
  process.exit(1);
110
74
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"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"}
@@ -5,8 +5,8 @@
5
5
  * Proven algorithm from release-engineering retrospective (475 commits analyzed).
6
6
  */
7
7
  import { Command } from 'commander';
8
- import { PatternDetectionResult } from '../analyzers/patterns';
9
- import { QualityMetrics } from '../analyzers/quality';
8
+ import { PatternDetectionResult } from '../analyzers/patterns.js';
9
+ import { QualityMetrics } from '../analyzers/quality.js';
10
10
  export interface ForensicsOptions {
11
11
  since?: string;
12
12
  until?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"forensics.d.ts","sourceRoot":"","sources":["../../src/commands/forensics.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAEL,sBAAsB,EACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAGL,cAAc,EACf,MAAM,sBAAsB,CAAC;AAG9B,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE;QACd,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;IACF,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,sBAAsB,CAAC;IACjC,cAAc,EAAE,cAAc,CAAC;IAC/B,cAAc,EAAE,OAAO,GAAG,UAAU,GAAG,WAAW,CAAC;CACpD;AAED,wBAAgB,sBAAsB,IAAI,OAAO,CAahD;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CA6E7F"}
1
+ {"version":3,"file":"forensics.d.ts","sourceRoot":"","sources":["../../src/commands/forensics.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAEL,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAGL,cAAc,EACf,MAAM,yBAAyB,CAAC;AAGjC,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE;QACd,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;IACF,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,sBAAsB,CAAC;IACjC,cAAc,EAAE,cAAc,CAAC;IAC/B,cAAc,EAAE,OAAO,GAAG,UAAU,GAAG,WAAW,CAAC;CACpD;AAED,wBAAgB,sBAAsB,IAAI,OAAO,CAahD;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CA6E7F"}
@@ -1,24 +1,17 @@
1
- "use strict";
2
1
  /**
3
2
  * Forensics Command (VIBE-045)
4
3
  *
5
4
  * Analyze git history to detect failure patterns and calculate quality metrics.
6
5
  * Proven algorithm from release-engineering retrospective (475 commits analyzed).
7
6
  */
8
- var __importDefault = (this && this.__importDefault) || function (mod) {
9
- return (mod && mod.__esModule) ? mod : { "default": mod };
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.createForensicsCommand = createForensicsCommand;
13
- exports.runForensics = runForensics;
14
- const commander_1 = require("commander");
15
- const chalk_1 = __importDefault(require("chalk"));
16
- const git_1 = require("../git");
17
- const patterns_1 = require("../analyzers/patterns");
18
- const quality_1 = require("../analyzers/quality");
19
- const date_fns_1 = require("date-fns");
20
- function createForensicsCommand() {
21
- const cmd = new commander_1.Command('forensics')
7
+ import { Command } from 'commander';
8
+ import chalk from 'chalk';
9
+ import { getCommits, isGitRepo } from '../git.js';
10
+ import { detectPatterns, } from '../analyzers/patterns.js';
11
+ import { calculateQualityMetrics, getRecommendation, } from '../analyzers/quality.js';
12
+ import { format } from 'date-fns';
13
+ export function createForensicsCommand() {
14
+ const cmd = new Command('forensics')
22
15
  .description('Analyze git history for failure patterns (VIBE-045)')
23
16
  .option('--since <date>', 'Start date for analysis', '3 months ago')
24
17
  .option('--until <date>', 'End date for analysis (default: now)')
@@ -30,37 +23,37 @@ function createForensicsCommand() {
30
23
  });
31
24
  return cmd;
32
25
  }
33
- async function runForensics(options) {
26
+ export async function runForensics(options) {
34
27
  try {
35
28
  const { since, until, format: outputFormat, repo, verbose } = options;
36
29
  // Check if repo is valid
37
- if (!(await (0, git_1.isGitRepo)(repo))) {
38
- console.error(chalk_1.default.red(`Not a git repository: ${repo}`));
30
+ if (!(await isGitRepo(repo))) {
31
+ console.error(chalk.red(`Not a git repository: ${repo}`));
39
32
  process.exit(1);
40
33
  }
41
34
  if (verbose) {
42
- console.error(chalk_1.default.gray(`Analyzing repository: ${repo}`));
43
- console.error(chalk_1.default.gray(`Since: ${since}`));
35
+ console.error(chalk.gray(`Analyzing repository: ${repo}`));
36
+ console.error(chalk.gray(`Since: ${since}`));
44
37
  if (until)
45
- console.error(chalk_1.default.gray(`Until: ${until}`));
38
+ console.error(chalk.gray(`Until: ${until}`));
46
39
  }
47
40
  // Get commits
48
- const commits = await (0, git_1.getCommits)(repo, since, until);
41
+ const commits = await getCommits(repo, since, until);
49
42
  if (commits.length === 0) {
50
- console.log(chalk_1.default.yellow('\nNo commits found in the specified range.\n'));
51
- console.log(chalk_1.default.gray('Try specifying a different date range:'));
52
- console.log(chalk_1.default.gray(' vibe-check forensics --since "6 months ago"'));
43
+ console.log(chalk.yellow('\nNo commits found in the specified range.\n'));
44
+ console.log(chalk.gray('Try specifying a different date range:'));
45
+ console.log(chalk.gray(' vibe-check forensics --since "6 months ago"'));
53
46
  process.exit(0);
54
47
  }
55
48
  if (verbose) {
56
- console.error(chalk_1.default.gray(`Found ${commits.length} commits`));
49
+ console.error(chalk.gray(`Found ${commits.length} commits`));
57
50
  }
58
51
  // Detect patterns
59
- const patterns = (0, patterns_1.detectPatterns)(commits);
52
+ const patterns = detectPatterns(commits);
60
53
  // Calculate quality metrics
61
- const qualityMetrics = (0, quality_1.calculateQualityMetrics)(commits);
54
+ const qualityMetrics = calculateQualityMetrics(commits);
62
55
  // Get recommendation
63
- const recommendation = (0, quality_1.getRecommendation)(qualityMetrics, patterns.debugSpirals !== null);
56
+ const recommendation = getRecommendation(qualityMetrics, patterns.debugSpirals !== null);
64
57
  // Sort commits to get date range
65
58
  const sortedCommits = [...commits].sort((a, b) => a.date.getTime() - b.date.getTime());
66
59
  const result = {
@@ -88,7 +81,7 @@ async function runForensics(options) {
88
81
  }
89
82
  catch (error) {
90
83
  if (error instanceof Error) {
91
- console.error(chalk_1.default.red(`Error: ${error.message}`));
84
+ console.error(chalk.red(`Error: ${error.message}`));
92
85
  }
93
86
  process.exit(1);
94
87
  }
@@ -157,56 +150,56 @@ function outputMarkdown(result) {
157
150
  function outputTerminal(result) {
158
151
  const { analysisPeriod, totalCommits, patterns, qualityMetrics, recommendation } = result;
159
152
  console.log('');
160
- console.log(chalk_1.default.bold.cyan('๐Ÿ” Git Forensics Report'));
161
- console.log(chalk_1.default.gray('โ”€'.repeat(50)));
153
+ console.log(chalk.bold.cyan('๐Ÿ” Git Forensics Report'));
154
+ console.log(chalk.gray('โ”€'.repeat(50)));
162
155
  console.log('');
163
156
  // Period and count
164
157
  const fromDate = new Date(analysisPeriod.from);
165
158
  const toDate = new Date(analysisPeriod.to);
166
- console.log(`Period: ${(0, date_fns_1.format)(fromDate, 'MMM d, yyyy')} - ${(0, date_fns_1.format)(toDate, 'MMM d, yyyy')}`);
167
- console.log(`Commits: ${chalk_1.default.cyan(totalCommits)}`);
159
+ console.log(`Period: ${format(fromDate, 'MMM d, yyyy')} - ${format(toDate, 'MMM d, yyyy')}`);
160
+ console.log(`Commits: ${chalk.cyan(totalCommits)}`);
168
161
  console.log('');
169
162
  // Quality metrics
170
- console.log(chalk_1.default.bold('Quality Metrics:'));
171
- const convColor = qualityMetrics.conventionalCommits.percentage >= 80 ? chalk_1.default.green : qualityMetrics.conventionalCommits.percentage >= 50 ? chalk_1.default.yellow : chalk_1.default.red;
172
- const vagueColor = qualityMetrics.vagueCommits.percentage <= 10 ? chalk_1.default.green : qualityMetrics.vagueCommits.percentage <= 30 ? chalk_1.default.yellow : chalk_1.default.red;
163
+ console.log(chalk.bold('Quality Metrics:'));
164
+ const convColor = qualityMetrics.conventionalCommits.percentage >= 80 ? chalk.green : qualityMetrics.conventionalCommits.percentage >= 50 ? chalk.yellow : chalk.red;
165
+ const vagueColor = qualityMetrics.vagueCommits.percentage <= 10 ? chalk.green : qualityMetrics.vagueCommits.percentage <= 30 ? chalk.yellow : chalk.red;
173
166
  console.log(` Conventional: ${convColor(qualityMetrics.conventionalCommits.percentage + '%')} (${qualityMetrics.conventionalCommits.count} commits)`);
174
- console.log(` Descriptive: ${chalk_1.default.cyan(qualityMetrics.descriptiveCommits.percentage + '%')} (${qualityMetrics.descriptiveCommits.count} commits)`);
167
+ console.log(` Descriptive: ${chalk.cyan(qualityMetrics.descriptiveCommits.percentage + '%')} (${qualityMetrics.descriptiveCommits.count} commits)`);
175
168
  console.log(` Vague: ${vagueColor(qualityMetrics.vagueCommits.percentage + '%')} (${qualityMetrics.vagueCommits.count} commits)`);
176
169
  console.log('');
177
170
  // Patterns
178
- console.log(chalk_1.default.bold('Patterns Detected:'));
171
+ console.log(chalk.bold('Patterns Detected:'));
179
172
  // Debug spirals
180
173
  if (patterns.debugSpirals) {
181
- console.log(chalk_1.default.red(` โš ๏ธ Debug Spirals: ${patterns.debugSpirals.count} commits over ${patterns.debugSpirals.durationMinutes} min`));
174
+ console.log(chalk.red(` โš ๏ธ Debug Spirals: ${patterns.debugSpirals.count} commits over ${patterns.debugSpirals.durationMinutes} min`));
182
175
  }
183
176
  else {
184
- console.log(chalk_1.default.green(' โœ… No debug spirals'));
177
+ console.log(chalk.green(' โœ… No debug spirals'));
185
178
  }
186
179
  // Context amnesia
187
180
  if (patterns.contextAmnesia.scopes.length > 0) {
188
181
  const topScopes = patterns.contextAmnesia.scopes.slice(0, 3).map(s => `${s.name}(${s.visits})`).join(', ');
189
- console.log(chalk_1.default.yellow(` โš ๏ธ Context Amnesia: ${topScopes}`));
182
+ console.log(chalk.yellow(` โš ๏ธ Context Amnesia: ${topScopes}`));
190
183
  }
191
184
  else {
192
- console.log(chalk_1.default.green(' โœ… No context amnesia'));
185
+ console.log(chalk.green(' โœ… No context amnesia'));
193
186
  }
194
187
  // Vague commits examples
195
188
  if (patterns.vagueCommits.examples.length > 0) {
196
189
  const examples = patterns.vagueCommits.examples.slice(0, 3).map(e => `"${e}"`).join(', ');
197
- console.log(chalk_1.default.gray(` ๐Ÿ“ Vague examples: ${examples}`));
190
+ console.log(chalk.gray(` ๐Ÿ“ Vague examples: ${examples}`));
198
191
  }
199
192
  console.log('');
200
193
  // Recommendation
201
- console.log(chalk_1.default.bold('Recommendation:'));
194
+ console.log(chalk.bold('Recommendation:'));
202
195
  if (recommendation === 'sweep') {
203
- console.log(chalk_1.default.yellow(' ๐Ÿงน SWEEP - Consider cleanup and commit discipline improvement'));
196
+ console.log(chalk.yellow(' ๐Ÿงน SWEEP - Consider cleanup and commit discipline improvement'));
204
197
  }
205
198
  else if (recommendation === 'celebrate') {
206
- console.log(chalk_1.default.green(' ๐ŸŽ‰ CELEBRATE - Excellent commit hygiene!'));
199
+ console.log(chalk.green(' ๐ŸŽ‰ CELEBRATE - Excellent commit hygiene!'));
207
200
  }
208
201
  else {
209
- console.log(chalk_1.default.cyan(' ๐Ÿ‘ MAINTAIN - Commit quality is acceptable'));
202
+ console.log(chalk.cyan(' ๐Ÿ‘ MAINTAIN - Commit quality is acceptable'));
210
203
  }
211
204
  console.log('');
212
205
  }