memento-mcp-server 1.7.5 → 1.8.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.
- package/README.md +1 -0
- package/dist/server/http-server.d.ts.map +1 -1
- package/dist/server/http-server.js +66 -1
- package/dist/server/http-server.js.map +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +86 -1
- package/dist/server/index.js.map +1 -1
- package/dist/services/cache-service.d.ts.map +1 -1
- package/dist/services/cache-service.js +5 -2
- package/dist/services/cache-service.js.map +1 -1
- package/dist/services/memory-neighbor-service.d.ts +81 -0
- package/dist/services/memory-neighbor-service.d.ts.map +1 -0
- package/dist/services/memory-neighbor-service.js +295 -0
- package/dist/services/memory-neighbor-service.js.map +1 -0
- package/dist/tools/get-memory-neighbors-tool.d.ts +26 -0
- package/dist/tools/get-memory-neighbors-tool.d.ts.map +1 -0
- package/dist/tools/get-memory-neighbors-tool.js +125 -0
- package/dist/tools/get-memory-neighbors-tool.js.map +1 -0
- package/dist/tools/index.d.ts +2 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +4 -2
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/remember-tool.d.ts.map +1 -1
- package/dist/tools/remember-tool.js +89 -12
- package/dist/tools/remember-tool.js.map +1 -1
- package/package.json +1 -1
|
@@ -5,6 +5,9 @@ import { z } from 'zod';
|
|
|
5
5
|
import { BaseTool } from './base-tool.js';
|
|
6
6
|
import { CommonSchemas } from './types.js';
|
|
7
7
|
import { DatabaseUtils } from '../utils/database.js';
|
|
8
|
+
import { MemoryNeighborService } from '../services/memory-neighbor-service.js';
|
|
9
|
+
import { getVectorSearchEngine } from '../algorithms/vector-search-engine.js';
|
|
10
|
+
import { MemoryEmbeddingService } from '../services/memory-embedding-service.js';
|
|
8
11
|
const RememberSchema = z.object({
|
|
9
12
|
content: CommonSchemas.Content,
|
|
10
13
|
type: CommonSchemas.MemoryType.default('episodic'),
|
|
@@ -63,20 +66,94 @@ export class RememberTool extends BaseTool {
|
|
|
63
66
|
`, [id, type, content, importance, privacy_scope,
|
|
64
67
|
tags ? JSON.stringify(tags) : null, source]);
|
|
65
68
|
});
|
|
66
|
-
// 메모리 저장 완료 후 임베딩 생성 (비동기, 실패해도 메모리 저장은 성공)
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
69
|
+
// 메모리 저장 완료 후 임베딩 생성 및 인접 기억 갱신 (비동기, 실패해도 메모리 저장은 성공)
|
|
70
|
+
// 데이터베이스 참조를 미리 저장하여 비동기 콜백에서 안전하게 사용
|
|
71
|
+
const dbRef = context.db;
|
|
72
|
+
const embeddingServiceRef = context.services.embeddingService;
|
|
73
|
+
if (embeddingServiceRef?.isAvailable() && dbRef) {
|
|
74
|
+
// 비동기 작업을 별도로 실행 (fire-and-forget 패턴)
|
|
75
|
+
// 메모리 저장 응답은 즉시 반환하고, 임베딩/인접 기억 갱신은 백그라운드에서 처리
|
|
76
|
+
(async () => {
|
|
77
|
+
try {
|
|
78
|
+
// 트랜잭션이 완전히 커밋되도록 짧은 지연
|
|
79
|
+
await new Promise(resolve => setTimeout(resolve, 100));
|
|
80
|
+
// 데이터베이스 연결이 여전히 유효한지 확인 (간단한 쿼리로 테스트)
|
|
81
|
+
// DatabaseUtils.get은 동기 함수이지만, 비동기 컨텍스트에서 안전하게 실행하기 위해 Promise로 감싸서 await
|
|
82
|
+
try {
|
|
83
|
+
await new Promise((resolve, reject) => {
|
|
84
|
+
try {
|
|
85
|
+
DatabaseUtils.get(dbRef, 'SELECT 1');
|
|
86
|
+
resolve();
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
reject(error);
|
|
90
|
+
}
|
|
91
|
+
});
|
|
74
92
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
93
|
+
catch (dbError) {
|
|
94
|
+
this.logWarning('데이터베이스 연결이 유효하지 않아 임베딩 생성을 건너뜁니다', {
|
|
95
|
+
memory_id: id,
|
|
96
|
+
error: dbError instanceof Error ? dbError.message : String(dbError)
|
|
97
|
+
});
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
// 임베딩 생성
|
|
101
|
+
const embeddingResult = await embeddingServiceRef.createAndStoreEmbedding(dbRef, id, content, type);
|
|
102
|
+
if (embeddingResult) {
|
|
103
|
+
// PRD 3.1-3.3: 인접 기억 갱신
|
|
104
|
+
try {
|
|
105
|
+
// 데이터베이스 연결 재확인
|
|
106
|
+
// DatabaseUtils.get은 동기 함수이지만, 비동기 컨텍스트에서 안전하게 실행하기 위해 Promise로 감싸서 await
|
|
107
|
+
try {
|
|
108
|
+
await new Promise((resolve, reject) => {
|
|
109
|
+
try {
|
|
110
|
+
DatabaseUtils.get(dbRef, 'SELECT 1');
|
|
111
|
+
resolve();
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
reject(error);
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
catch (dbError) {
|
|
119
|
+
this.logWarning('데이터베이스 연결이 유효하지 않아 인접 기억 갱신을 건너뜁니다', {
|
|
120
|
+
memory_id: id,
|
|
121
|
+
error: dbError instanceof Error ? dbError.message : String(dbError)
|
|
122
|
+
});
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
const vectorSearchEngine = getVectorSearchEngine();
|
|
126
|
+
const neighborService = new MemoryNeighborService(vectorSearchEngine, embeddingServiceRef);
|
|
127
|
+
neighborService.setDatabase(dbRef);
|
|
128
|
+
// 인접 기억 갱신 (기본 유사도 임계값: 0.8)
|
|
129
|
+
const neighborIds = await neighborService.updateNeighborsForNewMemory(id, 0.8);
|
|
130
|
+
if (neighborIds.length > 0) {
|
|
131
|
+
this.logInfo('인접 기억 갱신 완료', {
|
|
132
|
+
memory_id: id,
|
|
133
|
+
neighbor_count: neighborIds.length
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
// 인접 기억 갱신 실패해도 메모리 저장은 성공했으므로 경고만 출력
|
|
139
|
+
this.logWarning(`인접 기억 갱신 실패 (${id})`, {
|
|
140
|
+
error: error instanceof Error ? error.message : String(error)
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
// 임베딩 생성 실패해도 메모리 저장은 성공했으므로 경고만 출력
|
|
147
|
+
this.logWarning(`임베딩 생성 실패 (${id})`, {
|
|
148
|
+
error: error instanceof Error ? error.message : String(error)
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
})().catch((error) => {
|
|
152
|
+
// 예상치 못한 에러 처리
|
|
153
|
+
this.logWarning(`백그라운드 작업 실패 (${id})`, {
|
|
154
|
+
error: error instanceof Error ? error.message : String(error)
|
|
78
155
|
});
|
|
79
|
-
}
|
|
156
|
+
});
|
|
80
157
|
}
|
|
81
158
|
return this.createSuccessResult({
|
|
82
159
|
memory_id: id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remember-tool.js","sourceRoot":"","sources":["../../src/tools/remember-tool.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"remember-tool.js","sourceRoot":"","sources":["../../src/tools/remember-tool.ts"],"names":[],"mappings":"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"}
|