feat: Implement session management and search functionality

- Added SDK session, observation, and summary types to types.ts.
- Refactored worker-service to use SessionStore for session management.
- Created SessionSearch class for FTS5 full-text search and structured queries.
- Implemented SessionStore for CRUD operations on SDK sessions, observations, and summaries.
- Added migrations for database schema updates, including new columns and constraints.
- Enhanced search capabilities with filters for projects, types, concepts, and date ranges.
This commit is contained in:
Alex Newman
2025-10-18 20:15:55 -04:00
parent c27682c799
commit 115270c35e
18 changed files with 807 additions and 85 deletions
+3 -3
View File
@@ -15,7 +15,7 @@ import net from 'net';
import { unlinkSync, existsSync } from 'fs';
import { query } from '@anthropic-ai/claude-agent-sdk';
import type { SDKUserMessage, SDKSystemMessage } from '@anthropic-ai/claude-agent-sdk';
import { HooksDatabase } from '../services/sqlite/HooksDatabase.js';
import { SessionStore } from '../services/sqlite/SessionStore.js';
import { getWorkerSocketPath } from '../shared/paths.js';
import { buildInitPrompt, buildObservationPrompt, buildFinalizePrompt } from './prompts.js';
import { parseObservations, parseSummary } from './parser.js';
@@ -60,7 +60,7 @@ export async function main() {
*/
class SDKWorker {
private sessionDbId: number;
private db: HooksDatabase;
private db: SessionStore;
private socketPath: string;
private server: net.Server | null = null;
private sdkSessionId: string | null = null;
@@ -72,7 +72,7 @@ class SDKWorker {
constructor(sessionDbId: number) {
this.sessionDbId = sessionDbId;
this.db = new HooksDatabase();
this.db = new SessionStore();
this.abortController = new AbortController();
this.socketPath = getWorkerSocketPath(sessionDbId);
console.error('[claude-mem worker] Worker instance created', {