memento-mcp-server 1.13.1 → 1.14.0-C

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 (118) hide show
  1. package/dist/database/schema.sql +9 -2
  2. package/dist/domains/memory/tools/recall-tool.d.ts +190 -0
  3. package/dist/domains/memory/tools/recall-tool.d.ts.map +1 -1
  4. package/dist/domains/memory/tools/recall-tool.js +488 -14
  5. package/dist/domains/memory/tools/recall-tool.js.map +1 -1
  6. package/dist/domains/memory/tools/remember-tool.d.ts +10 -0
  7. package/dist/domains/memory/tools/remember-tool.d.ts.map +1 -1
  8. package/dist/domains/memory/tools/remember-tool.js +264 -35
  9. package/dist/domains/memory/tools/remember-tool.js.map +1 -1
  10. package/dist/domains/relation/services/relation-quality-validator.d.ts.map +1 -1
  11. package/dist/domains/relation/services/relation-quality-validator.js +15 -10
  12. package/dist/domains/relation/services/relation-quality-validator.js.map +1 -1
  13. package/dist/domains/relation/services/rule-based-relation-extractor.d.ts.map +1 -1
  14. package/dist/domains/relation/services/rule-based-relation-extractor.js +18 -0
  15. package/dist/domains/relation/services/rule-based-relation-extractor.js.map +1 -1
  16. package/dist/domains/relation/tools/add-relation-tool.d.ts +3 -3
  17. package/dist/domains/relation/tools/add-relation-tool.js +2 -2
  18. package/dist/domains/relation/tools/add-relation-tool.js.map +1 -1
  19. package/dist/domains/relation/tools/get-relations-tool.d.ts +3 -3
  20. package/dist/domains/relation/tools/get-relations-tool.js +2 -2
  21. package/dist/domains/relation/tools/get-relations-tool.js.map +1 -1
  22. package/dist/domains/search/algorithms/hybrid-search-engine.d.ts +20 -0
  23. package/dist/domains/search/algorithms/hybrid-search-engine.d.ts.map +1 -1
  24. package/dist/domains/search/algorithms/hybrid-search-engine.js +168 -5
  25. package/dist/domains/search/algorithms/hybrid-search-engine.js.map +1 -1
  26. package/dist/domains/search/algorithms/search-engine.d.ts.map +1 -1
  27. package/dist/domains/search/algorithms/search-engine.js +37 -17
  28. package/dist/domains/search/algorithms/search-engine.js.map +1 -1
  29. package/dist/domains/search/algorithms/search-ranking.d.ts +15 -2
  30. package/dist/domains/search/algorithms/search-ranking.d.ts.map +1 -1
  31. package/dist/domains/search/algorithms/search-ranking.js +46 -15
  32. package/dist/domains/search/algorithms/search-ranking.js.map +1 -1
  33. package/dist/domains/search/repositories/vector-search.repository.d.ts.map +1 -1
  34. package/dist/domains/search/repositories/vector-search.repository.js +180 -89
  35. package/dist/domains/search/repositories/vector-search.repository.js.map +1 -1
  36. package/dist/infrastructure/database/database/migration/migrations/007-procedural-memory-enhancement.d.ts +63 -0
  37. package/dist/infrastructure/database/database/migration/migrations/007-procedural-memory-enhancement.d.ts.map +1 -0
  38. package/dist/infrastructure/database/database/migration/migrations/007-procedural-memory-enhancement.js +257 -0
  39. package/dist/infrastructure/database/database/migration/migrations/007-procedural-memory-enhancement.js.map +1 -0
  40. package/dist/infrastructure/database/database/migration/migrations/007-procedural-memory-enhancement.sql +66 -0
  41. package/dist/infrastructure/reflexion-worker.d.ts +18 -0
  42. package/dist/infrastructure/reflexion-worker.d.ts.map +1 -1
  43. package/dist/infrastructure/reflexion-worker.js +216 -0
  44. package/dist/infrastructure/reflexion-worker.js.map +1 -1
  45. package/dist/infrastructure/scheduler/batch-scheduler.d.ts +51 -8
  46. package/dist/infrastructure/scheduler/batch-scheduler.d.ts.map +1 -1
  47. package/dist/infrastructure/scheduler/batch-scheduler.js +299 -205
  48. package/dist/infrastructure/scheduler/batch-scheduler.js.map +1 -1
  49. package/dist/infrastructure/scheduler/file-logger.d.ts +82 -0
  50. package/dist/infrastructure/scheduler/file-logger.d.ts.map +1 -0
  51. package/dist/infrastructure/scheduler/file-logger.js +133 -0
  52. package/dist/infrastructure/scheduler/file-logger.js.map +1 -0
  53. package/dist/infrastructure/scheduler/health-checker.d.ts +54 -0
  54. package/dist/infrastructure/scheduler/health-checker.d.ts.map +1 -0
  55. package/dist/infrastructure/scheduler/health-checker.js +96 -0
  56. package/dist/infrastructure/scheduler/health-checker.js.map +1 -0
  57. package/dist/infrastructure/scheduler/job-queue.d.ts +85 -0
  58. package/dist/infrastructure/scheduler/job-queue.d.ts.map +1 -0
  59. package/dist/infrastructure/scheduler/job-queue.js +125 -0
  60. package/dist/infrastructure/scheduler/job-queue.js.map +1 -0
  61. package/dist/infrastructure/scheduler/relation-validator-executor.d.ts +37 -0
  62. package/dist/infrastructure/scheduler/relation-validator-executor.d.ts.map +1 -0
  63. package/dist/infrastructure/scheduler/relation-validator-executor.js +120 -0
  64. package/dist/infrastructure/scheduler/relation-validator-executor.js.map +1 -0
  65. package/dist/infrastructure/scheduler/retry-manager.d.ts +62 -0
  66. package/dist/infrastructure/scheduler/retry-manager.d.ts.map +1 -0
  67. package/dist/infrastructure/scheduler/retry-manager.js +91 -0
  68. package/dist/infrastructure/scheduler/retry-manager.js.map +1 -0
  69. package/dist/npm-client/utils.d.ts.map +1 -1
  70. package/dist/npm-client/utils.js +2 -1
  71. package/dist/npm-client/utils.js.map +1 -1
  72. package/dist/scripts/copy-assets.js +4 -4
  73. package/dist/scripts/copy-assets.js.map +1 -1
  74. package/dist/server/http-server.d.ts.map +1 -1
  75. package/dist/server/http-server.js +15 -17
  76. package/dist/server/http-server.js.map +1 -1
  77. package/dist/services/anchor-manager.d.ts.map +1 -1
  78. package/dist/services/anchor-manager.js.map +1 -1
  79. package/dist/shared/types/index.d.ts +36 -0
  80. package/dist/shared/types/index.d.ts.map +1 -1
  81. package/dist/shared/types/index.js.map +1 -1
  82. package/dist/shared/types/relation.d.ts +1 -1
  83. package/dist/shared/types/relation.d.ts.map +1 -1
  84. package/dist/shared/types/relation.js +7 -4
  85. package/dist/shared/types/relation.js.map +1 -1
  86. package/dist/shared/utils/database.d.ts.map +1 -1
  87. package/dist/shared/utils/database.js +9 -2
  88. package/dist/shared/utils/database.js.map +1 -1
  89. package/dist/shared/utils/procedural-memory-extractor.d.ts +108 -0
  90. package/dist/shared/utils/procedural-memory-extractor.d.ts.map +1 -0
  91. package/dist/shared/utils/procedural-memory-extractor.js +581 -0
  92. package/dist/shared/utils/procedural-memory-extractor.js.map +1 -0
  93. package/dist/shared/utils/relation-type-converter.d.ts +52 -0
  94. package/dist/shared/utils/relation-type-converter.d.ts.map +1 -0
  95. package/dist/shared/utils/relation-type-converter.js +106 -0
  96. package/dist/shared/utils/relation-type-converter.js.map +1 -0
  97. package/dist/shared/utils/type-param-validator.d.ts +31 -0
  98. package/dist/shared/utils/type-param-validator.d.ts.map +1 -1
  99. package/dist/shared/utils/type-param-validator.js +90 -2
  100. package/dist/shared/utils/type-param-validator.js.map +1 -1
  101. package/dist/tools/base-tool.d.ts.map +1 -1
  102. package/dist/tools/types.d.ts +4 -0
  103. package/dist/tools/types.d.ts.map +1 -1
  104. package/dist/tools/types.js +5 -0
  105. package/dist/tools/types.js.map +1 -1
  106. package/dist/workers/consolidation-score-worker.d.ts.map +1 -1
  107. package/dist/workers/consolidation-score-worker.js +0 -2
  108. package/dist/workers/consolidation-score-worker.js.map +1 -1
  109. package/package.json +3 -3
  110. package/scripts/auto-setup.js +1 -1
  111. /package/dist/{database → infrastructure/database/database}/migration/migrations/002-mirix-schema-expansion-core-memory.sql +0 -0
  112. /package/dist/{database → infrastructure/database/database}/migration/migrations/002-mirix-schema-expansion-knowledge-vault.sql +0 -0
  113. /package/dist/{database → infrastructure/database/database}/migration/migrations/002-mirix-schema-expansion-memory-item.sql +0 -0
  114. /package/dist/{database → infrastructure/database/database}/migration/migrations/002-mirix-schema-expansion-schema-version.sql +0 -0
  115. /package/dist/{database → infrastructure/database/database}/migration/migrations/003-consolidation-score-fields.sql +0 -0
  116. /package/dist/{database → infrastructure/database/database}/migration/migrations/005-relation-engine-schema.sql +0 -0
  117. /package/dist/{database → infrastructure/database/database}/migration/migrations/006-fts5-reflection-notes-migration-status.sql +0 -0
  118. /package/dist/{database → infrastructure/database/database}/migration/migrations/006-fts5-reflection-notes.sql +0 -0
@@ -10,6 +10,9 @@ export interface SearchFeatures {
10
10
  duplication_penalty: number;
11
11
  consolidation_score?: number;
12
12
  relation_weight?: number;
13
+ workflow_name_match?: boolean;
14
+ skill_name_match?: boolean;
15
+ trigger_conditions_match?: boolean;
13
16
  }
14
17
  export interface EmbeddingSimilarity {
15
18
  queryEmbedding: number[];
@@ -56,12 +59,22 @@ export interface ConsolidationScoreWeights {
56
59
  export declare class SearchRanking {
57
60
  private readonly weights;
58
61
  constructor(weights?: Partial<SearchRankingWeights>);
62
+ /**
63
+ * Procedural Memory 특화 가중치를 계산합니다.
64
+ * workflow_name 매칭 시 +0.1, skill_name 매칭 시 +0.1, trigger_conditions 매칭 시 +0.15의 부스트를 제공합니다.
65
+ *
66
+ * @param features 검색 특징 객체
67
+ * @returns Procedural Memory 부스트 점수 (0.0 ~ 0.35)
68
+ */
69
+ calculateProceduralMemoryBoost(features: SearchFeatures): number;
59
70
  /**
60
71
  * 단일 지표만으로는 검색 결과의 품질을 정확히 평가할 수 없으므로, 여러 지표를 가중 평균하여 종합적인 평가를 수행합니다.
61
72
  * 관련성, 최근성, 중요도, 사용성, 관계 가중치를 결합하고 중복 패널티를 적용하여 사용자에게 가장 유용한 결과를 우선 제공합니다.
62
73
  *
63
- * Consolidation Score가 제공되면 벡터 유사도와 통합 점수를 결합하여 더 정교한 평가를 수행합니다.
64
- * 기존 공식과 별도로 계산하여 통합함으로써 점진적 기능 확장을 가능하게 합니다.
74
+ * Consolidation Score가 제공되면 벡터 유사도(relevance)를 보완하는 추가 신호로 활용합니다.
75
+ * 다른 신호들(recency, importance, usage, duplication_penalty)은 그대로 유지하여 다차원 랭킹을 보장합니다.
76
+ *
77
+ * Procedural Memory 특화 가중치가 제공되면 최종 점수에 부스트를 추가합니다.
65
78
  */
66
79
  calculateFinalScore(features: SearchFeatures): number;
67
80
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"search-ranking.d.ts","sourceRoot":"","sources":["../../../../src/domains/search/algorithms/search-ranking.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search-ranking.d.ts","sourceRoot":"","sources":["../../../../src/domains/search/algorithms/search-ranking.ts"],"names":[],"mappings":"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"}
@@ -15,32 +15,63 @@ export class SearchRanking {
15
15
  ...weights
16
16
  };
17
17
  }
18
+ /**
19
+ * Procedural Memory 특화 가중치를 계산합니다.
20
+ * workflow_name 매칭 시 +0.1, skill_name 매칭 시 +0.1, trigger_conditions 매칭 시 +0.15의 부스트를 제공합니다.
21
+ *
22
+ * @param features 검색 특징 객체
23
+ * @returns Procedural Memory 부스트 점수 (0.0 ~ 0.35)
24
+ */
25
+ calculateProceduralMemoryBoost(features) {
26
+ let boost = 0;
27
+ if (features.workflow_name_match) {
28
+ boost += 0.1;
29
+ }
30
+ if (features.skill_name_match) {
31
+ boost += 0.1;
32
+ }
33
+ if (features.trigger_conditions_match) {
34
+ boost += 0.15;
35
+ }
36
+ return boost;
37
+ }
18
38
  /**
19
39
  * 단일 지표만으로는 검색 결과의 품질을 정확히 평가할 수 없으므로, 여러 지표를 가중 평균하여 종합적인 평가를 수행합니다.
20
40
  * 관련성, 최근성, 중요도, 사용성, 관계 가중치를 결합하고 중복 패널티를 적용하여 사용자에게 가장 유용한 결과를 우선 제공합니다.
21
41
  *
22
- * Consolidation Score가 제공되면 벡터 유사도와 통합 점수를 결합하여 더 정교한 평가를 수행합니다.
23
- * 기존 공식과 별도로 계산하여 통합함으로써 점진적 기능 확장을 가능하게 합니다.
42
+ * Consolidation Score가 제공되면 벡터 유사도(relevance)를 보완하는 추가 신호로 활용합니다.
43
+ * 다른 신호들(recency, importance, usage, duplication_penalty)은 그대로 유지하여 다차원 랭킹을 보장합니다.
44
+ *
45
+ * Procedural Memory 특화 가중치가 제공되면 최종 점수에 부스트를 추가합니다.
24
46
  */
25
47
  calculateFinalScore(features) {
26
- const baseScore = this.weights.relevance * features.relevance +
27
- this.weights.recency * features.recency +
28
- this.weights.importance * features.importance +
29
- this.weights.usage * features.usage +
30
- (this.weights.relation_weight * (features.relation_weight || 0)) -
31
- this.weights.duplication_penalty * features.duplication_penalty;
32
- // 통합 점수 기능이 활성화된 경우 추가적인 관련성 지표를 활용하여 검색 품질을 향상시킵니다.
48
+ // 기본 점수 계산: 모든 신호를 포함한 다차원 랭킹
49
+ let relevanceScore;
50
+ // Consolidation Score가 있으면 relevance를 보완하는 신호로 활용
33
51
  if (features.consolidation_score !== undefined && this.weights.consolidation_score !== undefined) {
34
52
  // 통합 점수의 영향력을 제한하여 벡터 유사도의 중요성을 보장합니다.
35
- const w2 = Math.min(this.weights.consolidation_score, 0.4);
36
- const w1 = 1 - w2; // 가중치의 합이 1이 되도록 보장하여 점수 범위의 일관성을 유지합니다.
37
- // 벡터 유사도를 텍스트 관련성과 동일한 의미로 해석하여 일관된 점수 계산을 수행합니다.
53
+ const consolidationWeight = Math.min(this.weights.consolidation_score, 0.4);
54
+ const relevanceWeight = 1 - consolidationWeight;
55
+ // 벡터 유사도와 통합 점수를 결합하여 보완된 관련성 점수를 계산합니다.
38
56
  const vectorSimilarity = features.relevance;
39
57
  const consolidationScore = features.consolidation_score;
40
- // 가중 평균을 통해 벡터 유사도와 통합 점수를 균형있게 결합하여 최종 점수를 계산합니다.
41
- return w1 * vectorSimilarity + w2 * consolidationScore;
58
+ // relevance를 consolidation_score로 보완 (다른 신호들은 유지)
59
+ relevanceScore = relevanceWeight * vectorSimilarity + consolidationWeight * consolidationScore;
42
60
  }
43
- return baseScore;
61
+ else {
62
+ // Consolidation Score가 없으면 기존 relevance 사용
63
+ relevanceScore = features.relevance;
64
+ }
65
+ // 다차원 랭킹: 모든 신호를 포함한 최종 점수 계산
66
+ const finalScore = this.weights.relevance * relevanceScore +
67
+ this.weights.recency * features.recency +
68
+ this.weights.importance * features.importance +
69
+ this.weights.usage * features.usage +
70
+ (this.weights.relation_weight * (features.relation_weight || 0)) -
71
+ this.weights.duplication_penalty * features.duplication_penalty;
72
+ // Procedural Memory 특화 가중치 부스트 적용
73
+ const proceduralBoost = this.calculateProceduralMemoryBoost(features);
74
+ return finalScore + proceduralBoost;
44
75
  }
45
76
  /**
46
77
  * 사용자의 검색 목적에 맞는 가중치를 제공하여 최적의 검색 결과를 제공합니다.
@@ -1 +1 @@
1
- {"version":3,"file":"search-ranking.js","sourceRoot":"","sources":["../../../../src/domains/search/algorithms/search-ranking.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search-ranking.js","sourceRoot":"","sources":["../../../../src/domains/search/algorithms/search-ranking.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"vector-search.repository.d.ts","sourceRoot":"","sources":["../../../../src/domains/search/repositories/vector-search.repository.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,8CAA8C,CAAC;AACtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kDAAkD,CAAC;AAG/F,qBAAa,0BAA2B,YAAW,sBAAsB;IACvE,OAAO,CAAC,EAAE,CAAkC;IAC5C,OAAO,CAAC,cAAc,CAAS;gBAEnB,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAKjC;;OAEG;IACH,oBAAoB,IAAI,OAAO;IAiE/B;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAoFrE;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAqI3E;;OAEG;IACH,cAAc,IAAI,iBAAiB;IAsDnC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAiBtC;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAMtC;;OAEG;IACH,iBAAiB,IAAI,OAAO;IAI5B,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,aAAa;CAYtB"}
1
+ {"version":3,"file":"vector-search.repository.d.ts","sourceRoot":"","sources":["../../../../src/domains/search/repositories/vector-search.repository.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,8CAA8C,CAAC;AACtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kDAAkD,CAAC;AAI/F,qBAAa,0BAA2B,YAAW,sBAAsB;IACvE,OAAO,CAAC,EAAE,CAAkC;IAC5C,OAAO,CAAC,cAAc,CAAS;gBAEnB,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAKjC;;OAEG;IACH,oBAAoB,IAAI,OAAO;IAiE/B;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAkGrE;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAmN3E;;OAEG;IACH,cAAc,IAAI,iBAAiB;IAsDnC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAiBtC;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAMtC;;OAEG;IACH,iBAAiB,IAAI,OAAO;IAI5B,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,aAAa;CAYtB"}
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import Database from 'better-sqlite3';
6
6
  import { VECTOR_SEARCH_CONFIG } from '../../../shared/config/vector-search.config.js';
7
+ import { mcpLogger } from '../../../server/mcp-logger.js';
7
8
  export class VectorSearchRepositoryImpl {
8
9
  db = null;
9
10
  isVecAvailable = false;
@@ -37,7 +38,7 @@ export class VectorSearchRepositoryImpl {
37
38
  ? tableRows
38
39
  : [];
39
40
  if (tableCheck.length === 0) {
40
- console.log('⚠️ VEC 테이블이 없습니다. 벡터 검색이 비활성화됩니다.');
41
+ mcpLogger.logServer('warn', 'VEC 테이블이 없습니다. 벡터 검색이 비활성화됩니다.');
41
42
  this.isVecAvailable = false;
42
43
  return false;
43
44
  }
@@ -51,23 +52,23 @@ export class VectorSearchRepositoryImpl {
51
52
  LIMIT 0
52
53
  `);
53
54
  if (typeof testStatement.get !== 'function') {
54
- console.warn('⚠️ VEC 테스트 쿼리를 실행할 수 없습니다: get() 메서드가 없습니다.');
55
+ mcpLogger.logServer('warn', 'VEC 테스트 쿼리를 실행할 수 없습니다: get() 메서드가 없습니다.');
55
56
  this.isVecAvailable = false;
56
57
  return false;
57
58
  }
58
59
  testStatement.get(JSON.stringify(new Array(VECTOR_SEARCH_CONFIG.defaultDimensions).fill(0)));
59
60
  this.isVecAvailable = true;
60
- console.log(' VEC (Vector Search) 사용 가능');
61
+ mcpLogger.logServer('info', 'VEC (Vector Search) 사용 가능');
61
62
  return true;
62
63
  }
63
64
  catch (vecError) {
64
- console.warn('⚠️ VEC 함수를 사용할 수 없습니다:', vecError);
65
+ mcpLogger.logServer('warn', 'VEC 함수를 사용할 수 없습니다', { error: vecError instanceof Error ? vecError.message : String(vecError) });
65
66
  this.isVecAvailable = false;
66
67
  return false;
67
68
  }
68
69
  }
69
70
  catch (error) {
70
- console.error(' VEC 가용성 확인 실패:', error);
71
+ mcpLogger.logServer('error', 'VEC 가용성 확인 실패', { error: error instanceof Error ? error.message : String(error) });
71
72
  this.isVecAvailable = false;
72
73
  return false;
73
74
  }
@@ -77,7 +78,7 @@ export class VectorSearchRepositoryImpl {
77
78
  */
78
79
  async search(query) {
79
80
  if (!this.db || !this.isVecAvailable) {
80
- console.warn('⚠️ VEC를 사용할 수 없습니다. 빈 결과를 반환합니다.');
81
+ mcpLogger.logServer('warn', 'VEC를 사용할 수 없습니다. 빈 결과를 반환합니다.');
81
82
  return [];
82
83
  }
83
84
  const { queryVector, options, provider } = query;
@@ -86,7 +87,7 @@ export class VectorSearchRepositoryImpl {
86
87
  const expectedDimensions = this.getExpectedDimensions(provider);
87
88
  // 벡터 차원 검증
88
89
  if (queryVector.length !== expectedDimensions) {
89
- console.error(`❌ 벡터 차원 불일치: 예상 ${expectedDimensions}, 실제 ${queryVector.length}`);
90
+ mcpLogger.logServer('error', '벡터 차원 불일치', { expected: expectedDimensions, actual: queryVector.length });
90
91
  return [];
91
92
  }
92
93
  try {
@@ -99,9 +100,15 @@ export class VectorSearchRepositoryImpl {
99
100
  mi.type,
100
101
  mi.importance,
101
102
  mi.created_at,
102
- mi.last_accessed,
103
+ COALESCE(mi.last_accessed_at, mi.last_accessed) as last_accessed_at,
103
104
  mi.pinned,
104
- mi.tags
105
+ mi.tags,
106
+ mi.task_goal,
107
+ mi.steps,
108
+ mi.reflection_notes,
109
+ mi.workflow_name,
110
+ mi.skill_name,
111
+ mi.trigger_conditions
105
112
  FROM ${tableName} vec
106
113
  JOIN memory_embedding me ON vec.rowid = me.id
107
114
  JOIN memory_item mi ON mi.id = me.memory_id
@@ -113,7 +120,7 @@ export class VectorSearchRepositoryImpl {
113
120
  const params = [JSON.stringify(queryVector), ...(type ? [type] : []), limit];
114
121
  const statement = this.db.prepare(vecQuery);
115
122
  if (typeof statement.all !== 'function') {
116
- console.warn('⚠️ 벡터 검색 쿼리를 실행할 수 없습니다: all() 메서드가 없습니다.');
123
+ mcpLogger.logServer('warn', '벡터 검색 쿼리를 실행할 수 없습니다: all() 메서드가 없습니다.');
117
124
  return [];
118
125
  }
119
126
  const rawResults = statement.all(...params);
@@ -133,15 +140,23 @@ export class VectorSearchRepositoryImpl {
133
140
  type: result.type,
134
141
  importance: result.importance,
135
142
  created_at: result.created_at,
136
- last_accessed: includeMetadata ? result.last_accessed : undefined,
143
+ last_accessed_at: includeMetadata ? (result.last_accessed_at || result.last_accessed) : undefined,
137
144
  pinned: includeMetadata ? Boolean(result.pinned) : false,
138
- tags: includeMetadata ? result.tags : undefined
145
+ tags: includeMetadata ? result.tags : undefined,
146
+ // Procedural Memory 필드
147
+ task_goal: includeMetadata ? result.task_goal : undefined,
148
+ steps: includeMetadata ? result.steps : undefined,
149
+ reflection_notes: includeMetadata ? result.reflection_notes : undefined,
150
+ // Procedural Memory Enhancement (v7.0) 필드
151
+ workflow_name: includeMetadata ? result.workflow_name : undefined,
152
+ skill_name: includeMetadata ? result.skill_name : undefined,
153
+ trigger_conditions: includeMetadata ? result.trigger_conditions : undefined
139
154
  }));
140
- console.log(`🔍 벡터 검색 완료: ${normalizedResults.length}개 결과 (임계값: ${threshold})`);
155
+ mcpLogger.logServer('debug', '벡터 검색 완료', { resultCount: normalizedResults.length, threshold });
141
156
  return normalizedResults;
142
157
  }
143
158
  catch (error) {
144
- console.error(' 벡터 검색 실패:', error);
159
+ mcpLogger.logServer('error', '벡터 검색 실패', { error: error instanceof Error ? error.message : String(error) });
145
160
  return [];
146
161
  }
147
162
  }
@@ -150,7 +165,7 @@ export class VectorSearchRepositoryImpl {
150
165
  */
151
166
  async hybridSearch(query) {
152
167
  if (!this.db || !this.isVecAvailable) {
153
- console.warn('⚠️ VEC를 사용할 수 없습니다. 빈 결과를 반환합니다.');
168
+ mcpLogger.logServer('warn', 'VEC를 사용할 수 없습니다. 빈 결과를 반환합니다.');
154
169
  return [];
155
170
  }
156
171
  const { queryVector, textQuery, options, provider } = query;
@@ -159,87 +174,153 @@ export class VectorSearchRepositoryImpl {
159
174
  const expectedDimensions = this.getExpectedDimensions(provider);
160
175
  // 벡터 차원 검증
161
176
  if (queryVector.length !== expectedDimensions) {
162
- console.error(`❌ 벡터 차원 불일치: 예상 ${expectedDimensions}, 실제 ${queryVector.length}`);
177
+ mcpLogger.logServer('error', '벡터 차원 불일치', { expected: expectedDimensions, actual: queryVector.length });
163
178
  return [];
164
179
  }
165
180
  try {
166
181
  const tableName = this.getTableName(provider ?? 'tfidf');
167
- const hybridQuery = `
168
- WITH vector_search AS (
182
+ // textQuery가 없거나 빈 문자열이면 텍스트 검색을 건너뛰고 벡터 검색만 사용
183
+ // FTS5는 쿼리를 에러로 처리하므로 이를 방지
184
+ const hasTextQuery = textQuery && textQuery.trim().length > 0;
185
+ let hybridQuery;
186
+ let params;
187
+ if (hasTextQuery) {
188
+ // 텍스트 검색과 벡터 검색 모두 사용
189
+ hybridQuery = `
190
+ WITH vector_search AS (
191
+ SELECT
192
+ me.memory_id as memory_id,
193
+ vec.distance as vector_distance,
194
+ mi.content,
195
+ mi.type,
196
+ mi.importance,
197
+ mi.created_at,
198
+ COALESCE(mi.last_accessed_at, mi.last_accessed) as last_accessed_at,
199
+ mi.pinned,
200
+ mi.tags,
201
+ mi.task_goal,
202
+ mi.steps,
203
+ mi.reflection_notes,
204
+ mi.workflow_name,
205
+ mi.skill_name,
206
+ mi.trigger_conditions
207
+ FROM ${tableName} vec
208
+ JOIN memory_embedding me ON vec.rowid = me.id
209
+ JOIN memory_item mi ON mi.id = me.memory_id
210
+ WHERE vec.embedding MATCH ?
211
+ ${type ? 'AND mi.type = ?' : ''}
212
+ ),
213
+ text_search AS (
214
+ SELECT
215
+ mi.id as memory_id,
216
+ mi.content,
217
+ mi.type,
218
+ mi.importance,
219
+ mi.created_at,
220
+ COALESCE(mi.last_accessed_at, mi.last_accessed) as last_accessed_at,
221
+ mi.pinned,
222
+ mi.tags,
223
+ mi.task_goal,
224
+ mi.steps,
225
+ mi.reflection_notes,
226
+ mi.workflow_name,
227
+ mi.skill_name,
228
+ mi.trigger_conditions,
229
+ fts.rank as text_rank
230
+ FROM memory_item_fts fts
231
+ JOIN memory_item mi ON fts.rowid = mi.rowid
232
+ WHERE memory_item_fts MATCH ?
233
+ ${type ? 'AND mi.type = ?' : ''}
234
+ )
235
+ SELECT
236
+ COALESCE(vs.memory_id, ts.memory_id) as memory_id,
237
+ COALESCE(1 - vs.vector_distance, 0) as vector_similarity,
238
+ COALESCE(ts.text_rank, 0) as text_similarity,
239
+ COALESCE(vs.content, ts.content) as content,
240
+ COALESCE(vs.type, ts.type) as type,
241
+ COALESCE(vs.importance, ts.importance) as importance,
242
+ COALESCE(vs.created_at, ts.created_at) as created_at,
243
+ COALESCE(vs.last_accessed_at, ts.last_accessed_at, vs.last_accessed, ts.last_accessed) as last_accessed_at,
244
+ COALESCE(vs.pinned, ts.pinned) as pinned,
245
+ COALESCE(vs.tags, ts.tags) as tags,
246
+ COALESCE(vs.task_goal, ts.task_goal) as task_goal,
247
+ COALESCE(vs.steps, ts.steps) as steps,
248
+ COALESCE(vs.reflection_notes, ts.reflection_notes) as reflection_notes,
249
+ COALESCE(vs.workflow_name, ts.workflow_name) as workflow_name,
250
+ COALESCE(vs.skill_name, ts.skill_name) as skill_name,
251
+ COALESCE(vs.trigger_conditions, ts.trigger_conditions) as trigger_conditions
252
+ FROM vector_search vs
253
+ LEFT JOIN text_search ts ON vs.memory_id = ts.memory_id
254
+ WHERE vs.memory_id IS NOT NULL
255
+ UNION
256
+ SELECT
257
+ ts.memory_id,
258
+ 0 as vector_similarity,
259
+ ts.text_rank as text_similarity,
260
+ ts.content,
261
+ ts.type,
262
+ ts.importance,
263
+ ts.created_at,
264
+ COALESCE(ts.last_accessed_at, ts.last_accessed) as last_accessed_at,
265
+ ts.pinned,
266
+ ts.tags,
267
+ ts.task_goal,
268
+ ts.steps,
269
+ ts.reflection_notes,
270
+ ts.workflow_name,
271
+ ts.skill_name,
272
+ ts.trigger_conditions
273
+ FROM text_search ts
274
+ LEFT JOIN vector_search vs ON ts.memory_id = vs.memory_id
275
+ WHERE vs.memory_id IS NULL
276
+ ORDER BY (vector_similarity * 0.6 + text_similarity * 0.4) DESC
277
+ LIMIT ?
278
+ `;
279
+ params = [
280
+ JSON.stringify(queryVector),
281
+ ...(type ? [type] : []),
282
+ textQuery.trim(),
283
+ ...(type ? [type] : []),
284
+ limit
285
+ ];
286
+ }
287
+ else {
288
+ // 텍스트 검색 없이 벡터 검색만 사용
289
+ hybridQuery = `
169
290
  SELECT
170
291
  me.memory_id as memory_id,
171
- vec.distance as vector_distance,
292
+ COALESCE(1 - vec.distance, 0) as vector_similarity,
293
+ 0 as text_similarity,
172
294
  mi.content,
173
295
  mi.type,
174
296
  mi.importance,
175
297
  mi.created_at,
176
- mi.last_accessed,
298
+ COALESCE(mi.last_accessed_at, mi.last_accessed) as last_accessed_at,
177
299
  mi.pinned,
178
- mi.tags
300
+ mi.tags,
301
+ mi.task_goal,
302
+ mi.steps,
303
+ mi.reflection_notes,
304
+ mi.workflow_name,
305
+ mi.skill_name,
306
+ mi.trigger_conditions
179
307
  FROM ${tableName} vec
180
308
  JOIN memory_embedding me ON vec.rowid = me.id
181
309
  JOIN memory_item mi ON mi.id = me.memory_id
182
310
  WHERE vec.embedding MATCH ?
183
311
  ${type ? 'AND mi.type = ?' : ''}
184
- ),
185
- text_search AS (
186
- SELECT
187
- mi.id as memory_id,
188
- mi.content,
189
- mi.type,
190
- mi.importance,
191
- mi.created_at,
192
- mi.last_accessed,
193
- mi.pinned,
194
- mi.tags,
195
- fts.rank as text_rank
196
- FROM memory_item_fts fts
197
- JOIN memory_item mi ON fts.rowid = mi.rowid
198
- WHERE memory_item_fts MATCH ?
199
- ${type ? 'AND mi.type = ?' : ''}
200
- )
201
- SELECT
202
- COALESCE(vs.memory_id, ts.memory_id) as memory_id,
203
- COALESCE(1 - vs.vector_distance, 0) as vector_similarity,
204
- COALESCE(ts.text_rank, 0) as text_similarity,
205
- COALESCE(vs.content, ts.content) as content,
206
- COALESCE(vs.type, ts.type) as type,
207
- COALESCE(vs.importance, ts.importance) as importance,
208
- COALESCE(vs.created_at, ts.created_at) as created_at,
209
- COALESCE(vs.last_accessed, ts.last_accessed) as last_accessed,
210
- COALESCE(vs.pinned, ts.pinned) as pinned,
211
- COALESCE(vs.tags, ts.tags) as tags
212
- FROM vector_search vs
213
- LEFT JOIN text_search ts ON vs.memory_id = ts.memory_id
214
- WHERE vs.memory_id IS NOT NULL
215
- UNION
216
- SELECT
217
- ts.memory_id,
218
- 0 as vector_similarity,
219
- ts.text_rank as text_similarity,
220
- ts.content,
221
- ts.type,
222
- ts.importance,
223
- ts.created_at,
224
- ts.last_accessed,
225
- ts.pinned,
226
- ts.tags
227
- FROM text_search ts
228
- LEFT JOIN vector_search vs ON ts.memory_id = vs.memory_id
229
- WHERE vs.memory_id IS NULL
230
- ORDER BY (vector_similarity * 0.6 + text_similarity * 0.4) DESC
231
- LIMIT ?
232
- `;
233
- const params = [
234
- JSON.stringify(queryVector),
235
- ...(type ? [type] : []),
236
- textQuery || '',
237
- ...(type ? [type] : []),
238
- limit
239
- ];
312
+ ORDER BY vec.distance ASC
313
+ LIMIT ?
314
+ `;
315
+ params = [
316
+ JSON.stringify(queryVector),
317
+ ...(type ? [type] : []),
318
+ limit
319
+ ];
320
+ }
240
321
  const statement = this.db.prepare(hybridQuery);
241
322
  if (typeof statement.all !== 'function') {
242
- console.warn('⚠️ 하이브리드 검색 쿼리를 실행할 수 없습니다: all() 메서드가 없습니다.');
323
+ mcpLogger.logServer('warn', '하이브리드 검색 쿼리를 실행할 수 없습니다: all() 메서드가 없습니다.');
243
324
  return [];
244
325
  }
245
326
  const rawResults = statement.all(...params);
@@ -248,21 +329,31 @@ export class VectorSearchRepositoryImpl {
248
329
  const normalizedResults = results
249
330
  .map(result => ({
250
331
  memory_id: result.memory_id,
251
- similarity: result.vector_similarity * 0.6 + result.text_similarity * 0.4, // similarity로 통일
332
+ similarity: hasTextQuery
333
+ ? result.vector_similarity * 0.6 + result.text_similarity * 0.4 // 하이브리드 가중치
334
+ : result.vector_similarity, // 텍스트 검색 없을 때는 벡터 유사도만 사용
252
335
  content: includeContent ? result.content : '',
253
336
  type: result.type,
254
337
  importance: result.importance,
255
338
  created_at: result.created_at,
256
- last_accessed: includeMetadata ? result.last_accessed : undefined,
339
+ last_accessed_at: includeMetadata ? (result.last_accessed_at || result.last_accessed) : undefined,
257
340
  pinned: includeMetadata ? Boolean(result.pinned) : false,
258
- tags: includeMetadata ? this.safeParseTags(result.tags) : undefined
341
+ tags: includeMetadata ? this.safeParseTags(result.tags) : undefined,
342
+ // Procedural Memory 필드
343
+ task_goal: includeMetadata ? result.task_goal : undefined,
344
+ steps: includeMetadata ? result.steps : undefined,
345
+ reflection_notes: includeMetadata ? result.reflection_notes : undefined,
346
+ // Procedural Memory Enhancement (v7.0) 필드
347
+ workflow_name: includeMetadata ? result.workflow_name : undefined,
348
+ skill_name: includeMetadata ? result.skill_name : undefined,
349
+ trigger_conditions: includeMetadata ? result.trigger_conditions : undefined
259
350
  }))
260
351
  .filter(result => result.similarity >= threshold);
261
- console.log(`🔍 하이브리드 검색 완료: ${normalizedResults.length}개 결과`);
352
+ mcpLogger.logServer('debug', '하이브리드 검색 완료', { resultCount: normalizedResults.length });
262
353
  return normalizedResults;
263
354
  }
264
355
  catch (error) {
265
- console.error(' 하이브리드 검색 실패:', error);
356
+ mcpLogger.logServer('error', '하이브리드 검색 실패', { error: error instanceof Error ? error.message : String(error) });
266
357
  return [];
267
358
  }
268
359
  }
@@ -311,7 +402,7 @@ export class VectorSearchRepositoryImpl {
311
402
  };
312
403
  }
313
404
  catch (error) {
314
- console.error(' 인덱스 상태 확인 실패:', error);
405
+ mcpLogger.logServer('error', '인덱스 상태 확인 실패', { error: error instanceof Error ? error.message : String(error) });
315
406
  return {
316
407
  available: false,
317
408
  tableExists: false,
@@ -326,17 +417,17 @@ export class VectorSearchRepositoryImpl {
326
417
  */
327
418
  async rebuildIndex() {
328
419
  if (!this.db || !this.isVecAvailable) {
329
- console.warn('⚠️ VEC를 사용할 수 없습니다.');
420
+ mcpLogger.logServer('warn', 'VEC를 사용할 수 없습니다.');
330
421
  return false;
331
422
  }
332
423
  try {
333
- console.log('🔄 벡터 인덱스 재구성 시작...');
424
+ mcpLogger.logServer('info', '벡터 인덱스 재구성 시작');
334
425
  // VEC 인덱스 재구성 (sqlite-vec는 자동으로 인덱스를 관리)
335
- console.log(' 벡터 인덱스 재구성 완료 (sqlite-vec는 자동 인덱스 관리)');
426
+ mcpLogger.logServer('info', '벡터 인덱스 재구성 완료 (sqlite-vec는 자동 인덱스 관리)');
336
427
  return true;
337
428
  }
338
429
  catch (error) {
339
- console.error(' 벡터 인덱스 재구성 실패:', error);
430
+ mcpLogger.logServer('error', '벡터 인덱스 재구성 실패', { error: error instanceof Error ? error.message : String(error) });
340
431
  return false;
341
432
  }
342
433
  }
@@ -369,7 +460,7 @@ export class VectorSearchRepositoryImpl {
369
460
  return Array.isArray(parsed) ? parsed : [];
370
461
  }
371
462
  catch (error) {
372
- console.warn('⚠️ 태그 JSON 파싱 실패, 빈 배열로 대체합니다.', error);
463
+ mcpLogger.logServer('warn', '태그 JSON 파싱 실패, 빈 배열로 대체합니다', { error: error instanceof Error ? error.message : String(error) });
373
464
  return [];
374
465
  }
375
466
  }