@loicngr/kobo 2.1.21 → 2.1.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +69 -4
- package/CHANGELOG.md +9 -0
- package/CONFIGURATION.md +112 -2
- package/dist/mcp-server/kobo-tasks-server.js +4 -4
- package/dist/server/index.js +21 -6
- package/dist/server/services/agent/engines/claude-code/engine.js +5 -2
- package/dist/server/services/agent/engines/codex/engine.js +3 -0
- package/dist/server/services/agent/orchestrator.js +2 -0
- package/dist/server/services/agent/turn-liveness.js +1 -1
- package/dist/server/services/dev-server-service.js +41 -13
- package/dist/server/services/lifecycle-hook-service.js +29 -2
- package/dist/server/services/settings-service.js +66 -0
- package/dist/server/utils/script-runner.js +3 -1
- package/dist/shared/launch-instructions.js +8 -4
- package/dist/shared/memory-tools.js +2 -2
- package/docker-compose.vps.yml +1 -1
- package/docs/deployment-vps.md +36 -10
- package/docs/getting-started.md +11 -0
- package/package.json +1 -1
- package/scripts/kobo-update +25 -13
- package/src/client/dist/pwa/assets/ActivityFeed-1OKX_g3B.js +2 -0
- package/src/client/dist/pwa/assets/{ActivityFeed-DdJvMzRI.css → ActivityFeed-CmAFv-2c.css} +1 -1
- package/src/client/dist/pwa/assets/{AutoLoopFinalReviewSettings-f4VDR5dd.js → AutoLoopFinalReviewSettings-VoA9uBw0.js} +1 -1
- package/src/client/dist/pwa/assets/{ChangelogPage-dEWpjTlp.js → ChangelogPage-DHl3hD3t.js} +1 -1
- package/src/client/dist/pwa/assets/{ComparisonPanel-Bwbqgvr4.js → ComparisonPanel-D6EKTtni.js} +1 -1
- package/src/client/dist/pwa/assets/{CreatePage-CCCCAhrx.js → CreatePage-CZzEOVVq.js} +1 -1
- package/src/client/dist/pwa/assets/{DashboardPage-3byhBITf.js → DashboardPage-DjLoUvjA.js} +1 -1
- package/src/client/dist/pwa/assets/{DiffViewer-Bj_NTfCF.js → DiffViewer-BQ6OEmoi.js} +3 -3
- package/src/client/dist/pwa/assets/{DocumentsPanel-xyLDV3T1.js → DocumentsPanel-yrQviqCd.js} +1 -1
- package/src/client/dist/pwa/assets/{DrawerToggleButton-pwBSstQP.js → DrawerToggleButton-D5qNeXnn.js} +1 -1
- package/src/client/dist/pwa/assets/{GitPanel-DvIdrkVw.js → GitPanel-DCXlhcAD.js} +3 -3
- package/src/client/dist/pwa/assets/{HealthPage-BSwhZQRo.js → HealthPage-COicuNQn.js} +1 -1
- package/src/client/dist/pwa/assets/{MainLayout-DZJ9BvZw.js → MainLayout-ZcExZTqC.js} +2 -2
- package/src/client/dist/pwa/assets/{MemoryPanel-ChR032zP.js → MemoryPanel-D73Qz9f7.js} +1 -1
- package/src/client/dist/pwa/assets/{MemoryProposalList-BRKSoS4K.js → MemoryProposalList-BGlq2DkD.js} +1 -1
- package/src/client/dist/pwa/assets/{QBtnDropdown-o3QH0Bb8.js → QBtnDropdown-CykBCmwa.js} +1 -1
- package/src/client/dist/pwa/assets/{QExpansionItem-BhFHiyq9.js → QExpansionItem-CAW9J1Uv.js} +1 -1
- package/src/client/dist/pwa/assets/{QScrollArea-BsNY6slB.js → QScrollArea-C_d-8eO7.js} +1 -1
- package/src/client/dist/pwa/assets/{QSelect-bEq3g_io.js → QSelect-C1AN93yA.js} +1 -1
- package/src/client/dist/pwa/assets/{QTooltip-xYZ6KNu2.js → QTooltip-C9qaLW_h.js} +1 -1
- package/src/client/dist/pwa/assets/{SchedulePanel-DIFv_FTY.js → SchedulePanel-CQpzDhq7.js} +1 -1
- package/src/client/dist/pwa/assets/{SearchPage-BqTBIt5E.js → SearchPage-fZlSSEu_.js} +1 -1
- package/src/client/dist/pwa/assets/{SettingsPage-BRvUAZ5r.css → SettingsPage-BCOF0ssp.css} +1 -1
- package/src/client/dist/pwa/assets/SettingsPage-eyJZxeCJ.js +9 -0
- package/src/client/dist/pwa/assets/{SplitWorkspacePage-D6r2pl5g.js → SplitWorkspacePage-CfeO6TZb.js} +1 -1
- package/src/client/dist/pwa/assets/{TerminalPanel-CladK9Vv.js → TerminalPanel-CfDZOteT.js} +1 -1
- package/src/client/dist/pwa/assets/{ToolCallItem-CdzEME4w.js → ToolCallItem-CHE6tylq.js} +2 -2
- package/src/client/dist/pwa/assets/{TouchPan-B4gQPwGN.js → TouchPan-Csev_qU6.js} +1 -1
- package/src/client/dist/pwa/assets/{TourReplayButton-B0j6AZwU.js → TourReplayButton-Crr7tF1b.js} +1 -1
- package/src/client/dist/pwa/assets/{WorkspaceAttentionLabels-CeVhoidC.js → WorkspaceAttentionLabels-DpUZOiJv.js} +1 -1
- package/src/client/dist/pwa/assets/{WorkspacePage-w2bF8wTd.css → WorkspacePage-Bk-WWOYM.css} +1 -1
- package/src/client/dist/pwa/assets/{WorkspacePage-CK5XCuG_.js → WorkspacePage-_QSKLO42.js} +3 -3
- package/src/client/dist/pwa/assets/{browser-B8tNScg1.js → browser-o7ftkZex.js} +1 -1
- package/src/client/dist/pwa/assets/{build-path-tree-kmVAcvs_.js → build-path-tree-D6dZQpIb.js} +1 -1
- package/src/client/dist/pwa/assets/{custom-sounds-CJwd-8TL.js → custom-sounds-DVX9zCET.js} +1 -1
- package/src/client/dist/pwa/assets/{de-BaO6kbdO.js → de-DOE4H_Jf.js} +2 -2
- package/src/client/dist/pwa/assets/{editor.api-CgbPVW9s.js → editor.api-C8TYnUXm.js} +1 -1
- package/src/client/dist/pwa/assets/{efforts-y7Wf_Rgd.js → efforts-DfsG0_o0.js} +1 -1
- package/src/client/dist/pwa/assets/{es-DTvSsbD0.js → es-BW57JPlm.js} +2 -2
- package/src/client/dist/pwa/assets/{expand-template-BFbbjj7X.js → expand-template-CJZlWMfI.js} +1 -1
- package/src/client/dist/pwa/assets/{format-BETfc4z9.js → format-DOCqk2Dn.js} +1 -1
- package/src/client/dist/pwa/assets/{formatters-C22K9vlC.js → formatters-BFocC6LJ.js} +1 -1
- package/src/client/dist/pwa/assets/{fr-BH7V66Yz.js → fr-DnmIKHaQ.js} +2 -2
- package/src/client/dist/pwa/assets/{freemarker2-DiRVvp9O.js → freemarker2-CfME4WOK.js} +1 -1
- package/src/client/dist/pwa/assets/{handlebars-BLYRroSQ.js → handlebars-uvKdDnJl.js} +1 -1
- package/src/client/dist/pwa/assets/{html-DAW2vteY.js → html-BrEPgLuD.js} +1 -1
- package/src/client/dist/pwa/assets/i18n-BmTCjikk.js +1 -0
- package/src/client/dist/pwa/assets/{index-CbyHfF8I.js → index-z1Oh2-I_.js} +4 -4
- package/src/client/dist/pwa/assets/{it-DZGbkkoy.js → it-DSrEQgZQ.js} +2 -2
- package/src/client/dist/pwa/assets/{javascript-Bb5J8n0k.js → javascript-KH2xP4lQ.js} +1 -1
- package/src/client/dist/pwa/assets/{liquid-Dqx3adnJ.js → liquid-D08TlsVs.js} +1 -1
- package/src/client/dist/pwa/assets/{mdx-D_7igLV3.js → mdx-y74A51cS.js} +1 -1
- package/src/client/dist/pwa/assets/{monaco-contributions-C-0CbrAy.js → monaco-contributions-Cx8iaAhd.js} +1 -1
- package/src/client/dist/pwa/assets/{monaco.contribution-c6JPBEZI.js → monaco.contribution-CFq0guCl.js} +2 -2
- package/src/client/dist/pwa/assets/{network-auth-BE4qbvWm.js → network-auth-DnGOOzCV.js} +1 -1
- package/src/client/dist/pwa/assets/{notify-theme-BVFBBGrJ.js → notify-theme-B9lUAgQl.js} +1 -1
- package/src/client/dist/pwa/assets/{project-color-CHOR2jB5.js → project-color-TgENPFLi.js} +1 -1
- package/src/client/dist/pwa/assets/{python-Dqubw1F5.js → python-Cy3bAVPq.js} +1 -1
- package/src/client/dist/pwa/assets/{razor-BQphc9Kt.js → razor-gD9QOuiV.js} +1 -1
- package/src/client/dist/pwa/assets/{typescript-Dep00l0X.js → typescript-CEItY0bH.js} +1 -1
- package/src/client/dist/pwa/assets/{use-search-index-status-CQHHvHwM.js → use-search-index-status-BtJ0pOy9.js} +1 -1
- package/src/client/dist/pwa/assets/{use-tours-IVbXTmz2.js → use-tours-COLDth2h.js} +2 -2
- package/src/client/dist/pwa/assets/{use-worktree-restore-B3s5xDGR.js → use-worktree-restore-CShbwpGy.js} +1 -1
- package/src/client/dist/pwa/assets/{workspace-templates-CyuTpztP.js → workspace-templates-BOMNQgBl.js} +1 -1
- package/src/client/dist/pwa/assets/{xml-BMS2dvaF.js → xml-BJvL5qcE.js} +1 -1
- package/src/client/dist/pwa/assets/{yaml-CYw92aic.js → yaml-DtkVRZaX.js} +1 -1
- package/src/client/dist/pwa/index.html +1 -1
- package/src/client/dist/pwa/sw.js +1 -1
- package/src/mcp-server/README.md +13 -0
- package/src/mcp-server/kobo-tasks-server.ts +5 -4
- package/src/client/dist/pwa/assets/ActivityFeed-DiUxnmGJ.js +0 -2
- package/src/client/dist/pwa/assets/SettingsPage-BLD0xWFB.js +0 -9
- package/src/client/dist/pwa/assets/i18n-DnuTmw3O.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var e={"groupMessage.title":`Mensaje grupal`,"groupMessage.description":`Enviar la misma instrucción a varios workspaces.`,"groupMessage.devServerRunning":`Solo workspaces con un servidor de desarrollo en ejecución`,"groupMessage.tags":`Etiquetas`,"groupMessage.statuses":`Estados de los workspaces`,"groupMessage.filtersHint":`Al menos una etiqueta seleccionada Y un estado seleccionado. Sin filtros se incluyen todos los workspaces activos.`,"groupMessage.selected":`{count} destinatarios seleccionados`,"groupMessage.selectAll":`Seleccionar todos`,"groupMessage.selectNone":`Deseleccionar todos`,"groupMessage.nextIteration":`Próxima iteración de auto-loop`,"groupMessage.immediate":`Envío normal al chat`,"groupMessage.empty":`Ningún workspace coincide con los filtros.`,"groupMessage.content":`Mensaje`,"groupMessage.deliveryHint":`Los auto-loops reciben la instrucción en la próxima iteración, sin detenerse. Los demás workspaces reciben un mensaje de chat, reanudando los agentes inactivos si es necesario.`,"groupMessage.limit":`Selecciona como máximo 200 workspaces por mensaje.`,"groupMessage.finished":`Resultados del envío`,"groupMessage.inProgress":`Enviando mensaje grupal`,"groupMessage.serverContinues":`El servidor continúa el envío si cierras esta ventana. En cola significa guardado para una iteración futura, todavía sin procesar.`,"groupMessage.unknownHint":`El envío es incierto para algunos workspaces. Consulta su chat antes de enviar otro mensaje.`,"groupMessage.retryHint":`Se conservan los destinatarios y el mensaje originales. La comprobación reutiliza esta solicitud sin duplicar los envíos aceptados.`,"groupMessage.retry":`Comprobar este envío`,"groupMessage.newMessage":`Nuevo mensaje`,"groupMessage.send":`Enviar a {count} workspaces`,"groupMessage.state.pending":`Pendiente`,"groupMessage.state.sending":`Enviando`,"groupMessage.state.sent":`Enviado`,"groupMessage.state.queued":`En cola para auto-loop`,"groupMessage.state.rejected":`Rechazado`,"groupMessage.state.unknown":`Envío incierto`,"groupMessage.state.not_sent":`No enviado`,"tours.home.groupMessage.title":`Escribir a varios workspaces`,"tours.home.groupMessage.description":`Filtra por etiquetas, estados y servidores de desarrollo en ejecución, comprueba los destinatarios y envía una instrucción. Los auto-loops la reciben en la siguiente iteración. Cada workspace muestra su resultado de envío.`,"autoLoop.finalReview.title":`Configurar la review final`,"autoLoop.finalReview.description":`Tras todas las tareas y verificaciones finales, una sesión separada revisa los cambios. La última sesión de trabajo corrige los hallazgos y se repite la review hasta que no quede ninguno.`,"autoLoop.finalReview.enabled":`Review final automática`,"autoLoop.finalReview.configure":`Configurar reviewer`,"autoLoop.finalReview.save":`Guardar configuración`,"autoLoop.finalReview.hint":`Nueva sesión de review de solo lectura y regreso a la última sesión de trabajo para corregir hallazgos. La configuración se guarda con este workspace.`,"autoLoop.finalReview.loadFailed":`No se pudo cargar la configuración de la review final.`,"autoLoop.finalReview.saveFailed":`No se pudo guardar la configuración de la review final.`,"autoLoop.finalReview.cycle":`Ciclo de review {count}`,"autoLoop.finalReview.findings":`{count} hallazgos`,"autoLoop.finalReview.disabled":`Desactivada`,"autoLoop.finalReview.pending":`Review final programada`,"autoLoop.finalReview.reviewing":`Review final en curso`,"autoLoop.finalReview.fixing":`Corrigiendo hallazgos`,"autoLoop.finalReview.completed":`Review final aprobada`,"autoLoop.finalReview.blocked":`La review final requiere atención`,"reviewReturn.title":`Regreso de la review`,"reviewReturn.reviewing":`Review en curso. El regreso a la sesión original está guardado.`,"reviewReturn.ready":`Review terminada. Regresando a la sesión original.`,"reviewReturn.dispatching":`Enviando el resumen de review a la sesión original.`,"reviewReturn.unknown":`El servidor se detuvo antes de confirmar la entrega. La sesión original podría haber recibido ya el resumen.`,"reviewReturn.blocked":`El regreso a la sesión original requiere atención.`,"reviewReturn.retry":`Reintentar regreso`,"reviewReturn.cancel":`Cancelar regreso`,"reviewReturn.retryUnknown":`Reintentar entrega (puede duplicar el resumen)`,"reviewReturn.actionFailed":`No se pudo actualizar el regreso de la review.`,"memory.panel.contextsHint":`Lo que se envió al LLM para esta conversación.`,"memory.panel.entriesHint":`Notas persistentes que puedes editar o reutilizar.`,"memory.panel.proposalsHint":`Sugerencias de los agentes para aprobar o rechazar.`,"memory.panel.operationsHint":`Registro de lecturas y cambios de la memoria.`,"memory.panel.openDialog":`Abrir la memoria en un diálogo`,"memory.panel.closeDialog":`Cerrar el diálogo de memoria`,"tours.workspace.memorySettings.title":`Gestionar los tres niveles`,"tours.workspace.memorySettings.description":`Este enlace abre los ajustes de Memoria: global para todos los proyectos, proyecto para sus workspaces y workspace para esta misión. Cada nivel se borra de forma independiente tras confirmación; esto no elimina la información ya enviada al LLM.`,"tours.settings.memoryModes.title":`Elegir el modo de memoria`,"tours.settings.memoryModes.description":`Híbrido por defecto: el agente guarda notas del workspace y propone cambios de proyecto/globales para aprobar. Manual: solo tú escribes. Automático: el agente escribe en los tres niveles. Pulsa Guardar para aplicar el modo.`,"memory.entry.loadMore":`Cargar más memorias`,"tours.settings.skills.title":`Elegir una suite de skills`,"tours.settings.skills.description":`Empieza con Standard: no requiere extensiones. Superpowers, gstack, ECC y sus combinaciones usan skills ya instalados y disponibles para el motor elegido. La selección cambia las instrucciones del agente; no instala skills ni concede permisos. Personalizado permite escribir tus propias instrucciones. Guarda tu elección para aplicarla.`,"tours.settings.git.description":`Elige cuándo los agentes pueden crear commits, hacer push o publicar. Define convenciones Git y prefijos de ramas.`,"tours.settings.git.title":`Flujo de trabajo Git`,"settings.reviewPromptHint":`Instrucciones enviadas al agente al iniciar una revisión de código.`,"settings.help.git":`Preferencias de commit, push y publicación, convenciones Git y prefijos de ramas.`,"settings.nav.promptTemplates":`Plantillas de prompts`,"memory.scope.label":`Ámbito de memoria`,"settings.nav.memory":`Memoria`,"settings.help.memory":`Elige cómo usa Kōbō la memoria y administra las memorias globales, de proyecto y de workspace.`,"memory.settings.title":`Memoria`,"memory.panel.title":`Memoria`,"memory.panel.contexts":`Contextos entregados a esta conversación`,"memory.panel.noContext":`No se ha entregado ningún contexto de memoria a esta conversación.`,"memory.panel.contextStats":`{tokens} tokens estimados · {cumulative} acumulados · {remaining} restantes · {omitted} omitidos`,"memory.panel.entries":`Memorias disponibles`,"memory.panel.proposals":`Propuestas pendientes`,"memory.panel.operations":`Operaciones del workspace`,"memory.panel.add":`Añadir memoria`,"memory.panel.clearWorkspace":`Borrar memoria del workspace`,"memory.panel.settingsLink":`Gestionar la memoria global y del proyecto en Ajustes`,"memory.panel.clearConfirm":`¿Borrar {entries} memorias y {proposals} propuestas de este workspace?`,"memory.panel.confirmClear":`Borrar memoria del workspace`,"memory.panel.promoteTo":`Promover a`,"memory.panel.loading":`Cargando memoria del workspace…`,"memory.panel.loadFailed":`No se pudo cargar la memoria del workspace.`,"memory.panel.archived":`Archivado`,"memory.panel.purged":`Worktree purgado`,"memory.panel.changed":`Modificada desde este contexto`,"memory.panel.deleted":`Eliminada desde este contexto`,"memory.panel.truncated":`(texto truncado)`,"memory.engine.codex":`Codex`,"memory.tool.unexplainedError":`La herramienta de memoria no devolvió detalles. Si el presupuesto de lectura se agotó, deja de leer; guardar sigue disponible según los permisos. Una nueva conversación o una compactación confirmada renueva el presupuesto de lectura, no un nuevo mensaje.`,"memory.engine.claude-code":`Claude Code`,"memory.context.state.failed":`Fallido`,"memory.context.state.prepared":`Preparado`,"memory.context.state.submitted":`Enviado`,"memory.context.state.initialized":`Inicializado`,"memory.context.state.unknown":`Entrega desconocida`,"memory.settings.intro":`La memoria guarda notas explícitas para futuras sesiones del agente. No sustituye el historial del proveedor ni el del chat.`,"memory.settings.mode":`Comportamiento automático de la memoria`,"memory.settings.mode.manual":`Manual`,"memory.settings.modeHint.manual":`Los agentes pueden leer la memoria. Solo tú puedes crear o modificar las notas.`,"memory.settings.mode.automatic":`Automático`,"memory.settings.modeHint.automatic":`Los agentes pueden recuperar y actualizar automáticamente memorias relevantes.`,"memory.settings.mode.hybrid":`Híbrido`,"memory.settings.modeHint.hybrid":`Los agentes pueden modificar directamente la memoria del workspace. Los cambios de proyecto y globales requieren tu aprobación.`,"memory.settings.saveNote":`El modo forma parte de los ajustes y se aplica al guardarlos. Si sales sin guardar, se conserva el modo anterior.`,"memory.settings.manageTitle":`Explorar y administrar la memoria`,"memory.settings.independentNote":`Crear, editar, aprobar y borrar memoria se aplica al instante, independientemente del botón para guardar ajustes.`,"memory.settings.add":`Añadir memoria`,"memory.settings.clear":`Vaciar este ámbito…`,"memory.settings.clearConfirmTitle":`¿Vaciar este ámbito de memoria?`,"memory.settings.clearConfirm":`Se eliminarán {entries} memorias y {proposals} propuestas pendientes del ámbito {scope} seleccionado.`,"memory.settings.clearWarning":`Esto solo borra los datos de memoria de Kōbō; no elimina conversaciones anteriores del proveedor ni el historial del chat.`,"memory.settings.confirmClear":`Vaciar ámbito`,"memory.settings.cancel":`Cancelar`,"memory.settings.loadFailed":`No se pudieron cargar los ámbitos de memoria.`,"memory.settings.saveFailed":`No se pudo guardar este cambio de memoria.`,"memory.settings.clearFailed":`No se pudo previsualizar ni vaciar este ámbito de memoria.`,"memory.settings.clearConflict":`La memoria cambió desde la vista previa. Se actualizaron los recuentos; revísalos antes de volver a confirmar.`,"memory.settings.loadMoreScopes":`Cargar más ámbitos`,"memory.settings.loadingScopes":`Cargando ámbitos…`,"memory.settings.deleteConfirmTitle":`Confirmar eliminación de memoria`,"memory.settings.deleteConfirm":`¿Eliminar «{title}» de {scope}?`,"memory.settings.deleteConfirmAction":`Eliminar memoria`,"memory.scope.choose":`Elegir ámbito`,"memory.scope.global":`Global`,"memory.scope.project":`Proyecto`,"memory.scope.workspace":`Workspace`,"memory.entry.empty":`No hay memorias en este ámbito.`,"memory.entry.revision":`Revisión {revision}`,"memory.entry.edit":`Editar`,"memory.entry.editAria":`Editar {title}`,"memory.entry.delete":`Eliminar`,"memory.entry.deleteAria":`Eliminar {title}`,"memory.entry.promote":`Promover`,"memory.entry.promoteAria":`Promover {title}`,"memory.editor.key":`Clave estable`,"memory.editor.title":`Título`,"memory.editor.body":`Memoria`,"memory.editor.save":`Guardar memoria`,"memory.editor.saving":`Guardando…`,"memory.editor.cancel":`Cancelar`,"memory.editor.conflict":`Esta memoria cambió en otro lugar. Recárgala o conserva el borrador y vuelve a basarlo explícitamente en la revisión actual.`,"memory.editor.reload":`Recargar versión actual`,"memory.editor.rebase":`Conservar borrador y rebasar`,"memory.proposal.empty":`No hay propuestas pendientes.`,"memory.proposal.approve":`Aprobar`,"memory.proposal.approveAria":`Aprobar {title}`,"memory.proposal.reject":`Rechazar`,"memory.proposal.rejectAria":`Rechazar {title}`,"memory.operation.empty":`Aún no hay operaciones de memoria.`,"memory.operation.created":`Memoria creada`,"memory.operation.updated":`Memoria actualizada`,"memory.operation.deleted":`Memoria eliminada`,"memory.operation.proposed":`Cambio propuesto`,"memory.operation.approved":`Propuesta aprobada`,"memory.operation.rejected":`Propuesta rechazada`,"memory.operation.promoted":`Memoria promovida`,"memory.operation.cleared":`Ámbito vaciado`,"memory.operation.read":`Memoria devuelta por una lectura`,"memory.operation.humanActor":`Tú`,"memory.operation.internalActor":`Agente · {engine}`,"memory.operation.externalActor":`{name} vía {transport}`,"memory.operation.loadMore":`Cargar operaciones anteriores`,"memory.operation.loading":`Cargando…`,"settings.nav.git":`Git`,"integration.direct":`Conexión directa`,"integration.directHint":`Opcional: configure un comando MCP de confianza en este servidor sin configuración Claude. Ponga las credenciales en variables de entorno. Guardar reemplaza toda la conexión; active la integración por separado.`,"integration.agentScope":`Las conexiones activadas se transmiten a Claude Code y Codex al iniciar o reanudar el agente. Detén el agente en curso para aplicar los cambios. Las configuraciones MCP personales son independientes.`,"integration.directOverrides":`La conexión directa guardada tiene prioridad. Elimínala para usar una entrada MCP de Claude.`,"integration.stored":`Hay una conexión privada guardada. Sus valores nunca se devuelven al navegador.`,"integration.example":`Ejemplo: {example}`,"integration.tokenExample":`TU_TOKEN_NOTION`,"integration.packageExample":`tu-paquete-mcp`,"integration.variableExample":`TU_VARIABLE`,"integration.valueExample":`tu-valor`,"integration.command":`Ejecutable`,"integration.args":`Argumentos (array JSON)`,"integration.environment":`Entorno y credenciales (objeto JSON)`,"integration.failed":`No se pudo cargar o guardar la conexión. Revise el JSON y el almacenamiento local.`,"integration.saved":`Conexión guardada. Active la integración y pruebe la conexión.`,"integration.save":`Reemplazar conexión`,"integration.clear":`Eliminar conexión directa`,"settings.notificationSoundReady":`Tono de finalización`,"settings.customSounds":`Sonidos importados`,"settings.customSoundsHint":`Importa tus propios sonidos de notificación ({count} como máximo, {size} MB cada uno, .wav .mp3 .ogg .webm). Se guardan en el directorio de datos de Kōbō y aparecen en todos los selectores de abajo.`,"settings.customSoundsImport":`Importar un sonido`,"settings.customSoundsFull":`Límite alcanzado ({count} sonidos). Elimina uno antes de importar otro.`,"settings.customSoundsError.type":`Formato no compatible. Usa un archivo .wav, .mp3, .ogg o .webm.`,"settings.customSoundsError.size":`Archivo demasiado grande. El límite es {size} MB.`,"settings.customSoundsError.count":`Límite alcanzado ({count} sonidos). Elimina uno antes de importar otro.`,"settings.customSoundsError.failed":`No se pudo completar la acción. Comprueba la conexión e inténtalo de nuevo.`,"setup.check.worktrees":`Directorio de worktrees`,"setup.fix.worktrees":`Revise el destino de worktrees en los ajustes y sus permisos de escritura.`,"setup.title":`Configurar la primera tarea`,"setup.intro":`Elija un motor y un proyecto Git local. No necesita skills ni integraciones.`,"setup.project":`Directorio local del proyecto`,"setup.credentials":`Inicie sesión en este servidor con claude /login o codex login, o configure su clave API. Estas comprobaciones no envían prompts de pago.`,"setup.permissions":`Empiece con un plan. Elija explícitamente los permisos en el formulario; un worktree no aísla su equipo.`,"setup.check":`Comprobar entorno`,"setup.failed":`No se pudo completar la acción. Revise la conexión y vuelva a intentarlo.`,"setup.start":`Describir mi primera tarea`,"setup.settings":`Abrir ajustes`,"setup.skip":`Omitir por ahora`,"setup.status.ok":`Disponible`,"setup.status.missing":`Falta`,"setup.status.error":`Requiere atención`,"setup.status.unknown":`Sin verificar`,"setup.check.node":`Node.js`,"setup.check.platform":`Plataforma`,"setup.check.git":`Git`,"setup.check.shell":`Bash`,"setup.check.storage":`Directorio de datos`,"setup.check.runtime":`Paquete del motor`,"setup.check.authentication":`Autenticación`,"setup.check.model":`Acceso al modelo`,"setup.check.repository":`Repositorio Git`,"setup.check.firstCommit":`Primer commit`,"setup.check.projectWritable":`Escritura en el proyecto`,"setup.fix.node":`Instale Node.js 24.15 o posterior.`,"setup.fix.platform":`Use Linux, macOS o WSL2; Windows nativo no está soportado.`,"setup.fix.git":`Instale Git en este servidor.`,"setup.fix.shell":`Instale Bash en este servidor.`,"setup.fix.storage":`Revise KOBO_HOME y los permisos del directorio.`,"setup.fix.runtime":`Reinstale Kōbō con las dependencias opcionales del motor.`,"setup.fix.authentication":`Inicie sesión con el proveedor elegido. La primera tarea verificará el acceso.`,"setup.fix.model":`Elija Auto o un modelo disponible para su cuenta.`,"setup.fix.repository":`Elija un directorio de trabajo Git existente.`,"setup.fix.firstCommit":`Cree el primer commit antes de crear un worktree.`,"setup.fix.projectWritable":`Elija un directorio de proyecto con permiso de escritura.`,"handoff.freshTitle":`Continuar en una sesión nueva`,"handoff.switchTitle":`Cambiar de LLM`,"handoff.warning":`El trabajo actual se interrumpe de inmediato. Una sesión nueva continúa automáticamente en el mismo workspace, conservando las tareas y el historial.`,"handoff.generate":`Generar un traspaso con el agente actual`,"handoff.generateHint":`Desactiva esta opción si se ha agotado su cuota. Kōbō transmitirá el objetivo, las tareas, el estado de Git y el historial sin llamar al LLM actual.`,"handoff.start":`Iniciar sesión nueva`,"handoff.stopping":`Deteniendo el agente actual`,"handoff.generating":`Preparando el traspaso`,"handoff.starting":`Iniciando la sesión nueva`,"handoff.completed":`Sesión nueva iniciada`,"handoff.failed":`Error en el traspaso`,"handoff.interrupted":`Traspaso interrumpido`,"handoff.cancelled":`Traspaso cancelado`,"handoff.skip":`Continuar sin resumen del LLM`,"handoff.cancel":`Cancelar traspaso`,"handoff.report":`Leer traspaso`,"handoff.source":`Sesión anterior`,"handoff.progress":`Traspaso de sesión en curso`,"handoff.blocked":`Resuelve o cancela el traspaso para continuar.`,"handoff.error":`No se pudo preparar el traspaso de sesión.`,"handoff.loadFailed":`No se pudo cargar el estado del traspaso.`,"handoff.status":`Traspaso de sesión`,"chat.externalLlm":`LLM externo · {name}`,"search.indexing":`Indexando el historial: {processed}/{total}. Resultados parciales.`,"search.indexUnavailable":`Índice de búsqueda no disponible. Inténtalo más tarde.`,"blockers.setupConfiguration":`No hay script de preparación configurado. Añade uno en la sección Scripts de los ajustes.`,"blockers.noWorkspace":`Selecciona un workspace para usar esta acción.`,"blockers.purged":`Restaura el worktree desde el aviso del workspace antes de esta acción.`,"blockers.archived":`Desarchiva el workspace desde su menú para usar esta acción.`,"blockers.operation":`Espera a que termine la operación actual.`,"blockers.agentBusy":`Espera a que termine el turno o detén el agente desde la conversación.`,"blockers.configuration":`Configura esta función en los ajustes del proyecto.`,"blockers.settings":`Abrir ajustes`,"workspaceSort.label":`Ordenar workspaces`,"workspaceSort.activity":`Última actividad`,"workspaceSort.created":`Fecha de creación`,"workspaceSort.name":`Nombre`,"workspaceSort.attention":`Prioridad de atención`,"workspaceSort.asc":`Ascendente`,"workspaceSort.desc":`Descendente`,"workspaceSort.hint":`Orden dentro de cada grupo, incluidos los archivados. Consultar un workspace no cambia su última actividad.`,"model.tooltip":`Modelo usado por el agente en este workspace`,"reasoning.tooltip":`Nivel de razonamiento usado por el agente en este workspace`,"thinking.label":`Razonamiento`,"thinking.noDetails":`El agente está razonando…`,"common.save":`Guardar`,"common.duplicate":`Duplicar`,"common.confirm":`Confirmar`,"common.cancel":`Cancelar`,"common.open":`Abrir`,"common.retry":`Reintentar`,"common.delete":`Eliminar`,"common.close":`Cerrar`,"workspace.deleteTitle":`Eliminar workspace`,"workspace.deleteTypeBranch":`Vuelva a escribir el nombre de la rama para confirmar`,"workspace.deleteConsequences":`Esto elimina el worktree y todo el historial.`,"workspace.deleteFailed":`No se pudo eliminar el workspace.`,"workspace.archiveFailed":`No se pudo archivar el workspace.`,"tasks.updateFailed":`No se pudo actualizar la tarea.`,"dashboard.tooltip":`Panel`,"dashboard.title":`Panel`,"dashboard.count":`{n} workspace | {n} workspaces`,"dashboard.empty":`Ningún workspace activo.`,"dashboard.workspace":`Workspace`,"dashboard.status":`Estado`,"dashboard.attention":`Atención`,"dashboard.pr":`PR`,"dashboard.diff":`Diff`,"dashboard.activity":`Actividad`,"dashboard.prOpen":`abierta`,"reliability.title":`Fiabilidad de los modelos`,"reliability.subtitle":`Cómo terminó realmente cada motor y modelo en este equipo.`,"reliability.empty":`Todavía no hay ninguna sesión finalizada.`,"reliability.loadFailed":`No se pudieron cargar las cifras de fiabilidad.`,"reliability.engine":`Motor`,"reliability.model":`Modelo`,"reliability.sessions":`Sesiones`,"reliability.completed":`Completadas`,"reliability.watchdog":`Watchdog`,"reliability.killed":`Detenidas`,"reliability.errors":`Errores`,"reliability.unknown":`Desconocido`,"reliability.median":`Mediana`,"reliability.durationSeconds":`{s}s`,"reliability.durationMinutes":`{m}min {s}s`,"reliability.durationHours":`{h}h {m}min`,"reliability.reset":`Restablecer: contar solo las sesiones finalizadas a partir de ahora`,"reliability.since":`Desde el {date}`,"reliability.showAll":`Mostrar todo`,"update.available":`Hay una versión más reciente de Kōbō: {version}`,"update.how":`Cómo actualizar`,"common.dismiss":`Descartar`,"common.details":`Detalles`,"common.ok":`OK`,"whatsNew.title":`Novedades`,"common.loading":`Cargando...`,"common.search":`Buscar...`,"common.refresh":`Actualizar`,"common.copy":`Copiar`,"common.copied":`Copiado al portapapeles`,"common.copyFailed":`Error al copiar`,"common.add":`Añadir`,"folderPicker.title":`Elegir una carpeta`,"folderPicker.parent":`Carpeta superior`,"folderPicker.empty":`Sin subcarpetas`,"folderPicker.select":`Elegir esta carpeta`,"common.start":`Iniciar`,"common.stop":`Detener`,"common.archive":`Archivar`,"common.unarchive":`Desarchivar`,"common.selectWorkspace":`Selecciona un workspace`,"common.noResults":`Sin resultados para "{query}"`,"common.send":`enviar`,"common.newLine":`nueva línea`,"common.history":`historial`,"common.justNow":`ahora mismo`,"common.minutesAgo":`hace {count}m`,"common.hoursAgo":`hace {count}h`,"common.daysAgo":`hace {count}d`,"model.auto":`Auto`,"model.opus55":`Opus 5.5`,"model.opus55Description":`Para tareas complejas y cotidianas, contexto de 1M`,"model.sonnet55":`Sonnet 5.5`,"model.sonnet55Description":`Eficiente para tareas rutinarias, contexto de 1M`,"model.gpt61sol":`GPT-6.1 Sol`,"model.gpt61solDescription":`Último modelo versátil para programación y trabajo cotidiano`,"model.gpt6sol":`GPT-6 Sol`,"model.gpt6solDescription":`Modelo versátil de la generación anterior`,"model.gpt6luna":`GPT-6 Luna`,"model.gpt6lunaDescription":`Modelo rápido para tareas sencillas`,"model.fable51":`Fable 5.1`,"model.fable5":`Fable 5`,"model.fable5Description":`Para tareas exigentes y de larga duración`,"model.mythos51":`Mythos 5.1 (Glasswing)`,"model.mythos5":`Mythos 5 (Glasswing)`,"model.fable51Description":`El modelo más capaz - reemplaza a Fable 5, contexto 1M, adaptive thinking`,"model.mythos51Description":`Fable 5.1 ofrecido solo por invitación mediante Project Glasswing`,"model.mythos5Description":`Fable 5.1 sin clasificadores de seguridad — acceso limitado (Project Glasswing)`,"model.opus":`Opus 4.6`,"model.sonnet":`Sonnet 4.6`,"model.opus5":`Opus 5`,"model.opus48":`Opus 4.8`,"model.opus47Classic":`Opus 4.7 (Classic)`,"model.opus471m":`Opus 4.7 (1M)`,"model.opusClassic":`Opus 4.6 (Classic)`,"model.opus1m":`Opus 4.6 (1M)`,"model.sonnet5":`Sonnet 5`,"model.sonnetClassic":`Sonnet 4.6 (Classic)`,"model.sonnet1m":`Sonnet 4.6 (1M)`,"model.haiku":`Haiku 4.5`,"model.autoDescription":`Claude elige el modelo óptimo`,"model.opus5Description":`Para código agéntico complejo y trabajo empresarial, contexto 1M`,"model.opus48Description":`Opus más capaz — coding agéntico long-horizon, contexto 1M por defecto, esfuerzo high por defecto`,"model.opus47ClassicDescription":`Último Opus, el más capaz`,"model.opus471mDescription":`Último Opus, contexto 1M`,"model.opusClassicDescription":`El más potente`,"model.opus1mDescription":`El más potente, contexto 1M`,"model.sonnet5Description":`La mejor combinación de velocidad e inteligencia, contexto 1M`,"model.sonnetClassicDescription":`Equilibrado`,"model.sonnet1mDescription":`Equilibrado, contexto 1M`,"model.haikuDescription":`El más rápido`,"model.gpt6astra":`GPT-6 Astra`,"model.gpt6astraDescription":`El modelo frontera más capaz, contexto 1M (requiere autenticación ChatGPT)`,"model.gpt56sol":`GPT-5.6 Sol`,"model.gpt56solDescription":`Modelo versátil de una generación anterior`,"model.gpt56terra":`GPT-5.6 Terra`,"model.gpt56terraDescription":`Modelo de codificación agéntica equilibrado para el día a día (requiere autenticación ChatGPT)`,"model.gpt56luna":`GPT-5.6 Luna`,"model.gpt56lunaDescription":`Modelo de codificación agéntica rápido y económico (requiere autenticación ChatGPT)`,"model.gpt55":`GPT-5.5`,"model.gpt55Description":`Modelo de programación anterior`,"model.gpt54":`GPT-5.4`,"model.gpt54Description":`Alternativa por defecto — razonamiento sólido, compatible con clave API`,"model.gpt54mini":`GPT-5.4 mini`,"model.gpt54miniDescription":`Rápido y eficiente — ideal para tareas reactivas y subagentes`,"model.gpt52":`GPT-5.2`,"model.gpt52Description":`Optimizado para trabajo profesional y agentes de larga duración`,"model.gpt53codex":`GPT-5.3 Codex`,"model.gpt53codexDescription":`Modelo especializado en código para ingeniería de software compleja`,"reasoning.auto":`auto`,"reasoning.minimal":`minimal`,"reasoning.none":`ninguno`,"reasoning.low":`low`,"reasoning.medium":`medium`,"reasoning.high":`high`,"reasoning.xhigh":`xhigh`,"reasoning.max":`max`,"reasoning.autoDescription":`Deja que el motor decida`,"reasoning.minimalDescription":`Razonamiento más rápido y superficial`,"reasoning.noneDescription":`Sin razonamiento adicional`,"reasoning.lowDescription":`Más rápido, menos profundidad`,"reasoning.mediumDescription":`Equilibrado`,"reasoning.highDescription":`Más profundidad`,"reasoning.xhighDescription":`Profundidad extendida, tareas largas`,"reasoning.maxDescription":`Profundidad máxima`,"agentPermissionMode.label":`Modo de permisos`,"agentPermissionMode.plan":`Plan`,"agentPermissionMode.bypass":`Bypass`,"agentPermissionMode.strict":`Aceptar ediciones`,"agentPermissionMode.interactive":`Interactivo`,"agentPermissionMode.tooltip":`Cómo gestiona el agente los permisos de las herramientas. Plan: solo lectura, sin escrituras. Bypass: omitir todas las preguntas. Estricto: auto-aceptar ediciones de archivos, respetar allow/deny para el resto. Interactivo: preguntar al usuario antes de cada herramienta mediante el panel de permisos.`,"agentPermissionMode.autoLoopOverride":`El auto-loop fuerza un modo distinto a Plan — Plan bloquea las herramientas MCP y las ediciones que el bucle necesita. Elige Bypass, Estricto o Interactivo.`,"agentPermissionMode.autoLoopLocked":`Bloqueado en Bypass mientras el auto-loop está activo — cualquier otro modo detendría el bucle en las preguntas de permiso. AskUserQuestion sigue funcionando.`,"workspaceList.title":`Workspaces`,"workspaceList.a11y.groupToggle":`Grupo {group}, {count} workspaces`,"workspaceList.a11y.list":`Workspaces`,"workspaceList.a11y.card":`{name}, {status}`,"workspaceList.needsAttention":`Requiere atención`,"workspaceList.running":`En ejecución`,"workspaceList.idle":`Inactivo`,"workspaceList.archived":`Archivados`,"workspaceList.archivedToast":`«{name}» archivado`,"workspaceList.archivedUndo":`Deshacer`,"workspaceList.unarchiveFailed":`No se pudo desarchivar este workspace`,"workspaceList.noWorkspaces":`Aún no hay workspaces`,"workspaceList.loadFailed":`No se pudieron cargar tus workspaces`,"workspaceList.loadFailedHint":`Es un fallo de conexión, no una cuenta vacía.`,"workspaceList.footer":`{count} workspace | {count} workspaces`,"workspaceList.footerRunning":`{count} en ejecución`,"workspaceList.deleteDialog.title":`¿Eliminar workspace?`,"workspaceList.deleteDialog.deleteLocal":`Eliminar rama local`,"workspaceList.deleteDialog.deleteRemote":`Eliminar rama remota`,"workspaceList.deleteDialog.warning":`Advertencia: esta acción es irreversible en el remoto.`,"workspaceList.deleteArchivedDialog.tooltip":`Eliminar todos los workspaces archivados`,"workspaceList.deleteArchivedDialog.title":`¿Eliminar todos los workspaces archivados?`,"workspaceList.deleteArchivedDialog.message":`Esto eliminará permanentemente los {count} workspaces archivados. Esta acción no se puede deshacer.`,"workspaceList.deleteArchivedDialog.typeCount":`Escribe {count} para confirmar`,"workspacePage.configure":`Configurar`,"workspacePage.permissions":`Permisos`,"workspacePage.selectWorkspace":`Selecciona un workspace para comenzar`,"workspacePage.commandPalettePlaceholder":`Buscar comandos…`,"workspacePage.commandPaletteEmpty":`No hay comandos coincidentes`,"workspacePage.commandFocusChat":`Enfocar la entrada del chat`,"workspacePage.commandSearchHistory":`Buscar en el historial del workspace`,"workspacePage.commandTogglePanel":`Mostrar u ocultar el panel lateral`,"workspacePage.commandStartAgent":`Iniciar agente`,"workspacePage.commandStopAgent":`Detener agente`,"workspacePage.commandOpenSettings":`Abrir los ajustes`,"workspacePage.commandOpenCreate":`Crear un workspace`,"workspacePage.commandOpenSearch":`Búsqueda global`,"workspacePage.commandOpenHealth":`Página de salud`,"workspacePage.commandOpenChangelog":`Registro de cambios`,"workspacePage.commandGroupWorkspaces":`Ir a un workspace`,"workspacePage.commandPaletteHint":`Paleta de comandos`,"workspacePage.session":`Sesión #{n}`,"workspacePage.newSession":`+ Nueva sesión`,"workspacePage.renameSession":`Renombrar`,"workspacePage.renameSessionTitle":`Renombrar sesión`,"workspacePage.sessionNameLabel":`Nombre de sesión`,"workspacePage.sessionEndedNotice":`Esta sesión ha terminado. Crea una nueva sesión para continuar.`,"workspacePage.renameFailed":`Error al renombrar`,"workspacePage.copySessionId":`Copiar ID de sesión`,"workspacePage.deleteSession":`Eliminar sesión`,"workspacePage.deleteSessionTitle":`¿Eliminar sesión?`,"workspacePage.deleteSessionConfirm":`Esto elimina permanentemente esta sesión y su historial de conversación.`,"workspacePage.deleteSessionFailed":`No se pudo eliminar la sesión`,"workspacePage.noEngineSessionId":`Todavía no hay ID de sesión — el agente aún no ha iniciado esta sesión`,"workspacePage.createSessionFailed":`Error al crear la sesión`,"workspacePage.startFailed":`Error al iniciar`,"workspacePage.stopFailed":`Error al detener`,"workspacePage.interrupt":`Interrumpir`,"workspacePage.interrupted":`Agente interrumpido — esperando tu próximo mensaje`,"workspacePage.lastAgentEvent":`Último evento {when}`,"workspacePage.agentStopping":`Deteniendo…`,"workspacePage.agentNotRunning":`Ningún agente en ejecución — el estado está obsoleto`,"contextMenu.restoreWorktree":`Restaurar worktree`,"workspacePage.restoringWorktree":`Restaurando…`,"workspacePage.worktreeRestoreSuccess":`Worktree restaurado`,"workspacePage.worktreeRestoreLimitations":`Recrea los archivos de Git incluidos en commits. No restaura las dependencias ni los archivos locales descartados anteriormente.`,"workspacePage.restoreError.not-found":`Este workspace ya no existe. Actualiza la lista de workspaces.`,"workspacePage.restoreError.not-purged":`Este workspace no está marcado como purgado. Actualízalo y comprueba su directorio de trabajo.`,"workspacePage.restoreError.workspace-busy":`Hay otra operación en curso en este workspace. Espera a que termine e inténtalo de nuevo.`,"workspacePage.restoreError.worktree-not-owned":`Kōbō no gestiona este worktree. Restáuralo manualmente en su proyecto original.`,"workspacePage.restoreError.project-unavailable":`El proyecto original no está disponible. Vuelve a conectar su disco o restaura el proyecto en su ruta original e inténtalo de nuevo.`,"workspacePage.restoreError.path-conflict":`Otro directorio o checkout ocupa la ruta del worktree. Mueve el directorio en conflicto o sigue las instrucciones de recuperación manual en Detalles.`,"workspacePage.restoreError.branch-in-use":`La rama de trabajo ya está en uso en otro checkout. Utiliza ese checkout o libera la rama antes de volver a intentarlo.`,"workspacePage.restoreError.recovery-source-unavailable":`No se encuentran la rama de trabajo ni el commit guardado. Comprueba el acceso remoto o consulta la recuperación manual en Detalles.`,"workspacePage.restoreError.git-failed":`La restauración ha fallado. Comprueba el acceso a Git y los permisos del disco e inténtalo de nuevo. Detalles abre la guía de recuperación manual.`,"workspacePage.archivedBanner":`Workspace archivado — solo lectura`,"workspacePage.worktreePurgedBanner":`Worktree eliminado — historial conservado`,"workspacePage.worktreePurgedTooltip":`Restaurar worktree recrea el directorio de trabajo y desarchiva este workspace. Se conservan la conversación, las tareas y las sesiones. No se inicia ningún agente ni servidor de desarrollo.`,"workspacePage.pendingInitialPromptBanner":`Hay un prompt inicial pendiente — el agente nunca lo recibió (el script de setup falló o el workspace nunca se inició). Haz clic en Iniciar para enviarlo ahora.`,"workspacePage.unarchived":`Workspace desarchivado`,"workspacePage.unarchiveFailed":`Error al desarchivar`,"workspacePage.interruptFailed":`Error al interrumpir`,"workspacePage.interruptHint":`Interrumpir el turno actual sin terminar la sesión.`,"workspacePage.interruptTooltip":`Interrupción suave (como Escape) — detiene la herramienta actual pero mantiene la sesión activa`,"workspacePage.pendingNextRun":`Se aplicará en el próximo inicio`,"workspacePage.activeSessionModel":`En uso: {model}`,"workspacePage.activeSessionModelTooltip":`Modelo utilizado actualmente por la sesión seleccionada`,"workspacePage.switchEngine":`Cambiar motor`,"workspacePage.switchEngineHint":`Continuar este workspace con otro motor de agente`,"workspacePage.moreActions":`Más acciones`,"workspacePage.switchEngineTitle":`Cambiar motor de agente`,"workspacePage.switchEngineWarning":`El agente actual se detendrá y se iniciará una sesión nueva en el mismo worktree.`,"workspacePage.engineLabel":`Motor`,"workspacePage.engineClaude":`Claude Code`,"workspacePage.engineCodex":`Codex`,"workspacePage.engineHandoff":`Traspaso para el nuevo motor`,"workspacePage.engineHandoffHint":`Revisa o edita el contexto que se enviará al nuevo agente.`,"workspacePage.confirmSwitchEngine":`Cambiar motor`,"workspacePage.switchEngineFailed":`No se pudo cambiar el motor`,"whip.dispatchFailed":`No se pudo enviar el mensaje del látigo`,"whip.phrase1":`Continúa, por favor.`,"whip.phrase2":`Sigue con las tareas previstas.`,"whip.phrase3":`Pasa al siguiente paso.`,"whip.phrase4":`Comprueba el progreso y continúa.`,"whip.phrase5":`Continúa dentro del alcance acordado.`,"search.title":`Búsqueda`,"search.tooltip":`Buscar en el historial de agentes`,"search.placeholder":`Buscar en todos los mensajes de agentes…`,"search.includeArchived":`Incluir workspaces archivados`,"search.loading":`Buscando…`,"search.noResults":`Sin resultados`,"search.error":`Búsqueda fallida: {message}`,"search.resultCount":`{n} resultado(s)`,"search.eventType.userMessage":`Tú`,"search.eventType.agentOutput":`Agente`,"activityFeed.empty":`Aún no hay actividad`,"activityFeed.emptyHint":`Inicia un workspace para ver la salida del agente aquí`,"activityFeed.initialPrompt":`Prompt inicial`,"activityFeed.you":`Tú`,"activityFeed.agent":`Agente`,"activityFeed.question":`Pregunta`,"activityFeed.goToPrevious":`Ir al mensaje anterior`,"activityFeed.scrollToBottom":`Ir al final`,"activityFeed.sendAnswers":`Enviar respuestas`,"agentBusy.banner":`El agente está ocupado`,"agentBusy.subagentsRunning":`1 sub-agente en ejecución | {n} sub-agentes en ejecución`,"agentBusy.viewSubagents":`Ver sub-agentes`,"agentBusy.pendingMessage":`Esperando — el agente está ocupado`,"terminal.title":`Terminal`,"terminal.open":`Abrir terminal`,"terminal.close":`Cerrar terminal`,"terminal.noWorkspace":`Seleccione un espacio de trabajo`,"terminal.noWorktree":`Worktree aún no creado`,"terminal.error":`Error del terminal`,"terminal.exited":`Terminal cerrado`,"terminal.disconnected":`Conexión perdida`,"terminal.outputMayBeMissing":`[Conexión interrumpida. Puede faltar parte de la salida del terminal.]`,"terminal.reconnecting":`Reconectando… (intento {attempt} de {max})`,"terminal.reconnect":`Reconectar`,"chatInput.placeholder":`Mensaje... (/ para skills)`,"chatInput.fileSearchHint":`buscar un archivo`,"chatInput.skills":`Skills`,"chatInput.attachImage":`Adjuntar imagen`,"chatInput.queueBanner":`Mensaje en cola — se enviará cuando el agente termine`,"chatInput.forceQueue":`Forzar envío`,"chatInput.searchHistory":`buscar`,"chatInput.commandPalette":`comandos`,"chatInput.shortcuts":`Atajos de teclado`,"chatInput.cancelQueue":`Cancelar cola`,"chatInput.autoLoopBanner":`Auto-loop activo — deténlo para enviar un mensaje`,"chatInput.awaitingUserBanner":`El agente espera tu respuesta arriba — responde mediante el panel de la pregunta`,"chatInput.autoLoopStop":`Detener`,"koboCommand.checkProgressDesc":`Verificar el progreso de las tareas y criterios de aceptación`,"chatInput.uploading":`Subiendo...`,"voice.title":`Transcripción de voz`,"voice.enabled":`Activar transcripción de voz local`,"voice.pttKey":`Tecla push-to-talk`,"voice.pttAlt":`Alt`,"voice.pttCtrlSpace":`Ctrl+Espacio`,"voice.language":`Idioma (auto o código)`,"voice.model":`Modelo activo`,"voice.commandPath":`Ruta del binario Whisper (opcional)`,"voice.ffmpegPath":`Ruta del binario ffmpeg (opcional)`,"voice.temperature":`Temperatura`,"voice.temperatureHint":`Más bajo = más determinista; más alto = más flexible pero potencialmente menos estable.`,"voice.initialPrompt":`Prompt inicial (opcional)`,"voice.initialPromptHint":`Contexto opcional para ayudar a Whisper con nombres, siglas o vocabulario técnico.`,"voice.translateToEnglish":`Traducir al inglés`,"voice.translateToEnglishHint":`Si se activa, el audio no inglés se traduce al inglés en lugar de transcribirse tal cual.`,"voice.suppressNst":`Suprimir tokens no vocales`,"voice.suppressNstHint":`Intenta reducir artefactos no vocales en la transcripción.`,"voice.installLink":`Instalar whisper.cpp`,"voice.installGuideTitle":`Guía de instalación`,"voice.installGuideIntro":`Instala whisper.cpp y ffmpeg, luego configura las rutas de binarios abajo si hace falta.`,"voice.installGuideUbuntuTitle":`Ubuntu / Debian`,"voice.installGuideWindowsTitle":`Windows`,"voice.installGuideBinaryPathHint":`Después del build con CMake, el binario de Whisper suele estar en: whisper.cpp/build/bin/whisper-cli`,"voice.installGuideSettingsHint":`Después, configura “Ruta del binario Whisper” y “Ruta del binario ffmpeg” en esta sección (o déjalo vacío si están en PATH).`,"voice.noneModel":`Sin modelo activo`,"voice.notInstalled":`no instalado`,"voice.download":`Descargar`,"voice.delete":`Eliminar`,"voice.holdToTalk":`Mantén pulsado para hablar`,"voice.recording":`Grabando...`,"voice.transcribing":`Transcribiendo...`,"voice.notSupported":`La grabación de voz no es compatible con este navegador`,"voice.errorMicPermission":`Permiso de micrófono denegado`,"voice.errorTranscription":`Falló la transcripción de voz`,"voice.downloadFailed":`Falló la descarga del modelo`,"voice.deleteFailed":`Falló la eliminación del modelo`,"voice.errorDisabled":`La transcripción de voz está desactivada en ajustes`,"voice.errorModelMissing":`No hay un modelo de voz activo configurado`,"voice.errorModelNotInstalled":`El modelo de voz activo no está instalado`,"voice.errorAudioInvalid":`La captura de audio es inválida o vacía`,"voice.errorLanguageInvalid":`La configuración del idioma de voz es inválida`,"voice.errorRuntimeMissing":`El runtime de Whisper no está instalado o no está en el PATH`,"voice.maxDurationReached":`Se alcanzó la duración máxima de grabación`,"voice.runtimeReady":`Runtime listo: {command}`,"voice.runtimeMissing":`Falta runtime: {command}`,"voice.ffmpegReady":`ffmpeg listo`,"voice.ffmpegMissing":`falta ffmpeg`,"voice.sectionRuntime":`Estado del runtime`,"voice.sectionActivation":`Activación`,"voice.sectionModels":`Modelos Whisper`,"voice.sectionAdvanced":`Opciones avanzadas`,"voice.sectionBehavior":`Comportamiento de la transcripción`,"voice.sectionBinaries":`Rutas de los binarios`,"voice.downloadModels":`Descargar un modelo`,"voice.cancelFailed":`No se pudo cancelar la descarga`,"attachments.error.upload":`Error al subir el archivo. Quita el adjunto e inténtalo de nuevo.`,"attachments.add":`Adjuntar archivos`,"attachments.remove":`Quitar adjunto`,"attachments.hint":`Pega o arrastra archivos aquí · máximo {count} · {size} MB cada uno · {total} MB en total`,"attachments.error.type":`Usa imágenes PNG, JPEG, GIF o WebP, PDF, Markdown o documentos de texto (TXT, CSV, JSON, YAML, XML, LOG, RST, TOML).`,"attachments.error.size":`Cada archivo debe tener contenido y no superar los 50 MB.`,"attachments.error.count":`Puedes adjuntar hasta 10 archivos.`,"attachments.error.total":`Los adjuntos no deben superar los 50 MB en total.`,"attachments.descriptionRequired":`Escribe una descripción o adjunta un archivo.`,"createPage.title":`Crear un workspace`,"createPage.fromTemplate":`Desde una plantilla`,"createPage.fromTemplateNone":`Ninguna`,"createPage.saveAsTemplate":`Guardar como plantilla`,"createPage.saveTemplateTitle":`Guardar este formulario como plantilla`,"createPage.saveTemplateName":`Nombre de la plantilla`,"createPage.saveTemplateOverwrite":`Ya existe una plantilla llamada «{name}». ¿Sobrescribirla?`,"createPage.templateSaved":`Plantilla «{name}» guardada`,"createPage.templateApplied":`Plantilla «{name}» aplicada`,"createPage.duplicatedFrom":`Duplicado desde «{name}»`,"createPage.duplicateLoadFailed":`No se pudo cargar el workspace a duplicar.`,"createPage.templateSaveFailed":`No se pudo guardar la plantilla.`,"createPage.presetProjectUnknown":`Esta plantilla apunta a un proyecto que ya no está configurado; se mantuvo el proyecto actual.`,"createPage.copySuffix":`(copia)`,"createPage.subtitle":`Describe la misión, elige un proyecto y configura el agente.`,"createPage.sectionMission":`Misión`,"createPage.sectionMissionHint":`Proporciona al agente un objetivo claro y el contexto necesario.`,"createPage.workspaceNameLabel":`Nombre del workspace`,"createPage.descriptionLabel":`Descripción de la misión`,"createPage.tagsLabel":`Etiquetas`,"createPage.tagsHint":`Clasifica este workspace`,"createPage.sources":`Fuentes opcionales`,"createPage.sectionGit":`Proyecto Git`,"createPage.sectionGitHint":`Elige el repositorio, la rama de origen y el modo de worktree.`,"createPage.worktreeMode":`Modo de worktree`,"createPage.worktreeNew":`Nuevo worktree aislado`,"createPage.worktreeExisting":`Reutilizar un worktree existente`,"createPage.projectLabel":`Proyecto`,"createPage.sourceBranch":`Rama de origen`,"createPage.workingBranchPreview":`Vista previa de la rama de trabajo`,"createPage.branchNamePending":`nombre-del-workspace`,"createPage.sectionAgent":`Agente`,"createPage.sectionAgentHint":`Revisa los ajustes de ejecución o activa la automatización.`,"createPage.configureAgent":`Configurar el agente`,"createPage.advancedOptions":`Opciones avanzadas`,"createPage.keyboardHint":`Pulsa Ctrl/Cmd + Enter para crear el workspace.`,"createPage.createWorkspace":`Crear workspace`,"createPage.compareEngines":`Comparar dos motores`,"createPage.engineA":`Motor A`,"createPage.engineB":`Motor B`,"createPage.compareBrainstormLocked":`Modo comparación: cada motor hace el brainstorming con el modelo y el esfuerzo definidos en su bloque de arriba.`,"createPage.compareEnginesHint":`Crea dos workspaces a partir de esta tarea, uno por motor, en worktrees hermanos. Luego se pueden comparar sus diffs en paralelo.`,"createPage.compareNeedsNewWorktree":`Comparar dos motores requiere dos worktrees nuevos. Desactiva primero «usar un worktree existente».`,"createPage.compareNeedsSecondEngine":`Elige un segundo motor, distinto del primero, para la comparación.`,"comparison.title":`Comparación de motores`,"comparison.hint":`La misma tarea, ejecutada por cada motor en su propio worktree.`,"comparison.engine":`Motor`,"comparison.status":`Estado`,"comparison.tasks":`Tareas`,"comparison.commits":`Commits`,"comparison.files":`Archivos`,"comparison.diff":`Diff`,"comparison.messages":`Mensajes`,"comparison.messagesTitle":`Mensajes del agente / tus mensajes`,"comparison.questions":`Preguntas`,"comparison.tools":`Herramientas`,"comparison.errors":`Errores`,"comparison.tokens":`Tokens`,"comparison.tokensTitle":`Tokens de entrada / salida`,"comparison.sessions":`Sesiones`,"comparison.duration":`Duración`,"comparison.exportCsv":`Exportar en CSV`,"comparison.open":`Abrir`,"comparison.current":`Este`,"comparison.archived":`archivado`,"comparison.incomplete":`Solo existe un workspace de esta comparación. El otro nunca se creó, o se ha eliminado.`,"createPage.comparisonPartial":`Solo se crearon {count} de {total} workspaces. El que existe se puede usar por sí solo; elimínalo si prefieres empezar de nuevo.`,"createPage.notionEnabled":`Notion activado`,"createPage.importNotion":`Importar desde Notion`,"createPage.notionPlaceholder":`https://www.notion.so/workspace/Page-title-abc123...`,"createPage.notionValidation":`La URL debe empezar por https://www.notion.so/ o https://app.notion.com/`,"createPage.notionAutoExtract":`Las subtareas y criterios de aceptación se extraerán automáticamente.`,"createPage.notionPanelChoiceLabel":`Esta URL apunta a una subpágina (?p=). ¿Sobre cuál quieres trabajar?`,"createPage.notionPanelOption":`Subpágina (panel)`,"createPage.notionPanelOptionDesc":`La página que estabas viendo — recomendado`,"createPage.notionParentOption":`Página principal`,"createPage.notionParentOptionDesc":`La épica / base de datos a la que pertenece`,"createPage.importSentry":`Importar Sentry`,"createPage.sentryEnabled":`Sentry activado`,"createPage.sentryPlaceholder":`https://tu-org.sentry.io/issues/123456`,"createPage.sentryValidation":`La URL debe apuntar a una issue de Sentry (/issues/<id>)`,"createPage.sentryAutoExtract":`La issue de Sentry se importará automáticamente`,"createPage.sentryExtractHint":`Kobo extraerá la issue y la escribirá en .ai/thoughts/`,"createPage.importPr":`Importar desde una PR`,"createPage.importPrRequiresProject":`Elige primero un proyecto`,"createPage.importPrNotSupported":`El forge de este proyecto no admite listar pull requests`,"createPage.lockedToPr":`Bloqueado a la PR #{number}`,"createPage.prReadyToCreate":`PR #{number} importada — el workspace puede crearse.`,"createPage.prResumeIntro":`Continuación del trabajo en la pull request existente #{number} "{title}" ({url}).`,"createPage.unlockPrCheckout":`Desbloquear`,"createPage.workspaceName":`Nombre del workspace (por defecto el título de la página Notion)`,"createPage.workspaceNamePlaceholder":`Nombre del workspace...`,"createPage.instructions":`Instrucciones adicionales (opcional)...`,"createPage.instructionsPlaceholder":`Describe la tarea...`,"createPage.tasks":`Tareas ({count})`,"createPage.addTask":`Añadir una tarea...`,"createPage.acceptanceCriteria":`Criterios de aceptación ({count})`,"createPage.addCriterion":`Añadir un criterio...`,"createPage.projectPath":`Introduce la ruta del proyecto`,"createPage.branchType":`Tipo de rama`,"createPage.branch":`Rama`,"createPage.noBranches":`No se encontraron ramas`,"createPage.enterPath":`Introduce la ruta del proyecto`,"createPage.skipSetupScript":`Omitir script de setup`,"createPage.worktreePickerLabel":`Worktree existente`,"createPage.noOrphanWorktrees":`No hay worktrees huérfanos en este proyecto`,"createPage.pickWorktreeRequired":`Selecciona un worktree para adjuntar`,"createPage.notionExtractHint":`Las subtareas y criterios de aceptación se extraerán de la página Notion.`,"createPage.errorCreating":`Error al crear el workspace.`,"createPage.branchAdjusted":"La rama ya existía — se creó `{branch}` en su lugar. La carpeta worktree correspondiente usa el mismo sufijo.","createPage.localSourceFallback":`Workspace creado desde la rama local (origin inalcanzable) — la base puede estar desactualizada.`,"createPage.validationNotionUrl":`Introduce una URL de Notion válida (https://www.notion.so/... o https://app.notion.com/...).`,"createPage.validationDescription":`Describe la tarea.`,"createPage.validationName":`Indica un nombre para el workspace.`,"createPage.validationPath":`Introduce la ruta del proyecto.`,"createPage.validationBranch":`Selecciona una rama.`,"createPage.validationFocusHint":`El campo a corregir está resaltado abajo.`,"createPage.progress.validate":`Validando la solicitud…`,"createPage.progress.fetch-source-branch":`Obteniendo la rama de origen desde origin…`,"createPage.progress.inspect-worktree":`Inspeccionando el worktree existente…`,"createPage.progress.extract-notion":`Extrayendo la página de Notion…`,"createPage.progress.extract-sentry":`Extrayendo la incidencia de Sentry…`,"createPage.progress.create-record":`Creando el workspace…`,"createPage.progress.create-tasks":`Creando tareas y criterios de aceptación…`,"createPage.progress.create-worktree":`Creando el worktree de git…`,"createPage.progress.write-conventions":`Escribiendo las convenciones de git…`,"createPage.progress.write-context-files":`Escribiendo los archivos de contexto…`,"createPage.progress.build-prompt":`Construyendo el prompt inicial…`,"createPage.progress.setup-script":`Ejecutando tu script de instalación…`,"createPage.progress.start-agent":`Iniciando el agente…`,"createPage.progress.rollback":`Deshaciendo la creación fallida…`,"createPage.progress.done":`Listo`,"createPage.progress.step":`Paso {index} de {total}`,"createPage.errorAtStep":`La creación falló en el paso «{step}»: {message}`,"createPage.override.title":`Dos de tus opciones fueron sustituidas`,"createPage.override.setup-script-forced":`Script de instalación omitido: volver a ejecutarlo en un worktree que ya preparaste podría destruir su contenido.`,"createPage.override.permission-mode-downgraded":`Modo de permisos cambiado de Plan a Bypass: un bucle autónomo no puede ejecutarse en Plan, que bloquea herramientas y ediciones.`,"settings.title":`Ajustes`,"settings.language":`Idioma`,"settings.projectColor":`Color`,"settings.projectColorClear":`Borrar`,"settings.projectColorDefault":`Por defecto (gris)`,"settings.workspaceListSection":`Lista de workspaces`,"settings.flattenWorkspaceList":`Lista plana de workspaces`,"settings.flattenWorkspaceListHint":`Muestra todos los workspaces en una lista plana con una etiqueta de proyecto, en lugar de agruparlos por proyecto.`,"workflow.title":`Flujo de Git`,"workflow.hint":`Estas preferencias guían a los agentes; no sustituyen los permisos del sistema. Prevalecen las instrucciones más restrictivas. Publicar nunca autoriza fusionar. Los nuevos espacios conservan una copia de estas opciones.`,"workflow.commit":`Crear commits`,"workflow.push":`Enviar la rama`,"workflow.publish":`Publicar PR/MR o comentarios`,"workflow.manual":`Manual — solicitud explícita`,"workflow.automatic":`Automático — cuando sea necesario`,"workflow.inherit":`Heredar`,"workflow.locked":`Detén el agente para cambiar estas preferencias. La sesión en curso ya las recibió.`,"workflow.updateFailed":`No se pudo guardar la preferencia. Comprueba la conexión e inténtalo de nuevo.`,"workflow.save":`Guardar preferencias de Git`,"workflow.saved":`Preferencias de Git guardadas.`,"workflow.planExecution":`Plan permite preparar la misión. Para ejecutar, elige explícitamente un modo de permisos compatible y reanuda el bucle.`,"settings.skillSuite.standard":`Estándar (sin extensiones)`,"settings.skillSuite.standardHint":`Flujo integrado sin una suite externa de habilidades.`,"settings.skillSuite.section":`Suite de skills`,"settings.skillSuite.superpowers":`Superpowers`,"settings.skillSuite.gstack":`gstack`,"settings.skillSuite.custom":`Personalizado`,"settings.skillSuite.superpowersHint":`Workflow opinado TDD / brainstorm / plan (github.com/obra/superpowers).`,"settings.skillSuite.gstackHint":`Suite de Garry Tan — /review, /ship, /qa, /office-hours, etc. (github.com/garrytan/gstack).`,"settings.skillSuite.superpowersGstack":`Superpowers + gstack`,"settings.skillSuite.superpowersGstackHint":`Ambas suites se combinan — superpowers para la metodología (brainstorm / TDD / planes / revisión a nivel de principios), gstack para flujos concretos (/review, /qa, /browse, /design-review, /investigate).`,"settings.skillSuite.ecc":`ECC`,"settings.skillSuite.eccHint":`Framework de agentes de affaan-m — agents, skills, rules y hooks para planificar, probar, implementar, revisar y memorizar (github.com/affaan-m/ECC).`,"settings.skillSuite.allThree":`Superpowers + gstack + ECC`,"settings.skillSuite.allThreeHint":`Las tres suites se combinan — superpowers para la metodología, gstack para flujos concretos, ECC para pases de revisión/implementación multiagente estructurados.`,"settings.skillSuite.customHint":`Compón los cinco prompts a continuación con los templates que elijas y edítalos libremente.`,"settings.skillSuite.reloadDefaults":`Restaurar predeterminados`,"settings.skillSuite.reloadDefaultsConfirm":`¿Reemplazar los cinco prompts personalizados con los valores agnósticos predeterminados?`,"settings.skillSuite.customPrompts":`Prompts personalizados`,"settings.skillSuite.agnostic":`Base agnóstica`,"settings.skillSuite.importPrompt":`Importar un template`,"settings.skillSuite.imported":`Template importado. Ahora puedes editarlo.`,"settings.skillSuite.importFailed":`No se pudo importar el template`,"settings.skillSuite.reviewTemplate":`Template de revisión`,"settings.skillSuite.autoLoopReviewGate":`Compuerta de revisión auto-loop`,"settings.skillSuite.autoLoopGroomingIntro":`Intro de grooming auto-loop`,"settings.skillSuite.qaTemplate":`Template QA`,"settings.skillSuite.brainstormingInstruction":`Instrucción de la fase de brainstorming`,"settings.global":`Global`,"settings.projects":`Proyectos`,"settings.globalSettings":`Ajustes globales`,"settings.defaultModel":`Modelo por defecto`,"settings.defaultModelClaude":`Modelo por defecto (Claude Code)`,"settings.defaultModelCodex":`Modelo por defecto (OpenAI Codex)`,"settings.agentPermissions":`Permisos del agente`,"settings.skipPermissions":`Omitir solicitudes de permisos (--dangerously-skip-permissions)`,"settings.skipPermissionsWarning":`Advertencia: desactivar esto hará que todos los permisos de herramientas (Write, Edit, Bash...) se denieguen automáticamente en modo headless. El agente solo podrá leer.`,"settings.notifications":`Notificaciones`,"settings.browserNotifications":`Notificación del navegador cuando el agente termina`,"settings.audioNotifications":`Notificación sonora cuando el agente termina`,"settings.enableBrowserNotifications":`Activar las notificaciones del navegador`,"settings.testBrowserNotification":`Probar la notificación`,"settings.browserNotificationGranted":`Notificaciones del navegador permitidas`,"settings.browserNotificationDenied":`Notificaciones del navegador bloqueadas`,"settings.browserNotificationAsk":`Se requiere permiso del navegador`,"settings.browserNotificationUnsupported":`Notificaciones del navegador no disponibles`,"settings.browserNotificationPermissionNeeded":`Permite las notificaciones del navegador para enviar una prueba.`,"settings.browserNotificationTestTitle":`Prueba de notificación de Kōbō`,"settings.browserNotificationTestBody":`Las notificaciones del navegador funcionan.`,"settings.enableAudio":`Activar el audio`,"settings.notificationSound":`Sonido de notificación`,"settings.notificationSoundHint":`Se reproduce cuando el agente termina o solicita permiso.`,"settings.questionSound":`Sonido de preguntas`,"settings.questionSoundHint":`Se reproduce solo cuando el agente te hace una pregunta.`,"settings.workspaceCreatedSound":`Sonido de creación del espacio de trabajo`,"settings.workspaceCreatedSoundHint":`Se reproduce después de crear un espacio de trabajo.`,"settings.notificationSoundPreview":`Escuchar`,"settings.notificationVolume":`Volumen`,"settings.notificationSoundHey":`Hey`,"settings.agentErrorSound":`Errores del agente`,"settings.agentErrorSoundHint":`Se reproduce para cuotas, límites de tasa y errores del agente.`,"settings.notificationSoundBasic":`Notificación básica`,"settings.notificationSoundWorkspaceCreated":`Warcraft III — Trabajo`,"settings.notificationSoundTravailTermine":`Trabajo terminado`,"settings.notificationSoundFaaah":`Faaah`,"settings.notificationSoundCaVaPeter":`Va a explotar`,"settings.notificationSoundDryFart":`Dry fart`,"settings.notificationSoundForShure":`For shure`,"settings.prSoundSection":`PR / MR y CI`,"settings.soundGeneral":`Sonido general`,"settings.soundNone":`Sin sonido`,"settings.prCiFailedSound":`CI fallida`,"settings.prCiRecoveredSound":`CI recuperada`,"settings.prChangesRequestedSound":`Cambios solicitados`,"settings.prApprovedSound":`PR aprobada`,"settings.prMergeConflictSound":`Conflicto de merge`,"settings.prReadyToMergeSound":`Lista para merge`,"settings.prMergedSound":`PR fusionada`,"settings.prCiFailedSoundHint":`Se reproduce cuando la CI pasa a estado fallido.`,"settings.prCiRecoveredSoundHint":`Se reproduce cuando la CI se recupera de un fallo.`,"settings.prChangesRequestedSoundHint":`Se reproduce cuando una revisión solicita cambios.`,"settings.prApprovedSoundHint":`Se reproduce cuando se aprueba la pull request.`,"settings.prMergeConflictSoundHint":`Se reproduce cuando se detecta un conflicto de merge.`,"settings.prReadyToMergeSoundHint":`Se reproduce cuando la pull request está lista para merge.`,"settings.prMergedSoundHint":`Se reproduce cuando se fusiona la pull request.`,"settings.notificationSoundSeptiemeCompagnie03":`7ème compagnie 03`,"settings.notificationSoundAllerFtg":`Aller FTG`,"settings.notificationSoundArreteDeMentir":`Arrête de mentir`,"settings.notificationSoundArretezLesMessages":`Arrêtez d'envoyer les messages`,"settings.notificationSoundBahAlorsOnEstNul":`Bah alors, on est nul`,"settings.notificationSoundGtaVDeath":`GTA V — Death`,"settings.notificationSoundNanTuDegages":`Nan, tu dégages`,"settings.notificationSoundNanWallahPardon":`Nan, wallah, pardon`,"settings.notificationSoundOuaisCestGreg":`Ouais, c'est Greg`,"settings.notificationSoundPasCaZinedine":`Pas ça, Zinedine`,"settings.notificationSoundTaGueule":`Ta gueule`,"settings.notificationSoundTuVasLaFermer":`Tu vas la fermer`,"settings.notificationSoundYaaa":`Yaaa`,"settings.notificationSoundMaisLaisseMoiDormirZebi":`Mais laisse-moi dormir zebi`,"settings.defaultPermissionMode":`Modo de permisos por defecto`,"settings.defaultPermissionModeClaude":`Modo de permisos por defecto (Claude Code)`,"settings.defaultPermissionModeCodex":`Modo de permisos por defecto (OpenAI Codex)`,"settings.defaultPermissionModeHint":`Modo aplicado al crear un workspace. Plan = solo lectura, Bypass = sin avisos, Estricto = auto-aceptar ediciones con allow-list, Interactivo = preguntar antes de cada herramienta.`,"settings.activityFeed":`Feed de actividad`,"settings.showThinkingBlocks":`Mostrar bloques de razonamiento de los agentes`,"settings.whipSettings":`Látigo`,"settings.whipSettingsHint":`Configura el atajo y el volumen opcionales del látigo.`,"settings.whipEnabled":`Activar el látigo`,"settings.whipEnabledHint":`Muestra el látigo interactivo en los workspaces activos compatibles.`,"settings.whipVolume":`Volumen del látigo`,"settings.whipVolumeMasterAudioDisabled":`El audio principal está desactivado. Activa las notificaciones de audio para ajustar el volumen del látigo; el valor guardado se conserva.`,"whip.overlayLabel":`Látigo interactivo`,"whip.overlayInstructions":`Mueve el puntero para controlar el látigo. Pulsa Intro o Espacio para hacerlo chasquear. Pulsa Escape para cerrar.`,"settings.whipShortcut":`Atajo del látigo`,"settings.whipShortcutHint":`Haz clic y luego pulsa el atajo que quieras usar.`,"settings.whipShortcutRecording":`Pulsa un atajo…`,"settings.whipShortcutButtonLabel":`Atajo del látigo: {shortcut}`,"settings.whipShortcutRecordingLabel":`Grabando el atajo del látigo. Pulsa un atajo…`,"settings.whipShortcutReset":`Restablecer atajo`,"settings.whipShortcutReserved":`Este atajo está reservado por el navegador.`,"settings.testIntegration":`Probar conexión`,"pwa.offline":`No tienes conexión. El chat y los agentes necesitan el servidor Kōbō.`,"pwa.reconnecting":`Reconectando al servidor Kōbō…`,"pwa.installReady":`Instala Kōbō como aplicación.`,"pwa.install":`Instalar`,"pwa.ignore":`Ignorar`,"pwa.updateReady":`Hay una actualización de Kōbō disponible.`,"pwa.reload":`Recargar`,"chat.searchWorkspaceHistory":`Buscar en el historial del workspace`,"chat.historySearch.user":`Tú`,"chat.historySearch.agent":`Agente`,"chat.openInGitDiff":`Abrir en el diff de Git`,"timeline.title":`Cronología de sesiones`,"timeline.export":`Exportar diagnóstico`,"timeline.unnamed":`Sesión de agente`,"timeline.tools":`{count} herramientas`,"timeline.errors":`{count} errores`,"settings.verboseMessages":`Mostrar mensajes detallados del sistema (task_progress, task_started)`,"settings.availableVariables":`Variables disponibles en las plantillas de prompt`,"settings.prPromptTemplate":`Plantilla de prompt PR`,"settings.prPromptPlaceholder":`Instrucciones para el agente al crear PRs en GitHub...`,"settings.prPromptHint":`Usa las variables listadas arriba (sintaxis de dobles llaves).`,"settings.reviewPromptTemplate":`Plantilla de prompt de revisión`,"settings.reviewPromptPlaceholder":`Instrucciones para el agente al revisar los cambios de la rama...`,"settings.ciFixPromptTemplate":`Plantilla de prompt «Reparar CI»`,"settings.ciFixPromptHint":`Se envía al agente cuando un workspace tiene la CI fallando. Variables (sintaxis con dobles llaves): pr_url, pr_number, pr_title, branch_name, source_branch, workspace_name, workspace_id, project_name, failed_jobs, ci_run_url.`,"settings.ciFixPromptPlaceholder":`Pedir al agente que diagnostique y arregle los jobs de CI que fallan...`,"settings.finalizationPromptTemplate":`Prompt de finalización del auto-loop`,"settings.finalizationPromptHint":`Prompt por defecto para la última iteración del auto-loop (controles de calidad finales). Se usa cuando un proyecto deja vacío su propio prompt de finalización.`,"settings.finalizationPromptPlaceholder":`Run final quality checks before closing the workspace...`,"settings.notionInitialPrompt":`Prompt inicial de Notion`,"settings.notionInitialPrompt.help":`Se añade al prompt de creación del workspace cuando el workspace tiene un ticket de Notion. Variables: {variables}.`,"settings.notionInitialPrompt.project":`Prompt inicial de Notion (anulación)`,"settings.sentryInitialPrompt":`Prompt inicial de Sentry`,"settings.sentryInitialPrompt.help":`Se añade al prompt de creación del workspace cuando el workspace tiene una issue de Sentry. Variables: {variables}.`,"settings.sentryInitialPrompt.project":`Prompt inicial de Sentry (anulación)`,"settings.initialPrompt.inheritHint":`Dejar en blanco para heredar. Escribe un carácter en blanco para desactivar la inyección a este nivel.`,"settings.resetToDefault":`Restablecer`,"settings.resetFailed":`No se pudo cargar el valor por defecto`,"settings.sentryIntegration":`Integración Sentry`,"settings.var.prNumber":`Número de PR (ej: 42)`,"settings.var.prUrl":`URL completa de la PR creada`,"settings.var.branchName":`Nombre de la rama de trabajo`,"settings.var.sourceBranch":`Rama fuente a la que apunta la PR`,"settings.var.workspaceName":`Nombre del workspace`,"settings.var.projectName":`Último segmento de la ruta del proyecto`,"settings.var.notionUrl":`URL de Notion si está definida, vacía en caso contrario`,"settings.var.commits":`Lista de commits entre source y head`,"settings.var.diffStats":`Resumen shortstat de Git (archivos, inserciones, eliminaciones)`,"settings.var.tasks":`Tareas regulares como lista de verificación`,"settings.var.acceptanceCriteria":`Criterios de aceptación como lista de verificación`,"settings.gitConventions":`Convenciones Git (global)`,"settings.gitConventionsPlaceholder":`# Convenciones Git...`,"settings.gitConventionsHint":`Estas convenciones se escriben en .ai/.git-conventions.md en cada nuevo workspace y deben ser seguidas por el agente antes de cualquier operación Git. Se anulan con convenciones por proyecto si están definidas.`,"settings.setupScript":`Script de setup`,"settings.cleanupScript":`Script de limpieza`,"settings.archiveScript":`Script de archivado`,"settings.archiveScriptHint":`Script de shell ejecutado en el servidor en el worktree cuando se archiva un workspace. Dejar vacío para desactivar.`,"settings.archiveScriptPlaceholder":`p. ej. limpiar contenedores, liberar espacio en disco…`,"settings.hook.sessionEndedTitle":`Hook: sesión finalizada`,"settings.hook.sessionEndedHint":`Se ejecuta cuando termina una sesión del agente, sea cual sea el motivo. Lee KOBO_SESSION_END_REASON (completed / error / killed / watchdog), KOBO_SESSION_STOP_CAUSE, KOBO_AUTOLOOP_ACTIVE, KOBO_SESSION_ID y KOBO_SESSION_EXIT_CODE. Vacío = desactivado.`,"settings.hook.sessionEndedPlaceholder":`p. ej. npm test, o avisar a un canal de chat…`,"settings.hook.prMergedTitle":`Hook: PR fusionada`,"settings.hook.prMergedHint":`Se ejecuta cuando se detecta una PR fusionada, antes de archivar o purgar el workspace: el worktree sigue en disco. Lee KOBO_PR_NUMBER y KOBO_PR_URL. Vacío = desactivado.`,"settings.hook.prMergedPlaceholder":`p. ej. lanzar un despliegue, etiquetar una release…`,"settings.hook.autoLoopDisabledTitle":`Hook: auto-loop detenido`,"settings.hook.autoLoopDisabledHint":`Se ejecuta cada vez que se desactiva el auto-loop, por Kōbō o por ti. Lee KOBO_AUTOLOOP_REASON (completed / stall / error / user-action / awaiting-clarification) y KOBO_TASKS_PENDING. Vacío = desactivado.`,"settings.hook.autoLoopDisabledPlaceholder":`p. ej. enviar un aviso cuando el bucle se atasca…`,"settings.changeSourceBranchScript":`Script para cambiar la rama de origen`,"settings.changeSourceBranchScript.help":`Reemplaza el cherry-pick integrado cuando no está vacío. El script gestiona git, base de la PR, force-push y conflictos; Kōbō solo rechaza si el agente está corriendo y actualiza los metadatos de la rama de origen en exit 0.`,"settings.changeSourceBranchScript.envHelp":`KOBO_NEW_BASE — nueva rama de origen elegida en el diálogo
|
|
1
|
+
var e={"groupMessage.title":`Mensaje grupal`,"groupMessage.description":`Enviar la misma instrucción a varios workspaces.`,"groupMessage.devServerRunning":`Solo workspaces con un servidor de desarrollo en ejecución`,"groupMessage.tags":`Etiquetas`,"groupMessage.statuses":`Estados de los workspaces`,"groupMessage.filtersHint":`Al menos una etiqueta seleccionada Y un estado seleccionado. Sin filtros se incluyen todos los workspaces activos.`,"groupMessage.selected":`{count} destinatarios seleccionados`,"groupMessage.selectAll":`Seleccionar todos`,"groupMessage.selectNone":`Deseleccionar todos`,"groupMessage.nextIteration":`Próxima iteración de auto-loop`,"groupMessage.immediate":`Envío normal al chat`,"groupMessage.empty":`Ningún workspace coincide con los filtros.`,"groupMessage.content":`Mensaje`,"groupMessage.deliveryHint":`Los auto-loops reciben la instrucción en la próxima iteración, sin detenerse. Los demás workspaces reciben un mensaje de chat, reanudando los agentes inactivos si es necesario.`,"groupMessage.limit":`Selecciona como máximo 200 workspaces por mensaje.`,"groupMessage.finished":`Resultados del envío`,"groupMessage.inProgress":`Enviando mensaje grupal`,"groupMessage.serverContinues":`El servidor continúa el envío si cierras esta ventana. En cola significa guardado para una iteración futura, todavía sin procesar.`,"groupMessage.unknownHint":`El envío es incierto para algunos workspaces. Consulta su chat antes de enviar otro mensaje.`,"groupMessage.retryHint":`Se conservan los destinatarios y el mensaje originales. La comprobación reutiliza esta solicitud sin duplicar los envíos aceptados.`,"groupMessage.retry":`Comprobar este envío`,"groupMessage.newMessage":`Nuevo mensaje`,"groupMessage.send":`Enviar a {count} workspaces`,"groupMessage.state.pending":`Pendiente`,"groupMessage.state.sending":`Enviando`,"groupMessage.state.sent":`Enviado`,"groupMessage.state.queued":`En cola para auto-loop`,"groupMessage.state.rejected":`Rechazado`,"groupMessage.state.unknown":`Envío incierto`,"groupMessage.state.not_sent":`No enviado`,"tours.home.groupMessage.title":`Escribir a varios workspaces`,"tours.home.groupMessage.description":`Filtra por etiquetas, estados y servidores de desarrollo en ejecución, comprueba los destinatarios y envía una instrucción. Los auto-loops la reciben en la siguiente iteración. Cada workspace muestra su resultado de envío.`,"autoLoop.finalReview.title":`Configurar la review final`,"autoLoop.finalReview.description":`Tras todas las tareas y verificaciones finales, una sesión separada revisa los cambios. La última sesión de trabajo corrige los hallazgos y se repite la review hasta que no quede ninguno.`,"autoLoop.finalReview.enabled":`Review final automática`,"autoLoop.finalReview.configure":`Configurar reviewer`,"autoLoop.finalReview.save":`Guardar configuración`,"autoLoop.finalReview.hint":`Nueva sesión de review de solo lectura y regreso a la última sesión de trabajo para corregir hallazgos. La configuración se guarda con este workspace.`,"autoLoop.finalReview.loadFailed":`No se pudo cargar la configuración de la review final.`,"autoLoop.finalReview.saveFailed":`No se pudo guardar la configuración de la review final.`,"autoLoop.finalReview.cycle":`Ciclo de review {count}`,"autoLoop.finalReview.findings":`{count} hallazgos`,"autoLoop.finalReview.disabled":`Desactivada`,"autoLoop.finalReview.pending":`Review final programada`,"autoLoop.finalReview.reviewing":`Review final en curso`,"autoLoop.finalReview.fixing":`Corrigiendo hallazgos`,"autoLoop.finalReview.completed":`Review final aprobada`,"autoLoop.finalReview.blocked":`La review final requiere atención`,"reviewReturn.title":`Regreso de la review`,"reviewReturn.reviewing":`Review en curso. El regreso a la sesión original está guardado.`,"reviewReturn.ready":`Review terminada. Regresando a la sesión original.`,"reviewReturn.dispatching":`Enviando el resumen de review a la sesión original.`,"reviewReturn.unknown":`El servidor se detuvo antes de confirmar la entrega. La sesión original podría haber recibido ya el resumen.`,"reviewReturn.blocked":`El regreso a la sesión original requiere atención.`,"reviewReturn.retry":`Reintentar regreso`,"reviewReturn.cancel":`Cancelar regreso`,"reviewReturn.retryUnknown":`Reintentar entrega (puede duplicar el resumen)`,"reviewReturn.actionFailed":`No se pudo actualizar el regreso de la review.`,"memory.panel.contextsHint":`Lo que se envió al LLM para esta conversación.`,"memory.panel.entriesHint":`Notas persistentes que puedes editar o reutilizar.`,"memory.panel.proposalsHint":`Sugerencias de los agentes para aprobar o rechazar.`,"memory.panel.operationsHint":`Registro de lecturas y cambios de la memoria.`,"memory.panel.openDialog":`Abrir la memoria en un diálogo`,"memory.panel.closeDialog":`Cerrar el diálogo de memoria`,"tours.workspace.memorySettings.title":`Gestionar los tres niveles`,"tours.workspace.memorySettings.description":`Este enlace abre los ajustes de Memoria: global para todos los proyectos, proyecto para sus workspaces y workspace para esta misión. Cada nivel se borra de forma independiente tras confirmación; esto no elimina la información ya enviada al LLM.`,"tours.settings.memoryModes.title":`Elegir el modo de memoria`,"tours.settings.memoryModes.description":`Híbrido por defecto: el agente guarda notas del workspace y propone cambios de proyecto/globales para aprobar. Manual: solo tú escribes. Automático: el agente escribe en los tres niveles. Pulsa Guardar para aplicar el modo.`,"memory.entry.loadMore":`Cargar más memorias`,"tours.settings.skills.title":`Elegir una suite de skills`,"tours.settings.skills.description":`Empieza con Standard: no requiere extensiones. Superpowers, gstack, ECC y sus combinaciones usan skills ya instalados y disponibles para el motor elegido. La selección cambia las instrucciones del agente; no instala skills ni concede permisos. Personalizado permite escribir tus propias instrucciones. Guarda tu elección para aplicarla.`,"tours.settings.git.description":`Elige cuándo los agentes pueden crear commits, hacer push o publicar. Define convenciones Git y prefijos de ramas.`,"tours.settings.git.title":`Flujo de trabajo Git`,"settings.reviewPromptHint":`Instrucciones enviadas al agente al iniciar una revisión de código.`,"settings.help.git":`Preferencias de commit, push y publicación, convenciones Git y prefijos de ramas.`,"settings.nav.promptTemplates":`Plantillas de prompts`,"memory.scope.label":`Ámbito de memoria`,"settings.nav.memory":`Memoria`,"settings.help.memory":`Elige cómo usa Kōbō la memoria y administra las memorias globales, de proyecto y de workspace.`,"memory.settings.title":`Memoria`,"memory.panel.title":`Memoria`,"memory.panel.contexts":`Contextos entregados a esta conversación`,"memory.panel.noContext":`No se ha entregado ningún contexto de memoria a esta conversación.`,"memory.panel.contextStats":`{tokens} tokens estimados · {cumulative} acumulados · {remaining} restantes · {omitted} omitidos`,"memory.panel.entries":`Memorias disponibles`,"memory.panel.proposals":`Propuestas pendientes`,"memory.panel.operations":`Operaciones del workspace`,"memory.panel.add":`Añadir memoria`,"memory.panel.clearWorkspace":`Borrar memoria del workspace`,"memory.panel.settingsLink":`Gestionar la memoria global y del proyecto en Ajustes`,"memory.panel.clearConfirm":`¿Borrar {entries} memorias y {proposals} propuestas de este workspace?`,"memory.panel.confirmClear":`Borrar memoria del workspace`,"memory.panel.promoteTo":`Promover a`,"memory.panel.loading":`Cargando memoria del workspace…`,"memory.panel.loadFailed":`No se pudo cargar la memoria del workspace.`,"memory.panel.archived":`Archivado`,"memory.panel.purged":`Worktree purgado`,"memory.panel.changed":`Modificada desde este contexto`,"memory.panel.deleted":`Eliminada desde este contexto`,"memory.panel.truncated":`(texto truncado)`,"memory.engine.codex":`Codex`,"memory.tool.unexplainedError":`La herramienta de memoria no devolvió detalles. Si el presupuesto de lectura se agotó, deja de leer; guardar sigue disponible según los permisos. Una nueva conversación o una compactación confirmada renueva el presupuesto de lectura, no un nuevo mensaje.`,"memory.engine.claude-code":`Claude Code`,"memory.context.state.failed":`Fallido`,"memory.context.state.prepared":`Preparado`,"memory.context.state.submitted":`Enviado`,"memory.context.state.initialized":`Inicializado`,"memory.context.state.unknown":`Entrega desconocida`,"memory.settings.intro":`La memoria guarda notas explícitas para futuras sesiones del agente. No sustituye el historial del proveedor ni el del chat.`,"memory.settings.mode":`Comportamiento automático de la memoria`,"memory.settings.mode.manual":`Manual`,"memory.settings.modeHint.manual":`Los agentes pueden leer la memoria. Solo tú puedes crear o modificar las notas.`,"memory.settings.mode.automatic":`Automático`,"memory.settings.modeHint.automatic":`Los agentes pueden recuperar y actualizar automáticamente memorias relevantes.`,"memory.settings.mode.hybrid":`Híbrido`,"memory.settings.modeHint.hybrid":`Los agentes pueden modificar directamente la memoria del workspace. Los cambios de proyecto y globales requieren tu aprobación.`,"memory.settings.saveNote":`El modo forma parte de los ajustes y se aplica al guardarlos. Si sales sin guardar, se conserva el modo anterior.`,"memory.settings.manageTitle":`Explorar y administrar la memoria`,"memory.settings.independentNote":`Crear, editar, aprobar y borrar memoria se aplica al instante, independientemente del botón para guardar ajustes.`,"memory.settings.add":`Añadir memoria`,"memory.settings.clear":`Vaciar este ámbito…`,"memory.settings.clearConfirmTitle":`¿Vaciar este ámbito de memoria?`,"memory.settings.clearConfirm":`Se eliminarán {entries} memorias y {proposals} propuestas pendientes del ámbito {scope} seleccionado.`,"memory.settings.clearWarning":`Esto solo borra los datos de memoria de Kōbō; no elimina conversaciones anteriores del proveedor ni el historial del chat.`,"memory.settings.confirmClear":`Vaciar ámbito`,"memory.settings.cancel":`Cancelar`,"memory.settings.loadFailed":`No se pudieron cargar los ámbitos de memoria.`,"memory.settings.saveFailed":`No se pudo guardar este cambio de memoria.`,"memory.settings.clearFailed":`No se pudo previsualizar ni vaciar este ámbito de memoria.`,"memory.settings.clearConflict":`La memoria cambió desde la vista previa. Se actualizaron los recuentos; revísalos antes de volver a confirmar.`,"memory.settings.loadMoreScopes":`Cargar más ámbitos`,"memory.settings.loadingScopes":`Cargando ámbitos…`,"memory.settings.deleteConfirmTitle":`Confirmar eliminación de memoria`,"memory.settings.deleteConfirm":`¿Eliminar «{title}» de {scope}?`,"memory.settings.deleteConfirmAction":`Eliminar memoria`,"memory.scope.choose":`Elegir ámbito`,"memory.scope.global":`Global`,"memory.scope.project":`Proyecto`,"memory.scope.workspace":`Workspace`,"memory.entry.empty":`No hay memorias en este ámbito.`,"memory.entry.revision":`Revisión {revision}`,"memory.entry.edit":`Editar`,"memory.entry.editAria":`Editar {title}`,"memory.entry.delete":`Eliminar`,"memory.entry.deleteAria":`Eliminar {title}`,"memory.entry.promote":`Promover`,"memory.entry.promoteAria":`Promover {title}`,"memory.editor.key":`Clave estable`,"memory.editor.title":`Título`,"memory.editor.body":`Memoria`,"memory.editor.save":`Guardar memoria`,"memory.editor.saving":`Guardando…`,"memory.editor.cancel":`Cancelar`,"memory.editor.conflict":`Esta memoria cambió en otro lugar. Recárgala o conserva el borrador y vuelve a basarlo explícitamente en la revisión actual.`,"memory.editor.reload":`Recargar versión actual`,"memory.editor.rebase":`Conservar borrador y rebasar`,"memory.proposal.empty":`No hay propuestas pendientes.`,"memory.proposal.approve":`Aprobar`,"memory.proposal.approveAria":`Aprobar {title}`,"memory.proposal.reject":`Rechazar`,"memory.proposal.rejectAria":`Rechazar {title}`,"memory.operation.empty":`Aún no hay operaciones de memoria.`,"memory.operation.created":`Memoria creada`,"memory.operation.updated":`Memoria actualizada`,"memory.operation.deleted":`Memoria eliminada`,"memory.operation.proposed":`Cambio propuesto`,"memory.operation.approved":`Propuesta aprobada`,"memory.operation.rejected":`Propuesta rechazada`,"memory.operation.promoted":`Memoria promovida`,"memory.operation.cleared":`Ámbito vaciado`,"memory.operation.read":`Memoria devuelta por una lectura`,"memory.operation.humanActor":`Tú`,"memory.operation.internalActor":`Agente · {engine}`,"memory.operation.externalActor":`{name} vía {transport}`,"memory.operation.loadMore":`Cargar operaciones anteriores`,"memory.operation.loading":`Cargando…`,"settings.nav.git":`Git`,"integration.direct":`Conexión directa`,"integration.directHint":`Opcional: configure un comando MCP de confianza en este servidor sin configuración Claude. Ponga las credenciales en variables de entorno. Guardar reemplaza toda la conexión; active la integración por separado.`,"integration.agentScope":`Las conexiones activadas se transmiten a Claude Code y Codex al iniciar o reanudar el agente. Detén el agente en curso para aplicar los cambios. Las configuraciones MCP personales son independientes.`,"integration.directOverrides":`La conexión directa guardada tiene prioridad. Elimínala para usar una entrada MCP de Claude.`,"integration.stored":`Hay una conexión privada guardada. Sus valores nunca se devuelven al navegador.`,"integration.example":`Ejemplo: {example}`,"integration.tokenExample":`TU_TOKEN_NOTION`,"integration.packageExample":`tu-paquete-mcp`,"integration.variableExample":`TU_VARIABLE`,"integration.valueExample":`tu-valor`,"integration.command":`Ejecutable`,"integration.args":`Argumentos (array JSON)`,"integration.environment":`Entorno y credenciales (objeto JSON)`,"integration.failed":`No se pudo cargar o guardar la conexión. Revise el JSON y el almacenamiento local.`,"integration.saved":`Conexión guardada. Active la integración y pruebe la conexión.`,"integration.save":`Reemplazar conexión`,"integration.clear":`Eliminar conexión directa`,"settings.notificationSoundReady":`Tono de finalización`,"settings.customSounds":`Sonidos importados`,"settings.customSoundsHint":`Importa tus propios sonidos de notificación ({count} como máximo, {size} MB cada uno, .wav .mp3 .ogg .webm). Se guardan en el directorio de datos de Kōbō y aparecen en todos los selectores de abajo.`,"settings.customSoundsImport":`Importar un sonido`,"settings.customSoundsFull":`Límite alcanzado ({count} sonidos). Elimina uno antes de importar otro.`,"settings.customSoundsError.type":`Formato no compatible. Usa un archivo .wav, .mp3, .ogg o .webm.`,"settings.customSoundsError.size":`Archivo demasiado grande. El límite es {size} MB.`,"settings.customSoundsError.count":`Límite alcanzado ({count} sonidos). Elimina uno antes de importar otro.`,"settings.customSoundsError.failed":`No se pudo completar la acción. Comprueba la conexión e inténtalo de nuevo.`,"setup.check.worktrees":`Directorio de worktrees`,"setup.fix.worktrees":`Revise el destino de worktrees en los ajustes y sus permisos de escritura.`,"setup.title":`Configurar la primera tarea`,"setup.intro":`Elija un motor y un proyecto Git local. No necesita skills ni integraciones.`,"setup.project":`Directorio local del proyecto`,"setup.credentials":`Inicie sesión en este servidor con claude /login o codex login, o configure su clave API. Estas comprobaciones no envían prompts de pago.`,"setup.permissions":`Empiece con un plan. Elija explícitamente los permisos en el formulario; un worktree no aísla su equipo.`,"setup.check":`Comprobar entorno`,"setup.failed":`No se pudo completar la acción. Revise la conexión y vuelva a intentarlo.`,"setup.start":`Describir mi primera tarea`,"setup.settings":`Abrir ajustes`,"setup.skip":`Omitir por ahora`,"setup.status.ok":`Disponible`,"setup.status.missing":`Falta`,"setup.status.error":`Requiere atención`,"setup.status.unknown":`Sin verificar`,"setup.check.node":`Node.js`,"setup.check.platform":`Plataforma`,"setup.check.git":`Git`,"setup.check.shell":`Bash`,"setup.check.storage":`Directorio de datos`,"setup.check.runtime":`Paquete del motor`,"setup.check.authentication":`Autenticación`,"setup.check.model":`Acceso al modelo`,"setup.check.repository":`Repositorio Git`,"setup.check.firstCommit":`Primer commit`,"setup.check.projectWritable":`Escritura en el proyecto`,"setup.fix.node":`Instale Node.js 24.15 o posterior.`,"setup.fix.platform":`Use Linux, macOS o WSL2; Windows nativo no está soportado.`,"setup.fix.git":`Instale Git en este servidor.`,"setup.fix.shell":`Instale Bash en este servidor.`,"setup.fix.storage":`Revise KOBO_HOME y los permisos del directorio.`,"setup.fix.runtime":`Reinstale Kōbō con las dependencias opcionales del motor.`,"setup.fix.authentication":`Inicie sesión con el proveedor elegido. La primera tarea verificará el acceso.`,"setup.fix.model":`Elija Auto o un modelo disponible para su cuenta.`,"setup.fix.repository":`Elija un directorio de trabajo Git existente.`,"setup.fix.firstCommit":`Cree el primer commit antes de crear un worktree.`,"setup.fix.projectWritable":`Elija un directorio de proyecto con permiso de escritura.`,"handoff.freshTitle":`Continuar en una sesión nueva`,"handoff.switchTitle":`Cambiar de LLM`,"handoff.warning":`El trabajo actual se interrumpe de inmediato. Una sesión nueva continúa automáticamente en el mismo workspace, conservando las tareas y el historial.`,"handoff.generate":`Generar un traspaso con el agente actual`,"handoff.generateHint":`Desactiva esta opción si se ha agotado su cuota. Kōbō transmitirá el objetivo, las tareas, el estado de Git y el historial sin llamar al LLM actual.`,"handoff.start":`Iniciar sesión nueva`,"handoff.stopping":`Deteniendo el agente actual`,"handoff.generating":`Preparando el traspaso`,"handoff.starting":`Iniciando la sesión nueva`,"handoff.completed":`Sesión nueva iniciada`,"handoff.failed":`Error en el traspaso`,"handoff.interrupted":`Traspaso interrumpido`,"handoff.cancelled":`Traspaso cancelado`,"handoff.skip":`Continuar sin resumen del LLM`,"handoff.cancel":`Cancelar traspaso`,"handoff.report":`Leer traspaso`,"handoff.source":`Sesión anterior`,"handoff.progress":`Traspaso de sesión en curso`,"handoff.blocked":`Resuelve o cancela el traspaso para continuar.`,"handoff.error":`No se pudo preparar el traspaso de sesión.`,"handoff.loadFailed":`No se pudo cargar el estado del traspaso.`,"handoff.status":`Traspaso de sesión`,"chat.externalLlm":`LLM externo · {name}`,"search.indexing":`Indexando el historial: {processed}/{total}. Resultados parciales.`,"search.indexUnavailable":`Índice de búsqueda no disponible. Inténtalo más tarde.`,"blockers.setupConfiguration":`No hay script de preparación configurado. Añade uno en la sección Scripts de los ajustes.`,"blockers.noWorkspace":`Selecciona un workspace para usar esta acción.`,"blockers.purged":`Restaura el worktree desde el aviso del workspace antes de esta acción.`,"blockers.archived":`Desarchiva el workspace desde su menú para usar esta acción.`,"blockers.operation":`Espera a que termine la operación actual.`,"blockers.agentBusy":`Espera a que termine el turno o detén el agente desde la conversación.`,"blockers.configuration":`Configura esta función en los ajustes del proyecto.`,"blockers.settings":`Abrir ajustes`,"workspaceSort.label":`Ordenar workspaces`,"workspaceSort.activity":`Última actividad`,"workspaceSort.created":`Fecha de creación`,"workspaceSort.name":`Nombre`,"workspaceSort.attention":`Prioridad de atención`,"workspaceSort.asc":`Ascendente`,"workspaceSort.desc":`Descendente`,"workspaceSort.hint":`Orden dentro de cada grupo, incluidos los archivados. Consultar un workspace no cambia su última actividad.`,"model.tooltip":`Modelo usado por el agente en este workspace`,"reasoning.tooltip":`Nivel de razonamiento usado por el agente en este workspace`,"thinking.label":`Razonamiento`,"thinking.noDetails":`El agente está razonando…`,"common.save":`Guardar`,"common.duplicate":`Duplicar`,"common.confirm":`Confirmar`,"common.cancel":`Cancelar`,"common.open":`Abrir`,"common.retry":`Reintentar`,"common.delete":`Eliminar`,"common.close":`Cerrar`,"workspace.deleteTitle":`Eliminar workspace`,"workspace.deleteTypeBranch":`Vuelva a escribir el nombre de la rama para confirmar`,"workspace.deleteConsequences":`Esto elimina el worktree y todo el historial.`,"workspace.deleteFailed":`No se pudo eliminar el workspace.`,"workspace.archiveFailed":`No se pudo archivar el workspace.`,"tasks.updateFailed":`No se pudo actualizar la tarea.`,"dashboard.tooltip":`Panel`,"dashboard.title":`Panel`,"dashboard.count":`{n} workspace | {n} workspaces`,"dashboard.empty":`Ningún workspace activo.`,"dashboard.workspace":`Workspace`,"dashboard.status":`Estado`,"dashboard.attention":`Atención`,"dashboard.pr":`PR`,"dashboard.diff":`Diff`,"dashboard.activity":`Actividad`,"dashboard.prOpen":`abierta`,"reliability.title":`Fiabilidad de los modelos`,"reliability.subtitle":`Cómo terminó realmente cada motor y modelo en este equipo.`,"reliability.empty":`Todavía no hay ninguna sesión finalizada.`,"reliability.loadFailed":`No se pudieron cargar las cifras de fiabilidad.`,"reliability.engine":`Motor`,"reliability.model":`Modelo`,"reliability.sessions":`Sesiones`,"reliability.completed":`Completadas`,"reliability.watchdog":`Watchdog`,"reliability.killed":`Detenidas`,"reliability.errors":`Errores`,"reliability.unknown":`Desconocido`,"reliability.median":`Mediana`,"reliability.durationSeconds":`{s}s`,"reliability.durationMinutes":`{m}min {s}s`,"reliability.durationHours":`{h}h {m}min`,"reliability.reset":`Restablecer: contar solo las sesiones finalizadas a partir de ahora`,"reliability.since":`Desde el {date}`,"reliability.showAll":`Mostrar todo`,"update.available":`Hay una versión más reciente de Kōbō: {version}`,"update.how":`Cómo actualizar`,"common.dismiss":`Descartar`,"common.details":`Detalles`,"common.ok":`OK`,"whatsNew.title":`Novedades`,"common.loading":`Cargando...`,"common.search":`Buscar...`,"common.refresh":`Actualizar`,"common.copy":`Copiar`,"common.copied":`Copiado al portapapeles`,"common.copyFailed":`Error al copiar`,"common.add":`Añadir`,"folderPicker.title":`Elegir una carpeta`,"folderPicker.parent":`Carpeta superior`,"folderPicker.empty":`Sin subcarpetas`,"folderPicker.select":`Elegir esta carpeta`,"common.start":`Iniciar`,"common.stop":`Detener`,"common.archive":`Archivar`,"common.unarchive":`Desarchivar`,"common.selectWorkspace":`Selecciona un workspace`,"common.noResults":`Sin resultados para "{query}"`,"common.send":`enviar`,"common.newLine":`nueva línea`,"common.history":`historial`,"common.justNow":`ahora mismo`,"common.minutesAgo":`hace {count}m`,"common.hoursAgo":`hace {count}h`,"common.daysAgo":`hace {count}d`,"model.auto":`Auto`,"model.opus55":`Opus 5.5`,"model.opus55Description":`Para tareas complejas y cotidianas, contexto de 1M`,"model.sonnet55":`Sonnet 5.5`,"model.sonnet55Description":`Eficiente para tareas rutinarias, contexto de 1M`,"model.gpt61sol":`GPT-6.1 Sol`,"model.gpt61solDescription":`Último modelo versátil para programación y trabajo cotidiano`,"model.gpt6sol":`GPT-6 Sol`,"model.gpt6solDescription":`Modelo versátil de la generación anterior`,"model.gpt6luna":`GPT-6 Luna`,"model.gpt6lunaDescription":`Modelo rápido para tareas sencillas`,"model.fable51":`Fable 5.1`,"model.fable5":`Fable 5`,"model.fable5Description":`Para tareas exigentes y de larga duración`,"model.mythos51":`Mythos 5.1 (Glasswing)`,"model.mythos5":`Mythos 5 (Glasswing)`,"model.fable51Description":`El modelo más capaz - reemplaza a Fable 5, contexto 1M, adaptive thinking`,"model.mythos51Description":`Fable 5.1 ofrecido solo por invitación mediante Project Glasswing`,"model.mythos5Description":`Fable 5.1 sin clasificadores de seguridad — acceso limitado (Project Glasswing)`,"model.opus":`Opus 4.6`,"model.sonnet":`Sonnet 4.6`,"model.opus5":`Opus 5`,"model.opus48":`Opus 4.8`,"model.opus47Classic":`Opus 4.7 (Classic)`,"model.opus471m":`Opus 4.7 (1M)`,"model.opusClassic":`Opus 4.6 (Classic)`,"model.opus1m":`Opus 4.6 (1M)`,"model.sonnet5":`Sonnet 5`,"model.sonnetClassic":`Sonnet 4.6 (Classic)`,"model.sonnet1m":`Sonnet 4.6 (1M)`,"model.haiku":`Haiku 4.5`,"model.autoDescription":`Claude elige el modelo óptimo`,"model.opus5Description":`Para código agéntico complejo y trabajo empresarial, contexto 1M`,"model.opus48Description":`Opus más capaz — coding agéntico long-horizon, contexto 1M por defecto, esfuerzo high por defecto`,"model.opus47ClassicDescription":`Último Opus, el más capaz`,"model.opus471mDescription":`Último Opus, contexto 1M`,"model.opusClassicDescription":`El más potente`,"model.opus1mDescription":`El más potente, contexto 1M`,"model.sonnet5Description":`La mejor combinación de velocidad e inteligencia, contexto 1M`,"model.sonnetClassicDescription":`Equilibrado`,"model.sonnet1mDescription":`Equilibrado, contexto 1M`,"model.haikuDescription":`El más rápido`,"model.gpt6astra":`GPT-6 Astra`,"model.gpt6astraDescription":`El modelo frontera más capaz, contexto 1M (requiere autenticación ChatGPT)`,"model.gpt56sol":`GPT-5.6 Sol`,"model.gpt56solDescription":`Modelo versátil de una generación anterior`,"model.gpt56terra":`GPT-5.6 Terra`,"model.gpt56terraDescription":`Modelo de codificación agéntica equilibrado para el día a día (requiere autenticación ChatGPT)`,"model.gpt56luna":`GPT-5.6 Luna`,"model.gpt56lunaDescription":`Modelo de codificación agéntica rápido y económico (requiere autenticación ChatGPT)`,"model.gpt55":`GPT-5.5`,"model.gpt55Description":`Modelo de programación anterior`,"model.gpt54":`GPT-5.4`,"model.gpt54Description":`Alternativa por defecto — razonamiento sólido, compatible con clave API`,"model.gpt54mini":`GPT-5.4 mini`,"model.gpt54miniDescription":`Rápido y eficiente — ideal para tareas reactivas y subagentes`,"model.gpt52":`GPT-5.2`,"model.gpt52Description":`Optimizado para trabajo profesional y agentes de larga duración`,"model.gpt53codex":`GPT-5.3 Codex`,"model.gpt53codexDescription":`Modelo especializado en código para ingeniería de software compleja`,"reasoning.auto":`auto`,"reasoning.minimal":`minimal`,"reasoning.none":`ninguno`,"reasoning.low":`low`,"reasoning.medium":`medium`,"reasoning.high":`high`,"reasoning.xhigh":`xhigh`,"reasoning.max":`max`,"reasoning.autoDescription":`Deja que el motor decida`,"reasoning.minimalDescription":`Razonamiento más rápido y superficial`,"reasoning.noneDescription":`Sin razonamiento adicional`,"reasoning.lowDescription":`Más rápido, menos profundidad`,"reasoning.mediumDescription":`Equilibrado`,"reasoning.highDescription":`Más profundidad`,"reasoning.xhighDescription":`Profundidad extendida, tareas largas`,"reasoning.maxDescription":`Profundidad máxima`,"agentPermissionMode.label":`Modo de permisos`,"agentPermissionMode.plan":`Plan`,"agentPermissionMode.bypass":`Bypass`,"agentPermissionMode.strict":`Aceptar ediciones`,"agentPermissionMode.interactive":`Interactivo`,"agentPermissionMode.tooltip":`Cómo gestiona el agente los permisos de las herramientas. Plan: solo lectura, sin escrituras. Bypass: omitir todas las preguntas. Estricto: auto-aceptar ediciones de archivos, respetar allow/deny para el resto. Interactivo: preguntar al usuario antes de cada herramienta mediante el panel de permisos.`,"agentPermissionMode.autoLoopOverride":`El auto-loop fuerza un modo distinto a Plan — Plan bloquea las herramientas MCP y las ediciones que el bucle necesita. Elige Bypass, Estricto o Interactivo.`,"agentPermissionMode.autoLoopLocked":`Bloqueado en Bypass mientras el auto-loop está activo — cualquier otro modo detendría el bucle en las preguntas de permiso. AskUserQuestion sigue funcionando.`,"workspaceList.title":`Workspaces`,"workspaceList.a11y.groupToggle":`Grupo {group}, {count} workspaces`,"workspaceList.a11y.list":`Workspaces`,"workspaceList.a11y.card":`{name}, {status}`,"workspaceList.needsAttention":`Requiere atención`,"workspaceList.running":`En ejecución`,"workspaceList.idle":`Inactivo`,"workspaceList.archived":`Archivados`,"workspaceList.archivedToast":`«{name}» archivado`,"workspaceList.archivedUndo":`Deshacer`,"workspaceList.unarchiveFailed":`No se pudo desarchivar este workspace`,"workspaceList.noWorkspaces":`Aún no hay workspaces`,"workspaceList.loadFailed":`No se pudieron cargar tus workspaces`,"workspaceList.loadFailedHint":`Es un fallo de conexión, no una cuenta vacía.`,"workspaceList.footer":`{count} workspace | {count} workspaces`,"workspaceList.footerRunning":`{count} en ejecución`,"workspaceList.deleteDialog.title":`¿Eliminar workspace?`,"workspaceList.deleteDialog.deleteLocal":`Eliminar rama local`,"workspaceList.deleteDialog.deleteRemote":`Eliminar rama remota`,"workspaceList.deleteDialog.warning":`Advertencia: esta acción es irreversible en el remoto.`,"workspaceList.deleteArchivedDialog.tooltip":`Eliminar todos los workspaces archivados`,"workspaceList.deleteArchivedDialog.title":`¿Eliminar todos los workspaces archivados?`,"workspaceList.deleteArchivedDialog.message":`Esto eliminará permanentemente los {count} workspaces archivados. Esta acción no se puede deshacer.`,"workspaceList.deleteArchivedDialog.typeCount":`Escribe {count} para confirmar`,"workspacePage.configure":`Configurar`,"workspacePage.permissions":`Permisos`,"workspacePage.selectWorkspace":`Selecciona un workspace para comenzar`,"workspacePage.commandPalettePlaceholder":`Buscar comandos…`,"workspacePage.commandPaletteEmpty":`No hay comandos coincidentes`,"workspacePage.commandFocusChat":`Enfocar la entrada del chat`,"workspacePage.commandSearchHistory":`Buscar en el historial del workspace`,"workspacePage.commandTogglePanel":`Mostrar u ocultar el panel lateral`,"workspacePage.commandStartAgent":`Iniciar agente`,"workspacePage.commandStopAgent":`Detener agente`,"workspacePage.commandOpenSettings":`Abrir los ajustes`,"workspacePage.commandOpenCreate":`Crear un workspace`,"workspacePage.commandOpenSearch":`Búsqueda global`,"workspacePage.commandOpenHealth":`Página de salud`,"workspacePage.commandOpenChangelog":`Registro de cambios`,"workspacePage.commandGroupWorkspaces":`Ir a un workspace`,"workspacePage.commandPaletteHint":`Paleta de comandos`,"workspacePage.session":`Sesión #{n}`,"workspacePage.newSession":`+ Nueva sesión`,"workspacePage.renameSession":`Renombrar`,"workspacePage.renameSessionTitle":`Renombrar sesión`,"workspacePage.sessionNameLabel":`Nombre de sesión`,"workspacePage.sessionEndedNotice":`Esta sesión ha terminado. Crea una nueva sesión para continuar.`,"workspacePage.renameFailed":`Error al renombrar`,"workspacePage.copySessionId":`Copiar ID de sesión`,"workspacePage.deleteSession":`Eliminar sesión`,"workspacePage.deleteSessionTitle":`¿Eliminar sesión?`,"workspacePage.deleteSessionConfirm":`Esto elimina permanentemente esta sesión y su historial de conversación.`,"workspacePage.deleteSessionFailed":`No se pudo eliminar la sesión`,"workspacePage.noEngineSessionId":`Todavía no hay ID de sesión — el agente aún no ha iniciado esta sesión`,"workspacePage.createSessionFailed":`Error al crear la sesión`,"workspacePage.startFailed":`Error al iniciar`,"workspacePage.stopFailed":`Error al detener`,"workspacePage.interrupt":`Interrumpir`,"workspacePage.interrupted":`Agente interrumpido — esperando tu próximo mensaje`,"workspacePage.lastAgentEvent":`Último evento {when}`,"workspacePage.agentStopping":`Deteniendo…`,"workspacePage.agentNotRunning":`Ningún agente en ejecución — el estado está obsoleto`,"contextMenu.restoreWorktree":`Restaurar worktree`,"workspacePage.restoringWorktree":`Restaurando…`,"workspacePage.worktreeRestoreSuccess":`Worktree restaurado`,"workspacePage.worktreeRestoreLimitations":`Recrea los archivos de Git incluidos en commits. No restaura las dependencias ni los archivos locales descartados anteriormente.`,"workspacePage.restoreError.not-found":`Este workspace ya no existe. Actualiza la lista de workspaces.`,"workspacePage.restoreError.not-purged":`Este workspace no está marcado como purgado. Actualízalo y comprueba su directorio de trabajo.`,"workspacePage.restoreError.workspace-busy":`Hay otra operación en curso en este workspace. Espera a que termine e inténtalo de nuevo.`,"workspacePage.restoreError.worktree-not-owned":`Kōbō no gestiona este worktree. Restáuralo manualmente en su proyecto original.`,"workspacePage.restoreError.project-unavailable":`El proyecto original no está disponible. Vuelve a conectar su disco o restaura el proyecto en su ruta original e inténtalo de nuevo.`,"workspacePage.restoreError.path-conflict":`Otro directorio o checkout ocupa la ruta del worktree. Mueve el directorio en conflicto o sigue las instrucciones de recuperación manual en Detalles.`,"workspacePage.restoreError.branch-in-use":`La rama de trabajo ya está en uso en otro checkout. Utiliza ese checkout o libera la rama antes de volver a intentarlo.`,"workspacePage.restoreError.recovery-source-unavailable":`No se encuentran la rama de trabajo ni el commit guardado. Comprueba el acceso remoto o consulta la recuperación manual en Detalles.`,"workspacePage.restoreError.git-failed":`La restauración ha fallado. Comprueba el acceso a Git y los permisos del disco e inténtalo de nuevo. Detalles abre la guía de recuperación manual.`,"workspacePage.archivedBanner":`Workspace archivado — solo lectura`,"workspacePage.worktreePurgedBanner":`Worktree eliminado — historial conservado`,"workspacePage.worktreePurgedTooltip":`Restaurar worktree recrea el directorio de trabajo y desarchiva este workspace. Se conservan la conversación, las tareas y las sesiones. No se inicia ningún agente ni servidor de desarrollo.`,"workspacePage.pendingInitialPromptBanner":`Hay un prompt inicial pendiente — el agente nunca lo recibió (el script de setup falló o el workspace nunca se inició). Haz clic en Iniciar para enviarlo ahora.`,"workspacePage.unarchived":`Workspace desarchivado`,"workspacePage.unarchiveFailed":`Error al desarchivar`,"workspacePage.interruptFailed":`Error al interrumpir`,"workspacePage.interruptHint":`Interrumpir el turno actual sin terminar la sesión.`,"workspacePage.interruptTooltip":`Interrupción suave (como Escape) — detiene la herramienta actual pero mantiene la sesión activa`,"workspacePage.pendingNextRun":`Se aplicará en el próximo inicio`,"workspacePage.activeSessionModel":`En uso: {model}`,"workspacePage.activeSessionModelTooltip":`Modelo utilizado actualmente por la sesión seleccionada`,"workspacePage.switchEngine":`Cambiar motor`,"workspacePage.switchEngineHint":`Continuar este workspace con otro motor de agente`,"workspacePage.moreActions":`Más acciones`,"workspacePage.switchEngineTitle":`Cambiar motor de agente`,"workspacePage.switchEngineWarning":`El agente actual se detendrá y se iniciará una sesión nueva en el mismo worktree.`,"workspacePage.engineLabel":`Motor`,"workspacePage.engineClaude":`Claude Code`,"workspacePage.engineCodex":`Codex`,"workspacePage.engineHandoff":`Traspaso para el nuevo motor`,"workspacePage.engineHandoffHint":`Revisa o edita el contexto que se enviará al nuevo agente.`,"workspacePage.confirmSwitchEngine":`Cambiar motor`,"workspacePage.switchEngineFailed":`No se pudo cambiar el motor`,"whip.dispatchFailed":`No se pudo enviar el mensaje del látigo`,"whip.phrase1":`Continúa, por favor.`,"whip.phrase2":`Sigue con las tareas previstas.`,"whip.phrase3":`Pasa al siguiente paso.`,"whip.phrase4":`Comprueba el progreso y continúa.`,"whip.phrase5":`Continúa dentro del alcance acordado.`,"search.title":`Búsqueda`,"search.tooltip":`Buscar en el historial de agentes`,"search.placeholder":`Buscar en todos los mensajes de agentes…`,"search.includeArchived":`Incluir workspaces archivados`,"search.loading":`Buscando…`,"search.noResults":`Sin resultados`,"search.error":`Búsqueda fallida: {message}`,"search.resultCount":`{n} resultado(s)`,"search.eventType.userMessage":`Tú`,"search.eventType.agentOutput":`Agente`,"activityFeed.empty":`Aún no hay actividad`,"activityFeed.emptyHint":`Inicia un workspace para ver la salida del agente aquí`,"activityFeed.initialPrompt":`Prompt inicial`,"activityFeed.you":`Tú`,"activityFeed.agent":`Agente`,"activityFeed.question":`Pregunta`,"activityFeed.goToPrevious":`Ir al mensaje anterior`,"activityFeed.scrollToBottom":`Ir al final`,"activityFeed.sendAnswers":`Enviar respuestas`,"agentBusy.banner":`El agente está ocupado`,"agentBusy.subagentsRunning":`1 sub-agente en ejecución | {n} sub-agentes en ejecución`,"agentBusy.viewSubagents":`Ver sub-agentes`,"agentBusy.pendingMessage":`Esperando — el agente está ocupado`,"terminal.title":`Terminal`,"terminal.open":`Abrir terminal`,"terminal.close":`Cerrar terminal`,"terminal.noWorkspace":`Seleccione un espacio de trabajo`,"terminal.noWorktree":`Worktree aún no creado`,"terminal.error":`Error del terminal`,"terminal.exited":`Terminal cerrado`,"terminal.disconnected":`Conexión perdida`,"terminal.outputMayBeMissing":`[Conexión interrumpida. Puede faltar parte de la salida del terminal.]`,"terminal.reconnecting":`Reconectando… (intento {attempt} de {max})`,"terminal.reconnect":`Reconectar`,"chatInput.placeholder":`Mensaje... (/ para skills)`,"chatInput.fileSearchHint":`buscar un archivo`,"chatInput.skills":`Skills`,"chatInput.attachImage":`Adjuntar imagen`,"chatInput.queueBanner":`Mensaje en cola — se enviará cuando el agente termine`,"chatInput.forceQueue":`Forzar envío`,"chatInput.searchHistory":`buscar`,"chatInput.commandPalette":`comandos`,"chatInput.shortcuts":`Atajos de teclado`,"chatInput.cancelQueue":`Cancelar cola`,"chatInput.autoLoopBanner":`Auto-loop activo — deténlo para enviar un mensaje`,"chatInput.awaitingUserBanner":`El agente espera tu respuesta arriba — responde mediante el panel de la pregunta`,"chatInput.autoLoopStop":`Detener`,"koboCommand.checkProgressDesc":`Verificar el progreso de las tareas y criterios de aceptación`,"chatInput.uploading":`Subiendo...`,"voice.title":`Transcripción de voz`,"voice.enabled":`Activar transcripción de voz local`,"voice.pttKey":`Tecla push-to-talk`,"voice.pttAlt":`Alt`,"voice.pttCtrlSpace":`Ctrl+Espacio`,"voice.language":`Idioma (auto o código)`,"voice.model":`Modelo activo`,"voice.commandPath":`Ruta del binario Whisper (opcional)`,"voice.ffmpegPath":`Ruta del binario ffmpeg (opcional)`,"voice.temperature":`Temperatura`,"voice.temperatureHint":`Más bajo = más determinista; más alto = más flexible pero potencialmente menos estable.`,"voice.initialPrompt":`Prompt inicial (opcional)`,"voice.initialPromptHint":`Contexto opcional para ayudar a Whisper con nombres, siglas o vocabulario técnico.`,"voice.translateToEnglish":`Traducir al inglés`,"voice.translateToEnglishHint":`Si se activa, el audio no inglés se traduce al inglés en lugar de transcribirse tal cual.`,"voice.suppressNst":`Suprimir tokens no vocales`,"voice.suppressNstHint":`Intenta reducir artefactos no vocales en la transcripción.`,"voice.installLink":`Instalar whisper.cpp`,"voice.installGuideTitle":`Guía de instalación`,"voice.installGuideIntro":`Instala whisper.cpp y ffmpeg, luego configura las rutas de binarios abajo si hace falta.`,"voice.installGuideUbuntuTitle":`Ubuntu / Debian`,"voice.installGuideWindowsTitle":`Windows`,"voice.installGuideBinaryPathHint":`Después del build con CMake, el binario de Whisper suele estar en: whisper.cpp/build/bin/whisper-cli`,"voice.installGuideSettingsHint":`Después, configura “Ruta del binario Whisper” y “Ruta del binario ffmpeg” en esta sección (o déjalo vacío si están en PATH).`,"voice.noneModel":`Sin modelo activo`,"voice.notInstalled":`no instalado`,"voice.download":`Descargar`,"voice.delete":`Eliminar`,"voice.holdToTalk":`Mantén pulsado para hablar`,"voice.recording":`Grabando...`,"voice.transcribing":`Transcribiendo...`,"voice.notSupported":`La grabación de voz no es compatible con este navegador`,"voice.errorMicPermission":`Permiso de micrófono denegado`,"voice.errorTranscription":`Falló la transcripción de voz`,"voice.downloadFailed":`Falló la descarga del modelo`,"voice.deleteFailed":`Falló la eliminación del modelo`,"voice.errorDisabled":`La transcripción de voz está desactivada en ajustes`,"voice.errorModelMissing":`No hay un modelo de voz activo configurado`,"voice.errorModelNotInstalled":`El modelo de voz activo no está instalado`,"voice.errorAudioInvalid":`La captura de audio es inválida o vacía`,"voice.errorLanguageInvalid":`La configuración del idioma de voz es inválida`,"voice.errorRuntimeMissing":`El runtime de Whisper no está instalado o no está en el PATH`,"voice.maxDurationReached":`Se alcanzó la duración máxima de grabación`,"voice.runtimeReady":`Runtime listo: {command}`,"voice.runtimeMissing":`Falta runtime: {command}`,"voice.ffmpegReady":`ffmpeg listo`,"voice.ffmpegMissing":`falta ffmpeg`,"voice.sectionRuntime":`Estado del runtime`,"voice.sectionActivation":`Activación`,"voice.sectionModels":`Modelos Whisper`,"voice.sectionAdvanced":`Opciones avanzadas`,"voice.sectionBehavior":`Comportamiento de la transcripción`,"voice.sectionBinaries":`Rutas de los binarios`,"voice.downloadModels":`Descargar un modelo`,"voice.cancelFailed":`No se pudo cancelar la descarga`,"attachments.error.upload":`Error al subir el archivo. Quita el adjunto e inténtalo de nuevo.`,"attachments.add":`Adjuntar archivos`,"attachments.remove":`Quitar adjunto`,"attachments.hint":`Pega o arrastra archivos aquí · máximo {count} · {size} MB cada uno · {total} MB en total`,"attachments.error.type":`Usa imágenes PNG, JPEG, GIF o WebP, PDF, Markdown o documentos de texto (TXT, CSV, JSON, YAML, XML, LOG, RST, TOML).`,"attachments.error.size":`Cada archivo debe tener contenido y no superar los 50 MB.`,"attachments.error.count":`Puedes adjuntar hasta 10 archivos.`,"attachments.error.total":`Los adjuntos no deben superar los 50 MB en total.`,"attachments.descriptionRequired":`Escribe una descripción o adjunta un archivo.`,"createPage.title":`Crear un workspace`,"createPage.fromTemplate":`Desde una plantilla`,"createPage.fromTemplateNone":`Ninguna`,"createPage.saveAsTemplate":`Guardar como plantilla`,"createPage.saveTemplateTitle":`Guardar este formulario como plantilla`,"createPage.saveTemplateName":`Nombre de la plantilla`,"createPage.saveTemplateOverwrite":`Ya existe una plantilla llamada «{name}». ¿Sobrescribirla?`,"createPage.templateSaved":`Plantilla «{name}» guardada`,"createPage.templateApplied":`Plantilla «{name}» aplicada`,"createPage.duplicatedFrom":`Duplicado desde «{name}»`,"createPage.duplicateLoadFailed":`No se pudo cargar el workspace a duplicar.`,"createPage.templateSaveFailed":`No se pudo guardar la plantilla.`,"createPage.presetProjectUnknown":`Esta plantilla apunta a un proyecto que ya no está configurado; se mantuvo el proyecto actual.`,"createPage.copySuffix":`(copia)`,"createPage.subtitle":`Describe la misión, elige un proyecto y configura el agente.`,"createPage.sectionMission":`Misión`,"createPage.sectionMissionHint":`Proporciona al agente un objetivo claro y el contexto necesario.`,"createPage.workspaceNameLabel":`Nombre del workspace`,"createPage.descriptionLabel":`Descripción de la misión`,"createPage.tagsLabel":`Etiquetas`,"createPage.tagsHint":`Clasifica este workspace`,"createPage.sources":`Fuentes opcionales`,"createPage.sectionGit":`Proyecto Git`,"createPage.sectionGitHint":`Elige el repositorio, la rama de origen y el modo de worktree.`,"createPage.worktreeMode":`Modo de worktree`,"createPage.worktreeNew":`Nuevo worktree aislado`,"createPage.worktreeExisting":`Reutilizar un worktree existente`,"createPage.projectLabel":`Proyecto`,"createPage.sourceBranch":`Rama de origen`,"createPage.workingBranchPreview":`Vista previa de la rama de trabajo`,"createPage.branchNamePending":`nombre-del-workspace`,"createPage.sectionAgent":`Agente`,"createPage.sectionAgentHint":`Revisa los ajustes de ejecución o activa la automatización.`,"createPage.configureAgent":`Configurar el agente`,"createPage.advancedOptions":`Opciones avanzadas`,"createPage.keyboardHint":`Pulsa Ctrl/Cmd + Enter para crear el workspace.`,"createPage.createWorkspace":`Crear workspace`,"createPage.compareEngines":`Comparar dos motores`,"createPage.engineA":`Motor A`,"createPage.engineB":`Motor B`,"createPage.compareBrainstormLocked":`Modo comparación: cada motor hace el brainstorming con el modelo y el esfuerzo definidos en su bloque de arriba.`,"createPage.compareEnginesHint":`Crea dos workspaces a partir de esta tarea, uno por motor, en worktrees hermanos. Luego se pueden comparar sus diffs en paralelo.`,"createPage.compareNeedsNewWorktree":`Comparar dos motores requiere dos worktrees nuevos. Desactiva primero «usar un worktree existente».`,"createPage.compareNeedsSecondEngine":`Elige un segundo motor, distinto del primero, para la comparación.`,"comparison.title":`Comparación de motores`,"comparison.hint":`La misma tarea, ejecutada por cada motor en su propio worktree.`,"comparison.engine":`Motor`,"comparison.status":`Estado`,"comparison.tasks":`Tareas`,"comparison.commits":`Commits`,"comparison.files":`Archivos`,"comparison.diff":`Diff`,"comparison.messages":`Mensajes`,"comparison.messagesTitle":`Mensajes del agente / tus mensajes`,"comparison.questions":`Preguntas`,"comparison.tools":`Herramientas`,"comparison.errors":`Errores`,"comparison.tokens":`Tokens`,"comparison.tokensTitle":`Tokens de entrada / salida`,"comparison.sessions":`Sesiones`,"comparison.duration":`Duración`,"comparison.exportCsv":`Exportar en CSV`,"comparison.open":`Abrir`,"comparison.current":`Este`,"comparison.archived":`archivado`,"comparison.incomplete":`Solo existe un workspace de esta comparación. El otro nunca se creó, o se ha eliminado.`,"createPage.comparisonPartial":`Solo se crearon {count} de {total} workspaces. El que existe se puede usar por sí solo; elimínalo si prefieres empezar de nuevo.`,"createPage.notionEnabled":`Notion activado`,"createPage.importNotion":`Importar desde Notion`,"createPage.notionPlaceholder":`https://www.notion.so/workspace/Page-title-abc123...`,"createPage.notionValidation":`La URL debe empezar por https://www.notion.so/ o https://app.notion.com/`,"createPage.notionAutoExtract":`Las subtareas y criterios de aceptación se extraerán automáticamente.`,"createPage.notionPanelChoiceLabel":`Esta URL apunta a una subpágina (?p=). ¿Sobre cuál quieres trabajar?`,"createPage.notionPanelOption":`Subpágina (panel)`,"createPage.notionPanelOptionDesc":`La página que estabas viendo — recomendado`,"createPage.notionParentOption":`Página principal`,"createPage.notionParentOptionDesc":`La épica / base de datos a la que pertenece`,"createPage.importSentry":`Importar Sentry`,"createPage.sentryEnabled":`Sentry activado`,"createPage.sentryPlaceholder":`https://tu-org.sentry.io/issues/123456`,"createPage.sentryValidation":`La URL debe apuntar a una issue de Sentry (/issues/<id>)`,"createPage.sentryAutoExtract":`La issue de Sentry se importará automáticamente`,"createPage.sentryExtractHint":`Kobo extraerá la issue y la escribirá en .ai/thoughts/`,"createPage.importPr":`Importar desde una PR`,"createPage.importPrRequiresProject":`Elige primero un proyecto`,"createPage.importPrNotSupported":`El forge de este proyecto no admite listar pull requests`,"createPage.lockedToPr":`Bloqueado a la PR #{number}`,"createPage.prReadyToCreate":`PR #{number} importada — el workspace puede crearse.`,"createPage.prResumeIntro":`Continuación del trabajo en la pull request existente #{number} "{title}" ({url}).`,"createPage.unlockPrCheckout":`Desbloquear`,"createPage.workspaceName":`Nombre del workspace (por defecto el título de la página Notion)`,"createPage.workspaceNamePlaceholder":`Nombre del workspace...`,"createPage.instructions":`Instrucciones adicionales (opcional)...`,"createPage.instructionsPlaceholder":`Describe la tarea...`,"createPage.tasks":`Tareas ({count})`,"createPage.addTask":`Añadir una tarea...`,"createPage.acceptanceCriteria":`Criterios de aceptación ({count})`,"createPage.addCriterion":`Añadir un criterio...`,"createPage.projectPath":`Introduce la ruta del proyecto`,"createPage.branchType":`Tipo de rama`,"createPage.branch":`Rama`,"createPage.noBranches":`No se encontraron ramas`,"createPage.enterPath":`Introduce la ruta del proyecto`,"createPage.skipSetupScript":`Omitir script de setup`,"createPage.worktreePickerLabel":`Worktree existente`,"createPage.noOrphanWorktrees":`No hay worktrees huérfanos en este proyecto`,"createPage.pickWorktreeRequired":`Selecciona un worktree para adjuntar`,"createPage.notionExtractHint":`Las subtareas y criterios de aceptación se extraerán de la página Notion.`,"createPage.errorCreating":`Error al crear el workspace.`,"createPage.branchAdjusted":"La rama ya existía — se creó `{branch}` en su lugar. La carpeta worktree correspondiente usa el mismo sufijo.","createPage.localSourceFallback":`Workspace creado desde la rama local (origin inalcanzable) — la base puede estar desactualizada.`,"createPage.validationNotionUrl":`Introduce una URL de Notion válida (https://www.notion.so/... o https://app.notion.com/...).`,"createPage.validationDescription":`Describe la tarea.`,"createPage.validationName":`Indica un nombre para el workspace.`,"createPage.validationPath":`Introduce la ruta del proyecto.`,"createPage.validationBranch":`Selecciona una rama.`,"createPage.validationFocusHint":`El campo a corregir está resaltado abajo.`,"createPage.progress.validate":`Validando la solicitud…`,"createPage.progress.fetch-source-branch":`Obteniendo la rama de origen desde origin…`,"createPage.progress.inspect-worktree":`Inspeccionando el worktree existente…`,"createPage.progress.extract-notion":`Extrayendo la página de Notion…`,"createPage.progress.extract-sentry":`Extrayendo la incidencia de Sentry…`,"createPage.progress.create-record":`Creando el workspace…`,"createPage.progress.create-tasks":`Creando tareas y criterios de aceptación…`,"createPage.progress.create-worktree":`Creando el worktree de git…`,"createPage.progress.write-conventions":`Escribiendo las convenciones de git…`,"createPage.progress.write-context-files":`Escribiendo los archivos de contexto…`,"createPage.progress.build-prompt":`Construyendo el prompt inicial…`,"createPage.progress.setup-script":`Ejecutando tu script de instalación…`,"createPage.progress.start-agent":`Iniciando el agente…`,"createPage.progress.rollback":`Deshaciendo la creación fallida…`,"createPage.progress.done":`Listo`,"createPage.progress.step":`Paso {index} de {total}`,"createPage.errorAtStep":`La creación falló en el paso «{step}»: {message}`,"createPage.override.title":`Dos de tus opciones fueron sustituidas`,"createPage.override.setup-script-forced":`Script de instalación omitido: volver a ejecutarlo en un worktree que ya preparaste podría destruir su contenido.`,"createPage.override.permission-mode-downgraded":`Modo de permisos cambiado de Plan a Bypass: un bucle autónomo no puede ejecutarse en Plan, que bloquea herramientas y ediciones.`,"settings.title":`Ajustes`,"settings.language":`Idioma`,"settings.projectColor":`Color`,"settings.projectColorClear":`Borrar`,"settings.projectColorDefault":`Por defecto (gris)`,"settings.workspaceListSection":`Lista de workspaces`,"settings.flattenWorkspaceList":`Lista plana de workspaces`,"settings.flattenWorkspaceListHint":`Muestra todos los workspaces en una lista plana con una etiqueta de proyecto, en lugar de agruparlos por proyecto.`,"workflow.title":`Flujo de Git`,"workflow.hint":`Estas preferencias guían a los agentes; no sustituyen los permisos del sistema. Prevalecen las instrucciones más restrictivas. Publicar nunca autoriza fusionar. Los nuevos espacios conservan una copia de estas opciones.`,"workflow.commit":`Crear commits`,"workflow.push":`Enviar la rama`,"workflow.publish":`Publicar PR/MR o comentarios`,"workflow.manual":`Manual — solicitud explícita`,"workflow.automatic":`Automático — cuando sea necesario`,"workflow.inherit":`Heredar`,"workflow.locked":`Detén el agente para cambiar estas preferencias. La sesión en curso ya las recibió.`,"workflow.updateFailed":`No se pudo guardar la preferencia. Comprueba la conexión e inténtalo de nuevo.`,"workflow.save":`Guardar preferencias de Git`,"workflow.saved":`Preferencias de Git guardadas.`,"workflow.planExecution":`Plan permite preparar la misión. Para ejecutar, elige explícitamente un modo de permisos compatible y reanuda el bucle.`,"settings.skillSuite.standard":`Estándar (sin extensiones)`,"settings.skillSuite.standardHint":`Flujo integrado sin una suite externa de habilidades.`,"settings.skillSuite.section":`Suite de skills`,"settings.skillSuite.superpowers":`Superpowers`,"settings.skillSuite.gstack":`gstack`,"settings.skillSuite.custom":`Personalizado`,"settings.skillSuite.superpowersHint":`Workflow opinado TDD / brainstorm / plan (github.com/obra/superpowers).`,"settings.skillSuite.gstackHint":`Suite de Garry Tan — /review, /ship, /qa, /office-hours, etc. (github.com/garrytan/gstack).`,"settings.skillSuite.superpowersGstack":`Superpowers + gstack`,"settings.skillSuite.superpowersGstackHint":`Ambas suites se combinan — superpowers para la metodología (brainstorm / TDD / planes / revisión a nivel de principios), gstack para flujos concretos (/review, /qa, /browse, /design-review, /investigate).`,"settings.skillSuite.ecc":`ECC`,"settings.skillSuite.eccHint":`Framework de agentes de affaan-m — agents, skills, rules y hooks para planificar, probar, implementar, revisar y memorizar (github.com/affaan-m/ECC).`,"settings.skillSuite.allThree":`Superpowers + gstack + ECC`,"settings.skillSuite.allThreeHint":`Las tres suites se combinan — superpowers para la metodología, gstack para flujos concretos, ECC para pases de revisión/implementación multiagente estructurados.`,"settings.skillSuite.customHint":`Compón los cinco prompts a continuación con los templates que elijas y edítalos libremente.`,"settings.skillSuite.reloadDefaults":`Restaurar predeterminados`,"settings.skillSuite.reloadDefaultsConfirm":`¿Reemplazar los cinco prompts personalizados con los valores agnósticos predeterminados?`,"settings.skillSuite.customPrompts":`Prompts personalizados`,"settings.skillSuite.agnostic":`Base agnóstica`,"settings.skillSuite.importPrompt":`Importar un template`,"settings.skillSuite.imported":`Template importado. Ahora puedes editarlo.`,"settings.skillSuite.importFailed":`No se pudo importar el template`,"settings.skillSuite.reviewTemplate":`Template de revisión`,"settings.skillSuite.autoLoopReviewGate":`Compuerta de revisión auto-loop`,"settings.skillSuite.autoLoopGroomingIntro":`Intro de grooming auto-loop`,"settings.skillSuite.qaTemplate":`Template QA`,"settings.skillSuite.brainstormingInstruction":`Instrucción de la fase de brainstorming`,"settings.global":`Global`,"settings.projects":`Proyectos`,"settings.globalSettings":`Ajustes globales`,"settings.defaultModel":`Modelo por defecto`,"settings.defaultModelClaude":`Modelo por defecto (Claude Code)`,"settings.defaultModelCodex":`Modelo por defecto (OpenAI Codex)`,"settings.agentPermissions":`Permisos del agente`,"settings.skipPermissions":`Omitir solicitudes de permisos (--dangerously-skip-permissions)`,"settings.skipPermissionsWarning":`Advertencia: desactivar esto hará que todos los permisos de herramientas (Write, Edit, Bash...) se denieguen automáticamente en modo headless. El agente solo podrá leer.`,"settings.notifications":`Notificaciones`,"settings.browserNotifications":`Notificación del navegador cuando el agente termina`,"settings.audioNotifications":`Notificación sonora cuando el agente termina`,"settings.enableBrowserNotifications":`Activar las notificaciones del navegador`,"settings.testBrowserNotification":`Probar la notificación`,"settings.browserNotificationGranted":`Notificaciones del navegador permitidas`,"settings.browserNotificationDenied":`Notificaciones del navegador bloqueadas`,"settings.browserNotificationAsk":`Se requiere permiso del navegador`,"settings.browserNotificationUnsupported":`Notificaciones del navegador no disponibles`,"settings.browserNotificationPermissionNeeded":`Permite las notificaciones del navegador para enviar una prueba.`,"settings.browserNotificationTestTitle":`Prueba de notificación de Kōbō`,"settings.browserNotificationTestBody":`Las notificaciones del navegador funcionan.`,"settings.enableAudio":`Activar el audio`,"settings.notificationSound":`Sonido de notificación`,"settings.notificationSoundHint":`Se reproduce cuando el agente termina o solicita permiso.`,"settings.questionSound":`Sonido de preguntas`,"settings.questionSoundHint":`Se reproduce solo cuando el agente te hace una pregunta.`,"settings.workspaceCreatedSound":`Sonido de creación del espacio de trabajo`,"settings.workspaceCreatedSoundHint":`Se reproduce después de crear un espacio de trabajo.`,"settings.notificationSoundPreview":`Escuchar`,"settings.notificationVolume":`Volumen`,"settings.notificationSoundHey":`Hey`,"settings.agentErrorSound":`Errores del agente`,"settings.agentErrorSoundHint":`Se reproduce para cuotas, límites de tasa y errores del agente.`,"settings.notificationSoundBasic":`Notificación básica`,"settings.notificationSoundWorkspaceCreated":`Warcraft III — Trabajo`,"settings.notificationSoundTravailTermine":`Trabajo terminado`,"settings.notificationSoundFaaah":`Faaah`,"settings.notificationSoundCaVaPeter":`Va a explotar`,"settings.notificationSoundDryFart":`Dry fart`,"settings.notificationSoundForShure":`For shure`,"settings.prSoundSection":`PR / MR y CI`,"settings.soundGeneral":`Sonido general`,"settings.soundNone":`Sin sonido`,"settings.prCiFailedSound":`CI fallida`,"settings.prCiRecoveredSound":`CI recuperada`,"settings.prChangesRequestedSound":`Cambios solicitados`,"settings.prApprovedSound":`PR aprobada`,"settings.prMergeConflictSound":`Conflicto de merge`,"settings.prReadyToMergeSound":`Lista para merge`,"settings.prMergedSound":`PR fusionada`,"settings.prCiFailedSoundHint":`Se reproduce cuando la CI pasa a estado fallido.`,"settings.prCiRecoveredSoundHint":`Se reproduce cuando la CI se recupera de un fallo.`,"settings.prChangesRequestedSoundHint":`Se reproduce cuando una revisión solicita cambios.`,"settings.prApprovedSoundHint":`Se reproduce cuando se aprueba la pull request.`,"settings.prMergeConflictSoundHint":`Se reproduce cuando se detecta un conflicto de merge.`,"settings.prReadyToMergeSoundHint":`Se reproduce cuando la pull request está lista para merge.`,"settings.prMergedSoundHint":`Se reproduce cuando se fusiona la pull request.`,"settings.notificationSoundSeptiemeCompagnie03":`7ème compagnie 03`,"settings.notificationSoundAllerFtg":`Aller FTG`,"settings.notificationSoundArreteDeMentir":`Arrête de mentir`,"settings.notificationSoundArretezLesMessages":`Arrêtez d'envoyer les messages`,"settings.notificationSoundBahAlorsOnEstNul":`Bah alors, on est nul`,"settings.notificationSoundGtaVDeath":`GTA V — Death`,"settings.notificationSoundNanTuDegages":`Nan, tu dégages`,"settings.notificationSoundNanWallahPardon":`Nan, wallah, pardon`,"settings.notificationSoundOuaisCestGreg":`Ouais, c'est Greg`,"settings.notificationSoundPasCaZinedine":`Pas ça, Zinedine`,"settings.notificationSoundTaGueule":`Ta gueule`,"settings.notificationSoundTuVasLaFermer":`Tu vas la fermer`,"settings.notificationSoundYaaa":`Yaaa`,"settings.notificationSoundMaisLaisseMoiDormirZebi":`Mais laisse-moi dormir zebi`,"settings.defaultPermissionMode":`Modo de permisos por defecto`,"settings.defaultPermissionModeClaude":`Modo de permisos por defecto (Claude Code)`,"settings.defaultPermissionModeCodex":`Modo de permisos por defecto (OpenAI Codex)`,"settings.defaultPermissionModeHint":`Modo aplicado al crear un workspace. Plan = solo lectura, Bypass = sin avisos, Estricto = auto-aceptar ediciones con allow-list, Interactivo = preguntar antes de cada herramienta.`,"settings.activityFeed":`Feed de actividad`,"settings.showThinkingBlocks":`Mostrar bloques de razonamiento de los agentes`,"settings.whipSettings":`Látigo`,"settings.whipSettingsHint":`Configura el atajo y el volumen opcionales del látigo.`,"settings.whipEnabled":`Activar el látigo`,"settings.whipEnabledHint":`Muestra el látigo interactivo en los workspaces activos compatibles.`,"settings.whipVolume":`Volumen del látigo`,"settings.whipVolumeMasterAudioDisabled":`El audio principal está desactivado. Activa las notificaciones de audio para ajustar el volumen del látigo; el valor guardado se conserva.`,"whip.overlayLabel":`Látigo interactivo`,"whip.overlayInstructions":`Mueve el puntero para controlar el látigo. Pulsa Intro o Espacio para hacerlo chasquear. Pulsa Escape para cerrar.`,"settings.whipShortcut":`Atajo del látigo`,"settings.whipShortcutHint":`Haz clic y luego pulsa el atajo que quieras usar.`,"settings.whipShortcutRecording":`Pulsa un atajo…`,"settings.whipShortcutButtonLabel":`Atajo del látigo: {shortcut}`,"settings.whipShortcutRecordingLabel":`Grabando el atajo del látigo. Pulsa un atajo…`,"settings.whipShortcutReset":`Restablecer atajo`,"settings.whipShortcutReserved":`Este atajo está reservado por el navegador.`,"settings.testIntegration":`Probar conexión`,"pwa.offline":`No tienes conexión. El chat y los agentes necesitan el servidor Kōbō.`,"pwa.reconnecting":`Reconectando al servidor Kōbō…`,"pwa.installReady":`Instala Kōbō como aplicación.`,"pwa.install":`Instalar`,"pwa.ignore":`Ignorar`,"pwa.updateReady":`Hay una actualización de Kōbō disponible.`,"pwa.reload":`Recargar`,"chat.searchWorkspaceHistory":`Buscar en el historial del workspace`,"chat.historySearch.user":`Tú`,"chat.historySearch.agent":`Agente`,"chat.openInGitDiff":`Abrir en el diff de Git`,"timeline.title":`Cronología de sesiones`,"timeline.export":`Exportar diagnóstico`,"timeline.unnamed":`Sesión de agente`,"timeline.tools":`{count} herramientas`,"timeline.errors":`{count} errores`,"settings.verboseMessages":`Mostrar mensajes detallados del sistema (task_progress, task_started)`,"settings.availableVariables":`Variables disponibles en las plantillas de prompt`,"settings.prPromptTemplate":`Plantilla de prompt PR`,"settings.prPromptPlaceholder":`Instrucciones para el agente al crear PRs en GitHub...`,"settings.prPromptHint":`Usa las variables listadas arriba (sintaxis de dobles llaves).`,"settings.reviewPromptTemplate":`Plantilla de prompt de revisión`,"settings.reviewPromptPlaceholder":`Instrucciones para el agente al revisar los cambios de la rama...`,"settings.ciFixPromptTemplate":`Plantilla de prompt «Reparar CI»`,"settings.ciFixPromptHint":`Se envía al agente cuando un workspace tiene la CI fallando. Variables (sintaxis con dobles llaves): pr_url, pr_number, pr_title, branch_name, source_branch, workspace_name, workspace_id, project_name, failed_jobs, ci_run_url.`,"settings.ciFixPromptPlaceholder":`Pedir al agente que diagnostique y arregle los jobs de CI que fallan...`,"settings.finalizationPromptTemplate":`Prompt de finalización del auto-loop`,"settings.finalizationPromptHint":`Prompt por defecto para la última iteración del auto-loop (controles de calidad finales). Se usa cuando un proyecto deja vacío su propio prompt de finalización.`,"settings.finalizationPromptPlaceholder":`Run final quality checks before closing the workspace...`,"settings.notionInitialPrompt":`Prompt inicial de Notion`,"settings.notionInitialPrompt.help":`Se añade al prompt de creación del workspace cuando el workspace tiene un ticket de Notion. Variables: {variables}.`,"settings.notionInitialPrompt.project":`Prompt inicial de Notion (anulación)`,"settings.sentryInitialPrompt":`Prompt inicial de Sentry`,"settings.sentryInitialPrompt.help":`Se añade al prompt de creación del workspace cuando el workspace tiene una issue de Sentry. Variables: {variables}.`,"settings.sentryInitialPrompt.project":`Prompt inicial de Sentry (anulación)`,"settings.initialPrompt.inheritHint":`Dejar en blanco para heredar. Escribe un carácter en blanco para desactivar la inyección a este nivel.`,"settings.resetToDefault":`Restablecer`,"settings.resetFailed":`No se pudo cargar el valor por defecto`,"settings.sentryIntegration":`Integración Sentry`,"settings.var.prNumber":`Número de PR (ej: 42)`,"settings.var.prUrl":`URL completa de la PR creada`,"settings.var.branchName":`Nombre de la rama de trabajo`,"settings.var.sourceBranch":`Rama fuente a la que apunta la PR`,"settings.var.workspaceName":`Nombre del workspace`,"settings.var.projectName":`Último segmento de la ruta del proyecto`,"settings.var.notionUrl":`URL de Notion si está definida, vacía en caso contrario`,"settings.var.commits":`Lista de commits entre source y head`,"settings.var.diffStats":`Resumen shortstat de Git (archivos, inserciones, eliminaciones)`,"settings.var.tasks":`Tareas regulares como lista de verificación`,"settings.var.acceptanceCriteria":`Criterios de aceptación como lista de verificación`,"settings.gitConventions":`Convenciones Git (global)`,"settings.gitConventionsPlaceholder":`# Convenciones Git...`,"settings.gitConventionsHint":`Estas convenciones se escriben en .ai/.git-conventions.md en cada nuevo workspace y deben ser seguidas por el agente antes de cualquier operación Git. Se anulan con convenciones por proyecto si están definidas.`,"settings.setupScript":`Script de setup`,"settings.cleanupScript":`Script de limpieza`,"settings.archiveScript":`Script de archivado`,"settings.archiveScriptHint":`Script de shell ejecutado en el servidor en el worktree cuando se archiva un workspace. Dejar vacío para desactivar.`,"settings.archiveScriptPlaceholder":`p. ej. limpiar contenedores, liberar espacio en disco…`,"settings.stopDevServersOnShutdown":`Detener servidores de desarrollo al cerrar Kōbō`,"settings.stopDevServersOnShutdownHint":`Activado por defecto. Desactívalo para mantener los contenedores Docker durante las actualizaciones. Los procesos locales siempre se detienen. Los scripts de cierre siguen ejecutándose.`,"settings.hook.shutdownTitle":`Hook: cierre de Kōbō`,"settings.hook.shutdownHint":`Se ejecuta en cada worktree existente, incluidos los archivados, después de detener agentes y procesos locales y antes de detener Docker automáticamente. Límite: 1 minuto por script. PROJECT_NAME e INSTANCE identifican su stack Docker; PROJECT_NAME queda vacío sin una instancia conocida. El script del proyecto reemplaza este script. Los comandos Docker pueden detener contenedores aunque el cierre automático esté desactivado.`,"settings.hook.shutdownPlaceholder":`p. ej. detener los contenedores Docker de este workspace…`,"tours.settings.shutdown.title":`Cierre de Kōbō`,"tours.settings.shutdown.description":`Elige si Kōbō detiene los contenedores Docker al cerrar. El hook global se ejecuta en cada worktree existente (máximo 1 minuto); un script por proyecto puede reemplazarlo. Los procesos locales siempre se detienen.`,"settings.hook.sessionEndedTitle":`Hook: sesión finalizada`,"settings.hook.sessionEndedHint":`Se ejecuta cuando termina una sesión del agente, sea cual sea el motivo. Lee KOBO_SESSION_END_REASON (completed / error / killed / watchdog), KOBO_SESSION_STOP_CAUSE, KOBO_AUTOLOOP_ACTIVE, KOBO_SESSION_ID y KOBO_SESSION_EXIT_CODE. Vacío = desactivado.`,"settings.hook.sessionEndedPlaceholder":`p. ej. npm test, o avisar a un canal de chat…`,"settings.hook.prMergedTitle":`Hook: PR fusionada`,"settings.hook.prMergedHint":`Se ejecuta cuando se detecta una PR fusionada, antes de archivar o purgar el workspace: el worktree sigue en disco. Lee KOBO_PR_NUMBER y KOBO_PR_URL. Vacío = desactivado.`,"settings.hook.prMergedPlaceholder":`p. ej. lanzar un despliegue, etiquetar una release…`,"settings.hook.autoLoopDisabledTitle":`Hook: auto-loop detenido`,"settings.hook.autoLoopDisabledHint":`Se ejecuta cada vez que se desactiva el auto-loop, por Kōbō o por ti. Lee KOBO_AUTOLOOP_REASON (completed / stall / error / user-action / awaiting-clarification) y KOBO_TASKS_PENDING. Vacío = desactivado.`,"settings.hook.autoLoopDisabledPlaceholder":`p. ej. enviar un aviso cuando el bucle se atasca…`,"settings.changeSourceBranchScript":`Script para cambiar la rama de origen`,"settings.changeSourceBranchScript.help":`Reemplaza el cherry-pick integrado cuando no está vacío. El script gestiona git, base de la PR, force-push y conflictos; Kōbō solo rechaza si el agente está corriendo y actualiza los metadatos de la rama de origen en exit 0.`,"settings.changeSourceBranchScript.envHelp":`KOBO_NEW_BASE — nueva rama de origen elegida en el diálogo
|
|
2
2
|
KOBO_OLD_BASE — rama de origen anterior del workspace
|
|
3
3
|
KOBO_WORKING_BRANCH — rama de trabajo del workspace
|
|
4
4
|
KOBO_WORKTREE_PATH — ruta absoluta del worktree (también cwd)
|
|
@@ -8,7 +8,7 @@ KOBO_WORKSPACE_ID — id Kōbō del workspace (estable tras renombrar)
|
|
|
8
8
|
KOBO_WORKSPACE_NAME — nombre visible del workspace
|
|
9
9
|
KOBO_FORGE — forge resuelta: github / gitlab / none
|
|
10
10
|
KOBO_PR_NUMBER — número de PR/MR en la forge resuelta (vacío si no hay ninguna abierta)`,"settings.changeSourceBranchScript.placeholder":`#!/usr/bin/env bash
|
|
11
|
-
# tu script — usa $KOBO_NEW_BASE / $KOBO_OLD_BASE / $KOBO_WORKING_BRANCH …`,"settings.changeSourceBranchScript.resetDefault":`Restablecer al predeterminado de Kōbō`,"settings.changeSourceBranchScript.replaceConfirmTitle":`¿Restablecer el script?`,"settings.changeSourceBranchScript.replaceConfirm":`Tus modificaciones se reemplazarán por el script predeterminado de Kōbō. ¿Continuar?`,"settings.cleanupScriptHint":`Script de shell ejecutado en el worktree después de cada sesión del agente. En modo auto-loop solo se ejecuta cuando todas las tareas están terminadas. Dejar vacío para desactivar.`,"settings.cleanupScriptPlaceholder":`p. ej. eliminar archivos temporales, detener contenedores…`,"settings.cleanupScriptMode":`Cuándo ejecutar`,"settings.cleanupScriptMode.idle":`Después de cada sesión — aunque queden tareas`,"settings.cleanupScriptMode.noTasks":`Solo cuando no queda ninguna tarea de Kōbō`,"settings.cleanupScriptOnlyOnChanges":`Ejecutar solo si se modificaron, añadieron o eliminaron archivos`,"settings.cleanupScriptMode.inherit":`Heredar la configuración global`,"settings.taskPromptTemplate":`Prompt de tarea`,"settings.taskPromptTemplatePlaceholder":`Prompt insertado automáticamente en la descripción de la tarea…`,"settings.taskPromptTemplateHint":`Se inyecta automáticamente en la descripción de la tarea en la página de creación cuando este proyecto está seleccionado. Si no se modifica, se reemplaza al cambiar de proyecto; en cuanto lo editas, se conserva tu texto.`,"settings.setupScriptPlaceholder":`npm install`,"settings.setupScriptHint":`Se ejecuta con bash en el worktree después de su creación, antes de que el agente inicie. No necesita shebang. Si falla, el workspace se establece en error. Timeout: 5 minutos.`,"settings.e2e.title":`Tests E2E`,"settings.e2e.framework":`Framework`,"settings.e2e.frameworkNone":`Ninguno`,"settings.e2e.frameworkOther":`Otro`,"settings.e2e.skill":`Skill (opcional)`,"settings.e2e.skillPlaceholder":`p. ej. cypress-tester`,"settings.e2e.prompt":`Guía personalizada (opcional)`,"settings.e2e.promptPlaceholder":`p. ej. usar el patrón page-object, apuntar a data-testid`,"settings.e2e.helpText":`Cuando está configurado, el agente de grooming auto-loop inserta subtareas E2E para funciones UI.`,"settings.finalization.title":`Finalización del auto-loop`,"settings.finalization.helpText":`Opcional: un prompt que el agente ejecuta como la última iteración del auto-loop. Típicamente usado para controles de calidad finales (lint, typecheck, tests). La fase de grooming creará una tarea con prefijo [FINAL] que usará este prompt.`,"settings.finalization.prompt":`Prompt de finalización`,"settings.finalization.promptPlaceholder":`p. ej. Ejecuta npm run lint y npm test, luego marca esta tarea como hecha.`,"settings.editorCommand":`Comando del editor`,"settings.editorCommandPlaceholder":`code, phpstorm, subl, vim...`,"settings.editorCommandHint":`Comando para abrir el worktree en su editor. La ruta del worktree se pasa como argumento.`,"settings.fileManagerCommand":`Comando del explorador de archivos`,"settings.fileManagerCommandPlaceholder":`xdg-open, open, nautilus, dolphin, explorer...`,"settings.fileManagerCommandHint":`Comando para abrir el worktree en su explorador de archivos. La ruta del worktree se pasa como argumento. Déjalo vacío para ocultar el botón.`,"settings.terminalCommand":`Comando de terminal`,"settings.terminalCommandHint":`Comando para abrir tu terminal en el worktree. Marcador {path} opcional para el directorio.`,"settings.terminalCommandPlaceholder":`kitty · alacritty · gnome-terminal --working-directory={path}`,"settings.mcpSelection":`Selección MCP de Claude`,"settings.mcpAutoSelect":`Auto (primer MCP activo que coincide)`,"settings.notionMcp":`Clave MCP de Notion`,"settings.sentryMcp":`Clave MCP de Sentry`,"settings.mcpSelectionHint":`Las entradas activas se leen desde ~/.claude.json. Deja Auto para usar el comportamiento por defecto.`,"settings.configuredProjects":`Proyectos configurados`,"settings.noProjects":`No hay proyectos configurados`,"settings.addProject":`Añadir proyecto`,"settings.copyFrom":`Copiar ajustes desde`,"settings.copyFromPlaceholder":`(ninguno — partir de los valores por defecto)`,"settings.copyFromHint":`Copia todos los ajustes excepto path, nombre y rama fuente.`,"settings.copyFromConfirmTitle":`¿Sobrescribir los valores actuales?`,"settings.copyFromConfirm":`Se sobrescribirán los valores del formulario con los ajustes de «{project}». ¿Continuar?`,"settings.newProject":`Nuevo proyecto`,"settings.editProject":`Editar proyecto`,"help.title":`Ayuda`,"help.tours":`Visitas guiadas`,"help.steps":`{n} paso | {n} pasos`,"help.markAllSeen":`Marcar todas como vistas`,"help.markAllSeenHint":`Marca las visitas actuales como vistas sin iniciarlas.`,"help.resetAll":`Restablecer todas las visitas`,"help.resetAllHint":`Inicia ahora la visita de inicio; cada pantalla repetirá la suya al abrirla de nuevo.`,"help.status.unseen":`no vista`,"help.status.partial":`en parte`,"help.status.seen":`vista`,"help.replayThis":`Repetir la visita de esta pantalla`,"tours.next":`Siguiente`,"tours.prev":`Atrás`,"tours.done":`Terminar`,"tours.exitConfirm":`¿Salir de la visita guiada? No volverá a iniciarse sola; puedes repetirla cuando quieras desde el menú Ayuda.`,"tours.home.title":`Orientarse`,"tours.home.list.title":`Workspaces`,"tours.home.list.description":`Cada misión vive aquí con su estado. Los badges señalan una CI fallida, una review que pide cambios o una PR lista para merge. Arrastra el borde interior de un panel lateral con el ratón o el dedo para cambiar su tamaño. Los botones superiores se distribuyen en varias líneas si falta espacio.`,"tours.home.create.title":`Crear un workspace`,"tours.home.create.description":`Un workspace es un worktree de Git, una rama y una sesión de agente para una tarea.`,"tours.home.search.title":`Búsqueda`,"tours.home.search.description":`Filtra la lista por nombre. El icono de búsqueda de arriba abre la búsqueda de texto completo en las conversaciones de los agentes.`,"tours.home.dashboard.title":`Panel`,"tours.home.dashboard.description":`Una tabla con todos los workspaces activos: estado, atención, PR, diff, actividad y la fiabilidad de los motores.`,"tours.home.health.title":`Salud y changelog`,"tours.home.health.description":`Comprueba la base de datos, los runtimes y los agentes activos. El botón de al lado lista lo que cambió en cada versión.`,"tours.home.settings.title":`Ajustes`,"tours.home.settings.description":`Motores, integraciones, automatización, worktrees y proyectos. Ahora crea tu primer workspace.`,"tours.create.title":`Crear un workspace`,"tours.create.project.title":`Proyecto y rama`,"tours.create.project.description":`Elige el proyecto y la rama de la que parte el worktree.`,"tours.create.mission.title":`Misión`,"tours.create.mission.description":`Describe la tarea, o impórtala desde una página de Notion o una issue de Sentry.`,"tours.create.template.title":`Templates`,"tours.create.template.description":`Aplica un preset guardado, o guarda este formulario como preset. «Duplicar» en una tarjeta de workspace abre este formulario ya rellenado.`,"tours.create.engine.title":`Motor y modelo`,"tours.create.engine.description":`Claude Code o Codex, el modelo, el esfuerzo de razonamiento y lo que el agente puede hacer sin preguntar.`,"tours.create.brainstorm.title":`Brainstorm en otro modelo`,"tours.create.brainstorm.description":`Ejecuta la primera sesión de brainstorming en otro modelo y vuelve al principal para las iteraciones.`,"tours.create.autoloop.title":`Auto-loop`,"tours.create.autoloop.description":`El agente completa las tareas y las verificaciones finales. Una review final independiente opcional se repite tras las correcciones hasta que no queden hallazgos; si no hay progreso, el bucle se pausa.`,"tours.create.finalReview.title":`Configurar la review final`,"tours.create.finalReview.description":`Elige de antemano el motor, el modelo, el esfuerzo y las instrucciones del reviewer. La review se ejecuta en una sesión separada de solo lectura; el agente original corrige los hallazgos y la review se repite hasta que no quede ninguno.`,"tours.workspace.finalReview.title":`Review final y correcciones`,"tours.workspace.finalReview.description":`Configura aquí el reviewer final opcional antes de iniciarlo. Tras las tareas y las verificaciones finales, una sesión separada revisa el trabajo. Los hallazgos vuelven a la sesión original para corregirlos automáticamente y repetir la review. Cerrar Kōbō conserva el ciclo.`,"tours.workspace.reviewReturn.title":`Volver de una review`,"tours.workspace.reviewReturn.description":`El resumen vuelve a la sesión original incluso tras reiniciar Kōbō. Si la entrega es incierta, consulta esa conversación antes de Reintentar; Cancelar abandona el retorno. Las reviews manuales esperan tus instrucciones antes de corregir; auto-loop corrige automáticamente.`,"tours.create.comparison.title":`Comparar dos motores`,"tours.create.comparison.description":`Crea dos workspaces gemelos sobre la misma tarea y compara sus commits, tareas y actividad.`,"tours.workspace.sessions.title":`Sesiones del workspace`,"tours.workspace.sessions.description":`Pulsa el título para elegir, crear o renombrar una sesión, o copiar su identificador.`,"tours.workspace.actions.title":`Acciones del workspace`,"tours.workspace.actions.description":`El menú ⋯ reúne la vista en paralelo, la paleta de comandos, el panel lateral y la visita guiada.`,"tours.workspace.title":`Dentro de un workspace`,"tours.workspace.chat.title":`Conversación`,"tours.workspace.chat.description":`La salida del agente, en directo: mensajes, llamadas a herramientas, preguntas y errores.`,"tours.workspace.input.title":`Hablar con el agente`,"tours.workspace.input.description":`Envía un mensaje, usa slash commands, dicta por voz o adjunta archivos.`,"tours.workspace.selectors.title":`Ajustes de sesión`,"tours.workspace.selectors.description":`Abre Configurar para ajustar modelo, esfuerzo, permisos y auto-loop. También muestra el motor actual.`,"tours.workspace.status.title":`Estado`,"tours.workspace.status.description":`El estado de la sesión actual; detenla aquí cuando haga falta.`,"tours.workspace.git.title":`Git`,"tours.workspace.git.description":`Commits, diff, push, rebase y la PR de esta rama.`,"tours.workspace.tasks.title":`Tareas`,"tours.workspace.tasks.description":`Lo que el agente planea hacer, y los criterios de aceptación que debe cumplir.`,"tours.workspace.timeline.title":`Cronología`,"tours.workspace.timeline.description":`Todas las sesiones de este workspace; abre una anterior para releerla.`,"tours.workspace.subagents.title":`Subagentes`,"tours.workspace.subagents.description":`Sigue los subagentes que lanzó el agente, con su progreso en directo.`,"tours.workspace.documents.title":`Documentos`,"tours.workspace.documents.description":`Planes y archivos que escribió el agente, consultables sin salir del chat.`,"tours.workspace.schedule.title":`Programación`,"tours.workspace.schedule.description":`Wake-ups y crons que relanzan el agente más tarde.`,"tours.workspace.memory.title":`Memoria del workspace`,"tours.workspace.memory.description":`Consulta la memoria entregada a la conversación seleccionada, las propuestas pendientes y las operaciones del workspace. Borrarla no modifica el historial del proveedor.`,"tours.workspace.handoff.title":`Continuar con un contexto nuevo`,"tours.workspace.handoff.description":`¿Una conversación larga? Inicia aquí una sesión nueva o usa «Cambiar de LLM». El trabajo actual se interrumpe de inmediato y la nueva sesión continúa automáticamente en el mismo workspace. El resumen de traspaso es opcional: desactívalo si el LLM actual ha agotado su cuota. El progreso, el informe y el enlace a la sesión anterior aparecen debajo de este botón.`,"tours.workspace.terminal.title":`Terminal`,"tours.workspace.terminal.description":`Una shell dentro del worktree, sin salir de Kōbō.`,"tours.gitPr.title":`Pull request`,"tours.gitPr.panel.title":`Estado de la PR`,"tours.gitPr.panel.description":`Resultado de la CI, decisión de la review y reviewers, actualizados cada 30 segundos.`,"tours.gitPr.actions.title":`Acciones Git`,"tours.gitPr.actions.description":`Push, pull, rebase o cambiar la rama base. Durante un conflicto, un botón deja que el agente lo resuelva.`,"tours.gitPr.attention.title":`Badges de atención`,"tours.gitPr.attention.description":`La tarjeta muestra una CI fallida, cambios solicitados o una PR lista para merge.`,"tours.settings.title":`Ajustes`,"tours.settings.engines.title":`Motores y modelos`,"tours.settings.engines.description":`Modelos, permisos predeterminados y límites de reintentos automáticos.`,"tours.settings.integrations.title":`Integraciones`,"tours.settings.integrations.description":`Conexiones de Notion y Sentry, y credenciales de Bitbucket. GitHub y GitLab usan tu sesión CLI local.`,"tours.settings.automation.title":`Automatización`,"tours.settings.automation.description":`Scripts de setup y cleanup, lifecycle hooks, templates de prompts, templates de workspace y skills.`,"tours.settings.worktrees.title":`Worktrees`,"tours.settings.memory.title":`Memoria`,"tours.settings.memory.description":`Elige el comportamiento manual, automático o híbrido y explora, revisa o borra los datos exactos de cada ámbito. Las operaciones de memoria son inmediatas; el modo se aplica al guardar los ajustes.`,"tours.settings.worktrees.description":`Dónde viven los worktrees, cuánto tiempo se conservan los ya fusionados, y la purga automática.`,"tours.settings.projects.title":`Proyectos`,"tours.settings.projects.description":`Los proyectos registrados y sus ajustes específicos por proyecto.`,"tours.settings.misc.title":`General, voz, notificaciones, exportación`,"tours.settings.misc.description":`Idioma, acceso a la red, dictado, sonidos y notificaciones del navegador, y una exportación completa de tus ajustes.`,"tours.dashboard.title":`Panel`,"tours.dashboard.overview.title":`Visión general`,"tours.dashboard.overview.description":`Todos los workspaces activos en una tabla; haz clic en una fila para abrirla.`,"tours.dashboard.reliability.title":`Fiabilidad de los motores`,"tours.dashboard.reliability.description":`Sesiones, errores y duraciones por motor y modelo.`,"tours.health.title":`Salud`,"tours.health.checks.title":`Comprobaciones`,"tours.health.checks.description":`Entorno, base de datos, runtimes, workspaces y sesiones.`,"tours.health.active.title":`Estado activo`,"tours.health.active.description":`Los back-offs de cuota, los wake-ups pendientes y los auto-loops en curso en este momento.`,"tours.search.title":`Búsqueda`,"tours.search.input.title":`Consulta`,"tours.search.input.description":`Coincide con nombres de workspaces y conversaciones de agentes.`,"tours.search.archived.title":`Archivados`,"tours.search.archived.description":`Incluir los workspaces archivados en los resultados.`,"tours.changelog.title":`Novedades`,"tours.changelog.list.title":`Versiones`,"tours.changelog.list.description":`Lo que cambió en cada versión, la más reciente primero.`,"settings.projectGroup.identity":`Identidad`,"settings.projectGroup.defaults":`Valores predeterminados`,"settings.projectGroup.prompts":`Prompts`,"settings.projectGroup.scripts":`Scripts`,"settings.projectPath":`Ruta del proyecto`,"settings.projectPathPlaceholder":`/ruta/al/proyecto`,"settings.displayName":`Nombre para mostrar`,"settings.displayNamePlaceholder":`Mi proyecto`,"settings.defaultSourceBranch":`Rama fuente por defecto`,"settings.defaultModel.project":`Modelo por defecto`,"settings.skipPermissions.project":`Omitir solicitudes de permisos`,"settings.prPromptTemplate.project":`Plantilla de prompt PR`,"settings.prPromptPlaceholder.project":`Instrucciones específicas del proyecto para la creación de PRs...`,"settings.reviewPromptTemplate.project":`Plantilla de prompt de revisión`,"settings.ciFixPromptTemplate.project":`Plantilla de prompt «Reparar CI»`,"settings.gitConventions.project":`Convenciones Git (por proyecto)`,"settings.gitConventionsEmpty":`Dejar vacío para usar las convenciones globales.`,"settings.notionStatus":`Estado ticket Notion`,"settings.notionStatusProperty":`Nombre de la propiedad`,"settings.notionStatusPropertyPlaceholder":`État, Status...`,"settings.notionInProgressStatus":`Valor a establecer`,"settings.notionInProgressStatusPlaceholder":`En progreso, In progress...`,"settings.notionStatusHint":`Cuando se crea un workspace con un ticket Notion, la propiedad especificada se establece a este valor. Ambos campos son obligatorios. Dejar vacío para desactivar.`,"settings.notionAssignee":`Asignación Notion`,"settings.notionAssigneeHint":`Cuando se crea un workspace con un ticket Notion, el usuario autenticado en el MCP de Notion se añade a esta propiedad People — solo si aún no tiene un asignado. Dejar vacío para desactivar.`,"settings.notionAssigneeProperty":`Nombre de la propiedad`,"settings.notionAssigneePropertyPlaceholder":`Desarrolladores, Assignees...`,"settings.notionUserId":`Tu UUID de Notion`,"settings.notionUserIdPlaceholder":`135d872b-594c-8126-9604-00024ad6e5b5`,"settings.notionUserIdHint":`Selecciona tu cuenta en la lista. Notion rechaza la asignación de bots en propiedades People — este campo es obligatorio para activar la auto-asignación.`,"settings.notionUsersRefresh":`Refrescar`,"settings.notionUsersLoading":`Cargando usuarios de Notion…`,"settings.notionUsersLoadFailed":`Error al cargar la lista: {error}`,"settings.notionUsersManualFallback":`Lista no disponible — pega tu UUID de Notion manualmente.`,"settings.devServer":`Servidor de desarrollo`,"settings.devServerStart":`Script de inicio`,"settings.devServerStartPlaceholder":`npm run dev`,"settings.devServerStop":`Script de parada`,"settings.devServerStopPlaceholder":`Opcional — el proceso se cerrará automáticamente si está vacío`,"settings.selectProject":`Selecciona un proyecto o añade uno nuevo`,"settings.projectPathRequired":`La ruta del proyecto es obligatoria.`,"settings.useGlobal":`Usar global`,"settings.saved":`Ajustes globales guardados.`,"settings.unsavedChanges":`Cambios sin guardar`,"settings.nav.general":`General`,"settings.nav.agents":`Agentes`,"settings.nav.skills":`Skills`,"settings.nav.prompts":`Prompts`,"settings.nav.scripts":`Scripts`,"settings.nav.workspaceTemplates":`Plantillas de workspace`,"workspaceTemplates.title":`Plantillas de workspace`,"workspaceTemplates.hint":`Preajustes guardados del formulario de creación. Elige uno en la página de creación; para modificarlo, cárgalo allí, ajústalo y guárdalo de nuevo con el mismo nombre.`,"workspaceTemplates.empty":`Todavía no hay plantillas. Rellena el formulario de creación y usa «Guardar como plantilla».`,"workspaceTemplates.anyProject":`Cualquier proyecto`,"workspaceTemplates.rename":`Renombrar`,"workspaceTemplates.renameTitle":`Renombrar la plantilla`,"workspaceTemplates.deleteConfirm":`¿Eliminar la plantilla «{name}»?`,"workspaceTemplates.deleted":`Plantilla «{name}» eliminada`,"settings.nav.notion":`Notion`,"settings.nav.forge":`Forge`,"settings.bitbucketCommunity":`Bitbucket Community`,"settings.bitbucketCommunityHint":`Las credenciales se guardan localmente y solo las usa bkt.`,"settings.bitbucketUsername":`Correo de Atlassian`,"settings.bitbucketToken":`Token API de Bitbucket`,"settings.nav.sentry":`Sentry`,"settings.nav.voice":`Voz`,"settings.nav.notifications":`Notificaciones`,"settings.nav.worktrees":`Worktrees`,"settings.nav.export":`Exportar`,"settings.help.general":`Idioma, acceso a la red y los valores por defecto que hereda cada proyecto.`,"settings.help.agents":`Modelos y permisos predeterminados, y límites de reintentos automáticos.`,"settings.help.skills":`Qué suites de skills se le indica usar al agente.`,"settings.help.prompts":`Instrucciones del agente tras abrir una PR/MR, para revisiones de código, correcciones CI y finalización.`,"settings.help.scripts":`Scripts de setup, limpieza y cambio de rama origen, además de los hooks de ciclo de vida.`,"settings.help.notion":`Importar una página de Notion como fuente de verdad de un workspace.`,"settings.help.sentry":`Crear un workspace a partir de una issue de Sentry.`,"settings.help.forge":`Credenciales de Bitbucket. GitHub y GitLab usan tu CLI gh/glab autenticada; elige la forja por proyecto.`,"settings.help.voice":`Dictado y push-to-talk.`,"settings.help.notifications":`Sonidos, notificaciones del navegador y recordatorio de preguntas sin responder.`,"settings.help.worktrees":`Dónde se crean los worktrees, retención y borrado automático.`,"settings.help.projects":`Proyectos registrados y sus ajustes específicos por proyecto.`,"settings.help.templates":`Plantillas de prompt expandidas en la entrada del chat.`,"settings.help.workspaceTemplates":`Presets guardados del formulario de creación.`,"settings.help.export":`Exportar e importar todos los ajustes como JSON.`,"settings.openNav":`Abrir la navegación`,"settings.saveError":`Error al guardar los ajustes.`,"settings.projectSaved":`Proyecto guardado.`,"settings.projectSaveError":`Error al guardar el proyecto.`,"settings.projectDeleted":`Proyecto eliminado.`,"settings.deleteProjectConfirmTitle":`¿Eliminar proyecto?`,"settings.deleteProjectConfirmMessage":`¿Quitar «{name}» de tus proyectos? Esto solo elimina sus ajustes de Kōbō — tu código y tus worktrees no se modifican.`,"settings.projectDeleteError":`Error al eliminar el proyecto.`,"templates.title":`Plantillas`,"templates.newTemplate":`Nueva plantilla`,"templates.editTemplate":`Editar plantilla`,"templates.deleteTemplate":`Eliminar plantilla`,"templates.deleteConfirm":`¿Eliminar la plantilla '/{slug}'?`,"templates.deleteConfirmMessage":`Esta acción no se puede deshacer.`,"templates.slug":`Slug`,"templates.slugHint":`Minúsculas, dígitos, guiones. Máx. 64 caracteres.`,"templates.slugInvalid":`El slug solo puede contener minúsculas, dígitos y guiones`,"templates.slugDuplicate":`Ya existe una plantilla con este slug`,"templates.description":`Descripción`,"templates.descriptionHint":`Etiqueta corta mostrada en el dropdown.`,"templates.descriptionRequired":`La descripción es obligatoria`,"templates.contentRequired":`El contenido es obligatorio`,"templates.content":`Contenido`,"templates.contentHint":`Contenido de la plantilla. Usa {variable_name} para las sustituciones.`,"templates.availableVars":`Variables disponibles`,"templates.filePath":`Archivo: {path}`,"templates.empty":`Aún no hay plantillas.`,"templates.createFailed":`Error al crear la plantilla`,"templates.updateFailed":`Error al actualizar la plantilla`,"templates.deleteFailed":`Error al eliminar la plantilla`,"templates.save":`Guardar`,"templates.create":`Crear`,"templates.reloadDefaults":`Recargar plantillas predeterminadas`,"templates.reloadDefaultsHint":`Solo añade las plantillas predeterminadas que faltan. Las plantillas existentes (modificadas o no) nunca se sobrescriben.`,"templates.reloadDefaultsConfirmMessage":`Esta acción añadirá a la lista las plantillas predeterminadas que falten. Las plantillas existentes — incluidas las que hayas personalizado — no se tocarán. Si quieres restaurar una plantilla predeterminada que has modificado, elimínala primero y vuelve a ejecutar esta acción.`,"templates.reloadDefaultsSuccess":`{added} añadida(s), {kept} conservada(s)`,"templates.reloadDefaultsFailed":`Error al recargar las plantillas predeterminadas`,"templates.resetToDefault":`Restablecer al valor predeterminado`,"templates.resetConfirmTitle":`¿Restablecer la plantilla al valor predeterminado?`,"templates.resetConfirmMessage":`Esto sobrescribe tus cambios locales en /{slug} con el predeterminado. No se puede deshacer.`,"templates.resetSuccess":`Plantilla /{slug} restablecida al predeterminado`,"templates.resetFailed":`Error al restablecer la plantilla`,"chatInput.dropdownSkills":`Skills de Claude`,"chatInput.dropdownKobo":`Comandos Kōbō`,"chatInput.dropdownTemplates":`Plantillas`,"documents.title":`Documentos`,"documents.empty":`No se encontraron documentos`,"documents.refresh":`Actualizar`,"documents.back":`Volver`,"documents.loadFailed":`Error al cargar el documento`,"git.title":`Git`,"git.outputDialogTitle":`Git informó de un error`,"git.statsFailed":`No se pudo leer el estado de git`,"git.section.repository":`Repositorio`,"git.section.changes":`Cambios`,"git.section.pullRequest":`Pull request`,"git.section.actions":`Acciones`,"git.actions.more":`Más`,"git.localOnly":`solo local`,"git.pushed":`pushed`,"git.unpushed":`{count} sin push`,"git.commits":`{count} commit | {count} commits`,"git.commits.loading":`Cargando commits…`,"git.commits.empty":`Sin commits en esta rama`,"git.commits.pushed":`Pusheado`,"git.commits.unpushed":`Sin pushear`,"git.commits.clickToAppend":`click para agregar SHA al chat`,"git.commits.diffThisCommit":`Diff de este commit (vs padre)`,"git.compareCommits":`Comparar commits…`,"git.files":`{count} archivo | {count} archivos`,"git.staged":`{count} staged`,"git.modified":`{count} modificados`,"git.untracked":`{count} sin seguimiento`,"git.workingTreeEmpty":`Sin cambios sin confirmar`,"git.fileStaged":`Preparado`,"git.fileModified":`Modificado`,"git.fileUntracked":`Sin seguimiento`,"git.push":`Push`,"git.forcePush":`Force push`,"git.forcePushToggle":`Force push (--force-with-lease)`,"git.pushRejectedHistory":`Push rechazado: las ramas local y remota tienen historiales distintos. Después de un rebase de commits publicados, use Force push con confirmación. En otro caso, obtenga e integre los cambios remotos antes de reintentarlo.`,"git.pushRejectedLease":`Force push rechazado: la rama remota cambió desde la última descarga. Obtenga y revise esos cambios antes de reintentarlo.`,"git.pushFailed":`No se pudo enviar la rama. Abra los detalles para ver la causa.`,"git.pushBlockedByOperation":`Primero termina o aborta la operación {operation} en curso`,"git.pushUpToDate":`Nada que enviar: la rama ya está actualizada en origin`,"git.forcePushHint":`Más seguro que --force: el push se rechaza si el remoto tiene commits que no has visto. Úsalo tras un rebase o amend de commits ya pusheados.`,"git.branchForcePushed":`Rama force-pushed`,"git.pull":`Pull`,"git.pullNoUpstream":`No hay upstream para esta rama — hazle push primero para habilitar Pull.`,"git.sync":`Sync`,"git.createPrNoRemote":`Push la rama primero`,"git.viewRequest":`Ver {request}`,"git.createRequest":`Crear {request}`,"git.changeRequestBase":`Cambiar la rama base de la {request}`,"git.forgeCliMissing":`{cli} no está instalado — instálalo para usar las funciones de {request}`,"git.forgeNotAuthenticated":`No autenticado — ejecuta {cli} auth login`,"settings.forge":`Forge`,"settings.forge.auto":`Detección automática`,"settings.forge.github":`GitHub`,"settings.forge.gitlab":`GitLab`,"settings.forge.bitbucketCommunity":`Bitbucket Community (bkt)`,"settings.forge.none":`Ninguna`,"git.pullConfirmTitle":`¿Pull la rama?`,"git.pullConfirmMessage":`Pull {branch} desde el remoto (solo fast-forward).`,"git.branchPulled":`Rama actualizada`,"git.pullFailed":`Error al hacer pull`,"git.renameBranch":`Renombrar rama`,"git.renameBranchPrompt":"Renombrar `{branch}` a:","git.renameBranchSuccess":"Rama renombrada a `{branch}`","git.renameBranchFailed":`Error al renombrar la rama`,"git.renameBranchExists":"La rama `{branch}` ya existe localmente o en origin","git.diff":`Diff`,"git.diffReview":`Diff`,"git.diffReviewTooltip":`Abre el visor de diff en modo Review — comentarios en línea + envío por lotes al agente`,"pr.baseChanged":`Base de la PR cambiada: {oldBase} → {newBase}`,"pr.openPr":`Abrir PR`,"pr.openWorkspace":`Abrir el workspace`,"pr.dismiss":`Cerrar`,"git.rebase":`Rebase`,"git.rebaseConfirmTitle":`¿Rebase de la rama?`,"git.rebaseConfirmMessage":`Rebase sobre {branch}. Pueden surgir conflictos.`,"git.rebaseSuccess":`Rebase completado`,"git.rebaseFailed":`Rebase fallido`,"git.merge":`Merge`,"git.fetch":`Fetch`,"git.fetchSuccess":`Repositorio actualizado`,"git.fetchFailed":`Fallo al hacer fetch: {error}`,"git.mergeConfirmTitle":`¿Fusionar la rama?`,"git.mergeConfirmMessage":`Fusionar {branch} en esta rama. Puede haber conflictos.`,"git.mergeSuccess":`Merge completado`,"git.mergeFailed":`Merge fallido`,"git.commitFailed":`Commit fallido`,"git.commitChanges":`Confirmar cambios`,"git.commitDialogTitle":`Confirmar cambios sin confirmar`,"git.commitDialogDescription":`Escribe tu mensaje o pide al agente que revise y cree el commit.`,"git.commitMessage":`Mensaje de commit`,"git.commitManual":`Confirmar`,"git.commitWithAgent":`Pedir al agente`,"git.commitAgentSuccess":`Solicitud de commit enviada al agente`,"git.discardFailed":`Descarte fallido`,"git.conflictTitleMerge":`Conflictos de merge detectados`,"git.conflictTitleRebase":`Conflictos de rebase detectados`,"git.operationPausedTitle":`Operación Git para continuar`,"git.operationPausedSubtitle":`No hay archivos en conflicto. Git solo espera que continúes la operación.`,"git.conflictSubtitle":`{count} archivo(s) con conflictos. Elige cómo continuar.`,"git.conflictAbortConfirmTitle":`¿Descartar la resolución del conflicto?`,"git.conflictAbortConfirmMessage":`Todo lo que has resuelto en este {op} se descarta y el worktree vuelve a su estado anterior. Es irreversible.`,"git.conflictAbort":`Abortar`,"git.conflictContinue":`Continuar`,"git.conflictContinued":`Operación Git continuada`,"git.conflictResolveWithAgent":`Pedir al agente que resuelva`,"git.conflictAborted":`Operación abortada`,"git.conflictHandoffSuccess":`El agente está resolviendo los conflictos`,"git.dirtyTitleRebase":`Cambios sin confirmar bloquean el rebase`,"git.dirtyTitleMerge":`Cambios sin confirmar bloquean el merge`,"git.dirtyTitlePull":`Cambios sin confirmar bloquean el pull`,"git.dirtySubtitle":`{modified} modificado(s), {staged} preparado(s), {untracked} sin seguimiento. Elige cómo continuar.`,"git.dirtyStash":`Stash y reintentar`,"git.dirtyCommit":`Commit primero`,"git.dirtyCommitPlaceholder":`Mensaje del commit`,"git.dirtyCommitConfirm":`Commit y reintentar`,"git.dirtyDiscard":`Descartar cambios`,"git.dirtyDiscardConfirmTitle":`¿Descartar todos los cambios sin confirmar?`,"git.dirtyDiscardConfirmMessage":`Los cambios con seguimiento se perderán (git reset --hard). Los archivos sin seguimiento se conservan. Acción irreversible.`,"git.pushConfirmTitle":`¿Pushar la rama?`,"git.pushConfirmMessage":`Pushar {branch} al remoto.`,"git.pushConfirmMessagePrefix":`Pushar la rama`,"git.pushConfirmMessageSuffix":`al remoto.`,"git.changePrBaseTitle":`Cambiar rama base`,"git.changePrBaseMessage":`Ingrese la nueva rama destino para el {request}.`,"git.changePrBaseSuccess":`Rama base de la {request} actualizada`,"git.changePrBaseFailed":`No se pudo cambiar la rama base de la {request}`,"git.mergeRequest":`Fusionar {request}`,"git.mergeRequestConfirmTitle":`¿Fusionar {request}?`,"git.mergeRequestConfirmMessage":`Esto fusionará la {request} abierta en su rama de destino.`,"git.mergeRequestSuccess":`{request} fusionada`,"git.mergeRequestFailed":`No se pudo fusionar {request}`,"git.deleteRemoteBranch":`Eliminar rama remota`,"git.deleteRemoteBranchTitle":`¿Eliminar rama remota?`,"git.deleteRemoteBranchMessage":`La solicitud se fusionó. ¿Eliminar la rama remota {branch}?`,"git.deleteRemoteBranchSuccess":`Rama remota {branch} eliminada`,"git.deleteRemoteBranchFailed":`No se pudo eliminar la rama remota`,"git.changeSourceBranch":`Cambiar la rama de origen`,"git.changeSourceBranchTitle":`Cambiar la rama de origen`,"git.changeSourceBranchMessage":`Elige la nueva rama de origen. La rama de trabajo se reconstruirá encima.`,"git.changeSourceBranchDone":`Rama de origen cambiada a {branch}`,"git.changeSourceBranchAligned":`Rama de origen cambiada a {branch} (la rama no tenía commits propios)`,"git.changeSourceBranchTooMany":`La rama tiene demasiados commits propios ({n}) — rebásala manualmente`,"git.changeSourceBranchDirty":`Haz commit o stash de tus cambios antes de cambiar la rama de origen`,"git.changeSourceBranchAgentRunning":`Detén el agente antes de cambiar la rama de origen`,"git.changeSourceBranchErrorTitle":`Error al cambiar la rama de origen`,"git.changeSourceBranchErrorOngoing":`Una operación {op} sigue en curso en el worktree. Cancélala para volver a un estado limpio.`,"git.changeSourceBranchErrorAbort":`Cancelar la operación`,"git.changeSourceBranchLoading":`Cambiando la rama de origen…`,"git.changeSourceForcePushTitle":`¿Forzar el push de la rama reescrita?`,"git.changeSourceForcePushMessage":`El historial de la rama se reescribió. ¿Hacer force-push al remoto con --force-with-lease?`,"git.changeSourceForcePushDone":`Rama enviada con force-push`,"git.openEditor":`Abrir en editor`,"git.openEditorFailed":`No se pudo abrir el editor`,"git.branchPushed":`Rama enviada`,"git.pushFirst":`La rama no está en el remoto. Haz Push primero.`,"git.unpushedCommits":`Los commits locales no están enviados. Haz Push primero.`,"git.from":`desde`,"git.aheadBehindTooltip":`{ahead} commits por delante, {behind} por detrás de {source}`,"git.divergence.title":`Divergencia de rama`,"git.divergence.subtitle":`vs {source}`,"git.divergence.ahead":`↑ {count} por delante`,"git.divergence.behind":`↓ {count} por detrás`,"git.divergence.empty.ahead":`Sin commits por delante.`,"git.divergence.empty.behind":`Sin commits por detrás.`,"git.divergence.close":`Cerrar`,"git.divergence.loading":`Cargando commits…`,"git.divergence.failed":`No se pudo cargar la divergencia`,"git.divergence.retry":`Reintentar`,"git.prCreated":`{request} #{n} creada`,"git.pr.author":`Autor`,"git.pr.reviewers":`Revisores`,"git.pr.assignees":`Asignados`,"git.pr.labels":`Etiquetas`,"git.pr.changesRequestedBadge":`Cambios solicitados`,"git.pr.approvedBadge":`Aprobada`,"git.pr.ci.passed":`CI OK`,"git.pr.ci.failed":`CI fallida`,"git.pr.ci.pending":`CI en curso`,"git.pr.ci.failedCount":`{n} fallido(s)`,"git.pr.ci.pendingCount":`{n} en curso`,"git.pr.ci.passedCount":`{n} OK`,"git.pr.ci.skippedCount":`{n} omitido(s)`,"git.pr.ci.showPassed":`Mostrar {n} jobs OK`,"git.pr.ci.hidePassed":`Ocultar los jobs OK`,"toast.prChangesRequested":`Se solicitaron cambios en la PR #{n}`,"toast.prApproved":`La PR #{n} ha sido aprobada`,"toast.prReadyToMerge":`La PR #{n} está lista para merge`,"toast.prCiFailed":`La CI de la PR #{n} ha fallado`,"toast.prCiRecovered":`La CI de la PR #{n} se ha recuperado`,"toast.prMergeConflict":`La PR #{n} tiene conflictos de merge`,"toast.prMerged":`La PR #{n} se ha fusionado`,"devServer.title":`Servidor de desarrollo`,"devServer.noWorkspace":`Ningún workspace seleccionado`,"devServer.notConfigured":`No configurado —`,"devServer.goToSettings":`Ajustes`,"devServer.logs":`Logs`,"devServer.running":`En ejecución`,"devServer.starting":`Iniciando`,"devServer.stopping":`Deteniendo`,"devServer.error":`Error`,"devServer.stopped":`Detenido`,"devServer.unknown":`Desconocido`,"devServer.containers":`{count} contenedor | {count} contenedores`,"devServer.logDialog.title":`Logs del servidor de desarrollo`,"devServer.logDialog.empty":`No hay logs disponibles`,"notion.title":`Notion`,"tasks.title":`Tareas`,"notion.addTask":`Añadir tarea`,"notion.noUrl":`Sin URL de Notion`,"notion.subtasks":`{done}/{total} subtareas`,"notion.noTasks":`Sin tareas`,"notion.newTask":`Nueva tarea... (Enter para añadir, Esc para cancelar)`,"acceptance.title":`Criterios de aceptación`,"acceptance.addCriterion":`Añadir criterio`,"acceptance.newCriterion":`Nuevo criterio... (Enter para añadir, Esc para cancelar)`,"acceptance.empty":`Sin criterios de aceptación`,"tasks.askProgress":`Pedir al agente que revise el progreso`,"agentTodos.title":`Tareas del agente`,"agentTodos.empty":`Sin tareas del agente`,"subagents.title":`Sub-agentes`,"subagents.empty":`Aún no hay actividad de sub-agentes`,"subagents.tools":`{count} herramientas`,"subagents.running":`En ejecución: `,"subagents.status.running":`En ejecución`,"subagents.status.done":`Completado`,"subagents.status.failed":`Fallido`,"subagents.status.stopped":`Detenido`,"subagents.ambient":`Vigilancia en segundo plano`,"subagents.ambientTooltip":`Vigilancia en segundo plano (p. ej. Monitor): no cuenta como actividad del agente`,"subagents.stop":`Detener este sub-agente`,"subagents.stopAll":`Detener todos`,"subagents.stopFailed":`No se pudo detener el sub-agente: {error}`,"subagents.activity":`Actividad del subagente`,"subagents.noActivity":`Aún no hay actividad visible del proveedor`,"chat.subagentActivity":`Actividad del subagente`,"chat.openSubagentActivity":`Abrir este subagente en el panel lateral`,"stats.resetsAt":`Reset {value}`,"stats.usageBucket":`Bucket de uso {n}`,"quotaFooter.lastUpdated":`Última actualización: {time}`,"quotaFooter.empty":`Cargando…`,"quotaFooter.popover.title":`Uso de Claude Code`,"quotaFooter.popover.refreshNow":`Actualizar`,"quotaFooter.popover.resetsIn":`Se reinicia a las {value}`,"quotaFooter.popover.unauthenticated":`Auth requerida`,"quotaFooter.popover.unauthenticatedHint":`Ejecuta "claude" una vez para autenticarte.`,"quotaFooter.popover.error":`Error`,"quotaFooter.bucket.fiveHour":`5 horas`,"quotaFooter.bucket.sevenDay":`7 días`,"agent.error.spawn_failed":`No se pudo iniciar el agente`,"agent.error.parse_error":`No se pudo analizar un mensaje del agente`,"agent.error.rate_limit":`Límite de tasa alcanzado`,"agent.error.resume_failed":`Sesión no encontrada — iniciando sesión nueva`,"agent.error.other":`Error del agente`,"quotaBackoff.banner.title":`Reanudación automática a las {time}`,"quotaBackoff.banner.transientTitle":`Reanudación automática tras interrupción a las {time}`,"quotaBackoff.resumeNow":`Reanudar ahora`,"quotaBackoff.banner.tooltip":`Cuota de Claude agotada. El auto-loop se reanudará automáticamente cuando la cuota se restablezca a las {resets_at}.`,"quotaBackoff.banner.cancel":`Cancelar reanudación`,"quotaBackoff.cancelled":`Reanudación automática cancelada — puedes reanudar manualmente cuando quieras`,"rateLimitType.fiveHour":`Sesión 5h`,"rateLimitType.sevenDay":`Semanal`,"tooltip.addTask":`Añadir tarea`,"tooltip.removeTask":`Eliminar tarea`,"tooltip.addCriterion":`Añadir criterio`,"tooltip.removeCriterion":`Eliminar criterio`,"tooltip.startDevServer":`Iniciar servidor de desarrollo`,"tooltip.stopDevServer":`Detener servidor de desarrollo`,"tooltip.closeDiffViewer":`Cerrar visor de diff`,"tooltip.refreshLogs":`Actualizar logs`,"tooltip.closeDialog":`Cerrar`,"tooltip.refreshGitStats":`Actualizar estadísticas Git`,"tooltip.removeImage":`Eliminar imagen`,"tooltip.sendMessage":`Enviar mensaje`,"tools.title":`Herramientas`,"tools.runSetupScript":`Volver a ejecutar script de setup`,"tools.runSetupScriptTooltip":`Ejecutar el script de setup del proyecto en el worktree`,"tools.runSetupScriptConfirm":`¿Volver a ejecutar el script de setup en este workspace? Los artefactos existentes pueden ser sobrescritos.`,"tools.runSetupScriptBusy":`No se puede volver a ejecutar el setup mientras el agente está trabajando.`,"tools.noSetupScript":`Ningún script de setup configurado —`,"tools.setupScriptSuccess":`Script de setup completado con éxito.`,"tools.setupScriptFailed":`Falló el script de setup.`,"tools.openNotion":`Abrir en Notion`,"tools.openSentry":`Abrir en Sentry`,"tools.review":`Revisar cambios`,"tools.reviewTooltip":`Pedir al agente que revise los cambios de esta rama`,"tools.reviewBusy":`Agente ocupado — espera a que esté libre`,"tools.fixCi":`Reparar CI`,"tools.fixCiTooltip":`Pedir al agente que diagnostique y arregle los jobs de CI que fallan`,"tools.fixCiLaunched":`Acción «Reparar CI» enviada al agente`,"tools.fixCiFailed":`No se pudo lanzar la acción «Reparar CI»`,"tools.openFileManager":`Abrir en el explorador de archivos`,"tools.openFileManagerTooltip":`Abrir la carpeta del worktree en tu explorador de archivos configurado`,"tools.openFileManagerFailed":`No se pudo abrir el explorador de archivos`,"tools.openTerminal":`Abrir en terminal`,"tools.openTerminalTooltip":`Abrir el worktree en tu terminal configurada`,"tools.openTerminalFailed":`No se pudo abrir la terminal`,"review.title":`Iniciar revisión`,"review.subtitle":`Pide al agente que revise tus cambios y dé feedback.`,"review.additionalInstructions":`Instrucciones adicionales (opcional)`,"review.additionalInstructionsPlaceholder":`Añade instrucciones específicas para la revisión…`,"review.newSession":`Nueva sesión`,"review.newSessionHint":`Inicia una sesión nueva en vez de continuar la actual.`,"review.newSessionRequired":`Cambiar los ajustes del agente o volver automáticamente requiere una nueva sesión.`,"review.returnToSession":`Volver a la sesión actual después de la revisión`,"review.returnToSessionHint":`Reanuda esta sesión con el resumen final del revisor. Si se desactiva, la conversación continúa en la sesión de revisión.`,"review.readOnlyForced":`Una review que vuelve a esta sesión se ejecuta en solo lectura (Plan): no puede modificar archivos ni hacer preguntas.`,"review.returnUnavailable":`La sesión actual debe haberse iniciado para poder reanudarla.`,"review.start":`Iniciar revisión`,"review.cancel":`Cancelar`,"review.launched":`Revisión iniciada`,"review.failed":`No se pudo iniciar la revisión`,"diff.title":`Diff`,"diff.side":`Lado a lado`,"diff.inline":`En línea`,"diff.hideUnchanged":`Ocultar código sin cambios`,"diff.showUnchanged":`Mostrar código sin cambios`,"diff.showUntracked":`Mostrar archivos no rastreados`,"diff.hideUntracked":`Ocultar archivos no rastreados`,"diff.rollbackToRemote":`Restaurar a la versión remota`,"diff.rollbackConfirm":`¿Restaurar {path} a su versión remota (origin)? Los cambios locales en este archivo se perderán.`,"diff.rollbackConfirmOk":`Restaurar`,"diff.rollbackDone":`Archivo restaurado a la versión remota`,"diff.rollbackDoneRemote":`Archivo restaurado a la versión remota`,"diff.rollbackDoneHead":`Cambios locales descartados (archivo restaurado al último commit)`,"diff.rollbackDoneDeleted":`Archivo no rastreado eliminado`,"diff.deleteUntracked":`Eliminar archivo no rastreado`,"diff.deleteUntrackedConfirm":`¿Eliminar definitivamente {path}? Este archivo no está rastreado por git — su contenido se perderá.`,"diff.deleteUntrackedConfirmOk":`Eliminar`,"diff.rollbackFailed":`Falló el rollback`,"diff.rollbackFailedDetail":`Rollback fallido: {error}`,"diff.modeInspect":`Editar`,"diff.modeReview":`Review`,"diff.addComment":`Añadir comentario`,"diff.replyComment":`Responder`,"diff.editComment":`Editar`,"diff.deleteComment":`Eliminar`,"diff.deleteCommentConfirm":`¿Eliminar este comentario?`,"diff.commentPlaceholder":`Escribe un comentario de revisión… (Markdown soportado)`,"diff.reviewDraft":`Borrador de revisión`,"diff.reviewEmpty":`Aún no hay comentarios — pasa el cursor sobre una línea del diff y haz clic en + para añadir uno.`,"diff.reviewGlobalPlaceholder":`Mensaje general de revisión (opcional)`,"diff.submitReview":`Enviar revisión ({n})`,"diff.reviewPending":`Ya se está enviando una revisión.`,"diff.reviewEmptySubmission":`La revisión está vacía.`,"diff.reviewNotAccepted":`El mensaje no fue aceptado. Tu revisión se ha conservado.`,"diff.reviewSubmitted":`Revisión enviada al agente`,"diff.reviewSubmitFailed":`No se pudo enviar la revisión: {error}`,"diff.scopeBranch":`Branch`,"diff.scopeUnpushed":`Sin pushear`,"diff.noChanges":`Sin cambios`,"diff.searchFiles":`Buscar archivos…`,"diff.noFileMatch":`Ningún archivo coincide`,"diff.selectFile":`Selecciona un archivo para ver el diff`,"diff.fileLoadFailed":`No se pudo cargar este diff`,"diff.fileLoadFailedHint":`El archivo en disco está intacto — solo falló la carga del diff.`,"diff.fileListLoadFailed":`No se pudo cargar la lista de archivos`,"diff.fileListLoadFailedHint":`Es un fallo de la petición, no una rama sin cambios.`,"diff.addToChat":`Añadir al chat`,"diff.compareTitle":`Comparar commits`,"diff.compareFrom":`Desde`,"diff.compareTo":`Hasta`,"diff.compareSubmit":`Comparar`,"diff.compareSourceBase":`{branch} (base de la rama)`,"diff.commitsReadOnly":`solo lectura`,"diffViewer.save":`Guardar`,"diffViewer.savedAt":`Guardado`,"diffViewer.saveFailed":`Error al guardar`,"diffViewer.saveFailedDetail":`Error al guardar: {error}`,"diffViewer.unsavedChanges.title":`Cambios sin guardar`,"diffViewer.unsavedChanges.message":`Tienes cambios sin guardar. ¿Qué quieres hacer?`,"diffViewer.unsavedChanges.save":`Guardar`,"diffViewer.unsavedChanges.cancel":`Cancelar`,"diffViewer.conflict.title":`Archivo modificado en disco`,"diffViewer.conflict.message":`El archivo fue modificado fuera de Kōbō desde que lo abriste.`,"diffViewer.conflict.reload":`Recargar (descartar cambios locales)`,"diffViewer.conflict.keep":`Mantener los míos`,"diffViewer.conflict.overwrite":`Sobrescribir de todos modos`,"diffViewer.conflict.overwriteHint":`Reemplaza el archivo del disco por tu versión. El otro cambio se pierde.`,"diffViewer.conflict.keepHint":`Mantiene tus cambios en el editor y adopta la nueva firma del disco, para que el próximo guardado funcione.`,"diffViewer.saveBlocked":`El agente está en marcha — detenlo para guardar tus cambios.`,"diffViewer.unsavedBanner":`Cambios sin guardar. Detén el agente para guardarlos.`,"diffViewer.closeConfirm.title":`Cambios sin guardar`,"diffViewer.closeConfirm.message":`Este archivo tiene cambios que nunca se guardaron. Cerrar el visor de diferencias los descarta.`,"diffViewer.closeConfirm.discard":`Cerrar sin guardar`,"diffViewer.criteriaRail":`Checklist de revisión`,"diffViewer.criteriaRailShow":`Mostrar la checklist de revisión`,"diffViewer.criteriaRailHide":`Ocultar la checklist de revisión`,"diffViewer.fileTreeShow":`Mostrar el árbol de archivos`,"diffViewer.fileTreeHide":`Ocultar el árbol de archivos`,"diffViewer.closeConfirm.saveAndClose":`Guardar y cerrar`,"diffViewer.agentRunning":`El agente está activo — detenlo para editar`,"diffViewer.fileDeleted":`Archivo eliminado`,"notification.agentFinished":`{name} — Agente terminado`,"notification.agentQuestion":`{name} — El agente hace una pregunta`,"notification.awaitingReminder":`{name} - sigue esperándote ({minutes} min)`,"notification.agentPermissionRequest":`{name} — El agente solicita un permiso`,"notification.autoLoopCompleted":`{name} — Auto-loop completado`,"notification.autoLoopWaitingForSlot":`{name} - El auto-loop espera un slot de agente libre ({running}/{limit} en curso)`,"notification.autoLoopStalled":`{name} — Auto-loop bloqueado (sin progreso)`,"notification.autoLoopError":`{name} — Auto-loop detenido por error`,"notification.autoLoopAwaitingClarification":`{name} — Auto-loop en pausa, esperando tu aclaración`,"notification.autoLoopPermissionOverridden":`{name} — Auto-loop forzó el modo plan a bypass`,"notification.agentError":`{name} — Error del agente`,"contextMenu.rename":`Renombrar`,"contextMenu.editDescription":`Editar la descripción`,"contextMenu.copyPath":`Copiar ruta del worktree`,"contextMenu.copyWorkspaceId":`Copiar ID del workspace`,"contextMenu.openEditor":`Abrir en editor`,"contextMenu.openFileManager":`Abrir en el explorador de archivos`,"contextMenu.unarchiveDisabledPurged":`Restaura primero el worktree con Restaurar worktree o recréalo manualmente. Kōbō detecta automáticamente los worktrees correspondientes.`,"workspaceList.unarchiveBlockedPurged":`Restaura primero el worktree con Restaurar worktree o recréalo manualmente. Kōbō detecta automáticamente los worktrees correspondientes.`,"contextMenu.purgeWorktree":`Liberar espacio en disco (borrar worktree)`,"contextMenu.purgeWorktreeTooltip":`Borra el worktree del disco para recuperar espacio — el historial de mensajes y sesiones se conserva. Archiva automáticamente el workspace.`,"contextMenu.purgeWorktreeDialogTitle":`¿Liberar espacio en disco?`,"contextMenu.purgeWorktreeDialogMessage":`La carpeta del worktree de «{name}» será eliminada del disco. El historial de mensajes y sesiones se conserva. El workspace se archivará automáticamente. Esta acción no se puede deshacer en la versión actual.`,"contextMenu.purgeWorktreeDialogConfirm":`Borrar el worktree`,"contextMenu.purgeWorktreeSuccess":`Worktree borrado — espacio en disco recuperado.`,"settings.autoPurgeOnPrMerged":`Borrar worktree al mergear la PR`,"settings.autoPurgeOnPrMergedHint":`Cuando está activado, el worktree se borra del disco en cuanto se mergea la PR (además del archivado automático). El historial de mensajes se conserva.`,"settings.autoLoopMaxRetries":`Máximo de reintentos automáticos`,"settings.awaitingUserReminder":`Recordatorio de pregunta sin responder`,"settings.awaitingUserReminderHint":`Minutos que un workspace puede esperar tu respuesta antes de que Kōbō te avise, y luego en cada intervalo siguiente. 0 lo desactiva.`,"settings.localeLoadFailed":`No se pudo cargar ese idioma; se mantiene el actual.`,"settings.autoLoopMaxRetriesHint":`Pausa la misión tras este número de fallos temporales del motor o del servidor. Las cuotas esperan su restablecimiento y no consumen este límite.`,"settings.retentionTitle":`Retención del historial de conversación (desactivada por defecto)`,"settings.retentionWarning":`Activar esta opción elimina definitivamente de la base de datos el historial de conversación de los agentes, empezando por todo lo que ya sea más antiguo que la ventana. Los eventos eliminados no se pueden recuperar.`,"settings.retentionHint":`Se ejecuta una vez al arrancar el servidor. Los workspaces, tareas, sesiones, branches y worktrees nunca se tocan — solo la salida registrada de los agentes.`,"settings.retentionDaysLabel":`Eliminar eventos más antiguos de (días)`,"settings.retentionDaysHint":`0 — el valor por defecto — conserva todos los eventos indefinidamente. Indica un valor para activar la retención.`,"settings.retentionKeepLabel":`Eventos siempre conservados por workspace`,"settings.retentionKeepHint":`Los eventos más recientes de cada workspace sobreviven sea cual sea su antigüedad, para que un workspace antiguo pero aún abierto conserve un historial legible. Sugerido: 5000.`,"settings.retentionDisabledHint":`Retención desactivada: nunca se eliminará nada.`,"settings.retentionConfirmTitle":`¿Eliminar definitivamente el historial de conversación?`,"settings.retentionConfirmMessage":`Conservar solo {days} día(s) de historial eliminará definitivamente, en el próximo arranque del servidor, {count} de los {total} eventos de agente registrados — incluido todo lo que ya sea más antiguo. Es irreversible. ¿Continuar?`,"settings.retentionConfirmMessageUnknown":`Conservar solo {days} día(s) de historial eliminará definitivamente, en el próximo arranque del servidor, todos los eventos de agente más antiguos — incluido todo lo ya acumulado. No se ha podido calcular el volumen exacto. Es irreversible. ¿Continuar?`,"settings.purgeDocsTitle":`Cómo funciona el borrado — restauración y permisos`,"settings.purgeDocsRestoreTitle":`Restaurar un worktree borrado (detección automática)`,"settings.purgeDocsRestoreIntro":`Un workspace borrado conserva su historial de chat y los metadatos de la PR, pero la carpeta worktree ya no existe. Recréala manualmente con uno de estos comandos — Kōbō detecta la reaparición de la carpeta en menos de 30 segundos y reactiva automáticamente el workspace (desarchivar + limpiar flag de borrado):`,"settings.purgeDocsRestoreCommands":`# GitHub (con CLI gh):
|
|
11
|
+
# tu script — usa $KOBO_NEW_BASE / $KOBO_OLD_BASE / $KOBO_WORKING_BRANCH …`,"settings.changeSourceBranchScript.resetDefault":`Restablecer al predeterminado de Kōbō`,"settings.changeSourceBranchScript.replaceConfirmTitle":`¿Restablecer el script?`,"settings.changeSourceBranchScript.replaceConfirm":`Tus modificaciones se reemplazarán por el script predeterminado de Kōbō. ¿Continuar?`,"settings.cleanupScriptHint":`Script de shell ejecutado en el worktree después de cada sesión del agente. En modo auto-loop solo se ejecuta cuando todas las tareas están terminadas. Dejar vacío para desactivar.`,"settings.cleanupScriptPlaceholder":`p. ej. eliminar archivos temporales, detener contenedores…`,"settings.cleanupScriptMode":`Cuándo ejecutar`,"settings.cleanupScriptMode.idle":`Después de cada sesión — aunque queden tareas`,"settings.cleanupScriptMode.noTasks":`Solo cuando no queda ninguna tarea de Kōbō`,"settings.cleanupScriptOnlyOnChanges":`Ejecutar solo si se modificaron, añadieron o eliminaron archivos`,"settings.cleanupScriptMode.inherit":`Heredar la configuración global`,"settings.taskPromptTemplate":`Prompt de tarea`,"settings.taskPromptTemplatePlaceholder":`Prompt insertado automáticamente en la descripción de la tarea…`,"settings.taskPromptTemplateHint":`Se inyecta automáticamente en la descripción de la tarea en la página de creación cuando este proyecto está seleccionado. Si no se modifica, se reemplaza al cambiar de proyecto; en cuanto lo editas, se conserva tu texto.`,"settings.setupScriptPlaceholder":`npm install`,"settings.setupScriptHint":`Se ejecuta con bash en el worktree después de su creación, antes de que el agente inicie. No necesita shebang. Si falla, el workspace se establece en error. Timeout: 5 minutos.`,"settings.e2e.title":`Tests E2E`,"settings.e2e.framework":`Framework`,"settings.e2e.frameworkNone":`Ninguno`,"settings.e2e.frameworkOther":`Otro`,"settings.e2e.skill":`Skill (opcional)`,"settings.e2e.skillPlaceholder":`p. ej. cypress-tester`,"settings.e2e.prompt":`Guía personalizada (opcional)`,"settings.e2e.promptPlaceholder":`p. ej. usar el patrón page-object, apuntar a data-testid`,"settings.e2e.helpText":`Cuando está configurado, el agente de grooming auto-loop inserta subtareas E2E para funciones UI.`,"settings.finalization.title":`Finalización del auto-loop`,"settings.finalization.helpText":`Opcional: un prompt que el agente ejecuta como la última iteración del auto-loop. Típicamente usado para controles de calidad finales (lint, typecheck, tests). La fase de grooming creará una tarea con prefijo [FINAL] que usará este prompt.`,"settings.finalization.prompt":`Prompt de finalización`,"settings.finalization.promptPlaceholder":`p. ej. Ejecuta npm run lint y npm test, luego marca esta tarea como hecha.`,"settings.editorCommand":`Comando del editor`,"settings.editorCommandPlaceholder":`code, phpstorm, subl, vim...`,"settings.editorCommandHint":`Comando para abrir el worktree en su editor. La ruta del worktree se pasa como argumento.`,"settings.fileManagerCommand":`Comando del explorador de archivos`,"settings.fileManagerCommandPlaceholder":`xdg-open, open, nautilus, dolphin, explorer...`,"settings.fileManagerCommandHint":`Comando para abrir el worktree en su explorador de archivos. La ruta del worktree se pasa como argumento. Déjalo vacío para ocultar el botón.`,"settings.terminalCommand":`Comando de terminal`,"settings.terminalCommandHint":`Comando para abrir tu terminal en el worktree. Marcador {path} opcional para el directorio.`,"settings.terminalCommandPlaceholder":`kitty · alacritty · gnome-terminal --working-directory={path}`,"settings.mcpSelection":`Selección MCP de Claude`,"settings.mcpAutoSelect":`Auto (primer MCP activo que coincide)`,"settings.notionMcp":`Clave MCP de Notion`,"settings.sentryMcp":`Clave MCP de Sentry`,"settings.mcpSelectionHint":`Las entradas activas se leen desde ~/.claude.json. Deja Auto para usar el comportamiento por defecto.`,"settings.configuredProjects":`Proyectos configurados`,"settings.noProjects":`No hay proyectos configurados`,"settings.addProject":`Añadir proyecto`,"settings.copyFrom":`Copiar ajustes desde`,"settings.copyFromPlaceholder":`(ninguno — partir de los valores por defecto)`,"settings.copyFromHint":`Copia todos los ajustes excepto path, nombre y rama fuente.`,"settings.copyFromConfirmTitle":`¿Sobrescribir los valores actuales?`,"settings.copyFromConfirm":`Se sobrescribirán los valores del formulario con los ajustes de «{project}». ¿Continuar?`,"settings.newProject":`Nuevo proyecto`,"settings.editProject":`Editar proyecto`,"help.title":`Ayuda`,"help.tours":`Visitas guiadas`,"help.steps":`{n} paso | {n} pasos`,"help.markAllSeen":`Marcar todas como vistas`,"help.markAllSeenHint":`Marca las visitas actuales como vistas sin iniciarlas.`,"help.resetAll":`Restablecer todas las visitas`,"help.resetAllHint":`Inicia ahora la visita de inicio; cada pantalla repetirá la suya al abrirla de nuevo.`,"help.status.unseen":`no vista`,"help.status.partial":`en parte`,"help.status.seen":`vista`,"help.replayThis":`Repetir la visita de esta pantalla`,"tours.next":`Siguiente`,"tours.prev":`Atrás`,"tours.done":`Terminar`,"tours.exitConfirm":`¿Salir de la visita guiada? No volverá a iniciarse sola; puedes repetirla cuando quieras desde el menú Ayuda.`,"tours.home.title":`Orientarse`,"tours.home.list.title":`Workspaces`,"tours.home.list.description":`Cada misión vive aquí con su estado. Los badges señalan una CI fallida, una review que pide cambios o una PR lista para merge. Arrastra el borde interior de un panel lateral con el ratón o el dedo para cambiar su tamaño. Los botones superiores se distribuyen en varias líneas si falta espacio.`,"tours.home.create.title":`Crear un workspace`,"tours.home.create.description":`Un workspace es un worktree de Git, una rama y una sesión de agente para una tarea.`,"tours.home.search.title":`Búsqueda`,"tours.home.search.description":`Filtra la lista por nombre. El icono de búsqueda de arriba abre la búsqueda de texto completo en las conversaciones de los agentes.`,"tours.home.dashboard.title":`Panel`,"tours.home.dashboard.description":`Una tabla con todos los workspaces activos: estado, atención, PR, diff, actividad y la fiabilidad de los motores.`,"tours.home.health.title":`Salud y changelog`,"tours.home.health.description":`Comprueba la base de datos, los runtimes y los agentes activos. El botón de al lado lista lo que cambió en cada versión.`,"tours.home.settings.title":`Ajustes`,"tours.home.settings.description":`Motores, integraciones, automatización, worktrees y proyectos. Ahora crea tu primer workspace.`,"tours.create.title":`Crear un workspace`,"tours.create.project.title":`Proyecto y rama`,"tours.create.project.description":`Elige el proyecto y la rama de la que parte el worktree.`,"tours.create.mission.title":`Misión`,"tours.create.mission.description":`Describe la tarea, o impórtala desde una página de Notion o una issue de Sentry.`,"tours.create.template.title":`Templates`,"tours.create.template.description":`Aplica un preset guardado, o guarda este formulario como preset. «Duplicar» en una tarjeta de workspace abre este formulario ya rellenado.`,"tours.create.engine.title":`Motor y modelo`,"tours.create.engine.description":`Claude Code o Codex, el modelo, el esfuerzo de razonamiento y lo que el agente puede hacer sin preguntar.`,"tours.create.brainstorm.title":`Brainstorm en otro modelo`,"tours.create.brainstorm.description":`Ejecuta la primera sesión de brainstorming en otro modelo y vuelve al principal para las iteraciones.`,"tours.create.autoloop.title":`Auto-loop`,"tours.create.autoloop.description":`El agente completa las tareas y las verificaciones finales. Una review final independiente opcional se repite tras las correcciones hasta que no queden hallazgos; si no hay progreso, el bucle se pausa.`,"tours.create.finalReview.title":`Configurar la review final`,"tours.create.finalReview.description":`Elige de antemano el motor, el modelo, el esfuerzo y las instrucciones del reviewer. La review se ejecuta en una sesión separada de solo lectura; el agente original corrige los hallazgos y la review se repite hasta que no quede ninguno.`,"tours.workspace.finalReview.title":`Review final y correcciones`,"tours.workspace.finalReview.description":`Configura aquí el reviewer final opcional antes de iniciarlo. Tras las tareas y las verificaciones finales, una sesión separada revisa el trabajo. Los hallazgos vuelven a la sesión original para corregirlos automáticamente y repetir la review. Cerrar Kōbō conserva el ciclo.`,"tours.workspace.reviewReturn.title":`Volver de una review`,"tours.workspace.reviewReturn.description":`El resumen vuelve a la sesión original incluso tras reiniciar Kōbō. Si la entrega es incierta, consulta esa conversación antes de Reintentar; Cancelar abandona el retorno. Las reviews manuales esperan tus instrucciones antes de corregir; auto-loop corrige automáticamente.`,"tours.create.comparison.title":`Comparar dos motores`,"tours.create.comparison.description":`Crea dos workspaces gemelos sobre la misma tarea y compara sus commits, tareas y actividad.`,"tours.workspace.sessions.title":`Sesiones del workspace`,"tours.workspace.sessions.description":`Pulsa el título para elegir, crear o renombrar una sesión, o copiar su identificador.`,"tours.workspace.actions.title":`Acciones del workspace`,"tours.workspace.actions.description":`El menú ⋯ reúne la vista en paralelo, la paleta de comandos, el panel lateral y la visita guiada.`,"tours.workspace.title":`Dentro de un workspace`,"tours.workspace.chat.title":`Conversación`,"tours.workspace.chat.description":`La salida del agente, en directo: mensajes, llamadas a herramientas, preguntas y errores.`,"tours.workspace.input.title":`Hablar con el agente`,"tours.workspace.input.description":`Envía un mensaje, usa slash commands, dicta por voz o adjunta archivos.`,"tours.workspace.selectors.title":`Ajustes de sesión`,"tours.workspace.selectors.description":`Abre Configurar para ajustar modelo, esfuerzo, permisos y auto-loop. También muestra el motor actual.`,"tours.workspace.status.title":`Estado`,"tours.workspace.status.description":`El estado de la sesión actual; detenla aquí cuando haga falta.`,"tours.workspace.git.title":`Git`,"tours.workspace.git.description":`Commits, diff, push, rebase y la PR de esta rama.`,"tours.workspace.tasks.title":`Tareas`,"tours.workspace.tasks.description":`Lo que el agente planea hacer, y los criterios de aceptación que debe cumplir.`,"tours.workspace.timeline.title":`Cronología`,"tours.workspace.timeline.description":`Todas las sesiones de este workspace; abre una anterior para releerla.`,"tours.workspace.subagents.title":`Subagentes`,"tours.workspace.subagents.description":`Sigue los subagentes que lanzó el agente, con su progreso en directo.`,"tours.workspace.documents.title":`Documentos`,"tours.workspace.documents.description":`Planes y archivos que escribió el agente, consultables sin salir del chat.`,"tours.workspace.schedule.title":`Programación`,"tours.workspace.schedule.description":`Wake-ups y crons que relanzan el agente más tarde.`,"tours.workspace.memory.title":`Memoria del workspace`,"tours.workspace.memory.description":`Consulta la memoria entregada a la conversación seleccionada, las propuestas pendientes y las operaciones del workspace. Borrarla no modifica el historial del proveedor.`,"tours.workspace.handoff.title":`Continuar con un contexto nuevo`,"tours.workspace.handoff.description":`¿Una conversación larga? Inicia aquí una sesión nueva o usa «Cambiar de LLM». El trabajo actual se interrumpe de inmediato y la nueva sesión continúa automáticamente en el mismo workspace. El resumen de traspaso es opcional: desactívalo si el LLM actual ha agotado su cuota. El progreso, el informe y el enlace a la sesión anterior aparecen debajo de este botón.`,"tours.workspace.terminal.title":`Terminal`,"tours.workspace.terminal.description":`Una shell dentro del worktree, sin salir de Kōbō.`,"tours.gitPr.title":`Pull request`,"tours.gitPr.panel.title":`Estado de la PR`,"tours.gitPr.panel.description":`Resultado de la CI, decisión de la review y reviewers, actualizados cada 30 segundos.`,"tours.gitPr.actions.title":`Acciones Git`,"tours.gitPr.actions.description":`Push, pull, rebase o cambiar la rama base. Durante un conflicto, un botón deja que el agente lo resuelva.`,"tours.gitPr.attention.title":`Badges de atención`,"tours.gitPr.attention.description":`La tarjeta muestra una CI fallida, cambios solicitados o una PR lista para merge.`,"tours.settings.title":`Ajustes`,"tours.settings.engines.title":`Motores y modelos`,"tours.settings.engines.description":`Modelos, permisos predeterminados y límites de reintentos automáticos.`,"tours.settings.integrations.title":`Integraciones`,"tours.settings.integrations.description":`Conexiones de Notion y Sentry, y credenciales de Bitbucket. GitHub y GitLab usan tu sesión CLI local.`,"tours.settings.automation.title":`Automatización`,"tours.settings.automation.description":`Scripts de setup y cleanup, lifecycle hooks, templates de prompts, templates de workspace y skills.`,"tours.settings.worktrees.title":`Worktrees`,"tours.settings.memory.title":`Memoria`,"tours.settings.memory.description":`Elige el comportamiento manual, automático o híbrido y explora, revisa o borra los datos exactos de cada ámbito. Las operaciones de memoria son inmediatas; el modo se aplica al guardar los ajustes.`,"tours.settings.worktrees.description":`Dónde viven los worktrees, cuánto tiempo se conservan los ya fusionados, y la purga automática.`,"tours.settings.projects.title":`Proyectos`,"tours.settings.projects.description":`Los proyectos registrados y sus ajustes específicos por proyecto.`,"tours.settings.misc.title":`General, voz, notificaciones, exportación`,"tours.settings.misc.description":`Idioma, acceso a la red, dictado, sonidos y notificaciones del navegador, y una exportación completa de tus ajustes.`,"tours.dashboard.title":`Panel`,"tours.dashboard.overview.title":`Visión general`,"tours.dashboard.overview.description":`Todos los workspaces activos en una tabla; haz clic en una fila para abrirla.`,"tours.dashboard.reliability.title":`Fiabilidad de los motores`,"tours.dashboard.reliability.description":`Sesiones, errores y duraciones por motor y modelo.`,"tours.health.title":`Salud`,"tours.health.checks.title":`Comprobaciones`,"tours.health.checks.description":`Entorno, base de datos, runtimes, workspaces y sesiones.`,"tours.health.active.title":`Estado activo`,"tours.health.active.description":`Los back-offs de cuota, los wake-ups pendientes y los auto-loops en curso en este momento.`,"tours.search.title":`Búsqueda`,"tours.search.input.title":`Consulta`,"tours.search.input.description":`Coincide con nombres de workspaces y conversaciones de agentes.`,"tours.search.archived.title":`Archivados`,"tours.search.archived.description":`Incluir los workspaces archivados en los resultados.`,"tours.changelog.title":`Novedades`,"tours.changelog.list.title":`Versiones`,"tours.changelog.list.description":`Lo que cambió en cada versión, la más reciente primero.`,"settings.projectGroup.identity":`Identidad`,"settings.projectGroup.defaults":`Valores predeterminados`,"settings.projectGroup.prompts":`Prompts`,"settings.projectGroup.scripts":`Scripts`,"settings.projectPath":`Ruta del proyecto`,"settings.projectPathPlaceholder":`/ruta/al/proyecto`,"settings.displayName":`Nombre para mostrar`,"settings.displayNamePlaceholder":`Mi proyecto`,"settings.defaultSourceBranch":`Rama fuente por defecto`,"settings.defaultModel.project":`Modelo por defecto`,"settings.skipPermissions.project":`Omitir solicitudes de permisos`,"settings.prPromptTemplate.project":`Plantilla de prompt PR`,"settings.prPromptPlaceholder.project":`Instrucciones específicas del proyecto para la creación de PRs...`,"settings.reviewPromptTemplate.project":`Plantilla de prompt de revisión`,"settings.ciFixPromptTemplate.project":`Plantilla de prompt «Reparar CI»`,"settings.gitConventions.project":`Convenciones Git (por proyecto)`,"settings.gitConventionsEmpty":`Dejar vacío para usar las convenciones globales.`,"settings.notionStatus":`Estado ticket Notion`,"settings.notionStatusProperty":`Nombre de la propiedad`,"settings.notionStatusPropertyPlaceholder":`État, Status...`,"settings.notionInProgressStatus":`Valor a establecer`,"settings.notionInProgressStatusPlaceholder":`En progreso, In progress...`,"settings.notionStatusHint":`Cuando se crea un workspace con un ticket Notion, la propiedad especificada se establece a este valor. Ambos campos son obligatorios. Dejar vacío para desactivar.`,"settings.notionAssignee":`Asignación Notion`,"settings.notionAssigneeHint":`Cuando se crea un workspace con un ticket Notion, el usuario autenticado en el MCP de Notion se añade a esta propiedad People — solo si aún no tiene un asignado. Dejar vacío para desactivar.`,"settings.notionAssigneeProperty":`Nombre de la propiedad`,"settings.notionAssigneePropertyPlaceholder":`Desarrolladores, Assignees...`,"settings.notionUserId":`Tu UUID de Notion`,"settings.notionUserIdPlaceholder":`135d872b-594c-8126-9604-00024ad6e5b5`,"settings.notionUserIdHint":`Selecciona tu cuenta en la lista. Notion rechaza la asignación de bots en propiedades People — este campo es obligatorio para activar la auto-asignación.`,"settings.notionUsersRefresh":`Refrescar`,"settings.notionUsersLoading":`Cargando usuarios de Notion…`,"settings.notionUsersLoadFailed":`Error al cargar la lista: {error}`,"settings.notionUsersManualFallback":`Lista no disponible — pega tu UUID de Notion manualmente.`,"settings.devServer":`Servidor de desarrollo`,"settings.devServerStart":`Script de inicio`,"settings.devServerStartPlaceholder":`npm run dev`,"settings.devServerStop":`Script de parada`,"settings.devServerStopPlaceholder":`Opcional — el proceso se cerrará automáticamente si está vacío`,"settings.selectProject":`Selecciona un proyecto o añade uno nuevo`,"settings.projectPathRequired":`La ruta del proyecto es obligatoria.`,"settings.useGlobal":`Usar global`,"settings.saved":`Ajustes globales guardados.`,"settings.unsavedChanges":`Cambios sin guardar`,"settings.nav.general":`General`,"settings.nav.agents":`Agentes`,"settings.nav.skills":`Skills`,"settings.nav.prompts":`Prompts`,"settings.nav.scripts":`Scripts`,"settings.nav.workspaceTemplates":`Plantillas de workspace`,"workspaceTemplates.title":`Plantillas de workspace`,"workspaceTemplates.hint":`Preajustes guardados del formulario de creación. Elige uno en la página de creación; para modificarlo, cárgalo allí, ajústalo y guárdalo de nuevo con el mismo nombre.`,"workspaceTemplates.empty":`Todavía no hay plantillas. Rellena el formulario de creación y usa «Guardar como plantilla».`,"workspaceTemplates.anyProject":`Cualquier proyecto`,"workspaceTemplates.rename":`Renombrar`,"workspaceTemplates.renameTitle":`Renombrar la plantilla`,"workspaceTemplates.deleteConfirm":`¿Eliminar la plantilla «{name}»?`,"workspaceTemplates.deleted":`Plantilla «{name}» eliminada`,"settings.nav.notion":`Notion`,"settings.nav.forge":`Forge`,"settings.bitbucketCommunity":`Bitbucket Community`,"settings.bitbucketCommunityHint":`Las credenciales se guardan localmente y solo las usa bkt.`,"settings.bitbucketUsername":`Correo de Atlassian`,"settings.bitbucketToken":`Token API de Bitbucket`,"settings.nav.sentry":`Sentry`,"settings.nav.voice":`Voz`,"settings.nav.notifications":`Notificaciones`,"settings.nav.worktrees":`Worktrees`,"settings.nav.export":`Exportar`,"settings.help.general":`Idioma, acceso a la red y los valores por defecto que hereda cada proyecto.`,"settings.help.agents":`Modelos y permisos predeterminados, y límites de reintentos automáticos.`,"settings.help.skills":`Qué suites de skills se le indica usar al agente.`,"settings.help.prompts":`Instrucciones del agente tras abrir una PR/MR, para revisiones de código, correcciones CI y finalización.`,"settings.help.scripts":`Scripts de setup, limpieza y cambio de rama origen, además de los hooks de ciclo de vida.`,"settings.help.notion":`Importar una página de Notion como fuente de verdad de un workspace.`,"settings.help.sentry":`Crear un workspace a partir de una issue de Sentry.`,"settings.help.forge":`Credenciales de Bitbucket. GitHub y GitLab usan tu CLI gh/glab autenticada; elige la forja por proyecto.`,"settings.help.voice":`Dictado y push-to-talk.`,"settings.help.notifications":`Sonidos, notificaciones del navegador y recordatorio de preguntas sin responder.`,"settings.help.worktrees":`Dónde se crean los worktrees, retención y borrado automático.`,"settings.help.projects":`Proyectos registrados y sus ajustes específicos por proyecto.`,"settings.help.templates":`Plantillas de prompt expandidas en la entrada del chat.`,"settings.help.workspaceTemplates":`Presets guardados del formulario de creación.`,"settings.help.export":`Exportar e importar todos los ajustes como JSON.`,"settings.openNav":`Abrir la navegación`,"settings.saveError":`Error al guardar los ajustes.`,"settings.projectSaved":`Proyecto guardado.`,"settings.projectSaveError":`Error al guardar el proyecto.`,"settings.projectDeleted":`Proyecto eliminado.`,"settings.deleteProjectConfirmTitle":`¿Eliminar proyecto?`,"settings.deleteProjectConfirmMessage":`¿Quitar «{name}» de tus proyectos? Esto solo elimina sus ajustes de Kōbō — tu código y tus worktrees no se modifican.`,"settings.projectDeleteError":`Error al eliminar el proyecto.`,"templates.title":`Plantillas`,"templates.newTemplate":`Nueva plantilla`,"templates.editTemplate":`Editar plantilla`,"templates.deleteTemplate":`Eliminar plantilla`,"templates.deleteConfirm":`¿Eliminar la plantilla '/{slug}'?`,"templates.deleteConfirmMessage":`Esta acción no se puede deshacer.`,"templates.slug":`Slug`,"templates.slugHint":`Minúsculas, dígitos, guiones. Máx. 64 caracteres.`,"templates.slugInvalid":`El slug solo puede contener minúsculas, dígitos y guiones`,"templates.slugDuplicate":`Ya existe una plantilla con este slug`,"templates.description":`Descripción`,"templates.descriptionHint":`Etiqueta corta mostrada en el dropdown.`,"templates.descriptionRequired":`La descripción es obligatoria`,"templates.contentRequired":`El contenido es obligatorio`,"templates.content":`Contenido`,"templates.contentHint":`Contenido de la plantilla. Usa {variable_name} para las sustituciones.`,"templates.availableVars":`Variables disponibles`,"templates.filePath":`Archivo: {path}`,"templates.empty":`Aún no hay plantillas.`,"templates.createFailed":`Error al crear la plantilla`,"templates.updateFailed":`Error al actualizar la plantilla`,"templates.deleteFailed":`Error al eliminar la plantilla`,"templates.save":`Guardar`,"templates.create":`Crear`,"templates.reloadDefaults":`Recargar plantillas predeterminadas`,"templates.reloadDefaultsHint":`Solo añade las plantillas predeterminadas que faltan. Las plantillas existentes (modificadas o no) nunca se sobrescriben.`,"templates.reloadDefaultsConfirmMessage":`Esta acción añadirá a la lista las plantillas predeterminadas que falten. Las plantillas existentes — incluidas las que hayas personalizado — no se tocarán. Si quieres restaurar una plantilla predeterminada que has modificado, elimínala primero y vuelve a ejecutar esta acción.`,"templates.reloadDefaultsSuccess":`{added} añadida(s), {kept} conservada(s)`,"templates.reloadDefaultsFailed":`Error al recargar las plantillas predeterminadas`,"templates.resetToDefault":`Restablecer al valor predeterminado`,"templates.resetConfirmTitle":`¿Restablecer la plantilla al valor predeterminado?`,"templates.resetConfirmMessage":`Esto sobrescribe tus cambios locales en /{slug} con el predeterminado. No se puede deshacer.`,"templates.resetSuccess":`Plantilla /{slug} restablecida al predeterminado`,"templates.resetFailed":`Error al restablecer la plantilla`,"chatInput.dropdownSkills":`Skills de Claude`,"chatInput.dropdownKobo":`Comandos Kōbō`,"chatInput.dropdownTemplates":`Plantillas`,"documents.title":`Documentos`,"documents.empty":`No se encontraron documentos`,"documents.refresh":`Actualizar`,"documents.back":`Volver`,"documents.loadFailed":`Error al cargar el documento`,"git.title":`Git`,"git.outputDialogTitle":`Git informó de un error`,"git.statsFailed":`No se pudo leer el estado de git`,"git.section.repository":`Repositorio`,"git.section.changes":`Cambios`,"git.section.pullRequest":`Pull request`,"git.section.actions":`Acciones`,"git.actions.more":`Más`,"git.localOnly":`solo local`,"git.pushed":`pushed`,"git.unpushed":`{count} sin push`,"git.commits":`{count} commit | {count} commits`,"git.commits.loading":`Cargando commits…`,"git.commits.empty":`Sin commits en esta rama`,"git.commits.pushed":`Pusheado`,"git.commits.unpushed":`Sin pushear`,"git.commits.clickToAppend":`click para agregar SHA al chat`,"git.commits.diffThisCommit":`Diff de este commit (vs padre)`,"git.compareCommits":`Comparar commits…`,"git.files":`{count} archivo | {count} archivos`,"git.staged":`{count} staged`,"git.modified":`{count} modificados`,"git.untracked":`{count} sin seguimiento`,"git.workingTreeEmpty":`Sin cambios sin confirmar`,"git.fileStaged":`Preparado`,"git.fileModified":`Modificado`,"git.fileUntracked":`Sin seguimiento`,"git.push":`Push`,"git.forcePush":`Force push`,"git.forcePushToggle":`Force push (--force-with-lease)`,"git.pushRejectedHistory":`Push rechazado: las ramas local y remota tienen historiales distintos. Después de un rebase de commits publicados, use Force push con confirmación. En otro caso, obtenga e integre los cambios remotos antes de reintentarlo.`,"git.pushRejectedLease":`Force push rechazado: la rama remota cambió desde la última descarga. Obtenga y revise esos cambios antes de reintentarlo.`,"git.pushFailed":`No se pudo enviar la rama. Abra los detalles para ver la causa.`,"git.pushBlockedByOperation":`Primero termina o aborta la operación {operation} en curso`,"git.pushUpToDate":`Nada que enviar: la rama ya está actualizada en origin`,"git.forcePushHint":`Más seguro que --force: el push se rechaza si el remoto tiene commits que no has visto. Úsalo tras un rebase o amend de commits ya pusheados.`,"git.branchForcePushed":`Rama force-pushed`,"git.pull":`Pull`,"git.pullNoUpstream":`No hay upstream para esta rama — hazle push primero para habilitar Pull.`,"git.sync":`Sync`,"git.createPrNoRemote":`Push la rama primero`,"git.viewRequest":`Ver {request}`,"git.createRequest":`Crear {request}`,"git.changeRequestBase":`Cambiar la rama base de la {request}`,"git.forgeCliMissing":`{cli} no está instalado — instálalo para usar las funciones de {request}`,"git.forgeNotAuthenticated":`No autenticado — ejecuta {cli} auth login`,"settings.forge":`Forge`,"settings.forge.auto":`Detección automática`,"settings.forge.github":`GitHub`,"settings.forge.gitlab":`GitLab`,"settings.forge.bitbucketCommunity":`Bitbucket Community (bkt)`,"settings.forge.none":`Ninguna`,"git.pullConfirmTitle":`¿Pull la rama?`,"git.pullConfirmMessage":`Pull {branch} desde el remoto (solo fast-forward).`,"git.branchPulled":`Rama actualizada`,"git.pullFailed":`Error al hacer pull`,"git.renameBranch":`Renombrar rama`,"git.renameBranchPrompt":"Renombrar `{branch}` a:","git.renameBranchSuccess":"Rama renombrada a `{branch}`","git.renameBranchFailed":`Error al renombrar la rama`,"git.renameBranchExists":"La rama `{branch}` ya existe localmente o en origin","git.diff":`Diff`,"git.diffReview":`Diff`,"git.diffReviewTooltip":`Abre el visor de diff en modo Review — comentarios en línea + envío por lotes al agente`,"pr.baseChanged":`Base de la PR cambiada: {oldBase} → {newBase}`,"pr.openPr":`Abrir PR`,"pr.openWorkspace":`Abrir el workspace`,"pr.dismiss":`Cerrar`,"git.rebase":`Rebase`,"git.rebaseConfirmTitle":`¿Rebase de la rama?`,"git.rebaseConfirmMessage":`Rebase sobre {branch}. Pueden surgir conflictos.`,"git.rebaseSuccess":`Rebase completado`,"git.rebaseFailed":`Rebase fallido`,"git.merge":`Merge`,"git.fetch":`Fetch`,"git.fetchSuccess":`Repositorio actualizado`,"git.fetchFailed":`Fallo al hacer fetch: {error}`,"git.mergeConfirmTitle":`¿Fusionar la rama?`,"git.mergeConfirmMessage":`Fusionar {branch} en esta rama. Puede haber conflictos.`,"git.mergeSuccess":`Merge completado`,"git.mergeFailed":`Merge fallido`,"git.commitFailed":`Commit fallido`,"git.commitChanges":`Confirmar cambios`,"git.commitDialogTitle":`Confirmar cambios sin confirmar`,"git.commitDialogDescription":`Escribe tu mensaje o pide al agente que revise y cree el commit.`,"git.commitMessage":`Mensaje de commit`,"git.commitManual":`Confirmar`,"git.commitWithAgent":`Pedir al agente`,"git.commitAgentSuccess":`Solicitud de commit enviada al agente`,"git.discardFailed":`Descarte fallido`,"git.conflictTitleMerge":`Conflictos de merge detectados`,"git.conflictTitleRebase":`Conflictos de rebase detectados`,"git.operationPausedTitle":`Operación Git para continuar`,"git.operationPausedSubtitle":`No hay archivos en conflicto. Git solo espera que continúes la operación.`,"git.conflictSubtitle":`{count} archivo(s) con conflictos. Elige cómo continuar.`,"git.conflictAbortConfirmTitle":`¿Descartar la resolución del conflicto?`,"git.conflictAbortConfirmMessage":`Todo lo que has resuelto en este {op} se descarta y el worktree vuelve a su estado anterior. Es irreversible.`,"git.conflictAbort":`Abortar`,"git.conflictContinue":`Continuar`,"git.conflictContinued":`Operación Git continuada`,"git.conflictResolveWithAgent":`Pedir al agente que resuelva`,"git.conflictAborted":`Operación abortada`,"git.conflictHandoffSuccess":`El agente está resolviendo los conflictos`,"git.dirtyTitleRebase":`Cambios sin confirmar bloquean el rebase`,"git.dirtyTitleMerge":`Cambios sin confirmar bloquean el merge`,"git.dirtyTitlePull":`Cambios sin confirmar bloquean el pull`,"git.dirtySubtitle":`{modified} modificado(s), {staged} preparado(s), {untracked} sin seguimiento. Elige cómo continuar.`,"git.dirtyStash":`Stash y reintentar`,"git.dirtyCommit":`Commit primero`,"git.dirtyCommitPlaceholder":`Mensaje del commit`,"git.dirtyCommitConfirm":`Commit y reintentar`,"git.dirtyDiscard":`Descartar cambios`,"git.dirtyDiscardConfirmTitle":`¿Descartar todos los cambios sin confirmar?`,"git.dirtyDiscardConfirmMessage":`Los cambios con seguimiento se perderán (git reset --hard). Los archivos sin seguimiento se conservan. Acción irreversible.`,"git.pushConfirmTitle":`¿Pushar la rama?`,"git.pushConfirmMessage":`Pushar {branch} al remoto.`,"git.pushConfirmMessagePrefix":`Pushar la rama`,"git.pushConfirmMessageSuffix":`al remoto.`,"git.changePrBaseTitle":`Cambiar rama base`,"git.changePrBaseMessage":`Ingrese la nueva rama destino para el {request}.`,"git.changePrBaseSuccess":`Rama base de la {request} actualizada`,"git.changePrBaseFailed":`No se pudo cambiar la rama base de la {request}`,"git.mergeRequest":`Fusionar {request}`,"git.mergeRequestConfirmTitle":`¿Fusionar {request}?`,"git.mergeRequestConfirmMessage":`Esto fusionará la {request} abierta en su rama de destino.`,"git.mergeRequestSuccess":`{request} fusionada`,"git.mergeRequestFailed":`No se pudo fusionar {request}`,"git.deleteRemoteBranch":`Eliminar rama remota`,"git.deleteRemoteBranchTitle":`¿Eliminar rama remota?`,"git.deleteRemoteBranchMessage":`La solicitud se fusionó. ¿Eliminar la rama remota {branch}?`,"git.deleteRemoteBranchSuccess":`Rama remota {branch} eliminada`,"git.deleteRemoteBranchFailed":`No se pudo eliminar la rama remota`,"git.changeSourceBranch":`Cambiar la rama de origen`,"git.changeSourceBranchTitle":`Cambiar la rama de origen`,"git.changeSourceBranchMessage":`Elige la nueva rama de origen. La rama de trabajo se reconstruirá encima.`,"git.changeSourceBranchDone":`Rama de origen cambiada a {branch}`,"git.changeSourceBranchAligned":`Rama de origen cambiada a {branch} (la rama no tenía commits propios)`,"git.changeSourceBranchTooMany":`La rama tiene demasiados commits propios ({n}) — rebásala manualmente`,"git.changeSourceBranchDirty":`Haz commit o stash de tus cambios antes de cambiar la rama de origen`,"git.changeSourceBranchAgentRunning":`Detén el agente antes de cambiar la rama de origen`,"git.changeSourceBranchErrorTitle":`Error al cambiar la rama de origen`,"git.changeSourceBranchErrorOngoing":`Una operación {op} sigue en curso en el worktree. Cancélala para volver a un estado limpio.`,"git.changeSourceBranchErrorAbort":`Cancelar la operación`,"git.changeSourceBranchLoading":`Cambiando la rama de origen…`,"git.changeSourceForcePushTitle":`¿Forzar el push de la rama reescrita?`,"git.changeSourceForcePushMessage":`El historial de la rama se reescribió. ¿Hacer force-push al remoto con --force-with-lease?`,"git.changeSourceForcePushDone":`Rama enviada con force-push`,"git.openEditor":`Abrir en editor`,"git.openEditorFailed":`No se pudo abrir el editor`,"git.branchPushed":`Rama enviada`,"git.pushFirst":`La rama no está en el remoto. Haz Push primero.`,"git.unpushedCommits":`Los commits locales no están enviados. Haz Push primero.`,"git.from":`desde`,"git.aheadBehindTooltip":`{ahead} commits por delante, {behind} por detrás de {source}`,"git.divergence.title":`Divergencia de rama`,"git.divergence.subtitle":`vs {source}`,"git.divergence.ahead":`↑ {count} por delante`,"git.divergence.behind":`↓ {count} por detrás`,"git.divergence.empty.ahead":`Sin commits por delante.`,"git.divergence.empty.behind":`Sin commits por detrás.`,"git.divergence.close":`Cerrar`,"git.divergence.loading":`Cargando commits…`,"git.divergence.failed":`No se pudo cargar la divergencia`,"git.divergence.retry":`Reintentar`,"git.prCreated":`{request} #{n} creada`,"git.pr.author":`Autor`,"git.pr.reviewers":`Revisores`,"git.pr.assignees":`Asignados`,"git.pr.labels":`Etiquetas`,"git.pr.changesRequestedBadge":`Cambios solicitados`,"git.pr.approvedBadge":`Aprobada`,"git.pr.ci.passed":`CI OK`,"git.pr.ci.failed":`CI fallida`,"git.pr.ci.pending":`CI en curso`,"git.pr.ci.failedCount":`{n} fallido(s)`,"git.pr.ci.pendingCount":`{n} en curso`,"git.pr.ci.passedCount":`{n} OK`,"git.pr.ci.skippedCount":`{n} omitido(s)`,"git.pr.ci.showPassed":`Mostrar {n} jobs OK`,"git.pr.ci.hidePassed":`Ocultar los jobs OK`,"toast.prChangesRequested":`Se solicitaron cambios en la PR #{n}`,"toast.prApproved":`La PR #{n} ha sido aprobada`,"toast.prReadyToMerge":`La PR #{n} está lista para merge`,"toast.prCiFailed":`La CI de la PR #{n} ha fallado`,"toast.prCiRecovered":`La CI de la PR #{n} se ha recuperado`,"toast.prMergeConflict":`La PR #{n} tiene conflictos de merge`,"toast.prMerged":`La PR #{n} se ha fusionado`,"devServer.title":`Servidor de desarrollo`,"devServer.noWorkspace":`Ningún workspace seleccionado`,"devServer.notConfigured":`No configurado —`,"devServer.goToSettings":`Ajustes`,"devServer.logs":`Logs`,"devServer.running":`En ejecución`,"devServer.starting":`Iniciando`,"devServer.stopping":`Deteniendo`,"devServer.error":`Error`,"devServer.stopped":`Detenido`,"devServer.unknown":`Desconocido`,"devServer.containers":`{count} contenedor | {count} contenedores`,"devServer.logDialog.title":`Logs del servidor de desarrollo`,"devServer.logDialog.empty":`No hay logs disponibles`,"notion.title":`Notion`,"tasks.title":`Tareas`,"notion.addTask":`Añadir tarea`,"notion.noUrl":`Sin URL de Notion`,"notion.subtasks":`{done}/{total} subtareas`,"notion.noTasks":`Sin tareas`,"notion.newTask":`Nueva tarea... (Enter para añadir, Esc para cancelar)`,"acceptance.title":`Criterios de aceptación`,"acceptance.addCriterion":`Añadir criterio`,"acceptance.newCriterion":`Nuevo criterio... (Enter para añadir, Esc para cancelar)`,"acceptance.empty":`Sin criterios de aceptación`,"tasks.askProgress":`Pedir al agente que revise el progreso`,"agentTodos.title":`Tareas del agente`,"agentTodos.empty":`Sin tareas del agente`,"subagents.title":`Sub-agentes`,"subagents.empty":`Aún no hay actividad de sub-agentes`,"subagents.tools":`{count} herramientas`,"subagents.running":`En ejecución: `,"subagents.status.running":`En ejecución`,"subagents.status.done":`Completado`,"subagents.status.failed":`Fallido`,"subagents.status.stopped":`Detenido`,"subagents.ambient":`Vigilancia en segundo plano`,"subagents.ambientTooltip":`Vigilancia en segundo plano (p. ej. Monitor): no cuenta como actividad del agente`,"subagents.stop":`Detener este sub-agente`,"subagents.stopAll":`Detener todos`,"subagents.stopFailed":`No se pudo detener el sub-agente: {error}`,"subagents.activity":`Actividad del subagente`,"subagents.noActivity":`Aún no hay actividad visible del proveedor`,"chat.subagentActivity":`Actividad del subagente`,"chat.openSubagentActivity":`Abrir este subagente en el panel lateral`,"stats.resetsAt":`Reset {value}`,"stats.usageBucket":`Bucket de uso {n}`,"quotaFooter.lastUpdated":`Última actualización: {time}`,"quotaFooter.empty":`Cargando…`,"quotaFooter.popover.title":`Uso de Claude Code`,"quotaFooter.popover.refreshNow":`Actualizar`,"quotaFooter.popover.resetsIn":`Se reinicia a las {value}`,"quotaFooter.popover.unauthenticated":`Auth requerida`,"quotaFooter.popover.unauthenticatedHint":`Ejecuta "claude" una vez para autenticarte.`,"quotaFooter.popover.error":`Error`,"quotaFooter.bucket.fiveHour":`5 horas`,"quotaFooter.bucket.sevenDay":`7 días`,"agent.error.spawn_failed":`No se pudo iniciar el agente`,"agent.error.parse_error":`No se pudo analizar un mensaje del agente`,"agent.error.rate_limit":`Límite de tasa alcanzado`,"agent.error.resume_failed":`Sesión no encontrada — iniciando sesión nueva`,"agent.error.other":`Error del agente`,"quotaBackoff.banner.title":`Reanudación automática a las {time}`,"quotaBackoff.banner.transientTitle":`Reanudación automática tras interrupción a las {time}`,"quotaBackoff.resumeNow":`Reanudar ahora`,"quotaBackoff.banner.tooltip":`Cuota de Claude agotada. El auto-loop se reanudará automáticamente cuando la cuota se restablezca a las {resets_at}.`,"quotaBackoff.banner.cancel":`Cancelar reanudación`,"quotaBackoff.cancelled":`Reanudación automática cancelada — puedes reanudar manualmente cuando quieras`,"rateLimitType.fiveHour":`Sesión 5h`,"rateLimitType.sevenDay":`Semanal`,"tooltip.addTask":`Añadir tarea`,"tooltip.removeTask":`Eliminar tarea`,"tooltip.addCriterion":`Añadir criterio`,"tooltip.removeCriterion":`Eliminar criterio`,"tooltip.startDevServer":`Iniciar servidor de desarrollo`,"tooltip.stopDevServer":`Detener servidor de desarrollo`,"tooltip.closeDiffViewer":`Cerrar visor de diff`,"tooltip.refreshLogs":`Actualizar logs`,"tooltip.closeDialog":`Cerrar`,"tooltip.refreshGitStats":`Actualizar estadísticas Git`,"tooltip.removeImage":`Eliminar imagen`,"tooltip.sendMessage":`Enviar mensaje`,"tools.title":`Herramientas`,"tools.runSetupScript":`Volver a ejecutar script de setup`,"tools.runSetupScriptTooltip":`Ejecutar el script de setup del proyecto en el worktree`,"tools.runSetupScriptConfirm":`¿Volver a ejecutar el script de setup en este workspace? Los artefactos existentes pueden ser sobrescritos.`,"tools.runSetupScriptBusy":`No se puede volver a ejecutar el setup mientras el agente está trabajando.`,"tools.noSetupScript":`Ningún script de setup configurado —`,"tools.setupScriptSuccess":`Script de setup completado con éxito.`,"tools.setupScriptFailed":`Falló el script de setup.`,"tools.openNotion":`Abrir en Notion`,"tools.openSentry":`Abrir en Sentry`,"tools.review":`Revisar cambios`,"tools.reviewTooltip":`Pedir al agente que revise los cambios de esta rama`,"tools.reviewBusy":`Agente ocupado — espera a que esté libre`,"tools.fixCi":`Reparar CI`,"tools.fixCiTooltip":`Pedir al agente que diagnostique y arregle los jobs de CI que fallan`,"tools.fixCiLaunched":`Acción «Reparar CI» enviada al agente`,"tools.fixCiFailed":`No se pudo lanzar la acción «Reparar CI»`,"tools.openFileManager":`Abrir en el explorador de archivos`,"tools.openFileManagerTooltip":`Abrir la carpeta del worktree en tu explorador de archivos configurado`,"tools.openFileManagerFailed":`No se pudo abrir el explorador de archivos`,"tools.openTerminal":`Abrir en terminal`,"tools.openTerminalTooltip":`Abrir el worktree en tu terminal configurada`,"tools.openTerminalFailed":`No se pudo abrir la terminal`,"review.title":`Iniciar revisión`,"review.subtitle":`Pide al agente que revise tus cambios y dé feedback.`,"review.additionalInstructions":`Instrucciones adicionales (opcional)`,"review.additionalInstructionsPlaceholder":`Añade instrucciones específicas para la revisión…`,"review.newSession":`Nueva sesión`,"review.newSessionHint":`Inicia una sesión nueva en vez de continuar la actual.`,"review.newSessionRequired":`Cambiar los ajustes del agente o volver automáticamente requiere una nueva sesión.`,"review.returnToSession":`Volver a la sesión actual después de la revisión`,"review.returnToSessionHint":`Reanuda esta sesión con el resumen final del revisor. Si se desactiva, la conversación continúa en la sesión de revisión.`,"review.readOnlyForced":`Una review que vuelve a esta sesión se ejecuta en solo lectura (Plan): no puede modificar archivos ni hacer preguntas.`,"review.returnUnavailable":`La sesión actual debe haberse iniciado para poder reanudarla.`,"review.start":`Iniciar revisión`,"review.cancel":`Cancelar`,"review.launched":`Revisión iniciada`,"review.failed":`No se pudo iniciar la revisión`,"diff.title":`Diff`,"diff.side":`Lado a lado`,"diff.inline":`En línea`,"diff.hideUnchanged":`Ocultar código sin cambios`,"diff.showUnchanged":`Mostrar código sin cambios`,"diff.showUntracked":`Mostrar archivos no rastreados`,"diff.hideUntracked":`Ocultar archivos no rastreados`,"diff.rollbackToRemote":`Restaurar a la versión remota`,"diff.rollbackConfirm":`¿Restaurar {path} a su versión remota (origin)? Los cambios locales en este archivo se perderán.`,"diff.rollbackConfirmOk":`Restaurar`,"diff.rollbackDone":`Archivo restaurado a la versión remota`,"diff.rollbackDoneRemote":`Archivo restaurado a la versión remota`,"diff.rollbackDoneHead":`Cambios locales descartados (archivo restaurado al último commit)`,"diff.rollbackDoneDeleted":`Archivo no rastreado eliminado`,"diff.deleteUntracked":`Eliminar archivo no rastreado`,"diff.deleteUntrackedConfirm":`¿Eliminar definitivamente {path}? Este archivo no está rastreado por git — su contenido se perderá.`,"diff.deleteUntrackedConfirmOk":`Eliminar`,"diff.rollbackFailed":`Falló el rollback`,"diff.rollbackFailedDetail":`Rollback fallido: {error}`,"diff.modeInspect":`Editar`,"diff.modeReview":`Review`,"diff.addComment":`Añadir comentario`,"diff.replyComment":`Responder`,"diff.editComment":`Editar`,"diff.deleteComment":`Eliminar`,"diff.deleteCommentConfirm":`¿Eliminar este comentario?`,"diff.commentPlaceholder":`Escribe un comentario de revisión… (Markdown soportado)`,"diff.reviewDraft":`Borrador de revisión`,"diff.reviewEmpty":`Aún no hay comentarios — pasa el cursor sobre una línea del diff y haz clic en + para añadir uno.`,"diff.reviewGlobalPlaceholder":`Mensaje general de revisión (opcional)`,"diff.submitReview":`Enviar revisión ({n})`,"diff.reviewPending":`Ya se está enviando una revisión.`,"diff.reviewEmptySubmission":`La revisión está vacía.`,"diff.reviewNotAccepted":`El mensaje no fue aceptado. Tu revisión se ha conservado.`,"diff.reviewSubmitted":`Revisión enviada al agente`,"diff.reviewSubmitFailed":`No se pudo enviar la revisión: {error}`,"diff.scopeBranch":`Branch`,"diff.scopeUnpushed":`Sin pushear`,"diff.noChanges":`Sin cambios`,"diff.searchFiles":`Buscar archivos…`,"diff.noFileMatch":`Ningún archivo coincide`,"diff.selectFile":`Selecciona un archivo para ver el diff`,"diff.fileLoadFailed":`No se pudo cargar este diff`,"diff.fileLoadFailedHint":`El archivo en disco está intacto — solo falló la carga del diff.`,"diff.fileListLoadFailed":`No se pudo cargar la lista de archivos`,"diff.fileListLoadFailedHint":`Es un fallo de la petición, no una rama sin cambios.`,"diff.addToChat":`Añadir al chat`,"diff.compareTitle":`Comparar commits`,"diff.compareFrom":`Desde`,"diff.compareTo":`Hasta`,"diff.compareSubmit":`Comparar`,"diff.compareSourceBase":`{branch} (base de la rama)`,"diff.commitsReadOnly":`solo lectura`,"diffViewer.save":`Guardar`,"diffViewer.savedAt":`Guardado`,"diffViewer.saveFailed":`Error al guardar`,"diffViewer.saveFailedDetail":`Error al guardar: {error}`,"diffViewer.unsavedChanges.title":`Cambios sin guardar`,"diffViewer.unsavedChanges.message":`Tienes cambios sin guardar. ¿Qué quieres hacer?`,"diffViewer.unsavedChanges.save":`Guardar`,"diffViewer.unsavedChanges.cancel":`Cancelar`,"diffViewer.conflict.title":`Archivo modificado en disco`,"diffViewer.conflict.message":`El archivo fue modificado fuera de Kōbō desde que lo abriste.`,"diffViewer.conflict.reload":`Recargar (descartar cambios locales)`,"diffViewer.conflict.keep":`Mantener los míos`,"diffViewer.conflict.overwrite":`Sobrescribir de todos modos`,"diffViewer.conflict.overwriteHint":`Reemplaza el archivo del disco por tu versión. El otro cambio se pierde.`,"diffViewer.conflict.keepHint":`Mantiene tus cambios en el editor y adopta la nueva firma del disco, para que el próximo guardado funcione.`,"diffViewer.saveBlocked":`El agente está en marcha — detenlo para guardar tus cambios.`,"diffViewer.unsavedBanner":`Cambios sin guardar. Detén el agente para guardarlos.`,"diffViewer.closeConfirm.title":`Cambios sin guardar`,"diffViewer.closeConfirm.message":`Este archivo tiene cambios que nunca se guardaron. Cerrar el visor de diferencias los descarta.`,"diffViewer.closeConfirm.discard":`Cerrar sin guardar`,"diffViewer.criteriaRail":`Checklist de revisión`,"diffViewer.criteriaRailShow":`Mostrar la checklist de revisión`,"diffViewer.criteriaRailHide":`Ocultar la checklist de revisión`,"diffViewer.fileTreeShow":`Mostrar el árbol de archivos`,"diffViewer.fileTreeHide":`Ocultar el árbol de archivos`,"diffViewer.closeConfirm.saveAndClose":`Guardar y cerrar`,"diffViewer.agentRunning":`El agente está activo — detenlo para editar`,"diffViewer.fileDeleted":`Archivo eliminado`,"notification.agentFinished":`{name} — Agente terminado`,"notification.agentQuestion":`{name} — El agente hace una pregunta`,"notification.awaitingReminder":`{name} - sigue esperándote ({minutes} min)`,"notification.agentPermissionRequest":`{name} — El agente solicita un permiso`,"notification.autoLoopCompleted":`{name} — Auto-loop completado`,"notification.autoLoopWaitingForSlot":`{name} - El auto-loop espera un slot de agente libre ({running}/{limit} en curso)`,"notification.autoLoopStalled":`{name} — Auto-loop bloqueado (sin progreso)`,"notification.autoLoopError":`{name} — Auto-loop detenido por error`,"notification.autoLoopAwaitingClarification":`{name} — Auto-loop en pausa, esperando tu aclaración`,"notification.autoLoopPermissionOverridden":`{name} — Auto-loop forzó el modo plan a bypass`,"notification.agentError":`{name} — Error del agente`,"contextMenu.rename":`Renombrar`,"contextMenu.editDescription":`Editar la descripción`,"contextMenu.copyPath":`Copiar ruta del worktree`,"contextMenu.copyWorkspaceId":`Copiar ID del workspace`,"contextMenu.openEditor":`Abrir en editor`,"contextMenu.openFileManager":`Abrir en el explorador de archivos`,"contextMenu.unarchiveDisabledPurged":`Restaura primero el worktree con Restaurar worktree o recréalo manualmente. Kōbō detecta automáticamente los worktrees correspondientes.`,"workspaceList.unarchiveBlockedPurged":`Restaura primero el worktree con Restaurar worktree o recréalo manualmente. Kōbō detecta automáticamente los worktrees correspondientes.`,"contextMenu.purgeWorktree":`Liberar espacio en disco (borrar worktree)`,"contextMenu.purgeWorktreeTooltip":`Borra el worktree del disco para recuperar espacio — el historial de mensajes y sesiones se conserva. Archiva automáticamente el workspace.`,"contextMenu.purgeWorktreeDialogTitle":`¿Liberar espacio en disco?`,"contextMenu.purgeWorktreeDialogMessage":`La carpeta del worktree de «{name}» será eliminada del disco. El historial de mensajes y sesiones se conserva. El workspace se archivará automáticamente. Esta acción no se puede deshacer en la versión actual.`,"contextMenu.purgeWorktreeDialogConfirm":`Borrar el worktree`,"contextMenu.purgeWorktreeSuccess":`Worktree borrado — espacio en disco recuperado.`,"settings.autoPurgeOnPrMerged":`Borrar worktree al mergear la PR`,"settings.autoPurgeOnPrMergedHint":`Cuando está activado, el worktree se borra del disco en cuanto se mergea la PR (además del archivado automático). El historial de mensajes se conserva.`,"settings.showProgressBars":`Mostrar barras de progreso`,"settings.showProgressBarsHint":`Activado de forma predeterminada. Ocultar las barras no cierra las actividades ni detiene su seguimiento. Los cambios se aplican al guardar.`,"tours.settings.progressBars.title":`Barras de progreso`,"tours.settings.progressBars.description":`Muestra u oculta las barras sobre el campo de mensaje. El seguimiento continúa mientras están ocultas.`,"settings.agentWatchdogEnabled":`Activar los watchdogs de inactividad de los agentes`,"settings.agentWatchdogHint":`Desactivados por defecto. Si se activan, Kōbō puede detener Claude o Codex tras un silencio prolongado, incluidas herramientas, subagentes y compactación. Se aplica al iniciar o reanudar el agente.`,"tours.settings.agentWatchdog.title":`Watchdogs de inactividad`,"tours.settings.agentWatchdog.description":`Deja esta opción desactivada para permitir esperas largas sin actividad visible. Actívala para cerrar automáticamente sesiones bloqueadas. Se aplica al iniciar o reanudar el agente.`,"settings.autoLoopMaxRetries":`Máximo de reintentos automáticos`,"settings.awaitingUserReminder":`Recordatorio de pregunta sin responder`,"settings.awaitingUserReminderHint":`Minutos que un workspace puede esperar tu respuesta antes de que Kōbō te avise, y luego en cada intervalo siguiente. 0 lo desactiva.`,"settings.localeLoadFailed":`No se pudo cargar ese idioma; se mantiene el actual.`,"settings.autoLoopMaxRetriesHint":`Pausa la misión tras este número de fallos temporales del motor o del servidor. Las cuotas esperan su restablecimiento y no consumen este límite.`,"settings.retentionTitle":`Retención del historial de conversación (desactivada por defecto)`,"settings.retentionWarning":`Activar esta opción elimina definitivamente de la base de datos el historial de conversación de los agentes, empezando por todo lo que ya sea más antiguo que la ventana. Los eventos eliminados no se pueden recuperar.`,"settings.retentionHint":`Se ejecuta una vez al arrancar el servidor. Los workspaces, tareas, sesiones, branches y worktrees nunca se tocan — solo la salida registrada de los agentes.`,"settings.retentionDaysLabel":`Eliminar eventos más antiguos de (días)`,"settings.retentionDaysHint":`0 — el valor por defecto — conserva todos los eventos indefinidamente. Indica un valor para activar la retención.`,"settings.retentionKeepLabel":`Eventos siempre conservados por workspace`,"settings.retentionKeepHint":`Los eventos más recientes de cada workspace sobreviven sea cual sea su antigüedad, para que un workspace antiguo pero aún abierto conserve un historial legible. Sugerido: 5000.`,"settings.retentionDisabledHint":`Retención desactivada: nunca se eliminará nada.`,"settings.retentionConfirmTitle":`¿Eliminar definitivamente el historial de conversación?`,"settings.retentionConfirmMessage":`Conservar solo {days} día(s) de historial eliminará definitivamente, en el próximo arranque del servidor, {count} de los {total} eventos de agente registrados — incluido todo lo que ya sea más antiguo. Es irreversible. ¿Continuar?`,"settings.retentionConfirmMessageUnknown":`Conservar solo {days} día(s) de historial eliminará definitivamente, en el próximo arranque del servidor, todos los eventos de agente más antiguos — incluido todo lo ya acumulado. No se ha podido calcular el volumen exacto. Es irreversible. ¿Continuar?`,"settings.purgeDocsTitle":`Cómo funciona el borrado — restauración y permisos`,"settings.purgeDocsRestoreTitle":`Restaurar un worktree borrado (detección automática)`,"settings.purgeDocsRestoreIntro":`Un workspace borrado conserva su historial de chat y los metadatos de la PR, pero la carpeta worktree ya no existe. Recréala manualmente con uno de estos comandos — Kōbō detecta la reaparición de la carpeta en menos de 30 segundos y reactiva automáticamente el workspace (desarchivar + limpiar flag de borrado):`,"settings.purgeDocsRestoreCommands":`# GitHub (con CLI gh):
|
|
12
12
|
gh pr checkout [número-pr] --recurse-submodules
|
|
13
13
|
|
|
14
14
|
# O directamente con git (funciona en GitHub aunque la rama se haya borrado):
|