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
package/README.md ADDED
@@ -0,0 +1,427 @@
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/) - ๊ฐœ๋ฐœ ์–ธ์–ด