# Catálogo de mensajes estáticos de Hermes -- Español # See locales/en.yaml for the source of truth; keep keys in sync. approval: dangerous_header: "⚠️ COMANDO PELIGROSO: {description}" choose_long: " [o]una vez | [s]sesión | [a]siempre | [d]denegar" choose_short: " [o]una vez | [s]sesión | [d]denegar" prompt_long: " Opción [o/s/a/D]: " prompt_short: " Opción [o/s/D]: " timeout: " ⏱ Tiempo agotado — comando denegado" allowed_once: " ✓ Permitido una vez" allowed_session: " ✓ Permitido en esta sesión" allowed_always: " ✓ Añadido a la lista de permitidos permanente" denied: " ✗ Denegado" cancelled: " ✗ Cancelado" blocklist_message: "Este comando está en la lista de bloqueo incondicional y no se puede aprobar." gateway: approval_expired: "⚠️ La aprobación ha caducado (el agente ya no está esperando). Pida al agente que lo intente de nuevo." draining: "⏳ Esperando a que terminen {count} agente(s) activo(s) antes de reiniciar..." goal_cleared: "✓ Objetivo eliminado." no_active_goal: "No hay objetivo activo." config_read_failed: "⚠️ No se pudo leer config.yaml: {error}" config_save_failed: "⚠️ No se pudo guardar la configuración: {error}" model: error_prefix: "Error: {error}" switched: "Modelo cambiado a `{model}`" provider_label: "Proveedor: {provider}" context_label: "Contexto: {tokens} tokens" max_output_label: "Salida máxima: {tokens} tokens" cost_label: "Coste: {cost}" capabilities_label: "Capacidades: {capabilities}" prompt_caching_enabled: "Caché de prompts: activado" warning_prefix: "Advertencia: {warning}" saved_global: "Guardado en config.yaml (`--global`)" session_only_hint: "_(solo para esta sesión — añade `--global` para guardarlo)_" current_label: "Actual: `{model}` en {provider}" current_tag: " (actual)" more_models_suffix: " (+{count} más)" usage_switch_model: "`/model ` — cambiar modelo" usage_switch_provider: "`/model --provider ` — cambiar proveedor" usage_persist: "`/model --global` — guardar de forma permanente" agents: header: "🤖 **Agentes y tareas activos**" active_agents: "**Agentes activos:** {count}" this_chat: " · este chat" more: "... y {count} más" running_processes: "**Procesos en segundo plano en ejecución:** {count}" async_jobs: "**Tareas asíncronas del gateway:** {count}" none: "No hay agentes activos ni tareas en ejecución." state_starting: "iniciando" state_running: "en ejecución" approve: no_pending: "No hay ningún comando pendiente que aprobar." once_singular: "✅ Comando aprobado. El agente se está reanudando..." once_plural: "✅ Comandos aprobados ({count} comandos). El agente se está reanudando..." session_singular: "✅ Comando aprobado (patrón aprobado para esta sesión). El agente se está reanudando..." session_plural: "✅ Comandos aprobados (patrón aprobado para esta sesión) ({count} comandos). El agente se está reanudando..." always_singular: "✅ Comando aprobado (patrón aprobado permanentemente). El agente se está reanudando..." always_plural: "✅ Comandos aprobados (patrón aprobado permanentemente) ({count} comandos). El agente se está reanudando..." background: usage: "Uso: /background \nEjemplo: /background Resume las principales historias de HN de hoy\n\nEjecuta el prompt en una sesión separada. Puedes seguir chateando — el resultado aparecerá aquí cuando termine." started: "🔄 Tarea en segundo plano iniciada: \"{preview}\"\nID de tarea: {task_id}\nPuedes seguir chateando — los resultados aparecerán aquí cuando terminen." branch: db_unavailable: "Base de datos de sesiones no disponible." no_conversation: "No hay conversación para ramificar — envía un mensaje primero." create_failed: "No se pudo crear la rama: {error}" switch_failed: "Rama creada pero no se pudo cambiar a ella." branched_one: "⑂ Ramificado a **{title}** ({count} mensaje copiado)\nOriginal: `{parent}`\nRama: `{new}`\nUsa `/resume` para volver al original." branched_many: "⑂ Ramificado a **{title}** ({count} mensajes copiados)\nOriginal: `{parent}`\nRama: `{new}`\nUsa `/resume` para volver al original." commands: usage: "Uso: `/commands [page]`" skill_header: "⚡ **Comandos de skill**:" default_desc: "Comando de skill" none: "No hay comandos disponibles." header: "📚 **Comandos** ({total} en total, página {page}/{total_pages})" nav_prev: "`/commands {page}` ← anterior" nav_next: "siguiente → `/commands {page}`" out_of_range: "_(La página solicitada {requested} estaba fuera de rango, mostrando la página {page}.)_" compress: not_enough: "No hay suficiente conversación para comprimir (se necesitan al menos 4 mensajes)." no_provider: "No hay proveedor configurado — no se puede comprimir." nothing_to_do: "Aún no hay nada que comprimir (la transcripción sigue siendo todo contexto protegido)." focus_line: "Enfoque: \"{topic}\"" summary_failed: "⚠️ Falló la generación del resumen ({error}). Se eliminaron {count} mensaje(s) históricos y se reemplazaron por un marcador; el contexto anterior ya no se puede recuperar. Considera revisar la configuración del modelo auxiliary.compression." aux_failed: "ℹ️ El modelo de compresión configurado `{model}` falló ({error}). Recuperado con tu modelo principal — el contexto está intacto — pero quizá quieras revisar `auxiliary.compression.model` en config.yaml." failed: "Compresión fallida: {error}" debug: upload_failed: "✗ No se pudo subir el informe de depuración: {error}" header: "**Informe de depuración subido:**" auto_delete: "⏱ Los pastes se eliminarán automáticamente en 6 horas." full_logs_hint: "Para subir registros completos, usa `hermes debug share` desde la CLI." share_hint: "Comparte estos enlaces con el equipo de Hermes para obtener soporte." deny: stale: "❌ Comando denegado (la aprobación había caducado)." no_pending: "No hay ningún comando pendiente que denegar." denied_singular: "❌ Comando denegado." denied_plural: "❌ Comandos denegados ({count} comandos)." fast: not_supported: "⚡ /fast solo está disponible para modelos de OpenAI que admiten Priority Processing." status: "⚡ Priority Processing\n\nModo actual: `{mode}`\n\n_Uso:_ `/fast `" unknown_arg: "⚠️ Argumento desconocido: `{arg}`\n\n**Opciones válidas:** normal, fast, status" saved: "⚡ ✓ Priority Processing: **{label}** (guardado en la configuración)\n_(se aplica en el próximo mensaje)_" session_only: "⚡ ✓ Priority Processing: **{label}** (solo esta sesión)" label_fast: "FAST" label_normal: "NORMAL" status_fast: "fast" status_normal: "normal" footer: status: "📎 Pie de ejecución: **{state}**\nCampos: `{fields}`\nPlataforma: `{platform}`" usage: "Uso: `/footer [on|off|status]`" saved: "📎 Pie de ejecución: **{state}**{example}\n_(guardado globalmente — se aplica en el próximo mensaje)_" example_line: "\nEjemplo: `{preview}`" state_on: "ON" state_off: "OFF" goal: unavailable: "Los objetivos no están disponibles en esta sesión." no_goal_set: "No hay objetivo establecido." paused: "⏸ Objetivo pausado: {goal}" no_resume: "No hay objetivo para reanudar." resumed: "▶ Objetivo reanudado: {goal}\nEnvía cualquier mensaje para continuar, o espera — daré el siguiente paso en el próximo turno." invalid: "Objetivo no válido: {error}" set: "⊙ Objetivo establecido (presupuesto de {budget} turnos): {goal}\nSeguiré trabajando hasta que el objetivo se complete, lo pauses/elimines o se agote el presupuesto.\nControles: /goal status · /goal pause · /goal resume · /goal clear" help: header: "📖 **Comandos de Hermes**\n" skill_header: "\n⚡ **Comandos de skill** ({count} activos):" more_use_commands: "\n... y {count} más. Usa `/commands` para la lista paginada completa." insights: invalid_days: "Valor --days no válido: {value}" error: "Error al generar el análisis: {error}" kanban: error_prefix: "⚠ error de kanban: {error}" subscribed_suffix: "(suscrito — recibirás una notificación cuando {task_id} termine o se bloquee)" truncated_suffix: "… (truncado; usa `hermes kanban …` en tu terminal para la salida completa)" no_output: "(sin salida)" personality: none_configured: "No hay personalidades configuradas en `{path}/config.yaml`" header: "🎭 **Personalidades disponibles**\n" none_option: "• `none` — (sin superposición de personalidad)" item: "• `{name}` — {preview}" usage: "\nUso: `/personality `" save_failed: "⚠️ No se pudo guardar el cambio de personalidad: {error}" cleared: "🎭 Personalidad eliminada — usando el comportamiento base del agente.\n_(surte efecto en el siguiente mensaje)_" set_to: "🎭 Personalidad establecida en **{name}**\n_(surte efecto en el siguiente mensaje)_" unknown: "Personalidad desconocida: `{name}`\n\nDisponibles: {available}" profile: header: "👤 **Perfil:** `{profile}`" home: "📂 **Inicio:** `{home}`" reasoning: level_default: "medium (predeterminado)" level_disabled: "none (deshabilitado)" scope_session: "anulación de sesión" scope_global: "configuración global" status: "🧠 **Ajustes de razonamiento**\n\n**Esfuerzo:** `{level}`\n**Alcance:** {scope}\n**Visualización:** {display}\n\n_Uso:_ `/reasoning [--global]`" display_on: "activada ✓" display_off: "desactivada" display_set_on: "🧠 ✓ Visualización de razonamiento: **ACTIVADA**\nEl pensamiento del modelo se mostrará antes de cada respuesta en **{platform}**." display_set_off: "🧠 ✓ Visualización de razonamiento: **DESACTIVADA** para **{platform}**" reset_global_unsupported: "⚠️ `/reasoning reset --global` no es compatible. Usa `/reasoning --global` para cambiar el valor global por defecto." reset_done: "🧠 ✓ Anulación de razonamiento de la sesión borrada; volviendo a la configuración global." unknown_arg: "⚠️ Argumento desconocido: `{arg}`\n\n**Niveles válidos:** none, minimal, low, medium, high, xhigh\n**Visualización:** show, hide\n**Persistir:** añade `--global` para guardar más allá de esta sesión" set_global: "🧠 ✓ Esfuerzo de razonamiento ajustado a `{effort}` (guardado en la configuración)\n_(se aplica en el próximo mensaje)_" set_global_save_failed: "🧠 ✓ Esfuerzo de razonamiento ajustado a `{effort}` (solo en la sesión — error al guardar la configuración)\n_(se aplica en el próximo mensaje)_" set_session: "🧠 ✓ Esfuerzo de razonamiento ajustado a `{effort}` (solo en la sesión — añade `--global` para persistir)\n_(se aplica en el próximo mensaje)_" reload_mcp: cancelled: "🟡 /reload-mcp cancelado. Las herramientas MCP no han cambiado." always_followup: "ℹ️ Las próximas llamadas a `/reload-mcp` se ejecutarán sin confirmación. Reactiva mediante `approvals.mcp_reload_confirm: true` en `config.yaml`." confirm_prompt: "⚠️ **Confirmar /reload-mcp**\n\nRecargar los servidores MCP reconstruye el conjunto de herramientas de esta sesión e **invalida la caché de prompt del proveedor** — el siguiente mensaje reenviará los tokens de entrada completos. En modelos de contexto largo o de razonamiento alto esto puede resultar costoso.\n\nElige:\n• **Aprobar una vez** — recargar ahora\n• **Aprobar siempre** — recargar ahora y silenciar esta confirmación permanentemente\n• **Cancelar** — dejar las herramientas MCP sin cambios\n\n_Alternativa de texto: responde `/approve`, `/always` o `/cancel`._" header: "🔄 **Servidores MCP recargados**\n" reconnected: "♻️ Reconectados: {names}" added: "➕ Añadidos: {names}" removed: "➖ Eliminados: {names}" none_connected: "No hay servidores MCP conectados." tools_available: "\n🔧 {tools} herramienta(s) disponibles de {servers} servidor(es)" failed: "❌ Falló la recarga de MCP: {error}" reload_skills: header: "🔄 **Skills recargadas**\n" no_new: "No se detectaron nuevas skills." total: "\n📚 {count} skill(s) disponibles" added_header: "➕ **Skills añadidas:**" removed_header: "➖ **Skills eliminadas:**" item_with_desc: " - {name}: {desc}" item_no_desc: " - {name}" failed: "❌ Falló la recarga de skills: {error}" reset: header_default: "✨ ¡Sesión reiniciada! Empezando de nuevo." header_new: "✨ ¡Nueva sesión iniciada!" header_titled: "✨ Nueva sesión iniciada: {title}" title_rejected: "\n⚠️ Título rechazado: {error}" title_error_untitled: "\n⚠️ {error} — sesión iniciada sin título." title_empty_untitled: "\n⚠️ El título queda vacío tras la limpieza — sesión iniciada sin título." tip: "\n✦ Consejo: {tip}" restart: in_progress: "⏳ El reinicio del gateway ya está en curso..." restarting: "♻ Reiniciando el gateway. Si no recibes notificación en 60 segundos, reinicia desde la consola con `hermes gateway restart`." resume: db_unavailable: "Base de datos de sesiones no disponible." no_named_sessions: "No se encontraron sesiones con nombre.\nUsa `/title Mi sesión` para nombrar la sesión actual y luego `/resume Mi sesión` para volver a ella." list_header: "📋 **Sesiones con nombre**\n" list_item: "• **{title}**{preview_part}" list_preview_suffix: " — _{preview}_" list_footer: "\nUso: `/resume `" list_failed: "No se pudieron listar las sesiones: {error}" not_found: "No se encontró ninguna sesión que coincida con '**{name}**'.\nUsa `/resume` sin argumentos para ver las sesiones disponibles." already_on: "📌 Ya estás en la sesión **{name}**." switch_failed: "No se pudo cambiar de sesión." resumed_one: "↻ Sesión **{title}** reanudada ({count} mensaje). Conversación restaurada." resumed_many: "↻ Sesión **{title}** reanudada ({count} mensajes). Conversación restaurada." resumed_no_count: "↻ Sesión **{title}** reanudada. Conversación restaurada." retry: no_previous: "No hay un mensaje anterior para reintentar." rollback: not_enabled: "Los checkpoints no están habilitados.\nHabilítalos en config.yaml:\n```\ncheckpoints:\n enabled: true\n```" none_found: "No se encontraron checkpoints para {cwd}" invalid_number: "Número de checkpoint inválido. Usa 1-{max}." restored: "✅ Restaurado al checkpoint {hash}: {reason}\nSe guardó automáticamente un snapshot previo al rollback." restore_failed: "❌ {error}" set_home: save_failed: "No se pudo guardar el canal principal: {error}" success: "✅ Canal principal establecido en **{name}** (ID: {chat_id}).\nLas tareas cron y los mensajes entre plataformas se entregarán aquí." status: header: "📊 **Estado de Hermes Gateway**" session_id: "**ID de sesión:** `{session_id}`" title: "**Título:** {title}" created: "**Creado:** {timestamp}" last_activity: "**Última actividad:** {timestamp}" tokens: "**Tokens:** {tokens}" agent_running: "**Agente activo:** {state}" state_yes: "Sí ⚡" state_no: "No" queued: "**Seguimientos en cola:** {count}" platforms: "**Plataformas conectadas:** {platforms}" stop: stopped_pending: "⚡ Detenido. El agente aún no había comenzado — puedes continuar esta sesión." stopped: "⚡ Detenido. Puedes continuar esta sesión." no_active: "No hay ninguna tarea activa que detener." title: db_unavailable: "Base de datos de sesiones no disponible." warn_prefix: "⚠️ {error}" empty_after_clean: "⚠️ El título está vacío tras la limpieza. Usa caracteres imprimibles." set_to: "✏️ Título de sesión establecido: **{title}**" not_found: "Sesión no encontrada en la base de datos." current_with_title: "📌 Sesión: `{session_id}`\nTítulo: **{title}**" current_no_title: "📌 Sesión: `{session_id}`\nSin título. Uso: `/title Mi nombre de sesión`" topic: not_telegram_dm: "El comando /topic solo está disponible en chats privados de Telegram." no_session_db: "Base de datos de sesiones no disponible." unauthorized: "No tienes autorización para usar /topic en este bot." restore_needs_topic: "Para restaurar una sesión, primero crea o abre un topic de Telegram, luego envía /topic dentro de ese topic. Para crear un topic nuevo, abre All Messages y envía cualquier mensaje allí." topics_disabled: "Los topics de Telegram aún no están habilitados para este bot.\n\nCómo habilitarlos:\n1. Abre @BotFather.\n2. Elige tu bot.\n3. Abre Bot Settings → Threads Settings.\n4. Activa Threaded Mode y asegúrate de permitir que los usuarios creen nuevos threads.\n\nLuego envía /topic de nuevo." topics_user_disallowed: "Los topics de Telegram están habilitados, pero los usuarios no pueden crearlos.\n\nAbre @BotFather → elige tu bot → Bot Settings → Threads Settings, luego desactiva 'Disallow users to create new threads'.\n\nLuego envía /topic de nuevo." enable_failed: "No se pudo habilitar el modo topic de Telegram: {error}" bound_status: "Este topic está vinculado a:\nSesión: {label}\nID: {session_id}\n\nUsa /new para reemplazar este topic con una sesión nueva.\nPara trabajo paralelo, abre All Messages y envía un mensaje allí para crear otro topic." thread_ready: "Los topics multisesión de Telegram están habilitados.\n\nEste topic se usará como una sesión independiente de Hermes. Usa /new para reemplazar la sesión actual de este topic. Para trabajo paralelo, abre All Messages y envía un mensaje allí para crear otro topic." untitled_session: "Sesión sin título" undo: nothing: "Nada que deshacer." removed: "↩️ {count} mensaje(s) deshecho(s).\nEliminado: \"{preview}\"" update: platform_not_messaging: "✗ /update solo está disponible en plataformas de mensajería. Ejecuta `hermes update` desde la terminal." not_git_repo: "✗ No es un repositorio git — no se puede actualizar." hermes_cmd_not_found: "✗ No se pudo localizar el comando `hermes`. Hermes está en ejecución, pero el comando de actualización no encontró el ejecutable en PATH ni a través del intérprete de Python actual. Intenta ejecutar `hermes update` manualmente en tu terminal." start_failed: "✗ No se pudo iniciar la actualización: {error}" starting: "⚕ Iniciando la actualización de Hermes… Transmitiré el progreso aquí." usage: rate_limits: "⏱️ **Límites de tasa:** {state}" header_session: "📊 **Uso de tokens de la sesión**" label_model: "Modelo: `{model}`" label_input_tokens: "Tokens de entrada: {count}" label_cache_read: "Tokens de lectura de caché: {count}" label_cache_write: "Tokens de escritura de caché: {count}" label_output_tokens: "Tokens de salida: {count}" label_total: "Total: {count}" label_api_calls: "Llamadas API: {count}" label_cost: "Costo: {prefix}${amount}" label_cost_included: "Costo: incluido" label_context: "Contexto: {used} / {total} ({pct}%)" label_compressions: "Compresiones: {count}" header_session_info: "📊 **Información de la sesión**" label_messages: "Mensajes: {count}" label_estimated_context: "Contexto estimado: ~{count} tokens" detailed_after_first: "_(Uso detallado disponible tras la primera respuesta del agente)_" no_data: "No hay datos de uso disponibles para esta sesión." verbose: not_enabled: "El comando `/verbose` no está habilitado para plataformas de mensajería.\n\nHabilítalo en `config.yaml`:\n```yaml\ndisplay:\n tool_progress_command: true\n```" mode_off: "⚙️ Progreso de herramientas: **OFF** — no se muestra actividad de herramientas." mode_new: "⚙️ Progreso de herramientas: **NEW** — se muestra al cambiar de herramienta (longitud de vista previa: `display.tool_preview_length`, por defecto 40)." mode_all: "⚙️ Progreso de herramientas: **ALL** — se muestra cada llamada a herramienta (longitud de vista previa: `display.tool_preview_length`, por defecto 40)." mode_verbose: "⚙️ Progreso de herramientas: **VERBOSE** — cada llamada a herramienta con sus argumentos completos." saved_suffix: "_(guardado para **{platform}** — se aplica en el próximo mensaje)_" save_failed: "_(no se pudo guardar en la configuración: {error})_" voice: enabled_voice_only: "Modo de voz activado.\nResponderé con voz cuando envíes mensajes de voz.\nUsa /voice tts para recibir respuestas de voz en todos los mensajes." disabled_text: "Modo de voz desactivado. Respuestas solo de texto." tts_enabled: "Auto-TTS activado.\nTodas las respuestas incluirán un mensaje de voz." status_mode: "Modo de voz: {label}" status_channel: "Canal de voz: #{channel}" status_participants: "Participantes: {count}" status_member: " - {name}{status}" speaking: " (hablando)" enabled_short: "Modo de voz activado." disabled_short: "Modo de voz desactivado." label_off: "Desactivado (solo texto)" label_voice_only: "Activado (responder con voz a mensajes de voz)" label_all: "TTS (responder con voz a todos los mensajes)" yolo: disabled: "⚠️ Modo YOLO **DESACTIVADO** en esta sesión — los comandos peligrosos requerirán aprobación." enabled: "⚡ Modo YOLO **ACTIVADO** en esta sesión — todos los comandos se aprueban automáticamente. Úsalo con precaución." shared: session_db_unavailable: "Base de datos de sesiones no disponible." session_db_unavailable_prefix: "Base de datos de sesiones no disponible" session_not_found: "Sesión no encontrada en la base de datos." warn_passthrough: "⚠️ {error}"