fivocell 4.6.0 → 4.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 (33) hide show
  1. package/dist/__tests__/cross-project-memory.test.d.ts +2 -0
  2. package/dist/__tests__/cross-project-memory.test.d.ts.map +1 -0
  3. package/dist/__tests__/cross-project-memory.test.js +105 -0
  4. package/dist/__tests__/cross-project-memory.test.js.map +1 -0
  5. package/dist/__tests__/memory-charts.test.d.ts +2 -0
  6. package/dist/__tests__/memory-charts.test.d.ts.map +1 -0
  7. package/dist/__tests__/memory-charts.test.js +52 -0
  8. package/dist/__tests__/memory-charts.test.js.map +1 -0
  9. package/dist/__tests__/memory-insights.test.d.ts +2 -0
  10. package/dist/__tests__/memory-insights.test.d.ts.map +1 -0
  11. package/dist/__tests__/memory-insights.test.js +71 -0
  12. package/dist/__tests__/memory-insights.test.js.map +1 -0
  13. package/dist/walls/06-memory/database/database.d.ts.map +1 -1
  14. package/dist/walls/06-memory/database/database.js +16 -1
  15. package/dist/walls/06-memory/database/database.js.map +1 -1
  16. package/dist/walls/06-memory/stores/cross-project-memory.d.ts +53 -0
  17. package/dist/walls/06-memory/stores/cross-project-memory.d.ts.map +1 -0
  18. package/dist/walls/06-memory/stores/cross-project-memory.js +200 -0
  19. package/dist/walls/06-memory/stores/cross-project-memory.js.map +1 -0
  20. package/dist/walls/06-memory/stores/memory-charts.d.ts +14 -0
  21. package/dist/walls/06-memory/stores/memory-charts.d.ts.map +1 -0
  22. package/dist/walls/06-memory/stores/memory-charts.js +128 -0
  23. package/dist/walls/06-memory/stores/memory-charts.js.map +1 -0
  24. package/dist/walls/06-memory/stores/memory-insights.d.ts +26 -0
  25. package/dist/walls/06-memory/stores/memory-insights.d.ts.map +1 -0
  26. package/dist/walls/06-memory/stores/memory-insights.js +218 -0
  27. package/dist/walls/06-memory/stores/memory-insights.js.map +1 -0
  28. package/dist/walls/07-runtime/cli/cli.js +209 -0
  29. package/dist/walls/07-runtime/cli/cli.js.map +1 -1
  30. package/dist/walls/07-runtime/daemon/server.d.ts.map +1 -1
  31. package/dist/walls/07-runtime/daemon/server.js +57 -0
  32. package/dist/walls/07-runtime/daemon/server.js.map +1 -1
  33. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-project-memory.js","sourceRoot":"","sources":["../../../../src/walls/06-memory/stores/cross-project-memory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,oDA0BC;AAED,8CAaC;AAED,sDAeC;AAmBD,0DA+CC;AAyBD,oDA0BC;AA/MD,uCAAyB;AACzB,2CAA6B;AAC7B,mDAA6C;AAsB7C,SAAS,kBAAkB,CAAC,UAAkB;IAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,SAAgB,oBAAoB,CAClC,UAAkB,EAClB,OAAwG;IAExG,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAE1C,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC;;;GAGzB,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI,EAAE,OAAO,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC;IAEjI,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAE1C,uDAAuD;IACvD,MAAM,GAAG,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC3C,SAAS,CAAC,GAAG,CAAC,CAAC;IACf,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAC9C,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC;QACxC,EAAE;QACF,aAAa,EAAE,OAAO;QACtB,GAAG,OAAO;QACV,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACnC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAEb,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAgB,iBAAiB,CAAC,UAAkB,EAAE,QAAiB;IACrE,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAE1C,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,EAAE,CAAC,OAAO,CACf,0FAA0F,CAC3F,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAoB,CAAC;IAC9C,CAAC;IAED,OAAO,EAAE,CAAC,OAAO,CACf,yEAAyE,CAC1E,CAAC,GAAG,CAAC,OAAO,CAAoB,CAAC;AACpC,CAAC;AAED,SAAgB,qBAAqB,CAAC,aAAqB,EAAE,WAAqB;IAChF,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAC5B,0DAA0D,CAC3D,CAAC,GAAG,EAAqB,CAAC;IAE3B,OAAO,WAAW;SACf,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,aAAa,CAAC;SAC9C,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACT,GAAG,CAAC;QACJ,cAAc,EAAE,sBAAsB,CAAC,CAAC,EAAE,WAAW,CAAC;KACvD,CAAC,CAAC;SACF,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,GAAG,GAAG,CAAC;SAC1C,IAAI,CAAC,CAAC,CAAM,EAAE,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,cAAc,CAAC;SAC7D,KAAK,CAAC,CAAC,EAAE,EAAE,CAAU,CAAC;AAC3B,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAsB,EAAE,WAAqB;IAC3E,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,aAAa;IAE9B,2BAA2B;IAC3B,IAAI,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAS,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC;QACzG,KAAK,IAAI,GAAG,CAAC;IACf,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAU,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC;QAC3G,KAAK,IAAI,GAAG,CAAC;IACf,CAAC;IAED,qBAAqB;IACrB,KAAK,IAAI,OAAO,CAAC,WAAW,GAAG,GAAG,CAAC;IAEnC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,SAAgB,uBAAuB,CAAC,UAAkB,EAAE,cAAwB;IAClF,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAEhD,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACrF,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,aAAa,EAAE,sBAAsB,CAAC,CAAC,EAAE,WAAW,CAAC;QACrD,MAAM,EAAE,QAAQ,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,QAAQ,IAAI,SAAS,GAAG;KAC/D,CAAC,CAAC,CAAC;IAEJ,qCAAqC;IACrC,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,MAAM,YAAY,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;;GAS/B,CAAC,CAAC,GAAG,EAAuE,CAAC;IAE9E,wBAAwB;IACxB,MAAM,eAAe,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;GAUlC,CAAC,CAAC,GAAG,EAAmE,CAAC;IAE1E,OAAO;QACL,aAAa,EAAE,aAAa;QAC5B,aAAa;QACb,kBAAkB;QAClB,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACnC,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,KAAK,EAAE,CAAC,CAAC,aAAa;YACtB,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;SAChC,CAAC,CAAC;QACH,eAAe;KAChB,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,UAAkB;IACzC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QACtD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YAC1D,MAAM,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;YAC7D,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzD,IAAI,IAAI,CAAC,GAAG;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACjE,IAAI,IAAI,CAAC,OAAO;gBAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,IAAI,CAAC,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACrC,IAAI,IAAI,CAAC,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClC,IAAI,IAAI,CAAC,UAAU;gBAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC9C,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACpD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrE,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO;gBAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACzD,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IACV,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,oBAAoB;IAMlC,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IAEnB,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,EAAmB,CAAC;IAEhG,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,0DAA0D,CAAC,CAAC,GAAG,EAAmB,CAAC;IAElH,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC;;GAE7B,CAAC,CAAC,GAAG,EAA4C,CAAC;IAEnD,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC;;GAE3B,CAAC,CAAC,GAAG,EAA2C,CAAC;IAElD,OAAO;QACL,aAAa,EAAE,QAAQ,CAAC,CAAC;QACzB,aAAa,EAAE,WAAW,CAAC,CAAC;QAC5B,aAAa,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1E,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KACrE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ export interface ChartData {
2
+ labels: string[];
3
+ datasets: Array<{
4
+ label: string;
5
+ data: number[];
6
+ color?: string;
7
+ }>;
8
+ }
9
+ export declare function renderActivityChart(project: string, days?: number): string;
10
+ export declare function renderTypeDistribution(project: string): string;
11
+ export declare function renderImportanceChart(project: string): string;
12
+ export declare function renderTimelineChart(project: string, days?: number): string;
13
+ export declare function renderFullDashboard(project: string): string;
14
+ //# sourceMappingURL=memory-charts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-charts.d.ts","sourceRoot":"","sources":["../../../../src/walls/06-memory/stores/memory-charts.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAW,GAAG,MAAM,CAkC9E;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAgC9D;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA+B7D;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAU,GAAG,MAAM,CA2B7E;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAS3D"}
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderActivityChart = renderActivityChart;
4
+ exports.renderTypeDistribution = renderTypeDistribution;
5
+ exports.renderImportanceChart = renderImportanceChart;
6
+ exports.renderTimelineChart = renderTimelineChart;
7
+ exports.renderFullDashboard = renderFullDashboard;
8
+ const database_1 = require("../database/database");
9
+ function renderActivityChart(project, days = 14) {
10
+ const db = (0, database_1.getDb)();
11
+ const since = new Date(Date.now() - days * 86400000).toISOString().slice(0, 10);
12
+ const rows = db.prepare(`
13
+ SELECT date(created_at) as day, COUNT(*) as c
14
+ FROM memory_events
15
+ WHERE project = ? AND date(created_at) >= date(?)
16
+ GROUP BY day ORDER BY day
17
+ `).all(project, since);
18
+ const rowMap = new Map(rows.map(r => [r.day, r.c]));
19
+ const lines = [];
20
+ lines.push(` ── Activity Chart (${days} days) ──`);
21
+ lines.push('');
22
+ const maxCount = Math.max(...rows.map(r => r.c), 1);
23
+ const barWidth = 30;
24
+ for (let i = days - 1; i >= 0; i--) {
25
+ const d = new Date(Date.now() - i * 86400000).toISOString().slice(0, 10);
26
+ const count = rowMap.get(d) || 0;
27
+ const barLen = Math.round((count / maxCount) * barWidth);
28
+ const bar = '█'.repeat(barLen) + '░'.repeat(barWidth - barLen);
29
+ const dayShort = d.slice(5); // MM-DD
30
+ lines.push(` ${dayShort} ${bar} ${count}`);
31
+ }
32
+ lines.push('');
33
+ const total = rows.reduce((s, r) => s + r.c, 0);
34
+ const avg = rows.length > 0 ? Math.round(total / rows.length * 10) / 10 : 0;
35
+ lines.push(` Total: ${total} | Avg/day: ${avg} | Max: ${maxCount}`);
36
+ return lines.join('\n');
37
+ }
38
+ function renderTypeDistribution(project) {
39
+ const db = (0, database_1.getDb)();
40
+ const rows = db.prepare(`
41
+ SELECT type, COUNT(*) as c FROM memory_events
42
+ WHERE project = ?
43
+ GROUP BY type ORDER BY c DESC
44
+ `).all(project);
45
+ const lines = [];
46
+ lines.push(' ── Event Type Distribution ──');
47
+ lines.push('');
48
+ const maxCount = Math.max(...rows.map(r => r.c), 1);
49
+ const barWidth = 25;
50
+ const colors = {
51
+ decision: '🟢', error: '🔴', edit: '🔵', fix: '🟡',
52
+ file_event: '⚪', publish: '🟣', handoff: '🟠', pattern: '⭐',
53
+ verification: '✅', risk: '⚠️', question: '❓', session: '📋',
54
+ branch: '🌿', style: '🎨', ai_work: '🤖',
55
+ };
56
+ for (const row of rows) {
57
+ const barLen = Math.round((row.c / maxCount) * barWidth);
58
+ const bar = '█'.repeat(barLen);
59
+ const icon = colors[row.type] || '📊';
60
+ lines.push(` ${icon} ${row.type.padEnd(14)} ${bar} ${row.c}`);
61
+ }
62
+ lines.push('');
63
+ lines.push(` Total: ${rows.reduce((s, r) => s + r.c, 0)} events`);
64
+ return lines.join('\n');
65
+ }
66
+ function renderImportanceChart(project) {
67
+ const db = (0, database_1.getDb)();
68
+ const rows = db.prepare(`
69
+ SELECT
70
+ CASE
71
+ WHEN importance >= 8 THEN '8-10 (Critical)'
72
+ WHEN importance >= 5 THEN '5-7 (Medium)'
73
+ WHEN importance >= 3 THEN '3-4 (Low)'
74
+ ELSE '1-2 (Minimal)'
75
+ END as tier,
76
+ COUNT(*) as c
77
+ FROM memory_events
78
+ WHERE project = ?
79
+ GROUP BY tier
80
+ ORDER BY MIN(importance) DESC
81
+ `).all(project);
82
+ const lines = [];
83
+ lines.push(' ── Importance Distribution ──');
84
+ lines.push('');
85
+ const maxCount = Math.max(...rows.map(r => r.c), 1);
86
+ const barWidth = 25;
87
+ for (const row of rows) {
88
+ const barLen = Math.round((row.c / maxCount) * barWidth);
89
+ const bar = '█'.repeat(barLen);
90
+ lines.push(` ${row.tier.padEnd(20)} ${bar} ${row.c}`);
91
+ }
92
+ return lines.join('\n');
93
+ }
94
+ function renderTimelineChart(project, days = 7) {
95
+ const db = (0, database_1.getDb)();
96
+ const lines = [];
97
+ lines.push(` ── Hourly Activity (last ${days} days) ──`);
98
+ lines.push('');
99
+ const since = new Date(Date.now() - days * 86400000).toISOString();
100
+ const rows = db.prepare(`
101
+ SELECT CAST(strftime('%H', created_at) AS INTEGER) as hour, COUNT(*) as c
102
+ FROM memory_events
103
+ WHERE project = ? AND created_at >= ?
104
+ GROUP BY hour ORDER BY hour
105
+ `).all(project, since);
106
+ const hourMap = new Map(rows.map(r => [r.hour, r.c]));
107
+ const maxCount = Math.max(...rows.map(r => r.c), 1);
108
+ const barWidth = 25;
109
+ for (let h = 0; h < 24; h++) {
110
+ const count = hourMap.get(h) || 0;
111
+ const barLen = Math.round((count / maxCount) * barWidth);
112
+ const bar = '█'.repeat(barLen);
113
+ const label = h.toString().padStart(2, '0') + ':00';
114
+ lines.push(` ${label} ${bar} ${count}`);
115
+ }
116
+ return lines.join('\n');
117
+ }
118
+ function renderFullDashboard(project) {
119
+ const sections = [
120
+ renderActivityChart(project, 14),
121
+ '',
122
+ renderTypeDistribution(project),
123
+ '',
124
+ renderImportanceChart(project),
125
+ ];
126
+ return sections.join('\n');
127
+ }
128
+ //# sourceMappingURL=memory-charts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-charts.js","sourceRoot":"","sources":["../../../../src/walls/06-memory/stores/memory-charts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ export interface MemoryInsight {
2
+ type: 'trend' | 'risk' | 'pattern' | 'recommendation' | 'milestone';
3
+ severity: 'info' | 'warning' | 'critical';
4
+ title: string;
5
+ description: string;
6
+ evidence: string[];
7
+ confidence: number;
8
+ category: string;
9
+ createdAt: string;
10
+ }
11
+ export interface TrendData {
12
+ period: string;
13
+ eventCount: number;
14
+ avgImportance: number;
15
+ topType: string;
16
+ errorRate: number;
17
+ decisionRate: number;
18
+ }
19
+ export declare function generateMemoryInsights(project: string, days?: number): MemoryInsight[];
20
+ export declare function getInsightSummary(project: string, days?: number): {
21
+ total: number;
22
+ byType: Record<string, number>;
23
+ bySeverity: Record<string, number>;
24
+ topInsights: MemoryInsight[];
25
+ };
26
+ //# sourceMappingURL=memory-insights.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-insights.d.ts","sourceRoot":"","sources":["../../../../src/walls/06-memory/stores/memory-insights.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,gBAAgB,GAAG,WAAW,CAAC;IACpE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAW,GAAG,aAAa,EAAE,CAsE1F;AA2JD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAW,GAAG;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,WAAW,EAAE,aAAa,EAAE,CAAC;CAC9B,CAgBA"}
@@ -0,0 +1,218 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateMemoryInsights = generateMemoryInsights;
4
+ exports.getInsightSummary = getInsightSummary;
5
+ const database_1 = require("../database/database");
6
+ function generateMemoryInsights(project, days = 30) {
7
+ const db = (0, database_1.getDb)();
8
+ const insights = [];
9
+ const since = new Date(Date.now() - days * 86400000).toISOString();
10
+ // 1. Trend Analysis — is activity increasing or decreasing?
11
+ const trends = analyzeTrends(project, days);
12
+ if (trends.length >= 2) {
13
+ const recent = trends[trends.length - 1];
14
+ const prev = trends[trends.length - 2];
15
+ if (recent.eventCount > prev.eventCount * 1.5) {
16
+ insights.push({
17
+ type: 'trend',
18
+ severity: 'info',
19
+ title: 'Activity spike detected',
20
+ description: `Activity increased ${Math.round((recent.eventCount / prev.eventCount - 1) * 100)}% from ${prev.period} to ${recent.period}`,
21
+ evidence: [`${prev.period}: ${prev.eventCount} events`, `${recent.period}: ${recent.eventCount} events`],
22
+ confidence: 0.8,
23
+ category: 'productivity',
24
+ createdAt: new Date().toISOString(),
25
+ });
26
+ }
27
+ else if (recent.eventCount < prev.eventCount * 0.5 && prev.eventCount > 5) {
28
+ insights.push({
29
+ type: 'trend',
30
+ severity: 'warning',
31
+ title: 'Activity drop detected',
32
+ description: `Activity dropped ${Math.round((1 - recent.eventCount / prev.eventCount) * 100)}% — possible blocker or context switch`,
33
+ evidence: [`${prev.period}: ${prev.eventCount} events`, `${recent.period}: ${recent.eventCount} events`],
34
+ confidence: 0.7,
35
+ category: 'productivity',
36
+ createdAt: new Date().toISOString(),
37
+ });
38
+ }
39
+ }
40
+ // 2. Error Pattern — repeated errors in same area
41
+ const errorPattern = detectErrorPatterns(project, since);
42
+ if (errorPattern)
43
+ insights.push(errorPattern);
44
+ // 3. Decision Velocity — are decisions being made?
45
+ const decisionInsight = analyzeDecisionVelocity(project, since);
46
+ if (decisionInsight)
47
+ insights.push(decisionInsight);
48
+ // 4. File Risk — files with too many events (hotspot)
49
+ const hotspots = detectHotspots(project, since);
50
+ insights.push(...hotspots);
51
+ // 5. Milestone — total events milestone
52
+ const totalRow = db.prepare('SELECT COUNT(*) as c FROM memory_events WHERE project = ?').get(project);
53
+ if (totalRow.c > 0 && totalRow.c % 100 === 0) {
54
+ insights.push({
55
+ type: 'milestone',
56
+ severity: 'info',
57
+ title: `Memory milestone: ${totalRow.c} events`,
58
+ description: `Project "${project}" has accumulated ${totalRow.c} memory events`,
59
+ evidence: [`${totalRow.c} total events`],
60
+ confidence: 1.0,
61
+ category: 'growth',
62
+ createdAt: new Date().toISOString(),
63
+ });
64
+ }
65
+ // 6. Style Consistency — check if verification commands are being used
66
+ const styleInsight = analyzeStyleConsistency(project);
67
+ if (styleInsight)
68
+ insights.push(styleInsight);
69
+ return insights.sort((a, b) => {
70
+ const sevOrder = { critical: 0, warning: 1, info: 2 };
71
+ return sevOrder[a.severity] - sevOrder[b.severity];
72
+ });
73
+ }
74
+ function analyzeTrends(project, days) {
75
+ const db = (0, database_1.getDb)();
76
+ const weeks = Math.ceil(days / 7);
77
+ const trends = [];
78
+ for (let w = weeks - 1; w >= 0; w--) {
79
+ const weekStart = new Date(Date.now() - (w + 1) * 7 * 86400000);
80
+ const weekEnd = new Date(Date.now() - w * 7 * 86400000);
81
+ const startStr = weekStart.toISOString().slice(0, 10);
82
+ const endStr = weekEnd.toISOString().slice(0, 10);
83
+ const row = db.prepare(`
84
+ SELECT COUNT(*) as c, AVG(importance) as avg_imp,
85
+ SUM(CASE WHEN type = 'error' THEN 1 ELSE 0 END) as errors,
86
+ SUM(CASE WHEN type = 'decision' THEN 1 ELSE 0 END) as decisions
87
+ FROM memory_events
88
+ WHERE project = ? AND date(created_at) BETWEEN date(?) AND date(?)
89
+ `).get(project, startStr, endStr);
90
+ const topTypeRow = db.prepare(`
91
+ SELECT type, COUNT(*) as c FROM memory_events
92
+ WHERE project = ? AND date(created_at) BETWEEN date(?) AND date(?)
93
+ GROUP BY type ORDER BY c DESC LIMIT 1
94
+ `).get(project, startStr, endStr);
95
+ trends.push({
96
+ period: `${startStr}_to_${endStr}`,
97
+ eventCount: row.c,
98
+ avgImportance: Math.round((row.avg_imp || 0) * 10) / 10,
99
+ topType: topTypeRow?.type || 'none',
100
+ errorRate: row.c > 0 ? Math.round(row.errors / row.c * 100) : 0,
101
+ decisionRate: row.c > 0 ? Math.round(row.decisions / row.c * 100) : 0,
102
+ });
103
+ }
104
+ return trends;
105
+ }
106
+ function detectErrorPatterns(project, since) {
107
+ const db = (0, database_1.getDb)();
108
+ const errors = db.prepare(`
109
+ SELECT summary, topic, COUNT(*) as c FROM memory_events
110
+ WHERE project = ? AND type = 'error' AND created_at >= ?
111
+ GROUP BY summary HAVING c >= 2
112
+ ORDER BY c DESC LIMIT 5
113
+ `).all(project, since);
114
+ if (errors.length === 0)
115
+ return null;
116
+ return {
117
+ type: 'risk',
118
+ severity: 'warning',
119
+ title: 'Repeated error patterns detected',
120
+ description: `${errors.length} error pattern(s) occurred multiple times — may need systematic fix`,
121
+ evidence: errors.map(e => `${e.c}x: ${e.summary}`),
122
+ confidence: 0.85,
123
+ category: 'quality',
124
+ createdAt: new Date().toISOString(),
125
+ };
126
+ }
127
+ function analyzeDecisionVelocity(project, since) {
128
+ const db = (0, database_1.getDb)();
129
+ const row = db.prepare(`
130
+ SELECT COUNT(*) as c FROM memory_events
131
+ WHERE project = ? AND type = 'decision' AND created_at >= ?
132
+ `).get(project, since);
133
+ const totalRow = db.prepare(`
134
+ SELECT COUNT(*) as c FROM memory_events
135
+ WHERE project = ? AND created_at >= ?
136
+ `).get(project, since);
137
+ if (totalRow.c < 10)
138
+ return null;
139
+ const decisionRate = totalRow.c > 0 ? row.c / totalRow.c : 0;
140
+ if (decisionRate < 0.05 && totalRow.c > 20) {
141
+ return {
142
+ type: 'recommendation',
143
+ severity: 'info',
144
+ title: 'Low decision logging',
145
+ description: `Only ${Math.round(decisionRate * 100)}% of events are decisions — consider logging more decisions for better memory`,
146
+ evidence: [`${row.c} decisions out of ${totalRow.c} events`],
147
+ confidence: 0.6,
148
+ category: 'process',
149
+ createdAt: new Date().toISOString(),
150
+ };
151
+ }
152
+ return null;
153
+ }
154
+ function detectHotspots(project, since) {
155
+ const db = (0, database_1.getDb)();
156
+ const insights = [];
157
+ const hotspots = db.prepare(`
158
+ SELECT files_json, COUNT(*) as c, AVG(importance) as avg_imp
159
+ FROM memory_events
160
+ WHERE project = ? AND files_json IS NOT NULL AND created_at >= ?
161
+ GROUP BY files_json
162
+ HAVING c >= 3
163
+ ORDER BY c DESC LIMIT 3
164
+ `).all(project, since);
165
+ for (const hs of hotspots) {
166
+ try {
167
+ const files = JSON.parse(hs.files_json);
168
+ if (files.length > 0) {
169
+ insights.push({
170
+ type: 'risk',
171
+ severity: hs.avg_imp >= 7 ? 'warning' : 'info',
172
+ title: `Hotspot: ${files[0]}`,
173
+ description: `File touched ${hs.c} times with avg importance ${Math.round(hs.avg_imp * 10) / 10} — may need refactoring`,
174
+ evidence: [`${hs.c} events`, `Avg importance: ${hs.avg_imp}`],
175
+ confidence: 0.7,
176
+ category: 'code-health',
177
+ createdAt: new Date().toISOString(),
178
+ });
179
+ }
180
+ }
181
+ catch { }
182
+ }
183
+ return insights;
184
+ }
185
+ function analyzeStyleConsistency(project) {
186
+ const db = (0, database_1.getDb)();
187
+ const editCount = db.prepare("SELECT COUNT(*) as c FROM memory_events WHERE project = ? AND type = 'edit'").get(project);
188
+ const verificationCount = db.prepare("SELECT COUNT(*) as c FROM memory_events WHERE project = ? AND type = 'verification'").get(project);
189
+ if (editCount.c > 10 && verificationCount.c === 0) {
190
+ return {
191
+ type: 'recommendation',
192
+ severity: 'warning',
193
+ title: 'No verification events logged',
194
+ description: `${editCount.c} edits but no verifications — consider logging test/lint runs`,
195
+ evidence: [`${editCount.c} edits, 0 verifications`],
196
+ confidence: 0.6,
197
+ category: 'quality',
198
+ createdAt: new Date().toISOString(),
199
+ };
200
+ }
201
+ return null;
202
+ }
203
+ function getInsightSummary(project, days = 30) {
204
+ const insights = generateMemoryInsights(project, days);
205
+ const byType = {};
206
+ const bySeverity = {};
207
+ for (const i of insights) {
208
+ byType[i.type] = (byType[i.type] || 0) + 1;
209
+ bySeverity[i.severity] = (bySeverity[i.severity] || 0) + 1;
210
+ }
211
+ return {
212
+ total: insights.length,
213
+ byType,
214
+ bySeverity,
215
+ topInsights: insights.slice(0, 5),
216
+ };
217
+ }
218
+ //# sourceMappingURL=memory-insights.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-insights.js","sourceRoot":"","sources":["../../../../src/walls/06-memory/stores/memory-insights.ts"],"names":[],"mappings":"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"}