{
  "common": {
    "cancel": "Cancelar",
    "confirm": "Confirmar",
    "loading": "Cargando…",
    "send": "Enviar",
    "rename": "Renombrar",
    "delete": "Eliminar",
    "close": "Cerrar",
    "save": "Guardar",
    "copy": "Copiar",
    "quote": "Citar",
    "quote_block": "Citar todo",
    "copied": "¡Copiado!",
    "generating": "Generando...",
    "starting": "Iniciando...",
    "yes": "sí",
    "connected": "Conectado",
    "disconnected": "Desconectado",
    "reconnecting": "Reconectando…",
    "refresh": "Actualizar",
    "show": "Mostrar",
    "hide": "Ocultar",
    "this_feature": "Esta función"
  },
  "window": {
    "maximize": "Maximizar",
    "restore": "Restaurar",
    "minimize": "Minimizar",
    "close": "Cerrar",
    "hide": "Ocultar"
  },
  "appUpdate": {
    "banner_title": "IM.codes se ha actualizado",
    "banner_body": "Actualiza para usar la versión más reciente. Tus sesiones seguirán disponibles.",
    "later": "Más tarde",
    "refresh": "Actualizar",
    "chunk_title": "Actualización requerida",
    "blocking_title": "Actualiza antes de continuar",
    "chunk_body": "Esta página está ejecutando un frontend antiguo y no pudo cargar un archivo necesario de la app. Actualiza para recuperarte limpiamente.",
    "blocking_body": "{{feature}} necesita el frontend más reciente después de la actualización del servidor. Actualiza para continuar sin que el panel se quede bloqueado.",
    "refresh_continue": "Actualizar y continuar",
    "error_reload_message": "La app se actualizó; recarga para continuar",
    "error_retry_message": "Error del componente; toca para reintentar",
    "reload": "Recargar",
    "retry": "Reintentar"
  },
  "chat": {
    "dpad": {
      "title": "Teclas de flecha: arrastra para mover"
    },
    "sendFailedReason": {
      "daemonOffline": "Conexión perdida",
      "ackTimeout": "Sin respuesta del agente",
      "daemonError": "Error del agente"
    },
    "loading": "Cargando chat...",
    "syncing": "↻ Sincronizando...",
    "no_events": "Sin eventos aún",
    "session_state": "Sesión {{state}}",
    "load_older": "Cargar mensajes anteriores",
    "loading_older": "Cargando...",
    "refreshing_history": "Actualizando historial…",
    "timelineStatus": {
      "ok": "Historial actualizado",
      "empty": "No hay eventos anteriores",
      "partial": "La línea de tiempo se cargó parcialmente",
      "deferred": "La línea de tiempo aún se está preparando",
      "canceled": "La solicitud de línea de tiempo se canceló",
      "payloadTruncated": "La línea de tiempo se acortó para cargar más rápido",
      "cursorReset": "La posición cambió; actualiza el historial",
      "queueFull": "El worker de la línea de tiempo está ocupado",
      "deadlineExceeded": "La solicitud de línea de tiempo agotó el tiempo",
      "timeout": "El worker de la línea de tiempo agotó el tiempo",
      "unavailable": "El historial de la línea de tiempo no está disponible",
      "projectionUnavailable": "El índice de la línea de tiempo no está disponible",
      "malformedRequest": "La solicitud de línea de tiempo no es válida",
      "internalError": "Error al cargar el historial",
      "detailMissing": "El detalle ya no está disponible",
      "detailExpired": "El detalle expiró",
      "detailUnauthorized": "El detalle no está disponible para esta sesión",
      "detailOversized": "El detalle es demasiado grande",
      "detailMalformed": "La solicitud de detalle no es válida",
      "detailEpochMismatch": "El detalle expiró tras reiniciar el daemon",
      "detailGenerationMismatch": "El detalle expiró tras actualizar",
      "detailHydrated": "Detalle de la línea de tiempo cargado",
      "pageCursorReset": "La página expiró; actualiza el historial",
      "pageMalformed": "La solicitud de página no es válida",
      "error": "Error al cargar el historial"
    },
    "thinking_running": "Pensando · {{sec}}s",
    "thinking_done": "Pensó {{sec}}s",
    "show_file_panel": "Abrir panel de archivos",
    "hide_file_panel": "Cerrar panel de archivos",
    "sync_history": "Sincronizar historial de chat",
    "sdk_agents_toggle": "Agents",
    "sdk_agents_toggle_aria": "Alternar estado de SDK agents, {{count}} en ejecución",
    "sdk_agents_badge_aria": "{{count}} SDK agents en ejecución",
    "sdk_agents_panel_title": "Agents",
    "sdk_agents_close": "Cerrar panel de Agents",
    "sdk_agents_running_count": "{{count}} en ejecución",
    "sdk_agents_active_section": "Activos",
    "sdk_agents_recent_section": "Recientes",
    "sdk_agents_diagnostics_section": "Diagnósticos",
    "sdk_agents_provider_claude": "Claude SDK",
    "sdk_agents_provider_codex": "Codex SDK",
    "sdk_agents_provider_qwen": "Qwen",
    "sdk_agents_provider_gemini": "Gemini SDK",
    "sdk_agents_provider_unknown": "SDK agent",
    "sdk_agents_status_pending": "Pendiente",
    "sdk_agents_status_running": "En ejecución",
    "sdk_agents_status_complete": "Completado",
    "sdk_agents_status_error": "Error",
    "sdk_agents_status_interrupted": "Interrumpido",
    "sdk_agents_status_stale": "Obsoleto",
    "sdk_agents_status_unknown": "Desconocido",
    "sdk_agents_id": "ID",
    "sdk_agents_model": "Modelo",
    "sdk_agents_started_at": "Inicio",
    "sdk_agents_duration": "Duración",
    "sdk_agents_tokens": "Tokens",
    "sdk_agents_prompt": "Prompt",
    "sdk_agents_result": "Resultado",
    "sdk_agents_running_children": "{{count}} subagent en ejecución",
    "sdk_agents_receiver_count": "{{count}} receptores",
    "sdk_agents_diagnostic_unsupported_runtime": "El runtime no expone estado de agents",
    "sdk_agents_diagnostic_unknown_runtime_support": "Compatibilidad del runtime desconocida",
    "sdk_agents_diagnostic_malformed_payload": "Metadatos de agent malformados",
    "sdk_agents_diagnostic_missing_id": "Falta identidad del agent",
    "sdk_agents_diagnostic_unknown_state": "Estado del provider desconocido",
    "sdk_agents_diagnostic_stale_without_terminal": "El estado caducó antes de completarse",
    "sdk_agents_diagnostic_snapshot_only": "Estado del provider solo por snapshot",
    "sdk_agents_diagnostic_generic": "Diagnóstico de estado de agent",
    "html_preview": "Renderizar HTML",
    "html_preview_title": "Vista previa HTML renderizada",
    "html_preview_open_new_window": "Abrir vista previa en una nueva ventana",
    "html_preview_too_large": "El archivo HTML es demasiado grande para renderizarlo de forma segura.",
    "html_preview_unavailable": "La vista previa HTML no está disponible",
    "html_preview_frame": "Vista previa HTML renderizada",
    "tool_fold_more": "... {{count}} líneas ...",
    "tool_fold_collapse": "colapsar",
    "tool_group_more": "··· {{count}} más",
    "tool_group_collapse": "▲ colapsar",
    "tool_calls_toggle_show": "Mostrar herramientas y razonamiento",
    "tool_calls_toggle_hide": "Ocultar herramientas y razonamiento",
    "tool_calls_toggle_undecided": "Elige cómo ver la actividad de la IA",
    "tool_calls_choose_prompt": "Elige vista ↓",
    "memory_summary_sync": "Sincronizar resúmenes recientes",
    "memory_summary_sync_busy": "Sincronizando resúmenes...",
    "memory_summary_sync_instruction": "Solo sincronización de contexto. Integra estos resúmenes recientes como contexto de fondo. No ejecutes tareas, no cambies archivos, no llames herramientas ni respondas a este mensaje; espera la siguiente instrucción del usuario.",
    "memory_summary_sync_heading": "Resúmenes recientes ({{count}}/{{limit}}, máx. ~{{maxChars}} caracteres):",
    "user_message_expand": "Mostrar completo",
    "user_message_collapse": "Contraer",
    "tool_chooser_title": "¿Cómo mostrar la actividad de la IA?",
    "tool_chooser_subtitle": "Las llamadas a herramientas, cambios de archivos y razonamiento aportan detalle pero pueden saturar.",
    "tool_chooser_simple_label": "Sencillo",
    "tool_chooser_simple_hint": "Solo las respuestas de la IA",
    "tool_chooser_developer_label": "Desarrollador",
    "tool_chooser_developer_hint": "Mostrar herramientas, archivos, razonamiento",
    "tool_chooser_footnote": "Cámbialo en cualquier momento con el icono de la llave.",
    "new_file": "Nuevo archivo",
    "new_file_name": "Nombre de archivo",
    "new_folder": "Nueva carpeta",
    "new_folder_name": "Nombre de carpeta",
    "create": "Crear",
    "external_link_title": "Abrir enlace externo",
    "external_link_warning": "Este enlace fue generado por un agente de IA. Usted es responsable de los riesgos asociados con visitar sitios web externos.",
    "external_link_cancel": "Cancelar",
    "external_link_open": "Abrir enlace",
    "zoom_title": "Mensaje",
    "zoom_copy_all": "Copiar todo",
    "zoom_hint": "Mantén presionado para seleccionar texto. Ajusta los tiradores y luego copia.",
    "tool_detail_toggle": "detalles",
    "tool_detail_input": "entrada",
    "tool_detail_output": "salida",
    "tool_detail_meta": "meta",
    "tool_detail_raw": "raw",
    "pinned_last_sent_label": "Último enviado",
    "pinned_last_sent_aria": "Ir a tu último mensaje enviado",
    "memory_context_title": "Historial relacionado",
    "memory_context_startup_title": "Contexto histórico · inyectado",
    "memory_context_summary": "{{count}} recuperados",
    "memory_context_query": "Consulta: {{query}}",
    "memory_context_score": "Puntuación {{score}}",
    "memory_context_startup_reason": "Inyectado al iniciar la sesión",
    "memory_context_section_preferences": "Preferencias ({{count}})",
    "memory_context_section_durable": "Memoria a largo plazo ({{count}})",
    "memory_context_section_recent": "Resúmenes recientes ({{count}})",
    "memory_context_section_master": "Resúmenes maestros ({{count}})",
    "memory_context_section_other": "Otro contexto ({{count}})",
    "memory_context_collapse_bottom": "Colapsar",
    "memory_context_status_no_matches": "No se encontró memoria relacionada",
    "memory_context_status_deduped_recently": "Se encontraron {{count}} memorias relacionadas, pero ya se inyectaron hace poco",
    "memory_context_status_deduped_recently_detail": "Se encontraron {{count}} memorias relacionadas. {{deduped}} se omitieron porque ya se inyectaron en turnos recientes.",
    "memory_context_status_skipped_template_prompt": "Se omitió la búsqueda de memoria para un prompt interno/de plantilla",
    "memory_context_status_skipped_template_prompt_detail": "Este mensaje coincide con un flujo interno o un prompt de plantilla, así que la búsqueda de memoria relacionada se omitió a propósito.",
    "memory_context_status_skipped_short_prompt": "Se omitió la búsqueda de memoria porque el prompt es demasiado corto",
    "memory_context_status_skipped_short_prompt_detail": "Los prompts cortos no son lo bastante específicos para encontrar memoria relacionada de forma fiable.",
    "memory_context_status_skipped_control_message": "Se omitió la búsqueda de memoria para un mensaje de comando",
    "memory_context_status_skipped_control_message_detail": "Los comandos con barra no activan la búsqueda de memoria relacionada.",
    "memory_context_status_failed": "La búsqueda de memoria relacionada no está disponible temporalmente",
    "memory_context_status_failed_detail": "El mensaje sí se envió, pero esta vez falló la búsqueda de memoria.",
    "file_change_title": "Cambios de archivo ({{count}})",
    "file_change_patch_count": "{{count}} parches",
    "file_change_provider_claude_code": "Claude Code",
    "file_change_provider_opencode": "OpenCode",
    "file_change_provider_codex_sdk": "Codex SDK",
    "file_change_provider_qwen": "Qwen",
    "file_change_provider_gemini": "Gemini",
    "file_change_operation_create": "crear",
    "file_change_operation_update": "actualizar",
    "file_change_operation_delete": "eliminar",
    "file_change_operation_rename": "renombrar",
    "file_change_operation_unknown": "cambio",
    "file_change_operation_mixed": "mixto",
    "file_change_confidence_exact": "exacto",
    "file_change_confidence_derived": "derivado",
    "file_change_confidence_coarse": "aproximado",
    "file_change_confidence_mixed": "fidelidad mixta",
    "file_change_removed": "Eliminado",
    "file_change_added": "Añadido",
    "file_change_truncated": "recortado",
    "file_change_no_before": "(sin texto original)",
    "file_change_no_after": "(sin texto nuevo)",
    "file_change_derived_no_preview": "(sin vista previa)",
    "file_change_coarse_hint": "Hay ruta de archivo, pero no se proporcionó texto diff.",
    "file_change_renamed_from": "{{oldPath}} → {{newPath}}",
    "font": {
      "dialogLabel": "Fuente",
      "typeLabel": "Tipo de fuente",
      "codeTab": "Código",
      "cjkTab": "CJK",
      "familyLabel": "Fuente de código",
      "cjkFamilyLabel": "Fuente CJK",
      "allBuiltInCjk": "Ver todas las fuentes CJK integradas",
      "cjkFamilies": {
        "system-cjk": "CJK del sistema",
        "pingfang-sc": "PingFang SC",
        "songti-sc": "Songti SC",
        "kaiti-sc": "Kaiti SC",
        "stheiti": "STHeiti",
        "stsong": "STSong",
        "stkaiti": "STKaiti",
        "stfangsong": "STFangsong",
        "microsoft-yahei": "Microsoft YaHei",
        "simsun": "SimSun",
        "nsimsun": "NSimSun",
        "dengxian": "DengXian",
        "kaiti": "KaiTi",
        "fangsong": "FangSong",
        "microsoft-jhenghei": "Microsoft JhengHei"
      }
    }
  },
  "session": {
    "restart": "↺ Reiniciar",
    "restart_plain": "Reiniciar",
    "confirm_restart": "¿Confirmar reinicio?",
    "new": "+ Nuevo",
    "start_fresh": "Empezar de nuevo",
    "confirm_new": "¿Confirmar nuevo?",
    "tab_pin": "📌 Fijar",
    "tab_unpin": "📌 Desfijar",
    "pin_plain": "Fijar",
    "unpin_plain": "Desfijar",
    "stop": "✕ Detener",
    "stop_session": "Detener sesión",
    "stop_main_title": "¿Detener sesión principal?",
    "stop_main_body": "{{project}} es una sesión principal. Al detenerla se terminarán todos sus procesos tmux. Esta acción no se puede deshacer.",
    "really_stop_project": "⚠ ¿REALMENTE detener {{project}}?",
    "stop_plain": "Detener",
    "unpin_to_stop": "Primero desancla la pestaña para detener",
    "state_stop_requested": "Detención solicitada",
    "state_stopping": "Deteniendo...",
    "state_compacting": "Compactando contexto...",
    "state_idle": "Agent inactivo — esperando entrada",
    "state_running": "Agent trabajando...",
    "state_started": "Sesión iniciada",
    "state_starting": "Iniciando sesión...",
    "state_stopped": "Sesión detenida",
    "confirm_stop": "¿Confirmar detención?",
    "confirm_stop_dialog": "¿Estás seguro de que quieres detener esta sesión? Esta acción no se puede deshacer.",
    "confirm_sub_stop_2": "⚠ ¿SEGURO detener {{label}}?",
    "confirm_sub_restart_2": "⚠ ¿SEGURO reiniciar {{label}}?",
    "confirm_sub_new_2": "⚠ ¿SEGURO reemplazar {{label}}?",
    "confirm_sub_stop_dialog": "¿Detener sub-sesión?\n\nTipo: {{type}}\nEtiqueta: {{label}}\nSesión: {{name}}\n\nEl agente será terminado y no se puede deshacer.",
    "confirm_sub_restart_dialog": "¿Reiniciar sub-sesión?\n\nTipo: {{type}}\nEtiqueta: {{label}}\nSesión: {{name}}\n\nEl agente será reiniciado.",
    "confirm_sub_new_dialog": "¿Crear nueva sub-sesión?\n\nTipo: {{type}}\nEtiqueta: {{label}}\nSesión: {{name}}\n\nLa sesión actual será reemplazada.",
    "confirm_restart_dialog": "¿Estás seguro de que quieres reiniciar esta sesión?",
    "confirm_new_dialog": "¿Estás seguro de que quieres iniciar una sesión nueva? La sesión actual será reemplazada.",
    "settings": "Configuración de sesión",
    "type": "Tipo",
    "label": "Etiqueta",
    "workingDir": "Directorio de trabajo",
    "parentSession": "Sesión principal",
    "rename": "✎ Renombrar",
    "rename_plain": "Renombrar",
    "no_session": "Sin sesión",
    "send_queued": "Reconectando… (envío en cola)",
    "transport_send_queued": "En cola: se enviará cuando termine la respuesta actual",
    "transport_send_queued_collapsed": "{{count}} en cola · mostrando solo el último",
    "transport_send_queued_count": "{{count}} en cola",
    "send_placeholder": "Enviar a {{name}}…",
    "send_placeholder_desktop_upload": "{{placeholder}} Admite carga rápida pegando o arrastrando varios archivos",
    "actions": "Acciones de sesión",
    "new_btn": "Nueva sesión",
    "clone": {
      "menu": "Copiar grupo de sesiones",
      "title": "Copiar grupo de sesiones",
      "source": "Sesión origen",
      "targetProjectName": "Nombre del proyecto destino",
      "targetProjectPlaceholder": "my-project-copy",
      "finalSessionName": "Sesión final",
      "previewUnavailable": "Introduce un nombre de proyecto",
      "preserveDirectories": "Predeterminado: las sesiones clonadas usan los directorios de trabajo originales",
      "overrideDirectories": "Usar un nuevo directorio de trabajo para las sesiones clonadas",
      "cwdOverride": "Directorio de trabajo de reemplazo",
      "cwdOverridePlaceholder": "/work/new-checkout",
      "browseCwd": "Explorar directorio de trabajo",
      "daemonHostValidation": "Los directorios de trabajo se validan en el host del daemon antes de crear recursos.",
      "runningWarning": "El grupo copiado empieza desde cero. No se copian mensajes pendientes, historial de terminal ni trabajo en ejecución del origen.",
      "capabilityMissing": "El daemon conectado aún no informó compatibilidad para copiar grupos de sesiones. Actualiza o reconecta el daemon e inténtalo de nuevo.",
      "submit": "Copiar grupo",
      "submitting": "Copiando...",
      "blankProject": "El nombre del proyecto destino es obligatorio.",
      "notConnected": "Conecta con un servidor antes de copiar un grupo de sesiones.",
      "daemonOffline": "El daemon está sin conexión. Vuelve a conectarlo antes de copiar un grupo de sesiones.",
      "missingServer": "Selecciona un servidor antes de copiar un grupo de sesiones.",
      "cwdRequired": "Introduce un directorio de reemplazo o conserva los directorios de origen.",
      "progress": "Estado: {{state}}",
      "subSessionProgress": "Subsesiones: {{created}}/{{total}} copiadas",
      "operationId": "Operación: {{operationId}}",
      "success": "Grupo copiado creado como {{session}}. Cambiando ahora.",
      "cleanupRequired": "Limpieza requerida",
      "cleanupRequiredBody": "Algunos recursos creados pueden necesitar limpieza manual. Revisa los detalles del daemon o servidor antes de reintentar.",
      "cleanupResourceDetail": "{{kind}}: {{id}}",
      "warningsTitle": "{{count}} advertencia(s)",
      "skippedMembersTitle": "{{count}} miembro(s) omitido(s)",
      "skippedMemberDetail": "{{session}}: {{reason}}",
      "skippedCronJobs": "{{count}} tarea(s) programada(s) no se copiaron.",
      "skippedOrchestrationRuns": "{{count}} ejecución(es) de discusión/orquestación no se copiaron.",
      "state": {
        "validating": "Validando",
        "reserving": "Reservando nombre destino",
        "creating_main": "Creando sesión principal",
        "creating_subs": "Creando subsesiones",
        "writing_db": "Escribiendo registros del servidor",
        "provider_create": "Creando sesiones del proveedor",
        "writing_pref": "Copiando ajustes Team",
        "committing": "Confirmando",
        "rolling_back": "Revirtiendo",
        "succeeded": "Correcto",
        "failed": "Falló",
        "cancelled": "Cancelado",
        "cleanup_required": "Limpieza requerida"
      },
      "errorCode": {
        "invalid_request": "La solicitud de copia no es válida.",
        "forbidden": "Solo propietarios y administradores pueden copiar grupos de sesiones.",
        "unsupported_command": "El daemon aún no informó compatibilidad para copiar grupos de sesiones. Actualízalo o reconéctalo e inténtalo de nuevo.",
        "source_not_found": "No se encontró la sesión origen.",
        "source_not_role_compatible": "Solo se pueden copiar sesiones principales brain compatibles con el rol.",
        "blank_target_project": "El nombre del proyecto destino es obligatorio.",
        "name_taken": "Ese nombre de sesión destino ya está en uso.",
        "invalid_cwd": "El directorio de trabajo no se pudo usar en el host del daemon.",
        "incomplete_clone_spec": "A una sesión hija en ejecución le faltan ajustes de inicio copiables.",
        "unsupported_session_type": "Una de las sesiones aún no se puede copiar.",
        "p2p_config_invalid": "La configuración Team no se pudo copiar.",
        "persist_failed": "La copia no se pudo guardar.",
        "idempotency_conflict": "Esta clave de reintento ya se usó para otra solicitud de copia.",
        "server_commit_failed": "El servidor no pudo confirmar las sesiones copiadas.",
        "server_p2p_commit_failed": "El servidor no pudo copiar los ajustes Team.",
        "cancelled": "La copia fue cancelada.",
        "cleanup_required": "La copia necesita limpieza manual antes de reintentar.",
        "internal_error": "La copia falló inesperadamente."
      },
      "warningCode": {
        "running_source_excluded_state": "Se excluye el trabajo en ejecución del origen",
        "p2p_prompt_session_reference": "Una referencia Team de texto libre aún puede mencionar el origen",
        "p2p_skipped_participant_dropped": "El participante Team omitido se quitó de la copia",
        "skipped_member": "Se omitió un miembro",
        "scheduled_work_skipped": "No se copió trabajo programado",
        "p2p_config_missing": "No se encontró configuración Team para copiar",
        "rollback_partial": "La reversión fue parcial"
      },
      "cleanupResourceKind": {
        "daemon_session": "sesión daemon",
        "daemon_p2p_scope": "configuración Team del daemon",
        "server_db_session": "fila de sesión del servidor",
        "server_p2p_pref": "preferencia Team del servidor",
        "provider_session": "sesión del proveedor"
      },
      "skippedReason": {
        "stopped": "detenida",
        "error": "error",
        "closed": "cerrada",
        "hidden": "oculta",
        "nested": "hija anidada",
        "server_only_orphan": "huérfana solo del servidor",
        "unsupported": "no compatible",
        "incomplete_spec": "ajustes incompletos"
      }
    },
    "agentType": {
      "openclaw": "OpenClaw",
      "qwen": "Qwen Code",
      "claude_code_sdk": "Claude Code SDK",
      "codex_sdk": "Codex SDK",
      "claude_code_cli": "Claude Code CLI",
      "codex_cli": "Codex CLI",
      "copilot_sdk": "Copilot",
      "cursor_headless": "Cursor",
      "gemini_sdk": "Gemini SDK",
      "kimi_sdk": "Kimi Code"
    },
    "agentGroup": {
      "transport_sdk": "SDK",
      "cli_process": "CLI"
    },
    "openclaw_not_connected": "no conectado",
    "openclaw_connect_hint": "El gateway de OpenClaw no está conectado. Ejecuta el siguiente comando en tu máquina daemon:",
    "sessionMode": "Modo de sesión",
    "newSession": "Nueva sesión",
    "bindExisting": "Vincular sesión OC existente",
    "selectSession": "Seleccionar sesión",
    "loadingSessions": "Cargando sesiones...",
    "noSessions": "No hay sesiones disponibles",
    "description": "Descripción",
    "descriptionPlaceholder": "Persona o propósito de la sesión (opcional)",
    "sessionKey": "Clave de sesión",
    "autoGenerate": "Generar automáticamente",
    "codex_ctx_short": "ctx",
    "codex_5h_short": "5 h",
    "codex_wk_short": "sem",
    "codex_ctx_title": "Contexto restante {{percent}}%",
    "codex_limit_title": "{{label}} restante {{percent}}% · se restablece {{reset}}",
    "provider_plan_title": "Plan: {{value}}",
    "provider_quota_title": "Cuota: {{value}}",
    "weekly_quota_authorize": "Mostrar límite semanal",
    "weekly_quota_authorize_hint": "Autorizar la lectura de tu token local de Claude para mostrar el límite semanal (7 días)",
    "weekly_quota_confirm": "Esto leerá tu token de inicio de sesión local de Claude para obtener el límite semanal (7 días). ¿Autorizar?",
    "provider_quota_usage_title": "Uso de cuota: {{value}}",
    "history_loading_label": "Historial",
    "history_step_cache": "caché",
    "history_step_text_tail": "cola rápida",
    "history_step_daemon": "daemon",
    "history_step_http": "relleno HTTP",
    "history_step_older": "anteriores",
    "provider_plan_free": "Gratis",
    "provider_plan_paid": "De pago",
    "provider_plan_byo": "Propia clave",
    "qwen_tier_free": "Gratis",
    "qwen_tier_paid": "De pago",
    "qwen_tier_byo": "Propia clave",
    "qwen_source_title": "Origen de Qwen: {{tier}}",
    "qwen_model_title": "Origen de Qwen: {{tier}} · Modelo: {{model}}",
    "p2p_tag": "Team",
    "thinking": "Nivel",
    "thinking_title": "Nivel: {{value}}",
    "supervision": {
      "title": "Supervisión de sesión",
      "help": "Primero define los valores globales por defecto para nuevas sesiones con Auto y, cuando haga falta, sobreescríbelos para esta sesión.",
      "globalDefaultsTitle": "Valores globales por defecto",
      "globalDefaultsHelp": "Se usan para rellenar nuevas sesiones transport con Auto. Aquí guardas tu backend, modelo y timeout por defecto para supervisión.",
      "sessionConfigTitle": "Esta sesión",
      "sessionConfigHelp": "Solo se aplica a la sesión actual. Aquí backend/modelo/timeout pueden sobrescribir los valores globales, mientras que el modo de auditoría y las instrucciones personalizadas siguen siendo solo de esta sesión.",
      "intro": {
        "title": "Qué hace Auto",
        "howToUseTitle": "Cómo usarlo",
        "howToUseBody": "Elige Off, Supervised o Supervised + audit. Después selecciona el backend y el modelo del supervisor, guarda la configuración y deja Auto activado para esta sesión. El modo audit añade una cadena de auditoría y un límite de ciclos de retrabajo.",
        "purposeTitle": "Para qué sirve",
        "purposeBody": "Auto permite que un modelo supervisor decida si la tarea actual ya terminó, debe continuar automáticamente o necesita intervención humana. El modo audit añade una segunda revisión de la implementación antes de devolver el control.",
        "howItWorksTitle": "Cómo funciona",
        "howItWorksBody": "Cuando la sesión entra en idle, IM.codes envía el contexto reciente de la tarea al supervisor configurado, interpreta una decisión estructurada y luego detiene, continúa automáticamente o vuelve al manejo manual. Si audit está activado, la respuesta completada también puede entrar en un ciclo automático de auditoría y retrabajo.",
        "expandHint": "Mostrar detalles",
        "collapseHint": "Ocultar"
      },
      "mode": {
        "off": "Desactivado",
        "supervised": "Supervisado",
        "supervised_audit": "Supervisado+auditoría"
      },
      "backend": "Backend",
      "model": "Modelo",
      "timeout": "Tiempo límite (s)",
      "selectBackend": "Selecciona backend",
      "selectModel": "Selecciona modelo",
      "customInstructionsLabel": "Instrucciones personalizadas",
      "customInstructionsPlaceholder": "Ejemplo: exige pruebas y verificación antes de marcar la tarea como completa.",
      "customInstructionsHelp": "Opcional. Estas instrucciones se añaden a los prompts de supervisión y continue de Auto solo para esta sesión.",
      "globalCustomInstructionsLabel": "Instrucciones personalizadas globales",
      "globalCustomInstructionsPlaceholder": "Ejemplo: prefiere siempre escribir pruebas en lugar de comentar código que falla.",
      "globalCustomInstructionsHelp": "Opcional. Se aplica a todas las sesiones con Auto habilitado a menos que la sesión lo anule a continuación.",
      "customInstructionsOverrideLabel": "Anular las instrucciones globales",
      "customInstructionsOverrideHelp": "Si se marca, esta sesión solo usa las instrucciones de arriba. Si no, las globales se añaden antes separadas por una línea en blanco.",
      "customInstructionsMergedPreviewHeading": "Instrucciones fusionadas enviadas al supervisor:",
      "presetLabel": "Preset (paquete de entorno)",
      "presetHelp": "Enruta al supervisor a través de un endpoint preconfigurado con su propia base URL, clave API y modelo fijo. Los presets se administran desde el panel de Contexto compartido.",
      "presetNone": "(ninguno)",
      "auditMode": {
        "audit": "Auditoría",
        "review": "Revisión",
        "audit_plan": "Auditoría → plan",
        "review_plan": "Revisión → plan",
        "audit_review_plan": "Auditoría → revisión → plan"
      },
      "selectAuditMode": "Selecciona modo de auditoría",
      "maxAuditLoops": "Máx. ciclos de auditoría",
      "maxAutoContinueStreak": "Máx. auto-continuaciones repetidas",
      "maxAutoContinueStreakHelp": "Detiene Auto tras este número de decisiones continue consecutivas del mismo tipo. 0 = sin límite.",
      "maxAutoContinueTotal": "Máx. duro de auto-continuaciones",
      "maxAutoContinueTotalHelp": "Límite absoluto de todos los auto-continue en una sola ejecución de tarea. 0 = sin límite.",
      "summaryTitle": "Supervisión resuelta",
      "summaryMode": "Modo: {{value}}",
      "summaryBackendModel": "Backend: {{backend}} · Modelo: {{model}}",
      "summaryUnset": "sin configurar",
      "summaryDisabled": "Supervisión desactivada",
      "summaryTimeout": "Tiempo límite: {{value}}",
      "summaryContinueLimits": "Límites de continue: racha {{streak}} · duro {{total}}",
      "summaryCustomInstructions": "Instrucciones personalizadas: {{value}}",
      "summaryCustomInstructionsSet": "configuradas",
      "summaryAudit": "Auditoría: {{auditMode}} · ciclos {{loops}}",
      "summaryMeta": "Prompt {{promptVersion}}, reparación {{repairVersion}}, reintentos de parseo {{parseRetries}}, task-run {{taskRunVersion}}",
      "disabledHint": "La supervisión solo está disponible para sesiones transport.",
      "unsupported": "La configuración de supervisión no está disponible para sesiones process.",
      "validation": {
        "backendRequired": "Selecciona un backend de supervisión.",
        "modelRequired": "Selecciona o introduce un modelo de supervisión.",
        "modelInvalid": "El modelo no es válido para {{backend}}.",
        "auditModeRequired": "Selecciona un modo de auditoría."
      },
      "modeLabel": "Modo",
      "auditModeLabel": "Modo de auditoría",
      "invalidStoredConfig": "La configuración guardada de supervisión no es válida. La automatización seguirá desactivada hasta que la repares y la guardes.",
      "quickLabel": "Auto",
      "quickTitle": "Modo automático"
    },
    "approval": {
      "pending": "Se requiere aprobación",
      "allow": "Permitir",
      "deny": "Denegar",
      "tool": "{{tool}} requiere aprobación"
    },
    "workingDirPlaceholder": "~/projects/myapp"
  },
  "server": {
    "upgrade_daemon": "↑ Actualizar Daemon",
    "upgrade_all": "↑ Actualizar Todos",
    "delete": "✕ Eliminar servidor",
    "upgrade_sent": "Comando de actualización enviado a \"{{name}}\". El daemon instalará la última versión y se reiniciará.",
    "upgrade_failed": "Error al enviar el comando de actualización. El daemon puede estar desconectado.",
    "delete_title": "Eliminar servidor: {{name}}",
    "delete_warning": "Esto eliminará todos los enlaces y registros de sesión del servidor, y notificará al daemon para que detenga y elimine las credenciales locales.",
    "delete_tmux_note": "Las sesiones de tmux no se cerrarán",
    "delete_tmux_suffix": ", pero el daemon ya no se iniciará automáticamente.",
    "delete_confirm_prompt": "Escribe el nombre del servidor para confirmar la eliminación:",
    "delete_confirm": "Confirmar eliminación"
  },
  "quick_input": {
    "title": "Entrada rápida",
    "commands": "Comandos rápidos",
    "phrases": "Frases rápidas",
    "history": "Historial",
    "this_session": "Esta sesión",
    "all": "Todo",
    "no_history_session": "Sin historial para esta sesión",
    "no_history": "Sin historial aún — los mensajes se guardan automáticamente",
    "clear_history": "Limpiar historial",
    "add_command": "＋ Comando",
    "add_phrase": "＋ Frase",
    "label_command": "Comando",
    "label_phrase": "Frase",
    "placeholder_phrase": "corregir este problema",
    "newer": "← Más reciente",
    "older": "Más antiguo →",
    "loading": "Cargando…",
    "tab_quick": "Rápido",
    "tab_files": "Archivos",
    "confirm_delete": "¿Eliminar este elemento?"
  },
  "file_browser": {
    "title_dir": "Seleccionar directorio",
    "title_file": "Seleccionar archivos",
    "select": "Seleccionar",
    "insert": "Insertar {{count}}",
    "browse": "Explorar",
    "show_hidden": "Ocultos",
    "this_pc": "Este equipo",
    "home": "Inicio",
    "selected_count": "{{count}} seleccionados",
    "timeout": "Tiempo de espera agotado",
    "timeout_detail": "No se pudo leer el directorio. Puede ser causado por unidades de red lentas o no disponibles.",
    "preview_loading": "Cargando…",
    "preview_too_large": "Archivo demasiado grande para previsualizar (> 100 MB)",
    "preview_error": "Vista previa no disponible",
    "preview_binary": "Archivo binario — vista previa no disponible",
    "preview_video_unsupported": "Tu navegador no puede reproducir este formato de vídeo.",
    "mkdir_failed": "No se pudo crear la carpeta",
    "create_file_failed": "No se pudo crear el archivo",
    "file_exists": "El archivo ya existe",
    "view_diff": "Diff",
    "view_source": "Fuente",
    "view_rendered": "Renderizado",
    "tab_files": "Archivos",
    "tab_changes": "Cambios",
    "changes_title": "Cambios ({{count}})",
    "no_changes": "Sin cambios"
  },
  "toast": {
    "finished": "terminó",
    "upgrade_blocked_title": "Actualización bloqueada",
    "upgrade_blocked_p2p_active": "Team sigue en ejecución. Deténlo antes de actualizar el daemon.",
    "upgrade_blocked_toolchain_unavailable": "Falta Node en el host del daemon (toolchain eliminado). Reinstala Node; la actualización automática está deshabilitada hasta entonces."
  },
  "discussion": {
    "role_critic": "Crítico",
    "role_pragmatist": "Pragmático",
    "role_innovator": "Innovador",
    "role_custom": "Personalizado...",
    "arbiter": "Árbitro",
    "arbiter_active": "⚖️ Árbitro",
    "starting": "Iniciando…",
    "start_failed_title": "No se pudo iniciar la discusión",
    "start_failed_offline": "Estás sin conexión: vuelve a conectarte e inténtalo de nuevo.",
    "dialog_title": "Iniciar discusión",
    "start_button": "Iniciar discusión",
    "field_topic": "Tema",
    "topic_placeholder": "Describe lo que quieres que discutan los agentes…",
    "field_cwd": "Directorio de trabajo",
    "field_participants": "Participantes",
    "add_participant": "+ Añadir",
    "field_max_rounds": "Rondas máximas",
    "team_label": "Equipo",
    "complete_status": "Completado",
    "failed_status": "Fallido",
    "error": {
      "missing_fields": "Faltan campos obligatorios (tema y al menos dos participantes).",
      "generic": "No se pudo iniciar la discusión. Inténtalo de nuevo."
    }
  },
  "new_session": {
    "project_required": "El nombre del proyecto es obligatorio",
    "dir_required": "El directorio de trabajo es obligatorio",
    "not_connected": "No conectado al daemon",
    "daemon_offline": "El daemon está desconectado — verifica que imcodes daemon esté en ejecución",
    "start": "Iniciar",
    "starting": "Iniciando...",
    "timeout": "Tiempo de espera agotado para iniciar la sesión. Revisa los registros del daemon.",
    "title": "Iniciar nueva sesión",
    "project_name": "Nombre del proyecto",
    "working_directory": "Directorio de trabajo",
    "browse": "Examinar",
    "agent_type": "Tipo de agente",
    "agent_flavor_cli": "CLI: interfaz nativa para quienes prefieren la UI original. El modo chat no admite streaming.",
    "agent_flavor_sdk": "SDK: admite streaming y usa una interfaz más simple.",
    "qwen_provider_hint": "Si necesitas un Coding Plan de terceros, elige Qwen Code.",
    "qwen_provider_selected_hint": "Qwen Code puede usar proveedores externos de Coding Plan compatibles con Anthropic mediante los presets de API Provider de abajo.",
    "custom_provider_sdk": "SDK de proveedor personalizado",
    "custom_provider_sdk_help": "Usa el transporte Qwen SDK como capa de compatibilidad y elige abajo un preset de API Provider.",
    "custom_provider_preset": "Preset de proveedor personalizado",
    "custom_provider_preset_required": "Elige o agrega un preset de API Provider para el SDK de proveedor personalizado.",
    "compatible_api_via_qwen": "API compatible (vía Qwen)",
    "api_provider": "Proveedor de API",
    "api_provider_add_edit": "+ Agregar / Editar",
    "api_provider_default": "Predeterminado (Anthropic)",
    "api_provider_default_help": "Predeterminado (Anthropic) — haz clic en \"+ Agregar / Editar\" para configurarlo",
    "api_provider_import_json": "Importar JSON",
    "api_provider_export_json": "Exportar JSON",
    "api_provider_import_error": "No se pudo importar el JSON del preset desde el portapapeles",
    "api_provider_export_success": "JSON del preset copiado al portapapeles",
    "api_provider_export_error": "No se pudo copiar el JSON del preset al portapapeles"
  },
  "api_key": {
    "copy": "Copiar",
    "copied": "¡Copiado!",
    "label_placeholder": "Etiqueta (opcional)",
    "generate": "Generar clave",
    "generating": "Generando...",
    "revoke": "Revocar",
    "save_once": "Guarda esta clave: no se mostrará otra vez",
    "raw_key": "Clave API",
    "bind_url": "URL de vinculación",
    "bind_command": "Comando de vinculación",
    "copy_bind_command": "Copiar comando",
    "dismiss": "Cerrar"
  },
  "getting_started": {
    "step1_pending": "Paso 1: Genera una clave API",
    "step1_done": "✓ Paso 1: Clave API lista"
  },
  "language": {
    "label": "Idioma",
    "en": "English",
    "zh_CN": "中文（简体）",
    "zh_TW": "中文（繁體）",
    "es": "Español",
    "ru": "Русский",
    "ja": "日本語",
    "ko": "한국어"
  },
  "login": {
    "subtitle": "Controla remotamente tus agentes de codificación IA",
    "passkey_signin": "Iniciar sesión con Passkey",
    "passkey_create": "Crear cuenta con Passkey",
    "passkey_register_hint": "Ingresa tu nombre y registra la passkey de tu dispositivo (Face ID, Touch ID, Windows Hello…)",
    "passkey_register_btn": "Registrar Passkey",
    "passkey_error": "La autenticación con passkey falló. Por favor, inténtalo de nuevo.",
    "passkey_not_found": "No se encontró passkey para este sitio. Regístrate primero o inicia sesión con GitHub.",
    "display_name_placeholder": "Tu nombre (ej: Alice)",
    "device_name_placeholder": "Nombre del dispositivo (opcional, ej: MacBook Pro)",
    "or": "o",
    "github_signin": "Iniciar sesión con GitHub",
    "password_signin": "Iniciar sesión con contraseña",
    "username_placeholder": "Nombre de usuario",
    "password_placeholder": "Contraseña",
    "signin": "Iniciar sesión",
    "remember_password": "Recordar contraseña en este dispositivo",
    "invalid_credentials": "Nombre de usuario o contraseña incorrectos",
    "account_pending": "Tu cuenta está pendiente de aprobación del administrador. Por favor, contacta al administrador.",
    "account_disabled": "Tu cuenta ha sido deshabilitada. Por favor, contacta al administrador.",
    "must_change_password": "Debes cambiar tu contraseña antes de continuar",
    "new_password_placeholder": "Nueva contraseña",
    "confirm_password_placeholder": "Confirmar nueva contraseña",
    "change_password_btn": "Cambiar contraseña",
    "passwords_mismatch": "Las contraseñas no coinciden",
    "password_too_short": "La contraseña debe tener al menos 8 caracteres",
    "password_missing_uppercase": "La contraseña debe contener al menos una letra mayúscula",
    "password_missing_lowercase": "La contraseña debe contener al menos una letra minúscula",
    "password_missing_digit": "La contraseña debe contener al menos un número",
    "password_register": "Crear cuenta con contraseña",
    "password_register_btn": "Crear cuenta",
    "password_register_hint": "Elige un nombre de usuario y una contraseña segura (al menos 8 caracteres con mayúsculas, minúsculas y un número).",
    "username_taken": "Este nombre de usuario ya está en uso",
    "registration_disabled": "El registro está deshabilitado actualmente",
    "invalid_username_format": "El nombre de usuario debe tener 3-32 caracteres, comenzar y terminar con letra o número",
    "nonce_exchange_failed": "La autenticación se completó, pero la conexión falló. Por favor, inténtalo de nuevo.",
    "native_callback_fallback": "Toca aquí si no se redirige automáticamente",
    "native_status_getting_challenge": "Obteniendo desafío…",
    "native_status_authenticating": "Autenticando…",
    "native_status_getting_api_key": "Obteniendo clave API…",
    "native_status_redirecting": "Redirigiendo…",
    "native_status_creating_passkey": "Creando passkey…",
    "native_status_registering": "Registrando…",
    "native_status_saving": "Guardando…",
    "native_status_logging_in": "Iniciando sesión…"
  },
  "serverSetup": {
    "title": "Elegir servidor",
    "description": "Ingresa la dirección de tu servidor IM.codes",
    "placeholder": "https://your-server.com",
    "connect": "Conectar",
    "useDefault": "Usar servidor predeterminado",
    "verifying": "Verificando...",
    "error": "No se puede alcanzar el servidor. Verifica la URL e intenta de nuevo.",
    "errorNotHttps": "La URL del servidor debe usar HTTPS",
    "changeServer": "Cambiar servidor",
    "addServer": "+ Agregar servidor",
    "httpWarning": "Advertencia: las conexiones HTTP no son seguras. Usa HTTPS para servidores que no sean localhost."
  },
  "passkey": {
    "title": "Passkeys",
    "none": "No hay passkeys registradas",
    "add": "Agregar Passkey",
    "add_error": "Error al agregar la passkey. Por favor, inténtalo de nuevo.",
    "delete_error": "Error al eliminar la passkey.",
    "unnamed": "Dispositivo sin nombre",
    "added": "Agregada",
    "last_used": "último uso",
    "device_name_placeholder": "Nombre del dispositivo (opcional)"
  },
  "account": {
    "delete_title": "Eliminar cuenta",
    "delete_warning": "Esta accion es permanente. Todos tus servidores, sesiones, claves API, passkeys y otros datos seran eliminados permanentemente.",
    "delete_btn": "Eliminar cuenta",
    "delete_confirm_prompt": "Escribe DELETE para confirmar la eliminacion de la cuenta:",
    "delete_confirm": "Eliminar permanentemente",
    "delete_error": "Error al eliminar la cuenta. Por favor, intentalo de nuevo."
  },
  "voice": {
    "listening": "Escuchando...",
    "paused": "Pausado",
    "speak_now": "Habla ahora...",
    "voice_input": "Entrada de voz",
    "stop_voice": "Detener entrada de voz",
    "send": "Enviar",
    "mic_permission_failed": "Error al iniciar — verifica los permisos de micrófono/reconocimiento de voz en Ajustes",
    "error": "Error de voz: {{error}}"
  },
  "p2p": {
    "final_original_request_reminder": "No te quedes solo en el resumen de la discusión. Después de sintetizarla, asegúrate de responder y ejecutar directamente la solicitud original del usuario.\nLa solicitud original del usuario es: \"{{request}}\"",
    "post_summary_execute_prompt": "La discusión Team ha terminado. Usa el archivo de discusión como contexto y luego cumple directamente la solicitud original del usuario en esta sesión.\nArchivo de discusión: {{discussionFile}}\nLa solicitud original del usuario es: \"{{request}}\"\nNo te quedes otra vez solo en un resumen de la discusión.",
    "discussion_language_instruction": "Responde en {{language}}.",
    "ring": {
      "active": "R{{round}}/{{totalRounds}}",
      "label_active": "Round {{round}}/{{totalRounds}}",
      "active_hops": "R{{round}}/{{totalRounds}} H{{hop}}/{{totalHops}}"
    },
    "status": {
      "done": "Hecho",
      "active": "Activo",
      "pending": "Pendiente",
      "skipped": "Omitido",
      "queued": "En cola",
      "dispatched": "Enviado",
      "running": "En curso",
      "awaiting_next_hop": "Esperando siguiente salto",
      "completed": "Completado",
      "failed": "Falló",
      "timed_out": "Tiempo agotado",
      "cancelled": "Cancelado",
      "setup": "Preparando"
    },
    "discussions": {
      "title": "Discusiones",
      "live_progress": "Progreso en vivo",
      "slogan": "IM.codes - the IM for agents",
      "hide": "Ocultar",
      "show": "Mostrar",
      "untitled": "Discusión",
      "empty": "Aún no hay discusiones Team. Usa @@all(discuss) o @agent para iniciar una.",
      "select": "Selecciona una discusión para verla",
      "load_failed": "(No se pudo cargar)",
      "phase_initial": "Inicial",
      "phase_hop": "Salto",
      "phase_summary": "Resumen",
      "phase_execution": "Ejecutar",
      "phase_queued": "En cola",
      "round_label": "Ronda",
      "hop_label": "Salto",
      "auto_follow_latest": "Seguir lo último automáticamente",
      "copy_path": "Copiar ruta",
      "copy_content": "Copiar contenido",
      "scroll_top": "Ir arriba",
      "scroll_bottom": "Ir abajo"
    },
    "mode_solo": "Solo",
    "mode_audit": "Auditoría",
    "mode_review": "Revisión",
    "mode_plan": "Planificación",
    "mode_brainstorm": "Lluvia de ideas",
    "mode_discuss": "Discusión",
    "combo_label": "Combo",
    "combo_presets": "Combos predefinidos",
    "combo_custom": "Mis combos",
    "combo_custom_empty": "Aun no hay combos personalizados.",
    "combo_builder": "Agregar nuevo combo",
    "combo_recommended_hint": "Recomendado para la mayoría de tareas de auditoría.",
    "exclude_same_type": "Excluir mismo tipo",
    "picker": {
      "back": "Atrás",
      "files": "Archivos",
      "agents": "Agentes",
      "search_project_files": "Buscar archivos del proyecto",
      "quick_discussion_with_agent": "Discusión rápida con un agente",
      "team": "Team",
      "team_desc": "Iniciar una discusión Team",
      "select_mode": "Seleccionar modo",
      "all_agents": "Todos los Agentes",
      "sessions": "sesiones",
      "type_to_search": "escribe para buscar",
      "keep_typing": "Sigue escribiendo...",
      "no_files_found": "No se encontraron archivos",
      "no_agents_available": "No hay agentes disponibles",
      "you": "Tú",
      "busy": "Ocupado"
    },
    "mode": {
      "audit": "Auditoría",
      "review": "Revisión",
      "plan": "Planificación",
      "brainstorm": "Lluvia de ideas",
      "discuss": "Discusión"
    },
    "team_button": "Equipo",
    "mode_config": "Config",
    "dropdown": {
      "tab_combos": "Combos",
      "tab_workflows": "Flujos",
      "solo_hint": "Elige un flujo abajo para iniciar un flujo de trabajo",
      "team_intro_title": "Discusión en equipo",
      "team_intro_body": "Los agentes discuten, resumen, implementan y luego revisan el resultado. Más rondas repiten el ciclo para reforzarlo.",
      "team_intro_tooltip": "Discusión → resumen → implementación → revisión. Más rondas repiten el ciclo sobre el resultado anterior.",
      "workflows_empty": "Aún no hay flujos guardados. Abre Ajustes → Flujo de trabajo avanzado para diseñar uno.",
      "workflows_manage": "Gestionar flujos"
    },
    "settings_button": "Ajustes",
    "settings_title": "Ajustes de discusión Team",
    "settings_process_title": "Flujo de discusión Team",
    "settings_process_body": "El modo Team ejecuta un ciclo de discusión, resumen, implementación y revisión. Una ronda completa el ciclo una vez; las rondas adicionales usan el resultado anterior como contexto para otra auditoría/revisión, de modo que los agentes puedan detectar requisitos omitidos, riesgos de regresión, casos límite y huecos de pruebas antes de dar el trabajo por terminado.",
    "alpha_badge": "Alpha",
    "alpha_hint": "Capacidad experimental; aún no está validada formalmente.",
    "cross_session": "Incluir sesiones de otros proyectos",
    "tab": {
      "advanced_workflow": "Flujo de trabajo avanzado",
      "advanced_workflow_intro": "Diseña un flujo de trabajo Team dirigido. Los nodos son rondas de agentes (LLM, script o puertas lógicas); las aristas controlan el enrutamiento. Las ediciones aquí anulan la canalización simple de rondas/modos configurada en Agentes.",
      "advanced_workflow_alpha_notice": "Capacidad experimental; aún no está validada formalmente. Para trabajo crítico, usa los combos predefinidos.",
      "advanced_workflow_empty_hint": "Inicializando un borrador de flujo de trabajo en blanco. Añade nodos y aristas en el lienzo de abajo para diseñar tu canalización Team.",
      "advanced_workflow_starter_title": "Flujo de trabajo sin título",
      "advanced_workflow_starter_node_title": "Inicio"
    },
    "settings_filter_sdk": "SDK",
    "settings_filter_cli": "CLI",
    "settings_save": "Guardar",
    "settings_save_and_close": "Guardar y cerrar",
    "settings_close": "Cerrar",
    "confirm_cancel": "¿Seguro que desea cancelar?",
    "combo_send_confirm_title": "Confirmar envío combinado",
    "combo_send_confirm_body": "Este mensaje se enviará directamente con el flujo combinado {{mode}}. ¿Continuar?",
    "combo_send_confirm_skip": "No volver a preguntar, enviar directamente la próxima vez",
    "combo_empty_message_warning": "El envío combinado requiere un mensaje real. Agrega texto antes de enviarlo.",
    "combo_requires_participants_hint": "Elige participantes de Team en Configuración para habilitar los modos combinados.",
    "member_cannot_initiate_discussion": "Esta sesión es miembro de Team, por lo que no puede iniciar una discusión. Iníciala desde otra sesión (se recomienda un modelo de primer nivel).",
    "settings_enabled": "Participar",
    "settings_mode": "Modo",
    "settings_skip": "Omitir",
    "settings_default_hint": "Sesiones nuevas por defecto: habilitado + audit",
    "settings_rounds": "Rondas",
    "settings_rounds_hint": "Ciclos de revisión",
    "settings_rounds_explanation": "Cada ronda es un ciclo completo de análisis multiagente: se discute y ejecuta la solicitud, y después se inicia otro ciclo compuesto de auditoría/revisión para detectar omisiones, riesgos de regresión y casos límite antes de reforzar el resultado.",
    "settings_hop_timeout": "Timeout por hop",
    "settings_hop_timeout_unit": "minutos por hop",
    "settings_hop_timeout_hint": "Tiempo de espera para cada agente. Aumente para tareas complejas.",
    "settings_extra_prompt": "Instrucciones extra",
    "settings_extra_prompt_hint": "Instrucciones adicionales para todos (ej. \"Responder en español\")",
    "settings_advanced_title": "Flujo avanzado",
    "settings_advanced_preset": "Preajuste avanzado",
    "settings_advanced_run_timeout": "Límite total del flujo",
    "settings_advanced_run_timeout_unit": "minutos en total",
    "settings_advanced_rounds": "Rondas avanzadas",
    "settings_context_reducer_mode": "Modo del reductor",
    "settings_context_reducer_reuse": "Reutilizar participante SDK existente",
    "settings_context_reducer_clone": "Clonar plantilla de sesión SDK",
    "settings_context_reducer_session": "Participante reductor",
    "settings_context_reducer_template": "Participante plantilla",
    "settings_single_main": "Solo principal",
    "settings_multi_dispatch": "Despacho múltiple",
    "settings_round_timeout": "Límite por ronda",
    "settings_verdict_policy": "Política de veredicto",
    "settings_smart_gate": "Puerta inteligente",
    "settings_forced_rework": "Retrabajo forzado",
    "settings_jump_target": "Destino del salto",
    "settings_jump_marker": "Marcador de salto",
    "settings_min_triggers": "Activaciones mínimas",
    "settings_max_triggers": "Activaciones máximas",
    "settings_artifact_outputs": "Salidas de artefactos",
    "settings_prompt_append": "Prompt adicional",
    "all_label": "Todos",
    "all_rounds": "{{count}} ronda",
    "all_rounds_plural": "{{count}} rondas",
    "all_plus": "Todos + rondas personalizadas",
    "all_preview_empty": "Sin participantes configurados",
    "single_agent_prompt": {
      "title": "¿Agregar más agentes?",
      "body": "Has seleccionado solo un agente.",
      "tip_multi": "Usar varios agentes de distintos tipos/proveedores ayuda a romper el pensamiento fijo y normalmente da el mejor resultado.",
      "tip_rounds": "Para discusiones Team, 2 rondas suelen dar el mejor resultado.",
      "dont_show_again": "No volver a mostrar para esta cuenta",
      "more_agents": "@ Más",
      "send_anyway": "Enviar de todos modos",
      "tip_history": "Las discusiones multiagente comparten archivos y conservan mejor historial. Las discusiones uno a uno se tratan como puntuales."
    },
    "settings_workflow_migration_title": "Migración del flujo",
    "settings_workflow_migration_body": "Esta configuración avanzada guardada usa el formato antiguo de rondas. Guarda para crear un sobre de inicio antes de lanzar Team avanzado.",
    "settings_workflow_migration_ready": "El sobre de inicio del flujo está listo para lanzamientos Team avanzados.",
    "settings_workflow_migration_error": "Falló la migración del flujo avanzado. Revisa las rondas guardadas antes de lanzar.",
    "workflow": {
      "diagnostics": {
        "forbidden_envelope_field": "The launch envelope contains a forbidden private field.",
        "unsupported_schema_version": "This workflow schema version is not supported.",
        "unknown_future_schema_read_only": "This future workflow version is read-only here.",
        "mixed_advanced_schema_fields": "Old and new advanced workflow fields are mixed.",
        "static_policy_mismatch_recompiled": "Daemon policy changed, so the workflow was recompiled.",
        "missing_required_capability": "The daemon is missing a required workflow capability.",
        "capability_stale": "Se perdió el contacto con el daemon — las configuraciones guardadas siguen funcionando, pero los nuevos lanzamientos de flujo avanzado están pausados hasta que el daemon se reconecte (normalmente <30 s).",
        "capability_downgraded_during_run": "A required capability was downgraded during the run.",
        "invalid_launch_envelope": "The workflow launch envelope is invalid.",
        "invalid_workflow_graph": "The workflow graph is invalid.",
        "invalid_routing_authority": "The workflow routing authority is invalid.",
        "invalid_edge_condition": "A workflow edge condition is invalid.",
        "loop_budget_exhausted": "The workflow loop budget was exhausted.",
        "invalid_workflow_variable": "A workflow variable is invalid.",
        "invalid_prompt_append": "A workflow prompt append is invalid.",
        "missing_context_source": "A required workflow context source is missing.",
        "context_source_too_large": "A workflow context source is too large.",
        "unsafe_artifact_path": "A workflow artifact path is unsafe.",
        "artifact_identity_collision_resolved": "An artifact identity collision was resolved.",
        "artifact_baseline_too_large": "An artifact baseline is too large.",
        "artifact_baseline_mismatch": "An artifact baseline did not match.",
        "artifact_contract_not_satisfied": "An artifact contract was not satisfied.",
        "invalid_script_contract": "A workflow script contract is invalid.",
        "script_executable_denied": "The script executable is not allowed.",
        "script_machine_output_invalid": "Script machine output is invalid.",
        "script_timeout": "The script timed out.",
        "script_cancelled": "The script was cancelled.",
        "daemon_busy": "The daemon is busy with other advanced workflows.",
        "workflow_stale_after_restart": "The workflow became stale after daemon restart.",
        "private_projection_field_dropped": "A private projection field was dropped.",
        "legacy_progress_snapshot_sanitized": "A legacy progress snapshot was sanitized.",
        "unknown_p2p_message": "An unknown Team workflow message was ignored.",
        "unmatched_edge_route": "Ninguna arista condicional saliente coincidió con la ruta y no existe arista por defecto."
      },
      "editor": {
        "title": "Borrador de flujo avanzado",
        "add_node": "Añadir nodo",
        "remove_node": "Eliminar nodo",
        "remove_edge": "Eliminar enlace",
        "normalize_banner_one": "{{count}} nodo heredado necesita alinear preset/scope para logic/script. Haz clic en Aplicar.",
        "normalize_banner_other": "{{count}} nodos heredados necesitan alinear preset/scope para logic/script. Haz clic en Aplicar.",
        "normalize_banner": "{{count}} nodo(s) heredado(s) necesitan alinear preset/scope para logic/script. Haz clic en Aplicar.",
        "normalize_apply": "Aplicar",
        "normalize_dismiss": "Descartar",
        "diagnostics_header": "Diagnósticos",
        "read_only_notice": "Este flujo usa un esquema futuro y aquí es de solo lectura.",
        "canvas_hint": "Arrastra los nodos para colocarlos. Arrastra desde el ancla derecha (●) hasta otro nodo para crear un enlace. Rueda del ratón o pellizco para hacer zoom.",
        "zoom_in": "Acercar",
        "zoom_out": "Alejar",
        "zoom_reset": "Restablecer zoom",
        "inspector_empty": "Selecciona un nodo o enlace para editar sus propiedades.",
        "node": {
          "section_label": "Nodo",
          "preset_label": "Predeterminado",
          "permission_scope_label": "Alcance de permiso",
          "dispatch_style_label": "Estilo de despacho",
          "summary_prompt_label": "Prompt de resumen de la ronda (se ejecuta tras este nodo)",
          "script_argv_label": "Comando del script (un argv por línea; la primera línea es el ejecutable)",
          "script_argv_placeholder": "/usr/bin/python3\n/ruta/absoluta/script.py\n--flag\nvalor"
        },
        "edge": {
          "section_label": "Enlace",
          "from_label": "Desde",
          "to_label": "Hacia",
          "condition_label": "Valor de condición"
        }
      },
      "allowed_executables": {
        "title": "Ejecutables permitidos para scripts",
        "hint": "Aplicado al lanzar scripts. Añade rutas absolutas (p.ej. /usr/bin/jq) o nombres relativos al PATH que los nodos de script pueden invocar. Los flujos solo-LLM no necesitan ninguna entrada aquí.",
        "placeholder": "/usr/bin/jq",
        "input_label": "Nueva ruta de ejecutable",
        "add": "Añadir",
        "remove": "Eliminar",
        "empty": "Aún no hay ejecutables permitidos. Los nodos de script de este flujo serán rechazados en bind hasta que añadas al menos una entrada.",
        "script_nodes_need_entries": "Requerido para nodos de script"
      },
      "library": {
        "title": "Biblioteca de flujos",
        "hint": "Flujos guardados para esta sesión. El activo se envía en los lanzamientos Team. Hasta {{max}} entradas.",
        "new": "+ Nuevo",
        "duplicate": "Duplicar",
        "delete": "Eliminar",
        "delete_confirm": "¿Eliminar el flujo de trabajo \"{{title}}\"? Esta acción no se puede deshacer.",
        "copy_suffix": " (copia)",
        "active_badge": "Activo",
        "name_label": "Nombre del flujo",
        "name_placeholder": "p. ej. Flujo auditoría + plan"
      }
    }
  },
  "openspec": {
    "title": "OpenSpec",
    "changes": "Cambios",
    "empty": "No se encontraron cambios de OpenSpec",
    "load_timeout": "Los cambios de OpenSpec tardaron demasiado en cargar. Inténtalo de nuevo cuando el daemon se reconecte.",
    "load_unavailable": "Los cambios de OpenSpec no están disponibles hasta que la conexión con el daemon esté lista.",
    "load_error": "No se pudieron escanear los cambios de OpenSpec",
    "audit_action": "Auditar",
    "audit_implementation_action": "Auditar implementación",
    "audit_spec_action": "Auditar especificación",
    "implement_action": "Implementar",
    "achieve_action": "Completar",
    "propose_action": "Proponer",
    "propose_from_discussion_action": "Desde la discusión reciente",
    "propose_from_description_action": "Desde la descripción de abajo",
    "audit_implementation_prompt": "Realiza una auditoría estricta de la implementación de {{reference}} contra sus artefactos de OpenSpec. Identifica cada discrepancia, omisión, riesgo de regresión, hueco en casos límite y prueba faltante; después corrige el código, las pruebas y cualquier cambio de soporte necesario. Si la implementación exige mover también la especificación, actualiza en la misma tarea los archivos de OpenSpec bajo {{reference}}. No te detengas en un informe: deja la implementación totalmente alineada con la especificación.",
    "audit_spec_prompt": "Realiza una auditoría estricta de la especificación de {{reference}}. Refuerza alcance, requisitos, criterios de aceptación, casos límite, modos de fallo, dependencias y capacidad de prueba; elimina ambigüedades e inconsistencias internas; y actualiza directamente proposal, design, specs y tasks bajo {{reference}} hasta que quede lista para implementar. No te limites a observaciones de revisión.",
    "implement_prompt": "Impulsa con firmeza la implementación de {{reference}}. Divide el trabajo en subtareas concretas, asigna subagentes con propiedad clara, integra sus resultados, cierra las brechas respecto a la especificación, añade o actualiza pruebas y verifica el resultado final. Mantén alineados durante el trabajo los artefactos de OpenSpec bajo {{reference}} en lugar de dejar notas para después. Tú eres responsable de la orquestación, las decisiones técnicas y la aceptación final.",
    "achieve_prompt": "Lleva {{reference}} hasta completarlo usando el flujo completo de OpenSpec. Revisa todas las tareas y artefactos pendientes, completa el trabajo necesario de implementación y especificación, actualiza directamente proposal, design, specs y tasks bajo {{reference}} cuando haga falta, cierra los huecos abiertos, sincroniza las especificaciones afectadas si hace falta y archiva el cambio cuando cumpla los criterios de finalización. No te quedes en el reporte de estado.",
    "propose_from_discussion_prompt": "Genera un cambio de OpenSpec a partir de la discusión reciente. Extrae el objetivo, el alcance, los requisitos clave y los criterios de aceptación, deja los puntos poco claros como pendientes y escribe los artefactos reales bajo openspec/changes/ (proposal, design, specs y tasks) en lugar de quedarte en una nota borrador.",
    "propose_from_description_prompt": "Genera un cambio de OpenSpec a partir de la descripción de abajo. Organiza el objetivo, el alcance, los requisitos clave y los criterios de aceptación, deja los detalles faltantes como pendientes y escribe los artefactos reales bajo openspec/changes/ (proposal, design, specs y tasks) en lugar de quedarte en una nota borrador."
  },
  "upload": {
    "upload_file": "Subir archivo",
    "uploading": "Subiendo...",
    "upload_failed": "Error al subir",
    "file_too_large": "Archivo demasiado grande (máx. {{max}}MB)",
    "long_text_attached": "El texto pegado largo se adjuntó como {{name}}",
    "long_text_requires_attachment": "Este pegado es demasiado grande para el cuadro de texto. Súbelo como archivo.",
    "drop_overlay_title": "Suelta para subir archivos",
    "drop_overlay_hint": "Suelta en cualquier lugar de esta sesión",
    "download_file": "Descargar",
    "downloading": "Descargando...",
    "preview_unavailable": "Vista previa no disponible",
    "download_expired": "Enlace de descarga expirado",
    "download_timeout": "Tiempo de descarga agotado",
    "download_failed": "Descarga fallida",
    "daemon_offline": "Daemon desconectado"
  },
  "settings": {
    "title": "Configuración",
    "back": "← Volver",
    "team_discussion_label": "Modo de discusión Team",
    "team_discussion_title": "Usa varios agentes para trabajo complejo",
    "team_discussion_body": "La discusión Team no es solo para código. También sirve para documentos complejos, propuestas, auditorías y decisiones. Modelos distintos se cuestionan y se complementan para producir resultados más rigurosos.",
    "team_discussion_point_1": "Escribe primero el tema en el cuadro de entrada y luego elige un modo de discusión para iniciar.",
    "team_discussion_point_2": "Para trabajos difíciles, añade rondas para revisar y reforzar la conclusión anterior.",
    "team_discussion_point_3": "Auditorías OpenSpec, propuestas complejas, revisiones de código y decisiones de arquitectura son buenos casos para detectar puntos ciegos de un solo modelo.",
    "display_name": "Nombre visible",
    "no_name": "No establecido",
    "edit": "Editar",
    "save": "Guardar",
    "name_placeholder": "Ingresa el nombre visible",
    "name_saved": "Nombre visible actualizado",
    "name_error": "Error al actualizar el nombre visible",
    "change_password": "Cambiar contraseña",
    "old_password": "Contraseña actual",
    "new_password": "Nueva contraseña",
    "confirm_password": "Confirmar nueva contraseña",
    "change_password_btn": "Cambiar contraseña",
    "password_changed": "Contraseña cambiada exitosamente",
    "password_error": "Error al cambiar la contraseña. Verifica tu contraseña actual.",
    "passwords_mismatch": "Las contraseñas no coinciden",
    "password_too_short": "La contraseña debe tener al menos 8 caracteres",
    "password_missing_uppercase": "La contraseña debe contener al menos una letra mayúscula",
    "password_missing_lowercase": "La contraseña debe contener al menos una letra minúscula",
    "password_missing_digit": "La contraseña debe contener al menos un número",
    "privacy_policy": "Política de privacidad",
    "terms_of_service": "Términos de servicio",
    "account_identity": "Identidad de la cuenta",
    "username": "Nombre de usuario",
    "no_username": "Sin configurar",
    "username_placeholder": "Elige un nombre de usuario",
    "username_required": "El nombre de usuario es obligatorio",
    "username_invalid": "Usa 3-32 caracteres: letras minúsculas, números, punto, guion bajo o guion",
    "username_taken": "Ese nombre de usuario ya está en uso",
    "set_password_login": "Configurar inicio con contraseña",
    "set_password_hint": "Las cuentas con passkey no tienen nombre de usuario ni contraseña por defecto. Verifica tu passkey una vez y luego configura ambos para poder iniciar sesión también con contraseña.",
    "set_password_btn": "Verificar passkey y configurar contraseña",
    "password_setup_success": "El acceso con contraseña ya está listo",
    "password_setup_error": "No se pudo configurar el acceso con contraseña. Verifica tu passkey y vuelve a intentarlo.",
    "passkey_verify_browser_only": "La verificación de passkey para configurar contraseña solo está disponible en el navegador web.",
    "passkey_verify_wrong_account": "Esa passkey pertenece a otra cuenta. Verifica con la passkey registrada en esta cuenta.",
    "passkey_verify_no_passkeys": "No hay passkeys registradas para esta cuenta.",
    "native_status_verifying_passkey": "Verificando passkey…",
    "native_status_saving_password": "Guardando acceso con contraseña…"
  },
  "admin": {
    "title": "Panel de administración",
    "back": "← Volver",
    "settings": "Configuración",
    "users": "Usuarios",
    "load_error": "Error al cargar datos de administración",
    "action_error": "La acción falló",
    "registration_enabled": "Registro habilitado",
    "registration_enabled_desc": "Permitir que nuevos usuarios se registren",
    "require_approval": "Requiere aprobación",
    "require_approval_desc": "Los nuevos registros requieren aprobación del administrador",
    "require_approval_disabled": "Habilita el registro primero para configurar la aprobación",
    "col_username": "Usuario",
    "col_display_name": "Nombre visible",
    "col_status": "Estado",
    "col_role": "Rol",
    "col_created": "Creado",
    "col_actions": "Acciones",
    "status_active": "Activo",
    "status_pending": "Pendiente",
    "status_disabled": "Deshabilitado",
    "approve": "Aprobar",
    "disable": "Deshabilitar",
    "confirm_delete_title": "Eliminar usuario",
    "confirm_delete_msg": "¿Estás seguro de que deseas eliminar permanentemente al usuario \"{{name}}\"? Esta acción no se puede deshacer.",
    "confirm_disable_title": "Deshabilitar usuario",
    "confirm_disable_msg": "¿Estás seguro de que deseas deshabilitar al usuario \"{{name}}\"? Ya no podrá iniciar sesión."
  },
  "repo": {
    "title": "Repositorio",
    "back": "← Volver",
    "refresh": "Actualizar",
    "last_refresh": "Última actualización: hace {{time}}s",
    "tab_issues": "Issues",
    "tab_prs": "PRs",
    "tab_branches": "Ramas",
    "tab_commits": "Commits",
    "tab_cicd": "CI/CD",
    "overview_branch": "{{default}} ← {{current}}",
    "cli_ok": "{{cli}} {{version}} ✓",
    "cli_not_installed": "CLI no instalado",
    "load_more": "Cargar más",
    "loading": "Cargando...",
    "retry": "Reintentar",
    "current_branch": "actual",
    "error_cli_missing": "Instala {{cli}} para usar las funciones del repositorio",
    "error_cli_missing_hint": "Instala el CLI de GitHub para usar las funciones del repositorio:",
    "error_cli_outdated": "Actualiza {{cli}} a la versión {{version}}+",
    "error_unauthorized": "Ejecuta `{{command}}` para autenticarte",
    "error_unauthorized_hint": "Autentícate con el CLI:",
    "error_rate_limited": "Límite de la API alcanzado. Inténtalo más tarde.",
    "error_generic": "Error al cargar los datos",
    "empty_issues": "No se encontraron issues",
    "empty_prs": "No se encontraron pull requests",
    "empty_branches": "No se encontraron ramas",
    "empty_commits": "No se encontraron commits",
    "empty_actions": "No se encontraron ejecuciones de flujos de trabajo",
    "state_open": "Abierto",
    "state_closed": "Cerrado",
    "state_merged": "Fusionado",
    "draft": "Borrador",
    "default_branch": "predeterminada",
    "ahead": "{{count}} adelante",
    "behind": "{{count}} atrás",
    "actions_refresh": "Actualizar",
    "actions_last_updated": "Actualizado {{time}}",
    "actions_view": "Ver",
    "detail_loading": "Cargando detalles...",
    "detail_error": "Error al cargar detalles",
    "detail_retry": "Reintentar",
    "files": "archivos",
    "more_files": "Más archivos — ver lista completa en GitHub",
    "view_on_platform": "Ver en GitHub",
    "body_truncated": "Contenido truncado — ver completo en GitHub",
    "checks_success": "Verificaciones aprobadas",
    "checks_failure": "Verificaciones fallidas",
    "checks_pending": "Verificaciones pendientes",
    "mergeable": "Fusionable",
    "conflicts": "Tiene conflictos",
    "comments_count": "comentarios",
    "comments_header": "{{count}} comentarios",
    "no_comments": "Sin comentarios",
    "show_changed_files": "Mostrar archivos modificados",
    "refresh_tab": "Actualizar",
    "branch_summary_title": "Rama actual: {{branch}}",
    "branch_summary_label": "Abrir información del repositorio para la rama {{branch}}",
    "info_title": "Información del repositorio",
    "info_current_branch": "Rama",
    "info_project_dir": "Proyecto",
    "info_repository": "Repositorio",
    "info_provider": "Proveedor",
    "info_default_branch": "Predeterminada",
    "branch_local_label": "Rama local",
    "branch_local_short": "local",
    "branch_remote_label": "Rama remota",
    "branch_remote_short": "remota",
    "checkout_switch": "Cambiar",
    "checkout_switching": "Cambiando...",
    "checkout_switch_to": "Cambiar a {{branch}}",
    "checkout_pending": "Cambiando a {{branch}}",
    "checkout_success": "Cambiado a {{branch}}.",
    "checkout_remote_only_disabled": "Las ramas solo remotas no se pueden cambiar en esta versión.",
    "checkout_dirty_worktree": "Limpia o confirma los cambios locales antes de cambiar de rama.",
    "checkout_git_operation_in_progress": "Termina la operación git actual antes de cambiar de rama.",
    "checkout_invalid_target": "Solo se puede cambiar a ramas locales existentes.",
    "checkout_in_progress": "Ya hay un cambio de rama en curso para este repositorio.",
    "checkout_busy": "Las operaciones del repositorio están ocupadas. Inténtalo de nuevo pronto.",
    "checkout_branch_in_use": "Esa rama no se puede cambiar ahora mismo.",
    "checkout_detached_head": "El cambio está bloqueado mientras HEAD está separado.",
    "checkout_not_a_git_repo": "Este proyecto no es un repositorio git.",
    "checkout_failed": "No se pudo cambiar de rama.",
    "local_commit_fallback_loading": "Cargando historial git local...",
    "local_commit_fallback_error": "No se pudo cargar el historial git local."
  },
  "transport_chat": {
    "inputPlaceholder": "Escribe un mensaje...",
    "send": "Enviar",
    "streaming": "Pensando...",
    "error": "Error",
    "connectionLost": "Conexión perdida",
    "empty": "Sin mensajes aún"
  },
  "sidebar": {
    "collapse": "Contraer barra lateral",
    "expand": "Expandir barra lateral",
    "noSessions": "Sin sesiones",
    "sessionTree": "Árbol de sesiones",
    "unpin": "Desanclar panel",
    "pinned_repo": "Archivos",
    "session_unavailable": "Sesión no disponible",
    "drop_to_pin": "Soltar para anclar",
    "pin_to_sidebar": "Fijar en barra lateral",
    "expand_all": "Expandir todo",
    "collapse_all": "Contraer todo",
    "drag_to_resize": "Arrastra para cambiar el tamaño"
  },
  "subsessionBar": {
    "show": "Mostrar",
    "hide": "Ocultar",
    "layout_double": "Doble fila",
    "layout_single": "Fila única",
    "card_size": "Tamaño de tarjeta",
    "subs_count": "Subs ({{count}})",
    "new_sub_session": "Nueva sub-sesión",
    "add_sub_session_short": "+ sub-sesión",
    "close_all_open": "Cerrar todas las ventanas de sub-sesión abiertas",
    "quick_close_open": "Cerrar rápidamente las ventanas de sub-sesión abiertas",
    "restore_quick_closed": "Restaurar las ventanas de sub-sesión recién cerradas",
    "quick_close_unavailable": "Abre primero una ventana de sub-sesión",
    "p2p_discussions": "Discusiones Team",
    "p2p_compact_show": "Mostrar barra Team compacta",
    "p2p_compact_hide": "Compactar barra Team",
    "p2p_compact_expand": "Mostrar barra Team detallada",
    "p2p_discussions_with_running_one": "{{count}} discusión en curso — ver todas",
    "p2p_discussions_with_running_other": "{{count}} discusiones en curso — ver todas",
    "p2p_discussions_with_running": "{{count}} discusión(es) en curso — ver todas",
    "p2p_running_count_aria_one": "{{count}} discusión Team en curso",
    "p2p_running_count_aria_other": "{{count}} discusiones Team en curso",
    "p2p_running_count_aria": "{{count}} discusiones Team en curso",
    "repository": "Repositorio",
    "scheduled_tasks": "Tareas programadas",
    "width_short": "A",
    "height_short": "H",
    "apply": "Aplicar",
    "reset": "Restablecer",
    "empty_prefix": "No hay sub-sesiones; haz clic en",
    "empty_suffix": "para agregar una"
  },
  "localWebPreview": {
    "title": "Vista previa web local",
    "port": "Puerto",
    "path": "Ruta",
    "open": "Abrir",
    "refresh": "Actualizar",
    "openInNewTab": "Abrir en una nueva pestaña",
    "closePreview": "Cerrar vista previa",
    "sandboxNote": "La vista previa se ejecuta en un iframe con sandbox. Algunas apps funcionan mejor en una pestaña nueva.",
    "invalidPort": "Introduce un puerto entre 1 y 65535.",
    "openFailed": "No se pudo abrir la vista previa local.",
    "opening": "Abriendo vista previa…",
    "empty": "Introduce un puerto local y una ruta, luego abre la vista previa.",
    "noServer": "Selecciona primero un servidor.",
    "previewing": "Vista previa:",
    "initialPathNote": "La ruta solo establece la página inicial. Después de cargar, la navegación queda limitada por el puerto, no por esta ruta.",
    "portHistoryLabel": "Puertos recientes",
    "pathHistoryLabel": "Rutas recientes"
  },
  "cron": {
    "title": "Tareas programadas",
    "create": "Nueva tarea",
    "edit": "Editar tarea",
    "name": "Nombre de la tarea",
    "name_placeholder": "Ej., Verificación CI diaria",
    "schedule": "Programación",
    "schedule_help": "Expresión cron (ej., 0 9 * * 1-5 = días laborables a las 9am)",
    "mode_picker": "Selector visual",
    "mode_advanced": "Avanzado (cron)",
    "advanced_help": "Formato: minuto hora día mes díaSemana — ej. 0 9 * * 1-5 = días laborales a las 9am",
    "field_minute": "Minuto",
    "field_hour": "Hora",
    "field_day": "Día",
    "field_month": "Mes",
    "field_weekday": "Día de semana",
    "every_hour": "Cada hora",
    "any": "Cualquiera",
    "target": "Sesión destino",
    "action_type": "Tipo de acción",
    "action_command": "Comando",
    "action_p2p": "Discusión Team",
    "send_target": "Destinatario",
    "send_target_placeholder": "Nombre exacto de sesión, etiqueta o tipo de agente",
    "send_message": "Mensaje",
    "send_message_placeholder": "Introduce el mensaje a enviar...",
    "send_reply": "Pedir respuesta al destinatario",
    "send_broadcast": "Difundir a sesiones hermanas",
    "command": "Comando",
    "command_placeholder": "Ingresa el comando para el agente...",
    "shell_hint": "Consejo: Las sesiones Shell pueden ejecutar scripts directamente — solo ingrese la ruta del script (ej. /path/to/script.sh)",
    "p2p_topic": "Tema de discusión",
    "p2p_topic_placeholder": "Ingresa el tema de discusión...",
    "p2p_mode": "Modo de discusión",
    "p2p_participants": "Participantes",
    "p2p_rounds": "Rondas",
    "expires_at": "Expira",
    "expires_never": "Nunca",
    "status": "Estado",
    "active": "Activa",
    "paused": "Pausada",
    "expired": "Expirada",
    "error": "Error",
    "last_run": "Última ejecución",
    "next_run": "Próxima ejecución",
    "no_tasks": "No hay tareas programadas",
    "confirm_delete": "¿Eliminar esta tarea programada?",
    "pause": "Pausar",
    "resume": "Reanudar",
    "save": "Guardar",
    "cancel": "Cancelar",
    "invalid_cron": "Expresión cron inválida",
    "interval_too_short": "El intervalo mínimo es de 5 minutos",
    "history": "Historial de ejecución",
    "no_history": "Sin ejecuciones aún",
    "no_detail": "Sin salida capturada",
    "status_sent": "Enviado",
    "status_skipped_offline": "Omitido (sin conexión)",
    "status_skipped_busy": "Omitido (ocupado)",
    "status_error": "Error",
    "no_participants": "No hay otras sesiones disponibles",
    "show_all_projects": "Todos los proyectos",
    "show_all_servers": "Todos los servidores",
    "exec_latest": "Último",
    "exec_all": "Todos",
    "view_discussion": "Ver discusión Team →",
    "confirm_trigger": "¿Ejecutar esta tarea ahora?",
    "status_manual_trigger": "Manual",
    "go_to_session": "Ir a sesión",
    "go_and_quote": "Ir y citar resultado",
    "read_only": "Solo lectura",
    "read_only_scope": "Esta tarea cron pertenece a otro servidor o pestaña y aquí es temporalmente de solo lectura."
  },
  "fileBrowser": {
    "edit": "Editar",
    "preview": "Vista previa",
    "save": "Guardar",
    "saving": "Guardando…",
    "unsavedChanges": "Tiene cambios sin guardar. ¿Descartarlos?",
    "conflictTitle": "El archivo fue modificado externamente",
    "conflictKeepMine": "Mantener mis cambios",
    "conflictUseDisk": "Usar versión del disco",
    "conflictCancel": "Cancelar",
    "saveSuccess": "Guardado",
    "saveError": "Error al guardar",
    "fileTooLarge": "Archivo demasiado grande para guardar (> 1 MB)",
    "saveTimeout": "Tiempo de espera de guardado agotado — vuelva a cargar el archivo",
    "copyPath": "Copiar ruta",
    "copied": "¡Copiado!",
    "insertPath": "Insertar ruta"
  },
  "onboarding": {
    "prompt": {
      "title": "¿Activar la guía para nuevos usuarios?",
      "body_1": "Tu primera sesión principal ya está lista. Si eres nuevo, esta guía corta te mostrará los controles principales.",
      "body_2": "Primero cubre los botones básicos y al final explica cómo sacar más provecho a las discusiones multiagente.",
      "beginner": "Soy nuevo, iniciar guía",
      "expert": "Tengo experiencia, no volver a mostrar",
      "later": "Cerrar, recuérdamelo la próxima vez"
    },
    "team_discussion_guide": {
      "title": "Aquí está el modo de discusión Team",
      "body_1": "El modo de discusión no es solo para código: sirve para documentos complejos, propuestas, auditorías OpenSpec, revisiones de código y decisiones de arquitectura.",
      "body_2": "Modelos distintos se complementan y se cuestionan entre sí, y suelen producir resultados más rigurosos que un solo modelo.",
      "body_3": "Escribe primero lo que quieres discutir, elige un modo de discusión y empieza. Para problemas difíciles, añade rondas para reforzar la conclusión.",
      "dismiss": "Entendido"
    },
    "step_counter": "Paso {{current}} / {{total}}",
    "prev": "Atrás",
    "next": "Siguiente",
    "finish": "Finalizar",
    "steps": {
      "new_main": {
        "title": "Crea aquí una sesión principal",
        "body_1": "Usa este botón para crear una nueva sesión principal para un proyecto.",
        "body_2": "La sesión principal es la entrada a terminal, chat, repo y discusiones."
      },
      "new_sub": {
        "title": "Crea aquí una sub-sesión",
        "body_1": "Usa este botón para añadir una sub-sesión worker/helper al proyecto actual.",
        "body_2": "Las sub-sesiones sirven para tareas paralelas, revisiones y experimentos."
      },
      "discussions": {
        "title": "Abre aquí el historial de discusiones",
        "body_1": "Aquí puedes revisar discusiones anteriores y sus resultados."
      },
      "repo": {
        "title": "Abre aquí el panel del repositorio",
        "body_1": "Aquí puedes revisar estado del repo, ramas, commits, PR y CI."
      },
      "cron": {
        "title": "Abre aquí las tareas programadas",
        "body_1": "Aquí puedes crear y gestionar tareas programadas para el proyecto actual."
      },
      "view_toggle": {
        "title": "Cambia aquí entre chat y terminal",
        "body_1": "Usa este botón para alternar entre la vista de chat y la vista de terminal en vivo."
      },
      "p2p_defaults": {
        "title": "Configura aquí los participantes por defecto",
        "body_1": "Abre este menú y elige Config para definir qué sesiones se unen a @all por defecto.",
        "body_2": "También puedes definir rápidamente las rondas por defecto."
      },
      "p2p_send": {
        "title": "Inicia discusiones desde la caja de entrada",
        "body_1": "Escribe @@all(discuss), @@all(review) u otro modo para iniciar una discusión compartida rápidamente.",
        "body_2": "Las discusiones funcionan mejor con 2 o más agentes de distintos proveedores o tipos. Eso rompe el pensamiento fijo y suele dar mejores resultados.",
        "body_3": "Las discusiones multiagente comparten archivos y conservan mejor historial. Uno a uno se parece más a una discusión puntual. En la práctica, 2 rondas son un buen valor por defecto."
      }
    }
  },
  "sharedContext": {
    "loading": "Loading shared context…",
    "refresh": "Refresh",
    "empty": "Nothing yet",
    "roles": {
      "owner": "owner",
      "admin": "admin",
      "member": "member"
    },
    "notice": {
      "enterpriseCreated": "Enterprise created",
      "inviteCreated": "Invite created",
      "joinedEnterprise": "Joined enterprise",
      "memberUpdated": "Member updated",
      "memberRemoved": "Member removed",
      "workspaceCreated": "Workspace created",
      "projectEnrolled": "Project enrolled",
      "policySaved": "Policy saved",
      "projectPendingRemoval": "Project marked pending removal",
      "projectRemoved": "Project removed",
      "documentCreated": "Document created",
      "versionCreated": "Version created",
      "versionActivated": "Version activated",
      "bindingCreated": "Binding created",
      "processingConfigSaved": "Processing config saved",
      "memoryPreferenceSaved": "Preference saved",
      "memoryPreferenceDeleted": "Preference deleted",
      "memorySkillRegistryRebuilt": "Skill registry rebuilt",
      "memorySkillDeleted": "Skill deleted",
      "memoryMdIngestCompleted": "Markdown ingest completed",
      "memoryObservationPromoted": "Observation promoted",
      "memoryFeatureEnabled": "{{flag}} activado",
      "memoryFeatureDisabled": "{{flag}} desactivado",
      "memoryPreferenceUpdated": "Preference updated",
      "memoryObservationUpdated": "Observation updated",
      "memoryObservationDeleted": "Observation deleted",
      "memoryCreated": "Memoria guardada.",
      "memoryUpdated": "Memoria actualizada.",
      "memoryPinned": "Memoria fijada para futuros resúmenes."
    },
    "management": {
      "title": "Contexto compartido",
      "heroDescription": "Gestione empresas compartidas, proyectos registrados, conocimiento y comportamiento de procesamiento desde un solo lugar.",
      "inviteDescription": "Invite personas a la empresa como miembros. Promuévalos a administrador más tarde desde la pestaña Miembros si es necesario.",
      "inviteFlowTitle": "Flujo de invitación",
      "memberRolesDescription": "Los propietarios pueden promover administradores. Los administradores gestionan proyectos y conocimiento pero no pueden nombrar otros administradores.",
      "workspaceDescription": "Use espacios de trabajo para agrupar proyectos compartidos. Son opcionales y no cambian la propiedad.",
      "enrollDescription": "Registre un repositorio canónico para compartir su contexto procesado y conocimiento en esta empresa.",
      "policyDescription": "Configure las políticas de ejecución para un proyecto compartido.",
      "knowledgeDescription": "Cree estándares de código, guías de arquitectura y conocimiento reutilizable como contexto compartido versionado.",
      "versionDescription": "Redacte una nueva versión para el documento seleccionado y actívela cuando esté lista.",
      "bindingDescription": "Adjunte versiones de documentos a la empresa, espacio de trabajo o proyecto con filtros opcionales de idioma y ruta.",
      "selectEnterprise": "Select enterprise",
      "enterpriseNamePlaceholder": "New enterprise name",
      "createEnterprise": "Create enterprise",
      "invites": "Invites",
      "inviteEmailPlaceholder": "Invite email (optional)",
      "createInvite": "Create invite",
      "inviteToken": "Invite token",
      "joinTokenPlaceholder": "Invite token",
      "joinEnterprise": "Accept invite",
      "members": "Members",
      "promoteAdmin": "Promote to admin",
      "demoteMember": "Demote to member",
      "removeMember": "Remove",
      "workspaces": "Workspaces",
      "workspaceNamePlaceholder": "Workspace name",
      "createWorkspace": "Create workspace",
      "projects": "Projects",
      "projectRelationshipTitle": "Cómo funciona el contexto compartido del proyecto",
      "projectRelationshipLine1": "La memoria personal funciona sin ninguna empresa.",
      "projectRelationshipLine2": "El contexto compartido del proyecto solo empieza después de inscribir un repositorio en la empresa seleccionada.",
      "projectRelationshipLine3": "El workspace es opcional y siempre pertenece a esa misma empresa. Es una capa de agrupación, no un propietario separado.",
      "projectRelationshipLine4": "El alcance controla hasta dónde comparte contexto un proyecto dentro de la empresa. No cambia a qué empresa pertenece.",
      "belongsToTitle": "Pertenece a",
      "belongsToEnterprise": "Enterprise:",
      "belongsToWorkspace": "Workspace:",
      "belongsToWorkspaceValue": "Subgrupo opcional dentro de la empresa seleccionada.",
      "belongsToProject": "Proyecto:",
      "belongsToProjectValue": "El repositorio canónico inscrito.",
      "sharesWithTitle": "Comparte con",
      "sharesWithProjectValue": "Solo este repositorio inscrito comparte contexto.",
      "sharesWithWorkspaceValue": "Los proyectos del mismo workspace comparten contexto entre sí.",
      "sharesWithEnterpriseValue": "Todos los proyectos inscritos de la empresa actual pueden compartir contexto.",
      "chooseSharingLevelTitle": "Elegir nivel de compartición",
      "chooseSharingLevelProject": "Un repositorio, un límite de contexto compartido. Úsalo para la mayoría de los equipos.",
      "chooseSharingLevelWorkspace": "Varios repositorios relacionados dentro de un workspace comparten contexto entre sí.",
      "chooseSharingLevelEnterprise": "El alcance más amplio. Úsalo solo cuando todos los proyectos inscritos deban compartir el mismo contexto.",
      "scopeProjectLabel": "Solo este proyecto",
      "scopeProjectDescription": "Comparte contexto solo para este repositorio inscrito.",
      "scopeWorkspaceLabel": "Workspace",
      "scopeWorkspaceDescription": "Comparte entre proyectos agrupados en el mismo workspace.",
      "scopeEnterpriseLabel": "Empresa",
      "scopeEnterpriseDescription": "Comparte a nivel de empresa entre todos los proyectos inscritos.",
      "scopeSourceWithWorkspace": "Origen del workspace: {{workspace}} dentro de {{enterprise}}.",
      "scopeSourceWithoutWorkspace": "No hay workspace seleccionado. Este proyecto sigue perteneciendo a {{enterprise}}.",
      "selectedEnterprise": "la empresa seleccionada",
      "notSelected": "No seleccionado",
      "canonicalRepoId": "Canonical repo ID",
      "displayName": "Display name",
      "noWorkspace": "No workspace",
      "workspaceLabel": "Workspace",
      "noWorkspaceAssigned": "No workspace",
      "enrollProject": "Enroll project",
      "editPolicy": "Edit policy",
      "pendingRemoval": "Pending removal",
      "removeProject": "Remove project",
      "selectProject": "Select project",
      "allowDegraded": "Allow degraded provider",
      "allowLocalFallback": "Allow local fallback",
      "requireFullSupport": "Require full support",
      "savePolicy": "Save policy",
      "documents": "Knowledge & standards",
      "documentTitle": "Document title",
      "createDocument": "Create document",
      "selectDocument": "Select document",
      "selectVersion": "Select version",
      "documentContent": "Document content",
      "createVersion": "Create version",
      "bindings": "Bindings",
      "required": "Required",
      "advisory": "Advisory",
      "language": "Language",
      "pathPattern": "Path pattern",
      "createBinding": "Create binding",
      "tabs": {
        "enterprise": "Empresa",
        "members": "Miembros",
        "projects": "Proyectos",
        "knowledge": "Conocimiento",
        "processing": "Procesamiento",
        "memory": "Memoria",
        "mcp": "MCP"
      },
      "policyTitle": "Project policy",
      "policyLoading": "Loading saved policy…",
      "policyExplainTitle": "What this policy controls",
      "policyExplainLine1": "These settings control how this shared project behaves when a provider cannot fully support shared context or when the remote shared state is unavailable.",
      "policyExplainLine2": "Use the stricter options for team-owned codebases. Use the more permissive options only when you need continuity over strict consistency.",
      "allowDegradedHelp": "Allow providers that can only inject shared context in a reduced or message-side form. Turn this off if the team requires consistent behavior across providers.",
      "allowLocalFallbackHelp": "Allow this machine to keep using its local processed context when shared remote context is stale or temporarily unavailable.",
      "requireFullSupportHelp": "Only allow providers that fully support normalized shared-context injection. This is the strictest setting.",
      "requireFullProviderSupportHelp": "Only allow providers that fully support normalized shared-context injection. This is the strictest setting.",
      "processingSummaryTitle": "Processing flow",
      "processingSummaryLine1": "Raw activity is staged locally, then materialized into processed local context on delayed jobs.",
      "processingSummaryLine2": "Shared projects can replicate processed context to the remote shared store after local materialization succeeds.",
      "processingSummaryLine3": "This panel manages enterprise policy and authored knowledge. It does not directly run the materializer.",
      "processingModelTitle": "Materialization model selection",
      "processingPrimaryCardTitle": "Primary processing path",
      "processingPrimaryBackend": "Primary SDK / backend",
      "processingPrimaryModel": "Default primary model",
      "processingPrimaryPreset": "Primary preset",
      "processingBackupCardTitle": "Backup processing path",
      "processingBackupBackend": "Backup SDK / backend",
      "processingBackupModel": "Backup model",
      "processingBackupPreset": "Backup preset",
      "processingBackupPlaceholder": "Optional fallback model",
      "processingPresetNone": "No preset",
      "processingSave": "Save processing config",
      "processingSaving": "Saving…",
      "processingReload": "Reload cloud config",
      "processingSavedPrimaryBackend": "Saved primary backend",
      "processingSavedPrimary": "Saved primary model",
      "processingSavedBackupBackend": "Saved backup backend",
      "processingSavedBackup": "Saved backup model",
      "processingUnsetValue": "unset",
      "processingCloudSyncNote": "This setting is saved in the cloud for the selected server and synced into the daemon when it is connected or restarts.",
      "processingServerRequired": "Select a server before managing processing settings.",
      "processingPrimaryOverride": "Primary override env",
      "processingBackupOverride": "Backup override env",
      "processingServerScope": "Current server scope",
      "processingProviderNote": "Choose both the SDK/backend and the model. The daemon will use this pair when it runs local shared-context materialization jobs.",
      "processingBackendNote": "The backend decides which runtime executes the model. The model alone is not enough.",
      "processingUiGap": "This setting is server-scoped, not enterprise-global.",
      "processingOperationalTitle": "Operational notes",
      "processingOperationalLine1": "If no server-saved value exists, the primary model defaults to \"sonnet\".",
      "processingOperationalLine2": "The backup model is optional and defaults to unset.",
      "processingOperationalLine3": "Different servers can still use different saved processing models. This panel edits the selected server only.",
      "memorySummaryTitle": "Memory visibility",
      "memorySummaryLine1": "Personal memory is materialized locally first, then optionally replicated to the cloud for cross-device continuity.",
      "memorySummaryLine2": "Cloud personal memory is scoped to the current signed-in user and shared across that user's devices when sync is enabled.",
      "memorySummaryLine3": "Shared memory stats show enterprise-scoped processed context that other enrolled projects can reuse.",
      "personalSyncTitle": "Personal cloud sync",
      "personalSyncDescription": "Choose whether processed personal memory should replicate to your account-wide cloud memory pool.",
      "personalSyncToggle": "Enable cloud sync for personal memory",
      "personalSyncHelp": "Enabled by default so summaries can power cross-device continuity and related-history recall. Turn it off only if you want personal memory to stay local-only.",
      "personalSyncDisableConfirm": "Turn off personal cloud sync? Cross-device memory, recent summary sync, and related-history recall may be affected until you turn it back on.",
      "memoryRecallThresholdTitle": "Umbral de recall del historial relacionado",
      "memoryRecallThresholdDescription": "Ajusta la puntuación compuesta mínima necesaria antes de inyectar historial relacionado en un mensaje.",
      "memoryRecallThresholdLabel": "Puntuación mínima de relevancia",
      "memoryRecallThresholdHelp": "Valores más bajos inyectan más historial. Valores más altos son más estrictos. Valor predeterminado: {{defaultValue}}.",
      "memoryRecallThresholdReset": "Restablecer al valor guardado",
      "memoryRecallThresholdSaved": "Umbral guardado",
      "memoryAdvancedScoringTitle": "Configuración avanzada de puntuación",
      "memoryAdvancedScoringDescription": "Ajusta cuánto pesan la similitud, la recencia, la frecuencia de recall y la afinidad del proyecto en el ranking de memoria.",
      "memoryAdvancedScoringShow": "Mostrar controles avanzados",
      "memoryAdvancedScoringHide": "Ocultar controles avanzados",
      "memoryAdvancedScoringHelp": "Estos controles son para ajuste avanzado. Los valores se normalizan para sumar 1.0 antes de puntuar.",
      "memoryAdvancedScoringSum": "Suma actual de pesos antes de normalizar: {{value}}",
      "memoryAdvancedScoringReset": "Restablecer pesos avanzados",
      "memoryWeightSimilarity": "Peso de similitud",
      "memoryWeightRecency": "Peso de recencia",
      "memoryWeightFrequency": "Peso de recuento de recall",
      "memoryWeightProject": "Peso de afinidad del proyecto",
      "personalSyncSave": "Save sync setting",
      "memoryTabLocalProcessed": "Local processed",
      "memoryTabLocalPending": "Local pending",
      "memoryTabCloud": "Personal cloud",
      "memoryTabShared": "Enterprise shared",
      "memoryTabPersonal": "Personal",
      "memoryTabEnterprise": "Empresa",
      "memoryTabUnprocessed": "Sin procesar",
      "memoryTabProcessed": "Procesado",
      "memoryTabSharedMemory": "Memoria compartida",
      "memoryTabAuthoredContext": "Contexto creado",
      "memoryAuthoredTitle": "Contexto empresarial creado",
      "memoryAuthoredDescription": "Documentos gestionados por la empresa vinculados a proyectos compartidos. Se gestiona en la pestaña Conocimiento.",
      "memoryAuthoredSeeKnowledge": "Los vínculos de contexto creado se gestionan en la pestaña Conocimiento de arriba.",
      "memoryQueryTitle": "Query processed memory",
      "memoryQueryDescription": "Search local personal memory, cloud personal memory, and enterprise shared memory using the same filters.",
      "memoryProjectPlaceholder": "Filter by canonical repo ID",
      "memoryQueryPlaceholder": "Search summaries and compressed content",
      "memoryAllClasses": "All record classes",
      "memoryRecentSummary": "Recent summaries",
      "memoryRecentDescription": "Turn-level compressed summaries generated from recent local activity.",
      "memoryDurableCandidate": "Durable memory candidates",
      "memoryDurableDescription": "Condensed long-lived preferences, constraints, and pinned decisions.",
      "memoryLocalTitle": "Local personal memory",
      "memoryCloudTitle": "Global personal cloud memory",
      "memoryProcessedNote": "Processed memory uses semantic vector search. Raw pending events stay local and use text filtering only; cloud personal memory and enterprise shared memory store processed summaries, not raw chat transcripts.",
      "memorySharedTitle": "Enterprise shared memory",
      "memoryStatTotal": "Total records",
      "memoryStatHits": "Matched records",
      "memoryStatRecent": "Recent summaries",
      "memoryStatDurable": "Durable candidates",
      "memoryStatPending": "Unprocessed events",
      "memoryStatDirtyTargets": "Dirty targets",
      "memoryStatPendingJobs": "Queued jobs",
      "memoryStatProjects": "Projects",
      "memoryRecordProject": "Project",
      "memoryRecordStatus": "Status",
      "memoryStatusProcessed": "Processed summary",
      "memoryStatusPending": "Pending raw event",
      "memoryRecordClass": "Class",
      "memoryRecordSources": "Source events",
      "memoryRecordUpdated": "Updated",
      "memoryRecordOwner": "Propietario",
      "memoryRecordCreatedBy": "Creado por",
      "memoryRecordUpdatedBy": "Actualizado por",
      "memoryPendingTitle": "Pending raw events",
      "memoryPendingDescription": "These events have not been materialized yet. They remain local raw activity and only support text filtering, not semantic vector search.",
      "memoryPendingEventType": "Event type",
      "memoryPendingSession": "Session",
      "memoryProcessedTitle": "Processed memory",
      "memoryProcessedDescription": "These entries are processed memory summaries ranked with semantic vector search. Local views show processed summaries beside local pending events; cloud and enterprise views contain processed summaries only.",
      "memoryProcessedEmptyPending": "No processed summaries yet. Only pending raw events are available below.",
      "memoryExpand": "Expand",
      "memoryCollapse": "Collapse",
      "memoryRecalls": "{{count}} recuperaciones",
      "memoryNeverRecalled": "Nunca recuperado",
      "memoryLastRecalled": "Última recuperación: {{time}}",
      "memoryArchive": "Archivar",
      "memoryRestore": "Restaurar",
      "memoryDelete": "Eliminar",
      "memoryDeleteConfirm": "¿Eliminar esta memoria de forma permanente? Esta acción no se puede deshacer.",
      "memoryDeleteFailed": "No se pudo eliminar la memoria",
      "memoryArchived": "Archivado",
      "memoryShowArchived": "Mostrar archivados",
      "memoryMasterSummary": "Resumen maestro",
      "memoryPost11AdminTitle": "Post-1.1 memory management",
      "memoryPost11AdminDescription": "Manage runtime-visible preferences, skill registry entries, markdown ingest, and observation promotion from the daemon that owns the local memory store.",
      "memoryAdminDaemonRequired": "Connect to a daemon to manage local preferences, skills, markdown ingest, and observations.",
      "memoryAdminActionFailed": "Memory management action failed",
      "memoryPreferencesTitle": "User preferences",
      "memoryPreferencesDescription": "Manage @pref entries that are injected into provider context for matching user scopes.",
      "memoryPreferenceUserPlaceholder": "Preference user id",
      "memoryPreferenceTextPlaceholder": "Preference text",
      "memoryPreferenceSave": "Save preference",
      "memoryPreferenceUser": "User",
      "memoryPreferenceDeleteConfirm": "Delete this preference? It will no longer be injected into future turns.",
      "memoryPreferencesEmpty": "No stored preferences found.",
      "memorySkillsTitle": "Skills",
      "memorySkillsDescription": "Inspect the lightweight skill registry used at startup. Full skill bodies are read only when previewed or when the agent asks for a matching skill.",
      "memoryProjectDirPlaceholder": "Project directory (for project skills / MD ingest)",
      "memorySkillRebuildRegistry": "Rebuild registry",
      "memorySkillName": "Skill",
      "memorySkillLayer": "Layer",
      "memorySkillPath": "Path",
      "memorySkillPreview": "Preview",
      "memorySkillPreviewTitle": "Skill preview",
      "memorySkillDeleteConfirm": "Delete this skill file and remove it from the registry?",
      "memorySkillsEmpty": "No registry entries found. Rebuild after installing or creating skills.",
      "memoryMdIngestTitle": "Markdown ingest",
      "memoryMdIngestDescription": "Run a bounded manual ingest for trusted project markdown files. Unsupported cross-scope ingest fails closed instead of silently downgrading.",
      "memoryMdIngestRun": "Run ingest",
      "memoryMdFilesChecked": "Files checked",
      "memoryMdObservationsWritten": "Observations written",
      "memoryMdIngestEmpty": "No manual ingest result yet.",
      "memoryObservationsTitle": "Observation store",
      "memoryObservationsDescription": "Inspect typed durable observations and promote scope only through an explicit audited UI action.",
      "memoryAllScopes": "All scopes",
      "memoryScopeLabel": "Scope",
      "memoryPromotionReasonPlaceholder": "Promotion reason (optional)",
      "memoryObservationPromote": "Promote",
      "memoryObservationsEmpty": "No observations found for the selected filters.",
      "memoryScope": {
        "user_private": "User private",
        "personal": "Personal project",
        "project_shared": "Project shared",
        "workspace_shared": "Workspace shared",
        "org_shared": "Org shared"
      },
      "memoryObservationClass": {
        "fact": "Fact",
        "decision": "Decision",
        "bugfix": "Bug fix",
        "feature": "Feature",
        "refactor": "Refactor",
        "discovery": "Discovery",
        "preference": "Preference",
        "skill_candidate": "Skill candidate",
        "workflow": "Workflow",
        "code_pattern": "Code pattern",
        "note": "Note"
      },
      "memoryFeatureStatusTitle": "Interruptores de funciones",
      "memoryFeatureStatusDescription": "Interruptores globales en línea de memoria post-1.1 para tu usuario. Los cambios se guardan en tu cuenta y se aplican a todos tus servidores; la configuración local daemon/env queda como respaldo.",
      "memoryFeatureEnabled": "Activado",
      "memoryFeatureDisabled": "Desactivado",
      "memoryFeatureUnknown": "Desconocido",
      "memoryFeatureDisabledNotice": "This feature is disabled; management writes are blocked until the feature flag is enabled.",
      "error": {
        "missing_observation_text": "Observation text is required.",
        "observation_not_found": "Observation not found.",
        "observation_mutation_forbidden": "You are not authorized to modify this observation.",
        "missing_memory_text": "El texto de memoria es obligatorio.",
        "memory_not_found": "No se encontró el registro de memoria."
      },
      "memoryToolsTitle": "Memory tools",
      "memoryToolsDescription": "Manage preferences, skills, markdown ingest, observations, and daemon memory feature status with the selected project identity.",
      "memoryToolTabStatus": "Status",
      "memoryToolTabPreferences": "Preferences",
      "memoryToolTabSkills": "Skills",
      "memoryToolTabMdIngest": "Markdown",
      "memoryToolTabObservations": "Observations",
      "mcpTitle": "Protocolo de contexto de modelo",
      "mcpSummaryLine1": "Los providers gestionados pueden exponer once herramientas MCP con alcance de runtime mediante el servidor controlado por el daemon: búsqueda de memoria, summaries recientes, fuentes, escrituras de observaciones y preferencias, Send con alcance y programación Cron.",
      "mcpSummaryLine2": "Las herramientas de memoria devuelven hits compactos con ref y projectionId; list_memory_summaries trae resúmenes recientes y get_memory_sources expande hits cuando importan instrucciones previas exactas, detalles de bugs o evidencia fuente.",
      "mcpSummaryLine3": "Las herramientas Send descubren sesiones hermanas y envían texto con alcance, referencias de archivos, solicitudes de respuesta o broadcasts mediante el pipeline protegido imcodes send.",
      "mcpSummaryLine4": "Las herramientas Cron crean, listan, actualizan y eliminan envíos estructurados programados para recordatorios, comprobaciones recurrentes, reviews delegadas y follow-ups.",
      "mcpSummaryLine5": "Esta vista muestra disponibilidad del provider, razones de degradación, feature gates y llamadas recientes redactadas; si no hay reporte MCP, lo muestra explícitamente en vez de asumir que las herramientas están sanas.",
      "mcpProviderStatusTitle": "Estado MCP del proveedor",
      "mcpProviderStatusDescription": "Seis proveedores administrados se rastrean para el MVP MCP stdio de once herramientas.",
      "mcpToolGatesTitle": "Compuertas de familias de herramientas",
      "mcpToolGatesDescription": "Memory, Send y Cron deben pasar sus compuertas base y los kill-switches de MCP.",
      "mcpRecentCallsTitle": "Llamadas MCP redactadas recientes",
      "mcpRecentCallsDescription": "Aquí solo se muestran fragmentos de solicitud y resultado redactados por el daemon.",
      "mcpNoDaemon": "Conecta el daemon local para cargar el estado MCP.",
      "mcpStatusLoading": "Esperando estado MCP del daemon…",
      "mcpStatusTimeout": "Aún no hay respuesta de estado MCP. El daemon actual puede no exponer esta vista.",
      "mcpStatusError": "No se pudo cargar el estado MCP.",
      "mcpUpdatedAt": "Actualizado",
      "mcpUpdatedNever": "No informado",
      "mcpProvidersReported": "Proveedores informados",
      "mcpCallsReported": "Llamadas informadas",
      "mcpProviderConnected": "Proveedor conectado",
      "mcpProviderDisconnected": "Proveedor desconectado",
      "mcpProviderNoSignal": "Sin señal del proveedor",
      "mcpProviderNoDegradedReasons": "No se informaron razones de degradación.",
      "mcpProviderStatusHint": "El estado específico de MCP se informa aparte de la conectividad del proveedor.",
      "mcpProviderClaudeSdk": "Claude SDK",
      "mcpProviderGeminiAcp": "Gemini ACP",
      "mcpProviderKimiAcp": "Kimi ACP",
      "mcpProviderCopilotSdk": "Copilot SDK",
      "mcpProviderCodexSdk": "Codex SDK",
      "mcpProviderCursorHeadless": "Cursor headless",
      "mcpProviderQwen": "Qwen",
      "mcpProviderUnknown": "{{provider}}",
      "mcpDisabledFlag": "Flag deshabilitado: {{flag}}",
      "mcpDisabledFlagNone": "No se informó flag deshabilitado",
      "mcpDegradedReasons": "Razones: {{reasons}}",
      "mcpGateNoDetails": "No se informaron detalles de compuerta.",
      "mcpRecentCallsEmpty": "Aún no se informaron llamadas MCP redactadas.",
      "mcpCallProvider": "Proveedor",
      "mcpCallTool": "Herramienta",
      "mcpCallStatus": "Estado",
      "mcpCallDuration": "Duración",
      "mcpCallDurationValue": "{{ms}} ms",
      "mcpCallTime": "Hora",
      "mcpCallFamily": "Familia",
      "mcpCallInput": "Entrada redactada",
      "mcpCallResult": "Resultado redactado",
      "mcpStatus": {
        "ready": "Listo",
        "degraded": "Degradado",
        "disabled": "Deshabilitado",
        "unknown": "Desconocido"
      },
      "mcpToolFamily": {
        "memory": "Memoria",
        "send": "Send",
        "cron": "Cron"
      },
      "mcpCallStatusValue": {
        "ok": "OK",
        "error": "Error",
        "disabled": "Deshabilitado",
        "unknown": "{{status}}"
      },
      "mcpReason": {
        "env_forwarding_unverified": "No se ha verificado el reenvío de entorno MCP por sesión.",
        "feature_disabled": "Una compuerta de función requerida está deshabilitada.",
        "mcp_registration_failed": "El registro MCP administrado falló.",
        "provider_not_connected": "El proveedor no está conectado.",
        "status_not_reported": "El estado MCP no se ha informado.",
        "unknown": "{{reason}}"
      },
      "memoryProjectPickerTitle": "Project selector",
      "memoryProjectPickerDescription": "La memoria se explora en todos los proyectos de forma predeterminada. Elige un proyecto solo para filtrar la lista o ejecutar herramientas locales basadas en archivos.",
      "memoryProjectSearchPlaceholder": "Search project name, canonical ID, or directory",
      "memoryProjectSelected": "Selected project",
      "memoryProjectEmpty": "No known projects yet. Open a session in the project or use the advanced resolver fallback.",
      "memoryProjectCanonicalId": "Canonical ID",
      "memoryProjectDirectory": "Directory",
      "memoryProjectSourceLabel": "Source",
      "memoryProjectNeedsResolve": "Needs daemon resolution before local tools can run.",
      "memoryProjectResolving": "Resolving project…",
      "memoryProjectCanonicalOnlyNotice": "Este proyecto puede filtrar memoria; las acciones que leen/escriben archivos locales necesitan un directorio local resuelto.",
      "memoryProjectAdvanced": "Advanced resolver fallback",
      "memoryProjectAdvancedDescription": "Manual values are an advanced fallback. Prefer selecting a known project so the daemon can validate the directory-to-ID mapping.",
      "memoryProjectLocalToolsDisabled": "Las herramientas locales basadas en archivos necesitan un proyecto seleccionado con directorio validado e ID canónico. La exploración funciona sin seleccionar un proyecto.",
      "memoryProjectUnknown": "Unknown project",
      "memoryPreferenceSearchPlaceholder": "Search preferences",
      "memorySkillSearchPlaceholder": "Search skills by name, layer, path, or description",
      "memoryObservationSearchPlaceholder": "Search loaded observations",
      "memoryProjectStatus": {
        "resolved": "Resolved",
        "needs_resolution": "Needs resolution",
        "canonical_only": "Canonical ID only",
        "directory_only": "Directory only",
        "no_repo": "No repository",
        "multiple_remotes": "Multiple remotes",
        "unauthorized": "Unauthorized",
        "invalid_dir": "Invalid directory",
        "mismatch": "ID mismatch",
        "error": "Resolve failed"
      },
      "memoryProjectSource": {
        "active_session": "Active session",
        "recent_session": "Recent session",
        "enterprise_enrollment": "Enterprise project",
        "resolved_directory": "Resolved directory",
        "manual_resolved": "Manual resolved",
        "memory_index": "Índice de memoria"
      },
      "memoryFeatureLabel": {
        "preferences": "Preferencias",
        "mdIngest": "Importación Markdown",
        "skills": "Habilidades",
        "skillAutoCreation": "Creación automática de habilidades",
        "observationStore": "Almacén de observaciones",
        "namespaceRegistry": "Registro de espacios de nombres"
      },
      "memoryFeatureUnavailable": "Servidor no disponible",
      "memoryFeatureUnavailableDetail": "Conéctate al servidor para cargar los interruptores de tu cuenta y habilitar acciones de administración.",
      "memoryFeatureLoading": "Cargando",
      "memoryFeatureLoadingDetail": "Esperando la respuesta de estado de funciones del servidor…",
      "memoryFeatureNoResponse": "Sin respuesta",
      "memoryFeatureNoResponseDetail": "El servidor no respondió a la solicitud de estado. Actualiza o vuelve a conectar.",
      "memoryFeatureError": "Error",
      "memoryFeatureErrorDetail": "No se pudo cargar el estado de funciones.",
      "memoryFeatureUnknownDetail": "La respuesta del servidor no incluyó este interruptor.",
      "memoryFeatureEnabledDetail": "Esta función está activada para tu cuenta y se aplicará en todos tus servidores.",
      "memoryFeatureDisabledHint": "Desactivada para tu cuenta. Usa Activar aquí para persistirla en línea para todos tus servidores; {{env}} queda como respaldo de arranque del daemon. {{behavior}}",
      "memoryBrowseProjectFilter": "Memory browse filter",
      "memoryBrowseAllProjects": "All projects (default)",
      "memoryAllProjectsActive": "All projects",
      "memoryActiveProjectFilter": "Filtered by {{project}}",
      "memoryClearProjectFilter": "Clear filter",
      "memoryToolProjectSelector": "Proyecto para acciones locales (requiere directorio)",
      "memoryToolProjectNone": "Select a project for local tools",
      "memoryProjectPickerSplitHelp": "El filtro superior controla la exploración de memoria y usa todos los proyectos por defecto. El proyecto de acciones locales solo se usa para herramientas que necesitan directorio, como ingestión Markdown o reconstrucción/lectura de skills.",
      "memoryProjectKnownProjects": "Known projects",
      "memoryProjectNoCanonicalId": "no canonical ID",
      "memoryProjectNoDirectory": "no local directory",
      "memoryPersonalBreakdown": "Personal total breakdown: {{processed}} local processed · {{pending}} local pending · {{cloud}} cloud.",
      "memoryFilteredByProject": "Showing results filtered by {{project}}.",
      "memoryProcessedEmptyWithCloud": "No local processed summaries. Personal cloud has {{count}} records available.",
      "memoryViewPersonalCloud": "View personal cloud",
      "memoryUnprocessedEmptyWithData": "No local pending raw events. Existing processed/cloud records are available in the other tabs.",
      "memoryLocalStatusLoading": "Loading local daemon memory…",
      "memoryLocalStatusUnavailable": "Local daemon is unavailable; local processed and pending counts cannot be loaded.",
      "memoryLocalStatusNoResponse": "No response from the local daemon; local counts may be stale or unavailable.",
      "memoryLocalStatusError": "Local daemon returned an error while loading personal memory.",
      "memoryToolDisabledNoDaemon": "Connect the local daemon before using this management action.",
      "memoryToolDisabledFeature": "Esta función está desactivada. Actívala globalmente para tu cuenta en Feature flags; {{env}} queda como respaldo de arranque del daemon.",
      "memoryToolDisabledFeatureUnknown": "El estado de funciones aún no se cargó; actualiza primero el panel de administración.",
      "memoryToolDisabledProjectRequired": "Select a resolved project with both canonical ID and local directory before running this local tool.",
      "memoryFeatureEnableAction": "Activar",
      "memoryFeatureDisableAction": "Desactivar",
      "memoryFeatureToggleSaving": "Guardando…",
      "memoryFeatureDependencyBlockedHint": "Se solicitó activar, pero las dependencias siguen desactivadas: {{deps}}. Activa primero las dependencias. {{behavior}}",
      "memoryFeatureBlocked": "Bloqueado",
      "memoryFeatureDisabledBehavior": {
        "preferences": "Las líneas @pref pasan como texto normal y no se persisten ni se eliminan.",
        "mdIngest": "No se leen, analizan ni importan archivos Markdown.",
        "skills": "El cargador devuelve un conjunto vacío; se omite el renderizado de habilidades; las escrituras administrativas se rechazan o desactivan.",
        "skillAutoCreation": "No se reclaman ni crean trabajos de revisión de habilidades. Las habilidades existentes aún se cargan cuando Habilidades está activado.",
        "observationStore": "No se escriben nuevas filas de observación; las proyecciones procesadas siguen siendo legibles.",
        "namespaceRegistry": "No se escriben nuevos registros de espacio de nombres fuera de migración/backfill; las lecturas de proyecciones heredadas siguen disponibles."
      },
      "processingPresetLabel": "Preajuste",
      "processingPresetNoneTitle": "Sin preajuste: usar el endpoint predeterminado del proveedor",
      "processingPresetBundleModelTitle": "Paquete de preajuste → modelo: {{model}}",
      "processingPresetBundleTitle": "Paquete de preajuste: {{preset}}",
      "processingModelLabel": "Modelo",
      "processingModelPresetTitle": "El modelo lo fija el preajuste activo. Borra el preajuste para elegir otro.",
      "processingModelDefinedByPreset": "(definido por el preajuste)",
      "relativeLessThanOneMinute": "hace <1 min",
      "relativeMinutesAgo": "hace {{count}} min",
      "relativeHoursAgo": "hace {{count}} h",
      "relativeDaysAgo": "hace {{count}} d",
      "serverUnbound": "Sin vincular",
      "statEnterprise": "Empresa",
      "noneValue": "Ninguno",
      "statRole": "Rol: {{role}}",
      "statChooseOrCreateEnterprise": "Elige o crea una",
      "statMembers": "Miembros",
      "statProjects": "Proyectos",
      "statKnowledgeDocs": "Docs de conocimiento",
      "statServer": "Servidor",
      "statCloudSyncedRuntimeSettings": "Ajustes de ejecución sincronizados en la nube",
      "statSelectServerToSync": "Selecciona un servidor para sincronizar la configuración de procesamiento",
      "inviteFlowLine1": "Las nuevas invitaciones solo dan acceso de miembro.",
      "inviteFlowLine2": "Los cambios de rol de admin se hacen después de unirse, en la sección de miembros.",
      "workspaceId": "ID del espacio de trabajo",
      "activeCount": "{{count}} activos",
      "role": "Rol",
      "joined": "Unido",
      "statusLabel": "Estado",
      "scopeLabel": "Alcance",
      "meaningLabel": "Significado",
      "documentKind": {
        "coding_standard": "Estándar de código",
        "architecture_guideline": "Guía de arquitectura",
        "repo_playbook": "Manual del repositorio",
        "knowledge_doc": "Documento de conocimiento"
      },
      "versions": "Versiones",
      "activeVersion": "Activo",
      "documentLabel": "Documento",
      "versionLabel": "Versión",
      "anyValue": "Cualquiera",
      "pathLabel": "Ruta",
      "memoryPromotionTargetLabel": "Promotion target scope",
      "memoryPromotionReasonLabel": "Promotion reason",
      "memoryPromotionHelp": "Promotion is a two-step audited action. Choose a target scope, review the exact from/to change on the record, then confirm. Confirming may make the observation available under the target scope authorization rules.",
      "memoryPromotionNotAllowed": "Cannot promote from {{from}} to {{to}}.",
      "memoryObservationPromoteTitle": "Review promotion from {{from}} to {{to}}",
      "memoryObservationPromoteTo": "Promote to {{scope}}…",
      "memoryPromotionConfirmTitle": "Confirm observation promotion",
      "memoryPromotionConfirmBody": "This will promote the observation from {{from}} to {{to}} and write a promotion audit entry. The original source text is not edited, but future memory selection may use the target scope visibility rules.",
      "memoryPromotionReasonPreview": "Reason: {{reason}}",
      "memoryPromotionNoReason": "No reason provided. The audit entry will still record actor, source scope, target scope, and time.",
      "memoryPromotionCancel": "Cancel",
      "memoryPromotionConfirmAction": "Confirm promotion",
      "memoryPreferenceUpdate": "Update preference",
      "memoryEdit": "Edit",
      "memoryEditCancel": "Cancel edit",
      "memoryObservationEditTextLabel": "Observation text",
      "memoryObservationUpdate": "Update observation",
      "memoryObservationDeleteConfirm": "Delete this observation and its linked projection when present?",
      "memoryPin": "Fijar",
      "memoryUpdate": "Actualizar memoria",
      "memoryEditTextLabel": "Texto de memoria",
      "memoryManualAddTitle": "Agregar memoria manualmente",
      "memoryManualAddDescription": "Guarda una memoria personal vinculada al proyecto sin esperar a la compactación automática.",
      "memoryManualAddClassLabel": "Tipo de memoria",
      "memoryManualAddTextLabel": "Texto de memoria manual",
      "memoryManualAddPlaceholder": "Escribe una nota, decisión o resumen duradero para recordar en este proyecto…",
      "memoryManualAddSave": "Guardar memoria",
      "memoryManualAddProjectRequired": "Elige un proyecto en el selector o filtro antes de agregar memoria."
    },
    "diagnostics": {
      "title": "Diagnostics",
      "load": "Load diagnostics",
      "workspaceId": "Workspace ID",
      "enrollmentId": "Enrollment ID",
      "filePath": "File path",
      "mode": "Retrieval mode",
      "visibility": "Visibility",
      "remoteProcessed": "Remote processed present",
      "derivedOnDemand": "Derived on demand",
      "persistedSnapshotAvailable": "Persisted snapshot available",
      "appliedVersions": "Applied versions",
      "runtimeBindings": "Runtime authored context",
      "snapshotTitle": "Persisted snapshot",
      "snapshotBindings": "Snapshot bindings"
    }
  },
  "embedding": {
    "status_unknown": "Estado de embedding desconocido (daemon antiguo o desconectado)",
    "status_ready": "Embedding listo — la búsqueda semántica se ejecuta localmente",
    "status_loading": "Cargando modelo de embedding…",
    "status_fallback": "Embedding: pipeline local no disponible, usando respaldo del servidor",
    "status_unavailable": "Embedding no disponible — búsqueda semántica deshabilitada en este daemon",
    "status_idle": "Embedding inactivo (no se ha usado en esta sesión)"
  },
  "memory": {
    "quickSearch": {
      "disabled": "La búsqueda de memoria está desactivada",
      "noResults": "No hay resultados de memoria autorizados",
      "citationUnavailable": "Cita no disponible"
    },
    "skills": {
      "disabled": "Las habilidades están desactivadas",
      "loadFailed": "No se pudo cargar la habilidad",
      "renderDropped": "La habilidad se omitió del contexto",
      "layerDiagnostics": "Diagnóstico de capas de habilidades",
      "enforced": "Obligatoria",
      "additive": "Aditiva"
    }
  },
  "todos": {
    "title": "Tareas",
    "progress": "{{done}}/{{total}}",
    "collapse": "Contraer",
    "expand": "Expandir"
  }
}
