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
@@ -1,455 +0,0 @@
1
- # Endless Mode Specification
2
-
3
- > **Version**: 1.0.0
4
- > **Status**: Draft
5
- > **Created**: 2026-02-01
6
- > **Reference**: claude-mem (thedotmack/claude-mem)
7
-
8
- ## 1. 개요
9
-
10
- ### 1.1 문제 정의
11
-
12
- 현재 세션 기반 메모리의 한계:
13
-
14
- 1. **세션 경계**: 세션이 끝나면 컨텍스트 단절
15
- 2. **재시작 비용**: 새 세션마다 컨텍스트 재구성 필요
16
- 3. **연속성 부족**: 장기 프로젝트에서 연속적 학습 어려움
17
-
18
- ### 1.2 해결 방향
19
-
20
- **Endless Mode (연속 세션)**:
21
- - 세션 경계 없는 연속적 메모리 스트림
22
- - Biomimetic Memory Architecture (생체 모방 기억 구조)
23
- - 자동 컨텍스트 연속성 유지
24
-
25
- ## 2. 핵심 개념
26
-
27
- ### 2.1 Biomimetic Memory Architecture
28
-
29
- 인간 기억 시스템에서 영감:
30
-
31
- ```
32
- ┌─────────────────────────────────────────────────────────────┐
33
- │ Human Memory Model │
34
- ├─────────────────────────────────────────────────────────────┤
35
- │ Sensory Memory → Working Memory → Long-term Memory │
36
- │ (즉각적) (단기) (장기) │
37
- └─────────────────────────────────────────────────────────────┘
38
-
39
- ┌─────────────────────────────────────────────────────────────┐
40
- │ Endless Mode Memory │
41
- ├─────────────────────────────────────────────────────────────┤
42
- │ Event Stream → Active Context → Consolidated Memory │
43
- │ (L0 Events) (Working Set) (L4 Memories) │
44
- └─────────────────────────────────────────────────────────────┘
45
- ```
46
-
47
- ### 2.2 세션 vs Endless
48
-
49
- | 기존 세션 모드 | Endless Mode |
50
- |---------------|-------------|
51
- | 명확한 시작/끝 | 연속적 스트림 |
52
- | 세션별 요약 | 점진적 통합 |
53
- | 재시작 시 빈 상태 | 이전 컨텍스트 유지 |
54
- | session_end 훅 | 백그라운드 통합 |
55
-
56
- ### 2.3 모드 전환
57
-
58
- ```typescript
59
- enum MemoryMode {
60
- SESSION = 'session', // 기존 세션 기반
61
- ENDLESS = 'endless' // 연속 모드
62
- }
63
- ```
64
-
65
- ## 3. 아키텍처
66
-
67
- ### 3.1 레이어 구조
68
-
69
- ```
70
- ┌─────────────────────────────────────────────────────────────┐
71
- │ Layer 0: Event Stream (Raw) │
72
- │ - 모든 이벤트 즉시 기록 │
73
- │ - 변환/필터 없음 │
74
- │ - TTL: 무제한 │
75
- └──────────────────────────────────────────┬──────────────────┘
76
-
77
- (Background)
78
-
79
- ┌──────────────────────────────────────────▼──────────────────┐
80
- │ Layer 1: Working Set (Active Context) │
81
- │ - 최근 N개 이벤트 │
82
- │ - 현재 작업 관련 메모리 │
83
- │ - TTL: 24시간 (sliding) │
84
- └──────────────────────────────────────────┬──────────────────┘
85
-
86
- (Consolidation)
87
-
88
- ┌──────────────────────────────────────────▼──────────────────┐
89
- │ Layer 2: Consolidated Memory (Long-term) │
90
- │ - 통합/요약된 지식 │
91
- │ - 패턴 및 인사이트 │
92
- │ - TTL: 무제한 │
93
- └─────────────────────────────────────────────────────────────┘
94
- ```
95
-
96
- ### 3.2 Working Set 관리
97
-
98
- ```typescript
99
- interface WorkingSet {
100
- // 최근 이벤트
101
- recentEvents: Event[]; // 최근 100개
102
- recentTimeWindow: number; // 최근 24시간
103
-
104
- // 활성 컨텍스트
105
- activeTopics: Topic[]; // 현재 다루는 주제
106
- activeFiles: string[]; // 최근 접근 파일
107
- activeEntities: Entity[]; // 관련 엔티티
108
-
109
- // 메타데이터
110
- lastActivity: Date;
111
- continuityScore: number; // 연속성 점수
112
- }
113
- ```
114
-
115
- ### 3.3 Consolidation Process
116
-
117
- ```typescript
118
- interface ConsolidationConfig {
119
- // 트리거 조건
120
- triggerInterval: number; // 1시간마다
121
- triggerEventCount: number; // 100개 이벤트마다
122
- triggerIdleTime: number; // 30분 유휴 후
123
-
124
- // 통합 규칙
125
- minEventsToConsolidate: number; // 최소 10개
126
- maxConsolidatedSize: number; // 최대 1000자 요약
127
- preserveHighConfidence: boolean;// 고신뢰도 원본 유지
128
- }
129
- ```
130
-
131
- ## 4. 컨텍스트 연속성
132
-
133
- ### 4.1 연속성 점수
134
-
135
- ```typescript
136
- function calculateContinuityScore(
137
- currentContext: Context,
138
- previousContext: Context
139
- ): number {
140
- let score = 0;
141
-
142
- // 주제 연속성
143
- const topicOverlap = intersection(
144
- currentContext.topics,
145
- previousContext.topics
146
- ).length;
147
- score += topicOverlap * 0.3;
148
-
149
- // 파일 연속성
150
- const fileOverlap = intersection(
151
- currentContext.files,
152
- previousContext.files
153
- ).length;
154
- score += fileOverlap * 0.2;
155
-
156
- // 시간 근접성
157
- const timeDiff = currentContext.timestamp - previousContext.timestamp;
158
- const timeScore = Math.exp(-timeDiff / (24 * 60 * 60 * 1000));
159
- score += timeScore * 0.3;
160
-
161
- // 엔티티 연속성
162
- const entityOverlap = intersection(
163
- currentContext.entities,
164
- previousContext.entities
165
- ).length;
166
- score += entityOverlap * 0.2;
167
-
168
- return Math.min(score, 1.0);
169
- }
170
- ```
171
-
172
- ### 4.2 컨텍스트 주입
173
-
174
- ```typescript
175
- async function injectEndlessContext(
176
- currentPrompt: string
177
- ): Promise<string> {
178
- const workingSet = await getWorkingSet();
179
-
180
- // 연속성 점수 기반 컨텍스트 선택
181
- const relevantContext = workingSet.recentEvents
182
- .filter(e => e.relevanceScore >= 0.7)
183
- .slice(0, 10);
184
-
185
- // 통합된 메모리에서 관련 항목
186
- const consolidatedContext = await searchConsolidatedMemory(
187
- currentPrompt,
188
- { topK: 3 }
189
- );
190
-
191
- return formatEndlessContext({
192
- workingSet: relevantContext,
193
- consolidated: consolidatedContext,
194
- continuityScore: workingSet.continuityScore
195
- });
196
- }
197
- ```
198
-
199
- ## 5. 통합 (Consolidation) 프로세스
200
-
201
- ### 5.1 자동 통합
202
-
203
- ```typescript
204
- class ConsolidationWorker {
205
- private running = false;
206
-
207
- async start(): Promise<void> {
208
- this.running = true;
209
-
210
- while (this.running) {
211
- await this.checkAndConsolidate();
212
- await sleep(this.config.triggerInterval);
213
- }
214
- }
215
-
216
- private async checkAndConsolidate(): Promise<void> {
217
- const workingSet = await getWorkingSet();
218
-
219
- // 트리거 조건 확인
220
- if (this.shouldConsolidate(workingSet)) {
221
- await this.consolidate(workingSet);
222
- }
223
- }
224
-
225
- private shouldConsolidate(workingSet: WorkingSet): boolean {
226
- // 이벤트 수 기준
227
- if (workingSet.recentEvents.length >= this.config.triggerEventCount) {
228
- return true;
229
- }
230
-
231
- // 유휴 시간 기준
232
- const idleTime = Date.now() - workingSet.lastActivity.getTime();
233
- if (idleTime >= this.config.triggerIdleTime) {
234
- return true;
235
- }
236
-
237
- return false;
238
- }
239
-
240
- private async consolidate(workingSet: WorkingSet): Promise<void> {
241
- // 1. 관련 이벤트 그룹화
242
- const groups = groupByTopic(workingSet.recentEvents);
243
-
244
- // 2. 각 그룹 요약
245
- for (const group of groups) {
246
- const summary = await summarizeGroup(group);
247
-
248
- // 3. 통합 메모리에 저장
249
- await storeConsolidatedMemory({
250
- summary,
251
- sourceEvents: group.map(e => e.eventId),
252
- topics: group.topics,
253
- confidence: calculateGroupConfidence(group)
254
- });
255
- }
256
-
257
- // 4. Working Set 정리
258
- await pruneWorkingSet(workingSet);
259
- }
260
- }
261
- ```
262
-
263
- ### 5.2 요약 생성
264
-
265
- ```typescript
266
- async function summarizeGroup(events: Event[]): Promise<string> {
267
- // 옵션 1: 로컬 규칙 기반
268
- if (events.length < 5) {
269
- return extractKeyPoints(events);
270
- }
271
-
272
- // 옵션 2: LLM 기반 (비용 발생)
273
- if (config.useLLMSummarization) {
274
- return await llmSummarize(events);
275
- }
276
-
277
- // 옵션 3: 하이브리드
278
- const keyPoints = extractKeyPoints(events);
279
- return formatSummary(keyPoints);
280
- }
281
- ```
282
-
283
- ## 6. 데이터 스키마
284
-
285
- ### 6.1 Working Set 테이블
286
-
287
- ```sql
288
- CREATE TABLE working_set (
289
- id VARCHAR PRIMARY KEY,
290
- event_id VARCHAR NOT NULL REFERENCES events(event_id),
291
- added_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
292
- relevance_score FLOAT,
293
- topics JSON,
294
- expires_at TIMESTAMP
295
- );
296
-
297
- CREATE INDEX idx_working_set_expires ON working_set(expires_at);
298
- CREATE INDEX idx_working_set_relevance ON working_set(relevance_score DESC);
299
- ```
300
-
301
- ### 6.2 Consolidated Memory 테이블
302
-
303
- ```sql
304
- CREATE TABLE consolidated_memories (
305
- memory_id VARCHAR PRIMARY KEY,
306
- summary TEXT NOT NULL,
307
- topics JSON,
308
- source_events JSON, -- 원본 이벤트 ID 목록
309
- confidence FLOAT,
310
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
311
- accessed_at TIMESTAMP,
312
- access_count INTEGER DEFAULT 0
313
- );
314
-
315
- CREATE INDEX idx_consolidated_confidence ON consolidated_memories(confidence DESC);
316
- ```
317
-
318
- ### 6.3 Continuity Log 테이블
319
-
320
- ```sql
321
- CREATE TABLE continuity_log (
322
- log_id VARCHAR PRIMARY KEY,
323
- from_context_id VARCHAR,
324
- to_context_id VARCHAR,
325
- continuity_score FLOAT,
326
- transition_type VARCHAR, -- 'seamless' | 'topic_shift' | 'break'
327
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
328
- );
329
- ```
330
-
331
- ## 7. 설정
332
-
333
- ### 7.1 Endless Mode 설정
334
-
335
- ```typescript
336
- const EndlessModeConfigSchema = z.object({
337
- enabled: z.boolean().default(false),
338
-
339
- workingSet: z.object({
340
- maxEvents: z.number().default(100),
341
- timeWindowHours: z.number().default(24),
342
- minRelevanceScore: z.number().default(0.5)
343
- }),
344
-
345
- consolidation: z.object({
346
- triggerIntervalMs: z.number().default(3600000), // 1시간
347
- triggerEventCount: z.number().default(100),
348
- triggerIdleMs: z.number().default(1800000), // 30분
349
- useLLMSummarization: z.boolean().default(false)
350
- }),
351
-
352
- continuity: z.object({
353
- minScoreForSeamless: z.number().default(0.7),
354
- topicDecayHours: z.number().default(48)
355
- })
356
- });
357
- ```
358
-
359
- ### 7.2 모드 전환
360
-
361
- ```bash
362
- # Endless Mode 활성화
363
- $ code-memory config set mode endless
364
-
365
- # Session Mode로 복귀
366
- $ code-memory config set mode session
367
-
368
- # 현재 모드 확인
369
- $ code-memory config get mode
370
- ```
371
-
372
- ## 8. UI 표시
373
-
374
- ### 8.1 CLI 상태
375
-
376
- ```
377
- $ code-memory status
378
-
379
- Mode: Endless
380
- Working Set: 47 events (last 18 hours)
381
- Continuity Score: 0.85 (seamless)
382
- Consolidated: 23 memories
383
- Last Consolidation: 2 hours ago
384
-
385
- Active Topics:
386
- - DuckDB schema design
387
- - Event sourcing pattern
388
- - TypeScript types
389
-
390
- Recent Files:
391
- - src/core/event-store.ts
392
- - src/core/types.ts
393
- ```
394
-
395
- ### 8.2 Web Viewer
396
-
397
- ```
398
- ┌─────────────────────────────────────────────────────────────┐
399
- │ Endless Mode Dashboard │
400
- ├─────────────────────────────────────────────────────────────┤
401
- │ │
402
- │ ┌─────────────────┐ ┌─────────────────┐ │
403
- │ │ Continuity │ │ Working Set │ │
404
- │ │ 0.85 │ │ 47 events │ │
405
- │ │ ████████░░ │ │ 18 hours │ │
406
- │ │ Seamless │ └─────────────────┘ │
407
- │ └─────────────────┘ │
408
- │ │
409
- │ Timeline (Continuous) │
410
- │ ──────────────────────────────────────────────────────────│
411
- │ │ │ │ │ │ │ │ │ │ │ │ │
412
- │ └────┴────┴────┴────┴────┴────┴────┴────┴────┴────┘ │
413
- │ -24h -12h now │
414
- │ │
415
- │ Consolidated Memories (23) │
416
- │ ───────────────────────────────────────────────────────── │
417
- │ 📝 DuckDB 스키마 설계 결정 (confidence: 0.92) │
418
- │ 📝 이벤트 소싱 패턴 구현 (confidence: 0.88) │
419
- │ 📝 타입 시스템 리팩토링 (confidence: 0.85) │
420
- │ │
421
- └─────────────────────────────────────────────────────────────┘
422
- ```
423
-
424
- ## 9. 마이그레이션
425
-
426
- ### 9.1 Session → Endless 전환
427
-
428
- ```typescript
429
- async function migrateToEndless(): Promise<void> {
430
- // 1. 기존 세션 데이터 유지
431
- // 2. Working Set 초기화
432
- const recentSessions = await getRecentSessions(7); // 최근 7일
433
-
434
- for (const session of recentSessions) {
435
- const events = await getSessionEvents(session.id);
436
- await addToWorkingSet(events);
437
- }
438
-
439
- // 3. 초기 통합 실행
440
- await runInitialConsolidation();
441
-
442
- // 4. 모드 변경
443
- await setConfig('mode', 'endless');
444
- }
445
- ```
446
-
447
- ## 10. 성공 기준
448
-
449
- - [ ] Endless Mode 활성화/비활성화 전환 가능
450
- - [ ] Working Set이 24시간 슬라이딩 윈도우로 유지
451
- - [ ] 자동 Consolidation이 백그라운드에서 실행
452
- - [ ] 연속성 점수가 정확히 계산됨
453
- - [ ] 세션 재시작 시 이전 컨텍스트 자동 로드
454
- - [ ] Web Viewer에서 Endless Mode 대시보드 표시
455
- - [ ] 기존 Session Mode와 호환 유지