@yun-zero/claw-memory 0.1.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 (131) hide show
  1. package/.claude/settings.local.json +68 -0
  2. package/README.md +323 -0
  3. package/dist/config/llm.d.ts +13 -0
  4. package/dist/config/llm.d.ts.map +1 -0
  5. package/dist/config/llm.js +96 -0
  6. package/dist/config/llm.js.map +1 -0
  7. package/dist/config/plugin.d.ts +15 -0
  8. package/dist/config/plugin.d.ts.map +1 -0
  9. package/dist/config/plugin.js +32 -0
  10. package/dist/config/plugin.js.map +1 -0
  11. package/dist/db/entityRepository.d.ts +21 -0
  12. package/dist/db/entityRepository.d.ts.map +1 -0
  13. package/dist/db/entityRepository.js +55 -0
  14. package/dist/db/entityRepository.js.map +1 -0
  15. package/dist/db/repository.d.ts +22 -0
  16. package/dist/db/repository.d.ts.map +1 -0
  17. package/dist/db/repository.js +77 -0
  18. package/dist/db/repository.js.map +1 -0
  19. package/dist/db/schema.d.ts +5 -0
  20. package/dist/db/schema.d.ts.map +1 -0
  21. package/dist/db/schema.js +112 -0
  22. package/dist/db/schema.js.map +1 -0
  23. package/dist/db/todoRepository.d.ts +26 -0
  24. package/dist/db/todoRepository.d.ts.map +1 -0
  25. package/dist/db/todoRepository.js +54 -0
  26. package/dist/db/todoRepository.js.map +1 -0
  27. package/dist/hooks/bootstrap.d.ts +3 -0
  28. package/dist/hooks/bootstrap.d.ts.map +1 -0
  29. package/dist/hooks/bootstrap.js +28 -0
  30. package/dist/hooks/bootstrap.js.map +1 -0
  31. package/dist/hooks/message.d.ts +18 -0
  32. package/dist/hooks/message.d.ts.map +1 -0
  33. package/dist/hooks/message.js +52 -0
  34. package/dist/hooks/message.js.map +1 -0
  35. package/dist/index.d.ts +3 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +46 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/mcp/tools.d.ts +26 -0
  40. package/dist/mcp/tools.d.ts.map +1 -0
  41. package/dist/mcp/tools.js +360 -0
  42. package/dist/mcp/tools.js.map +1 -0
  43. package/dist/plugin.d.ts +18 -0
  44. package/dist/plugin.d.ts.map +1 -0
  45. package/dist/plugin.js +62 -0
  46. package/dist/plugin.js.map +1 -0
  47. package/dist/services/entityGraphService.d.ts +87 -0
  48. package/dist/services/entityGraphService.d.ts.map +1 -0
  49. package/dist/services/entityGraphService.js +271 -0
  50. package/dist/services/entityGraphService.js.map +1 -0
  51. package/dist/services/memory.d.ts +26 -0
  52. package/dist/services/memory.d.ts.map +1 -0
  53. package/dist/services/memory.js +281 -0
  54. package/dist/services/memory.js.map +1 -0
  55. package/dist/services/memoryIndex.d.ts +34 -0
  56. package/dist/services/memoryIndex.d.ts.map +1 -0
  57. package/dist/services/memoryIndex.js +100 -0
  58. package/dist/services/memoryIndex.js.map +1 -0
  59. package/dist/services/metadataExtractor.d.ts +16 -0
  60. package/dist/services/metadataExtractor.d.ts.map +1 -0
  61. package/dist/services/metadataExtractor.js +75 -0
  62. package/dist/services/metadataExtractor.js.map +1 -0
  63. package/dist/services/retrieval.d.ts +24 -0
  64. package/dist/services/retrieval.d.ts.map +1 -0
  65. package/dist/services/retrieval.js +40 -0
  66. package/dist/services/retrieval.js.map +1 -0
  67. package/dist/services/scheduler.d.ts +122 -0
  68. package/dist/services/scheduler.d.ts.map +1 -0
  69. package/dist/services/scheduler.js +434 -0
  70. package/dist/services/scheduler.js.map +1 -0
  71. package/dist/services/summarizer.d.ts +43 -0
  72. package/dist/services/summarizer.d.ts.map +1 -0
  73. package/dist/services/summarizer.js +252 -0
  74. package/dist/services/summarizer.js.map +1 -0
  75. package/dist/services/tagService.d.ts +64 -0
  76. package/dist/services/tagService.d.ts.map +1 -0
  77. package/dist/services/tagService.js +281 -0
  78. package/dist/services/tagService.js.map +1 -0
  79. package/dist/tools/memory.d.ts +3 -0
  80. package/dist/tools/memory.d.ts.map +1 -0
  81. package/dist/tools/memory.js +114 -0
  82. package/dist/tools/memory.js.map +1 -0
  83. package/dist/types.d.ts +128 -0
  84. package/dist/types.d.ts.map +1 -0
  85. package/dist/types.js +6 -0
  86. package/dist/types.js.map +1 -0
  87. package/docs/plans/2026-03-02-claw-memory-design.md +445 -0
  88. package/docs/plans/2026-03-02-incremental-summary-design.md +157 -0
  89. package/docs/plans/2026-03-02-incremental-summary-implementation.md +468 -0
  90. package/docs/plans/2026-03-02-memory-index-design.md +163 -0
  91. package/docs/plans/2026-03-02-memory-index-implementation.md +836 -0
  92. package/docs/plans/2026-03-02-mvp-implementation.md +1703 -0
  93. package/docs/plans/2026-03-02-testing-implementation.md +395 -0
  94. package/docs/plans/2026-03-02-testing-plan.md +93 -0
  95. package/docs/plans/2026-03-03-claw-memory-openclaw-plugin-design.md +285 -0
  96. package/docs/plans/2026-03-03-claw-memory-plugin-implementation.md +642 -0
  97. package/docs/plans/2026-03-03-entity-graph-design.md +121 -0
  98. package/docs/plans/2026-03-03-entity-graph-implementation.md +687 -0
  99. package/docs/plans/2026-03-03-llm-generic-config-design.md +43 -0
  100. package/docs/plans/2026-03-03-llm-generic-config-implementation.md +186 -0
  101. package/docs/plans/2026-03-03-memory-e2e-stress-test-design.md +110 -0
  102. package/docs/plans/2026-03-03-memory-e2e-stress-test-implementation.md +464 -0
  103. package/docs/plans/2026-03-03-minimax-llm-fix.md +156 -0
  104. package/docs/plans/2026-03-03-scheduler-design.md +165 -0
  105. package/docs/plans/2026-03-03-scheduler-implementation.md +777 -0
  106. package/docs/plans/2026-03-03-tags-visualization-design.md +73 -0
  107. package/docs/plans/2026-03-03-tags-visualization-implementation.md +539 -0
  108. package/openclaw.plugin.json +11 -0
  109. package/package.json +41 -0
  110. package/src/config/llm.ts +129 -0
  111. package/src/config/plugin.ts +47 -0
  112. package/src/db/entityRepository.ts +80 -0
  113. package/src/db/repository.ts +106 -0
  114. package/src/db/schema.ts +121 -0
  115. package/src/db/todoRepository.ts +76 -0
  116. package/src/hooks/bootstrap.ts +36 -0
  117. package/src/hooks/message.ts +84 -0
  118. package/src/index.ts +50 -0
  119. package/src/plugin.ts +85 -0
  120. package/src/services/entityGraphService.ts +367 -0
  121. package/src/services/memory.ts +338 -0
  122. package/src/services/memoryIndex.ts +140 -0
  123. package/src/services/metadataExtractor.ts +89 -0
  124. package/src/services/retrieval.ts +71 -0
  125. package/src/services/scheduler.ts +529 -0
  126. package/src/services/summarizer.ts +318 -0
  127. package/src/services/tagService.ts +335 -0
  128. package/src/tools/memory.ts +137 -0
  129. package/src/types.ts +139 -0
  130. package/tsconfig.json +20 -0
  131. package/vitest.config.ts +16 -0
@@ -0,0 +1,360 @@
1
+ import { getMemoryIndex } from '../services/memoryIndex.js';
2
+ import { TodoRepository } from '../db/todoRepository.js';
3
+ import { EntityGraphService } from '../services/entityGraphService.js';
4
+ export function createSaveMemoryTool(memoryService) {
5
+ return {
6
+ name: 'save_memory',
7
+ description: 'Save a conversation memory with structured metadata',
8
+ inputSchema: {
9
+ type: 'object',
10
+ properties: {
11
+ content: {
12
+ type: 'string',
13
+ description: 'The conversation content to save'
14
+ },
15
+ metadata: {
16
+ type: 'object',
17
+ properties: {
18
+ tags: {
19
+ type: 'array',
20
+ items: { type: 'string' },
21
+ description: 'Hierarchical tags like 技术/前端/React'
22
+ },
23
+ subjects: {
24
+ type: 'array',
25
+ items: { type: 'string' },
26
+ description: 'Main topics discussed'
27
+ },
28
+ keywords: {
29
+ type: 'array',
30
+ items: { type: 'string' },
31
+ description: 'Key technical terms'
32
+ },
33
+ importance: {
34
+ type: 'number',
35
+ minimum: 0,
36
+ maximum: 1,
37
+ description: 'Importance level (0-1)'
38
+ },
39
+ summary: {
40
+ type: 'string',
41
+ description: 'Brief summary of the content'
42
+ }
43
+ }
44
+ },
45
+ userId: {
46
+ type: 'string',
47
+ description: 'User identifier (optional)'
48
+ }
49
+ },
50
+ required: ['content']
51
+ },
52
+ handler: async (params) => {
53
+ const result = await memoryService.saveMemory(params);
54
+ return {
55
+ success: true,
56
+ memory_id: result.id,
57
+ summary: result.summary
58
+ };
59
+ }
60
+ };
61
+ }
62
+ export function createSearchMemoryTool(memoryService) {
63
+ return {
64
+ name: 'search_memory',
65
+ description: 'Search memories by query, time range, and tags',
66
+ inputSchema: {
67
+ type: 'object',
68
+ properties: {
69
+ query: {
70
+ type: 'string',
71
+ description: 'Search query'
72
+ },
73
+ timeRange: {
74
+ type: 'string',
75
+ enum: ['today', 'week', 'month', 'year', 'all'],
76
+ description: 'Time range filter'
77
+ },
78
+ tags: {
79
+ type: 'array',
80
+ items: { type: 'string' },
81
+ description: 'Filter by tags'
82
+ },
83
+ limit: {
84
+ type: 'number',
85
+ default: 10,
86
+ description: 'Maximum number of results'
87
+ },
88
+ maxTokens: {
89
+ type: 'number',
90
+ default: 4000,
91
+ description: 'Maximum tokens to return'
92
+ }
93
+ }
94
+ },
95
+ handler: async (params) => {
96
+ const memories = await memoryService.searchMemory(params);
97
+ return {
98
+ memories: memories.map((m) => ({
99
+ id: m.id,
100
+ summary: m.summary,
101
+ importance: m.importance,
102
+ created_at: m.createdAt.toISOString()
103
+ }))
104
+ };
105
+ }
106
+ };
107
+ }
108
+ export function createGetContextTool(memoryService) {
109
+ return {
110
+ name: 'get_context',
111
+ description: 'Get weighted context for a query within token limit',
112
+ inputSchema: {
113
+ type: 'object',
114
+ properties: {
115
+ query: {
116
+ type: 'string',
117
+ description: 'Context query'
118
+ },
119
+ maxTokens: {
120
+ type: 'number',
121
+ default: 8000,
122
+ description: 'Maximum tokens to return'
123
+ }
124
+ },
125
+ required: ['query']
126
+ },
127
+ handler: async (params) => {
128
+ const context = await memoryService.getContext(params);
129
+ return { context };
130
+ }
131
+ };
132
+ }
133
+ export function createGetSummaryTool(memoryService) {
134
+ return {
135
+ name: 'get_summary',
136
+ description: 'Get time period summary (day/week/month)',
137
+ inputSchema: {
138
+ type: 'object',
139
+ properties: {
140
+ period: {
141
+ type: 'string',
142
+ enum: ['day', 'week', 'month'],
143
+ description: 'Summary period'
144
+ },
145
+ date: {
146
+ type: 'string',
147
+ description: 'Specific date (YYYY-MM-DD)'
148
+ }
149
+ },
150
+ required: ['period']
151
+ },
152
+ handler: async (params) => {
153
+ const summary = await memoryService.getSummary(params.period, params.date);
154
+ return summary || { error: 'No summary available' };
155
+ }
156
+ };
157
+ }
158
+ export function createListMemoriesTool(memoryService) {
159
+ return {
160
+ name: 'list_memories',
161
+ description: 'List memories with optional filters',
162
+ inputSchema: {
163
+ type: 'object',
164
+ properties: {
165
+ limit: {
166
+ type: 'number',
167
+ default: 20
168
+ },
169
+ offset: {
170
+ type: 'number',
171
+ default: 0
172
+ }
173
+ }
174
+ },
175
+ handler: async (params) => {
176
+ const memories = await memoryService.searchMemory({
177
+ query: '',
178
+ limit: params.limit || 20,
179
+ timeRange: 'all'
180
+ });
181
+ return {
182
+ memories: memories.map(m => ({
183
+ id: m.id,
184
+ summary: m.summary,
185
+ importance: m.importance,
186
+ created_at: m.createdAt.toISOString(),
187
+ token_count: m.tokenCount
188
+ }))
189
+ };
190
+ }
191
+ };
192
+ }
193
+ export function createDeleteMemoryTool(memoryService) {
194
+ return {
195
+ name: 'delete_memory',
196
+ description: 'Delete a memory by ID',
197
+ inputSchema: {
198
+ type: 'object',
199
+ properties: {
200
+ id: {
201
+ type: 'string',
202
+ description: 'Memory ID to delete'
203
+ }
204
+ },
205
+ required: ['id']
206
+ },
207
+ handler: async (_params) => {
208
+ return { success: true };
209
+ }
210
+ };
211
+ }
212
+ export function createGetMemoryIndexTool(db) {
213
+ return {
214
+ name: 'get_memory_index',
215
+ description: 'Get memory index summary for conversation context',
216
+ inputSchema: {
217
+ type: 'object',
218
+ properties: {
219
+ period: {
220
+ type: 'string',
221
+ enum: ['day', 'week', 'month'],
222
+ default: 'week'
223
+ },
224
+ date: { type: 'string' },
225
+ includeTodos: { type: 'boolean', default: true },
226
+ includeRecent: { type: 'boolean', default: true },
227
+ recentLimit: { type: 'number', default: 5 }
228
+ }
229
+ },
230
+ handler: async (params) => {
231
+ return await getMemoryIndex(db, params);
232
+ }
233
+ };
234
+ }
235
+ export function createAddTodoTool(db) {
236
+ return {
237
+ name: 'add_todo',
238
+ description: 'Add a todo item',
239
+ inputSchema: {
240
+ type: 'object',
241
+ properties: {
242
+ content: { type: 'string' },
243
+ period: { type: 'string', enum: ['day', 'week', 'month'] },
244
+ periodDate: { type: 'string' },
245
+ memoryId: { type: 'string' }
246
+ },
247
+ required: ['content', 'period', 'periodDate']
248
+ },
249
+ handler: async (params) => {
250
+ const repo = new TodoRepository(db);
251
+ const todo = repo.create(params);
252
+ return todo;
253
+ }
254
+ };
255
+ }
256
+ export function createListTodosTool(db) {
257
+ return {
258
+ name: 'list_todos',
259
+ description: 'List todo items',
260
+ inputSchema: {
261
+ type: 'object',
262
+ properties: {
263
+ period: { type: 'string', enum: ['day', 'week', 'month'] },
264
+ periodDate: { type: 'string' },
265
+ includeCompleted: { type: 'boolean', default: false }
266
+ },
267
+ required: ['period', 'periodDate']
268
+ },
269
+ handler: async (params) => {
270
+ const repo = new TodoRepository(db);
271
+ const todos = repo.findByPeriod(params.period, params.periodDate, params.includeCompleted);
272
+ return { todos };
273
+ }
274
+ };
275
+ }
276
+ export function createCompleteTodoTool(db) {
277
+ return {
278
+ name: 'complete_todo',
279
+ description: 'Mark a todo as completed',
280
+ inputSchema: {
281
+ type: 'object',
282
+ properties: {
283
+ id: { type: 'string' }
284
+ },
285
+ required: ['id']
286
+ },
287
+ handler: async (params) => {
288
+ const repo = new TodoRepository(db);
289
+ repo.markCompleted(params.id);
290
+ return { success: true };
291
+ }
292
+ };
293
+ }
294
+ export function createGetEntityRelationsTool(db) {
295
+ return {
296
+ name: 'get_entity_relations',
297
+ description: 'Get all relations for a specific entity by name',
298
+ inputSchema: {
299
+ type: 'object',
300
+ properties: {
301
+ entity_name: {
302
+ type: 'string',
303
+ description: 'The name of the entity to get relations for'
304
+ }
305
+ },
306
+ required: ['entity_name']
307
+ },
308
+ handler: async (params) => {
309
+ const service = new EntityGraphService(db);
310
+ const relations = service.getEntityRelations(params.entity_name);
311
+ return { relations };
312
+ }
313
+ };
314
+ }
315
+ export function createQueryEntityGraphTool(db) {
316
+ return {
317
+ name: 'query_entity_graph',
318
+ description: 'Query entity graph - find path or get subgraph between entities',
319
+ inputSchema: {
320
+ type: 'object',
321
+ properties: {
322
+ start_entity: {
323
+ type: 'string',
324
+ description: 'The starting entity name'
325
+ },
326
+ end_entity: {
327
+ type: 'string',
328
+ description: 'The ending entity name (optional)'
329
+ },
330
+ max_hops: {
331
+ type: 'number',
332
+ default: 2,
333
+ description: 'Maximum number of hops to traverse'
334
+ }
335
+ },
336
+ required: ['start_entity']
337
+ },
338
+ handler: async (params) => {
339
+ const service = new EntityGraphService(db);
340
+ const result = service.queryEntityGraph(params.start_entity, params.end_entity, params.max_hops || 2);
341
+ return result;
342
+ }
343
+ };
344
+ }
345
+ export function createGetRelationStatsTool(db) {
346
+ return {
347
+ name: 'get_relation_stats',
348
+ description: 'Get statistics about entity relations',
349
+ inputSchema: {
350
+ type: 'object',
351
+ properties: {}
352
+ },
353
+ handler: async (_params) => {
354
+ const service = new EntityGraphService(db);
355
+ const stats = service.getRelationStats();
356
+ return stats;
357
+ }
358
+ };
359
+ }
360
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export interface OpenClawPluginContext {
2
+ hooks: {
3
+ register: (event: string, handler: any) => Promise<void>;
4
+ };
5
+ tools: {
6
+ register: (tool: any) => void;
7
+ };
8
+ config?: any;
9
+ }
10
+ export interface OpenClawPlugin {
11
+ name: string;
12
+ version: string;
13
+ register: (context: OpenClawPluginContext) => Promise<void>;
14
+ }
15
+ export declare function createPlugin(config?: any): OpenClawPlugin;
16
+ declare const _default: OpenClawPlugin;
17
+ export default _default;
18
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE;QACL,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KAC1D,CAAC;IACF,KAAK,EAAE;QACL,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;KAC/B,CAAC;IACF,MAAM,CAAC,EAAE,GAAG,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D;AAED,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,cAAc,CA0DzD;;AAGD,wBAA8B"}
package/dist/plugin.js ADDED
@@ -0,0 +1,62 @@
1
+ import { getDatabase } from './db/schema.js';
2
+ import { getConfig } from './config/plugin.js';
3
+ import { handleMessageSent } from './hooks/message.js';
4
+ import { handleAgentBootstrap } from './hooks/bootstrap.js';
5
+ import { registerMemoryTools } from './tools/memory.js';
6
+ import { Scheduler } from './services/scheduler.js';
7
+ export function createPlugin(config) {
8
+ const pluginConfig = getConfig(config);
9
+ return {
10
+ name: 'claw-memory',
11
+ version: '0.1.0',
12
+ async register(context) {
13
+ if (!pluginConfig.enabled) {
14
+ console.log('[ClawMemory] Plugin disabled');
15
+ return;
16
+ }
17
+ console.log('[ClawMemory] Starting...');
18
+ // 初始化数据库
19
+ const db = getDatabase(pluginConfig.dataDir + '/memory.db');
20
+ // 注册 message:sent hook
21
+ await context.hooks.register('message:sent', async (event) => {
22
+ if (pluginConfig.autoSave) {
23
+ try {
24
+ await handleMessageSent(event, db, pluginConfig.dataDir);
25
+ }
26
+ catch (error) {
27
+ console.error('[ClawMemory] Failed to save memory:', error);
28
+ }
29
+ }
30
+ });
31
+ // 注册 agent:bootstrap hook
32
+ await context.hooks.register('agent:bootstrap', async (bootstrapContext) => {
33
+ try {
34
+ const summary = await handleAgentBootstrap(db);
35
+ if (summary) {
36
+ bootstrapContext.context = bootstrapContext.context || '';
37
+ bootstrapContext.context += '\n\n' + summary;
38
+ }
39
+ }
40
+ catch (error) {
41
+ console.error('[ClawMemory] Failed to inject summary:', error);
42
+ }
43
+ });
44
+ // 注册 Agent Tools
45
+ registerMemoryTools(context.tools, db, pluginConfig.dataDir);
46
+ // 启动 Scheduler
47
+ if (pluginConfig.scheduler.enabled) {
48
+ try {
49
+ const scheduler = new Scheduler(db, pluginConfig.scheduler);
50
+ scheduler.start();
51
+ }
52
+ catch (error) {
53
+ console.error('[ClawMemory] Failed to start scheduler:', error);
54
+ }
55
+ }
56
+ console.log('[ClawMemory] Started successfully');
57
+ }
58
+ };
59
+ }
60
+ // 默认导出用于 OpenClaw 加载
61
+ export default createPlugin();
62
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAgB,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAkBpD,MAAM,UAAU,YAAY,CAAC,MAAY;IACvC,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAEvC,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,OAAO;QAEhB,KAAK,CAAC,QAAQ,CAAC,OAA8B;YAC3C,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;gBAC5C,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YAExC,SAAS;YACT,MAAM,EAAE,GAAG,WAAW,CAAC,YAAY,CAAC,OAAO,GAAG,YAAY,CAAC,CAAC;YAE5D,uBAAuB;YACvB,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,EAAE,KAAU,EAAE,EAAE;gBAChE,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;oBAC1B,IAAI,CAAC;wBACH,MAAM,iBAAiB,CAAC,KAAK,EAAE,EAAE,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;oBAC3D,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;oBAC9D,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,0BAA0B;YAC1B,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,EAAE,KAAK,EAAE,gBAAqB,EAAE,EAAE;gBAC9E,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,EAAE,CAAC,CAAC;oBAC/C,IAAI,OAAO,EAAE,CAAC;wBACZ,gBAAgB,CAAC,OAAO,GAAG,gBAAgB,CAAC,OAAO,IAAI,EAAE,CAAC;wBAC1D,gBAAgB,CAAC,OAAO,IAAI,MAAM,GAAG,OAAO,CAAC;oBAC/C,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,iBAAiB;YACjB,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;YAE7D,eAAe;YACf,IAAI,YAAY,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;gBACnC,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;oBAC5D,SAAS,CAAC,KAAK,EAAE,CAAC;gBACpB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACnD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,qBAAqB;AACrB,eAAe,YAAY,EAAE,CAAC"}
@@ -0,0 +1,87 @@
1
+ import Database from 'better-sqlite3';
2
+ import type { EntityRelation } from '../types.js';
3
+ /**
4
+ * Entity node for graph visualization
5
+ */
6
+ export interface EntityNode {
7
+ id: string;
8
+ name: string;
9
+ type: 'keyword' | 'tag' | 'subject' | 'person' | 'project';
10
+ }
11
+ /**
12
+ * Entity edge for graph visualization
13
+ */
14
+ export interface EntityEdge {
15
+ source: string;
16
+ target: string;
17
+ type: 'related' | 'parent' | 'similar' | 'co_occur';
18
+ weight: number;
19
+ }
20
+ /**
21
+ * Graph data structure for visualization
22
+ */
23
+ export interface GraphData {
24
+ nodes: EntityNode[];
25
+ edges: EntityEdge[];
26
+ }
27
+ /**
28
+ * Relation statistics
29
+ */
30
+ export interface RelationStats {
31
+ most_connected: {
32
+ id: string;
33
+ name: string;
34
+ connection_count: number;
35
+ }[];
36
+ relation_types: Record<string, number>;
37
+ total_relations: number;
38
+ }
39
+ /**
40
+ * Query result for entity graph
41
+ */
42
+ export interface EntityGraphQueryResult {
43
+ path?: string[];
44
+ nodes: EntityNode[];
45
+ edges: EntityEdge[];
46
+ found: boolean;
47
+ }
48
+ /**
49
+ * Service for managing entity graph data and relationships
50
+ */
51
+ export declare class EntityGraphService {
52
+ private db;
53
+ constructor(db: Database.Database);
54
+ /**
55
+ * Get entity by name
56
+ */
57
+ private getEntityByName;
58
+ /**
59
+ * Get all entities and their relations as graph data
60
+ */
61
+ getGraphData(): GraphData;
62
+ /**
63
+ * Get relations for a specific entity by name
64
+ */
65
+ getEntityRelations(entityName: string): EntityEdge[];
66
+ /**
67
+ * Query entity graph - find path or subgraph between entities
68
+ */
69
+ queryEntityGraph(startEntityName: string, endEntityName?: string, maxHops?: number): EntityGraphQueryResult;
70
+ /**
71
+ * Find shortest path between two entities using BFS
72
+ */
73
+ private findPath;
74
+ /**
75
+ * Get statistics about entity relations
76
+ */
77
+ getRelationStats(): RelationStats;
78
+ /**
79
+ * Create a relation between two entities
80
+ */
81
+ createRelation(sourceId: string, targetId: string, type: EntityEdge['type'], weight?: number): EntityRelation;
82
+ /**
83
+ * Get subgraph around a specific entity (depth: number of hops)
84
+ */
85
+ getSubgraph(entityId: string, depth?: number): GraphData;
86
+ }
87
+ //# sourceMappingURL=entityGraphService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entityGraphService.d.ts","sourceRoot":"","sources":["../../src/services/entityGraphService.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,EAAU,cAAc,EAAE,MAAM,aAAa,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;CAC5D;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;IACpD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACzE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,EAAE,CAAoB;gBAElB,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAIjC;;OAEG;IACH,OAAO,CAAC,eAAe;IAOvB;;OAEG;IACH,YAAY,IAAI,SAAS;IA2BzB;;OAEG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,EAAE;IAqBpD;;OAEG;IACH,gBAAgB,CAAC,eAAe,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,MAAU,GAAG,sBAAsB;IA4E9G;;OAEG;IACH,OAAO,CAAC,QAAQ;IAsChB;;OAEG;IACH,gBAAgB,IAAI,aAAa;IA8CjC;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAE,MAAY,GAAG,cAAc;IAqBlH;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,SAAS;CA+C5D"}