memento-mcp-server 1.16.3-a → 1.16.3-b
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/dist/domains/search/algorithms/vector-search-engine-migration.d.ts +13 -8
- package/dist/domains/search/algorithms/vector-search-engine-migration.d.ts.map +1 -1
- package/dist/domains/search/algorithms/vector-search-engine-migration.js +19 -41
- package/dist/domains/search/algorithms/vector-search-engine-migration.js.map +1 -1
- package/dist/domains/search/algorithms/vector-search-engine.d.ts +17 -36
- package/dist/domains/search/algorithms/vector-search-engine.d.ts.map +1 -1
- package/dist/domains/search/algorithms/vector-search-engine.js +94 -481
- package/dist/domains/search/algorithms/vector-search-engine.js.map +1 -1
- package/dist/domains/search/repositories/vector-search.repository.d.ts.map +1 -1
- package/dist/domains/search/repositories/vector-search.repository.js +28 -12
- package/dist/domains/search/repositories/vector-search.repository.js.map +1 -1
- package/dist/server/http-server.d.ts.map +1 -1
- package/dist/server/http-server.js +2 -7
- package/dist/server/http-server.js.map +1 -1
- package/dist/server/index.d.ts +3 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +33 -7
- package/dist/server/index.js.map +1 -1
- package/dist/server/server-factory.d.ts +65 -0
- package/dist/server/server-factory.d.ts.map +1 -0
- package/dist/server/server-factory.js +40 -0
- package/dist/server/server-factory.js.map +1 -0
- package/dist/server/servers/sse-server.d.ts +33 -0
- package/dist/server/servers/sse-server.d.ts.map +1 -0
- package/dist/server/servers/sse-server.js +48 -0
- package/dist/server/servers/sse-server.js.map +1 -0
- package/dist/server/servers/stdio-server.d.ts +34 -0
- package/dist/server/servers/stdio-server.d.ts.map +1 -0
- package/dist/server/servers/stdio-server.js +58 -0
- package/dist/server/servers/stdio-server.js.map +1 -0
- package/dist/server/simple-mcp-server.d.ts +5 -0
- package/dist/server/simple-mcp-server.d.ts.map +1 -1
- package/dist/server/simple-mcp-server.js +17 -7
- package/dist/server/simple-mcp-server.js.map +1 -1
- package/dist/server/sse-server-impl.d.ts +22 -0
- package/dist/server/sse-server-impl.d.ts.map +1 -0
- package/dist/server/sse-server-impl.js +39 -0
- package/dist/server/sse-server-impl.js.map +1 -0
- package/dist/server/stdio-server-impl.d.ts +12 -0
- package/dist/server/stdio-server-impl.d.ts.map +1 -0
- package/dist/server/stdio-server-impl.js +19 -0
- package/dist/server/stdio-server-impl.js.map +1 -0
- package/dist/shared/types/vector-search.types.d.ts +1 -0
- package/dist/shared/types/vector-search.types.d.ts.map +1 -1
- package/package.json +1 -1
- package/scripts/__tests__/check-db-integrity.integration.spec.ts +163 -0
- package/scripts/__tests__/fix-migration.integration.spec.ts +203 -0
- package/scripts/__tests__/migrate-embedding-data.integration.spec.ts +219 -0
- package/scripts/__tests__/regenerate-embeddings.integration.spec.ts +192 -0
- package/scripts/backup-embeddings.js +52 -61
- package/scripts/check-db-integrity.js +49 -25
- package/scripts/check-file-sizes.ts +4 -4
- package/scripts/check-pii-masking.ts +0 -3
- package/scripts/check-sql-injection.ts +0 -12
- package/scripts/debug-embeddings.js +74 -93
- package/scripts/fix-migration.js +115 -80
- package/scripts/fix-vector-dimensions.js +70 -89
- package/scripts/migrate-embedding-data.js +111 -25
- package/scripts/regenerate-embeddings.js +31 -15
- package/scripts/run-migration.js +144 -107
- package/scripts/safe-migration.js +192 -142
- package/scripts/save-work-memory.ts +6 -7
- package/scripts/simple-migrate.js +66 -34
- package/scripts/simple-update.js +147 -109
- package/dist/domains/search/algorithms/vector-search-engine-refactored.d.ts +0 -56
- package/dist/domains/search/algorithms/vector-search-engine-refactored.d.ts.map +0 -1
- package/dist/domains/search/algorithms/vector-search-engine-refactored.js +0 -101
- package/dist/domains/search/algorithms/vector-search-engine-refactored.js.map +0 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSE 서버 구현
|
|
3
|
+
*
|
|
4
|
+
* Server-Sent Events를 통한 HTTP/SSE 서버를 래핑하는 클래스
|
|
5
|
+
*/
|
|
6
|
+
import type { Server } from '../server-factory.js';
|
|
7
|
+
/**
|
|
8
|
+
* SSE 서버 클래스
|
|
9
|
+
*
|
|
10
|
+
* Server-Sent Events를 통한 HTTP/SSE 서버를 구현합니다.
|
|
11
|
+
*/
|
|
12
|
+
export declare class SseServer implements Server {
|
|
13
|
+
private isRunning;
|
|
14
|
+
/**
|
|
15
|
+
* 서버를 시작합니다
|
|
16
|
+
* @returns Promise<void> 서버 시작 완료 시 resolve
|
|
17
|
+
* @throws 서버 시작 실패 시 예외 발생
|
|
18
|
+
*/
|
|
19
|
+
start(): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* 서버를 중지합니다
|
|
22
|
+
* @returns Promise<void> 서버 중지 완료 시 resolve
|
|
23
|
+
* @throws 서버 중지 실패 시 예외 발생
|
|
24
|
+
*/
|
|
25
|
+
stop(): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* 서버 리소스를 정리합니다
|
|
28
|
+
* @returns Promise<void> 정리 완료 시 resolve
|
|
29
|
+
* @throws 정리 실패 시 예외 발생
|
|
30
|
+
*/
|
|
31
|
+
cleanup(): Promise<void>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=sse-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sse-server.d.ts","sourceRoot":"","sources":["../../../src/server/servers/sse-server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAGnD;;;;GAIG;AACH,qBAAa,SAAU,YAAW,MAAM;IACtC,OAAO,CAAC,SAAS,CAAS;IAE1B;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3B;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAI/B"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSE 서버 구현
|
|
3
|
+
*
|
|
4
|
+
* Server-Sent Events를 통한 HTTP/SSE 서버를 래핑하는 클래스
|
|
5
|
+
*/
|
|
6
|
+
import { startSseServer, stopSseServer, cleanupSseServer } from '../sse-server-impl.js';
|
|
7
|
+
/**
|
|
8
|
+
* SSE 서버 클래스
|
|
9
|
+
*
|
|
10
|
+
* Server-Sent Events를 통한 HTTP/SSE 서버를 구현합니다.
|
|
11
|
+
*/
|
|
12
|
+
export class SseServer {
|
|
13
|
+
isRunning = false;
|
|
14
|
+
/**
|
|
15
|
+
* 서버를 시작합니다
|
|
16
|
+
* @returns Promise<void> 서버 시작 완료 시 resolve
|
|
17
|
+
* @throws 서버 시작 실패 시 예외 발생
|
|
18
|
+
*/
|
|
19
|
+
async start() {
|
|
20
|
+
if (this.isRunning) {
|
|
21
|
+
throw new Error('SSE 서버가 이미 실행 중입니다');
|
|
22
|
+
}
|
|
23
|
+
this.isRunning = true;
|
|
24
|
+
await startSseServer();
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* 서버를 중지합니다
|
|
28
|
+
* @returns Promise<void> 서버 중지 완료 시 resolve
|
|
29
|
+
* @throws 서버 중지 실패 시 예외 발생
|
|
30
|
+
*/
|
|
31
|
+
async stop() {
|
|
32
|
+
if (!this.isRunning) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
await stopSseServer();
|
|
36
|
+
this.isRunning = false;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* 서버 리소스를 정리합니다
|
|
40
|
+
* @returns Promise<void> 정리 완료 시 resolve
|
|
41
|
+
* @throws 정리 실패 시 예외 발생
|
|
42
|
+
*/
|
|
43
|
+
async cleanup() {
|
|
44
|
+
await cleanupSseServer();
|
|
45
|
+
this.isRunning = false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=sse-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sse-server.js","sourceRoot":"","sources":["../../../src/server/servers/sse-server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAExF;;;;GAIG;AACH,MAAM,OAAO,SAAS;IACZ,SAAS,GAAG,KAAK,CAAC;IAE1B;;;;OAIG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,MAAM,cAAc,EAAE,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,MAAM,aAAa,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO;QACX,MAAM,gBAAgB,EAAE,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;CACF"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stdio 서버 구현
|
|
3
|
+
*
|
|
4
|
+
* 표준 입출력을 통한 MCP 서버를 래핑하는 클래스
|
|
5
|
+
*/
|
|
6
|
+
import type { Server } from '../server-factory.js';
|
|
7
|
+
/**
|
|
8
|
+
* Stdio 서버 클래스
|
|
9
|
+
*
|
|
10
|
+
* 표준 입출력을 통한 MCP 서버를 구현합니다.
|
|
11
|
+
*/
|
|
12
|
+
export declare class StdioServer implements Server {
|
|
13
|
+
private isRunning;
|
|
14
|
+
private stopPromise;
|
|
15
|
+
/**
|
|
16
|
+
* 서버를 시작합니다
|
|
17
|
+
* @returns Promise<void> 서버 시작 완료 시 resolve
|
|
18
|
+
* @throws 서버 시작 실패 시 예외 발생
|
|
19
|
+
*/
|
|
20
|
+
start(): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* 서버를 중지합니다
|
|
23
|
+
* @returns Promise<void> 서버 중지 완료 시 resolve
|
|
24
|
+
* @throws 서버 중지 실패 시 예외 발생
|
|
25
|
+
*/
|
|
26
|
+
stop(): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* 서버 리소스를 정리합니다
|
|
29
|
+
* @returns Promise<void> 정리 완료 시 resolve
|
|
30
|
+
* @throws 정리 실패 시 예외 발생
|
|
31
|
+
*/
|
|
32
|
+
cleanup(): Promise<void>;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=stdio-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdio-server.d.ts","sourceRoot":"","sources":["../../../src/server/servers/stdio-server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAGnD;;;;GAIG;AACH,qBAAa,WAAY,YAAW,MAAM;IACxC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAA8B;IAEjD;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAc5B;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB3B;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stdio 서버 구현
|
|
3
|
+
*
|
|
4
|
+
* 표준 입출력을 통한 MCP 서버를 래핑하는 클래스
|
|
5
|
+
*/
|
|
6
|
+
import { startStdioServer } from '../stdio-server-impl.js';
|
|
7
|
+
/**
|
|
8
|
+
* Stdio 서버 클래스
|
|
9
|
+
*
|
|
10
|
+
* 표준 입출력을 통한 MCP 서버를 구현합니다.
|
|
11
|
+
*/
|
|
12
|
+
export class StdioServer {
|
|
13
|
+
isRunning = false;
|
|
14
|
+
stopPromise = null;
|
|
15
|
+
/**
|
|
16
|
+
* 서버를 시작합니다
|
|
17
|
+
* @returns Promise<void> 서버 시작 완료 시 resolve
|
|
18
|
+
* @throws 서버 시작 실패 시 예외 발생
|
|
19
|
+
*/
|
|
20
|
+
async start() {
|
|
21
|
+
if (this.isRunning) {
|
|
22
|
+
throw new Error('Stdio 서버가 이미 실행 중입니다');
|
|
23
|
+
}
|
|
24
|
+
this.isRunning = true;
|
|
25
|
+
this.stopPromise = startStdioServer();
|
|
26
|
+
// 서버가 종료될 때까지 대기
|
|
27
|
+
await this.stopPromise;
|
|
28
|
+
this.isRunning = false;
|
|
29
|
+
this.stopPromise = null;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* 서버를 중지합니다
|
|
33
|
+
* @returns Promise<void> 서버 중지 완료 시 resolve
|
|
34
|
+
* @throws 서버 중지 실패 시 예외 발생
|
|
35
|
+
*/
|
|
36
|
+
async stop() {
|
|
37
|
+
if (!this.isRunning) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
// SIGTERM 신호를 보내서 서버 종료
|
|
41
|
+
process.emit('SIGTERM', 'SIGTERM');
|
|
42
|
+
// 서버가 종료될 때까지 대기
|
|
43
|
+
if (this.stopPromise) {
|
|
44
|
+
await this.stopPromise;
|
|
45
|
+
}
|
|
46
|
+
this.isRunning = false;
|
|
47
|
+
this.stopPromise = null;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* 서버 리소스를 정리합니다
|
|
51
|
+
* @returns Promise<void> 정리 완료 시 resolve
|
|
52
|
+
* @throws 정리 실패 시 예외 발생
|
|
53
|
+
*/
|
|
54
|
+
async cleanup() {
|
|
55
|
+
await this.stop();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=stdio-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdio-server.js","sourceRoot":"","sources":["../../../src/server/servers/stdio-server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D;;;;GAIG;AACH,MAAM,OAAO,WAAW;IACd,SAAS,GAAG,KAAK,CAAC;IAClB,WAAW,GAAyB,IAAI,CAAC;IAEjD;;;;OAIG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,gBAAgB,EAAE,CAAC;QAEtC,iBAAiB;QACjB,MAAM,IAAI,CAAC,WAAW,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,wBAAwB;QACxB,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAEnC,iBAAiB;QACjB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,WAAW,CAAC;QACzB,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;CACF"}
|
|
@@ -4,5 +4,10 @@
|
|
|
4
4
|
*/
|
|
5
5
|
declare const app: import("express-serve-static-core").Express;
|
|
6
6
|
declare const server: import("http").Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse>;
|
|
7
|
+
/**
|
|
8
|
+
* SSE 서버를 시작하는 함수
|
|
9
|
+
* @returns Promise<void> 서버 시작 완료 시 resolve
|
|
10
|
+
*/
|
|
11
|
+
export declare function startSimpleMcpServer(): Promise<void>;
|
|
7
12
|
export { app, server };
|
|
8
13
|
//# sourceMappingURL=simple-mcp-server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simple-mcp-server.d.ts","sourceRoot":"","sources":["../../src/server/simple-mcp-server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,QAAA,MAAM,GAAG,6CAAY,CAAC;AACtB,QAAA,MAAM,MAAM,oGAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"simple-mcp-server.d.ts","sourceRoot":"","sources":["../../src/server/simple-mcp-server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,QAAA,MAAM,GAAG,6CAAY,CAAC;AACtB,QAAA,MAAM,MAAM,oGAAoB,CAAC;AA4JjC;;;GAGG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAW1D;AAED,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -142,12 +142,22 @@ app.get('/health', (req, res) => {
|
|
|
142
142
|
tools: tools.length
|
|
143
143
|
});
|
|
144
144
|
});
|
|
145
|
-
// 서버 시작
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
145
|
+
// 서버 시작 함수는 export만 유지 (팩토리 패턴 사용)
|
|
146
|
+
// 직접 실행 코드는 제거됨 - 팩토리를 통해 서버를 시작해야 함
|
|
147
|
+
/**
|
|
148
|
+
* SSE 서버를 시작하는 함수
|
|
149
|
+
* @returns Promise<void> 서버 시작 완료 시 resolve
|
|
150
|
+
*/
|
|
151
|
+
export async function startSimpleMcpServer() {
|
|
152
|
+
const PORT = process.env.PORT || 9001;
|
|
153
|
+
return new Promise((resolve) => {
|
|
154
|
+
server.listen(Number(PORT), '0.0.0.0', () => {
|
|
155
|
+
logger.info(`🌐 간단한 MCP 서버 시작: http://0.0.0.0:${PORT}`);
|
|
156
|
+
logger.info(`📋 도구 개수: ${tools.length}개`);
|
|
157
|
+
logger.info(`❤️ 헬스 체크: http://0.0.0.0:${PORT}/health`);
|
|
158
|
+
resolve();
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
}
|
|
152
162
|
export { app, server };
|
|
153
163
|
//# sourceMappingURL=simple-mcp-server.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simple-mcp-server.js","sourceRoot":"","sources":["../../src/server/simple-mcp-server.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"simple-mcp-server.js","sourceRoot":"","sources":["../../src/server/simple-mcp-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSE 서버 구현 모듈
|
|
3
|
+
*
|
|
4
|
+
* http-server.ts의 로직을 모듈화하여 export합니다.
|
|
5
|
+
* 나중에 http-server.ts가 이 모듈을 사용하도록 리팩토링됩니다.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* SSE 서버를 시작합니다
|
|
9
|
+
* @returns Promise<void> 서버 시작 완료 시 resolve
|
|
10
|
+
*/
|
|
11
|
+
export declare function startSseServer(): Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* SSE 서버를 중지합니다
|
|
14
|
+
* @returns Promise<void> 서버 중지 완료 시 resolve
|
|
15
|
+
*/
|
|
16
|
+
export declare function stopSseServer(): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* SSE 서버 리소스를 정리합니다
|
|
19
|
+
* @returns Promise<void> 정리 완료 시 resolve
|
|
20
|
+
*/
|
|
21
|
+
export declare function cleanupSseServer(): Promise<void>;
|
|
22
|
+
//# sourceMappingURL=sse-server-impl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sse-server-impl.d.ts","sourceRoot":"","sources":["../../src/server/sse-server-impl.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAKpD;AAED;;;GAGG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAKnD;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAKtD"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSE 서버 구현 모듈
|
|
3
|
+
*
|
|
4
|
+
* http-server.ts의 로직을 모듈화하여 export합니다.
|
|
5
|
+
* 나중에 http-server.ts가 이 모듈을 사용하도록 리팩토링됩니다.
|
|
6
|
+
*/
|
|
7
|
+
// 현재는 http-server.ts의 startServer, cleanup 함수를 export하는 임시 구현
|
|
8
|
+
// 1.4 작업에서 http-server.ts가 이 모듈을 사용하도록 리팩토링됩니다.
|
|
9
|
+
/**
|
|
10
|
+
* SSE 서버를 시작합니다
|
|
11
|
+
* @returns Promise<void> 서버 시작 완료 시 resolve
|
|
12
|
+
*/
|
|
13
|
+
export async function startSseServer() {
|
|
14
|
+
// 임시 구현: http-server.ts의 startServer 함수를 호출
|
|
15
|
+
// 1.4 작업에서 실제 구현으로 대체됩니다.
|
|
16
|
+
const { startServer } = await import('./http-server.js');
|
|
17
|
+
return startServer();
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* SSE 서버를 중지합니다
|
|
21
|
+
* @returns Promise<void> 서버 중지 완료 시 resolve
|
|
22
|
+
*/
|
|
23
|
+
export async function stopSseServer() {
|
|
24
|
+
// 임시 구현: http-server.ts의 cleanup 함수를 호출
|
|
25
|
+
// 1.4 작업에서 실제 구현으로 대체됩니다.
|
|
26
|
+
const { cleanup } = await import('./http-server.js');
|
|
27
|
+
return cleanup();
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* SSE 서버 리소스를 정리합니다
|
|
31
|
+
* @returns Promise<void> 정리 완료 시 resolve
|
|
32
|
+
*/
|
|
33
|
+
export async function cleanupSseServer() {
|
|
34
|
+
// 임시 구현: http-server.ts의 cleanup 함수를 호출
|
|
35
|
+
// 1.4 작업에서 실제 구현으로 대체됩니다.
|
|
36
|
+
const { cleanup } = await import('./http-server.js');
|
|
37
|
+
return cleanup();
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=sse-server-impl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sse-server-impl.js","sourceRoot":"","sources":["../../src/server/sse-server-impl.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,8DAA8D;AAC9D,gDAAgD;AAEhD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,4CAA4C;IAC5C,0BAA0B;IAC1B,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACzD,OAAO,WAAW,EAAE,CAAC;AACvB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,wCAAwC;IACxC,0BAA0B;IAC1B,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACrD,OAAO,OAAO,EAAE,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,wCAAwC;IACxC,0BAA0B;IAC1B,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACrD,OAAO,OAAO,EAAE,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stdio 서버 구현 모듈
|
|
3
|
+
*
|
|
4
|
+
* index.ts의 로직을 모듈화하여 export합니다.
|
|
5
|
+
* 나중에 index.ts가 이 모듈을 사용하도록 리팩토링됩니다.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Stdio 서버를 시작합니다
|
|
9
|
+
* @returns Promise<void> 서버가 종료될 때까지 대기하는 Promise
|
|
10
|
+
*/
|
|
11
|
+
export declare function startStdioServer(): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=stdio-server-impl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdio-server-impl.d.ts","sourceRoot":"","sources":["../../src/server/stdio-server-impl.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;;GAGG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAKtD"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stdio 서버 구현 모듈
|
|
3
|
+
*
|
|
4
|
+
* index.ts의 로직을 모듈화하여 export합니다.
|
|
5
|
+
* 나중에 index.ts가 이 모듈을 사용하도록 리팩토링됩니다.
|
|
6
|
+
*/
|
|
7
|
+
// 현재는 index.ts의 startServer 함수를 export하는 임시 구현
|
|
8
|
+
// 1.3 작업에서 index.ts가 이 모듈을 사용하도록 리팩토링됩니다.
|
|
9
|
+
/**
|
|
10
|
+
* Stdio 서버를 시작합니다
|
|
11
|
+
* @returns Promise<void> 서버가 종료될 때까지 대기하는 Promise
|
|
12
|
+
*/
|
|
13
|
+
export async function startStdioServer() {
|
|
14
|
+
// 임시 구현: index.ts의 startServer 함수를 호출
|
|
15
|
+
// 1.3 작업에서 실제 구현으로 대체됩니다.
|
|
16
|
+
const { startServer } = await import('./index.js');
|
|
17
|
+
return startServer();
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=stdio-server-impl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdio-server-impl.js","sourceRoot":"","sources":["../../src/server/stdio-server-impl.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,+CAA+C;AAC/C,0CAA0C;AAE1C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,sCAAsC;IACtC,0BAA0B;IAC1B,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IACnD,OAAO,WAAW,EAAE,CAAC;AACvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector-search.types.d.ts","sourceRoot":"","sources":["../../../src/shared/types/vector-search.types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vector-search.types.d.ts","sourceRoot":"","sources":["../../../src/shared/types/vector-search.types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* check-db-integrity.js 통합 테스트
|
|
3
|
+
*
|
|
4
|
+
* Given/When/Then 구조를 따르는 통합 테스트
|
|
5
|
+
* 공통 모듈(initializeDatabase)을 사용하는 버전으로 리팩토링 후 검증
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
9
|
+
import { existsSync, unlinkSync, mkdirSync, copyFileSync } from 'fs';
|
|
10
|
+
import { join } from 'path';
|
|
11
|
+
import { tmpdir } from 'os';
|
|
12
|
+
import { initializeDatabase, closeDatabase } from '../../src/infrastructure/database/database/init.js';
|
|
13
|
+
import Database from 'better-sqlite3';
|
|
14
|
+
|
|
15
|
+
describe('check-db-integrity 통합 테스트', () => {
|
|
16
|
+
let testDbPath: string;
|
|
17
|
+
let testLogPath: string;
|
|
18
|
+
let testLogDir: string;
|
|
19
|
+
let originalDbPath: string | undefined;
|
|
20
|
+
let originalLogPath: string | undefined;
|
|
21
|
+
|
|
22
|
+
beforeEach(() => {
|
|
23
|
+
// 테스트용 임시 디렉토리 생성
|
|
24
|
+
const testDir = join(tmpdir(), `memento-test-${Date.now()}`);
|
|
25
|
+
mkdirSync(testDir, { recursive: true });
|
|
26
|
+
|
|
27
|
+
testDbPath = join(testDir, 'memory.db');
|
|
28
|
+
testLogDir = join(testDir, 'logs');
|
|
29
|
+
testLogPath = join(testLogDir, 'db-integrity.log');
|
|
30
|
+
|
|
31
|
+
mkdirSync(testLogDir, { recursive: true });
|
|
32
|
+
|
|
33
|
+
// 환경 변수 백업 및 설정
|
|
34
|
+
originalDbPath = process.env.DB_PATH;
|
|
35
|
+
process.env.DB_PATH = testDbPath;
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
afterEach(() => {
|
|
39
|
+
// 환경 변수 복원
|
|
40
|
+
if (originalDbPath !== undefined) {
|
|
41
|
+
process.env.DB_PATH = originalDbPath;
|
|
42
|
+
} else {
|
|
43
|
+
delete process.env.DB_PATH;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// 테스트 파일 정리
|
|
47
|
+
try {
|
|
48
|
+
if (existsSync(testLogPath)) {
|
|
49
|
+
unlinkSync(testLogPath);
|
|
50
|
+
}
|
|
51
|
+
if (existsSync(testDbPath)) {
|
|
52
|
+
unlinkSync(testDbPath);
|
|
53
|
+
}
|
|
54
|
+
} catch (error) {
|
|
55
|
+
// 파일 정리 실패는 무시
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* @given 공통 모듈(initializeDatabase)을 사용하는 check-db-integrity 함수
|
|
61
|
+
* @when 정상적인 데이터베이스에서 무결성 검사 실행
|
|
62
|
+
* @then 검사 통과 및 정상 상태 반환
|
|
63
|
+
*/
|
|
64
|
+
it('should pass integrity check for valid database', async () => {
|
|
65
|
+
// Given: 정상적인 데이터베이스 초기화
|
|
66
|
+
const db = await initializeDatabase();
|
|
67
|
+
|
|
68
|
+
try {
|
|
69
|
+
// 기본 테이블 생성 (initializeDatabase가 자동으로 생성하지만, 명시적으로 확인)
|
|
70
|
+
const tables = db.prepare(`
|
|
71
|
+
SELECT name FROM sqlite_master
|
|
72
|
+
WHERE type='table' AND name IN ('memory_item', 'memory_embedding')
|
|
73
|
+
`).all();
|
|
74
|
+
|
|
75
|
+
expect(tables.length).toBeGreaterThanOrEqual(0);
|
|
76
|
+
|
|
77
|
+
// When: 무결성 검사 실행
|
|
78
|
+
const integrityResult = db.prepare('PRAGMA integrity_check').get() as { integrity_check: string };
|
|
79
|
+
|
|
80
|
+
// Then: 검사 통과
|
|
81
|
+
expect(integrityResult.integrity_check).toBe('ok');
|
|
82
|
+
|
|
83
|
+
// 데이터 개수 확인
|
|
84
|
+
const memoryCount = db.prepare('SELECT COUNT(*) as count FROM memory_item').get() as { count: number };
|
|
85
|
+
expect(memoryCount.count).toBeGreaterThanOrEqual(0);
|
|
86
|
+
} finally {
|
|
87
|
+
closeDatabase(db);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* @given 공통 모듈(initializeDatabase)을 사용하는 check-db-integrity 함수
|
|
93
|
+
* @when 데이터베이스 파일이 없는 경우
|
|
94
|
+
* @then 적절한 에러 처리 또는 새 DB 생성
|
|
95
|
+
*/
|
|
96
|
+
it('should handle missing database file', async () => {
|
|
97
|
+
// Given: DB_PATH를 존재하지 않는 경로로 설정
|
|
98
|
+
const nonExistentPath = join(tmpdir(), `non-existent-${Date.now()}.db`);
|
|
99
|
+
process.env.DB_PATH = nonExistentPath;
|
|
100
|
+
|
|
101
|
+
// When: initializeDatabase 호출
|
|
102
|
+
// Then: 새 데이터베이스가 생성되어야 함 (initializeDatabase의 동작)
|
|
103
|
+
const db = await initializeDatabase();
|
|
104
|
+
|
|
105
|
+
try {
|
|
106
|
+
expect(db).toBeDefined();
|
|
107
|
+
expect(existsSync(nonExistentPath)).toBe(true);
|
|
108
|
+
} finally {
|
|
109
|
+
closeDatabase(db);
|
|
110
|
+
if (existsSync(nonExistentPath)) {
|
|
111
|
+
unlinkSync(nonExistentPath);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* @given 공통 모듈(initializeDatabase)을 사용하는 check-db-integrity 함수
|
|
118
|
+
* @when 필수 테이블이 존재하는 데이터베이스에서 검사 실행
|
|
119
|
+
* @then 필수 테이블 확인 통과
|
|
120
|
+
*/
|
|
121
|
+
it('should verify required tables exist', async () => {
|
|
122
|
+
// Given: 정상적인 데이터베이스 초기화
|
|
123
|
+
const db = await initializeDatabase();
|
|
124
|
+
|
|
125
|
+
try {
|
|
126
|
+
// When: 필수 테이블 확인
|
|
127
|
+
const tables = db.prepare(`
|
|
128
|
+
SELECT name FROM sqlite_master
|
|
129
|
+
WHERE type='table' AND name IN ('memory_item', 'memory_embedding', 'memory_tag')
|
|
130
|
+
`).all() as Array<{ name: string }>;
|
|
131
|
+
|
|
132
|
+
// Then: 필수 테이블이 존재해야 함 (initializeDatabase가 스키마를 생성하므로)
|
|
133
|
+
const tableNames = tables.map(t => t.name);
|
|
134
|
+
expect(tableNames).toContain('memory_item');
|
|
135
|
+
// memory_embedding과 memory_tag는 스키마에 따라 있을 수 있음
|
|
136
|
+
} finally {
|
|
137
|
+
closeDatabase(db);
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* @given 공통 모듈(initializeDatabase)을 사용하는 check-db-integrity 함수
|
|
143
|
+
* @when 데이터 개수 확인 실행
|
|
144
|
+
* @then 정상적으로 데이터 개수 반환
|
|
145
|
+
*/
|
|
146
|
+
it('should count data correctly', async () => {
|
|
147
|
+
// Given: 정상적인 데이터베이스 초기화
|
|
148
|
+
const db = await initializeDatabase();
|
|
149
|
+
|
|
150
|
+
try {
|
|
151
|
+
// When: 데이터 개수 확인
|
|
152
|
+
const memoryCount = db.prepare('SELECT COUNT(*) as count FROM memory_item').get() as { count: number };
|
|
153
|
+
const embeddingCount = db.prepare('SELECT COUNT(*) as count FROM memory_embedding').get() as { count: number };
|
|
154
|
+
|
|
155
|
+
// Then: 정상적으로 개수 반환 (0개 이상)
|
|
156
|
+
expect(memoryCount.count).toBeGreaterThanOrEqual(0);
|
|
157
|
+
expect(embeddingCount.count).toBeGreaterThanOrEqual(0);
|
|
158
|
+
} finally {
|
|
159
|
+
closeDatabase(db);
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
|