memento-mcp-server 0.1.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 (555) hide show
  1. package/.cursor/rules/cache-management.mdc +171 -0
  2. package/.cursor/rules/database-schema.mdc +344 -0
  3. package/.cursor/rules/deployment.mdc +596 -0
  4. package/.cursor/rules/error-logging.mdc +298 -0
  5. package/.cursor/rules/forgetting-algorithms.mdc +426 -0
  6. package/.cursor/rules/http-server.mdc +432 -0
  7. package/.cursor/rules/hybrid-search.mdc +424 -0
  8. package/.cursor/rules/implementation.mdc +369 -0
  9. package/.cursor/rules/lightweight-embedding.mdc +178 -0
  10. package/.cursor/rules/mcp-client-development.mdc +0 -0
  11. package/.cursor/rules/mcp-server-development.mdc +0 -0
  12. package/.cursor/rules/mcp-tools-architecture.mdc +205 -0
  13. package/.cursor/rules/memento-memory-rule.mdc +8 -0
  14. package/.cursor/rules/memento-project-overview.mdc +0 -0
  15. package/.cursor/rules/memory-algorithms.mdc +502 -0
  16. package/.cursor/rules/monitoring.mdc +622 -0
  17. package/.cursor/rules/performance-alerts.mdc +537 -0
  18. package/.cursor/rules/performance-monitoring.mdc +345 -0
  19. package/.cursor/rules/performance-optimization.mdc +563 -0
  20. package/.cursor/rules/project-structure.mdc +310 -0
  21. package/.cursor/rules/testing.mdc +473 -0
  22. package/.dockerignore +15 -0
  23. package/.eslintrc.json +34 -0
  24. package/.github/ISSUE_TEMPLATE/bug_report.md +51 -0
  25. package/.github/ISSUE_TEMPLATE/feature_request.md +45 -0
  26. package/.github/ISSUE_TEMPLATE/question.md +31 -0
  27. package/.github/PULL_REQUEST_TEMPLATE.md +97 -0
  28. package/AGENTS.md +28 -0
  29. package/CHANGELOG.md +416 -0
  30. package/CODE_OF_CONDUCT.md +62 -0
  31. package/CONTRIBUTING.md +165 -0
  32. package/DOCKER_SETUP_GUIDE.md +84 -0
  33. package/Dockerfile +90 -0
  34. package/INSTALL.en.md +303 -0
  35. package/INSTALL.md +303 -0
  36. package/README.en.md +330 -0
  37. package/README.md +427 -0
  38. package/backup/legacy-removal-20250930-201816/http-server-legacy.ts +1068 -0
  39. package/backup/legacy-removal-20250930-201816/rollback-to-legacy.ps1 +46 -0
  40. package/backup/legacy-removal-20250930-201816/rollback-to-legacy.sh +48 -0
  41. package/dist/algorithms/forgetting-algorithm.d.ts +90 -0
  42. package/dist/algorithms/forgetting-algorithm.d.ts.map +1 -0
  43. package/dist/algorithms/forgetting-algorithm.js +160 -0
  44. package/dist/algorithms/forgetting-algorithm.js.map +1 -0
  45. package/dist/algorithms/hybrid-search-engine.d.ts +108 -0
  46. package/dist/algorithms/hybrid-search-engine.d.ts.map +1 -0
  47. package/dist/algorithms/hybrid-search-engine.js +384 -0
  48. package/dist/algorithms/hybrid-search-engine.js.map +1 -0
  49. package/dist/algorithms/search-engine.d.ts +64 -0
  50. package/dist/algorithms/search-engine.d.ts.map +1 -0
  51. package/dist/algorithms/search-engine.js +304 -0
  52. package/dist/algorithms/search-engine.js.map +1 -0
  53. package/dist/algorithms/search-ranking.d.ts +145 -0
  54. package/dist/algorithms/search-ranking.d.ts.map +1 -0
  55. package/dist/algorithms/search-ranking.js +311 -0
  56. package/dist/algorithms/search-ranking.js.map +1 -0
  57. package/dist/algorithms/spaced-repetition.d.ts +83 -0
  58. package/dist/algorithms/spaced-repetition.d.ts.map +1 -0
  59. package/dist/algorithms/spaced-repetition.js +153 -0
  60. package/dist/algorithms/spaced-repetition.js.map +1 -0
  61. package/dist/algorithms/vector-search-engine.d.ts +96 -0
  62. package/dist/algorithms/vector-search-engine.d.ts.map +1 -0
  63. package/dist/algorithms/vector-search-engine.js +410 -0
  64. package/dist/algorithms/vector-search-engine.js.map +1 -0
  65. package/dist/client/index.d.ts +55 -0
  66. package/dist/client/index.d.ts.map +1 -0
  67. package/dist/client/index.js +179 -0
  68. package/dist/client/index.js.map +1 -0
  69. package/dist/config/index.d.ts +20 -0
  70. package/dist/config/index.d.ts.map +1 -0
  71. package/dist/config/index.js +87 -0
  72. package/dist/config/index.js.map +1 -0
  73. package/dist/database/init.d.ts +7 -0
  74. package/dist/database/init.d.ts.map +1 -0
  75. package/dist/database/init.js +117 -0
  76. package/dist/database/init.js.map +1 -0
  77. package/dist/database/migrate.d.ts +6 -0
  78. package/dist/database/migrate.d.ts.map +1 -0
  79. package/dist/database/migrate.js +84 -0
  80. package/dist/database/migrate.js.map +1 -0
  81. package/dist/database/schema.sql +159 -0
  82. package/dist/npm-client/context-injector.d.ts +106 -0
  83. package/dist/npm-client/context-injector.d.ts.map +1 -0
  84. package/dist/npm-client/context-injector.js +296 -0
  85. package/dist/npm-client/context-injector.js.map +1 -0
  86. package/dist/npm-client/index.d.ts +42 -0
  87. package/dist/npm-client/index.d.ts.map +1 -0
  88. package/dist/npm-client/index.js +43 -0
  89. package/dist/npm-client/index.js.map +1 -0
  90. package/dist/npm-client/memento-client.d.ts +114 -0
  91. package/dist/npm-client/memento-client.d.ts.map +1 -0
  92. package/dist/npm-client/memento-client.js +391 -0
  93. package/dist/npm-client/memento-client.js.map +1 -0
  94. package/dist/npm-client/memory-manager.d.ts +137 -0
  95. package/dist/npm-client/memory-manager.d.ts.map +1 -0
  96. package/dist/npm-client/memory-manager.js +341 -0
  97. package/dist/npm-client/memory-manager.js.map +1 -0
  98. package/dist/npm-client/types.d.ts +216 -0
  99. package/dist/npm-client/types.d.ts.map +1 -0
  100. package/dist/npm-client/types.js +44 -0
  101. package/dist/npm-client/types.js.map +1 -0
  102. package/dist/npm-client/utils.d.ts +91 -0
  103. package/dist/npm-client/utils.d.ts.map +1 -0
  104. package/dist/npm-client/utils.js +351 -0
  105. package/dist/npm-client/utils.js.map +1 -0
  106. package/dist/scripts/copy-assets.d.ts +3 -0
  107. package/dist/scripts/copy-assets.d.ts.map +1 -0
  108. package/dist/scripts/copy-assets.js +31 -0
  109. package/dist/scripts/copy-assets.js.map +1 -0
  110. package/dist/server/http-server.d.ts +28 -0
  111. package/dist/server/http-server.d.ts.map +1 -0
  112. package/dist/server/http-server.js +930 -0
  113. package/dist/server/http-server.js.map +1 -0
  114. package/dist/server/index-backup.d.ts +5 -0
  115. package/dist/server/index-backup.d.ts.map +1 -0
  116. package/dist/server/index-backup.js +793 -0
  117. package/dist/server/index-backup.js.map +1 -0
  118. package/dist/server/index-refactored.d.ts +6 -0
  119. package/dist/server/index-refactored.d.ts.map +1 -0
  120. package/dist/server/index-refactored.js +206 -0
  121. package/dist/server/index-refactored.js.map +1 -0
  122. package/dist/server/index.d.ts +12 -0
  123. package/dist/server/index.d.ts.map +1 -0
  124. package/dist/server/index.js +301 -0
  125. package/dist/server/index.js.map +1 -0
  126. package/dist/server/simple-mcp-server.d.ts +8 -0
  127. package/dist/server/simple-mcp-server.d.ts.map +1 -0
  128. package/dist/server/simple-mcp-server.js +152 -0
  129. package/dist/server/simple-mcp-server.js.map +1 -0
  130. package/dist/services/async-optimizer.d.ts +136 -0
  131. package/dist/services/async-optimizer.d.ts.map +1 -0
  132. package/dist/services/async-optimizer.js +406 -0
  133. package/dist/services/async-optimizer.js.map +1 -0
  134. package/dist/services/batch-scheduler.d.ts +156 -0
  135. package/dist/services/batch-scheduler.d.ts.map +1 -0
  136. package/dist/services/batch-scheduler.js +612 -0
  137. package/dist/services/batch-scheduler.js.map +1 -0
  138. package/dist/services/cache-service.d.ts +168 -0
  139. package/dist/services/cache-service.d.ts.map +1 -0
  140. package/dist/services/cache-service.js +360 -0
  141. package/dist/services/cache-service.js.map +1 -0
  142. package/dist/services/database-optimizer.d.ts +110 -0
  143. package/dist/services/database-optimizer.d.ts.map +1 -0
  144. package/dist/services/database-optimizer.js +369 -0
  145. package/dist/services/database-optimizer.js.map +1 -0
  146. package/dist/services/embedding-provider-factory.d.ts +62 -0
  147. package/dist/services/embedding-provider-factory.d.ts.map +1 -0
  148. package/dist/services/embedding-provider-factory.js +152 -0
  149. package/dist/services/embedding-provider-factory.js.map +1 -0
  150. package/dist/services/embedding-service.d.ts +95 -0
  151. package/dist/services/embedding-service.d.ts.map +1 -0
  152. package/dist/services/embedding-service.js +276 -0
  153. package/dist/services/embedding-service.js.map +1 -0
  154. package/dist/services/error-logging-service.d.ts +134 -0
  155. package/dist/services/error-logging-service.d.ts.map +1 -0
  156. package/dist/services/error-logging-service.js +271 -0
  157. package/dist/services/error-logging-service.js.map +1 -0
  158. package/dist/services/forgetting-policy-service.d.ts +94 -0
  159. package/dist/services/forgetting-policy-service.d.ts.map +1 -0
  160. package/dist/services/forgetting-policy-service.js +233 -0
  161. package/dist/services/forgetting-policy-service.js.map +1 -0
  162. package/dist/services/gemini-embedding-service.d.ts +82 -0
  163. package/dist/services/gemini-embedding-service.d.ts.map +1 -0
  164. package/dist/services/gemini-embedding-service.js +232 -0
  165. package/dist/services/gemini-embedding-service.js.map +1 -0
  166. package/dist/services/lightweight-embedding-service.d.ts +95 -0
  167. package/dist/services/lightweight-embedding-service.d.ts.map +1 -0
  168. package/dist/services/lightweight-embedding-service.js +263 -0
  169. package/dist/services/lightweight-embedding-service.js.map +1 -0
  170. package/dist/services/memory-embedding-service.d.ts +69 -0
  171. package/dist/services/memory-embedding-service.d.ts.map +1 -0
  172. package/dist/services/memory-embedding-service.js +223 -0
  173. package/dist/services/memory-embedding-service.js.map +1 -0
  174. package/dist/services/minilm-embedding-service.d.ts +92 -0
  175. package/dist/services/minilm-embedding-service.d.ts.map +1 -0
  176. package/dist/services/minilm-embedding-service.js +216 -0
  177. package/dist/services/minilm-embedding-service.js.map +1 -0
  178. package/dist/services/performance-alert-service.d.ts +142 -0
  179. package/dist/services/performance-alert-service.d.ts.map +1 -0
  180. package/dist/services/performance-alert-service.js +366 -0
  181. package/dist/services/performance-alert-service.js.map +1 -0
  182. package/dist/services/performance-monitor.d.ts +144 -0
  183. package/dist/services/performance-monitor.d.ts.map +1 -0
  184. package/dist/services/performance-monitor.js +416 -0
  185. package/dist/services/performance-monitor.js.map +1 -0
  186. package/dist/services/performance-monitoring-integration.d.ts +77 -0
  187. package/dist/services/performance-monitoring-integration.d.ts.map +1 -0
  188. package/dist/services/performance-monitoring-integration.js +177 -0
  189. package/dist/services/performance-monitoring-integration.js.map +1 -0
  190. package/dist/services/unified-embedding-service.d.ts +75 -0
  191. package/dist/services/unified-embedding-service.d.ts.map +1 -0
  192. package/dist/services/unified-embedding-service.js +211 -0
  193. package/dist/services/unified-embedding-service.js.map +1 -0
  194. package/dist/test/debug-http-v2.d.ts +5 -0
  195. package/dist/test/debug-http-v2.d.ts.map +1 -0
  196. package/dist/test/debug-http-v2.js +28 -0
  197. package/dist/test/debug-http-v2.js.map +1 -0
  198. package/dist/test/performance-benchmark.d.ts +57 -0
  199. package/dist/test/performance-benchmark.d.ts.map +1 -0
  200. package/dist/test/performance-benchmark.js +427 -0
  201. package/dist/test/performance-benchmark.js.map +1 -0
  202. package/dist/test/test-alerts-direct.d.ts +7 -0
  203. package/dist/test/test-alerts-direct.d.ts.map +1 -0
  204. package/dist/test/test-alerts-direct.js +101 -0
  205. package/dist/test/test-alerts-direct.js.map +1 -0
  206. package/dist/test/test-batch-scheduler.d.ts +2 -0
  207. package/dist/test/test-batch-scheduler.d.ts.map +1 -0
  208. package/dist/test/test-batch-scheduler.js +156 -0
  209. package/dist/test/test-batch-scheduler.js.map +1 -0
  210. package/dist/test/test-client.d.ts +5 -0
  211. package/dist/test/test-client.d.ts.map +1 -0
  212. package/dist/test/test-client.js +86 -0
  213. package/dist/test/test-client.js.map +1 -0
  214. package/dist/test/test-embedding.d.ts +6 -0
  215. package/dist/test/test-embedding.d.ts.map +1 -0
  216. package/dist/test/test-embedding.js +142 -0
  217. package/dist/test/test-embedding.js.map +1 -0
  218. package/dist/test/test-error-logging.d.ts +7 -0
  219. package/dist/test/test-error-logging.d.ts.map +1 -0
  220. package/dist/test/test-error-logging.js +105 -0
  221. package/dist/test/test-error-logging.js.map +1 -0
  222. package/dist/test/test-forgetting.d.ts +6 -0
  223. package/dist/test/test-forgetting.d.ts.map +1 -0
  224. package/dist/test/test-forgetting.js +154 -0
  225. package/dist/test/test-forgetting.js.map +1 -0
  226. package/dist/test/test-gemini-embedding.d.ts +7 -0
  227. package/dist/test/test-gemini-embedding.d.ts.map +1 -0
  228. package/dist/test/test-gemini-embedding.js +134 -0
  229. package/dist/test/test-gemini-embedding.js.map +1 -0
  230. package/dist/test/test-http-server-v2-simple.d.ts +6 -0
  231. package/dist/test/test-http-server-v2-simple.d.ts.map +1 -0
  232. package/dist/test/test-http-server-v2-simple.js +131 -0
  233. package/dist/test/test-http-server-v2-simple.js.map +1 -0
  234. package/dist/test/test-http-server-v2.d.ts +7 -0
  235. package/dist/test/test-http-server-v2.d.ts.map +1 -0
  236. package/dist/test/test-http-server-v2.js +529 -0
  237. package/dist/test/test-http-server-v2.js.map +1 -0
  238. package/dist/test/test-lightweight-embedding.d.ts +6 -0
  239. package/dist/test/test-lightweight-embedding.d.ts.map +1 -0
  240. package/dist/test/test-lightweight-embedding.js +189 -0
  241. package/dist/test/test-lightweight-embedding.js.map +1 -0
  242. package/dist/test/test-m1-completion.d.ts +7 -0
  243. package/dist/test/test-m1-completion.d.ts.map +1 -0
  244. package/dist/test/test-m1-completion.js +124 -0
  245. package/dist/test/test-m1-completion.js.map +1 -0
  246. package/dist/test/test-memory-injection-prompt.d.ts +2 -0
  247. package/dist/test/test-memory-injection-prompt.d.ts.map +1 -0
  248. package/dist/test/test-memory-injection-prompt.js +299 -0
  249. package/dist/test/test-memory-injection-prompt.js.map +1 -0
  250. package/dist/test/test-performance-alerts.d.ts +7 -0
  251. package/dist/test/test-performance-alerts.d.ts.map +1 -0
  252. package/dist/test/test-performance-alerts.js +109 -0
  253. package/dist/test/test-performance-alerts.js.map +1 -0
  254. package/dist/test/test-performance-monitor.d.ts +2 -0
  255. package/dist/test/test-performance-monitor.d.ts.map +1 -0
  256. package/dist/test/test-performance-monitor.js +182 -0
  257. package/dist/test/test-performance-monitor.js.map +1 -0
  258. package/dist/test/test-performance-monitoring.d.ts +6 -0
  259. package/dist/test/test-performance-monitoring.d.ts.map +1 -0
  260. package/dist/test/test-performance-monitoring.js +156 -0
  261. package/dist/test/test-performance-monitoring.js.map +1 -0
  262. package/dist/test/test-search.d.ts +5 -0
  263. package/dist/test/test-search.d.ts.map +1 -0
  264. package/dist/test/test-search.js +141 -0
  265. package/dist/test/test-search.js.map +1 -0
  266. package/dist/test/test-simple-alerts.d.ts +6 -0
  267. package/dist/test/test-simple-alerts.d.ts.map +1 -0
  268. package/dist/test/test-simple-alerts.js +106 -0
  269. package/dist/test/test-simple-alerts.js.map +1 -0
  270. package/dist/test/test-vector-search-engine.d.ts +2 -0
  271. package/dist/test/test-vector-search-engine.d.ts.map +1 -0
  272. package/dist/test/test-vector-search-engine.js +225 -0
  273. package/dist/test/test-vector-search-engine.js.map +1 -0
  274. package/dist/tools/base-tool.d.ts +64 -0
  275. package/dist/tools/base-tool.d.ts.map +1 -0
  276. package/dist/tools/base-tool.js +158 -0
  277. package/dist/tools/base-tool.js.map +1 -0
  278. package/dist/tools/cleanup-memory-tool.d.ts +10 -0
  279. package/dist/tools/cleanup-memory-tool.d.ts.map +1 -0
  280. package/dist/tools/cleanup-memory-tool.js +66 -0
  281. package/dist/tools/cleanup-memory-tool.js.map +1 -0
  282. package/dist/tools/database-optimize-tool.d.ts +10 -0
  283. package/dist/tools/database-optimize-tool.d.ts.map +1 -0
  284. package/dist/tools/database-optimize-tool.js +64 -0
  285. package/dist/tools/database-optimize-tool.js.map +1 -0
  286. package/dist/tools/error-stats.d.ts +93 -0
  287. package/dist/tools/error-stats.d.ts.map +1 -0
  288. package/dist/tools/error-stats.js +115 -0
  289. package/dist/tools/error-stats.js.map +1 -0
  290. package/dist/tools/forget-tool.d.ts +63 -0
  291. package/dist/tools/forget-tool.d.ts.map +1 -0
  292. package/dist/tools/forget-tool.js +340 -0
  293. package/dist/tools/forget-tool.js.map +1 -0
  294. package/dist/tools/forgetting-stats-tool.d.ts +10 -0
  295. package/dist/tools/forgetting-stats-tool.d.ts.map +1 -0
  296. package/dist/tools/forgetting-stats-tool.js +37 -0
  297. package/dist/tools/forgetting-stats-tool.js.map +1 -0
  298. package/dist/tools/index.d.ts +33 -0
  299. package/dist/tools/index.d.ts.map +1 -0
  300. package/dist/tools/index.js +55 -0
  301. package/dist/tools/index.js.map +1 -0
  302. package/dist/tools/memory-injection-prompt.d.ts +31 -0
  303. package/dist/tools/memory-injection-prompt.d.ts.map +1 -0
  304. package/dist/tools/memory-injection-prompt.js +203 -0
  305. package/dist/tools/memory-injection-prompt.js.map +1 -0
  306. package/dist/tools/performance-alerts.d.ts +127 -0
  307. package/dist/tools/performance-alerts.d.ts.map +1 -0
  308. package/dist/tools/performance-alerts.js +208 -0
  309. package/dist/tools/performance-alerts.js.map +1 -0
  310. package/dist/tools/performance-stats-tool.d.ts +10 -0
  311. package/dist/tools/performance-stats-tool.d.ts.map +1 -0
  312. package/dist/tools/performance-stats-tool.js +38 -0
  313. package/dist/tools/performance-stats-tool.js.map +1 -0
  314. package/dist/tools/pin-tool.d.ts +39 -0
  315. package/dist/tools/pin-tool.d.ts.map +1 -0
  316. package/dist/tools/pin-tool.js +211 -0
  317. package/dist/tools/pin-tool.js.map +1 -0
  318. package/dist/tools/recall-tool.d.ts +27 -0
  319. package/dist/tools/recall-tool.d.ts.map +1 -0
  320. package/dist/tools/recall-tool.js +335 -0
  321. package/dist/tools/recall-tool.js.map +1 -0
  322. package/dist/tools/remember-tool.d.ts +10 -0
  323. package/dist/tools/remember-tool.d.ts.map +1 -0
  324. package/dist/tools/remember-tool.js +101 -0
  325. package/dist/tools/remember-tool.js.map +1 -0
  326. package/dist/tools/resolve-error.d.ts +54 -0
  327. package/dist/tools/resolve-error.d.ts.map +1 -0
  328. package/dist/tools/resolve-error.js +63 -0
  329. package/dist/tools/resolve-error.js.map +1 -0
  330. package/dist/tools/tool-registry.d.ts +134 -0
  331. package/dist/tools/tool-registry.d.ts.map +1 -0
  332. package/dist/tools/tool-registry.js +337 -0
  333. package/dist/tools/tool-registry.js.map +1 -0
  334. package/dist/tools/types.d.ts +56 -0
  335. package/dist/tools/types.d.ts.map +1 -0
  336. package/dist/tools/types.js +23 -0
  337. package/dist/tools/types.js.map +1 -0
  338. package/dist/tools/unpin-tool.d.ts +43 -0
  339. package/dist/tools/unpin-tool.d.ts.map +1 -0
  340. package/dist/tools/unpin-tool.js +233 -0
  341. package/dist/tools/unpin-tool.js.map +1 -0
  342. package/dist/types/embedding.types.d.ts +65 -0
  343. package/dist/types/embedding.types.d.ts.map +1 -0
  344. package/dist/types/embedding.types.js +6 -0
  345. package/dist/types/embedding.types.js.map +1 -0
  346. package/dist/types/index.d.ts +103 -0
  347. package/dist/types/index.d.ts.map +1 -0
  348. package/dist/types/index.js +5 -0
  349. package/dist/types/index.js.map +1 -0
  350. package/dist/utils/database.d.ts +62 -0
  351. package/dist/utils/database.d.ts.map +1 -0
  352. package/dist/utils/database.js +399 -0
  353. package/dist/utils/database.js.map +1 -0
  354. package/dist/utils/stopwords.d.ts +18 -0
  355. package/dist/utils/stopwords.d.ts.map +1 -0
  356. package/dist/utils/stopwords.js +117 -0
  357. package/dist/utils/stopwords.js.map +1 -0
  358. package/docker-compose.dev.yml +50 -0
  359. package/docker-compose.prod.yml +77 -0
  360. package/docker-compose.yml +43 -0
  361. package/docs/en/Memento-Goals.md +217 -0
  362. package/docs/en/Memento-M1-DetailSpecs.md +130 -0
  363. package/docs/en/Memento-Milestones.md +135 -0
  364. package/docs/en/Search-Ranking-Memory-Decay-Formulas.md +177 -0
  365. package/docs/en/api-reference.md +658 -0
  366. package/docs/en/architecture.md +1302 -0
  367. package/docs/en/developer-guide.md +1005 -0
  368. package/docs/en/user-manual.md +595 -0
  369. package/docs/ko/Memento-Goals.md +217 -0
  370. package/docs/ko/Memento-M1-DetailSpecs.md +130 -0
  371. package/docs/ko/Memento-Milestones.md +134 -0
  372. package/docs/ko/Search-Ranking-Memory-Decay-Formulas.md +177 -0
  373. package/docs/ko/api-reference.md +658 -0
  374. package/docs/ko/architecture.md +1302 -0
  375. package/docs/ko/developer-guide.md +1006 -0
  376. package/docs/ko/embedding-api-reference.md +122 -0
  377. package/docs/ko/embedding-configuration.md +62 -0
  378. package/docs/ko/embedding-performance-benchmark.md +62 -0
  379. package/docs/ko/embedding-service-guide.md +314 -0
  380. package/docs/ko/user-manual.md +595 -0
  381. package/env.example +49 -0
  382. package/install.sh +191 -0
  383. package/mcp-http-client.js +218 -0
  384. package/mcp.json +0 -0
  385. package/package.json +125 -0
  386. package/packages/mcp-client/docs/API-REFERENCE.md +560 -0
  387. package/packages/mcp-client/docs/BEST-PRACTICES.md +564 -0
  388. package/packages/mcp-client/docs/MIGRATION-GUIDE.md +344 -0
  389. package/packages/mcp-client/docs/PERFORMANCE-GUIDE.md +476 -0
  390. package/packages/mcp-client/docs/TROUBLESHOOTING.md +564 -0
  391. package/packages/mcp-client/package-lock.json +907 -0
  392. package/packages/mcp-client/package.json +58 -0
  393. package/packages/mcp-client/performance-optimizer.js +428 -0
  394. package/packages/mcp-client/test-basic.js +65 -0
  395. package/packages/mcp-client/test-integration.js +366 -0
  396. package/scripts/auto-setup.js +234 -0
  397. package/scripts/backup-daily.bat +28 -0
  398. package/scripts/backup-embeddings.js +108 -0
  399. package/scripts/check-db-integrity.js +93 -0
  400. package/scripts/debug-embeddings.js +184 -0
  401. package/scripts/direct-sql-migration.sql +36 -0
  402. package/scripts/docker-migration.sh +105 -0
  403. package/scripts/fix-migration.js +93 -0
  404. package/scripts/fix-vector-dimensions.js +206 -0
  405. package/scripts/migrate-embedding-data.js +307 -0
  406. package/scripts/regenerate-embeddings.js +144 -0
  407. package/scripts/restore-legacy.ps1 +60 -0
  408. package/scripts/restore-legacy.sh +62 -0
  409. package/scripts/run-migration.js +122 -0
  410. package/scripts/safe-migration.js +150 -0
  411. package/scripts/simple-migrate.js +41 -0
  412. package/scripts/simple-update.js +123 -0
  413. package/scripts/start-container.sh +10 -0
  414. package/src/algorithms/forgetting-algorithm.spec.ts +538 -0
  415. package/src/algorithms/forgetting-algorithm.ts +243 -0
  416. package/src/algorithms/hybrid-search-engine.spec.ts +484 -0
  417. package/src/algorithms/hybrid-search-engine.ts +489 -0
  418. package/src/algorithms/search-engine.spec.ts +429 -0
  419. package/src/algorithms/search-engine.ts +392 -0
  420. package/src/algorithms/search-ranking.spec.ts +293 -0
  421. package/src/algorithms/search-ranking.ts +407 -0
  422. package/src/algorithms/spaced-repetition.spec.ts +510 -0
  423. package/src/algorithms/spaced-repetition.ts +238 -0
  424. package/src/algorithms/vector-search-engine.ts +505 -0
  425. package/src/client/index.spec.ts +427 -0
  426. package/src/client/index.ts +222 -0
  427. package/src/config/index.spec.ts +339 -0
  428. package/src/config/index.ts +106 -0
  429. package/src/database/init.spec.ts +239 -0
  430. package/src/database/init.ts +130 -0
  431. package/src/database/migrate.spec.ts +293 -0
  432. package/src/database/migrate.ts +94 -0
  433. package/src/database/migrations/001_add_embedding_metadata.sql +29 -0
  434. package/src/database/schema.sql +159 -0
  435. package/src/npm-client/context-injector.spec.ts +335 -0
  436. package/src/npm-client/context-injector.ts +412 -0
  437. package/src/npm-client/index.spec.ts +108 -0
  438. package/src/npm-client/index.ts +96 -0
  439. package/src/npm-client/memento-client.spec.ts +549 -0
  440. package/src/npm-client/memento-client.ts +501 -0
  441. package/src/npm-client/memory-manager.spec.ts +374 -0
  442. package/src/npm-client/memory-manager.ts +414 -0
  443. package/src/npm-client/types.spec.ts +427 -0
  444. package/src/npm-client/types.ts +296 -0
  445. package/src/npm-client/utils.spec.ts +355 -0
  446. package/src/npm-client/utils.ts +423 -0
  447. package/src/scripts/copy-assets.js +37 -0
  448. package/src/server/http-server.spec.ts +648 -0
  449. package/src/server/http-server.ts +1030 -0
  450. package/src/server/index-backup.ts +875 -0
  451. package/src/server/index-refactored.ts +237 -0
  452. package/src/server/index.spec.ts +281 -0
  453. package/src/server/index.ts +347 -0
  454. package/src/server/simple-mcp-server.spec.ts +207 -0
  455. package/src/server/simple-mcp-server.ts +173 -0
  456. package/src/services/async-optimizer.spec.ts +569 -0
  457. package/src/services/async-optimizer.ts +484 -0
  458. package/src/services/batch-scheduler.ts +759 -0
  459. package/src/services/cache-service.spec.ts +372 -0
  460. package/src/services/cache-service.ts +434 -0
  461. package/src/services/database-optimizer.spec.ts +344 -0
  462. package/src/services/database-optimizer.ts +450 -0
  463. package/src/services/embedding-provider-factory.ts +173 -0
  464. package/src/services/embedding-service.spec.ts +342 -0
  465. package/src/services/embedding-service.ts +333 -0
  466. package/src/services/error-logging-service.spec.ts +416 -0
  467. package/src/services/error-logging-service.ts +383 -0
  468. package/src/services/forgetting-policy-service.spec.ts +140 -0
  469. package/src/services/forgetting-policy-service.ts +334 -0
  470. package/src/services/gemini-embedding-service.spec.ts +463 -0
  471. package/src/services/gemini-embedding-service.ts +283 -0
  472. package/src/services/lightweight-embedding-service.spec.ts +458 -0
  473. package/src/services/lightweight-embedding-service.ts +324 -0
  474. package/src/services/memory-embedding-service.spec.ts +417 -0
  475. package/src/services/memory-embedding-service.ts +289 -0
  476. package/src/services/minilm-embedding-service.spec.ts +104 -0
  477. package/src/services/minilm-embedding-service.ts +262 -0
  478. package/src/services/performance-alert-service.spec.ts +517 -0
  479. package/src/services/performance-alert-service.ts +477 -0
  480. package/src/services/performance-monitor.spec.ts +401 -0
  481. package/src/services/performance-monitor.ts +532 -0
  482. package/src/services/performance-monitoring-integration.spec.ts +478 -0
  483. package/src/services/performance-monitoring-integration.ts.bak +276 -0
  484. package/src/services/unified-embedding-service.spec.ts +224 -0
  485. package/src/services/unified-embedding-service.ts +255 -0
  486. package/src/test/debug-http-v2.ts +30 -0
  487. package/src/test/embedding-integration-test.spec.ts +295 -0
  488. package/src/test/embedding-integration-test.ts +295 -0
  489. package/src/test/embedding-performance-benchmark.spec.ts +354 -0
  490. package/src/test/embedding-performance-benchmark.ts +312 -0
  491. package/src/test/performance-benchmark.ts +565 -0
  492. package/src/test/test-alerts-direct.ts +136 -0
  493. package/src/test/test-batch-scheduler-simple.spec.ts +122 -0
  494. package/src/test/test-batch-scheduler.spec.ts +453 -0
  495. package/src/test/test-batch-scheduler.ts +182 -0
  496. package/src/test/test-client.ts +97 -0
  497. package/src/test/test-embedding.ts +153 -0
  498. package/src/test/test-error-handling.spec.ts +575 -0
  499. package/src/test/test-error-logging.ts +117 -0
  500. package/src/test/test-forgetting.ts +162 -0
  501. package/src/test/test-gemini-embedding.ts +159 -0
  502. package/src/test/test-http-server-v2-simple.ts +147 -0
  503. package/src/test/test-http-server-v2.ts +586 -0
  504. package/src/test/test-hybrid-search-engine.spec.ts +521 -0
  505. package/src/test/test-integration-fixed.spec.ts +612 -0
  506. package/src/test/test-integration.spec.ts +463 -0
  507. package/src/test/test-lightweight-embedding.ts +208 -0
  508. package/src/test/test-m1-completion.spec.ts +614 -0
  509. package/src/test/test-m1-completion.ts +141 -0
  510. package/src/test/test-m1-integration.spec.ts +514 -0
  511. package/src/test/test-memory-injection-prompt.spec.ts +650 -0
  512. package/src/test/test-memory-injection-prompt.ts +391 -0
  513. package/src/test/test-performance-alerts.ts +125 -0
  514. package/src/test/test-performance-monitor-updates.spec.ts +490 -0
  515. package/src/test/test-performance-monitor.spec.ts +284 -0
  516. package/src/test/test-performance-monitor.ts +228 -0
  517. package/src/test/test-performance-monitoring.ts +171 -0
  518. package/src/test/test-search.ts +151 -0
  519. package/src/test/test-simple-alerts.ts +136 -0
  520. package/src/test/test-vector-search-engine.spec.ts +408 -0
  521. package/src/test/test-vector-search-engine.ts +303 -0
  522. package/src/tools/base-tool.ts +189 -0
  523. package/src/tools/cleanup-memory-tool.ts +77 -0
  524. package/src/tools/database-optimize-tool.ts +79 -0
  525. package/src/tools/error-stats.ts +119 -0
  526. package/src/tools/forget-tool.spec.ts +613 -0
  527. package/src/tools/forget-tool.ts +454 -0
  528. package/src/tools/forgetting-stats-tool.ts +47 -0
  529. package/src/tools/index.ts +71 -0
  530. package/src/tools/memory-injection-prompt.ts +257 -0
  531. package/src/tools/performance-alerts.ts +226 -0
  532. package/src/tools/performance-stats-tool.ts +48 -0
  533. package/src/tools/pin-tool.spec.ts +497 -0
  534. package/src/tools/pin-tool.ts +277 -0
  535. package/src/tools/recall-tool.spec.ts +475 -0
  536. package/src/tools/recall-tool.ts +389 -0
  537. package/src/tools/remember-tool.spec.ts +469 -0
  538. package/src/tools/remember-tool.ts +112 -0
  539. package/src/tools/resolve-error.ts +69 -0
  540. package/src/tools/tool-registry.ts +417 -0
  541. package/src/tools/types.ts +63 -0
  542. package/src/tools/unpin-tool.spec.ts +549 -0
  543. package/src/tools/unpin-tool.ts +306 -0
  544. package/src/types/embedding.types.ts +78 -0
  545. package/src/types/index.spec.ts +420 -0
  546. package/src/types/index.ts +117 -0
  547. package/src/utils/database.spec.ts +77 -0
  548. package/src/utils/database.ts +458 -0
  549. package/src/utils/stopwords.ts +128 -0
  550. package/start-docker-setup.bat +38 -0
  551. package/static/logo.png +0 -0
  552. package/static/memento_logo.svg +2 -0
  553. package/test-docker.js +103 -0
  554. package/tsconfig.json +46 -0
  555. package/vitest.config.ts +23 -0
@@ -0,0 +1,171 @@
1
+ ---
2
+ globs: *.ts,*.js
3
+ description: 캐시 서비스 개발 규칙
4
+ ---
5
+
6
+ # 캐시 관리 서비스 개발 규칙
7
+
8
+ ## 🗄️ 캐시 서비스 아키텍처
9
+
10
+ ### 핵심 컴포넌트
11
+
12
+ #### 1. Cache Service (`src/services/cache-service.ts` - 352줄)
13
+ - **LRU 캐시 구현**: 최근 사용 항목 우선 유지
14
+ - **TTL 관리**: 시간 기반 캐시 만료
15
+ - **메모리 효율적 관리**: 캐시 크기 제한 및 정리
16
+ - **통계 수집**: 캐시 성능 메트릭 제공
17
+
18
+ #### 2. 캐시 타입별 관리
19
+ - **검색 결과 캐시**: 검색 성능 향상
20
+ - **임베딩 캐시**: 임베딩 생성 비용 절약
21
+ - **메타데이터 캐시**: 자주 접근하는 데이터
22
+ - **세션 캐시**: 사용자 세션 정보
23
+
24
+ ## 🔧 캐시 구현 가이드라인
25
+
26
+ ### LRU 캐시 구현
27
+ ```typescript
28
+ interface LRUCache<T> {
29
+ maxSize: number;
30
+ ttl: number;
31
+ get(key: string): T | null;
32
+ set(key: string, value: T): void;
33
+ delete(key: string): boolean;
34
+ clear(): void;
35
+ size(): number;
36
+ }
37
+ ```
38
+
39
+ ### TTL 관리
40
+ - **검색 결과**: 1시간 (3600초)
41
+ - **임베딩**: 24시간 (86400초)
42
+ - **메타데이터**: 30분 (1800초)
43
+ - **세션**: 2시간 (7200초)
44
+
45
+ ### 캐시 키 전략
46
+ - **검색 결과**: `search:${hash(query)}`
47
+ - **임베딩**: `embedding:${hash(text)}`
48
+ - **메타데이터**: `meta:${type}:${id}`
49
+ - **세션**: `session:${sessionId}`
50
+
51
+ ## 📊 캐시 성능 메트릭
52
+
53
+ ### 주요 지표
54
+ - **캐시 히트율**: 80% 이상 목표
55
+ - **캐시 크기**: 메모리 사용량 제한
56
+ - **평균 응답 시간**: 캐시된 데이터 접근 시간
57
+ - **캐시 정리 빈도**: 만료된 항목 제거 빈도
58
+
59
+ ### 모니터링
60
+ - **실시간 통계**: 현재 캐시 상태
61
+ - **히스토리 추적**: 성능 변화 추이
62
+ - **알림 설정**: 임계값 초과 시 알림
63
+ - **리포트 생성**: 정기적인 성능 리포트
64
+
65
+ ## 🚀 캐시 최적화 전략
66
+
67
+ ### 메모리 최적화
68
+ 1. **크기 제한**: 최대 캐시 크기 설정
69
+ 2. **자동 정리**: 만료된 항목 자동 제거
70
+ 3. **우선순위**: 중요한 데이터 우선 유지
71
+ 4. **압축**: 대용량 데이터 압축 저장
72
+
73
+ ### 성능 최적화
74
+ 1. **병렬 처리**: 동시 캐시 접근 처리
75
+ 2. **배치 작업**: 대량 캐시 작업 최적화
76
+ 3. **지연 로딩**: 필요 시에만 데이터 로드
77
+ 4. **예측적 캐싱**: 자주 사용될 데이터 미리 캐싱
78
+
79
+ ### 안정성 보장
80
+ 1. **에러 처리**: 캐시 실패 시 대체 방안
81
+ 2. **데이터 일관성**: 캐시와 원본 데이터 동기화
82
+ 3. **복구 메커니즘**: 캐시 손상 시 자동 복구
83
+ 4. **백업 전략**: 중요한 캐시 데이터 백업
84
+
85
+ ## 🔍 캐시 디버깅
86
+
87
+ ### 일반적인 문제
88
+ - **캐시 미스**: 캐시 키 불일치 또는 만료
89
+ - **메모리 누수**: 캐시 크기 제한 초과
90
+ - **성능 저하**: 캐시 히트율 낮음
91
+ - **데이터 불일치**: 캐시와 원본 데이터 차이
92
+
93
+ ### 디버깅 도구
94
+ - **캐시 통계**: 현재 캐시 상태 확인
95
+ - **로그 분석**: 캐시 접근 패턴 분석
96
+ - **프로파일링**: 캐시 성능 측정
97
+ - **모니터링**: 실시간 캐시 상태 추적
98
+
99
+ ## 📋 캐시 정책
100
+
101
+ ### 저장 정책
102
+ - **자동 저장**: 자주 접근하는 데이터 자동 캐싱
103
+ - **수동 저장**: 사용자 요청에 의한 캐싱
104
+ - **조건부 저장**: 특정 조건 만족 시 캐싱
105
+ - **우선순위 저장**: 중요한 데이터 우선 캐싱
106
+
107
+ ### 만료 정책
108
+ - **시간 기반**: TTL 만료 시 자동 삭제
109
+ - **크기 기반**: 캐시 크기 초과 시 오래된 항목 삭제
110
+ - **사용 기반**: 사용하지 않는 항목 우선 삭제
111
+ - **수동 삭제**: 사용자 요청에 의한 삭제
112
+
113
+ ### 동기화 정책
114
+ - **즉시 동기화**: 데이터 변경 시 즉시 캐시 업데이트
115
+ - **지연 동기화**: 주기적으로 캐시 동기화
116
+ - **조건부 동기화**: 특정 조건에서만 동기화
117
+ - **수동 동기화**: 사용자 요청에 의한 동기화
118
+
119
+ ## 🧪 캐시 테스트
120
+
121
+ ### 단위 테스트
122
+ - **기본 기능**: 캐시 저장/조회/삭제 테스트
123
+ - **TTL 테스트**: 시간 기반 만료 테스트
124
+ - **크기 제한**: 최대 크기 초과 시 동작 테스트
125
+ - **에러 처리**: 예외 상황 처리 테스트
126
+
127
+ ### 성능 테스트
128
+ - **부하 테스트**: 높은 부하에서의 캐시 성능
129
+ - **동시성 테스트**: 동시 접근 시 안정성
130
+ - **메모리 테스트**: 메모리 사용량 측정
131
+ - **응답 시간**: 캐시 접근 응답 시간 측정
132
+
133
+ ### 통합 테스트
134
+ - **전체 시스템**: 캐시와 다른 컴포넌트 연동 테스트
135
+ - **데이터 일관성**: 캐시와 원본 데이터 일치성 확인
136
+ - **장애 복구**: 캐시 실패 시 대체 방안 테스트
137
+ - **성능 영향**: 캐시 도입 시 전체 성능 영향 측정
138
+
139
+ ## 📈 캐시 모니터링
140
+
141
+ ### 실시간 모니터링
142
+ - **캐시 크기**: 현재 사용 중인 메모리
143
+ - **히트율**: 캐시 성공률
144
+ - **응답 시간**: 캐시 접근 속도
145
+ - **에러율**: 캐시 관련 에러 발생률
146
+
147
+ ### 알림 설정
148
+ - **히트율 저하**: 70% 미만 시 경고
149
+ - **메모리 사용량**: 90% 초과 시 경고
150
+ - **응답 시간**: 100ms 초과 시 경고
151
+ - **에러율**: 5% 초과 시 경고
152
+
153
+ ### 리포트 생성
154
+ - **일일 리포트**: 캐시 성능 요약
155
+ - **주간 리포트**: 성능 트렌드 분석
156
+ - **월간 리포트**: 장기 성능 변화
157
+ - **특별 리포트**: 문제 발생 시 상세 분석
158
+
159
+ ## 🎯 캐시 목표
160
+
161
+ ### 성능 목표
162
+ - **캐시 히트율**: 80% 이상
163
+ - **평균 응답 시간**: 10ms 이하
164
+ - **메모리 사용량**: 100MB 이하
165
+ - **에러율**: 1% 이하
166
+
167
+ ### 가용성 목표
168
+ - **캐시 가용성**: 99.9% 이상
169
+ - **데이터 일관성**: 99.99% 이상
170
+ - **복구 시간**: 5분 이하
171
+ - **데이터 손실**: 0%
@@ -0,0 +1,344 @@
1
+ ---
2
+ globs: *.sql,*.ts
3
+ description: 데이터베이스 스키마 및 마이그레이션 규칙
4
+ ---
5
+
6
+ # 데이터베이스 스키마 규칙
7
+
8
+ ## 📋 M1 (SQLite) 스키마
9
+
10
+ ### 메인 테이블
11
+ ```sql
12
+ -- 기억 아이템 테이블
13
+ CREATE TABLE memory_item (
14
+ id TEXT PRIMARY KEY,
15
+ type TEXT CHECK (type IN ('working','episodic','semantic','procedural')),
16
+ content TEXT NOT NULL,
17
+ importance REAL CHECK (importance >= 0 AND importance <= 1) DEFAULT 0.5,
18
+ privacy_scope TEXT CHECK (privacy_scope IN ('private','team','public')) DEFAULT 'private',
19
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
20
+ last_accessed TIMESTAMP,
21
+ pinned BOOLEAN DEFAULT FALSE,
22
+ source TEXT,
23
+ agent_id TEXT,
24
+ user_id TEXT,
25
+ project_id TEXT,
26
+ origin_trace TEXT -- JSON 형태
27
+ );
28
+
29
+ -- 임베딩 테이블
30
+ CREATE TABLE memory_embedding (
31
+ memory_id TEXT PRIMARY KEY,
32
+ embedding BLOB, -- 벡터 데이터
33
+ dim INTEGER NOT NULL,
34
+ FOREIGN KEY (memory_id) REFERENCES memory_item(id) ON DELETE CASCADE
35
+ );
36
+
37
+ -- 태그 테이블 (N:N 관계)
38
+ CREATE TABLE memory_tag (
39
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
40
+ name TEXT UNIQUE NOT NULL
41
+ );
42
+
43
+ -- 기억-태그 관계 테이블
44
+ CREATE TABLE memory_item_tag (
45
+ memory_id TEXT,
46
+ tag_id INTEGER,
47
+ PRIMARY KEY (memory_id, tag_id),
48
+ FOREIGN KEY (memory_id) REFERENCES memory_item(id) ON DELETE CASCADE,
49
+ FOREIGN KEY (tag_id) REFERENCES memory_tag(id) ON DELETE CASCADE
50
+ );
51
+
52
+ -- 기억 간 관계 테이블
53
+ CREATE TABLE memory_link (
54
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
55
+ source_id TEXT NOT NULL,
56
+ target_id TEXT NOT NULL,
57
+ relation_type TEXT CHECK (relation_type IN ('cause_of', 'derived_from', 'duplicates', 'contradicts')),
58
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
59
+ FOREIGN KEY (source_id) REFERENCES memory_item(id) ON DELETE CASCADE,
60
+ FOREIGN KEY (target_id) REFERENCES memory_item(id) ON DELETE CASCADE
61
+ );
62
+
63
+ -- 피드백 이벤트 테이블
64
+ CREATE TABLE feedback_event (
65
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
66
+ memory_id TEXT NOT NULL,
67
+ event_type TEXT CHECK (event_type IN ('used', 'edited', 'neglected', 'helpful', 'not_helpful')),
68
+ score REAL,
69
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
70
+ FOREIGN KEY (memory_id) REFERENCES memory_item(id) ON DELETE CASCADE
71
+ );
72
+
73
+ -- 작업기억 버퍼 테이블
74
+ CREATE TABLE wm_buffer (
75
+ session_id TEXT PRIMARY KEY,
76
+ items TEXT NOT NULL, -- JSON 형태
77
+ token_budget INTEGER DEFAULT 4000,
78
+ expires_at TIMESTAMP NOT NULL
79
+ );
80
+ ```
81
+
82
+ ### 인덱스 설정
83
+ ```sql
84
+ -- FTS5 텍스트 검색 인덱스
85
+ CREATE VIRTUAL TABLE memory_item_fts USING fts5(
86
+ content,
87
+ content='memory_item',
88
+ content_rowid='rowid'
89
+ );
90
+
91
+ -- VSS 벡터 검색 인덱스 (1536차원)
92
+ CREATE VIRTUAL TABLE memory_item_vss USING vss0(
93
+ embedding(1536)
94
+ );
95
+
96
+ -- 일반 인덱스
97
+ CREATE INDEX idx_memory_item_type ON memory_item(type);
98
+ CREATE INDEX idx_memory_item_created_at ON memory_item(created_at);
99
+ CREATE INDEX idx_memory_item_last_accessed ON memory_item(last_accessed);
100
+ CREATE INDEX idx_memory_item_importance ON memory_item(importance);
101
+ CREATE INDEX idx_memory_item_pinned ON memory_item(pinned);
102
+ CREATE INDEX idx_memory_item_user_id ON memory_item(user_id);
103
+ CREATE INDEX idx_memory_item_project_id ON memory_item(project_id);
104
+ ```
105
+
106
+ ## 📋 M3+ (PostgreSQL) 스키마
107
+
108
+ ### 메인 테이블
109
+ ```sql
110
+ -- 기억 아이템 테이블
111
+ CREATE TABLE memory_item (
112
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
113
+ type TEXT CHECK (type IN ('working','episodic','semantic','procedural')),
114
+ content TEXT NOT NULL,
115
+ importance REAL CHECK (importance >= 0 AND importance <= 1) DEFAULT 0.5,
116
+ privacy_scope TEXT CHECK (privacy_scope IN ('private','team','public')) DEFAULT 'private',
117
+ created_at TIMESTAMPTZ DEFAULT now(),
118
+ last_accessed TIMESTAMPTZ,
119
+ pinned BOOLEAN DEFAULT FALSE,
120
+ source TEXT,
121
+ agent_id TEXT,
122
+ user_id TEXT NOT NULL,
123
+ project_id TEXT,
124
+ origin_trace JSONB,
125
+ -- 자동 생성 컬럼
126
+ content_tsv tsvector GENERATED ALWAYS AS (to_tsvector('english', content)) STORED
127
+ );
128
+
129
+ -- 임베딩 테이블 (pgvector 사용)
130
+ CREATE TABLE memory_embedding (
131
+ memory_id UUID PRIMARY KEY,
132
+ embedding vector(1536), -- pgvector 확장
133
+ FOREIGN KEY (memory_id) REFERENCES memory_item(id) ON DELETE CASCADE
134
+ );
135
+
136
+ -- 태그 테이블
137
+ CREATE TABLE memory_tag (
138
+ id SERIAL PRIMARY KEY,
139
+ name TEXT UNIQUE NOT NULL
140
+ );
141
+
142
+ -- 기억-태그 관계 테이블
143
+ CREATE TABLE memory_item_tag (
144
+ memory_id UUID,
145
+ tag_id INTEGER,
146
+ PRIMARY KEY (memory_id, tag_id),
147
+ FOREIGN KEY (memory_id) REFERENCES memory_item(id) ON DELETE CASCADE,
148
+ FOREIGN KEY (tag_id) REFERENCES memory_tag(id) ON DELETE CASCADE
149
+ );
150
+
151
+ -- 기억 간 관계 테이블
152
+ CREATE TABLE memory_link (
153
+ id SERIAL PRIMARY KEY,
154
+ source_id UUID NOT NULL,
155
+ target_id UUID NOT NULL,
156
+ relation_type TEXT CHECK (relation_type IN ('cause_of', 'derived_from', 'duplicates', 'contradicts')),
157
+ created_at TIMESTAMPTZ DEFAULT now(),
158
+ FOREIGN KEY (source_id) REFERENCES memory_item(id) ON DELETE CASCADE,
159
+ FOREIGN KEY (target_id) REFERENCES memory_item(id) ON DELETE CASCADE
160
+ );
161
+
162
+ -- 피드백 이벤트 테이블
163
+ CREATE TABLE feedback_event (
164
+ id SERIAL PRIMARY KEY,
165
+ memory_id UUID NOT NULL,
166
+ event_type TEXT CHECK (event_type IN ('used', 'edited', 'neglected', 'helpful', 'not_helpful')),
167
+ score REAL,
168
+ created_at TIMESTAMPTZ DEFAULT now(),
169
+ FOREIGN KEY (memory_id) REFERENCES memory_item(id) ON DELETE CASCADE
170
+ );
171
+
172
+ -- 작업기억 버퍼 테이블
173
+ CREATE TABLE wm_buffer (
174
+ session_id TEXT PRIMARY KEY,
175
+ items JSONB NOT NULL,
176
+ token_budget INTEGER DEFAULT 4000,
177
+ expires_at TIMESTAMPTZ NOT NULL
178
+ );
179
+ ```
180
+
181
+ ### 인덱스 설정
182
+ ```sql
183
+ -- pgvector 인덱스
184
+ CREATE INDEX ON memory_embedding USING ivfflat (embedding vector_cosine_ops) WITH (lists = 100);
185
+
186
+ -- GIN 인덱스 (tsvector)
187
+ CREATE INDEX ON memory_item USING GIN (content_tsv);
188
+
189
+ -- 일반 인덱스
190
+ CREATE INDEX idx_memory_item_type ON memory_item(type);
191
+ CREATE INDEX idx_memory_item_created_at ON memory_item(created_at);
192
+ CREATE INDEX idx_memory_item_last_accessed ON memory_item(last_accessed);
193
+ CREATE INDEX idx_memory_item_importance ON memory_item(importance);
194
+ CREATE INDEX idx_memory_item_pinned ON memory_item(pinned);
195
+ CREATE INDEX idx_memory_item_user_id ON memory_item(user_id);
196
+ CREATE INDEX idx_memory_item_project_id ON memory_item(project_id);
197
+
198
+ -- 복합 인덱스
199
+ CREATE INDEX idx_memory_item_user_type ON memory_item(user_id, type);
200
+ CREATE INDEX idx_memory_item_project_type ON memory_item(project_id, type);
201
+ CREATE INDEX idx_memory_item_created_type ON memory_item(created_at, type);
202
+ ```
203
+
204
+ ## 🔄 마이그레이션 가이드
205
+
206
+ ### SQLite → PostgreSQL 마이그레이션
207
+ ```typescript
208
+ class DatabaseMigrator {
209
+ async migrateFromSQLite(sqlitePath: string, postgresUrl: string): Promise<void> {
210
+ // 1. SQLite에서 데이터 추출
211
+ const sqliteData = await this.extractSQLiteData(sqlitePath);
212
+
213
+ // 2. PostgreSQL 스키마 생성
214
+ await this.createPostgreSQLSchema(postgresUrl);
215
+
216
+ // 3. 데이터 변환 및 삽입
217
+ await this.transformAndInsertData(sqliteData, postgresUrl);
218
+
219
+ // 4. 임베딩 재계산
220
+ await this.recalculateEmbeddings(postgresUrl);
221
+ }
222
+
223
+ private async extractSQLiteData(sqlitePath: string): Promise<any> {
224
+ // SQLite 데이터 추출 로직
225
+ }
226
+
227
+ private async createPostgreSQLSchema(postgresUrl: string): Promise<void> {
228
+ // PostgreSQL 스키마 생성 로직
229
+ }
230
+
231
+ private async transformAndInsertData(data: any, postgresUrl: string): Promise<void> {
232
+ // 데이터 변환 및 삽입 로직
233
+ }
234
+
235
+ private async recalculateEmbeddings(postgresUrl: string): Promise<void> {
236
+ // 임베딩 재계산 로직
237
+ }
238
+ }
239
+ ```
240
+
241
+ ### 마이그레이션 스크립트
242
+ ```sql
243
+ -- 1. SQLite 데이터 추출
244
+ .mode csv
245
+ .headers on
246
+ .output memory_items.csv
247
+ SELECT * FROM memory_item;
248
+
249
+ -- 2. PostgreSQL 데이터 삽입
250
+ \copy memory_item FROM 'memory_items.csv' WITH CSV HEADER;
251
+
252
+ -- 3. 임베딩 재계산 (Python 스크립트)
253
+ -- python recalculate_embeddings.py
254
+ ```
255
+
256
+ ## 🔍 검색 최적화
257
+
258
+ ### SQLite 검색 쿼리
259
+ ```sql
260
+ -- FTS5 + VSS 결합 검색
261
+ WITH vector_search AS (
262
+ SELECT memory_id, similarity
263
+ FROM memory_item_vss
264
+ WHERE vss_search(embedding, ?)
265
+ ORDER BY similarity DESC
266
+ LIMIT 50
267
+ ),
268
+ text_search AS (
269
+ SELECT rowid, rank
270
+ FROM memory_item_fts
271
+ WHERE memory_item_fts MATCH ?
272
+ ORDER BY rank
273
+ LIMIT 50
274
+ )
275
+ SELECT mi.*,
276
+ COALESCE(vs.similarity, 0) as vector_score,
277
+ COALESCE(ts.rank, 0) as text_score
278
+ FROM memory_item mi
279
+ LEFT JOIN vector_search vs ON mi.id = vs.memory_id
280
+ LEFT JOIN text_search ts ON mi.rowid = ts.rowid
281
+ WHERE vs.memory_id IS NOT NULL OR ts.rowid IS NOT NULL
282
+ ORDER BY (vector_score + text_score) DESC;
283
+ ```
284
+
285
+ ### PostgreSQL 검색 쿼리
286
+ ```sql
287
+ -- pgvector + tsvector 결합 검색
288
+ WITH vector_search AS (
289
+ SELECT id, 1 - (embedding <=> ?) as similarity
290
+ FROM memory_embedding
291
+ ORDER BY embedding <=> ?
292
+ LIMIT 50
293
+ ),
294
+ text_search AS (
295
+ SELECT id, ts_rank(content_tsv, plainto_tsquery('english', ?)) as rank
296
+ FROM memory_item
297
+ WHERE content_tsv @@ plainto_tsquery('english', ?)
298
+ ORDER BY rank DESC
299
+ LIMIT 50
300
+ )
301
+ SELECT mi.*,
302
+ COALESCE(vs.similarity, 0) as vector_score,
303
+ COALESCE(ts.rank, 0) as text_score
304
+ FROM memory_item mi
305
+ LEFT JOIN vector_search vs ON mi.id = vs.id
306
+ LEFT JOIN text_search ts ON mi.id = ts.id
307
+ WHERE vs.id IS NOT NULL OR ts.id IS NOT NULL
308
+ ORDER BY (vector_score + text_score) DESC;
309
+ ```
310
+
311
+ ## 🧹 데이터 정리 정책
312
+
313
+ ### 망각 정책 구현
314
+ ```sql
315
+ -- 소프트 삭제 후보 선정
316
+ CREATE VIEW forget_candidates AS
317
+ SELECT id, type, created_at, last_accessed, importance, pinned,
318
+ CASE
319
+ WHEN type = 'working' AND created_at < now() - interval '2 days' THEN true
320
+ WHEN type = 'episodic' AND created_at < now() - interval '90 days' THEN true
321
+ ELSE false
322
+ END as should_forget
323
+ FROM memory_item
324
+ WHERE pinned = false
325
+ AND (type = 'working' OR type = 'episodic');
326
+
327
+ -- 하드 삭제 실행
328
+ DELETE FROM memory_item
329
+ WHERE id IN (
330
+ SELECT id FROM forget_candidates
331
+ WHERE should_forget = true
332
+ );
333
+ ```
334
+
335
+ ### 백업 및 복원
336
+ ```sql
337
+ -- 백업
338
+ pg_dump -h localhost -U username -d memory_db > backup.sql
339
+
340
+ -- 복원
341
+ psql -h localhost -U username -d memory_db < backup.sql
342
+ ```
343
+
344
+