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": "A powerful note-taking application with AI-powered features",
"appName": "Keep Notes",
"appName": "Memento",
"buildDate": "Build Date",
"description": "Information about the application",
"features": {
@@ -69,7 +69,9 @@
"providerOllamaOption": "🦙 Ollama (Local & Free)",
"providerOpenAIOption": "🤖 OpenAI (GPT-5, GPT-4)",
"providerCustomOption": "🔧 Custom OpenAI-Compatible",
"saved": "(Salvato)"
"saved": "(Salvato)",
"chatProvider": "Provider chat",
"chatDescription": "Provider IA per l'assistente chat. Usa il provider tag se non configurato."
},
"aiTest": {
"description": "Test your AI providers for tag generation and semantic search embeddings",
@@ -93,7 +95,22 @@
"tipDescription": "Use the AI Test Panel to diagnose configuration issues before testing.",
"tipTitle": "Tip:",
"title": "AI Provider Testing",
"vectorDimensions": "vector dimensions"
"vectorDimensions": "vector dimensions",
"tagsGenerationTest": "🏷️ Test generazione tag:",
"tagsStep1": "Invia una nota di esempio al provider IA",
"tagsStep2": "Richiede 3-5 tag pertinenti basati sul contenuto",
"tagsStep3": "Mostra i tag generati con punteggi di confidenza",
"tagsStep4": "Misura il tempo di risposta",
"embeddingsTestLabel": "🔍 Test embeddings:",
"embeddingsStep1": "Invia un testo di esempio al provider di embeddings",
"embeddingsStep2": "Genera una rappresentazione vettoriale (lista di numeri)",
"embeddingsStep3": "Mostra le dimensioni dell'embedding e valori di esempio",
"embeddingsStep4": "Verifica che il vettore sia valido e formattato correttamente",
"tipContent": "Puoi usare provider diversi per tag ed embeddings! Ad esempio, usa Ollama (gratuito) per i tag e OpenAI (migliore qualità) per gli embeddings per ottimizzare costi e prestazioni.",
"testSuccessToast": "Test {type} riuscito!",
"testFailedToast": "Test {type} fallito",
"testingType": "Test di {type} in corso...",
"technicalDetails": "Dettagli tecnici"
},
"aiTesting": "AI Testing",
"security": {
@@ -105,6 +122,22 @@
"updateSuccess": "Security Settings updated"
},
"settings": "Admin Settings",
"resend": {
"title": "Resend (Consigliato)",
"description": "Invia email tramite l'API Resend. Ha priorità su SMTP se configurato.",
"apiKey": "Chiave API Resend",
"apiKeyHint": "Ottieni la tua chiave API da resend.com. Utilizzata per le notifiche degli agent e il ripristino della password.",
"saveSettings": "Salva impostazioni Resend",
"updateSuccess": "Impostazioni Resend aggiornate",
"updateFailed": "Aggiornamento impostazioni Resend fallito",
"configured": "Resend è configurato e attivo"
},
"email": {
"title": "Configurazione Email",
"description": "Configura l'invio di email per le notifiche degli agent e il ripristino della password.",
"provider": "Provider Email",
"saveSettings": "Salva impostazioni email"
},
"smtp": {
"description": "Configure email server for password resets.",
"forceSSL": "Force SSL/TLS (usually for port 465)",
@@ -153,6 +186,38 @@
"name": "Name",
"role": "Role"
}
},
"chat": "AI Chat",
"lab": "The Lab",
"agents": "Agents",
"workspace": "Workspace",
"sidebar": {
"dashboard": "Dashboard",
"users": "Utenti",
"aiManagement": "Gestione IA",
"chat": "Chat IA",
"lab": "Il Lab (Idee)",
"agents": "Agenti",
"settings": "Impostazioni"
},
"metrics": {
"vsLastPeriod": "vs periodo precedente"
},
"tools": {
"title": "Strumenti Agente",
"description": "Configura strumenti esterni per l'uso da parte degli agenti: ricerca web, scraping web e accesso API.",
"searchProvider": "Provider Ricerca Web",
"searxng": "SearXNG (Self-hosted)",
"brave": "Brave Search API",
"both": "Entrambi (SearXNG primario, Brave fallback)",
"searxngUrl": "URL SearXNG",
"braveKey": "Chiave Brave Search API",
"jinaKey": "Chiave Jina Reader API",
"jinaKeyOptional": "Opzionale — funziona senza ma con limiti di velocità",
"jinaKeyDescription": "Utilizzato per lo scraping web. Funziona senza chiave ma con limiti di velocità.",
"saveSettings": "Salva Impostazioni Strumenti",
"updateSuccess": "Impostazioni strumenti aggiornate con successo",
"updateFailed": "Impossibile aggiornare le impostazioni strumenti"
}
},
"ai": {
@@ -172,7 +237,8 @@
"notes": "notes",
"title": "Suggerimenti Etichette",
"typeContent": "Type content to get label suggestions...",
"typeForSuggestions": "Digita per suggerimenti"
"typeForSuggestions": "Digita per suggerimenti",
"notesCount": "{count} note"
},
"batchOrganization": {
"analyzing": "Analyzing your notes...",
@@ -200,7 +266,8 @@
"languageDetected": "Language detected",
"notebookSummary": {
"regenerate": "Rigenera Riassunto",
"regenerating": "Rigenerazione riassunto..."
"regenerating": "Rigenerazione riassunto...",
"exportPDF": "Esporta come PDF"
},
"original": "Original",
"poweredByAI": "Powered by AI",
@@ -228,7 +295,21 @@
"transformError": "Error during transformation",
"transformMarkdown": "Transform to Markdown",
"transformSuccess": "Text transformed to Markdown successfully!",
"transforming": "Transforming..."
"transforming": "Transforming...",
"clarifyDesc": "Rendere il testo più chiaro e comprensibile",
"shortenDesc": "Riassumere il testo e andare al sodo",
"improve": "Migliora scrittura",
"improveDesc": "Correggi grammatica e migliora lo stile",
"toMarkdown": "Formatta come Markdown",
"toMarkdownDesc": "Aggiungi titoli, elenchi e struttura il testo",
"translate": "Traduci",
"translateDesc": "Cambia la lingua del testo",
"translateBack": "Indietro",
"translationApplied": "Traduzione applicata",
"translationFailed": "Traduzione fallita",
"undo": "Annulla IA",
"undoAI": "Annulla trasformazione IA",
"undoApplied": "Testo originale ripristinato"
},
"aiSettings": {
"description": "Configura le funzionalità AI e le preferenze",
@@ -254,7 +335,11 @@
},
"appearance": {
"description": "Personalizza l'aspetto dell'app",
"title": "Aspetto"
"title": "Aspetto",
"notesViewDescription": "Scegli come mostrare le note nella home e nei quaderni.",
"notesViewLabel": "Vista note",
"notesViewTabs": "Schede (stile OneNote)",
"notesViewMasonry": "Schede (griglia)"
},
"auth": {
"backToLogin": "Torna al login",
@@ -558,30 +643,9 @@
"clearAll": "Clear all",
"confirmDelete": "Are you sure you want to delete this label?",
"count": "{count} etichette",
"createLabel": "Create label",
"delete": "Delete",
"deleteTooltip": "Delete label",
"editLabels": "Edit Labels",
"editLabelsDescription": "Create, edit colors, or delete labels.",
"filter": "Filter by Label",
"filterByLabel": "Filter by label",
"labelColor": "Label color",
"labelName": "Label name",
"loading": "Loading...",
"manage": "Manage Labels",
"manageLabels": "Manage labels",
"manageLabelsDescription": "Add or remove labels for this note. Click on a label to change its color.",
"manageTooltip": "Manage Labels",
"namePlaceholder": "Enter label name",
"newLabelPlaceholder": "Create new label",
"noLabels": "Nessuna etichetta",
"noLabelsFound": "No labels found.",
"notebookRequired": "⚠️ Labels are only available in notebooks. Move this note to a notebook first.",
"selectedLabels": "Selected Labels",
"showLess": "Show less",
"showMore": "Show more",
"tagAdded": "Tag \"{tag}\" added",
"title": "Labels"
"confirmDeleteShort": "Confermare?",
"labelRemoved": "Etichetta \"{label}\" rimossa"
},
"memoryEcho": {
"clickToView": "Clicca per visualizzare",
@@ -655,7 +719,8 @@
"thanksFeedback": "Thanks for your feedback!",
"thanksFeedbackImproving": "Thanks! We'll use this to improve.",
"title": "I noticed something...",
"viewConnection": "View Connection"
"viewConnection": "View Connection",
"match": "{percentage}% corrispondenza"
},
"nav": {
"accountSettings": "Impostazioni account",
@@ -690,7 +755,10 @@
"supportDevelopment": "Supporta lo sviluppo di Memento ☕",
"trash": "Cestino",
"userManagement": "Gestione utenti",
"workspace": "Area di lavoro"
"workspace": "Area di lavoro",
"chat": "Chat IA",
"lab": "Il Lab",
"agents": "Agenti"
},
"notebook": {
"cancel": "Annulla",
@@ -711,7 +779,16 @@
"selectIcon": "Icona",
"summary": "Riepilogo notebook",
"summaryDescription": "Genera un riepilogo basato su IA di tutte le note in questo notebook.",
"summaryError": "Errore nella generazione del riepilogo"
"summaryError": "Errore nella generazione del riepilogo",
"namePlaceholder": "es. Strategia Marketing Q4",
"myNotebook": "Il mio quaderno",
"saving": "Salvataggio...",
"pdfTitle": "Riepilogo — {name}",
"pdfNotesLabel": "Note:",
"pdfGeneratedOn": "Generato il:",
"confidence": "confidenza",
"savingReminder": "Errore nel salvataggio del promemoria",
"removingReminder": "Errore nella rimozione del promemoria"
},
"notebookSuggestion": {
"description": "Questa nota sembra appartenere a questo notebook",
@@ -720,7 +797,7 @@
"generalNotes": "Note generali",
"move": "Sposta",
"moveToNotebook": "Sposta nel notebook",
"title": "Spostare in {icon} {name}?"
"title": "Spostare in {name}?"
},
"notebooks": {
"allNotebooks": "Tutti i notebook",
@@ -828,7 +905,16 @@
"unpinned": "Non fissato",
"untitled": "Senza titolo",
"uploadFailed": "Caricamento non riuscito: {filename}",
"view": "Visualizza nota"
"view": "Visualizza nota",
"emptyStateTabs": "Nessuna nota in questa vista. Usa \"Nuova nota\" nella barra laterale (suggerimenti titolo IA nel compositore).",
"viewCards": "Vista schede",
"viewCardsTooltip": "Griglia di schede con riordino tramite trascinamento",
"viewTabs": "Vista elenco",
"viewTabsTooltip": "Schede in alto, nota sotto — trascina per riordinare",
"viewModeGroup": "Modalità di visualizzazione note",
"reorderTabs": "Riordina scheda",
"modified": "Modificata",
"created": "Creata"
},
"pagination": {
"next": "→",
@@ -953,7 +1039,18 @@
"themeLight": "Light",
"themeSystem": "System",
"title": "Settings",
"version": "Version"
"version": "Version",
"cleanupDone": "{created} etichetta/e sincronizzata/e, {deleted} orfana/e rimossa/e",
"cleanupNothing": "Nessuna azione necessaria — le etichette sono già sincronizzate",
"cleanupWithErrors": "alcune operazioni fallite",
"cleanupError": "Impossibile pulire le etichette",
"indexingComplete": "Indicizzazione completata: {count} nota/e elaborata/e",
"indexingError": "Errore durante l'indicizzazione",
"emailNotifications": "Notifiche email",
"emailNotificationsDesc": "Ricevi notifiche importanti via email",
"desktopNotifications": "Notifiche desktop",
"desktopNotificationsDesc": "Ricevi notifiche nel browser",
"notificationsDesc": "Gestisci le preferenze di notifica"
},
"sidebar": {
"archive": "Archive",
@@ -961,7 +1058,10 @@
"labels": "Labels",
"notes": "Notes",
"reminders": "Reminders",
"trash": "Trash"
"trash": "Trash",
"newNoteTabs": "Nuova nota",
"newNoteTabsHint": "Crea nota in questo quaderno",
"noLabelsInNotebook": "Nessuna etichetta in questo quaderno"
},
"support": {
"aiApiCosts": "Costi API AI:",
@@ -1031,10 +1131,19 @@
"thanksFeedbackImproving": "Grazie! Lo useremo per migliorare."
},
"trash": {
"deletePermanently": "Elimina permanentemente",
"title": "Cestino",
"empty": "Il cestino è vuoto",
"emptyDescription": "Le note eliminate appariranno qui",
"restore": "Ripristina",
"title": "Cestino"
"deletePermanently": "Elimina definitivamente",
"noteTrashed": "Nota spostata nel cestino",
"noteRestored": "Nota ripristinata",
"notePermanentlyDeleted": "Nota eliminata definitivamente",
"emptyTrash": "Svuota cestino",
"emptyTrashConfirm": "Eliminare definitivamente tutte le note nel cestino?",
"emptyTrashSuccess": "Cestino svuotato",
"permanentDelete": "Elimina definitivamente",
"permanentDeleteConfirm": "Questa nota verrà eliminata definitivamente. Questa azione non può essere annullata."
},
"ui": {
"close": "Chiudi",
@@ -1047,7 +1156,7 @@
"description": "Gestisci le chiavi API e configura gli strumenti esterni",
"whatIsMcp": {
"title": "Cos'è MCP?",
"description": "Il Model Context Protocol (MCP) è un protocollo aperto che consente ai modelli di IA di interagire in modo sicuro con strumenti e fonti di dati esterni. Con MCP puoi collegare strumenti come Claude Code, Cursor o N8N alla tua istanza Keep Notes per leggere, creare e organizzare le tue note a livello di programmazione.",
"description": "Il Model Context Protocol (MCP) è un protocollo aperto che consente ai modelli di IA di interagire in modo sicuro con strumenti e fonti di dati esterni. Con MCP puoi collegare strumenti come Claude Code, Cursor o N8N alla tua istanza Memento per leggere, creare e organizzare le tue note a livello di programmazione.",
"learnMore": "Scopri di più su MCP"
},
"serverStatus": {
@@ -1101,5 +1210,241 @@
"description": "Usa queste credenziali nel tuo nodo MCP N8N:"
}
}
},
"agents": {
"title": "Agenti",
"subtitle": "Automatizza le attività di monitoraggio e ricerca",
"newAgent": "Nuovo agente",
"myAgents": "I miei agenti",
"noAgents": "Nessun agente",
"noAgentsDescription": "Crea il tuo primo agente o installa un modello qui sotto per automatizzare le attività di monitoraggio.",
"types": {
"scraper": "Monitor",
"researcher": "Ricercatore",
"monitor": "Osservatore",
"custom": "Personalizzato"
},
"typeDescriptions": {
"scraper": "Estrae contenuti da più siti e crea un riepilogo",
"researcher": "Cerca informazioni su un argomento",
"monitor": "Osserva un quaderno e analizza le note",
"custom": "Agente libero con il tuo prompt"
},
"form": {
"agentType": "Tipo di agente",
"name": "Nome",
"namePlaceholder": "es. Martedì Watch IA",
"description": "Descrizione (opzionale)",
"descriptionPlaceholder": "Riepilogo settimanale delle notizie sull'IA",
"urlsLabel": "URL da estrarre",
"urlsOptional": "(opzionale)",
"sourceNotebook": "Quaderno da osservare",
"selectNotebook": "Seleziona un quaderno...",
"targetNotebook": "Quaderno di destinazione",
"inbox": "In arrivo",
"instructions": "Istruzioni IA",
"instructionsPlaceholder": "Descrivi il comportamento dell'agente...",
"frequency": "Frequenza",
"cancel": "Annulla",
"saving": "Salvataggio in corso...",
"save": "Salva",
"create": "Crea agente",
"editTitle": "Modifica agente",
"createTitle": "Nuovo agente",
"nameRequired": "Il nome è obbligatorio",
"addUrl": "Aggiungi URL",
"advancedMode": "Modalità avanzata",
"instructionsHint": "sostituisce il prompt automatico",
"researchTopic": "Argomento di ricerca",
"researchTopicPlaceholder": "es: Ultimi sviluppi nell intelligenza artificiale",
"notifyEmail": "Notifica email",
"notifyEmailHint": "Ricevi un'email con i risultati dell'agent dopo ogni esecuzione"
},
"frequencies": {
"manual": "Manuale",
"hourly": "Ogni ora",
"daily": "Giornaliero",
"weekly": "Settimanale",
"monthly": "Mensile"
},
"status": {
"success": "Riuscito",
"failure": "Fallito",
"running": "In esecuzione",
"pending": "In sospeso"
},
"actions": {
"edit": "Modifica",
"run": "Esegui",
"delete": "Elimina",
"deleteConfirm": "Eliminare l'agente \"{name}\"?",
"toggleOn": "Agente attivato",
"toggleOff": "Agente disattivato"
},
"toasts": {
"created": "Agente creato",
"updated": "Agente aggiornato",
"deleted": "\"{name}\" eliminato",
"deleteError": "Errore durante l'eliminazione",
"runSuccess": "\"{name}\" eseguito con successo",
"runError": "Errore: {error}",
"runFailed": "Esecuzione fallita",
"runGenericError": "Errore durante l'esecuzione",
"toggleError": "Errore durante l'attivazione/disattivazione dell'agente",
"installSuccess": "\"{name}\" installato",
"installError": "Errore durante l'installazione",
"saveError": "Errore durante il salvataggio"
},
"templates": {
"title": "Modelli",
"install": "Installa",
"installing": "Installazione in corso...",
"veilleAI": {
"name": "Watch IA",
"description": "Estrae contenuti da 5 siti specializzati in IA e genera un riepilogo settimanale."
},
"veilleTech": {
"name": "Watch Tech",
"description": "Estrae contenuti dai principali siti tecnologici e crea un riepilogo delle notizie."
},
"veilleDev": {
"name": "Watch Dev",
"description": "Estrae contenuti da siti di sviluppo e riassume nuove tecnologie e framework."
},
"surveillant": {
"name": "Osservatore di note",
"description": "Analizza le note recenti di un quaderno e suggerisce integrazioni, riferimenti e collegamenti."
},
"chercheur": {
"name": "Ricercatore di argomenti",
"description": "Cerca informazioni approfondite su un argomento e crea una nota strutturata con riferimenti."
}
},
"runLog": {
"title": "Cronologia",
"noHistory": "Nessuna esecuzione ancora",
"toolTrace": "{count} chiamate strumento",
"step": "Passo {num}"
},
"tools": {
"title": "Strumenti Agente",
"webSearch": "Ricerca Web",
"webScrape": "Scraping Web",
"noteSearch": "Cerca Note",
"noteRead": "Leggi Nota",
"noteCreate": "Crea Nota",
"urlFetch": "Recupera URL",
"memorySearch": "Memoria",
"configNeeded": "config",
"selected": "{count} selezionati",
"maxSteps": "Iterazioni massime"
},
"metadata": {
"executions": "{count} esec."
},
"defaultRoles": {
"scraper": "Sei un assistente di monitoraggio. Sintetizza gli articoli di diversi siti web in un riepilogo chiaro e strutturato.",
"researcher": "Sei un ricercatore rigoroso. Per l'argomento richiesto, produci una nota di ricerca con contesto, punti chiave, dibattiti e riferimenti.",
"monitor": "Sei un assistente analitico. Analizza le note fornite e suggerisci piste, riferimenti e connessioni tra le note.",
"custom": "Sei un assistente utile."
},
"help": {
"title": "Guida agli Agenti",
"btnLabel": "Aiuto",
"close": "Chiudi",
"whatIsAgent": "Cos'è 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": "Come usare 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": "Tipi di agenti",
"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": "Modalità avanzata (Istruzioni IA, Iterazioni max)",
"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": "Strumenti disponibili (dettaglio)",
"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": "Frequenza e pianificazione",
"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": "Quaderno di destinazione",
"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": "Modelli",
"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": "Suggerimenti e risoluzione problemi",
"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": "Scegli il tipo di attività che l'agente svolgerà. Ogni tipo ha capacità e campi diversi.",
"researchTopic": "L'argomento che l'agente cercherà sul web. Sii specifico per risultati migliori.",
"description": "Una breve descrizione di ciò che fa questo agente. Ti aiuta a ricordarne lo scopo.",
"urls": "Elenco dei siti web da cui fare scraping. L'agente visiterà ogni URL ed estrarrà il contenuto.",
"sourceNotebook": "Il notebook che l'agente analizzerà. Legge le note da questo notebook per trovare connessioni e temi.",
"targetNotebook": "Dove verrà salvata la nota di risultato dell'agente. Scegli Posta in arrivo o un notebook specifico.",
"frequency": "Quanto spesso l'agente viene eseguito automaticamente. Inizia con Manuale per testare.",
"instructions": "Istruzioni personalizzate che sostituiscono il prompt IA predefinito. Lascia vuoto per usare quello automatico.",
"tools": "Seleziona quali strumenti può usare l'agente. Ogni strumento dà una capacità specifica all'agente.",
"maxSteps": "Numero massimo di cicli di ragionamento. Più passaggi = analisi più approfondita ma più lenta."
}
}
},
"chat": {
"title": "Chat IA",
"subtitle": "Chatta con le tue note e gli agenti IA",
"newConversation": "Nuova conversazione",
"noHistory": "Nessuna cronologia",
"untitled": "Conversazione senza titolo",
"deleteConfirm": "Eliminare questa conversazione?",
"yes": "Sì",
"placeholder": "Invia un messaggio all'assistente...",
"allNotebooks": "Tutti i quaderni",
"inAllNotebooks": "In tutti i quaderni",
"active": "ATTIVO",
"disclaimer": "L'IA può commettere errori. Verifica le informazioni importanti.",
"assistantError": "Errore dell'assistente",
"loadError": "Errore durante il caricamento della conversazione",
"createError": "Errore durante la creazione della conversazione",
"deleteError": "Errore durante l'eliminazione",
"renamed": "Conversazione rinominata",
"renameError": "Errore durante la ridenominazione",
"welcome": "Sono qui per aiutarti a sintetizzare le tue note, generare nuove idee o discutere i tuoi quaderni.",
"searching": "Ricerca in corso...",
"noNotesFoundForContext": "Nessuna nota rilevante trovata per questa domanda. Rispondi con la tua conoscenza generale."
},
"labHeader": {
"title": "Il Laboratorio",
"live": "Live",
"currentProject": "Progetto corrente",
"choose": "Scegli...",
"yourSpaces": "I tuoi spazi",
"updated": "Aggiornato",
"newSpace": "Nuovo spazio di pensiero",
"new": "Nuovo",
"renamed": "Spazio rinominato",
"renameError": "Errore durante la ridenominazione",
"created": "Nuovo spazio creato",
"createFailed": "Creazione fallita",
"deleteSpace": "Elimina spazio",
"deleted": "Spazio eliminato",
"deleteError": "Errore durante l'eliminazione"
},
"notification": {
"shared": "ha condiviso \"{title}\"",
"untitled": "Senza titolo",
"notifications": "Notifiche",
"accept": "Accept",
"accepted": "Share accepted",
"decline": "Decline",
"declined": "Condivisione rifiutata",
"noNotifications": "No new notifications",
"removed": "Nota rimossa dalla lista"
},
"reminders": {
"title": "Promemoria",
"empty": "Nessun promemoria",
"emptyDescription": "Aggiungi un promemoria a una nota per trovarlo qui.",
"upcoming": "In arrivo",
"overdue": "Scaduti",
"done": "Completati",
"markDone": "Segna come completato",
"markUndone": "Segna come non completato",
"todayAt": "Oggi alle {time}",
"tomorrowAt": "Domani alle {time}"
}
}