fivocell 4.4.1 → 4.6.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__/handoff-store.test.d.ts +2 -0
- package/dist/__tests__/handoff-store.test.d.ts.map +1 -0
- package/dist/__tests__/handoff-store.test.js +151 -0
- package/dist/__tests__/handoff-store.test.js.map +1 -0
- package/dist/__tests__/memory-archive.test.d.ts +2 -0
- package/dist/__tests__/memory-archive.test.d.ts.map +1 -0
- package/dist/__tests__/memory-archive.test.js +114 -0
- package/dist/__tests__/memory-archive.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-event-store.test.d.ts +2 -0
- package/dist/__tests__/memory-event-store.test.d.ts.map +1 -0
- package/dist/__tests__/memory-event-store.test.js +101 -0
- package/dist/__tests__/memory-event-store.test.js.map +1 -0
- package/dist/__tests__/redactor.test.d.ts +2 -0
- package/dist/__tests__/redactor.test.d.ts.map +1 -0
- package/dist/__tests__/redactor.test.js +89 -0
- package/dist/__tests__/redactor.test.js.map +1 -0
- package/dist/__tests__/style-memory.test.d.ts +2 -0
- package/dist/__tests__/style-memory.test.d.ts.map +1 -0
- package/dist/__tests__/style-memory.test.js +134 -0
- package/dist/__tests__/style-memory.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-archive.d.ts +20 -0
- package/dist/walls/06-memory/archive/memory-archive.d.ts.map +1 -0
- package/dist/walls/06-memory/archive/memory-archive.js +201 -0
- package/dist/walls/06-memory/archive/memory-archive.js.map +1 -0
- 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 +100 -0
- package/dist/walls/06-memory/database/database.js.map +1 -1
- package/dist/walls/06-memory/handoff/handoff-store.d.ts +31 -0
- package/dist/walls/06-memory/handoff/handoff-store.d.ts.map +1 -0
- package/dist/walls/06-memory/handoff/handoff-store.js +203 -0
- package/dist/walls/06-memory/handoff/handoff-store.js.map +1 -0
- package/dist/walls/06-memory/privacy/redactor.d.ts +14 -0
- package/dist/walls/06-memory/privacy/redactor.d.ts.map +1 -0
- package/dist/walls/06-memory/privacy/redactor.js +110 -0
- package/dist/walls/06-memory/privacy/redactor.js.map +1 -0
- 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/memory-event-store.d.ts +43 -0
- package/dist/walls/06-memory/stores/memory-event-store.d.ts.map +1 -0
- package/dist/walls/06-memory/stores/memory-event-store.js +139 -0
- package/dist/walls/06-memory/stores/memory-event-store.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/06-memory/style/style-memory.d.ts +39 -0
- package/dist/walls/06-memory/style/style-memory.d.ts.map +1 -0
- package/dist/walls/06-memory/style/style-memory.js +186 -0
- package/dist/walls/06-memory/style/style-memory.js.map +1 -0
- package/dist/walls/07-runtime/cli/cli.js +350 -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 +99 -0
- package/dist/walls/07-runtime/daemon/server.js.map +1 -1
- package/dist/walls/07-runtime/setup/setup.d.ts.map +1 -1
- package/dist/walls/07-runtime/setup/setup.js +35 -0
- package/dist/walls/07-runtime/setup/setup.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,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.recordMemoryEvent = recordMemoryEvent;
|
|
4
|
+
exports.recordMemoryEvents = recordMemoryEvents;
|
|
5
|
+
exports.getMemoryEvents = getMemoryEvents;
|
|
6
|
+
exports.searchMemoryEvents = searchMemoryEvents;
|
|
7
|
+
exports.getMemoryTimeline = getMemoryTimeline;
|
|
8
|
+
exports.getMemoryStats = getMemoryStats;
|
|
9
|
+
exports.deleteMemoryEventsOlderThan = deleteMemoryEventsOlderThan;
|
|
10
|
+
const database_1 = require("../database/database");
|
|
11
|
+
function recordMemoryEvent(event) {
|
|
12
|
+
const db = (0, database_1.getDb)();
|
|
13
|
+
const stmt = db.prepare(`
|
|
14
|
+
INSERT INTO memory_events (project, branch, type, topic, summary, details_json, files_json, importance, tool, model, tags_json)
|
|
15
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
16
|
+
`);
|
|
17
|
+
const result = stmt.run(event.project, event.branch || null, event.type, event.topic || null, event.summary, event.details ? JSON.stringify(event.details) : null, event.files ? JSON.stringify(event.files) : null, event.importance || getImportanceForType(event.type), event.tool || null, event.model || null, event.tags ? JSON.stringify(event.tags) : null);
|
|
18
|
+
return Number(result.lastInsertRowid);
|
|
19
|
+
}
|
|
20
|
+
function recordMemoryEvents(events) {
|
|
21
|
+
const db = (0, database_1.getDb)();
|
|
22
|
+
const ids = [];
|
|
23
|
+
const tx = db.transaction(() => {
|
|
24
|
+
for (const event of events) {
|
|
25
|
+
ids.push(recordMemoryEvent(event));
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
tx();
|
|
29
|
+
return ids;
|
|
30
|
+
}
|
|
31
|
+
function getMemoryEvents(opts = {}) {
|
|
32
|
+
const db = (0, database_1.getDb)();
|
|
33
|
+
const conditions = [];
|
|
34
|
+
const params = [];
|
|
35
|
+
if (opts.project) {
|
|
36
|
+
conditions.push('project = ?');
|
|
37
|
+
params.push(opts.project);
|
|
38
|
+
}
|
|
39
|
+
if (opts.type) {
|
|
40
|
+
conditions.push('type = ?');
|
|
41
|
+
params.push(opts.type);
|
|
42
|
+
}
|
|
43
|
+
if (opts.topic) {
|
|
44
|
+
conditions.push('topic LIKE ?');
|
|
45
|
+
params.push(`%${opts.topic}%`);
|
|
46
|
+
}
|
|
47
|
+
if (opts.branch) {
|
|
48
|
+
conditions.push('branch = ?');
|
|
49
|
+
params.push(opts.branch);
|
|
50
|
+
}
|
|
51
|
+
if (opts.since) {
|
|
52
|
+
conditions.push('created_at >= ?');
|
|
53
|
+
params.push(opts.since);
|
|
54
|
+
}
|
|
55
|
+
if (opts.minImportance !== undefined) {
|
|
56
|
+
conditions.push('importance >= ?');
|
|
57
|
+
params.push(opts.minImportance);
|
|
58
|
+
}
|
|
59
|
+
const where = conditions.length > 0 ? 'WHERE ' + conditions.join(' AND ') : '';
|
|
60
|
+
const limit = opts.limit || 50;
|
|
61
|
+
return db.prepare(`SELECT * FROM memory_events ${where} ORDER BY created_at DESC LIMIT ?`).all(...params, limit);
|
|
62
|
+
}
|
|
63
|
+
function searchMemoryEvents(query, project, limit = 20) {
|
|
64
|
+
const db = (0, database_1.getDb)();
|
|
65
|
+
const conditions = ['(summary LIKE ? OR topic LIKE ? OR details_json LIKE ? OR tags_json LIKE ?)'];
|
|
66
|
+
const params = [`%${query}%`, `%${query}%`, `%${query}%`, `%${query}%`];
|
|
67
|
+
if (project) {
|
|
68
|
+
conditions.push('project = ?');
|
|
69
|
+
params.push(project);
|
|
70
|
+
}
|
|
71
|
+
const where = 'WHERE ' + conditions.join(' AND ');
|
|
72
|
+
return db.prepare(`SELECT * FROM memory_events ${where} ORDER BY importance DESC, created_at DESC LIMIT ?`).all(...params, limit);
|
|
73
|
+
}
|
|
74
|
+
function getMemoryTimeline(project, days = 30) {
|
|
75
|
+
const db = (0, database_1.getDb)();
|
|
76
|
+
const since = new Date(Date.now() - days * 86400000).toISOString();
|
|
77
|
+
const conditions = ['created_at >= ?'];
|
|
78
|
+
const params = [since];
|
|
79
|
+
if (project) {
|
|
80
|
+
conditions.push('project = ?');
|
|
81
|
+
params.push(project);
|
|
82
|
+
}
|
|
83
|
+
const rows = db.prepare(`SELECT date(created_at) as date, type FROM memory_events WHERE ${conditions.join(' AND ')} ORDER BY date`).all(...params);
|
|
84
|
+
const timeline = {};
|
|
85
|
+
for (const row of rows) {
|
|
86
|
+
if (!timeline[row.date])
|
|
87
|
+
timeline[row.date] = { count: 0, types: {} };
|
|
88
|
+
timeline[row.date].count++;
|
|
89
|
+
timeline[row.date].types[row.type] = (timeline[row.date].types[row.type] || 0) + 1;
|
|
90
|
+
}
|
|
91
|
+
return Object.entries(timeline).map(([date, data]) => ({ date, ...data }));
|
|
92
|
+
}
|
|
93
|
+
function getMemoryStats(project) {
|
|
94
|
+
const db = (0, database_1.getDb)();
|
|
95
|
+
const where = project ? 'WHERE project = ?' : '';
|
|
96
|
+
const params = project ? [project] : [];
|
|
97
|
+
const totalRow = db.prepare(`SELECT COUNT(*) as c FROM memory_events ${where}`).get(...params);
|
|
98
|
+
const avgRow = db.prepare(`SELECT AVG(importance) as a FROM memory_events ${where}`).get(...params);
|
|
99
|
+
const oldestRow = db.prepare(`SELECT MIN(created_at) as o FROM memory_events ${where}`).get(...params);
|
|
100
|
+
const newestRow = db.prepare(`SELECT MAX(created_at) as n FROM memory_events ${where}`).get(...params);
|
|
101
|
+
const typeRows = db.prepare(`SELECT type, COUNT(*) as c FROM memory_events ${where} GROUP BY type`).all(...params);
|
|
102
|
+
const byType = {};
|
|
103
|
+
for (const row of typeRows)
|
|
104
|
+
byType[row.type] = row.c;
|
|
105
|
+
return {
|
|
106
|
+
total: totalRow.c,
|
|
107
|
+
byType,
|
|
108
|
+
avgImportance: Math.round((avgRow.a || 0) * 10) / 10,
|
|
109
|
+
oldestEvent: oldestRow.o,
|
|
110
|
+
newestEvent: newestRow.n,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
function deleteMemoryEventsOlderThan(days) {
|
|
114
|
+
const db = (0, database_1.getDb)();
|
|
115
|
+
const cutoff = new Date(Date.now() - days * 86400000).toISOString();
|
|
116
|
+
const result = db.prepare('DELETE FROM memory_events WHERE created_at < ? AND importance < 5').run(cutoff);
|
|
117
|
+
return result.changes;
|
|
118
|
+
}
|
|
119
|
+
function getImportanceForType(type) {
|
|
120
|
+
const map = {
|
|
121
|
+
file_event: 1,
|
|
122
|
+
edit: 3,
|
|
123
|
+
decision: 8,
|
|
124
|
+
error: 7,
|
|
125
|
+
fix: 8,
|
|
126
|
+
verification: 6,
|
|
127
|
+
publish: 7,
|
|
128
|
+
handoff: 5,
|
|
129
|
+
pattern: 9,
|
|
130
|
+
style: 8,
|
|
131
|
+
session: 5,
|
|
132
|
+
branch: 5,
|
|
133
|
+
risk: 6,
|
|
134
|
+
question: 4,
|
|
135
|
+
ai_work: 6,
|
|
136
|
+
};
|
|
137
|
+
return map[type] || 3;
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=memory-event-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-event-store.js","sourceRoot":"","sources":["../../../../src/walls/06-memory/stores/memory-event-store.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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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export interface DeveloperStyle {
|
|
2
|
+
communication: string;
|
|
3
|
+
coding: string;
|
|
4
|
+
verification: string[];
|
|
5
|
+
privacy: string[];
|
|
6
|
+
product_rules: string[];
|
|
7
|
+
language_preference?: string;
|
|
8
|
+
timezone?: string;
|
|
9
|
+
work_hours?: string;
|
|
10
|
+
preferences: Record<string, string>;
|
|
11
|
+
}
|
|
12
|
+
export interface ProjectStyle {
|
|
13
|
+
architecture: string;
|
|
14
|
+
naming: string;
|
|
15
|
+
testing: string;
|
|
16
|
+
stack: string[];
|
|
17
|
+
conventions: string[];
|
|
18
|
+
entry_points: string[];
|
|
19
|
+
module_system: string;
|
|
20
|
+
}
|
|
21
|
+
export interface StyleProfile {
|
|
22
|
+
project: string;
|
|
23
|
+
developer: DeveloperStyle;
|
|
24
|
+
project_style: ProjectStyle;
|
|
25
|
+
updated_at: string;
|
|
26
|
+
}
|
|
27
|
+
export declare function loadDeveloperStyle(projectDir: string): DeveloperStyle;
|
|
28
|
+
export declare function saveDeveloperStyle(projectDir: string, style: DeveloperStyle): void;
|
|
29
|
+
export declare function loadProjectStyle(projectDir: string): ProjectStyle;
|
|
30
|
+
export declare function saveProjectStyle(projectDir: string, style: ProjectStyle): void;
|
|
31
|
+
export declare function loadCommunication(projectDir: string): string;
|
|
32
|
+
export declare function saveCommunication(projectDir: string, content: string): void;
|
|
33
|
+
export declare function getStyleProfile(projectDir: string): StyleProfile;
|
|
34
|
+
export declare function updateDeveloperPreference(projectDir: string, key: string, value: string): void;
|
|
35
|
+
export declare function addVerificationCommand(projectDir: string, command: string): void;
|
|
36
|
+
export declare function addProductRule(projectDir: string, rule: string): void;
|
|
37
|
+
export declare function addProjectConvention(projectDir: string, convention: string): void;
|
|
38
|
+
export declare function initDefaultStyle(projectDir: string): void;
|
|
39
|
+
//# sourceMappingURL=style-memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style-memory.d.ts","sourceRoot":"","sources":["../../../../src/walls/06-memory/style/style-memory.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,cAAc,CAAC;IAC1B,aAAa,EAAE,YAAY,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB;AA8CD,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,CAQrE;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI,CAWlF;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAQjE;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAU9E;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAI5D;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAG3E;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAOhE;AAED,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAI9F;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAMhF;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAMrE;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAMjF;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAUzD"}
|
|
@@ -0,0 +1,186 @@
|
|
|
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.loadDeveloperStyle = loadDeveloperStyle;
|
|
37
|
+
exports.saveDeveloperStyle = saveDeveloperStyle;
|
|
38
|
+
exports.loadProjectStyle = loadProjectStyle;
|
|
39
|
+
exports.saveProjectStyle = saveProjectStyle;
|
|
40
|
+
exports.loadCommunication = loadCommunication;
|
|
41
|
+
exports.saveCommunication = saveCommunication;
|
|
42
|
+
exports.getStyleProfile = getStyleProfile;
|
|
43
|
+
exports.updateDeveloperPreference = updateDeveloperPreference;
|
|
44
|
+
exports.addVerificationCommand = addVerificationCommand;
|
|
45
|
+
exports.addProductRule = addProductRule;
|
|
46
|
+
exports.addProjectConvention = addProjectConvention;
|
|
47
|
+
exports.initDefaultStyle = initDefaultStyle;
|
|
48
|
+
const fs = __importStar(require("fs"));
|
|
49
|
+
const path = __importStar(require("path"));
|
|
50
|
+
const database_1 = require("../database/database");
|
|
51
|
+
const DEFAULT_DEVELOPER_STYLE = {
|
|
52
|
+
communication: 'Hinglish, simple, direct',
|
|
53
|
+
coding: 'small minimal changes',
|
|
54
|
+
verification: ['npx tsc --noEmit', 'npm test -- --runInBand'],
|
|
55
|
+
privacy: ['never store secrets', 'no browser tracking', 'no keystroke tracking'],
|
|
56
|
+
product_rules: ['OSS/local separate from cloud', 'unlimited memory, filtered context'],
|
|
57
|
+
preferences: {},
|
|
58
|
+
};
|
|
59
|
+
const DEFAULT_PROJECT_STYLE = {
|
|
60
|
+
architecture: 'feature-based walls',
|
|
61
|
+
naming: 'kebab-case files, camelCase functions',
|
|
62
|
+
testing: 'jest with maxWorkers: 1',
|
|
63
|
+
stack: ['TypeScript', 'Node.js', 'SQLite', 'Express'],
|
|
64
|
+
conventions: ['require paths from cli/ use ../../XX-wall/', 'run tsc after every change'],
|
|
65
|
+
entry_points: ['src/index.ts'],
|
|
66
|
+
module_system: 'commonjs',
|
|
67
|
+
};
|
|
68
|
+
function getCellDir(projectDir) {
|
|
69
|
+
return path.join(projectDir, '.cell');
|
|
70
|
+
}
|
|
71
|
+
function getStyleDir(projectDir) {
|
|
72
|
+
return path.join(getCellDir(projectDir), 'memory', 'style');
|
|
73
|
+
}
|
|
74
|
+
function ensureDirs(projectDir) {
|
|
75
|
+
const dir = getStyleDir(projectDir);
|
|
76
|
+
if (!fs.existsSync(dir))
|
|
77
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
78
|
+
}
|
|
79
|
+
function getDeveloperStylePath(projectDir) {
|
|
80
|
+
return path.join(getStyleDir(projectDir), 'developer-style.json');
|
|
81
|
+
}
|
|
82
|
+
function getProjectStylePath(projectDir) {
|
|
83
|
+
return path.join(getStyleDir(projectDir), 'project-style.json');
|
|
84
|
+
}
|
|
85
|
+
function getCommunicationPath(projectDir) {
|
|
86
|
+
return path.join(getStyleDir(projectDir), 'communication.md');
|
|
87
|
+
}
|
|
88
|
+
function loadDeveloperStyle(projectDir) {
|
|
89
|
+
const p = getDeveloperStylePath(projectDir);
|
|
90
|
+
if (!fs.existsSync(p))
|
|
91
|
+
return { ...DEFAULT_DEVELOPER_STYLE, preferences: {} };
|
|
92
|
+
try {
|
|
93
|
+
return JSON.parse(fs.readFileSync(p, 'utf-8'));
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
return { ...DEFAULT_DEVELOPER_STYLE, preferences: {} };
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function saveDeveloperStyle(projectDir, style) {
|
|
100
|
+
ensureDirs(projectDir);
|
|
101
|
+
fs.writeFileSync(getDeveloperStylePath(projectDir), JSON.stringify(style, null, 2));
|
|
102
|
+
// Also save to SQLite
|
|
103
|
+
const db = (0, database_1.getDb)();
|
|
104
|
+
const project = path.basename(projectDir);
|
|
105
|
+
db.prepare(`
|
|
106
|
+
INSERT OR REPLACE INTO style_profiles (project, profile_type, profile_json, updated_at)
|
|
107
|
+
VALUES (?, 'developer', ?, datetime('now'))
|
|
108
|
+
`).run(project, JSON.stringify(style));
|
|
109
|
+
}
|
|
110
|
+
function loadProjectStyle(projectDir) {
|
|
111
|
+
const p = getProjectStylePath(projectDir);
|
|
112
|
+
if (!fs.existsSync(p))
|
|
113
|
+
return { ...DEFAULT_PROJECT_STYLE };
|
|
114
|
+
try {
|
|
115
|
+
return JSON.parse(fs.readFileSync(p, 'utf-8'));
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
return { ...DEFAULT_PROJECT_STYLE };
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
function saveProjectStyle(projectDir, style) {
|
|
122
|
+
ensureDirs(projectDir);
|
|
123
|
+
fs.writeFileSync(getProjectStylePath(projectDir), JSON.stringify(style, null, 2));
|
|
124
|
+
const db = (0, database_1.getDb)();
|
|
125
|
+
const project = path.basename(projectDir);
|
|
126
|
+
db.prepare(`
|
|
127
|
+
INSERT OR REPLACE INTO style_profiles (project, profile_type, profile_json, updated_at)
|
|
128
|
+
VALUES (?, 'project', ?, datetime('now'))
|
|
129
|
+
`).run(project, JSON.stringify(style));
|
|
130
|
+
}
|
|
131
|
+
function loadCommunication(projectDir) {
|
|
132
|
+
const p = getCommunicationPath(projectDir);
|
|
133
|
+
if (!fs.existsSync(p))
|
|
134
|
+
return '# Communication Style\n\nHinglish, simple, direct. No over-explanation.';
|
|
135
|
+
return fs.readFileSync(p, 'utf-8');
|
|
136
|
+
}
|
|
137
|
+
function saveCommunication(projectDir, content) {
|
|
138
|
+
ensureDirs(projectDir);
|
|
139
|
+
fs.writeFileSync(getCommunicationPath(projectDir), content);
|
|
140
|
+
}
|
|
141
|
+
function getStyleProfile(projectDir) {
|
|
142
|
+
return {
|
|
143
|
+
project: path.basename(projectDir),
|
|
144
|
+
developer: loadDeveloperStyle(projectDir),
|
|
145
|
+
project_style: loadProjectStyle(projectDir),
|
|
146
|
+
updated_at: new Date().toISOString(),
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
function updateDeveloperPreference(projectDir, key, value) {
|
|
150
|
+
const style = loadDeveloperStyle(projectDir);
|
|
151
|
+
style.preferences[key] = value;
|
|
152
|
+
saveDeveloperStyle(projectDir, style);
|
|
153
|
+
}
|
|
154
|
+
function addVerificationCommand(projectDir, command) {
|
|
155
|
+
const style = loadDeveloperStyle(projectDir);
|
|
156
|
+
if (!style.verification.includes(command)) {
|
|
157
|
+
style.verification.push(command);
|
|
158
|
+
saveDeveloperStyle(projectDir, style);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
function addProductRule(projectDir, rule) {
|
|
162
|
+
const style = loadDeveloperStyle(projectDir);
|
|
163
|
+
if (!style.product_rules.includes(rule)) {
|
|
164
|
+
style.product_rules.push(rule);
|
|
165
|
+
saveDeveloperStyle(projectDir, style);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
function addProjectConvention(projectDir, convention) {
|
|
169
|
+
const style = loadProjectStyle(projectDir);
|
|
170
|
+
if (!style.conventions.includes(convention)) {
|
|
171
|
+
style.conventions.push(convention);
|
|
172
|
+
saveProjectStyle(projectDir, style);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
function initDefaultStyle(projectDir) {
|
|
176
|
+
if (!fs.existsSync(getDeveloperStylePath(projectDir))) {
|
|
177
|
+
saveDeveloperStyle(projectDir, DEFAULT_DEVELOPER_STYLE);
|
|
178
|
+
}
|
|
179
|
+
if (!fs.existsSync(getProjectStylePath(projectDir))) {
|
|
180
|
+
saveProjectStyle(projectDir, DEFAULT_PROJECT_STYLE);
|
|
181
|
+
}
|
|
182
|
+
if (!fs.existsSync(getCommunicationPath(projectDir))) {
|
|
183
|
+
saveCommunication(projectDir, '# Communication Style\n\nHinglish, simple, direct. No over-explanation.');
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=style-memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style-memory.js","sourceRoot":"","sources":["../../../../src/walls/06-memory/style/style-memory.ts"],"names":[],"mappings":"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"}
|