fivocell 4.5.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.
- package/dist/__tests__/context-ranker.test.d.ts +2 -0
- package/dist/__tests__/context-ranker.test.d.ts.map +1 -0
- package/dist/__tests__/context-ranker.test.js +61 -0
- package/dist/__tests__/context-ranker.test.js.map +1 -0
- package/dist/__tests__/cross-project-memory.test.d.ts +2 -0
- package/dist/__tests__/cross-project-memory.test.d.ts.map +1 -0
- package/dist/__tests__/cross-project-memory.test.js +105 -0
- package/dist/__tests__/cross-project-memory.test.js.map +1 -0
- package/dist/__tests__/memory-charts.test.d.ts +2 -0
- package/dist/__tests__/memory-charts.test.d.ts.map +1 -0
- package/dist/__tests__/memory-charts.test.js +52 -0
- package/dist/__tests__/memory-charts.test.js.map +1 -0
- package/dist/__tests__/memory-compact.test.d.ts +2 -0
- package/dist/__tests__/memory-compact.test.d.ts.map +1 -0
- package/dist/__tests__/memory-compact.test.js +43 -0
- package/dist/__tests__/memory-compact.test.js.map +1 -0
- package/dist/__tests__/memory-insights.test.d.ts +2 -0
- package/dist/__tests__/memory-insights.test.d.ts.map +1 -0
- package/dist/__tests__/memory-insights.test.js +71 -0
- package/dist/__tests__/memory-insights.test.js.map +1 -0
- package/dist/__tests__/summary-generator.test.d.ts +2 -0
- package/dist/__tests__/summary-generator.test.d.ts.map +1 -0
- package/dist/__tests__/summary-generator.test.js +53 -0
- package/dist/__tests__/summary-generator.test.js.map +1 -0
- package/dist/walls/01-context/context/prompt-builder.d.ts +7 -0
- package/dist/walls/01-context/context/prompt-builder.d.ts.map +1 -1
- package/dist/walls/01-context/context/prompt-builder.js +29 -0
- package/dist/walls/01-context/context/prompt-builder.js.map +1 -1
- package/dist/walls/06-memory/archive/memory-compact.d.ts +17 -0
- package/dist/walls/06-memory/archive/memory-compact.d.ts.map +1 -0
- package/dist/walls/06-memory/archive/memory-compact.js +128 -0
- package/dist/walls/06-memory/archive/memory-compact.js.map +1 -0
- package/dist/walls/06-memory/database/database.d.ts.map +1 -1
- package/dist/walls/06-memory/database/database.js +16 -1
- package/dist/walls/06-memory/database/database.js.map +1 -1
- package/dist/walls/06-memory/stores/context-ranker.d.ts +21 -0
- package/dist/walls/06-memory/stores/context-ranker.d.ts.map +1 -0
- package/dist/walls/06-memory/stores/context-ranker.js +84 -0
- package/dist/walls/06-memory/stores/context-ranker.js.map +1 -0
- package/dist/walls/06-memory/stores/cross-project-memory.d.ts +53 -0
- package/dist/walls/06-memory/stores/cross-project-memory.d.ts.map +1 -0
- package/dist/walls/06-memory/stores/cross-project-memory.js +200 -0
- package/dist/walls/06-memory/stores/cross-project-memory.js.map +1 -0
- package/dist/walls/06-memory/stores/memory-charts.d.ts +14 -0
- package/dist/walls/06-memory/stores/memory-charts.d.ts.map +1 -0
- package/dist/walls/06-memory/stores/memory-charts.js +128 -0
- package/dist/walls/06-memory/stores/memory-charts.js.map +1 -0
- package/dist/walls/06-memory/stores/memory-insights.d.ts +26 -0
- package/dist/walls/06-memory/stores/memory-insights.d.ts.map +1 -0
- package/dist/walls/06-memory/stores/memory-insights.js +218 -0
- package/dist/walls/06-memory/stores/memory-insights.js.map +1 -0
- package/dist/walls/06-memory/stores/summary-generator.d.ts +16 -0
- package/dist/walls/06-memory/stores/summary-generator.d.ts.map +1 -0
- package/dist/walls/06-memory/stores/summary-generator.js +151 -0
- package/dist/walls/06-memory/stores/summary-generator.js.map +1 -0
- package/dist/walls/07-runtime/cli/cli.js +268 -0
- package/dist/walls/07-runtime/cli/cli.js.map +1 -1
- package/dist/walls/07-runtime/daemon/server.d.ts.map +1 -1
- package/dist/walls/07-runtime/daemon/server.js +156 -0
- package/dist/walls/07-runtime/daemon/server.js.map +1 -1
- package/dist/walls/07-runtime/watcher/live-watcher.d.ts.map +1 -1
- package/dist/walls/07-runtime/watcher/live-watcher.js +32 -0
- package/dist/walls/07-runtime/watcher/live-watcher.js.map +1 -1
- package/package.json +1 -1
|
@@ -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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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface DailySummary {
|
|
2
|
+
date: string;
|
|
3
|
+
project: string;
|
|
4
|
+
totalEvents: number;
|
|
5
|
+
byType: Record<string, number>;
|
|
6
|
+
topTopics: string[];
|
|
7
|
+
keyDecisions: string[];
|
|
8
|
+
errors: string[];
|
|
9
|
+
filesChanged: string[];
|
|
10
|
+
importance: number;
|
|
11
|
+
}
|
|
12
|
+
export declare function generateDailySummary(project: string, date?: string): DailySummary;
|
|
13
|
+
export declare function saveDailySummary(project: string, projectDir: string, date?: string): string;
|
|
14
|
+
export declare function generateWeeklySummary(project: string, projectDir: string): DailySummary;
|
|
15
|
+
export declare function saveWeeklySummary(project: string, projectDir: string): string;
|
|
16
|
+
//# sourceMappingURL=summary-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summary-generator.d.ts","sourceRoot":"","sources":["../../../../src/walls/06-memory/stores/summary-generator.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,YAAY,CAoDjF;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ3F;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,CAgDvF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAQ7E"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.generateDailySummary = generateDailySummary;
|
|
37
|
+
exports.saveDailySummary = saveDailySummary;
|
|
38
|
+
exports.generateWeeklySummary = generateWeeklySummary;
|
|
39
|
+
exports.saveWeeklySummary = saveWeeklySummary;
|
|
40
|
+
const fs = __importStar(require("fs"));
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
const database_1 = require("../database/database");
|
|
43
|
+
function generateDailySummary(project, date) {
|
|
44
|
+
const targetDate = date || new Date().toISOString().slice(0, 10);
|
|
45
|
+
const db = (0, database_1.getDb)();
|
|
46
|
+
const rows = db.prepare(`SELECT type, topic, summary, importance, files_json FROM memory_events
|
|
47
|
+
WHERE project = ? AND date(created_at) = date(?)
|
|
48
|
+
ORDER BY importance DESC`).all(project, targetDate);
|
|
49
|
+
const byType = {};
|
|
50
|
+
const topicCounts = {};
|
|
51
|
+
const keyDecisions = [];
|
|
52
|
+
const errors = [];
|
|
53
|
+
const filesSet = new Set();
|
|
54
|
+
let totalImportance = 0;
|
|
55
|
+
for (const row of rows) {
|
|
56
|
+
byType[row.type] = (byType[row.type] || 0) + 1;
|
|
57
|
+
if (row.topic)
|
|
58
|
+
topicCounts[row.topic] = (topicCounts[row.topic] || 0) + 1;
|
|
59
|
+
totalImportance += row.importance;
|
|
60
|
+
if (row.type === 'decision')
|
|
61
|
+
keyDecisions.push(row.summary);
|
|
62
|
+
if (row.type === 'error')
|
|
63
|
+
errors.push(row.summary);
|
|
64
|
+
if (row.files_json) {
|
|
65
|
+
try {
|
|
66
|
+
const files = JSON.parse(row.files_json);
|
|
67
|
+
files.forEach(f => filesSet.add(f));
|
|
68
|
+
}
|
|
69
|
+
catch { }
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
const topTopics = Object.entries(topicCounts)
|
|
73
|
+
.sort((a, b) => b[1] - a[1])
|
|
74
|
+
.slice(0, 5)
|
|
75
|
+
.map(([t]) => t);
|
|
76
|
+
return {
|
|
77
|
+
date: targetDate,
|
|
78
|
+
project,
|
|
79
|
+
totalEvents: rows.length,
|
|
80
|
+
byType,
|
|
81
|
+
topTopics,
|
|
82
|
+
keyDecisions,
|
|
83
|
+
errors,
|
|
84
|
+
filesChanged: Array.from(filesSet).slice(0, 20),
|
|
85
|
+
importance: rows.length > 0 ? Math.round(totalImportance / rows.length * 10) / 10 : 0,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
function saveDailySummary(project, projectDir, date) {
|
|
89
|
+
const summary = generateDailySummary(project, date);
|
|
90
|
+
const summaryDir = path.join(projectDir, '.cell', 'memory', 'summaries', 'daily');
|
|
91
|
+
if (!fs.existsSync(summaryDir))
|
|
92
|
+
fs.mkdirSync(summaryDir, { recursive: true });
|
|
93
|
+
const filePath = path.join(summaryDir, `${summary.date}.json`);
|
|
94
|
+
fs.writeFileSync(filePath, JSON.stringify(summary, null, 2));
|
|
95
|
+
return filePath;
|
|
96
|
+
}
|
|
97
|
+
function generateWeeklySummary(project, projectDir) {
|
|
98
|
+
const db = (0, database_1.getDb)();
|
|
99
|
+
const end = new Date();
|
|
100
|
+
const start = new Date(end.getTime() - 7 * 86400000);
|
|
101
|
+
const rows = db.prepare(`SELECT type, topic, summary, importance, files_json, created_at FROM memory_events
|
|
102
|
+
WHERE project = ? AND date(created_at) >= date(?)
|
|
103
|
+
ORDER BY importance DESC`).all(project, start.toISOString().slice(0, 10));
|
|
104
|
+
const byType = {};
|
|
105
|
+
const topicCounts = {};
|
|
106
|
+
const keyDecisions = [];
|
|
107
|
+
const errors = [];
|
|
108
|
+
const filesSet = new Set();
|
|
109
|
+
let totalImportance = 0;
|
|
110
|
+
for (const row of rows) {
|
|
111
|
+
byType[row.type] = (byType[row.type] || 0) + 1;
|
|
112
|
+
if (row.topic)
|
|
113
|
+
topicCounts[row.topic] = (topicCounts[row.topic] || 0) + 1;
|
|
114
|
+
totalImportance += row.importance;
|
|
115
|
+
if (row.type === 'decision')
|
|
116
|
+
keyDecisions.push(row.summary);
|
|
117
|
+
if (row.type === 'error')
|
|
118
|
+
errors.push(row.summary);
|
|
119
|
+
if (row.files_json) {
|
|
120
|
+
try {
|
|
121
|
+
JSON.parse(row.files_json).forEach(f => filesSet.add(f));
|
|
122
|
+
}
|
|
123
|
+
catch { }
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
const topTopics = Object.entries(topicCounts)
|
|
127
|
+
.sort((a, b) => b[1] - a[1])
|
|
128
|
+
.slice(0, 10)
|
|
129
|
+
.map(([t]) => t);
|
|
130
|
+
return {
|
|
131
|
+
date: `${start.toISOString().slice(0, 10)}_to_${end.toISOString().slice(0, 10)}`,
|
|
132
|
+
project,
|
|
133
|
+
totalEvents: rows.length,
|
|
134
|
+
byType,
|
|
135
|
+
topTopics,
|
|
136
|
+
keyDecisions: keyDecisions.slice(0, 10),
|
|
137
|
+
errors: errors.slice(0, 10),
|
|
138
|
+
filesChanged: Array.from(filesSet).slice(0, 50),
|
|
139
|
+
importance: rows.length > 0 ? Math.round(totalImportance / rows.length * 10) / 10 : 0,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
function saveWeeklySummary(project, projectDir) {
|
|
143
|
+
const summary = generateWeeklySummary(project, projectDir);
|
|
144
|
+
const summaryDir = path.join(projectDir, '.cell', 'memory', 'summaries', 'weekly');
|
|
145
|
+
if (!fs.existsSync(summaryDir))
|
|
146
|
+
fs.mkdirSync(summaryDir, { recursive: true });
|
|
147
|
+
const filePath = path.join(summaryDir, `${summary.date}.json`);
|
|
148
|
+
fs.writeFileSync(filePath, JSON.stringify(summary, null, 2));
|
|
149
|
+
return filePath;
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=summary-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summary-generator.js","sourceRoot":"","sources":["../../../../src/walls/06-memory/stores/summary-generator.ts"],"names":[],"mappings":"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"}
|