import React, { useState, useEffect } from 'react' import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog" import { Button } from "@/components/ui/button" import { Textarea } from "@/components/ui/textarea" import { Label } from "@/components/ui/label" import { Alert, AlertDescription } from "@/components/ui/alert" import { AlertCircle, CheckCircle } from "lucide-react" import { QualityBadge } from "./QualityBadge" import { useQualityStandards } from "@/hooks/useQualityStandards" import { Memory } from '@/types' interface QualityMemoryDialogProps { onAdd: (content: string) => Promise children: React.ReactNode } export function QualityMemoryDialog({ onAdd, children }: QualityMemoryDialogProps) { const [open, setOpen] = useState(false) const [content, setContent] = useState("") const [isSubmitting, setIsSubmitting] = useState(false) const { validateMemory, suggestImprovedTitle, standards } = useQualityStandards() const [validation, setValidation] = useState<{ score: number level: 'excellent' | 'good' | 'fair' | 'poor' | 'critical' issues: string[] suggestions: string[] meetsStandards: boolean } | null>(null) // Validate content on change useEffect(() => { if (!content.trim() || !standards) { setValidation(null) return } // Create a temporary memory for validation const tempMemory: Memory = { id: 'temp', timestamp: new Date().toISOString(), content, tags: [], category: 'personal', complexity: 1, project: 'default', priority: 'medium', status: 'active', metadata: {} } const result = validateMemory(tempMemory) setValidation(result) }, [content, validateMemory, standards]) const handleSubmit = async () => { if (!content.trim() || !validation) return // Warn if quality is poor if (!validation.meetsStandards) { const confirm = window.confirm( `This memory has quality issues:\n${validation.issues.join('\n')}\n\nDo you want to save it anyway?` ) if (!confirm) return } setIsSubmitting(true) try { await onAdd(content) setContent("") setValidation(null) setOpen(false) } catch (error) { console.error('Failed to add memory:', error) alert('Failed to add memory') } finally { setIsSubmitting(false) } } const applyImprovement = () => { if (!validation || !content) return // Extract title from content const titleMatch = content.match(/^#+\s+(.+)$/m) if (titleMatch) { const currentTitle = titleMatch[1] const improvedTitle = suggestImprovedTitle(currentTitle) const newContent = content.replace(titleMatch[0], `# ${improvedTitle}`) setContent(newContent) } } return ( {children} Create Quality Memory Create a memory that meets quality standards
{validation && ( )}