14 KiB
14 KiB
Claude-Mem Source Code Analysis Report
Executive Summary
Analyzed all 58 files in the /Users/alexnewman/Scripts/claude-mem/src directory. This report categorizes each file by purpose, usage status, and documents the cleanup of dead code files.
Cleanup Status: ✅ 7 dead code files successfully removed (51 files remaining)
Directory: src/bin (2 files)
src/bin/cleanup-duplicates.ts
- Purpose: Utility script to remove duplicate observations and summaries from the database
- Used?: No - Standalone CLI utility, not imported anywhere
- Notes: Maintenance tool for database cleanup. Keeps earliest entry (MIN(id)) for each duplicate group. Not part of the runtime system.
src/bin/import-xml-observations.ts
- Purpose: Import tool to restore XML observations back into SQLite database
- Used?: No - Standalone CLI utility, not imported anywhere
- Notes: Data migration tool. Parses XML timestamps and matches them to transcript files. Not part of the runtime system.
Directory: src/hooks (7 files, 1 deleted)
src/hooks/cleanup-hook.ts
- Purpose: SessionEnd hook that marks sessions as completed and notifies worker
- Used?: Yes - Built to
plugin/scripts/cleanup-hook.js, registered inplugin/hooks/hooks.json - Notes: Core hook, actively used
src/hooks/context-hook.ts
- Purpose: SessionStart hook that injects recent observations into Claude Code sessions
- Used?: Yes - Built to
plugin/scripts/context-hook.js, registered in hooks.json, also called by user-message-hook - Notes: Core hook displaying context timeline with progressive disclosure (index view)
src/hooks/hook-response.ts
- Purpose: Utility module for creating standardized hook responses
- Used?: Yes - Imported by new-hook.ts, save-hook.ts, summary-hook.ts
- Notes: Shared helper for hook JSON output
src/hooks/index.ts 🗑️ DELETED
- Purpose: Export barrel for hooks module
- Used?: No - Not imported anywhere
- Notes: DELETED. Exports were outdated (referenced
context.js,save.js, etc. which don't exist). The actual hooks are built as standalone executables, not imported as modules.
src/hooks/new-hook.ts
- Purpose: UserPromptSubmit hook that creates session records and saves raw user prompts
- Used?: Yes - Built to
plugin/scripts/new-hook.js, registered in hooks.json - Notes: Core hook, actively used
src/hooks/save-hook.ts
- Purpose: PostToolUse hook that captures tool executions and sends to worker
- Used?: Yes - Built to
plugin/scripts/save-hook.js, registered in hooks.json - Notes: Core hook, actively used
src/hooks/summary-hook.ts
- Purpose: Stop hook that requests session summaries from worker
- Used?: Yes - Built to
plugin/scripts/summary-hook.js, registered in hooks.json - Notes: Core hook, actively used
src/hooks/user-message-hook.ts
- Purpose: SessionStart hook that displays context to users via stderr
- Used?: Yes - Built to
plugin/scripts/user-message-hook.js, registered in hooks.json - Notes: Runs context-hook via execSync to show colored output. Active hook.
Directory: src/sdk (3 files, 1 deleted)
src/sdk/index.ts 🗑️ DELETED
- Purpose: Export barrel for SDK module
- Used?: No - Not imported anywhere
- Notes: DELETED. Exported SDK functions but nothing imported from this module directly. Files import directly from prompts.ts and parser.ts instead.
src/sdk/parser.test.ts
- Purpose: Regression tests for XML parsing (v4.2.5 and v4.2.6 bugfixes)
- Used?: No - Test file, not part of runtime
- Notes: Test suite with 18 tests validating observation/summary parsing edge cases
src/sdk/parser.ts
- Purpose: XML parser for observation and summary blocks from SDK responses
- Used?: Yes - Imported by worker-service.ts
- Notes: Core parsing logic, actively used
src/sdk/prompts.ts
- Purpose: Prompt builders for Claude Agent SDK
- Used?: Yes - Imported by worker-service.ts
- Notes: Generates init, observation, and summary prompts for SDK agent
Directory: src/servers (1 file)
src/servers/search-server.ts
- Purpose: MCP search server exposing 9 search tools with hybrid Chroma + FTS5 search
- Used?: Yes - Built to
plugin/search-server.mjs, configured inplugin/.mcp.json - Notes: 1,782 lines. Core search server providing progressive disclosure search tools.
Directory: src/services/sqlite (6 files)
src/services/sqlite/Database.ts
- Purpose: Base database class with better-sqlite3
- Used?: Yes - Imported by SessionStore.ts, SessionSearch.ts, index.ts
- Notes: Foundation class for SQLite operations
src/services/sqlite/index.ts
- Purpose: Export barrel for sqlite module
- Used?: Yes - Imported by storage.ts
- Notes: Exports all store types and utilities
src/services/sqlite/migrations.ts
- Purpose: Database migration function for schema changes
- Used?: Yes - Imported by index.ts
- Notes: Handles SQLite schema migrations
src/services/sqlite/SessionSearch.ts
- Purpose: FTS5 full-text search implementation
- Used?: Yes - Imported by search-server.ts
- Notes: Provides searchObservations, searchSessions, searchUserPrompts, findByConcept, findByFile, findByType
src/services/sqlite/SessionStore.ts
- Purpose: CRUD operations for sessions, observations, summaries, user prompts
- Used?: Yes - Imported by all hooks, worker-service.ts, search-server.ts, bin utilities
- Notes: Core database store, heavily used throughout the system
src/services/sqlite/types.ts
- Purpose: TypeScript type definitions for database records
- Used?: Yes - Imported by search-server.ts
- Notes: Defines ObservationSearchResult, SessionSummarySearchResult, UserPromptSearchResult
Directory: src/services/sync (1 file)
src/services/sync/ChromaSync.ts
- Purpose: Vector database synchronization service for semantic search
- Used?: Yes - Imported by worker-service.ts
- Notes: 737 lines. Manages Chroma vector embeddings for observations, summaries, and prompts. Critical for hybrid search.
Directory: src/services (1 file)
src/services/worker-service.ts
- Purpose: Express HTTP server managed by PM2, handles SDK agent sessions
- Used?: Yes - Built to
plugin/worker-service.cjs, started by PM2 - Notes: 1,173 lines. Core worker service with 14 HTTP/SSE endpoints. Serves viewer UI, manages SDK sessions, broadcasts SSE updates.
Directory: src/shared (2 files, 3 deleted)
src/shared/config.ts 🗑️ DELETED
- Purpose: Package configuration (name, version, description)
- Used?: No - Not imported anywhere
- Notes: DELETED. Read from package.json but no code used these exports. The actual version reading happens inline in worker-service.ts.
src/shared/paths.ts
- Purpose: Path utilities and directory management
- Used?: Yes - Imported by search-server.ts
- Notes: Provides VECTOR_DB_DIR and other path constants. Actively used.
src/shared/storage.ts 🗑️ DELETED
- Purpose: Unified storage provider interface (SQLite abstraction layer)
- Used?: No - Not imported anywhere
- Notes: DELETED. Defined IStorageProvider interface and SQLiteStorageProvider but nothing used this abstraction. Direct SessionStore usage is preferred.
src/shared/types.ts 🗑️ DELETED
- Purpose: Core type definitions (Settings interface)
- Used?: No - Not imported anywhere
- Notes: DELETED. Defined Settings interface but no code imported it. Settings are read/written as raw JSON objects.
src/shared/worker-utils.ts
- Purpose: Worker health checks and PM2 management
- Used?: Yes - Imported by context-hook.ts, new-hook.ts, save-hook.ts, summary-hook.ts, cleanup-hook.ts, user-message-hook.ts
- Notes: Core utility, actively used by all hooks
Directory: src/utils (1 file, 2 deleted)
src/utils/logger.ts
- Purpose: Structured logging with correlation IDs and data flow tracking
- Used?: Yes - Imported by parser.ts, save-hook.ts, summary-hook.ts, worker-service.ts
- Notes: Core logger, actively used
src/utils/platform.ts 🗑️ DELETED
- Purpose: Platform-specific utilities for Windows/Unix compatibility
- Used?: No - Not imported anywhere
- Notes: DELETED. Provided installUv(), getShellConfigPaths(), getAliasDefinition() but nothing used these. Likely leftover from earlier installer/setup code.
src/utils/usage-logger.ts 🗑️ DELETED
- Purpose: Usage data logger for API cost tracking (JSONL files)
- Used?: No - Not imported anywhere
- Notes: DELETED. Defined UsageLogger class but it was never instantiated. Usage tracking may be handled differently now.
Directory: src/ui (24 files + assets)
src/ui/claude-mem-logo-for-dark-mode.webp
- Purpose: Logo asset for dark mode
- Used?: Yes - Referenced in Header.tsx, bundled into viewer.html
- Notes: Web UI asset
src/ui/claude-mem-logomark.webp
- Purpose: Logomark asset
- Used?: Yes - Referenced in Header.tsx, bundled into viewer.html
- Notes: Web UI asset
src/ui/viewer-template.html
- Purpose: HTML template for viewer UI
- Used?: Yes - Build process uses this to generate plugin/ui/viewer.html
- Notes: Build artifact template
src/ui/viewer/App.tsx
- Purpose: Root React component for viewer UI
- Used?: Yes - Entry point for viewer, imported by index.tsx
- Notes: Main app component
src/ui/viewer/index.tsx
- Purpose: React app entry point
- Used?: Yes - Built by esbuild into viewer-bundle.js
- Notes: Mounts React app
src/ui/viewer/types.ts
- Purpose: TypeScript types for viewer UI
- Used?: Yes - Imported by multiple viewer components
- Notes: Type definitions for Observation, Summary, UserPrompt, etc.
src/ui/viewer/assets/fonts/ (2 files)
monaspace-radon-var.woffandmonaspace-radon-var.woff2- Purpose: Monaspace Radon font files for viewer UI
- Used?: Yes - Embedded in viewer.html via esbuild
- Notes: Font assets
src/ui/viewer/components/ (8 files)
All actively used by App.tsx:
ErrorBoundary.tsx- Error boundary wrapperFeed.tsx- Infinite scroll feed componentHeader.tsx- Top navigation with project selector, stats, settingsObservationCard.tsx- Observation display cardPromptCard.tsx- User prompt display cardSidebar.tsx- Project filtering sidebarSummaryCard.tsx- Session summary display cardThemeToggle.tsx- Light/dark mode toggle
src/ui/viewer/constants/ (4 files)
All actively used by viewer components:
api.ts- API endpoint URLssettings.ts- Default settings constantstiming.ts- Timing constants (reconnect delays, polling intervals)ui.ts- UI constants (page sizes, etc.)
src/ui/viewer/hooks/ (5 files)
All actively used by viewer components:
usePagination.ts- Infinite scroll pagination hookuseSSE.ts- Server-sent events hook for real-time updatesuseSettings.ts- Settings management hookuseStats.ts- Worker stats fetching hookuseTheme.ts- Theme (light/dark) management hook
src/ui/viewer/utils/ (2 files)
All actively used by viewer components:
data.ts- Data merging and deduplication utilitiesformatters.ts- Date/time formatting utilities
Dead Code Summary
🗑️ Deleted Files (7 files - all removed)
- src/hooks/index.ts ✅ DELETED - Outdated export barrel, referenced non-existent files
- src/shared/config.ts ✅ DELETED - Package config not used anywhere, version read inline instead
- src/shared/storage.ts ✅ DELETED - Abstraction layer not used, direct SessionStore usage preferred
- src/shared/types.ts ✅ DELETED - Settings interface not imported anywhere
- src/sdk/index.ts ✅ DELETED - Export barrel, but imports happened directly from parser/prompts instead
- src/utils/platform.ts ✅ DELETED - Platform utilities not used, legacy installer code
- src/utils/usage-logger.ts ✅ DELETED - UsageLogger class never instantiated
Utility/Maintenance Scripts (not dead, just not runtime code) (2 files)
- src/bin/cleanup-duplicates.ts - Maintenance CLI tool
- src/bin/import-xml-observations.ts - Data migration CLI tool
Test Files (not dead, just not runtime code) (1 file)
- src/sdk/parser.test.ts - Regression test suite
File Count Summary
- Total files (before cleanup): 58
- Total files (after cleanup): 51 ✅
- Deleted dead code: 7 files 🗑️
- Actively used at runtime: 43 files
- Utility/maintenance scripts: 2 files
- Test files: 1 file
- Build templates: 1 file (viewer-template.html)
- Assets: 4 files (2 logos, 2 fonts)
Cleanup Actions Completed ✅
-
✅ Removed all dead code (7 files deleted):
- ✅ Deleted
src/hooks/index.ts - ✅ Deleted
src/shared/config.ts - ✅ Deleted
src/shared/storage.ts - ✅ Deleted
src/shared/types.ts - ✅ Deleted
src/sdk/index.ts - ✅ Deleted
src/utils/platform.ts - ✅ Deleted
src/utils/usage-logger.ts
- ✅ Deleted
-
✅ Kept utility scripts for maintenance purposes:
- ✅ Kept
src/bin/cleanup-duplicates.ts - ✅ Kept
src/bin/import-xml-observations.ts
- ✅ Kept
-
✅ Kept test files for regression testing:
- ✅ Kept
src/sdk/parser.test.ts
- ✅ Kept
Next Steps
-
Build and test to ensure no broken imports:
npm run build -
Run TypeScript diagnostics to catch any missing references:
npx tsc --noEmit -
Commit the cleanup:
git add -A git commit -m "Remove dead code files"