@neuralnomads/codenomad-dev 0.14.0-dev-20260416-657e78da → 0.14.0-dev-20260418-e022a158

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.
Files changed (48) hide show
  1. package/dist/server/http-server.js +2 -31
  2. package/dist/server/routes/workspaces.js +118 -0
  3. package/dist/workspaces/git-mutations.js +98 -0
  4. package/dist/workspaces/git-status.js +323 -0
  5. package/dist/workspaces/git-worktrees.js +18 -1
  6. package/dist/workspaces/worktree-directory.js +74 -0
  7. package/package.json +1 -1
  8. package/public/assets/{ChangesTab-CFkk3tAp.js → ChangesTab-DUZlwLiK.js} +2 -2
  9. package/public/assets/{DiffToolbar-CQQLR1mp.js → DiffToolbar-C32dRoEE.js} +1 -1
  10. package/public/assets/{FilesTab-CXgucPtN.js → FilesTab-BHR_yoxs.js} +2 -2
  11. package/public/assets/GitChangesTab-glvFfIqf.js +2 -0
  12. package/public/assets/{SplitFilePanel-CupweEA5.js → SplitFilePanel-c1Cyzd2Q.js} +1 -1
  13. package/public/assets/StatusTab-D_y6grlM.js +1 -0
  14. package/public/assets/{bundle-full-B-5u6Iv3.js → bundle-full-xErn6pK2.js} +1 -1
  15. package/public/assets/{diff-viewer-_ehhYA-Z.js → diff-viewer-Ti4vD-Wf.js} +1 -1
  16. package/public/assets/index-Buu9pQM-.js +1 -0
  17. package/public/assets/index-D5K3x-5q.js +1 -0
  18. package/public/assets/index-DAUGrHIr.js +1 -0
  19. package/public/assets/index-DCKsvmLK.js +1 -0
  20. package/public/assets/{index-BqiNjV6R.js → index-DNjsUvJP.js} +1 -1
  21. package/public/assets/index-KGa2MZ03.js +1 -0
  22. package/public/assets/index-MN-xsoRk.js +2 -0
  23. package/public/assets/{index-CxQr-wOF.js → index-RbYx88R2.js} +1 -1
  24. package/public/assets/index-Vi334d28.js +1 -0
  25. package/public/assets/index-s309YxXV.css +1 -0
  26. package/public/assets/{loading-Dck2H3XH.js → loading-8z6r7QGU.js} +1 -1
  27. package/public/assets/main-BL6QgWzz.js +48 -0
  28. package/public/assets/{markdown-CFV9kR80.js → markdown-CN__9g8I.js} +3 -3
  29. package/public/assets/monaco-viewer-C8arwHE9.js +26 -0
  30. package/public/assets/{todo-Ghwirj-b.js → todo-CGjayFGz.js} +1 -1
  31. package/public/assets/{tool-call-BC2Pv3uG.js → tool-call-Wyw279OP.js} +3 -3
  32. package/public/assets/{unified-picker-Dw0kTXoT.js → unified-picker-DqT__5EQ.js} +1 -1
  33. package/public/assets/{wrap-text-D2MJk2ad.js → wrap-text-DJEP0aF1.js} +1 -1
  34. package/public/index.html +4 -4
  35. package/public/loading.html +4 -4
  36. package/public/sw.js +1 -1
  37. package/public/assets/GitChangesTab-BidSb28_.js +0 -2
  38. package/public/assets/StatusTab-C2Pl_Vce.js +0 -1
  39. package/public/assets/index-BnfDkr8C.js +0 -1
  40. package/public/assets/index-BntAaLZs.js +0 -1
  41. package/public/assets/index-BwCEJ4BE.css +0 -1
  42. package/public/assets/index-DXaitXVC.js +0 -1
  43. package/public/assets/index-DzRzoTK8.js +0 -2
  44. package/public/assets/index-ShHad48G.js +0 -1
  45. package/public/assets/index-_EaXFUIj.js +0 -1
  46. package/public/assets/index-mMh5TJvW.js +0 -1
  47. package/public/assets/main-BsIf5lOY.js +0 -50
  48. package/public/assets/monaco-viewer-CMM6n0T3.js +0 -25
@@ -0,0 +1 @@
1
+ import{m as e}from"./index-MN-xsoRk.js";import"./git-diff-vendor-CSgooKT_.js";import"./fast-diff-vendor-DgdwVvTQ.js";import"./highlight-vendor-8FKMu9os.js";import"./monaco-viewer-C8arwHE9.js";const a={"advancedSettings.title":"Configuración avanzada","advancedSettings.environmentVariables.title":"Variables de entorno","advancedSettings.environmentVariables.subtitle":"Se aplican cada vez que inicia una nueva instancia de OpenCode","advancedSettings.actions.close":"Cerrar"},s={"app.launchError.title":"No se pudo iniciar OpenCode","app.launchError.description":"No pudimos iniciar el binario de OpenCode seleccionado. Revisa la salida de error abajo o elige un binario distinto en la configuración de OpenCode.","app.launchError.binaryPathLabel":"Ruta del binario","app.launchError.errorOutputLabel":"Salida de error","app.launchError.openAdvancedSettings":"Abrir Configuración de OpenCode","app.launchError.close":"Cerrar","app.launchError.closeTitle":"Cerrar (Esc)","app.launchError.fallbackMessage":"No se pudo iniciar el workspace","app.stopInstance.confirmMessage":"¿Detener la instancia de OpenCode? Esto detendrá el servidor.","app.stopInstance.title":"Detener instancia","app.stopInstance.confirmLabel":"Detener","app.stopInstance.cancelLabel":"Seguir ejecutándose","emptyState.logoAlt":"Logo de CodeNomad","emptyState.brandTitle":"CodeNomad","emptyState.tagline":"Selecciona una carpeta para empezar a programar con IA","emptyState.actions.selectFolder":"Seleccionar carpeta","emptyState.actions.selecting":"Seleccionando...","emptyState.keyboardShortcut":"Atajo de teclado: {shortcut}","emptyState.examples":"Ejemplos: {example}","emptyState.multipleInstances":"Puedes tener varias instancias de la misma carpeta","releases.upgradeRequired.title":"Actualización requerida","releases.upgradeRequired.message.withVersion":"Actualiza a CodeNomad {version} para usar la UI más reciente.","releases.upgradeRequired.message.noVersion":"Actualiza CodeNomad para usar la UI más reciente.","releases.upgradeRequired.action.getUpdate":"Obtener actualización","releases.uiUpdated.title":"UI actualizada","releases.uiUpdated.message":"La UI ahora está actualizada a {version}.","releases.devUpdateAvailable.title":"Compilación dev disponible","releases.devUpdateAvailable.message":"Hay una nueva compilación dev disponible: {version}.","releases.devUpdateAvailable.action":"Ver release"},o={"commandPalette.title":"Paleta de comandos","commandPalette.description":"Busca y ejecuta comandos","commandPalette.searchPlaceholder":"Escribe un comando o busca...","commandPalette.empty":'No se encontraron comandos para "{query}"',"commandPalette.category.customCommands":"Comandos personalizados","commandPalette.category.instance":"Instancia","commandPalette.category.session":"Sesión","commandPalette.category.agentModel":"Agente y modelo","commandPalette.category.inputFocus":"Entrada y foco","commandPalette.category.system":"Sistema","commandPalette.category.other":"Otro","commands.newInstance.label":"Nueva instancia","commands.newInstance.description":"Abrir el selector de carpetas para crear una nueva instancia","commands.newInstance.keywords":"carpeta, proyecto, workspace","commands.closeInstance.label":"Cerrar pestaña","commands.closeInstance.description":"Cerrar la pestaña superior actual","commands.closeInstance.keywords":"detener, salir, cerrar, pestaña","commands.nextInstance.label":"Siguiente pestaña","commands.nextInstance.description":"Cambiar a la siguiente pestaña superior","commands.nextInstance.keywords":"cambiar, navegar, pestaña","commands.previousInstance.label":"Pestaña anterior","commands.previousInstance.description":"Cambiar a la pestaña superior anterior","commands.previousInstance.keywords":"cambiar, navegar, pestaña","commands.newSession.label":"Nueva sesión","commands.newSession.description":"Crear una nueva sesión principal","commands.newSession.keywords":"crear, iniciar","commands.closeSession.label":"Cerrar sesión","commands.closeSession.description":"Cerrar la sesión principal actual","commands.closeSession.keywords":"cerrar, detener","commands.scrubSessions.label":"Depurar sesiones","commands.scrubSessions.description":"Eliminar sesiones vacías, sesiones de subagente que ya completaron su tarea principal y sesiones bifurcadas innecesarias.","commands.scrubSessions.keywords":"limpieza, blanco, vacías, sesiones, quitar, eliminar, depurar","commands.instanceInfo.label":"Info de la instancia","commands.instanceInfo.description":"Abrir el resumen de la instancia para ver logs y estado","commands.instanceInfo.keywords":"info, logs, consola, salida","commands.nextSession.label":"Siguiente sesión","commands.nextSession.description":"Cambiar a la siguiente pestaña de sesión","commands.nextSession.keywords":"cambiar, navegar","commands.previousSession.label":"Sesión anterior","commands.previousSession.description":"Cambiar a la pestaña de sesión anterior","commands.previousSession.keywords":"cambiar, navegar","commands.compactSession.label":"Compactar sesión","commands.compactSession.description":"Resumir y compactar la sesión actual","commands.compactSession.keywords":"resumir, comprimir","commands.compactSession.errorFallback":"No se pudo compactar la sesión","commands.compactSession.alert.title":"La compactación falló","commands.compactSession.alert.message":"La compactación falló: {message}","commands.undoLastMessage.label":"Deshacer último mensaje","commands.undoLastMessage.description":"Revertir el último mensaje","commands.undoLastMessage.keywords":"revertir, deshacer","commands.undoLastMessage.none.title":"No hay acciones para deshacer","commands.undoLastMessage.none.message":"Nada que deshacer","commands.undoLastMessage.failed.title":"No se pudo deshacer","commands.undoLastMessage.failed.message":"No se pudo revertir el mensaje","commands.openModelSelector.label":"Abrir selector de modelo","commands.openModelSelector.description":"Elegir un modelo diferente","commands.openModelSelector.keywords":"modelo, llm, IA","commands.selectModelVariant.label":"Seleccionar variante del modelo","commands.selectModelVariant.description":"Elegir un nivel de esfuerzo de pensamiento para el modelo actual","commands.selectModelVariant.keywords":"variante, pensamiento, razonamiento, esfuerzo","commands.openAgentSelector.label":"Abrir selector de agente","commands.openAgentSelector.description":"Elegir un agente diferente","commands.openAgentSelector.keywords":"agente, modo","commands.clearInput.label":"Limpiar entrada","commands.clearInput.description":"Borrar el área de texto del prompt","commands.clearInput.keywords":"limpiar, reiniciar","commands.promptSubmitShortcut.label.default":"Enter: Nueva linea, Cmd/Ctrl+Enter: Enviar prompt","commands.promptSubmitShortcut.label.swapped":"Enter: Enviar prompt, Cmd/Ctrl+Enter: Nueva linea","commands.promptSubmitShortcut.description":"Intercambiar el comportamiento de Enter y Cmd/Ctrl+Enter en la entrada de prompt","commands.promptSubmitShortcut.keywords":"enter, enviar, salto de linea, atajo, teclado, cmd, ctrl, prompt","commands.thinkingBlocks.label.show":"Mostrar pensamiento","commands.thinkingBlocks.label.hide":"Ocultar pensamiento","commands.thinkingBlocks.description":"Mostrar u ocultar secciones de pensamiento de IA","commands.thinkingBlocks.keywords":"pensamiento, razonamiento, alternar, mostrar, ocultar","commands.timelineToolCalls.label.show":"Mostrar llamadas de herramienta en la línea de tiempo","commands.timelineToolCalls.label.hide":"Ocultar llamadas de herramienta en la línea de tiempo","commands.timelineToolCalls.description":"Alternar entradas de llamadas de herramienta en la línea de tiempo de mensajes","commands.timelineToolCalls.keywords":"línea de tiempo, herramienta, alternar","commands.keyboardShortcutHints.label.show":"Mostrar atajos de teclado","commands.keyboardShortcutHints.label.hide":"Ocultar atajos de teclado","commands.keyboardShortcutHints.description":"Mostrar u ocultar sugerencias de atajos de teclado en la interfaz","commands.keyboardShortcutHints.description.disabledWeb":"Desactivado en WebUI (los atajos siempre se ocultan)","commands.keyboardShortcutHints.keywords":"atajo, atajos, teclado, keybind, pistas","commands.common.expanded":"Expandido","commands.common.collapsed":"Colapsado","commands.common.visible":"Visible","commands.common.hidden":"Oculto","commands.common.enabled":"Activado","commands.common.disabled":"Desactivado","commands.thinkingBlocksDefault.label":"Vista de pensamiento: {state}","commands.thinkingBlocksDefault.description":"Contraer / Expandir secciones de pensamiento de IA cuando se muestran","commands.thinkingBlocksDefault.keywords":"pensamiento, razonamiento, expandir, colapsar, por defecto","commands.diffViewSplit.label":"Usar vista de diff dividida","commands.diffViewSplit.description":"Mostrar diffs de llamadas de herramienta lado a lado","commands.diffViewSplit.keywords":"diff, dividir, vista","commands.diffViewUnified.label":"Usar vista de diff unificada","commands.diffViewUnified.description":"Mostrar diffs de llamadas de herramienta en línea","commands.diffViewUnified.keywords":"diff, unificada, vista","commands.toolOutputsDefault.label":"Salidas de herramientas por defecto · {state}","commands.toolOutputsDefault.description":"Alternar la expansión por defecto de las salidas de herramientas","commands.toolOutputsDefault.keywords":"herramienta, salida, expandir, colapsar","commands.diagnosticsDefault.label":"Diagnósticos por defecto · {state}","commands.diagnosticsDefault.description":"Alternar la expansión por defecto de la salida de diagnósticos","commands.diagnosticsDefault.keywords":"diagnósticos, expandir, colapsar","commands.toolInputsVisibility.label":"Visibilidad de entradas de herramientas · {state}","commands.toolInputsVisibility.description":"Configurar la visibilidad por defecto de los argumentos de entrada de llamadas de herramienta","commands.toolInputsVisibility.keywords":"herramienta, entradas, argumentos, visibilidad, ocultar, mostrar, expandir, colapsar","commands.tokenUsageDisplay.label":"Mostrar uso de tokens · {state}","commands.tokenUsageDisplay.description":"Mostrar u ocultar estadísticas de tokens y costo en los mensajes del asistente","commands.tokenUsageDisplay.keywords":"token, uso, costo, estadísticas","commands.autoCleanupBlankSessions.label":"Auto-limpieza de sesiones vacías · {state}","commands.autoCleanupBlankSessions.description":"Limpiar automáticamente las sesiones vacías al crear nuevas","commands.autoCleanupBlankSessions.keywords":"auto, limpieza, vacías, sesiones, alternar","commands.showHelp.label":"Mostrar ayuda","commands.showHelp.description":"Mostrar atajos de teclado y ayuda","commands.showHelp.keywords":"atajos, ayuda","commands.custom.argumentsPrompt.message":"Argumentos para /{name}","commands.custom.argumentsPrompt.title":"Comando personalizado","commands.custom.argumentsPrompt.inputLabel":"Argumentos","commands.custom.argumentsPrompt.inputPlaceholder":"p. ej. foo bar","commands.custom.argumentsPrompt.confirmLabel":"Ejecutar","commands.custom.argumentsPrompt.cancelLabel":"Cancelar","commands.custom.argumentsPrompt.openFailed.message":"No se pudo abrir el diálogo de argumentos.","commands.custom.argumentsPrompt.openFailed.title":"Argumentos del comando","commands.custom.entries.descriptionFallback":"Comando personalizado","commands.custom.sessionRequired.message":"Selecciona una sesión antes de ejecutar un comando personalizado.","commands.custom.sessionRequired.title":"Se requiere sesión","commands.custom.runFailed.message":"No se pudo ejecutar el comando personalizado. Revisa la consola para más detalles.","commands.custom.runFailed.title":"El comando falló","unifiedPicker.loading.searching":"Buscando...","unifiedPicker.loading.loadingWorkspace":"Cargando workspace...","unifiedPicker.title.command":"Seleccionar comando","unifiedPicker.title.mention":"Seleccionar agente o archivo","unifiedPicker.empty":"No se encontraron resultados","unifiedPicker.sections.commands":"COMANDOS","unifiedPicker.sections.agents":"AGENTES","unifiedPicker.sections.files":"ARCHIVOS","unifiedPicker.badge.subagent":"subagente","unifiedPicker.footer.navigate":"navegar","unifiedPicker.footer.select":"seleccionar","unifiedPicker.footer.close":"cerrar"},t={"alertDialog.fallbackTitle.info":"Aviso","alertDialog.fallbackTitle.warning":"Por favor revisa","alertDialog.fallbackTitle.error":"Algo salió mal","alertDialog.actions.confirm":"Confirmar","alertDialog.actions.run":"Ejecutar","alertDialog.actions.ok":"OK","alertDialog.actions.cancel":"Cancelar","alertDialog.prompt.inputLabel":"Entrada","backgroundProcessOutputDialog.title":"Salida en segundo plano","backgroundProcessOutputDialog.actions.close":"Cerrar","backgroundProcessOutputDialog.loading":"Cargando salida...","backgroundProcessOutputDialog.truncatedNotice":"Salida truncada para mostrar.","backgroundProcessOutputDialog.loadErrorFallback":"No se pudo cargar la salida."},i={"directoryBrowser.defaultDescription":"Explora carpetas bajo la raíz del workspace configurado.","directoryBrowser.close":"Cerrar","directoryBrowser.currentFolder":"Carpeta actual","directoryBrowser.selectCurrent":"Seleccionar actual","directoryBrowser.newFolder":"Nueva carpeta","directoryBrowser.creating":"Creando…","directoryBrowser.loadingFolders":"Cargando carpetas…","directoryBrowser.noFolders":"No hay carpetas disponibles.","directoryBrowser.upOneLevel":"Subir un nivel","directoryBrowser.select":"Seleccionar","directoryBrowser.load.errorFallback":"No se pudo cargar el sistema de archivos","directoryBrowser.createFolder.promptMessage":"Crea una nueva carpeta en el directorio actual.","directoryBrowser.createFolder.title":"Nueva carpeta","directoryBrowser.createFolder.inputLabel":"Nombre de la carpeta","directoryBrowser.createFolder.inputPlaceholder":"p. ej. mi-nuevo-proyecto","directoryBrowser.createFolder.confirmLabel":"Crear","directoryBrowser.createFolder.cancelLabel":"Cancelar","directoryBrowser.createFolder.invalidNameMessage":"Introduce un único nombre de carpeta.","directoryBrowser.createFolder.invalidNameDetail":"Los nombres de carpeta no pueden incluir barras, '..' ni '~'.","directoryBrowser.createFolder.errorFallback":"No se pudo crear la carpeta","filesystemBrowser.descriptionFallback":"Busca una ruta bajo la raíz del workspace configurado.","filesystemBrowser.rootLabel":"Raíz: {root}","filesystemBrowser.actions.close":"Cerrar","filesystemBrowser.actions.retry":"Reintentar","filesystemBrowser.actions.select":"Seleccionar","filesystemBrowser.filterLabel":"Filtro","filesystemBrowser.search.placeholder.directories":"Buscar carpetas","filesystemBrowser.search.placeholder.files":"Buscar archivos","filesystemBrowser.currentFolder.label":"Carpeta actual","filesystemBrowser.currentFolder.selectCurrent":"Seleccionar actual","filesystemBrowser.loading.filesystem":"sistema de archivos","filesystemBrowser.loading.workspaceRoot":"raíz del workspace","filesystemBrowser.loading.loadingWithPath":"Cargando {path}…","filesystemBrowser.empty.noEntries":"No se encontraron elementos.","filesystemBrowser.navigation.upOneLevel":"Subir un nivel","filesystemBrowser.hints.navigate":"Navegar","filesystemBrowser.hints.select":"Seleccionar","filesystemBrowser.hints.close":"Cerrar","filesystemBrowser.errors.loadFilesystemFallback":"No se pudo cargar el sistema de archivos","filesystemBrowser.errors.openDirectoryFallback":"No se pudo abrir el directorio"},n={"folderSelection.language.ariaLabel":"Idioma","folderSelection.logoAlt":"Logo de CodeNomad","folderSelection.tagline":"Selecciona una carpeta para empezar a programar con AI","folderSelection.links.github":"GitHub de CodeNomad","folderSelection.links.githubStars":"Estrellas de GitHub de CodeNomad","folderSelection.links.discord":"Discord de CodeNomad","folderSelection.empty.title":"No hay carpetas recientes","folderSelection.empty.description":"Busca una carpeta para comenzar","folderSelection.recent.title":"Carpetas recientes","folderSelection.recent.subtitle.one":"{count} carpeta disponible","folderSelection.recent.subtitle.other":"{count} carpetas disponibles","folderSelection.recent.remove":"Eliminar de recientes","folderSelection.browse.title":"Buscar carpeta","folderSelection.browse.subtitle":"Selecciona cualquier carpeta en tu ordenador","folderSelection.browse.button":"Buscar carpetas","folderSelection.browse.buttonOpening":"Abriendo...","folderSelection.actions.title":"Abrir carpeta o conectar servidor","folderSelection.actions.subtitle":"Abre una carpeta local o conéctate a un servidor de CodeNomad","folderSelection.actions.connectButton":"Conectar servidor CodeNomad","folderSelection.advancedSettings":"Configuración avanzada","folderSelection.opencode":"OpenCode","folderSelection.hints.navigate":"Navegar","folderSelection.hints.select":"Seleccionar","folderSelection.hints.remove":"Eliminar","folderSelection.hints.browse":"Buscar","folderSelection.loading.title":"Iniciando instancia...","folderSelection.loading.subtitle":"Espera mientras preparamos tu espacio de trabajo.","folderSelection.drop.title":"Suelta una carpeta para abrirla","folderSelection.drop.subtitle":"Inicia una nueva instancia en la carpeta soltada.","folderSelection.drop.invalidTitle":"No se pudo abrir el elemento soltado","folderSelection.drop.invalidMessage":"Suelta una carpeta para iniciar una nueva instancia.","folderSelection.dialog.title":"Seleccionar workspace","folderSelection.dialog.description":"Selecciona un workspace para empezar a programar.","folderSelection.tabs.local":"Carpetas locales","folderSelection.tabs.servers":"Servidores","folderSelection.servers.title":"Servidores guardados","folderSelection.servers.subtitle":"Abre un servidor remoto de CodeNomad guardado en una ventana nueva","folderSelection.servers.count":"{count} servidores","folderSelection.servers.empty.title":"No hay servidores guardados","folderSelection.servers.empty.description":"Añade un servidor remoto para volver a conectarte rápidamente desde este dispositivo","folderSelection.servers.connectTitle":"Conectar a un servidor","folderSelection.servers.connectSubtitle":"Guarda un servidor remoto de CodeNomad y ábrelo en una ventana nueva","folderSelection.servers.connectButton":"Conectar a un servidor","folderSelection.servers.remove":"Eliminar servidor guardado","folderSelection.servers.skipTls":"TLS autofirmado","folderSelection.servers.errorTitle":"Falló la conexión remota","folderSelection.servers.dialog.title":"Conectar a un servidor","folderSelection.servers.dialog.description":"Añade un servidor remoto de CodeNomad y ábrelo ahora si quieres.","folderSelection.servers.dialog.name":"Nombre del servidor","folderSelection.servers.dialog.namePlaceholder":"Servidor de producción","folderSelection.servers.dialog.url":"URL del servidor","folderSelection.servers.dialog.urlPlaceholder":"https://server.example.com","folderSelection.servers.dialog.skipTls":"Omitir la verificación TLS para certificados autofirmados.","folderSelection.servers.dialog.cancel":"Cancelar","folderSelection.servers.dialog.save":"Guardar","folderSelection.servers.dialog.connect":"Conectar","folderSelection.servers.dialog.connecting":"Conectando...","folderSelection.servers.dialog.errorRequired":"El nombre y la URL del servidor son obligatorios.","folderSelection.servers.dialog.errorConnect":"No se pudo conectar al servidor remoto.","folderSelection.sidecars.button":"Open SideCar"},r={"instanceTabs.new.title":"Nueva instancia (Cmd/Ctrl+N)","instanceTabs.new.ariaLabel":"Nueva instancia","instanceTabs.remote.title":"Conexión remota","instanceTabs.remote.ariaLabel":"Conexión remota","instanceInfo.title":"Información de la instancia","instanceInfo.labels.folder":"Carpeta","instanceInfo.labels.project":"Proyecto","instanceInfo.labels.versionControl":"Control de versiones","instanceInfo.labels.opencodeVersion":"Versión de OpenCode","instanceInfo.labels.binaryPath":"Ruta del binario","instanceInfo.labels.environmentVariables":"Variables de entorno ({count})","instanceInfo.loading":"Cargando...","instanceInfo.server.title":"Servidor","instanceInfo.server.port":"Puerto:","instanceInfo.server.pid":"PID:","instanceInfo.server.status":"Estado:","instanceTab.status.permission":"Esperando permiso","instanceTab.status.compacting":"Compactando","instanceTab.status.working":"Trabajando","instanceTab.status.idle":"Inactiva","instanceTab.status.ariaLabel":"Estado de la instancia: {status}","instanceTab.actions.close.ariaLabel":"Cerrar instancia","instanceShell.leftPanel.sessionsTitle":"Sesiones","instanceShell.leftPanel.instanceInfo":"Info de la instancia","instanceShell.leftDrawer.pin":"Fijar panel izquierdo","instanceShell.leftDrawer.unpin":"Desfijar panel izquierdo","instanceShell.leftDrawer.toggle.pinned":"Panel izquierdo fijado","instanceShell.leftDrawer.toggle.open":"Abrir panel izquierdo","instanceShell.leftDrawer.toggle.close":"Cerrar panel izquierdo","instanceShell.rightDrawer.pin":"Fijar panel derecho","instanceShell.rightDrawer.unpin":"Desfijar panel derecho","instanceShell.rightDrawer.toggle.pinned":"Panel derecho fijado","instanceShell.rightDrawer.toggle.open":"Abrir panel derecho","instanceShell.rightDrawer.toggle.close":"Cerrar panel derecho","instanceShell.fullscreen.enter":"Pantalla completa","instanceShell.fullscreen.exit":"Salir de pantalla completa","instanceShell.metrics.usedLabel":"Usado","instanceShell.metrics.availableLabel":"Disp.","instanceShell.commandPalette.openAriaLabel":"Abrir paleta de comandos","instanceShell.commandPalette.button":"Paleta de comandos","instanceShell.connection.ariaLabel":"Conexión {status}","instanceShell.connection.connected":"Conectada","instanceShell.connection.connecting":"Conectando...","instanceShell.connection.disconnected":"Desconectada","instanceShell.connection.unknown":"Desconocida","instanceWelcome.shortcuts.newSession":"Nueva sesión","instanceWelcome.empty.title":"No hay sesiones anteriores","instanceWelcome.empty.description":"Crea una nueva sesión abajo para comenzar","instanceWelcome.loading.title":"Cargando sesiones","instanceWelcome.loading.description":"Obteniendo tus sesiones anteriores...","instanceWelcome.resume.title":"Reanudar sesión","instanceWelcome.resume.subtitle.one":"{count} sesión disponible","instanceWelcome.resume.subtitle.other":"{count} sesiones disponibles","instanceWelcome.session.untitled":"Sesión sin título","instanceWelcome.new.title":"Iniciar nueva sesión","instanceWelcome.new.subtitle":"Reutilizaremos tu último agente/modelo automáticamente","instanceWelcome.new.createButton":"Crear sesión","instanceWelcome.overlay.close":"Cerrar","instanceWelcome.actions.viewInstanceInfo":"Ver info de la instancia","instanceWelcome.actions.renameTitle":"Renombrar sesión","instanceWelcome.actions.deleteTitle":"Eliminar sesión","instanceWelcome.hints.navigate":"Navegar","instanceWelcome.hints.jump":"Saltar","instanceWelcome.hints.firstLast":"Primero/Último","instanceWelcome.hints.resume":"Reanudar","instanceWelcome.hints.delete":"Eliminar","instanceWelcome.toasts.renameError":"No se pudo renombrar la sesión","instanceDisconnected.title":"Instancia desconectada","instanceDisconnected.folderFallback":"este workspace","instanceDisconnected.reasonFallback":"El servidor dejó de responder","instanceDisconnected.description":"{folder} ya no se puede alcanzar. Cierra la pestaña para seguir trabajando.","instanceDisconnected.details.title":"Detalles","instanceDisconnected.details.folderLabel":"Carpeta:","instanceDisconnected.actions.closeInstance":"Cerrar instancia","instanceShell.empty.title":"No hay sesión seleccionada","instanceShell.empty.description":"Selecciona una sesión para ver mensajes","instanceShell.rightPanel.title":"Panel de estado","instanceShell.rightPanel.tabs.changes":"Cambios","instanceShell.rightPanel.tabs.gitChanges":"Cambios de Git","instanceShell.rightPanel.tabs.files":"Archivos","instanceShell.rightPanel.tabs.status":"Estado","instanceShell.rightPanel.tabs.ariaLabel":"Pestañas del panel derecho","instanceShell.rightPanel.actions.refresh":"Actualizar","instanceShell.rightPanel.actions.save":"Guardar (Ctrl+S)","instanceShell.rightPanel.actions.saveConfirm.message":'¿Deseas guardar los cambios en "{path}" antes de cambiar?',"instanceShell.rightPanel.actions.saveConfirm.confirmLabel":"Guardar","instanceShell.rightPanel.actions.saveConfirm.cancelLabel":"Descartar cambios","instanceShell.rightPanel.actions.conflict.message":"El archivo fue modificado por el agente. ¿Sobrescribir los cambios del agente?","instanceShell.rightPanel.actions.conflict.confirmLabel":"Sobrescribir","instanceShell.rightPanel.actions.conflict.cancelLabel":"Cancelar","instanceShell.rightPanel.actions.refreshDirty.message":"El archivo tiene cambios sin guardar. Actualizar discardará tus ediciones. ¿Continuar?","instanceShell.rightPanel.actions.refreshDirty.confirmLabel":"Actualizar","instanceShell.rightPanel.actions.refreshDirty.cancelLabel":"Cancelar","instanceShell.rightPanel.toast.saveSuccess":"Archivo guardado exitosamente","instanceShell.rightPanel.toast.saveError":"Error al guardar el archivo","instanceShell.rightPanel.sections.yoloMode":"Modo yolo","instanceShell.rightPanel.sections.yoloMode.tooltip":"Aprueba automaticamente las solicitudes de permiso de la sesion actual. Usalo solo si confias en las herramientas que se estan ejecutando.","instanceShell.rightPanel.sections.sessionChanges":"Cambios de sesión","instanceShell.rightPanel.sections.sessionChanges.tooltip":"Archivos modificados en la sesión actual. Muestra las adiciones y eliminaciones de cada archivo.","instanceShell.rightPanel.sections.plan":"Plan","instanceShell.rightPanel.sections.plan.tooltip":"Hoja de ruta del agente para esta sesión. Realiza el seguimiento de tareas, subtareas y su estado de finalización.","instanceShell.rightPanel.sections.backgroundProcesses":"Shells en segundo plano","instanceShell.rightPanel.sections.backgroundProcesses.tooltip":"Procesos de larga duración iniciados por el agente. Puedes supervisar su salida, detenerlos o terminarlos.","instanceShell.rightPanel.sections.mcp":"Servidores MCP","instanceShell.rightPanel.sections.mcp.tooltip":"Servidores del Model Context Protocol (MCP) que amplían las capacidades del agente con herramientas y servicios externos.","instanceShell.rightPanel.sections.lsp":"Servidores LSP","instanceShell.rightPanel.sections.lsp.tooltip":"Servidores del Language Server Protocol (LSP) que proporcionan inteligencia de código, diagnósticos y funciones específicas del lenguaje.","instanceShell.rightPanel.sections.plugins":"Plugins","instanceShell.rightPanel.sections.plugins.tooltip":"Plugins que personalizan el comportamiento de la UI y del servidor, y añaden funciones más allá de MCP y LSP.","instanceShell.sessionChanges.noSessionSelected":"Selecciona una sesión para ver los cambios.","instanceShell.sessionChanges.loading":"Obteniendo cambios de la sesión...","instanceShell.sessionChanges.empty":"Aún no hay cambios.","instanceShell.sessionChanges.filesChanged":"{count} archivos cambiados","instanceShell.sessionChanges.actions.show":"Mostrar cambios","instanceShell.gitChanges.loading":"Cargando cambios de Git...","instanceShell.gitChanges.empty":"Aún no hay cambios de Git.","instanceShell.gitChanges.deleted":"Eliminado","instanceShell.gitChanges.binaryViewer":"No se puede mostrar un archivo binario","instanceShell.gitChanges.sections.staged":"Cambios preparados","instanceShell.gitChanges.sections.unstaged":"Cambios","instanceShell.gitChanges.actions.insertContext":"Agregar al prompt","instanceShell.gitChanges.actions.stage":"Preparar archivo","instanceShell.gitChanges.actions.unstage":"Quitar del área preparada","instanceShell.gitChanges.commit.placeholder":"Escribe el mensaje del commit","instanceShell.gitChanges.commit.submit":"Commit","instanceShell.gitChanges.commit.submitting":"Confirmando...","instanceShell.gitChanges.commit.success":"Commit creado correctamente","instanceShell.gitChanges.commit.error":"No se pudo crear el commit","instanceShell.filesShell.fileListTitle":"Lista de archivos","instanceShell.filesShell.mobileSelectorLabel":"Seleccionar archivo","instanceShell.filesShell.mobileSelectorEmpty":"Selecciona un archivo","instanceShell.filesShell.viewerTitle":"Visor de cambios","instanceShell.filesShell.viewerPlaceholder":"La vista detallada se agregará en el siguiente paso.","instanceShell.filesShell.viewerEmpty":"Ningún archivo seleccionado.","instanceShell.plan.noSessionSelected":"Selecciona una sesión para ver el plan.","instanceShell.plan.empty":"Aún no hay nada planificado.","instanceShell.yoloMode.noSessionSelected":"Selecciona una sesion para configurar el modo yolo.","instanceShell.yoloMode.title":"Modo yolo","instanceShell.yoloMode.description":"Aprueba automaticamente las solicitudes de permiso de esta sesion. Esta desactivado por defecto.","instanceShell.yoloMode.badge":"Modo yolo","instanceShell.yoloMode.badgeAriaLabel":"Modo yolo activado","instanceShell.backgroundProcesses.empty":"No hay procesos en segundo plano.","instanceShell.backgroundProcesses.status":"Estado: {status}","instanceShell.backgroundProcesses.output":"Salida: {sizeKb} KB","instanceShell.backgroundProcesses.notify.enabled":"Notificacion de finalizacion activada","instanceShell.backgroundProcesses.notify.disabled":"Notificacion de finalizacion desactivada","instanceShell.backgroundProcesses.actions.output":"Salida","instanceShell.backgroundProcesses.actions.stop":"Detener","instanceShell.backgroundProcesses.actions.terminate":"Terminar","instanceShell.worktree.delete.error.title":"Error al eliminar","instanceShell.worktree.delete.error.fallback":"Error al eliminar el worktree","instanceShell.worktree.delete.error.causeLabel":"Causa probable:","instanceShell.worktree.delete.error.nextStepLabel":"Siguiente paso sugerido:","instanceShell.worktree.delete.error.summary.localChanges":"Git rechazo la eliminacion de este worktree porque contiene archivos modificados o sin seguimiento.","instanceShell.worktree.delete.error.summary.inUse":"CodeNomad no pudo eliminar este worktree porque algo sigue usando archivos dentro del directorio.","instanceShell.worktree.delete.error.summary.notFound":"CodeNomad no pudo eliminar este worktree porque no se encontro el directorio o el registro del worktree.","instanceShell.worktree.delete.error.summary.permissionDenied":"CodeNomad no pudo eliminar este worktree porque se denego el acceso al directorio.","instanceShell.worktree.delete.error.summary.unknown":"CodeNomad no pudo eliminar este worktree.","instanceShell.worktree.delete.error.cause.localChanges":"Cambios locales","instanceShell.worktree.delete.error.cause.inUse":"Otro proceso esta usando este worktree","instanceShell.worktree.delete.error.cause.notFound":"Falta el directorio o el registro del worktree","instanceShell.worktree.delete.error.cause.permissionDenied":"Permisos insuficientes del sistema de archivos","instanceShell.worktree.delete.error.cause.unknown":"El backend devolvio un error de eliminacion sin clasificar","instanceShell.worktree.delete.error.nextStep.localChanges":"Activa Forzar eliminacion si quieres descartar los cambios locales, o limpia el worktree e intentalo de nuevo.","instanceShell.worktree.delete.error.nextStep.inUse":"Cierra terminales, editores, observadores o procesos en segundo plano que usen este worktree y vuelve a intentarlo.","instanceShell.worktree.delete.error.nextStep.notFound":"Recarga los worktrees y vuelve a intentarlo. Si sigue fallando, inspecciona la ruta del worktree en disco.","instanceShell.worktree.delete.error.nextStep.permissionDenied":"Revisa los permisos del sistema de archivos y cierra aplicaciones que puedan estar bloqueando este directorio, luego vuelve a intentarlo.","instanceShell.worktree.delete.error.nextStep.unknown":"Revisa el error sin procesar de abajo para ver los detalles y vuelve a intentarlo despues de corregir el problema indicado.","instanceShell.worktree.delete.error.copyRaw":"Copiar error","instanceShell.worktree.delete.error.copySanitized":"Copiar saneado","instanceShell.worktree.delete.error.copySuccess":"Error de eliminacion copiado","instanceShell.worktree.delete.error.copySanitizedSuccess":"Error de eliminacion saneado copiado","instanceShell.worktree.delete.error.copyFailure":"No se pudo copiar el error de eliminacion","versionPill.appWithVersion":"App {version}","versionPill.ui":"UI","versionPill.uiWithVersion":"UI {version}","versionPill.source":" ({source})","opencodeBinarySelector.title":"Binario de OpenCode","opencodeBinarySelector.subtitle":"Elige qué ejecutable de OpenCode debe ejecutarse","opencodeBinarySelector.customPath.placeholder":"Introduce la ruta al binario de opencode…","opencodeBinarySelector.actions.add":"Agregar","opencodeBinarySelector.actions.browse":"Explorar binario…","opencodeBinarySelector.actions.removeTitle":"Quitar binario","opencodeBinarySelector.badge.systemPath":"Usar binario del PATH del sistema","opencodeBinarySelector.status.checkingVersions":"Comprobando versiones…","opencodeBinarySelector.status.checking":"Comprobando…","opencodeBinarySelector.dialog.title":"Seleccionar binario de OpenCode","opencodeBinarySelector.dialog.description":"Explora los archivos expuestos por el servidor del CLI.","opencodeBinarySelector.validation.invalidBinary":"Binario de OpenCode no válido","opencodeBinarySelector.validation.alreadyValidating":"Ya se está validando","opencodeBinarySelector.display.systemPath":"{name} (PATH del sistema)","opencodeBinarySelector.versionLabel":"v{version}"},l={"loadingScreen.logoAlt":"Logo de CodeNomad","loadingScreen.status.issue":"Se produjo un problema","loadingScreen.actions.showAnother":"Mostrar otra","loadingScreen.errors.missingRoot":"No se encontró el elemento raíz de carga","loadingScreen.phrases.neurons":"Calentando las neuronas de la IA…","loadingScreen.phrases.daydreaming":"Convenciendo a la IA de dejar de soñar despierta…","loadingScreen.phrases.goggles":"Puliendo las gafas de código de la IA…","loadingScreen.phrases.reorganizingFiles":"Pidiéndole a la IA que deje de reorganizar tus archivos…","loadingScreen.phrases.coffee":"Dándole más café a la IA…","loadingScreen.phrases.nodeModules":"Enseñándole a la IA a no borrar node_modules (otra vez)…","loadingScreen.phrases.actNatural":"Diciéndole a la IA que actúe natural antes de que llegues…","loadingScreen.phrases.rewritingHistory":"Pidiéndole a la IA que deje de reescribir la historia…","loadingScreen.phrases.stretch":"Dejando que la IA se estire antes de su sprint de código…","loadingScreen.phrases.keyboardControl":"Convenciendo a la IA de devolverte el control del teclado…"},c={"logsView.title":"Registros del servidor","logsView.actions.show":"Mostrar registros del servidor","logsView.actions.hide":"Ocultar registros del servidor","logsView.envVars.title":"Variables de entorno ({count})","logsView.paused.title":"Los registros del servidor están en pausa","logsView.paused.description":"Activa el streaming para ver la actividad de tu servidor de OpenCode.","logsView.empty.waiting":"Esperando la salida del servidor...","logsView.scrollToBottom":"Desplazarse al final","infoView.logs.title":"Registros del servidor","infoView.logs.actions.show":"Mostrar registros del servidor","infoView.logs.actions.hide":"Ocultar registros del servidor","infoView.logs.paused.title":"Los registros del servidor están en pausa","infoView.logs.paused.description":"Activa el streaming para ver la actividad de tu servidor de OpenCode.","infoView.logs.empty.waiting":"Esperando la salida del servidor...","infoView.logs.scrollToBottom":"Desplazarse al final","infoView.dispose.actions.dispose":"Desechar instancia","infoView.dispose.actions.disposing":"Desechando...","infoView.dispose.confirm.title":"¿Desechar instancia?","infoView.dispose.confirm.message":"Esto borra el estado en caché por proyecto para este directorio y recarga la instancia.","infoView.dispose.confirm.confirmLabel":"Desechar","infoView.dispose.confirm.cancelLabel":"Cancelar","infoView.dispose.toast.success":"Instancia desechada. Recargando...","infoView.dispose.toast.error":"No se pudo desechar la instancia."},d={"markdown.codeBlock.copy.label":"Copiar","markdown.codeBlock.copy.copied":"¡Copiado!","markdown.codeBlock.copy.failed":"Error","markdown.copy":"Copiar"},m={"messageListHeader.sidebar.openSessionListAriaLabel":"Abrir lista de sesiones","messageListHeader.metrics.usedLabel":"Usado","messageListHeader.metrics.availableLabel":"Disp.","messageListHeader.commandPalette.ariaLabel":"Abrir paleta de comandos","messageListHeader.commandPalette.button":"Paleta de comandos","messageListHeader.connection.connected":"Conectado","messageListHeader.connection.connecting":"Conectando...","messageListHeader.connection.disconnected":"Desconectado","messageSection.empty.logoAlt":"Logo de CodeNomad","messageSection.empty.brandTitle":"CodeNomad","messageSection.empty.title":"Inicia una conversación","messageSection.empty.description":"Escribe un mensaje abajo o abre la Paleta de comandos:","messageSection.empty.tips.commandPalette":"Paleta de comandos","messageSection.empty.tips.askAboutCodebase":"Pregunta sobre tu codebase","messageSection.empty.tips.attachFilesPrefix":"Adjunta archivos con","messageSection.loading.messages":"Cargando mensajes...","messageSection.scroll.toFirstAriaLabel":"Desplazarse al primer mensaje","messageSection.scroll.toLatestAriaLabel":"Desplazarse al último mensaje","messageSection.scroll.enableHoldAriaLabel":"Activar pausa para respuestas largas del asistente","messageSection.scroll.disableHoldAriaLabel":"Desactivar pausa para respuestas largas del asistente","messageSection.quote.addAsQuote":"Añadir como cita","messageSection.quote.addAsCode":"Añadir como código","messageSection.quote.copy":"Copiar","messageSection.quote.copied":"¡Copiado!","messageSection.quote.copyFailed":"No se pudo copiar","messageTimeline.ariaLabel":"Línea de tiempo de mensajes","messageTimeline.segment.user.label":"Tú","messageTimeline.segment.assistant.label":"Asist.","messageTimeline.segment.compaction.label":"Compactación","messageTimeline.tool.fallbackLabel":"Llamada de herramienta","messageTimeline.tooltip.userFallback":"Mensaje del usuario","messageTimeline.tooltip.assistantFallback":"Respuesta del asistente","messageTimeline.tooltip.compaction.auto":"Compactación automática","messageTimeline.tooltip.compaction.manual":"Compactación manual","messageTimeline.text.filePrefix":"[Archivo] {filename}","messageTimeline.text.attachment":"Adjunto","messageBlock.tool.header":"Llamada de herramienta","messageBlock.tool.unknown":"desconocido","messageBlock.tool.goToSession.label":"Ir a sesión","messageBlock.tool.goToSession.title":"Ir a la sesión","messageBlock.tool.goToSession.unavailableTitle":"La sesión aún no está disponible","messageBlock.tool.deletePart.label":"Eliminar parte","messageBlock.tool.deletePart.deleting":"Eliminando...","messageBlock.tool.deletePart.title":"Eliminar esta salida de herramienta","messageBlock.tool.deletePart.failed.title":"Error al eliminar","messageBlock.tool.deletePart.failed.message":"No se pudo eliminar la salida de herramienta","messageBlock.compaction.ariaLabel":"Compactación de sesión","messageBlock.compaction.autoLabel":"Sesión compactada automáticamente","messageBlock.compaction.manualLabel":"Sesión compactada por ti","messageBlock.usage.input":"Entrada","messageBlock.usage.output":"Salida","messageBlock.usage.reasoning":"Razonamiento","messageBlock.usage.cacheRead":"Lectura de cache","messageBlock.usage.cacheWrite":"Escritura de cache","messageBlock.usage.cost":"Costo","messageBlock.step.agentLabel":"Agente: {agent}","messageBlock.step.modelLabel":"Modelo: {model}","messageBlock.reasoning.thinkingLabel":"Pensamiento","messageBlock.reasoning.expandAriaLabel":"Expandir pensamiento","messageBlock.reasoning.collapseAriaLabel":"Colapsar pensamiento","messageBlock.reasoning.indicator.hide":"Ocultar","messageBlock.reasoning.indicator.view":"Ver","messageBlock.reasoning.detailsAriaLabel":"Detalles del razonamiento","codeBlockInline.actions.copy":"Copiar","codeBlockInline.actions.copied":"¡Copiado!","messageItem.speaker.you":"Tú","messageItem.speaker.assistant":"Asistente","messageItem.actions.revert":"Revertir","messageItem.actions.revertTitle":"Deshacer cambios hasta aqui (elimina mensajes)","messageItem.actions.fork":"Fork","messageItem.actions.forkTitle":"Fork desde este mensaje","messageItem.actions.copy":"Copiar","messageItem.actions.copyTitle":"Copiar mensaje","messageItem.actions.copied":"¡Copiado!","messageItem.actions.speak":"Reproducir mensaje","messageItem.actions.generatingSpeech":"Generando audio","messageItem.actions.stopSpeech":"Detener reproduccion","messageItem.actions.speak.error.title":"La reproduccion de voz fallo","messageItem.actions.speak.error.unsupported":"La reproduccion de voz no es compatible con este navegador.","messageItem.actions.speak.error.unavailable":"La reproduccion de voz no estara disponible hasta que la configuracion de voz este lista.","messageItem.actions.speak.error.generate":"No se pudo generar audio para este mensaje.","messageItem.actions.deleteMessage":"Eliminar mensaje (no deshace cambios)","messageItem.actions.deleteMessagesUpTo":"Eliminar mensajes hasta aqui (no deshace cambios)","messageItem.actions.deletingMessage":"Eliminando...","messageItem.actions.deleteMessageFailedTitle":"Error al eliminar","messageItem.actions.deleteMessageFailedMessage":"No se pudo eliminar el mensaje","messageItem.selection.checkboxAriaLabel":"Seleccionar mensaje para eliminar","messageSection.bulkDelete.toolbarAriaLabel":"Elementos seleccionados ({count})","messageSection.bulkDelete.deleteSelectedTitle":"Eliminar elementos seleccionados","messageSection.bulkDelete.selectAllTitle":"Seleccionar todos los mensajes","messageSection.bulkDelete.moreOptionsTitle":"Más opciones","messageSection.bulkDelete.selectionModeLabel":"Selección","messageSection.bulkDelete.selectionModeAll":"Todo","messageSection.bulkDelete.selectionModeTools":"Solo herramientas","messageSection.bulkDelete.selectionHint.toggle":"Seleccionar elemento","messageSection.bulkDelete.selectionHint.range":"Seleccionar rango","messageSection.bulkDelete.selectionHint.clear":"Borrar selección","messageSection.bulkDelete.cancelTitle":"Cancelar selección","messageSection.bulkDelete.failedTitle":"Error al eliminar","messageSection.bulkDelete.failedMessage":"No se pudieron eliminar los elementos seleccionados","messageItem.status.queued":"EN COLA","messageItem.status.generating":"Generando...","messageItem.status.sending":"Enviando...","messageItem.status.failedToSend":"No se pudo enviar el mensaje","messagePart.actions.delete":"Eliminar parte","messagePart.actions.deleting":"Eliminando...","messagePart.actions.deleteTitle":"Eliminar este elemento","messagePart.actions.deleteFailedTitle":"Error al eliminar","messagePart.actions.deleteFailedMessage":"No se pudo eliminar el elemento","messageItem.attachment.defaultName":"adjunto","messageItem.attachment.downloadAriaLabel":"Descargar {name}","messageItem.agentMeta.agentLabel":"Agente: {agent}","messageItem.agentMeta.modelLabel":"Modelo: {model}","messageItem.errors.authenticationFallback":"Error de autenticación","messageItem.errors.outputLengthExceeded":"Se excedió la longitud de salida del mensaje","messageItem.errors.requestAborted":"La solicitud fue abortada","messageItem.errors.unknownFallback":"Se produjo un error desconocido","attachmentChip.removeAriaLabel":"Quitar adjunto","expandButton.toggleAriaLabel":"Alternar altura de entrada del chat","promptInput.placeholder.shell":"Ejecuta un comando de shell (Esc para salir)...","promptInput.placeholder.default":"Escribe tu mensaje, @file, @agent, o pega imágenes y texto...","promptInput.hints.shell.exit":"para salir del modo shell","promptInput.hints.shell.enable":"Modo shell","promptInput.hints.commands":"Comandos","promptInput.history.previousAriaLabel":"Prompt anterior","promptInput.history.nextAriaLabel":"Siguiente prompt","promptInput.overlay.newLine":"Nueva línea","promptInput.overlay.send":"Enviar","promptInput.overlay.filesAgents":"Archivos/agentes","promptInput.overlay.history":"Historial","promptInput.overlay.attachments":"• {count} archivo(s) adjunto(s)","promptInput.overlay.shellModeActive":"Modo shell activo","promptInput.overlay.press":"Pulsa","promptInput.overlay.againToAbort":"otra vez para abortar la sesión","promptInput.stopSession.ariaLabel":"Detener sesión","promptInput.stopSession.title":"Detener sesión","promptInput.clear.ariaLabel":"Borrar el texto del prompt","promptInput.clear.title":"Borrar el texto del prompt","promptInput.send.ariaLabel":"Enviar mensaje","promptInput.send.errorFallback":"No se pudo enviar el mensaje","promptInput.send.errorTitle":"Error al enviar","promptInput.conversationMode.enable.title":"Activar modo conversacion","promptInput.conversationMode.disable.title":"Desactivar modo conversacion","promptInput.conversationMode.error.title":"Fallo la reproduccion de la conversacion","promptInput.conversationMode.error.message":"No se pudieron seguir reproduciendo las respuestas del asistente.","promptInput.voiceInput.start.title":"Iniciar entrada de voz","promptInput.voiceInput.stop.title":"Detener grabación y transcribir","promptInput.voiceInput.transcribing.title":"Transcribiendo audio","promptInput.voiceInput.error.title":"La entrada de voz falló","promptInput.voiceInput.error.permission":"Se requiere acceso al micrófono para grabar la entrada de voz.","promptInput.voiceInput.error.permissionDenied":"macOS denegó el acceso al micrófono.","promptInput.voiceInput.error.unsupported":"La entrada de voz no es compatible con este navegador.","promptInput.voiceInput.error.transcribe":"No se pudo transcribir el audio grabado."},p={"remoteAccess.eyebrow":"Transferencia remota","remoteAccess.title":"Conectar a CodeNomad de forma remota","remoteAccess.subtitle":"Usa las direcciones de abajo para abrir CodeNomad desde otro dispositivo.","remoteAccess.close":"Cerrar acceso remoto","remoteAccess.refresh":"Actualizar","remoteAccess.sections.listeningMode.label":"Modo de escucha","remoteAccess.sections.listeningMode.help":"Permite o limita las transferencias remotas vinculando a todas las interfaces o solo a localhost.","remoteAccess.toggle.on":"Activado","remoteAccess.toggle.off":"Desactivado","remoteAccess.toggle.title":"Permitir conexiones desde otras IP","remoteAccess.toggle.caption.all":"Vinculado a 0.0.0.0","remoteAccess.toggle.caption.local":"Vinculado a 127.0.0.1","remoteAccess.toggle.note":"Cambiar esto requiere reiniciar y detiene temporalmente todas las instancias activas. Comparte las direcciones de abajo una vez que el servidor se reinicie.","remoteAccess.listeningMode.restartConfirm.message":"¿Reiniciar para aplicar el modo de escucha? Esto detendrá todas las instancias en ejecución.","remoteAccess.listeningMode.restartConfirm.title.all":"Abrir a otros dispositivos","remoteAccess.listeningMode.restartConfirm.title.local":"Limitar a este dispositivo","remoteAccess.listeningMode.restartConfirm.confirmLabel":"Reiniciar ahora","remoteAccess.listeningMode.restartConfirm.cancelLabel":"Cancelar","remoteAccess.restart.errorManual":"No se pudo reiniciar automáticamente. Reinicia la app para aplicar el cambio.","remoteAccess.sections.serverPassword.label":"Contraseña del servidor","remoteAccess.sections.serverPassword.help":"Las transferencias remotas requieren una contraseña. Define una fácil de recordar para habilitar inicios de sesión desde otros dispositivos.","remoteAccess.authStatus.unavailable":"Estado de autenticación no disponible.","remoteAccess.username":"Usuario: {username}","remoteAccess.password.status.set":"Hay una contraseña configurada para el acceso remoto.","remoteAccess.password.status.unset":"Aún no hay una contraseña fácil de recordar. Configura una para permitir inicios de sesión por transferencia remota.","remoteAccess.password.actions.cancel":"Cancelar","remoteAccess.password.actions.change":"Cambiar contraseña","remoteAccess.password.actions.set":"Configurar contraseña","remoteAccess.password.form.newPassword":"Nueva contraseña","remoteAccess.password.form.confirmPassword":"Confirmar contraseña","remoteAccess.password.form.placeholder":"Al menos 8 caracteres","remoteAccess.password.error.tooShort":"La contraseña debe tener al menos 8 caracteres.","remoteAccess.password.error.mismatch":"Las contraseñas no coinciden.","remoteAccess.password.save.saving":"Guardando…","remoteAccess.password.save.label":"Guardar contraseña","remoteAccess.sections.addresses.label":"Direcciones accesibles","remoteAccess.sections.addresses.help":"Abre o escanea desde otra máquina para transferir el control.","remoteAccess.addresses.loading":"Cargando direcciones…","remoteAccess.addresses.none":"Aún no hay direcciones disponibles.","remoteAccess.addresses.actions.showOther":"Mostrar {count} direcciones más","remoteAccess.addresses.actions.hideOther":"Ocultar otras direcciones","remoteAccess.address.scope.network":"Red","remoteAccess.address.scope.loopback":"Loopback","remoteAccess.address.scope.internal":"Interna","remoteAccess.address.open":"Abrir","remoteAccess.address.showQr":"Mostrar QR","remoteAccess.address.hideQr":"Ocultar QR","remoteAccess.address.qrAlt":"QR para {url}"},u={"sessionPicker.title":"OpenCode • {folder}","sessionPicker.empty.noPrevious":"No hay sesiones anteriores","sessionPicker.resume.title":"Reanudar una sesión ({count}):","sessionPicker.session.untitled":"Sin título","sessionPicker.divider.or":"o","sessionPicker.new.title":"Iniciar nueva sesión:","sessionPicker.agents.loading":"Cargando agentes...","sessionPicker.actions.creating":"Creando...","sessionPicker.actions.createSession":"Crear sesión","sessionPicker.actions.cancel":"Cancelar","sessionList.header.title":"Sesiones","sessionList.session.untitled":"Sin título","sessionList.status.working":"Trabajando","sessionList.status.compacting":"Compactando","sessionList.status.idle":"Inactiva","sessionList.status.retrying":"Reintentando","sessionList.status.retryingIn":"Reintentando en {seconds}s","sessionList.status.retryTooltip":"{message} (Intento {attempt})","sessionList.status.retryToast":"{countdown}: {message} (Intento {attempt})","sessionList.status.needsPermission":"Requiere permiso","sessionList.status.needsInput":"Requiere entrada","sessionList.expand.collapseAriaLabel":"Colapsar sesión","sessionList.expand.expandAriaLabel":"Expandir sesión","sessionList.expand.collapseTitle":"Colapsar","sessionList.expand.expandTitle":"Expandir","sessionList.actions.newSession.ariaLabel":"Nueva sesión","sessionList.actions.newSession.title":"Nueva sesión","sessionList.actions.copyId.ariaLabel":"Copiar ID de sesión","sessionList.actions.copyId.title":"Copiar ID de sesión","sessionList.actions.reload.ariaLabel":"Recargar sesión","sessionList.actions.reload.title":"Recargar sesión","sessionList.actions.rename.ariaLabel":"Renombrar sesión","sessionList.actions.rename.title":"Renombrar sesión","sessionList.actions.delete.ariaLabel":"Eliminar sesión","sessionList.actions.delete.title":"Eliminar sesión","sessionList.copyId.success":"ID de sesión copiado","sessionList.copyId.error":"No se pudo copiar el ID de sesión","sessionList.reload.error":"No se pudo recargar la sesión","sessionList.delete.error":"No se pudo eliminar la sesión","sessionList.delete.title":"Eliminar sesión","sessionList.delete.confirmMessage":'¿Eliminar "{label}"? Esto no se puede deshacer.',"sessionList.delete.confirmLabel":"Eliminar","sessionList.delete.cancelLabel":"Cancelar","sessionList.rename.error":"No se pudo renombrar la sesión","sessionList.filter.placeholder":"Buscar sesiones…","sessionList.filter.ariaLabel":"Buscar sesiones","sessionList.selection.selectAllLabel":"Seleccionar todo","sessionList.selection.selectAllAriaLabel":"Seleccionar todas las sesiones","sessionList.selection.clearLabel":"Limpiar","sessionList.selection.clearAriaLabel":"Limpiar selección","sessionList.selection.checkboxAriaLabel":"Seleccionar sesión","sessionList.bulkDelete.button":"Eliminar {count}","sessionList.bulkDelete.ariaLabel":"Eliminar {count} sesiones seleccionadas","sessionList.bulkDelete.title":"Eliminar sesiones","sessionList.bulkDelete.confirmMessage":"¿Eliminar {count} sesiones seleccionadas? Esto no se puede deshacer.","sessionList.bulkDelete.confirmLabel":"Eliminar","sessionList.bulkDelete.cancelLabel":"Cancelar","sessionList.bulkDelete.error":"No se pudieron eliminar {count} sesiones","sessionRenameDialog.title":"Renombrar sesión","sessionRenameDialog.description.withLabel":'Actualiza el título de "{label}".',"sessionRenameDialog.description.default":"Establece un nuevo título para esta sesión.","sessionRenameDialog.input.label":"Nombre de la sesión","sessionRenameDialog.input.placeholder":"Introduce un nombre de sesión","sessionRenameDialog.actions.cancel":"Cancelar","sessionRenameDialog.actions.rename":"Renombrar","sessionRenameDialog.actions.renaming":"Renombrando…","sessionView.fallback.sessionNotFound":"No se encontró la sesión","sessionView.alerts.abortFailed.message":"No se pudo detener la sesión","sessionView.alerts.abortFailed.title":"No se pudo detener","sessionView.alerts.revertFailed.message":"No se pudo revertir al mensaje","sessionView.alerts.revertFailed.title":"No se pudo revertir","sessionView.alerts.deleteUpToFailed.message":"No se pudieron eliminar los mensajes","sessionView.alerts.deleteUpToFailed.title":"Error al eliminar","sessionView.alerts.forkFailed.message":"No se pudo hacer fork de la sesión","sessionView.alerts.forkFailed.title":"No se pudo hacer fork","sessionView.attachments.expandPastedTextAriaLabel":"Expandir texto pegado","sessionView.attachments.insertPastedTextTitle":"Insertar texto pegado","sessionView.attachments.removeAriaLabel":"Quitar adjunto","sessionEvents.sessionCompactedToast":"La sesión {label} fue compactada","sessionEvents.sessionError.unknown":"Error desconocido","sessionEvents.sessionError.title":"Error de sesión","sessionEvents.sessionError.message":"Error: {message}","sessionState.cleanup.deepConfirm.message":"Esta limpieza puede ser lenta y puede eliminar sesiones que no pretendías eliminar. ¿Estás seguro?","sessionState.cleanup.deepConfirm.title":"Limpieza profunda de sesiones","sessionState.cleanup.deepConfirm.detail":"La limpieza profunda de sesiones eliminará todas las sesiones sin mensajes, quitará cualquier sesión de subagente finalizada y limpiará cualquier fork no usado de una sesión.","sessionState.cleanup.deepConfirm.confirmLabel":"Continuar","sessionState.cleanup.deepConfirm.cancelLabel":"Cancelar","sessionState.cleanup.toast.one":"Se limpió {count} sesión vacía","sessionState.cleanup.toast.other":"Se limpiaron {count} sesiones vacías"},g={"instanceServiceStatus.sections.lsp":"Servidores LSP","instanceServiceStatus.sections.mcp":"Servidores MCP","instanceServiceStatus.sections.plugins":"Plugins","instanceServiceStatus.lsp.loading":"Cargando servidores LSP...","instanceServiceStatus.lsp.empty":"No se detectaron servidores LSP.","instanceServiceStatus.lsp.status.connected":"Conectado","instanceServiceStatus.lsp.status.error":"Error","instanceServiceStatus.mcp.loading":"Cargando servidores MCP...","instanceServiceStatus.mcp.empty":"No se detectaron servidores MCP.","instanceServiceStatus.mcp.toggleAriaLabel":"Alternar servidor MCP {name}","instanceServiceStatus.plugins.loading":"Cargando plugins...","instanceServiceStatus.plugins.empty":"No hay plugins configurados.","permissionBanner.pendingRequests.one":"{count} solicitud pendiente","permissionBanner.pendingRequests.other":"{count} solicitudes pendientes","permissionBanner.detail.permission.one":"{count} permiso","permissionBanner.detail.permission.other":"{count} permisos","permissionBanner.detail.question.one":"{count} pregunta","permissionBanner.detail.question.other":"{count} preguntas","permissionBanner.detail.wrapper":" ({detail})","agentSelector.placeholder":"Seleccionar agente...","agentSelector.badge.subagent":"subagente","agentSelector.none":"Ninguno","agentSelector.trigger.primary":"Agente: {agent}","modelSelector.placeholder.search":"Buscar modelos...","modelSelector.none":"Ninguno","modelSelector.trigger.primary":"Modelo: {model}","modelSelector.favoritesOnly.toggle.ariaLabel":"Alternar solo favoritos","modelSelector.favoritesOnly.showAll":"Mostrar todos los modelos","modelSelector.favorite.add":"Agregar a favoritos","modelSelector.favorite.remove":"Quitar de favoritos","thinkingSelector.variant.default":"Por defecto","thinkingSelector.label":"Pensamiento: {variant}","envEditor.title":"Variables de entorno","envEditor.count.one":"({count} variable)","envEditor.count.other":"({count} variables)","envEditor.fields.name.placeholder":"Nombre de la variable","envEditor.fields.name.readOnlyTitle":"Nombre de la variable (solo lectura)","envEditor.fields.value.placeholder":"Valor de la variable","envEditor.actions.remove.title":"Quitar variable","envEditor.actions.add.title":"Agregar variable","envEditor.empty":"No hay variables de entorno configuradas. Agrega variables arriba para personalizar el entorno de OpenCode.","envEditor.help":"Estas variables estarán disponibles en el entorno de OpenCode al iniciar instancias.","contextUsagePanel.headings.tokens":"Tokens","contextUsagePanel.headings.context":"Contexto","contextUsagePanel.labels.input":"Entrada","contextUsagePanel.labels.output":"Salida","contextUsagePanel.labels.cost":"Costo","contextUsagePanel.labels.used":"Usado","contextUsagePanel.labels.available":"Disp.","contextUsagePanel.unavailable":"--","settings.title":"Settings","settings.navigationAriaLabel":"Settings sections","settings.close":"Close settings","settings.content.eyebrow":"Workspace preferences","settings.open.title":"Open settings","settings.open.ariaLabel":"Open settings","settings.nav.appearance":"Appearance","settings.nav.notifications":"Notifications","settings.nav.remote":"Remote Access","settings.nav.speech":"Speech","settings.nav.opencode":"OpenCode","settings.scope.device":"This device","settings.scope.server":"Server setting","settings.common.enabled":"Enabled","settings.common.disabled":"Desactivado","settings.section.appearance.title":"Appearance","settings.section.appearance.subtitle":"Adjust how the app looks on this device.","settings.appearance.theme.title":"Theme","settings.appearance.theme.subtitle":"Choose the color mode used throughout the app.","settings.appearance.theme.option.system":"Match your operating system setting","settings.appearance.theme.option.light":"Use the light appearance","settings.appearance.theme.option.dark":"Use the dark appearance","settings.section.notifications.title":"Notifications","settings.section.notifications.subtitle":"Control OS-level notifications for session activity.","settings.notifications.permission.granted":"Granted","settings.notifications.permission.denied":"Denied","settings.notifications.permission.default":"Not granted","settings.notifications.permission.unsupported":"Unsupported","settings.notifications.messages.unsupportedEnvironment":"OS notifications are not supported in this environment.","settings.notifications.messages.permissionDenied":"Notification permission denied. Enable notifications in your system or browser settings.","settings.notifications.messages.permissionNotGranted":"Notification permission not granted.","settings.notifications.messages.unsupportedGeneral":"Notifications are not supported in this environment.","settings.notifications.messages.permissionGranted":"Permission granted. You can now enable notifications.","settings.notifications.messages.permissionRequestDenied":"Permission denied. You may need to enable notifications in your system or browser settings.","settings.notifications.sessionStatus.title":"Session status notifications","settings.notifications.sessionStatus.subtitle":"Receive alerts when sessions need your attention.","settings.notifications.enable.title":"Enable notifications","settings.notifications.enable.permission":"Permission: {permission}","settings.notifications.requestPermission.title":"Request permission","settings.notifications.requestPermission.subtitle":"Allow the app to send notifications on this device.","settings.notifications.requestPermission.action":"Request","settings.notifications.allowVisible.title":"Notify when the app is focused","settings.notifications.allowVisible.subtitle":"Keep alerts enabled even while this window is visible.","settings.notifications.unsupportedNote":"Notifications are not supported in this environment. The notifications control stays disabled.","settings.notifications.events.title":"Notify me when","settings.notifications.events.subtitle":"Choose which session events should send alerts.","settings.notifications.events.needsInput":"Session needs input","settings.notifications.events.idle":"Session becomes idle","settings.notifications.status.enabled":"Notifications enabled","settings.notifications.status.disabled":"Notifications disabled","settings.notifications.status.unsupported":"Notifications unsupported","settings.section.remote.title":"Remote Access","settings.section.remote.subtitle":"Review how this server is exposed on your network and secure access credentials.","settings.section.opencode.title":"OpenCode","settings.section.opencode.subtitle":"Choose the OpenCode binary and environment used for new instances.","settings.opencode.runtime.title":"Runtime","settings.opencode.runtime.subtitle":"Configure which OpenCode binary new instances launch with.","settings.opencode.logLevel.title":"Nivel de logs de OpenCode","settings.opencode.logLevel.subtitle":"Define el nivel de logs usado al iniciar nuevas instancias de OpenCode.","settings.opencode.logLevel.selector.title":"Verbosidad de logs","settings.opencode.logLevel.selector.subtitle":"Elige cuanta informacion deben registrar las nuevas instancias de OpenCode.","settings.opencode.logLevel.option.debug":"Depuracion","settings.opencode.logLevel.option.info":"Informacion","settings.opencode.logLevel.option.warn":"Advertencia","settings.opencode.logLevel.option.error":"Error","settings.appearance.behavior.title":"Interaccion","settings.appearance.behavior.subtitle":"Valores predeterminados de mensajes, diffs y entrada.","settings.behavior.keyboardHints.title":"Sugerencias de atajos de teclado","settings.behavior.keyboardHints.subtitle":"Muestra sugerencias de atajos de teclado en toda la interfaz.","settings.behavior.thinking.title":"Secciones de pensamiento","settings.behavior.thinking.subtitle":"Muestra u oculta las secciones de pensamiento de la IA en los mensajes.","settings.behavior.thinkingDefault.title":"Pensamiento por defecto","settings.behavior.thinkingDefault.subtitle":"Elige si las secciones de pensamiento comienzan expandidas o contraidas.","settings.behavior.timelineTools.title":"Llamadas de herramientas en la linea de tiempo","settings.behavior.timelineTools.subtitle":"Muestra u oculta entradas de llamadas de herramientas en la linea de tiempo de mensajes.","settings.behavior.diffView.title":"Vista de diferencias","settings.behavior.diffView.subtitle":"Elige como se muestran los diffs de llamadas de herramientas.","settings.behavior.diffView.option.split":"Dividida","settings.behavior.diffView.option.unified":"Unificada","settings.behavior.toolOutputsDefault.title":"Salidas de herramientas por defecto","settings.behavior.toolOutputsDefault.subtitle":"Elige si las salidas de herramientas comienzan expandidas o contraidas.","settings.behavior.diagnosticsDefault.title":"Diagnosticos por defecto","settings.behavior.diagnosticsDefault.subtitle":"Elige si la salida de diagnosticos comienza expandida o contraida.","settings.behavior.toolInputsVisibility.title":"Visibilidad de entradas de herramientas","settings.behavior.toolInputsVisibility.subtitle":"Establece la visibilidad por defecto de los argumentos de entrada de las llamadas de herramientas.","settings.behavior.usageMetrics.title":"Metricas de uso de tokens","settings.behavior.usageMetrics.subtitle":"Muestra u oculta estadisticas de tokens y costo en mensajes del asistente.","settings.behavior.autoCleanup.title":"Limpieza automatica de sesiones en blanco","settings.behavior.autoCleanup.subtitle":"Limpia automaticamente las sesiones en blanco al crear nuevas.","settings.behavior.promptVoiceInput.title":"Prompt voice input","settings.behavior.promptVoiceInput.subtitle":"Show the microphone control for speech-to-text prompt input when speech is configured.","settings.behavior.promptSubmit.title":"Enter para enviar","settings.behavior.promptSubmit.subtitle":"Usa Enter para enviar; Cmd/Ctrl+Enter inserta una nueva linea.","settings.speech.title":"Voz","settings.speech.subtitle":"Configura ahora el reconocimiento de voz y prepara la base de texto a voz para funciones futuras.","settings.speech.provider.title":"Proveedor","settings.speech.provider.subtitle":"Las solicitudes de voz usan el adaptador de voz del servidor.","settings.speech.provider.openaiCompatible":"OpenAI-compatible","settings.speech.status.loading":"Comprobando configuración...","settings.speech.status.configured":"Configurado","settings.speech.status.missing":"Falta la clave API","settings.speech.status.error":"Servicio de voz no disponible","settings.speech.apiKey.title":"API key","settings.speech.apiKey.subtitle":"Se usa para las solicitudes de voz gestionadas por CodeNomad.","settings.speech.apiKey.placeholder":"Introduce una nueva clave API","settings.speech.apiKey.storedNote":"Hay una clave API guardada y oculta. Introduce un nuevo valor para reemplazarla o deja el campo vacío para conservarla.","settings.speech.apiKey.clearAction":"Borrar clave guardada","settings.speech.apiKey.clearPending":"La clave API guardada se eliminará al guardar.","settings.speech.baseUrl.title":"Base URL","settings.speech.baseUrl.subtitle":"Anulación opcional para endpoints de voz compatibles con OpenAI.","settings.speech.baseUrl.placeholder":"https://api.openai.com/v1","settings.speech.sttModel.title":"Modelo de transcripción","settings.speech.sttModel.subtitle":"Modelo usado para las solicitudes de voz a texto en el prompt.","settings.speech.ttsModel.title":"Modelo de voz","settings.speech.ttsModel.subtitle":"Modelo predeterminado de texto a voz reservado para futuras funciones de reproducción.","settings.speech.ttsVoice.title":"Voz predeterminada","settings.speech.ttsVoice.subtitle":"Voz predeterminada de texto a voz reservada para futuras funciones de reproducción.","settings.speech.playbackMode.title":"Modo de reproduccion","settings.speech.playbackMode.subtitle":"Elige si TTS empieza a reproducirse mientras llega el audio o despues de generar el archivo completo.","settings.speech.playbackMode.streaming":"Streaming","settings.speech.playbackMode.buffered":"Buffered","settings.speech.ttsFormat.title":"Formato de salida","settings.speech.ttsFormat.subtitle":"Elige el formato de audio para la voz sintetizada. La compatibilidad de streaming depende de tu proveedor y navegador.","settings.speech.help":"La entrada de voz del prompt aparece cuando la transcripcion de voz esta configurada y es compatible. La reproduccion de mensajes usa el modo y formato TTS seleccionados aqui.","settings.speech.compatibility.streamingUnavailable":"Tu configuracion actual del proveedor de voz no anuncia TTS por streaming. Cambia el modo de reproduccion a buffered si quieres que la reproduccion funcione ahora.","settings.speech.compatibility.browserStreamingUnavailable":"Tu navegador actual no puede reproducir por streaming el formato TTS seleccionado. Elige reproduccion buffered o cambia a otro formato.","settings.speech.compatibility.runtimeNote":"Todos los formatos siguen disponibles en modo streaming. Algunas combinaciones de navegador y proveedor aun pueden fallar al reproducir.","settings.speech.testPlayback.action":"Probar reproduccion","settings.speech.testPlayback.generating":"Generando muestra","settings.speech.testPlayback.stop":"Detener muestra","settings.speech.testPlayback.sample":"Gracias por usar CodeNomad, tu configuracion de voz funciona correctamente.","settings.speech.testPlayback.note":"La prueba usa de inmediato el modo y formato actuales. Guarda primero los cambios de API key, base URL, modelo o voz si tambien quieres probarlos.","settings.speech.save.action":"Guardar","settings.speech.save.saving":"Guardando...","settings.speech.save.saved":"Guardado","settings.speech.save.unsaved":"Cambios sin guardar","settings.speech.save.error":"Error al guardar","settings.nav.sidecars":"SideCars","settings.section.sidecars.eyebrow":"Server services","settings.section.sidecars.title":"SideCars","settings.section.sidecars.subtitle":"Configure local services listening on fixed ports that the server can proxy into tabs.","sidecars.form.name":"Name","sidecars.form.validation":"Enter a valid SideCar name and port.","sidecars.form.port":"Port","sidecars.form.insecure":"Use HTTP","sidecars.form.protocol":"Protocol","sidecars.form.protocol.help":"Choose how the proxy should connect to the local service.","sidecars.form.protocol.https":"HTTPS","sidecars.form.protocol.http":"HTTP","sidecars.form.prefixMode":"Prefix mode","sidecars.form.prefixMode.help":"Choose whether the SideCar receives the public /sidecars path prefix.","sidecars.form.prefixMode.strip":"Strip prefix","sidecars.form.prefixMode.preserve":"Preserve prefix","sidecars.form.add":"Add SideCar","sidecars.kind.port":"Port","sidecars.status.running":"Running","sidecars.status.stopped":"Stopped","sidecars.basePath":"Base path","sidecars.settings.listTitle":"Configured SideCars","sidecars.settings.listSubtitle":"Review the port-based SideCars available in the picker.","sidecars.settings.empty":"No SideCars configured yet.","sidecars.picker.title":"Open SideCar","sidecars.picker.loading":"Loading SideCars...","sidecars.picker.subtitle":"Choose an available SideCar to open in a new tab.","sidecars.picker.empty":"No port-based SideCars are available yet.","sidecars.picker.close":"Close","sidecars.open.errorTitle":"Unable to open SideCar","sidecars.open.notFound":"SideCar not found.","sidecars.open.notRunning":"SideCar is not reachable on its configured port.","sidecars.back":"Back","sidecars.refresh":"Refresh","sidecars.path":"Path","sidecars.go":"Go"},b={"time.relative.justNow":"justo ahora","time.relative.daysAgoShort":"hace {count} d","time.relative.hoursAgoShort":"hace {count} h","time.relative.minutesAgoShort":"hace {count} m"},h={"toolCall.pending.waitingToRun":"Esperando para ejecutar...","toolCall.error.label":"Error:","toolCall.header.copyTitle":"Copy tool call title","toolCall.header.copyAriaLabel":"Copy tool call title","toolCall.header.showInputTitle":"Show Tool Arguments","toolCall.header.showInputAriaLabel":"Show Tool Arguments","toolCall.header.hideInputTitle":"Hide Tool Arguments","toolCall.header.hideInputAriaLabel":"Hide Tool Arguments","toolCall.io.input":"Tool Input","toolCall.io.output":"Tool Output","toolCall.diff.label":"Diff","toolCall.diff.label.withPath":"Diff · {path}","toolCall.diff.viewMode.ariaLabel":"Modo de vista de diff","toolCall.diff.viewMode.split":"Dividida","toolCall.diff.viewMode.unified":"Unificada","toolCall.diff.switchToSplit":"Cambiar a vista dividida","toolCall.diff.switchToUnified":"Cambiar a vista unificada","toolCall.diff.enableWordWrap":"Activar ajuste de línea","toolCall.diff.disableWordWrap":"Desactivar ajuste de línea","toolCall.diff.copyPatch":"Copiar patch","toolCall.diagnostics.title":"Diagnósticos","toolCall.diagnostics.ariaLabel":"Diagnósticos","toolCall.diagnostics.ariaLabel.withLabel":"Diagnósticos {label}","toolCall.diagnostics.severity.error.short":"ERR","toolCall.diagnostics.severity.warning.short":"WARN","toolCall.diagnostics.severity.info.short":"INFO","toolCall.renderer.toolName.shell":"Shell","toolCall.renderer.toolName.fetch":"Fetch","toolCall.renderer.toolName.invalid":"Inválido","toolCall.renderer.toolName.plan":"Plan","toolCall.renderer.toolName.applyPatch":"Aplicar patch","toolCall.renderer.action.working":"Trabajando...","toolCall.renderer.action.writingCommand":"Escribiendo comando...","toolCall.renderer.action.preparingEdit":"Preparando edición...","toolCall.renderer.action.readingFile":"Leyendo archivo...","toolCall.renderer.action.preparingWrite":"Preparando escritura...","toolCall.renderer.action.preparingPatch":"Preparando patch...","toolCall.renderer.action.planning":"Planificando...","toolCall.renderer.action.fetchingFromWeb":"Obteniendo desde la web...","toolCall.renderer.action.findingFiles":"Buscando archivos...","toolCall.renderer.action.searchingContent":"Buscando contenido...","toolCall.renderer.action.listingDirectory":"Listando directorio...","toolCall.renderer.bash.title.timeout":"Tiempo de espera: {timeout}","toolCall.renderer.read.detail.offset":"Desplazamiento: {offset}","toolCall.renderer.read.detail.limit":"Límite: {limit}","toolCall.renderer.todo.empty":"Aún no hay elementos del plan.","toolCall.renderer.todo.status.pending":"Pendiente","toolCall.renderer.todo.status.inProgress":"En progreso","toolCall.renderer.todo.status.completed":"Completado","toolCall.renderer.todo.status.cancelled":"Cancelado","toolCall.renderer.todo.title.plan":"Plan","toolCall.renderer.todo.title.creating":"Creando plan","toolCall.renderer.todo.title.completing":"Completando plan","toolCall.renderer.todo.title.updating":"Actualizando plan","toolCall.permission.status.required":"Permiso requerido","toolCall.permission.status.queued":"Permiso en cola","toolCall.permission.requestedDiff.label":"Diff solicitado","toolCall.permission.requestedDiff.withPath":"Diff solicitado · {path}","toolCall.permission.queuedText":"Esperando respuestas de permisos anteriores.","toolCall.permission.actions.allowOnce":"Permitir una vez","toolCall.permission.actions.alwaysAllow":"Permitir siempre","toolCall.permission.actions.deny":"Denegar","toolCall.permission.shortcuts.allowOnce":"Permitir una vez","toolCall.permission.shortcuts.alwaysAllow":"Permitir siempre","toolCall.permission.shortcuts.deny":"Denegar","toolCall.permission.errors.unableToUpdate":"No se pudo actualizar el permiso","permissionApproval.title":"Solicitudes","permissionApproval.empty":"No hay solicitudes pendientes.","permissionApproval.kind.permission":"Permiso","permissionApproval.kind.question":"Pregunta","permissionApproval.questionCount.one":"{count} pregunta","permissionApproval.questionCount.other":"{count} preguntas","permissionApproval.status.active":"Activa","permissionApproval.actions.closeAriaLabel":"Cerrar","permissionApproval.actions.goToSession":"Ir a sesión","permissionApproval.actions.loadingSession":"Cargando…","permissionApproval.actions.loadSession":"Cargar sesión","permissionApproval.actions.allowOnce":"Permitir una vez","permissionApproval.actions.alwaysAllow":"Permitir siempre","permissionApproval.actions.deny":"Denegar","permissionApproval.fallbackHint":"Carga la sesión para más información.","permissionApproval.errors.unableToUpdatePermission":"No se pudo actualizar el permiso","toolCall.question.status.required":"Pregunta requerida","toolCall.question.status.queued":"Pregunta en cola","toolCall.question.status.questions":"Preguntas","toolCall.question.action.awaitingAnswers":"Esperando respuestas...","toolCall.question.title.questions":"Preguntas","toolCall.question.title.askingQuestions":"Haciendo preguntas","toolCall.question.type.one":"Pregunta","toolCall.question.type.other":"Preguntas","toolCall.question.number":"P{number}:","toolCall.question.multiple":"Múltiple","toolCall.question.custom.title":"Escribe una respuesta personalizada","toolCall.question.custom.label":"Respuesta personalizada","toolCall.question.custom.placeholder":"Escribe tu propia respuesta","toolCall.question.actions.submit":"Enviar","toolCall.question.actions.dismiss":"Descartar","toolCall.question.shortcuts.submit":"Enviar","toolCall.question.shortcuts.dismiss":"Descartar","toolCall.question.queuedText":"Esperando respuestas anteriores.","toolCall.question.validation.answerAll":"Responde todas las preguntas antes de enviar.","toolCall.question.errors.unableToReply":"No se pudo responder","toolCall.question.errors.unableToDismiss":"No se pudo descartar","toolCall.task.action.delegating":"Delegando...","toolCall.task.sections.prompt":"Prompt","toolCall.task.sections.steps":"Pasos","toolCall.task.sections.output":"Salida","toolCall.task.steps.count":"{count} pasos","toolCall.task.meta.agentModel":"Agente: {agent} • Modelo: {model}","toolCall.task.meta.agent":"Agente: {agent}","toolCall.task.meta.model":"Modelo: {model}","toolCall.status.pending":"Pendiente","toolCall.status.running":"En ejecución","toolCall.status.completed":"Completado","toolCall.status.error":"Error","toolCall.status.unknown":"Desconocido","toolCall.applyPatch.action.preparing":"Preparando apply_patch...","toolCall.applyPatch.title.withFileCount.one":"{tool} ({count} archivo)","toolCall.applyPatch.title.withFileCount.other":"{tool} ({count} archivos)","toolCall.applyPatch.fileFallback":"Archivo {number}"},w=e(n,a,l,b,s,t,i,r,c,u,m,h,d,g,p,o);export{w as esMessages};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-KGa2MZ03.js","assets/git-diff-vendor-CSgooKT_.js","assets/fast-diff-vendor-DgdwVvTQ.js","assets/highlight-vendor-8FKMu9os.js","assets/git-diff-vendor-HAZkIolJ.css","assets/monaco-viewer-C8arwHE9.js","assets/index-Vi334d28.js","assets/index-DCKsvmLK.js","assets/index-D5K3x-5q.js","assets/index-Buu9pQM-.js","assets/index-DAUGrHIr.js"])))=>i.map(i=>d[i]);
2
+ import{d as R,t as Y,c as N,b as O,o as U,n as $,k as J,l as Z}from"./git-diff-vendor-CSgooKT_.js";import{l as X,k as ee}from"./monaco-viewer-C8arwHE9.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))o(n);new MutationObserver(n=>{for(const i of n)if(i.type==="childList")for(const a of i.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&o(a)}).observe(document,{childList:!0,subtree:!0});function s(n){const i={};return n.integrity&&(i.integrity=n.integrity),n.referrerPolicy&&(i.referrerPolicy=n.referrerPolicy),n.crossOrigin==="use-credentials"?i.credentials="include":n.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function o(n){if(n.ep)return;n.ep=!0;const i=s(n);fetch(n.href,i)}})();const te="modulepreload",se=function(e){return"/"+e},x={},S=function(t,s,o){let n=Promise.resolve();if(s&&s.length>0){document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),c=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));n=Promise.allSettled(s.map(m=>{if(m=se(m),m in x)return;x[m]=!0;const b=m.endsWith(".css"),y=b?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${m}"]${y}`))return;const p=document.createElement("link");if(p.rel=b?"stylesheet":te,b||(p.as="script"),p.crossOrigin="",p.href=m,c&&p.setAttribute("nonce",c),document.head.appendChild(p),b)return new Promise((D,T)=>{p.addEventListener("load",D),p.addEventListener("error",()=>T(new Error(`Unable to preload CSS for ${m}`)))})}))}function i(a){const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=a,window.dispatchEvent(c),!c.defaultPrevented)throw a}return n.then(a=>{for(const c of a||[])c.status==="rejected"&&i(c.reason);return t().catch(i)})},oe={"advancedSettings.title":"Advanced Settings","advancedSettings.environmentVariables.title":"Environment Variables","advancedSettings.environmentVariables.subtitle":"Applied whenever a new OpenCode instance starts","advancedSettings.actions.close":"Close"},ne={"app.launchError.title":"Unable to launch OpenCode","app.launchError.description":"We couldn't start the selected OpenCode binary. Review the error output below or choose a different binary from OpenCode settings.","app.launchError.binaryPathLabel":"Binary path","app.launchError.errorOutputLabel":"Error output","app.launchError.openAdvancedSettings":"Open OpenCode Settings","app.launchError.close":"Close","app.launchError.closeTitle":"Close (Esc)","app.launchError.fallbackMessage":"Failed to launch workspace","app.stopInstance.confirmMessage":"Stop OpenCode instance? This will stop the server.","app.stopInstance.title":"Stop instance","app.stopInstance.confirmLabel":"Stop","app.stopInstance.cancelLabel":"Keep running","emptyState.logoAlt":"CodeNomad logo","emptyState.brandTitle":"CodeNomad","emptyState.tagline":"Select a folder to start coding with AI","emptyState.actions.selectFolder":"Select Folder","emptyState.actions.selecting":"Selecting...","emptyState.keyboardShortcut":"Keyboard shortcut: {shortcut}","emptyState.examples":"Examples: {example}","emptyState.multipleInstances":"You can have multiple instances of the same folder","releases.upgradeRequired.title":"Upgrade required","releases.upgradeRequired.message.withVersion":"Update to CodeNomad {version} to use the latest UI.","releases.upgradeRequired.message.noVersion":"Update CodeNomad to use the latest UI.","releases.upgradeRequired.action.getUpdate":"Get update","releases.uiUpdated.title":"UI updated","releases.uiUpdated.message":"UI is now updated to {version}.","releases.devUpdateAvailable.title":"Dev build available","releases.devUpdateAvailable.message":"A new dev build is available: {version}.","releases.devUpdateAvailable.action":"View release","theme.mode.system":"System","theme.mode.light":"Light","theme.mode.dark":"Dark","theme.toggle.title":"Theme: {mode}","theme.toggle.ariaLabel":"Theme: {mode}"},ie={"commandPalette.title":"Command Palette","commandPalette.description":"Search and execute commands","commandPalette.searchPlaceholder":"Type a command or search...","commandPalette.empty":'No commands found for "{query}"',"commandPalette.category.customCommands":"Custom Commands","commandPalette.category.instance":"Instance","commandPalette.category.session":"Session","commandPalette.category.agentModel":"Agent & Model","commandPalette.category.inputFocus":"Input & Focus","commandPalette.category.system":"System","commandPalette.category.other":"Other","commands.newInstance.label":"New Instance","commands.newInstance.description":"Open folder picker to create new instance","commands.newInstance.keywords":"folder, project, workspace","commands.closeInstance.label":"Close Tab","commands.closeInstance.description":"Close the current top-level tab","commands.closeInstance.keywords":"stop, quit, close, tab","commands.nextInstance.label":"Next Tab","commands.nextInstance.description":"Cycle to the next top-level tab","commands.nextInstance.keywords":"switch, navigate, tab","commands.previousInstance.label":"Previous Tab","commands.previousInstance.description":"Cycle to the previous top-level tab","commands.previousInstance.keywords":"switch, navigate, tab","commands.newSession.label":"New Session","commands.newSession.description":"Create a new parent session","commands.newSession.keywords":"create, start","commands.closeSession.label":"Close Session","commands.closeSession.description":"Close current parent session","commands.closeSession.keywords":"close, stop","commands.scrubSessions.label":"Scrub Sessions","commands.scrubSessions.description":"Remove empty sessions, subagent sessions that have completed their primary task, and extraneous forked sessions.","commands.scrubSessions.keywords":"cleanup, blank, empty, sessions, remove, delete, scrub","commands.instanceInfo.label":"Instance Info","commands.instanceInfo.description":"Open the instance overview for logs and status","commands.instanceInfo.keywords":"info, logs, console, output","commands.nextSession.label":"Next Session","commands.nextSession.description":"Cycle to next session tab","commands.nextSession.keywords":"switch, navigate","commands.previousSession.label":"Previous Session","commands.previousSession.description":"Cycle to previous session tab","commands.previousSession.keywords":"switch, navigate","commands.compactSession.label":"Compact Session","commands.compactSession.description":"Summarize and compact the current session","commands.compactSession.keywords":"summarize, compress","commands.compactSession.errorFallback":"Failed to compact session","commands.compactSession.alert.title":"Compact failed","commands.compactSession.alert.message":"Compact failed: {message}","commands.undoLastMessage.label":"Undo Last Message","commands.undoLastMessage.description":"Revert the last message","commands.undoLastMessage.keywords":"revert, undo","commands.undoLastMessage.none.title":"No actions to undo","commands.undoLastMessage.none.message":"Nothing to undo","commands.undoLastMessage.failed.title":"Undo failed","commands.undoLastMessage.failed.message":"Failed to revert message","commands.openModelSelector.label":"Open Model Selector","commands.openModelSelector.description":"Choose a different model","commands.openModelSelector.keywords":"model, llm, ai","commands.selectModelVariant.label":"Select Model Variant","commands.selectModelVariant.description":"Choose a thinking effort for the current model","commands.selectModelVariant.keywords":"variant, thinking, reasoning, effort","commands.openAgentSelector.label":"Open Agent Selector","commands.openAgentSelector.description":"Choose a different agent","commands.openAgentSelector.keywords":"agent, mode","commands.clearInput.label":"Clear Input","commands.clearInput.description":"Clear the prompt textarea","commands.clearInput.keywords":"clear, reset","commands.promptSubmitShortcut.label.default":"Enter: New Line, Cmd/Ctrl+Enter: Submit Prompt","commands.promptSubmitShortcut.label.swapped":"Enter: Submit Prompt, Cmd/Ctrl+Enter: New Line","commands.promptSubmitShortcut.description":"Swap Enter and Cmd/Ctrl+Enter behavior in the prompt input","commands.promptSubmitShortcut.keywords":"enter, cmd, ctrl, submit, send, newline, shortcut, keybind, prompt","commands.thinkingBlocks.label.show":"Show Thinking","commands.thinkingBlocks.label.hide":"Hide Thinking","commands.thinkingBlocks.description":"Show or hide AI thinking sections","commands.thinkingBlocks.keywords":"thinking, reasoning, toggle, show, hide","commands.timelineToolCalls.label.show":"Show Timeline Tool Calls","commands.timelineToolCalls.label.hide":"Hide Timeline Tool Calls","commands.timelineToolCalls.description":"Toggle tool call entries in the message timeline","commands.timelineToolCalls.keywords":"timeline, tool, toggle","commands.keyboardShortcutHints.label.show":"Show Keyboard Shortcut Hints","commands.keyboardShortcutHints.label.hide":"Hide Keyboard Shortcut Hints","commands.keyboardShortcutHints.description":"Show or hide keyboard shortcut hints across the UI","commands.keyboardShortcutHints.description.disabledWeb":"Disabled in WebUI (shortcut hints are always hidden)","commands.keyboardShortcutHints.keywords":"shortcut, shortcuts, keyboard, keybind, hints","commands.common.expanded":"Expanded","commands.common.collapsed":"Collapsed","commands.common.visible":"Visible","commands.common.hidden":"Hidden","commands.common.enabled":"Enabled","commands.common.disabled":"Disabled","commands.thinkingBlocksDefault.label":"Thinking View: {state}","commands.thinkingBlocksDefault.description":"Collapse / Expand AI thinking sections when shown","commands.thinkingBlocksDefault.keywords":"thinking, reasoning, expand, collapse, default","commands.diffViewSplit.label":"Use Split Diff View","commands.diffViewSplit.description":"Display tool-call diffs side-by-side","commands.diffViewSplit.keywords":"diff, split, view","commands.diffViewUnified.label":"Use Unified Diff View","commands.diffViewUnified.description":"Display tool-call diffs inline","commands.diffViewUnified.keywords":"diff, unified, view","commands.toolOutputsDefault.label":"Tool Outputs Default · {state}","commands.toolOutputsDefault.description":"Toggle default expansion for tool outputs","commands.toolOutputsDefault.keywords":"tool, output, expand, collapse","commands.diagnosticsDefault.label":"Diagnostics Default · {state}","commands.diagnosticsDefault.description":"Toggle default expansion for diagnostics output","commands.diagnosticsDefault.keywords":"diagnostics, expand, collapse","commands.toolInputsVisibility.label":"Tool Inputs Visibility · {state}","commands.toolInputsVisibility.description":"Set default visibility for tool call input arguments","commands.toolInputsVisibility.keywords":"tool, inputs, arguments, visibility, hide, show, expand, collapse","commands.tokenUsageDisplay.label":"Token Usage Display · {state}","commands.tokenUsageDisplay.description":"Show or hide token and cost stats for assistant messages","commands.tokenUsageDisplay.keywords":"token, usage, cost, stats","commands.autoCleanupBlankSessions.label":"Auto-Cleanup Blank Sessions · {state}","commands.autoCleanupBlankSessions.description":"Automatically clean up blank sessions when creating new ones","commands.autoCleanupBlankSessions.keywords":"auto, cleanup, blank, sessions, toggle","commands.showHelp.label":"Show Help","commands.showHelp.description":"Display keyboard shortcuts and help","commands.showHelp.keywords":"shortcuts, help","commands.custom.argumentsPrompt.message":"Arguments for /{name}","commands.custom.argumentsPrompt.title":"Custom command","commands.custom.argumentsPrompt.inputLabel":"Arguments","commands.custom.argumentsPrompt.inputPlaceholder":"e.g. foo bar","commands.custom.argumentsPrompt.confirmLabel":"Run","commands.custom.argumentsPrompt.cancelLabel":"Cancel","commands.custom.argumentsPrompt.openFailed.message":"Failed to open arguments prompt.","commands.custom.argumentsPrompt.openFailed.title":"Command arguments","commands.custom.entries.descriptionFallback":"Custom command","commands.custom.sessionRequired.message":"Select a session before running a custom command.","commands.custom.sessionRequired.title":"Session required","commands.custom.runFailed.message":"Failed to run custom command. Check the console for details.","commands.custom.runFailed.title":"Command failed","unifiedPicker.loading.searching":"Searching...","unifiedPicker.loading.loadingWorkspace":"Loading workspace...","unifiedPicker.title.command":"Select Command","unifiedPicker.title.mention":"Select Agent or File","unifiedPicker.empty":"No results found","unifiedPicker.sections.commands":"COMMANDS","unifiedPicker.sections.agents":"AGENTS","unifiedPicker.sections.files":"FILES","unifiedPicker.sections.workspaceRoot":"WORKSPACE ROOT","unifiedPicker.badge.subagent":"subagent","unifiedPicker.footer.navigate":"navigate","unifiedPicker.footer.select":"select","unifiedPicker.footer.close":"close"},ae={"alertDialog.fallbackTitle.info":"Heads up","alertDialog.fallbackTitle.warning":"Please review","alertDialog.fallbackTitle.error":"Something went wrong","alertDialog.actions.confirm":"Confirm","alertDialog.actions.run":"Run","alertDialog.actions.ok":"OK","alertDialog.actions.cancel":"Cancel","alertDialog.prompt.inputLabel":"Input","backgroundProcessOutputDialog.title":"Background Output","backgroundProcessOutputDialog.actions.close":"Close","backgroundProcessOutputDialog.loading":"Loading output...","backgroundProcessOutputDialog.truncatedNotice":"Output truncated for display.","backgroundProcessOutputDialog.loadErrorFallback":"Failed to load output."},re={"directoryBrowser.defaultDescription":"Browse folders under the configured workspace root.","directoryBrowser.close":"Close","directoryBrowser.currentFolder":"Current folder","directoryBrowser.selectCurrent":"Select Current","directoryBrowser.newFolder":"New Folder","directoryBrowser.creating":"Creating…","directoryBrowser.loadingFolders":"Loading folders…","directoryBrowser.noFolders":"No folders available.","directoryBrowser.upOneLevel":"Up one level","directoryBrowser.select":"Select","directoryBrowser.load.errorFallback":"Unable to load filesystem","directoryBrowser.createFolder.promptMessage":"Create a new folder in the current directory.","directoryBrowser.createFolder.title":"New Folder","directoryBrowser.createFolder.inputLabel":"Folder name","directoryBrowser.createFolder.inputPlaceholder":"e.g. my-new-project","directoryBrowser.createFolder.confirmLabel":"Create","directoryBrowser.createFolder.cancelLabel":"Cancel","directoryBrowser.createFolder.invalidNameMessage":"Please enter a single folder name.","directoryBrowser.createFolder.invalidNameDetail":"Folder names cannot include slashes, '..', or '~'.","directoryBrowser.createFolder.errorFallback":"Unable to create folder","filesystemBrowser.descriptionFallback":"Search for a path under the configured workspace root.","filesystemBrowser.rootLabel":"Root: {root}","filesystemBrowser.actions.close":"Close","filesystemBrowser.actions.retry":"Retry","filesystemBrowser.actions.select":"Select","filesystemBrowser.filterLabel":"Filter","filesystemBrowser.search.placeholder.directories":"Search for folders","filesystemBrowser.search.placeholder.files":"Search for files","filesystemBrowser.currentFolder.label":"Current folder","filesystemBrowser.currentFolder.selectCurrent":"Select Current","filesystemBrowser.loading.filesystem":"filesystem","filesystemBrowser.loading.workspaceRoot":"workspace root","filesystemBrowser.loading.loadingWithPath":"Loading {path}…","filesystemBrowser.empty.noEntries":"No entries found.","filesystemBrowser.navigation.upOneLevel":"Up one level","filesystemBrowser.hints.navigate":"Navigate","filesystemBrowser.hints.select":"Select","filesystemBrowser.hints.close":"Close","filesystemBrowser.errors.loadFilesystemFallback":"Unable to load filesystem","filesystemBrowser.errors.openDirectoryFallback":"Unable to open directory"},le={"folderSelection.language.ariaLabel":"Language","folderSelection.logoAlt":"CodeNomad logo","folderSelection.tagline":"Select a folder to start coding with AI","folderSelection.links.github":"CodeNomad GitHub","folderSelection.links.githubStars":"CodeNomad GitHub Stars","folderSelection.links.discord":"CodeNomad Discord","folderSelection.empty.title":"No Recent Folders","folderSelection.empty.description":"Browse for a folder to get started","folderSelection.recent.title":"Recent Folders","folderSelection.recent.subtitle.one":"{count} folder available","folderSelection.recent.subtitle.other":"{count} folders available","folderSelection.recent.remove":"Remove from recent","folderSelection.browse.title":"Browse for Folder","folderSelection.browse.subtitle":"Select any folder on your computer","folderSelection.browse.button":"Browse Folders","folderSelection.browse.buttonOpening":"Opening...","folderSelection.actions.title":"Open Folder or Connect Server","folderSelection.actions.subtitle":"Open local folder or connect to a CodeNomad server","folderSelection.actions.connectButton":"Connect CodeNomad Server","folderSelection.advancedSettings":"Advanced Settings","folderSelection.opencode":"OpenCode","folderSelection.hints.navigate":"Navigate","folderSelection.hints.select":"Select","folderSelection.hints.remove":"Remove","folderSelection.hints.browse":"Browse","folderSelection.loading.title":"Starting instance...","folderSelection.loading.subtitle":"Hang tight while we prepare your workspace.","folderSelection.drop.title":"Drop a folder to open it","folderSelection.drop.subtitle":"Start a new instance in the dropped folder.","folderSelection.drop.invalidTitle":"Couldn't open dropped item","folderSelection.drop.invalidMessage":"Drop a folder to start a new instance.","folderSelection.dialog.title":"Select Workspace","folderSelection.dialog.description":"Select workspace to start coding.","folderSelection.tabs.local":"Local Folders","folderSelection.tabs.servers":"Servers","folderSelection.servers.title":"Saved Servers","folderSelection.servers.subtitle":"Open a saved remote CodeNomad server in a new window","folderSelection.servers.count":"{count} Servers","folderSelection.servers.empty.title":"No Saved Servers","folderSelection.servers.empty.description":"Add a remote server to reconnect quickly from this device","folderSelection.servers.connectTitle":"Connect to Server","folderSelection.servers.connectSubtitle":"Save a remote CodeNomad server and open it in a new window","folderSelection.servers.connectButton":"Connect to Server","folderSelection.servers.remove":"Remove saved server","folderSelection.servers.skipTls":"Self-signed TLS","folderSelection.servers.errorTitle":"Remote Connection Failed","folderSelection.servers.dialog.title":"Connect to Server","folderSelection.servers.dialog.description":"Add a remote CodeNomad server and optionally open it right away.","folderSelection.servers.dialog.name":"Server name","folderSelection.servers.dialog.namePlaceholder":"Production Server","folderSelection.servers.dialog.url":"Server URL","folderSelection.servers.dialog.urlPlaceholder":"https://server.example.com","folderSelection.servers.dialog.skipTls":"Skip TLS verification for self-signed certificates.","folderSelection.servers.dialog.cancel":"Cancel","folderSelection.servers.dialog.save":"Save","folderSelection.servers.dialog.connect":"Connect","folderSelection.servers.dialog.connecting":"Connecting...","folderSelection.servers.dialog.errorRequired":"Server name and URL are required.","folderSelection.servers.dialog.errorConnect":"Could not connect to the remote server.","folderSelection.sidecars.button":"Open SideCar"},ce={"instanceTabs.new.title":"New instance (Cmd/Ctrl+N)","instanceTabs.new.ariaLabel":"New instance","instanceTabs.remote.title":"Remote connect","instanceTabs.remote.ariaLabel":"Remote connect","instanceInfo.title":"Instance Information","instanceInfo.labels.folder":"Folder","instanceInfo.labels.project":"Project","instanceInfo.labels.versionControl":"Version Control","instanceInfo.labels.opencodeVersion":"OpenCode Version","instanceInfo.labels.binaryPath":"Binary Path","instanceInfo.labels.environmentVariables":"Environment Variables ({count})","instanceInfo.loading":"Loading...","instanceInfo.server.title":"Server","instanceInfo.server.port":"Port:","instanceInfo.server.pid":"PID:","instanceInfo.server.status":"Status:","instanceTab.status.permission":"Waiting on permission","instanceTab.status.compacting":"Compacting","instanceTab.status.working":"Working","instanceTab.status.idle":"Idle","instanceTab.status.ariaLabel":"Instance status: {status}","instanceTab.actions.close.ariaLabel":"Close instance","instanceShell.leftPanel.sessionsTitle":"Sessions","instanceShell.leftPanel.instanceInfo":"Instance Info","instanceShell.leftDrawer.pin":"Pin left drawer","instanceShell.leftDrawer.unpin":"Unpin left drawer","instanceShell.leftDrawer.toggle.pinned":"Left drawer pinned","instanceShell.leftDrawer.toggle.open":"Open left drawer","instanceShell.leftDrawer.toggle.close":"Close left drawer","instanceShell.rightDrawer.pin":"Pin right drawer","instanceShell.rightDrawer.unpin":"Unpin right drawer","instanceShell.rightDrawer.toggle.pinned":"Right drawer pinned","instanceShell.rightDrawer.toggle.open":"Open right drawer","instanceShell.rightDrawer.toggle.close":"Close right drawer","instanceShell.fullscreen.enter":"Full screen","instanceShell.fullscreen.exit":"Exit full screen","instanceShell.metrics.usedLabel":"Used","instanceShell.metrics.availableLabel":"Avail","instanceShell.commandPalette.openAriaLabel":"Open command palette","instanceShell.commandPalette.button":"Command Palette","instanceShell.connection.ariaLabel":"Connection {status}","instanceShell.connection.connected":"Connected","instanceShell.connection.connecting":"Connecting...","instanceShell.connection.disconnected":"Disconnected","instanceShell.connection.unknown":"Unknown","instanceWelcome.shortcuts.newSession":"New Session","instanceWelcome.empty.title":"No Previous Sessions","instanceWelcome.empty.description":"Create a new session below to get started","instanceWelcome.loading.title":"Loading Sessions","instanceWelcome.loading.description":"Fetching your previous sessions...","instanceWelcome.resume.title":"Resume Session","instanceWelcome.resume.subtitle.one":"{count} session available","instanceWelcome.resume.subtitle.other":"{count} sessions available","instanceWelcome.session.untitled":"Untitled Session","instanceWelcome.new.title":"Start New Session","instanceWelcome.new.subtitle":"We’ll reuse your last agent/model automatically","instanceWelcome.new.createButton":"Create Session","instanceWelcome.overlay.close":"Close","instanceWelcome.actions.viewInstanceInfo":"View Instance Info","instanceWelcome.actions.renameTitle":"Rename session","instanceWelcome.actions.deleteTitle":"Delete session","instanceWelcome.hints.navigate":"Navigate","instanceWelcome.hints.jump":"Jump","instanceWelcome.hints.firstLast":"First/Last","instanceWelcome.hints.resume":"Resume","instanceWelcome.hints.delete":"Delete","instanceWelcome.toasts.renameError":"Unable to rename session","instanceDisconnected.title":"Instance Disconnected","instanceDisconnected.folderFallback":"this workspace","instanceDisconnected.reasonFallback":"The server stopped responding","instanceDisconnected.description":"{folder} can no longer be reached. Close the tab to continue working.","instanceDisconnected.details.title":"Details","instanceDisconnected.details.folderLabel":"Folder:","instanceDisconnected.actions.closeInstance":"Close Instance","instanceShell.empty.title":"No session selected","instanceShell.empty.description":"Select a session to view messages","instanceShell.rightPanel.title":"Status Panel","instanceShell.rightPanel.tabs.changes":"Session Changes","instanceShell.rightPanel.tabs.gitChanges":"Git Changes","instanceShell.rightPanel.tabs.files":"Files","instanceShell.rightPanel.tabs.status":"Status","instanceShell.rightPanel.tabs.ariaLabel":"Right panel tabs","instanceShell.rightPanel.actions.refresh":"Refresh","instanceShell.rightPanel.actions.save":"Save (Ctrl+S)","instanceShell.rightPanel.actions.saveConfirm.message":'Do you want to save changes to "{path}" before switching?',"instanceShell.rightPanel.actions.saveConfirm.confirmLabel":"Save","instanceShell.rightPanel.actions.saveConfirm.cancelLabel":"Discard Changes","instanceShell.rightPanel.actions.conflict.message":"File was modified by the agent. Overwrite agent's changes?","instanceShell.rightPanel.actions.conflict.confirmLabel":"Overwrite","instanceShell.rightPanel.actions.conflict.cancelLabel":"Cancel","instanceShell.rightPanel.actions.refreshDirty.message":"File has unsaved changes. Refresh will discard your edits. Continue?","instanceShell.rightPanel.actions.refreshDirty.confirmLabel":"Refresh","instanceShell.rightPanel.actions.refreshDirty.cancelLabel":"Cancel","instanceShell.rightPanel.toast.saveSuccess":"File saved successfully","instanceShell.rightPanel.toast.saveError":"Failed to save file","instanceShell.rightPanel.sections.yoloMode":"Yolo Mode","instanceShell.rightPanel.sections.yoloMode.tooltip":"Automatically approves permission requests for the current session. Use it only when you trust the tools being run.","instanceShell.rightPanel.sections.sessionChanges":"Session Changes","instanceShell.rightPanel.sections.sessionChanges.tooltip":"Files modified in the current session. Shows additions and deletions for each file.","instanceShell.rightPanel.sections.plan":"Plan","instanceShell.rightPanel.sections.plan.tooltip":"The agent's roadmap for this session. Tracks tasks, subtasks, and their completion status.","instanceShell.rightPanel.sections.backgroundProcesses":"Background Shells","instanceShell.rightPanel.sections.backgroundProcesses.tooltip":"Long-running processes started by the agent. You can monitor their output, stop, or terminate them.","instanceShell.rightPanel.sections.mcp":"MCP Servers","instanceShell.rightPanel.sections.mcp.tooltip":"Model Context Protocol servers that extend the agent's capabilities with external tools and services.","instanceShell.rightPanel.sections.lsp":"LSP Servers","instanceShell.rightPanel.sections.lsp.tooltip":"Language Server Protocol servers providing code intelligence, diagnostics, and language-specific features.","instanceShell.rightPanel.sections.plugins":"Plugins","instanceShell.rightPanel.sections.plugins.tooltip":"Plugins that customize the UI and server behavior, adding features beyond MCP and LSP.","instanceShell.sessionChanges.noSessionSelected":"Select a session to view changes.","instanceShell.sessionChanges.loading":"Fetching session changes...","instanceShell.sessionChanges.empty":"No session changes yet.","instanceShell.sessionChanges.filesChanged":"{count} files changed","instanceShell.sessionChanges.actions.show":"Show changes","instanceShell.gitChanges.noSessionSelected":"Select a session to view git changes.","instanceShell.gitChanges.loading":"Loading git changes...","instanceShell.gitChanges.empty":"No git changes yet.","instanceShell.gitChanges.deleted":"Deleted","instanceShell.gitChanges.binaryViewer":"Binary file cannot be displayed","instanceShell.gitChanges.sections.staged":"Staged Changes","instanceShell.gitChanges.sections.unstaged":"Changes","instanceShell.gitChanges.actions.insertContext":"Add to prompt","instanceShell.gitChanges.actions.stage":"Stage file","instanceShell.gitChanges.actions.unstage":"Unstage file","instanceShell.gitChanges.commit.placeholder":"Enter commit message","instanceShell.gitChanges.commit.submit":"Commit","instanceShell.gitChanges.commit.submitting":"Committing...","instanceShell.gitChanges.commit.success":"Commit created successfully","instanceShell.gitChanges.commit.error":"Failed to create commit","instanceShell.filesShell.fileListTitle":"File list","instanceShell.filesShell.mobileSelectorLabel":"Select file","instanceShell.filesShell.mobileSelectorEmpty":"Select a file","instanceShell.filesShell.viewerTitle":"Change viewer","instanceShell.filesShell.viewerPlaceholder":"Detailed change rendering will be added in the next step.","instanceShell.filesShell.viewerEmpty":"No file selected.","instanceShell.filesShell.hideFiles":"Hide files","instanceShell.filesShell.showFiles":"Show files","instanceShell.diff.hideUnchanged":"Hide unchanged regions","instanceShell.diff.showFull":"Show full file","instanceShell.diff.switchToSplit":"Switch to split view","instanceShell.diff.switchToUnified":"Switch to unified view","instanceShell.diff.enableWordWrap":"Enable word wrap","instanceShell.diff.disableWordWrap":"Disable word wrap","instanceShell.worktree.create":"+ Create worktree","instanceShell.worktree.delete.error.title":"Delete failed","instanceShell.worktree.delete.error.fallback":"Failed to delete worktree","instanceShell.worktree.delete.error.causeLabel":"Likely cause:","instanceShell.worktree.delete.error.nextStepLabel":"Suggested next step:","instanceShell.worktree.delete.error.summary.localChanges":"Git refused to delete this worktree because it has modified or untracked files.","instanceShell.worktree.delete.error.summary.inUse":"CodeNomad could not delete this worktree because something is still using files in the directory.","instanceShell.worktree.delete.error.summary.notFound":"CodeNomad could not delete this worktree because the directory or worktree record was not found.","instanceShell.worktree.delete.error.summary.permissionDenied":"CodeNomad could not delete this worktree because access to the directory was denied.","instanceShell.worktree.delete.error.summary.unknown":"CodeNomad could not delete this worktree.","instanceShell.worktree.delete.error.cause.localChanges":"Local changes","instanceShell.worktree.delete.error.cause.inUse":"Another process is using this worktree","instanceShell.worktree.delete.error.cause.notFound":"The worktree directory or record is missing","instanceShell.worktree.delete.error.cause.permissionDenied":"Insufficient filesystem permissions","instanceShell.worktree.delete.error.cause.unknown":"The backend returned an unclassified delete error","instanceShell.worktree.delete.error.nextStep.localChanges":"Enable Force delete if you want to discard local changes, or clean the worktree and try again.","instanceShell.worktree.delete.error.nextStep.inUse":"Close terminals, editors, watchers, or background processes using this worktree and try again.","instanceShell.worktree.delete.error.nextStep.notFound":"Refresh worktrees and try again. If it still fails, inspect the worktree path on disk.","instanceShell.worktree.delete.error.nextStep.permissionDenied":"Check filesystem permissions and close applications that may be locking this directory, then try again.","instanceShell.worktree.delete.error.nextStep.unknown":"Review the raw error below for details, then retry after addressing the reported problem.","instanceShell.worktree.delete.error.copyRaw":"Copy error","instanceShell.worktree.delete.error.copySanitized":"Copy sanitized","instanceShell.worktree.delete.error.copySuccess":"Copied delete error","instanceShell.worktree.delete.error.copySanitizedSuccess":"Copied sanitized delete error","instanceShell.worktree.delete.error.copyFailure":"Failed to copy delete error","instanceShell.plan.noSessionSelected":"Select a session to view plan.","instanceShell.plan.empty":"Nothing planned yet.","instanceShell.yoloMode.noSessionSelected":"Select a session to configure Yolo mode.","instanceShell.yoloMode.title":"Yolo mode","instanceShell.yoloMode.description":"Automatically approve permission requests for this session. Disabled by default.","instanceShell.yoloMode.badge":"Yolo mode","instanceShell.yoloMode.badgeAriaLabel":"Yolo mode enabled","instanceShell.backgroundProcesses.empty":"No background processes.","instanceShell.backgroundProcesses.status":"Status: {status}","instanceShell.backgroundProcesses.output":"Output: {sizeKb}KB","instanceShell.backgroundProcesses.notify.enabled":"Completion notification enabled","instanceShell.backgroundProcesses.notify.disabled":"Completion notification disabled","instanceShell.backgroundProcesses.actions.output":"Output","instanceShell.backgroundProcesses.actions.stop":"Stop","instanceShell.backgroundProcesses.actions.terminate":"Terminate","versionPill.appWithVersion":"App {version}","versionPill.ui":"UI","versionPill.uiWithVersion":"UI {version}","versionPill.source":" ({source})","opencodeBinarySelector.title":"OpenCode Binary","opencodeBinarySelector.subtitle":"Choose which executable OpenCode should run","opencodeBinarySelector.customPath.placeholder":"Enter path to opencode binary…","opencodeBinarySelector.actions.add":"Add","opencodeBinarySelector.actions.browse":"Browse for Binary…","opencodeBinarySelector.actions.removeTitle":"Remove binary","opencodeBinarySelector.badge.systemPath":"Use binary from system PATH","opencodeBinarySelector.status.checkingVersions":"Checking versions…","opencodeBinarySelector.status.checking":"Checking…","opencodeBinarySelector.dialog.title":"Select OpenCode Binary","opencodeBinarySelector.dialog.description":"Browse files exposed by the CLI server.","opencodeBinarySelector.validation.invalidBinary":"Invalid OpenCode binary","opencodeBinarySelector.validation.alreadyValidating":"Already validating","opencodeBinarySelector.display.systemPath":"{name} (system PATH)","opencodeBinarySelector.versionLabel":"v{version}"},de={"loadingScreen.logoAlt":"CodeNomad logo","loadingScreen.status.issue":"Encountered an issue","loadingScreen.actions.showAnother":"Show another","loadingScreen.errors.missingRoot":"Loading root element not found","loadingScreen.phrases.neurons":"Warming up the AI neurons…","loadingScreen.phrases.daydreaming":"Convincing the AI to stop daydreaming…","loadingScreen.phrases.goggles":"Polishing the AI’s code goggles…","loadingScreen.phrases.reorganizingFiles":"Asking the AI to stop reorganizing your files…","loadingScreen.phrases.coffee":"Feeding the AI additional coffee…","loadingScreen.phrases.nodeModules":"Teaching the AI not to delete node_modules (again)…","loadingScreen.phrases.actNatural":"Telling the AI to act natural before you arrive…","loadingScreen.phrases.rewritingHistory":"Asking the AI to please stop rewriting history…","loadingScreen.phrases.stretch":"Letting the AI stretch before its coding sprint…","loadingScreen.phrases.keyboardControl":"Persuading the AI to give you keyboard control…"},me={"logsView.title":"Server Logs","logsView.actions.show":"Show server logs","logsView.actions.hide":"Hide server logs","logsView.envVars.title":"Environment Variables ({count})","logsView.paused.title":"Server logs are paused","logsView.paused.description":"Enable streaming to watch your OpenCode server activity.","logsView.empty.waiting":"Waiting for server output...","logsView.scrollToBottom":"Scroll to bottom","infoView.logs.title":"Server Logs","infoView.logs.actions.show":"Show server logs","infoView.logs.actions.hide":"Hide server logs","infoView.logs.paused.title":"Server logs are paused","infoView.logs.paused.description":"Enable streaming to watch your OpenCode server activity.","infoView.logs.empty.waiting":"Waiting for server output...","infoView.logs.scrollToBottom":"Scroll to bottom","infoView.dispose.actions.dispose":"Dispose instance","infoView.dispose.actions.disposing":"Disposing...","infoView.dispose.confirm.title":"Dispose instance?","infoView.dispose.confirm.message":"This clears cached per-project state for this directory and reloads the instance.","infoView.dispose.confirm.confirmLabel":"Dispose","infoView.dispose.confirm.cancelLabel":"Cancel","infoView.dispose.toast.success":"Instance disposed. Reloading...","infoView.dispose.toast.error":"Failed to dispose instance."},pe={"markdown.codeBlock.copy.label":"Copy","markdown.codeBlock.copy.copied":"Copied!","markdown.codeBlock.copy.failed":"Failed","markdown.copy":"Copy"},ue={"messageListHeader.sidebar.openSessionListAriaLabel":"Open session list","messageListHeader.metrics.usedLabel":"Used","messageListHeader.metrics.availableLabel":"Avail","messageListHeader.commandPalette.ariaLabel":"Open command palette","messageListHeader.commandPalette.button":"Command Palette","messageListHeader.connection.connected":"Connected","messageListHeader.connection.connecting":"Connecting...","messageListHeader.connection.disconnected":"Disconnected","messageSection.empty.logoAlt":"CodeNomad logo","messageSection.empty.brandTitle":"CodeNomad","messageSection.empty.title":"Start a conversation","messageSection.empty.description":"Type a message below or open the Command Palette:","messageSection.empty.tips.commandPalette":"Command Palette","messageSection.empty.tips.askAboutCodebase":"Ask about your codebase","messageSection.empty.tips.attachFilesPrefix":"Attach files with","messageSection.loading.messages":"Loading messages...","messageSection.scroll.toFirstAriaLabel":"Scroll to first message","messageSection.scroll.toLatestAriaLabel":"Scroll to latest message","messageSection.scroll.enableHoldAriaLabel":"Enable hold for long assistant replies","messageSection.scroll.disableHoldAriaLabel":"Disable hold for long assistant replies","messageSection.quote.addAsQuote":"Add as quote","messageSection.quote.addAsCode":"Add as code","messageSection.quote.copy":"Copy","messageSection.quote.copied":"Copied!","messageSection.quote.copyFailed":"Copy failed","messageTimeline.ariaLabel":"Message timeline","messageTimeline.segment.user.label":"You","messageTimeline.segment.assistant.label":"Asst","messageTimeline.segment.compaction.label":"Compaction","messageTimeline.tool.fallbackLabel":"Tool Call","messageTimeline.tooltip.userFallback":"User message","messageTimeline.tooltip.assistantFallback":"Assistant response","messageTimeline.tooltip.compaction.auto":"Auto Compaction","messageTimeline.tooltip.compaction.manual":"User Compaction","messageTimeline.text.filePrefix":"[File] {filename}","messageTimeline.text.attachment":"Attachment","messageBlock.tool.header":"Tool Call","messageBlock.tool.unknown":"unknown","messageBlock.tool.goToSession.label":"Go to Session","messageBlock.tool.goToSession.title":"Go to session","messageBlock.tool.goToSession.unavailableTitle":"Session not available yet","messageBlock.tool.deletePart.label":"Delete Part","messageBlock.tool.deletePart.deleting":"Deleting...","messageBlock.tool.deletePart.title":"Delete this tool call output","messageBlock.tool.deletePart.failed.title":"Delete failed","messageBlock.tool.deletePart.failed.message":"Failed to delete tool call output","messageBlock.compaction.ariaLabel":"Session compaction","messageBlock.compaction.autoLabel":"Session auto-compacted","messageBlock.compaction.manualLabel":"Session compacted by you","messageBlock.usage.input":"Input","messageBlock.usage.output":"Output","messageBlock.usage.reasoning":"Reasoning","messageBlock.usage.cacheRead":"Cache Read","messageBlock.usage.cacheWrite":"Cache Write","messageBlock.usage.cost":"Cost","messageBlock.step.agentLabel":"Agent: {agent}","messageBlock.step.modelLabel":"Model: {model}","messageBlock.reasoning.thinkingLabel":"Thinking","messageBlock.reasoning.expandAriaLabel":"Expand thinking","messageBlock.reasoning.collapseAriaLabel":"Collapse thinking","messageBlock.reasoning.indicator.hide":"Hide","messageBlock.reasoning.indicator.view":"View","messageBlock.reasoning.detailsAriaLabel":"Reasoning details","codeBlockInline.actions.copy":"Copy","codeBlockInline.actions.copied":"Copied!","messageItem.speaker.you":"You","messageItem.speaker.assistant":"Assistant","messageItem.actions.revert":"Revert","messageItem.actions.revertTitle":"Undo changes up to here (deletes messages)","messageItem.actions.fork":"Fork","messageItem.actions.forkTitle":"Fork from this message","messageItem.actions.copy":"Copy","messageItem.actions.copyTitle":"Copy message","messageItem.actions.copied":"Copied!","messageItem.actions.speak":"Speak message","messageItem.actions.generatingSpeech":"Generating speech","messageItem.actions.stopSpeech":"Stop playback","messageItem.actions.speak.error.title":"Speech playback failed","messageItem.actions.speak.error.unsupported":"Speech playback is not supported in this browser.","messageItem.actions.speak.error.unavailable":"Speech playback is unavailable until speech settings are configured.","messageItem.actions.speak.error.generate":"Unable to generate speech for this message.","messageItem.actions.deleteMessage":"Delete message (doesn't undo changes)","messageItem.actions.deleteMessagesUpTo":"Delete messages up to here (doesn't undo changes)","messageItem.actions.deletingMessage":"Deleting...","messageItem.actions.deleteMessageFailedTitle":"Delete failed","messageItem.actions.deleteMessageFailedMessage":"Failed to delete message","messageItem.selection.checkboxAriaLabel":"Select message for deletion","messageSection.bulkDelete.toolbarAriaLabel":"Selected items ({count})","messageSection.bulkDelete.deleteSelectedTitle":"Delete selected items","messageSection.bulkDelete.selectAllTitle":"Select all messages","messageSection.bulkDelete.moreOptionsTitle":"More options","messageSection.bulkDelete.selectionModeLabel":"Selection","messageSection.bulkDelete.selectionModeAll":"All","messageSection.bulkDelete.selectionModeTools":"Tools only","messageSection.bulkDelete.selectionHint.toggle":"Select item","messageSection.bulkDelete.selectionHint.range":"Select range","messageSection.bulkDelete.selectionHint.clear":"Clear Selection","messageSection.bulkDelete.cancelTitle":"Cancel selection","messageSection.bulkDelete.failedTitle":"Delete failed","messageSection.bulkDelete.failedMessage":"Failed to delete selected items","messageItem.status.queued":"QUEUED","messageItem.status.generating":"Generating...","messageItem.status.sending":"Sending...","messageItem.status.failedToSend":"Message failed to send","messagePart.actions.delete":"Delete Part","messagePart.actions.deleting":"Deleting...","messagePart.actions.deleteTitle":"Delete this item","messagePart.actions.deleteFailedTitle":"Delete failed","messagePart.actions.deleteFailedMessage":"Failed to delete item","messageItem.attachment.defaultName":"attachment","messageItem.attachment.downloadAriaLabel":"Download {name}","messageItem.agentMeta.agentLabel":"Agent: {agent}","messageItem.agentMeta.modelLabel":"Model: {model}","messageItem.errors.authenticationFallback":"Authentication error","messageItem.errors.outputLengthExceeded":"Message output length exceeded","messageItem.errors.requestAborted":"Request was aborted","messageItem.errors.unknownFallback":"Unknown error occurred","attachmentChip.removeAriaLabel":"Remove attachment","expandButton.toggleAriaLabel":"Toggle chat input height","promptInput.placeholder.shell":"Run a shell command (Esc to exit)...","promptInput.placeholder.default":"Type your message, @file, @agent, or paste images and text...","promptInput.hints.shell.exit":"to exit shell mode","promptInput.hints.shell.enable":"Shell mode","promptInput.hints.commands":"Commands","promptInput.history.previousAriaLabel":"Previous prompt","promptInput.history.nextAriaLabel":"Next prompt","promptInput.overlay.newLine":"New line","promptInput.overlay.send":"Send","promptInput.overlay.filesAgents":"Files/agents","promptInput.overlay.history":"History","promptInput.overlay.attachments":"• {count} file(s) attached","promptInput.overlay.shellModeActive":"Shell mode active","promptInput.overlay.press":"Press","promptInput.overlay.againToAbort":"again to abort session","promptInput.stopSession.ariaLabel":"Stop session","promptInput.stopSession.title":"Stop session","promptInput.clear.ariaLabel":"Clear prompt text","promptInput.clear.title":"Clear prompt text","promptInput.send.ariaLabel":"Send message","promptInput.send.errorFallback":"Failed to send message","promptInput.send.errorTitle":"Send failed","promptInput.conversationMode.enable.title":"Enable conversation mode","promptInput.conversationMode.disable.title":"Disable conversation mode","promptInput.conversationMode.error.title":"Conversation playback failed","promptInput.conversationMode.error.message":"Unable to continue speaking assistant replies.","promptInput.voiceInput.start.title":"Start voice input","promptInput.voiceInput.stop.title":"Stop recording and transcribe","promptInput.voiceInput.transcribing.title":"Transcribing audio","promptInput.voiceInput.error.title":"Voice input failed","promptInput.voiceInput.error.permission":"Microphone access is required to record voice input.","promptInput.voiceInput.error.permissionDenied":"Microphone access was denied by macOS.","promptInput.voiceInput.error.unsupported":"Voice input is not supported in this browser.","promptInput.voiceInput.error.transcribe":"Unable to transcribe the recorded audio."},ge={"remoteAccess.eyebrow":"Remote handover","remoteAccess.title":"Connect to CodeNomad remotely","remoteAccess.subtitle":"Use the addresses below to open CodeNomad from another device.","remoteAccess.close":"Close remote access","remoteAccess.refresh":"Refresh","remoteAccess.sections.listeningMode.label":"Listening mode","remoteAccess.sections.listeningMode.help":"Allow or limit remote handovers by binding to all interfaces or just localhost.","remoteAccess.toggle.on":"On","remoteAccess.toggle.off":"Off","remoteAccess.toggle.title":"Allow connections from other IPs","remoteAccess.toggle.caption.all":"Binding to 0.0.0.0","remoteAccess.toggle.caption.local":"Binding to 127.0.0.1","remoteAccess.toggle.note":"Changing this requires a restart and temporarily stops all active instances. Share the addresses below once the server restarts.","remoteAccess.listeningMode.restartConfirm.message":"Restart to apply listening mode? This will stop all running instances.","remoteAccess.listeningMode.restartConfirm.title.all":"Open to other devices","remoteAccess.listeningMode.restartConfirm.title.local":"Limit to this device","remoteAccess.listeningMode.restartConfirm.confirmLabel":"Restart now","remoteAccess.listeningMode.restartConfirm.cancelLabel":"Cancel","remoteAccess.restart.errorManual":"Unable to restart automatically. Please restart the app to apply the change.","remoteAccess.sections.serverPassword.label":"Server password","remoteAccess.sections.serverPassword.help":"Remote handovers require a password. Set a memorable one to enable logins from other devices.","remoteAccess.authStatus.unavailable":"Authentication status unavailable.","remoteAccess.username":"Username: {username}","remoteAccess.password.status.set":"A password is set for remote access.","remoteAccess.password.status.unset":"No memorable password is set yet. Set one to allow remote handover logins.","remoteAccess.password.actions.cancel":"Cancel","remoteAccess.password.actions.change":"Change password","remoteAccess.password.actions.set":"Set password","remoteAccess.password.form.newPassword":"New password","remoteAccess.password.form.confirmPassword":"Confirm password","remoteAccess.password.form.placeholder":"At least 8 characters","remoteAccess.password.error.tooShort":"Password must be at least 8 characters.","remoteAccess.password.error.mismatch":"Passwords do not match.","remoteAccess.password.save.saving":"Saving…","remoteAccess.password.save.label":"Save password","remoteAccess.sections.addresses.label":"Reachable addresses","remoteAccess.sections.addresses.help":"Launch or scan from another machine to hand over control.","remoteAccess.addresses.loading":"Loading addresses…","remoteAccess.addresses.none":"No addresses available yet.","remoteAccess.addresses.actions.showOther":"Show {count} other addresses","remoteAccess.addresses.actions.hideOther":"Hide other addresses","remoteAccess.address.scope.network":"Network","remoteAccess.address.scope.loopback":"Loopback","remoteAccess.address.scope.internal":"Internal","remoteAccess.address.open":"Open","remoteAccess.address.showQr":"Show QR","remoteAccess.address.hideQr":"Hide QR","remoteAccess.address.qrAlt":"QR for {url}"},he={"sessionPicker.title":"OpenCode • {folder}","sessionPicker.empty.noPrevious":"No previous sessions","sessionPicker.resume.title":"Resume a session ({count}):","sessionPicker.session.untitled":"Untitled","sessionPicker.divider.or":"or","sessionPicker.new.title":"Start new session:","sessionPicker.agents.loading":"Loading agents...","sessionPicker.actions.creating":"Creating...","sessionPicker.actions.createSession":"Create Session","sessionPicker.actions.cancel":"Cancel","sessionList.header.title":"Sessions","sessionList.session.untitled":"Untitled","sessionList.status.working":"Working","sessionList.status.compacting":"Compacting","sessionList.status.idle":"Idle","sessionList.status.retrying":"Retrying","sessionList.status.retryingIn":"Retrying in {seconds}s","sessionList.status.retryTooltip":"{message} (Attempt {attempt})","sessionList.status.retryToast":"{countdown}: {message} (Attempt {attempt})","sessionList.status.needsPermission":"Needs Permission","sessionList.status.needsInput":"Needs Input","sessionList.expand.collapseAriaLabel":"Collapse session","sessionList.expand.expandAriaLabel":"Expand session","sessionList.expand.collapseTitle":"Collapse","sessionList.expand.expandTitle":"Expand","sessionList.actions.newSession.ariaLabel":"New session","sessionList.actions.newSession.title":"New session","sessionList.actions.copyId.ariaLabel":"Copy session ID","sessionList.actions.copyId.title":"Copy session ID","sessionList.actions.reload.ariaLabel":"Reload session","sessionList.actions.reload.title":"Reload session","sessionList.actions.rename.ariaLabel":"Rename session","sessionList.actions.rename.title":"Rename session","sessionList.actions.delete.ariaLabel":"Delete session","sessionList.actions.delete.title":"Delete session","sessionList.copyId.success":"Session ID copied","sessionList.copyId.error":"Unable to copy session ID","sessionList.reload.error":"Unable to reload session","sessionList.delete.error":"Unable to delete session","sessionList.delete.title":"Delete session","sessionList.delete.confirmMessage":'Delete "{label}"? This cannot be undone.',"sessionList.delete.confirmLabel":"Delete","sessionList.delete.cancelLabel":"Cancel","sessionList.rename.error":"Unable to rename session","sessionList.filter.placeholder":"Search sessions…","sessionList.filter.ariaLabel":"Search sessions","sessionList.selection.selectAllLabel":"Select all","sessionList.selection.selectAllAriaLabel":"Select all sessions","sessionList.selection.clearLabel":"Clear","sessionList.selection.clearAriaLabel":"Clear selection","sessionList.selection.checkboxAriaLabel":"Select session","sessionList.bulkDelete.button":"Delete {count}","sessionList.bulkDelete.ariaLabel":"Delete {count} selected sessions","sessionList.bulkDelete.title":"Delete sessions","sessionList.bulkDelete.confirmMessage":"Delete {count} selected sessions? This cannot be undone.","sessionList.bulkDelete.confirmLabel":"Delete","sessionList.bulkDelete.cancelLabel":"Cancel","sessionList.bulkDelete.error":"Unable to delete {count} sessions","sessionRenameDialog.title":"Rename Session","sessionRenameDialog.description.withLabel":'Update the title for "{label}".',"sessionRenameDialog.description.default":"Set a new title for this session.","sessionRenameDialog.input.label":"Session name","sessionRenameDialog.input.placeholder":"Enter a session name","sessionRenameDialog.actions.cancel":"Cancel","sessionRenameDialog.actions.rename":"Rename","sessionRenameDialog.actions.renaming":"Renaming…","sessionView.fallback.sessionNotFound":"Session not found","sessionView.alerts.abortFailed.message":"Failed to stop session","sessionView.alerts.abortFailed.title":"Stop failed","sessionView.alerts.revertFailed.message":"Failed to revert to message","sessionView.alerts.revertFailed.title":"Revert failed","sessionView.alerts.deleteUpToFailed.message":"Failed to delete messages","sessionView.alerts.deleteUpToFailed.title":"Delete failed","sessionView.alerts.forkFailed.message":"Failed to fork session","sessionView.alerts.forkFailed.title":"Fork failed","sessionView.attachments.expandPastedTextAriaLabel":"Expand pasted text","sessionView.attachments.insertPastedTextTitle":"Insert pasted text","sessionView.attachments.removeAriaLabel":"Remove attachment","sessionEvents.sessionCompactedToast":"Session {label} was compacted","sessionEvents.sessionError.unknown":"Unknown error","sessionEvents.sessionError.title":"Session error","sessionEvents.sessionError.message":"Error: {message}","sessionState.cleanup.deepConfirm.message":"This cleanup may be slow, and may delete sessions you didn't intend to delete. Are you sure?","sessionState.cleanup.deepConfirm.title":"Deep Clean Sessions","sessionState.cleanup.deepConfirm.detail":"Deep Clean Sessions will delete all sessions that have no messages, remove any finished sub-agent sessions, and clear out any unused forks of a session.","sessionState.cleanup.deepConfirm.confirmLabel":"Continue","sessionState.cleanup.deepConfirm.cancelLabel":"Cancel","sessionState.cleanup.toast.one":"Cleaned up {count} blank session","sessionState.cleanup.toast.other":"Cleaned up {count} blank sessions"},fe={"instanceServiceStatus.sections.lsp":"LSP Servers","instanceServiceStatus.sections.mcp":"MCP Servers","instanceServiceStatus.sections.plugins":"Plugins","instanceServiceStatus.lsp.loading":"Loading LSP servers...","instanceServiceStatus.lsp.empty":"No LSP servers detected.","instanceServiceStatus.lsp.status.connected":"Connected","instanceServiceStatus.lsp.status.error":"Error","instanceServiceStatus.mcp.loading":"Loading MCP servers...","instanceServiceStatus.mcp.empty":"No MCP servers detected.","instanceServiceStatus.mcp.toggleAriaLabel":"Toggle {name} MCP server","instanceServiceStatus.plugins.loading":"Loading plugins...","instanceServiceStatus.plugins.empty":"No plugins configured.","permissionBanner.pendingRequests.one":"{count} pending request","permissionBanner.pendingRequests.other":"{count} pending requests","permissionBanner.detail.permission.one":"{count} permission","permissionBanner.detail.permission.other":"{count} permissions","permissionBanner.detail.question.one":"{count} question","permissionBanner.detail.question.other":"{count} questions","permissionBanner.detail.wrapper":" ({detail})","agentSelector.placeholder":"Select agent...","agentSelector.badge.subagent":"subagent","agentSelector.none":"None","agentSelector.trigger.primary":"Agent: {agent}","modelSelector.placeholder.search":"Search models...","modelSelector.none":"None","modelSelector.trigger.primary":"Model: {model}","modelSelector.favoritesOnly.toggle.ariaLabel":"Toggle favorites only","modelSelector.favoritesOnly.showAll":"Show all models","modelSelector.favorite.add":"Add to favorites","modelSelector.favorite.remove":"Remove from favorites","thinkingSelector.variant.default":"Default","thinkingSelector.label":"Thinking: {variant}","envEditor.title":"Environment Variables","envEditor.count.one":"({count} variable)","envEditor.count.other":"({count} variables)","envEditor.fields.name.placeholder":"Variable name","envEditor.fields.name.readOnlyTitle":"Variable name (read-only)","envEditor.fields.value.placeholder":"Variable value","envEditor.actions.remove.title":"Remove variable","envEditor.actions.add.title":"Add variable","envEditor.empty":"No environment variables configured. Add variables above to customize the OpenCode environment.","envEditor.help":"These variables will be available in the OpenCode environment when starting instances.","contextUsagePanel.headings.tokens":"Tokens","contextUsagePanel.headings.context":"Context","contextUsagePanel.labels.input":"Input","contextUsagePanel.labels.output":"Output","contextUsagePanel.labels.cost":"Cost","contextUsagePanel.labels.used":"Used","contextUsagePanel.labels.available":"Avail","contextUsagePanel.unavailable":"--","settings.title":"Settings","settings.navigationAriaLabel":"Settings sections","settings.close":"Close settings","settings.content.eyebrow":"Workspace preferences","settings.open.title":"Open settings","settings.open.ariaLabel":"Open settings","settings.nav.appearance":"Appearance","settings.nav.notifications":"Notifications","settings.nav.remote":"Remote Access","settings.nav.speech":"Speech","settings.nav.opencode":"OpenCode","settings.scope.device":"This device","settings.scope.server":"Server setting","settings.common.enabled":"Enabled","settings.common.disabled":"Disabled","settings.section.appearance.title":"Appearance","settings.section.appearance.subtitle":"Adjust how the app looks on this device.","settings.appearance.theme.title":"Theme","settings.appearance.theme.subtitle":"Choose the color mode used throughout the app.","settings.appearance.theme.option.system":"Match your operating system setting","settings.appearance.theme.option.light":"Use the light appearance","settings.appearance.theme.option.dark":"Use the dark appearance","settings.section.notifications.title":"Notifications","settings.section.notifications.subtitle":"Control OS-level notifications for session activity.","settings.notifications.permission.granted":"Granted","settings.notifications.permission.denied":"Denied","settings.notifications.permission.default":"Not granted","settings.notifications.permission.unsupported":"Unsupported","settings.notifications.messages.unsupportedEnvironment":"OS notifications are not supported in this environment.","settings.notifications.messages.permissionDenied":"Notification permission denied. Enable notifications in your system or browser settings.","settings.notifications.messages.permissionNotGranted":"Notification permission not granted.","settings.notifications.messages.unsupportedGeneral":"Notifications are not supported in this environment.","settings.notifications.messages.permissionGranted":"Permission granted. You can now enable notifications.","settings.notifications.messages.permissionRequestDenied":"Permission denied. You may need to enable notifications in your system or browser settings.","settings.notifications.sessionStatus.title":"Session status notifications","settings.notifications.sessionStatus.subtitle":"Receive alerts when sessions need your attention.","settings.notifications.enable.title":"Enable notifications","settings.notifications.enable.permission":"Permission: {permission}","settings.notifications.requestPermission.title":"Request permission","settings.notifications.requestPermission.subtitle":"Allow the app to send notifications on this device.","settings.notifications.requestPermission.action":"Request","settings.notifications.allowVisible.title":"Notify when the app is focused","settings.notifications.allowVisible.subtitle":"Keep alerts enabled even while this window is visible.","settings.notifications.unsupportedNote":"Notifications are not supported in this environment. The notifications control stays disabled.","settings.notifications.events.title":"Notify me when","settings.notifications.events.subtitle":"Choose which session events should send alerts.","settings.notifications.events.needsInput":"Session needs input","settings.notifications.events.idle":"Session becomes idle","settings.notifications.status.enabled":"Notifications enabled","settings.notifications.status.disabled":"Notifications disabled","settings.notifications.status.unsupported":"Notifications unsupported","settings.section.remote.title":"Remote Access","settings.section.remote.subtitle":"Review how this server is exposed on your network and secure access credentials.","settings.section.opencode.title":"OpenCode","settings.section.opencode.subtitle":"Choose the OpenCode binary and environment used for new instances.","settings.opencode.runtime.title":"Runtime","settings.opencode.runtime.subtitle":"Configure which OpenCode binary new instances launch with.","settings.opencode.logLevel.title":"OpenCode Log Level","settings.opencode.logLevel.subtitle":"Control the log verbosity used when launching new OpenCode instances.","settings.opencode.logLevel.selector.title":"Default log level","settings.opencode.logLevel.selector.subtitle":"Choose how verbose new OpenCode instances should be.","settings.opencode.logLevel.option.debug":"Debug","settings.opencode.logLevel.option.info":"Info","settings.opencode.logLevel.option.warn":"Warn","settings.opencode.logLevel.option.error":"Error","settings.appearance.behavior.title":"Interaction","settings.appearance.behavior.subtitle":"Message, diff, and input defaults.","settings.behavior.keyboardHints.title":"Keyboard shortcut hints","settings.behavior.keyboardHints.subtitle":"Show keyboard shortcut hints across the UI.","settings.behavior.thinking.title":"Thinking sections","settings.behavior.thinking.subtitle":"Show or hide AI thinking sections in messages.","settings.behavior.thinkingDefault.title":"Thinking default","settings.behavior.thinkingDefault.subtitle":"Choose whether thinking sections start expanded or collapsed.","settings.behavior.timelineTools.title":"Timeline tool calls","settings.behavior.timelineTools.subtitle":"Show or hide tool call entries in the message timeline.","settings.behavior.diffView.title":"Diff view","settings.behavior.diffView.subtitle":"Choose how tool-call diffs are displayed.","settings.behavior.diffView.option.split":"Split","settings.behavior.diffView.option.unified":"Unified","settings.behavior.toolOutputsDefault.title":"Tool outputs default","settings.behavior.toolOutputsDefault.subtitle":"Choose whether tool outputs start expanded or collapsed.","settings.behavior.diagnosticsDefault.title":"Diagnostics default","settings.behavior.diagnosticsDefault.subtitle":"Choose whether diagnostics output starts expanded or collapsed.","settings.behavior.toolInputsVisibility.title":"Tool inputs visibility","settings.behavior.toolInputsVisibility.subtitle":"Set default visibility for tool call input arguments.","settings.behavior.usageMetrics.title":"Token usage metrics","settings.behavior.usageMetrics.subtitle":"Show or hide token and cost stats for assistant messages.","settings.behavior.autoCleanup.title":"Auto-cleanup blank sessions","settings.behavior.autoCleanup.subtitle":"Automatically clean up blank sessions when creating new ones.","settings.behavior.promptVoiceInput.title":"Prompt voice input","settings.behavior.promptVoiceInput.subtitle":"Show the microphone control for speech-to-text prompt input when speech is configured.","settings.behavior.promptSubmit.title":"Enter to submit","settings.behavior.promptSubmit.subtitle":"Use Enter to submit prompts; Cmd/Ctrl+Enter inserts a new line.","settings.speech.title":"Speech","settings.speech.subtitle":"Configure speech-to-text now and text-to-speech groundwork for later features.","settings.speech.provider.title":"Provider","settings.speech.provider.subtitle":"Speech requests use the server-side speech adapter.","settings.speech.provider.openaiCompatible":"OpenAI-compatible","settings.speech.status.loading":"Checking configuration...","settings.speech.status.configured":"Configured","settings.speech.status.missing":"Missing API key","settings.speech.status.error":"Speech service unavailable","settings.speech.apiKey.title":"API key","settings.speech.apiKey.subtitle":"Used for CodeNomad-managed speech requests.","settings.speech.apiKey.placeholder":"Enter a new API key","settings.speech.apiKey.storedNote":"A saved API key is hidden. Enter a new value to replace it, or leave the field blank to keep it.","settings.speech.apiKey.clearAction":"Clear saved key","settings.speech.apiKey.clearPending":"The saved API key will be removed when you save.","settings.speech.baseUrl.title":"Base URL","settings.speech.baseUrl.subtitle":"Optional override for OpenAI-compatible speech endpoints.","settings.speech.baseUrl.placeholder":"https://api.openai.com/v1","settings.speech.sttModel.title":"Transcription model","settings.speech.sttModel.subtitle":"Model used for prompt speech-to-text requests.","settings.speech.ttsModel.title":"Speech model","settings.speech.ttsModel.subtitle":"Default text-to-speech model reserved for future playback features.","settings.speech.ttsVoice.title":"Default voice","settings.speech.ttsVoice.subtitle":"Default text-to-speech voice reserved for future playback features.","settings.speech.playbackMode.title":"Playback mode","settings.speech.playbackMode.subtitle":"Choose whether TTS starts playing as audio streams in or after the full file is generated.","settings.speech.playbackMode.streaming":"Streaming","settings.speech.playbackMode.buffered":"Buffered","settings.speech.ttsFormat.title":"Output format","settings.speech.ttsFormat.subtitle":"Choose the audio format for synthesized speech. Streaming support depends on your provider and browser.","settings.speech.help":"Prompt voice input appears when speech transcription is configured and supported. Message playback uses the TTS mode and format selected here.","settings.speech.compatibility.streamingUnavailable":"Your current speech provider configuration does not advertise streaming TTS. Switch playback mode to buffered if you want playback to work now.","settings.speech.compatibility.browserStreamingUnavailable":"Your current browser cannot stream the selected TTS format. Choose buffered playback or switch to a different format.","settings.speech.compatibility.runtimeNote":"All formats stay selectable in streaming mode. Some browser and provider combinations may still fail at playback time.","settings.speech.testPlayback.action":"Test playback","settings.speech.testPlayback.generating":"Generating sample","settings.speech.testPlayback.stop":"Stop sample","settings.speech.testPlayback.sample":"Thank you for using CodeNomad, your speech settings are working fine.","settings.speech.testPlayback.note":"The test uses your current playback mode and format immediately. Save API key, base URL, model, or voice changes first if you want those reflected too.","settings.speech.save.action":"Save","settings.speech.save.saving":"Saving...","settings.speech.save.saved":"Saved","settings.speech.save.unsaved":"Unsaved changes","settings.speech.save.error":"Save failed","settings.nav.sidecars":"SideCars","settings.section.sidecars.eyebrow":"Server services","settings.section.sidecars.title":"SideCars","settings.section.sidecars.subtitle":"Configure local services listening on fixed ports that the server can proxy into tabs.","sidecars.form.name":"Name","sidecars.form.validation":"Enter a valid SideCar name and port.","sidecars.form.port":"Port","sidecars.form.insecure":"Use HTTP","sidecars.form.protocol":"Protocol","sidecars.form.protocol.help":"Choose how the proxy should connect to the local service.","sidecars.form.protocol.https":"HTTPS","sidecars.form.protocol.http":"HTTP","sidecars.form.prefixMode":"Prefix mode","sidecars.form.prefixMode.help":"Choose whether the SideCar receives the public /sidecars path prefix.","sidecars.form.prefixMode.strip":"Strip prefix","sidecars.form.prefixMode.preserve":"Preserve prefix","sidecars.form.add":"Add SideCar","sidecars.kind.port":"Port","sidecars.status.running":"Running","sidecars.status.stopped":"Stopped","sidecars.basePath":"Base path","sidecars.settings.listTitle":"Configured SideCars","sidecars.settings.listSubtitle":"Review the port-based SideCars available in the picker.","sidecars.settings.empty":"No SideCars configured yet.","sidecars.picker.title":"Open SideCar","sidecars.picker.loading":"Loading SideCars...","sidecars.picker.subtitle":"Choose an available SideCar to open in a new tab.","sidecars.picker.empty":"No port-based SideCars are available yet.","sidecars.picker.close":"Close","sidecars.open.errorTitle":"Unable to open SideCar","sidecars.open.notFound":"SideCar not found.","sidecars.open.notRunning":"SideCar is not reachable on its configured port.","sidecars.back":"Back","sidecars.refresh":"Refresh","sidecars.path":"Path","sidecars.go":"Go"},be={"time.relative.justNow":"just now","time.relative.daysAgoShort":"{count}d ago","time.relative.hoursAgoShort":"{count}h ago","time.relative.minutesAgoShort":"{count}m ago"},Se={"toolCall.pending.waitingToRun":"Waiting to run...","toolCall.error.label":"Error:","toolCall.header.copyTitle":"Copy tool call title","toolCall.header.copyAriaLabel":"Copy tool call title","toolCall.header.showInputTitle":"Show Tool Arguments","toolCall.header.showInputAriaLabel":"Show Tool Arguments","toolCall.header.hideInputTitle":"Hide Tool Arguments","toolCall.header.hideInputAriaLabel":"Hide Tool Arguments","toolCall.io.input":"Tool Input","toolCall.io.output":"Tool Output","toolCall.diff.label":"Diff","toolCall.diff.label.withPath":"Diff · {path}","toolCall.diff.viewMode.ariaLabel":"Diff view mode","toolCall.diff.viewMode.split":"Split","toolCall.diff.viewMode.unified":"Unified","toolCall.diff.switchToSplit":"Switch to split view","toolCall.diff.switchToUnified":"Switch to unified view","toolCall.diff.enableWordWrap":"Enable word wrap","toolCall.diff.disableWordWrap":"Disable word wrap","toolCall.diff.copyPatch":"Copy patch","toolCall.diagnostics.title":"Diagnostics","toolCall.diagnostics.ariaLabel":"Diagnostics","toolCall.diagnostics.ariaLabel.withLabel":"Diagnostics {label}","toolCall.diagnostics.severity.error.short":"ERR","toolCall.diagnostics.severity.warning.short":"WARN","toolCall.diagnostics.severity.info.short":"INFO","toolCall.renderer.toolName.shell":"Shell","toolCall.renderer.toolName.fetch":"Fetch","toolCall.renderer.toolName.invalid":"Invalid","toolCall.renderer.toolName.plan":"Plan","toolCall.renderer.toolName.applyPatch":"Apply patch","toolCall.renderer.action.working":"Working...","toolCall.renderer.action.writingCommand":"Writing command...","toolCall.renderer.action.preparingEdit":"Preparing edit...","toolCall.renderer.action.readingFile":"Reading file...","toolCall.renderer.action.preparingWrite":"Preparing write...","toolCall.renderer.action.preparingPatch":"Preparing patch...","toolCall.renderer.action.planning":"Planning...","toolCall.renderer.action.fetchingFromWeb":"Fetching from the web...","toolCall.renderer.action.findingFiles":"Finding files...","toolCall.renderer.action.searchingContent":"Searching content...","toolCall.renderer.action.listingDirectory":"Listing directory...","toolCall.renderer.bash.title.timeout":"Timeout: {timeout}","toolCall.renderer.read.detail.offset":"Offset: {offset}","toolCall.renderer.read.detail.limit":"Limit: {limit}","toolCall.renderer.todo.empty":"No plan items yet.","toolCall.renderer.todo.status.pending":"Pending","toolCall.renderer.todo.status.inProgress":"In progress","toolCall.renderer.todo.status.completed":"Completed","toolCall.renderer.todo.status.cancelled":"Cancelled","toolCall.renderer.todo.title.plan":"Plan","toolCall.renderer.todo.title.creating":"Creating plan","toolCall.renderer.todo.title.completing":"Completing plan","toolCall.renderer.todo.title.updating":"Updating plan","toolCall.permission.status.required":"Permission Required","toolCall.permission.status.queued":"Permission Queued","toolCall.permission.requestedDiff.label":"Requested diff","toolCall.permission.requestedDiff.withPath":"Requested diff · {path}","toolCall.permission.queuedText":"Waiting for earlier permission responses.","toolCall.permission.actions.allowOnce":"Allow Once","toolCall.permission.actions.alwaysAllow":"Always Allow","toolCall.permission.actions.deny":"Deny","toolCall.permission.shortcuts.allowOnce":"Allow once","toolCall.permission.shortcuts.alwaysAllow":"Always allow","toolCall.permission.shortcuts.deny":"Deny","toolCall.permission.errors.unableToUpdate":"Unable to update permission","permissionApproval.title":"Requests","permissionApproval.empty":"No pending requests.","permissionApproval.kind.permission":"Permission","permissionApproval.kind.question":"Question","permissionApproval.questionCount.one":"{count} question","permissionApproval.questionCount.other":"{count} questions","permissionApproval.status.active":"Active","permissionApproval.actions.closeAriaLabel":"Close","permissionApproval.actions.goToSession":"Go to Session","permissionApproval.actions.loadingSession":"Loading…","permissionApproval.actions.loadSession":"Load Session","permissionApproval.actions.allowOnce":"Allow Once","permissionApproval.actions.alwaysAllow":"Always Allow","permissionApproval.actions.deny":"Deny","permissionApproval.fallbackHint":"Load session for more information.","permissionApproval.errors.unableToUpdatePermission":"Unable to update permission","toolCall.question.status.required":"Question Required","toolCall.question.status.queued":"Question Queued","toolCall.question.status.questions":"Questions","toolCall.question.action.awaitingAnswers":"Awaiting answers...","toolCall.question.title.questions":"Questions","toolCall.question.title.askingQuestions":"Asking questions","toolCall.question.type.one":"Question","toolCall.question.type.other":"Questions","toolCall.question.number":"Q{number}:","toolCall.question.multiple":"Multiple","toolCall.question.custom.title":"Type a custom answer","toolCall.question.custom.label":"Custom answer","toolCall.question.custom.placeholder":"Type your own answer","toolCall.question.actions.submit":"Submit","toolCall.question.actions.dismiss":"Dismiss","toolCall.question.shortcuts.submit":"Submit","toolCall.question.shortcuts.dismiss":"Dismiss","toolCall.question.queuedText":"Waiting for earlier responses.","toolCall.question.validation.answerAll":"Please answer all questions before submitting.","toolCall.question.errors.unableToReply":"Unable to reply","toolCall.question.errors.unableToDismiss":"Unable to dismiss","toolCall.task.action.delegating":"Delegating...","toolCall.task.sections.prompt":"Prompt","toolCall.task.sections.steps":"Steps","toolCall.task.sections.output":"Output","toolCall.task.steps.count":"{count} steps","toolCall.task.meta.agentModel":"Agent: {agent} • Model: {model}","toolCall.task.meta.agent":"Agent: {agent}","toolCall.task.meta.model":"Model: {model}","toolCall.status.pending":"Pending","toolCall.status.running":"Running","toolCall.status.completed":"Completed","toolCall.status.error":"Error","toolCall.status.unknown":"Unknown","toolCall.applyPatch.action.preparing":"Preparing apply_patch...","toolCall.applyPatch.title.withFileCount.one":"{tool} ({count} file)","toolCall.applyPatch.title.withFileCount.other":"{tool} ({count} files)","toolCall.applyPatch.fileFallback":"File {number}"};function we(...e){const t={};for(const s of e)for(const[o,n]of Object.entries(s)){if(o in t)throw new Error(`Duplicate i18n message key: ${o}`);t[o]=n}return t}const f=we(le,oe,de,be,ne,ae,re,ce,me,he,ue,Se,pe,fe,ge,ie),ve=["en","es","fr","ru","ja","zh-Hans","he"],M=new Map(ve.map(e=>[e.toLowerCase(),e])),ye=new Set(["he"]),F=new Map([["en",f]]),A=new Map,Ce={en:async()=>f,es:async()=>(await S(async()=>{const{esMessages:e}=await import("./index-KGa2MZ03.js");return{esMessages:e}},__vite__mapDeps([0,1,2,3,4,5]))).esMessages,fr:async()=>(await S(async()=>{const{frMessages:e}=await import("./index-Vi334d28.js");return{frMessages:e}},__vite__mapDeps([6,1,2,3,4,5]))).frMessages,ru:async()=>(await S(async()=>{const{ruMessages:e}=await import("./index-DCKsvmLK.js");return{ruMessages:e}},__vite__mapDeps([7,1,2,3,4,5]))).ruMessages,ja:async()=>(await S(async()=>{const{jaMessages:e}=await import("./index-D5K3x-5q.js");return{jaMessages:e}},__vite__mapDeps([8,1,2,3,4,5]))).jaMessages,"zh-Hans":async()=>(await S(async()=>{const{zhHansMessages:e}=await import("./index-Buu9pQM-.js");return{zhHansMessages:e}},__vite__mapDeps([9,1,2,3,4,5]))).zhHansMessages,he:async()=>(await S(async()=>{const{heMessages:e}=await import("./index-DAUGrHIr.js");return{heMessages:e}},__vite__mapDeps([10,1,2,3,4,5]))).heMessages};function ke(e){return ye.has(e)?"rtl":"ltr"}function Le(e){return e.trim().replace(/_/g,"-")}function B(e){if(!e)return null;const s=Le(e).toLowerCase(),o=M.get(s);if(o)return o;const i=s.split("-")[0];return i?i==="zh"?M.get("zh-hans")??null:M.get(i)??null:null}function W(){if(typeof navigator>"u")return null;const e=Array.isArray(navigator.languages)&&navigator.languages.length>0?navigator.languages:navigator.language?[navigator.language]:[];for(const t of e){const s=B(t);if(s)return s}return null}function Pe(e,t){return t?e.replace(/\{(\w+)\}/g,(s,o)=>{const n=t[o];return n==null?"":String(n)}):e}function H(e,t,s){const o=e[t],n=f[t];return Pe(o??n??t,s)}const[Ae,L]=R(0);let h=f,u="en";function Ie(e){return F.get(e)??f}async function G(e){const t=F.get(e);if(t)return t;const s=A.get(e);if(s)return s;const o=Ce[e],n=o().then(i=>(F.set(e,i),A.delete(e),i)).catch(i=>{throw A.delete(e),i});return A.set(e,n),n}async function Oe(e){const t=B(e??void 0)??W()??"en";try{return h=await G(t),u=t,L(s=>s+1),t}catch{return h=f,u="en",L(s=>s+1),"en"}}function Ue(e,t){return Ae(),H(h,e,t)}const z=J(),xe=e=>{const{preferences:t}=X(),[s,o]=R(u),[n,i]=R(u),a=h,c=u,m=typeof document<"u"?document.documentElement.lang:"",b=typeof document<"u"?document.documentElement.dir:"";Y(()=>{const l=W();l&&o(l)});const y=N(()=>B(t().locale)??s()??"en"),p=N(()=>Ie(n()));function D(l,C){return H(p(),l,C)}O(()=>{const l=y();let C=!1;G(l).then(E=>{C||(i(l),u=l,h=E,L(K=>K+1))}).catch(()=>{C||(i("en"),h=f,u="en",L(E=>E+1))}),U(()=>{C=!0})}),O(()=>{if(typeof document>"u")return;const l=y();document.documentElement.dir=ke(l),document.documentElement.lang=l}),U(()=>{h=a,u=c,L(l=>l+1),typeof document<"u"&&(document.documentElement.lang=m,document.documentElement.dir=b)});const T={locale:y,t:D};return $(z.Provider,{value:T,get children(){return e.children}})};function _e(){const e=Z(z);if(!e)throw new Error("useI18n must be used within I18nProvider");return e}function De(){if(typeof window>"u")return"web";const e=window;return typeof e.electronAPI<"u"?"electron":typeof e.__TAURI__<"u"||typeof navigator<"u"&&/tauri/i.test(navigator.userAgent)?"tauri":"web"}function Te(){if(typeof navigator>"u")return"desktop";const e=navigator.userAgentData;if(e!=null&&e.mobile)return"mobile";const t=navigator.userAgent.toLowerCase();return/android|iphone|ipad|ipod|blackberry|mini|windows phone|mobile|silk/.test(t)?"mobile":"desktop"}const Ee=ee("actions");let w=null;function Me(){return w||(w={host:De(),platform:Te()},typeof window<"u"&&Ee.info(`[runtime] host=${w.host} platform=${w.platform}`),w)}const Q=Me(),Ve=()=>Q.host==="electron",qe=()=>Q.host==="tauri";function r(e,t,s,o){if(typeof t=="function"?e!==t||!o:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return s==="m"?o:s==="a"?o.call(e):o?o.value:t.get(e)}function k(e,t,s,o,n){if(typeof t=="function"?e!==t||!0:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t.set(e,s),s}var g,d,v,I;const _="__TAURI_TO_IPC_KEY__";function j(e,t=!1){return window.__TAURI_INTERNALS__.transformCallback(e,t)}class Re{constructor(t){g.set(this,void 0),d.set(this,0),v.set(this,[]),I.set(this,void 0),k(this,g,t||(()=>{})),this.id=j(s=>{const o=s.index;if("end"in s){o==r(this,d,"f")?this.cleanupCallback():k(this,I,o);return}const n=s.message;if(o==r(this,d,"f")){for(r(this,g,"f").call(this,n),k(this,d,r(this,d,"f")+1);r(this,d,"f")in r(this,v,"f");){const i=r(this,v,"f")[r(this,d,"f")];r(this,g,"f").call(this,i),delete r(this,v,"f")[r(this,d,"f")],k(this,d,r(this,d,"f")+1)}r(this,d,"f")===r(this,I,"f")&&this.cleanupCallback()}else r(this,v,"f")[o]=n})}cleanupCallback(){window.__TAURI_INTERNALS__.unregisterCallback(this.id)}set onmessage(t){k(this,g,t)}get onmessage(){return r(this,g,"f")}[(g=new WeakMap,d=new WeakMap,v=new WeakMap,I=new WeakMap,_)](){return`__CHANNEL__:${this.id}`}toJSON(){return this[_]()}}class V{constructor(t,s,o){this.plugin=t,this.event=s,this.channelId=o}async unregister(){return P(`plugin:${this.plugin}|remove_listener`,{event:this.event,channelId:this.channelId})}}async function We(e,t,s){const o=new Re(s);try{return await P(`plugin:${e}|register_listener`,{event:t,handler:o}),new V(e,t,o.id)}catch{return await P(`plugin:${e}|registerListener`,{event:t,handler:o}),new V(e,t,o.id)}}async function P(e,t={},s){return window.__TAURI_INTERNALS__.invoke(e,t,s)}var q;(function(e){e.WINDOW_RESIZED="tauri://resize",e.WINDOW_MOVED="tauri://move",e.WINDOW_CLOSE_REQUESTED="tauri://close-requested",e.WINDOW_DESTROYED="tauri://destroyed",e.WINDOW_FOCUS="tauri://focus",e.WINDOW_BLUR="tauri://blur",e.WINDOW_SCALE_FACTOR_CHANGED="tauri://scale-change",e.WINDOW_THEME_CHANGED="tauri://theme-changed",e.WINDOW_CREATED="tauri://window-created",e.WEBVIEW_CREATED="tauri://webview-created",e.DRAG_ENTER="tauri://drag-enter",e.DRAG_OVER="tauri://drag-over",e.DRAG_DROP="tauri://drag-drop",e.DRAG_LEAVE="tauri://drag-leave"})(q||(q={}));async function Fe(e,t){window.__TAURI_EVENT_PLUGIN_INTERNALS__.unregisterListener(e,t),await P("plugin:event|unlisten",{event:e,eventId:t})}async function He(e,t,s){var o;const n=(o=void 0)!==null&&o!==void 0?o:{kind:"Any"};return P("plugin:event|listen",{event:e,target:n,handler:j(t)}).then(i=>async()=>Fe(e,i))}export{xe as I,S as _,qe as a,Ve as b,We as c,f as e,P as i,He as l,we as m,Oe as p,Q as r,Ue as t,_e as u};
@@ -1 +1 @@
1
- import{i,c as f}from"./index-DzRzoTK8.js";import"./git-diff-vendor-CSgooKT_.js";import"./fast-diff-vendor-DgdwVvTQ.js";import"./highlight-vendor-8FKMu9os.js";import"./monaco-viewer-CMM6n0T3.js";var o;(function(n){n.Year="year",n.Month="month",n.TwoWeeks="twoWeeks",n.Week="week",n.Day="day",n.Hour="hour",n.Minute="minute",n.Second="second"})(o||(o={}));class g{static at(t,e=!1,a=!1){return{at:{date:t,repeating:e,allowWhileIdle:a},interval:void 0,every:void 0}}static interval(t,e=!1){return{at:void 0,interval:{interval:t,allowWhileIdle:e},every:void 0}}static every(t,e,a=!1){return{at:void 0,interval:void 0,every:{interval:t,count:e,allowWhileIdle:a}}}}var c;(function(n){n[n.None=0]="None",n[n.Min=1]="Min",n[n.Low=2]="Low",n[n.Default=3]="Default",n[n.High=4]="High"})(c||(c={}));var r;(function(n){n[n.Secret=-1]="Secret",n[n.Private=0]="Private",n[n.Public=1]="Public"})(r||(r={}));async function v(){return window.Notification.permission!=="default"?await Promise.resolve(window.Notification.permission==="granted"):await i("plugin:notification|is_permission_granted")}async function p(){return await window.Notification.requestPermission()}function y(n){typeof n=="string"?new window.Notification(n):new window.Notification(n.title,n)}async function m(n){await i("plugin:notification|register_action_types",{types:n})}async function P(){return await i("plugin:notification|get_pending")}async function _(n){await i("plugin:notification|cancel",{notifications:n})}async function N(){await i("plugin:notification|cancel")}async function h(){return await i("plugin:notification|get_active")}async function A(n){await i("plugin:notification|remove_active",{notifications:n})}async function k(){await i("plugin:notification|remove_active")}async function M(n){await i("plugin:notification|create_channel",{...n})}async function C(n){await i("plugin:notification|delete_channel",{id:n})}async function D(){return await i("plugin:notification|listChannels")}async function H(n){return await f("notification","notification",n)}async function L(n){return await f("notification","actionPerformed",n)}export{c as Importance,g as Schedule,o as ScheduleEvery,r as Visibility,h as active,_ as cancel,N as cancelAll,D as channels,M as createChannel,v as isPermissionGranted,L as onAction,H as onNotificationReceived,P as pending,m as registerActionTypes,A as removeActive,k as removeAllActive,C as removeChannel,p as requestPermission,y as sendNotification};
1
+ import{i,c as f}from"./index-MN-xsoRk.js";import"./git-diff-vendor-CSgooKT_.js";import"./fast-diff-vendor-DgdwVvTQ.js";import"./highlight-vendor-8FKMu9os.js";import"./monaco-viewer-C8arwHE9.js";var o;(function(n){n.Year="year",n.Month="month",n.TwoWeeks="twoWeeks",n.Week="week",n.Day="day",n.Hour="hour",n.Minute="minute",n.Second="second"})(o||(o={}));class g{static at(t,e=!1,a=!1){return{at:{date:t,repeating:e,allowWhileIdle:a},interval:void 0,every:void 0}}static interval(t,e=!1){return{at:void 0,interval:{interval:t,allowWhileIdle:e},every:void 0}}static every(t,e,a=!1){return{at:void 0,interval:void 0,every:{interval:t,count:e,allowWhileIdle:a}}}}var c;(function(n){n[n.None=0]="None",n[n.Min=1]="Min",n[n.Low=2]="Low",n[n.Default=3]="Default",n[n.High=4]="High"})(c||(c={}));var r;(function(n){n[n.Secret=-1]="Secret",n[n.Private=0]="Private",n[n.Public=1]="Public"})(r||(r={}));async function v(){return window.Notification.permission!=="default"?await Promise.resolve(window.Notification.permission==="granted"):await i("plugin:notification|is_permission_granted")}async function p(){return await window.Notification.requestPermission()}function y(n){typeof n=="string"?new window.Notification(n):new window.Notification(n.title,n)}async function m(n){await i("plugin:notification|register_action_types",{types:n})}async function P(){return await i("plugin:notification|get_pending")}async function _(n){await i("plugin:notification|cancel",{notifications:n})}async function N(){await i("plugin:notification|cancel")}async function h(){return await i("plugin:notification|get_active")}async function A(n){await i("plugin:notification|remove_active",{notifications:n})}async function k(){await i("plugin:notification|remove_active")}async function M(n){await i("plugin:notification|create_channel",{...n})}async function C(n){await i("plugin:notification|delete_channel",{id:n})}async function D(){return await i("plugin:notification|listChannels")}async function H(n){return await f("notification","notification",n)}async function L(n){return await f("notification","actionPerformed",n)}export{c as Importance,g as Schedule,o as ScheduleEvery,r as Visibility,h as active,_ as cancel,N as cancelAll,D as channels,M as createChannel,v as isPermissionGranted,L as onAction,H as onNotificationReceived,P as pending,m as registerActionTypes,A as removeActive,k as removeAllActive,C as removeChannel,p as requestPermission,y as sendNotification};