memento-mcp-server 1.32.0 → 1.33.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 (212) hide show
  1. package/config/ranking-profiles/default.toml +10 -0
  2. package/config/ranking-weights.toml +5 -0
  3. package/dist/node_modules/@memento/core/dist/bootstrap/search-and-embedding.d.ts.map +1 -1
  4. package/dist/node_modules/@memento/core/dist/bootstrap/search-and-embedding.js +3 -0
  5. package/dist/node_modules/@memento/core/dist/bootstrap/search-and-embedding.js.map +1 -1
  6. package/dist/node_modules/@memento/core/dist/config/ranking-profiles/default.toml +10 -0
  7. package/dist/node_modules/@memento/core/dist/config/ranking-weights.toml +5 -0
  8. package/dist/node_modules/@memento/core/dist/database/schema.sql +5 -4
  9. package/dist/node_modules/@memento/core/dist/domains/consolidation/services/summarization-service.d.ts +6 -0
  10. package/dist/node_modules/@memento/core/dist/domains/consolidation/services/summarization-service.d.ts.map +1 -1
  11. package/dist/node_modules/@memento/core/dist/domains/consolidation/services/summarization-service.js +37 -3
  12. package/dist/node_modules/@memento/core/dist/domains/consolidation/services/summarization-service.js.map +1 -1
  13. package/dist/node_modules/@memento/core/dist/domains/embedding/services/minilm-embedding-service.d.ts +17 -0
  14. package/dist/node_modules/@memento/core/dist/domains/embedding/services/minilm-embedding-service.d.ts.map +1 -1
  15. package/dist/node_modules/@memento/core/dist/domains/embedding/services/minilm-embedding-service.js +34 -12
  16. package/dist/node_modules/@memento/core/dist/domains/embedding/services/minilm-embedding-service.js.map +1 -1
  17. package/dist/node_modules/@memento/core/dist/domains/embedding/services/unified-embedding-service.d.ts +5 -0
  18. package/dist/node_modules/@memento/core/dist/domains/embedding/services/unified-embedding-service.d.ts.map +1 -1
  19. package/dist/node_modules/@memento/core/dist/domains/embedding/services/unified-embedding-service.js +7 -0
  20. package/dist/node_modules/@memento/core/dist/domains/embedding/services/unified-embedding-service.js.map +1 -1
  21. package/dist/node_modules/@memento/core/dist/domains/memory/remember/remember-tool-memory-item.d.ts.map +1 -1
  22. package/dist/node_modules/@memento/core/dist/domains/memory/remember/remember-tool-memory-item.js +70 -13
  23. package/dist/node_modules/@memento/core/dist/domains/memory/remember/remember-tool-memory-item.js.map +1 -1
  24. package/dist/node_modules/@memento/core/dist/domains/memory/remember/remember-tool-schema.d.ts +64 -1
  25. package/dist/node_modules/@memento/core/dist/domains/memory/remember/remember-tool-schema.d.ts.map +1 -1
  26. package/dist/node_modules/@memento/core/dist/domains/memory/remember/remember-tool-schema.js +12 -0
  27. package/dist/node_modules/@memento/core/dist/domains/memory/remember/remember-tool-schema.js.map +1 -1
  28. package/dist/node_modules/@memento/core/dist/domains/memory/remember/remember-tool.d.ts.map +1 -1
  29. package/dist/node_modules/@memento/core/dist/domains/memory/remember/remember-tool.js +5 -0
  30. package/dist/node_modules/@memento/core/dist/domains/memory/remember/remember-tool.js.map +1 -1
  31. package/dist/node_modules/@memento/core/dist/domains/memory/review/memory-review-candidate-list-query.d.ts +23 -0
  32. package/dist/node_modules/@memento/core/dist/domains/memory/review/memory-review-candidate-list-query.d.ts.map +1 -0
  33. package/dist/node_modules/@memento/core/dist/domains/memory/review/memory-review-candidate-list-query.js +118 -0
  34. package/dist/node_modules/@memento/core/dist/domains/memory/review/memory-review-candidate-list-query.js.map +1 -0
  35. package/dist/node_modules/@memento/core/dist/domains/memory/review/memory-review-candidate-persistence-service.d.ts +4 -1
  36. package/dist/node_modules/@memento/core/dist/domains/memory/review/memory-review-candidate-persistence-service.d.ts.map +1 -1
  37. package/dist/node_modules/@memento/core/dist/domains/memory/review/memory-review-candidate-persistence-service.js +39 -0
  38. package/dist/node_modules/@memento/core/dist/domains/memory/review/memory-review-candidate-persistence-service.js.map +1 -1
  39. package/dist/node_modules/@memento/core/dist/domains/memory/review/memory-review-candidate-persistence.types.d.ts +34 -0
  40. package/dist/node_modules/@memento/core/dist/domains/memory/review/memory-review-candidate-persistence.types.d.ts.map +1 -1
  41. package/dist/node_modules/@memento/core/dist/domains/memory/semantic/duplicate-content-plan.d.ts +29 -0
  42. package/dist/node_modules/@memento/core/dist/domains/memory/semantic/duplicate-content-plan.d.ts.map +1 -0
  43. package/dist/node_modules/@memento/core/dist/domains/memory/semantic/duplicate-content-plan.js +104 -0
  44. package/dist/node_modules/@memento/core/dist/domains/memory/semantic/duplicate-content-plan.js.map +1 -0
  45. package/dist/node_modules/@memento/core/dist/domains/memory/semantic/semantic-memory-crud.d.ts.map +1 -1
  46. package/dist/node_modules/@memento/core/dist/domains/memory/semantic/semantic-memory-crud.js +2 -2
  47. package/dist/node_modules/@memento/core/dist/domains/memory/semantic/semantic-memory-crud.js.map +1 -1
  48. package/dist/node_modules/@memento/core/dist/domains/memory/semantic/semantic-memory-scoring.d.ts +7 -2
  49. package/dist/node_modules/@memento/core/dist/domains/memory/semantic/semantic-memory-scoring.d.ts.map +1 -1
  50. package/dist/node_modules/@memento/core/dist/domains/memory/semantic/semantic-memory-scoring.js +7 -10
  51. package/dist/node_modules/@memento/core/dist/domains/memory/semantic/semantic-memory-scoring.js.map +1 -1
  52. package/dist/node_modules/@memento/core/dist/domains/memory/services/knowledge-context-bundle-builder.d.ts.map +1 -1
  53. package/dist/node_modules/@memento/core/dist/domains/memory/services/knowledge-context-bundle-builder.js +52 -2
  54. package/dist/node_modules/@memento/core/dist/domains/memory/services/knowledge-context-bundle-builder.js.map +1 -1
  55. package/dist/node_modules/@memento/core/dist/domains/memory/services/memory-embedding-service.d.ts +1 -0
  56. package/dist/node_modules/@memento/core/dist/domains/memory/services/memory-embedding-service.d.ts.map +1 -1
  57. package/dist/node_modules/@memento/core/dist/domains/memory/services/memory-embedding-service.js +42 -3
  58. package/dist/node_modules/@memento/core/dist/domains/memory/services/memory-embedding-service.js.map +1 -1
  59. package/dist/node_modules/@memento/core/dist/domains/memory/tools/forget-tool.d.ts +1 -0
  60. package/dist/node_modules/@memento/core/dist/domains/memory/tools/forget-tool.d.ts.map +1 -1
  61. package/dist/node_modules/@memento/core/dist/domains/memory/tools/forget-tool.js +42 -17
  62. package/dist/node_modules/@memento/core/dist/domains/memory/tools/forget-tool.js.map +1 -1
  63. package/dist/node_modules/@memento/core/dist/domains/relation/services/triple-extraction/predicate-canonicalizer.d.ts +2 -0
  64. package/dist/node_modules/@memento/core/dist/domains/relation/services/triple-extraction/predicate-canonicalizer.d.ts.map +1 -1
  65. package/dist/node_modules/@memento/core/dist/domains/relation/services/triple-extraction/predicate-canonicalizer.js +59 -5
  66. package/dist/node_modules/@memento/core/dist/domains/relation/services/triple-extraction/predicate-canonicalizer.js.map +1 -1
  67. package/dist/node_modules/@memento/core/dist/domains/search/algorithms/hybrid-result-ranker.d.ts +2 -0
  68. package/dist/node_modules/@memento/core/dist/domains/search/algorithms/hybrid-result-ranker.d.ts.map +1 -1
  69. package/dist/node_modules/@memento/core/dist/domains/search/algorithms/hybrid-result-ranker.js +23 -1
  70. package/dist/node_modules/@memento/core/dist/domains/search/algorithms/hybrid-result-ranker.js.map +1 -1
  71. package/dist/node_modules/@memento/core/dist/domains/search/algorithms/hybrid-search-engine.d.ts +4 -0
  72. package/dist/node_modules/@memento/core/dist/domains/search/algorithms/hybrid-search-engine.d.ts.map +1 -1
  73. package/dist/node_modules/@memento/core/dist/domains/search/algorithms/hybrid-search-engine.js +48 -2
  74. package/dist/node_modules/@memento/core/dist/domains/search/algorithms/hybrid-search-engine.js.map +1 -1
  75. package/dist/node_modules/@memento/core/dist/domains/search/algorithms/hybrid-search-types.d.ts +7 -0
  76. package/dist/node_modules/@memento/core/dist/domains/search/algorithms/hybrid-search-types.d.ts.map +1 -1
  77. package/dist/node_modules/@memento/core/dist/domains/search/algorithms/relation-recall-candidate-expansion.d.ts +50 -0
  78. package/dist/node_modules/@memento/core/dist/domains/search/algorithms/relation-recall-candidate-expansion.d.ts.map +1 -0
  79. package/dist/node_modules/@memento/core/dist/domains/search/algorithms/relation-recall-candidate-expansion.js +231 -0
  80. package/dist/node_modules/@memento/core/dist/domains/search/algorithms/relation-recall-candidate-expansion.js.map +1 -0
  81. package/dist/node_modules/@memento/core/dist/domains/search/algorithms/search-ranking/search-ranking-signals.d.ts +10 -0
  82. package/dist/node_modules/@memento/core/dist/domains/search/algorithms/search-ranking/search-ranking-signals.d.ts.map +1 -1
  83. package/dist/node_modules/@memento/core/dist/domains/search/algorithms/search-ranking/search-ranking-signals.js +19 -0
  84. package/dist/node_modules/@memento/core/dist/domains/search/algorithms/search-ranking/search-ranking-signals.js.map +1 -1
  85. package/dist/node_modules/@memento/core/dist/domains/search/algorithms/search-ranking.d.ts +3 -2
  86. package/dist/node_modules/@memento/core/dist/domains/search/algorithms/search-ranking.d.ts.map +1 -1
  87. package/dist/node_modules/@memento/core/dist/domains/search/algorithms/search-ranking.js +9 -3
  88. package/dist/node_modules/@memento/core/dist/domains/search/algorithms/search-ranking.js.map +1 -1
  89. package/dist/node_modules/@memento/core/dist/domains/search/factories/hybrid-search.factory.d.ts +6 -0
  90. package/dist/node_modules/@memento/core/dist/domains/search/factories/hybrid-search.factory.d.ts.map +1 -1
  91. package/dist/node_modules/@memento/core/dist/domains/search/factories/hybrid-search.factory.js +1 -1
  92. package/dist/node_modules/@memento/core/dist/domains/search/factories/hybrid-search.factory.js.map +1 -1
  93. package/dist/node_modules/@memento/core/dist/domains/search/ports/relevance-gate-port.d.ts +41 -0
  94. package/dist/node_modules/@memento/core/dist/domains/search/ports/relevance-gate-port.d.ts.map +1 -0
  95. package/dist/node_modules/@memento/core/dist/domains/search/ports/relevance-gate-port.js +36 -0
  96. package/dist/node_modules/@memento/core/dist/domains/search/ports/relevance-gate-port.js.map +1 -0
  97. package/dist/node_modules/@memento/core/dist/domains/search/repositories/vector-search/vector-search-hybrid-query.d.ts.map +1 -1
  98. package/dist/node_modules/@memento/core/dist/domains/search/repositories/vector-search/vector-search-hybrid-query.js +11 -4
  99. package/dist/node_modules/@memento/core/dist/domains/search/repositories/vector-search/vector-search-hybrid-query.js.map +1 -1
  100. package/dist/node_modules/@memento/core/dist/domains/search/repositories/vector-search/vector-search-knn-query.d.ts.map +1 -1
  101. package/dist/node_modules/@memento/core/dist/domains/search/repositories/vector-search/vector-search-knn-query.js +9 -3
  102. package/dist/node_modules/@memento/core/dist/domains/search/repositories/vector-search/vector-search-knn-query.js.map +1 -1
  103. package/dist/node_modules/@memento/core/dist/domains/search/services/relevance-gate/create-relevance-gate.d.ts +8 -0
  104. package/dist/node_modules/@memento/core/dist/domains/search/services/relevance-gate/create-relevance-gate.d.ts.map +1 -0
  105. package/dist/node_modules/@memento/core/dist/domains/search/services/relevance-gate/create-relevance-gate.js +41 -0
  106. package/dist/node_modules/@memento/core/dist/domains/search/services/relevance-gate/create-relevance-gate.js.map +1 -0
  107. package/dist/node_modules/@memento/core/dist/domains/search/services/relevance-gate/jev-relevance-gate.d.ts +35 -0
  108. package/dist/node_modules/@memento/core/dist/domains/search/services/relevance-gate/jev-relevance-gate.d.ts.map +1 -0
  109. package/dist/node_modules/@memento/core/dist/domains/search/services/relevance-gate/jev-relevance-gate.js +150 -0
  110. package/dist/node_modules/@memento/core/dist/domains/search/services/relevance-gate/jev-relevance-gate.js.map +1 -0
  111. package/dist/node_modules/@memento/core/dist/index.d.ts +11 -2
  112. package/dist/node_modules/@memento/core/dist/index.d.ts.map +1 -1
  113. package/dist/node_modules/@memento/core/dist/index.js +10 -1
  114. package/dist/node_modules/@memento/core/dist/index.js.map +1 -1
  115. package/dist/node_modules/@memento/core/dist/infrastructure/database/sqlite/migration/migrations/048-repair-duplicate-semantic-content.d.ts +30 -0
  116. package/dist/node_modules/@memento/core/dist/infrastructure/database/sqlite/migration/migrations/048-repair-duplicate-semantic-content.d.ts.map +1 -0
  117. package/dist/node_modules/@memento/core/dist/infrastructure/database/sqlite/migration/migrations/048-repair-duplicate-semantic-content.js +101 -0
  118. package/dist/node_modules/@memento/core/dist/infrastructure/database/sqlite/migration/migrations/048-repair-duplicate-semantic-content.js.map +1 -0
  119. package/dist/node_modules/@memento/core/dist/infrastructure/database/sqlite/vec-schema.d.ts +1 -1
  120. package/dist/node_modules/@memento/core/dist/infrastructure/database/sqlite/vec-schema.d.ts.map +1 -1
  121. package/dist/node_modules/@memento/core/dist/infrastructure/database/sqlite/vec-schema.js +26 -3
  122. package/dist/node_modules/@memento/core/dist/infrastructure/database/sqlite/vec-schema.js.map +1 -1
  123. package/dist/node_modules/@memento/core/dist/prompts/triple-extraction.txt +16 -3
  124. package/dist/node_modules/@memento/core/dist/shared/config/api-tokens.d.ts +2 -0
  125. package/dist/node_modules/@memento/core/dist/shared/config/api-tokens.d.ts.map +1 -1
  126. package/dist/node_modules/@memento/core/dist/shared/config/api-tokens.js +45 -4
  127. package/dist/node_modules/@memento/core/dist/shared/config/api-tokens.js.map +1 -1
  128. package/dist/node_modules/@memento/core/dist/shared/config/environment.d.ts.map +1 -1
  129. package/dist/node_modules/@memento/core/dist/shared/config/environment.js +10 -1
  130. package/dist/node_modules/@memento/core/dist/shared/config/environment.js.map +1 -1
  131. package/dist/node_modules/@memento/core/dist/shared/config/index.d.ts.map +1 -1
  132. package/dist/node_modules/@memento/core/dist/shared/config/index.js +51 -0
  133. package/dist/node_modules/@memento/core/dist/shared/config/index.js.map +1 -1
  134. package/dist/node_modules/@memento/core/dist/shared/config/llm-model-resolver.d.ts +1 -1
  135. package/dist/node_modules/@memento/core/dist/shared/config/llm-model-resolver.d.ts.map +1 -1
  136. package/dist/node_modules/@memento/core/dist/shared/config/llm-model-resolver.js.map +1 -1
  137. package/dist/node_modules/@memento/core/dist/shared/config/ranking-weights-loader.d.ts +5 -0
  138. package/dist/node_modules/@memento/core/dist/shared/config/ranking-weights-loader.d.ts.map +1 -1
  139. package/dist/node_modules/@memento/core/dist/shared/config/ranking-weights-loader.js +14 -2
  140. package/dist/node_modules/@memento/core/dist/shared/config/ranking-weights-loader.js.map +1 -1
  141. package/dist/node_modules/@memento/core/dist/shared/config/vector-search.config.d.ts +16 -0
  142. package/dist/node_modules/@memento/core/dist/shared/config/vector-search.config.d.ts.map +1 -1
  143. package/dist/node_modules/@memento/core/dist/shared/config/vector-search.config.js +33 -0
  144. package/dist/node_modules/@memento/core/dist/shared/config/vector-search.config.js.map +1 -1
  145. package/dist/node_modules/@memento/core/dist/shared/errors/memory-version-conflict-error.d.ts +17 -0
  146. package/dist/node_modules/@memento/core/dist/shared/errors/memory-version-conflict-error.d.ts.map +1 -0
  147. package/dist/node_modules/@memento/core/dist/shared/errors/memory-version-conflict-error.js +27 -0
  148. package/dist/node_modules/@memento/core/dist/shared/errors/memory-version-conflict-error.js.map +1 -0
  149. package/dist/node_modules/@memento/core/dist/shared/types/memory.types.d.ts +24 -0
  150. package/dist/node_modules/@memento/core/dist/shared/types/memory.types.d.ts.map +1 -1
  151. package/dist/node_modules/@memento/core/dist/shared/utils/mcp-era-mode.d.ts +9 -0
  152. package/dist/node_modules/@memento/core/dist/shared/utils/mcp-era-mode.d.ts.map +1 -0
  153. package/dist/node_modules/@memento/core/dist/shared/utils/mcp-era-mode.js +22 -0
  154. package/dist/node_modules/@memento/core/dist/shared/utils/mcp-era-mode.js.map +1 -0
  155. package/dist/node_modules/@memento/core/dist/shared/utils/pii-masker.d.ts.map +1 -1
  156. package/dist/node_modules/@memento/core/dist/shared/utils/pii-masker.js +4 -2
  157. package/dist/node_modules/@memento/core/dist/shared/utils/pii-masker.js.map +1 -1
  158. package/dist/node_modules/@memento/core/dist/shared/utils/window-embedding-write.d.ts +31 -0
  159. package/dist/node_modules/@memento/core/dist/shared/utils/window-embedding-write.d.ts.map +1 -0
  160. package/dist/node_modules/@memento/core/dist/shared/utils/window-embedding-write.js +54 -0
  161. package/dist/node_modules/@memento/core/dist/shared/utils/window-embedding-write.js.map +1 -0
  162. package/dist/node_modules/@memento/core/package.json +16 -1
  163. package/dist/node_modules/@memento/core/prompts/triple-extraction.txt +16 -3
  164. package/dist/server/index.d.ts.map +1 -1
  165. package/dist/server/index.js +30 -11
  166. package/dist/server/index.js.map +1 -1
  167. package/dist/server/mcp-server-factory.d.ts +16 -0
  168. package/dist/server/mcp-server-factory.d.ts.map +1 -0
  169. package/dist/server/mcp-server-factory.js +35 -0
  170. package/dist/server/mcp-server-factory.js.map +1 -0
  171. package/dist/server/routes/admin/admin-memory-review.routes.d.ts.map +1 -1
  172. package/dist/server/routes/admin/admin-memory-review.routes.js +182 -2
  173. package/dist/server/routes/admin/admin-memory-review.routes.js.map +1 -1
  174. package/dist/server/routes/mcp/handlers.d.ts +2 -0
  175. package/dist/server/routes/mcp/handlers.d.ts.map +1 -1
  176. package/dist/server/routes/mcp/handlers.js +100 -9
  177. package/dist/server/routes/mcp/handlers.js.map +1 -1
  178. package/dist/server/routes/mcp/message-processor.d.ts +4 -1
  179. package/dist/server/routes/mcp/message-processor.d.ts.map +1 -1
  180. package/dist/server/routes/mcp/message-processor.js +14 -5
  181. package/dist/server/routes/mcp/message-processor.js.map +1 -1
  182. package/dist/server/routes/mcp/modern-request-validation.d.ts +13 -0
  183. package/dist/server/routes/mcp/modern-request-validation.d.ts.map +1 -0
  184. package/dist/server/routes/mcp/modern-request-validation.js +173 -0
  185. package/dist/server/routes/mcp/modern-request-validation.js.map +1 -0
  186. package/dist/server/routes/mcp/modern-response.d.ts +5 -0
  187. package/dist/server/routes/mcp/modern-response.d.ts.map +1 -0
  188. package/dist/server/routes/mcp/modern-response.js +69 -0
  189. package/dist/server/routes/mcp/modern-response.js.map +1 -0
  190. package/dist/server/routes/mcp.routes.d.ts.map +1 -1
  191. package/dist/server/routes/mcp.routes.js +2 -1
  192. package/dist/server/routes/mcp.routes.js.map +1 -1
  193. package/dist/server/routes/tools.routes.d.ts.map +1 -1
  194. package/dist/server/routes/tools.routes.js +3 -1
  195. package/dist/server/routes/tools.routes.js.map +1 -1
  196. package/dist/server/utils/cors-policy.d.ts.map +1 -1
  197. package/dist/server/utils/cors-policy.js +2 -2
  198. package/dist/server/utils/cors-policy.js.map +1 -1
  199. package/dist/server/utils/mcp-tool-call-error.d.ts.map +1 -1
  200. package/dist/server/utils/mcp-tool-call-error.js +13 -1
  201. package/dist/server/utils/mcp-tool-call-error.js.map +1 -1
  202. package/package.json +3 -1
  203. package/static/css/dashboard.css +48 -0
  204. package/static/dashboard.html +53 -0
  205. package/static/js/graph-shared.js +10 -2
  206. package/static/js/review-candidates-panel-filters.js +257 -0
  207. package/static/js/review-candidates-panel-poll-cycle.js +1 -1
  208. package/static/js/review-candidates-panel-poll-fetch.js +7 -0
  209. package/static/js/review-candidates-panel-poll-snapshot.js +1 -1
  210. package/static/js/review-candidates-panel-render-list.js +33 -3
  211. package/static/js/review-candidates-panel-shared.js +1 -1
  212. package/static/js/review-candidates-panel.js +3 -0
@@ -11,3 +11,13 @@ zeta_fb = 0.05
11
11
 
12
12
  [relation_weights]
13
13
  max_relations = 5
14
+
15
+ [vector_length_decay]
16
+ enabled = true
17
+ characteristic_length = 40
18
+
19
+ [fts_relevance]
20
+ temperature = 10
21
+
22
+ [importance_signal]
23
+ scale = 0.35
@@ -45,3 +45,8 @@ characteristic_length = 40
45
45
  # T=1 이면 실제 rank 구간(-20~-2)이 전부 포화 꼬리에 들어가 동적 범위가 0.083 으로 뭉갠다.
46
46
  [fts_relevance]
47
47
  temperature = 10
48
+
49
+ # #1082: importance 랭킹 신호를 0.5 중심으로 압축. scaled = 0.5 + (raw - 0.5) * scale
50
+ # scale=1 이면 γ·importance 실현 폭이 relevance 를 압도해 benchmark-v3 macro 게이트가 깨진다.
51
+ [importance_signal]
52
+ scale = 0.35
@@ -1 +1 @@
1
- {"version":3,"file":"search-and-embedding.d.ts","sourceRoot":"","sources":["../../src/bootstrap/search-and-embedding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAC7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sDAAsD,CAAC;AAE/F,OAAO,EAAE,sBAAsB,EAAE,MAAM,wDAAwD,CAAC;AAChG,OAAO,EAAE,uBAAuB,EAAE,MAAM,6DAA6D,CAAC;AAEtG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sDAAsD,CAAC;AAE/F,wBAAgB,yCAAyC,CAAC,EAAE,EAAE,OAAO,gBAAgB,EAAE,QAAQ,GAAG;IAChG,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,sBAAsB,CAAC;IACzC,qBAAqB,EAAE,sBAAsB,CAAC;IAC9C,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,uBAAuB,EAAE,uBAAuB,CAAC;IACjD,iBAAiB,EAAE,kBAAkB,CAAC;CACvC,CAgBA"}
1
+ {"version":3,"file":"search-and-embedding.d.ts","sourceRoot":"","sources":["../../src/bootstrap/search-and-embedding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAC7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sDAAsD,CAAC;AAE/F,OAAO,EAAE,sBAAsB,EAAE,MAAM,wDAAwD,CAAC;AAChG,OAAO,EAAE,uBAAuB,EAAE,MAAM,6DAA6D,CAAC;AAEtG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sDAAsD,CAAC;AAG/F,wBAAgB,yCAAyC,CAAC,EAAE,EAAE,OAAO,gBAAgB,EAAE,QAAQ,GAAG;IAChG,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,sBAAsB,CAAC;IACzC,qBAAqB,EAAE,sBAAsB,CAAC;IAC9C,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,uBAAuB,EAAE,uBAAuB,CAAC;IACjD,iBAAiB,EAAE,kBAAkB,CAAC;CACvC,CAkBA"}
@@ -3,12 +3,15 @@ import { HybridSearchFactory } from '../domains/search/factories/hybrid-search.f
3
3
  import { MemoryEmbeddingService } from '../domains/memory/services/memory-embedding-service.js';
4
4
  import { ForgettingPolicyService } from '../domains/forgetting/services/forgetting-policy-service.js';
5
5
  import { OnDemandDatabaseOptimizer } from '../infrastructure/database/on-demand-database-optimizer.js';
6
+ import { createRelevanceGate } from '../domains/search/services/relevance-gate/create-relevance-gate.js';
6
7
  export function createSearchEmbeddingAndOptimizerServices(db) {
7
8
  const searchEngine = new SearchEngine();
8
9
  const embeddingService = new MemoryEmbeddingService();
9
10
  // 검색 경로는 별도 인스턴스를 사용해 remember 경로와 provider 상태를 공유하지 않도록 분리한다.
10
11
  const queryEmbeddingService = new MemoryEmbeddingService();
11
12
  const hybridSearchEngine = HybridSearchFactory.createDefaultEngine(db, queryEmbeddingService);
13
+ // #1095 설정이 off 면 createRelevanceGate 가 null 을 반환해 게이트가 붙지 않는다.
14
+ hybridSearchEngine.setRejectionGate(createRelevanceGate());
12
15
  const forgettingPolicyService = new ForgettingPolicyService();
13
16
  const databaseOptimizer = new OnDemandDatabaseOptimizer(db);
14
17
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"search-and-embedding.js","sourceRoot":"","sources":["../../src/bootstrap/search-and-embedding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAE7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,sDAAsD,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,wDAAwD,CAAC;AAChG,OAAO,EAAE,uBAAuB,EAAE,MAAM,6DAA6D,CAAC;AACtG,OAAO,EAAE,yBAAyB,EAAE,MAAM,4DAA4D,CAAC;AAGvG,MAAM,UAAU,yCAAyC,CAAC,EAAqC;IAQ7F,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;IACxC,MAAM,gBAAgB,GAAG,IAAI,sBAAsB,EAAE,CAAC;IACtD,+DAA+D;IAC/D,MAAM,qBAAqB,GAAG,IAAI,sBAAsB,EAAE,CAAC;IAC3D,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,mBAAmB,CAAC,EAAE,EAAE,qBAAqB,CAAC,CAAC;IAC9F,MAAM,uBAAuB,GAAG,IAAI,uBAAuB,EAAE,CAAC;IAC9D,MAAM,iBAAiB,GAAG,IAAI,yBAAyB,CAAC,EAAE,CAAC,CAAC;IAC5D,OAAO;QACL,YAAY;QACZ,gBAAgB;QAChB,qBAAqB;QACrB,kBAAkB;QAClB,uBAAuB;QACvB,iBAAiB;KAClB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"search-and-embedding.js","sourceRoot":"","sources":["../../src/bootstrap/search-and-embedding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAE7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,sDAAsD,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,wDAAwD,CAAC;AAChG,OAAO,EAAE,uBAAuB,EAAE,MAAM,6DAA6D,CAAC;AACtG,OAAO,EAAE,yBAAyB,EAAE,MAAM,4DAA4D,CAAC;AAEvG,OAAO,EAAE,mBAAmB,EAAE,MAAM,oEAAoE,CAAC;AAEzG,MAAM,UAAU,yCAAyC,CAAC,EAAqC;IAQ7F,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;IACxC,MAAM,gBAAgB,GAAG,IAAI,sBAAsB,EAAE,CAAC;IACtD,+DAA+D;IAC/D,MAAM,qBAAqB,GAAG,IAAI,sBAAsB,EAAE,CAAC;IAC3D,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,mBAAmB,CAAC,EAAE,EAAE,qBAAqB,CAAC,CAAC;IAC9F,gEAAgE;IAChE,kBAAkB,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC3D,MAAM,uBAAuB,GAAG,IAAI,uBAAuB,EAAE,CAAC;IAC9D,MAAM,iBAAiB,GAAG,IAAI,yBAAyB,CAAC,EAAE,CAAC,CAAC;IAC5D,OAAO;QACL,YAAY;QACZ,gBAAgB;QAChB,qBAAqB;QACrB,kBAAkB;QAClB,uBAAuB;QACvB,iBAAiB;KAClB,CAAC;AACJ,CAAC"}
@@ -11,3 +11,13 @@ zeta_fb = 0.05
11
11
 
12
12
  [relation_weights]
13
13
  max_relations = 5
14
+
15
+ [vector_length_decay]
16
+ enabled = true
17
+ characteristic_length = 40
18
+
19
+ [fts_relevance]
20
+ temperature = 10
21
+
22
+ [importance_signal]
23
+ scale = 0.35
@@ -45,3 +45,8 @@ characteristic_length = 40
45
45
  # T=1 이면 실제 rank 구간(-20~-2)이 전부 포화 꼬리에 들어가 동적 범위가 0.083 으로 뭉갠다.
46
46
  [fts_relevance]
47
47
  temperature = 10
48
+
49
+ # #1082: importance 랭킹 신호를 0.5 중심으로 압축. scaled = 0.5 + (raw - 0.5) * scale
50
+ # scale=1 이면 γ·importance 실현 폭이 relevance 를 압도해 benchmark-v3 macro 게이트가 깨진다.
51
+ [importance_signal]
52
+ scale = 0.35
@@ -329,6 +329,7 @@ CREATE TABLE IF NOT EXISTS embedding_model_registry (
329
329
  -- 검색 mapper는 `1 - distance`를 cosine similarity로 해석하고 threshold(0.8/0.6/0.4)도 같은 가정을 쓴다.
330
330
  -- 정의는 src/infrastructure/database/sqlite/vec-schema.ts(VEC_TABLES)와 동기화되어야 하며,
331
331
  -- vec-schema.spec.ts가 이 파일과의 정합을 검증한다.
332
+ -- legacy 384 공용 테이블은 윈도 행을 받지 않는다. 윈도 행은 minilm 전용 테이블에서만 KNN 예산을 쓴다 (#1112).
332
333
  CREATE VIRTUAL TABLE IF NOT EXISTS memory_item_vec USING vec0(embedding float[384] distance_metric=cosine);
333
334
 
334
335
  -- 제공자별 VEC 테이블들
@@ -346,7 +347,7 @@ CREATE VIRTUAL TABLE IF NOT EXISTS memory_item_vec_mock USING vec0(embedding flo
346
347
  CREATE TRIGGER IF NOT EXISTS memory_embedding_vec_insert AFTER INSERT ON memory_embedding BEGIN
347
348
  INSERT INTO memory_item_vec(rowid, embedding)
348
349
  SELECT NEW.id, NEW.embedding
349
- WHERE NEW.dimensions = 384;
350
+ WHERE NEW.dimensions = 384 AND NEW.projection_type NOT LIKE 'window:%';
350
351
 
351
352
  INSERT INTO memory_item_vec_tfidf(rowid, embedding)
352
353
  SELECT NEW.id, NEW.embedding
@@ -354,7 +355,7 @@ CREATE TRIGGER IF NOT EXISTS memory_embedding_vec_insert AFTER INSERT ON memory_
354
355
 
355
356
  INSERT INTO memory_item_vec_minilm(rowid, embedding)
356
357
  SELECT NEW.id, NEW.embedding
357
- WHERE NEW.embedding_provider = 'minilm' AND NEW.dimensions = 384 AND NEW.projection_type = 'native';
358
+ WHERE NEW.embedding_provider = 'minilm' AND NEW.dimensions = 384 AND NEW.projection_type IN ('native', 'window:0', 'window:1', 'window:2', 'window:3', 'window:4', 'window:5', 'window:6', 'window:7', 'window:8', 'window:9', 'window:10', 'window:11', 'window:12', 'window:13', 'window:14', 'window:15');
358
359
 
359
360
  INSERT INTO memory_item_vec_openai(rowid, embedding)
360
361
  SELECT NEW.id, NEW.embedding
@@ -379,7 +380,7 @@ CREATE TRIGGER IF NOT EXISTS memory_embedding_vec_update AFTER UPDATE ON memory_
379
380
 
380
381
  INSERT INTO memory_item_vec(rowid, embedding)
381
382
  SELECT NEW.id, NEW.embedding
382
- WHERE NEW.dimensions = 384;
383
+ WHERE NEW.dimensions = 384 AND NEW.projection_type NOT LIKE 'window:%';
383
384
 
384
385
  INSERT INTO memory_item_vec_tfidf(rowid, embedding)
385
386
  SELECT NEW.id, NEW.embedding
@@ -387,7 +388,7 @@ CREATE TRIGGER IF NOT EXISTS memory_embedding_vec_update AFTER UPDATE ON memory_
387
388
 
388
389
  INSERT INTO memory_item_vec_minilm(rowid, embedding)
389
390
  SELECT NEW.id, NEW.embedding
390
- WHERE NEW.embedding_provider = 'minilm' AND NEW.dimensions = 384 AND NEW.projection_type = 'native';
391
+ WHERE NEW.embedding_provider = 'minilm' AND NEW.dimensions = 384 AND NEW.projection_type IN ('native', 'window:0', 'window:1', 'window:2', 'window:3', 'window:4', 'window:5', 'window:6', 'window:7', 'window:8', 'window:9', 'window:10', 'window:11', 'window:12', 'window:13', 'window:14', 'window:15');
391
392
 
392
393
  INSERT INTO memory_item_vec_openai(rowid, embedding)
393
394
  SELECT NEW.id, NEW.embedding
@@ -4,12 +4,18 @@
4
4
  * FR-009(한 클러스터 실패 시 나머지 계속)는 `SleepConsolidationService` 루프에서 처리한다.
5
5
  * 여기서는 LLM 호출 실패 시 extractive로 전환해 빈 요약만 피한다(스킵·에러 집계는 상위 담당).
6
6
  */
7
+ import type { LlmModelConfigSlice, LlmProviderConfigSlice } from '../../../shared/config/llm-model-resolver.js';
8
+ import type { MementoConfig } from '../../../shared/types/memory.types.js';
7
9
  import type { EpisodicCandidateRow } from '../repositories/consolidation-repository.js';
8
10
  export type SummarizationMethod = 'llm' | 'extractive';
11
+ /** 테스트 주입용 설정 슬라이스. 생략 시 mementoConfig 를 쓴다. */
12
+ export type SummarizationLlmConfig = LlmModelConfigSlice & LlmProviderConfigSlice & Pick<MementoConfig, 'ollamaBaseUrl'>;
9
13
  export interface SummarizeClusterInput {
10
14
  clusterEpisodes: EpisodicCandidateRow[];
11
15
  }
12
16
  export declare class SummarizationService {
17
+ private readonly llmConfig;
18
+ constructor(llmConfig?: SummarizationLlmConfig);
13
19
  hasLlmConfigured(): boolean;
14
20
  extractiveFallback(episodes: EpisodicCandidateRow[]): {
15
21
  content: string;
@@ -1 +1 @@
1
- {"version":3,"file":"summarization-service.d.ts","sourceRoot":"","sources":["../../../../src/domains/consolidation/services/summarization-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAExF,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,YAAY,CAAC;AAEvD,MAAM,WAAW,qBAAqB;IACpC,eAAe,EAAE,oBAAoB,EAAE,CAAC;CACzC;AAED,qBAAa,oBAAoB;IAC/B,gBAAgB,IAAI,OAAO;IAM3B,kBAAkB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,mBAAmB,CAAA;KAAE;IAUtG;;OAEG;IACG,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC;QAC5D,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,mBAAmB,CAAC;KAC7B,CAAC;IAgFF;;OAEG;IACG,8BAA8B,CAAC,KAAK,EAAE;QAC1C,uBAAuB,EAAE,MAAM,CAAC;QAChC,eAAe,EAAE,oBAAoB,EAAE,CAAC;KACzC,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,mBAAmB,CAAA;KAAE,CAAC;CAc9D"}
1
+ {"version":3,"file":"summarization-service.d.ts","sourceRoot":"","sources":["../../../../src/domains/consolidation/services/summarization-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,8CAA8C,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAG3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAExF,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,YAAY,CAAC;AAEvD,gDAAgD;AAChD,MAAM,MAAM,sBAAsB,GAAG,mBAAmB,GACtD,sBAAsB,GACtB,IAAI,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;AAEvC,MAAM,WAAW,qBAAqB;IACpC,eAAe,EAAE,oBAAoB,EAAE,CAAC;CACzC;AAED,qBAAa,oBAAoB;IACnB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,GAAE,sBAAsC;IAE9E,gBAAgB,IAAI,OAAO;IAgB3B,kBAAkB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,mBAAmB,CAAA;KAAE;IAUtG;;OAEG;IACG,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC;QAC5D,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,mBAAmB,CAAC;KAC7B,CAAC;IAkGF;;OAEG;IACG,8BAA8B,CAAC,KAAK,EAAE;QAC1C,uBAAuB,EAAE,MAAM,CAAC;QAChC,eAAe,EAAE,oBAAoB,EAAE,CAAC;KACzC,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,mBAAmB,CAAA;KAAE,CAAC;CAc9D"}
@@ -4,11 +4,27 @@
4
4
  * FR-009(한 클러스터 실패 시 나머지 계속)는 `SleepConsolidationService` 루프에서 처리한다.
5
5
  * 여기서는 LLM 호출 실패 시 extractive로 전환해 빈 요약만 피한다(스킵·에러 집계는 상위 담당).
6
6
  */
7
- import { resolveLlmModel } from '../../../shared/config/llm-model-resolver.js';
7
+ import { resolveLlmModel, resolveLlmProvider } from '../../../shared/config/llm-model-resolver.js';
8
+ import { mementoConfig } from '../../../shared/config/index.js';
9
+ import { OllamaChatLlmAdapter } from '../../personal-agent/adapters/ollama-chat-llm-adapter.js';
8
10
  export class SummarizationService {
11
+ llmConfig;
12
+ constructor(llmConfig = mementoConfig) {
13
+ this.llmConfig = llmConfig;
14
+ }
9
15
  hasLlmConfigured() {
16
+ const provider = resolveLlmProvider('consolidation', this.llmConfig);
17
+ if (provider === 'ollama') {
18
+ return true;
19
+ }
10
20
  const openai = process.env.OPENAI_API_KEY?.trim();
11
21
  const gemini = process.env.GEMINI_API_KEY?.trim();
22
+ if (provider === 'openai') {
23
+ return Boolean(openai);
24
+ }
25
+ if (provider === 'gemini') {
26
+ return Boolean(gemini);
27
+ }
12
28
  return Boolean(openai || gemini);
13
29
  }
14
30
  extractiveFallback(episodes) {
@@ -36,8 +52,9 @@ export class SummarizationService {
36
52
  'Use the same language as the sources. Do not list IDs.\n\n' +
37
53
  body;
38
54
  try {
55
+ const provider = resolveLlmProvider('consolidation', this.llmConfig);
39
56
  const apiKey = process.env.OPENAI_API_KEY?.trim();
40
- if (apiKey) {
57
+ if (apiKey && (provider === 'openai' || provider === 'auto')) {
41
58
  const model = resolveLlmModel('openai', 'consolidation', undefined, {
42
59
  boundProvider: 'openai',
43
60
  });
@@ -66,7 +83,7 @@ export class SummarizationService {
66
83
  }
67
84
  }
68
85
  const geminiKey = process.env.GEMINI_API_KEY?.trim();
69
- if (geminiKey) {
86
+ if (geminiKey && (provider === 'gemini' || provider === 'auto')) {
70
87
  const model = resolveLlmModel('gemini', 'consolidation', undefined, {
71
88
  boundProvider: 'gemini',
72
89
  });
@@ -87,6 +104,23 @@ export class SummarizationService {
87
104
  return { content: text, method: 'llm' };
88
105
  }
89
106
  }
107
+ if (provider === 'ollama') {
108
+ const model = resolveLlmModel('ollama', 'consolidation', this.llmConfig, {
109
+ boundProvider: 'ollama',
110
+ });
111
+ const adapter = new OllamaChatLlmAdapter({
112
+ baseUrl: this.llmConfig.ollamaBaseUrl,
113
+ model,
114
+ });
115
+ const result = await adapter.complete([
116
+ { role: 'system', content: 'You compress episodic traces into durable semantic knowledge.' },
117
+ { role: 'user', content: prompt },
118
+ ]);
119
+ const text = result.content.trim();
120
+ if (text) {
121
+ return { content: text, method: 'llm' };
122
+ }
123
+ }
90
124
  }
91
125
  catch {
92
126
  /* network / parse */
@@ -1 +1 @@
1
- {"version":3,"file":"summarization-service.js","sourceRoot":"","sources":["../../../../src/domains/consolidation/services/summarization-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"summarization-service.js","sourceRoot":"","sources":["../../../../src/domains/consolidation/services/summarization-service.ts"],"names":[],"mappings":"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"}
@@ -72,6 +72,12 @@ export declare class MiniLMEmbeddingService implements EmbeddingServiceInterface
72
72
  * 클린코드: 단일 책임 원칙 - 전처리만 담당
73
73
  */
74
74
  private preprocessText;
75
+ /**
76
+ * 윈도별 임베딩 벡터를 생성한다.
77
+ *
78
+ * 토크나이저로 윈도를 나눌 수 없으면 전체 텍스트를 한 번 임베딩해 벡터 배열 길이 1을 반환한다.
79
+ */
80
+ private embedWindows;
75
81
  /**
76
82
  * 본문을 모델 창(510토큰) 단위로 나눠 각각 임베딩한 뒤 평균 내어 하나의 벡터로 만든다 (#1013).
77
83
  *
@@ -82,6 +88,17 @@ export declare class MiniLMEmbeddingService implements EmbeddingServiceInterface
82
88
  * 전체 텍스트를 그대로 넘긴다 — 모델이 512토큰에서 알아서 자르므로 예전 동작 이하로 떨어지지 않는다.
83
89
  */
84
90
  private embedWithWindows;
91
+ /**
92
+ * 윈도별 임베딩 벡터를 반환한다 (issue 1107).
93
+ *
94
+ * generateEmbedding 과 달리 윈도마다의 벡터를 그대로 노출한다. MaxSim 등 윈도 단위 유사도 계산용 public seam.
95
+ * EmbeddingServiceInterface 에는 포함하지 않는 MiniLM 전용 API다.
96
+ */
97
+ generateWindowEmbeddings(text: string): Promise<{
98
+ vectors: number[][];
99
+ tokenCount: number;
100
+ model: string;
101
+ }>;
85
102
  /**
86
103
  * 토크나이저로 본문을 510토큰 윈도로 나눈다. 토크나이저가 없으면 null 을 돌려준다.
87
104
  */
@@ -1 +1 @@
1
- {"version":3,"file":"minilm-embedding-service.d.ts","sourceRoot":"","sources":["../../../../src/domains/embedding/services/minilm-embedding-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EACV,yBAAyB,EACzB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACd,MAAM,0CAA0C,CAAC;AAsBlD,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,6BAA6B,EAAE,OAAO,GAAG,SAAS,CAAC;CACxD;AAsBD,qBAAa,sBAAuB,YAAW,yBAAyB;IAEtE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAqB;IACvD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAO;IAEzC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAO;IAC5C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAO;IAI/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAM;IAEzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqC;IAC/D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqC;IAChE,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,cAAc,CAAgD;IACtE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsC;;IAM5D;;;OAGG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAgDtE;;;OAGG;IACG,aAAa,CACjB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,aAAa,EAAE,EAC3B,KAAK,GAAE,MAAW,EAClB,SAAS,GAAE,MAAY,GACtB,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAa9B;;;OAGG;IACH,WAAW,IAAI,OAAO;IAMtB;;;OAGG;IACH,YAAY,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;IAQxE;;;OAGG;IACH,OAAO,CAAC,aAAa;IAMrB;;;OAGG;YACW,QAAQ;IAetB;;;;;;;;OAQG;YACW,SAAS;IA0CvB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAOtB;;;;;;;;OAQG;YACW,gBAAgB;IAqB9B;;OAEG;YACW,gBAAgB;IAgC9B;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,YAAY,IAAI,MAAM;CAGvB"}
1
+ {"version":3,"file":"minilm-embedding-service.d.ts","sourceRoot":"","sources":["../../../../src/domains/embedding/services/minilm-embedding-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EACV,yBAAyB,EACzB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACd,MAAM,0CAA0C,CAAC;AAsBlD,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,6BAA6B,EAAE,OAAO,GAAG,SAAS,CAAC;CACxD;AAsBD,qBAAa,sBAAuB,YAAW,yBAAyB;IAEtE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAqB;IACvD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAO;IAEzC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAO;IAC5C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAO;IAI/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAM;IAEzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqC;IAC/D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqC;IAChE,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,cAAc,CAAgD;IACtE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsC;;IAM5D;;;OAGG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAgDtE;;;OAGG;IACG,aAAa,CACjB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,aAAa,EAAE,EAC3B,KAAK,GAAE,MAAW,EAClB,SAAS,GAAE,MAAY,GACtB,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAa9B;;;OAGG;IACH,WAAW,IAAI,OAAO;IAMtB;;;OAGG;IACH,YAAY,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;IAQxE;;;OAGG;IACH,OAAO,CAAC,aAAa;IAMrB;;;OAGG;YACW,QAAQ;IAetB;;;;;;;;OAQG;YACW,SAAS;IA0CvB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAOtB;;;;OAIG;YACW,YAAY;IAqB1B;;;;;;;;OAQG;YACW,gBAAgB;IAQ9B;;;;;OAKG;IACG,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAQjH;;OAEG;YACW,gBAAgB;IAgC9B;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,YAAY,IAAI,MAAM;CAGvB"}
@@ -213,21 +213,17 @@ export class MiniLMEmbeddingService {
213
213
  .replace(/\s+/g, ' ');
214
214
  }
215
215
  /**
216
- * 본문을 모델 창(510토큰) 단위로 나눠 각각 임베딩한 뒤 평균 내어 하나의 벡터로 만든다 (#1013).
217
- *
218
- * 왜 필요한가? 예전에는 앞 1024자만 넘겼는데 한국어는 2.124 chars/token 이라 그게 약 493토큰이었다.
219
- * 긴 기억의 뒤쪽 절반은 벡터에 한 번도 들어가지 않았다. 토크나이저로 잘라야 언어에 상관없이 맞는다.
216
+ * 윈도별 임베딩 벡터를 생성한다.
220
217
  *
221
- * 윈도가 하나면 예전과 같은 단일 호출이다. 토크나이저를 쓸 수 없는 환경(테스트 모킹 등)에서는
222
- * 전체 텍스트를 그대로 넘긴다 — 모델이 512토큰에서 알아서 자르므로 예전 동작 이하로 떨어지지 않는다.
218
+ * 토크나이저로 윈도를 나눌 수 없으면 전체 텍스트를 한 번 임베딩해 벡터 배열 길이 1을 반환한다.
223
219
  */
224
- async embedWithWindows(model, text) {
225
- const windows = await this.splitIntoWindows(model, text);
220
+ async embedWindows(model, processedText) {
221
+ const windows = await this.splitIntoWindows(model, processedText);
226
222
  if (windows === null) {
227
- const result = await model(text, { pooling: 'mean', normalize: true });
223
+ const result = await model(processedText, { pooling: 'mean', normalize: true });
228
224
  return {
229
- embedding: Array.from(getEmbeddingIterable(result)),
230
- tokenCount: estimateEmbeddingTokens(text)
225
+ vectors: [Array.from(getEmbeddingIterable(result))],
226
+ tokenCount: estimateEmbeddingTokens(processedText)
231
227
  };
232
228
  }
233
229
  const vectors = [];
@@ -235,7 +231,33 @@ export class MiniLMEmbeddingService {
235
231
  const result = await model(window, { pooling: 'mean', normalize: true });
236
232
  vectors.push(Array.from(getEmbeddingIterable(result)));
237
233
  }
238
- return { embedding: meanPoolNormalize(vectors), tokenCount: windows.tokenCount };
234
+ return { vectors, tokenCount: windows.tokenCount };
235
+ }
236
+ /**
237
+ * 본문을 모델 창(510토큰) 단위로 나눠 각각 임베딩한 뒤 평균 내어 하나의 벡터로 만든다 (#1013).
238
+ *
239
+ * 왜 필요한가? 예전에는 앞 1024자만 넘겼는데 한국어는 2.124 chars/token 이라 그게 약 493토큰이었다.
240
+ * 긴 기억의 뒤쪽 절반은 벡터에 한 번도 들어가지 않았다. 토크나이저로 잘라야 언어에 상관없이 맞는다.
241
+ *
242
+ * 윈도가 하나면 예전과 같은 단일 호출이다. 토크나이저를 쓸 수 없는 환경(테스트 모킹 등)에서는
243
+ * 전체 텍스트를 그대로 넘긴다 — 모델이 512토큰에서 알아서 자르므로 예전 동작 이하로 떨어지지 않는다.
244
+ */
245
+ async embedWithWindows(model, text) {
246
+ const result = await this.embedWindows(model, text);
247
+ return { embedding: meanPoolNormalize(result.vectors), tokenCount: result.tokenCount };
248
+ }
249
+ /**
250
+ * 윈도별 임베딩 벡터를 반환한다 (issue 1107).
251
+ *
252
+ * generateEmbedding 과 달리 윈도마다의 벡터를 그대로 노출한다. MaxSim 등 윈도 단위 유사도 계산용 public seam.
253
+ * EmbeddingServiceInterface 에는 포함하지 않는 MiniLM 전용 API다.
254
+ */
255
+ async generateWindowEmbeddings(text) {
256
+ this.validateInput(text);
257
+ const model = await this.getModel();
258
+ const processedText = this.preprocessText(text);
259
+ const { vectors, tokenCount } = await this.embedWindows(model, processedText);
260
+ return { vectors, tokenCount, model: this.modelName };
239
261
  }
240
262
  /**
241
263
  * 토크나이저로 본문을 510토큰 윈도로 나눈다. 토크나이저가 없으면 null 을 돌려준다.
@@ -1 +1 @@
1
- {"version":3,"file":"minilm-embedding-service.js","sourceRoot":"","sources":["../../../../src/domains/embedding/services/minilm-embedding-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"minilm-embedding-service.js","sourceRoot":"","sources":["../../../../src/domains/embedding/services/minilm-embedding-service.ts"],"names":[],"mappings":"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"}
@@ -54,6 +54,11 @@ export declare class UnifiedEmbeddingService implements EmbeddingServiceInterfac
54
54
  * recall 도구에서 TF-IDF fallback 감지에 사용됨
55
55
  */
56
56
  getCurrentProviderName(): EmbeddingProvider | null;
57
+ /**
58
+ * 마지막으로 선택된 제공자 서비스 인스턴스 (#1112 윈도 임베딩 접근용).
59
+ * 인터페이스에 없는 제공자 전용 기능(MiniLM generateWindowEmbeddings)을 호출하려면 필요하다.
60
+ */
61
+ getCurrentProviderService(): EmbeddingServiceInterface | null;
57
62
  /**
58
63
  * 폴백 제공자 설정
59
64
  */
@@ -1 +1 @@
1
- {"version":3,"file":"unified-embedding-service.d.ts","sourceRoot":"","sources":["../../../../src/domains/embedding/services/unified-embedding-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EACV,yBAAyB,EACzB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EAClB,MAAM,0CAA0C,CAAC;AAIlD;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,yBAAyB;IACvE,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,mBAAmB,CAAkC;IAC7D,OAAO,CAAC,iBAAiB,CAAgE;;IAQzF;;;OAGG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAqC7G;;;OAGG;IACG,aAAa,CACjB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,aAAa,EAAE,EAC3B,KAAK,GAAE,MAAW,EAClB,SAAS,GAAE,MAAY,EACvB,iBAAiB,CAAC,EAAE,iBAAiB,GACpC,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAoC9B;;;OAGG;IACH,WAAW,IAAI,OAAO;IAKtB;;;;;;OAMG;IACH,YAAY,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;IA2BxE;;OAEG;IACH,qBAAqB,IAAI,MAAM,EAAE;IAMjC;;;OAGG;IACH,sBAAsB,IAAI,iBAAiB,GAAG,IAAI;IAIlD;;OAEG;IACH,oBAAoB,CAAC,SAAS,EAAE,iBAAiB,EAAE,GAAG,IAAI;IAK1D,OAAO,CAAC,qBAAqB;IAM7B;;;OAGG;IACH,OAAO,CAAC,aAAa;IAMrB;;;OAGG;YACW,cAAc;IAW5B;;;;;;;OAOG;YACW,oBAAoB;IA0BlC;;OAEG;YACW,iBAAiB;IAoB/B,OAAO,CAAC,qBAAqB;CAM9B"}
1
+ {"version":3,"file":"unified-embedding-service.d.ts","sourceRoot":"","sources":["../../../../src/domains/embedding/services/unified-embedding-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EACV,yBAAyB,EACzB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EAClB,MAAM,0CAA0C,CAAC;AAIlD;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,yBAAyB;IACvE,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,mBAAmB,CAAkC;IAC7D,OAAO,CAAC,iBAAiB,CAAgE;;IAQzF;;;OAGG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAqC7G;;;OAGG;IACG,aAAa,CACjB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,aAAa,EAAE,EAC3B,KAAK,GAAE,MAAW,EAClB,SAAS,GAAE,MAAY,EACvB,iBAAiB,CAAC,EAAE,iBAAiB,GACpC,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAoC9B;;;OAGG;IACH,WAAW,IAAI,OAAO;IAKtB;;;;;;OAMG;IACH,YAAY,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;IA2BxE;;OAEG;IACH,qBAAqB,IAAI,MAAM,EAAE;IAMjC;;;OAGG;IACH,sBAAsB,IAAI,iBAAiB,GAAG,IAAI;IAIlD;;;OAGG;IACH,yBAAyB,IAAI,yBAAyB,GAAG,IAAI;IAI7D;;OAEG;IACH,oBAAoB,CAAC,SAAS,EAAE,iBAAiB,EAAE,GAAG,IAAI;IAK1D,OAAO,CAAC,qBAAqB;IAM7B;;;OAGG;IACH,OAAO,CAAC,aAAa;IAMrB;;;OAGG;YACW,cAAc;IAW5B;;;;;;;OAOG;YACW,oBAAoB;IA0BlC;;OAEG;YACW,iBAAiB;IAoB/B,OAAO,CAAC,qBAAqB;CAM9B"}
@@ -153,6 +153,13 @@ export class UnifiedEmbeddingService {
153
153
  getCurrentProviderName() {
154
154
  return this.currentProviderName;
155
155
  }
156
+ /**
157
+ * 마지막으로 선택된 제공자 서비스 인스턴스 (#1112 윈도 임베딩 접근용).
158
+ * 인터페이스에 없는 제공자 전용 기능(MiniLM generateWindowEmbeddings)을 호출하려면 필요하다.
159
+ */
160
+ getCurrentProviderService() {
161
+ return this.currentProvider;
162
+ }
156
163
  /**
157
164
  * 폴백 제공자 설정
158
165
  */
@@ -1 +1 @@
1
- {"version":3,"file":"unified-embedding-service.js","sourceRoot":"","sources":["../../../../src/domains/embedding/services/unified-embedding-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"unified-embedding-service.js","sourceRoot":"","sources":["../../../../src/domains/embedding/services/unified-embedding-service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"remember-tool-memory-item.d.ts","sourceRoot":"","sources":["../../../../src/domains/memory/remember/remember-tool-memory-item.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAc,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAQ3F,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAKhE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAYhE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAC5C,uBAAuB,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;CACpD;AAyID,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,iBAAiB,EACtB,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,UAAU,CAAC,CAuNrB"}
1
+ {"version":3,"file":"remember-tool-memory-item.d.ts","sourceRoot":"","sources":["../../../../src/domains/memory/remember/remember-tool-memory-item.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAc,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAY3F,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAKhE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAYhE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAC5C,uBAAuB,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;CACpD;AA4MD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,iBAAiB,EACtB,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,UAAU,CAAC,CAoOrB"}
@@ -11,13 +11,29 @@ import { isMemoryItemType } from '../../../shared/utils/type-guards.js';
11
11
  import { EventOutboxService } from '../../telemetry/services/event-outbox-service.js';
12
12
  import { getNextVersionNumber } from '../procedural/procedural-versioning.js';
13
13
  import { ToolInputValidationError } from '../../../shared/errors/tool-input-validation-error.js';
14
+ import { MemoryVersionConflictError, memoryItemEffectiveVersion, } from '../../../shared/errors/memory-version-conflict-error.js';
14
15
  import { findExistingProceduralMemory } from './remember-tool-db-helpers.js';
15
16
  import { prepareReflectionNotes } from './remember-tool-reflection.js';
16
17
  import { launchBackgroundAugmentation } from './remember-tool-augmentation.js';
17
18
  import { applyNearDupMergeInputs, buildSimilarityWarningFromCandidates, findNearDuplicateCandidates, isAutoMergeable, isNearDupMergeType, loadMemoryItemById, } from './remember-near-duplicate.js';
19
+ async function assertMemoryVersionConflict(db, id, ownerId, projectId, expectedVersion) {
20
+ const scoped = await DatabaseUtils.get(db, `
21
+ SELECT version
22
+ FROM memory_item
23
+ WHERE id = ?
24
+ AND owner_id IS ?
25
+ AND project_id IS ?
26
+ AND COALESCE(is_deleted, 0) = 0
27
+ `, [id, ownerId, projectId]);
28
+ if (!scoped) {
29
+ throw new ToolInputValidationError(`memory_id를 찾을 수 없습니다: ${id}`);
30
+ }
31
+ throw MemoryVersionConflictError.forMemory(id, expectedVersion, memoryItemEffectiveVersion(scoped.version));
32
+ }
18
33
  async function persistMemoryItem(db, id, params, ctx, existingMemory, finalReflectionNotes, context, host) {
19
34
  const { type, ownerId, processId, sessionId, numTimes, sourceSessionId, confidenceVal, origin_source, project_id_param, last_mentioned_at_param } = ctx;
20
- const { content, importance, privacy_scope, tags, source, task_goal, steps, workflow_name, skill_name, trigger_conditions, update_mode } = params;
35
+ const { content, importance, privacy_scope, tags, source, task_goal, steps, workflow_name, skill_name, trigger_conditions, update_mode, expected_version } = params;
36
+ const projectId = project_id_param ?? null;
21
37
  await DatabaseUtils.runTransaction(db, async () => {
22
38
  const isUpdate = !!(existingMemory && update_mode && (update_mode === 'replace' || update_mode === 'incremental'));
23
39
  const createdAt = new Date().toISOString();
@@ -59,7 +75,25 @@ async function persistMemoryItem(db, id, params, ctx, existingMemory, finalRefle
59
75
  }
60
76
  const tagsJson = tags ? JSON.stringify(tags) : null;
61
77
  if (isUpdate) {
62
- await DatabaseUtils.run(db, `
78
+ const useCas = expected_version !== undefined;
79
+ const nextVersion = useCas ? expected_version + 1 : undefined;
80
+ const updateSql = useCas
81
+ ? `
82
+ UPDATE memory_item SET
83
+ content = ?, importance = ?, privacy_scope = ?, tags = ?, source = ?,
84
+ origin_source = ?, task_goal = ?, steps = ?, reflection_notes = ?,
85
+ workflow_name = ?, skill_name = ?, trigger_conditions = ?,
86
+ recall_count = ?, last_accessed_at = ?, g_value = ?, consolidation_score = ?,
87
+ owner_id = ?, process_id = ?, session_id = ?,
88
+ num_times = ?, last_mentioned_at = ?, source_session_id = ?, confidence = ?,
89
+ version = ?
90
+ WHERE id = ?
91
+ AND owner_id IS ?
92
+ AND project_id IS ?
93
+ AND COALESCE(is_deleted, 0) = 0
94
+ AND COALESCE(version, 1) = ?
95
+ `
96
+ : `
63
97
  UPDATE memory_item SET
64
98
  content = ?, importance = ?, privacy_scope = ?, tags = ?, source = ?,
65
99
  origin_source = ?, task_goal = ?, steps = ?, reflection_notes = ?,
@@ -68,15 +102,31 @@ async function persistMemoryItem(db, id, params, ctx, existingMemory, finalRefle
68
102
  owner_id = ?, process_id = ?, session_id = ?,
69
103
  num_times = ?, last_mentioned_at = ?, source_session_id = ?, confidence = ?
70
104
  WHERE id = ?
71
- `, [
72
- content, importance, privacy_scope, tagsJson, source || null,
73
- origin_source, task_goal || null, finalSteps, finalReflectionNotes,
74
- workflow_name || null, skill_name || null, trigger_conditions || null,
75
- recallCount, lastAccessedAt, gValue, consolidationScore,
76
- ownerId, processId, sessionId,
77
- numTimes, lastMentionedAt, sourceSessionId, confidenceVal,
78
- id
79
- ]);
105
+ `;
106
+ const updateParams = useCas
107
+ ? [
108
+ content, importance, privacy_scope, tagsJson, source || null,
109
+ origin_source, task_goal || null, finalSteps, finalReflectionNotes,
110
+ workflow_name || null, skill_name || null, trigger_conditions || null,
111
+ recallCount, lastAccessedAt, gValue, consolidationScore,
112
+ ownerId, processId, sessionId,
113
+ numTimes, lastMentionedAt, sourceSessionId, confidenceVal,
114
+ nextVersion,
115
+ id, ownerId, projectId, expected_version,
116
+ ]
117
+ : [
118
+ content, importance, privacy_scope, tagsJson, source || null,
119
+ origin_source, task_goal || null, finalSteps, finalReflectionNotes,
120
+ workflow_name || null, skill_name || null, trigger_conditions || null,
121
+ recallCount, lastAccessedAt, gValue, consolidationScore,
122
+ ownerId, processId, sessionId,
123
+ numTimes, lastMentionedAt, sourceSessionId, confidenceVal,
124
+ id,
125
+ ];
126
+ const result = await DatabaseUtils.run(db, updateSql, updateParams);
127
+ if (useCas && result.changes === 0) {
128
+ await assertMemoryVersionConflict(db, id, ownerId, projectId, expected_version);
129
+ }
80
130
  }
81
131
  else {
82
132
  const proceduralVersion = type === 'procedural' && existingMemory && update_mode === 'versioned'
@@ -123,6 +173,10 @@ async function persistMemoryItem(db, id, params, ctx, existingMemory, finalRefle
123
173
  }
124
174
  }
125
175
  });
176
+ if (expected_version !== undefined && existingMemory && update_mode && (update_mode === 'replace' || update_mode === 'incremental')) {
177
+ return { casVersion: expected_version + 1 };
178
+ }
179
+ return {};
126
180
  }
127
181
  function shouldSkipNearDupSearch(type, update_mode, existingProceduralHit, explicitTarget) {
128
182
  return mementoConfig.rememberDedupMode === 'off'
@@ -133,7 +187,7 @@ export async function handleMemoryItem(params, context, ctx, host) {
133
187
  const { type, ownerId, startTime, project_id_param } = ctx;
134
188
  let { numTimes } = ctx;
135
189
  let workingParams = params;
136
- const { content, update_mode, memory_id, workflow_name, skill_name, task_goal, reflection_notes, enable_triple_extraction, importance } = workingParams;
190
+ const { content, update_mode, memory_id, workflow_name, skill_name, task_goal, reflection_notes, enable_triple_extraction, importance, } = workingParams;
137
191
  if (!content) {
138
192
  throw new Error("type이 'core' 또는 'vault'가 아닐 때는 content가 필수입니다");
139
193
  }
@@ -222,8 +276,10 @@ export async function handleMemoryItem(params, context, ctx, host) {
222
276
  return host.createErrorResult('NEAR_DUPLICATE', '유사한 기억이 이미 존재하여 저장이 거절되었습니다. update_mode=incremental로 병합하세요.', { similarity_warning });
223
277
  }
224
278
  const id = existingMemoryId || `mem_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
279
+ let casVersion;
225
280
  try {
226
- await persistMemoryItem(context.db, id, workingParams, { ...ctx, numTimes }, existingMemory, finalReflectionNotes, context, host);
281
+ const persistResult = await persistMemoryItem(context.db, id, workingParams, { ...ctx, numTimes }, existingMemory, finalReflectionNotes, context, host);
282
+ casVersion = persistResult.casVersion;
227
283
  }
228
284
  catch (error) {
229
285
  const errorWithCode = error;
@@ -289,6 +345,7 @@ export async function handleMemoryItem(params, context, ctx, host) {
289
345
  memory_id: id,
290
346
  type: type,
291
347
  ...(existingMemoryId ? { updated: true } : {}),
348
+ ...(casVersion !== undefined ? { version: casVersion } : {}),
292
349
  message: existingMemoryId
293
350
  ? `기억이 갱신되었습니다: ${id}`
294
351
  : `기억이 저장되었습니다: ${id}`,