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.
Files changed (83) hide show
  1. package/dist/__tests__/context-ranker.test.d.ts +2 -0
  2. package/dist/__tests__/context-ranker.test.d.ts.map +1 -0
  3. package/dist/__tests__/context-ranker.test.js +61 -0
  4. package/dist/__tests__/context-ranker.test.js.map +1 -0
  5. package/dist/__tests__/handoff-store.test.d.ts +2 -0
  6. package/dist/__tests__/handoff-store.test.d.ts.map +1 -0
  7. package/dist/__tests__/handoff-store.test.js +151 -0
  8. package/dist/__tests__/handoff-store.test.js.map +1 -0
  9. package/dist/__tests__/memory-archive.test.d.ts +2 -0
  10. package/dist/__tests__/memory-archive.test.d.ts.map +1 -0
  11. package/dist/__tests__/memory-archive.test.js +114 -0
  12. package/dist/__tests__/memory-archive.test.js.map +1 -0
  13. package/dist/__tests__/memory-compact.test.d.ts +2 -0
  14. package/dist/__tests__/memory-compact.test.d.ts.map +1 -0
  15. package/dist/__tests__/memory-compact.test.js +43 -0
  16. package/dist/__tests__/memory-compact.test.js.map +1 -0
  17. package/dist/__tests__/memory-event-store.test.d.ts +2 -0
  18. package/dist/__tests__/memory-event-store.test.d.ts.map +1 -0
  19. package/dist/__tests__/memory-event-store.test.js +101 -0
  20. package/dist/__tests__/memory-event-store.test.js.map +1 -0
  21. package/dist/__tests__/redactor.test.d.ts +2 -0
  22. package/dist/__tests__/redactor.test.d.ts.map +1 -0
  23. package/dist/__tests__/redactor.test.js +89 -0
  24. package/dist/__tests__/redactor.test.js.map +1 -0
  25. package/dist/__tests__/style-memory.test.d.ts +2 -0
  26. package/dist/__tests__/style-memory.test.d.ts.map +1 -0
  27. package/dist/__tests__/style-memory.test.js +134 -0
  28. package/dist/__tests__/style-memory.test.js.map +1 -0
  29. package/dist/__tests__/summary-generator.test.d.ts +2 -0
  30. package/dist/__tests__/summary-generator.test.d.ts.map +1 -0
  31. package/dist/__tests__/summary-generator.test.js +53 -0
  32. package/dist/__tests__/summary-generator.test.js.map +1 -0
  33. package/dist/walls/01-context/context/prompt-builder.d.ts +7 -0
  34. package/dist/walls/01-context/context/prompt-builder.d.ts.map +1 -1
  35. package/dist/walls/01-context/context/prompt-builder.js +29 -0
  36. package/dist/walls/01-context/context/prompt-builder.js.map +1 -1
  37. package/dist/walls/06-memory/archive/memory-archive.d.ts +20 -0
  38. package/dist/walls/06-memory/archive/memory-archive.d.ts.map +1 -0
  39. package/dist/walls/06-memory/archive/memory-archive.js +201 -0
  40. package/dist/walls/06-memory/archive/memory-archive.js.map +1 -0
  41. package/dist/walls/06-memory/archive/memory-compact.d.ts +17 -0
  42. package/dist/walls/06-memory/archive/memory-compact.d.ts.map +1 -0
  43. package/dist/walls/06-memory/archive/memory-compact.js +128 -0
  44. package/dist/walls/06-memory/archive/memory-compact.js.map +1 -0
  45. package/dist/walls/06-memory/database/database.d.ts.map +1 -1
  46. package/dist/walls/06-memory/database/database.js +100 -0
  47. package/dist/walls/06-memory/database/database.js.map +1 -1
  48. package/dist/walls/06-memory/handoff/handoff-store.d.ts +31 -0
  49. package/dist/walls/06-memory/handoff/handoff-store.d.ts.map +1 -0
  50. package/dist/walls/06-memory/handoff/handoff-store.js +203 -0
  51. package/dist/walls/06-memory/handoff/handoff-store.js.map +1 -0
  52. package/dist/walls/06-memory/privacy/redactor.d.ts +14 -0
  53. package/dist/walls/06-memory/privacy/redactor.d.ts.map +1 -0
  54. package/dist/walls/06-memory/privacy/redactor.js +110 -0
  55. package/dist/walls/06-memory/privacy/redactor.js.map +1 -0
  56. package/dist/walls/06-memory/stores/context-ranker.d.ts +21 -0
  57. package/dist/walls/06-memory/stores/context-ranker.d.ts.map +1 -0
  58. package/dist/walls/06-memory/stores/context-ranker.js +84 -0
  59. package/dist/walls/06-memory/stores/context-ranker.js.map +1 -0
  60. package/dist/walls/06-memory/stores/memory-event-store.d.ts +43 -0
  61. package/dist/walls/06-memory/stores/memory-event-store.d.ts.map +1 -0
  62. package/dist/walls/06-memory/stores/memory-event-store.js +139 -0
  63. package/dist/walls/06-memory/stores/memory-event-store.js.map +1 -0
  64. package/dist/walls/06-memory/stores/summary-generator.d.ts +16 -0
  65. package/dist/walls/06-memory/stores/summary-generator.d.ts.map +1 -0
  66. package/dist/walls/06-memory/stores/summary-generator.js +151 -0
  67. package/dist/walls/06-memory/stores/summary-generator.js.map +1 -0
  68. package/dist/walls/06-memory/style/style-memory.d.ts +39 -0
  69. package/dist/walls/06-memory/style/style-memory.d.ts.map +1 -0
  70. package/dist/walls/06-memory/style/style-memory.js +186 -0
  71. package/dist/walls/06-memory/style/style-memory.js.map +1 -0
  72. package/dist/walls/07-runtime/cli/cli.js +350 -0
  73. package/dist/walls/07-runtime/cli/cli.js.map +1 -1
  74. package/dist/walls/07-runtime/daemon/server.d.ts.map +1 -1
  75. package/dist/walls/07-runtime/daemon/server.js +99 -0
  76. package/dist/walls/07-runtime/daemon/server.js.map +1 -1
  77. package/dist/walls/07-runtime/setup/setup.d.ts.map +1 -1
  78. package/dist/walls/07-runtime/setup/setup.js +35 -0
  79. package/dist/walls/07-runtime/setup/setup.js.map +1 -1
  80. package/dist/walls/07-runtime/watcher/live-watcher.d.ts.map +1 -1
  81. package/dist/walls/07-runtime/watcher/live-watcher.js +32 -0
  82. package/dist/walls/07-runtime/watcher/live-watcher.js.map +1 -1
  83. 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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,oDAoDC;AAED,4CAQC;AAED,sDAgDC;AAED,8CAQC;AA1ID,uCAAyB;AACzB,2CAA6B;AAC7B,mDAA6C;AAc7C,SAAgB,oBAAoB,CAAC,OAAe,EAAE,IAAa;IACjE,MAAM,UAAU,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACjE,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IAEnB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CACrB;;8BAE0B,CAC3B,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAGvB,CAAC;IAEH,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,MAAM,WAAW,GAA2B,EAAE,CAAC;IAC/C,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,IAAI,eAAe,GAAG,CAAC,CAAC;IAExB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,GAAG,CAAC,KAAK;YAAE,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1E,eAAe,IAAI,GAAG,CAAC,UAAU,CAAC;QAElC,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU;YAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEnD,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAa,CAAC;gBACrD,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;SAC1C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAEnB,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,OAAO;QACP,WAAW,EAAE,IAAI,CAAC,MAAM;QACxB,MAAM;QACN,SAAS;QACT,YAAY;QACZ,MAAM;QACN,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QAC/C,UAAU,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;KACtF,CAAC;AACJ,CAAC;AAED,SAAgB,gBAAgB,CAAC,OAAe,EAAE,UAAkB,EAAE,IAAa;IACjF,MAAM,OAAO,GAAG,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAClF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9E,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC;IAC/D,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAgB,qBAAqB,CAAC,OAAe,EAAE,UAAkB;IACvE,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;IAErD,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CACrB;;8BAE0B,CAC3B,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAG7C,CAAC;IAEH,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,MAAM,WAAW,GAA2B,EAAE,CAAC;IAC/C,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,IAAI,eAAe,GAAG,CAAC,CAAC;IAExB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,GAAG,CAAC,KAAK;YAAE,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1E,eAAe,IAAI,GAAG,CAAC,UAAU,CAAC;QAClC,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU;YAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;YACnB,IAAI,CAAC;gBAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QAC1F,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;SAC1C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3B,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;SACZ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAEnB,OAAO;QACL,IAAI,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;QAChF,OAAO;QACP,WAAW,EAAE,IAAI,CAAC,MAAM;QACxB,MAAM;QACN,SAAS;QACT,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QAC3B,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QAC/C,UAAU,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;KACtF,CAAC;AACJ,CAAC;AAED,SAAgB,iBAAiB,CAAC,OAAe,EAAE,UAAkB;IACnE,MAAM,OAAO,GAAG,qBAAqB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IACnF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9E,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC;IAC/D,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6EA,gDAQC;AAED,gDAWC;AAED,4CAQC;AAED,4CAUC;AAED,8CAIC;AAED,8CAGC;AAED,0CAOC;AAED,8DAIC;AAED,wDAMC;AAED,wCAMC;AAED,oDAMC;AAED,4CAUC;AAtLD,uCAAyB;AACzB,2CAA6B;AAC7B,mDAA6C;AA+B7C,MAAM,uBAAuB,GAAmB;IAC9C,aAAa,EAAE,0BAA0B;IACzC,MAAM,EAAE,uBAAuB;IAC/B,YAAY,EAAE,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;IAC7D,OAAO,EAAE,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,uBAAuB,CAAC;IAChF,aAAa,EAAE,CAAC,+BAA+B,EAAE,oCAAoC,CAAC;IACtF,WAAW,EAAE,EAAE;CAChB,CAAC;AAEF,MAAM,qBAAqB,GAAiB;IAC1C,YAAY,EAAE,qBAAqB;IACnC,MAAM,EAAE,uCAAuC;IAC/C,OAAO,EAAE,yBAAyB;IAClC,KAAK,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;IACrD,WAAW,EAAE,CAAC,4CAA4C,EAAE,4BAA4B,CAAC;IACzF,YAAY,EAAE,CAAC,cAAc,CAAC;IAC9B,aAAa,EAAE,UAAU;CAC1B,CAAC;AAEF,SAAS,UAAU,CAAC,UAAkB;IACpC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,WAAW,CAAC,UAAkB;IACrC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,UAAU,CAAC,UAAkB;IACpC,MAAM,GAAG,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IACpC,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,SAAS,qBAAqB,CAAC,UAAkB;IAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,sBAAsB,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,mBAAmB,CAAC,UAAkB;IAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,oBAAoB,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,oBAAoB,CAAC,UAAkB;IAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC,CAAC;AAChE,CAAC;AAED,SAAgB,kBAAkB,CAAC,UAAkB;IACnD,MAAM,CAAC,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;IAC5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,GAAG,uBAAuB,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IAC9E,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAmB,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,GAAG,uBAAuB,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IACzD,CAAC;AACH,CAAC;AAED,SAAgB,kBAAkB,CAAC,UAAkB,EAAE,KAAqB;IAC1E,UAAU,CAAC,UAAU,CAAC,CAAC;IACvB,EAAE,CAAC,aAAa,CAAC,qBAAqB,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAEpF,sBAAsB;IACtB,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC1C,EAAE,CAAC,OAAO,CAAC;;;GAGV,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,SAAgB,gBAAgB,CAAC,UAAkB;IACjD,MAAM,CAAC,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC1C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,GAAG,qBAAqB,EAAE,CAAC;IAC3D,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAiB,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,GAAG,qBAAqB,EAAE,CAAC;IACtC,CAAC;AACH,CAAC;AAED,SAAgB,gBAAgB,CAAC,UAAkB,EAAE,KAAmB;IACtE,UAAU,CAAC,UAAU,CAAC,CAAC;IACvB,EAAE,CAAC,aAAa,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAElF,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC1C,EAAE,CAAC,OAAO,CAAC;;;GAGV,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,SAAgB,iBAAiB,CAAC,UAAkB;IAClD,MAAM,CAAC,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,yEAAyE,CAAC;IACxG,OAAO,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC;AAED,SAAgB,iBAAiB,CAAC,UAAkB,EAAE,OAAe;IACnE,UAAU,CAAC,UAAU,CAAC,CAAC;IACvB,EAAE,CAAC,aAAa,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC;AAED,SAAgB,eAAe,CAAC,UAAkB;IAChD,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QAClC,SAAS,EAAE,kBAAkB,CAAC,UAAU,CAAC;QACzC,aAAa,EAAE,gBAAgB,CAAC,UAAU,CAAC;QAC3C,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,CAAC;AACJ,CAAC;AAED,SAAgB,yBAAyB,CAAC,UAAkB,EAAE,GAAW,EAAE,KAAa;IACtF,MAAM,KAAK,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC7C,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC/B,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AACxC,CAAC;AAED,SAAgB,sBAAsB,CAAC,UAAkB,EAAE,OAAe;IACxE,MAAM,KAAK,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1C,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED,SAAgB,cAAc,CAAC,UAAkB,EAAE,IAAY;IAC7D,MAAM,KAAK,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED,SAAgB,oBAAoB,CAAC,UAAkB,EAAE,UAAkB;IACzE,MAAM,KAAK,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5C,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnC,gBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,SAAgB,gBAAgB,CAAC,UAAkB;IACjD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACtD,kBAAkB,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACpD,gBAAgB,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;IACtD,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACrD,iBAAiB,CAAC,UAAU,EAAE,yEAAyE,CAAC,CAAC;IAC3G,CAAC;AACH,CAAC"}