claude-memory-layer 1.0.8 → 1.0.9

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 (43) hide show
  1. package/.claude/settings.local.json +7 -1
  2. package/.claude-memory/test.sqlite +0 -0
  3. package/.history/package_20260202114053.json +49 -0
  4. package/HANDOFF.md +92 -0
  5. package/dist/cli/index.js +1150 -71
  6. package/dist/cli/index.js.map +4 -4
  7. package/dist/core/index.js +1033 -47
  8. package/dist/core/index.js.map +4 -4
  9. package/dist/hooks/post-tool-use.js +5589 -0
  10. package/dist/hooks/post-tool-use.js.map +7 -0
  11. package/dist/hooks/session-end.js +1117 -64
  12. package/dist/hooks/session-end.js.map +4 -4
  13. package/dist/hooks/session-start.js +1112 -63
  14. package/dist/hooks/session-start.js.map +4 -4
  15. package/dist/hooks/stop.js +1117 -64
  16. package/dist/hooks/stop.js.map +4 -4
  17. package/dist/hooks/user-prompt-submit.js +1151 -67
  18. package/dist/hooks/user-prompt-submit.js.map +4 -4
  19. package/dist/server/api/index.js +1145 -70
  20. package/dist/server/api/index.js.map +4 -4
  21. package/dist/server/index.js +1145 -70
  22. package/dist/server/index.js.map +4 -4
  23. package/dist/services/memory-service.js +1122 -65
  24. package/dist/services/memory-service.js.map +4 -4
  25. package/dist/ui/app.js +304 -0
  26. package/dist/ui/index.html +195 -1188
  27. package/dist/ui/style.css +595 -0
  28. package/package.json +3 -1
  29. package/scripts/build.ts +2 -0
  30. package/src/core/event-store.ts +18 -0
  31. package/src/core/index.ts +3 -0
  32. package/src/core/retriever.ts +4 -1
  33. package/src/core/sqlite-event-store.ts +849 -0
  34. package/src/core/sqlite-wrapper.ts +108 -0
  35. package/src/core/sync-worker.ts +228 -0
  36. package/src/core/vector-worker.ts +44 -14
  37. package/src/hooks/user-prompt-submit.ts +53 -4
  38. package/src/server/api/stats.ts +37 -7
  39. package/src/services/memory-service.ts +168 -39
  40. package/src/ui/app.js +304 -0
  41. package/src/ui/index.html +195 -1188
  42. package/src/ui/style.css +595 -0
  43. package/test_access.js +49 -0
@@ -15,7 +15,13 @@
15
15
  "WebSearch",
16
16
  "Bash(timeout 5 sh -c 'node dist/cli/index.js dashboard --no-open &\nsleep 2\ncurl -s http://127.0.0.1:37777/api/stats/most-accessed\ncurl -s http://127.0.0.1:37777/health')",
17
17
  "Bash(curl:*)",
18
- "Bash(pkill:*)"
18
+ "Bash(pkill:*)",
19
+ "Bash(npm install:*)",
20
+ "Bash(sqlite3:*)",
21
+ "Read(//Users/namsangboy/**)",
22
+ "Bash(CLAUDE_MEMORY_DB=.claude-memory/test.sqlite timeout 10 sh -c 'node dist/cli/index.js dashboard --no-open &\nsleep 3\necho \"\"=== Most Accessed API ===\"\"\ncurl -s http://127.0.0.1:37777/api/stats/most-accessed | jq .\necho \"\"=== Level Stats API ===\"\"\ncurl -s \"\"http://127.0.0.1:37777/api/stats/levels/L0?sort=accessed\"\" | jq \"\".events | .[0:3]\"\"\npkill -f \"\"node dist/cli/index.js dashboard\"\"')",
23
+ "Bash(python3:*)",
24
+ "Bash(CLAUDE_MEMORY_DEBUG=true node:*)"
19
25
  ]
20
26
  }
21
27
  }
Binary file
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "claude-memory-layer",
3
+ "version": "1.0.9",
4
+ "description": "Claude Code plugin that learns from conversations to provide personalized assistance",
5
+ "main": "dist/index.js",
6
+ "bin": {
7
+ "claude-memory-layer": "dist/cli/index.js"
8
+ },
9
+ "type": "module",
10
+ "scripts": {
11
+ "build": "tsx scripts/build.ts",
12
+ "dev": "tsx src/cli/index.ts",
13
+ "test": "vitest",
14
+ "test:coverage": "vitest --coverage",
15
+ "lint": "eslint src/**/*.ts",
16
+ "typecheck": "tsc --noEmit"
17
+ },
18
+ "keywords": [
19
+ "claude-code",
20
+ "plugin",
21
+ "memory",
22
+ "learning",
23
+ "personalization",
24
+ "context"
25
+ ],
26
+ "author": "Buzzni",
27
+ "license": "MIT",
28
+ "engines": {
29
+ "node": ">=18.0.0"
30
+ },
31
+ "dependencies": {
32
+ "@hono/node-server": "^1.13.0",
33
+ "@lancedb/lancedb": "^0.5.0",
34
+ "@xenova/transformers": "^2.17.0",
35
+ "better-sqlite3": "^12.6.2",
36
+ "commander": "^12.0.0",
37
+ "duckdb": "^0.10.0",
38
+ "hono": "^4.0.0",
39
+ "zod": "^3.22.0"
40
+ },
41
+ "devDependencies": {
42
+ "@types/better-sqlite3": "^7.6.13",
43
+ "@types/node": "^20.11.0",
44
+ "esbuild": "^0.20.0",
45
+ "tsx": "^4.7.0",
46
+ "typescript": "^5.4.0",
47
+ "vitest": "^1.4.0"
48
+ }
49
+ }
package/HANDOFF.md ADDED
@@ -0,0 +1,92 @@
1
+ # Claude Memory Layer - 작업 핸드오프 문서
2
+
3
+ ## 현재 상태
4
+ **날짜**: 2026-02-01
5
+ **상태**: SQLite WAL 마이그레이션 완료 ✅
6
+
7
+ ## 문제 해결 완료
8
+
9
+ ### 기존 문제
10
+ - DuckDB 다중 프로세스 동시 접근 충돌
11
+ - 웹 대시보드 (localhost:37777)에서 500 에러
12
+ - 훅과 서버 동시 실행 불가
13
+
14
+ ### 해결책: 2-tier 스토리지 아키텍처
15
+ ```
16
+ Hooks (쓰기) ──▶ SQLite (WAL) ◀── Server (읽기)
17
+
18
+ └── 동시 접근 가능 ✅
19
+ ```
20
+
21
+ ## 구현된 변경사항
22
+
23
+ ### 새 파일
24
+ 1. **`src/core/sqlite-wrapper.ts`** - SQLite WAL 모드 래퍼
25
+ 2. **`src/core/sqlite-event-store.ts`** - SQLite 기반 EventStore
26
+ 3. **`src/core/sync-worker.ts`** - SQLite→DuckDB 동기화 워커 (미래 분석용)
27
+
28
+ ### 수정된 파일
29
+ 1. **`src/services/memory-service.ts`** - 이중 스토어 아키텍처 통합
30
+ - `sqliteStore`: Primary store (항상 사용)
31
+ - `analyticsStore`: DuckDB (옵션, 분석용)
32
+ - `analyticsEnabled` 옵션 추가
33
+
34
+ 2. **`src/core/index.ts`** - 새 모듈 export
35
+
36
+ 3. **`scripts/build.ts`** - better-sqlite3 external 추가
37
+
38
+ 4. **`package.json`** - better-sqlite3 의존성 추가
39
+
40
+ ## 테스트 결과
41
+ ```bash
42
+ # 서버 실행 중 훅 테스트
43
+ $ node dist/server/index.js &
44
+ $ echo '{"session_id":"test","prompt":"test","cwd":"/tmp"}' | node dist/hooks/user-prompt-submit.js
45
+ {"context":""} # 성공!
46
+
47
+ # 동시 실행 테스트 (5개 훅 병렬)
48
+ All hooks completed ✅
49
+ eventCount: 7
50
+ ```
51
+
52
+ ## 아키텍처 결정
53
+
54
+ ### Primary Store: SQLite (WAL 모드)
55
+ - 훅에서 직접 쓰기
56
+ - 서버에서 직접 읽기
57
+ - WAL 모드: 다중 리더 + 단일 라이터 지원
58
+ - 락 충돌 없음
59
+
60
+ ### Analytics Store: DuckDB (옵션, 미래용)
61
+ - 복잡한 분석 쿼리용
62
+ - 배치 동기화 (SyncWorker)
63
+ - 현재는 비활성화
64
+
65
+ ## 빌드 및 실행
66
+
67
+ ```bash
68
+ # 빌드
69
+ npm run build
70
+
71
+ # 서버 시작
72
+ node dist/server/index.js
73
+
74
+ # 훅 테스트 (서버 실행 중에도 가능!)
75
+ echo '{"session_id":"test","prompt":"test","cwd":"/tmp"}' | node dist/hooks/user-prompt-submit.js
76
+
77
+ # 대시보드
78
+ open http://localhost:37777
79
+ ```
80
+
81
+ ## 향후 작업 (선택사항)
82
+
83
+ 1. **DuckDB 분석 기능 활성화**
84
+ - SyncWorker로 SQLite→DuckDB 동기화
85
+ - 복잡한 통계/분석 쿼리에 DuckDB 사용
86
+
87
+ 2. **Shared Store SQLite 마이그레이션**
88
+ - 현재: 훅에서 비활성화
89
+ - 향후: SQLite 기반으로 전환
90
+
91
+ 3. **마이그레이션 도구**
92
+ - 기존 DuckDB 데이터를 SQLite로 마이그레이션