kimi-code-memory-mcp-server 0.1.1 → 0.1.2

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 (120) hide show
  1. package/CHANGELOG.md +14 -1
  2. package/README.en.md +342 -0
  3. package/README.md +214 -137
  4. package/assets/contextFlow.svg +144 -0
  5. package/dist/config.d.ts +13 -0
  6. package/dist/config.js +13 -0
  7. package/dist/config.js.map +1 -1
  8. package/dist/context/wire-context.d.ts +3 -0
  9. package/dist/context/wire-context.js +20 -50
  10. package/dist/context/wire-context.js.map +1 -1
  11. package/dist/dao/constants.d.ts +33 -0
  12. package/dist/dao/constants.js +17 -0
  13. package/dist/dao/constants.js.map +1 -0
  14. package/dist/dao/index-catalog.d.ts +19 -0
  15. package/dist/dao/index-catalog.js +94 -0
  16. package/dist/dao/index-catalog.js.map +1 -0
  17. package/dist/dao/index-reconciler.d.ts +13 -0
  18. package/dist/dao/index-reconciler.js +162 -0
  19. package/dist/dao/index-reconciler.js.map +1 -0
  20. package/dist/dao/index-store.d.ts +31 -0
  21. package/dist/dao/index-store.js +128 -0
  22. package/dist/dao/index-store.js.map +1 -0
  23. package/dist/dao/index.d.ts +12 -31
  24. package/dist/dao/index.js +50 -404
  25. package/dist/dao/index.js.map +1 -1
  26. package/dist/dao/memory-store.js +2 -10
  27. package/dist/dao/memory-store.js.map +1 -1
  28. package/dist/dao/memory-tree-renderer.d.ts +22 -0
  29. package/dist/dao/memory-tree-renderer.js +75 -0
  30. package/dist/dao/memory-tree-renderer.js.map +1 -0
  31. package/dist/prompts/index.d.ts +26 -0
  32. package/dist/prompts/index.js +103 -0
  33. package/dist/prompts/index.js.map +1 -0
  34. package/dist/refine/adapter.d.ts +6 -0
  35. package/dist/refine/adapter.js +28 -0
  36. package/dist/refine/adapter.js.map +1 -0
  37. package/dist/refine/constants.d.ts +35 -0
  38. package/dist/refine/constants.js +107 -0
  39. package/dist/refine/constants.js.map +1 -0
  40. package/dist/refine/extractor.d.ts +12 -0
  41. package/dist/refine/extractor.js +122 -0
  42. package/dist/refine/extractor.js.map +1 -0
  43. package/dist/refine/store.d.ts +19 -0
  44. package/dist/refine/store.js +139 -0
  45. package/dist/refine/store.js.map +1 -0
  46. package/dist/refine/types.d.ts +56 -0
  47. package/dist/refine/types.js +5 -0
  48. package/dist/refine/types.js.map +1 -0
  49. package/dist/refined-manager.d.ts +10 -56
  50. package/dist/refined-manager.js +22 -341
  51. package/dist/refined-manager.js.map +1 -1
  52. package/dist/resources/index.d.ts +15 -0
  53. package/dist/resources/index.js +134 -0
  54. package/dist/resources/index.js.map +1 -0
  55. package/dist/server.js +46 -2
  56. package/dist/server.js.map +1 -1
  57. package/dist/tools/context-tools.d.ts +16 -51
  58. package/dist/tools/context-tools.js +247 -55
  59. package/dist/tools/context-tools.js.map +1 -1
  60. package/dist/tools/index.d.ts +5 -827
  61. package/dist/tools/index.js +23 -354
  62. package/dist/tools/index.js.map +1 -1
  63. package/dist/tools/memory-tools.d.ts +4 -60
  64. package/dist/tools/memory-tools.js +129 -79
  65. package/dist/tools/memory-tools.js.map +1 -1
  66. package/dist/tools/system-tools.d.ts +3 -34
  67. package/dist/tools/system-tools.js +86 -32
  68. package/dist/tools/system-tools.js.map +1 -1
  69. package/dist/tools/theme-tools.d.ts +3 -31
  70. package/dist/tools/theme-tools.js +78 -22
  71. package/dist/tools/theme-tools.js.map +1 -1
  72. package/dist/tools/types.d.ts +21 -0
  73. package/dist/tools/types.js +13 -0
  74. package/dist/tools/types.js.map +1 -0
  75. package/dist/types.d.ts +4 -2
  76. package/dist/utils/action-entities.d.ts +16 -0
  77. package/dist/utils/action-entities.js +35 -0
  78. package/dist/utils/action-entities.js.map +1 -0
  79. package/dist/utils/date.d.ts +11 -0
  80. package/dist/utils/date.js +13 -0
  81. package/dist/utils/date.js.map +1 -0
  82. package/dist/utils/file-helpers.d.ts +10 -0
  83. package/dist/utils/file-helpers.js +28 -0
  84. package/dist/utils/file-helpers.js.map +1 -0
  85. package/dist/utils/headings.d.ts +5 -0
  86. package/dist/utils/headings.js +21 -0
  87. package/dist/utils/headings.js.map +1 -0
  88. package/dist/utils/search.d.ts +17 -0
  89. package/dist/utils/search.js +60 -0
  90. package/dist/utils/search.js.map +1 -0
  91. package/dist/utils/tools.d.ts +5 -0
  92. package/dist/utils/tools.js +10 -0
  93. package/dist/utils/tools.js.map +1 -0
  94. package/dist/vis/api.d.ts +82 -0
  95. package/dist/vis/api.js +212 -0
  96. package/dist/vis/api.js.map +1 -0
  97. package/dist/vis/auto-start.d.ts +12 -0
  98. package/dist/vis/auto-start.js +87 -0
  99. package/dist/vis/auto-start.js.map +1 -0
  100. package/dist/vis/server.d.ts +14 -0
  101. package/dist/vis/server.js +103 -0
  102. package/dist/vis/server.js.map +1 -0
  103. package/dist/vis/static/app.js +395 -0
  104. package/dist/vis/static/index.html +95 -0
  105. package/dist/vis/static/style.css +707 -0
  106. package/dist/vis-cli.d.ts +7 -0
  107. package/dist/vis-cli.js +140 -0
  108. package/dist/vis-cli.js.map +1 -0
  109. package/docs/0.agent-memory-market-research.md +354 -0
  110. package/docs/1.memory-system-proposal-for-kimi-code.md +688 -0
  111. package/docs/2.memory-architecture-overview.md +417 -0
  112. package/docs/3.memory-skill-prompt-design.md +430 -0
  113. package/docs/4.kimi-code-native-evolution-roadmap.md +559 -0
  114. package/docs/5.decision-guard-design-notes.md +500 -0
  115. package/docs/ARCHITECTURE.md +2 -2
  116. package/docs/design-story.md +350 -0
  117. package/docs/three-layer-memory-model.md +153 -0
  118. package/docs/three-layer-memory-model.zh-CN.md +153 -0
  119. package/package.json +12 -6
  120. package/README.zh-CN.md +0 -292
package/dist/dao/index.js CHANGED
@@ -3,307 +3,72 @@
3
3
  *
4
4
  * File layer is the source of truth; index.json is a rebuildable cache of
5
5
  * metadata (title, tags, folder comments).
6
+ *
7
+ * IndexDao is a thin facade over IndexStore, IndexReconciler, IndexCatalog, and
8
+ * MemoryIndexTreeRenderer.
6
9
  */
7
- import fs from 'fs';
8
10
  import path from 'path';
9
- import crypto from 'crypto';
10
- import { parseFrontmatter } from '../utils/frontmatter.js';
11
11
  import { relativeStorePath } from '../utils/paths.js';
12
- import { toTitle } from '../utils/validation.js';
13
- import { Mutex } from '../utils/mutex.js';
14
- const FALLBACK_FOLDER_COMMENTS = {
15
- memory: '完整记忆索引(按领域分组)',
16
- decisions: '关键产品/架构决策',
17
- rules: '协作规则与编码红线',
18
- knowledge: '项目知识',
19
- architecture: '架构与数据模型',
20
- frontend: '前端与渲染',
21
- product: '产品与版型',
22
- engineering: '工程实践',
23
- reference: '参考文档',
24
- notes: '日常速记',
25
- essence: '整理后的工作区精要',
26
- };
27
- function createEmptyIndex() {
28
- return {
29
- version: '3-kv',
30
- meta: { lastSyncAt: null, structureHash: null },
31
- index: {},
32
- };
33
- }
34
- function safeParseFile(filePath) {
35
- try {
36
- const text = fs.readFileSync(filePath, 'utf8');
37
- return parseFrontmatter(text) || { frontmatter: {}, body: text };
38
- }
39
- catch {
40
- return null;
41
- }
42
- }
12
+ import { FALLBACK_FOLDER_COMMENTS } from './constants.js';
13
+ import { IndexStore } from './index-store.js';
14
+ import { IndexReconciler } from './index-reconciler.js';
15
+ import { IndexCatalog } from './index-catalog.js';
16
+ import { MemoryIndexTreeRenderer } from './memory-tree-renderer.js';
17
+ export * from './constants.js';
43
18
  export class IndexDao {
44
19
  storeRoot;
45
20
  backupRoot;
46
21
  indexCache;
47
- mutex;
22
+ store;
23
+ reconciler;
24
+ catalog;
25
+ renderer;
48
26
  constructor(storeRoot, options = {}) {
49
27
  this.storeRoot = storeRoot;
50
28
  this.backupRoot = options.backupRoot || path.join(storeRoot, '..', 'backup');
51
29
  this.indexCache = null;
52
- this.mutex = new Mutex();
30
+ this.store = new IndexStore(storeRoot, options);
31
+ this.reconciler = new IndexReconciler(storeRoot, this.store);
32
+ this.catalog = new IndexCatalog(storeRoot, this.store);
33
+ this.renderer = new MemoryIndexTreeRenderer();
53
34
  }
54
35
  get indexPath() {
55
- return path.join(this.storeRoot, 'index.json');
36
+ return this.store.indexPath;
56
37
  }
57
38
  loadIndex() {
58
- if (this.indexCache)
59
- return this.indexCache;
60
- if (!fs.existsSync(this.indexPath)) {
61
- this.indexCache = createEmptyIndex();
62
- return this.indexCache;
63
- }
64
- try {
65
- const text = fs.readFileSync(this.indexPath, 'utf8');
66
- const parsed = JSON.parse(text);
67
- if (parsed &&
68
- typeof parsed === 'object' &&
69
- parsed.version === '3-kv' &&
70
- typeof parsed.index === 'object') {
71
- this.indexCache = parsed;
72
- return this.indexCache;
73
- }
74
- if (parsed &&
75
- typeof parsed === 'object' &&
76
- parsed.version === 1 &&
77
- typeof parsed.entries === 'object') {
78
- const backupId = this.getBackupId();
79
- this.backupIndex(backupId);
80
- this.indexCache = this.migrateV1ToV3(parsed);
81
- this.saveIndex(this.indexCache);
82
- return this.indexCache;
83
- }
84
- }
85
- catch {
86
- // Corrupt index: fall through to empty index.
87
- }
88
- this.indexCache = createEmptyIndex();
89
- return this.indexCache;
39
+ return this.store.loadIndex();
90
40
  }
91
41
  saveIndex(index) {
92
- index.meta.lastSyncAt = new Date().toISOString();
93
- const tmpPath = this.indexPath + '.tmp';
94
- fs.writeFileSync(tmpPath, JSON.stringify(index, null, 2), 'utf8');
95
- fs.renameSync(tmpPath, this.indexPath);
96
- this.indexCache = index;
97
- }
98
- async runExclusive(fn) {
99
- return this.mutex.runExclusive(fn);
42
+ this.store.saveIndex(index);
100
43
  }
101
44
  getIndex() {
102
- return this.loadIndex();
45
+ return this.store.getIndex();
103
46
  }
104
47
  getBackupId() {
105
- const now = new Date();
106
- const yy = String(now.getFullYear()).slice(2);
107
- const mm = String(now.getMonth() + 1).padStart(2, '0');
108
- const dd = String(now.getDate()).padStart(2, '0');
109
- const yymmdd = `${yy}${mm}${dd}`;
110
- let seq = 1;
111
- while (fs.existsSync(path.join(this.backupRoot, `${yymmdd}_${String(seq).padStart(2, '0')}`))) {
112
- seq++;
113
- }
114
- return `${yymmdd}_${String(seq).padStart(2, '0')}`;
48
+ return this.store.getBackupId();
115
49
  }
116
50
  backupIndex(backupId) {
117
- if (!fs.existsSync(this.indexPath))
118
- return { backedUp: false };
119
- const backupPath = path.join(this.backupRoot, backupId);
120
- fs.mkdirSync(backupPath, { recursive: true });
121
- const dest = path.join(backupPath, 'index.json');
122
- fs.copyFileSync(this.indexPath, dest);
123
- return { backedUp: true, backupPath: dest };
51
+ return this.store.backupIndex(backupId);
124
52
  }
125
53
  migrateV1ToV3(v1) {
126
- const v3 = createEmptyIndex();
127
- const entries = v1.entries || {};
128
- for (const id of Object.keys(entries)) {
129
- const e = entries[id];
130
- if (!e || !e.folder || !e.key)
131
- continue;
132
- const relativePath = `${e.folder}/${e.key}.md`;
133
- v3.index[relativePath] = {
134
- title: e.title || toTitle(e.key),
135
- tags: Array.isArray(e.tags) ? e.tags : [],
136
- };
137
- }
138
- for (const key of Object.keys(v3.index)) {
139
- if (!key.endsWith('.md'))
140
- continue;
141
- const dir = path.dirname(key);
142
- const parts = dir.split('/').filter(Boolean);
143
- let current = '';
144
- for (const part of parts) {
145
- current = current ? `${current}/${part}` : part;
146
- const folderPath = `${current}/`;
147
- if (!v3.index[folderPath]) {
148
- v3.index[folderPath] = { comment: FALLBACK_FOLDER_COMMENTS[part] || '' };
149
- }
150
- }
151
- }
152
- return v3;
54
+ return this.store.migrateV1ToV3(v1);
153
55
  }
154
56
  computeStructureHash() {
155
- const paths = [];
156
- const scan = (dir, relativePrefix) => {
157
- if (!fs.existsSync(dir))
158
- return false;
159
- const entries = fs.readdirSync(dir, { withFileTypes: true });
160
- let hasContent = false;
161
- for (const entry of entries) {
162
- if (entry.name.startsWith('.'))
163
- continue;
164
- const relativePath = relativePrefix ? `${relativePrefix}/${entry.name}` : entry.name;
165
- if (entry.isDirectory()) {
166
- const childHasContent = scan(path.join(dir, entry.name), relativePath);
167
- if (childHasContent)
168
- hasContent = true;
169
- }
170
- else if (entry.isFile() && entry.name.endsWith('.md')) {
171
- const fullPath = path.join(dir, entry.name);
172
- const stats = fs.statSync(fullPath);
173
- paths.push(`${relativePath}:${stats.mtime.toISOString()}`);
174
- hasContent = true;
175
- }
176
- }
177
- if (!hasContent && relativePrefix) {
178
- paths.push(`${relativePrefix}/`);
179
- }
180
- return hasContent;
181
- };
182
- scan(path.join(this.storeRoot, 'memory'), 'memory');
183
- scan(path.join(this.storeRoot, 'notes'), 'notes');
184
- scan(path.join(this.storeRoot, 'essence'), 'essence');
185
- paths.sort();
186
- const content = paths.join('\n');
187
- return content ? crypto.createHash('md5').update(content).digest('hex') : '';
57
+ return this.reconciler.computeStructureHash();
188
58
  }
189
59
  buildEntryValueFromFile(filePath) {
190
- const parsed = safeParseFile(filePath);
191
- const key = path.basename(filePath, '.md');
192
- const title = String(parsed?.frontmatter?.title || toTitle(key));
193
- const tags = Array.isArray(parsed?.frontmatter?.tags)
194
- ? parsed.frontmatter.tags
195
- : [];
196
- return { title, tags };
60
+ return this.reconciler.buildEntryValueFromFile(filePath);
197
61
  }
198
62
  async reconcileIndex(options = {}) {
199
- return this.runExclusive(() => {
200
- const index = this.getIndex();
201
- const currentHash = this.computeStructureHash();
202
- if (currentHash &&
203
- currentHash === index.meta.structureHash &&
204
- Object.keys(index.index).length > 0) {
205
- let patched = false;
206
- if (options.folderComments) {
207
- for (let folderPath of Object.keys(options.folderComments)) {
208
- const comment = options.folderComments[folderPath];
209
- if (!folderPath.endsWith('/'))
210
- folderPath += '/';
211
- index.index[folderPath] = { comment };
212
- patched = true;
213
- }
214
- }
215
- if (patched) {
216
- this.saveIndex(index);
217
- }
218
- return {
219
- synced: true,
220
- skipped: true,
221
- structureHash: currentHash,
222
- report: {
223
- scannedFiles: 0,
224
- addedEntries: 0,
225
- removedEntries: 0,
226
- updatedEntries: 0,
227
- addedFolders: 0,
228
- },
229
- };
230
- }
231
- const report = {
232
- scannedFiles: 0,
233
- addedEntries: 0,
234
- removedEntries: 0,
235
- updatedEntries: 0,
236
- addedFolders: 0,
237
- };
238
- const diskFiles = new Set();
239
- const scanDir = (dir, relativePrefix) => {
240
- if (!fs.existsSync(dir))
241
- return;
242
- const entries = fs.readdirSync(dir, { withFileTypes: true });
243
- for (const entry of entries) {
244
- if (entry.name.startsWith('.'))
245
- continue;
246
- const relativePath = relativePrefix ? `${relativePrefix}/${entry.name}` : entry.name;
247
- if (entry.isDirectory()) {
248
- scanDir(path.join(dir, entry.name), relativePath);
249
- }
250
- else if (entry.isFile() && entry.name.endsWith('.md')) {
251
- diskFiles.add(relativePath);
252
- report.scannedFiles++;
253
- const value = this.buildEntryValueFromFile(path.join(this.storeRoot, relativePath));
254
- const existing = index.index[relativePath];
255
- if (!existing) {
256
- index.index[relativePath] = value;
257
- report.addedEntries++;
258
- }
259
- else if (existing.title !== value.title ||
260
- JSON.stringify(existing.tags) !== JSON.stringify(value.tags)) {
261
- index.index[relativePath] = value;
262
- report.updatedEntries++;
263
- }
264
- const dirPath = path.dirname(relativePath);
265
- const parts = dirPath.split('/').filter(Boolean);
266
- let current = '';
267
- for (const part of parts) {
268
- current = current ? `${current}/${part}` : part;
269
- const folderPath = `${current}/`;
270
- if (!(folderPath in index.index)) {
271
- index.index[folderPath] = { comment: FALLBACK_FOLDER_COMMENTS[part] || '' };
272
- report.addedFolders++;
273
- }
274
- }
275
- }
276
- }
277
- };
278
- scanDir(path.join(this.storeRoot, 'memory'), 'memory');
279
- scanDir(path.join(this.storeRoot, 'notes'), 'notes');
280
- scanDir(path.join(this.storeRoot, 'essence'), 'essence');
281
- for (const key of Object.keys(index.index)) {
282
- if (key.endsWith('.md') && !diskFiles.has(key)) {
283
- delete index.index[key];
284
- report.removedEntries++;
285
- }
286
- }
287
- if (options.folderComments) {
288
- for (let folderPath of Object.keys(options.folderComments)) {
289
- const comment = options.folderComments[folderPath];
290
- if (!folderPath.endsWith('/'))
291
- folderPath += '/';
292
- index.index[folderPath] = { comment };
293
- }
294
- }
295
- index.meta.structureHash = currentHash;
296
- this.saveIndex(index);
297
- return { synced: true, skipped: false, structureHash: currentHash, report };
298
- });
63
+ return this.store.runExclusive(() => this.reconciler.reconcileIndex(options));
299
64
  }
300
65
  async upsertEntry(filePath) {
301
- return this.runExclusive(() => {
66
+ return this.store.runExclusive(() => {
302
67
  const relativePath = relativeStorePath(this.storeRoot, filePath);
303
68
  if (!relativePath.endsWith('.md'))
304
69
  return;
305
- const index = this.getIndex();
306
- index.index[relativePath] = this.buildEntryValueFromFile(filePath);
70
+ const index = this.store.getIndex();
71
+ index.index[relativePath] = this.reconciler.buildEntryValueFromFile(filePath);
307
72
  const dirPath = path.dirname(relativePath);
308
73
  const parts = dirPath.split('/').filter(Boolean);
309
74
  let current = '';
@@ -315,20 +80,20 @@ export class IndexDao {
315
80
  }
316
81
  }
317
82
  index.meta.structureHash = null;
318
- this.saveIndex(index);
83
+ this.store.saveIndex(index);
319
84
  });
320
85
  }
321
86
  async deleteEntryByPath(relativePath) {
322
- return this.runExclusive(() => {
323
- const index = this.getIndex();
87
+ return this.store.runExclusive(() => {
88
+ const index = this.store.getIndex();
324
89
  delete index.index[relativePath];
325
90
  index.meta.structureHash = null;
326
- this.saveIndex(index);
91
+ this.store.saveIndex(index);
327
92
  });
328
93
  }
329
94
  async moveEntry(oldRelativePath, newRelativePath) {
330
- return this.runExclusive(() => {
331
- const index = this.getIndex();
95
+ return this.store.runExclusive(() => {
96
+ const index = this.store.getIndex();
332
97
  if (index.index[oldRelativePath]) {
333
98
  index.index[newRelativePath] = index.index[oldRelativePath];
334
99
  delete index.index[oldRelativePath];
@@ -344,147 +109,28 @@ export class IndexDao {
344
109
  }
345
110
  }
346
111
  index.meta.structureHash = null;
347
- this.saveIndex(index);
112
+ this.store.saveIndex(index);
348
113
  });
349
114
  }
350
115
  async setFolderComment(folderPath, comment) {
351
- return this.runExclusive(() => {
352
- if (!folderPath.endsWith('/'))
353
- folderPath += '/';
354
- const index = this.getIndex();
355
- index.index[folderPath] = { comment };
356
- this.saveIndex(index);
116
+ return this.store.runExclusive(() => {
117
+ let normalizedPath = folderPath;
118
+ if (!normalizedPath.endsWith('/'))
119
+ normalizedPath += '/';
120
+ const index = this.store.getIndex();
121
+ index.index[normalizedPath] = { comment };
122
+ this.store.saveIndex(index);
357
123
  });
358
124
  }
359
125
  listRefs(folder) {
360
- const index = this.getIndex().index;
361
- const prefix = folder ? (folder.endsWith('/') ? folder : `${folder}/`) : '';
362
- const keys = Object.keys(index).filter((k) => {
363
- if (!k.endsWith('.md'))
364
- return false;
365
- return !prefix || k.startsWith(prefix);
366
- });
367
- return keys
368
- .map((k) => {
369
- const value = index[k];
370
- return {
371
- key: path.basename(k, '.md'),
372
- folder: path.dirname(k),
373
- title: value.title || toTitle(path.basename(k, '.md')),
374
- tags: Array.isArray(value.tags) ? value.tags : [],
375
- };
376
- })
377
- .sort((a, b) => a.folder.localeCompare(b.folder) || a.key.localeCompare(b.key));
126
+ return this.catalog.listRefs(folder);
127
+ }
128
+ buildMemoryTreeData() {
129
+ return this.catalog.buildMemoryTreeData();
378
130
  }
379
131
  buildMemoryIndexTree(recentLimit = 5) {
380
- const index = this.getIndex().index;
381
- const root = {
382
- name: 'memory',
383
- children: new Map(),
384
- files: [],
385
- comment: index['memory/']?.comment || '',
386
- };
387
- const timeEntries = [];
388
- for (const key of Object.keys(index)) {
389
- if (!key.startsWith('memory/'))
390
- continue;
391
- if (key.endsWith('/')) {
392
- if (key === 'memory/')
393
- continue;
394
- const relativeFolder = key.slice(7, -1);
395
- const parts = relativeFolder ? relativeFolder.split('/') : [];
396
- let current = root;
397
- for (const part of parts) {
398
- let child = current.children.get(part);
399
- if (!child) {
400
- child = { name: part, children: new Map(), files: [], comment: '' };
401
- current.children.set(part, child);
402
- }
403
- current = child;
404
- }
405
- current.comment = index[key].comment || '';
406
- }
407
- else if (key.endsWith('.md')) {
408
- const relativePath = key.slice(7);
409
- const dirPart = path.dirname(relativePath);
410
- const parts = dirPart === '.' ? [] : dirPart.split('/');
411
- const fileName = path.basename(key, '.md');
412
- const value = index[key];
413
- let current = root;
414
- for (const part of parts) {
415
- let child = current.children.get(part);
416
- if (!child) {
417
- child = { name: part, children: new Map(), files: [], comment: '' };
418
- current.children.set(part, child);
419
- }
420
- current = child;
421
- }
422
- current.files.push({
423
- key: fileName,
424
- title: value.title || toTitle(fileName),
425
- tags: Array.isArray(value.tags) ? value.tags : [],
426
- });
427
- const filePath = path.join(this.storeRoot, key);
428
- const parsed = safeParseFile(filePath);
429
- const updatedAt = String(parsed?.frontmatter?.updatedAt || '');
430
- const createdAt = String(parsed?.frontmatter?.createdAt || '');
431
- timeEntries.push({
432
- fullPath: key.slice(0, -3),
433
- updatedAt,
434
- createdAt,
435
- });
436
- }
437
- }
438
- const recentKeys = new Set(timeEntries
439
- .sort((a, b) => {
440
- const aUpdated = a.updatedAt ? new Date(a.updatedAt).getTime() : 0;
441
- const bUpdated = b.updatedAt ? new Date(b.updatedAt).getTime() : 0;
442
- if (bUpdated !== aUpdated)
443
- return bUpdated - aUpdated;
444
- const aCreated = a.createdAt ? new Date(a.createdAt).getTime() : 0;
445
- const bCreated = b.createdAt ? new Date(b.createdAt).getTime() : 0;
446
- return bCreated - aCreated;
447
- })
448
- .slice(0, recentLimit)
449
- .map((e) => e.fullPath));
450
- const renderNode = (node, nodePath, prefix = '', isLast = true, isRoot = false) => {
451
- const lines = [];
452
- const comment = node.comment;
453
- if (isRoot) {
454
- lines.push(`${node.name}/${comment ? ` — ${comment}` : ''}`);
455
- }
456
- else {
457
- const connector = prefix === '' ? '' : isLast ? '└── ' : '├── ';
458
- lines.push(`${prefix}${connector}${node.name}/${comment ? ` — ${comment}` : ''}`);
459
- }
460
- const childEntries = Array.from(node.children.entries()).sort((a, b) => a[0].localeCompare(b[0]));
461
- const allFiles = [...node.files].sort((a, b) => a.key.localeCompare(b.key));
462
- const items = [
463
- ...childEntries.map(([name, childNode]) => ({
464
- type: 'folder',
465
- name,
466
- data: childNode,
467
- })),
468
- ...allFiles.map((file) => ({ type: 'file', name: file.key, data: file })),
469
- ];
470
- for (let i = 0; i < items.length; i++) {
471
- const item = items[i];
472
- const isLastItem = i === items.length - 1;
473
- const childPrefix = isRoot ? '' : prefix + (isLast ? ' ' : '│ ');
474
- if (item.type === 'folder') {
475
- lines.push(...renderNode(item.data, `${nodePath}/${item.name}`, childPrefix, isLastItem, false));
476
- }
477
- else {
478
- const file = item.data;
479
- const fileConnector = isLastItem ? '└── ' : '├── ';
480
- const tagStr = file.tags.length > 0 ? ` [${file.tags.join(', ')}]` : '';
481
- const newMark = recentKeys.has(`${nodePath}/${file.key}`) ? ' [new]' : '';
482
- lines.push(`${childPrefix}${fileConnector}${file.key} — ${file.title}${tagStr}${newMark}`);
483
- }
484
- }
485
- return lines;
486
- };
487
- return renderNode(root, 'memory', '', true, true).join('\n');
132
+ const tree = this.catalog.buildMemoryTreeData();
133
+ return this.renderer.render(tree, recentLimit);
488
134
  }
489
135
  }
490
136
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dao/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dao/index.ts"],"names":[],"mappings":"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"}
@@ -3,17 +3,9 @@
3
3
  */
4
4
  import fs from 'fs';
5
5
  import path from 'path';
6
- import { parseFrontmatter, stringifyFrontmatter } from '../utils/frontmatter.js';
6
+ import { stringifyFrontmatter } from '../utils/frontmatter.js';
7
7
  import { safeResolve, atomicWriteFile } from '../utils/paths.js';
8
- function safeParseFile(filePath) {
9
- try {
10
- const text = fs.readFileSync(filePath, 'utf8');
11
- return parseFrontmatter(text) || { frontmatter: {}, body: text };
12
- }
13
- catch {
14
- return null;
15
- }
16
- }
8
+ import { safeParseFile } from '../utils/file-helpers.js';
17
9
  export class MemoryStore {
18
10
  storeRoot;
19
11
  constructor(storeRoot) {
@@ -1 +1 @@
1
- {"version":3,"file":"memory-store.js","sourceRoot":"","sources":["../../src/dao/memory-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory-store.js","sourceRoot":"","sources":["../../src/dao/memory-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Pure renderer: turns a TreeNode data structure into an ASCII memory index tree.
3
+ *
4
+ * This module performs no file I/O; callers are responsible for building the
5
+ * TreeNode (including timestamps used for `[new]` markers).
6
+ */
7
+ export interface TreeFile {
8
+ key: string;
9
+ title: string;
10
+ tags: string[];
11
+ updatedAt?: string;
12
+ createdAt?: string;
13
+ }
14
+ export interface TreeNode {
15
+ name: string;
16
+ comment: string;
17
+ children: Map<string, TreeNode>;
18
+ files: TreeFile[];
19
+ }
20
+ export declare class MemoryIndexTreeRenderer {
21
+ render(root: TreeNode, recentLimit?: number): string;
22
+ }