@openchamber/web 1.12.2 → 1.12.3

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 (34) hide show
  1. package/dist/assets/{MarkdownRendererImpl-2INOOMmV.js → MarkdownRendererImpl-C2snGm6y.js} +1 -1
  2. package/dist/assets/{MultiRunWindow-BovvaCrr.js → MultiRunWindow-DXXoYCBh.js} +1 -1
  3. package/dist/assets/{NewWorktreeDialog-6y6rHfOQ.js → NewWorktreeDialog-C6394QE9.js} +1 -1
  4. package/dist/assets/OnboardingScreen-CLXmHHBW.js +1 -0
  5. package/dist/assets/{SessionSwitcherDropdown-DSXsR7zB.js → SessionSwitcherDropdown-BMN9gaXo.js} +1 -1
  6. package/dist/assets/{SettingsWindow-Dll7W_Kd.js → SettingsWindow-DXEjjH2f.js} +1 -1
  7. package/dist/assets/{TerminalView-D_ktT_L5.js → TerminalView-CePdcScA.js} +1 -1
  8. package/dist/assets/{es-9Cy-lgBh.js → es-rCA6AcBs.js} +1 -1
  9. package/dist/assets/{ko-BxmPoeb2.js → ko-CTiirGAp.js} +1 -1
  10. package/dist/assets/{main-BpZQobwD.js → main-D1IN8sAs.js} +2 -2
  11. package/dist/assets/{main-D8KFwoUt.js → main-DIwL7PaU.js} +46 -46
  12. package/dist/assets/{miniChat-BdEth0Oc.js → miniChat-DXW_W4_n.js} +2 -2
  13. package/dist/assets/{mobile-BxWzNO1C.js → mobile-DWyy0wq-.js} +2 -2
  14. package/dist/assets/{pl-J7oKZUR2.js → pl-CwJAYYhT.js} +1 -1
  15. package/dist/assets/{pt-BR-p6gRuJwx.js → pt-BR-xndordtt.js} +1 -1
  16. package/dist/assets/{renderElectronMiniChatApp-MNKYhIaT.js → renderElectronMiniChatApp-BmvjGDb_.js} +2 -2
  17. package/dist/assets/{renderMobileApp-DpYY7X9v.js → renderMobileApp-1BEmeUF9.js} +3 -3
  18. package/dist/assets/{uk-BOvMb8eG.js → uk-C52rE_cP.js} +1 -1
  19. package/dist/assets/{useAppFontEffects-DEZpweZZ.js → useAppFontEffects-hYm-4PtP.js} +4 -4
  20. package/dist/assets/{zh-CN-Cv0tBxN1.js → zh-CN-B7IfGwyh.js} +1 -1
  21. package/dist/assets/{zh-TW-CS7R6Ak3.js → zh-TW-DiO_1_-_.js} +1 -1
  22. package/dist/index.html +1 -1
  23. package/dist/mini-chat.html +1 -1
  24. package/dist/mobile.html +1 -1
  25. package/package.json +1 -1
  26. package/server/index.js +0 -15
  27. package/server/lib/fs/routes.js +28 -2
  28. package/server/lib/opencode/env-runtime.js +20 -158
  29. package/server/lib/opencode/env-runtime.test.js +38 -11
  30. package/server/lib/opencode/lifecycle.js +5 -24
  31. package/server/lib/opencode/lifecycle.test.js +0 -2
  32. package/server/lib/opencode/network-runtime.js +1 -1
  33. package/server/lib/opencode/routes.js +1 -1
  34. package/dist/assets/OnboardingScreen-B1Ft9kmW.js +0 -1
@@ -8,7 +8,7 @@ Use @filename para adicionar o conteúdo do arquivo.`,"settings.commands.page.te
8
8
  [Processo encerrado{exitCodeSegment}{signalSegment}]\r
9
9
  `,"terminalView.stream.processExitedWithCode":" com código {exitCode}","terminalView.stream.processExitedWithSignal":" (sinal {signal})","terminalView.error.sessionEnded":"Sessão de terminal terminada","terminalView.error.connectionFailed":"Erro de conexão: {message}","terminalView.error.startSessionFailed":"Não foi possível iniciar a sessão de terminal","terminalView.error.restartFailed":"Não foi possível reiniciar o terminal","terminalView.error.sendInputFailed":"Não foi possível enviar entrada","terminalView.empty.noWorkingDirectory":"Não há diretório de trabalho disponível para o terminal.","terminalView.empty.selectSession":"Selecione uma sessão para abrir o terminal.","terminalView.empty.noWorkingDirectoryForSession":"Não há diretório de trabalho disponível para esta sessão.","terminalView.actions.retry":"Tentar novamente","terminalView.actions.hardRestart":"Reinício forçado","terminalView.actions.hardRestartTitle":"Forçar encerramento e criar uma nova sessão","terminalView.quickKeys.escape":"Esc","terminalView.quickKeys.tabAria":"Tab","terminalView.quickKeys.controlLabel":"Ctrl","terminalView.quickKeys.controlModifierAria":"Modificador Control","terminalView.quickKeys.commandModifierAria":"Modificador de comando","terminalView.quickKeys.arrowUpAria":"Flecha acima","terminalView.quickKeys.arrowLeftAria":"Flecha esquerda","terminalView.quickKeys.arrowDownAria":"Flecha abaixo","terminalView.quickKeys.arrowRightAria":"Flecha direita","terminalView.quickKeys.enterAria":"Enter","terminalView.tabs.closeTabTitle":"Fechar aba","terminalView.tabs.newTabTitle":"Nova aba","terminalView.bottomDock.resizeAria":"Ajustar tamanho do painel de terminal","terminalView.bottomDock.restoreTitle":"Restaurar altura do painel de terminal","terminalView.bottomDock.restoreAria":"Restaurar altura do painel de terminal","terminalView.bottomDock.expandTitle":"Expandir painel de terminal","terminalView.bottomDock.expandAria":"Expandir painel de terminal","terminalView.bottomDock.closeTitle":"Fechar painel de terminal","terminalView.bottomDock.closeAria":"Fechar painel de terminal","terminalView.viewport.inputAria":"Entrada de terminal","directoryExplorerDialog.title":"Adicionar diretório de projeto","directoryExplorerDialog.description":"Escolha uma pasta para adicionar como projeto.","directoryExplorerDialog.toggle.showHidden":"Mostrar ocultos","directoryExplorerDialog.pathInput.placeholder":"Digite o caminho ou selecione na árvore...","directoryExplorerDialog.actions.openingFinder":"Abrindo...","directoryExplorerDialog.actions.openInFinder":"Abrir no Finder","directoryExplorerDialog.actions.adding":"Adicionando...","directoryExplorerDialog.actions.addProject":"Adicionar projeto","directoryExplorerDialog.actions.addLocalProject":"Adicionar projeto local","directoryExplorerDialog.actions.cloneRepository":"Clonar repositório","directoryExplorerDialog.actions.cloneAndAdd":"Clonar e adicionar","directoryExplorerDialog.actions.cloning":"Clonando...","directoryExplorerDialog.actions.createAndAdd":"Criar e adicionar","directoryExplorerDialog.actions.alreadyAdded":"Já adicionado","directoryExplorerDialog.clone.remoteUrlPlaceholder":"URL do repositório (HTTPS ou SSH)","directoryExplorerDialog.browse.directories":"Diretórios","directoryExplorerDialog.browse.loading":"Carregando diretórios...","directoryExplorerDialog.browse.empty":"Nenhum diretório correspondente.","directoryExplorerDialog.browse.parentDirectory":"Diretório pai","directoryExplorerDialog.browse.addedBadge":"Adicionado","directoryExplorerDialog.browse.quickAdd":"Adicionar","directoryExplorerDialog.footer.navigate":"Navegar","directoryExplorerDialog.footer.select":"Selecionar","directoryExplorerDialog.footer.add":"Adicionar","directoryExplorerDialog.shortcut.enter":"Enter","directoryExplorerDialog.toast.unableToAccessDirectory":"Não é possível acessar o diretório","directoryExplorerDialog.toast.desktopDeniedAccess":"O desktop negou o acesso ao diretório.","directoryExplorerDialog.toast.failedToOpenDirectory":"Não foi possível abrir o diretório","directoryExplorerDialog.toast.desktopCouldNotGrantAccess":"O desktop não pôde conceder acesso ao arquivo.","directoryExplorerDialog.toast.failedToAddProject":"Não foi possível adicionar o projeto","directoryExplorerDialog.toast.cloneUrlRequired":"Insira uma URL de repositório antes de clonar.","directoryExplorerDialog.toast.selectValidDirectoryPath":"Selecione um caminho de diretório válido.","directoryExplorerDialog.toast.failedToSelectDirectory":"Não foi possível selecionar o diretório","directoryExplorerDialog.toast.unknownError":"Ocorreu um erro desconhecido.","directoryTree.actions.createNewDirectory":"Criar nova pasta","directoryTree.actions.pinDirectory":"Fixar pasta","directoryTree.actions.unpinDirectory":"Desafixar pasta","directoryTree.actions.createDirectory":"Criar pasta","directoryTree.actions.cancel":"Cancelar","directoryTree.actions.selectWorkingDirectoryAria":"Selecionar pasta de trabalho","directoryTree.state.locatingHomeDirectory":"Buscando a pasta de início...","directoryTree.state.loading":"Carregando...","directoryTree.state.noDirectoriesFound":"Nenhum diretório encontrado","directoryTree.section.pinned":"Fixados","directoryTree.section.browse":"Explorar","aboutDialog.versionLabel":"Versão {version}","aboutDialog.openChamberVersionLabel":"Versão do OpenChamber {version}","aboutDialog.openCodeVersionLabel":"Versão do OpenCode {version}","aboutDialog.actions.copyDiagnostics":"Copiar diagnósticos","aboutDialog.actions.preparingDiagnostics":"Preparando diagnósticos...","aboutDialog.actions.diagnosticsCopied":"Diagnósticos copiados","aboutDialog.diagnosticsDescription":"Inclui o estado do OpenChamber, a integridade do OpenCode, diretórios e projetos.","aboutDialog.footerNote":"Feito com carinho para a comunidade","aboutDialog.toast.copyFailed":"Não foi possível copiar","aboutDialog.toast.diagnosticsNotReady":"Os diagnósticos ainda não estão prontos. Aguarde um segundo e tente novamente.","aboutDialog.toast.diagnosticsCopied":"Diagnósticos copiados","helpDialog.title":"Atalhos de teclado","helpDialog.description":"Use estes atalhos de teclado para navegar pelo OpenChamber com eficiência","helpDialog.section.navigationCommands":"Navegação e comandos","helpDialog.section.sessionManagement":"Gerenciamento de sessões","helpDialog.section.panels":"Painéis","helpDialog.section.interface":"Interface","helpDialog.item.openCommandPalette":"Abrir paleta de comandos","helpDialog.item.showKeyboardShortcuts":"Mostrar atalhos de teclado (este diálogo)","helpDialog.item.toggleSessionSidebar":"Mostrar ou ocultar barra lateral de sessão","helpDialog.item.cycleAgent":"Alternar agente (entrada do chat)","helpDialog.item.openModelSelector":"Abrir seletor de modelos","helpDialog.item.navigateModels":"Navegar por modelos (no seletor)","helpDialog.item.adjustThinkingMode":"Ajustar modo de raciocínio (no seletor, quando estiver disponível)","helpDialog.item.cycleThinkingVariant":"Alternar variante de raciocínio (atalho global)","helpDialog.item.newWindow":"Nova janela (apenas desktop)","helpDialog.item.createNewSession":"Criar nova sessão","helpDialog.item.createNewWorktreeDraft":"Criar novo rascunho de worktree","helpDialog.item.focusChatInput":"Focar entrada do chat","helpDialog.item.abortActiveRun":"Interromper execução ativa (duplo clique)","helpDialog.item.toggleRightSidebar":"Mostrar ou ocultar barra lateral direita","helpDialog.item.openRightSidebarGitTab":"Abrir aba de Git em barra lateral direita","helpDialog.item.openRightSidebarFilesTab":"Abrir aba de arquivos em barra lateral direita","helpDialog.item.cycleRightSidebarTab":"Alternar aba da barra lateral direita","helpDialog.item.toggleTerminalDock":"Mostrar ou ocultar dock de terminal","helpDialog.item.toggleTerminalExpanded":"Expandir ou recolher o terminal","helpDialog.item.togglePlanContextPanel":"Alternar painel de contexto do plano","helpDialog.item.cycleTheme":"Alternar tema (Claro → Escuro → Sistema)","helpDialog.item.switchProject":"Alternar projeto","helpDialog.item.toggleServicesMenu":"Mostrar ou ocultar menu de serviços","helpDialog.item.cycleServicesTab":"Alternar aba de serviços","helpDialog.item.openSettings":"Abrir configurações","helpDialog.keyCombiner.or":"ou","helpDialog.proTips.title":"Dicas:","helpDialog.proTips.commandPalette":"Use a paleta de comandos ({shortcut}) para acessar rapidamente todas as ações","helpDialog.proTips.recentSessions":"As cinco sessões mais recentes aparecem na paleta de comandos","helpDialog.proTips.themeCycling":"A alternância de tema lembra sua preferência entre sessões","header.actions.rightSidebarWithShortcut":"Barra lateral direita ({shortcut})","header.actions.toggleRightSidebarAria":"Mostrar ou ocultar barra lateral direita","header.actions.openAppMenu":"Menu do OpenChamber","header.actions.openAppMenuAria":"Abrir menu do OpenChamber","header.actions.openSessionsWithShortcut":"Abrir sessões ({shortcut})","header.actions.openSessionsAria":"Abrir sessões","header.actions.closeSessionsAria":"Fechar sessões","header.actions.newSessionAria":"Nova sessão","header.actions.newSessionWithShortcut":"Nova sessão ({shortcut})","header.actions.backAria":"Voltar","header.navigation.mainAria":"Navegação principal","header.sessions.title":"Sessões","header.changes.availableAria":"Alterações disponíveis","session.githubIssuePicker.error.noActiveProject":"Não há nenhum projeto ativo","session.githubIssuePicker.error.runtimeUnavailable":"API de runtime de GitHub não disponível","session.githubIssuePicker.error.notConnected":"GitHub não está conectado","session.githubIssuePicker.error.repoNotResolvable":"Não foi possível resolver o repositório","session.githubIssuePicker.error.repoMustBeGithub":"O remoto origin deve ser uma URL de GitHub","session.githubIssuePicker.error.issueNotFound":"Issue não encontrada","session.githubIssuePicker.error.noModelSelected":"Não há nenhum modelo selecionado","session.githubIssuePicker.toast.loadMoreFailed":"Não foi possível carregar mais issues","session.githubIssuePicker.toast.loadIssueDetailsFailed":"Não foi possível carregar os detalhes da issue","session.githubIssuePicker.toast.sendContextFailed":"Não foi possível enviar o contexto da issue","session.githubIssuePicker.toast.sessionCreated":"Sessão criada a partir da issue","session.githubIssuePicker.toast.startSessionFailed":"Não foi possível iniciar a sessão","session.githubIssuePicker.title.select":"Vincular issue de GitHub","session.githubIssuePicker.title.createSession":"Nova sessão de issue de GitHub","session.githubIssuePicker.description.select":"Selecione uma issue para vinculá-la a esta sessão.","session.githubIssuePicker.description.createSession":"Inicie uma nova sessão com contexto oculto do issue (título/corpo/etiquetas/comentários).","session.githubIssuePicker.searchPlaceholder":"Buscar por título ou #123, ou colar a URL da issue","session.githubIssuePicker.empty.noActiveProject":"Não há nenhum projeto ativo selecionado.","session.githubIssuePicker.empty.runtimeUnavailable":"API de runtime de GitHub não disponível.","session.githubIssuePicker.empty.notConnected":"GitHub não está conectado. Conecte sua conta do GitHub nas configurações.","session.githubIssuePicker.empty.noIssuesFound":"Nenhuma issue encontrada","session.githubIssuePicker.empty.noOpenIssuesFound":"Nenhuma issue aberta encontrada","session.githubIssuePicker.loading.issues":"Carregando issues...","session.githubIssuePicker.loading.more":"Carregando...","session.githubIssuePicker.actions.openSettings":"Abrir configurações","session.githubIssuePicker.actions.useIssue":"Usar issue #{number}","session.githubIssuePicker.actions.openInGitHubAria":"Abrir em GitHub","session.githubIssuePicker.actions.loadMore":"Carregar mais","session.githubIssuePicker.actions.sectionTitle":"Ações","session.githubIssuePicker.actions.toggleWorktreeAria":"Ativar worktree","session.githubIssuePicker.actions.createInWorktree":"Criar em worktree","session.githubIssuePicker.actions.openRepo":"Abrir repositório","session.githubIssuePicker.actions.refresh":"Atualizar","session.githubPrPicker.error.noActiveProject":"Não há nenhum projeto ativo","session.githubPrPicker.error.runtimeUnavailable":"API de runtime de GitHub não disponível","session.githubPrPicker.error.notConnected":"GitHub não está conectado","session.githubPrPicker.error.prNotFound":"PR não encontrada","session.githubPrPicker.error.repoNotResolvable":"Não foi possível resolver o repositório","session.githubPrPicker.error.repoMustBeGithub":"O remoto origin deve ser uma URL de GitHub","session.githubPrPicker.toast.loadMoreFailed":"Não foi possível carregar mais PRs","session.githubPrPicker.toast.loadDetailsFailed":"Não foi possível carregar os detalhes da PR","session.githubPrPicker.title":"Vincular PR de GitHub","session.githubPrPicker.description":"Selecione uma PR para anexar contexto de revisão a esta mensagem.","session.githubPrPicker.searchPlaceholder":"Buscar por título ou #123, ou colar a URL da PR","session.githubPrPicker.includeDiffAria":"Incluir diff da PR no contexto adjunto","session.githubPrPicker.includeDiff":"Incluir diff da PR","session.githubPrPicker.empty.noActiveProject":"Não há nenhum projeto ativo selecionado.","session.githubPrPicker.empty.runtimeUnavailable":"API de runtime de GitHub não disponível.","session.githubPrPicker.empty.notConnected":"GitHub não está conectado. Conecte sua conta do GitHub nas configurações.","session.githubPrPicker.empty.noPullRequestsFound":"Nenhuma PR encontrada","session.githubPrPicker.empty.noOpenPullRequestsFound":"Nenhuma PR aberta encontrada","session.githubPrPicker.loading.pullRequests":"Carregando PR...","session.githubPrPicker.loading.more":"Carregando...","session.githubPrPicker.actions.openSettings":"Abrir configurações","session.githubPrPicker.actions.usePullRequest":"Usar PR #{number}","session.githubPrPicker.actions.openInGitHubAria":"Abrir em GitHub","session.githubPrPicker.actions.loadMore":"Carregar mais","session.newWorktree.title":"Novo worktree","session.newWorktree.mode.newBranch":"Nova branch","session.newWorktree.mode.existingBranch":"Branch existente","session.newWorktree.selectBranch":"Selecionar branch","session.newWorktree.chooseBranch":"Escolha uma branch...","session.newWorktree.fetchBranches":"Obter branches","session.newWorktree.searchBranches":"Pesquisar branches...","session.newWorktree.loadingBranches":"Carregando branches...","session.newWorktree.noBranchesFound":"Nenhuma branch encontrada","session.newWorktree.matchingBranches":"Branches coincidentes","session.newWorktree.noMatchingBranches":"Não há branches coincidentes","session.newWorktree.localBranches":"Branches locais","session.newWorktree.remoteBranches":"Branches remotas","session.newWorktree.otherLocalBranches":"Outras branches locais","session.newWorktree.otherRemoteBranches":"Outras branches remotas","session.newWorktree.branchName":"Nome da branch","session.newWorktree.branchNamePlaceholder":"feature/my-awesome-feature","session.newWorktree.actions.change":"Alterar","session.newWorktree.actions.startFromGitHubIssuePr":"Iniciar de Issue/PR de GitHub","session.newWorktree.usingPrBranch":"Usando branch da PR: {branch}","session.newWorktree.fromIssue":"Da issue #{number}: {title}","session.newWorktree.worktreeDirectory":"Diretório do worktree","session.newWorktree.worktreeDirectoryPlaceholder":"my-worktree-directory","session.newWorktree.resetToMatchBranchName":"Redefinir para coincidir com o nome da branch","session.newWorktree.sourceBranch":"Branch de origem","session.newWorktree.selectSourceBranch":"Selecionar branch de origem","session.newWorktree.selectSourceBranchPlaceholder":"Selecionar branch de origem...","session.newWorktree.newBranchFromSource":"Uma nova branch será criada a partir de {source}","session.newWorktree.issueNumber":"Issue #{number}","session.newWorktree.prNumber":"PR #{number}","session.newWorktree.includeDiffBadge":"+diff","session.newWorktree.newSessionTitle":"Nova sessão","session.newWorktree.fromSource":"de {source}","session.newWorktree.actions.cancel":"Cancelar","session.newWorktree.actions.creating":"Criando...","session.newWorktree.actions.createWorktree":"Criar worktree","session.newWorktree.actions.reset":"Reiniciar","session.newWorktree.error.noModelSelected":"Não há nenhum modelo selecionado","session.newWorktree.error.noActiveProject":"Não há nenhum projeto ativo","session.newWorktree.error.branchNameRequired":"É necessário informar o nome da branch","session.newWorktree.error.worktreeDirectoryRequired":"É necessário o diretório do worktree","session.newWorktree.error.sendGitHubContextFailed":"Não foi possível enviar o contexto de GitHub","session.newWorktree.error.createWorktreeFailed":"Não foi possível criar o worktree","session.newWorktree.toast.sessionFromIssue":"Sessão criada a partir da issue","session.newWorktree.toast.sessionFromPr":"Sessão criada a partir da PR","session.newWorktree.toast.worktreeCreated":"Worktree criado","session.newWorktree.toast.worktreeCreatedDescription":"{target} - configurando em segundo plano","session.githubIntegration.title":"Selecionar de GitHub","session.githubIntegration.tabs.issues":"Issues","session.githubIntegration.tabs.pullRequests":"PR","session.githubIntegration.connect.title":"Conectar a GitHub","session.githubIntegration.connect.description":"Vincule issues ou PRs para preencher automaticamente os detalhes do worktree","session.githubIntegration.connect.action":"Conectar a GitHub","session.githubIntegration.search.issuesPlaceholder":"Buscar issues ou digitar #123...","session.githubIntegration.search.prsPlaceholder":"Buscar PRs ou digitar #456...","session.githubIntegration.empty.noIssuesFound":"Nenhuma issue encontrada","session.githubIntegration.empty.noPullRequestsFound":"Nenhuma PR encontrada","session.githubIntegration.actions.loadMore":"Carregar mais","session.githubIntegration.actions.cancel":"Cancelar","session.githubIntegration.actions.select":"Selecionar","session.githubIntegration.selected.issueNumber":"Issue #{number}","session.githubIntegration.selected.prNumber":"PR #{number}","session.githubIntegration.includeDiffAria":"Incluir diff do PR no contexto da sessão","session.githubIntegration.includeDiff":"Incluir diff do PR","session.githubIntegration.error.notConnected":"GitHub não está conectado","session.githubIntegration.error.loadDataFailed":"Não foi possível carregar os dados","session.githubIntegration.validation.branchAlreadyCheckedOut":"A branch já está em uso em um worktree","session.githubIntegration.validation.branchAlreadyExists":"A branch já existe localmente","session.githubIntegration.validation.failed":"Não foi possível validar","chat.fileAttachment.toast.attachFailed":"Não foi possível anexar o arquivo","chat.fileAttachment.toast.someFilesSkipped":`Alguns arquivos foram omitidos:
10
10
  {summary}`,"chat.fileAttachment.toast.vscodePickFailed":"Não foi possível selecionar arquivos em VS Code","chat.fileAttachment.fileFallback":"arquivo","chat.fileAttachment.skippedFallback":"omitido","chat.fileAttachment.actions.attachAria":"Anexar arquivos","chat.fileAttachment.actions.attach":"Anexar arquivos","chat.fileAttachment.actions.removeNamed":"Excluir {name}","chat.fileAttachment.actions.removeImage":"Excluir imagem","chat.fileAttachment.activeEditor.addFile":"Adicionar arquivo:{name} ao contexto","chat.fileAttachment.activeEditor.pinSelection":"Fixar seleção no contexto","chat.fileAttachment.activeEditor.remove":"Remover do contexto","chat.pendingChanges.fileCountSingle":"{count} arquivo","chat.pendingChanges.fileCountPlural":"{count} arquivos","chat.pendingChanges.changedInWorkspace":"modificado no workspace","chat.changedFiles.title":"Arquivos modificados","chat.changedFiles.actions.openFileTitle":"Abrir {path}","chat.emptyState.opencodeUnreachable":"OpenCode não está acessível","chat.emptyState.startNewChat":"Iniciar uma nova conversa","chat.emptyState.draftTitle":"What are we working on?","chat.emptyState.draftTitleWithProject":"What are we working on in {project}?","chat.draftPresets.explore.label":"Explore the codebase","chat.draftPresets.catchup.label":"Catch me up","chat.draftPresets.weigh.label":"Weigh my options","chat.draftPresets.plan.label":"Start feature planning","chat.draftPresets.debug.label":"Debug an issue","chat.draftPresets.review.label":"Review my changes","chat.draftStarters.add":"Add a starter","chat.draftStarters.searchPlaceholder":"Search commands and skills…","chat.draftStarters.empty":"Nothing to add","chat.draftStarters.sectionBuiltIn":"Built-in","chat.draftStarters.sectionCommands":"Commands","chat.draftStarters.sectionSkills":"Skills","chat.draftStarters.remove":"Remove","chat.scrollToBottom.aria":"Ir ao final","chat.timeline.relative.justNow":"agora mesmo","chat.timeline.relative.minutesAgo":"há {count}m","chat.timeline.relative.hoursAgo":"há {count}h","chat.timeline.relative.daysAgo":"há {count}d","chat.timeline.title":"Linha do tempo da conversa","chat.timeline.description":"Navegue até qualquer ponto da conversa ou crie uma nova sessão","chat.timeline.searchPlaceholder":"Buscar mensagens...","chat.timeline.empty.search":"Nenhuma mensagem encontrada","chat.timeline.empty.session":"Ainda não há mensagens nesta sessão","chat.timeline.noTextContent":"[Não há conteúdo de texto]","chat.timeline.actions.title":"Ações","chat.timeline.actions.revertFromHere":"Reverter daqui","chat.timeline.actions.forkFromHere":"Criar uma branch daqui","chat.timeline.actions.previousTurn":"Turno anterior","chat.timeline.actions.latest":"Último","chat.timeline.help.clickMessage":"Clique em um mensagem para rolar até ela na conversa","chat.timeline.help.undoToPoint":"Desfazer até este ponto (o texto da mensagem preencherá a entrada)","chat.timeline.help.createSessionFromHere":"Criar uma nova sessão daqui","chat.statusRow.todo.status.inProgress":"Em andamento","chat.statusRow.todo.status.pending":"Pendente","chat.statusRow.todo.status.completed":"Concluído","chat.statusRow.todo.status.cancelled":"Cancelado","chat.statusRow.todo.priority.high":"Prioridade alta","chat.statusRow.todo.priority.medium":"Prioridade média","chat.statusRow.todo.priority.low":"Prioridade baixa","chat.statusRow.actions.stopGeneratingAria":"Parar a geração","chat.statusRow.tasksTitle":"Tarefas","chat.statusRow.summary.activeLeft":"{active} ativas · {left} restantes","chat.statusRow.aborted":"Interrompido","chat.revertIndicator.redo":"Refazer","chat.revertIndicator.redoAria":"Refazer — restaurar mensagens revertidas","chat.revertPopover.title":"Revertidas","chat.revertPopover.noTextContent":"Sem conteúdo de texto","chat.revertPopover.forkFromHere":"Criar ramificação aqui","chat.revertPopover.forkFromMessage":"Criar ramificação desta mensagem","chat.revertPopover.restoreAll":"Restaurar todas","chat.revertPopover.restore":"Restaurar","chat.revertPopover.revert":"Reverter","chat.revertPopover.fork":"Bifurcar","chat.revert.toast.undo":"Revertido para {preview}","chat.revert.toast.redo":"Refeito","chat.revert.toast.restored":"Todas as mensagens restauradas","chat.errorBoundary.title":"Erro na conversa","chat.errorBoundary.description":"A interface da conversa encontrou um erro. Isso pode ter sido causado por um problema temporário de rede ou por dados de mensagem corrompidos.","chat.errorBoundary.sessionLabel":"Sessão","chat.errorBoundary.detailsSummary":"Detalhes do erro","chat.errorBoundary.resetAction":"Reiniciar a conversa","chat.errorBoundary.persistentHint":"Se o problema persiste, tente atualizar a página.","chat.autocomplete.tabs.commands":"Comandos","chat.autocomplete.tabs.agents":"Agentes","chat.autocomplete.tabs.files":"Arquivos","chat.autocomplete.keyboardHint":"↑↓ navegar • Enter selecionar • Esc fechar","chat.commandAutocomplete.command.initDescription":"Criar/atualizar o arquivo AGENTS.md","chat.commandAutocomplete.command.undoDescription":"Desfazer a última mensagem","chat.commandAutocomplete.command.redoDescription":"Refazer mensagens desfeitas anteriormente","chat.commandAutocomplete.command.timelineDescription":"Abrir a linha do tempo da conversa","chat.commandAutocomplete.command.compactDescription":"Comprimir o histórico da sessão usando IA para reduzir o tamanho do contexto","chat.commandAutocomplete.command.summaryDescription":"Resumo não destrutivo da sessão. Dica opcional do tema após o comando.","chat.commandAutocomplete.command.workspaceReviewDescription":"Revisa o diff do workspace quanto a intenção, correção e adequação, com achados por severidade.","chat.commandAutocomplete.command.featurePlanDescription":"Inicie uma sessão de planejamento guiada e interativa para uma nova funcionalidade.","chat.commandAutocomplete.command.catchUpDescription":"Retome o contexto: o que você estava fazendo e por onde continuar.","chat.commandAutocomplete.command.debugDescription":"Investigação guiada da causa raiz de um bug antes de propor uma correção.","chat.commandAutocomplete.command.weighDescription":"Compare 2-3 abordagens com seus prós e contras e uma recomendação antes de decidir.","chat.commandAutocomplete.command.exploreDescription":"Oriente-se neste código: um tour geral pela arquitetura e pelas partes principais.","chat.commandAutocomplete.badge.skill":"habilidade","chat.commandAutocomplete.badge.command":"comando","chat.commandAutocomplete.badge.system":"sistema","chat.commandAutocomplete.empty":"Nenhum comando encontrado","chat.agentMentionAutocomplete.badge.system":"sistema","chat.agentMentionAutocomplete.empty":"Nenhum agente encontrado","chat.fileMentionAutocomplete.searchMoreAgents":"Digite para buscar mais agentes","chat.fileMentionAutocomplete.empty":"Nenhuma correspondência encontrada","chat.queuedMessage.attachments":"+{count} arquivo(s)","chat.queuedMessage.empty":"(vazio)","chat.queuedMessage.title":"Queued messages","chat.queuedMessage.edit":"edit","chat.queuedMessage.send":"send","chat.queuedMessage.removeAria":"Excluir da fila","chat.container.returnToParent.aria":"Voltar para a sessão principal","chat.container.returnToParent.titleNamed":"Voltar para: {title}","chat.container.returnToParent.title":"Voltar para a sessão principal","chat.container.returnToParent.label":"Principal","chat.container.readOnlySubagentPromptBanner":"Sessões de subagente não podem receber prompts.","chat.unifiedControls.title":"Controles","chat.unifiedControls.model.title":"Modelo","chat.unifiedControls.model.noRecent":"Não há modelos recentes","chat.unifiedControls.model.moreAria":"Mais modelos","chat.unifiedControls.effort.title":"Esforço","chat.unifiedControls.effort.moreAria":"Mais opções de esforço","chat.questionCard.summaryTab":"Resumo","chat.questionCard.noAnswer":"(sem resposta)","chat.questionCard.inputNeeded":"Entrada necessária","chat.questionCard.fromSubagent":"De um subagente","chat.questionCard.questionFallback":"Pergunta {index}","chat.questionCard.selectMultiple":"Selecionar múltiplas","chat.questionCard.recommended":"recomendado","chat.questionCard.other":"Outro…","chat.questionCard.yourAnswer":"Sua resposta","chat.questionCard.submit":"Enviar","chat.questionCard.next":"Próximo","chat.questionCard.dismiss":"Descartar","chat.questionCard.copyMarkdown":"Copiar como Markdown","chat.questionCard.copyJson":"Copiar como JSON","chat.questionCard.copiedMarkdown":"Pergunta copiada como Markdown","chat.questionCard.copiedJson":"Pergunta copiada como JSON","chat.questionCard.copyFailed":"Falha ao copiar a pergunta","chat.questionCard.submitFailed":"Falha ao enviar a resposta","chat.questionCard.dismissFailed":"Falha ao descartar a pergunta","chat.questionCard.noLongerPending":"Esta pergunta não está mais aguardando uma resposta.","chat.questionCard.tryAgain":"Tente novamente em instantes.","chat.textSelection.toast.noProject":"Não foi encontrado projeto para esta sessão","chat.textSelection.toast.addToNotesFailed":"Não foi possível adicionar às notas","chat.textSelection.toast.addToNotesSuccess":"Texto selecionado adicionado às notas","chat.textSelection.toast.addToNotesSummaryFailed":"Não foi possível resumir a seleção; o texto selecionado foi adicionado às notas","chat.textSelection.actions.addToChat":"Adicionar ao chat","chat.textSelection.actions.newSession":"Nova sessão","chat.textSelection.actions.copy":"Copiar","chat.textSelection.actions.addToNotes":"Adicionar às notas","chat.textSelection.title.addToCurrentChat":"Adicionar ao chat atual","chat.textSelection.title.newSessionWithSelection":"Criar nova sessão com seleção","chat.textSelection.title.saveInsightToNotes":"Salvar texto selecionado em notas","chat.messageBody.actions.revertAria":"Voltar para esta mensagem","chat.messageBody.actions.revert":"Voltar daqui","chat.messageBody.actions.forkAria":"Bifurcar a partir desta mensagem","chat.messageBody.actions.fork":"Bifurcar daqui","chat.messageBody.actions.copyMessageAria":"Copiar texto da mensagem","chat.messageBody.actions.copyMessage":"Copiar mensagem","chat.messageBody.actions.openPreviewAria":"Abrir visualização","chat.messageBody.actions.openPreview":"Abrir visualização","chat.messageBody.actions.copyAnswer":"Copiar resposta","chat.messageBody.actions.savingImage":"Salvando imagem...","chat.messageBody.actions.saveAsImage":"Salvar como imagem","chat.messageBody.actions.saveAsPlan":"Salvar como plano","chat.messageBody.actions.startNewSession":"Iniciar nova sessão a partir desta resposta","chat.messageBody.actions.startNewMultiRun":"Iniciar novo multi-run a partir desta resposta","chat.messageBody.forkDialog.instructions.label":"Instruções","chat.messageBody.forkDialog.instructions.placeholder":"Adicione instruções para a nova sessão…","chat.generatedResult.actions.copy":"Copiar","chat.generatedResult.actions.copied":"Copiado","chat.generatedResult.commit.title":"Mensagem de commit gerada","chat.generatedResult.commit.highlights":"Destaques","chat.generatedResult.pullRequest.title":"Pull request gerado","chat.generatedResult.pullRequest.titleLabel":"Título","chat.generatedResult.pullRequest.bodyLabel":"Descrição","chat.messageBody.tts.stopSpeaking":"Parar de falar","chat.messageBody.tts.readAloud":"Ler em voz alta","chat.messageBody.tts.readAloudWithProvider":"Ler em voz alta (voz {provider})","chat.messageBody.toast.noProject":"Não foi encontrado projeto para esta sessão","chat.messageBody.toast.savePlanFailed":"Não foi possível salvar o plano","chat.messageBody.toast.planSaved":"Plano salvo","chat.messageBody.toast.imageSaved":"Imagem salva","chat.messageBody.toast.generateImageFailed":"Não foi possível gerar a imagem","chat.chatInput.actions.commands":"Comandos","chat.chatInput.actions.attachFiles":"Anexar arquivos","chat.chatInput.actions.addAttachment":"Adicionar adjunto","chat.chatInput.actions.linkGithubIssue":"Vincular issue de GitHub","chat.chatInput.actions.linkGithubPr":"Vincular PR de GitHub","chat.chatInput.actions.modelAgentSettings":"Configurações de modelo e agente","chat.chatInput.actions.sendMessageAria":"Enviar mensagem","chat.chatInput.actions.queueMessageAria":"Colocar mensagem na fila","chat.chatInput.actions.stopGeneratingAria":"Parar geração","chat.chatInput.focusMode.toggleAria":"Ativar ou desativar modo de foco","chat.chatInput.focusMode.label":"Modo de foco","chat.chatInput.permissionAutoAccept.disable":"Desativar aceitação automática de permissões","chat.chatInput.permissionAutoAccept.enable":"Ativar aceitação automática de permissões","chat.chatInput.permissionAutoAccept.on":"Aceitação automática de permissões: ativada","chat.chatInput.permissionAutoAccept.off":"Aceitação automática de permissões: desativada","chat.chatInput.linked.byAuthor":"por {author}","chat.chatInput.linked.issue.openInBrowserAria":"Abrir issue no navegador","chat.chatInput.linked.issue.removeAria":"Excluir issue vinculado","chat.chatInput.linked.pr.number":"PR #{number}","chat.chatInput.linked.pr.openInBrowserAria":"Abrir PR no navegador","chat.chatInput.linked.pr.removeAria":"Excluir PR vinculada","chat.chatInput.placeholder.shell":"Digite um comando de shell...","chat.chatInput.placeholder.chat":"@ para arquivos/agentes; / para comandos e habilidades; ! para shell; # para snippets","chat.chatInput.placeholder.chatCompact":"Use @ / ! # para ajudantes","chat.chatInput.placeholder.selectSession":"Selecione ou crie uma sessão para começar a conversar","chat.snippetAutocomplete.action.addNew":"+ Adicionar novo snippet","chat.snippetAutocomplete.empty":"Nenhum snippet encontrado","chat.snippetAutocomplete.footer":"↑↓ navegar • Enter selecionar • Esc fechar","snippets.source.global":"global","snippets.source.project":"projeto","chat.chatInput.toast.compactFailed":"Não foi possível comprimir a sessão","chat.chatInput.toast.summaryFailed":"Não foi possível gerar o resumo","chat.chatInput.toast.reviewFailed":"Não foi possível revisar as alterações","chat.chatInput.toast.planFeatureFailed":"Não foi possível iniciar o planejamento da funcionalidade","chat.chatInput.toast.catchUpFailed":"Não foi possível retomar o contexto","chat.chatInput.toast.debugFailed":"Não foi possível iniciar a depuração","chat.chatInput.toast.weighFailed":"Não foi possível comparar as opções","chat.chatInput.toast.exploreFailed":"Não foi possível iniciar o tour","chat.chatInput.toast.attachmentsTooLarge":"Os anexos são grandes demais para enviar. Tente reduzir a quantidade ou o tamanho das imagens.","chat.chatInput.toast.sendAttachmentsFailed":"Não foi possível enviar os anexos. Tente com menos arquivos ou imagens menores.","chat.chatInput.toast.messageSendFailed":"A mensagem não pôde ser enviada. Os anexos foram restaurados.","chat.chatInput.toast.clipboardAttachFailed":"Não foi possível anexar a imagem da área de transferência","chat.chatInput.toast.addedFileMentions":"Foram adicionadas {count} menção(es) de arquivo","chat.chatInput.toast.attachFileFailed":"Não foi possível anexar o arquivo","chat.chatInput.toast.attachNamedFailed":"Não foi possível anexar {name}","chat.chatInput.toast.someFilesSkipped":`Alguns arquivos foram omitidos:
11
- {summary}`,"chat.chatInput.toast.vscodePickFailed":"Não foi possível selecionar arquivos em VS Code","chat.chatInput.toast.openSessionFirst":"Abra uma sessão primeiro","chat.chatInput.toast.togglePermissionAutoAcceptFailed":"Não foi possível alterar a aceitação automática de permissões","chat.chatInput.reviewComments":"Comentários de revisão:","chat.chatInput.reviewCommentsRemove":"Remover comentários de revisão","chat.chatInput.devServerLogs":"Logs do Dev Server:","chat.chatInput.devServerLogsRemove":"Remover logs do Dev Server","chat.chatInput.previewAnnotations":"Anotações da visualização:","chat.chatInput.previewContext":"Contexto da visualização:","chat.chatInput.previewContextRemove":"Remover contexto da visualização","chat.chatInput.projectRoot":"Raiz do projeto","chat.chatInput.branch":"Branch","chat.chatInput.worktrees":"Worktrees","chat.chatInput.worktreeNew":"+ Novo","chat.chatInput.drop.insertMention":"Solte para inserir como menção","chat.chatInput.drop.attachFiles":"Solte arquivos aqui para anexar","chat.chatInput.fileFallback":"arquivo","chat.mobileStatus.editProjects.title":"Editar projetos","chat.mobileStatus.editProjects.footer":"Arraste os itens para reordenar ou use as setas para mover. Toque em editar para alterar os detalhes.","chat.mobileStatus.editProjects.empty":"Não há projetos para editar","chat.mobileStatus.projects.empty":"Não há projetos","chat.mobileStatus.projects.addAria":"Adicionar projeto","chat.mobileStatus.projects.removeTitle":"Excluir projeto","chat.mobileStatus.projects.removeDescriptionPrefix":"Tem certeza de que deseja excluir","chat.mobileStatus.projects.cancel":"Cancelar","chat.mobileStatus.projects.remove":"Excluir","chat.mobileStatus.new":"Novo","chat.mobileStatus.noSessionsInProject":"Não há sessões neste projeto","chat.mobileStatus.swipeHint":"← Deslize aqui para abrir os painéis laterais →","chat.mobileStatus.toast.addProjectFailed":"Não foi possível adicionar o projeto","chat.mobileStatus.toast.selectValidDirectory":"Selecione um diretório válido.","chat.mobileStatus.toast.selectDirectoryFailed":"Não foi possível selecionar o diretório","chat.toolOutputDialog.image.previousAria":"Imagem anterior","chat.toolOutputDialog.image.nextAria":"Próxima imagem","chat.toolOutputDialog.image.closeAria":"Fechar prévia de imagem","chat.toolOutputDialog.mermaid.missingSource":"Falta a URL de origem do Mermaid.","chat.toolOutputDialog.mermaid.loadFailed":"Não foi possível carregar o diagrama de Mermaid.","chat.toolOutputDialog.mermaid.closeAria":"Fechar prévia do diagrama","chat.toolOutputDialog.mermaid.loading":"Carregando diagrama...","chat.toolOutputDialog.mermaid.renderFailed":"Não foi possível renderizar o diagrama de Mermaid.","chat.toolOutputDialog.mermaid.retry":"Tentar novamente","chat.toolOutputDialog.commandCompleted":"Comando concluído com sucesso","chat.toolOutputDialog.noOutputProduced":"Nenhuma saída produzida","chat.toolPart.lspErrors":"Erros LSP","chat.toolPart.moreErrors":"+{count} erros a mais","chat.toolPart.error":"Erro:","chat.toolPart.awaitingResponse":"Aguardando resposta...","chat.toolPart.noOutputProduced":"Nenhuma saída produzida","chat.toolPart.output":"Saída","chat.toolPart.showRawJson":"Mostrar JSON bruto","chat.toolPart.showFormattedJson":"Mostrar JSON formatado","chat.toolPart.copyOutput":"Copiar saída","chat.toolPart.copiedOutput":"Saída copiada","chat.toolPart.copyOutputFailed":"Falha ao copiar saída","chat.toolPart.openSubtask":"Abrir subtarefa {type}","chat.todo.total":"Total","chat.todo.inProgress":"Em andamento","chat.todo.pending":"Pendente","chat.todo.completed":"Concluído","chat.todo.cancelled":"Cancelado","chat.permissionCard.workingDirectory":"Diretório de trabalho:","chat.permissionCard.timeout":"Tempo limite:","chat.permissionCard.request":"Solicitação:","chat.permissionCard.headers":"Cabeçalhos:","chat.permissionCard.body":"Corpo:","chat.permissionCard.action":"Ação:","chat.permissionCard.details":"Detalhes:","chat.permissionCard.patterns":"Padrões:","chat.permissionToast.sessionFallback":"Sessão","chat.permissionToast.permissionFallback":"Detalhes de permissão indisponíveis","chat.permissionToast.labels.session":"Sessão:","chat.permissionToast.labels.permission":"Permissão:","chat.permissionToast.actions.once":"Uma vez","chat.permissionToast.actions.always":"Sempre","chat.permissionToast.actions.deny":"Negar","chat.permissionToast.actions.approveOnceAria":"Aprovar uma vez","chat.permissionToast.actions.approveOnceAriaWithSession":"Aprovar uma vez para {session}","chat.permissionToast.actions.approveAlwaysAria":"Aprovar sempre","chat.permissionToast.actions.approveAlwaysAriaWithSession":"Aprovar sempre para {session}","chat.permissionToast.actions.denyAria":"Negar permissão","chat.permissionToast.actions.denyAriaWithSession":"Negar permissão para {session}","chat.permissionRequest.required":"Permissão obrigatória:","chat.permissionRequest.actions.once":"Uma vez","chat.permissionRequest.actions.always":"Sempre","chat.permissionRequest.actions.reject":"Rejeitar","chat.modelControls.provider":"Provedor","chat.modelControls.capability.toolCalling":"Uso de ferramentas","chat.modelControls.capability.reasoning":"Raciocínio","chat.modelControls.modality.text":"Texto","chat.modelControls.modality.image":"Imagem","chat.modelControls.modality.video":"Vídeo","chat.modelControls.modality.audio":"Audio","chat.modelControls.modality.pdf":"PDF","chat.modelControls.capabilities":"Capacidades","chat.modelControls.modalities":"Modalidades","chat.modelControls.input":"Entrada","chat.modelControls.output":"Saída","chat.modelControls.limits":"Limites","chat.modelControls.context":"Contexto","chat.modelControls.metadata":"Metadados","chat.modelControls.knowledge":"Conhecimento","chat.modelControls.release":"Lançamento","chat.modelControls.mode":"Modo","chat.modelControls.model":"Modelo","chat.modelControls.temperature":"Temperatura","chat.modelControls.topP":"Top P","chat.modelControls.permissions":"Permissões","chat.modelControls.edit":"Editar","chat.modelControls.bash":"Bash","chat.modelControls.webFetch":"WebFetch","chat.modelControls.customPrompt":"Prompt personalizado","chat.modelControls.selectModel":"Selecionar modelo","chat.modelControls.searchProvidersOrModels":"Pesquisar provedores ou modelos","chat.modelControls.clearSearch":"Limpar pesquisa","chat.modelControls.current":"Atual","chat.modelControls.thinking":"Pensando","chat.modelControls.default":"Padrão","chat.modelControls.selectAgent":"Selecionar agente","chat.modelControls.costPerMillion":"Custo ($/1M tokens)","chat.modelControls.metadataUnavailable":"Metadados do modelo indisponíveis.","chat.modelControls.addNewProvider":"Adicionar novo provedor","chat.modelControls.noAgentSelected":"Nenhum agente selecionado.","chat.modelControls.resetToDefault":"Reiniciar ao valor padrão","chat.modelControls.searchModels":"Pesquisar modelos","chat.modelControls.searchAgents":"Pesquisar agentes","chat.modelControls.noModelsFound":"Nenhum modelo encontrado","chat.modelControls.favorites":"Favoritos","chat.modelControls.recent":"Recentes","chat.modelControls.addToFavorites":"Adicionar a favoritos","chat.modelControls.removeFromFavorites":"Excluir de favoritos","chat.modelControls.favoriteAria":"Favorito","chat.modelControls.unfavoriteAria":"Remover de favoritos","chat.modelControls.collapseProvider":"Recolher provedor","chat.modelControls.expandProvider":"Expandir provedor","chat.modelControls.keyboardHint":"↑↓ navegar{thinking} • Enter selecionar • Esc fechar","chat.modelControls.keyboardHintNavigate":"↑↓ navegar","chat.modelControls.keyboardHintSwitchAgent":"{shortcut} alternar agente","chat.modelControls.keyboardHintThinking":"←→ mudar raciocínio","chat.modelControls.showThinkingModes":"Mostrar modos de raciocínio","chat.modelControls.hideThinkingModes":"Ocultar modos de raciocínio","chat.modelControls.moreThinkingModes":"Mais modos de raciocínio","chat.modelControls.noProvidersOrModelsFound":"Nenhum provedor ou modelo corresponde à sua pesquisa.","chat.modelControls.reorderFavoriteAria":"Reordenar favorito","chat.modelControls.reorderFavoriteTitle":"Arraste para reordenar favorito","chat.modelControls.permissionLabel.custom":"Personalizado","chat.modelControls.permissionLabel.allow":"Permitir","chat.modelControls.permissionLabel.deny":"Negar","chat.modelControls.permissionLabel.ask":"Perguntar","chat.modelControls.modeValue.primary":"Primário","chat.modelControls.modeValue.subagent":"Subagente","chat.modelControls.modeValue.all":"Todos","chat.modelControls.modeValue.none":"—","chat.reasoningTrace.thinking":"Pensando","chat.reasoningTrace.justification":"Justificativa","chat.reasoningTrace.expandAria":"Expandir rastro de raciocínio","chat.reasoningTrace.collapseAria":"Recolher rastro de raciocínio","chat.reasoningTrace.thought":"Pensou","chat.messageBody.subtask.title":"Tarefa delegada","chat.messageBody.subtask.hidePrompt":"Ocultar prompt","chat.messageBody.subtask.showPrompt":"Mostrar prompt","chat.messageBody.subtask.openSession":"Abrir sessão de subtarefa","chat.messageBody.shellCommand.title":"Comando de shell","chat.messageBody.shellCommand.hideOutput":"Ocultar saída","chat.messageBody.shellCommand.showOutput":"Mostrar saída","chat.messageBody.shellCommand.copied":"Copiado","chat.messageBody.shellCommand.copyOutput":"Copiar saída","commandPalette.title":"Paleta de comandos","commandPalette.description":"Buscar arquivos, sessões e comandos.","commandPalette.input.placeholder":"Buscar arquivos, sessões, comandos...","commandPalette.empty.noResults":"Nenhum resultado encontrado.","commandPalette.empty.searchingFiles":"Buscando arquivos...","commandPalette.item.newSession":"Nova sessão","commandPalette.item.newMiniChat":"Nova janela Mini Chat","commandPalette.item.newWorktreeDraft":"Novo rascunho de worktree","commandPalette.item.addProject":"Adicionar projeto","commandPalette.item.showSessionSwitcher":"Mostrar seletor de sessões","commandPalette.item.toggleSidebar":"Mostrar ou ocultar barra lateral","commandPalette.item.toggleRightSidebar":"Mostrar ou ocultar barra lateral direita","commandPalette.item.showContextUsage":"Mostrar uso do contexto","commandPalette.item.toggleTerminal":"Mostrar ou ocultar terminal","commandPalette.item.openSettings":"Abrir configurações...","commandPalette.session.untitled":"Sessão sem título","openCodeStatusDialog.title":"Status do OpenCode","openCodeStatusDialog.description":"Inspecione o status atual do OpenCode e os diagnósticos.","openCodeStatusDialog.actions.copy":"Copiar","openCodeStatusDialog.empty.noData":"Não há dados.","openCodeStatusDialog.toast.copiedTitle":"Copiado","openCodeStatusDialog.toast.copiedDescription":"Status copiado para a área de transferência","openCodeStatusDialog.toast.copyFailed":"Não foi possível copiar o status","saveProjectPlanDialog.title":"Salvar plano do projeto","saveProjectPlanDialog.description":"Salve este plano no seu projeto como um arquivo Markdown.","saveProjectPlanDialog.field.title":"Título","saveProjectPlanDialog.field.titlePlaceholder":"Título do plano","saveProjectPlanDialog.field.contentPreview":"Pré-visualização do conteúdo","saveProjectPlanDialog.actions.cancel":"Cancelar","saveProjectPlanDialog.actions.save":"Salvar","saveProjectPlanDialog.actions.saving":"Salvando...","branchPickerDialog.title":"Seletor de branch","branchPickerDialog.description.localBranchesForProject":"Branches locais para {project}","branchPickerDialog.description.selectProject":"Selecione um projeto para ver branches","branchPickerDialog.search.placeholder":"Pesquisar branches...","branchPickerDialog.search.renameBranchPlaceholder":"Renomear branch","branchPickerDialog.state.noProjectSelected":"Nenhum projeto selecionado","branchPickerDialog.state.loadingBranches":"Carregando branches...","branchPickerDialog.state.noMatchingBranches":"Nenhuma branch correspondente encontrada","branchPickerDialog.state.noBranchesFound":"Nenhuma branch encontrada","branchPickerDialog.badge.head":"HEAD","branchPickerDialog.badge.worktree":"worktree","branchPickerDialog.actions.createWorktreeAria":"Criar worktree de branch","branchPickerDialog.actions.renameAria":"Renomear branch","branchPickerDialog.actions.deleteAria":"Excluir branch","branchPickerDialog.actions.deleteWorktreeAria":"Excluir worktree","branchPickerDialog.actions.confirmRenameAria":"Confirmar renomeação de","branchPickerDialog.actions.cancelRenameAria":"Cancelar renomeação de","branchPickerDialog.actions.confirmDeleteAria":"Confirmar exclusão da branch","branchPickerDialog.actions.cancelDeleteAria":"Cancelar exclusão da branch","branchPickerDialog.actions.deletePrompt":"Excluir","branchPickerDialog.actions.forceDeletePrompt":"Forçar exclusão","branchPickerDialog.tooltip.createWorktree":"Criar worktree","branchPickerDialog.tooltip.worktreeAlreadyExists":"O worktree já existe","branchPickerDialog.tooltip.rename":"Renomear branch","branchPickerDialog.tooltip.renameDisabledForRoot":"Não é possível renomear a branch raiz","branchPickerDialog.tooltip.delete":"Excluir branch","branchPickerDialog.tooltip.deleteCurrentBranch":"Não é possível excluir a branch atual","branchPickerDialog.tooltip.deleteDisabledForRoot":"Não é possível excluir a branch raiz","branchPickerDialog.tooltip.deleteWorktree":"Excluir worktree","branchPickerDialog.tooltip.deleteWorktreeRootProtected":"Não é possível excluir o worktree raiz","branchPickerDialog.toast.branchRenamed":"Branch renomeada","branchPickerDialog.toast.failedToRenameBranch":"Não foi possível renomear a branch","branchPickerDialog.toast.branchDeleted":"Branch excluída","branchPickerDialog.toast.branchNotMerged":"A branch não tem todas as suas alterações integradas","branchPickerDialog.toast.confirmAgainToForceDelete":"Confirme novamente para excluir à força","branchPickerDialog.toast.failedToDeleteBranch":"Não foi possível excluir a branch","branchPickerDialog.toast.worktreeCreated":"Worktree criado","branchPickerDialog.toast.failedToCreateWorktree":"Não foi possível criar o worktree","branchPickerDialog.error.failedToLoad":"Não foi possível carregar as branches","branchPickerDialog.error.renameRejected":"A renomeação foi rejeitada","branchPickerDialog.error.renameFailed":"Não foi possível renomear a branch","branchPickerDialog.error.deleteRejected":"A exclusão foi rejeitada","branchPickerDialog.error.deleteFailed":"Não foi possível excluir a branch","branchPickerDialog.error.createWorktreeFailed":"Não foi possível criar o worktree","projectEditDialog.title":"Editar projeto","projectEditDialog.field.name":"Nome","projectEditDialog.field.namePlaceholder":"Nome do projeto","projectEditDialog.field.color":"Cor","projectEditDialog.field.icon":"Ícone","projectEditDialog.field.preview":"Pré-visualização","projectEditDialog.field.iconBackground":"Fundo do ícone","projectEditDialog.field.iconBackgroundAria":"Cor de fundo do ícone do projeto","projectEditDialog.option.none":"Nenhum","projectEditDialog.actions.uploadIcon":"Enviar ícone","projectEditDialog.actions.uploading":"Enviando...","projectEditDialog.actions.discoverFavicon":"Buscar ícone","projectEditDialog.actions.discovering":"Descobrindo...","projectEditDialog.actions.removeProjectIcon":"Excluir ícone do projeto","projectEditDialog.actions.removing":"Excluindo...","projectEditDialog.actions.undoRemove":"Desfazer exclusão","projectEditDialog.actions.clear":"Limpar","projectEditDialog.actions.cancel":"Cancelar","projectEditDialog.actions.save":"Salvar","projectEditDialog.toast.failedToUploadIcon":"Não foi possível enviar o ícone do projeto","projectEditDialog.toast.iconUpdated":"Ícone do projeto atualizado","projectEditDialog.toast.failedToRemoveIcon":"Não foi possível excluir o ícone do projeto","projectEditDialog.toast.iconRemoved":"Ícone do projeto excluído","projectEditDialog.toast.failedToDiscoverIcon":"Não foi possível descobrir o ícone do projeto","projectEditDialog.toast.customIconAlreadySet":"Ícone personalizado já definido para este projeto","projectEditDialog.toast.iconDiscovered":"Ícone do projeto descoberto","agentManager.sidebar.search.placeholder":"Buscar grupos de agentes...","agentManager.sidebar.actions.newAgentGroup":"Novo grupo de agentes","agentManager.sidebar.actions.more":"... Mais ({count})","agentManager.sidebar.actions.showLess":"Mostrar menos","agentManager.sidebar.section.agentGroups":"Grupos de agentes","agentManager.sidebar.state.loading":"Carregando...","agentManager.sidebar.state.noGroupsFound":"Nenhum grupo encontrado","agentManager.sidebar.state.noGroupsYet":"Não há grupos de agentes ainda","agentManager.sidebar.state.createToGetStarted":"Crie um novo grupo de agentes para começar","agentManager.sidebar.item.modelCountSingle":"{count} modelo","agentManager.sidebar.item.modelCountPlural":"{count} modelos","agentManager.sidebar.item.groupMenuAria":"Menu do grupo","agentManager.sidebar.item.delete":"Excluir","agentManager.sidebar.relativeTime.now":"agora","agentManager.sidebar.relativeTime.minutes":"{count}m","agentManager.sidebar.relativeTime.hours":"{count}h","agentManager.sidebar.relativeTime.days":"{count}d","agentManager.sidebar.dialog.deleteGroupTitle":"Excluir grupo de agentes","agentManager.sidebar.dialog.deleteGroupDescription":'Excluir "{group}"? Isso remove todos os worktrees e sessões deste grupo.',"agentManager.sidebar.dialog.cancel":"Cancelar","agentManager.sidebar.dialog.delete":"Excluir","agentManager.sidebar.dialog.deleting":"Excluindo...","agentManager.sidebar.toast.deletingGroup":'Excluindo "{group}"...',"agentManager.sidebar.toast.deletedGroup":'"{group}" excluído',"agentManager.sidebar.toast.failedToDeleteGroup":'Não foi possível excluir completamente "{group}"',"agentManager.detail.header.modelCountSingle":"{count} modelo","agentManager.detail.header.modelCountPlural":"{count} modelos","agentManager.detail.header.noBranch":"Sem branch","agentManager.detail.actions.worktreeActionsAria":"Ações do worktree","agentManager.detail.actions.removeThisWorktree":"Excluir este worktree","agentManager.detail.actions.keepThisRemoveOthers":"Manter este e excluir os demais","agentManager.detail.actions.copyWorktreePath":"Copiar caminho do worktree","agentManager.detail.dialog.removeWorktreeTitle":"Excluir worktree","agentManager.detail.dialog.removeOtherWorktreesTitle":"Excluir outros worktrees","agentManager.detail.dialog.removeWorktreeDescription":'Excluir "{label}"? Isso remove todas as sessões desse worktree e o próprio worktree.',"agentManager.detail.dialog.removeOtherWorktreesDescription":'Manter "{label}" e excluir os demais worktrees em "{group}".',"agentManager.detail.dialog.cancel":"Cancelar","agentManager.detail.dialog.remove":"Excluir","agentManager.detail.dialog.removeOthers":"Excluir outros","agentManager.detail.dialog.working":"Trabalhando...","agentManager.detail.state.loadingSessionFor":"Carregando sessão para {label}","agentManager.detail.state.sessionId":"ID de sessão: {id}","agentManager.detail.state.noSessionsInGroup":"Não há sessões neste grupo","agentManager.detail.toast.noWorktreePath":"Não há caminho disponível para o worktree","agentManager.detail.toast.worktreePathCopied":"Caminho do worktree copiado","agentManager.detail.toast.failedToCopyPath":"Não foi possível copiar o caminho","agentManager.detail.toast.removingWorktree":"Excluindo worktree...","agentManager.detail.toast.removingOtherWorktrees":"Excluindo outros worktrees...","agentManager.detail.toast.failedToFullyRemoveWorktree":"Não foi possível excluir completamente o worktree","agentManager.detail.toast.worktreeRemoved":"Worktree excluído","agentManager.detail.toast.otherWorktreesRemoved":"Outros worktrees excluídos","agentManager.empty.groupName.label":"Nome do grupo","agentManager.empty.groupName.placeholder":"ex.: feature-auth, bugfix-login","agentManager.empty.groupName.description":"Usado para o nome da pasta e a branch do worktree","agentManager.empty.baseBranch.label":"Branch base","agentManager.empty.baseBranch.description":"Crie novas branches a partir de {branch}","agentManager.empty.setupCommands.label":"Comandos de configurações","agentManager.empty.setupCommands.configured":"{count} configurados","agentManager.empty.setupCommands.description":"Comandos executados em cada novo worktree. Use $ROOT_PROJECT_PATH para a raiz do projeto.","agentManager.empty.setupCommands.loading":"Carregando...","agentManager.empty.setupCommands.commandPlaceholder":"ex.: bun install","agentManager.empty.setupCommands.removeCommandAria":"Excluir comando","agentManager.empty.setupCommands.addCommand":"Adicionar comando","agentManager.empty.agent.label":"Agente","agentManager.empty.agent.description":"Usa o agente padrão configurado","agentManager.empty.models.label":"Modelos","agentManager.empty.models.addModel":"Adicionar modelo","agentManager.empty.models.selectedSingle":"{count} modelo selecionado","agentManager.empty.models.selectedPlural":"{count} modelos selecionados","agentManager.empty.prompt.label":"Prompt","agentManager.empty.prompt.placeholder":"Pergunte algo...","agentManager.empty.prompt.addAttachmentAria":"Adicionar adjunto","agentManager.empty.actions.startAgentGroupAria":"Iniciar grupo de agentes","agentManager.empty.toast.fileTooLarge":'O arquivo "{fileName}" é grande demais (máximo 10MB)',"agentManager.empty.toast.failedToAttach":'Não foi possível anexar "{fileName}"',"agentManager.empty.toast.attachedSingle":"{count} arquivo anexado","agentManager.empty.toast.attachedPlural":"{count} arquivos anexados","agentManager.empty.toast.failedToCreateGroup":"Não foi possível criar o grupo de agentes","openInApp.actions.open":"Abrir","openInApp.actions.openInAria":"Abrir em {app}","openInApp.actions.chooseAppAria":"Escolher aplicativo para abrir","openInApp.actions.copyPath":"Copiar caminho","openInApp.actions.refreshApps":"Atualizar aplicativos","openInApp.toast.pathCopied":"Caminho copiado para a área de transferência","projectActions.actions.addActionAria":"Adicionar ação","projectActions.actions.addAction":"Adicionar ação","projectActions.actions.addNewAction":"Adicionar nova ação","projectActions.actions.autoDiscover":"Detectar automaticamente","projectActions.actions.chooseActionAria":"Escolher ação do projeto","projectActions.actions.openPreview":"Abrir Preview","projectActions.actions.runNamedAria":"Executar {name}","projectActions.actions.stopNamedAria":"Parar {name}","projectActions.label.fallbackAction":"Ação","projectActions.toast.openedUrlFromOutput":"URL da saída da ação aberta","projectActions.toast.openedForwardedUrl":"URL encaminhada aberta","projectActions.toast.openedActionUrl":"URL da ação aberta","projectActions.error.noActiveDirectory":"Não há diretório ativo","projectActions.error.noActiveDirectoryForAction":"Não há diretório ativo para a ação","projectActions.error.failedToCreateTerminalSession":"Não foi possível criar a sessão de terminal","projectActions.error.invalidCustomUrlFormat":"Formato de URL personalizada inválido","projectActions.error.selectedDesktopSshForwardUnavailable":"A conexão SSH na máquina desktop selecionada não está disponível","projectActions.error.failedToRunAction":"Não foi possível executar a ação","mcpDropdown.title":"Servidores MCP","mcpDropdown.actions.refreshAria":"Atualizar","mcpDropdown.actions.openAria":"Servidores MCP","mcpDropdown.statusAria":"Status MCP","mcpDropdown.status.unknown":"Desconhecido","mcpDropdown.status.connected":"Conectado","mcpDropdown.status.failed":"Falhou: {error}","mcpDropdown.status.unknownError":"Erro desconhecido","mcpDropdown.status.needsAuth":"Precisa de autenticação","mcpDropdown.status.needsRegistration":"Precisa de registro: {error}","mcpDropdown.empty.configureInConfig":"Configure os servidores MCP na configurações do OpenCode.","sessionAuth.error.rateLimitTitle":"Muitas tentativas","sessionAuth.error.networkTitle":"Não é possível acessar o servidor","sessionAuth.error.rateLimitDescriptionSingle":"Aguarde {minutes} minuto antes de tentar novamente.","sessionAuth.error.rateLimitDescriptionPlural":"Aguarde {minutes} minutos antes de tentar novamente.","sessionAuth.error.networkDescription":"Não foi possível verificar a sessão da interface. Confira se o serviço está em execução e tente novamente.","sessionAuth.error.retry":"Tentar novamente","sessionAuth.error.passkeySetupFailed":"Não foi possível configurar a chave de acesso.","sessionAuth.error.incorrectPassword":"Senha incorreta. Tente novamente.","sessionAuth.error.unexpectedResponse":"Resposta inesperada do servidor.","sessionAuth.error.networkRetry":"Erro de rede. Verifique a conexão e tente novamente.","sessionAuth.error.passkeySignInCanceled":"O início de sessão com chave de acesso foi cancelado.","sessionAuth.error.enterPasswordForPasskey":"Digite sua senha para adicionar uma chave de acesso.","sessionAuth.locked.tunnelTitle":"É necessário acesso por túnel","sessionAuth.locked.unlockTitle":"Desbloquear OpenChamber","sessionAuth.locked.tunnelDescription":"Abra este túnel usando o link de conexão única do aplicativo desktop.","sessionAuth.locked.passwordDescription":"Esta sessão está protegida com senha.","sessionAuth.locked.hostSwitcherHint":"Use Local se o servidor remoto não estiver disponível.","sessionAuth.actions.cancelPasskey":"Cancelar chave de acesso","sessionAuth.actions.usePasskey":"Usar chave de acesso","sessionAuth.actions.unlockingAria":"Desbloqueando","sessionAuth.actions.unlockAria":"Desbloquear","sessionAuth.actions.trustDevice":"Confiar neste dispositivo","sessionAuth.actions.trustDeviceAria":"Confiar neste dispositivo","sessionAuth.actions.cancelPasskeySetup":"Cancelar configurações de chave de acesso","sessionAuth.actions.addPasskey":"Adicionar chave de acesso","sessionAuth.password.placeholder":"Digite senha","sessionAuth.toast.passkeyAdded":"Chave de acesso adicionada","sessionAuth.toast.passkeySetupCanceled":"Configurações de chave de acesso cancelada","desktopHostSwitcher.title":"Instância","desktopHostSwitcher.description":"Alterne entre Local e o servidor remoto do OpenChamber","desktopHostSwitcher.header.current":"Atual","desktopHostSwitcher.header.default":"Padrão","desktopHostSwitcher.header.currentColon":"Atual:","desktopHostSwitcher.header.currentDefaultColon":"Padrão atual:","desktopHostSwitcher.status.connected":"Conectado","desktopHostSwitcher.status.authRequired":"Autenticação obrigatória","desktopHostSwitcher.status.checking":"Verificando","desktopHostSwitcher.status.updateRecommended":"Atualização recomendada","desktopHostSwitcher.status.incompatible":"Incompatível","desktopHostSwitcher.status.wrongService":"Serviço incorreto","desktopHostSwitcher.status.unreachable":"Inacessível","desktopHostSwitcher.status.unknown":"Desconhecido","desktopHostSwitcher.status.ping":" · {ms}ms ping","desktopHostSwitcher.statusAria":"Status da instância","desktopHostSwitcher.sshPhase.ready":"Pronto","desktopHostSwitcher.sshPhase.error":"Erro","desktopHostSwitcher.sshPhase.reconnecting":"Reconectando","desktopHostSwitcher.sshPhase.resolvingConfig":"Resolvendo configurações","desktopHostSwitcher.sshPhase.checkingAuth":"Verificando autenticação","desktopHostSwitcher.sshPhase.connectingSsh":"Conectando SSH","desktopHostSwitcher.sshPhase.probingRemote":"Explorando remoto","desktopHostSwitcher.sshPhase.installing":"Instalando","desktopHostSwitcher.sshPhase.updating":"Atualizando","desktopHostSwitcher.sshPhase.detectingServer":"Detectando servidor","desktopHostSwitcher.sshPhase.startingServer":"Iniciando servidor","desktopHostSwitcher.sshPhase.forwardingPorts":"Redirecionando portas","desktopHostSwitcher.sshPhase.idle":"Inativo","desktopHostSwitcher.ssh.needInstancesHint":"Precisa de instâncias SSH? Gerencie-as em Configurações.","desktopHostSwitcher.ssh.instanceFallback":"Instância SSH","desktopHostSwitcher.ssh.connectingTo":"Conectando a {host}","desktopHostSwitcher.actions.refresh":"Atualizar","desktopHostSwitcher.actions.refreshInstancesAria":"Atualizar instâncias","desktopHostSwitcher.actions.remoteSsh":"SSH remoto","desktopHostSwitcher.actions.instanceActionsAria":"Ações de instância","desktopHostSwitcher.actions.edit":"Editar","desktopHostSwitcher.actions.delete":"Excluir","desktopHostSwitcher.actions.connect":"Conectar","desktopHostSwitcher.actions.defaultInstanceAria":"Instância padrão","desktopHostSwitcher.actions.setAsDefaultAria":"Definir como padrão","desktopHostSwitcher.actions.setAsDefault":"Definir como padrão","desktopHostSwitcher.actions.openInNewWindowAria":"Abrir em nova janela","desktopHostSwitcher.actions.openInNewWindow":"Abrir em nova janela","desktopHostSwitcher.actions.addInstance":"Adicionar instância","desktopHostSwitcher.actions.cancel":"Cancelar","desktopHostSwitcher.actions.save":"Salvar","desktopHostSwitcher.actions.add":"Adicionar","desktopHostSwitcher.actions.switchToLocal":"Alternar para Local","desktopHostSwitcher.actions.retry":"Tentar novamente","desktopHostSwitcher.actions.switchInstanceAria":"Alternar instância","desktopHostSwitcher.actions.switchInstance":"Alternar instância","desktopHostSwitcher.actions.switchToAria":"Alternar para {instance}","desktopHostSwitcher.field.labelPlaceholder":"Etiqueta","desktopHostSwitcher.field.labelOptionalPlaceholder":"Etiqueta (opcional)","desktopHostSwitcher.field.urlPlaceholder":"https://host:port","desktopHostSwitcher.state.limitedOnPage":"O seletor de instâncias está limitado nesta página. Use Local para recuperar.","desktopHostSwitcher.state.loading":"Carregando...","desktopHostSwitcher.state.instanceUnreachable":"Instância inacessível","desktopHostSwitcher.edit.title":"Editar instância","desktopHostSwitcher.add.title":"Adicionar instância","desktopHostSwitcher.error.failedToSave":"Não foi possível salvar","desktopHostSwitcher.error.failedToLoad":"Não foi possível carregar","desktopHostSwitcher.error.invalidUrl":"URL inválida (deve ser http/https)","desktopHostSwitcher.error.failedToOpenNewWindow":"Não foi possível abrir nova janela","desktopHostSwitcher.instance.local":"Local","desktopHostSwitcher.instance.fallback":"Instância","desktopHostSwitcher.startup.title":"Instância SSH padrão não disponível","desktopHostSwitcher.startup.connectingTo":"Conectando a {host}...","desktopHostSwitcher.startup.failed":"Não foi possível conectar com a instância padrão de SSH.","desktopHostSwitcher.toast.sshConnected":'Instância SSH "{host}" conectada',"desktopHostSwitcher.toast.sshFailedToConnect":'Não foi possível conectar com a instância SSH "{host}"',"desktopHostSwitcher.toast.instanceUnreachable":'Instância "{host}" não está disponível',"miniChat.header.newSession":"Nova sessão","miniChat.header.session":"Sessão","miniChat.header.defaultAgent":"Agente padrão","miniChat.header.noModel":"Sem modelo","miniChat.status.busy":"Executando","miniChat.status.retry":"Tentando novamente","miniChat.status.idle":"Ocioso","miniChat.actions.pin":"Fixar acima de outras janelas","miniChat.actions.unpin":"Desafixar janela","miniChat.actions.pinAria":"Fixar janela Mini Chat","miniChat.actions.unpinAria":"Desafixar janela Mini Chat","miniChat.actions.openMain":"Abrir na janela principal","miniChat.actions.openMainAria":"Abrir sessão na janela principal","miniChat.unavailable.title":"Sessão indisponível","miniChat.unavailable.description":"Não foi possível carregar esta sessão. Ela pode ter sido excluída, arquivada ou aberta a partir de outro contexto de projeto.","sessions.sidebar.session.menu.openMiniChatWindow":"Abrir na janela Mini Chat","header.actions.newMiniChat":"Nova janela Mini Chat","header.actions.newMiniChatAria":"Abrir uma nova janela Mini Chat","header.actions.openSessionMiniChat":"Abrir sessão no Mini Chat","header.actions.openSessionMiniChatAria":"Abrir a sessão atual no Mini Chat","header.windowControls.groupAria":"Controles da janela","header.windowControls.minimize":"Minimizar janela","header.windowControls.maximize":"Maximizar janela","header.windowControls.restore":"Restaurar janela","header.windowControls.close":"Fechar janela","errorBoundary.title":"Algo deu errado","errorBoundary.description":"O aplicativo encontrou um erro inesperado. Isso foi registrado para depuração.","errorBoundary.state.unknownError":"Erro desconhecido","errorBoundary.state.componentStackLabel":"Pilha de componentes:","errorBoundary.actions.errorDetails":"Detalhes do erro","errorBoundary.actions.tryAgain":"Tentar novamente","errorBoundary.actions.copy":"Copiar","errorBoundary.actions.copied":"Copiado","jsonTreeView.error.emptyJson":"Conteúdo JSON vazio","jsonTreeView.error.invalidJson":"JSON inválido","jsonTreeView.error.invalidJsonTitle":"JSON inválido","jsonTreeView.actions.expandAll":"Expandir tudo","jsonTreeView.actions.collapseAll":"Recolher tudo","numberInput.actions.decreaseAria":"Reduzir valor","numberInput.actions.increaseAria":"Aumentar valor","goToLineDialog.field.linePlaceholderShort":"Linha","goToLineDialog.field.linePlaceholder":"Número da linha","goToLineDialog.actions.go":"Ir","goToLineDialog.helper.editorUnavailable":"Editor não disponível.","goToLineDialog.helper.currentLineRange":"Linha atual: {current}. Digite um número de linha entre 1 e {max} para navegar.","goToLineDialog.helper.goToLine":"Ir à linha {line}","dialog.common.actions.close":"Fechar","filesView.toast.relativePathCopied":"Caminho relativo copiado","filesView.tree.menu.copyRelativePath":"Copiar caminho relativo","multiRun.branchSelector.placeholder.selectSourceBranch":"Selecionar branch de origem...","multiRun.branchSelector.status.loadingBranches":"Carregando branches...","multiRun.branchSelector.status.noBranchesFound":"Nenhuma branch encontrada","multiRun.branchSelector.status.notInGitRepository":"Você não está em um repositório Git.","multiRun.branchSelector.groups.localBranches":"Branches locais","multiRun.branchSelector.groups.remoteBranches":"Branches remotas","multiRun.window.actions.closeAria":"Fechar Multi-Run","multiRun.window.description":"Janela do OpenChamber Multi-Run.","voice.status.idle":"Voz pronta","voice.status.listening":"Ouvindo...","voice.status.processing":"Processando...","voice.status.speaking":"Falando...","voice.status.error":"Erro de voz","voice.status.conversationModeActiveAria":"Modo de conversa ativo","voice.action.finishAndTranscribe":"Finalizar e transcrever a entrada de voz","onboarding.common.actions.back":"Voltar","onboarding.common.copyToClipboard":"Copiar para a área de transferência","onboarding.common.status.copiedToClipboard":"Copiado para a área de transferência","onboarding.chooser.title":"Boas-vindas ao OpenChamber","onboarding.chooser.description":"Escolha como deseja se conectar para começar.","onboarding.chooser.tabs.localInstall":"Instalação local","onboarding.chooser.tabs.connectRemote":"Conectar remoto","onboarding.localSetup.title":"Configuração do OpenCode","onboarding.localSetup.description":"Instale a CLI do OpenCode para continuar.","onboarding.localSetup.dialog.selectOpencodeBinary":"Selecionar executável de opencode","onboarding.localSetup.errors.cliNotReady":"A CLI do OpenCode ainda não está pronta. Confirme que a instalação está completa e tente novamente.","onboarding.localSetup.errors.detectionFailed":"Erro de detecção","onboarding.localSetup.windows.title":"Configuração no Windows (WSL recomendado)","onboarding.localSetup.windows.stepInstallWsl":"Instale WSL (se necessário) com","onboarding.localSetup.windows.stepInstallWslSuffix":"no PowerShell.","onboarding.localSetup.windows.stepRunInstallInWsl":"Execute o comando de instalação a seguir dentro de seu terminal de WSL.","onboarding.localSetup.windows.stepSetBinaryPath":"Se o OpenChamber não detectar o OpenCode automaticamente, defina o caminho do executável a seguir.","onboarding.localSetup.intro":"OpenCode é o coração do OpenChamber. Instale-o para começar.","onboarding.localSetup.docs.windows":"Documentação do OpenCode para Windows + WSL","onboarding.localSetup.docs.default":"Documentação do OpenCode","onboarding.localSetup.actions.checking":"Verificando...","onboarding.localSetup.actions.checkAndContinue":"Concluí a instalação, verificar e continuar","onboarding.localSetup.actions.checkNow":"Verificar agora","onboarding.localSetup.helper.checkAndContinue":"Clique para verificar se a CLI do OpenCode está disponível. Se a verificação funcionar, você entrará automaticamente na tela principal.","onboarding.localSetup.status.watching":"Aguardando OpenCode","onboarding.localSetup.status.autoContinue":"Continuaremos automaticamente assim que detectado.","onboarding.localSetup.field.alreadyInstalled":"Já está instalado? Defina o caminho da CLI do OpenCode:","onboarding.localSetup.advanced.title":"Definir um caminho personalizado do binário","onboarding.localSetup.troubleshoot.title":"Está com problemas?","onboarding.localSetup.actions.browse":"Explorar","onboarding.localSetup.actions.apply":"Aplicar","onboarding.localSetup.helper.saveAndReload":"Salve nas configurações do OpenChamber e recarregue configurações do OpenCode.","onboarding.localSetup.remotePreference":"Prefere usar um servidor remoto?","onboarding.localSetup.actions.connectRemoteServer":"Conectar a um servidor remoto →","onboarding.localSetup.windows.hintInstallInWsl":"No Windows, instale e execute OpenCode no WSL para maior compatibilidade.","onboarding.localSetup.windows.hintDetectionFailed":"Se a detecção falhar, defina um caminho nativo (opencode.cmd/opencode.exe), wsl.exe ou wsl:/usr/local/bin/opencode.","onboarding.localSetup.hint.ensurePath":"Já está instalado? Confira se opencode está no seu PATH.","onboarding.localSetup.hint.setEnv":"Ou defina a variável de ambiente OPENCODE_BINARY.","onboarding.localSetup.hint.missingRuntime":'Se você vir "env: node: No such file or directory" ou "env: bun: No such file or directory", instale esse runtime ou confira se ele está no PATH.',"onboarding.remoteConnection.title":"Conectar a servidor remoto","onboarding.remoteConnection.titleRecovery":"Conectar a um servidor diferente","onboarding.remoteConnection.description":"Digite o endereço de um servidor do OpenChamber para conectar.","onboarding.remoteConnection.field.serverAddress":"Endereço do servidor","onboarding.remoteConnection.field.serverAddressPlaceholder":"https://your-server.example.com:4096","onboarding.remoteConnection.field.nameOptional":"Nome (opcional)","onboarding.remoteConnection.field.namePlaceholder":"Meu servidor remoto","onboarding.remoteConnection.errors.connectionTestFailed":"Não foi possível testar a conexão","onboarding.remoteConnection.errors.failedToSaveConnection":"Não foi possível salvar a conexão","onboarding.remoteConnection.status.connectedSuccessfully":"Conexão correta ({latencyMs}ms)","onboarding.remoteConnection.status.authWarning":"O servidor exige autenticação. Você ainda pode se conectar.","onboarding.remoteConnection.status.connectionFailed":"Erro de conexão","onboarding.remoteConnection.status.suggestionsUnreachable":"Sugestões: verifique o endereço do servidor, confirme se ele está em execução e revise sua conexão de rede.","onboarding.remoteConnection.status.suggestionsWrongService":"Sugestões: verifique se a URL aponta para um servidor OpenChamber ou entre em contato com o administrador do servidor.","onboarding.remoteConnection.actions.testing":"Testando…","onboarding.remoteConnection.actions.testConnection":"Testar conexão","onboarding.remoteConnection.actions.connectAndRestart":"Conectar & Reiniciar","onboarding.remoteConnection.actions.whatToDo":"O que você quer fazer?","onboarding.remoteConnection.actions.chooseDifferentServer":"Escolher outro servidor","onboarding.remoteConnection.actions.useLocalInstead":"Usar Local no lugar","onboarding.remoteConnection.probe.authMessage":"O servidor exige autenticação. Você ainda pode se conectar, mas talvez precise fornecer credenciais.","onboarding.remoteConnection.probe.updateRecommendedMessage":"Esta instância está executando uma versão diferente do OpenChamber. Você pode se conectar, mas atualize os dois apps se algo não funcionar.","onboarding.remoteConnection.probe.incompatibleMessage":"O servidor está executando OpenChamber, mas não é compatível com esta versão do app. Atualize o OpenChamber no servidor e tente novamente.","onboarding.remoteConnection.probe.wrongServiceMessage":"O servidor respondeu, mas não está executando OpenChamber. Verifique se o endereço aponta para um servidor OpenChamber.","onboarding.remoteConnection.probe.unreachableMessage":"O servidor não está disponível. Revise sua conexão de rede e verifique o endereço do servidor.","onboarding.desktopRecovery.localUnavailable.title":"OpenCode Local não disponível","onboarding.desktopRecovery.localUnavailable.description":"A CLI do OpenCode não pôde ser iniciada ou não está instalada. Instale o OpenCode ou conecte um servidor remoto no lugar dela.","onboarding.desktopRecovery.localUnavailable.retry":"Tentar novamente Local","onboarding.desktopRecovery.localUnavailable.useLocal":"Configurar Local","onboarding.desktopRecovery.noDefaultConnection.title":"Sem conexão padrão","onboarding.desktopRecovery.noDefaultConnection.description":"Sua conexão padrão salva não pôde ser encontrada. Escolha como deseja se conectar.","onboarding.desktopRecovery.remoteUnreachable.title":"Servidor remoto não disponível","onboarding.desktopRecovery.remoteUnreachable.description":'Não foi possível conectar a "{host}". Revise sua conexão de rede e verifique o endereço do servidor.',"onboarding.desktopRecovery.remoteUnreachable.retry":"Tentar novamente conexão","onboarding.desktopRecovery.incompatibleServer.title":"Servidor incompatível","onboarding.desktopRecovery.incompatibleServer.description":'O servidor em "{host}" não está executando OpenChamber. Verifique se o endereço aponta para um servidor OpenChamber.',"onboarding.desktopRecovery.remoteIncompatible.title":"Atualização do servidor necessária","onboarding.desktopRecovery.remoteIncompatible.description":'O servidor OpenChamber em "{host}" não é compatível com esta versão do app. Atualize o OpenChamber no servidor e tente novamente.',"onboarding.desktopRecovery.common.useLocal":"Usar Local","onboarding.desktopRecovery.common.useRemote":"Usar remoto","onboarding.desktopRecovery.actions.retrying":"Retentendo…","onboarding.desktopRecovery.actions.retryConnection":"Tentar novamente conexão","startup.initRecovery.title":"Falha ao iniciar","startup.initRecovery.description":"O OpenChamber não conseguiu concluir a inicialização. Verifique se o servidor está em execução e tente novamente.","startup.initRecovery.retry":"Tentar novamente","startup.initRecovery.retrying":"Tentando novamente…","onboarding.desktopRecovery.placeholders.remoteServer":"o servidor remoto","onboarding.desktopRecovery.placeholders.unknownServer":"desconhecido","vscodeLayout.title.chat":"Chat","vscodeLayout.title.newSession":"Nova sessão","vscodeLayout.title.sessions":"Sessões","vscodeLayout.title.sessionFallback":"Sessão","vscodeLayout.actions.backToSessionsAria":"Voltar para sessões","vscodeLayout.actions.newSessionAria":"Nova sessão","vscodeLayout.actions.openAgentManagerAria":"Abrir gerenciador de agentes","vscodeLayout.actions.resizeSessionsSidebarAria":"Ajustar tamanho do painel de sessões","vscodeLayout.actions.settingsAria":"Configurações","vscodeLayout.quota.title":"Limites de taxa","vscodeLayout.quota.mode.used":"Usado","vscodeLayout.quota.mode.remaining":"Restante","vscodeLayout.quota.lastUpdated":"Última atualização {time}","vscodeLayout.quota.noRateLimitsAvailable":"Não há limites de taxa disponíveis.","vscodeLayout.quota.noRateLimitsReported":"Nenhum limite de taxa foi informado.","vscodeLayout.quota.actions.rateLimitsAria":"Limites de taxa","vscodeLayout.quota.actions.showUsedAria":"Mostrar cota usada","vscodeLayout.quota.actions.showRemainingAria":"Mostrar cota restante","vscodeLayout.quota.actions.refreshAria":"Atualizar limites de taxa","updateDialog.header.updateAvailable":"Atualização disponível","updateDialog.header.updating":"Atualizando OpenChamber...","updateDialog.changelog.title":"O que há de novo","updateDialog.status.installingUpdate":"Instalando atualização...","updateDialog.status.serverRestarting":"Servidor reiniciando...","updateDialog.status.waitingForServer":"Aguardando o servidor...","updateDialog.status.autoReloadHint":"A página será recarregada automaticamente quando a atualização terminar.","updateDialog.fallback.updateViaTerminal":"Ou atualize pelo terminal:","updateDialog.actions.copyCommand":"Copiar comando","updateDialog.actions.copied":"Copiado!","updateDialog.status.downloadingPayload":"Baixando o payload de atualização...","updateDialog.actions.downloadUpdate":"Baixar atualização","updateDialog.status.downloading":"Baixando...","updateDialog.actions.restartToUpdate":"Reiniciar para atualizar","updateDialog.actions.updateNow":"Atualizar agora","updateDialog.status.updating":"Atualizando...","updateDialog.error.updateFailed":"Não foi possível atualizar","updateDialog.error.takingLonger":"A atualização está demorando mais do que o esperado. Aguarde um pouco e atualize, ou execute: openchamber update","opencodeUpdate.toast.available.title":"Atualização do OpenCode","opencodeUpdate.toast.available.description":"Versão {version} disponível.","opencodeUpdate.toast.actions.update":"Atualizar","opencodeUpdate.toast.actions.dismiss":"Dispensar","opencodeUpdate.toast.actions.reload":"Recarregar OpenCode","opencodeUpdate.toast.upgrading.title":"Atualizando OpenCode...","opencodeUpdate.toast.upgrading.description":"Mantenha o OpenChamber aberto.","opencodeUpdate.toast.updated.title":"OpenCode atualizado","opencodeUpdate.toast.updated.description":"Atualização instalada.","opencodeUpdate.toast.updated.descriptionWithVersion":"Versão {version} instalada.","opencodeUpdate.toast.failed.title":"Não foi possível atualizar o OpenCode","opencodeUpdate.toast.failed.description":"A atualização do OpenCode falhou.","opencodeUpdate.toast.reload.message":"Reiniciando OpenCode...","memoryDebugPanel.title":"Painel de depuração","memoryDebugPanel.tabs.memory":"Memória","memoryDebugPanel.tabs.streaming":"Transmissão","memoryDebugPanel.section.sessionsInMemory":"Sessões em memória","memoryDebugPanel.section.uiStreamingMetrics":"Métricas de streaming de UI","memoryDebugPanel.section.vscodeBridgeMetrics":"Métricas da ponte do VS Code","memoryDebugPanel.section.noUiSamples":"Ainda não há amostras de transmissão da UI. Inicie uma transmissão e mantenha este painel aberto.","memoryDebugPanel.section.noVscodeSamples":"Ainda não há amostras da ponte VS Code.","memoryDebugPanel.metric.totalMessages":"Mensagens totais","memoryDebugPanel.metric.cachedSessions":"Sessões em cache","memoryDebugPanel.metric.viewportWindow":"Janela de visualização","memoryDebugPanel.metric.zombieTimeout":"Timeout zombie","memoryDebugPanel.metric.githubTotalRequests":"Solicitações totais do GitHub","memoryDebugPanel.metric.metrics":"Métricas","memoryDebugPanel.metric.samples":"Amostras","memoryDebugPanel.metric.lastUpdate":"Última atualização","memoryDebugPanel.metric.uiMetrics":"Métricas de UI","memoryDebugPanel.metric.vscodeMetrics":"Métricas de VS Code","memoryDebugPanel.metric.messageListRenders":"Renderizados de MsgList","memoryDebugPanel.metric.messageListStreamRenders":"Renderizados de MsgList em streaming","memoryDebugPanel.metric.chatMessageRenders":"Renderizações de ChatMessage","memoryDebugPanel.metric.chatMessageStreamRenders":"Renderizações de ChatMessage em streaming","memoryDebugPanel.metric.chatMessageStaticDuringStream":"ChatMessage estático durante streaming","memoryDebugPanel.metric.chatMessageStaticOutsideActiveTurn":"ChatMessage estático fora do turno ativo","memoryDebugPanel.metric.messagesValue":"{count} mensagens","memoryDebugPanel.metric.minutesValue":"{count} minutos","memoryDebugPanel.metric.msgsValue":"{count} mensagens","memoryDebugPanel.metric.countValue":"contagem {value}","memoryDebugPanel.metric.avgValue":"méd. {value}","memoryDebugPanel.metric.maxValue":"máx. {value}","memoryDebugPanel.metric.totalValue":"total {value}","memoryDebugPanel.actions.logState":"Registrar status","memoryDebugPanel.actions.copyJson":"Copiar JSON","memoryDebugPanel.tooltip.logCurrentState":"Registrar o status atual de memória na console do navegador","memoryDebugPanel.streaming.copy.copied":"JSON de depuração em streaming copiado","memoryDebugPanel.streaming.copy.failed":"Não foi possível copiar JSON","memoryDebugPanel.streaming.copy.hint":"Copia exportações de métricas da UI e do VS Code em formato JSON","memoryDebugPanel.common.idle":"inativo","memoryDebugPanel.common.live":"ao vivo","memoryDebugPanel.common.notAvailable":"n/a","memoryDebugPanel.common.untitled":"Sem título","directoryTree.field.newDirectoryPlaceholder":"new_directory","textarea.resizeHandleAria":"Ajustar área de texto","sidebar.resize.leftPanelAria":"Ajustar painel esquerdo","sidebar.resize.rightPanelAria":"Ajustar painel direito","mainLayout.mobile.closeDrawerAria":"Fechar gaveta","sortableTabsStrip.aria.tabs":"Abas","openChamberLogo.aria.logo":"Logo do OpenChamber","markdownRenderer.table.actions.copyTitle":"Copiar tabela","markdownRenderer.table.actions.downloadTitle":"Baixar tabela","markdownRenderer.table.toast.downloadedAsFormat":"Tabela baixada como {format}","markdownRenderer.mermaid.actions.copyTitle":"Copiar","markdownRenderer.mermaid.actions.copySourceTitle":"Copiar origem","markdownRenderer.mermaid.actions.downloadSvgTitle":"Baixar SVG","markdownRenderer.mermaid.toast.downloadFailed":"Não foi possível baixar o diagrama","contextPanel.preview.title":"Visualização","contextPanel.preview.description":"Use Ações do projeto ou o botão Preview do terminal para abrir uma visualização.","contextPanel.preview.startPreview":"Iniciar visualização","contextPanel.preview.starting":"Iniciando...","contextPanel.preview.noDevServer":'Nenhum comando de servidor de desenvolvimento encontrado. Configure uma ação do projeto ou adicione um script "dev" ao package.json.',"contextPanel.preview.startFailed":"Falha ao iniciar o servidor de visualização.","contextPanel.preview.serverExited":"Servidor de desenvolvimento encerrou inesperadamente.","contextPanel.preview.noUrlDetected":"O servidor de desenvolvimento foi iniciado, mas nenhum URL foi detectado na saída. Abra a aba de terminal da visualização para ver os logs.","contextPanel.preview.serverExitedWithLog":`O servidor de desenvolvimento encerrou inesperadamente. Última saída:
11
+ {summary}`,"chat.chatInput.toast.vscodePickFailed":"Não foi possível selecionar arquivos em VS Code","chat.chatInput.toast.openSessionFirst":"Abra uma sessão primeiro","chat.chatInput.toast.togglePermissionAutoAcceptFailed":"Não foi possível alterar a aceitação automática de permissões","chat.chatInput.reviewComments":"Comentários de revisão:","chat.chatInput.reviewCommentsRemove":"Remover comentários de revisão","chat.chatInput.devServerLogs":"Logs do Dev Server:","chat.chatInput.devServerLogsRemove":"Remover logs do Dev Server","chat.chatInput.previewAnnotations":"Anotações da visualização:","chat.chatInput.previewContext":"Contexto da visualização:","chat.chatInput.previewContextRemove":"Remover contexto da visualização","chat.chatInput.projectRoot":"Raiz do projeto","chat.chatInput.branch":"Branch","chat.chatInput.worktrees":"Worktrees","chat.chatInput.worktreeNew":"+ Novo","chat.chatInput.drop.insertMention":"Solte para inserir como menção","chat.chatInput.drop.attachFiles":"Solte arquivos aqui para anexar","chat.chatInput.fileFallback":"arquivo","chat.mobileStatus.editProjects.title":"Editar projetos","chat.mobileStatus.editProjects.footer":"Arraste os itens para reordenar ou use as setas para mover. Toque em editar para alterar os detalhes.","chat.mobileStatus.editProjects.empty":"Não há projetos para editar","chat.mobileStatus.projects.empty":"Não há projetos","chat.mobileStatus.projects.addAria":"Adicionar projeto","chat.mobileStatus.projects.removeTitle":"Excluir projeto","chat.mobileStatus.projects.removeDescriptionPrefix":"Tem certeza de que deseja excluir","chat.mobileStatus.projects.cancel":"Cancelar","chat.mobileStatus.projects.remove":"Excluir","chat.mobileStatus.new":"Novo","chat.mobileStatus.noSessionsInProject":"Não há sessões neste projeto","chat.mobileStatus.swipeHint":"← Deslize aqui para abrir os painéis laterais →","chat.mobileStatus.toast.addProjectFailed":"Não foi possível adicionar o projeto","chat.mobileStatus.toast.selectValidDirectory":"Selecione um diretório válido.","chat.mobileStatus.toast.selectDirectoryFailed":"Não foi possível selecionar o diretório","chat.toolOutputDialog.image.previousAria":"Imagem anterior","chat.toolOutputDialog.image.nextAria":"Próxima imagem","chat.toolOutputDialog.image.closeAria":"Fechar prévia de imagem","chat.toolOutputDialog.mermaid.missingSource":"Falta a URL de origem do Mermaid.","chat.toolOutputDialog.mermaid.loadFailed":"Não foi possível carregar o diagrama de Mermaid.","chat.toolOutputDialog.mermaid.closeAria":"Fechar prévia do diagrama","chat.toolOutputDialog.mermaid.loading":"Carregando diagrama...","chat.toolOutputDialog.mermaid.renderFailed":"Não foi possível renderizar o diagrama de Mermaid.","chat.toolOutputDialog.mermaid.retry":"Tentar novamente","chat.toolOutputDialog.commandCompleted":"Comando concluído com sucesso","chat.toolOutputDialog.noOutputProduced":"Nenhuma saída produzida","chat.toolPart.lspErrors":"Erros LSP","chat.toolPart.moreErrors":"+{count} erros a mais","chat.toolPart.error":"Erro:","chat.toolPart.awaitingResponse":"Aguardando resposta...","chat.toolPart.noOutputProduced":"Nenhuma saída produzida","chat.toolPart.output":"Saída","chat.toolPart.showRawJson":"Mostrar JSON bruto","chat.toolPart.showFormattedJson":"Mostrar JSON formatado","chat.toolPart.copyOutput":"Copiar saída","chat.toolPart.copiedOutput":"Saída copiada","chat.toolPart.copyOutputFailed":"Falha ao copiar saída","chat.toolPart.openSubtask":"Abrir subtarefa {type}","chat.todo.total":"Total","chat.todo.inProgress":"Em andamento","chat.todo.pending":"Pendente","chat.todo.completed":"Concluído","chat.todo.cancelled":"Cancelado","chat.permissionCard.workingDirectory":"Diretório de trabalho:","chat.permissionCard.timeout":"Tempo limite:","chat.permissionCard.request":"Solicitação:","chat.permissionCard.headers":"Cabeçalhos:","chat.permissionCard.body":"Corpo:","chat.permissionCard.action":"Ação:","chat.permissionCard.details":"Detalhes:","chat.permissionCard.patterns":"Padrões:","chat.permissionToast.sessionFallback":"Sessão","chat.permissionToast.permissionFallback":"Detalhes de permissão indisponíveis","chat.permissionToast.labels.session":"Sessão:","chat.permissionToast.labels.permission":"Permissão:","chat.permissionToast.actions.once":"Uma vez","chat.permissionToast.actions.always":"Sempre","chat.permissionToast.actions.deny":"Negar","chat.permissionToast.actions.approveOnceAria":"Aprovar uma vez","chat.permissionToast.actions.approveOnceAriaWithSession":"Aprovar uma vez para {session}","chat.permissionToast.actions.approveAlwaysAria":"Aprovar sempre","chat.permissionToast.actions.approveAlwaysAriaWithSession":"Aprovar sempre para {session}","chat.permissionToast.actions.denyAria":"Negar permissão","chat.permissionToast.actions.denyAriaWithSession":"Negar permissão para {session}","chat.permissionRequest.required":"Permissão obrigatória:","chat.permissionRequest.actions.once":"Uma vez","chat.permissionRequest.actions.always":"Sempre","chat.permissionRequest.actions.reject":"Rejeitar","chat.modelControls.provider":"Provedor","chat.modelControls.capability.toolCalling":"Uso de ferramentas","chat.modelControls.capability.reasoning":"Raciocínio","chat.modelControls.modality.text":"Texto","chat.modelControls.modality.image":"Imagem","chat.modelControls.modality.video":"Vídeo","chat.modelControls.modality.audio":"Audio","chat.modelControls.modality.pdf":"PDF","chat.modelControls.capabilities":"Capacidades","chat.modelControls.modalities":"Modalidades","chat.modelControls.input":"Entrada","chat.modelControls.output":"Saída","chat.modelControls.limits":"Limites","chat.modelControls.context":"Contexto","chat.modelControls.metadata":"Metadados","chat.modelControls.knowledge":"Conhecimento","chat.modelControls.release":"Lançamento","chat.modelControls.mode":"Modo","chat.modelControls.model":"Modelo","chat.modelControls.temperature":"Temperatura","chat.modelControls.topP":"Top P","chat.modelControls.permissions":"Permissões","chat.modelControls.edit":"Editar","chat.modelControls.bash":"Bash","chat.modelControls.webFetch":"WebFetch","chat.modelControls.customPrompt":"Prompt personalizado","chat.modelControls.selectModel":"Selecionar modelo","chat.modelControls.searchProvidersOrModels":"Pesquisar provedores ou modelos","chat.modelControls.clearSearch":"Limpar pesquisa","chat.modelControls.current":"Atual","chat.modelControls.thinking":"Pensando","chat.modelControls.default":"Padrão","chat.modelControls.selectAgent":"Selecionar agente","chat.modelControls.costPerMillion":"Custo ($/1M tokens)","chat.modelControls.metadataUnavailable":"Metadados do modelo indisponíveis.","chat.modelControls.addNewProvider":"Adicionar novo provedor","chat.modelControls.noAgentSelected":"Nenhum agente selecionado.","chat.modelControls.resetToDefault":"Reiniciar ao valor padrão","chat.modelControls.searchModels":"Pesquisar modelos","chat.modelControls.searchAgents":"Pesquisar agentes","chat.modelControls.noModelsFound":"Nenhum modelo encontrado","chat.modelControls.favorites":"Favoritos","chat.modelControls.recent":"Recentes","chat.modelControls.addToFavorites":"Adicionar a favoritos","chat.modelControls.removeFromFavorites":"Excluir de favoritos","chat.modelControls.favoriteAria":"Favorito","chat.modelControls.unfavoriteAria":"Remover de favoritos","chat.modelControls.collapseProvider":"Recolher provedor","chat.modelControls.expandProvider":"Expandir provedor","chat.modelControls.keyboardHint":"↑↓ navegar{thinking} • Enter selecionar • Esc fechar","chat.modelControls.keyboardHintNavigate":"↑↓ navegar","chat.modelControls.keyboardHintSwitchAgent":"{shortcut} alternar agente","chat.modelControls.keyboardHintThinking":"←→ mudar raciocínio","chat.modelControls.showThinkingModes":"Mostrar modos de raciocínio","chat.modelControls.hideThinkingModes":"Ocultar modos de raciocínio","chat.modelControls.moreThinkingModes":"Mais modos de raciocínio","chat.modelControls.noProvidersOrModelsFound":"Nenhum provedor ou modelo corresponde à sua pesquisa.","chat.modelControls.reorderFavoriteAria":"Reordenar favorito","chat.modelControls.reorderFavoriteTitle":"Arraste para reordenar favorito","chat.modelControls.permissionLabel.custom":"Personalizado","chat.modelControls.permissionLabel.allow":"Permitir","chat.modelControls.permissionLabel.deny":"Negar","chat.modelControls.permissionLabel.ask":"Perguntar","chat.modelControls.modeValue.primary":"Primário","chat.modelControls.modeValue.subagent":"Subagente","chat.modelControls.modeValue.all":"Todos","chat.modelControls.modeValue.none":"—","chat.reasoningTrace.thinking":"Pensando","chat.reasoningTrace.justification":"Justificativa","chat.reasoningTrace.expandAria":"Expandir rastro de raciocínio","chat.reasoningTrace.collapseAria":"Recolher rastro de raciocínio","chat.reasoningTrace.thought":"Pensou","chat.messageBody.subtask.title":"Tarefa delegada","chat.messageBody.subtask.hidePrompt":"Ocultar prompt","chat.messageBody.subtask.showPrompt":"Mostrar prompt","chat.messageBody.subtask.openSession":"Abrir sessão de subtarefa","chat.messageBody.shellCommand.title":"Comando de shell","chat.messageBody.shellCommand.hideOutput":"Ocultar saída","chat.messageBody.shellCommand.showOutput":"Mostrar saída","chat.messageBody.shellCommand.copied":"Copiado","chat.messageBody.shellCommand.copyOutput":"Copiar saída","commandPalette.title":"Paleta de comandos","commandPalette.description":"Buscar arquivos, sessões e comandos.","commandPalette.input.placeholder":"Buscar arquivos, sessões, comandos...","commandPalette.empty.noResults":"Nenhum resultado encontrado.","commandPalette.empty.searchingFiles":"Buscando arquivos...","commandPalette.item.newSession":"Nova sessão","commandPalette.item.newMiniChat":"Nova janela Mini Chat","commandPalette.item.newWorktreeDraft":"Novo rascunho de worktree","commandPalette.item.addProject":"Adicionar projeto","commandPalette.item.showSessionSwitcher":"Mostrar seletor de sessões","commandPalette.item.toggleSidebar":"Mostrar ou ocultar barra lateral","commandPalette.item.toggleRightSidebar":"Mostrar ou ocultar barra lateral direita","commandPalette.item.showContextUsage":"Mostrar uso do contexto","commandPalette.item.toggleTerminal":"Mostrar ou ocultar terminal","commandPalette.item.openSettings":"Abrir configurações...","commandPalette.session.untitled":"Sessão sem título","openCodeStatusDialog.title":"Status do OpenCode","openCodeStatusDialog.description":"Inspecione o status atual do OpenCode e os diagnósticos.","openCodeStatusDialog.actions.copy":"Copiar","openCodeStatusDialog.empty.noData":"Não há dados.","openCodeStatusDialog.toast.copiedTitle":"Copiado","openCodeStatusDialog.toast.copiedDescription":"Status copiado para a área de transferência","openCodeStatusDialog.toast.copyFailed":"Não foi possível copiar o status","saveProjectPlanDialog.title":"Salvar plano do projeto","saveProjectPlanDialog.description":"Salve este plano no seu projeto como um arquivo Markdown.","saveProjectPlanDialog.field.title":"Título","saveProjectPlanDialog.field.titlePlaceholder":"Título do plano","saveProjectPlanDialog.field.contentPreview":"Pré-visualização do conteúdo","saveProjectPlanDialog.actions.cancel":"Cancelar","saveProjectPlanDialog.actions.save":"Salvar","saveProjectPlanDialog.actions.saving":"Salvando...","branchPickerDialog.title":"Seletor de branch","branchPickerDialog.description.localBranchesForProject":"Branches locais para {project}","branchPickerDialog.description.selectProject":"Selecione um projeto para ver branches","branchPickerDialog.search.placeholder":"Pesquisar branches...","branchPickerDialog.search.renameBranchPlaceholder":"Renomear branch","branchPickerDialog.state.noProjectSelected":"Nenhum projeto selecionado","branchPickerDialog.state.loadingBranches":"Carregando branches...","branchPickerDialog.state.noMatchingBranches":"Nenhuma branch correspondente encontrada","branchPickerDialog.state.noBranchesFound":"Nenhuma branch encontrada","branchPickerDialog.badge.head":"HEAD","branchPickerDialog.badge.worktree":"worktree","branchPickerDialog.actions.createWorktreeAria":"Criar worktree de branch","branchPickerDialog.actions.renameAria":"Renomear branch","branchPickerDialog.actions.deleteAria":"Excluir branch","branchPickerDialog.actions.deleteWorktreeAria":"Excluir worktree","branchPickerDialog.actions.confirmRenameAria":"Confirmar renomeação de","branchPickerDialog.actions.cancelRenameAria":"Cancelar renomeação de","branchPickerDialog.actions.confirmDeleteAria":"Confirmar exclusão da branch","branchPickerDialog.actions.cancelDeleteAria":"Cancelar exclusão da branch","branchPickerDialog.actions.deletePrompt":"Excluir","branchPickerDialog.actions.forceDeletePrompt":"Forçar exclusão","branchPickerDialog.tooltip.createWorktree":"Criar worktree","branchPickerDialog.tooltip.worktreeAlreadyExists":"O worktree já existe","branchPickerDialog.tooltip.rename":"Renomear branch","branchPickerDialog.tooltip.renameDisabledForRoot":"Não é possível renomear a branch raiz","branchPickerDialog.tooltip.delete":"Excluir branch","branchPickerDialog.tooltip.deleteCurrentBranch":"Não é possível excluir a branch atual","branchPickerDialog.tooltip.deleteDisabledForRoot":"Não é possível excluir a branch raiz","branchPickerDialog.tooltip.deleteWorktree":"Excluir worktree","branchPickerDialog.tooltip.deleteWorktreeRootProtected":"Não é possível excluir o worktree raiz","branchPickerDialog.toast.branchRenamed":"Branch renomeada","branchPickerDialog.toast.failedToRenameBranch":"Não foi possível renomear a branch","branchPickerDialog.toast.branchDeleted":"Branch excluída","branchPickerDialog.toast.branchNotMerged":"A branch não tem todas as suas alterações integradas","branchPickerDialog.toast.confirmAgainToForceDelete":"Confirme novamente para excluir à força","branchPickerDialog.toast.failedToDeleteBranch":"Não foi possível excluir a branch","branchPickerDialog.toast.worktreeCreated":"Worktree criado","branchPickerDialog.toast.failedToCreateWorktree":"Não foi possível criar o worktree","branchPickerDialog.error.failedToLoad":"Não foi possível carregar as branches","branchPickerDialog.error.renameRejected":"A renomeação foi rejeitada","branchPickerDialog.error.renameFailed":"Não foi possível renomear a branch","branchPickerDialog.error.deleteRejected":"A exclusão foi rejeitada","branchPickerDialog.error.deleteFailed":"Não foi possível excluir a branch","branchPickerDialog.error.createWorktreeFailed":"Não foi possível criar o worktree","projectEditDialog.title":"Editar projeto","projectEditDialog.field.name":"Nome","projectEditDialog.field.namePlaceholder":"Nome do projeto","projectEditDialog.field.color":"Cor","projectEditDialog.field.icon":"Ícone","projectEditDialog.field.preview":"Pré-visualização","projectEditDialog.field.iconBackground":"Fundo do ícone","projectEditDialog.field.iconBackgroundAria":"Cor de fundo do ícone do projeto","projectEditDialog.option.none":"Nenhum","projectEditDialog.actions.uploadIcon":"Enviar ícone","projectEditDialog.actions.uploading":"Enviando...","projectEditDialog.actions.discoverFavicon":"Buscar ícone","projectEditDialog.actions.discovering":"Descobrindo...","projectEditDialog.actions.removeProjectIcon":"Excluir ícone do projeto","projectEditDialog.actions.removing":"Excluindo...","projectEditDialog.actions.undoRemove":"Desfazer exclusão","projectEditDialog.actions.clear":"Limpar","projectEditDialog.actions.cancel":"Cancelar","projectEditDialog.actions.save":"Salvar","projectEditDialog.toast.failedToUploadIcon":"Não foi possível enviar o ícone do projeto","projectEditDialog.toast.iconUpdated":"Ícone do projeto atualizado","projectEditDialog.toast.failedToRemoveIcon":"Não foi possível excluir o ícone do projeto","projectEditDialog.toast.iconRemoved":"Ícone do projeto excluído","projectEditDialog.toast.failedToDiscoverIcon":"Não foi possível descobrir o ícone do projeto","projectEditDialog.toast.customIconAlreadySet":"Ícone personalizado já definido para este projeto","projectEditDialog.toast.iconDiscovered":"Ícone do projeto descoberto","agentManager.sidebar.search.placeholder":"Buscar grupos de agentes...","agentManager.sidebar.actions.newAgentGroup":"Novo grupo de agentes","agentManager.sidebar.actions.more":"... Mais ({count})","agentManager.sidebar.actions.showLess":"Mostrar menos","agentManager.sidebar.section.agentGroups":"Grupos de agentes","agentManager.sidebar.state.loading":"Carregando...","agentManager.sidebar.state.noGroupsFound":"Nenhum grupo encontrado","agentManager.sidebar.state.noGroupsYet":"Não há grupos de agentes ainda","agentManager.sidebar.state.createToGetStarted":"Crie um novo grupo de agentes para começar","agentManager.sidebar.item.modelCountSingle":"{count} modelo","agentManager.sidebar.item.modelCountPlural":"{count} modelos","agentManager.sidebar.item.groupMenuAria":"Menu do grupo","agentManager.sidebar.item.delete":"Excluir","agentManager.sidebar.relativeTime.now":"agora","agentManager.sidebar.relativeTime.minutes":"{count}m","agentManager.sidebar.relativeTime.hours":"{count}h","agentManager.sidebar.relativeTime.days":"{count}d","agentManager.sidebar.dialog.deleteGroupTitle":"Excluir grupo de agentes","agentManager.sidebar.dialog.deleteGroupDescription":'Excluir "{group}"? Isso remove todos os worktrees e sessões deste grupo.',"agentManager.sidebar.dialog.cancel":"Cancelar","agentManager.sidebar.dialog.delete":"Excluir","agentManager.sidebar.dialog.deleting":"Excluindo...","agentManager.sidebar.toast.deletingGroup":'Excluindo "{group}"...',"agentManager.sidebar.toast.deletedGroup":'"{group}" excluído',"agentManager.sidebar.toast.failedToDeleteGroup":'Não foi possível excluir completamente "{group}"',"agentManager.detail.header.modelCountSingle":"{count} modelo","agentManager.detail.header.modelCountPlural":"{count} modelos","agentManager.detail.header.noBranch":"Sem branch","agentManager.detail.actions.worktreeActionsAria":"Ações do worktree","agentManager.detail.actions.removeThisWorktree":"Excluir este worktree","agentManager.detail.actions.keepThisRemoveOthers":"Manter este e excluir os demais","agentManager.detail.actions.copyWorktreePath":"Copiar caminho do worktree","agentManager.detail.dialog.removeWorktreeTitle":"Excluir worktree","agentManager.detail.dialog.removeOtherWorktreesTitle":"Excluir outros worktrees","agentManager.detail.dialog.removeWorktreeDescription":'Excluir "{label}"? Isso remove todas as sessões desse worktree e o próprio worktree.',"agentManager.detail.dialog.removeOtherWorktreesDescription":'Manter "{label}" e excluir os demais worktrees em "{group}".',"agentManager.detail.dialog.cancel":"Cancelar","agentManager.detail.dialog.remove":"Excluir","agentManager.detail.dialog.removeOthers":"Excluir outros","agentManager.detail.dialog.working":"Trabalhando...","agentManager.detail.state.loadingSessionFor":"Carregando sessão para {label}","agentManager.detail.state.sessionId":"ID de sessão: {id}","agentManager.detail.state.noSessionsInGroup":"Não há sessões neste grupo","agentManager.detail.toast.noWorktreePath":"Não há caminho disponível para o worktree","agentManager.detail.toast.worktreePathCopied":"Caminho do worktree copiado","agentManager.detail.toast.failedToCopyPath":"Não foi possível copiar o caminho","agentManager.detail.toast.removingWorktree":"Excluindo worktree...","agentManager.detail.toast.removingOtherWorktrees":"Excluindo outros worktrees...","agentManager.detail.toast.failedToFullyRemoveWorktree":"Não foi possível excluir completamente o worktree","agentManager.detail.toast.worktreeRemoved":"Worktree excluído","agentManager.detail.toast.otherWorktreesRemoved":"Outros worktrees excluídos","agentManager.empty.groupName.label":"Nome do grupo","agentManager.empty.groupName.placeholder":"ex.: feature-auth, bugfix-login","agentManager.empty.groupName.description":"Usado para o nome da pasta e a branch do worktree","agentManager.empty.baseBranch.label":"Branch base","agentManager.empty.baseBranch.description":"Crie novas branches a partir de {branch}","agentManager.empty.setupCommands.label":"Comandos de configurações","agentManager.empty.setupCommands.configured":"{count} configurados","agentManager.empty.setupCommands.description":"Comandos executados em cada novo worktree. Use $ROOT_PROJECT_PATH para a raiz do projeto.","agentManager.empty.setupCommands.loading":"Carregando...","agentManager.empty.setupCommands.commandPlaceholder":"ex.: bun install","agentManager.empty.setupCommands.removeCommandAria":"Excluir comando","agentManager.empty.setupCommands.addCommand":"Adicionar comando","agentManager.empty.agent.label":"Agente","agentManager.empty.agent.description":"Usa o agente padrão configurado","agentManager.empty.models.label":"Modelos","agentManager.empty.models.addModel":"Adicionar modelo","agentManager.empty.models.selectedSingle":"{count} modelo selecionado","agentManager.empty.models.selectedPlural":"{count} modelos selecionados","agentManager.empty.prompt.label":"Prompt","agentManager.empty.prompt.placeholder":"Pergunte algo...","agentManager.empty.prompt.addAttachmentAria":"Adicionar adjunto","agentManager.empty.actions.startAgentGroupAria":"Iniciar grupo de agentes","agentManager.empty.toast.fileTooLarge":'O arquivo "{fileName}" é grande demais (máximo 10MB)',"agentManager.empty.toast.failedToAttach":'Não foi possível anexar "{fileName}"',"agentManager.empty.toast.attachedSingle":"{count} arquivo anexado","agentManager.empty.toast.attachedPlural":"{count} arquivos anexados","agentManager.empty.toast.failedToCreateGroup":"Não foi possível criar o grupo de agentes","openInApp.actions.open":"Abrir","openInApp.actions.openInAria":"Abrir em {app}","openInApp.actions.chooseAppAria":"Escolher aplicativo para abrir","openInApp.actions.copyPath":"Copiar caminho","openInApp.actions.refreshApps":"Atualizar aplicativos","openInApp.toast.pathCopied":"Caminho copiado para a área de transferência","projectActions.actions.addActionAria":"Adicionar ação","projectActions.actions.addAction":"Adicionar ação","projectActions.actions.addNewAction":"Adicionar nova ação","projectActions.actions.autoDiscover":"Detectar automaticamente","projectActions.actions.chooseActionAria":"Escolher ação do projeto","projectActions.actions.openPreview":"Abrir Preview","projectActions.actions.runNamedAria":"Executar {name}","projectActions.actions.stopNamedAria":"Parar {name}","projectActions.label.fallbackAction":"Ação","projectActions.toast.openedUrlFromOutput":"URL da saída da ação aberta","projectActions.toast.openedForwardedUrl":"URL encaminhada aberta","projectActions.toast.openedActionUrl":"URL da ação aberta","projectActions.error.noActiveDirectory":"Não há diretório ativo","projectActions.error.noActiveDirectoryForAction":"Não há diretório ativo para a ação","projectActions.error.failedToCreateTerminalSession":"Não foi possível criar a sessão de terminal","projectActions.error.invalidCustomUrlFormat":"Formato de URL personalizada inválido","projectActions.error.selectedDesktopSshForwardUnavailable":"A conexão SSH na máquina desktop selecionada não está disponível","projectActions.error.failedToRunAction":"Não foi possível executar a ação","mcpDropdown.title":"Servidores MCP","mcpDropdown.actions.refreshAria":"Atualizar","mcpDropdown.actions.openAria":"Servidores MCP","mcpDropdown.statusAria":"Status MCP","mcpDropdown.status.unknown":"Desconhecido","mcpDropdown.status.connected":"Conectado","mcpDropdown.status.failed":"Falhou: {error}","mcpDropdown.status.unknownError":"Erro desconhecido","mcpDropdown.status.needsAuth":"Precisa de autenticação","mcpDropdown.status.needsRegistration":"Precisa de registro: {error}","mcpDropdown.empty.configureInConfig":"Configure os servidores MCP na configurações do OpenCode.","sessionAuth.error.rateLimitTitle":"Muitas tentativas","sessionAuth.error.networkTitle":"Não é possível acessar o servidor","sessionAuth.error.rateLimitDescriptionSingle":"Aguarde {minutes} minuto antes de tentar novamente.","sessionAuth.error.rateLimitDescriptionPlural":"Aguarde {minutes} minutos antes de tentar novamente.","sessionAuth.error.networkDescription":"Não foi possível verificar a sessão da interface. Confira se o serviço está em execução e tente novamente.","sessionAuth.error.retry":"Tentar novamente","sessionAuth.error.passkeySetupFailed":"Não foi possível configurar a chave de acesso.","sessionAuth.error.incorrectPassword":"Senha incorreta. Tente novamente.","sessionAuth.error.unexpectedResponse":"Resposta inesperada do servidor.","sessionAuth.error.networkRetry":"Erro de rede. Verifique a conexão e tente novamente.","sessionAuth.error.passkeySignInCanceled":"O início de sessão com chave de acesso foi cancelado.","sessionAuth.error.enterPasswordForPasskey":"Digite sua senha para adicionar uma chave de acesso.","sessionAuth.locked.tunnelTitle":"É necessário acesso por túnel","sessionAuth.locked.unlockTitle":"Desbloquear OpenChamber","sessionAuth.locked.tunnelDescription":"Abra este túnel usando o link de conexão única do aplicativo desktop.","sessionAuth.locked.passwordDescription":"Esta sessão está protegida com senha.","sessionAuth.locked.hostSwitcherHint":"Use Local se o servidor remoto não estiver disponível.","sessionAuth.actions.cancelPasskey":"Cancelar chave de acesso","sessionAuth.actions.usePasskey":"Usar chave de acesso","sessionAuth.actions.unlockingAria":"Desbloqueando","sessionAuth.actions.unlockAria":"Desbloquear","sessionAuth.actions.trustDevice":"Confiar neste dispositivo","sessionAuth.actions.trustDeviceAria":"Confiar neste dispositivo","sessionAuth.actions.cancelPasskeySetup":"Cancelar configurações de chave de acesso","sessionAuth.actions.addPasskey":"Adicionar chave de acesso","sessionAuth.password.placeholder":"Digite senha","sessionAuth.toast.passkeyAdded":"Chave de acesso adicionada","sessionAuth.toast.passkeySetupCanceled":"Configurações de chave de acesso cancelada","desktopHostSwitcher.title":"Instância","desktopHostSwitcher.description":"Alterne entre Local e o servidor remoto do OpenChamber","desktopHostSwitcher.header.current":"Atual","desktopHostSwitcher.header.default":"Padrão","desktopHostSwitcher.header.currentColon":"Atual:","desktopHostSwitcher.header.currentDefaultColon":"Padrão atual:","desktopHostSwitcher.status.connected":"Conectado","desktopHostSwitcher.status.authRequired":"Autenticação obrigatória","desktopHostSwitcher.status.checking":"Verificando","desktopHostSwitcher.status.updateRecommended":"Atualização recomendada","desktopHostSwitcher.status.incompatible":"Incompatível","desktopHostSwitcher.status.wrongService":"Serviço incorreto","desktopHostSwitcher.status.unreachable":"Inacessível","desktopHostSwitcher.status.unknown":"Desconhecido","desktopHostSwitcher.status.ping":" · {ms}ms ping","desktopHostSwitcher.statusAria":"Status da instância","desktopHostSwitcher.sshPhase.ready":"Pronto","desktopHostSwitcher.sshPhase.error":"Erro","desktopHostSwitcher.sshPhase.reconnecting":"Reconectando","desktopHostSwitcher.sshPhase.resolvingConfig":"Resolvendo configurações","desktopHostSwitcher.sshPhase.checkingAuth":"Verificando autenticação","desktopHostSwitcher.sshPhase.connectingSsh":"Conectando SSH","desktopHostSwitcher.sshPhase.probingRemote":"Explorando remoto","desktopHostSwitcher.sshPhase.installing":"Instalando","desktopHostSwitcher.sshPhase.updating":"Atualizando","desktopHostSwitcher.sshPhase.detectingServer":"Detectando servidor","desktopHostSwitcher.sshPhase.startingServer":"Iniciando servidor","desktopHostSwitcher.sshPhase.forwardingPorts":"Redirecionando portas","desktopHostSwitcher.sshPhase.idle":"Inativo","desktopHostSwitcher.ssh.needInstancesHint":"Precisa de instâncias SSH? Gerencie-as em Configurações.","desktopHostSwitcher.ssh.instanceFallback":"Instância SSH","desktopHostSwitcher.ssh.connectingTo":"Conectando a {host}","desktopHostSwitcher.actions.refresh":"Atualizar","desktopHostSwitcher.actions.refreshInstancesAria":"Atualizar instâncias","desktopHostSwitcher.actions.remoteSsh":"SSH remoto","desktopHostSwitcher.actions.instanceActionsAria":"Ações de instância","desktopHostSwitcher.actions.edit":"Editar","desktopHostSwitcher.actions.delete":"Excluir","desktopHostSwitcher.actions.connect":"Conectar","desktopHostSwitcher.actions.defaultInstanceAria":"Instância padrão","desktopHostSwitcher.actions.setAsDefaultAria":"Definir como padrão","desktopHostSwitcher.actions.setAsDefault":"Definir como padrão","desktopHostSwitcher.actions.openInNewWindowAria":"Abrir em nova janela","desktopHostSwitcher.actions.openInNewWindow":"Abrir em nova janela","desktopHostSwitcher.actions.addInstance":"Adicionar instância","desktopHostSwitcher.actions.cancel":"Cancelar","desktopHostSwitcher.actions.save":"Salvar","desktopHostSwitcher.actions.add":"Adicionar","desktopHostSwitcher.actions.switchToLocal":"Alternar para Local","desktopHostSwitcher.actions.retry":"Tentar novamente","desktopHostSwitcher.actions.switchInstanceAria":"Alternar instância","desktopHostSwitcher.actions.switchInstance":"Alternar instância","desktopHostSwitcher.actions.switchToAria":"Alternar para {instance}","desktopHostSwitcher.field.labelPlaceholder":"Etiqueta","desktopHostSwitcher.field.labelOptionalPlaceholder":"Etiqueta (opcional)","desktopHostSwitcher.field.urlPlaceholder":"https://host:port","desktopHostSwitcher.state.limitedOnPage":"O seletor de instâncias está limitado nesta página. Use Local para recuperar.","desktopHostSwitcher.state.loading":"Carregando...","desktopHostSwitcher.state.instanceUnreachable":"Instância inacessível","desktopHostSwitcher.edit.title":"Editar instância","desktopHostSwitcher.add.title":"Adicionar instância","desktopHostSwitcher.error.failedToSave":"Não foi possível salvar","desktopHostSwitcher.error.failedToLoad":"Não foi possível carregar","desktopHostSwitcher.error.invalidUrl":"URL inválida (deve ser http/https)","desktopHostSwitcher.error.failedToOpenNewWindow":"Não foi possível abrir nova janela","desktopHostSwitcher.instance.local":"Local","desktopHostSwitcher.instance.fallback":"Instância","desktopHostSwitcher.startup.title":"Instância SSH padrão não disponível","desktopHostSwitcher.startup.connectingTo":"Conectando a {host}...","desktopHostSwitcher.startup.failed":"Não foi possível conectar com a instância padrão de SSH.","desktopHostSwitcher.toast.sshConnected":'Instância SSH "{host}" conectada',"desktopHostSwitcher.toast.sshFailedToConnect":'Não foi possível conectar com a instância SSH "{host}"',"desktopHostSwitcher.toast.instanceUnreachable":'Instância "{host}" não está disponível',"miniChat.header.newSession":"Nova sessão","miniChat.header.session":"Sessão","miniChat.header.defaultAgent":"Agente padrão","miniChat.header.noModel":"Sem modelo","miniChat.status.busy":"Executando","miniChat.status.retry":"Tentando novamente","miniChat.status.idle":"Ocioso","miniChat.actions.pin":"Fixar acima de outras janelas","miniChat.actions.unpin":"Desafixar janela","miniChat.actions.pinAria":"Fixar janela Mini Chat","miniChat.actions.unpinAria":"Desafixar janela Mini Chat","miniChat.actions.openMain":"Abrir na janela principal","miniChat.actions.openMainAria":"Abrir sessão na janela principal","miniChat.unavailable.title":"Sessão indisponível","miniChat.unavailable.description":"Não foi possível carregar esta sessão. Ela pode ter sido excluída, arquivada ou aberta a partir de outro contexto de projeto.","sessions.sidebar.session.menu.openMiniChatWindow":"Abrir na janela Mini Chat","header.actions.newMiniChat":"Nova janela Mini Chat","header.actions.newMiniChatAria":"Abrir uma nova janela Mini Chat","header.actions.openSessionMiniChat":"Abrir sessão no Mini Chat","header.actions.openSessionMiniChatAria":"Abrir a sessão atual no Mini Chat","header.windowControls.groupAria":"Controles da janela","header.windowControls.minimize":"Minimizar janela","header.windowControls.maximize":"Maximizar janela","header.windowControls.restore":"Restaurar janela","header.windowControls.close":"Fechar janela","errorBoundary.title":"Algo deu errado","errorBoundary.description":"O aplicativo encontrou um erro inesperado. Isso foi registrado para depuração.","errorBoundary.state.unknownError":"Erro desconhecido","errorBoundary.state.componentStackLabel":"Pilha de componentes:","errorBoundary.actions.errorDetails":"Detalhes do erro","errorBoundary.actions.tryAgain":"Tentar novamente","errorBoundary.actions.copy":"Copiar","errorBoundary.actions.copied":"Copiado","jsonTreeView.error.emptyJson":"Conteúdo JSON vazio","jsonTreeView.error.invalidJson":"JSON inválido","jsonTreeView.error.invalidJsonTitle":"JSON inválido","jsonTreeView.actions.expandAll":"Expandir tudo","jsonTreeView.actions.collapseAll":"Recolher tudo","numberInput.actions.decreaseAria":"Reduzir valor","numberInput.actions.increaseAria":"Aumentar valor","goToLineDialog.field.linePlaceholderShort":"Linha","goToLineDialog.field.linePlaceholder":"Número da linha","goToLineDialog.actions.go":"Ir","goToLineDialog.helper.editorUnavailable":"Editor não disponível.","goToLineDialog.helper.currentLineRange":"Linha atual: {current}. Digite um número de linha entre 1 e {max} para navegar.","goToLineDialog.helper.goToLine":"Ir à linha {line}","dialog.common.actions.close":"Fechar","filesView.toast.relativePathCopied":"Caminho relativo copiado","filesView.tree.menu.copyRelativePath":"Copiar caminho relativo","multiRun.branchSelector.placeholder.selectSourceBranch":"Selecionar branch de origem...","multiRun.branchSelector.status.loadingBranches":"Carregando branches...","multiRun.branchSelector.status.noBranchesFound":"Nenhuma branch encontrada","multiRun.branchSelector.status.notInGitRepository":"Você não está em um repositório Git.","multiRun.branchSelector.groups.localBranches":"Branches locais","multiRun.branchSelector.groups.remoteBranches":"Branches remotas","multiRun.window.actions.closeAria":"Fechar Multi-Run","multiRun.window.description":"Janela do OpenChamber Multi-Run.","voice.status.idle":"Voz pronta","voice.status.listening":"Ouvindo...","voice.status.processing":"Processando...","voice.status.speaking":"Falando...","voice.status.error":"Erro de voz","voice.status.conversationModeActiveAria":"Modo de conversa ativo","voice.action.finishAndTranscribe":"Finalizar e transcrever a entrada de voz","onboarding.common.actions.back":"Voltar","onboarding.common.copyToClipboard":"Copiar para a área de transferência","onboarding.common.status.copiedToClipboard":"Copiado para a área de transferência","onboarding.chooser.title":"Boas-vindas ao OpenChamber","onboarding.chooser.description":"Escolha como deseja se conectar para começar.","onboarding.chooser.tabs.localInstall":"Instalação local","onboarding.chooser.tabs.connectRemote":"Conectar remoto","onboarding.localSetup.title":"Configuração do OpenCode","onboarding.localSetup.description":"Instale a CLI do OpenCode para continuar.","onboarding.localSetup.dialog.selectOpencodeBinary":"Selecionar executável de opencode","onboarding.localSetup.errors.cliNotReady":"A CLI do OpenCode ainda não está pronta. Confirme que a instalação está completa e tente novamente.","onboarding.localSetup.errors.detectionFailed":"Erro de detecção","onboarding.localSetup.windows.title":"Configuração no Windows","onboarding.localSetup.windows.stepInstallWsl":"Instale o OpenCode com o comando abaixo.","onboarding.localSetup.windows.stepInstallWslSuffix":"","onboarding.localSetup.windows.stepRunInstallInWsl":"Execute o comando de instalação abaixo em um terminal do Windows.","onboarding.localSetup.windows.stepSetBinaryPath":"Se o OpenChamber não detectar o OpenCode automaticamente, defina o caminho do executável a seguir.","onboarding.localSetup.intro":"OpenCode é o coração do OpenChamber. Instale-o para começar.","onboarding.localSetup.docs.windows":"Documentação do OpenCode","onboarding.localSetup.docs.default":"Documentação do OpenCode","onboarding.localSetup.actions.checking":"Verificando...","onboarding.localSetup.actions.checkAndContinue":"Concluí a instalação, verificar e continuar","onboarding.localSetup.actions.checkNow":"Verificar agora","onboarding.localSetup.helper.checkAndContinue":"Clique para verificar se a CLI do OpenCode está disponível. Se a verificação funcionar, você entrará automaticamente na tela principal.","onboarding.localSetup.status.watching":"Aguardando OpenCode","onboarding.localSetup.status.autoContinue":"Continuaremos automaticamente assim que detectado.","onboarding.localSetup.field.alreadyInstalled":"Já está instalado? Defina o caminho da CLI do OpenCode:","onboarding.localSetup.advanced.title":"Definir um caminho personalizado do binário","onboarding.localSetup.troubleshoot.title":"Está com problemas?","onboarding.localSetup.actions.browse":"Explorar","onboarding.localSetup.actions.apply":"Aplicar","onboarding.localSetup.helper.saveAndReload":"Salve nas configurações do OpenChamber e recarregue configurações do OpenCode.","onboarding.localSetup.remotePreference":"Prefere usar um servidor remoto?","onboarding.localSetup.actions.connectRemoteServer":"Conectar a um servidor remoto →","onboarding.localSetup.windows.hintInstallInWsl":"No Windows, instale e execute o OpenCode nativamente.","onboarding.localSetup.windows.hintDetectionFailed":"Se a detecção falhar, defina um caminho nativo, como opencode.cmd ou opencode.exe.","onboarding.localSetup.hint.ensurePath":"Já está instalado? Confira se opencode está no seu PATH.","onboarding.localSetup.hint.setEnv":"Ou defina a variável de ambiente OPENCODE_BINARY.","onboarding.localSetup.hint.missingRuntime":'Se você vir "env: node: No such file or directory" ou "env: bun: No such file or directory", instale esse runtime ou confira se ele está no PATH.',"onboarding.remoteConnection.title":"Conectar a servidor remoto","onboarding.remoteConnection.titleRecovery":"Conectar a um servidor diferente","onboarding.remoteConnection.description":"Digite o endereço de um servidor do OpenChamber para conectar.","onboarding.remoteConnection.field.serverAddress":"Endereço do servidor","onboarding.remoteConnection.field.serverAddressPlaceholder":"https://your-server.example.com:4096","onboarding.remoteConnection.field.nameOptional":"Nome (opcional)","onboarding.remoteConnection.field.namePlaceholder":"Meu servidor remoto","onboarding.remoteConnection.errors.connectionTestFailed":"Não foi possível testar a conexão","onboarding.remoteConnection.errors.failedToSaveConnection":"Não foi possível salvar a conexão","onboarding.remoteConnection.status.connectedSuccessfully":"Conexão correta ({latencyMs}ms)","onboarding.remoteConnection.status.authWarning":"O servidor exige autenticação. Você ainda pode se conectar.","onboarding.remoteConnection.status.connectionFailed":"Erro de conexão","onboarding.remoteConnection.status.suggestionsUnreachable":"Sugestões: verifique o endereço do servidor, confirme se ele está em execução e revise sua conexão de rede.","onboarding.remoteConnection.status.suggestionsWrongService":"Sugestões: verifique se a URL aponta para um servidor OpenChamber ou entre em contato com o administrador do servidor.","onboarding.remoteConnection.actions.testing":"Testando…","onboarding.remoteConnection.actions.testConnection":"Testar conexão","onboarding.remoteConnection.actions.connectAndRestart":"Conectar & Reiniciar","onboarding.remoteConnection.actions.whatToDo":"O que você quer fazer?","onboarding.remoteConnection.actions.chooseDifferentServer":"Escolher outro servidor","onboarding.remoteConnection.actions.useLocalInstead":"Usar Local no lugar","onboarding.remoteConnection.probe.authMessage":"O servidor exige autenticação. Você ainda pode se conectar, mas talvez precise fornecer credenciais.","onboarding.remoteConnection.probe.updateRecommendedMessage":"Esta instância está executando uma versão diferente do OpenChamber. Você pode se conectar, mas atualize os dois apps se algo não funcionar.","onboarding.remoteConnection.probe.incompatibleMessage":"O servidor está executando OpenChamber, mas não é compatível com esta versão do app. Atualize o OpenChamber no servidor e tente novamente.","onboarding.remoteConnection.probe.wrongServiceMessage":"O servidor respondeu, mas não está executando OpenChamber. Verifique se o endereço aponta para um servidor OpenChamber.","onboarding.remoteConnection.probe.unreachableMessage":"O servidor não está disponível. Revise sua conexão de rede e verifique o endereço do servidor.","onboarding.desktopRecovery.localUnavailable.title":"OpenCode Local não disponível","onboarding.desktopRecovery.localUnavailable.description":"A CLI do OpenCode não pôde ser iniciada ou não está instalada. Instale o OpenCode ou conecte um servidor remoto no lugar dela.","onboarding.desktopRecovery.localUnavailable.retry":"Tentar novamente Local","onboarding.desktopRecovery.localUnavailable.useLocal":"Configurar Local","onboarding.desktopRecovery.noDefaultConnection.title":"Sem conexão padrão","onboarding.desktopRecovery.noDefaultConnection.description":"Sua conexão padrão salva não pôde ser encontrada. Escolha como deseja se conectar.","onboarding.desktopRecovery.remoteUnreachable.title":"Servidor remoto não disponível","onboarding.desktopRecovery.remoteUnreachable.description":'Não foi possível conectar a "{host}". Revise sua conexão de rede e verifique o endereço do servidor.',"onboarding.desktopRecovery.remoteUnreachable.retry":"Tentar novamente conexão","onboarding.desktopRecovery.incompatibleServer.title":"Servidor incompatível","onboarding.desktopRecovery.incompatibleServer.description":'O servidor em "{host}" não está executando OpenChamber. Verifique se o endereço aponta para um servidor OpenChamber.',"onboarding.desktopRecovery.remoteIncompatible.title":"Atualização do servidor necessária","onboarding.desktopRecovery.remoteIncompatible.description":'O servidor OpenChamber em "{host}" não é compatível com esta versão do app. Atualize o OpenChamber no servidor e tente novamente.',"onboarding.desktopRecovery.common.useLocal":"Usar Local","onboarding.desktopRecovery.common.useRemote":"Usar remoto","onboarding.desktopRecovery.actions.retrying":"Retentendo…","onboarding.desktopRecovery.actions.retryConnection":"Tentar novamente conexão","startup.initRecovery.title":"Falha ao iniciar","startup.initRecovery.description":"O OpenChamber não conseguiu concluir a inicialização. Verifique se o servidor está em execução e tente novamente.","startup.initRecovery.retry":"Tentar novamente","startup.initRecovery.retrying":"Tentando novamente…","onboarding.desktopRecovery.placeholders.remoteServer":"o servidor remoto","onboarding.desktopRecovery.placeholders.unknownServer":"desconhecido","vscodeLayout.title.chat":"Chat","vscodeLayout.title.newSession":"Nova sessão","vscodeLayout.title.sessions":"Sessões","vscodeLayout.title.sessionFallback":"Sessão","vscodeLayout.actions.backToSessionsAria":"Voltar para sessões","vscodeLayout.actions.newSessionAria":"Nova sessão","vscodeLayout.actions.openAgentManagerAria":"Abrir gerenciador de agentes","vscodeLayout.actions.resizeSessionsSidebarAria":"Ajustar tamanho do painel de sessões","vscodeLayout.actions.settingsAria":"Configurações","vscodeLayout.quota.title":"Limites de taxa","vscodeLayout.quota.mode.used":"Usado","vscodeLayout.quota.mode.remaining":"Restante","vscodeLayout.quota.lastUpdated":"Última atualização {time}","vscodeLayout.quota.noRateLimitsAvailable":"Não há limites de taxa disponíveis.","vscodeLayout.quota.noRateLimitsReported":"Nenhum limite de taxa foi informado.","vscodeLayout.quota.actions.rateLimitsAria":"Limites de taxa","vscodeLayout.quota.actions.showUsedAria":"Mostrar cota usada","vscodeLayout.quota.actions.showRemainingAria":"Mostrar cota restante","vscodeLayout.quota.actions.refreshAria":"Atualizar limites de taxa","updateDialog.header.updateAvailable":"Atualização disponível","updateDialog.header.updating":"Atualizando OpenChamber...","updateDialog.changelog.title":"O que há de novo","updateDialog.status.installingUpdate":"Instalando atualização...","updateDialog.status.serverRestarting":"Servidor reiniciando...","updateDialog.status.waitingForServer":"Aguardando o servidor...","updateDialog.status.autoReloadHint":"A página será recarregada automaticamente quando a atualização terminar.","updateDialog.fallback.updateViaTerminal":"Ou atualize pelo terminal:","updateDialog.actions.copyCommand":"Copiar comando","updateDialog.actions.copied":"Copiado!","updateDialog.status.downloadingPayload":"Baixando o payload de atualização...","updateDialog.actions.downloadUpdate":"Baixar atualização","updateDialog.status.downloading":"Baixando...","updateDialog.actions.restartToUpdate":"Reiniciar para atualizar","updateDialog.actions.updateNow":"Atualizar agora","updateDialog.status.updating":"Atualizando...","updateDialog.error.updateFailed":"Não foi possível atualizar","updateDialog.error.takingLonger":"A atualização está demorando mais do que o esperado. Aguarde um pouco e atualize, ou execute: openchamber update","opencodeUpdate.toast.available.title":"Atualização do OpenCode","opencodeUpdate.toast.available.description":"Versão {version} disponível.","opencodeUpdate.toast.actions.update":"Atualizar","opencodeUpdate.toast.actions.dismiss":"Dispensar","opencodeUpdate.toast.actions.reload":"Recarregar OpenCode","opencodeUpdate.toast.upgrading.title":"Atualizando OpenCode...","opencodeUpdate.toast.upgrading.description":"Mantenha o OpenChamber aberto.","opencodeUpdate.toast.updated.title":"OpenCode atualizado","opencodeUpdate.toast.updated.description":"Atualização instalada.","opencodeUpdate.toast.updated.descriptionWithVersion":"Versão {version} instalada.","opencodeUpdate.toast.failed.title":"Não foi possível atualizar o OpenCode","opencodeUpdate.toast.failed.description":"A atualização do OpenCode falhou.","opencodeUpdate.toast.reload.message":"Reiniciando OpenCode...","memoryDebugPanel.title":"Painel de depuração","memoryDebugPanel.tabs.memory":"Memória","memoryDebugPanel.tabs.streaming":"Transmissão","memoryDebugPanel.section.sessionsInMemory":"Sessões em memória","memoryDebugPanel.section.uiStreamingMetrics":"Métricas de streaming de UI","memoryDebugPanel.section.vscodeBridgeMetrics":"Métricas da ponte do VS Code","memoryDebugPanel.section.noUiSamples":"Ainda não há amostras de transmissão da UI. Inicie uma transmissão e mantenha este painel aberto.","memoryDebugPanel.section.noVscodeSamples":"Ainda não há amostras da ponte VS Code.","memoryDebugPanel.metric.totalMessages":"Mensagens totais","memoryDebugPanel.metric.cachedSessions":"Sessões em cache","memoryDebugPanel.metric.viewportWindow":"Janela de visualização","memoryDebugPanel.metric.zombieTimeout":"Timeout zombie","memoryDebugPanel.metric.githubTotalRequests":"Solicitações totais do GitHub","memoryDebugPanel.metric.metrics":"Métricas","memoryDebugPanel.metric.samples":"Amostras","memoryDebugPanel.metric.lastUpdate":"Última atualização","memoryDebugPanel.metric.uiMetrics":"Métricas de UI","memoryDebugPanel.metric.vscodeMetrics":"Métricas de VS Code","memoryDebugPanel.metric.messageListRenders":"Renderizados de MsgList","memoryDebugPanel.metric.messageListStreamRenders":"Renderizados de MsgList em streaming","memoryDebugPanel.metric.chatMessageRenders":"Renderizações de ChatMessage","memoryDebugPanel.metric.chatMessageStreamRenders":"Renderizações de ChatMessage em streaming","memoryDebugPanel.metric.chatMessageStaticDuringStream":"ChatMessage estático durante streaming","memoryDebugPanel.metric.chatMessageStaticOutsideActiveTurn":"ChatMessage estático fora do turno ativo","memoryDebugPanel.metric.messagesValue":"{count} mensagens","memoryDebugPanel.metric.minutesValue":"{count} minutos","memoryDebugPanel.metric.msgsValue":"{count} mensagens","memoryDebugPanel.metric.countValue":"contagem {value}","memoryDebugPanel.metric.avgValue":"méd. {value}","memoryDebugPanel.metric.maxValue":"máx. {value}","memoryDebugPanel.metric.totalValue":"total {value}","memoryDebugPanel.actions.logState":"Registrar status","memoryDebugPanel.actions.copyJson":"Copiar JSON","memoryDebugPanel.tooltip.logCurrentState":"Registrar o status atual de memória na console do navegador","memoryDebugPanel.streaming.copy.copied":"JSON de depuração em streaming copiado","memoryDebugPanel.streaming.copy.failed":"Não foi possível copiar JSON","memoryDebugPanel.streaming.copy.hint":"Copia exportações de métricas da UI e do VS Code em formato JSON","memoryDebugPanel.common.idle":"inativo","memoryDebugPanel.common.live":"ao vivo","memoryDebugPanel.common.notAvailable":"n/a","memoryDebugPanel.common.untitled":"Sem título","directoryTree.field.newDirectoryPlaceholder":"new_directory","textarea.resizeHandleAria":"Ajustar área de texto","sidebar.resize.leftPanelAria":"Ajustar painel esquerdo","sidebar.resize.rightPanelAria":"Ajustar painel direito","mainLayout.mobile.closeDrawerAria":"Fechar gaveta","sortableTabsStrip.aria.tabs":"Abas","openChamberLogo.aria.logo":"Logo do OpenChamber","markdownRenderer.table.actions.copyTitle":"Copiar tabela","markdownRenderer.table.actions.downloadTitle":"Baixar tabela","markdownRenderer.table.toast.downloadedAsFormat":"Tabela baixada como {format}","markdownRenderer.mermaid.actions.copyTitle":"Copiar","markdownRenderer.mermaid.actions.copySourceTitle":"Copiar origem","markdownRenderer.mermaid.actions.downloadSvgTitle":"Baixar SVG","markdownRenderer.mermaid.toast.downloadFailed":"Não foi possível baixar o diagrama","contextPanel.preview.title":"Visualização","contextPanel.preview.description":"Use Ações do projeto ou o botão Preview do terminal para abrir uma visualização.","contextPanel.preview.startPreview":"Iniciar visualização","contextPanel.preview.starting":"Iniciando...","contextPanel.preview.noDevServer":'Nenhum comando de servidor de desenvolvimento encontrado. Configure uma ação do projeto ou adicione um script "dev" ao package.json.',"contextPanel.preview.startFailed":"Falha ao iniciar o servidor de visualização.","contextPanel.preview.serverExited":"Servidor de desenvolvimento encerrou inesperadamente.","contextPanel.preview.noUrlDetected":"O servidor de desenvolvimento foi iniciado, mas nenhum URL foi detectado na saída. Abra a aba de terminal da visualização para ver os logs.","contextPanel.preview.serverExitedWithLog":`O servidor de desenvolvimento encerrou inesperadamente. Última saída:
12
12
 
13
13
  {log}`,"contextPanel.preview.noUrlDetectedWithLog":`O servidor de desenvolvimento não respondeu. Última saída:
14
14
 
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/useAppFontEffects-DEZpweZZ.js","assets/vendor-.bun-TPgXvEwq.js","assets/vendor--V65Sl9C2.css","assets/index-D9t9eCUC.js","assets/index-BDH6F8f2.css"])))=>i.map(i=>d[i]);
2
- import{c as U,j as i,R as h,_ as Nt,G as At,H as Rt}from"./vendor-.bun-TPgXvEwq.js";import"./index-D9t9eCUC.js";import{fk as Lt,u as It,dT as Ot,y as v,z as de,D as Xe,R as b,ce as St,fl as Bt,a as Tt,f as Dt,aO as zt,aQ as Wt,aR as $t,m as Gt,eK as Ht,aS as pe,H as Qe,B as vt,T as xt,aX as H,aG as Ut,bc as Ft,aV as Vt,Y as Kt,Z as Qt,_ as Xt,X as _t,W as kt,a2 as qt,a4 as Jt,a1 as Yt,$ as Zt,a0 as en,fm as tn,cW as nn,Q as rn,a7 as sn,a8 as on,a9 as an,aa as cn,ab as ln,ac as dn,ad as un,ae as fn,af as mn,ag as pn,ah as hn}from"./useAppFontEffects-DEZpweZZ.js";import{C as yn,S as wn,W as gn}from"./SessionSwitcherDropdown-DSXsR7zB.js";const xn=t=>{const e=U.c(3),{mode:r,children:s}=t;let n;return e[0]!==s||e[1]!==r?(n=i.jsx(Lt.Provider,{value:r,children:s}),e[0]=s,e[1]=r,e[2]=n):n=e[2],n},Sn=t=>{const e=typeof t=="string"?t.trim():"";if(!e)return"";const r=typeof window<"u"?window.__OPENCHAMBER_HOME__:"";if(r&&e===r)return"~";if(r&&e.startsWith(`${r}/`))return`~/${e.slice(r.length+1)}`;const s=e.split("/").filter(Boolean);return s.length<=3?e:`.../${s.slice(-3).join("/")}`},W=t=>{const e=typeof t=="string"?t.trim():"";if(!e)return"";const r=e.replace(/\\/g,"/");return r==="/"?"/":r.replace(/\/+$/,"")},bn=t=>{const e=U.c(133),{mode:r}=t,{t:s}=It(),n=v(_n),d=v(jn),a=v(In),u=de(Dn),f=Xe(kn),l=Xe(Cn),p=b(Pn),I=b(Mn),_=St(),w=Bt(n??""),y=Tt(),x=Dt(En);let B;e[0]!==n?(B=o=>n?o.worktreeMetadata.get(n)?.path??"":"",e[0]=n,e[1]=B):B=e[1];const R=v(B);let E;e[2]!==n?(E=o=>n?o.worktreeMetadata.get(n)?.branch?.trim()??null:null,e[2]=n,e[3]=E):E=e[3];const T=v(E);let c;e[4]!==n?(c=o=>n?o.getAttachment(n):void 0,e[4]=n,e[5]=c):c=e[5];const D=zt(c),L=v(Nn),[j,F]=h.useState(!1),N=typeof window<"u"?window.__OPENCHAMBER_MACOS_MAJOR__??0:0,qe=Number.isFinite(N)&&N>0,Je=typeof window<"u"&&!!window.__OPENCHAMBER_ELECTRON__&&window.__OPENCHAMBER_PLATFORM__==="win32",ue=qe?N>=26?"h-12":N<=15?"h-14":"":"";let z;e[6]!==n||e[7]!==_?(z=n?_.find(o=>o.id===n)??null:null,e[6]=n,e[7]=_,e[8]=z):z=e[8];const A=z,V=A?.worktreeMetadata??null;let he,ye;e[9]===Symbol.for("react.memo_cache_sentinel")?(he=()=>{Ht()&&pe("desktop_get_window_pinned").then(o=>{typeof o?.pinned=="boolean"&&F(o.pinned)})},ye=[],e[9]=he,e[10]=ye):(he=e[9],ye=e[10]),h.useEffect(he,ye);let we;e[11]!==d||e[12]!==r||e[13]!==A?.title||e[14]!==s?(we=A?.title?.trim()||s(d||r==="draft"?"miniChat.header.newSession":"miniChat.header.session"),e[11]=d,e[12]=r,e[13]=A?.title,e[14]=s,e[15]=we):we=e[15];const Ye=we,Ze=A?.directory??null;let ge;e[16]!==Ze?(ge=W(Ze),e[16]=Ze,e[17]=ge):ge=e[17];const xe=ge,et=R||V?.path||D?.cwd||D?.worktreeRoot||"";let Se;e[18]!==et?(Se=W(et),e[18]=et,e[19]=Se):Se=e[19];const be=Se;let ve;e[20]!==u?(ve=W(u),e[20]=u,e[21]=ve):ve=e[21];const k=be||xe||L||ve;let _e;e[22]!==k?(_e=Sn(k),e[22]=k,e[23]=_e):_e=e[23];const Ct=_e;let je;e[24]!==xe||e[25]!==be?(je=o=>{const m=W(be||xe||"");if(!m)return null;for(const P of o.availableWorktreesByProject.values()){const S=P.find(O=>W(O.path)===m)?.branch?.trim();if(S)return S}return null},e[24]=xe,e[25]=be,e[26]=je):je=e[26];const tt=v(je);let Ie,De;e[27]!==x||e[28]!==k||e[29]!==y.git?(Ie=()=>{k&&x(k,y.git).catch(An)},De=[x,k,y.git],e[27]=x,e[28]=k,e[29]=y.git,e[30]=Ie,e[31]=De):(Ie=e[30],De=e[31]),h.useEffect(Ie,De),V?.projectDirectory,D?.worktreeRoot;let nt;e:{const o=V?.projectDirectory??D?.worktreeRoot??null;let m;e[32]!==o?(m=W(o),e[32]=o,e[33]=m):m=e[33];const g=m||k;if(!g){nt=null;break e}let S;e[34]!==g||e[35]!==f?(S=f.map(Rn).filter(O=>O.normalizedPath&&(O.normalizedPath===g||g.startsWith(`${O.normalizedPath}/`))).sort(Ln)[0]??null,e[34]=g,e[35]=f,e[36]=S):S=e[36],nt=S}const Pt=nt;let ke;e:{const o=Pt??l;if(!o){ke=Ct||"OpenChamber";break e}let m;e[37]!==o.label?(m=o.label?.trim(),e[37]=o.label,e[38]=m):m=e[38];const P=m;if(P){ke=P;break e}let g;e[39]!==o.path?(g=o.path.split(/[\\/]/).filter(Boolean).at(-1)??o.path,e[39]=o.path,e[40]=g):g=e[40],ke=g}const rt=ke,st=Wt(k||null);let Ce;e[41]!==tt||e[42]!==st||e[43]!==V?.branch||e[44]!==D?.branch||e[45]!==T?(Ce=st||T||V?.branch?.trim()||D?.branch?.trim()||tt,e[41]=tt,e[42]=st,e[43]=V?.branch,e[44]=D?.branch,e[45]=T,e[46]=Ce):Ce=e[46];const ot=Ce,Pe=ot&&ot!=="HEAD"?ot:null;A?.summary;const it=A?.summary;let Me;e[47]!==it?(Me=$t(it),e[47]=it,e[48]=Me):Me=e[48];const at=Me;let Ee;e[49]!==at?(Ee=at??{additions:0,deletions:0},e[49]=at,e[50]=Ee):Ee=e[50];const K=Ee,ct=K.additions>0||K.deletions>0;let Ne;e[51]!==p?(Ne=p(),e[51]=p,e[52]=Ne):Ne=e[52];const bt=Ne;let lt;e:{for(let o=w.length-1;o>=0;o=o-1,o){const m=w[o];if(m.role!=="assistant"||typeof m.providerID!="string"||typeof m.modelID!="string")continue;const g=I.find(S=>S.id===m.providerID)?.models.find(S=>S.id===m.modelID);if(g){lt=g;break e}}lt=void 0}const Mt=lt,Ae=bt?.limit?bt:Mt,Q=Ae&&typeof Ae.limit=="object"&&Ae.limit!==null?Ae.limit:null,$=Q&&typeof Q.context=="number"?Q.context:0,fe=Q&&typeof Q.output=="number"?Q.output:0;let Re;e:{if(!n||w.length===0){Re=null;break e}let o,m;for(let me=w.length-1;me>=0;me=me-1,me){const gt=w[me];if(gt.role!=="assistant")continue;const G=gt.tokens;if(!G)continue;if(G.input+G.output+G.reasoning+(G.cache?.read??0)+(G.cache?.write??0)>0){o=G,m=gt.id;break}}if(!o){Re=null;break e}const P=o.input+o.output+o.reasoning+(o.cache?.read??0)+(o.cache?.write??0),g=$>0?$:2e5;let S;e[53]!==$||e[54]!==P?(S=$>0?Math.round(P/$*100):0,e[53]=$,e[54]=P,e[55]=S):S=e[55];const O=S;let Ve;e[56]!==o.output||e[57]!==fe?(Ve=fe>0?Math.round(o.output/fe*100):void 0,e[56]=o.output,e[57]=fe,e[58]=Ve):Ve=e[58];const ht=Ve,yt=$||0,wt=fe||void 0;let Ke;e[59]!==m||e[60]!==ht||e[61]!==O||e[62]!==yt||e[63]!==wt||e[64]!==g||e[65]!==P?(Ke={totalTokens:P,percentage:O,contextLimit:yt,outputLimit:wt,normalizedOutput:ht,thresholdLimit:g,lastMessageId:m},e[59]=m,e[60]=ht,e[61]=O,e[62]=yt,e[63]=wt,e[64]=g,e[65]=P,e[66]=Ke):Ke=e[66],Re=Ke}const C=Re,[M,dt]=h.useState(null);let Le;e[67]===Symbol.for("react.memo_cache_sentinel")?(Le={WebkitAppRegion:"drag"},e[67]=Le):Le=e[67];const Et=Le;let Oe;e[68]===Symbol.for("react.memo_cache_sentinel")?(Oe={WebkitAppRegion:"no-drag"},e[68]=Oe):Oe=e[68];const ut=Oe;let Be,Te;e[69]!==C||e[70]!==n?(Be=()=>{if(!n){dt(On);return}if(C&&C.totalTokens>0){dt(o=>o&&o.totalTokens===C.totalTokens&&o.percentage===C.percentage&&o.contextLimit===C.contextLimit&&(o.outputLimit??0)===(C.outputLimit??0)&&(o.normalizedOutput??0)===(C.normalizedOutput??0)&&o.thresholdLimit===C.thresholdLimit&&o.lastMessageId===C.lastMessageId?o:C);return}dt(Bn)},Te=[C,n],e[69]=C,e[70]=n,e[71]=Be,e[72]=Te):(Be=e[71],Te=e[72]),h.useEffect(Be,Te);const ft=M&&M.contextLimit>0?Math.min(999,M.totalTokens/M.contextLimit*100):0;let ze;e[73]!==j?(ze=()=>{const o=!j;F(o),pe("desktop_set_window_pinned",{pinned:o}).catch(()=>{F(!o)})},e[73]=j,e[74]=ze):ze=e[74];const mt=ze;let We;e[75]!==u||e[76]!==n||e[77]!==a||e[78]!==k||e[79]!==A?(We=()=>{const o=n?{sessionId:n,directory:A?.directory??u??""}:{mode:"draft",directory:k||u||"",projectId:a};pe("desktop_focus_main_window",o).then(Tn)},e[75]=u,e[76]=n,e[77]=a,e[78]=k,e[79]=A,e[80]=We):We=e[80];const pt=We;let $e;e[81]===Symbol.for("react.memo_cache_sentinel")?($e=Gt("flex items-center gap-3 border-b border-[var(--interactive-border)] bg-sidebar pr-3",qe?"pl-[5.5rem]":"pl-3",Je?"h-12":ue||"min-h-14"),e[81]=$e):$e=e[81];let X;e[82]!==s?(X=s("sessions.switcher.openAria"),e[82]=s,e[83]=X):X=e[83];let q;e[84]!==Ye?(q=i.jsx("span",{className:"truncate typography-ui-label text-[14px] font-normal leading-tight text-foreground max-w-full",children:Ye}),e[84]=Ye,e[85]=q):q=e[85];let J;e[86]!==rt?(J=i.jsx("span",{className:"truncate",children:rt}),e[86]=rt,e[87]=J):J=e[87];let Y;e[88]!==Pe?(Y=Pe?i.jsxs("span",{className:"inline-flex min-w-0 items-center gap-0.5",children:[i.jsx(Qe,{name:"git-branch",className:"h-3 w-3 flex-shrink-0 text-muted-foreground/70"}),i.jsx("span",{className:"truncate",children:Pe})]}):null,e[88]=Pe,e[89]=Y):Y=e[89];let Z;e[90]!==K||e[91]!==ct?(Z=ct?i.jsxs("span",{className:"inline-flex flex-shrink-0 items-center gap-0 text-[0.92em]",children:[i.jsxs("span",{className:"text-status-success/80",children:["+",K.additions]}),i.jsx("span",{className:"text-muted-foreground/60",children:"/"}),i.jsxs("span",{className:"text-status-error/65",children:["-",K.deletions]})]}):null,e[90]=K,e[91]=ct,e[92]=Z):Z=e[92];let ee;e[93]!==J||e[94]!==Y||e[95]!==Z?(ee=i.jsxs("span",{className:"flex min-w-0 max-w-full items-center gap-1.5 truncate typography-micro text-[10.5px] font-normal leading-tight text-muted-foreground/75",children:[J,Y,Z]}),e[93]=J,e[94]=Y,e[95]=Z,e[96]=ee):ee=e[96];let te;e[97]!==X||e[98]!==q||e[99]!==ee?(te=i.jsx(wn,{children:i.jsxs("button",{type:"button","aria-label":X,style:ut,className:"flex min-w-0 max-w-full flex-col items-start rounded-md px-1 py-0.5 text-left transition-colors hover:bg-interactive-hover/60 focus-visible:outline-none focus-visible:bg-interactive-hover/60",children:[q,ee]})}),e[97]=X,e[98]=q,e[99]=ee,e[100]=te):te=e[100];let Ge;e[101]===Symbol.for("react.memo_cache_sentinel")?(Ge=i.jsx("div",{className:"min-w-0 flex-1"}),e[101]=Ge):Ge=e[101];let ne;e[102]!==ft||e[103]!==M?(ne=M&&M.totalTokens>0?i.jsx(yn,{totalTokens:M.totalTokens,percentage:ft,colorPercentage:M.percentage,contextLimit:M.contextLimit,outputLimit:M.outputLimit??0,className:"h-9 shrink-0 pl-1 pr-1 typography-ui-label",valueClassName:"font-semibold leading-none",hideIcon:!0,showPercentIcon:!0,percentIconClassName:"h-5 w-5"}):null,e[102]=ft,e[103]=M,e[104]=ne):ne=e[104];let re;e[105]!==j||e[106]!==s?(re=s(j?"miniChat.actions.unpinAria":"miniChat.actions.pinAria"),e[105]=j,e[106]=s,e[107]=re):re=e[107];let se;e[108]!==j||e[109]!==s?(se=s(j?"miniChat.actions.unpin":"miniChat.actions.pin"),e[108]=j,e[109]=s,e[110]=se):se=e[110];let oe;e[111]!==j?(oe=j?i.jsx(Qe,{name:"pushpin-2-fill",className:"h-4 w-4"}):i.jsx(Qe,{name:"pushpin-2",className:"h-4 w-4"}),e[111]=j,e[112]=oe):oe=e[112];let ie;e[113]!==mt||e[114]!==re||e[115]!==se||e[116]!==oe?(ie=i.jsx(vt,{type:"button",variant:"ghost",size:"icon",onClick:mt,"aria-label":re,title:se,style:ut,children:oe}),e[113]=mt,e[114]=re,e[115]=se,e[116]=oe,e[117]=ie):ie=e[117];let ae;e[118]!==s?(ae=s("miniChat.actions.openMainAria"),e[118]=s,e[119]=ae):ae=e[119];let ce;e[120]!==s?(ce=s("miniChat.actions.openMain"),e[120]=s,e[121]=ce):ce=e[121];let He;e[122]===Symbol.for("react.memo_cache_sentinel")?(He=i.jsx(Qe,{name:"external-link",className:"h-4 w-4"}),e[122]=He):He=e[122];let le;e[123]!==pt||e[124]!==ae||e[125]!==ce?(le=i.jsx(vt,{type:"button",variant:"ghost",size:"icon",onClick:pt,"aria-label":ae,title:ce,style:ut,children:He}),e[123]=pt,e[124]=ae,e[125]=ce,e[126]=le):le=e[126];let Ue;e[127]===Symbol.for("react.memo_cache_sentinel")?(Ue=i.jsx(gn,{visible:Je}),e[127]=Ue):Ue=e[127];let Fe;return e[128]!==te||e[129]!==ne||e[130]!==ie||e[131]!==le?(Fe=i.jsxs("header",{className:$e,style:Et,children:[te,Ge,ne,ie,le,Ue]}),e[128]=te,e[129]=ne,e[130]=ie,e[131]=le,e[132]=Fe):Fe=e[132],Fe},vn=t=>{const e=U.c(9),{mode:r,autoOpenDraft:s,unavailable:n}=t,d=s===void 0?!1:s,a=n===void 0?!1:n,{t:u}=It();let f;e[0]!==r?(f=i.jsx(bn,{mode:r}),e[0]=r,e[1]=f):f=e[1];let l;e[2]!==d||e[3]!==u||e[4]!==a?(l=i.jsx("main",{className:"min-h-0 flex-1",children:a?i.jsx("div",{className:"flex h-full items-center justify-center px-6 text-center typography-ui-label text-muted-foreground",children:i.jsxs("div",{className:"max-w-sm rounded-lg border border-[var(--interactive-border)] bg-[var(--surface-elevated)] px-4 py-3",children:[i.jsx("div",{className:"font-medium text-foreground",children:u("miniChat.unavailable.title")}),i.jsx("div",{className:"mt-1 typography-small text-muted-foreground",children:u("miniChat.unavailable.description")})]})}):i.jsx(xn,{mode:"mini-chat",children:i.jsx(Ot,{autoOpenDraft:d})})}),e[2]=d,e[3]=u,e[4]=a,e[5]=l):l=e[5];let p;return e[6]!==f||e[7]!==l?(p=i.jsxs("div",{className:"flex h-full min-h-0 flex-col bg-background text-foreground",children:[f,l]}),e[6]=f,e[7]=l,e[8]=p):p=e[8],p};function _n(t){return t.currentSessionId}function jn(t){return!!t.newSessionDraft?.open}function In(t){return t.newSessionDraft?.selectedProjectId??null}function Dn(t){return t.currentDirectory}function kn(t){return t.projects}function Cn(t){return t.getActiveProject()}function Pn(t){return t.getCurrentModel}function Mn(t){return t.providers}function En(t){return t.ensureStatus}function Nn(t){return t.newSessionDraft?.open?W(t.newSessionDraft.bootstrapPendingDirectory??t.newSessionDraft.directoryOverride??""):""}function An(){}function Rn(t){return{...t,normalizedPath:W(t.path)}}function Ln(t,e){return e.path.length-t.path.length}function On(t){return t===null?t:null}function Bn(t){return t===null?t:null}function Tn(t){return t?.focused===!0?pe("desktop_close_current_window"):null}const jt=()=>{document.querySelector('textarea[data-chat-input="true"]')?.focus()},zn=()=>{const t=xt(n=>n.shortcutOverrides),e=de(n=>n.currentDirectory),r=Xe(n=>n.getActiveProject()),s=v(n=>n.openNewSessionDraft);h.useEffect(()=>{const n=a=>Vt(a,t),d=a=>{if(H(a,n("focus_input"))){a.preventDefault(),jt();return}if(Ut()&&H(a,n("new_mini_chat"))){a.preventDefault(),pe("desktop_open_draft_mini_chat_window",{directory:e||r?.path||"",projectId:r?.id??null})?.catch(l=>{console.warn("[mini-chat-shortcuts] failed to open draft mini chat window",l)});return}if(H(a,n("new_chat"))){a.preventDefault(),s({selectedProjectId:r?.id??null,directoryOverride:e||r?.path||null,preserveDirectoryOverride:!!(e||r?.path)}),jt();return}if(H(a,n("open_model_selector"))){a.preventDefault();const{isModelSelectorOpen:l,setModelSelectorOpen:p}=xt.getState();p(!l);return}if(H(a,n("cycle_thinking_variant"))){const l=b.getState();if(l.getCurrentModelVariants().length===0)return;a.preventDefault(),l.cycleCurrentVariant();const I=b.getState().currentVariant,_=v.getState().currentSessionId,w=b.getState().currentAgentName,y=b.getState().currentProviderId,x=b.getState().currentModelId;_&&w&&y&&x&&Ft.getState().saveAgentModelVariantForSession(_,w,y,x,I);return}const u=H(a,n("cycle_favorite_model_forward")),f=H(a,n("cycle_favorite_model_backward"));if(u||f){const{favoriteModels:l,addRecentModel:p}=xt.getState();if(l.length===0)return;a.preventDefault();const{currentProviderId:I,currentModelId:_,setProvider:w,setModel:y}=b.getState(),x=l.findIndex(E=>E.providerID===I&&E.modelID===_),R=l[(x+(u?1:-1)+l.length)%l.length];w(R.providerID),y(R.modelID),p(R.providerID,R.modelID)}};return window.addEventListener("keydown",d),()=>window.removeEventListener("keydown",d)},[r?.id,r?.path,e,s,t])},Wn="openchamber:mini-chat-presence",$n=()=>{const t=typeof window<"u"?new URLSearchParams(window.location.search):new URLSearchParams,e=t.get("mode")==="session"?"session":"draft",r=t.get("sessionId")?.trim()||null,s=t.get("directory")?.trim()||null,n=t.get("projectId")?.trim()||null;return{mode:e,sessionId:r,directory:s,projectId:n}},Gn=({config:t})=>{const e=St(),r=de(c=>c.currentDirectory),s=de(c=>c.setDirectory),n=Xe(c=>c.projects),d=v(c=>c.currentSessionId),a=v(c=>!!c.newSessionDraft?.open),u=v(c=>c.newSessionDraft?.open?c.newSessionDraft.bootstrapPendingDirectory??c.newSessionDraft.directoryOverride??"":""),f=v(c=>c.setCurrentSession),l=v(c=>c.openNewSessionDraft),p=b(c=>c.initializeApp),I=b(c=>c.isInitialized),_=b(c=>c.isConnected),w=b(c=>c.loadProviders),y=b(c=>c.loadAgents),x=b(c=>c.providers.length),B=b(c=>c.agents.length),R=nn();h.useEffect(()=>{p()},[p]),h.useEffect(()=>{if(I)return;let c=!0,D=0;const L=window.setInterval(()=>{if(c){if(D+=1,D>10){window.clearInterval(L);return}b.getState().isInitialized||b.getState().initializeApp()}},1e3);return()=>{c=!1,window.clearInterval(L)}},[I]);const E=h.useRef(!1);h.useEffect(()=>{if(!E.current&&t.mode==="session"&&t.directory){if(r===t.directory){E.current=!0;return}s(t.directory,{showOverlay:!1}),E.current=!0}},[t.directory,t.mode,r,s]),h.useEffect(()=>{t.mode!=="draft"||!a||d||!u||r===u||s(u,{showOverlay:!1})},[t.mode,r,d,u,a,s]),h.useEffect(()=>{_&&(x===0&&w({source:"electronMiniChat:recovery"}),B===0&&y({source:"electronMiniChat:recovery"}))},[B,_,y,w,x]);const T=h.useRef(!1);return h.useEffect(()=>{if(T.current||t.mode!=="session"||!t.sessionId)return;if(d===t.sessionId){T.current=!0;return}if(d){T.current=!0;return}const c=e.find(L=>L.id===t.sessionId);if(!c){R.ensureSessionRenderable(t.sessionId);return}const D=c.directory??t.directory;f(t.sessionId,D),T.current=!0},[t,d,e,f,R]),h.useEffect(()=>{t.mode!=="draft"||a||d||l({selectedProjectId:t.projectId,directoryOverride:t.directory,preserveDirectoryOverride:!!t.directory})},[t,d,a,l]),h.useEffect(()=>{if(n.length===0)return;let c=!1;return(async()=>{const L=new Map,j=[];await Promise.all(n.map(async F=>{const N=F.path.replace(/\\/g,"/").replace(/\/+$/,"");if(N)try{if(!(Dt.getState().directories.get(N)?.isGitRepo??await Nt(()=>import("./useAppFontEffects-DEZpweZZ.js").then(z=>z.fy),__vite__mapDeps([0,1,2,3,4])).then(z=>z.checkIsGitRepository(N))))return;const ue=await rn({id:F.id,path:N});if(c||ue.length===0)return;L.set(N,ue),j.push(...ue)}catch{}})),!c&&v.setState({availableWorktrees:j,availableWorktreesByProject:L})})(),()=>{c=!0}},[n]),null},Hn=()=>{const t=U.c(4),e=v(Xn),r=de(qn);let s,n;return t[0]!==r||t[1]!==e?(s=()=>{if(!e||!r||typeof BroadcastChannel>"u")return;const d=new BroadcastChannel(Wn),a=l=>{d.postMessage({type:"mini-chat-session-presence",sessionId:e,directory:r,viewed:l})};a(!0);const u=window.setInterval(()=>a(!0),5e3),f=()=>a(!1);return window.addEventListener("beforeunload",f),()=>{window.clearInterval(u),window.removeEventListener("beforeunload",f),a(!1),d.close()}},n=[r,e],t[0]=r,t[1]=e,t[2]=s,t[3]=n):(s=t[2],n=t[3]),h.useEffect(s,n),null},Un=t=>{const e=U.c(6),r=St(),s=v(Jn),[n,d]=h.useState(!1);let a,u;return e[0]!==t.mode||e[1]!==t.sessionId||e[2]!==s||e[3]!==r?(a=()=>{if(t.mode!=="session"||!t.sessionId||s===t.sessionId){d(!1);return}if(r.some(l=>l.id===t.sessionId)){d(!1);return}const f=window.setTimeout(()=>d(!0),5e3);return()=>window.clearTimeout(f)},u=[t.mode,t.sessionId,s,r],e[0]=t.mode,e[1]=t.sessionId,e[2]=s,e[3]=r,e[4]=a,e[5]=u):(a=e[4],u=e[5]),h.useEffect(a,u),n};function Fn(t){const e=U.c(15),{apis:r}=t;let s;e[0]===Symbol.for("react.memo_cache_sentinel")?(s=$n(),e[0]=s):s=e[0];const n=s,d=de(Kn);let a,u;e[1]!==d?(a=()=>{_t.setDirectory(d||n.directory||void 0)},u=[n.directory,d],e[1]=d,e[2]=a,e[3]=u):(a=e[2],u=e[3]),h.useEffect(a,u);let f,l;e[4]!==r?(f=()=>(kt(r),Vn),l=[r],e[4]=r,e[5]=f,e[6]=l):(f=e[5],l=e[6]),h.useEffect(f,l),Kt(),zn();let p;e[7]===Symbol.for("react.memo_cache_sentinel")?(p={enabled:!0},e[7]=p):p=e[7],Qt(p),Xt();let I;e[8]===Symbol.for("react.memo_cache_sentinel")?(I=_t.getSdkClient(),e[8]=I):I=e[8];const _=d||n.directory||"";let w;e[9]===Symbol.for("react.memo_cache_sentinel")?(w=i.jsx(qt,{delayDuration:300,skipDelayDuration:150,children:i.jsxs("div",{className:"h-full text-foreground bg-background",children:[i.jsx(Qn,{config:n}),i.jsx(Jt,{})]})}),e[9]=w):w=e[9];let y;e[10]!==r?(y=i.jsx(Yt,{apis:r,children:w}),e[10]=r,e[11]=y):y=e[11];let x;return e[12]!==y||e[13]!==_?(x=i.jsx(Zt,{children:i.jsx(en,{sdk:I,directory:_,children:y})}),e[12]=y,e[13]=_,e[14]=x):x=e[14],x}function Vn(){return kt(null)}function Kn(t){return t.currentDirectory}const Qn=t=>{const e=U.c(11),{config:r}=t,s=Un(r);let n;e[0]!==r?(n=i.jsx(Gn,{config:r}),e[0]=r,e[1]=n):n=e[1];let d,a;e[2]===Symbol.for("react.memo_cache_sentinel")?(d=i.jsx(Hn,{}),a=i.jsx(tn,{embeddedBackgroundWorkEnabled:!0}),e[2]=d,e[3]=a):(d=e[2],a=e[3]);const u=r.mode==="draft";let f;e[4]!==r.mode||e[5]!==s||e[6]!==u?(f=i.jsx(vn,{mode:r.mode,autoOpenDraft:u,unavailable:s}),e[4]=r.mode,e[5]=s,e[6]=u,e[7]=f):f=e[7];let l;return e[8]!==n||e[9]!==f?(l=i.jsxs(i.Fragment,{children:[n,d,a,f]}),e[8]=n,e[9]=f,e[10]=l):l=e[10],l};function Xn(t){return t.currentSessionId}function qn(t){return t.currentDirectory}function Jn(t){return t.currentSessionId}const Yn=()=>{ln(),dn().then(()=>{Promise.all([un(),fn()]).catch(t=>{console.error("[mini-chat-main] settings init failed:",t)}),mn(),pn(),hn()}).catch(t=>{console.error("[mini-chat-main] appearance init failed:",t)})};function or(t){Yn();const e=document.getElementById("root");if(!e)throw new Error("Root element not found");At.createRoot(e).render(i.jsx(Rt.StrictMode,{children:i.jsx(sn,{children:i.jsx(on,{children:i.jsx(an,{children:i.jsx(cn,{children:i.jsx(Fn,{apis:t})})})})})}))}export{or as renderElectronMiniChatApp};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/useAppFontEffects-hYm-4PtP.js","assets/vendor-.bun-TPgXvEwq.js","assets/vendor--V65Sl9C2.css","assets/index-D9t9eCUC.js","assets/index-BDH6F8f2.css"])))=>i.map(i=>d[i]);
2
+ import{c as U,j as i,R as h,_ as Nt,G as At,H as Rt}from"./vendor-.bun-TPgXvEwq.js";import"./index-D9t9eCUC.js";import{fk as Lt,u as It,dT as Ot,y as v,z as de,D as Xe,R as b,ce as St,fl as Bt,a as Tt,f as Dt,aO as zt,aQ as Wt,aR as $t,m as Gt,eK as Ht,aS as pe,H as Qe,B as vt,T as xt,aX as H,aG as Ut,bc as Ft,aV as Vt,Y as Kt,Z as Qt,_ as Xt,X as _t,W as kt,a2 as qt,a4 as Jt,a1 as Yt,$ as Zt,a0 as en,fm as tn,cW as nn,Q as rn,a7 as sn,a8 as on,a9 as an,aa as cn,ab as ln,ac as dn,ad as un,ae as fn,af as mn,ag as pn,ah as hn}from"./useAppFontEffects-hYm-4PtP.js";import{C as yn,S as wn,W as gn}from"./SessionSwitcherDropdown-BMN9gaXo.js";const xn=t=>{const e=U.c(3),{mode:r,children:s}=t;let n;return e[0]!==s||e[1]!==r?(n=i.jsx(Lt.Provider,{value:r,children:s}),e[0]=s,e[1]=r,e[2]=n):n=e[2],n},Sn=t=>{const e=typeof t=="string"?t.trim():"";if(!e)return"";const r=typeof window<"u"?window.__OPENCHAMBER_HOME__:"";if(r&&e===r)return"~";if(r&&e.startsWith(`${r}/`))return`~/${e.slice(r.length+1)}`;const s=e.split("/").filter(Boolean);return s.length<=3?e:`.../${s.slice(-3).join("/")}`},W=t=>{const e=typeof t=="string"?t.trim():"";if(!e)return"";const r=e.replace(/\\/g,"/");return r==="/"?"/":r.replace(/\/+$/,"")},bn=t=>{const e=U.c(133),{mode:r}=t,{t:s}=It(),n=v(_n),d=v(jn),a=v(In),u=de(Dn),f=Xe(kn),l=Xe(Cn),p=b(Pn),I=b(Mn),_=St(),w=Bt(n??""),y=Tt(),x=Dt(En);let B;e[0]!==n?(B=o=>n?o.worktreeMetadata.get(n)?.path??"":"",e[0]=n,e[1]=B):B=e[1];const R=v(B);let E;e[2]!==n?(E=o=>n?o.worktreeMetadata.get(n)?.branch?.trim()??null:null,e[2]=n,e[3]=E):E=e[3];const T=v(E);let c;e[4]!==n?(c=o=>n?o.getAttachment(n):void 0,e[4]=n,e[5]=c):c=e[5];const D=zt(c),L=v(Nn),[j,F]=h.useState(!1),N=typeof window<"u"?window.__OPENCHAMBER_MACOS_MAJOR__??0:0,qe=Number.isFinite(N)&&N>0,Je=typeof window<"u"&&!!window.__OPENCHAMBER_ELECTRON__&&window.__OPENCHAMBER_PLATFORM__==="win32",ue=qe?N>=26?"h-12":N<=15?"h-14":"":"";let z;e[6]!==n||e[7]!==_?(z=n?_.find(o=>o.id===n)??null:null,e[6]=n,e[7]=_,e[8]=z):z=e[8];const A=z,V=A?.worktreeMetadata??null;let he,ye;e[9]===Symbol.for("react.memo_cache_sentinel")?(he=()=>{Ht()&&pe("desktop_get_window_pinned").then(o=>{typeof o?.pinned=="boolean"&&F(o.pinned)})},ye=[],e[9]=he,e[10]=ye):(he=e[9],ye=e[10]),h.useEffect(he,ye);let we;e[11]!==d||e[12]!==r||e[13]!==A?.title||e[14]!==s?(we=A?.title?.trim()||s(d||r==="draft"?"miniChat.header.newSession":"miniChat.header.session"),e[11]=d,e[12]=r,e[13]=A?.title,e[14]=s,e[15]=we):we=e[15];const Ye=we,Ze=A?.directory??null;let ge;e[16]!==Ze?(ge=W(Ze),e[16]=Ze,e[17]=ge):ge=e[17];const xe=ge,et=R||V?.path||D?.cwd||D?.worktreeRoot||"";let Se;e[18]!==et?(Se=W(et),e[18]=et,e[19]=Se):Se=e[19];const be=Se;let ve;e[20]!==u?(ve=W(u),e[20]=u,e[21]=ve):ve=e[21];const k=be||xe||L||ve;let _e;e[22]!==k?(_e=Sn(k),e[22]=k,e[23]=_e):_e=e[23];const Ct=_e;let je;e[24]!==xe||e[25]!==be?(je=o=>{const m=W(be||xe||"");if(!m)return null;for(const P of o.availableWorktreesByProject.values()){const S=P.find(O=>W(O.path)===m)?.branch?.trim();if(S)return S}return null},e[24]=xe,e[25]=be,e[26]=je):je=e[26];const tt=v(je);let Ie,De;e[27]!==x||e[28]!==k||e[29]!==y.git?(Ie=()=>{k&&x(k,y.git).catch(An)},De=[x,k,y.git],e[27]=x,e[28]=k,e[29]=y.git,e[30]=Ie,e[31]=De):(Ie=e[30],De=e[31]),h.useEffect(Ie,De),V?.projectDirectory,D?.worktreeRoot;let nt;e:{const o=V?.projectDirectory??D?.worktreeRoot??null;let m;e[32]!==o?(m=W(o),e[32]=o,e[33]=m):m=e[33];const g=m||k;if(!g){nt=null;break e}let S;e[34]!==g||e[35]!==f?(S=f.map(Rn).filter(O=>O.normalizedPath&&(O.normalizedPath===g||g.startsWith(`${O.normalizedPath}/`))).sort(Ln)[0]??null,e[34]=g,e[35]=f,e[36]=S):S=e[36],nt=S}const Pt=nt;let ke;e:{const o=Pt??l;if(!o){ke=Ct||"OpenChamber";break e}let m;e[37]!==o.label?(m=o.label?.trim(),e[37]=o.label,e[38]=m):m=e[38];const P=m;if(P){ke=P;break e}let g;e[39]!==o.path?(g=o.path.split(/[\\/]/).filter(Boolean).at(-1)??o.path,e[39]=o.path,e[40]=g):g=e[40],ke=g}const rt=ke,st=Wt(k||null);let Ce;e[41]!==tt||e[42]!==st||e[43]!==V?.branch||e[44]!==D?.branch||e[45]!==T?(Ce=st||T||V?.branch?.trim()||D?.branch?.trim()||tt,e[41]=tt,e[42]=st,e[43]=V?.branch,e[44]=D?.branch,e[45]=T,e[46]=Ce):Ce=e[46];const ot=Ce,Pe=ot&&ot!=="HEAD"?ot:null;A?.summary;const it=A?.summary;let Me;e[47]!==it?(Me=$t(it),e[47]=it,e[48]=Me):Me=e[48];const at=Me;let Ee;e[49]!==at?(Ee=at??{additions:0,deletions:0},e[49]=at,e[50]=Ee):Ee=e[50];const K=Ee,ct=K.additions>0||K.deletions>0;let Ne;e[51]!==p?(Ne=p(),e[51]=p,e[52]=Ne):Ne=e[52];const bt=Ne;let lt;e:{for(let o=w.length-1;o>=0;o=o-1,o){const m=w[o];if(m.role!=="assistant"||typeof m.providerID!="string"||typeof m.modelID!="string")continue;const g=I.find(S=>S.id===m.providerID)?.models.find(S=>S.id===m.modelID);if(g){lt=g;break e}}lt=void 0}const Mt=lt,Ae=bt?.limit?bt:Mt,Q=Ae&&typeof Ae.limit=="object"&&Ae.limit!==null?Ae.limit:null,$=Q&&typeof Q.context=="number"?Q.context:0,fe=Q&&typeof Q.output=="number"?Q.output:0;let Re;e:{if(!n||w.length===0){Re=null;break e}let o,m;for(let me=w.length-1;me>=0;me=me-1,me){const gt=w[me];if(gt.role!=="assistant")continue;const G=gt.tokens;if(!G)continue;if(G.input+G.output+G.reasoning+(G.cache?.read??0)+(G.cache?.write??0)>0){o=G,m=gt.id;break}}if(!o){Re=null;break e}const P=o.input+o.output+o.reasoning+(o.cache?.read??0)+(o.cache?.write??0),g=$>0?$:2e5;let S;e[53]!==$||e[54]!==P?(S=$>0?Math.round(P/$*100):0,e[53]=$,e[54]=P,e[55]=S):S=e[55];const O=S;let Ve;e[56]!==o.output||e[57]!==fe?(Ve=fe>0?Math.round(o.output/fe*100):void 0,e[56]=o.output,e[57]=fe,e[58]=Ve):Ve=e[58];const ht=Ve,yt=$||0,wt=fe||void 0;let Ke;e[59]!==m||e[60]!==ht||e[61]!==O||e[62]!==yt||e[63]!==wt||e[64]!==g||e[65]!==P?(Ke={totalTokens:P,percentage:O,contextLimit:yt,outputLimit:wt,normalizedOutput:ht,thresholdLimit:g,lastMessageId:m},e[59]=m,e[60]=ht,e[61]=O,e[62]=yt,e[63]=wt,e[64]=g,e[65]=P,e[66]=Ke):Ke=e[66],Re=Ke}const C=Re,[M,dt]=h.useState(null);let Le;e[67]===Symbol.for("react.memo_cache_sentinel")?(Le={WebkitAppRegion:"drag"},e[67]=Le):Le=e[67];const Et=Le;let Oe;e[68]===Symbol.for("react.memo_cache_sentinel")?(Oe={WebkitAppRegion:"no-drag"},e[68]=Oe):Oe=e[68];const ut=Oe;let Be,Te;e[69]!==C||e[70]!==n?(Be=()=>{if(!n){dt(On);return}if(C&&C.totalTokens>0){dt(o=>o&&o.totalTokens===C.totalTokens&&o.percentage===C.percentage&&o.contextLimit===C.contextLimit&&(o.outputLimit??0)===(C.outputLimit??0)&&(o.normalizedOutput??0)===(C.normalizedOutput??0)&&o.thresholdLimit===C.thresholdLimit&&o.lastMessageId===C.lastMessageId?o:C);return}dt(Bn)},Te=[C,n],e[69]=C,e[70]=n,e[71]=Be,e[72]=Te):(Be=e[71],Te=e[72]),h.useEffect(Be,Te);const ft=M&&M.contextLimit>0?Math.min(999,M.totalTokens/M.contextLimit*100):0;let ze;e[73]!==j?(ze=()=>{const o=!j;F(o),pe("desktop_set_window_pinned",{pinned:o}).catch(()=>{F(!o)})},e[73]=j,e[74]=ze):ze=e[74];const mt=ze;let We;e[75]!==u||e[76]!==n||e[77]!==a||e[78]!==k||e[79]!==A?(We=()=>{const o=n?{sessionId:n,directory:A?.directory??u??""}:{mode:"draft",directory:k||u||"",projectId:a};pe("desktop_focus_main_window",o).then(Tn)},e[75]=u,e[76]=n,e[77]=a,e[78]=k,e[79]=A,e[80]=We):We=e[80];const pt=We;let $e;e[81]===Symbol.for("react.memo_cache_sentinel")?($e=Gt("flex items-center gap-3 border-b border-[var(--interactive-border)] bg-sidebar pr-3",qe?"pl-[5.5rem]":"pl-3",Je?"h-12":ue||"min-h-14"),e[81]=$e):$e=e[81];let X;e[82]!==s?(X=s("sessions.switcher.openAria"),e[82]=s,e[83]=X):X=e[83];let q;e[84]!==Ye?(q=i.jsx("span",{className:"truncate typography-ui-label text-[14px] font-normal leading-tight text-foreground max-w-full",children:Ye}),e[84]=Ye,e[85]=q):q=e[85];let J;e[86]!==rt?(J=i.jsx("span",{className:"truncate",children:rt}),e[86]=rt,e[87]=J):J=e[87];let Y;e[88]!==Pe?(Y=Pe?i.jsxs("span",{className:"inline-flex min-w-0 items-center gap-0.5",children:[i.jsx(Qe,{name:"git-branch",className:"h-3 w-3 flex-shrink-0 text-muted-foreground/70"}),i.jsx("span",{className:"truncate",children:Pe})]}):null,e[88]=Pe,e[89]=Y):Y=e[89];let Z;e[90]!==K||e[91]!==ct?(Z=ct?i.jsxs("span",{className:"inline-flex flex-shrink-0 items-center gap-0 text-[0.92em]",children:[i.jsxs("span",{className:"text-status-success/80",children:["+",K.additions]}),i.jsx("span",{className:"text-muted-foreground/60",children:"/"}),i.jsxs("span",{className:"text-status-error/65",children:["-",K.deletions]})]}):null,e[90]=K,e[91]=ct,e[92]=Z):Z=e[92];let ee;e[93]!==J||e[94]!==Y||e[95]!==Z?(ee=i.jsxs("span",{className:"flex min-w-0 max-w-full items-center gap-1.5 truncate typography-micro text-[10.5px] font-normal leading-tight text-muted-foreground/75",children:[J,Y,Z]}),e[93]=J,e[94]=Y,e[95]=Z,e[96]=ee):ee=e[96];let te;e[97]!==X||e[98]!==q||e[99]!==ee?(te=i.jsx(wn,{children:i.jsxs("button",{type:"button","aria-label":X,style:ut,className:"flex min-w-0 max-w-full flex-col items-start rounded-md px-1 py-0.5 text-left transition-colors hover:bg-interactive-hover/60 focus-visible:outline-none focus-visible:bg-interactive-hover/60",children:[q,ee]})}),e[97]=X,e[98]=q,e[99]=ee,e[100]=te):te=e[100];let Ge;e[101]===Symbol.for("react.memo_cache_sentinel")?(Ge=i.jsx("div",{className:"min-w-0 flex-1"}),e[101]=Ge):Ge=e[101];let ne;e[102]!==ft||e[103]!==M?(ne=M&&M.totalTokens>0?i.jsx(yn,{totalTokens:M.totalTokens,percentage:ft,colorPercentage:M.percentage,contextLimit:M.contextLimit,outputLimit:M.outputLimit??0,className:"h-9 shrink-0 pl-1 pr-1 typography-ui-label",valueClassName:"font-semibold leading-none",hideIcon:!0,showPercentIcon:!0,percentIconClassName:"h-5 w-5"}):null,e[102]=ft,e[103]=M,e[104]=ne):ne=e[104];let re;e[105]!==j||e[106]!==s?(re=s(j?"miniChat.actions.unpinAria":"miniChat.actions.pinAria"),e[105]=j,e[106]=s,e[107]=re):re=e[107];let se;e[108]!==j||e[109]!==s?(se=s(j?"miniChat.actions.unpin":"miniChat.actions.pin"),e[108]=j,e[109]=s,e[110]=se):se=e[110];let oe;e[111]!==j?(oe=j?i.jsx(Qe,{name:"pushpin-2-fill",className:"h-4 w-4"}):i.jsx(Qe,{name:"pushpin-2",className:"h-4 w-4"}),e[111]=j,e[112]=oe):oe=e[112];let ie;e[113]!==mt||e[114]!==re||e[115]!==se||e[116]!==oe?(ie=i.jsx(vt,{type:"button",variant:"ghost",size:"icon",onClick:mt,"aria-label":re,title:se,style:ut,children:oe}),e[113]=mt,e[114]=re,e[115]=se,e[116]=oe,e[117]=ie):ie=e[117];let ae;e[118]!==s?(ae=s("miniChat.actions.openMainAria"),e[118]=s,e[119]=ae):ae=e[119];let ce;e[120]!==s?(ce=s("miniChat.actions.openMain"),e[120]=s,e[121]=ce):ce=e[121];let He;e[122]===Symbol.for("react.memo_cache_sentinel")?(He=i.jsx(Qe,{name:"external-link",className:"h-4 w-4"}),e[122]=He):He=e[122];let le;e[123]!==pt||e[124]!==ae||e[125]!==ce?(le=i.jsx(vt,{type:"button",variant:"ghost",size:"icon",onClick:pt,"aria-label":ae,title:ce,style:ut,children:He}),e[123]=pt,e[124]=ae,e[125]=ce,e[126]=le):le=e[126];let Ue;e[127]===Symbol.for("react.memo_cache_sentinel")?(Ue=i.jsx(gn,{visible:Je}),e[127]=Ue):Ue=e[127];let Fe;return e[128]!==te||e[129]!==ne||e[130]!==ie||e[131]!==le?(Fe=i.jsxs("header",{className:$e,style:Et,children:[te,Ge,ne,ie,le,Ue]}),e[128]=te,e[129]=ne,e[130]=ie,e[131]=le,e[132]=Fe):Fe=e[132],Fe},vn=t=>{const e=U.c(9),{mode:r,autoOpenDraft:s,unavailable:n}=t,d=s===void 0?!1:s,a=n===void 0?!1:n,{t:u}=It();let f;e[0]!==r?(f=i.jsx(bn,{mode:r}),e[0]=r,e[1]=f):f=e[1];let l;e[2]!==d||e[3]!==u||e[4]!==a?(l=i.jsx("main",{className:"min-h-0 flex-1",children:a?i.jsx("div",{className:"flex h-full items-center justify-center px-6 text-center typography-ui-label text-muted-foreground",children:i.jsxs("div",{className:"max-w-sm rounded-lg border border-[var(--interactive-border)] bg-[var(--surface-elevated)] px-4 py-3",children:[i.jsx("div",{className:"font-medium text-foreground",children:u("miniChat.unavailable.title")}),i.jsx("div",{className:"mt-1 typography-small text-muted-foreground",children:u("miniChat.unavailable.description")})]})}):i.jsx(xn,{mode:"mini-chat",children:i.jsx(Ot,{autoOpenDraft:d})})}),e[2]=d,e[3]=u,e[4]=a,e[5]=l):l=e[5];let p;return e[6]!==f||e[7]!==l?(p=i.jsxs("div",{className:"flex h-full min-h-0 flex-col bg-background text-foreground",children:[f,l]}),e[6]=f,e[7]=l,e[8]=p):p=e[8],p};function _n(t){return t.currentSessionId}function jn(t){return!!t.newSessionDraft?.open}function In(t){return t.newSessionDraft?.selectedProjectId??null}function Dn(t){return t.currentDirectory}function kn(t){return t.projects}function Cn(t){return t.getActiveProject()}function Pn(t){return t.getCurrentModel}function Mn(t){return t.providers}function En(t){return t.ensureStatus}function Nn(t){return t.newSessionDraft?.open?W(t.newSessionDraft.bootstrapPendingDirectory??t.newSessionDraft.directoryOverride??""):""}function An(){}function Rn(t){return{...t,normalizedPath:W(t.path)}}function Ln(t,e){return e.path.length-t.path.length}function On(t){return t===null?t:null}function Bn(t){return t===null?t:null}function Tn(t){return t?.focused===!0?pe("desktop_close_current_window"):null}const jt=()=>{document.querySelector('textarea[data-chat-input="true"]')?.focus()},zn=()=>{const t=xt(n=>n.shortcutOverrides),e=de(n=>n.currentDirectory),r=Xe(n=>n.getActiveProject()),s=v(n=>n.openNewSessionDraft);h.useEffect(()=>{const n=a=>Vt(a,t),d=a=>{if(H(a,n("focus_input"))){a.preventDefault(),jt();return}if(Ut()&&H(a,n("new_mini_chat"))){a.preventDefault(),pe("desktop_open_draft_mini_chat_window",{directory:e||r?.path||"",projectId:r?.id??null})?.catch(l=>{console.warn("[mini-chat-shortcuts] failed to open draft mini chat window",l)});return}if(H(a,n("new_chat"))){a.preventDefault(),s({selectedProjectId:r?.id??null,directoryOverride:e||r?.path||null,preserveDirectoryOverride:!!(e||r?.path)}),jt();return}if(H(a,n("open_model_selector"))){a.preventDefault();const{isModelSelectorOpen:l,setModelSelectorOpen:p}=xt.getState();p(!l);return}if(H(a,n("cycle_thinking_variant"))){const l=b.getState();if(l.getCurrentModelVariants().length===0)return;a.preventDefault(),l.cycleCurrentVariant();const I=b.getState().currentVariant,_=v.getState().currentSessionId,w=b.getState().currentAgentName,y=b.getState().currentProviderId,x=b.getState().currentModelId;_&&w&&y&&x&&Ft.getState().saveAgentModelVariantForSession(_,w,y,x,I);return}const u=H(a,n("cycle_favorite_model_forward")),f=H(a,n("cycle_favorite_model_backward"));if(u||f){const{favoriteModels:l,addRecentModel:p}=xt.getState();if(l.length===0)return;a.preventDefault();const{currentProviderId:I,currentModelId:_,setProvider:w,setModel:y}=b.getState(),x=l.findIndex(E=>E.providerID===I&&E.modelID===_),R=l[(x+(u?1:-1)+l.length)%l.length];w(R.providerID),y(R.modelID),p(R.providerID,R.modelID)}};return window.addEventListener("keydown",d),()=>window.removeEventListener("keydown",d)},[r?.id,r?.path,e,s,t])},Wn="openchamber:mini-chat-presence",$n=()=>{const t=typeof window<"u"?new URLSearchParams(window.location.search):new URLSearchParams,e=t.get("mode")==="session"?"session":"draft",r=t.get("sessionId")?.trim()||null,s=t.get("directory")?.trim()||null,n=t.get("projectId")?.trim()||null;return{mode:e,sessionId:r,directory:s,projectId:n}},Gn=({config:t})=>{const e=St(),r=de(c=>c.currentDirectory),s=de(c=>c.setDirectory),n=Xe(c=>c.projects),d=v(c=>c.currentSessionId),a=v(c=>!!c.newSessionDraft?.open),u=v(c=>c.newSessionDraft?.open?c.newSessionDraft.bootstrapPendingDirectory??c.newSessionDraft.directoryOverride??"":""),f=v(c=>c.setCurrentSession),l=v(c=>c.openNewSessionDraft),p=b(c=>c.initializeApp),I=b(c=>c.isInitialized),_=b(c=>c.isConnected),w=b(c=>c.loadProviders),y=b(c=>c.loadAgents),x=b(c=>c.providers.length),B=b(c=>c.agents.length),R=nn();h.useEffect(()=>{p()},[p]),h.useEffect(()=>{if(I)return;let c=!0,D=0;const L=window.setInterval(()=>{if(c){if(D+=1,D>10){window.clearInterval(L);return}b.getState().isInitialized||b.getState().initializeApp()}},1e3);return()=>{c=!1,window.clearInterval(L)}},[I]);const E=h.useRef(!1);h.useEffect(()=>{if(!E.current&&t.mode==="session"&&t.directory){if(r===t.directory){E.current=!0;return}s(t.directory,{showOverlay:!1}),E.current=!0}},[t.directory,t.mode,r,s]),h.useEffect(()=>{t.mode!=="draft"||!a||d||!u||r===u||s(u,{showOverlay:!1})},[t.mode,r,d,u,a,s]),h.useEffect(()=>{_&&(x===0&&w({source:"electronMiniChat:recovery"}),B===0&&y({source:"electronMiniChat:recovery"}))},[B,_,y,w,x]);const T=h.useRef(!1);return h.useEffect(()=>{if(T.current||t.mode!=="session"||!t.sessionId)return;if(d===t.sessionId){T.current=!0;return}if(d){T.current=!0;return}const c=e.find(L=>L.id===t.sessionId);if(!c){R.ensureSessionRenderable(t.sessionId);return}const D=c.directory??t.directory;f(t.sessionId,D),T.current=!0},[t,d,e,f,R]),h.useEffect(()=>{t.mode!=="draft"||a||d||l({selectedProjectId:t.projectId,directoryOverride:t.directory,preserveDirectoryOverride:!!t.directory})},[t,d,a,l]),h.useEffect(()=>{if(n.length===0)return;let c=!1;return(async()=>{const L=new Map,j=[];await Promise.all(n.map(async F=>{const N=F.path.replace(/\\/g,"/").replace(/\/+$/,"");if(N)try{if(!(Dt.getState().directories.get(N)?.isGitRepo??await Nt(()=>import("./useAppFontEffects-hYm-4PtP.js").then(z=>z.fy),__vite__mapDeps([0,1,2,3,4])).then(z=>z.checkIsGitRepository(N))))return;const ue=await rn({id:F.id,path:N});if(c||ue.length===0)return;L.set(N,ue),j.push(...ue)}catch{}})),!c&&v.setState({availableWorktrees:j,availableWorktreesByProject:L})})(),()=>{c=!0}},[n]),null},Hn=()=>{const t=U.c(4),e=v(Xn),r=de(qn);let s,n;return t[0]!==r||t[1]!==e?(s=()=>{if(!e||!r||typeof BroadcastChannel>"u")return;const d=new BroadcastChannel(Wn),a=l=>{d.postMessage({type:"mini-chat-session-presence",sessionId:e,directory:r,viewed:l})};a(!0);const u=window.setInterval(()=>a(!0),5e3),f=()=>a(!1);return window.addEventListener("beforeunload",f),()=>{window.clearInterval(u),window.removeEventListener("beforeunload",f),a(!1),d.close()}},n=[r,e],t[0]=r,t[1]=e,t[2]=s,t[3]=n):(s=t[2],n=t[3]),h.useEffect(s,n),null},Un=t=>{const e=U.c(6),r=St(),s=v(Jn),[n,d]=h.useState(!1);let a,u;return e[0]!==t.mode||e[1]!==t.sessionId||e[2]!==s||e[3]!==r?(a=()=>{if(t.mode!=="session"||!t.sessionId||s===t.sessionId){d(!1);return}if(r.some(l=>l.id===t.sessionId)){d(!1);return}const f=window.setTimeout(()=>d(!0),5e3);return()=>window.clearTimeout(f)},u=[t.mode,t.sessionId,s,r],e[0]=t.mode,e[1]=t.sessionId,e[2]=s,e[3]=r,e[4]=a,e[5]=u):(a=e[4],u=e[5]),h.useEffect(a,u),n};function Fn(t){const e=U.c(15),{apis:r}=t;let s;e[0]===Symbol.for("react.memo_cache_sentinel")?(s=$n(),e[0]=s):s=e[0];const n=s,d=de(Kn);let a,u;e[1]!==d?(a=()=>{_t.setDirectory(d||n.directory||void 0)},u=[n.directory,d],e[1]=d,e[2]=a,e[3]=u):(a=e[2],u=e[3]),h.useEffect(a,u);let f,l;e[4]!==r?(f=()=>(kt(r),Vn),l=[r],e[4]=r,e[5]=f,e[6]=l):(f=e[5],l=e[6]),h.useEffect(f,l),Kt(),zn();let p;e[7]===Symbol.for("react.memo_cache_sentinel")?(p={enabled:!0},e[7]=p):p=e[7],Qt(p),Xt();let I;e[8]===Symbol.for("react.memo_cache_sentinel")?(I=_t.getSdkClient(),e[8]=I):I=e[8];const _=d||n.directory||"";let w;e[9]===Symbol.for("react.memo_cache_sentinel")?(w=i.jsx(qt,{delayDuration:300,skipDelayDuration:150,children:i.jsxs("div",{className:"h-full text-foreground bg-background",children:[i.jsx(Qn,{config:n}),i.jsx(Jt,{})]})}),e[9]=w):w=e[9];let y;e[10]!==r?(y=i.jsx(Yt,{apis:r,children:w}),e[10]=r,e[11]=y):y=e[11];let x;return e[12]!==y||e[13]!==_?(x=i.jsx(Zt,{children:i.jsx(en,{sdk:I,directory:_,children:y})}),e[12]=y,e[13]=_,e[14]=x):x=e[14],x}function Vn(){return kt(null)}function Kn(t){return t.currentDirectory}const Qn=t=>{const e=U.c(11),{config:r}=t,s=Un(r);let n;e[0]!==r?(n=i.jsx(Gn,{config:r}),e[0]=r,e[1]=n):n=e[1];let d,a;e[2]===Symbol.for("react.memo_cache_sentinel")?(d=i.jsx(Hn,{}),a=i.jsx(tn,{embeddedBackgroundWorkEnabled:!0}),e[2]=d,e[3]=a):(d=e[2],a=e[3]);const u=r.mode==="draft";let f;e[4]!==r.mode||e[5]!==s||e[6]!==u?(f=i.jsx(vn,{mode:r.mode,autoOpenDraft:u,unavailable:s}),e[4]=r.mode,e[5]=s,e[6]=u,e[7]=f):f=e[7];let l;return e[8]!==n||e[9]!==f?(l=i.jsxs(i.Fragment,{children:[n,d,a,f]}),e[8]=n,e[9]=f,e[10]=l):l=e[10],l};function Xn(t){return t.currentSessionId}function qn(t){return t.currentDirectory}function Jn(t){return t.currentSessionId}const Yn=()=>{ln(),dn().then(()=>{Promise.all([un(),fn()]).catch(t=>{console.error("[mini-chat-main] settings init failed:",t)}),mn(),pn(),hn()}).catch(t=>{console.error("[mini-chat-main] appearance init failed:",t)})};function or(t){Yn();const e=document.getElementById("root");if(!e)throw new Error("Root element not found");At.createRoot(e).render(i.jsx(Rt.StrictMode,{children:i.jsx(sn,{children:i.jsx(on,{children:i.jsx(an,{children:i.jsx(cn,{children:i.jsx(Fn,{apis:t})})})})})}))}export{or as renderElectronMiniChatApp};