fivocell 4.9.0 → 5.1.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 (71) hide show
  1. package/dist/__tests__/code-health.test.d.ts +2 -0
  2. package/dist/__tests__/code-health.test.d.ts.map +1 -0
  3. package/dist/__tests__/code-health.test.js +90 -0
  4. package/dist/__tests__/code-health.test.js.map +1 -0
  5. package/dist/__tests__/context-compression.test.d.ts +2 -0
  6. package/dist/__tests__/context-compression.test.d.ts.map +1 -0
  7. package/dist/__tests__/context-compression.test.js +77 -0
  8. package/dist/__tests__/context-compression.test.js.map +1 -0
  9. package/dist/__tests__/developer-velocity.test.d.ts +2 -0
  10. package/dist/__tests__/developer-velocity.test.d.ts.map +1 -0
  11. package/dist/__tests__/developer-velocity.test.js +66 -0
  12. package/dist/__tests__/developer-velocity.test.js.map +1 -0
  13. package/dist/__tests__/error-trends.test.d.ts +2 -0
  14. package/dist/__tests__/error-trends.test.d.ts.map +1 -0
  15. package/dist/__tests__/error-trends.test.js +61 -0
  16. package/dist/__tests__/error-trends.test.js.map +1 -0
  17. package/dist/__tests__/memory-automation.test.d.ts +2 -0
  18. package/dist/__tests__/memory-automation.test.d.ts.map +1 -0
  19. package/dist/__tests__/memory-automation.test.js +136 -0
  20. package/dist/__tests__/memory-automation.test.js.map +1 -0
  21. package/dist/__tests__/memory-growth.test.d.ts +2 -0
  22. package/dist/__tests__/memory-growth.test.d.ts.map +1 -0
  23. package/dist/__tests__/memory-growth.test.js +61 -0
  24. package/dist/__tests__/memory-growth.test.js.map +1 -0
  25. package/dist/__tests__/memory-health.test.d.ts +2 -0
  26. package/dist/__tests__/memory-health.test.d.ts.map +1 -0
  27. package/dist/__tests__/memory-health.test.js +66 -0
  28. package/dist/__tests__/memory-health.test.js.map +1 -0
  29. package/dist/__tests__/smart-recommendations.test.d.ts +2 -0
  30. package/dist/__tests__/smart-recommendations.test.d.ts.map +1 -0
  31. package/dist/__tests__/smart-recommendations.test.js +74 -0
  32. package/dist/__tests__/smart-recommendations.test.js.map +1 -0
  33. package/dist/walls/06-memory/automation/memory-automation.d.ts +49 -0
  34. package/dist/walls/06-memory/automation/memory-automation.d.ts.map +1 -0
  35. package/dist/walls/06-memory/automation/memory-automation.js +396 -0
  36. package/dist/walls/06-memory/automation/memory-automation.js.map +1 -0
  37. package/dist/walls/06-memory/stores/code-health.d.ts +40 -0
  38. package/dist/walls/06-memory/stores/code-health.d.ts.map +1 -0
  39. package/dist/walls/06-memory/stores/code-health.js +344 -0
  40. package/dist/walls/06-memory/stores/code-health.js.map +1 -0
  41. package/dist/walls/06-memory/stores/context-compression.d.ts +33 -0
  42. package/dist/walls/06-memory/stores/context-compression.d.ts.map +1 -0
  43. package/dist/walls/06-memory/stores/context-compression.js +265 -0
  44. package/dist/walls/06-memory/stores/context-compression.js.map +1 -0
  45. package/dist/walls/06-memory/stores/developer-velocity.d.ts +53 -0
  46. package/dist/walls/06-memory/stores/developer-velocity.d.ts.map +1 -0
  47. package/dist/walls/06-memory/stores/developer-velocity.js +225 -0
  48. package/dist/walls/06-memory/stores/developer-velocity.js.map +1 -0
  49. package/dist/walls/06-memory/stores/error-trends.d.ts +53 -0
  50. package/dist/walls/06-memory/stores/error-trends.d.ts.map +1 -0
  51. package/dist/walls/06-memory/stores/error-trends.js +232 -0
  52. package/dist/walls/06-memory/stores/error-trends.js.map +1 -0
  53. package/dist/walls/06-memory/stores/memory-growth.d.ts +34 -0
  54. package/dist/walls/06-memory/stores/memory-growth.d.ts.map +1 -0
  55. package/dist/walls/06-memory/stores/memory-growth.js +150 -0
  56. package/dist/walls/06-memory/stores/memory-growth.js.map +1 -0
  57. package/dist/walls/06-memory/stores/memory-health.d.ts +32 -0
  58. package/dist/walls/06-memory/stores/memory-health.d.ts.map +1 -0
  59. package/dist/walls/06-memory/stores/memory-health.js +221 -0
  60. package/dist/walls/06-memory/stores/memory-health.js.map +1 -0
  61. package/dist/walls/06-memory/stores/smart-recommendations.d.ts +30 -0
  62. package/dist/walls/06-memory/stores/smart-recommendations.d.ts.map +1 -0
  63. package/dist/walls/06-memory/stores/smart-recommendations.js +222 -0
  64. package/dist/walls/06-memory/stores/smart-recommendations.js.map +1 -0
  65. package/dist/walls/06-memory/stores/weekly-report.js +1 -1
  66. package/dist/walls/07-runtime/cli/cli.js +159 -0
  67. package/dist/walls/07-runtime/cli/cli.js.map +1 -1
  68. package/dist/walls/07-runtime/daemon/server.d.ts.map +1 -1
  69. package/dist/walls/07-runtime/daemon/server.js +61 -0
  70. package/dist/walls/07-runtime/daemon/server.js.map +1 -1
  71. package/package.json +1 -1
@@ -0,0 +1,232 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.computeErrorTrends = computeErrorTrends;
4
+ exports.formatErrorTrend = formatErrorTrend;
5
+ const database_1 = require("../database/database");
6
+ function computeErrorTrends(project, days = 30) {
7
+ const db = (0, database_1.getDb)();
8
+ const since = new Date(Date.now() - days * 86400000).toISOString();
9
+ // Total errors and fixes
10
+ const errorCount = db.prepare("SELECT COUNT(*) as c FROM memory_events WHERE project = ? AND type = 'error' AND created_at >= ?").get(project, since);
11
+ const fixCount = db.prepare("SELECT COUNT(*) as c FROM memory_events WHERE project = ? AND type = 'fix' AND created_at >= ?").get(project, since);
12
+ // Daily trend
13
+ const dailyErrors = db.prepare(`
14
+ SELECT date(created_at) as date, COUNT(*) as count FROM memory_events
15
+ WHERE project = ? AND type = 'error' AND created_at >= ?
16
+ GROUP BY date(created_at) ORDER BY date
17
+ `).all(project, since);
18
+ const dailyFixes = db.prepare(`
19
+ SELECT date(created_at) as date, COUNT(*) as count FROM memory_events
20
+ WHERE project = ? AND type = 'fix' AND created_at >= ?
21
+ GROUP BY date(created_at) ORDER BY date
22
+ `).all(project, since);
23
+ const dailyTotal = db.prepare(`
24
+ SELECT date(created_at) as date, COUNT(*) as count FROM memory_events
25
+ WHERE project = ? AND created_at >= ?
26
+ GROUP BY date(created_at) ORDER BY date
27
+ `).all(project, since);
28
+ const errorMap = new Map(dailyErrors.map(r => [r.date, r.count]));
29
+ const fixMap = new Map(dailyFixes.map(r => [r.date, r.count]));
30
+ const totalMap = new Map(dailyTotal.map(r => [r.date, r.count]));
31
+ const allDates = [...new Set([...errorMap.keys(), ...fixMap.keys(), ...totalMap.keys()])].sort();
32
+ const dailyTrend = allDates.map(date => {
33
+ const errors = errorMap.get(date) || 0;
34
+ const fixes = fixMap.get(date) || 0;
35
+ const total = totalMap.get(date) || 1;
36
+ return { date, errors, fixes, errorRate: Math.round(errors / total * 100) };
37
+ });
38
+ // Peak error day
39
+ const peakDay = dailyErrors.reduce((max, r) => r.count > max.count ? r : max, { date: 'none', count: 0 });
40
+ // Trend detection (compare first half vs second half)
41
+ const half = Math.floor(dailyTrend.length / 2);
42
+ const firstHalfRate = dailyTrend.slice(0, half);
43
+ const secondHalfRate = dailyTrend.slice(half);
44
+ const firstAvg = firstHalfRate.length > 0 ? firstHalfRate.reduce((s, d) => s + d.errorRate, 0) / firstHalfRate.length : 0;
45
+ const secondAvg = secondHalfRate.length > 0 ? secondHalfRate.reduce((s, d) => s + d.errorRate, 0) / secondHalfRate.length : 0;
46
+ let trend = 'stable';
47
+ if (secondAvg < firstAvg * 0.8)
48
+ trend = 'improving';
49
+ else if (secondAvg > firstAvg * 1.2)
50
+ trend = 'worsening';
51
+ const avgErrorsPerDay = dailyTrend.length > 0
52
+ ? Math.round(dailyTrend.reduce((s, d) => s + d.errors, 0) / dailyTrend.length * 10) / 10
53
+ : 0;
54
+ const totalEvents = db.prepare('SELECT COUNT(*) as c FROM memory_events WHERE project = ? AND created_at >= ?').get(project, since);
55
+ const summary = {
56
+ totalErrors: errorCount.c,
57
+ totalFixes: fixCount.c,
58
+ unfixedErrors: errorCount.c - fixCount.c,
59
+ errorRate: totalEvents.c > 0 ? Math.round(errorCount.c / totalEvents.c * 100) : 0,
60
+ avgErrorsPerDay,
61
+ peakErrorDay: peakDay.date,
62
+ peakErrorCount: peakDay.count,
63
+ trend,
64
+ };
65
+ // Regressions: errors that appear in second half but not first
66
+ const firstHalfErrors = new Set(db.prepare(`
67
+ SELECT DISTINCT summary FROM memory_events
68
+ WHERE project = ? AND type = 'error' AND created_at >= ? AND created_at < ?
69
+ `).all(project, since, new Date(Date.now() - days / 2 * 86400000).toISOString()).map((r) => r.summary));
70
+ const secondHalfErrors = db.prepare(`
71
+ SELECT summary, COUNT(*) as c FROM memory_events
72
+ WHERE project = ? AND type = 'error' AND created_at >= ?
73
+ GROUP BY summary HAVING c >= 2
74
+ `).all(project, new Date(Date.now() - days / 2 * 86400000).toISOString());
75
+ const regressions = secondHalfErrors
76
+ .filter(e => !firstHalfErrors.has(e.summary))
77
+ .map(e => ({
78
+ pattern: e.summary.slice(0, 100),
79
+ count: e.c,
80
+ firstSeen: since,
81
+ lastSeen: new Date().toISOString(),
82
+ severity: e.c > 5 ? 'high' : e.c > 2 ? 'medium' : 'low',
83
+ suggestion: e.c > 3 ? 'Systematic fix needed' : 'Monitor for recurrence',
84
+ }));
85
+ // Top errors
86
+ const topErrorRows = db.prepare(`
87
+ SELECT summary, COUNT(*) as c, topic, importance, MAX(created_at) as lastSeen
88
+ FROM memory_events WHERE project = ? AND type = 'error' AND created_at >= ?
89
+ GROUP BY summary ORDER BY c DESC LIMIT 10
90
+ `).all(project, since);
91
+ const fixedSummaries = new Set(db.prepare(`
92
+ SELECT DISTINCT summary FROM memory_events WHERE project = ? AND type = 'fix' AND created_at >= ?
93
+ `).all(project, since).map((r) => r.summary));
94
+ const topErrors = topErrorRows.map(r => ({
95
+ summary: r.summary.slice(0, 120),
96
+ count: r.c,
97
+ topic: r.topic,
98
+ importance: r.importance,
99
+ lastSeen: r.lastSeen,
100
+ fixed: fixedSummaries.has(r.summary),
101
+ }));
102
+ // Fix rate
103
+ const fixRateRows = db.prepare(`
104
+ SELECT e.summary as errorSummary, e.created_at as errorTime, f.created_at as fixTime
105
+ FROM memory_events e
106
+ JOIN memory_events f ON f.project = e.project AND f.type = 'fix'
107
+ WHERE e.project = ? AND e.type = 'error' AND e.created_at >= ?
108
+ AND f.created_at > e.created_at
109
+ ORDER BY e.created_at, f.created_at
110
+ `).all(project, since);
111
+ // Deduplicate: pair each error with its closest fix
112
+ const fixTimes = [];
113
+ const errorTimes = db.prepare(`
114
+ SELECT created_at FROM memory_events WHERE project = ? AND type = 'error' AND created_at >= ? ORDER BY created_at
115
+ `).all(project, since);
116
+ const fixTimesAll = db.prepare(`
117
+ SELECT created_at FROM memory_events WHERE project = ? AND type = 'fix' AND created_at >= ? ORDER BY created_at
118
+ `).all(project, since);
119
+ for (const err of errorTimes) {
120
+ const closestFix = fixTimesAll.find(f => new Date(f.created_at) > new Date(err.created_at));
121
+ if (closestFix) {
122
+ fixTimes.push(new Date(closestFix.created_at).getTime() - new Date(err.created_at).getTime());
123
+ }
124
+ }
125
+ const avgFixMs = fixTimes.length > 0 ? fixTimes.reduce((s, t) => s + t, 0) / fixTimes.length : 0;
126
+ const minFix = fixTimes.length > 0 ? Math.min(...fixTimes) : 0;
127
+ const maxFix = fixTimes.length > 0 ? Math.max(...fixTimes) : 0;
128
+ const fixRate = {
129
+ total: errorCount.c,
130
+ fixed: fixCount.c,
131
+ rate: errorCount.c > 0 ? Math.round(fixCount.c / errorCount.c * 100) : 0,
132
+ avgTimeToFix: formatDuration(avgFixMs),
133
+ fastestFix: formatDuration(minFix),
134
+ slowestFix: formatDuration(maxFix),
135
+ };
136
+ // Chart
137
+ const chart = renderErrorChart(dailyTrend, summary);
138
+ return {
139
+ project,
140
+ period: `${days}d`,
141
+ summary,
142
+ dailyTrend,
143
+ regressions,
144
+ topErrors,
145
+ fixRate,
146
+ chart,
147
+ };
148
+ }
149
+ function renderErrorChart(trend, summary) {
150
+ if (trend.length === 0)
151
+ return ' No error data.';
152
+ const maxErrors = Math.max(...trend.map(t => t.errors), 1);
153
+ const chartHeight = 8;
154
+ const lines = [];
155
+ lines.push(` Error Trend — ${summary.trend.toUpperCase()} (rate: ${summary.errorRate}%)`);
156
+ lines.push('');
157
+ for (let row = chartHeight; row >= 1; row--) {
158
+ const threshold = (row / chartHeight) * maxErrors;
159
+ const label = row === chartHeight ? String(maxErrors).padStart(4) : row === 1 ? ' 1' : ' ';
160
+ let line = ` ${label} │`;
161
+ for (const t of trend) {
162
+ if (t.errors >= threshold) {
163
+ line += ' ▓';
164
+ }
165
+ else if (t.fixes >= threshold) {
166
+ line += ' ░';
167
+ }
168
+ else {
169
+ line += ' ';
170
+ }
171
+ }
172
+ lines.push(line);
173
+ }
174
+ lines.push(` └${'─'.repeat(trend.length * 2)}`);
175
+ if (trend.length > 0) {
176
+ const first = trend[0].date.slice(5);
177
+ const last = trend[trend.length - 1].date.slice(5);
178
+ lines.push(` ${first}${' '.repeat(Math.max(0, trend.length * 2 - first.length - last.length))}${last}`);
179
+ }
180
+ lines.push('');
181
+ lines.push(` ▓ errors ░ fixes`);
182
+ lines.push(` Errors: ${summary.totalErrors} | Fixes: ${summary.totalFixes} | Unfixed: ${summary.unfixedErrors}`);
183
+ return lines.join('\n');
184
+ }
185
+ function formatDuration(ms) {
186
+ if (ms === 0)
187
+ return 'N/A';
188
+ if (ms < 60000)
189
+ return `${Math.round(ms / 1000)}s`;
190
+ if (ms < 3600000)
191
+ return `${Math.round(ms / 60000)}min`;
192
+ if (ms < 86400000)
193
+ return `${Math.round(ms / 3600000)}h`;
194
+ return `${Math.round(ms / 86400000)}d`;
195
+ }
196
+ function formatErrorTrend(trend) {
197
+ const lines = [];
198
+ lines.push(`## Error Trend — ${trend.project} (${trend.period})\n`);
199
+ lines.push(trend.chart);
200
+ lines.push('');
201
+ lines.push(`### Summary`);
202
+ lines.push(`| Metric | Value |`);
203
+ lines.push(`|--------|-------|`);
204
+ lines.push(`| Total errors | ${trend.summary.totalErrors} |`);
205
+ lines.push(`| Total fixes | ${trend.summary.totalFixes} |`);
206
+ lines.push(`| Unfixed | ${trend.summary.unfixedErrors} |`);
207
+ lines.push(`| Error rate | ${trend.summary.errorRate}% |`);
208
+ lines.push(`| Avg/day | ${trend.summary.avgErrorsPerDay} |`);
209
+ lines.push(`| Peak day | ${trend.summary.peakErrorDay} (${trend.summary.peakErrorCount}) |`);
210
+ lines.push(`| Trend | ${trend.summary.trend} |`);
211
+ lines.push('');
212
+ lines.push(`### Fix Rate`);
213
+ lines.push(`- Fixed: ${trend.fixRate.rate}%`);
214
+ lines.push(`- Avg time to fix: ${trend.fixRate.avgTimeToFix}`);
215
+ lines.push(`- Fastest: ${trend.fixRate.fastestFix} | Slowest: ${trend.fixRate.slowestFix}`);
216
+ if (trend.regressions.length > 0) {
217
+ lines.push('');
218
+ lines.push(`### Regressions`);
219
+ for (const r of trend.regressions) {
220
+ lines.push(`- [${r.severity}] ${r.pattern} (×${r.count}) — ${r.suggestion}`);
221
+ }
222
+ }
223
+ if (trend.topErrors.length > 0) {
224
+ lines.push('');
225
+ lines.push(`### Top Errors`);
226
+ for (const e of trend.topErrors.slice(0, 5)) {
227
+ lines.push(`- ${e.fixed ? '✓' : '✗'} [×${e.count}] ${e.summary}`);
228
+ }
229
+ }
230
+ return lines.join('\n');
231
+ }
232
+ //# sourceMappingURL=error-trends.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-trends.js","sourceRoot":"","sources":["../../../../src/walls/06-memory/stores/error-trends.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ export interface GrowthTrend {
2
+ project: string;
3
+ period: string;
4
+ dataPoints: GrowthDataPoint[];
5
+ summary: GrowthSummary;
6
+ prediction: GrowthPrediction;
7
+ chart: string;
8
+ }
9
+ export interface GrowthDataPoint {
10
+ date: string;
11
+ totalEvents: number;
12
+ newEvents: number;
13
+ avgImportance: number;
14
+ types: Record<string, number>;
15
+ }
16
+ export interface GrowthSummary {
17
+ totalEvents: number;
18
+ eventsLast7d: number;
19
+ eventsLast30d: number;
20
+ avgDailyGrowth: number;
21
+ peakDay: string;
22
+ peakDayCount: number;
23
+ growthRate: number;
24
+ trend: 'accelerating' | 'steady' | 'decelerating' | 'declining';
25
+ }
26
+ export interface GrowthPrediction {
27
+ next7dEstimate: number;
28
+ next30dEstimate: number;
29
+ confidence: number;
30
+ basedOnDays: number;
31
+ }
32
+ export declare function computeGrowthTrends(project: string, days?: number): GrowthTrend;
33
+ export declare function formatGrowthTrend(trend: GrowthTrend): string;
34
+ //# sourceMappingURL=memory-growth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-growth.d.ts","sourceRoot":"","sources":["../../../../src/walls/06-memory/stores/memory-growth.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,OAAO,EAAE,aAAa,CAAC;IACvB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,cAAc,GAAG,QAAQ,GAAG,cAAc,GAAG,WAAW,CAAC;CACjE;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAW,GAAG,WAAW,CAsGnF;AA2CD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAqB5D"}
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.computeGrowthTrends = computeGrowthTrends;
4
+ exports.formatGrowthTrend = formatGrowthTrend;
5
+ const database_1 = require("../database/database");
6
+ function computeGrowthTrends(project, days = 30) {
7
+ const db = (0, database_1.getDb)();
8
+ const since = new Date(Date.now() - days * 86400000).toISOString();
9
+ // Daily event counts
10
+ const dailyRows = db.prepare(`
11
+ SELECT date(created_at) as date, COUNT(*) as count, AVG(importance) as avgImp
12
+ FROM memory_events WHERE project = ? AND created_at >= ?
13
+ GROUP BY date(created_at) ORDER BY date
14
+ `).all(project, since);
15
+ // Type breakdown per day
16
+ const typeRows = db.prepare(`
17
+ SELECT date(created_at) as date, type, COUNT(*) as count
18
+ FROM memory_events WHERE project = ? AND created_at >= ?
19
+ GROUP BY date(created_at), type ORDER BY date
20
+ `).all(project, since);
21
+ const typeByDay = {};
22
+ for (const r of typeRows) {
23
+ if (!typeByDay[r.date])
24
+ typeByDay[r.date] = {};
25
+ typeByDay[r.date][r.type] = r.count;
26
+ }
27
+ // Build data points
28
+ const dataPoints = dailyRows.map((r, i) => ({
29
+ date: r.date,
30
+ totalEvents: dailyRows.slice(0, i + 1).reduce((s, d) => s + d.count, 0),
31
+ newEvents: r.count,
32
+ avgImportance: Math.round(r.avgImp * 10) / 10,
33
+ types: typeByDay[r.date] || {},
34
+ }));
35
+ // Summary
36
+ const totalRow = db.prepare('SELECT COUNT(*) as c FROM memory_events WHERE project = ?').get(project);
37
+ const since7d = new Date(Date.now() - 7 * 86400000).toISOString();
38
+ const since30d = new Date(Date.now() - 30 * 86400000).toISOString();
39
+ const last7d = db.prepare('SELECT COUNT(*) as c FROM memory_events WHERE project = ? AND created_at >= ?').get(project, since7d);
40
+ const last30d = db.prepare('SELECT COUNT(*) as c FROM memory_events WHERE project = ? AND created_at >= ?').get(project, since30d);
41
+ const avgDaily = dataPoints.length > 0
42
+ ? Math.round(dataPoints.reduce((s, d) => s + d.newEvents, 0) / dataPoints.length * 10) / 10
43
+ : 0;
44
+ const peak = dataPoints.reduce((max, d) => d.newEvents > max.newEvents ? d : max, { date: 'none', newEvents: 0 });
45
+ // Growth rate: compare last half vs first half
46
+ const half = Math.floor(dataPoints.length / 2);
47
+ const firstHalf = dataPoints.slice(0, half);
48
+ const secondHalf = dataPoints.slice(half);
49
+ const firstAvg = firstHalf.length > 0 ? firstHalf.reduce((s, d) => s + d.newEvents, 0) / firstHalf.length : 0;
50
+ const secondAvg = secondHalf.length > 0 ? secondHalf.reduce((s, d) => s + d.newEvents, 0) / secondHalf.length : 0;
51
+ const growthRate = firstAvg > 0 ? Math.round((secondAvg - firstAvg) / firstAvg * 100) : 0;
52
+ let trend = 'steady';
53
+ if (growthRate > 20)
54
+ trend = 'accelerating';
55
+ else if (growthRate > 5)
56
+ trend = 'steady';
57
+ else if (growthRate > -10)
58
+ trend = 'decelerating';
59
+ else
60
+ trend = 'declining';
61
+ const summary = {
62
+ totalEvents: totalRow.c,
63
+ eventsLast7d: last7d.c,
64
+ eventsLast30d: last30d.c,
65
+ avgDailyGrowth: avgDaily,
66
+ peakDay: peak.date,
67
+ peakDayCount: peak.newEvents,
68
+ growthRate,
69
+ trend,
70
+ };
71
+ // Prediction (simple linear extrapolation)
72
+ const recentDays = dataPoints.slice(-7);
73
+ const recentAvg = recentDays.length > 0
74
+ ? recentDays.reduce((s, d) => s + d.newEvents, 0) / recentDays.length
75
+ : avgDaily;
76
+ const prediction = {
77
+ next7dEstimate: Math.round(recentAvg * 7),
78
+ next30dEstimate: Math.round(recentAvg * 30),
79
+ confidence: dataPoints.length >= 14 ? 0.8 : dataPoints.length >= 7 ? 0.6 : 0.4,
80
+ basedOnDays: dataPoints.length,
81
+ };
82
+ // ASCII Chart
83
+ const chart = renderGrowthChart(dataPoints, summary);
84
+ return {
85
+ project,
86
+ period: `${days}d`,
87
+ dataPoints,
88
+ summary,
89
+ prediction,
90
+ chart,
91
+ };
92
+ }
93
+ function renderGrowthChart(points, summary) {
94
+ if (points.length === 0)
95
+ return ' No data available.';
96
+ const maxEvents = Math.max(...points.map(p => p.newEvents), 1);
97
+ const chartHeight = 10;
98
+ const lines = [];
99
+ lines.push(` Memory Growth — ${summary.trend.toUpperCase()} (rate: ${summary.growthRate > 0 ? '+' : ''}${summary.growthRate}%)`);
100
+ lines.push('');
101
+ // Build chart rows
102
+ for (let row = chartHeight; row >= 1; row--) {
103
+ const threshold = (row / chartHeight) * maxEvents;
104
+ const label = row === chartHeight ? String(maxEvents).padStart(4) : row === 1 ? ' 1' : ' ';
105
+ let line = ` ${label} │`;
106
+ for (const p of points) {
107
+ if (p.newEvents >= threshold) {
108
+ line += ' █';
109
+ }
110
+ else {
111
+ line += ' ';
112
+ }
113
+ }
114
+ lines.push(line);
115
+ }
116
+ // X axis
117
+ lines.push(` └${'─'.repeat(points.length * 2)}`);
118
+ // Date labels
119
+ if (points.length > 0) {
120
+ const first = points[0].date.slice(5);
121
+ const last = points[points.length - 1].date.slice(5);
122
+ lines.push(` ${first}${' '.repeat(Math.max(0, points.length * 2 - first.length - last.length))}${last}`);
123
+ }
124
+ lines.push('');
125
+ lines.push(` Total: ${summary.totalEvents} | Last 7d: ${summary.eventsLast7d} | Avg/day: ${summary.avgDailyGrowth}`);
126
+ return lines.join('\n');
127
+ }
128
+ function formatGrowthTrend(trend) {
129
+ const lines = [];
130
+ lines.push(`## Memory Growth — ${trend.project} (${trend.period})\n`);
131
+ lines.push(trend.chart);
132
+ lines.push('');
133
+ lines.push(`### Summary`);
134
+ lines.push(`| Metric | Value |`);
135
+ lines.push(`|--------|-------|`);
136
+ lines.push(`| Total events | ${trend.summary.totalEvents} |`);
137
+ lines.push(`| Last 7d | ${trend.summary.eventsLast7d} |`);
138
+ lines.push(`| Last 30d | ${trend.summary.eventsLast30d} |`);
139
+ lines.push(`| Avg daily | ${trend.summary.avgDailyGrowth} |`);
140
+ lines.push(`| Peak day | ${trend.summary.peakDay} (${trend.summary.peakDayCount}) |`);
141
+ lines.push(`| Growth rate | ${trend.summary.growthRate > 0 ? '+' : ''}${trend.summary.growthRate}% |`);
142
+ lines.push(`| Trend | ${trend.summary.trend} |`);
143
+ lines.push('');
144
+ lines.push(`### Prediction`);
145
+ lines.push(`- Next 7d: ~${trend.prediction.next7dEstimate} events`);
146
+ lines.push(`- Next 30d: ~${trend.prediction.next30dEstimate} events`);
147
+ lines.push(`- Confidence: ${Math.round(trend.prediction.confidence * 100)}% (${trend.prediction.basedOnDays} days of data)`);
148
+ return lines.join('\n');
149
+ }
150
+ //# sourceMappingURL=memory-growth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-growth.js","sourceRoot":"","sources":["../../../../src/walls/06-memory/stores/memory-growth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ export interface MemoryHealthScore {
2
+ project: string;
3
+ overallScore: number;
4
+ grade: 'A+' | 'A' | 'B+' | 'B' | 'C+' | 'C' | 'D' | 'F';
5
+ breakdown: {
6
+ completeness: number;
7
+ freshness: number;
8
+ quality: number;
9
+ balance: number;
10
+ engagement: number;
11
+ };
12
+ suggestions: string[];
13
+ metrics: {
14
+ totalEvents: number;
15
+ recentEvents7d: number;
16
+ avgImportance: number;
17
+ decisionsLogged: number;
18
+ errorsLogged: number;
19
+ fixesLogged: number;
20
+ verificationsLogged: number;
21
+ patternsLearned: number;
22
+ handoffCurrent: boolean;
23
+ styleProfileExists: boolean;
24
+ uniqueTopics: number;
25
+ daysSinceFirstEvent: number;
26
+ daysSinceLastEvent: number;
27
+ };
28
+ computedAt: string;
29
+ }
30
+ export declare function computeMemoryHealth(project: string): MemoryHealthScore;
31
+ export declare function formatHealthReport(health: MemoryHealthScore): string;
32
+ //# sourceMappingURL=memory-health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-health.d.ts","sourceRoot":"","sources":["../../../../src/walls/06-memory/stores/memory-health.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACxD,SAAS,EAAE;QACT,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE;QACP,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,EAAE,OAAO,CAAC;QACxB,kBAAkB,EAAE,OAAO,CAAC;QAC5B,YAAY,EAAE,MAAM,CAAC;QACrB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAqLtE;AAaD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAuCpE"}