feat: Live Context System with Distributed CLAUDE.md Generation (#556)

* docs: add folder index generator plan

RFC for auto-generating folder-level CLAUDE.md files with observation
timelines. Includes IDE symlink support and root CLAUDE.md integration.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat: implement folder index generator (Phase 1)

Add automatic CLAUDE.md generation for folders containing observed files.
This enables IDE context providers to access relevant memory observations.

Core modules:
- FolderDiscovery: Extract folders from observation file paths
- FolderTimelineCompiler: Compile chronological timeline per folder
- ClaudeMdGenerator: Write CLAUDE.md with tag-based content replacement
- FolderIndexOrchestrator: Coordinate regeneration on observation save

Integration:
- Event-driven regeneration after observation save in ResponseProcessor
- HTTP endpoints for folder discovery, timeline, and manual generation
- Settings for enabling/configuring folder index behavior

The <claude-mem-context> tag wrapping ensures:
- Manual CLAUDE.md content is preserved
- Auto-generated content won't be recursively observed
- Clean separation between user and system content

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat: add updateFolderClaudeMd function to CursorHooksInstaller

Adds function to update CLAUDE.md files for folders touched by observations.
Uses existing /api/search/by-file endpoint, preserves content outside
<claude-mem-context> tags, and writes atomically via temp file + rename.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat: hook updateFolderClaudeMd into ResponseProcessor

Calls updateFolderClaudeMd after observation save to update folder-level
CLAUDE.md files. Uses fire-and-forget pattern with error logging.
Extracts file paths from saved observations and workspace path from registry.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat: add timeline formatting for folder CLAUDE.md files

Implements formatTimelineForClaudeMd function that transforms API response
into compact markdown table format. Converts emojis to text labels,
handles ditto marks for timestamps, and groups under "Recent" header.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* refactor: remove old folder-index implementation

Deletes redundant folder-index services that were replaced by the simpler
updateFolderClaudeMd approach in CursorHooksInstaller.ts.

Removed:
- src/services/folder-index/ directory (5 files)
- FolderIndexRoutes.ts
- folder-index settings from SettingsDefaultsManager
- folder-index route registration from worker-service

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat: add worktree-aware project filtering for unified timelines

Detect git worktrees and show both parent repo and worktree observations
in the session start timeline. When running in a worktree, the context
now includes observations from both projects, interleaved chronologically.

- Add detectWorktree() utility to identify worktree directories
- Add getProjectContext() to return parent + worktree projects
- Update context hook to pass multi-project queries
- Add queryObservationsMulti() and querySummariesMulti() for IN clauses
- Maintain backward compatibility with single-project queries

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* fix: restructure logging to prove session correctness and reduce noise

Add critical logging at each stage of the session lifecycle to prove the session ID chain (contentSessionId → sessionDbId → memorySessionId) stays aligned. New logs include CREATED, ENQUEUED, CLAIMED, MEMORY_ID_CAPTURED, STORING, and STORED. Move intermediate migration and backfill progress logs to DEBUG level to reduce noise, keeping only essential initialization and completion logs at INFO level.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* refactor: extract folder CLAUDE.md utils to shared location

Moves folder CLAUDE.md utilities from CursorHooksInstaller to a new
shared utils file. Removes Cursor registry dependency - file paths
from observations are already absolute, no workspace lookup needed.

New file: src/utils/claude-md-utils.ts
- replaceTaggedContent() - preserves user content outside tags
- writeClaudeMdToFolder() - atomic writes with tag preservation
- formatTimelineForClaudeMd() - API response to compact markdown
- updateFolderClaudeMdFiles() - orchestrates folder updates

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix: trigger folder CLAUDE.md updates when observations are saved

The folder CLAUDE.md update was previously only triggered in
syncAndBroadcastSummary, but summaries run with observationCount=0
(observations are saved separately). Moved the update logic to
syncAndBroadcastObservations where file paths are available.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* all the claudes

* test: add unit tests for claude-md-utils pure functions

Add 11 tests covering replaceTaggedContent and formatTimelineForClaudeMd:
- replaceTaggedContent: empty content, tag replacement, appending, partial tags
- formatTimelineForClaudeMd: empty input, parsing, ditto marks, session IDs

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* test: add integration tests for file operation functions

Add 9 tests for writeClaudeMdToFolder and updateFolderClaudeMdFiles:
- writeClaudeMdToFolder: folder creation, content preservation, nested dirs, atomic writes
- updateFolderClaudeMdFiles: empty skip, fetch/write, deduplication, error handling

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* test: add unit tests for timeline-formatting utilities

Add 14 tests for extractFirstFile and groupByDate functions:
- extractFirstFile: relative paths, fallback to files_read, null handling, invalid JSON
- groupByDate: empty arrays, date grouping, chronological sorting, item preservation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* chore: rebuild plugin scripts with merged features

* docs: add project-specific CLAUDE.md with architecture and development notes

* fix: exclude project root from auto-generated CLAUDE.md updates

Skip folders containing .git directory when auto-updating subfolder
CLAUDE.md files. This ensures:

1. Root CLAUDE.md remains user-managed and untouched by the system
2. SessionStart context injection stays pristine throughout the session
3. Subfolder CLAUDE.md files continue to receive live context updates
4. Cleaner separation between user-authored root docs and auto-generated folder indexes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix: prevent crash from resuming stale SDK sessions on worker restart

When the worker restarts, it was incorrectly passing the `resume` parameter
to INIT prompts (lastPromptNumber=1) when a memorySessionId existed from a
previous SDK session. This caused "Claude Code process exited with code 1"
crashes because the SDK tried to resume into a session that no longer exists.

Root cause: The resume condition only checked `hasRealMemorySessionId` but
did not verify that this was a CONTINUATION prompt (lastPromptNumber > 1).

Fix: Add `session.lastPromptNumber > 1` check to the resume condition:
- Before: `...(hasRealMemorySessionId && { resume: session.memorySessionId })`
- After: `...(hasRealMemorySessionId && session.lastPromptNumber > 1 && { resume: ... })`

Also added:
- Enhanced debug logging that warns when skipping resume for INIT prompts
- Unit tests in tests/sdk-agent-resume.test.ts (9 test cases)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix: properly handle Chroma MCP connection errors

Previously, ensureCollection() caught ALL errors from chroma_get_collection_info
and assumed they meant "collection doesn't exist", triggering unnecessary
collection creation attempts. Connection errors like "Not connected" or
"MCP error -32000: Connection closed" would cascade into failed creation attempts.

Similarly, queryChroma() would silently return empty results when the MCP call
failed, masking the underlying connection problem.

Changes:
- ensureCollection(): Detect connection errors and re-throw immediately instead
  of attempting collection creation
- queryChroma(): Wrap MCP call in try-catch and throw connection errors instead
  of returning empty results
- Both methods reset connection state (connected=false, client=null) on
  connection errors so subsequent operations can attempt to reconnect

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* pushed

* fix: scope regenerate-claude-md.ts to current working directory

Critical bug fix: The script was querying ALL observations from the database
across ALL projects ever recorded (1396+ folders), then attempting to write
CLAUDE.md files everywhere including other projects, non-existent paths, and
ignored directories.

Changes:
- Use git ls-files to discover folders (respects .gitignore automatically)
- Filter database query to current project only (by folder name)
- Use relative paths for database queries (matches storage format)
- Add --clean flag to remove auto-generated CLAUDE.md files
- Add fallback directory walker for non-git repos

Now correctly scopes to 26 folders with observations instead of 1396+.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* docs and adjustments

* fix: cleanup mode strips tags instead of deleting files blindly

The cleanup mode was incorrectly deleting entire files that contained
<claude-mem-context> tags. The correct behavior (per original design):

1. Strip the <claude-mem-context>...</claude-mem-context> section
2. If empty after stripping → delete the file
3. If has remaining content → save the stripped version

Now properly preserves user content in CLAUDE.md files while removing
only the auto-generated sections.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* deleted some files

* chore: regenerate folder CLAUDE.md files with fixed script

Regenerated 23 folder CLAUDE.md files using the corrected script that:
- Scopes to current working directory only
- Uses git ls-files to respect .gitignore
- Filters by project name

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Update CLAUDE.md files for January 5, 2026

- Regenerated and staged 23 CLAUDE.md files with a mix of new and modified content.
- Fixed cleanup mode to properly strip tags instead of deleting files blindly.
- Cleaned up empty CLAUDE.md files from various directories, including ~/.claude and ~/Scripts.
- Conducted dry-run cleanup that identified a significant reduction in auto-generated CLAUDE.md files.
- Removed the isAutoGeneratedClaudeMd function due to incorrect file deletion behavior.

* feat: use settings for observation limit in batch regeneration script

Replace hard-coded limit of 10 with configurable CLAUDE_MEM_CONTEXT_OBSERVATIONS
setting (default: 50). This allows users to control how many observations appear
in folder CLAUDE.md files.

Changes:
- Import SettingsDefaultsManager and load settings at script startup
- Use OBSERVATION_LIMIT constant derived from settings at both call sites
- Remove stale default parameter from findObservationsByFolder function

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat: use settings for observation limit in event-driven updates

Replace hard-coded limit of 10 in updateFolderClaudeMdFiles with
configurable CLAUDE_MEM_CONTEXT_OBSERVATIONS setting (default: 50).

Changes:
- Import SettingsDefaultsManager and os module
- Load settings at function start (once, not in loop)
- Use limit from settings in API call

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat: Implement configurable observation limits and enhance search functionality

- Added configurable observation limits to batch regeneration scripts.
- Enhanced SearchManager to handle folder queries and normalize parameters.
- Introduced methods to check for direct child files in observations and sessions.
- Updated SearchOptions interface to include isFolder flag for filtering.
- Improved code quality with comprehensive reviews and anti-pattern checks.
- Cleaned up auto-generated CLAUDE.md files across various directories.
- Documented recent changes and improvements in CLAUDE.md files.

* build asset

* Project Context from Claude-Mem auto-added (can be auto removed at any time)

* CLAUDE.md updates

* fix: resolve CLAUDE.md files to correct directory in worktree setups

When using git worktrees, CLAUDE.md files were being written relative to
the worker's process.cwd() instead of the actual project directory. This
fix threads the project's cwd from message processing through to the file
writing utilities, ensuring CLAUDE.md files are created in the correct
project directory regardless of where the worker was started.

Changes:
- Add projectRoot parameter to updateFolderClaudeMdFiles for path resolution
- Thread projectRoot through ResponseProcessor call chain
- Track lastCwd from messages in SDKAgent, GeminiAgent, OpenRouterAgent
- Add tests for relative/absolute path handling with projectRoot

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* more project context updates

* context updates

* fix: preserve actual dates in folder CLAUDE.md generation

Previously, formatTimelineForClaudeMd used today's date for all
observations because the API only returned time (e.g., "4:30 PM")
without date information. This caused all historical observations
to appear as if they happened today.

Changes:
- SearchManager.findByFile now groups results by date with headers
  (e.g., "### Jan 4, 2026") matching formatSearchResults behavior
- formatTimelineForClaudeMd now parses these date headers and uses
  the correct date when constructing epochs for date grouping

The timeline dates are critical for claude-mem context - LLMs need
accurate temporal context to understand when work happened.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* build: update worker assets with date parsing fix

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* claude-mem context: Fixed critical date parsing bug in PR #556

* fix: address PR #556 review items

- Use getWorkerHost() instead of hard-coded 127.0.0.1 in claude-md-utils
- Add error message and stack details to FOLDER_INDEX logging
- Add 5 new tests for worktree/projectRoot path resolution

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Refactor CLAUDE documentation across multiple components and tests

- Updated CLAUDE.md files in src/ui/viewer, src/ui/viewer/constants, src/ui/viewer/hooks, tests/server, tests/worker/agents, and plans to reflect recent changes and improvements.
- Removed outdated entries and consolidated recent activities for clarity.
- Enhanced documentation for hooks, settings, and pagination implementations.
- Streamlined test suite documentation for server and worker agents, indicating recent test audits and cleanup efforts.
- Adjusted plans to remove obsolete entries and focus on current implementation strategies.

* docs: comprehensive v9.0 documentation audit and updates

- Add usage/folder-context to docs.json navigation (was documented but hidden!)
- Update introduction.mdx with v9.0 release notes (Live Context, Worktree Support, Windows Fixes)
- Add CLAUDE_MEM_WORKER_HOST setting to configuration.mdx
- Add Folder Context Files section with link to detailed docs
- Document worktree support in folder-context.mdx
- Update terminology from "mem-search skill" to "MCP tools" throughout active docs
- Update Search Pipeline in architecture/overview.mdx
- Update usage/getting-started.mdx with MCP tools terminology
- Update usage/claude-desktop.mdx title and terminology
- Update hooks-architecture.mdx reference

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat: add recent activity log for worker CLI with detailed entries

* chore: update CLAUDE.md context files

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat: add brainstorming report for CLAUDE.md distribution architecture

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Alex Newman
2026-01-05 22:41:42 -05:00
committed by GitHub
parent 21a1e272d9
commit e1ab73decc
152 changed files with 10367 additions and 2103 deletions

34
docs/CLAUDE.md Normal file
View File

@@ -0,0 +1,34 @@
<claude-mem-context>
# Recent Activity
<!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
### Dec 29, 2025
**docs**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #34316 | 11:02 PM | 🔵 | Mintlify Documentation Structure Identified | ~242 |
### Jan 1, 2026
**SESSION_ID_ARCHITECTURE.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #35668 | 11:40 PM | ✅ | Main branch updated with major feature additions | ~377 |
| #35565 | 9:55 PM | ✅ | Session ID architecture documentation created | ~510 |
### Jan 3, 2026
**SESSION_ID_ARCHITECTURE.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #36689 | 11:56 PM | 🔵 | PR #538 Review Findings - Modular Architecture Refactor | ~590 |
| #36632 | 10:45 PM | 🔵 | SESSION_ID_ARCHITECTURE.md Documents Placeholder Pattern With ContentSessionId | ~584 |
| #36625 | 10:44 PM | 🔵 | Documentation and Code Reveal Placeholder Detection Pattern | ~583 |
**anti-pattern-cleanup-plan.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #36390 | 8:50 PM | 🔄 | Comprehensive Monolith Refactor with Modular Architecture | ~724 |
</claude-mem-context>

107
docs/context/CLAUDE.md Normal file
View File

@@ -0,0 +1,107 @@
<claude-mem-context>
# Recent Activity
<!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
### Dec 30, 2025
**agent-sdk-v2-docs.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #34477 | 2:25 PM | ✅ | V2 Upgrade Branch Modifies Four Files with Net Code Reduction | ~328 |
| #34466 | 2:24 PM | 🔵 | Agent SDK V2 Documentation Reveals Correct API Surface | ~399 |
| #34425 | 2:04 PM | 🔵 | Agent SDK V2 API Documentation and Migration Patterns | ~698 |
| #34422 | 2:03 PM | ✅ | Added Agent SDK V2 Documentation Files | ~240 |
| #34419 | 2:02 PM | ✅ | Committed Agent SDK V2 upgrade preparation | ~275 |
| #34394 | 1:52 PM | 🔵 | Agent SDK V2 Documentation Shows session.close() Method for Cleanup | ~417 |
**agent-sdk-v2-example.ts**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #34431 | 2:06 PM | 🔵 | V2 SDK Executable Example Code Patterns | ~710 |
| #34428 | 2:05 PM | 🔵 | Agent SDK v2 Example File Reading Requested | ~204 |
| #34411 | 1:55 PM | ⚖️ | Agent SDK V2 Migration Plan Created | ~519 |
| #34410 | " | ⚖️ | Agent SDK V2 Migration Strategy Analysis | ~499 |
| #34406 | 1:54 PM | 🔵 | Comprehensive V2 Migration Analysis Shows Architectural Incompatibility | ~556 |
| #34401 | " | 🔵 | Agent SDK V2 API Design and Patterns | ~435 |
### Dec 31, 2025
**agent-sdk-v2-preview.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #34635 | 3:04 PM | 🟣 | Documentation-First Workflow Design Document Created | ~769 |
| #34616 | 2:59 PM | ⚖️ | Documentation-First Workflow Agent Analyzing V2 SDK Examples and Patterns | ~515 |
| #34581 | 2:44 PM | 🔵 | V2 Session API Official Documentation Confirms Clear Separation Pattern | ~446 |
**agent-sdk-v2-examples.ts**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #34605 | 2:57 PM | 🔵 | V2 SDK Migration Failure Root Cause: Context Rot and Knowledge Transfer Gaps | ~550 |
| #34583 | 2:44 PM | 🔵 | Executable V2 Examples Demonstrate All Core Patterns With Crystal Clear Code | ~471 |
| #34580 | 2:43 PM | 🔵 | V2 Session API Documentation Shows Clear Send/Receive Pattern Despite Naming Confusion | ~364 |
### Jan 1, 2026
**try-catch-audit-report.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #35635 | 11:14 PM | ✅ | Removed Temporary Try-Catch Audit Report | ~224 |
| #35463 | 8:59 PM | 🟣 | Enforceable Anti-Pattern Detection System for Try-Catch Abuse | ~485 |
| #35462 | " | 🟣 | Error handling audit tooling and documentation added | ~271 |
| #35435 | 8:46 PM | ✅ | Try-Catch Audit Report Documented in Markdown | ~781 |
**agent-sdk-v2-examples.ts**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #35429 | 6:32 PM | ⚖️ | KISS Principle Applied to SDKAgent.ts Defensive Code | ~322 |
| #35412 | 5:25 PM | 🔵 | Canonical Example Shows Cost Tracking Without Token Usage Checks | ~289 |
| #35406 | 5:24 PM | ⚖️ | Categorized Conditionals as Required Business Logic vs Defensive Code | ~377 |
| #35404 | " | 🔵 | Canonical V2 SDK Patterns Require Message Type Checking | ~313 |
| #35398 | 5:23 PM | 🟣 | Added comprehensive Claude Agent SDK V2 examples | ~231 |
| #35383 | 3:11 PM | 🔵 | Phase 2 code quality review identified 5 critical bugs | ~604 |
| #35382 | 3:08 PM | ✅ | Phase 2 Anti-Pattern Recheck Passed | ~315 |
| #35379 | 3:07 PM | 🔵 | Phase 2 Anti-Pattern Check Found Content Extraction Bug | ~373 |
| #35353 | 3:01 PM | 🔵 | Phase 2 preparation analysis completed | ~502 |
| #35340 | 2:58 PM | 🔵 | Phase 1 Anti-Pattern Check Reveals V1/V2 API Mismatch | ~352 |
| #35330 | 2:54 PM | 🔵 | Claude Agent SDK V2 API Pattern Documentation | ~305 |
| #35329 | 2:53 PM | 🔵 | Agent SDK V2 API patterns and capabilities | ~453 |
| #35292 | 1:23 PM | 🔵 | Agent SDK query() resume parameter: SDK-generated session IDs cannot be predetermined | ~543 |
**sdkagent-removal-list.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #35425 | 5:27 PM | ✅ | Reorganized Removal List with DELETE/SIMPLIFY Section Header | ~240 |
| #35424 | " | ✅ | Revised Token Tracking from Delete to Simplify with Hardcoded Zero | ~365 |
| #35416 | 5:25 PM | 🟣 | Created Actionable Removal Checklist for SDKAgent.ts Cleanup | ~431 |
**agent-sdk-v2-preview.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #35414 | 5:25 PM | 🔵 | V2 Preview Documentation Shows Direct Result Access Pattern | ~281 |
| #35289 | 1:23 PM | 🔵 | Agent SDK V2 preview documentation: Explicit session lifecycle with createSession and resumeSession | ~523 |
**sdkagent-conditional-logic-CORRECTED.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #35409 | 5:24 PM | 🟣 | Created Comprehensive Conditional Logic Removal Report | ~488 |
**dont-be-an-idiot.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #35400 | 5:23 PM | 🔄 | Phase 1 SDK V2 migration - Updated imports and added API documentation | ~294 |
| #35347 | 3:01 PM | ✅ | Phase 1 commit completed via Task agent | ~374 |
| #35346 | " | ✅ | Committed Phase 1 of V2 API migration | ~333 |
| #35345 | 3:00 PM | ✅ | Phase 1 Changes Committed to Git | ~338 |
| #35343 | " | ✅ | Phase 1 Git Status Shows Modified Files | ~315 |
| #35334 | 2:55 PM | 🔵 | V2 SDK Migration Preparation Complete | ~368 |
| #35332 | 2:54 PM | 🟣 | SDK V2 API Documentation Created | ~305 |
| #35331 | " | ✅ | Created documentation affirming V2 API stability | ~358 |
### Jan 2, 2026
**try-catch-audit-report.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #35703 | 1:01 PM | ⚖️ | Try-Catch as Anti-Pattern: Root Cause Analysis and Documentation | ~363 |
</claude-mem-context>

38
docs/i18n/CLAUDE.md Normal file
View File

@@ -0,0 +1,38 @@
<claude-mem-context>
# Recent Activity
<!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
### Dec 12, 2025
**README.ar.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #24246 | 2:43 AM | 🟣 | Comprehensive Translation System Added with 22 Language READMEs | ~386 |
**README.zh.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #24241 | 2:35 AM | ✅ | Internationalized README Files Moved to Dedicated i18n Directory | ~284 |
### Dec 22, 2025
**README.ja.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #31948 | 8:08 PM | ✅ | Batch Updated All Translation READMEs with Language Navigation | ~400 |
**README.zh.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #31947 | 8:07 PM | ✅ | Added Language Navigation Menu to Chinese Translation README | ~412 |
| #31945 | 8:06 PM | 🟣 | Multi-language navigation added to internationalized README files | ~386 |
| #31942 | 8:01 PM | 🔵 | Internationalization Documentation Coverage | ~315 |
### Dec 28, 2025
**README.*.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #33540 | 10:55 PM | 🔵 | Grep search found mem-search references in internationalized documentation | ~577 |
</claude-mem-context>

View File

@@ -85,4 +85,84 @@ npx mintlify dev
**Simple Rule**:
- `/docs/public/` = Official user documentation (Mintlify .mdx files) ← YOU ARE HERE
- `/docs/context/` = Internal docs, plans, references, audits
- `/docs/context/` = Internal docs, plans, references, audits
<claude-mem-context>
# Recent Activity
<!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
### Nov 18, 2025
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #11206 | 3:01 PM | 🔵 | mem-search skill architecture and migration details retrieved in full format | ~538 |
### Nov 21, 2025
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #13221 | 2:01 AM | 🔴 | Fixed broken markdown link to Viewer UI documentation | ~316 |
| #13220 | 2:00 AM | 🔴 | Escaped HTML less-than symbol in universal architecture timeout documentation | ~316 |
| #13216 | 1:54 AM | ✅ | Universal Architecture Added to Navigation | ~330 |
| #13215 | " | 🟣 | Universal AI Memory Architecture Documentation Created | ~732 |
| #13213 | 1:50 AM | 🔵 | Introduction Page Content and Recent v6.0.0 Release | ~495 |
| #13212 | " | 🔵 | Architecture Evolution Documentation Structure | ~408 |
| #13211 | " | 🔵 | Mintlify Documentation Site Configuration | ~430 |
| #13209 | 1:48 AM | 🔵 | Public Documentation Structure and Guidelines | ~383 |
### Nov 25, 2025
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #14994 | 2:22 PM | ✅ | Version Channel Section Added to Configuration Documentation | ~301 |
| #14993 | " | ✅ | Beta Features Added to Documentation Navigation | ~188 |
| #14992 | 2:21 PM | 🟣 | Beta Features Documentation Page Created | ~488 |
| #14991 | " | 🔵 | Mintlify Navigation Structure and Documentation Groups | ~394 |
| #14989 | " | 🔵 | Installation Documentation with Quick Start and Verification Steps | ~383 |
| #14988 | " | 🔵 | Configuration Documentation Structure and Environment Variables | ~338 |
### Nov 26, 2025
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #16190 | 10:22 PM | 🔵 | RAGTIME Search Retrieved Five Observations About Claude-Mem vs RAG Architecture | ~637 |
### Dec 3, 2025
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #19884 | 9:42 PM | 🔵 | Configuration system and environment variables | ~701 |
| #19878 | 9:40 PM | 🔵 | Installation process and system architecture | ~486 |
### Dec 8, 2025
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #22335 | 10:26 PM | 🔵 | Mintlify documentation configuration analyzed | ~534 |
| #22311 | 9:47 PM | 🔵 | Comprehensive Hooks Architecture Documentation Review | ~263 |
| #22297 | 9:43 PM | 🔵 | Mintlify Documentation Framework Configuration | ~446 |
| #22294 | " | 🔵 | Documentation Site Structure Located | ~359 |
### Dec 9, 2025
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #23179 | 10:44 PM | ✅ | Removed explanatory reasons from tool exclusion documentation | ~297 |
### Dec 15, 2025
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #27038 | 6:02 PM | 🔵 | 95% token reduction claims found only in private experimental documents, not in main public docs | ~513 |
| #27037 | " | 🔵 | Branch switching functionality exists in SettingsRoutes with UI switcher removal intent | ~463 |
| #26986 | 5:24 PM | ✅ | Updated Endless Mode latency warning in beta features documentation | ~299 |
### Dec 29, 2025
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #33938 | 6:27 PM | 🔵 | Relevant CLAUDE.md Context Identified for PR #492 | ~435 |
| #33750 | 12:25 AM | ✅ | Documentation Update: Removed Version Number from Architecture Evolution | ~281 |
</claude-mem-context>

View File

@@ -0,0 +1,30 @@
<claude-mem-context>
# Recent Activity
<!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
### Nov 18, 2025
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #11206 | 3:01 PM | 🔵 | mem-search skill architecture and migration details retrieved in full format | ~538 |
### Nov 21, 2025
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #13218 | 1:58 AM | 🔴 | Escaped HTML special character in MDX documentation | ~261 |
### Dec 3, 2025
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #19891 | 9:43 PM | 🔵 | Seven hook scripts across five lifecycle events | ~713 |
### Dec 15, 2025
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #27040 | 6:03 PM | 🔵 | Comprehensive search confirms no 95% claims exist in main branch public documentation | ~508 |
| #27037 | 6:02 PM | 🔵 | Branch switching functionality exists in SettingsRoutes with UI switcher removal intent | ~463 |
</claude-mem-context>

View File

@@ -45,19 +45,19 @@ Hook (stdin) → Database → Worker Service → SDK Processor → Database →
4. **Output**: Processed summaries written back to database
5. **Retrieval**: Next session's context hook reads summaries from database
### Search Pipeline (v5.4.0+)
### Search Pipeline
```
User Query → mem-search Skill Invoked → HTTP API → SessionSearch Service → FTS5 Database → Search Results → Claude
User Query → MCP Tools Invoked → HTTP API → SessionSearch Service → FTS5 Database → Search Results → Claude
```
1. **User Query**: User asks naturally: "What bugs did we fix?"
2. **Skill Invoked**: Claude recognizes intent and invokes mem-search skill
3. **HTTP API**: Skill uses curl to call HTTP endpoint (e.g., `/api/search/observations`)
2. **MCP Tools Invoked**: Claude recognizes intent and invokes MCP search tools
3. **HTTP API**: MCP tools call HTTP endpoint (e.g., `/api/search/observations`)
4. **SessionSearch**: Worker service queries FTS5 virtual tables
5. **Format**: Results formatted and returned to skill
5. **Format**: Results formatted and returned via MCP
6. **Return**: Claude presents formatted results to user
**Token Savings**: ~2,250 tokens per session vs MCP approach through progressive disclosure
Uses 3-layer progressive disclosure: search → timeline → get_observations
## Session Lifecycle

View File

@@ -18,6 +18,7 @@ Settings are managed in `~/.claude-mem/settings.json`. The file is auto-created
| `CLAUDE_MEM_MODE` | `code` | Active mode profile (e.g., `code--es`, `email-investigation`) |
| `CLAUDE_MEM_CONTEXT_OBSERVATIONS` | `50` | Number of observations to inject |
| `CLAUDE_MEM_WORKER_PORT` | `37777` | Worker service port |
| `CLAUDE_MEM_WORKER_HOST` | `127.0.0.1` | Worker service host address |
| `CLAUDE_MEM_SKIP_TOOLS` | `ListMcpResourcesTool,SlashCommand,Skill,TodoWrite,AskUserQuestion` | Comma-separated tools to exclude from observations |
### Gemini Provider Settings
@@ -189,19 +190,16 @@ Hooks are configured in `plugin/hooks/hooks.json`:
}
```
### Search Configuration (v5.4.0+)
### Search Configuration
**Migration Note**: As of v5.4.0, Claude-Mem uses skill-based search instead of MCP tools. As of v5.5.0, the skill was renamed to "mem-search" for better scope differentiation.
Claude-Mem provides MCP search tools for querying your project history.
**Previous (v5.3.x and earlier)**: MCP search server with 9 tools (~2,500 tokens per session)
**Current (v5.4.0+)**: mem-search skill with HTTP API (~250 tokens per session)
**No configuration required** - MCP tools are automatically available in Claude Code sessions.
**No configuration required** - the mem-search skill is automatically available in Claude Code sessions.
Search operations are now provided via:
- **Skill**: `plugin/skills/mem-search/SKILL.md` (auto-invoked when users ask about past work)
Search operations are provided via:
- **MCP Server**: 3 tools (search, timeline, get_observations) with progressive disclosure
- **HTTP API**: 10 endpoints on worker service port 37777
- **Progressive Disclosure**: Full instructions loaded on-demand only when needed
- **Auto-Invocation**: Claude recognizes natural language queries about past work
## Version Channel
@@ -229,6 +227,16 @@ Endless Mode is experimental and slower than standard mode. See [Beta Features](
Worker service is managed by Bun as a background process. The worker auto-starts on first session and runs continuously in the background.
## Folder Context Files
Claude-mem can automatically generate `CLAUDE.md` files in your project folders with activity timelines. This feature is disabled by default.
| Setting | Default | Description |
|---------|---------|-------------|
| `CLAUDE_MEM_FOLDER_CLAUDEMD_ENABLED` | `false` | Enable auto-generation of folder CLAUDE.md files |
See [Folder Context Files](usage/folder-context) for full documentation on how this feature works, configuration options, and git integration recommendations.
## Context Injection Configuration
Claude-Mem injects past observations into each new session, giving Claude awareness of recent work. You can configure exactly what gets injected using the **Context Settings Modal**.

View File

@@ -0,0 +1,51 @@
<claude-mem-context>
# Recent Activity
<!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
### Dec 29, 2025
**gemini-setup.mdx**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #34346 | 11:11 PM | 🟣 | Gemini Free Tier Integration Guide | ~413 |
| #34337 | 11:10 PM | 🔵 | Cursor Documentation Available | ~161 |
| #34331 | 11:05 PM | 🔴 | Fixed Broken Links in cursor/gemini-setup.mdx | ~253 |
| #34326 | 11:04 PM | 🔵 | Broken Links in Cursor Gemini Setup Documentation | ~324 |
| #34320 | 11:03 PM | 🔵 | Mintlify Broken Links Detected in Documentation | ~292 |
| #34215 | 10:08 PM | 🔵 | Retrieved Detailed Cursor Integration Implementation History | ~676 |
| #34214 | 10:07 PM | 🔵 | Cursor Integration Feature Set Discovered via Memory Search | ~427 |
| #34148 | 9:28 PM | 🟣 | Cursor IDE Integration with Cross-Platform Hooks and Documentation | ~514 |
| #34112 | 9:07 PM | 🟣 | Committed Cursor Public Documentation to Repository | ~427 |
| #34106 | 9:05 PM | 🟣 | Created Cursor-Specific Gemini Setup Guide | ~563 |
**index.mdx**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #34339 | 11:10 PM | 🟣 | Cursor IDE Integration with Persistent Memory | ~394 |
| #34335 | 11:06 PM | 🟣 | Mintlify Documentation Linting Successfully Completed | ~409 |
| #34330 | 11:05 PM | 🔴 | Fixed Remaining Broken Links in cursor/index.mdx Next Steps Section | ~284 |
| #34329 | " | 🔴 | Fixed Broken Links in cursor/index.mdx Detailed Guides Section | ~269 |
| #34325 | 11:04 PM | 🔵 | Multiple Broken Links in Cursor Index Documentation | ~329 |
| #34216 | 10:08 PM | 🔵 | Additional Cursor Integration Details Retrieved for Post Writing | ~600 |
| #34105 | 9:05 PM | 🟣 | Created Cursor Integration Landing Page | ~522 |
**openrouter-setup.mdx**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #34332 | 11:05 PM | 🔴 | Fixed Broken Links in cursor/openrouter-setup.mdx | ~283 |
| #34324 | 11:04 PM | 🔵 | Broken Link Syntax Identified in Cursor Documentation | ~329 |
| #34107 | 9:06 PM | 🟣 | Created Cursor-Specific OpenRouter Setup Guide | ~573 |
**cursor**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #34322 | 11:03 PM | 🔵 | Cursor Directory Files Confirmed to Exist | ~224 |
### Jan 4, 2026
**gemini-setup.mdx**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #36751 | 12:32 AM | 🔵 | Gemini-Related Files Located Across Project | ~242 |
</claude-mem-context>

View File

@@ -43,6 +43,7 @@
"usage/private-tags",
"usage/export-import",
"usage/manual-recovery",
"usage/folder-context",
"beta-features",
"endless-mode"
]

View File

@@ -148,7 +148,7 @@ Claude-Mem uses 6 lifecycle hook scripts across 5 lifecycle events, plus 1 pre-h
|----|------|---|-------|--------|
| #2586 | 12:58 AM | 🔵 | Context hook file empty | ~51 |
*Use mem-search skill to access full details*
*Use MCP search tools to access full details*
```
**Source:** `src/hooks/context-hook.ts` → `plugin/scripts/context-hook.js`

View File

@@ -23,15 +23,16 @@ Restart Claude Code. Context from previous sessions will automatically appear in
## Key Features
- 🧠 **Persistent Memory** - Context survives across sessions
- 🌐 **Multilingual Modes** - Supports 10+ languages (Spanish, Chinese, French, etc.)
- 🎭 **Mode System** - Switch between workflows (Code, Email Investigation)
- 🔍 **mem-search Skill** - Query your project history with natural language (~2,250 token savings)
- 📁 **Folder Context Files** - Auto-generated `CLAUDE.md` in project folders with activity timelines
- 🌐 **Multilingual Modes** - Supports 28 languages (Spanish, Chinese, French, Japanese, etc.)
- 🎭 **Mode System** - Switch between workflows (Code, Email Investigation, Chill)
- 🔍 **MCP Search Tools** - Query your project history with natural language
- 🌐 **Web Viewer UI** - Real-time memory stream visualization at http://localhost:37777
- 🔒 **Privacy Control** - Use `<private>` tags to exclude sensitive content from storage
- ⚙️ **Context Configuration** - Fine-grained control over what context gets injected
- 🤖 **Automatic Operation** - No manual intervention required
- 📊 **FTS5 Search** - Fast full-text search across observations
- 🔗 **Citations** - Reference past observations with IDs (access via http://localhost:37777/api/observation/{id} or view all in the web viewer at http://localhost:37777)
- 🔗 **Citations** - Reference past observations with IDs
## How It Works
@@ -58,11 +59,11 @@ Restart Claude Code. Context from previous sessions will automatically appear in
```
**Core Components:**
1. **5 Lifecycle Hooks** - SessionStart, UserPromptSubmit, PostToolUse, Stop, SessionEnd (6 hook scripts)
1. **4 Lifecycle Hooks** - SessionStart, UserPromptSubmit, PostToolUse, Stop
2. **Smart Install** - Cached dependency checker (pre-hook script)
3. **Worker Service** - HTTP API on port 37777 managed by Bun
4. **SQLite Database** - Stores sessions, observations, summaries with FTS5 search
5. **mem-search Skill** - Query historical context with natural language
5. **MCP Search Tools** - Query historical context with natural language
6. **Web Viewer UI** - Real-time visualization with SSE and infinite scroll
See [Architecture Overview](architecture/overview) for details.
@@ -76,21 +77,23 @@ See [Architecture Overview](architecture/overview) for details.
## What's New
**v9.0.0 - Live Context:**
- **Folder Context Files**: Auto-generated `CLAUDE.md` in project folders with activity timelines
- **Worktree Support**: Unified context from parent repos and git worktrees
- **Configurable Observation Limits**: Control how many observations appear in context
- **Windows Fixes**: Resolved IPC detection and hook execution issues
- **Settings Auto-Creation**: `settings.json` now auto-creates on first run
- **MCP Tools Naming**: Updated from "mem-search skill" to "MCP tools" terminology
**v7.1.0 - Bun Migration:**
- Replaced PM2 with native Bun process management
- Switched from better-sqlite3 to bun:sqlite for faster database access
- Automatic one-time migration on first hook trigger
- Simplified cross-platform support
**v7.0.0 - Context Configuration:**
- 11 settings for fine-grained control over context injection
- Dual-tag privacy system (`<private>` tags)
**Previous Highlights:**
- **v5.5.0**: mem-search skill with 100% effectiveness rate
- **v5.4.0**: Skill-based search (~2,250 tokens saved per session)
- **v5.1.0**: Web viewer UI at http://localhost:37777
## Next Steps
<CardGroup cols={2}>
@@ -100,8 +103,8 @@ See [Architecture Overview](architecture/overview) for details.
<Card title="Getting Started" icon="rocket" href="/usage/getting-started">
Learn how Claude-Mem works automatically
</Card>
<Card title="Architecture" icon="sitemap" href="/architecture/overview">
System components & data flow
<Card title="Folder Context" icon="folder-open" href="/usage/folder-context">
Auto-generated folder CLAUDE.md files
</Card>
<Card title="Search Tools" icon="magnifying-glass" href="/usage/search-tools">
Query your project history

View File

@@ -0,0 +1,47 @@
<claude-mem-context>
# Recent Activity
<!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
### Nov 18, 2025
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #11206 | 3:01 PM | 🔵 | mem-search skill architecture and migration details retrieved in full format | ~538 |
### Dec 3, 2025
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #19892 | 9:43 PM | 🔵 | Automatic operation workflow and progressive disclosure strategy | ~780 |
### Dec 10, 2025
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #23677 | 8:37 PM | ✅ | Update Export Documentation to Reflect Hybrid Search and Project Filter | ~314 |
| #23675 | " | 🔵 | Export/Import Memory Scripts Documentation | ~399 |
| #23590 | 5:51 PM | 🔵 | Import/Export Feature Status Review | ~490 |
| #23584 | 5:50 PM | 🔵 | Export/Import Documentation | ~405 |
### Dec 14, 2025
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #26335 | 9:02 PM | 🔵 | Citation URI Scheme Documentation | ~255 |
### Dec 25, 2025
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #32536 | 7:28 PM | ✅ | Updated Gemini provider warning about free tier rate limits | ~185 |
| #32535 | " | ✅ | Updated Gemini provider tip to recommend enabling billing | ~179 |
| #32534 | 7:27 PM | ✅ | Updated Gemini provider warning about rate limits | ~174 |
| #32533 | " | ✅ | Updated Gemini provider documentation with rate limit information | ~216 |
### Jan 5, 2026
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #37508 | 3:21 PM | 🔵 | Private Tags Documentation Defines User Privacy Control Mechanisms | ~748 |
</claude-mem-context>

View File

@@ -1,23 +1,23 @@
---
title: Claude Desktop Skill
description: Use claude-mem memory search in Claude Desktop with the mem-search skill
title: Claude Desktop MCP
description: Use claude-mem memory search in Claude Desktop with MCP tools
icon: desktop
---
<Note>
**Availability:** The mem-search skill works with Claude Desktop on macOS and Windows.
**Availability:** Claude-mem MCP tools work with Claude Desktop on macOS and Windows.
</Note>
## Overview
Claude Desktop can access your claude-mem memory database through the **mem-search** skill. This allows you to search past sessions, decisions, and observations directly from Claude Desktop conversations.
Claude Desktop can access your claude-mem memory database through **MCP tools**. This allows you to search past sessions, decisions, and observations directly from Claude Desktop conversations.
## Prerequisites
Before installing the skill, ensure:
Before configuring MCP tools, ensure:
1. **claude-mem is installed** and the worker service is running
2. **MCP server is configured** in Claude Desktop (the skill uses the `mcp-search` MCP server)
2. **MCP server is configured** in Claude Desktop (uses the `mcp-search` MCP server)
### Verify Worker is Running

View File

@@ -0,0 +1,280 @@
---
title: "Folder Context Files"
description: "Automatic per-folder CLAUDE.md files that provide directory-level context to Claude"
---
## Overview
Claude-mem automatically generates `CLAUDE.md` files in your project folders to provide Claude with directory-level context. These files contain a summary of recent activity in each folder, helping Claude understand what work has been done and where.
<Info>
This feature is **disabled by default**. Enable it via settings if you want automatic folder-level context generation.
</Info>
## How It Works
When you work with Claude Code in a project, claude-mem tracks which files are read and modified. After each observation is saved, it automatically:
1. Identifies unique folder paths from touched files
2. Queries recent observations relevant to each folder
3. Generates a formatted timeline of activity
4. Writes it to `CLAUDE.md` in that folder (inside `<claude-mem-context>` tags)
### What Gets Generated
Each folder's `CLAUDE.md` contains a "Recent Activity" section showing:
- Observation IDs for reference
- Timestamps of when work occurred
- Type indicators (bug fixes, features, discoveries, etc.)
- Brief titles describing the work
- Estimated token counts
```markdown
<claude-mem-context>
# Recent Activity
<!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
### Jan 4, 2026
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #1234 | 4:30 PM | 🔵 | Implemented user authentication | ~250 |
| #1235 | " | 🔴 | Fixed login redirect bug | ~180 |
</claude-mem-context>
```
### User Content Preservation
The auto-generated content is wrapped in `<claude-mem-context>` tags. **Any content you write outside these tags is preserved** when the file is regenerated. This means you can:
- Add your own documentation above or below the generated section
- Write folder-specific instructions for Claude
- Include architectural notes or conventions
```markdown
# Authentication Module
This folder contains all authentication-related code.
Follow the established patterns for new auth providers.
<claude-mem-context>
... auto-generated content ...
</claude-mem-context>
## Manual Notes
- OAuth providers go in /providers/
- Session handling uses Redis
```
### Project Root Exclusion
The **project root** (folders containing a `.git` directory) is **excluded** from auto-generation. This is intentional:
- Root `CLAUDE.md` files typically contain project-wide instructions you've written manually
- Auto-generating at the root could overwrite important project documentation
- Subfolders are where folder-level context is most useful
<Note>
Git submodules (which have a `.git` *file* instead of directory) are correctly detected and **not** excluded, so they receive auto-generated context.
</Note>
## Configuration
### Enabling the Feature
To enable folder CLAUDE.md generation, edit your settings file:
**1. Open `~/.claude-mem/settings.json`**
**2. Add or update this setting:**
```json
{
"CLAUDE_MEM_FOLDER_CLAUDEMD_ENABLED": "true"
}
```
**3. Save the file** - changes take effect immediately (no restart needed)
| Value | Behavior |
|-------|----------|
| `"false"` (default) | Folder CLAUDE.md generation disabled |
| `"true"` | Auto-generate folder CLAUDE.md files |
<Tip>
If the settings file doesn't exist, create it with just the settings you want to change. Claude-mem will use defaults for any missing settings.
</Tip>
## Cleanup Mode
The regenerate script includes a `--clean` mode for removing auto-generated content:
```bash
# Preview what would be cleaned (dry run)
bun scripts/regenerate-claude-md.ts --clean --dry-run
# Actually clean files
bun scripts/regenerate-claude-md.ts --clean
```
**What cleanup does:**
1. Finds all `CLAUDE.md` files recursively
2. Strips `<claude-mem-context>...</claude-mem-context>` sections
3. **Deletes** files that become empty after stripping
4. **Preserves** files that have user content outside the tags
This is useful for:
- Preparing a branch for PR (removing generated files)
- Resetting folder context to start fresh
- Removing context before sharing code
## Git Integration
### Should You Commit These Files?
This is **your choice** based on your workflow. Here are the trade-offs:
<Tabs>
<Tab title="Commit Them">
**Pros:**
- Team members see folder-level context and recent activity
- New contributors can understand what happened where
- Code reviewers get additional context about changes
- Historical record of work patterns in the repo
**Cons:**
- Adds files to your repository
- Files change frequently during development
- May create noise in diffs and commit history
- Different team members may generate different content
</Tab>
<Tab title="Gitignore Them">
**Pros:**
- Clean repository without generated files
- No commit noise from auto-generated content
- Each developer has their own local context
- Simpler git history
**Cons:**
- Team doesn't share folder context
- Context is lost when switching machines
- New team members don't benefit from existing context
</Tab>
</Tabs>
### Gitignore Pattern
To exclude folder CLAUDE.md files from git:
```gitignore
# Ignore auto-generated folder context files
**/CLAUDE.md
# But keep the root CLAUDE.md if you want
!CLAUDE.md
```
Or to ignore all CLAUDE.md files everywhere:
```gitignore
**/CLAUDE.md
```
### Recommended Workflows
**For Solo Developers:**
- Keep them local (gitignore) for personal context
- Or commit them if you work across multiple machines
**For Teams:**
- Discuss with your team which approach works best
- Consider committing them if onboarding is frequent
- Use `--clean` before PRs if you prefer clean diffs
**Before Merging PRs:**
```bash
# Clean up generated files before merge
bun scripts/regenerate-claude-md.ts --clean
git add -A
git commit -m "chore: clean up generated CLAUDE.md files"
```
## Regenerating Context
To manually regenerate all folder CLAUDE.md files from the database:
```bash
# Preview what would be regenerated
bun scripts/regenerate-claude-md.ts --dry-run
# Regenerate all folders
bun scripts/regenerate-claude-md.ts
# Regenerate for a specific project only
bun scripts/regenerate-claude-md.ts --project=my-project
```
This is useful after:
- Importing observations from another machine
- Database recovery
- Wanting to refresh all folder context
## Worktree Support
**New in v9.0**: Claude-mem now supports git worktrees with unified context.
When you're working in a git worktree, context is automatically gathered from both:
- The parent repository (where the worktree was created)
- The worktree directory itself
This means observations about shared code are visible regardless of which worktree you're in, giving you a complete picture of recent activity across all related directories.
### How It Works
1. When generating context, claude-mem detects if your project is a worktree
2. It identifies the parent repository automatically
3. Timeline queries include both locations
4. Results are interleaved chronologically
<Note>
No configuration needed - worktree detection is automatic. If you're not using worktrees, this feature has no effect.
</Note>
## Technical Details
### File Format
Generated content uses a consistent markdown table format:
| Column | Description |
|--------|-------------|
| ID | Observation ID (e.g., `#1234`) or session ID (`#S123`) |
| Time | 12-hour format with AM/PM, ditto marks (`"`) for repeated times |
| T | Type emoji indicator |
| Title | Brief description of the observation |
| Read | Estimated token count (e.g., `~250`) |
### Type Indicators
| Emoji | Type |
|-------|------|
| 🔴 | Bug fix |
| 🟣 | Feature |
| 🔄 | Refactor |
| ✅ | Change |
| 🔵 | Discovery |
| ⚖️ | Decision |
| 🎯 | Session |
| 💬 | Prompt |
### Atomic Writes
Files are written atomically using a temp file + rename pattern. This prevents partial writes if the process is interrupted.
### Performance
- Updates happen asynchronously (fire-and-forget)
- Failures are logged but don't block the main workflow
- Only folders with actual file activity are updated
- Deduplication prevents redundant updates for the same folder

View File

@@ -160,13 +160,13 @@ Context injection uses progressive disclosure for efficient token usage:
- Shows full summary details **only if** generated after last observation
- Token cost: ~50-200 tokens for index view
### Layer 2: On-Demand Details (mem-search Skill)
### Layer 2: On-Demand Details (MCP Tools)
- Ask naturally: "What bugs did we fix?" or "How did we implement X?"
- Claude auto-invokes mem-search skill to fetch full details
- Claude auto-invokes MCP search tools to fetch full details
- Search by concept, file, type, or keyword
- Timeline context around specific observations
- Token cost: ~100-500 tokens per observation fetched
- Skill uses HTTP API (v5.4.0+) for efficient retrieval
- Uses 3-layer workflow: search → timeline → get_observations
### Layer 3: Perfect Recall (Code Access)
- Read source files directly when needed
@@ -193,9 +193,9 @@ When you use `/clear`, the session doesn't end - it continues with a new prompt
The `/clear` command clears the conversation context visible to Claude AND re-injects fresh context from recent sessions, while the underlying session continues tracking observations.
## Searching Your History (v5.4.0+)
## Searching Your History
Claude-Mem uses the mem-search skill for querying your project history. Simply ask naturally:
Claude-Mem provides MCP tools for querying your project history. Simply ask naturally:
```
"What bugs did we fix last session?"
@@ -204,9 +204,7 @@ Claude-Mem uses the mem-search skill for querying your project history. Simply a
"Show me recent work on this project"
```
Claude automatically recognizes your intent and invokes the mem-search skill, which uses HTTP API endpoints to query your memory efficiently.
**Token Savings**: ~2,250 tokens per session start vs previous MCP approach
Claude automatically recognizes your intent and invokes the MCP search tools, which use a 3-layer workflow (search → timeline → get_observations) for efficient token usage.
## Next Steps

View File

@@ -0,0 +1,317 @@
# Logging Analysis and Recommendations
**Date**: 2026-01-04
**Status**: CRITICAL - Current logging does not prove system correctness
**Goal**: Enable operators to visually verify the system is working and quickly discover when it isn't
---
## Executive Summary
The current logging is **noisy bullshit that doesn't cover the important parts of the system**. The logging should:
1. **PROVE** the system is working correctly (not just record activity)
2. **MAKE OBVIOUS** when things break (clear error paths)
3. **TRACE** data end-to-end through the pipeline
### Critical Finding: Session ID Alignment is BROKEN and UNVERIFIABLE
The system has **three session ID types** that must stay aligned:
- `contentSessionId` - from Claude Code (user's session)
- `sessionDbId` - our internal database ID (integer)
- `memorySessionId` - from Claude SDK (enables resume)
**The [ALIGNMENT] logs exist because this mapping is STILL a regression bug.** The current logs show intermediate values but **don't prove correctness**.
---
## Critical System Operations
### 1. Session ID Mapping Chain (MOST CRITICAL)
```
contentSessionId (from hook)
→ sessionDbId (our DB lookup)
→ memorySessionId (captured from SDK)
```
**If this breaks, observations go to wrong sessions = DATA CORRUPTION**
**Current State:**
| Operation | Has Logging? | Proves Correctness? |
|-----------|-------------|---------------------|
| Hook receives contentSessionId | YES | NO - just logs receipt |
| DB creates/looks up sessionDbId | PARTIAL | NO - no verification |
| SDK response gives memorySessionId | YES | NO - no DB update verification |
| Observations stored with memorySessionId | PARTIAL | NO - doesn't show which IDs used |
**What's MISSING:**
```
[INFO] [SESSION] SESSION_CREATED | contentSessionId=abc123 → sessionDbId=42 | isNew=true
[INFO] [SESSION] MEMORY_ID_CAPTURED | sessionDbId=42 | memorySessionId=xyz789 | dbUpdateSuccess=true
[INFO] [SESSION] E2E_VERIFIED | contentSessionId=abc123 → sessionDbId=42 → memorySessionId=xyz789
```
### 2. Observation Storage Pipeline (CRITICAL)
**The pipeline:**
```
Hook captures tool use
→ Worker receives observation
→ Queued to pending_messages
→ SDK agent claims message
→ SDK processes → generates XML
→ Observations parsed
→ Stored to DB with memorySessionId
→ Synced to Chroma
```
**Current State:**
| Operation | Has Logging? | Proves Correctness? |
|-----------|-------------|---------------------|
| Hook captures tool | YES | Noise - "Received hook input" |
| Observation queued | YES | Noise - just says "queued" |
| Message claimed from queue | NO | MISSING |
| Observation parsed | NO | MISSING |
| Observation stored to DB | PARTIAL | NO - doesn't show IDs used |
| DB transaction committed | NO | MISSING |
| Chroma sync complete | DEBUG only | Should be INFO for failures |
**What's MISSING:**
```
[INFO] [QUEUE] CLAIMED | sessionDbId=42 | messageId=5 | type=observation | tool=Bash(npm test)
[INFO] [DB ] STORED | sessionDbId=42 | memorySessionId=xyz789 | observations=2 | ids=[101,102]
[INFO] [QUEUE] COMPLETED | sessionDbId=42 | messageId=5 | processingTime=1.2s
```
### 3. Queue Processing (CRITICAL)
Messages can fail, get stuck, or be lost. Current logging doesn't show:
- When a message is claimed
- When a message is completed
- When a message fails and WHY
- Queue depth and processing latency
**Current State:**
- Queue enqueue: `logger.debug` (not visible at INFO)
- Queue claim: NO LOGGING
- Queue completion: NO LOGGING
- Queue failure: `logger.error` (exists but rare)
- Recovery of stuck messages: `logger.info` (good)
**What's MISSING:**
```
[INFO] [QUEUE] ENQUEUE | sessionDbId=42 | type=observation | queueDepth=3
[INFO] [QUEUE] CLAIM | sessionDbId=42 | messageId=5 | waitTime=0.1s
[INFO] [QUEUE] COMPLETE | sessionDbId=42 | messageId=5 | success=true
[ERROR][QUEUE] FAILED | sessionDbId=42 | messageId=5 | error="SDK timeout" | willRetry=true
```
### 4. Context Injection (IMPORTANT)
When a session starts, relevant past observations should be injected. Current logging doesn't show:
- What context was searched for
- What was found
- What was injected
**Current State:** Effectively no logging for context injection success path.
---
## What's Currently NOISE (Should Be DEBUG or Removed)
### Chatty Session Init Logs (new-hook.ts)
```typescript
// 7 INFO logs for a single session init
logger.info('HOOK', 'new-hook: Received hook input'); // WHO CARES
logger.info('HOOK', 'new-hook: Calling /api/sessions/init'); // WHO CARES
logger.info('HOOK', 'new-hook: Received from /api/sessions/init'); // WHO CARES
logger.info('HOOK', 'new-hook: Session N, prompt #M'); // CONSOLIDATE INTO ONE
logger.info('HOOK', 'new-hook: Calling /sessions/{id}/init'); // WHO CARES
```
**Should be ONE log:** `SESSION_INIT | sessionDbId=42 | promptNumber=1 | project=foo`
### Chatty SessionManager Logs
```typescript
logger.info('SESSION', 'initializeSession called'); // WHO CARES
logger.info('SESSION', 'Returning cached session'); // DEBUG
logger.info('SESSION', 'Fetched session from database'); // DEBUG
logger.info('SESSION', 'Creating new session object'); // DEBUG
logger.info('SESSION', 'Session initialized'); // GOOD - KEEP
logger.info('SESSION', 'Observation queued'); // DEBUG - happens constantly
logger.info('SESSION', 'Summarize queued'); // DEBUG - happens constantly
```
### Chatty Chroma Backfill Logs
```typescript
// Logs EVERY batch at INFO - should be DEBUG for progress
logger.info('CHROMA_SYNC', 'Backfill progress', { processed, remaining }); // DEBUG
```
**Should be START and END only at INFO level.**
### Duplicate Migration Logs
Both `SessionStore.ts` and `migrations/runner.ts` have ~25 identical log statements. **DEDUPLICATE.**
---
## [ALIGNMENT] Logs: The Problem
The [ALIGNMENT] logs were added to debug session ID issues. They're in the RIGHT places but they **don't prove anything**:
```typescript
// Current - shows values but doesn't verify
logger.info('SDK', `[ALIGNMENT] Resume Decision | contentSessionId=${...} | memorySessionId=${...}`);
// What's needed - proves correctness
logger.info('SDK', `[ALIGNMENT] VERIFIED | contentSessionId=${...} → sessionDbId=${...} → memorySessionId=${...} | dbMatch=true | resumeValid=true`);
```
**Current problems:**
1. Log values without validation
2. Don't show if DB operations succeeded
3. Don't trace end-to-end
4. Mixed in with noise - hard to see
**What they should do:**
1. Log the mapping chain ONCE with verification
2. Show DB operation success/failure
3. Provide clear end-to-end trace
4. Stand out from noise with consistent prefix
---
## Proposed Logging Architecture
### Log Levels by Purpose
| Level | Purpose | Examples |
|-------|---------|----------|
| ERROR | Something FAILED | DB write failed, SDK crashed, queue overflow |
| WARN | Something UNEXPECTED but handled | Fallback used, retry needed, timeout |
| INFO | KEY OPERATIONS completed | Session created, observation stored, queue processed |
| DEBUG | Detailed tracing | Cache hits, intermediate states, parsing details |
### Critical Path Logging (Must be INFO)
#### Session Lifecycle
```
[INFO] [SESSION] CREATED | contentSessionId=abc → sessionDbId=42 | project=foo
[INFO] [SESSION] MEMORY_ID_CAPTURED | sessionDbId=42 → memorySessionId=xyz | dbUpdated=true
[INFO] [SESSION] VERIFIED | chain: abc→42→xyz | valid=true
[INFO] [SESSION] COMPLETED | sessionDbId=42 | duration=45s | observations=12 | summaries=1
```
#### Observation Pipeline
```
[INFO] [QUEUE] ENQUEUED | sessionDbId=42 | type=observation | tool=Bash(npm test) | depth=1
[INFO] [QUEUE] CLAIMED | sessionDbId=42 | messageId=5 | waitTime=0.1s
[INFO] [DB ] STORED | sessionDbId=42 | memorySessionId=xyz | obsIds=[101,102] | txnCommit=true
[INFO] [QUEUE] COMPLETED | sessionDbId=42 | messageId=5 | duration=1.2s
```
#### Error Conditions
```
[ERROR] [SESSION] MEMORY_ID_MISMATCH | expected=xyz | got=abc | sessionDbId=42
[ERROR] [DB ] STORE_FAILED | sessionDbId=42 | error="FK constraint" | observations=2
[ERROR] [QUEUE ] STUCK | sessionDbId=42 | stuckFor=5min | action=marking_failed
[ERROR] [SDK ] CRASHED | sessionDbId=42 | error="Claude process died" | pendingWork=3
```
### Health Dashboard Output
After fixes, a healthy session should produce:
```
[INFO] [SESSION] CREATED | contentSessionId=abc → sessionDbId=42
[INFO] [SESSION] GENERATOR_STARTED | sessionDbId=42 | provider=claude-sdk
[INFO] [QUEUE ] CLAIMED | sessionDbId=42 | messageId=1 | type=observation
[INFO] [SESSION] MEMORY_ID_CAPTURED | sessionDbId=42 → memorySessionId=xyz
[INFO] [DB ] STORED | sessionDbId=42 | memorySessionId=xyz | obsIds=[1]
[INFO] [QUEUE ] COMPLETED | sessionDbId=42 | messageId=1
... (more observations)
[INFO] [QUEUE ] CLAIMED | sessionDbId=42 | messageId=5 | type=summarize
[INFO] [DB ] STORED | sessionDbId=42 | summaryId=1
[INFO] [QUEUE ] COMPLETED | sessionDbId=42 | messageId=5
[INFO] [SESSION] COMPLETED | sessionDbId=42 | duration=45s | observations=12
```
An UNHEALTHY session should make problems OBVIOUS:
```
[INFO] [SESSION] CREATED | contentSessionId=abc → sessionDbId=42
[INFO] [SESSION] GENERATOR_STARTED | sessionDbId=42 | provider=claude-sdk
[ERROR] [SESSION] MEMORY_ID_NOT_CAPTURED | sessionDbId=42 | waited=30s
[ERROR] [DB ] STORE_FAILED | sessionDbId=42 | error="memorySessionId is null"
[WARN ] [QUEUE ] STUCK | sessionDbId=42 | messageId=1 | age=60s | action=retry
[ERROR] [SESSION] GENERATOR_CRASHED | sessionDbId=42 | error="SDK timeout"
```
---
## Implementation Priorities
### P0: Fix Critical Missing Logs (Session Alignment)
1. **ResponseProcessor.ts** - Add logging BEFORE storeObservations:
```typescript
logger.info('DB', 'STORING | sessionDbId=... | memorySessionId=... | count=...');
```
2. **SDKAgent.ts** - Verify DB update after memorySessionId capture:
```typescript
const updated = store.updateMemorySessionId(sessionDbId, memorySessionId);
logger.info('SESSION', `MEMORY_ID_CAPTURED | sessionDbId=${...} | memorySessionId=${...} | dbUpdated=${updated}`);
```
3. **SessionRoutes.ts** - Log session creation with verification:
```typescript
logger.info('SESSION', `CREATED | contentSessionId=${...} → sessionDbId=${...} | verified=true`);
```
### P1: Fix Queue Processing Logs
1. **SessionQueueProcessor.ts** - Add CLAIM/COMPLETE logs
2. **PendingMessageStore.ts** - Add enqueue/dequeue logs
### P2: Reduce Noise
1. Move chatty logs to DEBUG level
2. Deduplicate migration logs
3. Consolidate hook init logs
### P3: Add Health Validation
1. Periodic verification log: `[INFO] [HEALTH] OK | sessions=3 | pending=0 | chroma=connected`
2. On-demand chain verification: `[INFO] [VERIFY] contentSessionId=abc chain is VALID`
---
## Files Requiring Changes
| File | Priority | Changes |
|------|----------|---------|
| `src/services/worker/agents/ResponseProcessor.ts` | P0 | Add pre-store logging with IDs |
| `src/services/worker/SDKAgent.ts` | P0 | Verify DB update, consolidate ALIGNMENT logs |
| `src/services/worker/http/routes/SessionRoutes.ts` | P0 | Add session creation verification log |
| `src/services/queue/SessionQueueProcessor.ts` | P1 | Add CLAIM/COMPLETE logs |
| `src/services/sqlite/PendingMessageStore.ts` | P1 | Add enqueue/dequeue logs |
| `src/services/worker/SessionManager.ts` | P2 | Move chatty logs to DEBUG |
| `src/hooks/new-hook.ts` | P2 | Consolidate to single INFO log |
| `src/services/sync/ChromaSync.ts` | P2 | Move progress to DEBUG, keep start/end INFO |
| `src/services/sqlite/SessionStore.ts` | P2 | Remove duplicate migration logs |
---
## Verification Checklist
After implementing changes, verify:
- [ ] Can trace contentSessionId → sessionDbId → memorySessionId in logs
- [ ] Can see when observation storage succeeds/fails
- [ ] Can see queue claim/complete for each message
- [ ] Errors are OBVIOUS and include context for debugging
- [ ] Noise is reduced to the point where INFO level is useful
- [ ] A "normal" session produces ~10-15 INFO logs, not 50+

View File

@@ -0,0 +1,58 @@
Brainstorming Report: CLAUDE.md Distribution Architecture
Problem Statement
The current folder-level CLAUDE.md generation creates "messy repos" with many auto-generated files. While the feature is valuable (especially for PR reviews and team visibility), the file proliferation could annoy users.
Solutions Explored
1. Shell Magic / On-Read Population
Explored various "magic alias" approaches where content populates dynamically on read:
- Git smudge/clean filters - Transform at checkout, not truly on-read
- FUSE filesystem - Virtual FS with dynamic generation, powerful but heavy
- Named pipes (FIFOs) - Fragile, editors don't handle well
- Symlinks to generated location - Simple but not on-demand
2. Command Substitution (Exciting Discovery)
Potential Claude Code feature request - support command substitution in context config:
{
"context": {
"sources": [
{ "command": "claude-mem live-context ${CWD}" }
]
}
}
Or folder-level .claude-context files containing just:
exec: claude-mem live-context .
Benefits: Zero files, pure dynamic context, no staleness, no merge conflicts ever.
3. Ephemeral + Smart Push Architecture (Recommended)
Phase 1: Ephemeral Local
- Gitignore **/CLAUDE.md (keep root CLAUDE.md for user instructions)
- Timeline data in separate file: claude-mem-timeline.csv
- Generated fresh on SessionStart
- Block Claude from reading timeline file via .claude/settings.local.json: "ignorePaths": ["claude-mem-timeline.csv"]
- Prevents duplication (data already injected via context hook)
Phase 2: Smart Push Timeline
- Pre-push hook generates timeline from last commit to now
- Writes claude-mem-timeline.csv and includes in push
- Reviewers, CI/CD Claude agents, and team members see what happened
- Clean separation: CLAUDE.md = human instructions, timeline.csv = machine context
Phase 3: Team Sync (Pro Feature)
- Post-pull hook: claude-mem sync --from-timeline
- Parses timeline files, validates against local DB
- Imports missing observations with provenance tracking
- Conflict resolution for overlapping work
- Monetization opportunity: Team sync as paid feature
Key Insight: Clean Separation
- CLAUDE.md = User-authored project instructions (Claude SHOULD read)
- claude-mem-timeline.csv = Machine-generated context sync (blocked from reading, already injected)
No collision between human documentation and machine context.

160
docs/reports/CLAUDE.md Normal file
View File

@@ -0,0 +1,160 @@
<claude-mem-context>
# Recent Activity
<!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
### Jan 2, 2026
**2026-01-02--generator-failure-investigation.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #36091 | 10:20 PM | 🔵 | Generator Failure Investigation - Chroma Vector Search Silent Failures | ~436 |
| #36079 | 10:10 PM | 🔴 | Fixed Generator Crashes from Silent Chroma Vector Search Failures | ~531 |
**2026-01-02--stuck-observations.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #36004 | 8:14 PM | 🔵 | Comprehensive Investigation Report on Stuck Observations Problem | ~527 |
### Jan 3, 2026
**2026-01-04--session-id-refactor-failures.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #36643 | 10:56 PM | 🔵 | Session ID Refactor Test Failures Root Cause | ~513 |
| #36636 | 10:46 PM | 🟣 | Session ID Refactor Analysis Agent Completed Comprehensive Report | ~637 |
| #36626 | 10:44 PM | 🟣 | Session ID Refactor Failures Report Generated | ~569 |
**2026-01-04--gemini-agent-failures.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #36638 | 10:47 PM | ✅ | GeminiAgent Failures Report Manually Created After Agent Timeout | ~604 |
**2026-01-04--session-store-failures.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #36635 | 10:46 PM | 🟣 | SessionStore Analysis Agent Completed Report Generation | ~545 |
| #36634 | " | ✅ | SessionStore Failures Report Generated With Test Fix Recommendations | ~595 |
**2026-01-04--logger-coverage-failures.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #36633 | 10:46 PM | ✅ | Logger Coverage Failures Report Generated | ~559 |
| #36623 | 10:44 PM | 🟣 | Logger Coverage Failures Report Generated | ~249 |
**2026-01-04--session-id-validation-failures.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #36628 | 10:44 PM | 🟣 | Session ID Validation Failures Report Generated | ~690 |
**2026-01-04--test-suite-report.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #36609 | 10:39 PM | 🟣 | Comprehensive Test Suite Report Generated | ~563 |
**reports**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #36599 | 10:37 PM | 🔵 | Reports Directory Structure Confirmed | ~203 |
**2026-01-02--generator-failure-investigation.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #36390 | 8:50 PM | 🔄 | Comprehensive Monolith Refactor with Modular Architecture | ~724 |
**2026-01-03--observation-saving-failure.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #36113 | 3:58 PM | 🔴 | Fixed FOREIGN KEY Constraint Failure in Observation Storage | ~448 |
### Jan 4, 2026
**2026-01-04--issue-511-gemini-model-missing.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #36924 | 2:25 AM | ✅ | Merged fix/pr-538-followups branch into main with comprehensive updates | ~481 |
| #36827 | 1:03 AM | ✅ | Branch diff shows 1,293 insertions and 98 deletions across 15 files | ~464 |
| #36781 | 12:45 AM | 🔵 | Complete GeminiAgent Model Configuration Gap Analysis | ~552 |
| #36776 | 12:43 AM | 🔵 | Issue #511 Analysis Document Located | ~459 |
| #36759 | 12:34 AM | ✅ | Created Issue #511 Analysis Report | ~304 |
**2026-01-04--issue-517-windows-powershell-analysis.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #36779 | 12:44 AM | 🔵 | ProcessManager Windows PowerShell Functions Complete Analysis | ~550 |
| #36720 | 12:15 AM | 🔵 | Issue #517 Windows PowerShell Analysis Completed | ~631 |
| #36718 | " | 🔵 | Issue #517 Analysis - Windows PowerShell Variable Escaping Bug | ~482 |
**2026-01-04--issue-531-export-type-duplication.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #36760 | 12:34 AM | ✅ | Created Issue #531 Report: Export Script Type Duplication | ~430 |
**2026-01-04--gemini-agent-failures.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #36751 | 12:32 AM | 🔵 | Gemini-Related Files Located Across Project | ~242 |
**reports**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #36748 | 12:31 AM | 🔵 | Existing GitHub Issue Reports Located | ~271 |
**2026-01-04--issue-527-uv-homebrew-analysis.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #36721 | 12:15 AM | 🔵 | Issue #527 UV Homebrew Path Missing on Apple Silicon | ~492 |
| #36719 | " | 🔵 | Issue #527 uv Homebrew Detection Missing on Apple Silicon Macs | ~526 |
**2026-01-04--issue-514-orphaned-sessions-analysis.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #36717 | 12:14 AM | 🔵 | Issue #514 Orphaned Sessions Analysis Completed | ~723 |
| #36716 | 12:13 AM | 🔵 | Issue #514 Orphaned .jsonl Session Files Analysis | ~616 |
**2026-01-04--issue-532-memory-leak-analysis.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #36714 | 12:12 AM | 🔵 | Memory Leak Analysis Report for Issue #532 Generated | ~531 |
| #36712 | 12:11 AM | 🔵 | Memory Leak Analysis for Issue #532 Documented | ~646 |
**2026-01-04--issue-520-stuck-messages-analysis.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #36713 | 12:11 AM | 🔵 | Issue #520 Stuck Messages Already Resolved | ~569 |
| #36711 | " | 🔵 | Issue #520 Stuck Messages Analysis - Already Resolved | ~526 |
**2026-01-02--stuck-observations.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #36710 | 12:07 AM | 🔵 | Stuck Observations Analysis - Six Critical Lifecycle Gaps | ~677 |
### Jan 5, 2026
**2026-01-05--issue-544-mem-search-hint-claude-code.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #37613 | 5:31 PM | 🔵 | PR #558 Review Feedback Analysis | ~544 |
| #37555 | 4:49 PM | 🔵 | Issue #544 Message Locations and Fix Pattern Documented | ~463 |
| #37545 | 4:47 PM | ✅ | Issue #544 Analysis Report Created for mem-search Skill Messaging Problem | ~480 |
**2026-01-05--issue-555-windows-hooks-ipc-false.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #37558 | 4:49 PM | 🔵 | Issue #555 Windows Hook Execution Patterns and Fix Strategy Documented | ~510 |
**2026-01-05--issue-545-formattool-json-parse-crash.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #37557 | 4:49 PM | 🔵 | Issue #545 Bug Location and Fix Pattern Documented | ~462 |
**2026-01-05--issue-543-slash-command-unavailable.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #37548 | 4:48 PM | ✅ | Issue #543 Analysis Report Created for Slash Command Availability | ~540 |
**2026-01-05--issue-557-settings-module-loader-error.md**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #37547 | 4:47 PM | ✅ | Issue #557 Analysis Report Created for Plugin Startup Failure | ~491 |
</claude-mem-context>