memento-mcp-server 1.7.5 → 1.9.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 (116) hide show
  1. package/README.md +1 -0
  2. package/dist/config/environment.d.ts.map +1 -1
  3. package/dist/config/environment.js +2 -1
  4. package/dist/config/environment.js.map +1 -1
  5. package/dist/config/index.d.ts.map +1 -1
  6. package/dist/config/index.js +5 -2
  7. package/dist/config/index.js.map +1 -1
  8. package/dist/database/init.d.ts.map +1 -1
  9. package/dist/database/init.js +159 -7
  10. package/dist/database/init.js.map +1 -1
  11. package/dist/database/migration/backup-manager.d.ts +55 -0
  12. package/dist/database/migration/backup-manager.d.ts.map +1 -0
  13. package/dist/database/migration/backup-manager.js +181 -0
  14. package/dist/database/migration/backup-manager.js.map +1 -0
  15. package/dist/database/migration/dependency-validator.d.ts +62 -0
  16. package/dist/database/migration/dependency-validator.d.ts.map +1 -0
  17. package/dist/database/migration/dependency-validator.js +260 -0
  18. package/dist/database/migration/dependency-validator.js.map +1 -0
  19. package/dist/database/migration/migration-detector.d.ts +67 -0
  20. package/dist/database/migration/migration-detector.d.ts.map +1 -0
  21. package/dist/database/migration/migration-detector.js +129 -0
  22. package/dist/database/migration/migration-detector.js.map +1 -0
  23. package/dist/database/migration/migration-logger.d.ts +82 -0
  24. package/dist/database/migration/migration-logger.d.ts.map +1 -0
  25. package/dist/database/migration/migration-logger.js +168 -0
  26. package/dist/database/migration/migration-logger.js.map +1 -0
  27. package/dist/database/migration/migration-runner.d.ts +45 -0
  28. package/dist/database/migration/migration-runner.d.ts.map +1 -0
  29. package/dist/database/migration/migration-runner.js +194 -0
  30. package/dist/database/migration/migration-runner.js.map +1 -0
  31. package/dist/database/migration/migrations/002-mirix-schema-expansion.d.ts +55 -0
  32. package/dist/database/migration/migrations/002-mirix-schema-expansion.d.ts.map +1 -0
  33. package/dist/database/migration/migrations/002-mirix-schema-expansion.js +154 -0
  34. package/dist/database/migration/migrations/002-mirix-schema-expansion.js.map +1 -0
  35. package/dist/database/migration/schema-version-manager.d.ts +43 -0
  36. package/dist/database/migration/schema-version-manager.d.ts.map +1 -0
  37. package/dist/database/migration/schema-version-manager.js +146 -0
  38. package/dist/database/migration/schema-version-manager.js.map +1 -0
  39. package/dist/database/migration/types.d.ts +127 -0
  40. package/dist/database/migration/types.d.ts.map +1 -0
  41. package/dist/database/migration/types.js +5 -0
  42. package/dist/database/migration/types.js.map +1 -0
  43. package/dist/database/schema.sql +69 -1
  44. package/dist/npm-client/memento-client.d.ts.map +1 -1
  45. package/dist/npm-client/memento-client.js +39 -8
  46. package/dist/npm-client/memento-client.js.map +1 -1
  47. package/dist/npm-client/types.d.ts +16 -2
  48. package/dist/npm-client/types.d.ts.map +1 -1
  49. package/dist/npm-client/types.js.map +1 -1
  50. package/dist/npm-client/utils.d.ts.map +1 -1
  51. package/dist/npm-client/utils.js +44 -5
  52. package/dist/npm-client/utils.js.map +1 -1
  53. package/dist/repositories/core-memory-repository.d.ts +81 -0
  54. package/dist/repositories/core-memory-repository.d.ts.map +1 -0
  55. package/dist/repositories/core-memory-repository.js +263 -0
  56. package/dist/repositories/core-memory-repository.js.map +1 -0
  57. package/dist/repositories/knowledge-vault-repository.d.ts +102 -0
  58. package/dist/repositories/knowledge-vault-repository.d.ts.map +1 -0
  59. package/dist/repositories/knowledge-vault-repository.js +395 -0
  60. package/dist/repositories/knowledge-vault-repository.js.map +1 -0
  61. package/dist/server/http-server.d.ts.map +1 -1
  62. package/dist/server/http-server.js +66 -1
  63. package/dist/server/http-server.js.map +1 -1
  64. package/dist/server/index.d.ts.map +1 -1
  65. package/dist/server/index.js +86 -1
  66. package/dist/server/index.js.map +1 -1
  67. package/dist/services/cache-service.d.ts.map +1 -1
  68. package/dist/services/cache-service.js +5 -2
  69. package/dist/services/cache-service.js.map +1 -1
  70. package/dist/services/core-memory-cache-service.d.ts +80 -0
  71. package/dist/services/core-memory-cache-service.d.ts.map +1 -0
  72. package/dist/services/core-memory-cache-service.js +122 -0
  73. package/dist/services/core-memory-cache-service.js.map +1 -0
  74. package/dist/services/core-memory-service.d.ts +117 -0
  75. package/dist/services/core-memory-service.d.ts.map +1 -0
  76. package/dist/services/core-memory-service.js +247 -0
  77. package/dist/services/core-memory-service.js.map +1 -0
  78. package/dist/services/knowledge-vault-service.d.ts +114 -0
  79. package/dist/services/knowledge-vault-service.d.ts.map +1 -0
  80. package/dist/services/knowledge-vault-service.js +233 -0
  81. package/dist/services/knowledge-vault-service.js.map +1 -0
  82. package/dist/services/memory-neighbor-service.d.ts +81 -0
  83. package/dist/services/memory-neighbor-service.d.ts.map +1 -0
  84. package/dist/services/memory-neighbor-service.js +295 -0
  85. package/dist/services/memory-neighbor-service.js.map +1 -0
  86. package/dist/tools/get-memory-neighbors-tool.d.ts +26 -0
  87. package/dist/tools/get-memory-neighbors-tool.d.ts.map +1 -0
  88. package/dist/tools/get-memory-neighbors-tool.js +125 -0
  89. package/dist/tools/get-memory-neighbors-tool.js.map +1 -0
  90. package/dist/tools/index.d.ts +2 -1
  91. package/dist/tools/index.d.ts.map +1 -1
  92. package/dist/tools/index.js +4 -2
  93. package/dist/tools/index.js.map +1 -1
  94. package/dist/tools/memory-injection-prompt.d.ts.map +1 -1
  95. package/dist/tools/memory-injection-prompt.js +28 -4
  96. package/dist/tools/memory-injection-prompt.js.map +1 -1
  97. package/dist/tools/recall-tool.d.ts.map +1 -1
  98. package/dist/tools/recall-tool.js +292 -82
  99. package/dist/tools/recall-tool.js.map +1 -1
  100. package/dist/tools/remember-tool.d.ts.map +1 -1
  101. package/dist/tools/remember-tool.js +293 -40
  102. package/dist/tools/remember-tool.js.map +1 -1
  103. package/dist/tools/types.d.ts +9 -2
  104. package/dist/tools/types.d.ts.map +1 -1
  105. package/dist/tools/types.js +11 -2
  106. package/dist/tools/types.js.map +1 -1
  107. package/dist/types/index.d.ts +20 -3
  108. package/dist/types/index.d.ts.map +1 -1
  109. package/dist/types/index.js +7 -1
  110. package/dist/types/index.js.map +1 -1
  111. package/dist/utils/type-param-validator.d.ts +31 -0
  112. package/dist/utils/type-param-validator.d.ts.map +1 -0
  113. package/dist/utils/type-param-validator.js +76 -0
  114. package/dist/utils/type-param-validator.js.map +1 -0
  115. package/package.json +1 -1
  116. package/src/database/schema.sql +69 -1
@@ -0,0 +1,76 @@
1
+ /**
2
+ * type 파라미터 롤아웃 모드 검증 유틸리티
3
+ *
4
+ * Phase 1 (warn): type 파라미터 없을 시 경고 로그 출력 및 기본값 적용
5
+ * Phase 2 (deprecate): type 파라미터 없을 시 Deprecation 경고 및 기본값 적용
6
+ * Phase 3 (error): type 파라미터 없을 시 에러 발생
7
+ */
8
+ /**
9
+ * type 파라미터 검증 및 롤아웃 모드에 따른 처리
10
+ *
11
+ * @param type - 사용자가 제공한 type 파라미터 (없을 수 있음)
12
+ * @param mode - 롤아웃 모드 ('warn' | 'deprecate' | 'error')
13
+ * @param toolName - 도구 이름 (에러 메시지에 사용)
14
+ * @returns 검증 결과 및 기본값
15
+ */
16
+ export function validateTypeParam(type, mode, toolName = 'tool') {
17
+ // type 파라미터가 제공된 경우
18
+ if (type !== undefined && type !== null && type !== '') {
19
+ return {
20
+ isValid: true,
21
+ mode,
22
+ defaultType: type
23
+ };
24
+ }
25
+ // type 파라미터가 없는 경우 - 모드에 따라 처리
26
+ const defaultType = 'episodic'; // 기본값
27
+ switch (mode) {
28
+ case 'warn':
29
+ return {
30
+ isValid: true,
31
+ mode: 'warn',
32
+ message: `⚠️ ${toolName}: 'type' 파라미터가 지정되지 않았습니다. 기본값 'episodic'을 사용합니다. 향후 버전에서는 필수 파라미터가 됩니다.`,
33
+ defaultType
34
+ };
35
+ case 'deprecate':
36
+ return {
37
+ isValid: true,
38
+ mode: 'deprecate',
39
+ message: `⚠️ [DEPRECATED] ${toolName}: 'type' 파라미터가 지정되지 않았습니다. 기본값 'episodic'을 사용합니다. 'type' 파라미터는 필수로 지정해주세요. 마이그레이션 가이드: https://github.com/your-repo/memento/blob/main/docs/migration-guide.md`,
40
+ defaultType
41
+ };
42
+ case 'error':
43
+ return {
44
+ isValid: false,
45
+ mode: 'error',
46
+ message: `❌ ${toolName}: 'type' 파라미터는 필수입니다. 'core' | 'episodic' | 'semantic' | 'procedural' | 'vault' | 'working' 중 하나를 지정해주세요.`
47
+ };
48
+ default:
49
+ // 알 수 없는 모드인 경우 warn 모드로 처리
50
+ return {
51
+ isValid: true,
52
+ mode: 'warn',
53
+ message: `⚠️ ${toolName}: 'type' 파라미터가 지정되지 않았습니다. 기본값 'episodic'을 사용합니다.`,
54
+ defaultType
55
+ };
56
+ }
57
+ }
58
+ /**
59
+ * 환경 변수에서 롤아웃 모드 읽기
60
+ *
61
+ * @param envValue - 환경 변수 값
62
+ * @returns 유효한 모드 또는 기본값 'warn'
63
+ */
64
+ export function parseTypeParamMode(envValue) {
65
+ if (!envValue) {
66
+ return 'warn';
67
+ }
68
+ const normalized = envValue.toLowerCase().trim();
69
+ if (normalized === 'warn' || normalized === 'deprecate' || normalized === 'error') {
70
+ return normalized;
71
+ }
72
+ // 유효하지 않은 값인 경우 기본값 반환
73
+ console.warn(`⚠️ Invalid MEMENTO_TYPE_PARAM_MODE value: ${envValue}. Using default 'warn'.`);
74
+ return 'warn';
75
+ }
76
+ //# sourceMappingURL=type-param-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-param-validator.js","sourceRoot":"","sources":["../../src/utils/type-param-validator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAwB,EACxB,IAAmB,EACnB,WAAmB,MAAM;IAEzB,oBAAoB;IACpB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;QACvD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI;YACJ,WAAW,EAAE,IAAI;SAClB,CAAC;IACJ,CAAC;IAED,+BAA+B;IAC/B,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,MAAM;IAEtC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM;YACT,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,OAAO,QAAQ,0EAA0E;gBAClG,WAAW;aACZ,CAAC;QAEJ,KAAK,WAAW;YACd,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,oBAAoB,QAAQ,+JAA+J;gBACpM,WAAW;aACZ,CAAC;QAEJ,KAAK,OAAO;YACV,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,KAAK,QAAQ,2GAA2G;aAClI,CAAC;QAEJ;YACE,4BAA4B;YAC5B,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,OAAO,QAAQ,mDAAmD;gBAC3E,WAAW;aACZ,CAAC;IACN,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAA4B;IAC7D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IACjD,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,WAAW,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QAClF,OAAO,UAA2B,CAAC;IACrC,CAAC;IAED,uBAAuB;IACvB,OAAO,CAAC,IAAI,CAAC,8CAA8C,QAAQ,yBAAyB,CAAC,CAAC;IAC9F,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "memento-mcp-server",
3
- "version": "1.7.5",
3
+ "version": "1.9.0",
4
4
  "description": "AI Agent 기억 보조 MCP 서버 - 사람의 기억 구조를 모사한 스토리지+검색+요약+망각 메커니즘",
5
5
  "main": "dist/server/index.js",
6
6
  "type": "module",
@@ -15,7 +15,12 @@ CREATE TABLE IF NOT EXISTS memory_item (
15
15
  source TEXT,
16
16
  view_count INTEGER DEFAULT 0,
17
17
  cite_count INTEGER DEFAULT 0,
18
- edit_count INTEGER DEFAULT 0
18
+ edit_count INTEGER DEFAULT 0,
19
+ -- MIRIX Schema Expansion (v2.0) 추가 필드
20
+ origin_source TEXT DEFAULT '{}', -- JSON 형식: {"tool": "remember", "caller": "user", "timestamp": "...", "context": {...}}
21
+ task_goal TEXT, -- Procedural Memory 전용, 작업 목표
22
+ steps TEXT, -- Procedural Memory 전용, JSON 배열 형식
23
+ reflection_notes TEXT -- Procedural Memory 전용, JSON 형식
19
24
  );
20
25
 
21
26
  -- 태그 테이블
@@ -229,6 +234,69 @@ CREATE TRIGGER IF NOT EXISTS memory_embedding_vec_delete AFTER DELETE ON memory_
229
234
  DELETE FROM memory_item_vec_gemini WHERE rowid = OLD.id;
230
235
  END;
231
236
 
237
+ -- Core Memory 테이블 (MIRIX Schema Expansion v2.0)
238
+ -- Core Memory는 에이전트의 핵심 정체성, 지침, 인격 데이터를 저장합니다.
239
+ CREATE TABLE IF NOT EXISTS core_memory (
240
+ core_id TEXT PRIMARY KEY,
241
+ agent_id TEXT NOT NULL DEFAULT 'default',
242
+ key TEXT NOT NULL,
243
+ value TEXT NOT NULL,
244
+ always_load BOOLEAN NOT NULL DEFAULT 0,
245
+ origin_source TEXT DEFAULT '{}', -- JSON 형식
246
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
247
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
248
+ UNIQUE(agent_id, key)
249
+ );
250
+
251
+ -- Core Memory 인덱스
252
+ CREATE INDEX IF NOT EXISTS idx_core_memory_agent_id ON core_memory(agent_id);
253
+ CREATE INDEX IF NOT EXISTS idx_core_memory_key ON core_memory(key);
254
+ CREATE INDEX IF NOT EXISTS idx_core_memory_created_at ON core_memory(created_at);
255
+ CREATE INDEX IF NOT EXISTS idx_core_memory_always_load ON core_memory(always_load);
256
+
257
+ -- Core Memory updated_at 자동 업데이트 트리거
258
+ CREATE TRIGGER IF NOT EXISTS core_memory_update_timestamp
259
+ AFTER UPDATE ON core_memory
260
+ BEGIN
261
+ UPDATE core_memory
262
+ SET updated_at = CURRENT_TIMESTAMP
263
+ WHERE core_id = NEW.core_id;
264
+ END;
265
+
266
+ -- Knowledge Vault 테이블 (MIRIX Schema Expansion v2.0)
267
+ -- Knowledge Vault는 변경 불가능한 영구 지식 저장소입니다.
268
+ CREATE TABLE IF NOT EXISTS knowledge_vault (
269
+ vault_id TEXT PRIMARY KEY,
270
+ agent_id TEXT NOT NULL DEFAULT 'default',
271
+ key TEXT NOT NULL,
272
+ value TEXT NOT NULL,
273
+ immutable BOOLEAN NOT NULL DEFAULT 1,
274
+ version INTEGER NOT NULL DEFAULT 1,
275
+ previous_version_id TEXT, -- 이전 버전의 vault_id 참조
276
+ admin_override BOOLEAN NOT NULL DEFAULT 0, -- 향후 관리자 Override 기능용
277
+ deleted_at TIMESTAMP, -- 향후 Soft Delete 기능용
278
+ origin_source TEXT DEFAULT '{}', -- JSON 형식
279
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
280
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
281
+ UNIQUE(agent_id, key, version)
282
+ );
283
+
284
+ -- Knowledge Vault 인덱스
285
+ CREATE INDEX IF NOT EXISTS idx_knowledge_vault_agent_id ON knowledge_vault(agent_id);
286
+ CREATE INDEX IF NOT EXISTS idx_knowledge_vault_key ON knowledge_vault(key);
287
+ CREATE INDEX IF NOT EXISTS idx_knowledge_vault_version ON knowledge_vault(version);
288
+ CREATE INDEX IF NOT EXISTS idx_knowledge_vault_deleted_at ON knowledge_vault(deleted_at);
289
+ CREATE INDEX IF NOT EXISTS idx_knowledge_vault_agent_key ON knowledge_vault(agent_id, key);
290
+
291
+ -- Knowledge Vault updated_at 자동 업데이트 트리거
292
+ CREATE TRIGGER IF NOT EXISTS knowledge_vault_update_timestamp
293
+ AFTER UPDATE ON knowledge_vault
294
+ BEGIN
295
+ UPDATE knowledge_vault
296
+ SET updated_at = CURRENT_TIMESTAMP
297
+ WHERE vault_id = NEW.vault_id;
298
+ END;
299
+
232
300
  -- 초기 데이터 삽입 (선택사항)
233
301
  -- INSERT OR IGNORE INTO memory_item (id, type, content, importance, privacy_scope, pinned)
234
302
  -- VALUES ('welcome', 'semantic', 'Memento MCP Server에 오신 것을 환영합니다!', 1.0, 'private', TRUE);