| import { ChatMessage } from "../types.js"; | |
| import { LRUCache } from "lru-cache"; | |
| export type SessionState = { | |
| messages: ChatMessage[]; | |
| summary: string; | |
| lastAccess: number; | |
| }; | |
| const sessions = new LRUCache<string, SessionState>({ | |
| max: 5000, | |
| ttl: 1000 * 60 * 60 * 6 | |
| }); | |
| export const memoryStore = { | |
| get(sessionId: string): SessionState { | |
| const existing = sessions.get(sessionId); | |
| if (existing) { | |
| existing.lastAccess = Date.now(); | |
| return existing; | |
| } | |
| const created: SessionState = { | |
| messages: [], | |
| summary: "", | |
| lastAccess: Date.now() | |
| }; | |
| sessions.set(sessionId, created); | |
| return created; | |
| }, | |
| set(sessionId: string, state: SessionState) { | |
| state.lastAccess = Date.now(); | |
| sessions.set(sessionId, state); | |
| } | |
| }; | |