Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 19 additions & 3 deletions src/lib/agent-memory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,18 @@
* Enhanced: Works both client-side (localStorage) and server-side (file persistence)
*/

import { persistence, COLLECTIONS } from './persistence'
// Lazy-load persistence to avoid bundling Node.js 'fs' module in client-side code.
// persistence.ts uses 'fs' which is not available in the browser.
// This is only used in server-side code paths (typeof window === 'undefined').
function getServerPersistence(): { persistence: import('./persistence').PersistenceManager; COLLECTIONS: typeof import('./persistence').COLLECTIONS } | null {
if (typeof window !== 'undefined') return null
try {
// eslint-disable-next-line @typescript-eslint/no-require-imports
return require('./persistence')
} catch {
return null
}
}

// ============================================================================
// Types
Expand Down Expand Up @@ -56,7 +67,9 @@ export function loadMemories(): MemoryEntry[] {
// Server-side: use file persistence
if (typeof window === 'undefined') {
try {
const memories = persistence.load<MemoryEntry>(COLLECTIONS.AGENT_MEMORY)
const server = getServerPersistence()
if (!server) return []
const memories = server.persistence.load<MemoryEntry>(server.COLLECTIONS.AGENT_MEMORY)
return memories.map(m => ({
...m,
createdAt: new Date(m.createdAt),
Expand Down Expand Up @@ -101,7 +114,10 @@ export function saveMemories(memories: MemoryEntry[]): void {
// Server-side: use file persistence
if (typeof window === 'undefined') {
try {
persistence.save(COLLECTIONS.AGENT_MEMORY, sorted)
const server = getServerPersistence()
if (server) {
server.persistence.save(server.COLLECTIONS.AGENT_MEMORY, sorted)
}
} catch {
// ignore
}
Expand Down