This commit fixes the session ID confusion identified in PR #475:
PROBLEM:
- Using contentSessionId (user's Claude Code session) for SDK resume was wrong
- Memory agent conversation should persist across the entire user session
- Each SDK call was starting fresh, losing memory agent continuity
SOLUTION:
1. Semantic Renaming (clarity):
- claudeSessionId → contentSessionId (user's observed session)
- sdkSessionId → memorySessionId (memory agent's session for resume)
- Database migration 17 renames columns accordingly
2. Memory Session ID Capture:
- SDKAgent captures session_id from first SDK message
- Persists to database via updateMemorySessionId()
- SessionManager loads memorySessionId on session init
3. Resume Logic Fixed:
- Only resume if memorySessionId captured from previous interaction
- Enables memory agent continuity across user prompts
Files changed: 33 (types, database, agents, hooks, routes)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Introduced PrivacyCheckValidator class to encapsulate logic for checking if user prompts are private.
- Updated SessionRoutes to utilize PrivacyCheckValidator for determining prompt privacy during observation and summarization operations.
- Removed duplicate privacy check logic from SessionRoutes, improving code maintainability and readability.