refactor(ux): consolidate BMAD skills, update design system, and clean up Prisma generated client

This commit is contained in:
Sepehr Ramezani
2026-04-19 19:21:27 +02:00
parent 5296c4da2c
commit 25529a24b8
2476 changed files with 127934 additions and 101962 deletions

View File

@@ -1,7 +1,7 @@
{
"about": {
"appDescription": "Una poderosa aplicación de notas con funciones impulsadas por IA",
"appName": "Keep Notes",
"appName": "Memento",
"buildDate": "Fecha de compilación",
"description": "Información sobre la aplicación",
"features": {
@@ -69,7 +69,9 @@
"providerOllamaOption": "🦙 Ollama (Local & Free)",
"providerOpenAIOption": "🤖 OpenAI (GPT-5, GPT-4)",
"providerCustomOption": "🔧 Custom OpenAI-Compatible",
"saved": "(Guardado)"
"saved": "(Guardado)",
"chatProvider": "Proveedor de chat",
"chatDescription": "Proveedor de IA para el asistente de chat. Usa el proveedor de etiquetas si no está configurado."
},
"aiTest": {
"description": "Prueba tus proveedores de IA para generación de etiquetas y embeddings de búsqueda semántica",
@@ -93,7 +95,22 @@
"tipDescription": "Usa el panel de pruebas de IA para diagnosticar problemas de configuración antes de probar.",
"tipTitle": "Consejo:",
"title": "Pruebas de proveedor de IA",
"vectorDimensions": "dimensiones del vector"
"vectorDimensions": "dimensiones del vector",
"tagsGenerationTest": "🏷️ Prueba de generación de etiquetas:",
"tagsStep1": "Envía una nota de ejemplo al proveedor de IA",
"tagsStep2": "Solicita 3-5 etiquetas relevantes basadas en el contenido",
"tagsStep3": "Muestra las etiquetas generadas con puntuaciones de confianza",
"tagsStep4": "Mide el tiempo de respuesta",
"embeddingsTestLabel": "🔍 Prueba de embeddings:",
"embeddingsStep1": "Envía un texto de ejemplo al proveedor de embeddings",
"embeddingsStep2": "Genera una representación vectorial (lista de números)",
"embeddingsStep3": "Muestra las dimensiones del embedding y valores de ejemplo",
"embeddingsStep4": "Verifica que el vector sea válido y esté correctamente formateado",
"tipContent": "¡Puedes usar diferentes proveedores para etiquetas y embeddings! Por ejemplo, usa Ollama (gratis) para etiquetas y OpenAI (mejor calidad) para embeddings para optimizar costos y rendimiento.",
"testSuccessToast": "¡Prueba {type} exitosa!",
"testFailedToast": "Prueba {type} fallida",
"testingType": "Probando {type}...",
"technicalDetails": "Detalles técnicos"
},
"aiTesting": "Pruebas de IA",
"security": {
@@ -105,6 +122,22 @@
"updateSuccess": "Configuración de seguridad actualizada"
},
"settings": "Configuración de administrador",
"resend": {
"title": "Resend (Recomendado)",
"description": "Envíe correos electrónicos a través de la API de Resend. Tiene prioridad sobre SMTP si está configurado.",
"apiKey": "Clave API de Resend",
"apiKeyHint": "Obtenga su clave API en resend.com. Se usa para notificaciones de agentes y restablecimiento de contraseñas.",
"saveSettings": "Guardar configuración de Resend",
"updateSuccess": "Configuración de Resend actualizada",
"updateFailed": "Error al actualizar la configuración de Resend",
"configured": "Resend está configurado y activo"
},
"email": {
"title": "Configuración de correo electrónico",
"description": "Configure el envío de correos para notificaciones de agentes y restablecimiento de contraseñas.",
"provider": "Proveedor de correo",
"saveSettings": "Guardar configuración de correo"
},
"smtp": {
"description": "Configurar el servidor de correo para restablecimiento de contraseñas.",
"forceSSL": "Forzar SSL/TLS (generalmente para puerto 465)",
@@ -153,6 +186,38 @@
"name": "Nombre",
"role": "Rol"
}
},
"chat": "AI Chat",
"lab": "The Lab",
"agents": "Agents",
"workspace": "Workspace",
"sidebar": {
"dashboard": "Panel",
"users": "Usuarios",
"aiManagement": "Gestión de IA",
"chat": "Chat IA",
"lab": "El Laboratorio (Ideas)",
"agents": "Agentes",
"settings": "Configuración"
},
"metrics": {
"vsLastPeriod": "vs período anterior"
},
"tools": {
"title": "Herramientas del Agente",
"description": "Configura herramientas externas para el uso de herramientas del agente: búsqueda web, scraping web y acceso a API.",
"searchProvider": "Proveedor de Búsqueda Web",
"searxng": "SearXNG (Autoalojado)",
"brave": "Brave Search API",
"both": "Ambos (SearXNG primario, Brave alternativo)",
"searxngUrl": "URL de SearXNG",
"braveKey": "Clave de Brave Search API",
"jinaKey": "Clave de Jina Reader API",
"jinaKeyOptional": "Opcional — funciona sin ella pero con límites de tasa",
"jinaKeyDescription": "Usada para scraping web. Funciona sin clave pero con límites de tasa.",
"saveSettings": "Guardar Configuración de Herramientas",
"updateSuccess": "Configuración de herramientas actualizada exitosamente",
"updateFailed": "Error al actualizar la configuración de herramientas"
}
},
"ai": {
@@ -201,7 +266,8 @@
"languageDetected": "Idioma detectado",
"notebookSummary": {
"regenerate": "Regenerar resumen",
"regenerating": "Regenerando resumen..."
"regenerating": "Regenerando resumen...",
"exportPDF": "Exportar como PDF"
},
"original": "Original",
"poweredByAI": "Funciona con IA",
@@ -229,7 +295,21 @@
"transformError": "Error durante la transformación",
"transformMarkdown": "Transformar a Markdown",
"transformSuccess": "¡Texto transformado a Markdown exitosamente!",
"transforming": "Transformando..."
"transforming": "Transformando...",
"clarifyDesc": "Hacer el texto más claro y comprensible",
"shortenDesc": "Resumir el texto y ir al grano",
"improve": "Mejorar escritura",
"improveDesc": "Corregir gramática y mejorar el estilo",
"toMarkdown": "Formato Markdown",
"toMarkdownDesc": "Agregar encabezados, viñetas y estructurar el texto",
"translate": "Traducir",
"translateDesc": "Cambiar el idioma del texto",
"translateBack": "Atrás",
"translationApplied": "Traducción aplicada",
"translationFailed": "Traducción fallida",
"undo": "Deshacer IA",
"undoAI": "Deshacer transformación de IA",
"undoApplied": "Texto original restaurado"
},
"aiSettings": {
"description": "Configura tus funciones y preferencias impulsadas por IA",
@@ -255,7 +335,11 @@
},
"appearance": {
"description": "Personaliza el aspecto de la aplicación",
"title": "Apariencia"
"title": "Apariencia",
"notesViewDescription": "Elige cómo se muestran las notas en el inicio y en los cuadernos.",
"notesViewLabel": "Vista de notas",
"notesViewTabs": "Pestañas (estilo OneNote)",
"notesViewMasonry": "Tarjetas (cuadrícula)"
},
"auth": {
"backToLogin": "Volver al inicio de sesión",
@@ -509,30 +593,9 @@
"clearAll": "Limpiar todo",
"confirmDelete": "¿Estás seguro de que quieres eliminar esta etiqueta?",
"count": "{count} etiquetas",
"createLabel": "Crear etiqueta",
"delete": "Eliminar",
"deleteTooltip": "Eliminar etiqueta",
"editLabels": "Editar etiquetas",
"editLabelsDescription": "Crea, edita colores o elimina etiquetas.",
"filter": "Filtrar por etiqueta",
"filterByLabel": "Filtrar por etiqueta",
"labelColor": "Color de etiqueta",
"labelName": "Nombre de etiqueta",
"loading": "Cargando...",
"manage": "Administrar etiquetas",
"manageLabels": "Administrar etiquetas",
"manageLabelsDescription": "Agrega o elimina etiquetas para esta nota. Haz clic en una etiqueta para cambiar su color.",
"manageTooltip": "Administrar etiquetas",
"namePlaceholder": "Ingresa el nombre de la etiqueta",
"newLabelPlaceholder": "Crear nueva etiqueta",
"noLabels": "Sin etiquetas",
"noLabelsFound": "No se encontraron etiquetas.",
"notebookRequired": "⚠️ Las etiquetas solo están disponibles en cuadernos. Mueve esta nota a un cuaderno primero.",
"selectedLabels": "Etiquetas seleccionadas",
"showLess": "Mostrar menos",
"showMore": "Mostrar más",
"tagAdded": "Etiqueta \"{tag}\" agregada",
"title": "Etiquetas"
"confirmDeleteShort": "¿Confirmar?",
"labelRemoved": "Etiqueta \"{label}\" eliminada"
},
"memoryEcho": {
"clickToView": "Haz clic para ver",
@@ -606,7 +669,8 @@
"thanksFeedback": "¡Gracias por tus comentarios!",
"thanksFeedbackImproving": "¡Gracias! Usaremos esto para mejorar.",
"title": "Noté algo...",
"viewConnection": "Ver conexión"
"viewConnection": "Ver conexión",
"match": "{percentage}% coincidencia"
},
"nav": {
"accountSettings": "Configuración de cuenta",
@@ -641,7 +705,10 @@
"supportDevelopment": "Apoyar el desarrollo de Memento ☕",
"trash": "Papelera",
"userManagement": "Gestión de usuarios",
"workspace": "Espacio de trabajo"
"workspace": "Espacio de trabajo",
"chat": "Chat IA",
"lab": "El Laboratorio",
"agents": "Agentes"
},
"notebook": {
"cancel": "Cancelar",
@@ -662,7 +729,16 @@
"selectIcon": "Icono",
"summary": "Resumen del cuaderno",
"summaryDescription": "Genera un resumen impulsado por IA de todas las notas en este cuaderno.",
"summaryError": "Error al generar el resumen"
"summaryError": "Error al generar el resumen",
"namePlaceholder": "ej. Estrategia Marketing Q4",
"myNotebook": "Mi cuaderno",
"saving": "Guardando...",
"pdfTitle": "Resumen — {name}",
"pdfNotesLabel": "Notas:",
"pdfGeneratedOn": "Generado el:",
"confidence": "confianza",
"savingReminder": "Error al guardar el recordatorio",
"removingReminder": "Error al eliminar el recordatorio"
},
"notebookSuggestion": {
"description": "Esta nota parece pertenecer a este cuaderno",
@@ -671,7 +747,7 @@
"generalNotes": "Notas generales",
"move": "Mover",
"moveToNotebook": "Mover al cuaderno",
"title": "¿Mover a {icon} {name}?"
"title": "¿Mover a {name}?"
},
"notebooks": {
"allNotebooks": "Todos los cuadernos",
@@ -779,7 +855,16 @@
"unpinned": "Desfijadas",
"untitled": "Sin título",
"uploadFailed": "Error al cargar {filename}",
"view": "Ver nota"
"view": "Ver nota",
"emptyStateTabs": "Sin notas en esta vista. Usa \"Nueva nota\" en la barra lateral (sugerencias de título IA en el compositor).",
"viewCards": "Vista tarjetas",
"viewCardsTooltip": "Cuadrícula de tarjetas con reorganización por arrastrar y soltar",
"viewTabs": "Vista lista",
"viewTabsTooltip": "Pestañas arriba, nota abajo — arrastra pestañas para reordenar",
"viewModeGroup": "Modo de visualización de notas",
"reorderTabs": "Reordenar pestaña",
"modified": "Modificada",
"created": "Creada"
},
"pagination": {
"next": "→",
@@ -904,7 +989,18 @@
"themeLight": "Claro",
"themeSystem": "Sistema",
"title": "Configuración",
"version": "Versión"
"version": "Versión",
"cleanupDone": "{created} etiqueta(s) sincronizada(s), {deleted} huérfana(s) eliminada(s)",
"cleanupNothing": "Ninguna acción necesaria — las etiquetas ya coinciden con tus notas",
"cleanupWithErrors": "algunas operaciones fallaron",
"cleanupError": "No se pudieron limpiar las etiquetas",
"indexingComplete": "Indexación completa: {count} nota(s) procesada(s)",
"indexingError": "Error durante la indexación",
"emailNotifications": "Notificaciones por correo",
"emailNotificationsDesc": "Recibir notificaciones importantes por correo",
"desktopNotifications": "Notificaciones de escritorio",
"desktopNotificationsDesc": "Recibir notificaciones en el navegador",
"notificationsDesc": "Gestiona tus preferencias de notificaciones"
},
"sidebar": {
"archive": "Archive",
@@ -912,7 +1008,10 @@
"labels": "Labels",
"notes": "Notes",
"reminders": "Reminders",
"trash": "Trash"
"trash": "Trash",
"newNoteTabs": "Nueva nota",
"newNoteTabsHint": "Crear nota en este cuaderno",
"noLabelsInNotebook": "Sin etiquetas en este cuaderno"
},
"support": {
"aiApiCosts": "Costos de API de IA:",
@@ -982,10 +1081,19 @@
"thanksFeedbackImproving": "¡Gracias! Usaremos esto para mejorar."
},
"trash": {
"deletePermanently": "Eliminar permanentemente",
"title": "Papelera",
"empty": "La papelera está vacía",
"emptyDescription": "Las notas eliminadas aparecerán aquí",
"restore": "Restaurar",
"title": "Papelera"
"deletePermanently": "Eliminar permanentemente",
"noteTrashed": "Nota movida a la papelera",
"noteRestored": "Nota restaurada",
"notePermanentlyDeleted": "Nota eliminada permanentemente",
"emptyTrash": "Vaciar papelera",
"emptyTrashConfirm": "¿Eliminar permanentemente todas las notas de la papelera?",
"emptyTrashSuccess": "Papelera vaciada",
"permanentDelete": "Eliminar permanentemente",
"permanentDeleteConfirm": "Esta nota se eliminará permanentemente. Esta acción no se puede deshacer."
},
"ui": {
"close": "Cerrar",
@@ -998,7 +1106,7 @@
"description": "Gestiona tus claves API y configura herramientas externas",
"whatIsMcp": {
"title": "¿Qué es MCP?",
"description": "El Model Context Protocol (MCP) es un protocolo abierto que permite a los modelos de IA interactuar de forma segura con herramientas y fuentes de datos externas. Con MCP, puedes conectar herramientas como Claude Code, Cursor o N8N a tu instancia de Keep Notes para leer, crear y organizar tus notas mediante programación.",
"description": "El Model Context Protocol (MCP) es un protocolo abierto que permite a los modelos de IA interactuar de forma segura con herramientas y fuentes de datos externas. Con MCP, puedes conectar herramientas como Claude Code, Cursor o N8N a tu instancia de Memento para leer, crear y organizar tus notas mediante programación.",
"learnMore": "Más información sobre MCP"
},
"serverStatus": {
@@ -1052,5 +1160,241 @@
"description": "Usa estas credenciales en tu nodo MCP de N8N:"
}
}
},
"agents": {
"title": "Agentes",
"subtitle": "Automatiza tus tareas de monitoreo e investigación",
"newAgent": "Nuevo agente",
"myAgents": "Mis agentes",
"noAgents": "Sin agentes",
"noAgentsDescription": "Crea tu primer agente o instala una plantilla abajo para automatizar tus tareas de monitoreo.",
"types": {
"scraper": "Monitor",
"researcher": "Investigador",
"monitor": "Observador",
"custom": "Personalizado"
},
"typeDescriptions": {
"scraper": "Extrae contenido de múltiples sitios y crea un resumen",
"researcher": "Busca información sobre un tema",
"monitor": "Observa un cuaderno y analiza notas",
"custom": "Agente libre con tu propio prompt"
},
"form": {
"agentType": "Tipo de agente",
"name": "Nombre",
"namePlaceholder": "ej. Vigilancia IA del martes",
"description": "Descripción (opcional)",
"descriptionPlaceholder": "Resumen semanal de noticias de IA",
"urlsLabel": "URLs a extraer",
"urlsOptional": "(opcional)",
"sourceNotebook": "Cuaderno a observar",
"selectNotebook": "Seleccionar un cuaderno...",
"targetNotebook": "Cuaderno de destino",
"inbox": "Bandeja de entrada",
"instructions": "Instrucciones de IA",
"instructionsPlaceholder": "Describe el comportamiento del agente...",
"frequency": "Frecuencia",
"cancel": "Cancelar",
"saving": "Guardando...",
"save": "Guardar",
"create": "Crear agente",
"editTitle": "Editar agente",
"createTitle": "Nuevo agente",
"nameRequired": "El nombre es obligatorio",
"addUrl": "Agregar URL",
"advancedMode": "Modo avanzado",
"instructionsHint": "reemplaza el prompt automático",
"researchTopic": "Tema de investigación",
"researchTopicPlaceholder": "ej: Últimos avances en inteligencia artificial",
"notifyEmail": "Notificación por correo",
"notifyEmailHint": "Recibe un correo con los resultados del agente después de cada ejecución"
},
"frequencies": {
"manual": "Manual",
"hourly": "Cada hora",
"daily": "Diario",
"weekly": "Semanal",
"monthly": "Mensual"
},
"status": {
"success": "Exitoso",
"failure": "Fallido",
"running": "En ejecución",
"pending": "Pendiente"
},
"actions": {
"edit": "Editar",
"run": "Ejecutar",
"delete": "Eliminar",
"deleteConfirm": "¿Eliminar el agente \"{name}\"?",
"toggleOn": "Agente activado",
"toggleOff": "Agente desactivado"
},
"toasts": {
"created": "Agente creado",
"updated": "Agente actualizado",
"deleted": "\"{name}\" eliminado",
"deleteError": "Error al eliminar",
"runSuccess": "\"{name}\" ejecutado exitosamente",
"runError": "Error: {error}",
"runFailed": "Ejecución fallida",
"runGenericError": "Error durante la ejecución",
"toggleError": "Error al alternar el agente",
"installSuccess": "\"{name}\" instalado",
"installError": "Error durante la instalación",
"saveError": "Error al guardar"
},
"templates": {
"title": "Plantillas",
"install": "Instalar",
"installing": "Instalando...",
"veilleAI": {
"name": "Vigilancia IA",
"description": "Extrae contenido de 5 sitios especializados en IA y genera un resumen semanal."
},
"veilleTech": {
"name": "Vigilancia Tech",
"description": "Extrae contenido de los principales sitios tecnológicos y crea un resumen de noticias."
},
"veilleDev": {
"name": "Vigilancia Dev",
"description": "Extrae contenido de sitios de desarrollo y resume nuevas tecnologías y frameworks."
},
"surveillant": {
"name": "Observador de notas",
"description": "Analiza notas recientes de un cuaderno y sugiere complementos, referencias y enlaces."
},
"chercheur": {
"name": "Investigador de temas",
"description": "Busca información profunda sobre un tema y crea una nota estructurada con referencias."
}
},
"runLog": {
"title": "Historial",
"noHistory": "Aún no hay ejecuciones",
"toolTrace": "{count} llamadas de herramientas",
"step": "Paso {num}"
},
"tools": {
"title": "Herramientas del Agente",
"webSearch": "Búsqueda Web",
"webScrape": "Scraping Web",
"noteSearch": "Búsqueda de Notas",
"noteRead": "Leer Nota",
"noteCreate": "Crear Nota",
"urlFetch": "Obtener URL",
"memorySearch": "Memoria",
"configNeeded": "configuración",
"selected": "{count} seleccionadas",
"maxSteps": "Iteraciones máximas"
},
"metadata": {
"executions": "{count} ejec."
},
"defaultRoles": {
"scraper": "Eres un asistente de monitoreo. Sintetiza artículos de diferentes sitios web en un resumen claro y estructurado.",
"researcher": "Eres un investigador riguroso. Para el tema solicitado, produce una nota de investigación con contexto, puntos clave, debates y referencias.",
"monitor": "Eres un asistente analítico. Analiza las notas proporcionadas y sugiere pistas, referencias y conexiones entre notas.",
"custom": "Eres un asistente útil."
},
"help": {
"title": "Guía de Agentes",
"btnLabel": "Ayuda",
"close": "Cerrar",
"whatIsAgent": "¿Qué es un agente?",
"whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, web scraping, note reading...) and produces a **note** with its results.\n\nThink of it as a small autonomous worker: you give it a mission, it researches or scrapes information, then writes a structured note you can read later.",
"howToUse": "¿Cómo usar un agente?",
"howToUseContent": "1. Click **\"New Agent\"** (or start from a **Template** at the bottom of the page)\n2. Choose an **agent type** (Researcher, Monitor, Observer, Custom)\n3. Give it a **name** and fill in the type-specific fields\n4. Optionally pick a **target notebook** where results will be saved\n5. Choose a **frequency** (Manual = you trigger it yourself)\n6. Click **Create**, then hit the **Run** button on the agent card\n7. Once finished, a new note appears in your target notebook",
"types": "Tipos de agentes",
"typesContent": "### Researcher\nSearches the web on a **topic you define** and creates a structured note with sources and references.\n\n- **Fields:** name, research topic (e.g. \"Latest advances in quantum computing\")\n- **Default tools:** web search, web scraping, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor (Scraper)\nScrapes a **list of URLs** you specify and produces a summary of their content.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** web scraping, note creation\n- **Use case:** weekly tech watch, competitor monitoring, blog roundups\n\n### Observer (Notebook Monitor)\nReads notes from a **notebook you select** and produces analysis, connections, and suggestions.\n\n- **Fields:** name, source notebook (the one to analyze)\n- **Default tools:** note search, note read, note creation\n- **Use case:** find connections between your notes, get reading suggestions, detect recurring themes\n\n### Custom\nA blank canvas: you write your own **prompt** and pick your own **tools**.\n\n- **Fields:** name, description, custom instructions (in Advanced mode)\n- **No default tools** — you choose exactly what the agent needs\n- **Use case:** anything creative or specific that doesn't fit the other types",
"advanced": "Modo avanzado (Instrucciones IA, Iteraciones máx.)",
"advancedContent": "Click **\"Advanced mode\"** at the bottom of the form to access additional settings.\n\n### AI Instructions\n\nThis field lets you **replace the default system prompt** for the agent. If left empty, the agent uses an automatic prompt adapted to its type.\n\n**Why use it?** You want to control exactly how the agent behaves. For example:\n- \"Write the summary in English, even if sources are in French\"\n- \"Structure the note with sections: Context, Key Points, Personal Opinion\"\n- \"Ignore articles older than 30 days and focus on recent news\"\n- \"For each detected theme, suggest 3 follow-up leads with links\"\n\n> **Note:** Your instructions replace the defaults, they don't add to them.\n\n### Max iterations\n\nThis is the **maximum number of cycles** the agent can perform. One cycle = the agent thinks, calls a tool, reads the result, then decides the next action.\n\n- **3-5 iterations:** for simple tasks (scraping a single page)\n- **10 iterations (default):** good balance for most cases\n- **15-25 iterations:** for deep research where the agent needs to explore multiple leads\n\n> **Warning:** More iterations = more time and potentially higher API costs.",
"tools": "Herramientas disponibles (detalle)",
"toolsContent": "When advanced mode is enabled, you can choose exactly which tools the agent can use.\n\n### Web Search\nAllows the agent to **search the internet** via SearXNG or Brave Search.\n\n- **What it does:** The agent formulates a query, gets search results, and can then scrape the most relevant pages.\n- **When to enable:** When the agent needs to find information on a topic (Researcher or Custom type).\n- **Configuration required:** SearXNG (with JSON format enabled) or a Brave Search API key. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent searches \"React Server Components best practices 2025\", gets 10 results, then scrapes the top 3.\n\n### Web Scrape\nAllows the agent to **extract text content from a web page** given its URL.\n\n- **What it does:** The agent visits a URL and retrieves the structured text (headings, paragraphs, lists). Ads, menus and footers are typically filtered out.\n- **When to enable:** For the Monitor type (mandatory), or any agent that needs to read web pages.\n- **Configuration:** Works out of the box, but a **Jina Reader API key** improves quality and removes rate limits. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent scrapes 5 tech blogs and produces a synthesized summary.\n\n### Note Search\nAllows the agent to **search your existing notes**.\n\n- **What it does:** The agent performs a text search across all your notes (or a specific notebook).\n- **When to enable:** For Observer-type agents, or any agent that needs to cross-reference information with your notes.\n- **Configuration:** None — works immediately.\n- **Example:** The agent searches all notes containing \"machine learning\" to see what you've already written on the topic.\n\n### Read Note\nAllows the agent to **read the full content of a specific note**.\n\n- **What it does:** After finding a note (via Note Search), the agent can read its entire content to analyze or use it.\n- **When to enable:** As a companion to Note Search. Enable both together so the agent can search AND read.\n- **Configuration:** None.\n- **Example:** The agent finds 5 notes about \"productivity\", reads them all, and writes a synthesis.\n\n### Create Note\nAllows the agent to **write a new note** in your target notebook.\n\n- **What it does:** The agent creates a note with a title and content. This is how results end up in your notebooks.\n- **When to enable:** Almost always — without this tool, the agent cannot save its results. **Leave it enabled by default.**\n- **Configuration:** None.\n- **Example:** The agent creates a note \"Tech Watch - Week 16\" with a summary of 5 articles.\n\n### Fetch URL\nAllows the agent to **download the raw content of a URL** (HTML, JSON, text...).\n\n- **What it does:** Unlike scraping which extracts clean text, Fetch URL retrieves raw content. Useful for APIs, JSON files, or non-standard pages.\n- **When to enable:** When the agent needs to query REST APIs, read RSS feeds, or access raw data.\n- **Configuration:** None.\n- **Example:** The agent queries the GitHub API to list the latest commits of a project.\n\n### Memory\nAllows the agent to **access its previous execution history**.\n\n- **What it does:** The agent can search through results from past runs. This lets it compare, track changes, or avoid repeating the same information.\n- **When to enable:** For agents that run regularly and need to maintain continuity between executions.\n- **Configuration:** None.\n- **Example:** The agent compares this week's news with last week's and highlights what's new.",
"frequency": "Frecuencia y programación",
"frequencyContent": "| Frequency | Behavior\n|-----------|----------\n| **Manual** | You click \"Run\" yourself — no automatic scheduling\n| **Hourly** | Runs every hour\n| **Daily** | Runs once per day\n| **Weekly** | Runs once per week\n| **Monthly** | Runs once per month\n\n> **Tip:** Start with \"Manual\" to test your agent, then switch to an automatic frequency once you're satisfied with the results.",
"targetNotebook": "Libreta destino",
"targetNotebookContent": "When an agent finishes its task, it **creates a note**. The **target notebook** determines where that note goes:\n\n- **Inbox** (default) — the note goes to your general notes\n- **Specific notebook** — choose a notebook to keep agent results organized\n\n> **Tip:** Create a dedicated notebook like \"Agent Reports\" to keep all automated content in one place.",
"templates": "Plantillas",
"templatesContent": "Templates are pre-configured agents ready to install in one click. You'll find them at the **bottom of the Agents page**.\n\nAvailable templates include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.",
"tips": "Consejos y solución de problemas",
"tipsContent": "- **Start with a template** and customize it — it's the fastest way to get a working agent\n- **Test with \"Manual\"** frequency before enabling automatic scheduling\n- **A \"Researcher\" agent requires a web search provider** — configure SearXNG (JSON format) or Brave Search in **Admin > Agent Tools**\n- **If an agent fails**, click on its card then **History** to see the execution log and tool traces\n- **The \"Enabled/Disabled\" toggle** lets you pause an agent without deleting it\n- **Web scraping quality** improves with a Jina Reader API key (optional, in Admin > Agent Tools)\n- **Combine \"Note Search\" + \"Read Note\"** so the agent can find AND analyze your notes' content\n- **Enable \"Memory\"** if your agent runs regularly — it will avoid repeating the same information across runs",
"tooltips": {
"agentType": "Elija el tipo de tarea que realizará el agente. Cada tipo tiene diferentes capacidades y campos.",
"researchTopic": "El tema que el agente investigará en la web. Sea específico para mejores resultados.",
"description": "Una breve descripción de lo que hace este agente. Le ayuda a recordar su propósito.",
"urls": "Lista de sitios web a scrapear. El agente visitará cada URL y extraerá el contenido.",
"sourceNotebook": "El cuaderno que el agente analizará. Lee notas de este cuaderno para encontrar conexiones y temas.",
"targetNotebook": "Donde se guardará la nota de resultado del agente. Elija Bandeja de entrada o un cuaderno específico.",
"frequency": "Con qué frecuencia se ejecuta el agente automáticamente. Comience con Manual para probar.",
"instructions": "Instrucciones personalizadas que reemplazan el prompt de IA predeterminado. Deje vacío para usar el automático.",
"tools": "Seleccione qué herramientas puede usar el agente. Cada herramienta da una capacidad específica.",
"maxSteps": "Número máximo de ciclos de razonamiento. Más pasos = análisis más profundo pero más lento."
}
}
},
"chat": {
"title": "Chat IA",
"subtitle": "Chatea con tus notas y agentes de IA",
"newConversation": "Nueva conversación",
"noHistory": "Sin historial",
"untitled": "Conversación sin título",
"deleteConfirm": "¿Eliminar esta conversación?",
"yes": "Sí",
"placeholder": "Enviar un mensaje al asistente...",
"allNotebooks": "Todos los cuadernos",
"inAllNotebooks": "En todos los cuadernos",
"active": "ACTIVO",
"disclaimer": "La IA puede cometer errores. Verifica la información importante.",
"assistantError": "Error del asistente",
"loadError": "Error al cargar la conversación",
"createError": "Error al crear la conversación",
"deleteError": "Error al eliminar",
"renamed": "Conversación renombrada",
"renameError": "Error al renombrar",
"welcome": "Estoy aquí para ayudarte a sintetizar tus notas, generar nuevas ideas o discutir tus cuadernos.",
"searching": "Buscando...",
"noNotesFoundForContext": "No se encontraron notas relevantes para esta pregunta. Responde con tu conocimiento general."
},
"labHeader": {
"title": "El Laboratorio",
"live": "En vivo",
"currentProject": "Proyecto actual",
"choose": "Elegir...",
"yourSpaces": "Tus espacios",
"updated": "Actualizado",
"newSpace": "Nuevo espacio de trabajo",
"new": "Nuevo",
"renamed": "Espacio renombrado",
"renameError": "Error al renombrar",
"created": "Nuevo espacio creado",
"createFailed": "Error al crear",
"deleteSpace": "Eliminar espacio",
"deleted": "Espacio eliminado",
"deleteError": "Error al eliminar"
},
"notification": {
"shared": "compartió \"{title}\"",
"untitled": "Sin título",
"notifications": "Notificaciones",
"accept": "Accept",
"accepted": "Share accepted",
"decline": "Decline",
"declined": "Uso compartido rechazado",
"noNotifications": "No new notifications",
"removed": "Nota eliminada de la lista"
},
"reminders": {
"title": "Recordatorios",
"empty": "Sin recordatorios",
"emptyDescription": "Agrega un recordatorio a una nota para encontrarlo aquí.",
"upcoming": "Próximos",
"overdue": "Vencidos",
"done": "Completados",
"markDone": "Marcar como completado",
"markUndone": "Marcar como no completado",
"todayAt": "Hoy a las {time}",
"tomorrowAt": "Mañana a las {time}"
}
}