@boshu2/vibe-check 1.8.1 → 2.2.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 (402) hide show
  1. package/.agents/plans/2025-12-27-vibe-check-evolution-plan.md +383 -0
  2. package/.agents/research/2025-12-27-vibe-check-evolution.md +352 -0
  3. package/.claude/settings.local.json +9 -3
  4. package/CHANGELOG.md +43 -0
  5. package/CLAUDE.md +201 -26
  6. package/Makefile +4 -4
  7. package/README.md +95 -0
  8. package/bin/vibe-check.js +1 -1
  9. package/claude-progress.json +18 -0
  10. package/dist/analysis/cross-session-analysis.d.ts +1 -1
  11. package/dist/analysis/cross-session-analysis.d.ts.map +1 -1
  12. package/dist/analysis/cross-session-analysis.js +9 -18
  13. package/dist/analysis/cross-session-analysis.js.map +1 -1
  14. package/dist/analysis/index.d.ts +1 -1
  15. package/dist/analysis/index.d.ts.map +1 -1
  16. package/dist/analysis/index.js +1 -11
  17. package/dist/analysis/index.js.map +1 -1
  18. package/dist/analyzers/audit.d.ts +28 -0
  19. package/dist/analyzers/audit.d.ts.map +1 -0
  20. package/dist/analyzers/audit.js +86 -0
  21. package/dist/analyzers/audit.js.map +1 -0
  22. package/dist/analyzers/eldritch.d.ts +40 -0
  23. package/dist/analyzers/eldritch.d.ts.map +1 -0
  24. package/dist/analyzers/eldritch.js +202 -0
  25. package/dist/analyzers/eldritch.js.map +1 -0
  26. package/dist/analyzers/modularity.d.ts +67 -0
  27. package/dist/analyzers/modularity.d.ts.map +1 -0
  28. package/dist/analyzers/modularity.js +254 -0
  29. package/dist/analyzers/modularity.js.map +1 -0
  30. package/dist/analyzers/patterns.d.ts +1 -1
  31. package/dist/analyzers/patterns.d.ts.map +1 -1
  32. package/dist/analyzers/patterns.js +4 -10
  33. package/dist/analyzers/patterns.js.map +1 -1
  34. package/dist/analyzers/quality.d.ts +1 -1
  35. package/dist/analyzers/quality.d.ts.map +1 -1
  36. package/dist/analyzers/quality.js +5 -12
  37. package/dist/analyzers/quality.js.map +1 -1
  38. package/dist/analyzers/sessions.d.ts +1 -1
  39. package/dist/analyzers/sessions.d.ts.map +1 -1
  40. package/dist/analyzers/sessions.js +1 -4
  41. package/dist/analyzers/sessions.js.map +1 -1
  42. package/dist/cli.js +21 -20
  43. package/dist/cli.js.map +1 -1
  44. package/dist/commands/analyze.d.ts.map +1 -1
  45. package/dist/commands/analyze.js +124 -149
  46. package/dist/commands/analyze.js.map +1 -1
  47. package/dist/commands/audit.d.ts +3 -0
  48. package/dist/commands/audit.d.ts.map +1 -0
  49. package/dist/commands/audit.js +102 -0
  50. package/dist/commands/audit.js.map +1 -0
  51. package/dist/commands/cache.js +31 -70
  52. package/dist/commands/cache.js.map +1 -1
  53. package/dist/commands/dashboard.d.ts.map +1 -1
  54. package/dist/commands/dashboard.js +22 -58
  55. package/dist/commands/dashboard.js.map +1 -1
  56. package/dist/commands/forensics.d.ts +10 -2
  57. package/dist/commands/forensics.d.ts.map +1 -1
  58. package/dist/commands/forensics.js +91 -51
  59. package/dist/commands/forensics.js.map +1 -1
  60. package/dist/commands/index.d.ts +15 -13
  61. package/dist/commands/index.d.ts.map +1 -1
  62. package/dist/commands/index.js +15 -33
  63. package/dist/commands/index.js.map +1 -1
  64. package/dist/commands/init-hook.js +26 -32
  65. package/dist/commands/init-hook.js.map +1 -1
  66. package/dist/commands/insights.js +39 -45
  67. package/dist/commands/insights.js.map +1 -1
  68. package/dist/commands/modularity.d.ts +27 -0
  69. package/dist/commands/modularity.d.ts.map +1 -0
  70. package/dist/commands/modularity.js +182 -0
  71. package/dist/commands/modularity.js.map +1 -0
  72. package/dist/commands/pipeline.js +39 -78
  73. package/dist/commands/pipeline.js.map +1 -1
  74. package/dist/commands/profile.js +68 -74
  75. package/dist/commands/profile.js.map +1 -1
  76. package/dist/commands/session.js +88 -129
  77. package/dist/commands/session.js.map +1 -1
  78. package/dist/commands/sessions.d.ts +1 -1
  79. package/dist/commands/sessions.d.ts.map +1 -1
  80. package/dist/commands/sessions.js +42 -49
  81. package/dist/commands/sessions.js.map +1 -1
  82. package/dist/commands/start.js +22 -67
  83. package/dist/commands/start.js.map +1 -1
  84. package/dist/commands/timeline.js +74 -81
  85. package/dist/commands/timeline.js.map +1 -1
  86. package/dist/commands/watch.js +54 -60
  87. package/dist/commands/watch.js.map +1 -1
  88. package/dist/gamification/achievements.d.ts +1 -1
  89. package/dist/gamification/achievements.d.ts.map +1 -1
  90. package/dist/gamification/achievements.js +7 -13
  91. package/dist/gamification/achievements.js.map +1 -1
  92. package/dist/gamification/index.d.ts +8 -8
  93. package/dist/gamification/index.d.ts.map +1 -1
  94. package/dist/gamification/index.js +8 -28
  95. package/dist/gamification/index.js.map +1 -1
  96. package/dist/gamification/profile.d.ts +2 -2
  97. package/dist/gamification/profile.d.ts.map +1 -1
  98. package/dist/gamification/profile.js +21 -64
  99. package/dist/gamification/profile.js.map +1 -1
  100. package/dist/gamification/stats.d.ts +1 -1
  101. package/dist/gamification/stats.d.ts.map +1 -1
  102. package/dist/gamification/stats.js +4 -10
  103. package/dist/gamification/stats.js.map +1 -1
  104. package/dist/gamification/streaks.d.ts +1 -1
  105. package/dist/gamification/streaks.d.ts.map +1 -1
  106. package/dist/gamification/streaks.js +8 -18
  107. package/dist/gamification/streaks.js.map +1 -1
  108. package/dist/gamification/types.js +3 -6
  109. package/dist/gamification/types.js.map +1 -1
  110. package/dist/gamification/xp.d.ts +1 -1
  111. package/dist/gamification/xp.d.ts.map +1 -1
  112. package/dist/gamification/xp.js +29 -38
  113. package/dist/gamification/xp.js.map +1 -1
  114. package/dist/git.d.ts +1 -1
  115. package/dist/git.d.ts.map +1 -1
  116. package/dist/git.js +23 -29
  117. package/dist/git.js.map +1 -1
  118. package/dist/inner-loop/context-amnesia.d.ts +2 -2
  119. package/dist/inner-loop/context-amnesia.d.ts.map +1 -1
  120. package/dist/inner-loop/context-amnesia.js +7 -10
  121. package/dist/inner-loop/context-amnesia.js.map +1 -1
  122. package/dist/inner-loop/index.d.ts +7 -7
  123. package/dist/inner-loop/index.d.ts.map +1 -1
  124. package/dist/inner-loop/index.js +18 -45
  125. package/dist/inner-loop/index.js.map +1 -1
  126. package/dist/inner-loop/instruction-drift.d.ts +2 -2
  127. package/dist/inner-loop/instruction-drift.d.ts.map +1 -1
  128. package/dist/inner-loop/instruction-drift.js +5 -10
  129. package/dist/inner-loop/instruction-drift.js.map +1 -1
  130. package/dist/inner-loop/logging-only.d.ts +2 -2
  131. package/dist/inner-loop/logging-only.d.ts.map +1 -1
  132. package/dist/inner-loop/logging-only.js +9 -17
  133. package/dist/inner-loop/logging-only.js.map +1 -1
  134. package/dist/inner-loop/tests-passing-lie.d.ts +2 -2
  135. package/dist/inner-loop/tests-passing-lie.d.ts.map +1 -1
  136. package/dist/inner-loop/tests-passing-lie.js +12 -17
  137. package/dist/inner-loop/tests-passing-lie.js.map +1 -1
  138. package/dist/inner-loop/types.js +1 -4
  139. package/dist/inner-loop/types.js.map +1 -1
  140. package/dist/insights/generators.d.ts +4 -4
  141. package/dist/insights/generators.d.ts.map +1 -1
  142. package/dist/insights/generators.js +9 -20
  143. package/dist/insights/generators.js.map +1 -1
  144. package/dist/insights/index.d.ts +4 -4
  145. package/dist/insights/index.d.ts.map +1 -1
  146. package/dist/insights/index.js +23 -27
  147. package/dist/insights/index.js.map +1 -1
  148. package/dist/insights/types.js +1 -2
  149. package/dist/insights/types.js.map +1 -1
  150. package/dist/metrics/code-stability.d.ts +1 -1
  151. package/dist/metrics/code-stability.d.ts.map +1 -1
  152. package/dist/metrics/code-stability.js +1 -4
  153. package/dist/metrics/code-stability.js.map +1 -1
  154. package/dist/metrics/cohesion.d.ts +27 -0
  155. package/dist/metrics/cohesion.d.ts.map +1 -0
  156. package/dist/metrics/cohesion.js +134 -0
  157. package/dist/metrics/cohesion.js.map +1 -0
  158. package/dist/metrics/file-churn.d.ts +1 -1
  159. package/dist/metrics/file-churn.d.ts.map +1 -1
  160. package/dist/metrics/file-churn.js +1 -4
  161. package/dist/metrics/file-churn.js.map +1 -1
  162. package/dist/metrics/flow.d.ts +1 -1
  163. package/dist/metrics/flow.d.ts.map +1 -1
  164. package/dist/metrics/flow.js +1 -4
  165. package/dist/metrics/flow.js.map +1 -1
  166. package/dist/metrics/index.d.ts +10 -2
  167. package/dist/metrics/index.d.ts.map +1 -1
  168. package/dist/metrics/index.js +51 -20
  169. package/dist/metrics/index.js.map +1 -1
  170. package/dist/metrics/investigation.d.ts +25 -0
  171. package/dist/metrics/investigation.d.ts.map +1 -0
  172. package/dist/metrics/investigation.js +115 -0
  173. package/dist/metrics/investigation.js.map +1 -0
  174. package/dist/metrics/rework.d.ts +1 -1
  175. package/dist/metrics/rework.d.ts.map +1 -1
  176. package/dist/metrics/rework.js +1 -4
  177. package/dist/metrics/rework.js.map +1 -1
  178. package/dist/metrics/spirals.d.ts +1 -1
  179. package/dist/metrics/spirals.d.ts.map +1 -1
  180. package/dist/metrics/spirals.js +5 -10
  181. package/dist/metrics/spirals.js.map +1 -1
  182. package/dist/metrics/time-spiral.d.ts +1 -1
  183. package/dist/metrics/time-spiral.d.ts.map +1 -1
  184. package/dist/metrics/time-spiral.js +1 -4
  185. package/dist/metrics/time-spiral.js.map +1 -1
  186. package/dist/metrics/tracers.d.ts +28 -0
  187. package/dist/metrics/tracers.d.ts.map +1 -0
  188. package/dist/metrics/tracers.js +117 -0
  189. package/dist/metrics/tracers.js.map +1 -0
  190. package/dist/metrics/trust.d.ts +1 -1
  191. package/dist/metrics/trust.d.ts.map +1 -1
  192. package/dist/metrics/trust.js +3 -6
  193. package/dist/metrics/trust.js.map +1 -1
  194. package/dist/metrics/velocity-anomaly.d.ts +1 -1
  195. package/dist/metrics/velocity-anomaly.d.ts.map +1 -1
  196. package/dist/metrics/velocity-anomaly.js +3 -6
  197. package/dist/metrics/velocity-anomaly.js.map +1 -1
  198. package/dist/metrics/velocity.d.ts +1 -1
  199. package/dist/metrics/velocity.d.ts.map +1 -1
  200. package/dist/metrics/velocity.js +6 -10
  201. package/dist/metrics/velocity.js.map +1 -1
  202. package/dist/output/index.d.ts +4 -4
  203. package/dist/output/index.d.ts.map +1 -1
  204. package/dist/output/index.js +10 -18
  205. package/dist/output/index.js.map +1 -1
  206. package/dist/output/json.d.ts +1 -1
  207. package/dist/output/json.d.ts.map +1 -1
  208. package/dist/output/json.js +1 -4
  209. package/dist/output/json.js.map +1 -1
  210. package/dist/output/markdown.d.ts +1 -1
  211. package/dist/output/markdown.d.ts.map +1 -1
  212. package/dist/output/markdown.js +5 -8
  213. package/dist/output/markdown.js.map +1 -1
  214. package/dist/output/terminal.d.ts +1 -1
  215. package/dist/output/terminal.d.ts.map +1 -1
  216. package/dist/output/terminal.js +88 -62
  217. package/dist/output/terminal.js.map +1 -1
  218. package/dist/output/timeline-html.d.ts +1 -1
  219. package/dist/output/timeline-html.d.ts.map +1 -1
  220. package/dist/output/timeline-html.js +5 -8
  221. package/dist/output/timeline-html.js.map +1 -1
  222. package/dist/output/timeline-markdown.d.ts +1 -1
  223. package/dist/output/timeline-markdown.d.ts.map +1 -1
  224. package/dist/output/timeline-markdown.js +5 -8
  225. package/dist/output/timeline-markdown.js.map +1 -1
  226. package/dist/output/timeline.d.ts +1 -1
  227. package/dist/output/timeline.d.ts.map +1 -1
  228. package/dist/output/timeline.js +46 -52
  229. package/dist/output/timeline.js.map +1 -1
  230. package/dist/patterns/detour.d.ts +1 -1
  231. package/dist/patterns/detour.d.ts.map +1 -1
  232. package/dist/patterns/detour.js +1 -4
  233. package/dist/patterns/detour.js.map +1 -1
  234. package/dist/patterns/flow-state.d.ts +1 -1
  235. package/dist/patterns/flow-state.d.ts.map +1 -1
  236. package/dist/patterns/flow-state.js +1 -4
  237. package/dist/patterns/flow-state.js.map +1 -1
  238. package/dist/patterns/index.d.ts +7 -7
  239. package/dist/patterns/index.d.ts.map +1 -1
  240. package/dist/patterns/index.js +7 -21
  241. package/dist/patterns/index.js.map +1 -1
  242. package/dist/patterns/intervention-effectiveness.d.ts +1 -1
  243. package/dist/patterns/intervention-effectiveness.d.ts.map +1 -1
  244. package/dist/patterns/intervention-effectiveness.js +3 -8
  245. package/dist/patterns/intervention-effectiveness.js.map +1 -1
  246. package/dist/patterns/late-night.d.ts +1 -1
  247. package/dist/patterns/late-night.d.ts.map +1 -1
  248. package/dist/patterns/late-night.js +1 -4
  249. package/dist/patterns/late-night.js.map +1 -1
  250. package/dist/patterns/post-delete-sprint.d.ts +1 -1
  251. package/dist/patterns/post-delete-sprint.d.ts.map +1 -1
  252. package/dist/patterns/post-delete-sprint.js +1 -4
  253. package/dist/patterns/post-delete-sprint.js.map +1 -1
  254. package/dist/patterns/spiral-regression.d.ts +1 -1
  255. package/dist/patterns/spiral-regression.d.ts.map +1 -1
  256. package/dist/patterns/spiral-regression.js +3 -8
  257. package/dist/patterns/spiral-regression.js.map +1 -1
  258. package/dist/patterns/thrashing.d.ts +1 -1
  259. package/dist/patterns/thrashing.d.ts.map +1 -1
  260. package/dist/patterns/thrashing.js +3 -6
  261. package/dist/patterns/thrashing.js.map +1 -1
  262. package/dist/score/index.d.ts +3 -3
  263. package/dist/score/index.d.ts.map +1 -1
  264. package/dist/score/index.js +4 -10
  265. package/dist/score/index.js.map +1 -1
  266. package/dist/score/weights.js +2 -6
  267. package/dist/score/weights.js.map +1 -1
  268. package/dist/sessions/index.js +9 -51
  269. package/dist/sessions/index.js.map +1 -1
  270. package/dist/storage/atomic.js +10 -51
  271. package/dist/storage/atomic.js.map +1 -1
  272. package/dist/storage/commit-log.d.ts +1 -1
  273. package/dist/storage/commit-log.d.ts.map +1 -1
  274. package/dist/storage/commit-log.js +11 -51
  275. package/dist/storage/commit-log.js.map +1 -1
  276. package/dist/storage/index.d.ts +5 -5
  277. package/dist/storage/index.d.ts.map +1 -1
  278. package/dist/storage/index.js +5 -37
  279. package/dist/storage/index.js.map +1 -1
  280. package/dist/storage/schema.js +4 -9
  281. package/dist/storage/schema.js.map +1 -1
  282. package/dist/storage/spiral-history.js +14 -57
  283. package/dist/storage/spiral-history.js.map +1 -1
  284. package/dist/storage/timeline-store.d.ts +2 -2
  285. package/dist/storage/timeline-store.d.ts.map +1 -1
  286. package/dist/storage/timeline-store.js +17 -61
  287. package/dist/storage/timeline-store.js.map +1 -1
  288. package/dist/types.d.ts +36 -1
  289. package/dist/types.d.ts.map +1 -1
  290. package/dist/types.js +1 -2
  291. package/docs/ENHANCEMENT-PLAN.md +379 -0
  292. package/feature-list.json +6 -0
  293. package/package.json +8 -7
  294. package/.claude/skills/typescript-review.md +0 -152
  295. package/dist/calibration/ece.d.ts +0 -26
  296. package/dist/calibration/ece.d.ts.map +0 -1
  297. package/dist/calibration/ece.js +0 -93
  298. package/dist/calibration/ece.js.map +0 -1
  299. package/dist/calibration/index.d.ts +0 -3
  300. package/dist/calibration/index.d.ts.map +0 -1
  301. package/dist/calibration/index.js +0 -15
  302. package/dist/calibration/index.js.map +0 -1
  303. package/dist/calibration/storage.d.ts +0 -34
  304. package/dist/calibration/storage.d.ts.map +0 -1
  305. package/dist/calibration/storage.js +0 -188
  306. package/dist/calibration/storage.js.map +0 -1
  307. package/dist/commands/intervene.d.ts +0 -15
  308. package/dist/commands/intervene.d.ts.map +0 -1
  309. package/dist/commands/intervene.js +0 -183
  310. package/dist/commands/intervene.js.map +0 -1
  311. package/dist/commands/learn.d.ts +0 -3
  312. package/dist/commands/learn.d.ts.map +0 -1
  313. package/dist/commands/learn.js +0 -161
  314. package/dist/commands/learn.js.map +0 -1
  315. package/dist/commands/lesson.d.ts +0 -8
  316. package/dist/commands/lesson.d.ts.map +0 -1
  317. package/dist/commands/lesson.js +0 -206
  318. package/dist/commands/lesson.js.map +0 -1
  319. package/dist/commands/level.d.ts +0 -3
  320. package/dist/commands/level.d.ts.map +0 -1
  321. package/dist/commands/level.js +0 -277
  322. package/dist/commands/level.js.map +0 -1
  323. package/dist/gamification/badges.d.ts +0 -29
  324. package/dist/gamification/badges.d.ts.map +0 -1
  325. package/dist/gamification/badges.js +0 -114
  326. package/dist/gamification/badges.js.map +0 -1
  327. package/dist/gamification/challenges.d.ts +0 -42
  328. package/dist/gamification/challenges.d.ts.map +0 -1
  329. package/dist/gamification/challenges.js +0 -184
  330. package/dist/gamification/challenges.js.map +0 -1
  331. package/dist/gamification/hall-of-fame.d.ts +0 -17
  332. package/dist/gamification/hall-of-fame.d.ts.map +0 -1
  333. package/dist/gamification/hall-of-fame.js +0 -64
  334. package/dist/gamification/hall-of-fame.js.map +0 -1
  335. package/dist/gamification/intervention-memory.d.ts +0 -61
  336. package/dist/gamification/intervention-memory.d.ts.map +0 -1
  337. package/dist/gamification/intervention-memory.js +0 -229
  338. package/dist/gamification/intervention-memory.js.map +0 -1
  339. package/dist/gamification/leaderboards.d.ts +0 -49
  340. package/dist/gamification/leaderboards.d.ts.map +0 -1
  341. package/dist/gamification/leaderboards.js +0 -179
  342. package/dist/gamification/leaderboards.js.map +0 -1
  343. package/dist/gamification/pattern-memory.d.ts +0 -45
  344. package/dist/gamification/pattern-memory.d.ts.map +0 -1
  345. package/dist/gamification/pattern-memory.js +0 -188
  346. package/dist/gamification/pattern-memory.js.map +0 -1
  347. package/dist/gamification/share.d.ts +0 -29
  348. package/dist/gamification/share.d.ts.map +0 -1
  349. package/dist/gamification/share.js +0 -57
  350. package/dist/gamification/share.js.map +0 -1
  351. package/dist/learning/cadence.d.ts +0 -15
  352. package/dist/learning/cadence.d.ts.map +0 -1
  353. package/dist/learning/cadence.js +0 -130
  354. package/dist/learning/cadence.js.map +0 -1
  355. package/dist/learning/index.d.ts +0 -19
  356. package/dist/learning/index.d.ts.map +0 -1
  357. package/dist/learning/index.js +0 -35
  358. package/dist/learning/index.js.map +0 -1
  359. package/dist/learning/lessons-storage.d.ts +0 -48
  360. package/dist/learning/lessons-storage.d.ts.map +0 -1
  361. package/dist/learning/lessons-storage.js +0 -266
  362. package/dist/learning/lessons-storage.js.map +0 -1
  363. package/dist/learning/lessons-types.d.ts +0 -83
  364. package/dist/learning/lessons-types.d.ts.map +0 -1
  365. package/dist/learning/lessons-types.js +0 -15
  366. package/dist/learning/lessons-types.js.map +0 -1
  367. package/dist/learning/nudges.d.ts +0 -20
  368. package/dist/learning/nudges.d.ts.map +0 -1
  369. package/dist/learning/nudges.js +0 -68
  370. package/dist/learning/nudges.js.map +0 -1
  371. package/dist/learning/retrospective.d.ts +0 -27
  372. package/dist/learning/retrospective.d.ts.map +0 -1
  373. package/dist/learning/retrospective.js +0 -184
  374. package/dist/learning/retrospective.js.map +0 -1
  375. package/dist/learning/storage.d.ts +0 -44
  376. package/dist/learning/storage.d.ts.map +0 -1
  377. package/dist/learning/storage.js +0 -194
  378. package/dist/learning/storage.js.map +0 -1
  379. package/dist/learning/surfacing.d.ts +0 -36
  380. package/dist/learning/surfacing.d.ts.map +0 -1
  381. package/dist/learning/surfacing.js +0 -255
  382. package/dist/learning/surfacing.js.map +0 -1
  383. package/dist/learning/synthesis.d.ts +0 -17
  384. package/dist/learning/synthesis.d.ts.map +0 -1
  385. package/dist/learning/synthesis.js +0 -293
  386. package/dist/learning/synthesis.js.map +0 -1
  387. package/dist/learning/types.d.ts +0 -60
  388. package/dist/learning/types.d.ts.map +0 -1
  389. package/dist/learning/types.js +0 -17
  390. package/dist/learning/types.js.map +0 -1
  391. package/dist/recommend/index.d.ts +0 -3
  392. package/dist/recommend/index.d.ts.map +0 -1
  393. package/dist/recommend/index.js +0 -14
  394. package/dist/recommend/index.js.map +0 -1
  395. package/dist/recommend/ordered-logistic.d.ts +0 -49
  396. package/dist/recommend/ordered-logistic.d.ts.map +0 -1
  397. package/dist/recommend/ordered-logistic.js +0 -153
  398. package/dist/recommend/ordered-logistic.js.map +0 -1
  399. package/dist/recommend/questions.d.ts +0 -19
  400. package/dist/recommend/questions.d.ts.map +0 -1
  401. package/dist/recommend/questions.js +0 -73
  402. package/dist/recommend/questions.js.map +0 -1
@@ -1,255 +0,0 @@
1
- "use strict";
2
- /**
3
- * Lesson Surfacing
4
- *
5
- * Finds and formats relevant lessons to display based on current context.
6
- * This is the "proactive" part - surfacing learnings at the right time.
7
- */
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.surfaceLessonsForPattern = surfaceLessonsForPattern;
13
- exports.surfaceLessonsForComponent = surfaceLessonsForComponent;
14
- exports.getTopLessons = getTopLessons;
15
- exports.formatSurfacedLesson = formatSurfacedLesson;
16
- exports.formatLessonDetail = formatLessonDetail;
17
- exports.formatLessonsSummary = formatLessonsSummary;
18
- const chalk_1 = __importDefault(require("chalk"));
19
- const lessons_storage_1 = require("./lessons-storage");
20
- const intervention_memory_1 = require("../gamification/intervention-memory");
21
- /**
22
- * Get lessons relevant to a detected pattern
23
- *
24
- * Called from analyze.ts when spirals are detected
25
- */
26
- function surfaceLessonsForPattern(pattern) {
27
- const db = (0, lessons_storage_1.loadLessons)();
28
- const lessons = (0, lessons_storage_1.getLessonsForPattern)(db, pattern);
29
- if (lessons.length === 0) {
30
- return [];
31
- }
32
- return lessons
33
- .map(lesson => ({
34
- lesson,
35
- relevanceScore: calculateRelevance(lesson, pattern),
36
- reason: `You've seen ${lesson.pattern} ${lesson.evidenceCount} times before`,
37
- suggestedIntervention: getBestIntervention(lesson),
38
- }))
39
- .sort((a, b) => b.relevanceScore - a.relevanceScore)
40
- .slice(0, 2); // Top 2 most relevant
41
- }
42
- /**
43
- * Get lessons relevant to a component being modified
44
- *
45
- * Called when we detect work in a historically problematic area
46
- */
47
- function surfaceLessonsForComponent(component) {
48
- const db = (0, lessons_storage_1.loadLessons)();
49
- const activeLessons = (0, lessons_storage_1.getActiveLessons)(db);
50
- // Find lessons that mention this component
51
- const relevant = activeLessons.filter(l => l.components.some(c => c.toLowerCase().includes(component.toLowerCase()) ||
52
- component.toLowerCase().includes(c.toLowerCase())));
53
- if (relevant.length === 0) {
54
- return [];
55
- }
56
- return relevant
57
- .map(lesson => ({
58
- lesson,
59
- relevanceScore: calculateRelevance(lesson, lesson.pattern),
60
- reason: `${component} has caused ${lesson.pattern} spirals before`,
61
- suggestedIntervention: getBestIntervention(lesson),
62
- }))
63
- .sort((a, b) => b.relevanceScore - a.relevanceScore)
64
- .slice(0, 2);
65
- }
66
- /**
67
- * Get top lessons to show in profile/status
68
- */
69
- function getTopLessons(limit = 3) {
70
- const db = (0, lessons_storage_1.loadLessons)();
71
- const activeLessons = (0, lessons_storage_1.getActiveLessons)(db);
72
- return activeLessons
73
- .sort((a, b) => {
74
- // Sort by: severity, confidence, evidence count
75
- const severityOrder = { critical: 4, high: 3, medium: 2, low: 1 };
76
- const severityDiff = severityOrder[b.severity] - severityOrder[a.severity];
77
- if (severityDiff !== 0)
78
- return severityDiff;
79
- if (a.confidence !== b.confidence)
80
- return b.confidence - a.confidence;
81
- return b.evidenceCount - a.evidenceCount;
82
- })
83
- .slice(0, limit);
84
- }
85
- /**
86
- * Format a surfaced lesson for CLI display
87
- */
88
- function formatSurfacedLesson(surfaced) {
89
- const { lesson, suggestedIntervention } = surfaced;
90
- const lines = [];
91
- // Color based on severity
92
- const severityColor = lesson.severity === 'critical' ? chalk_1.default.red :
93
- lesson.severity === 'high' ? chalk_1.default.yellow :
94
- chalk_1.default.cyan;
95
- const severityIcon = lesson.severity === 'critical' ? '🚨' :
96
- lesson.severity === 'high' ? '⚠️' :
97
- lesson.severity === 'medium' ? '💡' : '📝';
98
- lines.push(severityColor(` ${severityIcon} LESSON: ${lesson.title}`));
99
- lines.push(chalk_1.default.gray(` Pattern: ${lesson.pattern} (${lesson.evidenceCount}x, ${lesson.totalTimeWasted} min wasted)`));
100
- // Show best intervention if available
101
- if (suggestedIntervention) {
102
- const icon = (0, intervention_memory_1.getInterventionIcon)(suggestedIntervention);
103
- const name = (0, intervention_memory_1.getInterventionDisplayName)(suggestedIntervention);
104
- const intervention = lesson.interventions.find(i => i.type === suggestedIntervention);
105
- const effectiveness = intervention ? `${intervention.effectiveness}%` : '';
106
- lines.push(chalk_1.default.green(` What worked: ${icon} ${name} ${effectiveness}`));
107
- }
108
- // Show top prevention tip
109
- if (lesson.prevention.length > 0) {
110
- lines.push(chalk_1.default.gray(` Prevention: ${lesson.prevention[0]}`));
111
- }
112
- lines.push(chalk_1.default.gray(` Run: vibe-check lesson ${lesson.id}`));
113
- return lines;
114
- }
115
- /**
116
- * Format a lesson for detailed view
117
- */
118
- function formatLessonDetail(lesson) {
119
- const lines = [];
120
- const severityColor = lesson.severity === 'critical' ? chalk_1.default.red :
121
- lesson.severity === 'high' ? chalk_1.default.yellow :
122
- chalk_1.default.cyan;
123
- lines.push('');
124
- lines.push(severityColor('='.repeat(64)));
125
- lines.push(severityColor(` LESSON: ${lesson.title}`));
126
- lines.push(severityColor('='.repeat(64)));
127
- lines.push('');
128
- // Pattern info
129
- lines.push(chalk_1.default.bold.white(' PATTERN'));
130
- lines.push(` ${lesson.pattern}`);
131
- lines.push(` Occurrences: ${lesson.evidenceCount}`);
132
- lines.push(` Time wasted: ${lesson.totalTimeWasted} min`);
133
- lines.push(` Severity: ${lesson.severity}`);
134
- lines.push(` Confidence: ${lesson.confidence}%`);
135
- lines.push('');
136
- // Components
137
- if (lesson.components.length > 0) {
138
- lines.push(chalk_1.default.bold.white(' COMPONENTS AFFECTED'));
139
- for (const comp of lesson.components) {
140
- lines.push(` - ${comp}`);
141
- }
142
- lines.push('');
143
- }
144
- // Root cause
145
- if (lesson.rootCause) {
146
- lines.push(chalk_1.default.bold.white(' ROOT CAUSE'));
147
- lines.push(` ${lesson.rootCause}`);
148
- lines.push('');
149
- }
150
- // Prevention
151
- if (lesson.prevention.length > 0) {
152
- lines.push(chalk_1.default.bold.white(' PREVENTION'));
153
- for (const step of lesson.prevention) {
154
- lines.push(` - ${step}`);
155
- }
156
- lines.push('');
157
- }
158
- // What worked
159
- if (lesson.interventions.length > 0) {
160
- lines.push(chalk_1.default.bold.white(' WHAT WORKED'));
161
- for (const int of lesson.interventions) {
162
- const icon = (0, intervention_memory_1.getInterventionIcon)(int.type);
163
- const name = (0, intervention_memory_1.getInterventionDisplayName)(int.type);
164
- lines.push(` ${icon} ${name}: ${int.effectiveness}% effective (${int.successCount}/${int.totalCount})`);
165
- }
166
- lines.push('');
167
- }
168
- // Status
169
- lines.push(chalk_1.default.bold.white(' STATUS'));
170
- if (lesson.applied) {
171
- lines.push(chalk_1.default.green(` ✓ Applied on ${lesson.appliedDate}`));
172
- if (lesson.userEffectiveness !== undefined) {
173
- lines.push(` User effectiveness rating: ${lesson.userEffectiveness}%`);
174
- }
175
- }
176
- else if (lesson.dismissed) {
177
- lines.push(chalk_1.default.gray(' ✗ Dismissed'));
178
- }
179
- else {
180
- lines.push(chalk_1.default.yellow(' ○ Not yet applied'));
181
- }
182
- lines.push('');
183
- // Actions
184
- lines.push(chalk_1.default.bold.white(' ACTIONS'));
185
- lines.push(chalk_1.default.gray(` vibe-check lesson ${lesson.id} --apply 80 # Mark as applied with 80% effectiveness`));
186
- lines.push(chalk_1.default.gray(` vibe-check lesson ${lesson.id} --dismiss # Dismiss if not relevant`));
187
- lines.push('');
188
- lines.push(severityColor('='.repeat(64)));
189
- lines.push('');
190
- return lines;
191
- }
192
- /**
193
- * Format lessons summary for learn --status
194
- */
195
- function formatLessonsSummary() {
196
- const db = (0, lessons_storage_1.loadLessons)();
197
- const lines = [];
198
- if (db.lessons.length === 0) {
199
- lines.push(chalk_1.default.gray(' No lessons learned yet (run a retrospective to generate)'));
200
- return lines;
201
- }
202
- lines.push(chalk_1.default.bold.white(` LESSONS LEARNED (${db.stats.activeLessons} active)`));
203
- lines.push(` Total time wasted on patterns: ${db.stats.totalTimeWastedMinutes} min`);
204
- lines.push(` Average confidence: ${db.stats.averageConfidence}%`);
205
- lines.push('');
206
- // Top lessons
207
- const topLessons = getTopLessons(3);
208
- if (topLessons.length > 0) {
209
- lines.push(chalk_1.default.bold.white(' TOP LESSONS'));
210
- for (const lesson of topLessons) {
211
- const severityIcon = lesson.severity === 'critical' ? '🚨' :
212
- lesson.severity === 'high' ? '⚠️' :
213
- lesson.severity === 'medium' ? '💡' : '📝';
214
- lines.push(` ${severityIcon} ${lesson.title}`);
215
- lines.push(chalk_1.default.gray(` ${lesson.pattern}: ${lesson.evidenceCount}x, ${lesson.totalTimeWasted} min`));
216
- }
217
- }
218
- return lines;
219
- }
220
- /**
221
- * Calculate relevance score for a lesson
222
- */
223
- function calculateRelevance(lesson, pattern) {
224
- let score = 0;
225
- // Base score from confidence
226
- score += lesson.confidence * 0.4;
227
- // Bonus for exact pattern match
228
- if (lesson.pattern === pattern) {
229
- score += 30;
230
- }
231
- // Bonus for high evidence count
232
- score += Math.min(20, lesson.evidenceCount * 4);
233
- // Bonus for recent updates (within 7 days)
234
- const daysSinceUpdate = Math.floor((Date.now() - new Date(lesson.updatedAt).getTime()) / (1000 * 60 * 60 * 24));
235
- if (daysSinceUpdate < 7) {
236
- score += 10;
237
- }
238
- // Penalty if already applied (user knows about it)
239
- if (lesson.applied) {
240
- score -= 20;
241
- }
242
- return Math.max(0, Math.min(100, score));
243
- }
244
- /**
245
- * Get the best intervention for a lesson
246
- */
247
- function getBestIntervention(lesson) {
248
- if (lesson.interventions.length === 0) {
249
- return undefined;
250
- }
251
- // Return intervention with highest effectiveness
252
- const best = lesson.interventions.reduce((a, b) => a.effectiveness > b.effectiveness ? a : b);
253
- return best.effectiveness > 50 ? best.type : undefined;
254
- }
255
- //# sourceMappingURL=surfacing.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"surfacing.js","sourceRoot":"","sources":["../../src/learning/surfacing.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- /**
2
- * Lesson Synthesis Engine
3
- *
4
- * Automatically extracts lessons from pattern + intervention memory.
5
- * Runs during retrospectives to keep the lessons database current.
6
- */
7
- import { PatternMemory, InterventionMemory } from '../gamification/types';
8
- /**
9
- * Synthesize lessons from pattern and intervention memory
10
- *
11
- * Called from retrospective to update the lessons database
12
- */
13
- export declare function synthesizeLessons(patternMemory: PatternMemory | undefined, interventionMemory: InterventionMemory | undefined): {
14
- lessonsCreated: number;
15
- lessonsUpdated: number;
16
- };
17
- //# sourceMappingURL=synthesis.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"synthesis.d.ts","sourceRoot":"","sources":["../../src/learning/synthesis.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAoB,MAAM,uBAAuB,CAAC;AAI5F;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,kBAAkB,EAAE,kBAAkB,GAAG,SAAS,GACjD;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAuDpD"}
@@ -1,293 +0,0 @@
1
- "use strict";
2
- /**
3
- * Lesson Synthesis Engine
4
- *
5
- * Automatically extracts lessons from pattern + intervention memory.
6
- * Runs during retrospectives to keep the lessons database current.
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.synthesizeLessons = synthesizeLessons;
10
- const lessons_types_1 = require("./lessons-types");
11
- const lessons_storage_1 = require("./lessons-storage");
12
- const pattern_memory_1 = require("../gamification/pattern-memory");
13
- /**
14
- * Synthesize lessons from pattern and intervention memory
15
- *
16
- * Called from retrospective to update the lessons database
17
- */
18
- function synthesizeLessons(patternMemory, interventionMemory) {
19
- if (!patternMemory || patternMemory.records.length === 0) {
20
- return { lessonsCreated: 0, lessonsUpdated: 0 };
21
- }
22
- let db = (0, lessons_storage_1.loadLessons)();
23
- let lessonsCreated = 0;
24
- let lessonsUpdated = 0;
25
- // Process each pattern that meets threshold
26
- for (const [pattern, count] of Object.entries(patternMemory.patternCounts)) {
27
- if (count < lessons_types_1.SYNTHESIS_THRESHOLD)
28
- continue;
29
- const existingLesson = db.lessons.find(l => l.pattern === pattern && !l.dismissed);
30
- if (existingLesson) {
31
- // Update existing lesson
32
- const updated = updateLessonFromMemory(existingLesson, pattern, patternMemory, interventionMemory);
33
- db = (0, lessons_storage_1.upsertLesson)(db, updated);
34
- lessonsUpdated++;
35
- }
36
- else {
37
- // Create new lesson
38
- const newLesson = createLessonFromMemory(pattern, patternMemory, interventionMemory);
39
- db = (0, lessons_storage_1.upsertLesson)(db, newLesson);
40
- lessonsCreated++;
41
- }
42
- }
43
- // Log synthesis
44
- const logEntry = {
45
- timestamp: new Date().toISOString(),
46
- lessonsCreated,
47
- lessonsUpdated,
48
- patternsProcessed: Object.keys(patternMemory.patternCounts).length,
49
- };
50
- db.synthesisLog.push(logEntry);
51
- // Keep only last 10 log entries
52
- if (db.synthesisLog.length > 10) {
53
- db.synthesisLog = db.synthesisLog.slice(-10);
54
- }
55
- db.lastSynthesis = new Date().toISOString();
56
- (0, lessons_storage_1.saveLessons)(db);
57
- return { lessonsCreated, lessonsUpdated };
58
- }
59
- /**
60
- * Create a new lesson from pattern memory data
61
- */
62
- function createLessonFromMemory(pattern, patternMemory, interventionMemory) {
63
- const now = new Date().toISOString();
64
- const displayName = (0, pattern_memory_1.getPatternDisplayName)(pattern);
65
- const advice = (0, pattern_memory_1.getPatternAdvice)(pattern);
66
- // Get components associated with this pattern
67
- const components = getComponentsForPattern(pattern, patternMemory);
68
- // Get interventions that worked for this pattern
69
- const interventions = getInterventionsForPattern(pattern, interventionMemory);
70
- // Calculate time wasted
71
- const totalTimeWasted = patternMemory.patternDurations[pattern] || 0;
72
- const evidenceCount = patternMemory.patternCounts[pattern] || 0;
73
- // Calculate initial confidence
74
- const confidence = calculateConfidence(evidenceCount, interventions, false);
75
- // Determine severity based on time wasted
76
- const severity = totalTimeWasted > 120 ? 'critical' :
77
- totalTimeWasted > 60 ? 'high' :
78
- totalTimeWasted > 30 ? 'medium' : 'low';
79
- return {
80
- id: generateLessonId(pattern),
81
- version: 1,
82
- createdAt: now,
83
- updatedAt: now,
84
- pattern,
85
- components,
86
- title: `${displayName} causes recurring spirals`,
87
- description: `You've encountered ${displayName} issues ${evidenceCount} times, ` +
88
- `wasting ${totalTimeWasted} minutes total. ${advice}`,
89
- rootCause: getRootCauseForPattern(pattern),
90
- prevention: getPreventionForPattern(pattern),
91
- interventions,
92
- confidence,
93
- evidenceCount,
94
- totalTimeWasted,
95
- dismissed: false,
96
- applied: false,
97
- severity,
98
- tags: getTagsForPattern(pattern),
99
- };
100
- }
101
- /**
102
- * Update an existing lesson with new data
103
- */
104
- function updateLessonFromMemory(lesson, pattern, patternMemory, interventionMemory) {
105
- const newComponents = getComponentsForPattern(pattern, patternMemory);
106
- const newInterventions = getInterventionsForPattern(pattern, interventionMemory);
107
- const newEvidenceCount = patternMemory.patternCounts[pattern] || 0;
108
- const newTimeWasted = patternMemory.patternDurations[pattern] || 0;
109
- // Merge components
110
- const components = [...new Set([...lesson.components, ...newComponents])];
111
- // Merge interventions (update effectiveness)
112
- const interventions = mergeInterventions(lesson.interventions, newInterventions);
113
- // Recalculate confidence
114
- const confidence = calculateConfidence(newEvidenceCount, interventions, lesson.applied);
115
- // Update severity if time wasted increased significantly
116
- const severity = newTimeWasted > 120 ? 'critical' :
117
- newTimeWasted > 60 ? 'high' :
118
- newTimeWasted > 30 ? 'medium' : 'low';
119
- return {
120
- ...lesson,
121
- components,
122
- interventions,
123
- confidence,
124
- evidenceCount: newEvidenceCount,
125
- totalTimeWasted: newTimeWasted,
126
- severity,
127
- description: `You've encountered ${(0, pattern_memory_1.getPatternDisplayName)(pattern)} issues ${newEvidenceCount} times, ` +
128
- `wasting ${newTimeWasted} minutes total. ${(0, pattern_memory_1.getPatternAdvice)(pattern)}`,
129
- };
130
- }
131
- /**
132
- * Get components where a pattern occurs
133
- */
134
- function getComponentsForPattern(pattern, patternMemory) {
135
- const components = new Set();
136
- for (const record of patternMemory.records) {
137
- if (record.pattern === pattern && record.component) {
138
- components.add(record.component);
139
- }
140
- }
141
- return Array.from(components).slice(0, 5); // Top 5 components
142
- }
143
- /**
144
- * Get interventions that worked for a pattern
145
- */
146
- function getInterventionsForPattern(pattern, interventionMemory) {
147
- if (!interventionMemory || interventionMemory.records.length === 0) {
148
- return [];
149
- }
150
- // Count interventions for this pattern
151
- const counts = {};
152
- for (const record of interventionMemory.records) {
153
- if (record.spiralPattern === pattern) {
154
- if (!counts[record.type]) {
155
- counts[record.type] = { success: 0, total: 0 };
156
- }
157
- counts[record.type].total++;
158
- // Assume any recorded intervention was successful (broke the spiral)
159
- counts[record.type].success++;
160
- }
161
- }
162
- return Object.entries(counts)
163
- .map(([type, data]) => ({
164
- type: type,
165
- successCount: data.success,
166
- totalCount: data.total,
167
- effectiveness: Math.round((data.success / data.total) * 100),
168
- }))
169
- .sort((a, b) => b.effectiveness - a.effectiveness);
170
- }
171
- /**
172
- * Merge intervention data from existing and new
173
- */
174
- function mergeInterventions(existing, incoming) {
175
- const merged = new Map();
176
- // Start with existing
177
- for (const int of existing) {
178
- merged.set(int.type, { ...int });
179
- }
180
- // Add/update with incoming
181
- for (const int of incoming) {
182
- const current = merged.get(int.type);
183
- if (current) {
184
- current.successCount += int.successCount;
185
- current.totalCount += int.totalCount;
186
- current.effectiveness = Math.round((current.successCount / current.totalCount) * 100);
187
- }
188
- else {
189
- merged.set(int.type, { ...int });
190
- }
191
- }
192
- return Array.from(merged.values())
193
- .sort((a, b) => b.effectiveness - a.effectiveness);
194
- }
195
- /**
196
- * Calculate confidence score for a lesson
197
- */
198
- function calculateConfidence(evidenceCount, interventions, applied) {
199
- let confidence = lessons_types_1.CONFIDENCE_BASE;
200
- // +5 per evidence (up to +25)
201
- confidence += Math.min(25, evidenceCount * 5);
202
- // +15 if an intervention has >70% effectiveness
203
- if (interventions.some(i => i.effectiveness > 70)) {
204
- confidence += 15;
205
- }
206
- // +10 if user has applied and confirmed
207
- if (applied) {
208
- confidence += 10;
209
- }
210
- return Math.min(100, Math.max(0, confidence));
211
- }
212
- /**
213
- * Generate a unique lesson ID
214
- */
215
- function generateLessonId(pattern) {
216
- const timestamp = Date.now().toString(36);
217
- const patternSlug = pattern.toLowerCase().replace(/_/g, '-');
218
- return `lesson-${patternSlug}-${timestamp}`;
219
- }
220
- /**
221
- * Get root cause explanation for a pattern
222
- */
223
- function getRootCauseForPattern(pattern) {
224
- const causes = {
225
- SECRETS_AUTH: 'Authentication configs often fail silently or have environment-specific behavior',
226
- VOLUME_CONFIG: 'Volume mounts have complex permission and path requirements that vary by platform',
227
- API_MISMATCH: 'API contracts change without notice or documentation lags behind implementation',
228
- SSL_TLS: 'Certificate chains are complex and expiration/rotation is easy to miss',
229
- IMAGE_REGISTRY: 'Container registries have authentication and tagging edge cases',
230
- GITOPS_DRIFT: 'Manual changes bypass GitOps and cause state divergence',
231
- OTHER: 'Complex interactions between components cause unexpected behavior',
232
- };
233
- return causes[pattern] || causes.OTHER;
234
- }
235
- /**
236
- * Get prevention strategies for a pattern
237
- */
238
- function getPreventionForPattern(pattern) {
239
- const prevention = {
240
- SECRETS_AUTH: [
241
- 'Add secret validation to CI pipeline',
242
- 'Use secret scanning tools',
243
- 'Test auth flows in staging before prod',
244
- ],
245
- VOLUME_CONFIG: [
246
- 'Add volume mount tests to CI',
247
- 'Validate paths exist before mount',
248
- 'Document platform-specific requirements',
249
- ],
250
- API_MISMATCH: [
251
- 'Use schema validation (OpenAPI, JSON Schema)',
252
- 'Version APIs explicitly',
253
- 'Add contract tests between services',
254
- ],
255
- SSL_TLS: [
256
- 'Automate certificate renewal',
257
- 'Test certificate chains in staging',
258
- 'Set up expiration monitoring',
259
- ],
260
- IMAGE_REGISTRY: [
261
- 'Use digest-based pulls instead of tags',
262
- 'Verify images exist before deploy',
263
- 'Cache images locally for reliability',
264
- ],
265
- GITOPS_DRIFT: [
266
- 'Enable drift detection in CI',
267
- 'Block manual kubectl/oc commands',
268
- 'Set reconciliation timeouts',
269
- ],
270
- OTHER: [
271
- 'Add integration tests for the component',
272
- 'Document failure modes',
273
- 'Create runbook for common issues',
274
- ],
275
- };
276
- return prevention[pattern] || prevention.OTHER;
277
- }
278
- /**
279
- * Get tags for a pattern
280
- */
281
- function getTagsForPattern(pattern) {
282
- const tags = {
283
- SECRETS_AUTH: ['security', 'auth', 'secrets'],
284
- VOLUME_CONFIG: ['infrastructure', 'storage', 'kubernetes'],
285
- API_MISMATCH: ['api', 'integration', 'contracts'],
286
- SSL_TLS: ['security', 'certificates', 'networking'],
287
- IMAGE_REGISTRY: ['containers', 'docker', 'registry'],
288
- GITOPS_DRIFT: ['gitops', 'kubernetes', 'drift'],
289
- OTHER: ['general'],
290
- };
291
- return tags[pattern] || tags.OTHER;
292
- }
293
- //# sourceMappingURL=synthesis.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"synthesis.js","sourceRoot":"","sources":["../../src/learning/synthesis.ts"],"names":[],"mappings":"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"}
@@ -1,60 +0,0 @@
1
- /**
2
- * Learning System Types
3
- *
4
- * Types for the automatic learning cadence system including:
5
- * - Learning state persistence
6
- * - Nudge queue management
7
- * - Retrospective summaries
8
- */
9
- export type NudgeType = 'pattern' | 'intervention' | 'retro' | 'achievement' | 'learning';
10
- export interface Nudge {
11
- id: string;
12
- type: NudgeType;
13
- icon: string;
14
- title: string;
15
- message: string;
16
- action?: string;
17
- priority: number;
18
- createdAt: string;
19
- expiresAt?: string;
20
- dismissed?: boolean;
21
- }
22
- export interface RetroSummary {
23
- date: string;
24
- periodStart: string;
25
- periodEnd: string;
26
- sessionsCount: number;
27
- commitsCount: number;
28
- activeMinutes: number;
29
- topPattern?: string;
30
- topIntervention?: string;
31
- keyInsight: string;
32
- trustPassRateChange?: number;
33
- spiralRateChange?: number;
34
- actionTaken?: string;
35
- }
36
- export interface LearningState {
37
- version: string;
38
- lastDailyCheck: string;
39
- lastWeeklyRetro: string;
40
- lastMonthlyReview: string;
41
- pendingNudges: Nudge[];
42
- retroDue: boolean;
43
- retroDueReason: string;
44
- lastRetroSummary?: RetroSummary;
45
- totalRetrosCompleted: number;
46
- nudgesDisplayed: number;
47
- nudgesDismissed: number;
48
- }
49
- export interface CadenceResult {
50
- nudges: Nudge[];
51
- retroDue: boolean;
52
- retroDueReason?: string;
53
- learningState: LearningState;
54
- }
55
- export declare const NUDGE_TTL_DAYS = 7;
56
- export declare const MAX_PENDING_NUDGES = 5;
57
- export declare const RETRO_CADENCE_DAYS = 7;
58
- export declare const PATTERN_REPEAT_THRESHOLD = 3;
59
- export declare const PATTERN_WINDOW_DAYS = 7;
60
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/learning/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,cAAc,GAAG,OAAO,GAAG,aAAa,GAAG,UAAU,CAAC;AAE1F,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAGhB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAG1B,aAAa,EAAE,KAAK,EAAE,CAAC;IAGvB,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,YAAY,CAAC;IAGhC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,aAAa,CAAC;CAC9B;AAED,eAAO,MAAM,cAAc,IAAI,CAAC;AAChC,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAC1C,eAAO,MAAM,mBAAmB,IAAI,CAAC"}