memento-mcp-server 0.1.0 โ†’ 1.7.1

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 (560) hide show
  1. package/INSTALL.en.md +303 -303
  2. package/INSTALL.md +303 -303
  3. package/README.en.md +331 -330
  4. package/README.md +432 -427
  5. package/dist/algorithms/hybrid-search-engine.d.ts +114 -44
  6. package/dist/algorithms/hybrid-search-engine.d.ts.map +1 -1
  7. package/dist/algorithms/hybrid-search-engine.js +261 -235
  8. package/dist/algorithms/hybrid-search-engine.js.map +1 -1
  9. package/dist/algorithms/search-engine.d.ts +2 -14
  10. package/dist/algorithms/search-engine.d.ts.map +1 -1
  11. package/dist/algorithms/search-engine.js +43 -35
  12. package/dist/algorithms/search-engine.js.map +1 -1
  13. package/dist/algorithms/vector-search-engine-migration.d.ts +67 -0
  14. package/dist/algorithms/vector-search-engine-migration.d.ts.map +1 -0
  15. package/dist/algorithms/vector-search-engine-migration.js +196 -0
  16. package/dist/algorithms/vector-search-engine-migration.js.map +1 -0
  17. package/dist/algorithms/vector-search-engine-refactored.d.ts +56 -0
  18. package/dist/algorithms/vector-search-engine-refactored.d.ts.map +1 -0
  19. package/dist/algorithms/vector-search-engine-refactored.js +101 -0
  20. package/dist/algorithms/vector-search-engine-refactored.js.map +1 -0
  21. package/dist/algorithms/vector-search-engine.d.ts +9 -2
  22. package/dist/algorithms/vector-search-engine.d.ts.map +1 -1
  23. package/dist/algorithms/vector-search-engine.js +245 -121
  24. package/dist/algorithms/vector-search-engine.js.map +1 -1
  25. package/dist/client/index.d.ts.map +1 -1
  26. package/dist/client/index.js +34 -11
  27. package/dist/client/index.js.map +1 -1
  28. package/dist/config/environment.d.ts +26 -0
  29. package/dist/config/environment.d.ts.map +1 -0
  30. package/dist/config/environment.js +103 -0
  31. package/dist/config/environment.js.map +1 -0
  32. package/dist/config/index.d.ts.map +1 -1
  33. package/dist/config/index.js +29 -50
  34. package/dist/config/index.js.map +1 -1
  35. package/dist/config/vector-search.config.d.ts +25 -0
  36. package/dist/config/vector-search.config.d.ts.map +1 -0
  37. package/dist/config/vector-search.config.js +40 -0
  38. package/dist/config/vector-search.config.js.map +1 -0
  39. package/dist/database/init.d.ts.map +1 -1
  40. package/dist/database/init.js +154 -17
  41. package/dist/database/init.js.map +1 -1
  42. package/dist/database/migrate.d.ts +2 -1
  43. package/dist/database/migrate.d.ts.map +1 -1
  44. package/dist/database/migrate.js +191 -18
  45. package/dist/database/migrate.js.map +1 -1
  46. package/dist/database/schema.sql +234 -159
  47. package/dist/factories/hybrid-search.factory.d.ts +20 -0
  48. package/dist/factories/hybrid-search.factory.d.ts.map +1 -0
  49. package/dist/factories/hybrid-search.factory.js +57 -0
  50. package/dist/factories/hybrid-search.factory.js.map +1 -0
  51. package/dist/factories/spaced-repetition.factory.d.ts +48 -0
  52. package/dist/factories/spaced-repetition.factory.d.ts.map +1 -0
  53. package/dist/factories/spaced-repetition.factory.js +187 -0
  54. package/dist/factories/spaced-repetition.factory.js.map +1 -0
  55. package/dist/factories/vector-search.factory.d.ts +25 -0
  56. package/dist/factories/vector-search.factory.d.ts.map +1 -0
  57. package/dist/factories/vector-search.factory.js +47 -0
  58. package/dist/factories/vector-search.factory.js.map +1 -0
  59. package/dist/interfaces/database.interface.d.ts +36 -0
  60. package/dist/interfaces/database.interface.d.ts.map +1 -0
  61. package/dist/interfaces/database.interface.js +6 -0
  62. package/dist/interfaces/database.interface.js.map +1 -0
  63. package/dist/interfaces/spaced-repetition.interface.d.ts +63 -0
  64. package/dist/interfaces/spaced-repetition.interface.d.ts.map +1 -0
  65. package/dist/interfaces/spaced-repetition.interface.js +6 -0
  66. package/dist/interfaces/spaced-repetition.interface.js.map +1 -0
  67. package/dist/repositories/vector-performance.repository.d.ts +25 -0
  68. package/dist/repositories/vector-performance.repository.d.ts.map +1 -0
  69. package/dist/repositories/vector-performance.repository.js +134 -0
  70. package/dist/repositories/vector-performance.repository.js.map +1 -0
  71. package/dist/repositories/vector-search.repository.d.ts +43 -0
  72. package/dist/repositories/vector-search.repository.d.ts.map +1 -0
  73. package/dist/repositories/vector-search.repository.js +377 -0
  74. package/dist/repositories/vector-search.repository.js.map +1 -0
  75. package/dist/server/http-server.d.ts.map +1 -1
  76. package/dist/server/http-server.js +25 -24
  77. package/dist/server/http-server.js.map +1 -1
  78. package/dist/server/index.d.ts +1 -0
  79. package/dist/server/index.d.ts.map +1 -1
  80. package/dist/server/index.js +3 -1
  81. package/dist/server/index.js.map +1 -1
  82. package/dist/services/alert-notification-service.d.ts +16 -0
  83. package/dist/services/alert-notification-service.d.ts.map +1 -0
  84. package/dist/services/alert-notification-service.js +44 -0
  85. package/dist/services/alert-notification-service.js.map +1 -0
  86. package/dist/services/async-optimizer.d.ts +62 -8
  87. package/dist/services/async-optimizer.d.ts.map +1 -1
  88. package/dist/services/async-optimizer.js +137 -8
  89. package/dist/services/async-optimizer.js.map +1 -1
  90. package/dist/services/batch-scheduler.d.ts +6 -0
  91. package/dist/services/batch-scheduler.d.ts.map +1 -1
  92. package/dist/services/batch-scheduler.js +59 -19
  93. package/dist/services/batch-scheduler.js.map +1 -1
  94. package/dist/services/cache-service.d.ts +32 -0
  95. package/dist/services/cache-service.d.ts.map +1 -1
  96. package/dist/services/cache-service.js +81 -6
  97. package/dist/services/cache-service.js.map +1 -1
  98. package/dist/services/database-optimizer.js +63 -63
  99. package/dist/services/database-optimizer.js.map +1 -1
  100. package/dist/services/embedding-migration-service.d.ts +24 -0
  101. package/dist/services/embedding-migration-service.d.ts.map +1 -0
  102. package/dist/services/embedding-migration-service.js +360 -0
  103. package/dist/services/embedding-migration-service.js.map +1 -0
  104. package/dist/services/embedding-provider-factory.d.ts +12 -5
  105. package/dist/services/embedding-provider-factory.d.ts.map +1 -1
  106. package/dist/services/embedding-provider-factory.js +107 -26
  107. package/dist/services/embedding-provider-factory.js.map +1 -1
  108. package/dist/services/forgetting-policy-service.js +17 -17
  109. package/dist/services/gemini-embedding-service.d.ts +1 -1
  110. package/dist/services/gemini-embedding-service.d.ts.map +1 -1
  111. package/dist/services/gemini-embedding-service.js +25 -18
  112. package/dist/services/gemini-embedding-service.js.map +1 -1
  113. package/dist/services/memory-embedding-service.d.ts +8 -0
  114. package/dist/services/memory-embedding-service.d.ts.map +1 -1
  115. package/dist/services/memory-embedding-service.js +180 -71
  116. package/dist/services/memory-embedding-service.js.map +1 -1
  117. package/dist/services/migration-history-service.d.ts +14 -0
  118. package/dist/services/migration-history-service.d.ts.map +1 -0
  119. package/dist/services/migration-history-service.js +270 -0
  120. package/dist/services/migration-history-service.js.map +1 -0
  121. package/dist/services/migration-monitor-service.d.ts +24 -0
  122. package/dist/services/migration-monitor-service.d.ts.map +1 -0
  123. package/dist/services/migration-monitor-service.js +93 -0
  124. package/dist/services/migration-monitor-service.js.map +1 -0
  125. package/dist/services/model-availability-service.d.ts +22 -0
  126. package/dist/services/model-availability-service.d.ts.map +1 -0
  127. package/dist/services/model-availability-service.js +140 -0
  128. package/dist/services/model-availability-service.js.map +1 -0
  129. package/dist/services/openai-embedding-service.d.ts +36 -0
  130. package/dist/services/openai-embedding-service.d.ts.map +1 -0
  131. package/dist/services/openai-embedding-service.js +192 -0
  132. package/dist/services/openai-embedding-service.js.map +1 -0
  133. package/dist/services/performance-monitor.d.ts +154 -10
  134. package/dist/services/performance-monitor.d.ts.map +1 -1
  135. package/dist/services/performance-monitor.js +446 -60
  136. package/dist/services/performance-monitor.js.map +1 -1
  137. package/dist/services/spaced-repetition/interval-calculation.service.d.ts +38 -0
  138. package/dist/services/spaced-repetition/interval-calculation.service.d.ts.map +1 -0
  139. package/dist/services/spaced-repetition/interval-calculation.service.js +105 -0
  140. package/dist/services/spaced-repetition/interval-calculation.service.js.map +1 -0
  141. package/dist/services/spaced-repetition/optimal-interval.service.d.ts +56 -0
  142. package/dist/services/spaced-repetition/optimal-interval.service.d.ts.map +1 -0
  143. package/dist/services/spaced-repetition/optimal-interval.service.js +163 -0
  144. package/dist/services/spaced-repetition/optimal-interval.service.js.map +1 -0
  145. package/dist/services/spaced-repetition/performance-analysis.service.d.ts +48 -0
  146. package/dist/services/spaced-repetition/performance-analysis.service.d.ts.map +1 -0
  147. package/dist/services/spaced-repetition/performance-analysis.service.js +174 -0
  148. package/dist/services/spaced-repetition/performance-analysis.service.js.map +1 -0
  149. package/dist/services/spaced-repetition/priority-calculation.service.d.ts +53 -0
  150. package/dist/services/spaced-repetition/priority-calculation.service.d.ts.map +1 -0
  151. package/dist/services/spaced-repetition/priority-calculation.service.js +161 -0
  152. package/dist/services/spaced-repetition/priority-calculation.service.js.map +1 -0
  153. package/dist/services/spaced-repetition/recall-probability.service.d.ts +36 -0
  154. package/dist/services/spaced-repetition/recall-probability.service.d.ts.map +1 -0
  155. package/dist/services/spaced-repetition/recall-probability.service.js +88 -0
  156. package/dist/services/spaced-repetition/recall-probability.service.js.map +1 -0
  157. package/dist/services/spaced-repetition/review-scheduling.service.d.ts +43 -0
  158. package/dist/services/spaced-repetition/review-scheduling.service.d.ts.map +1 -0
  159. package/dist/services/spaced-repetition/review-scheduling.service.js +130 -0
  160. package/dist/services/spaced-repetition/review-scheduling.service.js.map +1 -0
  161. package/dist/services/spaced-repetition/spaced-repetition-container.d.ts +69 -0
  162. package/dist/services/spaced-repetition/spaced-repetition-container.d.ts.map +1 -0
  163. package/dist/services/spaced-repetition/spaced-repetition-container.js +136 -0
  164. package/dist/services/spaced-repetition/spaced-repetition-container.js.map +1 -0
  165. package/dist/services/unified-embedding-service.d.ts +3 -0
  166. package/dist/services/unified-embedding-service.d.ts.map +1 -1
  167. package/dist/services/unified-embedding-service.js +58 -62
  168. package/dist/services/unified-embedding-service.js.map +1 -1
  169. package/dist/services/vector-compatibility-service.d.ts +68 -0
  170. package/dist/services/vector-compatibility-service.d.ts.map +1 -0
  171. package/dist/services/vector-compatibility-service.js +373 -0
  172. package/dist/services/vector-compatibility-service.js.map +1 -0
  173. package/dist/services/vector-search/vector-index-manager.d.ts +27 -0
  174. package/dist/services/vector-search/vector-index-manager.d.ts.map +1 -0
  175. package/dist/services/vector-search/vector-index-manager.js +66 -0
  176. package/dist/services/vector-search/vector-index-manager.js.map +1 -0
  177. package/dist/services/vector-search/vector-performance-tester.d.ts +30 -0
  178. package/dist/services/vector-search/vector-performance-tester.d.ts.map +1 -0
  179. package/dist/services/vector-search/vector-performance-tester.js +87 -0
  180. package/dist/services/vector-search/vector-performance-tester.js.map +1 -0
  181. package/dist/services/vector-search/vector-search-container.d.ts +41 -0
  182. package/dist/services/vector-search/vector-search-container.d.ts.map +1 -0
  183. package/dist/services/vector-search/vector-search-container.js +74 -0
  184. package/dist/services/vector-search/vector-search-container.js.map +1 -0
  185. package/dist/services/vector-search/vector-search-facade.d.ts +63 -0
  186. package/dist/services/vector-search/vector-search-facade.d.ts.map +1 -0
  187. package/dist/services/vector-search/vector-search-facade.js +91 -0
  188. package/dist/services/vector-search/vector-search-facade.js.map +1 -0
  189. package/dist/services/vector-search/vector-search-result-normalizer.d.ts +6 -0
  190. package/dist/services/vector-search/vector-search-result-normalizer.d.ts.map +1 -0
  191. package/dist/services/vector-search/vector-search-result-normalizer.js +65 -0
  192. package/dist/services/vector-search/vector-search-result-normalizer.js.map +1 -0
  193. package/dist/services/vector-search/vector-search.service.d.ts +33 -0
  194. package/dist/services/vector-search/vector-search.service.d.ts.map +1 -0
  195. package/dist/services/vector-search/vector-search.service.js +149 -0
  196. package/dist/services/vector-search/vector-search.service.js.map +1 -0
  197. package/dist/tools/forget-tool.js +14 -14
  198. package/dist/tools/pin-tool.js +14 -14
  199. package/dist/tools/unpin-tool.js +21 -21
  200. package/dist/types/alerts.types.d.ts +26 -0
  201. package/dist/types/alerts.types.d.ts.map +1 -0
  202. package/dist/types/alerts.types.js +2 -0
  203. package/dist/types/alerts.types.js.map +1 -0
  204. package/dist/types/embedding-provider-monitoring.types.d.ts +24 -0
  205. package/dist/types/embedding-provider-monitoring.types.d.ts.map +1 -0
  206. package/dist/types/embedding-provider-monitoring.types.js +2 -0
  207. package/dist/types/embedding-provider-monitoring.types.js.map +1 -0
  208. package/dist/types/embedding.types.d.ts +36 -1
  209. package/dist/types/embedding.types.d.ts.map +1 -1
  210. package/dist/types/migration.types.d.ts +131 -0
  211. package/dist/types/migration.types.d.ts.map +1 -0
  212. package/dist/types/migration.types.js +6 -0
  213. package/dist/types/migration.types.js.map +1 -0
  214. package/dist/types/spaced-repetition.types.d.ts +61 -0
  215. package/dist/types/spaced-repetition.types.d.ts.map +1 -0
  216. package/dist/types/spaced-repetition.types.js +6 -0
  217. package/dist/types/spaced-repetition.types.js.map +1 -0
  218. package/dist/types/vector-search.types.d.ts +96 -0
  219. package/dist/types/vector-search.types.d.ts.map +1 -0
  220. package/dist/types/vector-search.types.js +2 -0
  221. package/dist/types/vector-search.types.js.map +1 -0
  222. package/dist/utils/configuration-validator.d.ts +23 -0
  223. package/dist/utils/configuration-validator.d.ts.map +1 -0
  224. package/dist/utils/configuration-validator.js +102 -0
  225. package/dist/utils/configuration-validator.js.map +1 -0
  226. package/dist/utils/database.d.ts.map +1 -1
  227. package/dist/utils/database.js +101 -95
  228. package/dist/utils/database.js.map +1 -1
  229. package/dist/utils/environment-check.d.ts +8 -0
  230. package/dist/utils/environment-check.d.ts.map +1 -0
  231. package/dist/utils/environment-check.js +25 -0
  232. package/dist/utils/environment-check.js.map +1 -0
  233. package/dist/utils/logger.d.ts +8 -0
  234. package/dist/utils/logger.d.ts.map +1 -0
  235. package/dist/utils/logger.js +33 -0
  236. package/dist/utils/logger.js.map +1 -0
  237. package/package.json +139 -125
  238. package/scripts/auto-setup.js +234 -234
  239. package/scripts/backup-daily.bat +28 -28
  240. package/scripts/backup-embeddings.js +108 -108
  241. package/scripts/check-db-integrity.js +93 -93
  242. package/scripts/debug-embeddings.js +184 -184
  243. package/scripts/direct-sql-migration.sql +36 -36
  244. package/scripts/docker-migration.sh +105 -105
  245. package/scripts/fix-migration.js +93 -93
  246. package/scripts/fix-vector-dimensions.js +206 -206
  247. package/scripts/migrate-embedding-data.js +307 -307
  248. package/scripts/regenerate-embeddings.js +144 -144
  249. package/scripts/restore-legacy.ps1 +60 -60
  250. package/scripts/run-migration.js +122 -122
  251. package/scripts/safe-migration.js +150 -150
  252. package/scripts/simple-migrate.js +41 -41
  253. package/scripts/simple-update.js +123 -123
  254. package/src/database/schema.sql +234 -159
  255. package/.cursor/rules/cache-management.mdc +0 -171
  256. package/.cursor/rules/database-schema.mdc +0 -344
  257. package/.cursor/rules/deployment.mdc +0 -596
  258. package/.cursor/rules/error-logging.mdc +0 -298
  259. package/.cursor/rules/forgetting-algorithms.mdc +0 -426
  260. package/.cursor/rules/http-server.mdc +0 -432
  261. package/.cursor/rules/hybrid-search.mdc +0 -424
  262. package/.cursor/rules/implementation.mdc +0 -369
  263. package/.cursor/rules/lightweight-embedding.mdc +0 -178
  264. package/.cursor/rules/mcp-client-development.mdc +0 -0
  265. package/.cursor/rules/mcp-server-development.mdc +0 -0
  266. package/.cursor/rules/mcp-tools-architecture.mdc +0 -205
  267. package/.cursor/rules/memento-memory-rule.mdc +0 -8
  268. package/.cursor/rules/memento-project-overview.mdc +0 -0
  269. package/.cursor/rules/memory-algorithms.mdc +0 -502
  270. package/.cursor/rules/monitoring.mdc +0 -622
  271. package/.cursor/rules/performance-alerts.mdc +0 -537
  272. package/.cursor/rules/performance-monitoring.mdc +0 -345
  273. package/.cursor/rules/performance-optimization.mdc +0 -563
  274. package/.cursor/rules/project-structure.mdc +0 -310
  275. package/.cursor/rules/testing.mdc +0 -473
  276. package/.dockerignore +0 -15
  277. package/.eslintrc.json +0 -34
  278. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -51
  279. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -45
  280. package/.github/ISSUE_TEMPLATE/question.md +0 -31
  281. package/.github/PULL_REQUEST_TEMPLATE.md +0 -97
  282. package/AGENTS.md +0 -28
  283. package/CHANGELOG.md +0 -416
  284. package/CODE_OF_CONDUCT.md +0 -62
  285. package/CONTRIBUTING.md +0 -165
  286. package/DOCKER_SETUP_GUIDE.md +0 -84
  287. package/Dockerfile +0 -90
  288. package/backup/legacy-removal-20250930-201816/http-server-legacy.ts +0 -1068
  289. package/backup/legacy-removal-20250930-201816/rollback-to-legacy.ps1 +0 -46
  290. package/backup/legacy-removal-20250930-201816/rollback-to-legacy.sh +0 -48
  291. package/dist/server/index-backup.d.ts +0 -5
  292. package/dist/server/index-backup.d.ts.map +0 -1
  293. package/dist/server/index-backup.js +0 -793
  294. package/dist/server/index-backup.js.map +0 -1
  295. package/dist/server/index-refactored.d.ts +0 -6
  296. package/dist/server/index-refactored.d.ts.map +0 -1
  297. package/dist/server/index-refactored.js +0 -206
  298. package/dist/server/index-refactored.js.map +0 -1
  299. package/dist/services/performance-monitoring-integration.d.ts +0 -77
  300. package/dist/services/performance-monitoring-integration.d.ts.map +0 -1
  301. package/dist/services/performance-monitoring-integration.js +0 -177
  302. package/dist/services/performance-monitoring-integration.js.map +0 -1
  303. package/dist/test/debug-http-v2.d.ts +0 -5
  304. package/dist/test/debug-http-v2.d.ts.map +0 -1
  305. package/dist/test/debug-http-v2.js +0 -28
  306. package/dist/test/debug-http-v2.js.map +0 -1
  307. package/dist/test/performance-benchmark.d.ts +0 -57
  308. package/dist/test/performance-benchmark.d.ts.map +0 -1
  309. package/dist/test/performance-benchmark.js +0 -427
  310. package/dist/test/performance-benchmark.js.map +0 -1
  311. package/dist/test/test-alerts-direct.d.ts +0 -7
  312. package/dist/test/test-alerts-direct.d.ts.map +0 -1
  313. package/dist/test/test-alerts-direct.js +0 -101
  314. package/dist/test/test-alerts-direct.js.map +0 -1
  315. package/dist/test/test-batch-scheduler.d.ts +0 -2
  316. package/dist/test/test-batch-scheduler.d.ts.map +0 -1
  317. package/dist/test/test-batch-scheduler.js +0 -156
  318. package/dist/test/test-batch-scheduler.js.map +0 -1
  319. package/dist/test/test-client.d.ts +0 -5
  320. package/dist/test/test-client.d.ts.map +0 -1
  321. package/dist/test/test-client.js +0 -86
  322. package/dist/test/test-client.js.map +0 -1
  323. package/dist/test/test-embedding.d.ts +0 -6
  324. package/dist/test/test-embedding.d.ts.map +0 -1
  325. package/dist/test/test-embedding.js +0 -142
  326. package/dist/test/test-embedding.js.map +0 -1
  327. package/dist/test/test-error-logging.d.ts +0 -7
  328. package/dist/test/test-error-logging.d.ts.map +0 -1
  329. package/dist/test/test-error-logging.js +0 -105
  330. package/dist/test/test-error-logging.js.map +0 -1
  331. package/dist/test/test-forgetting.d.ts +0 -6
  332. package/dist/test/test-forgetting.d.ts.map +0 -1
  333. package/dist/test/test-forgetting.js +0 -154
  334. package/dist/test/test-forgetting.js.map +0 -1
  335. package/dist/test/test-gemini-embedding.d.ts +0 -7
  336. package/dist/test/test-gemini-embedding.d.ts.map +0 -1
  337. package/dist/test/test-gemini-embedding.js +0 -134
  338. package/dist/test/test-gemini-embedding.js.map +0 -1
  339. package/dist/test/test-http-server-v2-simple.d.ts +0 -6
  340. package/dist/test/test-http-server-v2-simple.d.ts.map +0 -1
  341. package/dist/test/test-http-server-v2-simple.js +0 -131
  342. package/dist/test/test-http-server-v2-simple.js.map +0 -1
  343. package/dist/test/test-http-server-v2.d.ts +0 -7
  344. package/dist/test/test-http-server-v2.d.ts.map +0 -1
  345. package/dist/test/test-http-server-v2.js +0 -529
  346. package/dist/test/test-http-server-v2.js.map +0 -1
  347. package/dist/test/test-lightweight-embedding.d.ts +0 -6
  348. package/dist/test/test-lightweight-embedding.d.ts.map +0 -1
  349. package/dist/test/test-lightweight-embedding.js +0 -189
  350. package/dist/test/test-lightweight-embedding.js.map +0 -1
  351. package/dist/test/test-m1-completion.d.ts +0 -7
  352. package/dist/test/test-m1-completion.d.ts.map +0 -1
  353. package/dist/test/test-m1-completion.js +0 -124
  354. package/dist/test/test-m1-completion.js.map +0 -1
  355. package/dist/test/test-memory-injection-prompt.d.ts +0 -2
  356. package/dist/test/test-memory-injection-prompt.d.ts.map +0 -1
  357. package/dist/test/test-memory-injection-prompt.js +0 -299
  358. package/dist/test/test-memory-injection-prompt.js.map +0 -1
  359. package/dist/test/test-performance-alerts.d.ts +0 -7
  360. package/dist/test/test-performance-alerts.d.ts.map +0 -1
  361. package/dist/test/test-performance-alerts.js +0 -109
  362. package/dist/test/test-performance-alerts.js.map +0 -1
  363. package/dist/test/test-performance-monitor.d.ts +0 -2
  364. package/dist/test/test-performance-monitor.d.ts.map +0 -1
  365. package/dist/test/test-performance-monitor.js +0 -182
  366. package/dist/test/test-performance-monitor.js.map +0 -1
  367. package/dist/test/test-performance-monitoring.d.ts +0 -6
  368. package/dist/test/test-performance-monitoring.d.ts.map +0 -1
  369. package/dist/test/test-performance-monitoring.js +0 -156
  370. package/dist/test/test-performance-monitoring.js.map +0 -1
  371. package/dist/test/test-search.d.ts +0 -5
  372. package/dist/test/test-search.d.ts.map +0 -1
  373. package/dist/test/test-search.js +0 -141
  374. package/dist/test/test-search.js.map +0 -1
  375. package/dist/test/test-simple-alerts.d.ts +0 -6
  376. package/dist/test/test-simple-alerts.d.ts.map +0 -1
  377. package/dist/test/test-simple-alerts.js +0 -106
  378. package/dist/test/test-simple-alerts.js.map +0 -1
  379. package/dist/test/test-vector-search-engine.d.ts +0 -2
  380. package/dist/test/test-vector-search-engine.d.ts.map +0 -1
  381. package/dist/test/test-vector-search-engine.js +0 -225
  382. package/dist/test/test-vector-search-engine.js.map +0 -1
  383. package/docker-compose.dev.yml +0 -50
  384. package/docker-compose.prod.yml +0 -77
  385. package/docker-compose.yml +0 -43
  386. package/docs/en/Memento-Goals.md +0 -217
  387. package/docs/en/Memento-M1-DetailSpecs.md +0 -130
  388. package/docs/en/Memento-Milestones.md +0 -135
  389. package/docs/en/Search-Ranking-Memory-Decay-Formulas.md +0 -177
  390. package/docs/en/api-reference.md +0 -658
  391. package/docs/en/architecture.md +0 -1302
  392. package/docs/en/developer-guide.md +0 -1005
  393. package/docs/en/user-manual.md +0 -595
  394. package/docs/ko/Memento-Goals.md +0 -217
  395. package/docs/ko/Memento-M1-DetailSpecs.md +0 -130
  396. package/docs/ko/Memento-Milestones.md +0 -134
  397. package/docs/ko/Search-Ranking-Memory-Decay-Formulas.md +0 -177
  398. package/docs/ko/api-reference.md +0 -658
  399. package/docs/ko/architecture.md +0 -1302
  400. package/docs/ko/developer-guide.md +0 -1006
  401. package/docs/ko/embedding-api-reference.md +0 -122
  402. package/docs/ko/embedding-configuration.md +0 -62
  403. package/docs/ko/embedding-performance-benchmark.md +0 -62
  404. package/docs/ko/embedding-service-guide.md +0 -314
  405. package/docs/ko/user-manual.md +0 -595
  406. package/env.example +0 -49
  407. package/install.sh +0 -191
  408. package/mcp-http-client.js +0 -218
  409. package/mcp.json +0 -0
  410. package/packages/mcp-client/docs/API-REFERENCE.md +0 -560
  411. package/packages/mcp-client/docs/BEST-PRACTICES.md +0 -564
  412. package/packages/mcp-client/docs/MIGRATION-GUIDE.md +0 -344
  413. package/packages/mcp-client/docs/PERFORMANCE-GUIDE.md +0 -476
  414. package/packages/mcp-client/docs/TROUBLESHOOTING.md +0 -564
  415. package/packages/mcp-client/package-lock.json +0 -907
  416. package/packages/mcp-client/package.json +0 -58
  417. package/packages/mcp-client/performance-optimizer.js +0 -428
  418. package/packages/mcp-client/test-basic.js +0 -65
  419. package/packages/mcp-client/test-integration.js +0 -366
  420. package/src/algorithms/forgetting-algorithm.spec.ts +0 -538
  421. package/src/algorithms/forgetting-algorithm.ts +0 -243
  422. package/src/algorithms/hybrid-search-engine.spec.ts +0 -484
  423. package/src/algorithms/hybrid-search-engine.ts +0 -489
  424. package/src/algorithms/search-engine.spec.ts +0 -429
  425. package/src/algorithms/search-engine.ts +0 -392
  426. package/src/algorithms/search-ranking.spec.ts +0 -293
  427. package/src/algorithms/search-ranking.ts +0 -407
  428. package/src/algorithms/spaced-repetition.spec.ts +0 -510
  429. package/src/algorithms/spaced-repetition.ts +0 -238
  430. package/src/algorithms/vector-search-engine.ts +0 -505
  431. package/src/client/index.spec.ts +0 -427
  432. package/src/client/index.ts +0 -222
  433. package/src/config/index.spec.ts +0 -339
  434. package/src/config/index.ts +0 -106
  435. package/src/database/init.spec.ts +0 -239
  436. package/src/database/init.ts +0 -130
  437. package/src/database/migrate.spec.ts +0 -293
  438. package/src/database/migrate.ts +0 -94
  439. package/src/database/migrations/001_add_embedding_metadata.sql +0 -29
  440. package/src/npm-client/context-injector.spec.ts +0 -335
  441. package/src/npm-client/context-injector.ts +0 -412
  442. package/src/npm-client/index.spec.ts +0 -108
  443. package/src/npm-client/index.ts +0 -96
  444. package/src/npm-client/memento-client.spec.ts +0 -549
  445. package/src/npm-client/memento-client.ts +0 -501
  446. package/src/npm-client/memory-manager.spec.ts +0 -374
  447. package/src/npm-client/memory-manager.ts +0 -414
  448. package/src/npm-client/types.spec.ts +0 -427
  449. package/src/npm-client/types.ts +0 -296
  450. package/src/npm-client/utils.spec.ts +0 -355
  451. package/src/npm-client/utils.ts +0 -423
  452. package/src/scripts/copy-assets.js +0 -37
  453. package/src/server/http-server.spec.ts +0 -648
  454. package/src/server/http-server.ts +0 -1030
  455. package/src/server/index-backup.ts +0 -875
  456. package/src/server/index-refactored.ts +0 -237
  457. package/src/server/index.spec.ts +0 -281
  458. package/src/server/index.ts +0 -347
  459. package/src/server/simple-mcp-server.spec.ts +0 -207
  460. package/src/server/simple-mcp-server.ts +0 -173
  461. package/src/services/async-optimizer.spec.ts +0 -569
  462. package/src/services/async-optimizer.ts +0 -484
  463. package/src/services/batch-scheduler.ts +0 -759
  464. package/src/services/cache-service.spec.ts +0 -372
  465. package/src/services/cache-service.ts +0 -434
  466. package/src/services/database-optimizer.spec.ts +0 -344
  467. package/src/services/database-optimizer.ts +0 -450
  468. package/src/services/embedding-provider-factory.ts +0 -173
  469. package/src/services/embedding-service.spec.ts +0 -342
  470. package/src/services/embedding-service.ts +0 -333
  471. package/src/services/error-logging-service.spec.ts +0 -416
  472. package/src/services/error-logging-service.ts +0 -383
  473. package/src/services/forgetting-policy-service.spec.ts +0 -140
  474. package/src/services/forgetting-policy-service.ts +0 -334
  475. package/src/services/gemini-embedding-service.spec.ts +0 -463
  476. package/src/services/gemini-embedding-service.ts +0 -283
  477. package/src/services/lightweight-embedding-service.spec.ts +0 -458
  478. package/src/services/lightweight-embedding-service.ts +0 -324
  479. package/src/services/memory-embedding-service.spec.ts +0 -417
  480. package/src/services/memory-embedding-service.ts +0 -289
  481. package/src/services/minilm-embedding-service.spec.ts +0 -104
  482. package/src/services/minilm-embedding-service.ts +0 -262
  483. package/src/services/performance-alert-service.spec.ts +0 -517
  484. package/src/services/performance-alert-service.ts +0 -477
  485. package/src/services/performance-monitor.spec.ts +0 -401
  486. package/src/services/performance-monitor.ts +0 -532
  487. package/src/services/performance-monitoring-integration.spec.ts +0 -478
  488. package/src/services/performance-monitoring-integration.ts.bak +0 -276
  489. package/src/services/unified-embedding-service.spec.ts +0 -224
  490. package/src/services/unified-embedding-service.ts +0 -255
  491. package/src/test/debug-http-v2.ts +0 -30
  492. package/src/test/embedding-integration-test.spec.ts +0 -295
  493. package/src/test/embedding-integration-test.ts +0 -295
  494. package/src/test/embedding-performance-benchmark.spec.ts +0 -354
  495. package/src/test/embedding-performance-benchmark.ts +0 -312
  496. package/src/test/performance-benchmark.ts +0 -565
  497. package/src/test/test-alerts-direct.ts +0 -136
  498. package/src/test/test-batch-scheduler-simple.spec.ts +0 -122
  499. package/src/test/test-batch-scheduler.spec.ts +0 -453
  500. package/src/test/test-batch-scheduler.ts +0 -182
  501. package/src/test/test-client.ts +0 -97
  502. package/src/test/test-embedding.ts +0 -153
  503. package/src/test/test-error-handling.spec.ts +0 -575
  504. package/src/test/test-error-logging.ts +0 -117
  505. package/src/test/test-forgetting.ts +0 -162
  506. package/src/test/test-gemini-embedding.ts +0 -159
  507. package/src/test/test-http-server-v2-simple.ts +0 -147
  508. package/src/test/test-http-server-v2.ts +0 -586
  509. package/src/test/test-hybrid-search-engine.spec.ts +0 -521
  510. package/src/test/test-integration-fixed.spec.ts +0 -612
  511. package/src/test/test-integration.spec.ts +0 -463
  512. package/src/test/test-lightweight-embedding.ts +0 -208
  513. package/src/test/test-m1-completion.spec.ts +0 -614
  514. package/src/test/test-m1-completion.ts +0 -141
  515. package/src/test/test-m1-integration.spec.ts +0 -514
  516. package/src/test/test-memory-injection-prompt.spec.ts +0 -650
  517. package/src/test/test-memory-injection-prompt.ts +0 -391
  518. package/src/test/test-performance-alerts.ts +0 -125
  519. package/src/test/test-performance-monitor-updates.spec.ts +0 -490
  520. package/src/test/test-performance-monitor.spec.ts +0 -284
  521. package/src/test/test-performance-monitor.ts +0 -228
  522. package/src/test/test-performance-monitoring.ts +0 -171
  523. package/src/test/test-search.ts +0 -151
  524. package/src/test/test-simple-alerts.ts +0 -136
  525. package/src/test/test-vector-search-engine.spec.ts +0 -408
  526. package/src/test/test-vector-search-engine.ts +0 -303
  527. package/src/tools/base-tool.ts +0 -189
  528. package/src/tools/cleanup-memory-tool.ts +0 -77
  529. package/src/tools/database-optimize-tool.ts +0 -79
  530. package/src/tools/error-stats.ts +0 -119
  531. package/src/tools/forget-tool.spec.ts +0 -613
  532. package/src/tools/forget-tool.ts +0 -454
  533. package/src/tools/forgetting-stats-tool.ts +0 -47
  534. package/src/tools/index.ts +0 -71
  535. package/src/tools/memory-injection-prompt.ts +0 -257
  536. package/src/tools/performance-alerts.ts +0 -226
  537. package/src/tools/performance-stats-tool.ts +0 -48
  538. package/src/tools/pin-tool.spec.ts +0 -497
  539. package/src/tools/pin-tool.ts +0 -277
  540. package/src/tools/recall-tool.spec.ts +0 -475
  541. package/src/tools/recall-tool.ts +0 -389
  542. package/src/tools/remember-tool.spec.ts +0 -469
  543. package/src/tools/remember-tool.ts +0 -112
  544. package/src/tools/resolve-error.ts +0 -69
  545. package/src/tools/tool-registry.ts +0 -417
  546. package/src/tools/types.ts +0 -63
  547. package/src/tools/unpin-tool.spec.ts +0 -549
  548. package/src/tools/unpin-tool.ts +0 -306
  549. package/src/types/embedding.types.ts +0 -78
  550. package/src/types/index.spec.ts +0 -420
  551. package/src/types/index.ts +0 -117
  552. package/src/utils/database.spec.ts +0 -77
  553. package/src/utils/database.ts +0 -458
  554. package/src/utils/stopwords.ts +0 -128
  555. package/start-docker-setup.bat +0 -38
  556. package/static/logo.png +0 -0
  557. package/static/memento_logo.svg +0 -2
  558. package/test-docker.js +0 -103
  559. package/tsconfig.json +0 -46
  560. package/vitest.config.ts +0 -23
package/README.md CHANGED
@@ -1,427 +1,432 @@
1
- # ๐Ÿง  Memento MCP Server
2
-
3
- <div align="center">
4
- <img src="static/logo.png" alt="Memento Logo" width="200" height="200">
5
-
6
- <h3>โœจ AI Agent์˜ ๊ธฐ์–ต์„ ์˜์›ํžˆ ๊ธฐ์–ตํ•˜์„ธ์š” โœจ</h3>
7
-
8
- <p><strong>์‚ฌ๋žŒ์˜ ๊ธฐ์–ต ๊ตฌ์กฐ๋ฅผ ๋ชจ์‚ฌํ•œ ์ง€๋Šฅํ˜• ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ</strong></p>
9
-
10
- [๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด](README.md) | [๐Ÿ‡บ๐Ÿ‡ธ English](README.en.md)
11
- </div>
12
-
13
- > **๐Ÿš€ ํ˜์‹ ์ ์ธ AI Agent ๊ธฐ์–ต ๋ณด์กฐ ์‹œ์Šคํ…œ**
14
- > Memento๋Š” AI Agent๊ฐ€ ์‚ฌ๋žŒ์ฒ˜๋Ÿผ ๊ธฐ์–ต์„ ์ €์žฅ, ๊ฒ€์ƒ‰, ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” MCP(Model Context Protocol) ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.
15
- > ์ž‘์—…๊ธฐ์–ต, ์ผํ™”๊ธฐ์–ต, ์˜๋ฏธ๊ธฐ์–ต, ์ ˆ์ฐจ๊ธฐ์–ต์„ ๋ชจ์‚ฌํ•˜์—ฌ **์ง„์ •ํ•œ ์žฅ๊ธฐ ๊ธฐ์–ต**์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
16
-
17
- ## ๐ŸŽฏ ํ”„๋กœ์ ํŠธ ๊ฐœ์š”
18
-
19
- Memento MCP Server๋Š” AI Agent๊ฐ€ ์žฅ๊ธฐ ๊ธฐ์–ต์„ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” MCP(Model Context Protocol) ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค. ์‚ฌ๋žŒ์˜ ๊ธฐ์–ต ๊ตฌ์กฐ(์ž‘์—…๊ธฐ์–ต, ์ผํ™”๊ธฐ์–ต, ์˜๋ฏธ๊ธฐ์–ต, ์ ˆ์ฐจ๊ธฐ์–ต)๋ฅผ ๋ชจ์‚ฌํ•˜์—ฌ ํšจ์œจ์ ์ธ ๊ธฐ์–ต ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
20
-
21
- ## โœจ ์ฃผ์š” ๊ธฐ๋Šฅ
22
-
23
- ### ๐Ÿง  ํ•ต์‹ฌ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ (MCP ํด๋ผ์ด์–ธํŠธ)
24
- - **๊ธฐ์–ต ์ €์žฅ**: 4๊ฐ€์ง€ ํƒ€์ž…์˜ ๊ธฐ์–ต ์ €์žฅ (working, episodic, semantic, procedural)
25
- - **๊ธฐ์–ต ๊ฒ€์ƒ‰**: ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰ (ํ…์ŠคํŠธ + ๋ฒกํ„ฐ)
26
- - **๊ธฐ์–ต ๊ณ ์ •**: ์ค‘์š”ํ•œ ๊ธฐ์–ต ๊ณ ์ •/ํ•ด์ œ
27
- - **๊ธฐ์–ต ์‚ญ์ œ**: ์†Œํ”„ํŠธ/ํ•˜๋“œ ์‚ญ์ œ
28
-
29
- ### ๐Ÿ” ๊ณ ๊ธ‰ ๊ฒ€์ƒ‰
30
- - **FTS5 ํ…์ŠคํŠธ ๊ฒ€์ƒ‰**: SQLite์˜ Full-Text Search
31
- - **๋ฒกํ„ฐ ๊ฒ€์ƒ‰**: sqlite-vec ๊ธฐ๋ฐ˜ ์˜๋ฏธ์  ๊ฒ€์ƒ‰
32
- - **ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰**: ํ…์ŠคํŠธ์™€ ๋ฒกํ„ฐ ๊ฒ€์ƒ‰์˜ ๊ฒฐํ•ฉ
33
- - **๋‹ค์ค‘ ์ž„๋ฒ ๋”ฉ ์ œ๊ณต์ž**: TF-IDF, MiniLM, OpenAI, Gemini ์ง€์›
34
- - **์ž๋™ ์ œ๊ณต์ž ์„ ํƒ**: ์„ค์ • ๊ธฐ๋ฐ˜ ์ตœ์  ์ œ๊ณต์ž ์ž๋™ ์„ ํƒ
35
- - **ํด๋ฐฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜**: ์ œ๊ณต์ž ์‹คํŒจ ์‹œ ์ž๋™ ๋Œ€์ฒด
36
- - **ํƒœ๊ทธ ๊ธฐ๋ฐ˜ ํ•„ํ„ฐ๋ง**: ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰
37
-
38
- ### ๐Ÿงน ๋ง๊ฐ ์ •์ฑ…
39
- - **๋ง๊ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜**: ์ตœ๊ทผ์„ฑ, ์‚ฌ์šฉ์„ฑ, ์ค‘๋ณต ๋น„์œจ ๊ธฐ๋ฐ˜ ๋ง๊ฐ ์ ์ˆ˜ ๊ณ„์‚ฐ
40
- - **๊ฐ„๊ฒฉ ๋ฐ˜๋ณต**: ์ค‘์š”๋„์™€ ์‚ฌ์šฉ์„ฑ ๊ธฐ๋ฐ˜ ๋ฆฌ๋ทฐ ์Šค์ผ€์ค„๋ง
41
- - **TTL ๊ด€๋ฆฌ**: ํƒ€์ž…๋ณ„ ์ˆ˜๋ช… ๊ด€๋ฆฌ
42
- - **์ž๋™ ์ •๋ฆฌ**: ์†Œํ”„ํŠธ/ํ•˜๋“œ ์‚ญ์ œ ์ž๋™ํ™”
43
-
44
- ### ๐Ÿ“Š ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง (HTTP ๊ด€๋ฆฌ API)
45
- - **์‹ค์‹œ๊ฐ„ ๋ฉ”ํŠธ๋ฆญ**: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ๊ฒ€์ƒ‰, ๋ฉ”๋ชจ๋ฆฌ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง
46
- - **์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ**: 30์ดˆ๋งˆ๋‹ค ์ž๋™ ์„ฑ๋Šฅ ์ฒดํฌ ๋ฐ ์ž„๊ณ„๊ฐ’ ๊ธฐ๋ฐ˜ ์•Œ๋ฆผ
47
- - **์—๋Ÿฌ ๋กœ๊น…**: ๊ตฌ์กฐํ™”๋œ ์—๋Ÿฌ ๋กœ๊น… ๋ฐ ํ†ต๊ณ„ ์ˆ˜์ง‘
48
- - **๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ตœ์ ํ™”**: ์ž๋™ ์ธ๋ฑ์Šค ์ถ”์ฒœ ๋ฐ ์ƒ์„ฑ
49
- - **์บ์‹œ ์‹œ์Šคํ…œ**: LRU + TTL ๊ธฐ๋ฐ˜ ์บ์‹ฑ
50
- - **๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ**: ์›Œ์ปค ํ’€ ๊ธฐ๋ฐ˜ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ
51
-
52
- ## ๐Ÿš€ ๋น ๋ฅธ ์‹œ์ž‘
53
-
54
- ### ๐Ÿฅ‡ **์›ํด๋ฆญ ์„ค์น˜ (๊ถŒ์žฅ)**
55
- ```bash
56
- # ์ž๋™ ์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰
57
- curl -sSL https://raw.githubusercontent.com/jee1/memento/main/install.sh | bash
58
- ```
59
-
60
- ### ๐Ÿฅˆ **npx ๋ฐฉ์‹ (๊ฐœ๋ฐœ์ž์šฉ)**
61
- ```bash
62
- # ์ฆ‰์‹œ ์‹คํ–‰ (์„ค์น˜ ์—†์ด)
63
- npx memento-mcp-server@latest dev
64
-
65
- # ์ž๋™ ์„ค์ • ํ›„ ์‹คํ–‰
66
- npx memento-mcp-server@latest setup
67
- npx memento-mcp-server@latest start
68
- ```
69
-
70
- ### ๐Ÿฅ‰ **Docker ๋ฐฉ์‹ (ํ”„๋กœ๋•์…˜์šฉ)**
71
- ```bash
72
- # ๊ฐœ๋ฐœ ํ™˜๊ฒฝ
73
- docker-compose -f docker-compose.dev.yml up -d
74
-
75
- # ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ
76
- docker-compose -f docker-compose.prod.yml up -d
77
- ```
78
-
79
- ### ๐Ÿ› ๏ธ **์†Œ์Šค์ฝ”๋“œ ๋ฐฉ์‹ (๊ฐœ๋ฐœ์ž์šฉ)**
80
- ```bash
81
- # ์ €์žฅ์†Œ ํด๋ก 
82
- git clone https://github.com/jee1/memento.git
83
- cd memento
84
-
85
- # ์›ํด๋ฆญ ์„ค์น˜ ๋ฐ ์‹คํ–‰
86
- npm run quick-start
87
- ```
88
-
89
- ### ๐Ÿ“š **์ƒ์„ธ ์„ค์น˜ ๊ฐ€์ด๋“œ**
90
- ์ž์„ธํ•œ ์„ค์น˜ ๋ฐฉ๋ฒ•์€ [INSTALL.md](INSTALL.md)๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
91
-
92
- ## ๐Ÿ’ก ์‚ฌ์šฉ ์˜ˆ์‹œ
93
-
94
- ### ๐Ÿค– AI Agent์™€์˜ ์—ฐ๋™
95
- ```typescript
96
- // AI Agent๊ฐ€ ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ๊ธฐ์–ต์— ์ €์žฅ
97
- await client.callTool({
98
- name: "remember",
99
- arguments: {
100
- content: "์‚ฌ์šฉ์ž๋Š” React Hook์„ ํ•™์Šตํ–ˆ์Šต๋‹ˆ๋‹ค. useState๋Š” ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , useEffect๋Š” ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.",
101
- type: "episodic",
102
- tags: ["react", "hooks", "javascript"],
103
- importance: 0.8
104
- }
105
- });
106
-
107
- // ๋‚˜์ค‘์— ๊ด€๋ จ ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰
108
- const results = await client.callTool({
109
- name: "recall",
110
- arguments: {
111
- query: "React Hook ์‚ฌ์šฉ๋ฒ•",
112
- limit: 5
113
- }
114
- });
115
- ```
116
-
117
- ### ๐Ÿ“š ์ง€์‹ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ
118
- ```typescript
119
- // ์ค‘์š”ํ•œ ์ง€์‹์„ ์˜๋ฏธ๊ธฐ์–ต์œผ๋กœ ์ €์žฅ
120
- await client.callTool({
121
- name: "remember",
122
- arguments: {
123
- content: "TypeScript์˜ ์ œ๋„ค๋ฆญ์€ ํƒ€์ž…์„ ๋งค๊ฐœ๋ณ€์ˆ˜ํ™”ํ•˜์—ฌ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.",
124
- type: "semantic",
125
- tags: ["typescript", "generics", "programming"],
126
- importance: 0.9
127
- }
128
- });
129
- ```
130
-
131
- ### ๐Ÿ”ง ์ ˆ์ฐจ ๊ธฐ์–ต ๊ด€๋ฆฌ
132
- ```typescript
133
- // ์ž‘์—… ์ ˆ์ฐจ๋ฅผ ์ ˆ์ฐจ๊ธฐ์–ต์œผ๋กœ ์ €์žฅ
134
- await client.callTool({
135
- name: "remember",
136
- arguments: {
137
- content: "Docker ์ปจํ…Œ์ด๋„ˆ ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ ์ ˆ์ฐจ: 1) Dockerfile ์ž‘์„ฑ 2) docker build ์‹คํ–‰ 3) docker run์œผ๋กœ ํ…Œ์ŠคํŠธ 4) ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ํ‘ธ์‹œ",
138
- type: "procedural",
139
- tags: ["docker", "deployment", "devops"],
140
- importance: 0.7
141
- }
142
- });
143
- ```
144
-
145
- ## ๐Ÿ› ๏ธ ์‚ฌ์šฉ๋ฒ•
146
-
147
- ### MCP ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ
148
-
149
- ```typescript
150
- import { Client } from "@modelcontextprotocol/sdk/client/index.js";
151
-
152
- const client = new Client({
153
- name: "memento-client",
154
- version: "0.1.0"
155
- }, {
156
- capabilities: {
157
- tools: {},
158
- resources: {},
159
- prompts: {}
160
- }
161
- });
162
-
163
- // stdio ์—ฐ๊ฒฐ
164
- await client.connect({
165
- command: "node",
166
- args: ["dist/server/index.js"]
167
- });
168
-
169
- // WebSocket ์—ฐ๊ฒฐ
170
- await client.connect({
171
- transport: {
172
- type: "websocket",
173
- url: "ws://localhost:9001/mcp"
174
- }
175
- });
176
- ```
177
-
178
- ### ๊ธฐ์–ต ์ €์žฅ
179
-
180
- ```typescript
181
- // ๊ธฐ์–ต ์ €์žฅ
182
- const result = await client.callTool({
183
- name: "remember",
184
- arguments: {
185
- content: "React Hook์— ๋Œ€ํ•ด ํ•™์Šตํ–ˆ์Šต๋‹ˆ๋‹ค. useState๋Š” ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , useEffect๋Š” ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.",
186
- type: "episodic",
187
- tags: ["react", "hooks", "javascript"],
188
- importance: 0.8
189
- }
190
- });
191
- ```
192
-
193
- ### ๊ธฐ์–ต ๊ฒ€์ƒ‰
194
-
195
- ```typescript
196
- // ๊ธฐ์–ต ๊ฒ€์ƒ‰
197
- const results = await client.callTool({
198
- name: "recall",
199
- arguments: {
200
- query: "React Hook",
201
- filters: {
202
- type: ["episodic", "semantic"],
203
- tags: ["react"]
204
- },
205
- limit: 10
206
- }
207
- });
208
- ```
209
-
210
- ## ๐Ÿ“š ๋ฌธ์„œ
211
-
212
- - [์ž„๋ฒ ๋”ฉ ์„œ๋น„์Šค ๊ฐ€์ด๋“œ](docs/ko/embedding-service-guide.md) - ์ž„๋ฒ ๋”ฉ ์„œ๋น„์Šค ์‚ฌ์šฉ๋ฒ•
213
- - [์„ฑ๋Šฅ ๋ฒค์น˜๋งˆํฌ](docs/ko/embedding-performance-benchmark.md) - ์„ฑ๋Šฅ ๋น„๊ต ๊ฒฐ๊ณผ
214
- - [API ๋ ˆํผ๋Ÿฐ์Šค](docs/ko/embedding-api-reference.md) - API ์ƒ์„ธ ๋ฌธ์„œ
215
- - [์„ค์ • ๊ฐ€์ด๋“œ](docs/ko/embedding-configuration.md) - ํ™˜๊ฒฝ ์„ค์ • ๋ฐฉ๋ฒ•
216
-
217
- ## ๐Ÿ“‹ API ๋ฌธ์„œ
218
-
219
- ### MCP Tools (ํ•ต์‹ฌ 5๊ฐœ๋งŒ)
220
-
221
- > **์ค‘์š”**: MCP ํด๋ผ์ด์–ธํŠธ๋Š” ํ•ต์‹ฌ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ 5๊ฐœ๋งŒ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
222
- > ๊ด€๋ฆฌ ๊ธฐ๋Šฅ๋“ค์€ HTTP API ์—”๋“œํฌ์ธํŠธ๋กœ ๋ถ„๋ฆฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
223
-
224
- | Tool | ์„ค๋ช… | ํŒŒ๋ผ๋ฏธํ„ฐ |
225
- |------|------|----------|
226
- | `remember` | ๊ธฐ์–ต ์ €์žฅ | content, type, tags, importance, source, privacy_scope |
227
- | `recall` | ๊ธฐ์–ต ๊ฒ€์ƒ‰ | query, filters, limit |
228
- | `pin` | ๊ธฐ์–ต ๊ณ ์ • | memory_id |
229
- | `unpin` | ๊ธฐ์–ต ๊ณ ์ • ํ•ด์ œ | memory_id |
230
- | `forget` | ๊ธฐ์–ต ์‚ญ์ œ | memory_id, hard |
231
-
232
- ### HTTP ๊ด€๋ฆฌ API
233
-
234
- | ์—”๋“œํฌ์ธํŠธ | ์„ค๋ช… | ๋ฉ”์„œ๋“œ |
235
- |-----------|------|--------|
236
- | `/admin/memory/cleanup` | ๋ฉ”๋ชจ๋ฆฌ ์ •๋ฆฌ | POST |
237
- | `/admin/stats/forgetting` | ๋ง๊ฐ ํ†ต๊ณ„ ์กฐํšŒ | GET |
238
- | `/admin/stats/performance` | ์„ฑ๋Šฅ ํ†ต๊ณ„ ์กฐํšŒ | GET |
239
- | `/admin/stats/errors` | ์—๋Ÿฌ ํ†ต๊ณ„ ์กฐํšŒ | GET |
240
- | `/admin/errors/resolve` | ์—๋Ÿฌ ํ•ด๊ฒฐ | POST |
241
- | `/admin/alerts/performance` | ์„ฑ๋Šฅ ์•Œ๋ฆผ ์กฐํšŒ | GET |
242
- | `/admin/database/optimize` | ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ตœ์ ํ™” | POST |
243
-
244
- ### Resources
245
-
246
- | Resource | ์„ค๋ช… |
247
- |----------|------|
248
- | `memory/{id}` | ๋‹จ์ผ ๊ธฐ์–ต ์ƒ์„ธ ์ •๋ณด |
249
- | `memory/search?query=...` | ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์บ์‹œ |
250
-
251
- ## ๐Ÿ”ง ์„ค์ •
252
-
253
- ### ํ™˜๊ฒฝ ๋ณ€์ˆ˜
254
-
255
- | ๋ณ€์ˆ˜ | ๊ธฐ๋ณธ๊ฐ’ | ์„ค๋ช… |
256
- |------|--------|------|
257
- | `NODE_ENV` | development | ์‹คํ–‰ ํ™˜๊ฒฝ |
258
- | `PORT` | 9001 | ์„œ๋ฒ„ ํฌํŠธ |
259
- | `DB_PATH` | ./data/memory.db | ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฒฝ๋กœ |
260
- | `LOG_LEVEL` | info | ๋กœ๊ทธ ๋ ˆ๋ฒจ |
261
- | `OPENAI_API_KEY` | - | OpenAI API ํ‚ค (์„ ํƒ์‚ฌํ•ญ) |
262
-
263
- ### ๋ง๊ฐ ์ •์ฑ… ์„ค์ •
264
-
265
- ```bash
266
- # ๋ง๊ฐ ์ž„๊ณ„๊ฐ’
267
- FORGET_THRESHOLD=0.6
268
- SOFT_DELETE_THRESHOLD=0.6
269
- HARD_DELETE_THRESHOLD=0.8
270
-
271
- # TTL ์„ค์ • (์ผ ๋‹จ์œ„)
272
- TTL_SOFT_WORKING=2
273
- TTL_SOFT_EPISODIC=30
274
- TTL_SOFT_SEMANTIC=180
275
- TTL_SOFT_PROCEDURAL=90
276
- ```
277
-
278
- ## ๐Ÿงช ํ…Œ์ŠคํŠธ
279
-
280
- ```bash
281
- # ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์‹คํ–‰ (Vitest)
282
- npm run test
283
-
284
- # ๊ฐœ๋ณ„ ํ…Œ์ŠคํŠธ ์‹คํ–‰
285
- npm run test:client # ํด๋ผ์ด์–ธํŠธ ํ…Œ์ŠคํŠธ
286
- npm run test:search # ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ
287
- npm run test:embedding # ์ž„๋ฒ ๋”ฉ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ
288
- npm run test:lightweight-embedding # ๊ฒฝ๋Ÿ‰ ์ž„๋ฒ ๋”ฉ ํ…Œ์ŠคํŠธ
289
- npm run test:forgetting # ๋ง๊ฐ ์ •์ฑ… ํ…Œ์ŠคํŠธ
290
- npm run test:performance # ์„ฑ๋Šฅ ๋ฒค์น˜๋งˆํฌ
291
- npm run test:monitoring # ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ํ…Œ์ŠคํŠธ
292
- npm run test:error-logging # ์—๋Ÿฌ ๋กœ๊น… ํ…Œ์ŠคํŠธ
293
- npm run test:performance-alerts # ์„ฑ๋Šฅ ์•Œ๋ฆผ ํ…Œ์ŠคํŠธ
294
-
295
- # ํ…Œ์ŠคํŠธ ๊ฐ์‹œ ๋ชจ๋“œ
296
- npm run test -- --watch
297
-
298
- # ์ปค๋ฒ„๋ฆฌ์ง€ ํฌํ•จ ํ…Œ์ŠคํŠธ
299
- npm run test -- --coverage
300
- ```
301
-
302
- ## ๐Ÿ“š ๊ฐœ๋ฐœ์ž ๊ฐ€์ด๋“œ๋ผ์ธ
303
-
304
- ### ์ €์žฅ์†Œ ๊ฐ€์ด๋“œ๋ผ์ธ (`AGENTS.md`)
305
- - **ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ**: `src/` ํ•˜์œ„ ๋ชจ๋“ˆ๋ณ„ ์กฐ์งํ™”
306
- - **๋นŒ๋“œ/ํ…Œ์ŠคํŠธ ๋ช…๋ น์–ด**: `npm run dev`, `npm run build`, `npm run test` ๋“ฑ
307
- - **์ฝ”๋”ฉ ์Šคํƒ€์ผ**: Node.js โ‰ฅ 20, TypeScript ES ๋ชจ๋“ˆ, 2์นธ ๋“ค์—ฌ์“ฐ๊ธฐ
308
- - **ํ…Œ์ŠคํŠธ ๊ฐ€์ด๋“œ๋ผ์ธ**: Vitest ๊ธฐ๋ฐ˜, `src/test/` ๋˜๋Š” `*.spec.ts` ํŒŒ์ผ
309
- - **์ปค๋ฐ‹/PR ๊ฐ€์ด๋“œ๋ผ์ธ**: Conventional Commits, ํ•œ๊ตญ์–ด ์ปจํ…์ŠคํŠธ ํฌํ•จ
310
- - **ํ™˜๊ฒฝ/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค**: `.env` ์„ค์ •, `data/` ํด๋” ๊ด€๋ฆฌ
311
-
312
- ## ๐Ÿ“Š ์„ฑ๋Šฅ ์ง€ํ‘œ
313
-
314
- ### ๊ธฐ๋ณธ ์„ฑ๋Šฅ
315
- - **๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ**: ํ‰๊ท  ์ฟผ๋ฆฌ ์‹œ๊ฐ„ 0.16-0.22ms
316
- - **๊ฒ€์ƒ‰ ์„ฑ๋Šฅ**: 0.78-4.24ms (์บ์‹œ ํšจ๊ณผ๋กœ ๊ฐœ์„ )
317
- - **๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰**: 11-15MB ํž™ ์‚ฌ์šฉ๋Ÿ‰
318
- - **๋™์‹œ ์—ฐ๊ฒฐ**: ์ตœ๋Œ€ 1000๊ฐœ ์—ฐ๊ฒฐ ์ง€์›
319
-
320
- ### ๊ณ ๊ธ‰ ์„ฑ๋Šฅ ์ตœ์ ํ™”
321
- - **์บ์‹œ ํžˆํŠธ์œจ**: 80% ์ด์ƒ (๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์บ์‹ฑ)
322
- - **์ž„๋ฒ ๋”ฉ ์บ์‹ฑ**: 24์‹œ๊ฐ„ TTL๋กœ ๋น„์šฉ ์ ˆ์•ฝ
323
- - **๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ**: ์›Œ์ปค ํ’€ ๊ธฐ๋ฐ˜ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ
324
- - **๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ตœ์ ํ™”**: ์ž๋™ ์ธ๋ฑ์Šค ์ถ”์ฒœ ๋ฐ ์ƒ์„ฑ
325
- - **์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง**: 30์ดˆ๋งˆ๋‹ค ์ž๋™ ์„ฑ๋Šฅ ์ฒดํฌ
326
- - **์—๋Ÿฌ ๋กœ๊น…**: ๊ตฌ์กฐํ™”๋œ ์—๋Ÿฌ ์ถ”์  ๋ฐ ํ†ต๊ณ„
327
- - **์„ฑ๋Šฅ ์•Œ๋ฆผ**: ์ž„๊ณ„๊ฐ’ ๊ธฐ๋ฐ˜ ์ž๋™ ์•Œ๋ฆผ ์‹œ์Šคํ…œ
328
-
329
- ### ๊ฒฝ๋Ÿ‰ ์ž„๋ฒ ๋”ฉ ์„ฑ๋Šฅ
330
- - **TF-IDF ๋ฒกํ„ฐํ™”**: 512์ฐจ์› ๊ณ ์ • ๋ฒกํ„ฐ ์ƒ์„ฑ
331
- - **๋‹ค๊ตญ์–ด ์ง€์›**: ํ•œ๊ตญ์–ด/์˜์–ด ๋ถˆ์šฉ์–ด ์ œ๊ฑฐ
332
- - **๋กœ์ปฌ ์ฒ˜๋ฆฌ**: OpenAI API ์—†์ด ๋™์ž‘
333
- - **์ฝ”์‚ฌ์ธ ์œ ์‚ฌ๋„**: ๋น ๋ฅธ ๋ฒกํ„ฐ ๊ฒ€์ƒ‰
334
-
335
- ## ๐Ÿ—๏ธ ์•„ํ‚คํ…์ฒ˜
336
-
337
- ### M1: ๊ฐœ์ธ์šฉ (ํ˜„์žฌ ๊ตฌํ˜„)
338
- - **์Šคํ† ๋ฆฌ์ง€**: better-sqlite3 ์ž„๋ฒ ๋””๋“œ
339
- - **์ธ๋ฑ์Šค**: FTS5 + sqlite-vss
340
- - **์ธ์ฆ**: ์—†์Œ (๋กœ์ปฌ ์ „์šฉ)
341
- - **์šด์˜**: ๋กœ์ปฌ ์‹คํ–‰
342
- - **MCP ํด๋ผ์ด์–ธํŠธ**: ํ•ต์‹ฌ 5๊ฐœ ๋„๊ตฌ๋งŒ ๋…ธ์ถœ
343
- - **๊ด€๋ฆฌ ๊ธฐ๋Šฅ**: HTTP API๋กœ ๋ถ„๋ฆฌ
344
- - **์ถ”๊ฐ€ ๊ธฐ๋Šฅ**: ๊ฒฝ๋Ÿ‰ ์ž„๋ฒ ๋”ฉ, ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง, ์บ์‹œ ์‹œ์Šคํ…œ
345
-
346
- ### M2: ํŒ€ ํ˜‘์—… (๊ณ„ํš)
347
- - **์Šคํ† ๋ฆฌ์ง€**: SQLite ์„œ๋ฒ„ ๋ชจ๋“œ
348
- - **์ธ์ฆ**: API Key
349
- - **์šด์˜**: Docker ๋‹จ์ผ ์ปจํ…Œ์ด๋„ˆ
350
-
351
- ### M3: ์กฐ์ง ์ดˆ์ž… (๊ณ„ํš)
352
- - **์Šคํ† ๋ฆฌ์ง€**: PostgreSQL + pgvector
353
- - **์ธ์ฆ**: JWT
354
- - **์šด์˜**: Docker Compose
355
-
356
- ## โ“ ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ (FAQ)
357
-
358
- ### Q: Memento๋Š” ์–ด๋–ค AI Agent์™€ ํ˜ธํ™˜๋˜๋‚˜์š”?
359
- A: MCP(Model Context Protocol)๋ฅผ ์ง€์›ํ•˜๋Š” ๋ชจ๋“  AI Agent์™€ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค. Claude, GPT-4, Gemini ๋“ฑ๊ณผ ์—ฐ๋™ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
360
-
361
- ### Q: ๊ธฐ์–ต ๋ฐ์ดํ„ฐ๋Š” ์–ด๋””์— ์ €์žฅ๋˜๋‚˜์š”?
362
- A: ๊ธฐ๋ณธ์ ์œผ๋กœ ๋กœ์ปฌ SQLite ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(`./data/memory.db`)์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. Docker๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
363
-
364
- ### Q: OpenAI API ํ‚ค๊ฐ€ ํ•„์š”ํ•œ๊ฐ€์š”?
365
- A: ์„ ํƒ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. OpenAI API ํ‚ค๊ฐ€ ์—†์–ด๋„ TF-IDF ๊ธฐ๋ฐ˜ ๊ฒฝ๋Ÿ‰ ์ž„๋ฒ ๋”ฉ์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋” ์ •ํ™•ํ•œ ๊ฒ€์ƒ‰์„ ์›ํ•œ๋‹ค๋ฉด OpenAI API ํ‚ค๋ฅผ ์„ค์ •ํ•˜์„ธ์š”.
366
-
367
- ### Q: ๊ธฐ์–ต ์šฉ๋Ÿ‰์— ์ œํ•œ์ด ์žˆ๋‚˜์š”?
368
- A: SQLite ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ œํ•œ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ๊ธฐ์–ต์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
369
-
370
- ### Q: ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์™€ ๊ธฐ์–ต์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
371
- A: ํ˜„์žฌ M1 ๋ฒ„์ „์€ ๊ฐœ์ธ์šฉ์ž…๋‹ˆ๋‹ค. M2 ๋ฒ„์ „๋ถ€ํ„ฐ ํŒ€ ํ˜‘์—… ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.
372
-
373
- ### Q: ๊ธฐ์–ต์ด ์ž๋™์œผ๋กœ ์‚ญ์ œ๋˜๋‚˜์š”?
374
- A: ๋„ค, ๋ง๊ฐ ์ •์ฑ…์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค. ์ค‘์š”ํ•œ ๊ธฐ์–ต์€ `pin` ๊ธฐ๋Šฅ์œผ๋กœ ๊ณ ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
375
-
376
- ## ๐Ÿค ๊ธฐ์—ฌํ•˜๊ธฐ
377
-
378
- Memento ํ”„๋กœ์ ํŠธ์— ๊ธฐ์—ฌํ•˜๊ณ  ์‹ถ์œผ์‹ ๊ฐ€์š”? ์ž์„ธํ•œ ๊ฐ€์ด๋“œ๋Š” [CONTRIBUTING.md](CONTRIBUTING.md)๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
379
-
380
- ### ๋น ๋ฅธ ๊ธฐ์—ฌ ์‹œ์ž‘
381
- 1. **Fork** the Project
382
- 2. **Create** your Feature Branch (`git checkout -b feature/AmazingFeature`)
383
- 3. **Commit** your Changes (`git commit -m 'feat: add some AmazingFeature'`)
384
- 4. **Push** to the Branch (`git push origin feature/AmazingFeature`)
385
- 5. **Open** a Pull Request
386
-
387
- ### ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •
388
- ```bash
389
- # ์ €์žฅ์†Œ ํฌํฌ ํ›„ ํด๋ก 
390
- git clone https://github.com/your-username/memento.git
391
- cd memento
392
-
393
- # ์˜์กด์„ฑ ์„ค์น˜
394
- npm install
395
-
396
- # ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์‹œ์ž‘
397
- npm run dev
398
-
399
- # ํ…Œ์ŠคํŠธ ์‹คํ–‰
400
- npm run test
401
- ```
402
-
403
- ### ๊ธฐ์—ฌ ๋ฐฉ๋ฒ•
404
- - ๐Ÿ› **๋ฒ„๊ทธ ๋ฆฌํฌํŠธ**: [GitHub Issues](https://github.com/jee1/memento/issues)์—์„œ ๋ฒ„๊ทธ๋ฅผ ์‹ ๊ณ ํ•˜์„ธ์š”
405
- - ๐Ÿ’ก **๊ธฐ๋Šฅ ์ œ์•ˆ**: ์ƒˆ๋กœ์šด ์•„์ด๋””์–ด๋ฅผ ์ œ์•ˆํ•ด์ฃผ์„ธ์š”
406
- - ๐Ÿ“ **๋ฌธ์„œ ๊ฐœ์„ **: ๋ฌธ์„œ๋ฅผ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”
407
- - ๐Ÿ”ง **์ฝ”๋“œ ๊ธฐ์—ฌ**: ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด๋‚˜ ๋ฒ„๊ทธ ์ˆ˜์ •์„ ๋„์™€์ฃผ์„ธ์š”
408
-
409
- ## ๐Ÿ“„ ๋ผ์ด์„ ์Šค
410
-
411
- ์ด ํ”„๋กœ์ ํŠธ๋Š” MIT ๋ผ์ด์„ ์Šค ํ•˜์— ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ `LICENSE` ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
412
-
413
- ## ๐Ÿ“ž ์ง€์›
414
-
415
- - ์ด์Šˆ ๋ฆฌํฌํŠธ: [GitHub Issues](https://github.com/jee1/memento/issues)
416
- - ๋ฌธ์„œ: [Wiki](https://github.com/jee1/memento/wiki)
417
- - ๊ฐœ๋ฐœ์ž ๊ฐ€์ด๋“œ: [docs/developer-guide.md](docs/developer-guide.md)
418
- - API ์ฐธ์กฐ: [docs/api-reference.md](docs/api-reference.md)
419
-
420
- ## ๐Ÿ™ ๊ฐ์‚ฌ์˜ ๋ง
421
-
422
- - [Model Context Protocol](https://modelcontextprotocol.io/) - MCP ํ”„๋กœํ† ์ฝœ
423
- - [OpenAI](https://openai.com/) - ์ž„๋ฒ ๋”ฉ ์„œ๋น„์Šค
424
- - [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) - ๊ณ ์„ฑ๋Šฅ SQLite ๋“œ๋ผ์ด๋ฒ„
425
- - [Express](https://expressjs.com/) - ์›น ํ”„๋ ˆ์ž„์›Œํฌ
426
- - [Vitest](https://vitest.dev/) - ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ
427
- - [TypeScript](https://www.typescriptlang.org/) - ๊ฐœ๋ฐœ ์–ธ์–ด
1
+ # ๐Ÿง  Memento MCP Server
2
+
3
+ <div align="center">
4
+ <img src="static/logo.png" alt="Memento Logo" width="200" height="200">
5
+
6
+ <h3>โœจ AI Agent์˜ ๊ธฐ์–ต์„ ์˜์›ํžˆ ๊ธฐ์–ตํ•˜์„ธ์š” โœจ</h3>
7
+
8
+ <p><strong>์‚ฌ๋žŒ์˜ ๊ธฐ์–ต ๊ตฌ์กฐ๋ฅผ ๋ชจ์‚ฌํ•œ ์ง€๋Šฅํ˜• ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ</strong></p>
9
+
10
+ [๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด](README.md) | [๐Ÿ‡บ๐Ÿ‡ธ English](README.en.md)
11
+ </div>
12
+
13
+ > **๐Ÿš€ ํ˜์‹ ์ ์ธ AI Agent ๊ธฐ์–ต ๋ณด์กฐ ์‹œ์Šคํ…œ**
14
+ > Memento๋Š” AI Agent๊ฐ€ ์‚ฌ๋žŒ์ฒ˜๋Ÿผ ๊ธฐ์–ต์„ ์ €์žฅ, ๊ฒ€์ƒ‰, ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” MCP(Model Context Protocol) ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.
15
+ > ์ž‘์—…๊ธฐ์–ต, ์ผํ™”๊ธฐ์–ต, ์˜๋ฏธ๊ธฐ์–ต, ์ ˆ์ฐจ๊ธฐ์–ต์„ ๋ชจ์‚ฌํ•˜์—ฌ **์ง„์ •ํ•œ ์žฅ๊ธฐ ๊ธฐ์–ต**์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
16
+
17
+ ## ๐ŸŽฏ ํ”„๋กœ์ ํŠธ ๊ฐœ์š”
18
+
19
+ Memento MCP Server๋Š” AI Agent๊ฐ€ ์žฅ๊ธฐ ๊ธฐ์–ต์„ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” MCP(Model Context Protocol) ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค. ์‚ฌ๋žŒ์˜ ๊ธฐ์–ต ๊ตฌ์กฐ(์ž‘์—…๊ธฐ์–ต, ์ผํ™”๊ธฐ์–ต, ์˜๋ฏธ๊ธฐ์–ต, ์ ˆ์ฐจ๊ธฐ์–ต)๋ฅผ ๋ชจ์‚ฌํ•˜์—ฌ ํšจ์œจ์ ์ธ ๊ธฐ์–ต ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
20
+
21
+ ## โœจ ์ฃผ์š” ๊ธฐ๋Šฅ
22
+
23
+ ### ๐Ÿง  ํ•ต์‹ฌ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ (MCP ํด๋ผ์ด์–ธํŠธ)
24
+ - **๊ธฐ์–ต ์ €์žฅ**: 4๊ฐ€์ง€ ํƒ€์ž…์˜ ๊ธฐ์–ต ์ €์žฅ (working, episodic, semantic, procedural)
25
+ - **๊ธฐ์–ต ๊ฒ€์ƒ‰**: ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰ (ํ…์ŠคํŠธ + ๋ฒกํ„ฐ)
26
+ - **๊ธฐ์–ต ๊ณ ์ •**: ์ค‘์š”ํ•œ ๊ธฐ์–ต ๊ณ ์ •/ํ•ด์ œ
27
+ - **๊ธฐ์–ต ์‚ญ์ œ**: ์†Œํ”„ํŠธ/ํ•˜๋“œ ์‚ญ์ œ
28
+
29
+ ### ๐Ÿ” ๊ณ ๊ธ‰ ๊ฒ€์ƒ‰
30
+ - **FTS5 ํ…์ŠคํŠธ ๊ฒ€์ƒ‰**: SQLite์˜ Full-Text Search
31
+ - **๋ฒกํ„ฐ ๊ฒ€์ƒ‰**: sqlite-vec ๊ธฐ๋ฐ˜ ์˜๋ฏธ์  ๊ฒ€์ƒ‰
32
+ - **ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰**: ํ…์ŠคํŠธ์™€ ๋ฒกํ„ฐ ๊ฒ€์ƒ‰์˜ ๊ฒฐํ•ฉ
33
+ - **๋‹ค์ค‘ ์ž„๋ฒ ๋”ฉ ์ œ๊ณต์ž**: TF-IDF, MiniLM, OpenAI, Gemini ์ง€์›
34
+ - **์ž๋™ ์ œ๊ณต์ž ์„ ํƒ**: ์„ค์ • ๊ธฐ๋ฐ˜ ์ตœ์  ์ œ๊ณต์ž ์ž๋™ ์„ ํƒ
35
+ - **ํด๋ฐฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜**: ์ œ๊ณต์ž ์‹คํŒจ ์‹œ ์ž๋™ ๋Œ€์ฒด (OpenAI โ†’ ๊ฒฝ๋Ÿ‰ ์„œ๋น„์Šค)
36
+ - **ํƒœ๊ทธ ๊ธฐ๋ฐ˜ ํ•„ํ„ฐ๋ง**: ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰
37
+
38
+ ### ๐Ÿงน ๋ง๊ฐ ์ •์ฑ…
39
+ - **๋ง๊ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜**: ์ตœ๊ทผ์„ฑ, ์‚ฌ์šฉ์„ฑ, ์ค‘๋ณต ๋น„์œจ ๊ธฐ๋ฐ˜ ๋ง๊ฐ ์ ์ˆ˜ ๊ณ„์‚ฐ
40
+ - **๊ฐ„๊ฒฉ ๋ฐ˜๋ณต**: ์ค‘์š”๋„์™€ ์‚ฌ์šฉ์„ฑ ๊ธฐ๋ฐ˜ ๋ฆฌ๋ทฐ ์Šค์ผ€์ค„๋ง
41
+ - **TTL ๊ด€๋ฆฌ**: ํƒ€์ž…๋ณ„ ์ˆ˜๋ช… ๊ด€๋ฆฌ
42
+ - **์ž๋™ ์ •๋ฆฌ**: ์†Œํ”„ํŠธ/ํ•˜๋“œ ์‚ญ์ œ ์ž๋™ํ™”
43
+
44
+ ### ๐Ÿ“Š ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง (HTTP ๊ด€๋ฆฌ API)
45
+ - **์‹ค์‹œ๊ฐ„ ๋ฉ”ํŠธ๋ฆญ**: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ๊ฒ€์ƒ‰, ๋ฉ”๋ชจ๋ฆฌ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง
46
+ - **์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ**: 30์ดˆ๋งˆ๋‹ค ์ž๋™ ์„ฑ๋Šฅ ์ฒดํฌ ๋ฐ ์ž„๊ณ„๊ฐ’ ๊ธฐ๋ฐ˜ ์•Œ๋ฆผ
47
+ - **์—๋Ÿฌ ๋กœ๊น…**: ๊ตฌ์กฐํ™”๋œ ์—๋Ÿฌ ๋กœ๊น… ๋ฐ ํ†ต๊ณ„ ์ˆ˜์ง‘
48
+ - **๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ตœ์ ํ™”**: ์ž๋™ ์ธ๋ฑ์Šค ์ถ”์ฒœ ๋ฐ ์ƒ์„ฑ
49
+ - **์บ์‹œ ์‹œ์Šคํ…œ**: LRU + TTL ๊ธฐ๋ฐ˜ ์บ์‹ฑ
50
+ - **๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ**: ์›Œ์ปค ํ’€ ๊ธฐ๋ฐ˜ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ
51
+
52
+ ## ๐Ÿš€ ๋น ๋ฅธ ์‹œ์ž‘
53
+
54
+ ### ๐Ÿฅ‡ **์›ํด๋ฆญ ์„ค์น˜ (๊ถŒ์žฅ)**
55
+ ```bash
56
+ # ์ž๋™ ์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰
57
+ curl -sSL https://raw.githubusercontent.com/jee1/memento/main/install.sh | bash
58
+ ```
59
+
60
+ ### ๐Ÿฅˆ **npx ๋ฐฉ์‹ (๊ฐœ๋ฐœ์ž์šฉ)**
61
+ ```bash
62
+ # ์ฆ‰์‹œ ์‹คํ–‰ (์„ค์น˜ ์—†์ด)
63
+ npx memento-mcp-server@latest dev
64
+
65
+ # MCP ์„œ๋ฒ„ ์‹คํ–‰
66
+ npx memento-mcp-server@latest
67
+
68
+ # HTTP ์„œ๋ฒ„ ์‹คํ–‰
69
+ npx memento-mcp-server@latest http
70
+
71
+ # ์ž๋™ ์„ค์ •
72
+ npx memento-mcp-server@latest setup
73
+ ```
74
+
75
+ ### ๐Ÿฅ‰ **Docker ๋ฐฉ์‹ (ํ”„๋กœ๋•์…˜์šฉ)**
76
+ ```bash
77
+ # ๊ฐœ๋ฐœ ํ™˜๊ฒฝ
78
+ docker-compose -f docker-compose.dev.yml up -d
79
+
80
+ # ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ
81
+ docker-compose -f docker-compose.prod.yml up -d
82
+ ```
83
+
84
+ ### ๐Ÿ› ๏ธ **์†Œ์Šค์ฝ”๋“œ ๋ฐฉ์‹ (๊ฐœ๋ฐœ์ž์šฉ)**
85
+ ```bash
86
+ # ์ €์žฅ์†Œ ํด๋ก 
87
+ git clone https://github.com/jee1/memento.git
88
+ cd memento
89
+
90
+ # ์›ํด๋ฆญ ์„ค์น˜ ๋ฐ ์‹คํ–‰
91
+ npm run quick-start
92
+ ```
93
+
94
+ ### ๐Ÿ“š **์ƒ์„ธ ์„ค์น˜ ๊ฐ€์ด๋“œ**
95
+ ์ž์„ธํ•œ ์„ค์น˜ ๋ฐฉ๋ฒ•์€ [INSTALL.md](INSTALL.md)๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
96
+
97
+ ## ๐Ÿ’ก ์‚ฌ์šฉ ์˜ˆ์‹œ
98
+
99
+ ### ๐Ÿค– AI Agent์™€์˜ ์—ฐ๋™
100
+ ```typescript
101
+ // AI Agent๊ฐ€ ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ๊ธฐ์–ต์— ์ €์žฅ
102
+ await client.callTool({
103
+ name: "remember",
104
+ arguments: {
105
+ content: "์‚ฌ์šฉ์ž๋Š” React Hook์„ ํ•™์Šตํ–ˆ์Šต๋‹ˆ๋‹ค. useState๋Š” ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , useEffect๋Š” ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.",
106
+ type: "episodic",
107
+ tags: ["react", "hooks", "javascript"],
108
+ importance: 0.8
109
+ }
110
+ });
111
+
112
+ // ๋‚˜์ค‘์— ๊ด€๋ จ ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰
113
+ const results = await client.callTool({
114
+ name: "recall",
115
+ arguments: {
116
+ query: "React Hook ์‚ฌ์šฉ๋ฒ•",
117
+ limit: 5
118
+ }
119
+ });
120
+ ```
121
+
122
+ ### ๐Ÿ“š ์ง€์‹ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ
123
+ ```typescript
124
+ // ์ค‘์š”ํ•œ ์ง€์‹์„ ์˜๋ฏธ๊ธฐ์–ต์œผ๋กœ ์ €์žฅ
125
+ await client.callTool({
126
+ name: "remember",
127
+ arguments: {
128
+ content: "TypeScript์˜ ์ œ๋„ค๋ฆญ์€ ํƒ€์ž…์„ ๋งค๊ฐœ๋ณ€์ˆ˜ํ™”ํ•˜์—ฌ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.",
129
+ type: "semantic",
130
+ tags: ["typescript", "generics", "programming"],
131
+ importance: 0.9
132
+ }
133
+ });
134
+ ```
135
+
136
+ ### ๐Ÿ”ง ์ ˆ์ฐจ ๊ธฐ์–ต ๊ด€๋ฆฌ
137
+ ```typescript
138
+ // ์ž‘์—… ์ ˆ์ฐจ๋ฅผ ์ ˆ์ฐจ๊ธฐ์–ต์œผ๋กœ ์ €์žฅ
139
+ await client.callTool({
140
+ name: "remember",
141
+ arguments: {
142
+ content: "Docker ์ปจํ…Œ์ด๋„ˆ ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ ์ ˆ์ฐจ: 1) Dockerfile ์ž‘์„ฑ 2) docker build ์‹คํ–‰ 3) docker run์œผ๋กœ ํ…Œ์ŠคํŠธ 4) ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ํ‘ธ์‹œ",
143
+ type: "procedural",
144
+ tags: ["docker", "deployment", "devops"],
145
+ importance: 0.7
146
+ }
147
+ });
148
+ ```
149
+
150
+ ## ๐Ÿ› ๏ธ ์‚ฌ์šฉ๋ฒ•
151
+
152
+ ### MCP ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ
153
+
154
+ ```typescript
155
+ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
156
+
157
+ const client = new Client({
158
+ name: "memento-client",
159
+ version: "0.1.0"
160
+ }, {
161
+ capabilities: {
162
+ tools: {},
163
+ resources: {},
164
+ prompts: {}
165
+ }
166
+ });
167
+
168
+ // stdio ์—ฐ๊ฒฐ
169
+ await client.connect({
170
+ command: "node",
171
+ args: ["dist/server/index.js"]
172
+ });
173
+
174
+ // WebSocket ์—ฐ๊ฒฐ
175
+ await client.connect({
176
+ transport: {
177
+ type: "websocket",
178
+ url: "ws://localhost:9001/mcp"
179
+ }
180
+ });
181
+ ```
182
+
183
+ ### ๊ธฐ์–ต ์ €์žฅ
184
+
185
+ ```typescript
186
+ // ๊ธฐ์–ต ์ €์žฅ
187
+ const result = await client.callTool({
188
+ name: "remember",
189
+ arguments: {
190
+ content: "React Hook์— ๋Œ€ํ•ด ํ•™์Šตํ–ˆ์Šต๋‹ˆ๋‹ค. useState๋Š” ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , useEffect๋Š” ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.",
191
+ type: "episodic",
192
+ tags: ["react", "hooks", "javascript"],
193
+ importance: 0.8
194
+ }
195
+ });
196
+ ```
197
+
198
+ ### ๊ธฐ์–ต ๊ฒ€์ƒ‰
199
+
200
+ ```typescript
201
+ // ๊ธฐ์–ต ๊ฒ€์ƒ‰
202
+ const results = await client.callTool({
203
+ name: "recall",
204
+ arguments: {
205
+ query: "React Hook",
206
+ filters: {
207
+ type: ["episodic", "semantic"],
208
+ tags: ["react"]
209
+ },
210
+ limit: 10
211
+ }
212
+ });
213
+ ```
214
+
215
+ ## ๐Ÿ“š ๋ฌธ์„œ
216
+
217
+ - [์ž„๋ฒ ๋”ฉ ์„œ๋น„์Šค ๊ฐ€์ด๋“œ](docs/ko/embedding-service-guide.md) - ์ž„๋ฒ ๋”ฉ ์„œ๋น„์Šค ์‚ฌ์šฉ๋ฒ•
218
+ - [์„ฑ๋Šฅ ๋ฒค์น˜๋งˆํฌ](docs/ko/embedding-performance-benchmark.md) - ์„ฑ๋Šฅ ๋น„๊ต ๊ฒฐ๊ณผ
219
+ - [API ๋ ˆํผ๋Ÿฐ์Šค](docs/ko/embedding-api-reference.md) - API ์ƒ์„ธ ๋ฌธ์„œ
220
+ - [์„ค์ • ๊ฐ€์ด๋“œ](docs/ko/embedding-configuration.md) - ํ™˜๊ฒฝ ์„ค์ • ๋ฐฉ๋ฒ•
221
+
222
+ ## ๐Ÿ“‹ API ๋ฌธ์„œ
223
+
224
+ ### MCP Tools (ํ•ต์‹ฌ 5๊ฐœ๋งŒ)
225
+
226
+ > **์ค‘์š”**: MCP ํด๋ผ์ด์–ธํŠธ๋Š” ํ•ต์‹ฌ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ 5๊ฐœ๋งŒ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
227
+ > ๊ด€๋ฆฌ ๊ธฐ๋Šฅ๋“ค์€ HTTP API ์—”๋“œํฌ์ธํŠธ๋กœ ๋ถ„๋ฆฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
228
+
229
+ | Tool | ์„ค๋ช… | ํŒŒ๋ผ๋ฏธํ„ฐ |
230
+ |------|------|----------|
231
+ | `remember` | ๊ธฐ์–ต ์ €์žฅ | content, type, tags, importance, source, privacy_scope |
232
+ | `recall` | ๊ธฐ์–ต ๊ฒ€์ƒ‰ | query, filters, limit |
233
+ | `pin` | ๊ธฐ์–ต ๊ณ ์ • | memory_id |
234
+ | `unpin` | ๊ธฐ์–ต ๊ณ ์ • ํ•ด์ œ | memory_id |
235
+ | `forget` | ๊ธฐ์–ต ์‚ญ์ œ | memory_id, hard |
236
+
237
+ ### HTTP ๊ด€๋ฆฌ API
238
+
239
+ | ์—”๋“œํฌ์ธํŠธ | ์„ค๋ช… | ๋ฉ”์„œ๋“œ |
240
+ |-----------|------|--------|
241
+ | `/admin/memory/cleanup` | ๋ฉ”๋ชจ๋ฆฌ ์ •๋ฆฌ | POST |
242
+ | `/admin/stats/forgetting` | ๋ง๊ฐ ํ†ต๊ณ„ ์กฐํšŒ | GET |
243
+ | `/admin/stats/performance` | ์„ฑ๋Šฅ ํ†ต๊ณ„ ์กฐํšŒ | GET |
244
+ | `/admin/stats/errors` | ์—๋Ÿฌ ํ†ต๊ณ„ ์กฐํšŒ | GET |
245
+ | `/admin/errors/resolve` | ์—๋Ÿฌ ํ•ด๊ฒฐ | POST |
246
+ | `/admin/alerts/performance` | ์„ฑ๋Šฅ ์•Œ๋ฆผ ์กฐํšŒ | GET |
247
+ | `/admin/database/optimize` | ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ตœ์ ํ™” | POST |
248
+
249
+ ### Resources
250
+
251
+ | Resource | ์„ค๋ช… |
252
+ |----------|------|
253
+ | `memory/{id}` | ๋‹จ์ผ ๊ธฐ์–ต ์ƒ์„ธ ์ •๋ณด |
254
+ | `memory/search?query=...` | ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์บ์‹œ |
255
+
256
+ ## ๐Ÿ”ง ์„ค์ •
257
+
258
+ ### ํ™˜๊ฒฝ ๋ณ€์ˆ˜
259
+
260
+ | ๋ณ€์ˆ˜ | ๊ธฐ๋ณธ๊ฐ’ | ์„ค๋ช… |
261
+ |------|--------|------|
262
+ | `NODE_ENV` | development | ์‹คํ–‰ ํ™˜๊ฒฝ |
263
+ | `PORT` | 9001 | ์„œ๋ฒ„ ํฌํŠธ |
264
+ | `DB_PATH` | ./data/memory.db | ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฒฝ๋กœ |
265
+ | `LOG_LEVEL` | info | ๋กœ๊ทธ ๋ ˆ๋ฒจ |
266
+ | `OPENAI_API_KEY` | - | OpenAI API ํ‚ค (์„ ํƒ์‚ฌํ•ญ) |
267
+
268
+ ### ๋ง๊ฐ ์ •์ฑ… ์„ค์ •
269
+
270
+ ```bash
271
+ # ๋ง๊ฐ ์ž„๊ณ„๊ฐ’
272
+ FORGET_THRESHOLD=0.6
273
+ SOFT_DELETE_THRESHOLD=0.6
274
+ HARD_DELETE_THRESHOLD=0.8
275
+
276
+ # TTL ์„ค์ • (์ผ ๋‹จ์œ„)
277
+ TTL_SOFT_WORKING=2
278
+ TTL_SOFT_EPISODIC=30
279
+ TTL_SOFT_SEMANTIC=180
280
+ TTL_SOFT_PROCEDURAL=90
281
+ ```
282
+
283
+ ## ๐Ÿงช ํ…Œ์ŠคํŠธ
284
+
285
+ ```bash
286
+ # ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์‹คํ–‰ (Vitest)
287
+ npm run test
288
+
289
+ # ๊ฐœ๋ณ„ ํ…Œ์ŠคํŠธ ์‹คํ–‰
290
+ npm run test:client # ํด๋ผ์ด์–ธํŠธ ํ…Œ์ŠคํŠธ
291
+ npm run test:search # ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ
292
+ npm run test:embedding # ์ž„๋ฒ ๋”ฉ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ
293
+ npm run test:lightweight-embedding # ๊ฒฝ๋Ÿ‰ ์ž„๋ฒ ๋”ฉ ํ…Œ์ŠคํŠธ
294
+ npm run test:forgetting # ๋ง๊ฐ ์ •์ฑ… ํ…Œ์ŠคํŠธ
295
+ npm run test:performance # ์„ฑ๋Šฅ ๋ฒค์น˜๋งˆํฌ
296
+ npm run test:monitoring # ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ํ…Œ์ŠคํŠธ
297
+ npm run test:error-logging # ์—๋Ÿฌ ๋กœ๊น… ํ…Œ์ŠคํŠธ
298
+ npm run test:performance-alerts # ์„ฑ๋Šฅ ์•Œ๋ฆผ ํ…Œ์ŠคํŠธ
299
+
300
+ # ํ…Œ์ŠคํŠธ ๊ฐ์‹œ ๋ชจ๋“œ
301
+ npm run test -- --watch
302
+
303
+ # ์ปค๋ฒ„๋ฆฌ์ง€ ํฌํ•จ ํ…Œ์ŠคํŠธ
304
+ npm run test -- --coverage
305
+ ```
306
+
307
+ ## ๐Ÿ“š ๊ฐœ๋ฐœ์ž ๊ฐ€์ด๋“œ๋ผ์ธ
308
+
309
+ ### ์ €์žฅ์†Œ ๊ฐ€์ด๋“œ๋ผ์ธ (`AGENTS.md`)
310
+ - **ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ**: `src/` ํ•˜์œ„ ๋ชจ๋“ˆ๋ณ„ ์กฐ์งํ™”
311
+ - **๋นŒ๋“œ/ํ…Œ์ŠคํŠธ ๋ช…๋ น์–ด**: `npm run dev`, `npm run build`, `npm run test` ๋“ฑ
312
+ - **์ฝ”๋”ฉ ์Šคํƒ€์ผ**: Node.js โ‰ฅ 20, TypeScript ES ๋ชจ๋“ˆ, 2์นธ ๋“ค์—ฌ์“ฐ๊ธฐ
313
+ - **ํ…Œ์ŠคํŠธ ๊ฐ€์ด๋“œ๋ผ์ธ**: Vitest ๊ธฐ๋ฐ˜, `src/test/` ๋˜๋Š” `*.spec.ts` ํŒŒ์ผ
314
+ - **์ปค๋ฐ‹/PR ๊ฐ€์ด๋“œ๋ผ์ธ**: Conventional Commits, ํ•œ๊ตญ์–ด ์ปจํ…์ŠคํŠธ ํฌํ•จ
315
+ - **ํ™˜๊ฒฝ/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค**: `.env` ์„ค์ •, `data/` ํด๋” ๊ด€๋ฆฌ
316
+
317
+ ## ๐Ÿ“Š ์„ฑ๋Šฅ ์ง€ํ‘œ
318
+
319
+ ### ๊ธฐ๋ณธ ์„ฑ๋Šฅ
320
+ - **๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ**: ํ‰๊ท  ์ฟผ๋ฆฌ ์‹œ๊ฐ„ 0.16-0.22ms
321
+ - **๊ฒ€์ƒ‰ ์„ฑ๋Šฅ**: 0.78-4.24ms (์บ์‹œ ํšจ๊ณผ๋กœ ๊ฐœ์„ )
322
+ - **๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰**: 11-15MB ํž™ ์‚ฌ์šฉ๋Ÿ‰
323
+ - **๋™์‹œ ์—ฐ๊ฒฐ**: ์ตœ๋Œ€ 1000๊ฐœ ์—ฐ๊ฒฐ ์ง€์›
324
+
325
+ ### ๊ณ ๊ธ‰ ์„ฑ๋Šฅ ์ตœ์ ํ™”
326
+ - **์บ์‹œ ํžˆํŠธ์œจ**: 80% ์ด์ƒ (๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์บ์‹ฑ)
327
+ - **์ž„๋ฒ ๋”ฉ ์บ์‹ฑ**: 24์‹œ๊ฐ„ TTL๋กœ ๋น„์šฉ ์ ˆ์•ฝ
328
+ - **๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ**: ์›Œ์ปค ํ’€ ๊ธฐ๋ฐ˜ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ
329
+ - **๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ตœ์ ํ™”**: ์ž๋™ ์ธ๋ฑ์Šค ์ถ”์ฒœ ๋ฐ ์ƒ์„ฑ
330
+ - **์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง**: 30์ดˆ๋งˆ๋‹ค ์ž๋™ ์„ฑ๋Šฅ ์ฒดํฌ
331
+ - **์—๋Ÿฌ ๋กœ๊น…**: ๊ตฌ์กฐํ™”๋œ ์—๋Ÿฌ ์ถ”์  ๋ฐ ํ†ต๊ณ„
332
+ - **์„ฑ๋Šฅ ์•Œ๋ฆผ**: ์ž„๊ณ„๊ฐ’ ๊ธฐ๋ฐ˜ ์ž๋™ ์•Œ๋ฆผ ์‹œ์Šคํ…œ
333
+
334
+ ### ๊ฒฝ๋Ÿ‰ ์ž„๋ฒ ๋”ฉ ์„ฑ๋Šฅ
335
+ - **TF-IDF ๋ฒกํ„ฐํ™”**: 512์ฐจ์› ๊ณ ์ • ๋ฒกํ„ฐ ์ƒ์„ฑ
336
+ - **๋‹ค๊ตญ์–ด ์ง€์›**: ํ•œ๊ตญ์–ด/์˜์–ด ๋ถˆ์šฉ์–ด ์ œ๊ฑฐ
337
+ - **๋กœ์ปฌ ์ฒ˜๋ฆฌ**: OpenAI API ์—†์ด ๋™์ž‘
338
+ - **์ฝ”์‚ฌ์ธ ์œ ์‚ฌ๋„**: ๋น ๋ฅธ ๋ฒกํ„ฐ ๊ฒ€์ƒ‰
339
+
340
+ ## ๐Ÿ—๏ธ ์•„ํ‚คํ…์ฒ˜
341
+
342
+ ### M1: ๊ฐœ์ธ์šฉ (ํ˜„์žฌ ๊ตฌํ˜„)
343
+ - **์Šคํ† ๋ฆฌ์ง€**: better-sqlite3 ์ž„๋ฒ ๋””๋“œ
344
+ - **์ธ๋ฑ์Šค**: FTS5 + sqlite-vss
345
+ - **์ธ์ฆ**: ์—†์Œ (๋กœ์ปฌ ์ „์šฉ)
346
+ - **์šด์˜**: ๋กœ์ปฌ ์‹คํ–‰
347
+ - **MCP ํด๋ผ์ด์–ธํŠธ**: ํ•ต์‹ฌ 5๊ฐœ ๋„๊ตฌ๋งŒ ๋…ธ์ถœ
348
+ - **๊ด€๋ฆฌ ๊ธฐ๋Šฅ**: HTTP API๋กœ ๋ถ„๋ฆฌ
349
+ - **์ถ”๊ฐ€ ๊ธฐ๋Šฅ**: ๊ฒฝ๋Ÿ‰ ์ž„๋ฒ ๋”ฉ, ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง, ์บ์‹œ ์‹œ์Šคํ…œ
350
+
351
+ ### M2: ํŒ€ ํ˜‘์—… (๊ณ„ํš)
352
+ - **์Šคํ† ๋ฆฌ์ง€**: SQLite ์„œ๋ฒ„ ๋ชจ๋“œ
353
+ - **์ธ์ฆ**: API Key
354
+ - **์šด์˜**: Docker ๋‹จ์ผ ์ปจํ…Œ์ด๋„ˆ
355
+
356
+ ### M3: ์กฐ์ง ์ดˆ์ž… (๊ณ„ํš)
357
+ - **์Šคํ† ๋ฆฌ์ง€**: PostgreSQL + pgvector
358
+ - **์ธ์ฆ**: JWT
359
+ - **์šด์˜**: Docker Compose
360
+
361
+ ## โ“ ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ (FAQ)
362
+
363
+ ### Q: Memento๋Š” ์–ด๋–ค AI Agent์™€ ํ˜ธํ™˜๋˜๋‚˜์š”?
364
+ A: MCP(Model Context Protocol)๋ฅผ ์ง€์›ํ•˜๋Š” ๋ชจ๋“  AI Agent์™€ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค. Claude, GPT-4, Gemini ๋“ฑ๊ณผ ์—ฐ๋™ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
365
+
366
+ ### Q: ๊ธฐ์–ต ๋ฐ์ดํ„ฐ๋Š” ์–ด๋””์— ์ €์žฅ๋˜๋‚˜์š”?
367
+ A: ๊ธฐ๋ณธ์ ์œผ๋กœ ๋กœ์ปฌ SQLite ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(`./data/memory.db`)์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. Docker๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
368
+
369
+ ### Q: OpenAI API ํ‚ค๊ฐ€ ํ•„์š”ํ•œ๊ฐ€์š”?
370
+ A: ์„ ํƒ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. OpenAI API ํ‚ค๊ฐ€ ์—†์–ด๋„ TF-IDF ๊ธฐ๋ฐ˜ ๊ฒฝ๋Ÿ‰ ์ž„๋ฒ ๋”ฉ์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋” ์ •ํ™•ํ•œ ๊ฒ€์ƒ‰์„ ์›ํ•œ๋‹ค๋ฉด OpenAI API ํ‚ค๋ฅผ ์„ค์ •ํ•˜์„ธ์š”.
371
+
372
+ ### Q: ๊ธฐ์–ต ์šฉ๋Ÿ‰์— ์ œํ•œ์ด ์žˆ๋‚˜์š”?
373
+ A: SQLite ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ œํ•œ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ๊ธฐ์–ต์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
374
+
375
+ ### Q: ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์™€ ๊ธฐ์–ต์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
376
+ A: ํ˜„์žฌ M1 ๋ฒ„์ „์€ ๊ฐœ์ธ์šฉ์ž…๋‹ˆ๋‹ค. M2 ๋ฒ„์ „๋ถ€ํ„ฐ ํŒ€ ํ˜‘์—… ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.
377
+
378
+ ### Q: ๊ธฐ์–ต์ด ์ž๋™์œผ๋กœ ์‚ญ์ œ๋˜๋‚˜์š”?
379
+ A: ๋„ค, ๋ง๊ฐ ์ •์ฑ…์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค. ์ค‘์š”ํ•œ ๊ธฐ์–ต์€ `pin` ๊ธฐ๋Šฅ์œผ๋กœ ๊ณ ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
380
+
381
+ ## ๐Ÿค ๊ธฐ์—ฌํ•˜๊ธฐ
382
+
383
+ Memento ํ”„๋กœ์ ํŠธ์— ๊ธฐ์—ฌํ•˜๊ณ  ์‹ถ์œผ์‹ ๊ฐ€์š”? ์ž์„ธํ•œ ๊ฐ€์ด๋“œ๋Š” [CONTRIBUTING.md](CONTRIBUTING.md)๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
384
+
385
+ ### ๋น ๋ฅธ ๊ธฐ์—ฌ ์‹œ์ž‘
386
+ 1. **Fork** the Project
387
+ 2. **Create** your Feature Branch (`git checkout -b feature/AmazingFeature`)
388
+ 3. **Commit** your Changes (`git commit -m 'feat: add some AmazingFeature'`)
389
+ 4. **Push** to the Branch (`git push origin feature/AmazingFeature`)
390
+ 5. **Open** a Pull Request
391
+
392
+ ### ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •
393
+ ```bash
394
+ # ์ €์žฅ์†Œ ํฌํฌ ํ›„ ํด๋ก 
395
+ git clone https://github.com/your-username/memento.git
396
+ cd memento
397
+
398
+ # ์˜์กด์„ฑ ์„ค์น˜
399
+ npm install
400
+
401
+ # ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์‹œ์ž‘
402
+ npm run dev
403
+
404
+ # ํ…Œ์ŠคํŠธ ์‹คํ–‰
405
+ npm run test
406
+ ```
407
+
408
+ ### ๊ธฐ์—ฌ ๋ฐฉ๋ฒ•
409
+ - ๐Ÿ› **๋ฒ„๊ทธ ๋ฆฌํฌํŠธ**: [GitHub Issues](https://github.com/jee1/memento/issues)์—์„œ ๋ฒ„๊ทธ๋ฅผ ์‹ ๊ณ ํ•˜์„ธ์š”
410
+ - ๐Ÿ’ก **๊ธฐ๋Šฅ ์ œ์•ˆ**: ์ƒˆ๋กœ์šด ์•„์ด๋””์–ด๋ฅผ ์ œ์•ˆํ•ด์ฃผ์„ธ์š”
411
+ - ๐Ÿ“ **๋ฌธ์„œ ๊ฐœ์„ **: ๋ฌธ์„œ๋ฅผ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”
412
+ - ๐Ÿ”ง **์ฝ”๋“œ ๊ธฐ์—ฌ**: ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด๋‚˜ ๋ฒ„๊ทธ ์ˆ˜์ •์„ ๋„์™€์ฃผ์„ธ์š”
413
+
414
+ ## ๐Ÿ“„ ๋ผ์ด์„ ์Šค
415
+
416
+ ์ด ํ”„๋กœ์ ํŠธ๋Š” MIT ๋ผ์ด์„ ์Šค ํ•˜์— ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ `LICENSE` ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
417
+
418
+ ## ๐Ÿ“ž ์ง€์›
419
+
420
+ - ์ด์Šˆ ๋ฆฌํฌํŠธ: [GitHub Issues](https://github.com/jee1/memento/issues)
421
+ - ๋ฌธ์„œ: [Wiki](https://github.com/jee1/memento/wiki)
422
+ - ๊ฐœ๋ฐœ์ž ๊ฐ€์ด๋“œ: [docs/developer-guide.md](docs/developer-guide.md)
423
+ - API ์ฐธ์กฐ: [docs/api-reference.md](docs/api-reference.md)
424
+
425
+ ## ๐Ÿ™ ๊ฐ์‚ฌ์˜ ๋ง
426
+
427
+ - [Model Context Protocol](https://modelcontextprotocol.io/) - MCP ํ”„๋กœํ† ์ฝœ
428
+ - [OpenAI](https://openai.com/) - ์ž„๋ฒ ๋”ฉ ์„œ๋น„์Šค
429
+ - [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) - ๊ณ ์„ฑ๋Šฅ SQLite ๋“œ๋ผ์ด๋ฒ„
430
+ - [Express](https://expressjs.com/) - ์›น ํ”„๋ ˆ์ž„์›Œํฌ
431
+ - [Vitest](https://vitest.dev/) - ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ
432
+ - [TypeScript](https://www.typescriptlang.org/) - ๊ฐœ๋ฐœ ์–ธ์–ด