@boshu2/vibe-check 1.8.1 → 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 (371) hide show
  1. package/.claude/settings.local.json +1 -1
  2. package/CHANGELOG.md +10 -0
  3. package/Makefile +4 -4
  4. package/bin/vibe-check.js +1 -1
  5. package/claude-progress.json +18 -0
  6. package/dist/analysis/cross-session-analysis.d.ts +1 -1
  7. package/dist/analysis/cross-session-analysis.d.ts.map +1 -1
  8. package/dist/analysis/cross-session-analysis.js +9 -18
  9. package/dist/analysis/cross-session-analysis.js.map +1 -1
  10. package/dist/analysis/index.d.ts +1 -1
  11. package/dist/analysis/index.d.ts.map +1 -1
  12. package/dist/analysis/index.js +1 -11
  13. package/dist/analysis/index.js.map +1 -1
  14. package/dist/analyzers/audit.d.ts +28 -0
  15. package/dist/analyzers/audit.d.ts.map +1 -0
  16. package/dist/analyzers/audit.js +86 -0
  17. package/dist/analyzers/audit.js.map +1 -0
  18. package/dist/analyzers/patterns.d.ts +1 -1
  19. package/dist/analyzers/patterns.d.ts.map +1 -1
  20. package/dist/analyzers/patterns.js +4 -10
  21. package/dist/analyzers/patterns.js.map +1 -1
  22. package/dist/analyzers/quality.d.ts +1 -1
  23. package/dist/analyzers/quality.d.ts.map +1 -1
  24. package/dist/analyzers/quality.js +5 -12
  25. package/dist/analyzers/quality.js.map +1 -1
  26. package/dist/analyzers/sessions.d.ts +1 -1
  27. package/dist/analyzers/sessions.d.ts.map +1 -1
  28. package/dist/analyzers/sessions.js +1 -4
  29. package/dist/analyzers/sessions.js.map +1 -1
  30. package/dist/cli.js +20 -20
  31. package/dist/cli.js.map +1 -1
  32. package/dist/commands/analyze.d.ts.map +1 -1
  33. package/dist/commands/analyze.js +114 -149
  34. package/dist/commands/analyze.js.map +1 -1
  35. package/dist/commands/audit.d.ts +3 -0
  36. package/dist/commands/audit.d.ts.map +1 -0
  37. package/dist/commands/audit.js +77 -0
  38. package/dist/commands/audit.js.map +1 -0
  39. package/dist/commands/cache.js +31 -70
  40. package/dist/commands/cache.js.map +1 -1
  41. package/dist/commands/dashboard.d.ts.map +1 -1
  42. package/dist/commands/dashboard.js +22 -58
  43. package/dist/commands/dashboard.js.map +1 -1
  44. package/dist/commands/forensics.d.ts +2 -2
  45. package/dist/commands/forensics.d.ts.map +1 -1
  46. package/dist/commands/forensics.js +41 -48
  47. package/dist/commands/forensics.js.map +1 -1
  48. package/dist/commands/index.d.ts +14 -13
  49. package/dist/commands/index.d.ts.map +1 -1
  50. package/dist/commands/index.js +14 -33
  51. package/dist/commands/index.js.map +1 -1
  52. package/dist/commands/init-hook.js +26 -32
  53. package/dist/commands/init-hook.js.map +1 -1
  54. package/dist/commands/insights.js +39 -45
  55. package/dist/commands/insights.js.map +1 -1
  56. package/dist/commands/pipeline.js +39 -78
  57. package/dist/commands/pipeline.js.map +1 -1
  58. package/dist/commands/profile.js +68 -74
  59. package/dist/commands/profile.js.map +1 -1
  60. package/dist/commands/session.js +88 -129
  61. package/dist/commands/session.js.map +1 -1
  62. package/dist/commands/sessions.d.ts +1 -1
  63. package/dist/commands/sessions.d.ts.map +1 -1
  64. package/dist/commands/sessions.js +42 -49
  65. package/dist/commands/sessions.js.map +1 -1
  66. package/dist/commands/start.js +22 -67
  67. package/dist/commands/start.js.map +1 -1
  68. package/dist/commands/timeline.js +74 -81
  69. package/dist/commands/timeline.js.map +1 -1
  70. package/dist/commands/watch.js +54 -60
  71. package/dist/commands/watch.js.map +1 -1
  72. package/dist/gamification/achievements.d.ts +1 -1
  73. package/dist/gamification/achievements.d.ts.map +1 -1
  74. package/dist/gamification/achievements.js +7 -13
  75. package/dist/gamification/achievements.js.map +1 -1
  76. package/dist/gamification/index.d.ts +8 -8
  77. package/dist/gamification/index.d.ts.map +1 -1
  78. package/dist/gamification/index.js +8 -28
  79. package/dist/gamification/index.js.map +1 -1
  80. package/dist/gamification/profile.d.ts +2 -2
  81. package/dist/gamification/profile.d.ts.map +1 -1
  82. package/dist/gamification/profile.js +21 -64
  83. package/dist/gamification/profile.js.map +1 -1
  84. package/dist/gamification/stats.d.ts +1 -1
  85. package/dist/gamification/stats.d.ts.map +1 -1
  86. package/dist/gamification/stats.js +4 -10
  87. package/dist/gamification/stats.js.map +1 -1
  88. package/dist/gamification/streaks.d.ts +1 -1
  89. package/dist/gamification/streaks.d.ts.map +1 -1
  90. package/dist/gamification/streaks.js +8 -18
  91. package/dist/gamification/streaks.js.map +1 -1
  92. package/dist/gamification/types.js +3 -6
  93. package/dist/gamification/types.js.map +1 -1
  94. package/dist/gamification/xp.d.ts +1 -1
  95. package/dist/gamification/xp.d.ts.map +1 -1
  96. package/dist/gamification/xp.js +29 -38
  97. package/dist/gamification/xp.js.map +1 -1
  98. package/dist/git.d.ts +1 -1
  99. package/dist/git.d.ts.map +1 -1
  100. package/dist/git.js +15 -27
  101. package/dist/git.js.map +1 -1
  102. package/dist/inner-loop/context-amnesia.d.ts +2 -2
  103. package/dist/inner-loop/context-amnesia.d.ts.map +1 -1
  104. package/dist/inner-loop/context-amnesia.js +7 -10
  105. package/dist/inner-loop/context-amnesia.js.map +1 -1
  106. package/dist/inner-loop/index.d.ts +7 -7
  107. package/dist/inner-loop/index.d.ts.map +1 -1
  108. package/dist/inner-loop/index.js +18 -45
  109. package/dist/inner-loop/index.js.map +1 -1
  110. package/dist/inner-loop/instruction-drift.d.ts +2 -2
  111. package/dist/inner-loop/instruction-drift.d.ts.map +1 -1
  112. package/dist/inner-loop/instruction-drift.js +5 -10
  113. package/dist/inner-loop/instruction-drift.js.map +1 -1
  114. package/dist/inner-loop/logging-only.d.ts +2 -2
  115. package/dist/inner-loop/logging-only.d.ts.map +1 -1
  116. package/dist/inner-loop/logging-only.js +9 -17
  117. package/dist/inner-loop/logging-only.js.map +1 -1
  118. package/dist/inner-loop/tests-passing-lie.d.ts +2 -2
  119. package/dist/inner-loop/tests-passing-lie.d.ts.map +1 -1
  120. package/dist/inner-loop/tests-passing-lie.js +12 -17
  121. package/dist/inner-loop/tests-passing-lie.js.map +1 -1
  122. package/dist/inner-loop/types.js +1 -4
  123. package/dist/inner-loop/types.js.map +1 -1
  124. package/dist/insights/generators.d.ts +4 -4
  125. package/dist/insights/generators.d.ts.map +1 -1
  126. package/dist/insights/generators.js +9 -20
  127. package/dist/insights/generators.js.map +1 -1
  128. package/dist/insights/index.d.ts +4 -4
  129. package/dist/insights/index.d.ts.map +1 -1
  130. package/dist/insights/index.js +23 -27
  131. package/dist/insights/index.js.map +1 -1
  132. package/dist/insights/types.js +1 -2
  133. package/dist/insights/types.js.map +1 -1
  134. package/dist/metrics/code-stability.d.ts +1 -1
  135. package/dist/metrics/code-stability.d.ts.map +1 -1
  136. package/dist/metrics/code-stability.js +1 -4
  137. package/dist/metrics/code-stability.js.map +1 -1
  138. package/dist/metrics/file-churn.d.ts +1 -1
  139. package/dist/metrics/file-churn.d.ts.map +1 -1
  140. package/dist/metrics/file-churn.js +1 -4
  141. package/dist/metrics/file-churn.js.map +1 -1
  142. package/dist/metrics/flow.d.ts +1 -1
  143. package/dist/metrics/flow.d.ts.map +1 -1
  144. package/dist/metrics/flow.js +1 -4
  145. package/dist/metrics/flow.js.map +1 -1
  146. package/dist/metrics/index.d.ts +2 -2
  147. package/dist/metrics/index.d.ts.map +1 -1
  148. package/dist/metrics/index.js +15 -20
  149. package/dist/metrics/index.js.map +1 -1
  150. package/dist/metrics/rework.d.ts +1 -1
  151. package/dist/metrics/rework.d.ts.map +1 -1
  152. package/dist/metrics/rework.js +1 -4
  153. package/dist/metrics/rework.js.map +1 -1
  154. package/dist/metrics/spirals.d.ts +1 -1
  155. package/dist/metrics/spirals.d.ts.map +1 -1
  156. package/dist/metrics/spirals.js +5 -10
  157. package/dist/metrics/spirals.js.map +1 -1
  158. package/dist/metrics/time-spiral.d.ts +1 -1
  159. package/dist/metrics/time-spiral.d.ts.map +1 -1
  160. package/dist/metrics/time-spiral.js +1 -4
  161. package/dist/metrics/time-spiral.js.map +1 -1
  162. package/dist/metrics/trust.d.ts +1 -1
  163. package/dist/metrics/trust.d.ts.map +1 -1
  164. package/dist/metrics/trust.js +3 -6
  165. package/dist/metrics/trust.js.map +1 -1
  166. package/dist/metrics/velocity-anomaly.d.ts +1 -1
  167. package/dist/metrics/velocity-anomaly.d.ts.map +1 -1
  168. package/dist/metrics/velocity-anomaly.js +3 -6
  169. package/dist/metrics/velocity-anomaly.js.map +1 -1
  170. package/dist/metrics/velocity.d.ts +1 -1
  171. package/dist/metrics/velocity.d.ts.map +1 -1
  172. package/dist/metrics/velocity.js +6 -10
  173. package/dist/metrics/velocity.js.map +1 -1
  174. package/dist/output/index.d.ts +4 -4
  175. package/dist/output/index.d.ts.map +1 -1
  176. package/dist/output/index.js +10 -18
  177. package/dist/output/index.js.map +1 -1
  178. package/dist/output/json.d.ts +1 -1
  179. package/dist/output/json.d.ts.map +1 -1
  180. package/dist/output/json.js +1 -4
  181. package/dist/output/json.js.map +1 -1
  182. package/dist/output/markdown.d.ts +1 -1
  183. package/dist/output/markdown.d.ts.map +1 -1
  184. package/dist/output/markdown.js +5 -8
  185. package/dist/output/markdown.js.map +1 -1
  186. package/dist/output/terminal.d.ts +1 -1
  187. package/dist/output/terminal.d.ts.map +1 -1
  188. package/dist/output/terminal.js +55 -62
  189. package/dist/output/terminal.js.map +1 -1
  190. package/dist/output/timeline-html.d.ts +1 -1
  191. package/dist/output/timeline-html.d.ts.map +1 -1
  192. package/dist/output/timeline-html.js +5 -8
  193. package/dist/output/timeline-html.js.map +1 -1
  194. package/dist/output/timeline-markdown.d.ts +1 -1
  195. package/dist/output/timeline-markdown.d.ts.map +1 -1
  196. package/dist/output/timeline-markdown.js +5 -8
  197. package/dist/output/timeline-markdown.js.map +1 -1
  198. package/dist/output/timeline.d.ts +1 -1
  199. package/dist/output/timeline.d.ts.map +1 -1
  200. package/dist/output/timeline.js +46 -52
  201. package/dist/output/timeline.js.map +1 -1
  202. package/dist/patterns/detour.d.ts +1 -1
  203. package/dist/patterns/detour.d.ts.map +1 -1
  204. package/dist/patterns/detour.js +1 -4
  205. package/dist/patterns/detour.js.map +1 -1
  206. package/dist/patterns/flow-state.d.ts +1 -1
  207. package/dist/patterns/flow-state.d.ts.map +1 -1
  208. package/dist/patterns/flow-state.js +1 -4
  209. package/dist/patterns/flow-state.js.map +1 -1
  210. package/dist/patterns/index.d.ts +7 -7
  211. package/dist/patterns/index.d.ts.map +1 -1
  212. package/dist/patterns/index.js +7 -21
  213. package/dist/patterns/index.js.map +1 -1
  214. package/dist/patterns/intervention-effectiveness.d.ts +1 -1
  215. package/dist/patterns/intervention-effectiveness.d.ts.map +1 -1
  216. package/dist/patterns/intervention-effectiveness.js +3 -8
  217. package/dist/patterns/intervention-effectiveness.js.map +1 -1
  218. package/dist/patterns/late-night.d.ts +1 -1
  219. package/dist/patterns/late-night.d.ts.map +1 -1
  220. package/dist/patterns/late-night.js +1 -4
  221. package/dist/patterns/late-night.js.map +1 -1
  222. package/dist/patterns/post-delete-sprint.d.ts +1 -1
  223. package/dist/patterns/post-delete-sprint.d.ts.map +1 -1
  224. package/dist/patterns/post-delete-sprint.js +1 -4
  225. package/dist/patterns/post-delete-sprint.js.map +1 -1
  226. package/dist/patterns/spiral-regression.d.ts +1 -1
  227. package/dist/patterns/spiral-regression.d.ts.map +1 -1
  228. package/dist/patterns/spiral-regression.js +3 -8
  229. package/dist/patterns/spiral-regression.js.map +1 -1
  230. package/dist/patterns/thrashing.d.ts +1 -1
  231. package/dist/patterns/thrashing.d.ts.map +1 -1
  232. package/dist/patterns/thrashing.js +3 -6
  233. package/dist/patterns/thrashing.js.map +1 -1
  234. package/dist/score/index.d.ts +3 -3
  235. package/dist/score/index.d.ts.map +1 -1
  236. package/dist/score/index.js +4 -10
  237. package/dist/score/index.js.map +1 -1
  238. package/dist/score/weights.js +2 -6
  239. package/dist/score/weights.js.map +1 -1
  240. package/dist/sessions/index.js +9 -51
  241. package/dist/sessions/index.js.map +1 -1
  242. package/dist/storage/atomic.js +10 -51
  243. package/dist/storage/atomic.js.map +1 -1
  244. package/dist/storage/commit-log.d.ts +1 -1
  245. package/dist/storage/commit-log.d.ts.map +1 -1
  246. package/dist/storage/commit-log.js +11 -51
  247. package/dist/storage/commit-log.js.map +1 -1
  248. package/dist/storage/index.d.ts +5 -5
  249. package/dist/storage/index.d.ts.map +1 -1
  250. package/dist/storage/index.js +5 -37
  251. package/dist/storage/index.js.map +1 -1
  252. package/dist/storage/schema.js +4 -9
  253. package/dist/storage/schema.js.map +1 -1
  254. package/dist/storage/spiral-history.js +14 -57
  255. package/dist/storage/spiral-history.js.map +1 -1
  256. package/dist/storage/timeline-store.d.ts +2 -2
  257. package/dist/storage/timeline-store.d.ts.map +1 -1
  258. package/dist/storage/timeline-store.js +17 -61
  259. package/dist/storage/timeline-store.js.map +1 -1
  260. package/dist/types.js +1 -2
  261. package/docs/ENHANCEMENT-PLAN.md +361 -0
  262. package/feature-list.json +6 -0
  263. package/package.json +8 -7
  264. package/dist/calibration/ece.d.ts +0 -26
  265. package/dist/calibration/ece.d.ts.map +0 -1
  266. package/dist/calibration/ece.js +0 -93
  267. package/dist/calibration/ece.js.map +0 -1
  268. package/dist/calibration/index.d.ts +0 -3
  269. package/dist/calibration/index.d.ts.map +0 -1
  270. package/dist/calibration/index.js +0 -15
  271. package/dist/calibration/index.js.map +0 -1
  272. package/dist/calibration/storage.d.ts +0 -34
  273. package/dist/calibration/storage.d.ts.map +0 -1
  274. package/dist/calibration/storage.js +0 -188
  275. package/dist/calibration/storage.js.map +0 -1
  276. package/dist/commands/intervene.d.ts +0 -15
  277. package/dist/commands/intervene.d.ts.map +0 -1
  278. package/dist/commands/intervene.js +0 -183
  279. package/dist/commands/intervene.js.map +0 -1
  280. package/dist/commands/learn.d.ts +0 -3
  281. package/dist/commands/learn.d.ts.map +0 -1
  282. package/dist/commands/learn.js +0 -161
  283. package/dist/commands/learn.js.map +0 -1
  284. package/dist/commands/lesson.d.ts +0 -8
  285. package/dist/commands/lesson.d.ts.map +0 -1
  286. package/dist/commands/lesson.js +0 -206
  287. package/dist/commands/lesson.js.map +0 -1
  288. package/dist/commands/level.d.ts +0 -3
  289. package/dist/commands/level.d.ts.map +0 -1
  290. package/dist/commands/level.js +0 -277
  291. package/dist/commands/level.js.map +0 -1
  292. package/dist/gamification/badges.d.ts +0 -29
  293. package/dist/gamification/badges.d.ts.map +0 -1
  294. package/dist/gamification/badges.js +0 -114
  295. package/dist/gamification/badges.js.map +0 -1
  296. package/dist/gamification/challenges.d.ts +0 -42
  297. package/dist/gamification/challenges.d.ts.map +0 -1
  298. package/dist/gamification/challenges.js +0 -184
  299. package/dist/gamification/challenges.js.map +0 -1
  300. package/dist/gamification/hall-of-fame.d.ts +0 -17
  301. package/dist/gamification/hall-of-fame.d.ts.map +0 -1
  302. package/dist/gamification/hall-of-fame.js +0 -64
  303. package/dist/gamification/hall-of-fame.js.map +0 -1
  304. package/dist/gamification/intervention-memory.d.ts +0 -61
  305. package/dist/gamification/intervention-memory.d.ts.map +0 -1
  306. package/dist/gamification/intervention-memory.js +0 -229
  307. package/dist/gamification/intervention-memory.js.map +0 -1
  308. package/dist/gamification/leaderboards.d.ts +0 -49
  309. package/dist/gamification/leaderboards.d.ts.map +0 -1
  310. package/dist/gamification/leaderboards.js +0 -179
  311. package/dist/gamification/leaderboards.js.map +0 -1
  312. package/dist/gamification/pattern-memory.d.ts +0 -45
  313. package/dist/gamification/pattern-memory.d.ts.map +0 -1
  314. package/dist/gamification/pattern-memory.js +0 -188
  315. package/dist/gamification/pattern-memory.js.map +0 -1
  316. package/dist/gamification/share.d.ts +0 -29
  317. package/dist/gamification/share.d.ts.map +0 -1
  318. package/dist/gamification/share.js +0 -57
  319. package/dist/gamification/share.js.map +0 -1
  320. package/dist/learning/cadence.d.ts +0 -15
  321. package/dist/learning/cadence.d.ts.map +0 -1
  322. package/dist/learning/cadence.js +0 -130
  323. package/dist/learning/cadence.js.map +0 -1
  324. package/dist/learning/index.d.ts +0 -19
  325. package/dist/learning/index.d.ts.map +0 -1
  326. package/dist/learning/index.js +0 -35
  327. package/dist/learning/index.js.map +0 -1
  328. package/dist/learning/lessons-storage.d.ts +0 -48
  329. package/dist/learning/lessons-storage.d.ts.map +0 -1
  330. package/dist/learning/lessons-storage.js +0 -266
  331. package/dist/learning/lessons-storage.js.map +0 -1
  332. package/dist/learning/lessons-types.d.ts +0 -83
  333. package/dist/learning/lessons-types.d.ts.map +0 -1
  334. package/dist/learning/lessons-types.js +0 -15
  335. package/dist/learning/lessons-types.js.map +0 -1
  336. package/dist/learning/nudges.d.ts +0 -20
  337. package/dist/learning/nudges.d.ts.map +0 -1
  338. package/dist/learning/nudges.js +0 -68
  339. package/dist/learning/nudges.js.map +0 -1
  340. package/dist/learning/retrospective.d.ts +0 -27
  341. package/dist/learning/retrospective.d.ts.map +0 -1
  342. package/dist/learning/retrospective.js +0 -184
  343. package/dist/learning/retrospective.js.map +0 -1
  344. package/dist/learning/storage.d.ts +0 -44
  345. package/dist/learning/storage.d.ts.map +0 -1
  346. package/dist/learning/storage.js +0 -194
  347. package/dist/learning/storage.js.map +0 -1
  348. package/dist/learning/surfacing.d.ts +0 -36
  349. package/dist/learning/surfacing.d.ts.map +0 -1
  350. package/dist/learning/surfacing.js +0 -255
  351. package/dist/learning/surfacing.js.map +0 -1
  352. package/dist/learning/synthesis.d.ts +0 -17
  353. package/dist/learning/synthesis.d.ts.map +0 -1
  354. package/dist/learning/synthesis.js +0 -293
  355. package/dist/learning/synthesis.js.map +0 -1
  356. package/dist/learning/types.d.ts +0 -60
  357. package/dist/learning/types.d.ts.map +0 -1
  358. package/dist/learning/types.js +0 -17
  359. package/dist/learning/types.js.map +0 -1
  360. package/dist/recommend/index.d.ts +0 -3
  361. package/dist/recommend/index.d.ts.map +0 -1
  362. package/dist/recommend/index.js +0 -14
  363. package/dist/recommend/index.js.map +0 -1
  364. package/dist/recommend/ordered-logistic.d.ts +0 -49
  365. package/dist/recommend/ordered-logistic.d.ts.map +0 -1
  366. package/dist/recommend/ordered-logistic.js +0 -153
  367. package/dist/recommend/ordered-logistic.js.map +0 -1
  368. package/dist/recommend/questions.d.ts +0 -19
  369. package/dist/recommend/questions.d.ts.map +0 -1
  370. package/dist/recommend/questions.js +0 -73
  371. package/dist/recommend/questions.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  {
2
- "includeCoAuthoredBy": true,
2
+ "includeCoAuthoredBy": false,
3
3
  "enabledMcpjsonServers": [
4
4
  "context7"
5
5
  ],
package/CHANGELOG.md CHANGED
@@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2.0.0] - 2025-12-15
11
+
12
+ ### Added
13
+ - **Audit Command** - `vibe-check audit` for static analysis of code messes (monoliths, test gaps, TODOs)
14
+
15
+ ### Changed
16
+ - **ESM Migration** - Package is now pure ESM (`type: module`). Requires Node.js 20+.
17
+ - **Dependencies** - Updated all dependencies to December 2025 latest versions.
18
+ - **Chalk v5** - Updated to `chalk` v5 (ESM only).
19
+
10
20
  ## [1.8.0] - 2025-12-05
11
21
 
12
22
  ### Added
package/Makefile CHANGED
@@ -100,7 +100,7 @@ release-patch: build test
100
100
  git push --follow-tags
101
101
  $(MAKE) github-release
102
102
  npm publish --access=public
103
- @echo "✅ Released v$$(node -p "require('./package.json').version")"
103
+ @echo "✅ Released v$$(npm pkg get version | tr -d '"')"
104
104
 
105
105
  release-minor: build test
106
106
  @echo "📦 Releasing minor version..."
@@ -108,7 +108,7 @@ release-minor: build test
108
108
  git push --follow-tags
109
109
  $(MAKE) github-release
110
110
  npm publish --access=public
111
- @echo "✅ Released v$$(node -p "require('./package.json').version")"
111
+ @echo "✅ Released v$$(npm pkg get version | tr -d '"')"
112
112
 
113
113
  release-major: build test
114
114
  @echo "📦 Releasing major version..."
@@ -116,11 +116,11 @@ release-major: build test
116
116
  git push --follow-tags
117
117
  $(MAKE) github-release
118
118
  npm publish --access=public
119
- @echo "✅ Released v$$(node -p "require('./package.json').version")"
119
+ @echo "✅ Released v$$(npm pkg get version | tr -d '"')"
120
120
 
121
121
  # Create GitHub release from latest tag
122
122
  github-release:
123
- @VERSION=$$(node -p "require('./package.json').version"); \
123
+ @VERSION=$$(npm pkg get version | tr -d '"'); \
124
124
  gh release create "v$$VERSION" \
125
125
  --title "v$$VERSION" \
126
126
  --generate-notes
package/bin/vibe-check.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- require('../dist/cli.js');
2
+ import '../dist/cli.js';
@@ -218,6 +218,24 @@
218
218
  "Plan before implement - actionable coaching plan guides next work"
219
219
  ]
220
220
  }
221
+ },
222
+ {
223
+ "session_id": "2025-12-15-001",
224
+ "started": "2025-12-15T12:00:00Z",
225
+ "ended": "2025-12-15T12:05:00Z",
226
+ "vibe_level": 5,
227
+ "summary": "Updated dependencies to latest (Dec 2025). Bumped typescript to 5.9.3, types/node to 25.0.2. Fixed integration tests to account for stale git history.",
228
+ "commits": [],
229
+ "features_completed": []
230
+ },
231
+ {
232
+ "session_id": "2025-12-15-002",
233
+ "started": "2025-12-15T13:00:00Z",
234
+ "ended": "2025-12-15T13:30:00Z",
235
+ "vibe_level": 4,
236
+ "summary": "Implemented `vibe-check audit` command for static analysis. Detects monoliths (>600 lines), test gaps (missing test files), and TODO density.",
237
+ "commits": [],
238
+ "features_completed": ["VIBE-048"]
221
239
  }
222
240
  ],
223
241
  "sessions_continued": [
@@ -1,4 +1,4 @@
1
- import { Commit } from '../types';
1
+ import { Commit } from '../types.js';
2
2
  export interface QueryFilter {
3
3
  scope?: string;
4
4
  type?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"cross-session-analysis.d.ts","sourceRoot":"","sources":["../../src/analysis/cross-session-analysis.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,IAAI,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3C,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,GAAE,MAAsB,GAAG,MAAM,EAAE,CAEzE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,CAU7E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,CAqC9D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,mBAAmB,CAqD7E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,SAAS,GAAE,MAAY,GAAG,UAAU,EAAE,CAK9F;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAKlF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG;IACpE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACzC,CA8BA"}
1
+ {"version":3,"file":"cross-session-analysis.d.ts","sourceRoot":"","sources":["../../src/analysis/cross-session-analysis.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,IAAI,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3C,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,GAAE,MAAsB,GAAG,MAAM,EAAE,CAEzE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,CAU7E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,CAqC9D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,mBAAmB,CAqD7E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,SAAS,GAAE,MAAY,GAAG,UAAU,EAAE,CAK9F;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAKlF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG;IACpE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACzC,CA8BA"}
@@ -1,27 +1,18 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.loadAllCommits = loadAllCommits;
4
- exports.queryCommits = queryCommits;
5
- exports.analyzeByScope = analyzeByScope;
6
- exports.getCrossSessionSummary = getCrossSessionSummary;
7
- exports.findProblematicScopes = findProblematicScopes;
8
- exports.findPeakHours = findPeakHours;
9
- exports.analyzeScopeDetail = analyzeScopeDetail;
10
1
  /**
11
2
  * Cross-session analysis for querying historical commit data.
12
3
  * Enables queries like "show all auth spirals" or "commits by scope".
13
4
  */
14
- const commit_log_1 = require("../storage/commit-log");
5
+ import { readCommitLog } from '../storage/commit-log.js';
15
6
  /**
16
7
  * Load all commits from the NDJSON log
17
8
  */
18
- function loadAllCommits(repoPath = process.cwd()) {
19
- return (0, commit_log_1.readCommitLog)(repoPath);
9
+ export function loadAllCommits(repoPath = process.cwd()) {
10
+ return readCommitLog(repoPath);
20
11
  }
21
12
  /**
22
13
  * Query commits with filters
23
14
  */
24
- function queryCommits(commits, filter) {
15
+ export function queryCommits(commits, filter) {
25
16
  return commits.filter(commit => {
26
17
  if (filter.scope && commit.scope !== filter.scope)
27
18
  return false;
@@ -41,7 +32,7 @@ function queryCommits(commits, filter) {
41
32
  /**
42
33
  * Get statistics by scope
43
34
  */
44
- function analyzeByScope(commits) {
35
+ export function analyzeByScope(commits) {
45
36
  const scopeMap = new Map();
46
37
  for (const commit of commits) {
47
38
  const scope = commit.scope || '(no scope)';
@@ -74,7 +65,7 @@ function analyzeByScope(commits) {
74
65
  /**
75
66
  * Get comprehensive cross-session summary
76
67
  */
77
- function getCrossSessionSummary(commits) {
68
+ export function getCrossSessionSummary(commits) {
78
69
  if (commits.length === 0) {
79
70
  return {
80
71
  totalCommits: 0,
@@ -125,7 +116,7 @@ function getCrossSessionSummary(commits) {
125
116
  /**
126
117
  * Find scopes with high spiral ratios (potential trouble spots)
127
118
  */
128
- function findProblematicScopes(commits, threshold = 0.5) {
119
+ export function findProblematicScopes(commits, threshold = 0.5) {
129
120
  const byScope = analyzeByScope(commits);
130
121
  return byScope
131
122
  .filter(s => s.commitCount >= 3 && s.spiralRatio >= threshold)
@@ -134,7 +125,7 @@ function findProblematicScopes(commits, threshold = 0.5) {
134
125
  /**
135
126
  * Find peak productivity hours
136
127
  */
137
- function findPeakHours(commits) {
128
+ export function findPeakHours(commits) {
138
129
  const summary = getCrossSessionSummary(commits);
139
130
  return Object.entries(summary.byHour)
140
131
  .map(([hour, count]) => ({ hour: parseInt(hour), count }))
@@ -143,7 +134,7 @@ function findPeakHours(commits) {
143
134
  /**
144
135
  * Get commits for a specific scope with detailed analysis
145
136
  */
146
- function analyzeScopeDetail(commits, scope) {
137
+ export function analyzeScopeDetail(commits, scope) {
147
138
  const scopeCommits = commits.filter(c => c.scope === scope);
148
139
  if (scopeCommits.length === 0) {
149
140
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"cross-session-analysis.js","sourceRoot":"","sources":["../../src/analysis/cross-session-analysis.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cross-session-analysis.js","sourceRoot":"","sources":["../../src/analysis/cross-session-analysis.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { QueryFilter, ScopeStats, CrossSessionSummary, loadAllCommits, queryCommits, analyzeByScope, getCrossSessionSummary, findProblematicScopes, findPeakHours, analyzeScopeDetail, } from './cross-session-analysis';
1
+ export { QueryFilter, ScopeStats, CrossSessionSummary, loadAllCommits, queryCommits, analyzeByScope, getCrossSessionSummary, findProblematicScopes, findPeakHours, analyzeScopeDetail, } from './cross-session-analysis.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/analysis/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,aAAa,EACb,kBAAkB,GACnB,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/analysis/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,aAAa,EACb,kBAAkB,GACnB,MAAM,6BAA6B,CAAC"}
@@ -1,12 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.analyzeScopeDetail = exports.findPeakHours = exports.findProblematicScopes = exports.getCrossSessionSummary = exports.analyzeByScope = exports.queryCommits = exports.loadAllCommits = void 0;
4
- var cross_session_analysis_1 = require("./cross-session-analysis");
5
- Object.defineProperty(exports, "loadAllCommits", { enumerable: true, get: function () { return cross_session_analysis_1.loadAllCommits; } });
6
- Object.defineProperty(exports, "queryCommits", { enumerable: true, get: function () { return cross_session_analysis_1.queryCommits; } });
7
- Object.defineProperty(exports, "analyzeByScope", { enumerable: true, get: function () { return cross_session_analysis_1.analyzeByScope; } });
8
- Object.defineProperty(exports, "getCrossSessionSummary", { enumerable: true, get: function () { return cross_session_analysis_1.getCrossSessionSummary; } });
9
- Object.defineProperty(exports, "findProblematicScopes", { enumerable: true, get: function () { return cross_session_analysis_1.findProblematicScopes; } });
10
- Object.defineProperty(exports, "findPeakHours", { enumerable: true, get: function () { return cross_session_analysis_1.findPeakHours; } });
11
- Object.defineProperty(exports, "analyzeScopeDetail", { enumerable: true, get: function () { return cross_session_analysis_1.analyzeScopeDetail; } });
1
+ export { loadAllCommits, queryCommits, analyzeByScope, getCrossSessionSummary, findProblematicScopes, findPeakHours, analyzeScopeDetail, } from './cross-session-analysis.js';
12
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/analysis/index.ts"],"names":[],"mappings":";;;AAAA,mEAWkC;AAPhC,wHAAA,cAAc,OAAA;AACd,sHAAA,YAAY,OAAA;AACZ,wHAAA,cAAc,OAAA;AACd,gIAAA,sBAAsB,OAAA;AACtB,+HAAA,qBAAqB,OAAA;AACrB,uHAAA,aAAa,OAAA;AACb,4HAAA,kBAAkB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/analysis/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,cAAc,EACd,YAAY,EACZ,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,aAAa,EACb,kBAAkB,GACnB,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,28 @@
1
+ export interface AuditResult {
2
+ monoliths: Monolith[];
3
+ testGaps: TestGap[];
4
+ todoDensity: TodoHotspot[];
5
+ stats: {
6
+ totalFiles: number;
7
+ totalLines: number;
8
+ };
9
+ }
10
+ export interface Monolith {
11
+ file: string;
12
+ lines: number;
13
+ }
14
+ export interface TestGap {
15
+ file: string;
16
+ testFile: string | null;
17
+ lastModified: Date;
18
+ }
19
+ export interface TodoHotspot {
20
+ file: string;
21
+ count: number;
22
+ }
23
+ export declare function scanDirectory(dir: string, rootDir?: string): string[];
24
+ export declare function analyzeMonoliths(files: string[], limit?: number): Monolith[];
25
+ export declare function analyzeTodoDensity(files: string[], limit?: number): TodoHotspot[];
26
+ export declare function analyzeTestGaps(files: string[], rootDir: string): TestGap[];
27
+ export declare function runAudit(rootDir: string): AuditResult;
28
+ //# sourceMappingURL=audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/analyzers/audit.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,WAAW,EAAE,WAAW,EAAE,CAAC;IAC3B,KAAK,EAAE;QACL,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,EAAE,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAKD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,MAAY,GAAG,MAAM,EAAE,CAoB1E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,GAAE,MAAY,GAAG,QAAQ,EAAE,CAYjF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,GAAE,MAAU,GAAG,WAAW,EAAE,CAYpF;AAGD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE,CA4B3E;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAerD"}
@@ -0,0 +1,86 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ const IGNORE_DIRS = ['node_modules', 'dist', 'coverage', '.git', '.vibe-check'];
4
+ const TEST_EXTENSIONS = ['.test.ts', '.spec.ts', '.test.js', '.spec.js'];
5
+ export function scanDirectory(dir, rootDir = dir) {
6
+ let results = [];
7
+ const list = fs.readdirSync(dir);
8
+ for (const file of list) {
9
+ const filePath = path.join(dir, file);
10
+ const stat = fs.statSync(filePath);
11
+ if (stat && stat.isDirectory()) {
12
+ if (!IGNORE_DIRS.includes(file)) {
13
+ results = results.concat(scanDirectory(filePath, rootDir));
14
+ }
15
+ }
16
+ else {
17
+ // Only include source files
18
+ if (file.match(/\.(ts|js|jsx|tsx)$/)) {
19
+ results.push(filePath);
20
+ }
21
+ }
22
+ }
23
+ return results;
24
+ }
25
+ export function analyzeMonoliths(files, limit = 600) {
26
+ const monoliths = [];
27
+ for (const file of files) {
28
+ const content = fs.readFileSync(file, 'utf-8');
29
+ const lines = content.split('\n').length;
30
+ if (lines > limit) {
31
+ monoliths.push({ file, lines });
32
+ }
33
+ }
34
+ return monoliths.sort((a, b) => b.lines - a.lines);
35
+ }
36
+ export function analyzeTodoDensity(files, limit = 5) {
37
+ const hotspots = [];
38
+ for (const file of files) {
39
+ const content = fs.readFileSync(file, 'utf-8');
40
+ const matches = content.match(/\/\/\s*(TODO|FIXME)/gi);
41
+ if (matches && matches.length >= limit) {
42
+ hotspots.push({ file, count: matches.length });
43
+ }
44
+ }
45
+ return hotspots.sort((a, b) => b.count - a.count);
46
+ }
47
+ // Simple heuristic: if src/foo.ts exists, look for src/foo.test.ts or tests/foo.test.ts
48
+ export function analyzeTestGaps(files, rootDir) {
49
+ const gaps = [];
50
+ const sourceFiles = files.filter(f => !f.match(/\.(test|spec)\./) && !f.includes('/tests/'));
51
+ for (const file of sourceFiles) {
52
+ const fileName = path.basename(file, path.extname(file));
53
+ const relativePath = path.relative(rootDir, file);
54
+ // Potential test locations
55
+ const candidates = [
56
+ file.replace(/\.(ts|js|tsx|jsx)$/, '.test.$1'),
57
+ file.replace(/\.(ts|js|tsx|jsx)$/, '.spec.$1'),
58
+ path.join(rootDir, 'tests', `${fileName}.test.ts`),
59
+ path.join(rootDir, 'tests', relativePath.replace(/\.(ts|js|tsx|jsx)$/, '.test.$1'))
60
+ ];
61
+ const hasTest = candidates.some(c => fs.existsSync(c));
62
+ if (!hasTest) {
63
+ gaps.push({
64
+ file: relativePath,
65
+ testFile: null,
66
+ lastModified: fs.statSync(file).mtime
67
+ });
68
+ }
69
+ }
70
+ return gaps;
71
+ }
72
+ export function runAudit(rootDir) {
73
+ const files = scanDirectory(rootDir);
74
+ const totalFiles = files.length;
75
+ let totalLines = 0;
76
+ files.forEach(f => {
77
+ totalLines += fs.readFileSync(f, 'utf-8').split('\n').length;
78
+ });
79
+ return {
80
+ monoliths: analyzeMonoliths(files),
81
+ testGaps: analyzeTestGaps(files, rootDir),
82
+ todoDensity: analyzeTodoDensity(files),
83
+ stats: { totalFiles, totalLines }
84
+ };
85
+ }
86
+ //# sourceMappingURL=audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/analyzers/audit.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@
8
8
  *
9
9
  * Proven algorithm from release-engineering retrospective (475 commits analyzed).
10
10
  */
11
- import { Commit } from '../types';
11
+ import { Commit } from '../types.js';
12
12
  export interface DebugSpiral {
13
13
  count: number;
14
14
  durationMinutes: number;
@@ -1 +1 @@
1
- {"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../src/analyzers/patterns.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,YAAY,EAAE,eAAe,CAAC;IAC9B,cAAc,EAAE,kBAAkB,CAAC;CACpC;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,WAAW,GAAG,IAAI,CAoCxE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EAAE,EACjB,SAAS,GAAE,MAAW,GACrB,eAAe,CAmBjB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EAAE,EACjB,SAAS,GAAE,MAAU,GACpB,kBAAkB,CAiBpB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,sBAAsB,CAMxE"}
1
+ {"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../src/analyzers/patterns.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,YAAY,EAAE,eAAe,CAAC;IAC9B,cAAc,EAAE,kBAAkB,CAAC;CACpC;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,WAAW,GAAG,IAAI,CAoCxE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EAAE,EACjB,SAAS,GAAE,MAAW,GACrB,eAAe,CAmBjB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EAAE,EACjB,SAAS,GAAE,MAAU,GACpB,kBAAkB,CAiBpB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,sBAAsB,CAMxE"}
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * Pattern Detection Analyzer (VIBE-045)
4
3
  *
@@ -9,18 +8,13 @@
9
8
  *
10
9
  * Proven algorithm from release-engineering retrospective (475 commits analyzed).
11
10
  */
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.detectDebugSpirals = detectDebugSpirals;
14
- exports.detectVagueCommits = detectVagueCommits;
15
- exports.detectContextAmnesia = detectContextAmnesia;
16
- exports.detectPatterns = detectPatterns;
17
11
  /**
18
12
  * Detect "take N" pattern indicating debug spirals.
19
13
  *
20
14
  * A debug spiral is detected when 3+ commits match the pattern "take N" or similar
21
15
  * retry patterns, indicating the developer is stuck in a fix-retry loop.
22
16
  */
23
- function detectDebugSpirals(commits) {
17
+ export function detectDebugSpirals(commits) {
24
18
  const takePattern = /^take\s*[0-9]+$/i;
25
19
  const retryPatterns = [
26
20
  /^(fix|try|attempt)\s*#?\d+$/i, // "fix 2", "try #3"
@@ -52,7 +46,7 @@ function detectDebugSpirals(commits) {
52
46
  * Threshold: < 20 characters is considered vague.
53
47
  * Examples: "ci", "v3", "blah", "take 2", "fix"
54
48
  */
55
- function detectVagueCommits(commits, threshold = 20) {
49
+ export function detectVagueCommits(commits, threshold = 20) {
56
50
  const vagueCommits = commits.filter((c) => c.message.trim().length < threshold);
57
51
  // Get example vague messages (deduplicated, max 10)
58
52
  const examples = [
@@ -75,7 +69,7 @@ function detectVagueCommits(commits, threshold = 20) {
75
69
  *
76
70
  * Reports scopes that appear in 5+ commits.
77
71
  */
78
- function detectContextAmnesia(commits, minVisits = 5) {
72
+ export function detectContextAmnesia(commits, minVisits = 5) {
79
73
  const scopeCounts = new Map();
80
74
  for (const commit of commits) {
81
75
  if (commit.scope) {
@@ -93,7 +87,7 @@ function detectContextAmnesia(commits, minVisits = 5) {
93
87
  /**
94
88
  * Run all pattern detection on a set of commits.
95
89
  */
96
- function detectPatterns(commits) {
90
+ export function detectPatterns(commits) {
97
91
  return {
98
92
  debugSpirals: detectDebugSpirals(commits),
99
93
  vagueCommits: detectVagueCommits(commits),
@@ -1 +1 @@
1
- {"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../src/analyzers/patterns.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../src/analyzers/patterns.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@
8
8
  *
9
9
  * Proven algorithm from release-engineering retrospective.
10
10
  */
11
- import { Commit } from '../types';
11
+ import { Commit } from '../types.js';
12
12
  export interface QualityMetrics {
13
13
  totalCommits: number;
14
14
  conventionalCommits: {
@@ -1 +1 @@
1
- {"version":3,"file":"quality.d.ts","sourceRoot":"","sources":["../../src/analyzers/quality.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,kBAAkB,EAAE;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,YAAY,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAmBD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAM7D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,MAAW,GACrB,OAAO,CAGT;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,MAAW,GACrB,OAAO,CAGT;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EAAE,EACjB,cAAc,GAAE,MAAW,EAC3B,oBAAoB,GAAE,MAAW,GAChC,cAAc,CAyChB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,OAAO,GAClB,OAAO,GAAG,UAAU,GAAG,WAAW,CAgBpC"}
1
+ {"version":3,"file":"quality.d.ts","sourceRoot":"","sources":["../../src/analyzers/quality.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,kBAAkB,EAAE;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,YAAY,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAmBD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAM7D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,MAAW,GACrB,OAAO,CAGT;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,MAAW,GACrB,OAAO,CAGT;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EAAE,EACjB,cAAc,GAAE,MAAW,EAC3B,oBAAoB,GAAE,MAAW,GAChC,cAAc,CAyChB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,OAAO,GAClB,OAAO,GAAG,UAAU,GAAG,WAAW,CAgBpC"}
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * Quality Metrics Analyzer (VIBE-045)
4
3
  *
@@ -9,12 +8,6 @@
9
8
  *
10
9
  * Proven algorithm from release-engineering retrospective.
11
10
  */
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.isConventionalCommit = isConventionalCommit;
14
- exports.isDescriptiveCommit = isDescriptiveCommit;
15
- exports.isVagueCommit = isVagueCommit;
16
- exports.calculateQualityMetrics = calculateQualityMetrics;
17
- exports.getRecommendation = getRecommendation;
18
11
  /**
19
12
  * Conventional commit types as per spec.
20
13
  */
@@ -37,7 +30,7 @@ const CONVENTIONAL_TYPES = [
37
30
  * Format: type(scope?): description
38
31
  * Examples: "feat: add login", "fix(auth): handle token expiry"
39
32
  */
40
- function isConventionalCommit(message) {
33
+ export function isConventionalCommit(message) {
41
34
  const conventionalPattern = new RegExp(`^(${CONVENTIONAL_TYPES.join('|')})(\\([^)]+\\))?:\\s*.+`, 'i');
42
35
  return conventionalPattern.test(message.trim());
43
36
  }
@@ -46,7 +39,7 @@ function isConventionalCommit(message) {
46
39
  *
47
40
  * A descriptive commit has at least 20 characters in the first line.
48
41
  */
49
- function isDescriptiveCommit(message, minLength = 20) {
42
+ export function isDescriptiveCommit(message, minLength = 20) {
50
43
  const firstLine = message.trim().split('\n')[0];
51
44
  return firstLine.length >= minLength;
52
45
  }
@@ -55,14 +48,14 @@ function isDescriptiveCommit(message, minLength = 20) {
55
48
  *
56
49
  * Threshold: < 20 characters
57
50
  */
58
- function isVagueCommit(message, threshold = 20) {
51
+ export function isVagueCommit(message, threshold = 20) {
59
52
  const firstLine = message.trim().split('\n')[0];
60
53
  return firstLine.length < threshold;
61
54
  }
62
55
  /**
63
56
  * Calculate quality metrics for a set of commits.
64
57
  */
65
- function calculateQualityMetrics(commits, vagueThreshold = 20, descriptiveMinLength = 20) {
58
+ export function calculateQualityMetrics(commits, vagueThreshold = 20, descriptiveMinLength = 20) {
66
59
  const total = commits.length;
67
60
  if (total === 0) {
68
61
  return {
@@ -98,7 +91,7 @@ function calculateQualityMetrics(commits, vagueThreshold = 20, descriptiveMinLen
98
91
  *
99
92
  * Returns 'sweep' if cleanup is recommended, 'maintain' if quality is acceptable.
100
93
  */
101
- function getRecommendation(metrics, hasSpirals) {
94
+ export function getRecommendation(metrics, hasSpirals) {
102
95
  // Sweep if: >50% vague commits OR any debug spirals
103
96
  if (metrics.vagueCommits.percentage > 50 || hasSpirals) {
104
97
  return 'sweep';
@@ -1 +1 @@
1
- {"version":3,"file":"quality.js","sourceRoot":"","sources":["../../src/analyzers/quality.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"quality.js","sourceRoot":"","sources":["../../src/analyzers/quality.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * Default threshold: 90 minutes between commits starts a new session.
8
8
  */
9
- import { Commit } from '../types';
9
+ import { Commit } from '../types.js';
10
10
  export interface DetectedSession {
11
11
  sessionId: number;
12
12
  startDate: Date;
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/analyzers/sessions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,KAAK,EAAE,YAAY,CAAC;IACpB,aAAa,EAAE;QACb,IAAI,EAAE,IAAI,CAAC;QACX,EAAE,EAAE,IAAI,CAAC;KACV,CAAC;CACH;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EAAE,EACjB,mBAAmB,GAAE,MAAW,GAC/B,sBAAsB,CAkExB"}
1
+ {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/analyzers/sessions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,KAAK,EAAE,YAAY,CAAC;IACpB,aAAa,EAAE;QACb,IAAI,EAAE,IAAI,CAAC;QACX,EAAE,EAAE,IAAI,CAAC;KACV,CAAC;CACH;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EAAE,EACjB,mBAAmB,GAAE,MAAW,GAC/B,sBAAsB,CAkExB"}
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * Session Detection Algorithm (VIBE-046)
4
3
  *
@@ -7,8 +6,6 @@
7
6
  *
8
7
  * Default threshold: 90 minutes between commits starts a new session.
9
8
  */
10
- Object.defineProperty(exports, "__esModule", { value: true });
11
- exports.detectSessions = detectSessions;
12
9
  /**
13
10
  * Detect work sessions from a list of commits.
14
11
  *
@@ -18,7 +15,7 @@ exports.detectSessions = detectSessions;
18
15
  * @param gapThresholdMinutes Minutes between commits to start new session (default: 90)
19
16
  * @returns Session detection result with sessions and statistics
20
17
  */
21
- function detectSessions(commits, gapThresholdMinutes = 90) {
18
+ export function detectSessions(commits, gapThresholdMinutes = 90) {
22
19
  if (commits.length === 0) {
23
20
  return {
24
21
  sessions: [],
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/analyzers/sessions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/analyzers/sessions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAgCH;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAiB,EACjB,sBAA8B,EAAE;IAEhC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO;YACL,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE;gBACL,aAAa,EAAE,CAAC;gBAChB,YAAY,EAAE,CAAC;gBACf,oBAAoB,EAAE,CAAC;gBACvB,kBAAkB,EAAE,CAAC;gBACrB,qBAAqB,EAAE,CAAC;gBACxB,qBAAqB,EAAE,CAAC;gBACxB,sBAAsB,EAAE,CAAC;aAC1B;YACD,aAAa,EAAE;gBACb,IAAI,EAAE,IAAI,IAAI,EAAE;gBAChB,EAAE,EAAE,IAAI,IAAI,EAAE;aACf;SACF,CAAC;IACJ,CAAC;IAED,sCAAsC;IACtC,MAAM,aAAa,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CACrC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAC9C,CAAC;IAEF,MAAM,cAAc,GAAG,mBAAmB,GAAG,EAAE,GAAG,IAAI,CAAC;IACvD,MAAM,QAAQ,GAAsB,EAAE,CAAC;IACvC,IAAI,qBAAqB,GAAa,EAAE,CAAC;IACzC,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACnC,IAAI,qBAAqB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvC,sBAAsB;YACtB,qBAAqB,GAAG,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAAG,qBAAqB,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC3E,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAE9D,IAAI,GAAG,GAAG,cAAc,EAAE,CAAC;gBACzB,wDAAwD;gBACxD,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC,CAAC;gBAC/D,SAAS,EAAE,CAAC;gBACZ,qBAAqB,GAAG,CAAC,MAAM,CAAC,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,2BAA2B;gBAC3B,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,uBAAuB;IACvB,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAEvC,OAAO;QACL,QAAQ;QACR,KAAK;QACL,aAAa,EAAE;YACb,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI;YAC3B,EAAE,EAAE,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI;SACjD;KACF,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,SAAiB,EAAE,OAAiB;IACzD,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAClC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IACjD,MAAM,eAAe,GACnB,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IAE1D,OAAO;QACL,SAAS;QACT,SAAS;QACT,OAAO;QACP,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,qBAAqB;QAC7E,OAAO;QACP,WAAW,EAAE,OAAO,CAAC,MAAM;KAC5B,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,QAA2B;IACjD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,aAAa,EAAE,CAAC;YAChB,YAAY,EAAE,CAAC;YACf,oBAAoB,EAAE,CAAC;YACvB,kBAAkB,EAAE,CAAC;YACrB,qBAAqB,EAAE,CAAC;YACxB,qBAAqB,EAAE,CAAC;YACxB,sBAAsB,EAAE,CAAC;SAC1B,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACzE,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAE/E,mBAAmB;IACnB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7C,MAAM,cAAc,GAClB,SAAS,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;QACxB,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;QAC3C,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAErB,OAAO;QACL,aAAa,EAAE,QAAQ,CAAC,MAAM;QAC9B,YAAY;QACZ,oBAAoB,EAClB,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE;QACxD,kBAAkB,EAChB,IAAI,CAAC,KAAK,CACR,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CACnE,GAAG,EAAE;QACR,qBAAqB,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE,CAAC,GAAG,EAAE;QAC3D,qBAAqB,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QACtD,sBAAsB,EAAE,SAAS,CAAC,CAAC,CAAC;KACrC,CAAC;AACJ,CAAC"}