@boshu2/vibe-check 1.6.2 → 1.7.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 (107) hide show
  1. package/.agents/bundles/automatic-learning-cadence-plan-2025-12-02.md +1297 -0
  2. package/.agents/bundles/automatic-learning-cadence-research-2025-12-02.md +481 -0
  3. package/.agents/bundles/dashboard-data-quality-plan.md +458 -0
  4. package/.agents/bundles/rating-scoring-alignment-plan.md +427 -0
  5. package/.agents/bundles/rpi-session-capture-plan-2025-12-02.md +693 -0
  6. package/.agents/bundles/rpi-session-capture-research-2025-12-02.md +433 -0
  7. package/.agents/bundles/session-integration-plan-2025-12-02.md +144 -0
  8. package/CHANGELOG.md +17 -0
  9. package/CLAUDE.md +74 -2
  10. package/Makefile +173 -0
  11. package/README.md +33 -0
  12. package/claude-progress.json +34 -5
  13. package/claude-progress.txt +66 -0
  14. package/dashboard/app.js +699 -66
  15. package/dashboard/chart.min.js +20 -0
  16. package/dashboard/dashboard-data.js +764 -0
  17. package/dashboard/dashboard-data.json +182 -71
  18. package/dashboard/index.html +139 -14
  19. package/dashboard/styles.css +579 -4
  20. package/dist/cli.js +1 -1
  21. package/dist/cli.js.map +1 -1
  22. package/dist/commands/analyze.d.ts.map +1 -1
  23. package/dist/commands/analyze.js +38 -2
  24. package/dist/commands/analyze.js.map +1 -1
  25. package/dist/commands/dashboard.js +4 -1
  26. package/dist/commands/dashboard.js.map +1 -1
  27. package/dist/commands/index.d.ts +1 -1
  28. package/dist/commands/index.d.ts.map +1 -1
  29. package/dist/commands/index.js +3 -3
  30. package/dist/commands/index.js.map +1 -1
  31. package/dist/commands/learn.d.ts +3 -0
  32. package/dist/commands/learn.d.ts.map +1 -0
  33. package/dist/commands/learn.js +161 -0
  34. package/dist/commands/learn.js.map +1 -0
  35. package/dist/commands/lesson.d.ts +8 -0
  36. package/dist/commands/lesson.d.ts.map +1 -0
  37. package/dist/commands/lesson.js +206 -0
  38. package/dist/commands/lesson.js.map +1 -0
  39. package/dist/commands/profile.d.ts.map +1 -1
  40. package/dist/commands/profile.js +3 -202
  41. package/dist/commands/profile.js.map +1 -1
  42. package/dist/commands/session.d.ts +51 -0
  43. package/dist/commands/session.d.ts.map +1 -0
  44. package/dist/commands/session.js +561 -0
  45. package/dist/commands/session.js.map +1 -0
  46. package/dist/gamification/index.d.ts +1 -3
  47. package/dist/gamification/index.d.ts.map +1 -1
  48. package/dist/gamification/index.js +2 -5
  49. package/dist/gamification/index.js.map +1 -1
  50. package/dist/gamification/pattern-memory.d.ts +1 -1
  51. package/dist/gamification/pattern-memory.d.ts.map +1 -1
  52. package/dist/gamification/pattern-memory.js.map +1 -1
  53. package/dist/gamification/profile.d.ts +2 -2
  54. package/dist/gamification/profile.d.ts.map +1 -1
  55. package/dist/gamification/profile.js +2 -15
  56. package/dist/gamification/profile.js.map +1 -1
  57. package/dist/gamification/types.d.ts +8 -2
  58. package/dist/gamification/types.d.ts.map +1 -1
  59. package/dist/gamification/types.js.map +1 -1
  60. package/dist/insights/index.d.ts.map +1 -1
  61. package/dist/insights/index.js +16 -4
  62. package/dist/insights/index.js.map +1 -1
  63. package/dist/insights/types.d.ts +14 -0
  64. package/dist/insights/types.d.ts.map +1 -1
  65. package/dist/learning/cadence.d.ts +15 -0
  66. package/dist/learning/cadence.d.ts.map +1 -0
  67. package/dist/learning/cadence.js +130 -0
  68. package/dist/learning/cadence.js.map +1 -0
  69. package/dist/learning/index.d.ts +19 -0
  70. package/dist/learning/index.d.ts.map +1 -0
  71. package/dist/learning/index.js +35 -0
  72. package/dist/learning/index.js.map +1 -0
  73. package/dist/learning/lessons-storage.d.ts +48 -0
  74. package/dist/learning/lessons-storage.d.ts.map +1 -0
  75. package/dist/learning/lessons-storage.js +266 -0
  76. package/dist/learning/lessons-storage.js.map +1 -0
  77. package/dist/learning/lessons-types.d.ts +83 -0
  78. package/dist/learning/lessons-types.d.ts.map +1 -0
  79. package/dist/learning/lessons-types.js +15 -0
  80. package/dist/learning/lessons-types.js.map +1 -0
  81. package/dist/learning/nudges.d.ts +20 -0
  82. package/dist/learning/nudges.d.ts.map +1 -0
  83. package/dist/learning/nudges.js +68 -0
  84. package/dist/learning/nudges.js.map +1 -0
  85. package/dist/learning/retrospective.d.ts +27 -0
  86. package/dist/learning/retrospective.d.ts.map +1 -0
  87. package/dist/learning/retrospective.js +184 -0
  88. package/dist/learning/retrospective.js.map +1 -0
  89. package/dist/learning/storage.d.ts +44 -0
  90. package/dist/learning/storage.d.ts.map +1 -0
  91. package/dist/learning/storage.js +194 -0
  92. package/dist/learning/storage.js.map +1 -0
  93. package/dist/learning/surfacing.d.ts +36 -0
  94. package/dist/learning/surfacing.d.ts.map +1 -0
  95. package/dist/learning/surfacing.js +255 -0
  96. package/dist/learning/surfacing.js.map +1 -0
  97. package/dist/learning/synthesis.d.ts +17 -0
  98. package/dist/learning/synthesis.d.ts.map +1 -0
  99. package/dist/learning/synthesis.js +293 -0
  100. package/dist/learning/synthesis.js.map +1 -0
  101. package/dist/learning/types.d.ts +60 -0
  102. package/dist/learning/types.d.ts.map +1 -0
  103. package/dist/learning/types.js +17 -0
  104. package/dist/learning/types.js.map +1 -0
  105. package/docs/METRICS.md +528 -0
  106. package/feature-list.json +21 -0
  107. package/package.json +1 -1
@@ -0,0 +1,266 @@
1
+ "use strict";
2
+ /**
3
+ * Lessons Database Storage
4
+ *
5
+ * Persists lessons to ~/.vibe-check/lessons.json (global, not per-repo).
6
+ * Lessons are meant to accumulate across all repositories.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.getLessonsPath = getLessonsPath;
43
+ exports.createInitialLessonsDatabase = createInitialLessonsDatabase;
44
+ exports.loadLessons = loadLessons;
45
+ exports.saveLessons = saveLessons;
46
+ exports.upsertLesson = upsertLesson;
47
+ exports.getLessonById = getLessonById;
48
+ exports.getLessonsForPattern = getLessonsForPattern;
49
+ exports.getActiveLessons = getActiveLessons;
50
+ exports.dismissLesson = dismissLesson;
51
+ exports.applyLesson = applyLesson;
52
+ const fs = __importStar(require("fs"));
53
+ const path = __importStar(require("path"));
54
+ const os = __importStar(require("os"));
55
+ const lessons_types_1 = require("./lessons-types");
56
+ const LESSONS_DIR = '.vibe-check';
57
+ const LESSONS_FILE = 'lessons.json';
58
+ /**
59
+ * Get lessons database file path (global)
60
+ */
61
+ function getLessonsPath() {
62
+ return path.join(os.homedir(), LESSONS_DIR, LESSONS_FILE);
63
+ }
64
+ /**
65
+ * Create initial empty lessons database
66
+ */
67
+ function createInitialLessonsDatabase() {
68
+ const now = new Date().toISOString();
69
+ return {
70
+ version: lessons_types_1.LESSONS_DB_VERSION,
71
+ lastUpdated: now,
72
+ lastSynthesis: '',
73
+ lessons: [],
74
+ lessonsByPattern: {},
75
+ stats: {
76
+ totalLessons: 0,
77
+ activeLessons: 0,
78
+ patternsWithLessons: 0,
79
+ averageConfidence: 0,
80
+ totalTimeWastedMinutes: 0,
81
+ },
82
+ synthesisLog: [],
83
+ };
84
+ }
85
+ /**
86
+ * Load lessons database from disk
87
+ */
88
+ function loadLessons() {
89
+ const filePath = getLessonsPath();
90
+ if (fs.existsSync(filePath)) {
91
+ try {
92
+ const data = fs.readFileSync(filePath, 'utf-8');
93
+ const db = JSON.parse(data);
94
+ return migrateLessonsDatabase(db);
95
+ }
96
+ catch {
97
+ return createInitialLessonsDatabase();
98
+ }
99
+ }
100
+ return createInitialLessonsDatabase();
101
+ }
102
+ /**
103
+ * Save lessons database to disk
104
+ */
105
+ function saveLessons(db) {
106
+ const dirPath = path.join(os.homedir(), LESSONS_DIR);
107
+ const filePath = getLessonsPath();
108
+ if (!fs.existsSync(dirPath)) {
109
+ fs.mkdirSync(dirPath, { recursive: true });
110
+ }
111
+ // Update metadata
112
+ db.lastUpdated = new Date().toISOString();
113
+ db.stats = computeStats(db);
114
+ // Trim if too many lessons
115
+ if (db.lessons.length > lessons_types_1.MAX_LESSONS) {
116
+ db.lessons = trimLessons(db.lessons);
117
+ }
118
+ // Rebuild index
119
+ db.lessonsByPattern = buildPatternIndex(db.lessons);
120
+ fs.writeFileSync(filePath, JSON.stringify(db, null, 2));
121
+ }
122
+ /**
123
+ * Add or update a lesson in the database
124
+ */
125
+ function upsertLesson(db, lesson) {
126
+ const existingIndex = db.lessons.findIndex(l => l.id === lesson.id);
127
+ if (existingIndex >= 0) {
128
+ // Update existing
129
+ db.lessons[existingIndex] = {
130
+ ...lesson,
131
+ version: db.lessons[existingIndex].version + 1,
132
+ updatedAt: new Date().toISOString(),
133
+ };
134
+ }
135
+ else {
136
+ // Add new
137
+ db.lessons.push(lesson);
138
+ }
139
+ // Rebuild index
140
+ db.lessonsByPattern = buildPatternIndex(db.lessons);
141
+ return db;
142
+ }
143
+ /**
144
+ * Get lesson by ID
145
+ */
146
+ function getLessonById(db, id) {
147
+ return db.lessons.find(l => l.id === id);
148
+ }
149
+ /**
150
+ * Get lessons for a pattern
151
+ */
152
+ function getLessonsForPattern(db, pattern) {
153
+ const ids = db.lessonsByPattern[pattern] || [];
154
+ return ids
155
+ .map(id => db.lessons.find(l => l.id === id))
156
+ .filter((l) => l !== undefined && !l.dismissed);
157
+ }
158
+ /**
159
+ * Get all active (non-dismissed) lessons
160
+ */
161
+ function getActiveLessons(db) {
162
+ return db.lessons.filter(l => !l.dismissed);
163
+ }
164
+ /**
165
+ * Dismiss a lesson
166
+ */
167
+ function dismissLesson(db, lessonId) {
168
+ const lesson = db.lessons.find(l => l.id === lessonId);
169
+ if (lesson) {
170
+ lesson.dismissed = true;
171
+ lesson.updatedAt = new Date().toISOString();
172
+ }
173
+ return db;
174
+ }
175
+ /**
176
+ * Mark a lesson as applied with effectiveness score
177
+ */
178
+ function applyLesson(db, lessonId, effectiveness) {
179
+ const lesson = db.lessons.find(l => l.id === lessonId);
180
+ if (lesson) {
181
+ lesson.applied = true;
182
+ lesson.appliedDate = new Date().toISOString();
183
+ lesson.userEffectiveness = effectiveness;
184
+ lesson.updatedAt = new Date().toISOString();
185
+ // Adjust confidence based on effectiveness
186
+ if (effectiveness >= 70) {
187
+ lesson.confidence = Math.min(100, lesson.confidence + 5);
188
+ }
189
+ else if (effectiveness < 40) {
190
+ lesson.confidence = Math.max(0, lesson.confidence - 10);
191
+ }
192
+ }
193
+ return db;
194
+ }
195
+ /**
196
+ * Build pattern → lesson IDs index
197
+ */
198
+ function buildPatternIndex(lessons) {
199
+ const index = {};
200
+ for (const lesson of lessons) {
201
+ if (!index[lesson.pattern]) {
202
+ index[lesson.pattern] = [];
203
+ }
204
+ index[lesson.pattern].push(lesson.id);
205
+ }
206
+ return index;
207
+ }
208
+ /**
209
+ * Compute database statistics
210
+ */
211
+ function computeStats(db) {
212
+ const activeLessons = db.lessons.filter(l => !l.dismissed);
213
+ const patterns = new Set(activeLessons.map(l => l.pattern));
214
+ const totalConfidence = activeLessons.reduce((sum, l) => sum + l.confidence, 0);
215
+ const totalTimeWasted = db.lessons.reduce((sum, l) => sum + l.totalTimeWasted, 0);
216
+ return {
217
+ totalLessons: db.lessons.length,
218
+ activeLessons: activeLessons.length,
219
+ patternsWithLessons: patterns.size,
220
+ averageConfidence: activeLessons.length > 0
221
+ ? Math.round(totalConfidence / activeLessons.length)
222
+ : 0,
223
+ totalTimeWastedMinutes: totalTimeWasted,
224
+ };
225
+ }
226
+ /**
227
+ * Trim lessons to MAX_LESSONS, keeping most valuable
228
+ */
229
+ function trimLessons(lessons) {
230
+ // Sort by: not dismissed, confidence, evidence count, recency
231
+ return lessons
232
+ .sort((a, b) => {
233
+ // Keep non-dismissed first
234
+ if (a.dismissed !== b.dismissed)
235
+ return a.dismissed ? 1 : -1;
236
+ // Higher confidence first
237
+ if (a.confidence !== b.confidence)
238
+ return b.confidence - a.confidence;
239
+ // More evidence first
240
+ if (a.evidenceCount !== b.evidenceCount)
241
+ return b.evidenceCount - a.evidenceCount;
242
+ // More recent first
243
+ return new Date(b.updatedAt).getTime() - new Date(a.updatedAt).getTime();
244
+ })
245
+ .slice(0, lessons_types_1.MAX_LESSONS);
246
+ }
247
+ /**
248
+ * Migrate old database versions
249
+ */
250
+ function migrateLessonsDatabase(db) {
251
+ if (!db.version) {
252
+ db.version = lessons_types_1.LESSONS_DB_VERSION;
253
+ }
254
+ // Ensure all fields exist
255
+ if (!db.synthesisLog) {
256
+ db.synthesisLog = [];
257
+ }
258
+ if (!db.lessonsByPattern) {
259
+ db.lessonsByPattern = buildPatternIndex(db.lessons || []);
260
+ }
261
+ if (!db.stats) {
262
+ db.stats = computeStats(db);
263
+ }
264
+ return db;
265
+ }
266
+ //# sourceMappingURL=lessons-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lessons-storage.js","sourceRoot":"","sources":["../../src/learning/lessons-storage.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBH,wCAEC;AAKD,oEAiBC;AAKD,kCAcC;AAKD,kCAqBC;AAKD,oCAmBC;AAKD,sCAEC;AAKD,oDAKC;AAKD,4CAEC;AAKD,sCAOC;AAKD,kCAoBC;AA1KD,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AACzB,mDAKyB;AAEzB,MAAM,WAAW,GAAG,aAAa,CAAC;AAClC,MAAM,YAAY,GAAG,cAAc,CAAC;AAEpC;;GAEG;AACH,SAAgB,cAAc;IAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AAC5D,CAAC;AAED;;GAEG;AACH,SAAgB,4BAA4B;IAC1C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,OAAO;QACL,OAAO,EAAE,kCAAkB;QAC3B,WAAW,EAAE,GAAG;QAChB,aAAa,EAAE,EAAE;QACjB,OAAO,EAAE,EAAE;QACX,gBAAgB,EAAE,EAAE;QACpB,KAAK,EAAE;YACL,YAAY,EAAE,CAAC;YACf,aAAa,EAAE,CAAC;YAChB,mBAAmB,EAAE,CAAC;YACtB,iBAAiB,EAAE,CAAC;YACpB,sBAAsB,EAAE,CAAC;SAC1B;QACD,YAAY,EAAE,EAAE;KACjB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW;IACzB,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;IAElC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAChD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAoB,CAAC;YAC/C,OAAO,sBAAsB,CAAC,EAAE,CAAC,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,4BAA4B,EAAE,CAAC;QACxC,CAAC;IACH,CAAC;IAED,OAAO,4BAA4B,EAAE,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,EAAmB;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;IAElC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,kBAAkB;IAClB,EAAE,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1C,EAAE,CAAC,KAAK,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;IAE5B,2BAA2B;IAC3B,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,2BAAW,EAAE,CAAC;QACpC,EAAE,CAAC,OAAO,GAAG,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,gBAAgB;IAChB,EAAE,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAEpD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,EAAmB,EAAE,MAAc;IAC9D,MAAM,aAAa,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;IAEpE,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;QACvB,kBAAkB;QAClB,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG;YAC1B,GAAG,MAAM;YACT,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,GAAG,CAAC;YAC9C,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,UAAU;QACV,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,gBAAgB;IAChB,EAAE,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAEpD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,EAAmB,EAAE,EAAU;IAC3D,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,EAAmB,EAAE,OAAe;IACvE,MAAM,GAAG,GAAG,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/C,OAAO,GAAG;SACP,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;SAC5C,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,EAAmB;IAClD,OAAO,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,EAAmB,EAAE,QAAgB;IACjE,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;IACvD,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,MAAM,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CACzB,EAAmB,EACnB,QAAgB,EAChB,aAAqB;IAErB,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;IACvD,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,MAAM,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC9C,MAAM,CAAC,iBAAiB,GAAG,aAAa,CAAC;QACzC,MAAM,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE5C,2CAA2C;QAC3C,IAAI,aAAa,IAAI,EAAE,EAAE,CAAC;YACxB,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QAC3D,CAAC;aAAM,IAAI,aAAa,GAAG,EAAE,EAAE,CAAC;YAC9B,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,OAAiB;IAC1C,MAAM,KAAK,GAA6B,EAAE,CAAC;IAE3C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QAC7B,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,EAAmB;IACvC,MAAM,aAAa,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5D,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAChF,MAAM,eAAe,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;IAElF,OAAO;QACL,YAAY,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM;QAC/B,aAAa,EAAE,aAAa,CAAC,MAAM;QACnC,mBAAmB,EAAE,QAAQ,CAAC,IAAI;QAClC,iBAAiB,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC;YACzC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,aAAa,CAAC,MAAM,CAAC;YACpD,CAAC,CAAC,CAAC;QACL,sBAAsB,EAAE,eAAe;KACxC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,OAAiB;IACpC,8DAA8D;IAC9D,OAAO,OAAO;SACX,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACb,2BAA2B;QAC3B,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS;YAAE,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,0BAA0B;QAC1B,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU;YAAE,OAAO,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;QACtE,sBAAsB;QACtB,IAAI,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,aAAa;YAAE,OAAO,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC;QAClF,oBAAoB;QACpB,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;IAC3E,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,EAAE,2BAAW,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,EAAmB;IACjD,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;QAChB,EAAE,CAAC,OAAO,GAAG,kCAAkB,CAAC;IAClC,CAAC;IAED,0BAA0B;IAC1B,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;QACrB,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC;IACvB,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC;QACzB,EAAE,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QACd,EAAE,CAAC,KAAK,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Lessons Database Types
3
+ *
4
+ * A lesson is a persistent learning extracted from pattern + intervention data.
5
+ * Unlike nudges (ephemeral), lessons accumulate and get smarter over time.
6
+ */
7
+ import { InterventionType } from '../gamification/types';
8
+ /**
9
+ * A single lesson learned from recurring patterns
10
+ */
11
+ export interface Lesson {
12
+ id: string;
13
+ version: number;
14
+ createdAt: string;
15
+ updatedAt: string;
16
+ pattern: string;
17
+ components: string[];
18
+ title: string;
19
+ description: string;
20
+ rootCause?: string;
21
+ prevention: string[];
22
+ interventions: LessonIntervention[];
23
+ confidence: number;
24
+ evidenceCount: number;
25
+ totalTimeWasted: number;
26
+ dismissed: boolean;
27
+ applied: boolean;
28
+ appliedDate?: string;
29
+ userEffectiveness?: number;
30
+ severity: 'critical' | 'high' | 'medium' | 'low';
31
+ tags: string[];
32
+ }
33
+ /**
34
+ * An intervention associated with a lesson
35
+ */
36
+ export interface LessonIntervention {
37
+ type: InterventionType;
38
+ successCount: number;
39
+ totalCount: number;
40
+ effectiveness: number;
41
+ notes?: string;
42
+ }
43
+ /**
44
+ * The lessons database
45
+ */
46
+ export interface LessonsDatabase {
47
+ version: string;
48
+ lastUpdated: string;
49
+ lastSynthesis: string;
50
+ lessons: Lesson[];
51
+ lessonsByPattern: Record<string, string[]>;
52
+ stats: {
53
+ totalLessons: number;
54
+ activeLessons: number;
55
+ patternsWithLessons: number;
56
+ averageConfidence: number;
57
+ totalTimeWastedMinutes: number;
58
+ };
59
+ synthesisLog: SynthesisLogEntry[];
60
+ }
61
+ /**
62
+ * Log entry for synthesis runs
63
+ */
64
+ export interface SynthesisLogEntry {
65
+ timestamp: string;
66
+ lessonsCreated: number;
67
+ lessonsUpdated: number;
68
+ patternsProcessed: number;
69
+ }
70
+ /**
71
+ * Result of surfacing lessons for a context
72
+ */
73
+ export interface SurfacedLesson {
74
+ lesson: Lesson;
75
+ relevanceScore: number;
76
+ reason: string;
77
+ suggestedIntervention?: InterventionType;
78
+ }
79
+ export declare const LESSONS_DB_VERSION = "1.0.0";
80
+ export declare const SYNTHESIS_THRESHOLD = 2;
81
+ export declare const MAX_LESSONS = 100;
82
+ export declare const CONFIDENCE_BASE = 50;
83
+ //# sourceMappingURL=lessons-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lessons-types.d.ts","sourceRoot":"","sources":["../../src/learning/lessons-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,MAAM;IAErB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAGlB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IAGrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,kBAAkB,EAAE,CAAC;IAGpC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IAGxB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAG3B,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjD,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,gBAAgB,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IAGtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAGlB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAG3C,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,sBAAsB,EAAE,MAAM,CAAC;KAChC,CAAC;IAGF,YAAY,EAAE,iBAAiB,EAAE,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB,CAAC,EAAE,gBAAgB,CAAC;CAC1C;AAGD,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAC1C,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,WAAW,MAAM,CAAC;AAC/B,eAAO,MAAM,eAAe,KAAK,CAAC"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ /**
3
+ * Lessons Database Types
4
+ *
5
+ * A lesson is a persistent learning extracted from pattern + intervention data.
6
+ * Unlike nudges (ephemeral), lessons accumulate and get smarter over time.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.CONFIDENCE_BASE = exports.MAX_LESSONS = exports.SYNTHESIS_THRESHOLD = exports.LESSONS_DB_VERSION = void 0;
10
+ // Constants
11
+ exports.LESSONS_DB_VERSION = '1.0.0';
12
+ exports.SYNTHESIS_THRESHOLD = 2; // Min occurrences to create lesson
13
+ exports.MAX_LESSONS = 100; // Cap lessons database
14
+ exports.CONFIDENCE_BASE = 50; // Starting confidence
15
+ //# sourceMappingURL=lessons-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lessons-types.js","sourceRoot":"","sources":["../../src/learning/lessons-types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAqGH,YAAY;AACC,QAAA,kBAAkB,GAAG,OAAO,CAAC;AAC7B,QAAA,mBAAmB,GAAG,CAAC,CAAC,CAAQ,mCAAmC;AACnE,QAAA,WAAW,GAAG,GAAG,CAAC,CAAc,uBAAuB;AACvD,QAAA,eAAe,GAAG,EAAE,CAAC,CAAW,sBAAsB"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Nudge Display System
3
+ *
4
+ * Formats and displays nudges in CLI output.
5
+ */
6
+ import { Nudge } from './types';
7
+ /**
8
+ * Format nudges for CLI display (after gamification section)
9
+ */
10
+ export declare function formatNudgesForCli(maxDisplay?: number): string[];
11
+ /**
12
+ * Get nudge summary for profile command
13
+ */
14
+ export declare function getNudgeSummary(): {
15
+ pending: number;
16
+ displayed: number;
17
+ dismissed: number;
18
+ nudges: Nudge[];
19
+ };
20
+ //# sourceMappingURL=nudges.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nudges.d.ts","sourceRoot":"","sources":["../../src/learning/nudges.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,GAAE,MAAU,GAAG,MAAM,EAAE,CA0BnE;AAwBD;;GAEG;AACH,wBAAgB,eAAe,IAAI;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB,CAUA"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ /**
3
+ * Nudge Display System
4
+ *
5
+ * Formats and displays nudges in CLI output.
6
+ */
7
+ var __importDefault = (this && this.__importDefault) || function (mod) {
8
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.formatNudgesForCli = formatNudgesForCli;
12
+ exports.getNudgeSummary = getNudgeSummary;
13
+ const chalk_1 = __importDefault(require("chalk"));
14
+ const storage_1 = require("./storage");
15
+ /**
16
+ * Format nudges for CLI display (after gamification section)
17
+ */
18
+ function formatNudgesForCli(maxDisplay = 2) {
19
+ const state = (0, storage_1.loadLearningState)();
20
+ const nudges = (0, storage_1.getPendingNudges)(state);
21
+ if (nudges.length === 0) {
22
+ return [];
23
+ }
24
+ const toDisplay = nudges.slice(0, maxDisplay);
25
+ const lines = [];
26
+ lines.push('');
27
+ for (const nudge of toDisplay) {
28
+ lines.push(formatSingleNudge(nudge));
29
+ }
30
+ if (nudges.length > maxDisplay) {
31
+ lines.push(chalk_1.default.gray(` ... and ${nudges.length - maxDisplay} more. Run \`vibe-check profile\` to see all.`));
32
+ }
33
+ // Mark as displayed
34
+ const updatedState = (0, storage_1.markNudgesDisplayed)(state, toDisplay.length);
35
+ (0, storage_1.saveLearningState)(updatedState);
36
+ return lines;
37
+ }
38
+ /**
39
+ * Format a single nudge for display
40
+ */
41
+ function formatSingleNudge(nudge) {
42
+ const lines = [];
43
+ // Color based on type
44
+ const colorFn = nudge.type === 'pattern' ? chalk_1.default.yellow :
45
+ nudge.type === 'retro' ? chalk_1.default.cyan :
46
+ nudge.type === 'achievement' ? chalk_1.default.green :
47
+ chalk_1.default.white;
48
+ lines.push(colorFn(` ${nudge.icon} ${nudge.title}`));
49
+ lines.push(chalk_1.default.gray(` ${nudge.message}`));
50
+ if (nudge.action) {
51
+ lines.push(chalk_1.default.gray(` ${nudge.action}`));
52
+ }
53
+ return lines.join('\n');
54
+ }
55
+ /**
56
+ * Get nudge summary for profile command
57
+ */
58
+ function getNudgeSummary() {
59
+ const state = (0, storage_1.loadLearningState)();
60
+ const pending = (0, storage_1.getPendingNudges)(state);
61
+ return {
62
+ pending: pending.length,
63
+ displayed: state.nudgesDisplayed,
64
+ dismissed: state.nudgesDismissed,
65
+ nudges: pending,
66
+ };
67
+ }
68
+ //# sourceMappingURL=nudges.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nudges.js","sourceRoot":"","sources":["../../src/learning/nudges.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;AASH,gDA0BC;AA2BD,0CAeC;AA3ED,kDAA0B;AAE1B,uCAAwG;AAExG;;GAEG;AACH,SAAgB,kBAAkB,CAAC,aAAqB,CAAC;IACvD,MAAM,KAAK,GAAG,IAAA,2BAAiB,GAAE,CAAC;IAClC,MAAM,MAAM,GAAG,IAAA,0BAAgB,EAAC,KAAK,CAAC,CAAC;IAEvC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,eAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,MAAM,GAAG,UAAU,+CAA+C,CAAC,CAAC,CAAC;IACjH,CAAC;IAED,oBAAoB;IACpB,MAAM,YAAY,GAAG,IAAA,6BAAmB,EAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAClE,IAAA,2BAAiB,EAAC,YAAY,CAAC,CAAC;IAEhC,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,KAAY;IACrC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,sBAAsB;IACtB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,eAAK,CAAC,MAAM,CAAC,CAAC;QACzC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,eAAK,CAAC,IAAI,CAAC,CAAC;YACrC,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,CAAC;gBAC5C,eAAK,CAAC,KAAK,CAAC;IAE5B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACtD,KAAK,CAAC,IAAI,CAAC,eAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAEhD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,eAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe;IAM7B,MAAM,KAAK,GAAG,IAAA,2BAAiB,GAAE,CAAC;IAClC,MAAM,OAAO,GAAG,IAAA,0BAAgB,EAAC,KAAK,CAAC,CAAC;IAExC,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,MAAM;QACvB,SAAS,EAAE,KAAK,CAAC,eAAe;QAChC,SAAS,EAAE,KAAK,CAAC,eAAe;QAChC,MAAM,EAAE,OAAO;KAChB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Retrospective System
3
+ *
4
+ * Generates weekly retrospective summaries from accumulated data.
5
+ */
6
+ import { RetroSummary } from './types';
7
+ /**
8
+ * Generate a weekly retrospective summary
9
+ */
10
+ export declare function generateWeeklyRetro(): RetroSummary;
11
+ /**
12
+ * Display retrospective in terminal
13
+ */
14
+ export declare function displayRetro(summary: RetroSummary): void;
15
+ /**
16
+ * Run and save retrospective
17
+ */
18
+ export declare function runAndSaveRetro(): RetroSummary;
19
+ /**
20
+ * Check if retrospective is due
21
+ */
22
+ export declare function isRetroDue(): {
23
+ due: boolean;
24
+ reason: string;
25
+ daysSince: number;
26
+ };
27
+ //# sourceMappingURL=retrospective.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retrospective.d.ts","sourceRoot":"","sources":["../../src/learning/retrospective.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAQvC;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,YAAY,CA+DlD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAwDxD;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAuC9C;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAgBhF"}