fivocell 4.4.0 → 4.5.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 (55) hide show
  1. package/dist/__tests__/autostart.test.js +7 -2
  2. package/dist/__tests__/autostart.test.js.map +1 -1
  3. package/dist/__tests__/handoff-store.test.d.ts +2 -0
  4. package/dist/__tests__/handoff-store.test.d.ts.map +1 -0
  5. package/dist/__tests__/handoff-store.test.js +151 -0
  6. package/dist/__tests__/handoff-store.test.js.map +1 -0
  7. package/dist/__tests__/memory-archive.test.d.ts +2 -0
  8. package/dist/__tests__/memory-archive.test.d.ts.map +1 -0
  9. package/dist/__tests__/memory-archive.test.js +114 -0
  10. package/dist/__tests__/memory-archive.test.js.map +1 -0
  11. package/dist/__tests__/memory-event-store.test.d.ts +2 -0
  12. package/dist/__tests__/memory-event-store.test.d.ts.map +1 -0
  13. package/dist/__tests__/memory-event-store.test.js +101 -0
  14. package/dist/__tests__/memory-event-store.test.js.map +1 -0
  15. package/dist/__tests__/redactor.test.d.ts +2 -0
  16. package/dist/__tests__/redactor.test.d.ts.map +1 -0
  17. package/dist/__tests__/redactor.test.js +89 -0
  18. package/dist/__tests__/redactor.test.js.map +1 -0
  19. package/dist/__tests__/style-memory.test.d.ts +2 -0
  20. package/dist/__tests__/style-memory.test.d.ts.map +1 -0
  21. package/dist/__tests__/style-memory.test.js +134 -0
  22. package/dist/__tests__/style-memory.test.js.map +1 -0
  23. package/dist/walls/06-memory/archive/memory-archive.d.ts +20 -0
  24. package/dist/walls/06-memory/archive/memory-archive.d.ts.map +1 -0
  25. package/dist/walls/06-memory/archive/memory-archive.js +201 -0
  26. package/dist/walls/06-memory/archive/memory-archive.js.map +1 -0
  27. package/dist/walls/06-memory/database/database.d.ts.map +1 -1
  28. package/dist/walls/06-memory/database/database.js +100 -0
  29. package/dist/walls/06-memory/database/database.js.map +1 -1
  30. package/dist/walls/06-memory/handoff/handoff-store.d.ts +31 -0
  31. package/dist/walls/06-memory/handoff/handoff-store.d.ts.map +1 -0
  32. package/dist/walls/06-memory/handoff/handoff-store.js +203 -0
  33. package/dist/walls/06-memory/handoff/handoff-store.js.map +1 -0
  34. package/dist/walls/06-memory/privacy/redactor.d.ts +14 -0
  35. package/dist/walls/06-memory/privacy/redactor.d.ts.map +1 -0
  36. package/dist/walls/06-memory/privacy/redactor.js +110 -0
  37. package/dist/walls/06-memory/privacy/redactor.js.map +1 -0
  38. package/dist/walls/06-memory/stores/memory-event-store.d.ts +43 -0
  39. package/dist/walls/06-memory/stores/memory-event-store.d.ts.map +1 -0
  40. package/dist/walls/06-memory/stores/memory-event-store.js +139 -0
  41. package/dist/walls/06-memory/stores/memory-event-store.js.map +1 -0
  42. package/dist/walls/06-memory/style/style-memory.d.ts +39 -0
  43. package/dist/walls/06-memory/style/style-memory.d.ts.map +1 -0
  44. package/dist/walls/06-memory/style/style-memory.js +186 -0
  45. package/dist/walls/06-memory/style/style-memory.js.map +1 -0
  46. package/dist/walls/07-runtime/cli/cli.js +291 -0
  47. package/dist/walls/07-runtime/cli/cli.js.map +1 -1
  48. package/dist/walls/07-runtime/setup/autostart.d.ts +2 -0
  49. package/dist/walls/07-runtime/setup/autostart.d.ts.map +1 -1
  50. package/dist/walls/07-runtime/setup/autostart.js +49 -16
  51. package/dist/walls/07-runtime/setup/autostart.js.map +1 -1
  52. package/dist/walls/07-runtime/setup/setup.d.ts.map +1 -1
  53. package/dist/walls/07-runtime/setup/setup.js +35 -0
  54. package/dist/walls/07-runtime/setup/setup.js.map +1 -1
  55. package/package.json +1 -1
@@ -0,0 +1,203 @@
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.saveHandoffEntry = saveHandoffEntry;
37
+ exports.getCurrentHandoff = getCurrentHandoff;
38
+ exports.getHistoryHandoff = getHistoryHandoff;
39
+ exports.getHandoffEntries = getHandoffEntries;
40
+ exports.rotateHandoffIfNeeded = rotateHandoffIfNeeded;
41
+ exports.getHandoffStats = getHandoffStats;
42
+ const fs = __importStar(require("fs"));
43
+ const path = __importStar(require("path"));
44
+ const database_1 = require("../database/database");
45
+ const MAX_CURRENT_LINES = 200;
46
+ function getCellDir(projectDir) {
47
+ return path.join(projectDir, '.cell');
48
+ }
49
+ function getHandoffDir(projectDir) {
50
+ return path.join(getCellDir(projectDir), 'handoff');
51
+ }
52
+ function getCurrentPath(projectDir) {
53
+ return path.join(getHandoffDir(projectDir), 'current.md');
54
+ }
55
+ function getHistoryDir(projectDir) {
56
+ return path.join(getHandoffDir(projectDir), 'history');
57
+ }
58
+ function formatEntryMd(entry) {
59
+ const now = new Date().toISOString().replace('T', ' ').slice(0, 16);
60
+ const lines = [];
61
+ lines.push(`## ${now} - ${entry.title}`);
62
+ lines.push('');
63
+ lines.push(`Summary: ${entry.summary}`);
64
+ if (entry.why)
65
+ lines.push(`\nWhy: ${entry.why}`);
66
+ if (entry.filesChanged && entry.filesChanged.length > 0) {
67
+ lines.push(`\nFiles Changed:`);
68
+ for (const f of entry.filesChanged)
69
+ lines.push(`- ${f}`);
70
+ }
71
+ if (entry.relatedFiles && entry.relatedFiles.length > 0) {
72
+ lines.push(`\nRelated Files:`);
73
+ for (const f of entry.relatedFiles)
74
+ lines.push(`- ${f}`);
75
+ }
76
+ if (entry.impact)
77
+ lines.push(`\nImpact: ${entry.impact}`);
78
+ if (entry.verification)
79
+ lines.push(`\nVerification: ${entry.verification}`);
80
+ if (entry.tool || entry.model)
81
+ lines.push(`\nTool/Model: ${entry.tool || '?'} / ${entry.model || '?'}`);
82
+ lines.push(`\nStatus: ${entry.status}`);
83
+ if (entry.nextSteps)
84
+ lines.push(`\nNext: ${entry.nextSteps}`);
85
+ lines.push('');
86
+ return lines.join('\n');
87
+ }
88
+ function ensureDirs(projectDir) {
89
+ const dirs = [
90
+ getHandoffDir(projectDir),
91
+ getHistoryDir(projectDir),
92
+ ];
93
+ for (const d of dirs) {
94
+ if (!fs.existsSync(d))
95
+ fs.mkdirSync(d, { recursive: true });
96
+ }
97
+ }
98
+ function saveHandoffEntry(projectDir, entry) {
99
+ ensureDirs(projectDir);
100
+ // 1. Save to SQLite
101
+ const db = (0, database_1.getDb)();
102
+ db.prepare(`
103
+ INSERT INTO handoff_entries (project, branch, title, summary, why, files_changed_json, related_files_json, impact, verification, tool, model, status, next_steps)
104
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
105
+ `).run(entry.project, entry.branch || null, entry.title, entry.summary, entry.why || null, entry.filesChanged ? JSON.stringify(entry.filesChanged) : null, entry.relatedFiles ? JSON.stringify(entry.relatedFiles) : null, entry.impact || null, entry.verification || null, entry.tool || null, entry.model || null, entry.status, entry.nextSteps || null);
106
+ // 2. Append to current.md
107
+ const currentPath = getCurrentPath(projectDir);
108
+ let currentContent = '';
109
+ if (fs.existsSync(currentPath)) {
110
+ currentContent = fs.readFileSync(currentPath, 'utf-8');
111
+ }
112
+ const newEntryMd = formatEntryMd(entry);
113
+ const lines = (currentContent + '\n' + newEntryMd).split('\n');
114
+ if (lines.length > MAX_CURRENT_LINES) {
115
+ // Rotate: move old content to monthly history
116
+ const historyDir = getHistoryDir(projectDir);
117
+ const now = new Date();
118
+ const monthFile = path.join(historyDir, `${now.getFullYear()}-${(now.getMonth() + 1).toString().padStart(2, '0')}.md`);
119
+ const header = lines[0] || '# Handoff History';
120
+ const excessLines = lines.slice(0, lines.length - MAX_CURRENT_LINES);
121
+ const keepLines = lines.slice(lines.length - MAX_CURRENT_LINES);
122
+ let existingHistory = '';
123
+ if (fs.existsSync(monthFile)) {
124
+ existingHistory = fs.readFileSync(monthFile, 'utf-8');
125
+ }
126
+ const historyContent = (existingHistory ? existingHistory + '\n\n' : header + '\n\n') + excessLines.join('\n');
127
+ fs.writeFileSync(monthFile, historyContent);
128
+ fs.writeFileSync(currentPath, keepLines.join('\n'));
129
+ }
130
+ else {
131
+ const content = currentContent.trim() ? currentContent.trim() + '\n\n' + newEntryMd : '# Current Handoff\n\n' + newEntryMd;
132
+ fs.writeFileSync(currentPath, content);
133
+ }
134
+ }
135
+ function getCurrentHandoff(projectDir) {
136
+ const currentPath = getCurrentPath(projectDir);
137
+ if (!fs.existsSync(currentPath))
138
+ return '# Current Handoff\n\nNo handoff entries yet.';
139
+ return fs.readFileSync(currentPath, 'utf-8');
140
+ }
141
+ function getHistoryHandoff(projectDir, yearMonth) {
142
+ const historyDir = getHistoryDir(projectDir);
143
+ if (!yearMonth) {
144
+ const now = new Date();
145
+ yearMonth = `${now.getFullYear()}-${(now.getMonth() + 1).toString().padStart(2, '0')}`;
146
+ }
147
+ const historyPath = path.join(historyDir, `${yearMonth}.md`);
148
+ if (!fs.existsSync(historyPath))
149
+ return `# Handoff History — ${yearMonth}\n\nNo history entries for this month.`;
150
+ return fs.readFileSync(historyPath, 'utf-8');
151
+ }
152
+ function getHandoffEntries(projectDir, limit = 20) {
153
+ const db = (0, database_1.getDb)();
154
+ const project = path.basename(projectDir);
155
+ return db.prepare('SELECT * FROM handoff_entries WHERE project = ? ORDER BY created_at DESC LIMIT ?').all(project, limit);
156
+ }
157
+ function rotateHandoffIfNeeded(projectDir) {
158
+ const currentPath = getCurrentPath(projectDir);
159
+ if (!fs.existsSync(currentPath))
160
+ return false;
161
+ const content = fs.readFileSync(currentPath, 'utf-8');
162
+ const lines = content.split('\n');
163
+ if (lines.length <= MAX_CURRENT_LINES)
164
+ return false;
165
+ const historyDir = getHistoryDir(projectDir);
166
+ if (!fs.existsSync(historyDir))
167
+ fs.mkdirSync(historyDir, { recursive: true });
168
+ const now = new Date();
169
+ const monthFile = path.join(historyDir, `${now.getFullYear()}-${(now.getMonth() + 1).toString().padStart(2, '0')}.md`);
170
+ const header = '# Handoff History\n\n';
171
+ const excessLines = lines.slice(0, lines.length - MAX_CURRENT_LINES);
172
+ const keepLines = lines.slice(lines.length - MAX_CURRENT_LINES);
173
+ let existingHistory = '';
174
+ if (fs.existsSync(monthFile)) {
175
+ existingHistory = fs.readFileSync(monthFile, 'utf-8');
176
+ }
177
+ const historyContent = (existingHistory ? existingHistory + '\n\n' : header) + excessLines.join('\n');
178
+ fs.writeFileSync(monthFile, historyContent);
179
+ fs.writeFileSync(currentPath, keepLines.join('\n'));
180
+ return true;
181
+ }
182
+ function getHandoffStats(projectDir) {
183
+ const currentPath = getCurrentPath(projectDir);
184
+ let currentLines = 0;
185
+ if (fs.existsSync(currentPath)) {
186
+ currentLines = fs.readFileSync(currentPath, 'utf-8').split('\n').length;
187
+ }
188
+ const historyDir = getHistoryDir(projectDir);
189
+ let historyMonths = 0;
190
+ if (fs.existsSync(historyDir)) {
191
+ historyMonths = fs.readdirSync(historyDir).filter(f => f.endsWith('.md')).length;
192
+ }
193
+ const project = path.basename(projectDir);
194
+ const db = (0, database_1.getDb)();
195
+ const row = db.prepare('SELECT COUNT(*) as c FROM handoff_entries WHERE project = ?').get(project);
196
+ return {
197
+ currentLines,
198
+ historyMonths,
199
+ dbEntries: row.c,
200
+ needsRotation: currentLines > MAX_CURRENT_LINES,
201
+ };
202
+ }
203
+ //# sourceMappingURL=handoff-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handoff-store.js","sourceRoot":"","sources":["../../../../src/walls/06-memory/handoff/handoff-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export interface RedactionResult {
2
+ content: string;
3
+ redacted: number;
4
+ secrets: string[];
5
+ }
6
+ export declare function redactSecrets(content: string): RedactionResult;
7
+ export declare function redactEnvFile(filePath: string): RedactionResult;
8
+ export declare function isEnvFile(filePath: string): boolean;
9
+ export declare function getSecretSummary(): Array<{
10
+ name: string;
11
+ required: boolean;
12
+ present: boolean;
13
+ }>;
14
+ //# sourceMappingURL=redactor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redactor.d.ts","sourceRoot":"","sources":["../../../../src/walls/06-memory/privacy/redactor.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAe9D;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAO/D;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGnD;AAED,wBAAgB,gBAAgB,IAAI,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAuB/F"}
@@ -0,0 +1,110 @@
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.redactSecrets = redactSecrets;
37
+ exports.redactEnvFile = redactEnvFile;
38
+ exports.isEnvFile = isEnvFile;
39
+ exports.getSecretSummary = getSecretSummary;
40
+ const fs = __importStar(require("fs"));
41
+ const path = __importStar(require("path"));
42
+ const SECRET_PATTERNS = [
43
+ { name: 'API_KEY', pattern: /(?:api[_-]?key|apikey)\s*[:=]\s*["']?([A-Za-z0-9_\-]{20,})["']?/gi, replacement: 'API_KEY=<REDACTED>' },
44
+ { name: 'TOKEN', pattern: /(?:token|access[_-]?token|auth[_-]?token)\s*[:=]\s*["']?([A-Za-z0-9_\-.]{20,})["']?/gi, replacement: 'TOKEN=<REDACTED>' },
45
+ { name: 'SECRET', pattern: /(?:secret|client[_-]?secret|app[_-]?secret)\s*[:=]\s*["']?([A-Za-z0-9_\-]{20,})["']?/gi, replacement: 'SECRET=<REDACTED>' },
46
+ { name: 'PASSWORD', pattern: /(?:password|passwd|pwd)\s*[:=]\s*["']?([^\s"']{8,})["']?/gi, replacement: 'PASSWORD=<REDACTED>' },
47
+ { name: 'PRIVATE_KEY', pattern: /-----BEGIN [A-Z ]+PRIVATE KEY-----[\s\S]*?-----END [A-Z ]+PRIVATE KEY-----/g, replacement: '<PRIVATE_KEY_REDACTED>' },
48
+ { name: 'SSH_KEY', pattern: /-----BEGIN OPENSSH PRIVATE KEY-----[\s\S]*?-----END OPENSSH PRIVATE KEY-----/g, replacement: '<SSH_KEY_REDACTED>' },
49
+ { name: 'JWT', pattern: /eyJ[A-Za-z0-9_\-]+\.eyJ[A-Za-z0-9_\-]+\.[A-Za-z0-9_\-]+/g, replacement: '<JWT_REDACTED>' },
50
+ { name: 'NPM_TOKEN', pattern: /npm_[A-Za-z0-9]{36}/g, replacement: '<NPM_TOKEN_REDACTED>' },
51
+ { name: 'AWS_KEY', pattern: /AKIA[0-9A-Z]{16}/g, replacement: '<AWS_KEY_REDACTED>' },
52
+ { name: 'GITHUB_TOKEN', pattern: /ghp_[A-Za-z0-9]{36}/g, replacement: '<GITHUB_TOKEN_REDACTED>' },
53
+ { name: 'OPENAI_KEY', pattern: /sk-[A-Za-z0-9]{48}/g, replacement: '<OPENAI_KEY_REDACTED>' },
54
+ { name: 'CONNECTION_STRING', pattern: /(?:mongodb|postgres|mysql|redis|amqp):\/\/[^\s"']+/gi, replacement: '<CONNECTION_STRING_REDACTED>' },
55
+ { name: 'BEARER', pattern: /Bearer\s+[A-Za-z0-9_\-\.]{20,}/g, replacement: 'Bearer <REDACTED>' },
56
+ ];
57
+ const ENV_FILE_NAMES = ['.env', '.env.local', '.env.production', '.env.development', '.env.staging'];
58
+ function redactSecrets(content) {
59
+ let redacted = content;
60
+ let count = 0;
61
+ const found = [];
62
+ for (const rule of SECRET_PATTERNS) {
63
+ const matches = redacted.match(rule.pattern);
64
+ if (matches && matches.length > 0) {
65
+ count += matches.length;
66
+ if (!found.includes(rule.name))
67
+ found.push(rule.name);
68
+ redacted = redacted.replace(rule.pattern, rule.replacement);
69
+ }
70
+ }
71
+ return { content: redacted, redacted: count, secrets: found };
72
+ }
73
+ function redactEnvFile(filePath) {
74
+ try {
75
+ const content = fs.readFileSync(filePath, 'utf-8');
76
+ return redactSecrets(content);
77
+ }
78
+ catch {
79
+ return { content: '', redacted: 0, secrets: [] };
80
+ }
81
+ }
82
+ function isEnvFile(filePath) {
83
+ const base = path.basename(filePath);
84
+ return ENV_FILE_NAMES.includes(base) || base.startsWith('.env.');
85
+ }
86
+ function getSecretSummary() {
87
+ const secrets = [
88
+ 'OPENAI_API_KEY',
89
+ 'ANTHROPIC_API_KEY',
90
+ 'GITHUB_TOKEN',
91
+ 'NPM_TOKEN',
92
+ 'AWS_ACCESS_KEY_ID',
93
+ 'MONGODB_URI',
94
+ 'DATABASE_URL',
95
+ 'REDIS_URL',
96
+ ];
97
+ return secrets.map(name => {
98
+ let present = false;
99
+ try {
100
+ const envPath = path.join(process.cwd(), '.env');
101
+ if (fs.existsSync(envPath)) {
102
+ const content = fs.readFileSync(envPath, 'utf-8');
103
+ present = content.includes(name + '=') && !content.includes(name + '=\n');
104
+ }
105
+ }
106
+ catch { /* ignore */ }
107
+ return { name, required: false, present };
108
+ });
109
+ }
110
+ //# sourceMappingURL=redactor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redactor.js","sourceRoot":"","sources":["../../../../src/walls/06-memory/privacy/redactor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ export interface MemoryEvent {
2
+ project: string;
3
+ branch?: string;
4
+ type: 'file_event' | 'edit' | 'decision' | 'error' | 'fix' | 'verification' | 'publish' | 'handoff' | 'pattern' | 'style' | 'session' | 'branch' | 'risk' | 'question' | 'ai_work';
5
+ topic?: string;
6
+ summary: string;
7
+ details?: Record<string, unknown>;
8
+ files?: string[];
9
+ importance?: number;
10
+ tool?: string;
11
+ model?: string;
12
+ tags?: string[];
13
+ }
14
+ export interface MemoryEventRow extends MemoryEvent {
15
+ id: number;
16
+ created_at: string;
17
+ }
18
+ export declare function recordMemoryEvent(event: MemoryEvent): number;
19
+ export declare function recordMemoryEvents(events: MemoryEvent[]): number[];
20
+ export declare function getMemoryEvents(opts?: {
21
+ project?: string;
22
+ type?: string;
23
+ topic?: string;
24
+ branch?: string;
25
+ limit?: number;
26
+ since?: string;
27
+ minImportance?: number;
28
+ }): MemoryEventRow[];
29
+ export declare function searchMemoryEvents(query: string, project?: string, limit?: number): MemoryEventRow[];
30
+ export declare function getMemoryTimeline(project?: string, days?: number): Array<{
31
+ date: string;
32
+ count: number;
33
+ types: Record<string, number>;
34
+ }>;
35
+ export declare function getMemoryStats(project?: string): {
36
+ total: number;
37
+ byType: Record<string, number>;
38
+ avgImportance: number;
39
+ oldestEvent: string | null;
40
+ newestEvent: string | null;
41
+ };
42
+ export declare function deleteMemoryEventsOlderThan(days: number): number;
43
+ //# sourceMappingURL=memory-event-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-event-store.d.ts","sourceRoot":"","sources":["../../../../src/walls/06-memory/stores/memory-event-store.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,KAAK,GAAG,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IACnL,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAoB5D;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,CAUlE;AAED,wBAAgB,eAAe,CAAC,IAAI,GAAE;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,cAAc,EAAE,CAgBxB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,cAAc,EAAE,CASxG;AAED,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,MAAW,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC,CAiB5I;AAED,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAqBA;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKhE"}
@@ -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,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"}