import React from 'react'; import { Plus, ArrowLeft, Clock, Activity, Trash2, Edit3, Play, Eye, Microscope, Globe, Layers, Zap, BookOpen, Sparkles, ChevronDown, Info, Check, ClipboardCheck, ListTodo, ArrowRight, Loader2, Menu } from 'lucide-react'; import { motion, AnimatePresence } from 'motion/react'; import { Carnet, Note } from '../types'; import { HierarchicalCarnetSelector } from './HierarchicalCarnetSelector'; import { extractActionItems } from '../services/geminiService'; import { v4 as uuidv4 } from 'uuid'; interface AgentsViewProps { selectedAgentId: string | null; setSelectedAgentId: (id: string | null) => void; carnets: Carnet[]; notes: Note[]; onAddNote?: (note: Note) => void; onOpenSidebar?: () => void; } export const AgentsView: React.FC = ({ selectedAgentId, setSelectedAgentId, carnets, notes, onAddNote, onOpenSidebar }) => { const [selectedCarnetForAgent, setSelectedCarnetForAgent] = React.useState('4'); const [agentType, setAgentType] = React.useState<'Surveillant' | 'Personnalisé' | 'Slides' | 'Diagramme' | 'Tasks'>('Tasks'); const [isRunningAgent, setIsRunningAgent] = React.useState(false); const [agentResult, setAgentResult] = React.useState(null); const handleRunTaskAgent = async () => { setIsRunningAgent(true); setAgentResult(null); // Get notes from carnet const filteredNotes = notes.filter(n => n.carnetId === selectedCarnetForAgent && !n.isDeleted); try { const result = await extractActionItems(filteredNotes); setAgentResult(result); } catch (e) { console.error(e); } finally { setIsRunningAgent(false); } }; const handleSaveResult = () => { if (!agentResult || !onAddNote) return; const carnetName = carnets.find(c => c.id === selectedCarnetForAgent)?.name || 'General'; const newNote: Note = { id: uuidv4(), carnetId: selectedCarnetForAgent || '1', title: `Consolidated Actions: ${carnetName}`, date: new Intl.DateTimeFormat('en-US', { month: 'short', day: 'numeric', year: 'numeric' }).format(new Date()), content: agentResult, imageUrl: 'https://images.unsplash.com/photo-1484480974693-6ca0a78fb36b?auto=format&fit=crop&q=80&w=800&h=600', tags: [{ id: 't-tasks', label: 'Action Items', type: 'ai' }] }; onAddNote(newNote); alert('Note de tâches créée avec succès !'); setSelectedAgentId(null); }; return (
{!selectedAgentId ? ( <>

Mes Agents

Automatisez vos tâches de veille et de recherche.

{['Tous', 'Veilleur', 'Chercheur', 'Surveillant', 'Personnalisé'].map((tag, i) => ( ))}
{[ { id: 'a1', icon: , title: 'Surveillant de Notes', status: 'Réussi', type: 'SURVEILLANT', meta: 'Hebdomadaire • 6 exéc.', desc: 'Analyse les notes récentes d’un carnet et suggère des compléments, références et liens.' }, { id: 'a2', icon: , title: 'Chercheur de Sujet', status: 'Réussi', type: 'CHERCHEUR', meta: 'Hebdomadaire • 14 exéc.', desc: 'Recherche des informations approfondies sur les derniers modèles de Deepseek et voir l’avis des utilisateurs.' }, { id: 'a3', icon: , title: 'Veille IA', status: 'Réussi', type: 'VEILLEUR', meta: 'Quotidien • 20 exéc.', desc: 'Scrape les flux RSS de 6 sites IA (The Verge, TechCrunch...) et génère un résumé.' }, { id: 'a4', icon: , title: 'Action Miner', status: 'Inactif', type: 'TASKS', meta: 'À la demande', desc: 'Scan vos notes pour extraire automatiquement les tâches, assignés et deadlines.' }, ].map((agent, i) => (
setSelectedAgentId(agent.id)} className="bg-white dark:bg-white/5 border border-border rounded-2xl p-6 space-y-6 hover:border-ink/20 transition-all group cursor-pointer shadow-sm relative overflow-hidden" >
{agent.icon}

{agent.title}

{agent.type}

e.stopPropagation()}>

{agent.desc}

{agent.meta.split('•')[0]} {agent.meta.split('•')[1]}
Prochaine exécution Hebdomadaire
Dernier statut {agent.status}
))}
Modèles
{[ { title: 'Veille IA', desc: 'Scrape les flux RSS de 6 sites IA et génère un résumé hebdomadaire.', icon: }, { title: 'Veille Tech', desc: 'Crée un résumé quotidien des news Hacker News et Product Hunt.', icon: }, { title: 'Veille Dev', desc: 'Surveille les repos GitHub pour détecter les nouvelles releases.', icon: }, ].map((model, i) => (
{model.icon}

{model.title}

{model.desc}

))}
) : (

Sélectionnez le type d'agent

{[ { id: 'Surveillant', icon: , label: 'Surveillant', desc: 'Surveille un carnet et analyse les notes' }, { id: 'Tasks', icon: , label: 'Action Items', desc: 'Extrait les tâches et deadlines' }, { id: 'Slides', icon: , label: 'Slides', desc: 'Crée une présentation PowerPoint à partir de notes' }, { id: 'Diagramme', icon: , label: 'Diagramme', desc: 'Crée un diagramme Excalidraw à partir de notes' }, ].map((type) => ( ))}
CONFIGURATION