claude-memory-layer 1.0.31 → 1.0.33

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 (343) hide show
  1. package/README.md +9 -2
  2. package/dist/cli/index.js +1110 -72
  3. package/dist/cli/index.js.map +4 -4
  4. package/dist/core/index.js +414 -25
  5. package/dist/core/index.js.map +2 -2
  6. package/dist/hooks/post-tool-use.js +416 -27
  7. package/dist/hooks/post-tool-use.js.map +2 -2
  8. package/dist/hooks/semantic-daemon.js +416 -27
  9. package/dist/hooks/semantic-daemon.js.map +2 -2
  10. package/dist/hooks/session-end.js +416 -27
  11. package/dist/hooks/session-end.js.map +2 -2
  12. package/dist/hooks/session-start.js +416 -27
  13. package/dist/hooks/session-start.js.map +2 -2
  14. package/dist/hooks/stop.js +416 -27
  15. package/dist/hooks/stop.js.map +2 -2
  16. package/dist/hooks/user-prompt-submit.js +504 -34
  17. package/dist/hooks/user-prompt-submit.js.map +2 -2
  18. package/dist/index.js +416 -27
  19. package/dist/index.js.map +2 -2
  20. package/dist/mcp/index.js +407 -32
  21. package/dist/mcp/index.js.map +2 -2
  22. package/dist/server/api/index.js +850 -44
  23. package/dist/server/api/index.js.map +3 -3
  24. package/dist/server/index.js +1073 -64
  25. package/dist/server/index.js.map +3 -3
  26. package/dist/services/memory-service.js +416 -27
  27. package/dist/services/memory-service.js.map +2 -2
  28. package/dist/ui/assets/js/bootstrap.js +2 -0
  29. package/dist/ui/assets/js/overview.js +166 -3
  30. package/dist/ui/assets/js/state.js +3 -0
  31. package/dist/ui/index.html +20 -0
  32. package/dist/ui/style.css +193 -0
  33. package/package.json +15 -2
  34. package/scripts/postinstall-embedding-backend.cjs +16 -12
  35. package/AGENTS.md +0 -71
  36. package/CLAUDE.md +0 -30
  37. package/HANDOFF.md +0 -92
  38. package/Memo.txt +0 -558
  39. package/benchmarks/replay/anonymized-real-sessions.json +0 -48
  40. package/config/kpi-thresholds.json +0 -7
  41. package/context.md +0 -636
  42. package/docs/ARCHITECTURE_COMPARISON_AND_RECOMMENDATIONS.md +0 -627
  43. package/docs/HERMES_MEMORY_INGESTION_ANALYSIS.md +0 -440
  44. package/docs/MCP_MEMORY_SERVICE_COMPARATIVE_REVIEW.md +0 -271
  45. package/docs/MEMORY_USEFULNESS_AUDIT.md +0 -371
  46. package/docs/MEMORY_USEFULNESS_AUDIT_RAW.json +0 -80
  47. package/docs/MEMSEARCH_PROJECT_STRUCTURE_ANALYSIS.md +0 -333
  48. package/docs/MEMU_ADOPTION.md +0 -40
  49. package/docs/OPERATIONS.md +0 -18
  50. package/docs/PRODUCT_VALIDATION_MATRIX.md +0 -82
  51. package/docs/PROJECT_STRUCTURE_ANALYSIS.md +0 -421
  52. package/docs/REFACTORING_MILESTONES_AND_ISSUES.md +0 -501
  53. package/docs/REFACTORING_PLAN_THIN_CORE.md +0 -414
  54. package/docs/REFERENCE_PROJECT_ANALYSES.md +0 -25
  55. package/docs/SUPERLOCALMEMORY_PROJECT_STRUCTURE_ANALYSIS.md +0 -452
  56. package/docs/TARGET_ARCHITECTURE_AND_FOLDER_STRUCTURE.md +0 -446
  57. package/docs/architecture/comparison-index.md +0 -47
  58. package/docs/reports/codex-real-data-validation-20260505T040447Z.md +0 -46
  59. package/plan.md +0 -1642
  60. package/scripts/build.ts +0 -159
  61. package/scripts/bump-patch-version.sh +0 -18
  62. package/scripts/delete-unknown-projects.js +0 -154
  63. package/scripts/fix-sync-gap.js +0 -32
  64. package/scripts/generate-session-qrels.ts +0 -126
  65. package/scripts/heartbeat-memory-orchestrator.sh +0 -28
  66. package/scripts/replay-retrieval-benchmark.ts +0 -69
  67. package/scripts/report-sync-gap.js +0 -26
  68. package/scripts/review-queue-auto-resolve.js +0 -21
  69. package/scripts/sync-gap-auto-heal.sh +0 -17
  70. package/spec.md +0 -624
  71. package/specs/20260207-dashboard-upgrade/context.md +0 -38
  72. package/specs/20260207-dashboard-upgrade/spec.md +0 -96
  73. package/specs/citations-system/context.md +0 -243
  74. package/specs/citations-system/plan.md +0 -495
  75. package/specs/citations-system/spec.md +0 -371
  76. package/specs/endless-mode/context.md +0 -305
  77. package/specs/endless-mode/plan.md +0 -620
  78. package/specs/endless-mode/spec.md +0 -455
  79. package/specs/entity-edge-model/context.md +0 -401
  80. package/specs/entity-edge-model/plan.md +0 -459
  81. package/specs/entity-edge-model/spec.md +0 -391
  82. package/specs/evidence-aligner-v2/context.md +0 -401
  83. package/specs/evidence-aligner-v2/plan.md +0 -303
  84. package/specs/evidence-aligner-v2/spec.md +0 -312
  85. package/specs/mcp-desktop-integration/context.md +0 -278
  86. package/specs/mcp-desktop-integration/plan.md +0 -550
  87. package/specs/mcp-desktop-integration/spec.md +0 -494
  88. package/specs/memory-utilization-improvements/context.md +0 -145
  89. package/specs/memory-utilization-improvements/plan.md +0 -361
  90. package/specs/memory-utilization-improvements/spec.md +0 -361
  91. package/specs/post-tool-use-hook/context.md +0 -319
  92. package/specs/post-tool-use-hook/plan.md +0 -469
  93. package/specs/post-tool-use-hook/spec.md +0 -364
  94. package/specs/private-tags/context.md +0 -288
  95. package/specs/private-tags/plan.md +0 -412
  96. package/specs/private-tags/spec.md +0 -345
  97. package/specs/progressive-disclosure/context.md +0 -346
  98. package/specs/progressive-disclosure/plan.md +0 -663
  99. package/specs/progressive-disclosure/spec.md +0 -415
  100. package/specs/selective-tool-observation/context.md +0 -100
  101. package/specs/selective-tool-observation/plan.md +0 -158
  102. package/specs/selective-tool-observation/spec.md +0 -127
  103. package/specs/task-entity-system/context.md +0 -297
  104. package/specs/task-entity-system/plan.md +0 -301
  105. package/specs/task-entity-system/spec.md +0 -314
  106. package/specs/thin-core-refactor/context.md +0 -275
  107. package/specs/thin-core-refactor/plan.md +0 -536
  108. package/specs/thin-core-refactor/spec.md +0 -465
  109. package/specs/vector-outbox-v2/context.md +0 -470
  110. package/specs/vector-outbox-v2/plan.md +0 -562
  111. package/specs/vector-outbox-v2/spec.md +0 -466
  112. package/specs/web-viewer-ui/context.md +0 -384
  113. package/specs/web-viewer-ui/plan.md +0 -797
  114. package/specs/web-viewer-ui/spec.md +0 -516
  115. package/src/adapters/claude/capture/index.ts +0 -3
  116. package/src/adapters/claude/context/index.ts +0 -3
  117. package/src/adapters/claude/hooks/index.ts +0 -21
  118. package/src/adapters/claude/hooks/post-tool-use.ts +0 -239
  119. package/src/adapters/claude/hooks/prompt-injection-policy.ts +0 -104
  120. package/src/adapters/claude/hooks/semantic-daemon-client.ts +0 -209
  121. package/src/adapters/claude/hooks/semantic-daemon.ts +0 -283
  122. package/src/adapters/claude/hooks/session-end.ts +0 -59
  123. package/src/adapters/claude/hooks/session-start.ts +0 -73
  124. package/src/adapters/claude/hooks/stop.ts +0 -128
  125. package/src/adapters/claude/hooks/user-prompt-submit.ts +0 -361
  126. package/src/adapters/claude/index.ts +0 -4
  127. package/src/adapters/claude/transcript/index.ts +0 -4
  128. package/src/adapters/claude/transcript/transcript-reader.ts +0 -57
  129. package/src/adapters/claude/transcript/turn-reconstructor.ts +0 -65
  130. package/src/apps/cli/claude-settings-hooks.ts +0 -138
  131. package/src/apps/cli/codex-import-runner.ts +0 -125
  132. package/src/apps/cli/codex-validation-output.ts +0 -95
  133. package/src/apps/cli/hermes-import-runner.ts +0 -130
  134. package/src/apps/cli/hermes-validation-output.ts +0 -91
  135. package/src/apps/cli/index.ts +0 -1735
  136. package/src/apps/cli/mcp-install.ts +0 -106
  137. package/src/apps/cli/retrieval-disclosure-output.ts +0 -196
  138. package/src/apps/dashboard/assets/js/bootstrap.js +0 -244
  139. package/src/apps/dashboard/assets/js/chat.js +0 -373
  140. package/src/apps/dashboard/assets/js/disclosure.js +0 -232
  141. package/src/apps/dashboard/assets/js/modals.js +0 -298
  142. package/src/apps/dashboard/assets/js/overview.js +0 -655
  143. package/src/apps/dashboard/assets/js/state.js +0 -72
  144. package/src/apps/dashboard/assets/js/views.js +0 -468
  145. package/src/apps/dashboard/index.html +0 -543
  146. package/src/apps/dashboard/index.ts +0 -3
  147. package/src/apps/dashboard/style.css +0 -1750
  148. package/src/apps/index.ts +0 -5
  149. package/src/apps/server/api/chat.ts +0 -244
  150. package/src/apps/server/api/citations.ts +0 -105
  151. package/src/apps/server/api/events.ts +0 -137
  152. package/src/apps/server/api/health.ts +0 -53
  153. package/src/apps/server/api/index.ts +0 -26
  154. package/src/apps/server/api/projects.ts +0 -74
  155. package/src/apps/server/api/search.ts +0 -184
  156. package/src/apps/server/api/sessions.ts +0 -115
  157. package/src/apps/server/api/stats.ts +0 -723
  158. package/src/apps/server/api/turns.ts +0 -143
  159. package/src/apps/server/api/utils.ts +0 -65
  160. package/src/apps/server/index.ts +0 -111
  161. package/src/cli/index.ts +0 -3
  162. package/src/cli/retrieval-disclosure-output.ts +0 -2
  163. package/src/compat/index.ts +0 -5
  164. package/src/core/canonical-key.ts +0 -186
  165. package/src/core/citation-generator.ts +0 -63
  166. package/src/core/consolidated-store.ts +0 -356
  167. package/src/core/consolidation-worker.ts +0 -493
  168. package/src/core/context-formatter.ts +0 -276
  169. package/src/core/continuity-manager.ts +0 -341
  170. package/src/core/db-wrapper.ts +0 -64
  171. package/src/core/derive/fact-deriver.ts +0 -170
  172. package/src/core/derive/index.ts +0 -2
  173. package/src/core/derive/summary-deriver.ts +0 -76
  174. package/src/core/edge-repo.ts +0 -333
  175. package/src/core/embedder.ts +0 -4
  176. package/src/core/engine/embedding-maintenance-service.ts +0 -187
  177. package/src/core/engine/endless-memory-services.ts +0 -4
  178. package/src/core/engine/index.ts +0 -19
  179. package/src/core/engine/memory-engine-services.ts +0 -170
  180. package/src/core/engine/memory-ingest-service.ts +0 -317
  181. package/src/core/engine/memory-query-service.ts +0 -173
  182. package/src/core/engine/memory-runtime-service.ts +0 -162
  183. package/src/core/engine/memory-service-composition.ts +0 -231
  184. package/src/core/engine/retrieval-analytics-service.ts +0 -181
  185. package/src/core/engine/retrieval-disclosure-service.ts +0 -420
  186. package/src/core/engine/retrieval-orchestrator.ts +0 -377
  187. package/src/core/engine/retrieval-services.ts +0 -176
  188. package/src/core/engine/shared-memory-services.ts +0 -4
  189. package/src/core/entity-repo.ts +0 -349
  190. package/src/core/event-store.ts +0 -779
  191. package/src/core/evidence-aligner.ts +0 -635
  192. package/src/core/external-market-context.ts +0 -582
  193. package/src/core/graduation-worker.ts +0 -171
  194. package/src/core/graduation.ts +0 -377
  195. package/src/core/index.ts +0 -64
  196. package/src/core/ingest-interceptor.ts +0 -80
  197. package/src/core/markdown-mirror.ts +0 -70
  198. package/src/core/matcher.ts +0 -208
  199. package/src/core/md-mirror.ts +0 -92
  200. package/src/core/metadata-extractor.ts +0 -203
  201. package/src/core/model/memory-fact.ts +0 -30
  202. package/src/core/model/memory-rule.ts +0 -14
  203. package/src/core/model/memory-summary.ts +0 -21
  204. package/src/core/model/raw-event.ts +0 -28
  205. package/src/core/model/retrieval-result.ts +0 -35
  206. package/src/core/mongo-sync-config.ts +0 -165
  207. package/src/core/mongo-sync-worker.ts +0 -381
  208. package/src/core/privacy/filter.ts +0 -190
  209. package/src/core/privacy/index.ts +0 -20
  210. package/src/core/privacy/tag-parser.ts +0 -145
  211. package/src/core/product-validation-matrix.ts +0 -314
  212. package/src/core/progressive-retriever.ts +0 -414
  213. package/src/core/registry/project-path.ts +0 -54
  214. package/src/core/registry/session-registry.ts +0 -69
  215. package/src/core/replay-evaluator.ts +0 -625
  216. package/src/core/retrieval-benchmark.ts +0 -117
  217. package/src/core/retrieval-quality.ts +0 -109
  218. package/src/core/retriever.ts +0 -800
  219. package/src/core/session-qrels.ts +0 -360
  220. package/src/core/shared-event-store.ts +0 -114
  221. package/src/core/shared-promoter.ts +0 -249
  222. package/src/core/shared-store.ts +0 -289
  223. package/src/core/shared-vector-store.ts +0 -203
  224. package/src/core/sqlite-event-store.ts +0 -1846
  225. package/src/core/sqlite-wrapper.ts +0 -116
  226. package/src/core/sync-worker.ts +0 -228
  227. package/src/core/tag-taxonomy.ts +0 -51
  228. package/src/core/task/blocker-resolver.ts +0 -333
  229. package/src/core/task/index.ts +0 -9
  230. package/src/core/task/task-matcher.ts +0 -240
  231. package/src/core/task/task-projector.ts +0 -358
  232. package/src/core/task/task-resolver.ts +0 -421
  233. package/src/core/turn-state.ts +0 -207
  234. package/src/core/types.ts +0 -952
  235. package/src/core/vector-outbox.ts +0 -299
  236. package/src/core/vector-store.ts +0 -231
  237. package/src/core/vector-worker.ts +0 -521
  238. package/src/core/working-set-store.ts +0 -257
  239. package/src/extensions/endless-memory/endless-memory-services.ts +0 -350
  240. package/src/extensions/endless-memory/index.ts +0 -1
  241. package/src/extensions/index.ts +0 -5
  242. package/src/extensions/mcp/handlers.ts +0 -960
  243. package/src/extensions/mcp/index.ts +0 -48
  244. package/src/extensions/mcp/tools.ts +0 -252
  245. package/src/extensions/shared-memory/index.ts +0 -1
  246. package/src/extensions/shared-memory/shared-memory-services.ts +0 -211
  247. package/src/extensions/vector/embedder.ts +0 -234
  248. package/src/extensions/vector/index.ts +0 -1
  249. package/src/hooks/post-tool-use.ts +0 -9
  250. package/src/hooks/semantic-daemon-client.ts +0 -1
  251. package/src/hooks/semantic-daemon.ts +0 -11
  252. package/src/hooks/session-end.ts +0 -9
  253. package/src/hooks/session-start.ts +0 -9
  254. package/src/hooks/stop.ts +0 -9
  255. package/src/hooks/user-prompt-submit.ts +0 -9
  256. package/src/index.ts +0 -13
  257. package/src/mcp/handlers.ts +0 -2
  258. package/src/mcp/index.ts +0 -4
  259. package/src/mcp/tools.ts +0 -2
  260. package/src/server/api/chat.ts +0 -2
  261. package/src/server/api/citations.ts +0 -2
  262. package/src/server/api/events.ts +0 -2
  263. package/src/server/api/health.ts +0 -2
  264. package/src/server/api/index.ts +0 -2
  265. package/src/server/api/projects.ts +0 -2
  266. package/src/server/api/search.ts +0 -2
  267. package/src/server/api/sessions.ts +0 -2
  268. package/src/server/api/stats.ts +0 -2
  269. package/src/server/api/turns.ts +0 -2
  270. package/src/server/api/utils.ts +0 -2
  271. package/src/server/index.ts +0 -2
  272. package/src/services/bootstrap-organizer.ts +0 -463
  273. package/src/services/codex-session-history-importer.ts +0 -966
  274. package/src/services/hermes-session-history-importer.ts +0 -733
  275. package/src/services/memory-service-config.ts +0 -36
  276. package/src/services/memory-service-registry.ts +0 -150
  277. package/src/services/memory-service.ts +0 -688
  278. package/src/services/session-history-importer.ts +0 -629
  279. package/tests/README.md +0 -23
  280. package/tests/adapters/claude/claude-semantic-daemon-adapter.test.ts +0 -54
  281. package/tests/adapters/claude/claude-transcript-reconstructor.test.ts +0 -98
  282. package/tests/adapters/claude-hook-prompt-injection-policy.test.ts +0 -99
  283. package/tests/apps/app-layer-boundary.test.ts +0 -48
  284. package/tests/apps/claude-settings-hooks.test.ts +0 -107
  285. package/tests/apps/cli-disclosure-output.test.ts +0 -212
  286. package/tests/apps/codex-import-runner.test.ts +0 -99
  287. package/tests/apps/codex-validation-output.test.ts +0 -100
  288. package/tests/apps/hermes-import-runner.test.ts +0 -99
  289. package/tests/apps/mcp-install-command.test.ts +0 -59
  290. package/tests/apps/package-build-entrypoints.test.ts +0 -30
  291. package/tests/apps/postinstall-embedding-backend.test.ts +0 -185
  292. package/tests/apps/search-api-disclosure.test.ts +0 -162
  293. package/tests/apps/stats-api-lightweight.test.ts +0 -67
  294. package/tests/apps/ui-disclosure-output.test.ts +0 -140
  295. package/tests/core/bootstrap-organizer.test.ts +0 -111
  296. package/tests/core/canonical-key.test.ts +0 -101
  297. package/tests/core/codex-session-history-importer-validation.test.ts +0 -185
  298. package/tests/core/consolidation-worker.test.ts +0 -75
  299. package/tests/core/embedding-maintenance-service.test.ts +0 -282
  300. package/tests/core/evidence-aligner.test.ts +0 -152
  301. package/tests/core/external-market-context.test.ts +0 -209
  302. package/tests/core/fact-deriver.test.ts +0 -79
  303. package/tests/core/hermes-session-history-importer-validation.test.ts +0 -609
  304. package/tests/core/ingest-interceptor.test.ts +0 -38
  305. package/tests/core/markdown-mirror.test.ts +0 -85
  306. package/tests/core/matcher.test.ts +0 -112
  307. package/tests/core/md-mirror.test.ts +0 -50
  308. package/tests/core/memory-engine-services.test.ts +0 -240
  309. package/tests/core/memory-ingest-service.test.ts +0 -296
  310. package/tests/core/memory-query-service.test.ts +0 -129
  311. package/tests/core/memory-runtime-service.test.ts +0 -201
  312. package/tests/core/memory-service-composition.test.ts +0 -192
  313. package/tests/core/memory-service-config.test.ts +0 -41
  314. package/tests/core/memory-service-facade.test.ts +0 -30
  315. package/tests/core/memory-service-registry.test.ts +0 -206
  316. package/tests/core/product-validation-matrix.test.ts +0 -61
  317. package/tests/core/project-registry.test.ts +0 -78
  318. package/tests/core/replay-evaluator.test.ts +0 -181
  319. package/tests/core/retrieval-analytics-service.test.ts +0 -210
  320. package/tests/core/retrieval-benchmark.test.ts +0 -93
  321. package/tests/core/retrieval-disclosure-service.test.ts +0 -264
  322. package/tests/core/retrieval-orchestrator.test.ts +0 -403
  323. package/tests/core/retrieval-quality.test.ts +0 -31
  324. package/tests/core/retrieval-services.test.ts +0 -185
  325. package/tests/core/retriever-fallback-chain.test.ts +0 -223
  326. package/tests/core/retriever-strategy-scope.test.ts +0 -164
  327. package/tests/core/retriever.memu-adoption.test.ts +0 -122
  328. package/tests/core/session-history-importer-filter.test.ts +0 -78
  329. package/tests/core/session-qrels.test.ts +0 -250
  330. package/tests/core/sqlite-event-store-replication.test.ts +0 -127
  331. package/tests/core/summary-deriver.test.ts +0 -66
  332. package/tests/extensions/embedder-warning-suppression.test.ts +0 -84
  333. package/tests/extensions/endless-memory-extension-boundary.test.ts +0 -17
  334. package/tests/extensions/endless-memory-services.test.ts +0 -325
  335. package/tests/extensions/mcp-context-tools.test.ts +0 -905
  336. package/tests/extensions/mcp-extension-boundary.test.ts +0 -21
  337. package/tests/extensions/mcp-package-build.test.ts +0 -22
  338. package/tests/extensions/mcp-project-aware-tools.test.ts +0 -102
  339. package/tests/extensions/shared-memory-extension-boundary.test.ts +0 -24
  340. package/tests/extensions/shared-memory-services.test.ts +0 -309
  341. package/tests/extensions/vector-extension-boundary.test.ts +0 -21
  342. package/tsconfig.json +0 -24
  343. package/vitest.config.ts +0 -15
@@ -1,465 +0,0 @@
1
- # Thin Core Refactor Specification
2
-
3
- > **Version**: 1.0.0
4
- > **Status**: Draft
5
- > **Created**: 2026-04-30
6
- > **References**: memsearch, superlocalmemory, existing claude-memory-layer architecture
7
-
8
- ## 1. 개요
9
-
10
- ### 1.1 문제 정의
11
-
12
- 현재 `claude-memory-layer`는 기능적으로 강하지만 구조적으로 다음 문제가 누적되고 있다.
13
-
14
- 1. **코어와 확장 기능의 경계가 흐림**
15
- - `MemoryService`가 저장, 검색, vector indexing, shared memory, continuity, markdown mirror, workers, analytics 역할을 동시에 가진다.
16
-
17
- 2. **저장 계층의 책임이 명확하지 않음**
18
- - SQLite, LanceDB, markdown mirror, shared store, Mongo sync가 공존하지만 canonical/derived 관계가 코드와 문서에서 충분히 분명하지 않다.
19
-
20
- 3. **Claude-specific logic이 코어를 오염시킴**
21
- - hooks와 transcript recovery가 제품 강점이긴 하지만, core engine과 물리적으로 분리되지 않아 구조 이해와 테스트가 어려워진다.
22
-
23
- 4. **문서와 구현 drift**
24
- - README/문서 일부와 실제 저장/서버/MCP wiring 사이에 불일치가 존재한다.
25
-
26
- 5. **기능 추가 방향이 플랫폼 비대화로 이어질 위험**
27
- - shared memory, endless mode, graph-like concepts, MCP, analytics 등이 하나의 monolith 안에 누적되고 있다.
28
-
29
- ### 1.2 목표
30
-
31
- 이 스펙의 목표는 `claude-memory-layer`를 다음 구조로 재정의하는 것이다.
32
-
33
- > **얇은 코어 메모리 엔진 + 강한 Claude adapter + 선택형 accelerators/extensions + 명확한 apps layer**
34
-
35
- ### 1.3 비목표
36
-
37
- 이번 리팩터링에서 다음은 직접 목표가 아니다.
38
-
39
- - 모든 기능 제거
40
- - 완전 재작성(rewrite from scratch)
41
- - 모든 확장 기능을 즉시 폐기
42
- - full code graph 플랫폼 구축
43
- - multi-agent mesh / learning platform 추가
44
-
45
- ---
46
-
47
- ## 2. 핵심 설계 원칙
48
-
49
- ### 2.1 Canonical vs Derived 분리
50
-
51
- 시스템 내 저장 계층을 명시적으로 분리한다.
52
-
53
- #### Canonical
54
- - **SQLite**: machine canonical store
55
-
56
- #### Canonical projection
57
- - **Markdown journal**: human-readable canonical projection / export-friendly journal
58
-
59
- #### Derived / rebuildable
60
- - **LanceDB vector index**
61
- - derived summaries
62
- - retrieval traces
63
- - shared replication state
64
-
65
- #### Optional extension state
66
- - shared memory sync
67
- - Mongo sync metadata
68
- - MCP-specific caches or adapters
69
-
70
- ### 2.2 Raw / Fact / Summary / Rule 4계층 모델
71
-
72
- 메모리 모델을 다음 4층으로 재정의한다.
73
-
74
- 1. **RawEvent**
75
- - 원본 prompt, assistant response, tool output, session markers, imported history
76
- 2. **MemoryFact**
77
- - 검색 단위로 사용할 정제된 사실 단위
78
- 3. **MemorySummary**
79
- - turn/session/project/continuity 등 상위 요약 단위
80
- 4. **MemoryRule**
81
- - 반복되는 선호, 패턴, 관례, 안정적 constraint
82
-
83
- ### 2.3 Core는 SQLite-only로 최소 기능 제공
84
-
85
- 필수 최소 기능은 vector index 없이도 동작해야 한다.
86
-
87
- 최소 기능:
88
- - raw event 기록
89
- - recent timeline / keyword search
90
- - basic fact retrieval
91
- - source tracing
92
- - session/project registry
93
-
94
- ### 2.4 Claude lifecycle은 adapter 계층으로 격리
95
-
96
- 다음 로직은 core가 아니라 adapter다.
97
-
98
- - hook payload parsing
99
- - transcript reconstruction
100
- - additionalContext formatting
101
- - tool capture heuristics
102
- - Claude plugin install/uninstall integration
103
-
104
- ### 2.5 실험 기능은 extension 경계 안에 둔다
105
-
106
- 다음은 extension으로 재배치한다.
107
-
108
- - vector embedding/index pipeline
109
- - semantic daemon
110
- - shared store
111
- - Mongo sync
112
- - MCP server
113
- - continuity/endless mode
114
- - advanced graph/task-like models
115
-
116
- ---
117
-
118
- ## 3. 목표 아키텍처
119
-
120
- ### 3.1 Layer model
121
-
122
- ```text
123
- Apps
124
- ├─ CLI
125
- ├─ Server/API
126
- └─ Dashboard
127
-
128
- Adapters
129
- └─ Claude
130
-
131
- Extensions
132
- ├─ Vector acceleration
133
- ├─ Analytics
134
- ├─ Shared memory
135
- ├─ Mongo sync
136
- ├─ MCP
137
- └─ Continuity
138
-
139
- Core
140
- ├─ Models
141
- ├─ SQLite storage
142
- ├─ Fact/Summary derivation
143
- ├─ Retrieval engine
144
- ├─ Journal projection
145
- └─ Registry
146
- ```
147
-
148
- ### 3.2 Dependency rules
149
-
150
- 1. `core`는 `adapters`를 import하지 않는다.
151
- 2. `core`는 `apps`를 import하지 않는다.
152
- 3. `extensions`는 `core`를 사용할 수 있지만, core의 기본 기능을 전제로 삼지 않는다.
153
- 4. `apps`는 composition root다. 도메인 로직은 두지 않는다.
154
- 5. `adapters/claude`는 Claude-specific heuristic과 serialization만 가진다.
155
-
156
- ---
157
-
158
- ## 4. 도메인 모델 명세
159
-
160
- ### 4.1 RawEvent
161
-
162
- ```typescript
163
- interface RawEvent {
164
- eventId: string;
165
- projectHash: string;
166
- sessionId: string;
167
- turnId?: string;
168
- eventType:
169
- | 'user_prompt'
170
- | 'assistant_response'
171
- | 'tool_output'
172
- | 'session_marker'
173
- | 'imported_turn';
174
- content: string;
175
- toolName?: string;
176
- sourceRef?: string;
177
- metadata: Record<string, unknown>;
178
- privacyLevel: 'public' | 'internal' | 'private' | 'masked';
179
- createdAt: string;
180
- }
181
- ```
182
-
183
- ### 4.2 MemoryFact
184
-
185
- ```typescript
186
- interface MemoryFact {
187
- factId: string;
188
- projectHash: string;
189
- factType:
190
- | 'decision'
191
- | 'constraint'
192
- | 'task_state'
193
- | 'tool_observation'
194
- | 'preference'
195
- | 'code_context'
196
- | 'summary_fact';
197
- text: string;
198
- derivedFromEventIds: string[];
199
- sourceKind: 'prompt' | 'assistant' | 'tool' | 'import';
200
- confidence: number;
201
- importance: number;
202
- tags: string[];
203
- entityRefs?: string[];
204
- fileRefs?: string[];
205
- symbolRefs?: string[];
206
- createdAt: string;
207
- updatedAt: string;
208
- }
209
- ```
210
-
211
- ### 4.3 MemorySummary
212
-
213
- ```typescript
214
- interface MemorySummary {
215
- summaryId: string;
216
- summaryType:
217
- | 'turn'
218
- | 'session'
219
- | 'project'
220
- | 'continuity'
221
- | 'timeline_digest';
222
- refId: string;
223
- text: string;
224
- sourceEventIds: string[];
225
- sourceFactIds: string[];
226
- createdAt: string;
227
- }
228
- ```
229
-
230
- ### 4.4 MemoryRule
231
-
232
- ```typescript
233
- interface MemoryRule {
234
- ruleId: string;
235
- projectHash?: string;
236
- scope: 'project' | 'shared';
237
- ruleType: 'preference' | 'workflow' | 'convention' | 'constraint';
238
- text: string;
239
- confidence: number;
240
- evidenceIds: string[];
241
- createdAt: string;
242
- updatedAt: string;
243
- }
244
- ```
245
-
246
- ### 4.5 RetrievalResultEnvelope
247
-
248
- ```typescript
249
- interface RetrievalResultEnvelope {
250
- id: string;
251
- resultType: 'fact' | 'summary' | 'tool_evidence' | 'rule' | 'source';
252
- title?: string;
253
- snippet: string;
254
- score: number;
255
- reasons: RetrievalReason[];
256
- sourceRef?: string;
257
- sessionId?: string;
258
- turnId?: string;
259
- metadata?: Record<string, unknown>;
260
- }
261
-
262
- type RetrievalReason =
263
- | 'semantic_match'
264
- | 'keyword_match'
265
- | 'recent_relevance'
266
- | 'continuity_link'
267
- | 'entity_overlap'
268
- | 'tool_followup'
269
- | 'summary_fallback';
270
- ```
271
-
272
- ---
273
-
274
- ## 5. 검색 제품 동작 명세
275
-
276
- ### 5.1 3단 retrieval UX
277
-
278
- 검색 UX를 다음 세 단계로 통일한다.
279
-
280
- #### Search
281
- - compact results
282
- - snippet + type + score + reasons 제공
283
-
284
- #### Expand
285
- - 선택된 result의 주변 fact/summary/source 맥락 제공
286
- - 같은 turn/session/tool run 문맥 확장 가능
287
-
288
- #### Source
289
- - transcript / raw event / tool output / import source로 drill-down
290
-
291
- ### 5.2 Search contract
292
-
293
- ```typescript
294
- interface MemoryQuery {
295
- query: string;
296
- topK?: number;
297
- scope?: 'project' | 'shared' | 'all';
298
- includeTypes?: Array<'fact' | 'summary' | 'rule' | 'tool_evidence'>;
299
- }
300
-
301
- interface SearchResponse {
302
- results: RetrievalResultEnvelope[];
303
- meta: {
304
- total: number;
305
- usedVector: boolean;
306
- usedKeyword: boolean;
307
- fallbackApplied: boolean;
308
- };
309
- }
310
- ```
311
-
312
- ### 5.3 Expand contract
313
-
314
- ```typescript
315
- interface ExpandResponse {
316
- target: RetrievalResultEnvelope;
317
- surroundingFacts?: RetrievalResultEnvelope[];
318
- summaries?: RetrievalResultEnvelope[];
319
- relatedSources?: SourceReference[];
320
- }
321
- ```
322
-
323
- ### 5.4 Source contract
324
-
325
- ```typescript
326
- interface SourceReference {
327
- sourceRef: string;
328
- sourceType: 'raw_event' | 'transcript' | 'tool_output' | 'imported_history';
329
- eventIds: string[];
330
- }
331
- ```
332
-
333
- ---
334
-
335
- ## 6. 저장 및 인덱싱 명세
336
-
337
- ### 6.1 SQLite canonical requirements
338
-
339
- SQLite는 다음을 지원해야 한다.
340
-
341
- - append-only raw events
342
- - fact and summary storage
343
- - session/project registry linkage
344
- - keyword search and timeline lookup
345
- - source tracing
346
- - optional retrieval traces
347
-
348
- ### 6.2 Vector acceleration requirements
349
-
350
- Vector 계층은 optional이며 다음을 만족해야 한다.
351
-
352
- - disabled 상태에서도 search는 동작
353
- - enabled 상태에서는 hybrid retrieval을 제공
354
- - rebuildable index여야 함
355
- - canonical source를 절대 직접 수정하지 않음
356
-
357
- ### 6.3 Journal requirements
358
-
359
- Markdown journal은 다음을 만족해야 한다.
360
-
361
- - 사람이 읽기 쉬운 요약/사실/세션 흐름 제공
362
- - export/import friendly
363
- - SQLite canonical을 기반으로 projection 가능
364
- - journal만으로 고급 검색을 책임지지 않음
365
-
366
- ---
367
-
368
- ## 7. API / service boundary requirements
369
-
370
- ### 7.1 Core service interfaces
371
-
372
- 필수 core interface:
373
- - `ProjectRegistryService`
374
- - `MemoryIngestService`
375
- - `FactDeriver`
376
- - `SummaryDeriver`
377
- - `RetrievalEngine`
378
- - `JournalService`
379
-
380
- ### 7.2 Compatibility requirement
381
-
382
- 기존 `MemoryService`는 즉시 제거하지 않는다.
383
-
384
- 요구사항:
385
- - transitional facade로 유지 가능
386
- - 내부적으로 새 서비스를 호출하도록 점진 교체
387
- - 기존 CLI/server/hooks 호출 경로를 당분간 깨지 않음
388
-
389
- ### 7.3 Adapter requirements
390
-
391
- Claude adapter는 다음을 제공해야 한다.
392
-
393
- - hook handlers
394
- - transcript reconstruction
395
- - capture policy
396
- - context formatter
397
- - install/uninstall workflow support
398
-
399
- ---
400
-
401
- ## 8. 마이그레이션 요구사항
402
-
403
- ### 8.1 Non-breaking migration
404
-
405
- - 기존 저장 데이터를 최대한 유지
406
- - 대규모 destructive migration 지양
407
- - compatibility wrappers 허용
408
-
409
- ### 8.2 Feature-flagged extraction
410
-
411
- 다음 기능은 feature flag 또는 lazy initialization을 허용한다.
412
- - vector acceleration
413
- - semantic daemon
414
- - shared memory
415
- - MCP
416
- - continuity systems
417
-
418
- ### 8.3 Documentation synchronization
419
-
420
- 리팩터링 중 반드시 다음이 동기화되어야 한다.
421
- - README
422
- - docs/OPERATIONS.md
423
- - architecture docs
424
- - package metadata / shipped entrypoints
425
-
426
- ---
427
-
428
- ## 9. 수용 기준
429
-
430
- 이 스펙이 충족되었다고 보려면 다음 조건이 만족되어야 한다.
431
-
432
- 1. 프로젝트 구조상 `core`, `adapters`, `extensions`, `apps` 경계가 물리적으로 존재한다.
433
- 2. SQLite-only 모드에서 최소 ingest/search/source tracing이 동작한다.
434
- 3. vector disabled 상태에서도 CLI/server 기본 기능이 깨지지 않는다.
435
- 4. Claude hooks entrypoints는 adapter layer 하위에 위치한다.
436
- 5. retrieval 결과는 result type과 retrieval reason을 포함한다.
437
- 6. `MemoryService`가 얇은 orchestration facade로 축소되거나 compat layer로 이동한다.
438
- 7. README와 구현 현실의 drift가 제거된다.
439
-
440
- ---
441
-
442
- ## 10. 기대 효과
443
-
444
- ### 개발자 관점
445
- - 구조 이해가 빨라짐
446
- - 테스트 경계가 분명해짐
447
- - 신규 기능의 위치를 판단하기 쉬워짐
448
-
449
- ### 제품 관점
450
- - 코어가 가벼워져 유지보수성이 높아짐
451
- - Claude integration 강점은 유지됨
452
- - shared/MCP/vector 기능을 옵션화하기 쉬워짐
453
-
454
- ### 장기 관점
455
- - 다른 adapter 가능성이 열림
456
- - code-aware memory나 light graph 기능을 더 안전하게 추가 가능
457
- - 플랫폼 비대화 리스크를 통제할 수 있음
458
-
459
- ---
460
-
461
- ## 11. 최종 판단
462
-
463
- 이 스펙의 핵심은 기능 감축이 아니라 **책임 분리와 구조의 재정의**다.
464
-
465
- 즉, `claude-memory-layer`는 앞으로도 강한 기능을 유지할 수 있다. 다만 그 기능들이 **코어를 짓누르지 않도록 올바른 층에 배치되어야 한다.**