claude-memory-layer 1.0.26 → 1.0.28
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.
- package/.env.example +7 -0
- package/AGENTS.md +11 -0
- package/README.md +184 -41
- package/benchmarks/replay/anonymized-real-sessions.json +48 -0
- package/dist/cli/index.js +10097 -6003
- package/dist/cli/index.js.map +4 -4
- package/dist/core/index.js +9745 -5587
- package/dist/core/index.js.map +4 -4
- package/dist/hooks/post-tool-use.js +6545 -5270
- package/dist/hooks/post-tool-use.js.map +4 -4
- package/dist/hooks/semantic-daemon.js +6646 -5354
- package/dist/hooks/semantic-daemon.js.map +4 -4
- package/dist/hooks/session-end.js +6618 -5347
- package/dist/hooks/session-end.js.map +4 -4
- package/dist/hooks/session-start.js +6619 -5354
- package/dist/hooks/session-start.js.map +4 -4
- package/dist/hooks/stop.js +6614 -5325
- package/dist/hooks/stop.js.map +4 -4
- package/dist/hooks/user-prompt-submit.js +6702 -5356
- package/dist/hooks/user-prompt-submit.js.map +4 -4
- package/dist/index.js +13537 -0
- package/dist/index.js.map +7 -0
- package/dist/mcp/index.js +20770 -0
- package/dist/mcp/index.js.map +7 -0
- package/dist/server/api/index.js +6632 -5319
- package/dist/server/api/index.js.map +4 -4
- package/dist/server/index.js +6667 -5340
- package/dist/server/index.js.map +4 -4
- package/dist/services/memory-service.js +6568 -5350
- package/dist/services/memory-service.js.map +4 -4
- package/dist/ui/assets/js/bootstrap.js +244 -0
- package/dist/ui/assets/js/chat.js +373 -0
- package/dist/ui/assets/js/disclosure.js +232 -0
- package/dist/ui/assets/js/modals.js +298 -0
- package/dist/ui/assets/js/overview.js +655 -0
- package/dist/ui/assets/js/state.js +72 -0
- package/dist/ui/assets/js/views.js +468 -0
- package/dist/ui/index.html +43 -1
- package/dist/ui/index.ts +3 -0
- package/dist/ui/style.css +222 -0
- package/docs/ARCHITECTURE_COMPARISON_AND_RECOMMENDATIONS.md +627 -0
- package/docs/HERMES_MEMORY_INGESTION_ANALYSIS.md +440 -0
- package/docs/MEMORY_USEFULNESS_AUDIT.md +371 -0
- package/docs/MEMORY_USEFULNESS_AUDIT_RAW.json +80 -0
- package/docs/MEMSEARCH_PROJECT_STRUCTURE_ANALYSIS.md +333 -0
- package/docs/PRODUCT_VALIDATION_MATRIX.md +82 -0
- package/docs/PROJECT_STRUCTURE_ANALYSIS.md +421 -0
- package/docs/REFACTORING_MILESTONES_AND_ISSUES.md +501 -0
- package/docs/REFACTORING_PLAN_THIN_CORE.md +414 -0
- package/docs/REFERENCE_PROJECT_ANALYSES.md +25 -0
- package/docs/SUPERLOCALMEMORY_PROJECT_STRUCTURE_ANALYSIS.md +452 -0
- package/docs/TARGET_ARCHITECTURE_AND_FOLDER_STRUCTURE.md +446 -0
- package/docs/architecture/comparison-index.md +47 -0
- package/docs/reports/codex-real-data-validation-20260505T040447Z.md +46 -0
- package/package.json +9 -5
- package/scripts/build.ts +25 -8
- package/scripts/generate-session-qrels.ts +126 -0
- package/scripts/replay-retrieval-benchmark.ts +69 -0
- package/specs/thin-core-refactor/context.md +275 -0
- package/specs/thin-core-refactor/plan.md +536 -0
- package/specs/thin-core-refactor/spec.md +465 -0
- package/src/adapters/claude/capture/index.ts +3 -0
- package/src/adapters/claude/context/index.ts +3 -0
- package/src/adapters/claude/hooks/index.ts +21 -0
- package/src/adapters/claude/hooks/post-tool-use.ts +239 -0
- package/src/adapters/claude/hooks/prompt-injection-policy.ts +104 -0
- package/src/adapters/claude/hooks/semantic-daemon-client.ts +209 -0
- package/src/adapters/claude/hooks/semantic-daemon.ts +283 -0
- package/src/adapters/claude/hooks/session-end.ts +59 -0
- package/src/adapters/claude/hooks/session-start.ts +73 -0
- package/src/adapters/claude/hooks/stop.ts +128 -0
- package/src/adapters/claude/hooks/user-prompt-submit.ts +361 -0
- package/src/adapters/claude/index.ts +4 -0
- package/src/adapters/claude/transcript/index.ts +4 -0
- package/src/adapters/claude/transcript/transcript-reader.ts +57 -0
- package/src/adapters/claude/transcript/turn-reconstructor.ts +65 -0
- package/src/apps/cli/claude-settings-hooks.ts +138 -0
- package/src/apps/cli/codex-import-runner.ts +125 -0
- package/src/apps/cli/codex-validation-output.ts +95 -0
- package/src/apps/cli/hermes-import-runner.ts +130 -0
- package/src/apps/cli/hermes-validation-output.ts +91 -0
- package/src/apps/cli/index.ts +1731 -0
- package/src/apps/cli/mcp-install.ts +106 -0
- package/src/apps/cli/retrieval-disclosure-output.ts +196 -0
- package/src/apps/dashboard/assets/js/bootstrap.js +244 -0
- package/src/apps/dashboard/assets/js/chat.js +373 -0
- package/src/apps/dashboard/assets/js/disclosure.js +232 -0
- package/src/apps/dashboard/assets/js/modals.js +298 -0
- package/src/apps/dashboard/assets/js/overview.js +655 -0
- package/src/apps/dashboard/assets/js/state.js +72 -0
- package/src/apps/dashboard/assets/js/views.js +468 -0
- package/src/{ui → apps/dashboard}/index.html +43 -1
- package/src/apps/dashboard/index.ts +3 -0
- package/src/{ui → apps/dashboard}/style.css +222 -0
- package/src/apps/index.ts +5 -0
- package/src/apps/server/api/chat.ts +244 -0
- package/src/apps/server/api/citations.ts +105 -0
- package/src/apps/server/api/events.ts +137 -0
- package/src/apps/server/api/health.ts +53 -0
- package/src/apps/server/api/index.ts +26 -0
- package/src/apps/server/api/projects.ts +74 -0
- package/src/apps/server/api/search.ts +184 -0
- package/src/apps/server/api/sessions.ts +115 -0
- package/src/apps/server/api/stats.ts +723 -0
- package/src/apps/server/api/turns.ts +143 -0
- package/src/apps/server/api/utils.ts +65 -0
- package/src/apps/server/index.ts +111 -0
- package/src/cli/index.ts +2 -1311
- package/src/cli/retrieval-disclosure-output.ts +2 -0
- package/src/compat/index.ts +5 -0
- package/src/core/derive/fact-deriver.ts +170 -0
- package/src/core/derive/index.ts +2 -0
- package/src/core/derive/summary-deriver.ts +76 -0
- package/src/core/embedder.ts +4 -152
- package/src/core/engine/embedding-maintenance-service.ts +187 -0
- package/src/core/engine/endless-memory-services.ts +4 -0
- package/src/core/engine/index.ts +19 -0
- package/src/core/engine/memory-engine-services.ts +170 -0
- package/src/core/engine/memory-ingest-service.ts +317 -0
- package/src/core/engine/memory-query-service.ts +173 -0
- package/src/core/engine/memory-runtime-service.ts +162 -0
- package/src/core/engine/memory-service-composition.ts +231 -0
- package/src/core/engine/retrieval-analytics-service.ts +181 -0
- package/src/core/engine/retrieval-disclosure-service.ts +420 -0
- package/src/core/engine/retrieval-orchestrator.ts +377 -0
- package/src/core/engine/retrieval-services.ts +176 -0
- package/src/core/engine/shared-memory-services.ts +4 -0
- package/src/core/entity-repo.ts +1 -3
- package/src/core/event-store.ts +3 -3
- package/src/core/evidence-aligner.ts +2 -2
- package/src/core/external-market-context.ts +582 -0
- package/src/core/graduation.ts +2 -3
- package/src/core/index.ts +21 -0
- package/src/core/matcher.ts +2 -4
- package/src/core/model/memory-fact.ts +30 -0
- package/src/core/model/memory-rule.ts +14 -0
- package/src/core/model/memory-summary.ts +21 -0
- package/src/core/model/raw-event.ts +28 -0
- package/src/core/model/retrieval-result.ts +35 -0
- package/src/core/privacy/filter.ts +21 -10
- package/src/core/product-validation-matrix.ts +314 -0
- package/src/core/progressive-retriever.ts +1 -2
- package/src/core/registry/project-path.ts +54 -0
- package/src/core/registry/session-registry.ts +69 -0
- package/src/core/replay-evaluator.ts +625 -0
- package/src/core/retrieval-benchmark.ts +117 -0
- package/src/core/retrieval-quality.ts +109 -0
- package/src/core/retriever.ts +53 -15
- package/src/core/session-qrels.ts +360 -0
- package/src/core/shared-event-store.ts +1 -1
- package/src/core/sqlite-event-store.ts +35 -11
- package/src/core/task/blocker-resolver.ts +2 -2
- package/src/core/task/task-resolver.ts +0 -1
- package/src/core/vector-outbox.ts +1 -10
- package/src/core/vector-worker.ts +1 -1
- package/src/extensions/endless-memory/endless-memory-services.ts +350 -0
- package/src/extensions/endless-memory/index.ts +1 -0
- package/src/extensions/index.ts +5 -0
- package/src/extensions/mcp/handlers.ts +960 -0
- package/src/extensions/mcp/index.ts +48 -0
- package/src/extensions/mcp/tools.ts +252 -0
- package/src/extensions/shared-memory/index.ts +1 -0
- package/src/extensions/shared-memory/shared-memory-services.ts +211 -0
- package/src/extensions/vector/embedder.ts +197 -0
- package/src/extensions/vector/index.ts +1 -0
- package/src/hooks/post-tool-use.ts +3 -236
- package/src/hooks/semantic-daemon-client.ts +1 -208
- package/src/hooks/semantic-daemon.ts +6 -271
- package/src/hooks/session-end.ts +4 -79
- package/src/hooks/session-start.ts +4 -73
- package/src/hooks/stop.ts +3 -173
- package/src/hooks/user-prompt-submit.ts +3 -338
- package/src/index.ts +13 -0
- package/src/mcp/handlers.ts +2 -212
- package/src/mcp/index.ts +3 -46
- package/src/mcp/tools.ts +2 -78
- package/src/server/api/chat.ts +2 -244
- package/src/server/api/citations.ts +2 -105
- package/src/server/api/events.ts +2 -137
- package/src/server/api/health.ts +2 -53
- package/src/server/api/index.ts +2 -26
- package/src/server/api/projects.ts +2 -74
- package/src/server/api/search.ts +2 -102
- package/src/server/api/sessions.ts +2 -115
- package/src/server/api/stats.ts +2 -724
- package/src/server/api/turns.ts +2 -143
- package/src/server/api/utils.ts +2 -46
- package/src/server/index.ts +2 -100
- package/src/services/bootstrap-organizer.ts +46 -26
- package/src/services/codex-session-history-importer.ts +521 -29
- package/src/services/hermes-session-history-importer.ts +733 -0
- package/src/services/memory-service-config.ts +36 -0
- package/src/services/memory-service-registry.ts +150 -0
- package/src/services/memory-service.ts +211 -1325
- package/src/services/session-history-importer.ts +58 -14
- package/tests/README.md +23 -0
- package/tests/adapters/claude/claude-semantic-daemon-adapter.test.ts +54 -0
- package/tests/adapters/claude/claude-transcript-reconstructor.test.ts +98 -0
- package/tests/adapters/claude-hook-prompt-injection-policy.test.ts +99 -0
- package/tests/apps/app-layer-boundary.test.ts +48 -0
- package/tests/apps/claude-settings-hooks.test.ts +107 -0
- package/tests/apps/cli-disclosure-output.test.ts +212 -0
- package/tests/apps/codex-import-runner.test.ts +99 -0
- package/tests/apps/codex-validation-output.test.ts +100 -0
- package/tests/apps/hermes-import-runner.test.ts +99 -0
- package/tests/apps/mcp-install-command.test.ts +59 -0
- package/tests/apps/package-build-entrypoints.test.ts +30 -0
- package/tests/apps/search-api-disclosure.test.ts +162 -0
- package/tests/apps/stats-api-lightweight.test.ts +67 -0
- package/tests/apps/ui-disclosure-output.test.ts +140 -0
- package/tests/{bootstrap-organizer.test.ts → core/bootstrap-organizer.test.ts} +1 -1
- package/tests/{canonical-key.test.ts → core/canonical-key.test.ts} +1 -1
- package/tests/core/codex-session-history-importer-validation.test.ts +185 -0
- package/tests/{consolidation-worker.test.ts → core/consolidation-worker.test.ts} +2 -2
- package/tests/core/embedding-maintenance-service.test.ts +282 -0
- package/tests/{evidence-aligner.test.ts → core/evidence-aligner.test.ts} +1 -1
- package/tests/core/external-market-context.test.ts +209 -0
- package/tests/core/fact-deriver.test.ts +79 -0
- package/tests/core/hermes-session-history-importer-validation.test.ts +609 -0
- package/tests/{ingest-interceptor.test.ts → core/ingest-interceptor.test.ts} +1 -1
- package/tests/{markdown-mirror.test.ts → core/markdown-mirror.test.ts} +2 -2
- package/tests/{matcher.test.ts → core/matcher.test.ts} +1 -1
- package/tests/{md-mirror.test.ts → core/md-mirror.test.ts} +2 -2
- package/tests/core/memory-engine-services.test.ts +240 -0
- package/tests/core/memory-ingest-service.test.ts +296 -0
- package/tests/core/memory-query-service.test.ts +129 -0
- package/tests/core/memory-runtime-service.test.ts +201 -0
- package/tests/core/memory-service-composition.test.ts +192 -0
- package/tests/core/memory-service-config.test.ts +41 -0
- package/tests/core/memory-service-facade.test.ts +30 -0
- package/tests/core/memory-service-registry.test.ts +206 -0
- package/tests/core/product-validation-matrix.test.ts +61 -0
- package/tests/core/project-registry.test.ts +78 -0
- package/tests/core/replay-evaluator.test.ts +181 -0
- package/tests/core/retrieval-analytics-service.test.ts +210 -0
- package/tests/core/retrieval-benchmark.test.ts +93 -0
- package/tests/core/retrieval-disclosure-service.test.ts +264 -0
- package/tests/core/retrieval-orchestrator.test.ts +403 -0
- package/tests/core/retrieval-quality.test.ts +31 -0
- package/tests/core/retrieval-services.test.ts +185 -0
- package/tests/{retriever-fallback-chain.test.ts → core/retriever-fallback-chain.test.ts} +3 -3
- package/tests/{retriever-strategy-scope.test.ts → core/retriever-strategy-scope.test.ts} +70 -3
- package/tests/{retriever.memu-adoption.test.ts → core/retriever.memu-adoption.test.ts} +3 -3
- package/tests/core/session-history-importer-filter.test.ts +78 -0
- package/tests/core/session-qrels.test.ts +250 -0
- package/tests/{sqlite-event-store-replication.test.ts → core/sqlite-event-store-replication.test.ts} +36 -1
- package/tests/core/summary-deriver.test.ts +66 -0
- package/tests/extensions/embedder-warning-suppression.test.ts +53 -0
- package/tests/extensions/endless-memory-extension-boundary.test.ts +17 -0
- package/tests/extensions/endless-memory-services.test.ts +325 -0
- package/tests/extensions/mcp-context-tools.test.ts +905 -0
- package/tests/extensions/mcp-extension-boundary.test.ts +21 -0
- package/tests/extensions/mcp-package-build.test.ts +22 -0
- package/tests/extensions/mcp-project-aware-tools.test.ts +102 -0
- package/tests/extensions/shared-memory-extension-boundary.test.ts +24 -0
- package/tests/extensions/shared-memory-services.test.ts +309 -0
- package/tests/extensions/vector-extension-boundary.test.ts +21 -0
- package/.claude/settings.local.json +0 -25
- package/.npm-cache/_cacache/content-v2/sha512/04/76/c098f88dfe584a2b80870bff7421b05d17d3d9ee1027f77772332a22d3f93a9a57101a2855107f6ad82077a818bba912b2bc317f2361b5ddb09ad284d9ce +0 -0
- package/.npm-cache/_cacache/content-v2/sha512/60/25/d2ecd39cfc7cab58351162814be77f935c6d6491c10c3745d456da7ddb2117ffd90c10e53fe3c0f1ed16b403307841543634504398b16ee4e6b6dd8e0c45 +0 -0
- package/.npm-cache/_cacache/index-v5/2b/9a/7f8f40206ed8a2e0a84efaa953ccaed1f5d001e14b931083f2e7a0738007 +0 -2
- package/.npm-cache/_cacache/index-v5/2e/d9/fcfa5c6a6abdc2a3644ab84a95936047298c465a2f47ee03db8f7fe1e946 +0 -3
- package/.npm-cache/_cacache/index-v5/a9/42/e519633356d12d3d2f19da66a8301016d496c8f5c3e0554124aaa62dc043 +0 -2
- package/.npm-cache/_logs/2026-02-26T12_04_52_729Z-debug-0.log +0 -256
- package/.npm-cache/_logs/2026-02-26T12_05_36_835Z-debug-0.log +0 -18
- package/.npm-cache/_logs/2026-02-26T12_05_45_982Z-debug-0.log +0 -32
- package/.npm-cache/_logs/2026-02-26T12_05_48_515Z-debug-0.log +0 -260
- package/.npm-cache/_logs/2026-02-26T12_05_53_567Z-debug-0.log +0 -69
- package/.npm-cache/_update-notifier-last-checked +0 -0
- package/bootstrap-kb/decisions/decisions.md +0 -244
- package/bootstrap-kb/glossary/glossary.md +0 -46
- package/bootstrap-kb/modules/.claude-plugin.md +0 -22
- package/bootstrap-kb/modules/agents.md.md +0 -15
- package/bootstrap-kb/modules/claude.md.md +0 -15
- package/bootstrap-kb/modules/context.md.md +0 -15
- package/bootstrap-kb/modules/docs.md +0 -18
- package/bootstrap-kb/modules/handoff.md.md +0 -15
- package/bootstrap-kb/modules/package-lock.json.md +0 -15
- package/bootstrap-kb/modules/package.json.md +0 -15
- package/bootstrap-kb/modules/plan.md.md +0 -15
- package/bootstrap-kb/modules/readme.md.md +0 -15
- package/bootstrap-kb/modules/scripts.md +0 -26
- package/bootstrap-kb/modules/spec.md.md +0 -15
- package/bootstrap-kb/modules/specs.md +0 -20
- package/bootstrap-kb/modules/src.md +0 -51
- package/bootstrap-kb/modules/tests.md +0 -42
- package/bootstrap-kb/modules/tsconfig.json.md +0 -15
- package/bootstrap-kb/modules/vitest.config.ts.md +0 -15
- package/bootstrap-kb/overview/overview.md +0 -40
- package/bootstrap-kb/sources/manifest.json +0 -950
- package/bootstrap-kb/sources/manifest.md +0 -227
- package/bootstrap-kb/timeline/timeline.md +0 -57
- package/claude-memory-layer-1.0.14.tgz +0 -0
- package/d.sh +0 -3
- package/deploy.sh +0 -3
- package/dist/ui/app.js +0 -2101
- package/memory/.claude-plugin/commands/2026-02-25.md +0 -263
- package/memory/_index.md +0 -418
- package/memory/agent_response/uncategorized/2026-02-26.md +0 -176
- package/memory/agent_response/uncategorized/2026-03-03.md +0 -14
- package/memory/agent_response/uncategorized/2026-03-04.md +0 -1421
- package/memory/agent_response/uncategorized/2026-03-05.md +0 -48
- package/memory/default/uncategorized/2026-02-25.md +0 -4839
- package/memory/session_summary/uncategorized/2026-02-26.md +0 -13
- package/memory/session_summary/uncategorized/2026-03-03.md +0 -5
- package/memory/session_summary/uncategorized/2026-03-04.md +0 -50
- package/memory/specs/20260207-dashboard-upgrade/2026-02-25.md +0 -142
- package/memory/specs/citations-system/2026-02-25.md +0 -1121
- package/memory/specs/endless-mode/2026-02-25.md +0 -1392
- package/memory/specs/entity-edge-model/2026-02-25.md +0 -1263
- package/memory/specs/evidence-aligner-v2/2026-02-25.md +0 -1028
- package/memory/specs/mcp-desktop-integration/2026-02-25.md +0 -1334
- package/memory/specs/post-tool-use-hook/2026-02-25.md +0 -1164
- package/memory/specs/private-tags/2026-02-25.md +0 -1057
- package/memory/specs/progressive-disclosure/2026-02-25.md +0 -1436
- package/memory/specs/task-entity-system/2026-02-25.md +0 -924
- package/memory/specs/vector-outbox-v2/2026-02-25.md +0 -1510
- package/memory/specs/web-viewer-ui/2026-02-25.md +0 -1709
- package/memory/tool_observation/uncategorized/2026-02-26.md +0 -209
- package/memory/tool_observation/uncategorized/2026-03-03.md +0 -21
- package/memory/tool_observation/uncategorized/2026-03-04.md +0 -1033
- package/memory/tool_observation/uncategorized/2026-03-05.md +0 -29
- package/memory/user_prompt/uncategorized/2026-02-26.md +0 -25
- package/memory/user_prompt/uncategorized/2026-03-04.md +0 -634
- package/specs/optional-duckdb/context.md +0 -77
- package/specs/optional-duckdb/plan.md +0 -142
- package/specs/optional-duckdb/spec.md +0 -35
- package/src/ui/app.js +0 -2101
|
@@ -0,0 +1,465 @@
|
|
|
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`는 앞으로도 강한 기능을 유지할 수 있다. 다만 그 기능들이 **코어를 짓누르지 않도록 올바른 층에 배치되어야 한다.**
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** Claude Code hook adapter entrypoints and supporting runtime utilities. */
|
|
2
|
+
|
|
3
|
+
export { main as postToolUseMain } from './post-tool-use.js';
|
|
4
|
+
export { main as sessionEndMain } from './session-end.js';
|
|
5
|
+
export { main as semanticDaemonMain } from './semantic-daemon.js';
|
|
6
|
+
export { main as sessionStartMain } from './session-start.js';
|
|
7
|
+
export { main as stopMain } from './stop.js';
|
|
8
|
+
export { main as userPromptSubmitMain } from './user-prompt-submit.js';
|
|
9
|
+
export {
|
|
10
|
+
handleSemanticDaemonRequest,
|
|
11
|
+
isValidSemanticDaemonRequest,
|
|
12
|
+
isVectorSessionFilterError,
|
|
13
|
+
makeSemanticDaemonErrorResponse,
|
|
14
|
+
parseSemanticDaemonRequest
|
|
15
|
+
} from './semantic-daemon.js';
|
|
16
|
+
export type {
|
|
17
|
+
SemanticDaemonRequest,
|
|
18
|
+
SemanticDaemonResponse,
|
|
19
|
+
SemanticMemory
|
|
20
|
+
} from './semantic-daemon.js';
|
|
21
|
+
export * from './semantic-daemon-client.js';
|