{
  "cfg.section.output.title": "Saída",
  "cfg.output.verbosity": "verbosidade",
  "cfg.output.effort_routing": "roteamento de esforço",
  "cfg.output.about": "Reduz os tokens que o modelo gera: verbosity steering corta preâmbulo/repetição; effort routing (opt-in) baixa o esforço de raciocínio em prompts triviais.",
  "cfg.output.change_hint": "Altere em runtime: /config output concise | minimal | full ; /config output effort on|off",
  "cfg.output.set_ok": "verbosidade: %s -> %s",
  "cfg.output.set_noop": "verbosidade já está em %s",
  "cfg.output.set_invalid": "ajuste de saída inválido: %s",
  "cfg.output.set_valid": "válidos: full | concise | minimal ; effort on|off",
  "cfg.output.persist_hint": "defina CHATCLI_OUTPUT_VERBOSITY=%s no .env para persistir",
  "cfg.output.effort_invalid": "valor de esforço inválido: %s (use on|off)",
  "cfg.output.effort_set": "roteamento de esforço %s",
  "cfg.output.usage_header": "Uso - /config output",
  "cfg.output.usage_status": "mostra status",
  "cfg.output.usage_concise": "corta cerimônia, mantém substância (padrão)",
  "cfg.output.usage_minimal": "menos tokens corretos possível",
  "cfg.output.usage_full": "sem steering",
  "cfg.output.usage_effort": "baixa esforço em prompts triviais (opt-in)",
  "cfg.output.usage_note": "Mudanças valem imediatamente; defina CHATCLI_OUTPUT_VERBOSITY / CHATCLI_OUTPUT_EFFORT_ROUTING no .env para padrão permanente.",
  "complete.config.output_concise": "corta cerimônia, mantém substância (padrão)",
  "complete.config.output_minimal": "menos tokens corretos possível",
  "complete.config.output_full": "sem steering (verbosidade natural)",
  "complete.config.output_effort": "roteamento de esforço por complexidade (opt-in)",
  "complete.config.output_effort_on": "ativa downgrade de esforço em prompts triviais",
  "complete.config.output_effort_off": "desativa roteamento de esforço",
  "chat.envelope.compression_saved": "%s economizado",
  "cfg.section.compression.title": "Compressão",
  "cfg.compression.mode": "modo",
  "cfg.compression.saved": "economizado",
  "cfg.compression.ccr_store": "store CCR",
  "cfg.compression.ccr_stale": "%d expirados",
  "cfg.compression.ccr_oldest": "mais antigo %s",
  "cfg.compression.prune_ok": "curados %d itens (%s liberados) — %d restantes",
  "cfg.compression.prune_none": "store CCR já está limpo — %d itens",
  "cfg.compression.calls": "chamadas",
  "cfg.compression.about": "Compressão reversível e ciente de conteúdo da saída volumosa de ferramentas (search/log/diff/JSON). Os originais continuam recuperáveis com @recall.",
  "cfg.compression.change_hint": "Altere em runtime: /config compression lossy | lossless | off",
  "cfg.compression.unavailable": "camada de compressão indisponível nesta sessão",
  "cfg.compression.set_ok": "modo de compressão: %s -> %s",
  "cfg.compression.set_noop": "modo de compressão já está em %s",
  "cfg.compression.set_invalid": "modo de compressão inválido: %s",
  "cfg.compression.set_valid": "modos válidos: off | lossless | lossy",
  "cfg.compression.persist_hint": "defina CHATCLI_COMPRESSION=%s no .env para persistir",
  "cfg.compression.usage_header": "Uso - /config compression",
  "cfg.compression.usage_status": "mostra status e economia",
  "cfg.compression.usage_lossy": "redução total, reversível via @recall",
  "cfg.compression.usage_lossless": "apenas reduções lossless",
  "cfg.compression.usage_off": "desativa a compressão",
  "cfg.compression.usage_stats": "resumo de economia por estratégia",
  "cfg.compression.usage_prune": "curar agora (remove expirados por TTL + evict até o teto)",
  "cfg.compression.usage_note": "Mudanças de modo valem imediatamente; defina CHATCLI_COMPRESSION no .env para um padrão permanente.",
  "complete.config.compression_lossy": "redução total, reversível via @recall",
  "complete.config.compression_lossless": "apenas reduções lossless (sem descartar)",
  "complete.config.compression_off": "desativa a compressão",
  "complete.config.compression_stats": "resumo de economia da sessão",
  "complete.config.compression_prune": "curar o store CCR agora (TTL + teto de tamanho)",
  "complete.root.provider": "Troca o provedor de LLM ativo (lista navegável)",
  "complete.provider.item": "provedor disponível",
  "complete.provider.current": "provedor atual",
  "cli.provider.current": "Provedor ativo: %s. Disponíveis:",
  "cli.provider.hint": "Use /provider <nome> para trocar (ou apenas /provider para a lista).",
  "cli.provider.unknown": "Provedor desconhecido: %s. Use /provider para listar os disponíveis.",
  "palette.ui.run_bare": "executar sem argumentos",
  "palette.cat.core": "Essenciais",
  "palette.cat.model": "Modelo",
  "palette.cat.session": "Sessão",
  "palette.cat.context": "Contexto",
  "palette.cat.agent": "Agente & Build",
  "palette.cat.quality": "Qualidade",
  "palette.cat.integrations": "Integrações",
  "palette.cat.scheduler": "Agendador",
  "palette.cat.system": "Sistema",
  "palette.ui.title": "Paleta de Comandos",
  "palette.ui.filter_prompt": "Filtrar:",
  "palette.ui.no_match": "Nenhum comando corresponde",
  "palette.ui.hint": "↑/↓ mover · enter selecionar · → entrar · ⌫/esc voltar · tab inserir · ctrl+c cancelar",
  "palette.ui.more": "+%d mais…",
  "palette.ui.mode_badge": "modo",
  "complete.root.menu": "Abre a paleta de comandos interativa",
  "welcome.title": "Aproxime seu Terminal da Inteligência Artificial 🕵️‍♂️✨",
  "welcome.tip.title": "Você Sabia?",
  "welcome.footer.help.cmd": "/help",
  "welcome.footer.help.desc": "para todos os comandos",
  "welcome.footer.exit.cmd": "/exit",
  "welcome.footer.exit.desc": "para sair",
  "welcome.footer.switch_model.cmd": "/switch --model",
  "welcome.footer.switch_model.desc": "para trocar modelo",
  "welcome.current_model": "🤖 Você está conversando com %s (%s)",
  "welcome.auth_hint": "Use /auth login anthropic | openai-codex | github-copilot para autenticar.",
  "tip.add_file": "Use '@file <caminho>' para adicionar o conteúdo de um arquivo ao contexto.",
  "tip.git_context": "Use '@git' para incluir o status e os commits recentes do seu repositório.",
  "tip.exec_command": "Precisa executar um comando? Use '@command <seu_comando>'.",
  "tip.switch_provider": "Alterne entre provedores de IA a qualquer momento com o comando '/switch'.",
  "tip.new_session": "Limpe o histórico e comece uma nova conversa com '/newsession'.",
  "tip.view_config": "Verifique sua configuração atual (sem segredos!) com o comando '/config'.",
  "tip.cancel_request": "Pressione Ctrl+C uma vez para cancelar uma resposta da IA sem sair do chat.",
  "tip.agent_mode": "Use o modo agente com '/agent <tarefa>' para que a IA execute comandos por você.",
  "tip.agent_toggle_view": "No Modo Agente, use 'p' para alternar entre Visão COMPACTA e COMPLETA.",
  "tip.agent_output_actions": "No Modo Agente, use 'vN' para abrir a saída completa no pager e 'wN' para salvar em arquivo.",
  "tip.agent_last_result": "O 'Último Resultado' do Modo Agente aparece sempre no rodapé, sem precisar rolar a tela.",
  "version.label": "Versão: %s (commit: %s)",
  "help.header.title": "Guia Completo de Comandos do ChatCLI",
  "help.header.subtitle1": "Aqui está um mapa exaustivo de todos os comandos, subcomandos, flags e opções disponíveis.",
  "help.header.subtitle2": "Use-os para controlar a aplicação, adicionar contexto ou automatizar tarefas.",
  "help.section.general": "Controle Geral",
  "help.command.help": "Mostra esta tela de ajuda completa.",
  "help.command.exit": "Encerra a aplicação.",
  "help.command.newsession": "Limpa o histórico da conversa atual e inicia uma nova sessão (alias de /session new).",
  "help.command.version": "Mostra a versão, commit hash, data de build e verifica atualizações.",
  "help.section.config": "Configuração e Provedores de IA",
  "help.command.switch": "Abre o menu interativo para trocar o provedor de LLM (ex.: OPENAI, CLAUDEAI).",
  "help.command.switch_model": "Muda o modelo do provedor atual (ex.: gpt-4o-mini, grok-4, gpt-5... etc).",
  "help.command.model": "Atalho para /switch --model: muda apenas o modelo do provedor atual.",
  "help.command.maxtokens": "Atalho para /switch --max-tokens: limita os tokens de saída (0 = padrão do provedor).",
  "help.command.switch_model_example": "(Muda para o modelo GPT-4o Mini na OpenAI)",
  "help.command.switch_max_tokens": "Define o máximo de tokens para as próximas respostas (0 para padrão).",
  "help.command.switch_realm": "Atualiza o 'realm/tenant' (apenas para StackSpot).",
  "help.command.switch_agent_id": "Atualiza o 'Agent ID' (apenas para StackSpot).",
  "help.command.config": "Exibe a configuração atual (provedor, modelo, chaves, etc.).",
  "help.command.reload": "Recarrega as variáveis ou configurações do seu arquivo .env em tempo real.",
  "help.section.context": "Adicionando Contexto aos Prompts",
  "help.command.file": "Adiciona o conteúdo de um arquivo ou diretório ao prompt.",
  "help.command.file_mode_full": "(Padrão) Envia o conteúdo completo, truncando se necessário.",
  "help.command.file_mode_chunked": "Para projetos grandes, divide em pedaços (chunks).",
  "help.command.file_mode_summary": "Envia apenas a estrutura de arquivos, sem o conteúdo.",
  "help.command.file_mode_smart": "A IA seleciona os arquivos mais relevantes para sua pergunta.",
  "help.command.file_mode_example": "Ex: @file --mode=smart ./src Como funciona o login?",
  "help.command.git": "Adiciona status, branch, remotos e commits recentes do Git.",
  "help.command.history": "Adiciona os últimos comandos do seu histórico de shell (bash/zsh/fish).",
  "help.command.env": "Adiciona as variáveis de ambiente (valores sensíveis são ocultados).",
  "help.section.chunks": "Gerenciamento de Arquivos Grandes (Chunks)",
  "help.command.nextchunk": "Envia o próximo pedaço (chunk) do projeto para a IA.",
  "help.command.retry": "Tenta reenviar o último chunk que falhou.",
  "help.command.retryall": "Tenta reenviar todos os chunks que falharam.",
  "help.command.skipchunk": "Pula um chunk com erro e continua para o próximo.",
  "help.section.exec": "Execução de Comandos no Terminal",
  "help.command.command": "Executa um comando e adiciona sua saída ao prompt.",
  "help.command.command_example": "(Executa 'ls -la' e anexa o resultado)",
  "help.command.command_i": "Executa um comando interativo (ex.: vim) sem adicionar saída ao prompt.",
  "help.command.command_ai": "Executa um comando e envia a saída DIRETAMENTE para a IA.",
  "help.command.command_ai_example": "(Envia as diferenças do git para análise da IA)",
  "help.command.command_ai_context": "Igual ao anterior, mas adiciona um contexto/pergunta.",
  "help.command.command_ai_context_example": "Ex: @command --ai cat err.log > resuma este erro",
  "help.section.agent": "Modo Agente (Execução de Tarefas)",
  "help.section.coder": "Modo Coder (Engenharia de Software)",
  "help.command.coder": "Inicia o modo engenheiro de software (usa ferramentas/plugins via <tool_call>).",
  "help.command.coder_example": "Exemplo: /coder corrigir testes quebrando e aplicar refactor mínimo",
  "help.command.coder_notes": "Observações:",
  "help.command.coder_note_plugin": "• Requer o plugin @coder instalado (ver: /plugin list).",
  "help.command.coder_note_auto_tools": "• Executa ferramentas automaticamente (loop ReAct).",
  "help.command.agent": "Pede à IA para planejar e executar comandos para resolver uma tarefa.",
  "help.command.run": "Um atalho (alias) para o comando /agent.",
  "help.command.agent_example": "Ex: /agent liste todos os arquivos .go e conte suas linhas",
  "help.command.agent_inside": "Dentro do modo agente:",
  "help.command.agent_exec_n": "Executa um comando específico (ex: 1 para o primeiro).",
  "help.command.agent_exec_all": "Executa TODOS os comandos sugeridos em sequência.",
  "help.command.agent_edit": "Edita o comando N antes de executar (ex: e1).",
  "help.command.agent_dry_run": "Simula (dry-run) o comando N (ex: t2).",
  "help.command.agent_continue": "Pede continuação à IA com a saída do comando N (ex: c2).",
  "help.command.agent_pre_context": "Adiciona contexto ao comando N ANTES de executar (ex: pc1).",
  "help.command.agent_post_context": "Adiciona contexto à SAÍDA do comando N (ex: ac1).",
  "help.command.agent_view": "Abre a saída completa do comando N no pager (less -R/more).",
  "help.command.agent_save": "Salva a saída do comando N em um arquivo temporário.",
  "help.command.agent_toggle_plan": "Alterna a visualização do plano: COMPACTO ↔ COMPLETO.",
  "help.command.agent_redraw": "Atualiza a tela (clear + redraw).",
  "help.command.agent_quit": "Sai do modo agente.",
  "help.command.agent_notes": "Observações:",
  "help.command.agent_last_result": "• Último Resultado sempre ancorado ao rodapé da tela (preview).",
  "help.command.agent_compact_plan": "• Plano COMPACTO mostra 1 linha por comando (status + descrição + 1ª linha do código).",
  "help.command.agent_full_plan": "• Plano COMPLETO mostra cartão com descrição, tipo, risco e bloco de código formatado.",
  "help.section.sessions": "Gerenciamento de Sessões",
  "help.command.session_save": "Salva a sessão atual com um nome (ex.: /session save minha-conversa).",
  "help.command.session_load": "Carrega uma sessão salva (ex.: /session load minha-conversa).",
  "help.command.session_list": "Lista todas as sessões salvas.",
  "help.command.session_delete": "Deleta uma sessão salva (ex.: /session delete minha-conversa).",
  "help.command.session_new": "Inicia uma nova sessão limpa (alias de /newsession).",
  "help.section.oneshot": "Modo Não-Interativo (One-Shot, para scripts e pipes)",
  "help.command.oneshot_p": "Executa um prompt uma única vez e sai.",
  "help.command.oneshot_p_example": "Ex: chatcli -p \"Explique este repositório.\"",
  "help.command.oneshot_prompt": "Alias de -p.",
  "help.command.oneshot_provider": "Sobrescreve o provedor (ex.: --provider OPENAI).",
  "help.command.oneshot_model": "Sobrescreve o modelo (ex.: --model gpt-4o-mini).",
  "help.command.oneshot_agent_id": "Sobrescreve o agente (apenas para stackSpot)-(ex.: --agent-id 1290XSBD00384).",
  "help.command.oneshot_max_tokens": "Sobrescreve o máximo de tokens para a resposta.",
  "help.command.oneshot_timeout": "Timeout da chamada para o comando (ex.: --timeout 5m, padrão: 5m).",
  "help.command.oneshot_no_anim": "Desabilita animações (útil em scripts/CI).",
  "help.command.oneshot_auto_exec": "No modo agente one-shot, executa o primeiro comando sugerido automaticamente se for seguro.",
  "help.command.oneshot_pipes": "Uso com pipes (stdin): Envia dados via pipe (ex.: git diff | chatcli -p \"Resuma as mudanças.\").",
  "help.section.tips": "Dicas e Atalhos Gerais",
  "help.command.tips_cancel": "Cancelamento (Ctrl+C): Pressione Ctrl+C uma vez durante o 'Pensando...' para cancelar.",
  "help.command.tips_exit": "Saída Rápida (Ctrl+D): Pressione Ctrl+D no prompt vazio para sair do ChatCLI.",
  "help.command.tips_operator": "Operador '>': Use '>' para adicionar contexto em prompts (ex.: @git > Crie um release note).",
  "help.command.tips_agent_p": "Modo Agente: p - Alterna COMPACTO/COMPLETO do plano (útil para focar no fluxo).",
  "help.command.tips_agent_v": "Modo Agente: vN - Abre a saída do comando N no pager (leitura longa sem poluir a tela).",
  "help.command.tips_agent_w": "Modo Agente: wN - Salva a saída do comando N em arquivo temporário (para compartilhar ou anexar).",
  "help.command.tips_agent_r": "Modo Agente: r - Redesenha a tela (clear) mantendo o foco no 'Último Resultado'.",
  "help.section.plugins": "Gerenciamento de Plugins",
  "help.command.plugin_list": "Lista todos os plugins instalados.",
  "help.command.plugin_install": "Instala um plugin a partir de um repositório Git.",
  "help.command.plugin_show": "Mostra detalhes de uso de um plugin específico.",
  "help.command.plugin_inspect": "Mostra informações de depuração de um plugin.",
  "status.reloading_config": "Recarregando configurações...",
  "status.reload_success_preserved": "Configurações recarregadas com sucesso! (provedor/modelo atuais preservados)",
  "status.reload_fail_preserve": "Falha ao preservar provedor/modelo após recarregar; usando valores do .env",
  "status.reload_embed_provider": "Provider de embeddings reconfigurado: %s",
  "status.reload_success": "Configurações recarregadas com sucesso!",
  "status.reload_fail_client": "Falha ao reconfigurar cliente LLM após recarregar.",
  "status.operation_canceled": "🛑 Operação cancelada com sucesso!",
  "status.provider_switched": "Trocado para %s (%s)",
  "status.exiting": "Até mais!",
  "status.agent_mode_enter": "\n🤖 Entrando no modo agente com a consulta: \"%s\"\n",
  "status.agent_mode_description": "O agente analisará sua solicitação e sugerirá comandos para resolver.",
  "status.agent_mode_exit": "\n ✅ Retornando ao chat...",
  "prompt.select_provider": "Escolha o provedor (pelo número): ",
  "prompt.confirm_exit": "\nAté breve!! CTRL + C Duplo...",
  "prompt.cancel_op": "\n⚠️ Ctrl + C acionado - Cancelando operação...",
  "error.generic": "❌ Erro: %s",
  "error.invalid_choice_normal_mode": "Escolha inválida. Voltando ao modo normal.",
  "error.unknown_command": "Comando desconhecido. Use /help para ver os comandos disponíveis.",
  "error.agent_query_extraction": "Erro: não foi possível extrair a consulta do agente.",
  "error.agent_mode_error": " ❌ Erro no modo agente: %v",
  "hub.cmd.not_connected": "comandos /hub exigem conexão com um servidor com hub (use /connect)",
  "hub.cmd.usage": "uso: /hub [whoami | bind <plataforma> <userid> [principal] | bindings [principal]]",
  "hub.cmd.bind_usage": "uso: /hub bind <plataforma> <userid> [principal]  (principal vazio = você mesmo)",
  "hub.cmd.bound": "vínculo criado: %s:%s",
  "hub.cmd.no_bindings": "nenhum vínculo",
  "complete.confighub.set": "Define uma config do hub (persiste no db, lida pelo gateway)",
  "complete.confighub.reset": "Reseta uma config (volta a env/default)",
  "complete.confighub.enabled": "Liga/desliga o hub (on/off)",
  "complete.confighub.principal": "Identidade compartilhada da conversa",
  "complete.confighub.isolate": "Isola cada canal (bot multi-usuário) (on/off)",
  "complete.confighub.principal_known": "principal conhecido",
  "complete.confighub.ttl_6h": "6 horas",
  "complete.confighub.ttl_24h": "24 horas (padrão)",
  "complete.confighub.ttl_72h": "3 dias",
  "complete.confighub.ttl_168h": "7 dias",
  "complete.confighub.ttl_0": "desliga a purga",
  "complete.confighub.ttl": "Horas até podar conversa ociosa",
  "complete.hub.whoami": "Mostra seu principal e a conversa ativa",
  "complete.hub.bind": "Vincula uma identidade de canal a um principal",
  "complete.hub.bindings": "Lista os vínculos canal→principal",
  "complete.root.hub": "Inspeciona/gerencia a conversa compartilhada (hub cross-channel)",
  "help.command.hub": "Inspeciona a conversa compartilhada e gerencia vínculos de canal (whoami/bind/bindings)",
  "hub.resumed": "conversa compartilhada retomada (%d mensagens de outros canais)",
  "hub.via_channel": "[via %s]",
  "session.new_session_started": "Iniciada nova sessão de conversa; histórico foi limpo.",
  "session.usage_header": "Uso do comando /session:",
  "session.usage_save": "  /session save <nome>",
  "session.usage_load": "  /session load <nome>",
  "session.usage_list": "  /session list",
  "session.usage_search": "  /session search <consulta>",
  "session.search.usage": "Uso: /session search <consulta>",
  "session.search.error": "Erro ao buscar sessões: %v",
  "session.search.none": "Nenhuma sessão salva corresponde a %q.",
  "session.search.header": "Sessões correspondentes a %q",
  "session.search.match_count": "%d correspondência(s)",
  "ratelimit.title": "Limites de Taxa (dos headers do provider)",
  "ratelimit.empty": "Nenhum dado de rate-limit capturado ainda. Faça uma requisição primeiro.",
  "ratelimit.requests": "requisições",
  "ratelimit.tokens": "tokens",
  "ratelimit.used_pct": "%d%% usado",
  "ratelimit.resets_in": "reseta em %ds",
  "export.empty": "Nada para exportar — a conversa está vazia.",
  "export.done": "Exportados %d turnos para %s",
  "complete.root.export": "Exporta a conversa como trajetória JSONL",
  "complete.root.moa": "Mixture-of-Agents: consulta vários modelos e sintetiza",
  "complete.root.gateway": "Roda como daemon de mensageria (Telegram, etc.)",
  "complete.gateway.start": "Inicia o daemon de mensageria",
  "complete.gateway.stop": "Para o daemon de mensageria",
  "complete.gateway.status": "Lista plataformas registradas/configuradas",
  "complete.root.lsp": "Roda um language server e mostra diagnósticos de um arquivo",
  "lsp.usage": "Uso: /lsp <arquivo>",
  "lsp.unsupported": "Nenhum language server configurado para arquivos %s.",
  "lsp.starting": "Iniciando language server: %s...",
  "lsp.spawn_failed": "Não foi possível iniciar %s (está instalado?): %v",
  "lsp.no_response": "Nenhum diagnóstico recebido dentro do tempo limite.",
  "lsp.header": "Diagnósticos de %s",
  "lsp.clean": "Nenhum problema encontrado.",
  "gateway.usage": "Uso: /gateway [start|status|stop]",
  "gateway.no_platforms": "Nenhuma plataforma de mensageria configurada. Defina ex. CHATCLI_TELEGRAM_BOT_TOKEN.",
  "gateway.registered": "Plataformas registradas:",
  "gateway.configured": "Adapters configurados (prontos):",
  "gateway.running": "Gateway rodando em: %s. Pressione Ctrl+C para parar.",
  "gateway.stopped": "Gateway parado.",
  "gateway.task_done": "Tarefa concluída.",
  "gateway.thinking": "🤔 Recebido — já estou processando…",
  "gateway.audio.transcribing": "🎙️ transcrevendo seu áudio…",
  "gateway.audio.disabled": "🎙️ Recebi um áudio, mas a transcrição não está habilitada. Configure CHATCLI_TRANSCRIPTION_PROVIDER=embedded para transcrição offline embutida (download único, sem API key) — ou instale um whisper local, ou configure CHATCLI_TRANSCRIPTION_URL. Por enquanto, envie seu pedido em texto, por favor.",
  "gateway.image.default_prompt": "Analise a imagem anexada e descreva o que ela mostra.",
  "gateway.audio.failed": "🎙️ Não consegui transcrever esse áudio. Tente de novo ou envie em texto.",
  "gateway.audio.needs_ffmpeg": "🎙️ Recebi seu áudio, mas o servidor do gateway não tem o ffmpeg para decodificar este formato. Instale no host: %s",
  "gateway.status_voice": "Transcrição de voz:",
  "gateway.status_voice_off": "desativada (nenhum provider utilizável)",
  "gateway.status_voice_warn": "⚠️ sem ffmpeg no host: voice notes (OGG/Opus) funcionam via decoder puro-Go; %s exigem ffmpeg — %s",
  "gateway.audio.empty": "🎙️ Não identifiquei fala nesse áudio. Pode mandar em texto?",
  "gateway.persona_prompt": "You are answering through a messaging gateway: your reply is delivered as a chat message (Telegram, WhatsApp, Discord, Slack, …). Keep the final answer short, direct and in plain text — no tables, no banners, no ASCII art, and avoid long code blocks unless the user explicitly asked for code. Use your tools normally to read, create or edit files and run commands; the user only sees a brief action feed plus your final answer, so let the prose be a concise summary of what you did and the result.",
  "gateway.status_running": "Daemon do gateway rodando (pid=%d).",
  "gateway.status_stopped": "Daemon do gateway não está rodando.",
  "gateway.already_running": "Gateway já está rodando (pid=%d). Rode /gateway stop primeiro.",
  "gateway.started_detached": "Gateway iniciado (pid=%d) em: %s. Logs: %s",
  "gateway.stopped_pid": "Gateway parado (pid=%d).",
  "moa.usage": "Uso: /moa <prompt> (defina CHATCLI_MOA_MODELS=\"provider:model,...\")",
  "moa.no_models": "Nenhum modelo MoA configurado. Defina CHATCLI_MOA_MODELS=\"openai:gpt-5,claudeai:claude-opus-4-8\".",
  "moa.running": "Consultando %d modelos em paralelo e sintetizando...",
  "session.usage_delete": "  /session delete <nome>",
  "session.usage_new": "  /session new",
  "session.error_save": " ❌ Erro ao salvar sessão: %v",
  "session.save_success": " ✅ Sessão '%s' salva com sucesso.",
  "session.error_load": " ❌ Erro ao carregar sessão: %v",
  "session.load_success": " ✅ Sessão '%s' carregada. A conversa anterior foi restaurada.",
  "session.error_list": " ❌ Erro ao listar sessões: %v",
  "session.list_empty": "Nenhuma sessão salva encontrada.",
  "session.list_header": "Sessões salvas:",
  "session.error_delete": " ❌ Erro ao deletar sessão: %v",
  "session.delete_success": " ✅ Sessão '%s' deletada com sucesso do disco.",
  "session.delete_active_cleared": "A sessão atual foi limpa. Você está em uma nova conversa.",
  "session.error_name_required_save": "Erro: é necessário fornecer um nome para salvar a sessão.",
  "session.error_name_required_load": "Erro: é necessário fornecer um nome para carregar a sessão.",
  "session.error_name_required_delete": "Erro: é necessário fornecer um nome para deletar a sessão.",
  "session.unknown_command": "Comando de sessão desconhecido: '%s'. Use /session para ver as opções.",
  "session.save_where_prompt": "📦 Onde salvar a sessão '%s'?",
  "session.save_option_local": "  [l] Somente local",
  "session.save_option_remote": "  [r] Somente servidor remoto",
  "session.save_option_both": "  [b] Ambos (local + remoto)",
  "session.save_success_remote": " ✅ Sessão '%s' salva com sucesso (servidor remoto).",
  "session.save_success_both": " ✅ Sessão '%s' salva localmente e no servidor remoto.",
  "session.list_header_local": "📂 Sessões locais:",
  "session.list_header_remote": "☁️  Sessões remotas (servidor):",
  "session.load_found_both": "Sessão '%s' encontrada local e remotamente. Carregar de?",
  "session.load_success_remote": " ✅ Sessão '%s' carregada do servidor remoto. A conversa anterior foi restaurada.",
  "session.delete_found_both": "Sessão '%s' encontrada local e remotamente. Deletar de?",
  "session.delete_success_remote": " ✅ Sessão '%s' deletada do servidor remoto.",
  "session.delete_success_both": " ✅ Sessão '%s' deletada localmente e do servidor remoto.",
  "session.option_local": "  [l] Local",
  "session.option_remote": "  [r] Remoto",
  "session.option_both": "  [b] Ambos",
  "session.prompt_choice": " > ",
  "chunk.no_more_chunks": "Não há mais chunks de arquivos disponíveis.",
  "chunk.no_more_pending_but_failed": "Não há mais chunks pendentes, mas existem %d chunks com falha. Use /retry para retentar o último chunk com falha ou /retryall para retentar todos.",
  "chunk.sending": "Enviando chunk %d de %d... (%d restantes após este)",
  "chunk.progress_header": "📊 PROGRESSO: Chunk %d/%d",
  "chunk.progress_processed": "▶️ %d chunks já processados",
  "chunk.progress_pending": "▶️ %d chunks pendentes",
  "chunk.progress_failed": "▶️ %d chunks com falha",
  "chunk.progress_usage": "▶️ Use '/nextchunk' para avançar ou '/retry' se ocorrer falha",
  "chunk.prompt": "Este é o chunk %d/%d do código que solicitei anteriormente. Por favor continue a análise:",
  "chunk.error_processing": "\n⚠️ Erro ao processar o chunk %d/%d: %s",
  "chunk.moved_to_failed_queue": "O chunk foi movido para a fila de chunks com falha.",
  "chunk.retry_or_next": "Use /retry para tentar novamente este chunk ou /nextchunk para continuar com o próximo.",
  "chunk.status_header": "\nStatus dos chunks:",
  "chunk.status_pending": "- %d chunks pendentes. Use /nextchunk para continuar.",
  "chunk.status_failed": "- %d chunks com falha. Use /retry ou /retryall para reprocessá-los.",
  "chunk.all_processed_success": "\nTodos os chunks foram processados com sucesso.",
  "chunk.no_failed_to_retry": "Não há chunks com falha para reprocessar.",
  "chunk.retrying_last_failed": "Retentando chunk %d/%d que falhou anteriormente...",
  "chunk.retry_header": "📊 NOVA TENTATIVA: Chunk %d/%d",
  "chunk.retry_status_retrying": "▶️ Retentando chunk que falhou anteriormente",
  "chunk.retry_status_other_failed": "▶️ %d outros chunks com falha",
  "chunk.retry_prompt": "Este é o chunk %d/%d do código (nova tentativa após falha). Por favor continue a análise:",
  "chunk.retry_error": "\n⚠️ Erro ao reprocessar o chunk %d/%d: %s",
  "chunk.retry_remains_failed": "O chunk permanece na fila de chunks com falha.",
  "chunk.retry_success": "\nChunk reprocessado com sucesso!",
  "chunk.retrying_all_failed": "Retentando todos os %d chunks com falha...",
  "chunk.no_pending_to_skip": "Não há chunks pendentes para pular.",
  "chunk.skipping": "Pulando chunk %d/%d...",
  "chunk.status_no_pending": "- Não há chunks pendentes.",
  "chunk.status_no_failed": "- Não há chunks com falha.",
  "agent.header.title": "🤖 MODO AGENTE: PLANO DE AÇÃO",
  "agent.header.description": "A IA sugeriu os seguintes comandos para executar sua tarefa.",
  "agent.plan.compact_view": "📋 PLANO (visão compacta)",
  "agent.plan.full_view": "📋 PLANO (visão completa)",
  "agent.plan.status.pending": "Pendente",
  "agent.plan.status.ok": "OK",
  "agent.plan.status.error": "ERRO",
  "agent.plan.risk.dangerous": "⚠️ Potencialmente perigoso",
  "agent.plan.risk.safe": "Seguro",
  "agent.plan.command_header": "🔷 COMANDO #%d: %s",
  "agent.plan.field.type": "Tipo:",
  "agent.plan.field.risk": "Risco:",
  "agent.plan.field.status": "Status:",
  "agent.plan.field.code": "Código:",
  "agent.plan.command_separator": "( %d / %d )",
  "agent.plan.default_description": "Executar comandos",
  "agent.ui.tool_label": "Ferramenta",
  "agent.ui.tool_args": "Argumentos",
  "agent.ui.tool_command": "Comando",
  "agent.ui.action_title": "EXECUTAR AÇÃO",
  "agent.ui.action_title_progress": "EXECUTAR AÇÃO (%d/%d)",
  "agent.ui.action_title_short": "AÇÃO %d/%d",
  "agent.ui.result_success": "SUCESSO",
  "agent.ui.result_failure": "FALHA NA EXECUÇÃO",
  "agent.ui.result_ok": "OK",
  "agent.ui.result_error": "ERRO",
  "agent.ui.result_empty": "-",
  "agent.ui.result_truncated": "\n... [saída truncada visualmente, agente recebeu tudo] ...",
  "agent.ui.reasoning_title": "RACIOCÍNIO",
  "agent.ui.batch_started": " 📦 INICIANDO EXECUÇÃO EM LOTE: %d AÇÕES ",
  "agent.ui.batch_interrupted": " ⚠️ LOTE INTERROMPIDO: %d de %d ações executadas com sucesso.",
  "agent.ui.batch_completed": " ✅ LOTE CONCLUÍDO: Todas as %d ações foram executadas.",
  "agent.ui.batch_summary_success": "%d/%d concluídas",
  "agent.ui.batch_summary_errors": "%d/%d concluídas (com erros)",
  "agent.thinking.phrase_1": "Pensando…",
  "agent.thinking.phrase_2": "Analisando…",
  "agent.thinking.phrase_3": "Processando…",
  "agent.thinking.phrase_4": "Raciocinando…",
  "agent.thinking.phrase_5": "Planejando…",
  "agent.thinking.phrase_6": "Explorando…",
  "agent.thinking.phrase_7": "Conectando pontos…",
  "agent.thinking.phrase_8": "Elaborando solução…",
  "agent.thinking.phrase_9": "Lendo código…",
  "agent.thinking.phrase_10": "Mapeando estrutura…",
  "agent.last_result.header": "🧾 ÚLTIMO RESULTADO",
  "agent.last_result.tips": "Dicas: v%d = ver completo | w%d = salvar em arquivo | Enter = continuar",
  "agent.menu.header": "O QUE VOCÊ DESEJA FAZER?",
  "agent.menu.exec_n": "Executa um comando específico (ex: 1, 2, ...)",
  "agent.menu.exec_all": "Executa todos os comandos em sequência",
  "agent.menu.edit": "Edita o comando N (ex: e1)",
  "agent.menu.dry_run": "Simula (dry-run) o comando N (ex: t2)",
  "agent.menu.continue": "Pede continuação à IA com a saída do N (ex: c2)",
  "agent.menu.pre_context": "Adiciona pré-contexto ao N antes de executar (ex: pc1)",
  "agent.menu.post_context": "Adiciona contexto à SAÍDA do N (ex: ac1)",
  "agent.menu.view": "Ver saída completa do N no pager",
  "agent.menu.save": "Salvar saída do N em arquivo",
  "agent.menu.toggle_plan": "Alterna plano completo/compacto",
  "agent.menu.redraw": "Atualiza a tela (clear)",
  "agent.menu.quit": "Sai do Modo Agente",
  "agent.menu.col.execution": "Execução",
  "agent.menu.col.edit_context": "Edição & Contexto",
  "agent.menu.col.view": "Visualização",
  "agent.banner.title": "MODO AGENTE",
  "agent.banner.task": "Tarefa",
  "agent.banner.mode": "Modo",
  "agent.banner.mode_value": "supervisionado — você aprova cada ação",
  "coder.banner.title": "MODO CODER",
  "coder.banner.objective": "Objetivo",
  "coder.banner.workspace": "Workspace",
  "coder.banner.policy": "Política",
  "coder.banner.policy_value": "read-only por padrão · Ctrl+C cancela",
  "chat.envelope.tokens": "%d↑ %d↓",
  "chat.envelope.no_tokens": "—",
  "chat.envelope.context_pct": "ctx %d%%",
  "cfg.agent.usage_header": "Uso do /config agent:",
  "cfg.agent.usage_ui_show": "mostra o estilo atual e opções",
  "cfg.agent.usage_ui_full": "cards completos (padrão)",
  "cfg.agent.usage_ui_compact": "linhas inline ↻/✓ (ideal para /coder)",
  "cfg.agent.usage_ui_minimal": "cards truncados (meio termo)",
  "cfg.agent.usage_note_scope": "Estilo afeta tanto /coder quanto /agent.",
  "cfg.agent.usage_note_persist": "Para tornar permanente, adicione CHATCLI_CODER_UI=<valor> no seu .env.",
  "cfg.agent.unknown_sub": "Subcomando desconhecido: %s",
  "cfg.agent.ui_invalid_value": "Valor inválido: %s",
  "cfg.agent.ui_valid_values": "Use full, compact ou minimal.",
  "cfg.agent.ui_set_failed": "Falha ao trocar estilo: %s",
  "cfg.agent.ui_set_ok": "Estilo trocado: %s → %s. Vale do próximo /coder ou /agent em diante.",
  "cfg.agent.ui_set_noop": "Estilo já era %s — nada mudou.",
  "cfg.agent.ui_runtime_hint": "🔄 Mudança imediata: já vale no próximo /coder ou /agent.",
  "cfg.agent.ui_persist_hint": "💾 Para persistir entre sessões: adicione CHATCLI_CODER_UI=%s no seu .env.",
  "cfg.agent.ui_status_header": "🎨 Estilo da timeline (CHATCLI_CODER_UI)",
  "cfg.agent.ui_status_current": "Atual:",
  "cfg.agent.ui_status_options": "Disponíveis:",
  "cfg.agent.ui_status_change_hint": "Para trocar: /config agent ui <full|compact|minimal>",
  "cfg.agent.ui_source_env": "definido por env",
  "cfg.agent.ui_source_default": "padrão",
  "cfg.agent.ui_desc_full": "Cards completos ╭─╮ … ╰─╯. Ideal para /agent supervisionado.",
  "cfg.agent.ui_desc_compact": "Linhas inline ↻ Read(main.go) / ✓ Read(main.go) 0.3s. Ideal para /coder com muitas tools.",
  "cfg.agent.ui_desc_minimal": "Cards menores com conteúdo truncado. Meio termo.",
  "complete.config.agent.ui": "Trocar o estilo da timeline (full/compact/minimal)",
  "cfg.section.ui.title": "UI / TEMA",
  "cfg.ui.usage_header": "Uso de /config ui:",
  "cfg.ui.usage_theme_show": "mostra o tema ativo e o perfil de cor",
  "cfg.ui.usage_theme_set": "muda para o tema %s",
  "cfg.ui.usage_note_scope": "O tema estiliza chat, coder e agent — cards, bordas, markdown e spinners.",
  "cfg.ui.usage_note_persist": "Para persistir entre sessões, adicione CHATCLI_THEME=<nome> ao seu .env.",
  "cfg.ui.unknown_sub": "Subcomando desconhecido: %s",
  "cfg.ui.theme_invalid_value": "Tema inválido: %s",
  "cfg.ui.theme_valid_values": "Temas disponíveis: %s.",
  "cfg.ui.theme_set_failed": "Falha ao trocar o tema: %s",
  "cfg.ui.theme_set_ok": "Tema trocado: %s → %s. Aplica na próxima renderização.",
  "cfg.ui.theme_set_noop": "O tema já era %s — nada mudou.",
  "cfg.ui.theme_persist_hint": "💾 Para persistir entre sessões: adicione CHATCLI_THEME=%s ao seu .env.",
  "cfg.ui.theme_status_header": "🎨 Tema ativo (CHATCLI_THEME)",
  "cfg.ui.theme_status_current": "Tema:",
  "cfg.ui.theme_status_profile": "Perfil de cor:",
  "cfg.ui.theme_status_options": "Disponíveis:",
  "cfg.ui.theme_status_change_hint": "Para trocar: /config ui theme <nome>",
  "cfg.ui.theme_source_env": "definido por env",
  "cfg.ui.theme_source_default": "padrão",
  "cfg.ui.theme_desc_dark": "Paleta escura calibrada para terminais escuros (padrão).",
  "cfg.ui.theme_desc_light": "Paleta clara para terminais com fundo claro.",
  "cfg.ui.theme_desc_dracula": "Dracula — dark icônico de alto contraste (roxo/rosa/ciano).",
  "cfg.ui.theme_desc_nord": "Nord — paleta ártica fria e de baixa saturação.",
  "cfg.ui.theme_desc_tokyo-night": "Tokyo Night — azul-noturno moderno com accents vivos.",
  "cfg.ui.theme_desc_solarized-dark": "Solarized Dark — o clássico de Ethan Schoonover na base escura.",
  "cfg.ui.theme_desc_solarized-light": "Solarized Light — os mesmos tons em fundo claro.",
  "cfg.ui.theme_desc_gruvbox": "Gruvbox — dark retrô, quente e de alto contraste.",
  "cfg.ui.theme_desc_catppuccin-mocha": "Catppuccin Mocha — paleta dark pastel e suave.",
  "cfg.ui.theme_desc_monokai": "Monokai — a paleta clássica de editor sobre carvão.",
  "cfg.ui.theme_desc_one-dark": "One Dark — azul/cinza equilibrado do Atom com accents suaves.",
  "cfg.ui.timeline_pointer": "Densidade da timeline (full/compact/minimal): veja /config agent ui.",
  "cfg.kv.theme_active": "Tema ativo",
  "cfg.kv.color_profile": "Perfil de cor",
  "cfg.kv.themes_available": "Temas disponíveis",
  "complete.config.ui.theme": "Trocar o tema de cores (dark/light)",
  "agent.prompt.choice": "\n ➤ Sua escolha: ",
  "agent.status.exiting": "\n ✅ Saindo do modo agente.",
  "agent.status.no_output_to_show": "Sem saída para exibir.",
  "agent.status.no_output_to_save": "Sem saída para salvar.",
  "agent.status.press_enter": "\nPressione Enter para continuar...",
  "agent.status.error_saving": "Erro ao salvar:",
  "agent.status.file_saved_at": "Arquivo salvo em:",
  "agent.status.batch_warning": "⚠️ AVISO: Um ou mais comandos são potencialmente perigosos.",
  "agent.status.batch_check_individual": "Confira comandos individuais antes de aprovar execução em lote!",
  "agent.status.batch_confirm": "\n⚠️ Executar todos os comandos em sequência? (s/N): ",
  "agent.status.batch_canceled": "Execução em lote cancelada.",
  "agent.status.executing_command": "\n🚀 Executando comando #%d:",
  "agent.status.all_commands_executed": "\n✅ Todos os comandos foram executados.",
  "agent.status.summary": "\nResumo:",
  "agent.status.command_not_executed": "Este comando ainda não foi executado.",
  "agent.status.context_received": "\nContexto recebido! Solicitando refinamento à IA...",
  "agent.status.no_new_commands": "\nA IA não sugeriu novos comandos.",
  "agent.status.executing": "🚀 EXECUTANDO: %s",
  "agent.status.executing_script": "⚙️ Executando script via %s:",
  "agent.status.dir_changed": "📂 Diretório alterado para: %s",
  "agent.status.dangerous_command_confirm": "Este comando é potencialmente perigoso. Para confirmar, digite: 'sim, quero executar conscientemente'\nConfirma?: ",
  "agent.status.dangerous_command_aborted": "Execução do comando perigoso ABORTADA.",
  "agent.status.dangerous_command_confirmed": "⚠️ Confirmação recebida. Executando...",
  "agent.status.executing_command_n": "⚙️ Comando %d/%d: %s",
  "agent.status.interactive_mode": "🖥️  Modo interativo.",
  "agent.status.command_finished": "✓ Comando finalizado.",
  "agent.status.execution_complete": " ✅ Execução Concluída ",
  "agent.status.execution_complete_with_errors": " ⚠️ Execução Concluída com Erros ",
  "agent.status.simulating_commands": "\n🔎 Simulando comandos (tipo: %s):",
  "agent.status.simulation_done": "Simulação concluída, comando NÃO executado.",
  "agent.status.confirm_exec_after_sim": "Deseja executar este comando agora? (s/N): ",
  "agent.status.edit_prompt": "Editar no terminal (t) ou em editor externo (e)? [t/e]: ",
  "agent.status.edit_command_prompt": "Comando %d/%d (%s): ",
  "agent.status.interactive_confirm": "O comando '%s' pode ser interativo. Executar em modo interativo? (s/N): ",
  "agent.error.invalid_command_number": "Número de comando inválido.",
  "agent.error.invalid_command_number_edit": "Número de comando inválido para editar.",
  "agent.error.invalid_command_number_simulate": "Número de comando inválido para simular.",
  "agent.error.invalid_command_number_context": "Número inválido para adicionar contexto.",
  "agent.error.invalid_command_number_continue": "Número inválido para continuação.",
  "agent.error.error_editing_command": "Erro ao editar comando:",
  "agent.error.no_context_provided": "Nenhum contexto fornecido. Operação cancelada.",
  "agent.error.refinement_failed": "Erro ao solicitar refinamento à IA:",
  "agent.error.continuation_failed": "Erro ao pedir continuação à IA:",
  "agent.error.create_temp_file": "❌ Erro ao criar arquivo temporário: %v",
  "agent.error.write_script": "❌ Erro ao escrever script: %v",
  "agent.error.change_dir": "❌ Erro ao trocar diretório para '%s': %v",
  "agent.error.invalid_option": "Opção inválida.",
  "agent.oneshot.no_command": "\nNenhum comando executável foi sugerido pela IA.",
  "agent.oneshot.header": "\n🤖 MODO AGENTE (ONE-SHOT): Comando Sugerido",
  "agent.oneshot.header_auto_exec": "\n🤖 MODO AGENTE (ONE-SHOT): Execução Automática",
  "agent.oneshot.auto_exec_tip": "Para executar automaticamente, use a flag --agent-auto-exec",
  "agent.oneshot.block_header": "\n🔷 Bloco de Comando: %s",
  "agent.oneshot.language": "  Linguagem: %s",
  "agent.oneshot.auto_exec_aborted": "execução automática abortada por segurança. O comando sugerido é potencialmente perigoso: %q",
  "agent.oneshot.auto_exec_running": "✅ Comando seguro detectado. Executando o comando sugerido...",
  "agent.oneshot.error_with_output": "o comando foi executado, mas retornou um erro: %s",
  "oneshot.error_overrides": "❌ Erro ao aplicar overrides de provider/model",
  "agent.system_prompt.interactive": "Você é um assistente de linha de comando que ajuda o usuário a executar tarefas no sistema de forma segura. Sempre explique brevemente o propósito antes dos comandos. Prefira comandos simples e não interativos. Evite comandos potencialmente destrutivos (rm -rf, dd, mkfs, etc.) sem um aviso claro de risco e alternativas seguras. Quando sugerir comandos executáveis, use blocos de código exatamente no formato:\n\n```execute:<tipo>\n<comandos>\n```\n\nTipos aceitos: shell, git, docker, kubectl. Se houver ambiguidade, faça uma pergunta antes de fornecer comandos.",
  "agent.system_prompt.default.base": "[ACTIVE MODE: /agent]\nVocê é um assistente especialista em linha de comando, operando dentro de um terminal. Seu objetivo é ajudar o usuário a realizar tarefas de forma segura e eficiente, fornecendo os comandos corretos.\n\n**[Contexto Disponível]**\n- Sistema Operacional: %s\n- Shell Padrão: %s\n- Diretório Atual: %s\n\n**[PROCESSO OBRIGATÓRIO]**\nPara cada solicitação do usuário, você DEVE seguir estritamente estas duas etapas:\n\n**Etapa 1: Planejamento**\nPense passo a passo de forma interna. Se necessário, resuma o raciocínio em uma tag <reasoning> para mostrar ao usuário.\n\n**Etapa 2: Resposta Final Estruturada**\nApós o raciocínio, forneça a resposta final contendo:\n1. Uma tag <explanation> com uma explicação clara e concisa do que os comandos farão.\n2. Um ou mais blocos de código no formato de exemplo (o bloco de exemplo real é injetado abaixo).\n\n**[DIRETRIZES E RESTRIÇÕES]**\n1. Segurança é Prioridade: NUNCA sugira comandos destrutivos ('rm -rf', 'dd', 'mkfs', etc.) sem um aviso explícito sobre os riscos na tag <explanation>.\n2. Clareza: Prefira comandos que sejam fáceis de entender. Se um comando for complexo (ex: 'awk', 'sed'), explique cada parte dele.\n3. Eficiência: Use pipes ('|') e combine comandos para criar soluções eficientes quando apropriado.\n4. Interatividade: Evite comandos interativos (ex: 'vim', 'nano', 'ssh' sem argumentos). Se for necessário, avise o usuário na <explanation> e adicione o marcador #interactive ao final do comando (ex.: 'ssh user@host #interactive') para que a CLI trate como interativo.\n5. Ambiguidade: Se o pedido do usuário for ambíguo, em vez de adivinhar, faça uma pergunta para esclarecer. NÃO forneça um bloco execute nesse caso.\n6. Formato: Use blocos de código do tipo execute:<tipo> conforme exemplo injetado abaixo.\n\n**[EXEMPLO COMPLETO]**\n\n**Solicitação do Usuário:** \"liste todos os arquivos go neste projeto e conte as linhas de cada um\"\n\n**Sua Resposta:**\n<reasoning>\n1. O usuário quer encontrar todos os arquivos com a extensão .go. O comando 'find' é ideal para isso.\n2. O ponto de partida da busca deve ser o diretório atual ('.').\n3. O critério de busca é o nome do arquivo, então usarei: find . -name \"*.go\"\n4. Para cada arquivo encontrado, o usuário quer contar as linhas. O comando 'wc -l' faz isso.\n5. Preciso combinar find com wc -l. A melhor forma de fazer isso para múltiplos arquivos é usando xargs ou a opção -exec do find. A opção -exec com + é eficiente.\n6. O comando final será: find . -name \"*.go\" -exec wc -l {} +\n</reasoning>\n<explanation>\nVou usar o comando 'find' para procurar recursivamente por todos os arquivos que terminam com .go a partir do diretório atual. Em seguida, para cada arquivo encontrado, vou executar o comando 'wc -l' para contar o número de linhas.\n</explanation>\n\nExemplo de bloco de comando (formato mostrado abaixo):",
  "agent.system_prompt.oneshot": "Você é um assistente de linha de comando operando em um modo de execução única (one-shot). Sua tarefa é analisar o pedido do usuário e fornecer **um único e conciso bloco de comando** que resolva a tarefa da forma mais eficiente e segura possível.\n\n- Responda **apenas** com o melhor bloco de comando no formato ```execute:shell.\n- **Não** forneça múltiplos blocos de comando ou alternativas.\n- **Não** adicione explicações longas antes ou depois, apenas o comando necessário para a execução.\n- Evite comandos destrutivos (como rm -rf) a menos que seja explicitamente solicitado e a intenção seja clara.\n- O comando deve ser diretamente executável, pois precisamos apenas de um único comando, o melhor e mais expert possível.",
  "agent.llm_prompt.continuation": "O comando sugerido anteriormente foi:\n%s\n\nO resultado (stdout) foi:\n%s\n\nO erro (stderr) foi:\n%s\n\nPor favor, sugira uma correção ou próximos passos baseados no resultado. Forneça comandos executáveis no formato apropriado.",
  "agent.llm_prompt.continuation_with_context": "O comando sugerido anteriormente foi:\n%s\n\nO resultado (stdout) foi:\n%s\n\nO erro (stderr) foi:\n%s\n\nPor favor, sugira uma correção ou próximos passos baseados no resultado e no contexto fornecido. Forneça comandos executáveis no formato apropriado.\n\nContexto adicional fornecido pelo usuário:\n%s",
  "agent.llm_prompt.pre_execution_context": "O comando que você sugeriu foi:\n```\n%s\n```\n\nAntes de executá-lo, o usuário forneceu o seguinte contexto ou instrução adicional:\n%s\n\nPor favor, revise o comando sugerido com base neste novo contexto. Se necessário, modifique-o ou sugira um novo conjunto de comandos. Apresente os novos comandos no formato executável apropriado.",
  "main.warn_expand_path": "Aviso: não foi possível expandir o caminho '%s': %v",
  "main.error_dotenv_not_found": "Não foi encontrado o arquivo .env em %s",
  "main.error_logger_init": "Não foi possível inicializar o logger: %v",
  "main.error_no_provider": "Nenhum provedor LLM está configurado. Verifique suas variáveis de ambiente.",
  "main.error_apply_overrides": " ❌ Erro ao aplicar overrides: %v",
  "manager.error_provider_not_supported": "Provedor LLM '%s' não suportado ou não configurado",
  "cli.switch.invalid_max_tokens": " ❌ Valor inválido para --max-tokens: '%s'. Deve ser um número >= 0.",
  "cli.switch.max_tokens_set": " ✅ Limite máximo de tokens definido para: %d (0 = usar padrão do provedor)",
  "cli.maxtokens.current": " ℹ️  Limite atual de max-tokens: %d (0 = padrão do provedor). Defina com /max-tokens <num>.",
  "cli.switch.stackspot_only_flags": " ❌ As flags --realm e --agent-id só podem ser usadas com o provedor STACKSPOT.",
  "cli.switch.realm_updated": " ✅ Realm/Tenant do StackSpot atualizado para '%s'. O token será renovado na próxima requisição.",
  "cli.switch.agent_id_updated": " ✅ Agent ID do StackSpot atualizado para '%s'.",
  "cli.switch.agent_id_error": " ❌ Erro ao recriar cliente StackSpot com novo Agent ID: %v",
  "cli.switch.changing_model": "Tentando trocar para o modelo '%s' no provedor '%s'...",
  "cli.switch.change_model_error": " ❌ Erro ao trocar para o modelo '%s': %v\n   Verifique se o nome do modelo está correto para o provedor atual.",
  "cli.switch.change_model_success": " ✅ Modelo trocado com sucesso para %s (%s)",
  "cli.switch.available_providers": "Provedores disponíveis:",
  "agent.validator.empty_command": "comando vazio",
  "agent.validator.dangerous_command": "comando potencialmente perigoso detectado: %s",
  "agent.executor.interactive_mode_header": "\n--- Entrando no modo de comando interativo ---",
  "agent.executor.interactive_mode_info": "O controle do terminal será passado para o comando.",
  "agent.executor.interactive_mode_exit_tip": "Para retornar, saia do programa (ex: ':q' no vim, 'exit' no shell).",
  "agent.executor.interactive_mode_footer": "--- Retornando ao ChatCLI ---",
  "agent.executor.fail_restore_terminal": "Falha ao restaurar terminal",
  "help.section.contexts": "Gerenciamento de Contextos",
  "help.command.context_create": "Cria novo contexto a partir de arquivos/diretórios",
  "help.command.context_mode": "Modo de processamento (full, summary, chunked, smart, knowledge)",
  "help.command.context_description": "Descrição do contexto",
  "help.command.context_tags": "Tags separadas por vírgula",
  "help.command.context_attach": "Anexa contexto à sessão atual",
  "help.command.context_detach": "Desanexa contexto da sessão",
  "help.command.context_list": "Lista todos os contextos salvos",
  "help.command.context_show": "Mostra detalhes de um contexto",
  "help.command.context_delete": "Deleta um contexto permanentemente",
  "help.command.context_merge": "Mescla múltiplos contextos em um novo",
  "help.command.context_attached": "Mostra contextos anexados à sessão atual",
  "help.command.context_export": "Exporta contexto para arquivo JSON",
  "help.command.context_import": "Importa contexto de arquivo JSON",
  "help.command.context_metrics": "Mostra métricas e estatísticas de uso",
  "context.error.unknown_subcommand": "Subcomando desconhecido: '%s'. Use /context help para ver comandos disponíveis.",
  "context.create.usage": "Uso: /context create <nome> <caminhos...> [--mode <modo>] [--description <texto>] [--tags <tag1,tag2>]",
  "context.create.error.mode_required": "Flag --mode requer um valor (full, summary, chunked, smart, knowledge)",
  "context.create.error.description_required": "Flag --description requer um valor",
  "context.create.error.tags_required": "Flag --tags requer valores separados por vírgula",
  "context.create.error.no_paths": "Nenhum caminho fornecido. É necessário pelo menos um arquivo ou diretório.",
  "context.create.error.failed": "Erro ao criar contexto: %v",
  "context.create.processing": " 🔄 Processando arquivos...",
  "context.create.success": " ✅ Contexto criado com sucesso!",
  "context.attach.usage": "Uso: /context attach <nome> [--priority <número>]",
  "context.attach.error.invalid_priority": "Prioridade inválida. Deve ser um número inteiro.",
  "context.attach.error.not_found": "Contexto '%s' não encontrado",
  "context.attach.error.failed": "Erro ao anexar contexto: %v",
  "context.attach.success": " ✅ Contexto '%s' anexado à sessão atual",
  "context.attach.priority": "Prioridade:",
  "context.attach.files": "Arquivos:",
  "context.attach.files_label": "arquivos",
  "context.attach.size": "Tamanho:",
  "context.detach.usage": "Uso: /context detach <nome>",
  "context.detach.error.not_found": "Contexto '%s' não encontrado",
  "context.detach.error.failed": "Erro ao desanexar contexto: %v",
  "context.detach.success": " ✅ Contexto '%s' desanexado da sessão",
  "context.delete.usage": "Uso: /context delete <nome>",
  "context.delete.error.not_found": "Contexto '%s' não encontrado",
  "context.delete.error.failed": "Erro ao deletar contexto: %v",
  "context.delete.confirm": " ⚠️  Tem certeza que deseja deletar o contexto '%s'? (s/N): ",
  "context.delete.canceled": "Operação cancelada.",
  "context.delete.success": " ✅ Contexto '%s' deletado com sucesso",
  "context.list.error.failed": "Erro ao listar contextos: %v",
  "context.list.empty": "Nenhum contexto encontrado. Use /context create para criar um.",
  "context.list.header": " 📦 Contextos disponíveis",
  "context.show.usage": "Uso: /context show <nome>",
  "context.show.error.not_found": "Contexto '%s' não encontrado",
  "context.merge.usage": "Uso: /context merge <novo-nome> <contexto1> <contexto2> [contexto3...]",
  "context.merge.error.context_not_found": "Contexto '%s' não encontrado",
  "context.merge.error.failed": "Erro ao mesclar contextos: %v",
  "context.merge.processing": " 🔄 Mesclando contextos...",
  "context.merge.success": " ✅ Contextos mesclados com sucesso!",
  "context.attached.error.failed": "Erro ao buscar contextos anexados: %v",
  "context.attached.empty": "Nenhum contexto anexado a esta sessão. Use /context attach <nome> para anexar.",
  "context.attached.header": " 📌 Contextos anexados à sessão",
  "context.export.usage": "Uso: /context export <nome> <caminho-destino>",
  "context.export.error.not_found": "Contexto '%s' não encontrado",
  "context.export.error.failed": "Erro ao exportar contexto: %v",
  "context.export.success": " ✅ Contexto exportado para: %s",
  "context.import.usage": "Uso: /context import <caminho-arquivo>",
  "context.import.error.failed": "Erro ao importar contexto: %v",
  "context.import.success": " ✅ Contexto '%s' importado com sucesso",
  "context.metrics.header": " 📊 Métricas de Contextos",
  "context.update.usage": "Uso: /context update <nome> [<caminhos...>] [--mode <modo>] [--description <texto>] [--tags <tag1,tag2>]",
  "context.update.processing": " 🔄 Atualizando contexto...",
  "context.update.error.failed": "Erro ao atualizar contexto: %v",
  "context.update.success": " ✅ Contexto atualizado com sucesso!",
  "context.create.force_tip": "Dica: Use --force para sobrescrever um contexto existente",
  "plugin.usage_header": "Uso: /plugin <list|install|show|inspect|uninstall> [argumentos]",
  "plugin.list.empty": "Nenhum plugin instalado. Use '/plugin install <url>' para adicionar um.",
  "plugin.list.header": " 🔌 PLUGINS INSTALADOS:",
  "plugin.show.usage": "Uso: /plugin show <nome-do-plugin>",
  "plugin.error.not_found": " ❌ Plugin '%s' não encontrado.",
  "plugin.show.details_for": " 🧩 DETALHES DO PLUGIN: %s",
  "plugin.show.description": "Descrição",
  "plugin.show.usage_label": "Uso",
  "plugin.show.version": "Versão",
  "plugin.inspect.usage": "Uso: /plugin inspect <nome-do-plugin>",
  "plugin.inspect.details_for": "🛠️ INSPEÇÃO DO PLUGIN: %s",
  "plugin.inspect.path": "Caminho do Executável",
  "plugin.inspect.permissions": "Permissões",
  "plugin.install.usage": "Uso: /plugin install <url-do-repositorio-git>",
  "plugin.install.security_warning": " ⚠️ AVISO: Você está prestes a clonar, compilar e executar código de um repositório de terceiros. Instale apenas de fontes confiáveis.",
  "plugin.install.confirm": "Deseja continuar com a instalação de '%s'? (s/N): ",
  "plugin.install.canceled": "Instalação cancelada.",
  "plugin.install.installing": "Instalando plugin de '%s'...",
  "plugin.install.error.tempdir": " ❌ Erro ao criar diretório temporário: %v",
  "plugin.install.error.clone": " ❌ Erro ao clonar o repositório: %v",
  "plugin.install.error.build": " ❌ Erro ao compilar o plugin: %v\nSaída: %s",
  "plugin.install.error.chmod": "❌ Erro ao definir a permissão de execução no plugin: %v",
  "plugin.install.success": " ✅ Plugin '%s' instalado com sucesso!",
  "plugin.uninstall.usage": "Uso: /plugin uninstall <nome-do-plugin>",
  "plugin.uninstall.error": " ❌ Erro ao desinstalar o plugin '%s': %v",
  "plugin.uninstall.success": " ✅ Plugin '%s' desinstalado.",
  "plugin.uninstall.error.not_local": " ❌ Não é possível desinstalar um plugin builtin ou remoto.",
  "plugin.error.manager_disabled": " ❌ O gerenciador de plugins não está disponível. Verifique os logs para erros de inicialização.",
  "plugin.error.unknown_subcommand": "Subcomando de plugin desconhecido: '%s'",
  "plugin.reloading": "Recarregando plugins...",
  "plugin.reload_success": " ✅ Plugins recarregados. Novos plugins já estão disponíveis!",
  "agent.feedback.tool_output_header": "--- Resultado da Ferramenta ---",
  "agent.status.using_tool": " 🤖 Agente está usando a ferramenta: %s %s",
  "agent.status.final_answer_no_commands": " ✅ O agente forneceu uma resposta final sem comandos executáveis.",
  "agent.error.max_turns_reached": "O agente não chegou a uma solução final após %d tentativas.",
  "agent.system_prompt.tools_header": "**[FERRAMENTAS DISPONÍVEIS]**",
  "agent.system_prompt.tools_instruction": "Para usar uma ferramenta, sua resposta DEVE conter um bloco no formato: `<tool_call name=\"@nome-da-ferramenta\" args=\"argumento1 argumento2\" />`. Após receber o resultado da ferramenta, decida o próximo passo. Se nenhuma ferramenta for adequada, gere a solução final com blocos ```execute:shell```.",
  "agent.error.tool_not_found": "Erro: a ferramenta '%s' que você tentou usar não foi encontrada. Por favor, escolha uma da lista ou gere um comando de shell.",
  "agent.feedback.tool_output": "A ferramenta '%s' foi executada e retornou o seguinte:\n\n<tool_output>\n%s\n</tool_output>\n\n(Se a tarefa estiver concluída, responda apenas com um resumo final. Se precisar de mais ações, envie a próxima tool_call).",
  "agent.error.max_turns_reached_context": "⚠️ O agente parou após atingir o limite máximo de %d turnos para evitar loops infinitos. Ele não chegou a uma solução final.",
  "agent.feedback.last_thought": "Aqui está o último raciocínio do agente:",
  "agent.error.invalid_tool_args": "Erro: Os argumentos que você forneceu para a ferramenta '%s' estavam malformados: %v. Por favor, corrija as aspas e tente novamente.",
  "agent.multiline_input_tip": "(Digite '.' em uma nova linha para finalizar)",
  "agent.prompt.additional_context": "\n ➤ Forneça contexto ou instruções adicionais: ",
  "agent.output_header": "\n--- Saída do Comando ---",
  "agent.persona.list.empty": "⚠ Nenhum agente encontrado. Crie arquivos .md no diretório de agentes.",
  "agent.persona.skills.empty": "⚠ Nenhuma skill encontrada. Crie arquivos .md no diretório de skills.",
  "agent.persona.off.no_active": "⚠ Nenhum agente está ativo no momento.",
  "agent.persona.off.hint": "💡 O ChatCLI voltou ao comportamento padrão (persona default).",
  "agent.persona.show.no_active": "⚠ Nenhum agente está ativo. Use /agent load <nome> para carregar um.",
  "agent.persona.load.usage": "⚠ Uso: /agent load <nome-do-agente>",
  "agent.usage.hint": "💡 Uso: /agent <tarefa>  (ex: /agent investigar erro 500). Sem contexto, o modo agente não é iniciado para evitar enviar mensagem vazia à LLM.",
  "persona.error.not_initialized": "❌ Sistema de personas não inicializado.",
  "help.section.persona": "Gerenciamento de Agentes (Personas)",
  "help.command.persona_list": "Lista todos os agentes disponíveis.",
  "help.command.persona_load": "Carrega um agente específico com suas skills.",
  "help.command.persona_skills": "Lista todas as skills disponíveis.",
  "help.command.persona_show": "Mostra detalhes do agente ativo e seu prompt.",
  "help.command.persona_status": "Mostra o status do agente ativo, incluindo se está fixado na sessão.",
  "help.command.persona_off": "Desativa o agente atual, voltando ao comportamento padrão.",
  "remote.resources.available": "Servidor possui %d plugins, %d agentes, %d skills disponíveis",
  "paste.detected": "📋 Colado (%d caracteres, %d linhas)",
  "paste.detected.short": "📋 Colado (%d caracteres)",
  "context.display.label.description": "Descrição:",
  "context.display.label.mode": "Modo:",
  "context.display.label.files": "Arquivos:",
  "context.display.label.size": "Tamanho:",
  "context.display.label.tags": "Tags:",
  "context.display.label.tokens": "Tokens:",
  "context.display.label.created": "Criado:",
  "context.display.total_injected": "Total injetado:",
  "context.display.cache_info": "Contextos são injetados como system prompt e cacheados",
  "context.display.cache_anthropic": "Anthropic: cache_control ephemeral (~90%% de desconto)",
  "context.display.cache_openai": "OpenAI: prompt caching automático (~50%% de desconto)",
  "context.display.large_context_warning": "Contexto grande! Considere usar chunks (/context attach %s --chunks 1,2)",
  "context.display.metrics.total_contexts": "Total de Contextos:",
  "context.display.metrics.attached_contexts": "Contextos Anexados:",
  "context.display.metrics.total_files": "Total de Arquivos:",
  "context.display.metrics.total_size": "Tamanho Total:",
  "context.display.metrics.by_mode": "Contextos por Modo:",
  "context.display.metrics.storage_path": "Caminho de Armazenamento:",
  "context.display.info.context_label": "📦 Contexto:",
  "context.display.info.id_label": "ID:",
  "context.display.info.general_header": "📊 INFORMAÇÕES GERAIS",
  "context.display.info.mode_label": "  Modo:",
  "context.display.info.content_label": "  Conteúdo:",
  "context.display.info.content_value": "%d arquivos | %.2f MB",
  "context.display.info.tags_label": "  Tags:",
  "context.display.info.created_at": "  Criado em:",
  "context.display.info.updated_at": "  Atualizado em:",
  "context.display.stats.type_distribution_header": "📂 DISTRIBUIÇÃO POR TIPO",
  "context.display.stats.type_line": "%d arquivos (%.1f%%) | %.2f KB",
  "context.display.chunks.structure_header": "🧩 ESTRUTURA EM CHUNKS",
  "context.display.chunks.strategy": "Estratégia:",
  "context.display.chunks.total": "Total:",
  "context.display.chunks.total_value": "%d chunks",
  "context.display.chunks.detail_tip": "💡 Use '/context show <nome>' para ver detalhes completos dos chunks",
  "context.display.chunks.chunk_label": "Chunk %d/%d",
  "context.display.chunks.content_label": "Conteúdo:",
  "context.display.chunks.content_value": "%d arquivos | %.2f KB | ~%d tokens",
  "context.display.files.structure_header": "📁 ESTRUTURA DE ARQUIVOS",
  "context.display.files.first_n_of_total": "Primeiros %d de %d arquivos:",
  "context.display.files.and_more": "... e mais %d arquivos",
  "context.display.files.show_all_tip": "💡 Use '/context show <nome>' para ver todos os arquivos",
  "context.display.files.root_dir": "(raiz)",
  "context.display.attachment.header": "📌 STATUS DE ANEXAÇÃO",
  "context.display.attachment.attached_sessions": "Anexado em %d sessão(ões):",
  "context.display.attachment.not_attached": "Não anexado a nenhuma sessão",
  "context.display.attachment.attach_instruction": "Para anexar este contexto à sessão atual:",
  "context.display.attachment.chunked_info": "Este contexto está dividido em chunks. Você pode:",
  "context.display.attachment.attach_all": "Anexar todos os chunks",
  "context.display.attachment.attach_specific": "Anexar chunks específicos com:",
  "context.help.title": "📦 Gerenciamento de Contextos",
  "context.help.create_header": "Criar Contexto:",
  "context.help.arg.name": "nome",
  "context.help.arg.paths": "caminhos...",
  "context.help.arg.options": "opções",
  "context.help.arg.mode": "modo",
  "context.help.arg.text": "texto",
  "context.help.arg.path": "caminho",
  "context.help.arg.new_name": "novo-nome",
  "context.help.mode_desc": "Modo: full, summary, chunked, smart, knowledge",
  "context.help.description_desc": "Descrição do contexto",
  "context.help.tags_desc": "Tags separadas por vírgula",
  "context.help.force_desc": "Sobrescreve se já existir",
  "context.help.example_label": "Exemplo:",
  "context.help.update_header": "Atualizar Contextos:",
  "context.help.new_mode_desc": "Novo modo de processamento",
  "context.help.new_description_desc": "Nova descrição",
  "context.help.new_tags_desc": "Novas tags",
  "context.help.notes_label": "Notas:",
  "context.help.update_note1": "• Apenas os campos fornecidos serão atualizados",
  "context.help.update_note2": "• Se não fornecer paths, mantém os arquivos atuais",
  "context.help.update_note3": "• UpdatedAt é sempre atualizado",
  "context.help.attach_header": "Anexar/Desanexar:",
  "context.help.attach_desc": "Anexa contexto à sessão atual",
  "context.help.detach_desc": "Desanexa contexto da sessão",
  "context.help.list_view_header": "Listar e Visualizar:",
  "context.help.list_desc": "Lista todos os contextos",
  "context.help.show_desc": "Mostra detalhes completos de um contexto",
  "context.help.inspect_desc": "Análise estatística profunda do contexto",
  "context.help.inspect_chunk_desc": "Inspeciona chunk específico",
  "context.help.attached_desc": "Mostra contextos anexados à sessão",
  "context.help.manage_header": "Gerenciar:",
  "context.help.delete_desc": "Deleta um contexto",
  "context.help.merge_desc": "Mescla múltiplos contextos",
  "context.help.import_export_header": "Importar/Exportar:",
  "context.help.export_desc": "Exporta contexto para arquivo",
  "context.help.import_desc": "Importa contexto de arquivo",
  "context.help.metrics_header": "Métricas:",
  "context.help.metrics_desc": "Mostra estatísticas de uso",
  "context.help.note1": "• Contextos anexados são automaticamente incluídos nos prompts à LLM",
  "context.help.note2": "• Use prioridade para controlar a ordem (menor = primeiro)",
  "context.help.note3": "• Contextos mesclados removem duplicatas automaticamente",
  "context.inspect.usage": "Uso: /context inspect <nome> [--chunk N]",
  "context.inspect.error.not_found": "Contexto '%s' não encontrado",
  "context.inspect.error.chunk_not_found": "Chunk %d não existe (disponíveis: 1-%d)",
  "context.inspect.header": "\n🔍 INSPEÇÃO DETALHADA",
  "context.inspect.size_class.small": "pequeno (<10KB)",
  "context.inspect.size_class.medium": "médio (10-100KB)",
  "context.inspect.size_class.large": "grande (>100KB)",
  "context.inspect.stats_header": "📊 ANÁLISE ESTATÍSTICA",
  "context.inspect.total_lines": "Total de linhas de código:",
  "context.inspect.avg_lines": "Média de linhas por arquivo:",
  "context.inspect.size_distribution_header": "📐 DISTRIBUIÇÃO DE TAMANHO",
  "context.inspect.size_distribution_line": "%s: %d arquivos (%.1f%%)",
  "context.inspect.extensions_header": "🗂️ EXTENSÕES ENCONTRADAS",
  "context.inspect.no_extension": "(sem extensão)",
  "context.inspect.extension_line": "%s: %d arquivo(s)",
  "context.inspect.chunk_analysis_header": "🧩 ANÁLISE DE CHUNKS",
  "context.inspect.chunk_avg_size": "Tamanho médio por chunk:",
  "context.inspect.chunk_min_size": "Menor chunk:",
  "context.inspect.chunk_max_size": "Maior chunk:",
  "context.inspect.chunk_variation": "Variação:",
  "context.inspect.chunk_header": "🔍 INSPEÇÃO DO CHUNK %d/%d",
  "context.inspect.files_count": "%d arquivos",
  "context.inspect.estimated_tokens": "Tokens estimados:",
  "context.inspect.file_list_header": "📋 LISTA COMPLETA DE ARQUIVOS",
  "context.inspect.label.type": "Tipo:",
  "context.inspect.label.lines": "Linhas:",
  "context.io.error.chunk_requires_number": "--chunk requer um número (ex: --chunk 1)",
  "context.io.error.invalid_chunk_number": "número de chunk inválido: %s",
  "context.io.error.chunks_requires_numbers": "--chunks requer números separados por vírgula (ex: --chunks 1,2,3)",
  "context.io.error.unknown_flag": "flag desconhecida: %s",
  "context.io.error.rag_with_chunks": "--rag não pode ser combinado com --chunk/--chunks (seleção semântica vs. manual)",
  "context.io.label.rag_topk": "Retrieval semântico (passagens):",
  "context.io.warn.rag_no_provider": "  ⚠ --rag requer um provider de embeddings (defina CHATCLI_EMBED_PROVIDER); anexando como conteúdo completo por enquanto",
  "context.io.error.not_chunked": "o contexto '%s' não está dividido em chunks",
  "context.io.attach_success": "✅ Contexto '%s' anexado com sucesso!",
  "context.io.label.priority": "Prioridade:",
  "context.io.label.selected_chunks": "Chunks selecionados:",
  "context.io.label.of": "de",
  "context.io.chunk_detail": "Chunk %d: %s (%d arquivos, %.2f KB)",
  "context.io.label.total_attached": "Total anexado:",
  "context.io.total_attached_value": "%d arquivos | %.2f MB",
  "context.io.label.attached": "Anexado:",
  "context.io.attached_all_chunks": "Todos os %d chunks (%d arquivos, %.2f MB)",
  "context.io.label.estimated_cost": "💡 Custo estimado:",
  "context.io.cached_via_system_prompt": "(cacheado via system prompt)",
  "context.io.knowledge_attached": "base de conhecimento — %d trechos, %.2f MB indexados (o corpus fica FORA do prompt)",
  "context.io.knowledge_cost_note": "(só o index card; trechos relevantes recuperados a cada turno)",
  "context.io.large_context_tip": "Contexto grande — considere usar chunks para reduzir custo",
  "context.handler.error.invalid_mode": "modo inválido: %s (use: full, summary, chunked, smart, knowledge)",
  "context.handler.label.name": "Nome:",
  "context.handler.label.paths": "Paths:",
  "agent.persona.usage.load": "Uso: /agent load <nome>",
  "agent.persona.usage.attach": "Uso: /agent attach <nome>",
  "agent.persona.usage.detach": "Uso: /agent detach <nome>",
  "agent.persona.directory": "Diretório",
  "agent.persona.list.create_hint": "Crie um arquivo .md com frontmatter YAML para definir um agente.",
  "agent.persona.list.header": "Agentes Disponíveis:",
  "agent.persona.no_description": "(sem descrição)",
  "agent.persona.list.load_hint": "Use %s para carregar um agente",
  "agent.persona.skills.header": "Skills Disponíveis:",
  "agent.persona.load.error": "Erro ao carregar agente",
  "agent.persona.load.success": "✓ Agente '%s' carregado com sucesso!",
  "agent.persona.load.skills_attached": "Skills anexadas:",
  "agent.persona.load.skills_missing": "Skills não encontradas (ignoradas):",
  "agent.persona.load.plugins_enabled": "Plugins habilitados:",
  "agent.persona.load.ready": "Pronto para uso! A persona será aplicada automaticamente no próximo comando.",
  "agent.persona.load.example": "Exemplo",
  "agent.persona.load.or": "ou",
  "agent.persona.unload.success": "✓ Agente '%s' desativado.",
  "agent.persona.show.active_header": "Agente Ativo:",
  "agent.persona.show.name": "Nome",
  "agent.persona.show.description": "Descrição",
  "agent.persona.show.file": "Arquivo",
  "agent.persona.show.skills_loaded": "Skills carregadas",
  "agent.persona.show.skills_missing": "Skills faltando",
  "agent.persona.show.prompt_preview": "Preview do Prompt Composto",
  "agent.persona.show.truncated": "(truncado, use /agent show --full para ver completo)",
  "agent.persona.show.total_size": "Tamanho total",
  "agent.persona.show.characters": "caracteres",
  "agent.persona.status.header": "Gerenciamento de Agentes (Personas)",
  "agent.persona.status.active": "Agente ativo",
  "agent.persona.status.none": "Nenhum agente ativo (usando persona padrão)",
  "agent.persona.help.management_header": "Subcomandos de Gerenciamento:",
  "agent.persona.help.list": "Lista agentes disponíveis",
  "agent.persona.help.load": "Carrega um agente específico",
  "agent.persona.help.skills": "Lista skills disponíveis",
  "agent.persona.help.show": "Mostra agente ativo e seu prompt (use --full para exibir tudo)",
  "agent.persona.help.status": "Lista apenas os agentes anexados",
  "agent.persona.help.off": "Desativa o agente atual",
  "agent.persona.help.exec_header": "Modo Execução (com tarefa):",
  "agent.persona.help.agent_task": "Executa uma tarefa no modo agente",
  "agent.persona.help.coder_task": "Executa no modo engenheiro de software",
  "agent.persona.help.agents_dir": "Agentes",
  "agent.persona.attach.error": "Erro ao anexar",
  "agent.persona.attach.success": "Agente '%s' anexado! Skills adicionadas: %d",
  "agent.persona.detach.error": "Erro ao desanexar",
  "agent.persona.detach.success": "Agente '%s' removido da sessão.",
  "agent.persona.attached.header": "Agentes Anexados:",
  "agent.persona.unload_all.success": "✇ Todos os agentes foram desativados.",
  "skill.registry.not_initialized": "Registro de skills não inicializado.",
  "skill.invoke.not_invocable": "Esta skill existe mas não é invocável (defina `user-invocable: true` no frontmatter)",
  "skill.error": "Erro",
  "skill.warning": "Aviso",
  "skill.usage.search": "Uso: /skill search <consulta>",
  "skill.usage.install": "Uso: /skill install <nome> [--from <registro>]",
  "skill.usage.uninstall": "Uso: /skill uninstall <nome>",
  "skill.usage.info": "Uso: /skill info <nome> [--from <registro>]",
  "skill.unknown_subcommand": "Subcomando desconhecido '%s'. Use /skill help para ajuda.",
  "skill.search.searching": "Pesquisando registros por",
  "skill.search.no_results": "Nenhuma skill encontrada.",
  "skill.search.results": "Resultados (%d encontrados)",
  "skill.search.install_hint": "Use %s para instalar uma skill.",
  "skill.installed": "instalada",
  "skill.installed_other": "instalada de outra fonte",
  "skill.not_installed": "não instalada",
  "skill.install.installing": "Instalando",
  "skill.install.not_found_in": "Skill não encontrada",
  "skill.install.in_registry": "no registro",
  "skill.install.available_in": "Disponível em",
  "skill.install.found_in_multiple": "Skill",
  "skill.install.registries_label": "encontrada em múltiplos registros",
  "skill.install.use_from": "Use %s para escolher.",
  "skill.install.blocked": "BLOQUEADO",
  "skill.install.warning": "AVISO",
  "skill.install.confirm": "Continuar com a instalação?",
  "skill.install.canceled": "Instalação cancelada.",
  "skill.install.result_installed": "Instalada",
  "skill.install.result_updated": "Atualizada",
  "skill.install.from": "de",
  "skill.install.path": "Caminho",
  "skill.install.available": "Skill '%s' está agora disponível.",
  "skill.install.verify": "Verifique com",
  "skill.refresh_failed": "falha ao atualizar skills",
  "skill.uninstall.not_installed": "Skill '%s' não está instalada.",
  "skill.uninstall.removing": "Removendo skill",
  "skill.uninstall.done": "Pronto.",
  "skill.uninstall.success": "Skill '%s' desinstalada.",
  "skill.uninstall.multiple": "Múltiplas skills com nome",
  "skill.uninstall.specify": "encontradas de fontes diferentes",
  "skill.uninstall.use_full_name": "Use o nome completo para especificar qual desinstalar.",
  "skill.list.empty": "Nenhuma skill instalada.",
  "skill.list.search_hint": "Use %s para buscar e instalar skills.",
  "skill.list.header": "Skills Instaladas",
  "skill.registries.header": "Registros",
  "skill.registries.configured": "Registros Configurados",
  "skill.registries.config": "Config",
  "skill.registries.edit_hint": "Edite o arquivo de configuração para adicionar registros personalizados.",
  "skill.registries.toggle_hint": "Use %s para ativar/desativar.",
  "skill.registry.not_found": "Registro não encontrado",
  "skill.registry.available": "Registros disponíveis",
  "skill.registry.enabled": "Ativado",
  "skill.registry.disabled": "Desativado",
  "skill.registry.restart_hint": "(entra em vigor na próxima sessão)",
  "skill.info.not_found": "Skill '%s' não encontrada.",
  "skill.info.name": "Nome",
  "skill.info.desc": "Desc",
  "skill.info.version": "Versão",
  "skill.info.author": "Autor",
  "skill.info.source": "Fonte",
  "skill.info.tags": "Tags",
  "skill.info.downloads": "Downloads",
  "skill.info.installs": "Instalações",
  "skill.info.repo": "Repositório",
  "skill.info.page": "Página",
  "skill.info.security": "Segurança",
  "skill.info.moderation": "Moderação",
  "skill.info.status": "Status",
  "skill.info.path": "Caminho",
  "skill.info.sources": "fontes",
  "skill.help.header": "Comandos do Registro de Skills",
  "skill.help.search": "Pesquisa skills em todos os registros",
  "skill.help.install": "Instala uma skill de um registro",
  "skill.help.uninstall": "Remove uma skill instalada",
  "skill.help.list": "Lista skills instaladas",
  "skill.help.info": "Mostra detalhes da skill (local + registro)",
  "skill.help.registries": "Mostra registros configurados",
  "skill.help.registry_toggle": "Ativar ou desativar um registro",
  "skill.help.prefer": "Definir fonte preferida para skills com conflito de nome",
  "skill.help.pin": "Fixa uma skill para ser injetada em todo turno da sessão",
  "skill.help.unpin": "Remove uma skill do conjunto fixado",
  "skill.help.pinned": "Lista as skills fixadas na sessão",
  "skill.usage.pin": "Uso: /skill pin <nome>",
  "skill.usage.unpin": "Uso: /skill unpin <nome>",
  "skill.pin.no_manager": "Gerenciador de personas não inicializado.",
  "skill.pin.not_found": "Skill não encontrada",
  "skill.pin.search_hint": "Procure com %s ou instale com /skill install <nome>.",
  "skill.pin.disabled_invocation": "Skill marcada como manual-only (disable-model-invocation)",
  "skill.pin.use_manual_hint": "Use %s para invocar manualmente em um único turno.",
  "skill.pin.already": "Skill já está fixada:",
  "skill.pin.success": "Skill fixada:",
  "skill.pin.effect": "Será injetada em todo turno até /skill unpin.",
  "skill.unpin.success": "Skill removida do conjunto fixado:",
  "skill.unpin.not_pinned": "Skill não está fixada:",
  "skill.pinned.header": "Skills fixadas nesta sessão",
  "skill.pinned.empty": "Nenhuma skill fixada nesta sessão.",
  "skill.pinned.hint": "Use %s para fixar uma skill.",
  "skill.list.pinned_marker": "[fixada]",
  "skill.prefer.none": "Nenhuma preferência de skill definida.",
  "skill.prefer.hint": "Use %s para definir uma preferência.",
  "skill.prefer.header": "Preferências de Skills",
  "skill.prefer.current": "Preferência",
  "skill.prefer.default_order": "padrão — local tem prioridade",
  "skill.prefer.available": "Fontes disponíveis",
  "skill.prefer.active": "preferida",
  "skill.prefer.not_installed": "Skill '%s' não está instalada de nenhuma fonte.",
  "skill.prefer.set": "Preferência definida:",
  "skill.prefer.reset": "Preferência removida para",
  "skill.prefer.effect": "Entra em vigor na próxima ativação de skill.",
  "skill.prefer.source_not_found": "Fonte não encontrada",
  "skill.prefer.for_skill": "para a skill",
  "skill.help.show_help": "Mostra esta ajuda",
  "skill.help.skills_dir": "Dir de skills",
  "coder.security.header": "VERIFICAÇÃO DE SEGURANÇA",
  "coder.security.task": "Tarefa",
  "coder.security.action": "Ação",
  "coder.security.rule": "Regra",
  "coder.security.exec_requires_approval": "exec requer aprovação individual",
  "coder.security.no_rule_for": "nenhuma regra para '%s'",
  "coder.security.choose": "Escolha",
  "coder.security.yes_once": "Sim, executar (uma vez)",
  "coder.security.allow_always": "Permitir sempre (%s)",
  "coder.security.no_skip": "Não, pular",
  "coder.security.deny_always": "Bloquear sempre (%s)",
  "coder.security.canceled": "Cancelado",
  "coder.security.invalid_input": "Entrada inválida — ação negada por segurança",
  "coder.security.action.exec": "Executar comando no shell",
  "coder.security.action.test": "Executar testes",
  "coder.security.action.write": "Escrever arquivo",
  "coder.security.action.patch": "Modificar arquivo (patch)",
  "coder.security.action.read": "Ler arquivo",
  "coder.security.action.search": "Pesquisar no código",
  "coder.security.action.tree": "Listar estrutura de diretórios",
  "coder.security.action.unknown": "Ação desconhecida",
  "coder.security.detail.file": "arquivo",
  "coder.security.detail.term": "termo",
  "connect.usage.main": " Uso: /connect <host:port> [--token <t>] [--use-local-auth] [--provider <p>] [--model <m>] [--llm-key <k>]",
  "connect.usage.stackspot": "   StackSpot: --client-id <id> --client-key <key> --realm <r> --agent-id <a>",
  "connect.usage.ollama": "   Ollama:    --ollama-url <url>",
  "connect.usage.tls": "   TLS:       --tls [--ca-cert <caminho>]",
  "connect.error.already_connected": " Já conectado a um servidor remoto. Use /disconnect primeiro.",
  "connect.error.resolve_local_auth": " Falha ao resolver autenticação local: %v",
  "connect.status.connecting": " Conectando a %s...",
  "connect.error.connection_failed": " Falha na conexão: %v",
  "connect.error.health_check_failed": " Falha no health check: %v",
  "connect.error.server_not_healthy": " O servidor não está saudável",
  "connect.info.using_local_oauth": "usando credenciais OAuth locais",
  "connect.info.using_api_key": "usando sua chave de API",
  "connect.status.connected": " Conectado ao servidor remoto (%s)",
  "connect.info.watcher_active": " Watcher K8s ativo: %s (contexto injetado nos prompts)",
  "connect.hint.disconnect": " Use /disconnect para voltar ao modo local.",
  "connect.error.not_connected": " Não está conectado a um servidor remoto.",
  "connect.status.disconnected": " Desconectado do servidor remoto.",
  "connect.status.back_to_local": " De volta ao modo local: %s (%s)",
  "connect.status.back_to_local_no_provider": " De volta ao modo local (nenhum provedor LLM configurado).",
  "watch.usage.header": " Uso:",
  "watch.usage.start": "   /watch start --deployment <nome> [--namespace <ns>] [--interval <dur>] [--window <dur>] [--max-log-lines <n>] [--kubeconfig <caminho>]",
  "watch.usage.stop": "   /watch stop",
  "watch.usage.status": "   /watch status",
  "watch.error.already_running": " Watcher K8s já está em execução. Use /watch stop primeiro.",
  "watch.error.invalid_flag": " %s inválido: %s",
  "watch.error.unknown_flag": " Flag desconhecida: %s",
  "watch.error.deployment_required": " --deployment é obrigatório.",
  "watch.status.starting": " Iniciando watcher K8s para deployment/%s no namespace/%s ...",
  "watch.status.config": "   Intervalo: %s | Janela: %s | Máx linhas de log: %d",
  "watch.error.start_failed": " Falha ao iniciar watcher: %s",
  "watch.status.started": " Watcher K8s iniciado. O contexto será injetado em todos os prompts.",
  "watch.hint.status_stop": " Use /watch status para verificar, /watch stop para parar.",
  "watch.error.not_running": " Nenhum watcher K8s em execução.",
  "watch.status.stopped": " Watcher K8s parado.",
  "watch.status.active_with_info": " Watcher K8s: %s",
  "watch.status.active_no_info": " Watcher K8s: ativo (sem informações disponíveis)",
  "watch.error.remote_query_failed": " Falha ao consultar status do watcher remoto: %s",
  "watch.status.remote_inactive": " O servidor não possui watcher K8s ativo.",
  "watch.status.remote_active": " Watcher K8s (remoto): %s",
  "watch.status.remote_details": "   Alvo: %s/%s | Pods: %d | Alertas: %d | Snapshots: %d",
  "watch.status.inactive": " Nenhum watcher K8s ativo. Inicie com: /watch start --deployment <nome>",
  "metrics.header": "Métricas de Execução do ChatCLI",
  "metrics.label.provider": "Provedor:",
  "metrics.label.model": "Modelo:",
  "metrics.session.unsaved": "(não salva)",
  "metrics.label.session": "Sessão:",
  "metrics.label.history_msgs": "Msgs no histórico:",
  "metrics.label.tokens": "Tokens (est.):",
  "metrics.label.turns": "Turnos:",
  "metrics.header.go_runtime": "Runtime Go",
  "metrics.label.goroutines": "Goroutines:",
  "metrics.label.alloc": "Alocado:",
  "metrics.label.sys": "Sistema:",
  "metrics.label.gc_cycles": "Ciclos GC:",
  "metrics.header.connection": "Conexão",
  "metrics.label.remote": "Remoto:",
  "metrics.value.connected": "conectado",
  "metrics.value.local": "local",
  "metrics.label.watcher": "Watcher:",
  "metrics.value.inactive": "inativo",
  "auth.usage": "Uso: /auth status | login <anthropic|openai-codex|github-copilot> | logout <anthropic|openai-codex|github-copilot>",
  "auth.login.usage": "Use: /auth login anthropic | openai-codex | github-copilot",
  "auth.login.failed": "Login falhou: %v",
  "auth.login.success": "Logado (%s) perfil: %s",
  "auth.error.unknown_provider": "Provedor desconhecido. Use: anthropic | openai-codex | github-copilot",
  "auth.logout.usage": "Use: /auth logout anthropic | openai-codex | github-copilot",
  "auth.logout.failed": "Logout falhou: %v",
  "auth.logout.success": "Logout realizado",
  "auth.error.unknown_subcommand": "Subcomando desconhecido. Use: status | login | logout",
  "memory.error.not_available": "Sistema de memória não disponível.",
  "memory.usage": "Uso: /memory [today|yesterday|week|longterm|list|load <data>|profile|profile set <k>=<v>|remember [cat] <fato>|forget <trecho>|facts|topics|projects|stats|compact|<AAAA-MM-DD>]",
  "memory.no_notes_for": "Nenhuma nota encontrada para",
  "memory.notes_for": "Notas de memória para",
  "memory.no_notes_week": "Nenhuma nota nos últimos 7 dias.",
  "memory.header.week": "Notas de memória — últimos 7 dias",
  "memory.no_longterm": "Nenhuma memória de longo prazo armazenada.",
  "memory.header.longterm": "Memória de Longo Prazo (MEMORY.md)",
  "memory.error.invalid_date": "Data inválida.",
  "memory.error.date_format_hint": "Use o formato AAAA-MM-DD ou 'yesterday'",
  "memory.already_loaded": "Notas de %s já carregadas nesta conversa.",
  "memory.loaded_into_context": "Memória de %s carregada no contexto da conversa (%d caracteres)",
  "memory.header.files": "Arquivos de memória",
  "memory.no_daily_notes": "Nenhuma nota diária ainda",
  "memory.daily_notes_count": "%d notas diárias:",
  "rewind.no_checkpoints": "Nenhum checkpoint disponível ainda.",
  "rewind.header": "REBOBINAR — Selecione um checkpoint para restaurar",
  "rewind.select_prompt": "Selecione [1-%d] ou (q) para sair:",
  "rewind.canceled": "Rebobinar cancelado.",
  "rewind.invalid_selection": "Seleção inválida.",
  "rewind.success": "Rebobinado para checkpoint [%d] (%s, %d mensagens)",
  "compact.error.no_provider": "Nenhum provedor LLM configurado.",
  "compact.error.history_too_short": "Histórico muito curto para compactar.",
  "compact.error.failed": "Compactação falhou: %s",
  "compact.success": "Compactado: %d → %d mensagens",
  "compact.error.not_enough_with_instruction": "Mensagens insuficientes para compactar com instrução.",
  "compact.error.not_enough_middle": "Mensagens intermediárias insuficientes para compactar.",
  "compact.compacting_with_instruction": "Compactando com instrução:",
  "compact.preserved": "preservado",
  "compact.status.start": "📦 Compactando histórico (%d msgs, %s → alvo %s)",
  "compact.status.trim": "🧹 Trim: removendo reasoning/dedup (sem LLM)…",
  "compact.status.trim_sufficient": "✓ Trim bastou (%s → %s)",
  "compact.status.summarize": "🧠 Resumindo mensagens antigas via LLM (pode levar 30-90s — ESC cancela)…",
  "compact.status.canceled": "⚠ Compactação cancelada pelo usuário",
  "compact.status.summarize_failed": "⚠ Sumarização falhou (%v) — caindo para truncamento",
  "compact.status.summarize_applied": "✓ Resumo aplicado (%d → %d msgs, %s → %s)",
  "compact.status.emergency": "✂ Truncamento de emergência — mensagens antigas removidas",
  "compact.status.truncated": "✓ Truncado (%d → %d msgs)",
  "agent.microcompact.applied": "microcompact: %d truncados, %d resumidos, %s liberados",
  "agent.queue.new_user_instruction": "Nova instrução do usuário recebida",
  "agent.queue.indicator": "(%d na fila)",
  "agent.spinner.executing": "EXECUTANDO: %s %s",
  "agent.spinner.action_placeholder": "ação",
  "slash.help.description": "Retorna o catálogo de comandos do chatcli (slash e @-modificadores).",
  "slash.version.description": "Retorna a versão do chatcli em execução e se há atualização disponível.",
  "plugins.todo.description": "Gerencia o plano de tarefas do agente: escreve plano completo, lista estado atual ou marca uma tarefa por id (paridade com TodoWrite do Claude Code)",
  "plugins.todo.describe.write": "Atualizando plano de tarefas",
  "plugins.todo.describe.list": "Listando plano de tarefas",
  "plugins.todo.describe.mark": "Marcando tarefa",
  "plugins.todo.describe.mark_id": "Marcando tarefa #%s",
  "plugins.read.description": "Lê conteúdo de arquivos do workspace (suporta intervalo de linhas, head/tail, base64)",
  "plugins.read.describe": "Lendo: %s",
  "plugins.knowledge.describe_search": "Buscando na knowledge base: \"%s\"",
  "plugins.knowledge.describe_get": "Lendo documento: %s",
  "plugins.knowledge.describe_toc": "Listando conteúdo da knowledge base",
  "plugins.knowledge.describe_list": "Listando knowledge bases anexadas",
  "plugins.knowledge.describe_generic": "Consultando a knowledge base",
  "plugins.docsflatten.description": "Achata documentação OU código/infra (Markdown, código-fonte, Terraform, YAML Kubernetes/Argo, shell) de diretório local ou repo git em chunks prontos para IA (text/jsonl/json/yaml); kind=code chunka por estrutura; jsonl alimenta /context --mode knowledge",
  "plugins.docsflatten.describe": "Achatando docs: %s",
  "plugins.context.description": "Constrói e gerencia suas próprias bases de conhecimento sem o usuário: cria um contexto a partir de docs (um corpus.jsonl do @docs-flatten, um diretório ou arquivos), atacha (com retrieval RAG opcional), inspeciona (list/status), desatacha ou deleta. Combina com @websearch + @docs-flatten + @knowledge para um pipeline autônomo de documentação.",
  "plugins.context.describe.create": "Construindo base de conhecimento: %s",
  "plugins.context.describe.update": "Atualizando contexto: %s",
  "plugins.context.describe.show": "Mostrando contexto: %s",
  "plugins.context.describe.inspect": "Inspecionando contexto: %s",
  "plugins.context.describe.merge": "Mesclando contextos em: %s",
  "plugins.context.describe.export": "Exportando contexto: %s",
  "plugins.context.describe.import": "Importando contexto",
  "plugins.context.describe.metrics": "Calculando métricas de contexto",
  "plugins.context.describe.attach": "Atachando contexto: %s",
  "plugins.context.describe.detach": "Desatachando contexto: %s",
  "plugins.context.describe.list": "Listando contextos",
  "plugins.context.describe.status": "Verificando contextos atachados",
  "plugins.context.describe.delete": "Deletando contexto: %s",
  "plugins.registrytags.description": "Lista as tags publicadas de uma imagem de contêiner em registries OCI públicos/privados (Docker Hub, GCR, GHCR, Quay, ACR, Harbor, Artifactory). Keyless para imagens públicas; lê ~/.docker/config.json para as privadas. Nenhuma imagem é baixada.",
  "plugins.registrytags.describe": "Listando tags: %s",
  "plugins.registrytags.none": "Nenhuma tag encontrada para %s",
  "plugins.registrytags.truncated": "truncado em %d",
  "plugins.wikipedia.description": "Consulta a Wikipedia: busca títulos de artigos correspondentes ou lê a introdução em texto puro de um artigo. Keyless, com idioma configurável (lang=en|pt|es|...).",
  "plugins.wikipedia.describe_search": "Buscando na Wikipedia: %s",
  "plugins.wikipedia.describe_read": "Lendo na Wikipedia: %s",
  "plugins.wikipedia.results_header": "Resultados da busca na Wikipedia (use o título exato com read):",
  "plugins.wikipedia.no_results": "Nenhum resultado na Wikipedia para %s",
  "plugins.wikipedia.no_article": "Nenhum resumo encontrado para o artigo %s",
  "plugins.diagram.description": "Renderiza um diagrama de arquitetura, dependências, fluxo ou ER em PNG/SVG/JPG a partir de Graphviz DOT, com textos nítidos e 100%% corretos — determinístico, nunca uma imagem com letras 'chutadas'. O Graphviz é embedado (WASM), então não precisa instalar nada; se houver um Graphviz do sistema ('dot') no PATH ele é usado automaticamente para fontes e layout mais nítidos (CHATCLI_DIAGRAM_BACKEND=auto|system|embedded). Também monta o grafo real de imports de um módulo Go (gomod). Prefira esta ferramenta ao @image para qualquer diagrama de nós/arestas.",
  "plugins.graphview.description": "Renderiza um grafo INTERATIVO estilo Obsidian (force-directed): arraste os nós, dê zoom, pan, busque e filtre por tipo, em um arquivo HTML autocontido aberto no navegador. Diferente do @diagram (imagem estática), o resultado fica vivo, se mexendo com física. Fontes: json (você fornece nós/arestas — ideal para mapear a conversa atual), knowledge (o grafo de conhecimento interno), conversation (grafo estrutural da sessão). Autocontido: motor JS embutido, sem CDN, sem rede, sem API key.",
  "plugins.graphview.describe": "Renderizando grafo interativo (fonte: %s)",
  "plugins.graphview.empty": "O grafo não tem nós para renderizar.",
  "plugins.graphview.too_big": "grafo grande demais para renderizar interativamente (%d nós, máx %d); reduza o conjunto de nós ou renderize um subgrafo.",
  "plugins.graphview.rendered": "Grafo interativo renderizado → %s (%d nós, %d arestas)",
  "plugins.graphview.opened": "Aberto no navegador padrão. Arraste os nós, scroll para zoom, arraste o fundo para mover, clique num tipo na legenda para filtrar.",
  "plugins.graphview.open_hint": "Abra este arquivo no navegador para explorar: %s",
  "plugins.graphview.default_title": "Grafo",
  "cfg.section.graphview.title": "Visualização Interativa de Grafo (@graphview)",
  "cfg.graphview.about": "Renderiza um grafo force-directed arrastável em HTML autocontido. Funciona em agent, coder e chat (no chat é controlado por CHATCLI_CHAT_GRAPHVIEW).",
  "cfg.chat.gv_effective": "graphview no chat (efetivo)",
  "cfg.chat.gv_invalid": "valor inválido '%s' para graphview",
  "cfg.chat.gv_valid": "valores válidos: on, off, toggle, status",
  "cfg.chat.usage_gv_on": "habilita renderização de grafo interativo no chat",
  "cfg.chat.usage_gv_off": "desabilita renderização de grafo interativo no chat",
  "complete.config.chat_graphview": "ativa/desativa renderização de grafo interativo no chat",
  "plugins.diagram.describe_render": "Renderizando diagrama → %s",
  "plugins.diagram.describe_gomod": "Montando grafo de imports Go: %s",
  "plugins.diagram.rendered": "Diagrama renderizado → %s (%s, %s)",
  "plugins.diagram.dimensions": "dimensões: %s",
  "plugins.diagram.no_edges": "Nenhuma aresta de import encontrada em %s",
  "plugins.search.description": "Procura por regex (sintaxe Go) nos arquivos do workspace e retorna arquivo:linha das ocorrências",
  "plugins.search.describe": "Buscando: %s",
  "plugins.tree.description": "Lista a estrutura de diretórios do workspace como árvore ASCII (limitada por profundidade)",
  "plugins.tree.describe": "Listando: %s",
  "plugins.websearch.describe": "Buscando: %s",
  "plugins.webfetch.describe": "Baixando: %s",
  "plugins.coder.describe.read": "Lendo: %s",
  "plugins.coder.describe.search": "Buscando: %s",
  "plugins.coder.describe.exec": "Executando: %s",
  "plugins.coder.describe.write": "Escrevendo: %s",
  "plugins.coder.describe.patch": "Patcheando: %s",
  "plugins.coder.describe.tree": "Listando: %s",
  "plugins.coder.describe.generic": "@coder %s",
  "plugins.park.describe.delay": "Pausando por: %s",
  "plugins.park.describe.until": "Pausando até: %s",
  "plugins.park.describe.for_url": "Aguardando URL: %s",
  "plugins.park.describe.for_cmd": "Aguardando cmd: %s",
  "plugins.park.describe.generic": "@park %s",
  "plugins.scheduler.describe.schedule": "Agendando: %s",
  "plugins.scheduler.describe.query": "@scheduler query: %s",
  "plugins.scheduler.describe.cancel": "@scheduler cancel: %s",
  "plugins.scheduler.describe.wait": "Aguardando até: %s",
  "plugins.scheduler.describe.list": "Listando tarefas agendadas",
  "plugins.scheduler.describe.generic": "@scheduler %s",
  "agent.early_exit.stagnation": "loop ReAct interrompido: mesma tool_call repetida %d turnos seguidos (estagnação). Defina CHATCLI_AGENT_EARLY_EXIT=0 para desativar.",
  "agent.early_exit.chat_hint": "Dica: essa pergunta parece conversacional — o loop /agent foi ignorado. Use /chat ou digite a pergunta direto para forçar chat, ou /run para forçar o agente.",
  "agent.webfetch.auto_saved": "web_fetch: resposta grande demais para inlinear (%d bytes); salva em %s — use read_file ou repita com filter/from_line/to_line.",
  "agent.preflight.near_cap": "pre-flight: histórico %s ≈ %d%% do cap configurado (%s) — compactando",
  "agent.preflight.warn_no_cap": "histórico %s — se seu ambiente tem proxy/gateway, export CHATCLI_MAX_PAYLOAD=5MB (ajuste p/ limite do proxy)",
  "agent.recovery.reason.ctx_too_long": "contexto muito longo",
  "agent.recovery.reason.payload_413": "limite de payload do proxy/gateway (413/431)",
  "agent.recovery.reason.waf_403": "rejeição do proxy/WAF (403 + sinais de segurança)",
  "agent.recovery.reason.suspected_payload": "suspeita de limite de payload (histórico grande %s + erro de rede)",
  "agent.recovery.retrying": "Falha recuperável (%s) — compactando e tentando novamente",
  "agent.recovery.assumed_cap": "Assumindo limite de 4 MB/payload — exporte CHATCLI_MAX_PAYLOAD (ex.: 5MB, 512KB) para ajustar",
  "oneshot.details_label": "Detalhes",
  "oneshot.error.no_provider": "❌ Nenhum provedor LLM configurado. Use /auth login anthropic | openai-codex | github-copilot para autenticar primeiro.",
  "oneshot.error.empty_input": "❌ Erro no modo one-shot\n\nO modo one-shot foi acionado (via flag -p/--prompt ou stdin), mas nenhum conteúdo de entrada foi fornecido.\n\n- Use a flag -p/--prompt com um texto:\n\n  chatcli -p \"Seu prompt aqui\"\n\n- Ou envie dados via stdin:\n\n  echo \"Texto\" | chatcli -p ou echo \"Texto\" | chatcli",
  "oneshot.error.agent_failed": " ❌ Erro ao executar o agente em modo one-shot",
  "oneshot.error.coder_failed": " ❌ Erro ao executar o coder em modo one-shot",
  "oneshot.error.run_failed": " ❌ Erro ao executar no modo one-shot",
  "command.context.shell_history": "Histórico do Shell (últimos 30 comandos)",
  "command.context.git_info": "Informações do Git",
  "command.context.env_vars": "Variáveis de Ambiente",
  "command.executing": "Executando comando:",
  "command.error.shell_not_found": "Erro ao localizar o shell:",
  "command.error.shell_config_not_found": "Não foi possível determinar o arquivo de configuração para o shell:",
  "command.warning.interactive": "Aviso: Executando comando interativo. O controle será devolvido ao ChatCLI ao final.",
  "command.error.execution": "Erro ao executar comando:",
  "command.output.not_captured": "A saída do comando não pôde ser capturada para o histórico.",
  "command.output.header": "Saída do comando",
  "command.sending_to_ai": "Enviando saída do comando para a IA...",
  "command.error.processing_request": "Ocorreu um erro ao processar a requisição.",
  "cli.error.no_provider_configured": "Nenhum provedor LLM configurado. Use /auth login anthropic | openai-codex | github-copilot para autenticar, depois /switch para selecionar um provedor.",
  "queue.message_queued": "📥 Mensagem na fila (#%d)",
  "queue.full": "⚠ Fila cheia (máx 10). Aguarde.",
  "cli.signal.interrupt": "🛑 Interrupção solicitada pelo usuário! Parando processos...",
  "cli.status.operation_canceled_returning": "✅ Operação cancelada. Retornando ao chat...",
  "cli.error.execution_failed": "❌ Erro na execução: %v",
  "coder.header": "👨‍💻 MODO ENGENHEIRO DE SOFTWARE ATIVADO",
  "coder.objective": "Objetivo",
  "coder.hint.ctrl_c": "💡 Dica: Pressione Ctrl+C a qualquer momento para interromper a execução.",
  "coder.session_finished": "✅ Sessão de engenharia finalizada.",
  "queue.messages_removed": "🗑 %d mensagem(ns) removida(s) da fila.",
  "queue.processing_remaining": "📤 Processando da fila (%d restante(s))...",
  "queue.processing": "📤 Processando da fila...",
  "cli.error.switch_provider_failed": "Erro ao trocar de provedor.",
  "help.command.compact": "Compacta histórico (guiado: /compact manter apenas padrões de API)",
  "help.command.rewind": "Rebobinar para um checkpoint anterior da conversa",
  "help.command.quick_rewind": "Rebobinar rápido (quando o input está vazio)",
  "help.command.memory": "Ver/carregar notas de memória (today, yesterday, week, longterm, list, load <data>)",
  "file.chunk.wait_before_send": "Aguarde 5 segundos antes de enviar o primeiro chunk...",
  "file.chunk.sending_first": "Enviando primeiro chunk para a LLM...",
  "coder.quick_tip.header": "💡 Dica rápida (/coder):",
  "coder.quick_tip.read": "  - read: {\"cmd\":\"read\",\"args\":{\"file\":\"main.go\"}}",
  "coder.quick_tip.search": "  - search: {\"cmd\":\"search\",\"args\":{\"term\":\"Login\",\"dir\":\".\"}}",
  "coder.quick_tip.write": "  - write: {\"cmd\":\"write\",\"args\":{\"file\":\"x.go\",\"encoding\":\"base64\",\"content\":\"...\"}}",
  "coder.quick_tip.exec": "  - exec: {\"cmd\":\"exec\",\"args\":{\"cmd\":\"mkdir -p testeapi\"}}",
  "coder.waiting_for_input": "Aguardando sua resposta (--- para multilinha, 'sair' para encerrar):",
  "multiline.hint": "Modo multilinha — digite %s em uma nova linha para finalizar",
  "multiline.canceled": "multilinha cancelado",
  "agent.status.task_completed": "🏁 TAREFA CONCLUÍDA",
  "agent.status.max_turns_stopped": "⚠️ Limite de %d passos atingido. O agente parou para evitar loop infinito.",
  "agent.telemetry.session": "sessão: %s",
  "agent.label.command": "Comando",
  "agent.dryrun.label": "Dry-run",
  "agent.dryrun.failed": "Dry-run falhou",
  "ai.response_language": "[RESPONSE LANGUAGE]\nYou MUST write ALL your responses in **Brazilian Portuguese (pt-BR)**. This includes: reasoning, explanations, action plans, error messages, questions, and any other text shown to the user. Only code, commands, file paths, and technical identifiers should remain in their original form.",
  "_section.llm": "--- LLM Provider Messages ---",
  "llm.error.marshal_payload": "Erro ao marshalizar o payload",
  "llm.error.marshal_payload_for": "Erro ao marshalizar o payload para %s",
  "llm.error.prepare_request": "erro ao preparar a requisição",
  "llm.error.prepare_request_for": "erro ao preparar payload para %s",
  "llm.error.create_request": "erro ao criar a requisição",
  "llm.error.create_request_for": "Erro ao criar requisição HTTP para %s",
  "llm.error.read_response": "erro ao ler a resposta",
  "llm.error.read_response_for": "Erro ao ler a resposta da %s",
  "llm.error.decode_response": "erro ao decodificar a resposta",
  "llm.error.decode_response_for": "Erro ao decodificar a resposta da %s",
  "llm.error.decode_response_json_for": "Erro ao decodificar a resposta JSON da %s",
  "llm.error.api_error": "erro da API %s: %s",
  "llm.error.api_error_code": "erro da API %s (code %d): %s",
  "llm.error.api_error_payload": "API da %s retornou um erro no payload",
  "llm.error.api_error_base_resp": "API da %s retornou erro via base_resp",
  "llm.error.no_response": "nenhuma resposta recebida da %s",
  "llm.error.no_response_generic": "nenhuma resposta recebida",
  "llm.error.empty_response": "resposta vazia da %s",
  "llm.error.empty_response_max_tokens": "a API da %s retornou uma resposta vazia, provavelmente porque o valor de 'max_tokens' é muito baixo",
  "llm.error.empty_response_unspecified": "a API da %s retornou uma resposta vazia por um motivo não especificado",
  "llm.error.no_choices": "a API da %s não retornou nenhuma resposta (array 'choices' vazio)",
  "llm.error.unexpected_format": "formato inesperado na resposta da %s",
  "llm.error.missing_message_field": "campo 'message' ausente na resposta da %s",
  "llm.error.invalid_message_content": "conteúdo da mensagem não é válido",
  "llm.error.no_text_content": "Nenhum conteúdo de texto encontrado na resposta da %s",
  "llm.error.no_text_content_stream": "Nenhum conteúdo de texto encontrado na resposta da %s (stream)",
  "llm.error.get_response_after_retries": "Erro ao obter resposta da %s após retries",
  "llm.error.request_failed": "Erro na requisição HTTP para %s",
  "llm.error.read_body": "Erro ao ler corpo da resposta do %s",
  "llm.error.content_encoding_unsupported": "content-encoding nao suportado: %s",
  "llm.error.read_stream": "erro ao ler stream: %w",
  "llm.error.read_sse_stream": "erro ao ler stream SSE",
  "llm.error.no_text_from_sse": "nenhum texto extraído do stream SSE da Responses API",
  "llm.warn.empty_choices": "Nenhuma 'choice' na resposta da %s.",
  "llm.warn.empty_content": "Resposta da %s com conteúdo vazio.",
  "llm.warn.could_not_extract_text": "Não foi possível extrair texto da resposta, mesmo com status 'completed'.",
  "llm.warn.could_not_extract_text_error": "não foi possível extrair o texto da resposta da Responses API",
  "llm.minimax.using_anthropic_compat": "MiniMax usando endpoint compatível com Anthropic",
  "llm.info.fetched_models": "Fetched %s models",
  "llm.info.fetched_models_total": "Fetched %s models (total: %d, chat: %d)",
  "llm.info.configuring_provider": "Configurando provedor %s",
  "llm.info.using_custom_max_tokens": "Usando %s personalizado",
  "llm.info.initializing_client": "Inicializando cliente %s",
  "llm.info.starting_request": "Iniciando requisição para %s",
  "llm.info.response_received": "Resposta recebida do %s com sucesso",
  "llm.info.parse_complete": "Parse da resposta do %s concluído com sucesso",
  "llm.info.token_usage_stats": "Estatísticas de uso de tokens do %s",
  "llm.warn.provider_not_available": "%s não definida, o provedor %s não estará disponível",
  "llm.warn.provider_not_configured": "%s não configurado, provedor %s não estará disponível",
  "llm.tool.error.marshaling_payload": "marshaling payload",
  "llm.tool.error.reading_response": "reading response",
  "llm.tool.error.decoding_response": "decoding response",
  "llm.tool.error.decoding_response_body": "decoding response body",
  "llm.tool.error.creating_request": "creating request",
  "llm.tool.error.no_choices": "no choices in response",
  "llm.tool.error.unexpected_choice_format": "unexpected choice format",
  "llm.tool.error.no_message_in_choice": "no message in choice",
  "_section.llm.manager": "--- LLM Manager Messages ---",
  "llm.manager.retry_policy": "Política de Retry configurada",
  "llm.manager.provider_unsupported": "erro: Provedor LLM '%s' não suportado ou não configurado",
  "llm.manager.client_attempt_failed": "Tentativa de obter cliente para provedor não configurado",
  "llm.manager.client_create_error": "Erro ao criar instância do cliente LLM",
  "llm.manager.stackspot_requires_config": "provedor STACKSPOT requer STACKSPOT_REALM e STACKSPOT_AGENT_ID. Forneça-os no .env ou via flags --realm e --agent-id",
  "llm.manager.stackspot_credentials_missing": "CLIENT_ID ou CLIENT_KEY não definidos, o provedor STACKSPOT não estará disponível",
  "llm.manager.model_not_found_ollama": "modelo '%s' não encontrado no Ollama. Modelos disponíveis: %s",
  "llm.manager.ollama_not_active": "OLLAMA_ENABLED não está ativo, provider Ollama ignorado.",
  "llm.manager.ollama_not_detected": "Ollama não foi detectado no endereço configurado; o provider não estará disponível.",
  "llm.manager.ollama_comm_error": "Erro ao se comunicar com o serviço Ollama (verifique se está rodando).",
  "llm.manager.ollama_decode_error": "Não foi possível decodificar a lista de modelos do Ollama.",
  "llm.manager.ollama_no_models": "Nenhum modelo encontrado no serviço Ollama. Baixe um com 'ollama pull <nome_modelo>'.",
  "llm.manager.using_responses_api": "Usando OpenAI Responses API",
  "llm.manager.using_chat_completions": "Usando OpenAI Chat Completions API",
  "llm.manager.failed_resolve_auth": "failed to resolve %s auth",
  "llm.manager.create_client_unsupported": "CreateClientWithKey: provider '%s' does not support client-provided API keys",
  "llm.manager.stackspot_requires_field": "STACKSPOT requires '%s' in provider_config",
  "llm.manager.failed_create_for_listing": "failed to create client for model listing",
  "llm.manager.api_listing_failed": "Failed to fetch models from API, will include catalog models",
  "_section.llm.fallback": "--- LLM Fallback Chain Messages ---",
  "llm.fallback.all_failed": "all providers failed; last error: %w",
  "llm.fallback.no_providers": "no providers available in fallback chain",
  "llm.fallback.no_tool_providers": "no tool-aware providers available in fallback chain",
  "llm.fallback.skipping_cooldown": "skipping provider (cooldown)",
  "llm.fallback.request_failed": "provider request failed",
  "llm.fallback.no_native_tools": "provider does not support native tools, skipping",
  "_section.llm.token": "--- LLM Token Manager Messages ---",
  "llm.token.realm_updated": "Valor do realm atualizado",
  "llm.token.valid_found": "Token válido encontrado",
  "llm.token.expired_or_missing": "Token expirado ou ausente, iniciando renovação",
  "llm.token.renewing": "Renovando o access token...",
  "llm.token.renewed_success": "Token renovado com sucesso",
  "llm.token.renew_error": "erro ao renovar o token",
  "llm.token.renew_failed_attempts": "falha ao renovar o token após %d tentativas",
  "llm.token.temp_error": "Erro temporário ao renovar o token",
  "llm.token.backoff_retry": "Aplicando backoff antes de nova tentativa",
  "llm.token.create_request_error": "Erro ao criar a requisição de token",
  "llm.token.request_error": "Erro ao fazer a requisição de token",
  "llm.token.request_failed": "Falha na requisição de token",
  "llm.token.get_failed": "falha ao obter o token: status %d, resposta: %s",
  "llm.token.decode_error": "Erro ao decodificar a resposta de token",
  "llm.token.access_token_missing": "access_token não encontrado na resposta de token",
  "llm.token.access_token_get_failed": "não foi possível obter o access_token",
  "llm.token.expires_in_missing": "expires_in não encontrado na resposta de token",
  "llm.token.expires_in_get_failed": "não foi possível obter expires_in",
  "_section.llm.stackspot": "--- LLM StackSpot Messages ---",
  "llm.stackspot.get_response_error": "Erro ao obter a resposta do Agente StackSpot após retries",
  "llm.stackspot.prepare_chat_request": "erro ao preparar a requisição de chat",
  "llm.stackspot.create_chat_request": "erro ao criar a requisição de chat",
  "llm.stackspot.do_chat_request": "erro ao fazer a requisição de chat",
  "llm.stackspot.read_chat_response": "erro ao ler a resposta de chat",
  "llm.stackspot.decode_chat_response": "erro ao deserializar a resposta do chat",
  "llm.stackspot.empty_response": "resposta do agente está vazia (stop_reason: %s)",
  "llm.stackspot.get_token_error": "erro ao obter o token",
  "llm.stackspot.token_invalid_renewing": "Token inválido ou expirado, renovando...",
  "llm.stackspot.renew_token_error": "erro ao renovar o token",
  "_section.llm.copilot": "--- LLM Copilot Messages ---",
  "llm.copilot.marshal_failed": "Failed to marshal payload",
  "llm.copilot.prepare_request_failed": "failed to prepare request",
  "llm.copilot.create_request_failed": "Failed to create request",
  "llm.copilot.read_response_failed": "Failed to read Copilot response",
  "llm.copilot.decode_response_failed": "Failed to decode Copilot response",
  "llm.copilot.no_response": "No response from Copilot",
  "llm.copilot.no_response_error": "no response received from GitHub Copilot",
  "llm.copilot.access_denied": "GitHub Copilot: access denied (403). Your Copilot subscription may have expired or the token is invalid. Run '/auth login github-copilot' to re-authenticate.",
  "llm.copilot.fetch_models_failed": "failed to fetch Copilot models",
  "_section.llm.ollama": "--- LLM Ollama Messages ---",
  "llm.ollama.prepare_payload": "erro ao preparar payload do Ollama",
  "llm.ollama.create_request": "erro criando requisição Ollama",
  "llm.ollama.read_response": "erro ao ler resposta do Ollama",
  "llm.ollama.decode_response": "erro ao decodificar resposta do Ollama",
  "llm.ollama.api_error": "erro Ollama: %s",
  "llm.ollama.get_response_error": "Erro ao obter resposta do Ollama após retries",
  "llm.ollama.filter_applied": "Filtro de 'thinking' aplicado com sucesso",
  "llm.ollama.no_thinking_detected": "Nenhum 'thinking' detectado, retornando resposta original",
  "llm.ollama.fetch_models_failed": "failed to fetch Ollama models",
  "_section.llm.assistant": "--- LLM OpenAI Assistant Messages ---",
  "llm.assistant.create_cache_dir_error": "erro ao criar diretório de cache",
  "llm.assistant.create_thread_error": "erro ao criar thread",
  "llm.assistant.thread_created": "Thread criada",
  "llm.assistant.add_message_error": "erro ao adicionar mensagem ao thread",
  "llm.assistant.run_error": "erro ao executar o assistente",
  "llm.assistant.wait_response_error": "erro ao aguardar resposta",
  "llm.assistant.run_failed": "execução do assistente falhou: %s",
  "llm.assistant.get_response_error": "erro ao obter resposta",
  "llm.assistant.timeout_recovery": "Tentando recuperar mensagens após timeout",
  "llm.assistant.partial_response": "Resposta parcial recuperada com sucesso após timeout",
  "llm.assistant.partial_response_prefix": "[Resposta parcial devido a timeout] %s",
  "llm.assistant.cleanup_done": "Limpeza de recursos do OpenAI Assistant realizada",
  "llm.assistant.list_runs_error": "Erro ao listar runs para limpeza",
  "llm.assistant.decode_runs_error": "Erro ao decodificar resposta de runs",
  "llm.assistant.cancel_run_error": "Erro ao cancelar run",
  "llm.assistant.run_canceled": "Run cancelado com sucesso",
  "llm.assistant.recovered_from_cache": "Assistente recuperado do cache",
  "llm.assistant.create_error": "erro ao criar assistente",
  "llm.assistant.decode_response_error": "erro ao decodificar resposta do assistente",
  "llm.assistant.cache_save_failed": "Não foi possível salvar assistantID no cache",
  "llm.assistant.new_created": "Novo assistente criado",
  "llm.assistant.cache_not_found": "Arquivo de cache não encontrado, criando novo registro",
  "llm.assistant.cache_read_error": "Erro ao ler arquivo de cache",
  "llm.assistant.cache_decode_error": "Erro ao decodificar cache",
  "llm.assistant.cache_loaded": "Cache carregado com sucesso",
  "llm.assistant.cache_dir_error": "Erro ao criar diretório de cache",
  "llm.assistant.cache_encode_error": "Erro ao codificar cache",
  "llm.assistant.cache_save_error": "Erro ao salvar cache",
  "llm.assistant.cache_saved": "Cache salvo com sucesso",
  "llm.assistant.decode_response": "erro ao decodificar resposta",
  "llm.assistant.decode_status": "erro ao decodificar status",
  "llm.assistant.execution_failed": "execução falhou com status: %s",
  "llm.assistant.timeout_waiting": "timeout ao aguardar conclusão",
  "llm.assistant.decode_messages": "erro ao decodificar mensagens",
  "llm.assistant.no_assistant_response": "nenhuma resposta do assistente encontrada",
  "llm.assistant.model_different": "modelo diferente do cache",
  "_section.llm.responses": "--- LLM OpenAI Responses API Messages ---",
  "llm.responses.prepare_payload": "erro ao preparar payload para Responses API",
  "llm.responses.create_request": "erro ao criar requisição para Responses API",
  "llm.responses.read_response": "erro ao ler resposta da Responses API",
  "llm.responses.decode_response": "erro ao decodificar resposta da Responses API",
  "llm.responses.api_error": "API da OpenAI Responses retornou um erro no payload",
  "llm.responses.api_error_msg": "erro da API OpenAI: %s",
  "llm.responses.incomplete_max_tokens": "a resposta da OpenAI foi incompleta, o valor de 'max_output_tokens' é muito baixo",
  "llm.responses.incomplete_unknown": "a resposta da OpenAI foi incompleta por um motivo desconhecido (status: %s)",
  "llm.responses.get_response_error": "Erro ao obter resposta da OpenAI Responses após retries",
  "llm.responses.fetch_models_apikey": "Fetched OpenAI models (Responses API key)",
  "llm.responses.missing_scope": "API key da OpenAI sem permissão necessária para listar modelos",
  "llm.responses.missing_scope_detail": "OpenAI retornou 403: scope api.model.read ausente. Habilite a permissão 'Model Read' para sua API key em platform.openai.com",
  "_section.llm.googleai": "--- LLM Google AI Messages ---",
  "llm.googleai.api_error": "Erro retornado pela API do Google AI",
  "llm.googleai.api_error_msg": "erro da API: %s (código: %d)",
  "llm.googleai.no_candidates": "Nenhum candidato na resposta do Google AI",
  "llm.googleai.decode_error": "Erro ao decodificar resposta JSON do Google AI",
  "server.tls.load_failed": "Falha ao carregar certificado TLS",
  "server.tls.enabled": "TLS habilitado",
  "server.reflection.enabled": "Reflexão gRPC habilitada",
  "server.listen.failed": "falha ao escutar em %s: %w",
  "server.shutdown.signal": "Sinal de desligamento recebido",
  "server.starting": "Servidor gRPC ChatCLI iniciando",
  "server.listening": "🚀 Servidor ChatCLI escutando em %s\n",
  "server.auth_enabled": "🔒 Autenticação habilitada (Token Bearer necessário)",
  "server.metrics_enabled": "📊 Métricas Prometheus em :%d/metrics\n",
  "server.grpc_failed": "Servidor gRPC falhou: %w",
  "server.stopped": "Servidor gRPC ChatCLI parado",
  "server.handler.client_config": "Usando configuração fornecida pelo cliente",
  "server.handler.client_api_key": "Usando chave API fornecida pelo cliente",
  "server.handler.user_question_prefix": "\n\nUser Question: ",
  "server.analysis.issue_name_required": "issue_name is required",
  "server.analysis.llm_client_failed": "Falha ao obter cliente LLM para análise",
  "server.analysis.get_client_error": "failed to get LLM client: %v",
  "server.analysis.llm_failed": "Análise LLM falhou",
  "server.analysis.llm_error": "LLM analysis failed: %v",
  "server.analysis.parse_fallback": "Review the issue manually — AI response could not be parsed",
  "server.analysis.parse_failed": "Failed to parse AI response: %v. Raw: %s",
  "server.analysis.action_diverges_from_analysis": "Primeira ação proposta diverge da análise (contenção descrita mas a primeira ação é um diagnóstico)",
  "server.agentic.issue_name_required": "issue_name is required",
  "server.agentic.llm_client_failed": "Falha ao obter cliente LLM para etapa agêntica",
  "server.agentic.get_client_error": "failed to get LLM client: %v",
  "server.agentic.llm_failed": "Etapa agêntica LLM falhou",
  "server.agentic.llm_error": "LLM agentic step failed: %v",
  "server.agentic.diverges_from_insight": "Passo agêntico diverge da ação primária do AIInsight",
  "server.remote.agents_list_error": "failed to list agents: %v",
  "server.remote.skills_list_error": "failed to list skills: %v",
  "server.remote.persona_unavailable": "persona system not available",
  "server.remote.agent_name_required": "agent name is required",
  "server.remote.agent_not_found": "agent not found: %v",
  "server.remote.skill_name_required": "skill name is required",
  "server.remote.skill_not_found": "skill not found: %v",
  "server.remote.plugin_unavailable": "plugin system not available",
  "server.remote.plugin_name_required": "plugin_name is required",
  "server.remote.plugin_not_found": "plugin not found: %s",
  "server.remote.plugin_executing": "Executando plugin remoto",
  "server.remote.plugin_stat_error": "failed to stat plugin binary: %v",
  "server.remote.plugin_open_error": "failed to open plugin binary: %v",
  "server.remote.plugin_read_error": "read error: %v",
  "server.session.prompt_empty": "prompt cannot be empty",
  "server.session.llm_client_failed": "Falha ao obter cliente LLM",
  "server.session.get_client_error": "failed to get LLM client: %v",
  "server.session.send_prompt_failed": "LLM SendPrompt falhou",
  "server.session.llm_error": "LLM error: %v",
  "server.session.stream_client_failed": "Falha ao obter cliente LLM para stream",
  "server.session.stream_failed": "LLM StreamPrompt falhou",
  "server.session.interactive_started": "Sessão interativa iniciada",
  "server.session.interactive_ended": "Sessão interativa encerrada (cliente desconectou)",
  "server.session.interactive_recv_error": "Erro de recebimento na sessão interativa",
  "server.session.interactive_llm_error": "Failed to get LLM client: %v",
  "server.session.interactive_llm_response_error": "LLM error: %v",
  "server.session.unhandled_message_type": "Tipo de mensagem de sessão não tratado",
  "server.session.mgmt_unavailable": "session management not available",
  "server.hub.unavailable": "conversation hub not available",
  "server.hub.enabled": "conversation hub enabled (cross-channel continuity)",
  "server.hub.init_failed": "conversation hub disabled: init failed: %v",
  "server.hub.no_principal": "no authenticated principal",
  "server.hub.permission_denied": "not allowed to act on behalf of another principal",
  "server.hub.conv_not_found": "conversation not found",
  "server.hub.conv_forbidden": "not allowed to access this conversation",
  "server.hub.resolve_error": "failed to resolve conversation: %v",
  "server.hub.new_error": "failed to start new conversation: %v",
  "server.hub.append_error": "failed to append event: %v",
  "server.hub.read_error": "failed to read conversation: %v",
  "server.hub.bind_error": "failed to bind identity: %v",
  "server.hub.bind_missing": "platform, user_id and principal are required",
  "server.hub.list_bindings_error": "failed to list bindings: %v",
  "server.hub.subscribe_resync": "stream interrupted; resubscribe from last seq to resync",
  "server.session.list_error": "failed to list sessions: %v",
  "server.session.name_empty": "session name cannot be empty",
  "server.session.not_found": "session not found: %v",
  "server.session.save_error": "failed to save session: %v",
  "server.session.delete_error": "failed to delete session: %v",
  "server.session.cmd_empty": "Error: empty command",
  "server.session.cmd_unknown": "Unknown command: '%s'\n\nAvailable remote commands:\n  /status          - Server info (provider, model, version, watcher)\n  /watcher status  - K8s watcher status\n  /plugins list    - List available plugins\n  /agents list     - List available agents\n  /skills list     - List available skills",
  "server.session.cmd_status_header": "=== Server Status ===\n",
  "server.session.cmd_status_version": "Version:  %s\n",
  "server.session.cmd_status_provider": "Provider: %s\n",
  "server.session.cmd_status_model": "Model:    %s\n",
  "server.session.cmd_status_watcher_active": "Watcher:  active",
  "server.session.cmd_status_watcher_target": " (%s/%s)",
  "server.session.cmd_status_watcher_inactive": "Watcher:  inactive\n",
  "server.session.cmd_status_plugins": "Plugins:  %d loaded\n",
  "server.session.cmd_status_agents": "Agents:   %d available\n",
  "server.session.cmd_status_skills": "Skills:   %d available\n",
  "server.session.cmd_status_fallback": "Fallback: configured\n",
  "server.session.cmd_status_mcp": "MCP:      active\n",
  "server.session.cmd_watcher_inactive": "K8s Watcher: inactive (no watcher configured)",
  "server.session.cmd_watcher_header": "=== K8s Watcher Status ===\n",
  "server.session.cmd_watcher_status_active": "Status:     active\n",
  "server.session.cmd_watcher_deployment": "Deployment: %s\n",
  "server.session.cmd_watcher_namespace": "Namespace:  %s\n",
  "server.session.cmd_watcher_summary": "Summary:    %s\n",
  "server.session.cmd_watcher_alerts": "Alerts:     %d\n",
  "server.session.cmd_watcher_snapshots": "Snapshots:  %d\n",
  "server.session.cmd_watcher_pods": "Pods:       %d\n",
  "server.session.cmd_plugins_none_mgr": "No plugin manager configured on this server.",
  "server.session.cmd_plugins_none": "No plugins available.",
  "server.session.cmd_plugins_header": "=== Plugins (%d) ===\n",
  "server.session.cmd_agents_none_loader": "No persona loader configured on this server.",
  "server.session.cmd_agents_error": "Error listing agents: %v",
  "server.session.cmd_agents_none": "No agents available.",
  "server.session.cmd_agents_header": "=== Agents (%d) ===\n",
  "server.session.cmd_skills_none_loader": "No persona loader configured on this server.",
  "server.session.cmd_skills_error": "Error listing skills: %v",
  "server.session.cmd_skills_none": "No skills available.",
  "server.session.cmd_skills_header": "=== Skills (%d) ===\n",
  "server.auth.missing_metadata": "missing metadata",
  "server.auth.missing_authorization": "missing authorization header",
  "server.auth.invalid_format": "invalid authorization format, expected 'Bearer <token>'",
  "server.auth.invalid_token": "invalid token",
  "server.auth.metadata_warn": "Metadados ausentes na requisição",
  "server.auth.authorization_warn": "Header de autorização ausente",
  "server.auth.format_warn": "Formato de autorização inválido",
  "server.auth.token_warn": "Token inválido",
  "server.middleware.unary_call": "Chamada gRPC unária",
  "server.middleware.stream_call": "Chamada gRPC stream",
  "server.middleware.panic_unary": "Pânico recuperado em handler gRPC unário",
  "server.middleware.panic_stream": "Pânico recuperado em handler gRPC stream",
  "server.middleware.internal_error": "internal server error",
  "cmd.server.gateway_colocated": "Gateway co-locado no processo do servidor (push cross-channel em tempo real habilitado)",
  "cmd.server.gateway_hub_disabled": "CHATCLI_GATEWAY_IN_SERVER definido, mas o hub está desabilitado; gateway não co-locado",
  "cmd.server.gateway_init_failed": "Falha ao inicializar o gateway co-locado",
  "cmd.server.gateway_stopped": "Gateway co-locado parou com erro",
  "cmd.server.session_init_failed": "Falha ao inicializar gerenciador de sessões, sessões estarão indisponíveis",
  "cmd.server.plugin_init_failed": "Falha ao inicializar gerenciador de plugins, plugins remotos estarão indisponíveis",
  "cmd.server.plugin_init_success": "Gerenciador de plugins inicializado para descoberta remota",
  "cmd.server.persona_init_success": "Persona loader inicializado para descoberta remota",
  "cmd.server.fallback_unavailable": "provedor de fallback indisponível, pulando",
  "cmd.server.fallback_init_success": "Cadeia de fallback inicializada",
  "cmd.server.mcp_config_failed": "Falha ao carregar configuração MCP, ferramentas MCP estarão indisponíveis",
  "cmd.server.mcp_start_failed": "Falha ao iniciar servidores MCP",
  "cmd.server.mcp_init_success": "Gerenciador MCP inicializado",
  "cmd.server.watch_config_failed": "failed to load watch config: %w",
  "cmd.server.watch_create_failed": "failed to create K8s watcher: %w",
  "cmd.server.watch_starting": "Iniciando K8s multi-watcher",
  "cmd.server.watch_error": "K8s multi-watcher parou com erro",
  "cmd.server.watch_active": "K8s watcher active: %d targets (interval: %s)\n",
  "cmd.connect.addr_required": "server address is required (use --addr or positional argument)",
  "cmd.connect.local_auth_failed": "failed to resolve local auth: %w",
  "cmd.connect.remote_failed": "failed to connect to remote server: %w",
  "cmd.connect.health_failed": "server health check failed: %w",
  "cmd.connect.not_healthy": "server is not healthy",
  "cmd.connect.connected": "Connected to ChatCLI server (%s)\n",
  "cmd.connect.using_local_oauth": ", using local OAuth credentials",
  "cmd.connect.using_api_key": ", using your own API key",
  "cmd.connect.watcher_active": "K8s watcher active: %s (context injected into all prompts)\n",
  "cmd.connect.prompt_failed": "remote prompt failed: %w",
  "cmd.connect.init_failed": "failed to initialize ChatCLI: %w",
  "cmd.connect.auth_unsupported": "--use-local-auth only supports OAuth providers (CLAUDEAI, OPENAI, COPILOT). Provider '%s' requires --llm-key with an API key instead",
  "cmd.connect.auth_not_found": "no local credentials found for %s: %w\nRun 'chatcli' then '/auth login %s' first",
  "cmd.connect.auth_auto_resolved": "Autenticação local resolvida automaticamente",
  "cmd.connect.auth_no_creds": "no local OAuth credentials found. Run 'chatcli' then '/auth login anthropic' or '/auth login openai-codex' or '/auth login github-copilot' first",
  "cmd.watch.deployment_required": "deployment name or config file required (use --deployment or --config)",
  "cmd.watch.config_failed": "failed to load watch config: %w",
  "cmd.watch.create_failed": "failed to create K8s watcher: %w",
  "cmd.watch.error": "K8s watcher parou com erro",
  "cmd.watch.starting": "Starting K8s watcher: %d targets (interval: %s, window: %s)\n",
  "cmd.watch.data_collected": "Initial data collected. K8s context will be injected into all prompts.",
  "cmd.watch.init_failed": "failed to initialize ChatCLI: %w",
  "cmd.watch.override_failed": "failed to apply provider/model overrides: %w",
  "cmd.watch.interactive_hint": "Type your questions about the deployments. K8s context is automatically included.",
  "cmd.watch.interactive_hint2": "Use /watch to see current status.\n\n",
  "cmd.watch.no_provider": "no LLM provider configured",
  "cmd.watch.llm_client_failed": "failed to create LLM client: %w",
  "cmd.watch.llm_request_failed": "LLM request failed: %w",
  "auth.resolver.no_credentials": "no credentials for provider %s",
  "auth.resolver.oauth_refresh_failed": "Falha ao atualizar token OAuth",
  "auth.resolver.oauth_save_failed": "Falha ao persistir token OAuth atualizado",
  "auth.store.not_found": "Armazenamento de autenticação não encontrado, criando novo",
  "auth.store.read_failed": "Falha ao ler armazenamento de autenticação",
  "auth.store.decrypt_failed": "Falha ao descriptografar armazenamento de autenticação",
  "auth.store.parse_failed": "Falha ao analisar armazenamento de autenticação",
  "auth.store.create_dir_failed": "failed to create auth directory: %w",
  "auth.store.marshal_failed": "failed to marshal auth store: %w",
  "auth.store.encrypt_failed": "failed to encrypt auth store: %w",
  "auth.store.write_failed": "failed to write auth store: %w",
  "auth.store.saved": "Armazenamento de autenticação salvo (criptografado)",
  "auth.refresh.nil_cred": "nil cred",
  "auth.refresh.not_oauth": "cred is not oauth",
  "auth.refresh.missing_refresh": "missing refresh token",
  "auth.refresh.unsupported_provider": "unsupported oauth provider: %s",
  "auth.refresh.failed": "oauth refresh failed: %w",
  "auth.token_provider.empty_token": "token de autenticação vazio",
  "auth.token_provider.persist_failed": "Falha ao persistir token OAuth renovado no auth store",
  "auth.token_provider.background_refresh_failed": "Refresh proativo de OAuth falhou; tentando de novo",
  "auth.login.anthropic_opening": "\nAUTH [Anthropic] Abrindo o navegador para autenticação...",
  "auth.login.browser_failed": "Não foi possível abrir o navegador automaticamente. Abra esta URL manualmente:",
  "auth.login.anthropic_browser_ok": "Navegador aberto. Após autorizar, copie o código mostrado na página e cole abaixo.",
  "auth.login.anthropic_browser_ok_callback": "Navegador aberto. Aguardando o callback de autenticação...",
  "auth.login.anthropic_browser_failed": "Não foi possível abrir o navegador automaticamente. Abra esta URL manualmente:",
  "auth.login.anthropic_browser_hint": "Se o navegador não abrir, copie e cole esta URL:",
  "auth.login.anthropic_paste_code": "\n> Cole o código aqui: ",
  "auth.login.anthropic_read_failed": "falha ao ler código de autorização: %w",
  "auth.login.anthropic_code_required": "código é obrigatório",
  "auth.login.anthropic_state_failed": "falha ao gerar state OAuth: %w",
  "auth.login.anthropic_waiting": "\nAguardando callback (Ctrl+C para cancelar, timeout em 5 minutos)...",
  "auth.login.anthropic_callback_error": "erro no callback: %w",
  "auth.login.anthropic_timeout": "callback OAuth expirou após %s",
  "auth.login.anthropic_csrf_error": "OAuth state inválido: possível ataque CSRF",
  "auth.login.anthropic_no_code_error": "callback sem código",
  "auth.login.anthropic_auth_failed_html": "<html><body><h2>Falha na autenticação</h2><p>State inválido (possível CSRF). Você pode fechar esta aba.</p></body></html>",
  "auth.login.anthropic_no_code_html": "<html><body><h2>Falha na autenticação</h2><p>Nenhum código de autorização recebido. Você pode fechar esta aba.</p></body></html>",
  "auth.login.anthropic_fallback_paste": "Não foi possível abrir o servidor local de callback; usando o fluxo legado de paste.",
  "auth.login.openai_opening": "\nAUTH [OpenAI Codex] Opening browser for authentication...",
  "auth.login.openai_state_failed": "failed to generate OAuth state: %w",
  "auth.login.openai_listener_failed": "failed to start local callback server on port %s: %w",
  "auth.login.openai_auth_failed_html": "<html><body><h2>Authentication failed</h2><p>Invalid state parameter (possible CSRF attack). You can close this tab.</p></body></html>",
  "auth.login.openai_csrf_error": "OAuth state mismatch: possible CSRF attack",
  "auth.login.openai_no_code_html": "<html><body><h2>Authentication failed</h2><p>No authorization code received. You can close this tab.</p></body></html>",
  "auth.login.openai_no_code_error": "no code in callback",
  "auth.login.openai_success_html": "<html><body><h2>Authentication successful!</h2><p>You can close this tab and return to the terminal.</p></body></html>",
  "auth.login.openai_browser_failed": "Could not open browser automatically. Open this URL manually:",
  "auth.login.openai_browser_ok": "Browser opened. Waiting for authentication callback...",
  "auth.login.openai_browser_hint": "If the browser did not open, copy and paste this URL:",
  "auth.login.openai_waiting": "\nWaiting for callback (press Ctrl+C to cancel, auto-timeout in 5 minutes)...",
  "auth.login.openai_callback_error": "callback error: %w",
  "auth.login.openai_timeout": "OAuth callback timed out after %s",
  "auth.login.unsupported_platform": "unsupported platform",
  "auth.login.status_not_connected": "not connected",
  "auth.login.status_no_expiry": "type=%s expiry=no expiry (persistent)",
  "auth.login.status_format": "type=%s expiry=%s",
  "auth.login.status_env": "via %s (fallback de env)",
  "auth.login.status_display": "Anthropic: %s\nOpenAI Codex: %s\nGitHub Copilot: %s\nGitHub Models: %s",
  "auth.copilot.device_code_failed": "failed to request device code: %w",
  "auth.copilot.opening": "\nAUTH [GitHub Copilot] Device authentication required.",
  "auth.copilot.step1": "  1. Open: %s\n",
  "auth.copilot.step2": "  2. Enter code: %s\n",
  "auth.copilot.browser_failed": "Could not open browser automatically. Open the URL above manually.",
  "auth.copilot.browser_ok": "Browser opened. Enter the code above and authorize the application.",
  "auth.copilot.waiting": "Waiting for authorization (press Ctrl+C to cancel)...",
  "auth.copilot.save_failed": "failed to save credentials: %w",
  "auth.copilot.success": "GitHub Copilot authentication successful!",
  "auth.copilot.read_response_failed": "failed to read device code response: %w",
  "auth.copilot.request_failed": "device code request failed (%s): %s",
  "auth.copilot.parse_failed": "failed to parse device code response: %w",
  "auth.copilot.invalid_response": "invalid device code response: missing device_code or user_code",
  "auth.copilot.code_expired": "device code expired; please try again",
  "auth.copilot.poll_retry": "Falha na requisição de poll do token, tentando novamente",
  "auth.copilot.slow_down": "Reduzindo intervalo de poll",
  "auth.copilot.empty_token": "empty access token in response",
  "auth.copilot.denied": "authorization denied by user",
  "auth.copilot.oauth_error": "OAuth error: %s — %s",
  "auth.github_models.header": "  GitHub Models — Authentication",
  "auth.github_models.separator": "  ─────────────────────────────────",
  "auth.github_models.description": "  GitHub Models uses a Personal Access Token (PAT) for authentication.",
  "auth.github_models.create_url": "  Create one at: https://github.com/settings/tokens",
  "auth.github_models.scopes_hint": "  (No special scopes needed for model inference)",
  "auth.github_models.found_env": "  Found token in %s, using it.\n",
  "auth.github_models.save_failed": "failed to save credential: %w",
  "auth.github_models.saved_from_env": "Token GitHub Models salvo do env",
  "auth.github_models.prompt": "  Paste your GitHub token (ghp_... or github_pat_...): ",
  "auth.github_models.read_failed": "failed to read token: %w",
  "auth.github_models.empty_token": "empty token",
  "auth.github_models.saved": "GitHub Models PAT salvo",
  "auth.github_models.success": "  ✓ Token saved successfully!",
  "auth.crypto.keygen_failed": "failed to generate encryption key: %w",
  "auth.crypto.keydir_failed": "failed to create key directory: %w",
  "auth.crypto.keysave_failed": "failed to save encryption key: %w",
  "auth.crypto.cipher_failed": "failed to create cipher: %w",
  "auth.crypto.gcm_failed": "failed to create GCM: %w",
  "auth.crypto.nonce_failed": "failed to generate nonce: %w",
  "auth.crypto.decode_failed": "failed to decode encrypted data: %w",
  "auth.crypto.data_too_short": "encrypted data too short",
  "auth.crypto.decrypt_failed": "failed to decrypt auth data: %w",
  "auth.sync.anthropic_newer": "credenciais Anthropic existentes são mais recentes, pulando sincronização",
  "auth.sync.anthropic_save_failed": "falha ao salvar credenciais Anthropic sincronizadas",
  "auth.sync.anthropic_synced": "credenciais Anthropic sincronizadas do Claude Code",
  "auth.sync.codex_newer": "credenciais OpenAI Codex existentes são mais recentes, pulando sincronização",
  "auth.sync.codex_save_failed": "falha ao salvar credenciais Codex sincronizadas",
  "auth.sync.codex_synced": "credenciais OpenAI sincronizadas do Codex CLI",
  "auth.sync.claude_expired": "Token Claude Code expirado, pulando",
  "auth.sync.claude_cred_expired": "Credencial Claude expirada, pulando",
  "auth.sync.codex_token_expired": "Token Codex CLI expirado, pulando",
  "llm.zai.jwt_generated": "Token JWT ZAI gerado",
  "llm.zai.jwt_cached": "Usando token JWT ZAI em cache",
  "llm.zai.jwt_invalid_key": "Formato de chave ZAI inválido para JWT (esperado id.secret), usando chave direta",
  "llm.info.using_custom_base_url": "Usando URL base customizada para %s: %s",

  "cfg.route.unknown_section": "Seção desconhecida: %s",
  "cfg.route.hint": "Seções: all, general, providers, agent, resilience, session, integrations, auth, security, server",

  "cfg.val.default": "(padrão)",
  "cfg.val.default_tag": "(padrão)",
  "cfg.val.not_set": "(não definido)",
  "cfg.val.none": "(nenhum)",
  "cfg.val.empty": "(vazio)",
  "cfg.val.not_initialized": "não inicializado",
  "cfg.val.enabled": "ativado",
  "cfg.val.disabled": "desativado",
  "cfg.val.valid": "válido",
  "cfg.val.expired": "EXPIRADO",
  "cfg.val.expires_in": "(expira em %s)",
  "cfg.val.expired_ago": "(expirou há %s)",
  "cfg.val.no_provider": "(sem provider)",
  "cfg.val.unknown": "(desconhecido)",
  "cfg.val.unnamed_session": "(sem nome — use /session save <name>)",
  "cfg.val.unnamed": "(sem nome)",
  "cfg.val.no_matches_yet": "(nenhum match até agora)",
  "cfg.val.none_set": "(nenhum definido)",
  "cfg.val.already_warned": "já exibido nesta sessão",
  "cfg.val.yes": "sim",
  "cfg.val.off": "off",
  "cfg.val.on": "on",
  "cfg.val.budget_ok": "OK",
  "cfg.val.budget_warning": "ATENÇÃO",
  "cfg.val.budget_exceeded": "EXCEDIDO",

  "cfg.panorama.title": "CHATCLI — PANORAMA",
  "cfg.panorama.drill_down": "Detalhar:",
  "cfg.panorama.sections_hint": "Seções: providers, agent, resilience, session, integrations, auth, security, server",

  "cfg.section.general.title": "GERAL",
  "cfg.section.providers.title": "PROVIDERS",
  "cfg.section.agent.title": "RUNTIME DO AGENTE",
  "cfg.section.resilience.title": "RESILIÊNCIA & PROXY",
  "cfg.section.session.title": "SESSÃO",
  "cfg.section.integrations.title": "INTEGRAÇÕES",
  "cfg.section.auth.title": "AUTH / OAUTH",
  "cfg.section.security.title": "SEGURANÇA & SANDBOX",
  "cfg.section.quality.title": "PIPELINE DE QUALIDADE DO AGENTE",
  "cfg.section.memory.title": "MEMÓRIA DE LONGO PRAZO",
  "cfg.sub.memory.injection": "Modo de injeção (agent/coder)",
  "cfg.sub.selfevolve": "Auto-evolução (autoria de skills)",
  "cfg.sub.graph": "Grafo de conhecimento (index card por turno)",
  "cfg.kv.selfevolve.mode_auto": "auto — detecta e cria/evolui skills automaticamente (edit-safe, reversível)",
  "cfg.kv.selfevolve.mode_suggest": "suggest — detecta e sugere skills; nunca escreve em disco",
  "cfg.kv.selfevolve.mode_off": "off — desativado",
  "cfg.section.selfevolve.title": "Auto-evolução",
  "cfg.sub.selfevolve.mode": "Autonomia",
  "cfg.sub.selfevolve.skills": "Skills",
  "cfg.kv.selfevolve.skills_total": "skills no total",
  "cfg.kv.selfevolve.skills_authored": "criadas pelo engine",
  "cfg.kv.selfevolve.stats_hint": "Rode @skill stats para analytics de ativação por skill.",
  "cfg.kv.selfevolve.see_section": "auto-evolução",
  "cfg.kv.selfevolve.see_section_val": "veja /config selfevolve",
  "cfg.kv.memory.mode_full": "full — empurra a recuperação inteira todo turno",
  "cfg.kv.memory.mode_index": "index — empurra um resumo estável, puxa detalhe via @memory recall",
  "cfg.kv.memory.mode_off": "off — não injeta memória (bootstrap ainda se aplica)",
  "cfg.kv.memory.index_size": "Tamanho atual do índice",
  "cfg.section.hub.title": "Hub de Conversa (continuidade cross-channel)",
  "cfg.sub.hub.local": "Modo local (mesma máquina, sem /connect)",
  "cfg.sub.hub.settings": "Configurações (setting > env > default)",
  "cfg.hub.mutable_hint": "ajuste com: /config hub set <chave> <valor>  ·  limpe com: /config hub reset <chave>",
  "cfg.hub.readonly_hint": "somente leitura nesta sessão (sem hub local/conectado); use env vars",
  "cfg.hub.no_session": "settings do hub exigem hub local ou /connect (use CHATCLI_HUB_PRINCIPAL ou /connect)",
  "cfg.hub.set_usage": "uso: /config hub set <enabled|principal|isolate|ttl_hours> <valor>  |  /config hub reset <chave>",
  "cfg.hub.unknown_key": "chave desconhecida %q; válidas: %s",
  "cfg.hub.set_ok": "definido %s = %s",
  "cfg.hub.reset_ok": "resetado %s (volta a env/default)",
  "cfg.hub.bad_bool": "%s aceita on/off (true/false)",
  "cfg.hub.bad_int": "%s aceita um inteiro >= 0",
  "cfg.sub.hub.server": "Servidor / armazenamento",
  "cfg.sub.hub.session": "Sessão atual",
  "cfg.hub.state": "estado",
  "cfg.hub.connected": "conectado",
  "cfg.hub.not_connected": "não conectado (use /connect)",
  "cfg.hub.principal": "principal",
  "cfg.hub.conversation": "conversa",
  "cfg.section.server.title": "SERVER / OPERATOR",

  "cfg.sub.quality.refine": "── Self-Refine (#5)",
  "cfg.sub.quality.verify": "── Chain-of-Verification / CoVe (#6)",
  "cfg.sub.quality.reflexion": "── Reflexion (#3)",
  "cfg.sub.quality.plan_first": "── Plan-and-Solve / ReWOO (#2)",
  "cfg.sub.quality.hyde": "── RAG + HyDE (#4)",
  "cfg.sub.quality.reasoning": "── Backbone de reasoning (#7)",
  "cfg.kv.quality.hooks_registered": "Hooks registrados",
  "cfg.kv.quality.reflexion_runtime": "Estado em tempo real",
  "cfg.kv.quality.vector_provider": "Provedor de vetores",
  "cfg.kv.quality.vector_count": "Entradas vetoriais",
  "cfg.kv.quality.vector_state": "Índice vetorial",
  "cfg.val.not_attached": "(não anexado)",

  "complete.root.thinking": "Sobrescreve extended thinking / reasoning_effort para o próximo turno (cross-provider)",
  "complete.root.plan": "Força Plan-and-Solve / ReWOO no próximo /agent ou /coder",
  "complete.root.refine": "Alterna pós-processamento Self-Refine na sessão (on|off|auto)",
  "complete.root.verify": "Alterna Chain-of-Verification (CoVe) na sessão (on|off|auto)",
  "complete.root.reflect": "Persiste uma lição manual na memória de longo prazo (Reflexion)",
  "reflect.armed_blank": "/reflect precisa de uma lição em texto livre — ex.: /reflect ao editar arquivos Go grandes use Edit, não rewrite total",
  "reflect.no_memory": "memory store indisponível — /reflect não pode persistir",
  "reflect.persisted": "lição persistida na memória de longo prazo (category=lesson)",
  "reflect.mistake_user_supplied": "(lição fornecida pelo usuário; sem detecção automática de erro)",
  "reflect.status_legacy": "reflexion: modo legado (goroutine destacada, sem fila durável)",
  "reflect.status_queue": "fila de reflexion: %d pendentes",
  "reflect.status_dlq": "DLQ de reflexion: %d entradas",
  "reflect.status_hint": "subcomandos: /reflect list | failed | retry <id> | purge <id> | drain",
  "reflect.queue_disabled": "fila de reflexion desabilitada — habilite via CHATCLI_QUALITY_REFLEXION_QUEUE_ENABLED=1",
  "reflect.list_pending_header": "pendentes (%d):",
  "reflect.list_dlq_header": "dead letter queue (%d):",
  "reflect.dlq_empty": "DLQ vazia — nenhuma lição falha para revisar",
  "reflect.dlq_list_failed": "falha ao listar entradas da DLQ",
  "reflect.retry_usage": "uso: /reflect retry <job-id>",
  "reflect.retry_ok": "job %s reenfileirado",
  "reflect.retry_failed": "retry falhou",
  "reflect.purge_usage": "uso: /reflect purge <job-id>",
  "reflect.purge_ok": "job %s removido da DLQ",
  "reflect.purge_failed": "purge falhou",
  "reflect.drain_ok": "drain completo — %d job(s) reenfileirados do WAL",
  "reflect.drain_failed": "drain falhou",
  "reflect.field_task": "tarefa",
  "reflect.field_error": "último erro",
  "refine.set_on": "self-refine LIGADO para esta sessão",
  "refine.set_off": "self-refine DESLIGADO para esta sessão",
  "refine.set_once": "self-refine armado (próximo agent turn fará refine)",
  "refine.cleared": "override de self-refine limpo (usando /config quality)",
  "refine.usage": "uso: /refine [on|off|once|auto]",
  "refine.state_auto": "self-refine: auto (sem override — usando /config quality)",
  "refine.state_on": "self-refine: LIGADO (override de sessão ativo)",
  "refine.state_off": "self-refine: DESLIGADO (override de sessão ativo)",
  "verify.set_on": "verify (CoVe) LIGADO para esta sessão",
  "verify.set_off": "verify (CoVe) DESLIGADO para esta sessão",
  "verify.set_once": "verify armado (próximo agent turn fará verify)",
  "verify.cleared": "override de verify limpo (usando /config quality)",
  "verify.usage": "uso: /verify [on|off|once|auto]",
  "verify.state_auto": "verify: auto (sem override — usando /config quality)",
  "verify.state_on": "verify: LIGADO (override de sessão ativo)",
  "verify.state_off": "verify: DESLIGADO (override de sessão ativo)",
  "plan.armed": "plan-first armado — seu próximo /agent ou /coder rodará um plano estruturado",
  "plan_first.executed": "plan-first executou %d passo(s) antes de entregar ao orquestrador",
  "plan_first.with_errors": "(alguns passos tiveram erros — o orquestrador verá isso no relatório)",
  "plan_first.synth_plan_header": "Plano estruturado auto-gerado (Plan-and-Solve / ReWOO):",
  "plan_first.orchestrator_handoff": "Use o relatório acima como verdade absoluta para a resposta final; não re-execute passos já concluídos.",
  "plan_first.spinner_planning": "planejando estrutura (Plan-and-Solve)...",
  "plan_first.spinner_executing": "executando plano estruturado...",
  "plan_first.preview_header": "Plano gerado (dry-run — nada será executado)",
  "plan_first.preview_task": "Resumo",
  "plan_first.preview_parallel": "Grupos paralelizáveis",
  "plan_first.preview_parse_failed": "Não foi possível interpretar o JSON do plano — exibindo bruto:",
  "plan_first.preview_footer": "Para executar este plano: /plan <mesma tarefa> (ou /plan coder <tarefa>)",
  "plan.preview_usage": "uso: /plan preview <descrição da tarefa>",
  "thinking.cleared": "override de thinking limpo — usando skill hints + auto-agents da config quality",
  "thinking.disabled": "thinking desligado para o próximo turno (override ativo)",
  "thinking.set": "override de thinking definido para %s no próximo turno",
  "thinking.bad_budget": "valor de budget inválido: %s — esperado inteiro positivo",
  "thinking.unknown_arg": "argumento desconhecido em /thinking: %s",
  "thinking.usage": "uso: /thinking [auto|off|on|low|medium|high|max|budget=N]",
  "thinking.state_auto": "thinking: auto (sem override ativo)",
  "thinking.state_off": "thinking: explicitamente desligado (override ativo)",
  "thinking.state_set": "thinking: %s (override ativo)",

  "cfg.sub.general.locale": "── Locale & versão",
  "cfg.sub.general.logging": "── Logging",
  "cfg.sub.general.history": "── Histórico de comandos",
  "cfg.sub.prov.openai": "── OpenAI",
  "cfg.sub.prov.anthropic": "── Anthropic (Claude)",
  "cfg.sub.prov.googleai": "── Google AI (Gemini)",
  "cfg.sub.prov.xai": "── xAI (Grok)",
  "cfg.sub.prov.ollama": "── Ollama",
  "cfg.sub.prov.bedrock": "── AWS Bedrock",
  "cfg.sub.prov.copilot": "── GitHub Copilot",
  "cfg.sub.prov.github_models": "── GitHub Models",
  "cfg.sub.prov.openrouter": "── OpenRouter",
  "cfg.sub.prov.zai": "── ZAI (Zhipu)",
  "cfg.sub.prov.minimax": "── MiniMax",
  "cfg.sub.prov.moonshot": "── Moonshot (Kimi)",
  "cfg.sub.prov.stackspot": "── StackSpot",
  "cfg.sub.agent.parallelism": "── Paralelismo & workers",
  "cfg.sub.agent.token_efficiency": "── Eficiência de tokens (early-exit & smart routing)",
  "cfg.sub.agent.execution": "── Execução",
  "cfg.sub.agent.coder_denial": "── Limites de denials do Coder",
  "cfg.sub.agent.per_agent": "── Overrides por agente (defina qualquer)",
  "cfg.sub.agent.persona": "── Persona ativa (runtime)",
  "cfg.sub.resil.payload": "── Payload & recovery",
  "cfg.sub.resil.streaming": "── Streaming",
  "cfg.sub.resil.compaction": "── Compactação",
  "cfg.sub.resil.tls_trust": "── Confiança TLS global (CA de proxy corporativo)",
  "cfg.sub.resil.bedrock_proxy": "── Proxy corporativo do Bedrock",
  "cfg.sub.resil.web_proxy": "── Proxy corporativo das ferramentas web (webfetch/websearch/osv)",
  "cfg.sub.resil.session_state": "── Estado da sessão",
  "cfg.sub.session.cost": "── Custo & budget",
  "cfg.sub.session.attached": "── Contextos anexados",
  "cfg.sub.session.memory": "── Sistema de memória",
  "cfg.sub.integ.mcp": "── MCP (Model Context Protocol)",
  "cfg.sub.integ.hooks": "── Hooks (eventos de lifecycle)",
  "cfg.sub.integ.plugins": "── Plugins",
  "cfg.sub.integ.skills": "── Skills & registry",
  "cfg.sub.integ.websearch": "── Busca web",
  "cfg.sub.integ.gateway_voice": "── Gateway · Transcrição de voz",
  "cfg.sub.integ.gateway_tts": "── Gateway · Resposta em voz (TTS)",
  "cfg.sub.integ.imagegen": "── Geração de imagem (@image)",
  "cfg.kv.transcription": "Backend ativo",
  "cfg.sub.integ.gateway_send": "── Gateway · Mensagens proativas (@send)",
  "cfg.kv.send_platforms": "Plataformas configuradas",
  "cfg.val.transcription_off": "desabilitado (só texto)",
  "cfg.val.tts_off": "desativado",
  "cfg.val.imagegen_off": "desativado",
  "cfg.kv.imagegen": "Backend de imagem",
  "cfg.section.diagram.title": "Renderização de Diagramas (@diagram)",
  "cfg.sub.diagram.backend": "── Backend",
  "cfg.sub.diagram.system": "── Graphviz do sistema",
  "cfg.kv.diagram_effective": "Backend efetivo",
  "cfg.kv.diagram_dot": "dot do sistema",
  "cfg.kv.diagram_dot_version": "Versão",
  "cfg.val.diagram_dot_missing": "não instalado (usando embedado)",
  "cfg.kv.tts": "Backend de voz",
  "cfg.sub.integ.worktrees": "── Git worktrees",
  "cfg.sub.integ.watcher": "── K8s watcher",
  "cfg.sub.integ.remote": "── Conexão remota",
  "cfg.sub.auth.oauth": "── Perfis OAuth",
  "cfg.sub.sec.cmd_policy": "── Política de comandos",
  "cfg.sub.sec.workspace": "── Workspace / paths",
  "cfg.sub.sec.coder_policy": "── Política do Coder",
  "cfg.sub.sec.tls": "── TLS / proxy",
  "cfg.sub.sec.redaction": "── Redaction & scrubbing",
  "cfg.sub.sec.plugins": "── Plugins",
  "cfg.sub.server.grpc": "── Servidor gRPC",
  "cfg.sub.server.jwt": "── JWT",
  "cfg.sub.server.rate_limit": "── Rate limit",
  "cfg.sub.server.fallback": "── Cadeia de fallback (server)",
  "cfg.sub.server.watcher": "── K8s watcher (server)",
  "cfg.sub.server.audit": "── Auditoria",
  "cfg.sub.server.operator": "── Operator / AIOps",

  "cfg.kv.provider": "Provider",
  "cfg.kv.model": "Modelo",
  "cfg.kv.model_client": "Modelo (client)",
  "cfg.kv.preferred_api": "API preferida",
  "cfg.kv.effective_max_tokens": "Max tokens efetivo",
  "cfg.kv.session": "Sessão",
  "cfg.kv.messages": "Mensagens",
  "cfg.kv.tokens_used": "Tokens usados",
  "cfg.kv.cost_usd": "Custo (USD)",
  "cfg.kv.budget": "Budget",
  "cfg.kv.session_duration": "Duração da sessão",
  "cfg.kv.persona": "Persona",
  "cfg.kv.plugins_loaded": "Plugins carregados",
  "cfg.kv.mcp_servers": "Servidores MCP",
  "cfg.kv.hooks_configured": "Hooks configurados",
  "cfg.kv.websearch_chain": "Cadeia de busca",
  "cfg.kv.remote": "Remoto",
  "cfg.kv.active_provider": "Provider ativo",
  "cfg.kv.active_model": "Modelo ativo",
  "cfg.kv.available_n": "Disponível #%d",
  "cfg.kv.realm_runtime": "Realm (runtime)",
  "cfg.kv.agent_id_runtime": "Agent ID (runtime)",
  "cfg.kv.name": "Nome",
  "cfg.kv.description": "Descrição",
  "cfg.kv.attached_count": "Total anexado",
  "cfg.kv.active_persona": "Persona ativa",
  "cfg.kv.persona_system": "Sistema de persona",
  "cfg.kv.history_messages": "Mensagens do histórico",
  "cfg.kv.history_chars": "Chars do histórico",
  "cfg.kv.proxy_warning": "Aviso de proxy",
  "cfg.kv.started": "Iniciou em",
  "cfg.kv.duration": "Duração",
  "cfg.kv.total_cost_usd": "Custo total (USD)",
  "cfg.kv.total_tokens": "Tokens totais",
  "cfg.kv.budget_status": "Status do budget",
  "cfg.kv.cost_tracker": "Cost tracker",
  "cfg.kv.attached": "Anexado",
  "cfg.kv.daily_notes_on_disk": "Notas diárias em disco",
  "cfg.kv.today_note_path": "Caminho da nota de hoje",
  "cfg.kv.long_term_size": "Tamanho da memória longa",
  "cfg.kv.long_term_memory": "Memória longa",
  "cfg.kv.memory_store": "Memory store",
  "cfg.kv.servers": "Servidores",
  "cfg.kv.total_tools": "Total de tools",
  "cfg.kv.shadowed_builtins": "Builtins mascarados",
  "cfg.kv.mcp_manager": "MCP manager",
  "cfg.kv.configured": "Configurados",
  "cfg.kv.hook_manager": "Hook manager",
  "cfg.kv.loaded": "Carregados",
  "cfg.kv.registries": "Registries",
  "cfg.kv.skills_installed": "Skills instalados",
  "cfg.kv.active_chain": "Cadeia ativa",
  "cfg.kv.repo_root": "Raiz do repo",
  "cfg.kv.current_branch": "Branch atual",
  "cfg.kv.active": "Ativo",
  "cfg.kv.status": "Status",
  "cfg.kv.address": "Endereço",
  "cfg.kv.provider_remote": "Provider (remoto)",
  "cfg.kv.model_remote": "Modelo (remoto)",
  "cfg.kv.local_provider_saved": "Provider local salvo",
  "cfg.kv.local_model_saved": "Modelo local salvo",
  "cfg.kv.active_policy": "Política ativa",
  "cfg.kv.local_override": "Override local",
  "cfg.kv.local_merge": "Merge local",
  "cfg.kv.rule_count": "Total de regras",
  "cfg.kv.last_match": "Último match",
  "cfg.kv.dotenv_path": "Caminho do .env",
  "cfg.kv.history_file": "Arquivo de histórico",

  "cfg.msg.skip_server": "Nenhuma env de server-mode detectada — pulando (contexto CLI).",
  "cfg.msg.server_hint": "Esta seção só faz sentido ao rodar `chatcli server` ou o operator.",
  "cfg.msg.auth_hint": "Rode /auth login <provider> para autenticar.",
  "cfg.msg.not_logged_in": "(não autenticado)",
  "cfg.msg.profile_load_error": "[perfil %s] erro ao carregar",
  "cfg.msg.disconnected": "desconectado",
  "cfg.msg.connected_tools": "conectado, %d tools",
  "cfg.msg.last_error": " — último erro: %s",
  "cfg.msg.no_contexts_attached": "(nenhum — /context attach <name>)",
  "cfg.msg.no_persona": "(nenhuma — /agent load <name>)",
  "cfg.msg.manager_not_init": "(manager não inicializado)",

  "ws.cmd.usage_provider": "Uso: /websearch provider <searxng|duckduckgo|auto>",
  "ws.cmd.unknown_sub": "Subcomando desconhecido: %s",
  "ws.cmd.usage_hint": "Use: /websearch [list|provider <name>|reset|status]",
  "ws.cmd.override_cleared": "✓ Override removido — voltando ao modo auto.",
  "ws.cmd.box_title": "WEB SEARCH",
  "ws.cmd.box_providers": "PROVIDERS",
  "ws.cmd.kv_override": "Override",
  "ws.cmd.kv_searxng_url": "SearxNG URL",
  "ws.cmd.searxng_not_configured": "(não configurado — set SEARXNG_URL)",
  "ws.cmd.active_chain_header": "Cadeia ativa:",
  "ws.cmd.sx_configured": "✓ configurado",
  "ws.cmd.sx_not_configured": "✗ não configurado (SEARXNG_URL vazio)",
  "ws.cmd.sx_tagline": "self-hosted, ideal p/ ambiente corporativo, sem API key",
  "ws.cmd.ddg_available": "✓ sempre disponível",
  "ws.cmd.ddg_tagline": "scraping HTML, sem API key, pode falhar com CAPTCHA",
  "ws.cmd.brave_tagline": "scraping HTML, índice independente, sem API key",
  "ws.cmd.mojeek_tagline": "scraping HTML, índice independente, sem API key; algumas redes recebem 403",
  "ws.cmd.invalid_provider": "Provider inválido: %s",
  "ws.cmd.valid_options": "Opções: searxng, duckduckgo, auto",
  "ws.cmd.sx_missing_url_warn": "⚠ SearxNG selecionado mas SEARXNG_URL não está setado.",
  "ws.cmd.sx_missing_url_hint1": "A cadeia cairá para DuckDuckGo até você configurar:",
  "ws.cmd.sx_missing_url_hint2": "export SEARXNG_URL=https://searx.internal.corp",
  "ws.cmd.provider_set_session": "✓ Provider preferido: %s (somente para esta sessão)",
  "ws.cmd.persist_hint": "Para persistir, adicione ao seu shell/.env:",
  "ws.cmd.persist_unset": "unset CHATCLI_WEBSEARCH_PROVIDER",
  "ws.cmd.persist_set": "export CHATCLI_WEBSEARCH_PROVIDER=%s",

  "complete.config.all": "Dump completo (todas as seções)",
  "complete.config.general": "dotenv, locale, logging, version check",
  "complete.config.providers": "Env vars de todos os providers (OpenAI, Claude, Bedrock, etc)",
  "complete.config.agent": "Runtime do modo agente — workers, subagents, coder UI",
  "complete.config.resilience": "Caps de payload, recovery, timeout de stream, confiança TLS global, proxy Bedrock",
  "complete.config.session": "Sessão, custo, budget, contextos, memory",
  "complete.config.integrations": "MCP, hooks, plugins, websearch, skills, worktrees, watcher, remote",
  "complete.config.auth": "Status OAuth por provider + keychain",
  "complete.config.security": "Política de comandos, workspace sandbox, TLS, redaction",
  "complete.config.server": "Vars de server/operator (só se estiver em server mode)",
  "complete.config.quality": "Pipeline de qualidade dos sete padrões (Self-Refine, CoVe, Reflexion, Plan-First, HyDE, Reasoning)",
  "complete.config.root_desc": "Panorama da configuração (seções: all, general, providers, agent, quality, resilience, session, integrations, auth, security, server)",
  "complete.config.status_alias": "Alias de /config — panorama da configuração",

  "complete.thinking.auto": "Limpa override — usa skill hints + quality.reasoning auto-agents",
  "complete.thinking.off": "Força SEM thinking / reasoning_effort no próximo turno",
  "complete.thinking.on": "Alias de /thinking high — ativa reasoning tier high no próximo turno",
  "complete.thinking.low": "Mapeia para SkillEffort low (OpenAI reasoning.effort=low; sem Anthropic thinking)",
  "complete.thinking.medium": "Mapeia para SkillEffort medium (Anthropic thinking_budget=4096; OpenAI reasoning.effort=medium)",
  "complete.thinking.high": "Mapeia para SkillEffort high (Anthropic thinking_budget=16384; OpenAI reasoning.effort=high)",
  "complete.thinking.max": "Mapeia para SkillEffort max (Anthropic thinking_budget=32768)",
  "complete.thinking.budget_medium": "Tier mais próximo de 4096 tokens de thinking → medium",
  "complete.thinking.budget_high": "Tier mais próximo de 8000 tokens de thinking → high (default)",
  "complete.thinking.budget_max": "Tier mais próximo de 16384 tokens de thinking → max",

  "complete.refine.on": "Força Self-Refine LIGADO nesta sessão (sobrescreve /config quality)",
  "complete.refine.off": "Força Self-Refine DESLIGADO nesta sessão",
  "complete.refine.once": "Arma Self-Refine só para o próximo turno",
  "complete.refine.auto": "Limpa override de sessão — usa /config quality",
  "complete.refine.clear": "Alias de auto — limpa override de sessão",

  "complete.verify.on": "Força Chain-of-Verification LIGADO nesta sessão",
  "complete.verify.off": "Força Chain-of-Verification DESLIGADO nesta sessão",
  "complete.verify.once": "Arma CoVe só para o próximo turno",
  "complete.verify.auto": "Limpa override de sessão — usa /config quality",
  "complete.verify.clear": "Alias de auto — limpa override de sessão",

  "complete.plan.hint": "Task livre. Sem args, arma plan-first flag para o próximo /agent ou /coder.",
  "complete.plan.agent": "Explícito: plan-first + modo agent (igual a /plan <task>)",
  "complete.plan.coder": "Plan-first + modo coder (engenheiro de software com tools)",
  "complete.plan.preview": "Dry-run: gera e mostra o plano sem executar nada",
  "complete.plan.dry": "Alias de preview — dry-run sem execução",

  "complete.reflect.hint": "Lição livre. Persiste direto em memory.Fact (category=lesson, trigger=manual) sem chamada LLM.",
  "complete.reflect.list": "Mostra fila de reflexion pendente + entradas da DLQ",
  "complete.reflect.failed": "Lista entradas da dead-letter queue (lições falhas p/ revisão)",
  "complete.reflect.retry": "Reenfileira lição falha por job ID (requer <id>)",
  "complete.reflect.purge": "Remove permanentemente uma entrada da DLQ por job ID (requer <id>)",
  "complete.reflect.drain": "Força replay de lições pendentes no WAL de uma sessão anterior",
  "complete.reflect.id_placeholder": "Job ID vindo de /reflect failed (16 hex chars)",


  "complete.websearch.root_desc": "Configura provider de busca web (list, provider, reset, status)",
  "complete.websearch.sub_status": "Exibe provider atual + cadeia de fallback ativa",
  "complete.websearch.sub_list": "Lista providers conhecidos e quais estão configurados",
  "complete.websearch.sub_provider": "Define provider preferido (searxng|duckduckgo|auto)",
  "complete.websearch.sub_reset": "Remove override e volta ao modo auto",
  "complete.websearch.prov_searxng": "Self-hosted (requer SEARXNG_URL) — preferido quando configurado",
  "complete.websearch.prov_duckduckgo": "Scraping HTML, sem API key — default",
  "complete.websearch.prov_brave": "Scraping HTML, índice independente, sem API key",
  "complete.websearch.prov_mojeek": "Scraping HTML, índice independente, sem API key",
  "complete.websearch.prov_auto": "Auto: DuckDuckGo primeiro, SearxNG como fallback se configurado",

  "hooks.cmd.not_initialized": "Hooks não inicializado.",
  "hooks.cmd.box_title": "HOOKS",
  "hooks.cmd.none_configured": "Nenhum hook configurado.",
  "hooks.cmd.configure_in": "Configure hooks em ~/.chatcli/hooks.json:",
  "hooks.cmd.events_label": "Eventos:",
  "hooks.cmd.event_label": "Evento:",
  "hooks.cmd.type_label": "Tipo:",
  "hooks.cmd.target_label": "Target:",
  "hooks.cmd.filter_label": "Filtro:",
  "hooks.cmd.total_label": "Total:",
  "hooks.cmd.total_summary": "%d hooks (%s%d ativos%s)",
  "hooks.cmd.suggest_list": "Lista todos os hooks configurados",
  "hooks.cmd.suggest_reload": "Recarrega hooks dos arquivos de configuração",

  "mcp.cmd.box_title": "SERVIDORES MCP",
  "mcp.cmd.not_enabled": "MCP não está habilitado.",
  "mcp.cmd.enable_hint": "Para habilitar, crie ~/.chatcli/mcp_servers.json:",
  "mcp.cmd.usage": "Uso: /mcp [status|tools|restart|start|stop|reload|logs] [servidor]",
  "mcp.cmd.no_servers": "Nenhum servidor configurado.",
  "mcp.cmd.status_connected": "conectado",
  "mcp.cmd.status_disconnected": "desconectado",
  "mcp.cmd.status_starting": "iniciando…",
  "agent.mcp.note_starting": "MCP Tools (external): servidores configurados ainda estão sendo iniciados em background. Não invoque `mcp_*` neste turno; use as ferramentas listadas acima e, se o usuário pediu MCP explicitamente, avise-o que o servidor ainda não está pronto.",
  "agent.mcp.note_unavailable": "MCP Tools (external): MCP está configurado, mas nenhum servidor está conectado nesta sessão. Não invoque `mcp_*`; use as ferramentas listadas acima e, se o usuário pediu MCP, explique brevemente que nenhum servidor está disponível e sugira rodar `/mcp status` para ver o erro.",
  "agent.mcp.routing_hint_coder": "Roteamento (MCP-first): O usuário tem servidor MCP conectado — para qualquer file op coberta por uma `mcp_*` (read/write/list/tree/search/move/info/edit), TENTE primeiro a tool MCP. Se o primeiro `mcp_*` retornar 'path outside allowed directories', invoque `mcp_list_allowed_directories` UMA VEZ para ver o escopo, então caia em `@coder` (não repita o mesmo `mcp_*` no mesmo path). Use `@coder` direto para: `exec`, `git-*`, `patch`, `search` por conteúdo (ripgrep), e qualquer coisa que MCP não cobre. Não invoque `mcp_list_allowed_directories` profilaticamente — só após uma falha de escopo.",
  "agent.mcp.routing_hint_agent": "Roteamento (MCP-first): O usuário tem servidor MCP conectado — para file ops cobertas por `mcp_*`, TENTE primeiro a tool MCP. Se o primeiro `mcp_*` retornar 'path outside allowed directories', invoque `mcp_list_allowed_directories` UMA VEZ para ver o escopo e explique ao usuário; não retente o mesmo path. Não invoque `mcp_list_allowed_directories` profilaticamente — só após uma falha de escopo.",
  "mcp.cmd.tools_count": "%d tools",
  "mcp.cmd.total_label": "Total",
  "mcp.cmd.total_summary": "%d servidores, %s tools disponíveis",
  "mcp.cmd.trust_mode_active": "Modo TRUST ativo — toda tool é auto-aprovada",
  "mcp.cmd.auto_approve_count": "auto-approve: %d tools",
  "mcp.cmd.hidden_tools_count": "tools ocultas: %d",
  "mcp.transport.cwd_invalid": "MCP cwd %q inválido",
  "mcp.transport.cwd_not_directory": "MCP cwd %q não é um diretório",
  "mcp.transport.call_timeout": "MCP call %q expirou após %s",
  "mcp.transport.sse_endpoint_timeout": "Servidor SSE não enviou evento endpoint em %s",
  "mcp.transport.http_url_required": "Transporte Streamable HTTP exige url não-vazia",
  "mcp.transport.http_closed": "Transporte Streamable HTTP está fechado",
  "mcp.transport.http_status_error": "Servidor MCP retornou HTTP %d: %s",
  "mcp.transport.http_bad_content_type": "Content-Type inesperado do servidor MCP: %s",
  "mcp.transport.http_body_too_large": "Resposta HTTP do MCP excedeu %d bytes",
  "mcp.transport.http_stream_closed": "Stream HTTP do MCP fechou antes da resposta %q (deadline %s)",
  "mcp.transport.http_post_failed": "POST HTTP do MCP falhou",
  "mcp.transport.http_sse_read_failed": "leitura SSE HTTP do MCP",
  "mcp.transport.rpc_error": "erro MCP %d: %s",
  "mcp.transport.http_initialize_failed": "initialize do MCP falhou",
  "mcp.cmd.box_tools_title": "TOOLS MCP",
  "mcp.cmd.no_tools": "Nenhuma tool disponível.",
  "mcp.cmd.box_restart_title": "REINÍCIO MCP",
  "mcp.cmd.restarting": "Reiniciando servidores MCP...",
  "mcp.cmd.restart_error": "Erro: %v",
  "mcp.cmd.restart_success": "%d servidores, %d tools",
  "mcp.cmd.sug_status": "Mostra status dos servidores MCP conectados",
  "mcp.cmd.sug_tools": "Lista todas as tools MCP disponíveis",
  "mcp.cmd.sug_restart": "Reinicia todos os servidores MCP (ou um pelo nome)",
  "mcp.cmd.sug_start": "Inicia um servidor parado: /mcp start <nome>",
  "mcp.cmd.sug_stop": "Para um servidor sem removê-lo da config",
  "mcp.cmd.sug_reload": "Relê mcp_servers.json e reconcilia os servidores",
  "mcp.cmd.sug_logs": "Mostra as últimas linhas de stderr de um servidor",
  "mcp.cmd.unknown_server": "Servidor MCP %q não está configurado.",
  "mcp.cmd.already_running": "Servidor MCP %q já está rodando.",
  "mcp.cmd.no_tools_for_server": "Nenhuma tool registrada para o servidor %q ainda.",
  "mcp.cmd.restarting_one": "Reiniciando servidor MCP %q...",
  "mcp.cmd.restart_one_success": "Servidor MCP %q reiniciado.",
  "mcp.cmd.usage_start": "Uso: /mcp start <nome-do-servidor>",
  "mcp.cmd.start_error": "Falha ao iniciar: %v",
  "mcp.cmd.start_success": "Servidor MCP %q iniciado.",
  "mcp.cmd.usage_stop": "Uso: /mcp stop <nome-do-servidor>",
  "mcp.cmd.stop_error": "Falha ao parar: %v",
  "mcp.cmd.stop_success": "Servidor MCP %q parado.",
  "mcp.cmd.reload_no_path": "Caminho da config MCP não está definido; nada para recarregar.",
  "mcp.cmd.reload_error": "Falha ao recarregar: %v",
  "mcp.cmd.reload_no_changes": "Nenhuma mudança detectada no arquivo.",
  "mcp.cmd.reload_summary": "%d iniciados, %d parados, %d atualizados.",
  "mcp.cmd.usage_logs": "Uso: /mcp logs <nome-do-servidor>",
  "mcp.cmd.box_logs_title": "LOGS MCP — %s",
  "mcp.cmd.no_logs": "Nenhuma linha de log capturada ainda.",

  "wt.cmd.usage_create": "Uso: /worktree create <branch-name>",
  "wt.cmd.usage_remove": "Uso: /worktree remove <path-or-branch>",
  "wt.cmd.err_not_git_repo": "Erro: não estamos em um repositório git.",
  "wt.cmd.err_repo_root": "Erro: não foi possível determinar a raiz do repositório.",
  "wt.cmd.err_create": "Erro ao criar worktree: %s",
  "wt.cmd.warn_chdir_after_create": "Worktree criado em %s mas falhou ao mudar diretório: %v",
  "wt.cmd.created_active": "Worktree criado e ativo:",
  "wt.cmd.kv_branch": "Branch: %s",
  "wt.cmd.kv_path": "Path:   %s",
  "wt.cmd.not_in_git_repo": "Não estamos em um repositório git.",
  "wt.cmd.err_generic": "Erro: %v",
  "wt.cmd.title_list": "Git Worktrees",
  "wt.cmd.err_remove_main": "Não é possível remover o worktree principal.",
  "wt.cmd.err_chdir": "Erro ao mudar diretório: %v",
  "wt.cmd.back_to_main": "Voltando ao diretório principal: %s",
  "wt.cmd.err_remove": "Erro ao remover worktree: %s",
  "wt.cmd.removed": "Worktree removido: %s",
  "wt.cmd.title_status": "Worktree Status",
  "wt.cmd.label_cwd": "CWD:",
  "wt.cmd.label_branch": "Branch:",
  "wt.cmd.label_repo": "Repo:",
  "wt.cmd.label_type": "Tipo:",
  "wt.cmd.label_total": "Total:",
  "wt.cmd.type_linked": "worktree (vinculado)",
  "wt.cmd.type_main": "worktree principal",
  "wt.cmd.total_count": "%d worktrees",
  "wt.cmd.sugg_create": "Cria um novo worktree com branch",
  "wt.cmd.sugg_list": "Lista worktrees ativos",
  "wt.cmd.sugg_remove": "Remove um worktree",
  "wt.cmd.sugg_status": "Mostra informações do worktree atual",

  "cost.cmd.not_initialized": "Cost tracker não inicializado.",
  "cost.cmd.box_title": "CUSTO DA SESSÃO",
  "cost.cmd.provider": "Provider",
  "cost.cmd.model": "Modelo",
  "cost.cmd.duration": "Duração",
  "cost.cmd.requests": "Requisições",
  "cost.cmd.source": "Origem",
  "cost.cmd.source_api": "dados reais da API",
  "cost.cmd.source_estimate": "estimativa por caracteres",
  "cost.cmd.tokens_label": "Tokens:",
  "cost.cmd.input": "Entrada:",
  "cost.cmd.output": "Saída:",
  "cost.cmd.total": "Total:",
  "cost.cmd.cache_tokens_label": "Tokens de Cache:",
  "cost.cmd.cache_created": "Criados:",
  "cost.cmd.cache_read": "Lidos:",
  "cost.cmd.cache_savings": "(economiza ~90%% do custo de input)",
  "cost.cmd.cost_label": "Custo:",
  "cost.cmd.input_cost": "Entrada:",
  "cost.cmd.output_cost": "Saída:",
  "cost.cmd.cache_cost": "Cache:",
  "cost.cmd.pricing_unavailable": "Preço não disponível para este modelo.",

  "chan.cmd.box_title": "MCP CHANNELS",
  "chan.cmd.box_title_filtered": "CHANNEL: %s",
  "chan.cmd.mcp_disabled": "MCP não habilitado. Channels requerem MCP servers.",
  "chan.cmd.inject_empty": "Nenhuma mensagem para injetar.",
  "chan.cmd.inject_success": "Mensagens injetadas no contexto.",
  "chan.cmd.no_messages": "Nenhuma mensagem recebida.",
  "chan.cmd.no_messages_hint": "Channels são preenchidos quando MCP servers enviam push messages.",
  "chan.cmd.total_label": "Total",
  "chan.cmd.total_messages": "%d mensagens",
  "chan.cmd.suggest_list": "Lista mensagens recentes de channels",
  "chan.cmd.suggest_inject": "Injeta mensagens no contexto da conversa",
  "chan.cmd.suggest_ack": "Limpa não-lidos + banner de notify pendente",
  "chan.cmd.suggest_pause": "Suspende avaliação de triggers",
  "chan.cmd.suggest_resume": "Retoma avaliação de triggers",
  "chan.cmd.suggest_rules": "Mostra / recarrega regras de trigger",
  "chan.cmd.suggest_confirm": "Resolve uma ação pendente de confirmação",
  "chan.cmd.suggest_run": "Executa o agent em uma mensagem específica",
  "chan.cmd.unread_label": "Não lidas",
  "chan.cmd.paused_note": "(triggers pausados — /channel resume para reativar)",
  "chan.cmd.pause_done": "✓ Trigger engine pausado. /channel resume para reativar.",
  "chan.cmd.resume_done": "✓ Trigger engine retomado.",
  "chan.cmd.ack_done": "Removidas %d entradas notify; reconhecidas %d mensagens não lidas.",
  "chan.cmd.rules_title": "REGRAS DE TRIGGER",
  "chan.cmd.rules_empty": "Nenhuma regra configurada. Crie ~/.chatcli/mcp/triggers.json para habilitar triggers.",
  "chan.cmd.rules_reloaded": "Regras recarregadas — %d ativas.",
  "chan.cmd.confirm_usage": "Uso: /channel confirm <id> [yes|no]",
  "chan.cmd.confirm_bad_id": "ID de confirmação inválido.",
  "chan.cmd.confirm_denied": "Ação de confirmação #%d negada.",
  "chan.cmd.run_usage": "Uso: /channel run <seq>",
  "chan.cmd.run_bad_seq": "Número de seq inválido.",

  "chan.banner.title": "INBOX DE CHANNELS MCP",
  "chan.banner.unread": "%d mensagem(ns) nova(s) de channel desde o último ack",
  "chan.banner.hint_ack": "Dica: /channel ack pra limpar, /channel list pro inbox completo",

  "chan.trigger.toast_header": "trigger acionado (%s) — regra %s",
  "chan.trigger.toast_confirm_hint": "Execute /channel confirm %d [yes|no] pra resolver",
  "chan.trigger.toast_auto_hint": "Será executado no próximo ciclo do prompt. Pressione Esc pra abortar.",
  "chan.trigger.auto_header": "AUTO-AGENT ▶ %s   (%s/%s)",

  "complete.root.exit": "Sair do ChatCLI",
  "complete.root.quit": "Alias de /exit - Sair do ChatCLI",
  "complete.root.switch": "Trocar o provedor de LLM, seguido por --model troca o modelo",
  "complete.root.model": "Atalho para /switch --model: troca o modelo do provedor atual",
  "complete.root.model_image": "Atalho para /config image model: troca o modelo de geração de imagem (@image)",
  "complete.root.maxtokens": "Atalho para /switch --max-tokens: limita os tokens de saída da sessão",
  "complete.maxtokens.default": "0 = usar o padrão do provedor",
  "complete.root.help": "Mostrar ajuda",
  "complete.root.reload": "Recarregar configurações do .env",
  "complete.root.agent": "Iniciar modo agente para executar tarefas",
  "complete.root.coder": "Iniciar modo engenheiro (Criação e Edição de Código)",
  "complete.root.run": "Alias para /agent - Iniciar modo agente para executar tarefas",
  "complete.root.newsession": "Iniciar uma nova sessão de conversa",
  "complete.root.version": "Verificar a versão do ChatCLI",
  "complete.root.nextchunk": "Carregar o próximo chunk de arquivo",
  "complete.root.retry": "Tentar novamente o último chunk que falhou",
  "complete.root.retryall": "Tentar novamente todos os chunks que falharam",
  "complete.root.skipchunk": "Pular um chunk de arquivo",
  "complete.root.session": "Gerencia as sessões, new, save, list, load, delete",
  "complete.root.context": "Gerencia contextos persistentes (create, attach, detach, list, show, etc)",
  "complete.root.plugin": "Gerencia plugins (install, list, show, etc.)",
  "complete.root.skill": "Gerencia skills de registries (search, install, uninstall, list)",
  "complete.root.clear": "Força redesenho/limpeza da tela se o prompt estiver corrompido ou com artefatos visuais.",
  "complete.root.auth": "Gerencia credenciais OAuth (status, login, logout)",
  "complete.root.connect": "Conectar a um servidor ChatCLI remoto (gRPC)",
  "complete.root.disconnect": "Desconectar do servidor remoto e voltar ao modo local",
  "complete.root.watch": "Exibe o status do K8s watcher (quando ativo)",
  "complete.root.metrics": "Exibe métricas de runtime (provider, sessão, tokens, memória)",
  "complete.root.mcp": "Gerencia servidores MCP (status, tools, restart)",
  "complete.root.hooks": "Exibe hooks de lifecycle configurados",
  "complete.root.cost": "Exibe custo estimado da sessão atual",
  "complete.root.ratelimit": "Exibe status de rate-limit dos providers pelos headers de resposta",
  "complete.root.worktree": "Gerencia git worktrees para trabalho isolado em branches",
  "complete.root.channel": "Gerencia MCP channels para push messages de servidores externos",
  "complete.root.compact": "Compacta o histórico (use /compact <instrução> para guiar o que preservar)",
  "complete.root.rewind": "Volta a um checkpoint anterior da conversa",
  "complete.root.memory": "Ver/carregar anotações de memória (today, yesterday, week, load <data>, longterm, list)",
  "complete.root.graph": "Visualizar o grafo de conhecimento como imagem (/graph ou /graph <assunto>)",
  "graph.cmd.empty": "O grafo de conhecimento ainda está vazio.",
  "graph.cmd.no_node": "Nenhum nó do grafo encontrado para %q.",
  "graph.cmd.rendered": "Grafo de conhecimento renderizado:",
  "graph.cmd.error": "Não foi possível renderizar o grafo: %s",
  "graph.tool.no_node": "Nenhum nó do grafo encontrado para %q.",

  "complete.generic.flag_mode": "Define o modo de processamento de arquivos (full, summary, chunked, smart, knowledge)",
  "complete.generic.flag_model": "Troque o modelo (Runtime) baseado no provedor atual (grpt-5, grok-4, etc.)",
  "complete.generic.flag_max_tokens": "Define o máximo de tokens para as próximas respostas (0 para padrão)",
  "complete.generic.flag_agent_id_stackspot": "Altera o agent em tempo de execução (Apenas para STACKSPOT)",
  "complete.generic.flag_realm_stackspot": "Altera o Realm/Tenant em tempo de execução (Apenas para STACKSPOT)",
  "complete.generic.flag_i_interactive": "Ideal para comandos interativos evitando sensação de bloqueio do terminal",
  "complete.generic.flag_ai": "Envia a saída do comando direto para a IA analisar, para contexto adicional digite ( @command --ai <comando> > <contexto>)",
  "complete.generic.option_for": "Opção para %s",
  "complete.generic.values_suffix": "(valores: %s)",

  "complete.skill.user_invocable_fallback": "skill invocável pelo usuário",
  "complete.skill.sub_search": "Procura skills nos registries configurados",
  "complete.skill.sub_install": "Instala uma skill a partir de um registry",
  "complete.skill.sub_uninstall": "Remove uma skill instalada",
  "complete.skill.sub_list": "Lista skills instaladas",
  "complete.skill.sub_info": "Exibe metadados da skill do registry",
  "complete.skill.sub_registries": "Exibe registries configurados",
  "complete.skill.sub_registry": "Habilita/desabilita um registry",
  "complete.skill.sub_prefer": "Define a fonte preferida para uma skill",
  "complete.skill.sub_help": "Exibe ajuda do comando /skill",
  "complete.skill.sub_pin": "Fixa uma skill na sessão atual",
  "complete.skill.sub_unpin": "Remove uma skill do conjunto fixado",
  "complete.skill.sub_pinned": "Lista as skills fixadas",
  "complete.skill.unpin_desc": "Skill atualmente fixada",
  "complete.skill.flag_from": "Especifica a fonte do registry",
  "complete.skill.sub_registry_enable": "Habilita um registry",
  "complete.skill.sub_registry_disable": "Desabilita um registry",
  "complete.skill.flag_reset": "Remove a preferência (usa ordem padrão)",
  "complete.skill.prefer_local": "Preferir versão local",

  "complete.connect.token": "Token de autenticação do servidor",
  "complete.connect.provider": "Provedor LLM (OPENAI, CLAUDEAI, GOOGLEAI, XAI, ZAI, MINIMAX, MOONSHOT, STACKSPOT, OLLAMA, COPILOT, GITHUB_MODELS, OPENROUTER)",
  "complete.connect.model": "Modelo LLM (gpt-4, claude-3, etc.)",
  "complete.connect.llm_key": "API key/OAuth token para enviar ao servidor",
  "complete.connect.use_local_auth": "Usar credenciais OAuth locais (de /auth login)",
  "complete.connect.tls": "Habilitar conexão TLS",
  "complete.connect.ca_cert": "Arquivo de certificado CA para TLS",
  "complete.connect.client_id": "StackSpot: Client ID para autenticação",
  "complete.connect.client_key": "StackSpot: Client Key para autenticação",
  "complete.connect.realm": "StackSpot: Realm/Tenant",
  "complete.connect.agent_id": "StackSpot: Agent ID",
  "complete.connect.ollama_url": "Ollama: Base URL do servidor (ex: http://localhost:11434)",

  "complete.watch.flag_deployment": "Deployment K8s a monitorar (obrigatório)",
  "complete.watch.flag_namespace": "Namespace do deployment (padrão: default)",
  "complete.watch.flag_interval": "Intervalo de coleta (ex: 10s, 1m)",
  "complete.watch.flag_window": "Janela de observação (ex: 1h, 4h)",
  "complete.watch.flag_max_log_lines": "Máximo de linhas de log por pod",
  "complete.watch.flag_kubeconfig": "Caminho do kubeconfig",
  "complete.watch.sub_start": "Iniciar monitoramento K8s (ex: /watch start --deployment myapp)",
  "complete.watch.sub_stop": "Parar o monitoramento K8s",
  "complete.watch.sub_status": "Exibir status do watcher ativo",

  "complete.context.root_desc": "📦 Gerencia contextos persistentes (create, attach, detach, list, show, inspect, etc)",
  "complete.context.sub_create": "Criar contexto de arquivos/diretórios (use --mode, --description, --tags)",
  "complete.context.sub_update": "Atualizar contexto existente (use --mode, --description, --tags)",
  "complete.context.sub_attach": "Anexar contexto existente à sessão atual (use --priority, --chunk, --chunks)",
  "complete.context.sub_detach": "Desanexar contexto da sessão atual",
  "complete.context.sub_list": "Listar todos os contextos salvos",
  "complete.context.sub_show": "Ver detalhes completos de um contexto específico",
  "complete.context.sub_inspect": "Análise estatística profunda de um contexto (use --chunk N para chunk específico)",
  "complete.context.sub_delete": "Deletar contexto permanentemente (pede confirmação)",
  "complete.context.sub_merge": "Mesclar múltiplos contextos em um novo",
  "complete.context.sub_attached": "Ver quais contextos estão anexados à sessão",
  "complete.context.sub_export": "Exportar contexto para arquivo JSON",
  "complete.context.sub_import": "Importar contexto de arquivo JSON",
  "complete.context.sub_metrics": "Ver estatísticas de uso de contextos",
  "complete.context.sub_help": "Ajuda detalhada sobre o sistema de contextos",
  "complete.context.flag_chunk_inspect": "Inspecionar chunk específico (ex: --chunk 1)",
  "complete.context.flag_chunk_short": "Atalho para --chunk",
  "complete.context.flag_priority": "Define prioridade (menor = primeiro a ser enviado)",
  "complete.context.flag_priority_short": "Atalho para --priority",
  "complete.context.flag_chunk_attach": "Anexar chunk específico (ex: --chunk 1)",
  "complete.context.flag_chunks": "Anexar múltiplos chunks (ex: --chunks 1,2,3)",
  "complete.context.flag_chunks_short": "Atalho para --chunks",
  "complete.context.flag_rag": "Retrieval semântico: injeta só as passagens relevantes (opcional: K)",
  "complete.context.flag_rag_short": "Atalho para --rag",
  "complete.context.flag_mode": "Modo de processamento: full, summary, chunked, smart, knowledge",
  "complete.context.flag_mode_short": "Atalho para --mode",
  "complete.context.flag_description": "Descrição textual do contexto",
  "complete.context.flag_desc_short": "Atalho para --description",
  "complete.context.flag_d_short": "Atalho para --description",
  "complete.context.flag_tags": "Tags separadas por vírgula (ex: api,golang)",
  "complete.context.flag_tags_short": "Atalho para --tags",
  "complete.context.flag_force": "Sobrescreve se já existir (apenas create)",
  "complete.context.flag_force_short": "Atalho para --force (apenas create)",
  "complete.context.mode_full": "Conteúdo completo dos arquivos",
  "complete.context.mode_summary": "Apenas estrutura de diretórios e metadados",
  "complete.context.mode_chunked": "Divide em chunks gerenciáveis",
  "complete.context.mode_smart": "IA seleciona arquivos relevantes ao prompt",
  "complete.context.mode_knowledge": "Base de conhecimento: injeta index card + retrieval por turno (BM25 + vetores)",
  "complete.context.prompt_name": "Digite o nome do contexto (ex: meu-projeto)",
  "complete.context.prompt_merge_name": "Digite o nome do novo contexto mesclado",
  "complete.context.not_chunked_warning": "⚠️  Este contexto não está dividido em chunks",
  "complete.context.chunk_desc_fmt": "Chunk %d/%d: %s (%d arquivos, %.2f KB)",
  "complete.context.name_mode_fmt": "modo:%s",
  "complete.context.name_chunks_fmt": "%d chunks",
  "complete.context.name_files_fmt": "%d arquivos",
  "complete.context.name_tags_fmt": "tags:%s",

  "complete.session.root_desc": "Gerencia as sessões (new, save, list, load, delete)",
  "complete.session.sub_new": "Criar nova sessão (limpa histórico atual)",
  "complete.session.sub_save": "Salvar sessão atual com um nome",
  "complete.session.sub_load": "Carregar sessão salva anteriormente",
  "complete.session.sub_list": "Listar todas as sessões salvas",
  "complete.session.sub_search": "Busca full-text nas sessões salvas",
  "complete.session.sub_delete": "Deletar uma sessão salva",
  "complete.session.sub_fork": "Criar fork da sessão atual com novo nome",
  "complete.session.saved_session": "Sessão salva",

  "complete.plugin.sub_list": "Lista todos os plugins instalados.",
  "complete.plugin.sub_install": "Instala um novo plugin a partir de um repositório Git.",
  "complete.plugin.sub_reload": "Força o recarregamento de todos os plugins instalados.",
  "complete.plugin.sub_show": "Mostra detalhes de um plugin específico.",
  "complete.plugin.sub_inspect": "Mostra informações de depuração de um plugin.",
  "complete.plugin.sub_uninstall": "Remove um plugin instalado.",

  "complete.agent.sub_list": "Lista agentes disponíveis",
  "complete.agent.sub_load": "Carrega um agente específico",
  "complete.agent.sub_attach": "Adicionar múltiplo agente a sessão existente",
  "complete.agent.sub_detach": "Desanexar agente da sessão atual",
  "complete.agent.sub_skills": "Lista skills disponíveis",
  "complete.agent.sub_show": "Mostra o agente ativo",
  "complete.agent.sub_status": "Mostra os agente anexados, Alias{attached ou list-attached}",
  "complete.agent.sub_off": "Desativa o agente atual",
  "complete.agent.sub_help": "Ajuda do comando /agent",
  "complete.agent.flag_full": "Mostra detalhes completos do agente",

  "complete.switch.root_desc": "Trocar o provedor de LLM, seguido por --model troca o modelo",
  "complete.switch.flag_model": "Troque o modelo (Runtime) baseado no provedor atual",
  "complete.switch.flag_max_tokens": "Define o máximo de tokens para as próximas respostas (0 para padrão)",
  "complete.switch.flag_realm": "Altera o Realm/Tenant em tempo de execução",
  "complete.switch.flag_agent_id": "Altera o agent em tempo de execução",

  "complete.auth.root_desc": "Gerencia credenciais OAuth (status, login, logout)",
  "complete.auth.sub_status": "Exibir status de autenticação de todos os provedores",
  "complete.auth.sub_login": "Autenticar com um provedor (anthropic, openai-codex, github-copilot, github-models)",
  "complete.auth.sub_logout": "Remover credenciais de um provedor (anthropic, openai-codex, github-copilot, github-models)",
  "complete.auth.provider_anthropic": "Anthropic (Claude)",
  "complete.auth.provider_openai_codex": "OpenAI (GPT Plus / Codex)",
  "complete.auth.provider_github_copilot": "GitHub Copilot",
  "complete.auth.provider_github_models": "GitHub Models (GPT-4o, Llama, Mistral, DeepSeek...)",

  "skill.cmd.installs_suffix": "instalações",
  "skill.cmd.by_author": "por",
  "skill.cmd.status_enabled": "ativado",
  "skill.cmd.status_paused": "pausado",
  "skill.cmd.status_disabled": "desativado",
  "skill.cmd.status_paused_failures": "pausado: %d falhas%s",
  "skill.cmd.err_dns": "indisponível (falha na resolução DNS)",
  "skill.cmd.err_conn_refused": "indisponível (conexão recusada)",
  "skill.cmd.err_timeout": "indisponível (timeout)",
  "skill.cmd.err_tls": "erro de certificado TLS",
  "skill.cmd.err_not_found": "endpoint da API não encontrado",

  "persona.cmd.skills_count": "[%d skills]",
  "persona.cmd.skills_label": "Skills",
  "persona.cmd.arg_name": "<nome>",
  "persona.cmd.arg_task": "<tarefa>",
  "persona.cmd.example_agent": "crie um servidor HTTP",
  "persona.cmd.example_coder": "refatore o código",

  "mem.cmd.no_notes_found_for": "Nenhuma nota encontrada para",
  "mem.cmd.profile.title": "Perfil do Usuário",
  "mem.cmd.profile.empty": "Nenhum dado de perfil ainda. Interaja mais e o sistema aprenderá sobre você.",
  "mem.cmd.profile.name": "Nome:",
  "mem.cmd.profile.role": "Função:",
  "mem.cmd.profile.expertise": "Expertise:",
  "mem.cmd.profile.language": "Idioma:",
  "mem.cmd.profile.style": "Estilo:",
  "mem.cmd.profile.top_commands": "Comandos mais usados:",
  "mem.cmd.profile.preferences": "Preferências:",
  "mem.cmd.profile.last_updated": "Atualizado em:",
  "mem.cmd.profile.company": "Empresa:",
  "mem.cmd.profile.location": "Localização:",
  "mem.cmd.profile.certifications": "Certificações:",
  "mem.cmd.profile.skills": "Habilidades:",
  "mem.cmd.profile.goals": "Objetivos:",
  "mem.cmd.profile.set.usage": "Uso: /memory profile set <chave>=<valor> (ex.: profile set certifications=AWS SAA)",
  "mem.cmd.profile.set.ok": "Campo de perfil '%s' atualizado.",
  "mem.cmd.profile.set.nochange": "Sem alteração (valor já definido).",
  "mem.cmd.remember.usage": "Uso: /memory remember [categoria] <fato> (categorias: architecture|pattern|preference|gotcha|project|personal|general)",
  "mem.cmd.remember.ok": "Memorizado.",
  "mem.cmd.remember.dup": "Já está na memória (sem alteração).",
  "mem.cmd.forget.usage": "Uso: /memory forget <trecho do fato a remover>",
  "mem.cmd.forget.removed": "Removido(s) %d fato(s).",
  "mem.cmd.forget.none": "Nenhum fato correspondente encontrado.",
  "mem.cmd.suggest.remember": "Memoriza um fato deterministicamente (ex.: remember [personal] tirei a cert AWS)",
  "mem.cmd.suggest.forget": "Remove fatos armazenados que contenham um trecho",
  "mem.notice.prefix": "memória:",
  "mem.notice.facts": "+%d fato(s)",
  "mem.notice.profile": "perfil atualizado",
  "mem.notice.projects": "+%d projeto",
  "mem.notice.topics": "+%d tópico(s)",
  "mem.notice.failing": "memória: extração falhando (%d seguidas) — fatos recentes estão enfileirados em disco e serão reprocessados automaticamente",
  "selfevolve.notice.prefix": "skills:",
  "selfevolve.notice.authored": "criada %s",
  "selfevolve.notice.evolved": "evoluída %s",
  "selfevolve.notice.evolved_backup": "evoluída %s (seu original em backup; /skill restore desfaz)",
  "selfevolve.notice.suggested": "sugestão — rode /skill create para salvar: %s",
  "mem.tool.remember.ok": "Memorizado: %s",
  "mem.tool.remember.dup": "Já está na memória (sem alteração).",
  "mem.tool.profile.ok": "Perfil atualizado: %s",
  "mem.tool.profile.nochange": "Sem alteração no perfil (valores já definidos).",
  "mem.tool.forget.result": "Removido(s) %d fato(s) correspondente(s).",
  "mem.tool.recall.empty": "Nenhuma memória armazenada ainda.",
  "send.tool.sent.ok": "Mensagem enviada via %s para %s.",
  "send.tool.no_platform": "Informe a plataforma de destino (ex.: \"telegram\" ou \"telegram:chat_id\").",
  "send.tool.build_failed": "Falha ao inicializar as plataformas de mensagem",
  "send.tool.not_configured": "Plataforma %q não está configurada. Plataformas disponíveis: %s.",
  "send.tool.no_chatid": "Nenhum destino para %s. Use \"%s:chat_id\" ou defina %s.",
  "send.tool.failed": "Falha ao enviar via %s",
  "send.tool.list.empty": "Nenhuma plataforma de mensagem configurada. Configure ao menos um gateway (Telegram/WhatsApp/Discord/Slack/webhook).",
  "send.tool.list.header": "Plataformas de mensagem configuradas:",
  "send.tool.list.home": "canal padrão",
  "send.tool.list.no_home": "sem canal padrão (defina %s ou use plataforma:chat_id)",
  "image.tool.generated": "Geradas %d imagem(ns) via %s:\n  %s",
  "image.tool.edited": "Editadas %d imagem(ns) via %s:\n  %s",
  "image.edit.routed": "ℹ️  O backend de imagem %q não edita imagens; roteado para %q nesta edição. Defina CHATCLI_IMAGE_EDIT_PROVIDER para fixar outro.",
  "vision.warn.model_no_vision": "⚠️  O modelo atual (%s) não suporta entrada de imagem, e não há modelo com visão disponível para o describe-fallback. A imagem anexada foi ignorada — troque para um modelo com visão, ou defina CHATCLI_VISION_INPUT=native se este modelo fora do catálogo aceita imagens.",
  "vision.describe.instruction": "Descreva a(s) imagem(ns) anexada(s) em detalhe completo e fiel: todo texto visível (literal), objetos, pessoas, layout, cores, gráficos/diagramas e seus dados, e qualquer outra coisa relevante. Esta descrição será a única representação da imagem disponível para outro modelo, então seja completo e preciso.",
  "vision.describe.in_progress": "Descrevendo imagem com %s...",
  "vision.describe.note": "[Transcrição de %d imagem(ns) anexada(s), gerada pelo modelo de visão %s — o original não pôde ser enviado nativamente:]",
  "skill.tool.created": "Skill %q criada em %s. Será auto-ativada pelos triggers nas próximas rodadas.",
  "skill.tool.updated": "Skill %q atualizada em %s. Será auto-ativada pelos triggers nas próximas rodadas.",
  "skill.tool.removed": "Skill %q removida.",
  "skill.tool.restored": "Skill %q restaurada do backup (mudanças do engine desfeitas).",
  "skill.tool.restore_none": "Skill %q não tem backup para restaurar.",
  "skill.tool.exported": "Exportada(s) %d skill(s) para %s",
  "skill.tool.imported": "Importada(s) %d skill(s)",
  "speak.tool.spoke": "Falei %d caractere(s) → %s (%s, %d bytes) via %s",
  "moa.tool.unavailable": "Mixture-of-Agents indisponível nesta sessão.",
  "moa.tool.no_members": "Nenhum modelo disponível para participar. Configure ao menos um provedor.",
  "moa.tool.all_failed": "Todos os modelos consultados falharam.",
  "moa.tool.synthesized": "Resposta sintetizada de: %s (agregador: %s)",
  "moa.tool.list.empty": "Nenhum provedor configurado.",
  "moa.tool.list.header": "Provedores disponíveis para Mixture-of-Agents:",
  "moa.tool.list.current": "Modelo atual (agregador padrão): %s/%s",
  "session.tool.unavailable": "Busca de sessões indisponível.",
  "session.tool.no_match": "Nenhuma sessão salva corresponde a %q.",
  "session.tool.match_header": "Sessões que correspondem a %q:",
  "session.tool.match_count": "%d ocorrência(s)",
  "session.tool.list.empty": "Nenhuma sessão salva.",
  "session.tool.list.header": "Sessões salvas:",
  "mem.cmd.topics.title": "Tópicos Rastreados",
  "mem.cmd.topics.empty": "Nenhum tópico rastreado ainda.",
  "mem.cmd.topics.mentions_last": "(%d menções, última: %s)",
  "mem.cmd.projects.title": "Projetos Rastreados",
  "mem.cmd.projects.empty": "Nenhum projeto rastreado ainda.",
  "mem.cmd.projects.path": "Caminho:",
  "mem.cmd.projects.tech": "Tech:",
  "mem.cmd.projects.last_active": "Último uso:",
  "mem.cmd.stats.title": "Estatísticas do Sistema de Memória",
  "mem.cmd.stats.facts_stored": "Fatos armazenados:",
  "mem.cmd.stats.topics_tracked": "Tópicos rastreados:",
  "mem.cmd.stats.projects_tracked": "Projetos rastreados:",
  "mem.cmd.stats.usage_patterns": "Padrões de Uso:",
  "mem.cmd.stats.sessions": "Sessões:",
  "mem.cmd.stats.total_messages": "Total de mensagens:",
  "mem.cmd.stats.avg_session": "Sessão média: %.0f min",
  "mem.cmd.stats.peak_hours": "Horários de pico:",
  "mem.cmd.stats.top_commands": "Comandos mais usados:",
  "mem.cmd.stats.features": "Recursos:",
  "mem.cmd.stats.common_errors": "Erros Comuns:",
  "mem.cmd.stats.error_pattern": "%s (%d vezes)",
  "mem.cmd.stats.fix": "Correção:",
  "mem.cmd.stats.last_session": "Última sessão:",
  "mem.cmd.facts.title": "Fatos da Memória",
  "mem.cmd.facts.empty": "Nenhum fato armazenado.",
  "mem.cmd.facts.score_access": "(score: %s, acessos: %d)",
  "mem.cmd.facts.total": "Total:",
  "mem.cmd.facts.total_count": "%d fatos",
  "mem.cmd.compact.running": "Executando compactação da memória...",
  "mem.cmd.compact.failed": "Compactação falhou:",
  "mem.cmd.compact.complete": "Compactação concluída",
  "mem.cmd.compact.facts_change": "Fatos: %d -> %d",
  "mem.cmd.compact.notes_removed": "Notas diárias antigas removidas: %d",
  "mem.cmd.list.memory_md_facts": "MEMORY.md (%d fatos)",
  "mem.cmd.list.memory_md_empty": "MEMORY.md (vazio)",
  "mem.cmd.list.earlier_notes": "... (%d notas anteriores)",
  "mem.cmd.suggest.memory": "Ver/carregar anotações de memória",
  "mem.cmd.suggest.today": "Notas de hoje",
  "mem.cmd.suggest.yesterday": "Notas de ontem",
  "mem.cmd.suggest.week": "Notas dos últimos 7 dias",
  "mem.cmd.suggest.longterm": "Memória de longo prazo (MEMORY.md)",
  "mem.cmd.suggest.list": "Listar todos os arquivos de memória",
  "mem.cmd.suggest.load": "Carregar notas de uma data no contexto (ex: load yesterday)",
  "mem.cmd.suggest.profile": "Mostrar perfil do usuário",
  "mem.cmd.suggest.profile_set": "Define um campo do perfil (ex.: set certifications=AWS SAA)",
  "mem.cmd.suggest.topics": "Mostrar tópicos rastreados",
  "mem.cmd.suggest.projects": "Mostrar projetos rastreados",
  "mem.cmd.suggest.stats": "Estatísticas do sistema de memória",
  "mem.cmd.suggest.facts": "Listar fatos armazenados (ex: facts architecture)",
  "mem.cmd.suggest.compact": "Forçar compactação da memória",
  "mem.cmd.suggest.load_today": "Carregar notas de hoje",
  "mem.cmd.suggest.load_yesterday": "Carregar notas de ontem",
  "mem.cmd.suggest.load_date": "Notas de %s",
  "mem.cmd.suggest.cat_architecture": "Decisões arquiteturais",
  "mem.cmd.suggest.cat_pattern": "Padrões e convenções",
  "mem.cmd.suggest.cat_preference": "Preferências do usuário",
  "mem.cmd.suggest.cat_gotcha": "Armadilhas e bugs conhecidos",
  "mem.cmd.suggest.cat_project": "Detalhes de projetos",
  "mem.cmd.suggest.cat_personal": "Informações pessoais",
  "mem.cmd.suggest.cat_general": "Fatos gerais",

  "sw.cmd.skill_swap_provider": "skill solicitou %s/%s — trocando para este turno",
  "sw.cmd.stream_stalled": "[Stream travou — resposta parcial exibida]",
  "sw.cmd.could_not_list_models": "Não foi possível listar modelos para %s: %v",
  "sw.cmd.no_models_found": "Nenhum modelo encontrado para %s",
  "sw.cmd.available_models_header": "Modelos disponíveis para %s (%s):",

  "sess.cmd.invalid_one_shot_input": "entrada inválida para o modo agente one-shot: %s",
  "sess.cmd.fork_error": "Erro ao fork: %v",
  "sess.cmd.fork_unsaved": "(não salva)",
  "sess.cmd.fork_header": "SESSÃO FORKADA",
  "sess.cmd.fork_from": "De:",
  "sess.cmd.fork_to": "Para:",
  "sess.cmd.fork_messages": "Mensagens:",
  "sess.cmd.fork_footer": "Agora trabalhando no fork. O original permanece intacto.",

  "ctx.cmd.init_manager_error": "erro ao inicializar gerenciador de contextos",
  "ctx.cmd.read_response_error": "erro ao ler resposta",

  "cmd.core.session_fork_usage": "Uso: /session fork <novo-nome>",

  "scheduler.disabled": "Scheduler desabilitado nesta sessão (CHATCLI_SCHEDULER_ENABLED=false ou falha na inicialização).",
  "scheduler.created": "Job %s criado (%s).",
  "scheduler.wait_async": "Wait registrado em segundo plano como job %s.",
  "scheduler.wait_completed": "Wait %s concluído com resultado %s.",
  "scheduler.wait_ctx_cancelled": "Wait interrompido pelo usuário ou por timeout.",
  "scheduler.render.overdue": "atrasado",
  "scheduler.render.in": "em %s",
  "scheduler.render.col_status": "STATUS",
  "scheduler.render.col_id": "ID",
  "scheduler.render.col_name": "NOME",
  "scheduler.render.col_owner": "DONO",
  "scheduler.render.col_type": "TIPO",
  "scheduler.render.col_next_fire": "PRÓX. DISPARO",
  "scheduler.render.col_last": "ÚLTIMO",
  "scheduler.render.owner": "Dono",
  "scheduler.render.status": "Status",
  "scheduler.render.type": "Tipo",
  "scheduler.render.created": "Criado",
  "scheduler.render.next_fire": "Próx. disparo",
  "scheduler.render.finished": "Finalizado",
  "scheduler.render.attempts": "Tentativas",
  "scheduler.render.action": "Ação",
  "scheduler.render.command": "comando",
  "scheduler.render.wait": "Espera",
  "scheduler.render.depends_on": "Depende de",
  "scheduler.render.triggers": "Gatilhos",
  "scheduler.render.description": "Descrição",
  "scheduler.render.tags": "Tags",
  "scheduler.render.history": "Histórico (%d",
  "scheduler.render.cycles": ", %d ciclos",
  "scheduler.render.transitions": "Transições",
  "scheduler.jobs.cycle_header": "── ciclo #%d ──",
  "scheduler.jobs.err_prefix": "erro: ",
  "scheduler.jobs.cond_prefix": "cond: ",
  "scheduler.jobs.unknown": "Subcomando de /jobs desconhecido: %s",
  "scheduler.jobs.not_found": "Job %s não encontrado.",
  "scheduler.jobs.show_usage": "Uso: /jobs show <id>",
  "scheduler.jobs.cancel_usage": "Uso: /jobs cancel <id> [motivo...]",
  "scheduler.jobs.pause_usage": "Uso: /jobs pause <id>",
  "scheduler.jobs.resume_usage": "Uso: /jobs resume <id>",
  "scheduler.jobs.logs_usage": "Uso: /jobs logs <id>",
  "scheduler.jobs.cancelled": "Job %s cancelado.",
  "scheduler.jobs.paused": "Job %s pausado.",
  "scheduler.jobs.resumed": "Job %s retomado.",
  "scheduler.jobs.empty": "(nenhum job)",
  "scheduler.jobs.logs_empty": "(sem execuções ainda)",
  "scheduler.jobs.gc_done": "Snapshot escrito em disco; WAL GC feito.",
  "scheduler.daemon.status_header": "Scheduler daemon (via socket UNIX):",
  "scheduler.daemon.local": "Scheduler rodando in-process (sem daemon).",
  "scheduler.daemon.none": "Nenhum scheduler ativo.",
  "scheduler.daemon.use_subcommand": "Use 'chatcli daemon start|stop|status' no terminal — /jobs daemon só lê status aqui.",
  "scheduler.daemon.unknown": "Subcomando de /jobs daemon desconhecido: %s",
  "scheduler.schedule.usage_header": "Uso: /schedule <nome> --when <quando> --do <acao> [--wait <cond>] [flags]",
  "scheduler.schedule.usage_example_1": "Ex: /schedule backup --cron \"0 2 * * *\" --do \"/run backup --full\"",
  "scheduler.schedule.usage_example_2": "Ex: /schedule check-deploy --when +30s --do \"shell: kubectl get pods\" --wait \"k8s:deployment/prod/api:Available\"",
  "scheduler.schedule.usage_example_3": "Ex: /schedule smoke --when \"every 5m\" --do \"/run testes de fumaça\" --tag env=prod",
  "scheduler.schedule.usage_flags": "Flags: --when --do --wait --timeout --poll --max-polls --max-retries --depends-on --triggers --ttl --tag --description --on-timeout --async --i-know",
  "scheduler.wait.usage_header": "Uso: /wait --until <cond> [--then <acao>] [flags]",
  "scheduler.wait.usage_example_1": "Ex: /wait --until http://localhost:8080/health==200 --then \"/run smoke\" --timeout 10m --every 5s",
  "scheduler.wait.usage_example_2": "Ex: /wait --until \"k8s:pod/prod/api:Ready\" --async",
  "scheduler.wait.usage_flags": "Flags: --until --then --every --timeout --max-polls --on-timeout --async --name",
  "scheduler.jobs.usage_header": "Uso: /jobs <subcomando> [args]",

  "help.section.scheduler": "Scheduler — Agendamento & wait-until",
  "help.command.schedule": "Agenda um job para disparar no tempo (ou cron) definido. Ex: /schedule bk --cron \"0 2 * * *\" --do \"/run backup\"",
  "help.command.wait": "Espera até a condição ser satisfeita e opcionalmente executa uma ação. Ex: /wait --until http://x/health==200 --then \"/run tests\"",
  "help.command.jobs": "Gerencia agendamentos: list, show, tree, cancel, pause, resume, logs, history, daemon, gc.",

  "cfg.section.scheduler.title": "Scheduler (Chronos) — Agendamento & Wait-Until",
  "cfg.sub.sched.core": "Núcleo",
  "cfg.sub.sched.budget": "Budget Padrão",
  "cfg.sub.sched.safety": "Segurança",
  "cfg.sub.sched.daemon": "Daemon",
  "cfg.kv.scheduler_enabled": "CHATCLI_SCHEDULER_ENABLED",
  "cfg.kv.scheduler_data_dir": "CHATCLI_SCHEDULER_DATA_DIR",
  "cfg.kv.scheduler_wal_segments": "Segmentos WAL",
  "cfg.kv.scheduler_active": "Jobs ativos",
  "cfg.kv.scheduler_queue_depth": "Fila (profundidade)",
  "cfg.kv.scheduler_audit_path": "Audit log",
  "cfg.kv.scheduler_daemon": "Daemon",

  "sched.complete.help": "Mostra os exemplos e flags do comando",
  "sched.status.pending": "Aguardando o próximo fire",
  "sched.status.blocked": "Bloqueado por dependências",
  "sched.status.waiting": "Em loop de polling de condição",
  "sched.status.running": "Executando a ação",
  "sched.status.paused": "Pausado pelo usuário",
  "sched.status.completed": "Concluído com sucesso",
  "sched.status.failed": "Falhou (erro permanente ou retries esgotados)",
  "sched.status.cancelled": "Cancelado pelo usuário ou owner",
  "sched.status.timed_out": "Wait estourou o timeout",
  "sched.status.skipped": "Miss-policy decidiu pular",
  "sched.owner.me": "Apenas jobs desta sessão",
  "sched.owner.user": "Jobs criados interativamente",
  "sched.owner.agent": "Jobs criados por agents (ReAct)",
  "sched.owner.worker": "Jobs criados por workers/subagents",
  "sched.owner.system": "Jobs internos do scheduler",
  "sched.owner.hook": "Jobs disparados por hooks",
  "sched.ontimeout.fail": "Marca como timed_out e encerra (padrão)",
  "sched.ontimeout.fire_anyway": "Dispara a ação mesmo sem satisfação",
  "sched.ontimeout.fallback": "Executa wait.fallback e depois falha",
  "sched.when.relative_5m": "Em 5 minutos",
  "sched.when.relative_30s": "Em 30 segundos",
  "sched.when.relative_in_2h": "Em 2 horas",
  "sched.when.every_30s": "A cada 30 segundos (interval)",
  "sched.when.every_5m": "A cada 5 minutos",
  "sched.when.every_1h": "A cada hora",
  "sched.when.at_hourly": "Todo início de hora",
  "sched.when.at_daily": "Toda meia-noite local",
  "sched.when.at_weekly": "Todo domingo à meia-noite",
  "sched.when.cron_0_2": "02:00 todos os dias (cron 5-campos)",
  "sched.when.when_ready": "Sem tempo — disparado pela condição de wait",
  "sched.when.manual": "Só dispara se outro job listar este em --triggers",
  "sched.until.http_200": "HTTP GET que retorna 200",
  "sched.until.tcp_port": "Porta TCP aberta",
  "sched.until.k8s_pod": "Pod K8s com condition Ready=True",
  "sched.until.k8s_deploy": "Deployment com Available=True",
  "sched.until.docker_healthy": "Container Docker com healthcheck OK",
  "sched.until.file_exists": "Arquivo presente no disco",
  "sched.until.shell_exit": "Comando shell retorna 0",
  "sched.until.llm_check": "LLM responde YES à pergunta",
  "sched.do.slash_run": "Executa um slash command (/run, /coder, etc.)",
  "sched.do.shell": "Executa comando shell sob CoderMode safety",
  "sched.do.agent": "Boota um ReAct agent com a tarefa",
  "sched.do.llm": "Um único LLM prompt headless",
  "sched.do.noop": "Não faz nada (útil pra pipelines com apenas Triggers)",
  "sched.do.webhook": "HTTP POST / GET / PUT para uma URL",
  "sched.do.hook": "Dispara um hook chatcli pelo nome do evento",
  "sched.flag.when": "Quando disparar: +5m, every 30s, cron:0 2 * * *, @daily, when-ready, manual",
  "sched.flag.cron": "Atalho para --when cron:<expr>",
  "sched.flag.every": "Atalho para --when every <duração>",
  "sched.flag.do": "Ação a executar ao disparar",
  "sched.flag.wait": "Condição a satisfazer antes da ação (polling)",
  "sched.flag.until": "Condição de wait (igual a --wait)",
  "sched.flag.timeout": "Timeout máximo da ação (ex: 10m)",
  "sched.flag.wait_timeout": "Timeout máximo do loop de wait",
  "sched.flag.poll": "Intervalo entre polls da condição",
  "sched.flag.max_polls": "Limite de polls antes de desistir",
  "sched.flag.max_retries": "Retries da ação em caso de falha transiente",
  "sched.flag.depends_on": "Aguarda conclusão bem-sucedida de um job existente",
  "sched.flag.triggers": "Dispara um job existente após concluir",
  "sched.flag.ttl": "Quanto tempo manter o registro depois de terminal",
  "sched.flag.description": "Descrição livre para /jobs show",
  "sched.flag.tag": "Tag key=value para filtrar em /jobs list",
  "sched.flag.on_timeout": "Comportamento no timeout do wait",
  "sched.flag.async": "Não bloqueia o CLI — retorna o job ID",
  "sched.flag.i_know": "Confirma comando shell marcado como perigoso",
  "sched.flag.then": "Ação para rodar quando a condição for satisfeita",
  "sched.flag.name": "Nome do job (sufixado se ausente)",
  "sched.jobs.sub.list": "Lista jobs ativos (--all inclui terminais)",
  "sched.jobs.sub.show": "Detalhe completo de um job",
  "sched.jobs.sub.tree": "DAG em ASCII mostrando depends_on/triggers",
  "sched.jobs.sub.cancel": "Cancela um job (running também)",
  "sched.jobs.sub.pause": "Pausa um job não-running",
  "sched.jobs.sub.resume": "Retoma um job pausado",
  "sched.jobs.sub.logs": "Mostra o histórico de execuções",
  "sched.jobs.sub.history": "Lista jobs terminais",
  "sched.jobs.sub.daemon": "Status e controle do daemon",
  "sched.jobs.sub.gc": "Força snapshot + GC do WAL",
  "sched.jobs.sub.clear": "Remove jobs terminais do histórico",
  "sched.jobs.flag.all": "Inclui jobs terminais no resultado",
  "sched.jobs.flag.status": "Filtra por status",
  "sched.jobs.flag.owner": "Filtra por owner",
  "sched.jobs.flag.tag": "Filtra por tag (k ou k=v)",
  "sched.jobs.flag.name": "Filtra por substring do nome",
  "sched.jobs.clear.flag.failed": "Apenas jobs com status=failed",
  "sched.jobs.clear.flag.succeeded": "Apenas jobs com status=completed",
  "sched.jobs.clear.flag.cancelled": "Apenas jobs com status=cancelled",
  "sched.jobs.clear.flag.timed_out": "Apenas jobs com status=timed_out",
  "sched.jobs.clear.flag.status": "Status terminal específico (repetível)",
  "sched.jobs.clear.flag.older_than": "Apenas jobs atualizados há mais de N (ex: 24h, 7d)",
  "sched.jobs.clear.flag.name": "Filtra por substring do nome",
  "sched.jobs.clear.flag.mine": "Apenas jobs do owner atual",
  "sched.jobs.clear.flag.yes": "Obrigatório para deletar (sem --yes mostra apenas preview)",
  "sched.jobs.daemon.status": "Mostra estado do daemon ou scheduler in-process",
  "sched.jobs.daemon.start": "(use o binário: chatcli daemon start)",
  "sched.jobs.daemon.stop": "(use o binário: chatcli daemon stop)",
  "sched.jobs.daemon.restart": "(use o binário: chatcli daemon stop && start)",

  "help.command.parked": "lista agents estacionados (/parked prune | gc <dur>)",
  "help.command.resume": "força resume de um agent estacionado: /resume <token>",
  "help.command.cancel_park": "cancela agent estacionado: /cancel-park <token>",
  "park.banner.scheduled": "Agent estacionado: token=%s retoma_em=%s — %s",
  "park.banner.hint": "Terminal liberado. O agent retoma sozinho quando a espera terminar. Use /resume %s para forçar agora, ou /cancel-park %s para abortar.",
  "park.banner.resumed": "Agent retomado (token=%s, outcome=%s) — continuando de onde parou.",
  "park.box.title": "Agent estacionado",
  "park.box.token": "token",
  "park.box.mode": "modo",
  "park.box.note": "nota",
  "park.box.resume_at": "retoma_em",
  "park.box.controls": "Controles",
  "park.box.controls.resume_now": "retomar agora",
  "park.box.controls.cancel": "abortar park",
  "park.list.empty": "Nenhum agent estacionado.",
  "park.list.header": "Agents estacionados (token / modo / descrição / status do scheduler):",
  "park.resume.usage": "Uso: /resume <token>   (token pode ser prefixo único; use /parked para listar)",
  "park.resume.load_failed": "falha ao carregar snapshot do park: %v",
  "park.cancel.usage": "Uso: /cancel-park <token>   (use /parked para listar)",
  "park.cancel.job_failed": "falha ao cancelar job do scheduler: %v",
  "park.cancel.delete_failed": "falha ao remover snapshot: %v",
  "park.cancel.ok": "Park %s cancelado e snapshot removido.",
  "park.resolve.empty": "park: token vazio (use /parked para listar)",
  "park.resolve.not_found": "park: nenhum snapshot bate com %q (use /parked para listar)",
  "park.resolve.ambiguous": "park: prefixo %q ambíguo (bate com: %s) — use um prefixo mais longo",

  "sec.cmd.usage_header": "Uso: /config security {rules|allow|deny|forget|reload} [args]",
  "sec.cmd.usage_note_pattern": "Patterns usam prefix match sobre \"<toolName> <args>\" (ex: \"@coder exec kubectl get\"). Deny bate Allow.",
  "sec.cmd.usage_note_scope": "Mudanças persistem em ~/.chatcli/coder_policy.json e valem para /coder e para o scheduler no próximo fire.",
  "sec.cmd.unknown_sub": "Subcomando de /config security desconhecido: %s",
  "sec.cmd.unknown_flag": "flag desconhecida",
  "sec.cmd.multiple_patterns": "apenas um pattern pode ser passado por vez",
  "sec.cmd.pattern_required": "pattern é obrigatório. Uso: /config security {allow|deny|forget} \"<pattern>\"",
  "sec.cmd.policy_load_failed": "falha ao carregar coder policy: %v",
  "sec.cmd.cancelled": "cancelado.",
  "sec.cmd.rules_header": "Rules ativas do CoderMode",
  "sec.cmd.rules_active_path": "arquivo global:",
  "sec.cmd.rules_local_path": "arquivo local:",
  "sec.cmd.rules_empty": "(nenhuma rule configurada; defaults do CoderMode serão aplicados)",
  "sec.cmd.rules_group_deny": "Deny",
  "sec.cmd.rules_group_allow": "Allow",
  "sec.cmd.rules_group_ask": "Ask",
  "sec.cmd.rules_total": "total:",
  "sec.cmd.rules_word": "rules",
  "sec.cmd.confirm_deny": "Adicionar rule DENY para %q? Todo uso futuro (interativo ou agendado) será bloqueado [y/N]:",
  "sec.cmd.confirm_allow_broad": "Pattern %q é amplo e pode autorizar muita coisa. Confirmar ALLOW? [y/N]:",
  "sec.cmd.confirm_forget": "Remover a rule %q? [y/N]:",
  "sec.cmd.added_allow": "rule ALLOW adicionada",
  "sec.cmd.added_deny": "rule DENY adicionada",
  "sec.cmd.forgot": "rule %q removida",
  "sec.cmd.forget_nomatch": "nenhuma rule com pattern exato %q — nada a remover",
  "sec.cmd.persisted_to": "persistido em %s",
  "sec.cmd.reloaded": "policy recarregado do disco",
  "ask.ui.progress": "[%d/%d]",
  "ask.ui.other": "Outro (digite uma resposta)…",
  "ask.ui.editing": "digite a resposta · enter confirma · esc cancela",
  "ask.ui.hint_multi": "↑/↓ mover · espaço marcar · enter confirmar · esc voltar/cancelar",
  "ask.ui.hint_single": "↑/↓ mover · espaço/enter selecionar · esc voltar/cancelar",
  "ask.chat.tool_forbidden": "Apenas a ferramenta ask_user está disponível no modo chat; responda em texto.",
  "ask.chat.continue": "Agora responda o usuário diretamente usando as seleções acima. NÃO chame nenhuma ferramenta de novo.",
  "plugins.ask.describe": "Perguntando %d questão(ões)…",
  "cfg.section.chat.title": "Chat",
  "cfg.chat.ask_effective": "ask_user no chat (efetivo)",
  "cfg.chat.ask_active": "ask_user ativo agora",
  "cfg.chat.about": "Quando ligado, o chat pode usar SOMENTE as exceções sancionadas (ask_user; consulta à knowledge base, somente leitura) — nunca ferramentas de execução. Funciona com providers nativos (API key) e XML (OAuth).",
  "cfg.chat.change_hint": "Alternar: /config chat ask on | off | toggle",
  "cfg.chat.unknown_sub": "subcomando desconhecido: %s",
  "cfg.chat.ask_invalid": "valor inválido: %s",
  "cfg.chat.ask_valid": "valores válidos: on, off, toggle, status",
  "cfg.chat.set_failed": "falha ao definir CHATCLI_CHAT_ASK: %s",
  "cfg.chat.set_noop": "chat ask_user já está %s",
  "cfg.chat.set_ok": "chat ask_user: %s → %s",
  "cfg.chat.persist_hint": "para persistir entre sessões, adicione CHATCLI_CHAT_ASK=%s ao seu .env",
  "cfg.chat.kb_effective": "knowledge no chat (efetivo)",
  "cfg.chat.kb_invalid": "valor inválido: %s",
  "cfg.chat.kb_valid": "valores válidos: on, off, toggle, status",
  "cfg.chat.set_noop_var": "chat %s já está %s",
  "cfg.chat.set_ok_var": "chat %s: %s → %s",
  "cfg.chat.persist_hint_var": "para persistir entre sessões, adicione %s=%s ao seu .env",
  "cfg.chat.usage_kb_on": "habilita consulta à knowledge base no chat (somente leitura)",
  "cfg.chat.usage_kb_off": "desabilita consulta à knowledge base no chat",
  "cfg.chat.usage_header": "Uso — /config chat",
  "cfg.chat.usage_status": "mostra o status",
  "cfg.chat.usage_on": "ativa ask_user no chat",
  "cfg.chat.usage_off": "desativa (chat segue sem tools)",
  "cfg.chat.usage_toggle": "inverte o estado atual",
  "cfg.chat.usage_note": "Altera só o env do processo; com off o chat mantém streaming.",
  "complete.config.chat_ask": "ativa/desativa ask_user no chat",
  "complete.config.chat_knowledge": "ativa/desativa consulta à knowledge base no chat (somente leitura)",
  "complete.config.chat_on": "ativa ask_user no chat",
  "complete.config.chat_off": "desativa ask_user no chat",
  "complete.config.chat_toggle": "inverte ask_user no chat",
  "complete.config.chat_status": "mostra status do ask_user no chat",
  "cfg.val.no": "não",
  "cfg.chat.tool_mode": "modo de tool-call (provider ativo)",
  "cfg.chat.mode_native": "nativo",
  "cfg.chat.mode_xml": "XML (funciona no OAuth também)",
  "plugins.image.describe.gen": "🎨 Gerando imagem: %s",
  "plugins.image.describe.status": "🎨 Backend de imagem",
  "plugins.image.describe.default": "🎨 Geração de imagem",
  "plugins.speak.describe.say": "🔊 Falando: %s",
  "plugins.speak.describe.status": "🔊 Backend de voz",
  "plugins.speak.describe.default": "🔊 Texto para voz",
  "plugins.session.describe.search": "🔎 Buscando conversas: %s",
  "plugins.session.describe.list": "🔎 Listando sessões",
  "plugins.session.describe.default": "🔎 Busca em conversas",
  "plugins.osv.describe.scan": "🛡️ Escaneando %s",
  "plugins.osv.describe.check": "🛡️ Verificando %s",
  "plugins.osv.describe.default": "🛡️ Scan de vulnerabilidades",
  "plugins.skill.describe.create": "✍️ Criando skill: %s",
  "plugins.skill.describe.update": "✍️ Atualizando skill: %s",
  "plugins.skill.describe.show": "📖 Exibindo skill: %s",
  "plugins.skill.describe.remove": "🗑️ Removendo skill: %s",
  "plugins.skill.describe.list": "📚 Listando skills",
  "plugins.skill.describe.stats": "📊 Estatísticas de skills",
  "plugins.skill.describe.export": "📦 Exportando skills",
  "plugins.skill.describe.import": "📥 Importando skills",
  "plugins.skill.describe.default": "✍️ Autoria de skills",
  "plugins.send.describe.send": "📨 Enviando para %s",
  "plugins.send.describe.list": "📨 Listando plataformas",
  "plugins.send.describe.default": "📨 Mensagem proativa",
  "plugins.moa.describe.ask": "🧠 Mixture-of-Agents…",
  "plugins.moa.describe.list": "🧠 Listando provedores",
  "plugins.moa.describe.default": "🧠 Mixture-of-Agents",
  "cfg.section.image.title": "Geração de Imagem (@image)",
  "cfg.image.set_ok": "%s definido como %s (efeito imediato; adicione ao .env para persistir).",
  "cfg.image.reset_ok": "Overrides de imagem resetados.",
  "cfg.image.value_required": "Informe um valor para %s.",
  "cfg.image.unknown_sub": "Subcomando de imagem desconhecido: %s",
  "cfg.image.about": "Backend de geração de imagem (local SD WebUI, OpenAI Images, Responses API, Google, xAI).",
  "cfg.image.change_hint": "Use: /config image provider|api|model|url <valor> · /config image models · /config image reset",
  "cfg.image.usage": "/config image [provider <nome>|api images|responses|model <id>|url <url>|models|reset]",
  "cfg.image.catalog_header": "Modelos com suporte a imagem (catálogo):",
  "cfg.image.catalog_live": "Disponíveis na sua conta OpenAI:",
  "complete.configimage.provider": "Define o backend (sdwebui|openai|responses|google|xai|bedrock|url|auto)",
  "complete.configimage.api": "OpenAI: Images API ou Responses API",
  "complete.configimage.model": "Define o modelo de imagem",
  "complete.configimage.url": "Define a URL (SD WebUI / endpoint compatível)",
  "complete.configimage.models": "Lista o catálogo de modelos",
  "complete.configimage.reset": "Limpa os overrides de imagem",
  "complete.configimage.val": "valor",
  "agent.spinner.working": "processando"
}
