feat(agents): add search/filter, "New" badge, and duplicate name resolution

- Add search bar with real-time filtering on agent name and description
- Add type filter chips (All, Veilleur, Chercheur, Surveillant, Personnalisé)
- Add "New" badge on agents created within the last 24h (hydration-safe)
- Auto-increment template names on duplicate install (e.g. "Veille Tech 2")
- Add i18n keys for new UI elements in both fr and en locales

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Sepehr Ramezani
2026-04-19 15:11:32 +02:00
parent 08ab0d1a1e
commit 5c63dfdd0c
5 changed files with 841 additions and 77 deletions

View File

@@ -1,7 +1,7 @@
{
"about": {
"appDescription": "Une application de prise de notes puissante avec des fonctionnalités IA",
"appName": "Keep Notes",
"appName": "Memento",
"buildDate": "Date de build",
"description": "Informations sur l'application",
"features": {
@@ -48,6 +48,8 @@
"description": "Configurez les fournisseurs IA pour l'étiquetage auto et la recherche sémantique. Utilisez différents fournisseurs pour des performances optimales.",
"embeddingsDescription": "Fournisseur IA pour la recherche sémantique. Recommandé : OpenAI (meilleure qualité).",
"embeddingsProvider": "Fournisseur d'embeddings",
"chatProvider": "Fournisseur de chat",
"chatDescription": "Fournisseur IA pour l'assistant chat. Utilise le fournisseur d'étiquettes si non configuré.",
"model": "Modèle",
"modelRecommendations": "gpt-4o-mini = Meilleur rapport qualité/prix • gpt-4o = Meilleure qualité",
"openAIKeyDescription": "Votre clé API OpenAI depuis platform.openai.com",
@@ -114,12 +116,30 @@
"dashboard": "Tableau de bord",
"users": "Utilisateurs",
"aiManagement": "Gestion IA",
"chat": "Chat IA",
"lab": "Le Lab (Idées)",
"agents": "Agents",
"settings": "Paramètres"
},
"metrics": {
"vsLastPeriod": "vs période précédente"
},
"aiTesting": "Test IA",
"tools": {
"title": "Outils Agents",
"description": "Configurer les outils externes pour le tool-use des agents : recherche web, scraping et accès API.",
"searchProvider": "Fournisseur de recherche web",
"searxng": "SearXNG (Auto-hébergé)",
"brave": "Brave Search API",
"both": "Les deux (SearXNG principal, Brave secours)",
"searxngUrl": "URL SearXNG",
"braveKey": "Clé API Brave Search",
"jinaKey": "Clé API Jina Reader",
"jinaKeyOptional": "Optionnel — fonctionne sans mais avec des limites",
"jinaKeyDescription": "Utilisée pour le scraping web. Fonctionne sans clé mais avec des limites de débit.",
"saveSettings": "Enregistrer les paramètres outils",
"updateSuccess": "Paramètres outils mis à jour avec succès",
"updateFailed": "Échec de la mise à jour des paramètres outils"
},
"security": {
"allowPublicRegistration": "Autoriser l'inscription publique",
"allowPublicRegistrationDescription": "Si désactivé, les nouveaux utilisateurs ne peuvent être ajoutés que par un administrateur via la page de gestion des utilisateurs.",
@@ -129,8 +149,24 @@
"updateSuccess": "Paramètres de sécurité mis à jour"
},
"settings": "Paramètres administrateur",
"resend": {
"title": "Resend (Recommandé)",
"description": "Envoyez des emails via l'API Resend. Prioritaire sur SMTP si configuré.",
"apiKey": "Clé API Resend",
"apiKeyHint": "Obtenez votre clé API sur resend.com. Utilisée pour les notifications d'agents et les réinitialisations de mot de passe.",
"saveSettings": "Enregistrer les paramètres Resend",
"updateSuccess": "Paramètres Resend mis à jour",
"updateFailed": "Échec de la mise à jour des paramètres Resend",
"configured": "Resend est configuré et actif"
},
"email": {
"title": "Configuration Email",
"description": "Configurez l'envoi d'emails pour les notifications d'agents et les réinitialisations de mot de passe.",
"provider": "Fournisseur Email",
"saveSettings": "Enregistrer les paramètres"
},
"smtp": {
"description": "Configurez le serveur email pour les réinitialisations de mot de passe.",
"description": "Configurez le serveur email pour les réinitialisations de mot de passe. Utilisé si Resend n'est pas configuré.",
"forceSSL": "Forcer SSL/TLS (généralement pour le port 465)",
"fromEmail": "Email d'expédition",
"host": "Hôte",
@@ -329,38 +365,10 @@
"signOut": "Déconnexion",
"signUp": "S'inscrire"
},
"autoLabels": {
"analyzing": "Analyse de vos notes...",
"createNewLabel": "Créer cette nouvelle étiquette et l'ajouter",
"created": "{count} étiquettes créées avec succès",
"description": "J'ai détecté des thèmes récurrents dans \"{notebookName}\" ({totalNotes} notes). Créer des étiquettes pour eux ?",
"error": "Échec de la récupération des suggestions d'étiquettes",
"new": "(nouveau)",
"noLabelsSelected": "Aucune étiquette sélectionnée",
"note": "note",
"notes": "notes",
"title": "Nouvelles suggestions d'étiquettes",
"typeContent": "Tapez du contenu pour obtenir des suggestions d'étiquettes..."
},
"batch": {
"organize": "Organiser",
"organizeWithAI": "Organiser avec l'IA"
},
"batchOrganization": {
"analyzing": "Analyse de vos notes...",
"apply": "Appliquer ({count})",
"applying": "Application...",
"confidence": "confiance",
"description": "L'IA analysera vos notes et suggérera de les organiser dans des carnets.",
"error": "Échec de la création du plan d'organisation",
"noNotebooks": "Aucun carnet disponible. Créez d'abord des carnets pour organiser vos notes.",
"noNotesSelected": "Aucune note sélectionnée",
"noSuggestions": "L'IA n'a pas trouvé de bonne manière d'organiser ces notes.",
"notesToOrganize": "{count} notes à organiser",
"selected": "{count} sélectionné",
"title": "Organiser avec l'IA",
"unorganized": "{count} notes n'ont pas pu être catégorisées et resteront dans les Notes générales."
},
"collaboration": {
"accessRevoked": "L'accès a été révoqué",
"addCollaborator": "Ajouter un collaborateur",
@@ -693,6 +701,9 @@
"supportDevelopment": "Supporter le développement de Memento ☕",
"trash": "Corbeille",
"userManagement": "Gestion des utilisateurs",
"chat": "Chat IA",
"lab": "Le Lab",
"agents": "Agents",
"workspace": "Espace de travail"
},
"notebook": {
@@ -732,7 +743,7 @@
"generalNotes": "Notes générales",
"move": "Déplacer",
"moveToNotebook": "Déplacer vers un carnet",
"title": "Déplacer vers {icon} {name} ?"
"title": "Déplacer vers {name} ?"
},
"notebooks": {
"allNotebooks": "Tous les carnets",
@@ -800,6 +811,8 @@
"noNotesFound": "Aucune note trouvée",
"noteCreateFailed": "Échec de la création de la note",
"noteCreated": "Note créée avec succès",
"deleted": "Note supprimée",
"deleteFailed": "Échec de la suppression de la note",
"others": "Autres",
"pin": "Épingler",
"pinned": "Épinglées",
@@ -844,7 +857,7 @@
"view": "Voir la note",
"viewCards": "Vue par cartes",
"viewCardsTooltip": "Grille de cartes et réorganisation par glisser-déposer",
"viewTabs": "Vue par onglets",
"viewTabs": "Vue en liste",
"viewTabsTooltip": "Onglets en haut, contenu dessous — glisser les onglets pour réordonner",
"viewModeGroup": "Mode d'affichage des notes",
"reorderTabs": "Réordonner l'onglet",
@@ -966,7 +979,6 @@
"maintenance": "Maintenance",
"maintenanceDescription": "Outils pour maintenir la santé de votre base de données",
"notifications": "Notifications",
"privacy": "Confidentialité",
"profile": "Profil",
"searchNoResults": "Aucun paramètre trouvé",
"security": "Sécurité",
@@ -975,6 +987,11 @@
"semanticIndexingDescription": "Générer des vecteurs pour toutes les notes afin de permettre la recherche par intention",
"settingsError": "Erreur lors de la sauvegarde des paramètres",
"settingsSaved": "Paramètres enregistrés",
"cardSizeMode": "Taille des notes",
"cardSizeModeDescription": "Choisir entre des notes de tailles différentes ou uniformes",
"selectCardSizeMode": "Sélectionner le mode d'affichage",
"cardSizeVariable": "Tailles variables (small/medium/large)",
"cardSizeUniform": "Taille uniforme",
"theme": "Thème",
"themeDark": "Sombre",
"themeLight": "Clair",
@@ -985,10 +1002,7 @@
"emailNotificationsDesc": "Recevoir des notifications importantes par email",
"desktopNotifications": "Notifications bureau",
"desktopNotificationsDesc": "Recevoir des notifications dans votre navigateur",
"anonymousAnalytics": "Analyses anonymes",
"anonymousAnalyticsDesc": "Partager des données d'utilisation anonymes pour améliorer l'application",
"notificationsDesc": "Gérez vos préférences de notifications",
"privacyDesc": "Contrôlez vos données et votre confidentialité"
"notificationsDesc": "Gérez vos préférences de notifications"
},
"reminders": {
"title": "Rappels",
@@ -1081,10 +1095,19 @@
"thanksFeedbackImproving": "Merci ! Nous l'utiliserons pour nous améliorer."
},
"trash": {
"deletePermanently": "Supprimer définitivement",
"title": "Corbeille",
"empty": "La corbeille est vide",
"emptyDescription": "Les notes supprimées apparaîtront ici",
"restore": "Restaurer",
"title": "Corbeille"
"deletePermanently": "Supprimer définitivement",
"noteTrashed": "Note déplacée dans la corbeille",
"noteRestored": "Note restaurée",
"notePermanentlyDeleted": "Note supprimée définitivement",
"emptyTrash": "Vider la corbeille",
"emptyTrashConfirm": "Supprimer définitivement toutes les notes de la corbeille ?",
"emptyTrashSuccess": "Corbeille vidée",
"permanentDelete": "Supprimer définitivement",
"permanentDeleteConfirm": "Cette note sera supprimée définitivement. Cette action est irréversible."
},
"ui": {
"close": "Fermer",
@@ -1097,7 +1120,7 @@
"description": "Gérez vos clés API et configurez les outils externes",
"whatIsMcp": {
"title": "Qu'est-ce que MCP ?",
"description": "Le Model Context Protocol (MCP) est un protocole ouvert qui permet aux modèles IA d'interagir de manière sécurisée avec des outils et sources de données externes. Avec MCP, vous pouvez connecter des outils comme Claude Code, Cursor ou N8N à votre instance Keep Notes pour lire, créer et organiser vos notes par programmation.",
"description": "Le Model Context Protocol (MCP) est un protocole ouvert qui permet aux modèles IA d'interagir de manière sécurisée avec des outils et sources de données externes. Avec MCP, vous pouvez connecter des outils comme Claude Code, Cursor ou N8N à votre instance Memento pour lire, créer et organiser vos notes par programmation.",
"learnMore": "En savoir plus sur MCP"
},
"serverStatus": {
@@ -1151,5 +1174,221 @@
"description": "Utilisez ces identifiants dans votre nœud MCP N8N :"
}
}
},
"agents": {
"title": "Agents",
"subtitle": "Automatisez vos tâches de veille et de recherche",
"newAgent": "Nouvel Agent",
"myAgents": "Mes Agents",
"searchPlaceholder": "Rechercher un agent...",
"filterAll": "Tous",
"newBadge": "Nouveau",
"noResults": "Aucun agent ne correspond à votre recherche.",
"noAgents": "Aucun agent",
"noAgentsDescription": "Créez votre premier agent ou installez un template ci-dessous pour automatiser vos tâches de veille.",
"types": {
"scraper": "Veilleur",
"researcher": "Chercheur",
"monitor": "Surveillant",
"custom": "Personnalisé"
},
"typeDescriptions": {
"scraper": "Scrape plusieurs sites et crée un résumé",
"researcher": "Recherche des informations sur un sujet",
"monitor": "Surveille un carnet et analyse les notes",
"custom": "Agent libre avec votre propre prompt"
},
"form": {
"agentType": "Type d'agent",
"name": "Nom",
"namePlaceholder": "Ex : Veille IA du mardi",
"description": "Description (optionnel)",
"descriptionPlaceholder": "Résumé hebdo des actus IA",
"urlsLabel": "URLs à scraper",
"urlsOptional": "(optionnel)",
"sourceNotebook": "Carnet à surveiller",
"selectNotebook": "Sélectionner un carnet...",
"targetNotebook": "Carnet cible",
"inbox": "Boîte de réception",
"instructions": "Instructions IA",
"instructionsPlaceholder": "Décrivez le comportement de l'agent...",
"frequency": "Fréquence",
"cancel": "Annuler",
"saving": "Sauvegarde...",
"save": "Sauvegarder",
"create": "Créer l'agent",
"editTitle": "Modifier l'agent",
"createTitle": "Nouvel agent",
"nameRequired": "Le nom est requis",
"addUrl": "Ajouter une URL",
"advancedMode": "Mode avancé",
"instructionsHint": "remplace le prompt automatique",
"researchTopic": "Sujet de recherche",
"researchTopicPlaceholder": "ex: Les dernières avancées en intelligence artificielle",
"notifyEmail": "Notification par email",
"notifyEmailHint": "Recevez un email avec les résultats de l'agent après chaque exécution"
},
"frequencies": {
"manual": "Manuel",
"hourly": "Toutes les heures",
"daily": "Quotidien",
"weekly": "Hebdomadaire",
"monthly": "Mensuel"
},
"status": {
"success": "Réussi",
"failure": "Échoué",
"running": "En cours",
"pending": "En attente"
},
"actions": {
"edit": "Modifier",
"run": "Exécuter",
"delete": "Supprimer",
"deleteConfirm": "Supprimer l'agent \"{name}\" ?",
"toggleOn": "Agent activé",
"toggleOff": "Agent désactivé"
},
"toasts": {
"created": "Agent créé",
"updated": "Agent mis à jour",
"deleted": "\"{name}\" supprimé",
"deleteError": "Erreur lors de la suppression",
"runSuccess": "\"{name}\" exécuté avec succès",
"runError": "Erreur : {error}",
"runFailed": "Exécution échouée",
"runGenericError": "Erreur lors de l'exécution",
"toggleError": "Erreur lors du changement",
"installSuccess": "\"{name}\" installé",
"installError": "Erreur lors de l'installation",
"saveError": "Erreur lors de la sauvegarde"
},
"templates": {
"title": "Templates",
"install": "Installer",
"installing": "Installation...",
"veilleAI": {
"name": "Veille IA",
"description": "Scrape les flux RSS de 6 sites IA (The Verge, TechCrunch, Ars Technica, MIT Tech Review, WIRED, Korben) et génère un résumé hebdomadaire."
},
"veilleTech": {
"name": "Veille Tech",
"description": "Scrape les flux RSS tech (Hacker News, DEV, Product Hunt) et crée un résumé quotidien."
},
"veilleDev": {
"name": "Veille Dev",
"description": "Scrape les flux RSS dev (JavaScript, TypeScript, React) et résume les nouvelles techs."
},
"surveillant": {
"name": "Surveillant de Notes",
"description": "Analyse les notes récentes d'un carnet et suggère des compléments, références et liens."
},
"chercheur": {
"name": "Chercheur de Sujet",
"description": "Recherche des informations approfondies sur un sujet et crée une note structurée avec références."
}
},
"runLog": {
"title": "Historique",
"noHistory": "Aucune exécution pour le moment",
"toolTrace": "{count} appels d'outils",
"step": "Étape {num}"
},
"tools": {
"title": "Outils de l'agent",
"webSearch": "Recherche web",
"webScrape": "Scraping web",
"noteSearch": "Recherche notes",
"noteRead": "Lire une note",
"noteCreate": "Créer une note",
"urlFetch": "Fetch URL",
"memorySearch": "Mémoire",
"configNeeded": "config",
"selected": "{count} sélectionné(s)",
"maxSteps": "Itérations max"
},
"metadata": {
"executions": "{count} exéc."
},
"defaultRoles": {
"scraper": "Tu es un assistant de veille. Ton rôle est de synthétiser des articles provenant de différents sites web en un résumé clair, structuré et utile en français. Utilise des titres de section, des listes à puces et des phrases concises.",
"researcher": "Tu es un chercheur rigoureux. Pour le sujet demandé, produit une note de recherche avec : contexte, points clés, débats, références. Réponds en français.",
"monitor": "Tu es un assistant analytique. Analyse les notes fournies et pour chaque thème détecté, propose : des pistes d'approfondissement, des références ou articles à lire, des connexions entre les notes. Réponds en français.",
"custom": "Tu es un assistant utile. Réponds en français."
},
"help": {
"title": "Guide des Agents",
"btnLabel": "Aide",
"close": "Fermer",
"whatIsAgent": "Qu'est-ce qu'un agent ?",
"whatIsAgentContent": "Un **agent** est un assistant IA qui travaille automatiquement pour vous. Il dispose d'**outils** (recherche web, scraping de pages, lecture de notes...) et produit une **note** avec ses résultats.\n\nImaginez-le comme un petit travailleur autonome : vous lui confiez une mission, il recherche ou extrait des informations, puis rédige une note structurée que vous pourrez lire ensuite.\n\nLes agents répondent dans votre langue (français ou anglais) en fonction de vos paramètres.",
"howToUse": "Comment utiliser un agent ?",
"howToUseContent": "1. Cliquez sur **\"Nouvel Agent\"** (ou commencez par un **Template** en bas de page)\n2. Choisissez un **type d'agent** (Chercheur, Veilleur, Surveillant, Personnalise)\n3. Donnez-lui un **nom** et remplissez les champs specifiques au type\n4. Choisissez optionnellement un **carnet cible** ou sauvegarder les resultats\n5. Selectionnez une **frequence** (Manuel = vous le lancez vous-meme)\n6. Cliquez sur **Creer**, puis appuyez sur le bouton **Executer** sur la carte de l'agent\n7. Une fois termine, une nouvelle note apparait dans votre carnet cible",
"types": "Types d'agents",
"typesContent": "### Chercheur\nRecherche le web sur un **sujet que vous definissez** et cree une note structuree avec des sources et references.\n\n- **Champs :** nom, sujet de recherche (ex : \"Dernieres avancees en intelligence artificielle\")\n- **Outils par defaut :** recherche web, scraping web, recherche de notes, creation de note\n- **Prerequis :** un fournisseur de recherche web doit etre configure (SearXNG ou Brave Search)\n\n### Veilleur (Scraper)\nScrape une **liste d'URLs** que vous spécifiez et produit un résumé de leur contenu.\n\n- **Champs :** nom, liste d'URLs (sites web ou flux RSS)\n- **Outils par défaut :** scraping web, création de note\n- **Astuce RSS :** Utilisez des URLs de flux RSS (ex: `site.com/feed`) pour scraper automatiquement les articles individuels au lieu des pages de liste\n- **Cas d'usage :** veille hebdomadaire tech, surveillance de concurrents, revue de blogs\n\n### Surveillant (Observateur de carnet)\nLit les notes d'un **carnet que vous selectionnez** et produit une analyse, des connexions et des suggestions.\n\n- **Champs :** nom, carnet source (celui a analyser)\n- **Outils par defaut :** recherche de notes, lecture de note, creation de note\n- **Cas d'usage :** trouver des connexions entre vos notes, obtenir des suggestions de lecture, detecter des themes recurrents\n\n### Personnalise\nUne toile vierge : vous ecrivez votre propre **prompt** et choisissez vos **outils**.\n\n- **Champs :** nom, description, instructions personnalisees (en mode avance)\n- **Aucun outil par defaut** — vous choisissez exactement ce dont l'agent a besoin\n- **Cas d'usage :** tout projet creatif ou specifique qui ne rentre pas dans les autres types",
"advanced": "Mode avance (Instructions IA, Iterations max)",
"advancedContent": "Cliquez sur **\"Mode avance\"** en bas du formulaire pour acceder aux reglages supplementaires.\n\n### Instructions IA\n\nCe champ vous permet de **remplacer le prompt systeme par defaut** de l'agent. Si vous le laissez vide, l'agent utilise un prompt automatique adapte a son type.\n\n**Pourquoi l'utiliser ?** Vous voulez controler exactement le comportement de l'agent. Par exemple :\n- \"Redige le resume en anglais, meme si les sources sont en francais\"\n- \"Structure la note avec les sections : Contexte, Points cles, Opinion personnelle\"\n- \"Ignore les articles de plus de 30 jours et concentre-toi sur l'actualite recente\"\n- \"Pour chaque theme detecte, propose 3 pistes d'approfondissement avec des liens\"\n\n> **Note :** Vos instructions remplacent celles par defaut, pas qu'elles s'y ajoutent.\n\n### Iterations max\n\nC'est le **nombre maximum de cycles** que l'agent peut effectuer. Un cycle = l'agent reflechit, appelle un outil, lit le resultat, puis decide de la prochaine action.\n\n- **3-5 iterations :** pour des taches simples (scraping d'une seule page)\n- **10 iterations (defaut) :** bon equilibre pour la plupart des cas\n- **15-25 iterations :** pour des recherches profondes ou l'agent doit explorer plusieurs pistes\n\n> **Attention :** Plus d'iterations = plus de temps et potentiellement plus de couts API.",
"tools": "Outils disponibles (detail complet)",
"toolsContent": "Quand le mode avance est active, vous pouvez choisir precisement quels outils l'agent peut utiliser.\n\n### Recherche web\nPermet a l'agent de **lancer des recherches sur internet** via SearXNG ou Brave Search.\n\n- **Ce que ca fait :** L'agent formule une requete, obtient des resultats de recherche, et peut ensuite scraper les pages les plus pertinentes.\n- **Quand l'activer :** Quand l'agent doit trouver des informations sur un sujet (type Chercheur ou Personnalise).\n- **Configuration requise :** SearXNG (avec format JSON active) ou une cle API Brave Search. Configurable dans **Admin > Outils Agents**.\n- **Exemple :** L'agent cherche \"React Server Components best practices 2025\" et obtient 10 resultats, puis scrape les 3 plus pertinents.\n\n### Scraping web\nPermet à l'agent d'**extraire le contenu texte d'une page web** à partir de son URL.\n\n- **Ce que ça fait :** L'agent visite une URL et récupère le texte structuré de la page (titres, paragraphes, listes). Les publicités, menus et pieds de page sont généralement filtrés.\n- **Support RSS/Atom :** Si l'URL est un flux RSS, l'outil détecte automatiquement le flux, parse les articles et scrape les 5 derniers individuellement. Utilisez des URLs de flux RSS pour un contenu beaucoup plus riche que les pages de listing.\n- **Quand l'activer :** Pour le type Veilleur (obligatoire), ou tout agent qui doit lire des pages web.\n- **Configuration :** Fonctionne sans configuration, mais une **clé API Jina Reader** améliore la qualité et supprime les limites de débit. Configurable dans **Admin > Outils Agents**.\n- **Exemple :** L'agent scrape le flux RSS de `techcrunch.com/feed/` et récupère les 5 derniers articles complets.\n\n### Recherche de notes\nPermet a l'agent de **chercher dans vos notes existantes**.\n\n- **Ce que ca fait :** L'agent effectue une recherche textuelle dans toutes vos notes (ou celles d'un carnet specifique).\n- **Quand l'activer :** Pour les agents de type Surveillant, ou tout agent qui doit croiser des informations avec vos notes.\n- **Configuration :** Aucune — fonctionne immediatement.\n- **Exemple :** L'agent cherche toutes les notes contenant \"machine learning\" pour voir ce que vous avez deja ecrit sur le sujet.\n\n### Lire une note\nPermet a l'agent de **lire le contenu complet d'une note** specifique.\n\n- **Ce que ca fait :** Apres avoir trouve une note (via Recherche de notes), l'agent peut lire son contenu integral pour l'analyser ou l'utiliser.\n- **Quand l'activer :** En complement de Recherche de notes. Activer les deux ensemble permet a l'agent de chercher PUIS lire.\n- **Configuration :** Aucune.\n- **Exemple :** L'agent trouve 5 notes sur \"productivite\", les lit toutes, et redige une synthese.\n\n### Creer une note\nPermet a l'agent d'**ecrire une nouvelle note** dans votre carnet cible.\n\n- **Ce que ca fait :** L'agent cree une note avec un titre et du contenu. C'est ainsi que les resultats arrivent dans vos carnets.\n- **Quand l'activer :** Presque toujours — sans cet outil, l'agent ne peut pas sauvegarder ses resultats. **Laissez-le active par defaut.**\n- **Configuration :** Aucune.\n- **Exemple :** L'agent cree une note \"Veille Tech - Semaine 16\" avec un resume de 5 articles.\n\n### Fetch URL\nPermet a l'agent de **telecharger le contenu brut d'une URL** (HTML, JSON, texte...).\n\n- **Ce que ca fait :** Contrairement au scraping qui extrait le texte proprement, Fetch URL recupere le contenu brut. Utile pour les API, les fichiers JSON, ou les pages non standard.\n- **Quand l'activer :** Quand l'agent doit interroger des API REST, lire des flux RSS, ou acceder a des donnees brutes.\n- **Configuration :** Aucune.\n- **Exemple :** L'agent interroge l'API GitHub pour lister les derniers commits d'un projet.\n\n### Memoire\nPermet a l'agent d'**acceder a l'historique de ses executions precedentes**.\n\n- **Ce que ca fait :** L'agent peut rechercher dans les resultats de ses runs passes. Cela lui permet de comparer, de suivre des evolutions, ou de ne pas repeter les memes informations.\n- **Quand l'activer :** Pour les agents qui s'executent regulierement et doivent maintenir une continuite entre les executions.\n- **Configuration :** Aucune.\n- **Exemple :** L'agent compare les actus de cette semaine avec celles de la semaine derniere et met en evidence les nouveautes.",
"frequency": "Frequence & planification",
"frequencyContent": "| Frequence | Comportement\n|-----------|------------\n| **Manuel** | Vous cliquez sur \"Executer\" — aucune planification automatique\n| **Toutes les heures** | S'execute toutes les heures\n| **Quotidien** | S'execute une fois par jour\n| **Hebdomadaire** | S'execute une fois par semaine\n| **Mensuel** | S'execute une fois par mois\n\n> **Astuce :** Commencez par \"Manuel\" pour tester votre agent, puis passez a une frequence automatique une fois satisfait.",
"targetNotebook": "Carnet cible",
"targetNotebookContent": "Quand un agent termine sa tache, il **cree une note**. Le **carnet cible** determine ou elle va :\n\n- **Boite de reception** (defaut) — la note va dans vos notes generales\n- **Carnet specifique** — choisissez un carnet pour garder les resultats organises\n\n> **Astuce :** Creez un carnet dedie comme \"Rapports d'agents\" pour centraliser tout le contenu automatise.",
"templates": "Templates",
"templatesContent": "Les templates sont des agents pré-configurés installables en un clic. Vous les trouvez en **bas de la page Agents**.\n\nTemplates disponibles :\n\n- **Veille IA** — revue hebdomadaire via les flux RSS de 6 sites IA (The Verge, TechCrunch, Ars Technica, MIT Tech Review, WIRED, Korben)\n- **Veille Tech** — résumé quotidien via les flux RSS de Hacker News, DEV Community, Product Hunt\n- **Veille Dev** — nouvelles technos via les flux RSS de DEV (JavaScript, TypeScript, React)\n- **Surveillant de Notes** — analyse un carnet et suggère des connexions\n- **Chercheur de Sujet** — recherche approfondie sur un sujet spécifique\n\nLes templates sont installés avec les outils adaptés à leur type. Vous pouvez les modifier après installation.",
"tips": "Conseils & depannage",
"tipsContent": "- **Commencez par un template** et personnalisez-le — c'est le moyen le plus rapide d'obtenir un agent fonctionnel\n- **Testez en \"Manuel\"** avant d'activer la planification automatique\n- **Utilisez des URLs de flux RSS** au lieu des pages de liste pour un contenu beaucoup plus riche (ex: `techcrunch.com/feed/` au lieu de `techcrunch.com/category/ai/`)\n- **Un agent \"Chercheur\" nécessite un fournisseur de recherche web** — configurez SearXNG (format JSON) ou Brave Search dans **Admin > Outils Agents**\n- **Si un agent échoue**, cliquez sur sa carte puis **Historique** pour voir le journal d'exécution et les traces d'outils\n- **Le bouton Activer/Désactiver** permet de mettre en pause un agent sans le supprimer\n- **La qualité du scraping web** s'améliore avec une clé API Jina Reader (optionnel, dans Admin > Outils Agents)\n- **Combinez \"Recherche de notes\" + \"Lire une note\"** pour que l'agent puisse chercher ET analyser le contenu de vos notes\n- **Activez \"Mémoire\"** si votre agent tourne régulièrement — il évitera de répéter les mêmes informations d'une exécution à l'autre\n- **Les agents répondent dans votre langue** — basculez entre français et anglais dans les paramètres",
"tooltips": {
"agentType": "Choisissez le type de tâche que l'agent effectuera. Chaque type a des capacités et des champs différents.",
"researchTopic": "Le sujet que l'agent recherchera sur le web. Soyez précis pour de meilleurs résultats.",
"description": "Une courte description de ce que fait cet agent. Vous aide à vous souvenir de son objectif.",
"urls": "Liste des URLs à scraper. Supporte les flux RSS — utilisez les URLs de flux pour un contenu plus riche (ex: site.com/feed).",
"sourceNotebook": "Le carnet que l'agent analysera. Il lit les notes de ce carnet pour trouver des connexions et des thèmes.",
"targetNotebook": "Où la note résultat de l'agent sera sauvegardée. Choisissez Boîte de réception ou un carnet spécifique.",
"frequency": "À quelle fréquence l'agent s'exécute automatiquement. Commencez par Manuel pour tester.",
"instructions": "Instructions personnalisées qui remplacent le prompt IA par défaut. Laissez vide pour utiliser le prompt automatique.",
"tools": "Sélectionnez les outils que l'agent peut utiliser. Chaque outil donne une capacité spécifique à l'agent.",
"maxSteps": "Nombre maximum de cycles de raisonnement. Plus d'étapes = analyse plus approfondie mais plus long."
}
}
},
"chat": {
"title": "Chat IA",
"subtitle": "Discutez avec vos notes et vos agents IA",
"newConversation": "Nouvelle discussion",
"noHistory": "Aucun historique",
"untitled": "Discussion sans titre",
"deleteConfirm": "Supprimer cette discussion ?",
"yes": "Oui",
"placeholder": "Envoyez un message à l'assistant...",
"allNotebooks": "Tous les carnets",
"inAllNotebooks": "Dans tous les carnets",
"active": "ACTIF",
"disclaimer": "L'IA peut faire des erreurs. Vérifiez les informations importantes.",
"assistantError": "Erreur assistant",
"loadError": "Erreur lors du chargement de la discussion",
"createError": "Erreur lors de la création de la conversation",
"deleteError": "Erreur lors de la suppression",
"renamed": "Discussion renommée",
"renameError": "Erreur lors du renommage",
"welcome": "Je suis à votre écoute pour synthétiser vos notes, générer de nouvelles idées ou discuter de vos carnets.",
"searching": "Recherche en cours..."
},
"labHeader": {
"title": "Le Lab",
"live": "Live",
"currentProject": "Projet Actuel",
"choose": "Choisir...",
"yourSpaces": "Vos Espaces",
"updated": "Mis à jour",
"newSpace": "Nouvel Espace de Pensée",
"new": "Nouveau",
"renamed": "Espace renommé",
"renameError": "Erreur lors du renommage",
"created": "Nouvel espace créé",
"createFailed": "Échec de la création",
"deleteSpace": "Supprimer l'espace",
"deleted": "Espace supprimé",
"deleteError": "Erreur lors de la suppression"
}
}
}