claude-memory-layer 1.0.30 → 1.0.32

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 (338) hide show
  1. package/README.md +12 -5
  2. package/dist/cli/index.js +4 -3
  3. package/dist/cli/index.js.map +2 -2
  4. package/dist/core/index.js +3 -2
  5. package/dist/core/index.js.map +2 -2
  6. package/dist/hooks/post-tool-use.js +3 -2
  7. package/dist/hooks/post-tool-use.js.map +2 -2
  8. package/dist/hooks/semantic-daemon.js +3 -2
  9. package/dist/hooks/semantic-daemon.js.map +2 -2
  10. package/dist/hooks/session-end.js +3 -2
  11. package/dist/hooks/session-end.js.map +2 -2
  12. package/dist/hooks/session-start.js +3 -2
  13. package/dist/hooks/session-start.js.map +2 -2
  14. package/dist/hooks/stop.js +3 -2
  15. package/dist/hooks/stop.js.map +2 -2
  16. package/dist/hooks/user-prompt-submit.js +3 -2
  17. package/dist/hooks/user-prompt-submit.js.map +2 -2
  18. package/dist/index.js +3 -2
  19. package/dist/index.js.map +2 -2
  20. package/dist/mcp/index.js +3 -2
  21. package/dist/mcp/index.js.map +2 -2
  22. package/dist/server/api/index.js +3 -2
  23. package/dist/server/api/index.js.map +2 -2
  24. package/dist/server/index.js +3 -2
  25. package/dist/server/index.js.map +2 -2
  26. package/dist/services/memory-service.js +3 -2
  27. package/dist/services/memory-service.js.map +2 -2
  28. package/package.json +10 -3
  29. package/scripts/postinstall-embedding-backend.cjs +18 -16
  30. package/AGENTS.md +0 -71
  31. package/CLAUDE.md +0 -30
  32. package/HANDOFF.md +0 -92
  33. package/Memo.txt +0 -558
  34. package/benchmarks/replay/anonymized-real-sessions.json +0 -48
  35. package/config/kpi-thresholds.json +0 -7
  36. package/context.md +0 -636
  37. package/docs/ARCHITECTURE_COMPARISON_AND_RECOMMENDATIONS.md +0 -627
  38. package/docs/HERMES_MEMORY_INGESTION_ANALYSIS.md +0 -440
  39. package/docs/MCP_MEMORY_SERVICE_COMPARATIVE_REVIEW.md +0 -271
  40. package/docs/MEMORY_USEFULNESS_AUDIT.md +0 -371
  41. package/docs/MEMORY_USEFULNESS_AUDIT_RAW.json +0 -80
  42. package/docs/MEMSEARCH_PROJECT_STRUCTURE_ANALYSIS.md +0 -333
  43. package/docs/MEMU_ADOPTION.md +0 -40
  44. package/docs/OPERATIONS.md +0 -18
  45. package/docs/PRODUCT_VALIDATION_MATRIX.md +0 -82
  46. package/docs/PROJECT_STRUCTURE_ANALYSIS.md +0 -421
  47. package/docs/REFACTORING_MILESTONES_AND_ISSUES.md +0 -501
  48. package/docs/REFACTORING_PLAN_THIN_CORE.md +0 -414
  49. package/docs/REFERENCE_PROJECT_ANALYSES.md +0 -25
  50. package/docs/SUPERLOCALMEMORY_PROJECT_STRUCTURE_ANALYSIS.md +0 -452
  51. package/docs/TARGET_ARCHITECTURE_AND_FOLDER_STRUCTURE.md +0 -446
  52. package/docs/architecture/comparison-index.md +0 -47
  53. package/docs/reports/codex-real-data-validation-20260505T040447Z.md +0 -46
  54. package/plan.md +0 -1642
  55. package/scripts/build.ts +0 -159
  56. package/scripts/bump-patch-version.sh +0 -18
  57. package/scripts/delete-unknown-projects.js +0 -154
  58. package/scripts/fix-sync-gap.js +0 -32
  59. package/scripts/generate-session-qrels.ts +0 -126
  60. package/scripts/heartbeat-memory-orchestrator.sh +0 -28
  61. package/scripts/replay-retrieval-benchmark.ts +0 -69
  62. package/scripts/report-sync-gap.js +0 -26
  63. package/scripts/review-queue-auto-resolve.js +0 -21
  64. package/scripts/sync-gap-auto-heal.sh +0 -17
  65. package/spec.md +0 -624
  66. package/specs/20260207-dashboard-upgrade/context.md +0 -38
  67. package/specs/20260207-dashboard-upgrade/spec.md +0 -96
  68. package/specs/citations-system/context.md +0 -243
  69. package/specs/citations-system/plan.md +0 -495
  70. package/specs/citations-system/spec.md +0 -371
  71. package/specs/endless-mode/context.md +0 -305
  72. package/specs/endless-mode/plan.md +0 -620
  73. package/specs/endless-mode/spec.md +0 -455
  74. package/specs/entity-edge-model/context.md +0 -401
  75. package/specs/entity-edge-model/plan.md +0 -459
  76. package/specs/entity-edge-model/spec.md +0 -391
  77. package/specs/evidence-aligner-v2/context.md +0 -401
  78. package/specs/evidence-aligner-v2/plan.md +0 -303
  79. package/specs/evidence-aligner-v2/spec.md +0 -312
  80. package/specs/mcp-desktop-integration/context.md +0 -278
  81. package/specs/mcp-desktop-integration/plan.md +0 -550
  82. package/specs/mcp-desktop-integration/spec.md +0 -494
  83. package/specs/memory-utilization-improvements/context.md +0 -145
  84. package/specs/memory-utilization-improvements/plan.md +0 -361
  85. package/specs/memory-utilization-improvements/spec.md +0 -361
  86. package/specs/post-tool-use-hook/context.md +0 -319
  87. package/specs/post-tool-use-hook/plan.md +0 -469
  88. package/specs/post-tool-use-hook/spec.md +0 -364
  89. package/specs/private-tags/context.md +0 -288
  90. package/specs/private-tags/plan.md +0 -412
  91. package/specs/private-tags/spec.md +0 -345
  92. package/specs/progressive-disclosure/context.md +0 -346
  93. package/specs/progressive-disclosure/plan.md +0 -663
  94. package/specs/progressive-disclosure/spec.md +0 -415
  95. package/specs/selective-tool-observation/context.md +0 -100
  96. package/specs/selective-tool-observation/plan.md +0 -158
  97. package/specs/selective-tool-observation/spec.md +0 -127
  98. package/specs/task-entity-system/context.md +0 -297
  99. package/specs/task-entity-system/plan.md +0 -301
  100. package/specs/task-entity-system/spec.md +0 -314
  101. package/specs/thin-core-refactor/context.md +0 -275
  102. package/specs/thin-core-refactor/plan.md +0 -536
  103. package/specs/thin-core-refactor/spec.md +0 -465
  104. package/specs/vector-outbox-v2/context.md +0 -470
  105. package/specs/vector-outbox-v2/plan.md +0 -562
  106. package/specs/vector-outbox-v2/spec.md +0 -466
  107. package/specs/web-viewer-ui/context.md +0 -384
  108. package/specs/web-viewer-ui/plan.md +0 -797
  109. package/specs/web-viewer-ui/spec.md +0 -516
  110. package/src/adapters/claude/capture/index.ts +0 -3
  111. package/src/adapters/claude/context/index.ts +0 -3
  112. package/src/adapters/claude/hooks/index.ts +0 -21
  113. package/src/adapters/claude/hooks/post-tool-use.ts +0 -239
  114. package/src/adapters/claude/hooks/prompt-injection-policy.ts +0 -104
  115. package/src/adapters/claude/hooks/semantic-daemon-client.ts +0 -209
  116. package/src/adapters/claude/hooks/semantic-daemon.ts +0 -283
  117. package/src/adapters/claude/hooks/session-end.ts +0 -59
  118. package/src/adapters/claude/hooks/session-start.ts +0 -73
  119. package/src/adapters/claude/hooks/stop.ts +0 -128
  120. package/src/adapters/claude/hooks/user-prompt-submit.ts +0 -361
  121. package/src/adapters/claude/index.ts +0 -4
  122. package/src/adapters/claude/transcript/index.ts +0 -4
  123. package/src/adapters/claude/transcript/transcript-reader.ts +0 -57
  124. package/src/adapters/claude/transcript/turn-reconstructor.ts +0 -65
  125. package/src/apps/cli/claude-settings-hooks.ts +0 -138
  126. package/src/apps/cli/codex-import-runner.ts +0 -125
  127. package/src/apps/cli/codex-validation-output.ts +0 -95
  128. package/src/apps/cli/hermes-import-runner.ts +0 -130
  129. package/src/apps/cli/hermes-validation-output.ts +0 -91
  130. package/src/apps/cli/index.ts +0 -1735
  131. package/src/apps/cli/mcp-install.ts +0 -106
  132. package/src/apps/cli/retrieval-disclosure-output.ts +0 -196
  133. package/src/apps/dashboard/assets/js/bootstrap.js +0 -244
  134. package/src/apps/dashboard/assets/js/chat.js +0 -373
  135. package/src/apps/dashboard/assets/js/disclosure.js +0 -232
  136. package/src/apps/dashboard/assets/js/modals.js +0 -298
  137. package/src/apps/dashboard/assets/js/overview.js +0 -655
  138. package/src/apps/dashboard/assets/js/state.js +0 -72
  139. package/src/apps/dashboard/assets/js/views.js +0 -468
  140. package/src/apps/dashboard/index.html +0 -543
  141. package/src/apps/dashboard/index.ts +0 -3
  142. package/src/apps/dashboard/style.css +0 -1750
  143. package/src/apps/index.ts +0 -5
  144. package/src/apps/server/api/chat.ts +0 -244
  145. package/src/apps/server/api/citations.ts +0 -105
  146. package/src/apps/server/api/events.ts +0 -137
  147. package/src/apps/server/api/health.ts +0 -53
  148. package/src/apps/server/api/index.ts +0 -26
  149. package/src/apps/server/api/projects.ts +0 -74
  150. package/src/apps/server/api/search.ts +0 -184
  151. package/src/apps/server/api/sessions.ts +0 -115
  152. package/src/apps/server/api/stats.ts +0 -723
  153. package/src/apps/server/api/turns.ts +0 -143
  154. package/src/apps/server/api/utils.ts +0 -65
  155. package/src/apps/server/index.ts +0 -111
  156. package/src/cli/index.ts +0 -3
  157. package/src/cli/retrieval-disclosure-output.ts +0 -2
  158. package/src/compat/index.ts +0 -5
  159. package/src/core/canonical-key.ts +0 -186
  160. package/src/core/citation-generator.ts +0 -63
  161. package/src/core/consolidated-store.ts +0 -356
  162. package/src/core/consolidation-worker.ts +0 -493
  163. package/src/core/context-formatter.ts +0 -276
  164. package/src/core/continuity-manager.ts +0 -341
  165. package/src/core/db-wrapper.ts +0 -64
  166. package/src/core/derive/fact-deriver.ts +0 -170
  167. package/src/core/derive/index.ts +0 -2
  168. package/src/core/derive/summary-deriver.ts +0 -76
  169. package/src/core/edge-repo.ts +0 -333
  170. package/src/core/embedder.ts +0 -4
  171. package/src/core/engine/embedding-maintenance-service.ts +0 -187
  172. package/src/core/engine/endless-memory-services.ts +0 -4
  173. package/src/core/engine/index.ts +0 -19
  174. package/src/core/engine/memory-engine-services.ts +0 -170
  175. package/src/core/engine/memory-ingest-service.ts +0 -317
  176. package/src/core/engine/memory-query-service.ts +0 -173
  177. package/src/core/engine/memory-runtime-service.ts +0 -162
  178. package/src/core/engine/memory-service-composition.ts +0 -231
  179. package/src/core/engine/retrieval-analytics-service.ts +0 -181
  180. package/src/core/engine/retrieval-disclosure-service.ts +0 -420
  181. package/src/core/engine/retrieval-orchestrator.ts +0 -377
  182. package/src/core/engine/retrieval-services.ts +0 -176
  183. package/src/core/engine/shared-memory-services.ts +0 -4
  184. package/src/core/entity-repo.ts +0 -349
  185. package/src/core/event-store.ts +0 -779
  186. package/src/core/evidence-aligner.ts +0 -635
  187. package/src/core/external-market-context.ts +0 -582
  188. package/src/core/graduation-worker.ts +0 -171
  189. package/src/core/graduation.ts +0 -377
  190. package/src/core/index.ts +0 -64
  191. package/src/core/ingest-interceptor.ts +0 -80
  192. package/src/core/markdown-mirror.ts +0 -70
  193. package/src/core/matcher.ts +0 -208
  194. package/src/core/md-mirror.ts +0 -92
  195. package/src/core/metadata-extractor.ts +0 -203
  196. package/src/core/model/memory-fact.ts +0 -30
  197. package/src/core/model/memory-rule.ts +0 -14
  198. package/src/core/model/memory-summary.ts +0 -21
  199. package/src/core/model/raw-event.ts +0 -28
  200. package/src/core/model/retrieval-result.ts +0 -35
  201. package/src/core/mongo-sync-config.ts +0 -165
  202. package/src/core/mongo-sync-worker.ts +0 -381
  203. package/src/core/privacy/filter.ts +0 -190
  204. package/src/core/privacy/index.ts +0 -20
  205. package/src/core/privacy/tag-parser.ts +0 -145
  206. package/src/core/product-validation-matrix.ts +0 -314
  207. package/src/core/progressive-retriever.ts +0 -414
  208. package/src/core/registry/project-path.ts +0 -54
  209. package/src/core/registry/session-registry.ts +0 -69
  210. package/src/core/replay-evaluator.ts +0 -625
  211. package/src/core/retrieval-benchmark.ts +0 -117
  212. package/src/core/retrieval-quality.ts +0 -109
  213. package/src/core/retriever.ts +0 -800
  214. package/src/core/session-qrels.ts +0 -360
  215. package/src/core/shared-event-store.ts +0 -114
  216. package/src/core/shared-promoter.ts +0 -249
  217. package/src/core/shared-store.ts +0 -289
  218. package/src/core/shared-vector-store.ts +0 -203
  219. package/src/core/sqlite-event-store.ts +0 -1846
  220. package/src/core/sqlite-wrapper.ts +0 -116
  221. package/src/core/sync-worker.ts +0 -228
  222. package/src/core/tag-taxonomy.ts +0 -51
  223. package/src/core/task/blocker-resolver.ts +0 -333
  224. package/src/core/task/index.ts +0 -9
  225. package/src/core/task/task-matcher.ts +0 -240
  226. package/src/core/task/task-projector.ts +0 -358
  227. package/src/core/task/task-resolver.ts +0 -421
  228. package/src/core/turn-state.ts +0 -207
  229. package/src/core/types.ts +0 -952
  230. package/src/core/vector-outbox.ts +0 -299
  231. package/src/core/vector-store.ts +0 -231
  232. package/src/core/vector-worker.ts +0 -521
  233. package/src/core/working-set-store.ts +0 -257
  234. package/src/extensions/endless-memory/endless-memory-services.ts +0 -350
  235. package/src/extensions/endless-memory/index.ts +0 -1
  236. package/src/extensions/index.ts +0 -5
  237. package/src/extensions/mcp/handlers.ts +0 -960
  238. package/src/extensions/mcp/index.ts +0 -48
  239. package/src/extensions/mcp/tools.ts +0 -252
  240. package/src/extensions/shared-memory/index.ts +0 -1
  241. package/src/extensions/shared-memory/shared-memory-services.ts +0 -211
  242. package/src/extensions/vector/embedder.ts +0 -233
  243. package/src/extensions/vector/index.ts +0 -1
  244. package/src/hooks/post-tool-use.ts +0 -9
  245. package/src/hooks/semantic-daemon-client.ts +0 -1
  246. package/src/hooks/semantic-daemon.ts +0 -11
  247. package/src/hooks/session-end.ts +0 -9
  248. package/src/hooks/session-start.ts +0 -9
  249. package/src/hooks/stop.ts +0 -9
  250. package/src/hooks/user-prompt-submit.ts +0 -9
  251. package/src/index.ts +0 -13
  252. package/src/mcp/handlers.ts +0 -2
  253. package/src/mcp/index.ts +0 -4
  254. package/src/mcp/tools.ts +0 -2
  255. package/src/server/api/chat.ts +0 -2
  256. package/src/server/api/citations.ts +0 -2
  257. package/src/server/api/events.ts +0 -2
  258. package/src/server/api/health.ts +0 -2
  259. package/src/server/api/index.ts +0 -2
  260. package/src/server/api/projects.ts +0 -2
  261. package/src/server/api/search.ts +0 -2
  262. package/src/server/api/sessions.ts +0 -2
  263. package/src/server/api/stats.ts +0 -2
  264. package/src/server/api/turns.ts +0 -2
  265. package/src/server/api/utils.ts +0 -2
  266. package/src/server/index.ts +0 -2
  267. package/src/services/bootstrap-organizer.ts +0 -463
  268. package/src/services/codex-session-history-importer.ts +0 -966
  269. package/src/services/hermes-session-history-importer.ts +0 -733
  270. package/src/services/memory-service-config.ts +0 -36
  271. package/src/services/memory-service-registry.ts +0 -150
  272. package/src/services/memory-service.ts +0 -688
  273. package/src/services/session-history-importer.ts +0 -629
  274. package/tests/README.md +0 -23
  275. package/tests/adapters/claude/claude-semantic-daemon-adapter.test.ts +0 -54
  276. package/tests/adapters/claude/claude-transcript-reconstructor.test.ts +0 -98
  277. package/tests/adapters/claude-hook-prompt-injection-policy.test.ts +0 -99
  278. package/tests/apps/app-layer-boundary.test.ts +0 -48
  279. package/tests/apps/claude-settings-hooks.test.ts +0 -107
  280. package/tests/apps/cli-disclosure-output.test.ts +0 -212
  281. package/tests/apps/codex-import-runner.test.ts +0 -99
  282. package/tests/apps/codex-validation-output.test.ts +0 -100
  283. package/tests/apps/hermes-import-runner.test.ts +0 -99
  284. package/tests/apps/mcp-install-command.test.ts +0 -59
  285. package/tests/apps/package-build-entrypoints.test.ts +0 -30
  286. package/tests/apps/postinstall-embedding-backend.test.ts +0 -175
  287. package/tests/apps/search-api-disclosure.test.ts +0 -162
  288. package/tests/apps/stats-api-lightweight.test.ts +0 -67
  289. package/tests/apps/ui-disclosure-output.test.ts +0 -140
  290. package/tests/core/bootstrap-organizer.test.ts +0 -111
  291. package/tests/core/canonical-key.test.ts +0 -101
  292. package/tests/core/codex-session-history-importer-validation.test.ts +0 -185
  293. package/tests/core/consolidation-worker.test.ts +0 -75
  294. package/tests/core/embedding-maintenance-service.test.ts +0 -282
  295. package/tests/core/evidence-aligner.test.ts +0 -152
  296. package/tests/core/external-market-context.test.ts +0 -209
  297. package/tests/core/fact-deriver.test.ts +0 -79
  298. package/tests/core/hermes-session-history-importer-validation.test.ts +0 -609
  299. package/tests/core/ingest-interceptor.test.ts +0 -38
  300. package/tests/core/markdown-mirror.test.ts +0 -85
  301. package/tests/core/matcher.test.ts +0 -112
  302. package/tests/core/md-mirror.test.ts +0 -50
  303. package/tests/core/memory-engine-services.test.ts +0 -240
  304. package/tests/core/memory-ingest-service.test.ts +0 -296
  305. package/tests/core/memory-query-service.test.ts +0 -129
  306. package/tests/core/memory-runtime-service.test.ts +0 -201
  307. package/tests/core/memory-service-composition.test.ts +0 -192
  308. package/tests/core/memory-service-config.test.ts +0 -41
  309. package/tests/core/memory-service-facade.test.ts +0 -30
  310. package/tests/core/memory-service-registry.test.ts +0 -206
  311. package/tests/core/product-validation-matrix.test.ts +0 -61
  312. package/tests/core/project-registry.test.ts +0 -78
  313. package/tests/core/replay-evaluator.test.ts +0 -181
  314. package/tests/core/retrieval-analytics-service.test.ts +0 -210
  315. package/tests/core/retrieval-benchmark.test.ts +0 -93
  316. package/tests/core/retrieval-disclosure-service.test.ts +0 -264
  317. package/tests/core/retrieval-orchestrator.test.ts +0 -403
  318. package/tests/core/retrieval-quality.test.ts +0 -31
  319. package/tests/core/retrieval-services.test.ts +0 -185
  320. package/tests/core/retriever-fallback-chain.test.ts +0 -223
  321. package/tests/core/retriever-strategy-scope.test.ts +0 -164
  322. package/tests/core/retriever.memu-adoption.test.ts +0 -122
  323. package/tests/core/session-history-importer-filter.test.ts +0 -78
  324. package/tests/core/session-qrels.test.ts +0 -250
  325. package/tests/core/sqlite-event-store-replication.test.ts +0 -127
  326. package/tests/core/summary-deriver.test.ts +0 -66
  327. package/tests/extensions/embedder-warning-suppression.test.ts +0 -83
  328. package/tests/extensions/endless-memory-extension-boundary.test.ts +0 -17
  329. package/tests/extensions/endless-memory-services.test.ts +0 -325
  330. package/tests/extensions/mcp-context-tools.test.ts +0 -905
  331. package/tests/extensions/mcp-extension-boundary.test.ts +0 -21
  332. package/tests/extensions/mcp-package-build.test.ts +0 -22
  333. package/tests/extensions/mcp-project-aware-tools.test.ts +0 -102
  334. package/tests/extensions/shared-memory-extension-boundary.test.ts +0 -24
  335. package/tests/extensions/shared-memory-services.test.ts +0 -309
  336. package/tests/extensions/vector-extension-boundary.test.ts +0 -21
  337. package/tsconfig.json +0 -24
  338. package/vitest.config.ts +0 -15
package/spec.md DELETED
@@ -1,624 +0,0 @@
1
- # Specification: Claude Code Memory Plugin
2
-
3
- ## 1. 개요
4
-
5
- ### 1.1 플러그인 정보
6
-
7
- | 항목 | 값 |
8
- |------|-----|
9
- | **이름** | `code-memory` |
10
- | **버전** | `1.0.0` |
11
- | **설명** | 대화 기억을 통해 사용자 맞춤형 경험을 제공하는 Claude Code 플러그인 |
12
- | **핵심 가치** | "사용할수록 똑똑해지는 Agent" |
13
-
14
- ### 1.2 핵심 기능
15
-
16
- 1. **대화 기억 저장**: 모든 사용자 prompt와 agent 응답을 영구 저장
17
- 2. **지능형 검색**: 새로운 prompt와 관련된 과거 기억을 의미 기반 검색
18
- 3. **컨텍스트 주입**: 관련 기억을 현재 대화에 자동 주입
19
- 4. **학습 및 진화**: 패턴 인식을 통한 개인화
20
-
21
- ---
22
-
23
- ## 2. 아키텍처
24
-
25
- ### 2.1 시스템 구조
26
-
27
- ```
28
- ┌─────────────────────────────────────────────────────────────┐
29
- │ Claude Code Session │
30
- └─────────────────────────────────────────────────────────────┘
31
- │ │ │
32
- ▼ ▼ ▼
33
- ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
34
- │ SessionStart│ │UserPrompt │ │ Stop/ │
35
- │ Hook │ │Submit Hook │ │ SessionEnd │
36
- └─────────────┘ └─────────────┘ └─────────────┘
37
- │ │ │
38
- ▼ ▼ ▼
39
- ┌─────────────────────────────────────────────────────────────┐
40
- │ Memory Service (Core) │
41
- │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
42
- │ │ Ingester │ │ Embedder │ │ Retriever│ │ Ranker │ │
43
- │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
44
- └─────────────────────────────────────────────────────────────┘
45
- │ │ │
46
- ▼ ▼ ▼
47
- ┌─────────────────────────────────────────────────────────────┐
48
- │ Storage Layer │
49
- │ ┌───────────────────┐ ┌───────────────────┐ │
50
- │ │ LanceDB │ │ DuckDB │ │
51
- │ │ (Vector Store) │ │ (Event Store) │ │
52
- │ └───────────────────┘ └───────────────────┘ │
53
- └─────────────────────────────────────────────────────────────┘
54
- ```
55
-
56
- ### 2.2 데이터 흐름
57
-
58
- ```
59
- 1. [SessionStart]
60
- → 이전 세션 요약 로드
61
- → 사용자 선호도/패턴 로드
62
-
63
- 2. [UserPromptSubmit]
64
- → 현재 prompt 임베딩 생성
65
- → 관련 기억 검색 (top-k)
66
- → 기억을 시스템 프롬프트로 주입
67
-
68
- 3. [Stop/AgentResponse]
69
- → 전체 대화 쌍 (prompt + response) 저장
70
- → 비동기 임베딩 생성 및 인덱싱
71
-
72
- 4. [SessionEnd]
73
- → 세션 요약 생성 및 저장
74
- → 장기 기억으로 통합
75
- ```
76
-
77
- ### 2.3 Memory Graduation Pipeline (L0 → L4)
78
-
79
- AXIOMMIND 기반 다단계 메모리 승격 구조:
80
-
81
- | 레벨 | 이름 | 설명 | 저장소 | 상태 |
82
- |------|------|------|--------|------|
83
- | **L0** | EventStore | 원본 대화 로그 (불변) | DuckDB `events` | 즉시 저장 |
84
- | **L1** | Structured | LLM 추출 구조화 데이터 | DuckDB `insights` | 비동기 처리 |
85
- | **L2** | Candidates | 타입 검증 대상 | TypeScript 검증 | 배치 처리 |
86
- | **L3** | Verified | 검증 완료 지식 | DuckDB `verified_knowledge` | 검증 후 |
87
- | **L4** | Active | 검색 가능 메모리 | LanceDB | 인덱싱 후 |
88
-
89
- ```
90
- User Prompt → L0 (즉시) → L1 (비동기) → L2 (배치) → L3 (검증) → L4 (검색 가능)
91
- ↑ ↓
92
- └──────────── 검색 시 L4에서 조회 ─────────────┘
93
- ```
94
-
95
- ### 2.4 AXIOMMIND 7가지 필수 원칙
96
-
97
- 본 플러그인은 다음 원칙을 준수합니다:
98
-
99
- | # | 원칙 | 구현 |
100
- |---|------|------|
101
- | 1 | 진실의 원천은 이벤트 로그 | `events` 테이블에서 모든 파생 데이터 재구성 가능 |
102
- | 2 | 추가전용 구조 | `EventStore.append()` 만 제공, UPDATE/DELETE 없음 |
103
- | 3 | 멱등성 보장 | `dedupe_key = session_id + content_hash` |
104
- | 4 | 증거 범위는 파이프라인이 확정 | `EvidenceAligner`가 정확한 스팬 계산 |
105
- | 5 | Task는 엔티티 | `canonical_key`로 동일 개념 통합 |
106
- | 6 | 벡터 저장소 정합성 | DuckDB → outbox → LanceDB 단방향 |
107
- | 7 | DuckDB JSON 사용 | JSONB 대신 표준 JSON |
108
-
109
- ---
110
-
111
- ## 3. 데이터 모델
112
-
113
- ### 3.1 Event Schema (DuckDB) - AXIOMMIND 스타일
114
-
115
- ```sql
116
- -- ============================================================
117
- -- L0 EventStore: Single Source of Truth (불변, append-only)
118
- -- ============================================================
119
-
120
- CREATE TABLE events (
121
- id UUID PRIMARY KEY,
122
- event_type VARCHAR NOT NULL, -- 'user_prompt' | 'agent_response' | 'session_summary'
123
- session_id VARCHAR NOT NULL,
124
- timestamp TIMESTAMP NOT NULL,
125
- content TEXT NOT NULL,
126
- canonical_key VARCHAR NOT NULL, -- 정규화된 키 (NFKC, lowercase, no punctuation)
127
- metadata JSON,
128
- dedupe_key VARCHAR UNIQUE -- 멱등성 보장 (content_hash + session_id)
129
- );
130
-
131
- -- 중복 방지 테이블 (event_dedup)
132
- CREATE TABLE event_dedup (
133
- dedupe_key VARCHAR PRIMARY KEY,
134
- event_id UUID NOT NULL REFERENCES events(id),
135
- created_at TIMESTAMP DEFAULT NOW()
136
- );
137
-
138
- -- Projection offset 추적 (증분 처리용)
139
- CREATE TABLE projection_offsets (
140
- projection_name VARCHAR PRIMARY KEY,
141
- last_event_id UUID,
142
- last_timestamp TIMESTAMP,
143
- updated_at TIMESTAMP DEFAULT NOW()
144
- );
145
-
146
- -- ============================================================
147
- -- 세션 메타데이터
148
- -- ============================================================
149
-
150
- CREATE TABLE sessions (
151
- id VARCHAR PRIMARY KEY,
152
- started_at TIMESTAMP NOT NULL,
153
- ended_at TIMESTAMP,
154
- project_path VARCHAR,
155
- summary TEXT,
156
- tags JSON
157
- );
158
-
159
- -- ============================================================
160
- -- 추출된 인사이트 (파생 데이터, 재구성 가능)
161
- -- ============================================================
162
-
163
- CREATE TABLE insights (
164
- id UUID PRIMARY KEY,
165
- insight_type VARCHAR NOT NULL, -- 'preference' | 'pattern' | 'expertise'
166
- content TEXT NOT NULL,
167
- canonical_key VARCHAR NOT NULL, -- 정규화된 키
168
- confidence FLOAT,
169
- source_events JSON, -- 원본 이벤트 ID 목록
170
- created_at TIMESTAMP,
171
- last_updated TIMESTAMP
172
- );
173
-
174
- -- ============================================================
175
- -- Embedding Outbox (Single-Writer Pattern)
176
- -- ============================================================
177
-
178
- CREATE TABLE embedding_outbox (
179
- id UUID PRIMARY KEY,
180
- event_id UUID NOT NULL REFERENCES events(id),
181
- content TEXT NOT NULL,
182
- status VARCHAR DEFAULT 'pending', -- 'pending' | 'processing' | 'done' | 'failed'
183
- retry_count INT DEFAULT 0,
184
- created_at TIMESTAMP DEFAULT NOW(),
185
- processed_at TIMESTAMP,
186
- error_message TEXT
187
- );
188
-
189
- -- ============================================================
190
- -- Memory Resolutions (Condition → Task 해결)
191
- -- ============================================================
192
-
193
- CREATE TABLE memory_resolutions (
194
- id UUID PRIMARY KEY,
195
- condition_id UUID NOT NULL, -- 원본 조건/참조
196
- resolved_to_id UUID, -- 해결된 대상
197
- resolution_type VARCHAR, -- 'confirmed' | 'rejected' | 'pending'
198
- confidence FLOAT,
199
- resolved_at TIMESTAMP
200
- );
201
-
202
- -- ============================================================
203
- -- Effective View (Condition 해결 반영)
204
- -- ============================================================
205
-
206
- CREATE VIEW v_memory_context_effective AS
207
- SELECT
208
- e.id,
209
- e.session_id,
210
- e.content,
211
- e.canonical_key,
212
- e.event_type,
213
- e.timestamp,
214
- COALESCE(r.resolved_to_id, e.id) as effective_id,
215
- CASE
216
- WHEN r.resolution_type = 'confirmed' THEN 'resolved'
217
- WHEN r.resolution_type = 'pending' THEN 'pending'
218
- ELSE 'direct'
219
- END as resolution_status
220
- FROM events e
221
- LEFT JOIN memory_resolutions r ON e.id = r.condition_id;
222
- ```
223
-
224
- ### 3.2 Vector Schema (LanceDB)
225
-
226
- ```python
227
- # 대화 임베딩 테이블
228
- conversations_schema = {
229
- "id": str, # UUID
230
- "event_id": str, # events 테이블 참조
231
- "session_id": str,
232
- "event_type": str, # 'user_prompt' | 'agent_response'
233
- "content": str, # 원본 텍스트 (검색 결과 표시용)
234
- "vector": list[float], # 임베딩 벡터 (384 또는 1536 차원)
235
- "timestamp": str,
236
- "metadata": dict # 추가 메타데이터
237
- }
238
-
239
- # 인사이트 임베딩 테이블
240
- insights_schema = {
241
- "id": str,
242
- "insight_id": str, # insights 테이블 참조
243
- "content": str,
244
- "vector": list[float],
245
- "insight_type": str,
246
- "confidence": float
247
- }
248
- ```
249
-
250
- ### 3.3 TypeScript 타입 정의 (Idris2 영감)
251
-
252
- ```typescript
253
- // 불변성과 타입 안전성을 강조한 설계
254
-
255
- // 이벤트 타입 (Union Type으로 완전성 보장)
256
- type EventType = 'user_prompt' | 'agent_response' | 'session_summary';
257
-
258
- // 이벤트 구조 (Readonly로 불변성 강제)
259
- interface MemoryEvent {
260
- readonly id: string;
261
- readonly eventType: EventType;
262
- readonly sessionId: string;
263
- readonly timestamp: Date;
264
- readonly content: string;
265
- readonly contentHash: string;
266
- readonly metadata: Readonly<Record<string, unknown>>;
267
- }
268
-
269
- // 검색 결과 (신뢰도 점수 포함)
270
- interface MemoryMatch {
271
- readonly event: MemoryEvent;
272
- readonly score: number; // 0.0 ~ 1.0
273
- readonly relevanceReason: string;
274
- }
275
-
276
- // 컨텍스트 주입 결과
277
- interface ContextInjection {
278
- readonly memories: ReadonlyArray<MemoryMatch>;
279
- readonly systemPromptAddition: string;
280
- readonly totalTokensUsed: number;
281
- }
282
-
283
- // 저장 결과 (성공/실패 명시적 표현)
284
- type SaveResult =
285
- | { success: true; eventId: string }
286
- | { success: false; error: string; isDuplicate: boolean };
287
- ```
288
-
289
- ---
290
-
291
- ## 4. Hook 명세
292
-
293
- ### 4.1 SessionStart Hook
294
-
295
- **목적**: 세션 시작 시 관련 컨텍스트 로드
296
-
297
- ```json
298
- {
299
- "hooks": {
300
- "SessionStart": [
301
- {
302
- "type": "command",
303
- "command": "code-memory session-start",
304
- "timeout": 5000
305
- }
306
- ]
307
- }
308
- }
309
- ```
310
-
311
- **입력**:
312
- ```json
313
- {
314
- "session_id": "sess_abc123",
315
- "cwd": "/path/to/project"
316
- }
317
- ```
318
-
319
- **출력**:
320
- ```json
321
- {
322
- "context": "## Previous Session Context\n- Last worked on: API authentication\n- User preference: Prefers TypeScript\n- Recent patterns: Uses Zod for validation"
323
- }
324
- ```
325
-
326
- ### 4.2 UserPromptSubmit Hook
327
-
328
- **목적**: 사용자 입력 시 관련 기억 검색 및 주입
329
-
330
- ```json
331
- {
332
- "hooks": {
333
- "UserPromptSubmit": [
334
- {
335
- "type": "command",
336
- "command": "code-memory search",
337
- "timeout": 3000
338
- }
339
- ]
340
- }
341
- }
342
- ```
343
-
344
- **입력**:
345
- ```json
346
- {
347
- "session_id": "sess_abc123",
348
- "prompt": "How do I add rate limiting to the API?"
349
- }
350
- ```
351
-
352
- **출력**:
353
- ```json
354
- {
355
- "context": "## Relevant Memories\n\n### Previous Discussion (2 weeks ago)\nYou implemented rate limiting for the /users endpoint using express-rate-limit...\n\n### Your Preferences\n- Prefers middleware-based solutions\n- Uses Redis for distributed rate limiting"
356
- }
357
- ```
358
-
359
- ### 4.3 Stop Hook
360
-
361
- **목적**: Agent 응답 완료 시 대화 저장
362
-
363
- ```json
364
- {
365
- "hooks": {
366
- "Stop": [
367
- {
368
- "type": "command",
369
- "command": "code-memory save",
370
- "timeout": 5000
371
- }
372
- ]
373
- }
374
- }
375
- ```
376
-
377
- **입력**:
378
- ```json
379
- {
380
- "session_id": "sess_abc123",
381
- "stop_reason": "end_turn",
382
- "messages": [
383
- {"role": "user", "content": "..."},
384
- {"role": "assistant", "content": "..."}
385
- ]
386
- }
387
- ```
388
-
389
- ### 4.4 SessionEnd Hook
390
-
391
- **목적**: 세션 종료 시 요약 저장
392
-
393
- ```json
394
- {
395
- "hooks": {
396
- "SessionEnd": [
397
- {
398
- "type": "command",
399
- "command": "code-memory session-end",
400
- "timeout": 10000
401
- }
402
- ]
403
- }
404
- }
405
- ```
406
-
407
- ---
408
-
409
- ## 5. 명령어 인터페이스
410
-
411
- ### 5.1 슬래시 명령어
412
-
413
- | 명령어 | 설명 | 예시 |
414
- |--------|------|------|
415
- | `/code-memory:search` | 기억 수동 검색 | `/code-memory:search rate limiting` |
416
- | `/code-memory:history` | 최근 대화 이력 | `/code-memory:history 10` |
417
- | `/code-memory:insights` | 추출된 인사이트 보기 | `/code-memory:insights` |
418
- | `/code-memory:forget` | 특정 기억 삭제 | `/code-memory:forget <id>` |
419
- | `/code-memory:export` | 기억 내보내기 | `/code-memory:export json` |
420
- | `/code-memory:stats` | 통계 보기 | `/code-memory:stats` |
421
-
422
- ### 5.2 CLI 명령어 (Hook에서 호출)
423
-
424
- ```bash
425
- # 세션 시작
426
- code-memory session-start --session-id <id> --cwd <path>
427
-
428
- # 기억 검색
429
- code-memory search --query <text> --limit 5 --threshold 0.7
430
-
431
- # 대화 저장
432
- code-memory save --stdin # JSON 입력 수신
433
-
434
- # 세션 종료
435
- code-memory session-end --session-id <id>
436
-
437
- # 데이터베이스 초기화
438
- code-memory init
439
-
440
- # 임베딩 재생성
441
- code-memory reindex
442
- ```
443
-
444
- ---
445
-
446
- ## 6. 설정
447
-
448
- ### 6.1 plugin.json
449
-
450
- ```json
451
- {
452
- "name": "code-memory",
453
- "description": "Learn from conversations to provide personalized assistance",
454
- "version": "1.0.0",
455
- "author": {
456
- "name": "Buzzni"
457
- },
458
- "homepage": "https://github.com/buzzni/code-memory",
459
- "repository": {
460
- "type": "git",
461
- "url": "https://github.com/buzzni/code-memory.git"
462
- },
463
- "license": "MIT",
464
- "engines": {
465
- "claude-code": ">=1.0.33"
466
- },
467
- "keywords": ["memory", "learning", "personalization", "context"]
468
- }
469
- ```
470
-
471
- ### 6.2 사용자 설정 (config.json)
472
-
473
- ```json
474
- {
475
- "storage": {
476
- "path": "~/.claude-code/memory",
477
- "maxSizeMB": 500
478
- },
479
- "embedding": {
480
- "provider": "local", // "local" | "openai"
481
- "model": "all-MiniLM-L6-v2", // local 모델
482
- "openaiModel": "text-embedding-3-small",
483
- "batchSize": 32
484
- },
485
- "retrieval": {
486
- "topK": 5,
487
- "minScore": 0.7,
488
- "maxTokens": 2000 // 주입할 최대 토큰 수
489
- },
490
- "matching": {
491
- "minCombinedScore": 0.92, // 확정 매칭 최소 점수 (AXIOMMIND)
492
- "minGap": 0.03, // 1위-2위 간 최소 점수 차이
493
- "suggestionThreshold": 0.75, // 제안 모드 임계값
494
- "weights": {
495
- "semanticSimilarity": 0.4, // 벡터 유사도 가중치
496
- "ftsScore": 0.25, // 전문 검색 가중치
497
- "recencyBonus": 0.2, // 최신성 가산점
498
- "statusWeight": 0.15 // 상태별 가중치
499
- }
500
- },
501
- "privacy": {
502
- "excludePatterns": [ // 저장 제외 패턴
503
- "password",
504
- "secret",
505
- "api_key"
506
- ],
507
- "anonymize": false
508
- },
509
- "features": {
510
- "autoSave": true,
511
- "sessionSummary": true,
512
- "insightExtraction": true,
513
- "crossProjectLearning": false, // 프로젝트 간 학습
514
- "singleWriterMode": true // Outbox 패턴 사용 (권장)
515
- }
516
- }
517
- ```
518
-
519
- ### 6.3 Matching Thresholds (AXIOMMIND 기반)
520
-
521
- 검색 결과의 신뢰도를 3단계로 분류:
522
-
523
- | 신뢰도 | 조건 | 동작 |
524
- |--------|------|------|
525
- | **high** | score ≥ 0.92 AND gap ≥ 0.03 | 확정 매칭, 자동 컨텍스트 주입 |
526
- | **suggested** | 0.75 ≤ score < 0.92 | 제안 모드, 사용자 확인 권장 |
527
- | **none** | score < 0.75 | 매칭 없음 |
528
-
529
- ```typescript
530
- // Matching 결과 타입
531
- interface MatchResult {
532
- readonly match: MemoryMatch | null;
533
- readonly confidence: 'high' | 'suggested' | 'none';
534
- readonly gap?: number; // top-1과 top-2 간 점수 차이
535
- readonly alternatives?: ReadonlyArray<MemoryMatch>; // suggested일 때 대안들
536
- }
537
- ```
538
-
539
- ---
540
-
541
- ## 7. 보안 및 프라이버시
542
-
543
- ### 7.1 데이터 보호
544
-
545
- 1. **로컬 저장**: 모든 데이터는 사용자 로컬에만 저장
546
- 2. **민감 정보 필터링**: password, secret, api_key 등 자동 제외
547
- 3. **선택적 익명화**: 개인 식별 정보 마스킹 옵션
548
-
549
- ### 7.2 데이터 삭제
550
-
551
- ```bash
552
- # 특정 기억 삭제
553
- code-memory forget --id <event_id>
554
-
555
- # 세션 전체 삭제
556
- code-memory forget --session <session_id>
557
-
558
- # 기간별 삭제
559
- code-memory forget --before "2024-01-01"
560
-
561
- # 전체 초기화
562
- code-memory reset --confirm
563
- ```
564
-
565
- ---
566
-
567
- ## 8. 성능 요구사항
568
-
569
- | 항목 | 목표 | 비고 |
570
- |------|------|------|
571
- | **검색 지연** | < 500ms | 10만 건 기준 |
572
- | **저장 지연** | < 100ms | 비동기 처리 |
573
- | **메모리 사용** | < 200MB | 실행 시 |
574
- | **디스크 사용** | < 500MB | 기본 제한 |
575
- | **시작 시간** | < 2s | 세션 시작 |
576
-
577
- ---
578
-
579
- ## 9. 의존성
580
-
581
- ### 9.1 런타임 의존성
582
-
583
- | 패키지 | 버전 | 용도 |
584
- |--------|------|------|
585
- | `lancedb` | ^0.5.0 | 벡터 저장소 |
586
- | `duckdb` | ^0.10.0 | 이벤트 저장소 |
587
- | `sentence-transformers` | ^2.2.0 | 로컬 임베딩 (Python) |
588
- | `@xenova/transformers` | ^2.15.0 | 로컬 임베딩 (JS) |
589
- | `zod` | ^3.22.0 | 스키마 검증 |
590
- | `commander` | ^12.0.0 | CLI 파싱 |
591
-
592
- ### 9.2 개발 의존성
593
-
594
- | 패키지 | 버전 | 용도 |
595
- |--------|------|------|
596
- | `typescript` | ^5.4.0 | 타입 시스템 |
597
- | `vitest` | ^1.4.0 | 테스트 |
598
- | `tsx` | ^4.7.0 | TS 실행 |
599
- | `esbuild` | ^0.20.0 | 빌드 |
600
-
601
- ---
602
-
603
- ## 10. 향후 확장
604
-
605
- ### Phase 2 (v1.1.0)
606
- - [ ] 그래프 기반 관계 저장 (Neo4j/Graphiti)
607
- - [ ] 멀티 프로젝트 학습
608
- - [ ] 팀 기억 공유 (암호화)
609
-
610
- ### Phase 3 (v2.0.0)
611
- - [ ] 자동 인사이트 추출 (LLM 기반)
612
- - [ ] 코드 스니펫 특화 기억
613
- - [ ] IDE 통합 (VSCode extension)
614
-
615
- ---
616
-
617
- ## 11. 성공 지표
618
-
619
- | 지표 | 측정 방법 | 목표 |
620
- |------|----------|------|
621
- | **관련성** | 사용자 피드백 | 80%+ 유용 |
622
- | **속도** | 응답 지연 | < 500ms |
623
- | **채택률** | 활성 사용자 | 1000+ |
624
- | **재사용률** | 기억 활용 빈도 | 50%+ 세션 |
@@ -1,38 +0,0 @@
1
- # Dashboard Upgrade - Context
2
-
3
- ## Implementation Status: COMPLETE
4
-
5
- ## Changes Made
6
-
7
- ### `src/ui/index.html`
8
- - Added `data-nav` attributes to sidebar nav items (overview, knowledge-graph, memory-banks, configuration)
9
- - Added `data-stat` attributes to stat cards (events, sessions, shared, vectors)
10
- - Wrapped existing dashboard content in `#view-overview` page view container
11
- - Added new page view containers: `#view-knowledge-graph`, `#view-memory-banks`, `#view-configuration`
12
- - Added Detail Modal (`#detail-modal`) for event details
13
- - Added List Modal (`#list-modal`) for stat card drill-downs
14
-
15
- ### `src/ui/style.css`
16
- - Page view system (`.page-view`, show/hide with animation)
17
- - Modal overlay, container, header, body, close button styles
18
- - Modal content styles (meta items, content block, context list, list items)
19
- - Knowledge Graph view styles (grid, memory cards, topic tags)
20
- - Memory Banks view styles (level tabs, event cards)
21
- - Configuration view styles (grid sections, rows)
22
- - Responsive modal styles for mobile
23
-
24
- ### `src/ui/app.js`
25
- - **Modal system**: `openModal()`, `closeModal()`, `closeAllModals()`, ESC key handler
26
- - **Event detail modal**: `openDetailModal(eventId)` - fetches full content + context from `/api/events/:id`
27
- - **Stat card handlers**:
28
- - Total Events → `showEventsListModal()` via `/api/events?limit=50`
29
- - Active Sessions → `showSessionsModal()` via `/api/sessions` + `showSessionDetailInModal()`
30
- - Shared Items → `showSharedModal()` using cached state
31
- - Vector Nodes → `showVectorsModal()` using cached state
32
- - **Navigation**: `switchView()` toggles page views and loads content
33
- - **Knowledge Graph view**: `loadKnowledgeGraphView()` - top topics, most accessed, most helpful
34
- - **Memory Banks view**: `loadMemoryBanksView()` + `loadMemoryBankLevel()` - L0-L4 tabs with events
35
- - **Configuration view**: `loadConfigurationView()` - storage, endless mode, graduation criteria
36
-
37
- ## API Endpoints Used
38
- All existing endpoints - no new APIs needed.