import type { CompressedObservation, Memory } from "../types.js"; // Wraps a Memory record in the CompressedObservation shape that // SearchIndex / VectorIndex / enrichment paths consume. Memories share // the same searchable fields as observations (title + content + // concepts + files); type is normalized to "decision" so memories stay // distinguishable in result metadata without colliding with observation // enums (file_read, command_run, …). The synthetic sessionId // ("memory" or memory.sessionIds[0]) is what enrich-side fallbacks key // off of when looking up the source record in KV.memories. export function memoryToObservation(memory: Memory): CompressedObservation { return { id: memory.id, sessionId: memory.sessionIds?.[0] ?? "memory", timestamp: memory.createdAt, type: "decision", title: memory.title, facts: [memory.content], narrative: memory.content, concepts: memory.concepts, files: memory.files, importance: memory.strength, }; }