cortex-mcp 2.6.0 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/CHANGELOG.md +58 -279
  2. package/README.md +224 -393
  3. package/dist/cli/setup.js +60 -58
  4. package/dist/cli/setup.js.map +1 -1
  5. package/dist/config/config.js +2 -2
  6. package/dist/config/config.js.map +1 -1
  7. package/dist/db/database.d.ts +0 -8
  8. package/dist/db/database.d.ts.map +1 -1
  9. package/dist/db/database.js +2 -34
  10. package/dist/db/database.js.map +1 -1
  11. package/dist/db/event-log.d.ts +0 -4
  12. package/dist/db/event-log.d.ts.map +1 -1
  13. package/dist/db/event-log.js +10 -14
  14. package/dist/db/event-log.js.map +1 -1
  15. package/dist/db/memory-store.d.ts +3 -30
  16. package/dist/db/memory-store.d.ts.map +1 -1
  17. package/dist/db/memory-store.js +44 -140
  18. package/dist/db/memory-store.js.map +1 -1
  19. package/dist/embedding-worker.js +1 -1
  20. package/dist/embedding-worker.js.map +1 -1
  21. package/dist/hooks/git-capture.js +3 -3
  22. package/dist/hooks/git-hooks.js +2 -5
  23. package/dist/mcp-stdio.js +3 -34
  24. package/dist/mcp-stdio.js.map +1 -1
  25. package/dist/memory/anticipation-engine.d.ts.map +1 -1
  26. package/dist/memory/anticipation-engine.js +10 -18
  27. package/dist/memory/anticipation-engine.js.map +1 -1
  28. package/dist/memory/auto-learner.d.ts.map +1 -1
  29. package/dist/memory/auto-learner.js +43 -190
  30. package/dist/memory/auto-learner.js.map +1 -1
  31. package/dist/memory/confidence-decay.d.ts.map +1 -1
  32. package/dist/memory/confidence-decay.js +9 -13
  33. package/dist/memory/confidence-decay.js.map +1 -1
  34. package/dist/memory/embedding-manager.d.ts.map +1 -1
  35. package/dist/memory/embedding-manager.js +4 -6
  36. package/dist/memory/embedding-manager.js.map +1 -1
  37. package/dist/memory/export-import.js +2 -2
  38. package/dist/memory/export-import.js.map +1 -1
  39. package/dist/memory/git-memory.d.ts.map +1 -1
  40. package/dist/memory/git-memory.js +26 -20
  41. package/dist/memory/git-memory.js.map +1 -1
  42. package/dist/memory/learning-rate.js +7 -8
  43. package/dist/memory/learning-rate.js.map +1 -1
  44. package/dist/memory/llm-enhancer.d.ts +14 -2
  45. package/dist/memory/llm-enhancer.d.ts.map +1 -1
  46. package/dist/memory/llm-enhancer.js +46 -66
  47. package/dist/memory/llm-enhancer.js.map +1 -1
  48. package/dist/memory/memory-cache.d.ts.map +1 -1
  49. package/dist/memory/memory-cache.js +0 -10
  50. package/dist/memory/memory-cache.js.map +1 -1
  51. package/dist/memory/memory-consolidator.d.ts.map +1 -1
  52. package/dist/memory/memory-consolidator.js +14 -20
  53. package/dist/memory/memory-consolidator.js.map +1 -1
  54. package/dist/memory/memory-decay.d.ts.map +1 -1
  55. package/dist/memory/memory-decay.js +52 -82
  56. package/dist/memory/memory-decay.js.map +1 -1
  57. package/dist/memory/memory-quality.d.ts +1 -1
  58. package/dist/memory/memory-quality.d.ts.map +1 -1
  59. package/dist/memory/memory-quality.js +6 -9
  60. package/dist/memory/memory-quality.js.map +1 -1
  61. package/dist/memory/memory-ranker.d.ts.map +1 -1
  62. package/dist/memory/memory-ranker.js +3 -12
  63. package/dist/memory/memory-ranker.js.map +1 -1
  64. package/dist/memory/meta-memory.js +3 -3
  65. package/dist/memory/meta-memory.js.map +1 -1
  66. package/dist/memory/session-tracker.d.ts +0 -2
  67. package/dist/memory/session-tracker.d.ts.map +1 -1
  68. package/dist/memory/session-tracker.js +8 -26
  69. package/dist/memory/session-tracker.js.map +1 -1
  70. package/dist/memory/temporal-engine.d.ts.map +1 -1
  71. package/dist/memory/temporal-engine.js +13 -9
  72. package/dist/memory/temporal-engine.js.map +1 -1
  73. package/dist/retrieval/hybrid-retriever.d.ts +2 -0
  74. package/dist/retrieval/hybrid-retriever.d.ts.map +1 -1
  75. package/dist/retrieval/hybrid-retriever.js +13 -3
  76. package/dist/retrieval/hybrid-retriever.js.map +1 -1
  77. package/dist/scanners/architecture-graph.js +2 -2
  78. package/dist/scanners/architecture-graph.js.map +1 -1
  79. package/dist/scanners/code-verifier.d.ts +0 -1
  80. package/dist/scanners/code-verifier.d.ts.map +1 -1
  81. package/dist/scanners/code-verifier.js +14 -14
  82. package/dist/scanners/code-verifier.js.map +1 -1
  83. package/dist/scanners/context-builder.d.ts.map +1 -1
  84. package/dist/scanners/context-builder.js +45 -33
  85. package/dist/scanners/context-builder.js.map +1 -1
  86. package/dist/scanners/export-map.js +2 -2
  87. package/dist/scanners/export-map.js.map +1 -1
  88. package/dist/scanners/project-scanner.js +2 -2
  89. package/dist/scanners/project-scanner.js.map +1 -1
  90. package/dist/security/encryption.js +1 -1
  91. package/dist/security/encryption.js.map +1 -1
  92. package/dist/security/feature-gate.d.ts.map +1 -1
  93. package/dist/security/feature-gate.js +20 -62
  94. package/dist/security/feature-gate.js.map +1 -1
  95. package/dist/security/license.js +35 -282
  96. package/dist/security/license.js.map +1 -1
  97. package/dist/security/rate-limiter.d.ts +3 -4
  98. package/dist/security/rate-limiter.d.ts.map +1 -1
  99. package/dist/security/rate-limiter.js +29 -11
  100. package/dist/security/rate-limiter.js.map +1 -1
  101. package/dist/server/dashboard.js +327 -166
  102. package/dist/server/dashboard.js.map +1 -1
  103. package/dist/server/mcp-handler.d.ts.map +1 -1
  104. package/dist/server/mcp-handler.js +827 -1002
  105. package/dist/server/mcp-handler.js.map +1 -1
  106. package/package.json +8 -18
  107. package/dist/memory/access-pattern-tracker.d.ts +0 -51
  108. package/dist/memory/access-pattern-tracker.d.ts.map +0 -1
  109. package/dist/memory/access-pattern-tracker.js +0 -92
  110. package/dist/memory/access-pattern-tracker.js.map +0 -1
  111. package/dist/memory/completion-resolver.d.ts +0 -38
  112. package/dist/memory/completion-resolver.d.ts.map +0 -1
  113. package/dist/memory/completion-resolver.js +0 -127
  114. package/dist/memory/completion-resolver.js.map +0 -1
  115. package/dist/memory/convention-detector.d.ts +0 -11
  116. package/dist/memory/convention-detector.d.ts.map +0 -1
  117. package/dist/memory/convention-detector.js +0 -294
  118. package/dist/memory/convention-detector.js.map +0 -1
  119. package/dist/memory/correction-detector.d.ts +0 -33
  120. package/dist/memory/correction-detector.d.ts.map +0 -1
  121. package/dist/memory/correction-detector.js +0 -129
  122. package/dist/memory/correction-detector.js.map +0 -1
  123. package/dist/memory/cross-memory-linker.d.ts +0 -18
  124. package/dist/memory/cross-memory-linker.d.ts.map +0 -1
  125. package/dist/memory/cross-memory-linker.js +0 -115
  126. package/dist/memory/cross-memory-linker.js.map +0 -1
  127. package/dist/memory/daily-diary.d.ts +0 -30
  128. package/dist/memory/daily-diary.d.ts.map +0 -1
  129. package/dist/memory/daily-diary.js +0 -159
  130. package/dist/memory/daily-diary.js.map +0 -1
  131. package/dist/memory/embedding-cache.d.ts +0 -32
  132. package/dist/memory/embedding-cache.d.ts.map +0 -1
  133. package/dist/memory/embedding-cache.js +0 -76
  134. package/dist/memory/embedding-cache.js.map +0 -1
  135. package/dist/memory/error-learner.d.ts +0 -26
  136. package/dist/memory/error-learner.d.ts.map +0 -1
  137. package/dist/memory/error-learner.js +0 -145
  138. package/dist/memory/error-learner.js.map +0 -1
  139. package/dist/memory/file-relationships.d.ts +0 -47
  140. package/dist/memory/file-relationships.d.ts.map +0 -1
  141. package/dist/memory/file-relationships.js +0 -130
  142. package/dist/memory/file-relationships.js.map +0 -1
  143. package/dist/memory/impact-analyzer.d.ts +0 -16
  144. package/dist/memory/impact-analyzer.d.ts.map +0 -1
  145. package/dist/memory/impact-analyzer.js +0 -189
  146. package/dist/memory/impact-analyzer.js.map +0 -1
  147. package/dist/memory/instructions-generator.d.ts +0 -30
  148. package/dist/memory/instructions-generator.d.ts.map +0 -1
  149. package/dist/memory/instructions-generator.js +0 -117
  150. package/dist/memory/instructions-generator.js.map +0 -1
  151. package/dist/memory/memory-export-md.d.ts +0 -12
  152. package/dist/memory/memory-export-md.d.ts.map +0 -1
  153. package/dist/memory/memory-export-md.js +0 -188
  154. package/dist/memory/memory-export-md.js.map +0 -1
  155. package/dist/memory/mmr-reranker.d.ts +0 -39
  156. package/dist/memory/mmr-reranker.d.ts.map +0 -1
  157. package/dist/memory/mmr-reranker.js +0 -115
  158. package/dist/memory/mmr-reranker.js.map +0 -1
  159. package/dist/memory/pre-flight.d.ts +0 -24
  160. package/dist/memory/pre-flight.d.ts.map +0 -1
  161. package/dist/memory/pre-flight.js +0 -121
  162. package/dist/memory/pre-flight.js.map +0 -1
  163. package/dist/memory/preference-learner.d.ts +0 -28
  164. package/dist/memory/preference-learner.d.ts.map +0 -1
  165. package/dist/memory/preference-learner.js +0 -144
  166. package/dist/memory/preference-learner.js.map +0 -1
  167. package/dist/memory/query-expansion.d.ts +0 -28
  168. package/dist/memory/query-expansion.d.ts.map +0 -1
  169. package/dist/memory/query-expansion.js +0 -140
  170. package/dist/memory/query-expansion.js.map +0 -1
  171. package/dist/memory/regression-guard.d.ts +0 -35
  172. package/dist/memory/regression-guard.d.ts.map +0 -1
  173. package/dist/memory/regression-guard.js +0 -90
  174. package/dist/memory/regression-guard.js.map +0 -1
  175. package/dist/memory/resume-work.d.ts +0 -37
  176. package/dist/memory/resume-work.d.ts.map +0 -1
  177. package/dist/memory/resume-work.js +0 -141
  178. package/dist/memory/resume-work.js.map +0 -1
  179. package/dist/memory/soul-manager.d.ts +0 -30
  180. package/dist/memory/soul-manager.d.ts.map +0 -1
  181. package/dist/memory/soul-manager.js +0 -171
  182. package/dist/memory/soul-manager.js.map +0 -1
  183. package/dist/memory/success-tracker.d.ts +0 -33
  184. package/dist/memory/success-tracker.d.ts.map +0 -1
  185. package/dist/memory/success-tracker.js +0 -75
  186. package/dist/memory/success-tracker.js.map +0 -1
  187. package/dist/memory/tool-recommender.d.ts +0 -29
  188. package/dist/memory/tool-recommender.d.ts.map +0 -1
  189. package/dist/memory/tool-recommender.js +0 -117
  190. package/dist/memory/tool-recommender.js.map +0 -1
  191. package/dist/memory/usage-stats.d.ts +0 -98
  192. package/dist/memory/usage-stats.d.ts.map +0 -1
  193. package/dist/memory/usage-stats.js +0 -345
  194. package/dist/memory/usage-stats.js.map +0 -1
  195. package/dist/utils/extract-tags.d.ts +0 -16
  196. package/dist/utils/extract-tags.d.ts.map +0 -1
  197. package/dist/utils/extract-tags.js +0 -40
  198. package/dist/utils/extract-tags.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"cross-memory-linker.d.ts","sourceRoot":"","sources":["../../src/memory/cross-memory-linker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,UAAU,CAAC;AAEtD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,GAAG,MAAM,CAyEtF"}
@@ -1,115 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.autoLinkMemory = autoLinkMemory;
4
- /**
5
- * After storing a new memory, auto-link it to related existing memories.
6
- * Uses 3 signals: shared files, shared tags, and word overlap.
7
- */
8
- function autoLinkMemory(memoryStore, newMemory) {
9
- let linksCreated = 0;
10
- try {
11
- // 1. Find memories sharing the same files
12
- const fileRelated = [];
13
- if (newMemory.relatedFiles && newMemory.relatedFiles.length > 0) {
14
- for (const file of newMemory.relatedFiles.slice(0, 3)) {
15
- const basename = file.split(/[/\\]/).pop() || file;
16
- const related = memoryStore.getByFile(basename, 10);
17
- for (const m of related) {
18
- if (m.id !== newMemory.id && m.isActive) {
19
- fileRelated.push(m);
20
- }
21
- }
22
- }
23
- }
24
- // 2. Find memories sharing tags
25
- const tagRelated = [];
26
- const newTags = parseTags(newMemory.tags);
27
- if (newTags.length > 0) {
28
- for (const tag of newTags.slice(0, 3)) {
29
- try {
30
- const tagged = memoryStore.findByTag(tag, 10);
31
- for (const m of tagged) {
32
- if (m.id !== newMemory.id && m.isActive) {
33
- tagRelated.push(m);
34
- }
35
- }
36
- }
37
- catch { /* tag search might fail */ }
38
- }
39
- }
40
- // 3. Compute word overlap with recent memories
41
- const newWords = extractKeywords(newMemory.intent);
42
- const recentMemories = memoryStore.getActive(50);
43
- const wordRelated = [];
44
- for (const m of recentMemories) {
45
- if (m.id === newMemory.id)
46
- continue;
47
- const mWords = extractKeywords(m.intent);
48
- const overlap = wordOverlap(newWords, mWords);
49
- if (overlap >= 0.3) { // 30%+ word overlap → related
50
- wordRelated.push(m);
51
- }
52
- }
53
- // Deduplicate and create edges
54
- const seen = new Set();
55
- const candidates = [...fileRelated, ...tagRelated, ...wordRelated];
56
- for (const related of candidates) {
57
- if (seen.has(related.id))
58
- continue;
59
- seen.add(related.id);
60
- if (linksCreated >= 5)
61
- break; // Max 5 links per memory
62
- const edgeType = fileRelated.includes(related) ? 'same_file' :
63
- tagRelated.includes(related) ? 'same_topic' : 'similar';
64
- try {
65
- memoryStore.addEdge({
66
- sourceId: newMemory.id,
67
- targetId: related.id,
68
- edgeType,
69
- weight: edgeType === 'same_file' ? 0.9 :
70
- edgeType === 'same_topic' ? 0.7 : 0.5,
71
- });
72
- linksCreated++;
73
- }
74
- catch { /* edge might already exist */ }
75
- }
76
- }
77
- catch { /* don't break memory storage if linking fails */ }
78
- return linksCreated;
79
- }
80
- // ─── Helpers ──────────────────────────────────────────────────────────────────
81
- function parseTags(tags) {
82
- if (!tags)
83
- return [];
84
- if (Array.isArray(tags))
85
- return tags;
86
- if (typeof tags === 'string') {
87
- try {
88
- return JSON.parse(tags);
89
- }
90
- catch {
91
- return [];
92
- }
93
- }
94
- return [];
95
- }
96
- function extractKeywords(text) {
97
- const STOP = new Set(['the', 'a', 'an', 'is', 'are', 'was', 'were', 'to', 'of', 'in',
98
- 'for', 'on', 'with', 'at', 'by', 'from', 'use', 'always', 'never', 'should',
99
- 'must', 'not', 'do', 'be', 'it', 'this', 'that', 'and', 'or', 'but', 'we', 'i']);
100
- return new Set(text.toLowerCase()
101
- .replace(/[^a-z0-9\s]/g, ' ')
102
- .split(/\s+/)
103
- .filter(w => w.length > 2 && !STOP.has(w)));
104
- }
105
- function wordOverlap(a, b) {
106
- if (a.size === 0 || b.size === 0)
107
- return 0;
108
- let shared = 0;
109
- for (const word of a) {
110
- if (b.has(word))
111
- shared++;
112
- }
113
- return shared / Math.min(a.size, b.size);
114
- }
115
- //# sourceMappingURL=cross-memory-linker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cross-memory-linker.js","sourceRoot":"","sources":["../../src/memory/cross-memory-linker.ts"],"names":[],"mappings":"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"}
@@ -1,30 +0,0 @@
1
- export interface DiaryEntry {
2
- type: 'decision' | 'correction' | 'bug_fix' | 'convention' | 'insight' | 'task' | 'file_change';
3
- content: string;
4
- file?: string;
5
- }
6
- /**
7
- * Append an entry to today's diary.
8
- */
9
- export declare function appendDiaryEntry(entry: DiaryEntry): void;
10
- /**
11
- * Get diary content for a specific date.
12
- */
13
- export declare function getDiaryForDate(date: string): string | null;
14
- /**
15
- * Get the last N days of diary entries combined.
16
- */
17
- export declare function getRecentDiary(days?: number): string;
18
- /**
19
- * Format diary context for injection into force_recall.
20
- * Returns last 2 days of diary, condensed.
21
- */
22
- export declare function formatDiaryContext(): string;
23
- /**
24
- * Get diary stats for dashboard.
25
- */
26
- export declare function getDiaryStats(): {
27
- totalDays: number;
28
- todayEntries: number;
29
- };
30
- //# sourceMappingURL=daily-diary.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"daily-diary.d.ts","sourceRoot":"","sources":["../../src/memory/daily-diary.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,UAAU,GAAG,YAAY,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,GAAG,MAAM,GAAG,aAAa,CAAC;IAChG,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAID;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAoBxD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ3D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,GAAE,MAAU,GAAG,MAAM,CAevD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAU3C;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAY3E"}
@@ -1,159 +0,0 @@
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.appendDiaryEntry = appendDiaryEntry;
37
- exports.getDiaryForDate = getDiaryForDate;
38
- exports.getRecentDiary = getRecentDiary;
39
- exports.formatDiaryContext = formatDiaryContext;
40
- exports.getDiaryStats = getDiaryStats;
41
- /**
42
- * Daily Diary — OpenClaw-style daily Markdown logs.
43
- *
44
- * Writes append-only daily notes like OpenClaw's memory/YYYY-MM-DD.md.
45
- * Each day gets its own file with timestamped entries:
46
- * - What was learned
47
- * - What files changed
48
- * - What decisions were made
49
- * - What bugs were fixed
50
- *
51
- * This gives the AI a "running journal" of recent work.
52
- * Injected into force_recall as Layer 7.5 (recent context).
53
- *
54
- * Stored in: ~/.cortex-memory/diary/YYYY-MM-DD.md
55
- */
56
- const fs = __importStar(require("fs"));
57
- const path = __importStar(require("path"));
58
- const os = __importStar(require("os"));
59
- const DIARY_DIR = path.join(os.homedir(), '.cortex-memory', 'diary');
60
- /**
61
- * Append an entry to today's diary.
62
- */
63
- function appendDiaryEntry(entry) {
64
- try {
65
- if (!fs.existsSync(DIARY_DIR))
66
- fs.mkdirSync(DIARY_DIR, { recursive: true });
67
- const today = getDateString();
68
- const diaryPath = path.join(DIARY_DIR, `${today}.md`);
69
- const time = new Date().toLocaleTimeString('en-US', { hour12: false, hour: '2-digit', minute: '2-digit' });
70
- const icon = ICONS[entry.type] || '📝';
71
- const fileSuffix = entry.file ? ` _(${path.basename(entry.file)})_` : '';
72
- const line = `- ${time} ${icon} **${entry.type.toUpperCase()}**: ${entry.content}${fileSuffix}\n`;
73
- // Create header if new file
74
- if (!fs.existsSync(diaryPath)) {
75
- const header = `# 📔 Cortex Diary — ${today}\n\n`;
76
- fs.writeFileSync(diaryPath, header, 'utf-8');
77
- }
78
- fs.appendFileSync(diaryPath, line, 'utf-8');
79
- }
80
- catch { /* diary is non-critical */ }
81
- }
82
- /**
83
- * Get diary content for a specific date.
84
- */
85
- function getDiaryForDate(date) {
86
- try {
87
- const diaryPath = path.join(DIARY_DIR, `${date}.md`);
88
- if (fs.existsSync(diaryPath)) {
89
- return fs.readFileSync(diaryPath, 'utf-8');
90
- }
91
- }
92
- catch { /* */ }
93
- return null;
94
- }
95
- /**
96
- * Get the last N days of diary entries combined.
97
- */
98
- function getRecentDiary(days = 3) {
99
- const entries = [];
100
- const now = Date.now();
101
- const DAY = 24 * 60 * 60 * 1000;
102
- for (let i = 0; i < days; i++) {
103
- const date = new Date(now - i * DAY);
104
- const dateStr = formatDate(date);
105
- const content = getDiaryForDate(dateStr);
106
- if (content && content.trim().length > 50) {
107
- entries.push(content.trim());
108
- }
109
- }
110
- return entries.join('\n\n---\n\n');
111
- }
112
- /**
113
- * Format diary context for injection into force_recall.
114
- * Returns last 2 days of diary, condensed.
115
- */
116
- function formatDiaryContext() {
117
- const diary = getRecentDiary(2);
118
- if (!diary || diary.length < 50)
119
- return '';
120
- // Truncate to last 20 entries to avoid flooding context
121
- const lines = diary.split('\n').filter(l => l.startsWith('- '));
122
- const recent = lines.slice(-20);
123
- if (recent.length === 0)
124
- return '';
125
- return `\n## 📔 Recent Diary (last 2 days)\n${recent.join('\n')}`;
126
- }
127
- /**
128
- * Get diary stats for dashboard.
129
- */
130
- function getDiaryStats() {
131
- try {
132
- if (!fs.existsSync(DIARY_DIR))
133
- return { totalDays: 0, todayEntries: 0 };
134
- const files = fs.readdirSync(DIARY_DIR).filter(f => f.endsWith('.md'));
135
- const today = getDiaryForDate(getDateString());
136
- const todayEntries = today ? today.split('\n').filter(l => l.startsWith('- ')).length : 0;
137
- return { totalDays: files.length, todayEntries };
138
- }
139
- catch {
140
- return { totalDays: 0, todayEntries: 0 };
141
- }
142
- }
143
- // ─── Helpers ──────────────────────────────────────────────────────────────────
144
- const ICONS = {
145
- decision: '📌',
146
- correction: '🔴',
147
- bug_fix: '🐛',
148
- convention: '📏',
149
- insight: '💡',
150
- task: '📋',
151
- file_change: '📁',
152
- };
153
- function getDateString() {
154
- return formatDate(new Date());
155
- }
156
- function formatDate(d) {
157
- return d.toISOString().split('T')[0]; // YYYY-MM-DD
158
- }
159
- //# sourceMappingURL=daily-diary.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"daily-diary.js","sourceRoot":"","sources":["../../src/memory/daily-diary.ts"],"names":[],"mappings":"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"}
@@ -1,32 +0,0 @@
1
- /**
2
- * Embedding Cache — Avoids re-computing embeddings for identical text.
3
- *
4
- * Extracted from OpenClaw's embedding_cache table architecture.
5
- *
6
- * Problem: Every recall re-embeds the query, even if it's the exact same text.
7
- * With MiniLM this takes ~50ms per embedding — adds up fast.
8
- *
9
- * Solution: Cache embeddings in memory with an LRU eviction policy.
10
- * Cache key = hash of the text content.
11
- */
12
- /**
13
- * Get a cached embedding for text, or null if not cached.
14
- */
15
- export declare function getCachedEmbedding(text: string): number[] | null;
16
- /**
17
- * Store an embedding in the cache.
18
- * Uses LRU eviction when cache is full.
19
- */
20
- export declare function cacheEmbedding(text: string, embedding: number[]): void;
21
- /**
22
- * Clear the entire embedding cache.
23
- */
24
- export declare function clearEmbeddingCache(): void;
25
- /**
26
- * Get cache stats for debugging/dashboard.
27
- */
28
- export declare function getEmbeddingCacheStats(): {
29
- size: number;
30
- maxSize: number;
31
- };
32
- //# sourceMappingURL=embedding-cache.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"embedding-cache.d.ts","sourceRoot":"","sources":["../../src/memory/embedding-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAuBH;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAQhE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAiBtE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAE1E"}
@@ -1,76 +0,0 @@
1
- "use strict";
2
- /**
3
- * Embedding Cache — Avoids re-computing embeddings for identical text.
4
- *
5
- * Extracted from OpenClaw's embedding_cache table architecture.
6
- *
7
- * Problem: Every recall re-embeds the query, even if it's the exact same text.
8
- * With MiniLM this takes ~50ms per embedding — adds up fast.
9
- *
10
- * Solution: Cache embeddings in memory with an LRU eviction policy.
11
- * Cache key = hash of the text content.
12
- */
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.getCachedEmbedding = getCachedEmbedding;
15
- exports.cacheEmbedding = cacheEmbedding;
16
- exports.clearEmbeddingCache = clearEmbeddingCache;
17
- exports.getEmbeddingCacheStats = getEmbeddingCacheStats;
18
- const CACHE_MAX = 256;
19
- const cache = new Map();
20
- /**
21
- * Simple FNV-1a hash — fast and good enough for cache keys.
22
- */
23
- function hashText(text) {
24
- let hash = 0x811c9dc5;
25
- for (let i = 0; i < text.length; i++) {
26
- hash ^= text.charCodeAt(i);
27
- hash = (hash * 0x01000193) >>> 0;
28
- }
29
- return hash.toString(36);
30
- }
31
- /**
32
- * Get a cached embedding for text, or null if not cached.
33
- */
34
- function getCachedEmbedding(text) {
35
- const key = hashText(text);
36
- const entry = cache.get(key);
37
- if (entry) {
38
- entry.timestamp = Date.now(); // Touch for LRU
39
- return entry.embedding;
40
- }
41
- return null;
42
- }
43
- /**
44
- * Store an embedding in the cache.
45
- * Uses LRU eviction when cache is full.
46
- */
47
- function cacheEmbedding(text, embedding) {
48
- const key = hashText(text);
49
- // LRU eviction if full
50
- if (cache.size >= CACHE_MAX && !cache.has(key)) {
51
- let oldestKey = '';
52
- let oldestTime = Infinity;
53
- for (const [k, v] of cache) {
54
- if (v.timestamp < oldestTime) {
55
- oldestTime = v.timestamp;
56
- oldestKey = k;
57
- }
58
- }
59
- if (oldestKey)
60
- cache.delete(oldestKey);
61
- }
62
- cache.set(key, { embedding, timestamp: Date.now() });
63
- }
64
- /**
65
- * Clear the entire embedding cache.
66
- */
67
- function clearEmbeddingCache() {
68
- cache.clear();
69
- }
70
- /**
71
- * Get cache stats for debugging/dashboard.
72
- */
73
- function getEmbeddingCacheStats() {
74
- return { size: cache.size, maxSize: CACHE_MAX };
75
- }
76
- //# sourceMappingURL=embedding-cache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"embedding-cache.js","sourceRoot":"","sources":["../../src/memory/embedding-cache.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AA0BH,gDAQC;AAMD,wCAiBC;AAKD,kDAEC;AAKD,wDAEC;AArED,MAAM,SAAS,GAAG,GAAG,CAAC;AAOtB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;AAE5C;;GAEG;AACH,SAAS,QAAQ,CAAC,IAAY;IAC1B,IAAI,IAAI,GAAG,UAAU,CAAC;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,GAAG,CAAC,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,IAAY;IAC3C,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,KAAK,EAAE,CAAC;QACR,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,gBAAgB;QAC9C,OAAO,KAAK,CAAC,SAAS,CAAC;IAC3B,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,SAAgB,cAAc,CAAC,IAAY,EAAE,SAAmB;IAC5D,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE3B,uBAAuB;IACvB,IAAI,KAAK,CAAC,IAAI,IAAI,SAAS,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7C,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,UAAU,GAAG,QAAQ,CAAC;QAC1B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,CAAC,SAAS,GAAG,UAAU,EAAE,CAAC;gBAC3B,UAAU,GAAG,CAAC,CAAC,SAAS,CAAC;gBACzB,SAAS,GAAG,CAAC,CAAC;YAClB,CAAC;QACL,CAAC;QACD,IAAI,SAAS;YAAE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB;IAC/B,KAAK,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAgB,sBAAsB;IAClC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AACpD,CAAC"}
@@ -1,26 +0,0 @@
1
- /**
2
- * Error Learner — Auto-captures build/test error patterns.
3
- *
4
- * When build output or test output contains errors, this module:
5
- * 1. Extracts the error pattern (TS error codes, common messages)
6
- * 2. Maps to a human-readable lesson ("TS2345: argument type mismatch")
7
- * 3. Stores as BUG_FIX memory so the AI avoids repeating the same mistake
8
- *
9
- * This is the #1 gap: the AI keeps making the same TS compile errors
10
- * because it forgets what went wrong last time.
11
- */
12
- export interface ErrorPattern {
13
- errorType: string;
14
- message: string;
15
- file?: string;
16
- confidence: number;
17
- }
18
- /**
19
- * Extract error patterns from build/test output text.
20
- */
21
- export declare function extractErrorPatterns(text: string): ErrorPattern[];
22
- /**
23
- * Check if text contains build/test error indicators.
24
- */
25
- export declare function containsErrors(text: string): boolean;
26
- //# sourceMappingURL=error-learner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error-learner.d.ts","sourceRoot":"","sources":["../../src/memory/error-learner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,YAAY;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACtB;AAyBD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CAwFjE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAcpD"}
@@ -1,145 +0,0 @@
1
- "use strict";
2
- /**
3
- * Error Learner — Auto-captures build/test error patterns.
4
- *
5
- * When build output or test output contains errors, this module:
6
- * 1. Extracts the error pattern (TS error codes, common messages)
7
- * 2. Maps to a human-readable lesson ("TS2345: argument type mismatch")
8
- * 3. Stores as BUG_FIX memory so the AI avoids repeating the same mistake
9
- *
10
- * This is the #1 gap: the AI keeps making the same TS compile errors
11
- * because it forgets what went wrong last time.
12
- */
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.extractErrorPatterns = extractErrorPatterns;
15
- exports.containsErrors = containsErrors;
16
- // ─── TypeScript Error Patterns ────────────────────────────────────────────────
17
- const TS_ERROR_LESSONS = {
18
- 'TS2345': 'Argument type mismatch — check function parameter types match expected signatures',
19
- 'TS2322': 'Type assignment error — ensure the value matches the declared type',
20
- 'TS2339': 'Property does not exist — check spelling or add the property to the interface',
21
- 'TS2304': 'Cannot find name — missing import or undeclared variable',
22
- 'TS2305': 'Module has no exported member — check the export name matches exactly',
23
- 'TS2307': 'Cannot find module — check the import path is correct',
24
- 'TS2554': 'Wrong number of arguments — check function signature for required params',
25
- 'TS2769': 'No overload matches this call — check argument types against all overload signatures',
26
- 'TS7006': 'Parameter implicitly has any type — add explicit type annotation',
27
- 'TS2741': 'Missing property in type — add required properties to the object',
28
- 'TS18046': 'Variable is of type unknown — add type assertion or type guard',
29
- 'TS2352': 'Conversion of type may be a mistake — use "as unknown as T" for forced cast',
30
- 'TS1005': 'Expected token — syntax error, check for missing brackets/semicolons',
31
- 'TS2531': 'Object is possibly null — add null check or use optional chaining',
32
- 'TS2532': 'Object is possibly undefined — add undefined check or use optional chaining',
33
- 'TS2349': 'Not callable — value is not a function, check the type',
34
- 'TS2551': 'Property does not exist, did you mean? — typo in property name',
35
- 'TS6133': 'Declared but never used — remove unused variable or prefix with _',
36
- };
37
- /**
38
- * Extract error patterns from build/test output text.
39
- */
40
- function extractErrorPatterns(text) {
41
- const errors = [];
42
- const seen = new Set();
43
- // 1. TypeScript errors: TS2345, TS2322, etc.
44
- const tsErrorRegex = /(?:error\s+)?(TS\d{4,5})\s*:\s*(.+?)(?:\r?\n|$)/gi;
45
- let match;
46
- while ((match = tsErrorRegex.exec(text)) !== null) {
47
- const code = match[1].toUpperCase();
48
- const msg = match[2].trim().slice(0, 150);
49
- if (seen.has(code))
50
- continue;
51
- seen.add(code);
52
- const lesson = TS_ERROR_LESSONS[code] || `${code}: ${msg}`;
53
- errors.push({
54
- errorType: code,
55
- message: lesson,
56
- confidence: 0.90,
57
- });
58
- }
59
- // 2. TypeScript "not assignable" pattern (without error code)
60
- if (!seen.has('TYPE_MISMATCH')) {
61
- const assignRegex = /Type '([^']+)' is not assignable to type '([^']+)'/gi;
62
- while ((match = assignRegex.exec(text)) !== null) {
63
- if (seen.has('TYPE_MISMATCH'))
64
- break;
65
- seen.add('TYPE_MISMATCH');
66
- errors.push({
67
- errorType: 'TYPE_MISMATCH',
68
- message: `Type mismatch: '${match[1].slice(0, 40)}' cannot be assigned to '${match[2].slice(0, 40)}' — check type compatibility`,
69
- confidence: 0.85,
70
- });
71
- }
72
- }
73
- // 3. Module not found
74
- const moduleRegex = /(?:Cannot find module|Module not found)[:\s]+['"]([^'"]+)['"]/gi;
75
- while ((match = moduleRegex.exec(text)) !== null) {
76
- const mod = match[1];
77
- if (seen.has(`MOD:${mod}`))
78
- continue;
79
- seen.add(`MOD:${mod}`);
80
- errors.push({
81
- errorType: 'MODULE_NOT_FOUND',
82
- message: `Module '${mod}' not found — verify it's installed in package.json and the import path is correct`,
83
- confidence: 0.90,
84
- });
85
- }
86
- // 4. Property does not exist on type
87
- const propRegex = /Property '(\w+)' does not exist on type '([^']+)'/gi;
88
- while ((match = propRegex.exec(text)) !== null) {
89
- const key = `PROP:${match[1]}`;
90
- if (seen.has(key))
91
- continue;
92
- seen.add(key);
93
- errors.push({
94
- errorType: 'MISSING_PROPERTY',
95
- message: `Property '${match[1]}' not on type '${match[2].slice(0, 40)}' — check interface definition or use type assertion`,
96
- confidence: 0.85,
97
- });
98
- }
99
- // 5. Test failures
100
- const testFailRegex = /(?:FAIL|FAILED|Error)[\s:]+(.+?test.+?)(?:\r?\n|$)/gi;
101
- while ((match = testFailRegex.exec(text)) !== null) {
102
- const key = `TEST:${match[1].slice(0, 30)}`;
103
- if (seen.has(key))
104
- continue;
105
- seen.add(key);
106
- errors.push({
107
- errorType: 'TEST_FAILURE',
108
- message: `Test failed: ${match[1].trim().slice(0, 100)}`,
109
- file: match[1].trim(),
110
- confidence: 0.75,
111
- });
112
- }
113
- // 6. Function signature mismatch
114
- const sigRegex = /Expected (\d+) arguments?, but got (\d+)/gi;
115
- while ((match = sigRegex.exec(text)) !== null) {
116
- if (seen.has('SIG_MISMATCH'))
117
- continue;
118
- seen.add('SIG_MISMATCH');
119
- errors.push({
120
- errorType: 'SIGNATURE_MISMATCH',
121
- message: `Wrong argument count: expected ${match[1]} but got ${match[2]} — check the function signature`,
122
- confidence: 0.90,
123
- });
124
- }
125
- return errors;
126
- }
127
- /**
128
- * Check if text contains build/test error indicators.
129
- */
130
- function containsErrors(text) {
131
- const errorIndicators = [
132
- /error TS\d{4}/i,
133
- /\bFAIL\b.*test/i,
134
- /Build failed/i,
135
- /compilation error/i,
136
- /Cannot find module/i,
137
- /SyntaxError:/i,
138
- /TypeError:/i,
139
- /ReferenceError:/i,
140
- /npm ERR!/,
141
- /Exit code: [1-9]/,
142
- ];
143
- return errorIndicators.some(r => r.test(text));
144
- }
145
- //# sourceMappingURL=error-learner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error-learner.js","sourceRoot":"","sources":["../../src/memory/error-learner.ts"],"names":[],"mappings":"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"}