import { useState } from "react"; import { motion, AnimatePresence } from "framer-motion"; import { Brain, X, Tag, Plus, Trash2 } from "lucide-react"; import { addMemory, deleteMemory } from "../services/api"; import { format } from "date-fns"; const CATEGORY_OPTIONS = [ "general", "technical", "preference", "professional", "goal", ]; const categoryStyles = { technical: "text-blue-400 bg-blue-950/50 border-blue-800/40", preference: "text-purple-400 bg-purple-950/50 border-purple-800/40", professional: "text-emerald-400 bg-emerald-950/50 border-emerald-800/40", goal: "text-amber-400 bg-amber-950/50 border-amber-800/40", general: "text-slate-400 bg-slate-800/50 border-slate-700/40", }; export default function MemoryPanel({ sessionId, memories, onClose, onMemoryChange, }) { const [newFact, setNewFact] = useState(""); const [newCategory, setNewCategory] = useState("general"); const [isAdding, setIsAdding] = useState(false); const [showAddForm, setShowAddForm] = useState(false); const handleAddMemory = async () => { if (!newFact.trim() || !sessionId) return; setIsAdding(true); try { await addMemory({ session_id: sessionId, fact: newFact.trim(), category: newCategory, }); setNewFact(""); setShowAddForm(false); onMemoryChange?.(); } catch (err) { console.error("Failed to add memory:", err); } finally { setIsAdding(false); } }; const handleDeleteMemory = async (memoryId) => { try { await deleteMemory(memoryId); onMemoryChange?.(); } catch (err) { console.error("Failed to delete memory:", err); } }; return ( {/* Header */}
Memory Store {memories.length}
{/* Add Memory Button */}
{/* Add Form */} {showAddForm && (