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
@@ -0,0 +1,139 @@
1
+ /**
2
+ * SQLite storage for refined turns.
3
+ */
4
+ import fs from 'fs';
5
+ import path from 'path';
6
+ import Database from 'better-sqlite3';
7
+ import { turnToRow } from './adapter.js';
8
+ import { rowToTurn } from './adapter.js';
9
+ import { LIMITS } from './constants.js';
10
+ import { buildLikeConditions, scoreText } from '../utils/search.js';
11
+ import { dateRangeSql } from '../utils/date.js';
12
+ export class RefinedStore {
13
+ refinedRoot;
14
+ dbPath;
15
+ db;
16
+ constructor(refinedRoot) {
17
+ this.refinedRoot = refinedRoot;
18
+ this.dbPath = path.join(refinedRoot, 'refined.sqlite');
19
+ fs.mkdirSync(refinedRoot, { recursive: true });
20
+ this.db = new Database(this.dbPath);
21
+ this.initDb();
22
+ }
23
+ initDb() {
24
+ this.db.exec(`
25
+ CREATE TABLE IF NOT EXISTS refined_turns (
26
+ session_id TEXT NOT NULL,
27
+ turn_id INTEGER NOT NULL,
28
+ timestamp TEXT,
29
+ summary TEXT,
30
+ facts TEXT,
31
+ notes TEXT,
32
+ entities TEXT,
33
+ categories TEXT,
34
+ PRIMARY KEY (session_id, turn_id)
35
+ );
36
+ CREATE INDEX IF NOT EXISTS idx_refined_session ON refined_turns(session_id);
37
+ CREATE INDEX IF NOT EXISTS idx_refined_timestamp ON refined_turns(timestamp);
38
+ `);
39
+ }
40
+ getDbPath() {
41
+ return this.dbPath;
42
+ }
43
+ saveRefinedTurns(sessionId, refinedTurns) {
44
+ const insert = this.db.prepare(`INSERT OR REPLACE INTO refined_turns
45
+ (session_id, turn_id, timestamp, summary, facts, notes, entities, categories)
46
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)`);
47
+ const existing = this.loadRefinedTurns(sessionId);
48
+ const merged = new Map(existing.map((t) => [t.turnId, t]));
49
+ for (const turn of refinedTurns) {
50
+ merged.set(turn.turnId, turn);
51
+ }
52
+ const transaction = this.db.transaction(() => {
53
+ for (const turn of merged.values()) {
54
+ const row = turnToRow(turn);
55
+ insert.run(row.session_id, row.turn_id, row.timestamp, row.summary, row.facts, row.notes, row.entities, row.categories);
56
+ }
57
+ });
58
+ transaction();
59
+ }
60
+ loadRefinedTurns(sessionId) {
61
+ const stmt = this.db.prepare('SELECT * FROM refined_turns WHERE session_id = ? ORDER BY turn_id');
62
+ const rows = stmt.all(sessionId);
63
+ return rows.map((r) => rowToTurn(r));
64
+ }
65
+ loadRefinedTurn(sessionId, turnId) {
66
+ const stmt = this.db.prepare('SELECT * FROM refined_turns WHERE session_id = ? AND turn_id = ?');
67
+ const row = stmt.get(sessionId, turnId);
68
+ return row ? rowToTurn(row) : undefined;
69
+ }
70
+ searchRefinedTurns(options) {
71
+ const rawQuery = typeof options.query === 'string' ? options.query.trim() : '';
72
+ if (!rawQuery)
73
+ return [];
74
+ const terms = rawQuery
75
+ .toLowerCase()
76
+ .split(/\s+/)
77
+ .filter((t) => t.length > 0);
78
+ if (terms.length === 0)
79
+ return [];
80
+ const limit = typeof options.limit === 'number' ? Math.max(1, Math.floor(options.limit)) : LIMITS.searchResultLimit;
81
+ const dateFrom = options.dateFrom || null;
82
+ const dateTo = options.dateTo || null;
83
+ const conditions = buildLikeConditions(terms);
84
+ const params = [];
85
+ for (const term of terms) {
86
+ const escaped = term.split('%').join('\\%').split('_').join('\\_');
87
+ const like = `%${escaped}%`;
88
+ params.push(like, like, like);
89
+ }
90
+ const dateRange = dateRangeSql(dateFrom || undefined, dateTo || undefined);
91
+ if (dateRange.from) {
92
+ conditions.push('timestamp >= ?');
93
+ params.push(dateRange.from);
94
+ }
95
+ if (dateRange.to) {
96
+ conditions.push('timestamp <= ?');
97
+ params.push(dateRange.to);
98
+ }
99
+ const sql = `SELECT session_id, turn_id, timestamp, summary, facts, notes
100
+ FROM refined_turns
101
+ WHERE ${conditions.join(' AND ')}
102
+ ORDER BY timestamp DESC
103
+ LIMIT ?`;
104
+ params.push(limit * LIMITS.searchCandidateMultiplier);
105
+ const stmt = this.db.prepare(sql);
106
+ const rows = stmt.all(...params);
107
+ const matches = [];
108
+ for (const row of rows) {
109
+ const haystack = `${row.summary}\n${row.facts}\n${row.notes}`;
110
+ const score = scoreText(haystack, terms);
111
+ if (score === 0)
112
+ continue;
113
+ matches.push({
114
+ sessionId: row.session_id,
115
+ turnId: row.turn_id,
116
+ timestamp: row.timestamp ?? undefined,
117
+ summary: row.summary,
118
+ facts: JSON.parse(row.facts || '[]'),
119
+ notes: JSON.parse(row.notes || '[]'),
120
+ score,
121
+ });
122
+ }
123
+ matches.sort((a, b) => b.score - a.score);
124
+ return matches.slice(0, limit);
125
+ }
126
+ countAll() {
127
+ const row = this.db.prepare('SELECT COUNT(*) AS c FROM refined_turns').get();
128
+ return row?.c ?? 0;
129
+ }
130
+ listRecentTurns(limit) {
131
+ const stmt = this.db.prepare('SELECT * FROM refined_turns ORDER BY timestamp DESC LIMIT ?');
132
+ const rows = stmt.all(limit);
133
+ return rows.map((r) => rowToTurn(r));
134
+ }
135
+ close() {
136
+ this.db.close();
137
+ }
138
+ }
139
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/refine/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Domain types for the turn refinement layer.
3
+ */
4
+ export interface RawAction {
5
+ name?: string;
6
+ args?: unknown;
7
+ result?: unknown;
8
+ }
9
+ export interface RawTurn {
10
+ turnId?: string | number;
11
+ timestamp?: string;
12
+ user?: string;
13
+ agentText?: string;
14
+ agent?: string;
15
+ actions?: RawAction[];
16
+ }
17
+ export interface RefinedTurn {
18
+ sessionId: string;
19
+ turnId: number;
20
+ timestamp: string | undefined;
21
+ summary: string;
22
+ facts: string[];
23
+ notes: string[];
24
+ entities: {
25
+ files: string[];
26
+ tools: string[];
27
+ errors: string[];
28
+ };
29
+ categories: Record<string, string[]>;
30
+ }
31
+ export interface RefinedSearchOptions {
32
+ query: string;
33
+ dateFrom?: string;
34
+ dateTo?: string;
35
+ limit?: number;
36
+ }
37
+ export interface RefinedSearchMatch {
38
+ sessionId: string;
39
+ turnId: number;
40
+ timestamp: string | undefined;
41
+ summary: string;
42
+ facts: string[];
43
+ notes: string[];
44
+ score: number;
45
+ }
46
+ /** SQLite row shape for refined_turns. */
47
+ export interface RefinedRow {
48
+ session_id: string;
49
+ turn_id: number;
50
+ timestamp: string | null;
51
+ summary: string;
52
+ facts: string;
53
+ notes: string;
54
+ entities: string;
55
+ categories: string;
56
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Domain types for the turn refinement layer.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/refine/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,70 +1,24 @@
1
1
  /**
2
- * Refined turn storage and extraction backed by SQLite.
2
+ * Refined turn orchestrator.
3
3
  *
4
- * Refined turns are a local derived index / cache of conversation wires.
5
- * They are not user-facing memory assets; user memory stays in Markdown files.
6
- *
7
- * Extraction rules are intentionally local and deterministic: we look for
8
- * explicit structural cues (list items, action-keywords, headings) rather than
9
- * calling an LLM. This keeps the operation fast, free, and reproducible across
10
- * Chinese and English agent outputs.
4
+ * Delegates extraction, storage, and row mapping to focused modules under
5
+ * src/refine/. This file keeps the original public API and owns cross-cutting
6
+ * concerns such as the write mutex.
11
7
  */
12
- export interface RawAction {
13
- name?: string;
14
- args?: unknown;
15
- result?: unknown;
16
- }
17
- export interface RawTurn {
18
- turnId?: string | number;
19
- timestamp?: string;
20
- user?: string;
21
- agentText?: string;
22
- agent?: string;
23
- actions?: RawAction[];
24
- }
25
- export interface RefinedTurn {
26
- sessionId: string;
27
- turnId: number;
28
- timestamp: string | undefined;
29
- summary: string;
30
- facts: string[];
31
- notes: string[];
32
- entities: {
33
- files: string[];
34
- tools: string[];
35
- errors: string[];
36
- };
37
- categories: Record<string, string[]>;
38
- }
39
- export interface RefinedSearchOptions {
40
- query: string;
41
- dateFrom?: string;
42
- dateTo?: string;
43
- limit?: number;
44
- }
45
- export interface RefinedSearchMatch {
46
- sessionId: string;
47
- turnId: number;
48
- timestamp: string | undefined;
49
- summary: string;
50
- facts: string[];
51
- notes: string[];
52
- score: number;
53
- }
8
+ import type { RawTurn, RefinedTurn, RefinedSearchOptions, RefinedSearchMatch } from './refine/types.js';
9
+ export { type RawAction, type RawTurn, type RefinedTurn, type RefinedSearchOptions, type RefinedSearchMatch, } from './refine/types.js';
54
10
  export declare class RefinedManager {
55
11
  refinedRoot: string;
56
- private dbPath;
57
- private db;
12
+ private store;
58
13
  private mutex;
59
14
  constructor(refinedRoot: string);
60
- private initDb;
61
15
  refineTurn(turn: RawTurn, sessionId: string): RefinedTurn;
62
- private rowToTurn;
63
16
  saveRefinedTurns(sessionId: string, refinedTurns: RefinedTurn[]): Promise<void>;
64
17
  loadRefinedTurns(sessionId: string): RefinedTurn[];
65
- private loadRefinedTurnsSync;
66
- getDbPath(): string;
67
18
  loadRefinedTurn(sessionId: string, turnId: number): RefinedTurn | undefined;
19
+ getDbPath(): string;
68
20
  searchRefinedTurns(options: RefinedSearchOptions): RefinedSearchMatch[];
21
+ countAll(): number;
22
+ listRecentTurns(limit: number): RefinedTurn[];
69
23
  close(): void;
70
24
  }